We have two bridges as explained below
Fuse Bridge: The bridge, based on POA's bridge implementation, is used to transfer Fuse tokens between the Fuse chain and the Ethereum network.
ERC20 token bridge: This bridge is used to transfer ERC20 tokens into Fuse chain and back. Please not that Fuse bridge is not supposed to be used to transfer .
The bridge, based on POA's bridge implementation, is used to transfer Fuse tokens between the Fuse chain and the Ethereum network.
Tokens sent to the respective bridge contract on one network (whether it's Fuse or Ethereum) are "locked" in the bridge, "unlocked" on the other network bridge and transferred to the sender.
The validators of the bridge on both network are the Fuse chain validators. This means that validators, as part of their governance responsibilities, also need to validate bridge transactions and therefore hold Fuse tokens to "approve" bridge transactions on Fuse chain and hold ETH to "approve" transactions on Ethereum.
Each bridge transaction must be approved by a majority (over 50%) of the validators in order to be processed successfully.
The bridge contracts are deployed on both networks, and bridge oracle processes run on each validators machine as part of the validator deployment stack.
Besides the transfer of Fuse tokens between the two networks, the bridge is also responsible for network core functionality events:
Mint block reward distributed on the Fuse chain on Ethereum
Each cycle the total block reward distributed on Fuse chain is minted on Ethereum and locked on the bridge contract.
This works by listening to the `RewardedOnCycle` event emitted by the BlockReward contract on Fuse chain, waiting for all bridge validators on Fuse chain to sign it, and eventually sending a transaction to mint on Ethereum (by the last signing validator).
Update Fuse chain validators on Ethereum
Each cycle the Fuse chain validators are selected from a random snapshot of pending validators.
Those validators, being also the bridge validators, need to be updated on Ethereum as well.
This works by listening to the `InitiateChange` event emitted by the Consensus contract on Fuse chain, waiting for all bridge validators on Fuse chain to sign it, and eventually sending a transaction to set the bridge validators on Ethereum (by the last signing validator).
Using the bridge
Transfering from Ethereum mainnet to Fusenet - Send your erc20 Fuse tokens to the Ethereum bridge for them to be released from the Fuse chain bridge and be avaliable in your native Fuse wallet.
Transfering from Fusenet to Ethereum mainnet - Send your Native Fuse tokens to the Fuse chain bridge for them to be released from the mainnet bridge and be avaliable in your Mainnet wallet.