Prerequisites
- Node.js 18+ (web SDK)
- Go 1.22+ (runtime / ABCI node)
- Docker and Docker Compose (local node)
1. Start a local node
:8080.
2. Initialize a client from a shyconfig
Every embodiment client follows the same pattern: load a shyconfig, initialize, read, build, submit.3. Read a poll
4. Cast a ballot
- Derives
identity_hash = H("stable_identity:didit:personId")andproofHash - Generates a random
ballot_nonceandballot_id = H(ballot_nonce) - Builds a
TxTypeBallotCastpayload - POSTs to
{api.base_url}/ballots - Persists
{ ballotNonce, choice, pollId }to the configured receipt store
5. Verify the tally
After the poll closes:6. Verify your own receipt
Other embodiments
The same pattern applies to all five clients. Swap the import and shyconfig:Next steps
- shyconfig manifest — full manifest reference
- Architecture — two-list state machine, identity tiers, count-match invariant
- votingClient — full voting API reference
- ZK tier — high-assurance nullifier setup and proof generation
- Go SDK — embed the ABCI state machine in your own runtime