6 "github.com/bytom/errors"
7 "github.com/bytom/protocol/bc"
8 "github.com/bytom/protocol/bc/types"
11 func (a *API) getWork() Response {
12 work, err := a.GetWork()
14 return NewErrorResponse(err)
16 return NewSuccessResponse(work)
19 // SubmitWorkReq used to submitWork req
20 type SubmitWorkReq struct {
21 BlockHeader *types.BlockHeader `json:"block_header"`
24 func (a *API) submitWork(ctx context.Context, req *SubmitWorkReq) Response {
25 if err := a.SubmitWork(req.BlockHeader); err != nil {
26 return NewErrorResponse(err)
28 return NewSuccessResponse(true)
31 // GetWorkResp is resp struct for API
32 type GetWorkResp struct {
33 BlockHeader *types.BlockHeader `json:"block_header"`
34 Seed *bc.Hash `json:"seed"`
38 func (a *API) GetWork() (*GetWorkResp, error) {
39 bh, err := a.miningPool.GetWork()
44 seed, err := a.chain.CalcNextSeed(&bh.PreviousBlockHash)
55 // SubmitWork submit work
56 func (a *API) SubmitWork(bh *types.BlockHeader) error {
57 return a.miningPool.SubmitWork(bh)
60 func (a *API) setMining(in struct {
61 IsMining bool `json:"is_mining"`
64 return a.startMining()
69 func (a *API) startMining() Response {
72 return NewErrorResponse(errors.New("Failed to start mining"))
74 return NewSuccessResponse("")
77 func (a *API) stopMining() Response {
80 return NewErrorResponse(errors.New("Failed to stop mining"))
82 return NewSuccessResponse("")