log "github.com/sirupsen/logrus"
"github.com/vapor/config"
+ "github.com/vapor/event"
"github.com/vapor/protocol/bc"
"github.com/vapor/protocol/bc/types"
"github.com/vapor/protocol/state"
}
// NewChain returns a new Chain using store as the underlying storage.
-func NewChain(store Store, txPool *TxPool) (*Chain, error) {
+func NewChain(store Store, txPool *TxPool, eventDispatcher *event.Dispatcher) (*Chain, error) {
c := &Chain{
orphanManage: NewOrphanManage(),
txPool: txPool,
}
c.bestNode = c.index.GetNode(storeStatus.Hash)
+ c.bestIrreversibleNode = c.index.GetNode(storeStatus.IrreversibleHash)
c.index.SetMainChain(c.bestNode)
- c.bbft = newBbft(store, c.index, c.orphanManage)
+ c.bbft = newBbft(store, c.index, c.orphanManage, eventDispatcher)
go c.blockProcesser()
return c, nil
}
if err != nil {
return err
}
+
return c.store.SaveChainStatus(node, node, utxoView, map[uint64]*state.VoteResult{})
}
c.cond.L.Lock()
defer c.cond.L.Unlock()
- if err := c.bbft.UpdateConsensusNodes(node.Height); err != nil {
- return err
- }
-
c.index.SetMainChain(node)
c.bestNode = node
c.bestIrreversibleNode = irreversibleNode
func (c *Chain) GetTxPool() *TxPool {
return c.txPool
}
+
+// GetBBFT return chain bbft
+func (c *Chain) GetBBFT() *bbft {
+ return c.bbft
+}