syntax = "proto2"; package hw.trezor.messages.solana; /** * Request: Ask device for public key corresponding to address_n path * @start * @next SolanaPublicKey * @next Failure */ message SolanaGetPublicKey { 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 public key derived from device private seed * @end */ message SolanaPublicKey { required bytes public_key = 1; } /** * Request: Ask device for Solana address * @start * @next SolanaAddress * @next Failure */ message SolanaGetAddress { 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 optional bool chunkify = 3; // display the address in chunks of 4 characters } /** * Response: Contains a Solana address derived from device private seed * @end */ message SolanaAddress { required string address = 1; // Solana address as Base58 encoded string } /** * @embed */ message SolanaTxTokenAccountInfo { required string base_address = 1; required string token_program = 2; required string token_mint = 3; required string token_account = 4; } /** * @embed */ message SolanaTxAdditionalInfo { repeated SolanaTxTokenAccountInfo token_accounts_infos = 1; } /** * Request: Ask device to sign a Solana transaction * @start * @next SolanaTxSignature * @next Failure */ message SolanaSignTx { repeated uint32 address_n = 1; // BIP-32 path to derive the key to sign with required bytes serialized_tx = 2; // serialized tx to be signed optional SolanaTxAdditionalInfo additional_info = 3; } /** * Response: Contains the transaction signature * @end */ message SolanaTxSignature { required bytes signature = 1; // tx signature }