getblocktemplate ( "template_request" )
If the request parameters include a 'mode' key, that is used to explicitly select between the default 'template' request or a 'proposal'.
It returns data needed to construct a block to work on.
For full specification, see BIPs 22, 23, 9, and 145:
https://github.com/bitcoin/bips/blob/master/bip-0022.mediawiki
https://github.com/bitcoin/bips/blob/master/bip-0023.mediawiki
https://github.com/bitcoin/bips/blob/master/bip-0009.mediawiki#getblocktemplate_changes
Arguments:
1. template_request (json object, optional, default={}) Format of the template
{
"mode": "str", (string, optional) This must be set to "template", "proposal" (see BIP 23), or omitted
"capabilities": [ (json array, optional) A list of strings
"support", (string) client side supported feature, 'longpoll', 'coinbasetxn', 'coinbasevalue', 'proposal', 'serverlist', 'workid'
...
],
}
Result (If the proposal was accepted with mode=='proposal'):
null (json null)
Result (If the proposal was not accepted with mode=='proposal'):
"str" (string) According to BIP22
Result (Otherwise):
{ (json object)
"version" : n, (numeric) The preferred block version
"previousblockhash" : "str", (string) The hash of current highest block
"transactions" : [ (json array) contents of non-coinbase transactions that should be included in the next block
{ (json object)
"data" : "hex", (string) transaction data encoded in hexadecimal (byte-for-byte)
"txid" : "hex", (string) transaction id encoded in little-endian hexadecimal
"hash" : "hex", (string) hash encoded in little-endian hexadecimal
"depends" : [ (json array) array of numbers
n, (numeric) transactions before this one (by 1-based index in 'transactions' list) that must be present in the final block if this one is
...
],
"fee" : n, (numeric) difference in value between transaction inputs and outputs (in satoshis); for coinbase transactions, this is a negative Number of the total collected block fees (ie, not including the block subsidy); if key is not present, fee is unknown and clients MUST NOT assume there isn't one
"sigchecks" : n (numeric) total sigChecks, as counted for purposes of block limits; if key is not present, sigChecks are unknown and clients MUST NOT assume it is zero
},
...
],
"coinbaseaux" : { (json object) data that should be included in the coinbase's scriptSig content
...
},
"coinbasevalue" : n, (numeric) maximum allowable input to coinbase transaction, including the generation award and transaction fees (in satoshis)
"coinbasetxn" : { (json object) information for coinbase transaction
"minerfund" : { (json object) information related to the coinbase miner fund
"addresses" : [ (json array) List of valid addresses for the miner fund output
...
],
"minimumvalue" : n (numeric) The minimum value the miner fund output must pay
},
"stakingrewards" : { (json object) information related to the coinbase staking reward output, only set after the Nov. 15, 2023 upgrade activated and the -avalanchestakingrewards option is enabled
"payoutscript" : { (json object) The proof payout script
"asm" : "str", (string) Decoded payout script
"hex" : "hex", (string) Raw payout script in hex format
"type" : "str", (string) The output type (e.g. nonstandard, pubkey, pubkeyhash, scripthash, multisig, nulldata)
"reqSigs" : n, (numeric) The required signatures
"addresses" : [ (json array)
"str", (string) eCash address
...
]
},
"minimumvalue" : n (numeric) The minimum value the staking reward output must pay
},
...
},
"target" : "str", (string) The hash target
"mintime" : xxx, (numeric) The minimum timestamp appropriate for the next block time, expressed in UNIX epoch time
"mutable" : [ (json array) list of ways the block template may be changed
"str", (string) A way the block template may be changed, e.g. 'time', 'transactions', 'prevblock'
...
],
"noncerange" : "hex", (string) A range of valid nonces
"sigchecklimit" : n, (numeric) limit of sigChecks in blocks
"sizelimit" : n, (numeric) limit of block size
"curtime" : xxx, (numeric) current timestamp in UNIX epoch time
"bits" : "str", (string) compressed target of next block
"height" : n, (numeric) The height of the next block
"rtt" : { (json object) The real-time target parameters. Only present after the Nov. 15, 2024 upgrade activated and if -enablertt is set
"prevheadertime" : [ (json array) The time the preview block headers were received, expressed in UNIX epoch time. Contains 4 values for headers at height N-2, N-5, N-11 and N-17.
xxx, (numeric) The time the block header was received, expressed in UNIX epoch time
...
],
"prevbits" : "str", (string) The previous block compressed target
"nodetime" : xxx, (numeric) The node local time in UNIX epoch time
"nexttarget" : "hex" (string) The real-time target in compact format
}
}
Examples:
> bitcoin-cli getblocktemplate
> curl --user myusername --data-binary '{"jsonrpc": "1.0", "id": "curltest", "method": "getblocktemplate", "params": []}' -H 'content-type: text/plain;' http://127.0.0.1:8332/