Components
dWallet (Ika 2PC-MPC)
A wallet whose private key is split across Ika’s MPC network. It can sign for other chains, but no single party — including Tentacle Pay — ever holds the whole key.
Move contract
The
tentaclepay package on Sui. It custodies the DWalletCap, collects the USDC payment, and routes the signing request to Ika’s coordinator. See Smart contracts.Verifier
An off-chain service that attests each signing request. The contract refuses to sign without a fresh, valid attestation.
Coordinator
Ika’s
DWalletCoordinator — the on-chain entry point that runs the threshold signing protocol and returns the signature.The flow
The agent builds the destination payment
The x402 client produces the payment authorization for the destination chain (for example, an EVM
transferWithAuthorization) and signs its half — the centralized signature.The verifier attests the request
The agent sends the request to the verifier, which returns an Ed25519 signature over a digest binding this exact call: the protocol, signer, coordinator, amount, message, and an expiry.
pay_and_sign runs on Sui
The agent calls
pay_and_sign, paying USDC and passing the message, its centralized signature, and the verifier attestation. The contract checks the attestation, takes the payment, and requests the threshold signature from the coordinator.Ika produces the signature
The coordinator consumes a pre-funded presign and runs the 2PC-MPC protocol, producing a signature valid on the destination chain.
Why the verifier attestation
The contract will only ask the dWallet to sign a message that the verifier has approved. The verifier signs the digest:- No tampering — change the amount, message, or any object id, and the attestation no longer verifies.
- No replay — the digest commits to this specific call, so an attestation can’t be reused for another.
- Bounded lifetime —
valid_beforeis checked against Sui’s on-chainClock, so a stale attestation is rejected.
Protocol object. The key can be rotated by the protocol admin.
Presigns and sponsored fees
Threshold signing is faster when part of the work is done ahead of time. The contract keeps a pool of single-use presigns; each signature consumes one, and the pool is refilled withadd_presigns. It also holds sponsored IKA and SUI fee pools so callers don’t have to supply the protocol fees themselves — anyone can top these up with deposit_ika and deposit_sui.
Trust model
- The dWallet key is never reconstructed; signatures come from Ika’s MPC protocol.
- The Move contract is the only thing that can approve a message for the dWallet, and it does so only against a valid verifier attestation.
- The verifier authorizes which payments may be signed; it cannot move funds or sign on its own.
- USDC paid into the contract accumulates in an admin-gated vault — it funds the destination-side settlement.
Next steps
Smart contracts
The
tentaclepay Move module in detail.