Documentation ¶
Overview ¶
Package rpcclient implements a websocket-enabled Bitcoin JSON-RPC client.
Overview ¶
This client provides a robust and easy to use client for interfacing with a Bitcoin RPC server that uses a btcd/bitcoin core compatible Bitcoin JSON-RPC API. This client has been tested with btcd (https://github.com/daglabs/btcd), btcwallet (https://github.com/btcsuite/btcwallet), and bitcoin core (https://github.com/bitcoin).
In addition to the compatible standard HTTP POST JSON-RPC API, btcd and btcwallet provide a websocket interface that is more efficient than the standard HTTP POST method of accessing RPC. The section below discusses the differences between HTTP POST and websockets.
By default, this client assumes the RPC server supports websockets and has TLS enabled. In practice, this currently means it assumes you are talking to btcd or btcwallet by default. However, configuration options are provided to fall back to HTTP POST and disable TLS to support talking with inferior bitcoin core style RPC servers.
Websockets vs HTTP POST ¶
In HTTP POST-based JSON-RPC, every request creates a new HTTP connection, issues the call, waits for the response, and closes the connection. This adds quite a bit of overhead to every call and lacks flexibility for features such as notifications.
In contrast, the websocket-based JSON-RPC interface provided by btcd and btcwallet only uses a single connection that remains open and allows asynchronous bi-directional communication.
The websocket interface supports all of the same commands as HTTP POST, but they can be invoked without having to go through a connect/disconnect cycle for every call. In addition, the websocket interface provides other nice features such as the ability to register for asynchronous notifications of various events.
Synchronous vs Asynchronous API ¶
The client provides both a synchronous (blocking) and asynchronous API.
The synchronous (blocking) API is typically sufficient for most use cases. It works by issuing the RPC and blocking until the response is received. This allows straightforward code where you have the response as soon as the function returns.
The asynchronous API works on the concept of futures. When you invoke the async version of a command, it will quickly return an instance of a type that promises to provide the result of the RPC at some future time. In the background, the RPC call is issued and the result is stored in the returned instance. Invoking the Receive method on the returned instance will either return the result immediately if it has already arrived, or block until it has. This is useful since it provides the caller with greater control over concurrency.
Notifications ¶
The first important part of notifications is to realize that they will only work when connected via websockets. This should intuitively make sense because HTTP POST mode does not keep a connection open!
All notifications provided by btcd require registration to opt-in. For example, if you want to be notified when funds are received by a set of addresses, you register the addresses via the NotifyReceived (or NotifyReceivedAsync) function.
Notification Handlers ¶
Notifications are exposed by the client through the use of callback handlers which are setup via a NotificationHandlers instance that is specified by the caller when creating the client.
It is important that these notification handlers complete quickly since they are intentionally in the main read loop and will block further reads until they complete. This provides the caller with the flexibility to decide what to do when notifications are coming in faster than they are being handled.
In particular this means issuing a blocking RPC call from a callback handler will cause a deadlock as more server responses won't be read until the callback returns, but the callback would be waiting for a response. Thus, any additional RPCs must be issued an a completely decoupled manner.
Automatic Reconnection ¶
By default, when running in websockets mode, this client will automatically keep trying to reconnect to the RPC server should the connection be lost. There is a back-off in between each connection attempt until it reaches one try per minute. Once a connection is re-established, all previously registered notifications are automatically re-registered and any in-flight commands are re-issued. This means from the caller's perspective, the request simply takes longer to complete.
The caller may invoke the Shutdown method on the client to force the client to cease reconnect attempts and return ErrClientShutdown for all outstanding commands.
The automatic reconnection can be disabled by setting the DisableAutoReconnect flag to true in the connection config when creating the client.
Minor RPC Server Differences and Chain/Wallet Separation
Some of the commands are extensions specific to a particular RPC server. For example, the DebugLevel call is an extension only provided by btcd (and btcwallet passthrough). Therefore if you call one of these commands against an RPC server that doesn't provide them, you will get an unimplemented error from the server. An effort has been made to call out which commmands are extensions in their documentation.
Also, it is important to realize that btcd intentionally separates the wallet functionality into a separate process named btcwallet. This means if you are connected to the btcd RPC server directly, only the RPCs which are related to chain services will be available. Depending on your application, you might only need chain-related RPCs. In contrast, btcwallet provides pass through treatment for chain-related RPCs, so it supports them in addition to wallet-related RPCs.
Errors ¶
There are 3 categories of errors that will be returned throughout this package:
- Errors related to the client connection such as authentication, endpoint, disconnect, and shutdown
- Errors that occur before communicating with the remote RPC server such as command creation and marshaling errors or issues talking to the remote server
- Errors returned from the remote RPC server like unimplemented commands, nonexistent requested blocks and transactions, malformed data, and incorrect networks
The first category of errors are typically one of ErrInvalidAuth, ErrInvalidEndpoint, ErrClientDisconnect, or ErrClientShutdown.
NOTE: The ErrClientDisconnect will not be returned unless the DisableAutoReconnect flag is set since the client automatically handles reconnect by default as previously described.
The second category of errors typically indicates a programmer error and as such the type can vary, but usually will be best handled by simply showing/logging it.
The third category of errors, that is errors returned by the server, can be detected by type asserting the error in a *btcjson.RPCError. For example, to detect if a command is unimplemented by the remote RPC server:
amount, err := client.GetBalance("") if err != nil { if jerr, ok := err.(*btcjson.RPCError); ok { switch jerr.Code { case btcjson.ErrRPCUnimplemented: // Handle not implemented error // Handle other specific errors you care about } } // Log or otherwise handle the error knowing it was not one returned // from the remote RPC server. }
Example Usage ¶
The following full-blown client examples are in the examples directory:
- bitcoincorehttp Connects to a bitcoin core RPC server using HTTP POST mode with TLS disabled and gets the current block count
- btcdwebsockets Connects to a btcd RPC server using TLS-secured websockets, registers for block connected and block disconnected notifications, and gets the current block count
- btcwalletwebsockets Connects to a btcwallet RPC server using TLS-secured websockets, registers for notifications about changes to account balances, and gets a list of unspent transaction outputs (utxos) the wallet can sign
Index ¶
- Variables
- func DisableLog()
- func UseLogger(logger logs.Logger, backendLog *logs.Backend)
- type AcceptedBlock
- type ChainBlock
- type Client
- func (c *Client) AddManualNode(host string) error
- func (c *Client) AddManualNodeAsync(host string) FutureAddNodeResult
- func (c *Client) Connect(tries int) error
- func (c *Client) CreateRawTransaction(inputs []btcjson.TransactionInput, amounts map[util.Address]util.Amount, ...) (*wire.MsgTx, error)
- func (c *Client) CreateRawTransactionAsync(inputs []btcjson.TransactionInput, amounts map[util.Address]util.Amount, ...) FutureCreateRawTransactionResult
- func (c *Client) DebugLevel(levelSpec string) (string, error)
- func (c *Client) DebugLevelAsync(levelSpec string) FutureDebugLevelResult
- func (c *Client) DecodeRawTransaction(serializedTx []byte) (*btcjson.TxRawResult, error)
- func (c *Client) DecodeRawTransactionAsync(serializedTx []byte) FutureDecodeRawTransactionResult
- func (c *Client) DecodeScript(serializedScript []byte) (*btcjson.DecodeScriptResult, error)
- func (c *Client) DecodeScriptAsync(serializedScript []byte) FutureDecodeScriptResult
- func (c *Client) Disconnect()
- func (c *Client) Disconnected() bool
- func (c *Client) Generate(numBlocks uint32) ([]*daghash.Hash, error)
- func (c *Client) GenerateAsync(numBlocks uint32) FutureGenerateResult
- func (c *Client) GetBestBlock() (*daghash.Hash, uint64, error)
- func (c *Client) GetBestBlockAsync() FutureGetBestBlockResult
- func (c *Client) GetBestBlockHash() (*daghash.Hash, error)
- func (c *Client) GetBestBlockHashAsync() FutureGetBestBlockHashResult
- func (c *Client) GetBlock(blockHash *daghash.Hash, subnetworkID *string) (*wire.MsgBlock, error)
- func (c *Client) GetBlockAsync(blockHash *daghash.Hash, subnetworkID *string) FutureGetBlockResult
- func (c *Client) GetBlockCount() (int64, error)
- func (c *Client) GetBlockCountAsync() FutureGetBlockCountResult
- func (c *Client) GetBlockDAGInfo() (*btcjson.GetBlockDAGInfoResult, error)
- func (c *Client) GetBlockDAGInfoAsync() FutureGetBlockDAGInfoResult
- func (c *Client) GetBlockHeader(blockHash *daghash.Hash) (*wire.BlockHeader, error)
- func (c *Client) GetBlockHeaderAsync(blockHash *daghash.Hash) FutureGetBlockHeaderResult
- func (c *Client) GetBlockHeaderVerbose(blockHash *daghash.Hash) (*btcjson.GetBlockHeaderVerboseResult, error)
- func (c *Client) GetBlockHeaderVerboseAsync(blockHash *daghash.Hash) FutureGetBlockHeaderVerboseResult
- func (c *Client) GetBlockTemplate(capabilities []string, longPollID string) (*btcjson.GetBlockTemplateResult, error)
- func (c *Client) GetBlockTemplateAsync(capabilities []string, longPollID string) FutureGetBlockTemplateResult
- func (c *Client) GetBlockVerbose(blockHash *daghash.Hash, subnetworkID *string) (*btcjson.GetBlockVerboseResult, error)
- func (c *Client) GetBlockVerboseAsync(blockHash *daghash.Hash, subnetworkID *string) FutureGetBlockVerboseResult
- func (c *Client) GetBlockVerboseTx(blockHash *daghash.Hash, subnetworkID *string) (*btcjson.GetBlockVerboseResult, error)
- func (c *Client) GetBlockVerboseTxAsync(blockHash *daghash.Hash, subnetworkID *string) FutureGetBlockVerboseResult
- func (c *Client) GetBlocks(includeBlocks bool, verboseBlocks bool, startHash *string) (*btcjson.GetBlocksResult, error)
- func (c *Client) GetBlocksAsync(includeBlocks bool, verboseBlocks bool, startHash *string) FutureGetBlocksResult
- func (c *Client) GetCFilter(blockHash *daghash.Hash, filterType wire.FilterType) (*wire.MsgCFilter, error)
- func (c *Client) GetCFilterAsync(blockHash *daghash.Hash, filterType wire.FilterType) FutureGetCFilterResult
- func (c *Client) GetCFilterHeader(blockHash *daghash.Hash, filterType wire.FilterType) (*wire.MsgCFHeaders, error)
- func (c *Client) GetCFilterHeaderAsync(blockHash *daghash.Hash, filterType wire.FilterType) FutureGetCFilterHeaderResult
- func (c *Client) GetChainFromBlock(includeBlocks bool, startHash *string) (*btcjson.GetChainFromBlockResult, error)
- func (c *Client) GetChainFromBlockAsync(includeBlocks bool, startHash *string) FutureGetChainFromBlockResult
- func (c *Client) GetConnectionCount() (int64, error)
- func (c *Client) GetConnectionCountAsync() FutureGetConnectionCountResult
- func (c *Client) GetCurrentNet() (wire.BitcoinNet, error)
- func (c *Client) GetCurrentNetAsync() FutureGetCurrentNetResult
- func (c *Client) GetDifficulty() (float64, error)
- func (c *Client) GetDifficultyAsync() FutureGetDifficultyResult
- func (c *Client) GetGenerate() (bool, error)
- func (c *Client) GetGenerateAsync() FutureGetGenerateResult
- func (c *Client) GetHashesPerSec() (int64, error)
- func (c *Client) GetHashesPerSecAsync() FutureGetHashesPerSecResult
- func (c *Client) GetHeaders(startHash, stopHash *daghash.Hash) ([]wire.BlockHeader, error)
- func (c *Client) GetHeadersAsync(startHash, stopHash *daghash.Hash) FutureGetHeadersResult
- func (c *Client) GetManualNodeInfo(peer string) ([]btcjson.GetManualNodeInfoResult, error)
- func (c *Client) GetManualNodeInfoAsync(peer string) FutureGetManualNodeInfoResult
- func (c *Client) GetManualNodeInfoNoDNS(peer string) ([]string, error)
- func (c *Client) GetManualNodeInfoNoDNSAsync(peer string) FutureGetManualNodeInfoNoDNSResult
- func (c *Client) GetMempoolEntry(txHash string) (*btcjson.GetMempoolEntryResult, error)
- func (c *Client) GetMempoolEntryAsync(txHash string) FutureGetMempoolEntryResult
- func (c *Client) GetMiningInfo() (*btcjson.GetMiningInfoResult, error)
- func (c *Client) GetMiningInfoAsync() FutureGetMiningInfoResult
- func (c *Client) GetNetTotals() (*btcjson.GetNetTotalsResult, error)
- func (c *Client) GetNetTotalsAsync() FutureGetNetTotalsResult
- func (c *Client) GetNetworkHashPS() (int64, error)
- func (c *Client) GetNetworkHashPS2(blocks int) (int64, error)
- func (c *Client) GetNetworkHashPS2Async(blocks int) FutureGetNetworkHashPS
- func (c *Client) GetNetworkHashPS3(blocks, height int) (int64, error)
- func (c *Client) GetNetworkHashPS3Async(blocks, height int) FutureGetNetworkHashPS
- func (c *Client) GetNetworkHashPSAsync() FutureGetNetworkHashPS
- func (c *Client) GetPeerInfo() ([]btcjson.GetPeerInfoResult, error)
- func (c *Client) GetPeerInfoAsync() FutureGetPeerInfoResult
- func (c *Client) GetRawMempool() ([]*daghash.Hash, error)
- func (c *Client) GetRawMempoolAsync() FutureGetRawMempoolResult
- func (c *Client) GetRawMempoolVerbose() (map[string]btcjson.GetRawMempoolVerboseResult, error)
- func (c *Client) GetRawMempoolVerboseAsync() FutureGetRawMempoolVerboseResult
- func (c *Client) GetRawTransaction(txID *daghash.TxID) (*util.Tx, error)
- func (c *Client) GetRawTransactionAsync(txID *daghash.TxID) FutureGetRawTransactionResult
- func (c *Client) GetRawTransactionVerbose(txID *daghash.TxID) (*btcjson.TxRawResult, error)
- func (c *Client) GetRawTransactionVerboseAsync(txID *daghash.TxID) FutureGetRawTransactionVerboseResult
- func (c *Client) GetSubnetwork(subnetworkID string) (*btcjson.GetSubnetworkResult, error)
- func (c *Client) GetSubnetworkAsync(subnetworkID string) FutureGetSubnetworkResult
- func (c *Client) GetTopHeaders(startHash *daghash.Hash) ([]wire.BlockHeader, error)
- func (c *Client) GetTopHeadersAsync(startHash *daghash.Hash) FutureGetHeadersResult
- func (c *Client) GetTxOut(txHash *daghash.Hash, index uint32, mempool bool) (*btcjson.GetTxOutResult, error)
- func (c *Client) GetTxOutAsync(txHash *daghash.Hash, index uint32, mempool bool) FutureGetTxOutResult
- func (c *Client) Host() string
- func (c *Client) InvalidateBlock(blockHash *daghash.Hash) error
- func (c *Client) InvalidateBlockAsync(blockHash *daghash.Hash) FutureInvalidateBlockResult
- func (c *Client) LoadTxFilter(reload bool, addresses []util.Address, outpoints []wire.Outpoint) error
- func (c *Client) LoadTxFilterAsync(reload bool, addresses []util.Address, outpoints []wire.Outpoint) FutureLoadTxFilterResult
- func (c *Client) NextID() uint64
- func (c *Client) NotifyBlocks() error
- func (c *Client) NotifyBlocksAsync() FutureNotifyBlocksResult
- func (c *Client) NotifyChainChanges() error
- func (c *Client) NotifyChainChangesAsync() FutureNotifyBlocksResult
- func (c *Client) NotifyNewTransactions(verbose bool, subnetworkID *string) error
- func (c *Client) NotifyNewTransactionsAsync(verbose bool, subnetworkID *string) FutureNotifyNewTransactionsResult
- func (c *Client) Ping() error
- func (c *Client) PingAsync() FuturePingResult
- func (c *Client) RawRequest(method string, params []json.RawMessage) (json.RawMessage, error)
- func (c *Client) RawRequestAsync(method string, params []json.RawMessage) FutureRawResult
- func (c *Client) RescanBlocks(blockHashes []*daghash.Hash) ([]btcjson.RescannedBlock, error)
- func (c *Client) RescanBlocksAsync(blockHashes []*daghash.Hash) FutureRescanBlocksResult
- func (c *Client) SearchRawTransactions(address util.Address, skip, count int, reverse bool, filterAddrs []string) ([]*wire.MsgTx, error)
- func (c *Client) SearchRawTransactionsAsync(address util.Address, skip, count int, reverse bool, filterAddrs []string) FutureSearchRawTransactionsResult
- func (c *Client) SearchRawTransactionsVerbose(address util.Address, skip, count int, includePrevOut, reverse bool, ...) ([]*btcjson.SearchRawTransactionsResult, error)
- func (c *Client) SearchRawTransactionsVerboseAsync(address util.Address, skip, count int, includePrevOut, reverse bool, ...) FutureSearchRawTransactionsVerboseResult
- func (c *Client) SendRawTransaction(tx *wire.MsgTx, allowHighFees bool) (*daghash.TxID, error)
- func (c *Client) SendRawTransactionAsync(tx *wire.MsgTx, allowHighFees bool) FutureSendRawTransactionResult
- func (c *Client) Session() (*btcjson.SessionResult, error)
- func (c *Client) SessionAsync() FutureSessionResult
- func (c *Client) SetGenerate(enable bool, numCPUs int) error
- func (c *Client) SetGenerateAsync(enable bool, numCPUs int) FutureSetGenerateResult
- func (c *Client) Shutdown()
- func (c *Client) SubmitBlock(block *util.Block, options *btcjson.SubmitBlockOptions) error
- func (c *Client) SubmitBlockAsync(block *util.Block, options *btcjson.SubmitBlockOptions) FutureSubmitBlockResult
- func (c *Client) Version() (map[string]btcjson.VersionResult, error)
- func (c *Client) VersionAsync() FutureVersionResult
- func (c *Client) WaitForShutdown()
- type ConnConfig
- type FutureAddNodeResult
- type FutureCreateRawTransactionResult
- type FutureDebugLevelResult
- type FutureDecodeRawTransactionResult
- type FutureDecodeScriptResult
- type FutureGenerateResult
- type FutureGetBestBlockHashResult
- type FutureGetBestBlockResult
- type FutureGetBlockCountResult
- type FutureGetBlockDAGInfoResult
- type FutureGetBlockHashResult
- type FutureGetBlockHeaderResult
- type FutureGetBlockHeaderVerboseResult
- type FutureGetBlockResult
- type FutureGetBlockTemplateResult
- type FutureGetBlockVerboseResult
- type FutureGetBlocksResult
- type FutureGetCFilterHeaderResult
- type FutureGetCFilterResult
- type FutureGetChainFromBlockResult
- type FutureGetConnectionCountResult
- type FutureGetCurrentNetResult
- type FutureGetDifficultyResult
- type FutureGetGenerateResult
- type FutureGetHashesPerSecResult
- type FutureGetHeadersResult
- type FutureGetManualNodeInfoNoDNSResult
- type FutureGetManualNodeInfoResult
- type FutureGetMempoolEntryResult
- type FutureGetMiningInfoResult
- type FutureGetNetTotalsResult
- type FutureGetNetworkHashPS
- type FutureGetPeerInfoResult
- type FutureGetRawMempoolResult
- type FutureGetRawMempoolVerboseResult
- type FutureGetRawTransactionResult
- type FutureGetRawTransactionVerboseResult
- type FutureGetSubnetworkResult
- type FutureGetTxOutResult
- type FutureInvalidateBlockResult
- type FutureLoadTxFilterResult
- type FutureNotifyBlocksResult
- type FutureNotifyChainChangesResult
- type FutureNotifyNewTransactionsResult
- type FuturePingResult
- type FutureRawResult
- type FutureRescanBlocksResult
- type FutureSearchRawTransactionsResult
- type FutureSearchRawTransactionsVerboseResult
- type FutureSendRawTransactionResult
- type FutureSessionResult
- type FutureSetGenerateResult
- type FutureSubmitBlockResult
- type FutureVersionResult
- type NotificationHandlers
Constants ¶
This section is empty.
Variables ¶
var ( // ErrInvalidAuth is an error to describe the condition where the client // is either unable to authenticate or the specified endpoint is // incorrect. ErrInvalidAuth = errors.New("authentication failure") // ErrInvalidEndpoint is an error to describe the condition where the // websocket handshake failed with the specified endpoint. ErrInvalidEndpoint = errors.New("the endpoint either does not support " + "websockets or does not exist") // ErrClientNotConnected is an error to describe the condition where a // websocket client has been created, but the connection was never // established. This condition differs from ErrClientDisconnect, which // represents an established connection that was lost. ErrClientNotConnected = errors.New("the client was never connected") // ErrClientDisconnect is an error to describe the condition where the // client has been disconnected from the RPC server. When the // DisableAutoReconnect option is not set, any outstanding futures // when a client disconnect occurs will return this error as will // any new requests. ErrClientDisconnect = errors.New("the client has been disconnected") // ErrClientShutdown is an error to describe the condition where the // client is either already shutdown, or in the process of shutting // down. Any outstanding futures when a client shutdown occurs will // return this error as will any new requests. ErrClientShutdown = errors.New("the client has been shutdown") // ErrNotWebsocketClient is an error to describe the condition of // calling a Client method intended for a websocket client when the // client has been configured to run in HTTP POST mode instead. ErrNotWebsocketClient = errors.New("client is not configured for " + "websockets") // ErrClientAlreadyConnected is an error to describe the condition where // a new client connection cannot be established due to a websocket // client having already connected to the RPC server. ErrClientAlreadyConnected = errors.New("websocket client has already " + "connected") // ErrResponseTimedOut is an error to describe the condition where // a response hasn't arrived before the expected timeout. ErrResponseTimedOut = errors.New("no response was receieved until the timeout") )
var ( // ErrWebsocketsRequired is an error to describe the condition where the // caller is trying to use a websocket-only feature, such as requesting // notifications or other websocket requests when the client is // configured to run in HTTP POST mode. ErrWebsocketsRequired = errors.New("a websocket connection is required " + "to use this feature") )
Functions ¶
func DisableLog ¶
func DisableLog()
DisableLog disables all library log output. Logging output is disabled by default until UseLogger is called.
Types ¶
type AcceptedBlock ¶
AcceptedBlock models a block that is included in the blues of a selected chain block.
type ChainBlock ¶
type ChainBlock struct { Hash *daghash.Hash AcceptedBlocks []*AcceptedBlock }
ChainBlock models a block that is part of the selected parent chain.
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client represents a Bitcoin RPC client which allows easy access to the various RPC methods available on a Bitcoin RPC server. Each of the wrapper functions handle the details of converting the passed and return types to and from the underlying JSON types which are required for the JSON-RPC invocations
The client provides each RPC in both synchronous (blocking) and asynchronous (non-blocking) forms. The asynchronous forms are based on the concept of futures where they return an instance of a type that promises to deliver the result of the invocation at some future time. Invoking the Receive method on the returned future will block until the result is available if it's not already.
func New ¶
func New(config *ConnConfig, ntfnHandlers *NotificationHandlers) (*Client, error)
New creates a new RPC client based on the provided connection configuration details. The notification handlers parameter may be nil if you are not interested in receiving notifications and will be ignored if the configuration is set to run in HTTP POST mode.
func (*Client) AddManualNode ¶
AddManualNode attempts to perform the passed command on the passed persistent peer. For example, it can be used to add or a remove a persistent peer, or to do a one time connection to a peer.
It may not be used to remove non-persistent peers.
func (*Client) AddManualNodeAsync ¶
func (c *Client) AddManualNodeAsync(host string) FutureAddNodeResult
AddManualNodeAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See AddNode for the blocking version and more details.
func (*Client) Connect ¶
Connect establishes the initial websocket connection. This is necessary when a client was created after setting the DisableConnectOnNew field of the Config struct.
Up to tries number of connections (each after an increasing backoff) will be tried if the connection can not be established. The special value of 0 indicates an unlimited number of connection attempts.
This method will error if the client is not configured for websockets, if the connection has already been established, or if none of the connection attempts were successful.
func (*Client) CreateRawTransaction ¶
func (c *Client) CreateRawTransaction(inputs []btcjson.TransactionInput, amounts map[util.Address]util.Amount, lockTime *uint64) (*wire.MsgTx, error)
CreateRawTransaction returns a new transaction spending the provided inputs and sending to the provided addresses.
func (*Client) CreateRawTransactionAsync ¶
func (c *Client) CreateRawTransactionAsync(inputs []btcjson.TransactionInput, amounts map[util.Address]util.Amount, lockTime *uint64) FutureCreateRawTransactionResult
CreateRawTransactionAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See CreateRawTransaction for the blocking version and more details.
func (*Client) DebugLevel ¶
DebugLevel dynamically sets the debug logging level to the passed level specification.
The levelspec can be either a debug level or of the form:
<subsystem>=<level>,<subsystem2>=<level2>,...
Additionally, the special keyword 'show' can be used to get a list of the available subsystems.
NOTE: This is a btcd extension.
func (*Client) DebugLevelAsync ¶
func (c *Client) DebugLevelAsync(levelSpec string) FutureDebugLevelResult
DebugLevelAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See DebugLevel for the blocking version and more details.
NOTE: This is a btcd extension.
func (*Client) DecodeRawTransaction ¶
func (c *Client) DecodeRawTransaction(serializedTx []byte) (*btcjson.TxRawResult, error)
DecodeRawTransaction returns information about a transaction given its serialized bytes.
func (*Client) DecodeRawTransactionAsync ¶
func (c *Client) DecodeRawTransactionAsync(serializedTx []byte) FutureDecodeRawTransactionResult
DecodeRawTransactionAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See DecodeRawTransaction for the blocking version and more details.
func (*Client) DecodeScript ¶
func (c *Client) DecodeScript(serializedScript []byte) (*btcjson.DecodeScriptResult, error)
DecodeScript returns information about a script given its serialized bytes.
func (*Client) DecodeScriptAsync ¶
func (c *Client) DecodeScriptAsync(serializedScript []byte) FutureDecodeScriptResult
DecodeScriptAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See DecodeScript for the blocking version and more details.
func (*Client) Disconnect ¶
func (c *Client) Disconnect()
Disconnect disconnects the current websocket associated with the client. The connection will automatically be re-established unless the client was created with the DisableAutoReconnect flag.
This function has no effect when the client is running in HTTP POST mode.
func (*Client) Disconnected ¶
Disconnected returns whether or not the server is disconnected. If a websocket client was created but never connected, this also returns false.
func (*Client) GenerateAsync ¶
func (c *Client) GenerateAsync(numBlocks uint32) FutureGenerateResult
GenerateAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See Generate for the blocking version and more details.
func (*Client) GetBestBlock ¶
GetBestBlock returns the hash and height of the block in the longest (best) chain.
NOTE: This is a btcd extension.
func (*Client) GetBestBlockAsync ¶
func (c *Client) GetBestBlockAsync() FutureGetBestBlockResult
GetBestBlockAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetBestBlock for the blocking version and more details.
NOTE: This is a btcd extension.
func (*Client) GetBestBlockHash ¶
GetBestBlockHash returns the hash of the best block in the longest block dag.
func (*Client) GetBestBlockHashAsync ¶
func (c *Client) GetBestBlockHashAsync() FutureGetBestBlockHashResult
GetBestBlockHashAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetBestBlockHash for the blocking version and more details.
func (*Client) GetBlock ¶
GetBlock returns a raw block from the server given its hash.
See GetBlockVerbose to retrieve a data structure with information about the block instead.
func (*Client) GetBlockAsync ¶
func (c *Client) GetBlockAsync(blockHash *daghash.Hash, subnetworkID *string) FutureGetBlockResult
GetBlockAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetBlock for the blocking version and more details.
func (*Client) GetBlockCount ¶
GetBlockCount returns the number of blocks in the longest block dag.
func (*Client) GetBlockCountAsync ¶
func (c *Client) GetBlockCountAsync() FutureGetBlockCountResult
GetBlockCountAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetBlockCount for the blocking version and more details.
func (*Client) GetBlockDAGInfo ¶
func (c *Client) GetBlockDAGInfo() (*btcjson.GetBlockDAGInfoResult, error)
GetBlockDAGInfo returns information related to the processing state of various dag-specific details such as the current difficulty from the tip of the main dag.
func (*Client) GetBlockDAGInfoAsync ¶
func (c *Client) GetBlockDAGInfoAsync() FutureGetBlockDAGInfoResult
GetBlockDAGInfoAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetBlockDAGInfo for the blocking version and more details.
func (*Client) GetBlockHeader ¶
GetBlockHeader returns the blockheader from the server given its hash.
See GetBlockHeaderVerbose to retrieve a data structure with information about the block instead.
func (*Client) GetBlockHeaderAsync ¶
func (c *Client) GetBlockHeaderAsync(blockHash *daghash.Hash) FutureGetBlockHeaderResult
GetBlockHeaderAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetBlockHeader for the blocking version and more details.
func (*Client) GetBlockHeaderVerbose ¶
func (c *Client) GetBlockHeaderVerbose(blockHash *daghash.Hash) (*btcjson.GetBlockHeaderVerboseResult, error)
GetBlockHeaderVerbose returns a data structure with information about the blockheader from the server given its hash.
See GetBlockHeader to retrieve a blockheader instead.
func (*Client) GetBlockHeaderVerboseAsync ¶
func (c *Client) GetBlockHeaderVerboseAsync(blockHash *daghash.Hash) FutureGetBlockHeaderVerboseResult
GetBlockHeaderVerboseAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetBlockHeader for the blocking version and more details.
func (*Client) GetBlockTemplate ¶
func (c *Client) GetBlockTemplate(capabilities []string, longPollID string) (*btcjson.GetBlockTemplateResult, error)
GetBlockTemplate request a block template from the server, to mine upon
func (*Client) GetBlockTemplateAsync ¶
func (c *Client) GetBlockTemplateAsync(capabilities []string, longPollID string) FutureGetBlockTemplateResult
GetBlockTemplateAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetBlockTemplate for the blocking version and more details
func (*Client) GetBlockVerbose ¶
func (c *Client) GetBlockVerbose(blockHash *daghash.Hash, subnetworkID *string) (*btcjson.GetBlockVerboseResult, error)
GetBlockVerbose returns a data structure from the server with information about a block given its hash.
See GetBlockVerboseTx to retrieve transaction data structures as well. See GetBlock to retrieve a raw block instead.
func (*Client) GetBlockVerboseAsync ¶
func (c *Client) GetBlockVerboseAsync(blockHash *daghash.Hash, subnetworkID *string) FutureGetBlockVerboseResult
GetBlockVerboseAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetBlockVerbose for the blocking version and more details.
func (*Client) GetBlockVerboseTx ¶
func (c *Client) GetBlockVerboseTx(blockHash *daghash.Hash, subnetworkID *string) (*btcjson.GetBlockVerboseResult, error)
GetBlockVerboseTx returns a data structure from the server with information about a block and its transactions given its hash.
See GetBlockVerbose if only transaction hashes are preferred. See GetBlock to retrieve a raw block instead.
func (*Client) GetBlockVerboseTxAsync ¶
func (c *Client) GetBlockVerboseTxAsync(blockHash *daghash.Hash, subnetworkID *string) FutureGetBlockVerboseResult
GetBlockVerboseTxAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetBlockVerboseTx or the blocking version and more details.
func (*Client) GetBlocks ¶
func (c *Client) GetBlocks(includeBlocks bool, verboseBlocks bool, startHash *string) (*btcjson.GetBlocksResult, error)
GetBlocks returns the blocks starting from startHash up to the virtual ordered by blue score.
func (*Client) GetBlocksAsync ¶
func (c *Client) GetBlocksAsync(includeBlocks bool, verboseBlocks bool, startHash *string) FutureGetBlocksResult
GetBlocksAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetBlocks for the blocking version and more details.
func (*Client) GetCFilter ¶
func (c *Client) GetCFilter(blockHash *daghash.Hash, filterType wire.FilterType) (*wire.MsgCFilter, error)
GetCFilter returns a raw filter from the server given its block hash.
func (*Client) GetCFilterAsync ¶
func (c *Client) GetCFilterAsync(blockHash *daghash.Hash, filterType wire.FilterType) FutureGetCFilterResult
GetCFilterAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetCFilter for the blocking version and more details.
func (*Client) GetCFilterHeader ¶
func (c *Client) GetCFilterHeader(blockHash *daghash.Hash, filterType wire.FilterType) (*wire.MsgCFHeaders, error)
GetCFilterHeader returns a raw filter header from the server given its block hash.
func (*Client) GetCFilterHeaderAsync ¶
func (c *Client) GetCFilterHeaderAsync(blockHash *daghash.Hash, filterType wire.FilterType) FutureGetCFilterHeaderResult
GetCFilterHeaderAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetCFilterHeader for the blocking version and more details.
func (*Client) GetChainFromBlock ¶
func (c *Client) GetChainFromBlock(includeBlocks bool, startHash *string) (*btcjson.GetChainFromBlockResult, error)
GetChainFromBlock returns the selected parent chain starting from startHash up to the virtual. If startHash is not in the selected parent chain, it goes down the DAG until it does reach a hash in the selected parent chain while collecting hashes into RemovedChainBlockHashes.
func (*Client) GetChainFromBlockAsync ¶
func (c *Client) GetChainFromBlockAsync(includeBlocks bool, startHash *string) FutureGetChainFromBlockResult
GetChainFromBlockAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetChainFromBlock for the blocking version and more details.
func (*Client) GetConnectionCount ¶
GetConnectionCount returns the number of active connections to other peers.
func (*Client) GetConnectionCountAsync ¶
func (c *Client) GetConnectionCountAsync() FutureGetConnectionCountResult
GetConnectionCountAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetConnectionCount for the blocking version and more details.
func (*Client) GetCurrentNet ¶
func (c *Client) GetCurrentNet() (wire.BitcoinNet, error)
GetCurrentNet returns the network the server is running on.
NOTE: This is a btcd extension.
func (*Client) GetCurrentNetAsync ¶
func (c *Client) GetCurrentNetAsync() FutureGetCurrentNetResult
GetCurrentNetAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetCurrentNet for the blocking version and more details.
NOTE: This is a btcd extension.
func (*Client) GetDifficulty ¶
GetDifficulty returns the proof-of-work difficulty as a multiple of the minimum difficulty.
func (*Client) GetDifficultyAsync ¶
func (c *Client) GetDifficultyAsync() FutureGetDifficultyResult
GetDifficultyAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetDifficulty for the blocking version and more details.
func (*Client) GetGenerate ¶
GetGenerate returns true if the server is set to mine, otherwise false.
func (*Client) GetGenerateAsync ¶
func (c *Client) GetGenerateAsync() FutureGetGenerateResult
GetGenerateAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetGenerate for the blocking version and more details.
func (*Client) GetHashesPerSec ¶
GetHashesPerSec returns a recent hashes per second performance measurement while generating coins (mining). Zero is returned if the server is not mining.
func (*Client) GetHashesPerSecAsync ¶
func (c *Client) GetHashesPerSecAsync() FutureGetHashesPerSecResult
GetHashesPerSecAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetHashesPerSec for the blocking version and more details.
func (*Client) GetHeaders ¶
GetHeaders mimics the wire protocol getheaders and headers messages by returning all headers on the main chain after the first known block in the locators, up until a block hash matches stopHash.
NOTE: This is a btcsuite extension ported from github.com/decred/dcrrpcclient.
func (*Client) GetHeadersAsync ¶
func (c *Client) GetHeadersAsync(startHash, stopHash *daghash.Hash) FutureGetHeadersResult
GetHeadersAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetHeaders for the blocking version and more details.
NOTE: This is a btcsuite extension ported from github.com/decred/dcrrpcclient.
func (*Client) GetManualNodeInfo ¶
func (c *Client) GetManualNodeInfo(peer string) ([]btcjson.GetManualNodeInfoResult, error)
GetManualNodeInfo returns information about manually added (persistent) peers.
See GetManualNodeInfoNoDNS to retrieve only a list of the added (persistent) peers.
func (*Client) GetManualNodeInfoAsync ¶
func (c *Client) GetManualNodeInfoAsync(peer string) FutureGetManualNodeInfoResult
GetManualNodeInfoAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetManualNodeInfo for the blocking version and more details.
func (*Client) GetManualNodeInfoNoDNS ¶
GetManualNodeInfoNoDNS returns a list of manually added (persistent) peers. This works by setting the dns flag to false in the underlying RPC.
See GetManualNodeInfo to obtain more information about each added (persistent) peer.
func (*Client) GetManualNodeInfoNoDNSAsync ¶
func (c *Client) GetManualNodeInfoNoDNSAsync(peer string) FutureGetManualNodeInfoNoDNSResult
GetManualNodeInfoNoDNSAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetManualNodeInfoNoDNS for the blocking version and more details.
func (*Client) GetMempoolEntry ¶
func (c *Client) GetMempoolEntry(txHash string) (*btcjson.GetMempoolEntryResult, error)
GetMempoolEntry returns a data structure with information about the transaction in the memory pool given its hash.
func (*Client) GetMempoolEntryAsync ¶
func (c *Client) GetMempoolEntryAsync(txHash string) FutureGetMempoolEntryResult
GetMempoolEntryAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetMempoolEntry for the blocking version and more details.
func (*Client) GetMiningInfo ¶
func (c *Client) GetMiningInfo() (*btcjson.GetMiningInfoResult, error)
GetMiningInfo returns mining information.
func (*Client) GetMiningInfoAsync ¶
func (c *Client) GetMiningInfoAsync() FutureGetMiningInfoResult
GetMiningInfoAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetMiningInfo for the blocking version and more details.
func (*Client) GetNetTotals ¶
func (c *Client) GetNetTotals() (*btcjson.GetNetTotalsResult, error)
GetNetTotals returns network traffic statistics.
func (*Client) GetNetTotalsAsync ¶
func (c *Client) GetNetTotalsAsync() FutureGetNetTotalsResult
GetNetTotalsAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetNetTotals for the blocking version and more details.
func (*Client) GetNetworkHashPS ¶
GetNetworkHashPS returns the estimated network hashes per second using the default number of blocks and the most recent block height.
See GetNetworkHashPS2 to override the number of blocks to use and GetNetworkHashPS3 to override the height at which to calculate the estimate.
func (*Client) GetNetworkHashPS2 ¶
GetNetworkHashPS2 returns the estimated network hashes per second for the specified previous number of blocks working backwards from the most recent block height. The blocks parameter can also be -1 in which case the number of blocks since the last difficulty change will be used.
See GetNetworkHashPS to use defaults and GetNetworkHashPS3 to override the height at which to calculate the estimate.
func (*Client) GetNetworkHashPS2Async ¶
func (c *Client) GetNetworkHashPS2Async(blocks int) FutureGetNetworkHashPS
GetNetworkHashPS2Async returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetNetworkHashPS2 for the blocking version and more details.
func (*Client) GetNetworkHashPS3 ¶
GetNetworkHashPS3 returns the estimated network hashes per second for the specified previous number of blocks working backwards from the specified block height. The blocks parameter can also be -1 in which case the number of blocks since the last difficulty change will be used.
See GetNetworkHashPS and GetNetworkHashPS2 to use defaults.
func (*Client) GetNetworkHashPS3Async ¶
func (c *Client) GetNetworkHashPS3Async(blocks, height int) FutureGetNetworkHashPS
GetNetworkHashPS3Async returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetNetworkHashPS3 for the blocking version and more details.
func (*Client) GetNetworkHashPSAsync ¶
func (c *Client) GetNetworkHashPSAsync() FutureGetNetworkHashPS
GetNetworkHashPSAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetNetworkHashPS for the blocking version and more details.
func (*Client) GetPeerInfo ¶
func (c *Client) GetPeerInfo() ([]btcjson.GetPeerInfoResult, error)
GetPeerInfo returns data about each connected network peer.
func (*Client) GetPeerInfoAsync ¶
func (c *Client) GetPeerInfoAsync() FutureGetPeerInfoResult
GetPeerInfoAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetPeerInfo for the blocking version and more details.
func (*Client) GetRawMempool ¶
GetRawMempool returns the hashes of all transactions in the memory pool.
See GetRawMempoolVerbose to retrieve data structures with information about the transactions instead.
func (*Client) GetRawMempoolAsync ¶
func (c *Client) GetRawMempoolAsync() FutureGetRawMempoolResult
GetRawMempoolAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetRawMempool for the blocking version and more details.
func (*Client) GetRawMempoolVerbose ¶
func (c *Client) GetRawMempoolVerbose() (map[string]btcjson.GetRawMempoolVerboseResult, error)
GetRawMempoolVerbose returns a map of transaction hashes to an associated data structure with information about the transaction for all transactions in the memory pool.
See GetRawMempool to retrieve only the transaction hashes instead.
func (*Client) GetRawMempoolVerboseAsync ¶
func (c *Client) GetRawMempoolVerboseAsync() FutureGetRawMempoolVerboseResult
GetRawMempoolVerboseAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetRawMempoolVerbose for the blocking version and more details.
func (*Client) GetRawTransaction ¶
GetRawTransaction returns a transaction given its ID.
See GetRawTransactionVerbose to obtain additional information about the transaction.
func (*Client) GetRawTransactionAsync ¶
func (c *Client) GetRawTransactionAsync(txID *daghash.TxID) FutureGetRawTransactionResult
GetRawTransactionAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetRawTransaction for the blocking version and more details.
func (*Client) GetRawTransactionVerbose ¶
GetRawTransactionVerbose returns information about a transaction given its hash.
See GetRawTransaction to obtain only the transaction already deserialized.
func (*Client) GetRawTransactionVerboseAsync ¶
func (c *Client) GetRawTransactionVerboseAsync(txID *daghash.TxID) FutureGetRawTransactionVerboseResult
GetRawTransactionVerboseAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetRawTransactionVerbose for the blocking version and more details.
func (*Client) GetSubnetwork ¶
func (c *Client) GetSubnetwork(subnetworkID string) (*btcjson.GetSubnetworkResult, error)
GetSubnetwork provides information about a subnetwork given its ID.
func (*Client) GetSubnetworkAsync ¶
func (c *Client) GetSubnetworkAsync(subnetworkID string) FutureGetSubnetworkResult
GetSubnetworkAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetSubnetwork for the blocking version and more details.
func (*Client) GetTopHeaders ¶
GetTopHeaders sends a getTopHeaders rpc command to the server.
func (*Client) GetTopHeadersAsync ¶
func (c *Client) GetTopHeadersAsync(startHash *daghash.Hash) FutureGetHeadersResult
GetTopHeadersAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetTopHeaders for the blocking version and more details.
func (*Client) GetTxOut ¶
func (c *Client) GetTxOut(txHash *daghash.Hash, index uint32, mempool bool) (*btcjson.GetTxOutResult, error)
GetTxOut returns the transaction output info if it's unspent and nil, otherwise.
func (*Client) GetTxOutAsync ¶
func (c *Client) GetTxOutAsync(txHash *daghash.Hash, index uint32, mempool bool) FutureGetTxOutResult
GetTxOutAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See GetTxOut for the blocking version and more details.
func (*Client) InvalidateBlock ¶
InvalidateBlock invalidates a specific block.
func (*Client) InvalidateBlockAsync ¶
func (c *Client) InvalidateBlockAsync(blockHash *daghash.Hash) FutureInvalidateBlockResult
InvalidateBlockAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See InvalidateBlock for the blocking version and more details.
func (*Client) LoadTxFilter ¶
func (c *Client) LoadTxFilter(reload bool, addresses []util.Address, outpoints []wire.Outpoint) error
LoadTxFilter loads, reloads, or adds data to a websocket client's transaction filter. The filter is consistently updated based on inspected transactions during mempool acceptance, block acceptance, and for all rescanned blocks.
NOTE: This is a btcd extension ported from github.com/decred/dcrrpcclient and requires a websocket connection.
func (*Client) LoadTxFilterAsync ¶
func (c *Client) LoadTxFilterAsync(reload bool, addresses []util.Address, outpoints []wire.Outpoint) FutureLoadTxFilterResult
LoadTxFilterAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See LoadTxFilter for the blocking version and more details.
NOTE: This is a btcd extension ported from github.com/decred/dcrrpcclient and requires a websocket connection.
func (*Client) NextID ¶
NextID returns the next id to be used when sending a JSON-RPC message. This ID allows responses to be associated with particular requests per the JSON-RPC specification. Typically the consumer of the client does not need to call this function, however, if a custom request is being created and used this function should be used to ensure the ID is unique amongst all requests being made.
func (*Client) NotifyBlocks ¶
NotifyBlocks registers the client to receive notifications when blocks are connected and disconnected from the main chain. The notifications are delivered to the notification handlers associated with the client. Calling this function has no effect if there are no notification handlers and will result in an error if the client is configured to run in HTTP POST mode.
The notifications delivered as a result of this call will be via OnBlockAdded ¶
NOTE: This is a btcd extension and requires a websocket connection.
func (*Client) NotifyBlocksAsync ¶
func (c *Client) NotifyBlocksAsync() FutureNotifyBlocksResult
NotifyBlocksAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See NotifyBlocks for the blocking version and more details.
NOTE: This is a btcd extension and requires a websocket connection.
func (*Client) NotifyChainChanges ¶
NotifyChainChanges registers the client to receive notifications when the selected parent chain changes. The notifications are delivered to the notification handlers associated with the client. Calling this function has no effect if there are no notification handlers and will result in an error if the client is configured to run in HTTP POST mode.
The notifications delivered as a result of this call will be via OnBlockAdded ¶
NOTE: This is a btcd extension and requires a websocket connection.
func (*Client) NotifyChainChangesAsync ¶
func (c *Client) NotifyChainChangesAsync() FutureNotifyBlocksResult
NotifyChainChangesAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See NotifyChainChanges for the blocking version and more details.
NOTE: This is a btcd extension and requires a websocket connection.
func (*Client) NotifyNewTransactions ¶
NotifyNewTransactions registers the client to receive notifications every time a new transaction is accepted to the memory pool. The notifications are delivered to the notification handlers associated with the client. Calling this function has no effect if there are no notification handlers and will result in an error if the client is configured to run in HTTP POST mode.
The notifications delivered as a result of this call will be via one of OnTxAccepted (when verbose is false) or OnTxAcceptedVerbose (when verbose is true).
NOTE: This is a btcd extension and requires a websocket connection.
func (*Client) NotifyNewTransactionsAsync ¶
func (c *Client) NotifyNewTransactionsAsync(verbose bool, subnetworkID *string) FutureNotifyNewTransactionsResult
NotifyNewTransactionsAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See NotifyNewTransactionsAsync for the blocking version and more details.
NOTE: This is a btcd extension and requires a websocket connection.
func (*Client) Ping ¶
Ping queues a ping to be sent to each connected peer.
Use the GetPeerInfo function and examine the PingTime and PingWait fields to access the ping times.
func (*Client) PingAsync ¶
func (c *Client) PingAsync() FuturePingResult
PingAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See Ping for the blocking version and more details.
func (*Client) RawRequest ¶
func (c *Client) RawRequest(method string, params []json.RawMessage) (json.RawMessage, error)
RawRequest allows the caller to send a raw or custom request to the server. This method may be used to send and receive requests and responses for requests that are not handled by this client package, or to proxy partially unmarshaled requests to another JSON-RPC server if a request cannot be handled directly.
func (*Client) RawRequestAsync ¶
func (c *Client) RawRequestAsync(method string, params []json.RawMessage) FutureRawResult
RawRequestAsync returns an instance of a type that can be used to get the result of a custom RPC request at some future time by invoking the Receive function on the returned instance.
See RawRequest for the blocking version and more details.
func (*Client) RescanBlocks ¶
RescanBlocks rescans the blocks identified by blockHashes, in order, using the client's loaded transaction filter. The blocks do not need to be on the main dag, but they do need to be adjacent to each other.
NOTE: This is a btcsuite extension ported from github.com/decred/dcrrpcclient.
func (*Client) RescanBlocksAsync ¶
func (c *Client) RescanBlocksAsync(blockHashes []*daghash.Hash) FutureRescanBlocksResult
RescanBlocksAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See RescanBlocks for the blocking version and more details.
NOTE: This is a btcsuite extension ported from github.com/decred/dcrrpcclient.
func (*Client) SearchRawTransactions ¶
func (c *Client) SearchRawTransactions(address util.Address, skip, count int, reverse bool, filterAddrs []string) ([]*wire.MsgTx, error)
SearchRawTransactions returns transactions that involve the passed address.
NOTE: Chain servers do not typically provide this capability unless it has specifically been enabled.
See SearchRawTransactionsVerbose to retrieve a list of data structures with information about the transactions instead of the transactions themselves.
func (*Client) SearchRawTransactionsAsync ¶
func (c *Client) SearchRawTransactionsAsync(address util.Address, skip, count int, reverse bool, filterAddrs []string) FutureSearchRawTransactionsResult
SearchRawTransactionsAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See SearchRawTransactions for the blocking version and more details.
func (*Client) SearchRawTransactionsVerbose ¶
func (c *Client) SearchRawTransactionsVerbose(address util.Address, skip, count int, includePrevOut, reverse bool, filterAddrs []string) ([]*btcjson.SearchRawTransactionsResult, error)
SearchRawTransactionsVerbose returns a list of data structures that describe transactions which involve the passed address.
NOTE: Chain servers do not typically provide this capability unless it has specifically been enabled.
See SearchRawTransactions to retrieve a list of raw transactions instead.
func (*Client) SearchRawTransactionsVerboseAsync ¶
func (c *Client) SearchRawTransactionsVerboseAsync(address util.Address, skip, count int, includePrevOut, reverse bool, filterAddrs *[]string) FutureSearchRawTransactionsVerboseResult
SearchRawTransactionsVerboseAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See SearchRawTransactionsVerbose for the blocking version and more details.
func (*Client) SendRawTransaction ¶
SendRawTransaction submits the encoded transaction to the server which will then relay it to the network.
func (*Client) SendRawTransactionAsync ¶
func (c *Client) SendRawTransactionAsync(tx *wire.MsgTx, allowHighFees bool) FutureSendRawTransactionResult
SendRawTransactionAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See SendRawTransaction for the blocking version and more details.
func (*Client) Session ¶
func (c *Client) Session() (*btcjson.SessionResult, error)
Session returns details regarding a websocket client's current connection.
This RPC requires the client to be running in websocket mode.
NOTE: This is a btcsuite extension.
func (*Client) SessionAsync ¶
func (c *Client) SessionAsync() FutureSessionResult
SessionAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See Session for the blocking version and more details.
NOTE: This is a btcsuite extension.
func (*Client) SetGenerate ¶
SetGenerate sets the server to generate coins (mine) or not.
func (*Client) SetGenerateAsync ¶
func (c *Client) SetGenerateAsync(enable bool, numCPUs int) FutureSetGenerateResult
SetGenerateAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See SetGenerate for the blocking version and more details.
func (*Client) Shutdown ¶
func (c *Client) Shutdown()
Shutdown shuts down the client by disconnecting any connections associated with the client and, when automatic reconnect is enabled, preventing future attempts to reconnect. It also stops all goroutines.
func (*Client) SubmitBlock ¶
SubmitBlock attempts to submit a new block into the bitcoin network.
func (*Client) SubmitBlockAsync ¶
func (c *Client) SubmitBlockAsync(block *util.Block, options *btcjson.SubmitBlockOptions) FutureSubmitBlockResult
SubmitBlockAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See SubmitBlock for the blocking version and more details.
func (*Client) Version ¶
func (c *Client) Version() (map[string]btcjson.VersionResult, error)
Version returns information about the server's JSON-RPC API versions.
NOTE: This is a btcsuite extension ported from github.com/decred/dcrrpcclient.
func (*Client) VersionAsync ¶
func (c *Client) VersionAsync() FutureVersionResult
VersionAsync returns an instance of a type that can be used to get the result of the RPC at some future time by invoking the Receive function on the returned instance.
See Version for the blocking version and more details.
NOTE: This is a btcsuite extension ported from github.com/decred/dcrrpcclient.
func (*Client) WaitForShutdown ¶
func (c *Client) WaitForShutdown()
WaitForShutdown blocks until the client goroutines are stopped and the connection is closed.
type ConnConfig ¶
type ConnConfig struct { // Host is the IP address and port of the RPC server you want to connect // to. Host string // Endpoint is the websocket endpoint on the RPC server. This is // typically "ws". Endpoint string // User is the username to use to authenticate to the RPC server. User string // Pass is the passphrase to use to authenticate to the RPC server. Pass string // DisableTLS specifies whether transport layer security should be // disabled. It is recommended to always use TLS if the RPC server // supports it as otherwise your username and password is sent across // the wire in cleartext. DisableTLS bool // Certificates are the bytes for a PEM-encoded certificate chain used // for the TLS connection. It has no effect if the DisableTLS parameter // is true. Certificates []byte // Proxy specifies to connect through a SOCKS 5 proxy server. It may // be an empty string if a proxy is not required. Proxy string // ProxyUser is an optional username to use for the proxy server if it // requires authentication. It has no effect if the Proxy parameter // is not set. ProxyUser string // ProxyPass is an optional password to use for the proxy server if it // requires authentication. It has no effect if the Proxy parameter // is not set. ProxyPass string // DisableAutoReconnect specifies the client should not automatically // try to reconnect to the server when it has been disconnected. DisableAutoReconnect bool // DisableConnectOnNew specifies that a websocket client connection // should not be tried when creating the client with New. Instead, the // client is created and returned unconnected, and Connect must be // called manually. DisableConnectOnNew bool // HTTPPostMode instructs the client to run using multiple independent // connections issuing HTTP POST requests instead of using the default // of websockets. Websockets are generally preferred as some of the // features of the client such notifications only work with websockets, // however, not all servers support the websocket extensions, so this // flag can be set to true to use basic HTTP POST requests instead. HTTPPostMode bool // RequestTimeout is the time it'll take for a request to timeout if // it doesn't get a response. RequestTimeout time.Duration // ConnectionTimeout is the time it'll take for to try to connect // to the RPC server before the connection times out. ConnectionTimeout time.Duration // EnableBCInfoHacks is an option provided to enable compatibility hacks // when connecting to blockchain.info RPC server EnableBCInfoHacks bool }
ConnConfig describes the connection configuration parameters for the client. This
type FutureAddNodeResult ¶
type FutureAddNodeResult chan *response
FutureAddNodeResult is a future promise to deliver the result of an AddNodeAsync RPC invocation (or an applicable error).
func (FutureAddNodeResult) Receive ¶
func (r FutureAddNodeResult) Receive() error
Receive waits for the response promised by the future and returns an error if any occurred when performing the specified command.
type FutureCreateRawTransactionResult ¶
type FutureCreateRawTransactionResult chan *response
FutureCreateRawTransactionResult is a future promise to deliver the result of a CreateRawTransactionAsync RPC invocation (or an applicable error).
type FutureDebugLevelResult ¶
type FutureDebugLevelResult chan *response
FutureDebugLevelResult is a future promise to deliver the result of a DebugLevelAsync RPC invocation (or an applicable error).
func (FutureDebugLevelResult) Receive ¶
func (r FutureDebugLevelResult) Receive() (string, error)
Receive waits for the response promised by the future and returns the result of setting the debug logging level to the passed level specification or the list of of the available subsystems for the special keyword 'show'.
type FutureDecodeRawTransactionResult ¶
type FutureDecodeRawTransactionResult chan *response
FutureDecodeRawTransactionResult is a future promise to deliver the result of a DecodeRawTransactionAsync RPC invocation (or an applicable error).
func (FutureDecodeRawTransactionResult) Receive ¶
func (r FutureDecodeRawTransactionResult) Receive() (*btcjson.TxRawResult, error)
Receive waits for the response promised by the future and returns information about a transaction given its serialized bytes.
type FutureDecodeScriptResult ¶
type FutureDecodeScriptResult chan *response
FutureDecodeScriptResult is a future promise to deliver the result of a DecodeScriptAsync RPC invocation (or an applicable error).
func (FutureDecodeScriptResult) Receive ¶
func (r FutureDecodeScriptResult) Receive() (*btcjson.DecodeScriptResult, error)
Receive waits for the response promised by the future and returns information about a script given its serialized bytes.
type FutureGenerateResult ¶
type FutureGenerateResult chan *response
FutureGenerateResult is a future promise to deliver the result of a GenerateAsync RPC invocation (or an applicable error).
type FutureGetBestBlockHashResult ¶
type FutureGetBestBlockHashResult chan *response
FutureGetBestBlockHashResult is a future promise to deliver the result of a GetBestBlockAsync RPC invocation (or an applicable error).
type FutureGetBestBlockResult ¶
type FutureGetBestBlockResult chan *response
FutureGetBestBlockResult is a future promise to deliver the result of a GetBestBlockAsync RPC invocation (or an applicable error).
type FutureGetBlockCountResult ¶
type FutureGetBlockCountResult chan *response
FutureGetBlockCountResult is a future promise to deliver the result of a GetBlockCountAsync RPC invocation (or an applicable error).
func (FutureGetBlockCountResult) Receive ¶
func (r FutureGetBlockCountResult) Receive() (int64, error)
Receive waits for the response promised by the future and returns the number of blocks in the longest block dag.
type FutureGetBlockDAGInfoResult ¶
type FutureGetBlockDAGInfoResult chan *response
FutureGetBlockDAGInfoResult is a promise to deliver the result of a GetBlockDAGInfoAsync RPC invocation (or an applicable error).
func (FutureGetBlockDAGInfoResult) Receive ¶
func (r FutureGetBlockDAGInfoResult) Receive() (*btcjson.GetBlockDAGInfoResult, error)
Receive waits for the response promised by the future and returns dag info result provided by the server.
type FutureGetBlockHashResult ¶
type FutureGetBlockHashResult chan *response
FutureGetBlockHashResult is a future promise to deliver the result of a GetBlockHashAsync RPC invocation (or an applicable error).
type FutureGetBlockHeaderResult ¶
type FutureGetBlockHeaderResult chan *response
FutureGetBlockHeaderResult is a future promise to deliver the result of a GetBlockHeaderAsync RPC invocation (or an applicable error).
func (FutureGetBlockHeaderResult) Receive ¶
func (r FutureGetBlockHeaderResult) Receive() (*wire.BlockHeader, error)
Receive waits for the response promised by the future and returns the blockheader requested from the server given its hash.
type FutureGetBlockHeaderVerboseResult ¶
type FutureGetBlockHeaderVerboseResult chan *response
FutureGetBlockHeaderVerboseResult is a future promise to deliver the result of a GetBlockAsync RPC invocation (or an applicable error).
func (FutureGetBlockHeaderVerboseResult) Receive ¶
func (r FutureGetBlockHeaderVerboseResult) Receive() (*btcjson.GetBlockHeaderVerboseResult, error)
Receive waits for the response promised by the future and returns the data structure of the blockheader requested from the server given its hash.
type FutureGetBlockResult ¶
type FutureGetBlockResult chan *response
FutureGetBlockResult is a future promise to deliver the result of a GetBlockAsync RPC invocation (or an applicable error).
type FutureGetBlockTemplateResult ¶
type FutureGetBlockTemplateResult chan *response
FutureGetBlockTemplateResult is a future promise to deliver the result of a GetBlockTemplate RPC invocation (or an applicable error).
func (FutureGetBlockTemplateResult) Receive ¶
func (r FutureGetBlockTemplateResult) Receive() (*btcjson.GetBlockTemplateResult, error)
Receive waits for the response promised by the future and returns an error if any occurred when submitting the block.
type FutureGetBlockVerboseResult ¶
type FutureGetBlockVerboseResult chan *response
FutureGetBlockVerboseResult is a future promise to deliver the result of a GetBlockVerboseAsync RPC invocation (or an applicable error).
func (FutureGetBlockVerboseResult) Receive ¶
func (r FutureGetBlockVerboseResult) Receive() (*btcjson.GetBlockVerboseResult, error)
Receive waits for the response promised by the future and returns the data structure from the server with information about the requested block.
type FutureGetBlocksResult ¶
type FutureGetBlocksResult chan *response
FutureGetBlocksResult is a future promise to deliver the result of a GetBlocksAsync RPC invocation (or an applicable error).
func (FutureGetBlocksResult) Receive ¶
func (r FutureGetBlocksResult) Receive() (*btcjson.GetBlocksResult, error)
Receive waits for the response promised by the future and returns the blocks starting from startHash up to the virtual ordered by blue score.
type FutureGetCFilterHeaderResult ¶
type FutureGetCFilterHeaderResult chan *response
FutureGetCFilterHeaderResult is a future promise to deliver the result of a GetCFilterHeaderAsync RPC invocation (or an applicable error).
func (FutureGetCFilterHeaderResult) Receive ¶
func (r FutureGetCFilterHeaderResult) Receive() (*wire.MsgCFHeaders, error)
Receive waits for the response promised by the future and returns the raw filter header requested from the server given its block hash.
type FutureGetCFilterResult ¶
type FutureGetCFilterResult chan *response
FutureGetCFilterResult is a future promise to deliver the result of a GetCFilterAsync RPC invocation (or an applicable error).
func (FutureGetCFilterResult) Receive ¶
func (r FutureGetCFilterResult) Receive() (*wire.MsgCFilter, error)
Receive waits for the response promised by the future and returns the raw filter requested from the server given its block hash.
type FutureGetChainFromBlockResult ¶
type FutureGetChainFromBlockResult chan *response
FutureGetChainFromBlockResult is a future promise to deliver the result of a GetChainFromBlockAsync RPC invocation (or an applicable error).
func (FutureGetChainFromBlockResult) Receive ¶
func (r FutureGetChainFromBlockResult) Receive() (*btcjson.GetChainFromBlockResult, error)
Receive waits for the response promised by the future and returns the selected parent chain starting from startHash up to the virtual. If startHash is not in the selected parent chain, it goes down the DAG until it does reach a hash in the selected parent chain while collecting hashes into RemovedChainBlockHashes.
type FutureGetConnectionCountResult ¶
type FutureGetConnectionCountResult chan *response
FutureGetConnectionCountResult is a future promise to deliver the result of a GetConnectionCountAsync RPC invocation (or an applicable error).
func (FutureGetConnectionCountResult) Receive ¶
func (r FutureGetConnectionCountResult) Receive() (int64, error)
Receive waits for the response promised by the future and returns the number of active connections to other peers.
type FutureGetCurrentNetResult ¶
type FutureGetCurrentNetResult chan *response
FutureGetCurrentNetResult is a future promise to deliver the result of a GetCurrentNetAsync RPC invocation (or an applicable error).
func (FutureGetCurrentNetResult) Receive ¶
func (r FutureGetCurrentNetResult) Receive() (wire.BitcoinNet, error)
Receive waits for the response promised by the future and returns the network the server is running on.
type FutureGetDifficultyResult ¶
type FutureGetDifficultyResult chan *response
FutureGetDifficultyResult is a future promise to deliver the result of a GetDifficultyAsync RPC invocation (or an applicable error).
func (FutureGetDifficultyResult) Receive ¶
func (r FutureGetDifficultyResult) Receive() (float64, error)
Receive waits for the response promised by the future and returns the proof-of-work difficulty as a multiple of the minimum difficulty.
type FutureGetGenerateResult ¶
type FutureGetGenerateResult chan *response
FutureGetGenerateResult is a future promise to deliver the result of a GetGenerateAsync RPC invocation (or an applicable error).
func (FutureGetGenerateResult) Receive ¶
func (r FutureGetGenerateResult) Receive() (bool, error)
Receive waits for the response promised by the future and returns true if the server is set to mine, otherwise false.
type FutureGetHashesPerSecResult ¶
type FutureGetHashesPerSecResult chan *response
FutureGetHashesPerSecResult is a future promise to deliver the result of a GetHashesPerSecAsync RPC invocation (or an applicable error).
func (FutureGetHashesPerSecResult) Receive ¶
func (r FutureGetHashesPerSecResult) Receive() (int64, error)
Receive waits for the response promised by the future and returns a recent hashes per second performance measurement while generating coins (mining). Zero is returned if the server is not mining.
type FutureGetHeadersResult ¶
type FutureGetHeadersResult chan *response
FutureGetHeadersResult is a future promise to deliver the result of a getheaders RPC invocation (or an applicable error).
NOTE: This is a btcsuite extension ported from github.com/decred/dcrrpcclient.
func (FutureGetHeadersResult) Receive ¶
func (r FutureGetHeadersResult) Receive() ([]wire.BlockHeader, error)
Receive waits for the response promised by the future and returns the getheaders result.
NOTE: This is a btcsuite extension ported from github.com/decred/dcrrpcclient.
type FutureGetManualNodeInfoNoDNSResult ¶
type FutureGetManualNodeInfoNoDNSResult chan *response
FutureGetManualNodeInfoNoDNSResult is a future promise to deliver the result of a GetManualNodeInfoNoDNSAsync RPC invocation (or an applicable error).
func (FutureGetManualNodeInfoNoDNSResult) Receive ¶
func (r FutureGetManualNodeInfoNoDNSResult) Receive() ([]string, error)
Receive waits for the response promised by the future and returns a list of manually added (persistent) peers.
type FutureGetManualNodeInfoResult ¶
type FutureGetManualNodeInfoResult chan *response
FutureGetManualNodeInfoResult is a future promise to deliver the result of a GetManualNodeInfoAsync RPC invocation (or an applicable error).
func (FutureGetManualNodeInfoResult) Receive ¶
func (r FutureGetManualNodeInfoResult) Receive() ([]btcjson.GetManualNodeInfoResult, error)
Receive waits for the response promised by the future and returns information about manually added (persistent) peers.
type FutureGetMempoolEntryResult ¶
type FutureGetMempoolEntryResult chan *response
FutureGetMempoolEntryResult is a future promise to deliver the result of a GetMempoolEntryAsync RPC invocation (or an applicable error).
func (FutureGetMempoolEntryResult) Receive ¶
func (r FutureGetMempoolEntryResult) Receive() (*btcjson.GetMempoolEntryResult, error)
Receive waits for the response promised by the future and returns a data structure with information about the transaction in the memory pool given its hash.
type FutureGetMiningInfoResult ¶
type FutureGetMiningInfoResult chan *response
FutureGetMiningInfoResult is a future promise to deliver the result of a GetMiningInfoAsync RPC invocation (or an applicable error).
func (FutureGetMiningInfoResult) Receive ¶
func (r FutureGetMiningInfoResult) Receive() (*btcjson.GetMiningInfoResult, error)
Receive waits for the response promised by the future and returns the mining information.
type FutureGetNetTotalsResult ¶
type FutureGetNetTotalsResult chan *response
FutureGetNetTotalsResult is a future promise to deliver the result of a GetNetTotalsAsync RPC invocation (or an applicable error).
func (FutureGetNetTotalsResult) Receive ¶
func (r FutureGetNetTotalsResult) Receive() (*btcjson.GetNetTotalsResult, error)
Receive waits for the response promised by the future and returns network traffic statistics.
type FutureGetNetworkHashPS ¶
type FutureGetNetworkHashPS chan *response
FutureGetNetworkHashPS is a future promise to deliver the result of a GetNetworkHashPSAsync RPC invocation (or an applicable error).
func (FutureGetNetworkHashPS) Receive ¶
func (r FutureGetNetworkHashPS) Receive() (int64, error)
Receive waits for the response promised by the future and returns the estimated network hashes per second for the block heights provided by the parameters.
type FutureGetPeerInfoResult ¶
type FutureGetPeerInfoResult chan *response
FutureGetPeerInfoResult is a future promise to deliver the result of a GetPeerInfoAsync RPC invocation (or an applicable error).
func (FutureGetPeerInfoResult) Receive ¶
func (r FutureGetPeerInfoResult) Receive() ([]btcjson.GetPeerInfoResult, error)
Receive waits for the response promised by the future and returns data about each connected network peer.
type FutureGetRawMempoolResult ¶
type FutureGetRawMempoolResult chan *response
FutureGetRawMempoolResult is a future promise to deliver the result of a GetRawMempoolAsync RPC invocation (or an applicable error).
type FutureGetRawMempoolVerboseResult ¶
type FutureGetRawMempoolVerboseResult chan *response
FutureGetRawMempoolVerboseResult is a future promise to deliver the result of a GetRawMempoolVerboseAsync RPC invocation (or an applicable error).
func (FutureGetRawMempoolVerboseResult) Receive ¶
func (r FutureGetRawMempoolVerboseResult) Receive() (map[string]btcjson.GetRawMempoolVerboseResult, error)
Receive waits for the response promised by the future and returns a map of transaction hashes to an associated data structure with information about the transaction for all transactions in the memory pool.
type FutureGetRawTransactionResult ¶
type FutureGetRawTransactionResult chan *response
FutureGetRawTransactionResult is a future promise to deliver the result of a GetRawTransactionAsync RPC invocation (or an applicable error).
type FutureGetRawTransactionVerboseResult ¶
type FutureGetRawTransactionVerboseResult chan *response
FutureGetRawTransactionVerboseResult is a future promise to deliver the result of a GetRawTransactionVerboseAsync RPC invocation (or an applicable error).
func (FutureGetRawTransactionVerboseResult) Receive ¶
func (r FutureGetRawTransactionVerboseResult) Receive() (*btcjson.TxRawResult, error)
Receive waits for the response promised by the future and returns information about a transaction given its hash.
type FutureGetSubnetworkResult ¶
type FutureGetSubnetworkResult chan *response
FutureGetSubnetworkResult is a future promise to deliver the result of a GetSubnetworkAsync RPC invocation (or an applicable error).
func (FutureGetSubnetworkResult) Receive ¶
func (r FutureGetSubnetworkResult) Receive() (*btcjson.GetSubnetworkResult, error)
Receive waits for the response promised by the future and returns information regarding the requested subnetwork
type FutureGetTxOutResult ¶
type FutureGetTxOutResult chan *response
FutureGetTxOutResult is a future promise to deliver the result of a GetTxOutAsync RPC invocation (or an applicable error).
func (FutureGetTxOutResult) Receive ¶
func (r FutureGetTxOutResult) Receive() (*btcjson.GetTxOutResult, error)
Receive waits for the response promised by the future and returns a transaction given its hash.
type FutureInvalidateBlockResult ¶
type FutureInvalidateBlockResult chan *response
FutureInvalidateBlockResult is a future promise to deliver the result of a InvalidateBlockAsync RPC invocation (or an applicable error).
func (FutureInvalidateBlockResult) Receive ¶
func (r FutureInvalidateBlockResult) Receive() error
Receive waits for the response promised by the future and returns the raw block requested from the server given its hash.
type FutureLoadTxFilterResult ¶
type FutureLoadTxFilterResult chan *response
FutureLoadTxFilterResult is a future promise to deliver the result of a LoadTxFilterAsync RPC invocation (or an applicable error).
NOTE: This is a btcd extension ported from github.com/decred/dcrrpcclient and requires a websocket connection.
func (FutureLoadTxFilterResult) Receive ¶
func (r FutureLoadTxFilterResult) Receive() error
Receive waits for the response promised by the future and returns an error if the registration was not successful.
NOTE: This is a btcd extension ported from github.com/decred/dcrrpcclient and requires a websocket connection.
type FutureNotifyBlocksResult ¶
type FutureNotifyBlocksResult chan *response
FutureNotifyBlocksResult is a future promise to deliver the result of a NotifyBlocksAsync RPC invocation (or an applicable error).
func (FutureNotifyBlocksResult) Receive ¶
func (r FutureNotifyBlocksResult) Receive() error
Receive waits for the response promised by the future and returns an error if the registration was not successful.
type FutureNotifyChainChangesResult ¶
type FutureNotifyChainChangesResult chan *response
FutureNotifyChainChangesResult is a future promise to deliver the result of a NotifyChainChangesAsync RPC invocation (or an applicable error).
func (FutureNotifyChainChangesResult) Receive ¶
func (r FutureNotifyChainChangesResult) Receive() error
Receive waits for the response promised by the future and returns an error if the registration was not successful.
type FutureNotifyNewTransactionsResult ¶
type FutureNotifyNewTransactionsResult chan *response
FutureNotifyNewTransactionsResult is a future promise to deliver the result of a NotifyNewTransactionsAsync RPC invocation (or an applicable error).
func (FutureNotifyNewTransactionsResult) Receive ¶
func (r FutureNotifyNewTransactionsResult) Receive() error
Receive waits for the response promised by the future and returns an error if the registration was not successful.
type FuturePingResult ¶
type FuturePingResult chan *response
FuturePingResult is a future promise to deliver the result of a PingAsync RPC invocation (or an applicable error).
func (FuturePingResult) Receive ¶
func (r FuturePingResult) Receive() error
Receive waits for the response promised by the future and returns the result of queueing a ping to be sent to each connected peer.
type FutureRawResult ¶
type FutureRawResult chan *response
FutureRawResult is a future promise to deliver the result of a RawRequest RPC invocation (or an applicable error).
func (FutureRawResult) Receive ¶
func (r FutureRawResult) Receive() (json.RawMessage, error)
Receive waits for the response promised by the future and returns the raw response, or an error if the request was unsuccessful.
type FutureRescanBlocksResult ¶
type FutureRescanBlocksResult chan *response
FutureRescanBlocksResult is a future promise to deliver the result of a RescanBlocksAsync RPC invocation (or an applicable error).
NOTE: This is a btcsuite extension ported from github.com/decred/dcrrpcclient.
func (FutureRescanBlocksResult) Receive ¶
func (r FutureRescanBlocksResult) Receive() ([]btcjson.RescannedBlock, error)
Receive waits for the response promised by the future and returns the discovered rescanblocks data.
NOTE: This is a btcsuite extension ported from github.com/decred/dcrrpcclient.
type FutureSearchRawTransactionsResult ¶
type FutureSearchRawTransactionsResult chan *response
FutureSearchRawTransactionsResult is a future promise to deliver the result of the SearchRawTransactionsAsync RPC invocation (or an applicable error).
type FutureSearchRawTransactionsVerboseResult ¶
type FutureSearchRawTransactionsVerboseResult chan *response
FutureSearchRawTransactionsVerboseResult is a future promise to deliver the result of the SearchRawTransactionsVerboseAsync RPC invocation (or an applicable error).
func (FutureSearchRawTransactionsVerboseResult) Receive ¶
func (r FutureSearchRawTransactionsVerboseResult) Receive() ([]*btcjson.SearchRawTransactionsResult, error)
Receive waits for the response promised by the future and returns the found raw transactions.
type FutureSendRawTransactionResult ¶
type FutureSendRawTransactionResult chan *response
FutureSendRawTransactionResult is a future promise to deliver the result of a SendRawTransactionAsync RPC invocation (or an applicable error).
type FutureSessionResult ¶
type FutureSessionResult chan *response
FutureSessionResult is a future promise to deliver the result of a SessionAsync RPC invocation (or an applicable error).
func (FutureSessionResult) Receive ¶
func (r FutureSessionResult) Receive() (*btcjson.SessionResult, error)
Receive waits for the response promised by the future and returns the session result.
type FutureSetGenerateResult ¶
type FutureSetGenerateResult chan *response
FutureSetGenerateResult is a future promise to deliver the result of a SetGenerateAsync RPC invocation (or an applicable error).
func (FutureSetGenerateResult) Receive ¶
func (r FutureSetGenerateResult) Receive() error
Receive waits for the response promised by the future and returns an error if any occurred when setting the server to generate coins (mine) or not.
type FutureSubmitBlockResult ¶
type FutureSubmitBlockResult chan *response
FutureSubmitBlockResult is a future promise to deliver the result of a SubmitBlockAsync RPC invocation (or an applicable error).
func (FutureSubmitBlockResult) Receive ¶
func (r FutureSubmitBlockResult) Receive() error
Receive waits for the response promised by the future and returns an error if any occurred when submitting the block.
type FutureVersionResult ¶
type FutureVersionResult chan *response
FutureVersionResult is a future promise to deliver the result of a version RPC invocation (or an applicable error).
NOTE: This is a btcsuite extension ported from github.com/decred/dcrrpcclient.
func (FutureVersionResult) Receive ¶
func (r FutureVersionResult) Receive() (map[string]btcjson.VersionResult, error)
Receive waits for the response promised by the future and returns the version result.
NOTE: This is a btcsuite extension ported from github.com/decred/dcrrpcclient.
type NotificationHandlers ¶
type NotificationHandlers struct { // OnClientConnected is invoked when the client connects or reconnects // to the RPC server. This callback is run async with the rest of the // notification handlers, and is safe for blocking client requests. OnClientConnected func() // OnBlockAdded is invoked when a block is connected to the DAG. // It will only be invoked if a preceding call to NotifyBlocks has been made // to register for the notification and the function is non-nil. // // NOTE: Deprecated. Use OnFilteredBlockAdded instead. OnBlockAdded func(hash *daghash.Hash, height int32, t time.Time) // OnFilteredBlockAdded is invoked when a block is connected to the // bloackDAG. It will only be invoked if a preceding call to // NotifyBlocks has been made to register for the notification and the // function is non-nil. Its parameters differ from OnBlockAdded: it // receives the block's height, header, and relevant transactions. OnFilteredBlockAdded func(height uint64, header *wire.BlockHeader, txs []*util.Tx) // OnChainChanged is invoked when the selected parent chain of the // DAG had changed. It will only be invoked if a preceding call to // NotifyChainChanges has been made to register for the notification and the // function is non-nil. OnChainChanged func(removedChainBlockHashes []*daghash.Hash, addedChainBlocks []*ChainBlock) // OnRelevantTxAccepted is invoked when an unmined transaction passes // the client's transaction filter. // // NOTE: This is a btcsuite extension ported from // github.com/decred/dcrrpcclient. OnRelevantTxAccepted func(transaction []byte) // OnTxAccepted is invoked when a transaction is accepted into the // memory pool. It will only be invoked if a preceding call to // NotifyNewTransactions with the verbose flag set to false has been // made to register for the notification and the function is non-nil. OnTxAccepted func(hash *daghash.Hash, amount util.Amount) // OnTxAccepted is invoked when a transaction is accepted into the // memory pool. It will only be invoked if a preceding call to // NotifyNewTransactions with the verbose flag set to true has been // made to register for the notification and the function is non-nil. OnTxAcceptedVerbose func(txDetails *btcjson.TxRawResult) // OnUnknownNotification is invoked when an unrecognized notification // is received. This typically means the notification handling code // for this package needs to be updated for a new notification type or // the caller is using a custom notification this package does not know // about. OnUnknownNotification func(method string, params []json.RawMessage) }
NotificationHandlers defines callback function pointers to invoke with notifications. Since all of the functions are nil by default, all notifications are effectively ignored until their handlers are set to a concrete callback.