UNPKG

@hashflow/contracts-evm

Version:

EVM Smart Contracts for Solidity

331 lines (330 loc) 10.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.sendETH = exports.padAddressTo32Bytes = exports.HARDHAT_NETWORK_CONFIG_BY_NAME = exports.NETWORK_CONFIG_BY_NAME = exports.WORMHOLE2 = exports.WORMHOLE1 = exports.MONAD_TESTNET = exports.SEPOLIA = exports.ZKSYNC_TESTNET = exports.BNB_TESTNET = exports.MUMBAI = exports.GOERLI = exports.BASE = exports.BNB = exports.POLYGON = exports.AVALANCHE = exports.OPTIMISM = exports.ARBITRUM = exports.ETHEREUM = exports.LOCALHOST = exports.ZERO_ADDRESS = exports.NETWORK_NAMES_EXTENDED = exports.NETWORK_NAMES = exports.WORMHOLE_NETWORK_NAMES = exports.TEST_NETWORK_NAMES = exports.MAIN_NETWORK_NAMES = void 0; exports.MAIN_NETWORK_NAMES = [ 'ethereum', 'optimism', 'arbitrum', 'polygon', 'bnb', 'avalanche', 'base', ]; exports.TEST_NETWORK_NAMES = [ 'mumbai', 'goerli', 'bnb-testnet', 'zksync-testnet', 'sepolia', 'monad-testnet', ]; exports.WORMHOLE_NETWORK_NAMES = ['wormhole1', 'wormhole2']; exports.NETWORK_NAMES = [ ...exports.MAIN_NETWORK_NAMES, ...exports.TEST_NETWORK_NAMES, ]; exports.NETWORK_NAMES_EXTENDED = [ ...exports.NETWORK_NAMES, ...exports.WORMHOLE_NETWORK_NAMES, 'localhost', ]; exports.ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'; exports.LOCALHOST = { chainId: 31337, name: 'localhost', nativeTokenSymbol: 'ETH', nativeTokenName: 'Ether', nativeTokenDecimals: 18, hashflowChainId: 31337, testTokens: true, zksync: false, }; // Mainnets. exports.ETHEREUM = { chainId: 1, name: 'ethereum', nativeTokenSymbol: 'ETH', nativeTokenName: 'Ether', nativeTokenDecimals: 18, hashflowChainId: 1, testTokens: false, weth: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', layerZeroEndpoint: '0x66A71Dcef29A0fFBDBE3c6a460a3B5BC225Cd675', layerZeroChainId: 101, layerZeroNonceContract: '0x5B905fE05F81F3a8ad8B28C6E17779CFAbf76068', wormholeChainId: 2, wormholeEndpoint: '0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B', wormholeConsistency: 1, wormholeFastConsistency: 200, zksync: false, }; exports.ARBITRUM = { chainId: 42161, name: 'arbitrum', nativeTokenSymbol: 'ETH', nativeTokenName: 'Ether', nativeTokenDecimals: 18, hashflowChainId: 2, testTokens: false, weth: '0x82af49447d8a07e3bd95bd0d56f35241523fbab1', layerZeroEndpoint: '0x3c2269811836af69497E5F486A85D7316753cf62', layerZeroChainId: 110, layerZeroNonceContract: '0x5B905fE05F81F3a8ad8B28C6E17779CFAbf76068', wormholeChainId: 23, wormholeEndpoint: '0xa5f208e072434bC67592E4C49C1B991BA79BCA46', wormholeConsistency: 1, wormholeFastConsistency: 200, zksync: false, }; exports.OPTIMISM = { chainId: 10, name: 'optimism', nativeTokenSymbol: 'ETH', nativeTokenName: 'Ether', nativeTokenDecimals: 18, hashflowChainId: 3, testTokens: false, weth: '0x4200000000000000000000000000000000000006', layerZeroEndpoint: '0x3c2269811836af69497E5F486A85D7316753cf62', layerZeroChainId: 111, layerZeroNonceContract: '0x5B905fE05F81F3a8ad8B28C6E17779CFAbf76068', zksync: false, wormholeChainId: 24, wormholeConsistency: 1, wormholeEndpoint: '0xEe91C335eab126dF5fDB3797EA9d6aD93aeC9722', }; exports.AVALANCHE = { chainId: 43114, name: 'avalanche', nativeTokenSymbol: 'AVAX', nativeTokenName: 'Avax', nativeTokenDecimals: 18, hashflowChainId: 4, testTokens: false, weth: '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7', layerZeroEndpoint: '0x3c2269811836af69497E5F486A85D7316753cf62', layerZeroChainId: 106, layerZeroNonceContract: '0x5B905fE05F81F3a8ad8B28C6E17779CFAbf76068', wormholeChainId: 6, wormholeEndpoint: '0x54a8e5f9c4CbA08F9943965859F6c34eAF03E26c', wormholeConsistency: 1, zksync: false, }; exports.POLYGON = { chainId: 137, name: 'polygon', nativeTokenSymbol: 'MATIC', nativeTokenName: 'Matic', nativeTokenDecimals: 18, hashflowChainId: 5, testTokens: false, weth: '0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270', layerZeroEndpoint: '0x3c2269811836af69497E5F486A85D7316753cf62', layerZeroChainId: 109, layerZeroNonceContract: '0x5B905fE05F81F3a8ad8B28C6E17779CFAbf76068', wormholeChainId: 5, wormholeEndpoint: '0x7A4B5a56256163F07b2C80A7cA55aBE66c4ec4d7', wormholeConsistency: 1, // For Polygon, there is no "safe" value. We use "instant". wormholeFastConsistency: 200, zksync: false, }; exports.BNB = { chainId: 56, name: 'bnb', nativeTokenSymbol: 'BNB', nativeTokenName: 'BNB', nativeTokenDecimals: 18, hashflowChainId: 6, testTokens: false, weth: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', layerZeroEndpoint: '0x3c2269811836af69497E5F486A85D7316753cf62', layerZeroChainId: 102, layerZeroNonceContract: '0x5B905fE05F81F3a8ad8B28C6E17779CFAbf76068', wormholeChainId: 4, wormholeEndpoint: '0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B', wormholeConsistency: 15, zksync: false, }; exports.BASE = { chainId: 8453, name: 'base', nativeTokenSymbol: 'ETH', nativeTokenName: 'Ether', nativeTokenDecimals: 18, hashflowChainId: 7, testTokens: false, weth: '0x4200000000000000000000000000000000000006', wormholeChainId: 30, wormholeEndpoint: '0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6', wormholeConsistency: 1, wormholeFastConsistency: 200, zksync: false, }; // Testnets. // DEPRECATED exports.GOERLI = { chainId: 5, name: 'goerli', nativeTokenSymbol: 'ETH', nativeTokenName: 'Ether', nativeTokenDecimals: 18, hashflowChainId: 101, testTokens: false, weth: '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6', layerZeroChainId: 10121, layerZeroEndpoint: '0xbfD2135BFfbb0B5378b56643c2Df8a87552Bfa23', layerZeroNonceContract: '0xe931419cE7f9Ad7Bf9ec8e2657eF6C805A92089c', wormholeChainId: 2, wormholeEndpoint: '0x706abc4E45D419950511e474C7B9Ed348A4a716c', wormholeConsistency: 1, wormholeFastConsistency: 200, zksync: false, }; // DEPRECATED exports.MUMBAI = { chainId: 80001, name: 'mumbai', nativeTokenSymbol: 'MATIC', nativeTokenName: 'Matic', nativeTokenDecimals: 18, hashflowChainId: 103, testTokens: false, weth: '0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889', layerZeroEndpoint: '0xf69186dfBa60DdB133E91E9A4B5673624293d8F8', layerZeroChainId: 10109, layerZeroNonceContract: '0xB3b1f3dB03f7f3A0E49e0F4EEd0fb175B8A2cE15', wormholeChainId: 5, wormholeEndpoint: '0x0CBE91CF822c73C2315FB05100C2F714765d5c20', wormholeConsistency: 1, zksync: false, }; exports.BNB_TESTNET = { chainId: 97, name: 'bnb-testnet', nativeTokenSymbol: 'BNB', nativeTokenName: 'BNB', nativeTokenDecimals: 18, hashflowChainId: 104, testTokens: false, weth: '0xae13d989dac2f0debff460ac112a837c89baa7cd', layerZeroEndpoint: '0x6Fcb97553D41516Cb228ac03FdC8B9a0a9df04A1', layerZeroChainId: 10102, layerZeroNonceContract: '0x318b10788404E23dE2e02d52fA1329BDf6efD1FE', wormholeChainId: 4, wormholeEndpoint: '0x68605AD7b15c732a30b1BbC62BE8F2A509D74b4D', wormholeConsistency: 1, zksync: false, }; // DEPRECATED exports.ZKSYNC_TESTNET = { chainId: 280, name: 'zksync-testnet', nativeTokenSymbol: 'ETH', nativeTokenName: 'Ether', nativeTokenDecimals: 18, hashflowChainId: 105, testTokens: false, weth: '0x2da10a1e27bf85cedd8ffb1abbe97e53391c0295', zksync: true, }; exports.SEPOLIA = { chainId: 11155111, name: 'sepolia', nativeTokenSymbol: 'ETH', nativeTokenName: 'Ether', nativeTokenDecimals: 18, hashflowChainId: 106, testTokens: false, wormholeChainId: 10002, wormholeEndpoint: '0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78', wormholeConsistency: 1, wormholeFastConsistency: 200, weth: '0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14', zksync: false, }; exports.MONAD_TESTNET = { chainId: 10143, name: 'monad-testnet', nativeTokenSymbol: 'MON', nativeTokenName: 'Monad', nativeTokenDecimals: 18, hashflowChainId: 107, testTokens: false, weth: '0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701', zksync: false, }; // Wormhole exports.WORMHOLE1 = { chainId: 1338, name: 'wormhole1', nativeTokenSymbol: 'ETH', nativeTokenName: 'Ether', nativeTokenDecimals: 18, hashflowChainId: 20001, testTokens: true, weth: '0xDDb64fE46a91D46ee29420539FC25FD07c5FEa3E', wormholeEndpoint: '0xC89Ce4735882C9F0f0FE26686c53074E09B0D550', wormholeChainId: 2, wormholeConsistency: 1, wormholeFastConsistency: 1, zksync: false, }; exports.WORMHOLE2 = { chainId: 1397, name: 'wormhole2', nativeTokenSymbol: 'BNB', nativeTokenName: 'BNB', nativeTokenDecimals: 18, hashflowChainId: 20002, testTokens: true, weth: '0xDDb64fE46a91D46ee29420539FC25FD07c5FEa3E', wormholeEndpoint: '0xC89Ce4735882C9F0f0FE26686c53074E09B0D550', wormholeChainId: 4, wormholeConsistency: 1, wormholeFastConsistency: 1, zksync: false, }; exports.NETWORK_CONFIG_BY_NAME = { ethereum: exports.ETHEREUM, arbitrum: exports.ARBITRUM, optimism: exports.OPTIMISM, avalanche: exports.AVALANCHE, polygon: exports.POLYGON, bnb: exports.BNB, base: exports.BASE, goerli: exports.GOERLI, sepolia: exports.SEPOLIA, mumbai: exports.MUMBAI, 'bnb-testnet': exports.BNB_TESTNET, 'monad-testnet': exports.MONAD_TESTNET, 'zksync-testnet': exports.ZKSYNC_TESTNET, }; exports.HARDHAT_NETWORK_CONFIG_BY_NAME = { ...exports.NETWORK_CONFIG_BY_NAME, localhost: exports.LOCALHOST, wormhole1: exports.WORMHOLE1, wormhole2: exports.WORMHOLE2, }; function padAddressTo32Bytes(address) { const strAddress = address.toString(); let paddedAddress = strAddress.indexOf('0x') === -1 ? strAddress : strAddress.slice(2); while (paddedAddress.length < 64) { paddedAddress = `00${paddedAddress}`; } return Buffer.from(paddedAddress, 'hex'); } exports.padAddressTo32Bytes = padAddressTo32Bytes; async function sendETH(signer, value, recipient) { const tx = { from: await signer.getAddress(), to: recipient, value, nonce: await signer.getNonce(), gasLimit: '50000', gasPrice: '100000000000', type: 0, }; return await signer.sendTransaction(tx); } exports.sendETH = sendETH;