Skip to content

Welcome to the Rust Stellar SDK repository! This project aims to empower developers with a robust Rust SDK for the Stellar cryptocurrency network. Leverage Rust's performance and security advantages to build efficient and scalable applications on Stellar. Join us in shaping the future of blockchain development with Stellar and Rust integration.

License

Notifications You must be signed in to change notification settings

Baseflow/stellar-rust-sdk

Repository files navigation

Stellar-rs - Empowering Stellar Developers with Rust's Performance and Security

GitHub Workflow Status Crates.io Documentation GitHub Issues GitHub Stars GitHub License

API documentation is available here.

The Rust Stellar SDK enables efficient and safe communication with Stellar's Horizon API. Our goal is to provide an optimal developer experience by utilizing Rust's performance and safety features. By employing the Type State Builder Pattern, we prevent incomplete or invalid requests from being made, reducing the possibility of runtime exceptions and improving API request reliability.

Installation

To add stellar-rs to your project, run the following Cargo command in your project directory:

cargo add stellar-rs

Alternatively, add the following line to your Cargo.toml:

stellar-rs = "1.0.0"

Getting Started

To begin communicating with the Horizon API, initialize a new Horizon client. You can specify whether to use the testnet or the production environment.

use stellar_rs::horizon_client::HorizonClient;

async fn example() -> Result<(), Box<dyn std::error::Error>> {
    let horizon_client = HorizonClient::new("https://horizon-testnet.stellar.org")?;
    Ok(())
}

After initializing the Horizon client, specify the request you want to execute. The request builders ensure that you construct valid requests, preventing invalid parameter combinations.

use stellar_rs::assets::prelude::{AllAssetsRequest, AllAssetsResponse};

static ACCOUNT_ID: &str = "GDIGRW2H37U3O5WPMQFWGN35DDVZAYYTIMGLYVQI4XTATZBW4FXEATRE";

// Construct the request
let accounts_request = AccountsRequest::new()
    .set_signer_filter(ACCOUNT_ID)
    .unwrap()
    .set_limit(10)
    .unwrap();

Once the signer_filter is set, it cannot be changed again. The state transitions from one where no filter is applied to one where the signer_filter is set. Similarly, methods like set_asset_filter, set_liquidity_pool_filter, and set_sponsor_filter become unavailable because the Horizon API allows only one of these filters per request. This is enforced using the type state builder pattern.

Once the request is constructed, you can execute it using the previously initialized Horizon client:

use stellar_rs::assets::prelude::{AllAssetsRequest, AllAssetsResponse};

let accounts_response = horizon_client.get_account_list(&accounts_request).await?;

Supported Endpoints

As of version 1.0, stellar-rs supports all endpoints and models for the Horizon API:

Contributing

Contributions are welcome! If you find a bug or have a feature request, please open an issue. If you'd like to contribute code, feel free to open a pull request.

License

This project is licensed under the MIT License. See LICENSE-MIT or visit https://opensource.org/licenses/MIT for more information.

About

Welcome to the Rust Stellar SDK repository! This project aims to empower developers with a robust Rust SDK for the Stellar cryptocurrency network. Leverage Rust's performance and security advantages to build efficient and scalable applications on Stellar. Join us in shaping the future of blockchain development with Stellar and Rust integration.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •