Scripts & Tooling

Six TypeScript scripts demonstrate the protocol end-to-end.

ScriptPurposeStatus
demo-flow.tsEnd-to-end: deploy → institution → members → process → execute all stepsActive
inscribe-binst.tsGenerate ord commands to inscribe BINST entities on Bitcoin testnet4Active
taproot-vault.tsBuild Taproot leaf scripts for inscription UTXO safety (NUMS + CSV + multisig)Deprecated — replaced by binst-decoder::vault (Rust miniscript)
psbt-transfer.tsGenerate PSBT commands for atomic vault transfersDeprecated — replaced by wallet-native descriptor signing
bitcoin-awareness.tsRead Bitcoin Light Client, query finality RPCsActive
finality-monitor.tsPoll Citrea RPCs until a watched L2 block is committed / ZK-provenActive
test-protocol.tsQuery live deployed contracts on Citrea testnetActive

Note: taproot-vault.ts and psbt-transfer.ts are kept as reference implementations. The Rust vault module (binst-decoder/src/vault.rs) uses BIP 379 miniscript to produce wallet-compatible Taproot descriptors, replacing the hand-rolled scripts. See Taproot Vault.

Usage Examples

# Run end-to-end demo on local Hardhat
npx hardhat run scripts/demo-flow.ts

# Deploy to Citrea Testnet
npx hardhat run scripts/demo-flow.ts --network citreaTestnet

# Generate inscription command
npx ts-node scripts/inscribe-binst.ts institution "Acme Financial" <admin_pubkey>

# Generate vault descriptor (Rust — replaces taproot-vault.ts)
cd taproot-reader && cargo test -p binst-decoder vault

# Bitcoin awareness (reads Light Client)
npx tsx scripts/bitcoin-awareness.ts

# Monitor finality for a specific L2 block
WATCH_L2=23972426 npx tsx scripts/finality-monitor.ts