From ddf9bcb9ce06c0d696cd96fc8f10d8f240ffbaf7 Mon Sep 17 00:00:00 2001 From: winter256 Date: Thu, 4 Mar 2021 18:03:36 +0200 Subject: [PATCH 01/20] Add deploy script --- deploy/check-js-python.sh | 42 ++++++++++++++++ deploy/deploy.md | 63 ++++++++++++++++++++++++ deploy/deploy.sh | 82 +++++++++++++++++++++++++++++++ deploy/get_deployed_token_addr.py | 6 +++ deploy/make_resource_id.js | 4 ++ 5 files changed, 197 insertions(+) create mode 100755 deploy/check-js-python.sh create mode 100644 deploy/deploy.md create mode 100755 deploy/deploy.sh create mode 100644 deploy/get_deployed_token_addr.py create mode 100644 deploy/make_resource_id.js diff --git a/deploy/check-js-python.sh b/deploy/check-js-python.sh new file mode 100755 index 0000000..dbd1398 --- /dev/null +++ b/deploy/check-js-python.sh @@ -0,0 +1,42 @@ +#!/bin/bash + +set -e + +RES=$( +python3 ./get_deployed_token_addr.py <<- ENDOFMESSAGE +Contract Addresses +================================================================ +Bridge: 0x631218f02a64404759C432416E878d219706f00a +---------------------------------------------------------------- +Erc20 Handler: 0x052288463bb878af95EB9783a9E2908bED6695ad +---------------------------------------------------------------- +Erc721 Handler: 0xD939eE3a8B0072f86Ed4fe00A965ef2f14cb7aaE +---------------------------------------------------------------- +Generic Handler: 0xD3927c9813125053C132c8f9D156098966052e2a +---------------------------------------------------------------- +Erc20: 0xbDbd683D1Df7d015C5cb74315744d4229ee1c103 +---------------------------------------------------------------- +Erc721: 0xf41bD9A78a54704b371C1DAA23323cf48E39dE34 +---------------------------------------------------------------- +Centrifuge Asset: Not Deployed +---------------------------------------------------------------- +WETC: Not Deployed +================================================================ +ENDOFMESSAGE +) + +if [ "$RES" != "0xbDbd683D1Df7d015C5cb74315744d4229ee1c103" ]; then + echo "ERROR: Problem with python3"; + exit 1; +fi + + +RES=$(node make_resource_id.js 0xbDbd683D1Df7d015C5cb74315744d4229ee1c103 1) + +if [ "$RES" != "0x0000000000000000000000bDbd683D1Df7d015C5cb74315744d4229ee1c10301" ]; then + echo "ERROR: Problem with node js"; + exit 1; +fi + + +echo "Nodejs and python3 seem to work" diff --git a/deploy/deploy.md b/deploy/deploy.md new file mode 100644 index 0000000..13b19a8 --- /dev/null +++ b/deploy/deploy.md @@ -0,0 +1,63 @@ +# How to deploy + +## Prepare contracts + +Download contracts, compile them +```bash +cd cb-sol-cli +make install +``` + +## Ensure deploy commands work + +`deploy.sh` also uses `node` and `python3`. To make sure everything works, run: +``` +cd deploy +check-js-python.sh +``` + +## Deploy + +First you need to deploy bridge contract, handlers, etc. + +In `deploy/deploy.sh` you can find functions like `use_binance_testnet()` or `use_rinkeby`. Add similar `use_` functions for the chains you need to deploy to. + +At this point, you only need these functions to have correct URL, CMD, CHAIN_ID, addresses of not-yet-deployed contracts can be omitted. + +Next, at the end of the file, add: + +```bash +use_rinkeby # or other chain +$CMD deploy --all --chainId $CHAIN_ID --relayerThreshold 1 --config true --relayers 0xfD62e4680Df904Eb3afBC4c98c50771eA231D77A +``` + +And run the `deploy.sh` file: +```bash +cd deploy +./deploy.sh +``` + +Don't forget to save the config somewhere, and modify BRIDGE_ADDR, ERC20_HANDLER_ADDR, ERC721_HANDLER_ADDR, GENERIC_HANDLER_ADDR variables in the `use_rinkeby` function! + +## Add resouces + +Once you have your functions set up, add something like this to the end of the file: +```bash +add_resource "use_binance_testnet" "use_rinkeby" 0x4E304b8376904B294CF713425A966dd4c44c0369 "BT2" +``` +The first parameter to `add_resource` is the name of the function to use original chain, the one that already has the token. +The second parameter is the name of the function to use the other chain, in which the corresponding token will be deployed. +The third parameter is the address of the original token in the original chain. +The fourth parameter is the symbol with which the corresponding token will be deployed. + +This command will deploy token, create resource ids, add resources to both chains. + +I think it's best to save all the output in the file somewhere, but what you really need is the last several lines of the output that look like this: +``` +Original token on use_binance_testnt: 0x4E304b8376904B294CF713425A966dd4c44c0369 +Corresponding token on use_rinkeby: 0x21441C83F5C097934694f433f63dE0aDf955Caf2 +RES_ID 0x00000000000000000000004E304b8376904B294CF713425A966dd4c44c036903 +RES_ID_IN_OTHER_CHAIN 0x000000000000000000000021441C83F5C097934694f433f63dE0aDf955Caf201 +``` + +After running these command, check the bridge contracts on block explorer to see if all the transactions didn't fail. diff --git a/deploy/deploy.sh b/deploy/deploy.sh new file mode 100755 index 0000000..6fa65d2 --- /dev/null +++ b/deploy/deploy.sh @@ -0,0 +1,82 @@ +#!/usr/bin/env bash + +set -e + +GAS_LIMIT=6721975 +GAS_PRICE=1000000000 + +# admin private key, the one used to deploy contracts +PRIVATE_KEY= + +use_binance_testnet() { + GAS_PRICE=10000000000 + URL=https://data-seed-prebsc-1-s2.binance.org:8545 + CMD="cb-sol-cli --gasLimit $GAS_LIMIT --gasPrice $GAS_PRICE --networkId 97 --url $URL --privateKey $PRIVATE_KEY" + CHAIN_ID=3 + + # after running deploy_all, don't forget to modify these! + BRIDGE_ADDR=0xfD0301Ff8B53860120eD19D847884EfFdDD0FD88 + ERC20_HANDLER_ADDR=0xEf0f18Bf7e3ddE04E9Cf38F8Bc786E0207A87455 + ERC721_HANDLER_ADDR=0xe45f254e5F461DeC9a863E84CcA9aFA7552B94C5 + GENERIC_HANDLER_ADDR=0x86B8484d24CCaa7870b9a8f32817a23d7d5a424F +} + +use_rinkeby() { + URL=https://rinkeby.infura.io/v3/97131c192c3645fa9ce01756e052e616 + CMD="cb-sol-cli --gasLimit $GAS_LIMIT --gasPrice $GAS_PRICE --networkId 4 --url $URL --privateKey $PRIVATE_KEY" + CHAIN_ID=1 + + # after running deploy_all, don't forget to modify these! + BRIDGE_ADDR=0xc148a61CB324615F48854Ad5b87CfA2a21582D70 + ERC20_HANDLER_ADDR=0x3028d9d921A9cCF27266b47843Cb304109f867Df + ERC721_HANDLER_ADDR=0xa70937884b6AE3684116aAA1Fe17e28A6742163D + GENERIC_HANDLER_ADDR=0x4a39575e6c1eDc861Fda3cfC7001E5D961Cd443d +} + +deploy_erc20() { + $CMD deploy --erc20 --erc20Symbol "$1" --erc20Name "$1" | python3 get_deployed_token_addr.py +} + +add_resource() { + use_original_chain="$1" + use_other_chain="$2" + ERC20_TOKEN_ADDRESS=$3 + ERC20_DEPLOY_SYMBOL=$4 + + echo "We take $ERC20_TOKEN_ADDRESS from $use_original_chain, and a new corresponding" + echo "token with symbol $ERC20_DEPLOY_SYMBOL will be deployed on $use_other_chain" + echo "Testing switching between networks:" + $use_other_chain + $use_original_chain + echo "Gonna sleep for 20 seconds, take your time and check everything.." + sleep 20 + + # deploy token on other chain + $use_other_chain + OTHER_CHAIN_ERC20_ADDR=$(deploy_erc20 "$ERC20_DEPLOY_SYMBOL") + + # compute resource id + $use_original_chain + RES_ID=$(node make_resouce_id.js "$ERC20_TOKEN_ADDRESS" "$CHAIN_ID") + $use_other_chain + RES_ID_IN_OTHER_CHAIN=$(node make_resouce_id.js "$OTHER_CHAIN_ERC20_ADDR" "$CHAIN_ID") + + $use_original_chain + $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_TOKEN_ADDRESS --resourceId $RES_ID + $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_TOKEN_ADDRESS --resourceId $RES_ID_IN_OTHER_CHAIN + + $use_other_chain + $CMD erc20 add-minter --erc20Address $OTHER_CHAIN_ERC20_ADDR --minter $ERC20_HANDLER_ADDR + $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $OTHER_CHAIN_ERC20_ADDR --resourceId $RES_ID + $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $OTHER_CHAIN_ERC20_ADDR --resourceId $RES_ID_IN_OTHER_CHAIN + $CMD bridge set-burn --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --tokenContract $OTHER_CHAIN_ERC20_ADDR + + echo "Original token on $use_original_chain: $ERC20_TOKEN_ADDRESS" + echo "Corresponding token on $use_other_chain: $OTHER_CHAIN_ERC20_ADDR" + echo "RES_ID=$RES_ID" + echo "RES_ID_IN_OTHER_CHAIN=$RES_ID_IN_OTHER_CHAIN" +} + +# HERE IS WHERE REAL COMMANDS START: + +# add something here, don't forget to remove then diff --git a/deploy/get_deployed_token_addr.py b/deploy/get_deployed_token_addr.py new file mode 100644 index 0000000..17478f1 --- /dev/null +++ b/deploy/get_deployed_token_addr.py @@ -0,0 +1,6 @@ +import fileinput + +for line in fileinput.input(): + if line.startswith('Erc20:'): + print(line.split()[1]) + break diff --git a/deploy/make_resource_id.js b/deploy/make_resource_id.js new file mode 100644 index 0000000..47e17f3 --- /dev/null +++ b/deploy/make_resource_id.js @@ -0,0 +1,4 @@ +const addr = process.argv[2]; +const chainId = process.argv[3]; + +console.log('0x' + (addr.slice(2) + chainId.padStart(2, '0')).padStart(64, '0')); From 44408e31daea1cdd30ab1422bd18c1cd3122a2bb Mon Sep 17 00:00:00 2001 From: winter256 Date: Sat, 20 Mar 2021 02:52:04 +0200 Subject: [PATCH 02/20] Latest scripts, usdt deploy --- .gitignore | 3 +- cb-sol-cli/Makefile | 7 +- cb-sol-cli/cmd/deploy.js | 7 +- cb-sol-cli/cmd/erc20.js | 70 +++ checks/abi/Pair.json | 713 +++++++++++++++++++++++++++++++ checks/package.json | 5 + checks/src/config.js | 8 + checks/src/get-chain-id.js | 9 + checks/src/print-pairs-tokens.js | 27 ++ checks/yarn.lock | 463 ++++++++++++++++++++ deploy/deploy.sh | 127 +++--- 11 files changed, 1370 insertions(+), 69 deletions(-) create mode 100644 checks/abi/Pair.json create mode 100644 checks/package.json create mode 100644 checks/src/config.js create mode 100644 checks/src/get-chain-id.js create mode 100644 checks/src/print-pairs-tokens.js create mode 100644 checks/yarn.lock diff --git a/.gitignore b/.gitignore index d8b1cc5..b001652 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .idea/ node_modules/ -chainbridge-solidity/ \ No newline at end of file +chainbridge-solidity/ +.DS_Store diff --git a/cb-sol-cli/Makefile b/cb-sol-cli/Makefile index bff0fdf..95e5505 100644 --- a/cb-sol-cli/Makefile +++ b/cb-sol-cli/Makefile @@ -1,5 +1,6 @@ -SOL_URL=https://github.com/ChainSafe/chainbridge-solidity -SOL_VERSION="v1.0.0" +SOL_URL=https://github.com/zeroexchange/chainbridge-solidity +# version with modified ERC20 to enable setting decimals in constructor +SOL_VERSION="4724a6219be1ba5b5983e62ca45765d89a6e0829" fetch-contracts: @echo " > \033[32mFetching chainbridge-solidity contracts... \033[0m " @@ -13,4 +14,4 @@ install: fetch-contracts compile npm link . clean: - rm -rf chainbridge-solidity/ \ No newline at end of file + rm -rf chainbridge-solidity/ diff --git a/cb-sol-cli/cmd/deploy.js b/cb-sol-cli/cmd/deploy.js index 1f89f86..b1a752e 100644 --- a/cb-sol-cli/cmd/deploy.js +++ b/cb-sol-cli/cmd/deploy.js @@ -18,6 +18,7 @@ const deployCmd = new Command("deploy") .option('--erc20', 'Deploy erc20 contract') .option('--erc20Symbol ', 'Name for the erc20 contract', "") .option('--erc20Name ', 'Symbol for the erc20 contract', "") + .option('--erc20Decimals ', 'Number of decimals for ERC20 token', 18) .option('--erc721', 'Deploy erc721 contract') .option('--centAsset', 'Deploy centrifuge asset contract') .option('--wetc', 'Deploy wrapped ETC Erc20 contract') @@ -89,8 +90,8 @@ const createConfig = (args) => { config.erc20Handler = args.erc20HandlerContract; config.erc721Handler = args.erc721HandlerContract; config.genericHandler = args.genericHandlerContract; - config.gasLimit = args.gasLimit.toNumber(); - config.maxGasPrice = args.gasPrice.toNumber(); + config.gasLimit = eval(args.gasLimit) + config.maxGasPrice = eval(args.gasPrice) config.startBlock = "0" config.http = "false" config.relayers = args.relayers; @@ -158,7 +159,7 @@ async function deployBridgeContract(args) { async function deployERC20(args) { const factory = new ethers.ContractFactory(constants.ContractABIs.Erc20Mintable.abi, constants.ContractABIs.Erc20Mintable.bytecode, args.wallet); - const contract = await factory.deploy(args.erc20Name, args.erc20Symbol, { gasPrice: args.gasPrice, gasLimit: args.gasLimit}); + const contract = await factory.deploy(args.erc20Name, args.erc20Symbol, args.erc20Decimals, { gasPrice: args.gasPrice, gasLimit: args.gasLimit}); await contract.deployed(); args.erc20Contract = contract.address console.log("✓ ERC20 contract deployed") diff --git a/cb-sol-cli/cmd/erc20.js b/cb-sol-cli/cmd/erc20.js index b684d0f..2a79ecf 100644 --- a/cb-sol-cli/cmd/erc20.js +++ b/cb-sol-cli/cmd/erc20.js @@ -30,6 +30,70 @@ const addMinterCmd = new Command("add-minter") await waitForTx(args.provider, tx.hash) }) +const isMinterCmd = new Command("is-minter") + .description("Check if address is minter to the contract") + .option('--erc20Address
', 'ERC20 contract address', constants.ERC20_ADDRESS) + .option('--minter
', 'Minter address', constants.relayerAddresses[1]) + .action(async function(args) { + await setupParentArgs(args, args.parent.parent) + const erc20Instance = new ethers.Contract(args.erc20Address, constants.ContractABIs.Erc20Mintable.abi, args.wallet); + let MINTER_ROLE = await erc20Instance.MINTER_ROLE(); + const res = await erc20Instance.hasRole(MINTER_ROLE, args.minter); + console.log(`${args.minter} ${res ? 'IS' : 'is NOT'} minter for ${args.erc20Address}`); + }) + +const removeMinterCmd = new Command("remove-minter") + .description("Remove a minter to the contract") + .option('--erc20Address
', 'ERC20 contract address', constants.ERC20_ADDRESS) + .option('--minter
', 'Minter address', constants.relayerAddresses[1]) + .action(async function(args) { + await setupParentArgs(args, args.parent.parent) + const erc20Instance = new ethers.Contract(args.erc20Address, constants.ContractABIs.Erc20Mintable.abi, args.wallet); + let MINTER_ROLE = await erc20Instance.MINTER_ROLE(); + log(args, `Removing ${args.minter} as a minter on contract ${args.erc20Address}`); + const tx = await erc20Instance.revokeRole(MINTER_ROLE, args.minter); + await waitForTx(args.provider, tx.hash) + }) + +const addAdminCmd = new Command("add-admin") + .description("Add a new admin to the contract") + .option('--erc20Address
', 'ERC20 contract address', constants.ERC20_ADDRESS) + .option('--admin
', 'New admin address', constants.relayerAddresses[1]) + .action(async function(args) { + await setupParentArgs(args, args.parent.parent) + const erc20Instance = new ethers.Contract(args.erc20Address, constants.ContractABIs.Erc20Mintable.abi, args.wallet); + const ADMIN_ROLE = await erc20Instance.DEFAULT_ADMIN_ROLE(); + log(args, `Adding ${args.admin} as a admin on contract ${args.erc20Address}`); + const tx = await erc20Instance.grantRole(ADMIN_ROLE, args.admin); + await waitForTx(args.provider, tx.hash) + }) + +const removeAdminCmd = new Command("remove-admin") + .description("Remove admin from the contract") + .option('--erc20Address
', 'ERC20 contract address', constants.ERC20_ADDRESS) + .option('--admin
', 'admin address to be removed', constants.relayerAddresses[1]) + .action(async function(args) { + await setupParentArgs(args, args.parent.parent) + const erc20Instance = new ethers.Contract(args.erc20Address, constants.ContractABIs.Erc20Mintable.abi, args.wallet); + const ADMIN_ROLE = await erc20Instance.DEFAULT_ADMIN_ROLE(); + log(args, `Removing ${args.admin} as a admin on contract ${args.erc20Address}`); + const tx = await erc20Instance.revokeRole(ADMIN_ROLE, args.admin); + await waitForTx(args.provider, tx.hash) + }) + +const isAdminCmd = new Command("is-admin") + .description("Check if address is admin to the contract") + .option('--erc20Address
', 'ERC20 contract address', constants.ERC20_ADDRESS) + .option('--admin
', 'admin address', constants.relayerAddresses[1]) + .action(async function(args) { + await setupParentArgs(args, args.parent.parent) + const erc20Instance = new ethers.Contract(args.erc20Address, constants.ContractABIs.Erc20Mintable.abi, args.wallet); + const ADMIN_ROLE = await erc20Instance.DEFAULT_ADMIN_ROLE(); + const res = await erc20Instance.hasRole(ADMIN_ROLE, args.admin); + console.log(`${args.admin} ${res ? 'IS' : 'is NOT'} admin for ${args.erc20Address}`); + }) + + const approveCmd = new Command("approve") .description("Approve tokens for transfer") .option('--amount ', "Amount to transfer", 1) @@ -156,5 +220,11 @@ erc20Cmd.addCommand(balanceCmd) erc20Cmd.addCommand(allowanceCmd) erc20Cmd.addCommand(wetcDepositCmd) erc20Cmd.addCommand(proposalDataHashCmd) +erc20Cmd.addCommand(removeMinterCmd) +erc20Cmd.addCommand(addAdminCmd) +erc20Cmd.addCommand(removeAdminCmd) +erc20Cmd.addCommand(isMinterCmd) +erc20Cmd.addCommand(isAdminCmd) + module.exports = erc20Cmd diff --git a/checks/abi/Pair.json b/checks/abi/Pair.json new file mode 100644 index 0000000..113b80d --- /dev/null +++ b/checks/abi/Pair.json @@ -0,0 +1,713 @@ +[ + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "Burn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "name": "Mint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0In", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1In", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0Out", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1Out", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "Swap", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint112", + "name": "reserve0", + "type": "uint112" + }, + { + "indexed": false, + "internalType": "uint112", + "name": "reserve1", + "type": "uint112" + } + ], + "name": "Sync", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "constant": true, + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "MINIMUM_LIQUIDITY", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "burn", + "outputs": [ + { + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getReserves", + "outputs": [ + { + "internalType": "uint112", + "name": "_reserve0", + "type": "uint112" + }, + { + "internalType": "uint112", + "name": "_reserve1", + "type": "uint112" + }, + { + "internalType": "uint32", + "name": "_blockTimestampLast", + "type": "uint32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "_token0", + "type": "address" + }, + { + "internalType": "address", + "name": "_token1", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "kLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "uint256", + "name": "liquidity", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "price0CumulativeLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "price1CumulativeLast", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "skim", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "amount0Out", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Out", + "type": "uint256" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "swap", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "sync", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token0", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "token1", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/checks/package.json b/checks/package.json new file mode 100644 index 0000000..ed01acb --- /dev/null +++ b/checks/package.json @@ -0,0 +1,5 @@ +{ + "devDependencies": { + "ethers": "^5.0.32" + } +} diff --git a/checks/src/config.js b/checks/src/config.js new file mode 100644 index 0000000..f7dc447 --- /dev/null +++ b/checks/src/config.js @@ -0,0 +1,8 @@ +module.exports = { + BSC: { + rpcUrl: 'https://bsc-dataseed2.binance.org', + }, + AVA: { + rpcUrl: 'https://api.avax.network/ext/bc/C/rpc', + }, +}; diff --git a/checks/src/get-chain-id.js b/checks/src/get-chain-id.js new file mode 100644 index 0000000..ce8da4e --- /dev/null +++ b/checks/src/get-chain-id.js @@ -0,0 +1,9 @@ +const ethers = require('ethers'); + +const config = require('./config.js').AVA; + +(async () => { + const provider = new ethers.providers.JsonRpcProvider(config.rpcUrl); + const { chainId } = await provider.getNetwork(); + console.log(chainId); +})(); diff --git a/checks/src/print-pairs-tokens.js b/checks/src/print-pairs-tokens.js new file mode 100644 index 0000000..95d2989 --- /dev/null +++ b/checks/src/print-pairs-tokens.js @@ -0,0 +1,27 @@ +const ethers = require('ethers'); + +const pairAbi = require('../abi/Pair.json'); +const erc20Abi = require('../../cb-sol-cli/chainbridge-solidity/build/contracts/ERC20PresetMinterPauser.json').abi; + +const config = require('./config.js').BSC; + +const pairs = [ + '0x955492a096c03a9ddee5d2825f95d82dd3ae0683', + '0xa633aa5fcfa828bb6b72541bf6c559da0b9c4a19', + '0x060ed3b26c183c32e2b2f82daebc3e3d19b50065', + '0x4899309c615b527c9a6f0ba47abb0473ef6f1f3c', + '0x8f6bffd12ecc303bf43504c9fbe115e1737c63ef', + '0x7ae9e9ddbe4cabbd9d3d03a499f625adbcc50736', + '0x71a9e8b1e9d77aa4546e58d64a02902d102c2ca7', +]; + +(async () => { + const provider = new ethers.providers.JsonRpcProvider(config.rpcUrl); + for (const pairAddr of pairs) { + const pairContract = new ethers.Contract(pairAddr, pairAbi, provider); + const addresses = [await pairContract.token0(), await pairContract.token1()]; + const contracts = addresses.map(addr => new ethers.Contract(addr, erc20Abi, provider)); + const symbols = await Promise.all(contracts.map(contract => contract.symbol())); + console.log(`Pair ${pairAddr} has tokens ${addresses[0]} / ${addresses[1]} and symbols ${symbols[0]} / ${symbols[1]}`); + } +})(); diff --git a/checks/yarn.lock b/checks/yarn.lock new file mode 100644 index 0000000..18c8422 --- /dev/null +++ b/checks/yarn.lock @@ -0,0 +1,463 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ethersproject/abi@5.0.13", "@ethersproject/abi@^5.0.10": + version "5.0.13" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.13.tgz#600a559c3730467716595658beaa2894b4352bcc" + integrity sha512-2coOH3D7ra1lwamKEH0HVc+Jbcsw5yfeCgmY8ekhCDualEiyyovD2qDcMBBcY3+kjoLHVTmo7ost6MNClxdOrg== + dependencies: + "@ethersproject/address" "^5.0.9" + "@ethersproject/bignumber" "^5.0.13" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/constants" "^5.0.8" + "@ethersproject/hash" "^5.0.10" + "@ethersproject/keccak256" "^5.0.7" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/properties" "^5.0.7" + "@ethersproject/strings" "^5.0.8" + +"@ethersproject/abstract-provider@5.0.10", "@ethersproject/abstract-provider@^5.0.8": + version "5.0.10" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.0.10.tgz#a533aed39a5f27312745c8c4c40fa25fc884831c" + integrity sha512-OSReY5iz94iIaPlRvLiJP8YVIvQLx4aUvMMnHWSaA/vTU8QHZmgNlt4OBdYV1+aFY8Xl+VRYiWBHq72ZDKXXCQ== + dependencies: + "@ethersproject/bignumber" "^5.0.13" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/networks" "^5.0.7" + "@ethersproject/properties" "^5.0.7" + "@ethersproject/transactions" "^5.0.9" + "@ethersproject/web" "^5.0.12" + +"@ethersproject/abstract-signer@5.0.14", "@ethersproject/abstract-signer@^5.0.10": + version "5.0.14" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.0.14.tgz#30ef912b0f86599d90fdffc65c110452e7b55cf1" + integrity sha512-JztBwVO7o5OHLh2vyjordlS4/1EjRyaECtc8vPdXTF1i4dXN+J0coeRoPN6ZFbBvi/YbaB6br2fvqhst1VQD/g== + dependencies: + "@ethersproject/abstract-provider" "^5.0.8" + "@ethersproject/bignumber" "^5.0.13" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/properties" "^5.0.7" + +"@ethersproject/address@5.0.11", "@ethersproject/address@^5.0.9": + version "5.0.11" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.0.11.tgz#12022e8c590c33939beb5ab18b401ecf585eac59" + integrity sha512-Et4GBdD8/tsBGjCEOKee9upN29qjL5kbRcmJifb4Penmiuh9GARXL2/xpXvEp5EW+EIW/rfCHFJrkYBgoQFQBw== + dependencies: + "@ethersproject/bignumber" "^5.0.13" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/keccak256" "^5.0.7" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/rlp" "^5.0.7" + +"@ethersproject/base64@5.0.9", "@ethersproject/base64@^5.0.7": + version "5.0.9" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.0.9.tgz#bb1f35d3dba92082a574d5e2418f9202a0a1a7e6" + integrity sha512-37RBz5LEZ9SlTNGiWCYFttnIN9J7qVs9Xo2EbqGqDH5LfW9EIji66S+YDMpXVo1zWDax1FkEldAoatxHK2gfgA== + dependencies: + "@ethersproject/bytes" "^5.0.9" + +"@ethersproject/basex@5.0.9", "@ethersproject/basex@^5.0.7": + version "5.0.9" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.0.9.tgz#00d727a031bac563cb8bb900955206f1bf3cf1fc" + integrity sha512-FANswl1IN3PS0eltQxH2aM2+utPrkLUVG4XVFi6SafRG9EpAqXCgycxC8PU90mPGhigYTpg9cnTB5mCZ6ejQjw== + dependencies: + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/properties" "^5.0.7" + +"@ethersproject/bignumber@5.0.15", "@ethersproject/bignumber@^5.0.13": + version "5.0.15" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.0.15.tgz#b089b3f1e0381338d764ac1c10512f0c93b184ed" + integrity sha512-MTADqnyacvdRwtKh7o9ujwNDSM1SDJjYDMYAzjIgjoi9rh6TY4suMbhCa3i2vh3SUXiXSICyTI8ui+NPdrZ9Lw== + dependencies: + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/logger" "^5.0.8" + bn.js "^4.4.0" + +"@ethersproject/bytes@5.0.11", "@ethersproject/bytes@^5.0.9": + version "5.0.11" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.0.11.tgz#21118e75b1d00db068984c15530e316021101276" + integrity sha512-D51plLYY5qF05AsoVQwIZVLqlBkaTPVHVP/1WmmBIWyHB0cRW0C9kh0kx5Exo51rB63Hk8PfHxc7SmpoaQFEyg== + dependencies: + "@ethersproject/logger" "^5.0.8" + +"@ethersproject/constants@5.0.10", "@ethersproject/constants@^5.0.8": + version "5.0.10" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.0.10.tgz#eb0c604fbc44c53ba9641eed31a1d0c9e1ebcadc" + integrity sha512-OSo8jxkHLDXieCy8bgOFR7lMfgPxEzKvSDdP+WAWHCDM8+orwch0B6wzkTmiQFgryAtIctrBt5glAdJikZ3hGw== + dependencies: + "@ethersproject/bignumber" "^5.0.13" + +"@ethersproject/contracts@5.0.12": + version "5.0.12" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.0.12.tgz#6d488db46221258399dfe80b89bf849b3afd7897" + integrity sha512-srijy31idjz8bE+gL1I6IRj2H4I9dUwfQ+QroLrIgNdGArqY8y2iFUKa3QTy+JBX26fJsdYiCQi1kKkaNpnMpQ== + dependencies: + "@ethersproject/abi" "^5.0.10" + "@ethersproject/abstract-provider" "^5.0.8" + "@ethersproject/abstract-signer" "^5.0.10" + "@ethersproject/address" "^5.0.9" + "@ethersproject/bignumber" "^5.0.13" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/constants" "^5.0.8" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/properties" "^5.0.7" + +"@ethersproject/hash@5.0.12", "@ethersproject/hash@^5.0.10": + version "5.0.12" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.0.12.tgz#1074599f7509e2ca2bb7a3d4f4e39ab3a796da42" + integrity sha512-kn4QN+fhNFbUgX3XZTZUaQixi0oyfIEY+hfW+KtkHu+rq7dV76oAIvaLEEynu1/4npOL38E4X4YI42gGZk+C0Q== + dependencies: + "@ethersproject/abstract-signer" "^5.0.10" + "@ethersproject/address" "^5.0.9" + "@ethersproject/bignumber" "^5.0.13" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/keccak256" "^5.0.7" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/properties" "^5.0.7" + "@ethersproject/strings" "^5.0.8" + +"@ethersproject/hdnode@5.0.10", "@ethersproject/hdnode@^5.0.8": + version "5.0.10" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.0.10.tgz#f7cdf154bf5d104c76dce2940745fc71d9e7eb1b" + integrity sha512-ZLwMtIcXK7xz2lSITDCl40W04CtRq4K9NwBxhCzdzPdaz6XnoJMwGz2YMVLg+8ksseq+RYtTwIIXtlK6vyvQyg== + dependencies: + "@ethersproject/abstract-signer" "^5.0.10" + "@ethersproject/basex" "^5.0.7" + "@ethersproject/bignumber" "^5.0.13" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/pbkdf2" "^5.0.7" + "@ethersproject/properties" "^5.0.7" + "@ethersproject/sha2" "^5.0.7" + "@ethersproject/signing-key" "^5.0.8" + "@ethersproject/strings" "^5.0.8" + "@ethersproject/transactions" "^5.0.9" + "@ethersproject/wordlists" "^5.0.8" + +"@ethersproject/json-wallets@5.0.12", "@ethersproject/json-wallets@^5.0.10": + version "5.0.12" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.0.12.tgz#8946a0fcce1634b636313a50330b7d30a24996e8" + integrity sha512-nac553zGZnOewpjlqbfy7WBl8m3y7qudzRsI2dCxrediYtPIVIs9f6Pbnou8vDmmp8X4/U4W788d+Ma88o+Gbg== + dependencies: + "@ethersproject/abstract-signer" "^5.0.10" + "@ethersproject/address" "^5.0.9" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/hdnode" "^5.0.8" + "@ethersproject/keccak256" "^5.0.7" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/pbkdf2" "^5.0.7" + "@ethersproject/properties" "^5.0.7" + "@ethersproject/random" "^5.0.7" + "@ethersproject/strings" "^5.0.8" + "@ethersproject/transactions" "^5.0.9" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/keccak256@5.0.9", "@ethersproject/keccak256@^5.0.7": + version "5.0.9" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.0.9.tgz#ca0d86e4af56c13b1ef25e533bde3e96d28f647d" + integrity sha512-zhdUTj6RGtCJSgU+bDrWF6cGbvW453LoIC1DSNWrTlXzC7WuH4a+EiPrgc7/kNoRxerKuA/cxYlI8GwNtVtDlw== + dependencies: + "@ethersproject/bytes" "^5.0.9" + js-sha3 "0.5.7" + +"@ethersproject/logger@5.0.10", "@ethersproject/logger@^5.0.8": + version "5.0.10" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.0.10.tgz#fd884688b3143253e0356ef92d5f22d109d2e026" + integrity sha512-0y2T2NqykDrbPM3Zw9RSbPkDOxwChAL8detXaom76CfYoGxsOnRP/zTX8OUAV+x9LdwzgbWvWmeXrc0M7SuDZw== + +"@ethersproject/networks@5.0.9", "@ethersproject/networks@^5.0.7": + version "5.0.9" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.0.9.tgz#ec5da11e4d4bfd69bec4eaebc9ace33eb9569279" + integrity sha512-L8+VCQwArBLGkxZb/5Ns/OH/OxP38AcaveXIxhUTq+VWpXYjrObG3E7RDQIKkUx1S1IcQl/UWTz5w4DK0UitJg== + dependencies: + "@ethersproject/logger" "^5.0.8" + +"@ethersproject/pbkdf2@5.0.9", "@ethersproject/pbkdf2@^5.0.7": + version "5.0.9" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.0.9.tgz#be39c7f0a66c0d3cb1ad1dbb12a78e9bcdf9b5ae" + integrity sha512-ItE/wQ/WVw/ajEHPUVgfu0aEvksPgOQc+278bke8sGKnGO3ppjmqp0MHh17tHc1EBTzJbSms5aLIqc56qZ/oiA== + dependencies: + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/sha2" "^5.0.7" + +"@ethersproject/properties@5.0.9", "@ethersproject/properties@^5.0.7": + version "5.0.9" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.0.9.tgz#d7aae634680760136ea522e25c3ef043ec15b5c2" + integrity sha512-ZCjzbHYTw+rF1Pn8FDCEmx3gQttwIHcm/6Xee8g/M3Ga3SfW4tccNMbs5zqnBH0E4RoOPaeNgyg1O68TaF0tlg== + dependencies: + "@ethersproject/logger" "^5.0.8" + +"@ethersproject/providers@5.0.24": + version "5.0.24" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.0.24.tgz#4c638a029482d052faa18364b5e0e2d3ddd9c0cb" + integrity sha512-M4Iw1r4gGJkt7ZUa++iREuviKL/DIpmIMsaUlVlXtV+ZrUXeN8xQ3zOTrbz7R4h9W9oljBZM7i4D3Kn1krJ30A== + dependencies: + "@ethersproject/abstract-provider" "^5.0.8" + "@ethersproject/abstract-signer" "^5.0.10" + "@ethersproject/address" "^5.0.9" + "@ethersproject/basex" "^5.0.7" + "@ethersproject/bignumber" "^5.0.13" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/constants" "^5.0.8" + "@ethersproject/hash" "^5.0.10" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/networks" "^5.0.7" + "@ethersproject/properties" "^5.0.7" + "@ethersproject/random" "^5.0.7" + "@ethersproject/rlp" "^5.0.7" + "@ethersproject/sha2" "^5.0.7" + "@ethersproject/strings" "^5.0.8" + "@ethersproject/transactions" "^5.0.9" + "@ethersproject/web" "^5.0.12" + bech32 "1.1.4" + ws "7.2.3" + +"@ethersproject/random@5.0.9", "@ethersproject/random@^5.0.7": + version "5.0.9" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.0.9.tgz#1903d4436ba66e4c8ac77968b16f756abea3a0d0" + integrity sha512-DANG8THsKqFbJOantrxumtG6gyETNE54VfbsWa+SQAT8WKpDo9W/X5Zhh73KuhClaey1UI32uVmISZeq/Zxn1A== + dependencies: + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/logger" "^5.0.8" + +"@ethersproject/rlp@5.0.9", "@ethersproject/rlp@^5.0.7": + version "5.0.9" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.0.9.tgz#da205bf8a34d3c3409eb73ddd237130a4b376aff" + integrity sha512-ns1U7ZMVeruUW6JXc4om+1w3w4ynHN/0fpwmeNTsAjwGKoF8SAUgue6ylKpHKWSti2idx7jDxbn8hNNFHk67CA== + dependencies: + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/logger" "^5.0.8" + +"@ethersproject/sha2@5.0.9", "@ethersproject/sha2@^5.0.7": + version "5.0.9" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.0.9.tgz#41275ee03e6e1660b3c997754005e089e936adc6" + integrity sha512-5FH4s47gM7N1fFAYQ1+m7aX0SbLg0Xr+6tvqndmNqc382/qBIbzXiGlUookrsjlPb6gLNurnTssCXjNM72J6lQ== + dependencies: + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/logger" "^5.0.8" + hash.js "1.1.3" + +"@ethersproject/signing-key@5.0.11", "@ethersproject/signing-key@^5.0.8": + version "5.0.11" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.0.11.tgz#19fc5c4597e18ad0a5efc6417ba5b74069fdd2af" + integrity sha512-Jfcru/BGwdkXhLxT+8WCZtFy7LL0TPFZw05FAb5asxB/MyVsEfNdNxGDtjVE9zXfmRSPe/EusXYY4K7wcygOyQ== + dependencies: + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/properties" "^5.0.7" + elliptic "6.5.4" + +"@ethersproject/solidity@5.0.10": + version "5.0.10" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.0.10.tgz#128c9289761cf83d81ff62a1195d6079a924a86c" + integrity sha512-8OG3HLqynWXDA6mVIHuHfF/ojTTwBahON7hc9GAKCqglzXCkVA3OpyxOJXPzjHClRIAUUiU7r9oy9Z/nsjtT/g== + dependencies: + "@ethersproject/bignumber" "^5.0.13" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/keccak256" "^5.0.7" + "@ethersproject/sha2" "^5.0.7" + "@ethersproject/strings" "^5.0.8" + +"@ethersproject/strings@5.0.10", "@ethersproject/strings@^5.0.8": + version "5.0.10" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.0.10.tgz#ddce1e9724f4ac4f3f67e0cac0b48748e964bfdb" + integrity sha512-KAeoS1tZ9/5ECXiIZA6S6hywbD0so2VmuW+Wfyo5EDXeyZ6Na1nxTPhTnW7voQmjbeYJffCrOc0qLFJeylyg7w== + dependencies: + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/constants" "^5.0.8" + "@ethersproject/logger" "^5.0.8" + +"@ethersproject/transactions@5.0.11", "@ethersproject/transactions@^5.0.9": + version "5.0.11" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.0.11.tgz#b31df5292f47937136a45885d6ee6112477c13df" + integrity sha512-ftsRvR9+gQp7L63F6+XmstvsZ4w8GtWvQB08e/zB+oB86Fnhq8+i/tkgpJplSHC8I/qgiCisva+M3u2GVhDFPA== + dependencies: + "@ethersproject/address" "^5.0.9" + "@ethersproject/bignumber" "^5.0.13" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/constants" "^5.0.8" + "@ethersproject/keccak256" "^5.0.7" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/properties" "^5.0.7" + "@ethersproject/rlp" "^5.0.7" + "@ethersproject/signing-key" "^5.0.8" + +"@ethersproject/units@5.0.11": + version "5.0.11" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.0.11.tgz#f82f6e353ac0d6fa43b17337790f1f9aa72cb4c8" + integrity sha512-nOSPmcCWyB/dwoBRhhTtPGCsTbiXqmc7Q0Adwvafc432AC7hy3Fj3IFZtnSXsbtJ/GdHCIUIoA8gtvxSsFuBJg== + dependencies: + "@ethersproject/bignumber" "^5.0.13" + "@ethersproject/constants" "^5.0.8" + "@ethersproject/logger" "^5.0.8" + +"@ethersproject/wallet@5.0.12": + version "5.0.12" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.0.12.tgz#bfb96f95e066b4b1b4591c4615207b87afedda8b" + integrity sha512-rboJebGf47/KPZrKZQdYg9BAYuXbc/OwcUyML1K1f2jnJeo1ObWV11U1PAWTjTbhhSy6/Fg+34GO2yMb5Dt1Rw== + dependencies: + "@ethersproject/abstract-provider" "^5.0.8" + "@ethersproject/abstract-signer" "^5.0.10" + "@ethersproject/address" "^5.0.9" + "@ethersproject/bignumber" "^5.0.13" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/hash" "^5.0.10" + "@ethersproject/hdnode" "^5.0.8" + "@ethersproject/json-wallets" "^5.0.10" + "@ethersproject/keccak256" "^5.0.7" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/properties" "^5.0.7" + "@ethersproject/random" "^5.0.7" + "@ethersproject/signing-key" "^5.0.8" + "@ethersproject/transactions" "^5.0.9" + "@ethersproject/wordlists" "^5.0.8" + +"@ethersproject/web@5.0.14", "@ethersproject/web@^5.0.12": + version "5.0.14" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.0.14.tgz#6e7bebdd9fb967cb25ee60f44d9218dc0803bac4" + integrity sha512-QpTgplslwZ0Sp9oKNLoRuS6TKxnkwfaEk3gr7zd7XLF8XBsYejsrQO/03fNfnMx/TAT/RR6WEw/mbOwpRSeVRA== + dependencies: + "@ethersproject/base64" "^5.0.7" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/properties" "^5.0.7" + "@ethersproject/strings" "^5.0.8" + +"@ethersproject/wordlists@5.0.10", "@ethersproject/wordlists@^5.0.8": + version "5.0.10" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.0.10.tgz#177b9a0b4d72b9c4f304d08b36612d6c60e9b896" + integrity sha512-jWsEm1iJzpg9SCXnNfFz+tcp4Ofzv0TJb6mj+soCNcar9GcT0yGz62ZsHC3pLQWaF4LkCzGwRJHJTXKjHQfG1A== + dependencies: + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/hash" "^5.0.10" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/properties" "^5.0.7" + "@ethersproject/strings" "^5.0.8" + +aes-js@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" + integrity sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0= + +bech32@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== + +bn.js@^4.11.9, bn.js@^4.4.0: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +elliptic@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +ethers@^5.0.32: + version "5.0.32" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.0.32.tgz#f009970be31d96a589bf0ce597a39c10c7e297a6" + integrity sha512-rORfGWR0HsA4pjKMMcWZorw12DHsXqfIAuPVHJsXt+vI24jvXcVqx+rLsSvgOoLdaCMdxiN5qlIq2+4axKG31g== + dependencies: + "@ethersproject/abi" "5.0.13" + "@ethersproject/abstract-provider" "5.0.10" + "@ethersproject/abstract-signer" "5.0.14" + "@ethersproject/address" "5.0.11" + "@ethersproject/base64" "5.0.9" + "@ethersproject/basex" "5.0.9" + "@ethersproject/bignumber" "5.0.15" + "@ethersproject/bytes" "5.0.11" + "@ethersproject/constants" "5.0.10" + "@ethersproject/contracts" "5.0.12" + "@ethersproject/hash" "5.0.12" + "@ethersproject/hdnode" "5.0.10" + "@ethersproject/json-wallets" "5.0.12" + "@ethersproject/keccak256" "5.0.9" + "@ethersproject/logger" "5.0.10" + "@ethersproject/networks" "5.0.9" + "@ethersproject/pbkdf2" "5.0.9" + "@ethersproject/properties" "5.0.9" + "@ethersproject/providers" "5.0.24" + "@ethersproject/random" "5.0.9" + "@ethersproject/rlp" "5.0.9" + "@ethersproject/sha2" "5.0.9" + "@ethersproject/signing-key" "5.0.11" + "@ethersproject/solidity" "5.0.10" + "@ethersproject/strings" "5.0.10" + "@ethersproject/transactions" "5.0.11" + "@ethersproject/units" "5.0.11" + "@ethersproject/wallet" "5.0.12" + "@ethersproject/web" "5.0.14" + "@ethersproject/wordlists" "5.0.10" + +hash.js@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" + integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.0" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +inherits@^2.0.3, inherits@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +js-sha3@0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" + integrity sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc= + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +scrypt-js@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +ws@7.2.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.3.tgz#a5411e1fb04d5ed0efee76d26d5c46d830c39b46" + integrity sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ== diff --git a/deploy/deploy.sh b/deploy/deploy.sh index 6fa65d2..45eeb48 100755 --- a/deploy/deploy.sh +++ b/deploy/deploy.sh @@ -1,82 +1,85 @@ #!/usr/bin/env bash -set -e +set -eux -GAS_LIMIT=6721975 -GAS_PRICE=1000000000 - -# admin private key, the one used to deploy contracts -PRIVATE_KEY= - -use_binance_testnet() { +use_binance_mainnet() { + # admin private key, the one used to deploy contracts + PRIVATE_KEY=$BSC_PRIVATE_KEY GAS_PRICE=10000000000 - URL=https://data-seed-prebsc-1-s2.binance.org:8545 - CMD="cb-sol-cli --gasLimit $GAS_LIMIT --gasPrice $GAS_PRICE --networkId 97 --url $URL --privateKey $PRIVATE_KEY" + URL=https://bsc-dataseed2.binance.org + NETWORK_ID=56 + CMD="cb-sol-cli --gasLimit $GAS_LIMIT --gasPrice $GAS_PRICE --networkId $NETWORK_ID --url $URL --privateKey $PRIVATE_KEY" CHAIN_ID=3 # after running deploy_all, don't forget to modify these! - BRIDGE_ADDR=0xfD0301Ff8B53860120eD19D847884EfFdDD0FD88 - ERC20_HANDLER_ADDR=0xEf0f18Bf7e3ddE04E9Cf38F8Bc786E0207A87455 - ERC721_HANDLER_ADDR=0xe45f254e5F461DeC9a863E84CcA9aFA7552B94C5 - GENERIC_HANDLER_ADDR=0x86B8484d24CCaa7870b9a8f32817a23d7d5a424F + BRIDGE_ADDR=0xF82B6C89A1D3340733eA4f74F9D111b5D7127876 + ERC20_HANDLER_ADDR=0xD02408A62ED3708429ccFb04d9dEA302884ab6a7 + ERC721_HANDLER_ADDR=0xFA25795f7da372463ac90BeD787f9437688c438C + GENERIC_HANDLER_ADDR=0x0b5C2c80eC91caA336635D4BBF45c383b86A9b31 } -use_rinkeby() { - URL=https://rinkeby.infura.io/v3/97131c192c3645fa9ce01756e052e616 - CMD="cb-sol-cli --gasLimit $GAS_LIMIT --gasPrice $GAS_PRICE --networkId 4 --url $URL --privateKey $PRIVATE_KEY" +use_ethereum_mainnet() { + # admin private key, the one used to deploy contracts + PRIVATE_KEY=$ETH_PRIVATE_KEY + GAS_PRICE=150000000000 + URL=https://mainnet.infura.io/v3/45174a29359d4b07ade01676259bc47a + NETWORK_ID=1 + CMD="cb-sol-cli --gasLimit $GAS_LIMIT --gasPrice $GAS_PRICE --networkId $NETWORK_ID --url $URL --privateKey $PRIVATE_KEY" CHAIN_ID=1 # after running deploy_all, don't forget to modify these! - BRIDGE_ADDR=0xc148a61CB324615F48854Ad5b87CfA2a21582D70 - ERC20_HANDLER_ADDR=0x3028d9d921A9cCF27266b47843Cb304109f867Df - ERC721_HANDLER_ADDR=0xa70937884b6AE3684116aAA1Fe17e28A6742163D - GENERIC_HANDLER_ADDR=0x4a39575e6c1eDc861Fda3cfC7001E5D961Cd443d + BRIDGE_ADDR=0x278cDd6847ef830c23cac61C17Eab837fEa1C29A + ERC20_HANDLER_ADDR=0xB8B493600A5b200Ca2c58fFA9dced00694fB3E38 + ERC721_HANDLER_ADDR=0x8765819BE8C755c7254566392809372eeDB2541c + GENERIC_HANDLER_ADDR=0xD63C21Ef28333095bBb15177838E7998b0736FFa } -deploy_erc20() { - $CMD deploy --erc20 --erc20Symbol "$1" --erc20Name "$1" | python3 get_deployed_token_addr.py +use_avalanche_mainnet() { + # admin private key, the one used to deploy contracts + PRIVATE_KEY=$AVA_PRIVATE_KEY + GAS_PRICE=470000000000 + URL=https://api.avax.network/ext/bc/C/rpc + NETWORK_ID=43114 + CMD="cb-sol-cli --gasLimit $GAS_LIMIT --gasPrice $GAS_PRICE --networkId $NETWORK_ID --url $URL --privateKey $PRIVATE_KEY" + CHAIN_ID=2 + + # after running deploy_all, don't forget to modify these! + BRIDGE_ADDR=0x827CdA479f93CA75cAe0E6927de09e33285617Ac + ERC20_HANDLER_ADDR=0xebb531992d89A5d4bd6fd9D76fa2669336cec3d4 + ERC721_HANDLER_ADDR=0x540726dbb3366185cf5a82FCe92F326bE355b891 + GENERIC_HANDLER_ADDR=0x01757bd6c8FD00d864eE1F15845d55DAbE2859eB } -add_resource() { - use_original_chain="$1" - use_other_chain="$2" - ERC20_TOKEN_ADDRESS=$3 - ERC20_DEPLOY_SYMBOL=$4 - - echo "We take $ERC20_TOKEN_ADDRESS from $use_original_chain, and a new corresponding" - echo "token with symbol $ERC20_DEPLOY_SYMBOL will be deployed on $use_other_chain" - echo "Testing switching between networks:" - $use_other_chain - $use_original_chain - echo "Gonna sleep for 20 seconds, take your time and check everything.." - sleep 20 - - # deploy token on other chain - $use_other_chain - OTHER_CHAIN_ERC20_ADDR=$(deploy_erc20 "$ERC20_DEPLOY_SYMBOL") - - # compute resource id - $use_original_chain - RES_ID=$(node make_resouce_id.js "$ERC20_TOKEN_ADDRESS" "$CHAIN_ID") - $use_other_chain - RES_ID_IN_OTHER_CHAIN=$(node make_resouce_id.js "$OTHER_CHAIN_ERC20_ADDR" "$CHAIN_ID") - - $use_original_chain - $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_TOKEN_ADDRESS --resourceId $RES_ID - $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_TOKEN_ADDRESS --resourceId $RES_ID_IN_OTHER_CHAIN - - $use_other_chain - $CMD erc20 add-minter --erc20Address $OTHER_CHAIN_ERC20_ADDR --minter $ERC20_HANDLER_ADDR - $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $OTHER_CHAIN_ERC20_ADDR --resourceId $RES_ID - $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $OTHER_CHAIN_ERC20_ADDR --resourceId $RES_ID_IN_OTHER_CHAIN - $CMD bridge set-burn --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --tokenContract $OTHER_CHAIN_ERC20_ADDR - - echo "Original token on $use_original_chain: $ERC20_TOKEN_ADDRESS" - echo "Corresponding token on $use_other_chain: $OTHER_CHAIN_ERC20_ADDR" - echo "RES_ID=$RES_ID" - echo "RES_ID_IN_OTHER_CHAIN=$RES_ID_IN_OTHER_CHAIN" +deploy_erc20() { + $CMD deploy --erc20 --erc20Symbol "$1" --erc20Name "$1" --erc20Decimals "$2" | python3 get_deployed_token_addr.py } # HERE IS WHERE REAL COMMANDS START: -# add something here, don't forget to remove then +ERC20_DEPLOY_SYMBOL=zUSDT +ERC20_DEPLOY_DECIMALS=6 + +ERC20_ADDR_ETH=0xdAC17F958D2ee523a2206206994597C13D831ec7 +ERC20_ADDR_AVA=0xa14d2e53e7578cD69A6B97Bff054F56280A8d2C8 + +RID_ETH=0x0000000000000000000000dAC17F958D2ee523a2206206994597C13D831ec700 +RID_AVA=0x0000000000000000000000a14d2e53e7578cD69A6B97Bff054F56280A8d2C801 + +use_binance_mainnet + +ERC20_ADDR_BSC=$(deploy_erc20 "$ERC20_DEPLOY_SYMBOL" "$ERC20_DEPLOY_DECIMALS") +RID_BSC=$(node make_resource_id.js "$ERC20_ADDR_BSC" "$CHAIN_ID") + +$CMD erc20 add-minter --erc20Address $ERC20_ADDR_BSC --minter $ERC20_HANDLER_ADDR +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_AVA +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_ETH +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_BSC +$CMD bridge set-burn --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --tokenContract $ERC20_ADDR_BSC + + +use_avalanche_mainnet +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_BSC + + +use_ethereum_mainnet +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_BSC From 8d44ce30a5938cc7c46ff788cc327ad134651430 Mon Sep 17 00:00:00 2001 From: winter256 Date: Fri, 2 Apr 2021 04:24:41 +0300 Subject: [PATCH 03/20] Huge update, I don't even remember all the things I fixed here --- cb-sol-cli/Makefile | 2 +- cb-sol-cli/cmd/deploy.js | 17 ++- cb-sol-cli/cmd/erc20.js | 23 +++- cb-sol-cli/constants.js | 3 +- checks/src/check-minters-admins.js | 77 +++++++++++ checks/src/check-rid-registered.js | 63 +++++++++ checks/src/config.js | 44 +++++- checks/src/get-chain-id.js | 3 +- checks/src/print-pairs-tokens.js | 18 ++- checks/src/print-pub-key.js | 7 + checks/src/token-info.json | 184 +++++++++++++++++++++++++ deploy/deploy.sh | 20 +-- deploy/get_deployed_zero_token_addr.py | 7 + deploy/test.env.sh | 5 + deploy/testnet-deploy.sh | 102 ++++++++++++++ 15 files changed, 556 insertions(+), 19 deletions(-) create mode 100644 checks/src/check-minters-admins.js create mode 100644 checks/src/check-rid-registered.js create mode 100644 checks/src/print-pub-key.js create mode 100644 checks/src/token-info.json create mode 100644 deploy/get_deployed_zero_token_addr.py create mode 100644 deploy/test.env.sh create mode 100755 deploy/testnet-deploy.sh diff --git a/cb-sol-cli/Makefile b/cb-sol-cli/Makefile index 95e5505..5391bd6 100644 --- a/cb-sol-cli/Makefile +++ b/cb-sol-cli/Makefile @@ -1,6 +1,6 @@ SOL_URL=https://github.com/zeroexchange/chainbridge-solidity # version with modified ERC20 to enable setting decimals in constructor -SOL_VERSION="4724a6219be1ba5b5983e62ca45765d89a6e0829" +SOL_VERSION="a326c3654380bdb6121ce9ad7955909b974659fd" fetch-contracts: @echo " > \033[32mFetching chainbridge-solidity contracts... \033[0m " diff --git a/cb-sol-cli/cmd/deploy.js b/cb-sol-cli/cmd/deploy.js index b1a752e..3683594 100644 --- a/cb-sol-cli/cmd/deploy.js +++ b/cb-sol-cli/cmd/deploy.js @@ -22,6 +22,7 @@ const deployCmd = new Command("deploy") .option('--erc721', 'Deploy erc721 contract') .option('--centAsset', 'Deploy centrifuge asset contract') .option('--wetc', 'Deploy wrapped ETC Erc20 contract') + .option('--zero', 'Deploy Zero contract (not the one from Ethereum, the one we deploy on other chains)') .option('--config', 'Logs the configuration based on the deployment', false) .action(async (args) => { await setupParentArgs(args, args.parent) @@ -68,6 +69,10 @@ const deployCmd = new Command("deploy") await deployWETC(args) deployed = true } + if (args.zero) { + await deployZERO(args); + deployed = true; + } if (!deployed) { throw new Error("must specify --all or specific contracts to deploy") @@ -134,6 +139,8 @@ Erc721: ${args.erc721Contract ? args.erc721Contract : "Not Deployed" Centrifuge Asset: ${args.centrifugeAssetStoreContract ? args.centrifugeAssetStoreContract : "Not Deployed"} ---------------------------------------------------------------- WETC: ${args.WETCContract ? args.WETCContract : "Not Deployed"} +---------------------------------------------------------------- +ZERO: ${args.ZEROContract ? args.ZEROContract : "Not Deployed"} ================================================================ `) } @@ -215,4 +222,12 @@ async function deployWETC(args) { console.log("✓ WETC contract deployed") } -module.exports = deployCmd \ No newline at end of file +async function deployZERO(args) { + const factory = new ethers.ContractFactory(constants.ContractABIs.ZERO.abi, constants.ContractABIs.ZERO.bytecode, args.wallet); + const contract = await factory.deploy({ gasPrice: args.gasPrice, gasLimit: args.gasLimit}); + await contract.deployed(); + args.ZEROContract = contract.address + console.log("✓ ZERO contract deployed") +} + +module.exports = deployCmd diff --git a/cb-sol-cli/cmd/erc20.js b/cb-sol-cli/cmd/erc20.js index 2a79ecf..087ef9d 100644 --- a/cb-sol-cli/cmd/erc20.js +++ b/cb-sol-cli/cmd/erc20.js @@ -126,9 +126,12 @@ const depositCmd = new Command("deposit") ethers.utils.hexZeroPad(ethers.utils.hexlify((args.recipient.length - 2)/2), 32).substr(2) + // len(recipientAddress) (32 bytes) args.recipient.substr(2); // recipientAddress (?? bytes) + const fee = await bridgeInstance._fee(); + log(args, `Constructed deposit:`) log(args, ` Resource Id: ${args.resourceId}`) log(args, ` Amount: ${expandDecimals(args.amount, args.parent.decimals).toHexString()}`) + log(args, ` Fee: ${ethers.utils.formatEther(fee)}`) log(args, ` len(recipient): ${(args.recipient.length - 2)/ 2}`) log(args, ` Recipient: ${args.recipient}`) log(args, ` Raw: ${data}`) @@ -139,7 +142,7 @@ const depositCmd = new Command("deposit") args.dest, // destination chain id args.resourceId, data, - { gasPrice: args.gasPrice, gasLimit: args.gasLimit} + { value: fee, gasPrice: args.gasPrice, gasLimit: args.gasLimit} ); await waitForTx(args.provider, tx.hash) @@ -207,7 +210,22 @@ const proposalDataHashCmd = new Command("data-hash") const hash = ethers.utils.solidityKeccak256(["address", "bytes"], [args.handler, data]) log(args, `Hash: ${hash} Data: ${data}`) - }) + }); + +const zeroChangeMinterCmd = new Command("zero-change-minter") + .description("Change minter for ZERO token") + .option('--tokenAddr
', 'Address of ZERO token') + .option('--newMinter
', 'Address of the new minter') + .action(async args => { + await setupParentArgs(args, args.parent.parent) + + console.log(`Setting new minter ${args.newMinter} for ZERO token ${args.tokenAddr}...`); + const zeroToken = new ethers.Contract(args.tokenAddr, constants.ContractABIs.ZERO.abi, args.wallet); + const tx = await zeroToken.changeMinter(args.newMinter, { gasPrice: args.gasPrice, gasLimit: args.gasLimit }); + console.log(`Waiting for tx ${tx.hash}...`); + await tx.wait(1); + console.log(`Successfully set new minter ${args.newMinter} for ZERO token ${args.tokenAddr}`); + }); const erc20Cmd = new Command("erc20") .option('-d, decimals ', "The number of decimal places for the erc20 token", 18) @@ -225,6 +243,7 @@ erc20Cmd.addCommand(addAdminCmd) erc20Cmd.addCommand(removeAdminCmd) erc20Cmd.addCommand(isMinterCmd) erc20Cmd.addCommand(isAdminCmd) +erc20Cmd.addCommand(zeroChangeMinterCmd) module.exports = erc20Cmd diff --git a/cb-sol-cli/constants.js b/cb-sol-cli/constants.js index 465db52..08c0f63 100644 --- a/cb-sol-cli/constants.js +++ b/cb-sol-cli/constants.js @@ -13,8 +13,9 @@ const ContractABIs = { Erc721Mintable: require(CONTRACT_PATH + "/ERC721MinterBurnerPauser.json"), GenericHandler: require(CONTRACT_PATH + "/GenericHandler.json"), CentrifugeAssetStore: require(CONTRACT_PATH + "/CentrifugeAsset.json"), + ZERO: require(CONTRACT_PATH + "/ZERO.json"), WETC: require("./contracts/WETC.json"), - HandlerHelpers: require(CONTRACT_PATH + "/HandlerHelpers.json") + HandlerHelpers: require(CONTRACT_PATH + "/HandlerHelpers.json"), } module.exports.ContractABIs = ContractABIs diff --git a/checks/src/check-minters-admins.js b/checks/src/check-minters-admins.js new file mode 100644 index 0000000..af9c2fe --- /dev/null +++ b/checks/src/check-minters-admins.js @@ -0,0 +1,77 @@ +const ethers = require('ethers'); +const config = require('./config'); +const bridgeABI = require('../../cb-sol-cli/chainbridge-solidity/build/contracts/Bridge.json').abi +const erc20HandlerABI = require('../../cb-sol-cli/chainbridge-solidity/build/contracts/ERC20Handler.json').abi +const erc20ABI = require('../../cb-sol-cli/chainbridge-solidity/build/contracts/ERC20PresetMinterPauser.json').abi + +const tokenInfos = require('./token-info.json'); + +class Checker { + constructor(cfg) { + this.config = cfg; + this.provider = new ethers.providers.JsonRpcProvider(cfg.rpcUrl); + this.bridge = new ethers.Contract(cfg.bridgeAddress, bridgeABI, this.provider); + const handlerAddr = cfg.erc20HandlerAddresses[cfg.chainId]; + this.handler = new ethers.Contract(handlerAddr, erc20HandlerABI, this.provider); + } + + async isRidToAddressCorrect(resourceId, tokenAddr) { + const actual = await this.handler._resourceIDToTokenContractAddress(resourceId) + return tokenAddr.toLowerCase() === actual.toLowerCase(); + } + + async isHandlerCorrect(resourceId) { + return this.handler.address === await this.bridge._resourceIDToHandlerAddress(resourceId); + } + + async isMinterOnToken(tokenAddr, minterAddr) { + const contract = new ethers.Contract(tokenAddr, erc20ABI, this.provider); + const MINTER_ROLE = await contract.MINTER_ROLE(); + return await contract.hasRole(MINTER_ROLE, minterAddr); + } + + async isAdminOnToken(tokenAddr, adminAddr) { + const contract = new ethers.Contract(tokenAddr, erc20ABI, this.provider); + const ADMIN_ROLE = await contract.DEFAULT_ADMIN_ROLE(); + return await contract.hasRole(ADMIN_ROLE, adminAddr); + } +} + +(async () => { + const cfg = config.AVA; + const checker = new Checker(cfg); + + const ALEX_ADDR = '0x0cc35215953725637c433404C01546c49A0ba6A1'; + const ME_ADDR = '0x4711ba56879606194A2DFF7692C7211717FfeE96'; + const ERC20_HANDLER_ADDR = cfg.erc20HandlerAddresses[cfg.chainId]; + for (const info of tokenInfos) { + const tokenAddr = info.tokenAddresses[cfg.chainId]; + + console.log(`Checking token ${info.symbol} ${tokenAddr}`); + + for (const resourceId of info.resourceIds) { + if (!await checker.isHandlerCorrect(resourceId)) { + console.log(`${resourceId} points to wrong erc20Handler`); + } + if (!await checker.isRidToAddressCorrect(resourceId, tokenAddr)) { + console.log(`${resourceId} points to wrong token address`); + } + } + + if (info.symbol == 'ZERO') continue; + if (cfg.chainId == 2 && info.symbol == 'zAWAX') continue; + + if (!await checker.isAdminOnToken(tokenAddr, ALEX_ADDR)) { + console.log(`ALEX_ADDR is not admin for ${tokenAddr}`); + } + if (await checker.isAdminOnToken(tokenAddr, ME_ADDR)) { + console.log(`ME_ADDR is an admin for ${tokenAddr}`); + } + if (!await checker.isMinterOnToken(tokenAddr, ERC20_HANDLER_ADDR)) { + console.log(`ERC20_HANDLER_ADDR is not minter on token ${tokenAddr}`); + } + if (await checker.isMinterOnToken(tokenAddr, ME_ADDR)) { + console.log(`ME_ADDR is a minter on token ${tokenAddr}`); + } + } +})(); diff --git a/checks/src/check-rid-registered.js b/checks/src/check-rid-registered.js new file mode 100644 index 0000000..3e6d0c7 --- /dev/null +++ b/checks/src/check-rid-registered.js @@ -0,0 +1,63 @@ +const ethers = require('ethers'); +const config = require('./config'); +const bridgeABI =require('../../cb-sol-cli/chainbridge-solidity/build/contracts/Bridge.json').abi +const rids = [ + '0x0000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4801', + '0x000000000000000000000023729144FEf299FA056BBBe29e2f01e79d7A634b02', + '0x00000000000000000000004022AfEB287052e6e587d39bA99f79cAFC47B57003', + '0x0000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200', + '0x0000000000000000000000f6F3EEa905ac1da6F6DD37d06810C6Fcb0EF518301', + '0x00000000000000000000007c815BBc21FED2B97CA163552991A5C30d6a233603', + '0x00000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c59901', + '0x00000000000000000000003B8eCf240b4Ea45BD9C02e60cddA1225a49BC6DA02', + '0x0000000000000000000000B6D5487b00e53e7009E6560189EB8B8c22e11Bf303', + '0x00000000000000000000006b175474e89094c44da98b954eedeac495271d0f01', + '0x000000000000000000000012f108E6138d4A9c58511e042399cF8f90D5673f02', + '0x00000000000000000000007e7bAFF135c42ed90C0EdAb16eAe48ecEa41701803', + '0x0000000000000000000000F0939011a9bb95c3B791f0cb546377Ed2693a57401', + '0x0000000000000000000000008E26068B3EB40B443d3Ea88c1fF99B789c10F702', + '0x00000000000000000000001f534d2B1ee2933f1fdF8e4b63A44b2249d77EAf03', + '0x0000000000000000000000743864B0562754F47f91CD400Ac8d4356a8fc72001', + '0x0000000000000000000000B31f66AA3C1e785363F0875A1B74E27b85FD66c702', + '0x0000000000000000000000aC532d2FC81a077C9F93Be7ea698E2f1d224Ec0403', + '0x0000000000000000000000514910771AF9Ca656af840dff83E8264EcF986CA01', + '0x0000000000000000000000c770701264aD059DD5700Ff68e85ea7A2CaaeF0B02', + '0x0000000000000000000000E1D075E79d17fBE745f575634Fb055c62c39CaF403', + '0x00000000000000000000007Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE901', + '0x0000000000000000000000bf5a94cFe186FC22aFd6637243b982258696082502', + '0x0000000000000000000000c69CF0e0d00adbF1ab447340C31E39fcf9Ef6cb503', + '0x00000000000000000000001f9840a85d5aF5bf1D1762F925BDADdC4201F98401', + '0x0000000000000000000000Ba9aF11661520129Af69d233E92d69BD40CD90AF02', + '0x0000000000000000000000A6b4a72a6f8116dab486fB88192450CF3ed4150C03', + '0x00000000000000000000006B3595068778DD592e39A122f4f5a5cF09C90fE201', + '0x0000000000000000000000D4feE2e3F88B9138B74a323B40bC63bcc1A1B9eC02', + '0x00000000000000000000002D6d5bc58adEDa28f62B0aBc3f53F5EAef497FCc03', + '0x0000000000000000000000011111111117dC0aa78b770fA6A738034120C30201', + '0x00000000000000000000005a0dDfA245c02d1256AfDcDa38aDFE89F34367Ce02', + '0x0000000000000000000000D83FEaB895bDebF9D3E1BE50b7d4d81cf4a0211c03', + '0x00000000000000000000000bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e01', + '0x0000000000000000000000D94f76f8DD5c3832dd798621c0d673bBae9D946b02', + '0x0000000000000000000000aaa777E372788F498462B7ed0fAaad7BA264586D03', + '0x0000000000000000000000dAC17F958D2ee523a2206206994597C13D831ec700', + '0x0000000000000000000000a14d2e53e7578cD69A6B97Bff054F56280A8d2C801', + '0x0000000000000000000000BF7e0761417F49b3FAFae564C842823f5f79DB1503', +]; + +(async () => { + const chains = {}; + for (const cfg of [config.ETH, config.AVA, config.BSC]) { + const provider = new ethers.providers.JsonRpcProvider(cfg.rpcUrl); + const bridge = new ethers.Contract(cfg.bridgeAddress, bridgeABI, provider); + const handler = cfg.erc20HandlerAddresses[cfg.chainId]; + chains[cfg.chainId] = { provider, bridge, handler }; + } + + for (const chain of Object.values(chains)) { + for (const rid of rids) { + const actualHandler = await chain.bridge._resourceIDToHandlerAddress(rid); + if (actualHandler != chain.handler) { + console.log(`Handler differs for ${rid} for ${chain.bridge.address}, expected ${chain.handler}, actual ${actualHandler}`); + } + } + } +})(); diff --git a/checks/src/config.js b/checks/src/config.js index f7dc447..525eb65 100644 --- a/checks/src/config.js +++ b/checks/src/config.js @@ -1,8 +1,46 @@ +const erc20HandlerAddresses = { + 1: '0xB8B493600A5b200Ca2c58fFA9dced00694fB3E38', + 2: '0x40a07f36655A0724557cA53A9E5D1b5018e9Df32', + 3: '0xD02408A62ED3708429ccFb04d9dEA302884ab6a7', +} + +const voteThreshold = 2; + module.exports = { - BSC: { - rpcUrl: 'https://bsc-dataseed2.binance.org', + ETH: { + name: "ETH", + chainId: 1, + rpcUrl: 'https://mainnet.infura.io/v3/97131c192c3645fa9ce01756e052e616', + fromBlock: 11739873, + bridgeAddress: '0x278cDd6847ef830c23cac61C17Eab837fEa1C29A', + erc20HandlerAddresses, + relayerPrivateKey: process.env.ETH_RELAYER_PRIVATE_KEY, + explorerPrefix: 'https://etherscan.io', + voteThreshold, + expiry: 100, }, AVA: { - rpcUrl: 'https://api.avax.network/ext/bc/C/rpc', + name: "AVA", + chainId: 2, + rpcUrl: "https://api.avax.network/ext/bc/C/rpc", + fromBlock: 34247, + bridgeAddress: "0xee8aE1088D02CCDA2CDd0FdA2381DB679d0b122E", + erc20HandlerAddresses, + relayerPrivateKey: process.env.AVA_RELAYER_PRIVATE_KEY, + explorerPrefix: 'https://cchain.explorer.avax.network', + voteThreshold, + expiry: 999999, + }, + BSC: { + name: "BSC", + chainId: 3, + rpcUrl: "https://bsc-dataseed2.binance.org", + fromBlock: 5527037, + bridgeAddress: "0xF82B6C89A1D3340733eA4f74F9D111b5D7127876", + erc20HandlerAddresses, + relayerPrivateKey: process.env.BSC_RELAYER_PRIVATE_KEY, + explorerPrefix: 'https://bscscan.com', + voteThreshold, + expiry: 999999, }, }; diff --git a/checks/src/get-chain-id.js b/checks/src/get-chain-id.js index ce8da4e..d321790 100644 --- a/checks/src/get-chain-id.js +++ b/checks/src/get-chain-id.js @@ -1,9 +1,10 @@ const ethers = require('ethers'); -const config = require('./config.js').AVA; +const config = require('./config.js').BSC; (async () => { const provider = new ethers.providers.JsonRpcProvider(config.rpcUrl); const { chainId } = await provider.getNetwork(); console.log(chainId); + console.log(await provider.getBlockNumber()) })(); diff --git a/checks/src/print-pairs-tokens.js b/checks/src/print-pairs-tokens.js index 95d2989..e91fbf8 100644 --- a/checks/src/print-pairs-tokens.js +++ b/checks/src/print-pairs-tokens.js @@ -5,9 +5,21 @@ const erc20Abi = require('../../cb-sol-cli/chainbridge-solidity/build/contracts/ const config = require('./config.js').BSC; +const stakingRewards = [ + '0x4564c264ED7CC55CfAeffAF03F662c3a68602e6A', + '0x0Ff36b5F7B87Bb61BE8305F9b47c83910560DF95', + '0xacE237D2cC182E8c1E3866509b800Fe35e192108', + '0x9c13B95F92F4b35DC725c5d4D5e3ffa467e58091', + '0x300b7ae70C9a8AA3643d4b9Ac90145c8dbd5a961', + '0x8C0e0d72b29e51518034536fd509c9c1F5306B2d', + '0x389a83ce9Da4bceeD934Bcb68c3A9Beb8A10135e', + '0xa8630279dBFb97a92a7C477c17FF4466b619A3d2', +]; + const pairs = [ '0x955492a096c03a9ddee5d2825f95d82dd3ae0683', '0xa633aa5fcfa828bb6b72541bf6c559da0b9c4a19', + '0x6c91f1f1449433f174a550a5d6eec64846bb4c5e', '0x060ed3b26c183c32e2b2f82daebc3e3d19b50065', '0x4899309c615b527c9a6f0ba47abb0473ef6f1f3c', '0x8f6bffd12ecc303bf43504c9fbe115e1737c63ef', @@ -17,11 +29,13 @@ const pairs = [ (async () => { const provider = new ethers.providers.JsonRpcProvider(config.rpcUrl); - for (const pairAddr of pairs) { + + for (const [i, pairAddr] of pairs.entries()) { const pairContract = new ethers.Contract(pairAddr, pairAbi, provider); const addresses = [await pairContract.token0(), await pairContract.token1()]; const contracts = addresses.map(addr => new ethers.Contract(addr, erc20Abi, provider)); const symbols = await Promise.all(contracts.map(contract => contract.symbol())); - console.log(`Pair ${pairAddr} has tokens ${addresses[0]} / ${addresses[1]} and symbols ${symbols[0]} / ${symbols[1]}`); + const decimals = await Promise.all(contracts.map(c => c.decimals())); + console.log(`Pair ${pairAddr} (rew ${stakingRewards[i]} has tokens ${addresses[0]} / ${addresses[1]} and symbols ${symbols[0]} / ${symbols[1]} and decimals ${decimals[1]}`); } })(); diff --git a/checks/src/print-pub-key.js b/checks/src/print-pub-key.js new file mode 100644 index 0000000..6b0d16f --- /dev/null +++ b/checks/src/print-pub-key.js @@ -0,0 +1,7 @@ +const ethers = require('ethers'); + +const wallet = new ethers.Wallet(''); +// const wallet = ethers.Wallet.fromMnemonic('', "m/44'/60'/0'/0/1") + +console.log(wallet.privateKey); +console.log(wallet.address); diff --git a/checks/src/token-info.json b/checks/src/token-info.json new file mode 100644 index 0000000..6fb8541 --- /dev/null +++ b/checks/src/token-info.json @@ -0,0 +1,184 @@ +[ + { + "symbol": "zUSDC", + "decimals": 6, + "tokenAddresses": { + "1": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "2": "0x474Bb79C3e8E65DcC6dF30F9dE68592ed48BBFDb", + "3": "0x4022AfEB287052e6e587d39bA99f79cAFC47B570" + }, + "resourceIds": [ + "0x0000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4801", + "0x000000000000000000000023729144FEf299FA056BBBe29e2f01e79d7A634b02", + "0x00000000000000000000004022AfEB287052e6e587d39bA99f79cAFC47B57003" + ] + }, + { + "symbol": "zETH", + "decimals": 18, + "tokenAddresses": { + "1": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "2": "0xf6F3EEa905ac1da6F6DD37d06810C6Fcb0EF5183", + "3": "0x7c815BBc21FED2B97CA163552991A5C30d6a2336" + }, + "resourceIds": [ + "0x0000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200", + "0x0000000000000000000000f6F3EEa905ac1da6F6DD37d06810C6Fcb0EF518301", + "0x00000000000000000000007c815BBc21FED2B97CA163552991A5C30d6a233603" + ] + }, + { + "symbol": "zBTC", + "decimals": 8, + "tokenAddresses": { + "1": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", + "2": "0xc4f4Ff34A2e2cF5e4c892476BB2D056871125452", + "3": "0xB6D5487b00e53e7009E6560189EB8B8c22e11Bf3" + }, + "resourceIds": [ + "0x00000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c59901", + "0x00000000000000000000003B8eCf240b4Ea45BD9C02e60cddA1225a49BC6DA02", + "0x0000000000000000000000B6D5487b00e53e7009E6560189EB8B8c22e11Bf303" + ] + }, + { + "symbol": "zDAI", + "decimals": 18, + "tokenAddresses": { + "1": "0x6b175474e89094c44da98b954eedeac495271d0f", + "2": "0x12f108E6138d4A9c58511e042399cF8f90D5673f", + "3": "0x7e7bAFF135c42ed90C0EdAb16eAe48ecEa417018" + }, + "resourceIds": [ + "0x00000000000000000000006b175474e89094c44da98b954eedeac495271d0f01", + "0x000000000000000000000012f108E6138d4A9c58511e042399cF8f90D5673f02", + "0x00000000000000000000007e7bAFF135c42ed90C0EdAb16eAe48ecEa41701803" + ] + }, + { + "symbol": "ZERO", + "decimals": 18, + "tokenAddresses": { + "1": "0xF0939011a9bb95c3B791f0cb546377Ed2693a574", + "2": "0x008E26068B3EB40B443d3Ea88c1fF99B789c10F7", + "3": "0x1f534d2B1ee2933f1fdF8e4b63A44b2249d77EAf" + }, + "resourceIds": [ + "0x0000000000000000000000F0939011a9bb95c3B791f0cb546377Ed2693a57401", + "0x0000000000000000000000008E26068B3EB40B443d3Ea88c1fF99B789c10F702", + "0x00000000000000000000001f534d2B1ee2933f1fdF8e4b63A44b2249d77EAf03" + ] + }, + { + "symbol": "zAWAX", + "decimals": 18, + "tokenAddresses": { + "1": "0x743864B0562754F47f91CD400Ac8d4356a8fc720", + "2": "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7", + "3": "0xaC532d2FC81a077C9F93Be7ea698E2f1d224Ec04" + }, + "resourceIds": [ + "0x0000000000000000000000743864B0562754F47f91CD400Ac8d4356a8fc72001", + "0x0000000000000000000000B31f66AA3C1e785363F0875A1B74E27b85FD66c702", + "0x0000000000000000000000aC532d2FC81a077C9F93Be7ea698E2f1d224Ec0403" + ] + }, + { + "symbol": "zLINK", + "decimals": 18, + "tokenAddresses": { + "1": "0x514910771af9ca656af840dff83e8264ecf986ca", + "2": "0xc770701264aD059DD5700Ff68e85ea7A2CaaeF0B", + "3": "0xE1D075E79d17fBE745f575634Fb055c62c39CaF4" + }, + "resourceIds": [ + "0x0000000000000000000000514910771AF9Ca656af840dff83E8264EcF986CA01", + "0x0000000000000000000000c770701264aD059DD5700Ff68e85ea7A2CaaeF0B02", + "0x0000000000000000000000E1D075E79d17fBE745f575634Fb055c62c39CaF403" + ] + }, + { + "symbol": "zAAVE", + "decimals": 18, + "tokenAddresses": { + "1": "0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9", + "2": "0xbf5a94cFe186FC22aFd6637243b9822586960825", + "3": "0xc69CF0e0d00adbF1ab447340C31E39fcf9Ef6cb5" + }, + "resourceIds": [ + "0x00000000000000000000007Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE901", + "0x0000000000000000000000bf5a94cFe186FC22aFd6637243b982258696082502", + "0x0000000000000000000000c69CF0e0d00adbF1ab447340C31E39fcf9Ef6cb503" + ] + }, + { + "symbol": "zUNI", + "decimals": 18, + "tokenAddresses": { + "1": "0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984", + "2": "0xBa9aF11661520129Af69d233E92d69BD40CD90AF", + "3": "0xA6b4a72a6f8116dab486fB88192450CF3ed4150C" + }, + "resourceIds": [ + "0x00000000000000000000001f9840a85d5aF5bf1D1762F925BDADdC4201F98401", + "0x0000000000000000000000Ba9aF11661520129Af69d233E92d69BD40CD90AF02", + "0x0000000000000000000000A6b4a72a6f8116dab486fB88192450CF3ed4150C03" + ] + }, + { + "symbol": "zSUSHI", + "decimals": 18, + "tokenAddresses": { + "1": "0x6B3595068778DD592e39A122f4f5a5cF09C90fE2", + "2": "0xD4feE2e3F88B9138B74a323B40bC63bcc1A1B9eC", + "3": "0x2D6d5bc58adEDa28f62B0aBc3f53F5EAef497FCc" + }, + "resourceIds": [ + "0x00000000000000000000006B3595068778DD592e39A122f4f5a5cF09C90fE201", + "0x0000000000000000000000D4feE2e3F88B9138B74a323B40bC63bcc1A1B9eC02", + "0x00000000000000000000002D6d5bc58adEDa28f62B0aBc3f53F5EAef497FCc03" + ] + }, + { + "symbol": "z1INCH", + "decimals": 18, + "tokenAddresses": { + "1": "0x111111111117dc0aa78b770fa6a738034120c302", + "2": "0x5a0dDfA245c02d1256AfDcDa38aDFE89F34367Ce", + "3": "0xD83FEaB895bDebF9D3E1BE50b7d4d81cf4a0211c" + }, + "resourceIds": [ + "0x0000000000000000000000011111111117dC0aa78b770fA6A738034120C30201", + "0x00000000000000000000005a0dDfA245c02d1256AfDcDa38aDFE89F34367Ce02", + "0x0000000000000000000000D83FEaB895bDebF9D3E1BE50b7d4d81cf4a0211c03" + ] + }, + { + "symbol": "zYFI", + "decimals": 18, + "tokenAddresses": { + "1": "0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e", + "2": "0xD94f76f8DD5c3832dd798621c0d673bBae9D946b", + "3": "0xaaa777E372788F498462B7ed0fAaad7BA264586D" + }, + "resourceIds": [ + "0x00000000000000000000000bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e01", + "0x0000000000000000000000D94f76f8DD5c3832dd798621c0d673bBae9D946b02", + "0x0000000000000000000000aaa777E372788F498462B7ed0fAaad7BA264586D03" + ] + }, + { + "symbol": "zUSDT", + "decimals": 6, + "tokenAddresses": { + "1": "0xdAC17F958D2ee523a2206206994597C13D831ec7", + "2": "0x650CECaFE61f3f65Edd21eFacCa18Cc905EeF0B7", + "3": "0xBF7e0761417F49b3FAFae564C842823f5f79DB15" + }, + "resourceIds": [ + "0x0000000000000000000000dAC17F958D2ee523a2206206994597C13D831ec700", + "0x0000000000000000000000a14d2e53e7578cD69A6B97Bff054F56280A8d2C801", + "0x0000000000000000000000BF7e0761417F49b3FAFae564C842823f5f79DB1503" + ] + } +] \ No newline at end of file diff --git a/deploy/deploy.sh b/deploy/deploy.sh index 45eeb48..4e460dd 100755 --- a/deploy/deploy.sh +++ b/deploy/deploy.sh @@ -2,6 +2,8 @@ set -eux +GAS_LIMIT=6721975 + use_binance_mainnet() { # admin private key, the one used to deploy contracts PRIVATE_KEY=$BSC_PRIVATE_KEY @@ -60,15 +62,17 @@ ERC20_DEPLOY_SYMBOL=zUSDT ERC20_DEPLOY_DECIMALS=6 ERC20_ADDR_ETH=0xdAC17F958D2ee523a2206206994597C13D831ec7 -ERC20_ADDR_AVA=0xa14d2e53e7578cD69A6B97Bff054F56280A8d2C8 +ERC20_ADDR_AVA=0x650CECaFE61f3f65Edd21eFacCa18Cc905EeF0B7 RID_ETH=0x0000000000000000000000dAC17F958D2ee523a2206206994597C13D831ec700 RID_AVA=0x0000000000000000000000a14d2e53e7578cD69A6B97Bff054F56280A8d2C801 -use_binance_mainnet +# use_binance_mainnet -ERC20_ADDR_BSC=$(deploy_erc20 "$ERC20_DEPLOY_SYMBOL" "$ERC20_DEPLOY_DECIMALS") -RID_BSC=$(node make_resource_id.js "$ERC20_ADDR_BSC" "$CHAIN_ID") +ERC20_ADDR_BSC=0xBF7e0761417F49b3FAFae564C842823f5f79DB15 +# ERC20_ADDR_BSC=$(deploy_erc20 "$ERC20_DEPLOY_SYMBOL" "$ERC20_DEPLOY_DECIMALS") +RID_BSC=0x0000000000000000000000BF7e0761417F49b3FAFae564C842823f5f79DB1503 +# RID_BSC=$(node make_resource_id.js "$ERC20_ADDR_BSC" "$CHAIN_ID") $CMD erc20 add-minter --erc20Address $ERC20_ADDR_BSC --minter $ERC20_HANDLER_ADDR $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_AVA @@ -77,9 +81,9 @@ $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADD $CMD bridge set-burn --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --tokenContract $ERC20_ADDR_BSC -use_avalanche_mainnet -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_BSC +# use_avalanche_mainnet +# $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_BSC -use_ethereum_mainnet -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_BSC +# use_ethereum_mainnet +# $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_BSC diff --git a/deploy/get_deployed_zero_token_addr.py b/deploy/get_deployed_zero_token_addr.py new file mode 100644 index 0000000..7d6906e --- /dev/null +++ b/deploy/get_deployed_zero_token_addr.py @@ -0,0 +1,7 @@ + +import fileinput + +for line in fileinput.input(): + if line.startswith('ZERO:'): + print(line.split()[1]) + break diff --git a/deploy/test.env.sh b/deploy/test.env.sh new file mode 100644 index 0000000..c302e3a --- /dev/null +++ b/deploy/test.env.sh @@ -0,0 +1,5 @@ +export RKB_TEST_PRIVATE_KEY= +export BSC_TEST_PRIVATE_KEY= +export AVA_TEST_PRIVATE_KEY= +export MNB_TEST_PRIVATE_KEY= +export MMB_TEST_PRIVATE_KEY= diff --git a/deploy/testnet-deploy.sh b/deploy/testnet-deploy.sh new file mode 100755 index 0000000..c135acd --- /dev/null +++ b/deploy/testnet-deploy.sh @@ -0,0 +1,102 @@ +#!/usr/bin/env bash + +set -eux + +GAS_LIMIT=6721975 + +use_rinkeby_testnet() { + # admin private key, the one used to deploy contracts + # PRIVATE_KEY=$RKB_TEST_PRIVATE_KEY + PRIVATE_KEY=0xe131bc3f481277a8f73d680d9ba404cc6f959e64296e0914dded403030d4f705 + GAS_PRICE=1000000000 + URL=https://rinkeby.infura.io/v3/45174a29359d4b07ade01676259bc47a + NETWORK_ID=4 + CMD="cb-sol-cli --gasLimit $GAS_LIMIT --gasPrice $GAS_PRICE --networkId $NETWORK_ID --url $URL --privateKey $PRIVATE_KEY" + CHAIN_ID=1 + + # after running deploy_all, don't forget to modify these! + BRIDGE_ADDR=0xC113367F7b35E695C8570d768E7F67b48b2E135D + ERC20_HANDLER_ADDR=0x083D9DacEb094e2b6C018AEbF58BB7c4D01E17db + ERC721_HANDLER_ADDR=0x583A1599d91B1D0b5cA4ccFbE22347CB7F98099c + GENERIC_HANDLER_ADDR=0xeEdaAB3cdb85B77430f2272f6cDbaE2020F48c80 +} + +use_avalanche_testnet() { + # https://cchain.explorer.avax-test.network/ + # admin private key, the one used to deploy contracts + PRIVATE_KEY=$AVA_TEST_PRIVATE_KEY + GAS_PRICE=225000000000 + URL=https://api.avax-test.network/ext/bc/C/rpc + NETWORK_ID=43113 + CMD="cb-sol-cli --gasLimit $GAS_LIMIT --gasPrice $GAS_PRICE --networkId $NETWORK_ID --url $URL --privateKey $PRIVATE_KEY" + CHAIN_ID=2 + + # after running deploy_all, don't forget to modify these! + BRIDGE_ADDR=0xD73CFAACEfe4812d350d38f634fA61eC3aFdFEbA + ERC20_HANDLER_ADDR=0xff7c781E1ed2A67a790Be70536299c7DFE4D5f33 + ERC721_HANDLER_ADDR=0x7dd096B0676B83e1D28aa8AFc375Bce5C2BF3b6c + GENERIC_HANDLER_ADDR=0xb3c908620736D4d6b4fB67D7eFCFb23403A6F4DA +} + +use_binance_testnet() { + # admin private key, the one used to deploy contracts + PRIVATE_KEY=$BSC_TEST_PRIVATE_KEY + GAS_PRICE=20000000000 + URL=https://data-seed-prebsc-1-s2.binance.org:8545 + NETWORK_ID=97 + CMD="cb-sol-cli --gasLimit $GAS_LIMIT --gasPrice $GAS_PRICE --networkId $NETWORK_ID --url $URL --privateKey $PRIVATE_KEY" + CHAIN_ID=3 + + # after running deploy_all, don't forget to modify these! + BRIDGE_ADDR=0xD73CFAACEfe4812d350d38f634fA61eC3aFdFEbA + ERC20_HANDLER_ADDR=0xff7c781E1ed2A67a790Be70536299c7DFE4D5f33 + ERC721_HANDLER_ADDR=0x7dd096B0676B83e1D28aa8AFc375Bce5C2BF3b6c + GENERIC_HANDLER_ADDR=0xb3c908620736D4d6b4fB67D7eFCFb23403A6F4DA +} + +use_moonbeam_testnet() { + # admin private key, the one used to deploy contracts + PRIVATE_KEY=$MNB_TEST_PRIVATE_KEY + GAS_PRICE=20000000000 + URL=https://rpc.testnet.moonbeam.network + NETWORK_ID=1287 + CMD="cb-sol-cli --gasLimit $GAS_LIMIT --gasPrice $GAS_PRICE --networkId $NETWORK_ID --url $URL --privateKey $PRIVATE_KEY" + CHAIN_ID=4 + + # after running deploy_all, don't forget to modify these! + BRIDGE_ADDR=0xA14Af06dEc505ca794635f827a24B976a434d427 + ERC20_HANDLER_ADDR=0x63cF3afFD720F23c55cD652Ba2242EfE1bccFBfC + ERC721_HANDLER_ADDR=0x3BaDD0399e9c1DFAd16dddb42D6759afE0e3e6f2 + GENERIC_HANDLER_ADDR=0x5C2E43c99318F60Acc6503f40d734B64dA7106cc +} + +use_mumbai_testnet() { + # admin private key, the one used to deploy contracts + PRIVATE_KEY=$MMB_TEST_PRIVATE_KEY + GAS_PRICE=1000000000 + URL=https://rpc-mumbai.maticvigil.com + NETWORK_ID=80001 + CMD="cb-sol-cli --gasLimit $GAS_LIMIT --gasPrice $GAS_PRICE --networkId $NETWORK_ID --url $URL --privateKey $PRIVATE_KEY" + CHAIN_ID=5 + + # after running deploy_all, don't forget to modify these! + BRIDGE_ADDR=0xD73CFAACEfe4812d350d38f634fA61eC3aFdFEbA + ERC20_HANDLER_ADDR=0xff7c781E1ed2A67a790Be70536299c7DFE4D5f33 + ERC721_HANDLER_ADDR=0x7dd096B0676B83e1D28aa8AFc375Bce5C2BF3b6c + GENERIC_HANDLER_ADDR=0xb3c908620736D4d6b4fB67D7eFCFb23403A6F4DA +} + +deploy_erc20() { + $CMD deploy --erc20 --erc20Symbol "$1" --erc20Name "$1" --erc20Decimals "$2" | python3 get_deployed_token_addr.py +} + +deploy_zero_token() { + $CMD deploy --zero | python3 get_deployed_zero_token_addr.py + # to change minter for contract, use + # $CMD erc20 zero-change-minter --tokenAddr $ERC20_ADDR_MMB --newMinter $ERC20_HANDLER_ADDR +} + +use_rinkeby_testnet + +# $CMD erc20 approve --recipient $ERC20_HANDLER_ADDR --erc20Address 0x9efce00be4e0c2d9aef18aace4e273d9ebcf574a +# $CMD erc20 deposit --dest 5 --recipient 0x52312AD6f01657413b2eaE9287f6B9ADaD93D5FE --resourceId 0x00000000000000000000009efce00be4e0c2d9aef18aace4e273d9ebcf574a01 --bridge $BRIDGE_ADDR From f41c51457eceed44173fcaaf6ca7067c02c645e9 Mon Sep 17 00:00:00 2001 From: winter256 Date: Thu, 15 Apr 2021 14:11:38 +0300 Subject: [PATCH 04/20] Add indacoin --- .gitignore | 2 + cb-sol-cli/Makefile | 4 +- cb-sol-cli/cmd/deploy.js | 36 ++++++++-- cb-sol-cli/cmd/utils.js | 13 +++- checks/src/check-minters-admins.js | 6 +- checks/src/testnet-config.js | 51 +++++++++++++ checks/src/testnet-token-info.json | 74 +++++++++++++++++++ deploy/deploy.sh | 111 +++++++++++++++++++---------- deploy/test.env.sh | 5 -- deploy/testnet-deploy.sh | 73 +++++++++++++++++-- 10 files changed, 313 insertions(+), 62 deletions(-) create mode 100644 checks/src/testnet-config.js create mode 100644 checks/src/testnet-token-info.json delete mode 100644 deploy/test.env.sh diff --git a/.gitignore b/.gitignore index b001652..96951aa 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ node_modules/ chainbridge-solidity/ .DS_Store +deploy/env.sh +deploy/test.env.sh diff --git a/cb-sol-cli/Makefile b/cb-sol-cli/Makefile index 5391bd6..59955a0 100644 --- a/cb-sol-cli/Makefile +++ b/cb-sol-cli/Makefile @@ -1,13 +1,13 @@ SOL_URL=https://github.com/zeroexchange/chainbridge-solidity # version with modified ERC20 to enable setting decimals in constructor -SOL_VERSION="a326c3654380bdb6121ce9ad7955909b974659fd" +SOL_VERSION="89fb479d5e2fa20bf7b7dd380c0fbde5c5cd5674" fetch-contracts: @echo " > \033[32mFetching chainbridge-solidity contracts... \033[0m " git clone ${SOL_URL} && cd chainbridge-solidity && git checkout ${SOL_VERSION} compile: - cd chainbridge-solidity && npm install && npx truffle compile + cd chainbridge-solidity && npm install && npm run compile install: fetch-contracts compile @echo " > \033[32mInstalling cb-sol-cli... \033[0m " diff --git a/cb-sol-cli/cmd/deploy.js b/cb-sol-cli/cmd/deploy.js index 3683594..703ecfd 100644 --- a/cb-sol-cli/cmd/deploy.js +++ b/cb-sol-cli/cmd/deploy.js @@ -1,7 +1,8 @@ const ethers = require('ethers'); const {Command} = require('commander'); const constants = require('../constants'); -const {setupParentArgs, splitCommaList} = require("./utils") +const {setupParentArgs, splitCommaList, encodeConstructorArgs} = require("./utils") + const deployCmd = new Command("deploy") .description("Deploys contracts via RPC") @@ -100,9 +101,28 @@ const createConfig = (args) => { config.startBlock = "0" config.http = "false" config.relayers = args.relayers; + const configReady = { + name: "eth", + type: "ethereum", + id: args.chainId, + endpoint: args.url, + from: args.relayers[0], + opts: { + bridge: args.bridgeContract, + erc20Handler: args.erc20HandlerContract, + erc721Handler: args.erc721HandlerContract, + genericHandler: args.genericHandlerContract, + gasLimit: eval(args.gasLimit), + maxGasPrice: eval(args.gasPrice), + startBlock: "0", + http: true, + }, + }; const data = JSON.stringify(config, null, 4); console.log("EVM Configuration, please copy this into your ChainBridge config file:") console.log(data) + console.log("\nOr maybe this:"); + console.log(JSON.stringify(configReady, null, 4)); } const displayLog = (args) => { @@ -150,13 +170,21 @@ async function deployBridgeContract(args) { // Create an instance of a Contract Factory let factory = new ethers.ContractFactory(constants.ContractABIs.Bridge.abi, constants.ContractABIs.Bridge.bytecode, args.wallet); - // Deploy - let contract = await factory.deploy( + const arguments = [ args.chainId, args.relayers, args.relayerThreshold, ethers.utils.parseEther(args.fee.toString()), - args.expiry, + args.expiry + ]; + + const encodedArgs = encodeConstructorArgs(constants.ContractABIs.Bridge, arguments); + console.log('Bridge args:'); + console.log(encodedArgs); + + // Deploy + let contract = await factory.deploy( + ...arguments, { gasPrice: args.gasPrice, gasLimit: args.gasLimit} ); await contract.deployed(); diff --git a/cb-sol-cli/cmd/utils.js b/cb-sol-cli/cmd/utils.js index 7f5e587..1ec824e 100644 --- a/cb-sol-cli/cmd/utils.js +++ b/cb-sol-cli/cmd/utils.js @@ -47,11 +47,20 @@ const expandDecimals = (amount, decimals = 18) => { const log = (args, msg) => console.log(`[${args.parent._name}/${args._name}] ${msg}`) +function encodeConstructorArgs(contractCode, args) { + const iface = contractCode.abi.filter((i) => i.type === "constructor"); + if (iface.length === 0) { + return "0x"; + } + return ethers.utils.defaultAbiCoder.encode(iface[0].inputs, args); +} + module.exports = { setupParentArgs, splitCommaList, getFunctionBytes, waitForTx, log, - expandDecimals -} \ No newline at end of file + expandDecimals, + encodeConstructorArgs, +} diff --git a/checks/src/check-minters-admins.js b/checks/src/check-minters-admins.js index af9c2fe..3ab6b1d 100644 --- a/checks/src/check-minters-admins.js +++ b/checks/src/check-minters-admins.js @@ -1,10 +1,10 @@ const ethers = require('ethers'); -const config = require('./config'); +const config = require('./testnet-config'); const bridgeABI = require('../../cb-sol-cli/chainbridge-solidity/build/contracts/Bridge.json').abi const erc20HandlerABI = require('../../cb-sol-cli/chainbridge-solidity/build/contracts/ERC20Handler.json').abi const erc20ABI = require('../../cb-sol-cli/chainbridge-solidity/build/contracts/ERC20PresetMinterPauser.json').abi -const tokenInfos = require('./token-info.json'); +const tokenInfos = require('./testnet-token-info.json'); class Checker { constructor(cfg) { @@ -38,7 +38,7 @@ class Checker { } (async () => { - const cfg = config.AVA; + const cfg = config.ETH; const checker = new Checker(cfg); const ALEX_ADDR = '0x0cc35215953725637c433404C01546c49A0ba6A1'; diff --git a/checks/src/testnet-config.js b/checks/src/testnet-config.js new file mode 100644 index 0000000..355c3aa --- /dev/null +++ b/checks/src/testnet-config.js @@ -0,0 +1,51 @@ +erc20HandlerAddresses = { + 1:'0x083D9DacEb094e2b6C018AEbF58BB7c4D01E17db', + 2: '0xff7c781E1ed2A67a790Be70536299c7DFE4D5f33', + 3: '0xff7c781E1ed2A67a790Be70536299c7DFE4D5f33', + 4: '0xff7c781E1ed2A67a790Be70536299c7DFE4D5f33', + 5: '0xff7c781E1ed2A67a790Be70536299c7DFE4D5f33', +} + +module.exports = { + ETH: { + name: "ETH", + chainId: 1, + rpcUrl: 'https://rinkeby.infura.io/v3/97131c192c3645fa9ce01756e052e616', + fromBlock: 8337701, + bridgeAddress: '0xC113367F7b35E695C8570d768E7F67b48b2E135D', + zeroBridgeAddress: '0x84e3b105963B3ECd0310B856FD3b7bd2Fd32c3EB', + erc20HandlerAddresses, + }, + AVA: { + name: "AVA", + chainId: 2, + rpcUrl: "https://api.avax-test.network/ext/bc/C/rpc", + fromBlock: 80588, + bridgeAddress: "0xD73CFAACEfe4812d350d38f634fA61eC3aFdFEbA", + erc20HandlerAddresses, + }, + BSC: { + name: "BSC", + chainId: 3, + rpcUrl: "https://data-seed-prebsc-1-s2.binance.org:8545", + fromBlock: 7603187, + bridgeAddress: "0xD73CFAACEfe4812d350d38f634fA61eC3aFdFEbA", + erc20HandlerAddresses, + }, + MNB: { + name: "MNB", + chainId: 4, + rpcUrl: "https://rpc.testnet.moonbeam.network", + fromBlock: 18000, + bridgeAddress: "0xD73CFAACEfe4812d350d38f634fA61eC3aFdFEbA", + erc20HandlerAddresses, + }, + MMB: { + name: "MMB", + chainId: 5, + rpcUrl: "https://rpc-mumbai.maticvigil.com", + fromBlock: 12234022, + bridgeAddress: "0xD73CFAACEfe4812d350d38f634fA61eC3aFdFEbA", + erc20HandlerAddresses, + }, +}; diff --git a/checks/src/testnet-token-info.json b/checks/src/testnet-token-info.json new file mode 100644 index 0000000..06334f1 --- /dev/null +++ b/checks/src/testnet-token-info.json @@ -0,0 +1,74 @@ +[ + { + "symbol": "zUSDC", + "decimals": 6, + "tokenAddresses": { + "1": "0xeb8f08a975ab53e34d8a0330e0d34de942c95926", + "2": "0xA14Af06dEc505ca794635f827a24B976a434d427", + "3": "0xB366412128A00620B42825312564307Db2d5Cc45", + "4": "0xA14Af06dEc505ca794635f827a24B976a434d427", + "5": "0xA14Af06dEc505ca794635f827a24B976a434d427" + }, + "resourceIds": [ + "0x0000000000000000000000eb8f08a975ab53e34d8a0330e0d34de942c9592601", + "0x0000000000000000000000A14Af06dEc505ca794635f827a24B976a434d42702", + "0x0000000000000000000000B366412128A00620B42825312564307Db2d5Cc4503", + "0x0000000000000000000000A14Af06dEc505ca794635f827a24B976a434d42704", + "0x0000000000000000000000A14Af06dEc505ca794635f827a24B976a434d42705" + ] + }, + { + "symbol": "zUSDT", + "decimals": 6, + "tokenAddresses": { + "1": "0xc66227E44bf1E6F043919A65707b826e3E9f1132", + "2": "0x63cF3afFD720F23c55cD652Ba2242EfE1bccFBfC", + "3": "0xe874dCF01d498DDe836d1F6B7f1Fe125217e4eaf", + "4": "0x90Cef7CfE4C88b3bd6d8bE52c2Ebce04210820Ac", + "5": "0x63cF3afFD720F23c55cD652Ba2242EfE1bccFBfC" + }, + "resourceIds": [ + "0x0000000000000000000000c66227E44bf1E6F043919A65707b826e3E9f113201", + "0x000000000000000000000063cF3afFD720F23c55cD652Ba2242EfE1bccFBfC02", + "0x0000000000000000000000e874dCF01d498DDe836d1F6B7f1Fe125217e4eaf03", + "0x000000000000000000000090Cef7CfE4C88b3bd6d8bE52c2Ebce04210820Ac04", + "0x000000000000000000000063cF3afFD720F23c55cD652Ba2242EfE1bccFBfC05" + ] + }, + { + "symbol": "zETH", + "decimals": 18, + "tokenAddresses": { + "1": "0xc778417e063141139fce010982780140aa0cd5ab", + "2": "0x3BaDD0399e9c1DFAd16dddb42D6759afE0e3e6f2", + "3": "0x7239C57c6E24C2d5cBdf6ca186d46ef33967539e", + "4": "0x036D90f25DbfC55534C8cBD659bBd891D15121E7", + "5": "0x3BaDD0399e9c1DFAd16dddb42D6759afE0e3e6f2" + }, + "resourceIds": [ + "0x0000000000000000000000c778417e063141139fce010982780140aa0cd5ab01", + "0x00000000000000000000003BaDD0399e9c1DFAd16dddb42D6759afE0e3e6f202", + "0x00000000000000000000007239C57c6E24C2d5cBdf6ca186d46ef33967539e03", + "0x0000000000000000000000036D90f25DbfC55534C8cBD659bBd891D15121E704", + "0x00000000000000000000003BaDD0399e9c1DFAd16dddb42D6759afE0e3e6f205" + ] + }, + { + "symbol": "ZERO", + "decimals": 18, + "tokenAddresses": { + "1": "0x9efce00be4e0c2d9aef18aace4e273d9ebcf574a", + "2": "0x5C2E43c99318F60Acc6503f40d734B64dA7106cc", + "3": "0x9BBba9D5be49c777A1c9cDF4ED7965A27CaBb7F2", + "4": "0x201BBbc21F3A461c775f5A8A59beD69769355dC8", + "5": "0x5C2E43c99318F60Acc6503f40d734B64dA7106cc" + }, + "resourceIds": [ + "0x00000000000000000000009efce00be4e0c2d9aef18aace4e273d9ebcf574a01", + "0x00000000000000000000005C2E43c99318F60Acc6503f40d734B64dA7106cc02", + "0x00000000000000000000009BBba9D5be49c777A1c9cDF4ED7965A27CaBb7F203", + "0x0000000000000000000000201BBbc21F3A461c775f5A8A59beD69769355dC804", + "0x00000000000000000000005C2E43c99318F60Acc6503f40d734B64dA7106cc05" + ] + } +] \ No newline at end of file diff --git a/deploy/deploy.sh b/deploy/deploy.sh index 4e460dd..3586345 100755 --- a/deploy/deploy.sh +++ b/deploy/deploy.sh @@ -4,22 +4,6 @@ set -eux GAS_LIMIT=6721975 -use_binance_mainnet() { - # admin private key, the one used to deploy contracts - PRIVATE_KEY=$BSC_PRIVATE_KEY - GAS_PRICE=10000000000 - URL=https://bsc-dataseed2.binance.org - NETWORK_ID=56 - CMD="cb-sol-cli --gasLimit $GAS_LIMIT --gasPrice $GAS_PRICE --networkId $NETWORK_ID --url $URL --privateKey $PRIVATE_KEY" - CHAIN_ID=3 - - # after running deploy_all, don't forget to modify these! - BRIDGE_ADDR=0xF82B6C89A1D3340733eA4f74F9D111b5D7127876 - ERC20_HANDLER_ADDR=0xD02408A62ED3708429ccFb04d9dEA302884ab6a7 - ERC721_HANDLER_ADDR=0xFA25795f7da372463ac90BeD787f9437688c438C - GENERIC_HANDLER_ADDR=0x0b5C2c80eC91caA336635D4BBF45c383b86A9b31 -} - use_ethereum_mainnet() { # admin private key, the one used to deploy contracts PRIVATE_KEY=$ETH_PRIVATE_KEY @@ -39,7 +23,7 @@ use_ethereum_mainnet() { use_avalanche_mainnet() { # admin private key, the one used to deploy contracts PRIVATE_KEY=$AVA_PRIVATE_KEY - GAS_PRICE=470000000000 + GAS_PRICE=225000000000 URL=https://api.avax.network/ext/bc/C/rpc NETWORK_ID=43114 CMD="cb-sol-cli --gasLimit $GAS_LIMIT --gasPrice $GAS_PRICE --networkId $NETWORK_ID --url $URL --privateKey $PRIVATE_KEY" @@ -52,38 +36,87 @@ use_avalanche_mainnet() { GENERIC_HANDLER_ADDR=0x01757bd6c8FD00d864eE1F15845d55DAbE2859eB } +use_binance_mainnet() { + # admin private key, the one used to deploy contracts + PRIVATE_KEY=$BSC_PRIVATE_KEY + GAS_PRICE=10000000000 + URL=https://bsc-dataseed2.binance.org + NETWORK_ID=56 + CMD="cb-sol-cli --gasLimit $GAS_LIMIT --gasPrice $GAS_PRICE --networkId $NETWORK_ID --url $URL --privateKey $PRIVATE_KEY" + CHAIN_ID=3 + + # after running deploy_all, don't forget to modify these! + BRIDGE_ADDR=0xF82B6C89A1D3340733eA4f74F9D111b5D7127876 + ERC20_HANDLER_ADDR=0xD02408A62ED3708429ccFb04d9dEA302884ab6a7 + ERC721_HANDLER_ADDR=0xFA25795f7da372463ac90BeD787f9437688c438C + GENERIC_HANDLER_ADDR=0x0b5C2c80eC91caA336635D4BBF45c383b86A9b31 +} + +use_polygon_mainnet() { + # admin private key, the one used to deploy contracts + PRIVATE_KEY=$PLG_PRIVATE_KEY + GAS_PRICE=1000000000 + URL=https://rpc-mainnet.matic.network + NETWORK_ID=137 + CMD="cb-sol-cli --gasLimit $GAS_LIMIT --gasPrice $GAS_PRICE --networkId $NETWORK_ID --url $URL --privateKey $PRIVATE_KEY" + # because 4 is for Moonbeam (polkadot or whatever) + CHAIN_ID=5 + + # after running deploy_all, don't forget to modify these! + BRIDGE_ADDR=0xF82B6C89A1D3340733eA4f74F9D111b5D7127876 + ERC20_HANDLER_ADDR=0xD02408A62ED3708429ccFb04d9dEA302884ab6a7 + ERC721_HANDLER_ADDR=0xFA25795f7da372463ac90BeD787f9437688c438C + GENERIC_HANDLER_ADDR=0x0b5C2c80eC91caA336635D4BBF45c383b86A9b31 +} + deploy_erc20() { - $CMD deploy --erc20 --erc20Symbol "$1" --erc20Name "$1" --erc20Decimals "$2" | python3 get_deployed_token_addr.py + if [ "$1" == "ZERO" ]; then + $CMD deploy --zero | python3 get_deployed_zero_token_addr.py + else + $CMD deploy --erc20 --erc20Symbol "$1" --erc20Name "$1" --erc20Decimals "$2" | python3 get_deployed_token_addr.py + fi } -# HERE IS WHERE REAL COMMANDS START: +deploy_zero_token() { + $CMD deploy --zero | python3 get_deployed_zero_token_addr.py + # to change minter for contract, use + # $CMD erc20 zero-change-minter --tokenAddr $ERC20_ADDR_MMB --newMinter $ERC20_HANDLER_ADDR +} -ERC20_DEPLOY_SYMBOL=zUSDT -ERC20_DEPLOY_DECIMALS=6 +deploy_bridge() { + RELAYERS=0x0cc35215953725637c433404C01546c49A0ba6A1,0xC5e370bF1F1013D913dF3AcFd5A79d2aF8BC88bA,0x4f4d8D40EAa65b2dbE7cF9f6E7fb0c807e1Ed654,0x1e6a269fE265c44Eb18AB6633C3137be48E8C898 + $CMD deploy --chainId $CHAIN_ID --relayers $RELAYERS --relayerThreshold 2 --fee 0.01 --expiry 9999999 --bridge --erc20Handler --erc721Handler --genericHandler --config true +} -ERC20_ADDR_ETH=0xdAC17F958D2ee523a2206206994597C13D831ec7 -ERC20_ADDR_AVA=0x650CECaFE61f3f65Edd21eFacCa18Cc905EeF0B7 +# HERE IS WHERE REAL COMMANDS START: -RID_ETH=0x0000000000000000000000dAC17F958D2ee523a2206206994597C13D831ec700 -RID_AVA=0x0000000000000000000000a14d2e53e7578cD69A6B97Bff054F56280A8d2C801 +ERC20_DEPLOY_SYMBOL=zINDA +ERC20_DEPLOY_DECIMALS=2 -# use_binance_mainnet +ERC20_ADDR_ETH=0x433d86336dB759855A66cCAbe4338313a8A7fc77 +RID_ETH=0x0000000000000000000000433d86336dB759855A66cCAbe4338313a8A7fc7701 -ERC20_ADDR_BSC=0xBF7e0761417F49b3FAFae564C842823f5f79DB15 -# ERC20_ADDR_BSC=$(deploy_erc20 "$ERC20_DEPLOY_SYMBOL" "$ERC20_DEPLOY_DECIMALS") -RID_BSC=0x0000000000000000000000BF7e0761417F49b3FAFae564C842823f5f79DB1503 -# RID_BSC=$(node make_resource_id.js "$ERC20_ADDR_BSC" "$CHAIN_ID") +ERC20_ADDR_AVA=0xaad259Bd29E922F9AC976b92fda938455E89e4c8 +RID_AVA=0x0000000000000000000000aad259Bd29E922F9AC976b92fda938455E89e4c802 -$CMD erc20 add-minter --erc20Address $ERC20_ADDR_BSC --minter $ERC20_HANDLER_ADDR -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_AVA +ERC20_ADDR_BSC=0x3d12A21104fCA9912F94C24b739e322e6d797fac +RID_BSC=0x00000000000000000000003d12A21104fCA9912F94C24b739e322e6d797fac03 + +use_binance_mainnet $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_ETH +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_AVA $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_BSC +$CMD erc20 add-minter --erc20Address $ERC20_ADDR_BSC --minter $ERC20_HANDLER_ADDR $CMD bridge set-burn --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --tokenContract $ERC20_ADDR_BSC - -# use_avalanche_mainnet -# $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_BSC - - -# use_ethereum_mainnet -# $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_BSC +use_avalanche_mainnet +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_ETH +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_AVA +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_BSC +$CMD erc20 add-minter --erc20Address $ERC20_ADDR_AVA --minter $ERC20_HANDLER_ADDR +$CMD bridge set-burn --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --tokenContract $ERC20_ADDR_AVA + +use_ethereum_mainnet +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_ETH +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_AVA +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_BSC diff --git a/deploy/test.env.sh b/deploy/test.env.sh deleted file mode 100644 index c302e3a..0000000 --- a/deploy/test.env.sh +++ /dev/null @@ -1,5 +0,0 @@ -export RKB_TEST_PRIVATE_KEY= -export BSC_TEST_PRIVATE_KEY= -export AVA_TEST_PRIVATE_KEY= -export MNB_TEST_PRIVATE_KEY= -export MMB_TEST_PRIVATE_KEY= diff --git a/deploy/testnet-deploy.sh b/deploy/testnet-deploy.sh index c135acd..a11a365 100755 --- a/deploy/testnet-deploy.sh +++ b/deploy/testnet-deploy.sh @@ -6,8 +6,7 @@ GAS_LIMIT=6721975 use_rinkeby_testnet() { # admin private key, the one used to deploy contracts - # PRIVATE_KEY=$RKB_TEST_PRIVATE_KEY - PRIVATE_KEY=0xe131bc3f481277a8f73d680d9ba404cc6f959e64296e0914dded403030d4f705 + PRIVATE_KEY=$RKB_TEST_PRIVATE_KEY GAS_PRICE=1000000000 URL=https://rinkeby.infura.io/v3/45174a29359d4b07ade01676259bc47a NETWORK_ID=4 @@ -64,10 +63,10 @@ use_moonbeam_testnet() { CHAIN_ID=4 # after running deploy_all, don't forget to modify these! - BRIDGE_ADDR=0xA14Af06dEc505ca794635f827a24B976a434d427 - ERC20_HANDLER_ADDR=0x63cF3afFD720F23c55cD652Ba2242EfE1bccFBfC - ERC721_HANDLER_ADDR=0x3BaDD0399e9c1DFAd16dddb42D6759afE0e3e6f2 - GENERIC_HANDLER_ADDR=0x5C2E43c99318F60Acc6503f40d734B64dA7106cc + BRIDGE_ADDR=0xD73CFAACEfe4812d350d38f634fA61eC3aFdFEbA + ERC20_HANDLER_ADDR=0xff7c781E1ed2A67a790Be70536299c7DFE4D5f33 + ERC721_HANDLER_ADDR=0x7dd096B0676B83e1D28aa8AFc375Bce5C2BF3b6c + GENERIC_HANDLER_ADDR=0xb3c908620736D4d6b4fB67D7eFCFb23403A6F4DA } use_mumbai_testnet() { @@ -96,7 +95,67 @@ deploy_zero_token() { # $CMD erc20 zero-change-minter --tokenAddr $ERC20_ADDR_MMB --newMinter $ERC20_HANDLER_ADDR } -use_rinkeby_testnet +deploy_bridge() { + RELAYERS=0x62C85B403ead6BdF3dA6f86eD8398dcB047CAB95 + $CMD deploy --chainId $CHAIN_ID --relayers $RELAYERS --relayerThreshold 1 --fee 0.01 --expiry 9999999 --bridge --erc20Handler --erc721Handler --genericHandler --config true +} + +# use_binance_testnet + +# ERC20_DEPLOY_SYMBOL=zINDA +# ERC20_DEPLOY_DECIMALS=2 +# ERC20_ADDR_ETH=0x433d86336dB759855A66cCAbe4338313a8A7fc77 +# RID_ETH=0x0000000000000000000000433d86336dB759855A66cCAbe4338313a8A7fc7701 + +# ERC20_ADDR_BSC=$(deploy_erc20 $ERC20_DEPLOY_SYMBOL $ERC20_DEPLOY_DECIMALS) +# RID_BSC=$(node make_resource_id.js "$ERC20_ADDR_PLG" "$CHAIN_ID") + + + +# $CMD deploy --chainId $CHAIN_ID --relayers 0x62C85B403ead6BdF3dA6f86eD8398dcB047CAB95 --relayerThreshold 1 --fee 0.01 --expiry 999999 --bridge --erc20Handler --erc721Handler --genericHandler --config true # $CMD erc20 approve --recipient $ERC20_HANDLER_ADDR --erc20Address 0x9efce00be4e0c2d9aef18aace4e273d9ebcf574a # $CMD erc20 deposit --dest 5 --recipient 0x52312AD6f01657413b2eaE9287f6B9ADaD93D5FE --resourceId 0x00000000000000000000009efce00be4e0c2d9aef18aace4e273d9ebcf574a01 --bridge $BRIDGE_ADDR + +# use_moonbeam_testnet + +# ERC20_DEPLOY_SYMBOL=ZERO +# ERC20_DEPLOY_DECIMALS=18 + +# ERC20_ADDR_ETH=0x9efce00be4e0c2d9aef18aace4e273d9ebcf574a +# RID_ETH=0x00000000000000000000009efce00be4e0c2d9aef18aace4e273d9ebcf574a01 + +# ERC20_ADDR_AVA=0x5C2E43c99318F60Acc6503f40d734B64dA7106cc +# RID_AVA=0x00000000000000000000005C2E43c99318F60Acc6503f40d734B64dA7106cc02 + +# ERC20_ADDR_BSC=0x9BBba9D5be49c777A1c9cDF4ED7965A27CaBb7F2 +# RID_BSC=0x00000000000000000000009BBba9D5be49c777A1c9cDF4ED7965A27CaBb7F203 + +# ERC20_ADDR_MMB=0x5C2E43c99318F60Acc6503f40d734B64dA7106cc +# RID_MMB=0x00000000000000000000005C2E43c99318F60Acc6503f40d734B64dA7106cc05 + +# ERC20_ADDR_MNB=$(deploy_zero_token) +# RID_MNB=$(node make_resource_id.js "$ERC20_ADDR_MNB" "$CHAIN_ID") + +# $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_MNB --resourceId $RID_ETH +# $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_MNB --resourceId $RID_AVA +# $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_MNB --resourceId $RID_BSC +# $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_MNB --resourceId $RID_MMB +# $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_MNB --resourceId $RID_MNB + +# # $CMD erc20 add-minter --erc20Address $ERC20_ADDR_MNB --minter $ERC20_HANDLER_ADDR +# $CMD erc20 zero-change-minter --tokenAddr $ERC20_ADDR_MNB --newMinter $ERC20_HANDLER_ADDR +# $CMD bridge set-burn --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --tokenContract $ERC20_ADDR_MNB + + +# use_rinkeby_testnet +# $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_MNB + +# use_avalanche_testnet +# $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_MNB + +# use_binance_testnet +# $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_MNB + +# use_mumbai_testnet +# $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_MMB --resourceId $RID_MNB From acbbb5a4812f491ad5bd0e7ddd646d31478425b1 Mon Sep 17 00:00:00 2001 From: winter256 Date: Thu, 15 Apr 2021 18:57:49 +0300 Subject: [PATCH 05/20] Redeploy INDA in bsc and ava --- deploy/deploy.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/deploy/deploy.sh b/deploy/deploy.sh index 3586345..3df23d8 100755 --- a/deploy/deploy.sh +++ b/deploy/deploy.sh @@ -2,7 +2,7 @@ set -eux -GAS_LIMIT=6721975 +GAS_LIMIT=1721975 use_ethereum_mainnet() { # admin private key, the one used to deploy contracts @@ -90,17 +90,17 @@ deploy_bridge() { # HERE IS WHERE REAL COMMANDS START: -ERC20_DEPLOY_SYMBOL=zINDA +ERC20_DEPLOY_SYMBOL=INDA ERC20_DEPLOY_DECIMALS=2 ERC20_ADDR_ETH=0x433d86336dB759855A66cCAbe4338313a8A7fc77 RID_ETH=0x0000000000000000000000433d86336dB759855A66cCAbe4338313a8A7fc7701 -ERC20_ADDR_AVA=0xaad259Bd29E922F9AC976b92fda938455E89e4c8 -RID_AVA=0x0000000000000000000000aad259Bd29E922F9AC976b92fda938455E89e4c802 +ERC20_ADDR_AVA=0x791FD27ef5ea8deE4746A1b2A1b95b6247f67b7D +RID_AVA=0x0000000000000000000000791FD27ef5ea8deE4746A1b2A1b95b6247f67b7D02 -ERC20_ADDR_BSC=0x3d12A21104fCA9912F94C24b739e322e6d797fac -RID_BSC=0x00000000000000000000003d12A21104fCA9912F94C24b739e322e6d797fac03 +ERC20_ADDR_BSC=0xC878A79B63A41a831E469AE1A830A765eFd9d468 +RID_BSC=0x0000000000000000000000C878A79B63A41a831E469AE1A830A765eFd9d46803 use_binance_mainnet $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_ETH From d404323462a56e0f1929b69133121b5f1a3aa1bf Mon Sep 17 00:00:00 2001 From: winter256 Date: Wed, 28 Apr 2021 15:56:43 +0300 Subject: [PATCH 06/20] Add Gondola to crosschain --- deploy/deploy.sh | 33 ++++++++++++++------------------- deploy/testnet-deploy.sh | 14 +++++++------- 2 files changed, 21 insertions(+), 26 deletions(-) diff --git a/deploy/deploy.sh b/deploy/deploy.sh index 3df23d8..c95a4f2 100755 --- a/deploy/deploy.sh +++ b/deploy/deploy.sh @@ -2,12 +2,12 @@ set -eux -GAS_LIMIT=1721975 +GAS_LIMIT=3721975 use_ethereum_mainnet() { # admin private key, the one used to deploy contracts PRIVATE_KEY=$ETH_PRIVATE_KEY - GAS_PRICE=150000000000 + GAS_PRICE=100000000000 URL=https://mainnet.infura.io/v3/45174a29359d4b07ade01676259bc47a NETWORK_ID=1 CMD="cb-sol-cli --gasLimit $GAS_LIMIT --gasPrice $GAS_PRICE --networkId $NETWORK_ID --url $URL --privateKey $PRIVATE_KEY" @@ -73,16 +73,10 @@ deploy_erc20() { if [ "$1" == "ZERO" ]; then $CMD deploy --zero | python3 get_deployed_zero_token_addr.py else - $CMD deploy --erc20 --erc20Symbol "$1" --erc20Name "$1" --erc20Decimals "$2" | python3 get_deployed_token_addr.py + $CMD deploy --erc20 --erc20Symbol "$1" --erc20Name "$2" --erc20Decimals "$3" | python3 get_deployed_token_addr.py fi } -deploy_zero_token() { - $CMD deploy --zero | python3 get_deployed_zero_token_addr.py - # to change minter for contract, use - # $CMD erc20 zero-change-minter --tokenAddr $ERC20_ADDR_MMB --newMinter $ERC20_HANDLER_ADDR -} - deploy_bridge() { RELAYERS=0x0cc35215953725637c433404C01546c49A0ba6A1,0xC5e370bF1F1013D913dF3AcFd5A79d2aF8BC88bA,0x4f4d8D40EAa65b2dbE7cF9f6E7fb0c807e1Ed654,0x1e6a269fE265c44Eb18AB6633C3137be48E8C898 $CMD deploy --chainId $CHAIN_ID --relayers $RELAYERS --relayerThreshold 2 --fee 0.01 --expiry 9999999 --bridge --erc20Handler --erc721Handler --genericHandler --config true @@ -90,17 +84,18 @@ deploy_bridge() { # HERE IS WHERE REAL COMMANDS START: -ERC20_DEPLOY_SYMBOL=INDA -ERC20_DEPLOY_DECIMALS=2 +ERC20_DEPLOY_SYMBOL="GDL" +ERC20_DEPLOY_NAME="Gondola" +ERC20_DEPLOY_DECIMALS=18 -ERC20_ADDR_ETH=0x433d86336dB759855A66cCAbe4338313a8A7fc77 -RID_ETH=0x0000000000000000000000433d86336dB759855A66cCAbe4338313a8A7fc7701 +ERC20_ADDR_ETH=0x823cE9cca0b9eE2BC4C2d764d304691d770DbBe9 +RID_ETH=0x0000000000000000000000823cE9cca0b9eE2BC4C2d764d304691d770DbBe901 -ERC20_ADDR_AVA=0x791FD27ef5ea8deE4746A1b2A1b95b6247f67b7D -RID_AVA=0x0000000000000000000000791FD27ef5ea8deE4746A1b2A1b95b6247f67b7D02 +ERC20_ADDR_AVA=0x0xD606199557c8Ab6F4Cc70bD03FaCc96ca576f142 +RID_AVA=0x0000000000000000000000D606199557c8Ab6F4Cc70bD03FaCc96ca576f14202 -ERC20_ADDR_BSC=0xC878A79B63A41a831E469AE1A830A765eFd9d468 -RID_BSC=0x0000000000000000000000C878A79B63A41a831E469AE1A830A765eFd9d46803 +ERC20_ADDR_BSC=0xd705223747C7AF3386a70abbE586d390A6877687 +RID_BSC=0x0000000000000000000000d705223747C7AF3386a70abbE586d390A687768703 use_binance_mainnet $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_ETH @@ -113,10 +108,10 @@ use_avalanche_mainnet $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_ETH $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_AVA $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_BSC -$CMD erc20 add-minter --erc20Address $ERC20_ADDR_AVA --minter $ERC20_HANDLER_ADDR -$CMD bridge set-burn --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --tokenContract $ERC20_ADDR_AVA use_ethereum_mainnet $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_ETH $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_AVA $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_BSC +$CMD erc20 add-minter --erc20Address $ERC20_ADDR_ETH --minter $ERC20_HANDLER_ADDR +$CMD bridge set-burn --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --tokenContract $ERC20_ADDR_ETH diff --git a/deploy/testnet-deploy.sh b/deploy/testnet-deploy.sh index a11a365..5ab26f3 100755 --- a/deploy/testnet-deploy.sh +++ b/deploy/testnet-deploy.sh @@ -100,16 +100,16 @@ deploy_bridge() { $CMD deploy --chainId $CHAIN_ID --relayers $RELAYERS --relayerThreshold 1 --fee 0.01 --expiry 9999999 --bridge --erc20Handler --erc721Handler --genericHandler --config true } -# use_binance_testnet +use_rinkeby_testnet -# ERC20_DEPLOY_SYMBOL=zINDA -# ERC20_DEPLOY_DECIMALS=2 +ERC20_DEPLOY_SYMBOL=zINDA +ERC20_DEPLOY_DECIMALS=2 -# ERC20_ADDR_ETH=0x433d86336dB759855A66cCAbe4338313a8A7fc77 -# RID_ETH=0x0000000000000000000000433d86336dB759855A66cCAbe4338313a8A7fc7701 +ERC20_ADDR_ETH=0x433d86336dB759855A66cCAbe4338313a8A7fc77 +RID_ETH=0x0000000000000000000000433d86336dB759855A66cCAbe4338313a8A7fc7701 -# ERC20_ADDR_BSC=$(deploy_erc20 $ERC20_DEPLOY_SYMBOL $ERC20_DEPLOY_DECIMALS) -# RID_BSC=$(node make_resource_id.js "$ERC20_ADDR_PLG" "$CHAIN_ID") +ERC20_ADDR_BSC=$(deploy_erc20 $ERC20_DEPLOY_SYMBOL $ERC20_DEPLOY_DECIMALS) +RID_BSC=$(node make_resource_id.js "$ERC20_ADDR_PLG" "$CHAIN_ID") From f8848f79f74b033d2ffaa03fb3cfb024599160f0 Mon Sep 17 00:00:00 2001 From: winter256 Date: Tue, 11 May 2021 01:17:13 +0300 Subject: [PATCH 07/20] Register CHART token --- deploy/deploy.sh | 31 +++++++++++++------------------ deploy/testnet-deploy.sh | 14 +++++++------- 2 files changed, 20 insertions(+), 25 deletions(-) diff --git a/deploy/deploy.sh b/deploy/deploy.sh index 3df23d8..72cc0df 100755 --- a/deploy/deploy.sh +++ b/deploy/deploy.sh @@ -2,12 +2,12 @@ set -eux -GAS_LIMIT=1721975 +GAS_LIMIT=3721975 use_ethereum_mainnet() { # admin private key, the one used to deploy contracts PRIVATE_KEY=$ETH_PRIVATE_KEY - GAS_PRICE=150000000000 + GAS_PRICE=100000000000 URL=https://mainnet.infura.io/v3/45174a29359d4b07ade01676259bc47a NETWORK_ID=1 CMD="cb-sol-cli --gasLimit $GAS_LIMIT --gasPrice $GAS_PRICE --networkId $NETWORK_ID --url $URL --privateKey $PRIVATE_KEY" @@ -39,7 +39,7 @@ use_avalanche_mainnet() { use_binance_mainnet() { # admin private key, the one used to deploy contracts PRIVATE_KEY=$BSC_PRIVATE_KEY - GAS_PRICE=10000000000 + GAS_PRICE=12000000000 URL=https://bsc-dataseed2.binance.org NETWORK_ID=56 CMD="cb-sol-cli --gasLimit $GAS_LIMIT --gasPrice $GAS_PRICE --networkId $NETWORK_ID --url $URL --privateKey $PRIVATE_KEY" @@ -73,16 +73,10 @@ deploy_erc20() { if [ "$1" == "ZERO" ]; then $CMD deploy --zero | python3 get_deployed_zero_token_addr.py else - $CMD deploy --erc20 --erc20Symbol "$1" --erc20Name "$1" --erc20Decimals "$2" | python3 get_deployed_token_addr.py + $CMD deploy --erc20 --erc20Symbol "$1" --erc20Name "$2" --erc20Decimals "$3" | python3 get_deployed_token_addr.py fi } -deploy_zero_token() { - $CMD deploy --zero | python3 get_deployed_zero_token_addr.py - # to change minter for contract, use - # $CMD erc20 zero-change-minter --tokenAddr $ERC20_ADDR_MMB --newMinter $ERC20_HANDLER_ADDR -} - deploy_bridge() { RELAYERS=0x0cc35215953725637c433404C01546c49A0ba6A1,0xC5e370bF1F1013D913dF3AcFd5A79d2aF8BC88bA,0x4f4d8D40EAa65b2dbE7cF9f6E7fb0c807e1Ed654,0x1e6a269fE265c44Eb18AB6633C3137be48E8C898 $CMD deploy --chainId $CHAIN_ID --relayers $RELAYERS --relayerThreshold 2 --fee 0.01 --expiry 9999999 --bridge --erc20Handler --erc721Handler --genericHandler --config true @@ -90,17 +84,18 @@ deploy_bridge() { # HERE IS WHERE REAL COMMANDS START: -ERC20_DEPLOY_SYMBOL=INDA -ERC20_DEPLOY_DECIMALS=2 +ERC20_DEPLOY_SYMBOL=CHART +ERC20_DEPLOY_NAME=ChartEx +ERC20_DEPLOY_DECIMALS=18 -ERC20_ADDR_ETH=0x433d86336dB759855A66cCAbe4338313a8A7fc77 -RID_ETH=0x0000000000000000000000433d86336dB759855A66cCAbe4338313a8A7fc7701 +ERC20_ADDR_ETH=0x1d37986F252d0e349522EA6C3B98Cb935495E63E +RID_ETH=0x00000000000000000000001d37986F252d0e349522EA6C3B98Cb935495E63E01 -ERC20_ADDR_AVA=0x791FD27ef5ea8deE4746A1b2A1b95b6247f67b7D -RID_AVA=0x0000000000000000000000791FD27ef5ea8deE4746A1b2A1b95b6247f67b7D02 +ERC20_ADDR_AVA=0xD769bDFc0CaEe933dc0a047C7dBad2Ec42CFb3E2 +RID_AVA=0x0000000000000000000000D769bDFc0CaEe933dc0a047C7dBad2Ec42CFb3E202 -ERC20_ADDR_BSC=0xC878A79B63A41a831E469AE1A830A765eFd9d468 -RID_BSC=0x0000000000000000000000C878A79B63A41a831E469AE1A830A765eFd9d46803 +ERC20_ADDR_BSC=0xc33A42C9D19f944FA12ff46f27B3B85e18a13778 +RID_BSC=0x0000000000000000000000c33A42C9D19f944FA12ff46f27B3B85e18a1377803 use_binance_mainnet $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_ETH diff --git a/deploy/testnet-deploy.sh b/deploy/testnet-deploy.sh index a11a365..5ab26f3 100755 --- a/deploy/testnet-deploy.sh +++ b/deploy/testnet-deploy.sh @@ -100,16 +100,16 @@ deploy_bridge() { $CMD deploy --chainId $CHAIN_ID --relayers $RELAYERS --relayerThreshold 1 --fee 0.01 --expiry 9999999 --bridge --erc20Handler --erc721Handler --genericHandler --config true } -# use_binance_testnet +use_rinkeby_testnet -# ERC20_DEPLOY_SYMBOL=zINDA -# ERC20_DEPLOY_DECIMALS=2 +ERC20_DEPLOY_SYMBOL=zINDA +ERC20_DEPLOY_DECIMALS=2 -# ERC20_ADDR_ETH=0x433d86336dB759855A66cCAbe4338313a8A7fc77 -# RID_ETH=0x0000000000000000000000433d86336dB759855A66cCAbe4338313a8A7fc7701 +ERC20_ADDR_ETH=0x433d86336dB759855A66cCAbe4338313a8A7fc77 +RID_ETH=0x0000000000000000000000433d86336dB759855A66cCAbe4338313a8A7fc7701 -# ERC20_ADDR_BSC=$(deploy_erc20 $ERC20_DEPLOY_SYMBOL $ERC20_DEPLOY_DECIMALS) -# RID_BSC=$(node make_resource_id.js "$ERC20_ADDR_PLG" "$CHAIN_ID") +ERC20_ADDR_BSC=$(deploy_erc20 $ERC20_DEPLOY_SYMBOL $ERC20_DEPLOY_DECIMALS) +RID_BSC=$(node make_resource_id.js "$ERC20_ADDR_PLG" "$CHAIN_ID") From 94b713f565039073533d7c60344e0c78d0fdeec4 Mon Sep 17 00:00:00 2001 From: winter256 Date: Tue, 11 May 2021 19:34:07 +0300 Subject: [PATCH 08/20] Update bridge address for avalanche mainnet --- deploy/deploy.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deploy/deploy.sh b/deploy/deploy.sh index 72cc0df..93bd031 100755 --- a/deploy/deploy.sh +++ b/deploy/deploy.sh @@ -30,8 +30,8 @@ use_avalanche_mainnet() { CHAIN_ID=2 # after running deploy_all, don't forget to modify these! - BRIDGE_ADDR=0x827CdA479f93CA75cAe0E6927de09e33285617Ac - ERC20_HANDLER_ADDR=0xebb531992d89A5d4bd6fd9D76fa2669336cec3d4 + BRIDGE_ADDR=0xee8aE1088D02CCDA2CDd0FdA2381DB679d0b122E + ERC20_HANDLER_ADDR=0x40a07f36655A0724557cA53A9E5D1b5018e9Df32 ERC721_HANDLER_ADDR=0x540726dbb3366185cf5a82FCe92F326bE355b891 GENERIC_HANDLER_ADDR=0x01757bd6c8FD00d864eE1F15845d55DAbE2859eB } From 882b520a21adfb16fdb0767af716fd4d538d9910 Mon Sep 17 00:00:00 2001 From: winter256 Date: Fri, 14 May 2021 18:56:28 +0300 Subject: [PATCH 09/20] Register zero bsc/polygon --- checks/src/check-minters-admins.js | 6 ++-- checks/src/token-info.json | 30 +++++++++++++++++++- deploy/deploy.sh | 45 +++++++++++++----------------- 3 files changed, 52 insertions(+), 29 deletions(-) diff --git a/checks/src/check-minters-admins.js b/checks/src/check-minters-admins.js index 3ab6b1d..af9c2fe 100644 --- a/checks/src/check-minters-admins.js +++ b/checks/src/check-minters-admins.js @@ -1,10 +1,10 @@ const ethers = require('ethers'); -const config = require('./testnet-config'); +const config = require('./config'); const bridgeABI = require('../../cb-sol-cli/chainbridge-solidity/build/contracts/Bridge.json').abi const erc20HandlerABI = require('../../cb-sol-cli/chainbridge-solidity/build/contracts/ERC20Handler.json').abi const erc20ABI = require('../../cb-sol-cli/chainbridge-solidity/build/contracts/ERC20PresetMinterPauser.json').abi -const tokenInfos = require('./testnet-token-info.json'); +const tokenInfos = require('./token-info.json'); class Checker { constructor(cfg) { @@ -38,7 +38,7 @@ class Checker { } (async () => { - const cfg = config.ETH; + const cfg = config.AVA; const checker = new Checker(cfg); const ALEX_ADDR = '0x0cc35215953725637c433404C01546c49A0ba6A1'; diff --git a/checks/src/token-info.json b/checks/src/token-info.json index 6fb8541..ecb66d7 100644 --- a/checks/src/token-info.json +++ b/checks/src/token-info.json @@ -180,5 +180,33 @@ "0x0000000000000000000000a14d2e53e7578cD69A6B97Bff054F56280A8d2C801", "0x0000000000000000000000BF7e0761417F49b3FAFae564C842823f5f79DB1503" ] - } + }, + { + "symbol": "INDA", + "decimals": 2, + "tokenAddresses": { + "1": "0x433d86336dB759855A66cCAbe4338313a8A7fc77", + "2": "0x791FD27ef5ea8deE4746A1b2A1b95b6247f67b7D", + "3": "0xC878A79B63A41a831E469AE1A830A765eFd9d468" + }, + "resourceIds": [ + "0x0000000000000000000000433d86336dB759855A66cCAbe4338313a8A7fc7701", + "0x0000000000000000000000791FD27ef5ea8deE4746A1b2A1b95b6247f67b7D02", + "0x0000000000000000000000C878A79B63A41a831E469AE1A830A765eFd9d46803" + ] + }, + { + "symbol": "CHART", + "decimals": 18, + "tokenAddresses": { + "1": "0x1d37986F252d0e349522EA6C3B98Cb935495E63E", + "2": "0xD769bDFc0CaEe933dc0a047C7dBad2Ec42CFb3E2", + "3": "0xc33A42C9D19f944FA12ff46f27B3B85e18a13778" + }, + "resourceIds": [ + "0x00000000000000000000001d37986F252d0e349522EA6C3B98Cb935495E63E01", + "0x0000000000000000000000D769bDFc0CaEe933dc0a047C7dBad2Ec42CFb3E202", + "0x0000000000000000000000c33A42C9D19f944FA12ff46f27B3B85e18a1377803" + ] + } ] \ No newline at end of file diff --git a/deploy/deploy.sh b/deploy/deploy.sh index 93bd031..f9d2e66 100755 --- a/deploy/deploy.sh +++ b/deploy/deploy.sh @@ -84,34 +84,29 @@ deploy_bridge() { # HERE IS WHERE REAL COMMANDS START: -ERC20_DEPLOY_SYMBOL=CHART -ERC20_DEPLOY_NAME=ChartEx +ERC20_DEPLOY_SYMBOL=ZERO +ERC20_DEPLOY_NAME=ZERO ERC20_DEPLOY_DECIMALS=18 -ERC20_ADDR_ETH=0x1d37986F252d0e349522EA6C3B98Cb935495E63E -RID_ETH=0x00000000000000000000001d37986F252d0e349522EA6C3B98Cb935495E63E01 +ERC20_ADDR_ETH=0xF0939011a9bb95c3B791f0cb546377Ed2693a574 +RID_ETH=0x0000000000000000000000F0939011a9bb95c3B791f0cb546377Ed2693a57401 -ERC20_ADDR_AVA=0xD769bDFc0CaEe933dc0a047C7dBad2Ec42CFb3E2 -RID_AVA=0x0000000000000000000000D769bDFc0CaEe933dc0a047C7dBad2Ec42CFb3E202 +ERC20_ADDR_AVA=0x008E26068B3EB40B443d3Ea88c1fF99B789c10F7 +RID_AVA=0x0000000000000000000000008E26068B3EB40B443d3Ea88c1fF99B789c10F702 -ERC20_ADDR_BSC=0xc33A42C9D19f944FA12ff46f27B3B85e18a13778 -RID_BSC=0x0000000000000000000000c33A42C9D19f944FA12ff46f27B3B85e18a1377803 +ERC20_ADDR_BSC=0x1f534d2B1ee2933f1fdF8e4b63A44b2249d77EAf +RID_BSC=0x00000000000000000000001f534d2B1ee2933f1fdF8e4b63A44b2249d77EAf03 + +ERC20_ADDR_PLG=0xb67176655e7919a27aA34C279157124619aDFd4B +RID_PLG=0x0000000000000000000000b67176655e7919a27aA34C279157124619aDFd4B05 use_binance_mainnet -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_ETH -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_AVA -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_BSC -$CMD erc20 add-minter --erc20Address $ERC20_ADDR_BSC --minter $ERC20_HANDLER_ADDR -$CMD bridge set-burn --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --tokenContract $ERC20_ADDR_BSC - -use_avalanche_mainnet -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_ETH -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_AVA -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_BSC -$CMD erc20 add-minter --erc20Address $ERC20_ADDR_AVA --minter $ERC20_HANDLER_ADDR -$CMD bridge set-burn --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --tokenContract $ERC20_ADDR_AVA - -use_ethereum_mainnet -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_ETH -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_AVA -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_BSC +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_PLG + +# use_polygon_mainnet +# $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_ETH +# $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_AVA +# $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_BSC +# $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_PLG +# $CMD erc20 add-minter --erc20Address $ERC20_ADDR_PLG --minter $ERC20_HANDLER_ADDR +# $CMD bridge set-burn --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --tokenContract $ERC20_ADDR_PLG From cee0703dee67d835792b2b5874ce0e32acab8fb7 Mon Sep 17 00:00:00 2001 From: winter256 Date: Mon, 17 May 2021 21:34:12 +0300 Subject: [PATCH 10/20] Register resources on ava and eth --- deploy/deploy.sh | 63 +++++++++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 28 deletions(-) diff --git a/deploy/deploy.sh b/deploy/deploy.sh index f9d2e66..1001bad 100755 --- a/deploy/deploy.sh +++ b/deploy/deploy.sh @@ -7,7 +7,7 @@ GAS_LIMIT=3721975 use_ethereum_mainnet() { # admin private key, the one used to deploy contracts PRIVATE_KEY=$ETH_PRIVATE_KEY - GAS_PRICE=100000000000 + GAS_PRICE=140000000000 URL=https://mainnet.infura.io/v3/45174a29359d4b07ade01676259bc47a NETWORK_ID=1 CMD="cb-sol-cli --gasLimit $GAS_LIMIT --gasPrice $GAS_PRICE --networkId $NETWORK_ID --url $URL --privateKey $PRIVATE_KEY" @@ -55,7 +55,7 @@ use_binance_mainnet() { use_polygon_mainnet() { # admin private key, the one used to deploy contracts PRIVATE_KEY=$PLG_PRIVATE_KEY - GAS_PRICE=1000000000 + GAS_PRICE=5000000000 URL=https://rpc-mainnet.matic.network NETWORK_ID=137 CMD="cb-sol-cli --gasLimit $GAS_LIMIT --gasPrice $GAS_PRICE --networkId $NETWORK_ID --url $URL --privateKey $PRIVATE_KEY" @@ -84,29 +84,36 @@ deploy_bridge() { # HERE IS WHERE REAL COMMANDS START: -ERC20_DEPLOY_SYMBOL=ZERO -ERC20_DEPLOY_NAME=ZERO -ERC20_DEPLOY_DECIMALS=18 - -ERC20_ADDR_ETH=0xF0939011a9bb95c3B791f0cb546377Ed2693a574 -RID_ETH=0x0000000000000000000000F0939011a9bb95c3B791f0cb546377Ed2693a57401 - -ERC20_ADDR_AVA=0x008E26068B3EB40B443d3Ea88c1fF99B789c10F7 -RID_AVA=0x0000000000000000000000008E26068B3EB40B443d3Ea88c1fF99B789c10F702 - -ERC20_ADDR_BSC=0x1f534d2B1ee2933f1fdF8e4b63A44b2249d77EAf -RID_BSC=0x00000000000000000000001f534d2B1ee2933f1fdF8e4b63A44b2249d77EAf03 - -ERC20_ADDR_PLG=0xb67176655e7919a27aA34C279157124619aDFd4B -RID_PLG=0x0000000000000000000000b67176655e7919a27aA34C279157124619aDFd4B05 - -use_binance_mainnet -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_PLG - -# use_polygon_mainnet -# $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_ETH -# $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_AVA -# $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_BSC -# $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_PLG -# $CMD erc20 add-minter --erc20Address $ERC20_ADDR_PLG --minter $ERC20_HANDLER_ADDR -# $CMD bridge set-burn --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --tokenContract $ERC20_ADDR_PLG +use_avalanche_mainnet +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x474Bb79C3e8E65DcC6dF30F9dE68592ed48BBFDb --resourceId 0x0000000000000000000000823cE9cca0b9eE2BC4C2d764d304691d770DbBe905 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0xf6F3EEa905ac1da6F6DD37d06810C6Fcb0EF5183 --resourceId 0x00000000000000000000004801D3057109758C3Cc82859Fe28C5692802033005 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0xc4f4Ff34A2e2cF5e4c892476BB2D056871125452 --resourceId 0x00000000000000000000002FaB07236d5E1F400568E475B21dBc6AdFEd57D505 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x12f108E6138d4A9c58511e042399cF8f90D5673f --resourceId 0x00000000000000000000005b75Ff9e5c15Bb94AB166A80dD5398B3B9f50E2505 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x008E26068B3EB40B443d3Ea88c1fF99B789c10F7 --resourceId 0x0000000000000000000000b67176655e7919a27aA34C279157124619aDFd4B05 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7 --resourceId 0x0000000000000000000000Ea83FCEe5875c8f09B0a9B999CBbB1CeD26A462B05 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0xc770701264aD059DD5700Ff68e85ea7A2CaaeF0B --resourceId 0x0000000000000000000000317Edd9783a712Cb412806e6273d7c81C6738D9805 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0xbf5a94cFe186FC22aFd6637243b9822586960825 --resourceId 0x000000000000000000000052AbdB3536a3a966056e096F2572B2755df26eac05 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0xBa9aF11661520129Af69d233E92d69BD40CD90AF --resourceId 0x0000000000000000000000ba79bf6D52934D3b55FE0c14565A083c74FBD22405 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0xD4feE2e3F88B9138B74a323B40bC63bcc1A1B9eC --resourceId 0x00000000000000000000003Fc84b2B0F0CFa85A83F5215ec0A56930a49C14105 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x5a0dDfA245c02d1256AfDcDa38aDFE89F34367Ce --resourceId 0x000000000000000000000010B34Bd0d3b4532BE749b39Aae4B01d229e538E305 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0xD94f76f8DD5c3832dd798621c0d673bBae9D946b --resourceId 0x00000000000000000000007c815BBc21FED2B97CA163552991A5C30d6a233605 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x650CECaFE61f3f65Edd21eFacCa18Cc905EeF0B7 --resourceId 0x0000000000000000000000404Ab89684d499Dbe864a1B9811fEb9be2fFADA205 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x791FD27ef5ea8deE4746A1b2A1b95b6247f67b7D --resourceId 0x000000000000000000000021d815016bF0a24CA6E169bd1A32C50514aab91F05 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0xD769bDFc0CaEe933dc0a047C7dBad2Ec42CFb3E2 --resourceId 0x0000000000000000000000083c56d87eAD73D6231C165Ec450C6E28f3399C905 + +use_ethereum_mainnet +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 --resourceId 0x0000000000000000000000823cE9cca0b9eE2BC4C2d764d304691d770DbBe905 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 --resourceId 0x00000000000000000000004801D3057109758C3Cc82859Fe28C5692802033005 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x2260fac5e5542a773aa44fbcfedf7c193bc2c599 --resourceId 0x00000000000000000000002FaB07236d5E1F400568E475B21dBc6AdFEd57D505 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x6b175474e89094c44da98b954eedeac495271d0f --resourceId 0x00000000000000000000005b75Ff9e5c15Bb94AB166A80dD5398B3B9f50E2505 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0xF0939011a9bb95c3B791f0cb546377Ed2693a574 --resourceId 0x0000000000000000000000b67176655e7919a27aA34C279157124619aDFd4B05 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x743864B0562754F47f91CD400Ac8d4356a8fc720 --resourceId 0x0000000000000000000000Ea83FCEe5875c8f09B0a9B999CBbB1CeD26A462B05 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x514910771af9ca656af840dff83e8264ecf986ca --resourceId 0x0000000000000000000000317Edd9783a712Cb412806e6273d7c81C6738D9805 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9 --resourceId 0x000000000000000000000052AbdB3536a3a966056e096F2572B2755df26eac05 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984 --resourceId 0x0000000000000000000000ba79bf6D52934D3b55FE0c14565A083c74FBD22405 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x6B3595068778DD592e39A122f4f5a5cF09C90fE2 --resourceId 0x00000000000000000000003Fc84b2B0F0CFa85A83F5215ec0A56930a49C14105 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x111111111117dc0aa78b770fa6a738034120c302 --resourceId 0x000000000000000000000010B34Bd0d3b4532BE749b39Aae4B01d229e538E305 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e --resourceId 0x00000000000000000000007c815BBc21FED2B97CA163552991A5C30d6a233605 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0xdAC17F958D2ee523a2206206994597C13D831ec7 --resourceId 0x0000000000000000000000404Ab89684d499Dbe864a1B9811fEb9be2fFADA205 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x433d86336dB759855A66cCAbe4338313a8A7fc77 --resourceId 0x000000000000000000000021d815016bF0a24CA6E169bd1A32C50514aab91F05 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x1d37986F252d0e349522EA6C3B98Cb935495E63E --resourceId 0x0000000000000000000000083c56d87eAD73D6231C165Ec450C6E28f3399C905 From e5bb62792d3e6d320270d7478d6c44bdf555db9a Mon Sep 17 00:00:00 2001 From: winter256 Date: Tue, 1 Jun 2021 04:28:38 +0300 Subject: [PATCH 11/20] Add grow token --- deploy/deploy.sh | 80 ++++++++++++++++++++++++++++-------------------- 1 file changed, 46 insertions(+), 34 deletions(-) diff --git a/deploy/deploy.sh b/deploy/deploy.sh index 1001bad..9b7637d 100755 --- a/deploy/deploy.sh +++ b/deploy/deploy.sh @@ -7,7 +7,7 @@ GAS_LIMIT=3721975 use_ethereum_mainnet() { # admin private key, the one used to deploy contracts PRIVATE_KEY=$ETH_PRIVATE_KEY - GAS_PRICE=140000000000 + GAS_PRICE=22000000000 URL=https://mainnet.infura.io/v3/45174a29359d4b07ade01676259bc47a NETWORK_ID=1 CMD="cb-sol-cli --gasLimit $GAS_LIMIT --gasPrice $GAS_PRICE --networkId $NETWORK_ID --url $URL --privateKey $PRIVATE_KEY" @@ -55,10 +55,10 @@ use_binance_mainnet() { use_polygon_mainnet() { # admin private key, the one used to deploy contracts PRIVATE_KEY=$PLG_PRIVATE_KEY - GAS_PRICE=5000000000 + GAS_PRICE=1200000000 URL=https://rpc-mainnet.matic.network NETWORK_ID=137 - CMD="cb-sol-cli --gasLimit $GAS_LIMIT --gasPrice $GAS_PRICE --networkId $NETWORK_ID --url $URL --privateKey $PRIVATE_KEY" + CMD="cb-sol-cli --gasLimit "$GAS_LIMIT" --gasPrice "$GAS_PRICE" --networkId "$NETWORK_ID" --url "$URL" --privateKey "$PRIVATE_KEY"" # because 4 is for Moonbeam (polkadot or whatever) CHAIN_ID=5 @@ -79,41 +79,53 @@ deploy_erc20() { deploy_bridge() { RELAYERS=0x0cc35215953725637c433404C01546c49A0ba6A1,0xC5e370bF1F1013D913dF3AcFd5A79d2aF8BC88bA,0x4f4d8D40EAa65b2dbE7cF9f6E7fb0c807e1Ed654,0x1e6a269fE265c44Eb18AB6633C3137be48E8C898 - $CMD deploy --chainId $CHAIN_ID --relayers $RELAYERS --relayerThreshold 2 --fee 0.01 --expiry 9999999 --bridge --erc20Handler --erc721Handler --genericHandler --config true + $CMD deploy --chainId "$CHAIN_ID" --relayers "$RELAYERS" --relayerThreshold 2 --fee 0.01 --expiry 9999999 --bridge --erc20Handler --erc721Handler --genericHandler --config true } # HERE IS WHERE REAL COMMANDS START: +ERC20_DEPLOY_SYMBOL=GROW +ERC20_DEPLOY_NAME="Grow Token" +ERC20_DEPLOY_DECIMALS=18 + +ERC20_ADDR_ETH=0xF268fE3d6909508ddA90DccF2bf69050D19f4CdD +RID_ETH=0x0000000000000000000000F268fE3d6909508ddA90DccF2bf69050D19f4CdD01 + +ERC20_ADDR_AVA=0x5506bD8C8F5D6733E2738496d5C51Ed62934C9f8 +RID_AVA=0x00000000000000000000005506bD8C8F5D6733E2738496d5C51Ed62934C9f802 + +ERC20_ADDR_BSC=0x081A4D4e4A0cC74D6a7A61578f86b8C93CC950a0 +RID_BSC=0x0000000000000000000000081A4D4e4A0cC74D6a7A61578f86b8C93CC950a003 + +ERC20_ADDR_PLG=0xDcDC86A38d1ddA13EEB346eeBf34d0148C8197d9 +RID_PLG=0x0000000000000000000000DcDC86A38d1ddA13EEB346eeBf34d0148C8197d905 + +use_polygon_mainnet +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_ETH +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_AVA +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_BSC +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_PLG +$CMD erc20 add-minter --erc20Address $ERC20_ADDR_PLG --minter $ERC20_HANDLER_ADDR +$CMD bridge set-burn --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --tokenContract $ERC20_ADDR_PLG + +use_binance_mainnet +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_ETH +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_AVA +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_BSC +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_PLG + use_avalanche_mainnet -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x474Bb79C3e8E65DcC6dF30F9dE68592ed48BBFDb --resourceId 0x0000000000000000000000823cE9cca0b9eE2BC4C2d764d304691d770DbBe905 -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0xf6F3EEa905ac1da6F6DD37d06810C6Fcb0EF5183 --resourceId 0x00000000000000000000004801D3057109758C3Cc82859Fe28C5692802033005 -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0xc4f4Ff34A2e2cF5e4c892476BB2D056871125452 --resourceId 0x00000000000000000000002FaB07236d5E1F400568E475B21dBc6AdFEd57D505 -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x12f108E6138d4A9c58511e042399cF8f90D5673f --resourceId 0x00000000000000000000005b75Ff9e5c15Bb94AB166A80dD5398B3B9f50E2505 -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x008E26068B3EB40B443d3Ea88c1fF99B789c10F7 --resourceId 0x0000000000000000000000b67176655e7919a27aA34C279157124619aDFd4B05 -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7 --resourceId 0x0000000000000000000000Ea83FCEe5875c8f09B0a9B999CBbB1CeD26A462B05 -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0xc770701264aD059DD5700Ff68e85ea7A2CaaeF0B --resourceId 0x0000000000000000000000317Edd9783a712Cb412806e6273d7c81C6738D9805 -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0xbf5a94cFe186FC22aFd6637243b9822586960825 --resourceId 0x000000000000000000000052AbdB3536a3a966056e096F2572B2755df26eac05 -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0xBa9aF11661520129Af69d233E92d69BD40CD90AF --resourceId 0x0000000000000000000000ba79bf6D52934D3b55FE0c14565A083c74FBD22405 -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0xD4feE2e3F88B9138B74a323B40bC63bcc1A1B9eC --resourceId 0x00000000000000000000003Fc84b2B0F0CFa85A83F5215ec0A56930a49C14105 -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x5a0dDfA245c02d1256AfDcDa38aDFE89F34367Ce --resourceId 0x000000000000000000000010B34Bd0d3b4532BE749b39Aae4B01d229e538E305 -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0xD94f76f8DD5c3832dd798621c0d673bBae9D946b --resourceId 0x00000000000000000000007c815BBc21FED2B97CA163552991A5C30d6a233605 -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x650CECaFE61f3f65Edd21eFacCa18Cc905EeF0B7 --resourceId 0x0000000000000000000000404Ab89684d499Dbe864a1B9811fEb9be2fFADA205 -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x791FD27ef5ea8deE4746A1b2A1b95b6247f67b7D --resourceId 0x000000000000000000000021d815016bF0a24CA6E169bd1A32C50514aab91F05 -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0xD769bDFc0CaEe933dc0a047C7dBad2Ec42CFb3E2 --resourceId 0x0000000000000000000000083c56d87eAD73D6231C165Ec450C6E28f3399C905 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_ETH +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_AVA +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_BSC +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_PLG +$CMD erc20 add-minter --erc20Address $ERC20_ADDR_AVA --minter $ERC20_HANDLER_ADDR +$CMD bridge set-burn --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --tokenContract $ERC20_ADDR_AVA use_ethereum_mainnet -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 --resourceId 0x0000000000000000000000823cE9cca0b9eE2BC4C2d764d304691d770DbBe905 -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 --resourceId 0x00000000000000000000004801D3057109758C3Cc82859Fe28C5692802033005 -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x2260fac5e5542a773aa44fbcfedf7c193bc2c599 --resourceId 0x00000000000000000000002FaB07236d5E1F400568E475B21dBc6AdFEd57D505 -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x6b175474e89094c44da98b954eedeac495271d0f --resourceId 0x00000000000000000000005b75Ff9e5c15Bb94AB166A80dD5398B3B9f50E2505 -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0xF0939011a9bb95c3B791f0cb546377Ed2693a574 --resourceId 0x0000000000000000000000b67176655e7919a27aA34C279157124619aDFd4B05 -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x743864B0562754F47f91CD400Ac8d4356a8fc720 --resourceId 0x0000000000000000000000Ea83FCEe5875c8f09B0a9B999CBbB1CeD26A462B05 -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x514910771af9ca656af840dff83e8264ecf986ca --resourceId 0x0000000000000000000000317Edd9783a712Cb412806e6273d7c81C6738D9805 -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9 --resourceId 0x000000000000000000000052AbdB3536a3a966056e096F2572B2755df26eac05 -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984 --resourceId 0x0000000000000000000000ba79bf6D52934D3b55FE0c14565A083c74FBD22405 -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x6B3595068778DD592e39A122f4f5a5cF09C90fE2 --resourceId 0x00000000000000000000003Fc84b2B0F0CFa85A83F5215ec0A56930a49C14105 -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x111111111117dc0aa78b770fa6a738034120c302 --resourceId 0x000000000000000000000010B34Bd0d3b4532BE749b39Aae4B01d229e538E305 -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e --resourceId 0x00000000000000000000007c815BBc21FED2B97CA163552991A5C30d6a233605 -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0xdAC17F958D2ee523a2206206994597C13D831ec7 --resourceId 0x0000000000000000000000404Ab89684d499Dbe864a1B9811fEb9be2fFADA205 -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x433d86336dB759855A66cCAbe4338313a8A7fc77 --resourceId 0x000000000000000000000021d815016bF0a24CA6E169bd1A32C50514aab91F05 -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract 0x1d37986F252d0e349522EA6C3B98Cb935495E63E --resourceId 0x0000000000000000000000083c56d87eAD73D6231C165Ec450C6E28f3399C905 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_ETH +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_AVA +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_BSC +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_PLG +$CMD erc20 add-minter --erc20Address $ERC20_ADDR_ETH --minter $ERC20_HANDLER_ADDR +$CMD bridge set-burn --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --tokenContract $ERC20_ADDR_ETH From 11f5746f8350590d56a87141f477067f758e43b7 Mon Sep 17 00:00:00 2001 From: winter256 Date: Thu, 3 Jun 2021 22:41:10 +0300 Subject: [PATCH 12/20] Register resources for Heco --- deploy/deploy.sh | 78 +++++++++++++++++++++++++++--------------------- 1 file changed, 44 insertions(+), 34 deletions(-) diff --git a/deploy/deploy.sh b/deploy/deploy.sh index 9b7637d..9fc8971 100755 --- a/deploy/deploy.sh +++ b/deploy/deploy.sh @@ -52,6 +52,22 @@ use_binance_mainnet() { GENERIC_HANDLER_ADDR=0x0b5C2c80eC91caA336635D4BBF45c383b86A9b31 } +use_heco_mainnet() { + # admin private key, the one used to deploy contracts + PRIVATE_KEY=$HEC_PRIVATE_KEY + GAS_PRICE=1200000000 + URL=https://http-mainnet-node.huobichain.com + NETWORK_ID=128 + CMD="cb-sol-cli --gasLimit "$GAS_LIMIT" --gasPrice "$GAS_PRICE" --networkId "$NETWORK_ID" --url "$URL" --privateKey "$PRIVATE_KEY"" + CHAIN_ID=4 + + # after running deploy_all, don't forget to modify these! + BRIDGE_ADDR=0xF82B6C89A1D3340733eA4f74F9D111b5D7127876 + ERC20_HANDLER_ADDR=0xD02408A62ED3708429ccFb04d9dEA302884ab6a7 + ERC721_HANDLER_ADDR=0xFA25795f7da372463ac90BeD787f9437688c438C + GENERIC_HANDLER_ADDR=0x0b5C2c80eC91caA336635D4BBF45c383b86A9b31 +} + use_polygon_mainnet() { # admin private key, the one used to deploy contracts PRIVATE_KEY=$PLG_PRIVATE_KEY @@ -59,7 +75,6 @@ use_polygon_mainnet() { URL=https://rpc-mainnet.matic.network NETWORK_ID=137 CMD="cb-sol-cli --gasLimit "$GAS_LIMIT" --gasPrice "$GAS_PRICE" --networkId "$NETWORK_ID" --url "$URL" --privateKey "$PRIVATE_KEY"" - # because 4 is for Moonbeam (polkadot or whatever) CHAIN_ID=5 # after running deploy_all, don't forget to modify these! @@ -84,48 +99,43 @@ deploy_bridge() { # HERE IS WHERE REAL COMMANDS START: -ERC20_DEPLOY_SYMBOL=GROW -ERC20_DEPLOY_NAME="Grow Token" -ERC20_DEPLOY_DECIMALS=18 +ERC20_DEPLOY_SYMBOL=zUSDC +ERC20_DEPLOY_NAME=zUSDC +ERC20_DEPLOY_DECIMALS=6 + +ERC20_ADDR_ETH=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 +RID_ETH=0x0000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4801 + +ERC20_ADDR_AVA=0x474Bb79C3e8E65DcC6dF30F9dE68592ed48BBFDb +RID_AVA=0x000000000000000000000023729144FEf299FA056BBBe29e2f01e79d7A634b02 + +ERC20_ADDR_BSC=0x4022AfEB287052e6e587d39bA99f79cAFC47B570 +RID_BSC=0x00000000000000000000004022AfEB287052e6e587d39bA99f79cAFC47B57003 -ERC20_ADDR_ETH=0xF268fE3d6909508ddA90DccF2bf69050D19f4CdD -RID_ETH=0x0000000000000000000000F268fE3d6909508ddA90DccF2bf69050D19f4CdD01 +ERC20_ADDR_HEC=0xaC021dF3FF6939CFdCA4ce5a3D1b6048CA5aaBF4 +RID_HEC=0x0000000000000000000000aC021dF3FF6939CFdCA4ce5a3D1b6048CA5aaBF404 -ERC20_ADDR_AVA=0x5506bD8C8F5D6733E2738496d5C51Ed62934C9f8 -RID_AVA=0x00000000000000000000005506bD8C8F5D6733E2738496d5C51Ed62934C9f802 +ERC20_ADDR_PLG=0x823cE9cca0b9eE2BC4C2d764d304691d770DbBe9 +RID_PLG=0x0000000000000000000000823cE9cca0b9eE2BC4C2d764d304691d770DbBe905 -ERC20_ADDR_BSC=0x081A4D4e4A0cC74D6a7A61578f86b8C93CC950a0 -RID_BSC=0x0000000000000000000000081A4D4e4A0cC74D6a7A61578f86b8C93CC950a003 -ERC20_ADDR_PLG=0xDcDC86A38d1ddA13EEB346eeBf34d0148C8197d9 -RID_PLG=0x0000000000000000000000DcDC86A38d1ddA13EEB346eeBf34d0148C8197d905 +use_heco_mainnet +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_HEC --resourceId $RID_ETH +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_HEC --resourceId $RID_AVA +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_HEC --resourceId $RID_BSC +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_HEC --resourceId $RID_HEC +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_HEC --resourceId $RID_PLG +$CMD erc20 add-minter --erc20Address $ERC20_ADDR_HEC --minter $ERC20_HANDLER_ADDR +$CMD bridge set-burn --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --tokenContract $ERC20_ADDR_HEC use_polygon_mainnet -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_ETH -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_AVA -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_BSC -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_PLG -$CMD erc20 add-minter --erc20Address $ERC20_ADDR_PLG --minter $ERC20_HANDLER_ADDR -$CMD bridge set-burn --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --tokenContract $ERC20_ADDR_PLG +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_HEC use_binance_mainnet -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_ETH -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_AVA -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_BSC -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_PLG +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_HEC use_avalanche_mainnet -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_ETH -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_AVA -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_BSC -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_PLG -$CMD erc20 add-minter --erc20Address $ERC20_ADDR_AVA --minter $ERC20_HANDLER_ADDR -$CMD bridge set-burn --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --tokenContract $ERC20_ADDR_AVA +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_HEC use_ethereum_mainnet -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_ETH -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_AVA -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_BSC -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_PLG -$CMD erc20 add-minter --erc20Address $ERC20_ADDR_ETH --minter $ERC20_HANDLER_ADDR -$CMD bridge set-burn --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --tokenContract $ERC20_ADDR_ETH +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_HEC From 96e546f46a9fc589322763009d86332e97cd1333 Mon Sep 17 00:00:00 2001 From: winter256 Date: Thu, 3 Jun 2021 22:47:15 +0300 Subject: [PATCH 13/20] Use correct address for heco --- deploy/deploy.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/deploy/deploy.sh b/deploy/deploy.sh index 9fc8971..dca6063 100755 --- a/deploy/deploy.sh +++ b/deploy/deploy.sh @@ -62,10 +62,10 @@ use_heco_mainnet() { CHAIN_ID=4 # after running deploy_all, don't forget to modify these! - BRIDGE_ADDR=0xF82B6C89A1D3340733eA4f74F9D111b5D7127876 - ERC20_HANDLER_ADDR=0xD02408A62ED3708429ccFb04d9dEA302884ab6a7 - ERC721_HANDLER_ADDR=0xFA25795f7da372463ac90BeD787f9437688c438C - GENERIC_HANDLER_ADDR=0x0b5C2c80eC91caA336635D4BBF45c383b86A9b31 + BRIDGE_ADDR=0x651A4FD3550426788bA73B68655ad40627226e30 + ERC20_HANDLER_ADDR=0x55B2952a406514cB1b1279D42Aa9be9CC8d4ECfd + ERC721_HANDLER_ADDR=0x6C6fAbb9400E3599DFab4D9BA60Ae60e456C4199 + GENERIC_HANDLER_ADDR=0x98E6018963E37f1e8A81B19Ee1E3BDF138897bdd } use_polygon_mainnet() { From 27c7352d100db5e51208a22d38f9144ad7c1dc18 Mon Sep 17 00:00:00 2001 From: winter256 Date: Tue, 8 Jun 2021 23:30:42 +0300 Subject: [PATCH 14/20] Deploy Wasder token --- deploy/deploy.sh | 78 +++++++++++++++++++++++++++++------------------- 1 file changed, 48 insertions(+), 30 deletions(-) diff --git a/deploy/deploy.sh b/deploy/deploy.sh index dca6063..e515224 100755 --- a/deploy/deploy.sh +++ b/deploy/deploy.sh @@ -92,6 +92,16 @@ deploy_erc20() { fi } +transfer_token_ownership() { + TOKEN_ADDR=$1 + ALEX_ADDR=0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D + ME_ADDR=0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 + + $CMD erc20 remove-minter --erc20Address $TOKEN_ADDR --minter $ME_ADDR + $CMD erc20 add-admin --erc20Address $TOKEN_ADDR --admin $ALEX_ADDR + $CMD erc20 remove-admin --erc20Address $TOKEN_ADDR --admin $ME_ADDR +} + deploy_bridge() { RELAYERS=0x0cc35215953725637c433404C01546c49A0ba6A1,0xC5e370bF1F1013D913dF3AcFd5A79d2aF8BC88bA,0x4f4d8D40EAa65b2dbE7cF9f6E7fb0c807e1Ed654,0x1e6a269fE265c44Eb18AB6633C3137be48E8C898 $CMD deploy --chainId "$CHAIN_ID" --relayers "$RELAYERS" --relayerThreshold 2 --fee 0.01 --expiry 9999999 --bridge --erc20Handler --erc721Handler --genericHandler --config true @@ -99,43 +109,51 @@ deploy_bridge() { # HERE IS WHERE REAL COMMANDS START: -ERC20_DEPLOY_SYMBOL=zUSDC -ERC20_DEPLOY_NAME=zUSDC -ERC20_DEPLOY_DECIMALS=6 - -ERC20_ADDR_ETH=0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -RID_ETH=0x0000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4801 +ERC20_DEPLOY_SYMBOL=WAS +ERC20_DEPLOY_NAME="Wasder Token" +ERC20_DEPLOY_DECIMALS=18 -ERC20_ADDR_AVA=0x474Bb79C3e8E65DcC6dF30F9dE68592ed48BBFDb -RID_AVA=0x000000000000000000000023729144FEf299FA056BBBe29e2f01e79d7A634b02 +ERC20_ADDR_ETH=0x0c572544a4Ee47904d54aaA6A970AF96B6f00E1b +RID_ETH=0x00000000000000000000000c572544a4Ee47904d54aaA6A970AF96B6f00E1b01 -ERC20_ADDR_BSC=0x4022AfEB287052e6e587d39bA99f79cAFC47B570 -RID_BSC=0x00000000000000000000004022AfEB287052e6e587d39bA99f79cAFC47B57003 +ERC20_ADDR_AVA=0xDE03bB9EFf0804516Be4Bdac5761b7526798aF0F +RID_AVA=0x0000000000000000000000DE03bB9EFf0804516Be4Bdac5761b7526798aF0F02 -ERC20_ADDR_HEC=0xaC021dF3FF6939CFdCA4ce5a3D1b6048CA5aaBF4 -RID_HEC=0x0000000000000000000000aC021dF3FF6939CFdCA4ce5a3D1b6048CA5aaBF404 +ERC20_ADDR_BSC=0x0f236c7EDda9c1e87036dD258bd9D1bcC37EA66C +RID_BSC=0x00000000000000000000000f236c7EDda9c1e87036dD258bd9D1bcC37EA66C03 -ERC20_ADDR_PLG=0x823cE9cca0b9eE2BC4C2d764d304691d770DbBe9 -RID_PLG=0x0000000000000000000000823cE9cca0b9eE2BC4C2d764d304691d770DbBe905 +ERC20_ADDR_HEC=0xc9EFDAC4fE5828361b0aE69d1C16670CDa712BDc +RID_HEC=0x0000000000000000000000c9EFDAC4fE5828361b0aE69d1C16670CDa712BDc04 +ERC20_ADDR_PLG=0xfaEF64930CDD15a19B24EA71Efa14d37f2401169 +RID_PLG=0x0000000000000000000000faEF64930CDD15a19B24EA71Efa14d37f240116905 -use_heco_mainnet -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_HEC --resourceId $RID_ETH -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_HEC --resourceId $RID_AVA -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_HEC --resourceId $RID_BSC -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_HEC --resourceId $RID_HEC -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_HEC --resourceId $RID_PLG -$CMD erc20 add-minter --erc20Address $ERC20_ADDR_HEC --minter $ERC20_HANDLER_ADDR -$CMD bridge set-burn --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --tokenContract $ERC20_ADDR_HEC +use_ethereum_mainnet +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_ETH +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_AVA +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_BSC +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_PLG -use_polygon_mainnet -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_HEC +use_avalanche_mainnet +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_ETH +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_AVA +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_BSC +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_PLG +$CMD erc20 add-minter --erc20Address $ERC20_ADDR_AVA --minter $ERC20_HANDLER_ADDR +$CMD bridge set-burn --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --tokenContract $ERC20_ADDR_AVA use_binance_mainnet -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_HEC - -use_avalanche_mainnet -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_HEC +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_ETH +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_AVA +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_BSC +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_PLG +$CMD erc20 add-minter --erc20Address $ERC20_ADDR_BSC --minter $ERC20_HANDLER_ADDR +$CMD bridge set-burn --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --tokenContract $ERC20_ADDR_BSC -use_ethereum_mainnet -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_HEC +use_polygon_mainnet +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_ETH +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_AVA +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_BSC +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_PLG +$CMD erc20 add-minter --erc20Address $ERC20_ADDR_PLG --minter $ERC20_HANDLER_ADDR +$CMD bridge set-burn --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --tokenContract $ERC20_ADDR_PLG From 0ad2d8dca5f151308e29b384214e8fe4c2bb05ff Mon Sep 17 00:00:00 2001 From: winter256 Date: Wed, 9 Jun 2021 15:17:38 +0300 Subject: [PATCH 15/20] Remove minter --- deploy/deploy.sh | 83 +++++++++++++++++++++--------------------------- 1 file changed, 36 insertions(+), 47 deletions(-) diff --git a/deploy/deploy.sh b/deploy/deploy.sh index e515224..01688a4 100755 --- a/deploy/deploy.sh +++ b/deploy/deploy.sh @@ -109,51 +109,40 @@ deploy_bridge() { # HERE IS WHERE REAL COMMANDS START: -ERC20_DEPLOY_SYMBOL=WAS -ERC20_DEPLOY_NAME="Wasder Token" -ERC20_DEPLOY_DECIMALS=18 - -ERC20_ADDR_ETH=0x0c572544a4Ee47904d54aaA6A970AF96B6f00E1b -RID_ETH=0x00000000000000000000000c572544a4Ee47904d54aaA6A970AF96B6f00E1b01 - -ERC20_ADDR_AVA=0xDE03bB9EFf0804516Be4Bdac5761b7526798aF0F -RID_AVA=0x0000000000000000000000DE03bB9EFf0804516Be4Bdac5761b7526798aF0F02 - -ERC20_ADDR_BSC=0x0f236c7EDda9c1e87036dD258bd9D1bcC37EA66C -RID_BSC=0x00000000000000000000000f236c7EDda9c1e87036dD258bd9D1bcC37EA66C03 - -ERC20_ADDR_HEC=0xc9EFDAC4fE5828361b0aE69d1C16670CDa712BDc -RID_HEC=0x0000000000000000000000c9EFDAC4fE5828361b0aE69d1C16670CDa712BDc04 - -ERC20_ADDR_PLG=0xfaEF64930CDD15a19B24EA71Efa14d37f2401169 -RID_PLG=0x0000000000000000000000faEF64930CDD15a19B24EA71Efa14d37f240116905 - -use_ethereum_mainnet -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_ETH -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_AVA -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_BSC -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_PLG - -use_avalanche_mainnet -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_ETH -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_AVA -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_BSC -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_PLG -$CMD erc20 add-minter --erc20Address $ERC20_ADDR_AVA --minter $ERC20_HANDLER_ADDR -$CMD bridge set-burn --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --tokenContract $ERC20_ADDR_AVA - -use_binance_mainnet -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_ETH -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_AVA -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_BSC -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_PLG -$CMD erc20 add-minter --erc20Address $ERC20_ADDR_BSC --minter $ERC20_HANDLER_ADDR -$CMD bridge set-burn --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --tokenContract $ERC20_ADDR_BSC - use_polygon_mainnet -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_ETH -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_AVA -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_BSC -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_PLG -$CMD erc20 add-minter --erc20Address $ERC20_ADDR_PLG --minter $ERC20_HANDLER_ADDR -$CMD bridge set-burn --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --tokenContract $ERC20_ADDR_PLG +$CMD erc20 remove-minter --erc20Address=0x823cE9cca0b9eE2BC4C2d764d304691d770DbBe9 --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 +$CMD erc20 remove-minter --erc20Address=0x4801D3057109758C3Cc82859Fe28C56928020330 --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 +$CMD erc20 remove-minter --erc20Address=0x2FaB07236d5E1F400568E475B21dBc6AdFEd57D5 --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 +$CMD erc20 remove-minter --erc20Address=0x5b75Ff9e5c15Bb94AB166A80dD5398B3B9f50E25 --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 +$CMD erc20 remove-minter --erc20Address=0xb67176655e7919a27aA34C279157124619aDFd4B --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 +$CMD erc20 remove-minter --erc20Address=0xEa83FCEe5875c8f09B0a9B999CBbB1CeD26A462B --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 +$CMD erc20 remove-minter --erc20Address=0x317Edd9783a712Cb412806e6273d7c81C6738D98 --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 +$CMD erc20 remove-minter --erc20Address=0x52AbdB3536a3a966056e096F2572B2755df26eac --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 +$CMD erc20 remove-minter --erc20Address=0xba79bf6D52934D3b55FE0c14565A083c74FBD224 --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 +$CMD erc20 remove-minter --erc20Address=0x3Fc84b2B0F0CFa85A83F5215ec0A56930a49C141 --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 +$CMD erc20 remove-minter --erc20Address=0x10B34Bd0d3b4532BE749b39Aae4B01d229e538E3 --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 +$CMD erc20 remove-minter --erc20Address=0x7c815BBc21FED2B97CA163552991A5C30d6a2336 --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 +$CMD erc20 remove-minter --erc20Address=0x404Ab89684d499Dbe864a1B9811fEb9be2fFADA2 --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 +$CMD erc20 remove-minter --erc20Address=0x21d815016bF0a24CA6E169bd1A32C50514aab91F --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 +$CMD erc20 remove-minter --erc20Address=0x083c56d87eAD73D6231C165Ec450C6E28f3399C9 --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 +$CMD erc20 remove-minter --erc20Address=0xDcDC86A38d1ddA13EEB346eeBf34d0148C8197d9 --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 +$CMD erc20 remove-minter --erc20Address=0xfaEF64930CDD15a19B24EA71Efa14d37f2401169 --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 + +use_heco_mainnet +$CMD erc20 remove-minter --erc20Address=0xaC021dF3FF6939CFdCA4ce5a3D1b6048CA5aaBF4 --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 +$CMD erc20 remove-minter --erc20Address=0x9A9D4653820D079218007d8Ec0a4AEe1e1E1D394 --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 +$CMD erc20 remove-minter --erc20Address=0x683844fE2ec704f80bD032D0d94089315Ec58D5b --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 +$CMD erc20 remove-minter --erc20Address=0x8aeb905Eed42Dce79e6e2357AAA0d51FA128800a --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 +$CMD erc20 remove-minter --erc20Address=0x0E4564692B15Af6526b6910CFd9E1F4B6671CA1A --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 +$CMD erc20 remove-minter --erc20Address=0x96b59499D6067B94ee2D1C558A31fA8dC4E3640d --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 +$CMD erc20 remove-minter --erc20Address=0x72157E63Bd6F546901C6121CA478061F8756271a --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 +$CMD erc20 remove-minter --erc20Address=0xA0F347628657051e28eafCb2713Beb85c44D931F --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 +$CMD erc20 remove-minter --erc20Address=0x75286d76389613960d3466399DB15201e037116f --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 +$CMD erc20 remove-minter --erc20Address=0x98659e9A7ddc51eE3A2FB386d20B481c77E8C8bf --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 +$CMD erc20 remove-minter --erc20Address=0x5a32a14EF0c756dc016c0EcaA68f65258504B851 --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 +$CMD erc20 remove-minter --erc20Address=0xD4Cc96d31f4a272B34804B121b871a0432b38911 --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 +$CMD erc20 remove-minter --erc20Address=0x3D1f2C168F4b6028f422e43755a60F0384b63568 --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 +$CMD erc20 remove-minter --erc20Address=0x4E76805F76c13BfaA1D6558596A12086e4bE3E2C --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 +$CMD erc20 remove-minter --erc20Address=0x8C2f0dBa074f120Eef8530da5F8a825796c505a4 --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 +$CMD erc20 remove-minter --erc20Address=0x87F86C5870e96a55A29e37f0c11C7620edb7B203 --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 +$CMD erc20 remove-minter --erc20Address=0xc9EFDAC4fE5828361b0aE69d1C16670CDa712BDc --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 From ca7c6c98e663245f07b65fa19d0949529651be69 Mon Sep 17 00:00:00 2001 From: winter256 Date: Fri, 23 Jul 2021 19:43:01 +0300 Subject: [PATCH 16/20] Reregister AVAX on polygon --- cb-sol-cli/Makefile | 5 +-- cb-sol-cli/cmd/deploy.js | 4 +- cb-sol-cli/constants.js | 2 +- deploy/deploy.sh | 80 +++++++++++++++++++----------------- deploy/testnet-deploy-new.sh | 76 ++++++++++++++++++++++++++++++++++ 5 files changed, 123 insertions(+), 44 deletions(-) create mode 100755 deploy/testnet-deploy-new.sh diff --git a/cb-sol-cli/Makefile b/cb-sol-cli/Makefile index 59955a0..508069f 100644 --- a/cb-sol-cli/Makefile +++ b/cb-sol-cli/Makefile @@ -1,6 +1,5 @@ -SOL_URL=https://github.com/zeroexchange/chainbridge-solidity -# version with modified ERC20 to enable setting decimals in constructor -SOL_VERSION="89fb479d5e2fa20bf7b7dd380c0fbde5c5cd5674" +SOL_URL=https://github.com/RelayChain/chainbridge-solidity +SOL_VERSION="03b3549d52133218370d673d712cc77a4d884764" fetch-contracts: @echo " > \033[32mFetching chainbridge-solidity contracts... \033[0m " diff --git a/cb-sol-cli/cmd/deploy.js b/cb-sol-cli/cmd/deploy.js index 703ecfd..e23947c 100644 --- a/cb-sol-cli/cmd/deploy.js +++ b/cb-sol-cli/cmd/deploy.js @@ -173,9 +173,7 @@ async function deployBridgeContract(args) { const arguments = [ args.chainId, args.relayers, - args.relayerThreshold, - ethers.utils.parseEther(args.fee.toString()), - args.expiry + args.relayerThreshold ]; const encodedArgs = encodeConstructorArgs(constants.ContractABIs.Bridge, arguments); diff --git a/cb-sol-cli/constants.js b/cb-sol-cli/constants.js index 08c0f63..ddf4cc0 100644 --- a/cb-sol-cli/constants.js +++ b/cb-sol-cli/constants.js @@ -4,7 +4,7 @@ */ const ethers = require('ethers'); -const CONTRACT_PATH = "./chainbridge-solidity/build/contracts" +const CONTRACT_PATH = "./chainbridge-solidity/build/waffle" const ContractABIs = { Bridge: require(CONTRACT_PATH + "/Bridge.json"), Erc20Handler: require(CONTRACT_PATH + "/ERC20Handler.json"), diff --git a/deploy/deploy.sh b/deploy/deploy.sh index 01688a4..4062ffd 100755 --- a/deploy/deploy.sh +++ b/deploy/deploy.sh @@ -71,8 +71,9 @@ use_heco_mainnet() { use_polygon_mainnet() { # admin private key, the one used to deploy contracts PRIVATE_KEY=$PLG_PRIVATE_KEY - GAS_PRICE=1200000000 - URL=https://rpc-mainnet.matic.network + GAS_PRICE=5000000000 + # URL=https://rpc-mainnet.matic.network + URL=https://matic-mainnet.chainstacklabs.com NETWORK_ID=137 CMD="cb-sol-cli --gasLimit "$GAS_LIMIT" --gasPrice "$GAS_PRICE" --networkId "$NETWORK_ID" --url "$URL" --privateKey "$PRIVATE_KEY"" CHAIN_ID=5 @@ -95,7 +96,7 @@ deploy_erc20() { transfer_token_ownership() { TOKEN_ADDR=$1 ALEX_ADDR=0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D - ME_ADDR=0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 + ME_ADDR=0x4711ba56879606194A2DFF7692C7211717FfeE96 $CMD erc20 remove-minter --erc20Address $TOKEN_ADDR --minter $ME_ADDR $CMD erc20 add-admin --erc20Address $TOKEN_ADDR --admin $ALEX_ADDR @@ -109,40 +110,45 @@ deploy_bridge() { # HERE IS WHERE REAL COMMANDS START: +ERC20_DEPLOY_SYMBOL="AVAX" +ERC20_DEPLOY_NAME="Avalanche Token" +ERC20_DEPLOY_DECIMALS=18 + +ERC20_ADDR_ETH=0x743864B0562754F47f91CD400Ac8d4356a8fc720 +RID_ETH=0x0000000000000000000000743864B0562754F47f91CD400Ac8d4356a8fc72001 + +ERC20_ADDR_AVA=0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7 +RID_AVA=0x0000000000000000000000B31f66AA3C1e785363F0875A1B74E27b85FD66c702 + +ERC20_ADDR_BSC=0xaC532d2FC81a077C9F93Be7ea698E2f1d224Ec04 +RID_BSC=0x0000000000000000000000aC532d2FC81a077C9F93Be7ea698E2f1d224Ec0403 + +ERC20_ADDR_HEC=0x96b59499D6067B94ee2D1C558A31fA8dC4E3640d +RID_HEC=0x000000000000000000000096b59499D6067B94ee2D1C558A31fA8dC4E3640d04 + +ERC20_ADDR_PLG=0xEa83FCEe5875c8f09B0a9B999CBbB1CeD26A462B +RID_PLG=0x0000000000000000000000Ea83FCEe5875c8f09B0a9B999CBbB1CeD26A462B05 + +# second token +ERC20_ADDR_PLG=0x2C89bbc92BD86F8075d1DEcc58C7F4E0107f286b +RID_PLG=0x00000000000000000000002C89bbc92BD86F8075d1DEcc58C7F4E0107f286b05 + use_polygon_mainnet -$CMD erc20 remove-minter --erc20Address=0x823cE9cca0b9eE2BC4C2d764d304691d770DbBe9 --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 -$CMD erc20 remove-minter --erc20Address=0x4801D3057109758C3Cc82859Fe28C56928020330 --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 -$CMD erc20 remove-minter --erc20Address=0x2FaB07236d5E1F400568E475B21dBc6AdFEd57D5 --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 -$CMD erc20 remove-minter --erc20Address=0x5b75Ff9e5c15Bb94AB166A80dD5398B3B9f50E25 --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 -$CMD erc20 remove-minter --erc20Address=0xb67176655e7919a27aA34C279157124619aDFd4B --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 -$CMD erc20 remove-minter --erc20Address=0xEa83FCEe5875c8f09B0a9B999CBbB1CeD26A462B --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 -$CMD erc20 remove-minter --erc20Address=0x317Edd9783a712Cb412806e6273d7c81C6738D98 --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 -$CMD erc20 remove-minter --erc20Address=0x52AbdB3536a3a966056e096F2572B2755df26eac --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 -$CMD erc20 remove-minter --erc20Address=0xba79bf6D52934D3b55FE0c14565A083c74FBD224 --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 -$CMD erc20 remove-minter --erc20Address=0x3Fc84b2B0F0CFa85A83F5215ec0A56930a49C141 --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 -$CMD erc20 remove-minter --erc20Address=0x10B34Bd0d3b4532BE749b39Aae4B01d229e538E3 --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 -$CMD erc20 remove-minter --erc20Address=0x7c815BBc21FED2B97CA163552991A5C30d6a2336 --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 -$CMD erc20 remove-minter --erc20Address=0x404Ab89684d499Dbe864a1B9811fEb9be2fFADA2 --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 -$CMD erc20 remove-minter --erc20Address=0x21d815016bF0a24CA6E169bd1A32C50514aab91F --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 -$CMD erc20 remove-minter --erc20Address=0x083c56d87eAD73D6231C165Ec450C6E28f3399C9 --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 -$CMD erc20 remove-minter --erc20Address=0xDcDC86A38d1ddA13EEB346eeBf34d0148C8197d9 --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 -$CMD erc20 remove-minter --erc20Address=0xfaEF64930CDD15a19B24EA71Efa14d37f2401169 --minter 0x4711ba56879606194A2DFF7692C7211717FfeE96 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_ETH +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_AVA +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_BSC +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_HEC +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_PLG +$CMD bridge set-burn --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --tokenContract $ERC20_ADDR_BSC use_heco_mainnet -$CMD erc20 remove-minter --erc20Address=0xaC021dF3FF6939CFdCA4ce5a3D1b6048CA5aaBF4 --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 -$CMD erc20 remove-minter --erc20Address=0x9A9D4653820D079218007d8Ec0a4AEe1e1E1D394 --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 -$CMD erc20 remove-minter --erc20Address=0x683844fE2ec704f80bD032D0d94089315Ec58D5b --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 -$CMD erc20 remove-minter --erc20Address=0x8aeb905Eed42Dce79e6e2357AAA0d51FA128800a --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 -$CMD erc20 remove-minter --erc20Address=0x0E4564692B15Af6526b6910CFd9E1F4B6671CA1A --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 -$CMD erc20 remove-minter --erc20Address=0x96b59499D6067B94ee2D1C558A31fA8dC4E3640d --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 -$CMD erc20 remove-minter --erc20Address=0x72157E63Bd6F546901C6121CA478061F8756271a --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 -$CMD erc20 remove-minter --erc20Address=0xA0F347628657051e28eafCb2713Beb85c44D931F --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 -$CMD erc20 remove-minter --erc20Address=0x75286d76389613960d3466399DB15201e037116f --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 -$CMD erc20 remove-minter --erc20Address=0x98659e9A7ddc51eE3A2FB386d20B481c77E8C8bf --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 -$CMD erc20 remove-minter --erc20Address=0x5a32a14EF0c756dc016c0EcaA68f65258504B851 --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 -$CMD erc20 remove-minter --erc20Address=0xD4Cc96d31f4a272B34804B121b871a0432b38911 --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 -$CMD erc20 remove-minter --erc20Address=0x3D1f2C168F4b6028f422e43755a60F0384b63568 --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 -$CMD erc20 remove-minter --erc20Address=0x4E76805F76c13BfaA1D6558596A12086e4bE3E2C --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 -$CMD erc20 remove-minter --erc20Address=0x8C2f0dBa074f120Eef8530da5F8a825796c505a4 --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 -$CMD erc20 remove-minter --erc20Address=0x87F86C5870e96a55A29e37f0c11C7620edb7B203 --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 -$CMD erc20 remove-minter --erc20Address=0xc9EFDAC4fE5828361b0aE69d1C16670CDa712BDc --minter 0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59 +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_HEC --resourceId $RID_PLG + +use_binance_mainnet +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_PLG + +use_avalanche_mainnet +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_PLG + +use_ethereum_mainnet +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_PLG diff --git a/deploy/testnet-deploy-new.sh b/deploy/testnet-deploy-new.sh new file mode 100755 index 0000000..5cd360a --- /dev/null +++ b/deploy/testnet-deploy-new.sh @@ -0,0 +1,76 @@ +#!/usr/bin/env bash + +set -eux + +GAS_LIMIT=6721975 + +use_rinkeby_testnet() { + # admin private key, the one used to deploy contracts + PRIVATE_KEY=$RKB_TEST_PRIVATE_KEY + GAS_PRICE=1000500000 + URL=https://rinkeby.infura.io/v3/45174a29359d4b07ade01676259bc47a + NETWORK_ID=4 + CMD="cb-sol-cli --gasLimit $GAS_LIMIT --gasPrice $GAS_PRICE --networkId $NETWORK_ID --url $URL --privateKey $PRIVATE_KEY" + CHAIN_ID=1 + + # after running deploy_all, don't forget to modify these! + BRIDGE_ADDR=0x7e5DD04071964aebd17F4107764520728D73fc61 + ERC20_HANDLER_ADDR=0x4df072A61bd26b4e5F9649625350326663714E76 + ERC721_HANDLER_ADDR=0x034D7158Cda4717F2766d26cE1806c75baAf9aa1 + GENERIC_HANDLER_ADDR=0x02b06c2339A9C26D8f7624A4B53c9236A0a4C93a +} + +use_binance_testnet() { + # admin private key, the one used to deploy contracts + PRIVATE_KEY=$BSC_TEST_PRIVATE_KEY + GAS_PRICE=15000000000 + URL=https://data-seed-prebsc-1-s2.binance.org:8545 + NETWORK_ID=97 + CMD="cb-sol-cli --gasLimit $GAS_LIMIT --gasPrice $GAS_PRICE --networkId $NETWORK_ID --url $URL --privateKey $PRIVATE_KEY" + CHAIN_ID=3 + + # after running deploy_all, don't forget to modify these! + BRIDGE_ADDR=0x26258365B44Eb73740a6dfdA962E8a3096cA3e59 + ERC20_HANDLER_ADDR=0x9DC206947A1f4881022a03863555B963B4bB86a2 + ERC721_HANDLER_ADDR=0xbB205A1ec83CE4A34413415B82A1AA85511F0F65 + GENERIC_HANDLER_ADDR=0x875D0F2ad61803927c087ac2ef82539706f5364C +} + + +deploy_erc20() { + $CMD deploy --erc20 --erc20Symbol "$1" --erc20Name "$1" --erc20Decimals "$2" | python3 get_deployed_token_addr.py +} + +deploy_zero_token() { + $CMD deploy --zero | python3 get_deployed_zero_token_addr.py + # to change minter for contract, use + # $CMD erc20 zero-change-minter --tokenAddr $ERC20_ADDR_MMB --newMinter $ERC20_HANDLER_ADDR +} + +deploy_bridge() { + RELAYERS=0x62C85B403ead6BdF3dA6f86eD8398dcB047CAB95 + $CMD deploy --chainId $CHAIN_ID --relayers $RELAYERS --relayerThreshold 1 --bridge --erc20Handler --erc721Handler --genericHandler --config true +} + +ERC20_DEPLOY_SYMBOL=zUSDT +ERC20_DEPLOY_DECIMALS=6 + +ERC20_ADDR_ETH=0xc66227E44bf1E6F043919A65707b826e3E9f1132 +RID_ETH=0x0000000000000000000000c66227E44bf1E6F043919A65707b826e3E9f113201 + +ERC20_ADDR_BSC=0xe874dCF01d498DDe836d1F6B7f1Fe125217e4eaf +RID_BSC=0x0000000000000000000000e874dCF01d498DDe836d1F6B7f1Fe125217e4eaf03 + +use_rinkeby_testnet +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_ETH +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_BSC + +use_binance_testnet +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_ETH +$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_BSC +$CMD erc20 add-minter --erc20Address $ERC20_ADDR_BSC --minter $ERC20_HANDLER_ADDR +$CMD bridge set-burn --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --tokenContract $ERC20_ADDR_BSC + +# # $CMD erc20 add-minter --erc20Address $ERC20_ADDR_MNB --minter $ERC20_HANDLER_ADDR +# $CMD erc20 zero-change-minter --tokenAddr $ERC20_ADDR_MNB --newMinter $ERC20_HANDLER_ADDR +# $CMD bridge set-burn --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --tokenContract $ERC20_ADDR_MNB From ae09badce1d957f74df1d7e27f5da69b735780f9 Mon Sep 17 00:00:00 2001 From: winter256 Date: Wed, 28 Jul 2021 04:23:51 +0300 Subject: [PATCH 17/20] Add minters --- cb-sol-cli/Makefile | 2 +- cb-sol-cli/constants.js | 2 +- checks/src/add-new-minter.js | 111 +++++++++++++++++++++++++++++++ checks/src/check-owner.js | 62 +++++++++++++++++ checks/src/loadtest.js | 56 ++++++++++++++++ checks/src/testnet-config-new.js | 26 ++++++++ deploy/deploy-new.sh | 109 ++++++++++++++++++++++++++++++ deploy/deploy.sh | 27 ++++---- deploy/testnet-deploy.sh | 17 +++-- 9 files changed, 389 insertions(+), 23 deletions(-) create mode 100644 checks/src/add-new-minter.js create mode 100644 checks/src/check-owner.js create mode 100644 checks/src/loadtest.js create mode 100644 checks/src/testnet-config-new.js create mode 100755 deploy/deploy-new.sh diff --git a/cb-sol-cli/Makefile b/cb-sol-cli/Makefile index 508069f..4e51c49 100644 --- a/cb-sol-cli/Makefile +++ b/cb-sol-cli/Makefile @@ -1,5 +1,5 @@ SOL_URL=https://github.com/RelayChain/chainbridge-solidity -SOL_VERSION="03b3549d52133218370d673d712cc77a4d884764" +SOL_VERSION="17556d196fc3649afe022320abf085cdbaf1826b" fetch-contracts: @echo " > \033[32mFetching chainbridge-solidity contracts... \033[0m " diff --git a/cb-sol-cli/constants.js b/cb-sol-cli/constants.js index ddf4cc0..08c0f63 100644 --- a/cb-sol-cli/constants.js +++ b/cb-sol-cli/constants.js @@ -4,7 +4,7 @@ */ const ethers = require('ethers'); -const CONTRACT_PATH = "./chainbridge-solidity/build/waffle" +const CONTRACT_PATH = "./chainbridge-solidity/build/contracts" const ContractABIs = { Bridge: require(CONTRACT_PATH + "/Bridge.json"), Erc20Handler: require(CONTRACT_PATH + "/ERC20Handler.json"), diff --git a/checks/src/add-new-minter.js b/checks/src/add-new-minter.js new file mode 100644 index 0000000..375281f --- /dev/null +++ b/checks/src/add-new-minter.js @@ -0,0 +1,111 @@ +const ethers = require('ethers'); + +const sleep = ms => new Promise(r => setTimeout(r, ms)); + +const chains = { + 'eth': { handlerAddr: '0x085816eC7b86Dbe7639B6d7f266b331b202B6a6F', url: 'https://mainnet.infura.io/v3/45174a29359d4b07ade01676259bc47a' }, + 'ava': { handlerAddr: '0x0753AB716a298e00f0BADe1E3aD6C8CEC800f570', url: 'https://api.avax.network/ext/bc/C/rpc' }, + 'bsc': { handlerAddr: '0x3416615a9A3C49819FBbd27547b61053D29601a0', url: 'https://bsc-dataseed2.binance.org' }, + 'hec': { handlerAddr: '0x18D929289139A8993c0773aB997B57375e07B4Bd', url: 'https://http-mainnet-node.huobichain.com' }, + 'plg': { handlerAddr: '0xc33A42C9D19f944FA12ff46f27B3B85e18a13778', url: 'https://matic-mainnet.chainstacklabs.com' }, +}; + +const privateKeys = { + '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D': null, + '0x5B20678856F835EFb342680a4FC43de55162ab4C': null, +}; + +const tokens = [ + { chain: 'eth', name: 'AVAX', address: '0x743864B0562754F47f91CD400Ac8d4356a8fc720', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + { chain: 'eth', name: 'GROW', address: '0xF268fE3d6909508ddA90DccF2bf69050D19f4CdD', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + + { chain: 'ava', name: 'USDC', address: '0x474Bb79C3e8E65DcC6dF30F9dE68592ed48BBFDb', owner: '0x5B20678856F835EFb342680a4FC43de55162ab4C' }, + { chain: 'ava', name: 'ETH', address: '0xf6F3EEa905ac1da6F6DD37d06810C6Fcb0EF5183', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + { chain: 'ava', name: 'BTC', address: '0xc4f4Ff34A2e2cF5e4c892476BB2D056871125452', owner: '0x5B20678856F835EFb342680a4FC43de55162ab4C' }, + { chain: 'ava', name: 'DAI', address: '0x12f108E6138d4A9c58511e042399cF8f90D5673f', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + // { chain: 'ava', name: 'ZERO', address: '0x008E26068B3EB40B443d3Ea88c1fF99B789c10F7', owner: '0x40Cb5EB171F096323C668268a5D0A3705acC08fE' }, + { chain: 'ava', name: 'LINK', address: '0xc770701264aD059DD5700Ff68e85ea7A2CaaeF0B', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + { chain: 'ava', name: 'AAVE', address: '0xbf5a94cFe186FC22aFd6637243b9822586960825', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + { chain: 'ava', name: 'UNI', address: '0xBa9aF11661520129Af69d233E92d69BD40CD90AF', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + { chain: 'ava', name: 'SUSHI', address: '0xD4feE2e3F88B9138B74a323B40bC63bcc1A1B9eC', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + { chain: 'ava', name: '1INCH', address: '0x5a0dDfA245c02d1256AfDcDa38aDFE89F34367Ce', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + { chain: 'ava', name: 'YFI', address: '0xD94f76f8DD5c3832dd798621c0d673bBae9D946b', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + { chain: 'ava', name: 'USDT', address: '0x650CECaFE61f3f65Edd21eFacCa18Cc905EeF0B7', owner: '0x5B20678856F835EFb342680a4FC43de55162ab4C' }, + { chain: 'ava', name: 'INDA', address: '0x791FD27ef5ea8deE4746A1b2A1b95b6247f67b7D', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + { chain: 'ava', name: 'CHART', address: '0xD769bDFc0CaEe933dc0a047C7dBad2Ec42CFb3E2', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + { chain: 'ava', name: 'GROW', address: '0x5506bD8C8F5D6733E2738496d5C51Ed62934C9f8', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + { chain: 'ava', name: 'WAS', address: '0xDE03bB9EFf0804516Be4Bdac5761b7526798aF0F', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + + { chain: 'bsc', name: 'USDC', address: '0x4022AfEB287052e6e587d39bA99f79cAFC47B570', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + { chain: 'bsc', name: 'ETH', address: '0x7c815BBc21FED2B97CA163552991A5C30d6a2336', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + { chain: 'bsc', name: 'BTC', address: '0xB6D5487b00e53e7009E6560189EB8B8c22e11Bf3', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + { chain: 'bsc', name: 'DAI', address: '0x7e7bAFF135c42ed90C0EdAb16eAe48ecEa417018', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + // { chain: 'bsc', name: 'ZERO', address: '0x1f534d2B1ee2933f1fdF8e4b63A44b2249d77EAf', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + { chain: 'bsc', name: 'AVAX', address: '0xaC532d2FC81a077C9F93Be7ea698E2f1d224Ec04', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + { chain: 'bsc', name: 'LINK', address: '0xE1D075E79d17fBE745f575634Fb055c62c39CaF4', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + { chain: 'bsc', name: 'AAVE', address: '0xc69CF0e0d00adbF1ab447340C31E39fcf9Ef6cb5', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + { chain: 'bsc', name: 'UNI', address: '0xA6b4a72a6f8116dab486fB88192450CF3ed4150C', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + { chain: 'bsc', name: 'SUSHI', address: '0x2D6d5bc58adEDa28f62B0aBc3f53F5EAef497FCc', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + { chain: 'bsc', name: '1INCH', address: '0xD83FEaB895bDebF9D3E1BE50b7d4d81cf4a0211c', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + { chain: 'bsc', name: 'YFI', address: '0xaaa777E372788F498462B7ed0fAaad7BA264586D', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + { chain: 'bsc', name: 'USDT', address: '0xBF7e0761417F49b3FAFae564C842823f5f79DB15', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + { chain: 'bsc', name: 'INDA', address: '0xC878A79B63A41a831E469AE1A830A765eFd9d468', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + { chain: 'bsc', name: 'CHART', address: '0xc33A42C9D19f944FA12ff46f27B3B85e18a13778', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + { chain: 'bsc', name: 'WAS', address: '0x0f236c7EDda9c1e87036dD258bd9D1bcC37EA66C', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + + { chain: 'hec', name: 'USDC', address: '0xaC021dF3FF6939CFdCA4ce5a3D1b6048CA5aaBF4', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + { chain: 'hec', name: 'ETH', address: '0x9A9D4653820D079218007d8Ec0a4AEe1e1E1D394', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + { chain: 'hec', name: 'BTC', address: '0x683844fE2ec704f80bD032D0d94089315Ec58D5b', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + { chain: 'hec', name: 'DAI', address: '0x8aeb905Eed42Dce79e6e2357AAA0d51FA128800a', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + // { chain: 'hec', name: 'ZERO', address: '0x0E4564692B15Af6526b6910CFd9E1F4B6671CA1A', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + { chain: 'hec', name: 'AVAX', address: '0x96b59499D6067B94ee2D1C558A31fA8dC4E3640d', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + { chain: 'hec', name: 'LINK', address: '0x72157E63Bd6F546901C6121CA478061F8756271a', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + { chain: 'hec', name: 'AAVE', address: '0xA0F347628657051e28eafCb2713Beb85c44D931F', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + { chain: 'hec', name: 'UNI', address: '0x75286d76389613960d3466399DB15201e037116f', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + { chain: 'hec', name: 'SUSHI', address: '0x98659e9A7ddc51eE3A2FB386d20B481c77E8C8bf', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + { chain: 'hec', name: '1INCH', address: '0x5a32a14EF0c756dc016c0EcaA68f65258504B851', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + { chain: 'hec', name: 'YFI', address: '0xD4Cc96d31f4a272B34804B121b871a0432b38911', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + { chain: 'hec', name: 'USDT', address: '0x3D1f2C168F4b6028f422e43755a60F0384b63568', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + { chain: 'hec', name: 'INDA', address: '0x4E76805F76c13BfaA1D6558596A12086e4bE3E2C', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + { chain: 'hec', name: 'CHART', address: '0x8C2f0dBa074f120Eef8530da5F8a825796c505a4', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + { chain: 'hec', name: 'GROW', address: '0x87F86C5870e96a55A29e37f0c11C7620edb7B203', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + { chain: 'hec', name: 'WAS', address: '0xc9EFDAC4fE5828361b0aE69d1C16670CDa712BDc', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + + { chain: 'plg', name: 'USDC', address: '0x823cE9cca0b9eE2BC4C2d764d304691d770DbBe9', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + { chain: 'plg', name: 'ETH', address: '0x4801D3057109758C3Cc82859Fe28C56928020330', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + { chain: 'plg', name: 'BTC', address: '0x2FaB07236d5E1F400568E475B21dBc6AdFEd57D5', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + { chain: 'plg', name: 'DAI', address: '0x5b75Ff9e5c15Bb94AB166A80dD5398B3B9f50E25', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + // { chain: 'plg', name: 'ZERO', address: '0xb67176655e7919a27aA34C279157124619aDFd4B', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + { chain: 'plg', name: 'AVAX', address: '0x2C89bbc92BD86F8075d1DEcc58C7F4E0107f286b', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + { chain: 'plg', name: 'LINK', address: '0x317Edd9783a712Cb412806e6273d7c81C6738D98', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + { chain: 'plg', name: 'AAVE', address: '0x52AbdB3536a3a966056e096F2572B2755df26eac', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + { chain: 'plg', name: 'UNI', address: '0xba79bf6D52934D3b55FE0c14565A083c74FBD224', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + { chain: 'plg', name: 'SUSHI', address: '0x3Fc84b2B0F0CFa85A83F5215ec0A56930a49C141', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + { chain: 'plg', name: '1INCH', address: '0x10B34Bd0d3b4532BE749b39Aae4B01d229e538E3', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + { chain: 'plg', name: 'YFI', address: '0x7c815BBc21FED2B97CA163552991A5C30d6a2336', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + { chain: 'plg', name: 'USDT', address: '0x404Ab89684d499Dbe864a1B9811fEb9be2fFADA2', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + { chain: 'plg', name: 'INDA', address: '0x21d815016bF0a24CA6E169bd1A32C50514aab91F', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + { chain: 'plg', name: 'CHART', address: '0x083c56d87eAD73D6231C165Ec450C6E28f3399C9', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + { chain: 'plg', name: 'GROW', address: '0xDcDC86A38d1ddA13EEB346eeBf34d0148C8197d9', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + { chain: 'plg', name: 'WAS', address: '0xfaEF64930CDD15a19B24EA71Efa14d37f2401169', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, +]; + +async function run() { + const MINTER_ROLE = '0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6'; + for (const token of tokens) { + const { handlerAddr, url } = chains[token.chain]; + const privKey = privateKeys[token.owner]; + if (privKey == null) { + console.log(`Skipping ${token.name} on ${token.chain}...`); + continue; + } + const provider = new ethers.providers.JsonRpcProvider(url); + const wallet = new ethers.Wallet(privKey, provider); + const contract = new ethers.Contract(token.address, require('../../cb-sol-cli/chainbridge-solidity/build/contracts/ERC20PresetMinterPauser.json').abi, wallet); + console.log(`Setting minter for ${token.name} on ${token.chain}...`); + await contract.grantRole(MINTER_ROLE, handlerAddr); + await sleep(4000); + } +} + +run(); diff --git a/checks/src/check-owner.js b/checks/src/check-owner.js new file mode 100644 index 0000000..b0223dd --- /dev/null +++ b/checks/src/check-owner.js @@ -0,0 +1,62 @@ +const ethers = require('ethers'); +const tokenAbi = require('../../cb-sol-cli/chainbridge-solidity/build/contracts/ERC20PresetMinterPauser.json').abi + +const rpcUrls = [ + 'https://mainnet.infura.io/v3/45174a29359d4b07ade01676259bc47a', + 'https://api.avax.network/ext/bc/C/rpc', + 'https://bsc-dataseed2.binance.org', + 'https://http-mainnet-node.huobichain.com', + 'https://rpc-mainnet.matic.network', +]; + +const tokenInfo = [ + 'zUSDC, 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48, 0x474Bb79C3e8E65DcC6dF30F9dE68592ed48BBFDb, 0x4022AfEB287052e6e587d39bA99f79cAFC47B570, 0xaC021dF3FF6939CFdCA4ce5a3D1b6048CA5aaBF4, 0x823cE9cca0b9eE2BC4C2d764d304691d770DbBe9', + 'zETH, 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2, 0xf6F3EEa905ac1da6F6DD37d06810C6Fcb0EF5183, 0x7c815BBc21FED2B97CA163552991A5C30d6a2336, 0x9A9D4653820D079218007d8Ec0a4AEe1e1E1D394, 0x4801D3057109758C3Cc82859Fe28C56928020330', + 'zBTC, 0x2260fac5e5542a773aa44fbcfedf7c193bc2c599, 0xc4f4Ff34A2e2cF5e4c892476BB2D056871125452, 0xB6D5487b00e53e7009E6560189EB8B8c22e11Bf3, 0x683844fE2ec704f80bD032D0d94089315Ec58D5b, 0x2FaB07236d5E1F400568E475B21dBc6AdFEd57D5', + 'zDAI, 0x6b175474e89094c44da98b954eedeac495271d0f, 0x12f108E6138d4A9c58511e042399cF8f90D5673f, 0x7e7bAFF135c42ed90C0EdAb16eAe48ecEa417018, 0x8aeb905Eed42Dce79e6e2357AAA0d51FA128800a, 0x5b75Ff9e5c15Bb94AB166A80dD5398B3B9f50E25', + 'ZERO, 0xF0939011a9bb95c3B791f0cb546377Ed2693a574, 0x008E26068B3EB40B443d3Ea88c1fF99B789c10F7, 0x1f534d2B1ee2933f1fdF8e4b63A44b2249d77EAf, 0x0E4564692B15Af6526b6910CFd9E1F4B6671CA1A, 0xb67176655e7919a27aA34C279157124619aDFd4B', + 'zAVAX, 0x743864B0562754F47f91CD400Ac8d4356a8fc720, 0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7, 0xaC532d2FC81a077C9F93Be7ea698E2f1d224Ec04, 0x96b59499D6067B94ee2D1C558A31fA8dC4E3640d, 0xEa83FCEe5875c8f09B0a9B999CBbB1CeD26A462B', + 'zLINK, 0x514910771af9ca656af840dff83e8264ecf986ca, 0xc770701264aD059DD5700Ff68e85ea7A2CaaeF0B, 0xE1D075E79d17fBE745f575634Fb055c62c39CaF4, 0x72157E63Bd6F546901C6121CA478061F8756271a, 0x317Edd9783a712Cb412806e6273d7c81C6738D98', + 'zAAVE, 0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9, 0xbf5a94cFe186FC22aFd6637243b9822586960825, 0xc69CF0e0d00adbF1ab447340C31E39fcf9Ef6cb5, 0xA0F347628657051e28eafCb2713Beb85c44D931F, 0x52AbdB3536a3a966056e096F2572B2755df26eac', + 'zUNI, 0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984, 0xBa9aF11661520129Af69d233E92d69BD40CD90AF, 0xA6b4a72a6f8116dab486fB88192450CF3ed4150C, 0x75286d76389613960d3466399DB15201e037116f, 0xba79bf6D52934D3b55FE0c14565A083c74FBD224', + 'zSUSHI, 0x6B3595068778DD592e39A122f4f5a5cF09C90fE2, 0xD4feE2e3F88B9138B74a323B40bC63bcc1A1B9eC, 0x2D6d5bc58adEDa28f62B0aBc3f53F5EAef497FCc, 0x98659e9A7ddc51eE3A2FB386d20B481c77E8C8bf, 0x3Fc84b2B0F0CFa85A83F5215ec0A56930a49C141', + 'z1INCH, 0x111111111117dc0aa78b770fa6a738034120c302, 0x5a0dDfA245c02d1256AfDcDa38aDFE89F34367Ce, 0xD83FEaB895bDebF9D3E1BE50b7d4d81cf4a0211c, 0x5a32a14EF0c756dc016c0EcaA68f65258504B851, 0x10B34Bd0d3b4532BE749b39Aae4B01d229e538E3', + 'zYFI, 0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e, 0xD94f76f8DD5c3832dd798621c0d673bBae9D946b, 0xaaa777E372788F498462B7ed0fAaad7BA264586D, 0xD4Cc96d31f4a272B34804B121b871a0432b38911, 0x7c815BBc21FED2B97CA163552991A5C30d6a2336', + 'zUSDT, 0xdAC17F958D2ee523a2206206994597C13D831ec7, 0x650CECaFE61f3f65Edd21eFacCa18Cc905EeF0B7, 0xBF7e0761417F49b3FAFae564C842823f5f79DB15, 0x3D1f2C168F4b6028f422e43755a60F0384b63568, 0x404Ab89684d499Dbe864a1B9811fEb9be2fFADA2', + 'INDA, 0x433d86336dB759855A66cCAbe4338313a8A7fc77, 0x791FD27ef5ea8deE4746A1b2A1b95b6247f67b7D, 0xC878A79B63A41a831E469AE1A830A765eFd9d468, 0x4E76805F76c13BfaA1D6558596A12086e4bE3E2C, 0x21d815016bF0a24CA6E169bd1A32C50514aab91F', + 'CHART, 0x1d37986F252d0e349522EA6C3B98Cb935495E63E, 0xD769bDFc0CaEe933dc0a047C7dBad2Ec42CFb3E2, 0xc33A42C9D19f944FA12ff46f27B3B85e18a13778, 0x8C2f0dBa074f120Eef8530da5F8a825796c505a4, 0x083c56d87eAD73D6231C165Ec450C6E28f3399C9', + 'GROW, 0xF268fE3d6909508ddA90DccF2bf69050D19f4CdD, 0x5506bD8C8F5D6733E2738496d5C51Ed62934C9f8, 0x081A4D4e4A0cC74D6a7A61578f86b8C93CC950a0, 0x87F86C5870e96a55A29e37f0c11C7620edb7B203, 0xDcDC86A38d1ddA13EEB346eeBf34d0148C8197d9', + 'WAS, 0x0c572544a4Ee47904d54aaA6A970AF96B6f00E1b, 0xDE03bB9EFf0804516Be4Bdac5761b7526798aF0F, 0x0f236c7EDda9c1e87036dD258bd9D1bcC37EA66C, 0xc9EFDAC4fE5828361b0aE69d1C16670CDa712BDc, 0xfaEF64930CDD15a19B24EA71Efa14d37f2401169', +]; + +async function run() { + const lines = await Promise.all([...rpcUrls.entries()].map(async ([i, url]) => { + const lines = []; + const provider = new ethers.providers.JsonRpcProvider(url); + for (const infoString of tokenInfo) { + const info = infoString.split(', '); + const tokenName = info[0]; + const tokenAddress = info[1 + i]; + const contract = new ethers.Contract(tokenAddress, tokenAbi, provider); + const chain = ['eth', 'ava', 'bsc', 'hec', 'plg'][i]; + const admins = []; + for (let i = 0; ; ++i) { + try { + const roleMember = await contract.callStatic.getRoleMember('0x0000000000000000000000000000000000000000000000000000000000000000', i); + admins.push(roleMember); + } catch (e) { + lines.push(e.message.slice(0, 50)); + if (!e.message.includes('bad response')) { + break; + } + --i; + } + } + lines.push(`${chain} ${tokenName} ${tokenAddress}: ${admins.join(',')}`); + } + return lines.join('\n'); + })); + console.log(lines.join('\n\n')); +} + +run(); diff --git a/checks/src/loadtest.js b/checks/src/loadtest.js new file mode 100644 index 0000000..e698ba6 --- /dev/null +++ b/checks/src/loadtest.js @@ -0,0 +1,56 @@ +const ethers = require('ethers'); +const config = require('./testnet-config-new'); +const bridgeABI =require('../../cb-sol-cli/chainbridge-solidity/build/contracts/Bridge.json').abi; +const tokenABI = require('../../cb-sol-cli/chainbridge-solidity/build/contracts/ERC20.json').abi; + +function configToUseful(config) { + const provider = new ethers.providers.JsonRpcProvider(config.rpcUrl); + console.log(config.rpcUrl) + const wallet = new ethers.Wallet('0x20c02c9eb1a7f279cd40297dcda7b70ab65b920354f94ab34170aab76d01ebde', provider); + const bridge = new ethers.Contract(config.bridgeAddress, bridgeABI, wallet); + return { + provider, wallet, bridge + }; +} + +const cons = { + eth: configToUseful(config.ETH), + bsc: configToUseful(config.BSC), +}; + +async function sendDeposit(con, options) { + // const amount = ethers.utils.parseUnits('200', 6); + const amount = 10; + const recipient = '0xbE9Cf1832af3fA8789d14C5b4F1d94c35a71173e'; + const data = '0x' + + ethers.utils.hexZeroPad(ethers.BigNumber.from(amount).toHexString(), 32).substr(2) + // Deposit Amount (32 bytes) + ethers.utils.hexZeroPad(ethers.utils.hexlify((recipient.length - 2)/2), 32).substr(2) + // len(recipientAddress) (32 bytes) + recipient.substr(2); // recipientAddress (?? bytes) + + const destinationChainId = 1; + const rid = '0x0000000000000000000000e874dCF01d498DDe836d1F6B7f1Fe125217e4eaf03'; + const tx = await con.bridge.deposit( + destinationChainId, + rid, + data, + '0xdeadbeef', + { + value: 0, + gasLimit: 300000, + ...options, + } + ); + return tx; +} + +async function run() { + let nonce = await cons.bsc.wallet.getTransactionCount(); + console.log(nonce); + for (let i = 0; i < 1000; ++i) { + const tx = await sendDeposit(cons.bsc, { nonce }); + console.log(tx.hash); + ++nonce; + } +} + +run(); diff --git a/checks/src/testnet-config-new.js b/checks/src/testnet-config-new.js new file mode 100644 index 0000000..b437029 --- /dev/null +++ b/checks/src/testnet-config-new.js @@ -0,0 +1,26 @@ +const erc20HandlerAddresses = { + 1: '0x4df072A61bd26b4e5F9649625350326663714E76', + 3: '0x9DC206947A1f4881022a03863555B963B4bB86a2', +} + +const ETH = { + name: "ETH", + chainId: 1, + rpcUrl: 'https://rinkeby.infura.io/v3/97131c192c3645fa9ce01756e052e616', + fromBlock: 8936649, + bridgeAddress: '0x7e5DD04071964aebd17F4107764520728D73fc61', + erc20HandlerAddresses, +}; +const BSC = { + name: "BSC", + chainId: 3, + rpcUrl: "https://data-seed-prebsc-1-s2.binance.org:8545", + fromBlock: 10591658, + bridgeAddress: "0x26258365B44Eb73740a6dfdA962E8a3096cA3e59", + erc20HandlerAddresses, +}; + +module.exports = { + ETH, + BSC, +}; diff --git a/deploy/deploy-new.sh b/deploy/deploy-new.sh new file mode 100755 index 0000000..23af54f --- /dev/null +++ b/deploy/deploy-new.sh @@ -0,0 +1,109 @@ +#!/usr/bin/env bash + +set -eux + +GAS_LIMIT=3721975 + +use_ethereum_mainnet() { + # admin private key, the one used to deploy contracts + PRIVATE_KEY=$ETH_PRIVATE_KEY + GAS_PRICE=22000000000 + URL=https://mainnet.infura.io/v3/45174a29359d4b07ade01676259bc47a + NETWORK_ID=1 + CMD="cb-sol-cli --gasLimit $GAS_LIMIT --gasPrice $GAS_PRICE --networkId $NETWORK_ID --url $URL --privateKey $PRIVATE_KEY" + CHAIN_ID=1 + + # after running deploy_all, don't forget to modify these! + BRIDGE_ADDR=0xb2aef6B83da61cF380b3aB63479034ac67a3F617 + ERC20_HANDLER_ADDR=0x085816eC7b86Dbe7639B6d7f266b331b202B6a6F + ERC721_HANDLER_ADDR=0xC3A33728Bbe0407823E8D57657a40a79587ec6c5 + GENERIC_HANDLER_ADDR=0x910Bf04EfCE601EB01e9728bF2087E071246179F +} + +use_avalanche_mainnet() { + # admin private key, the one used to deploy contracts + PRIVATE_KEY=$AVA_PRIVATE_KEY + GAS_PRICE=225000000000 + URL=https://api.avax.network/ext/bc/C/rpc + NETWORK_ID=43114 + CMD="cb-sol-cli --gasLimit $GAS_LIMIT --gasPrice $GAS_PRICE --networkId $NETWORK_ID --url $URL --privateKey $PRIVATE_KEY" + CHAIN_ID=2 + + # after running deploy_all, don't forget to modify these! + BRIDGE_ADDR=0xD83FEaB895bDebF9D3E1BE50b7d4d81cf4a0211c + ERC20_HANDLER_ADDR=0x0753AB716a298e00f0BADe1E3aD6C8CEC800f570 + ERC721_HANDLER_ADDR=0xF59F323640624710647b08843BD0Db1fabBcA2aB + GENERIC_HANDLER_ADDR=0x72236DD9298F0BE22f5525e32C9DCf148D175167 +} + +use_binance_mainnet() { + # admin private key, the one used to deploy contracts + PRIVATE_KEY=$BSC_PRIVATE_KEY + GAS_PRICE=8000000000 + URL=https://bsc-dataseed2.binance.org + NETWORK_ID=56 + CMD="cb-sol-cli --gasLimit $GAS_LIMIT --gasPrice $GAS_PRICE --networkId $NETWORK_ID --url $URL --privateKey $PRIVATE_KEY" + CHAIN_ID=3 + + # after running deploy_all, don't forget to modify these! + BRIDGE_ADDR=0x691FCB2a019A9aBB88d61033030B32338dDA33C9 + ERC20_HANDLER_ADDR=0x3416615a9A3C49819FBbd27547b61053D29601a0 + ERC721_HANDLER_ADDR=0xf83601ffaefCb058B1E059b7128a236D1b2f2B0c + GENERIC_HANDLER_ADDR=0x03FdaFdB652f5ec9d141a19752095dE6D5C9e288 +} + +use_heco_mainnet() { + # admin private key, the one used to deploy contracts + PRIVATE_KEY=$HEC_PRIVATE_KEY + GAS_PRICE=3000000000 + URL=https://http-mainnet-node.huobichain.com + NETWORK_ID=128 + CMD="cb-sol-cli --gasLimit "$GAS_LIMIT" --gasPrice "$GAS_PRICE" --networkId "$NETWORK_ID" --url "$URL" --privateKey "$PRIVATE_KEY"" + CHAIN_ID=4 + + # after running deploy_all, don't forget to modify these! + BRIDGE_ADDR=0xCb7f3B1931F0f00459e81b307cBFeE0f1Fed9273 + ERC20_HANDLER_ADDR=0x18D929289139A8993c0773aB997B57375e07B4Bd + ERC721_HANDLER_ADDR=0x5158e78836726241E8F614B897aB5971b9641A93 + GENERIC_HANDLER_ADDR=0xBBA5D17A7b46214a7348272ac67d046C4FaE5c26 +} + +use_polygon_mainnet() { + # admin private key, the one used to deploy contracts + PRIVATE_KEY=$PLG_PRIVATE_KEY + GAS_PRICE=5000000000 + # URL=https://rpc-mainnet.matic.network + URL=https://matic-mainnet.chainstacklabs.com + NETWORK_ID=137 + CMD="cb-sol-cli --gasLimit "$GAS_LIMIT" --gasPrice "$GAS_PRICE" --networkId "$NETWORK_ID" --url "$URL" --privateKey "$PRIVATE_KEY"" + CHAIN_ID=5 + + # after running deploy_all, don't forget to modify these! + BRIDGE_ADDR=0xc2B5A4ce98078F77BCE83Be8FEcEBB3da48f0B15 + ERC20_HANDLER_ADDR=0xc33A42C9D19f944FA12ff46f27B3B85e18a13778 + ERC721_HANDLER_ADDR=0x34207e4228A30c9899A876F77fcD1Af48Dd591ab + GENERIC_HANDLER_ADDR=0x205Fa8A01383ab4A362dfeF25b2F07f39423C85a +} + +deploy_erc20() { + if [ "$1" == "ZERO" ]; then + $CMD deploy --zero | python3 get_deployed_zero_token_addr.py + else + $CMD deploy --erc20 --erc20Symbol "$1" --erc20Name "$2" --erc20Decimals "$3" | python3 get_deployed_token_addr.py + fi +} + +transfer_token_ownership() { + TOKEN_ADDR=$1 + ALEX_ADDR=0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D + ME_ADDR=0x4711ba56879606194A2DFF7692C7211717FfeE96 + + $CMD erc20 remove-minter --erc20Address $TOKEN_ADDR --minter $ME_ADDR + $CMD erc20 add-admin --erc20Address $TOKEN_ADDR --admin $ALEX_ADDR + $CMD erc20 remove-admin --erc20Address $TOKEN_ADDR --admin $ME_ADDR +} + +deploy_bridge() { + RELAYERS=0x0cc35215953725637c433404C01546c49A0ba6A1,0xC5e370bF1F1013D913dF3AcFd5A79d2aF8BC88bA,0x4f4d8D40EAa65b2dbE7cF9f6E7fb0c807e1Ed654,0x1e6a269fE265c44Eb18AB6633C3137be48E8C898 + $CMD deploy --chainId "$CHAIN_ID" --relayers "$RELAYERS" --relayerThreshold 2 --fee 0.01 --expiry 9999999 --bridge --erc20Handler --erc721Handler --genericHandler --config true +} diff --git a/deploy/deploy.sh b/deploy/deploy.sh index 4062ffd..db24918 100755 --- a/deploy/deploy.sh +++ b/deploy/deploy.sh @@ -55,7 +55,7 @@ use_binance_mainnet() { use_heco_mainnet() { # admin private key, the one used to deploy contracts PRIVATE_KEY=$HEC_PRIVATE_KEY - GAS_PRICE=1200000000 + GAS_PRICE=3000000000 URL=https://http-mainnet-node.huobichain.com NETWORK_ID=128 CMD="cb-sol-cli --gasLimit "$GAS_LIMIT" --gasPrice "$GAS_PRICE" --networkId "$NETWORK_ID" --url "$URL" --privateKey "$PRIVATE_KEY"" @@ -133,22 +133,21 @@ RID_PLG=0x0000000000000000000000Ea83FCEe5875c8f09B0a9B999CBbB1CeD26A462B05 ERC20_ADDR_PLG=0x2C89bbc92BD86F8075d1DEcc58C7F4E0107f286b RID_PLG=0x00000000000000000000002C89bbc92BD86F8075d1DEcc58C7F4E0107f286b05 -use_polygon_mainnet -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_ETH -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_AVA -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_BSC -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_HEC -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_PLG -$CMD bridge set-burn --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --tokenContract $ERC20_ADDR_BSC +# use_polygon_mainnet +# $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_ETH +# $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_AVA +# $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_BSC +# $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_HEC +# $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_PLG --resourceId $RID_PLG -use_heco_mainnet -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_HEC --resourceId $RID_PLG +# use_heco_mainnet +# $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_HEC --resourceId $RID_PLG -use_binance_mainnet -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_PLG +# use_binance_mainnet +# $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_BSC --resourceId $RID_PLG use_avalanche_mainnet $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_AVA --resourceId $RID_PLG -use_ethereum_mainnet -$CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_PLG +# use_ethereum_mainnet +# $CMD bridge register-resource --bridge $BRIDGE_ADDR --handler $ERC20_HANDLER_ADDR --targetContract $ERC20_ADDR_ETH --resourceId $RID_PLG diff --git a/deploy/testnet-deploy.sh b/deploy/testnet-deploy.sh index 5ab26f3..d9b38c5 100755 --- a/deploy/testnet-deploy.sh +++ b/deploy/testnet-deploy.sh @@ -100,16 +100,19 @@ deploy_bridge() { $CMD deploy --chainId $CHAIN_ID --relayers $RELAYERS --relayerThreshold 1 --fee 0.01 --expiry 9999999 --bridge --erc20Handler --erc721Handler --genericHandler --config true } -use_rinkeby_testnet +use_avalanche_testnet +deploy_bridge -ERC20_DEPLOY_SYMBOL=zINDA -ERC20_DEPLOY_DECIMALS=2 +# use_rinkeby_testnet + +# ERC20_DEPLOY_SYMBOL=zINDA +# ERC20_DEPLOY_DECIMALS=2 -ERC20_ADDR_ETH=0x433d86336dB759855A66cCAbe4338313a8A7fc77 -RID_ETH=0x0000000000000000000000433d86336dB759855A66cCAbe4338313a8A7fc7701 +# ERC20_ADDR_ETH=0x433d86336dB759855A66cCAbe4338313a8A7fc77 +# RID_ETH=0x0000000000000000000000433d86336dB759855A66cCAbe4338313a8A7fc7701 -ERC20_ADDR_BSC=$(deploy_erc20 $ERC20_DEPLOY_SYMBOL $ERC20_DEPLOY_DECIMALS) -RID_BSC=$(node make_resource_id.js "$ERC20_ADDR_PLG" "$CHAIN_ID") +# ERC20_ADDR_BSC=$(deploy_erc20 $ERC20_DEPLOY_SYMBOL $ERC20_DEPLOY_DECIMALS) +# RID_BSC=$(node make_resource_id.js "$ERC20_ADDR_PLG" "$CHAIN_ID") From dec0ca5b9334e0b8904de9ee1030fbde244f11ab Mon Sep 17 00:00:00 2001 From: winter256 Date: Sat, 28 Aug 2021 16:01:12 +0300 Subject: [PATCH 18/20] Update add-new-minter --- checks/src/add-new-minter.js | 39 +++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/checks/src/add-new-minter.js b/checks/src/add-new-minter.js index 375281f..3e40104 100644 --- a/checks/src/add-new-minter.js +++ b/checks/src/add-new-minter.js @@ -3,11 +3,11 @@ const ethers = require('ethers'); const sleep = ms => new Promise(r => setTimeout(r, ms)); const chains = { - 'eth': { handlerAddr: '0x085816eC7b86Dbe7639B6d7f266b331b202B6a6F', url: 'https://mainnet.infura.io/v3/45174a29359d4b07ade01676259bc47a' }, - 'ava': { handlerAddr: '0x0753AB716a298e00f0BADe1E3aD6C8CEC800f570', url: 'https://api.avax.network/ext/bc/C/rpc' }, - 'bsc': { handlerAddr: '0x3416615a9A3C49819FBbd27547b61053D29601a0', url: 'https://bsc-dataseed2.binance.org' }, - 'hec': { handlerAddr: '0x18D929289139A8993c0773aB997B57375e07B4Bd', url: 'https://http-mainnet-node.huobichain.com' }, - 'plg': { handlerAddr: '0xc33A42C9D19f944FA12ff46f27B3B85e18a13778', url: 'https://matic-mainnet.chainstacklabs.com' }, + 'eth': { handlerAddr: '0xF687e1481d85F8b9F4D1f4D4C15348CeF8E5a762', url: 'https://mainnet.infura.io/v3/45174a29359d4b07ade01676259bc47a' }, + 'ava': { handlerAddr: '0x43BEddB3199F2a635C85FfC4f1af228198D268Ab', url: 'https://api.avax.network/ext/bc/C/rpc' }, + 'bsc': { handlerAddr: '0x3Ea1f65cf49297eA6d265291a2b09D0f2AE649D6', url: 'https://bsc-dataseed2.binance.org' }, + 'hec': { handlerAddr: '0xA21D529B86ef6B71C0caaE4669726755876a0Dc0', url: 'https://http-mainnet-node.huobichain.com' }, + 'plg': { handlerAddr: '0x3Ea1f65cf49297eA6d265291a2b09D0f2AE649D6', url: 'https://matic-mainnet.chainstacklabs.com' }, }; const privateKeys = { @@ -94,17 +94,28 @@ async function run() { const MINTER_ROLE = '0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6'; for (const token of tokens) { const { handlerAddr, url } = chains[token.chain]; - const privKey = privateKeys[token.owner]; - if (privKey == null) { - console.log(`Skipping ${token.name} on ${token.chain}...`); + const provider = new ethers.providers.JsonRpcProvider(url); + const contract = new ethers.Contract(token.address, require('../../cb-sol-cli/chainbridge-solidity/build/contracts/ERC20PresetMinterPauser.json').abi, provider); + if (await contract.hasRole(MINTER_ROLE, handlerAddr)) { + console.log(`√ ${token.name} on ${token.chain}`) continue; + } else { + console.log(`no role for ${token.name} on ${token.chain}`) + } + + if (true) { + const privKey = privateKeys[token.owner]; + if (privKey == null) { + console.log(`Skipping ${token.name} on ${token.chain}...`); + continue; + } + const provider = new ethers.providers.JsonRpcProvider(url); + const wallet = new ethers.Wallet(privKey, provider); + const contract = new ethers.Contract(token.address, require('../../cb-sol-cli/chainbridge-solidity/build/contracts/ERC20PresetMinterPauser.json').abi, wallet); + console.log(`Setting minter for ${token.name} on ${token.chain}...`); + await contract.grantRole(MINTER_ROLE, handlerAddr); + await sleep(4000); } - const provider = new ethers.providers.JsonRpcProvider(url); - const wallet = new ethers.Wallet(privKey, provider); - const contract = new ethers.Contract(token.address, require('../../cb-sol-cli/chainbridge-solidity/build/contracts/ERC20PresetMinterPauser.json').abi, wallet); - console.log(`Setting minter for ${token.name} on ${token.chain}...`); - await contract.grantRole(MINTER_ROLE, handlerAddr); - await sleep(4000); } } From 2c63770f42b956418161dff25e05d18fc1a2a451 Mon Sep 17 00:00:00 2001 From: winter256 Date: Sat, 28 Aug 2021 20:35:19 +0300 Subject: [PATCH 19/20] Update add-new-minter --- checks/src/add-new-minter.js | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/checks/src/add-new-minter.js b/checks/src/add-new-minter.js index 3e40104..ce9de70 100644 --- a/checks/src/add-new-minter.js +++ b/checks/src/add-new-minter.js @@ -10,6 +10,15 @@ const chains = { 'plg': { handlerAddr: '0x3Ea1f65cf49297eA6d265291a2b09D0f2AE649D6', url: 'https://matic-mainnet.chainstacklabs.com' }, }; +const explorerPrefixes = { + eth: `https://etherscan.io`, + ava: `https://cchain.explorer.avax.network`, + bsc: `https://bscscan.com`, + hec: `https://hecoinfo.com`, + plg: `https://polygonscan.com`, +}; + + const privateKeys = { '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D': null, '0x5B20678856F835EFb342680a4FC43de55162ab4C': null, @@ -88,6 +97,22 @@ const tokens = [ { chain: 'plg', name: 'CHART', address: '0x083c56d87eAD73D6231C165Ec450C6E28f3399C9', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, { chain: 'plg', name: 'GROW', address: '0xDcDC86A38d1ddA13EEB346eeBf34d0148C8197d9', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, { chain: 'plg', name: 'WAS', address: '0xfaEF64930CDD15a19B24EA71Efa14d37f2401169', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + + + // { chain: 'ava', name: 'RELAY', address: '0x78c42324016cd91D1827924711563fb66E33A83A', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + // { chain: 'bsc', name: 'RELAY', address: '0xE338D4250A4d959F88Ff8789EaaE8c32700BD175', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + // { chain: 'hec', name: 'RELAY', address: '0xf1361d97a1b134eBF96A9aA482BC005D4F41177e', owner: '0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59' }, + // { chain: 'plg', name: 'RELAY', address: '0x904371845Bc56dCbBcf0225ef84a669b2fD6bd0d', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + + // { chain: 'eth', name: 'BNB', address: '0x265Bd427974812123fC1489Cb8B3192AD10791e6', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + // { chain: 'ava', name: 'BNB', address: '0x217F94a628A23273b97770C20A5e134D40B87b5F', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + // { chain: 'hec', name: 'BNB', address: '0x62351EC62b06e4122eDf19b84655D5846CB343bE', owner: '0xDA6F3B776f882EEAA4Bc653472836ee44a0b1b59' }, + // { chain: 'plg', name: 'BNB', address: '0x5c4b7CCBF908E64F32e12c6650ec0C96d717f03F', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + + // { chain: 'eth', name: 'HT', address: '0x700e5679684398B9b6FB545cf520C647C0a0066E', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + // { chain: 'ava', name: 'HT', address: '0xCDEB5641dC5BF05845317B00643A713CCC3b22e6', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + // { chain: 'bsc', name: 'HT', address: '0xd4a8D3A592C109D17ECcE6f974d80249F9630c17', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + // { chain: 'plg', name: 'HT', address: '0xA731349fa468614c1698fc46ebf06Da6F380239e', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, ]; async function run() { @@ -113,8 +138,9 @@ async function run() { const wallet = new ethers.Wallet(privKey, provider); const contract = new ethers.Contract(token.address, require('../../cb-sol-cli/chainbridge-solidity/build/contracts/ERC20PresetMinterPauser.json').abi, wallet); console.log(`Setting minter for ${token.name} on ${token.chain}...`); - await contract.grantRole(MINTER_ROLE, handlerAddr); - await sleep(4000); + const tx = await contract.grantRole(MINTER_ROLE, handlerAddr); + console.log(`${explorerPrefixes[token.chain]}/tx/${tx.hash}`); + await sleep(5000); } } } From cddcef4966d2dfd1e3e3eff95697ada0a94e12db Mon Sep 17 00:00:00 2001 From: winter256 Date: Sun, 29 Aug 2021 01:25:13 +0300 Subject: [PATCH 20/20] Update add-new-minter --- checks/src/add-new-minter.js | 134 +++++++++++++++++------------------ 1 file changed, 67 insertions(+), 67 deletions(-) diff --git a/checks/src/add-new-minter.js b/checks/src/add-new-minter.js index ce9de70..a5f0eb5 100644 --- a/checks/src/add-new-minter.js +++ b/checks/src/add-new-minter.js @@ -25,78 +25,78 @@ const privateKeys = { }; const tokens = [ - { chain: 'eth', name: 'AVAX', address: '0x743864B0562754F47f91CD400Ac8d4356a8fc720', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + // { chain: 'eth', name: 'AVAX', address: '0x743864B0562754F47f91CD400Ac8d4356a8fc720', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, { chain: 'eth', name: 'GROW', address: '0xF268fE3d6909508ddA90DccF2bf69050D19f4CdD', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, { chain: 'ava', name: 'USDC', address: '0x474Bb79C3e8E65DcC6dF30F9dE68592ed48BBFDb', owner: '0x5B20678856F835EFb342680a4FC43de55162ab4C' }, - { chain: 'ava', name: 'ETH', address: '0xf6F3EEa905ac1da6F6DD37d06810C6Fcb0EF5183', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + // { chain: 'ava', name: 'ETH', address: '0xf6F3EEa905ac1da6F6DD37d06810C6Fcb0EF5183', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, { chain: 'ava', name: 'BTC', address: '0xc4f4Ff34A2e2cF5e4c892476BB2D056871125452', owner: '0x5B20678856F835EFb342680a4FC43de55162ab4C' }, - { chain: 'ava', name: 'DAI', address: '0x12f108E6138d4A9c58511e042399cF8f90D5673f', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, - // { chain: 'ava', name: 'ZERO', address: '0x008E26068B3EB40B443d3Ea88c1fF99B789c10F7', owner: '0x40Cb5EB171F096323C668268a5D0A3705acC08fE' }, - { chain: 'ava', name: 'LINK', address: '0xc770701264aD059DD5700Ff68e85ea7A2CaaeF0B', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, - { chain: 'ava', name: 'AAVE', address: '0xbf5a94cFe186FC22aFd6637243b9822586960825', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, - { chain: 'ava', name: 'UNI', address: '0xBa9aF11661520129Af69d233E92d69BD40CD90AF', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, - { chain: 'ava', name: 'SUSHI', address: '0xD4feE2e3F88B9138B74a323B40bC63bcc1A1B9eC', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, - { chain: 'ava', name: '1INCH', address: '0x5a0dDfA245c02d1256AfDcDa38aDFE89F34367Ce', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, - { chain: 'ava', name: 'YFI', address: '0xD94f76f8DD5c3832dd798621c0d673bBae9D946b', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + // { chain: 'ava', name: 'DAI', address: '0x12f108E6138d4A9c58511e042399cF8f90D5673f', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + // // { chain: 'ava', name: 'ZERO', address: '0x008E26068B3EB40B443d3Ea88c1fF99B789c10F7', owner: '0x40Cb5EB171F096323C668268a5D0A3705acC08fE' }, + // { chain: 'ava', name: 'LINK', address: '0xc770701264aD059DD5700Ff68e85ea7A2CaaeF0B', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + // { chain: 'ava', name: 'AAVE', address: '0xbf5a94cFe186FC22aFd6637243b9822586960825', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + // { chain: 'ava', name: 'UNI', address: '0xBa9aF11661520129Af69d233E92d69BD40CD90AF', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + // { chain: 'ava', name: 'SUSHI', address: '0xD4feE2e3F88B9138B74a323B40bC63bcc1A1B9eC', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + // { chain: 'ava', name: '1INCH', address: '0x5a0dDfA245c02d1256AfDcDa38aDFE89F34367Ce', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + // { chain: 'ava', name: 'YFI', address: '0xD94f76f8DD5c3832dd798621c0d673bBae9D946b', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, { chain: 'ava', name: 'USDT', address: '0x650CECaFE61f3f65Edd21eFacCa18Cc905EeF0B7', owner: '0x5B20678856F835EFb342680a4FC43de55162ab4C' }, - { chain: 'ava', name: 'INDA', address: '0x791FD27ef5ea8deE4746A1b2A1b95b6247f67b7D', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, - { chain: 'ava', name: 'CHART', address: '0xD769bDFc0CaEe933dc0a047C7dBad2Ec42CFb3E2', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, - { chain: 'ava', name: 'GROW', address: '0x5506bD8C8F5D6733E2738496d5C51Ed62934C9f8', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, - { chain: 'ava', name: 'WAS', address: '0xDE03bB9EFf0804516Be4Bdac5761b7526798aF0F', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, - - { chain: 'bsc', name: 'USDC', address: '0x4022AfEB287052e6e587d39bA99f79cAFC47B570', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, - { chain: 'bsc', name: 'ETH', address: '0x7c815BBc21FED2B97CA163552991A5C30d6a2336', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, - { chain: 'bsc', name: 'BTC', address: '0xB6D5487b00e53e7009E6560189EB8B8c22e11Bf3', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, - { chain: 'bsc', name: 'DAI', address: '0x7e7bAFF135c42ed90C0EdAb16eAe48ecEa417018', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, - // { chain: 'bsc', name: 'ZERO', address: '0x1f534d2B1ee2933f1fdF8e4b63A44b2249d77EAf', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, - { chain: 'bsc', name: 'AVAX', address: '0xaC532d2FC81a077C9F93Be7ea698E2f1d224Ec04', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, - { chain: 'bsc', name: 'LINK', address: '0xE1D075E79d17fBE745f575634Fb055c62c39CaF4', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, - { chain: 'bsc', name: 'AAVE', address: '0xc69CF0e0d00adbF1ab447340C31E39fcf9Ef6cb5', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, - { chain: 'bsc', name: 'UNI', address: '0xA6b4a72a6f8116dab486fB88192450CF3ed4150C', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, - { chain: 'bsc', name: 'SUSHI', address: '0x2D6d5bc58adEDa28f62B0aBc3f53F5EAef497FCc', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, - { chain: 'bsc', name: '1INCH', address: '0xD83FEaB895bDebF9D3E1BE50b7d4d81cf4a0211c', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, - { chain: 'bsc', name: 'YFI', address: '0xaaa777E372788F498462B7ed0fAaad7BA264586D', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, - { chain: 'bsc', name: 'USDT', address: '0xBF7e0761417F49b3FAFae564C842823f5f79DB15', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, - { chain: 'bsc', name: 'INDA', address: '0xC878A79B63A41a831E469AE1A830A765eFd9d468', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, - { chain: 'bsc', name: 'CHART', address: '0xc33A42C9D19f944FA12ff46f27B3B85e18a13778', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, - { chain: 'bsc', name: 'WAS', address: '0x0f236c7EDda9c1e87036dD258bd9D1bcC37EA66C', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, - - { chain: 'hec', name: 'USDC', address: '0xaC021dF3FF6939CFdCA4ce5a3D1b6048CA5aaBF4', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, - { chain: 'hec', name: 'ETH', address: '0x9A9D4653820D079218007d8Ec0a4AEe1e1E1D394', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, - { chain: 'hec', name: 'BTC', address: '0x683844fE2ec704f80bD032D0d94089315Ec58D5b', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, - { chain: 'hec', name: 'DAI', address: '0x8aeb905Eed42Dce79e6e2357AAA0d51FA128800a', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, - // { chain: 'hec', name: 'ZERO', address: '0x0E4564692B15Af6526b6910CFd9E1F4B6671CA1A', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, - { chain: 'hec', name: 'AVAX', address: '0x96b59499D6067B94ee2D1C558A31fA8dC4E3640d', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, - { chain: 'hec', name: 'LINK', address: '0x72157E63Bd6F546901C6121CA478061F8756271a', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, - { chain: 'hec', name: 'AAVE', address: '0xA0F347628657051e28eafCb2713Beb85c44D931F', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, - { chain: 'hec', name: 'UNI', address: '0x75286d76389613960d3466399DB15201e037116f', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, - { chain: 'hec', name: 'SUSHI', address: '0x98659e9A7ddc51eE3A2FB386d20B481c77E8C8bf', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, - { chain: 'hec', name: '1INCH', address: '0x5a32a14EF0c756dc016c0EcaA68f65258504B851', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, - { chain: 'hec', name: 'YFI', address: '0xD4Cc96d31f4a272B34804B121b871a0432b38911', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, - { chain: 'hec', name: 'USDT', address: '0x3D1f2C168F4b6028f422e43755a60F0384b63568', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, - { chain: 'hec', name: 'INDA', address: '0x4E76805F76c13BfaA1D6558596A12086e4bE3E2C', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, - { chain: 'hec', name: 'CHART', address: '0x8C2f0dBa074f120Eef8530da5F8a825796c505a4', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, - { chain: 'hec', name: 'GROW', address: '0x87F86C5870e96a55A29e37f0c11C7620edb7B203', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, - { chain: 'hec', name: 'WAS', address: '0xc9EFDAC4fE5828361b0aE69d1C16670CDa712BDc', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, - - { chain: 'plg', name: 'USDC', address: '0x823cE9cca0b9eE2BC4C2d764d304691d770DbBe9', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, - { chain: 'plg', name: 'ETH', address: '0x4801D3057109758C3Cc82859Fe28C56928020330', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, - { chain: 'plg', name: 'BTC', address: '0x2FaB07236d5E1F400568E475B21dBc6AdFEd57D5', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, - { chain: 'plg', name: 'DAI', address: '0x5b75Ff9e5c15Bb94AB166A80dD5398B3B9f50E25', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, - // { chain: 'plg', name: 'ZERO', address: '0xb67176655e7919a27aA34C279157124619aDFd4B', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, - { chain: 'plg', name: 'AVAX', address: '0x2C89bbc92BD86F8075d1DEcc58C7F4E0107f286b', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, - { chain: 'plg', name: 'LINK', address: '0x317Edd9783a712Cb412806e6273d7c81C6738D98', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, - { chain: 'plg', name: 'AAVE', address: '0x52AbdB3536a3a966056e096F2572B2755df26eac', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, - { chain: 'plg', name: 'UNI', address: '0xba79bf6D52934D3b55FE0c14565A083c74FBD224', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, - { chain: 'plg', name: 'SUSHI', address: '0x3Fc84b2B0F0CFa85A83F5215ec0A56930a49C141', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, - { chain: 'plg', name: '1INCH', address: '0x10B34Bd0d3b4532BE749b39Aae4B01d229e538E3', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, - { chain: 'plg', name: 'YFI', address: '0x7c815BBc21FED2B97CA163552991A5C30d6a2336', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, - { chain: 'plg', name: 'USDT', address: '0x404Ab89684d499Dbe864a1B9811fEb9be2fFADA2', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, - { chain: 'plg', name: 'INDA', address: '0x21d815016bF0a24CA6E169bd1A32C50514aab91F', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, - { chain: 'plg', name: 'CHART', address: '0x083c56d87eAD73D6231C165Ec450C6E28f3399C9', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, - { chain: 'plg', name: 'GROW', address: '0xDcDC86A38d1ddA13EEB346eeBf34d0148C8197d9', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, - { chain: 'plg', name: 'WAS', address: '0xfaEF64930CDD15a19B24EA71Efa14d37f2401169', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + // { chain: 'ava', name: 'INDA', address: '0x791FD27ef5ea8deE4746A1b2A1b95b6247f67b7D', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + // { chain: 'ava', name: 'CHART', address: '0xD769bDFc0CaEe933dc0a047C7dBad2Ec42CFb3E2', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + // { chain: 'ava', name: 'GROW', address: '0x5506bD8C8F5D6733E2738496d5C51Ed62934C9f8', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + // { chain: 'ava', name: 'WAS', address: '0xDE03bB9EFf0804516Be4Bdac5761b7526798aF0F', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + + // { chain: 'bsc', name: 'USDC', address: '0x4022AfEB287052e6e587d39bA99f79cAFC47B570', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + // { chain: 'bsc', name: 'ETH', address: '0x7c815BBc21FED2B97CA163552991A5C30d6a2336', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + // { chain: 'bsc', name: 'BTC', address: '0xB6D5487b00e53e7009E6560189EB8B8c22e11Bf3', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + // { chain: 'bsc', name: 'DAI', address: '0x7e7bAFF135c42ed90C0EdAb16eAe48ecEa417018', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + // // { chain: 'bsc', name: 'ZERO', address: '0x1f534d2B1ee2933f1fdF8e4b63A44b2249d77EAf', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + // { chain: 'bsc', name: 'AVAX', address: '0xaC532d2FC81a077C9F93Be7ea698E2f1d224Ec04', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + // { chain: 'bsc', name: 'LINK', address: '0xE1D075E79d17fBE745f575634Fb055c62c39CaF4', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + // { chain: 'bsc', name: 'AAVE', address: '0xc69CF0e0d00adbF1ab447340C31E39fcf9Ef6cb5', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + // { chain: 'bsc', name: 'UNI', address: '0xA6b4a72a6f8116dab486fB88192450CF3ed4150C', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + // { chain: 'bsc', name: 'SUSHI', address: '0x2D6d5bc58adEDa28f62B0aBc3f53F5EAef497FCc', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + // { chain: 'bsc', name: '1INCH', address: '0xD83FEaB895bDebF9D3E1BE50b7d4d81cf4a0211c', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + // { chain: 'bsc', name: 'YFI', address: '0xaaa777E372788F498462B7ed0fAaad7BA264586D', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + // { chain: 'bsc', name: 'USDT', address: '0xBF7e0761417F49b3FAFae564C842823f5f79DB15', owner: '0x0cc35215953725637c433404C01546c49A0ba6A1' }, + // { chain: 'bsc', name: 'INDA', address: '0xC878A79B63A41a831E469AE1A830A765eFd9d468', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + // { chain: 'bsc', name: 'CHART', address: '0xc33A42C9D19f944FA12ff46f27B3B85e18a13778', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + // { chain: 'bsc', name: 'WAS', address: '0x0f236c7EDda9c1e87036dD258bd9D1bcC37EA66C', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + + // { chain: 'hec', name: 'USDC', address: '0xaC021dF3FF6939CFdCA4ce5a3D1b6048CA5aaBF4', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + // { chain: 'hec', name: 'ETH', address: '0x9A9D4653820D079218007d8Ec0a4AEe1e1E1D394', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + // { chain: 'hec', name: 'BTC', address: '0x683844fE2ec704f80bD032D0d94089315Ec58D5b', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + // { chain: 'hec', name: 'DAI', address: '0x8aeb905Eed42Dce79e6e2357AAA0d51FA128800a', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + // // { chain: 'hec', name: 'ZERO', address: '0x0E4564692B15Af6526b6910CFd9E1F4B6671CA1A', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + // { chain: 'hec', name: 'AVAX', address: '0x96b59499D6067B94ee2D1C558A31fA8dC4E3640d', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + // { chain: 'hec', name: 'LINK', address: '0x72157E63Bd6F546901C6121CA478061F8756271a', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + // { chain: 'hec', name: 'AAVE', address: '0xA0F347628657051e28eafCb2713Beb85c44D931F', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + // { chain: 'hec', name: 'UNI', address: '0x75286d76389613960d3466399DB15201e037116f', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + // { chain: 'hec', name: 'SUSHI', address: '0x98659e9A7ddc51eE3A2FB386d20B481c77E8C8bf', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + // { chain: 'hec', name: '1INCH', address: '0x5a32a14EF0c756dc016c0EcaA68f65258504B851', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + // { chain: 'hec', name: 'YFI', address: '0xD4Cc96d31f4a272B34804B121b871a0432b38911', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + // { chain: 'hec', name: 'USDT', address: '0x3D1f2C168F4b6028f422e43755a60F0384b63568', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + // { chain: 'hec', name: 'INDA', address: '0x4E76805F76c13BfaA1D6558596A12086e4bE3E2C', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + // { chain: 'hec', name: 'CHART', address: '0x8C2f0dBa074f120Eef8530da5F8a825796c505a4', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + // { chain: 'hec', name: 'GROW', address: '0x87F86C5870e96a55A29e37f0c11C7620edb7B203', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + // { chain: 'hec', name: 'WAS', address: '0xc9EFDAC4fE5828361b0aE69d1C16670CDa712BDc', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + + // { chain: 'plg', name: 'USDC', address: '0x823cE9cca0b9eE2BC4C2d764d304691d770DbBe9', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + // { chain: 'plg', name: 'ETH', address: '0x4801D3057109758C3Cc82859Fe28C56928020330', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + // { chain: 'plg', name: 'BTC', address: '0x2FaB07236d5E1F400568E475B21dBc6AdFEd57D5', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + // { chain: 'plg', name: 'DAI', address: '0x5b75Ff9e5c15Bb94AB166A80dD5398B3B9f50E25', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + // // { chain: 'plg', name: 'ZERO', address: '0xb67176655e7919a27aA34C279157124619aDFd4B', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + // { chain: 'plg', name: 'AVAX', address: '0x2C89bbc92BD86F8075d1DEcc58C7F4E0107f286b', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + // { chain: 'plg', name: 'LINK', address: '0x317Edd9783a712Cb412806e6273d7c81C6738D98', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + // { chain: 'plg', name: 'AAVE', address: '0x52AbdB3536a3a966056e096F2572B2755df26eac', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + // { chain: 'plg', name: 'UNI', address: '0xba79bf6D52934D3b55FE0c14565A083c74FBD224', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + // { chain: 'plg', name: 'SUSHI', address: '0x3Fc84b2B0F0CFa85A83F5215ec0A56930a49C141', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + // { chain: 'plg', name: '1INCH', address: '0x10B34Bd0d3b4532BE749b39Aae4B01d229e538E3', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + // { chain: 'plg', name: 'YFI', address: '0x7c815BBc21FED2B97CA163552991A5C30d6a2336', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + // { chain: 'plg', name: 'USDT', address: '0x404Ab89684d499Dbe864a1B9811fEb9be2fFADA2', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + // { chain: 'plg', name: 'INDA', address: '0x21d815016bF0a24CA6E169bd1A32C50514aab91F', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + // { chain: 'plg', name: 'CHART', address: '0x083c56d87eAD73D6231C165Ec450C6E28f3399C9', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' }, + // { chain: 'plg', name: 'GROW', address: '0xDcDC86A38d1ddA13EEB346eeBf34d0148C8197d9', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, + // { chain: 'plg', name: 'WAS', address: '0xfaEF64930CDD15a19B24EA71Efa14d37f2401169', owner: '0x422D3E23615eD90e32fD1883a842Dce2eDB96e8D' }, // { chain: 'ava', name: 'RELAY', address: '0x78c42324016cd91D1827924711563fb66E33A83A', owner: '0x4711ba56879606194A2DFF7692C7211717FfeE96' },