From a8daa7ff3518f90358ded01b33baeb2ded706bc5 Mon Sep 17 00:00:00 2001 From: Austin Larson Date: Thu, 20 Nov 2025 15:46:38 -0500 Subject: [PATCH 1/2] chore: Update avalanchego --- .github/workflows/ci.yml | 4 ++-- core/genesis_extra_test.go | 1 + go.mod | 16 ++++++++-------- go.sum | 32 +++++++++++++++---------------- network/network_test.go | 2 +- params/config.go | 25 +++++++++++++++++++++++- params/extras/config.go | 4 ++++ params/extras/network_upgrades.go | 22 ++++++++++++++++++--- params/paramstest/forks.go | 1 + 9 files changed, 76 insertions(+), 31 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2bce0fd9ae..12a51ac14d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -111,7 +111,7 @@ jobs: path: avalanchego token: ${{ secrets.AVALANCHE_PAT }} - name: Run e2e tests - uses: ava-labs/avalanchego/.github/actions/run-monitored-tmpnet-cmd@6afe371e3b8600986f92432e7da477614c78331b + uses: ava-labs/avalanchego/.github/actions/run-monitored-tmpnet-cmd@df4a8e531761a55d6878d6d2f16e9acb023de19d with: run: ./scripts/run_task.sh test-e2e-ci prometheus_url: ${{ secrets.PROMETHEUS_URL || '' }} @@ -139,7 +139,7 @@ jobs: ref: ${{ github.event.inputs.avalanchegoBranch }} path: avalanchego - name: Run Warp E2E Tests - uses: ava-labs/avalanchego/.github/actions/run-monitored-tmpnet-cmd@6afe371e3b8600986f92432e7da477614c78331b + uses: ava-labs/avalanchego/.github/actions/run-monitored-tmpnet-cmd@df4a8e531761a55d6878d6d2f16e9acb023de19d with: run: ./scripts/run_task.sh test-e2e-warp-ci artifact_prefix: warp diff --git a/core/genesis_extra_test.go b/core/genesis_extra_test.go index dd9d77037d..c8ed0201ef 100644 --- a/core/genesis_extra_test.go +++ b/core/genesis_extra_test.go @@ -119,6 +119,7 @@ func TestGenesisToBlockDecoding(t *testing.T) { upgradetest.Etna: common.HexToHash("0x1094f685d39b737cf599fd599744b9849923a11ea3314826f170b443a87cb0e0"), upgradetest.Fortuna: common.HexToHash("0x1094f685d39b737cf599fd599744b9849923a11ea3314826f170b443a87cb0e0"), upgradetest.Granite: common.HexToHash("0xe870dd86820001c7ca3f2fb9a2f31e1fcfdb17743874a061db8e75425ae7fd23"), + upgradetest.Helicon: common.HexToHash("0xe870dd86820001c7ca3f2fb9a2f31e1fcfdb17743874a061db8e75425ae7fd23"), } for fork, chainConfig := range paramstest.ForkToChainConfig { t.Run(fork.String(), func(t *testing.T) { diff --git a/go.mod b/go.mod index 785010e89c..362d68d81b 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,7 @@ go 1.24.9 require ( github.com/VictoriaMetrics/fastcache v1.12.1 - github.com/ava-labs/avalanchego v1.13.6-0.20251028023847-6afe371e3b86 + github.com/ava-labs/avalanchego v1.14.1-0.20251120155522-df4a8e531761 github.com/ava-labs/firewood-go-ethhash/ffi v0.0.14 github.com/ava-labs/libevm v1.13.15-0.20251016142715-1bccf4f2ddb2 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc @@ -42,9 +42,9 @@ require ( go.uber.org/goleak v1.3.0 go.uber.org/mock v0.5.0 go.uber.org/zap v1.27.0 - golang.org/x/crypto v0.43.0 + golang.org/x/crypto v0.45.0 golang.org/x/exp v0.0.0-20241215155358-4a5509556b9e - golang.org/x/sync v0.17.0 + golang.org/x/sync v0.18.0 golang.org/x/time v0.12.0 google.golang.org/protobuf v1.36.8 gopkg.in/natefinch/lumberjack.v2 v2.0.0 @@ -56,7 +56,7 @@ require ( github.com/BurntSushi/toml v1.5.0 // indirect github.com/DataDog/zstd v1.5.2 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect - github.com/StephenButtolph/canoto v0.17.2 // indirect + github.com/StephenButtolph/canoto v0.17.3 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bits-and-blooms/bitset v1.20.0 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.5 // indirect @@ -158,11 +158,11 @@ require ( go.opentelemetry.io/proto/otlp v1.7.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/mod v0.29.0 // indirect - golang.org/x/net v0.46.0 // indirect + golang.org/x/net v0.47.0 // indirect golang.org/x/oauth2 v0.30.0 // indirect - golang.org/x/sys v0.37.0 // indirect - golang.org/x/term v0.36.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/term v0.37.0 // indirect + golang.org/x/text v0.31.0 // indirect golang.org/x/tools v0.38.0 // indirect gonum.org/v1/gonum v0.16.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 // indirect diff --git a/go.sum b/go.sum index 3a31b5d28f..d67b0ef601 100644 --- a/go.sum +++ b/go.sum @@ -15,8 +15,8 @@ github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKz github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= -github.com/StephenButtolph/canoto v0.17.2 h1:kRLJwtYk0bzdGEeEvwHaVmmDm0HFHxrS0VlVN5Hyo7U= -github.com/StephenButtolph/canoto v0.17.2/go.mod h1:IcnAHC6nJUfQFVR9y60ko2ecUqqHHSB6UwI9NnBFZnE= +github.com/StephenButtolph/canoto v0.17.3 h1:lvsnYD4b96vD1knnmp1xCmZqfYpY/jSeRozGdOfdvGI= +github.com/StephenButtolph/canoto v0.17.3/go.mod h1:IcnAHC6nJUfQFVR9y60ko2ecUqqHHSB6UwI9NnBFZnE= github.com/VictoriaMetrics/fastcache v1.12.1 h1:i0mICQuojGDL3KblA7wUNlY5lOK6a4bwt3uRKnkZU40= github.com/VictoriaMetrics/fastcache v1.12.1/go.mod h1:tX04vaqcNoQeGLD+ra5pU5sWkuxnzWhEzLwhP9w653o= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= @@ -26,8 +26,8 @@ github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/ava-labs/avalanchego v1.13.6-0.20251028023847-6afe371e3b86 h1:Amek9uS/P+Vbso0Sg3QnuLxRQZFBHqtm1AMyKD6UlYQ= -github.com/ava-labs/avalanchego v1.13.6-0.20251028023847-6afe371e3b86/go.mod h1:wEiDa5Lc3oKm9l2AxJOXmLz00Wg7b3hUttgkfzgRoDA= +github.com/ava-labs/avalanchego v1.14.1-0.20251120155522-df4a8e531761 h1:FrsqYm5sms00jWnr8pV9Nj08v1ipYjp1x6p11NIpIBU= +github.com/ava-labs/avalanchego v1.14.1-0.20251120155522-df4a8e531761/go.mod h1:Ntq3RBvDQzNjy14NU3RC2Jf1A9pzfM5RVQ30Gwx/6IM= github.com/ava-labs/firewood-go-ethhash/ffi v0.0.14 h1:Be+LO61hwmo7XKNm57Yoqx7ld8SgBapjVBEPjUcgI8o= github.com/ava-labs/firewood-go-ethhash/ffi v0.0.14/go.mod h1:hR/JSGXxST9B9olwu/NpLXHAykfAyNGfyKnYQqiiOeE= github.com/ava-labs/libevm v1.13.15-0.20251016142715-1bccf4f2ddb2 h1:hQ15IJxY7WOKqeJqCXawsiXh0NZTzmoQOemkWHz7rr4= @@ -568,8 +568,8 @@ golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= -golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= +golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q= +golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20241215155358-4a5509556b9e h1:4qufH0hlUYs6AO6XmZC3GqfDPGSXHVXUFR6OND+iJX4= golang.org/x/exp v0.0.0-20241215155358-4a5509556b9e/go.mod h1:qj5a5QZpwLU2NLQudwIN5koi3beDhSAlJwa67PuM98c= @@ -608,8 +608,8 @@ golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= @@ -621,8 +621,8 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/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.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/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-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -661,12 +661,12 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= 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.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= -golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss= +golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= +golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 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= @@ -674,8 +674,8 @@ golang.org/x/text v0.3.5/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.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= -golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= diff --git a/network/network_test.go b/network/network_test.go index 2240b7eb09..f354f74c49 100644 --- a/network/network_test.go +++ b/network/network_test.go @@ -313,7 +313,7 @@ func TestSyncedAppRequestAnyOnCtxCancellation(t *testing.T) { net.Connected( t.Context(), ids.GenerateTestNodeID(), - version.CurrentApp, + version.Current, ), ) diff --git a/params/config.go b/params/config.go index ed85231172..1b4ff100bf 100644 --- a/params/config.go +++ b/params/config.go @@ -71,7 +71,8 @@ var ( TestDurangoChainConfig, TestEtnaChainConfig, TestFortunaChainConfig, - TestGraniteChainConfig *ChainConfig + TestGraniteChainConfig, + TestHeliconChainConfig *ChainConfig TestRules Rules ) @@ -403,6 +404,28 @@ func initialiseChainConfigs() { extras.TestGraniteChainConfig, ) + TestHeliconChainConfig = WithExtra( + &ChainConfig{ + ChainID: big.NewInt(1), + HomesteadBlock: big.NewInt(0), + DAOForkBlock: big.NewInt(0), + DAOForkSupport: true, + EIP150Block: big.NewInt(0), + EIP155Block: big.NewInt(0), + EIP158Block: big.NewInt(0), + ByzantiumBlock: big.NewInt(0), + ConstantinopleBlock: big.NewInt(0), + PetersburgBlock: big.NewInt(0), + IstanbulBlock: big.NewInt(0), + MuirGlacierBlock: big.NewInt(0), + BerlinBlock: big.NewInt(0), + LondonBlock: big.NewInt(0), + ShanghaiTime: utils.NewUint64(0), + CancunTime: utils.NewUint64(0), + }, + extras.TestHeliconChainConfig, + ) + TestRules = TestChainConfig.Rules(new(big.Int), IsMergeTODO, 0) } diff --git a/params/extras/config.go b/params/extras/config.go index 5472371c5a..4c72be1ea7 100644 --- a/params/extras/config.go +++ b/params/extras/config.go @@ -75,6 +75,10 @@ var ( c.NetworkUpgrades.GraniteTimestamp = utils.NewUint64(0) }) + TestHeliconChainConfig = copyAndSet(TestGraniteChainConfig, func(c *ChainConfig) { + c.NetworkUpgrades.HeliconTimestamp = utils.NewUint64(0) + }) + TestChainConfig = copyConfig(TestGraniteChainConfig) ) diff --git a/params/extras/network_upgrades.go b/params/extras/network_upgrades.go index 57c1b33729..549c158a2d 100644 --- a/params/extras/network_upgrades.go +++ b/params/extras/network_upgrades.go @@ -57,8 +57,10 @@ type NetworkUpgrades struct { EtnaTimestamp *uint64 `json:"etnaTimestamp,omitempty"` // Fortuna modifies the gas price mechanism based on ACP-176 FortunaTimestamp *uint64 `json:"fortunaTimestamp,omitempty"` - // Granite is a placeholder for the next upgrade. + // Granite adds a millisecond timestamp, precompile updates, and P-Chain epochs GraniteTimestamp *uint64 `json:"graniteTimestamp,omitempty"` + // Helicon is a placeholder for a future upgrade + HeliconTimestamp *uint64 `json:"heliconTimestamp,omitempty"` } func (n *NetworkUpgrades) Equal(other *NetworkUpgrades) bool { @@ -108,6 +110,9 @@ func (n *NetworkUpgrades) checkNetworkUpgradesCompatible(newcfg *NetworkUpgrades if isForkTimestampIncompatible(n.GraniteTimestamp, newcfg.GraniteTimestamp, time) { return ethparams.NewTimestampCompatError("Granite fork block timestamp", n.GraniteTimestamp, newcfg.GraniteTimestamp) } + if isForkTimestampIncompatible(n.HeliconTimestamp, newcfg.HeliconTimestamp, time) { + return ethparams.NewTimestampCompatError("Helicon fork block timestamp", n.HeliconTimestamp, newcfg.HeliconTimestamp) + } return nil } @@ -128,6 +133,7 @@ func (n *NetworkUpgrades) forkOrder() []fork { {name: "etnaTimestamp", timestamp: n.EtnaTimestamp}, {name: "fortunaTimestamp", timestamp: n.FortunaTimestamp}, {name: "graniteTimestamp", timestamp: n.GraniteTimestamp}, + {name: "heliconTimestamp", timestamp: n.HeliconTimestamp}, } } @@ -215,6 +221,12 @@ func (n *NetworkUpgrades) IsGranite(time uint64) bool { return isTimestampForked(n.GraniteTimestamp, time) } +// IsHelicon returns whether [time] represents a block +// with a timestamp after the Helicon upgrade time. +func (n *NetworkUpgrades) IsHelicon(time uint64) bool { + return isTimestampForked(n.HeliconTimestamp, time) +} + func (n NetworkUpgrades) Description() string { var banner string banner += fmt.Sprintf(" - Apricot Phase 1 Timestamp: @%-10v (https://github.com/ava-labs/avalanchego/releases/tag/v1.3.0)\n", ptrToString(n.ApricotPhase1BlockTimestamp)) @@ -224,13 +236,14 @@ func (n NetworkUpgrades) Description() string { banner += fmt.Sprintf(" - Apricot Phase 5 Timestamp: @%-10v (https://github.com/ava-labs/avalanchego/releases/tag/v1.7.0)\n", ptrToString(n.ApricotPhase5BlockTimestamp)) banner += fmt.Sprintf(" - Apricot Phase P6 Timestamp @%-10v (https://github.com/ava-labs/avalanchego/releases/tag/v1.8.0)\n", ptrToString(n.ApricotPhasePre6BlockTimestamp)) banner += fmt.Sprintf(" - Apricot Phase 6 Timestamp: @%-10v (https://github.com/ava-labs/avalanchego/releases/tag/v1.8.0)\n", ptrToString(n.ApricotPhase6BlockTimestamp)) - banner += fmt.Sprintf(" - Apricot Phase Post-6 Timestamp: @%-10v (https://github.com/ava-labs/avalanchego/releases/tag/v1.8.0\n", ptrToString(n.ApricotPhasePost6BlockTimestamp)) + banner += fmt.Sprintf(" - Apricot Phase Post-6 Timestamp: @%-10v (https://github.com/ava-labs/avalanchego/releases/tag/v1.8.0)\n", ptrToString(n.ApricotPhasePost6BlockTimestamp)) banner += fmt.Sprintf(" - Banff Timestamp: @%-10v (https://github.com/ava-labs/avalanchego/releases/tag/v1.9.0)\n", ptrToString(n.BanffBlockTimestamp)) banner += fmt.Sprintf(" - Cortina Timestamp: @%-10v (https://github.com/ava-labs/avalanchego/releases/tag/v1.10.0)\n", ptrToString(n.CortinaBlockTimestamp)) banner += fmt.Sprintf(" - Durango Timestamp: @%-10v (https://github.com/ava-labs/avalanchego/releases/tag/v1.11.0)\n", ptrToString(n.DurangoBlockTimestamp)) banner += fmt.Sprintf(" - Etna Timestamp: @%-10v (https://github.com/ava-labs/avalanchego/releases/tag/v1.12.0)\n", ptrToString(n.EtnaTimestamp)) banner += fmt.Sprintf(" - Fortuna Timestamp: @%-10v (https://github.com/ava-labs/avalanchego/releases/tag/v1.13.0)\n", ptrToString(n.FortunaTimestamp)) - banner += fmt.Sprintf(" - Granite Timestamp: @%-10v (Unscheduled)\n", ptrToString(n.GraniteTimestamp)) + banner += fmt.Sprintf(" - Granite Timestamp: @%-10v (https://github.com/ava-labs/avalanchego/releases/tag/v1.14.0)\n", ptrToString(n.GraniteTimestamp)) + banner += fmt.Sprintf(" - Helicon Timestamp: @%-10v (Unscheduled)\n", ptrToString(n.HeliconTimestamp)) return banner } @@ -250,6 +263,7 @@ func GetNetworkUpgrades(agoUpgrade upgrade.Config) NetworkUpgrades { EtnaTimestamp: utils.TimeToNewUint64(agoUpgrade.EtnaTime), FortunaTimestamp: utils.TimeToNewUint64(agoUpgrade.FortunaTime), GraniteTimestamp: utils.TimeToNewUint64(agoUpgrade.GraniteTime), + HeliconTimestamp: utils.TimeToNewUint64(agoUpgrade.HeliconTime), } } @@ -262,6 +276,7 @@ type AvalancheRules struct { IsEtna bool IsFortuna bool IsGranite bool + IsHelicon bool } // IsGraniteActivated is used by the warp precompile to determine which gas costs to use. @@ -285,6 +300,7 @@ func (n *NetworkUpgrades) GetAvalancheRules(timestamp uint64) AvalancheRules { IsEtna: n.IsEtna(timestamp), IsFortuna: n.IsFortuna(timestamp), IsGranite: n.IsGranite(timestamp), + IsHelicon: n.IsHelicon(timestamp), } } diff --git a/params/paramstest/forks.go b/params/paramstest/forks.go index 13e9072a52..4477127a57 100644 --- a/params/paramstest/forks.go +++ b/params/paramstest/forks.go @@ -24,4 +24,5 @@ var ForkToChainConfig = map[upgradetest.Fork]*params.ChainConfig{ upgradetest.Etna: params.TestEtnaChainConfig, upgradetest.Fortuna: params.TestFortunaChainConfig, upgradetest.Granite: params.TestGraniteChainConfig, + upgradetest.Helicon: params.TestHeliconChainConfig, } From ade1ab2989080dce4165ef529f446305c52799b3 Mon Sep 17 00:00:00 2001 From: Austin Larson Date: Fri, 21 Nov 2025 09:54:43 -0500 Subject: [PATCH 2/2] fix: comments --- eth/tracers/api.go | 4 ++++ params/extras/config.go | 2 +- params/extras/network_upgrades.go | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/eth/tracers/api.go b/eth/tracers/api.go index 08775465ee..0618c796e5 100644 --- a/eth/tracers/api.go +++ b/eth/tracers/api.go @@ -1133,6 +1133,10 @@ func overrideConfig(original *params.ChainConfig, override *params.ChainConfig) params.GetExtra(copy).GraniteTimestamp = timestamp canon = false } + if timestamp := overrideExtra.HeliconTimestamp; timestamp != nil { + params.GetExtra(copy).HeliconTimestamp = timestamp + canon = false + } if timestamp := override.CancunTime; timestamp != nil { copy.CancunTime = timestamp canon = false diff --git a/params/extras/config.go b/params/extras/config.go index 4c72be1ea7..2a99e9e39e 100644 --- a/params/extras/config.go +++ b/params/extras/config.go @@ -79,7 +79,7 @@ var ( c.NetworkUpgrades.HeliconTimestamp = utils.NewUint64(0) }) - TestChainConfig = copyConfig(TestGraniteChainConfig) + TestChainConfig = copyConfig(TestHeliconChainConfig) ) func copyConfig(c *ChainConfig) *ChainConfig { diff --git a/params/extras/network_upgrades.go b/params/extras/network_upgrades.go index 549c158a2d..e0f8706268 100644 --- a/params/extras/network_upgrades.go +++ b/params/extras/network_upgrades.go @@ -59,7 +59,7 @@ type NetworkUpgrades struct { FortunaTimestamp *uint64 `json:"fortunaTimestamp,omitempty"` // Granite adds a millisecond timestamp, precompile updates, and P-Chain epochs GraniteTimestamp *uint64 `json:"graniteTimestamp,omitempty"` - // Helicon is a placeholder for a future upgrade + // Helicon is a placeholder for the next upgrade HeliconTimestamp *uint64 `json:"heliconTimestamp,omitempty"` }