X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=protocol%2Fstate%2Fblockindex.go;fp=protocol%2Fstate%2Fblockindex.go;h=3262d8d856a4562875e652627f741ad00bdac82f;hb=2cf5801b2e693a45de9b51ec9aa9c1f787d57105;hp=df04fa76a30b02a11fdc37c6e7dd14be1d044c1f;hpb=0dff3fcf4fbd306176d561d721c1c31e58d90742;p=bytom%2Fvapor.git diff --git a/protocol/state/blockindex.go b/protocol/state/blockindex.go index df04fa76..3262d8d8 100644 --- a/protocol/state/blockindex.go +++ b/protocol/state/blockindex.go @@ -2,13 +2,11 @@ package state import ( "errors" - "math/big" "sort" "sync" "github.com/vapor/common" "github.com/vapor/consensus" - "github.com/vapor/consensus/difficulty" "github.com/vapor/protocol/bc" "github.com/vapor/protocol/bc/types" ) @@ -20,16 +18,12 @@ const approxNodesPerDay = 24 * 24 // BlockNode represents a block within the block chain and is primarily used to // aid in selecting the best chain to be the main chain. type BlockNode struct { - Parent *BlockNode // parent is the parent block for this node. - Hash bc.Hash // hash of the block. - Seed *bc.Hash // seed hash of the block - WorkSum *big.Int // total amount of work in the chain up to + Parent *BlockNode // parent is the parent block for this node. + Hash bc.Hash // hash of the block. Version uint64 Height uint64 Timestamp uint64 - Nonce uint64 - Bits uint64 TransactionsMerkleRoot bc.Hash TransactionStatusHash bc.Hash } @@ -42,22 +36,12 @@ func NewBlockNode(bh *types.BlockHeader, parent *BlockNode) (*BlockNode, error) node := &BlockNode{ Parent: parent, Hash: bh.Hash(), - WorkSum: difficulty.CalcWork(bh.Bits), Version: bh.Version, Height: bh.Height, Timestamp: bh.Timestamp, - Nonce: bh.Nonce, - Bits: bh.Bits, TransactionsMerkleRoot: bh.TransactionsMerkleRoot, TransactionStatusHash: bh.TransactionStatusHash, } - - if bh.Height == 0 { - node.Seed = consensus.InitialSeed - } else { - node.Seed = parent.CalcNextSeed() - node.WorkSum = node.WorkSum.Add(parent.WorkSum, node.WorkSum) - } return node, nil } @@ -72,8 +56,6 @@ func (node *BlockNode) BlockHeader() *types.BlockHeader { Height: node.Height, PreviousBlockHash: previousBlockHash, Timestamp: node.Timestamp, - Nonce: node.Nonce, - Bits: node.Bits, BlockCommitment: types.BlockCommitment{ TransactionsMerkleRoot: node.TransactionsMerkleRoot, TransactionStatusHash: node.TransactionStatusHash, @@ -93,30 +75,6 @@ func (node *BlockNode) CalcPastMedianTime() uint64 { return timestamps[len(timestamps)/2] } -// CalcNextBits calculate the bits for next block -func (node *BlockNode) CalcNextBits() uint64 { - if node.Height%consensus.BlocksPerRetarget != 0 || node.Height == 0 { - return node.Bits - } - - compareNode := node.Parent - for compareNode.Height%consensus.BlocksPerRetarget != 0 { - compareNode = compareNode.Parent - } - return difficulty.CalcNextRequiredDifficulty(node.BlockHeader(), compareNode.BlockHeader()) -} - -// CalcNextSeed calculate the seed for next block -func (node *BlockNode) CalcNextSeed() *bc.Hash { - if node.Height == 0 { - return consensus.InitialSeed - } - if node.Height%consensus.SeedPerRetarget == 0 { - return &node.Hash - } - return node.Seed -} - // BlockIndex is the struct for help chain trace block chain as tree type BlockIndex struct { sync.RWMutex