From efd39f1b6ad27b74d5836321c9aea5f4a70d0e9a Mon Sep 17 00:00:00 2001 From: "amalraj.manigmail.com" Date: Fri, 5 Apr 2019 17:13:10 +0800 Subject: [PATCH] raft: pass gas floor and gas ceil to calcGasLimit when minting block --- cmd/geth/config.go | 2 +- raft/backend.go | 4 ++-- raft/minter.go | 7 +++++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/cmd/geth/config.go b/cmd/geth/config.go index 8c2b26feb..176258c2e 100644 --- a/cmd/geth/config.go +++ b/cmd/geth/config.go @@ -252,7 +252,7 @@ func RegisterRaftService(stack *node.Node, ctx *cli.Context, cfg gethConfig, eth ethereum := <-ethChan - return raft.New(ctx, ethereum.ChainConfig(), myId, raftPort, joinExisting, blockTimeNanos, ethereum, peers, datadir) + return raft.New(ctx, ethereum.ChainConfig(), myId, raftPort, joinExisting, blockTimeNanos, ethereum, peers, datadir, &cfg.Eth) }); err != nil { utils.Fatalf("Failed to register the Raft service: %v", err) } diff --git a/raft/backend.go b/raft/backend.go index d9e54fb5b..de31219c3 100644 --- a/raft/backend.go +++ b/raft/backend.go @@ -36,7 +36,7 @@ type RaftService struct { nodeKey *ecdsa.PrivateKey } -func New(ctx *node.ServiceContext, chainConfig *params.ChainConfig, raftId, raftPort uint16, joinExisting bool, blockTime time.Duration, e *eth.Ethereum, startPeers []*enode.Node, datadir string) (*RaftService, error) { +func New(ctx *node.ServiceContext, chainConfig *params.ChainConfig, raftId, raftPort uint16, joinExisting bool, blockTime time.Duration, e *eth.Ethereum, startPeers []*enode.Node, datadir string, ethCfg *eth.Config) (*RaftService, error) { service := &RaftService{ eventMux: ctx.EventMux, chainDb: e.ChainDb(), @@ -48,7 +48,7 @@ func New(ctx *node.ServiceContext, chainConfig *params.ChainConfig, raftId, raft nodeKey: ctx.NodeKey(), } - service.minter = newMinter(chainConfig, service, blockTime) + service.minter = newMinter(chainConfig, service, blockTime, ethCfg) var err error if service.raftProtocolManager, err = NewProtocolManager(raftId, raftPort, service.blockchain, service.eventMux, startPeers, joinExisting, datadir, service.minter, service.downloader); err != nil { diff --git a/raft/minter.go b/raft/minter.go index 7aa3ef25d..d89bc35f4 100644 --- a/raft/minter.go +++ b/raft/minter.go @@ -18,6 +18,7 @@ package raft import ( "fmt" + "github.com/ethereum/go-ethereum/eth" "math/big" "sync" "sync/atomic" @@ -70,6 +71,7 @@ type minter struct { chainHeadSub event.Subscription txPreChan chan core.NewTxsEvent txPreSub event.Subscription + ethCfg *eth.Config } type extraSeal struct { @@ -77,7 +79,7 @@ type extraSeal struct { Signature []byte // Signature of the block minter } -func newMinter(config *params.ChainConfig, eth *RaftService, blockTime time.Duration) *minter { +func newMinter(config *params.ChainConfig, eth *RaftService, blockTime time.Duration, ethCfg *eth.Config) *minter { minter := &minter{ config: config, eth: eth, @@ -91,6 +93,7 @@ func newMinter(config *params.ChainConfig, eth *RaftService, blockTime time.Dura invalidRaftOrderingChan: make(chan InvalidRaftOrdering, 1), chainHeadChan: make(chan core.ChainHeadEvent, 1), txPreChan: make(chan core.NewTxsEvent, 4096), + ethCfg: ethCfg, } minter.chainHeadSub = eth.BlockChain().SubscribeChainHeadEvent(minter.chainHeadChan) @@ -262,7 +265,7 @@ func (minter *minter) createWork() *work { ParentHash: parent.Hash(), Number: parentNumber.Add(parentNumber, common.Big1), Difficulty: ethash.CalcDifficulty(minter.config, uint64(tstamp), parent.Header()), - GasLimit: core.CalcGasLimit(parent, parent.GasLimit(), parent.GasLimit()), + GasLimit: core.CalcGasLimit(parent, minter.ethCfg.MinerGasFloor, minter.ethCfg.MinerGasCeil), GasUsed: 0, Coinbase: minter.coinbase, Time: big.NewInt(tstamp),