@@ -12,22 +12,32 @@ import "governance_instruction.proto";
1212// Resulting bytes should then be signed with the signature scheme specified.
1313// The signed lazer transaction is encoded as bytes and sent to Pyth Lazer Relayer.
1414message 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 ;
2017
2118 // [required] lazer transaction encoded as bytes through protobuf
22- optional bytes payload = 3 ;
19+ optional bytes payload = 2 ;
20+ }
2321
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+ };
2531}
2632
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 ;
3141}
3242
3343// Transaction contianing one of the valid Lazer Transactions
0 commit comments