Mobile Wallet Solana Integration
This document provides details on integrating Solana with the mobile wallet application. The integration supports various functionalities such as retrieving account information, signing messages, and sending transactions.
Installation & Setup
Install dependencies
The document uses the appkit of Reown to deploy. Please refer to the documentation at here.
bash
npm install @reown/appkit @reown/appkit-adapter-solana
Initialize the appkit
javascript
import { createAppKit } from '@reown/appkit'
import { SolanaAdapter } from '@reown/appkit-adapter-solana'
import { solana, solanaTestnet } from '@reown/appkit/networks'
// Create adapter
const solanaAdapter = new SolanaAdapter()
// Instantiate AppKit
const modal = createAppKit({
adapters: [solanaAdapter],
networks: [solana, solanaTestnet],
projectId,
themeMode: 'light',
features: {
analytics: true
},
metadata: {
name: 'AppKit HTML Example',
description: 'AppKit HTML Example',
url: 'https://reown.com/appkit',
icons: []
}
})
// Subscribe to state changes
modal.subscribeProviders(state => {
provider = state['solana']
})
Methods
solana_getAccounts
This method returns an array of public keys available to sign from the wallet.
Example
javascript
const result = await provider.request({
method: 'solana_getAccounts',
params: {}
});
Returns
Array
: Array of accounts:pubkey
: Public key for keypair.
solana_signMessage
This method returns a signature for the provided message from the requested signer address.
Example
javascript
const result = await provider.request({
method: 'solana_signMessage',
params: {
message: 'base58_encoded_message',
pubkey: 'your_public_key'
}
});
Parameters
message
: The message to be signed (base58 encoded).pubkey
: Public key of the signer.
Returns
signature
: Corresponding signature for signed message.
solana_signTransaction
This method returns a signature over the provided instructions by the targeted public key.
Example
javascript
const result = await provider.request({
method: 'solana_signTransaction',
params: {
transaction: 'base64_encoded_transaction'
}
});
Parameters
transaction
: Base64-encoded serialized transaction.
Returns
signature
: Corresponding signature for signed instructions.transaction
: Optional: base64-encoded serialized transaction.
solana_signAndSendTransaction
This method is responsible for signing and sending a transaction to the Solana network.
Example
javascript
const result = await provider.request({
method: 'solana_signAndSendTransaction',
params: {
transaction: 'base64_encoded_transaction',
sendOptions: {
skipPreflight: true,
preflightCommitment: 'finalized'
}
}
});
Parameters
transaction
: The whole transaction serialized and encoded with base64.sendOptions
: Options for sending the transaction:skipPreflight
: Skip preflight checks.preflightCommitment
: Preflight commitment level.
Returns
signature
: The signature of the transaction encoded with base58 used as transaction id.
For more details, refer to the Solana RPC Reference.