Skip to content

Update Geth v1.15.11 and Prysm v6.0.4#35

Open
rzmahmood wants to merge 6 commits into
mainfrom
update-geth-prysm-latest
Open

Update Geth v1.15.11 and Prysm v6.0.4#35
rzmahmood wants to merge 6 commits into
mainfrom
update-geth-prysm-latest

Conversation

@rzmahmood
Copy link
Copy Markdown
Owner

@rzmahmood rzmahmood commented Jun 23, 2025

Summary

Updates the ethereum-pos-testnet to use the latest stable versions of Go-Ethereum and Prysm, with necessary compatibility fixes for breaking changes.

Changes Made

Submodule Updates

  • Go-Ethereum: Updated from v1.14.12 to v1.15.11
  • Prysm: Updated from v5.1.2 to v6.0.4

Breaking Changes Fixed

1. Bootnode Binary Removal

  • Issue: Go-Ethereum removed the standalone bootnode binary in newer versions
  • Solution: Modified testnet.sh to use the first geth node as the bootnode
  • Implementation:
    • First node starts without --bootnodes flag
    • Subsequent nodes use the first node's enode via admin_nodeInfo API call
    • Added admin API to first node's HTTP interface for enode discovery

2. Prysm Configuration Approach

  • Issue: Prysm v6.0.4 has stricter fork version validation
  • Solution: Added ethpandaops-inspired configuration generation approach
  • Benefits:
    • Uses proven fork version patterns from production testnets
    • Provides fallback configuration when advanced tools unavailable
    • Follows industry standard practices

Test Status

✅ Successfully Completed

  • Dependencies build without errors (./build-dependencies.sh)
  • Submodules updated to latest stable versions
  • Bootnode functionality replaced with peer-to-peer discovery
  • Enhanced documentation with setup instructions

⚠️ Known Limitation

Genesis generation in Prysm v6.0.4 may have issues with certain configurations. For production use, consider using ethereum-genesis-generator tool as used by Kurtosis and ethpandaops.

Files Changed

  • dependencies/go-ethereum/ - Updated to v1.15.11
  • dependencies/prysm/ - Updated to v6.0.4
  • testnet.sh - Bootnode logic replacement and configuration improvements
  • CLAUDE.md - Enhanced documentation for development

Impact

  • Future-proof: Latest stable versions with security fixes
  • Improved Architecture: Eliminated external bootnode dependency
  • Better Documentation: Updated setup instructions
  • Industry Alignment: Configuration approach follows ethpandaops patterns

Migration

Existing testnets will need to be recreated due to bootnode architecture change. Build process remains the same: ./build-dependencies.sh then ./testnet.sh.

- Updated go-ethereum submodule from v1.14.12 to v1.15.11
- Updated prysm submodule from v5.1.2 to v6.0.4
- Fixed testnet.sh to use first geth node as bootnode (bootnode binary removed)
- Added fallback configuration for Prysm v6.0.4 compatibility
- Updated CLAUDE.md documentation
@rzmahmood rzmahmood force-pushed the update-geth-prysm-latest branch from c57b4df to 3498bf8 Compare June 23, 2025 07:19
@rzmahmood rzmahmood changed the title Geth v1.15.11 and Prysm v6.0.4 Update Geth v1.15.11 and Prysm v6.0.4 Jun 23, 2025
rzmahmood and others added 5 commits June 23, 2025 18:14
- Update go-ethereum submodule to v1.15.11
- Update prysm submodule to v6.0.4
- Add eth-beacon-genesis submodule for genesis generation
- Fix testnet.sh to use first geth node as bootnode
- Add ethpandaops-config.yml with proper CONFIG_NAME
- Update genesis.json with blobSchedule for Cancun fork
- Modify build-dependencies.sh to build eth-beacon-genesis
- Enable all mainnet hardforks up to Electra from genesis

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Update build-dependencies.sh to use Go instead of Bazel for Prysm
- Update testnet.sh to use Go-built binaries
- Remove Bazel installation from CI workflow
- Update README to reflect Go 1.23+ requirement only
- Simplifies setup for developers and CI environments

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Restore Bazel dependency in build-dependencies.sh
- Update testnet.sh to use Bazel binary paths
- Add Bazel installation back to CI workflow
- Update README to include Bazel requirement
- Follow official Prysm installation recommendations

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add correct eth-beacon-genesis submodule from ethpandaops/eth-beacon-genesis
- Fix build dependencies script to work with all submodules
- Resolve CI submodule checkout failures

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Set MIN_SYNC_PEERS=0 for local testnets so validators can start
producing blocks immediately without waiting for peer synchronization.
This is appropriate for development environments where we want instant
block production.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant