1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-11-17 21:22:10 +00:00
trezor-firmware/common/protob/messages-tezos.proto
grdddj 9fc5bb546b style(core): full pyright-based type-checking
Changes many fields to required -- as far as we were able to figure out,
signing would fail if these fields aren't provided anyway, so this
should not pose a compatibility problem.

Co-authored-by: matejcik <ja@matejcik.cz>
2022-01-07 21:41:17 +01:00

171 lines
5.5 KiB
Protocol Buffer

syntax = "proto2";
package hw.trezor.messages.tezos;
// Sugar for easier handling in Java
option java_package = "com.satoshilabs.trezor.lib.protobuf";
option java_outer_classname = "TrezorMessageTezos";
/**
* Request: Ask device for Tezos address corresponding to address_n path
* @start
* @next TezosAddress
* @next Failure
*/
message TezosGetAddress {
repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node
optional bool show_display = 2; // optionally show on display before sending the result
}
/**
* Response: Contains Tezos address derived from device private seed
* @end
*/
message TezosAddress {
required string address = 1; // Coin address in Base58 encoding
}
/**
* Request: Ask device for Tezos public key corresponding to address_n path
* @start
* @next TezosPublicKey
*/
message TezosGetPublicKey {
repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node
optional bool show_display = 2; // Optionally show on display before sending the result
}
/**
* Response: Contains Tezos public key derived from device private seed
* @end
*/
message TezosPublicKey {
required string public_key = 1; // b58 encoded Tezos public key with prefix
}
/**
* Request: Ask device to sign Tezos transaction
* @start
* @next TezosSignedTx
*/
message TezosSignTx {
repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node
required bytes branch = 2;
optional TezosRevealOp reveal = 3; // Tezos reveal operation (may be bundled with other op)
optional TezosTransactionOp transaction = 4; // Tezos transaction operation
optional TezosOriginationOp origination = 5; // Tezos origination operation
optional TezosDelegationOp delegation = 6; // Tezos delegation operation
optional TezosProposalOp proposal = 7; // Tezos proposal operation
optional TezosBallotOp ballot = 8; // Tezos ballot operation
/*
* Tezos contract ID
*/
message TezosContractID {
required TezosContractType tag = 1;
required bytes hash = 2; // Implicit = 21B, originated = 20B + 1B padding
/*
* Type of Tezos Contract type
*/
enum TezosContractType {
Implicit = 0;
Originated = 1;
}
}
/**
* Structure representing information for reveal
*/
message TezosRevealOp {
required bytes source = 7;
required uint64 fee = 2;
required uint64 counter = 3;
required uint64 gas_limit = 4;
required uint64 storage_limit = 5;
required bytes public_key = 6;
}
/**
* Structure representing information for transaction
*/
message TezosTransactionOp {
required bytes source = 9;
required uint64 fee = 2;
required uint64 counter = 3;
required uint64 gas_limit = 4;
required uint64 storage_limit = 5;
required uint64 amount = 6;
required TezosContractID destination = 7;
optional bytes parameters = 8;
optional TezosParametersManager parameters_manager = 10;
message TezosParametersManager {
optional bytes set_delegate = 1;
optional bool cancel_delegate = 2;
optional TezosManagerTransfer transfer = 3;
message TezosManagerTransfer {
required TezosContractID destination = 1;
required uint64 amount = 2;
}
}
}
/**
* Structure representing information for origination
*/
message TezosOriginationOp {
required bytes source = 12;
required uint64 fee = 2;
required uint64 counter = 3;
required uint64 gas_limit = 4;
required uint64 storage_limit = 5;
optional bytes manager_pubkey = 6;
required uint64 balance = 7;
optional bool spendable = 8;
optional bool delegatable = 9;
optional bytes delegate = 10;
required bytes script = 11;
}
/**
* Structure representing information for delegation
*/
message TezosDelegationOp {
required bytes source = 7;
required uint64 fee = 2;
required uint64 counter = 3;
required uint64 gas_limit = 4;
required uint64 storage_limit = 5;
required bytes delegate = 6;
}
/**
* Structure representing information for proposal
*/
message TezosProposalOp {
required bytes source = 1; //Contains only public_key_hash, not to be confused with TezosContractID
required uint64 period = 2;
repeated bytes proposals = 4;
}
/**
* Structure representing information for ballot
*/
message TezosBallotOp {
required bytes source = 1; //Contains only public_key_hash, not to be confused with TezosContractID
required uint64 period = 2;
required bytes proposal = 3;
required TezosBallotType ballot = 4;
enum TezosBallotType {
Yay = 0;
Nay = 1;
Pass = 2;
}
}
}
/**
* Response: Contains Tezos transaction signature
* @end
*/
message TezosSignedTx {
required string signature = 1; // Tezos b58 encoded transaction signature with prefix
required bytes sig_op_contents = 2; // operation_bytes + signed operation_bytes
required string operation_hash = 3; // b58 encoded hashed operation contents with prefix
}