1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-12-22 22:38:08 +00:00

Added EstimateTxSize

This commit is contained in:
slush0 2014-01-18 05:13:47 +01:00
parent 1a42bc3b70
commit 78efd80bbc
2 changed files with 36 additions and 8 deletions

View File

@ -47,7 +47,8 @@ enum MessageType {
MessageType_MessageSignature = 40 [(wire_out) = true]; MessageType_MessageSignature = 40 [(wire_out) = true];
MessageType_PassphraseRequest = 41 [(wire_out) = true]; MessageType_PassphraseRequest = 41 [(wire_out) = true];
MessageType_PassphraseAck = 42 [(wire_in) = true]; MessageType_PassphraseAck = 42 [(wire_in) = true];
MessageType_EstimateTxSize = 43 [(wire_in) = true];
MessageType_TxSize = 44 [(wire_out) = true];
MessageType_DebugLinkDecision = 100 [(wire_debug_in) = true]; MessageType_DebugLinkDecision = 100 [(wire_debug_in) = true];
MessageType_DebugLinkGetState = 101 [(wire_debug_in) = true]; MessageType_DebugLinkGetState = 101 [(wire_debug_in) = true];
MessageType_DebugLinkState = 102 [(wire_debug_out) = true]; MessageType_DebugLinkState = 102 [(wire_debug_out) = true];
@ -84,8 +85,7 @@ message Features {
// Overwrites only filled fields of the structure // Overwrites only filled fields of the structure
message ApplySettings { message ApplySettings {
optional bytes language = 1; optional bytes language = 1;
optional bytes coin_shortcut = 2; optional bytes label = 2 [(binary) = true];
optional bytes label = 3 [(binary) = true];
} }
// Starts workflow for setting/changing the PIN // Starts workflow for setting/changing the PIN
@ -168,6 +168,7 @@ message Entropy {
// Response: PublicKey, Failure // Response: PublicKey, Failure
message GetPublicKey { message GetPublicKey {
repeated uint32 address_n = 1; repeated uint32 address_n = 1;
optional bytes coin_name = 2 [default='Bitcoin'];
} }
// Contains public key derived from device's seed. // Contains public key derived from device's seed.
@ -177,6 +178,7 @@ message PublicKey {
message GetAddress { message GetAddress {
repeated uint32 address_n = 1; // Parameter for address generation algorithm to derive the address from the master node repeated uint32 address_n = 1; // Parameter for address generation algorithm to derive the address from the master node
optional bytes coin_name = 2 [default='Bitcoin'];
} }
message Address { message Address {
@ -238,6 +240,7 @@ message EntropyAck {
message SignMessage { message SignMessage {
repeated uint32 address_n = 1; repeated uint32 address_n = 1;
required bytes message = 2 [(binary) = true]; required bytes message = 2 [(binary) = true];
optional bytes coin_name = 3 [default='Bitcoin'];
} }
message VerifyMessage { message VerifyMessage {
@ -251,12 +254,32 @@ message MessageSignature {
optional bytes signature = 2; optional bytes signature = 2;
} }
// Estimate size of the transaction
// This call behaves exactly like SignTx,
// which means that it can ask for TxInput and TxInput.
// This call is non-blocking (except possible PassphraseRequest
// to unlock the seed) and returns estimated size of transaction
// in bytes.
//
// Response: TxRequest, TxSize, Failure
message EstimateTxSize {
required uint32 outputs_count = 1; // Count of outputs of the transaction
required uint32 inputs_count = 2; // Count of inputs of the transaction
optional bytes coin_name = 3 [default='Bitcoin'];
}
// Result of EstimateTxSize
message TxSize {
optional uint32 tx_size = 1; // Size of transaction in bytes
}
// Request the device to sign the transaction // Request the device to sign the transaction
// //
// Response: TxRequest, PinMatrixRequest, Failure // Response: TxRequest, PinMatrixRequest, Failure
message SignTx { message SignTx {
required uint32 outputs_count = 3; // Count of outputs of the transaction required uint32 outputs_count = 1; // Count of outputs of the transaction
required uint32 inputs_count = 5; // Count of inputs of the transaction required uint32 inputs_count = 2; // Count of inputs of the transaction
optional bytes coin_name = 3 [default='Bitcoin'];
} }
// Request a simplified workflow of signing. // Request a simplified workflow of signing.
@ -272,8 +295,10 @@ message SignTx {
// //
// Response: Success, PinMatrixRequest, Failure // Response: Success, PinMatrixRequest, Failure
message SimpleSignTx { message SimpleSignTx {
repeated TxInput inputs = 1; repeated TxInputType inputs = 1;
repeated TxOutput outputs = 2; repeated TxOutputType outputs = 2;
repeated TransactionType transactions = 3;
optional bytes coin_name = 4 [default='Bitcoin'];
} }
// Sent by the device as a response for SignTx. Device asks for information for signing transaction. // Sent by the device as a response for SignTx. Device asks for information for signing transaction.

View File

@ -28,6 +28,7 @@ enum FailureType {
Failure_PinCancelled = 6; Failure_PinCancelled = 6;
Failure_PinInvalid = 7; Failure_PinInvalid = 7;
Failure_InvalidSignature = 8; Failure_InvalidSignature = 8;
Failure_Other = 9;
Failure_FirmwareError = 99; Failure_FirmwareError = 99;
} }
@ -61,6 +62,8 @@ message CoinType {
optional bytes coin_shortcut = 2; optional bytes coin_shortcut = 2;
optional uint32 address_type = 3; optional uint32 address_type = 3;
optional uint64 maxfee_kb = 4; optional uint64 maxfee_kb = 4;
optional uint32 ser_private = 5; // bip32 serialization for privkey
optional uint32 ser_public = 6; // bip32 serialization for pubkey
} }
message TxInputType { message TxInputType {
@ -75,7 +78,7 @@ message TxInputType {
message TxOutputType { message TxOutputType {
// required uint32 index = 1; // Position of output in proposed transaction // required uint32 index = 1; // Position of output in proposed transaction
required bytes address = 1; // Target bitcoin address in base58 encoding optional bytes address = 1; // Target bitcoin address in base58 encoding
repeated uint32 address_n = 2; // Has higher priority than "address". repeated uint32 address_n = 2; // Has higher priority than "address".
required uint64 amount = 3; // Amount to send in satoshis required uint64 amount = 3; // Amount to send in satoshis
required ScriptType script_type = 4; // Select output script type required ScriptType script_type = 4; // Select output script type