-
Notifications
You must be signed in to change notification settings - Fork 84
[BUG] v2.4.0 regression: "transaction type not supported" error - keep-common header fix removed #3859
Description
Description
v2.4.0 reintroduces the "transaction type not supported" error that was fixed in v2.3.1. The fix (using HeaderByNumber instead of BlockByNumber in keep-common) was accidentally removed when the replace directive pointing to threshold-network/keep-common was dropped.
Related Issues
- Original issue: ENG-469 Irritating error
transaction type not supported#3841 - Original fix: ENG-469 Fix: prefer headers for block info keep-common#1
Root Cause
When fetching the initial block during BlockCounter initialization, the code uses BlockByNumber() which deserializes all transactions in the block. Blocks containing newer transaction types (EIP-4844 blob transactions from the Dencun upgrade) cause go-ethereum to fail with "transaction type not supported".
The fix in threshold-network/keep-common PR #1 changed this to use HeaderByNumber() which avoids transaction deserialization.
Evidence
v2.3.1 go.mod (has fix):
replace (
github.com/keep-network/keep-common => github.com/threshold-network/keep-common v1.7.1-tlabs.0
// ...
)v2.4.0 go.mod (regression):
require (
github.com/keep-network/keep-common v1.7.1-0.20240424094333-bd36cd25bb74
// No replace directive - uses unfixed keep-network/keep-common
)Symptoms
- Intermittent startup failures with error:
error connecting to Ethereum node: [could not create base chain handle: [failed to create Ethereum blockcounter: [failed to get initial block from the chain: [transaction type not supported]]]] - When acting as coordination leader, queries fail with
fromBlock: 0x0causing:Requested range exceeds maximum RPC range limit - Workaround: restart repeatedly (3-10 attempts) until a block without unsupported tx types is fetched
Environment
- keep-core version: v2.4.0
- Ethereum client: Besu (also reproducible with other clients)
- Network: Ethereum Mainnet
Proposed Fix
Restore the replace directive in go.mod:
replace github.com/keep-network/keep-common => github.com/threshold-network/keep-common v1.7.1-tlabs.0Or merge the header fix into keep-network/keep-common and update the dependency.
Affected Versions
| Version | Status |
|---|---|
| v2.4.0 | AFFECTED |
| v2.3.1 | NOT AFFECTED (has fix) |