@@ -12,22 +12,32 @@ import "governance_instruction.proto";
12
12
// Resulting bytes should then be signed with the signature scheme specified.
13
13
// The signed lazer transaction is encoded as bytes and sent to Pyth Lazer Relayer.
14
14
message SignedLazerTransaction {
15
- // [required] specifies the type of signature used to sign the payload
16
- optional TransactionSignatureType signature_type = 1 ;
17
-
18
- // [required] signature derived from signing payload bytes
19
- optional bytes signature = 2 ;
15
+ // [required] signature with public key
16
+ optional SignatureData signature_data = 1 ;
20
17
21
18
// [required] lazer transaction encoded as bytes through protobuf
22
- optional bytes payload = 3 ;
19
+ optional bytes payload = 2 ;
20
+ }
23
21
24
- // TODO: Add public key
22
+ // Signature for encoded payload along with the relevant public keys to verify against it
23
+ // Public key should successfully verify payload
24
+ // Pyth Lazer will maintain a list of valid public keys
25
+ // Passed public key should be present in publisher's list of valid keys
26
+ message SignatureData {
27
+ // [required] type of signature, which determines included data needed for verifying
28
+ oneof data {
29
+ Ed25519SignatureData ed25519 = 1 ;
30
+ };
25
31
}
26
32
27
- // Types of signatures supported by Pyth Lazer
28
- enum TransactionSignatureType {
29
- // signature is 64 bytes long
30
- ed25519 = 0 ;
33
+ // ED25519 style signature. Should include a single signature and a single public key
34
+ // Signature will be verified using public key after determining public key is valid
35
+ message Ed25519SignatureData {
36
+ // [required] 64 byte signature
37
+ optional bytes signature = 1 ;
38
+
39
+ // [required] 32 byte public key
40
+ optional bytes public_key = 2 ;
31
41
}
32
42
33
43
// Transaction contianing one of the valid Lazer Transactions
0 commit comments