diff --git a/CHANGELOG.md b/CHANGELOG.md index b9da2f71..c92b9776 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,8 @@ ### Changed - **BNB Chain**: bumped BSC Geth `v1.7.3` → `v1.7.7` for the BSC mainnet **Pasteur hardfork** (activates 2026-08-25 02:30 UTC; mandatory for all mainnet nodes before then). No blueprint CLI-flag changes are needed: the flags removed/deprecated in the Pasteur line (`--multidatabase`, `--fake-beacon*`) and the load-breaking `[Eth] EnableBAL` config.toml field are not used by the blueprint, and `config.toml` is fetched fresh from the release. Requires a fresh deploy per the replace-the-instance upgrade model. +- **Ethereum**: bumped Besu `26.7.0` → `26.7.1` (security release closing unbounded-memory-growth paths in JSON-RPC filters/subscriptions; the new `--rpc-max-active-filters`, `--rpc-filter-timeout-seconds`, and `--rpc-ws-max-active-subscriptions` options ship as defaults only and are not set by the blueprint, so no flag changes) and Geth `1.17.4` → `1.17.5` (maintenance release; Pebble v2 is used only for from-scratch datadirs and falls back to Pebble v1 for a pre-existing database, so there is no forced migration — `--db.engine=pebble` is unchanged; note the upstream default GOGC change 20 → 50 raises the memory peak). Configuration file names and matching `samples/` were updated accordingly. +- **Solana**: bumped Frankendancer `0.1006.40100` → `0.1105.40200` (latest Frankendancer mainnet release; updates the bundled Agave submodule to `v4.2.0` plus minor improvements and security fixes). This stays on the **Frankendancer `0.xxxx` line** — the hybrid client (Firedancer networking/block-production frontend running the Agave runtime as a subprocess) that this blueprint builds via `make fdctl solana`. The full-Firedancer `1.x` line is a separate client with a different runtime (native `diag` tile, no Agave subprocess) and is intentionally not used here. This release bumps the bundled Agave submodule to `v4.2.0`, which requires a slightly larger validator dynamic port range, so the generated `fdctl` TOML `dynamic_port_range` was widened `8004-8029` → `8004-8040` and the Solana security-group range `8001-8029` → `8001-8040` to match. - **Ethereum**: bumped patch versions — Nethermind `1.39.2` → `1.39.3`, Erigon `3.5.3` → `3.5.4`, and Prysm `7.1.7` → `7.1.8`. All three are drop-in upgrades within the same release series with no blueprint CLI flag changes; configuration file names and matching `samples/` were updated accordingly. - **Ethereum**: bumped client versions — Geth `1.17.3` → `1.17.4`, Erigon `3.4.3` → `3.5.3`, Prysm `7.1.5` → `7.1.7`, and Besu `26.6.1` → `26.7.0`. Configuration file names and matching `samples/` were updated accordingly. (Nethermind and Teku are covered under Security above.) - **Ethereum**: upgraded the Reth archive configuration to Reth `1.10.2` → `2.4.1` and Lighthouse `8.1.3` → `8.2.1` (`reth-2.4.1-lighthouse-8.2.1-archive.yml`). Reth 2.x makes **Storage V2** the default; there is no in-place upgrade for an existing Reth v1 datadir, so upgrading requires deploying a new node and resyncing (consistent with the blueprint's replace-the-instance upgrade model). Reth 2.2 also enables Discv5 discovery by default. No blueprint CLI flags changed. diff --git a/blueprints/ethereum/configurations/besu-26.7.0-teku-26.7.1-full.yml b/blueprints/ethereum/configurations/besu-26.7.1-teku-26.7.1-full.yml similarity index 98% rename from blueprints/ethereum/configurations/besu-26.7.0-teku-26.7.1-full.yml rename to blueprints/ethereum/configurations/besu-26.7.1-teku-26.7.1-full.yml index 3bfffa8a..96dbfba3 100644 --- a/blueprints/ethereum/configurations/besu-26.7.0-teku-26.7.1-full.yml +++ b/blueprints/ethereum/configurations/besu-26.7.1-teku-26.7.1-full.yml @@ -5,7 +5,7 @@ version: "3" services: execution: - image: hyperledger/besu:26.7.0 + image: hyperledger/besu:26.7.1 container_name: execution restart: always command: diff --git a/blueprints/ethereum/configurations/geth-1.17.4-lighthouse-8.2.1-full.yml b/blueprints/ethereum/configurations/geth-1.17.5-lighthouse-8.2.1-full.yml similarity index 98% rename from blueprints/ethereum/configurations/geth-1.17.4-lighthouse-8.2.1-full.yml rename to blueprints/ethereum/configurations/geth-1.17.5-lighthouse-8.2.1-full.yml index 5ea3e288..6163a4ca 100644 --- a/blueprints/ethereum/configurations/geth-1.17.4-lighthouse-8.2.1-full.yml +++ b/blueprints/ethereum/configurations/geth-1.17.5-lighthouse-8.2.1-full.yml @@ -5,7 +5,7 @@ version: "3" services: execution: - image: ethereum/client-go:v1.17.4 + image: ethereum/client-go:v1.17.5 container_name: execution restart: always command: diff --git a/blueprints/ethereum/package.json b/blueprints/ethereum/package.json index ba728876..3875c068 100644 --- a/blueprints/ethereum/package.json +++ b/blueprints/ethereum/package.json @@ -11,10 +11,10 @@ "single-node", "ha-nodes" ], - "defaultConfiguration": "geth-1.17.4-lighthouse-8.2.1-full.yml", + "defaultConfiguration": "geth-1.17.5-lighthouse-8.2.1-full.yml", "availableConfigurations": [ { - "name": "geth-1.17.4-lighthouse-8.2.1-full.yml" + "name": "geth-1.17.5-lighthouse-8.2.1-full.yml" }, { "name": "reth-2.4.1-lighthouse-8.2.1-archive.yml" @@ -26,7 +26,7 @@ "name": "erigon-3.5.4-prysm-7.1.8-archive.yml" }, { - "name": "besu-26.7.0-teku-26.7.1-full.yml" + "name": "besu-26.7.1-teku-26.7.1-full.yml" }, { "name": "nethermind-1.39.3-teku-26.7.1-full.yml" diff --git a/blueprints/ethereum/samples/.env-mainnet-besu-teku-full b/blueprints/ethereum/samples/.env-mainnet-besu-teku-full index 5dae8f1f..753d9a2f 100644 --- a/blueprints/ethereum/samples/.env-mainnet-besu-teku-full +++ b/blueprints/ethereum/samples/.env-mainnet-besu-teku-full @@ -16,7 +16,7 @@ AWS_REGION="us-east-1" BLOCKCHAIN_PROTOCOL="ethereum" DEPLOYMENT_MODE="single-node" BC_NETWORK="mainnet" -CLIENT_CONFIG="besu-26.7.0-teku-26.7.1-full.yml" +CLIENT_CONFIG="besu-26.7.1-teku-26.7.1-full.yml" # Instance Configuration INSTANCE_TYPE="r7g.2xlarge" diff --git a/blueprints/ethereum/samples/.env-mainnet-geth-lighthouse-full b/blueprints/ethereum/samples/.env-mainnet-geth-lighthouse-full index a73d42f9..15a39ce8 100644 --- a/blueprints/ethereum/samples/.env-mainnet-geth-lighthouse-full +++ b/blueprints/ethereum/samples/.env-mainnet-geth-lighthouse-full @@ -16,7 +16,7 @@ AWS_REGION="us-east-1" BLOCKCHAIN_PROTOCOL="ethereum" DEPLOYMENT_MODE="single-node" BC_NETWORK="mainnet" -CLIENT_CONFIG="geth-1.17.4-lighthouse-8.2.1-full.yml" +CLIENT_CONFIG="geth-1.17.5-lighthouse-8.2.1-full.yml" # Instance Configuration INSTANCE_TYPE="r7g.2xlarge" diff --git a/blueprints/ethereum/samples/.env-mainnet-geth-lighthouse-full-ha b/blueprints/ethereum/samples/.env-mainnet-geth-lighthouse-full-ha index 5e491e5b..dc154fe0 100644 --- a/blueprints/ethereum/samples/.env-mainnet-geth-lighthouse-full-ha +++ b/blueprints/ethereum/samples/.env-mainnet-geth-lighthouse-full-ha @@ -17,7 +17,7 @@ AWS_REGION="us-east-1" BLOCKCHAIN_PROTOCOL="ethereum" DEPLOYMENT_MODE="ha-nodes" BC_NETWORK="mainnet" -CLIENT_CONFIG="geth-1.17.4-lighthouse-8.2.1-full.yml" +CLIENT_CONFIG="geth-1.17.5-lighthouse-8.2.1-full.yml" # Instance Configuration INSTANCE_TYPE="r7g.2xlarge" diff --git a/blueprints/ethereum/samples/.env-sepolia-geth-lighthouse-full b/blueprints/ethereum/samples/.env-sepolia-geth-lighthouse-full index 0258d9f3..b9d634e2 100644 --- a/blueprints/ethereum/samples/.env-sepolia-geth-lighthouse-full +++ b/blueprints/ethereum/samples/.env-sepolia-geth-lighthouse-full @@ -16,7 +16,7 @@ AWS_REGION="us-east-1" BLOCKCHAIN_PROTOCOL="ethereum" DEPLOYMENT_MODE="single-node" BC_NETWORK="sepolia" -CLIENT_CONFIG="geth-1.17.4-lighthouse-8.2.1-full.yml" +CLIENT_CONFIG="geth-1.17.5-lighthouse-8.2.1-full.yml" # Instance Configuration # Smaller instance for testnet diff --git a/blueprints/solana/configurations/frankendancer-0.1006.40100-rpc-base.sh b/blueprints/solana/configurations/frankendancer-0.1105.40200-rpc-base.sh similarity index 99% rename from blueprints/solana/configurations/frankendancer-0.1006.40100-rpc-base.sh rename to blueprints/solana/configurations/frankendancer-0.1105.40200-rpc-base.sh index 58708e49..f266742c 100644 --- a/blueprints/solana/configurations/frankendancer-0.1006.40100-rpc-base.sh +++ b/blueprints/solana/configurations/frankendancer-0.1105.40200-rpc-base.sh @@ -96,7 +96,7 @@ cat > "$CONFIG_FILE" < "$CONFIG_FILE" < "3.1.14" # "agave-4.0.3-rpc-extended.sh" -> "4.0.3" # "agave-4.1.2-rpc-base.sh" -> "4.1.2" -# "frankendancer-0.1006.40100-rpc-base.sh" -> "0.1006.40100" +# "frankendancer-0.1105.40200-rpc-base.sh" -> "0.1105.40200" BUILD_VERSION=$(echo "$CLIENT_CONFIG" | sed -E 's/^[a-z]+-(.+)-rpc-(base|extended)\.sh$/\1/') if [ -z "$BUILD_VERSION" ] || [ "$BUILD_VERSION" = "$CLIENT_CONFIG" ]; then echo "ERROR: Could not parse client version from CLIENT_CONFIG: $CLIENT_CONFIG" diff --git a/lib/interfaces/protocol-config.ts b/lib/interfaces/protocol-config.ts index 5e097144..d559ab64 100644 --- a/lib/interfaces/protocol-config.ts +++ b/lib/interfaces/protocol-config.ts @@ -11,7 +11,7 @@ import { DeploymentMode, CpuType } from './enums'; * Configuration for a specific blockchain client/version combination. * * The client version is encoded in the configuration file name (e.g. - * `geth-1.17.4-lighthouse-8.2.1-full.yml`), which is the single source of + * `geth-1.17.5-lighthouse-8.2.1-full.yml`), which is the single source of * truth. There is intentionally no separate `version` field to avoid * duplicating the version string. */ diff --git a/test/integration/ethereum-configuration.test.ts b/test/integration/ethereum-configuration.test.ts index 036e6b1c..33159476 100644 --- a/test/integration/ethereum-configuration.test.ts +++ b/test/integration/ethereum-configuration.test.ts @@ -35,7 +35,7 @@ describe('Ethereum Protocol Configuration', () => { expect(protocolConfig.availableConfigurations.length).toBeGreaterThan(0); const gethLighthouse = protocolConfig.availableConfigurations.find( - c => c.name === 'geth-1.17.4-lighthouse-8.2.1-full.yml' + c => c.name === 'geth-1.17.5-lighthouse-8.2.1-full.yml' ); expect(gethLighthouse).toBeDefined(); }); @@ -78,7 +78,7 @@ describe('Ethereum Protocol Configuration', () => { expect(envConfig.BLOCKCHAIN_PROTOCOL).toBe('ethereum'); expect(envConfig.DEPLOYMENT_MODE).toBe(DeploymentMode.SINGLE_NODE); expect(envConfig.BC_NETWORK).toBe('mainnet'); - expect(envConfig.CLIENT_CONFIG).toBe('geth-1.17.4-lighthouse-8.2.1-full.yml'); + expect(envConfig.CLIENT_CONFIG).toBe('geth-1.17.5-lighthouse-8.2.1-full.yml'); }); it('should have custom ETH variables', () => { diff --git a/test/integration/solana-configuration.test.ts b/test/integration/solana-configuration.test.ts index cbcff9dd..c0acc7a7 100644 --- a/test/integration/solana-configuration.test.ts +++ b/test/integration/solana-configuration.test.ts @@ -74,12 +74,12 @@ describe('Solana Protocol Configuration', () => { expect(agave412Extended).toBeDefined(); const fdBase = protocolConfig.availableConfigurations.find( - c => c.name === 'frankendancer-0.1006.40100-rpc-base.sh' + c => c.name === 'frankendancer-0.1105.40200-rpc-base.sh' ); expect(fdBase).toBeDefined(); const fdExtended = protocolConfig.availableConfigurations.find( - c => c.name === 'frankendancer-0.1006.40100-rpc-extended.sh' + c => c.name === 'frankendancer-0.1105.40200-rpc-extended.sh' ); expect(fdExtended).toBeDefined(); }); @@ -112,14 +112,14 @@ describe('Solana Protocol Configuration', () => { p => p.portRange?.from === 8001 && p.protocol === 'tcp' ); expect(gossipTcp).toBeDefined(); - expect(gossipTcp?.portRange?.to).toBe(8029); + expect(gossipTcp?.portRange?.to).toBe(8040); expect(gossipTcp?.public).toBe(true); const gossipUdp = protocolConfig.requiredPorts.find( p => p.portRange?.from === 8001 && p.protocol === 'udp' ); expect(gossipUdp).toBeDefined(); - expect(gossipUdp?.portRange?.to).toBe(8029); + expect(gossipUdp?.portRange?.to).toBe(8040); expect(gossipUdp?.public).toBe(true); });