diff --git a/core/chain_manager.go b/core/chain_manager.go index 3e030838a..f0d3fd4cf 100644 --- a/core/chain_manager.go +++ b/core/chain_manager.go @@ -8,11 +8,11 @@ import ( "sync" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/state" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/event" "github.com/ethereum/go-ethereum/logger" "github.com/ethereum/go-ethereum/rlp" - "github.com/ethereum/go-ethereum/core/state" ) var ( @@ -523,7 +523,7 @@ out: case ChainEvent: // We need some control over the mining operation. Acquiring locks and waiting for the miner to create new block takes too long // and in most cases isn't even necessary. - if i == ev.canonicalCount { + if i+1 == ev.canonicalCount { self.eventMux.Post(ChainHeadEvent{event.Block}) } case ChainSplitEvent: diff --git a/eth/backend.go b/eth/backend.go index 446f06531..3f7f7c2cb 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -355,7 +355,7 @@ func (s *Ethereum) Start() error { go s.txBroadcastLoop() // broadcast mined blocks - s.blockSub = s.eventMux.Subscribe(core.NewMinedBlockEvent{}) + s.blockSub = s.eventMux.Subscribe(core.ChainHeadEvent{}) go s.blockBroadcastLoop() servlogger.Infoln("Server started") @@ -421,7 +421,7 @@ func (self *Ethereum) blockBroadcastLoop() { // automatically stops if unsubscribe for obj := range self.blockSub.Chan() { switch ev := obj.(type) { - case core.NewMinedBlockEvent: + case core.ChainHeadEvent: self.net.Broadcast("eth", NewBlockMsg, []interface{}{ev.Block, ev.Block.Td}) } }