Security
What you are trusting today
Solidus operates every validator on the testnets, so the trust is in one operator. A message is applied on a destination chain when enough of those validators have signed it. That is the honest description, and it is the reason a zero-knowledge proof replaces the signature check before any value moves on mainnet.
Delivery is permissionless. Anyone can read the signatures from a public RPC and submit them, so a stalled script delays a message and cannot forge or block one.
Mechanisms
- Ascending signer order
- One stolen key can produce many valid signatures over one message. Requiring each recovered address to be strictly greater than the last makes a duplicate impossible.
- The destination is inside what is signed
- A signature for one chain recovers a different address on another, so it cannot be replayed across destinations.
- Strict sequence
- Messages apply in order. A revocation cannot be skipped, because the next message is refused until the gap closes.
- Silence closes the gate
- If the transport stops, a destination cannot learn about a revocation, so gates stop passing after a staleness window rather than continuing to trust what they last heard.
- The mirror holds nothing
- No owner, no upgrade path, and it refuses any call that sends it ether. The worst outcome of a bug in this phase is a wrong credential status.