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

auxiliary.tss.tss_vote.proto Maven / Gradle / Ivy

There is a newer version: 0.57.1
Show newest version
/**
 * # Tss Vote Transaction
 *
 * ### Keywords
 * The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
 * "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
 * document are to be interpreted as described in
 * [RFC2119](https://www.ietf.org/rfc/rfc2119) and clarified in
 * [RFC8174](https://www.ietf.org/rfc/rfc8174).
 */
syntax = "proto3";

package com.hedera.hapi.services.auxiliary.tss;

/*
 * 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.hedera.hapi.services.auxiliary.tss.legacy";
// <<>> This comment is special code for setting PBJ Compiler java package
option java_multiple_files = true;

/**
 * A transaction body to vote on the validity of Threshold Signature Scheme
 * (TSS) Messages for a candidate roster.
 *
 * - A `TssVoteTransactionBody` MUST identify the hash of the roster containing
 *   the node generating this TssVote
 * - A `TssVoteTransactionBody` MUST identify the hash of the roster that the
 *   TSS messages is for
 *  - If the candidate roster has received enough yes votes, the candidate
 *    roster SHALL be adopted.
 *  - Switching to the candidate roster MUST not happen until enough nodes have
 *    voted that they have verified a threshold number of TSS messages from the
 *    active roster.
 *  - A vote consists of a bit vector of message statuses where each bit
 *    corresponds to the order of TssMessages as they have come through
 *    consensus.
 *  - The threshold for votes to adopt a candidate roster SHALL be at least 1/3
 *    of the consensus weight of the active roster to ensure that at least 1
 *    honest node has validated the TSS key material.
 */
message TssVoteTransactionBody {

  /**
   * A hash of the roster containing the node generating this TssVote.
   */
  bytes source_roster_hash = 1;

  /**
   * A hash of the roster that this TssVote is for.
   */
  bytes target_roster_hash = 2;

  /**
   * An identifier (and public key) computed from the TssMessages for the target
   * roster.
   */
  bytes ledger_id = 3;

  /**
   * A signature produced by the node.
   * 

* This signature SHALL be produced using the node RSA signing key to sign * the ledger_id.
* This signature SHALL be used to establish a chain of trust in the ledger id. */ bytes node_signature = 4; /** * A bit vector of message statuses. *

* #### Example *

  • The least significant bit of byte[0] SHALL be the 0th item in the sequence.
  • *
  • The most significant bit of byte[0] SHALL be the 7th item in the sequence.
  • *
  • The least significant bit of byte[1] SHALL be the 8th item in the sequence.
  • *
  • The most significant bit of byte[1] SHALL be the 15th item in the sequence.
  • *
* A bit SHALL be set if the `TssMessage` for the `TssMessageTransaction` * with a sequence number matching that bit index has been * received, and is valid.
* A bit SHALL NOT be set if the `TssMessage` has not been received or was * received but not valid. */ bytes tss_vote = 5; }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy