Solana methods handle addresses, transactions, and public keys for the Solana blockchain.
solanaGetAddress
Retrieves a Solana address from the device.
path
string | number[]
required
BIP32 derivation path (e.g., m/44'/501'/0'/0').
Expected address for verification.
Display address on device screen.
Split large requests into chunks.
Solana address (base58 encoded).
Derivation path as integer array.
Derivation path as string.
const result = await TrezorConnect.solanaGetAddress({
path: "m/44'/501'/0'/0'",
showOnTrezor: true,
});
if (result.success) {
console.log('Solana address:', result.payload.address);
}
solanaGetPublicKey
Retrieves a Solana public key from the device.
path
string | number[]
required
BIP32 derivation path.
Display public key on device screen.
const result = await TrezorConnect.solanaGetPublicKey({
path: "m/44'/501'/0'/0'",
});
if (result.success) {
console.log('Public key:', result.payload.publicKeyBase58);
}
solanaSignTransaction
Signs a Solana transaction. The transaction must be serialized and provided as a hex string.
path
string | number[]
required
BIP32 derivation path for signing key.
Serialized transaction (hex string).
Additional transaction information for better device display.
Token account information.
Whether transaction is for devnet.
Return serialized transaction.
Split large transactions into chunks.
Transaction signature (hex).
Serialized signed transaction (if serialize=true).
import { Transaction } from '@solana/web3.js';
// Create and serialize transaction
const transaction = new Transaction();
// ... add instructions
const serialized = transaction.serializeMessage().toString('hex');
const result = await TrezorConnect.solanaSignTransaction({
path: "m/44'/501'/0'/0'",
serializedTx: serialized,
additionalInfo: {
tokenAccountsInfos: [
{
baseAddress: 'base...',
tokenProgram: 'Token...',
tokenMint: 'mint...',
tokenAccount: 'acc...',
symbol: 'USDC',
},
],
},
});
if (result.success) {
console.log('Signature:', result.payload.signature);
}
solanaComposeTransaction
Composes a Solana transaction, automatically handling token accounts and priority fees.
Recipient’s address (required if serializedTx not provided).
Amount to send (in lamports or token units).
Priority fee configuration.
Compute unit price in micro-lamports.
SPL token transfer information.
Token program: spl-token or spl-token-2022.
Available token accounts.
Pre-serialized transaction (alternative to toAddress).
Serialized transaction ready for signing.
Additional information about the composed transaction.
Token program name if account creation needed.
Token account information.
// SOL transfer
const result = await TrezorConnect.solanaComposeTransaction({
fromAddress: 'sender...',
toAddress: 'recipient...',
amount: '1000000000', // 1 SOL
blockHash: 'recent...',
lastValidBlockHeight: 123456789,
priorityFees: {
computeUnitPrice: '1000',
computeUnitLimit: '200000',
},
});
// SPL Token transfer
const tokenResult = await TrezorConnect.solanaComposeTransaction({
fromAddress: 'sender...',
toAddress: 'recipient...',
amount: '1000000', // 1 USDC (6 decimals)
blockHash: 'recent...',
lastValidBlockHeight: 123456789,
token: {
mint: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
program: 'spl-token',
decimals: 6,
accounts: [
{
publicKey: 'account...',
balance: '5000000',
},
],
},
});
if (result.success) {
console.log('Composed tx:', result.payload.serializedTx);
}