>TECHNICAL DEEP DIVE

$ MAN VEILVOTE

veilvote uses arcium's Multi-Party Computation (MPC) to keep your vote encrypted during the entire tallying process. here's the full pipeline.

CONNECT_WALLET

connect your solana wallet (phantom, solflare) to veilvote. your wallet generates a deterministic x25519 encryption keypair through a signed message -- no extra keys to manage.

ENCRYPT_VOTE

your yes/no choice is encrypted locally using x25519 key exchange with the MXE public key, then wrapped in RescueCipher. the plaintext NEVER leaves your device.

SUBMIT_TO_CHAIN

the encrypted vote ciphertext is sent as a solana transaction to the veilvote program. the onchain program queues it for MPC computation -- the encrypted bytes are visible, but they reveal nothing about your choice.

MPC_COMPUTATION

arcium's distributed arx nodes perform the vote tallying on secret-shared data. each node holds a mathematical fragment -- no single node ever sees your vote. the computation adds your vote to the encrypted running total.

RESULT_REVEALED

when the proposal authority triggers reveal, the MPC network compares encrypted yes vs no counts and publishes only a boolean result (pass/fail). exact vote counts remain encrypted forever.

$ DIFF --COMPARE PRIVACY_TECH

// comparing MPC to other privacy approaches for DAO voting.

FEATUREMPC (ARCIUM)FHEZK PROOFS
vote_privacy[OK] full[OK] full[..] partial
compute_speed[OK] fast[ERR] slow[OK] fast
trusted_setup[OK] none[OK] none[..] depends
encrypted_tally[OK] native[OK] native[ERR] no
solana_native[OK] arcium[ERR] no[..] limited
multi_party_input[OK] native[ERR] single-key[ERR] prover only

$ CAT /ARCHITECTURE

// every veilvote operation flows through three coupled surfaces.

01//

ARCIS_CIRCUIT

rust code that runs inside arcium's MPC network on encrypted data. defines the vote tallying logic -- adding votes, comparing counts. all arithmetic on secret-shared data.

$ cat encrypted-ixs/src/lib.rs
02//

SOLANA_PROGRAM

anchor program that manages proposals, queues MPC computations, stores encrypted state onchain, and handles callbacks from the arx node network.

$ cat programs/veilvote/src/lib.rs
03//

CLIENT_APP

performs x25519 key exchange with MXE, encrypts votes using RescueCipher, submits transactions, and decrypts results. your vote is encrypted before it ever touches the network.

$ cat app/src/lib/arcium.ts

$ READY TO VOTE PRIVATELY?

// connect your wallet and cast your first encrypted vote.

[ BROWSE PROPOSALS ][ GITHUB ]