From 14967266e52cc61822e4d6d3c7d1698d2209490c Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Fri, 17 Jun 2022 10:37:56 +0200 Subject: [PATCH 1/7] core: don't validate state --- core/blockchain.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/core/blockchain.go b/core/blockchain.go index 3b677aca6ca6..93969299617b 100644 --- a/core/blockchain.go +++ b/core/blockchain.go @@ -1652,9 +1652,10 @@ func (bc *BlockChain) insertChain(chain types.Blocks, verifySeals, setHead bool) // Validate the state using the default validator substart = time.Now() if err := bc.validator.ValidateState(block, statedb, receipts, usedGas); err != nil { - bc.reportBlock(block, receipts, err) - atomic.StoreUint32(&followupInterrupt, 1) - return it.index, err + fmt.Println("#### ignoring invalid block") + // bc.reportBlock(block, receipts, err) + // atomic.StoreUint32(&followupInterrupt, 1) + // return it.index, err } proctime := time.Since(start) From 69736149e703ec8e9b8181658c0a1ebb140fe377 Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Fri, 17 Jun 2022 10:59:02 +0200 Subject: [PATCH 2/7] core: allow external validator --- core/blockchain_reader.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/blockchain_reader.go b/core/blockchain_reader.go index b8d4233c6ecd..f599562f4134 100644 --- a/core/blockchain_reader.go +++ b/core/blockchain_reader.go @@ -330,6 +330,10 @@ func (bc *BlockChain) Validator() Validator { return bc.validator } +func (bc *BlockChain) SetValidator(v Validator) { + bc.validator = v +} + // Processor returns the current processor. func (bc *BlockChain) Processor() Processor { return bc.processor From 30bcb59ccacbd86211bf47f80ddf72f0dcf0fc46 Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Fri, 17 Jun 2022 11:15:55 +0200 Subject: [PATCH 3/7] core: revert --- core/blockchain.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/core/blockchain.go b/core/blockchain.go index 93969299617b..3b677aca6ca6 100644 --- a/core/blockchain.go +++ b/core/blockchain.go @@ -1652,10 +1652,9 @@ func (bc *BlockChain) insertChain(chain types.Blocks, verifySeals, setHead bool) // Validate the state using the default validator substart = time.Now() if err := bc.validator.ValidateState(block, statedb, receipts, usedGas); err != nil { - fmt.Println("#### ignoring invalid block") - // bc.reportBlock(block, receipts, err) - // atomic.StoreUint32(&followupInterrupt, 1) - // return it.index, err + bc.reportBlock(block, receipts, err) + atomic.StoreUint32(&followupInterrupt, 1) + return it.index, err } proctime := time.Since(start) From f8b28218ab867331ab3fbfc93177ba688c1462c2 Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Fri, 17 Jun 2022 11:17:26 +0200 Subject: [PATCH 4/7] core: comments --- core/blockchain_reader.go | 1 + 1 file changed, 1 insertion(+) diff --git a/core/blockchain_reader.go b/core/blockchain_reader.go index f599562f4134..c0ef049a4943 100644 --- a/core/blockchain_reader.go +++ b/core/blockchain_reader.go @@ -330,6 +330,7 @@ func (bc *BlockChain) Validator() Validator { return bc.validator } +// SetValidator sets the current validator. func (bc *BlockChain) SetValidator(v Validator) { bc.validator = v } From 60c21673da28ef9dd2c0df38253678945356482f Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Mon, 20 Jun 2022 09:15:28 +0200 Subject: [PATCH 5/7] Update blockchain_reader.go --- core/blockchain_reader.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/blockchain_reader.go b/core/blockchain_reader.go index c0ef049a4943..a747dce66fdc 100644 --- a/core/blockchain_reader.go +++ b/core/blockchain_reader.go @@ -331,6 +331,8 @@ func (bc *BlockChain) Validator() Validator { } // SetValidator sets the current validator. +// This method can be used to force an invalid blockchain to be verified for tests. +// This method is unsafe and should only be used before block import starts. func (bc *BlockChain) SetValidator(v Validator) { bc.validator = v } From a1d6d3d39862c41f4c6dbfde16ec2d3f2383a2b6 Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Mon, 20 Jun 2022 11:37:39 +0200 Subject: [PATCH 6/7] core: move SetValidator to blockchain.go --- core/blockchain.go | 7 +++++++ core/blockchain_reader.go | 7 ------- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/core/blockchain.go b/core/blockchain.go index 3b677aca6ca6..109d3db45e22 100644 --- a/core/blockchain.go +++ b/core/blockchain.go @@ -2374,3 +2374,10 @@ func (bc *BlockChain) InsertHeaderChain(chain []*types.Header, checkFreq int) (i _, err := bc.hc.InsertHeaderChain(chain, start, bc.forker) return 0, err } + +// SetValidator sets the current validator. +// This method can be used to force an invalid blockchain to be verified for tests. +// This method is unsafe and should only be used before block import starts. +func (bc *BlockChain) SetValidator(v Validator) { + bc.validator = v +} diff --git a/core/blockchain_reader.go b/core/blockchain_reader.go index a747dce66fdc..b8d4233c6ecd 100644 --- a/core/blockchain_reader.go +++ b/core/blockchain_reader.go @@ -330,13 +330,6 @@ func (bc *BlockChain) Validator() Validator { return bc.validator } -// SetValidator sets the current validator. -// This method can be used to force an invalid blockchain to be verified for tests. -// This method is unsafe and should only be used before block import starts. -func (bc *BlockChain) SetValidator(v Validator) { - bc.validator = v -} - // Processor returns the current processor. func (bc *BlockChain) Processor() Processor { return bc.processor From 20c76c7004a8aae5ebeab256667af544ac3dc4b3 Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Mon, 4 Jul 2022 11:22:50 +0200 Subject: [PATCH 7/7] core: rename method --- core/blockchain.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/blockchain.go b/core/blockchain.go index 109d3db45e22..765ae57c4146 100644 --- a/core/blockchain.go +++ b/core/blockchain.go @@ -2375,9 +2375,9 @@ func (bc *BlockChain) InsertHeaderChain(chain []*types.Header, checkFreq int) (i return 0, err } -// SetValidator sets the current validator. +// SetBlockValidatorForTesting sets the current validator. // This method can be used to force an invalid blockchain to be verified for tests. // This method is unsafe and should only be used before block import starts. -func (bc *BlockChain) SetValidator(v Validator) { +func (bc *BlockChain) SetBlockValidatorForTesting(v Validator) { bc.validator = v }