Permissionless Token bridging
Permissionless bridging is easy with anyCall. Anyone can deploy a working bridge for any tokens in minutes.
When users bridge, the tokens are burnt on the source chain and you use anyCall to pass a message cross-chain to mint the same amount of tokens on the destination chain.
The following instructions would be partnered with examples. We would showcase this with a permissionless bridge from fantom testnet to rinkeby.
Fork the following contract and constructor arguments should be anycall contract address and admin address.
Callproxyshould be set to anycall contract address. This information can be found here:
Bridge Contract address
Minting and burning rights need to be given on both the destination and source chain:
a. Bridge Contract: Your bridge contract will be burning and minting tokens in the bridge process.
The default anyerc20 implementation contains a timelock, you have to call
applyMinterafter timelock is finished.
Give Minter to Bridge Contract
setClientPeers(uint256 _chainIds, address _peers)This stores information of the destination chain bridge contract address to issue anycall on the correct destination contracts.
setTokenPeers(address srcToken, uint256 chainIds, address dstTokens)This stores information of destination chain token address. This makes sure the right token is interacted.
Set Client Peers
Set Token Peers
This is an example of the bridge process in production. We are bridging from fantom testnet to rinkeby.
The fantom testnet tx is done with
flags 2as the argument and the tx was sent with some ftm as msg.value. This means we would cover the gas fee of destination chain execution on the source chain.
Step 1: Swapout (Bridge out/Burn the tokens)
Step 2: AnyExec (Bridge In/Mint the tokens)
After you build out the permissionless bridge, you can host the frontend on your ui or apply to be included on our website. If you wish to be listed on our website, please contact our team through this email: [email protected]