Get desktop application:
View/edit binary Protocol Buffers messages
The gRPC interface for interacting with the base node.
Lists headers in the current best chain
The request used for querying headers from the base node. The parameters `from_height` and `num_headers` can be used to page through the current best chain.
The height to start at. Depending on sorting, will either default to use the tip or genesis block, for `SORTING_DESC` and `SORTING_ASC` respectively, if a value is not provided. The first header returned will be at this height followed by `num_headers` - 1 headers in the direction specified by `sorting`. If greater than the current tip, the current tip will be used.
The number of headers to return. If not specified, it will default to 10
The ordering to return the headers in. If not specified will default to SORTING_DESC. Note that if `from_height` is not specified or is 0, if `sorting` is SORTING_DESC, the tip will be used as `from_height`, otherwise the block at height 0 will be used.
Get header by hash
Request that returns a header based by hash
The hash of the block header
Returns blocks in the current best chain. Currently only supports querying by height
Returns the block timing for the chain heights
The return type of the rpc GetBlockTiming
Returns the network Constants
/ Define an interface for block height
/ Consensus Constants response
Returns Block Sizes
Returns Block Fees
Get Version
A generic String value
Check for new updates
Get coins in circulation
A generic single value response for a specific height
Get network difficulties
Network difficulty response
Get the block template
/ return type of NewBlockTemplateRequest
This field should be moved to optional once optional keyword is standard
/ return type of GetNewBlockTemplate
Construct a new block from a provided template
Construct a new block from a provided template
/ request type of GetNewBlockWithCoinbasesRequest
Construct a new block from a provided template
/ return type of NewBlockTemplateRequest
This field should be moved to optional once optional keyword is standard
Construct a new block and header blob from a provided template
This is the message that is returned for a miner after it asks for a new block.
This is the header hash of the completed block
This is the completed block's header
This is the completed block's body
Submit a new block for propagation
Submit a new mined block blob for propagation
Submit a transaction for propagation
Get the base node sync information
Get the base node sync information
Get the base node tip information
/ return type of GetTipInfo
Search for blocks containing the specified kernels
This is the request type for the Search Kernels rpc
Search for blocks containing the specified commitments
This is the request type for the Search Utxo rpc
Fetch any utxos that exist in the main chain
get all peers from the base node
(message has no fields)
This is the request type of the get all peers rpc call
(message has no fields)
This returns the node's network identity
Get Base Node network connectivity status
List currently connected peers
Get mempool stats
Get VNs
Get templates
(message has no fields)
metadata
has the base node synced
current state of the base node
do we have failed checkpoints
The block reward of the next tip
estimate sha3x hash rate
estimate randomx hash rate
Used in:
The components of the block or transaction. The same struct can be used for either, since in Mimblewimble, cut-through means that blocks and transactions have the same structure. The inputs, outputs and kernels should be sorted by their Blake2b-256bit digest hash
Used in:
, ,List of inputs spent by the transaction.
List of outputs the transaction produces.
Kernels contain the excesses and their signatures for transaction
Used in:
Used in:
,A Minotari block. Blocks are linked together into a blockchain.
Used as request type in: BaseNode.SubmitBlock
Used as field type in:
,The BlockHeader contains all the metadata for the block, including proof of work, a link to the previous block and the transaction kernels.
The components of the block or transaction. The same struct can be used for either, since in Mimblewimble, blocks consist of inputs, outputs and kernels, rather than transactions.
/ GetBlockSize / GetBlockFees Request / Either the starting and ending heights OR the from_tip param must be specified
Used as request type in: BaseNode.GetBlockFees, BaseNode.GetBlockSize
The height from the chain tip (optional)
The starting height (optional)
The ending height (optional)
/ The type of calculation required (optional) / Defaults to median / median, mean, quartile, quantile
/ GetBlockSize / GetBlockFees Response
Used as response type in: BaseNode.GetBlockFees, BaseNode.GetBlockSize
The BlockHeader contains all the metadata for the block, including proof of work, a link to the previous block and the transaction kernels.
Used in:
,The hash of the block
Version of the block
Height of this block since the genesis block (height 0)
Hash of the block previous to this in the chain.
Timestamp at which the block was built.
This is the UTXO merkle root of the outputs in the blockchain
This is the merkle root of all outputs in this block
This is the MMR root of the kernels
This is the Merkle root of the inputs in this block
Total accumulated sum of kernel offsets since genesis block. We can derive the kernel offset sum for *this* block from the total kernel offset of the previous block header.
Nonce increment used to mine this block.
Proof of work metadata
Kernel MMR size
Output MMR size
Sum of script offsets for all kernels in this block.
Merkle root of validator nodes
Validator size
Used as response type in: BaseNode.GetHeaderByHash, BaseNode.ListHeaders
The block header
The number of blocks from the tip of this block (a.k.a depth)
The block reward i.e mining reward + fees
Achieved difficulty
The number of transactions contained in the block
Used in:
Used in:
Used in:
,Define the explicit ComAndPubSignature implementation for the Minotari base layer. A different signature scheme can be employed by redefining this type.
Used in:
, ,Define the explicit CommitmentSignature implementation for the Minotari base layer. A different signature scheme can be employed by redefining this type
Used in:
Used in:
/ An Empty placeholder for endpoints without request parameters
Used as request type in: BaseNode.CheckForUpdates, BaseNode.GetMempoolStats, BaseNode.GetNetworkStatus, BaseNode.GetSyncInfo, BaseNode.GetSyncProgress, BaseNode.GetTipInfo, BaseNode.GetVersion, BaseNode.Identify, BaseNode.ListConnectedPeers
(message has no fields)
Used in:
(message has no fields)
The request used for querying blocks in the base node's current best chain. Currently only querying by height is available. Multiple blocks may be queried.e.g. [189092,100023,122424]. The order in which they are returned is not guaranteed.
Used as request type in: BaseNode.GetBlocks, BaseNode.GetTokensInCirculation
The return type of the rpc GetBlocks. Blocks are not guaranteed to be returned in the order requested.
(message has no fields)
This is the message that is returned for a miner after it asks for a new block.
Used as response type in: BaseNode.GetNewBlock, BaseNode.GetNewBlockTemplateWithCoinbases, BaseNode.GetNewBlockWithCoinbases
This is the header hash of the completed block
This is the completed block
Optionally get a set of specific unique_ids
The request used for querying a function that requires a height, either between 2 points or from the chain tip If start_height and end_height are set and > 0, they take precedence, otherwise from_tip is used
Used as request type in: BaseNode.GetBlockTiming, BaseNode.GetNetworkDifficulty
The height from the chain tip (optional)
The starting height (optional)
The ending height (optional)
The representation of a historical block in the blockchain. It is essentially identical to a protocol-defined block but contains some extra metadata that clients such as Block Explorers will find interesting.
Used as response type in: BaseNode.GetBlocks, BaseNode.SearchKernels, BaseNode.SearchUtxos
Used as field type in:
The number of blocks that have been mined since this block, including this one. The current tip will have one confirmation.
The underlying block
A generic uint value
Used in:
(message has no fields)
Used in:
,The current chain height, or the block number of the longest valid chain, or `None` if there is no chain
The block hash of the current tip of the longest valid chain, or `None` for an empty chain
The current geometric mean of the pow of the chain tip, or `None` if there is no chain
This is the min height this node can provide complete blocks for. A 0 here means this node is archival and can provide complete blocks for every height.
This is mining data for the miner asking for a new block
Used in:
,bytes merge_mining_hash =4;
Used in:
,The NewBlockHeaderTemplate is used for the construction of a new mine-able block. It contains all the metadata for the block that the Base Node is able to complete on behalf of a Miner.
Used in:
Version of the block
Height of this block since the genesis block (height 0)
Hash of the block previous to this in the chain.
Total accumulated sum of kernel offsets since genesis block. We can derive the kernel offset sum for *this* block from the total kernel offset of the previous block header.
Proof of work metadata
Sum of script offsets for all kernels in this block.
The new block template is used constructing a new partial block, allowing a miner to added the coinbase utxo and as a final step the Base node to add the MMR roots to the header.
Used as request type in: BaseNode.GetNewBlock, BaseNode.GetNewBlockBlob
Used as field type in:
,The NewBlockHeaderTemplate is used for the construction of a new mineable block. It contains all the metadata for the block that the Base Node is able to complete on behalf of a Miner.
This flag indicates if the inputs, outputs and kernels have been sorted internally, that is, the sort() method has been called. This may be false even if all components are sorted.
Sometimes the mempool has not synced to the latest tip, this flag indicates if the mempool is out of sync. In most cases the next call to get_new_block_template will return a block with the mempool in sync.
Options for UTXOs
Used in:
, , , , ,Version
The type of output, eg Coinbase, all of which have different consensus rules
The maturity of the specific UTXO. This is the min lock height at which an UTXO can be spend. Coinbase UTXO require a min maturity of the Coinbase_lock_height, this should be checked on receiving new blocks.
Additional arbitrary info in coinbase transactions supplied by miners
Features that are specific to a side chain
The type of range proof used in the output
/ Output types
Used in:
,/ Output version
Used in:
Used in:
,/ Public key of the peer
/ NodeId of the peer
/ Peer's addresses
/ Last connection attempt to peer
/ Flags for the peer.
/ Features supported by the peer
/ used as information for more efficient protocol negotiation.
/ User agent advertised by the peer
Used in:
This is used to request the which pow algo should be used with the block template
Used in:
, ,The pow algo to use
The permitted pow algorithms
Used in:
Accessible as `grpc::pow_algo::PowAlgos::Randomx`
Accessible as `grpc::pow_algo::PowAlgos::Sha3x`
/ PoW Algorithm constants
Used in:
The proof of work data structure that is included in the block header.
Used in:
,The algorithm used to mine this block 0 = Monero 1 = Sha3X
Supplemental proof of work data. For example for Sha3x, this would be empty (only the block header is required), but for Monero merge mining we need the Monero block header and RandomX seed hash.
/ An unsigned range interface to more accurately represent Rust native Range's
Used in:
,/ Range proof
Used in:
,/ Range proof types
Used in:
Used in:
Define the explicit Signature implementation for the Minotari base layer. A different signature scheme can be employed by redefining this type.
Used in:
, , , ,Used in:
Used as response type in: BaseNode.SubmitBlock, BaseNode.SubmitBlockBlob
Used in:
Used in:
Used in:
,Used in:
A transaction which consists of a kernel offset and an aggregate body made up of inputs, outputs and kernels.
Used in:
,A transaction input. Primarily a reference to an output being spent by the transaction.
Used in:
The features of the output being spent. We will check maturity for all outputs.
The commitment referencing the output being spent.
Hash of the input, as it appears in the MMR
The serialised script
The script input data, if any
A signature with k_s, signing the script, input data, and mined height
The offset public key, K_O
The hash of the output this input is spending
Covenant
Version
The encrypted data
The minimum value of the commitment that is proven by the range proof (in MicroMinotari)
The metadata signature for output this input is spending
The rangeproof hash for output this input is spending
The transaction kernel tracks the excess for a given transaction. For an explanation of what the excess is, and why it is necessary, refer to the [Mimblewimble TLU post](https://tlu.tarilabs.com/protocols/mimblewimble-1/sources/PITCHME.link.html?highlight=mimblewimble#mimblewimble). The kernel also tracks other transaction metadata, such as the lock height for the transaction (i.e. the earliest this transaction can be mined) and the transaction fee, in cleartext.
Used in:
Options for a kernel's structure or use
/ Fee originally included in the transaction this proof is for (in MicroMinotari)
This kernel is not valid earlier than lock_height blocks The max lock_height of all *inputs* to this transaction
Remainder of the sum of all transaction commitments. If the transaction is well formed, amounts components should sum to zero and the excess is hence a valid public key.
The signature proving the excess is a valid public key, which signs the transaction fee.
The hash of the kernel, as it appears in the MMR
Version
Optional burned commitment
Used in:
Output for a transaction, defining the new ownership of coins that are being transferred. The commitment is a blinded value for the output while the range proof guarantees the commitment includes a positive value without overflow and the ownership of the private key.
Used in:
, ,Options for an output's structure or use
The homomorphic commitment representing the output amount
A proof that the commitment is in the right range
The hash of the output, as it appears in the MMR
Tari script serialised script
Tari script offset public key, K_O
Metadata signature with the homomorphic commitment private values (amount and blinding factor) and the sender offset private key
Covenant
Version
Encrypted Pedersen commitment openings (value and mask) for the output
The minimum value of the commitment that is proven by the range proof (in MicroMinotari)
Value of the output
Spending key of the output
Options for an output's structure or use
Tari script serialised script
Tari script input data for spending
Tari script private key
Tari script offset pubkey, K_O
UTXO signature with the script offset private key, k_O
The minimum height the script allows this output to be spent
Covenant
Encrypted data
The minimum value of the commitment that is proven by the range proof (in MicroMinotari)
The range proof
Used in:
Used in:
/ Weight params
Used in: