aboutsummaryrefslogtreecommitdiffstats
path: root/core/blockchain.go
diff options
context:
space:
mode:
authorPéter Szilágyi <peterke@gmail.com>2016-05-19 18:24:14 +0800
committerPéter Szilágyi <peterke@gmail.com>2016-05-26 21:33:09 +0800
commit748d1c171d74fbf6b6051fd629d3c2204dd930e3 (patch)
treef3bc5352efadae61cb39afd33ceeaba7b824609c /core/blockchain.go
parenta7434fd0085f55235acea5348db0c9247e9aac10 (diff)
downloadgo-tangerine-748d1c171d74fbf6b6051fd629d3c2204dd930e3.tar.gz
go-tangerine-748d1c171d74fbf6b6051fd629d3c2204dd930e3.tar.zst
go-tangerine-748d1c171d74fbf6b6051fd629d3c2204dd930e3.zip
core, core/state, trie: enterprise hand-tuned multi-level caching
Diffstat (limited to 'core/blockchain.go')
-rw-r--r--core/blockchain.go7
1 files changed, 6 insertions, 1 deletions
diff --git a/core/blockchain.go b/core/blockchain.go
index 171a49e53..bd84adfe9 100644
--- a/core/blockchain.go
+++ b/core/blockchain.go
@@ -819,6 +819,7 @@ func (self *BlockChain) InsertChain(chain types.Blocks) (int, error) {
tstart = time.Now()
nonceChecked = make([]bool, len(chain))
+ statedb *state.StateDB
)
// Start the parallel nonce verifier.
@@ -885,7 +886,11 @@ func (self *BlockChain) InsertChain(chain types.Blocks) (int, error) {
// Create a new statedb using the parent block and report an
// error if it fails.
- statedb, err := state.New(self.GetBlock(block.ParentHash()).Root(), self.chainDb)
+ if statedb == nil {
+ statedb, err = state.New(self.GetBlock(block.ParentHash()).Root(), self.chainDb)
+ } else {
+ err = statedb.Reset(chain[i-1].Root())
+ }
if err != nil {
reportBlock(block, err)
return i, err