242 lines
7.6 KiB
Go
242 lines
7.6 KiB
Go
|
// Copyright (c) 2014-2017 The btcsuite developers
|
||
|
// Copyright (c) 2015-2017 The Decred 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 commands that are supported by
|
||
|
// a chain server, but are only available via websockets.
|
||
|
|
||
|
package btcjson
|
||
|
|
||
|
// AuthenticateCmd defines the authenticate JSON-RPC command.
|
||
|
type AuthenticateCmd struct {
|
||
|
Username string
|
||
|
Passphrase string
|
||
|
}
|
||
|
|
||
|
// NewAuthenticateCmd returns a new instance which can be used to issue an
|
||
|
// authenticate JSON-RPC command.
|
||
|
func NewAuthenticateCmd(username, passphrase string) *AuthenticateCmd {
|
||
|
return &AuthenticateCmd{
|
||
|
Username: username,
|
||
|
Passphrase: passphrase,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// NotifyBlocksCmd defines the notifyblocks JSON-RPC command.
|
||
|
type NotifyBlocksCmd struct{}
|
||
|
|
||
|
// NewNotifyBlocksCmd returns a new instance which can be used to issue a
|
||
|
// notifyblocks JSON-RPC command.
|
||
|
func NewNotifyBlocksCmd() *NotifyBlocksCmd {
|
||
|
return &NotifyBlocksCmd{}
|
||
|
}
|
||
|
|
||
|
// StopNotifyBlocksCmd defines the stopnotifyblocks JSON-RPC command.
|
||
|
type StopNotifyBlocksCmd struct{}
|
||
|
|
||
|
// NewStopNotifyBlocksCmd returns a new instance which can be used to issue a
|
||
|
// stopnotifyblocks JSON-RPC command.
|
||
|
func NewStopNotifyBlocksCmd() *StopNotifyBlocksCmd {
|
||
|
return &StopNotifyBlocksCmd{}
|
||
|
}
|
||
|
|
||
|
// NotifyNewTransactionsCmd defines the notifynewtransactions JSON-RPC command.
|
||
|
type NotifyNewTransactionsCmd struct {
|
||
|
Verbose *bool `jsonrpcdefault:"false"`
|
||
|
}
|
||
|
|
||
|
// NewNotifyNewTransactionsCmd returns a new instance which can be used to issue
|
||
|
// a notifynewtransactions JSON-RPC command.
|
||
|
//
|
||
|
// The parameters which are pointers indicate they are optional. Passing nil
|
||
|
// for optional parameters will use the default value.
|
||
|
func NewNotifyNewTransactionsCmd(verbose *bool) *NotifyNewTransactionsCmd {
|
||
|
return &NotifyNewTransactionsCmd{
|
||
|
Verbose: verbose,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// SessionCmd defines the session JSON-RPC command.
|
||
|
type SessionCmd struct{}
|
||
|
|
||
|
// NewSessionCmd returns a new instance which can be used to issue a session
|
||
|
// JSON-RPC command.
|
||
|
func NewSessionCmd() *SessionCmd {
|
||
|
return &SessionCmd{}
|
||
|
}
|
||
|
|
||
|
// StopNotifyNewTransactionsCmd defines the stopnotifynewtransactions JSON-RPC command.
|
||
|
type StopNotifyNewTransactionsCmd struct{}
|
||
|
|
||
|
// NewStopNotifyNewTransactionsCmd returns a new instance which can be used to issue
|
||
|
// a stopnotifynewtransactions JSON-RPC command.
|
||
|
//
|
||
|
// The parameters which are pointers indicate they are optional. Passing nil
|
||
|
// for optional parameters will use the default value.
|
||
|
func NewStopNotifyNewTransactionsCmd() *StopNotifyNewTransactionsCmd {
|
||
|
return &StopNotifyNewTransactionsCmd{}
|
||
|
}
|
||
|
|
||
|
// NotifyReceivedCmd defines the notifyreceived JSON-RPC command.
|
||
|
//
|
||
|
// NOTE: Deprecated. Use LoadTxFilterCmd instead.
|
||
|
type NotifyReceivedCmd struct {
|
||
|
Addresses []string
|
||
|
}
|
||
|
|
||
|
// NewNotifyReceivedCmd returns a new instance which can be used to issue a
|
||
|
// notifyreceived JSON-RPC command.
|
||
|
//
|
||
|
// NOTE: Deprecated. Use NewLoadTxFilterCmd instead.
|
||
|
func NewNotifyReceivedCmd(addresses []string) *NotifyReceivedCmd {
|
||
|
return &NotifyReceivedCmd{
|
||
|
Addresses: addresses,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// OutPoint describes a transaction outpoint that will be marshalled to and
|
||
|
// from JSON.
|
||
|
type OutPoint struct {
|
||
|
Hash string `json:"hash"`
|
||
|
Index uint32 `json:"index"`
|
||
|
}
|
||
|
|
||
|
// LoadTxFilterCmd defines the loadtxfilter request parameters to load or
|
||
|
// reload a transaction filter.
|
||
|
//
|
||
|
// NOTE: This is a btcd extension ported from github.com/decred/dcrd/dcrjson
|
||
|
// and requires a websocket connection.
|
||
|
type LoadTxFilterCmd struct {
|
||
|
Reload bool
|
||
|
Addresses []string
|
||
|
OutPoints []OutPoint
|
||
|
}
|
||
|
|
||
|
// NewLoadTxFilterCmd returns a new instance which can be used to issue a
|
||
|
// loadtxfilter JSON-RPC command.
|
||
|
//
|
||
|
// NOTE: This is a btcd extension ported from github.com/decred/dcrd/dcrjson
|
||
|
// and requires a websocket connection.
|
||
|
func NewLoadTxFilterCmd(reload bool, addresses []string, outPoints []OutPoint) *LoadTxFilterCmd {
|
||
|
return &LoadTxFilterCmd{
|
||
|
Reload: reload,
|
||
|
Addresses: addresses,
|
||
|
OutPoints: outPoints,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// NotifySpentCmd defines the notifyspent JSON-RPC command.
|
||
|
//
|
||
|
// NOTE: Deprecated. Use LoadTxFilterCmd instead.
|
||
|
type NotifySpentCmd struct {
|
||
|
OutPoints []OutPoint
|
||
|
}
|
||
|
|
||
|
// NewNotifySpentCmd returns a new instance which can be used to issue a
|
||
|
// notifyspent JSON-RPC command.
|
||
|
//
|
||
|
// NOTE: Deprecated. Use NewLoadTxFilterCmd instead.
|
||
|
func NewNotifySpentCmd(outPoints []OutPoint) *NotifySpentCmd {
|
||
|
return &NotifySpentCmd{
|
||
|
OutPoints: outPoints,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// StopNotifyReceivedCmd defines the stopnotifyreceived JSON-RPC command.
|
||
|
//
|
||
|
// NOTE: Deprecated. Use LoadTxFilterCmd instead.
|
||
|
type StopNotifyReceivedCmd struct {
|
||
|
Addresses []string
|
||
|
}
|
||
|
|
||
|
// NewStopNotifyReceivedCmd returns a new instance which can be used to issue a
|
||
|
// stopnotifyreceived JSON-RPC command.
|
||
|
//
|
||
|
// NOTE: Deprecated. Use NewLoadTxFilterCmd instead.
|
||
|
func NewStopNotifyReceivedCmd(addresses []string) *StopNotifyReceivedCmd {
|
||
|
return &StopNotifyReceivedCmd{
|
||
|
Addresses: addresses,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// StopNotifySpentCmd defines the stopnotifyspent JSON-RPC command.
|
||
|
//
|
||
|
// NOTE: Deprecated. Use LoadTxFilterCmd instead.
|
||
|
type StopNotifySpentCmd struct {
|
||
|
OutPoints []OutPoint
|
||
|
}
|
||
|
|
||
|
// NewStopNotifySpentCmd returns a new instance which can be used to issue a
|
||
|
// stopnotifyspent JSON-RPC command.
|
||
|
//
|
||
|
// NOTE: Deprecated. Use NewLoadTxFilterCmd instead.
|
||
|
func NewStopNotifySpentCmd(outPoints []OutPoint) *StopNotifySpentCmd {
|
||
|
return &StopNotifySpentCmd{
|
||
|
OutPoints: outPoints,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// RescanCmd defines the rescan JSON-RPC command.
|
||
|
//
|
||
|
// NOTE: Deprecated. Use RescanBlocksCmd instead.
|
||
|
type RescanCmd struct {
|
||
|
BeginBlock string
|
||
|
Addresses []string
|
||
|
OutPoints []OutPoint
|
||
|
EndBlock *string
|
||
|
}
|
||
|
|
||
|
// NewRescanCmd returns a new instance which can be used to issue a rescan
|
||
|
// JSON-RPC command.
|
||
|
//
|
||
|
// The parameters which are pointers indicate they are optional. Passing nil
|
||
|
// for optional parameters will use the default value.
|
||
|
//
|
||
|
// NOTE: Deprecated. Use NewRescanBlocksCmd instead.
|
||
|
func NewRescanCmd(beginBlock string, addresses []string, outPoints []OutPoint, endBlock *string) *RescanCmd {
|
||
|
return &RescanCmd{
|
||
|
BeginBlock: beginBlock,
|
||
|
Addresses: addresses,
|
||
|
OutPoints: outPoints,
|
||
|
EndBlock: endBlock,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// RescanBlocksCmd defines the rescan JSON-RPC command.
|
||
|
//
|
||
|
// NOTE: This is a btcd extension ported from github.com/decred/dcrd/dcrjson
|
||
|
// and requires a websocket connection.
|
||
|
type RescanBlocksCmd struct {
|
||
|
// Block hashes as a string array.
|
||
|
BlockHashes []string
|
||
|
}
|
||
|
|
||
|
// NewRescanBlocksCmd returns a new instance which can be used to issue a rescan
|
||
|
// JSON-RPC command.
|
||
|
//
|
||
|
// NOTE: This is a btcd extension ported from github.com/decred/dcrd/dcrjson
|
||
|
// and requires a websocket connection.
|
||
|
func NewRescanBlocksCmd(blockHashes []string) *RescanBlocksCmd {
|
||
|
return &RescanBlocksCmd{BlockHashes: blockHashes}
|
||
|
}
|
||
|
|
||
|
func init() {
|
||
|
// The commands in this file are only usable by websockets.
|
||
|
flags := UFWebsocketOnly
|
||
|
|
||
|
MustRegisterCmd("authenticate", (*AuthenticateCmd)(nil), flags)
|
||
|
MustRegisterCmd("loadtxfilter", (*LoadTxFilterCmd)(nil), flags)
|
||
|
MustRegisterCmd("notifyblocks", (*NotifyBlocksCmd)(nil), flags)
|
||
|
MustRegisterCmd("notifynewtransactions", (*NotifyNewTransactionsCmd)(nil), flags)
|
||
|
MustRegisterCmd("notifyreceived", (*NotifyReceivedCmd)(nil), flags)
|
||
|
MustRegisterCmd("notifyspent", (*NotifySpentCmd)(nil), flags)
|
||
|
MustRegisterCmd("session", (*SessionCmd)(nil), flags)
|
||
|
MustRegisterCmd("stopnotifyblocks", (*StopNotifyBlocksCmd)(nil), flags)
|
||
|
MustRegisterCmd("stopnotifynewtransactions", (*StopNotifyNewTransactionsCmd)(nil), flags)
|
||
|
MustRegisterCmd("stopnotifyspent", (*StopNotifySpentCmd)(nil), flags)
|
||
|
MustRegisterCmd("stopnotifyreceived", (*StopNotifyReceivedCmd)(nil), flags)
|
||
|
MustRegisterCmd("rescan", (*RescanCmd)(nil), flags)
|
||
|
MustRegisterCmd("rescanblocks", (*RescanBlocksCmd)(nil), flags)
|
||
|
}
|