Rust - the first-party SDK

karoowa-sdk exposes typed wallet keys (Ed25519), a NodeClient for the gateway, and transaction builders that produce signed EIP-2718 / EIP-2930 / EIP-1559 envelopes. Async, feature-flagged, published to crates.io alongside each Karoowa release.

Install

shell
# Add the SDK to your Cargo.toml
cargo add karoowa-sdk
# Or pin to the workspace version
cargo add karoowa-sdk@0.6

MSRV: Rust 1.85+ (we follow stable N-2). The crate honours the same workspace version as the node - keep them aligned in pre-1.0.

Submit a transaction

main.rs
use karoowa_sdk::{NodeClient, Wallet};
// Load (or generate) an Ed25519 wallet
let wallet = Wallet::from_keyfile("./validator.key")?;
// Connect to a Karoowa node's JSON-RPC gateway
let client = NodeClient::connect("http://localhost:8545").await?;
// Build, sign and submit a transaction
let tx = client
.tx()
.to(recipient)
.value(1_000_u128)
.build()
.sign(&wallet)?;
let receipt = client.send_transaction(tx).await?;
println!("included in block {}", receipt.block_number);

Wallet, builder, signer, client - four primitives. No DSL, no runtime registry; everything is a normal Rust value.

Other languages - JSON-RPC, REST, WebSocket

The Karoowa node exposes a unified Axum gateway on a single port. Any HTTP or WebSocket client works - JSON-RPC 2.0 for parity with existing tooling, REST for human-friendly endpoints, WebSocket for live subscriptions, Prometheus for metrics. Polyglot SDKs are on the post-v1.0 roadmap; until then, generated clients from the OpenAPI spec are the recommended path.

curl
# Any HTTP client works - the gateway speaks JSON-RPC 2.0
curl -s http://localhost:8545 \
-H 'content-type: application/json' \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "karoowa_blockNumber",
"params": []
}'

Ready to build on decentralised infrastructure?

Tell us about your project. We will come back with an honest assessment of whether DaaS is the right rail for it.