X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;ds=sidebyside;f=vendor%2Fgithub.com%2Fbtcsuite%2Fbtcd%2Frpcclient%2Fmining.go;fp=vendor%2Fgithub.com%2Fbtcsuite%2Fbtcd%2Frpcclient%2Fmining.go;h=0000000000000000000000000000000000000000;hb=54373c1a3efe0e373ec1605840a4363e4b246c46;hp=76a9d305802a54bbb4b6d94ded61635fd760cdd0;hpb=ee01d543fdfe1fd0a4d548965c66f7923ea7b062;p=bytom%2Fvapor.git diff --git a/vendor/github.com/btcsuite/btcd/rpcclient/mining.go b/vendor/github.com/btcsuite/btcd/rpcclient/mining.go deleted file mode 100644 index 76a9d305..00000000 --- a/vendor/github.com/btcsuite/btcd/rpcclient/mining.go +++ /dev/null @@ -1,417 +0,0 @@ -// Copyright (c) 2014-2017 The btcsuite developers -// Use of this source code is governed by an ISC -// license that can be found in the LICENSE file. - -package rpcclient - -import ( - "encoding/hex" - "encoding/json" - "errors" - - "github.com/btcsuite/btcd/btcjson" - "github.com/btcsuite/btcd/chaincfg/chainhash" - "github.com/btcsuite/btcutil" -) - -// FutureGenerateResult is a future promise to deliver the result of a -// GenerateAsync RPC invocation (or an applicable error). -type FutureGenerateResult chan *response - -// Receive waits for the response promised by the future and returns a list of -// block hashes generated by the call. -func (r FutureGenerateResult) Receive() ([]*chainhash.Hash, error) { - res, err := receiveFuture(r) - if err != nil { - return nil, err - } - - // Unmarshal result as a list of strings. - var result []string - err = json.Unmarshal(res, &result) - if err != nil { - return nil, err - } - - // Convert each block hash to a chainhash.Hash and store a pointer to - // each. - convertedResult := make([]*chainhash.Hash, len(result)) - for i, hashString := range result { - convertedResult[i], err = chainhash.NewHashFromStr(hashString) - if err != nil { - return nil, err - } - } - - return convertedResult, nil -} - -// GenerateAsync returns an instance of a type that can be used to get -// the result of the RPC at some future time by invoking the Receive function on -// the returned instance. -// -// See Generate for the blocking version and more details. -func (c *Client) GenerateAsync(numBlocks uint32) FutureGenerateResult { - cmd := btcjson.NewGenerateCmd(numBlocks) - return c.sendCmd(cmd) -} - -// Generate generates numBlocks blocks and returns their hashes. -func (c *Client) Generate(numBlocks uint32) ([]*chainhash.Hash, error) { - return c.GenerateAsync(numBlocks).Receive() -} - -// FutureGetGenerateResult is a future promise to deliver the result of a -// GetGenerateAsync RPC invocation (or an applicable error). -type FutureGetGenerateResult chan *response - -// Receive waits for the response promised by the future and returns true if the -// server is set to mine, otherwise false. -func (r FutureGetGenerateResult) Receive() (bool, error) { - res, err := receiveFuture(r) - if err != nil { - return false, err - } - - // Unmarshal result as a boolean. - var result bool - err = json.Unmarshal(res, &result) - if err != nil { - return false, err - } - - return result, nil -} - -// GetGenerateAsync returns an instance of a type that can be used to get -// the result of the RPC at some future time by invoking the Receive function on -// the returned instance. -// -// See GetGenerate for the blocking version and more details. -func (c *Client) GetGenerateAsync() FutureGetGenerateResult { - cmd := btcjson.NewGetGenerateCmd() - return c.sendCmd(cmd) -} - -// GetGenerate returns true if the server is set to mine, otherwise false. -func (c *Client) GetGenerate() (bool, error) { - return c.GetGenerateAsync().Receive() -} - -// FutureSetGenerateResult is a future promise to deliver the result of a -// SetGenerateAsync RPC invocation (or an applicable error). -type FutureSetGenerateResult chan *response - -// Receive waits for the response promised by the future and returns an error if -// any occurred when setting the server to generate coins (mine) or not. -func (r FutureSetGenerateResult) Receive() error { - _, err := receiveFuture(r) - return err -} - -// SetGenerateAsync returns an instance of a type that can be used to get the -// result of the RPC at some future time by invoking the Receive function on the -// returned instance. -// -// See SetGenerate for the blocking version and more details. -func (c *Client) SetGenerateAsync(enable bool, numCPUs int) FutureSetGenerateResult { - cmd := btcjson.NewSetGenerateCmd(enable, &numCPUs) - return c.sendCmd(cmd) -} - -// SetGenerate sets the server to generate coins (mine) or not. -func (c *Client) SetGenerate(enable bool, numCPUs int) error { - return c.SetGenerateAsync(enable, numCPUs).Receive() -} - -// FutureGetHashesPerSecResult is a future promise to deliver the result of a -// GetHashesPerSecAsync RPC invocation (or an applicable error). -type FutureGetHashesPerSecResult chan *response - -// Receive waits for the response promised by the future and returns a recent -// hashes per second performance measurement while generating coins (mining). -// Zero is returned if the server is not mining. -func (r FutureGetHashesPerSecResult) Receive() (int64, error) { - res, err := receiveFuture(r) - if err != nil { - return -1, err - } - - // Unmarshal result as an int64. - var result int64 - err = json.Unmarshal(res, &result) - if err != nil { - return 0, err - } - - return result, nil -} - -// GetHashesPerSecAsync returns an instance of a type that can be used to get -// the result of the RPC at some future time by invoking the Receive function on -// the returned instance. -// -// See GetHashesPerSec for the blocking version and more details. -func (c *Client) GetHashesPerSecAsync() FutureGetHashesPerSecResult { - cmd := btcjson.NewGetHashesPerSecCmd() - return c.sendCmd(cmd) -} - -// GetHashesPerSec returns a recent hashes per second performance measurement -// while generating coins (mining). Zero is returned if the server is not -// mining. -func (c *Client) GetHashesPerSec() (int64, error) { - return c.GetHashesPerSecAsync().Receive() -} - -// FutureGetMiningInfoResult is a future promise to deliver the result of a -// GetMiningInfoAsync RPC invocation (or an applicable error). -type FutureGetMiningInfoResult chan *response - -// Receive waits for the response promised by the future and returns the mining -// information. -func (r FutureGetMiningInfoResult) Receive() (*btcjson.GetMiningInfoResult, error) { - res, err := receiveFuture(r) - if err != nil { - return nil, err - } - - // Unmarshal result as a getmininginfo result object. - var infoResult btcjson.GetMiningInfoResult - err = json.Unmarshal(res, &infoResult) - if err != nil { - return nil, err - } - - return &infoResult, nil -} - -// GetMiningInfoAsync returns an instance of a type that can be used to get -// the result of the RPC at some future time by invoking the Receive function on -// the returned instance. -// -// See GetMiningInfo for the blocking version and more details. -func (c *Client) GetMiningInfoAsync() FutureGetMiningInfoResult { - cmd := btcjson.NewGetMiningInfoCmd() - return c.sendCmd(cmd) -} - -// GetMiningInfo returns mining information. -func (c *Client) GetMiningInfo() (*btcjson.GetMiningInfoResult, error) { - return c.GetMiningInfoAsync().Receive() -} - -// FutureGetNetworkHashPS is a future promise to deliver the result of a -// GetNetworkHashPSAsync RPC invocation (or an applicable error). -type FutureGetNetworkHashPS chan *response - -// Receive waits for the response promised by the future and returns the -// estimated network hashes per second for the block heights provided by the -// parameters. -func (r FutureGetNetworkHashPS) Receive() (int64, error) { - res, err := receiveFuture(r) - if err != nil { - return -1, err - } - - // Unmarshal result as an int64. - var result int64 - err = json.Unmarshal(res, &result) - if err != nil { - return 0, err - } - - return result, nil -} - -// GetNetworkHashPSAsync returns an instance of a type that can be used to get -// the result of the RPC at some future time by invoking the Receive function on -// the returned instance. -// -// See GetNetworkHashPS for the blocking version and more details. -func (c *Client) GetNetworkHashPSAsync() FutureGetNetworkHashPS { - cmd := btcjson.NewGetNetworkHashPSCmd(nil, nil) - return c.sendCmd(cmd) -} - -// GetNetworkHashPS returns the estimated network hashes per second using the -// default number of blocks and the most recent block height. -// -// See GetNetworkHashPS2 to override the number of blocks to use and -// GetNetworkHashPS3 to override the height at which to calculate the estimate. -func (c *Client) GetNetworkHashPS() (int64, error) { - return c.GetNetworkHashPSAsync().Receive() -} - -// GetNetworkHashPS2Async returns an instance of a type that can be used to get -// the result of the RPC at some future time by invoking the Receive function on -// the returned instance. -// -// See GetNetworkHashPS2 for the blocking version and more details. -func (c *Client) GetNetworkHashPS2Async(blocks int) FutureGetNetworkHashPS { - cmd := btcjson.NewGetNetworkHashPSCmd(&blocks, nil) - return c.sendCmd(cmd) -} - -// GetNetworkHashPS2 returns the estimated network hashes per second for the -// specified previous number of blocks working backwards from the most recent -// block height. The blocks parameter can also be -1 in which case the number -// of blocks since the last difficulty change will be used. -// -// See GetNetworkHashPS to use defaults and GetNetworkHashPS3 to override the -// height at which to calculate the estimate. -func (c *Client) GetNetworkHashPS2(blocks int) (int64, error) { - return c.GetNetworkHashPS2Async(blocks).Receive() -} - -// GetNetworkHashPS3Async returns an instance of a type that can be used to get -// the result of the RPC at some future time by invoking the Receive function on -// the returned instance. -// -// See GetNetworkHashPS3 for the blocking version and more details. -func (c *Client) GetNetworkHashPS3Async(blocks, height int) FutureGetNetworkHashPS { - cmd := btcjson.NewGetNetworkHashPSCmd(&blocks, &height) - return c.sendCmd(cmd) -} - -// GetNetworkHashPS3 returns the estimated network hashes per second for the -// specified previous number of blocks working backwards from the specified -// block height. The blocks parameter can also be -1 in which case the number -// of blocks since the last difficulty change will be used. -// -// See GetNetworkHashPS and GetNetworkHashPS2 to use defaults. -func (c *Client) GetNetworkHashPS3(blocks, height int) (int64, error) { - return c.GetNetworkHashPS3Async(blocks, height).Receive() -} - -// FutureGetWork is a future promise to deliver the result of a -// GetWorkAsync RPC invocation (or an applicable error). -type FutureGetWork chan *response - -// Receive waits for the response promised by the future and returns the hash -// data to work on. -func (r FutureGetWork) Receive() (*btcjson.GetWorkResult, error) { - res, err := receiveFuture(r) - if err != nil { - return nil, err - } - - // Unmarshal result as a getwork result object. - var result btcjson.GetWorkResult - err = json.Unmarshal(res, &result) - if err != nil { - return nil, err - } - - return &result, nil -} - -// GetWorkAsync returns an instance of a type that can be used to get the result -// of the RPC at some future time by invoking the Receive function on the -// returned instance. -// -// See GetWork for the blocking version and more details. -func (c *Client) GetWorkAsync() FutureGetWork { - cmd := btcjson.NewGetWorkCmd(nil) - return c.sendCmd(cmd) -} - -// GetWork returns hash data to work on. -// -// See GetWorkSubmit to submit the found solution. -func (c *Client) GetWork() (*btcjson.GetWorkResult, error) { - return c.GetWorkAsync().Receive() -} - -// FutureGetWorkSubmit is a future promise to deliver the result of a -// GetWorkSubmitAsync RPC invocation (or an applicable error). -type FutureGetWorkSubmit chan *response - -// Receive waits for the response promised by the future and returns whether -// or not the submitted block header was accepted. -func (r FutureGetWorkSubmit) Receive() (bool, error) { - res, err := receiveFuture(r) - if err != nil { - return false, err - } - - // Unmarshal result as a boolean. - var accepted bool - err = json.Unmarshal(res, &accepted) - if err != nil { - return false, err - } - - return accepted, nil -} - -// GetWorkSubmitAsync returns an instance of a type that can be used to get the -// result of the RPC at some future time by invoking the Receive function on the -// returned instance. -// -// See GetWorkSubmit for the blocking version and more details. -func (c *Client) GetWorkSubmitAsync(data string) FutureGetWorkSubmit { - cmd := btcjson.NewGetWorkCmd(&data) - return c.sendCmd(cmd) -} - -// GetWorkSubmit submits a block header which is a solution to previously -// requested data and returns whether or not the solution was accepted. -// -// See GetWork to request data to work on. -func (c *Client) GetWorkSubmit(data string) (bool, error) { - return c.GetWorkSubmitAsync(data).Receive() -} - -// FutureSubmitBlockResult is a future promise to deliver the result of a -// SubmitBlockAsync RPC invocation (or an applicable error). -type FutureSubmitBlockResult chan *response - -// Receive waits for the response promised by the future and returns an error if -// any occurred when submitting the block. -func (r FutureSubmitBlockResult) Receive() error { - res, err := receiveFuture(r) - if err != nil { - return err - } - - if string(res) != "null" { - var result string - err = json.Unmarshal(res, &result) - if err != nil { - return err - } - - return errors.New(result) - } - - return nil - -} - -// SubmitBlockAsync returns an instance of a type that can be used to get the -// result of the RPC at some future time by invoking the Receive function on the -// returned instance. -// -// See SubmitBlock for the blocking version and more details. -func (c *Client) SubmitBlockAsync(block *btcutil.Block, options *btcjson.SubmitBlockOptions) FutureSubmitBlockResult { - blockHex := "" - if block != nil { - blockBytes, err := block.Bytes() - if err != nil { - return newFutureError(err) - } - - blockHex = hex.EncodeToString(blockBytes) - } - - cmd := btcjson.NewSubmitBlockCmd(blockHex, options) - return c.sendCmd(cmd) -} - -// SubmitBlock attempts to submit a new block into the bitcoin network. -func (c *Client) SubmitBlock(block *btcutil.Block, options *btcjson.SubmitBlockOptions) error { - return c.SubmitBlockAsync(block, options).Receive() -} - -// TODO(davec): Implement GetBlockTemplate