2013-11-26 14:48:17 +00:00
|
|
|
/*
|
|
|
|
Types for TREZOR communication
|
|
|
|
|
|
|
|
Author: Marek Palatinus <slush@satoshilabs.com>
|
|
|
|
|
|
|
|
Version: 0.6
|
|
|
|
*/
|
|
|
|
|
|
|
|
import "google/protobuf/descriptor.proto";
|
|
|
|
|
|
|
|
extend google.protobuf.FieldOptions {
|
|
|
|
optional bool binary = 50001; // message field has binary payload
|
|
|
|
}
|
|
|
|
|
|
|
|
extend google.protobuf.EnumValueOptions {
|
|
|
|
optional bool wire_in = 50002; // message can be transmitted via wire from PC to TREZOR
|
|
|
|
optional bool wire_out = 50003; // message can be transmitted via wire from TREZOR to PC
|
|
|
|
optional bool wire_debug_in = 50004; // message can be transmitted via debug wire from PC to TREZOR
|
|
|
|
optional bool wire_debug_out = 50005; // message can be transmitted via debug wire from TREZOR to PC
|
|
|
|
}
|
|
|
|
|
|
|
|
enum FailureType {
|
|
|
|
Failure_UnexpectedMessage = 1;
|
|
|
|
Failure_ButtonExpected = 2;
|
|
|
|
Failure_SyntaxError = 3;
|
|
|
|
Failure_ActionCancelled = 4;
|
|
|
|
Failure_PinExpected = 5;
|
|
|
|
Failure_PinCancelled = 6;
|
|
|
|
Failure_PinInvalid = 7;
|
|
|
|
Failure_InvalidSignature = 8;
|
2014-01-18 04:13:47 +00:00
|
|
|
Failure_Other = 9;
|
2013-11-26 14:48:17 +00:00
|
|
|
Failure_FirmwareError = 99;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Specifies which script will be used for given transaction output.
|
|
|
|
enum ScriptType {
|
|
|
|
PAYTOADDRESS = 0;
|
|
|
|
PAYTOSCRIPTHASH = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Specifies which kind of information is required by transaction signing process
|
|
|
|
enum RequestType {
|
|
|
|
TXINPUT = 0;
|
|
|
|
TXOUTPUT = 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Structure of BIP32 (hierarchical deterministic) node
|
|
|
|
// Used for imports of private key into the device and exporting public key out of device
|
|
|
|
message HDNodeType {
|
|
|
|
required uint32 version = 1;
|
|
|
|
required uint32 depth = 2;
|
|
|
|
required uint32 fingerprint = 3;
|
|
|
|
required uint32 child_num = 4;
|
|
|
|
required bytes chain_code = 5 [(binary) = true];
|
|
|
|
optional bytes private_key = 6 [(binary) = true];
|
|
|
|
optional bytes public_key = 7 [(binary) = true];
|
|
|
|
optional bytes address = 8;
|
|
|
|
}
|
|
|
|
|
|
|
|
message CoinType {
|
|
|
|
optional bytes coin_name = 1;
|
|
|
|
optional bytes coin_shortcut = 2;
|
|
|
|
optional uint32 address_type = 3;
|
|
|
|
optional uint64 maxfee_kb = 4;
|
2014-01-18 04:13:47 +00:00
|
|
|
optional uint32 ser_private = 5; // bip32 serialization for privkey
|
|
|
|
optional uint32 ser_public = 6; // bip32 serialization for pubkey
|
2013-11-26 14:48:17 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
message TxInputType {
|
|
|
|
repeated uint32 address_n = 1; // Parameter for address generation algorithm to derive the address from the master node
|
|
|
|
required bytes prev_hash = 2 [(binary) = true]; // Hash of previous transaction output to spend by this input
|
|
|
|
required uint32 prev_index = 3; // Index of previous output to spend
|
|
|
|
optional bytes script_sig = 4 [(binary) = true]; // Script signature
|
|
|
|
optional uint32 sequence = 5 [default=0xffffffff];
|
|
|
|
}
|
|
|
|
|
|
|
|
message TxOutputType {
|
2014-01-18 04:13:47 +00:00
|
|
|
optional bytes address = 1; // Target bitcoin address in base58 encoding
|
2013-11-26 14:48:17 +00:00
|
|
|
repeated uint32 address_n = 2; // Has higher priority than "address".
|
|
|
|
required uint64 amount = 3; // Amount to send in satoshis
|
|
|
|
required ScriptType script_type = 4; // Select output script type
|
|
|
|
repeated bytes script_args = 5 [(binary) = true]; // Provide additional parameters for the script (its script-depended)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Transaction output with script pubkey in binary form.
|
|
|
|
// This is used for obtaining hashes of existing transactions
|
|
|
|
// and for compiling TxOutput for signing.
|
|
|
|
message TxOutputBinType {
|
|
|
|
required uint64 amount = 1;
|
|
|
|
required bytes script_pubkey = 2 [(binary) = true];
|
|
|
|
}
|
|
|
|
|
|
|
|
message TransactionType {
|
|
|
|
optional uint32 version = 1 [default=1];
|
|
|
|
repeated TxInputType inputs = 2;
|
|
|
|
repeated TxOutputBinType outputs = 3;
|
|
|
|
optional uint32 lock_time = 4 [default=0];
|
|
|
|
}
|