@zanii/chain
v0.1.0
Published
Client SDK for the Zanii L1 blockchain (the zanii-chain network). Distinct from @zanii/sdk, which is the Zanii agent-identity/proof-of-action SDK. Browser global: zaniiChain.
Downloads
89
Maintainers
Readme
@zanii/chain
JavaScript / TypeScript client SDK for the Zanii L1 blockchain (the
zanii-chain network, RPC at https://blockchain.zanii.agency).
Not the identity SDK.
@zanii/sdk,@zanii/core, and the rest of the@zanii/*npm scope are the Zanii agent-identity and proof-of-action product (did:key, delegation certs, receipts,ledger.zanii.agency). This package is the blockchain client. Browser global:zaniiChain(neverzanii). They are designed to work together: the L1 is a natural anchor for the identity product's receipts, and agent session keys align with its did:key certs.
Install
npm i @zanii/chainNode 18+ or any modern browser. Two small audited deps (@noble/curves,
@noble/hashes).
Use
import { Wallet, ZaniiClient } from "@zanii/chain";
const client = new ZaniiClient("https://blockchain.zanii.agency");
const wallet = Wallet.generate(); // or Wallet.fromSeedHex(hex)
await client.faucet(wallet.address); // devnet
await client.transfer(wallet, "zan1...", 1_000_000_000n); // 1 ZAN (in zi)
// agent-native: authorize a scoped session key, then the agent pays via streams
await client.sessionAuthorize(wallet, agentPubkey, Date.now() + 7*864e5, 5n * 10n**9n);
await client.streamOpen(wallet, "zan1payee...", 1000, 100_000_000n);Browser (served by any node at /sdk.js):
<script src="https://blockchain.zanii.agency/sdk.js"></script>
<script>
const client = new zaniiChain.ZaniiClient(location.origin);
const wallet = zaniiChain.Wallet.generate();
</script>Guarantees
Encodings are byte-identical to the Python reference node: a transaction signed
here validates and executes on-chain unchanged (proven by the cross-language
conformance test in tests/test_js_sdk.py). Amounts are zi (1 ZAN = 10^9 zi),
always BigInt on the wire, never floats.
