ZooBC wiki

Changes to “The bridge and wrapped coins”

#148 (zoobc.how, 2026-10-26 21:37 UTC) → #1085 (zoobc.how, 2026-10-27 00:42 UTC): Seed article updated

+ The bridge connects ZooBC with Bitcoin and Ethereum. Coins deposited at a custody address on those chains appear on ZooBC as wrapped coins, one for one, and can be sent back the same way. No single party runs it: the registered nodes vote, and the chain mints or burns only when two thirds of the seats that are not suspended agree.
+  
+ The bridge is part of ZooBC from version 0.5.8: keepers attest deposits and withdrawals, and the chain mints and burns the wrapped coins by their votes. The chains relaunch on version 0.5.8 without starting the bridge service.
− The bridge connects ZooBC with Bitcoin and Ethereum. Coins deposited at a custody address on those chains appear on ZooBC as wrapped coins, one for one, and can be sent back the same way. No single party runs it: the registered nodes vote, and the chain mints or burns only when two thirds of them agree.
 
+ > [!design] **Planned design.** The bridge service is to be handed over to the community, under a design of its own.
− > [!design] **Planned design.** The bridge's rules are part of the node from version 0.5.8, but the bridge service itself is a planned design. This article describes how the bridge is designed to work.
 
## The bridge coins
…
## Deposit: coins in
 
+ ![The bridge: ether arrives at the custody address; keepers each attest "1 ZETH to Y"; the tally passes two thirds and ZETH is minted to Y; below, the way back through custody, a burn and the keepers' signatures](tokens-011.svg)
− ![Bridge design: ether arrives at the custody address; keepers each attest "1 ZETH to Y"; the tally passes two thirds of the registry and ZETH is minted to Y; below, the way back through custody, a burn and the keepers' signatures](tokens-011.svg)
 
1. The user sends coins to the custody address on Bitcoin or Ethereum.
2. Each keeper that sees the confirmed deposit sends an attestation naming the deposit and a value: the token, the amount and the ZooBC recipient.
+ 3. At the end of every block the chain tallies the votes. When two thirds of the counted seats, the registered nodes that are not suspended (8 of 11, for example), have attested exactly the same value, every node mints that amount to the recipient, one for one and with no bridge fee, and the event is closed for good.
− 3. At the end of every block the chain tallies the votes. When two thirds of the registered nodes (8 of 11, for example) have attested exactly the same value, every node mints that amount to the recipient, one for one and with no bridge fee, and the event is closed for good.
 
+ Suspended seats neither vote nor count. Two safeguards apply on top:
− Suspended seats neither vote nor count, but the bar stays at two thirds of the whole registry. Two safeguards apply on top:
 
- **A daily cap.** If a deposit would take one day's mints of a coin (the last 5,760 blocks) above the larger of one whole coin and 10 % of its supply, every seat that is not suspended must agree, and never fewer than two thirds of all seats.
…
## Withdrawal: coins out
 
+ ![A withdrawal: a transfer to custody with the ZBW1 message, finality of its block, keepers' votes with foreign signatures, the two-thirds tally, the burn from custody, and the signatures releasing the ether to the destination](integrations-014.svg)
− ![A withdrawal as designed: a transfer to custody with the ZBW1 message, finality of its block, keepers' votes with foreign signatures, the two-thirds tally, the burn from custody, and the signatures releasing the ether to the destination](integrations-014.svg)
 
1. The user sends the wrapped coin with an ordinary TransferToken to the custody account, with the message `ZBW1|` followed by the destination address. That transfer is the request: no BurnToken is involved, and the user sends nothing on the foreign chain.
+ 2. Keepers act only once the request is final, which takes between about 3 and about 27 hours after its block (see [[finality-and-rollback]]); a keeper scans the chain from the last finalized block it processed. Each keeper's vote names the request, the token, the amount and the destination, and carries that keeper's signature for the foreign chain.
− 2. Keepers act only once the request is final, which takes between about 3 and about 27 hours after its block (see [[finality-and-rollback]]). Each keeper's vote names the request, the token, the amount and the destination, and carries that keeper's signature for the foreign chain.
3. When two thirds agree, every node checks the request again and burns those units from the custody account.
4. The keepers' collected signatures, readable through the API, authorise the release of the coins to the destination.
…

History