- Installed an SDK for your language.
- Generated an OAS DID and the Ed25519 key that controls it.
- Connected to the public testnet.
- Received 100 test SIGIL from the faucet.
- Sent a Transfer transaction.
- Read back the transaction receipt.
Use the public testnet (
sigil-testnet-1) for everything in this guide. Mainnet (sigil-mainnet-1) settles in MINT, has no faucet, and rejects test keys.1. Install
Sigil ships a first-party Rust SDK (sigil-sdk) and a TypeScript JSON-RPC client (@sigil/sigil-web). Go and Python developers call the JSON-RPC directly today — see SDK overview for the parity matrix.
- macOS / Linux
- Windows (WSL2)
Sigil’s transaction signing requires BLAKE3 + Ed25519, not BLAKE2. The Go and Python snippets below pull a BLAKE3 implementation.
2. Walk through the flow
Generate a DID and signing key
A Sigil DID is a string of the form The DID is derived deterministically from the public key. Losing the signing key means losing control of the DID — back it up before continuing.
did:oas:sigil:agent:<32-byte-blake3-of-pubkey-hex>. Anyone can mint one offline — there is no central registry.Confirm the network is up
The public testnet RPC is ResponseField shapes are set by
https://testnet-rpc.sigil.ml/rpc. The first call you make against any Sigil network should be sigil_getNodeInfo — it tells you the chain id, protocol version, and node version in one round-trip.handle_node_info in node/sigil-node/src/rpc_server.rs; version reflects the node binary version and may advance ahead of protocol_version.Expected result.chain_id: sigil-testnet-1. If the call fails, status.sigil.ml shows live availability.Drip from the faucet
The testnet faucet drips 100 test SIGIL per DID per hour. It accepts the DID you generated in step 1.Expected response:Sigil uses micro-MINT as the smallest divisible unit: one display unit equals one million micro-MINT. 100 test SIGIL =
100_000_000 micro-MINT. (The faucet response field is still named amount_base_units for wire-format stability; values are micro-MINT.)Check your balance
Wait one block (~6 s), then query the chain.Response
balance is in micro-MINT (100 test SIGIL = 100_000_000). nonce is the next-expected transaction nonce for this DID. Shape is defined by handle_get_balance in node/sigil-node/src/rpc_server.rs.Sign and submit a Transfer
A signed transaction is BLAKE3-hashed with the domain tag The chain returns a
sigil/transaction/v1\n, then Ed25519-signed. The Rust SDK exposes a fluent builder; the TypeScript path constructs the canonical JSON directly.tx_hash. Inclusion typically lands one block (~6 s) later.You’re done
You have a funded testnet DID, you can sign transactions client-side, and you can read chain state. That is everything you need to build on Sigil.Next steps
Concepts
How identity, consensus, and execution fit together.
SDK guide
Pick the language-specific reference for your stack.
Cookbook
Copy-paste recipes for tokens, NFTs, names, channels, and more.