github.com/palcoin-project/palcd@v1.0.0/btcjson/chainsvrwsntfns.go (about)

     1  // Copyright (c) 2014-2017 The btcsuite developers
     2  // Copyright (c) 2015-2017 The Decred developers
     3  // Use of this source code is governed by an ISC
     4  // license that can be found in the LICENSE file.
     5  
     6  // NOTE: This file is intended to house the RPC websocket notifications that are
     7  // supported by a chain server.
     8  
     9  package btcjson
    10  
    11  const (
    12  	// BlockConnectedNtfnMethod is the legacy, deprecated method used for
    13  	// notifications from the chain server that a block has been connected.
    14  	//
    15  	// Deprecated: Use FilteredBlockConnectedNtfnMethod instead.
    16  	BlockConnectedNtfnMethod = "blockconnected"
    17  
    18  	// BlockDisconnectedNtfnMethod is the legacy, deprecated method used for
    19  	// notifications from the chain server that a block has been
    20  	// disconnected.
    21  	//
    22  	// Deprecated: Use FilteredBlockDisconnectedNtfnMethod instead.
    23  	BlockDisconnectedNtfnMethod = "blockdisconnected"
    24  
    25  	// FilteredBlockConnectedNtfnMethod is the new method used for
    26  	// notifications from the chain server that a block has been connected.
    27  	FilteredBlockConnectedNtfnMethod = "filteredblockconnected"
    28  
    29  	// FilteredBlockDisconnectedNtfnMethod is the new method used for
    30  	// notifications from the chain server that a block has been
    31  	// disconnected.
    32  	FilteredBlockDisconnectedNtfnMethod = "filteredblockdisconnected"
    33  
    34  	// RecvTxNtfnMethod is the legacy, deprecated method used for
    35  	// notifications from the chain server that a transaction which pays to
    36  	// a registered address has been processed.
    37  	//
    38  	// Deprecated: Use RelevantTxAcceptedNtfnMethod and
    39  	// FilteredBlockConnectedNtfnMethod instead.
    40  	RecvTxNtfnMethod = "recvtx"
    41  
    42  	// RedeemingTxNtfnMethod is the legacy, deprecated method used for
    43  	// notifications from the chain server that a transaction which spends a
    44  	// registered outpoint has been processed.
    45  	//
    46  	// Deprecated: Use RelevantTxAcceptedNtfnMethod and
    47  	// FilteredBlockConnectedNtfnMethod instead.
    48  	RedeemingTxNtfnMethod = "redeemingtx"
    49  
    50  	// RescanFinishedNtfnMethod is the legacy, deprecated method used for
    51  	// notifications from the chain server that a legacy, deprecated rescan
    52  	// operation has finished.
    53  	//
    54  	// Deprecated: Not used with rescanblocks command.
    55  	RescanFinishedNtfnMethod = "rescanfinished"
    56  
    57  	// RescanProgressNtfnMethod is the legacy, deprecated method used for
    58  	// notifications from the chain server that a legacy, deprecated rescan
    59  	// operation this is underway has made progress.
    60  	//
    61  	// Deprecated: Not used with rescanblocks command.
    62  	RescanProgressNtfnMethod = "rescanprogress"
    63  
    64  	// TxAcceptedNtfnMethod is the method used for notifications from the
    65  	// chain server that a transaction has been accepted into the mempool.
    66  	TxAcceptedNtfnMethod = "txaccepted"
    67  
    68  	// TxAcceptedVerboseNtfnMethod is the method used for notifications from
    69  	// the chain server that a transaction has been accepted into the
    70  	// mempool.  This differs from TxAcceptedNtfnMethod in that it provides
    71  	// more details in the notification.
    72  	TxAcceptedVerboseNtfnMethod = "txacceptedverbose"
    73  
    74  	// RelevantTxAcceptedNtfnMethod is the new method used for notifications
    75  	// from the chain server that inform a client that a transaction that
    76  	// matches the loaded filter was accepted by the mempool.
    77  	RelevantTxAcceptedNtfnMethod = "relevanttxaccepted"
    78  )
    79  
    80  // BlockConnectedNtfn defines the blockconnected JSON-RPC notification.
    81  //
    82  // Deprecated: Use FilteredBlockConnectedNtfn instead.
    83  type BlockConnectedNtfn struct {
    84  	Hash   string
    85  	Height int32
    86  	Time   int64
    87  }
    88  
    89  // NewBlockConnectedNtfn returns a new instance which can be used to issue a
    90  // blockconnected JSON-RPC notification.
    91  //
    92  // Deprecated: Use NewFilteredBlockConnectedNtfn instead.
    93  func NewBlockConnectedNtfn(hash string, height int32, time int64) *BlockConnectedNtfn {
    94  	return &BlockConnectedNtfn{
    95  		Hash:   hash,
    96  		Height: height,
    97  		Time:   time,
    98  	}
    99  }
   100  
   101  // BlockDisconnectedNtfn defines the blockdisconnected JSON-RPC notification.
   102  //
   103  // Deprecated: Use FilteredBlockDisconnectedNtfn instead.
   104  type BlockDisconnectedNtfn struct {
   105  	Hash   string
   106  	Height int32
   107  	Time   int64
   108  }
   109  
   110  // NewBlockDisconnectedNtfn returns a new instance which can be used to issue a
   111  // blockdisconnected JSON-RPC notification.
   112  //
   113  // Deprecated: Use NewFilteredBlockDisconnectedNtfn instead.
   114  func NewBlockDisconnectedNtfn(hash string, height int32, time int64) *BlockDisconnectedNtfn {
   115  	return &BlockDisconnectedNtfn{
   116  		Hash:   hash,
   117  		Height: height,
   118  		Time:   time,
   119  	}
   120  }
   121  
   122  // FilteredBlockConnectedNtfn defines the filteredblockconnected JSON-RPC
   123  // notification.
   124  type FilteredBlockConnectedNtfn struct {
   125  	Height        int32
   126  	Header        string
   127  	SubscribedTxs []string
   128  }
   129  
   130  // NewFilteredBlockConnectedNtfn returns a new instance which can be used to
   131  // issue a filteredblockconnected JSON-RPC notification.
   132  func NewFilteredBlockConnectedNtfn(height int32, header string, subscribedTxs []string) *FilteredBlockConnectedNtfn {
   133  	return &FilteredBlockConnectedNtfn{
   134  		Height:        height,
   135  		Header:        header,
   136  		SubscribedTxs: subscribedTxs,
   137  	}
   138  }
   139  
   140  // FilteredBlockDisconnectedNtfn defines the filteredblockdisconnected JSON-RPC
   141  // notification.
   142  type FilteredBlockDisconnectedNtfn struct {
   143  	Height int32
   144  	Header string
   145  }
   146  
   147  // NewFilteredBlockDisconnectedNtfn returns a new instance which can be used to
   148  // issue a filteredblockdisconnected JSON-RPC notification.
   149  func NewFilteredBlockDisconnectedNtfn(height int32, header string) *FilteredBlockDisconnectedNtfn {
   150  	return &FilteredBlockDisconnectedNtfn{
   151  		Height: height,
   152  		Header: header,
   153  	}
   154  }
   155  
   156  // BlockDetails describes details of a tx in a block.
   157  type BlockDetails struct {
   158  	Height int32  `json:"height"`
   159  	Hash   string `json:"hash"`
   160  	Index  int    `json:"index"`
   161  	Time   int64  `json:"time"`
   162  }
   163  
   164  // RecvTxNtfn defines the recvtx JSON-RPC notification.
   165  //
   166  // Deprecated: Use RelevantTxAcceptedNtfn and FilteredBlockConnectedNtfn
   167  // instead.
   168  type RecvTxNtfn struct {
   169  	HexTx string
   170  	Block *BlockDetails
   171  }
   172  
   173  // NewRecvTxNtfn returns a new instance which can be used to issue a recvtx
   174  // JSON-RPC notification.
   175  //
   176  // Deprecated: Use NewRelevantTxAcceptedNtfn and
   177  // NewFilteredBlockConnectedNtfn instead.
   178  func NewRecvTxNtfn(hexTx string, block *BlockDetails) *RecvTxNtfn {
   179  	return &RecvTxNtfn{
   180  		HexTx: hexTx,
   181  		Block: block,
   182  	}
   183  }
   184  
   185  // RedeemingTxNtfn defines the redeemingtx JSON-RPC notification.
   186  //
   187  // Deprecated: Use RelevantTxAcceptedNtfn and FilteredBlockConnectedNtfn
   188  // instead.
   189  type RedeemingTxNtfn struct {
   190  	HexTx string
   191  	Block *BlockDetails
   192  }
   193  
   194  // NewRedeemingTxNtfn returns a new instance which can be used to issue a
   195  // redeemingtx JSON-RPC notification.
   196  //
   197  // Deprecated: Use NewRelevantTxAcceptedNtfn and
   198  // NewFilteredBlockConnectedNtfn instead.
   199  func NewRedeemingTxNtfn(hexTx string, block *BlockDetails) *RedeemingTxNtfn {
   200  	return &RedeemingTxNtfn{
   201  		HexTx: hexTx,
   202  		Block: block,
   203  	}
   204  }
   205  
   206  // RescanFinishedNtfn defines the rescanfinished JSON-RPC notification.
   207  //
   208  // Deprecated: Not used with rescanblocks command.
   209  type RescanFinishedNtfn struct {
   210  	Hash   string
   211  	Height int32
   212  	Time   int64
   213  }
   214  
   215  // NewRescanFinishedNtfn returns a new instance which can be used to issue a
   216  // rescanfinished JSON-RPC notification.
   217  //
   218  // Deprecated: Not used with rescanblocks command.
   219  func NewRescanFinishedNtfn(hash string, height int32, time int64) *RescanFinishedNtfn {
   220  	return &RescanFinishedNtfn{
   221  		Hash:   hash,
   222  		Height: height,
   223  		Time:   time,
   224  	}
   225  }
   226  
   227  // RescanProgressNtfn defines the rescanprogress JSON-RPC notification.
   228  //
   229  // Deprecated: Not used with rescanblocks command.
   230  type RescanProgressNtfn struct {
   231  	Hash   string
   232  	Height int32
   233  	Time   int64
   234  }
   235  
   236  // NewRescanProgressNtfn returns a new instance which can be used to issue a
   237  // rescanprogress JSON-RPC notification.
   238  //
   239  // Deprecated: Not used with rescanblocks command.
   240  func NewRescanProgressNtfn(hash string, height int32, time int64) *RescanProgressNtfn {
   241  	return &RescanProgressNtfn{
   242  		Hash:   hash,
   243  		Height: height,
   244  		Time:   time,
   245  	}
   246  }
   247  
   248  // TxAcceptedNtfn defines the txaccepted JSON-RPC notification.
   249  type TxAcceptedNtfn struct {
   250  	TxID   string
   251  	Amount float64
   252  }
   253  
   254  // NewTxAcceptedNtfn returns a new instance which can be used to issue a
   255  // txaccepted JSON-RPC notification.
   256  func NewTxAcceptedNtfn(txHash string, amount float64) *TxAcceptedNtfn {
   257  	return &TxAcceptedNtfn{
   258  		TxID:   txHash,
   259  		Amount: amount,
   260  	}
   261  }
   262  
   263  // TxAcceptedVerboseNtfn defines the txacceptedverbose JSON-RPC notification.
   264  type TxAcceptedVerboseNtfn struct {
   265  	RawTx TxRawResult
   266  }
   267  
   268  // NewTxAcceptedVerboseNtfn returns a new instance which can be used to issue a
   269  // txacceptedverbose JSON-RPC notification.
   270  func NewTxAcceptedVerboseNtfn(rawTx TxRawResult) *TxAcceptedVerboseNtfn {
   271  	return &TxAcceptedVerboseNtfn{
   272  		RawTx: rawTx,
   273  	}
   274  }
   275  
   276  // RelevantTxAcceptedNtfn defines the parameters to the relevanttxaccepted
   277  // JSON-RPC notification.
   278  type RelevantTxAcceptedNtfn struct {
   279  	Transaction string `json:"transaction"`
   280  }
   281  
   282  // NewRelevantTxAcceptedNtfn returns a new instance which can be used to issue a
   283  // relevantxaccepted JSON-RPC notification.
   284  func NewRelevantTxAcceptedNtfn(txHex string) *RelevantTxAcceptedNtfn {
   285  	return &RelevantTxAcceptedNtfn{Transaction: txHex}
   286  }
   287  
   288  func init() {
   289  	// The commands in this file are only usable by websockets and are
   290  	// notifications.
   291  	flags := UFWebsocketOnly | UFNotification
   292  
   293  	MustRegisterCmd(BlockConnectedNtfnMethod, (*BlockConnectedNtfn)(nil), flags)
   294  	MustRegisterCmd(BlockDisconnectedNtfnMethod, (*BlockDisconnectedNtfn)(nil), flags)
   295  	MustRegisterCmd(FilteredBlockConnectedNtfnMethod, (*FilteredBlockConnectedNtfn)(nil), flags)
   296  	MustRegisterCmd(FilteredBlockDisconnectedNtfnMethod, (*FilteredBlockDisconnectedNtfn)(nil), flags)
   297  	MustRegisterCmd(RecvTxNtfnMethod, (*RecvTxNtfn)(nil), flags)
   298  	MustRegisterCmd(RedeemingTxNtfnMethod, (*RedeemingTxNtfn)(nil), flags)
   299  	MustRegisterCmd(RescanFinishedNtfnMethod, (*RescanFinishedNtfn)(nil), flags)
   300  	MustRegisterCmd(RescanProgressNtfnMethod, (*RescanProgressNtfn)(nil), flags)
   301  	MustRegisterCmd(TxAcceptedNtfnMethod, (*TxAcceptedNtfn)(nil), flags)
   302  	MustRegisterCmd(TxAcceptedVerboseNtfnMethod, (*TxAcceptedVerboseNtfn)(nil), flags)
   303  	MustRegisterCmd(RelevantTxAcceptedNtfnMethod, (*RelevantTxAcceptedNtfn)(nil), flags)
   304  }