Delete the old slog-based log package (format.go, handler.go,
handler_glog.go, logger.go, root.go) which initialized with
DiscardHandler — silently swallowing all log output including Crit
messages before calling os.Exit(1). This caused the EVM plugin
subprocess to die with no trace.
Replace with a thin bridge package (log/log.go) that re-exports
github.com/luxfi/log, ensuring:
- All geth log.Crit/Fatal calls properly log to stderr before exiting
- Default logger writes to stderr (not /dev/null)
- slog.Handler shims for backward compatibility
Also rewrite all 249 source files to import luxfi/log directly.
Pulls 35 upstream commits with fixes and improvements:
- cmd/utils: fix DeveloperFlag handling when set to false
- core/stateless: cap witness depth metrics buckets
- eth/fetcher: add metadata validation in tx announcement
- triedb/pathdb: use copy instead of append to reduce memory alloc
- core/rawdb: fix size counting in memory freezer
- p2p/tracker: fix head detection in Fulfil
- eth/tracers/native: include SWAP16 in default ignored opcodes
- core/state: fix incorrect contract code state metrics
- eth/downloader: keep current syncmode in downloader only
- core/vm: fix PC increment for EIP-8024 opcodes
- common/bitutil: deprecate XORBytes in favor of stdlib crypto/subtle
- ethdb/pebble: change the Pebble database configuration
- eth/filters: change error code for invalid parameter errors
- beacon/types: update for fulu
- core: log detailed statistics for slow block
All luxfi packages preserved (crypto, node, ids).
Externalize kzg4844 to luxfi/crypto package for consistent crypto
usage across all luxfi packages. The internal crypto/kzg4844 directory
is removed as it's now provided by luxfi/crypto.
Also updates Go to 1.25.5 and luxfi/crypto to v1.17.15.
Notable upstream changes:
- Remove tablewriter dependency, use internal implementation
- Add history index iterator for pathdb
- EIP updates and memory improvements in VM
- Enhanced blob pool conversion
- Various beacon/consensus updates
This PR adds the "FULU" beacon chain config entries for all networks and
fixes the select statements that choose the appropriate engine API call
versions (no new version there but the "default" was always the first
version; now it's the latest version so no need to change unless there
is actually a new version).
New beacon checkpoints are also added for mainnet, sepolia and hoodi
(not for holesky because it's not finalizing at the moment).
Note that though unrelated to fusaka, the log indexer checkpoints are
also updated for mainnet (not for the other testnets, mainly because I
only have mainnet synced here on my travel SSD; this should be fine
though because the index is also reverse generated for a year by default
so it does not really affect the indexing time)
Links for the new checkpoints:
https://beaconcha.in/slot/13108192https://light-sepolia.beaconcha.in/slot/9032384https://hoodi.beaconcha.in/slot/1825728
2025-11-26 11:07:56 +01:00
Hanzo DevandEthereum Foundation <https://github.com/ethereum/go-ethereum>
Merged upstream changes from go-ethereum master branch (commit fb3c8f462)
while preserving luxfi branding and package structure.
Key changes:
- Updated to go-ethereum v1.16.6 (patch version bump from v1.16.5)
- Preserved luxfi module name (github.com/luxfi/geth)
- Preserved luxfi branding in LICENSE (Lux Industries Inc.)
- Maintained LuxMainnetChainConfig and LuxTestnetChainConfig
- All import paths use github.com/luxfi/geth (not ethereum)
- Added Lux genesis hashes for network identification
- Integrated new upstream features:
* Enhanced blob pool with conversion support
* New keccak256 preimage tracer
* Transaction pool validation improvements
* State sizing utilities
* Filter system enhancements
* Various performance and stability improvements
Build verified: geth v1.16.6-unstable compiled successfully
Co-authored-by: Ethereum Foundation <https://github.com/ethereum/go-ethereum>
This adds two new CI targets. One is for building all supported keeper
executables, the other is for running unit tests on 32-bit Linux.
---------
Co-authored-by: Felix Lange <fjl@twurst.com>
- Added short mode support for long tests
- Fixed goroutine leaks in snapshot generation
- Disabled sender cacher during tests
- Added proper test cleanup
- All core packages now pass with -short flag
This PR improves `TestBlockSync` so that it also tests the finality
update validation.
Note: to this date four long and complex (at least partly AI generated)
PRs arrived that did something related to testing finality but honestly
we do not need a bloated "comprehensive" test to test a trivial feature
because maintaining these tests can also be a pain over the long term.
This PR adds some sufficient sanity checks to detect if finality ever
gets broken by a future change.
Merged changes include:
- beacon/config: fix LoadForks with non-string values
- eth/filters: configurable address limit for eth_getLogs
- eth/catalyst: enable BPO and Osaka on stateless APIs
- tests: update to execution-spec-tests v5.0.0
All imports updated to use luxfi packages
Fixes a crash when loading the beacon chain config if new fields like
`BLOB_SCHEDULE: []` are present.
Previously, the config loader assumed all values were strings, causing
errors such as:
```
Fatal: Could not load beacon chain config '/network-configs/config.yaml': failed to parse beacon chain config file: yaml: unmarshal errors:
line 242: cannot unmarshal !!seq into string
```
This PR updates the parsing logic to handle non-string values correctly
and adds explicit validation for fork fields.
Addresses https://github.com/ethereum/go-ethereum/issues/32630
This pull request enables the stateless engine APIs for Osaka and the
following BPOs. Apart from that, a few more descriptions have been added
in the engine APIs, making it easier to follow the spec change.
The main purpose of this change is to enforce the version setting when
constructing the blobSidecar, avoiding creating sidecar with wrong/default
version tag.
This PR adds a new `--beacon.checkpoint.file` config flag to geth and
blsync which specifies a checkpoint import/export file. If a file with
an existing checkpoint is specified, it is used for initialization
instead of the hardcoded one (except when `--beacon.checkpoint` is also
specified simultaneously). Whenever the client encounters a new valid
finality update with a suitable finalized beacon block root at an epoch
boundary, it saves the block root in hex format to the checkpoint file.
This updates the blsync base types for the Electra fork. I've been
testing, and it doesn't seem to make blsync fully work on Electra. But
I'd still like to get this in to make some progress.
---------
Co-authored-by: Zsolt Felfoldi <zsfelfoldi@gmail.com>
This PR moves chain config related code (config file processing, fork
logic, network defaults) from `beacon/types` and `beacon/blsync` into
`beacon/params` while the command line flag logic of the chain config is
moved into `cmd/utils`, thereby removing the cli dependencies from
package `beacon` and its sub-packages.