"github.com/bytom/protocol/bc/types"
)
-// BlockHeaderJSON struct provides support for get work in json format, when it also follows
-// protocol/bc/types.BlockHeader structure
-type BlockHeaderJSON struct {
- Version uint64 `json:"version"` // The version of the block.
- Height uint64 `json:"height"` // The height of the block.
- PreviousBlockHash bc.Hash `json:"previous_block_hash"` // The hash of the previous block.
- Timestamp uint64 `json:"timestamp"` // The time of the block in seconds.
- Nonce uint64 `json:"nonce"` // Nonce used to generate the block.
- Bits uint64 `json:"bits"` // Difficulty target for the block.
- BlockCommitment *types.BlockCommitment `json:"block_commitment"` //Block commitment
-}
-
// getWork gets work in compressed protobuf format
func (a *API) getWork() Response {
work, err := a.GetWork()
// SubmitWorkJSONReq is req struct for submit-work-json API
type SubmitWorkJSONReq struct {
- BlockHeader *BlockHeaderJSON `json:"block_header"`
+ BlockHeader *types.BlockHeaderJSON `json:"block_header"`
}
// submitWorkJSON submits work in json format
func (a *API) submitWorkJSON(ctx context.Context, req *SubmitWorkJSONReq) Response {
- blockCommitment := types.BlockCommitment{
- TransactionsMerkleRoot: req.BlockHeader.BlockCommitment.TransactionsMerkleRoot,
- TransactionStatusHash: req.BlockHeader.BlockCommitment.TransactionStatusHash,
- }
-
bh := &types.BlockHeader{
Version: req.BlockHeader.Version,
Height: req.BlockHeader.Height,
Timestamp: req.BlockHeader.Timestamp,
Nonce: req.BlockHeader.Nonce,
Bits: req.BlockHeader.Bits,
- BlockCommitment: blockCommitment,
+ BlockCommitment: req.BlockHeader.BlockCommitment,
}
if err := a.SubmitWork(bh); err != nil {
// GetWorkJSONResp is resp struct for get-work-json API
type GetWorkJSONResp struct {
- BlockHeader *BlockHeaderJSON `json:"block_header"`
- Seed *bc.Hash `json:"seed"`
+ BlockHeader *types.BlockHeaderJSON `json:"block_header"`
+ Seed *bc.Hash `json:"seed"`
}
// GetWorkJSON gets work in json format
return nil, err
}
- blockCommitment := &types.BlockCommitment{
- TransactionsMerkleRoot: bh.BlockCommitment.TransactionsMerkleRoot,
- TransactionStatusHash: bh.BlockCommitment.TransactionStatusHash,
- }
-
return &GetWorkJSONResp{
- BlockHeader: &BlockHeaderJSON{
+ BlockHeader: &types.BlockHeaderJSON{
Version: bh.Version,
Height: bh.Height,
PreviousBlockHash: bh.PreviousBlockHash,
Timestamp: bh.Timestamp,
Nonce: bh.Nonce,
Bits: bh.Bits,
- BlockCommitment: blockCommitment,
+ BlockCommitment: bh.BlockCommitment,
},
Seed: seed,
}, nil
BlockCommitment
}
+// BlockHeaderJSON struct provides support for get work in json format, when it also follows
+// BlockHeader structure
+type BlockHeaderJSON struct {
+ Version uint64 `json:"version"` // The version of the block.
+ Height uint64 `json:"height"` // The height of the block.
+ PreviousBlockHash bc.Hash `json:"previous_block_hash"` // The hash of the previous block.
+ Timestamp uint64 `json:"timestamp"` // The time of the block in seconds.
+ Nonce uint64 `json:"nonce"` // Nonce used to generate the block.
+ Bits uint64 `json:"bits"` // Difficulty target for the block.
+ BlockCommitment `json:"block_commitment"` //Block commitment
+}
+
// Time returns the time represented by the Timestamp in block header.
func (bh *BlockHeader) Time() time.Time {
return time.Unix(int64(bh.Timestamp), 0).UTC()