All Downloads are FREE. Search and download functionalities are using the official Maven repository.

state.roster.roster.proto Maven / Gradle / Ivy

The newest version!
syntax = "proto3";

package com.hedera.hapi.node.state.roster;

/*
 * Copyright (C) 2024 Hedera Hashgraph, LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import "basic_types.proto";

option java_package = "com.hederahashgraph.api.proto.java";
// <<>> This comment is special code for setting PBJ Compiler java package
option java_multiple_files = true;

/**
 * A single roster in the network state.
 * 

* The roster SHALL be a list of `RosterEntry` objects. */ message Roster { /** * List of roster entries, one per consensus node. *

* This list SHALL contain roster entries in natural order of ascending node ids. * This list SHALL NOT be empty.
*/ repeated RosterEntry roster_entries = 1; } /** * A single roster entry in the network state. * * Each roster entry SHALL encapsulate the elements required * to manage node participation in the Threshold Signature Scheme (TSS).
* All fields except tss_encryption_key are REQUIRED. */ message RosterEntry { /** * A consensus node identifier. *

* Node identifiers SHALL be unique _within_ a ledger, * and MUST NOT be repeated _between_ shards and realms. */ uint64 node_id = 1; /** * A consensus weight. *

* Each node SHALL have a weight of zero or more in consensus calculations.
* The sum of the weights of all nodes in the roster SHALL form the total weight of the system, * and each node's individual weight SHALL be proportional to that sum.
*/ uint64 weight = 2; /** * An RSA public certificate used for signing gossip events. *

* This value SHALL be a certificate of a type permitted for gossip * signatures.
* This value SHALL be the DER encoding of the certificate presented.
* This field is REQUIRED and MUST NOT be empty. */ bytes gossip_ca_certificate = 3; /** * An elliptic curve public encryption key.
* This is currently an ALT_BN128 curve, but the elliptic curve * type may change in the future. For example, * if the Ethereum ecosystem creates precompiles for BLS12_381, * we may switch to that curve. *

* This value SHALL be specified according to EIP-196 and EIP-197 standards, * See EIP-196 and * EIP-197
* This field is _initially_ OPTIONAL (i.e. it can be unset _when created_) * but once set, it is REQUIRED thereafter. */ bytes tss_encryption_key = 4; /** * A list of service endpoints for gossip. *

* These endpoints SHALL represent the published endpoints to which other * consensus nodes may _gossip_ transactions.
* If the network configuration value `gossipFqdnRestricted` is set, then * all endpoints in this list SHALL supply only IP address.
* If the network configuration value `gossipFqdnRestricted` is _not_ set, * then endpoints in this list MAY supply either IP address or FQDN, but * SHALL NOT supply both values for the same endpoint.
* This list SHALL NOT be empty.
*/ repeated proto.ServiceEndpoint gossip_endpoint = 5; }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy