8.2.4 Interchain Services based on Ethereum Ropsten

Application Contract Development Guide

The development of the ETH application contract is based on its own business scenario. The main implementation includes two parts: if the source chain initiates a cross-chain transaction, its application contract needs to get outbound to access the target chain; if the target chain receives a cross-chain transaction, its application contract needs to get inbound. ETH has a chain ID of 2, which is registered on Poly Enterprise, and its configuration is applicable to the BSN production environment.

Below is an example of a source chain initiating a cross-chain transaction call:

**
* @dev: Implements a cross-chain call by invoking the “say” method

 * @param _toChainId: The chain ID corresponding to the target chain being called in the Poly network

 * @param _functionName: The method of the called contract

 * @param _somethingWoW: Parameters passed across the chain

* @return bool
 **/
function say(uint64 _toChainId, string memory _functionName, string memory _somethingWoW) public returns (bool){

   // Get the cross-chain management contract interface

    IEthCrossChainManagerProxy eccmp = IEthCrossChainManagerProxy(managerProxyContract);

    // Get the cross-chain management contract address
    address eccmAddr = eccmp.getEthCrossChainManager();

    // Get the cross-chain management contract object
    IEthCrossChainManager eccm = IEthCrossChainManager(eccmAddr);

    // Get the target chain application contract address
    bytes memory toProxyHash = proxyHashMap[_toChainId];

    // Call across the chain

      require(eccm.crossChain(_toChainId, toProxyHash, bytes(_functionName),
 bytes(_somethingWoW)),"EthCrossChainManager crossChain executed error!");

    emit Say(_toChainId,toProxyHash, bytes(_somethingWoW));    return true;
}

Below is an example of a target chain call when receiving a cross-chain transaction:

/**

* @param _somethingWoW: Parameters passed across the chain

 * @param _fromContractAddr: The address of the application contract being invoked

 * @param _toChainId: Contract framework chainId being called

 * @return bool

 **/

function hear(bytes _somethingWoW, bytes _fromContractAddr, uint64 _toChainId) public returns (bool){

    hearSomeThing = _somethingWoW;

    emit Hear(_somethingWoW, _fromContractAddr);

    return true;

}

Demo Contract Example

GitHub: https://github.com/BSNDA/ICH/tree/main/sample/polychain/eth_contracts/hellopoly

© 2019-2026 Red Date (Hong Kong) Technology Limited. all right reserved,powered by GitbookFile Modify: 2026-01-16 16:19:01

results matching ""

    No results matching ""

    results matching ""

      No results matching ""