core, core/state: batch-based state sync
This commit is contained in:
@ -253,13 +253,13 @@ func (t *BlockTest) InsertPreState(ethereum *eth.Ethereum) (*state.StateDB, erro
|
||||
statedb.SetState(common.HexToAddress(addrString), common.HexToHash(k), common.HexToHash(v))
|
||||
}
|
||||
}
|
||||
// sync objects to trie
|
||||
statedb.SyncObjects()
|
||||
// sync trie to disk
|
||||
statedb.Sync()
|
||||
|
||||
if !bytes.Equal(t.Genesis.Root().Bytes(), statedb.Root().Bytes()) {
|
||||
return nil, fmt.Errorf("computed state root does not match genesis block %x %x", t.Genesis.Root().Bytes()[:4], statedb.Root().Bytes()[:4])
|
||||
root, err := statedb.Commit()
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error writing state: %v", err)
|
||||
}
|
||||
if t.Genesis.Root() != root {
|
||||
return nil, fmt.Errorf("computed state root does not match genesis block: genesis=%x computed=%x", t.Genesis.Root().Bytes()[:4], root.Bytes()[:4])
|
||||
}
|
||||
return statedb, nil
|
||||
}
|
||||
|
@ -200,9 +200,9 @@ func runStateTest(test VmTest) error {
|
||||
}
|
||||
}
|
||||
|
||||
statedb.Sync()
|
||||
if common.HexToHash(test.PostStateRoot) != statedb.Root() {
|
||||
return fmt.Errorf("Post state root error. Expected %s, got %x", test.PostStateRoot, statedb.Root())
|
||||
root, _ := statedb.Commit()
|
||||
if common.HexToHash(test.PostStateRoot) != root {
|
||||
return fmt.Errorf("Post state root error. Expected %s, got %x", test.PostStateRoot, root)
|
||||
}
|
||||
|
||||
// check logs
|
||||
@ -246,7 +246,7 @@ func RunState(statedb *state.StateDB, env, tx map[string]string) ([]byte, state.
|
||||
if core.IsNonceErr(err) || core.IsInvalidTxErr(err) || state.IsGasLimitErr(err) {
|
||||
statedb.Set(snapshot)
|
||||
}
|
||||
statedb.SyncObjects()
|
||||
statedb.Commit()
|
||||
|
||||
return ret, vmenv.state.Logs(), vmenv.Gas, err
|
||||
}
|
||||
|
Reference in New Issue
Block a user