|
| 1 | +#!/bin/bash |
| 2 | +# Before running this script, you must setup local network: |
| 3 | +# sh $PWD/scripts/multinode-local-testnet.sh |
| 4 | +# oraiswap-token.wasm source code: https://github.com/oraichain/oraiswap.git |
| 5 | + |
| 6 | +set -eu |
| 7 | + |
| 8 | +# hard-coded test private key. DO NOT USE!! |
| 9 | +PRIVATE_KEY_ETH=${PRIVATE_KEY_ETH:-"021646C7F742C743E60CC460C56242738A3951667E71C803929CB84B6FA4B0D6"} |
| 10 | +PRIVATE_KEY_EVM_ADDRESS=${PRIVATE_KEY_EVM_ADDRESS:-"0xB0ac9d216b303a32907632731a93356228CAEE87"} |
| 11 | +current_dir=$PWD |
| 12 | +WASM_PATH=${WASM_PATH:-"$PWD/scripts/wasm_file/oraiswap-token.wasm"} |
| 13 | +ARGS="--chain-id testing -y --keyring-backend test --gas auto --gas-adjustment 1.5 -b sync" |
| 14 | +VALIDATOR1_ARGS=${VALIDATOR1_ARGS:-"--from validator1 --home $HOME/.oraid/validator1"} |
| 15 | + |
| 16 | +HIDE_LOGS="/dev/null" |
| 17 | + |
| 18 | +store_ret=$(oraid tx wasm store $WASM_PATH $VALIDATOR1_ARGS $ARGS --output json) |
| 19 | +store_txhash=$(echo $store_ret | jq -r '.txhash') |
| 20 | +# need to sleep 1s for tx already in block |
| 21 | +sleep 2 |
| 22 | +code_id=$(oraid query tx $store_txhash --output json | jq -r '.events[4].attributes[] | select(.key | contains("code_id")).value') |
| 23 | + |
| 24 | +# 2 addresses that map with the hard-coded private key above |
| 25 | +INSTANTIATE_MSG='{"name":"OraichainToken","symbol":"ORAI","decimals":6,"initial_balances":[{"amount":"1000000000","address":"orai1kzkf6gttxqar9yrkxfe34ye4vg5v4m588ew7c9"},{"amount":"1000000000","address":"orai1hgscrqcd2kmju4t5akujeugwrfev7uxv66lnuu"}]}' |
| 26 | +oraid tx wasm instantiate $code_id $INSTANTIATE_MSG --label 'cw20 ORAI' $VALIDATOR1_ARGS --admin $(oraid keys show validator1 --keyring-backend test --home $HOME/.oraid/validator1 -a) $ARGS >$HIDE_LOGS |
| 27 | +# need to sleep 1s for tx already in block |
| 28 | +sleep 2 |
| 29 | +contract_address=$(oraid query wasm list-contract-by-code $code_id --output json | jq -r '.contracts | last') |
| 30 | +echo "cw-stargate-staking-query contract address: $contract_address" |
| 31 | + |
| 32 | +# clone or pull latest repo |
| 33 | +if [ -d "$PWD/../evm-bridge-proxy" ]; then |
| 34 | + cd ../evm-bridge-proxy |
| 35 | + git pull origin master |
| 36 | +else |
| 37 | + git clone https://github.com/oraichain/evm-bridge-proxy.git ../evm-bridge-proxy |
| 38 | + cd ../evm-bridge-proxy |
| 39 | +fi |
| 40 | + |
| 41 | +# prepare env and chain |
| 42 | +yarn && yarn compile |
| 43 | +echo "PRIVATE_KEY=$PRIVATE_KEY_ETH" >.env |
| 44 | + |
| 45 | +# before deploying erc20, we need to fund the private key's address first |
| 46 | +oraid tx bank send $USER orai1kzkf6gttxqar9yrkxfe34ye4vg5v4m588ew7c9 100000orai $VALIDATOR1_ARGS $ARGS >$HIDE_LOGS |
| 47 | +sleep 2 # wait for tx |
| 48 | + |
| 49 | +# deploy cw20erc20 contract |
| 50 | +output=$(CW20_ADDRESS=$contract_address yarn hardhat run scripts/cw20erc20-deploy.ts --network testing) |
| 51 | +# collect only the contract address part |
| 52 | +contract_addr=$(echo "$output" | grep -oE '0x[0-9a-fA-F]+') |
| 53 | +echo "ERC20 contract addr: $contract_addr" |
| 54 | + |
| 55 | +# validate |
| 56 | +contract_addr_len=${#contract_addr} |
| 57 | +if [ $contract_addr_len -ne 42 ]; then |
| 58 | + echo "Couldn't deploy ERC20 contract. CW20-ERC20 Not Mint Aorai Test Failed" |
| 59 | +fi |
| 60 | + |
| 61 | +# try querying balance of owner -> get balance of from cosmwasm contract |
| 62 | +output=$(ERC20_ADDRESS=$contract_addr yarn hardhat run scripts/cw20erc20-query-balance-of.ts --network testing) |
| 63 | +balance_of=$(echo "$output" | awk '/^[0-9]+$/ { print $1 }') |
| 64 | +if ! [ $balance_of == "1000000000" ]; then |
| 65 | + echo "Could not query balance of CW20ERC20 address. CW20-ERC20 Not Mint Aorai Test Failed" |
| 66 | + exit 1 |
| 67 | +fi |
| 68 | + |
| 69 | +aorai_balance=$(oraid query bank balance orai1kzkf6gttxqar9yrkxfe34ye4vg5v4m588ew7c9 aorai --output json | jq '.balance.amount') |
| 70 | +if [ $aorai_balance >0]; then |
| 71 | + echo "Aorai Minted. CW20-ERC20 Not Mint Aorai Test Failed" |
| 72 | + exit 1 |
| 73 | +fi |
| 74 | + |
| 75 | +# try querying decimals -> get decimals from cosmwasm contract |
| 76 | +orai_balance_before_transfer=$(oraid query bank balance orai1kzkf6gttxqar9yrkxfe34ye4vg5v4m588ew7c9 orai --output json | jq '.balance.amount') |
| 77 | +ERC20_ADDRESS=$contract_addr yarn hardhat run scripts/cw20erc20-transfer.ts --network testing |
| 78 | +orai_balance_after_transfer=$(oraid query bank balance orai1kzkf6gttxqar9yrkxfe34ye4vg5v4m588ew7c9 orai --output json | jq '.balance.amount') |
| 79 | + |
| 80 | +# try querying balance of owner after transfer -> should drop |
| 81 | +output=$(ERC20_ADDRESS=$contract_addr yarn hardhat run scripts/cw20erc20-query-balance-of.ts --network testing) |
| 82 | +balance_of=$(echo "$output" | awk '/^[0-9]+$/ { print $1 }') |
| 83 | +if [ $balance_of == "1000000000" ]; then |
| 84 | + echo "Could not transfer CW20 token from ERC20 contract. CW20-ERC20 Test Failed" |
| 85 | + exit 1 |
| 86 | +fi |
| 87 | + |
| 88 | +if [ $orai_balance_before_transfer == $orai_balance_after_transfer ]; then |
| 89 | + echo "Could not transfer native ORAI token from ERC20 contract. CW20-ERC20 Test Failed" |
| 90 | + exit 1 |
| 91 | +fi |
| 92 | + |
| 93 | +echo "CW20-ERC20 Test Passed" |
| 94 | +cd $current_dir |
0 commit comments