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