Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
6 changes: 3 additions & 3 deletions blueprints/ethereum/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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"
Expand Down
2 changes: 1 addition & 1 deletion blueprints/ethereum/samples/.env-mainnet-besu-teku-full
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ cat > "$CONFIG_FILE" <<TOML_EOF

user = "bcuser"

dynamic_port_range = "8004-8029"
dynamic_port_range = "8004-8040"

[log]
path = "-"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ cat > "$CONFIG_FILE" <<TOML_EOF

user = "bcuser"

dynamic_port_range = "8004-8029"
dynamic_port_range = "8004-8040"

[log]
path = "-"
Expand Down
8 changes: 4 additions & 4 deletions blueprints/solana/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,10 @@
"name": "agave-3.1.14-rpc-extended.sh"
},
{
"name": "frankendancer-0.1006.40100-rpc-base.sh"
"name": "frankendancer-0.1105.40200-rpc-base.sh"
},
{
"name": "frankendancer-0.1006.40100-rpc-extended.sh"
"name": "frankendancer-0.1105.40200-rpc-extended.sh"
}
],
"BC_NETWORKS": [
Expand Down Expand Up @@ -63,7 +63,7 @@
{
"portRange": {
"from": 8001,
"to": 8029
"to": 8040
},
"protocol": "tcp",
"description": "Gossip + dynamic port range",
Expand All @@ -72,7 +72,7 @@
{
"portRange": {
"from": 8001,
"to": 8029
"to": 8040
},
"protocol": "udp",
"description": "Gossip UDP + dynamic port range",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ AWS_REGION="us-east-1"
BLOCKCHAIN_PROTOCOL="solana"
DEPLOYMENT_MODE="single-node"
BC_NETWORK="mainnet-beta"
CLIENT_CONFIG="frankendancer-0.1006.40100-rpc-base.sh"
CLIENT_CONFIG="frankendancer-0.1105.40200-rpc-base.sh"

# Instance Configuration
# i7i.12xlarge: 48 vCPUs, 384 GB RAM, 2x 3.84 TB NVMe instance store
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ AWS_REGION="us-east-1"
BLOCKCHAIN_PROTOCOL="solana"
DEPLOYMENT_MODE="ha-nodes"
BC_NETWORK="mainnet-beta"
CLIENT_CONFIG="frankendancer-0.1006.40100-rpc-base.sh"
CLIENT_CONFIG="frankendancer-0.1105.40200-rpc-base.sh"

# Instance Configuration
INSTANCE_TYPE="i7i.12xlarge"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ AWS_REGION="us-east-1"
BLOCKCHAIN_PROTOCOL="solana"
DEPLOYMENT_MODE="single-node"
BC_NETWORK="mainnet-beta"
CLIENT_CONFIG="frankendancer-0.1006.40100-rpc-extended.sh"
CLIENT_CONFIG="frankendancer-0.1105.40200-rpc-extended.sh"

# Instance Configuration
# i7i.24xlarge: 96 vCPUs, 768 GB RAM (required for account indexing)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ AWS_REGION="us-east-1"
BLOCKCHAIN_PROTOCOL="solana"
DEPLOYMENT_MODE="single-node"
BC_NETWORK="testnet"
CLIENT_CONFIG="frankendancer-0.1006.40100-rpc-base.sh"
CLIENT_CONFIG="frankendancer-0.1105.40200-rpc-base.sh"

# Instance Configuration
# Smaller instance acceptable for testnet
Expand Down
2 changes: 1 addition & 1 deletion blueprints/solana/user-data/node.sh
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ echo "Detected client type: $CLIENT_TYPE"
# "agave-3.1.14-rpc-base.sh" -> "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"
Expand Down
2 changes: 1 addition & 1 deletion lib/interfaces/protocol-config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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.
*/
Expand Down
4 changes: 2 additions & 2 deletions test/integration/ethereum-configuration.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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();
});
Expand Down Expand Up @@ -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', () => {
Expand Down
8 changes: 4 additions & 4 deletions test/integration/solana-configuration.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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();
});
Expand Down Expand Up @@ -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);
});

Expand Down
Loading