From 163e87728c8935dc1204d91eee14a7daf03dd921 Mon Sep 17 00:00:00 2001 From: forcodedancing Date: Fri, 26 May 2023 14:25:18 +0800 Subject: [PATCH 01/16] feat: implement reconciliation onchain --- app/reconciliation.go | 1 + networks/demo/bind.exp | 19 ++ networks/demo/burn.exp | 17 ++ networks/demo/freeze.exp | 17 ++ networks/demo/transfer-out.exp | 14 ++ networks/demo/unbind.exp | 19 ++ networks/demo/unfreeze.exp | 17 ++ scripts/recon_integration_test.sh | 286 ++++++++++++++++++++++++++++++ 8 files changed, 390 insertions(+) create mode 100644 app/reconciliation.go create mode 100755 networks/demo/bind.exp create mode 100644 networks/demo/burn.exp create mode 100644 networks/demo/freeze.exp create mode 100755 networks/demo/transfer-out.exp create mode 100755 networks/demo/unbind.exp create mode 100644 networks/demo/unfreeze.exp create mode 100644 scripts/recon_integration_test.sh diff --git a/app/reconciliation.go b/app/reconciliation.go new file mode 100644 index 000000000..4879f7a48 --- /dev/null +++ b/app/reconciliation.go @@ -0,0 +1 @@ +package app diff --git a/networks/demo/bind.exp b/networks/demo/bind.exp new file mode 100755 index 000000000..a1d8890ff --- /dev/null +++ b/networks/demo/bind.exp @@ -0,0 +1,19 @@ +#!/usr/bin/expect + +set symbol [lindex $argv 0] +set token_name [lindex $argv 1] +set supply [lindex $argv 2] +set mintable [lindex $argv 3] +set from [lindex $argv 4] +set chain_id [lindex $argv 5] +set home [lindex $argv 6] + +set timeout 30 + if {"${home}" == ""} { + spawn ./bnbcli token issue -s $symbol --token-name $token_name -n $supply --mintable $mintable --from $from --chain-id $chain_id + } else { + spawn ./bnbcli token issue --home $home -s $symbol --token-name $token_name -n $supply --mintable $mintable --from $from --chain-id $chain_id + } + expect "Password*" + send "12345678\r" +expect eof diff --git a/networks/demo/burn.exp b/networks/demo/burn.exp new file mode 100644 index 000000000..438b2f78f --- /dev/null +++ b/networks/demo/burn.exp @@ -0,0 +1,17 @@ +#!/usr/bin/expect + +set symbol [lindex $argv 0] +set amount [lindex $argv 1] +set from [lindex $argv 2] +set chain_id [lindex $argv 3] +set home [lindex $argv 4] + +set timeout 30 + if {"${home}" == ""} { + spawn ./bnbcli token mint -s $symbol -n $amount --from $from --chain-id $chain_id + } else { + spawn ./bnbcli token mint --home $home -s $symbol -n $amount --from $from --chain-id $chain_id + } + expect "Password*" + send "12345678\r" +expect eof diff --git a/networks/demo/freeze.exp b/networks/demo/freeze.exp new file mode 100644 index 000000000..7134ca5b3 --- /dev/null +++ b/networks/demo/freeze.exp @@ -0,0 +1,17 @@ +#!/usr/bin/expect + +set symbol [lindex $argv 0] +set amount [lindex $argv 1] +set from [lindex $argv 2] +set chain_id [lindex $argv 3] +set home [lindex $argv 4] + +set timeout 30 + if {"${home}" == ""} { + spawn ./bnbcli token burn -s $symbol -n $amount --from $from --chain-id $chain_id + } else { + spawn ./bnbcli token burn --home $home -s $symbol -n $amount --from $from --chain-id $chain_id + } + expect "Password*" + send "12345678\r" +expect eof diff --git a/networks/demo/transfer-out.exp b/networks/demo/transfer-out.exp new file mode 100755 index 000000000..fa164b5a2 --- /dev/null +++ b/networks/demo/transfer-out.exp @@ -0,0 +1,14 @@ +#!/usr/bin/expect + +set home [lindex $argv 0] +set from [lindex $argv 1] +set chain_id [lindex $argv 2] +set amount [lindex $argv 3] +set to [lindex $argv 4] +set memo [lindex $argv 5] + +set timeout 30 + spawn ./bnbcli send --home $home --from $from --chain-id=$chain_id --amount $amount --to $to --memo $memo + expect "Password*" + send "12345678\r" +expect eof diff --git a/networks/demo/unbind.exp b/networks/demo/unbind.exp new file mode 100755 index 000000000..a312fd61c --- /dev/null +++ b/networks/demo/unbind.exp @@ -0,0 +1,19 @@ +#!/usr/bin/expect + +set symbol [lindex $argv 0] +set contract_address [lindex $argv 1] +set amount [lindex $argv 2] +set expire_time [lindex $argv 3] +set from [lindex $argv 4] +set chain_id [lindex $argv 5] +set home [lindex $argv 6] + +set timeout 30 + if {"${home}" == ""} { + spawn ./bnbcli bridge bind --symbol $symbol --contract-address $contract_address --amount $amount --contract-decimals 18 --expire-time $expire_time --from $from --chain-id $chain_id + } else { + spawn ./bnbcli bridge bind --home $home --symbol $symbol --contract-address $contract_address --amount $amount --contract-decimals 18 --expire-time $expire_time --from $from --chain-id $chain_id + } + expect "Password*" + send "12345678\r" +expect eof diff --git a/networks/demo/unfreeze.exp b/networks/demo/unfreeze.exp new file mode 100644 index 000000000..bbfdadbb8 --- /dev/null +++ b/networks/demo/unfreeze.exp @@ -0,0 +1,17 @@ +#!/usr/bin/expect + +set symbol [lindex $argv 0] +set amount [lindex $argv 1] +set from [lindex $argv 2] +set chain_id [lindex $argv 3] +set home [lindex $argv 4] + +set timeout 30 + if {"${home}" == ""} { + spawn ./bnbcli token freeze -s $symbol -n $amount --from $from --chain-id $chain_id + } else { + spawn ./bnbcli token freeze --home $home -s $symbol -n $amount --from $from --chain-id $chain_id + } + expect "Password*" + send "12345678\r" +expect eof diff --git a/scripts/recon_integration_test.sh b/scripts/recon_integration_test.sh new file mode 100644 index 000000000..f0908f6af --- /dev/null +++ b/scripts/recon_integration_test.sh @@ -0,0 +1,286 @@ +#!/bin/bash + +set -ex + +cd ./build +if [ $? -ne 0 ]; then + echo "path build does not exists" + exit 1 +fi + +cli_home="./testnodecli" +home="./testnoded" +chain_id="bnbchain-1000" + +keys_operation_words="bnb" +chain_operation_words="Committed" + +function prepare_node() { + cp -f ../networks/demo/*.exp . + + rm -rf ${cli_home} + rm -rf ${home} + mkdir ${cli_home} + mkdir ${home} + + secret=$(./bnbchaind init --moniker testnode --home ${home} --home-client ${cli_home} --chain-id ${chain_id} | grep secret | grep -o ":.*" | grep -o "\".*" | sed "s/\"//g") + + $(cd "./${home}/config" && sed -i -e "s/BEP12Height = 9223372036854775807/BEP12Height = 1/g" app.toml) + $(cd "./${home}/config" && sed -i -e "s/BEP3Height = 9223372036854775807/BEP3Height = 1/g" app.toml) + $(cd "./${home}/config" && sed -i -e "s/timeout_commit = \"1s\"/timeout_commit = \"500ms\"/g" config.toml) + $(cd "./${home}/config" && sed -i -e "s/log_level = \"main\:info,state\:info,\*\:error\"/log_level = \"*\:debug\"/g" config.toml) + $(cd "./${home}/config" && sed -i -e "s/\"min_self_delegation\": \"1000000000000\"/\"min_self_delegation\": \"10000000000\"/g" genesis.json) + $(cd "./${home}/config" && sed -i -e "s/BEP3Height = 9223372036854775807/BEP3Height = 1/g" app.toml) + $(cd "./${home}/config" && sed -i -e "s/BEP8Height = 9223372036854775807/BEP8Height = 1/g" app.toml) + $(cd "./${home}/config" && sed -i -e "s/BEP67Height = 9223372036854775807/BEP67Height = 1/g" app.toml) + $(cd "./${home}/config" && sed -i -e "s/BEP82Height = 9223372036854775807/BEP82Height = 1/g" app.toml) + $(cd "./${home}/config" && sed -i -e "s/BEP84Height = 9223372036854775807/BEP84Height = 1/g" app.toml) + $(cd "./${home}/config" && sed -i -e "s/BEP87Height = 9223372036854775807/BEP87Height = 1/g" app.toml) + $(cd "./${home}/config" && sed -i -e "s/FixFailAckPackageHeight = 9223372036854775807/FixFailAckPackageHeight = 1/g" app.toml) + $(cd "./${home}/config" && sed -i -e "s/EnableAccountScriptsForCrossChainTransferHeight = 9223372036854775807/EnableAccountScriptsForCrossChainTransferHeight = 1/g" app.toml) + $(cd "./${home}/config" && sed -i -e "s/BEP70Height = 9223372036854775807/BEP70Height = 1/g" app.toml) + $(cd "./${home}/config" && sed -i -e "s/BEP128Height = 9223372036854775807/BEP128Height = 1/g" app.toml) + $(cd "./${home}/config" && sed -i -e "s/BEP151Height = 9223372036854775807/BEP151Height = 1/g" app.toml) + $(cd "./${home}/config" && sed -i -e "s/BEP153Height = 9223372036854775807/BEP153Height = 2/g" app.toml) + $(cd "./${home}/config" && sed -i -e "s/BEP159Height = 9223372036854775807/BEP159Height = 3/g" app.toml) + $(cd "./${home}/config" && sed -i -e "s/BEP159Phase2Height = 9223372036854775807/BEP159Phase2Height = 11/g" app.toml) + $(cd "./${home}/config" && sed -i -e "s/LimitConsAddrUpdateIntervalHeight = 9223372036854775807/LimitConsAddrUpdateIntervalHeight = 11/g" app.toml) + $(cd "./${home}/config" && sed -i -e "s/breatheBlockInterval = 0/breatheBlockInterval = 5/g" app.toml) + + # stop and start node + ps -ef | grep bnbchaind | grep testnoded | awk '{print $2}' | xargs kill -9 + ./bnbchaind start --home ${home} >./testnoded/node.log 2>&1 & + + echo ${secret} +} + +function apply_upgrade() { + $(cd "./${home}/config" && sed -i -e "s/SecurityEnhancementHeight = 9223372036854775807/SecurityEnhancementHeight = 15/g" app.toml) + + # stop and start node + ps -ef | grep bnbchaind | grep testnoded | awk '{print $2}' | xargs kill -9 + ./bnbchaind start --home ${home} >./testnoded/node.log 2>&1 & +} + +function exit_test() { + # stop node + ps -ef | grep bnbchaind | grep testnoded | awk '{print $2}' | xargs kill -9 + exit $1 +} + +function check_operation() { + echo "$2" + + echo "$2" | grep -q $3 + if [ $? -ne 0 ]; then + echo "Checking $1 Failed" + exit_test 1 + fi +} + +secret=$(prepare_node) +result=$(expect ./recover.exp "${secret}" "alice" true) +check_operation "Recover Key" "${result}" "${keys_operation_words}" + +bob_secret="bottom quick strong ranch section decide pepper broken oven demand coin run jacket curious business achieve mule bamboo remain vote kid rigid bench rubber" +result=$(expect ./add_key.exp "${bob_secret}" "bob") +check_operation "Add Key" "${result}" "${keys_operation_words}" + +alice_addr=$(./bnbcli keys list --home ${cli_home} | grep alice | grep -o "bnb1[0-9a-zA-Z]*") +bob_addr=$(./bnbcli keys list --home ${cli_home} | grep bob | grep -o "bnb1[0-9a-zA-Z]*") + +# wait for the chain +sleep 10 + +# send +result=$(expect ./send.exp ${cli_home} alice ${chain_id} "100000000000000:BNB" ${bob_addr}) +check_operation "Send Token" "${result}" "${chain_operation_words}" + +sleep 1 +# issue token +result=$(expect ./issue.exp BTC Bitcoin 1000000000000000 true bob ${chain_id} ${cli_home}) +btc_symbol=$(echo "${result}" | tail -n 1 | grep -o "BTC-[0-9A-Z]*") +check_operation "Issue Token" "${result}" "${chain_operation_words}" + +sleep 1 +# issue token +result=$(expect ./issue.exp ETH Ethereum 1000000000000000 true bob ${chain_id} ${cli_home}) +eth_symbol=$(echo "${result}" | tail -n 1 | grep -o "ETH-[0-9A-Z]*") +check_operation "Issue Token" "${result}" "${chain_operation_words}" + +apply_upgrade +sleep 10 # wait for upgrade height + +# issue token failed, due to upgrade +result=$(expect ./issue.exp USDT USDT 1000000000000000 true bob ${chain_id} ${cli_home}) +check_operation "Mint Token" "${result}" "ERROR:" + +sleep 1 +# send +result=$(expect ./send.exp ${cli_home} alice ${chain_id} "100000000000000:BNB" ${bob_addr}) +check_operation "Send Token" "${result}" "${chain_operation_words}" + +sleep 1 +# multi send +echo ${bob_addr} +result=$(expect ./multi_send.exp ${cli_home} alice ${chain_id} "[{\"to\":\"${bob_addr}\",\"amount\":\"100000000000000:BNB\"},{\"to\":\"${alice_addr}\",\"amount\":\"100000000000000:BNB\"}]") +check_operation "Multi Send Token" "${result}" "${chain_operation_words}" + +sleep 1 +# mint token +result=$(expect ./mint.exp ${btc_symbol} 1000000000000000 bob ${chain_id} ${cli_home}) +check_operation "Mint Token" "${result}" "${chain_operation_words}" + +sleep 1 +# burn token +result=$(expect ./mint.exp ${btc_symbol} 50000000 bob ${chain_id} ${cli_home}) +check_operation "Mint Token" "${result}" "${chain_operation_words}" + +sleep 1 +# propose list +((expire_time = $(date '+%s') + 1000)) +lower_case_btc_symbol=$(echo ${btc_symbol} | tr 'A-Z' 'a-z') +result=$(expect ./propose_list.exp ${chain_id} alice 200000000000:BNB ${lower_case_btc_symbol} bnb 100000000 "list BTC/BNB" "list BTC/BNB" ${cli_home} ${expire_time} 5) +check_operation "Propose list" "${result}" "${chain_operation_words}" + +sleep 2 +# vote for propose +result=$(expect ./vote.exp alice ${chain_id} 1 Yes ${cli_home}) +check_operation "Vote" "${result}" "${chain_operation_words}" + +sleep 1 +## query account balance +result=$(./bnbcli account $bob_addr --trust-node) +balance1=$(echo "${result}" | jq -r '.value.base.coins[0].amount') + +sleep 1 +# set an account flag which isn't bounded to transfer memo checker script +result=$(expect ./set_account_flags.exp 0x02 bob ${chain_id} ${cli_home}) +check_operation "Set account flags" "${result}" "${chain_operation_words}" + +sleep 1 +## query account balance +result=$(./bnbcli account $bob_addr --trust-node) +balance2=$(echo "${result}" | jq -r '.value.base.coins[0].amount') + +check_operation "Check fee deduction for set account flags transaction" "$(expr $balance2 - $balance1)" "100000000" + +sleep 1 +result=$(expect ./send.exp ${cli_home} alice ${chain_id} "100000000000000:BNB" ${bob_addr}) +check_operation "Send Token" "${result}" "${chain_operation_words}" + +sleep 1 +result=$(expect ./send.exp ${cli_home} alice ${chain_id} "100000000000000:BNB" ${bob_addr} "123456abcd") +check_operation "Send Token" "${result}" "${chain_operation_words}" + +sleep 1 +# set an account flag which is bounded to transfer memo checker script +result=$(expect ./set_account_flags.exp 0x01 bob ${chain_id} ${cli_home}) +check_operation "Set account flags" "${result}" "${chain_operation_words}" + +sleep 1 +result=$(expect ./send.exp ${cli_home} alice ${chain_id} "100000000000000:BNB" ${bob_addr}) +check_operation "Send Token" "${result}" "ERROR" + +sleep 1 +result=$(expect ./send.exp ${cli_home} alice ${chain_id} "100000000000000:BNB" ${bob_addr} "123456abcd") +check_operation "Send Token" "${result}" "ERROR:" + +sleep 1 +result=$(expect ./send.exp ${cli_home} alice ${chain_id} "100000000000000:BNB" ${bob_addr} "1234567890") +check_operation "Send Token" "${result}" "${chain_operation_words}" + +sleep 1 +# Create an atomic swap +result=$(expect ./HTLT-cross-chain.exp 2000 "100000000:BNB" "100000000:BNB" $bob_addr 0xf2fbB6C41271064613D6f44C7EE9A6c471Ec9B25 alice ${chain_id} ${cli_home}) +check_operation "Create an atomic swap" "${result}" "${chain_operation_words}" +randomNumber=$(sed 's/Random number: //g' <<<$(echo "${result}" | grep -o "Random number: [0-9a-z]*")) +timestamp=$(sed 's/Timestamp: //g' <<<$(echo "${result}" | grep -o "Timestamp: [0-9]*")) +randomNumberHash=$(sed 's/Random number hash: //g' <<<$(echo "${result}" | grep -o "Random number hash: [0-9a-z]*")) +swapID=$(sed 's/swapID: //g' <<<$(echo "${result}" | tail -n 1 | grep -o "swapID: [0-9a-z]*")) +sleep 1 + +atomicSwap=$(./bnbcli token query-swap --swap-id ${swapID} --trust-node) +swapFrom=$(echo "${atomicSwap}" | jq -r '.from') +check_operation "Check swap creator address" $swapFrom $alice_addr +swapTo=$(echo "${atomicSwap}" | jq -r '.to') +check_operation "swap recipient address" $swapTo $bob_addr + +result=$(./bnbcli account bnb1wxeplyw7x8aahy93w96yhwm7xcq3ke4f8ge93u --trust-node) +swapDeadAddrBalance=$(echo "${result}" | jq -r '.value.base.coins[0].amount') +check_operation "the balance of swap dead address" $swapDeadAddrBalance "100000000" + +result=$(./bnbcli account $bob_addr --trust-node) +balanceBobBeforeClaim=$(echo "${result}" | jq -r '.value.base.coins[0].amount') + +# Claim an atomic swap +result=$(expect ./claim.exp ${swapID} $randomNumber alice ${chain_id} ${cli_home}) +check_operation "claim an atomic swap" "${result}" "${chain_operation_words}" + +sleep 1 + +result=$(./bnbcli account $bob_addr --trust-node) +balanceBobAfterClaim=$(echo "${result}" | jq -r '.value.base.coins[0].amount') +check_operation "Bob balance after claim swap" "$(expr $balanceBobAfterClaim - $balanceBobBeforeClaim)" "100000000" + +# Create an atomic swap +result=$(expect ./HTLT-cross-chain.exp 2000 "100000000:BNB" "100000000:BNB" $alice_addr 0xf2fbB6C41271064613D6f44C7EE9A6c471Ec9B25 bob ${chain_id} ${cli_home}) +check_operation "Create an atomic swap" "${result}" "${chain_operation_words}" +swapID=$(sed 's/swapID: //g' <<<$(echo "${result}" | tail -n 1 | grep -o "swapID: [0-9a-z]*")) + +sleep 1 + +# Refund an atomic swap +result=$(expect ./refund.exp ${swapID} alice ${chain_id} ${cli_home}) +check_operation "refund an atomic swap which is still not expired" "${result}" "ERROR" + +sleep 1 + +result=$(./bnbcli account bnb1wxeplyw7x8aahy93w96yhwm7xcq3ke4f8ge93u --trust-node) +swapDeadAddrBalance=$(echo "${result}" | jq -r '.value.base.coins[0].amount') +check_operation "the balance of swap dead address" $swapDeadAddrBalance "100000000" + +sleep 1 +# Create a single chain atomic swap +result=$(expect ./HTLT-single-chain.exp 2000 "100000000:BNB" "10000:${eth_symbol}" $bob_addr alice ${chain_id} ${cli_home}) +check_operation "Create a single chain atomic swap" "${result}" "${chain_operation_words}" +randomNumber=$(sed 's/Random number: //g' <<<$(echo "${result}" | grep -o "Random number: [0-9a-z]*")) +timestamp=$(sed 's/Timestamp: //g' <<<$(echo "${result}" | grep -o "Timestamp: [0-9]*")) +randomNumberHash=$(sed 's/Random number hash: //g' <<<$(echo "${result}" | grep -o "Random number hash: [0-9a-z]*")) +swapID=$(sed 's/swapID: //g' <<<$(echo "${result}" | tail -n 1 | grep -o "swapID: [0-9a-z]*")) +sleep 1 + +# Deposit to a single chain atomic swap +result=$(expect ./deposit.exp ${swapID} "10000:${eth_symbol}" bob ${chain_id} ${cli_home}) +check_operation "Deposit to a single chain atomic swap" "${result}" "${chain_operation_words}" + +sleep 1 +# claim a single chain atomic swap +result=$(expect ./claim.exp ${swapID} ${randomNumber} alice ${chain_id} ${cli_home}) +check_operation "claim a single chain atomic swap" "${result}" "${chain_operation_words}" + +sleep 1 +# Deposit to a single chain atomic swap +result=$(expect ./deposit.exp ${swapID} "10000:${eth_symbol}" bob ${chain_id} ${cli_home}) +check_operation "Deposit to a closed single chain atomic swap" "${result}" "ERROR" + +sleep 1 +# Create a single chain atomic swa +result=$(expect ./HTLT-single-chain.exp 360 "100000000:BNB" "10000:${eth_symbol}" $bob_addr alice ${chain_id} ${cli_home}) +check_operation "Create a single chain atomic swap" "${result}" "${chain_operation_words}" +randomNumber=$(sed 's/Random number: //g' <<<$(echo "${result}" | grep -o "Random number: [0-9a-z]*")) +timestamp=$(sed 's/Timestamp: //g' <<<$(echo "${result}" | grep -o "Timestamp: [0-9]*")) +randomNumberHash=$(sed 's/Random number hash: //g' <<<$(echo "${result}" | grep -o "Random number hash: [0-9a-z]*")) +swapID=$(sed 's/swapID: //g' <<<$(echo "${result}" | tail -n 1 | grep -o "swapID: [0-9a-z]*")) + +sleep 1 +# Deposit to a single chain atomic swap +result=$(expect ./deposit.exp ${swapID} "10000:${eth_symbol}" bob ${chain_id} ${cli_home}) +check_operation "Deposit to a single chain atomic swap" "${result}" "${chain_operation_words}" + +sleep 1 +# Deposit to a single chain atomic swap +result=$(expect ./deposit.exp ${swapID} "10000:${eth_symbol}" bob ${chain_id} ${cli_home}) +check_operation "Deposit to a deposited single chain atomic swap" "${result}" "ERROR" + +exit_test 0 From 6bf3648f57219ca4e540d906810ca967c9f1217e Mon Sep 17 00:00:00 2001 From: forcodedancing Date: Fri, 26 May 2023 14:25:29 +0800 Subject: [PATCH 02/16] feat: implement reconciliation onchain --- Makefile | 7 +- app/app.go | 6 + app/config/config.go | 6 +- app/reconciliation.go | 122 ++++++++ common/upgrade/upgrade.go | 1 + go.mod | 2 +- go.sum | 4 +- networks/demo/bind.exp | 10 +- networks/demo/burn.exp | 4 +- networks/demo/freeze.exp | 4 +- networks/demo/transfer-out.exp | 4 +- networks/demo/unbind.exp | 13 +- networks/demo/unfreeze.exp | 4 +- plugins/bridge/handler.go | 11 +- plugins/tokens/freeze/handler.go | 11 +- plugins/tokens/issue/handler.go | 22 +- plugins/tokens/seturi/handler.go | 8 +- plugins/tokens/timelock/handler.go | 4 + scripts/recon_integration_test.sh | 433 ++++++++++++++++++----------- 19 files changed, 478 insertions(+), 198 deletions(-) diff --git a/Makefile b/Makefile index 72e078acb..146a1d955 100644 --- a/Makefile +++ b/Makefile @@ -205,9 +205,14 @@ integration_test: build bep159_integration_test: build @echo "-->BEP159 Integration Test" @bash ./scripts/bep159_integration_test.sh + +recon_integration_test: build + @echo "-->Recon Integration Test" + @bash ./scripts/recon_integration_test.sh + ######################################## ### Pre Commit -pre_commit: build test_unit bep159_integration_test integration_test format lint multi-nodes-test +pre_commit: build test_unit recon_integration_test bep159_integration_test integration_test format lint multi-nodes-test ######################################## ### Local validator nodes using docker and docker-compose diff --git a/app/app.go b/app/app.go index 5004e4de9..dc57a4f62 100644 --- a/app/app.go +++ b/app/app.go @@ -345,6 +345,7 @@ func SetUpgradeConfig(upgradeConfig *config.UpgradeConfig) { upgrade.Mgr.AddUpgradeHeight(upgrade.BEP173, upgradeConfig.BEP173Height) upgrade.Mgr.AddUpgradeHeight(upgrade.FixDoubleSignChainId, upgradeConfig.FixDoubleSignChainIdHeight) upgrade.Mgr.AddUpgradeHeight(upgrade.BEP126, upgradeConfig.BEP126Height) + upgrade.Mgr.AddUpgradeHeight(upgrade.SecurityEnhancement, upgradeConfig.SecurityEnhancementHeight) // register store keys of upgrade upgrade.Mgr.RegisterStoreKeys(upgrade.BEP9, common.TimeLockStoreKey.Name()) @@ -953,6 +954,11 @@ func (app *BinanceChain) EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) a pub.Pool.Clean() // match may end with transaction failure, which is better to save into // the EndBlock response. However, current cosmos doesn't support this. + + if sdk.IsUpgrade(upgrade.SecurityEnhancement) { + app.reconBalance(ctx) + } + return abci.ResponseEndBlock{ ValidatorUpdates: validatorUpdates, Events: ctx.EventManager().ABCIEvents(), diff --git a/app/config/config.go b/app/config/config.go index 9c88683ea..ef5d6b47c 100644 --- a/app/config/config.go +++ b/app/config/config.go @@ -101,6 +101,8 @@ BEP173Height = {{ .UpgradeConfig.BEP173Height }} FixDoubleSignChainIdHeight = {{ .UpgradeConfig.FixDoubleSignChainIdHeight }} # Block height of BEP126 upgrade BEP126Height = {{ .UpgradeConfig.BEP126Height }} +# Block height of security enhancement upgrade +SecurityEnhancementHeight = {{ .UpgradeConfig.SecurityEnhancementHeight }} [query] # ABCI query interface black list, suggested value: ["custom/gov/proposals", "custom/timelock/timelocks", "custom/atomicSwap/swapcreator", "custom/atomicSwap/swaprecipient"] @@ -549,6 +551,7 @@ type UpgradeConfig struct { BEP173Height int64 `mapstructure:"BEP173Height"` FixDoubleSignChainIdHeight int64 `mapstructure:"FixDoubleSignChainIdHeight"` BEP126Height int64 `mapstructure:"BEP126Height"` + SecurityEnhancementHeight int64 `mapstructure:"SecurityEnhancementHeight"` } func defaultUpgradeConfig() *UpgradeConfig { @@ -569,7 +572,7 @@ func defaultUpgradeConfig() *UpgradeConfig { BEP70Height: 1, LaunchBscUpgradeHeight: 1, LimitConsAddrUpdateIntervalHeight: math.MaxInt64, - BEP126Height: math.MaxInt64, + BEP126Height: math.MaxInt64, BEP128Height: math.MaxInt64, BEP151Height: math.MaxInt64, BEP153Height: math.MaxInt64, @@ -583,6 +586,7 @@ func defaultUpgradeConfig() *UpgradeConfig { BEP171Height: math.MaxInt64, FixFailAckPackageHeight: math.MaxInt64, EnableAccountScriptsForCrossChainTransferHeight: math.MaxInt64, + SecurityEnhancementHeight: math.MaxInt64, } } diff --git a/app/reconciliation.go b/app/reconciliation.go index 4879f7a48..55ae7f0cf 100644 --- a/app/reconciliation.go +++ b/app/reconciliation.go @@ -1 +1,123 @@ package app + +import ( + "fmt" + "github.com/bnb-chain/node/common" + "github.com/bnb-chain/node/common/types" + "github.com/cosmos/cosmos-sdk/store" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +const globalAccountNumber = "globalAccountNumber" + +// reconBalance will do reconciliation for accounts balances. +func (app *BinanceChain) reconBalance(ctx sdk.Context) error { + currentHeight := ctx.BlockHeight() + + ctx.Logger().Debug("account changes") + accPre, accCurrent := app.getAccountChanges(ctx) + + ctx.Logger().Debug("token changes") + tokenPre, tokenCurrent := app.getTokenChanges(ctx) + + left := tokenPre.Plus(accCurrent) + right := tokenCurrent.Plus(accPre) + + if !left.IsEqual(right) { + err := fmt.Sprintf("unbalanced at block %d, pre: %s, current: %s \n", + currentHeight, left.String(), right.String()) + ctx.Logger().Error(err) + panic(err) + } + return nil +} + +func (app *BinanceChain) getAccountChanges(ctx sdk.Context) (sdk.Coins, sdk.Coins) { + currentHeight := ctx.BlockHeight() + iavlStore, ok := app.GetCommitMultiStore().GetCommitStore(common.AccountStoreKey).(*store.IavlStore) + if !ok { + panic("cannot convert to ival") + } + + preVersion := currentHeight - 2 + preCoins := sdk.Coins{} + currentCoins := sdk.Coins{} + + diff := iavlStore.GetDiff() + for k, v := range diff { + if k == globalAccountNumber { + continue + } + var acc1 sdk.Account + err := app.Codec.UnmarshalBinaryBare(v, &acc1) + if err != nil { + panic("failed to unmarshal diff value " + err.Error()) + } + currentCoins = currentCoins.Plus(acc1.GetCoins()) + + var acc2 sdk.Account + _, v = iavlStore.GetTree().GetVersioned([]byte(k), preVersion) + if v != nil { // it is not a new account + err = app.Codec.UnmarshalBinaryBare(v, &acc2) + if err != nil { + panic("failed to unmarshal previous value " + err.Error()) + } + preCoins = preCoins.Plus(acc2.GetCoins()) + } + } + + if len(currentCoins) > 0 { + ctx.Logger().Debug("diff coins", "coins", currentCoins.String()) + } + if len(preCoins) > 0 { + ctx.Logger().Debug("previous coins", "coins", preCoins.String()) + } + + return preCoins, currentCoins +} + +func (app *BinanceChain) getTokenChanges(ctx sdk.Context) (sdk.Coins, sdk.Coins) { + currentHeight := ctx.BlockHeight() + + iavlStore, ok := app.GetCommitMultiStore().GetCommitStore(common.TokenStoreKey).(*store.IavlStore) + if !ok { + panic("cannot convert to ival") + } + + preVersion := currentHeight - 2 + preCoins := sdk.Coins{} + currentCoins := sdk.Coins{} + + diff := iavlStore.GetDiff() + for k, v := range diff { + var token1 types.IToken + err := app.Codec.UnmarshalBinaryBare(v, &token1) + if err != nil { + panic("failed to unmarshal diff value " + err.Error()) + } + currentCoins = currentCoins.Plus(sdk.Coins{ + sdk.NewCoin(token1.GetSymbol(), token1.GetTotalSupply().ToInt64()), + }) + + var token2 types.IToken + _, v = iavlStore.GetTree().GetVersioned([]byte(k), preVersion) + if v != nil { // it is not a new token + err = app.Codec.UnmarshalBinaryBare(v, &token2) + if err != nil { + panic("failed to unmarshal previous value " + err.Error()) + } + preCoins = preCoins.Plus(sdk.Coins{ + sdk.NewCoin(token2.GetSymbol(), token2.GetTotalSupply().ToInt64()), + }) + } + } + + if len(currentCoins) > 0 { + ctx.Logger().Debug("diff coins", "coins", currentCoins.String()) + } + if len(preCoins) > 0 { + ctx.Logger().Debug("previous coins", "coins", preCoins.String()) + } + + return preCoins, currentCoins +} diff --git a/common/upgrade/upgrade.go b/common/upgrade/upgrade.go index 4683a32e4..3c3a2bae6 100644 --- a/common/upgrade/upgrade.go +++ b/common/upgrade/upgrade.go @@ -49,6 +49,7 @@ const ( BEP171 = sdk.BEP171 // https://github.com/bnb-chain/BEPs/pull/171 Security Enhancement for Cross-Chain Module BEP173 = sdk.BEP173 // https://github.com/bnb-chain/BEPs/pull/173 Text Proposal FixDoubleSignChainId = sdk.FixDoubleSignChainId + SecurityEnhancement = sdk.SecurityEnhancement ) func UpgradeBEP10(before func(), after func()) { diff --git a/go.mod b/go.mod index d31428b5f..0a8a539fe 100644 --- a/go.mod +++ b/go.mod @@ -88,7 +88,7 @@ require ( ) replace ( - github.com/cosmos/cosmos-sdk => github.com/bnb-chain/bnc-cosmos-sdk v0.26.5 + github.com/cosmos/cosmos-sdk => github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230526061844-2ba57b39bd57 github.com/tendermint/go-amino => github.com/bnb-chain/bnc-go-amino v0.14.1-binance.2 github.com/tendermint/iavl => github.com/bnb-chain/bnc-tendermint-iavl v0.12.0-binance.5 github.com/tendermint/tendermint => github.com/bnb-chain/bnc-tendermint v0.32.3-bc.10 diff --git a/go.sum b/go.sum index f918d76ab..03567c03e 100644 --- a/go.sum +++ b/go.sum @@ -58,8 +58,6 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bnb-chain/bnc-cosmos-sdk v0.26.5 h1:6NFIkrAURJdXP1w+cdVnyIxrtuDev4sg3kM86kteVvA= -github.com/bnb-chain/bnc-cosmos-sdk v0.26.5/go.mod h1:XiDYVT+XqECR+AyCBO4KBsrbL/d1x2UTsVU36SvHxI8= github.com/bnb-chain/bnc-go-amino v0.14.1-binance.2 h1:iAlp9gqG0f2LGAauf3ZiijWlT6NI+W2r9y70HH9LI3k= github.com/bnb-chain/bnc-go-amino v0.14.1-binance.2/go.mod h1:LiCO7jev+3HwLGAiN9gpD0z+jTz95RqgSavbse55XOY= github.com/bnb-chain/bnc-tendermint v0.32.3-bc.10 h1:E4iSwEbJCLYchHiHE1gnOM3jjmJXLBxARhy/RCl8CpI= @@ -143,6 +141,8 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/etcd-io/bbolt v1.3.3 h1:gSJmxrs37LgTqR/oyJBWok6k6SvXEUerFTbltIhXkBM= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= +github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230526061844-2ba57b39bd57 h1:DN+MGoohS9d3BsunTemaGdzFJe+H3rJYi4ga5E22F/I= +github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230526061844-2ba57b39bd57/go.mod h1:XiDYVT+XqECR+AyCBO4KBsrbL/d1x2UTsVU36SvHxI8= github.com/fortytw2/leaktest v1.2.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= diff --git a/networks/demo/bind.exp b/networks/demo/bind.exp index a1d8890ff..a312fd61c 100755 --- a/networks/demo/bind.exp +++ b/networks/demo/bind.exp @@ -1,18 +1,18 @@ #!/usr/bin/expect set symbol [lindex $argv 0] -set token_name [lindex $argv 1] -set supply [lindex $argv 2] -set mintable [lindex $argv 3] +set contract_address [lindex $argv 1] +set amount [lindex $argv 2] +set expire_time [lindex $argv 3] set from [lindex $argv 4] set chain_id [lindex $argv 5] set home [lindex $argv 6] set timeout 30 if {"${home}" == ""} { - spawn ./bnbcli token issue -s $symbol --token-name $token_name -n $supply --mintable $mintable --from $from --chain-id $chain_id + spawn ./bnbcli bridge bind --symbol $symbol --contract-address $contract_address --amount $amount --contract-decimals 18 --expire-time $expire_time --from $from --chain-id $chain_id } else { - spawn ./bnbcli token issue --home $home -s $symbol --token-name $token_name -n $supply --mintable $mintable --from $from --chain-id $chain_id + spawn ./bnbcli bridge bind --home $home --symbol $symbol --contract-address $contract_address --amount $amount --contract-decimals 18 --expire-time $expire_time --from $from --chain-id $chain_id } expect "Password*" send "12345678\r" diff --git a/networks/demo/burn.exp b/networks/demo/burn.exp index 438b2f78f..7134ca5b3 100644 --- a/networks/demo/burn.exp +++ b/networks/demo/burn.exp @@ -8,9 +8,9 @@ set home [lindex $argv 4] set timeout 30 if {"${home}" == ""} { - spawn ./bnbcli token mint -s $symbol -n $amount --from $from --chain-id $chain_id + spawn ./bnbcli token burn -s $symbol -n $amount --from $from --chain-id $chain_id } else { - spawn ./bnbcli token mint --home $home -s $symbol -n $amount --from $from --chain-id $chain_id + spawn ./bnbcli token burn --home $home -s $symbol -n $amount --from $from --chain-id $chain_id } expect "Password*" send "12345678\r" diff --git a/networks/demo/freeze.exp b/networks/demo/freeze.exp index 7134ca5b3..bbfdadbb8 100644 --- a/networks/demo/freeze.exp +++ b/networks/demo/freeze.exp @@ -8,9 +8,9 @@ set home [lindex $argv 4] set timeout 30 if {"${home}" == ""} { - spawn ./bnbcli token burn -s $symbol -n $amount --from $from --chain-id $chain_id + spawn ./bnbcli token freeze -s $symbol -n $amount --from $from --chain-id $chain_id } else { - spawn ./bnbcli token burn --home $home -s $symbol -n $amount --from $from --chain-id $chain_id + spawn ./bnbcli token freeze --home $home -s $symbol -n $amount --from $from --chain-id $chain_id } expect "Password*" send "12345678\r" diff --git a/networks/demo/transfer-out.exp b/networks/demo/transfer-out.exp index fa164b5a2..8a67d8bfd 100755 --- a/networks/demo/transfer-out.exp +++ b/networks/demo/transfer-out.exp @@ -5,10 +5,10 @@ set from [lindex $argv 1] set chain_id [lindex $argv 2] set amount [lindex $argv 3] set to [lindex $argv 4] -set memo [lindex $argv 5] +set expire_time [lindex $argv 5] set timeout 30 - spawn ./bnbcli send --home $home --from $from --chain-id=$chain_id --amount $amount --to $to --memo $memo + spawn ./bnbcli bridge transfer-out --home $home --from $from --chain-id=$chain_id --amount $amount --to $to --expire-time $expire_time expect "Password*" send "12345678\r" expect eof diff --git a/networks/demo/unbind.exp b/networks/demo/unbind.exp index a312fd61c..db733ddc1 100755 --- a/networks/demo/unbind.exp +++ b/networks/demo/unbind.exp @@ -1,18 +1,15 @@ #!/usr/bin/expect set symbol [lindex $argv 0] -set contract_address [lindex $argv 1] -set amount [lindex $argv 2] -set expire_time [lindex $argv 3] -set from [lindex $argv 4] -set chain_id [lindex $argv 5] -set home [lindex $argv 6] +set from [lindex $argv 1] +set chain_id [lindex $argv 2] +set home [lindex $argv 3] set timeout 30 if {"${home}" == ""} { - spawn ./bnbcli bridge bind --symbol $symbol --contract-address $contract_address --amount $amount --contract-decimals 18 --expire-time $expire_time --from $from --chain-id $chain_id + spawn ./bnbcli bridge unbind --symbol $symbol --from $from --chain-id $chain_id } else { - spawn ./bnbcli bridge bind --home $home --symbol $symbol --contract-address $contract_address --amount $amount --contract-decimals 18 --expire-time $expire_time --from $from --chain-id $chain_id + spawn ./bnbcli bridge unbind --home $home --symbol $symbol --from $from --chain-id $chain_id } expect "Password*" send "12345678\r" diff --git a/networks/demo/unfreeze.exp b/networks/demo/unfreeze.exp index bbfdadbb8..3a345368f 100644 --- a/networks/demo/unfreeze.exp +++ b/networks/demo/unfreeze.exp @@ -8,9 +8,9 @@ set home [lindex $argv 4] set timeout 30 if {"${home}" == ""} { - spawn ./bnbcli token freeze -s $symbol -n $amount --from $from --chain-id $chain_id + spawn ./bnbcli token unfreeze -s $symbol -n $amount --from $from --chain-id $chain_id } else { - spawn ./bnbcli token freeze --home $home -s $symbol -n $amount --from $from --chain-id $chain_id + spawn ./bnbcli token unfreeze --home $home -s $symbol -n $amount --from $from --chain-id $chain_id } expect "Password*" send "12345678\r" diff --git a/plugins/bridge/handler.go b/plugins/bridge/handler.go index 006142809..dfe8a64f4 100644 --- a/plugins/bridge/handler.go +++ b/plugins/bridge/handler.go @@ -6,14 +6,14 @@ import ( "strings" "time" + "github.com/bnb-chain/node/common/log" + cmmtypes "github.com/bnb-chain/node/common/types" + "github.com/bnb-chain/node/common/upgrade" + "github.com/bnb-chain/node/plugins/bridge/types" "github.com/cosmos/cosmos-sdk/bsc/rlp" "github.com/cosmos/cosmos-sdk/pubsub" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/bank" - - "github.com/bnb-chain/node/common/log" - cmmtypes "github.com/bnb-chain/node/common/types" - "github.com/bnb-chain/node/plugins/bridge/types" ) func NewHandler(keeper Keeper) sdk.Handler { @@ -22,6 +22,9 @@ func NewHandler(keeper Keeper) sdk.Handler { case TransferOutMsg: return handleTransferOutMsg(ctx, keeper, msg) case BindMsg: + if sdk.IsUpgrade(upgrade.SecurityEnhancement) { + return sdk.ErrMsgNotSupported("BindMsg disabled in SecurityEnhancement upgrade").Result() + } return handleBindMsg(ctx, keeper, msg) case UnbindMsg: return handleUnbindMsg(ctx, keeper, msg) diff --git a/plugins/tokens/freeze/handler.go b/plugins/tokens/freeze/handler.go index 70a3fb952..d418919db 100644 --- a/plugins/tokens/freeze/handler.go +++ b/plugins/tokens/freeze/handler.go @@ -5,13 +5,13 @@ import ( "reflect" "strings" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/x/auth" - "github.com/cosmos/cosmos-sdk/x/bank" - "github.com/bnb-chain/node/common/log" common "github.com/bnb-chain/node/common/types" + "github.com/bnb-chain/node/common/upgrade" "github.com/bnb-chain/node/plugins/tokens/store" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/x/auth" + "github.com/cosmos/cosmos-sdk/x/bank" ) // NewHandler creates a new token freeze message handler @@ -19,6 +19,9 @@ func NewHandler(tokenMapper store.Mapper, accKeeper auth.AccountKeeper, keeper b return func(ctx sdk.Context, msg sdk.Msg) sdk.Result { switch msg := msg.(type) { case FreezeMsg: + if sdk.IsUpgrade(upgrade.SecurityEnhancement) { + return sdk.ErrMsgNotSupported("FreezeMsg disabled in SecurityEnhancement upgrade").Result() + } return handleFreezeToken(ctx, tokenMapper, accKeeper, keeper, msg) case UnfreezeMsg: return handleUnfreezeToken(ctx, tokenMapper, accKeeper, keeper, msg) diff --git a/plugins/tokens/issue/handler.go b/plugins/tokens/issue/handler.go index db8fa3d04..395d7d680 100644 --- a/plugins/tokens/issue/handler.go +++ b/plugins/tokens/issue/handler.go @@ -3,19 +3,20 @@ package issue import ( "encoding/json" "fmt" + "reflect" "strconv" "strings" - "github.com/cosmos/cosmos-sdk/baseapp" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/x/bank" - tmlog "github.com/tendermint/tendermint/libs/log" - "github.com/bnb-chain/node/common/log" "github.com/bnb-chain/node/common/types" common "github.com/bnb-chain/node/common/types" + "github.com/bnb-chain/node/common/upgrade" "github.com/bnb-chain/node/plugins/tokens/store" + "github.com/cosmos/cosmos-sdk/baseapp" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/x/bank" + tmlog "github.com/tendermint/tendermint/libs/log" ) // NewHandler creates a new token issue message handler @@ -23,12 +24,21 @@ func NewHandler(tokenMapper store.Mapper, keeper bank.Keeper) sdk.Handler { return func(ctx sdk.Context, msg sdk.Msg) sdk.Result { switch msg := msg.(type) { case IssueMsg: + if sdk.IsUpgrade(upgrade.SecurityEnhancement) { + return sdk.ErrMsgNotSupported("IssueMsg disabled in SecurityEnhancement upgrade").Result() + } return handleIssueToken(ctx, tokenMapper, keeper, msg) case MintMsg: return handleMintToken(ctx, tokenMapper, keeper, msg) case IssueMiniMsg: + if sdk.IsUpgrade(upgrade.SecurityEnhancement) { + return sdk.ErrMsgNotSupported("IssueMiniMsg disabled in SecurityEnhancement upgrade").Result() + } return handleIssueMiniToken(ctx, tokenMapper, keeper, msg) case IssueTinyMsg: + if sdk.IsUpgrade(upgrade.SecurityEnhancement) { + return sdk.ErrMsgNotSupported("IssueTinyMsg disabled in SecurityEnhancement upgrade").Result() + } return handleIssueTinyToken(ctx, tokenMapper, keeper, msg) default: errMsg := "Unrecognized msg type: " + reflect.TypeOf(msg).Name() @@ -62,7 +72,7 @@ func handleIssueToken(ctx sdk.Context, tokenMapper store.Mapper, bankKeeper bank return issue(ctx, logger, tokenMapper, bankKeeper, token) } -//Mint MiniToken is also handled by this function +// Mint MiniToken is also handled by this function func handleMintToken(ctx sdk.Context, tokenMapper store.Mapper, bankKeeper bank.Keeper, msg MintMsg) sdk.Result { symbol := strings.ToUpper(msg.Symbol) logger := log.With("module", "token", "symbol", symbol, "amount", msg.Amount, "minter", msg.From) diff --git a/plugins/tokens/seturi/handler.go b/plugins/tokens/seturi/handler.go index ba7ea975c..657c256d6 100644 --- a/plugins/tokens/seturi/handler.go +++ b/plugins/tokens/seturi/handler.go @@ -2,20 +2,24 @@ package seturi import ( "fmt" + "reflect" "strings" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/bnb-chain/node/common/log" common "github.com/bnb-chain/node/common/types" + "github.com/bnb-chain/node/common/upgrade" "github.com/bnb-chain/node/plugins/tokens/store" + sdk "github.com/cosmos/cosmos-sdk/types" ) func NewHandler(tokenMapper store.Mapper) sdk.Handler { return func(ctx sdk.Context, msg sdk.Msg) sdk.Result { switch msg := msg.(type) { case SetURIMsg: + if sdk.IsUpgrade(upgrade.SecurityEnhancement) { + return sdk.ErrMsgNotSupported("SetURIMsg disabled in SecurityEnhancement upgrade").Result() + } return handleSetURI(ctx, tokenMapper, msg) default: errMsg := "Unrecognized msg type: " + reflect.TypeOf(msg).Name() diff --git a/plugins/tokens/timelock/handler.go b/plugins/tokens/timelock/handler.go index 5be0fca45..1bdd1ae5d 100644 --- a/plugins/tokens/timelock/handler.go +++ b/plugins/tokens/timelock/handler.go @@ -4,6 +4,7 @@ import ( "fmt" "time" + "github.com/bnb-chain/node/common/upgrade" sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -11,6 +12,9 @@ func NewHandler(keeper Keeper) sdk.Handler { return func(ctx sdk.Context, msg sdk.Msg) sdk.Result { switch msg := msg.(type) { case TimeLockMsg: + if sdk.IsUpgrade(upgrade.SecurityEnhancement) { + return sdk.ErrMsgNotSupported("TimeLockMsg disabled in SecurityEnhancement upgrade").Result() + } return handleTimeLock(ctx, keeper, msg) case TimeUnlockMsg: return handleTimeUnlock(ctx, keeper, msg) diff --git a/scripts/recon_integration_test.sh b/scripts/recon_integration_test.sh index f0908f6af..2162d512b 100644 --- a/scripts/recon_integration_test.sh +++ b/scripts/recon_integration_test.sh @@ -24,6 +24,7 @@ function prepare_node() { mkdir ${home} secret=$(./bnbchaind init --moniker testnode --home ${home} --home-client ${cli_home} --chain-id ${chain_id} | grep secret | grep -o ":.*" | grep -o "\".*" | sed "s/\"//g") + echo ${secret} >${home}/secret $(cd "./${home}/config" && sed -i -e "s/BEP12Height = 9223372036854775807/BEP12Height = 1/g" app.toml) $(cd "./${home}/config" && sed -i -e "s/BEP3Height = 9223372036854775807/BEP3Height = 1/g" app.toml) @@ -46,6 +47,9 @@ function prepare_node() { $(cd "./${home}/config" && sed -i -e "s/BEP159Phase2Height = 9223372036854775807/BEP159Phase2Height = 11/g" app.toml) $(cd "./${home}/config" && sed -i -e "s/LimitConsAddrUpdateIntervalHeight = 9223372036854775807/LimitConsAddrUpdateIntervalHeight = 11/g" app.toml) $(cd "./${home}/config" && sed -i -e "s/breatheBlockInterval = 0/breatheBlockInterval = 5/g" app.toml) + # $(cd "./${home}/config" && sed -i -e "s/publishStaking = false/publishStaking = true/g" app.toml) + # $(cd "./${home}/config" && sed -i -e "s/publishKafka = false/publishKafka = true/g" app.toml) + # $(cd "./${home}/config" && sed -i -e "s/publishLocal = false/publishLocal = true/g" app.toml) # stop and start node ps -ef | grep bnbchaind | grep testnoded | awk '{print $2}' | xargs kill -9 @@ -69,6 +73,7 @@ function exit_test() { } function check_operation() { + printf "\n=================== Checking $1 ===================\n" echo "$2" echo "$2" | grep -q $3 @@ -83,204 +88,320 @@ result=$(expect ./recover.exp "${secret}" "alice" true) check_operation "Recover Key" "${result}" "${keys_operation_words}" bob_secret="bottom quick strong ranch section decide pepper broken oven demand coin run jacket curious business achieve mule bamboo remain vote kid rigid bench rubber" -result=$(expect ./add_key.exp "${bob_secret}" "bob") +bob_val_addr=bva1ddt3ls9fjcd8mh69ujdg3fxc89qle2a7k8spre +bob_pubkey=bcap1zcjduepqes09r5x3kqnv7nlrcrveh5sxsrqxw222wu8999fa2wpnjher4yxst89v4a +bob_pubkey_new=bcap1zcjduepqcde4hk9kac248hqr3vqxle049f9l5zc58rcacy6nphuay5wt6c5q3ydes7 +result=$(expect ./recover.exp "${bob_secret}" "bob" true) check_operation "Add Key" "${result}" "${keys_operation_words}" -alice_addr=$(./bnbcli keys list --home ${cli_home} | grep alice | grep -o "bnb1[0-9a-zA-Z]*") -bob_addr=$(./bnbcli keys list --home ${cli_home} | grep bob | grep -o "bnb1[0-9a-zA-Z]*") - +carl_secret="mad calm portion vendor fine weather thunder ensure simple fish enrich genre plate kind minor random where crop hero soda isolate pelican provide chimney" +result=$(expect ./recover.exp "${carl_secret}" "carl" true) +check_operation "Add Key" "${result}" "${keys_operation_words}" # wait for the chain sleep 10 +alice_addr=$(./bnbcli keys list --home ${cli_home} | grep alice | grep -o "bnb1[0-9a-zA-Z]*") +bob_addr=$(./bnbcli keys list --home ${cli_home} | grep bob | grep -o "bnb1[0-9a-zA-Z]*") +carl_addr=$(./bnbcli keys list --home ${cli_home} | grep carl | grep -o "bnb1[0-9a-zA-Z]*") + +sleep 5 # send result=$(expect ./send.exp ${cli_home} alice ${chain_id} "100000000000000:BNB" ${bob_addr}) check_operation "Send Token" "${result}" "${chain_operation_words}" +sleep 1 +result=$(expect ./send.exp ${cli_home} alice ${chain_id} "100000000000000:BNB" ${carl_addr}) +check_operation "Send Token" "${result}" "${chain_operation_words}" + sleep 1 # issue token result=$(expect ./issue.exp BTC Bitcoin 1000000000000000 true bob ${chain_id} ${cli_home}) btc_symbol=$(echo "${result}" | tail -n 1 | grep -o "BTC-[0-9A-Z]*") check_operation "Issue Token" "${result}" "${chain_operation_words}" +sleep 1 +# bind +result=$(expect ./bind.exp ${btc_symbol} 0x6aade9709155a8386c63c1d2e5939525b960b4e7 10000000000000 4083424190 bob ${chain_id} ${cli_home}) +check_operation "BindBind Token" "${result}" "${chain_operation_words}" + sleep 1 # issue token result=$(expect ./issue.exp ETH Ethereum 1000000000000000 true bob ${chain_id} ${cli_home}) eth_symbol=$(echo "${result}" | tail -n 1 | grep -o "ETH-[0-9A-Z]*") check_operation "Issue Token" "${result}" "${chain_operation_words}" -apply_upgrade -sleep 10 # wait for upgrade height - -# issue token failed, due to upgrade -result=$(expect ./issue.exp USDT USDT 1000000000000000 true bob ${chain_id} ${cli_home}) -check_operation "Mint Token" "${result}" "ERROR:" - sleep 1 -# send -result=$(expect ./send.exp ${cli_home} alice ${chain_id} "100000000000000:BNB" ${bob_addr}) -check_operation "Send Token" "${result}" "${chain_operation_words}" - -sleep 1 -# multi send -echo ${bob_addr} -result=$(expect ./multi_send.exp ${cli_home} alice ${chain_id} "[{\"to\":\"${bob_addr}\",\"amount\":\"100000000000000:BNB\"},{\"to\":\"${alice_addr}\",\"amount\":\"100000000000000:BNB\"}]") -check_operation "Multi Send Token" "${result}" "${chain_operation_words}" - -sleep 1 -# mint token -result=$(expect ./mint.exp ${btc_symbol} 1000000000000000 bob ${chain_id} ${cli_home}) -check_operation "Mint Token" "${result}" "${chain_operation_words}" - -sleep 1 -# burn token -result=$(expect ./mint.exp ${btc_symbol} 50000000 bob ${chain_id} ${cli_home}) -check_operation "Mint Token" "${result}" "${chain_operation_words}" - -sleep 1 -# propose list -((expire_time = $(date '+%s') + 1000)) -lower_case_btc_symbol=$(echo ${btc_symbol} | tr 'A-Z' 'a-z') -result=$(expect ./propose_list.exp ${chain_id} alice 200000000000:BNB ${lower_case_btc_symbol} bnb 100000000 "list BTC/BNB" "list BTC/BNB" ${cli_home} ${expire_time} 5) -check_operation "Propose list" "${result}" "${chain_operation_words}" - -sleep 2 -# vote for propose -result=$(expect ./vote.exp alice ${chain_id} 1 Yes ${cli_home}) -check_operation "Vote" "${result}" "${chain_operation_words}" - -sleep 1 -## query account balance -result=$(./bnbcli account $bob_addr --trust-node) -balance1=$(echo "${result}" | jq -r '.value.base.coins[0].amount') - -sleep 1 -# set an account flag which isn't bounded to transfer memo checker script -result=$(expect ./set_account_flags.exp 0x02 bob ${chain_id} ${cli_home}) -check_operation "Set account flags" "${result}" "${chain_operation_words}" - -sleep 1 -## query account balance -result=$(./bnbcli account $bob_addr --trust-node) -balance2=$(echo "${result}" | jq -r '.value.base.coins[0].amount') - -check_operation "Check fee deduction for set account flags transaction" "$(expr $balance2 - $balance1)" "100000000" - -sleep 1 -result=$(expect ./send.exp ${cli_home} alice ${chain_id} "100000000000000:BNB" ${bob_addr}) -check_operation "Send Token" "${result}" "${chain_operation_words}" - -sleep 1 -result=$(expect ./send.exp ${cli_home} alice ${chain_id} "100000000000000:BNB" ${bob_addr} "123456abcd") -check_operation "Send Token" "${result}" "${chain_operation_words}" - -sleep 1 -# set an account flag which is bounded to transfer memo checker script -result=$(expect ./set_account_flags.exp 0x01 bob ${chain_id} ${cli_home}) -check_operation "Set account flags" "${result}" "${chain_operation_words}" - -sleep 1 -result=$(expect ./send.exp ${cli_home} alice ${chain_id} "100000000000000:BNB" ${bob_addr}) -check_operation "Send Token" "${result}" "ERROR" +# freeze token +result=$(expect ./freeze.exp ${btc_symbol} 100000000 bob ${chain_id} ${cli_home}) +check_operation "Freeze Token" "${result}" "${chain_operation_words}" + +# staking related +function staking() { + # get parameters + result=$(./bnbcli staking parameters --home ${cli_home} --trust-node) + check_operation "Query Staking Parameters" "${result}" "proposer" + + # get params side-params + result=$(./bnbcli params side-params --home ${cli_home} --trust-node --side-chain-id bsc) + check_operation "Query Staking Parameters" "${result}" "StakeParamSet" + + # get validators + result=$(./bnbcli staking validators --home ${cli_home} --trust-node) + check_operation "Get Validators" "${result}" "Operator" + + # get validator + operator_address=$(echo "${result}" | grep Operator | grep -o "bva[0-9a-zA-Z]*" | head -n1) + result=$(./bnbcli staking validator ${operator_address} --home ${cli_home} --trust-node) + check_operation "Get Validator" "${result}" "Operator" + + # get delegations + result=$(./bnbcli staking delegations ${alice_addr} --home ${cli_home} --trust-node) + check_operation "Get Delegations" "${result}" "Validator" + + # get delegation + validator_address=$(echo "${result}" | grep Validator | grep -o "bva[0-9a-zA-Z]*") + delegator_address=$(echo "${result}" | grep Delegator | grep -o "bnb1[0-9a-zA-Z]*") + result=$(./bnbcli staking delegation --address-delegator ${delegator_address} --validator ${validator_address} --home ${cli_home} --trust-node) + check_operation "Get Delegation" "${result}" "Validator" + + # get pool + result=$(./bnbcli staking pool --home ${cli_home} --trust-node) + + # create validator + result=$(expect ./create-validator-open.exp ${cli_home} bob ${chain_id} ${bob_pubkey}) + check_operation "create validator open" "${result}" "${chain_operation_words}" + sleep 5 + result=$(./bnbcli staking validators --home ${cli_home} --trust-node) + check_operation "Get Validators" "${result}" "Operator" + result=$(./bnbcli staking validator ${bob_val_addr} --home ${cli_home} --trust-node) + check_operation "Get Validator" "${result}" "bob" + check_operation "Get Validator" "${result}" "${bob_pubkey}" + + # edit validator + result=$(expect ./edit-validator.exp ${cli_home} bob ${chain_id} ${bob_pubkey_new}) + check_operation "edit validator" "${result}" "${chain_operation_words}" + sleep 5 + result=$(./bnbcli staking validator ${bob_val_addr} --home ${cli_home} --trust-node) + check_operation "Get Validator" "${result}" "bob-new" + check_operation "Get Validator" "${result}" "${bob_pubkey_new}" + bob_val_addr=$(echo "${result}" | grep Operator | grep -o "bva[0-9a-zA-Z]*") + + # run test with go-sdk + cd ../e2e && go run . +} -sleep 1 -result=$(expect ./send.exp ${cli_home} alice ${chain_id} "100000000000000:BNB" ${bob_addr} "123456abcd") -check_operation "Send Token" "${result}" "ERROR:" +# token related +function token() { + # issue token failed, due to upgrade + result=$(expect ./issue.exp USDT USDT 1000000000000000 true bob ${chain_id} ${cli_home}) + check_operation "Mint Token" "${result}" "ERROR:" + + sleep 1 + # send + result=$(expect ./send.exp ${cli_home} alice ${chain_id} "100000000000000:BNB" ${bob_addr}) + check_operation "Send Token" "${result}" "${chain_operation_words}" + + sleep 1 + # multi send + echo ${bob_addr} + result=$(expect ./multi_send.exp ${cli_home} alice ${chain_id} "[{\"to\":\"${bob_addr}\",\"amount\":\"100000000000000:BNB\"},{\"to\":\"${alice_addr}\",\"amount\":\"100000000000000:BNB\"}]") + check_operation "Multi Send Token" "${result}" "${chain_operation_words}" + + sleep 1 + # mint token + result=$(expect ./mint.exp ${btc_symbol} 1000000000000000 bob ${chain_id} ${cli_home}) + check_operation "Mint Token" "${result}" "${chain_operation_words}" + + sleep 1 + # burn token + result=$(expect ./burn.exp ${btc_symbol} 50000000 bob ${chain_id} ${cli_home}) + check_operation "Burn Token" "${result}" "${chain_operation_words}" + + sleep 1 + # unfreeze token + result=$(expect ./unfreeze.exp ${btc_symbol} 100000000 bob ${chain_id} ${cli_home}) + check_operation "Freeze Token" "${result}" "${chain_operation_words}" -sleep 1 -result=$(expect ./send.exp ${cli_home} alice ${chain_id} "100000000000000:BNB" ${bob_addr} "1234567890") -check_operation "Send Token" "${result}" "${chain_operation_words}" +} -sleep 1 -# Create an atomic swap -result=$(expect ./HTLT-cross-chain.exp 2000 "100000000:BNB" "100000000:BNB" $bob_addr 0xf2fbB6C41271064613D6f44C7EE9A6c471Ec9B25 alice ${chain_id} ${cli_home}) -check_operation "Create an atomic swap" "${result}" "${chain_operation_words}" -randomNumber=$(sed 's/Random number: //g' <<<$(echo "${result}" | grep -o "Random number: [0-9a-z]*")) -timestamp=$(sed 's/Timestamp: //g' <<<$(echo "${result}" | grep -o "Timestamp: [0-9]*")) -randomNumberHash=$(sed 's/Random number hash: //g' <<<$(echo "${result}" | grep -o "Random number hash: [0-9a-z]*")) -swapID=$(sed 's/swapID: //g' <<<$(echo "${result}" | tail -n 1 | grep -o "swapID: [0-9a-z]*")) -sleep 1 +function gov() { + sleep 1 + # propose list + ((expire_time = $(date '+%s') + 1000)) + lower_case_btc_symbol=$(echo ${btc_symbol} | tr 'A-Z' 'a-z') + result=$(expect ./propose_list.exp ${chain_id} alice 200000000000:BNB ${lower_case_btc_symbol} bnb 100000000 "list BTC/BNB" "list BTC/BNB" ${cli_home} ${expire_time} 5) + check_operation "Propose list" "${result}" "${chain_operation_words}" -atomicSwap=$(./bnbcli token query-swap --swap-id ${swapID} --trust-node) -swapFrom=$(echo "${atomicSwap}" | jq -r '.from') -check_operation "Check swap creator address" $swapFrom $alice_addr -swapTo=$(echo "${atomicSwap}" | jq -r '.to') -check_operation "swap recipient address" $swapTo $bob_addr + sleep 2 + # vote for propose + result=$(expect ./vote.exp alice ${chain_id} 1 Yes ${cli_home}) + check_operation "Vote" "${result}" "${chain_operation_words}" -result=$(./bnbcli account bnb1wxeplyw7x8aahy93w96yhwm7xcq3ke4f8ge93u --trust-node) -swapDeadAddrBalance=$(echo "${result}" | jq -r '.value.base.coins[0].amount') -check_operation "the balance of swap dead address" $swapDeadAddrBalance "100000000" +} -result=$(./bnbcli account $bob_addr --trust-node) -balanceBobBeforeClaim=$(echo "${result}" | jq -r '.value.base.coins[0].amount') +function account() { -# Claim an atomic swap -result=$(expect ./claim.exp ${swapID} $randomNumber alice ${chain_id} ${cli_home}) -check_operation "claim an atomic swap" "${result}" "${chain_operation_words}" + sleep 1 + ## query account balance + result=$(./bnbcli account $bob_addr --trust-node) + balance1=$(echo "${result}" | jq -r '.value.base.coins[0].amount') -sleep 1 + sleep 1 + # set an account flag which isn't bounded to transfer memo checker script + result=$(expect ./set_account_flags.exp 0x02 bob ${chain_id} ${cli_home}) + check_operation "Set account flags" "${result}" "${chain_operation_words}" -result=$(./bnbcli account $bob_addr --trust-node) -balanceBobAfterClaim=$(echo "${result}" | jq -r '.value.base.coins[0].amount') -check_operation "Bob balance after claim swap" "$(expr $balanceBobAfterClaim - $balanceBobBeforeClaim)" "100000000" + sleep 1 + ## query account balance + result=$(./bnbcli account $bob_addr --trust-node) + balance2=$(echo "${result}" | jq -r '.value.base.coins[0].amount') + check_operation "Check fee deduction for set account flags transaction" "$(expr $balance2 - $balance1)" "100000000" -# Create an atomic swap -result=$(expect ./HTLT-cross-chain.exp 2000 "100000000:BNB" "100000000:BNB" $alice_addr 0xf2fbB6C41271064613D6f44C7EE9A6c471Ec9B25 bob ${chain_id} ${cli_home}) -check_operation "Create an atomic swap" "${result}" "${chain_operation_words}" -swapID=$(sed 's/swapID: //g' <<<$(echo "${result}" | tail -n 1 | grep -o "swapID: [0-9a-z]*")) + sleep 1 + result=$(expect ./send.exp ${cli_home} alice ${chain_id} "100000000000000:BNB" ${bob_addr}) + check_operation "Send Token" "${result}" "${chain_operation_words}" -sleep 1 + sleep 1 + result=$(expect ./send.exp ${cli_home} alice ${chain_id} "100000000000000:BNB" ${bob_addr} "123456abcd") + check_operation "Send Token" "${result}" "${chain_operation_words}" -# Refund an atomic swap -result=$(expect ./refund.exp ${swapID} alice ${chain_id} ${cli_home}) -check_operation "refund an atomic swap which is still not expired" "${result}" "ERROR" + sleep 1 + # set an account flag which is bounded to transfer memo checker script + result=$(expect ./set_account_flags.exp 0x01 bob ${chain_id} ${cli_home}) + check_operation "Set account flags" "${result}" "${chain_operation_words}" -sleep 1 + sleep 1 + result=$(expect ./send.exp ${cli_home} alice ${chain_id} "100000000000000:BNB" ${bob_addr}) + check_operation "Send Token" "${result}" "ERROR" -result=$(./bnbcli account bnb1wxeplyw7x8aahy93w96yhwm7xcq3ke4f8ge93u --trust-node) -swapDeadAddrBalance=$(echo "${result}" | jq -r '.value.base.coins[0].amount') -check_operation "the balance of swap dead address" $swapDeadAddrBalance "100000000" + sleep 1 + result=$(expect ./send.exp ${cli_home} alice ${chain_id} "100000000000000:BNB" ${bob_addr} "123456abcd") + check_operation "Send Token" "${result}" "ERROR:" -sleep 1 -# Create a single chain atomic swap -result=$(expect ./HTLT-single-chain.exp 2000 "100000000:BNB" "10000:${eth_symbol}" $bob_addr alice ${chain_id} ${cli_home}) -check_operation "Create a single chain atomic swap" "${result}" "${chain_operation_words}" -randomNumber=$(sed 's/Random number: //g' <<<$(echo "${result}" | grep -o "Random number: [0-9a-z]*")) -timestamp=$(sed 's/Timestamp: //g' <<<$(echo "${result}" | grep -o "Timestamp: [0-9]*")) -randomNumberHash=$(sed 's/Random number hash: //g' <<<$(echo "${result}" | grep -o "Random number hash: [0-9a-z]*")) -swapID=$(sed 's/swapID: //g' <<<$(echo "${result}" | tail -n 1 | grep -o "swapID: [0-9a-z]*")) -sleep 1 + sleep 1 + result=$(expect ./send.exp ${cli_home} alice ${chain_id} "100000000000000:BNB" ${bob_addr} "1234567890") + check_operation "Send Token" "${result}" "${chain_operation_words}" -# Deposit to a single chain atomic swap -result=$(expect ./deposit.exp ${swapID} "10000:${eth_symbol}" bob ${chain_id} ${cli_home}) -check_operation "Deposit to a single chain atomic swap" "${result}" "${chain_operation_words}" +} -sleep 1 -# claim a single chain atomic swap -result=$(expect ./claim.exp ${swapID} ${randomNumber} alice ${chain_id} ${cli_home}) -check_operation "claim a single chain atomic swap" "${result}" "${chain_operation_words}" +function swap() { + + sleep 1 + # Create an atomic swap + result=$(expect ./HTLT-cross-chain.exp 2000 "100000000:BNB" "100000000:BNB" $bob_addr 0xf2fbB6C41271064613D6f44C7EE9A6c471Ec9B25 alice ${chain_id} ${cli_home}) + check_operation "Create an atomic swap" "${result}" "${chain_operation_words}" + randomNumber=$(sed 's/Random number: //g' <<<$(echo "${result}" | grep -o "Random number: [0-9a-z]*")) + timestamp=$(sed 's/Timestamp: //g' <<<$(echo "${result}" | grep -o "Timestamp: [0-9]*")) + randomNumberHash=$(sed 's/Random number hash: //g' <<<$(echo "${result}" | grep -o "Random number hash: [0-9a-z]*")) + swapID=$(sed 's/swapID: //g' <<<$(echo "${result}" | tail -n 1 | grep -o "swapID: [0-9a-z]*")) + sleep 1 + + atomicSwap=$(./bnbcli token query-swap --swap-id ${swapID} --trust-node) + swapFrom=$(echo "${atomicSwap}" | jq -r '.from') + check_operation "Check swap creator address" $swapFrom $alice_addr + swapTo=$(echo "${atomicSwap}" | jq -r '.to') + check_operation "swap recipient address" $swapTo $bob_addr + + result=$(./bnbcli account bnb1wxeplyw7x8aahy93w96yhwm7xcq3ke4f8ge93u --trust-node) + swapDeadAddrBalance=$(echo "${result}" | jq -r '.value.base.coins[0].amount') + check_operation "the balance of swap dead address" $swapDeadAddrBalance "100000000" + + result=$(./bnbcli account $bob_addr --trust-node) + balanceBobBeforeClaim=$(echo "${result}" | jq -r '.value.base.coins[0].amount') + + # Claim an atomic swap + result=$(expect ./claim.exp ${swapID} $randomNumber alice ${chain_id} ${cli_home}) + check_operation "claim an atomic swap" "${result}" "${chain_operation_words}" + + sleep 1 + + result=$(./bnbcli account $bob_addr --trust-node) + balanceBobAfterClaim=$(echo "${result}" | jq -r '.value.base.coins[0].amount') + check_operation "Bob balance after claim swap" "$(expr $balanceBobAfterClaim - $balanceBobBeforeClaim)" "100000000" + + # Create an atomic swap + result=$(expect ./HTLT-cross-chain.exp 2000 "100000000:BNB" "100000000:BNB" $alice_addr 0xf2fbB6C41271064613D6f44C7EE9A6c471Ec9B25 bob ${chain_id} ${cli_home}) + check_operation "Create an atomic swap" "${result}" "${chain_operation_words}" + swapID=$(sed 's/swapID: //g' <<<$(echo "${result}" | tail -n 1 | grep -o "swapID: [0-9a-z]*")) + + sleep 1 + + # Refund an atomic swap + result=$(expect ./refund.exp ${swapID} alice ${chain_id} ${cli_home}) + check_operation "refund an atomic swap which is still not expired" "${result}" "ERROR" + + sleep 1 + + result=$(./bnbcli account bnb1wxeplyw7x8aahy93w96yhwm7xcq3ke4f8ge93u --trust-node) + swapDeadAddrBalance=$(echo "${result}" | jq -r '.value.base.coins[0].amount') + check_operation "the balance of swap dead address" $swapDeadAddrBalance "100000000" + + sleep 1 + # Create a single chain atomic swap + result=$(expect ./HTLT-single-chain.exp 2000 "100000000:BNB" "10000:${eth_symbol}" $bob_addr alice ${chain_id} ${cli_home}) + check_operation "Create a single chain atomic swap" "${result}" "${chain_operation_words}" + randomNumber=$(sed 's/Random number: //g' <<<$(echo "${result}" | grep -o "Random number: [0-9a-z]*")) + timestamp=$(sed 's/Timestamp: //g' <<<$(echo "${result}" | grep -o "Timestamp: [0-9]*")) + randomNumberHash=$(sed 's/Random number hash: //g' <<<$(echo "${result}" | grep -o "Random number hash: [0-9a-z]*")) + swapID=$(sed 's/swapID: //g' <<<$(echo "${result}" | tail -n 1 | grep -o "swapID: [0-9a-z]*")) + + sleep 1 + # Deposit to a single chain atomic swap + result=$(expect ./deposit.exp ${swapID} "10000:${eth_symbol}" bob ${chain_id} ${cli_home}) + check_operation "Deposit to a single chain atomic swap" "${result}" "${chain_operation_words}" + + sleep 1 + # Claim a single chain atomic swap + result=$(expect ./claim.exp ${swapID} ${randomNumber} alice ${chain_id} ${cli_home}) + check_operation "claim a single chain atomic swap" "${result}" "${chain_operation_words}" + + sleep 1 + # Deposit to a single chain atomic swap + result=$(expect ./deposit.exp ${swapID} "10000:${eth_symbol}" bob ${chain_id} ${cli_home}) + check_operation "Deposit to a closed single chain atomic swap" "${result}" "ERROR" + + sleep 1 + # Create a single chain atomic swap + result=$(expect ./HTLT-single-chain.exp 360 "100000000:BNB" "10000:${eth_symbol}" $bob_addr alice ${chain_id} ${cli_home}) + check_operation "Create a single chain atomic swap" "${result}" "${chain_operation_words}" + randomNumber=$(sed 's/Random number: //g' <<<$(echo "${result}" | grep -o "Random number: [0-9a-z]*")) + timestamp=$(sed 's/Timestamp: //g' <<<$(echo "${result}" | grep -o "Timestamp: [0-9]*")) + randomNumberHash=$(sed 's/Random number hash: //g' <<<$(echo "${result}" | grep -o "Random number hash: [0-9a-z]*")) + swapID=$(sed 's/swapID: //g' <<<$(echo "${result}" | tail -n 1 | grep -o "swapID: [0-9a-z]*")) + + sleep 1 + # Deposit to a single chain atomic swap + result=$(expect ./deposit.exp ${swapID} "10000:${eth_symbol}" bob ${chain_id} ${cli_home}) + check_operation "Deposit to a single chain atomic swap" "${result}" "${chain_operation_words}" + + sleep 1 + # Deposit to a single chain atomic swap + result=$(expect ./deposit.exp ${swapID} "10000:${eth_symbol}" bob ${chain_id} ${cli_home}) + check_operation "Deposit to a deposited single chain atomic swap" "${result}" "ERROR" -sleep 1 -# Deposit to a single chain atomic swap -result=$(expect ./deposit.exp ${swapID} "10000:${eth_symbol}" bob ${chain_id} ${cli_home}) -check_operation "Deposit to a closed single chain atomic swap" "${result}" "ERROR" +} -sleep 1 -# Create a single chain atomic swa -result=$(expect ./HTLT-single-chain.exp 360 "100000000:BNB" "10000:${eth_symbol}" $bob_addr alice ${chain_id} ${cli_home}) -check_operation "Create a single chain atomic swap" "${result}" "${chain_operation_words}" -randomNumber=$(sed 's/Random number: //g' <<<$(echo "${result}" | grep -o "Random number: [0-9a-z]*")) -timestamp=$(sed 's/Timestamp: //g' <<<$(echo "${result}" | grep -o "Timestamp: [0-9]*")) -randomNumberHash=$(sed 's/Random number hash: //g' <<<$(echo "${result}" | grep -o "Random number hash: [0-9a-z]*")) -swapID=$(sed 's/swapID: //g' <<<$(echo "${result}" | tail -n 1 | grep -o "swapID: [0-9a-z]*")) +function bridge() { + echo "skip, due to crosschain needed" + # sleep 1 + # # Transfer out + # result=$(expect ./transfer-out.exp ${cli_home} alice ${chain_id} "10000:${btc_symbol}" 0x4307fa0f0b4a9fe83e4ed88ae93a33b03892be03 4083424190) + # check_operation "Transfer Out" "${result}" "${chain_operation_words}" + + # sleep 1 + # # Unbind + # result=$(expect ./unbind.exp ${btc_symbol} alice ${chain_id} ${cli_home}) + # check_operation "Unbind" "${result}" "${chain_operation_words}" +} -sleep 1 -# Deposit to a single chain atomic swap -result=$(expect ./deposit.exp ${swapID} "10000:${eth_symbol}" bob ${chain_id} ${cli_home}) -check_operation "Deposit to a single chain atomic swap" "${result}" "${chain_operation_words}" +apply_upgrade +sleep 10 -sleep 1 -# Deposit to a single chain atomic swap -result=$(expect ./deposit.exp ${swapID} "10000:${eth_symbol}" bob ${chain_id} ${cli_home}) -check_operation "Deposit to a deposited single chain atomic swap" "${result}" "ERROR" +token +bridge +gov +account +swap +staking exit_test 0 From 7b3fb9d7d9da0a1c34e4b6c2bf15c5512adae12d Mon Sep 17 00:00:00 2001 From: forcodedancing Date: Fri, 26 May 2023 14:39:41 +0800 Subject: [PATCH 03/16] fix lint issue --- app/reconciliation.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/reconciliation.go b/app/reconciliation.go index 55ae7f0cf..b6083fa94 100644 --- a/app/reconciliation.go +++ b/app/reconciliation.go @@ -11,7 +11,7 @@ import ( const globalAccountNumber = "globalAccountNumber" // reconBalance will do reconciliation for accounts balances. -func (app *BinanceChain) reconBalance(ctx sdk.Context) error { +func (app *BinanceChain) reconBalance(ctx sdk.Context) { currentHeight := ctx.BlockHeight() ctx.Logger().Debug("account changes") @@ -29,7 +29,6 @@ func (app *BinanceChain) reconBalance(ctx sdk.Context) error { ctx.Logger().Error(err) panic(err) } - return nil } func (app *BinanceChain) getAccountChanges(ctx sdk.Context) (sdk.Coins, sdk.Coins) { From 1187985368583e26abaecdca90388408aca534ef Mon Sep 17 00:00:00 2001 From: forcodedancing Date: Fri, 26 May 2023 17:37:09 +0800 Subject: [PATCH 04/16] fix issue --- app/reconciliation.go | 17 ++++++++++------- go.mod | 2 +- go.sum | 4 ++-- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/app/reconciliation.go b/app/reconciliation.go index b6083fa94..31baf04a7 100644 --- a/app/reconciliation.go +++ b/app/reconciliation.go @@ -32,17 +32,16 @@ func (app *BinanceChain) reconBalance(ctx sdk.Context) { } func (app *BinanceChain) getAccountChanges(ctx sdk.Context) (sdk.Coins, sdk.Coins) { - currentHeight := ctx.BlockHeight() iavlStore, ok := app.GetCommitMultiStore().GetCommitStore(common.AccountStoreKey).(*store.IavlStore) if !ok { panic("cannot convert to ival") } - preVersion := currentHeight - 2 preCoins := sdk.Coins{} currentCoins := sdk.Coins{} diff := iavlStore.GetDiff() + version := iavlStore.GetTree().Version() - 1 for k, v := range diff { if k == globalAccountNumber { continue @@ -52,15 +51,17 @@ func (app *BinanceChain) getAccountChanges(ctx sdk.Context) (sdk.Coins, sdk.Coin if err != nil { panic("failed to unmarshal diff value " + err.Error()) } + ctx.Logger().Debug("diff account", "address", acc1.GetAddress(), "coins", acc1.GetCoins().String()) currentCoins = currentCoins.Plus(acc1.GetCoins()) var acc2 sdk.Account - _, v = iavlStore.GetTree().GetVersioned([]byte(k), preVersion) + _, v = iavlStore.GetTree().GetVersioned([]byte(k), version) if v != nil { // it is not a new account err = app.Codec.UnmarshalBinaryBare(v, &acc2) if err != nil { panic("failed to unmarshal previous value " + err.Error()) } + ctx.Logger().Debug("pre account", "address", acc2.GetAddress(), "coins", acc2.GetCoins().String()) preCoins = preCoins.Plus(acc2.GetCoins()) } } @@ -72,22 +73,22 @@ func (app *BinanceChain) getAccountChanges(ctx sdk.Context) (sdk.Coins, sdk.Coin ctx.Logger().Debug("previous coins", "coins", preCoins.String()) } + ctx.Logger().Debug("changes", "diff", currentCoins.String(), "previous", preCoins.String()) + return preCoins, currentCoins } func (app *BinanceChain) getTokenChanges(ctx sdk.Context) (sdk.Coins, sdk.Coins) { - currentHeight := ctx.BlockHeight() - iavlStore, ok := app.GetCommitMultiStore().GetCommitStore(common.TokenStoreKey).(*store.IavlStore) if !ok { panic("cannot convert to ival") } - preVersion := currentHeight - 2 preCoins := sdk.Coins{} currentCoins := sdk.Coins{} diff := iavlStore.GetDiff() + version := iavlStore.GetTree().Version() - 1 for k, v := range diff { var token1 types.IToken err := app.Codec.UnmarshalBinaryBare(v, &token1) @@ -99,7 +100,7 @@ func (app *BinanceChain) getTokenChanges(ctx sdk.Context) (sdk.Coins, sdk.Coins) }) var token2 types.IToken - _, v = iavlStore.GetTree().GetVersioned([]byte(k), preVersion) + _, v = iavlStore.GetTree().GetVersioned([]byte(k), version) if v != nil { // it is not a new token err = app.Codec.UnmarshalBinaryBare(v, &token2) if err != nil { @@ -118,5 +119,7 @@ func (app *BinanceChain) getTokenChanges(ctx sdk.Context) (sdk.Coins, sdk.Coins) ctx.Logger().Debug("previous coins", "coins", preCoins.String()) } + ctx.Logger().Debug("changes", "diff", currentCoins.String(), "previous", preCoins.String()) + return preCoins, currentCoins } diff --git a/go.mod b/go.mod index 0a8a539fe..ff89fde2f 100644 --- a/go.mod +++ b/go.mod @@ -88,7 +88,7 @@ require ( ) replace ( - github.com/cosmos/cosmos-sdk => github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230526061844-2ba57b39bd57 + github.com/cosmos/cosmos-sdk => github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230526093330-21a026eb08fd github.com/tendermint/go-amino => github.com/bnb-chain/bnc-go-amino v0.14.1-binance.2 github.com/tendermint/iavl => github.com/bnb-chain/bnc-tendermint-iavl v0.12.0-binance.5 github.com/tendermint/tendermint => github.com/bnb-chain/bnc-tendermint v0.32.3-bc.10 diff --git a/go.sum b/go.sum index 03567c03e..c3afdce8f 100644 --- a/go.sum +++ b/go.sum @@ -141,8 +141,8 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/etcd-io/bbolt v1.3.3 h1:gSJmxrs37LgTqR/oyJBWok6k6SvXEUerFTbltIhXkBM= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230526061844-2ba57b39bd57 h1:DN+MGoohS9d3BsunTemaGdzFJe+H3rJYi4ga5E22F/I= -github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230526061844-2ba57b39bd57/go.mod h1:XiDYVT+XqECR+AyCBO4KBsrbL/d1x2UTsVU36SvHxI8= +github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230526093330-21a026eb08fd h1:7tMDzWWWEHS9SnJZBzrMbnexFSEN46LjzyMayBh8mRA= +github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230526093330-21a026eb08fd/go.mod h1:XiDYVT+XqECR+AyCBO4KBsrbL/d1x2UTsVU36SvHxI8= github.com/fortytw2/leaktest v1.2.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= From 0549e88480fb1b2ae64b007347bde0542d963ee5 Mon Sep 17 00:00:00 2001 From: forcodedancing Date: Mon, 29 May 2023 14:02:57 -0600 Subject: [PATCH 05/16] fix frozen/lock balance --- .gitignore | 3 +++ app/reconciliation.go | 35 +++++++++++++------------------ scripts/recon_integration_test.sh | 1 - 3 files changed, 18 insertions(+), 21 deletions(-) diff --git a/.gitignore b/.gitignore index 810ed2241..751c9f013 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,6 @@ app/apptest/data app_test/data plugins/param/data plugins/tokens/data + +# e2e temp files +e2e/priv_validator_key.json \ No newline at end of file diff --git a/app/reconciliation.go b/app/reconciliation.go index 31baf04a7..1d6388116 100644 --- a/app/reconciliation.go +++ b/app/reconciliation.go @@ -51,8 +51,11 @@ func (app *BinanceChain) getAccountChanges(ctx sdk.Context) (sdk.Coins, sdk.Coin if err != nil { panic("failed to unmarshal diff value " + err.Error()) } - ctx.Logger().Debug("diff account", "address", acc1.GetAddress(), "coins", acc1.GetCoins().String()) - currentCoins = currentCoins.Plus(acc1.GetCoins()) + nacc1 := acc1.(types.NamedAccount) + ctx.Logger().Debug("diff account", "address", nacc1.GetAddress(), "coins", nacc1.GetCoins().String()) + currentCoins = currentCoins.Plus(nacc1.GetCoins()) + currentCoins = currentCoins.Plus(nacc1.GetFrozenCoins()) + currentCoins = currentCoins.Plus(nacc1.GetLockedCoins()) var acc2 sdk.Account _, v = iavlStore.GetTree().GetVersioned([]byte(k), version) @@ -61,19 +64,17 @@ func (app *BinanceChain) getAccountChanges(ctx sdk.Context) (sdk.Coins, sdk.Coin if err != nil { panic("failed to unmarshal previous value " + err.Error()) } - ctx.Logger().Debug("pre account", "address", acc2.GetAddress(), "coins", acc2.GetCoins().String()) - preCoins = preCoins.Plus(acc2.GetCoins()) - } - } + nacc2 := acc2.(types.NamedAccount) - if len(currentCoins) > 0 { - ctx.Logger().Debug("diff coins", "coins", currentCoins.String()) - } - if len(preCoins) > 0 { - ctx.Logger().Debug("previous coins", "coins", preCoins.String()) + ctx.Logger().Debug("pre account", "address", nacc2.GetAddress(), "coins", nacc2.GetCoins().String()) + preCoins = preCoins.Plus(nacc2.GetCoins()) + preCoins = preCoins.Plus(nacc2.GetFrozenCoins()) + preCoins = preCoins.Plus(nacc2.GetLockedCoins()) + } } + iavlStore.ResetDiff() - ctx.Logger().Debug("changes", "diff", currentCoins.String(), "previous", preCoins.String()) + ctx.Logger().Debug("account changes", "diff", currentCoins.String(), "previous", preCoins.String(), "height", ctx.BlockHeight()) return preCoins, currentCoins } @@ -111,15 +112,9 @@ func (app *BinanceChain) getTokenChanges(ctx sdk.Context) (sdk.Coins, sdk.Coins) }) } } + iavlStore.ResetDiff() - if len(currentCoins) > 0 { - ctx.Logger().Debug("diff coins", "coins", currentCoins.String()) - } - if len(preCoins) > 0 { - ctx.Logger().Debug("previous coins", "coins", preCoins.String()) - } - - ctx.Logger().Debug("changes", "diff", currentCoins.String(), "previous", preCoins.String()) + ctx.Logger().Debug("token changes", "diff", currentCoins.String(), "previous", preCoins.String(), "height", ctx.BlockHeight()) return preCoins, currentCoins } diff --git a/scripts/recon_integration_test.sh b/scripts/recon_integration_test.sh index 2162d512b..45f558608 100644 --- a/scripts/recon_integration_test.sh +++ b/scripts/recon_integration_test.sh @@ -221,7 +221,6 @@ function token() { # unfreeze token result=$(expect ./unfreeze.exp ${btc_symbol} 100000000 bob ${chain_id} ${cli_home}) check_operation "Freeze Token" "${result}" "${chain_operation_words}" - } function gov() { From f96b7e33585ec1d70353e154cb5bfbc564c4d746 Mon Sep 17 00:00:00 2001 From: forcodedancing Date: Mon, 29 May 2023 14:34:22 +0800 Subject: [PATCH 06/16] refine some codes --- app/app.go | 12 ++++++++++++ app/reconciliation.go | 7 ++----- go.mod | 2 +- go.sum | 4 ++-- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/app/app.go b/app/app.go index dc57a4f62..ec0eb1c60 100644 --- a/app/app.go +++ b/app/app.go @@ -269,6 +269,18 @@ func NewBinanceChain(logger log.Logger, db dbm.DB, traceStore io.Writer, baseApp cmn.Exit(err.Error()) } + // enable diff for reconciliation + accountIavl, ok := app.GetCommitMultiStore().GetCommitStore(common.AccountStoreKey).(*store.IavlStore) + if !ok { + cmn.Exit("cannot convert account store to ival store") + } + accountIavl.EnableDiff() + tokenIavl, ok := app.GetCommitMultiStore().GetCommitStore(common.TokenStoreKey).(*store.IavlStore) + if !ok { + cmn.Exit("cannot convert token store to ival store") + } + tokenIavl.EnableDiff() + // init app cache accountStore := app.BaseApp.GetCommitMultiStore().GetKVStore(common.AccountStoreKey) app.SetAccountStoreCache(cdc, accountStore, app.baseConfig.AccountCacheSize) diff --git a/app/reconciliation.go b/app/reconciliation.go index 1d6388116..cb3f6fb38 100644 --- a/app/reconciliation.go +++ b/app/reconciliation.go @@ -14,10 +14,7 @@ const globalAccountNumber = "globalAccountNumber" func (app *BinanceChain) reconBalance(ctx sdk.Context) { currentHeight := ctx.BlockHeight() - ctx.Logger().Debug("account changes") accPre, accCurrent := app.getAccountChanges(ctx) - - ctx.Logger().Debug("token changes") tokenPre, tokenCurrent := app.getTokenChanges(ctx) left := tokenPre.Plus(accCurrent) @@ -34,7 +31,7 @@ func (app *BinanceChain) reconBalance(ctx sdk.Context) { func (app *BinanceChain) getAccountChanges(ctx sdk.Context) (sdk.Coins, sdk.Coins) { iavlStore, ok := app.GetCommitMultiStore().GetCommitStore(common.AccountStoreKey).(*store.IavlStore) if !ok { - panic("cannot convert to ival") + panic("cannot convert to ival store") } preCoins := sdk.Coins{} @@ -82,7 +79,7 @@ func (app *BinanceChain) getAccountChanges(ctx sdk.Context) (sdk.Coins, sdk.Coin func (app *BinanceChain) getTokenChanges(ctx sdk.Context) (sdk.Coins, sdk.Coins) { iavlStore, ok := app.GetCommitMultiStore().GetCommitStore(common.TokenStoreKey).(*store.IavlStore) if !ok { - panic("cannot convert to ival") + panic("cannot convert to ival store") } preCoins := sdk.Coins{} diff --git a/go.mod b/go.mod index ff89fde2f..1fb1de7ed 100644 --- a/go.mod +++ b/go.mod @@ -88,7 +88,7 @@ require ( ) replace ( - github.com/cosmos/cosmos-sdk => github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230526093330-21a026eb08fd + github.com/cosmos/cosmos-sdk => github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230529063008-dbf47b51db49 github.com/tendermint/go-amino => github.com/bnb-chain/bnc-go-amino v0.14.1-binance.2 github.com/tendermint/iavl => github.com/bnb-chain/bnc-tendermint-iavl v0.12.0-binance.5 github.com/tendermint/tendermint => github.com/bnb-chain/bnc-tendermint v0.32.3-bc.10 diff --git a/go.sum b/go.sum index c3afdce8f..ae0ccf235 100644 --- a/go.sum +++ b/go.sum @@ -141,8 +141,8 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/etcd-io/bbolt v1.3.3 h1:gSJmxrs37LgTqR/oyJBWok6k6SvXEUerFTbltIhXkBM= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230526093330-21a026eb08fd h1:7tMDzWWWEHS9SnJZBzrMbnexFSEN46LjzyMayBh8mRA= -github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230526093330-21a026eb08fd/go.mod h1:XiDYVT+XqECR+AyCBO4KBsrbL/d1x2UTsVU36SvHxI8= +github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230529063008-dbf47b51db49 h1:0cpB5uSk7BUyauTtg23pDctUrInfT33g2zYF72b0sq0= +github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230529063008-dbf47b51db49/go.mod h1:XiDYVT+XqECR+AyCBO4KBsrbL/d1x2UTsVU36SvHxI8= github.com/fortytw2/leaktest v1.2.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= From f2678bb3c2257a002d6cb4bd2bdf1edf8b1081a6 Mon Sep 17 00:00:00 2001 From: forcodedancing Date: Mon, 29 May 2023 14:42:34 +0800 Subject: [PATCH 07/16] temp disable for syncing test --- plugins/bridge/handler.go | 8 ++++---- plugins/tokens/freeze/handler.go | 8 ++++---- plugins/tokens/issue/handler.go | 22 ++++++++++++---------- plugins/tokens/seturi/handler.go | 8 ++++---- plugins/tokens/timelock/handler.go | 8 ++++---- 5 files changed, 28 insertions(+), 26 deletions(-) diff --git a/plugins/bridge/handler.go b/plugins/bridge/handler.go index dfe8a64f4..3290d960c 100644 --- a/plugins/bridge/handler.go +++ b/plugins/bridge/handler.go @@ -8,7 +8,6 @@ import ( "github.com/bnb-chain/node/common/log" cmmtypes "github.com/bnb-chain/node/common/types" - "github.com/bnb-chain/node/common/upgrade" "github.com/bnb-chain/node/plugins/bridge/types" "github.com/cosmos/cosmos-sdk/bsc/rlp" "github.com/cosmos/cosmos-sdk/pubsub" @@ -22,9 +21,10 @@ func NewHandler(keeper Keeper) sdk.Handler { case TransferOutMsg: return handleTransferOutMsg(ctx, keeper, msg) case BindMsg: - if sdk.IsUpgrade(upgrade.SecurityEnhancement) { - return sdk.ErrMsgNotSupported("BindMsg disabled in SecurityEnhancement upgrade").Result() - } + // TODO: disable for recon testing + //if sdk.IsUpgrade(upgrade.SecurityEnhancement) { + // return sdk.ErrMsgNotSupported("BindMsg disabled in SecurityEnhancement upgrade").Result() + //} return handleBindMsg(ctx, keeper, msg) case UnbindMsg: return handleUnbindMsg(ctx, keeper, msg) diff --git a/plugins/tokens/freeze/handler.go b/plugins/tokens/freeze/handler.go index d418919db..9bd277fbc 100644 --- a/plugins/tokens/freeze/handler.go +++ b/plugins/tokens/freeze/handler.go @@ -7,7 +7,6 @@ import ( "github.com/bnb-chain/node/common/log" common "github.com/bnb-chain/node/common/types" - "github.com/bnb-chain/node/common/upgrade" "github.com/bnb-chain/node/plugins/tokens/store" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/auth" @@ -19,9 +18,10 @@ func NewHandler(tokenMapper store.Mapper, accKeeper auth.AccountKeeper, keeper b return func(ctx sdk.Context, msg sdk.Msg) sdk.Result { switch msg := msg.(type) { case FreezeMsg: - if sdk.IsUpgrade(upgrade.SecurityEnhancement) { - return sdk.ErrMsgNotSupported("FreezeMsg disabled in SecurityEnhancement upgrade").Result() - } + // TODO: disable for recon testing + //if sdk.IsUpgrade(upgrade.SecurityEnhancement) { + // return sdk.ErrMsgNotSupported("FreezeMsg disabled in SecurityEnhancement upgrade").Result() + //} return handleFreezeToken(ctx, tokenMapper, accKeeper, keeper, msg) case UnfreezeMsg: return handleUnfreezeToken(ctx, tokenMapper, accKeeper, keeper, msg) diff --git a/plugins/tokens/issue/handler.go b/plugins/tokens/issue/handler.go index 395d7d680..0e9284452 100644 --- a/plugins/tokens/issue/handler.go +++ b/plugins/tokens/issue/handler.go @@ -11,7 +11,6 @@ import ( "github.com/bnb-chain/node/common/log" "github.com/bnb-chain/node/common/types" common "github.com/bnb-chain/node/common/types" - "github.com/bnb-chain/node/common/upgrade" "github.com/bnb-chain/node/plugins/tokens/store" "github.com/cosmos/cosmos-sdk/baseapp" sdk "github.com/cosmos/cosmos-sdk/types" @@ -24,21 +23,24 @@ func NewHandler(tokenMapper store.Mapper, keeper bank.Keeper) sdk.Handler { return func(ctx sdk.Context, msg sdk.Msg) sdk.Result { switch msg := msg.(type) { case IssueMsg: - if sdk.IsUpgrade(upgrade.SecurityEnhancement) { - return sdk.ErrMsgNotSupported("IssueMsg disabled in SecurityEnhancement upgrade").Result() - } + // TODO: disable for recon testing + //if sdk.IsUpgrade(upgrade.SecurityEnhancement) { + // return sdk.ErrMsgNotSupported("IssueMsg disabled in SecurityEnhancement upgrade").Result() + //} return handleIssueToken(ctx, tokenMapper, keeper, msg) case MintMsg: return handleMintToken(ctx, tokenMapper, keeper, msg) case IssueMiniMsg: - if sdk.IsUpgrade(upgrade.SecurityEnhancement) { - return sdk.ErrMsgNotSupported("IssueMiniMsg disabled in SecurityEnhancement upgrade").Result() - } + // TODO: disable for recon testing + //if sdk.IsUpgrade(upgrade.SecurityEnhancement) { + // return sdk.ErrMsgNotSupported("IssueMiniMsg disabled in SecurityEnhancement upgrade").Result() + //} return handleIssueMiniToken(ctx, tokenMapper, keeper, msg) case IssueTinyMsg: - if sdk.IsUpgrade(upgrade.SecurityEnhancement) { - return sdk.ErrMsgNotSupported("IssueTinyMsg disabled in SecurityEnhancement upgrade").Result() - } + // TODO: disable for recon testing + //if sdk.IsUpgrade(upgrade.SecurityEnhancement) { + // return sdk.ErrMsgNotSupported("IssueTinyMsg disabled in SecurityEnhancement upgrade").Result() + //} return handleIssueTinyToken(ctx, tokenMapper, keeper, msg) default: errMsg := "Unrecognized msg type: " + reflect.TypeOf(msg).Name() diff --git a/plugins/tokens/seturi/handler.go b/plugins/tokens/seturi/handler.go index 657c256d6..a88674e87 100644 --- a/plugins/tokens/seturi/handler.go +++ b/plugins/tokens/seturi/handler.go @@ -8,7 +8,6 @@ import ( "github.com/bnb-chain/node/common/log" common "github.com/bnb-chain/node/common/types" - "github.com/bnb-chain/node/common/upgrade" "github.com/bnb-chain/node/plugins/tokens/store" sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -17,9 +16,10 @@ func NewHandler(tokenMapper store.Mapper) sdk.Handler { return func(ctx sdk.Context, msg sdk.Msg) sdk.Result { switch msg := msg.(type) { case SetURIMsg: - if sdk.IsUpgrade(upgrade.SecurityEnhancement) { - return sdk.ErrMsgNotSupported("SetURIMsg disabled in SecurityEnhancement upgrade").Result() - } + // TODO: disable for recon testing + //if sdk.IsUpgrade(upgrade.SecurityEnhancement) { + // return sdk.ErrMsgNotSupported("SetURIMsg disabled in SecurityEnhancement upgrade").Result() + //} return handleSetURI(ctx, tokenMapper, msg) default: errMsg := "Unrecognized msg type: " + reflect.TypeOf(msg).Name() diff --git a/plugins/tokens/timelock/handler.go b/plugins/tokens/timelock/handler.go index 1bdd1ae5d..4243e5e88 100644 --- a/plugins/tokens/timelock/handler.go +++ b/plugins/tokens/timelock/handler.go @@ -4,7 +4,6 @@ import ( "fmt" "time" - "github.com/bnb-chain/node/common/upgrade" sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -12,9 +11,10 @@ func NewHandler(keeper Keeper) sdk.Handler { return func(ctx sdk.Context, msg sdk.Msg) sdk.Result { switch msg := msg.(type) { case TimeLockMsg: - if sdk.IsUpgrade(upgrade.SecurityEnhancement) { - return sdk.ErrMsgNotSupported("TimeLockMsg disabled in SecurityEnhancement upgrade").Result() - } + // TODO: disable for recon testing + //if sdk.IsUpgrade(upgrade.SecurityEnhancement) { + // return sdk.ErrMsgNotSupported("TimeLockMsg disabled in SecurityEnhancement upgrade").Result() + //} return handleTimeLock(ctx, keeper, msg) case TimeUnlockMsg: return handleTimeUnlock(ctx, keeper, msg) From 2d10f234d150da7ed7a29ad19f67053efe6eb309 Mon Sep 17 00:00:00 2001 From: forcodedancing Date: Wed, 31 May 2023 11:29:21 -0600 Subject: [PATCH 08/16] split upgrade heights --- .github/workflows/integration.yml | 2 +- app/app.go | 5 ++- app/config/config.go | 12 ++++-- app/reconciliation.go | 6 ++- common/upgrade/upgrade.go | 3 +- go.mod | 2 +- go.sum | 4 +- plugins/bridge/handler.go | 15 +++---- plugins/tokens/freeze/handler.go | 15 +++---- plugins/tokens/issue/handler.go | 32 +++++++-------- plugins/tokens/seturi/handler.go | 12 +++--- plugins/tokens/timelock/handler.go | 9 ++-- scripts/recon_integration_test.sh | 66 ++++++++++++------------------ 13 files changed, 90 insertions(+), 93 deletions(-) diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 7ce288bc0..ac3dfd398 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -27,7 +27,7 @@ jobs: # used to debug workflow # - name: Setup tmate session # uses: mxschmitt/action-tmate@v3 - - run: make bep159_integration_test integration_test + - run: make bep159_integration_test recon_integration_test integration_test coverage-test: runs-on: ubuntu-latest steps: diff --git a/app/app.go b/app/app.go index ec0eb1c60..6eed073e2 100644 --- a/app/app.go +++ b/app/app.go @@ -357,7 +357,8 @@ func SetUpgradeConfig(upgradeConfig *config.UpgradeConfig) { upgrade.Mgr.AddUpgradeHeight(upgrade.BEP173, upgradeConfig.BEP173Height) upgrade.Mgr.AddUpgradeHeight(upgrade.FixDoubleSignChainId, upgradeConfig.FixDoubleSignChainIdHeight) upgrade.Mgr.AddUpgradeHeight(upgrade.BEP126, upgradeConfig.BEP126Height) - upgrade.Mgr.AddUpgradeHeight(upgrade.SecurityEnhancement, upgradeConfig.SecurityEnhancementHeight) + upgrade.Mgr.AddUpgradeHeight(upgrade.EnableReconciliation, upgradeConfig.EnableReconciliationHeight) + upgrade.Mgr.AddUpgradeHeight(upgrade.DisableMessagesPhase1, upgradeConfig.DisableMessagesPhase1Height) // register store keys of upgrade upgrade.Mgr.RegisterStoreKeys(upgrade.BEP9, common.TimeLockStoreKey.Name()) @@ -967,7 +968,7 @@ func (app *BinanceChain) EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) a // match may end with transaction failure, which is better to save into // the EndBlock response. However, current cosmos doesn't support this. - if sdk.IsUpgrade(upgrade.SecurityEnhancement) { + if sdk.IsUpgrade(upgrade.EnableReconciliation) { app.reconBalance(ctx) } diff --git a/app/config/config.go b/app/config/config.go index ef5d6b47c..6bfd4f03c 100644 --- a/app/config/config.go +++ b/app/config/config.go @@ -101,8 +101,10 @@ BEP173Height = {{ .UpgradeConfig.BEP173Height }} FixDoubleSignChainIdHeight = {{ .UpgradeConfig.FixDoubleSignChainIdHeight }} # Block height of BEP126 upgrade BEP126Height = {{ .UpgradeConfig.BEP126Height }} -# Block height of security enhancement upgrade -SecurityEnhancementHeight = {{ .UpgradeConfig.SecurityEnhancementHeight }} +# Block height of reconciliation upgrade +EnableReconciliationHeight = {{ .UpgradeConfig.EnableReconciliationHeight }} +# Block height of disable messages phase1 upgrade +DisableMessagesPhase1Height = {{ .UpgradeConfig.DisableMessagesPhase1Height }} [query] # ABCI query interface black list, suggested value: ["custom/gov/proposals", "custom/timelock/timelocks", "custom/atomicSwap/swapcreator", "custom/atomicSwap/swaprecipient"] @@ -551,7 +553,8 @@ type UpgradeConfig struct { BEP173Height int64 `mapstructure:"BEP173Height"` FixDoubleSignChainIdHeight int64 `mapstructure:"FixDoubleSignChainIdHeight"` BEP126Height int64 `mapstructure:"BEP126Height"` - SecurityEnhancementHeight int64 `mapstructure:"SecurityEnhancementHeight"` + EnableReconciliationHeight int64 `mapstructure:"EnableReconciliationHeight"` + DisableMessagesPhase1Height int64 `mapstructure:"DisableMessagesPhase1Height"` } func defaultUpgradeConfig() *UpgradeConfig { @@ -586,7 +589,8 @@ func defaultUpgradeConfig() *UpgradeConfig { BEP171Height: math.MaxInt64, FixFailAckPackageHeight: math.MaxInt64, EnableAccountScriptsForCrossChainTransferHeight: math.MaxInt64, - SecurityEnhancementHeight: math.MaxInt64, + EnableReconciliationHeight: math.MaxInt64, + DisableMessagesPhase1Height: math.MaxInt64, } } diff --git a/app/reconciliation.go b/app/reconciliation.go index cb3f6fb38..7d0fa8f3a 100644 --- a/app/reconciliation.go +++ b/app/reconciliation.go @@ -2,10 +2,12 @@ package app import ( "fmt" - "github.com/bnb-chain/node/common" - "github.com/bnb-chain/node/common/types" + "github.com/cosmos/cosmos-sdk/store" sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/bnb-chain/node/common" + "github.com/bnb-chain/node/common/types" ) const globalAccountNumber = "globalAccountNumber" diff --git a/common/upgrade/upgrade.go b/common/upgrade/upgrade.go index 3c3a2bae6..5d765f67d 100644 --- a/common/upgrade/upgrade.go +++ b/common/upgrade/upgrade.go @@ -49,7 +49,8 @@ const ( BEP171 = sdk.BEP171 // https://github.com/bnb-chain/BEPs/pull/171 Security Enhancement for Cross-Chain Module BEP173 = sdk.BEP173 // https://github.com/bnb-chain/BEPs/pull/173 Text Proposal FixDoubleSignChainId = sdk.FixDoubleSignChainId - SecurityEnhancement = sdk.SecurityEnhancement + EnableReconciliation = sdk.EnableReconciliation + DisableMessagesPhase1 = sdk.DisableMessagesPhase1 ) func UpgradeBEP10(before func(), after func()) { diff --git a/go.mod b/go.mod index 1fb1de7ed..280f76758 100644 --- a/go.mod +++ b/go.mod @@ -88,7 +88,7 @@ require ( ) replace ( - github.com/cosmos/cosmos-sdk => github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230529063008-dbf47b51db49 + github.com/cosmos/cosmos-sdk => github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230531023724-2e22c6326b67 github.com/tendermint/go-amino => github.com/bnb-chain/bnc-go-amino v0.14.1-binance.2 github.com/tendermint/iavl => github.com/bnb-chain/bnc-tendermint-iavl v0.12.0-binance.5 github.com/tendermint/tendermint => github.com/bnb-chain/bnc-tendermint v0.32.3-bc.10 diff --git a/go.sum b/go.sum index ae0ccf235..1e8148558 100644 --- a/go.sum +++ b/go.sum @@ -141,8 +141,8 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/etcd-io/bbolt v1.3.3 h1:gSJmxrs37LgTqR/oyJBWok6k6SvXEUerFTbltIhXkBM= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230529063008-dbf47b51db49 h1:0cpB5uSk7BUyauTtg23pDctUrInfT33g2zYF72b0sq0= -github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230529063008-dbf47b51db49/go.mod h1:XiDYVT+XqECR+AyCBO4KBsrbL/d1x2UTsVU36SvHxI8= +github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230531023724-2e22c6326b67 h1:yysn9/l3K9jEcdJ4Nd25tvPLHQxw1J9PkS4a3RyNRNM= +github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230531023724-2e22c6326b67/go.mod h1:XiDYVT+XqECR+AyCBO4KBsrbL/d1x2UTsVU36SvHxI8= github.com/fortytw2/leaktest v1.2.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= diff --git a/plugins/bridge/handler.go b/plugins/bridge/handler.go index 3290d960c..86015d569 100644 --- a/plugins/bridge/handler.go +++ b/plugins/bridge/handler.go @@ -6,13 +6,15 @@ import ( "strings" "time" - "github.com/bnb-chain/node/common/log" - cmmtypes "github.com/bnb-chain/node/common/types" - "github.com/bnb-chain/node/plugins/bridge/types" "github.com/cosmos/cosmos-sdk/bsc/rlp" "github.com/cosmos/cosmos-sdk/pubsub" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/bank" + + "github.com/bnb-chain/node/common/log" + cmmtypes "github.com/bnb-chain/node/common/types" + "github.com/bnb-chain/node/common/upgrade" + "github.com/bnb-chain/node/plugins/bridge/types" ) func NewHandler(keeper Keeper) sdk.Handler { @@ -21,10 +23,9 @@ func NewHandler(keeper Keeper) sdk.Handler { case TransferOutMsg: return handleTransferOutMsg(ctx, keeper, msg) case BindMsg: - // TODO: disable for recon testing - //if sdk.IsUpgrade(upgrade.SecurityEnhancement) { - // return sdk.ErrMsgNotSupported("BindMsg disabled in SecurityEnhancement upgrade").Result() - //} + if sdk.IsUpgrade(upgrade.DisableMessagesPhase1) { + return sdk.ErrMsgNotSupported("BindMsg disabled in DisableMessagesPhase1 upgrade").Result() + } return handleBindMsg(ctx, keeper, msg) case UnbindMsg: return handleUnbindMsg(ctx, keeper, msg) diff --git a/plugins/tokens/freeze/handler.go b/plugins/tokens/freeze/handler.go index 9bd277fbc..67ce3fdb8 100644 --- a/plugins/tokens/freeze/handler.go +++ b/plugins/tokens/freeze/handler.go @@ -5,12 +5,14 @@ import ( "reflect" "strings" - "github.com/bnb-chain/node/common/log" - common "github.com/bnb-chain/node/common/types" - "github.com/bnb-chain/node/plugins/tokens/store" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/auth" "github.com/cosmos/cosmos-sdk/x/bank" + + "github.com/bnb-chain/node/common/log" + common "github.com/bnb-chain/node/common/types" + "github.com/bnb-chain/node/common/upgrade" + "github.com/bnb-chain/node/plugins/tokens/store" ) // NewHandler creates a new token freeze message handler @@ -18,10 +20,9 @@ func NewHandler(tokenMapper store.Mapper, accKeeper auth.AccountKeeper, keeper b return func(ctx sdk.Context, msg sdk.Msg) sdk.Result { switch msg := msg.(type) { case FreezeMsg: - // TODO: disable for recon testing - //if sdk.IsUpgrade(upgrade.SecurityEnhancement) { - // return sdk.ErrMsgNotSupported("FreezeMsg disabled in SecurityEnhancement upgrade").Result() - //} + if sdk.IsUpgrade(upgrade.DisableMessagesPhase1) { + return sdk.ErrMsgNotSupported("FreezeMsg disabled in DisableMessagesPhase1 upgrade").Result() + } return handleFreezeToken(ctx, tokenMapper, accKeeper, keeper, msg) case UnfreezeMsg: return handleUnfreezeToken(ctx, tokenMapper, accKeeper, keeper, msg) diff --git a/plugins/tokens/issue/handler.go b/plugins/tokens/issue/handler.go index 0e9284452..2c029dc7d 100644 --- a/plugins/tokens/issue/handler.go +++ b/plugins/tokens/issue/handler.go @@ -3,19 +3,20 @@ package issue import ( "encoding/json" "fmt" - "reflect" "strconv" "strings" - "github.com/bnb-chain/node/common/log" - "github.com/bnb-chain/node/common/types" - common "github.com/bnb-chain/node/common/types" - "github.com/bnb-chain/node/plugins/tokens/store" "github.com/cosmos/cosmos-sdk/baseapp" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/bank" tmlog "github.com/tendermint/tendermint/libs/log" + + "github.com/bnb-chain/node/common/log" + "github.com/bnb-chain/node/common/types" + common "github.com/bnb-chain/node/common/types" + "github.com/bnb-chain/node/common/upgrade" + "github.com/bnb-chain/node/plugins/tokens/store" ) // NewHandler creates a new token issue message handler @@ -23,24 +24,21 @@ func NewHandler(tokenMapper store.Mapper, keeper bank.Keeper) sdk.Handler { return func(ctx sdk.Context, msg sdk.Msg) sdk.Result { switch msg := msg.(type) { case IssueMsg: - // TODO: disable for recon testing - //if sdk.IsUpgrade(upgrade.SecurityEnhancement) { - // return sdk.ErrMsgNotSupported("IssueMsg disabled in SecurityEnhancement upgrade").Result() - //} + if sdk.IsUpgrade(upgrade.DisableMessagesPhase1) { + return sdk.ErrMsgNotSupported("IssueMsg disabled in DisableMessagesPhase1 upgrade").Result() + } return handleIssueToken(ctx, tokenMapper, keeper, msg) case MintMsg: return handleMintToken(ctx, tokenMapper, keeper, msg) case IssueMiniMsg: - // TODO: disable for recon testing - //if sdk.IsUpgrade(upgrade.SecurityEnhancement) { - // return sdk.ErrMsgNotSupported("IssueMiniMsg disabled in SecurityEnhancement upgrade").Result() - //} + if sdk.IsUpgrade(upgrade.DisableMessagesPhase1) { + return sdk.ErrMsgNotSupported("IssueMiniMsg disabled in DisableMessagesPhase1 upgrade").Result() + } return handleIssueMiniToken(ctx, tokenMapper, keeper, msg) case IssueTinyMsg: - // TODO: disable for recon testing - //if sdk.IsUpgrade(upgrade.SecurityEnhancement) { - // return sdk.ErrMsgNotSupported("IssueTinyMsg disabled in SecurityEnhancement upgrade").Result() - //} + if sdk.IsUpgrade(upgrade.DisableMessagesPhase1) { + return sdk.ErrMsgNotSupported("IssueTinyMsg disabled in DisableMessagesPhase1 upgrade").Result() + } return handleIssueTinyToken(ctx, tokenMapper, keeper, msg) default: errMsg := "Unrecognized msg type: " + reflect.TypeOf(msg).Name() diff --git a/plugins/tokens/seturi/handler.go b/plugins/tokens/seturi/handler.go index a88674e87..2e2802b97 100644 --- a/plugins/tokens/seturi/handler.go +++ b/plugins/tokens/seturi/handler.go @@ -2,24 +2,24 @@ package seturi import ( "fmt" - "reflect" "strings" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/bnb-chain/node/common/log" common "github.com/bnb-chain/node/common/types" + "github.com/bnb-chain/node/common/upgrade" "github.com/bnb-chain/node/plugins/tokens/store" - sdk "github.com/cosmos/cosmos-sdk/types" ) func NewHandler(tokenMapper store.Mapper) sdk.Handler { return func(ctx sdk.Context, msg sdk.Msg) sdk.Result { switch msg := msg.(type) { case SetURIMsg: - // TODO: disable for recon testing - //if sdk.IsUpgrade(upgrade.SecurityEnhancement) { - // return sdk.ErrMsgNotSupported("SetURIMsg disabled in SecurityEnhancement upgrade").Result() - //} + if sdk.IsUpgrade(upgrade.DisableMessagesPhase1) { + return sdk.ErrMsgNotSupported("SetURIMsg disabled in DisableMessagesPhase1 upgrade").Result() + } return handleSetURI(ctx, tokenMapper, msg) default: errMsg := "Unrecognized msg type: " + reflect.TypeOf(msg).Name() diff --git a/plugins/tokens/timelock/handler.go b/plugins/tokens/timelock/handler.go index 4243e5e88..507c7fd75 100644 --- a/plugins/tokens/timelock/handler.go +++ b/plugins/tokens/timelock/handler.go @@ -5,16 +5,17 @@ import ( "time" sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/bnb-chain/node/common/upgrade" ) func NewHandler(keeper Keeper) sdk.Handler { return func(ctx sdk.Context, msg sdk.Msg) sdk.Result { switch msg := msg.(type) { case TimeLockMsg: - // TODO: disable for recon testing - //if sdk.IsUpgrade(upgrade.SecurityEnhancement) { - // return sdk.ErrMsgNotSupported("TimeLockMsg disabled in SecurityEnhancement upgrade").Result() - //} + if sdk.IsUpgrade(upgrade.DisableMessagesPhase1) { + return sdk.ErrMsgNotSupported("TimeLockMsg disabled in DisableMessagesPhase1 upgrade").Result() + } return handleTimeLock(ctx, keeper, msg) case TimeUnlockMsg: return handleTimeUnlock(ctx, keeper, msg) diff --git a/scripts/recon_integration_test.sh b/scripts/recon_integration_test.sh index 45f558608..898d85eb9 100644 --- a/scripts/recon_integration_test.sh +++ b/scripts/recon_integration_test.sh @@ -47,9 +47,7 @@ function prepare_node() { $(cd "./${home}/config" && sed -i -e "s/BEP159Phase2Height = 9223372036854775807/BEP159Phase2Height = 11/g" app.toml) $(cd "./${home}/config" && sed -i -e "s/LimitConsAddrUpdateIntervalHeight = 9223372036854775807/LimitConsAddrUpdateIntervalHeight = 11/g" app.toml) $(cd "./${home}/config" && sed -i -e "s/breatheBlockInterval = 0/breatheBlockInterval = 5/g" app.toml) - # $(cd "./${home}/config" && sed -i -e "s/publishStaking = false/publishStaking = true/g" app.toml) - # $(cd "./${home}/config" && sed -i -e "s/publishKafka = false/publishKafka = true/g" app.toml) - # $(cd "./${home}/config" && sed -i -e "s/publishLocal = false/publishLocal = true/g" app.toml) + $(cd "./${home}/config" && sed -i -e "s/EnableReconciliationHeight = 9223372036854775807/EnableReconciliationHeight = 3/g" app.toml) # stop and start node ps -ef | grep bnbchaind | grep testnoded | awk '{print $2}' | xargs kill -9 @@ -58,14 +56,6 @@ function prepare_node() { echo ${secret} } -function apply_upgrade() { - $(cd "./${home}/config" && sed -i -e "s/SecurityEnhancementHeight = 9223372036854775807/SecurityEnhancementHeight = 15/g" app.toml) - - # stop and start node - ps -ef | grep bnbchaind | grep testnoded | awk '{print $2}' | xargs kill -9 - ./bnbchaind start --home ${home} >./testnoded/node.log 2>&1 & -} - function exit_test() { # stop node ps -ef | grep bnbchaind | grep testnoded | awk '{print $2}' | xargs kill -9 @@ -110,31 +100,10 @@ result=$(expect ./send.exp ${cli_home} alice ${chain_id} "100000000000000:BNB" $ check_operation "Send Token" "${result}" "${chain_operation_words}" sleep 1 +# send result=$(expect ./send.exp ${cli_home} alice ${chain_id} "100000000000000:BNB" ${carl_addr}) check_operation "Send Token" "${result}" "${chain_operation_words}" -sleep 1 -# issue token -result=$(expect ./issue.exp BTC Bitcoin 1000000000000000 true bob ${chain_id} ${cli_home}) -btc_symbol=$(echo "${result}" | tail -n 1 | grep -o "BTC-[0-9A-Z]*") -check_operation "Issue Token" "${result}" "${chain_operation_words}" - -sleep 1 -# bind -result=$(expect ./bind.exp ${btc_symbol} 0x6aade9709155a8386c63c1d2e5939525b960b4e7 10000000000000 4083424190 bob ${chain_id} ${cli_home}) -check_operation "BindBind Token" "${result}" "${chain_operation_words}" - -sleep 1 -# issue token -result=$(expect ./issue.exp ETH Ethereum 1000000000000000 true bob ${chain_id} ${cli_home}) -eth_symbol=$(echo "${result}" | tail -n 1 | grep -o "ETH-[0-9A-Z]*") -check_operation "Issue Token" "${result}" "${chain_operation_words}" - -sleep 1 -# freeze token -result=$(expect ./freeze.exp ${btc_symbol} 100000000 bob ${chain_id} ${cli_home}) -check_operation "Freeze Token" "${result}" "${chain_operation_words}" - # staking related function staking() { # get parameters @@ -192,9 +161,27 @@ function staking() { # token related function token() { - # issue token failed, due to upgrade - result=$(expect ./issue.exp USDT USDT 1000000000000000 true bob ${chain_id} ${cli_home}) - check_operation "Mint Token" "${result}" "ERROR:" + sleep 1 + # issue token + result=$(expect ./issue.exp BTC Bitcoin 1000000000000000 true bob ${chain_id} ${cli_home}) + btc_symbol=$(echo "${result}" | tail -n 1 | grep -o "BTC-[0-9A-Z]*") + check_operation "Issue Token" "${result}" "${chain_operation_words}" + + sleep 1 + # bind + result=$(expect ./bind.exp ${btc_symbol} 0x6aade9709155a8386c63c1d2e5939525b960b4e7 10000000000000 4083424190 bob ${chain_id} ${cli_home}) + check_operation "BindBind Token" "${result}" "${chain_operation_words}" + + sleep 1 + # issue token + result=$(expect ./issue.exp ETH Ethereum 1000000000000000 true bob ${chain_id} ${cli_home}) + eth_symbol=$(echo "${result}" | tail -n 1 | grep -o "ETH-[0-9A-Z]*") + check_operation "Issue Token" "${result}" "${chain_operation_words}" + + sleep 1 + # freeze token + result=$(expect ./freeze.exp ${btc_symbol} 100000000 bob ${chain_id} ${cli_home}) + check_operation "Freeze Token" "${result}" "${chain_operation_words}" sleep 1 # send @@ -223,6 +210,7 @@ function token() { check_operation "Freeze Token" "${result}" "${chain_operation_words}" } +# gov related function gov() { sleep 1 # propose list @@ -238,8 +226,8 @@ function gov() { } +# account related function account() { - sleep 1 ## query account balance result=$(./bnbcli account $bob_addr --trust-node) @@ -283,8 +271,8 @@ function account() { } +# swap related function swap() { - sleep 1 # Create an atomic swap result=$(expect ./HTLT-cross-chain.exp 2000 "100000000:BNB" "100000000:BNB" $bob_addr 0xf2fbB6C41271064613D6f44C7EE9A6c471Ec9B25 alice ${chain_id} ${cli_home}) @@ -380,6 +368,7 @@ function swap() { } +# bridge related function bridge() { echo "skip, due to crosschain needed" # sleep 1 @@ -393,7 +382,6 @@ function bridge() { # check_operation "Unbind" "${result}" "${chain_operation_words}" } -apply_upgrade sleep 10 token From 42aad211a1a4cf14182dbebece89ac823c128bb0 Mon Sep 17 00:00:00 2001 From: forcodedancing Date: Mon, 5 Jun 2023 16:02:18 +0800 Subject: [PATCH 09/16] fix review comments --- app/reconciliation.go | 45 ++++++++++++++++++++----------------------- 1 file changed, 21 insertions(+), 24 deletions(-) diff --git a/app/reconciliation.go b/app/reconciliation.go index 7d0fa8f3a..2ef4cd312 100644 --- a/app/reconciliation.go +++ b/app/reconciliation.go @@ -16,8 +16,19 @@ const globalAccountNumber = "globalAccountNumber" func (app *BinanceChain) reconBalance(ctx sdk.Context) { currentHeight := ctx.BlockHeight() - accPre, accCurrent := app.getAccountChanges(ctx) - tokenPre, tokenCurrent := app.getTokenChanges(ctx) + accountStore, ok := app.GetCommitMultiStore().GetCommitStore(common.AccountStoreKey).(*store.IavlStore) + if !ok { + panic("cannot convert account store to ival store") + } + accPre, accCurrent := app.getAccountChanges(ctx, accountStore) + accountStore.ResetDiff() + + tokenStore, ok := app.GetCommitMultiStore().GetCommitStore(common.TokenStoreKey).(*store.IavlStore) + if !ok { + panic("cannot convert token store to ival store") + } + tokenPre, tokenCurrent := app.getTokenChanges(ctx, tokenStore) + tokenStore.ResetDiff() left := tokenPre.Plus(accCurrent) right := tokenCurrent.Plus(accPre) @@ -30,17 +41,12 @@ func (app *BinanceChain) reconBalance(ctx sdk.Context) { } } -func (app *BinanceChain) getAccountChanges(ctx sdk.Context) (sdk.Coins, sdk.Coins) { - iavlStore, ok := app.GetCommitMultiStore().GetCommitStore(common.AccountStoreKey).(*store.IavlStore) - if !ok { - panic("cannot convert to ival store") - } - +func (app *BinanceChain) getAccountChanges(ctx sdk.Context, accountStore *store.IavlStore) (sdk.Coins, sdk.Coins) { preCoins := sdk.Coins{} currentCoins := sdk.Coins{} - diff := iavlStore.GetDiff() - version := iavlStore.GetTree().Version() - 1 + diff := accountStore.GetDiff() + version := accountStore.GetTree().Version() - 1 for k, v := range diff { if k == globalAccountNumber { continue @@ -57,7 +63,7 @@ func (app *BinanceChain) getAccountChanges(ctx sdk.Context) (sdk.Coins, sdk.Coin currentCoins = currentCoins.Plus(nacc1.GetLockedCoins()) var acc2 sdk.Account - _, v = iavlStore.GetTree().GetVersioned([]byte(k), version) + _, v = accountStore.GetTree().GetVersioned([]byte(k), version) if v != nil { // it is not a new account err = app.Codec.UnmarshalBinaryBare(v, &acc2) if err != nil { @@ -71,24 +77,17 @@ func (app *BinanceChain) getAccountChanges(ctx sdk.Context) (sdk.Coins, sdk.Coin preCoins = preCoins.Plus(nacc2.GetLockedCoins()) } } - iavlStore.ResetDiff() - ctx.Logger().Debug("account changes", "diff", currentCoins.String(), "previous", preCoins.String(), "height", ctx.BlockHeight()) return preCoins, currentCoins } -func (app *BinanceChain) getTokenChanges(ctx sdk.Context) (sdk.Coins, sdk.Coins) { - iavlStore, ok := app.GetCommitMultiStore().GetCommitStore(common.TokenStoreKey).(*store.IavlStore) - if !ok { - panic("cannot convert to ival store") - } - +func (app *BinanceChain) getTokenChanges(ctx sdk.Context, tokenStore *store.IavlStore) (sdk.Coins, sdk.Coins) { preCoins := sdk.Coins{} currentCoins := sdk.Coins{} - diff := iavlStore.GetDiff() - version := iavlStore.GetTree().Version() - 1 + diff := tokenStore.GetDiff() + version := tokenStore.GetTree().Version() - 1 for k, v := range diff { var token1 types.IToken err := app.Codec.UnmarshalBinaryBare(v, &token1) @@ -100,7 +99,7 @@ func (app *BinanceChain) getTokenChanges(ctx sdk.Context) (sdk.Coins, sdk.Coins) }) var token2 types.IToken - _, v = iavlStore.GetTree().GetVersioned([]byte(k), version) + _, v = tokenStore.GetTree().GetVersioned([]byte(k), version) if v != nil { // it is not a new token err = app.Codec.UnmarshalBinaryBare(v, &token2) if err != nil { @@ -111,8 +110,6 @@ func (app *BinanceChain) getTokenChanges(ctx sdk.Context) (sdk.Coins, sdk.Coins) }) } } - iavlStore.ResetDiff() - ctx.Logger().Debug("token changes", "diff", currentCoins.String(), "previous", preCoins.String(), "height", ctx.BlockHeight()) return preCoins, currentCoins From 16ea50681c73d469840598ecad5dd5d05ba83741 Mon Sep 17 00:00:00 2001 From: forcodedancing Date: Mon, 26 Jun 2023 15:19:50 +0800 Subject: [PATCH 10/16] fix review comments --- app/app.go | 1 + app/reconciliation.go | 46 ++++++++++++++++----- app/reconciliation_test.go | 66 +++++++++++++++++++++++++++++++ common/stores.go | 4 ++ scripts/recon_integration_test.sh | 2 +- 5 files changed, 108 insertions(+), 11 deletions(-) create mode 100644 app/reconciliation_test.go diff --git a/app/app.go b/app/app.go index 6eed073e2..94a7b6eb2 100644 --- a/app/app.go +++ b/app/app.go @@ -258,6 +258,7 @@ func NewBinanceChain(logger log.Logger, db dbm.DB, traceStore io.Writer, baseApp common.BridgeStoreKey, common.OracleStoreKey, common.IbcStoreKey, + common.ReconStoreKey, ) app.SetAnteHandler(tx.NewAnteHandler(app.AccountKeeper)) app.SetPreChecker(tx.NewTxPreChecker()) diff --git a/app/reconciliation.go b/app/reconciliation.go index 2ef4cd312..603a2afac 100644 --- a/app/reconciliation.go +++ b/app/reconciliation.go @@ -1,6 +1,7 @@ package app import ( + "encoding/binary" "fmt" "github.com/cosmos/cosmos-sdk/store" @@ -12,9 +13,15 @@ import ( const globalAccountNumber = "globalAccountNumber" +// unbalancedBlockHeightKey for saving unbalanced block height for reconciliation +var unbalancedBlockHeightKey = []byte("0x01") + // reconBalance will do reconciliation for accounts balances. func (app *BinanceChain) reconBalance(ctx sdk.Context) { - currentHeight := ctx.BlockHeight() + height, exists := app.getUnbalancedBlockHeight(ctx) + if exists { + panic(fmt.Sprintf("unbalanced state at block height %d, please use hardfork to bypass it", height)) + } accountStore, ok := app.GetCommitMultiStore().GetCommitStore(common.AccountStoreKey).(*store.IavlStore) if !ok { @@ -30,14 +37,14 @@ func (app *BinanceChain) reconBalance(ctx sdk.Context) { tokenPre, tokenCurrent := app.getTokenChanges(ctx, tokenStore) tokenStore.ResetDiff() - left := tokenPre.Plus(accCurrent) - right := tokenCurrent.Plus(accPre) + // accPre and tokenPre are positive, there will be no overflow + accountDiff := accCurrent.Plus(accPre.Negative()) + tokenDiff := tokenCurrent.Plus(tokenPre.Negative()) - if !left.IsEqual(right) { - err := fmt.Sprintf("unbalanced at block %d, pre: %s, current: %s \n", - currentHeight, left.String(), right.String()) - ctx.Logger().Error(err) - panic(err) + if !accountDiff.IsEqual(tokenDiff) { + ctx.Logger().Error(fmt.Sprintf("unbalanced at block %d, account diff: %s, token diff: %s \n", + ctx.BlockHeight(), accountDiff.String(), tokenDiff.String())) + app.saveUnbalancedBlockHeight(ctx) } } @@ -77,7 +84,8 @@ func (app *BinanceChain) getAccountChanges(ctx sdk.Context, accountStore *store. preCoins = preCoins.Plus(nacc2.GetLockedCoins()) } } - ctx.Logger().Debug("account changes", "diff", currentCoins.String(), "previous", preCoins.String(), "height", ctx.BlockHeight()) + ctx.Logger().Debug("account changes", "diff", currentCoins.String(), "previous", preCoins.String(), + "version", version, "height", ctx.BlockHeight()) return preCoins, currentCoins } @@ -110,7 +118,25 @@ func (app *BinanceChain) getTokenChanges(ctx sdk.Context, tokenStore *store.Iavl }) } } - ctx.Logger().Debug("token changes", "diff", currentCoins.String(), "previous", preCoins.String(), "height", ctx.BlockHeight()) + ctx.Logger().Debug("token changes", "diff", currentCoins.String(), "previous", preCoins.String(), + "version", version, "height", ctx.BlockHeight()) return preCoins, currentCoins } + +func (app *BinanceChain) saveUnbalancedBlockHeight(ctx sdk.Context) { + reconStore := app.GetCommitMultiStore().GetCommitStore(common.ReconStoreKey).(*store.IavlStore) + bz := make([]byte, 8) + binary.BigEndian.PutUint64(bz[:], uint64(ctx.BlockHeight())) + reconStore.Set(unbalancedBlockHeightKey, bz) +} + +func (app *BinanceChain) getUnbalancedBlockHeight(ctx sdk.Context) (uint64, bool) { + reconStore := app.GetCommitMultiStore().GetCommitStore(common.ReconStoreKey).(*store.IavlStore) + + bz := reconStore.Get(unbalancedBlockHeightKey) + if bz == nil { + return 0, false + } + return binary.BigEndian.Uint64(bz), true +} diff --git a/app/reconciliation_test.go b/app/reconciliation_test.go new file mode 100644 index 000000000..507b8005c --- /dev/null +++ b/app/reconciliation_test.go @@ -0,0 +1,66 @@ +package app + +import ( + "github.com/stretchr/testify/require" + "math" + "testing" + + "github.com/cosmos/cosmos-sdk/types" +) + +func Test_Reconciliation_Overflow(t *testing.T) { + defer func() { + if r := recover(); r == nil { + t.Errorf("should panic for overflow") + } + }() + + accountPre := types.Coins{ + types.NewCoin("BNB", 10), + } + accountCurrent := types.Coins{ + types.NewCoin("BNB", math.MaxInt64), + } + tokenPre := types.Coins{ + types.NewCoin("BNB", 10), + } + tokenCurrent := types.Coins{ + types.NewCoin("BNB", math.MaxInt64), + } + + _ = accountPre.Plus(tokenCurrent).IsEqual(accountCurrent.Plus(tokenPre)) +} + +func Test_Reconciliation_NoOverflow(t *testing.T) { + accountPre := types.Coins{ + types.NewCoin("BNB", 10), + } + accountCurrent := types.Coins{ + types.NewCoin("BNB", math.MaxInt64), + } + tokenPre := types.Coins{ + types.NewCoin("BNB", 10), + } + tokenCurrent := types.Coins{ + types.NewCoin("BNB", math.MaxInt64), + } + + equal := accountCurrent.Plus(accountPre.Negative()).IsEqual(tokenCurrent.Plus(tokenPre.Negative())) + require.True(t, equal) + + accountPre = types.Coins{ + types.NewCoin("BNB", math.MaxInt64), + } + accountCurrent = types.Coins{ + types.NewCoin("BNB", 10), + } + tokenPre = types.Coins{ + types.NewCoin("BNB", math.MaxInt64), + } + tokenCurrent = types.Coins{ + types.NewCoin("BNB", 10), + } + + equal = accountCurrent.Plus(accountPre.Negative()).IsEqual(tokenCurrent.Plus(tokenPre.Negative())) + require.True(t, equal) +} diff --git a/common/stores.go b/common/stores.go index 62e0df656..7cfba97b0 100644 --- a/common/stores.go +++ b/common/stores.go @@ -20,6 +20,7 @@ const ( OracleStoreName = "oracle" IbcStoreName = "ibc" SideChainStoreName = "sc" + ReconStoreName = "recon" StakeTransientStoreName = "transient_stake" ParamsTransientStoreName = "transient_params" @@ -44,6 +45,7 @@ var ( OracleStoreKey = sdk.NewKVStoreKey(OracleStoreName) IbcStoreKey = sdk.NewKVStoreKey(IbcStoreName) SideChainStoreKey = sdk.NewKVStoreKey(SideChainStoreName) + ReconStoreKey = sdk.NewKVStoreKey(ReconStoreName) TStakeStoreKey = sdk.NewTransientStoreKey(StakeTransientStoreName) TParamsStoreKey = sdk.NewTransientStoreKey(ParamsTransientStoreName) @@ -66,6 +68,7 @@ var ( SideChainStoreName: SideChainStoreKey, BridgeStoreName: BridgeStoreKey, OracleStoreName: OracleStoreKey, + ReconStoreName: ReconStoreKey, StakeTransientStoreName: TStakeStoreKey, ParamsTransientStoreName: TParamsStoreKey, } @@ -88,6 +91,7 @@ var ( SideChainStoreName, BridgeStoreName, OracleStoreName, + ReconStoreName, } ) diff --git a/scripts/recon_integration_test.sh b/scripts/recon_integration_test.sh index 898d85eb9..a826ae5bf 100644 --- a/scripts/recon_integration_test.sh +++ b/scripts/recon_integration_test.sh @@ -170,7 +170,7 @@ function token() { sleep 1 # bind result=$(expect ./bind.exp ${btc_symbol} 0x6aade9709155a8386c63c1d2e5939525b960b4e7 10000000000000 4083424190 bob ${chain_id} ${cli_home}) - check_operation "BindBind Token" "${result}" "${chain_operation_words}" + check_operation "Bind Token" "${result}" "${chain_operation_words}" sleep 1 # issue token From ecc18b23f4bf931d28b6b079bc290168f1209d95 Mon Sep 17 00:00:00 2001 From: forcodedancing Date: Mon, 26 Jun 2023 15:29:18 +0800 Subject: [PATCH 11/16] fix review comments --- app/app.go | 1 + 1 file changed, 1 insertion(+) diff --git a/app/app.go b/app/app.go index 94a7b6eb2..fe857bfd5 100644 --- a/app/app.go +++ b/app/app.go @@ -367,6 +367,7 @@ func SetUpgradeConfig(upgradeConfig *config.UpgradeConfig) { upgrade.Mgr.RegisterStoreKeys(upgrade.LaunchBscUpgrade, common.IbcStoreKey.Name(), common.SideChainStoreKey.Name(), common.SlashingStoreKey.Name(), common.BridgeStoreKey.Name(), common.OracleStoreKey.Name()) upgrade.Mgr.RegisterStoreKeys(upgrade.BEP128, common.StakeRewardStoreKey.Name()) + upgrade.Mgr.RegisterStoreKeys(upgrade.EnableReconciliation, common.ReconStoreKey.Name()) // register msg types of upgrade upgrade.Mgr.RegisterMsgTypes(upgrade.BEP9, From ea60756b7316c5a6cb5e023f775944aeac1ef078 Mon Sep 17 00:00:00 2001 From: forcodedancing Date: Thu, 29 Jun 2023 15:06:32 +0800 Subject: [PATCH 12/16] reset diff --- app/app.go | 6 +++++- app/reconciliation.go | 17 +++-------------- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/app/app.go b/app/app.go index fe857bfd5..1c1ed24d7 100644 --- a/app/app.go +++ b/app/app.go @@ -970,9 +970,13 @@ func (app *BinanceChain) EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) a // match may end with transaction failure, which is better to save into // the EndBlock response. However, current cosmos doesn't support this. + accountIavl, _ := app.GetCommitMultiStore().GetCommitStore(common.AccountStoreKey).(*store.IavlStore) + tokenIavl, _ := app.GetCommitMultiStore().GetCommitStore(common.TokenStoreKey).(*store.IavlStore) if sdk.IsUpgrade(upgrade.EnableReconciliation) { - app.reconBalance(ctx) + app.reconBalance(ctx, accountIavl, tokenIavl) } + accountIavl.ResetDiff() + tokenIavl.ResetDiff() return abci.ResponseEndBlock{ ValidatorUpdates: validatorUpdates, diff --git a/app/reconciliation.go b/app/reconciliation.go index 603a2afac..30372c236 100644 --- a/app/reconciliation.go +++ b/app/reconciliation.go @@ -17,25 +17,14 @@ const globalAccountNumber = "globalAccountNumber" var unbalancedBlockHeightKey = []byte("0x01") // reconBalance will do reconciliation for accounts balances. -func (app *BinanceChain) reconBalance(ctx sdk.Context) { +func (app *BinanceChain) reconBalance(ctx sdk.Context, accountIavl *store.IavlStore, tokenIavl *store.IavlStore) { height, exists := app.getUnbalancedBlockHeight(ctx) if exists { panic(fmt.Sprintf("unbalanced state at block height %d, please use hardfork to bypass it", height)) } - accountStore, ok := app.GetCommitMultiStore().GetCommitStore(common.AccountStoreKey).(*store.IavlStore) - if !ok { - panic("cannot convert account store to ival store") - } - accPre, accCurrent := app.getAccountChanges(ctx, accountStore) - accountStore.ResetDiff() - - tokenStore, ok := app.GetCommitMultiStore().GetCommitStore(common.TokenStoreKey).(*store.IavlStore) - if !ok { - panic("cannot convert token store to ival store") - } - tokenPre, tokenCurrent := app.getTokenChanges(ctx, tokenStore) - tokenStore.ResetDiff() + accPre, accCurrent := app.getAccountChanges(ctx, accountIavl) + tokenPre, tokenCurrent := app.getTokenChanges(ctx, tokenIavl) // accPre and tokenPre are positive, there will be no overflow accountDiff := accCurrent.Plus(accPre.Negative()) From 8cfb1f028b226b95d4c1bee41e3df1802ef019ed Mon Sep 17 00:00:00 2001 From: forcodedancing Date: Sat, 1 Jul 2023 15:50:28 -0600 Subject: [PATCH 13/16] fix delete issue --- app/reconciliation.go | 57 ++++++++++++++++++++++++------------------- go.mod | 2 +- go.sum | 4 +-- 3 files changed, 35 insertions(+), 28 deletions(-) diff --git a/app/reconciliation.go b/app/reconciliation.go index 30372c236..8537ac24b 100644 --- a/app/reconciliation.go +++ b/app/reconciliation.go @@ -43,37 +43,39 @@ func (app *BinanceChain) getAccountChanges(ctx sdk.Context, accountStore *store. diff := accountStore.GetDiff() version := accountStore.GetTree().Version() - 1 - for k, v := range diff { + for k := range diff { if k == globalAccountNumber { continue } - var acc1 sdk.Account - err := app.Codec.UnmarshalBinaryBare(v, &acc1) - if err != nil { - panic("failed to unmarshal diff value " + err.Error()) + v := accountStore.Get([]byte(k)) + if v != nil { + var acc1 sdk.Account + err := app.Codec.UnmarshalBinaryBare(v, &acc1) + if err != nil { + panic("failed to unmarshal current value " + err.Error()) + } + nacc1 := acc1.(types.NamedAccount) + ctx.Logger().Debug("current account", "address", nacc1.GetAddress(), "coins", nacc1.GetCoins().String()) + currentCoins = currentCoins.Plus(nacc1.GetCoins()) + currentCoins = currentCoins.Plus(nacc1.GetFrozenCoins()) + currentCoins = currentCoins.Plus(nacc1.GetLockedCoins()) } - nacc1 := acc1.(types.NamedAccount) - ctx.Logger().Debug("diff account", "address", nacc1.GetAddress(), "coins", nacc1.GetCoins().String()) - currentCoins = currentCoins.Plus(nacc1.GetCoins()) - currentCoins = currentCoins.Plus(nacc1.GetFrozenCoins()) - currentCoins = currentCoins.Plus(nacc1.GetLockedCoins()) - var acc2 sdk.Account _, v = accountStore.GetTree().GetVersioned([]byte(k), version) if v != nil { // it is not a new account - err = app.Codec.UnmarshalBinaryBare(v, &acc2) + var acc2 sdk.Account + err := app.Codec.UnmarshalBinaryBare(v, &acc2) if err != nil { panic("failed to unmarshal previous value " + err.Error()) } nacc2 := acc2.(types.NamedAccount) - ctx.Logger().Debug("pre account", "address", nacc2.GetAddress(), "coins", nacc2.GetCoins().String()) preCoins = preCoins.Plus(nacc2.GetCoins()) preCoins = preCoins.Plus(nacc2.GetFrozenCoins()) preCoins = preCoins.Plus(nacc2.GetLockedCoins()) } } - ctx.Logger().Debug("account changes", "diff", currentCoins.String(), "previous", preCoins.String(), + ctx.Logger().Debug("account changes", "current", currentCoins.String(), "previous", preCoins.String(), "version", version, "height", ctx.BlockHeight()) return preCoins, currentCoins @@ -85,29 +87,34 @@ func (app *BinanceChain) getTokenChanges(ctx sdk.Context, tokenStore *store.Iavl diff := tokenStore.GetDiff() version := tokenStore.GetTree().Version() - 1 - for k, v := range diff { - var token1 types.IToken - err := app.Codec.UnmarshalBinaryBare(v, &token1) - if err != nil { - panic("failed to unmarshal diff value " + err.Error()) + for k := range diff { + v := tokenStore.Get([]byte(k)) + if v != nil { + var token1 types.IToken + err := app.Codec.UnmarshalBinaryBare(v, &token1) + if err != nil { + panic("failed to unmarshal current value " + err.Error()) + } + ctx.Logger().Debug("current token", "symbol", token1.GetSymbol(), "supply", token1.GetTotalSupply().ToInt64()) + currentCoins = currentCoins.Plus(sdk.Coins{ + sdk.NewCoin(token1.GetSymbol(), token1.GetTotalSupply().ToInt64()), + }) } - currentCoins = currentCoins.Plus(sdk.Coins{ - sdk.NewCoin(token1.GetSymbol(), token1.GetTotalSupply().ToInt64()), - }) - var token2 types.IToken _, v = tokenStore.GetTree().GetVersioned([]byte(k), version) if v != nil { // it is not a new token - err = app.Codec.UnmarshalBinaryBare(v, &token2) + var token2 types.IToken + err := app.Codec.UnmarshalBinaryBare(v, &token2) if err != nil { panic("failed to unmarshal previous value " + err.Error()) } + ctx.Logger().Debug("previous token", "symbol", token2.GetSymbol(), "supply", token2.GetTotalSupply().ToInt64()) preCoins = preCoins.Plus(sdk.Coins{ sdk.NewCoin(token2.GetSymbol(), token2.GetTotalSupply().ToInt64()), }) } } - ctx.Logger().Debug("token changes", "diff", currentCoins.String(), "previous", preCoins.String(), + ctx.Logger().Debug("token changes", "current", currentCoins.String(), "previous", preCoins.String(), "version", version, "height", ctx.BlockHeight()) return preCoins, currentCoins diff --git a/go.mod b/go.mod index 280f76758..5d8ae76a7 100644 --- a/go.mod +++ b/go.mod @@ -88,7 +88,7 @@ require ( ) replace ( - github.com/cosmos/cosmos-sdk => github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230531023724-2e22c6326b67 + github.com/cosmos/cosmos-sdk => github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230701072933-c98179b67b45 github.com/tendermint/go-amino => github.com/bnb-chain/bnc-go-amino v0.14.1-binance.2 github.com/tendermint/iavl => github.com/bnb-chain/bnc-tendermint-iavl v0.12.0-binance.5 github.com/tendermint/tendermint => github.com/bnb-chain/bnc-tendermint v0.32.3-bc.10 diff --git a/go.sum b/go.sum index 1e8148558..4c6791928 100644 --- a/go.sum +++ b/go.sum @@ -141,8 +141,8 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/etcd-io/bbolt v1.3.3 h1:gSJmxrs37LgTqR/oyJBWok6k6SvXEUerFTbltIhXkBM= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230531023724-2e22c6326b67 h1:yysn9/l3K9jEcdJ4Nd25tvPLHQxw1J9PkS4a3RyNRNM= -github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230531023724-2e22c6326b67/go.mod h1:XiDYVT+XqECR+AyCBO4KBsrbL/d1x2UTsVU36SvHxI8= +github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230701072933-c98179b67b45 h1:TkZrewxzq2gL+Q8W3Smv6yt2bf3SHnsZvdGSKq2Cpzo= +github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230701072933-c98179b67b45/go.mod h1:XiDYVT+XqECR+AyCBO4KBsrbL/d1x2UTsVU36SvHxI8= github.com/fortytw2/leaktest v1.2.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= From d85e3fc7ed6d40ce7b754ac816f9a05eb4500431 Mon Sep 17 00:00:00 2001 From: forcodedancing Date: Mon, 3 Jul 2023 10:53:59 +0800 Subject: [PATCH 14/16] revert some changes revert some changes --- app/app.go | 1 - app/config/config.go | 4 ---- app/reconciliation.go | 2 +- app/reconciliation_test.go | 2 +- common/upgrade/upgrade.go | 1 - go.mod | 14 +++++++++----- go.sum | 30 ++++++++++++++++++++++++++++-- plugins/bridge/handler.go | 4 ---- plugins/tokens/freeze/handler.go | 4 ---- plugins/tokens/issue/handler.go | 12 +----------- plugins/tokens/seturi/handler.go | 4 ---- plugins/tokens/timelock/handler.go | 5 ----- 12 files changed, 40 insertions(+), 43 deletions(-) diff --git a/app/app.go b/app/app.go index 1c1ed24d7..c67d46990 100644 --- a/app/app.go +++ b/app/app.go @@ -359,7 +359,6 @@ func SetUpgradeConfig(upgradeConfig *config.UpgradeConfig) { upgrade.Mgr.AddUpgradeHeight(upgrade.FixDoubleSignChainId, upgradeConfig.FixDoubleSignChainIdHeight) upgrade.Mgr.AddUpgradeHeight(upgrade.BEP126, upgradeConfig.BEP126Height) upgrade.Mgr.AddUpgradeHeight(upgrade.EnableReconciliation, upgradeConfig.EnableReconciliationHeight) - upgrade.Mgr.AddUpgradeHeight(upgrade.DisableMessagesPhase1, upgradeConfig.DisableMessagesPhase1Height) // register store keys of upgrade upgrade.Mgr.RegisterStoreKeys(upgrade.BEP9, common.TimeLockStoreKey.Name()) diff --git a/app/config/config.go b/app/config/config.go index 6bfd4f03c..12939feab 100644 --- a/app/config/config.go +++ b/app/config/config.go @@ -103,8 +103,6 @@ FixDoubleSignChainIdHeight = {{ .UpgradeConfig.FixDoubleSignChainIdHeight }} BEP126Height = {{ .UpgradeConfig.BEP126Height }} # Block height of reconciliation upgrade EnableReconciliationHeight = {{ .UpgradeConfig.EnableReconciliationHeight }} -# Block height of disable messages phase1 upgrade -DisableMessagesPhase1Height = {{ .UpgradeConfig.DisableMessagesPhase1Height }} [query] # ABCI query interface black list, suggested value: ["custom/gov/proposals", "custom/timelock/timelocks", "custom/atomicSwap/swapcreator", "custom/atomicSwap/swaprecipient"] @@ -554,7 +552,6 @@ type UpgradeConfig struct { FixDoubleSignChainIdHeight int64 `mapstructure:"FixDoubleSignChainIdHeight"` BEP126Height int64 `mapstructure:"BEP126Height"` EnableReconciliationHeight int64 `mapstructure:"EnableReconciliationHeight"` - DisableMessagesPhase1Height int64 `mapstructure:"DisableMessagesPhase1Height"` } func defaultUpgradeConfig() *UpgradeConfig { @@ -590,7 +587,6 @@ func defaultUpgradeConfig() *UpgradeConfig { FixFailAckPackageHeight: math.MaxInt64, EnableAccountScriptsForCrossChainTransferHeight: math.MaxInt64, EnableReconciliationHeight: math.MaxInt64, - DisableMessagesPhase1Height: math.MaxInt64, } } diff --git a/app/reconciliation.go b/app/reconciliation.go index 8537ac24b..b80225377 100644 --- a/app/reconciliation.go +++ b/app/reconciliation.go @@ -69,7 +69,7 @@ func (app *BinanceChain) getAccountChanges(ctx sdk.Context, accountStore *store. panic("failed to unmarshal previous value " + err.Error()) } nacc2 := acc2.(types.NamedAccount) - ctx.Logger().Debug("pre account", "address", nacc2.GetAddress(), "coins", nacc2.GetCoins().String()) + ctx.Logger().Debug("previous account", "address", nacc2.GetAddress(), "coins", nacc2.GetCoins().String()) preCoins = preCoins.Plus(nacc2.GetCoins()) preCoins = preCoins.Plus(nacc2.GetFrozenCoins()) preCoins = preCoins.Plus(nacc2.GetLockedCoins()) diff --git a/app/reconciliation_test.go b/app/reconciliation_test.go index 507b8005c..705dcdefe 100644 --- a/app/reconciliation_test.go +++ b/app/reconciliation_test.go @@ -1,11 +1,11 @@ package app import ( - "github.com/stretchr/testify/require" "math" "testing" "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/require" ) func Test_Reconciliation_Overflow(t *testing.T) { diff --git a/common/upgrade/upgrade.go b/common/upgrade/upgrade.go index 5d765f67d..1a93c35d2 100644 --- a/common/upgrade/upgrade.go +++ b/common/upgrade/upgrade.go @@ -50,7 +50,6 @@ const ( BEP173 = sdk.BEP173 // https://github.com/bnb-chain/BEPs/pull/173 Text Proposal FixDoubleSignChainId = sdk.FixDoubleSignChainId EnableReconciliation = sdk.EnableReconciliation - DisableMessagesPhase1 = sdk.DisableMessagesPhase1 ) func UpgradeBEP10(before func(), after func()) { diff --git a/go.mod b/go.mod index 5d8ae76a7..b9345cd34 100644 --- a/go.mod +++ b/go.mod @@ -27,6 +27,7 @@ require ( ) require ( + github.com/AanZee/goimportssort v0.0.0-20200826100315-f4e155b80708 // indirect github.com/DataDog/zstd v1.3.5 // indirect github.com/bartekn/go-bip39 v0.0.0-20171116152956-a05967ea095d // indirect github.com/beorn7/perks v1.0.1 // indirect @@ -37,6 +38,7 @@ require ( github.com/cespare/xxhash/v2 v2.1.2 // indirect github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d // indirect github.com/cosmos/ledger-go v0.9.2 // indirect + github.com/dave/dst v0.27.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 // indirect @@ -74,10 +76,12 @@ require ( github.com/tidwall/pretty v1.2.0 // indirect github.com/zondax/hid v0.9.0 // indirect github.com/zondax/ledger-cosmos-go v0.9.9 // indirect - golang.org/x/crypto v0.5.0 // indirect - golang.org/x/net v0.7.0 // indirect - golang.org/x/sys v0.5.0 // indirect - golang.org/x/text v0.7.0 // indirect + golang.org/x/crypto v0.10.0 // indirect + golang.org/x/mod v0.11.0 // indirect + golang.org/x/net v0.11.0 // indirect + golang.org/x/sys v0.9.0 // indirect + golang.org/x/text v0.10.0 // indirect + golang.org/x/tools v0.10.0 // indirect google.golang.org/genproto v0.0.0-20200825200019-8632dd797987 // indirect google.golang.org/grpc v1.31.0 // indirect google.golang.org/protobuf v1.28.1 // indirect @@ -88,7 +92,7 @@ require ( ) replace ( - github.com/cosmos/cosmos-sdk => github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230701072933-c98179b67b45 + github.com/cosmos/cosmos-sdk => github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230703024407-9ad6aa9bac8c github.com/tendermint/go-amino => github.com/bnb-chain/bnc-go-amino v0.14.1-binance.2 github.com/tendermint/iavl => github.com/bnb-chain/bnc-tendermint-iavl v0.12.0-binance.5 github.com/tendermint/tendermint => github.com/bnb-chain/bnc-tendermint v0.32.3-bc.10 diff --git a/go.sum b/go.sum index 4c6791928..406261fac 100644 --- a/go.sum +++ b/go.sum @@ -31,6 +31,8 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/AanZee/goimportssort v0.0.0-20200826100315-f4e155b80708 h1:zPQYPpQJHdilpZ/AC2aamXShx8ceXn5wSzN1slpZB7A= +github.com/AanZee/goimportssort v0.0.0-20200826100315-f4e155b80708/go.mod h1:2PAGhrM0UjlQzVlv8FLLVdHS6s9Bv2JHAeRRoZCkCiI= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= @@ -116,6 +118,13 @@ github.com/cosmos/ledger-go v0.9.2 h1:Nnao/dLwaVTk1Q5U9THldpUMMXU94BOTWPddSmVB6p github.com/cosmos/ledger-go v0.9.2/go.mod h1:oZJ2hHAZROdlHiwTg4t7kP+GKIIkBT+o6c9QWFanOyI= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/dave/dst v0.23.1/go.mod h1:LjPcLEauK4jC5hQ1fE/wr05O41zK91Pr4Qs22Ljq7gs= +github.com/dave/dst v0.27.2 h1:4Y5VFTkhGLC1oddtNwuxxe36pnyLxMFXT51FOzH8Ekc= +github.com/dave/dst v0.27.2/go.mod h1:jHh6EOibnHgcUW3WjKHisiooEkYwqpHLBSX1iOBhEyc= +github.com/dave/gopackages v0.0.0-20170318123100-46e7023ec56e/go.mod h1:i00+b/gKdIDIxuLDFob7ustLAVqhsZRk2qVZrArELGQ= +github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= +github.com/dave/kerr v0.0.0-20170318121727-bc25dd6abe8e/go.mod h1:qZqlPyPvfsDJt+3wHJ1EvSXDuVjFTK0j2p/ca+gtsb8= +github.com/dave/rebecca v0.9.1/go.mod h1:N6XYdMD/OKw3lkF3ywh8Z6wPGuwNFDNtWYEMFWEmXBA= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -141,8 +150,8 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/etcd-io/bbolt v1.3.3 h1:gSJmxrs37LgTqR/oyJBWok6k6SvXEUerFTbltIhXkBM= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230701072933-c98179b67b45 h1:TkZrewxzq2gL+Q8W3Smv6yt2bf3SHnsZvdGSKq2Cpzo= -github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230701072933-c98179b67b45/go.mod h1:XiDYVT+XqECR+AyCBO4KBsrbL/d1x2UTsVU36SvHxI8= +github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230703024407-9ad6aa9bac8c h1:p1DAUpuonFQeVCUZPi8BryjNXvZFXOhuDa22zE364fA= +github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230703024407-9ad6aa9bac8c/go.mod h1:XiDYVT+XqECR+AyCBO4KBsrbL/d1x2UTsVU36SvHxI8= github.com/fortytw2/leaktest v1.2.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= @@ -223,6 +232,7 @@ github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/pprof v0.0.0-20181127221834-b4f47329b966/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= @@ -375,6 +385,7 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rs/cors v1.6.0 h1:G9tHG9lebljV9mfp9SNPDL36nCDxmo3zTlAf1YgvzmI= github.com/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= @@ -405,6 +416,7 @@ github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpE github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= @@ -449,6 +461,7 @@ go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/ go.uber.org/ratelimit v0.1.0 h1:U2AruXqeTb4Eh9sYQSTrMhH8Cb7M0Ian2ibBOnBcnAw= go.uber.org/ratelimit v0.1.0/go.mod h1:2X8KaoNd1J0lZV+PxJk/5+DGbO/tpwLR1m++a7FnB/Y= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +golang.org/x/arch v0.0.0-20180920145803-b19384d3c130/go.mod h1:cYlCBUl1MsqxdiKgmc4uh7TxZfWSFLOGSRR090WDxt8= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -480,6 +493,8 @@ golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU= +golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -521,6 +536,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220812174116-3211cb980234/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.11.0 h1:Gi2tvZIJyBtO9SDr1q9h5hEQCp/4L2RQ+ar0qjx2oNU= +golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -541,6 +558,7 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180903190138-2b024373dcd9/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -595,6 +613,8 @@ golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= +golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -607,12 +627,14 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181127232545-e782529d0ddd/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -644,6 +666,7 @@ golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200326210457-5d86d385bf88/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -655,6 +678,8 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.10.0 h1:tvDr/iQoUqNdohiYm0LmmKcBk+q86lb9EprIUFhHHGg= +golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -753,6 +778,7 @@ gopkg.in/linkedin/goavro.v1 v1.0.5/go.mod h1:Aw5GdAbizjOEl0kAMHV9iHmA8reZzW/OKuJ gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/src-d/go-billy.v4 v4.3.0/go.mod h1:tm33zBoOwxjYHZIE+OV8bxTWFMJLrconzFMd38aARFk= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= diff --git a/plugins/bridge/handler.go b/plugins/bridge/handler.go index 86015d569..006142809 100644 --- a/plugins/bridge/handler.go +++ b/plugins/bridge/handler.go @@ -13,7 +13,6 @@ import ( "github.com/bnb-chain/node/common/log" cmmtypes "github.com/bnb-chain/node/common/types" - "github.com/bnb-chain/node/common/upgrade" "github.com/bnb-chain/node/plugins/bridge/types" ) @@ -23,9 +22,6 @@ func NewHandler(keeper Keeper) sdk.Handler { case TransferOutMsg: return handleTransferOutMsg(ctx, keeper, msg) case BindMsg: - if sdk.IsUpgrade(upgrade.DisableMessagesPhase1) { - return sdk.ErrMsgNotSupported("BindMsg disabled in DisableMessagesPhase1 upgrade").Result() - } return handleBindMsg(ctx, keeper, msg) case UnbindMsg: return handleUnbindMsg(ctx, keeper, msg) diff --git a/plugins/tokens/freeze/handler.go b/plugins/tokens/freeze/handler.go index 67ce3fdb8..70a3fb952 100644 --- a/plugins/tokens/freeze/handler.go +++ b/plugins/tokens/freeze/handler.go @@ -11,7 +11,6 @@ import ( "github.com/bnb-chain/node/common/log" common "github.com/bnb-chain/node/common/types" - "github.com/bnb-chain/node/common/upgrade" "github.com/bnb-chain/node/plugins/tokens/store" ) @@ -20,9 +19,6 @@ func NewHandler(tokenMapper store.Mapper, accKeeper auth.AccountKeeper, keeper b return func(ctx sdk.Context, msg sdk.Msg) sdk.Result { switch msg := msg.(type) { case FreezeMsg: - if sdk.IsUpgrade(upgrade.DisableMessagesPhase1) { - return sdk.ErrMsgNotSupported("FreezeMsg disabled in DisableMessagesPhase1 upgrade").Result() - } return handleFreezeToken(ctx, tokenMapper, accKeeper, keeper, msg) case UnfreezeMsg: return handleUnfreezeToken(ctx, tokenMapper, accKeeper, keeper, msg) diff --git a/plugins/tokens/issue/handler.go b/plugins/tokens/issue/handler.go index 2c029dc7d..db8fa3d04 100644 --- a/plugins/tokens/issue/handler.go +++ b/plugins/tokens/issue/handler.go @@ -15,7 +15,6 @@ import ( "github.com/bnb-chain/node/common/log" "github.com/bnb-chain/node/common/types" common "github.com/bnb-chain/node/common/types" - "github.com/bnb-chain/node/common/upgrade" "github.com/bnb-chain/node/plugins/tokens/store" ) @@ -24,21 +23,12 @@ func NewHandler(tokenMapper store.Mapper, keeper bank.Keeper) sdk.Handler { return func(ctx sdk.Context, msg sdk.Msg) sdk.Result { switch msg := msg.(type) { case IssueMsg: - if sdk.IsUpgrade(upgrade.DisableMessagesPhase1) { - return sdk.ErrMsgNotSupported("IssueMsg disabled in DisableMessagesPhase1 upgrade").Result() - } return handleIssueToken(ctx, tokenMapper, keeper, msg) case MintMsg: return handleMintToken(ctx, tokenMapper, keeper, msg) case IssueMiniMsg: - if sdk.IsUpgrade(upgrade.DisableMessagesPhase1) { - return sdk.ErrMsgNotSupported("IssueMiniMsg disabled in DisableMessagesPhase1 upgrade").Result() - } return handleIssueMiniToken(ctx, tokenMapper, keeper, msg) case IssueTinyMsg: - if sdk.IsUpgrade(upgrade.DisableMessagesPhase1) { - return sdk.ErrMsgNotSupported("IssueTinyMsg disabled in DisableMessagesPhase1 upgrade").Result() - } return handleIssueTinyToken(ctx, tokenMapper, keeper, msg) default: errMsg := "Unrecognized msg type: " + reflect.TypeOf(msg).Name() @@ -72,7 +62,7 @@ func handleIssueToken(ctx sdk.Context, tokenMapper store.Mapper, bankKeeper bank return issue(ctx, logger, tokenMapper, bankKeeper, token) } -// Mint MiniToken is also handled by this function +//Mint MiniToken is also handled by this function func handleMintToken(ctx sdk.Context, tokenMapper store.Mapper, bankKeeper bank.Keeper, msg MintMsg) sdk.Result { symbol := strings.ToUpper(msg.Symbol) logger := log.With("module", "token", "symbol", symbol, "amount", msg.Amount, "minter", msg.From) diff --git a/plugins/tokens/seturi/handler.go b/plugins/tokens/seturi/handler.go index 2e2802b97..ba7ea975c 100644 --- a/plugins/tokens/seturi/handler.go +++ b/plugins/tokens/seturi/handler.go @@ -9,7 +9,6 @@ import ( "github.com/bnb-chain/node/common/log" common "github.com/bnb-chain/node/common/types" - "github.com/bnb-chain/node/common/upgrade" "github.com/bnb-chain/node/plugins/tokens/store" ) @@ -17,9 +16,6 @@ func NewHandler(tokenMapper store.Mapper) sdk.Handler { return func(ctx sdk.Context, msg sdk.Msg) sdk.Result { switch msg := msg.(type) { case SetURIMsg: - if sdk.IsUpgrade(upgrade.DisableMessagesPhase1) { - return sdk.ErrMsgNotSupported("SetURIMsg disabled in DisableMessagesPhase1 upgrade").Result() - } return handleSetURI(ctx, tokenMapper, msg) default: errMsg := "Unrecognized msg type: " + reflect.TypeOf(msg).Name() diff --git a/plugins/tokens/timelock/handler.go b/plugins/tokens/timelock/handler.go index 507c7fd75..5be0fca45 100644 --- a/plugins/tokens/timelock/handler.go +++ b/plugins/tokens/timelock/handler.go @@ -5,17 +5,12 @@ import ( "time" sdk "github.com/cosmos/cosmos-sdk/types" - - "github.com/bnb-chain/node/common/upgrade" ) func NewHandler(keeper Keeper) sdk.Handler { return func(ctx sdk.Context, msg sdk.Msg) sdk.Result { switch msg := msg.(type) { case TimeLockMsg: - if sdk.IsUpgrade(upgrade.DisableMessagesPhase1) { - return sdk.ErrMsgNotSupported("TimeLockMsg disabled in DisableMessagesPhase1 upgrade").Result() - } return handleTimeLock(ctx, keeper, msg) case TimeUnlockMsg: return handleTimeUnlock(ctx, keeper, msg) From c564f008e4fcd7182d0b585aa8891b5321ca10bb Mon Sep 17 00:00:00 2001 From: forcodedancing Date: Mon, 3 Jul 2023 11:18:06 +0800 Subject: [PATCH 15/16] update go mod --- go.mod | 4 ---- go.sum | 30 ++++++------------------------ 2 files changed, 6 insertions(+), 28 deletions(-) diff --git a/go.mod b/go.mod index b9345cd34..dde4d04fb 100644 --- a/go.mod +++ b/go.mod @@ -27,7 +27,6 @@ require ( ) require ( - github.com/AanZee/goimportssort v0.0.0-20200826100315-f4e155b80708 // indirect github.com/DataDog/zstd v1.3.5 // indirect github.com/bartekn/go-bip39 v0.0.0-20171116152956-a05967ea095d // indirect github.com/beorn7/perks v1.0.1 // indirect @@ -38,7 +37,6 @@ require ( github.com/cespare/xxhash/v2 v2.1.2 // indirect github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d // indirect github.com/cosmos/ledger-go v0.9.2 // indirect - github.com/dave/dst v0.27.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 // indirect @@ -77,11 +75,9 @@ require ( github.com/zondax/hid v0.9.0 // indirect github.com/zondax/ledger-cosmos-go v0.9.9 // indirect golang.org/x/crypto v0.10.0 // indirect - golang.org/x/mod v0.11.0 // indirect golang.org/x/net v0.11.0 // indirect golang.org/x/sys v0.9.0 // indirect golang.org/x/text v0.10.0 // indirect - golang.org/x/tools v0.10.0 // indirect google.golang.org/genproto v0.0.0-20200825200019-8632dd797987 // indirect google.golang.org/grpc v1.31.0 // indirect google.golang.org/protobuf v1.28.1 // indirect diff --git a/go.sum b/go.sum index 406261fac..68de17628 100644 --- a/go.sum +++ b/go.sum @@ -31,8 +31,6 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/AanZee/goimportssort v0.0.0-20200826100315-f4e155b80708 h1:zPQYPpQJHdilpZ/AC2aamXShx8ceXn5wSzN1slpZB7A= -github.com/AanZee/goimportssort v0.0.0-20200826100315-f4e155b80708/go.mod h1:2PAGhrM0UjlQzVlv8FLLVdHS6s9Bv2JHAeRRoZCkCiI= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= @@ -118,13 +116,6 @@ github.com/cosmos/ledger-go v0.9.2 h1:Nnao/dLwaVTk1Q5U9THldpUMMXU94BOTWPddSmVB6p github.com/cosmos/ledger-go v0.9.2/go.mod h1:oZJ2hHAZROdlHiwTg4t7kP+GKIIkBT+o6c9QWFanOyI= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/dave/dst v0.23.1/go.mod h1:LjPcLEauK4jC5hQ1fE/wr05O41zK91Pr4Qs22Ljq7gs= -github.com/dave/dst v0.27.2 h1:4Y5VFTkhGLC1oddtNwuxxe36pnyLxMFXT51FOzH8Ekc= -github.com/dave/dst v0.27.2/go.mod h1:jHh6EOibnHgcUW3WjKHisiooEkYwqpHLBSX1iOBhEyc= -github.com/dave/gopackages v0.0.0-20170318123100-46e7023ec56e/go.mod h1:i00+b/gKdIDIxuLDFob7ustLAVqhsZRk2qVZrArELGQ= -github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= -github.com/dave/kerr v0.0.0-20170318121727-bc25dd6abe8e/go.mod h1:qZqlPyPvfsDJt+3wHJ1EvSXDuVjFTK0j2p/ca+gtsb8= -github.com/dave/rebecca v0.9.1/go.mod h1:N6XYdMD/OKw3lkF3ywh8Z6wPGuwNFDNtWYEMFWEmXBA= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -232,7 +223,6 @@ github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/pprof v0.0.0-20181127221834-b4f47329b966/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= @@ -385,7 +375,6 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rs/cors v1.6.0 h1:G9tHG9lebljV9mfp9SNPDL36nCDxmo3zTlAf1YgvzmI= github.com/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= @@ -416,7 +405,6 @@ github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpE github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= @@ -461,7 +449,6 @@ go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/ go.uber.org/ratelimit v0.1.0 h1:U2AruXqeTb4Eh9sYQSTrMhH8Cb7M0Ian2ibBOnBcnAw= go.uber.org/ratelimit v0.1.0/go.mod h1:2X8KaoNd1J0lZV+PxJk/5+DGbO/tpwLR1m++a7FnB/Y= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -golang.org/x/arch v0.0.0-20180920145803-b19384d3c130/go.mod h1:cYlCBUl1MsqxdiKgmc4uh7TxZfWSFLOGSRR090WDxt8= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -493,8 +480,7 @@ golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU= -golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -534,7 +520,7 @@ golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220812174116-3211cb980234/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.11.0 h1:Gi2tvZIJyBtO9SDr1q9h5hEQCp/4L2RQ+ar0qjx2oNU= golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= @@ -557,8 +543,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180903190138-2b024373dcd9/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -611,13 +597,13 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -625,8 +611,8 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -634,7 +620,6 @@ golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181127232545-e782529d0ddd/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -666,7 +651,6 @@ golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200326210457-5d86d385bf88/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -678,8 +662,7 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.10.0 h1:tvDr/iQoUqNdohiYm0LmmKcBk+q86lb9EprIUFhHHGg= -golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -778,7 +761,6 @@ gopkg.in/linkedin/goavro.v1 v1.0.5/go.mod h1:Aw5GdAbizjOEl0kAMHV9iHmA8reZzW/OKuJ gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/src-d/go-billy.v4 v4.3.0/go.mod h1:tm33zBoOwxjYHZIE+OV8bxTWFMJLrconzFMd38aARFk= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= From 4142622c777e2db3c80b896c1b946409bc91e67f Mon Sep 17 00:00:00 2001 From: forcodedancing Date: Wed, 5 Jul 2023 15:34:13 +0800 Subject: [PATCH 16/16] update bep number, refine codes --- app/app.go | 6 ++-- app/config/config.go | 8 ++--- app/reconciliation.go | 51 +++++++++++++++++-------------- common/upgrade/upgrade.go | 2 +- go.mod | 2 +- go.sum | 4 +-- scripts/recon_integration_test.sh | 2 +- 7 files changed, 40 insertions(+), 35 deletions(-) diff --git a/app/app.go b/app/app.go index c67d46990..02734e110 100644 --- a/app/app.go +++ b/app/app.go @@ -358,7 +358,7 @@ func SetUpgradeConfig(upgradeConfig *config.UpgradeConfig) { upgrade.Mgr.AddUpgradeHeight(upgrade.BEP173, upgradeConfig.BEP173Height) upgrade.Mgr.AddUpgradeHeight(upgrade.FixDoubleSignChainId, upgradeConfig.FixDoubleSignChainIdHeight) upgrade.Mgr.AddUpgradeHeight(upgrade.BEP126, upgradeConfig.BEP126Height) - upgrade.Mgr.AddUpgradeHeight(upgrade.EnableReconciliation, upgradeConfig.EnableReconciliationHeight) + upgrade.Mgr.AddUpgradeHeight(upgrade.BEP255, upgradeConfig.BEP255Height) // register store keys of upgrade upgrade.Mgr.RegisterStoreKeys(upgrade.BEP9, common.TimeLockStoreKey.Name()) @@ -366,7 +366,7 @@ func SetUpgradeConfig(upgradeConfig *config.UpgradeConfig) { upgrade.Mgr.RegisterStoreKeys(upgrade.LaunchBscUpgrade, common.IbcStoreKey.Name(), common.SideChainStoreKey.Name(), common.SlashingStoreKey.Name(), common.BridgeStoreKey.Name(), common.OracleStoreKey.Name()) upgrade.Mgr.RegisterStoreKeys(upgrade.BEP128, common.StakeRewardStoreKey.Name()) - upgrade.Mgr.RegisterStoreKeys(upgrade.EnableReconciliation, common.ReconStoreKey.Name()) + upgrade.Mgr.RegisterStoreKeys(upgrade.BEP255, common.ReconStoreKey.Name()) // register msg types of upgrade upgrade.Mgr.RegisterMsgTypes(upgrade.BEP9, @@ -971,7 +971,7 @@ func (app *BinanceChain) EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) a accountIavl, _ := app.GetCommitMultiStore().GetCommitStore(common.AccountStoreKey).(*store.IavlStore) tokenIavl, _ := app.GetCommitMultiStore().GetCommitStore(common.TokenStoreKey).(*store.IavlStore) - if sdk.IsUpgrade(upgrade.EnableReconciliation) { + if sdk.IsUpgrade(upgrade.BEP255) { app.reconBalance(ctx, accountIavl, tokenIavl) } accountIavl.ResetDiff() diff --git a/app/config/config.go b/app/config/config.go index 12939feab..6ed50d9f0 100644 --- a/app/config/config.go +++ b/app/config/config.go @@ -101,8 +101,8 @@ BEP173Height = {{ .UpgradeConfig.BEP173Height }} FixDoubleSignChainIdHeight = {{ .UpgradeConfig.FixDoubleSignChainIdHeight }} # Block height of BEP126 upgrade BEP126Height = {{ .UpgradeConfig.BEP126Height }} -# Block height of reconciliation upgrade -EnableReconciliationHeight = {{ .UpgradeConfig.EnableReconciliationHeight }} +# Block height of BEP255 upgrade +BEP255Height = {{ .UpgradeConfig.BEP255Height }} [query] # ABCI query interface black list, suggested value: ["custom/gov/proposals", "custom/timelock/timelocks", "custom/atomicSwap/swapcreator", "custom/atomicSwap/swaprecipient"] @@ -551,7 +551,7 @@ type UpgradeConfig struct { BEP173Height int64 `mapstructure:"BEP173Height"` FixDoubleSignChainIdHeight int64 `mapstructure:"FixDoubleSignChainIdHeight"` BEP126Height int64 `mapstructure:"BEP126Height"` - EnableReconciliationHeight int64 `mapstructure:"EnableReconciliationHeight"` + BEP255Height int64 `mapstructure:"BEP255Height"` } func defaultUpgradeConfig() *UpgradeConfig { @@ -586,7 +586,7 @@ func defaultUpgradeConfig() *UpgradeConfig { BEP171Height: math.MaxInt64, FixFailAckPackageHeight: math.MaxInt64, EnableAccountScriptsForCrossChainTransferHeight: math.MaxInt64, - EnableReconciliationHeight: math.MaxInt64, + BEP255Height: math.MaxInt64, } } diff --git a/app/reconciliation.go b/app/reconciliation.go index b80225377..cfd2ea86e 100644 --- a/app/reconciliation.go +++ b/app/reconciliation.go @@ -3,6 +3,7 @@ package app import ( "encoding/binary" "fmt" + "strings" "github.com/cosmos/cosmos-sdk/store" sdk "github.com/cosmos/cosmos-sdk/types" @@ -44,7 +45,7 @@ func (app *BinanceChain) getAccountChanges(ctx sdk.Context, accountStore *store. diff := accountStore.GetDiff() version := accountStore.GetTree().Version() - 1 for k := range diff { - if k == globalAccountNumber { + if strings.Contains(k, globalAccountNumber) { continue } v := accountStore.Get([]byte(k)) @@ -52,13 +53,14 @@ func (app *BinanceChain) getAccountChanges(ctx sdk.Context, accountStore *store. var acc1 sdk.Account err := app.Codec.UnmarshalBinaryBare(v, &acc1) if err != nil { - panic("failed to unmarshal current value " + err.Error()) + ctx.Logger().Error("failed to unmarshal current account value", "err", err.Error()) + } else { + nacc1 := acc1.(types.NamedAccount) + ctx.Logger().Debug("current account", "address", nacc1.GetAddress(), "coins", nacc1.GetCoins().String()) + currentCoins = currentCoins.Plus(nacc1.GetCoins()) + currentCoins = currentCoins.Plus(nacc1.GetFrozenCoins()) + currentCoins = currentCoins.Plus(nacc1.GetLockedCoins()) } - nacc1 := acc1.(types.NamedAccount) - ctx.Logger().Debug("current account", "address", nacc1.GetAddress(), "coins", nacc1.GetCoins().String()) - currentCoins = currentCoins.Plus(nacc1.GetCoins()) - currentCoins = currentCoins.Plus(nacc1.GetFrozenCoins()) - currentCoins = currentCoins.Plus(nacc1.GetLockedCoins()) } _, v = accountStore.GetTree().GetVersioned([]byte(k), version) @@ -66,13 +68,14 @@ func (app *BinanceChain) getAccountChanges(ctx sdk.Context, accountStore *store. var acc2 sdk.Account err := app.Codec.UnmarshalBinaryBare(v, &acc2) if err != nil { - panic("failed to unmarshal previous value " + err.Error()) + ctx.Logger().Error("failed to unmarshal previous account value", "err", err.Error()) + } else { + nacc2 := acc2.(types.NamedAccount) + ctx.Logger().Debug("previous account", "address", nacc2.GetAddress(), "coins", nacc2.GetCoins().String()) + preCoins = preCoins.Plus(nacc2.GetCoins()) + preCoins = preCoins.Plus(nacc2.GetFrozenCoins()) + preCoins = preCoins.Plus(nacc2.GetLockedCoins()) } - nacc2 := acc2.(types.NamedAccount) - ctx.Logger().Debug("previous account", "address", nacc2.GetAddress(), "coins", nacc2.GetCoins().String()) - preCoins = preCoins.Plus(nacc2.GetCoins()) - preCoins = preCoins.Plus(nacc2.GetFrozenCoins()) - preCoins = preCoins.Plus(nacc2.GetLockedCoins()) } } ctx.Logger().Debug("account changes", "current", currentCoins.String(), "previous", preCoins.String(), @@ -93,12 +96,13 @@ func (app *BinanceChain) getTokenChanges(ctx sdk.Context, tokenStore *store.Iavl var token1 types.IToken err := app.Codec.UnmarshalBinaryBare(v, &token1) if err != nil { - panic("failed to unmarshal current value " + err.Error()) + ctx.Logger().Error("failed to unmarshal current token value", "err", err.Error()) + } else { + ctx.Logger().Debug("current token", "symbol", token1.GetSymbol(), "supply", token1.GetTotalSupply().ToInt64()) + currentCoins = currentCoins.Plus(sdk.Coins{ + sdk.NewCoin(token1.GetSymbol(), token1.GetTotalSupply().ToInt64()), + }) } - ctx.Logger().Debug("current token", "symbol", token1.GetSymbol(), "supply", token1.GetTotalSupply().ToInt64()) - currentCoins = currentCoins.Plus(sdk.Coins{ - sdk.NewCoin(token1.GetSymbol(), token1.GetTotalSupply().ToInt64()), - }) } _, v = tokenStore.GetTree().GetVersioned([]byte(k), version) @@ -106,12 +110,13 @@ func (app *BinanceChain) getTokenChanges(ctx sdk.Context, tokenStore *store.Iavl var token2 types.IToken err := app.Codec.UnmarshalBinaryBare(v, &token2) if err != nil { - panic("failed to unmarshal previous value " + err.Error()) + ctx.Logger().Error("failed to unmarshal previous token value", "err", err.Error()) + } else { + ctx.Logger().Debug("previous token", "symbol", token2.GetSymbol(), "supply", token2.GetTotalSupply().ToInt64()) + preCoins = preCoins.Plus(sdk.Coins{ + sdk.NewCoin(token2.GetSymbol(), token2.GetTotalSupply().ToInt64()), + }) } - ctx.Logger().Debug("previous token", "symbol", token2.GetSymbol(), "supply", token2.GetTotalSupply().ToInt64()) - preCoins = preCoins.Plus(sdk.Coins{ - sdk.NewCoin(token2.GetSymbol(), token2.GetTotalSupply().ToInt64()), - }) } } ctx.Logger().Debug("token changes", "current", currentCoins.String(), "previous", preCoins.String(), diff --git a/common/upgrade/upgrade.go b/common/upgrade/upgrade.go index 1a93c35d2..d304e4c32 100644 --- a/common/upgrade/upgrade.go +++ b/common/upgrade/upgrade.go @@ -49,7 +49,7 @@ const ( BEP171 = sdk.BEP171 // https://github.com/bnb-chain/BEPs/pull/171 Security Enhancement for Cross-Chain Module BEP173 = sdk.BEP173 // https://github.com/bnb-chain/BEPs/pull/173 Text Proposal FixDoubleSignChainId = sdk.FixDoubleSignChainId - EnableReconciliation = sdk.EnableReconciliation + BEP255 = sdk.BEP255 // https://github.com/bnb-chain/BEPs/pull/255 Asset Reconciliation for Security Enhancement ) func UpgradeBEP10(before func(), after func()) { diff --git a/go.mod b/go.mod index dde4d04fb..5b12dda6f 100644 --- a/go.mod +++ b/go.mod @@ -88,7 +88,7 @@ require ( ) replace ( - github.com/cosmos/cosmos-sdk => github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230703024407-9ad6aa9bac8c + github.com/cosmos/cosmos-sdk => github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230705071422-875aa9cf6664 github.com/tendermint/go-amino => github.com/bnb-chain/bnc-go-amino v0.14.1-binance.2 github.com/tendermint/iavl => github.com/bnb-chain/bnc-tendermint-iavl v0.12.0-binance.5 github.com/tendermint/tendermint => github.com/bnb-chain/bnc-tendermint v0.32.3-bc.10 diff --git a/go.sum b/go.sum index 68de17628..648a0fbc6 100644 --- a/go.sum +++ b/go.sum @@ -141,8 +141,8 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/etcd-io/bbolt v1.3.3 h1:gSJmxrs37LgTqR/oyJBWok6k6SvXEUerFTbltIhXkBM= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230703024407-9ad6aa9bac8c h1:p1DAUpuonFQeVCUZPi8BryjNXvZFXOhuDa22zE364fA= -github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230703024407-9ad6aa9bac8c/go.mod h1:XiDYVT+XqECR+AyCBO4KBsrbL/d1x2UTsVU36SvHxI8= +github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230705071422-875aa9cf6664 h1:ZgRdXdvAMFVkGAMNiu+LDb2u9ID0Gq+DC4tqEBBiyxo= +github.com/forcodedancing/bnc-cosmos-sdk v0.25.8-0.20230705071422-875aa9cf6664/go.mod h1:XiDYVT+XqECR+AyCBO4KBsrbL/d1x2UTsVU36SvHxI8= github.com/fortytw2/leaktest v1.2.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= diff --git a/scripts/recon_integration_test.sh b/scripts/recon_integration_test.sh index a826ae5bf..d8978bf2a 100644 --- a/scripts/recon_integration_test.sh +++ b/scripts/recon_integration_test.sh @@ -47,7 +47,7 @@ function prepare_node() { $(cd "./${home}/config" && sed -i -e "s/BEP159Phase2Height = 9223372036854775807/BEP159Phase2Height = 11/g" app.toml) $(cd "./${home}/config" && sed -i -e "s/LimitConsAddrUpdateIntervalHeight = 9223372036854775807/LimitConsAddrUpdateIntervalHeight = 11/g" app.toml) $(cd "./${home}/config" && sed -i -e "s/breatheBlockInterval = 0/breatheBlockInterval = 5/g" app.toml) - $(cd "./${home}/config" && sed -i -e "s/EnableReconciliationHeight = 9223372036854775807/EnableReconciliationHeight = 3/g" app.toml) + $(cd "./${home}/config" && sed -i -e "s/BEP255Height = 9223372036854775807/BEP255Height = 3/g" app.toml) # stop and start node ps -ef | grep bnbchaind | grep testnoded | awk '{print $2}' | xargs kill -9