From 09f24f35eff61861c21b854a648c3afec579ff47 Mon Sep 17 00:00:00 2001 From: Wei-Ning Huang Date: Wed, 21 Nov 2018 16:14:51 +0800 Subject: core: add global signature cache and improve concurrency (#42) From the go trace result, the bottleneck hides in the lock of StoreTxCache. To improve this, we update the cache in a batched fassion. --- dex/app.go | 2 +- dex/handler.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'dex') diff --git a/dex/app.go b/dex/app.go index 99514ed83..df76b2b7d 100644 --- a/dex/app.go +++ b/dex/app.go @@ -327,7 +327,7 @@ func (d *DexconApp) VerifyBlock(block *coreTypes.Block) coreTypes.BlockVerifySta return coreTypes.VerifyInvalidBlock } - _, err = transactions.TouchSenders(types.MakeSigner(d.blockchain.Config(), new(big.Int))) + _, err = types.GlobalSigCache.Add(types.NewEIP155Signer(d.blockchain.Config().ChainID), transactions) if err != nil { log.Error("Failed to calculate sender", "error", err) return coreTypes.VerifyInvalidBlock diff --git a/dex/handler.go b/dex/handler.go index a74c78e3b..a1a158560 100644 --- a/dex/handler.go +++ b/dex/handler.go @@ -724,7 +724,7 @@ func (pm *ProtocolManager) handleMsg(p *peer) error { } p.MarkTransaction(tx.Hash()) } - types.Transactions(txs).TouchSenders(types.MakeSigner(pm.blockchain.Config(), new(big.Int))) + types.GlobalSigCache.Add(types.NewEIP155Signer(pm.blockchain.Config().ChainID), txs) pm.txpool.AddRemotes(txs) case msg.Code == MetaMsg: -- cgit v1.2.3