diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/blockchain.go | 16 | ||||
-rw-r--r-- | core/types/transaction_signing.go | 5 |
2 files changed, 13 insertions, 8 deletions
diff --git a/core/blockchain.go b/core/blockchain.go index 2adad1d74..31336f555 100644 --- a/core/blockchain.go +++ b/core/blockchain.go @@ -270,13 +270,15 @@ func (bc *BlockChain) AddConfirmedBlock(block *coreTypes.Block) error { bc.confirmedBlockInitMu.Unlock() var transactions types.Transactions - err := rlp.Decode(bytes.NewReader(block.Payload), &transactions) - if err != nil { - return err - } - _, err = types.GlobalSigCache.Add(types.NewEIP155Signer(bc.Config().ChainID), transactions) - if err != nil { - return err + if len(block.Payload) != 0 { + err := rlp.Decode(bytes.NewReader(block.Payload), &transactions) + if err != nil { + return err + } + _, err = types.GlobalSigCache.Add(types.NewEIP155Signer(bc.Config().ChainID), transactions) + if err != nil { + return err + } } addressMap := map[common.Address]struct{}{} diff --git a/core/types/transaction_signing.go b/core/types/transaction_signing.go index 99e0c7896..1a13e3e3d 100644 --- a/core/types/transaction_signing.go +++ b/core/types/transaction_signing.go @@ -60,7 +60,10 @@ type resultEntry struct { // Add adds a list of transactions into sig cache. func (c *globalSigCache) Add(signer Signer, txs Transactions) (errorTx *Transaction, err error) { - num := runtime.NumCPU() + num := runtime.NumCPU() - 2 + if num < 1 { + num = 1 + } batchSize := len(txs) / num wg := sync.WaitGroup{} wg.Add(num) |