-
Notifications
You must be signed in to change notification settings - Fork 0
HYBRID_LOCK
krewdev edited this page Jul 17, 2026
·
1 revision
Funds locked in the internet vault cannot be released by internet actors alone.
Release requires correct Meshtastic-side identifiers and mesh consensus proof.
┌──────────────────────────┐
deposit SOL │ Solana vault (locked) │
+ mesh_short_id ─►│ bound to mesh identity │
└────────────▲─────────────┘
│ unlock ONLY if ALL of:
│ 1. mesh_short_id matches lock
│ 2. unique mesh burn_txid
│ 3. ≥K mesh attestor signatures
│ (validators who saw final Burn)
┌────────────┴─────────────┐
│ Meshtastic MeshChain │
│ Burn + cold key (large) │
└──────────────────────────┘
| Attacker has | Can steal vault? |
|---|---|
| Only Solana key / compromised website | No (no mesh burn + attestors) |
| Only radio channel PSK | No (cannot sign Solana withdraw; no vault key) |
| Compromised single relayer | No if hybrid needs K attestors |
| Mesh burn for wrong short id | No (bound identity mismatch) |
| User’s mesh cold key + final burn + K attestors | Yes (intended unlock) |
| Side | What is locked / proven |
|---|---|
| Internet | Lamports/tokens in program vault PDA |
| Mesh | MESH claim; Burn destroys claim; burn_txid + mesh_short_id
|
| Attestors | Mesh validators (or bridge guardians) also hold Solana keys; they sign that the burn is final |
Internet-only path is disabled when hybrid_enabled = true.
At deposit time the user chooses:
-
mesh_short_id— 8-byte MeshChain address that will own the claim
Unlock must present the same mesh_short_id plus a burn that mesh attestors confirm for that id.
Optional later: bind pq_pk_hash at deposit so only that cold key’s burns are accepted.
- User calls
deposit_sol(amount, mesh_short_id). - Vault holds SOL;
DepositRecordstores binding. - Relayer mints MESH to that short id on the mesh.
- User burns MESH on mesh (PQ if large).
- ≥K mesh attestors (registered Solana pubkeys of mesh validators) sign the withdraw intent.
- Anyone (relayer) submits
withdraw_hybrid(...)with:-
deposit_seq+ matchingmesh_short_id -
burn_txid,amount,mesh_height,destination - K attestor signatures as remaining signers
-
- Program checks bindings + uniqueness → releases SOL.
MESHCHAIN-HYBRID-UNLOCK-v1
|burn_txid=<32B>
|mesh_short_id=<8B>
|amount=<u64>
|destination=<pubkey>
|mesh_height=<u64>
|deposit_seq=<u64>
(On Solana we verify ed25519 via multiple Signer accounts that must be in the attestor set — simpler than raw ed25519 syscalls for v1: attestors must co-sign the transaction.)
- Attestor majority collusion can still unlock (same as mesh validator trust).
- Choose K and attestor set carefully; geo-separate keys.
- Mesh channel encryption ≠ unlock authority.
mesh how-cold-works # explains hybrid hold
# deposits always name your mesh address
# cash-out needs radio burn + network witnesses