Example • Running tests • Credits
Transform a list of instructions into as many Transactions as necessary with fine tuned Compute Units and Priority Fee setup.
Handle sending or confirming the transactions
Yarn:
yarn add solana-tx-packer
Npm:
npm i solana-tx-packer
Let's create a list of 43 basic SOL transfers from wallet A to wallets on devnet:
import { buildOptimalTransactions } from "solana-tx-packer";
const instructions: TransactionInstruction[] = Array(43).fill(0).map(() => {
const targetWallet = Keypair.generate().publicKey;
return SystemProgram.transfer({
fromPubkey: signerKey,
toPubkey: targetWallet,
lamports: LAMPORTS_PER_SOL / 1_000,
});
});
const { transactions } = await buildOptimalTransactions(connection, instructions, signerKey, []);
transactions
will contain a list of each 3 transactions (in this example) with their CU budgets and priority fees instructions already included as instructions.
All you need to do is send them sequentially or in parallel depending on what you are doing
Happy RPC spamming 🤝
Internally, the function got this data for each of the 3 transactions (it's an example):
Priority fees: 100 / CUs: 3240
Priority fees: 100 / CUs: 3240
Priority fees: 100 / CUs: 1458
The lib calculates a priority fee (here 100 is the default minimum) alongside the right CU budget.
The CU budget gets a 8% error margin boost, just to be sure.
- Duplicate the
.env-template
- Change TEST_WALLET="wallet in uint8Array format" to the array representation of your private key (make sure to create a test wallet just for this)
- Go to
https://faucet.solana.com/
to load some SOL on this test wallet - Install deps
yarn
- Run tests
yarn test
- Enjoy!
This software uses some code from the following open source packages:
MIT