return timestamps[len(timestamps)/2]
}
-// GetParent return the node of specified height
-// And the node satisfies the same chain as current node
-// Height of current node must greater than height parameter
-func (node *BlockNode) GetParent(height uint64) *BlockNode {
- prevBlockNode := node
- for prevBlockNode != nil && prevBlockNode.Height != height {
- if prevBlockNode.Height < height {
- return nil
- }
- prevBlockNode = prevBlockNode.Parent
- }
- return prevBlockNode
-}
-
// BlockIndex is the struct for help chain trace block chain as tree
type BlockIndex struct {
sync.RWMutex
// NewBlockIndex will create a empty BlockIndex
func NewBlockIndex() *BlockIndex {
return &BlockIndex{
- index: make(map[bc.Hash]*BlockNode),
+ index: make(map[bc.Hash]*BlockNode),
heightIndex: make(map[uint64][]*BlockNode),
- mainChain: make([]*BlockNode, 0, approxNodesPerDay),
+ mainChain: make([]*BlockNode, 0, approxNodesPerDay),
}
}