mirror of
https://github.com/LBRYFoundation/lbcd.git
synced 2025-09-02 10:15:15 +00:00
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:
parent
5c66641735
commit
bb4cba51cd
3 changed files with 373 additions and 426 deletions
464
notifications.go
464
notifications.go
|
@ -22,6 +22,14 @@ const (
|
||||||
// accountbalance notification.
|
// accountbalance notification.
|
||||||
AccountBalanceNtfnMethod = "accountbalance"
|
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
|
// BlockConnectedNtfnMethod is the method of the btcd
|
||||||
// blockconnected notification.
|
// blockconnected notification.
|
||||||
BlockConnectedNtfnMethod = "blockconnected"
|
BlockConnectedNtfnMethod = "blockconnected"
|
||||||
|
@ -34,29 +42,16 @@ const (
|
||||||
// btcdconnected notification.
|
// btcdconnected notification.
|
||||||
BtcdConnectedNtfnMethod = "btcdconnected"
|
BtcdConnectedNtfnMethod = "btcdconnected"
|
||||||
|
|
||||||
// ProcessedTxNtfnMethod is the method of the btcd
|
// RecvTxNtfnMethod is the method of the btcd recvtx notification.
|
||||||
// processedtx notification.
|
RecvTxNtfnMethod = "recvtx"
|
||||||
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"
|
|
||||||
|
|
||||||
// TxNtfnMethod is the method of the btcwallet newtx
|
// TxNtfnMethod is the method of the btcwallet newtx
|
||||||
// notification.
|
// notification.
|
||||||
TxNtfnMethod = "newtx"
|
TxNtfnMethod = "newtx"
|
||||||
|
|
||||||
// TxSpentNtfnMethod is the method of the btcd txspent
|
// RedeemingTxNtfnMethod is the method of the btcd redeemingtx
|
||||||
// notification.
|
// notification.
|
||||||
TxSpentNtfnMethod = "txspent"
|
RedeemingTxNtfnMethod = "redeemingtx"
|
||||||
|
|
||||||
// WalletLockStateNtfnMethod is the method of the btcwallet
|
// WalletLockStateNtfnMethod is the method of the btcwallet
|
||||||
// walletlockstate notification.
|
// walletlockstate notification.
|
||||||
|
@ -73,11 +68,9 @@ func init() {
|
||||||
parseBlockDisconnectedNtfn, `TODO(jrick) fillmein`)
|
parseBlockDisconnectedNtfn, `TODO(jrick) fillmein`)
|
||||||
btcjson.RegisterCustomCmd(BtcdConnectedNtfnMethod,
|
btcjson.RegisterCustomCmd(BtcdConnectedNtfnMethod,
|
||||||
parseBtcdConnectedNtfn, `TODO(jrick) fillmein`)
|
parseBtcdConnectedNtfn, `TODO(jrick) fillmein`)
|
||||||
btcjson.RegisterCustomCmd(ProcessedTxNtfnMethod,
|
btcjson.RegisterCustomCmd(RecvTxNtfnMethod,
|
||||||
parseProcessedTxNtfn, `TODO(jrick) fillmein`)
|
parseRecvTxNtfn, `TODO(jrick) fillmein`)
|
||||||
btcjson.RegisterCustomCmd(TxMinedNtfnMethod, parseTxMinedNtfn,
|
btcjson.RegisterCustomCmd(RedeemingTxNtfnMethod, parseRedeemingTxNtfn,
|
||||||
`TODO(jrick) fillmein`)
|
|
||||||
btcjson.RegisterCustomCmd(TxSpentNtfnMethod, parseTxSpentNtfn,
|
|
||||||
`TODO(jrick) fillmein`)
|
`TODO(jrick) fillmein`)
|
||||||
btcjson.RegisterCustomCmd(TxNtfnMethod, parseTxNtfn,
|
btcjson.RegisterCustomCmd(TxNtfnMethod, parseTxNtfn,
|
||||||
`TODO(jrick) fillmein`)
|
`TODO(jrick) fillmein`)
|
||||||
|
@ -89,6 +82,14 @@ func init() {
|
||||||
generateAllVerboseTxNtfn)
|
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
|
// AccountBalanceNtfn is a type handling custom marshaling and
|
||||||
// unmarshaling of accountbalance JSON websocket notifications.
|
// unmarshaling of accountbalance JSON websocket notifications.
|
||||||
type AccountBalanceNtfn struct {
|
type AccountBalanceNtfn struct {
|
||||||
|
@ -453,7 +454,7 @@ func (n *BtcdConnectedNtfn) UnmarshalJSON(b []byte) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
newNtfn, err := parseTxMinedNtfn(&r)
|
newNtfn, err := parseBtcdConnectedNtfn(&r)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -466,150 +467,136 @@ func (n *BtcdConnectedNtfn) UnmarshalJSON(b []byte) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// ProcessedTxNtfn is a type handling custom marshaling and unmarshaling
|
// RecvTxNtfn is a type handling custom marshaling and unmarshaling
|
||||||
// of processedtx JSON websocket notifications.
|
// of recvtx JSON websocket notifications.
|
||||||
type ProcessedTxNtfn struct {
|
type RecvTxNtfn struct {
|
||||||
Receiver string
|
HexTx string
|
||||||
Amount int64
|
Block *BlockDetails
|
||||||
TxID string
|
|
||||||
TxOutIndex uint32
|
|
||||||
PkScript string
|
|
||||||
BlockHash string
|
|
||||||
BlockHeight int32
|
|
||||||
BlockIndex int
|
|
||||||
BlockTime int64
|
|
||||||
Spent bool
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Enforce that ProcessedTxNtfn satisifies the btcjson.Cmd interface.
|
// Enforce that RecvTxNtfn satisifies the btcjson.Cmd interface.
|
||||||
var _ btcjson.Cmd = &ProcessedTxNtfn{}
|
var _ btcjson.Cmd = &RecvTxNtfn{}
|
||||||
|
|
||||||
// parseProcessedTxNtfn parses a RawCmd into a concrete type satisifying
|
// NewRecvTxNtfn creates a new RecvTxNtfn.
|
||||||
// the btcjson.Cmd interface. This is used when registering the notification
|
func NewRecvTxNtfn(hextx string, block *BlockDetails) *RecvTxNtfn {
|
||||||
// with the btcjson parser.
|
return &RecvTxNtfn{
|
||||||
func parseProcessedTxNtfn(r *btcjson.RawCmd) (btcjson.Cmd, error) {
|
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 {
|
if r.Id != nil {
|
||||||
return nil, ErrNotANtfn
|
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
|
return nil, btcjson.ErrWrongNumberOfParams
|
||||||
}
|
}
|
||||||
|
|
||||||
receiver, ok := r.Params[0].(string)
|
hextx, ok := r.Params[0].(string)
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, errors.New("first parameter receiver must be a string")
|
return nil, errors.New("first parameter hextx 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")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd := &ProcessedTxNtfn{
|
ntfn := &RecvTxNtfn{HexTx: hextx}
|
||||||
Receiver: receiver,
|
|
||||||
Amount: amount,
|
if len(r.Params) > 1 {
|
||||||
TxID: txid,
|
details, ok := r.Params[1].(map[string]interface{})
|
||||||
TxOutIndex: txOutIdx,
|
if !ok {
|
||||||
PkScript: pkScript,
|
return nil, errors.New("second parameter must be a JSON object")
|
||||||
BlockHash: blockHash,
|
|
||||||
BlockHeight: blockHeight,
|
|
||||||
BlockIndex: blockIndex,
|
|
||||||
BlockTime: blockTime,
|
|
||||||
Spent: spent,
|
|
||||||
}
|
}
|
||||||
return cmd, nil
|
|
||||||
|
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
|
// Id satisifies the btcjson.Cmd interface by returning nil for a
|
||||||
// notification ID.
|
// notification ID.
|
||||||
func (n *ProcessedTxNtfn) Id() interface{} {
|
func (n *RecvTxNtfn) Id() interface{} {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetId is implemented to satisify the btcjson.Cmd interface. The
|
// SetId is implemented to satisify the btcjson.Cmd interface. The
|
||||||
// notification id is not modified.
|
// 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
|
// Method satisifies the btcjson.Cmd interface by returning the method
|
||||||
// of the notification.
|
// of the notification.
|
||||||
func (n *ProcessedTxNtfn) Method() string {
|
func (n *RecvTxNtfn) Method() string {
|
||||||
return ProcessedTxNtfnMethod
|
return RecvTxNtfnMethod
|
||||||
}
|
}
|
||||||
|
|
||||||
// MarshalJSON returns the JSON encoding of n. Part of the btcjson.Cmd
|
// MarshalJSON returns the JSON encoding of n. Part of the btcjson.Cmd
|
||||||
// interface.
|
// 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{
|
ntfn := btcjson.Message{
|
||||||
Jsonrpc: "1.0",
|
Jsonrpc: "1.0",
|
||||||
Method: n.Method(),
|
Method: n.Method(),
|
||||||
Params: []interface{}{
|
Params: params,
|
||||||
n.Receiver,
|
|
||||||
n.Amount,
|
|
||||||
n.TxID,
|
|
||||||
n.TxOutIndex,
|
|
||||||
n.PkScript,
|
|
||||||
n.BlockHash,
|
|
||||||
n.BlockHeight,
|
|
||||||
n.BlockIndex,
|
|
||||||
n.BlockTime,
|
|
||||||
n.Spent,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return json.Marshal(ntfn)
|
return json.Marshal(ntfn)
|
||||||
}
|
}
|
||||||
|
|
||||||
// UnmarshalJSON unmarshals the JSON encoding of n into n. Part of
|
// UnmarshalJSON unmarshals the JSON encoding of n into n. Part of
|
||||||
// the btcjson.Cmd interface.
|
// the btcjson.Cmd interface.
|
||||||
func (n *ProcessedTxNtfn) UnmarshalJSON(b []byte) error {
|
func (n *RecvTxNtfn) UnmarshalJSON(b []byte) error {
|
||||||
// Unmarshal into a RawCmd.
|
// Unmarshal into a RawCmd.
|
||||||
var r btcjson.RawCmd
|
var r btcjson.RawCmd
|
||||||
if err := json.Unmarshal(b, &r); err != nil {
|
if err := json.Unmarshal(b, &r); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
newNtfn, err := parseProcessedTxNtfn(&r)
|
newNtfn, err := parseRecvTxNtfn(&r)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
concreteNtfn, ok := newNtfn.(*ProcessedTxNtfn)
|
concreteNtfn, ok := newNtfn.(*RecvTxNtfn)
|
||||||
if !ok {
|
if !ok {
|
||||||
return btcjson.ErrInternal
|
return btcjson.ErrInternal
|
||||||
}
|
}
|
||||||
|
@ -617,117 +604,136 @@ func (n *ProcessedTxNtfn) UnmarshalJSON(b []byte) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// TxMinedNtfn is a type handling custom marshaling and
|
// RedeemingTxNtfn is a type handling custom marshaling and unmarshaling
|
||||||
// unmarshaling of txmined JSON websocket notifications.
|
// of redeemingtx JSON websocket notifications.
|
||||||
type TxMinedNtfn struct {
|
type RedeemingTxNtfn struct {
|
||||||
TxID string
|
HexTx string
|
||||||
BlockHash string
|
Block *BlockDetails
|
||||||
BlockHeight int32
|
|
||||||
BlockTime int64
|
|
||||||
Index int
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Enforce that TxMinedNtfn satisifies the btcjson.Cmd interface.
|
// Enforce that RedeemingTxNtfn satisifies the btcjson.Cmd interface.
|
||||||
var _ btcjson.Cmd = &TxMinedNtfn{}
|
var _ btcjson.Cmd = &RedeemingTxNtfn{}
|
||||||
|
|
||||||
// NewTxMinedNtfn creates a new TxMinedNtfn.
|
// NewRedeemingTxNtfn creates a new RedeemingTxNtfn.
|
||||||
func NewTxMinedNtfn(txid, blockhash string, blockheight int32,
|
func NewRedeemingTxNtfn(hextx string, block *BlockDetails) *RedeemingTxNtfn {
|
||||||
blocktime int64, index int) *TxMinedNtfn {
|
return &RedeemingTxNtfn{
|
||||||
|
HexTx: hextx,
|
||||||
return &TxMinedNtfn{
|
Block: block,
|
||||||
TxID: txid,
|
|
||||||
BlockHash: blockhash,
|
|
||||||
BlockHeight: blockheight,
|
|
||||||
BlockTime: blocktime,
|
|
||||||
Index: index,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// parseTxMinedNtfn parses a RawCmd into a concrete type satisifying
|
// parseRedeemingTxNtfn parses a RawCmd into a concrete type satisifying the
|
||||||
// the btcjson.Cmd interface. This is used when registering the notification
|
// btcjson.Cmd interface. This is used when registering the notification with
|
||||||
// with the btcjson parser.
|
// the btcjson parser.
|
||||||
func parseTxMinedNtfn(r *btcjson.RawCmd) (btcjson.Cmd, error) {
|
func parseRedeemingTxNtfn(r *btcjson.RawCmd) (btcjson.Cmd, error) {
|
||||||
if r.Id != nil {
|
if r.Id != nil {
|
||||||
return nil, ErrNotANtfn
|
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
|
return nil, btcjson.ErrWrongNumberOfParams
|
||||||
}
|
}
|
||||||
|
|
||||||
txid, ok := r.Params[0].(string)
|
hextx, ok := r.Params[0].(string)
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, errors.New("first parameter txid must be a string")
|
return nil, errors.New("first parameter hextx 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 NewTxMinedNtfn(txid, blockhash, int32(fblockheight),
|
ntfn := &RedeemingTxNtfn{HexTx: hextx}
|
||||||
int64(fblocktime), int(findex)), nil
|
|
||||||
|
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
|
// Id satisifies the btcjson.Cmd interface by returning nil for a
|
||||||
// notification ID.
|
// notification ID.
|
||||||
func (n *TxMinedNtfn) Id() interface{} {
|
func (n *RedeemingTxNtfn) Id() interface{} {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetId is implemented to satisify the btcjson.Cmd interface. The
|
// SetId is implemented to satisify the btcjson.Cmd interface. The
|
||||||
// notification id is not modified.
|
// 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
|
// Method satisifies the btcjson.Cmd interface by returning the method
|
||||||
// of the notification.
|
// of the notification.
|
||||||
func (n *TxMinedNtfn) Method() string {
|
func (n *RedeemingTxNtfn) Method() string {
|
||||||
return TxMinedNtfnMethod
|
return RedeemingTxNtfnMethod
|
||||||
}
|
}
|
||||||
|
|
||||||
// MarshalJSON returns the JSON encoding of n. Part of the btcjson.Cmd
|
// MarshalJSON returns the JSON encoding of n. Part of the btcjson.Cmd
|
||||||
// interface.
|
// 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{
|
ntfn := btcjson.Message{
|
||||||
Jsonrpc: "1.0",
|
Jsonrpc: "1.0",
|
||||||
Method: n.Method(),
|
Method: n.Method(),
|
||||||
Params: []interface{}{
|
Params: params,
|
||||||
n.TxID,
|
|
||||||
n.BlockHash,
|
|
||||||
n.BlockHeight,
|
|
||||||
n.BlockTime,
|
|
||||||
n.Index,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return json.Marshal(ntfn)
|
return json.Marshal(ntfn)
|
||||||
}
|
}
|
||||||
|
|
||||||
// UnmarshalJSON unmarshals the JSON encoding of n into n. Part of
|
// UnmarshalJSON unmarshals the JSON encoding of n into n. Part of
|
||||||
// the btcjson.Cmd interface.
|
// the btcjson.Cmd interface.
|
||||||
func (n *TxMinedNtfn) UnmarshalJSON(b []byte) error {
|
func (n *RedeemingTxNtfn) UnmarshalJSON(b []byte) error {
|
||||||
// Unmarshal into a RawCmd.
|
// Unmarshal into a RawCmd.
|
||||||
var r btcjson.RawCmd
|
var r btcjson.RawCmd
|
||||||
if err := json.Unmarshal(b, &r); err != nil {
|
if err := json.Unmarshal(b, &r); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
newNtfn, err := parseTxMinedNtfn(&r)
|
newNtfn, err := parseRedeemingTxNtfn(&r)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
concreteNtfn, ok := newNtfn.(*TxMinedNtfn)
|
concreteNtfn, ok := newNtfn.(*RedeemingTxNtfn)
|
||||||
if !ok {
|
if !ok {
|
||||||
return btcjson.ErrInternal
|
return btcjson.ErrInternal
|
||||||
}
|
}
|
||||||
|
@ -742,108 +748,6 @@ type TxNtfn struct {
|
||||||
Details map[string]interface{}
|
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.
|
// Enforce that TxNtfn satisifies the btcjson.Cmd interface.
|
||||||
var _ btcjson.Cmd = &TxNtfn{}
|
var _ btcjson.Cmd = &TxNtfn{}
|
||||||
|
|
||||||
|
|
|
@ -62,65 +62,65 @@ var ntfntests = []struct {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "processedtx",
|
name: "recvtx no block",
|
||||||
f: func() btcjson.Cmd {
|
f: func() btcjson.Cmd {
|
||||||
cmd := &btcws.ProcessedTxNtfn{
|
return btcws.NewRecvTxNtfn("lalala the hex tx", nil)
|
||||||
Receiver: "miFxiuApPo3KBqtMnPUjasZmHoVnoH3Eoc",
|
},
|
||||||
Amount: 200000000,
|
result: &btcws.RecvTxNtfn{
|
||||||
TxID: "851f5c0652e785c5ed80aafaf2d918e5cbe5c307dbba3680808ada1d01f36886",
|
HexTx: "lalala the hex tx",
|
||||||
TxOutIndex: 1,
|
Block: nil,
|
||||||
PkScript: "76a9141e127eda7cd71b9724085f588840a3e9d697ae9888ac",
|
},
|
||||||
BlockHash: "000000004811dda1c320ad5d0ea184a20a53acd92292c5f1cb926c3ee82abf70",
|
},
|
||||||
BlockHeight: 153469,
|
{
|
||||||
BlockIndex: 1,
|
name: "recvtx with block",
|
||||||
BlockTime: 1386944019,
|
f: func() btcjson.Cmd {
|
||||||
Spent: true,
|
block := &btcws.BlockDetails{
|
||||||
|
Height: 153469,
|
||||||
|
Hash: "000000004811dda1c320ad5d0ea184a20a53acd92292c5f1cb926c3ee82abf70",
|
||||||
|
Index: 1,
|
||||||
|
Time: 1386944019,
|
||||||
}
|
}
|
||||||
return cmd
|
return btcws.NewRecvTxNtfn("lalala the hex tx", block)
|
||||||
|
},
|
||||||
|
result: &btcws.RecvTxNtfn{
|
||||||
|
HexTx: "lalala the hex tx",
|
||||||
|
Block: &btcws.BlockDetails{
|
||||||
|
Height: 153469,
|
||||||
|
Hash: "000000004811dda1c320ad5d0ea184a20a53acd92292c5f1cb926c3ee82abf70",
|
||||||
|
Index: 1,
|
||||||
|
Time: 1386944019,
|
||||||
},
|
},
|
||||||
result: &btcws.ProcessedTxNtfn{
|
|
||||||
Receiver: "miFxiuApPo3KBqtMnPUjasZmHoVnoH3Eoc",
|
|
||||||
Amount: 200000000,
|
|
||||||
TxID: "851f5c0652e785c5ed80aafaf2d918e5cbe5c307dbba3680808ada1d01f36886",
|
|
||||||
TxOutIndex: 1,
|
|
||||||
PkScript: "76a9141e127eda7cd71b9724085f588840a3e9d697ae9888ac",
|
|
||||||
BlockHash: "000000004811dda1c320ad5d0ea184a20a53acd92292c5f1cb926c3ee82abf70",
|
|
||||||
BlockHeight: 153469,
|
|
||||||
BlockIndex: 1,
|
|
||||||
BlockTime: 1386944019,
|
|
||||||
Spent: true,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "txmined",
|
name: "redeemingtx",
|
||||||
f: func() btcjson.Cmd {
|
f: func() btcjson.Cmd {
|
||||||
return btcws.NewTxMinedNtfn(
|
return btcws.NewRedeemingTxNtfn("lalala the hex tx", nil)
|
||||||
"062f2b5f7d28c787e0f3aee382132241cd590efb7b83bd2c7f506de5aa4ef275",
|
|
||||||
"000000004811dda1c320ad5d0ea184a20a53acd92292c5f1cb926c3ee82abf70",
|
|
||||||
153469,
|
|
||||||
1386944019,
|
|
||||||
0)
|
|
||||||
},
|
},
|
||||||
result: &btcws.TxMinedNtfn{
|
result: &btcws.RedeemingTxNtfn{
|
||||||
TxID: "062f2b5f7d28c787e0f3aee382132241cd590efb7b83bd2c7f506de5aa4ef275",
|
HexTx: "lalala the hex tx",
|
||||||
BlockHash: "000000004811dda1c320ad5d0ea184a20a53acd92292c5f1cb926c3ee82abf70",
|
Block: nil,
|
||||||
BlockHeight: 153469,
|
|
||||||
BlockTime: 1386944019,
|
|
||||||
Index: 0,
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "txspent",
|
name: "redeemingtx with block",
|
||||||
f: func() btcjson.Cmd {
|
f: func() btcjson.Cmd {
|
||||||
return btcws.NewTxSpentNtfn(
|
block := &btcws.BlockDetails{
|
||||||
"b22eb08001da1d57aec3131ccb46ea61820c46c71695a802585fbd56e93625a9",
|
Height: 153469,
|
||||||
1,
|
Hash: "000000004811dda1c320ad5d0ea184a20a53acd92292c5f1cb926c3ee82abf70",
|
||||||
"0100000001a92536e956bd5f5802a89516c7460c8261ea46cb1c13c3ae571dda0180b02eb2010000006a4730440220240e3ad18a0393e9894120eb87ded8545222df4890cf98a55b5d36042c966898022031bbd795453fcd01b2a9eb30a8cbbe0ea043b7e4e85ff17ba2b44c243d14aafc0121028031f92546ff86436802fdfe07dc9e1876b70c8b8fa29ca9e9c90664d7022717ffffffff0200ab9041000000001976a91401f65945e042b5e09ecf0a9d9115adecb4caee8588ac703fbc0d040000001976a914c31a4d3e819598e55ff80601e4b2c662454385ca88ac00000000")
|
Index: 1,
|
||||||
|
Time: 1386944019,
|
||||||
|
}
|
||||||
|
return btcws.NewRedeemingTxNtfn("lalala the hex tx", block)
|
||||||
|
},
|
||||||
|
result: &btcws.RedeemingTxNtfn{
|
||||||
|
HexTx: "lalala the hex tx",
|
||||||
|
Block: &btcws.BlockDetails{
|
||||||
|
Height: 153469,
|
||||||
|
Hash: "000000004811dda1c320ad5d0ea184a20a53acd92292c5f1cb926c3ee82abf70",
|
||||||
|
Index: 1,
|
||||||
|
Time: 1386944019,
|
||||||
},
|
},
|
||||||
result: &btcws.TxSpentNtfn{
|
|
||||||
SpentTxId: "b22eb08001da1d57aec3131ccb46ea61820c46c71695a802585fbd56e93625a9",
|
|
||||||
SpentTxOutIndex: 1,
|
|
||||||
SpendingTx: "0100000001a92536e956bd5f5802a89516c7460c8261ea46cb1c13c3ae571dda0180b02eb2010000006a4730440220240e3ad18a0393e9894120eb87ded8545222df4890cf98a55b5d36042c966898022031bbd795453fcd01b2a9eb30a8cbbe0ea043b7e4e85ff17ba2b44c243d14aafc0121028031f92546ff86436802fdfe07dc9e1876b70c8b8fa29ca9e9c90664d7022717ffffffff0200ab9041000000001976a91401f65945e042b5e09ecf0a9d9115adecb4caee8588ac703fbc0d040000001976a914c31a4d3e819598e55ff80601e4b2c662454385ca88ac00000000",
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,80 +1,91 @@
|
||||||
|
|
||||||
github.com/conformal/btcws/cmds.go init 100.00% (11/11)
|
github.com/conformal/btcws/cmds.go init 100.00% (16/16)
|
||||||
github.com/conformal/btcws/notifications.go init 100.00% (9/9)
|
github.com/conformal/btcws/notifications.go init 100.00% (10/10)
|
||||||
github.com/conformal/btcws/cmds.go RescanCmd.MarshalJSON 100.00% (4/4)
|
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 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 GetUnconfirmedBalanceCmd.MarshalJSON 100.00% (4/4)
|
||||||
github.com/conformal/btcws/cmds.go GetAddressBalanceCmd.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/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/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/notifications.go AccountBalanceNtfn.MarshalJSON 100.00% (2/2)
|
||||||
github.com/conformal/btcws/cmds.go NotifyNewTXsCmd.Method 100.00% (1/1)
|
github.com/conformal/btcws/notifications.go BtcdConnectedNtfn.MarshalJSON 100.00% (2/2)
|
||||||
github.com/conformal/btcws/cmds.go GetBestBlockCmd.Id 100.00% (1/1)
|
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/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 NewNotifySpentCmd 100.00% (1/1)
|
||||||
github.com/conformal/btcws/cmds.go NotifySpentCmd.Id 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/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 NotifySpentCmd.Method 100.00% (1/1)
|
||||||
github.com/conformal/btcws/cmds.go GetCurrentNetCmd.Method 100.00% (1/1)
|
github.com/conformal/btcws/cmds.go ListAllTransactionsCmd.Id 100.00% (1/1)
|
||||||
github.com/conformal/btcws/cmds.go GetAddressBalanceCmd.Id 100.00% (1/1)
|
github.com/conformal/btcws/cmds.go NewCreateEncryptedWalletCmd 100.00% (1/1)
|
||||||
github.com/conformal/btcws/notifications.go ProcessedTxNtfn.Method 100.00% (1/1)
|
github.com/conformal/btcws/cmds.go WalletIsLockedCmd.Id 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/notifications.go BtcdConnectedNtfn.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 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 NewListAddressTransactionsCmd 83.33% (5/6)
|
||||||
github.com/conformal/btcws/cmds.go NewGetUnconfirmedBalanceCmd 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)
|
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 parseNotifyNewTXsCmd 75.00% (9/12)
|
||||||
github.com/conformal/btcws/cmds.go parseGetUnconfirmedBalanceCmd 75.00% (6/8)
|
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 parseWalletIsLockedCmd 75.00% (6/8)
|
||||||
github.com/conformal/btcws/cmds.go ListAddressTransactionsCmd.UnmarshalJSON 72.73% (8/11)
|
github.com/conformal/btcws/cmds.go NotifyNewTXsCmd.UnmarshalJSON 72.73% (8/11)
|
||||||
github.com/conformal/btcws/notifications.go WalletLockStateNtfn.UnmarshalJSON 72.73% (8/11)
|
github.com/conformal/btcws/notifications.go RedeemingTxNtfn.UnmarshalJSON 72.73% (8/11)
|
||||||
github.com/conformal/btcws/cmds.go WalletIsLockedCmd.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/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 ListAllTransactionsCmd.UnmarshalJSON 72.73% (8/11)
|
||||||
github.com/conformal/btcws/cmds.go CreateEncryptedWalletCmd.UnmarshalJSON 72.73% (8/11)
|
github.com/conformal/btcws/notifications.go RecvTxNtfn.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/cmds.go GetBestBlockCmd.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/cmds.go GetUnconfirmedBalanceCmd.UnmarshalJSON 72.73% (8/11)
|
||||||
github.com/conformal/btcws/notifications.go parseTxMinedNtfn 70.00% (14/20)
|
github.com/conformal/btcws/notifications.go WalletLockStateNtfn.UnmarshalJSON 72.73% (8/11)
|
||||||
github.com/conformal/btcws/cmds.go parseCreateEncryptedWalletCmd 69.23% (9/13)
|
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/cmds.go parseNotifySpentCmd 66.67% (10/15)
|
||||||
github.com/conformal/btcws/notifications.go parseTxSpentNtfn 66.67% (10/15)
|
github.com/conformal/btcws/notifications.go AllVerboseTxNtfn.UnmarshalJSON 66.67% (8/12)
|
||||||
github.com/conformal/btcws/cmds.go parseGetBestBlockCmd 66.67% (2/3)
|
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 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 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 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 parseTxNtfn 63.64% (7/11)
|
||||||
github.com/conformal/btcws/notifications.go parseWalletLockStateNtfn 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 parseBtcdConnectedNtfn 62.50% (5/8)
|
||||||
github.com/conformal/btcws/notifications.go BtcdConnectedNtfn.UnmarshalJSON 45.45% (5/11)
|
github.com/conformal/btcws/cmds.go NewExportWatchingWalletCmd 0.00% (0/15)
|
||||||
github.com/conformal/btcws/cmds.go RescanCmd.SetId 0.00% (0/1)
|
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 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 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 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 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/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 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 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 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 WalletLockStateNtfn.SetId 0.00% (0/0)
|
||||||
github.com/conformal/btcws/notifications.go TxMinedNtfn.SetId 0.00% (0/0)
|
github.com/conformal/btcws/notifications.go AllVerboseTxNtfn.SetId 0.00% (0/0)
|
||||||
github.com/conformal/btcws/notifications.go ProcessedTxNtfn.SetId 0.00% (0/0)
|
github.com/conformal/btcws/notifications.go TxNtfn.SetId 0.00% (0/0)
|
||||||
github.com/conformal/btcws ---------------------------------------- 75.85% (493/650)
|
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)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue