← Back to Proposals

The Trust Anchor PROPOSAL v3

The Solana program becomes the single authority users trust — not ShardKeep the company, not node operators, not any server. Every critical state transition is enforced by immutable on-chain logic. · April 2026

The fundamental shift from v2: In v2, the program stored encrypted shard maps. In v3, the program is the authority for the entire network. Users sign transactions to authorize operations on "our network" — shard management, subscriptions, access control, rotation, fee collection, node staking, rewards, and estate planning are all enforced on-chain. If ShardKeep the company disappears tomorrow, the protocol keeps running.

1. Architecture Overview

Program structure: 1 core + modular extensions

Capabilities are split across programs based on upgrade cadence and complexity. The core program handles operations that touch every user interaction. Extension programs handle specialized features.

ProgramCapabilitiesPhase
shardkeep_core Shard map authority, subscription management, access control + 2FA, rotation scheduling, fee collection, audit trail Phase 1
shardkeep_nodes Node registration, bond staking, uptime tracking, slashing Phase 2
shardkeep_rewards Emission distribution, Merkle-based reward claims, reward multipliers Phase 2
shardkeep_estate Dead man's switch, beneficiary transfer, key escrow Phase 3
SPL Governance (Realms) Protocol parameter governance, upgrade authority Phase 3

The user's journey (every step on-chain)

1. User connects wallet → signs auth challenge
2. Program creates VaultIndex + AccessControl PDAs (user registered on-chain)
3. User subscribes → deposits USDC/SHARDKEEP into escrow PDA → program sets tier
4. User stores a secret → client encrypts + Shamir splits → shards distributed to nodes
5. Program stores encrypted shard map in ShardMap PDA (only user can decrypt)
6. Server purges shard locations from memory — on-chain map is the only record
7. User retrieves → reads PDA (free) → decrypts locally → contacts nodes directly
8. Rotation due? Crank triggers → client or delegate executes → new map stored on-chain
9. Breach detected? Backup wallet calls emergency_lockdown → program freezes all PDAs
Every step is a Solana transaction → immutable audit trail by default

2. Core Program Capabilities (shardkeep_core)

2.1 Shard Map Authority CORE

The program stores encrypted shard location maps in PDAs. All on-chain data is AES-256-GCM ciphertext — publicly readable but useless without the user's wallet key.

PDA: ShardMap

Seeds: ["shard_map", user_pubkey, vault_id (u64)]
Fields:
  owner: Pubkey
  vault_id: u64
  version: u32          // incremented on each rotation
  encrypted_map: Vec<u8> // AES-256-GCM ciphertext (~300-500 bytes)
  nonce: [u8; 12]       // encryption nonce
  map_hash: [u8; 32]    // SHA-256 of plaintext (integrity check)
  status: u8            // Active=0, Locked=1, Rotating=2, Deleted=3
  created_at: i64
  updated_at: i64

Instructions:

InstructionSignerEffect
store_shard_mapUser walletCreates/updates ShardMap PDA with encrypted data
rotate_shard_mapUser wallet OR rotation delegateWrites new encrypted map, increments version
delete_shard_mapUser walletSets status=Deleted, reclaims rent
lock_shard_mapUser OR backup walletSets status=Locked (emergency freeze)
Operator blindness guaranteed: The program stores ciphertext. ShardKeep's servers purge shard locations after distribution. Vault nodes hold anonymous blobs. The on-chain map is the ONLY record of which nodes hold which shards — and only the wallet holder can read it.

2.2 Subscription Management CORE

Tier status managed on-chain. Users deposit payment into program-controlled escrow. Verifiable by anyone — no trusting ShardKeep's server to report tier correctly.

PDA: Subscription

Seeds: ["subscription", user_pubkey]
Fields:
  owner: Pubkey
  tier: u8              // Free=0, Guardian=1, Sentinel=2, Fortress=3
  payment_mint: Pubkey  // USDC or SHARDKEEP mint address
  paid_through: i64     // subscription valid until
  auto_renew: bool
  escrow_balance: u64   // pre-deposited for auto-renewal

Instructions:

InstructionSignerEffect
subscribeUser walletTransfer payment to escrow, set tier + expiry
renewUser OR permissionless crankDebit escrow, extend paid_through
upgrade_tierUser walletPay difference, upgrade tier
cancelUser walletStop auto-renew, refund remaining escrow
check_expiryPermissionless crankIf expired + no funds → downgrade to Free

Why on-chain? If ShardKeep's server says "you're not subscribed," the user can prove otherwise by pointing to the Subscription PDA. Third-party apps can verify tier without calling our API (see Auth-as-a-Service). The blockchain IS the receipt.

2.3 Access Control + 2FA Backup Wallet CORE

The kill switch. Primary wallet and backup wallet registered on-chain. Backup can freeze everything. Social recovery via guardians.

PDA: AccessControl

Seeds: ["access_control", user_pubkey]
Fields:
  primary_wallet: Pubkey
  backup_wallet: Option<Pubkey>
  guardian_wallets: Vec<Pubkey>  // max 5, for social recovery
  guardian_threshold: u8         // how many guardians needed
  lockdown_active: bool
  lockdown_initiated_by: Option<Pubkey>
  recovery_cooldown: i64        // e.g., 48 hours
  last_primary_action: i64

Instructions:

InstructionSignerEffect
set_backup_walletPrimaryRegister backup pubkey
set_guardiansPrimarySet guardian wallets + threshold
emergency_lockdownBackup OR primaryFreeze ALL shard maps for this user
lift_lockdownPrimary onlyUnfreeze after cooldown
initiate_recoveryBackup OR N guardiansBegin wallet migration (48h cooldown)
complete_recoveryNew walletTransfer all PDA ownership
cancel_recoveryPrimaryCancel if user returns during cooldown
Critical enforcement: The store_shard_map, rotate_shard_map, and delete_shard_map instructions MUST check lockdown_active from the AccessControl PDA. If locked, those instructions FAIL. This is enforced by the smart contract — no server can override it. Not even ShardKeep.

2.4 Rotation Scheduling CORE

The program defines rotation rules per tier. A permissionless crank checks if rotation is due. The user or a delegated agent executes.

PDA: RotationDelegate

Seeds: ["rotation_delegate", user_pubkey]
Fields:
  owner: Pubkey
  delegate: Pubkey     // authorized agent's key
  permissions: u8      // bitfield: can_rotate=1
  authorized_at: i64
  expires_at: i64      // delegation expiry

The delegation model solves "user must be online": User pre-authorizes a rotation agent (keypair held by ShardKeep's infrastructure or community-operated). The agent can execute rotations on schedule but CANNOT delete, lock, or transfer — only rotate. User revokes at any time.

TierRotationTrigger
Shield (Pawn)Manual onlyUser-initiated
Guardian (Knight)WeeklyCrank + delegate or client
Sentinel (Bishop/Rook)DailyCrank + delegate or client
Fortress (Queen)DailyCrank + delegate or client

2.5 Fee Collection CORE

Every shard operation collects a micro-fee into the program-controlled treasury PDA. Fees fund operator rewards, protocol development, and insurance.

PDA: FeeConfig

Seeds: ["fee_config"]
Fields:
  authority: Pubkey          // governance multisig
  store_fee: u64             // per shard_map store
  rotate_fee: u64            // per rotation
  operator_share_bps: u16    // % to operator reward pool
  treasury_share_bps: u16    // % to protocol
  insurance_share_bps: u16   // % to insurance pool

Fee distribution is transparent: anyone can read FeeConfig and verify where fees go. No hidden margins.

2.6 Audit Trail CORE

Every shard operation is a Solana transaction → immutable audit log by default. The program emits structured events for indexing.

AuditEvent (via Anchor emit!()):
  user: Pubkey
  operation: u8      // Store=0, Rotate=1, Delete=2, Lock=3, Unlock=4
  vault_id: u64
  timestamp: i64
  metadata_hash: [u8; 32]

Enterprise users (Fortress) can enable log_access for read-level audit trails. Individual users get it free via transaction history.

3. Extension Programs

3.1 Node Registration & Staking (shardkeep_nodes) Phase 2

Operators register on-chain, stake bonds, earn based on performance. Currently tracked in MySQL — moving on-chain makes it trustless.

PDA: NodeRegistry

Seeds: ["node", operator_pubkey]
Fields:
  operator: Pubkey
  node_id: [u8; 32]
  stake_amount: u64
  status: u8          // Pending=0, Active=1, Jailed=2, Deregistered=3
  last_heartbeat: i64
  shards_held: u32
  shard_capacity: u32
  uptime_score: u16   // basis points (0-10000)
  slash_count: u8
  region: u8          // geographic region code

Slashing (enforced by program):

ViolationPenalty
Serving corrupt data100% bond slash
Extended downtime (>72h)25% bond slash
Failed heartbeats (>50% in 30 days)10% bond slash
Collusion (proven)100% bond slash

What operators gain: Their stake is safe from arbitrary seizure. They can verify their bond balance on-chain. They can join permissionlessly (no ShardKeep gatekeeping). New operators register, stake, and start earning — all via transactions.

3.2 Reward Distribution (shardkeep_rewards) Phase 2

Emissions distributed via Merkle tree. Off-chain indexer computes reward tree each epoch, publishes root on-chain. Operators submit Merkle proofs to claim. Program verifies and prevents double-claims.

Why Merkle? On-chain computation for thousands of operators would exceed Solana's compute limits. Merkle proofs shift computation off-chain while maintaining on-chain verifiability. Same pattern used by Jupiter, Marinade, and most major Solana protocols.

End of epoch
Indexer calculates each operator's share: (uptime × shards_held) / network_total
Builds Merkle tree of rewards
Publishes root hash on-chain
Operator calls claim_rewards with their Merkle proof
Program verifies proof against root → transfers tokens
// Any operator can independently verify their reward calculation

3.3 Estate / Inheritance (shardkeep_estate) Phase 3

Dead man's switch on-chain. No ShardKeep involvement required for execution.

User sets up estate plan: beneficiary wallet + 180-day timeout
Program tracks last_activity (updated on ANY shard operation)
180 days of inactivity pass
Beneficiary calls initiate_transfer
30-day grace period (owner can cancel by logging in)
Beneficiary calls complete_transfer → all PDA ownership transfers

// Purely on-chain. Cannot be blocked, censored, or delayed by any third party.
// Key escrow: user pre-encrypts vault master key with beneficiary's pubkey, stored in EscrowedKey PDA

3.4 Login with ShardKeep (Auth-as-a-Service) Phase 3

Third-party dApps verify ShardKeep identity by reading on-chain PDAs. No API call to ShardKeep required.

dApp prompts user to sign: "ShardKeep Auth: {domain}:{nonce}"
dApp verifies signature (standard Ed25519)
dApp reads on-chain PDAs:
    VaultIndex exists? → User has a ShardKeep account
    Subscription tier? → User's plan level
    AccessControl lockdown? → Account in good standing
dApp grants access based on verified on-chain state

// No ShardKeep server involved. Works as long as Solana is running.
// $1.8B authentication market (Auth0/Okta) — 10x cheaper on-chain.

4. Complete PDA Map

shardkeep_core
  ├── VaultIndex          ["vault_index", user]           per-user metadata
  ├── ShardMap            ["shard_map", user, vault_id]   encrypted shard locations
  ├── Subscription        ["subscription", user]          tier + payment state
  ├── SubscriptionEscrow  ["sub_escrow", user]            token account (USDC/SHARDKEEP)
  ├── AccessControl       ["access_control", user]        wallets, guardians, lockdown
  ├── RotationDelegate    ["rotation_delegate", user]     authorized rotation agent
  ├── FeeConfig           ["fee_config"]                  global fee parameters
  ├── Treasury            ["treasury"]                    fee collection account
  └── ProgramConfig       ["program_config"]              global config + authority

shardkeep_nodes
  ├── GlobalNodeConfig    ["node_config"]                 staking params, totals
  ├── NodeRegistry        ["node", operator]              per-operator registration
  └── NodeStakeVault      ["node_stake", operator]        staked token account

shardkeep_rewards
  ├── RewardPool          ["reward_pool"]                 emission config + pool
  ├── OperatorRewards     ["operator_rewards", operator]  accrued rewards
  └── MerkleDistributor   ["merkle_dist", epoch]          root per epoch

shardkeep_estate
  ├── EstatePlan          ["estate", user]                beneficiary + timeout
  └── EscrowedKey         ["escrowed_key", user]          encrypted master key

Per-user rent costs (at $200/SOL):

AccountsData SizeRent-ExemptUSD
VaultIndex + AccessControl + Subscription~576 bytes~0.004 SOL$0.80
Per ShardMap (50 vaults)~25 KB~0.18 SOL$36
RotationDelegate~128 bytes~0.001 SOL$0.20
Total (50 vaults)~0.19 SOL$37

Rent is recoverable when accounts are closed. Protocol can subsidize rent from subscription fees so users never handle SOL directly.

5. What This Means for Decentralization

Can ShardKeep the company disappear?

CapabilitySurvives without ShardKeep?
Shard maps accessibleYES — on-chain, anyone can read PDAs
Subscription state verifiableYES — on-chain
Node operators continueYES — staked, incentivized by rewards
Emergency lockdownYES — program enforces, no server needed
Estate/inheritanceYES — dead man's switch is on-chain
Fee collection + rewardsYES — program handles automatically
Audit trailYES — Solana transaction history is permanent
Client applications (extension, mobile)NEEDS community — open-source enables this
Rotation agentNEEDS community — anyone can run one
Node heartbeat oracleNEEDS community — decentralized attestation
~85% survivable without ShardKeep. The remaining 15% is client software and off-chain coordination — all open-sourceable. If ShardKeep publishes client code, the protocol is effectively immortal.

Censorship resistance

Design decision: NO blocklist, NO pause instruction, NO admin override.

The program processes any valid instruction from any wallet. There is no geographic restriction, no KYC gate, no way for ShardKeep (or anyone) to prevent a wallet from using the program. This is a deliberate and permanent design choice.

ShardKeep's client applications (browser extension, website) could theoretically geo-block users. But the program is permissionless — alternative clients, CLI tools, or direct RPC calls bypass any client-level restriction.

Upgradability path

  1. Launch: Upgrade authority = 3-of-5 governance multisig (ShardKeep team)
  2. Year 1: All upgrades require 7-day public timelock + verifiable builds (anchor verify)
  3. Year 2: Upgrade authority transitions to SPL Governance (SHARDKEEP token holders vote)
  4. Year 3+: Core program upgrade authority revoked (immutable). Extension programs remain upgradable via governance.

Progressive lockdown: ship fast early, decentralize authority as the protocol matures, lock it permanently when stable.

6. Implementation Phases

Phase 1: Core Program (6-8 weeks)

  1. Anchor program: shard map CRUD + access control + lockdown
  2. Subscription PDAs + escrow + crank-driven expiry
  3. Rotation scheduling + delegation model
  4. Fee collection to treasury PDA
  5. Audit event emissions
  6. Modify ShardService.php to mint shard maps on-chain
  7. Modify extension storage.js to read PDAs
  8. DevNet end-to-end testing

Phase 2: Node Network (4-6 weeks)

  1. shardkeep_nodes program: registration + staking + slashing
  2. shardkeep_rewards program: Merkle distribution
  3. Migrate node registry from MySQL to on-chain
  4. Heartbeat oracle (self-reported + challenge-response)
  5. Operator earnings dashboard

Phase 3: Advanced Features (4-6 weeks)

  1. shardkeep_estate: dead man's switch + beneficiary transfer
  2. Key escrow PDAs for inheritance
  3. Login with ShardKeep SDK + documentation
  4. SPL Governance integration
  5. Multisig → governance transition

Phase 4: Full Decentralization

  1. Open-source all client code
  2. Community-operated rotation agents
  3. Decentralized heartbeat oracle network
  4. Core program upgrade authority revoked (immutable)
  5. Protocol self-sustaining without ShardKeep

7. The Competitive Moat

Users trust the program, not the company.

Operators trust the program, not manual payouts.

Third parties trust the program, not an API.

The program is the authority — everything else is interface.

No centralized password manager can replicate this without abandoning their entire architecture. No existing crypto vault has a Solana program managing shard maps, subscriptions, access control, node staking, rewards, and estate planning in a single trustless protocol. This is a multi-year head start.

Supersedes v1 and v2. References: vault-security-v3, tokenomics-v3.1, addendum-revenue-streams-v1, shardkeep-branding-proposal.
Existing Anchor program 4hfvirYMHxW4nZSuTreWRQQD45Hfc4LKmUyy3hFYcZVP (vault CRUD) remains unchanged — the new programs are separate deployments.
All development begins on Solana DevNet. MainNet deployment after security audit.