Account Reference
Pre-Alpha Disclaimer: This is an early pre-alpha release for exploring the SDK and starting development only. There is no real MPC signing — all signatures are generated by a single mock signer, not a distributed network. Do not submit any real transactions for signing or rely on any security guarantees. The dWallet keys, trust model, and signing protocol are not final; do not rely on any key material until mainnet. All interfaces, APIs, and data formats are subject to change without notice. The Solana program and all on-chain data will be wiped periodically and everything will be deleted when we transition to Ika Alpha 1. This software is provided “as is” without warranty of any kind; use is entirely at your own risk and dWallet Labs assumes no liability for any damages arising from its use.
All account types in the Ika dWallet system. Each account starts with a 2-byte prefix: discriminator(1) | version(1), followed by the account data.
dWallet Program Accounts
Account Discriminators
| Discriminator | Account Type |
|---|---|
| 1 | DWalletCoordinator |
| 3 | NetworkEncryptionKey |
| 14 | MessageApproval |
DWalletCoordinator (disc 1)
Program-wide state. PDA seeds: ["dwallet_coordinator"].
| Offset | Field | Size | Description |
|---|---|---|---|
| 0 | discriminator | 1 | 1 |
| 1 | version | 1 | 1 |
| 2 | (fields) | 114 | Coordinator state |
Total: 116 bytes
NetworkEncryptionKey (disc 3)
The network encryption public key used for DKG. PDA seeds: ["network_encryption_key", noa_pubkey].
| Offset | Field | Size | Description |
|---|---|---|---|
| 0 | discriminator | 1 | 3 |
| 1 | version | 1 | 1 |
| 2 | (fields) | 162 | NEK data |
Total: 164 bytes
DWallet
A distributed signing key. PDA seeds: ["dwallet", curve_byte, public_key].
| Offset | Field | Size | Description |
|---|---|---|---|
| 0 | discriminator | 1 | Account type |
| 1 | version | 1 | 1 |
| 2 | authority | 32 | Who can approve messages (user or CPI PDA) |
| 34 | public_key | 65 | dWallet public key (padded) |
| 99 | public_key_len | 1 | Actual key length (32 or 33) |
| 100 | curve | 1 | Curve ID (0=Secp256k1, 1=Secp256r1, 2=Curve25519, 3=Ristretto) |
| 101 | is_imported | 1 | Whether the key was imported |
MessageApproval (disc 14)
A signing request. PDA seeds: ["message_approval", dwallet, message_hash].
| Offset | Field | Size | Description |
|---|---|---|---|
| 0 | discriminator | 1 | 14 |
| 1 | version | 1 | 1 |
| 2 | dwallet | 32 | dWallet account pubkey |
| 34 | message_hash | 32 | Hash of message to sign |
| 66 | user_pubkey | 32 | User public key |
| 98 | signature_scheme | 1 | Ed25519(0), Secp256k1(1), Secp256r1(2) |
| 99 | caller_program | 32 | Program that approved this |
| 131 | cpi_authority | 32 | CPI authority PDA that signed |
| 139 | status | 1 | Pending(0) or Signed(1) |
| 140 | signature_len | 2 | Signature byte count (LE u16) |
| 142 | signature | 128 | Signature bytes (padded) |
Total: 287 bytes (2 + 285)
Status values:
0= PENDING – awaiting signature from the network1= SIGNED – signature is available
Ika System Accounts (SDK Types)
These accounts are part of the Ika System program, readable via ika-solana-sdk-types.
SystemState (disc 1)
PDA seeds: ["ika_system_state"]. Total: 365 bytes.
| Offset | Field | Size | Description |
|---|---|---|---|
| 0 | discriminator | 1 | 1 |
| 1 | version | 1 | 1 |
| 2 | epoch | 8 | Current epoch (LE u64) |
| 34 | authority | 32 | System authority |
Validator (disc 2)
PDA seeds: ["validator", identity_pubkey]. Total: 973 bytes.
| Offset | Field | Size | Description |
|---|---|---|---|
| 0 | discriminator | 1 | 2 |
| 1 | version | 1 | 1 |
| 2 | identity | 32 | Validator identity pubkey |
| 98 | state | 1 | PreActive(0), Active(1), Withdrawing(2) |
| 159 | ika_balance | 8 | IKA token balance (LE u64) |
StakeAccount (disc 3)
PDA seeds: ["stake_account", stake_id_le_bytes]. Total: 115 bytes.
| Offset | Field | Size | Description |
|---|---|---|---|
| 0 | discriminator | 1 | 3 |
| 1 | version | 1 | 1 |
| 2 | owner | 32 | Stake owner pubkey |
| 74 | principal | 8 | Staked amount (LE u64) |
| 98 | state | 1 | Active(0), Withdrawing(1) |
ValidatorList (disc 4)
PDA seeds: ["validator_list"].
| Offset | Field | Size | Description |
|---|---|---|---|
| 0 | discriminator | 1 | 4 |
| 1 | version | 1 | 1 |
| 2 | validator_count | 4 | Total validators (LE u32) |
| 6 | active_count | 4 | Active validators (LE u32) |
Voting Example Accounts
Proposal (disc 1)
PDA seeds: ["proposal", proposal_id]. Total: 195 bytes.
| Offset | Field | Size | Description |
|---|---|---|---|
| 0 | discriminator | 1 | 1 |
| 1 | version | 1 | 1 |
| 2 | proposal_id | 32 | Unique identifier |
| 34 | dwallet | 32 | dWallet pubkey |
| 66 | message_hash | 32 | Message hash to sign |
| 98 | user_pubkey | 32 | User public key |
| 130 | signature_scheme | 1 | Signature scheme |
| 131 | creator | 32 | Creator pubkey |
| 163 | yes_votes | 4 | Yes count (LE u32) |
| 167 | no_votes | 4 | No count (LE u32) |
| 171 | quorum | 4 | Required yes votes (LE u32) |
| 175 | status | 1 | Open(0), Approved(1) |
| 176 | msg_approval_bump | 1 | MessageApproval PDA bump |
| 177 | bump | 1 | Proposal PDA bump |
| 178 | _reserved | 16 | Reserved |
VoteRecord (disc 2)
PDA seeds: ["vote", proposal_id, voter]. Total: 69 bytes.
| Offset | Field | Size | Description |
|---|---|---|---|
| 0 | discriminator | 1 | 2 |
| 1 | version | 1 | 1 |
| 2 | voter | 32 | Voter pubkey |
| 34 | proposal_id | 32 | Proposal identifier |
| 66 | vote | 1 | Yes(1) or No(0) |
| 67 | bump | 1 | VoteRecord PDA bump |
Account Type Summary
| Account | Disc | Type | Size | PDA Seeds | Program |
|---|---|---|---|---|---|
| DWalletCoordinator | 1 | PDA | 116 | ["dwallet_coordinator"] | dWallet |
| NetworkEncryptionKey | 3 | PDA | 164 | ["network_encryption_key", noa] | dWallet |
| MessageApproval | 14 | PDA | 287 | ["message_approval", dwallet, hash] | dWallet |
| SystemState | 1 | PDA | 365 | ["ika_system_state"] | Ika System |
| Validator | 2 | PDA | 973 | ["validator", identity] | Ika System |
| StakeAccount | 3 | PDA | 115 | ["stake_account", stake_id] | Ika System |
| ValidatorList | 4 | PDA | 18+ | ["validator_list"] | Ika System |
| Proposal | 1 | PDA | 195 | ["proposal", id] | Voting example |
| VoteRecord | 2 | PDA | 69 | ["vote", id, voter] | Voting example |