diff --git a/changelog.md b/changelog.md index 3e4ba98004..8e9e9c0f12 100644 --- a/changelog.md +++ b/changelog.md @@ -4,6 +4,18 @@ ### Features +### Tests + +### Refactor + +### Fixes + +* [3184](https://github.com/zeta-chain/node/pull/3184) - zetaclient should not retry if inbound vote message validation fails + +## v23.0.0 + +### Features + * [2984](https://github.com/zeta-chain/node/pull/2984) - add Whitelist message ability to whitelist SPL tokens on Solana * [3091](https://github.com/zeta-chain/node/pull/3091) - improve build reproducability. `make release{,-build-only}` checksums should now be stable. * [3124](https://github.com/zeta-chain/node/pull/3124) - integrate SPL deposits @@ -16,6 +28,7 @@ * [3105](https://github.com/zeta-chain/node/pull/3105) - split Bitcoin E2E tests into two runners for deposit and withdraw * [3154](https://github.com/zeta-chain/node/pull/3154) - configure Solana gateway program id for E2E tests * [3188](https://github.com/zeta-chain/node/pull/3188) - add e2e test for v2 deposit and call with swap +* [3151](https://github.com/zeta-chain/node/pull/3151) - add withdraw emissions to e2e tests ### Refactor @@ -35,7 +48,49 @@ * [3155](https://github.com/zeta-chain/node/pull/3155) - fix potential panic in the Bitcoin inscription parsing * [3162](https://github.com/zeta-chain/node/pull/3162) - skip depositor fee calculation if transaction does not involve TSS address * [3179](https://github.com/zeta-chain/node/pull/3179) - support inbound trackers for v2 cctx -* [3184](https://github.com/zeta-chain/node/pull/3184) - zetaclient should not retry if inbound vote message validation fails +* [3192](https://github.com/zeta-chain/node/pull/3192) - fix incorrect zContext origin caused by the replacement of 'sender' with 'revertAddress' + +## v22.1.2 + +## Fixes + +- [3181](https://github.com/zeta-chain/node/pull/3181) - add lock around pingRTT to prevent crash + +## v22.1.1 + +## Fixes + +- [3171](https://github.com/zeta-chain/node/pull/3171) - infinite discovery address leak + +## v22.1.0 + +## Features + +- [3028](https://github.com/zeta-chain/node/pull/3028) - whitelist connection gater + +## Fixes + +- [3041](https://github.com/zeta-chain/node/pull/3041) - replace DHT with private peer discovery +- [3162](https://github.com/zeta-chain/node/pull/3162) - skip depositor fee calculation on irrelevant transactions + +## v22.0.2 + +## Fixes + +- [3144](https://github.com/zeta-chain/node/pull/3145) - out of gas on ZetaClient during `onRevert` + +## v22.0.1 + +## Fixes + +- [3140](https://github.com/zeta-chain/node/pull/3140) - allow BTC revert with dust amount + +## v22.0.0 + +## Refactor + +* [3073](https://github.com/zeta-chain/node/pull/3073) - improve ZETA deposit check with max supply check +>>>>>>> cad1b36d6fdd96b8ecfd48f0be32246338db513e ## v21.0.0 diff --git a/cmd/zetae2e/config/local.yml b/cmd/zetae2e/config/local.yml index aed44fc155..15de10ceda 100644 --- a/cmd/zetae2e/config/local.yml +++ b/cmd/zetae2e/config/local.yml @@ -65,6 +65,10 @@ additional_accounts: bech32_address: "zeta1nry9yeg6njhjrp2ctppa8558vqxal9fxk69zxg" evm_address: "0x98c852651A9CAF2185585843d3D287600Ddf9526" private_key: "bf9456c679bb5a952a9a137fcfc920e0413efdb97c36de1e57455763084230cb" + user_emissions_withdraw: + bech32_address: "zeta1n9zhyn4unvaee3ey40k7x7f5nmj7zet6qr5kl7" + evm_address: "0x9945724EBc9B3B9cc724abedE379349EE5E1657a" + private_key: "9d524fe318c0eb5f80d8b246993a9f15f924db24d4b8b873839b13bc30040d03" policy_accounts: emergency_policy_account: bech32_address: "zeta16m2cnrdwtgweq4njc6t470vl325gw4kp6s7tap" diff --git a/cmd/zetae2e/config/localnet.yml b/cmd/zetae2e/config/localnet.yml index 15f1e332f6..6e1c2b392c 100644 --- a/cmd/zetae2e/config/localnet.yml +++ b/cmd/zetae2e/config/localnet.yml @@ -65,6 +65,10 @@ additional_accounts: bech32_address: "zeta1nry9yeg6njhjrp2ctppa8558vqxal9fxk69zxg" evm_address: "0x98c852651A9CAF2185585843d3D287600Ddf9526" private_key: "bf9456c679bb5a952a9a137fcfc920e0413efdb97c36de1e57455763084230cb" + user_emissions_withdraw: + bech32_address: "zeta1n9zhyn4unvaee3ey40k7x7f5nmj7zet6qr5kl7" + evm_address: "0x9945724EBc9B3B9cc724abedE379349EE5E1657a" + private_key: "9d524fe318c0eb5f80d8b246993a9f15f924db24d4b8b873839b13bc30040d03" policy_accounts: emergency_policy_account: bech32_address: "zeta16m2cnrdwtgweq4njc6t470vl325gw4kp6s7tap" diff --git a/cmd/zetae2e/local/local.go b/cmd/zetae2e/local/local.go index a752c0e388..4c3a1f0717 100644 --- a/cmd/zetae2e/local/local.go +++ b/cmd/zetae2e/local/local.go @@ -121,6 +121,7 @@ func localE2ETest(cmd *cobra.Command, _ []string) { logger := runner.NewLogger(verbose, color.FgWhite, "setup") testStartTime := time.Now() + logger.Print("starting E2E tests") if testAdmin { @@ -160,11 +161,17 @@ func localE2ETest(cmd *cobra.Command, _ []string) { zetaTxServer, err := txserver.NewZetaTxServer( conf.RPCs.ZetaCoreRPC, - []string{utils.EmergencyPolicyName, utils.OperationalPolicyName, utils.AdminPolicyName}, + []string{ + utils.EmergencyPolicyName, + utils.OperationalPolicyName, + utils.AdminPolicyName, + utils.UserEmissionsWithdrawName, + }, []string{ conf.PolicyAccounts.EmergencyPolicyAccount.RawPrivateKey.String(), conf.PolicyAccounts.OperationalPolicyAccount.RawPrivateKey.String(), conf.PolicyAccounts.AdminPolicyAccount.RawPrivateKey.String(), + conf.AdditionalAccounts.UserEmissionsWithdraw.RawPrivateKey.String(), }, conf.ZetaChainID, ) @@ -323,7 +330,6 @@ func localE2ETest(cmd *cobra.Command, _ []string) { e2etests.TestBitcoinDepositName, e2etests.TestBitcoinDepositAndCallName, e2etests.TestBitcoinDepositAndCallRevertName, - e2etests.TestBitcoinDepositAndCallRevertWithDustName, e2etests.TestBitcoinStdMemoDepositName, e2etests.TestBitcoinStdMemoDepositAndCallName, e2etests.TestBitcoinStdMemoDepositAndCallRevertName, @@ -331,6 +337,9 @@ func localE2ETest(cmd *cobra.Command, _ []string) { e2etests.TestBitcoinStdMemoInscribedDepositAndCallName, e2etests.TestCrosschainSwapName, } + bitcoinDepositTestsAdvanced := []string{ + e2etests.TestBitcoinDepositAndCallRevertWithDustName, + } bitcoinWithdrawTests := []string{ e2etests.TestBitcoinWithdrawSegWitName, e2etests.TestBitcoinWithdrawInvalidAddressName, @@ -375,6 +384,7 @@ func localE2ETest(cmd *cobra.Command, _ []string) { erc20Tests = append(erc20Tests, erc20AdvancedTests...) zetaTests = append(zetaTests, zetaAdvancedTests...) zevmMPTests = append(zevmMPTests, zevmMPAdvancedTests...) + bitcoinDepositTests = append(bitcoinDepositTests, bitcoinDepositTestsAdvanced...) bitcoinWithdrawTests = append(bitcoinWithdrawTests, bitcoinWithdrawTestsAdvanced...) ethereumTests = append(ethereumTests, ethereumAdvancedTests...) } @@ -488,6 +498,7 @@ func localE2ETest(cmd *cobra.Command, _ []string) { logger.Print("❌ e2e tests failed after %s", time.Since(testStartTime).String()) os.Exit(1) } + noError(deployerRunner.WithdrawEmissions()) // if all tests pass, cancel txs priority monitoring and check if tx priority is not correct in some blocks logger.Print("⏳ e2e tests passed, checking tx priority") diff --git a/contrib/localnet/orchestrator/start-zetae2e.sh b/contrib/localnet/orchestrator/start-zetae2e.sh index 5d8c9c5586..99ab61d700 100644 --- a/contrib/localnet/orchestrator/start-zetae2e.sh +++ b/contrib/localnet/orchestrator/start-zetae2e.sh @@ -134,6 +134,9 @@ fund_eth_from_config '.additional_accounts.user_v2_ether_revert.evm_address' 100 # unlock v2 erc20 revert tests accounts fund_eth_from_config '.additional_accounts.user_v2_erc20_revert.evm_address' 10000 "V2 ERC20 revert tester" +# unlock emissions withdraw tests accounts +fund_eth_from_config '.additional_accounts.user_emissions_withdraw.evm_address' 10000 "emissions withdraw tester" + # unlock local solana relayer accounts if host solana > /dev/null; then solana_url=$(config_str '.rpcs.solana') @@ -222,7 +225,8 @@ if [ "$LOCALNET_MODE" == "upgrade" ]; then echo "running E2E command to setup the networks and populate the state..." # Use light flag to ensure tests can complete before the upgrade height - zetae2e local $E2E_ARGS --skip-setup --config "$deployed_config_path" --light --skip-precompiles ${COMMON_ARGS} + # skip-bitcoin-dust-withdraw flag can be removed after v23 is released + zetae2e local $E2E_ARGS --skip-setup --config "$deployed_config_path" --light --skip-precompiles ${COMMON_ARGS} if [ $? -ne 0 ]; then echo "first e2e failed" exit 1 diff --git a/contrib/localnet/scripts/start-zetacored.sh b/contrib/localnet/scripts/start-zetacored.sh index 38047a6b46..56e30358c1 100755 --- a/contrib/localnet/scripts/start-zetacored.sh +++ b/contrib/localnet/scripts/start-zetacored.sh @@ -67,6 +67,55 @@ add_v17_message_authorizations() { ' $json_file > temp.json && mv temp.json $json_file } + +add_emissions_withdraw_authorizations() { + + config_file="/root/config.yml" + json_file="/root/.zetacored/config/genesis.json" + + # Check if config file exists + if [[ ! -f "$config_file" ]]; then + echo "Error: Config file not found at $config_file" + return 1 + fi + # Address to add emissions withdraw authorizations + address=$(yq -r '.additional_accounts.user_emissions_withdraw.bech32_address' "$config_file") + + # Check if genesis file exists + if [[ ! -f "$json_file" ]]; then + echo "Error: Genesis file not found at $json_file" + return 1 + fi + + echo "Adding emissions withdraw authorizations for address: $address" + + + # Using jq to parse JSON, create new entries, and append them to the authorization array + if ! jq --arg address "$address" ' + # Store the nodeAccountList array + .app_state.observer.nodeAccountList as $list | + # Iterate over the stored list to construct new objects and append to the authorization array + .app_state.authz.authorization += [ + $list[] | + { + "granter": .operator, + "grantee": $address, + "authorization": { + "@type": "/cosmos.authz.v1beta1.GenericAuthorization", + "msg": "/zetachain.zetacore.emissions.MsgWithdrawEmission" + }, + "expiration": null + } + ] + ' "$json_file" > temp.json; then + echo "Error: Failed to update genesis file" + return 1 + fi + mv temp.json "$json_file" +} + + + # create keys CHAINID="athens_101-1" KEYRING="test" @@ -191,6 +240,12 @@ then zetacored collect-observer-info zetacored add-observer-list --keygen-block 25 + # Add emissions withdraw authorizations + if ! add_emissions_withdraw_authorizations; then + echo "Error: Failed to add emissions withdraw authorizations" + exit 1 + fi + # Check for the existence of "AddToOutTxTracker" string in the genesis file # If this message is found in the genesis, it means add-observer-list has been run with the v16 binary for upgrade tests # In this case, we need to add authorizations for the new v17 messages to the genesis file @@ -272,6 +327,9 @@ then # v2 erc20 revert tester address=$(yq -r '.additional_accounts.user_v2_erc20_revert.bech32_address' /root/config.yml) zetacored add-genesis-account "$address" 100000000000000000000000000azeta +# emissions withdraw tester + address=$(yq -r '.additional_accounts.user_emissions_withdraw.bech32_address' /root/config.yml) + zetacored add-genesis-account "$address" 100000000000000000000000000azeta # 3. Copy the genesis.json to all the nodes .And use it to create a gentx for every node zetacored gentx operator 1000000000000000000000azeta --chain-id=$CHAINID --keyring-backend=$KEYRING --gas-prices 20000000000azeta diff --git a/docs/openapi/openapi.html b/docs/openapi/openapi.html index 37fbfb2a16..20f878256f 100644 --- a/docs/openapi/openapi.html +++ b/docs/openapi/openapi.html @@ -5,18 +5,18 @@
- +