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
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: 0x0 causing:
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.0
Or 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) |
Description
v2.4.0 reintroduces the "transaction type not supported" error that was fixed in v2.3.1. The fix (using
HeaderByNumberinstead ofBlockByNumberin keep-common) was accidentally removed when thereplacedirective pointing tothreshold-network/keep-commonwas dropped.Related Issues
transaction type not supported#3841Root Cause
When fetching the initial block during
BlockCounterinitialization, the code usesBlockByNumber()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):
v2.4.0 go.mod (regression):
Symptoms
fromBlock: 0x0causing:Environment
Proposed Fix
Restore the
replacedirective in go.mod:Or merge the header fix into
keep-network/keep-commonand update the dependency.Affected Versions