code.vegaprotocol.io/vega@v0.79.0/protos/sources/vega/commands/v1/validator_commands.proto (about)

     1  syntax = "proto3";
     2  
     3  package vega.commands.v1;
     4  
     5  import "vega/chain_events.proto";
     6  import "vega/commands/v1/signature.proto";
     7  import "vega/vega.proto";
     8  
     9  option go_package = "code.vegaprotocol.io/vega/protos/vega/commands/v1";
    10  
    11  // A validator command which is sent automatically at regular intervals by any validator participating in the network.
    12  // It is used to allow the network to know whether a validator is active, or if they have shut down.
    13  message ValidatorHeartbeat {
    14    // Node ID of the validator emitting the heartbeat.
    15    string node_id = 1;
    16    // Signature from the validator made using their Ethereum wallet.
    17    Signature ethereum_signature = 2;
    18    // Signature from the validator made using their Vega wallet.
    19    Signature vega_signature = 3;
    20    // Message which has been signed.
    21    string message = 4;
    22  }
    23  
    24  // A command that allows a new node operator to announce themselves to the network as a new validator.
    25  message AnnounceNode {
    26    // Vega public key of the node being announced.
    27    string vega_pub_key = 1;
    28    // Ethereum public key of the node being announced.
    29    string ethereum_address = 2;
    30    // Public key for the blockchain, currently the node's CometBFT key.
    31    string chain_pub_key = 3;
    32    // URL to the node operators homepage allowing stake holders to make an informed decision when delegating.
    33    string info_url = 4;
    34    // Country code (ISO 3166-1 alpha-2) for the location of the node.
    35    string country = 5;
    36    // Node ID of the validator, which is the node's public master key.
    37    string id = 6;
    38    // Human-readable name of the node.
    39    string name = 7;
    40    // URL to the node operator's avatar.
    41    string avatar_url = 8;
    42    // Vega public key derivation index.
    43    uint32 vega_pub_key_index = 9;
    44    // Epoch from which the node is expected to be ready to validate blocks.
    45    uint64 from_epoch = 10;
    46    // Signature from the node made using the ethereum wallet.
    47    Signature ethereum_signature = 11;
    48    // Signature from the node made using the Vega wallet.
    49    Signature vega_signature = 12;
    50    // Ethereum public key to use as a submitter to allow automatic signature generation.
    51    string submitter_address = 13;
    52  }
    53  
    54  // A validator command which is sent automatically by a node when it has verified a resource external to the network.
    55  message NodeVote {
    56    // Previous public key field.
    57    reserved 1;
    58    // Reference identifying the resource that has been verified.
    59    string reference = 2;
    60    // Type of external event that has been verified.
    61    Type type = 3;
    62  
    63    enum Type {
    64      // Represents an unspecified or missing value from the input
    65      TYPE_UNSPECIFIED = 0;
    66      // Node vote for a new stake deposit
    67      TYPE_STAKE_DEPOSITED = 1;
    68      // Node vote for a new stake removed event
    69      TYPE_STAKE_REMOVED = 2;
    70      // Node vote for a new collateral deposit
    71      TYPE_FUNDS_DEPOSITED = 3;
    72      // Node vote for a new signer added to the erc20 bridge
    73      TYPE_SIGNER_ADDED = 4;
    74      // Node vote for a signer removed from the erc20 bridge
    75      TYPE_SIGNER_REMOVED = 5;
    76      // Node vote for a bridge stopped event
    77      TYPE_BRIDGE_STOPPED = 6;
    78      // Node vote for a bridge resumed event
    79      TYPE_BRIDGE_RESUMED = 7;
    80      // Node vote for a newly listed asset
    81      TYPE_ASSET_LISTED = 8;
    82      // Node vote for an asset limits update
    83      TYPE_LIMITS_UPDATED = 9;
    84      // Node vote to share the total supply of the staking token
    85      TYPE_STAKE_TOTAL_SUPPLY = 10;
    86      // Node vote to update the threshold of the signer set for the multisig contract
    87      TYPE_SIGNER_THRESHOLD_SET = 11;
    88      // Node vote to validate a new assert governance proposal
    89      TYPE_GOVERNANCE_VALIDATE_ASSET = 12;
    90      // Node vote for an Ethereum contract call result
    91      TYPE_ETHEREUM_CONTRACT_CALL_RESULT = 13;
    92      // Node vote for an Ethereum chain event heartbeat.
    93      TYPE_ETHEREUM_HEARTBEAT = 14;
    94    }
    95  }
    96  
    97  // Kind of signature created by a node, for example, allow-listing a new asset, withdrawal etc
    98  enum NodeSignatureKind {
    99    // Represents an unspecified or missing value from the input.
   100    NODE_SIGNATURE_KIND_UNSPECIFIED = 0;
   101    // Represents a signature for a new asset allow-listing.
   102    NODE_SIGNATURE_KIND_ASSET_NEW = 1;
   103    // Represents a signature for an asset withdrawal.
   104    NODE_SIGNATURE_KIND_ASSET_WITHDRAWAL = 2;
   105    // Represents a signature for a new signer added to the erc20 multisig contract.
   106    NODE_SIGNATURE_KIND_ERC20_MULTISIG_SIGNER_ADDED = 3;
   107    // Represents a signature for a signer removed from the erc20 multisig contract.
   108    NODE_SIGNATURE_KIND_ERC20_MULTISIG_SIGNER_REMOVED = 4;
   109    // Represents a signature for an asset update allow-listing.
   110    NODE_SIGNATURE_KIND_ASSET_UPDATE = 5;
   111  }
   112  
   113  // A validator command sent automatically containing a signature that can be used on a foreign chain to process an action.
   114  message NodeSignature {
   115    // ID of the resource that the signature relates to.
   116    string id = 1;
   117    // Signature generated by the node.
   118    bytes sig = 2;
   119    // Kind of resource being signed.
   120    NodeSignatureKind kind = 3;
   121  }
   122  
   123  // A validator command sent automatically that provides information of events that have happened on foreign chains.
   124  message ChainEvent {
   125    reserved 1003, 1004;
   126    // ID of the transaction on the foreign chain that caused the event.
   127    string tx_id = 1;
   128    // Arbitrary one-time integer used to prevent replay attacks.
   129    uint64 nonce = 2;
   130    // Event being forwarded.
   131    oneof event {
   132      // Built-in asset event.
   133      vega.BuiltinAssetEvent builtin = 1001;
   134      // Ethereum ERC20 event.
   135      vega.ERC20Event erc20 = 1002;
   136      // Ethereum Staking event.
   137      vega.StakingEvent staking_event = 1005;
   138      // Ethereum ERC20 multisig event.
   139      vega.ERC20MultiSigEvent erc20_multisig = 1006;
   140      // Ethereum contract call event.
   141      vega.EthContractCallEvent contract_call = 1007;
   142      // Heartbeat showing evidence that a contract is being listened to.
   143      vega.ERC20Heartbeat heartbeat = 1008;
   144    }
   145  }
   146  
   147  // A validator command sent manually that allows a node operator to indicate to the network that their node's Vega key will be rotated.
   148  message KeyRotateSubmission {
   149    // New Vega public key derivation index.
   150    uint32 new_pub_key_index = 1;
   151    // Block height at which the key rotation will take effect.
   152    uint64 target_block = 2;
   153    // Vega public key that would be rotated to.
   154    string new_pub_key = 3;
   155    // Hash of the node's current Vega public key.
   156    string current_pub_key_hash = 4;
   157  }
   158  
   159  // A validator command sent manually that allows a node operator to indicate to the network that their node's Ethereum key will be rotated.
   160  message EthereumKeyRotateSubmission {
   161    // Block height at which the key rotation will take effect.
   162    uint64 target_block = 1;
   163    // Ethereum address that is being rotated to.
   164    string new_address = 2;
   165    // Ethereum address of the node's current Ethereum keys.
   166    string current_address = 3;
   167    // Ethereum public key to use as a submitter to allow automatic signature generation.
   168    string submitter_address = 4;
   169    // Signature signed by the new Ethereum key that can be verified to prove ownership.
   170    Signature ethereum_signature = 5;
   171  }
   172  
   173  // A validator command sent automatically to reach consensus on floating point values.
   174  message StateVariableProposal {
   175    // Details of the state variable being proposed.
   176    vega.StateValueProposal proposal = 1;
   177  }
   178  
   179  // A validator command sent manually by a node operator to propose a protocol upgrade.
   180  message ProtocolUpgradeProposal {
   181    // Block height at which to perform the upgrade.
   182    uint64 upgrade_block_height = 1;
   183    // Release tag for the Vega binary.
   184    string vega_release_tag = 2;
   185  }