solana_web3_latest 0.1.4
solana_web3_latest: ^0.1.4 copied to clipboard
Solana web3 dart library based of the mergio-labs solana-web3 package but with latest depedency fixes.
THIS PACKAGE IS JUST A FORK WITH ALL DEPENDENCY ISSUES FIXED FROM THE PARENT REPO. Big credits go to quetool for dep fixes and merigolabs.com for the original package.
Dart implementation of Solana's JSON RPC API. #
Android and iOS support.
Screenshot of solana_wallet_provider
Implements the following programs: #
- System Program
- Token Program
- Associated Token Program
- Stake Program
- Stake Pool Program
- Metaplex Token Metadata
- Memo Program
- Compute Budget Program
- ED25519 Program
- Address Lookup Table
Features include: #
- Signing Transactions.
- Sending Transactions.
- Signing Messages.
- Websocket Notification Subscriptions (e.g. Account changes).
- Keypair Generation.
- Borsh Serialization.
Example: Transfer SOL #
/// Imports
import 'package:solana_web3/solana_web3.dart' as web3;
import 'package:solana_web3/programs/system.dart';
/// Transfer tokens from one wallet to another.
void main(final List<String> _arguments) async {
// Create a connection to the devnet cluster.
final cluster = web3.Cluster.devnet;
final connection = web3.Connection(cluster);
print('Creating accounts...\n');
// Create a new wallet to transfer tokens from.
final wallet1 = web3.Keypair.generateSync();
final address1 = wallet1.pubkey;
// Create a new wallet to transfer tokens to.
final wallet2 = web3.Keypair.generateSync();
final address2 = wallet2.pubkey;
// Fund the sending wallet.
await connection.requestAndConfirmAirdrop(
wallet1.pubkey,
solToLamports(2).toInt(),
);
// Check the account balances before making the transfer.
final balance = await connection.getBalance(wallet1.pubkey);
print('Account $address1 has an initial balance of $balance lamports.');
print('Account $address2 has an initial balance of 0 lamports.\n');
// Fetch the latest blockhash.
final BlockhashWithExpiryBlockHeight blockhash = await connection.getLatestBlockhash();
// Create a System Program instruction to transfer 0.5 SOL from [address1] to [address2].
final transaction = web3.Transaction.v0(
payer: wallet1.pubkey,
recentBlockhash: blockhash.blockhash,
instructions: [
SystemProgram.transfer(
fromPubkey: address1,
toPubkey: address2,
lamports: web3.solToLamports(0.5),
),
]
);
// Sign the transaction.
transaction.sign([wallet1]);
// Send the transaction to the cluster and wait for it to be confirmed.
print('Send and confirm transaction...\n');
await connection.sendAndConfirmTransaction(
transaction,
);
// Check the updated account balances.
final wallet1balance = await connection.getBalance(wallet1.pubkey);
final wallet2balance = await connection.getBalance(wallet2.pubkey);
print('Account $address1 has an updated balance of $wallet1balance lamports.');
print('Account $address2 has an updated balance of $wallet2balance lamports.');
}
Bugs #
Report a bug by opening an issue.
Feature Requests #
Request a feature by raising a ticket.