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 }