@ciclonecash/sdk
v0.1.1
Published
Ciclone.cash V1 SDK
Readme
ciclone.cash SDK
SDK to build Groth16 proofs for the Ciclone deposit / withdraw / transfer
circuits, plus the curve, commitment, and encrypted-note helpers for managing
wallet state off-chain.
Install
npm install @ciclonecash/sdk snarkjsUsage
The compiled circuit artifacts (*.wasm witness calculators and *_final.zkey
proving keys) ship inside the package, so CicloneSDK.bundled() works out of the
box on Node — no extra files to fetch.
import { CicloneSDK, deriveViewKey } from "@ciclonecash/sdk";
// Artifacts bundled in the package (Node):
const sdk = CicloneSDK.bundled();
// …or point at your own build dir: <dir>/<c>/<c>_js/<c>.wasm + <dir>/<c>/<c>_final.zkey
// const sdk = CicloneSDK.fromBuildDir("./build");
const dep = await sdk.deposit({ amount: 1000n, accountId: 7n, seqNo: 1n });
const w = await sdk.withdraw({ amount: 400n, balance: 1000n, oldBlind, accountId: 7n, seqNo: 2n });
const recv = deriveViewKey(receiverSpendSecret);
const t = await sdk.transfer({
amount: 300n, senderBalance: 1000n, senderOldBlind,
receiverViewPk: recv.pkView, accountId: 7n, seqNo: 3n,
});Each result returns the snarkjs proof + publicSignals (feed them to the TON
verifier) and the secrets you must persist (blindings, note) to keep your
commitment spendable.
Receiving side, with sk_view:
import { viewNote } from "@ciclonecash/sdk";
const seen = viewNote(recv.skView, note, amountCommitment[0], amountCommitment[1]);
// → { amount, amountBlind, valid }Exports
- Prover:
CicloneSDK(deposit,withdraw,transfer,bundled,fromBuildDir) - Keys / notes:
deriveViewKey,derivePub,encryptNote,decryptNote,viewNote - Curve / commitments:
commit,add,mul,mod,randomScalar,Point,Gx/Gy/Hx/Hy,r,d,L - Hash:
mimc5perm· Constants:CONSTANTS
