// Copyright 2020. The Tari Project // // Redistribution and use in source and binary forms, with or without modification, are permitted provided that the // following conditions are met: // // 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following // disclaimer. // // 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the // following disclaimer in the documentation and/or other materials provided with the distribution. // // 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote // products derived from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, // INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE // USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. syntax = "proto3"; package tari.rpc; /// An unsigned range interface to more accurately represent Rust native Range's message Range { uint64 min = 1; uint64 max = 2; } /// An Empty placeholder for endpoints without request parameters message Empty {} /// Define an interface for block height message BlockHeight { uint64 block_height = 1; } // Define the explicit Signature implementation for the Minotari base layer. A different signature scheme can be // employed by redefining this type. message Signature { bytes public_nonce = 1; bytes signature = 2; } // Define the explicit ComAndPubSignature implementation for the Minotari base layer. A different signature scheme can be // employed by redefining this type. message ComAndPubSignature { bytes ephemeral_commitment = 1; bytes ephemeral_pubkey = 2; bytes u_a = 3; bytes u_x = 4; bytes u_y = 5; } // Define the explicit CommitmentSignature implementation for the Minotari base layer. A different signature scheme can be // employed by redefining this type message CommitmentSignature { bytes public_nonce = 1; bytes u = 2; bytes v = 3; } /// PoW Algorithm constants message PowAlgorithmConstants { uint64 min_difficulty = 2; uint64 max_difficulty = 3; uint64 target_time = 4; } /// Weight params message WeightParams { uint64 kernel_weight = 1; uint64 input_weight = 2; uint64 output_weight = 3; uint64 features_and_scripts_bytes_per_gram = 4; } /// Output version message OutputsVersion { Range outputs = 1; Range features = 2; } /// Output types enum OutputType { STANDARD = 0; COINBASE = 1; BURN = 2; VALIDATOR_NODE_REGISTRATION = 3; CODE_TEMPLATE_REGISTRATION = 4; } /// Range proof types enum RangeProofType { BULLETPROOF_PLUS = 0; REVEALED_VALUE = 1; } message PermittedRangeProofs { OutputType output_type = 1; repeated RangeProofType range_proof_types = 2; } /// Range proof message RangeProof { bytes proof_bytes = 1; } /// Consensus Constants response message ConsensusConstants { uint64 coinbase_min_maturity = 1; uint32 blockchain_version = 2; uint64 future_time_limit = 3; uint64 difficulty_block_window = 5; uint64 max_block_transaction_weight = 7; uint64 pow_algo_count = 8; uint64 median_timestamp_count = 9; uint64 emission_initial = 10; repeated uint64 emission_decay = 11; uint64 emission_tail = 12 [deprecated=true]; uint64 min_sha3x_pow_difficulty = 13; uint64 block_weight_inputs = 14; uint64 block_weight_outputs = 15; uint64 block_weight_kernels = 16; uint64 pre_mine_value = 17; uint64 max_script_byte_size = 18; uint64 effective_from_height = 20; Range valid_blockchain_version_range = 21; uint64 max_randomx_seed_height = 22; map proof_of_work = 23; WeightParams transaction_weight = 24; Range input_version_range = 26; OutputsVersion output_version_range = 27; Range kernel_version_range = 28; repeated OutputType permitted_output_types = 29; uint64 epoch_length = 30; uint64 validator_node_registration_min_deposit_amount = 31; uint64 validator_node_registration_min_lock_height = 32; uint64 validator_node_registration_shuffle_interval_epoch = 33; repeated PermittedRangeProofs permitted_range_proof_types = 34; uint64 inflation_bips = 35; uint64 tail_epoch_length = 36; uint64 max_block_coinbase_count = 37; uint32 vn_registration_max_vns_initial_epoch = 38; uint32 vn_registration_max_vns_per_epoch = 39; } // Unsigned decimal value, examples: // 12345.6789 -> { units = 12345, nanos = 678900000 } // 12345.0006789 -> { units = 12345, nanos = 678900 } message UDecimalValue { // Whole units part of the amount uint64 units = 1; // Nano units of the amount (10^-9) fixed32 nanos = 2; }