diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 88c803ffe85..2a1770d8140 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -109,16 +109,17 @@ jobs: - name: Build AvalancheGo Binary shell: bash run: ./scripts/build.sh - - name: Run e2e tests - shell: bash - run: ./scripts/tests.upgrade.sh - - name: Upload tmpnet network dir - uses: actions/upload-artifact@v4 - if: always() - with: - name: upgrade-tmpnet-data - path: ${{ env.tmpnet_data_path }} - if-no-files-found: error + # TODO: Reactivate test once v1.11.0 is published + # - name: Run e2e tests + # shell: bash + # run: ./scripts/tests.upgrade.sh + # - name: Upload tmpnet network dir + # uses: actions/upload-artifact@v4 + # if: always() + # with: + # name: upgrade-tmpnet-data + # path: ${{ env.tmpnet_data_path }} + # if-no-files-found: error Lint: runs-on: ubuntu-latest steps: diff --git a/RELEASES.md b/RELEASES.md index 750b7e49c60..8a8b007eff3 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1,5 +1,91 @@ # Release Notes +## [v1.11.0](https://github.com/ava-labs/avalanchego/releases/tag/v1.11.0) + +This upgrade consists of the following Avalanche Community Proposals (ACPs): + +- [ACP-23](https://github.com/avalanche-foundation/ACPs/blob/main/ACPs/23-p-chain-native-transfers.md) P-Chain Native Transfers +- [ACP-24](https://github.com/avalanche-foundation/ACPs/blob/main/ACPs/24-shanghai-eips.md) Activate Shanghai EIPs on C-Chain +- [ACP-25](https://github.com/avalanche-foundation/ACPs/blob/main/ACPs/25-vm-application-errors.md) Virtual Machine Application Errors +- [ACP-30](https://github.com/avalanche-foundation/ACPs/blob/main/ACPs/30-avalanche-warp-x-evm.md) Integrate Avalanche Warp Messaging into the EVM +- [ACP-31](https://github.com/avalanche-foundation/ACPs/blob/main/ACPs/31-enable-subnet-ownership-transfer.md) Enable Subnet Ownership Transfer +- [ACP-41](https://github.com/avalanche-foundation/ACPs/blob/main/ACPs/41-remove-pending-stakers.md) Remove Pending Stakers +- [ACP-62](https://github.com/avalanche-foundation/ACPs/blob/main/ACPs/62-disable-addvalidatortx-and-adddelegatortx.md) Disable AddValidatorTx and AddDelegatorTx + +The changes in the upgrade go into effect at 11 AM ET (4 PM UTC) on Wednesday, March 6th, 2024 on Mainnet. + +**All Durango supporting Mainnet nodes should upgrade before 11 AM ET, March 6th 2024.** + +The plugin version is updated to `33` all plugins must update to be compatible. + +### APIs + +- Added `platform.getSubnet` API + +### Configs + +- Deprecated: + - `api-auth-required` + - `api-auth-password` + - `api-auth-password-file` + +### Fixes + +- Fixed potential deadlock during P-chain shutdown +- Updated the consensus engine to recover from previously misconfigured subnets without requiring a restart + +### What's Changed + +- `ci`: Upgrade all workflow actions to versions using Node 20 by @marun in https://github.com/ava-labs/avalanchego/pull/2677 +- `tmpnet`: Ensure restart after chain creation by @marun in https://github.com/ava-labs/avalanchego/pull/2675 +- Publish docker images with race detection by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/2680 +- `vms/platformvm`: Remove `NewRewardValidatorTx` from `Builder` by @dhrubabasu in https://github.com/ava-labs/avalanchego/pull/2676 +- `ci`: Updated shellcheck script to support autofix by @marun in https://github.com/ava-labs/avalanchego/pull/2678 +- Unblock misconfigured subnets by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/2679 +- Add transfer subnet ownership functionality to wallet by @felipemadero in https://github.com/ava-labs/avalanchego/pull/2659 +- Add ACP-62 by @dhrubabasu in https://github.com/ava-labs/avalanchego/pull/2681 +- `vms/platformvm`: Add missing txs to `txs.Builder` by @dhrubabasu in https://github.com/ava-labs/avalanchego/pull/2663 +- `vms/platformvm`: Disable `AddValidatorTx` and `AddDelegatorTx` by @dhrubabasu in https://github.com/ava-labs/avalanchego/pull/2662 +- Remove chain router from node.Config by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/2683 +- Deprecate the auth API by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/2684 +- Fix P-chain Shutdown deadlock by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/2686 +- Cleanup ID initialization by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/2690 +- Remove unused chains#beacons field by @joshua-kim in https://github.com/ava-labs/avalanchego/pull/2692 +- x/sync: Remove duplicated call to TrackBandwidth by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/2694 +- Move VMAliaser into node from config by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/2689 +- Fix minor errors in x/sync tests by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/2709 +- Update minimum golang version to v1.21.7 by @dhrubabasu in https://github.com/ava-labs/avalanchego/pull/2710 +- Check for github action updates in dependabot by @dhrubabasu in https://github.com/ava-labs/avalanchego/pull/2715 +- Update `golangci-lint` to `v1.56.1` by @dhrubabasu in https://github.com/ava-labs/avalanchego/pull/2714 +- Add stringer to warp types by @aaronbuchwald in https://github.com/ava-labs/avalanchego/pull/2712 +- Refactor `p2p.PeerTracker` by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/2701 +- Bump actions/stale from 8 to 9 by @dependabot in https://github.com/ava-labs/avalanchego/pull/2719 +- Bump github/codeql-action from 2 to 3 by @dependabot in https://github.com/ava-labs/avalanchego/pull/2720 +- Bump bufbuild/buf-setup-action from 1.26.1 to 1.29.0 by @dependabot in https://github.com/ava-labs/avalanchego/pull/2721 +- Bump aws-actions/configure-aws-credentials from 1 to 4 by @dependabot in https://github.com/ava-labs/avalanchego/pull/2722 +- Manually setup golang in codeql action by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/2725 +- Provide pgo file during compilation by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/2724 +- P-chain - Tx builder cleanup by @abi87 in https://github.com/ava-labs/avalanchego/pull/2718 +- Refactor chain manager subnets by @joshua-kim in https://github.com/ava-labs/avalanchego/pull/2711 +- Replace snowball/snowflake interface with single shared snow interface by @aaronbuchwald in https://github.com/ava-labs/avalanchego/pull/2717 +- Remove duplicate IP length constant by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/2733 +- Add `platform.getSubnet` API by @felipemadero in https://github.com/ava-labs/avalanchego/pull/2704 +- Provide BLS signature in Handshake message by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/2730 +- Verify BLS signature provided in Handshake messages by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/2735 +- Move UTXOs definition from primary to primary/common by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/2741 +- Minimize Signer interface and document Sign by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/2740 +- Revert setup-go during unit tests by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/2744 +- P-chain wallet fees UTs by @abi87 in https://github.com/ava-labs/avalanchego/pull/2734 +- `merkledb` -- generalize error case to check state that should never occur by @danlaine in https://github.com/ava-labs/avalanchego/pull/2743 +- Revert setup-go to v3 on all arm actions by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/2749 +- Add AppError to Sender interface by @joshua-kim in https://github.com/ava-labs/avalanchego/pull/2737 +- P-chain - Cleaned up fork switch in UTs by @abi87 in https://github.com/ava-labs/avalanchego/pull/2746 +- X-chain wallet fees UTs by @abi87 in https://github.com/ava-labs/avalanchego/pull/2747 +- Add keys values to bimap by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/2754 +- fix test sender by @joshua-kim in https://github.com/ava-labs/avalanchego/pull/2755 + +**Full Changelog**: https://github.com/ava-labs/avalanchego/compare/v1.10.19...v1.11.0 + ## [v1.10.19](https://github.com/ava-labs/avalanchego/releases/tag/v1.10.19) This version is backwards compatible to [v1.10.0](https://github.com/ava-labs/avalanchego/releases/tag/v1.10.0). It is optional, but encouraged. diff --git a/config/config.go b/config/config.go index a9ffa17f646..d7a05220cd7 100644 --- a/config/config.go +++ b/config/config.go @@ -94,6 +94,7 @@ var ( } errConflictingACPOpinion = errors.New("supporting and objecting to the same ACP") + errConflictingImplicitACPOpinion = errors.New("objecting to enabled ACP") errSybilProtectionDisabledStakerWeights = errors.New("sybil protection disabled weights must be positive") errSybilProtectionDisabledOnPublicNetwork = errors.New("sybil protection disabled on public network") errAuthPasswordTooWeak = errors.New("API auth password is not strong enough") @@ -379,6 +380,13 @@ func getNetworkConfig( if supportedACPs.Overlaps(objectedACPs) { return network.Config{}, errConflictingACPOpinion } + if constants.ScheduledACPs.Overlaps(objectedACPs) { + return network.Config{}, errConflictingImplicitACPOpinion + } + + // Because this node version has scheduled these ACPs, we should notify + // peers that we support these upgrades. + supportedACPs.Union(constants.ScheduledACPs) config := network.Config{ ThrottlerConfig: network.ThrottlerConfig{ diff --git a/go.mod b/go.mod index d2bade11b34..3598b9abd9b 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/DataDog/zstd v1.5.2 github.com/Microsoft/go-winio v0.5.2 github.com/NYTimes/gziphandler v1.1.1 - github.com/ava-labs/coreth v0.12.11-rc.3.0.20240207021717-15431782181b + github.com/ava-labs/coreth v0.13.0-rc.0 github.com/ava-labs/ledger-avalanche/go v0.0.0-20231102202641-ae2ebdaeac34 github.com/btcsuite/btcd/btcutil v1.1.3 github.com/cockroachdb/pebble v0.0.0-20230209160836-829675f94811 diff --git a/go.sum b/go.sum index 3efac349b66..f6588c9ea88 100644 --- a/go.sum +++ b/go.sum @@ -66,8 +66,8 @@ github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/ava-labs/coreth v0.12.11-rc.3.0.20240207021717-15431782181b h1:CG09kjMyp0+5iusoZZVyOc1tL1HtuiJ8cL/5QipQUD8= -github.com/ava-labs/coreth v0.12.11-rc.3.0.20240207021717-15431782181b/go.mod h1:ofm30knZFS5q+y3YS+p2jLa+3ZpgzW5OkM8He5MwZxs= +github.com/ava-labs/coreth v0.13.0-rc.0 h1:V2l3qj2ek3geKDJAnF2M94mYJK8kg2kePixujfJ0bmk= +github.com/ava-labs/coreth v0.13.0-rc.0/go.mod h1:eUMbBLDhlZASJjcbf0gIcD2GMn2rRRCUxC8MXLt5QQk= github.com/ava-labs/ledger-avalanche/go v0.0.0-20231102202641-ae2ebdaeac34 h1:mg9Uw6oZFJKytJxgxnl3uxZOs/SB8CVHg6Io4Tf99Zc= github.com/ava-labs/ledger-avalanche/go v0.0.0-20231102202641-ae2ebdaeac34/go.mod h1:pJxaT9bUgeRNVmNRgtCHb7sFDIRKy7CzTQVi8gGNT6g= github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= diff --git a/proto/README.md b/proto/README.md index 34d4228571e..fee58835f21 100644 --- a/proto/README.md +++ b/proto/README.md @@ -1,6 +1,6 @@ # Avalanche gRPC -Now Serving: **Protocol Version 30** +Now Serving: **Protocol Version 33** Protobuf files are hosted at [https://buf.build/ava-labs/avalanche](https://buf.build/ava-labs/avalanche) and diff --git a/utils/constants/acps.go b/utils/constants/acps.go index db849bfbcd1..5392b21865a 100644 --- a/utils/constants/acps.go +++ b/utils/constants/acps.go @@ -5,16 +5,29 @@ package constants import "github.com/ava-labs/avalanchego/utils/set" -// CurrentACPs is the set of ACPs that are currently, at the time of release, -// marked as implementable and not activated. -// -// See: https://github.com/orgs/avalanche-foundation/projects/1 -var CurrentACPs = set.Of[uint32]( - 23, // https://github.com/avalanche-foundation/ACPs/blob/main/ACPs/23-p-chain-native-transfers.md - 24, // https://github.com/avalanche-foundation/ACPs/blob/main/ACPs/24-shanghai-eips.md - 25, // https://github.com/avalanche-foundation/ACPs/blob/main/ACPs/25-vm-application-errors.md - 30, // https://github.com/avalanche-foundation/ACPs/blob/main/ACPs/30-avalanche-warp-x-evm.md - 31, // https://github.com/avalanche-foundation/ACPs/blob/main/ACPs/31-enable-subnet-ownership-transfer.md - 41, // https://github.com/avalanche-foundation/ACPs/blob/main/ACPs/41-remove-pending-stakers.md - 62, // https://github.com/avalanche-foundation/ACPs/blob/main/ACPs/62-disable-addvalidatortx-and-adddelegatortx.md +var ( + // CurrentACPs is the set of ACPs that are currently, at the time of + // release, marked as implementable and not activated. + // + // See: https://github.com/orgs/avalanche-foundation/projects/1 + CurrentACPs = set.Of[uint32]( + 23, // https://github.com/avalanche-foundation/ACPs/blob/main/ACPs/23-p-chain-native-transfers.md + 24, // https://github.com/avalanche-foundation/ACPs/blob/main/ACPs/24-shanghai-eips.md + 25, // https://github.com/avalanche-foundation/ACPs/blob/main/ACPs/25-vm-application-errors.md + 30, // https://github.com/avalanche-foundation/ACPs/blob/main/ACPs/30-avalanche-warp-x-evm.md + 31, // https://github.com/avalanche-foundation/ACPs/blob/main/ACPs/31-enable-subnet-ownership-transfer.md + 41, // https://github.com/avalanche-foundation/ACPs/blob/main/ACPs/41-remove-pending-stakers.md + 62, // https://github.com/avalanche-foundation/ACPs/blob/main/ACPs/62-disable-addvalidatortx-and-adddelegatortx.md + ) + + // ScheduledACPs are the ACPs incuded into the next upgrade. + ScheduledACPs = set.Of[uint32]( + 23, // https://github.com/avalanche-foundation/ACPs/blob/main/ACPs/23-p-chain-native-transfers.md + 24, // https://github.com/avalanche-foundation/ACPs/blob/main/ACPs/24-shanghai-eips.md + 25, // https://github.com/avalanche-foundation/ACPs/blob/main/ACPs/25-vm-application-errors.md + 30, // https://github.com/avalanche-foundation/ACPs/blob/main/ACPs/30-avalanche-warp-x-evm.md + 31, // https://github.com/avalanche-foundation/ACPs/blob/main/ACPs/31-enable-subnet-ownership-transfer.md + 41, // https://github.com/avalanche-foundation/ACPs/blob/main/ACPs/41-remove-pending-stakers.md + 62, // https://github.com/avalanche-foundation/ACPs/blob/main/ACPs/62-disable-addvalidatortx-and-adddelegatortx.md + ) ) diff --git a/version/compatibility.json b/version/compatibility.json index 896b312e3e2..756a6a98139 100644 --- a/version/compatibility.json +++ b/version/compatibility.json @@ -1,4 +1,7 @@ { + "33": [ + "v1.11.0" + ], "31": [ "v1.10.18", "v1.10.19" diff --git a/version/constants.go b/version/constants.go index 238ae5d8c98..87226ff7086 100644 --- a/version/constants.go +++ b/version/constants.go @@ -18,15 +18,15 @@ const ( // RPCChainVMProtocol should be bumped anytime changes are made which // require the plugin vm to upgrade to latest avalanchego release to be // compatible. - RPCChainVMProtocol uint = 31 + RPCChainVMProtocol uint = 33 ) // These are globals that describe network upgrades and node versions var ( Current = &Semantic{ Major: 1, - Minor: 10, - Patch: 19, + Minor: 11, + Patch: 0, } CurrentApp = &Application{ Name: Client, @@ -37,13 +37,13 @@ var ( MinimumCompatibleVersion = &Application{ Name: Client, Major: 1, - Minor: 10, + Minor: 11, Patch: 0, } PrevMinimumCompatibleVersion = &Application{ Name: Client, Major: 1, - Minor: 9, + Minor: 10, Patch: 0, } @@ -136,10 +136,9 @@ var ( constants.FujiID: ids.FromStringOrPanic("2D1cmbiG36BqQMRyHt4kFhWarmatA1ighSpND3FeFgz3vFVtCZ"), } - // TODO: update this before release DurangoTimes = map[uint32]time.Time{ - constants.MainnetID: time.Date(10000, time.December, 1, 0, 0, 0, 0, time.UTC), - constants.FujiID: time.Date(10000, time.December, 1, 0, 0, 0, 0, time.UTC), + constants.MainnetID: time.Date(2024, time.March, 6, 16, 0, 0, 0, time.UTC), + constants.FujiID: time.Date(2024, time.February, 13, 16, 0, 0, 0, time.UTC), } ) @@ -245,7 +244,7 @@ func GetCompatibility(networkID uint32) Compatibility { return NewCompatibility( CurrentApp, MinimumCompatibleVersion, - GetCortinaTime(networkID), + GetDurangoTime(networkID), PrevMinimumCompatibleVersion, ) }