Skip to content
Merged
Show file tree
Hide file tree
Changes from 17 commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
45d055a
Use targetGasLimit of engine API PayloadAttributesV4 (#4258)
jangko Jun 17, 2026
634c389
Revert BAL workaround of delegated target in CALL* opcodes (#4257)
jangko Jun 17, 2026
faa366f
Upgrade EEST test fixtures to tests-glamsterdam-devnet@v6.1.0
jangko Jun 22, 2026
5a409be
raise EIP-7954 max code size to 64KiB
jangko Jun 22, 2026
4d8f43e
EIP-8037 strict block-gas inclusion rule
jangko Jun 22, 2026
65aaaa8
EIP-8037 Calldata floor accounting alignment
jangko Jun 22, 2026
305cec0
EIP-8037 refund account creation for existing create targets
jangko Jun 22, 2026
d498ebe
update EIP-8037 to use source based refunds
jangko Jun 22, 2026
73d5919
derive EIP-8037 state gas used from reservoir/spill
jangko Jun 22, 2026
1403579
EIP-8282: Builder Execution Requests
jangko Jun 22, 2026
6c930f7
EIP-7997: Deterministic Factory Contract
jangko Jun 22, 2026
d1acf0c
EIP-8246: Remove SELFDESTRUCT Burn
jangko Jun 22, 2026
6892786
EIP-2780: Resource-based intrinsic transaction gas
jangko Jun 22, 2026
08c34b0
EIP-8038: State-access gas cost update
jangko Jun 23, 2026
aae9ca6
Disable zkevm test due to incompatibility
jangko Jun 29, 2026
da9bf21
Lint
jangko Jun 29, 2026
43246a0
Fix wasm compilation crash
jangko Jun 29, 2026
07f6f41
Add nim issue link to emscripten workaround
jangko Jun 30, 2026
dd7ba61
Fix test ledger
jangko Jun 30, 2026
24b2141
Apply EIP-7997 to Amsterdam genesis
jangko Jun 30, 2026
ec5f167
Add EIP-8282 contract code to test_rpc
jangko Jun 30, 2026
ffd4480
Fix EIP-7997 no-op condition
jangko Jun 30, 2026
77572e0
Update BAL test for EIP-8246 changes
jangko Jun 30, 2026
d085409
Add EIP-8282 contract code to test_txpool
jangko Jun 30, 2026
0902a7f
Add EIP-8282 test to test_rpc
jangko Jun 30, 2026
d62ed0f
Reenable zkevm test and upgrade test fixtures to v0.5.0
jangko Jul 2, 2026
9a49f9f
fix: transaction truncation (#4397)
advaita-saha Jul 3, 2026
0a580d6
fix(txpool): reset vmState before every assembleBlock (#4405)
qu0b Jul 3, 2026
0e4458d
Merge branch 'master' into glamsterdam-devnet-6
jangko Jul 3, 2026
c152a2f
Add eest_txpool_test to Makefile PHONY rule
jangko Jul 3, 2026
2a30edf
Update devnet fixtures to tests-glamsterdam-devnet@v6.1.1
jangko Jul 3, 2026
6500b8f
eest_evmstate_test and eest_t8n_test use devnet fixtures
jangko Jul 3, 2026
9fda0d1
Add missing empty line between makefile rule
jangko Jul 4, 2026
e809e73
Skip more failing zkevm test cases
jangko Jul 4, 2026
a7ac35d
fix(engine): preserve withdrawals for V4 (Amsterdam) payload attribut…
lodekeeper Jul 4, 2026
541580b
Merge branch 'master' into glamsterdam-devnet-6
jangko Jul 4, 2026
ff8c9cb
Bump nim-web3
jangko Jul 4, 2026
806e513
Convert #4409 test into rpc test
jangko Jul 4, 2026
59813e0
Fix transition tool EIP-8282 requests typo
jangko Jul 5, 2026
94195f3
Resolve merge conflict
jangko Jul 5, 2026
53b8d6d
Add slotNumber test to test_engine_api
jangko Jul 6, 2026
5078800
Reduce memleak in eest_txpool
jangko Jul 6, 2026
7b45a01
Merge branch 'master' into glamsterdam-devnet-6
jangko Jul 6, 2026
844f905
Fix comments int eest_txpool
jangko Jul 6, 2026
f0f295d
builds MUST start on forkchoiceState.headBlockHash (#4427)
advaita-saha Jul 7, 2026
78cd0fe
Merge branch 'master' into glamsterdam-devnet-6
jangko Jul 8, 2026
0f839cb
Merge branch 'master' into glamsterdam-devnet-6
jangko Jul 8, 2026
d07a375
parallelEnabled = false in eest_engine_test
jangko Jul 8, 2026
182bc6b
Remove extra txFee assignment due to merge conflict
jangko Jul 8, 2026
2255faf
Skip problematic tests
jangko Jul 8, 2026
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: 1 addition & 1 deletion .github/actions/shared/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ runs:
with:
path: |
tests/fixtures/eest_develop
tests/fixtures/eest_bal
tests/fixtures/eest_devnet
tests/fixtures/eest_zkevm
# EEST release version contained in eest_ci_cache.sh.
# Each time we bump EEST version, it should invalidate the cache too.
Expand Down
4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,9 @@ nimbus-build-system.paths

# EEST test vectors
tests/fixtures/eest_develop
tests/fixtures/eest_bal
tests/fixtures/eest_devnet
tests/fixtures/eest_zkevm

execution_chain/nimbus
GeneralStateTestsBal.md
GeneralStateTestsDevnet.md
GeneralStateTestsDevelop.md
21 changes: 16 additions & 5 deletions execution_chain/beacon/api_handler/api_newpayload.nim
Original file line number Diff line number Diff line change
Expand Up @@ -127,11 +127,22 @@ func validateExecutionRequest(blockHash: Hash32,
raise invalidParams("newPayload" & $apiVersion &
": " & "Empty data for request type " & $requestType)

if requestType notin [
DEPOSIT_REQUEST_TYPE,
WITHDRAWAL_REQUEST_TYPE,
CONSOLIDATION_REQUEST_TYPE]:
return Opt.some(invalidStatus(blockHash, "Invalid execution request type" & $requestType))
if apiVersion >= Version.V5:
if requestType notin [
DEPOSIT_REQUEST_TYPE,
WITHDRAWAL_REQUEST_TYPE,
CONSOLIDATION_REQUEST_TYPE,
BUILDER_DEPOSIT_REQUEST_TYPE,
BUILDER_EXIT_REQUEST_TYPE]:
return Opt.some(invalidStatus(blockHash,
"newPayload" & $apiVersion & ": Invalid execution request type" & $requestType))
else:
if requestType notin [
DEPOSIT_REQUEST_TYPE,
WITHDRAWAL_REQUEST_TYPE,
CONSOLIDATION_REQUEST_TYPE]:
return Opt.some(invalidStatus(blockHash,
"newPayload" & $apiVersion & ": Invalid execution request type" & $requestType))

previousRequestType = requestType.int
err()
Expand Down
1 change: 1 addition & 0 deletions execution_chain/beacon/beacon_engine.nim
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,7 @@ proc generateExecutionBundle*(
xp.prevRandao = attrs.prevRandao
xp.timestamp = ethTime attrs.timestamp
xp.feeRecipient = attrs.suggestedFeeRecipient
xp.targetGasLimit = u64 attrs.targetGasLimit

if attrs.parentBeaconBlockRoot.isSome:
xp.parentBeaconBlockRoot = attrs.parentBeaconBlockRoot.get
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -431,11 +431,11 @@ proc handleInTransactionSelfDestruct*(
tracker.pendingCallFrame.storageReads.incl(storageKey)
tracker.pendingCallFrame.storageChanges.del(storageKey)

tracker.pendingCallFrame.balanceChanges.del(address)
tracker.pendingCallFrame.nonceChanges.del(address)
tracker.pendingCallFrame.codeChanges.del(address)

tracker.trackBalanceChange(address, 0.u256)

tracker.trackNonceChange(address, 0)
tracker.trackCodeChange(address, @[])

proc normalizePendingCallFrameChanges*(tracker: BlockAccessListTrackerRef) =
## Normalize balance, nonce, code and storage changes for the current
Expand Down
5 changes: 5 additions & 0 deletions execution_chain/common/common.nim
Original file line number Diff line number Diff line change
Expand Up @@ -433,6 +433,11 @@ func isOsakaOrLater*(com: CommonRef, t: EthTime): bool =
func isAmsterdamOrLater*(com: CommonRef, t: EthTime): bool =
com.config.amsterdamTime.isSome and t >= com.config.amsterdamTime.value

func amsterdamTransition*(com: CommonRef, parentTime, t: EthTime): bool =
com.config.amsterdamTime.isSome and
t >= com.config.amsterdamTime.value and
parentTime < com.config.amsterdamTime.value

func isBogotaOrLater*(com: CommonRef, t: EthTime): bool =
com.config.bogotaTime.isSome and t >= com.config.bogotaTime.value

Expand Down
4 changes: 2 additions & 2 deletions execution_chain/conf.nim
Original file line number Diff line number Diff line change
Expand Up @@ -131,8 +131,8 @@ type

gasLimit* {.
desc: "Desired gas limit when building an execution payload"
defaultValue: DEFAULT_GAS_LIMIT
name: "gas-limit" .}: uint64
defaultValue: none(uint64)
name: "gas-limit" .}: Option[uint64]

# https://eips.ethereum.org/EIPS/eip-7872
maxBlobs* {.
Expand Down
14 changes: 8 additions & 6 deletions execution_chain/constants.nim
Original file line number Diff line number Diff line change
Expand Up @@ -66,18 +66,18 @@ const
# size when creating a new contract.
EIP3860_MAX_INITCODE_SIZE* = 2 * EIP170_MAX_CODE_SIZE

# See https://eips.ethereum.org/EIPS/eip-7954.
# - Update contract code size limit of 24KiB(0x6000 bytes) to 32KiB(0x8000 bytes).
# - Update initcode size limit of 48KiB(0xC000 bytes) to 64KiB(0x10000 bytes).
EIP7954_MAX_CODE_SIZE* = 0x8000
EIP7954_MAX_INITCODE_SIZE* = 0x10000
# See https://eips.ethereum.org/EIPS/eip-7954.
# - Update contract code size limit of 24KiB(0x6000 bytes) to 64KiB(0x10000 bytes).
# - Update initcode size limit of 48KiB(0xC000 bytes) to 128KiB(0x20000 bytes).
EIP7954_MAX_CODE_SIZE* = 0x10000
EIP7954_MAX_INITCODE_SIZE* = 2 * EIP7954_MAX_CODE_SIZE

# See EIP-7702 (https://eips.ethereum.org/EIPS/eip-7702). When an EOA delegates
# via a SETCODE transaction its code is set to a "delegation designator": the
# 3-byte prefix 0xef0100 followed by the 20-byte delegate address (23 bytes).
EIP7702_DELEGATION_PREFIX* = [0xEF.byte, 0x01, 0x00]
EIP7702_DELEGATION_SIZE* = 23

# EIP
MaxPrecompilesAddr* = 0xFFFF

Expand Down Expand Up @@ -118,6 +118,8 @@ const
HISTORY_STORAGE_ADDRESS* = address"0x0000F90827F1C53a10cb7A02335B175320002935"
WITHDRAWAL_REQUEST_PREDEPLOY_ADDRESS* = address"0x00000961Ef480Eb55e80D19ad83579A64c007002"
CONSOLIDATION_REQUEST_PREDEPLOY_ADDRESS* = address"0x0000BBdDc7CE488642fb579F8B00f3a590007251"
BUILDER_DEPOSIT_CONTRACT_ADDRESS* = address"0x0000884D2AA32EAA155F59A2F24EFA73D9008282"
BUILDER_EXIT_CONTRACT_ADDRESS* = address"0x000014574A74C805590AFF9499FC7A690F008282"

MAX_BLOCK_SIZE* = 10_485_760 # 10 MiB
SAFETY_MARGIN* = 2_097_152 # 2 MiB
Expand Down
29 changes: 29 additions & 0 deletions execution_chain/core/eip7997.nim
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Nimbus
# Copyright (c) 2026 Status Research & Development GmbH
# Licensed under either of
# * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or
# http://www.apache.org/licenses/LICENSE-2.0)
# * MIT license ([LICENSE-MIT](LICENSE-MIT) or
# http://opensource.org/licenses/MIT)
# at your option. This file may not be copied, modified, or distributed except
# according to those terms.

{.push raises: [], gcsafe.}

import
eth/common/addresses,
stew/byteutils,
../evm/types,
../db/ledger

const
FactoryAddress = address"0x4e59b44847b379578588920cA78FbF26c0B4956C"
FactoryCode = hexToSeqByte"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf3"

proc applyEip7997*(ledger: LedgerRef) =
# Although this code only called once during fork transition,
# if using the constant above, sometimes it will crash
# when interacting with CodeBytesRef sink in test environment.
let factoryCode = FactoryCode
ledger.setCode(FactoryAddress, factoryCode)
ledger.setNonce(FactoryAddress, 1.AccountNonce)
3 changes: 2 additions & 1 deletion execution_chain/core/eip8037.nim
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,11 @@
const
STATE_BYTES_PER_NEW_ACCOUNT* = 120
STATE_BYTES_PER_AUTH_BASE* = 23
REGULAR_PER_AUTH_BASE_COST* = 7500
REGULAR_PER_AUTH_BASE_COST* = 7816
STATE_BYTES_PER_STORAGE_SET* = 64
COST_PER_STATE_BYTE* = 1530
CREATE_ACCOUNT_STATE_GAS* = COST_PER_STATE_BYTE * STATE_BYTES_PER_NEW_ACCOUNT
STATE_GAS_STORAGE_SET* = COST_PER_STATE_BYTE * STATE_BYTES_PER_STORAGE_SET
SYSTEM_MAX_SSTORES_PER_CALL = 16
SYSTEM_STATE_GAS_RESERVOIR* = STATE_BYTES_PER_STORAGE_SET * COST_PER_STATE_BYTE * SYSTEM_MAX_SSTORES_PER_CALL
AUTH_BASE_STATE_GAS* = STATE_BYTES_PER_AUTH_BASE * COST_PER_STATE_BYTE
49 changes: 35 additions & 14 deletions execution_chain/core/executor/process_block.nim
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import
../../concurrency/utils,
../dao,
../eip6110,
../eip7997,
./calculate_reward,
./executor_helpers,
./process_transaction,
Expand Down Expand Up @@ -162,7 +163,7 @@ when compileOption("threads"):
discard sync(e.fut)

func firstBalIndex(sc: SlotChanges): BlockAccessIndex =
## Earliest block access index at which the slot was written.
## Earliest block access index at which the slot was written.
## Block access list validation guarantees `changes` is non-empty.
assert sc.changes.len > 0
sc.changes[0].blockAccessIndex
Expand All @@ -180,7 +181,7 @@ when compileOption("threads"):
let accChanges = addr ctx[].balPtr[][i]

# Precompile contracts don't exist in the state trie and don't get loaded
# when called so we don't prefetch them. The BAL can contain precompile addresses
# when called so we don't prefetch them. The BAL can contain precompile addresses
# but in most cases the state trie account is not actually fetched. The edge
# case here is when a precompile contract receives a value transfer which will
# load the account to update the balance but unfortunately we can't determine
Expand Down Expand Up @@ -208,7 +209,7 @@ when compileOption("threads"):

template withBalPrefetchParallel(
vmState: BaseVMState, bal: Opt[BlockAccessListRef], body: untyped) =

let balRef = bal.get()

var ctx: BalPrefetchCtx
Expand All @@ -220,12 +221,12 @@ when compileOption("threads"):
ctx.nextIndex.store(0, moRelease)
ctx.finished.store(false, moRelease)

let
let
ctxPtr = ctx.addr
n = vmState.com.taskpool.numThreads
configured = vmState.com.balStatePrefetchWorkers
numWorkers = if configured <= 0: n else: min(configured, n)

var futs = newSeq[Flowvar[bool]](numWorkers)
for i in 0 ..< numWorkers:
futs[i] = vmState.com.taskpool.spawn balPrefetchWorker(ctxPtr)
Expand Down Expand Up @@ -317,10 +318,13 @@ proc procBlkPreamble(
vmState.balTracker.beginCallFrame()

let com = vmState.com
if com.daoForkSupport and com.daoForkBlock.get == header.number:
vmState.mutateLedger:
vmState.mutateLedger:
if com.daoForkSupport and com.daoForkBlock.get == header.number:
ledger.applyDAOHardFork()

if com.amsterdamTransition(vmState.parent.timestamp, header.timestamp):
ledger.applyEip7997()

if not skipValidation: # Expensive!
if blk.transactions.calcTxRoot != header.txRoot:
return err("Mismatched txRoot")
Expand Down Expand Up @@ -444,13 +448,19 @@ proc procBlkEpilogue(
var
withdrawalReqs: seq[byte]
consolidationReqs: seq[byte]
builderDepositReqs: seq[byte]
builderExitReqs: seq[byte]

if header.requestsHash.isSome:
# Execute EIP-7002 and EIP-7251 before calculating stateRoot
# because they will alter the state
withdrawalReqs = ?processDequeueWithdrawalRequests(vmState)
consolidationReqs = ?processDequeueConsolidationRequests(vmState)

if vmState.com.isAmsterdamOrLater(header.timestamp):
builderDepositReqs = ?processBuilderDepositRequests(vmState)
builderExitReqs = ?processBuilderExitRequests(vmState)

# Commit block access list tracker changes for post‑execution system calls
if vmState.balTrackerEnabled:
vmState.balTracker.commitCallFrame()
Expand Down Expand Up @@ -511,13 +521,24 @@ proc procBlkEpilogue(
let
depositReqs =
?parseDepositLogs(vmState.allLogs, vmState.com.depositContractAddress)
requestsHash = calcRequestsHash(
[
(DEPOSIT_REQUEST_TYPE, depositReqs),
(WITHDRAWAL_REQUEST_TYPE, withdrawalReqs),
(CONSOLIDATION_REQUEST_TYPE, consolidationReqs),
]
)
requestsHash = if vmState.com.isAmsterdamOrLater(header.timestamp):
calcRequestsHash(
[
(DEPOSIT_REQUEST_TYPE, depositReqs),
(WITHDRAWAL_REQUEST_TYPE, withdrawalReqs),
(CONSOLIDATION_REQUEST_TYPE, consolidationReqs),
(BUILDER_DEPOSIT_REQUEST_TYPE, builderDepositReqs),
(BUILDER_EXIT_REQUEST_TYPE, builderExitReqs),
]
)
else:
calcRequestsHash(
[
(DEPOSIT_REQUEST_TYPE, depositReqs),
(WITHDRAWAL_REQUEST_TYPE, withdrawalReqs),
(CONSOLIDATION_REQUEST_TYPE, consolidationReqs),
]
)

if header.requestsHash.get != requestsHash:
debug "wrong requestsHash in block",
Expand Down
66 changes: 40 additions & 26 deletions execution_chain/core/executor/process_transaction.nim
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import
../../transaction,
../../evm/state,
../../evm/types,
../../evm/eip7708,
../../constants,
../eip4844,
../eip7691,
Expand Down Expand Up @@ -84,9 +83,6 @@ proc commitOrRollbackDependingOnGasUsed(
vmState.blockStateGasUsed += callResult.blockStateGasUsed
vmState.blobGasUsed += blobGasUsed

# EIP-7708: Emit closure logs for accounts with remaining balance before deletion
if vmState.fork >= FkAmsterdam:
emitClosureLogs(vmState, callResult.logEntries)
ok()

template validateForInclusion(
Expand All @@ -108,28 +104,14 @@ template validateForInclusion(
fork = vmState.hardFork
regularGasAvailable = vmState.blockCtx.gasLimit - vmState.blockRegularGasUsed
stateGasAvailable = vmState.blockCtx.gasLimit - vmState.blockStateGasUsed
intrinsicVar = tx.intrinsicGas(fork, vmState.blockCtx.gasLimit)

# Per-tx 2D gas inclusion check: for each dimension the worst-case
# contribution must fit in the remaining budget. Block-end
# validation still enforces
if fork < Amsterdam:
let want = min(TX_GAS_LIMIT.GasInt, tx.gasLimit)
if want > regularGasAvailable:
fail("regular gas used exceeds limit, want: " & $want & ", available: " & $regularGasAvailable)
else:
# https://github.com/ethereum/execution-specs/pull/2703/changes
# Worst-case regular contribution: tx.gasLimit minus the portion that
# must go to intrinsic state gas, capped at TX_MAX_GAS_LIMIT.
let want = min(TX_GAS_LIMIT.GasInt, tx.gasLimit - intrinsicVar.state)
if want > regularGasAvailable:
fail("regular gas used exceeds limit, want: " & $want & ", available: " & $regularGasAvailable)

# Worst-case state contribution: tx.gasLimit minus the portion that
# must go to intrinsic regular gas.
let stateGas = tx.gasLimit - intrinsicVar.regular
if stateGas > stateGasAvailable:
fail("state gas used exceeds limit, want: " & $stateGas & ", available: " & $stateGasAvailable)
intrinsicVar = tx.intrinsicGas(fork, vmState.blockCtx.gasLimit, sender)

let want = min(TX_GAS_LIMIT.GasInt, tx.gasLimit)
if want > regularGasAvailable:
fail("regular gas used exceeds limit, want: " & $want & ", available: " & $regularGasAvailable)

if tx.gasLimit > stateGasAvailable:
fail("state gas used exceeds limit, want: " & $tx.gasLimit & ", available: " & $stateGasAvailable)

# blobGasUsed will be added to vmState.blobGasUsed if the tx is ok.
let
Expand Down Expand Up @@ -257,6 +239,38 @@ proc processDequeueConsolidationRequests*(vmState: BaseVMState): Result[seq[byte
return err("processDequeueConsolidationRequests: " & res.error)
ok(move(res.output))

proc processBuilderDepositRequests*(vmState: BaseVMState): Result[seq[byte], string] =
## processBuilderDepositRequests applies the EIP-8282 system call
## to the builder deposit requests contract.
let
call = CallParams(
vmState : vmState,
sender : SYSTEM_ADDRESS,
gasLimit : 30_000_000.GasInt,
to : BUILDER_DEPOSIT_CONTRACT_ADDRESS,
)

var res = call.systemCall(OutputResult)
if res.error.len > 0:
return err("processBuilderDepositRequests: " & res.error)
ok(move(res.output))

proc processBuilderExitRequests*(vmState: BaseVMState): Result[seq[byte], string] =
## processBuilderExitRequests applies the EIP-8282 system call
## to the builder exit requests contract.
let
call = CallParams(
vmState : vmState,
sender : SYSTEM_ADDRESS,
gasLimit : 30_000_000.GasInt,
to : BUILDER_EXIT_CONTRACT_ADDRESS,
)

var res = call.systemCall(OutputResult)
if res.error.len > 0:
return err("processBuilderExitRequests: " & res.error)
ok(move(res.output))

# ------------------------------------------------------------------------------
# End
# ------------------------------------------------------------------------------
4 changes: 3 additions & 1 deletion execution_chain/core/tx_pool.nim
Original file line number Diff line number Diff line change
Expand Up @@ -268,11 +268,13 @@ export
`prevRandao=`,
`withdrawals=`,
`parentBeaconBlockRoot=`,
`slotNumber=`
`slotNumber=`,
`targetGasLimit=`

# `feeRecipient=`(xp: TxPoolRef, val: Address)
# `timestamp=`(xp: TxPoolRef, val: EthTime)
# `prevRandao=`(xp: TxPoolRef, val: Bytes32)
# `withdrawals=`(xp: TxPoolRef, val: sink seq[Withdrawal])
# `parentBeaconBlockRoot=`(xp: TxPoolRef, val: Hash32)
# `slotNumber=`(xp: TxPoolRef, val: uint64)
# `targetGasLimit=`(xp: TxPoolRef, val: Opt[uint64])
Loading
Loading