From b84a422837cca994231fa36083f7b0104761b602 Mon Sep 17 00:00:00 2001 From: Tuna Date: Mon, 11 Mar 2019 18:57:43 +0700 Subject: [PATCH 1/5] handle SignHash error --- eth/backend.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/eth/backend.go b/eth/backend.go index 16b360978f..843043fc51 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -240,9 +240,15 @@ func New(ctx *node.ServiceContext, config *Config) (*Ethereum, error) { return block, false, fmt.Errorf("can't get block validator: %v", err) } if m2 == eb { - wallet, _ := eth.accountManager.Find(accounts.Account{Address: eb}) + wallet, err := eth.accountManager.Find(accounts.Account{Address: eb}) + if err != nil { + return block, false, err + } header := block.Header() - sighash, _ := wallet.SignHash(accounts.Account{Address: eb}, posv.SigHash(header).Bytes()) + sighash, err := wallet.SignHash(accounts.Account{Address: eb}, posv.SigHash(header).Bytes()) + if err != nil { + return block, false, err + } header.Validator = sighash return types.NewBlockWithHeader(header).WithBody(block.Transactions(), block.Uncles()), true, nil } From f251b87b636ec11099d7eb6db9eb6bbf8d615681 Mon Sep 17 00:00:00 2001 From: Tuna Date: Mon, 11 Mar 2019 19:01:38 +0700 Subject: [PATCH 2/5] fullVerify after hard-fork 3M --- core/blockchain.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core/blockchain.go b/core/blockchain.go index c21edb7257..7c2cc82bd2 100644 --- a/core/blockchain.go +++ b/core/blockchain.go @@ -1257,7 +1257,11 @@ func (bc *BlockChain) PrepareBlock(block *types.Block) (err error) { log.Debug("Stop prepare a block because inserting", "number", block.NumberU64(), "hash", block.Hash(), "validator", block.Header().Validator) return nil } - err = bc.engine.VerifyHeader(bc, block.Header(), false) + var fullVerify bool = false + if bc.chainConfig.IsTIPSigning(block.Number()) { + fullVerify = true + } + err = bc.engine.VerifyHeader(bc, block.Header(), fullVerify) if err != nil { return err } From 3f2f8bdeb80a02bc1d19e52ee4ca87e4cf86aad2 Mon Sep 17 00:00:00 2001 From: Tuna Date: Tue, 12 Mar 2019 09:58:06 +0700 Subject: [PATCH 3/5] add error log --- eth/backend.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/eth/backend.go b/eth/backend.go index 843043fc51..15ea2d01ad 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -242,11 +242,13 @@ func New(ctx *node.ServiceContext, config *Config) (*Ethereum, error) { if m2 == eb { wallet, err := eth.accountManager.Find(accounts.Account{Address: eb}) if err != nil { + log.Error("Can't find coinbase account wallet", "err", err) return block, false, err } header := block.Header() sighash, err := wallet.SignHash(accounts.Account{Address: eb}, posv.SigHash(header).Bytes()) if err != nil { + log.Error("Can't get signature hash of m2", "err", err) return block, false, err } header.Validator = sighash From 7714a18330f15f6cd0fbfa75c75468d8170a687c Mon Sep 17 00:00:00 2001 From: Tuna Date: Tue, 12 Mar 2019 10:19:46 +0700 Subject: [PATCH 4/5] remove fork point, check signHash != nil --- core/blockchain.go | 6 +----- eth/backend.go | 4 ++-- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/core/blockchain.go b/core/blockchain.go index 7c2cc82bd2..c21edb7257 100644 --- a/core/blockchain.go +++ b/core/blockchain.go @@ -1257,11 +1257,7 @@ func (bc *BlockChain) PrepareBlock(block *types.Block) (err error) { log.Debug("Stop prepare a block because inserting", "number", block.NumberU64(), "hash", block.Hash(), "validator", block.Header().Validator) return nil } - var fullVerify bool = false - if bc.chainConfig.IsTIPSigning(block.Number()) { - fullVerify = true - } - err = bc.engine.VerifyHeader(bc, block.Header(), fullVerify) + err = bc.engine.VerifyHeader(bc, block.Header(), false) if err != nil { return err } diff --git a/eth/backend.go b/eth/backend.go index 15ea2d01ad..9167e86c12 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -247,8 +247,8 @@ func New(ctx *node.ServiceContext, config *Config) (*Ethereum, error) { } header := block.Header() sighash, err := wallet.SignHash(accounts.Account{Address: eb}, posv.SigHash(header).Bytes()) - if err != nil { - log.Error("Can't get signature hash of m2", "err", err) + if err != nil || sighash == nil { + log.Error("Can't get signature hash of m2", "sighash", sighash, "err", err) return block, false, err } header.Validator = sighash From 10ec2abda112effdb97edee863cf7bb766723863 Mon Sep 17 00:00:00 2001 From: Tuna Date: Tue, 12 Mar 2019 10:48:20 +0700 Subject: [PATCH 5/5] bump up v1.3.1 --- params/version.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/params/version.go b/params/version.go index dc1a63c4bf..2f02070a99 100644 --- a/params/version.go +++ b/params/version.go @@ -23,7 +23,7 @@ import ( const ( VersionMajor = 1 // Major version component of the current release VersionMinor = 3 // Minor version component of the current release - VersionPatch = 0 // Patch version component of the current release + VersionPatch = 1 // Patch version component of the current release VersionMeta = "stable" // Version metadata to append to the version string )