Given G=(A,E) a graph of anchors and edges between them. Fix an element schema/structure S for element hashes inserted into the anchors’ merkle trees.
- Users insert elements as hashes of the predefined structure into anchors.
- Oracles listen for insertions, construct
EdgeMetadataobjects, and relay these objects to the external governance system.
- Oracles listen for output from the external governance system and relay this output to the target anchors.
- Each anchor processes received output containing
EdgeMetadataobjects and updates their internal
- Users generate proofs of membership of their insertions in one-of-many of the anchors’ merkle trees and target submission on one anchor. Upon completion they submit these proofs to the relayer network.
- Relayers listen for delegations and submit these proofs to their target anchor, where they are verified on-chain.
Architecture of an Anchor System Instance
Below is an illustration of how an Anchor System instance interacts with other network participants, namely a governing distributed key generation protocol, and the oracle / relayer network. We model the external governance system as a DKG which generates threshold signatures of proposals, specifically of EdgeMetadata objects. These signed proposals are used to update the anchors on each compatible blockchain.
The Webb ecosystem started building on top of the Chainbridge and Tornado cash protocols. We combined these architectures to create an interoperable privacy set to enable cross-chain private transactions with scalable privacy and further to inspire the more general Anchor System spec.
Our goal was to merge and augment both the Chainbridge and Tornado cash protocols and increase the relayer responsibilities to design our private bridge protocol. The modifications can be summarized as:
- Augmenting Tornado's into Anchor's which additionally track an edge list to other Anchors.
- Anchors are private transaction systems that function both as Tornados but also as cross-chain bridges.
- Anchors use a zero-knowledge one-of-many merkle tree membership proof instead of one for a single merkle tree.
- Anchors can mint/burn the underlying token being deposited and withdrawn.
- Augmenting ChainBridge's Bridge into a private bridge protocol.
- We create a new AnchorHandler which modifiers the edge list of Anchors needing updates.
- We augment the Bridge relayers with a multi-party threshold signing scheme, so that one or many threshold networks can govern the bridge.