aboutsummaryrefslogtreecommitdiffstats
path: root/core/blockchain.go
diff options
context:
space:
mode:
authorSonic <sonic@dexon.org>2019-01-18 11:55:51 +0800
committerWei-Ning Huang <w@byzantine-lab.io>2019-06-12 17:27:21 +0800
commit1c01b079c42bf410997b800c8e97b699e3ce0a93 (patch)
tree00626fcfc3bd1a4f63fd23efeb7c36f5498cbc9a /core/blockchain.go
parent65045b14287ee4f789a491ae542a58f1f7d559b6 (diff)
downloadgo-tangerine-1c01b079c42bf410997b800c8e97b699e3ce0a93.tar
go-tangerine-1c01b079c42bf410997b800c8e97b699e3ce0a93.tar.gz
go-tangerine-1c01b079c42bf410997b800c8e97b699e3ce0a93.tar.bz2
go-tangerine-1c01b079c42bf410997b800c8e97b699e3ce0a93.tar.lz
go-tangerine-1c01b079c42bf410997b800c8e97b699e3ce0a93.tar.xz
go-tangerine-1c01b079c42bf410997b800c8e97b699e3ce0a93.tar.zst
go-tangerine-1c01b079c42bf410997b800c8e97b699e3ce0a93.zip
core, dex: use block hash as witness data (#160)
Using only state root and receipt root as witness data can not protect other fields in block header, ex: bloom, difficulty, gas limit, gas used... So that everyone can manipulate these fields to create as many valid blocks at the same height as he want. Although this will not effect the state, one can spam us when syncing. Using block hash as witness data can solve this.
Diffstat (limited to 'core/blockchain.go')
-rw-r--r--core/blockchain.go6
1 files changed, 3 insertions, 3 deletions
diff --git a/core/blockchain.go b/core/blockchain.go
index 99f99b64d..ea1d06489 100644
--- a/core/blockchain.go
+++ b/core/blockchain.go
@@ -1834,13 +1834,13 @@ func (bc *BlockChain) processBlock(
)
bstart := time.Now()
- var witnessData types.WitnessData
- if err := rlp.Decode(bytes.NewReader(witness.Data), &witnessData); err != nil {
+ var witnessBlockHash common.Hash
+ if err := rlp.Decode(bytes.NewReader(witness.Data), &witnessBlockHash); err != nil {
log.Error("Witness rlp decode failed", "error", err)
return nil, nil, nil, fmt.Errorf("rlp decode fail: %v", err)
}
- if err := bc.Validator().ValidateWitnessData(witness.Height, witnessData); err != nil {
+ if err := bc.Validator().ValidateWitnessData(witness.Height, witnessBlockHash); err != nil {
return nil, nil, nil, fmt.Errorf("validate witness data error: %v", err)
}