@@ -24,33 +24,29 @@ import (
24
24
"strings"
25
25
"testing"
26
26
27
- "github.com/ledgerwatch/erigon/core/rawdb"
28
-
29
27
"github.com/holiman/uint256"
30
28
"github.com/stretchr/testify/require"
31
29
32
- "github.com/ledgerwatch/erigon-lib/log/v3"
33
-
34
30
"github.com/ledgerwatch/erigon-lib/chain"
35
31
libcommon "github.com/ledgerwatch/erigon-lib/common"
36
32
"github.com/ledgerwatch/erigon-lib/common/datadir"
37
33
"github.com/ledgerwatch/erigon-lib/kv"
38
34
"github.com/ledgerwatch/erigon-lib/kv/memdb"
39
35
"github.com/ledgerwatch/erigon-lib/kv/rawdbv3"
40
36
"github.com/ledgerwatch/erigon-lib/kv/temporal"
41
- state3 "github.com/ledgerwatch/erigon-lib/state "
37
+ "github.com/ledgerwatch/erigon-lib/log/v3 "
42
38
stateLib "github.com/ledgerwatch/erigon-lib/state"
39
+
43
40
"github.com/ledgerwatch/erigon/accounts/abi"
44
41
"github.com/ledgerwatch/erigon/common"
45
42
"github.com/ledgerwatch/erigon/consensus"
46
- "github.com/ledgerwatch/erigon/consensus/misc"
47
43
"github.com/ledgerwatch/erigon/core"
48
44
"github.com/ledgerwatch/erigon/core/asm"
45
+ "github.com/ledgerwatch/erigon/core/rawdb"
49
46
"github.com/ledgerwatch/erigon/core/state"
50
47
"github.com/ledgerwatch/erigon/core/types"
51
48
"github.com/ledgerwatch/erigon/core/vm"
52
49
"github.com/ledgerwatch/erigon/eth/tracers/logger"
53
- "github.com/ledgerwatch/erigon/params"
54
50
"github.com/ledgerwatch/erigon/rlp"
55
51
)
56
52
@@ -182,7 +178,7 @@ func testTemporalDB(t testing.TB) *temporal.DB {
182
178
t .Cleanup (db .Close )
183
179
184
180
cr := rawdb .NewCanonicalReader ()
185
- agg , err := state3 .NewAggregator (context .Background (), datadir .New (t .TempDir ()), 16 , db , cr , log .New ())
181
+ agg , err := stateLib .NewAggregator (context .Background (), datadir .New (t .TempDir ()), 16 , db , cr , log .New ())
186
182
require .NoError (t , err )
187
183
t .Cleanup (agg .Close )
188
184
@@ -191,12 +187,12 @@ func testTemporalDB(t testing.TB) *temporal.DB {
191
187
return _db
192
188
}
193
189
194
- func testTemporalTxSD (t testing.TB , db * temporal.DB ) (kv.RwTx , * state3 .SharedDomains ) {
190
+ func testTemporalTxSD (t testing.TB , db * temporal.DB ) (kv.RwTx , * stateLib .SharedDomains ) {
195
191
tx , err := db .BeginTemporalRw (context .Background ()) //nolint:gocritic
196
192
require .NoError (t , err )
197
193
t .Cleanup (tx .Rollback )
198
194
199
- sd , err := state3 .NewSharedDomains (tx , log .New ())
195
+ sd , err := stateLib .NewSharedDomains (tx , log .New ())
200
196
require .NoError (t , err )
201
197
t .Cleanup (sd .Close )
202
198
@@ -465,95 +461,6 @@ func TestBlockhash(t *testing.T) {
465
461
}
466
462
}
467
463
468
- func TestBlockHashEip2935 (t * testing.T ) {
469
- t .Parallel ()
470
-
471
- // This is the contract we're using. It requests the blockhash for current num (should be all zeroes), We are fetching BlockHash for current block (should be zer0), parent block, last block which is supposed to be there (head - HISTORY_SERVE_WINDOW) and also one block before that (should be zero)
472
-
473
- /*
474
- pragma solidity ^0.8.25;
475
- contract BlockHashTestPrague{
476
- function test() public view returns (bytes32, bytes32, bytes32, bytes32){
477
- uint256 head = block.number;
478
- bytes32 zero = blockhash(head);
479
- bytes32 first = blockhash(head-1);
480
- bytes32 last = blockhash(head - 8192);
481
- bytes32 beyond = blockhash(head - 8193);
482
- return (zero, first, last, beyond);
483
- }
484
- }
485
- */
486
- // The contract above
487
- data := libcommon .Hex2Bytes ("608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063f8a8fd6d1461002d575b5f80fd5b61003561004e565b60405161004594939291906100bf565b60405180910390f35b5f805f805f4390505f814090505f6001836100699190610138565b4090505f6120008461007b9190610138565b4090505f6120018561008d9190610138565b409050838383839850985098509850505050505090919293565b5f819050919050565b6100b9816100a7565b82525050565b5f6080820190506100d25f8301876100b0565b6100df60208301866100b0565b6100ec60408301856100b0565b6100f960608301846100b0565b95945050505050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61014282610102565b915061014d83610102565b92508282039050818111156101655761016461010b565b5b9291505056fea2646970667358221220bac67d00c05154c1dca13fe3c1493172d44692d312cb3fd72a3d7457874d595464736f6c63430008190033" )
488
- // The method call to 'test()'
489
- input := libcommon .Hex2Bytes ("f8a8fd6d" )
490
-
491
- // Current head
492
- n := uint64 (10000 )
493
- parentHash := libcommon.Hash {}
494
- s := common .LeftPadBytes (new (big.Int ).SetUint64 (n - 1 ).Bytes (), 32 )
495
- copy (parentHash [:], s )
496
- fakeHeaderReader := & FakeChainHeaderReader {}
497
- header := fakeHeaderReader .GetHeader (libcommon .BigToHash (new (big.Int ).SetUint64 (n )), n )
498
-
499
- chain := & dummyChain {}
500
- cfg := & Config {
501
- GetHashFn : core .GetHashFn (header , chain .GetHeader ),
502
- BlockNumber : new (big.Int ).Set (header .Number ),
503
- Time : big .NewInt (10000 ),
504
- }
505
- setDefaults (cfg )
506
- cfg .ChainConfig .PragueTime = big .NewInt (10000 )
507
-
508
- db := memdb .NewStateDB (t .TempDir ())
509
- defer db .Close ()
510
-
511
- cr := rawdb .NewCanonicalReader ()
512
- agg , err := state3 .NewAggregator (context .Background (), datadir .New (t .TempDir ()), 16 , db , cr , log .New ())
513
- require .NoError (t , err )
514
- defer agg .Close ()
515
-
516
- _db , err := temporal .New (db , agg )
517
- require .NoError (t , err )
518
- defer _db .Close ()
519
-
520
- tx , err := _db .BeginTemporalRw (context .Background ())
521
- require .NoError (t , err )
522
- defer tx .Rollback ()
523
-
524
- sd , err := state3 .NewSharedDomains (tx , log .New ())
525
- require .NoError (t , err )
526
- defer sd .Close ()
527
-
528
- cfg .r = state .NewReaderV4 (sd )
529
- cfg .w = state .NewWriterV4 (sd )
530
- cfg .State = state .New (cfg .r )
531
- cfg .State .CreateAccount (params .HistoryStorageAddress , true )
532
- misc .StoreBlockHashesEip2935 (header , cfg .State , cfg .ChainConfig , & FakeChainHeaderReader {})
533
-
534
- ret , _ , err := Execute (data , input , cfg , t .TempDir ())
535
- if err != nil {
536
- t .Fatalf ("expected no error, got %v" , err )
537
- }
538
- if len (ret ) != 128 {
539
- t .Fatalf ("expected returndata to be 128 bytes, got %d" , len (ret ))
540
- }
541
-
542
- zero := new (big.Int ).SetBytes (ret [0 :32 ])
543
- first := new (big.Int ).SetBytes (ret [32 :64 ])
544
- last := new (big.Int ).SetBytes (ret [64 :96 ])
545
- beyond := new (big.Int ).SetBytes (ret [96 :128 ])
546
- if zero .Sign () != 0 || beyond .Sign () != 0 {
547
- t .Fatalf ("expected zeroes, got %x %x" , ret [0 :32 ], ret [96 :128 ])
548
- }
549
- if first .Uint64 () != 9999 {
550
- t .Fatalf ("first block should be 9999, got %d (%x)" , first , ret [32 :64 ])
551
- }
552
- if last .Uint64 () != 1808 {
553
- t .Fatalf ("last block should be 1808, got %d (%x)" , last , ret [64 :96 ])
554
- }
555
- }
556
-
557
464
// benchmarkNonModifyingCode benchmarks code, but if the code modifies the
558
465
// state, this should not be used, since it does not reset the state between runs.
559
466
func benchmarkNonModifyingCode (b * testing.B , gas uint64 , code []byte , name string ) { //nolint:unparam
0 commit comments