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

shgraph.hapi.0.54.0.source-code.node_create.proto Maven / Gradle / Ivy

The newest version!
syntax = "proto3";

package com.hedera.hapi.node.addressbook;

/*
 * 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.
 */

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

import "basic_types.proto";

/**
 * A transaction body to add a new consensus node to the network address book.
 *
 * This transaction body SHALL be considered a "privileged transaction".
 *
 * This message supports a transaction to create a new node in the network
 * address book. The transaction, once complete, enables a new consensus node
 * to join the network, and requires governing council authorization.
 *
 * - A `NodeCreateTransactionBody` MUST be signed by the governing council.
 * - A `NodeCreateTransactionBody` MUST be signed by the `Key` assigned to the
 *   `admin_key` field.
 * - The newly created node information SHALL be added to the network address
 *   book information in the network state.
 * - The new entry SHALL be created in "state" but SHALL NOT participate in
 *   network consensus and SHALL NOT be present in network "configuration"
 *   until the next "upgrade" transaction (as noted below).
 * - All new address book entries SHALL be added to the active network
 *   configuration during the next `freeze` transaction with the field
 *   `freeze_type` set to `PREPARE_UPGRADE`.
 *
 * ### Record Stream Effects
 * Upon completion the newly assigned `node_id` SHALL be in the transaction
 * receipt.
 */
message NodeCreateTransactionBody {
    /**
     * A Node account identifier.
     * 

* This account identifier MUST be in the "account number" form.
* This account identifier MUST NOT use the alias field.
* If the identified account does not exist, this transaction SHALL fail.
* Multiple nodes MAY share the same node account.
* This field is REQUIRED. */ proto.AccountID account_id = 1; /** * A short description of the node. *

* This value, if set, MUST NOT exceed 100 bytes when encoded as UTF-8.
* This field is OPTIONAL. */ string description = 2; /** * A list of service endpoints for gossip. *

* These endpoints SHALL represent the published endpoints to which other * consensus nodes may _gossip_ transactions.
* These endpoints MUST specify a port.
* This list MUST NOT be empty.
* This list MUST NOT contain more than `10` entries.
* The first two entries in this list SHALL be the endpoints published to * all consensus nodes.
* All other entries SHALL be reserved for future use. *

* Each network may have additional requirements for these endpoints. * A client MUST check network-specific documentation for those * details.
* If the network configuration value `gossipFqdnRestricted` is set, then * all endpoints in this list MUST 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 * MUST NOT supply both values for the same endpoint. */ repeated proto.ServiceEndpoint gossip_endpoint = 3; /** * A list of service endpoints for gRPC calls. *

* These endpoints SHALL represent the published gRPC endpoints to which * clients may submit transactions.
* These endpoints MUST specify a port.
* Endpoints in this list MAY supply either IP address or FQDN, but MUST * NOT supply both values for the same endpoint.
* This list MUST NOT be empty.
* This list MUST NOT contain more than `8` entries. */ repeated proto.ServiceEndpoint service_endpoint = 4; /** * A certificate used to sign gossip events. *

* This value MUST be a certificate of a type permitted for gossip * signatures.
* This value MUST be the DER encoding of the certificate presented.
* This field is REQUIRED and MUST NOT be empty. */ bytes gossip_ca_certificate = 5; /** * A hash of the node gRPC TLS certificate. *

* This value MAY be used to verify the certificate presented by the node * during TLS negotiation for gRPC.
* This value MUST be a SHA-384 hash.
* The TLS certificate to be hashed MUST first be in PEM format and MUST be * encoded with UTF-8 NFKD encoding to a stream of bytes provided to * the hash algorithm.
* This field is OPTIONAL. */ bytes grpc_certificate_hash = 6; /** * An administrative key controlled by the node operator. *

* This key MUST sign this transaction.
* This key MUST sign each transaction to update this node.
* This field MUST contain a valid `Key` value.
* This field is REQUIRED and MUST NOT be set to an empty `KeyList`. */ proto.Key admin_key = 7; }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy