sBridge
2MPC Flow
Step-by-step signing flows for deposit and withdrawal using 2MPC dWallets
Deposit Flow
How a user moves an external asset onto SBChain using a 2MPC vault:
User initiates deposit in SwapBlok UI
↓
UI requests Key Share A participation from user's device
↓
ika.xyz dWallet network provides Key Share B
↓
2MPC protocol runs — full signing key never assembled
↓
Co-signed transaction locks funds in the 2MPC vault address
↓
Lock event emitted on source chain (Ethereum / Solana / Bitcoin / Tron)
↓
Relayer detects event, constructs Merkle proof
↓
SBChain consensus verifies proof independently
↓
Equivalent IOU or wrapped asset minted to user's SBChain accountWithdrawal Flow
How a user moves an asset back to an external chain:
User initiates withdrawal in SwapBlok UI
↓
SBChain burns / locks the on-chain asset
↓
Withdrawal request recorded on SBChain
↓
UI requests Key Share A from user's device
↓
ika.xyz dWallet network provides Key Share B
↓
2MPC protocol produces co-signed release transaction
↓
Release transaction broadcast to destination chain
↓
Funds arrive at user's external addressWhy Neither Party Can Act Alone
- SwapBlok has no key share — it cannot initiate or block a transaction independently
- ika.xyz has Key Share B only — useless without the user's Key Share A
- The user has Key Share A only — useless without ika.xyz providing Key Share B
- Only the user, by actively participating in the MPC protocol, can authorise movement of their funds
2MPC Primitive Summary
| Primitive | Role | Holder |
|---|---|---|
| Key Share A | User signing contribution | User's device (never transmitted) |
| Key Share B | Network signing contribution | ika.xyz dWallet network (distributed) |
| MPC Session | Combines shares without revealing either | Computed jointly — key never assembled |
| Vault Address | On-chain address controlled by the 2MPC key | Deterministic from both shares |