Reference
Parameters
Every bound and size the program and the circuit use.
Credentials#
| Parameter | Value |
|---|
| Attributes per credential | 4: residency, investor status, age, screening |
| Residency codes | 0 to 63; registry 0 EU, 1 UK, 2 CH, 3 SG, 4 US |
| Investor status levels | 0 Retail, 1 Qualified, 2 Professional, 3 Accredited |
| Attested age | 0 to 150 |
| Screening value | Unix time of the screening |
| Commitment | Poseidon over 8 inputs: value, salt, wallet (2 limbs), verifier (2 limbs), epoch, attribute index |
| Salt | Uniform in the BN254 scalar field |
| First epoch | 1, moving up by one on every issuance and revocation |
| Signers at issuance | The wallet (payer) and a registered, active verifier |
Rule sets#
| Parameter | Value |
|---|
| Groups per rule set | 1 to 4, joined by OR |
| Conditions per group | Up to 4, joined by AND; at least 1 |
| Region condition | A 64-bit set of residency codes |
| Status condition | Minimum level 0 to 3 |
| Age condition | Minimum 0 to 150 |
| Screening window | Up to 31,622,400 seconds (366 days) |
| Longest pass | 1 second to 31,622,400 seconds (366 days) |
| Address | Derived from the issuer and a 64-bit nonce |
| Name | 1 to 100 characters, kept by Writ's index |
Proofs#
| Parameter | Value |
|---|
| Proof system | Groth16 over BN254 |
| Proof size | 256 bytes: A (G1, 64), B (G2, 128), C (G1, 64) |
| Public inputs | 36 |
| Private inputs | 8 |
| Circuit size | 5,018 constraints |
| Circuit version | 1 |
| Verifying key | 2,816 bytes: α (G1), β, γ, δ (G2), 37 IC points (G1) |
| Key upload | 512-byte chunks, digest-checked, immutable once finalized |
| On-chain check | alt_bn128 syscalls, about 300,000 compute units |
| Compute budget requested | 1,000,000 units |
Mints and transfers#
| Parameter | Value |
|---|
| Token program | Token-2022 |
| Mint extensions | Exactly one: TransferHook, program Writ, no hook authority |
| Supply at binding | 0 |
| Mint authority after binding | The binding account; issuance only through Writ |
| Accounts the hook reads | 6: config, binding, rule set, credential, verifier, pass |
| With sender checks | 9: the receiver's three plus the sender's three |
| Token accounts | Immutable owner, as standard associated token accounts |
| Amounts | Unsigned 64-bit base units |
Pass fee#
| Parameter | Value |
|---|
| Charged | For each rule pass Writ records, new or renewed |
| Amount | Set by governance, in lamports |
| Paid by | The rule set's issuer, from the rule set's pass funds |
| Pass funds | Lamports a rule set holds above its rent-exempt minimum |
| Paid into | The protocol account, address "protocol" |
The app and API#
| Parameter | Value |
|---|
| Sign-in message lifetime | 5 minutes |
| Session | 12 hours, HttpOnly cookie |
| Unsigned preparation lifetime | 90 seconds |
| Signed operations in flight per wallet | 1 |
| Idempotency key | 8 to 100 letters, digits, _ or - |
| Submitted transaction size | Up to 1,232 bytes |
| Index freshness | Reconciled about every 15 seconds; reads refuse an index older than 2 minutes |
| Verification session | 1 hour |
| Callback clock tolerance | 5 minutes |