diff options
author | obscuren <geffobscura@gmail.com> | 2015-04-30 19:41:47 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2015-04-30 19:50:59 +0800 |
commit | 28b39267d990352883df1c093fd6c36cd532cfdf (patch) | |
tree | 251391a951ff57dac98a36f0b9ae0f0502dbdfda /core | |
parent | 9b6e8f6195da1d52ba35295d9d8a3a9f24ec30b0 (diff) | |
download | dexon-28b39267d990352883df1c093fd6c36cd532cfdf.tar.gz dexon-28b39267d990352883df1c093fd6c36cd532cfdf.tar.zst dexon-28b39267d990352883df1c093fd6c36cd532cfdf.zip |
core, eth: verify td of received blocks
Diffstat (limited to 'core')
-rw-r--r-- | core/chain_manager.go | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/core/chain_manager.go b/core/chain_manager.go index 4fdb2edce..e97ed307c 100644 --- a/core/chain_manager.go +++ b/core/chain_manager.go @@ -511,6 +511,10 @@ func (self *ChainManager) InsertChain(chain types.Blocks) (int, error) { if block == nil { continue } + // Setting block.Td regardless of error (known for example) prevents errors down the line + // in the protocol handler + block.Td = new(big.Int).Set(CalculateTD(block, self.GetBlock(block.ParentHash()))) + // Call in to the block processor and check for errors. It's likely that if one block fails // all others will fail too (unless a known block is returned). logs, err := self.processor.Process(block) @@ -545,8 +549,6 @@ func (self *ChainManager) InsertChain(chain types.Blocks) (int, error) { return i, err } - block.Td = new(big.Int).Set(CalculateTD(block, self.GetBlock(block.ParentHash()))) - self.mu.Lock() { cblock := self.currentBlock |