// 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) }