miner: broadcast block before insertion/validation

This commit is contained in:
Jeffrey Wilcke 2015-06-28 13:38:21 +02:00
parent 5e7db8f5cd
commit 059a1e9e4e

View File

@ -239,12 +239,16 @@ func (self *worker) wait() {
continue continue
} }
// broadcast before waiting for validation
go self.mux.Post(core.NewMinedBlockEvent{block})
// insert mined block in to our own chain
if _, err := self.chain.InsertChain(types.Blocks{block}); err == nil { if _, err := self.chain.InsertChain(types.Blocks{block}); err == nil {
// remove uncles we've previously inserted
for _, uncle := range block.Uncles() { for _, uncle := range block.Uncles() {
delete(self.possibleUncles, uncle.Hash()) delete(self.possibleUncles, uncle.Hash())
} }
self.mux.Post(core.NewMinedBlockEvent{block})
// check staleness and display confirmation
var stale, confirm string var stale, confirm string
canonBlock := self.chain.GetBlockByNumber(block.NumberU64()) canonBlock := self.chain.GetBlockByNumber(block.NumberU64())
if canonBlock != nil && canonBlock.Hash() != block.Hash() { if canonBlock != nil && canonBlock.Hash() != block.Hash() {
@ -256,6 +260,7 @@ func (self *worker) wait() {
glog.V(logger.Info).Infof("🔨 Mined %sblock (#%v / %x). %s", stale, block.Number(), block.Hash().Bytes()[:4], confirm) glog.V(logger.Info).Infof("🔨 Mined %sblock (#%v / %x). %s", stale, block.Number(), block.Hash().Bytes()[:4], confirm)
// XXX remove old structured json logging
jsonlogger.LogJson(&logger.EthMinerNewBlock{ jsonlogger.LogJson(&logger.EthMinerNewBlock{
BlockHash: block.Hash().Hex(), BlockHash: block.Hash().Hex(),
BlockNumber: block.Number(), BlockNumber: block.Number(),