getblocktemplate - Zcash 5.10.0 RPC

getblocktemplate ( "jsonrequestobject" )

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.
See https://en.bitcoin.it/wiki/BIP_0022 for full specification.

To obtain information about founder's reward or funding stream
amounts, use 'getblocksubsidy HEIGHT' passing in the height returned
by this API.

The roots returned in 'defaultroots' are only valid if the block template is
used unmodified. If any part of the block template marked as 'mutable' in the
output is mutated, these roots may need to be recomputed. For more information
on the derivation process, see ZIP 244.

Arguments:
1. "jsonrequestobject"       (string, optional) A json object in the following spec
     {
       "mode":"template,"    (string, optional) This must be set to "template" or omitted
       "capabilities":[      (array, optional) A list of strings
           "support"         (string) client side supported feature, 'longpoll', 'coinbasetxn', 'coinbasevalue', 'proposal', 'serverlist', 'workid'
           ,...
         ],
       "longpollid":"id"     (string, optional) id to wait for
     }


Result:
{
  "version" : n,                     (numeric) The block version
  "previousblockhash" : "xxxx",      (string) The hash of current highest block
  "blockcommitmentshash" : "xxxx",   (string) (DEPRECATED) The hash of the block commitments field in the block header
  "lightclientroothash" : "xxxx",    (string) (DEPRECATED) The hash of the light client root field in the block header
  "finalsaplingroothash" : "xxxx",   (string) (DEPRECATED) The hash of the light client root field in the block header
  "defaultroots" : {                 (json object) root hashes that need to be recomputed if the transaction set is modified
     "merkleroot" : "xxxx"           (string) The hash of the transactions in the block header
     "chainhistoryroot" : "xxxx"     (string) The hash of the chain history
     "authdataroot" : "xxxx"         (string) (From NU5) The hash of the authorizing data merkel tree
     "blockcommitmentshash" : "xxxx" (string) (From NU5) The hash of the block commitments field in the block header
  }
  "transactions" : [                 (array) contents of non-coinbase transactions that should be included in the next block
      {
         "data" : "xxxx",            (string) transaction data encoded in hexadecimal (byte-for-byte)
         "hash" : "xxxx",            (string) hash/id encoded in little-endian hexadecimal
         "depends" : [               (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 zatoshis); for coinbase transactions, this is a negative Number of the total collected block fees (i.e., not including the block subsidy); if key is not present, fee is unknown and clients MUST NOT assume there isn't one
         "sigops" : n,               (numeric) total number of SigOps, as counted for purposes of block limits; if key is not present, sigop count is unknown and clients MUST NOT assume there aren't any
         "required" : true|false     (boolean) if provided and true, this transaction must be in the final block
      }
      ,...
  ],
  "coinbasetxn" : { ... },           (json object) information for coinbase transaction
  "target" : "xxxx",                 (string) The hash target
  "longpollid" : "str",              (string) an id to include with a request to longpoll on an update to this template
  "mintime" : xxx,                   (numeric) The minimum timestamp appropriate for next block time in seconds since epoch (Jan 1 1970 GMT)
  "mutable" : [                      (array of string) list of ways the block template may be changed 
     "value"                         (string) A way the block template may be changed, e.g. 'time', 'transactions', 'prevblock'
     ,...
  ],
  "noncerange" : "00000000ffffffff", (string) A range of valid nonces
  "sigoplimit" : n,                  (numeric) limit of sigops in blocks
  "sizelimit" : n,                   (numeric) limit of block size
  "curtime" : ttt,                   (numeric) current timestamp in seconds since epoch (Jan 1 1970 GMT)
  "bits" : "xxx",                    (string) compressed target of next block
  "height" : n                       (numeric) The height of the next block
}

Examples:
> zcash-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:8232/


Maintained by @_garethtdavies; modified by: mdr0id;license of the docs is MIT (see zcash repo), license of the scripts and webpage is also MIT (github repo)

Note it uses a mainnet zcash node