@@ -12,10 +12,9 @@ import "dynamic_value.proto";
1212package pyth_lazer_transaction ;
1313
1414// Representation of a complete governance instruction. This value will be signed
15- // by a governance source.
15+ // by a governance source. If the governance source is Wormhole emitter, the VAA payload will
16+ // be the encoded `GovernanceInstruction` message.
1617message GovernanceInstruction {
17- // [required] Governance source that signed this instruction.
18- optional GovernanceSource source = 1 ;
1918 // Action requested by this instruction. For the instruction to be accepted, all directives
2019 // must be successfully applied. In case of any failure, the whole instruction is reverted.
2120 // However, note that if the instruction targets multiple (or all) shards, each shard will
@@ -29,14 +28,15 @@ message GovernanceInstruction {
2928 // is greater than the specified value. After `max_execution_timestamp` is in the past,
3029 // it will no longer be possible to execute this instruction.
3130 optional google.protobuf.Timestamp max_execution_timestamp = 4 ;
32- // [required] Sequence number of this instruction. It must be greater than 0.
33- // It must always be increasing, but not required to be
34- // strictly sequential (i.e. gaps are allowed). Each shard separately keeps track of the last executed
35- // governance instruction and will reject instructions with the same or smaller sequence no.
36- // Note that if instructions are received out of order, some of them may become permanently
37- // rejected (e.g. if instruction #3 has been successfully processed before instruction #2 was observed,
38- // #2 will always be rejected).
39- // Sequence numbers are assigned and tracked separately for each governance source.
31+ // [optional] Sequence number of this instruction. Required for SingleEd25519 governance source
32+ // and optional for WomrholeEmitter governance source (because Wormhole has its own sequence
33+ // numbers). If set, it must be greater than 0, and always be increasing, but not required to be
34+ // strictly sequential (i.e. gaps are allowed). Each shard separately keeps track of the last
35+ // executed governance instruction and will reject instructions with the same or smaller
36+ // sequence no. Note that if instructions are received out of order, some of them may become
37+ // permanently rejected (e.g. if instruction #3 has been successfully processed before
38+ // instruction #2 was observed, #2 will always be rejected). Sequence numbers are assigned and
39+ // tracked separately for each governance source.
4040 optional uint32 governance_sequence_no = 5 ;
4141}
4242
@@ -155,10 +155,17 @@ message GovernanceSource {
155155 optional bytes public_key = 1 ;
156156 }
157157
158+ message WormholeEmitter {
159+ // [required] Wormhole emitter address.
160+ optional bytes address = 1 ;
161+ // [required] Wormhole emitter chain ID. Restricted to uint16.
162+ optional uint32 chain_id = 2 ;
163+ }
164+
158165 // [required]
159166 oneof source {
160167 SingleEd25519 single_ed25519 = 1 ;
161- // TODO: wormhole source goes here.
168+ WormholeEmitter wormhole_emitter = 2 ;
162169 }
163170}
164171
@@ -347,4 +354,3 @@ message DeactivateFeed {
347354 // governance instruction is processed.
348355 optional google.protobuf.Timestamp deactivation_timestamp = 1 ;
349356}
350-
0 commit comments