You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
196 lines
6.0 KiB
196 lines
6.0 KiB
// Copyright (c) 2014 The btcsuite developers |
|
// Use of this source code is governed by an ISC |
|
// license that can be found in the LICENSE file. |
|
|
|
// NOTE: This file is intended to house the RPC websocket notifications that are |
|
// supported by a chain server. |
|
|
|
package btcjson |
|
|
|
const ( |
|
// BlockConnectedNtfnMethod is the method used for notifications from |
|
// the chain server that a block has been connected. |
|
BlockConnectedNtfnMethod = "blockconnected" |
|
|
|
// BlockDisconnectedNtfnMethod is the method used for notifications from |
|
// the chain server that a block has been disconnected. |
|
BlockDisconnectedNtfnMethod = "blockdisconnected" |
|
|
|
// RecvTxNtfnMethod is the method used for notifications from the chain |
|
// server that a transaction which pays to a registered address has been |
|
// processed. |
|
RecvTxNtfnMethod = "recvtx" |
|
|
|
// RedeemingTxNtfnMethod is the method used for notifications from the |
|
// chain server that a transaction which spends a registered outpoint |
|
// has been processed. |
|
RedeemingTxNtfnMethod = "redeemingtx" |
|
|
|
// RescanFinishedNtfnMethod is the method used for notifications from |
|
// the chain server that a rescan operation has finished. |
|
RescanFinishedNtfnMethod = "rescanfinished" |
|
|
|
// RescanProgressNtfnMethod is the method used for notifications from |
|
// the chain server that a rescan operation this is underway has made |
|
// progress. |
|
RescanProgressNtfnMethod = "rescanprogress" |
|
|
|
// TxAcceptedNtfnMethod is the method used for notifications from the |
|
// chain server that a transaction has been accepted into the mempool. |
|
TxAcceptedNtfnMethod = "txaccepted" |
|
|
|
// TxAcceptedVerboseNtfnMethod is the method used for notifications from |
|
// the chain server that a transaction has been accepted into the |
|
// mempool. This differs from TxAcceptedNtfnMethod in that it provides |
|
// more details in the notification. |
|
TxAcceptedVerboseNtfnMethod = "txacceptedverbose" |
|
) |
|
|
|
// BlockConnectedNtfn defines the blockconnected JSON-RPC notification. |
|
type BlockConnectedNtfn struct { |
|
Hash string |
|
Height int32 |
|
Time int64 |
|
} |
|
|
|
// NewBlockConnectedNtfn returns a new instance which can be used to issue a |
|
// blockconnected JSON-RPC notification. |
|
func NewBlockConnectedNtfn(hash string, height int32, time int64) *BlockConnectedNtfn { |
|
return &BlockConnectedNtfn{ |
|
Hash: hash, |
|
Height: height, |
|
Time: time, |
|
} |
|
} |
|
|
|
// BlockDisconnectedNtfn defines the blockdisconnected JSON-RPC notification. |
|
type BlockDisconnectedNtfn struct { |
|
Hash string |
|
Height int32 |
|
Time int64 |
|
} |
|
|
|
// NewBlockDisconnectedNtfn returns a new instance which can be used to issue a |
|
// blockdisconnected JSON-RPC notification. |
|
func NewBlockDisconnectedNtfn(hash string, height int32, time int64) *BlockDisconnectedNtfn { |
|
return &BlockDisconnectedNtfn{ |
|
Hash: hash, |
|
Height: height, |
|
Time: time, |
|
} |
|
} |
|
|
|
// BlockDetails describes details of a tx in a block. |
|
type BlockDetails struct { |
|
Height int32 `json:"height"` |
|
Hash string `json:"hash"` |
|
Index int `json:"index"` |
|
Time int64 `json:"time"` |
|
} |
|
|
|
// RecvTxNtfn defines the recvtx JSON-RPC notification. |
|
type RecvTxNtfn struct { |
|
HexTx string |
|
Block *BlockDetails |
|
} |
|
|
|
// NewRecvTxNtfn returns a new instance which can be used to issue a recvtx |
|
// JSON-RPC notification. |
|
func NewRecvTxNtfn(hexTx string, block *BlockDetails) *RecvTxNtfn { |
|
return &RecvTxNtfn{ |
|
HexTx: hexTx, |
|
Block: block, |
|
} |
|
} |
|
|
|
// RedeemingTxNtfn defines the redeemingtx JSON-RPC notification. |
|
type RedeemingTxNtfn struct { |
|
HexTx string |
|
Block *BlockDetails |
|
} |
|
|
|
// NewRedeemingTxNtfn returns a new instance which can be used to issue a |
|
// redeemingtx JSON-RPC notification. |
|
func NewRedeemingTxNtfn(hexTx string, block *BlockDetails) *RedeemingTxNtfn { |
|
return &RedeemingTxNtfn{ |
|
HexTx: hexTx, |
|
Block: block, |
|
} |
|
} |
|
|
|
// RescanFinishedNtfn defines the rescanfinished JSON-RPC notification. |
|
type RescanFinishedNtfn struct { |
|
Hash string |
|
Height int32 |
|
Time int64 |
|
} |
|
|
|
// NewRescanFinishedNtfn returns a new instance which can be used to issue a |
|
// rescanfinished JSON-RPC notification. |
|
func NewRescanFinishedNtfn(hash string, height int32, time int64) *RescanFinishedNtfn { |
|
return &RescanFinishedNtfn{ |
|
Hash: hash, |
|
Height: height, |
|
Time: time, |
|
} |
|
} |
|
|
|
// RescanProgressNtfn defines the rescanprogress JSON-RPC notification. |
|
type RescanProgressNtfn struct { |
|
Hash string |
|
Height int32 |
|
Time int64 |
|
} |
|
|
|
// NewRescanProgressNtfn returns a new instance which can be used to issue a |
|
// rescanprogress JSON-RPC notification. |
|
func NewRescanProgressNtfn(hash string, height int32, time int64) *RescanProgressNtfn { |
|
return &RescanProgressNtfn{ |
|
Hash: hash, |
|
Height: height, |
|
Time: time, |
|
} |
|
} |
|
|
|
// TxAcceptedNtfn defines the txaccepted JSON-RPC notification. |
|
type TxAcceptedNtfn struct { |
|
TxID string |
|
Amount float64 |
|
} |
|
|
|
// NewTxAcceptedNtfn returns a new instance which can be used to issue a |
|
// txaccepted JSON-RPC notification. |
|
func NewTxAcceptedNtfn(txHash string, amount float64) *TxAcceptedNtfn { |
|
return &TxAcceptedNtfn{ |
|
TxID: txHash, |
|
Amount: amount, |
|
} |
|
} |
|
|
|
// TxAcceptedVerboseNtfn defines the txacceptedverbose JSON-RPC notification. |
|
type TxAcceptedVerboseNtfn struct { |
|
RawTx TxRawResult |
|
} |
|
|
|
// NewTxAcceptedVerboseNtfn returns a new instance which can be used to issue a |
|
// txacceptedverbose JSON-RPC notification. |
|
func NewTxAcceptedVerboseNtfn(rawTx TxRawResult) *TxAcceptedVerboseNtfn { |
|
return &TxAcceptedVerboseNtfn{ |
|
RawTx: rawTx, |
|
} |
|
} |
|
|
|
func init() { |
|
// The commands in this file are only usable by websockets and are |
|
// notifications. |
|
flags := UFWebsocketOnly | UFNotification |
|
|
|
MustRegisterCmd(BlockConnectedNtfnMethod, (*BlockConnectedNtfn)(nil), flags) |
|
MustRegisterCmd(BlockDisconnectedNtfnMethod, (*BlockDisconnectedNtfn)(nil), flags) |
|
MustRegisterCmd(RecvTxNtfnMethod, (*RecvTxNtfn)(nil), flags) |
|
MustRegisterCmd(RedeemingTxNtfnMethod, (*RedeemingTxNtfn)(nil), flags) |
|
MustRegisterCmd(RescanFinishedNtfnMethod, (*RescanFinishedNtfn)(nil), flags) |
|
MustRegisterCmd(RescanProgressNtfnMethod, (*RescanProgressNtfn)(nil), flags) |
|
MustRegisterCmd(TxAcceptedNtfnMethod, (*TxAcceptedNtfn)(nil), flags) |
|
MustRegisterCmd(TxAcceptedVerboseNtfnMethod, (*TxAcceptedVerboseNtfn)(nil), flags) |
|
}
|
|
|