shgraph.hapi.0.54.2.source-code.node_update.proto Maven / Gradle / Ivy
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 "google/protobuf/wrappers.proto";
import "basic_types.proto";
/**
* Transaction body to modify address book node attributes.
*
* - This transaction SHALL enable the node operator, as identified by the
* `admin_key`, to modify operational attributes of the node.
* - This transaction MUST be signed by the active `admin_key` for the node.
* - If this transaction sets a new value for the `admin_key`, then both the
* current `admin_key`, and the new `admin_key` MUST sign this transaction.
* - This transaction SHALL NOT change any field that is not set (is null) in
* this transaction body.
* - This SHALL create a pending update to the node, but the change SHALL NOT
* be immediately applied to the active configuration.
* - All pending node updates SHALL be applied 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 `node_id` for the updated entry SHALL be in the
* transaction receipt.
*/
message NodeUpdateTransactionBody {
/**
* A consensus node identifier in the network state.
*
* The node identified MUST exist in the network address book.
* The node identified MUST NOT be deleted.
* This value is REQUIRED.
*/
uint64 node_id = 1;
/**
* An account identifier.
*
* If set, this SHALL replace the node account identifier.
* If set, this transaction MUST be signed by the active `key` for _both_
* the current node account _and_ the identified new node account.
*/
proto.AccountID account_id = 2;
/**
* A short description of the node.
*
* This value, if set, MUST NOT exceed 100 bytes when encoded as UTF-8.
* If set, this value SHALL replace the previous value.
*/
google.protobuf.StringValue description = 3;
/**
* A list of service endpoints for gossip.
*
* If set, this list MUST meet the following requirements.
*
* These endpoints SHALL represent the published endpoints to which other
* consensus nodes may _gossip_ transactions.
* These endpoints SHOULD NOT specify both address and DNS name.
* 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.
*
Example
* Hedera Mainnet _requires_ that address be specified, and does not
* permit DNS name (FQDN) to be specified.
* Mainnet also requires that the first entry be an "internal" IP
* address and the second entry be an "external" IP address.
*
*
* Solo, however, _requires_ DNS name (FQDN) but also permits
* address.
*
*
* If set, the new list SHALL replace the existing list.
*/
repeated proto.ServiceEndpoint gossip_endpoint = 4;
/**
* A list of service endpoints for gRPC calls.
*
* If set, this list MUST meet the following requirements.
*
* These endpoints SHALL represent the published endpoints to which clients
* may submit transactions.
* These endpoints SHOULD specify address and port.
* These endpoints MAY specify a DNS name.
* These endpoints SHOULD NOT specify both address and DNS name.
* This list MUST NOT be empty.
* This list MUST NOT contain more than `8` entries.
*
* Each network may have additional requirements for these endpoints.
* A client MUST check network-specific documentation for those
* details.
*
* If set, the new list SHALL replace the existing list.
*/
repeated proto.ServiceEndpoint service_endpoint = 5;
/**
* 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.
*
* If set, the new value SHALL replace the existing bytes value.
*/
google.protobuf.BytesValue gossip_ca_certificate = 6;
/**
* 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.
*
* If set, the new value SHALL replace the existing hash value.
*/
google.protobuf.BytesValue grpc_certificate_hash = 7;
/**
* An administrative key controlled by the node operator.
*
* This field is OPTIONAL.
* If set, this key MUST sign this transaction.
* If set, this key MUST sign each subsequent transaction to
* update this node.
* If set, this field MUST contain a valid `Key` value.
* If set, this field MUST NOT be set to an empty `KeyList`.
*/
proto.Key admin_key = 8;
}