@ -25,6 +25,7 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/rawdb"
"github.com/ethereum/go-ethereum/core/rawdb"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/rlp"
"github.com/ethereum/go-ethereum/rlp"
@ -49,9 +50,9 @@ func TestGeneration(t *testing.T) {
var helper = newHelper ( )
var helper = newHelper ( )
stRoot := helper . makeStorageTrie ( common . Hash { } , common . Hash { } , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , false )
stRoot := helper . makeStorageTrie ( common . Hash { } , common . Hash { } , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , false )
helper . addTrieAccount ( "acc-1" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } )
helper . addTrieAccount ( "acc-1" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
helper . addTrieAccount ( "acc-2" , & Account { Balance : big . NewInt ( 2 ) , Root : emptyRoot . Bytes ( ) , CodeHash : emptyCode . Bytes ( ) } )
helper . addTrieAccount ( "acc-2" , & Account { Balance : big . NewInt ( 2 ) , Root : typ es . E mptyRootHash . Bytes ( ) , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
helper . addTrieAccount ( "acc-3" , & Account { Balance : big . NewInt ( 3 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } )
helper . addTrieAccount ( "acc-3" , & Account { Balance : big . NewInt ( 3 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-1" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-1" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-3" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-3" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
@ -83,16 +84,16 @@ func TestGenerateExistentState(t *testing.T) {
var helper = newHelper ( )
var helper = newHelper ( )
stRoot := helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-1" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
stRoot := helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-1" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . addTrieAccount ( "acc-1" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } )
helper . addTrieAccount ( "acc-1" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
helper . addSnapAccount ( "acc-1" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } )
helper . addSnapAccount ( "acc-1" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
helper . addSnapStorage ( "acc-1" , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } )
helper . addSnapStorage ( "acc-1" , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } )
helper . addTrieAccount ( "acc-2" , & Account { Balance : big . NewInt ( 2 ) , Root : emptyRoot . Bytes ( ) , CodeHash : emptyCode . Bytes ( ) } )
helper . addTrieAccount ( "acc-2" , & Account { Balance : big . NewInt ( 2 ) , Root : typ es . E mptyRootHash . Bytes ( ) , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
helper . addSnapAccount ( "acc-2" , & Account { Balance : big . NewInt ( 2 ) , Root : emptyRoot . Bytes ( ) , CodeHash : emptyCode . Bytes ( ) } )
helper . addSnapAccount ( "acc-2" , & Account { Balance : big . NewInt ( 2 ) , Root : typ es . E mptyRootHash . Bytes ( ) , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
stRoot = helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-3" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
stRoot = helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-3" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . addTrieAccount ( "acc-3" , & Account { Balance : big . NewInt ( 3 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } )
helper . addTrieAccount ( "acc-3" , & Account { Balance : big . NewInt ( 3 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
helper . addSnapAccount ( "acc-3" , & Account { Balance : big . NewInt ( 3 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } )
helper . addSnapAccount ( "acc-3" , & Account { Balance : big . NewInt ( 3 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
helper . addSnapStorage ( "acc-3" , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } )
helper . addSnapStorage ( "acc-3" , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } )
root , snap := helper . CommitAndGenerate ( )
root , snap := helper . CommitAndGenerate ( )
@ -235,28 +236,28 @@ func TestGenerateExistentStateWithWrongStorage(t *testing.T) {
helper := newHelper ( )
helper := newHelper ( )
// Account one, empty root but non-empty database
// Account one, empty root but non-empty database
helper . addAccount ( "acc-1" , & Account { Balance : big . NewInt ( 1 ) , Root : emptyRoot . Bytes ( ) , CodeHash : emptyCode . Bytes ( ) } )
helper . addAccount ( "acc-1" , & Account { Balance : big . NewInt ( 1 ) , Root : typ es . E mptyRootHash . Bytes ( ) , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
helper . addSnapStorage ( "acc-1" , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } )
helper . addSnapStorage ( "acc-1" , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } )
// Account two, non empty root but empty database
// Account two, non empty root but empty database
stRoot := helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-2" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
stRoot := helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-2" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . addAccount ( "acc-2" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } )
helper . addAccount ( "acc-2" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
// Miss slots
// Miss slots
{
{
// Account three, non empty root but misses slots in the beginning
// Account three, non empty root but misses slots in the beginning
helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-3" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-3" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . addAccount ( "acc-3" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } )
helper . addAccount ( "acc-3" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
helper . addSnapStorage ( "acc-3" , [ ] string { "key-2" , "key-3" } , [ ] string { "val-2" , "val-3" } )
helper . addSnapStorage ( "acc-3" , [ ] string { "key-2" , "key-3" } , [ ] string { "val-2" , "val-3" } )
// Account four, non empty root but misses slots in the middle
// Account four, non empty root but misses slots in the middle
helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-4" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-4" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . addAccount ( "acc-4" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } )
helper . addAccount ( "acc-4" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
helper . addSnapStorage ( "acc-4" , [ ] string { "key-1" , "key-3" } , [ ] string { "val-1" , "val-3" } )
helper . addSnapStorage ( "acc-4" , [ ] string { "key-1" , "key-3" } , [ ] string { "val-1" , "val-3" } )
// Account five, non empty root but misses slots in the end
// Account five, non empty root but misses slots in the end
helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-5" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-5" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . addAccount ( "acc-5" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } )
helper . addAccount ( "acc-5" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
helper . addSnapStorage ( "acc-5" , [ ] string { "key-1" , "key-2" } , [ ] string { "val-1" , "val-2" } )
helper . addSnapStorage ( "acc-5" , [ ] string { "key-1" , "key-2" } , [ ] string { "val-1" , "val-2" } )
}
}
@ -264,22 +265,22 @@ func TestGenerateExistentStateWithWrongStorage(t *testing.T) {
{
{
// Account six, non empty root but wrong slots in the beginning
// Account six, non empty root but wrong slots in the beginning
helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-6" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-6" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . addAccount ( "acc-6" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } )
helper . addAccount ( "acc-6" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
helper . addSnapStorage ( "acc-6" , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "badval-1" , "val-2" , "val-3" } )
helper . addSnapStorage ( "acc-6" , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "badval-1" , "val-2" , "val-3" } )
// Account seven, non empty root but wrong slots in the middle
// Account seven, non empty root but wrong slots in the middle
helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-7" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-7" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . addAccount ( "acc-7" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } )
helper . addAccount ( "acc-7" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
helper . addSnapStorage ( "acc-7" , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "badval-2" , "val-3" } )
helper . addSnapStorage ( "acc-7" , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "badval-2" , "val-3" } )
// Account eight, non empty root but wrong slots in the end
// Account eight, non empty root but wrong slots in the end
helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-8" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-8" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . addAccount ( "acc-8" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } )
helper . addAccount ( "acc-8" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
helper . addSnapStorage ( "acc-8" , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "badval-3" } )
helper . addSnapStorage ( "acc-8" , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "badval-3" } )
// Account 9, non empty root but rotated slots
// Account 9, non empty root but rotated slots
helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-9" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-9" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . addAccount ( "acc-9" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } )
helper . addAccount ( "acc-9" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
helper . addSnapStorage ( "acc-9" , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-3" , "val-2" } )
helper . addSnapStorage ( "acc-9" , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-3" , "val-2" } )
}
}
@ -287,17 +288,17 @@ func TestGenerateExistentStateWithWrongStorage(t *testing.T) {
{
{
// Account 10, non empty root but extra slots in the beginning
// Account 10, non empty root but extra slots in the beginning
helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-10" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-10" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . addAccount ( "acc-10" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } )
helper . addAccount ( "acc-10" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
helper . addSnapStorage ( "acc-10" , [ ] string { "key-0" , "key-1" , "key-2" , "key-3" } , [ ] string { "val-0" , "val-1" , "val-2" , "val-3" } )
helper . addSnapStorage ( "acc-10" , [ ] string { "key-0" , "key-1" , "key-2" , "key-3" } , [ ] string { "val-0" , "val-1" , "val-2" , "val-3" } )
// Account 11, non empty root but extra slots in the middle
// Account 11, non empty root but extra slots in the middle
helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-11" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-11" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . addAccount ( "acc-11" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } )
helper . addAccount ( "acc-11" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
helper . addSnapStorage ( "acc-11" , [ ] string { "key-1" , "key-2" , "key-2-1" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-2-1" , "val-3" } )
helper . addSnapStorage ( "acc-11" , [ ] string { "key-1" , "key-2" , "key-2-1" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-2-1" , "val-3" } )
// Account 12, non empty root but extra slots in the end
// Account 12, non empty root but extra slots in the end
helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-12" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-12" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . addAccount ( "acc-12" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } )
helper . addAccount ( "acc-12" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
helper . addSnapStorage ( "acc-12" , [ ] string { "key-1" , "key-2" , "key-3" , "key-4" } , [ ] string { "val-1" , "val-2" , "val-3" , "val-4" } )
helper . addSnapStorage ( "acc-12" , [ ] string { "key-1" , "key-2" , "key-3" , "key-4" } , [ ] string { "val-1" , "val-2" , "val-3" , "val-4" } )
}
}
@ -337,25 +338,25 @@ func TestGenerateExistentStateWithWrongAccounts(t *testing.T) {
// Missing accounts, only in the trie
// Missing accounts, only in the trie
{
{
helper . addTrieAccount ( "acc-1" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } ) // Beginning
helper . addTrieAccount ( "acc-1" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } ) // Beginning
helper . addTrieAccount ( "acc-4" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } ) // Middle
helper . addTrieAccount ( "acc-4" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } ) // Middle
helper . addTrieAccount ( "acc-6" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } ) // End
helper . addTrieAccount ( "acc-6" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } ) // End
}
}
// Wrong accounts
// Wrong accounts
{
{
helper . addTrieAccount ( "acc-2" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } )
helper . addTrieAccount ( "acc-2" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
helper . addSnapAccount ( "acc-2" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : common . Hex2Bytes ( "0x1234" ) } )
helper . addSnapAccount ( "acc-2" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : common . Hex2Bytes ( "0x1234" ) } )
helper . addTrieAccount ( "acc-3" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } )
helper . addTrieAccount ( "acc-3" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
helper . addSnapAccount ( "acc-3" , & Account { Balance : big . NewInt ( 1 ) , Root : emptyRoot . Bytes ( ) , CodeHash : emptyCode . Bytes ( ) } )
helper . addSnapAccount ( "acc-3" , & Account { Balance : big . NewInt ( 1 ) , Root : typ es . E mptyRootHash . Bytes ( ) , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
}
}
// Extra accounts, only in the snap
// Extra accounts, only in the snap
{
{
helper . addSnapAccount ( "acc-0" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : emptyRoot . Bytes ( ) } ) // before the beginning
helper . addSnapAccount ( "acc-0" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : types . EmptyCodeHash . Bytes ( ) } ) // before the beginning
helper . addSnapAccount ( "acc-5" , & Account { Balance : big . NewInt ( 1 ) , Root : emptyRoot . Bytes ( ) , CodeHash : common . Hex2Bytes ( "0x1234" ) } ) // Middle
helper . addSnapAccount ( "acc-5" , & Account { Balance : big . NewInt ( 1 ) , Root : typ es . E mptyRootHash . Bytes ( ) , CodeHash : common . Hex2Bytes ( "0x1234" ) } ) // Middle
helper . addSnapAccount ( "acc-7" , & Account { Balance : big . NewInt ( 1 ) , Root : emptyRoot . Bytes ( ) , CodeHash : emptyRoot . Bytes ( ) } ) // after the end
helper . addSnapAccount ( "acc-7" , & Account { Balance : big . NewInt ( 1 ) , Root : typ es . E mptyRootHash . Bytes ( ) , CodeHash : types . EmptyCodeHash . Bytes ( ) } ) // after the end
}
}
root , snap := helper . CommitAndGenerate ( )
root , snap := helper . CommitAndGenerate ( )
@ -384,9 +385,9 @@ func TestGenerateCorruptAccountTrie(t *testing.T) {
// without any storage slots to keep the test smaller.
// without any storage slots to keep the test smaller.
helper := newHelper ( )
helper := newHelper ( )
helper . addTrieAccount ( "acc-1" , & Account { Balance : big . NewInt ( 1 ) , Root : emptyRoot . Bytes ( ) , CodeHash : emptyCode . Bytes ( ) } ) // 0xc7a30f39aff471c95d8a837497ad0e49b65be475cc0953540f80cfcdbdcd9074
helper . addTrieAccount ( "acc-1" , & Account { Balance : big . NewInt ( 1 ) , Root : typ es . E mptyRootHash . Bytes ( ) , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } ) // 0xc7a30f39aff471c95d8a837497ad0e49b65be475cc0953540f80cfcdbdcd9074
helper . addTrieAccount ( "acc-2" , & Account { Balance : big . NewInt ( 2 ) , Root : emptyRoot . Bytes ( ) , CodeHash : emptyCode . Bytes ( ) } ) // 0x65145f923027566669a1ae5ccac66f945b55ff6eaeb17d2ea8e048b7d381f2d7
helper . addTrieAccount ( "acc-2" , & Account { Balance : big . NewInt ( 2 ) , Root : typ es . E mptyRootHash . Bytes ( ) , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } ) // 0x65145f923027566669a1ae5ccac66f945b55ff6eaeb17d2ea8e048b7d381f2d7
helper . addTrieAccount ( "acc-3" , & Account { Balance : big . NewInt ( 3 ) , Root : emptyRoot . Bytes ( ) , CodeHash : emptyCode . Bytes ( ) } ) // 0x19ead688e907b0fab07176120dceec244a72aff2f0aa51e8b827584e378772f4
helper . addTrieAccount ( "acc-3" , & Account { Balance : big . NewInt ( 3 ) , Root : typ es . E mptyRootHash . Bytes ( ) , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } ) // 0x19ead688e907b0fab07176120dceec244a72aff2f0aa51e8b827584e378772f4
root := helper . Commit ( ) // Root: 0xa04693ea110a31037fb5ee814308a6f1d76bdab0b11676bdf4541d2de55ba978
root := helper . Commit ( ) // Root: 0xa04693ea110a31037fb5ee814308a6f1d76bdab0b11676bdf4541d2de55ba978
@ -419,10 +420,10 @@ func TestGenerateMissingStorageTrie(t *testing.T) {
helper := newHelper ( )
helper := newHelper ( )
stRoot := helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-1" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true ) // 0xddefcd9376dd029653ef384bd2f0a126bb755fe84fdcc9e7cf421ba454f2bc67
stRoot := helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-1" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true ) // 0xddefcd9376dd029653ef384bd2f0a126bb755fe84fdcc9e7cf421ba454f2bc67
helper . addTrieAccount ( "acc-1" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } ) // 0x9250573b9c18c664139f3b6a7a8081b7d8f8916a8fcc5d94feec6c29f5fd4e9e
helper . addTrieAccount ( "acc-1" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } ) // 0x9250573b9c18c664139f3b6a7a8081b7d8f8916a8fcc5d94feec6c29f5fd4e9e
helper . addTrieAccount ( "acc-2" , & Account { Balance : big . NewInt ( 2 ) , Root : emptyRoot . Bytes ( ) , CodeHash : emptyCode . Bytes ( ) } ) // 0x65145f923027566669a1ae5ccac66f945b55ff6eaeb17d2ea8e048b7d381f2d7
helper . addTrieAccount ( "acc-2" , & Account { Balance : big . NewInt ( 2 ) , Root : typ es . E mptyRootHash . Bytes ( ) , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } ) // 0x65145f923027566669a1ae5ccac66f945b55ff6eaeb17d2ea8e048b7d381f2d7
stRoot = helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-3" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
stRoot = helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-3" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . addTrieAccount ( "acc-3" , & Account { Balance : big . NewInt ( 3 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } ) // 0x50815097425d000edfc8b3a4a13e175fc2bdcfee8bdfbf2d1ff61041d3c235b2
helper . addTrieAccount ( "acc-3" , & Account { Balance : big . NewInt ( 3 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } ) // 0x50815097425d000edfc8b3a4a13e175fc2bdcfee8bdfbf2d1ff61041d3c235b2
root := helper . Commit ( )
root := helper . Commit ( )
@ -453,10 +454,10 @@ func TestGenerateCorruptStorageTrie(t *testing.T) {
helper := newHelper ( )
helper := newHelper ( )
stRoot := helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-1" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true ) // 0xddefcd9376dd029653ef384bd2f0a126bb755fe84fdcc9e7cf421ba454f2bc67
stRoot := helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-1" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true ) // 0xddefcd9376dd029653ef384bd2f0a126bb755fe84fdcc9e7cf421ba454f2bc67
helper . addTrieAccount ( "acc-1" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } ) // 0x9250573b9c18c664139f3b6a7a8081b7d8f8916a8fcc5d94feec6c29f5fd4e9e
helper . addTrieAccount ( "acc-1" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } ) // 0x9250573b9c18c664139f3b6a7a8081b7d8f8916a8fcc5d94feec6c29f5fd4e9e
helper . addTrieAccount ( "acc-2" , & Account { Balance : big . NewInt ( 2 ) , Root : emptyRoot . Bytes ( ) , CodeHash : emptyCode . Bytes ( ) } ) // 0x65145f923027566669a1ae5ccac66f945b55ff6eaeb17d2ea8e048b7d381f2d7
helper . addTrieAccount ( "acc-2" , & Account { Balance : big . NewInt ( 2 ) , Root : typ es . E mptyRootHash . Bytes ( ) , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } ) // 0x65145f923027566669a1ae5ccac66f945b55ff6eaeb17d2ea8e048b7d381f2d7
stRoot = helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-3" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
stRoot = helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-3" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . addTrieAccount ( "acc-3" , & Account { Balance : big . NewInt ( 3 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } ) // 0x50815097425d000edfc8b3a4a13e175fc2bdcfee8bdfbf2d1ff61041d3c235b2
helper . addTrieAccount ( "acc-3" , & Account { Balance : big . NewInt ( 3 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } ) // 0x50815097425d000edfc8b3a4a13e175fc2bdcfee8bdfbf2d1ff61041d3c235b2
root := helper . Commit ( )
root := helper . Commit ( )
@ -488,7 +489,7 @@ func TestGenerateWithExtraAccounts(t *testing.T) {
[ ] string { "val-1" , "val-2" , "val-3" , "val-4" , "val-5" } ,
[ ] string { "val-1" , "val-2" , "val-3" , "val-4" , "val-5" } ,
true ,
true ,
)
)
acc := & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) }
acc := & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) }
val , _ := rlp . EncodeToBytes ( acc )
val , _ := rlp . EncodeToBytes ( acc )
helper . accTrie . Update ( [ ] byte ( "acc-1" ) , val ) // 0x9250573b9c18c664139f3b6a7a8081b7d8f8916a8fcc5d94feec6c29f5fd4e9e
helper . accTrie . Update ( [ ] byte ( "acc-1" ) , val ) // 0x9250573b9c18c664139f3b6a7a8081b7d8f8916a8fcc5d94feec6c29f5fd4e9e
@ -508,7 +509,7 @@ func TestGenerateWithExtraAccounts(t *testing.T) {
[ ] string { "val-1" , "val-2" , "val-3" , "val-4" , "val-5" } ,
[ ] string { "val-1" , "val-2" , "val-3" , "val-4" , "val-5" } ,
true ,
true ,
)
)
acc := & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) }
acc := & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) }
val , _ := rlp . EncodeToBytes ( acc )
val , _ := rlp . EncodeToBytes ( acc )
key := hashData ( [ ] byte ( "acc-2" ) )
key := hashData ( [ ] byte ( "acc-2" ) )
rawdb . WriteAccountSnapshot ( helper . diskdb , key , val )
rawdb . WriteAccountSnapshot ( helper . diskdb , key , val )
@ -559,7 +560,7 @@ func TestGenerateWithManyExtraAccounts(t *testing.T) {
[ ] string { "val-1" , "val-2" , "val-3" } ,
[ ] string { "val-1" , "val-2" , "val-3" } ,
true ,
true ,
)
)
acc := & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) }
acc := & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) }
val , _ := rlp . EncodeToBytes ( acc )
val , _ := rlp . EncodeToBytes ( acc )
helper . accTrie . Update ( [ ] byte ( "acc-1" ) , val ) // 0x9250573b9c18c664139f3b6a7a8081b7d8f8916a8fcc5d94feec6c29f5fd4e9e
helper . accTrie . Update ( [ ] byte ( "acc-1" ) , val ) // 0x9250573b9c18c664139f3b6a7a8081b7d8f8916a8fcc5d94feec6c29f5fd4e9e
@ -573,8 +574,7 @@ func TestGenerateWithManyExtraAccounts(t *testing.T) {
{
{
// 100 accounts exist only in snapshot
// 100 accounts exist only in snapshot
for i := 0 ; i < 1000 ; i ++ {
for i := 0 ; i < 1000 ; i ++ {
//acc := &Account{Balance: big.NewInt(int64(i)), Root: stTrie.Hash().Bytes(), CodeHash: emptyCode.Bytes()}
acc := & Account { Balance : big . NewInt ( int64 ( i ) ) , Root : types . EmptyRootHash . Bytes ( ) , CodeHash : types . EmptyCodeHash . Bytes ( ) }
acc := & Account { Balance : big . NewInt ( int64 ( i ) ) , Root : emptyRoot . Bytes ( ) , CodeHash : emptyCode . Bytes ( ) }
val , _ := rlp . EncodeToBytes ( acc )
val , _ := rlp . EncodeToBytes ( acc )
key := hashData ( [ ] byte ( fmt . Sprintf ( "acc-%d" , i ) ) )
key := hashData ( [ ] byte ( fmt . Sprintf ( "acc-%d" , i ) ) )
rawdb . WriteAccountSnapshot ( helper . diskdb , key , val )
rawdb . WriteAccountSnapshot ( helper . diskdb , key , val )
@ -611,7 +611,7 @@ func TestGenerateWithExtraBeforeAndAfter(t *testing.T) {
}
}
helper := newHelper ( )
helper := newHelper ( )
{
{
acc := & Account { Balance : big . NewInt ( 1 ) , Root : emptyRoot . Bytes ( ) , CodeHash : emptyCode . Bytes ( ) }
acc := & Account { Balance : big . NewInt ( 1 ) , Root : typ es . E mptyRootHash . Bytes ( ) , CodeHash : typ es . E mptyCodeHash . Bytes ( ) }
val , _ := rlp . EncodeToBytes ( acc )
val , _ := rlp . EncodeToBytes ( acc )
helper . accTrie . Update ( common . HexToHash ( "0x03" ) . Bytes ( ) , val )
helper . accTrie . Update ( common . HexToHash ( "0x03" ) . Bytes ( ) , val )
helper . accTrie . Update ( common . HexToHash ( "0x07" ) . Bytes ( ) , val )
helper . accTrie . Update ( common . HexToHash ( "0x07" ) . Bytes ( ) , val )
@ -648,7 +648,7 @@ func TestGenerateWithMalformedSnapdata(t *testing.T) {
}
}
helper := newHelper ( )
helper := newHelper ( )
{
{
acc := & Account { Balance : big . NewInt ( 1 ) , Root : emptyRoot . Bytes ( ) , CodeHash : emptyCode . Bytes ( ) }
acc := & Account { Balance : big . NewInt ( 1 ) , Root : typ es . E mptyRootHash . Bytes ( ) , CodeHash : typ es . E mptyCodeHash . Bytes ( ) }
val , _ := rlp . EncodeToBytes ( acc )
val , _ := rlp . EncodeToBytes ( acc )
helper . accTrie . Update ( common . HexToHash ( "0x03" ) . Bytes ( ) , val )
helper . accTrie . Update ( common . HexToHash ( "0x03" ) . Bytes ( ) , val )
@ -687,7 +687,7 @@ func TestGenerateFromEmptySnap(t *testing.T) {
for i := 0 ; i < 400 ; i ++ {
for i := 0 ; i < 400 ; i ++ {
stRoot := helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( fmt . Sprintf ( "acc-%d" , i ) ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
stRoot := helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( fmt . Sprintf ( "acc-%d" , i ) ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . addTrieAccount ( fmt . Sprintf ( "acc-%d" , i ) ,
helper . addTrieAccount ( fmt . Sprintf ( "acc-%d" , i ) ,
& Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } )
& Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
}
}
root , snap := helper . CommitAndGenerate ( )
root , snap := helper . CommitAndGenerate ( )
t . Logf ( "Root: %#x\n" , root ) // Root: 0x6f7af6d2e1a1bf2b84a3beb3f8b64388465fbc1e274ca5d5d3fc787ca78f59e4
t . Logf ( "Root: %#x\n" , root ) // Root: 0x6f7af6d2e1a1bf2b84a3beb3f8b64388465fbc1e274ca5d5d3fc787ca78f59e4
@ -724,7 +724,7 @@ func TestGenerateWithIncompleteStorage(t *testing.T) {
for i := 0 ; i < 8 ; i ++ {
for i := 0 ; i < 8 ; i ++ {
accKey := fmt . Sprintf ( "acc-%d" , i )
accKey := fmt . Sprintf ( "acc-%d" , i )
stRoot := helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( accKey ) ) , stKeys , stVals , true )
stRoot := helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( accKey ) ) , stKeys , stVals , true )
helper . addAccount ( accKey , & Account { Balance : big . NewInt ( int64 ( i ) ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } )
helper . addAccount ( accKey , & Account { Balance : big . NewInt ( int64 ( i ) ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
var moddedKeys [ ] string
var moddedKeys [ ] string
var moddedVals [ ] string
var moddedVals [ ] string
for ii := 0 ; ii < 8 ; ii ++ {
for ii := 0 ; ii < 8 ; ii ++ {
@ -816,11 +816,11 @@ func TestGenerateCompleteSnapshotWithDanglingStorage(t *testing.T) {
var helper = newHelper ( )
var helper = newHelper ( )
stRoot := helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-1" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
stRoot := helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-1" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . addAccount ( "acc-1" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } )
helper . addAccount ( "acc-1" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
helper . addAccount ( "acc-2" , & Account { Balance : big . NewInt ( 1 ) , Root : emptyRoot . Bytes ( ) , CodeHash : emptyCode . Bytes ( ) } )
helper . addAccount ( "acc-2" , & Account { Balance : big . NewInt ( 1 ) , Root : typ es . E mptyRootHash . Bytes ( ) , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-3" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-3" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . addAccount ( "acc-3" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } )
helper . addAccount ( "acc-3" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
helper . addSnapStorage ( "acc-1" , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } )
helper . addSnapStorage ( "acc-1" , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } )
helper . addSnapStorage ( "acc-3" , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } )
helper . addSnapStorage ( "acc-3" , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } )
@ -851,11 +851,11 @@ func TestGenerateBrokenSnapshotWithDanglingStorage(t *testing.T) {
var helper = newHelper ( )
var helper = newHelper ( )
stRoot := helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-1" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
stRoot := helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-1" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . addTrieAccount ( "acc-1" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } )
helper . addTrieAccount ( "acc-1" , & Account { Balance : big . NewInt ( 1 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
helper . addTrieAccount ( "acc-2" , & Account { Balance : big . NewInt ( 2 ) , Root : emptyRoot . Bytes ( ) , CodeHash : emptyCode . Bytes ( ) } )
helper . addTrieAccount ( "acc-2" , & Account { Balance : big . NewInt ( 2 ) , Root : typ es . E mptyRootHash . Bytes ( ) , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-3" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . makeStorageTrie ( common . Hash { } , hashData ( [ ] byte ( "acc-3" ) ) , [ ] string { "key-1" , "key-2" , "key-3" } , [ ] string { "val-1" , "val-2" , "val-3" } , true )
helper . addTrieAccount ( "acc-3" , & Account { Balance : big . NewInt ( 3 ) , Root : stRoot , CodeHash : emptyCode . Bytes ( ) } )
helper . addTrieAccount ( "acc-3" , & Account { Balance : big . NewInt ( 3 ) , Root : stRoot , CodeHash : typ es . E mptyCodeHash . Bytes ( ) } )
populateDangling ( helper . diskdb )
populateDangling ( helper . diskdb )