@@ -13,9 +13,15 @@ package pyth_lazer_transaction;
13
13
14
14
// Representation of a complete governance instruction. This value will be signed
15
15
// by a governance source.
16
+ //
17
+ // If the governance source is SingleEd25519, this message will be the payload of LazerTransaction.
18
+ //
19
+ // If the governance source is Wormhole emitter, this message will be the body of the GovernancePayload which
20
+ // is the VAA message Pyth governance sends to Wormhole. The GovernancePayload follows xc-admin spec
21
+ // and looks like so:
22
+ // <magic:u32><module:u8><action:u8><chain:u16><GovernanceInstruction:bytes>
23
+ // You can find the xc-admin spec in: ../../../governance/xc_admin/packages/xc_admin_common/src/governance_payload
16
24
message GovernanceInstruction {
17
- // [required] Governance source that signed this instruction.
18
- optional GovernanceSource source = 1 ;
19
25
// Action requested by this instruction. For the instruction to be accepted, all directives
20
26
// must be successfully applied. In case of any failure, the whole instruction is reverted.
21
27
// However, note that if the instruction targets multiple (or all) shards, each shard will
@@ -29,14 +35,15 @@ message GovernanceInstruction {
29
35
// is greater than the specified value. After `max_execution_timestamp` is in the past,
30
36
// it will no longer be possible to execute this instruction.
31
37
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.
38
+ // [optional] Sequence number of this instruction. Required for SingleEd25519 governance source
39
+ // and optional for WomrholeEmitter governance source (because Wormhole has its own sequence
40
+ // numbers). If set, it must be greater than 0, and always be increasing, but not required to be
41
+ // strictly sequential (i.e. gaps are allowed). Each shard separately keeps track of the last
42
+ // executed governance instruction and will reject instructions with the same or smaller
43
+ // sequence no. Note that if instructions are received out of order, some of them may become
44
+ // permanently rejected (e.g. if instruction #3 has been successfully processed before
45
+ // instruction #2 was observed, #2 will always be rejected). Sequence numbers are assigned and
46
+ // tracked separately for each governance source.
40
47
optional uint32 governance_sequence_no = 5 ;
41
48
}
42
49
@@ -155,10 +162,17 @@ message GovernanceSource {
155
162
optional bytes public_key = 1 ;
156
163
}
157
164
165
+ message WormholeEmitter {
166
+ // [required] Wormhole emitter address.
167
+ optional bytes address = 1 ;
168
+ // [required] Wormhole emitter chain ID. Restricted to uint16.
169
+ optional uint32 chain_id = 2 ;
170
+ }
171
+
158
172
// [required]
159
173
oneof source {
160
174
SingleEd25519 single_ed25519 = 1 ;
161
- // TODO: wormhole source goes here.
175
+ WormholeEmitter wormhole_emitter = 2 ;
162
176
}
163
177
}
164
178
@@ -290,8 +304,8 @@ message SetPublisherActive {
290
304
291
305
// Feed is inactive when added, meaning that it will be available to publishers but not to consumers.
292
306
message AddFeed {
293
- // [required] ID of the price feed. Must be unique (within the shard).
294
- optional uint32 price_feed_id = 1 ;
307
+ // [required] ID of the feed. Must be unique (within the shard).
308
+ optional uint32 feed_id = 1 ;
295
309
// [required] Feed metadata. Some properties are required (name, exponent, etc.).
296
310
// Known properties must have the expected type.
297
311
// Additional arbitrary properties are allowed.
@@ -303,7 +317,7 @@ message AddFeed {
303
317
304
318
message UpdateFeed {
305
319
// [required] ID of the feed that is being updated. Rejects if there is no such feed.
306
- optional uint32 price_feed_id = 1 ;
320
+ optional uint32 feed_id = 1 ;
307
321
// [required]
308
322
// Note: when adding a new variant here, update `Permissions` as well.
309
323
oneof action {
@@ -347,4 +361,3 @@ message DeactivateFeed {
347
361
// governance instruction is processed.
348
362
optional google.protobuf.Timestamp deactivation_timestamp = 1 ;
349
363
}
350
-
0 commit comments