mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-05-21 22:36:42 +00:00

* [NOD-204] Add UTXOCommitment to GetBlockTemplateResult * [NOD-204] Add UTXOCommitment to GetBlockTemplateResult
817 lines
47 KiB
Go
817 lines
47 KiB
Go
// Copyright (c) 2015-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.
|
|
|
|
package rpc
|
|
|
|
import (
|
|
"errors"
|
|
"sort"
|
|
"strings"
|
|
"sync"
|
|
|
|
"github.com/daglabs/btcd/btcjson"
|
|
)
|
|
|
|
// helpDescsEnUS defines the English descriptions used for the help strings.
|
|
var helpDescsEnUS = map[string]string{
|
|
// DebugLevelCmd help.
|
|
"debugLevel--synopsis": "Dynamically changes the debug logging level.\n" +
|
|
"The levelspec can either a debug level or of the form:\n" +
|
|
"<subsystem>=<level>,<subsystem2>=<level2>,...\n" +
|
|
"The valid debug levels are trace, debug, info, warn, error, and critical.\n" +
|
|
"The valid subsystems are AMGR, ADXR, BCDB, BMGR, BTCD, CHAN, DISC, PEER, RPCS, SCRP, SRVR, and TXMP.\n" +
|
|
"Finally the keyword 'show' will return a list of the available subsystems.",
|
|
"debugLevel-levelSpec": "The debug level(s) to use or the keyword 'show'",
|
|
"debugLevel--condition0": "levelspec!=show",
|
|
"debugLevel--condition1": "levelspec=show",
|
|
"debugLevel--result0": "The string 'Done.'",
|
|
"debugLevel--result1": "The list of subsystems",
|
|
|
|
// AddManualNodeCmd help.
|
|
"addManualNode--synopsis": "Attempts to add or remove a persistent peer.",
|
|
"addManualNode-addr": "IP address and port of the peer to operate on",
|
|
"addManualNode-oneTry": "When enabled, will try a single connection to a peer",
|
|
|
|
// NodeCmd help.
|
|
"node--synopsis": "Attempts to add or remove a peer.",
|
|
"node-subCmd": "'disconnect' to remove all matching non-persistent peers, 'remove' to remove a persistent peer, or 'connect' to connect to a peer",
|
|
"node-target": "Either the IP address and port of the peer to operate on, or a valid peer ID.",
|
|
"node-connectSubCmd": "'perm' to make the connected peer a permanent one, 'temp' to try a single connect to a peer",
|
|
|
|
// TransactionInput help.
|
|
"transactionInput-txId": "The hash of the input transaction",
|
|
"transactionInput-vout": "The specific output of the input transaction to redeem",
|
|
|
|
// CreateRawTransactionCmd help.
|
|
"createRawTransaction--synopsis": "Returns a new transaction spending the provided inputs and sending to the provided addresses.\n" +
|
|
"The transaction inputs are not signed in the created transaction.\n" +
|
|
"The signrawtransaction RPC command provided by wallet must be used to sign the resulting transaction.",
|
|
"createRawTransaction-inputs": "The inputs to the transaction",
|
|
"createRawTransaction-amounts": "JSON object with the destination addresses as keys and amounts as values",
|
|
"createRawTransaction-amounts--key": "address",
|
|
"createRawTransaction-amounts--value": "n.nnn",
|
|
"createRawTransaction-amounts--desc": "The destination address as the key and the amount in BTC as the value",
|
|
"createRawTransaction-lockTime": "Locktime value; a non-zero value will also locktime-activate the inputs",
|
|
"createRawTransaction--result0": "Hex-encoded bytes of the serialized transaction",
|
|
|
|
// ScriptSig help.
|
|
"scriptSig-asm": "Disassembly of the script",
|
|
"scriptSig-hex": "Hex-encoded bytes of the script",
|
|
|
|
// PrevOut help.
|
|
"prevOut-addresses": "previous output addresses",
|
|
"prevOut-value": "previous output value",
|
|
|
|
// VinPrevOut help.
|
|
"vinPrevOut-coinbase": "The hex-encoded bytes of the signature script (coinbase txns only)",
|
|
"vinPrevOut-txId": "The hash of the origin transaction (non-coinbase txns only)",
|
|
"vinPrevOut-vout": "The index of the output being redeemed from the origin transaction (non-coinbase txns only)",
|
|
"vinPrevOut-scriptSig": "The signature script used to redeem the origin transaction as a JSON object (non-coinbase txns only)",
|
|
"vinPrevOut-prevOut": "Data from the origin transaction output with index vout.",
|
|
"vinPrevOut-sequence": "The script sequence number",
|
|
|
|
// Vin help.
|
|
"vin-coinbase": "The hex-encoded bytes of the signature script (coinbase txns only)",
|
|
"vin-txId": "The hash of the origin transaction (non-coinbase txns only)",
|
|
"vin-vout": "The index of the output being redeemed from the origin transaction (non-coinbase txns only)",
|
|
"vin-scriptSig": "The signature script used to redeem the origin transaction as a JSON object (non-coinbase txns only)",
|
|
"vin-sequence": "The script sequence number",
|
|
|
|
// ScriptPubKeyResult help.
|
|
"scriptPubKeyResult-asm": "Disassembly of the script",
|
|
"scriptPubKeyResult-hex": "Hex-encoded bytes of the script",
|
|
"scriptPubKeyResult-type": "The type of the script (e.g. 'pubkeyhash')",
|
|
"scriptPubKeyResult-reqSigs": "The number of required signatures",
|
|
"scriptPubKeyResult-addresses": "The bitcoin addresses associated with this script",
|
|
|
|
// Vout help.
|
|
"vout-value": "The amount in BTC",
|
|
"vout-n": "The index of this transaction output",
|
|
"vout-scriptPubKey": "The public key script used to pay coins as a JSON object",
|
|
|
|
// TxRawDecodeResult help.
|
|
"txRawDecodeResult-txId": "The hash of the transaction",
|
|
"txRawDecodeResult-version": "The transaction version",
|
|
"txRawDecodeResult-lockTime": "The transaction lock time",
|
|
"txRawDecodeResult-vin": "The transaction inputs as JSON objects",
|
|
"txRawDecodeResult-vout": "The transaction outputs as JSON objects",
|
|
|
|
// DecodeRawTransactionCmd help.
|
|
"decodeRawTransaction--synopsis": "Returns a JSON object representing the provided serialized, hex-encoded transaction.",
|
|
"decodeRawTransaction-hexTx": "Serialized, hex-encoded transaction",
|
|
|
|
// DecodeScriptResult help.
|
|
"decodeScriptResult-asm": "Disassembly of the script",
|
|
"decodeScriptResult-type": "The type of the script (e.g. 'pubkeyhash')",
|
|
"decodeScriptResult-reqSigs": "The number of required signatures",
|
|
"decodeScriptResult-addresses": "The bitcoin addresses associated with this script",
|
|
"decodeScriptResult-p2sh": "The script hash for use in pay-to-script-hash transactions (only present if the provided redeem script is not already a pay-to-script-hash script)",
|
|
|
|
// DecodeScriptCmd help.
|
|
"decodeScript--synopsis": "Returns a JSON object with information about the provided hex-encoded script.",
|
|
"decodeScript-hexScript": "Hex-encoded script",
|
|
|
|
// EstimateFeeCmd help.
|
|
"estimateFee--synopsis": "Estimate the fee per kilobyte in satoshis " +
|
|
"required for a transaction to be mined before a certain number of " +
|
|
"blocks have been generated.",
|
|
"estimateFee-numBlocks": "The maximum number of blocks which can be " +
|
|
"generated before the transaction is mined.",
|
|
"estimateFee--result0": "Estimated fee per kilobyte in satoshis for a block to " +
|
|
"be mined in the next NumBlocks blocks.",
|
|
|
|
// GenerateCmd help
|
|
"generate--synopsis": "Generates a set number of blocks (simnet or regtest only) and returns a JSON\n" +
|
|
" array of their hashes.",
|
|
"generate-numBlocks": "Number of blocks to generate",
|
|
"generate--result0": "The hashes, in order, of blocks generated by the call",
|
|
|
|
// GetAllManualNodesInfoCmd help.
|
|
"getAllManualNodesInfo--synopsis": "Returns information about manually added (persistent) peers.",
|
|
"getAllManualNodesInfo-details": "Specifies whether the returned data is a JSON object including DNS and connection information, or just a list of added peers",
|
|
"getAllManualNodesInfo--condition0": "details=false",
|
|
"getAllManualNodesInfo--condition1": "details=true",
|
|
"getAllManualNodesInfo--result0": "List of added peers",
|
|
|
|
// GetManualNodeInfoResultAddr help.
|
|
"getManualNodeInfoResultAddr-address": "The ip address for this DNS entry",
|
|
"getManualNodeInfoResultAddr-connected": "The connection 'direction' (inbound/outbound/false)",
|
|
|
|
// GetManualNodeInfoResult help.
|
|
"getManualNodeInfoResult-manualNode": "The ip address or domain of the manually added peer",
|
|
"getManualNodeInfoResult-connected": "Whether or not the peer is currently connected",
|
|
"getManualNodeInfoResult-addresses": "DNS lookup and connection information about the peer",
|
|
|
|
// GetManualNodeInfoCmd help.
|
|
"getManualNodeInfo--synopsis": "Returns information about manually added (persistent) peers.",
|
|
"getManualNodeInfo-details": "Specifies whether the returned data is a JSON object including DNS and connection information, or just a list of added peers",
|
|
"getManualNodeInfo-node": "Only return information about this specific peer instead of all added peers",
|
|
"getManualNodeInfo--condition0": "details=false",
|
|
"getManualNodeInfo--condition1": "details=true",
|
|
"getManualNodeInfo--result0": "List of added peers",
|
|
|
|
// GetBestBlockResult help.
|
|
"getBestBlockResult-hash": "Hex-encoded bytes of the best block hash",
|
|
"getBestBlockResult-height": "Height of the best block",
|
|
|
|
// GetBestBlockCmd help.
|
|
"getBestBlock--synopsis": "Get block height and hash of best block in the main chain.",
|
|
"getBestBlock--result0": "Get block height and hash of best block in the main chain.",
|
|
|
|
// GetBestBlockHashCmd help.
|
|
"getBestBlockHash--synopsis": "Returns the hash of the of the best (most recent) block in the longest block chain.",
|
|
"getBestBlockHash--result0": "The hex-encoded block hash",
|
|
|
|
// GetBlockCmd help.
|
|
"getBlock--synopsis": "Returns information about a block given its hash.",
|
|
"getBlock-hash": "The hash of the block",
|
|
"getBlock-verbose": "Specifies the block is returned as a JSON object instead of hex-encoded string",
|
|
"getBlock-verboseTx": "Specifies that each transaction is returned as a JSON object and only applies if the verbose flag is true (btcd extension)",
|
|
"getBlock-subnetwork": "If passed, the returned block will be a partial block of the specified subnetwork",
|
|
"getBlock--condition0": "verbose=false",
|
|
"getBlock--condition1": "verbose=true",
|
|
"getBlock-acceptedTx": "Specifies if the transaction got accepted",
|
|
"getBlock--result0": "Hex-encoded bytes of the serialized block",
|
|
|
|
// GetBlockChainInfoCmd help.
|
|
"getBlockDagInfo--synopsis": "Returns information about the current blockDAG state and the status of any active soft-fork deployments.",
|
|
|
|
// GetBlockDAGInfoResult help.
|
|
"getBlockDagInfoResult-dag": "The name of the DAG the daemon is on (testnet, mainnet, etc)",
|
|
"getBlockDagInfoResult-blocks": "The number of blocks in the best known chain",
|
|
"getBlockDagInfoResult-headers": "The number of headers that we've gathered for in the best known chain",
|
|
"getBlockDagInfoResult-tipHashes": "The block hashes for the tips in the DAG",
|
|
"getBlockDagInfoResult-difficulty": "The current chain difficulty",
|
|
"getBlockDagInfoResult-medianTime": "The median time from the PoV of the best block in the chain",
|
|
"getBlockDagInfoResult-verificationProgress": "An estimate for how much of the best chain we've verified",
|
|
"getBlockDagInfoResult-pruned": "A bool that indicates if the node is pruned or not",
|
|
"getBlockDagInfoResult-pruneHeight": "The lowest block retained in the current pruned chain",
|
|
"getBlockDagInfoResult-dagWork": "The total cumulative work in the DAG",
|
|
"getBlockDagInfoResult-softForks": "The status of the super-majority soft-forks",
|
|
"getBlockDagInfoResult-bip9SoftForks": "JSON object describing active BIP0009 deployments",
|
|
"getBlockDagInfoResult-bip9SoftForks--key": "bip9_softforks",
|
|
"getBlockDagInfoResult-bip9SoftForks--value": "An object describing a particular BIP009 deployment",
|
|
"getBlockDagInfoResult-bip9SoftForks--desc": "The status of any defined BIP0009 soft-fork deployments",
|
|
|
|
// SoftForkDescription help.
|
|
"softForkDescription-reject": "The current activation status of the softfork",
|
|
"softForkDescription-version": "The block version that signals enforcement of this softfork",
|
|
"softForkDescription-id": "The string identifier for the soft fork",
|
|
"-status": "A bool which indicates if the soft fork is active",
|
|
|
|
// TxRawResult help.
|
|
"txRawResult-hex": "Hex-encoded transaction",
|
|
"txRawResult-txId": "The hash of the transaction",
|
|
"txRawResult-version": "The transaction version",
|
|
"txRawResult-lockTime": "The transaction lock time",
|
|
"txRawResult-subnetwork": "The transaction subnetwork",
|
|
"txRawResult-gas": "The transaction gas",
|
|
"txRawResult-payloadHash": "The transaction payload hash",
|
|
"txRawResult-payload": "The transaction payload",
|
|
"txRawResult-vin": "The transaction inputs as JSON objects",
|
|
"txRawResult-vout": "The transaction outputs as JSON objects",
|
|
"txRawResult-blockHash": "Hash of the block the transaction is part of",
|
|
"txRawResult-confirmations": "Number of confirmations of the block (Will be 'null' if txindex is not disabled)",
|
|
"txRawResult-isInMempool": "Whether the transaction is in the mempool",
|
|
"txRawResult-time": "Transaction time in seconds since 1 Jan 1970 GMT",
|
|
"txRawResult-blockTime": "Block time in seconds since the 1 Jan 1970 GMT",
|
|
"txRawResult-size": "The size of the transaction in bytes",
|
|
"txRawResult-hash": "The wtxid of the transaction",
|
|
"txRawResult-acceptedBy": "The block in which the transaction got accepted in (Will be 'null' if txindex is not disabled)",
|
|
|
|
// SearchRawTransactionsResult help.
|
|
"searchRawTransactionsResult-hex": "Hex-encoded transaction",
|
|
"searchRawTransactionsResult-txId": "The hash of the transaction",
|
|
"searchRawTransactionsResult-hash": "The wxtid of the transaction",
|
|
"searchRawTransactionsResult-version": "The transaction version",
|
|
"searchRawTransactionsResult-lockTime": "The transaction lock time",
|
|
"searchRawTransactionsResult-vin": "The transaction inputs as JSON objects",
|
|
"searchRawTransactionsResult-vout": "The transaction outputs as JSON objects",
|
|
"searchRawTransactionsResult-blockHash": "Hash of the block the transaction is part of",
|
|
"searchRawTransactionsResult-confirmations": "Number of confirmations of the block (Will be 'null' if txindex is not disabled)",
|
|
"searchRawTransactionsResult-isInMempool": "Whether the transaction is in the mempool",
|
|
"searchRawTransactionsResult-time": "Transaction time in seconds since 1 Jan 1970 GMT",
|
|
"searchRawTransactionsResult-blockTime": "Block time in seconds since the 1 Jan 1970 GMT",
|
|
"searchRawTransactionsResult-size": "The size of the transaction in bytes",
|
|
|
|
// GetBlockVerboseResult help.
|
|
"getBlockVerboseResult-hash": "The hash of the block (same as provided)",
|
|
"getBlockVerboseResult-confirmations": "The number of confirmations",
|
|
"getBlockVerboseResult-size": "The size of the block",
|
|
"getBlockVerboseResult-height": "The height of the block in the block chain",
|
|
"getBlockVerboseResult-version": "The block version",
|
|
"getBlockVerboseResult-versionHex": "The block version in hexadecimal",
|
|
"getBlockVerboseResult-hashMerkleRoot": "Merkle tree reference to hash of all transactions for the block",
|
|
"getBlockVerboseResult-acceptedIdMerkleRoot": "Merkle tree reference to hash all transactions accepted form the block blues",
|
|
"getBlockVerboseResult-tx": "The transaction hashes (only when verbosetx=false)",
|
|
"getBlockVerboseResult-rawRx": "The transactions as JSON objects (only when verbosetx=true)",
|
|
"getBlockVerboseResult-time": "The block time in seconds since 1 Jan 1970 GMT",
|
|
"getBlockVerboseResult-nonce": "The block nonce",
|
|
"getBlockVerboseResult-bits": "The bits which represent the block difficulty",
|
|
"getBlockVerboseResult-difficulty": "The proof-of-work difficulty as a multiple of the minimum difficulty",
|
|
"getBlockVerboseResult-parentHashes": "The hashes of the parent blocks",
|
|
"getBlockVerboseResult-nextHashes": "The hashes of the next blocks (only if there are any)",
|
|
|
|
// GetBlockCountCmd help.
|
|
"getBlockCount--synopsis": "Returns the number of blocks in the longest block chain.",
|
|
"getBlockCount--result0": "The current block count",
|
|
|
|
// GetBlockHashCmd help.
|
|
"getBlockHash--synopsis": "Returns hash of the block in best block chain at the given height.",
|
|
"getBlockHash-index": "The block height",
|
|
"getBlockHash--result0": "The block hash",
|
|
|
|
// GetBlockHeaderCmd help.
|
|
"getBlockHeader--synopsis": "Returns information about a block header given its hash.",
|
|
"getBlockHeader-hash": "The hash of the block",
|
|
"getBlockHeader-verbose": "Specifies the block header is returned as a JSON object instead of hex-encoded string",
|
|
"getBlockHeader--condition0": "verbose=false",
|
|
"getBlockHeader--condition1": "verbose=true",
|
|
"getBlockHeader--result0": "The block header hash",
|
|
|
|
// GetBlockHeaderVerboseResult help.
|
|
"getBlockHeaderVerboseResult-hash": "The hash of the block (same as provided)",
|
|
"getBlockHeaderVerboseResult-confirmations": "The number of confirmations",
|
|
"getBlockHeaderVerboseResult-height": "The height of the block in the block chain",
|
|
"getBlockHeaderVerboseResult-version": "The block version",
|
|
"getBlockHeaderVerboseResult-versionHex": "The block version in hexadecimal",
|
|
"getBlockHeaderVerboseResult-hashMerkleRoot": "Merkle tree reference to hash of all transactions for the block",
|
|
"getBlockHeaderVerboseResult-acceptedIdMerkleRoot": "Merkle tree reference to hash all transactions accepted form the block blues",
|
|
"getBlockHeaderVerboseResult-time": "The block time in seconds since 1 Jan 1970 GMT",
|
|
"getBlockHeaderVerboseResult-nonce": "The block nonce",
|
|
"getBlockHeaderVerboseResult-bits": "The bits which represent the block difficulty",
|
|
"getBlockHeaderVerboseResult-difficulty": "The proof-of-work difficulty as a multiple of the minimum difficulty",
|
|
"getBlockHeaderVerboseResult-parentHashes": "The hashes of the parent blocks",
|
|
"getBlockHeaderVerboseResult-nextHashes": "The hashes of the next blocks (only if there are any)",
|
|
|
|
// TemplateRequest help.
|
|
"templateRequest-mode": "This is 'template', 'proposal', or omitted",
|
|
"templateRequest-capabilities": "List of capabilities",
|
|
"templateRequest-longPollId": "The long poll ID of a job to monitor for expiration; required and valid only for long poll requests ",
|
|
"templateRequest-sigOpLimit": "Number of signature operations allowed in blocks (this parameter is ignored)",
|
|
"templateRequest-sizeLimit": "Number of bytes allowed in blocks (this parameter is ignored)",
|
|
"templateRequest-maxVersion": "Highest supported block version number (this parameter is ignored)",
|
|
"templateRequest-target": "The desired target for the block template (this parameter is ignored)",
|
|
"templateRequest-data": "Hex-encoded block data (only for mode=proposal)",
|
|
"templateRequest-workId": "The server provided workid if provided in block template (not applicable)",
|
|
|
|
// GetBlockTemplateResultTx help.
|
|
"getBlockTemplateResultTx-data": "Hex-encoded transaction data (byte-for-byte)",
|
|
"getBlockTemplateResultTx-hash": "Hex-encoded transaction hash (little endian if treated as a 256-bit number)",
|
|
"getBlockTemplateResultTx-id": "Hex-encoded transaction ID (little endian if treated as a 256-bit number)",
|
|
"getBlockTemplateResultTx-depends": "Other transactions before this one (by 1-based index in the 'transactions' list) that must be present in the final block if this one is",
|
|
"getBlockTemplateResultTx-fee": "Difference in value between transaction inputs and outputs (in Satoshi)",
|
|
"getBlockTemplateResultTx-sigOps": "Total number of signature operations as counted for purposes of block limits",
|
|
|
|
// GetBlockTemplateResultAux help.
|
|
"getBlockTemplateResultAux-flags": "Hex-encoded byte-for-byte data to include in the coinbase signature script",
|
|
|
|
// GetBlockTemplateResult help.
|
|
"getBlockTemplateResult-bits": "Hex-encoded compressed difficulty",
|
|
"getBlockTemplateResult-curTime": "Current time as seen by the server (recommended for block time); must fall within mintime/maxtime rules",
|
|
"getBlockTemplateResult-height": "Height of the block to be solved",
|
|
"getBlockTemplateResult-parentHashes": "Hex-encoded big-endian hashes of the parent blocks",
|
|
"getBlockTemplateResult-sigOpLimit": "Number of sigops allowed in blocks ",
|
|
"getBlockTemplateResult-sizeLimit": "Number of bytes allowed in blocks",
|
|
"getBlockTemplateResult-transactions": "Array of transactions as JSON objects",
|
|
"getBlockTemplateResult-acceptedIdMerkleRoot": "The root of the merkle tree of transaction IDs accepted by this block",
|
|
"getBlockTemplateResult-utxoCommitment": "An ECMH UTXO commitment of this block",
|
|
"getBlockTemplateResult-version": "The block version",
|
|
"getBlockTemplateResult-coinbaseAux": "Data that should be included in the coinbase signature script",
|
|
"getBlockTemplateResult-coinbaseTxn": "Information about the coinbase transaction",
|
|
"getBlockTemplateResult-coinbaseValue": "Total amount available for the coinbase in Satoshi",
|
|
"getBlockTemplateResult-workId": "This value must be returned with result if provided (not provided)",
|
|
"getBlockTemplateResult-longPollId": "Identifier for long poll request which allows monitoring for expiration",
|
|
"getBlockTemplateResult-longPollUri": "An alternate URI to use for long poll requests if provided (not provided)",
|
|
"getBlockTemplateResult-submitOld": "Not applicable",
|
|
"getBlockTemplateResult-target": "Hex-encoded big-endian number which valid results must be less than",
|
|
"getBlockTemplateResult-expires": "Maximum number of seconds (starting from when the server sent the response) this work is valid for",
|
|
"getBlockTemplateResult-maxTime": "Maximum allowed time",
|
|
"getBlockTemplateResult-minTime": "Minimum allowed time",
|
|
"getBlockTemplateResult-mutable": "List of mutations the server explicitly allows",
|
|
"getBlockTemplateResult-nonceRange": "Two concatenated hex-encoded big-endian 64-bit integers which represent the valid ranges of nonces the miner may scan",
|
|
"getBlockTemplateResult-capabilities": "List of server capabilities including 'proposal' to indicate support for block proposals",
|
|
"getBlockTemplateResult-rejectReason": "Reason the proposal was invalid as-is (only applies to proposal responses)",
|
|
|
|
// GetBlockTemplateCmd help.
|
|
"getBlockTemplate--synopsis": "Returns a JSON object with information necessary to construct a block to mine or accepts a proposal to validate.\n" +
|
|
"See BIP0022 and BIP0023 for the full specification.",
|
|
"getBlockTemplate-request": "Request object which controls the mode and several parameters",
|
|
"getBlockTemplate--condition0": "mode=template",
|
|
"getBlockTemplate--condition1": "mode=proposal, rejected",
|
|
"getBlockTemplate--condition2": "mode=proposal, accepted",
|
|
"getBlockTemplate--result1": "An error string which represents why the proposal was rejected or nothing if accepted",
|
|
|
|
// GetCFilterCmd help.
|
|
"getCFilter--synopsis": "Returns a block's committed filter given its hash.",
|
|
"getCFilter-filterType": "The type of filter to return (0=regular, 1=extended)",
|
|
"getCFilter-hash": "The hash of the block",
|
|
"getCFilter--result0": "The block's committed filter",
|
|
|
|
// GetCFilterHeaderCmd help.
|
|
"getCFilterHeader--synopsis": "Returns a block's compact filter header given its hash.",
|
|
"getCFilterHeader-filterType": "The type of filter header to return (0=regular, 1=extended)",
|
|
"getCFilterHeader-hash": "The hash of the block",
|
|
"getCFilterHeader--result0": "The block's gcs filter header",
|
|
|
|
// GetConnectionCountCmd help.
|
|
"getConnectionCount--synopsis": "Returns the number of active connections to other peers.",
|
|
"getConnectionCount--result0": "The number of connections",
|
|
|
|
// GetCurrentNetCmd help.
|
|
"getCurrentNet--synopsis": "Get bitcoin network the server is running on.",
|
|
"getCurrentNet--result0": "The network identifer",
|
|
|
|
// GetDifficultyCmd help.
|
|
"getDifficulty--synopsis": "Returns the proof-of-work difficulty as a multiple of the minimum difficulty.",
|
|
"getDifficulty--result0": "The difficulty",
|
|
|
|
// GetGenerateCmd help.
|
|
"getGenerate--synopsis": "Returns if the server is set to generate coins (mine) or not.",
|
|
"getGenerate--result0": "True if mining, false if not",
|
|
|
|
// GetHashesPerSecCmd help.
|
|
"getHashesPerSec--synopsis": "Returns a recent hashes per second performance measurement while generating coins (mining).",
|
|
"getHashesPerSec--result0": "The number of hashes per second",
|
|
|
|
// InfoDAGResult help.
|
|
"infoDagResult-version": "The version of the server",
|
|
"infoDagResult-protocolVersion": "The latest supported protocol version",
|
|
"infoDagResult-blocks": "The number of blocks processed",
|
|
"infoDagResult-timeOffset": "The time offset",
|
|
"infoDagResult-connections": "The number of connected peers",
|
|
"infoDagResult-proxy": "The proxy used by the server",
|
|
"infoDagResult-difficulty": "The current target difficulty",
|
|
"infoDagResult-testNet": "Whether or not server is using testnet",
|
|
"infoDagResult-devNet": "Whether or not server is using devnet",
|
|
"infoDagResult-relayFee": "The minimum relay fee for non-free transactions in BTC/KB",
|
|
"infoDagResult-errors": "Any current errors",
|
|
|
|
// InfoWalletResult help.
|
|
"infoWalletResult-version": "The version of the server",
|
|
"infoWalletResult-protocolVersion": "The latest supported protocol version",
|
|
"infoWalletResult-walletVersion": "The version of the wallet server",
|
|
"infoWalletResult-balance": "The total bitcoin balance of the wallet",
|
|
"infoWalletResult-blocks": "The number of blocks processed",
|
|
"infoWalletResult-timeOffset": "The time offset",
|
|
"infoWalletResult-connections": "The number of connected peers",
|
|
"infoWalletResult-proxy": "The proxy used by the server",
|
|
"infoWalletResult-difficulty": "The current target difficulty",
|
|
"infoWalletResult-testNet": "Whether or not server is using testnet",
|
|
"infoWalletResult-devNet": "Whether or not server is using devnet",
|
|
"infoWalletResult-keypoolOldest": "Seconds since 1 Jan 1970 GMT of the oldest pre-generated key in the key pool",
|
|
"infoWalletResult-keypoolSize": "The number of new keys that are pre-generated",
|
|
"infoWalletResult-unlockedUntil": "The timestamp in seconds since 1 Jan 1970 GMT that the wallet is unlocked for transfers, or 0 if the wallet is locked",
|
|
"infoWalletResult-payTxFee": "The transaction fee set in BTC/KB",
|
|
"infoWalletResult-relayFee": "The minimum relay fee for non-free transactions in BTC/KB",
|
|
"infoWalletResult-errors": "Any current errors",
|
|
|
|
// GetTopHeadersCmd help.
|
|
"getTopHeaders--synopsis": "Returns the top block headers starting with the provided start hash (not inclusive)",
|
|
"getTopHeaders-startHash": "Block hash to stop including block headers for; if not found, all headers to the latest known block are returned.",
|
|
"getTopHeaders--result0": "Serialized block headers of all located blocks, limited to some arbitrary maximum number of hashes (currently 2000, which matches the wire protocol headers message, but this is not guaranteed)",
|
|
|
|
// GetHeadersCmd help.
|
|
"getHeaders--synopsis": "Returns block headers starting with the first known block hash from the request",
|
|
"getHeaders-blockLocators": "JSON array of hex-encoded hashes of blocks. Headers are returned starting from the first known hash in this list",
|
|
"getHeaders-hashStop": "Block hash to stop including block headers for; if not found, all headers to the latest known block are returned.",
|
|
"getHeaders--result0": "Serialized block headers of all located blocks, limited to some arbitrary maximum number of hashes (currently 2000, which matches the wire protocol headers message, but this is not guaranteed)",
|
|
|
|
// GetInfoCmd help.
|
|
"getInfo--synopsis": "Returns a JSON object containing various state info.",
|
|
|
|
// GetMempoolInfoCmd help.
|
|
"getMempoolInfo--synopsis": "Returns memory pool information",
|
|
|
|
// GetMempoolInfoResult help.
|
|
"getMempoolInfoResult-bytes": "Size in bytes of the mempool",
|
|
"getMempoolInfoResult-size": "Number of transactions in the mempool",
|
|
|
|
// GetMiningInfoResult help.
|
|
"getMiningInfoResult-blocks": "Height of the latest best block",
|
|
"getMiningInfoResult-currentBlockSize": "Size of the latest best block",
|
|
"getMiningInfoResult-currentBlockTx": "Number of transactions in the latest best block",
|
|
"getMiningInfoResult-difficulty": "Current target difficulty",
|
|
"getMiningInfoResult-errors": "Any current errors",
|
|
"getMiningInfoResult-generate": "Whether or not server is set to generate coins",
|
|
"getMiningInfoResult-genProcLimit": "Number of processors to use for coin generation (-1 when disabled)",
|
|
"getMiningInfoResult-hashesPerSec": "Recent hashes per second performance measurement while generating coins",
|
|
"getMiningInfoResult-networkHashPs": "Estimated network hashes per second for the most recent blocks",
|
|
"getMiningInfoResult-pooledTx": "Number of transactions in the memory pool",
|
|
"getMiningInfoResult-testNet": "Whether or not server is using testnet",
|
|
"getMiningInfoResult-devNet": "Whether or not server is using devnet",
|
|
|
|
// GetMiningInfoCmd help.
|
|
"getMiningInfo--synopsis": "Returns a JSON object containing mining-related information.",
|
|
|
|
// GetNetworkHashPSCmd help.
|
|
"getNetworkHashPs--synopsis": "Returns the estimated network hashes per second for the block heights provided by the parameters.",
|
|
"getNetworkHashPs-blocks": "The number of blocks, or -1 for blocks since last difficulty change",
|
|
"getNetworkHashPs-height": "Perform estimate ending with this height or -1 for current best chain block height",
|
|
"getNetworkHashPs--result0": "Estimated hashes per second",
|
|
|
|
// GetNetTotalsCmd help.
|
|
"getNetTotals--synopsis": "Returns a JSON object containing network traffic statistics.",
|
|
|
|
// GetNetTotalsResult help.
|
|
"getNetTotalsResult-totalBytesRecv": "Total bytes received",
|
|
"getNetTotalsResult-totalBytesSent": "Total bytes sent",
|
|
"getNetTotalsResult-timeMillis": "Number of milliseconds since 1 Jan 1970 GMT",
|
|
|
|
// GetPeerInfoResult help.
|
|
"getPeerInfoResult-id": "A unique node ID",
|
|
"getPeerInfoResult-addr": "The ip address and port of the peer",
|
|
"getPeerInfoResult-services": "Services bitmask which represents the services supported by the peer",
|
|
"getPeerInfoResult-relayTxes": "Peer has requested transactions be relayed to it",
|
|
"getPeerInfoResult-lastSend": "Time the last message was received in seconds since 1 Jan 1970 GMT",
|
|
"getPeerInfoResult-lastRecv": "Time the last message was sent in seconds since 1 Jan 1970 GMT",
|
|
"getPeerInfoResult-bytesSent": "Total bytes sent",
|
|
"getPeerInfoResult-bytesRecv": "Total bytes received",
|
|
"getPeerInfoResult-connTime": "Time the connection was made in seconds since 1 Jan 1970 GMT",
|
|
"getPeerInfoResult-timeOffset": "The time offset of the peer",
|
|
"getPeerInfoResult-pingTime": "Number of microseconds the last ping took",
|
|
"getPeerInfoResult-pingWait": "Number of microseconds a queued ping has been waiting for a response",
|
|
"getPeerInfoResult-version": "The protocol version of the peer",
|
|
"getPeerInfoResult-subVer": "The user agent of the peer",
|
|
"getPeerInfoResult-inbound": "Whether or not the peer is an inbound connection",
|
|
"getPeerInfoResult-selectedTip": "The selected tip of the peer",
|
|
"getPeerInfoResult-banScore": "The ban score",
|
|
"getPeerInfoResult-feeFilter": "The requested minimum fee a transaction must have to be announced to the peer",
|
|
"getPeerInfoResult-syncNode": "Whether or not the peer is the sync peer",
|
|
|
|
// GetPeerInfoCmd help.
|
|
"getPeerInfo--synopsis": "Returns data about each connected network peer as an array of json objects.",
|
|
|
|
// GetRawMempoolVerboseResult help.
|
|
"getRawMempoolVerboseResult-size": "Transaction size in bytes",
|
|
"getRawMempoolVerboseResult-fee": "Transaction fee in bitcoins",
|
|
"getRawMempoolVerboseResult-time": "Local time transaction entered pool in seconds since 1 Jan 1970 GMT",
|
|
"getRawMempoolVerboseResult-height": "Block height when transaction entered the pool",
|
|
"getRawMempoolVerboseResult-startingPriority": "Priority when transaction entered the pool",
|
|
"getRawMempoolVerboseResult-currentPriority": "Current priority",
|
|
"getRawMempoolVerboseResult-depends": "Unconfirmed transactions used as inputs for this transaction",
|
|
|
|
// GetRawMempoolCmd help.
|
|
"getRawMempool--synopsis": "Returns information about all of the transactions currently in the memory pool.",
|
|
"getRawMempool-verbose": "Returns JSON object when true or an array of transaction hashes when false",
|
|
"getRawMempool--condition0": "verbose=false",
|
|
"getRawMempool--condition1": "verbose=true",
|
|
"getRawMempool--result0": "Array of transaction hashes",
|
|
|
|
// GetRawTransactionCmd help.
|
|
"getRawTransaction--synopsis": "Returns information about a transaction given its hash.",
|
|
"getRawTransaction-txId": "The hash of the transaction",
|
|
"getRawTransaction-verbose": "Specifies the transaction is returned as a JSON object instead of a hex-encoded string",
|
|
"getRawTransaction--condition0": "verbose=false",
|
|
"getRawTransaction--condition1": "verbose=true",
|
|
"getRawTransaction--result0": "Hex-encoded bytes of the serialized transaction",
|
|
|
|
// GetSubnetworkCmd help.
|
|
"getSubnetwork--synopsis": "Returns information about a subnetwork given its ID.",
|
|
"getSubnetwork-subnetworkId": "The ID of the subnetwork",
|
|
|
|
// GetSubnetworkResult help.
|
|
"getSubnetworkResult-gasLimit": "The gas limit of the subnetwork",
|
|
|
|
// GetTxOutResult help.
|
|
"getTxOutResult-bestBlock": "The block hash that contains the transaction output",
|
|
"getTxOutResult-confirmations": "The number of confirmations (Will be 'null' if txindex is not disabled)",
|
|
"getTxOutResult-isInMempool": "Whether the transaction is in the mempool",
|
|
"getTxOutResult-value": "The transaction amount in BTC",
|
|
"getTxOutResult-scriptPubKey": "The public key script used to pay coins as a JSON object",
|
|
"getTxOutResult-version": "The transaction version",
|
|
"getTxOutResult-coinbase": "Whether or not the transaction is a coinbase",
|
|
|
|
// GetTxOutCmd help.
|
|
"getTxOut--synopsis": "Returns information about an unspent transaction output..",
|
|
"getTxOut-txId": "The hash of the transaction",
|
|
"getTxOut-vout": "The index of the output",
|
|
"getTxOut-includeMempool": "Include the mempool when true",
|
|
|
|
// HelpCmd help.
|
|
"help--synopsis": "Returns a list of all commands or help for a specified command.",
|
|
"help-command": "The command to retrieve help for",
|
|
"help--condition0": "no command provided",
|
|
"help--condition1": "command specified",
|
|
"help--result0": "List of commands",
|
|
"help--result1": "Help for specified command",
|
|
|
|
// PingCmd help.
|
|
"ping--synopsis": "Queues a ping to be sent to each connected peer.\n" +
|
|
"Ping times are provided by getPeerInfo via the pingtime and pingwait fields.",
|
|
|
|
// RemoveManualNodeCmd help.
|
|
"removeManualNode--synopsis": "Removes a peer from the manual nodes list",
|
|
"removeManualNode-addr": "IP address and port of the peer to remove",
|
|
|
|
// SearchRawTransactionsCmd help.
|
|
"searchRawTransactions--synopsis": "Returns raw data for transactions involving the passed address.\n" +
|
|
"Returned transactions are pulled from both the database, and transactions currently in the mempool.\n" +
|
|
"Transactions pulled from the mempool will have the 'confirmations' field set to 0.\n" +
|
|
"Usage of this RPC requires the optional --addrindex flag to be activated, otherwise all responses will simply return with an error stating the address index has not yet been built.\n" +
|
|
"Similarly, until the address index has caught up with the current best height, all requests will return an error response in order to avoid serving stale data.",
|
|
"searchRawTransactions-address": "The Bitcoin address to search for",
|
|
"searchRawTransactions-verbose": "Specifies the transaction is returned as a JSON object instead of hex-encoded string",
|
|
"searchRawTransactions--condition0": "verbose=0",
|
|
"searchRawTransactions--condition1": "verbose=1",
|
|
"searchRawTransactions-skip": "The number of leading transactions to leave out of the final response",
|
|
"searchRawTransactions-count": "The maximum number of transactions to return",
|
|
"searchRawTransactions-vinExtra": "Specify that extra data from previous output will be returned in vin",
|
|
"searchRawTransactions-reverse": "Specifies that the transactions should be returned in reverse chronological order",
|
|
"searchRawTransactions-filterAddrs": "Address list. Only inputs or outputs with matching address will be returned",
|
|
"searchRawTransactions--result0": "Hex-encoded serialized transaction",
|
|
|
|
// SendRawTransactionCmd help.
|
|
"sendRawTransaction--synopsis": "Submits the serialized, hex-encoded transaction to the local peer and relays it to the network.",
|
|
"sendRawTransaction-hexTx": "Serialized, hex-encoded signed transaction",
|
|
"sendRawTransaction-allowHighFees": "Whether or not to allow insanely high fees (btcd does not yet implement this parameter, so it has no effect)",
|
|
"sendRawTransaction--result0": "The hash of the transaction",
|
|
|
|
// SetGenerateCmd help.
|
|
"setGenerate--synopsis": "Set the server to generate coins (mine) or not.",
|
|
"setGenerate-generate": "Use true to enable generation, false to disable it",
|
|
"setGenerate-genProcLimit": "The number of processors (cores) to limit generation to or -1 for default",
|
|
|
|
// StopCmd help.
|
|
"stop--synopsis": "Shutdown btcd.",
|
|
"stop--result0": "The string 'btcd stopping.'",
|
|
|
|
// SubmitBlockOptions help.
|
|
"submitBlockOptions-workId": "This parameter is currently ignored",
|
|
|
|
// SubmitBlockCmd help.
|
|
"submitBlock--synopsis": "Attempts to submit a new serialized, hex-encoded block to the network.",
|
|
"submitBlock-hexBlock": "Serialized, hex-encoded block",
|
|
"submitBlock-options": "This parameter is currently ignored",
|
|
"submitBlock--condition0": "Block successfully submitted",
|
|
"submitBlock--condition1": "Block rejected",
|
|
"submitBlock--result1": "The reason the block was rejected",
|
|
|
|
// ValidateAddressResult help.
|
|
"validateAddressResult-isValid": "Whether or not the address is valid",
|
|
"validateAddressResult-address": "The bitcoin address (only when isvalid is true)",
|
|
|
|
// ValidateAddressCmd help.
|
|
"validateAddress--synopsis": "Verify an address is valid.",
|
|
"validateAddress-address": "Bitcoin address to validate",
|
|
|
|
// VerifyMessageCmd help.
|
|
"verifyMessage--synopsis": "Verify a signed message.",
|
|
"verifyMessage-address": "The bitcoin address to use for the signature",
|
|
"verifyMessage-signature": "The base-64 encoded signature provided by the signer",
|
|
"verifyMessage-message": "The signed message",
|
|
"verifyMessage--result0": "Whether or not the signature verified",
|
|
|
|
// -------- Websocket-specific help --------
|
|
|
|
// Session help.
|
|
"session--synopsis": "Return details regarding a websocket client's current connection session.",
|
|
"sessionResult-sessionId": "The unique session ID for a client's websocket connection.",
|
|
|
|
// NotifyBlocksCmd help.
|
|
"notifyBlocks--synopsis": "Request notifications for whenever a block is connected or disconnected from the main (best) chain.",
|
|
|
|
// StopNotifyBlocksCmd help.
|
|
"stopNotifyBlocks--synopsis": "Cancel registered notifications for whenever a block is connected or disconnected from the main (best) chain.",
|
|
|
|
// NotifyNewTransactionsCmd help.
|
|
"notifyNewTransactions--synopsis": "Send either a txaccepted or a txacceptedverbose notification when a new transaction is accepted into the mempool.",
|
|
"notifyNewTransactions-verbose": "Specifies which type of notification to receive. If verbose is true, then the caller receives txacceptedverbose, otherwise the caller receives txaccepted",
|
|
"notifyNewTransactions-subnetwork": "Specifies which subnetwork to receive full transactions of. Requires verbose=true. Not allowed when node subnetwork is Native. Must be equal to node subnetwork when node is partial.",
|
|
|
|
// StopNotifyNewTransactionsCmd help.
|
|
"stopNotifyNewTransactions--synopsis": "Stop sending either a txaccepted or a txacceptedverbose notification when a new transaction is accepted into the mempool.",
|
|
|
|
// OutPoint help.
|
|
"outPoint-txid": "The hex-encoded bytes of the outPoint transaction ID",
|
|
"outPoint-index": "The index of the outPoint",
|
|
|
|
// LoadTxFilterCmd help.
|
|
"loadTxFilter--synopsis": "Load, add to, or reload a websocket client's transaction filter for mempool transactions, new blocks and rescanBlocks.",
|
|
"loadTxFilter-reload": "Load a new filter instead of adding data to an existing one",
|
|
"loadTxFilter-addresses": "Array of addresses to add to the transaction filter",
|
|
"loadTxFilter-outPoints": "Array of outpoints to add to the transaction filter",
|
|
|
|
// RescanBlocks help.
|
|
"rescanBlocks--synopsis": "Rescan blocks for transactions matching the loaded transaction filter.",
|
|
"rescanBlocks-blockHashes": "List of hashes to rescan. Each next block must be a child of the previous.",
|
|
"rescanBlocks--result0": "List of matching blocks.",
|
|
|
|
// RescannedBlock help.
|
|
"rescannedBlock-hash": "Hash of the matching block.",
|
|
"rescannedBlock-transactions": "List of matching transactions, serialized and hex-encoded.",
|
|
|
|
// Uptime help.
|
|
"uptime--synopsis": "Returns the total uptime of the server.",
|
|
"uptime--result0": "The number of seconds that the server has been running",
|
|
|
|
// Version help.
|
|
"version--synopsis": "Returns the JSON-RPC API version (semver)",
|
|
"version--result0--desc": "Version objects keyed by the program or API name",
|
|
"version--result0--key": "Program or API name",
|
|
"version--result0--value": "Object containing the semantic version",
|
|
|
|
// VersionResult help.
|
|
"versionResult-versionString": "The JSON-RPC API version (semver)",
|
|
"versionResult-major": "The major component of the JSON-RPC API version",
|
|
"versionResult-minor": "The minor component of the JSON-RPC API version",
|
|
"versionResult-patch": "The patch component of the JSON-RPC API version",
|
|
"versionResult-prerelease": "Prerelease info about the current build",
|
|
"versionResult-buildMetadata": "Metadata about the current build",
|
|
|
|
// TODO: (Ori) This is a temporary rpc command for dev use. It needs to be removed.
|
|
"flushDbCache--synopsis": "No Synopsis",
|
|
"flushDbCache--result0--desc": "No Result",
|
|
"flushDbCache--result0--value": "No Value",
|
|
"flushDbCache--result0--key": "No Key",
|
|
}
|
|
|
|
// rpcResultTypes specifies the result types that each RPC command can return.
|
|
// This information is used to generate the help. Each result type must be a
|
|
// pointer to the type (or nil to indicate no return value).
|
|
var rpcResultTypes = map[string][]interface{}{
|
|
"addManualNode": nil,
|
|
"createRawTransaction": {(*string)(nil)},
|
|
"debugLevel": {(*string)(nil), (*string)(nil)},
|
|
"decodeRawTransaction": {(*btcjson.TxRawDecodeResult)(nil)},
|
|
"decodeScript": {(*btcjson.DecodeScriptResult)(nil)},
|
|
"estimateFee": {(*float64)(nil)},
|
|
"generate": {(*[]string)(nil)},
|
|
"getAllManualNodesInfo": {(*[]string)(nil), (*[]btcjson.GetManualNodeInfoResult)(nil)},
|
|
"getBestBlock": {(*btcjson.GetBestBlockResult)(nil)},
|
|
"getBestBlockHash": {(*string)(nil)},
|
|
"getBlock": {(*string)(nil), (*btcjson.GetBlockVerboseResult)(nil)},
|
|
"getBlockCount": {(*int64)(nil)},
|
|
"getBlockHash": {(*string)(nil)},
|
|
"getBlockHeader": {(*string)(nil), (*btcjson.GetBlockHeaderVerboseResult)(nil)},
|
|
"getBlockTemplate": {(*btcjson.GetBlockTemplateResult)(nil), (*string)(nil), nil},
|
|
"getBlockDagInfo": {(*btcjson.GetBlockDAGInfoResult)(nil)},
|
|
"getCFilter": {(*string)(nil)},
|
|
"getCFilterHeader": {(*string)(nil)},
|
|
"getConnectionCount": {(*int32)(nil)},
|
|
"getCurrentNet": {(*uint32)(nil)},
|
|
"getDifficulty": {(*float64)(nil)},
|
|
"getGenerate": {(*bool)(nil)},
|
|
"getHashesPerSec": {(*float64)(nil)},
|
|
"getTopHeaders": {(*[]string)(nil)},
|
|
"getHeaders": {(*[]string)(nil)},
|
|
"getInfo": {(*btcjson.InfoDAGResult)(nil)},
|
|
"getManualNodeInfo": {(*string)(nil), (*btcjson.GetManualNodeInfoResult)(nil)},
|
|
"getMempoolInfo": {(*btcjson.GetMempoolInfoResult)(nil)},
|
|
"getMiningInfo": {(*btcjson.GetMiningInfoResult)(nil)},
|
|
"getNetTotals": {(*btcjson.GetNetTotalsResult)(nil)},
|
|
"getNetworkHashPs": {(*int64)(nil)},
|
|
"getPeerInfo": {(*[]btcjson.GetPeerInfoResult)(nil)},
|
|
"getRawMempool": {(*[]string)(nil), (*btcjson.GetRawMempoolVerboseResult)(nil)},
|
|
"getRawTransaction": {(*string)(nil), (*btcjson.TxRawResult)(nil)},
|
|
"getSubnetwork": {(*btcjson.GetSubnetworkResult)(nil)},
|
|
"getTxOut": {(*btcjson.GetTxOutResult)(nil)},
|
|
"node": nil,
|
|
"help": {(*string)(nil), (*string)(nil)},
|
|
"ping": nil,
|
|
"removeManualNode": nil,
|
|
"searchRawTransactions": {(*string)(nil), (*[]btcjson.SearchRawTransactionsResult)(nil)},
|
|
"sendRawTransaction": {(*string)(nil)},
|
|
"setGenerate": nil,
|
|
"stop": {(*string)(nil)},
|
|
"submitBlock": {nil, (*string)(nil)},
|
|
"uptime": {(*int64)(nil)},
|
|
"validateAddress": {(*btcjson.ValidateAddressResult)(nil)},
|
|
"verifyMessage": {(*bool)(nil)},
|
|
"version": {(*map[string]btcjson.VersionResult)(nil)},
|
|
"flushDbCache": {(*map[string]struct{})(nil)},
|
|
|
|
// Websocket commands.
|
|
"loadTxFilter": nil,
|
|
"session": {(*btcjson.SessionResult)(nil)},
|
|
"notifyBlocks": nil,
|
|
"stopNotifyBlocks": nil,
|
|
"notifyNewTransactions": nil,
|
|
"stopNotifyNewTransactions": nil,
|
|
"rescanBlocks": {(*[]btcjson.RescannedBlock)(nil)},
|
|
}
|
|
|
|
// helpCacher provides a concurrent safe type that provides help and usage for
|
|
// the RPC server commands and caches the results for future calls.
|
|
type helpCacher struct {
|
|
sync.Mutex
|
|
usage string
|
|
methodHelp map[string]string
|
|
}
|
|
|
|
// rpcMethodHelp returns an RPC help string for the provided method.
|
|
//
|
|
// This function is safe for concurrent access.
|
|
func (c *helpCacher) rpcMethodHelp(method string) (string, error) {
|
|
c.Lock()
|
|
defer c.Unlock()
|
|
|
|
// Return the cached method help if it exists.
|
|
if help, exists := c.methodHelp[method]; exists {
|
|
return help, nil
|
|
}
|
|
|
|
// Look up the result types for the method.
|
|
resultTypes, ok := rpcResultTypes[method]
|
|
if !ok {
|
|
return "", errors.New("no result types specified for method " +
|
|
method)
|
|
}
|
|
|
|
// Generate, cache, and return the help.
|
|
help, err := btcjson.GenerateHelp(method, helpDescsEnUS, resultTypes...)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
c.methodHelp[method] = help
|
|
return help, nil
|
|
}
|
|
|
|
// rpcUsage returns one-line usage for all support RPC commands.
|
|
//
|
|
// This function is safe for concurrent access.
|
|
func (c *helpCacher) rpcUsage(includeWebsockets bool) (string, error) {
|
|
c.Lock()
|
|
defer c.Unlock()
|
|
|
|
// Return the cached usage if it is available.
|
|
if c.usage != "" {
|
|
return c.usage, nil
|
|
}
|
|
|
|
// Generate a list of one-line usage for every command.
|
|
usageTexts := make([]string, 0, len(rpcHandlers))
|
|
for k := range rpcHandlers {
|
|
usage, err := btcjson.MethodUsageText(k)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
usageTexts = append(usageTexts, usage)
|
|
}
|
|
|
|
// Include websockets commands if requested.
|
|
if includeWebsockets {
|
|
for k := range wsHandlers {
|
|
usage, err := btcjson.MethodUsageText(k)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
usageTexts = append(usageTexts, usage)
|
|
}
|
|
}
|
|
|
|
sort.Sort(sort.StringSlice(usageTexts))
|
|
c.usage = strings.Join(usageTexts, "\n")
|
|
return c.usage, nil
|
|
}
|
|
|
|
// newHelpCacher returns a new instance of a help cacher which provides help and
|
|
// usage for the RPC server commands and caches the results for future calls.
|
|
func newHelpCacher() *helpCacher {
|
|
return &helpCacher{
|
|
methodHelp: make(map[string]string),
|
|
}
|
|
}
|