@wisp_/js
v0.2.1
Published
Wisp cryptographic primitives — Poseidon2, Merkle trees, nullifiers, witness builder
Readme
@wisp_/js
Wisp cryptographic primitives — Poseidon2, Merkle trees, nullifiers, and Circom witness builder.
Beta / demo release only. Intended for evaluation and testnet integrations; interfaces may change.
Low-level building block; most apps should use @wisp_/sdk for the full prove/settle flow.
Install
npm install @wisp_/[email protected]Quick start
import {
buildWitnessInput,
proofPackageToWitnessInput,
computeNullifier,
merkleRootForLeafAtIndex,
} from "@wisp_/js";
// From a demo fixture or issuer proof package
const witness = proofPackageToWitnessInput(proofPackage);
// Or build from params directly
const input = buildWitnessInput(demoParams);
// Standalone primitives
const nullifier = computeNullifier({ /* … */ });
const root = merkleRootForLeafAtIndex(leaves, index);Subpath exports
import { buildWitnessInput } from "@wisp_/js/witness";
import { decodeStrkey } from "@wisp_/js/strkey";Modules
| Module | Exports |
| ------ | ------- |
| field | BN254 scalar field ops |
| poseidon2 | Poseidon2 t=4 hash |
| merkle | Merkle root, paths, SMT sanctions |
| protocol | Nullifier, corridor config hash, address limbs |
| witness | buildWitnessInput, proofPackageToWitnessInput |
| publicInputs | 17-field public input helpers |
| strkey | Stellar address decode |
Public inputs
17 fields in canonical order — see bindings/public-inputs.json.
Address limbs: hi = bytes[0..16], lo = bytes[16..32] as big-endian field elements.
Test vectors
pnpm --filter @wisp_/js test # witness + publicInputs unit tests
pnpm test:witness # from repo rootFixtures: bindings/fixtures/.
Build from source
pnpm --filter @wisp_/js buildRelated
- Full SDK:
@wisp_/sdk - Protocol validation + types:
@wisp_/core - Transports + chain reads:
@wisp_/client - Transfer orchestration:
@wisp_/flows - ABI spec:
bindings/README.md - Rust crypto:
backend/crates/wisp-crypto
