diff --git a/jsonapi.go b/jsonapi.go index 1fbbc1f8..db79ade8 100644 --- a/jsonapi.go +++ b/jsonapi.go @@ -7,7 +7,6 @@ package btcjson import ( "encoding/json" "fmt" - "strings" ) // Message contains a message to be sent to the bitcoin client. @@ -28,299 +27,6 @@ type Reply struct { Id *interface{} `json:"id"` } -// InfoResult contains the data returned by the getinfo command. -type InfoResult struct { - Version int `json:"version,omitempty"` - ProtocolVersion int `json:"protocolversion,omitempty"` - WalletVersion int `json:"walletversion,omitempty"` - Balance float64 `json:"balance,omitempty"` - Blocks int `json:"blocks,omitempty"` - TimeOffset int64 `json:"timeoffset,omitempty"` - Connections int `json:"connections,omitempty"` - Proxy string `json:"proxy,omitempty"` - Difficulty float64 `json:"difficulty,omitempty"` - TestNet bool `json:"testnet,omitempty"` - KeypoolOldest int64 `json:"keypoololdest,omitempty"` - KeypoolSize int `json:"keypoolsize,omitempty"` - PaytxFee float64 `json:"paytxfee,omitempty"` - RelayFee float64 `json:"relayfee,omitempty"` - Errors string `json:"errors,omitempty"` -} - -// BlockResult models the data from the getblock command when the verbose flag -// is set. When the verbose flag is not set, getblock return a hex-encoded -// string. -type BlockResult struct { - Hash string `json:"hash"` - Confirmations uint64 `json:"confirmations"` - Size int `json:"size"` - Height int64 `json:"height"` - Version uint32 `json:"version"` - MerkleRoot string `json:"merkleroot"` - Tx []string `json:"tx,omitempty"` - RawTx []TxRawResult `json:"rawtx,omitempty"` - Time int64 `json:"time"` - Nonce uint32 `json:"nonce"` - Bits string `json:"bits"` - Difficulty float64 `json:"difficulty"` - PreviousHash string `json:"previousblockhash"` - NextHash string `json:"nextblockhash"` -} - -// CreateMultiSigResult models the data returned from the createmultisig command. -type CreateMultiSigResult struct { - Address string `json:"address"` - RedeemScript string `json:"redeemScript"` -} - -// DecodeScriptResult models the data returned from the decodescript command. -type DecodeScriptResult struct { - Asm string `json:"asm"` - ReqSigs int `json:"reqSigs,omitempty"` - Type string `json:"type"` - Addresses []string `json:"addresses,omitempty"` - P2sh string `json:"p2sh"` -} - -// GetPeerInfoResult models the data returned from the getpeerinfo command. -type GetPeerInfoResult struct { - Addr string `json:"addr"` - AddrLocal string `json:"addrlocal,omitempty"` - Services string `json:"services"` - LastSend int64 `json:"lastsend"` - LastRecv int64 `json:"lastrecv"` - BytesSent uint64 `json:"bytessent"` - BytesRecv uint64 `json:"bytesrecv"` - PingTime int64 `json:"pingtime"` - PingWait int64 `json:"pingwait,omitempty"` - ConnTime int64 `json:"conntime"` - Version uint32 `json:"version"` - SubVer string `json:"subver"` - Inbound bool `json:"inbound"` - StartingHeight int32 `json:"startingheight"` - BanScore int `json:"banscore,omitempty"` - SyncNode bool `json:"syncnode"` -} - -// GetRawMempoolResult models the data returned from the getrawmempool command. -type GetRawMempoolResult struct { - Size int `json:"size"` - Fee float64 `json:"fee"` - Time int64 `json:"time"` - Height int64 `json:"height"` - StartingPriority int `json:"startingpriority"` - CurrentPriority int `json:"currentpriority"` - Depends []string `json:"depends"` -} - -// GetTransactionDetailsResult models the details data from the gettransaction command. -type GetTransactionDetailsResult struct { - Account string `json:"account"` - Address string `json:"address"` - Category string `json:"category"` - Amount float64 `json:"amount"` - Fee float64 `json:"fee,omitempty"` -} - -// GetTransactionResult models the data from the gettransaction command. -type GetTransactionResult struct { - Amount float64 `json:"amount"` - Fee float64 `json:"fee,omitempty"` - Confirmations int64 `json:"confirmations"` - BlockHash string `json:"blockhash"` - BlockIndex int64 `json:"blockindex"` - BlockTime int64 `json:"blocktime"` - TxID string `json:"txid"` - WalletConflicts []string `json:"walletconflicts"` - Time int64 `json:"time"` - TimeReceived int64 `json:"timereceived"` - Details []GetTransactionDetailsResult `json:"details"` - Hex string `json:"hex"` -} - -// ListTransactionsResult models the data from the listtransactions command. -type ListTransactionsResult struct { - Account string `json:"account"` - Address string `json:"address,omitempty"` - Category string `json:"category"` - Amount float64 `json:"amount"` - Fee float64 `json:"fee"` - Confirmations int64 `json:"confirmations"` - Generated bool `json:"generated,omitempty"` - BlockHash string `json:"blockhash,omitempty"` - BlockIndex int64 `json:"blockindex,omitempty"` - BlockTime int64 `json:"blocktime,omitempty"` - TxID string `json:"txid"` - WalletConflicts []string `json:"walletconflicts"` - Time int64 `json:"time"` - TimeReceived int64 `json:"timereceived"` - Comment string `json:"comment,omitempty"` - OtherAccount string `json:"otheraccount"` -} - -// TxRawResult models the data from the getrawtransaction command. -type TxRawResult struct { - Hex string `json:"hex"` - Txid string `json:"txid"` - Version uint32 `json:"version"` - LockTime uint32 `json:"locktime"` - Vin []Vin `json:"vin"` - Vout []Vout `json:"vout"` - BlockHash string `json:"blockhash,omitempty"` - Confirmations uint64 `json:"confirmations,omitempty"` - Time int64 `json:"time,omitempty"` - Blocktime int64 `json:"blocktime,omitempty"` -} - -// TxRawDecodeResult models the data from the decoderawtransaction command. -type TxRawDecodeResult struct { - Txid string `json:"txid"` - Version uint32 `json:"version"` - Locktime uint32 `json:"locktime"` - Vin []Vin `json:"vin"` - Vout []Vout `json:"vout"` -} - -// GetNetTotalsResult models the data returned from the getnettotals command. -type GetNetTotalsResult struct { - TotalBytesRecv uint64 `json:"totalbytesrecv"` - TotalBytesSent uint64 `json:"totalbytessent"` - TimeMillis int64 `json:"timemillis"` -} - -// ScriptSig models a signature script. It is defined seperately since it only -// applies to non-coinbase. Therefore the field in the Vin structure needs -// to be a pointer. -type ScriptSig struct { - Asm string `json:"asm"` - Hex string `json:"hex"` -} - -// Vin models parts of the tx data. It is defined seperately since both -// getrawtransaction and decoderawtransaction use the same structure. -type Vin struct { - Coinbase string `json:"coinbase"` - Txid string `json:"txid"` - Vout int `json:"vout"` - ScriptSig *ScriptSig `json:"scriptSig"` - Sequence uint32 `json:"sequence"` -} - -// IsCoinBase returns a bool to show if a Vin is a Coinbase one or not. -func (v *Vin) IsCoinBase() bool { - return len(v.Coinbase) > 0 -} - -// MarshalJSON provides a custom Marshal method for Vin. -func (v *Vin) MarshalJSON() ([]byte, error) { - if v.IsCoinBase() { - coinbaseStruct := struct { - Coinbase string `json:"coinbase"` - Sequence uint32 `json:"sequence"` - }{ - Coinbase: v.Coinbase, - Sequence: v.Sequence, - } - return json.Marshal(coinbaseStruct) - } - - txStruct := struct { - Txid string `json:"txid"` - Vout int `json:"vout"` - ScriptSig *ScriptSig `json:"scriptSig"` - Sequence uint32 `json:"sequence"` - }{ - Txid: v.Txid, - Vout: v.Vout, - ScriptSig: v.ScriptSig, - Sequence: v.Sequence, - } - return json.Marshal(txStruct) -} - -// Vout models parts of the tx data. It is defined seperately since both -// getrawtransaction and decoderawtransaction use the same structure. -type Vout struct { - Value float64 `json:"value"` - N int `json:"n"` - ScriptPubKey struct { - Asm string `json:"asm"` - Hex string `json:"hex"` - ReqSigs int `json:"reqSigs,omitempty"` - Type string `json:"type"` - Addresses []string `json:"addresses,omitempty"` - } `json:"scriptPubKey"` -} - -// GetMiningInfoResult models the data from the getmininginfo command. -type GetMiningInfoResult struct { - CurrentBlockSize float64 `json:"currentblocksize"` - Difficulty float64 `json:"difficulty"` - Errors string `json:"errors"` - Generate bool `json:"generate"` - GenProcLimit float64 `json:"genproclimit"` - PooledTx float64 `json:"pooledtx"` - Testnet bool `json:"testnet"` - Blocks float64 `json:"blocks"` - CurrentBlockTx float64 `json:"currentblocktx"` - HashesPerSec float64 `json:"hashespersec"` -} - -// GetWorkResult models the data from the getwork command. -type GetWorkResult struct { - Data string `json:"data"` - Hash1 string `json:"hash1"` - Midstate string `json:"midstate"` - Target string `json:"target"` -} - -// ValidateAddressResult models the data from the validateaddress command. -type ValidateAddressResult struct { - IsValid bool `json:"isvalid"` - Address string `json:"address,omitempty"` - IsMine bool `json:"ismine,omitempty"` - IsScript bool `json:"isscript,omitempty"` - PubKey string `json:"pubkey,omitempty"` - IsCompressed bool `json:"iscompressed,omitempty"` - Account string `json:"account,omitempty"` - Addresses []string `json:"addresses,omitempty"` - Hex string `json:"hex,omitempty"` - Script string `json:"script,omitempty"` - SigsRequired int `json:"sigsrequired,omitempty"` -} - -// SignRawTransactionResult models the data from the signrawtransaction -// command. -type SignRawTransactionResult struct { - Hex string `json:"hex"` - Complete bool `json:"complete"` -} - -// ListUnSpentResult models the data from the ListUnSpentResult command. -type ListUnSpentResult struct { - TxId string `json:"txid"` - Vout float64 `json:"vout"` - Address string `json:"address"` - Account string `json:"account"` - ScriptPubKey string `json:"scriptPubKey"` - Amount float64 `json:"amount"` - Confirmations float64 `json:"confirmations"` -} - -// GetAddedNodeInfoResultAddr models the data of the addresses portion of the -// getaddednodeinfo command. -type GetAddedNodeInfoResultAddr struct { - Address string `json:"address"` - Connected string `json:"connected"` -} - -// GetAddedNodeInfoResult models the data from the getaddednodeinfo command. -type GetAddedNodeInfoResult struct { - AddedNode string `json:"addednode"` - Connected *bool `json:"connected,omitempty"` - Addresses *[]GetAddedNodeInfoResultAddr `json:"addresses,omitempty"` -} - // Error models the error field of the json returned by a bitcoin client. When // there is no error, this should be a nil pointer to produce the null in the // json that bitcoind produces. @@ -910,229 +616,6 @@ func CreateMessageWithId(message string, id interface{}, args ...interface{}) ([ return finalMessage, err } -// ReadResultCmd unmarshalls the json reply with data struct for specific -// commands or an interface if it is not a command where we already have a -// struct ready. -func ReadResultCmd(cmd string, message []byte) (Reply, error) { - var result Reply - var err error - var objmap map[string]json.RawMessage - err = json.Unmarshal(message, &objmap) - if err != nil { - if strings.Contains(string(message), "401 Unauthorized.") { - err = fmt.Errorf("Authentication error.") - } else { - err = fmt.Errorf("Error unmarshalling json reply: %v", err) - } - return result, err - } - // Take care of the parts that are the same for all replies. - var jsonErr Error - var id interface{} - err = json.Unmarshal(objmap["error"], &jsonErr) - if err != nil { - err = fmt.Errorf("Error unmarshalling json reply: %v", err) - return result, err - } - err = json.Unmarshal(objmap["id"], &id) - if err != nil { - err = fmt.Errorf("Error unmarshalling json reply: %v", err) - return result, err - } - - // If it is a command where we have already worked out the reply, - // generate put the results in the proper structure. - // We handle the error condition after the switch statement. - switch cmd { - case "createmultisig": - var res CreateMultiSigResult - err = json.Unmarshal(objmap["result"], &res) - if err == nil { - result.Result = res - } - case "getaddednodeinfo": - // getaddednodeinfo can either return a JSON object or a - // slice of strings depending on the verbose flag. Choose the - // right form accordingly. - if strings.Contains(string(objmap["result"]), "{") { - var res []GetAddedNodeInfoResult - err = json.Unmarshal(objmap["result"], &res) - if err == nil { - result.Result = res - } - } else { - var res []string - err = json.Unmarshal(objmap["result"], &res) - if err == nil { - result.Result = res - } - } - case "getinfo": - var res InfoResult - err = json.Unmarshal(objmap["result"], &res) - if err == nil { - result.Result = res - } - case "getblock": - // getblock can either return a JSON object or a hex-encoded - // string depending on the verbose flag. Choose the right form - // accordingly. - if strings.Contains(string(objmap["result"]), "{") { - var res BlockResult - err = json.Unmarshal(objmap["result"], &res) - if err == nil { - result.Result = res - } - } else { - var res string - err = json.Unmarshal(objmap["result"], &res) - if err == nil { - result.Result = res - } - } - case "getnettotals": - var res GetNetTotalsResult - err = json.Unmarshal(objmap["result"], &res) - if err == nil { - result.Result = res - } - case "getnetworkhashps": - var res int64 - err = json.Unmarshal(objmap["result"], &res) - if err == nil { - result.Result = res - } - case "getpeerinfo": - var res []GetPeerInfoResult - err = json.Unmarshal(objmap["result"], &res) - if err == nil { - result.Result = res - } - case "getrawtransaction": - // getrawtransaction can either return a JSON object or a - // hex-encoded string depending on the verbose flag. Choose the - // right form accordingly. - if strings.Contains(string(objmap["result"]), "{") { - var res TxRawResult - err = json.Unmarshal(objmap["result"], &res) - if err == nil { - result.Result = res - } - } else { - var res string - err = json.Unmarshal(objmap["result"], &res) - if err == nil { - result.Result = res - } - } - case "decoderawtransaction": - var res TxRawDecodeResult - err = json.Unmarshal(objmap["result"], &res) - if err == nil { - result.Result = res - } - case "getaddressesbyaccount": - var res []string - err = json.Unmarshal(objmap["result"], &res) - if err == nil { - result.Result = res - } - case "getmininginfo": - var res GetMiningInfoResult - err = json.Unmarshal(objmap["result"], &res) - if err == nil { - result.Result = res - } - case "getrawmempool": - // getrawmempool can either return a map of JSON objects or - // an array of strings depending on the verbose flag. Choose - // the right form accordingly. - if strings.Contains(string(objmap["result"]), "{") { - var res map[string]GetRawMempoolResult - err = json.Unmarshal(objmap["result"], &res) - if err == nil { - result.Result = res - } - } else { - var res []string - err = json.Unmarshal(objmap["result"], &res) - if err == nil { - result.Result = res - } - } - case "gettransaction": - var res GetTransactionResult - err = json.Unmarshal(objmap["result"], &res) - if err == nil { - result.Result = res - } - case "getwork": - // getwork can either return a JSON object or a boolean - // depending on whether or not data was provided. Choose the - // right form accordingly. - if strings.Contains(string(objmap["result"]), "{") { - var res GetWorkResult - err = json.Unmarshal(objmap["result"], &res) - if err == nil { - result.Result = res - } - } else { - var res bool - err = json.Unmarshal(objmap["result"], &res) - if err == nil { - result.Result = res - } - } - case "validateaddress": - var res ValidateAddressResult - err = json.Unmarshal(objmap["result"], &res) - if err == nil { - result.Result = res - } - case "signrawtransaction": - var res SignRawTransactionResult - err = json.Unmarshal(objmap["result"], &res) - if err == nil { - result.Result = res - } - case "listtransactions": - var res []ListTransactionsResult - err = json.Unmarshal(objmap["result"], &res) - if err == nil { - result.Result = res - } - case "listunspent": - var res []ListUnSpentResult - err = json.Unmarshal(objmap["result"], &res) - if err == nil { - result.Result = res - } - // For commands that return a single item (or no items), we get it with - // the correct concrete type for free (but treat them separately - // for clarity). - case "getblockcount", "getbalance", "getblocknumber", "getgenerate", - "getconnetioncount", "getdifficulty", "gethashespersec", - "setgenerate", "stop", "settxfee", "getaccount", - "getnewaddress", "sendtoaddress", "createrawtransaction", - "sendrawtransaction", "getbestblockhash", "getrawchangeaddress": - err = json.Unmarshal(message, &result) - // For anything else put it in an interface. All the data is still - // there, just a little less convenient to deal with. - default: - err = json.Unmarshal(message, &result) - } - if err != nil { - err = fmt.Errorf("Error unmarshalling json reply: %v", err) - return result, err - } - // Only want the error field when there is an actual error to report. - if jsonErr.Code != 0 { - result.Error = &jsonErr - } - result.Id = &id - return result, err -} - // JSONGetMethod takes a message and tries to find the bitcoin command that it // is in reply to so it can be processed further. func JSONGetMethod(message []byte) (string, error) { diff --git a/jsonapi_test.go b/jsonapi_test.go index 8ceab3eb..7a9376a4 100644 --- a/jsonapi_test.go +++ b/jsonapi_test.go @@ -6,7 +6,6 @@ package btcjson_test import ( "bytes" - "encoding/json" "fmt" "github.com/conformal/btcjson" "io" @@ -320,78 +319,6 @@ func TestJSONtoAmount(t *testing.T) { return } -var resulttests = []struct { - cmd string - msg []byte - comp bool - pass bool -}{ - // Generate a fake message to make sure we can encode and decode it and - // get the same thing back. - {"getblockcount", - []byte(`{"result":226790,"error":{"code":1,"message":"No Error"},"id":"btcd"}`), - true, true}, - // Generate a fake message to make sure we don't make a command from it. - {"anycommand", []byte(`{"result":"test","id":1}`), false, false}, - {"anycommand", []byte(`{some junk}`), false, false}, - {"anycommand", []byte(`{"error":null,"result":null,"id":"test"}`), false, true}, - {"createmultisig", []byte(`{"error":null,"id":1,"result":[{"a":"b"}]}`), false, false}, - {"createmultisig", []byte(`{"error":null,"id":1,"result":{"address":"something","redeemScript":"else"}}`), false, true}, - {"getinfo", []byte(`{"error":null,"result":null,"id":"test"}`), false, true}, - {"getinfo", []byte(`{"error":null,"result":null}`), false, false}, - {"getinfo", []byte(`{"error":null,"id":1,"result":[{"a":"b"}]}`), false, false}, - {"getblock", []byte(`{"error":null,"id":1,"result":[{"a":"b"}]}`), false, false}, - {"getblock", []byte(`{"result":{"hash":"000000","confirmations":16007,"size":325648},"error":null,"id":1}`), false, true}, - {"gettransaction", []byte(`{"error":null,"id":1,"result":[{"a":"b"}]}`), false, false}, - {"gettransaction", []byte(`{"error":null,"id":1,"result":{"Amount":0.0}}`), false, true}, - {"getrawtransaction", []byte(`{"error":null,"id":1,"result":[{"a":"b"}]}`), false, false}, - {"getrawtransaction", []byte(`{"error":null,"id":1,"result":{"hex":"somejunk","version":1}}`), false, true}, - {"decoderawtransaction", []byte(`{"error":null,"id":1,"result":[{"a":"b"}]}`), false, false}, - {"decoderawtransaction", []byte(`{"error":null,"id":1,"result":{"Txid":"something"}}`), false, true}, - {"getaddressesbyaccount", []byte(`{"error":null,"id":1,"result":[{"a":"b"}]}`), false, false}, - {"getaddressesbyaccount", []byte(`{"error":null,"id":1,"result":["test"]}`), false, true}, - {"getmininginfo", []byte(`{"error":null,"id":1,"result":[{"a":"b"}]}`), false, false}, - {"getmininginfo", []byte(`{"error":null,"id":1,"result":{"generate":true}}`), false, true}, - {"validateaddress", []byte(`{"error":null,"id":1,"result":{"isvalid":false}}`), false, true}, - {"validateaddress", []byte(`{"error":null,"id":1,"result":{false}}`), false, false}, - {"signrawtransaction", []byte(`{"error":null,"id":1,"result":{"hex":"something","complete":false}}`), false, true}, - {"signrawtransaction", []byte(`{"error":null,"id":1,"result":{false}}`), false, false}, - {"listunspent", []byte(`{"error":null,"id":1,"result":[{"txid":"something"}]}`), false, true}, - {"listunspent", []byte(`{"error":null,"id":1,"result":[{"txid"}]}`), false, false}, -} - -// TestReadResultCmd tests that readResultCmd can properly unmarshall the -// returned []byte that contains a json reply for both known and unknown -// messages. -func TestReadResultCmd(t *testing.T) { - for i, tt := range resulttests { - result, err := btcjson.ReadResultCmd(tt.cmd, tt.msg) - if tt.pass { - if err != nil { - t.Errorf("Should read result: %d %v", i, err) - } - // Due to the pointer for the Error and other structs, - // we can't always guarantee byte for byte comparison. - if tt.comp { - msg2, err := json.Marshal(result) - if err != nil { - t.Errorf("Should unmarshal result: %d %v", i, err) - } - if !bytes.Equal(tt.msg, msg2) { - t.Errorf("json byte arrays differ. %d %v %v", i, tt.msg, msg2) - } - } - - } else { - if err == nil { - t.Errorf("Should fail: %d, %s", i, tt.msg) - } - } - } - - return -} - // TestErrorInterface tests that the Error type satisifies the builtin // error interface and tests that the error string is created in the form // "code: message". diff --git a/jsonresult_test.go b/jsonresult_test.go new file mode 100644 index 00000000..4d1f4cb2 --- /dev/null +++ b/jsonresult_test.go @@ -0,0 +1,82 @@ +// Copyright (c) 2013-2014 Conformal Systems LLC. +// Use of this source code is governed by an ISC +// license that can be found in the LICENSE file. + +package btcjson_test + +import ( + "bytes" + "encoding/json" + "github.com/conformal/btcjson" + "testing" +) + +var resulttests = []struct { + cmd string + msg []byte + comp bool + pass bool +}{ + // Generate a fake message to make sure we can encode and decode it and + // get the same thing back. + {"getblockcount", + []byte(`{"result":226790,"error":{"code":1,"message":"No Error"},"id":"btcd"}`), + true, true}, + // Generate a fake message to make sure we don't make a command from it. + {"anycommand", []byte(`{"result":"test","id":1}`), false, false}, + {"anycommand", []byte(`{some junk}`), false, false}, + {"anycommand", []byte(`{"error":null,"result":null,"id":"test"}`), false, true}, + {"createmultisig", []byte(`{"error":null,"id":1,"result":[{"a":"b"}]}`), false, false}, + {"createmultisig", []byte(`{"error":null,"id":1,"result":{"address":"something","redeemScript":"else"}}`), false, true}, + {"getinfo", []byte(`{"error":null,"result":null,"id":"test"}`), false, true}, + {"getinfo", []byte(`{"error":null,"result":null}`), false, false}, + {"getinfo", []byte(`{"error":null,"id":1,"result":[{"a":"b"}]}`), false, false}, + {"getblock", []byte(`{"error":null,"id":1,"result":[{"a":"b"}]}`), false, false}, + {"getblock", []byte(`{"result":{"hash":"000000","confirmations":16007,"size":325648},"error":null,"id":1}`), false, true}, + {"getrawtransaction", []byte(`{"error":null,"id":1,"result":[{"a":"b"}]}`), false, false}, + {"getrawtransaction", []byte(`{"error":null,"id":1,"result":{"hex":"somejunk","version":1}}`), false, true}, + {"decoderawtransaction", []byte(`{"error":null,"id":1,"result":[{"a":"b"}]}`), false, false}, + {"decoderawtransaction", []byte(`{"error":null,"id":1,"result":{"Txid":"something"}}`), false, true}, + {"getaddressesbyaccount", []byte(`{"error":null,"id":1,"result":[{"a":"b"}]}`), false, false}, + {"getaddressesbyaccount", []byte(`{"error":null,"id":1,"result":["test"]}`), false, true}, + {"getmininginfo", []byte(`{"error":null,"id":1,"result":[{"a":"b"}]}`), false, false}, + {"getmininginfo", []byte(`{"error":null,"id":1,"result":{"generate":true}}`), false, true}, + {"validateaddress", []byte(`{"error":null,"id":1,"result":{"isvalid":false}}`), false, true}, + {"validateaddress", []byte(`{"error":null,"id":1,"result":{false}}`), false, false}, + {"signrawtransaction", []byte(`{"error":null,"id":1,"result":{"hex":"something","complete":false}}`), false, true}, + {"signrawtransaction", []byte(`{"error":null,"id":1,"result":{false}}`), false, false}, + {"listunspent", []byte(`{"error":null,"id":1,"result":[{"txid":"something"}]}`), false, true}, + {"listunspent", []byte(`{"error":null,"id":1,"result":[{"txid"}]}`), false, false}, +} + +// TestReadResultCmd tests that readResultCmd can properly unmarshall the +// returned []byte that contains a json reply for both known and unknown +// messages. +func TestReadResultCmd(t *testing.T) { + for i, tt := range resulttests { + result, err := btcjson.ReadResultCmd(tt.cmd, tt.msg) + if tt.pass { + if err != nil { + t.Errorf("Should read result: %d %v", i, err) + } + // Due to the pointer for the Error and other structs, + // we can't always guarantee byte for byte comparison. + if tt.comp { + msg2, err := json.Marshal(result) + if err != nil { + t.Errorf("Should unmarshal result: %d %v", i, err) + } + if !bytes.Equal(tt.msg, msg2) { + t.Errorf("json byte arrays differ. %d %v %v", i, tt.msg, msg2) + } + } + + } else { + if err == nil { + t.Errorf("Should fail: %d, %s", i, tt.msg) + } + } + } + + return +} diff --git a/jsonresults.go b/jsonresults.go new file mode 100644 index 00000000..c475b01c --- /dev/null +++ b/jsonresults.go @@ -0,0 +1,496 @@ +// Copyright (c) 2013-2014 Conformal Systems LLC. +// Use of this source code is governed by an ISC +// license that can be found in the LICENSE file. + +package btcjson + +import ( + "encoding/json" + "fmt" + "strings" +) + +// InfoResult contains the data returned by the getinfo command. +type InfoResult struct { + Version int `json:"version,omitempty"` + ProtocolVersion int `json:"protocolversion,omitempty"` + WalletVersion int `json:"walletversion,omitempty"` + Balance float64 `json:"balance,omitempty"` + Blocks int `json:"blocks,omitempty"` + TimeOffset int64 `json:"timeoffset,omitempty"` + Connections int `json:"connections,omitempty"` + Proxy string `json:"proxy,omitempty"` + Difficulty float64 `json:"difficulty,omitempty"` + TestNet bool `json:"testnet,omitempty"` + KeypoolOldest int64 `json:"keypoololdest,omitempty"` + KeypoolSize int `json:"keypoolsize,omitempty"` + PaytxFee float64 `json:"paytxfee,omitempty"` + RelayFee float64 `json:"relayfee,omitempty"` + Errors string `json:"errors,omitempty"` +} + +// BlockResult models the data from the getblock command when the verbose flag +// is set. When the verbose flag is not set, getblock return a hex-encoded +// string. +type BlockResult struct { + Hash string `json:"hash"` + Confirmations uint64 `json:"confirmations"` + Size int `json:"size"` + Height int64 `json:"height"` + Version uint32 `json:"version"` + MerkleRoot string `json:"merkleroot"` + Tx []string `json:"tx,omitempty"` + RawTx []TxRawResult `json:"rawtx,omitempty"` + Time int64 `json:"time"` + Nonce uint32 `json:"nonce"` + Bits string `json:"bits"` + Difficulty float64 `json:"difficulty"` + PreviousHash string `json:"previousblockhash"` + NextHash string `json:"nextblockhash"` +} + +// CreateMultiSigResult models the data returned from the createmultisig command. +type CreateMultiSigResult struct { + Address string `json:"address"` + RedeemScript string `json:"redeemScript"` +} + +// DecodeScriptResult models the data returned from the decodescript command. +type DecodeScriptResult struct { + Asm string `json:"asm"` + ReqSigs int `json:"reqSigs,omitempty"` + Type string `json:"type"` + Addresses []string `json:"addresses,omitempty"` + P2sh string `json:"p2sh"` +} + +// GetPeerInfoResult models the data returned from the getpeerinfo command. +type GetPeerInfoResult struct { + Addr string `json:"addr"` + AddrLocal string `json:"addrlocal,omitempty"` + Services string `json:"services"` + LastSend int64 `json:"lastsend"` + LastRecv int64 `json:"lastrecv"` + BytesSent uint64 `json:"bytessent"` + BytesRecv uint64 `json:"bytesrecv"` + PingTime int64 `json:"pingtime"` + PingWait int64 `json:"pingwait,omitempty"` + ConnTime int64 `json:"conntime"` + Version uint32 `json:"version"` + SubVer string `json:"subver"` + Inbound bool `json:"inbound"` + StartingHeight int32 `json:"startingheight"` + BanScore int `json:"banscore,omitempty"` + SyncNode bool `json:"syncnode"` +} + +// GetRawMempoolResult models the data returned from the getrawmempool command. +type GetRawMempoolResult struct { + Size int `json:"size"` + Fee float64 `json:"fee"` + Time int64 `json:"time"` + Height int64 `json:"height"` + StartingPriority int `json:"startingpriority"` + CurrentPriority int `json:"currentpriority"` + Depends []string `json:"depends"` +} + +// ListTransactionsResult models the data from the listtransactions command. +type ListTransactionsResult struct { + Account string `json:"account"` + Address string `json:"address,omitempty"` + Category string `json:"category"` + Amount float64 `json:"amount"` + Fee float64 `json:"fee"` + Confirmations int64 `json:"confirmations"` + Generated bool `json:"generated"` + BlockHash string `json:"blockhash,omitempty"` + BlockIndex int64 `json:"blockindex,omitempty"` + BlockTime int64 `json:"blocktime,omitempty"` + TxID string `json:"amount"` + WalletConflicts []string `json:"walletconflicts"` + Time int64 `json:"time"` + TimeReceived int64 `json:"timereceived"` + Comment string `json:"comment,omitempty"` + OtherAccount float64 `json:"otheraccount"` +} + +// TxRawResult models the data from the getrawtransaction command. +type TxRawResult struct { + Hex string `json:"hex"` + Txid string `json:"txid"` + Version uint32 `json:"version"` + LockTime uint32 `json:"locktime"` + Vin []Vin `json:"vin"` + Vout []Vout `json:"vout"` + BlockHash string `json:"blockhash,omitempty"` + Confirmations uint64 `json:"confirmations,omitempty"` + Time int64 `json:"time,omitempty"` + Blocktime int64 `json:"blocktime,omitempty"` +} + +// TxRawDecodeResult models the data from the decoderawtransaction command. +type TxRawDecodeResult struct { + Txid string `json:"txid"` + Version uint32 `json:"version"` + Locktime uint32 `json:"locktime"` + Vin []Vin `json:"vin"` + Vout []Vout `json:"vout"` +} + +// GetNetTotalsResult models the data returned from the getnettotals command. +type GetNetTotalsResult struct { + TotalBytesRecv uint64 `json:"totalbytesrecv"` + TotalBytesSent uint64 `json:"totalbytessent"` + TimeMillis int64 `json:"timemillis"` +} + +// ScriptSig models a signature script. It is defined seperately since it only +// applies to non-coinbase. Therefore the field in the Vin structure needs +// to be a pointer. +type ScriptSig struct { + Asm string `json:"asm"` + Hex string `json:"hex"` +} + +// Vin models parts of the tx data. It is defined seperately since both +// getrawtransaction and decoderawtransaction use the same structure. +type Vin struct { + Coinbase string `json:"coinbase"` + Txid string `json:"txid"` + Vout int `json:"vout"` + ScriptSig *ScriptSig `json:"scriptSig"` + Sequence uint32 `json:"sequence"` +} + +// IsCoinBase returns a bool to show if a Vin is a Coinbase one or not. +func (v *Vin) IsCoinBase() bool { + return len(v.Coinbase) > 0 +} + +// MarshalJSON provides a custom Marshal method for Vin. +func (v *Vin) MarshalJSON() ([]byte, error) { + if v.IsCoinBase() { + coinbaseStruct := struct { + Coinbase string `json:"coinbase"` + Sequence uint32 `json:"sequence"` + }{ + Coinbase: v.Coinbase, + Sequence: v.Sequence, + } + return json.Marshal(coinbaseStruct) + } + + txStruct := struct { + Txid string `json:"txid"` + Vout int `json:"vout"` + ScriptSig *ScriptSig `json:"scriptSig"` + Sequence uint32 `json:"sequence"` + }{ + Txid: v.Txid, + Vout: v.Vout, + ScriptSig: v.ScriptSig, + Sequence: v.Sequence, + } + return json.Marshal(txStruct) +} + +// Vout models parts of the tx data. It is defined seperately since both +// getrawtransaction and decoderawtransaction use the same structure. +type Vout struct { + Value float64 `json:"value"` + N int `json:"n"` + ScriptPubKey struct { + Asm string `json:"asm"` + Hex string `json:"hex"` + ReqSigs int `json:"reqSigs,omitempty"` + Type string `json:"type"` + Addresses []string `json:"addresses,omitempty"` + } `json:"scriptPubKey"` +} + +// GetMiningInfoResult models the data from the getmininginfo command. +type GetMiningInfoResult struct { + CurrentBlockSize float64 `json:"currentblocksize"` + Difficulty float64 `json:"difficulty"` + Errors string `json:"errors"` + Generate bool `json:"generate"` + GenProcLimit float64 `json:"genproclimit"` + PooledTx float64 `json:"pooledtx"` + Testnet bool `json:"testnet"` + Blocks float64 `json:"blocks"` + CurrentBlockTx float64 `json:"currentblocktx"` + HashesPerSec float64 `json:"hashespersec"` +} + +// GetWorkResult models the data from the getwork command. +type GetWorkResult struct { + Data string `json:"data"` + Hash1 string `json:"hash1"` + Midstate string `json:"midstate"` + Target string `json:"target"` +} + +// ValidateAddressResult models the data from the validateaddress command. +type ValidateAddressResult struct { + IsValid bool `json:"isvalid"` + Address string `json:"address,omitempty"` + IsMine bool `json:"ismine,omitempty"` + IsScript bool `json:"isscript,omitempty"` + PubKey string `json:"pubkey,omitempty"` + IsCompressed bool `json:"iscompressed,omitempty"` + Account string `json:"account,omitempty"` + Addresses []string `json:"addresses,omitempty"` + Hex string `json:"hex,omitempty"` + Script string `json:"script,omitempty"` + SigsRequired int `json:"sigsrequired,omitempty"` +} + +// SignRawTransactionResult models the data from the signrawtransaction +// command. +type SignRawTransactionResult struct { + Hex string `json:"hex"` + Complete bool `json:"complete"` +} + +// ListUnSpentResult models the data from the ListUnSpentResult command. +type ListUnSpentResult struct { + TxId string `json:"txid"` + Vout float64 `json:"vout"` + Address string `json:"address"` + Account string `json:"account"` + ScriptPubKey string `json:"scriptPubKey"` + Amount float64 `json:"amount"` + Confirmations float64 `json:"confirmations"` +} + +// GetAddedNodeInfoResultAddr models the data of the addresses portion of the +// getaddednodeinfo command. +type GetAddedNodeInfoResultAddr struct { + Address string `json:"address"` + Connected string `json:"connected"` +} + +// GetAddedNodeInfoResult models the data from the getaddednodeinfo command. +type GetAddedNodeInfoResult struct { + AddedNode string `json:"addednode"` + Connected *bool `json:"connected,omitempty"` + Addresses *[]GetAddedNodeInfoResultAddr `json:"addresses,omitempty"` +} + +// ReadResultCmd unmarshalls the json reply with data struct for specific +// commands or an interface if it is not a command where we already have a +// struct ready. +func ReadResultCmd(cmd string, message []byte) (Reply, error) { + var result Reply + var err error + var objmap map[string]json.RawMessage + err = json.Unmarshal(message, &objmap) + if err != nil { + if strings.Contains(string(message), "401 Unauthorized.") { + err = fmt.Errorf("Authentication error.") + } else { + err = fmt.Errorf("Error unmarshalling json reply: %v", err) + } + return result, err + } + // Take care of the parts that are the same for all replies. + var jsonErr Error + var id interface{} + err = json.Unmarshal(objmap["error"], &jsonErr) + if err != nil { + err = fmt.Errorf("Error unmarshalling json reply: %v", err) + return result, err + } + err = json.Unmarshal(objmap["id"], &id) + if err != nil { + err = fmt.Errorf("Error unmarshalling json reply: %v", err) + return result, err + } + + // If it is a command where we have already worked out the reply, + // generate put the results in the proper structure. + // We handle the error condition after the switch statement. + switch cmd { + case "createmultisig": + var res CreateMultiSigResult + err = json.Unmarshal(objmap["result"], &res) + if err == nil { + result.Result = res + } + case "getaddednodeinfo": + // getaddednodeinfo can either return a JSON object or a + // slice of strings depending on the verbose flag. Choose the + // right form accordingly. + if strings.Contains(string(objmap["result"]), "{") { + var res []GetAddedNodeInfoResult + err = json.Unmarshal(objmap["result"], &res) + if err == nil { + result.Result = res + } + } else { + var res []string + err = json.Unmarshal(objmap["result"], &res) + if err == nil { + result.Result = res + } + } + case "getinfo": + var res InfoResult + err = json.Unmarshal(objmap["result"], &res) + if err == nil { + result.Result = res + } + case "getblock": + // getblock can either return a JSON object or a hex-encoded + // string depending on the verbose flag. Choose the right form + // accordingly. + if strings.Contains(string(objmap["result"]), "{") { + var res BlockResult + err = json.Unmarshal(objmap["result"], &res) + if err == nil { + result.Result = res + } + } else { + var res string + err = json.Unmarshal(objmap["result"], &res) + if err == nil { + result.Result = res + } + } + case "getnettotals": + var res GetNetTotalsResult + err = json.Unmarshal(objmap["result"], &res) + if err == nil { + result.Result = res + } + case "getnetworkhashps": + var res int64 + err = json.Unmarshal(objmap["result"], &res) + if err == nil { + result.Result = res + } + case "getpeerinfo": + var res []GetPeerInfoResult + err = json.Unmarshal(objmap["result"], &res) + if err == nil { + result.Result = res + } + case "getrawtransaction": + // getrawtransaction can either return a JSON object or a + // hex-encoded string depending on the verbose flag. Choose the + // right form accordingly. + if strings.Contains(string(objmap["result"]), "{") { + var res TxRawResult + err = json.Unmarshal(objmap["result"], &res) + if err == nil { + result.Result = res + } + } else { + var res string + err = json.Unmarshal(objmap["result"], &res) + if err == nil { + result.Result = res + } + } + case "decoderawtransaction": + var res TxRawDecodeResult + err = json.Unmarshal(objmap["result"], &res) + if err == nil { + result.Result = res + } + case "getaddressesbyaccount": + var res []string + err = json.Unmarshal(objmap["result"], &res) + if err == nil { + result.Result = res + } + case "getmininginfo": + var res GetMiningInfoResult + err = json.Unmarshal(objmap["result"], &res) + if err == nil { + result.Result = res + } + case "getrawmempool": + // getrawmempool can either return a map of JSON objects or + // an array of strings depending on the verbose flag. Choose + // the right form accordingly. + if strings.Contains(string(objmap["result"]), "{") { + var res map[string]GetRawMempoolResult + err = json.Unmarshal(objmap["result"], &res) + if err == nil { + result.Result = res + } + } else { + var res []string + err = json.Unmarshal(objmap["result"], &res) + if err == nil { + result.Result = res + } + } + case "getwork": + // getwork can either return a JSON object or a boolean + // depending on whether or not data was provided. Choose the + // right form accordingly. + if strings.Contains(string(objmap["result"]), "{") { + var res GetWorkResult + err = json.Unmarshal(objmap["result"], &res) + if err == nil { + result.Result = res + } + } else { + var res bool + err = json.Unmarshal(objmap["result"], &res) + if err == nil { + result.Result = res + } + } + case "validateaddress": + var res ValidateAddressResult + err = json.Unmarshal(objmap["result"], &res) + if err == nil { + result.Result = res + } + case "signrawtransaction": + var res SignRawTransactionResult + err = json.Unmarshal(objmap["result"], &res) + if err == nil { + result.Result = res + } + case "listtransactions": + var res []ListTransactionsResult + err = json.Unmarshal(objmap["result"], &res) + if err == nil { + result.Result = res + } + case "listunspent": + var res []ListUnSpentResult + err = json.Unmarshal(objmap["result"], &res) + if err == nil { + result.Result = res + } + // For commands that return a single item (or no items), we get it with + // the correct concrete type for free (but treat them separately + // for clarity). + case "getblockcount", "getbalance", "getblocknumber", "getgenerate", + "getconnetioncount", "getdifficulty", "gethashespersec", + "setgenerate", "stop", "settxfee", "getaccount", + "getnewaddress", "sendtoaddress", "createrawtransaction", + "sendrawtransaction", "getbestblockhash", "getrawchangeaddress": + err = json.Unmarshal(message, &result) + // For anything else put it in an interface. All the data is still + // there, just a little less convenient to deal with. + default: + err = json.Unmarshal(message, &result) + } + if err != nil { + err = fmt.Errorf("Error unmarshalling json reply: %v", err) + return result, err + } + // Only want the error field when there is an actual error to report. + if jsonErr.Code != 0 { + result.Error = &jsonErr + } + result.Id = &id + return result, err +} diff --git a/test_coverage.txt b/test_coverage.txt index 42437452..c0e82da7 100644 --- a/test_coverage.txt +++ b/test_coverage.txt @@ -1,466 +1,466 @@ -github.com/conformal/btcjson/jsonapi.go JSONToAmount 100.00% (15/15) -github.com/conformal/btcjson/jsonapi.go JSONGetMethod 100.00% (14/14) -github.com/conformal/btcjson/jsonfxns.go MarshallAndSend 100.00% (7/7) -github.com/conformal/btcjson/jsonfxns.go GetRaw 100.00% (6/6) -github.com/conformal/btcjson/jsonapi.go jsonWithArgs 100.00% (5/5) -github.com/conformal/btcjson/jsonapi.go IsValidIdType 100.00% (3/3) -github.com/conformal/btcjson/jsonapi.go CreateMessage 100.00% (2/2) -github.com/conformal/btcjson/jsoncmd.go MoveCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsonapi.go Error.Error 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetAddedNodeInfoCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewGetAddressesByAccountCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetAddressesByAccountCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetAddressesByAccountCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetBalanceCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetBalanceCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetBalanceCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewGetBestBlockHashCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetBestBlockHashCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetBestBlockHashCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetBestBlockHashCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetBlockCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetBlockCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetBlockCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewGetBlockCountCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetBlockCountCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetBlockCountCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetBlockCountCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewGetBlockHashCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetBlockHashCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetBlockHashCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetBlockHashCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetBlockTemplateCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetBlockTemplateCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetBlockTemplateCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewGetConnectionCountCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetConnectionCountCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetConnectionCountCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetConnectionCountCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewGetDifficultyCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetDifficultyCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetDifficultyCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetDifficultyCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewGetGenerateCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetGenerateCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetGenerateCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetGenerateCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewGetHashesPerSecCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetHashesPerSecCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetHashesPerSecCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetHashesPerSecCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewGetInfoCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetInfoCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetInfoCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetInfoCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewGetMiningInfoCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetMiningInfoCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetMiningInfoCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetMiningInfoCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewGetNetTotalsCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetNetTotalsCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetNetTotalsCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetNetTotalsCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetNetworkHashPSCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetNetworkHashPSCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetNetworkHashPSCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetNewAddressCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetNewAddressCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetNewAddressCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewGetPeerInfoCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetPeerInfoCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetPeerInfoCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetPeerInfoCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetRawChangeAddressCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetRawChangeAddressCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetRawChangeAddressCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetRawMempoolCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetRawMempoolCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetRawMempoolCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetRawTransactionCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetRawTransactionCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetRawTransactionCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go KeyPoolRefillCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetReceivedByAccountCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetReceivedByAccountCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetReceivedByAccountCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetReceivedByAddressCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetReceivedByAddressCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetReceivedByAddressCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewGetTransactionCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetTransactionCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetTransactionCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetTransactionCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetTxOutCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetTxOutCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetTxOutCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewGetTxOutSetInfoCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetTxOutSetInfoCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetTxOutSetInfoCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetTxOutSetInfoCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetWorkCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetWorkCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetWorkCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go HelpCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go HelpCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go HelpCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ImportPrivKeyCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ImportPrivKeyCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ImportPrivKeyCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewImportWalletCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ImportWalletCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ImportWalletCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ImportWalletCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go KeyPoolRefillCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go KeyPoolRefillCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ListAccountsCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ListAccountsCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ListAccountsCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewListAddressGroupingsCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ListAddressGroupingsCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ListAddressGroupingsCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ListAddressGroupingsCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewListLockUnspentCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ListLockUnspentCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ListLockUnspentCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ListLockUnspentCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ListReceivedByAccountCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ListReceivedByAccountCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ListReceivedByAccountCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ListReceivedByAddressCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ListReceivedByAddressCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ListReceivedByAddressCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ListSinceBlockCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ListSinceBlockCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ListSinceBlockCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ListTransactionsCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ListTransactionsCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ListTransactionsCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ListUnspentCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ListUnspentCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ListUnspentCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go LockUnspentCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go LockUnspentCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go LockUnspentCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go MoveCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go MoveCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewPingCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go PingCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go PingCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go PingCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go SendFromCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go SendFromCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go SendFromCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go SendManyCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go SendManyCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go SendManyCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go SendRawTransactionCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go SendRawTransactionCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go SendRawTransactionCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go SendToAddressCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go SendToAddressCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go SendToAddressCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewSetAccountCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go SetAccountCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go SetAccountCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go SetAccountCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go SetGenerateCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go SetGenerateCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go SetGenerateCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewSetTxFeeCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go SetTxFeeCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go SetTxFeeCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go SetTxFeeCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewSignMessageCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go SignMessageCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go SignMessageCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go SignMessageCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go SignRawTransactionCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go SignRawTransactionCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go SignRawTransactionCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewStopCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go StopCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go StopCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go StopCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go SubmitBlockCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go SubmitBlockCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go SubmitBlockCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewValidateAddressCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ValidateAddressCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ValidateAddressCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go ValidateAddressCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go VerifyChainCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go VerifyChainCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go VerifyChainCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewVerifyMessageCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go VerifyMessageCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go VerifyMessageCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go VerifyMessageCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewWalletLockCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go WalletLockCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go WalletLockCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go WalletLockCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewWalletPassphraseCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go WalletPassphraseCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go WalletPassphraseCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go WalletPassphraseCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewWalletPassphraseChangeCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go WalletPassphraseChangeCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go WalletPassphraseChangeCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go WalletPassphraseChangeCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsonapi.go RpcCommand 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go AddMultisigAddressCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go AddMultisigAddressCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go AddMultisigAddressCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go AddNodeCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go AddNodeCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go AddNodeCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewBackupWalletCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go BackupWalletCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go BackupWalletCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go BackupWalletCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewCreateMultisigCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go CreateMultisigCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go CreateMultisigCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go CreateMultisigCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewCreateRawTransactionCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go CreateRawTransactionCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go CreateRawTransactionCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go CreateRawTransactionCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetAddressesByAccountCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewDebugLevelCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go DebugLevelCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go DebugLevelCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go DebugLevelCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewDecodeRawTransactionCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go DecodeRawTransactionCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go DecodeRawTransactionCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go DecodeRawTransactionCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewDecodeScriptCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go DecodeScriptCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go DecodeScriptCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go DecodeScriptCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewDumpPrivKeyCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go DumpPrivKeyCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go DumpPrivKeyCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go DumpPrivKeyCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewDumpWalletCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go DumpWalletCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go DumpWalletCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go DumpWalletCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewEncryptWalletCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go EncryptWalletCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go EncryptWalletCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go EncryptWalletCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewGetAccountCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetAccountCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetAccountCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetAccountCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go NewGetAccountAddressCmd 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetAccountAddressCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetAccountAddressCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetAccountAddressCmd.Method 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetAddedNodeInfoCmd.Id 100.00% (1/1) -github.com/conformal/btcjson/jsoncmd.go GetAddedNodeInfoCmd.SetId 100.00% (1/1) -github.com/conformal/btcjson/jsonapi.go CreateMessageWithId 96.18% (327/340) -github.com/conformal/btcjson/jsoncmd.go SendManyCmd.MarshalJSON 92.86% (13/14) -github.com/conformal/btcjson/jsoncmd.go SendFromCmd.MarshalJSON 92.86% (13/14) -github.com/conformal/btcjson/jsoncmd.go ParseMarshaledCmd 91.86% (79/86) -github.com/conformal/btcjson/jsoncmd.go MoveCmd.MarshalJSON 91.67% (11/12) -github.com/conformal/btcjson/jsoncmd.go ListUnspentCmd.MarshalJSON 90.91% (10/11) -github.com/conformal/btcjson/jsoncmd.go SendToAddressCmd.MarshalJSON 90.91% (10/11) -github.com/conformal/btcjson/jsoncmd.go ListTransactionsCmd.MarshalJSON 90.91% (10/11) -github.com/conformal/btcjson/jsoncmd.go ImportPrivKeyCmd.MarshalJSON 90.00% (9/10) -github.com/conformal/btcjson/jsoncmd.go GetBalanceCmd.MarshalJSON 88.89% (8/9) -github.com/conformal/btcjson/jsoncmd.go GetNetworkHashPSCmd.MarshalJSON 88.89% (8/9) -github.com/conformal/btcjson/jsoncmd.go VerifyChainCmd.MarshalJSON 88.89% (8/9) -github.com/conformal/btcjson/jsoncmd.go ListReceivedByAccountCmd.MarshalJSON 88.89% (8/9) -github.com/conformal/btcjson/jsoncmd.go NewGetNetworkHashPSCmd 88.89% (8/9) -github.com/conformal/btcjson/jsoncmd.go NewVerifyChainCmd 88.89% (8/9) -github.com/conformal/btcjson/jsoncmd.go AddMultisigAddressCmd.MarshalJSON 88.89% (8/9) -github.com/conformal/btcjson/jsoncmd.go ListSinceBlockCmd.MarshalJSON 88.89% (8/9) -github.com/conformal/btcjson/jsoncmd.go ListReceivedByAddressCmd.MarshalJSON 88.89% (8/9) -github.com/conformal/btcjson/jsoncmd.go GetReceivedByAccountCmd.MarshalJSON 87.50% (7/8) -github.com/conformal/btcjson/jsoncmd.go CreateRawTransactionCmd.MarshalJSON 87.50% (7/8) -github.com/conformal/btcjson/jsoncmd.go SubmitBlockCmd.MarshalJSON 87.50% (7/8) -github.com/conformal/btcjson/jsoncmd.go GetReceivedByAddressCmd.MarshalJSON 87.50% (7/8) -github.com/conformal/btcjson/jsoncmd.go SendRawTransactionCmd.MarshalJSON 87.50% (7/8) -github.com/conformal/btcjson/jsoncmd.go SetGenerateCmd.MarshalJSON 87.50% (7/8) -github.com/conformal/btcjson/jsoncmd.go GetRawTransactionCmd.MarshalJSON 87.50% (7/8) -github.com/conformal/btcjson/jsoncmd.go NewRawCmd 87.50% (7/8) -github.com/conformal/btcjson/jsoncmd.go HelpCmd.MarshalJSON 85.71% (6/7) -github.com/conformal/btcjson/jsoncmd.go KeyPoolRefillCmd.MarshalJSON 85.71% (6/7) -github.com/conformal/btcjson/jsoncmd.go GetBlockTemplateCmd.MarshalJSON 85.71% (6/7) -github.com/conformal/btcjson/jsoncmd.go GetNewAddressCmd.MarshalJSON 85.71% (6/7) -github.com/conformal/btcjson/jsoncmd.go ListAccountsCmd.MarshalJSON 85.71% (6/7) -github.com/conformal/btcjson/jsoncmd.go GetRawMempoolCmd.MarshalJSON 85.71% (6/7) -github.com/conformal/btcjson/jsoncmd.go GetAddedNodeInfoCmd.MarshalJSON 85.71% (6/7) -github.com/conformal/btcjson/jsoncmd.go GetRawChangeAddressCmd.MarshalJSON 85.71% (6/7) -github.com/conformal/btcjson/jsoncmd.go GetWorkCmd.MarshalJSON 85.71% (6/7) -github.com/conformal/btcjson/jsoncmd.go NewListAccountsCmd 83.33% (5/6) -github.com/conformal/btcjson/jsoncmd.go NewGetNewAddressCmd 83.33% (5/6) -github.com/conformal/btcjson/jsoncmd.go NewSendRawTransactionCmd 83.33% (5/6) -github.com/conformal/btcjson/jsoncmd.go NewGetReceivedByAddressCmd 83.33% (5/6) -github.com/conformal/btcjson/jsoncmd.go NewAddMultisigAddressCmd 83.33% (5/6) -github.com/conformal/btcjson/jsoncmd.go NewSubmitBlockCmd 83.33% (5/6) -github.com/conformal/btcjson/jsoncmd.go NewKeyPoolRefillCmd 83.33% (5/6) -github.com/conformal/btcjson/jsoncmd.go NewGetBlockTemplateCmd 83.33% (5/6) -github.com/conformal/btcjson/jsoncmd.go NewGetRawChangeAddressCmd 83.33% (5/6) -github.com/conformal/btcjson/jsoncmd.go NewGetRawMempoolCmd 83.33% (5/6) -github.com/conformal/btcjson/jsoncmd.go NewSetGenerateCmd 83.33% (5/6) -github.com/conformal/btcjson/jsoncmd.go NewGetRawTransactionCmd 83.33% (5/6) -github.com/conformal/btcjson/jsoncmd.go NewHelpCmd 83.33% (5/6) -github.com/conformal/btcjson/jsoncmd.go NewGetReceivedByAccountCmd 83.33% (5/6) -github.com/conformal/btcjson/jsoncmd.go NewGetWorkCmd 83.33% (5/6) -github.com/conformal/btcjson/jsoncmd.go NewGetAddedNodeInfoCmd 83.33% (5/6) -github.com/conformal/btcjson/jsoncmd.go NewGetTxOutCmd 83.33% (5/6) -github.com/conformal/btcjson/jsoncmd.go NewListUnspentCmd 80.95% (17/21) -github.com/conformal/btcjson/jsoncmd.go NewSendFromCmd 80.95% (17/21) -github.com/conformal/btcjson/jsoncmd.go NewListTransactionsCmd 80.95% (17/21) -github.com/conformal/btcjson/jsoncmd.go NewListSinceBlockCmd 80.00% (12/15) -github.com/conformal/btcjson/jsoncmd.go NewListReceivedByAddressCmd 80.00% (12/15) -github.com/conformal/btcjson/jsoncmd.go NewGetBalanceCmd 80.00% (12/15) -github.com/conformal/btcjson/jsoncmd.go NewListReceivedByAccountCmd 80.00% (12/15) -github.com/conformal/btcjson/jsoncmd.go NewMoveCmd 80.00% (12/15) -github.com/conformal/btcjson/jsoncmd.go NewSendManyCmd 80.00% (12/15) -github.com/conformal/btcjson/jsoncmd.go NewSendToAddressCmd 80.00% (12/15) -github.com/conformal/btcjson/jsoncmd.go GetAddressesByAccountCmd.MarshalJSON 80.00% (4/5) -github.com/conformal/btcjson/jsoncmd.go SetAccountCmd.MarshalJSON 80.00% (4/5) -github.com/conformal/btcjson/jsoncmd.go AddNodeCmd.MarshalJSON 80.00% (4/5) -github.com/conformal/btcjson/jsoncmd.go BackupWalletCmd.MarshalJSON 80.00% (4/5) -github.com/conformal/btcjson/jsoncmd.go CreateMultisigCmd.MarshalJSON 80.00% (4/5) -github.com/conformal/btcjson/jsoncmd.go DebugLevelCmd.MarshalJSON 80.00% (4/5) -github.com/conformal/btcjson/jsoncmd.go DecodeRawTransactionCmd.MarshalJSON 80.00% (4/5) -github.com/conformal/btcjson/jsoncmd.go DecodeScriptCmd.MarshalJSON 80.00% (4/5) -github.com/conformal/btcjson/jsoncmd.go DumpPrivKeyCmd.MarshalJSON 80.00% (4/5) -github.com/conformal/btcjson/jsoncmd.go VerifyMessageCmd.MarshalJSON 80.00% (4/5) -github.com/conformal/btcjson/jsoncmd.go WalletPassphraseChangeCmd.MarshalJSON 80.00% (4/5) -github.com/conformal/btcjson/jsoncmd.go GetTransactionCmd.MarshalJSON 80.00% (4/5) -github.com/conformal/btcjson/jsoncmd.go DumpWalletCmd.MarshalJSON 80.00% (4/5) -github.com/conformal/btcjson/jsoncmd.go EncryptWalletCmd.MarshalJSON 80.00% (4/5) -github.com/conformal/btcjson/jsoncmd.go SetTxFeeCmd.MarshalJSON 80.00% (4/5) -github.com/conformal/btcjson/jsoncmd.go GetAccountCmd.MarshalJSON 80.00% (4/5) -github.com/conformal/btcjson/jsoncmd.go GetAccountAddressCmd.MarshalJSON 80.00% (4/5) -github.com/conformal/btcjson/jsoncmd.go WalletPassphraseCmd.MarshalJSON 80.00% (4/5) -github.com/conformal/btcjson/jsoncmd.go ValidateAddressCmd.MarshalJSON 80.00% (4/5) -github.com/conformal/btcjson/jsoncmd.go SignMessageCmd.MarshalJSON 80.00% (4/5) -github.com/conformal/btcjson/jsoncmd.go ImportWalletCmd.MarshalJSON 80.00% (4/5) -github.com/conformal/btcjson/jsoncmd.go GetBlockHashCmd.MarshalJSON 80.00% (4/5) -github.com/conformal/btcjson/jsoncmd.go NewImportPrivKeyCmd 78.57% (11/14) -github.com/conformal/btcjson/jsoncmd.go GetTxOutCmd.MarshalJSON 77.78% (7/9) -github.com/conformal/btcjson/jsoncmd.go ListUnspentCmd.UnmarshalJSON 76.92% (20/26) -github.com/conformal/btcjson/jsoncmd.go ListTransactionsCmd.UnmarshalJSON 76.92% (20/26) -github.com/conformal/btcjson/jsoncmd.go GetNetworkHashPSCmd.UnmarshalJSON 76.19% (16/21) -github.com/conformal/btcjson/jsoncmd.go ListReceivedByAccountCmd.UnmarshalJSON 76.19% (16/21) -github.com/conformal/btcjson/jsoncmd.go GetBalanceCmd.UnmarshalJSON 76.19% (16/21) -github.com/conformal/btcjson/jsoncmd.go ListSinceBlockCmd.UnmarshalJSON 76.19% (16/21) -github.com/conformal/btcjson/jsoncmd.go VerifyChainCmd.UnmarshalJSON 76.19% (16/21) -github.com/conformal/btcjson/jsoncmd.go ListReceivedByAddressCmd.UnmarshalJSON 76.19% (16/21) -github.com/conformal/btcjson/jsoncmd.go SendManyCmd.UnmarshalJSON 75.76% (25/33) -github.com/conformal/btcjson/jsoncmd.go ImportPrivKeyCmd.UnmarshalJSON 75.00% (18/24) -github.com/conformal/btcjson/jsoncmd.go ListAccountsCmd.UnmarshalJSON 75.00% (12/16) -github.com/conformal/btcjson/jsoncmd.go GetRawChangeAddressCmd.UnmarshalJSON 75.00% (12/16) -github.com/conformal/btcjson/jsoncmd.go GetBlockTemplateCmd.UnmarshalJSON 75.00% (12/16) -github.com/conformal/btcjson/jsoncmd.go HelpCmd.UnmarshalJSON 75.00% (12/16) -github.com/conformal/btcjson/jsoncmd.go GetNewAddressCmd.UnmarshalJSON 75.00% (12/16) -github.com/conformal/btcjson/jsoncmd.go KeyPoolRefillCmd.UnmarshalJSON 75.00% (12/16) -github.com/conformal/btcjson/jsoncmd.go GetRawMempoolCmd.UnmarshalJSON 75.00% (12/16) -github.com/conformal/btcjson/jsoncmd.go LockUnspentCmd.MarshalJSON 75.00% (6/8) -github.com/conformal/btcjson/jsoncmd.go StopCmd.MarshalJSON 75.00% (3/4) -github.com/conformal/btcjson/jsoncmd.go GetNetTotalsCmd.MarshalJSON 75.00% (3/4) -github.com/conformal/btcjson/jsoncmd.go GetConnectionCountCmd.MarshalJSON 75.00% (3/4) -github.com/conformal/btcjson/jsoncmd.go GetTxOutSetInfoCmd.MarshalJSON 75.00% (3/4) -github.com/conformal/btcjson/jsoncmd.go GetPeerInfoCmd.MarshalJSON 75.00% (3/4) -github.com/conformal/btcjson/jsoncmd.go WalletLockCmd.MarshalJSON 75.00% (3/4) -github.com/conformal/btcjson/jsoncmd.go GetBestBlockHashCmd.MarshalJSON 75.00% (3/4) -github.com/conformal/btcjson/jsoncmd.go ListLockUnspentCmd.MarshalJSON 75.00% (3/4) -github.com/conformal/btcjson/jsoncmd.go GetMiningInfoCmd.MarshalJSON 75.00% (3/4) -github.com/conformal/btcjson/jsoncmd.go ListAddressGroupingsCmd.MarshalJSON 75.00% (3/4) -github.com/conformal/btcjson/jsoncmd.go GetGenerateCmd.MarshalJSON 75.00% (3/4) -github.com/conformal/btcjson/jsoncmd.go GetBlockCountCmd.MarshalJSON 75.00% (3/4) -github.com/conformal/btcjson/jsoncmd.go GetDifficultyCmd.MarshalJSON 75.00% (3/4) -github.com/conformal/btcjson/jsoncmd.go GetInfoCmd.MarshalJSON 75.00% (3/4) -github.com/conformal/btcjson/jsoncmd.go PingCmd.MarshalJSON 75.00% (3/4) -github.com/conformal/btcjson/jsoncmd.go GetHashesPerSecCmd.MarshalJSON 75.00% (3/4) -github.com/conformal/btcjson/jsoncmd.go SendFromCmd.UnmarshalJSON 73.68% (28/38) -github.com/conformal/btcjson/jsoncmd.go SetGenerateCmd.UnmarshalJSON 73.68% (14/19) -github.com/conformal/btcjson/jsoncmd.go SendRawTransactionCmd.UnmarshalJSON 73.68% (14/19) -github.com/conformal/btcjson/jsoncmd.go GetReceivedByAddressCmd.UnmarshalJSON 73.68% (14/19) -github.com/conformal/btcjson/jsoncmd.go SubmitBlockCmd.UnmarshalJSON 73.68% (14/19) -github.com/conformal/btcjson/jsoncmd.go GetRawTransactionCmd.UnmarshalJSON 73.68% (14/19) -github.com/conformal/btcjson/jsoncmd.go GetReceivedByAccountCmd.UnmarshalJSON 73.68% (14/19) -github.com/conformal/btcjson/jsoncmd.go SendToAddressCmd.UnmarshalJSON 73.33% (22/30) -github.com/conformal/btcjson/jsoncmd.go MoveCmd.UnmarshalJSON 72.73% (24/33) -github.com/conformal/btcjson/jsoncmd.go CreateRawTransactionCmd.UnmarshalJSON 72.73% (16/22) -github.com/conformal/btcjson/jsoncmd.go GetWorkCmd.UnmarshalJSON 71.43% (10/14) -github.com/conformal/btcjson/jsoncmd.go GetAddedNodeInfoCmd.UnmarshalJSON 70.59% (12/17) -github.com/conformal/btcjson/jsoncmd.go AddMultisigAddressCmd.UnmarshalJSON 70.00% (14/20) -github.com/conformal/btcjson/jsoncmd.go ListLockUnspentCmd.UnmarshalJSON 70.00% (7/10) -github.com/conformal/btcjson/jsoncmd.go GetBlockCountCmd.UnmarshalJSON 70.00% (7/10) -github.com/conformal/btcjson/jsoncmd.go GetBestBlockHashCmd.UnmarshalJSON 70.00% (7/10) -github.com/conformal/btcjson/jsoncmd.go GetPeerInfoCmd.UnmarshalJSON 70.00% (7/10) -github.com/conformal/btcjson/jsoncmd.go PingCmd.UnmarshalJSON 70.00% (7/10) -github.com/conformal/btcjson/jsoncmd.go GetNetTotalsCmd.UnmarshalJSON 70.00% (7/10) -github.com/conformal/btcjson/jsoncmd.go GetMiningInfoCmd.UnmarshalJSON 70.00% (7/10) -github.com/conformal/btcjson/jsoncmd.go GetHashesPerSecCmd.UnmarshalJSON 70.00% (7/10) -github.com/conformal/btcjson/jsoncmd.go GetInfoCmd.UnmarshalJSON 70.00% (7/10) -github.com/conformal/btcjson/jsoncmd.go GetDifficultyCmd.UnmarshalJSON 70.00% (7/10) -github.com/conformal/btcjson/jsoncmd.go WalletLockCmd.UnmarshalJSON 70.00% (7/10) -github.com/conformal/btcjson/jsoncmd.go GetTxOutSetInfoCmd.UnmarshalJSON 70.00% (7/10) -github.com/conformal/btcjson/jsoncmd.go ListAddressGroupingsCmd.UnmarshalJSON 70.00% (7/10) -github.com/conformal/btcjson/jsoncmd.go GetGenerateCmd.UnmarshalJSON 70.00% (7/10) -github.com/conformal/btcjson/jsoncmd.go StopCmd.UnmarshalJSON 70.00% (7/10) -github.com/conformal/btcjson/jsoncmd.go GetConnectionCountCmd.UnmarshalJSON 70.00% (7/10) -github.com/conformal/btcjson/jsoncmd.go BackupWalletCmd.UnmarshalJSON 69.23% (9/13) -github.com/conformal/btcjson/jsoncmd.go ImportWalletCmd.UnmarshalJSON 69.23% (9/13) -github.com/conformal/btcjson/jsoncmd.go DebugLevelCmd.UnmarshalJSON 69.23% (9/13) -github.com/conformal/btcjson/jsoncmd.go GetAccountCmd.UnmarshalJSON 69.23% (9/13) -github.com/conformal/btcjson/jsoncmd.go ValidateAddressCmd.UnmarshalJSON 69.23% (9/13) -github.com/conformal/btcjson/jsoncmd.go GetAddressesByAccountCmd.UnmarshalJSON 69.23% (9/13) -github.com/conformal/btcjson/jsoncmd.go GetTransactionCmd.UnmarshalJSON 69.23% (9/13) -github.com/conformal/btcjson/jsoncmd.go DumpPrivKeyCmd.UnmarshalJSON 69.23% (9/13) -github.com/conformal/btcjson/jsoncmd.go DecodeRawTransactionCmd.UnmarshalJSON 69.23% (9/13) -github.com/conformal/btcjson/jsoncmd.go GetAccountAddressCmd.UnmarshalJSON 69.23% (9/13) -github.com/conformal/btcjson/jsoncmd.go EncryptWalletCmd.UnmarshalJSON 69.23% (9/13) -github.com/conformal/btcjson/jsoncmd.go DumpWalletCmd.UnmarshalJSON 69.23% (9/13) -github.com/conformal/btcjson/jsoncmd.go DecodeScriptCmd.UnmarshalJSON 69.23% (9/13) -github.com/conformal/btcjson/jsoncmd.go GetBlockHashCmd.UnmarshalJSON 69.23% (9/13) -github.com/conformal/btcjson/jsoncmd.go SetAccountCmd.UnmarshalJSON 68.75% (11/16) -github.com/conformal/btcjson/jsoncmd.go WalletPassphraseCmd.UnmarshalJSON 68.75% (11/16) -github.com/conformal/btcjson/jsoncmd.go SetTxFeeCmd.UnmarshalJSON 68.75% (11/16) -github.com/conformal/btcjson/jsoncmd.go CreateMultisigCmd.UnmarshalJSON 68.75% (11/16) -github.com/conformal/btcjson/jsoncmd.go WalletPassphraseChangeCmd.UnmarshalJSON 68.75% (11/16) -github.com/conformal/btcjson/jsoncmd.go AddNodeCmd.UnmarshalJSON 68.75% (11/16) -github.com/conformal/btcjson/jsoncmd.go SignMessageCmd.UnmarshalJSON 68.75% (11/16) -github.com/conformal/btcjson/jsoncmd.go VerifyMessageCmd.UnmarshalJSON 68.42% (13/19) -github.com/conformal/btcjson/jsoncmd.go SignRawTransactionCmd.MarshalJSON 66.67% (8/12) -github.com/conformal/btcjson/jsoncmd.go NewLockUnspentCmd 66.67% (4/6) -github.com/conformal/btcjson/jsoncmd.go NewAddNodeCmd 66.67% (2/3) -github.com/conformal/btcjson/jsonfxns.go jsonRpcSend 62.50% (10/16) -github.com/conformal/btcjson/jsonapi.go rpcCommand 61.54% (8/13) -github.com/conformal/btcjson/jsoncmd.go GetBlockCmd.MarshalJSON 60.00% (6/10) -github.com/conformal/btcjson/jsoncmd.go GetTxOutCmd.UnmarshalJSON 59.09% (13/22) -github.com/conformal/btcjson/jsonapi.go ReadResultCmd 58.73% (74/126) -github.com/conformal/btcjson/jsoncmd.go LockUnspentCmd.UnmarshalJSON 57.89% (11/19) -github.com/conformal/btcjson/jsonapi.go rpcRawCommand 53.33% (8/15) -github.com/conformal/btcjson/jsoncmd.go GetBlockCmd.UnmarshalJSON 50.00% (12/24) -github.com/conformal/btcjson/cmdhelp.go GetHelpString 50.00% (3/6) -github.com/conformal/btcjson/jsoncmd.go SignRawTransactionCmd.UnmarshalJSON 44.83% (13/29) -github.com/conformal/btcjson/jsoncmd.go NewSignRawTransactionCmd 38.10% (8/21) -github.com/conformal/btcjson/jsoncmd.go NewGetBlockCmd 36.36% (4/11) -github.com/conformal/btcjson/jsoncmd.go unparsableCmd.UnmarshalJSON 0.00% (0/6) -github.com/conformal/btcjson/jsonapi.go Vin.MarshalJSON 0.00% (0/5) -github.com/conformal/btcjson/jsonapi.go TlsRpcSend 0.00% (0/4) -github.com/conformal/btcjson/jsonapi.go RpcSend 0.00% (0/4) -github.com/conformal/btcjson/jsoncmd.go unparsableCmd.MarshalJSON 0.00% (0/4) -github.com/conformal/btcjson/jsonapi.go TlsRpcRawCommand 0.00% (0/1) -github.com/conformal/btcjson/jsoncmd.go unparsableCmd.Method 0.00% (0/1) -github.com/conformal/btcjson/jsonapi.go Vin.IsCoinBase 0.00% (0/1) -github.com/conformal/btcjson/jsonapi.go TlsRpcCommand 0.00% (0/1) -github.com/conformal/btcjson/jsoncmd.go unparsableCmd.SetId 0.00% (0/1) -github.com/conformal/btcjson/jsoncmd.go unparsableCmd.Id 0.00% (0/1) -github.com/conformal/btcjson/jsoncmd.go newUnparsableCmd 0.00% (0/1) -github.com/conformal/btcjson/jsoncmd.go RegisterCustomCmd 0.00% (0/1) -github.com/conformal/btcjson/jsonapi.go RpcRawCommand 0.00% (0/1) -github.com/conformal/btcjson --------------------------------------- 78.61% (2337/2973) +github.com/conformal/btcjson/jsonapi.go JSONToAmount 100.00% (15/15) +github.com/conformal/btcjson/jsonapi.go JSONGetMethod 100.00% (14/14) +github.com/conformal/btcjson/jsonfxns.go MarshallAndSend 100.00% (7/7) +github.com/conformal/btcjson/jsonfxns.go GetRaw 100.00% (6/6) +github.com/conformal/btcjson/jsonapi.go jsonWithArgs 100.00% (5/5) +github.com/conformal/btcjson/jsonapi.go IsValidIdType 100.00% (3/3) +github.com/conformal/btcjson/jsonapi.go CreateMessage 100.00% (2/2) +github.com/conformal/btcjson/jsoncmd.go NewSetTxFeeCmd 100.00% (1/1) +github.com/conformal/btcjson/jsonapi.go Error.Error 100.00% (1/1) +github.com/conformal/btcjson/jsonapi.go RpcCommand 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go WalletPassphraseChangeCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go WalletPassphraseChangeCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go WalletPassphraseChangeCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewWalletPassphraseChangeCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewGetMiningInfoCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetMiningInfoCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetMiningInfoCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetMiningInfoCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go StopCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewGetNetTotalsCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetNetTotalsCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetNetTotalsCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetNetTotalsCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go StopCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetNetworkHashPSCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetNetworkHashPSCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetNetworkHashPSCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetNewAddressCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetNewAddressCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetNewAddressCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewGetPeerInfoCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetPeerInfoCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetPeerInfoCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetPeerInfoCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go StopCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetRawChangeAddressCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetRawChangeAddressCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetRawChangeAddressCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetRawMempoolCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetRawMempoolCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetRawMempoolCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetRawTransactionCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetRawTransactionCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetRawTransactionCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetReceivedByAccountCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetReceivedByAccountCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetReceivedByAddressCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetReceivedByAddressCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetReceivedByAddressCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewGetTransactionCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetTransactionCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetTransactionCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetTransactionCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewStopCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetTxOutCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetTxOutCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetTxOutCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go SignRawTransactionCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewGetTxOutSetInfoCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetTxOutSetInfoCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetTxOutSetInfoCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetTxOutSetInfoCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go SignRawTransactionCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetWorkCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetWorkCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetWorkCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go SignRawTransactionCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go HelpCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go HelpCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go HelpCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ImportPrivKeyCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ImportPrivKeyCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ImportPrivKeyCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewImportWalletCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ImportWalletCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ImportWalletCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ImportWalletCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go KeyPoolRefillCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go KeyPoolRefillCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go KeyPoolRefillCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go SignMessageCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ListAccountsCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ListAccountsCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ListAccountsCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewListAddressGroupingsCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ListAddressGroupingsCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ListAddressGroupingsCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ListAddressGroupingsCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go SignMessageCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewListLockUnspentCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ListLockUnspentCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ListLockUnspentCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ListLockUnspentCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go SignMessageCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ListReceivedByAccountCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ListReceivedByAccountCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ListReceivedByAccountCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ListReceivedByAddressCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ListReceivedByAddressCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ListReceivedByAddressCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ListSinceBlockCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ListSinceBlockCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ListSinceBlockCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ListTransactionsCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ListTransactionsCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ListTransactionsCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ListUnspentCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ListUnspentCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ListUnspentCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewSignMessageCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go LockUnspentCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go LockUnspentCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go LockUnspentCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go MoveCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go MoveCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go MoveCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go SetTxFeeCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewPingCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go PingCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go PingCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go PingCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go SetTxFeeCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go SendFromCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go SendFromCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go SendFromCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go SendManyCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go SendManyCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go SendManyCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go SendRawTransactionCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go SendRawTransactionCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go SendRawTransactionCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go SendToAddressCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go SendToAddressCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go SendToAddressCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewSetAccountCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go SetAccountCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go SetAccountCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go SetAccountCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go SetTxFeeCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go SetGenerateCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go SetGenerateCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go SetGenerateCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go WalletPassphraseCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go WalletPassphraseCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go WalletPassphraseCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewWalletPassphraseCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go WalletLockCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go AddMultisigAddressCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go AddMultisigAddressCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go AddMultisigAddressCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go WalletLockCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go WalletLockCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go AddNodeCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go AddNodeCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go AddNodeCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewWalletLockCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewBackupWalletCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go BackupWalletCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go BackupWalletCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go BackupWalletCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewCreateMultisigCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go CreateMultisigCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go CreateMultisigCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go CreateMultisigCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go VerifyMessageCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewCreateRawTransactionCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go CreateRawTransactionCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go CreateRawTransactionCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go CreateRawTransactionCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go VerifyMessageCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewDebugLevelCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go DebugLevelCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go DebugLevelCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go DebugLevelCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go VerifyMessageCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewDecodeRawTransactionCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go DecodeRawTransactionCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go DecodeRawTransactionCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go DecodeRawTransactionCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewVerifyMessageCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewDecodeScriptCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go DecodeScriptCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go DecodeScriptCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go DecodeScriptCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewDumpPrivKeyCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go DumpPrivKeyCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go DumpPrivKeyCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go DumpPrivKeyCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewDumpWalletCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go DumpWalletCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go DumpWalletCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go DumpWalletCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go VerifyChainCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewEncryptWalletCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go EncryptWalletCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go EncryptWalletCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go EncryptWalletCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go VerifyChainCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewGetAccountCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetAccountCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetAccountCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetAccountCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go VerifyChainCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewGetAccountAddressCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetAccountAddressCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetAccountAddressCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetAccountAddressCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetAddedNodeInfoCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetAddedNodeInfoCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetAddedNodeInfoCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewGetAddressesByAccountCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetAddressesByAccountCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetAddressesByAccountCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetAddressesByAccountCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ValidateAddressCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetBalanceCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetBalanceCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetBalanceCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewGetBestBlockHashCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetBestBlockHashCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetBestBlockHashCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetBestBlockHashCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ValidateAddressCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go ValidateAddressCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetBlockCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetBlockCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetBlockCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewValidateAddressCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewGetBlockCountCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetBlockCountCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetBlockCountCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetBlockCountCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewGetBlockHashCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetBlockHashCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetBlockHashCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetBlockHashCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go SubmitBlockCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetBlockTemplateCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetBlockTemplateCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetBlockTemplateCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewGetConnectionCountCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetConnectionCountCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetConnectionCountCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetConnectionCountCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go SubmitBlockCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewGetDifficultyCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetDifficultyCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetDifficultyCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetDifficultyCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go SubmitBlockCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewGetGenerateCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetGenerateCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetGenerateCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetGenerateCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewGetHashesPerSecCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetHashesPerSecCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetHashesPerSecCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetHashesPerSecCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetReceivedByAccountCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go NewGetInfoCmd 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetInfoCmd.Id 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetInfoCmd.SetId 100.00% (1/1) +github.com/conformal/btcjson/jsoncmd.go GetInfoCmd.Method 100.00% (1/1) +github.com/conformal/btcjson/jsonapi.go CreateMessageWithId 96.18% (327/340) +github.com/conformal/btcjson/jsoncmd.go SendManyCmd.MarshalJSON 92.86% (13/14) +github.com/conformal/btcjson/jsoncmd.go SendFromCmd.MarshalJSON 92.86% (13/14) +github.com/conformal/btcjson/jsoncmd.go ParseMarshaledCmd 91.86% (79/86) +github.com/conformal/btcjson/jsoncmd.go MoveCmd.MarshalJSON 91.67% (11/12) +github.com/conformal/btcjson/jsoncmd.go ListTransactionsCmd.MarshalJSON 90.91% (10/11) +github.com/conformal/btcjson/jsoncmd.go SendToAddressCmd.MarshalJSON 90.91% (10/11) +github.com/conformal/btcjson/jsoncmd.go ListUnspentCmd.MarshalJSON 90.91% (10/11) +github.com/conformal/btcjson/jsoncmd.go ImportPrivKeyCmd.MarshalJSON 90.00% (9/10) +github.com/conformal/btcjson/jsoncmd.go ListReceivedByAddressCmd.MarshalJSON 88.89% (8/9) +github.com/conformal/btcjson/jsoncmd.go VerifyChainCmd.MarshalJSON 88.89% (8/9) +github.com/conformal/btcjson/jsoncmd.go GetBalanceCmd.MarshalJSON 88.89% (8/9) +github.com/conformal/btcjson/jsoncmd.go ListSinceBlockCmd.MarshalJSON 88.89% (8/9) +github.com/conformal/btcjson/jsoncmd.go NewVerifyChainCmd 88.89% (8/9) +github.com/conformal/btcjson/jsoncmd.go AddMultisigAddressCmd.MarshalJSON 88.89% (8/9) +github.com/conformal/btcjson/jsoncmd.go GetNetworkHashPSCmd.MarshalJSON 88.89% (8/9) +github.com/conformal/btcjson/jsoncmd.go NewGetNetworkHashPSCmd 88.89% (8/9) +github.com/conformal/btcjson/jsoncmd.go ListReceivedByAccountCmd.MarshalJSON 88.89% (8/9) +github.com/conformal/btcjson/jsoncmd.go GetReceivedByAccountCmd.MarshalJSON 87.50% (7/8) +github.com/conformal/btcjson/jsoncmd.go SubmitBlockCmd.MarshalJSON 87.50% (7/8) +github.com/conformal/btcjson/jsoncmd.go GetReceivedByAddressCmd.MarshalJSON 87.50% (7/8) +github.com/conformal/btcjson/jsoncmd.go SetGenerateCmd.MarshalJSON 87.50% (7/8) +github.com/conformal/btcjson/jsoncmd.go GetRawTransactionCmd.MarshalJSON 87.50% (7/8) +github.com/conformal/btcjson/jsoncmd.go CreateRawTransactionCmd.MarshalJSON 87.50% (7/8) +github.com/conformal/btcjson/jsoncmd.go NewRawCmd 87.50% (7/8) +github.com/conformal/btcjson/jsoncmd.go SendRawTransactionCmd.MarshalJSON 87.50% (7/8) +github.com/conformal/btcjson/jsoncmd.go GetAddedNodeInfoCmd.MarshalJSON 85.71% (6/7) +github.com/conformal/btcjson/jsoncmd.go GetRawChangeAddressCmd.MarshalJSON 85.71% (6/7) +github.com/conformal/btcjson/jsoncmd.go GetNewAddressCmd.MarshalJSON 85.71% (6/7) +github.com/conformal/btcjson/jsoncmd.go GetBlockTemplateCmd.MarshalJSON 85.71% (6/7) +github.com/conformal/btcjson/jsoncmd.go GetRawMempoolCmd.MarshalJSON 85.71% (6/7) +github.com/conformal/btcjson/jsoncmd.go GetWorkCmd.MarshalJSON 85.71% (6/7) +github.com/conformal/btcjson/jsoncmd.go ListAccountsCmd.MarshalJSON 85.71% (6/7) +github.com/conformal/btcjson/jsoncmd.go KeyPoolRefillCmd.MarshalJSON 85.71% (6/7) +github.com/conformal/btcjson/jsoncmd.go HelpCmd.MarshalJSON 85.71% (6/7) +github.com/conformal/btcjson/jsoncmd.go NewGetRawChangeAddressCmd 83.33% (5/6) +github.com/conformal/btcjson/jsoncmd.go NewGetReceivedByAddressCmd 83.33% (5/6) +github.com/conformal/btcjson/jsoncmd.go NewGetBlockTemplateCmd 83.33% (5/6) +github.com/conformal/btcjson/jsoncmd.go NewAddMultisigAddressCmd 83.33% (5/6) +github.com/conformal/btcjson/jsoncmd.go NewGetReceivedByAccountCmd 83.33% (5/6) +github.com/conformal/btcjson/jsoncmd.go NewGetTxOutCmd 83.33% (5/6) +github.com/conformal/btcjson/jsoncmd.go NewGetRawTransactionCmd 83.33% (5/6) +github.com/conformal/btcjson/jsoncmd.go NewKeyPoolRefillCmd 83.33% (5/6) +github.com/conformal/btcjson/jsoncmd.go NewSubmitBlockCmd 83.33% (5/6) +github.com/conformal/btcjson/jsoncmd.go NewSetGenerateCmd 83.33% (5/6) +github.com/conformal/btcjson/jsoncmd.go NewListAccountsCmd 83.33% (5/6) +github.com/conformal/btcjson/jsoncmd.go NewGetWorkCmd 83.33% (5/6) +github.com/conformal/btcjson/jsoncmd.go NewHelpCmd 83.33% (5/6) +github.com/conformal/btcjson/jsoncmd.go NewSendRawTransactionCmd 83.33% (5/6) +github.com/conformal/btcjson/jsoncmd.go NewGetNewAddressCmd 83.33% (5/6) +github.com/conformal/btcjson/jsoncmd.go NewGetAddedNodeInfoCmd 83.33% (5/6) +github.com/conformal/btcjson/jsoncmd.go NewGetRawMempoolCmd 83.33% (5/6) +github.com/conformal/btcjson/jsoncmd.go NewSendFromCmd 80.95% (17/21) +github.com/conformal/btcjson/jsoncmd.go NewListUnspentCmd 80.95% (17/21) +github.com/conformal/btcjson/jsoncmd.go NewListTransactionsCmd 80.95% (17/21) +github.com/conformal/btcjson/jsoncmd.go NewSendToAddressCmd 80.00% (12/15) +github.com/conformal/btcjson/jsoncmd.go NewSendManyCmd 80.00% (12/15) +github.com/conformal/btcjson/jsoncmd.go NewMoveCmd 80.00% (12/15) +github.com/conformal/btcjson/jsoncmd.go NewGetBalanceCmd 80.00% (12/15) +github.com/conformal/btcjson/jsoncmd.go NewListReceivedByAccountCmd 80.00% (12/15) +github.com/conformal/btcjson/jsoncmd.go NewListReceivedByAddressCmd 80.00% (12/15) +github.com/conformal/btcjson/jsoncmd.go NewListSinceBlockCmd 80.00% (12/15) +github.com/conformal/btcjson/jsoncmd.go DumpWalletCmd.MarshalJSON 80.00% (4/5) +github.com/conformal/btcjson/jsoncmd.go DebugLevelCmd.MarshalJSON 80.00% (4/5) +github.com/conformal/btcjson/jsoncmd.go DecodeRawTransactionCmd.MarshalJSON 80.00% (4/5) +github.com/conformal/btcjson/jsoncmd.go EncryptWalletCmd.MarshalJSON 80.00% (4/5) +github.com/conformal/btcjson/jsoncmd.go WalletPassphraseChangeCmd.MarshalJSON 80.00% (4/5) +github.com/conformal/btcjson/jsoncmd.go ValidateAddressCmd.MarshalJSON 80.00% (4/5) +github.com/conformal/btcjson/jsoncmd.go AddNodeCmd.MarshalJSON 80.00% (4/5) +github.com/conformal/btcjson/jsoncmd.go CreateMultisigCmd.MarshalJSON 80.00% (4/5) +github.com/conformal/btcjson/jsoncmd.go SetTxFeeCmd.MarshalJSON 80.00% (4/5) +github.com/conformal/btcjson/jsoncmd.go SignMessageCmd.MarshalJSON 80.00% (4/5) +github.com/conformal/btcjson/jsoncmd.go DecodeScriptCmd.MarshalJSON 80.00% (4/5) +github.com/conformal/btcjson/jsoncmd.go VerifyMessageCmd.MarshalJSON 80.00% (4/5) +github.com/conformal/btcjson/jsoncmd.go ImportWalletCmd.MarshalJSON 80.00% (4/5) +github.com/conformal/btcjson/jsoncmd.go DumpPrivKeyCmd.MarshalJSON 80.00% (4/5) +github.com/conformal/btcjson/jsoncmd.go BackupWalletCmd.MarshalJSON 80.00% (4/5) +github.com/conformal/btcjson/jsoncmd.go GetTransactionCmd.MarshalJSON 80.00% (4/5) +github.com/conformal/btcjson/jsoncmd.go WalletPassphraseCmd.MarshalJSON 80.00% (4/5) +github.com/conformal/btcjson/jsoncmd.go SetAccountCmd.MarshalJSON 80.00% (4/5) +github.com/conformal/btcjson/jsoncmd.go GetAccountAddressCmd.MarshalJSON 80.00% (4/5) +github.com/conformal/btcjson/jsoncmd.go GetAccountCmd.MarshalJSON 80.00% (4/5) +github.com/conformal/btcjson/jsoncmd.go GetBlockHashCmd.MarshalJSON 80.00% (4/5) +github.com/conformal/btcjson/jsoncmd.go GetAddressesByAccountCmd.MarshalJSON 80.00% (4/5) +github.com/conformal/btcjson/jsoncmd.go NewImportPrivKeyCmd 78.57% (11/14) +github.com/conformal/btcjson/jsoncmd.go GetTxOutCmd.MarshalJSON 77.78% (7/9) +github.com/conformal/btcjson/jsoncmd.go ListTransactionsCmd.UnmarshalJSON 76.92% (20/26) +github.com/conformal/btcjson/jsoncmd.go ListUnspentCmd.UnmarshalJSON 76.92% (20/26) +github.com/conformal/btcjson/jsoncmd.go GetNetworkHashPSCmd.UnmarshalJSON 76.19% (16/21) +github.com/conformal/btcjson/jsoncmd.go ListReceivedByAddressCmd.UnmarshalJSON 76.19% (16/21) +github.com/conformal/btcjson/jsoncmd.go ListReceivedByAccountCmd.UnmarshalJSON 76.19% (16/21) +github.com/conformal/btcjson/jsoncmd.go VerifyChainCmd.UnmarshalJSON 76.19% (16/21) +github.com/conformal/btcjson/jsoncmd.go ListSinceBlockCmd.UnmarshalJSON 76.19% (16/21) +github.com/conformal/btcjson/jsoncmd.go GetBalanceCmd.UnmarshalJSON 76.19% (16/21) +github.com/conformal/btcjson/jsoncmd.go SendManyCmd.UnmarshalJSON 75.76% (25/33) +github.com/conformal/btcjson/jsoncmd.go ImportPrivKeyCmd.UnmarshalJSON 75.00% (18/24) +github.com/conformal/btcjson/jsoncmd.go GetBlockTemplateCmd.UnmarshalJSON 75.00% (12/16) +github.com/conformal/btcjson/jsoncmd.go ListAccountsCmd.UnmarshalJSON 75.00% (12/16) +github.com/conformal/btcjson/jsoncmd.go HelpCmd.UnmarshalJSON 75.00% (12/16) +github.com/conformal/btcjson/jsoncmd.go GetNewAddressCmd.UnmarshalJSON 75.00% (12/16) +github.com/conformal/btcjson/jsoncmd.go GetRawChangeAddressCmd.UnmarshalJSON 75.00% (12/16) +github.com/conformal/btcjson/jsoncmd.go GetRawMempoolCmd.UnmarshalJSON 75.00% (12/16) +github.com/conformal/btcjson/jsoncmd.go KeyPoolRefillCmd.UnmarshalJSON 75.00% (12/16) +github.com/conformal/btcjson/jsoncmd.go LockUnspentCmd.MarshalJSON 75.00% (6/8) +github.com/conformal/btcjson/jsoncmd.go GetBestBlockHashCmd.MarshalJSON 75.00% (3/4) +github.com/conformal/btcjson/jsoncmd.go GetBlockCountCmd.MarshalJSON 75.00% (3/4) +github.com/conformal/btcjson/jsoncmd.go StopCmd.MarshalJSON 75.00% (3/4) +github.com/conformal/btcjson/jsoncmd.go PingCmd.MarshalJSON 75.00% (3/4) +github.com/conformal/btcjson/jsoncmd.go GetInfoCmd.MarshalJSON 75.00% (3/4) +github.com/conformal/btcjson/jsoncmd.go GetHashesPerSecCmd.MarshalJSON 75.00% (3/4) +github.com/conformal/btcjson/jsoncmd.go GetTxOutSetInfoCmd.MarshalJSON 75.00% (3/4) +github.com/conformal/btcjson/jsoncmd.go GetGenerateCmd.MarshalJSON 75.00% (3/4) +github.com/conformal/btcjson/jsoncmd.go WalletLockCmd.MarshalJSON 75.00% (3/4) +github.com/conformal/btcjson/jsoncmd.go ListLockUnspentCmd.MarshalJSON 75.00% (3/4) +github.com/conformal/btcjson/jsoncmd.go GetDifficultyCmd.MarshalJSON 75.00% (3/4) +github.com/conformal/btcjson/jsoncmd.go GetMiningInfoCmd.MarshalJSON 75.00% (3/4) +github.com/conformal/btcjson/jsoncmd.go ListAddressGroupingsCmd.MarshalJSON 75.00% (3/4) +github.com/conformal/btcjson/jsoncmd.go GetConnectionCountCmd.MarshalJSON 75.00% (3/4) +github.com/conformal/btcjson/jsoncmd.go GetPeerInfoCmd.MarshalJSON 75.00% (3/4) +github.com/conformal/btcjson/jsoncmd.go GetNetTotalsCmd.MarshalJSON 75.00% (3/4) +github.com/conformal/btcjson/jsoncmd.go SendFromCmd.UnmarshalJSON 73.68% (28/38) +github.com/conformal/btcjson/jsoncmd.go SetGenerateCmd.UnmarshalJSON 73.68% (14/19) +github.com/conformal/btcjson/jsoncmd.go SubmitBlockCmd.UnmarshalJSON 73.68% (14/19) +github.com/conformal/btcjson/jsoncmd.go GetRawTransactionCmd.UnmarshalJSON 73.68% (14/19) +github.com/conformal/btcjson/jsoncmd.go GetReceivedByAddressCmd.UnmarshalJSON 73.68% (14/19) +github.com/conformal/btcjson/jsoncmd.go SendRawTransactionCmd.UnmarshalJSON 73.68% (14/19) +github.com/conformal/btcjson/jsoncmd.go GetReceivedByAccountCmd.UnmarshalJSON 73.68% (14/19) +github.com/conformal/btcjson/jsoncmd.go SendToAddressCmd.UnmarshalJSON 73.33% (22/30) +github.com/conformal/btcjson/jsoncmd.go MoveCmd.UnmarshalJSON 72.73% (24/33) +github.com/conformal/btcjson/jsoncmd.go CreateRawTransactionCmd.UnmarshalJSON 72.73% (16/22) +github.com/conformal/btcjson/jsoncmd.go GetWorkCmd.UnmarshalJSON 71.43% (10/14) +github.com/conformal/btcjson/jsoncmd.go GetAddedNodeInfoCmd.UnmarshalJSON 70.59% (12/17) +github.com/conformal/btcjson/jsoncmd.go AddMultisigAddressCmd.UnmarshalJSON 70.00% (14/20) +github.com/conformal/btcjson/jsoncmd.go GetDifficultyCmd.UnmarshalJSON 70.00% (7/10) +github.com/conformal/btcjson/jsoncmd.go GetConnectionCountCmd.UnmarshalJSON 70.00% (7/10) +github.com/conformal/btcjson/jsoncmd.go GetHashesPerSecCmd.UnmarshalJSON 70.00% (7/10) +github.com/conformal/btcjson/jsoncmd.go GetBlockCountCmd.UnmarshalJSON 70.00% (7/10) +github.com/conformal/btcjson/jsoncmd.go WalletLockCmd.UnmarshalJSON 70.00% (7/10) +github.com/conformal/btcjson/jsoncmd.go PingCmd.UnmarshalJSON 70.00% (7/10) +github.com/conformal/btcjson/jsoncmd.go GetBestBlockHashCmd.UnmarshalJSON 70.00% (7/10) +github.com/conformal/btcjson/jsoncmd.go GetTxOutSetInfoCmd.UnmarshalJSON 70.00% (7/10) +github.com/conformal/btcjson/jsoncmd.go ListLockUnspentCmd.UnmarshalJSON 70.00% (7/10) +github.com/conformal/btcjson/jsoncmd.go ListAddressGroupingsCmd.UnmarshalJSON 70.00% (7/10) +github.com/conformal/btcjson/jsoncmd.go GetPeerInfoCmd.UnmarshalJSON 70.00% (7/10) +github.com/conformal/btcjson/jsoncmd.go GetNetTotalsCmd.UnmarshalJSON 70.00% (7/10) +github.com/conformal/btcjson/jsoncmd.go GetMiningInfoCmd.UnmarshalJSON 70.00% (7/10) +github.com/conformal/btcjson/jsoncmd.go GetInfoCmd.UnmarshalJSON 70.00% (7/10) +github.com/conformal/btcjson/jsoncmd.go StopCmd.UnmarshalJSON 70.00% (7/10) +github.com/conformal/btcjson/jsoncmd.go GetGenerateCmd.UnmarshalJSON 70.00% (7/10) +github.com/conformal/btcjson/jsoncmd.go GetTransactionCmd.UnmarshalJSON 69.23% (9/13) +github.com/conformal/btcjson/jsoncmd.go GetAccountCmd.UnmarshalJSON 69.23% (9/13) +github.com/conformal/btcjson/jsoncmd.go ImportWalletCmd.UnmarshalJSON 69.23% (9/13) +github.com/conformal/btcjson/jsoncmd.go GetAddressesByAccountCmd.UnmarshalJSON 69.23% (9/13) +github.com/conformal/btcjson/jsoncmd.go BackupWalletCmd.UnmarshalJSON 69.23% (9/13) +github.com/conformal/btcjson/jsoncmd.go GetAccountAddressCmd.UnmarshalJSON 69.23% (9/13) +github.com/conformal/btcjson/jsoncmd.go DebugLevelCmd.UnmarshalJSON 69.23% (9/13) +github.com/conformal/btcjson/jsoncmd.go DecodeRawTransactionCmd.UnmarshalJSON 69.23% (9/13) +github.com/conformal/btcjson/jsoncmd.go GetBlockHashCmd.UnmarshalJSON 69.23% (9/13) +github.com/conformal/btcjson/jsoncmd.go DecodeScriptCmd.UnmarshalJSON 69.23% (9/13) +github.com/conformal/btcjson/jsoncmd.go DumpPrivKeyCmd.UnmarshalJSON 69.23% (9/13) +github.com/conformal/btcjson/jsoncmd.go DumpWalletCmd.UnmarshalJSON 69.23% (9/13) +github.com/conformal/btcjson/jsoncmd.go EncryptWalletCmd.UnmarshalJSON 69.23% (9/13) +github.com/conformal/btcjson/jsoncmd.go ValidateAddressCmd.UnmarshalJSON 69.23% (9/13) +github.com/conformal/btcjson/jsoncmd.go SetAccountCmd.UnmarshalJSON 68.75% (11/16) +github.com/conformal/btcjson/jsoncmd.go SetTxFeeCmd.UnmarshalJSON 68.75% (11/16) +github.com/conformal/btcjson/jsoncmd.go SignMessageCmd.UnmarshalJSON 68.75% (11/16) +github.com/conformal/btcjson/jsoncmd.go CreateMultisigCmd.UnmarshalJSON 68.75% (11/16) +github.com/conformal/btcjson/jsoncmd.go AddNodeCmd.UnmarshalJSON 68.75% (11/16) +github.com/conformal/btcjson/jsoncmd.go WalletPassphraseCmd.UnmarshalJSON 68.75% (11/16) +github.com/conformal/btcjson/jsoncmd.go WalletPassphraseChangeCmd.UnmarshalJSON 68.75% (11/16) +github.com/conformal/btcjson/jsoncmd.go VerifyMessageCmd.UnmarshalJSON 68.42% (13/19) +github.com/conformal/btcjson/jsoncmd.go SignRawTransactionCmd.MarshalJSON 66.67% (8/12) +github.com/conformal/btcjson/jsoncmd.go NewLockUnspentCmd 66.67% (4/6) +github.com/conformal/btcjson/jsoncmd.go NewAddNodeCmd 66.67% (2/3) +github.com/conformal/btcjson/jsonfxns.go jsonRpcSend 62.50% (10/16) +github.com/conformal/btcjson/jsonapi.go rpcCommand 61.54% (8/13) +github.com/conformal/btcjson/jsoncmd.go GetBlockCmd.MarshalJSON 60.00% (6/10) +github.com/conformal/btcjson/jsoncmd.go GetTxOutCmd.UnmarshalJSON 59.09% (13/22) +github.com/conformal/btcjson/jsoncmd.go LockUnspentCmd.UnmarshalJSON 57.89% (11/19) +github.com/conformal/btcjson/jsonresults.go ReadResultCmd 57.38% (70/122) +github.com/conformal/btcjson/jsonapi.go rpcRawCommand 53.33% (8/15) +github.com/conformal/btcjson/jsoncmd.go GetBlockCmd.UnmarshalJSON 50.00% (12/24) +github.com/conformal/btcjson/cmdhelp.go GetHelpString 50.00% (3/6) +github.com/conformal/btcjson/jsoncmd.go SignRawTransactionCmd.UnmarshalJSON 44.83% (13/29) +github.com/conformal/btcjson/jsoncmd.go NewSignRawTransactionCmd 38.10% (8/21) +github.com/conformal/btcjson/jsoncmd.go NewGetBlockCmd 36.36% (4/11) +github.com/conformal/btcjson/jsoncmd.go unparsableCmd.UnmarshalJSON 0.00% (0/6) +github.com/conformal/btcjson/jsonresults.go Vin.MarshalJSON 0.00% (0/5) +github.com/conformal/btcjson/jsonapi.go RpcSend 0.00% (0/4) +github.com/conformal/btcjson/jsoncmd.go unparsableCmd.MarshalJSON 0.00% (0/4) +github.com/conformal/btcjson/jsonapi.go TlsRpcSend 0.00% (0/4) +github.com/conformal/btcjson/jsonapi.go TlsRpcCommand 0.00% (0/1) +github.com/conformal/btcjson/jsoncmd.go newUnparsableCmd 0.00% (0/1) +github.com/conformal/btcjson/jsoncmd.go unparsableCmd.Id 0.00% (0/1) +github.com/conformal/btcjson/jsoncmd.go unparsableCmd.SetId 0.00% (0/1) +github.com/conformal/btcjson/jsoncmd.go RegisterCustomCmd 0.00% (0/1) +github.com/conformal/btcjson/jsoncmd.go unparsableCmd.Method 0.00% (0/1) +github.com/conformal/btcjson/jsonapi.go TlsRpcRawCommand 0.00% (0/1) +github.com/conformal/btcjson/jsonapi.go RpcRawCommand 0.00% (0/1) +github.com/conformal/btcjson/jsonresults.go Vin.IsCoinBase 0.00% (0/1) +github.com/conformal/btcjson --------------------------------------- 78.58% (2333/2969)