MELD Dev Docs
  • Welcome to MELD
  • OVERVIEW
    • Core Concepts
      • EVM Compatible
      • Staking/Block Rewards
      • L1-Subnet
    • Bug Bounties
    • Careers
    • Security & Audits
      • Double Spend Prevention
  • DEVELOP
    • Developing on MELD
    • Basics
      • Kanazawa Testnet
      • Test Tokens & Faucet
      • MELD Mainnet
      • RPC connections
        • RPC Methods
      • Explorers
    • Tools
    • Oracles
      • Integrating Supra Oracles
    • Deploy a Smart Contract
      • Smart Contract Languages
      • Smart Contract Testing
      • Using Remix IDE
      • Using Hardhat
      • Verify Your Smart Contract
    • Token Standards
      • MLD-20: Fungible Tokens
        • Interacting With MLD-20 Tokens
      • MLD-721: NFTs
      • MLD-1155: Multi-token standard
      • MLD-404: Semi-fungible tokens
      • MDL-6551: Token Bound Accounts
    • Deploy NFTs
      • Using Remix
    • dApp
      • Develop a Full Stack dApp on MELD
      • Secure your dApp
    • Decentralized Storage
    • Cross Chain Bridging
      • Integrating Chainport
        • Bridging Between MELD and EVM Chains
          • Main Chain -> Side Chain
          • Side Chain -> Main Chain
          • Side Chain -> Side Chain
      • Akamon Bridge
      • Yield Boost
  • VALIDATORS
    • Overview
    • Consensus
    • Run a Validator node
    • MELD Staking
  • Tutorials
    • Using MELD with your metamask
    • Create a Token
    • Add a Token to Asomi DEX
    • Lock/Burn Liquidity
  • FAQ
    • General FAQ
    • Borrowing & Lending FAQ
    • MELD ISPO FAQ
Powered by GitBook
On this page
  • Port from Side chain to Side chain
  • Check the status of your bridge transaction
  1. DEVELOP
  2. Cross Chain Bridging
  3. Integrating Chainport
  4. Bridging Between MELD and EVM Chains

Side Chain -> Side Chain

Quickstart on how to integrate the flow of porting a token from a ChainPort generated sidechain token to another ChainPort generated side chain token.

Port from Side chain to Side chain

This section describes how to bridge from a ChainPort minted token on one chain to a ChainPort minted token on a different chain.

To bridge from side chain to side chain, simply call the crossChainTransfer function on the ChainportSideBridge contract on the source network.

This function required to add Value to the transaction in order to success. There is a getter for that amount:

Value is required in order to cover the gas cost of minting and receiving the ported tokens on the target chain.

Copy

function gasFeesPerNetwork( 
    uint256 networkId
)

First make sure to approve spend on the ERC20 token you would like to bridge

Copy

 function crossChainTransfer(
        address bridgeToken,
        uint256 amount,
        uint256 networkId,
        address affiliate
 )
Parameter
Name
Description

bridgeToken

address

The address of the token you wish to bridge.

amount

uint256

The amount of tokens you wish to bridge, in wei.

networkId

uint256

The destination chain network Id. The following endpoint will fetch the list of network ids: GET /api/meta

affiliate

address

Your affiliate address. If you dont have an affiliate address, pass in the zero address. To get an affiliate address and participate in our revenue sharing program please reach out to us on telegram.

Calling crossChainTransfer on the ChainportSideBridge smart contract on Polygon Mumbai Testnet, which after 18 block confirmations, triggers a bridge transaction on Binance Smart Chain Testnet:

PythonCopy

bridgeToken = "0xA02f15D8E41DC02269bE17dFB8BddCD19e916C71"
amount = 10
affiliate_address = "0x0000000000000000000000000000000000000000"
networkId = 1 # BSC network ID
token_decimals = 18

amount_in_wei = int(float(token_amount) * 10 ** token_decimals) 
side_bridge_contract_address = "0x5cb62f043d58927c1b8488de48b104109eda09ea" # side bridge contract on polygon testnet
checksum_contract_address = web3.toChecksumAddress(side_bridge_contract_address)

sideChainContract = web3.eth.contract(address=checksum_contract_address, abi=interface_json)
contract_fee_value = sideChainContract.functions.gasFeesPerNetwork(networkId).call()
sideChainContract.functions.crossChainTransfer(bridgeToken, amount, networkId, affiliate_address).call({'value':contract_fee_value})

Once the crossChainTransfer transaction has been mined and reaches the minimum block confirmation threshold (check the GET/api/meta endpoint for the min block confirmations for a given chain), the ChainPort bridge will initiate a mint transaction on the target chain. Usually this process takes up to 5 minutes.

You can keep track of your bridge transaction via the following endpoint:

Check the status of your bridge transaction

GET https://api.chainport.io/api/port

Returns a port transaction

Query Parameters

Name
Type
Description

base_tx_hash*

String

The transaction hash of the depositTokens transaction on the source chain.

base_network_id*

String

The source chain Chainport network id.

200 Port transaction successfully fetchedCopy

{
   "port":{
      "base_network_id":3,
      "base_tx_hash":"0xa8aff5cb118eb9dc6fdce794510c996811bdd921f5f3ba3c7c6a6524f9c4ad26",
      "base_tx_status":1,
      "base_token_address":"0xa02f15d8e41dc02269be17dfb8bddcd19e916c71",
      "target_network_id":1,
      "target_tx_hash":"0x085b0523234e410fa5de098d417aaac55328b00663e9e2cf722d4ae9c44ea307",
      "target_tx_status":1,
      "target_token_address":"0x4a2a019a2b8ec9ff44e76bd96cbb1dcd57663fe7",
      "created_at":"2021-12-30T08:14:14.483997+00:00",
   }
}

Before the bridge transaction reaches the minimum confirmation threshold, this request will return an empty object

Note that a target_tx_status of 1 indicates the bridge has processed your transaction on the target network. When target_tx_status is 1 you should be able to see the properly reflected balance of the requestor address on the target chain for the ported token whose token address is listed in the target_token_address field. A target_tx_status of null indicates that the bridge is still working on processing the transaction on the target chain.

PreviousSide Chain -> Main ChainNextAkamon Bridge

Last updated 1 year ago