mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-11-27 01:48:17 +00:00
1b601b3e08
BREAKING CHANGE: StellarAssetType is renamed to StellarAsset. The name StellarAssetType is reused for the corresponding enum. Enums are introduced in several other places. Their values correspond to allowed values of (previously int) fields so this should not pose a compatibility problem. Many fields are now required. We believe that this should not pose a compatibility problem, because all known interfaces to Stellar signing actually accept Stellar XDR on input, whose required fields match the protobuf schema.
247 lines
8.3 KiB
Protocol Buffer
247 lines
8.3 KiB
Protocol Buffer
syntax = "proto2";
|
|
package hw.trezor.messages.stellar;
|
|
|
|
// Sugar for easier handling in Java
|
|
option java_package = "com.satoshilabs.trezor.lib.protobuf";
|
|
option java_outer_classname = "TrezorMessageStellar";
|
|
|
|
// https://github.com/stellar/stellar-core/blob/02d26858069de7c0eefe065056fb0a19bf72ea56/src/xdr/Stellar-ledger-entries.x#L25-L31
|
|
enum StellarAssetType {
|
|
NATIVE = 0;
|
|
ALPHANUM4 = 1;
|
|
ALPHANUM12 = 2;
|
|
}
|
|
|
|
/**
|
|
* Describes a Stellar asset
|
|
* @embed
|
|
*/
|
|
message StellarAsset {
|
|
required StellarAssetType type = 1;
|
|
optional string code = 2; // for non-native assets, string describing the code
|
|
optional string issuer = 3; // issuing address
|
|
|
|
}
|
|
|
|
/**
|
|
* Request: Address at the specified index
|
|
* @start
|
|
* @next StellarAddress
|
|
*/
|
|
message StellarGetAddress {
|
|
repeated uint32 address_n = 1; // BIP-32 path. For compatibility with other wallets, must be m/44'/148'/index'
|
|
optional bool show_display = 2; // optionally show on display before sending the result
|
|
}
|
|
|
|
/**
|
|
* Response: Address for the given index
|
|
* @end
|
|
*/
|
|
message StellarAddress {
|
|
required string address = 1; // Address in Stellar format (base32 of a pubkey with checksum)
|
|
}
|
|
|
|
/**
|
|
* Request: ask device to sign Stellar transaction
|
|
* @start
|
|
* @next StellarTxOpRequest
|
|
*/
|
|
message StellarSignTx {
|
|
repeated uint32 address_n = 2; // BIP-32 path. For compatibility with other wallets, must be m/44'/148'/index'
|
|
required string network_passphrase = 3; // passphrase for signing messages on the destination network
|
|
required string source_account = 4; // source account address
|
|
required uint32 fee = 5; // Fee (in stroops) for the transaction
|
|
required uint64 sequence_number = 6; // transaction sequence number
|
|
optional uint32 timebounds_start = 8; // unix timestamp (client must truncate this to 32 bytes)
|
|
optional uint32 timebounds_end = 9; // unix timestamp (client must truncate this to 32 bytes)
|
|
required StellarMemoType memo_type = 10; // type of memo attached to the transaction
|
|
optional string memo_text = 11; // up to 28 characters (4 bytes are for length)
|
|
optional uint64 memo_id = 12; // 8-byte uint64
|
|
optional bytes memo_hash = 13; // 32 bytes representing a hash
|
|
required uint32 num_operations = 14; // number of operations in this transaction
|
|
|
|
// https://github.com/stellar/stellar-core/blob/02d26858069de7c0eefe065056fb0a19bf72ea56/src/xdr/Stellar-transaction.x#L506-L513
|
|
enum StellarMemoType {
|
|
NONE = 0;
|
|
TEXT = 1;
|
|
ID = 2;
|
|
HASH = 3;
|
|
RETURN = 4;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Response: device is ready for client to send the next operation
|
|
* @next StellarPaymentOp
|
|
* @next StellarCreateAccountOp
|
|
* @next StellarPathPaymentOp
|
|
* @next StellarManageOfferOp
|
|
* @next StellarCreatePassiveOfferOp
|
|
* @next StellarSetOptionsOp
|
|
* @next StellarChangeTrustOp
|
|
* @next StellarAllowTrustOp
|
|
* @next StellarAccountMergeOp
|
|
* @next StellarManageDataOp
|
|
* @next StellarBumpSequenceOp
|
|
*/
|
|
message StellarTxOpRequest {
|
|
}
|
|
|
|
/**
|
|
* Request: ask device to confirm this operation type
|
|
* @next StellarTxOpRequest
|
|
* @next StellarSignedTx
|
|
*/
|
|
message StellarPaymentOp {
|
|
optional string source_account = 1; // (optional) source account address
|
|
required string destination_account = 2; // destination account address
|
|
required StellarAsset asset = 3; // asset involved in the operation
|
|
required sint64 amount = 4; // amount of the given asset to pay
|
|
}
|
|
|
|
/**
|
|
* Request: ask device to confirm this operation type
|
|
* @next StellarTxOpRequest
|
|
* @next StellarSignedTx
|
|
*/
|
|
message StellarCreateAccountOp {
|
|
optional string source_account = 1; // (optional) source account address
|
|
required string new_account = 2; // account address to create
|
|
required sint64 starting_balance = 3; // initial starting balance for the new account
|
|
}
|
|
|
|
/**
|
|
* Request: ask device to confirm this operation type
|
|
* @next StellarTxOpRequest
|
|
* @next StellarSignedTx
|
|
*/
|
|
message StellarPathPaymentOp {
|
|
optional string source_account = 1; // (optional) source address
|
|
required StellarAsset send_asset = 2;
|
|
required sint64 send_max = 3;
|
|
required string destination_account = 4;
|
|
required StellarAsset destination_asset = 5;
|
|
required sint64 destination_amount = 6;
|
|
repeated StellarAsset paths = 7;
|
|
}
|
|
|
|
/**
|
|
* Request: ask device to confirm this operation type
|
|
* @next StellarTxOpRequest
|
|
* @next StellarSignedTx
|
|
*/
|
|
message StellarManageOfferOp {
|
|
optional string source_account = 1; // (optional) source account address
|
|
required StellarAsset selling_asset = 2;
|
|
required StellarAsset buying_asset = 3;
|
|
required sint64 amount = 4;
|
|
required uint32 price_n = 5; // Price numerator
|
|
required uint32 price_d = 6; // Price denominator
|
|
required uint64 offer_id = 7; // Offer ID for updating an existing offer
|
|
}
|
|
|
|
/**
|
|
* Request: ask device to confirm this operation type
|
|
* @next StellarTxOpRequest
|
|
* @next StellarSignedTx
|
|
*/
|
|
message StellarCreatePassiveOfferOp {
|
|
optional string source_account = 1; // (optional) source account address
|
|
required StellarAsset selling_asset = 2;
|
|
required StellarAsset buying_asset = 3;
|
|
required sint64 amount = 4;
|
|
required uint32 price_n = 5; // Price numerator
|
|
required uint32 price_d = 6; // Price denominator
|
|
}
|
|
|
|
/**
|
|
* Request: ask device to confirm this operation type
|
|
* @next StellarTxOpRequest
|
|
* @next StellarSignedTx
|
|
*/
|
|
message StellarSetOptionsOp {
|
|
optional string source_account = 1; // (optional) source account address
|
|
optional string inflation_destination_account = 2; // (optional) inflation destination address
|
|
optional uint32 clear_flags = 3;
|
|
optional uint32 set_flags = 4;
|
|
optional uint32 master_weight = 5;
|
|
optional uint32 low_threshold = 6;
|
|
optional uint32 medium_threshold = 7;
|
|
optional uint32 high_threshold = 8;
|
|
optional string home_domain = 9;
|
|
optional StellarSignerType signer_type = 10;
|
|
optional bytes signer_key = 11;
|
|
optional uint32 signer_weight = 12;
|
|
|
|
// https://github.com/stellar/stellar-core/blob/02d26858069de7c0eefe065056fb0a19bf72ea56/src/xdr/Stellar-types.x#L32-L37
|
|
enum StellarSignerType {
|
|
ACCOUNT = 0;
|
|
PRE_AUTH = 1;
|
|
HASH = 2;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Request: ask device to confirm this operation type
|
|
* @next StellarTxOpRequest
|
|
* @next StellarSignedTx
|
|
*/
|
|
message StellarChangeTrustOp {
|
|
optional string source_account = 1; // (optional) source account address
|
|
required StellarAsset asset = 2;
|
|
required uint64 limit = 3;
|
|
}
|
|
|
|
/**
|
|
* Request: ask device to confirm this operation type
|
|
* @next StellarTxOpRequest
|
|
* @next StellarSignedTx
|
|
*/
|
|
message StellarAllowTrustOp {
|
|
optional string source_account = 1; // (optional) source account address
|
|
required string trusted_account = 2; // The account being allowed to hold the asset
|
|
required StellarAssetType asset_type = 3;
|
|
optional string asset_code = 4; // human-readable asset code
|
|
required bool is_authorized = 5;
|
|
}
|
|
|
|
/**
|
|
* Request: ask device to confirm this operation type
|
|
* @next StellarTxOpRequest
|
|
* @next StellarSignedTx
|
|
*/
|
|
message StellarAccountMergeOp {
|
|
optional string source_account = 1; // (optional) source account address
|
|
required string destination_account = 2; // destination account address
|
|
}
|
|
|
|
/**
|
|
* Request: ask device to confirm this operation type
|
|
* @next StellarTxOpRequest
|
|
* @next StellarSignedTx
|
|
*/
|
|
message StellarManageDataOp {
|
|
optional string source_account = 1; // (optional) source account address
|
|
required string key = 2;
|
|
optional bytes value = 3; // 64 bytes of arbitrary data
|
|
}
|
|
|
|
/**
|
|
* Request: ask device to confirm this operation type
|
|
* @next StellarTxOpRequest
|
|
* @next StellarSignedTx
|
|
*/
|
|
message StellarBumpSequenceOp {
|
|
optional string source_account = 1; // (optional) source account address
|
|
required uint64 bump_to = 2; // new sequence number
|
|
}
|
|
|
|
/**
|
|
* Response: signature for transaction
|
|
* @end
|
|
*/
|
|
message StellarSignedTx {
|
|
required bytes public_key = 1; // public key for the private key used to sign data
|
|
required bytes signature = 2; // signature suitable for sending to the Stellar network
|
|
}
|