core: fix broken tests due to API changes + linter
This commit is contained in:
		| @@ -144,7 +144,7 @@ func testBlockChainImport(chain types.Blocks, blockchain *BlockChain) error { | |||||||
| 			} | 			} | ||||||
| 			return err | 			return err | ||||||
| 		} | 		} | ||||||
| 		statedb, err := state.New(blockchain.GetBlockByHash(block.ParentHash()).Root(), blockchain.stateCache) | 		statedb, err := state.New(blockchain.GetBlockByHash(block.ParentHash()).Root(), blockchain.stateCache, nil) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			return err | 			return err | ||||||
| 		} | 		} | ||||||
|   | |||||||
| @@ -29,7 +29,7 @@ func TestNodeIteratorCoverage(t *testing.T) { | |||||||
| 	// Create some arbitrary test state to iterate | 	// Create some arbitrary test state to iterate | ||||||
| 	db, root, _ := makeTestState() | 	db, root, _ := makeTestState() | ||||||
|  |  | ||||||
| 	state, err := New(root, db) | 	state, err := New(root, db, nil) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		t.Fatalf("failed to create state trie at %x: %v", root, err) | 		t.Fatalf("failed to create state trie at %x: %v", root, err) | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -478,7 +478,7 @@ func (dl *diffLayer) StorageList(accountHash common.Hash) []common.Hash { | |||||||
|  |  | ||||||
| 	storageMap := dl.storageData[accountHash] | 	storageMap := dl.storageData[accountHash] | ||||||
| 	storageList := make([]common.Hash, 0, len(storageMap)) | 	storageList := make([]common.Hash, 0, len(storageMap)) | ||||||
| 	for k, _ := range storageMap { | 	for k := range storageMap { | ||||||
| 		storageList = append(storageList, k) | 		storageList = append(storageList, k) | ||||||
| 	} | 	} | ||||||
| 	sort.Sort(hashes(storageList)) | 	sort.Sort(hashes(storageList)) | ||||||
|   | |||||||
| @@ -167,7 +167,7 @@ func TestInsertAndMerge(t *testing.T) { | |||||||
| 	merged := (child.flatten()).(*diffLayer) | 	merged := (child.flatten()).(*diffLayer) | ||||||
| 	{ // Check that slot value is present | 	{ // Check that slot value is present | ||||||
| 		got, _ := merged.Storage(acc, slot) | 		got, _ := merged.Storage(acc, slot) | ||||||
| 		if exp := []byte{0x01}; bytes.Compare(got, exp) != 0 { | 		if exp := []byte{0x01}; !bytes.Equal(got, exp) { | ||||||
| 			t.Errorf("merged slot value wrong, got %x, exp %x", got, exp) | 			t.Errorf("merged slot value wrong, got %x, exp %x", got, exp) | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -310,7 +310,7 @@ func TestDiskPartialMerge(t *testing.T) { | |||||||
| 			t.Helper() | 			t.Helper() | ||||||
| 			blob, err := base.AccountRLP(account) | 			blob, err := base.AccountRLP(account) | ||||||
| 			if bytes.Compare(account[:], genMarker) > 0 && err != ErrNotCoveredYet { | 			if bytes.Compare(account[:], genMarker) > 0 && err != ErrNotCoveredYet { | ||||||
| 				t.Fatalf("test %d: post-marker (%x) account access (%x) succeded: %x", i, genMarker, account, blob) | 				t.Fatalf("test %d: post-marker (%x) account access (%x) succeeded: %x", i, genMarker, account, blob) | ||||||
| 			} | 			} | ||||||
| 			if bytes.Compare(account[:], genMarker) <= 0 && !bytes.Equal(blob, data) { | 			if bytes.Compare(account[:], genMarker) <= 0 && !bytes.Equal(blob, data) { | ||||||
| 				t.Fatalf("test %d: pre-marker (%x) account access (%x) mismatch: have %x, want %x", i, genMarker, account, blob, data) | 				t.Fatalf("test %d: pre-marker (%x) account access (%x) mismatch: have %x, want %x", i, genMarker, account, blob, data) | ||||||
| @@ -326,7 +326,7 @@ func TestDiskPartialMerge(t *testing.T) { | |||||||
| 			t.Helper() | 			t.Helper() | ||||||
| 			blob, err := base.Storage(account, slot) | 			blob, err := base.Storage(account, slot) | ||||||
| 			if bytes.Compare(append(account[:], slot[:]...), genMarker) > 0 && err != ErrNotCoveredYet { | 			if bytes.Compare(append(account[:], slot[:]...), genMarker) > 0 && err != ErrNotCoveredYet { | ||||||
| 				t.Fatalf("test %d: post-marker (%x) storage access (%x:%x) succeded: %x", i, genMarker, account, slot, blob) | 				t.Fatalf("test %d: post-marker (%x) storage access (%x:%x) succeeded: %x", i, genMarker, account, slot, blob) | ||||||
| 			} | 			} | ||||||
| 			if bytes.Compare(append(account[:], slot[:]...), genMarker) <= 0 && !bytes.Equal(blob, data) { | 			if bytes.Compare(append(account[:], slot[:]...), genMarker) <= 0 && !bytes.Equal(blob, data) { | ||||||
| 				t.Fatalf("test %d: pre-marker (%x) storage access (%x:%x) mismatch: have %x, want %x", i, genMarker, account, slot, blob, data) | 				t.Fatalf("test %d: pre-marker (%x) storage access (%x:%x) mismatch: have %x, want %x", i, genMarker, account, slot, blob, data) | ||||||
| @@ -386,7 +386,7 @@ func TestDiskPartialMerge(t *testing.T) { | |||||||
| 			t.Helper() | 			t.Helper() | ||||||
| 			blob := rawdb.ReadAccountSnapshot(db, account) | 			blob := rawdb.ReadAccountSnapshot(db, account) | ||||||
| 			if bytes.Compare(account[:], genMarker) > 0 && blob != nil { | 			if bytes.Compare(account[:], genMarker) > 0 && blob != nil { | ||||||
| 				t.Fatalf("test %d: post-marker (%x) account database access (%x) succeded: %x", i, genMarker, account, blob) | 				t.Fatalf("test %d: post-marker (%x) account database access (%x) succeeded: %x", i, genMarker, account, blob) | ||||||
| 			} | 			} | ||||||
| 			if bytes.Compare(account[:], genMarker) <= 0 && !bytes.Equal(blob, data) { | 			if bytes.Compare(account[:], genMarker) <= 0 && !bytes.Equal(blob, data) { | ||||||
| 				t.Fatalf("test %d: pre-marker (%x) account database access (%x) mismatch: have %x, want %x", i, genMarker, account, blob, data) | 				t.Fatalf("test %d: pre-marker (%x) account database access (%x) mismatch: have %x, want %x", i, genMarker, account, blob, data) | ||||||
| @@ -406,7 +406,7 @@ func TestDiskPartialMerge(t *testing.T) { | |||||||
| 			t.Helper() | 			t.Helper() | ||||||
| 			blob := rawdb.ReadStorageSnapshot(db, account, slot) | 			blob := rawdb.ReadStorageSnapshot(db, account, slot) | ||||||
| 			if bytes.Compare(append(account[:], slot[:]...), genMarker) > 0 && blob != nil { | 			if bytes.Compare(append(account[:], slot[:]...), genMarker) > 0 && blob != nil { | ||||||
| 				t.Fatalf("test %d: post-marker (%x) storage database access (%x:%x) succeded: %x", i, genMarker, account, slot, blob) | 				t.Fatalf("test %d: post-marker (%x) storage database access (%x:%x) succeeded: %x", i, genMarker, account, slot, blob) | ||||||
| 			} | 			} | ||||||
| 			if bytes.Compare(append(account[:], slot[:]...), genMarker) <= 0 && !bytes.Equal(blob, data) { | 			if bytes.Compare(append(account[:], slot[:]...), genMarker) <= 0 && !bytes.Equal(blob, data) { | ||||||
| 				t.Fatalf("test %d: pre-marker (%x) storage database access (%x:%x) mismatch: have %x, want %x", i, genMarker, account, slot, blob, data) | 				t.Fatalf("test %d: pre-marker (%x) storage database access (%x:%x) mismatch: have %x, want %x", i, genMarker, account, slot, blob, data) | ||||||
|   | |||||||
| @@ -93,7 +93,7 @@ func (gs *generatorStats) Log(msg string, marker []byte) { | |||||||
| // and generation is continued in the background until done. | // and generation is continued in the background until done. | ||||||
| func generateSnapshot(diskdb ethdb.KeyValueStore, triedb *trie.Database, cache int, root common.Hash, wiper chan struct{}) *diskLayer { | func generateSnapshot(diskdb ethdb.KeyValueStore, triedb *trie.Database, cache int, root common.Hash, wiper chan struct{}) *diskLayer { | ||||||
| 	// Wipe any previously existing snapshot from the database if no wiper is | 	// Wipe any previously existing snapshot from the database if no wiper is | ||||||
| 	// currenty in progress. | 	// currently in progress. | ||||||
| 	if wiper == nil { | 	if wiper == nil { | ||||||
| 		wiper = wipeSnapshot(diskdb, true) | 		wiper = wipeSnapshot(diskdb, true) | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -1,60 +0,0 @@ | |||||||
|  |  | ||||||
| ## How the fast iterator works |  | ||||||
|  |  | ||||||
| Consider the following example, where we have `6` iterators, sorted from |  | ||||||
| left to right in ascending order. |  | ||||||
|  |  | ||||||
| Our 'primary' `A` iterator is on the left, containing the elements `[0,1,8]` |  | ||||||
| ``` |  | ||||||
|  A  B  C  D  E  F |  | ||||||
|  |  | ||||||
|  0  1  2  4  7  9 |  | ||||||
|  1  2  9  -  14 13 |  | ||||||
|  8  8  -     15 15 |  | ||||||
|  -  -        -  16 |  | ||||||
|                  - |  | ||||||
| ``` |  | ||||||
| When we call `Next` on the primary iterator, we get (ignoring the future keys) |  | ||||||
|  |  | ||||||
| ``` |  | ||||||
| A  B  C  D  E  F |  | ||||||
|  |  | ||||||
| 1  1  2  4  7  9 |  | ||||||
| ``` |  | ||||||
| We detect that we now got an equality between our element and the next element. |  | ||||||
| And we need to continue `Next`ing on the next element |  | ||||||
|  |  | ||||||
| ``` |  | ||||||
| 1  2  2  4  7  9 |  | ||||||
| ``` |  | ||||||
| And move on: |  | ||||||
| ``` |  | ||||||
| A  B  C  D  E  F |  | ||||||
|  |  | ||||||
| 1  2  9  4  7  9 |  | ||||||
| ``` |  | ||||||
| Now we broke out of the equality, but we need to re-sort the element `C` |  | ||||||
|  |  | ||||||
| ``` |  | ||||||
| A  B  D  E  F  C |  | ||||||
|  |  | ||||||
| 1  2  4  7  9  9 |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| And after shifting it rightwards, we check equality again, and find `C == F`, and thus |  | ||||||
| call `Next` on `C` |  | ||||||
|  |  | ||||||
| ``` |  | ||||||
| A  B  D  E  F  C |  | ||||||
|  |  | ||||||
| 1  2  4  7  9  - |  | ||||||
| ``` |  | ||||||
| At this point, `C` was exhausted, and is removed |  | ||||||
|  |  | ||||||
| ``` |  | ||||||
| A  B  D  E  F |  | ||||||
|  |  | ||||||
| 1  2  4  7  9 |  | ||||||
| ``` |  | ||||||
| And we're done with this step. |  | ||||||
|  |  | ||||||
| @@ -35,7 +35,7 @@ type binaryAccountIterator struct { | |||||||
| } | } | ||||||
|  |  | ||||||
| // newBinaryAccountIterator creates a simplistic account iterator to step over | // newBinaryAccountIterator creates a simplistic account iterator to step over | ||||||
| // all the accounts in a slow, but eaily verifyable way. | // all the accounts in a slow, but eaily verifiable way. | ||||||
| func (dl *diffLayer) newBinaryAccountIterator() AccountIterator { | func (dl *diffLayer) newBinaryAccountIterator() AccountIterator { | ||||||
| 	parent, ok := dl.parent.(*diffLayer) | 	parent, ok := dl.parent.(*diffLayer) | ||||||
| 	if !ok { | 	if !ok { | ||||||
|   | |||||||
| @@ -41,7 +41,7 @@ func (its weightedAccountIterators) Len() int { return len(its) } | |||||||
| // Less implements sort.Interface, returning which of two iterators in the stack | // Less implements sort.Interface, returning which of two iterators in the stack | ||||||
| // is before the other. | // is before the other. | ||||||
| func (its weightedAccountIterators) Less(i, j int) bool { | func (its weightedAccountIterators) Less(i, j int) bool { | ||||||
| 	// Order the iterators primarilly by the account hashes | 	// Order the iterators primarily by the account hashes | ||||||
| 	hashI := its[i].it.Hash() | 	hashI := its[i].it.Hash() | ||||||
| 	hashJ := its[j].it.Hash() | 	hashJ := its[j].it.Hash() | ||||||
|  |  | ||||||
| @@ -131,7 +131,7 @@ func (fi *fastAccountIterator) init() { | |||||||
| 				// determine which. | 				// determine which. | ||||||
| 				// | 				// | ||||||
| 				// This whole else-block can be avoided, if we instead | 				// This whole else-block can be avoided, if we instead | ||||||
| 				// do an inital priority-sort of the iterators. If we do that, | 				// do an initial priority-sort of the iterators. If we do that, | ||||||
| 				// then we'll only wind up here if a lower-priority (preferred) iterator | 				// then we'll only wind up here if a lower-priority (preferred) iterator | ||||||
| 				// has the same value, and then we will always just continue. | 				// has the same value, and then we will always just continue. | ||||||
| 				// However, it costs an extra sort, so it's probably not better | 				// However, it costs an extra sort, so it's probably not better | ||||||
| @@ -233,16 +233,8 @@ func (fi *fastAccountIterator) next(idx int) bool { | |||||||
| 		// The elem we're placing it next to has the same value, | 		// The elem we're placing it next to has the same value, | ||||||
| 		// so whichever winds up on n+1 will need further iteraton | 		// so whichever winds up on n+1 will need further iteraton | ||||||
| 		clash = n + 1 | 		clash = n + 1 | ||||||
| 		if cur.priority < fi.iterators[n+1].priority { |  | ||||||
| 			// We can drop the iterator here | 		return cur.priority < fi.iterators[n+1].priority | ||||||
| 			return true |  | ||||||
| 		} |  | ||||||
| 		// We need to move it one step further |  | ||||||
| 		return false |  | ||||||
| 		// TODO benchmark which is best, this works too: |  | ||||||
| 		//clash = n |  | ||||||
| 		//return true |  | ||||||
| 		// Doing so should finish the current search earlier |  | ||||||
| 	}) | 	}) | ||||||
| 	fi.move(idx, index) | 	fi.move(idx, index) | ||||||
| 	if clash != -1 { | 	if clash != -1 { | ||||||
|   | |||||||
| @@ -67,14 +67,11 @@ func (ti *testIterator) Seek(common.Hash) { | |||||||
|  |  | ||||||
| func (ti *testIterator) Next() bool { | func (ti *testIterator) Next() bool { | ||||||
| 	ti.values = ti.values[1:] | 	ti.values = ti.values[1:] | ||||||
| 	if len(ti.values) == 0 { | 	return len(ti.values) > 0 | ||||||
| 		return false |  | ||||||
| 	} |  | ||||||
| 	return true |  | ||||||
| } | } | ||||||
|  |  | ||||||
| func (ti *testIterator) Error() error { | func (ti *testIterator) Error() error { | ||||||
| 	panic("implement me") | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
| func (ti *testIterator) Hash() common.Hash { | func (ti *testIterator) Hash() common.Hash { | ||||||
| @@ -82,7 +79,7 @@ func (ti *testIterator) Hash() common.Hash { | |||||||
| } | } | ||||||
|  |  | ||||||
| func (ti *testIterator) Account() []byte { | func (ti *testIterator) Account() []byte { | ||||||
| 	panic("implement me") | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
| func (ti *testIterator) Release() {} | func (ti *testIterator) Release() {} | ||||||
|   | |||||||
| @@ -164,7 +164,7 @@ func loadDiffLayer(parent snapshot, r *rlp.Stream) (snapshot, error) { | |||||||
| // Journal writes the persistent layer generator stats into a buffer to be stored | // Journal writes the persistent layer generator stats into a buffer to be stored | ||||||
| // in the database as the snapshot journal. | // in the database as the snapshot journal. | ||||||
| func (dl *diskLayer) Journal(buffer *bytes.Buffer) (common.Hash, error) { | func (dl *diskLayer) Journal(buffer *bytes.Buffer) (common.Hash, error) { | ||||||
| 	// If the snapshot is currenty being generated, abort it | 	// If the snapshot is currently being generated, abort it | ||||||
| 	var stats *generatorStats | 	var stats *generatorStats | ||||||
| 	if dl.genAbort != nil { | 	if dl.genAbort != nil { | ||||||
| 		abort := make(chan *generatorStats) | 		abort := make(chan *generatorStats) | ||||||
|   | |||||||
| @@ -34,59 +34,3 @@ func (hs hashes) Less(i, j int) bool { return bytes.Compare(hs[i][:], hs[j][:]) | |||||||
|  |  | ||||||
| // Swap swaps the elements with indexes i and j. | // Swap swaps the elements with indexes i and j. | ||||||
| func (hs hashes) Swap(i, j int) { hs[i], hs[j] = hs[j], hs[i] } | func (hs hashes) Swap(i, j int) { hs[i], hs[j] = hs[j], hs[i] } | ||||||
|  |  | ||||||
| // merge combines two sorted lists of hashes into a combo sorted one. |  | ||||||
| func merge(a, b []common.Hash) []common.Hash { |  | ||||||
| 	result := make([]common.Hash, len(a)+len(b)) |  | ||||||
|  |  | ||||||
| 	i := 0 |  | ||||||
| 	for len(a) > 0 && len(b) > 0 { |  | ||||||
| 		if bytes.Compare(a[0][:], b[0][:]) < 0 { |  | ||||||
| 			result[i] = a[0] |  | ||||||
| 			a = a[1:] |  | ||||||
| 		} else { |  | ||||||
| 			result[i] = b[0] |  | ||||||
| 			b = b[1:] |  | ||||||
| 		} |  | ||||||
| 		i++ |  | ||||||
| 	} |  | ||||||
| 	for j := 0; j < len(a); j++ { |  | ||||||
| 		result[i] = a[j] |  | ||||||
| 		i++ |  | ||||||
| 	} |  | ||||||
| 	for j := 0; j < len(b); j++ { |  | ||||||
| 		result[i] = b[j] |  | ||||||
| 		i++ |  | ||||||
| 	} |  | ||||||
| 	return result |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // dedupMerge combines two sorted lists of hashes into a combo sorted one, |  | ||||||
| // and removes duplicates in the process |  | ||||||
| func dedupMerge(a, b []common.Hash) []common.Hash { |  | ||||||
| 	result := make([]common.Hash, len(a)+len(b)) |  | ||||||
| 	i := 0 |  | ||||||
| 	for len(a) > 0 && len(b) > 0 { |  | ||||||
| 		if diff := bytes.Compare(a[0][:], b[0][:]); diff < 0 { |  | ||||||
| 			result[i] = a[0] |  | ||||||
| 			a = a[1:] |  | ||||||
| 		} else { |  | ||||||
| 			result[i] = b[0] |  | ||||||
| 			b = b[1:] |  | ||||||
| 			// If they were equal, progress a too |  | ||||||
| 			if diff == 0 { |  | ||||||
| 				a = a[1:] |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		i++ |  | ||||||
| 	} |  | ||||||
| 	for j := 0; j < len(a); j++ { |  | ||||||
| 		result[i] = a[j] |  | ||||||
| 		i++ |  | ||||||
| 	} |  | ||||||
| 	for j := 0; j < len(b); j++ { |  | ||||||
| 		result[i] = b[j] |  | ||||||
| 		i++ |  | ||||||
| 	} |  | ||||||
| 	return result[:i] |  | ||||||
| } |  | ||||||
|   | |||||||
| @@ -36,7 +36,7 @@ type stateTest struct { | |||||||
|  |  | ||||||
| func newStateTest() *stateTest { | func newStateTest() *stateTest { | ||||||
| 	db := rawdb.NewMemoryDatabase() | 	db := rawdb.NewMemoryDatabase() | ||||||
| 	sdb, _ := New(common.Hash{}, NewDatabase(db)) | 	sdb, _ := New(common.Hash{}, NewDatabase(db), nil) | ||||||
| 	return &stateTest{db: db, state: sdb} | 	return &stateTest{db: db, state: sdb} | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -146,7 +146,7 @@ func TestSnapshotEmpty(t *testing.T) { | |||||||
| } | } | ||||||
|  |  | ||||||
| func TestSnapshot2(t *testing.T) { | func TestSnapshot2(t *testing.T) { | ||||||
| 	state, _ := New(common.Hash{}, NewDatabase(rawdb.NewMemoryDatabase())) | 	state, _ := New(common.Hash{}, NewDatabase(rawdb.NewMemoryDatabase()), nil) | ||||||
|  |  | ||||||
| 	stateobjaddr0 := toAddr([]byte("so0")) | 	stateobjaddr0 := toAddr([]byte("so0")) | ||||||
| 	stateobjaddr1 := toAddr([]byte("so1")) | 	stateobjaddr1 := toAddr([]byte("so1")) | ||||||
|   | |||||||
| @@ -39,7 +39,7 @@ import ( | |||||||
| func TestUpdateLeaks(t *testing.T) { | func TestUpdateLeaks(t *testing.T) { | ||||||
| 	// Create an empty state database | 	// Create an empty state database | ||||||
| 	db := rawdb.NewMemoryDatabase() | 	db := rawdb.NewMemoryDatabase() | ||||||
| 	state, _ := New(common.Hash{}, NewDatabase(db)) | 	state, _ := New(common.Hash{}, NewDatabase(db), nil) | ||||||
|  |  | ||||||
| 	// Update it with some accounts | 	// Update it with some accounts | ||||||
| 	for i := byte(0); i < 255; i++ { | 	for i := byte(0); i < 255; i++ { | ||||||
| @@ -73,8 +73,8 @@ func TestIntermediateLeaks(t *testing.T) { | |||||||
| 	// Create two state databases, one transitioning to the final state, the other final from the beginning | 	// Create two state databases, one transitioning to the final state, the other final from the beginning | ||||||
| 	transDb := rawdb.NewMemoryDatabase() | 	transDb := rawdb.NewMemoryDatabase() | ||||||
| 	finalDb := rawdb.NewMemoryDatabase() | 	finalDb := rawdb.NewMemoryDatabase() | ||||||
| 	transState, _ := New(common.Hash{}, NewDatabase(transDb)) | 	transState, _ := New(common.Hash{}, NewDatabase(transDb), nil) | ||||||
| 	finalState, _ := New(common.Hash{}, NewDatabase(finalDb)) | 	finalState, _ := New(common.Hash{}, NewDatabase(finalDb), nil) | ||||||
|  |  | ||||||
| 	modify := func(state *StateDB, addr common.Address, i, tweak byte) { | 	modify := func(state *StateDB, addr common.Address, i, tweak byte) { | ||||||
| 		state.SetBalance(addr, big.NewInt(int64(11*i)+int64(tweak))) | 		state.SetBalance(addr, big.NewInt(int64(11*i)+int64(tweak))) | ||||||
| @@ -149,7 +149,7 @@ func TestIntermediateLeaks(t *testing.T) { | |||||||
| // https://github.com/ethereum/go-ethereum/pull/15549. | // https://github.com/ethereum/go-ethereum/pull/15549. | ||||||
| func TestCopy(t *testing.T) { | func TestCopy(t *testing.T) { | ||||||
| 	// Create a random state test to copy and modify "independently" | 	// Create a random state test to copy and modify "independently" | ||||||
| 	orig, _ := New(common.Hash{}, NewDatabase(rawdb.NewMemoryDatabase())) | 	orig, _ := New(common.Hash{}, NewDatabase(rawdb.NewMemoryDatabase()), nil) | ||||||
|  |  | ||||||
| 	for i := byte(0); i < 255; i++ { | 	for i := byte(0); i < 255; i++ { | ||||||
| 		obj := orig.GetOrNewStateObject(common.BytesToAddress([]byte{i})) | 		obj := orig.GetOrNewStateObject(common.BytesToAddress([]byte{i})) | ||||||
| @@ -385,7 +385,7 @@ func (test *snapshotTest) String() string { | |||||||
| func (test *snapshotTest) run() bool { | func (test *snapshotTest) run() bool { | ||||||
| 	// Run all actions and create snapshots. | 	// Run all actions and create snapshots. | ||||||
| 	var ( | 	var ( | ||||||
| 		state, _     = New(common.Hash{}, NewDatabase(rawdb.NewMemoryDatabase())) | 		state, _     = New(common.Hash{}, NewDatabase(rawdb.NewMemoryDatabase()), nil) | ||||||
| 		snapshotRevs = make([]int, len(test.snapshots)) | 		snapshotRevs = make([]int, len(test.snapshots)) | ||||||
| 		sindex       = 0 | 		sindex       = 0 | ||||||
| 	) | 	) | ||||||
| @@ -399,7 +399,7 @@ func (test *snapshotTest) run() bool { | |||||||
| 	// Revert all snapshots in reverse order. Each revert must yield a state | 	// Revert all snapshots in reverse order. Each revert must yield a state | ||||||
| 	// that is equivalent to fresh state with all actions up the snapshot applied. | 	// that is equivalent to fresh state with all actions up the snapshot applied. | ||||||
| 	for sindex--; sindex >= 0; sindex-- { | 	for sindex--; sindex >= 0; sindex-- { | ||||||
| 		checkstate, _ := New(common.Hash{}, state.Database()) | 		checkstate, _ := New(common.Hash{}, state.Database(), nil) | ||||||
| 		for _, action := range test.actions[:test.snapshots[sindex]] { | 		for _, action := range test.actions[:test.snapshots[sindex]] { | ||||||
| 			action.fn(action, checkstate) | 			action.fn(action, checkstate) | ||||||
| 		} | 		} | ||||||
| @@ -477,7 +477,7 @@ func TestTouchDelete(t *testing.T) { | |||||||
| // TestCopyOfCopy tests that modified objects are carried over to the copy, and the copy of the copy. | // TestCopyOfCopy tests that modified objects are carried over to the copy, and the copy of the copy. | ||||||
| // See https://github.com/ethereum/go-ethereum/pull/15225#issuecomment-380191512 | // See https://github.com/ethereum/go-ethereum/pull/15225#issuecomment-380191512 | ||||||
| func TestCopyOfCopy(t *testing.T) { | func TestCopyOfCopy(t *testing.T) { | ||||||
| 	state, _ := New(common.Hash{}, NewDatabase(rawdb.NewMemoryDatabase())) | 	state, _ := New(common.Hash{}, NewDatabase(rawdb.NewMemoryDatabase()), nil) | ||||||
| 	addr := common.HexToAddress("aaaa") | 	addr := common.HexToAddress("aaaa") | ||||||
| 	state.SetBalance(addr, big.NewInt(42)) | 	state.SetBalance(addr, big.NewInt(42)) | ||||||
|  |  | ||||||
| @@ -494,7 +494,7 @@ func TestCopyOfCopy(t *testing.T) { | |||||||
| // | // | ||||||
| // See https://github.com/ethereum/go-ethereum/issues/20106. | // See https://github.com/ethereum/go-ethereum/issues/20106. | ||||||
| func TestCopyCommitCopy(t *testing.T) { | func TestCopyCommitCopy(t *testing.T) { | ||||||
| 	state, _ := New(common.Hash{}, NewDatabase(rawdb.NewMemoryDatabase())) | 	state, _ := New(common.Hash{}, NewDatabase(rawdb.NewMemoryDatabase()), nil) | ||||||
|  |  | ||||||
| 	// Create an account and check if the retrieved balance is correct | 	// Create an account and check if the retrieved balance is correct | ||||||
| 	addr := common.HexToAddress("0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe") | 	addr := common.HexToAddress("0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe") | ||||||
| @@ -566,7 +566,7 @@ func TestCopyCommitCopy(t *testing.T) { | |||||||
| // | // | ||||||
| // See https://github.com/ethereum/go-ethereum/issues/20106. | // See https://github.com/ethereum/go-ethereum/issues/20106. | ||||||
| func TestCopyCopyCommitCopy(t *testing.T) { | func TestCopyCopyCommitCopy(t *testing.T) { | ||||||
| 	state, _ := New(common.Hash{}, NewDatabase(rawdb.NewMemoryDatabase())) | 	state, _ := New(common.Hash{}, NewDatabase(rawdb.NewMemoryDatabase()), nil) | ||||||
|  |  | ||||||
| 	// Create an account and check if the retrieved balance is correct | 	// Create an account and check if the retrieved balance is correct | ||||||
| 	addr := common.HexToAddress("0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe") | 	addr := common.HexToAddress("0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe") | ||||||
| @@ -656,7 +656,7 @@ func TestCopyCopyCommitCopy(t *testing.T) { | |||||||
| // first, but the journal wiped the entire state object on create-revert. | // first, but the journal wiped the entire state object on create-revert. | ||||||
| func TestDeleteCreateRevert(t *testing.T) { | func TestDeleteCreateRevert(t *testing.T) { | ||||||
| 	// Create an initial state with a single contract | 	// Create an initial state with a single contract | ||||||
| 	state, _ := New(common.Hash{}, NewDatabase(rawdb.NewMemoryDatabase())) | 	state, _ := New(common.Hash{}, NewDatabase(rawdb.NewMemoryDatabase()), nil) | ||||||
|  |  | ||||||
| 	addr := toAddr([]byte("so")) | 	addr := toAddr([]byte("so")) | ||||||
| 	state.SetBalance(addr, big.NewInt(1)) | 	state.SetBalance(addr, big.NewInt(1)) | ||||||
|   | |||||||
| @@ -41,7 +41,7 @@ type testAccount struct { | |||||||
| func makeTestState() (Database, common.Hash, []*testAccount) { | func makeTestState() (Database, common.Hash, []*testAccount) { | ||||||
| 	// Create an empty state | 	// Create an empty state | ||||||
| 	db := NewDatabase(rawdb.NewMemoryDatabase()) | 	db := NewDatabase(rawdb.NewMemoryDatabase()) | ||||||
| 	state, _ := New(common.Hash{}, db) | 	state, _ := New(common.Hash{}, db, nil) | ||||||
|  |  | ||||||
| 	// Fill it with some arbitrary data | 	// Fill it with some arbitrary data | ||||||
| 	accounts := []*testAccount{} | 	accounts := []*testAccount{} | ||||||
| @@ -72,7 +72,7 @@ func makeTestState() (Database, common.Hash, []*testAccount) { | |||||||
| // account array. | // account array. | ||||||
| func checkStateAccounts(t *testing.T, db ethdb.Database, root common.Hash, accounts []*testAccount) { | func checkStateAccounts(t *testing.T, db ethdb.Database, root common.Hash, accounts []*testAccount) { | ||||||
| 	// Check root availability and state contents | 	// Check root availability and state contents | ||||||
| 	state, err := New(root, NewDatabase(db)) | 	state, err := New(root, NewDatabase(db), nil) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		t.Fatalf("failed to create state trie at %x: %v", root, err) | 		t.Fatalf("failed to create state trie at %x: %v", root, err) | ||||||
| 	} | 	} | ||||||
| @@ -113,7 +113,7 @@ func checkStateConsistency(db ethdb.Database, root common.Hash) error { | |||||||
| 	if _, err := db.Get(root.Bytes()); err != nil { | 	if _, err := db.Get(root.Bytes()); err != nil { | ||||||
| 		return nil // Consider a non existent state consistent. | 		return nil // Consider a non existent state consistent. | ||||||
| 	} | 	} | ||||||
| 	state, err := New(root, NewDatabase(db)) | 	state, err := New(root, NewDatabase(db), nil) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -86,7 +86,7 @@ func pricedDataTransaction(nonce uint64, gaslimit uint64, gasprice *big.Int, key | |||||||
| } | } | ||||||
|  |  | ||||||
| func setupTxPool() (*TxPool, *ecdsa.PrivateKey) { | func setupTxPool() (*TxPool, *ecdsa.PrivateKey) { | ||||||
| 	statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase())) | 	statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase()), nil) | ||||||
| 	blockchain := &testBlockChain{statedb, 10000000, new(event.Feed)} | 	blockchain := &testBlockChain{statedb, 10000000, new(event.Feed)} | ||||||
|  |  | ||||||
| 	key, _ := crypto.GenerateKey() | 	key, _ := crypto.GenerateKey() | ||||||
| @@ -171,7 +171,7 @@ func (c *testChain) State() (*state.StateDB, error) { | |||||||
| 	// a state change between those fetches. | 	// a state change between those fetches. | ||||||
| 	stdb := c.statedb | 	stdb := c.statedb | ||||||
| 	if *c.trigger { | 	if *c.trigger { | ||||||
| 		c.statedb, _ = state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase())) | 		c.statedb, _ = state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase()), nil) | ||||||
| 		// simulate that the new head block included tx0 and tx1 | 		// simulate that the new head block included tx0 and tx1 | ||||||
| 		c.statedb.SetNonce(c.address, 2) | 		c.statedb.SetNonce(c.address, 2) | ||||||
| 		c.statedb.SetBalance(c.address, new(big.Int).SetUint64(params.Ether)) | 		c.statedb.SetBalance(c.address, new(big.Int).SetUint64(params.Ether)) | ||||||
| @@ -189,7 +189,7 @@ func TestStateChangeDuringTransactionPoolReset(t *testing.T) { | |||||||
| 	var ( | 	var ( | ||||||
| 		key, _     = crypto.GenerateKey() | 		key, _     = crypto.GenerateKey() | ||||||
| 		address    = crypto.PubkeyToAddress(key.PublicKey) | 		address    = crypto.PubkeyToAddress(key.PublicKey) | ||||||
| 		statedb, _ = state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase())) | 		statedb, _ = state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase()), nil) | ||||||
| 		trigger    = false | 		trigger    = false | ||||||
| 	) | 	) | ||||||
|  |  | ||||||
| @@ -345,7 +345,7 @@ func TestTransactionChainFork(t *testing.T) { | |||||||
|  |  | ||||||
| 	addr := crypto.PubkeyToAddress(key.PublicKey) | 	addr := crypto.PubkeyToAddress(key.PublicKey) | ||||||
| 	resetState := func() { | 	resetState := func() { | ||||||
| 		statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase())) | 		statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase()), nil) | ||||||
| 		statedb.AddBalance(addr, big.NewInt(100000000000000)) | 		statedb.AddBalance(addr, big.NewInt(100000000000000)) | ||||||
|  |  | ||||||
| 		pool.chain = &testBlockChain{statedb, 1000000, new(event.Feed)} | 		pool.chain = &testBlockChain{statedb, 1000000, new(event.Feed)} | ||||||
| @@ -374,7 +374,7 @@ func TestTransactionDoubleNonce(t *testing.T) { | |||||||
|  |  | ||||||
| 	addr := crypto.PubkeyToAddress(key.PublicKey) | 	addr := crypto.PubkeyToAddress(key.PublicKey) | ||||||
| 	resetState := func() { | 	resetState := func() { | ||||||
| 		statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase())) | 		statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase()), nil) | ||||||
| 		statedb.AddBalance(addr, big.NewInt(100000000000000)) | 		statedb.AddBalance(addr, big.NewInt(100000000000000)) | ||||||
|  |  | ||||||
| 		pool.chain = &testBlockChain{statedb, 1000000, new(event.Feed)} | 		pool.chain = &testBlockChain{statedb, 1000000, new(event.Feed)} | ||||||
| @@ -565,7 +565,7 @@ func TestTransactionPostponing(t *testing.T) { | |||||||
| 	t.Parallel() | 	t.Parallel() | ||||||
|  |  | ||||||
| 	// Create the pool to test the postponing with | 	// Create the pool to test the postponing with | ||||||
| 	statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase())) | 	statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase()), nil) | ||||||
| 	blockchain := &testBlockChain{statedb, 1000000, new(event.Feed)} | 	blockchain := &testBlockChain{statedb, 1000000, new(event.Feed)} | ||||||
|  |  | ||||||
| 	pool := NewTxPool(testTxPoolConfig, params.TestChainConfig, blockchain) | 	pool := NewTxPool(testTxPoolConfig, params.TestChainConfig, blockchain) | ||||||
| @@ -778,7 +778,7 @@ func testTransactionQueueGlobalLimiting(t *testing.T, nolocals bool) { | |||||||
| 	t.Parallel() | 	t.Parallel() | ||||||
|  |  | ||||||
| 	// Create the pool to test the limit enforcement with | 	// Create the pool to test the limit enforcement with | ||||||
| 	statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase())) | 	statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase()), nil) | ||||||
| 	blockchain := &testBlockChain{statedb, 1000000, new(event.Feed)} | 	blockchain := &testBlockChain{statedb, 1000000, new(event.Feed)} | ||||||
|  |  | ||||||
| 	config := testTxPoolConfig | 	config := testTxPoolConfig | ||||||
| @@ -866,7 +866,7 @@ func testTransactionQueueTimeLimiting(t *testing.T, nolocals bool) { | |||||||
| 	evictionInterval = time.Second | 	evictionInterval = time.Second | ||||||
|  |  | ||||||
| 	// Create the pool to test the non-expiration enforcement | 	// Create the pool to test the non-expiration enforcement | ||||||
| 	statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase())) | 	statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase()), nil) | ||||||
| 	blockchain := &testBlockChain{statedb, 1000000, new(event.Feed)} | 	blockchain := &testBlockChain{statedb, 1000000, new(event.Feed)} | ||||||
|  |  | ||||||
| 	config := testTxPoolConfig | 	config := testTxPoolConfig | ||||||
| @@ -969,7 +969,7 @@ func TestTransactionPendingGlobalLimiting(t *testing.T) { | |||||||
| 	t.Parallel() | 	t.Parallel() | ||||||
|  |  | ||||||
| 	// Create the pool to test the limit enforcement with | 	// Create the pool to test the limit enforcement with | ||||||
| 	statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase())) | 	statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase()), nil) | ||||||
| 	blockchain := &testBlockChain{statedb, 1000000, new(event.Feed)} | 	blockchain := &testBlockChain{statedb, 1000000, new(event.Feed)} | ||||||
|  |  | ||||||
| 	config := testTxPoolConfig | 	config := testTxPoolConfig | ||||||
| @@ -1071,7 +1071,7 @@ func TestTransactionCapClearsFromAll(t *testing.T) { | |||||||
| 	t.Parallel() | 	t.Parallel() | ||||||
|  |  | ||||||
| 	// Create the pool to test the limit enforcement with | 	// Create the pool to test the limit enforcement with | ||||||
| 	statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase())) | 	statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase()), nil) | ||||||
| 	blockchain := &testBlockChain{statedb, 1000000, new(event.Feed)} | 	blockchain := &testBlockChain{statedb, 1000000, new(event.Feed)} | ||||||
|  |  | ||||||
| 	config := testTxPoolConfig | 	config := testTxPoolConfig | ||||||
| @@ -1105,7 +1105,7 @@ func TestTransactionPendingMinimumAllowance(t *testing.T) { | |||||||
| 	t.Parallel() | 	t.Parallel() | ||||||
|  |  | ||||||
| 	// Create the pool to test the limit enforcement with | 	// Create the pool to test the limit enforcement with | ||||||
| 	statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase())) | 	statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase()), nil) | ||||||
| 	blockchain := &testBlockChain{statedb, 1000000, new(event.Feed)} | 	blockchain := &testBlockChain{statedb, 1000000, new(event.Feed)} | ||||||
|  |  | ||||||
| 	config := testTxPoolConfig | 	config := testTxPoolConfig | ||||||
| @@ -1153,7 +1153,7 @@ func TestTransactionPoolRepricing(t *testing.T) { | |||||||
| 	t.Parallel() | 	t.Parallel() | ||||||
|  |  | ||||||
| 	// Create the pool to test the pricing enforcement with | 	// Create the pool to test the pricing enforcement with | ||||||
| 	statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase())) | 	statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase()), nil) | ||||||
| 	blockchain := &testBlockChain{statedb, 1000000, new(event.Feed)} | 	blockchain := &testBlockChain{statedb, 1000000, new(event.Feed)} | ||||||
|  |  | ||||||
| 	pool := NewTxPool(testTxPoolConfig, params.TestChainConfig, blockchain) | 	pool := NewTxPool(testTxPoolConfig, params.TestChainConfig, blockchain) | ||||||
| @@ -1274,7 +1274,7 @@ func TestTransactionPoolRepricingKeepsLocals(t *testing.T) { | |||||||
| 	t.Parallel() | 	t.Parallel() | ||||||
|  |  | ||||||
| 	// Create the pool to test the pricing enforcement with | 	// Create the pool to test the pricing enforcement with | ||||||
| 	statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase())) | 	statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase()), nil) | ||||||
| 	blockchain := &testBlockChain{statedb, 1000000, new(event.Feed)} | 	blockchain := &testBlockChain{statedb, 1000000, new(event.Feed)} | ||||||
|  |  | ||||||
| 	pool := NewTxPool(testTxPoolConfig, params.TestChainConfig, blockchain) | 	pool := NewTxPool(testTxPoolConfig, params.TestChainConfig, blockchain) | ||||||
| @@ -1336,7 +1336,7 @@ func TestTransactionPoolUnderpricing(t *testing.T) { | |||||||
| 	t.Parallel() | 	t.Parallel() | ||||||
|  |  | ||||||
| 	// Create the pool to test the pricing enforcement with | 	// Create the pool to test the pricing enforcement with | ||||||
| 	statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase())) | 	statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase()), nil) | ||||||
| 	blockchain := &testBlockChain{statedb, 1000000, new(event.Feed)} | 	blockchain := &testBlockChain{statedb, 1000000, new(event.Feed)} | ||||||
|  |  | ||||||
| 	config := testTxPoolConfig | 	config := testTxPoolConfig | ||||||
| @@ -1442,7 +1442,7 @@ func TestTransactionPoolStableUnderpricing(t *testing.T) { | |||||||
| 	t.Parallel() | 	t.Parallel() | ||||||
|  |  | ||||||
| 	// Create the pool to test the pricing enforcement with | 	// Create the pool to test the pricing enforcement with | ||||||
| 	statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase())) | 	statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase()), nil) | ||||||
| 	blockchain := &testBlockChain{statedb, 1000000, new(event.Feed)} | 	blockchain := &testBlockChain{statedb, 1000000, new(event.Feed)} | ||||||
|  |  | ||||||
| 	config := testTxPoolConfig | 	config := testTxPoolConfig | ||||||
| @@ -1507,7 +1507,7 @@ func TestTransactionDeduplication(t *testing.T) { | |||||||
| 	t.Parallel() | 	t.Parallel() | ||||||
|  |  | ||||||
| 	// Create the pool to test the pricing enforcement with | 	// Create the pool to test the pricing enforcement with | ||||||
| 	statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase())) | 	statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase()), nil) | ||||||
| 	blockchain := &testBlockChain{statedb, 1000000, new(event.Feed)} | 	blockchain := &testBlockChain{statedb, 1000000, new(event.Feed)} | ||||||
|  |  | ||||||
| 	pool := NewTxPool(testTxPoolConfig, params.TestChainConfig, blockchain) | 	pool := NewTxPool(testTxPoolConfig, params.TestChainConfig, blockchain) | ||||||
| @@ -1573,7 +1573,7 @@ func TestTransactionReplacement(t *testing.T) { | |||||||
| 	t.Parallel() | 	t.Parallel() | ||||||
|  |  | ||||||
| 	// Create the pool to test the pricing enforcement with | 	// Create the pool to test the pricing enforcement with | ||||||
| 	statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase())) | 	statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase()), nil) | ||||||
| 	blockchain := &testBlockChain{statedb, 1000000, new(event.Feed)} | 	blockchain := &testBlockChain{statedb, 1000000, new(event.Feed)} | ||||||
|  |  | ||||||
| 	pool := NewTxPool(testTxPoolConfig, params.TestChainConfig, blockchain) | 	pool := NewTxPool(testTxPoolConfig, params.TestChainConfig, blockchain) | ||||||
| @@ -1668,7 +1668,7 @@ func testTransactionJournaling(t *testing.T, nolocals bool) { | |||||||
| 	os.Remove(journal) | 	os.Remove(journal) | ||||||
|  |  | ||||||
| 	// Create the original pool to inject transaction into the journal | 	// Create the original pool to inject transaction into the journal | ||||||
| 	statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase())) | 	statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase()), nil) | ||||||
| 	blockchain := &testBlockChain{statedb, 1000000, new(event.Feed)} | 	blockchain := &testBlockChain{statedb, 1000000, new(event.Feed)} | ||||||
|  |  | ||||||
| 	config := testTxPoolConfig | 	config := testTxPoolConfig | ||||||
| @@ -1766,7 +1766,7 @@ func TestTransactionStatusCheck(t *testing.T) { | |||||||
| 	t.Parallel() | 	t.Parallel() | ||||||
|  |  | ||||||
| 	// Create the pool to test the status retrievals with | 	// Create the pool to test the status retrievals with | ||||||
| 	statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase())) | 	statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase()), nil) | ||||||
| 	blockchain := &testBlockChain{statedb, 1000000, new(event.Feed)} | 	blockchain := &testBlockChain{statedb, 1000000, new(event.Feed)} | ||||||
|  |  | ||||||
| 	pool := NewTxPool(testTxPoolConfig, params.TestChainConfig, blockchain) | 	pool := NewTxPool(testTxPoolConfig, params.TestChainConfig, blockchain) | ||||||
|   | |||||||
| @@ -81,7 +81,7 @@ func TestEIP2200(t *testing.T) { | |||||||
| 	for i, tt := range eip2200Tests { | 	for i, tt := range eip2200Tests { | ||||||
| 		address := common.BytesToAddress([]byte("contract")) | 		address := common.BytesToAddress([]byte("contract")) | ||||||
|  |  | ||||||
| 		statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase())) | 		statedb, _ := state.New(common.Hash{}, state.NewDatabase(rawdb.NewMemoryDatabase()), nil) | ||||||
| 		statedb.CreateAccount(address) | 		statedb.CreateAccount(address) | ||||||
| 		statedb.SetCode(address, hexutil.MustDecode(tt.input)) | 		statedb.SetCode(address, hexutil.MustDecode(tt.input)) | ||||||
| 		statedb.SetState(address, common.Hash{}, common.BytesToHash([]byte{tt.original})) | 		statedb.SetState(address, common.Hash{}, common.BytesToHash([]byte{tt.original})) | ||||||
|   | |||||||
| @@ -91,7 +91,7 @@ func odrAccounts(ctx context.Context, db ethdb.Database, config *params.ChainCon | |||||||
| 	for _, addr := range acc { | 	for _, addr := range acc { | ||||||
| 		if bc != nil { | 		if bc != nil { | ||||||
| 			header := bc.GetHeaderByHash(bhash) | 			header := bc.GetHeaderByHash(bhash) | ||||||
| 			st, err = state.New(header.Root, state.NewDatabase(db)) | 			st, err = state.New(header.Root, state.NewDatabase(db), nil) | ||||||
| 		} else { | 		} else { | ||||||
| 			header := lc.GetHeaderByHash(bhash) | 			header := lc.GetHeaderByHash(bhash) | ||||||
| 			st = light.NewState(ctx, header, lc.Odr()) | 			st = light.NewState(ctx, header, lc.Odr()) | ||||||
| @@ -122,7 +122,7 @@ func odrContractCall(ctx context.Context, db ethdb.Database, config *params.Chai | |||||||
| 		data[35] = byte(i) | 		data[35] = byte(i) | ||||||
| 		if bc != nil { | 		if bc != nil { | ||||||
| 			header := bc.GetHeaderByHash(bhash) | 			header := bc.GetHeaderByHash(bhash) | ||||||
| 			statedb, err := state.New(header.Root, state.NewDatabase(db)) | 			statedb, err := state.New(header.Root, state.NewDatabase(db), nil) | ||||||
|  |  | ||||||
| 			if err == nil { | 			if err == nil { | ||||||
| 				from := statedb.GetOrNewStateObject(bankAddr) | 				from := statedb.GetOrNewStateObject(bankAddr) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user