Implement SendRawTransaction Bitcoind RPC method

This commit is contained in:
Martin Boehm 2018-02-20 12:01:42 +01:00
parent aa2d6d7816
commit b2b9cc3f73

View File

@ -150,6 +150,18 @@ type resEstimateSmartFee struct {
} `json:"result"`
}
// sendrawtransaction
type cmdSendRawTransaction struct {
Method string `json:"method"`
Params []string `json:"params"`
}
type resSendRawTransaction struct {
Error *RPCError `json:"error"`
Result string `json:"result"`
}
type BlockParser interface {
ParseBlock(b []byte) (*Block, error)
}
@ -396,6 +408,24 @@ func (b *BitcoinRPC) EstimateSmartFee(blocks int, conservative bool) (float64, e
return res.Result.Feerate, nil
}
// SendRawTransaction sends raw transaction.
func (b *BitcoinRPC) SendRawTransaction(tx string) (string, error) {
glog.V(1).Info("rpc: sendrawtransaction")
res := resSendRawTransaction{}
req := cmdSendRawTransaction{Method: "sendrawtransaction"}
req.Params = []string{tx}
err := b.call(&req, &res)
if err != nil {
return "", err
}
if res.Error != nil {
return "", res.Error
}
return res.Result, nil
}
func (b *BitcoinRPC) call(req interface{}, res interface{}) error {
httpData, err := json.Marshal(req)
if err != nil {