@@ -70,7 +70,7 @@ proc makeTx*(t: var TestEnv, recipient: EthAddress, amount: UInt256, payload: op
70
70
inc t.nonce
71
71
signTransaction(tx, t.vaultKey, t.chainId, eip155 = true )
72
72
73
- proc initEnv(ttd: Option[UInt256] = none(UInt256) ): TestEnv =
73
+ proc initEnv(envFork: HardFork ): TestEnv =
74
74
var
75
75
conf = makeConfig(@ [
76
76
" --engine-signer:658bdf435d810c91414ec09147daa6db62406379" ,
@@ -81,8 +81,14 @@ proc initEnv(ttd: Option[UInt256] = none(UInt256)): TestEnv =
81
81
code: contractCode
82
82
)
83
83
84
- if ttd.isSome:
85
- conf.networkParams.config.terminalTotalDifficulty = ttd
84
+ if envFork >= MergeFork:
85
+ conf.networkParams.config.terminalTotalDifficulty = some(100 .u256)
86
+
87
+ if envFork >= Shanghai:
88
+ conf.networkParams.config.shanghaiTime = some(0 .fromUnix)
89
+
90
+ if envFork >= Cancun:
91
+ conf.networkParams.config.cancunTime = some(0 .fromUnix)
86
92
87
93
let
88
94
com = CommonRef.new(
@@ -112,7 +118,7 @@ const
112
118
113
119
proc runTxPoolCliqueTest* () =
114
120
var
115
- env = initEnv()
121
+ env = initEnv(London )
116
122
117
123
var
118
124
tx = env.makeTx(recipient, amount)
@@ -173,7 +179,6 @@ proc runTxPoolCliqueTest*() =
173
179
check rr == ValidationResult.OK
174
180
175
181
test " Do not kick the signer out of list" :
176
- let timestamp = blk.header.timestamp
177
182
check xp.smartHead(blk.header)
178
183
179
184
let tx = env.makeTx(recipient, amount)
@@ -207,7 +212,7 @@ proc runTxPoolCliqueTest*() =
207
212
208
213
proc runTxPoolPosTest* () =
209
214
var
210
- env = initEnv(some( 100 .u256) )
215
+ env = initEnv(MergeFork )
211
216
212
217
var
213
218
tx = env.makeTx(recipient, amount)
@@ -260,13 +265,69 @@ proc runTxPoolPosTest*() =
260
265
let bal = sdb.getBalance(feeRecipient)
261
266
check not bal.isZero
262
267
268
+ proc runTxPoolBlobhashTest* () =
269
+ var
270
+ env = initEnv(Cancun)
271
+
272
+ var
273
+ tx = env.makeTx(recipient, amount)
274
+ xp = env.xp
275
+ com = env.com
276
+ chain = env.chain
277
+ body: BlockBody
278
+ blk: EthBlock
279
+
280
+ suite " Test TxPool with blobhash block" :
281
+ test " TxPool addLocal" :
282
+ let res = xp.addLocal(tx, force = true )
283
+ check res.isOk
284
+ if res.isErr:
285
+ debugEcho res.error
286
+ return
287
+
288
+ test " TxPool jobCommit" :
289
+ check xp.nItems.total == 1
290
+
291
+ test " TxPool ethBlock" :
292
+ com.pos.prevRandao = prevRandao
293
+ com.pos.feeRecipient = feeRecipient
294
+ com.pos.timestamp = getTime()
295
+
296
+ blk = xp.ethBlock()
297
+
298
+ check com.isBlockAfterTtd(blk.header)
299
+
300
+ body = BlockBody(
301
+ transactions: blk.txs,
302
+ uncles: blk.uncles,
303
+ withdrawals: some[seq [Withdrawal]](@ [])
304
+ )
305
+ check blk.txs.len == 1
306
+
307
+ test " Blobhash persistBlocks" :
308
+ let rr = chain.persistBlocks([blk.header], [body])
309
+ check rr == ValidationResult.OK
310
+
311
+ test " validate TxPool prevRandao setter" :
312
+ var sdb = newAccountStateDB(com.db.db, blk.header.stateRoot, pruneTrie = false )
313
+ let (val, ok) = sdb.getStorage(recipient, slot)
314
+ let randao = Hash256(data: val.toBytesBE)
315
+ check ok
316
+ check randao == prevRandao
317
+
318
+ test " feeRecipient rewarded" :
319
+ check blk.header.coinbase == feeRecipient
320
+ var sdb = newAccountStateDB(com.db.db, blk.header.stateRoot, pruneTrie = false )
321
+ let bal = sdb.getBalance(feeRecipient)
322
+ check not bal.isZero
323
+
263
324
proc runTxHeadDelta* (noisy = true ) =
264
325
# # see github.com/status-im/nimbus-eth1/issues/1031
265
326
266
327
suite " TxPool: Synthesising blocks (covers issue #1031)" :
267
328
test " Packing and adding multiple blocks to chain" :
268
329
var
269
- env = initEnv(some( 100 .u256) )
330
+ env = initEnv(MergeFork )
270
331
xp = env.xp
271
332
com = env.com
272
333
chain = env.chain
@@ -336,7 +397,8 @@ when isMainModule:
336
397
setErrorLevel() # mute logger
337
398
338
399
runTxPoolCliqueTest()
339
- # runTxPoolPosTest()
340
- # noisy.runTxHeadDelta
400
+ runTxPoolPosTest()
401
+ runTxPoolBlobhashTest()
402
+ noisy.runTxHeadDelta
341
403
342
404
# End
0 commit comments