syntax = "proto2"; // Sugar for easier handling in Java option java_package = "com.satoshilabs.trezor.lib.protobuf"; option java_outer_classname = "TrezorMessageTron"; /** * Request: Ask device for Tron address corresponding to address_n path * @start * @next TronAddress * @next Failure */ message TronGetAddress { 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 Tron address derived from device private seed * @end */ message TronAddress { optional string address = 1; // Tron address (base58) } /** * Request: Ask device to sign Tron transaction * @start * @next TronSignedTx */ message TronSignTx { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node // Common part of transaction optional bytes ref_block_bytes = 2; // Reference block number optional bytes ref_block_hash = 3; // Reference block hash optional uint64 expiration = 4; // Transaction expiration optional string data = 5; // Extra transaction info optional TronContract contract = 6; // Contract messages optional uint64 timestamp = 7; // UTC timestamp /*** * Tron Contracts Messages * */ message TronContract { // Update account name message TronAccountUpdateContract { optional string account_name = 1; // Account name is not unique } // Transfer TRX message TronTransferContract { optional bytes to_address = 1; // To address - decoded base 58 optional uint64 amount = 2; // TRX amount in sun (10^-6) } // Transfer asset message TronTransferAssetContract { optional string asset_name = 1; // Asset name optional bytes to_address = 2; // To address - decoded base 58 optional uint64 amount = 3; // Amount to transfer } // Vote witness message TronVoteWitnessContract { message TronVote { optional bytes vote_address = 1; // Candidate Address - decoded base 58 optional uint64 vote_count = 2; // Amount of votes } repeated TronVote votes = 1; // votes } // Upgrade account to witness message TronWitnessCreateContract { optional string url = 1; // Witness URL } // Update witness URL message TronWitnessUpdateContract { optional string update_url = 2; // Witness URL } // Issue Asset message TronAssetIssueContract { message TronFrozenSupply { optional uint64 frozen_amount = 1; // Amount frozen optional uint64 frozen_days = 2; // Days from issue date } optional string name = 2; // Asset name optional string abbr = 3; // Asset abbreviation optional uint64 total_supply = 4; // Total supply including frozen repeated TronFrozenSupply frozen_supply = 5; // Frozen supply optional uint32 trx_num = 6; // Amount of TRX (exchange ratio) optional uint32 num = 7; // Amount of tokens (exchange ratio) optional uint64 start_time = 8; // Negotiation start date and time optional uint64 end_time = 9; // Negotiation end date and time optional string description = 10; // Asset description optional string url = 11; // Asset URL } // Participate in an asset message TronParticipateAssetIssueContract { optional bytes to_address = 1; // Asset issuer address - decoded base 58 optional string asset_name = 2; // The name of target asset optional uint64 amount = 3; // TRX amount in sun } // Freeze TRX balance message TronFreezeBalanceContract { optional uint64 frozen_balance = 1; // Amount to freeze optional uint64 frozen_duration = 2; // Freeze minimal duration in days } // Unfreeze TRX Balance message TronUnfreezeBalanceContract { } // Unfreeze Asset Balance message TronUnfreezeAssetContract { } // Withdraw witness balance message TronWithdrawBalanceContract { } // Update Asset message TronUpdateAssetContract { optional string description = 1; // New description optional string url = 2; // New URL } // Network proposal contract message TronProposalCreateContract { message TronProposalParameters { optional uint64 key = 1; // Parameter key optional uint64 value = 2; // Parameter value } repeated TronProposalParameters parameters = 1; // Parameter to be changed } // Approval contract message TronProposalApproveContract { optional uint64 proposal_id = 1; // Proposal ID optional bool is_add_approval = 2; // Add or remove approval } // Delete proposal message TronProposalDeleteContract { optional uint64 proposal_id = 1; // Proposal ID } optional TronTransferContract transfer_contract = 1; optional TronTransferAssetContract transfer_asset_contract = 2; optional TronVoteWitnessContract vote_witness_contract = 4; optional TronWitnessCreateContract witness_create_contract = 5; optional TronAssetIssueContract asset_issue_contract = 6; optional TronWitnessUpdateContract witness_update_contract = 8; optional TronParticipateAssetIssueContract participate_asset_issue_contract = 9; optional TronAccountUpdateContract account_update_contract = 10; optional TronFreezeBalanceContract freeze_balance_contract = 11; optional TronUnfreezeBalanceContract unfreeze_balance_contract = 12; optional TronWithdrawBalanceContract withdraw_balance_contract = 13; optional TronUnfreezeAssetContract unfreeze_asset_contract = 14; optional TronUpdateAssetContract update_asset_contract = 15; optional TronProposalCreateContract proposal_create_contract = 16; optional TronProposalApproveContract proposal_approve_contract = 17; optional TronProposalDeleteContract proposal_delete_contract = 18; } } /** * Response: Contains Tron transaction signature * @end */ message TronSignedTx { optional bytes signature = 1; // Transaction signature optional bytes serialized_tx = 2; // Serialized transaction }