OSDN Git Service

Merge pull request #519 from Bytom/dev
[bytom/bytom.git] / api / miner.go
1 package api
2
3 import (
4         "context"
5
6         "github.com/bytom/protocol/bc/types"
7 )
8
9 func (a *API) getWork() Response {
10         work, err := a.bcr.GetWork()
11         if err != nil {
12                 return NewErrorResponse(err)
13         }
14         return NewSuccessResponse(work)
15 }
16
17 type SubmitWorkReq struct {
18         BlockHeader *types.BlockHeader `json:"block_header"`
19 }
20
21 func (a *API) submitWork(ctx context.Context, req *SubmitWorkReq) Response {
22         if err := a.bcr.SubmitWork(req.BlockHeader); err != nil {
23                 return NewErrorResponse(err)
24         }
25         return NewSuccessResponse(true)
26 }
27
28 func (a *API) getBlockHeaderByHeight(ctx context.Context, req struct {
29         Height uint64 `json:"block_height"`
30 }) Response {
31         block, err := a.chain.GetBlockByHeight(req.Height)
32         if err != nil {
33                 return NewErrorResponse(err)
34         }
35
36         resp := &BlockHeaderByHeight{
37                 BlockHeader: &block.BlockHeader,
38                 Reward:      block.Transactions[0].Outputs[0].Amount,
39         }
40         return NewSuccessResponse(resp)
41 }