Switch to new transaction notifications.

This change removes the processedtx notification, replacing it with
recvtx, and the spenttx notification, replacing it with redeemingtx.
Both new transactions return the full serialized transaction (encoded
in hexadecimal) rather than details about the transaction.

The old txmined notification has also been completely removed as it is
unreliable due to transaction malleability and no code should be
depending on it.
This commit is contained in:
Josh Rickmar 2014-02-17 13:45:06 -05:00
parent 5c66641735
commit bb4cba51cd
3 changed files with 373 additions and 426 deletions

View file

@ -22,6 +22,14 @@ const (
// accountbalance notification.
AccountBalanceNtfnMethod = "accountbalance"
// AllTxNtfnMethod is the method of the btcd alltx
// notification
AllTxNtfnMethod = "alltx"
// AllVerboseTxNtfnMethod is the method of the btcd
// allverbosetx notifications.
AllVerboseTxNtfnMethod = "allverbosetx"
// BlockConnectedNtfnMethod is the method of the btcd
// blockconnected notification.
BlockConnectedNtfnMethod = "blockconnected"
@ -34,29 +42,16 @@ const (
// btcdconnected notification.
BtcdConnectedNtfnMethod = "btcdconnected"
// ProcessedTxNtfnMethod is the method of the btcd
// processedtx notification.
ProcessedTxNtfnMethod = "processedtx"
// AllTxNtfnMethod is the method of the btcd alltx
// notification
AllTxNtfnMethod = "alltx"
// AllVerboseTxNtfnMethod is the method of the btcd
// allverbosetx notifications.
AllVerboseTxNtfnMethod = "allverbosetx"
// TxMinedNtfnMethod is the method of the btcd txmined
// notification.
TxMinedNtfnMethod = "txmined"
// RecvTxNtfnMethod is the method of the btcd recvtx notification.
RecvTxNtfnMethod = "recvtx"
// TxNtfnMethod is the method of the btcwallet newtx
// notification.
TxNtfnMethod = "newtx"
// TxSpentNtfnMethod is the method of the btcd txspent
// RedeemingTxNtfnMethod is the method of the btcd redeemingtx
// notification.
TxSpentNtfnMethod = "txspent"
RedeemingTxNtfnMethod = "redeemingtx"
// WalletLockStateNtfnMethod is the method of the btcwallet
// walletlockstate notification.
@ -73,11 +68,9 @@ func init() {
parseBlockDisconnectedNtfn, `TODO(jrick) fillmein`)
btcjson.RegisterCustomCmd(BtcdConnectedNtfnMethod,
parseBtcdConnectedNtfn, `TODO(jrick) fillmein`)
btcjson.RegisterCustomCmd(ProcessedTxNtfnMethod,
parseProcessedTxNtfn, `TODO(jrick) fillmein`)
btcjson.RegisterCustomCmd(TxMinedNtfnMethod, parseTxMinedNtfn,
`TODO(jrick) fillmein`)
btcjson.RegisterCustomCmd(TxSpentNtfnMethod, parseTxSpentNtfn,
btcjson.RegisterCustomCmd(RecvTxNtfnMethod,
parseRecvTxNtfn, `TODO(jrick) fillmein`)
btcjson.RegisterCustomCmd(RedeemingTxNtfnMethod, parseRedeemingTxNtfn,
`TODO(jrick) fillmein`)
btcjson.RegisterCustomCmd(TxNtfnMethod, parseTxNtfn,
`TODO(jrick) fillmein`)
@ -89,6 +82,14 @@ func init() {
generateAllVerboseTxNtfn)
}
// BlockDetails describes details of a tx in a block.
type BlockDetails struct {
Height int32
Hash string
Index int
Time int64
}
// AccountBalanceNtfn is a type handling custom marshaling and
// unmarshaling of accountbalance JSON websocket notifications.
type AccountBalanceNtfn struct {
@ -453,7 +454,7 @@ func (n *BtcdConnectedNtfn) UnmarshalJSON(b []byte) error {
return err
}
newNtfn, err := parseTxMinedNtfn(&r)
newNtfn, err := parseBtcdConnectedNtfn(&r)
if err != nil {
return err
}
@ -466,150 +467,136 @@ func (n *BtcdConnectedNtfn) UnmarshalJSON(b []byte) error {
return nil
}
// ProcessedTxNtfn is a type handling custom marshaling and unmarshaling
// of processedtx JSON websocket notifications.
type ProcessedTxNtfn struct {
Receiver string
Amount int64
TxID string
TxOutIndex uint32
PkScript string
BlockHash string
BlockHeight int32
BlockIndex int
BlockTime int64
Spent bool
// RecvTxNtfn is a type handling custom marshaling and unmarshaling
// of recvtx JSON websocket notifications.
type RecvTxNtfn struct {
HexTx string
Block *BlockDetails
}
// Enforce that ProcessedTxNtfn satisifies the btcjson.Cmd interface.
var _ btcjson.Cmd = &ProcessedTxNtfn{}
// Enforce that RecvTxNtfn satisifies the btcjson.Cmd interface.
var _ btcjson.Cmd = &RecvTxNtfn{}
// parseProcessedTxNtfn parses a RawCmd into a concrete type satisifying
// the btcjson.Cmd interface. This is used when registering the notification
// with the btcjson parser.
func parseProcessedTxNtfn(r *btcjson.RawCmd) (btcjson.Cmd, error) {
// NewRecvTxNtfn creates a new RecvTxNtfn.
func NewRecvTxNtfn(hextx string, block *BlockDetails) *RecvTxNtfn {
return &RecvTxNtfn{
HexTx: hextx,
Block: block,
}
}
// parsRecvTxNtfn parses a RawCmd into a concrete type satisifying the
// btcjson.Cmd interface. This is used when registering the notification with
// the btcjson parser.
func parseRecvTxNtfn(r *btcjson.RawCmd) (btcjson.Cmd, error) {
if r.Id != nil {
return nil, ErrNotANtfn
}
if len(r.Params) != 10 {
// Must have one or two parameters.
if len(r.Params) == 0 || len(r.Params) > 2 {
return nil, btcjson.ErrWrongNumberOfParams
}
receiver, ok := r.Params[0].(string)
hextx, ok := r.Params[0].(string)
if !ok {
return nil, errors.New("first parameter receiver must be a string")
}
famount, ok := r.Params[1].(float64)
if !ok {
return nil, errors.New("second parameter amount must be a number")
}
amount := int64(famount)
txid, ok := r.Params[2].(string)
if !ok {
return nil, errors.New("third parameter txid must be a string")
}
fTxOutIdx, ok := r.Params[3].(float64)
if !ok {
return nil, errors.New("fourth parameter txoutidx must be a number")
}
txOutIdx := uint32(fTxOutIdx)
pkScript, ok := r.Params[4].(string)
if !ok {
return nil, errors.New("fifth parameter pkScript must be a string")
}
blockHash := r.Params[5].(string)
if !ok {
return nil, errors.New("sixth parameter blockHash must be a string")
}
fBlockHeight, ok := r.Params[6].(float64)
if !ok {
return nil, errors.New("seventh parameter blockHeight must be a number")
}
blockHeight := int32(fBlockHeight)
fBlockIndex, ok := r.Params[7].(float64)
if !ok {
return nil, errors.New("eighth parameter blockIndex must be a number")
}
blockIndex := int(fBlockIndex)
fBlockTime, ok := r.Params[8].(float64)
if !ok {
return nil, errors.New("ninth parameter blockTime must be a number")
}
blockTime := int64(fBlockTime)
spent, ok := r.Params[9].(bool)
if !ok {
return nil, errors.New("tenth parameter spent must be a bool")
return nil, errors.New("first parameter hextx must be a string")
}
cmd := &ProcessedTxNtfn{
Receiver: receiver,
Amount: amount,
TxID: txid,
TxOutIndex: txOutIdx,
PkScript: pkScript,
BlockHash: blockHash,
BlockHeight: blockHeight,
BlockIndex: blockIndex,
BlockTime: blockTime,
Spent: spent,
ntfn := &RecvTxNtfn{HexTx: hextx}
if len(r.Params) > 1 {
details, ok := r.Params[1].(map[string]interface{})
if !ok {
return nil, errors.New("second parameter must be a JSON object")
}
height, ok := details["height"].(float64)
if !ok {
return nil, errors.New("unspecified block height")
}
hash, ok := details["hash"].(string)
if !ok {
return nil, errors.New("unspecified block hash")
}
index, ok := details["index"].(float64)
if !ok {
return nil, errors.New("unspecified block index")
}
time, ok := details["time"].(float64)
if !ok {
return nil, errors.New("unspecified block time")
}
ntfn.Block = &BlockDetails{
Height: int32(height),
Hash: hash,
Index: int(index),
Time: int64(time),
}
}
return cmd, nil
return ntfn, nil
}
// Id satisifies the btcjson.Cmd interface by returning nil for a
// notification ID.
func (n *ProcessedTxNtfn) Id() interface{} {
func (n *RecvTxNtfn) Id() interface{} {
return nil
}
// SetId is implemented to satisify the btcjson.Cmd interface. The
// notification id is not modified.
func (n *ProcessedTxNtfn) SetId(id interface{}) {}
func (n *RecvTxNtfn) SetId(id interface{}) {}
// Method satisifies the btcjson.Cmd interface by returning the method
// of the notification.
func (n *ProcessedTxNtfn) Method() string {
return ProcessedTxNtfnMethod
func (n *RecvTxNtfn) Method() string {
return RecvTxNtfnMethod
}
// MarshalJSON returns the JSON encoding of n. Part of the btcjson.Cmd
// interface.
func (n *ProcessedTxNtfn) MarshalJSON() ([]byte, error) {
func (n *RecvTxNtfn) MarshalJSON() ([]byte, error) {
params := []interface{}{n.HexTx}
if n.Block != nil {
details := map[string]interface{}{
"height": float64(n.Block.Height),
"hash": n.Block.Hash,
"index": float64(n.Block.Index),
"time": float64(n.Block.Time),
}
params = append(params, details)
}
ntfn := btcjson.Message{
Jsonrpc: "1.0",
Method: n.Method(),
Params: []interface{}{
n.Receiver,
n.Amount,
n.TxID,
n.TxOutIndex,
n.PkScript,
n.BlockHash,
n.BlockHeight,
n.BlockIndex,
n.BlockTime,
n.Spent,
},
Params: params,
}
return json.Marshal(ntfn)
}
// UnmarshalJSON unmarshals the JSON encoding of n into n. Part of
// the btcjson.Cmd interface.
func (n *ProcessedTxNtfn) UnmarshalJSON(b []byte) error {
func (n *RecvTxNtfn) UnmarshalJSON(b []byte) error {
// Unmarshal into a RawCmd.
var r btcjson.RawCmd
if err := json.Unmarshal(b, &r); err != nil {
return err
}
newNtfn, err := parseProcessedTxNtfn(&r)
newNtfn, err := parseRecvTxNtfn(&r)
if err != nil {
return err
}
concreteNtfn, ok := newNtfn.(*ProcessedTxNtfn)
concreteNtfn, ok := newNtfn.(*RecvTxNtfn)
if !ok {
return btcjson.ErrInternal
}
@ -617,117 +604,136 @@ func (n *ProcessedTxNtfn) UnmarshalJSON(b []byte) error {
return nil
}
// TxMinedNtfn is a type handling custom marshaling and
// unmarshaling of txmined JSON websocket notifications.
type TxMinedNtfn struct {
TxID string
BlockHash string
BlockHeight int32
BlockTime int64
Index int
// RedeemingTxNtfn is a type handling custom marshaling and unmarshaling
// of redeemingtx JSON websocket notifications.
type RedeemingTxNtfn struct {
HexTx string
Block *BlockDetails
}
// Enforce that TxMinedNtfn satisifies the btcjson.Cmd interface.
var _ btcjson.Cmd = &TxMinedNtfn{}
// Enforce that RedeemingTxNtfn satisifies the btcjson.Cmd interface.
var _ btcjson.Cmd = &RedeemingTxNtfn{}
// NewTxMinedNtfn creates a new TxMinedNtfn.
func NewTxMinedNtfn(txid, blockhash string, blockheight int32,
blocktime int64, index int) *TxMinedNtfn {
return &TxMinedNtfn{
TxID: txid,
BlockHash: blockhash,
BlockHeight: blockheight,
BlockTime: blocktime,
Index: index,
// NewRedeemingTxNtfn creates a new RedeemingTxNtfn.
func NewRedeemingTxNtfn(hextx string, block *BlockDetails) *RedeemingTxNtfn {
return &RedeemingTxNtfn{
HexTx: hextx,
Block: block,
}
}
// parseTxMinedNtfn parses a RawCmd into a concrete type satisifying
// the btcjson.Cmd interface. This is used when registering the notification
// with the btcjson parser.
func parseTxMinedNtfn(r *btcjson.RawCmd) (btcjson.Cmd, error) {
// parseRedeemingTxNtfn parses a RawCmd into a concrete type satisifying the
// btcjson.Cmd interface. This is used when registering the notification with
// the btcjson parser.
func parseRedeemingTxNtfn(r *btcjson.RawCmd) (btcjson.Cmd, error) {
if r.Id != nil {
return nil, ErrNotANtfn
}
if len(r.Params) != 5 {
// Must have one or two parameters.
if len(r.Params) == 0 || len(r.Params) > 2 {
return nil, btcjson.ErrWrongNumberOfParams
}
txid, ok := r.Params[0].(string)
hextx, ok := r.Params[0].(string)
if !ok {
return nil, errors.New("first parameter txid must be a string")
}
blockhash, ok := r.Params[1].(string)
if !ok {
return nil, errors.New("second parameter blockhash must be a string")
}
fblockheight, ok := r.Params[2].(float64)
if !ok {
return nil, errors.New("third parameter blockheight must be a number")
}
fblocktime, ok := r.Params[3].(float64)
if !ok {
return nil, errors.New("fourth parameter blocktime must be a number")
}
findex, ok := r.Params[4].(float64)
if !ok {
return nil, errors.New("fifth parameter index must be a number")
return nil, errors.New("first parameter hextx must be a string")
}
return NewTxMinedNtfn(txid, blockhash, int32(fblockheight),
int64(fblocktime), int(findex)), nil
ntfn := &RedeemingTxNtfn{HexTx: hextx}
if len(r.Params) > 1 {
details, ok := r.Params[1].(map[string]interface{})
if !ok {
return nil, errors.New("second parameter must be a JSON object")
}
height, ok := details["height"].(float64)
if !ok {
return nil, errors.New("unspecified block height")
}
hash, ok := details["hash"].(string)
if !ok {
return nil, errors.New("unspecified block hash")
}
index, ok := details["index"].(float64)
if !ok {
return nil, errors.New("unspecified block index")
}
time, ok := details["time"].(float64)
if !ok {
return nil, errors.New("unspecified block time")
}
ntfn.Block = &BlockDetails{
Height: int32(height),
Hash: hash,
Index: int(index),
Time: int64(time),
}
}
return ntfn, nil
}
// Id satisifies the btcjson.Cmd interface by returning nil for a
// notification ID.
func (n *TxMinedNtfn) Id() interface{} {
func (n *RedeemingTxNtfn) Id() interface{} {
return nil
}
// SetId is implemented to satisify the btcjson.Cmd interface. The
// notification id is not modified.
func (n *TxMinedNtfn) SetId(id interface{}) {}
func (n *RedeemingTxNtfn) SetId(id interface{}) {}
// Method satisifies the btcjson.Cmd interface by returning the method
// of the notification.
func (n *TxMinedNtfn) Method() string {
return TxMinedNtfnMethod
func (n *RedeemingTxNtfn) Method() string {
return RedeemingTxNtfnMethod
}
// MarshalJSON returns the JSON encoding of n. Part of the btcjson.Cmd
// interface.
func (n *TxMinedNtfn) MarshalJSON() ([]byte, error) {
func (n *RedeemingTxNtfn) MarshalJSON() ([]byte, error) {
params := []interface{}{n.HexTx}
if n.Block != nil {
details := map[string]interface{}{
"height": float64(n.Block.Height),
"hash": n.Block.Hash,
"index": float64(n.Block.Index),
"time": float64(n.Block.Time),
}
params = append(params, details)
}
ntfn := btcjson.Message{
Jsonrpc: "1.0",
Method: n.Method(),
Params: []interface{}{
n.TxID,
n.BlockHash,
n.BlockHeight,
n.BlockTime,
n.Index,
},
Params: params,
}
return json.Marshal(ntfn)
}
// UnmarshalJSON unmarshals the JSON encoding of n into n. Part of
// the btcjson.Cmd interface.
func (n *TxMinedNtfn) UnmarshalJSON(b []byte) error {
func (n *RedeemingTxNtfn) UnmarshalJSON(b []byte) error {
// Unmarshal into a RawCmd.
var r btcjson.RawCmd
if err := json.Unmarshal(b, &r); err != nil {
return err
}
newNtfn, err := parseTxMinedNtfn(&r)
newNtfn, err := parseRedeemingTxNtfn(&r)
if err != nil {
return err
}
concreteNtfn, ok := newNtfn.(*TxMinedNtfn)
concreteNtfn, ok := newNtfn.(*RedeemingTxNtfn)
if !ok {
return btcjson.ErrInternal
}
@ -742,108 +748,6 @@ type TxNtfn struct {
Details map[string]interface{}
}
// TxSpentNtfn is a type handling custom marshaling and
// unmarshaling of txspent JSON websocket notifications.
type TxSpentNtfn struct {
SpentTxId string
SpentTxOutIndex int
SpendingTx string
}
// Enforce that TxSpentNtfn satisifies the btcjson.Cmd interface.
var _ btcjson.Cmd = &TxSpentNtfn{}
// NewTxSpentNtfn creates a new TxSpentNtfn.
func NewTxSpentNtfn(txid string, txOutIndex int, spendingTx string) *TxSpentNtfn {
return &TxSpentNtfn{
SpentTxId: txid,
SpentTxOutIndex: txOutIndex,
SpendingTx: spendingTx,
}
}
// parseTxSpentNtfn parses a RawCmd into a concrete type satisifying
// the btcjson.Cmd interface. This is used when registering the notification
// with the btcjson parser.
func parseTxSpentNtfn(r *btcjson.RawCmd) (btcjson.Cmd, error) {
if r.Id != nil {
return nil, ErrNotANtfn
}
if len(r.Params) != 3 {
return nil, btcjson.ErrWrongNumberOfParams
}
txid, ok := r.Params[0].(string)
if !ok {
return nil, errors.New("first parameter txid must be a string")
}
findex, ok := r.Params[1].(float64)
if !ok {
return nil, errors.New("second parameter index must be a number")
}
index := int(findex)
spendingTx, ok := r.Params[2].(string)
if !ok {
return nil, errors.New("third parameter spendingTx must be a string")
}
return NewTxSpentNtfn(txid, index, spendingTx), nil
}
// Id satisifies the btcjson.Cmd interface by returning nil for a
// notification ID.
func (n *TxSpentNtfn) Id() interface{} {
return nil
}
// SetId is implemented to satisify the btcjson.Cmd interface. The
// notification id is not modified.
func (n *TxSpentNtfn) SetId(id interface{}) {}
// Method satisifies the btcjson.Cmd interface by returning the method
// of the notification.
func (n *TxSpentNtfn) Method() string {
return TxSpentNtfnMethod
}
// MarshalJSON returns the JSON encoding of n. Part of the btcjson.Cmd
// interface.
func (n *TxSpentNtfn) MarshalJSON() ([]byte, error) {
ntfn := btcjson.Message{
Jsonrpc: "1.0",
Method: n.Method(),
Params: []interface{}{
n.SpentTxId,
n.SpentTxOutIndex,
n.SpendingTx,
},
}
return json.Marshal(ntfn)
}
// UnmarshalJSON unmarshals the JSON encoding of n into n. Part of
// the btcjson.Cmd interface.
func (n *TxSpentNtfn) UnmarshalJSON(b []byte) error {
// Unmarshal into a RawCmd.
var r btcjson.RawCmd
if err := json.Unmarshal(b, &r); err != nil {
return err
}
newNtfn, err := parseTxSpentNtfn(&r)
if err != nil {
return err
}
concreteNtfn, ok := newNtfn.(*TxSpentNtfn)
if !ok {
return btcjson.ErrInternal
}
*n = *concreteNtfn
return nil
}
// Enforce that TxNtfn satisifies the btcjson.Cmd interface.
var _ btcjson.Cmd = &TxNtfn{}

View file

@ -62,65 +62,65 @@ var ntfntests = []struct {
},
},
{
name: "processedtx",
name: "recvtx no block",
f: func() btcjson.Cmd {
cmd := &btcws.ProcessedTxNtfn{
Receiver: "miFxiuApPo3KBqtMnPUjasZmHoVnoH3Eoc",
Amount: 200000000,
TxID: "851f5c0652e785c5ed80aafaf2d918e5cbe5c307dbba3680808ada1d01f36886",
TxOutIndex: 1,
PkScript: "76a9141e127eda7cd71b9724085f588840a3e9d697ae9888ac",
BlockHash: "000000004811dda1c320ad5d0ea184a20a53acd92292c5f1cb926c3ee82abf70",
BlockHeight: 153469,
BlockIndex: 1,
BlockTime: 1386944019,
Spent: true,
return btcws.NewRecvTxNtfn("lalala the hex tx", nil)
},
result: &btcws.RecvTxNtfn{
HexTx: "lalala the hex tx",
Block: nil,
},
},
{
name: "recvtx with block",
f: func() btcjson.Cmd {
block := &btcws.BlockDetails{
Height: 153469,
Hash: "000000004811dda1c320ad5d0ea184a20a53acd92292c5f1cb926c3ee82abf70",
Index: 1,
Time: 1386944019,
}
return cmd
return btcws.NewRecvTxNtfn("lalala the hex tx", block)
},
result: &btcws.ProcessedTxNtfn{
Receiver: "miFxiuApPo3KBqtMnPUjasZmHoVnoH3Eoc",
Amount: 200000000,
TxID: "851f5c0652e785c5ed80aafaf2d918e5cbe5c307dbba3680808ada1d01f36886",
TxOutIndex: 1,
PkScript: "76a9141e127eda7cd71b9724085f588840a3e9d697ae9888ac",
BlockHash: "000000004811dda1c320ad5d0ea184a20a53acd92292c5f1cb926c3ee82abf70",
BlockHeight: 153469,
BlockIndex: 1,
BlockTime: 1386944019,
Spent: true,
result: &btcws.RecvTxNtfn{
HexTx: "lalala the hex tx",
Block: &btcws.BlockDetails{
Height: 153469,
Hash: "000000004811dda1c320ad5d0ea184a20a53acd92292c5f1cb926c3ee82abf70",
Index: 1,
Time: 1386944019,
},
},
},
{
name: "txmined",
name: "redeemingtx",
f: func() btcjson.Cmd {
return btcws.NewTxMinedNtfn(
"062f2b5f7d28c787e0f3aee382132241cd590efb7b83bd2c7f506de5aa4ef275",
"000000004811dda1c320ad5d0ea184a20a53acd92292c5f1cb926c3ee82abf70",
153469,
1386944019,
0)
return btcws.NewRedeemingTxNtfn("lalala the hex tx", nil)
},
result: &btcws.TxMinedNtfn{
TxID: "062f2b5f7d28c787e0f3aee382132241cd590efb7b83bd2c7f506de5aa4ef275",
BlockHash: "000000004811dda1c320ad5d0ea184a20a53acd92292c5f1cb926c3ee82abf70",
BlockHeight: 153469,
BlockTime: 1386944019,
Index: 0,
result: &btcws.RedeemingTxNtfn{
HexTx: "lalala the hex tx",
Block: nil,
},
},
{
name: "txspent",
name: "redeemingtx with block",
f: func() btcjson.Cmd {
return btcws.NewTxSpentNtfn(
"b22eb08001da1d57aec3131ccb46ea61820c46c71695a802585fbd56e93625a9",
1,
"0100000001a92536e956bd5f5802a89516c7460c8261ea46cb1c13c3ae571dda0180b02eb2010000006a4730440220240e3ad18a0393e9894120eb87ded8545222df4890cf98a55b5d36042c966898022031bbd795453fcd01b2a9eb30a8cbbe0ea043b7e4e85ff17ba2b44c243d14aafc0121028031f92546ff86436802fdfe07dc9e1876b70c8b8fa29ca9e9c90664d7022717ffffffff0200ab9041000000001976a91401f65945e042b5e09ecf0a9d9115adecb4caee8588ac703fbc0d040000001976a914c31a4d3e819598e55ff80601e4b2c662454385ca88ac00000000")
block := &btcws.BlockDetails{
Height: 153469,
Hash: "000000004811dda1c320ad5d0ea184a20a53acd92292c5f1cb926c3ee82abf70",
Index: 1,
Time: 1386944019,
}
return btcws.NewRedeemingTxNtfn("lalala the hex tx", block)
},
result: &btcws.TxSpentNtfn{
SpentTxId: "b22eb08001da1d57aec3131ccb46ea61820c46c71695a802585fbd56e93625a9",
SpentTxOutIndex: 1,
SpendingTx: "0100000001a92536e956bd5f5802a89516c7460c8261ea46cb1c13c3ae571dda0180b02eb2010000006a4730440220240e3ad18a0393e9894120eb87ded8545222df4890cf98a55b5d36042c966898022031bbd795453fcd01b2a9eb30a8cbbe0ea043b7e4e85ff17ba2b44c243d14aafc0121028031f92546ff86436802fdfe07dc9e1876b70c8b8fa29ca9e9c90664d7022717ffffffff0200ab9041000000001976a91401f65945e042b5e09ecf0a9d9115adecb4caee8588ac703fbc0d040000001976a914c31a4d3e819598e55ff80601e4b2c662454385ca88ac00000000",
result: &btcws.RedeemingTxNtfn{
HexTx: "lalala the hex tx",
Block: &btcws.BlockDetails{
Height: 153469,
Hash: "000000004811dda1c320ad5d0ea184a20a53acd92292c5f1cb926c3ee82abf70",
Index: 1,
Time: 1386944019,
},
},
},
{

View file

@ -1,80 +1,91 @@
github.com/conformal/btcws/cmds.go init 100.00% (11/11)
github.com/conformal/btcws/notifications.go init 100.00% (9/9)
github.com/conformal/btcws/cmds.go RescanCmd.MarshalJSON 100.00% (4/4)
github.com/conformal/btcws/cmds.go init 100.00% (16/16)
github.com/conformal/btcws/notifications.go init 100.00% (10/10)
github.com/conformal/btcws/notifications.go RedeemingTxNtfn.MarshalJSON 100.00% (6/6)
github.com/conformal/btcws/notifications.go RecvTxNtfn.MarshalJSON 100.00% (6/6)
github.com/conformal/btcws/cmds.go ListAddressTransactionsCmd.MarshalJSON 100.00% (4/4)
github.com/conformal/btcws/cmds.go ListAllTransactionsCmd.MarshalJSON 100.00% (4/4)
github.com/conformal/btcws/cmds.go RescanCmd.MarshalJSON 100.00% (4/4)
github.com/conformal/btcws/cmds.go WalletIsLockedCmd.MarshalJSON 100.00% (4/4)
github.com/conformal/btcws/cmds.go GetUnconfirmedBalanceCmd.MarshalJSON 100.00% (4/4)
github.com/conformal/btcws/cmds.go GetAddressBalanceCmd.MarshalJSON 100.00% (4/4)
github.com/conformal/btcws/cmds.go WalletIsLockedCmd.MarshalJSON 100.00% (4/4)
github.com/conformal/btcws/cmds.go ListAddressTransactionsCmd.MarshalJSON 100.00% (4/4)
github.com/conformal/btcws/notifications.go ProcessedTxNtfn.MarshalJSON 100.00% (2/2)
github.com/conformal/btcws/cmds.go CreateEncryptedWalletCmd.MarshalJSON 100.00% (2/2)
github.com/conformal/btcws/cmds.go NotifyNewTXsCmd.MarshalJSON 100.00% (2/2)
github.com/conformal/btcws/notifications.go BtcdConnectedNtfn.MarshalJSON 100.00% (2/2)
github.com/conformal/btcws/notifications.go TxSpentNtfn.MarshalJSON 100.00% (2/2)
github.com/conformal/btcws/notifications.go BlockDisconnectedNtfn.MarshalJSON 100.00% (2/2)
github.com/conformal/btcws/cmds.go GetBestBlockCmd.MarshalJSON 100.00% (2/2)
github.com/conformal/btcws/notifications.go TxMinedNtfn.MarshalJSON 100.00% (2/2)
github.com/conformal/btcws/notifications.go TxNtfn.MarshalJSON 100.00% (2/2)
github.com/conformal/btcws/notifications.go BlockConnectedNtfn.MarshalJSON 100.00% (2/2)
github.com/conformal/btcws/cmds.go NotifySpentCmd.MarshalJSON 100.00% (2/2)
github.com/conformal/btcws/cmds.go GetCurrentNetCmd.MarshalJSON 100.00% (2/2)
github.com/conformal/btcws/notifications.go WalletLockStateNtfn.MarshalJSON 100.00% (2/2)
github.com/conformal/btcws/cmds.go NotifySpentCmd.MarshalJSON 100.00% (2/2)
github.com/conformal/btcws/notifications.go AccountBalanceNtfn.MarshalJSON 100.00% (2/2)
github.com/conformal/btcws/cmds.go NotifyNewTXsCmd.Method 100.00% (1/1)
github.com/conformal/btcws/cmds.go GetBestBlockCmd.Id 100.00% (1/1)
github.com/conformal/btcws/notifications.go BtcdConnectedNtfn.MarshalJSON 100.00% (2/2)
github.com/conformal/btcws/notifications.go AllTxNtfn.MarshalJSON 100.00% (2/2)
github.com/conformal/btcws/notifications.go BlockDisconnectedNtfn.MarshalJSON 100.00% (2/2)
github.com/conformal/btcws/cmds.go GetCurrentNetCmd.MarshalJSON 100.00% (2/2)
github.com/conformal/btcws/cmds.go NotifyNewTXsCmd.MarshalJSON 100.00% (2/2)
github.com/conformal/btcws/cmds.go CreateEncryptedWalletCmd.MarshalJSON 100.00% (2/2)
github.com/conformal/btcws/notifications.go TxNtfn.MarshalJSON 100.00% (2/2)
github.com/conformal/btcws/notifications.go AllVerboseTxNtfn.MarshalJSON 100.00% (2/2)
github.com/conformal/btcws/cmds.go GetBestBlockCmd.MarshalJSON 100.00% (2/2)
github.com/conformal/btcws/cmds.go NotifyAllNewTXsCmd.MarshalJSON 100.00% (2/2)
github.com/conformal/btcws/notifications.go NewRedeemingTxNtfn 100.00% (1/1)
github.com/conformal/btcws/notifications.go RecvTxNtfn.Method 100.00% (1/1)
github.com/conformal/btcws/notifications.go RecvTxNtfn.Id 100.00% (1/1)
github.com/conformal/btcws/notifications.go NewRecvTxNtfn 100.00% (1/1)
github.com/conformal/btcws/notifications.go BtcdConnectedNtfn.Method 100.00% (1/1)
github.com/conformal/btcws/notifications.go NewBtcdConnectedNtfn 100.00% (1/1)
github.com/conformal/btcws/cmds.go GetBestBlockCmd.Method 100.00% (1/1)
github.com/conformal/btcws/notifications.go BlockDisconnectedNtfn.Method 100.00% (1/1)
github.com/conformal/btcws/cmds.go RescanCmd.Id 100.00% (1/1)
github.com/conformal/btcws/notifications.go BlockDisconnectedNtfn.Id 100.00% (1/1)
github.com/conformal/btcws/cmds.go RescanCmd.Method 100.00% (1/1)
github.com/conformal/btcws/notifications.go NewBlockDisconnectedNtfn 100.00% (1/1)
github.com/conformal/btcws/notifications.go BlockConnectedNtfn.Method 100.00% (1/1)
github.com/conformal/btcws/notifications.go BlockConnectedNtfn.Id 100.00% (1/1)
github.com/conformal/btcws/notifications.go NewBlockConnectedNtfn 100.00% (1/1)
github.com/conformal/btcws/notifications.go AccountBalanceNtfn.Method 100.00% (1/1)
github.com/conformal/btcws/notifications.go AccountBalanceNtfn.Id 100.00% (1/1)
github.com/conformal/btcws/cmds.go NewNotifyNewTXsCmd 100.00% (1/1)
github.com/conformal/btcws/notifications.go NewAccountBalanceNtfn 100.00% (1/1)
github.com/conformal/btcws/cmds.go NotifyNewTXsCmd.Id 100.00% (1/1)
github.com/conformal/btcws/cmds.go NotifyNewTXsCmd.Method 100.00% (1/1)
github.com/conformal/btcws/cmds.go NotifyAllNewTXsCmd.Id 100.00% (1/1)
github.com/conformal/btcws/cmds.go GetAddressBalanceCmd.Method 100.00% (1/1)
github.com/conformal/btcws/cmds.go NotifyAllNewTXsCmd.Method 100.00% (1/1)
github.com/conformal/btcws/cmds.go GetAddressBalanceCmd.Id 100.00% (1/1)
github.com/conformal/btcws/cmds.go NewNotifySpentCmd 100.00% (1/1)
github.com/conformal/btcws/cmds.go NotifySpentCmd.Id 100.00% (1/1)
github.com/conformal/btcws/cmds.go NotifySpentCmd.Method 100.00% (1/1)
github.com/conformal/btcws/notifications.go BlockDisconnectedNtfn.Method 100.00% (1/1)
github.com/conformal/btcws/cmds.go NewCreateEncryptedWalletCmd 100.00% (1/1)
github.com/conformal/btcws/notifications.go TxSpentNtfn.Id 100.00% (1/1)
github.com/conformal/btcws/cmds.go CreateEncryptedWalletCmd.Id 100.00% (1/1)
github.com/conformal/btcws/notifications.go TxNtfn.Method 100.00% (1/1)
github.com/conformal/btcws/cmds.go CreateEncryptedWalletCmd.Method 100.00% (1/1)
github.com/conformal/btcws/notifications.go BlockDisconnectedNtfn.Id 100.00% (1/1)
github.com/conformal/btcws/cmds.go GetCurrentNetCmd.Id 100.00% (1/1)
github.com/conformal/btcws/cmds.go NewGetCurrentNetCmd 100.00% (1/1)
github.com/conformal/btcws/cmds.go WalletIsLockedCmd.Id 100.00% (1/1)
github.com/conformal/btcws/notifications.go NewBlockDisconnectedNtfn 100.00% (1/1)
github.com/conformal/btcws/cmds.go WalletIsLockedCmd.Method 100.00% (1/1)
github.com/conformal/btcws/notifications.go NewBlockConnectedNtfn 100.00% (1/1)
github.com/conformal/btcws/notifications.go BlockConnectedNtfn.Method 100.00% (1/1)
github.com/conformal/btcws/cmds.go ListAddressTransactionsCmd.Id 100.00% (1/1)
github.com/conformal/btcws/notifications.go TxNtfn.Id 100.00% (1/1)
github.com/conformal/btcws/cmds.go ListAddressTransactionsCmd.Method 100.00% (1/1)
github.com/conformal/btcws/notifications.go BlockConnectedNtfn.Id 100.00% (1/1)
github.com/conformal/btcws/cmds.go ListAllTransactionsCmd.Id 100.00% (1/1)
github.com/conformal/btcws/notifications.go NewTxNtfn 100.00% (1/1)
github.com/conformal/btcws/cmds.go ListAllTransactionsCmd.Method 100.00% (1/1)
github.com/conformal/btcws/notifications.go TxSpentNtfn.Method 100.00% (1/1)
github.com/conformal/btcws/cmds.go GetCurrentNetCmd.Method 100.00% (1/1)
github.com/conformal/btcws/cmds.go GetAddressBalanceCmd.Id 100.00% (1/1)
github.com/conformal/btcws/notifications.go ProcessedTxNtfn.Method 100.00% (1/1)
github.com/conformal/btcws/notifications.go AccountBalanceNtfn.Method 100.00% (1/1)
github.com/conformal/btcws/notifications.go NewAccountBalanceNtfn 100.00% (1/1)
github.com/conformal/btcws/notifications.go AccountBalanceNtfn.Id 100.00% (1/1)
github.com/conformal/btcws/notifications.go TxMinedNtfn.Method 100.00% (1/1)
github.com/conformal/btcws/cmds.go GetUnconfirmedBalanceCmd.Id 100.00% (1/1)
github.com/conformal/btcws/notifications.go WalletLockStateNtfn.Method 100.00% (1/1)
github.com/conformal/btcws/cmds.go GetUnconfirmedBalanceCmd.Method 100.00% (1/1)
github.com/conformal/btcws/notifications.go TxMinedNtfn.Id 100.00% (1/1)
github.com/conformal/btcws/cmds.go NewGetBestBlockCmd 100.00% (1/1)
github.com/conformal/btcws/notifications.go WalletLockStateNtfn.Id 100.00% (1/1)
github.com/conformal/btcws/cmds.go GetBestBlockCmd.Method 100.00% (1/1)
github.com/conformal/btcws/notifications.go ProcessedTxNtfn.Id 100.00% (1/1)
github.com/conformal/btcws/notifications.go NewTxMinedNtfn 100.00% (1/1)
github.com/conformal/btcws/cmds.go RescanCmd.Id 100.00% (1/1)
github.com/conformal/btcws/notifications.go NewWalletLockStateNtfn 100.00% (1/1)
github.com/conformal/btcws/cmds.go RescanCmd.Method 100.00% (1/1)
github.com/conformal/btcws/notifications.go BtcdConnectedNtfn.Method 100.00% (1/1)
github.com/conformal/btcws/cmds.go NewNotifyNewTXsCmd 100.00% (1/1)
github.com/conformal/btcws/notifications.go NewTxSpentNtfn 100.00% (1/1)
github.com/conformal/btcws/cmds.go NotifyNewTXsCmd.Id 100.00% (1/1)
github.com/conformal/btcws/cmds.go NotifySpentCmd.Method 100.00% (1/1)
github.com/conformal/btcws/cmds.go ListAllTransactionsCmd.Id 100.00% (1/1)
github.com/conformal/btcws/cmds.go NewCreateEncryptedWalletCmd 100.00% (1/1)
github.com/conformal/btcws/cmds.go WalletIsLockedCmd.Id 100.00% (1/1)
github.com/conformal/btcws/notifications.go BtcdConnectedNtfn.Id 100.00% (1/1)
github.com/conformal/btcws/cmds.go GetAddressBalanceCmd.Method 100.00% (1/1)
github.com/conformal/btcws/cmds.go WalletIsLockedCmd.Method 100.00% (1/1)
github.com/conformal/btcws/notifications.go AllVerboseTxNtfn.Id 100.00% (1/1)
github.com/conformal/btcws/notifications.go NewAllVerboseTxNtfn 100.00% (1/1)
github.com/conformal/btcws/notifications.go AllTxNtfn.Method 100.00% (1/1)
github.com/conformal/btcws/cmds.go NewGetCurrentNetCmd 100.00% (1/1)
github.com/conformal/btcws/notifications.go AllTxNtfn.Id 100.00% (1/1)
github.com/conformal/btcws/cmds.go GetCurrentNetCmd.Id 100.00% (1/1)
github.com/conformal/btcws/notifications.go NewAllTxNtfn 100.00% (1/1)
github.com/conformal/btcws/cmds.go GetCurrentNetCmd.Method 100.00% (1/1)
github.com/conformal/btcws/notifications.go WalletLockStateNtfn.Method 100.00% (1/1)
github.com/conformal/btcws/notifications.go WalletLockStateNtfn.Id 100.00% (1/1)
github.com/conformal/btcws/notifications.go NewWalletLockStateNtfn 100.00% (1/1)
github.com/conformal/btcws/notifications.go TxNtfn.Method 100.00% (1/1)
github.com/conformal/btcws/notifications.go TxNtfn.Id 100.00% (1/1)
github.com/conformal/btcws/notifications.go NewTxNtfn 100.00% (1/1)
github.com/conformal/btcws/notifications.go generateAllVerboseTxNtfn 100.00% (1/1)
github.com/conformal/btcws/cmds.go GetUnconfirmedBalanceCmd.Id 100.00% (1/1)
github.com/conformal/btcws/cmds.go GetUnconfirmedBalanceCmd.Method 100.00% (1/1)
github.com/conformal/btcws/notifications.go RedeemingTxNtfn.Method 100.00% (1/1)
github.com/conformal/btcws/cmds.go NewGetBestBlockCmd 100.00% (1/1)
github.com/conformal/btcws/notifications.go RedeemingTxNtfn.Id 100.00% (1/1)
github.com/conformal/btcws/cmds.go GetBestBlockCmd.Id 100.00% (1/1)
github.com/conformal/btcws/cmds.go ListAddressTransactionsCmd.Method 100.00% (1/1)
github.com/conformal/btcws/notifications.go AllVerboseTxNtfn.Method 100.00% (1/1)
github.com/conformal/btcws/cmds.go ListAddressTransactionsCmd.Id 100.00% (1/1)
github.com/conformal/btcws/cmds.go CreateEncryptedWalletCmd.Id 100.00% (1/1)
github.com/conformal/btcws/cmds.go CreateEncryptedWalletCmd.Method 100.00% (1/1)
github.com/conformal/btcws/cmds.go parseListAllTransactionsCmd 87.50% (7/8)
github.com/conformal/btcws/cmds.go NewNotifyAllNewTXsCmd 85.71% (6/7)
github.com/conformal/btcws/cmds.go parseNotifyAllNewTXsCmd 85.71% (6/7)
github.com/conformal/btcws/cmds.go NewListAddressTransactionsCmd 83.33% (5/6)
github.com/conformal/btcws/cmds.go NewGetUnconfirmedBalanceCmd 83.33% (5/6)
github.com/conformal/btcws/cmds.go NewRescanCmd 83.33% (5/6)
@ -86,59 +97,91 @@ github.com/conformal/btcws/cmds.go parseListAddressTransactionsCmd 76.47% (1
github.com/conformal/btcws/cmds.go parseNotifyNewTXsCmd 75.00% (9/12)
github.com/conformal/btcws/cmds.go parseGetUnconfirmedBalanceCmd 75.00% (6/8)
github.com/conformal/btcws/cmds.go parseWalletIsLockedCmd 75.00% (6/8)
github.com/conformal/btcws/cmds.go ListAddressTransactionsCmd.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/notifications.go WalletLockStateNtfn.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/cmds.go WalletIsLockedCmd.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/cmds.go NotifyNewTXsCmd.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/notifications.go RedeemingTxNtfn.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/cmds.go CreateEncryptedWalletCmd.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/notifications.go BtcdConnectedNtfn.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/cmds.go NotifyAllNewTXsCmd.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/cmds.go GetAddressBalanceCmd.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/cmds.go NotifySpentCmd.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/notifications.go TxNtfn.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/notifications.go BlockConnectedNtfn.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/cmds.go ListAllTransactionsCmd.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/cmds.go CreateEncryptedWalletCmd.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/cmds.go NotifySpentCmd.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/cmds.go GetUnconfirmedBalanceCmd.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/notifications.go BlockDisconnectedNtfn.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/cmds.go NotifyNewTXsCmd.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/cmds.go GetAddressBalanceCmd.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/notifications.go TxNtfn.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/cmds.go RescanCmd.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/notifications.go ProcessedTxNtfn.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/cmds.go GetCurrentNetCmd.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/notifications.go TxSpentNtfn.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/notifications.go AccountBalanceNtfn.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/cmds.go parseGetAddressBalanceCmd 72.73% (8/11)
github.com/conformal/btcws/notifications.go TxMinedNtfn.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/notifications.go RecvTxNtfn.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/cmds.go GetBestBlockCmd.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/notifications.go parseProcessedTxNtfn 70.73% (29/41)
github.com/conformal/btcws/notifications.go parseTxMinedNtfn 70.00% (14/20)
github.com/conformal/btcws/cmds.go parseCreateEncryptedWalletCmd 69.23% (9/13)
github.com/conformal/btcws/cmds.go GetUnconfirmedBalanceCmd.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/notifications.go WalletLockStateNtfn.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/notifications.go AccountBalanceNtfn.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/cmds.go ListAddressTransactionsCmd.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/cmds.go parseGetAddressBalanceCmd 72.73% (8/11)
github.com/conformal/btcws/cmds.go RescanCmd.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/notifications.go BlockDisconnectedNtfn.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/cmds.go GetCurrentNetCmd.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/cmds.go WalletIsLockedCmd.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/notifications.go AllTxNtfn.UnmarshalJSON 72.73% (8/11)
github.com/conformal/btcws/notifications.go parseRedeemingTxNtfn 69.23% (18/26)
github.com/conformal/btcws/notifications.go parseRecvTxNtfn 69.23% (18/26)
github.com/conformal/btcws/cmds.go parseNotifySpentCmd 66.67% (10/15)
github.com/conformal/btcws/notifications.go parseTxSpentNtfn 66.67% (10/15)
github.com/conformal/btcws/cmds.go parseGetBestBlockCmd 66.67% (2/3)
github.com/conformal/btcws/notifications.go AllVerboseTxNtfn.UnmarshalJSON 66.67% (8/12)
github.com/conformal/btcws/cmds.go parseCreateEncryptedWalletCmd 66.67% (4/6)
github.com/conformal/btcws/cmds.go parseGetCurrentNetCmd 66.67% (2/3)
github.com/conformal/btcws/cmds.go parseGetBestBlockCmd 66.67% (2/3)
github.com/conformal/btcws/notifications.go parseAccountBalanceNtfn 64.29% (9/14)
github.com/conformal/btcws/notifications.go parseBlockConnectedNtfn 63.64% (7/11)
github.com/conformal/btcws/notifications.go parseBlockDisconnectedNtfn 63.64% (7/11)
github.com/conformal/btcws/notifications.go parseBlockConnectedNtfn 63.64% (7/11)
github.com/conformal/btcws/notifications.go parseAllTxNtfn 63.64% (7/11)
github.com/conformal/btcws/notifications.go parseTxNtfn 63.64% (7/11)
github.com/conformal/btcws/notifications.go parseWalletLockStateNtfn 63.64% (7/11)
github.com/conformal/btcws/notifications.go parseBtcdConnectedNtfn 62.50% (5/8)
github.com/conformal/btcws/notifications.go BtcdConnectedNtfn.UnmarshalJSON 45.45% (5/11)
github.com/conformal/btcws/cmds.go RescanCmd.SetId 0.00% (0/1)
github.com/conformal/btcws/cmds.go NewExportWatchingWalletCmd 0.00% (0/15)
github.com/conformal/btcws/cmds.go RecoverAddressesCmd.UnmarshalJSON 0.00% (0/11)
github.com/conformal/btcws/cmds.go NotifyBlocksCmd.UnmarshalJSON 0.00% (0/11)
github.com/conformal/btcws/cmds.go ExportWatchingWalletCmd.UnmarshalJSON 0.00% (0/11)
github.com/conformal/btcws/cmds.go AuthenticateCmd.UnmarshalJSON 0.00% (0/11)
github.com/conformal/btcws/cmds.go parseAuthenticateCmd 0.00% (0/9)
github.com/conformal/btcws/cmds.go parseRecoverAddressesCmd 0.00% (0/9)
github.com/conformal/btcws/cmds.go ExportWatchingWalletCmd.MarshalJSON 0.00% (0/6)
github.com/conformal/btcws/cmds.go parseNotifyBlocksCmd 0.00% (0/3)
github.com/conformal/btcws/cmds.go NotifyBlocksCmd.MarshalJSON 0.00% (0/2)
github.com/conformal/btcws/cmds.go RecoverAddressesCmd.MarshalJSON 0.00% (0/2)
github.com/conformal/btcws/cmds.go AuthenticateCmd.MarshalJSON 0.00% (0/2)
github.com/conformal/btcws/cmds.go GetBestBlockCmd.SetId 0.00% (0/1)
github.com/conformal/btcws/cmds.go GetUnconfirmedBalanceCmd.SetId 0.00% (0/1)
github.com/conformal/btcws/cmds.go GetAddressBalanceCmd.SetId 0.00% (0/1)
github.com/conformal/btcws/cmds.go ListAllTransactionsCmd.SetId 0.00% (0/1)
github.com/conformal/btcws/cmds.go GetCurrentNetCmd.SetId 0.00% (0/1)
github.com/conformal/btcws/cmds.go ListAddressTransactionsCmd.SetId 0.00% (0/1)
github.com/conformal/btcws/cmds.go WalletIsLockedCmd.SetId 0.00% (0/1)
github.com/conformal/btcws/cmds.go CreateEncryptedWalletCmd.SetId 0.00% (0/1)
github.com/conformal/btcws/cmds.go NewAuthenticateCmd 0.00% (0/1)
github.com/conformal/btcws/cmds.go ListAllTransactionsCmd.SetId 0.00% (0/1)
github.com/conformal/btcws/cmds.go NotifySpentCmd.SetId 0.00% (0/1)
github.com/conformal/btcws/cmds.go GetAddressBalanceCmd.SetId 0.00% (0/1)
github.com/conformal/btcws/cmds.go NotifyAllNewTXsCmd.SetId 0.00% (0/1)
github.com/conformal/btcws/cmds.go NotifyNewTXsCmd.SetId 0.00% (0/1)
github.com/conformal/btcws/notifications.go TxSpentNtfn.SetId 0.00% (0/0)
github.com/conformal/btcws/cmds.go NotifyBlocksCmd.Method 0.00% (0/1)
github.com/conformal/btcws/cmds.go NotifyBlocksCmd.SetId 0.00% (0/1)
github.com/conformal/btcws/cmds.go NotifyBlocksCmd.Id 0.00% (0/1)
github.com/conformal/btcws/cmds.go NewNotifyBlocksCmd 0.00% (0/1)
github.com/conformal/btcws/cmds.go RescanCmd.SetId 0.00% (0/1)
github.com/conformal/btcws/cmds.go RecoverAddressesCmd.Method 0.00% (0/1)
github.com/conformal/btcws/cmds.go RecoverAddressesCmd.SetId 0.00% (0/1)
github.com/conformal/btcws/cmds.go RecoverAddressesCmd.Id 0.00% (0/1)
github.com/conformal/btcws/cmds.go NewRecoverAddressesCmd 0.00% (0/1)
github.com/conformal/btcws/cmds.go GetUnconfirmedBalanceCmd.SetId 0.00% (0/1)
github.com/conformal/btcws/cmds.go ExportWatchingWalletCmd.Method 0.00% (0/1)
github.com/conformal/btcws/cmds.go ExportWatchingWalletCmd.SetId 0.00% (0/1)
github.com/conformal/btcws/cmds.go ExportWatchingWalletCmd.Id 0.00% (0/1)
github.com/conformal/btcws/cmds.go parseExportWatchingWalletCmd 0.00% (0/1)
github.com/conformal/btcws/cmds.go GetCurrentNetCmd.SetId 0.00% (0/1)
github.com/conformal/btcws/cmds.go AuthenticateCmd.Method 0.00% (0/1)
github.com/conformal/btcws/cmds.go AuthenticateCmd.SetId 0.00% (0/1)
github.com/conformal/btcws/cmds.go AuthenticateCmd.Id 0.00% (0/1)
github.com/conformal/btcws/cmds.go WalletIsLockedCmd.SetId 0.00% (0/1)
github.com/conformal/btcws/notifications.go BtcdConnectedNtfn.SetId 0.00% (0/0)
github.com/conformal/btcws/notifications.go RecvTxNtfn.SetId 0.00% (0/0)
github.com/conformal/btcws/notifications.go BlockDisconnectedNtfn.SetId 0.00% (0/0)
github.com/conformal/btcws/notifications.go BlockConnectedNtfn.SetId 0.00% (0/0)
github.com/conformal/btcws/notifications.go AccountBalanceNtfn.SetId 0.00% (0/0)
github.com/conformal/btcws/notifications.go TxNtfn.SetId 0.00% (0/0)
github.com/conformal/btcws/notifications.go BlockConnectedNtfn.SetId 0.00% (0/0)
github.com/conformal/btcws/notifications.go WalletLockStateNtfn.SetId 0.00% (0/0)
github.com/conformal/btcws/notifications.go TxMinedNtfn.SetId 0.00% (0/0)
github.com/conformal/btcws/notifications.go ProcessedTxNtfn.SetId 0.00% (0/0)
github.com/conformal/btcws ---------------------------------------- 75.85% (493/650)
github.com/conformal/btcws/notifications.go AllVerboseTxNtfn.SetId 0.00% (0/0)
github.com/conformal/btcws/notifications.go TxNtfn.SetId 0.00% (0/0)
github.com/conformal/btcws/notifications.go RedeemingTxNtfn.SetId 0.00% (0/0)
github.com/conformal/btcws/notifications.go AllTxNtfn.SetId 0.00% (0/0)
github.com/conformal/btcws ---------------------------------------- 66.67% (534/801)