- A dev chain at
http://127.0.0.1:8545 - A Qustody API at
http://127.0.0.1:8080 - A pre-funded wallet registered with Qustody
Prerequisites
gethandkeygeneratorfrommake all— see Installationqc-custodybinary, also built bymake all- PostgreSQL 16 running locally (or via Docker)
Step 1. Generate a sealer keypair
Step 2. Build the genesis file
extraData encodes the sealer set: 32 vanity bytes + each sealer’s 20-byte address + 65 zero bytes for the signature placeholder.
Step 3. Initialize and start the node
Step 4. Start PostgreSQL
Step 5. Start a local signer (callback mode)
For development you can run a minimal callback-mode signer. Create a filelocal-signer.go that reads pending transactions from Qustody, signs with your local keystore, and POSTs back. See External signing for the payload contract.
For end-to-end tests, the simpler path is to use callback mode with a script that polls every 2 seconds. Or use the reference signer service qustody-signer if you have it built locally.
Step 6. Start the Qustody API
/readyz returns 200:
Step 7. Register a wallet and transact
SUBMITTED → APPROVED → PENDING_SIGNATURE. Your local signer fulfils the signing payload, then the transaction transitions to BROADCAST → CONFIRMED.