X-Git-Url: http://git.osdn.net/view?p=bytom%2Fvapor.git;a=blobdiff_plain;f=api%2Fblock_retrieve.go;h=97dd92957e8db5034ed014605c465583e0cae480;hp=ed043695696bcc5b2ce14107453e4e38aad214d5;hb=2cf5801b2e693a45de9b51ec9aa9c1f787d57105;hpb=0dff3fcf4fbd306176d561d721c1c31e58d90742 diff --git a/api/block_retrieve.go b/api/block_retrieve.go index ed043695..97dd9295 100644 --- a/api/block_retrieve.go +++ b/api/block_retrieve.go @@ -1,14 +1,10 @@ package api import ( - "math/big" - "gopkg.in/fatih/set.v0" "github.com/vapor/blockchain/query" - "github.com/vapor/consensus/difficulty" chainjson "github.com/vapor/encoding/json" - "github.com/vapor/errors" "github.com/vapor/protocol/bc" "github.com/vapor/protocol/bc/types" ) @@ -51,9 +47,6 @@ type GetBlockResp struct { Height uint64 `json:"height"` PreviousBlockHash *bc.Hash `json:"previous_block_hash"` Timestamp uint64 `json:"timestamp"` - Nonce uint64 `json:"nonce"` - Bits uint64 `json:"bits"` - Difficulty string `json:"difficulty"` TransactionsMerkleRoot *bc.Hash `json:"transaction_merkle_root"` TransactionStatusHash *bc.Hash `json:"transaction_status_hash"` Transactions []*BlockTx `json:"transactions"` @@ -80,9 +73,6 @@ func (a *API) getBlock(ins BlockReq) Response { Height: block.Height, PreviousBlockHash: &block.PreviousBlockHash, Timestamp: block.Timestamp, - Nonce: block.Nonce, - Bits: block.Bits, - Difficulty: difficulty.CalcWork(block.Bits).String(), TransactionsMerkleRoot: &block.TransactionsMerkleRoot, TransactionStatusHash: &block.TransactionStatusHash, Transactions: []*BlockTx{}, @@ -181,72 +171,6 @@ func hexBytesToHash(hexBytes chainjson.HexBytes) bc.Hash { return bc.NewHash(b32) } -// GetDifficultyResp is resp struct for getDifficulty API -type GetDifficultyResp struct { - BlockHash *bc.Hash `json:"hash"` - BlockHeight uint64 `json:"height"` - Bits uint64 `json:"bits"` - Difficulty string `json:"difficulty"` -} - -func (a *API) getDifficulty(ins BlockReq) Response { - block, err := a.getBlockHelper(ins) - if err != nil { - return NewErrorResponse(err) - } - - blockHash := block.Hash() - resp := &GetDifficultyResp{ - BlockHash: &blockHash, - BlockHeight: block.Height, - Bits: block.Bits, - Difficulty: difficulty.CalcWork(block.Bits).String(), - } - return NewSuccessResponse(resp) -} - -// getHashRateResp is resp struct for getHashRate API -type getHashRateResp struct { - BlockHash *bc.Hash `json:"hash"` - BlockHeight uint64 `json:"height"` - HashRate uint64 `json:"hash_rate"` -} - -func (a *API) getHashRate(ins BlockReq) Response { - if len(ins.BlockHash) != 32 && len(ins.BlockHash) != 0 { - err := errors.New("Block hash format error.") - return NewErrorResponse(err) - } - if ins.BlockHeight == 0 { - ins.BlockHeight = a.chain.BestBlockHeight() - } - - block, err := a.getBlockHelper(ins) - if err != nil { - return NewErrorResponse(err) - } - - preBlock, err := a.chain.GetBlockByHash(&block.PreviousBlockHash) - if err != nil { - return NewErrorResponse(err) - } - - diffTime := block.Timestamp - preBlock.Timestamp - if preBlock.Timestamp >= block.Timestamp { - diffTime = 1 - } - hashCount := difficulty.CalcWork(block.Bits) - hashRate := new(big.Int).Div(hashCount, big.NewInt(int64(diffTime))) - - blockHash := block.Hash() - resp := &getHashRateResp{ - BlockHash: &blockHash, - BlockHeight: block.Height, - HashRate: hashRate.Uint64(), - } - return NewSuccessResponse(resp) -} - // MerkleBlockReq is used to handle getTxOutProof req type MerkleBlockReq struct { TxIDs []chainjson.HexBytes `json:"tx_ids"`