-func (c *Chain) ConnectBlock(block *legacy.Block) error {
- c.state.cond.L.Lock()
- defer c.state.cond.L.Unlock()
- return c.connectBlock(block)
+func (c *Chain) calcReorganizeNodes(node *state.BlockNode) ([]*state.BlockNode, []*state.BlockNode) {
+ var attachNodes []*state.BlockNode
+ var detachNodes []*state.BlockNode
+
+ attachNode := node
+ for c.index.NodeByHeight(attachNode.Height) != attachNode {
+ attachNodes = append([]*state.BlockNode{attachNode}, attachNodes...)
+ attachNode = attachNode.Parent
+ }
+
+ detachNode := c.bestNode
+ for detachNode != attachNode {
+ detachNodes = append(detachNodes, detachNode)
+ detachNode = detachNode.Parent
+ }
+ return attachNodes, detachNodes