3. How to use an Orbit Bridge
** The chain parameter should have the following format:
ETH
, ORBIT
, KLAYTN
, BSC
, MATIC
, HECO
, CELO
, AVAX
, FANTOM
, HARMONY
, MOONRIVER
, OEC
, XDAI
EVM
Vault Contract Interface
interface IVault {
function deposit(string memory toChain, bytes memory toAddr) payable public;
function depositToken(address token, string memory toChain, bytes memory toAddr, uint amount) public;
}
You can use the vault to bridge assets to other chains which deployed minter. (ex) Bsc vault has only Klaytn, Orbit, Heco and Matic minter. (See BSC vault contracts) BNB can bridge to Heco. But cannot bridge to Fantom.
If you want to bridge native assets like ETH or BNB, use
deposit
.Otherwise, if you want to bridge ERC20, use
depositToken
.Orbit Bridge has
ETH
,KLAYTN
,BSC
,MATIC
,HECO
,CELO
vaults.
Details
deposit(string memory toChain, bytes memory toAddr) payable
toChain
: Chain symbol to send assets.toAddr
: Address to receive bridged assets. ** You must send a transaction with value for the amount to be sent.
depositToken(address token, string memory toChain, bytes memory toAddr, uint amount)
toChain
: Chain symbol to send assetstoAddr
: Address to receive bridged assetsamount
: The amounts of tokens to send (wei)
Example
Bridge 0.1 ETH from ETH to KLAYTN
ETH is a
native asset
of the Ethereum chain.In this case, call the
deposit
method to the ETH vault contract.contract address: 0x1bf68a9d1eaee7826b3593c20a0ca93293cb489a
deposit("KLAYTN", <to address>){value: 100000000000000000}
2. Bridge 10 BUSD from BNB to MATIC
BUSD is an
ERC20
token based on the BNB chain.In this case, call the
depositToken
method to Bsc vault contract.contract address: 0x89c527764f03BCb7dC469707B23b79C1D7Beb780
depositToken("MATIC", <to address>, 10000000000000000000)
Minter Contract Interface
interface IMinter {
function getChainId(string chain) external view returns (bytes32);
function chainFee(bytes32 chainId) external view returns (uint256);
function getTokenAddress(bytes memory token) public view returns(address);
function requestSwap(address tokenAddress, string memory toChain, bytes memory toAddr, uint amount) public payable;
}
You can use the minter to send bridged assets to the origin chain or another chain.
In this case, only use
requestSwap
Depending on the chain, there may be a chain fee.
If there is a chain fee, you need to send a transaction by putting it in value.
Minted Tokens have the prefix ‘o’ which means bridged by an Orbit Bridge. (oUSDT, oBUSD, oXRP, oETH etc…)
Details
getChainId(string chain)
Returns unique bytes32
data for each chain.
chain
: Chain symbol to send assets.
chainFee(bytes32 chainId)
Returns chain fee for each chain.
chainId
: bytes32 data fromgetChainId
method.
getTokenAddress(bytes memory token)
token
: Address of origin asset. For native assets, it is0x0000000000000000000000000000000000000000
requestSwap(address tokenAddress, string memory toChain, bytes memory toAddr, uint amount)
tokenAddress
: Returned value usinggetTokenAddress
toChain
: Chain symbol to send assets.toAddr
: Address to receive bridged assets.amount
: The amounts of tokens to send (wei)
Example
Bridge 0.1 oETH from KLAYTN to ETH
oETH on Klaytn is a bridged
ERC20
token from Eth.ETH is a native asset of the Ethereum chain.
In this case, use the Klaytn minter contract of Eth vault
contract address: 0x60070F5D2e1C1001400A04F152E7ABD43410F7B9
requestSwap(
"0x0000000000000000000000000000000000000000"
, "KLAYTN"
, <to address>
, 100000000000000000 // 0.1 * 10 ** 18
){value: 100000000000000000} // chainFee
2. Bridge 10 oBUSD from MATIC to HECO
oBUSD on Matic is a bridged
ERC20
from BNB chain.BUSD is an
ERC20
based on the BNB chain.To bridge oBUSD from Matic to Heco, use Matic minter contract of Bsc vault
contract address: 0x89c527764f03BCb7dC469707B23b79C1D7Beb780
requestSwap(
"0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56" // origin BUSD address
, "HECO"
, <to address>
, 10000000000000000000 // 10 * 10 ** 18
){value: 100000000000000000} // chainFee
STACKS
Minter Contract Interface
(request-swap (to-chain (buff 256)) (to-addr (buff 20)) (amount uint))
In the case of Stacks, there is a minter corresponding to each bridged token.
to-chain
: Chain to send assets. This value can get using bufferCVFromString (see @stacks/transactions)to-addr
: Address to receive bridged assets.
Last updated
Was this helpful?