Async Rust SDK for the Circle Web3 Services API.
| Crate | crates.io | docs.rs | Description |
|---|---|---|---|
circle-user-controlled-wallets |
User-Controlled Wallets API | ||
circle-developer-controlled-wallets |
Developer-Controlled Wallets API | ||
circle-compliance |
Compliance Engine API | ||
circle-buidl-wallets |
Modular Wallets (Buidl / ERC-4337) API | ||
circle-cli |
CLI for all services |
- User-Controlled Wallets — End-users own their signing keys via PIN-protected security model
- Developer-Controlled Wallets — Your backend manages signing keys for a seamless UX
- Compliance Engine — Automated OFAC/AML blockchain address screening
- Buidl Wallets — Account-Abstraction (ERC-4337) wallets with gasless operations
- CLI —
circle-clicommand-line tool for all services
Add the crates you need to Cargo.toml:
[dependencies]
circle-user-controlled-wallets = "0.1"
circle-developer-controlled-wallets = "0.1"
circle-compliance = "0.1"
circle-buidl-wallets = "0.1"
tokio = { version = "1", features = ["rt-multi-thread", "macros"] }Or install the CLI:
cargo install circle-cliuse circle_developer_controlled_wallets::{
DeveloperWalletsClient, models::wallet::ListWalletsParams,
};
#[tokio::main]
async fn main() -> Result<(), circle_developer_controlled_wallets::Error> {
let client = DeveloperWalletsClient::new("your_api_key");
let resp = client.list_wallets(&ListWalletsParams::default()).await?;
println!("Wallets: {:?}", resp.data.wallets);
Ok(())
}See each crate's README for detailed examples.
export CIRCLE_API_KEY="<YOUR_API_KEY>"
# List developer wallets
circle-cli developer list-wallets
# Screen a blockchain address
circle-cli compliance screen-address --chain ETH --address 0xYourAddress
# Show all commands
circle-cli --helpSee bin/circle-cli/README.md for the full command reference with verified testnet examples.
Obtain an API key from the Circle Developer Console. Pass it via the CIRCLE_API_KEY environment variable or the --api-key flag (CLI).
Apache-2.0