bridgeCoin

Native Coin(ETH, KLAY, POLYGON, BNB)를 다른 네트워크로 브릿지합니다. 코인 브릿지시 다른 네트워크에 토큰형태로 전송됩니다.

const ethers = require('ethers');

const network = "ETHEREUM"
const toNetwork = "KLAYTN"
const ownerAddress = "0x1400594A07925C7110B9D22791f220Ee924C0513"
const amount = "10"
const rpcUrl = "https://ethereum.publicnode.com"
const toNetworkHex = "0X4B4C4159544E"
const bridgeContractAddress = "0x7362fa30ada8ccf2130017f2a8f0b6be78aa38de"

const bridgeCoinAsync = async (network, ownerAddress, toNetwork, amount) => {
    try {
        const provider = new ethers.providers.JsonRpcProvider(rpcUrl);

        const bridgeContract = new ethers.Contract(
            bridgeContractAddress,
            abiBridge,
            provider
        );

        let totalAmount = await ethers.utils.parseUnits(amount, "ether");

        const functionData = bridgeContract.interface.encodeFunctionData('moveFromETHER', [
            totalAmount
        ]);

        const networkFee = (await getNetworkFeeAsync(network, toNetwork, "token")).networkFee;

        const totalFee = new BigNumber(totalAmount).plus(new BigNumber(networkFee)).toString();

        const gasPrice = await provider.getGasPrice();

        const gasLimit = await provider.estimateGas({
            from: ownerAddress,
            to: bridgeContractAddress,
            value: regFee,
            data: functionData
        });

        let transactionDetails;

        if (network === "bnb") {
            transactionDetails = {
                from: ownerAddress,
                to: bridgeContractAddress,
                gas: gasLimit.toHexString(),
                value: totalFee.toHexString(),
                data: functionData
            };
        } else {
            transactionDetails = {
                from: ownerAddress,
                to: bridgeContractAddress,
                gasLimit: gasLimit.toHexString(),
                value: totalFee.toHexString(),
                data: functionData,
                maxPriorityFeePerGas: maxPriorityFeePerGas.toHexString(),
                maxFeePerGas: gasPrice.toHexString(),
            };

        }
        return {
            result: "OK",
            transaction : transactionDetails
        }
    } catch (e) {
        return {
            result: "FAIL",
            error : e.message
        }
    }

}

Last updated