getNodeHome

customNhid 함수를 통해 nodehome network에 등록되어있는 토큰인지 검사하고 getToNetwork를 활용하여 목적지 네트워크에 브릿지가 가능한지 체크합니다.

const ethers = require('ethers');

const network = "ETHEREUM"
const toNetwork = "KLAYTN"
const contract_address = "0xdF9c65B589e1286D4361EcFFa516e1fbfA4526df"
const typed = "token"
const rpcUrl = "https://ethereum.publicnode.com"
const toNetworkHex = "0X4B4C4159544E"
const bridgeConfigContractAddress = "0xf643a4fb01cbbfb561cc906c1f37d5718ef3bba3"

const getNodeHomeAsync = async(network, toNetwork, contract_address, typed) => {
    try {
        const provider = new ethers.providers.JsonRpcProvider(rpcUrl);

        const bridgeConfigContract = new ethers.Contract(
            bridgeConfigContractAddress,
            abiBridgeConfig,
            provider
        );

        const customNhidResponse = await bridgeConfigContract.customNhid(contract_address);

        const customNhid = BigInt(customNhidResponse).toString(16);

        if (customNhid != "0") { // customNhid가 0이면 노드홈체인에 등록안되어 있는 상태
            const getTokNetworkResponse = await bridgeConfigContract.getToNetwork(contract_address, toNetworkHex);

            const getTokNetwork = parseInt(getTokNetworkResponse, 16) // getToNetwork가 0이면 setup 등록된값이있으면 move로 bridge 가능
            
            return {
                result: "OK",
                type: getTokNetwork !== "0" ? typed : "setup",
            };
        } else {
            return {
                result: "OK",
                type: "setup"
            };
        }
    } catch (e) {
        return {
            result: "FAIL",
            error: e.message
        };
    }
}

Last updated