1 unstable release
new 0.1.16 | Dec 13, 2024 |
---|
#48 in #ssr
1MB
24K
SLoC
memory_wallet
A memory based wallet standard implementation primarily used for testing.
Installation
To install you can used the following command:
cargo add memory_wallet
Or directly add the following to your Cargo.toml
:
[dependencies]
memory_wallet = "0.1" # replace with the latest version
Features
ssr
Enables thessr
feature for thewallet_standard
crate.js
Enables thejs
feature to unlock wasm support for thewallet_standard
crate.
Usage
The memory wallet is a simple wallet that stores all accounts in memory and conforms to the WalletStandard
trait.
use anyhow::Result;
use memory_wallet::prelude::*;
use memory_wallet::MemoryWallet;
use solana_sdk::native_token::sol_to_lamports;
use solana_sdk::pubkey::Pubkey;
use solana_sdk::signature::Keypair;
use solana_sdk::signature::Signature;
use solana_sdk::system_instruction;
use solana_sdk::transaction::VersionedTransaction;
use wallet_standard::SolanaSignTransactionProps;
use wasm_client_solana::SolanaRpcClient;
use wasm_client_solana::DEVNET;
async fn run() -> Result<()> {
let keypair = Keypair::new();
let pubkey = keypair.pubkey();
let target_pubkey = Pubkey::new_unique();
let instruction = system_instruction::transfer(&pubkey, &target_pubkey, sol_to_lamports(0.5));
let rpc = SolanaRpcClient::new(DEVNET);
let blockhash = rpc.get_latest_blockhash().await?;
let transaction =
VersionedTransaction::new_unsigned_v0(&pubkey, &[instruction], &[], blockhash)?;
let mut memory_wallet = MemoryWallet::new(rpc, &[keypair]);
// connect the first account in the memory wallet accounts list
memory_wallet.connect().await?;
let props = SolanaSignTransactionProps::builder()
.transaction(transaction)
.build();
let signed_transaction: VersionedTransaction = memory_wallet.sign_transaction(props).await?;
Ok(())
}
Dependencies
~30–45MB
~681K SLoC