solana-tx-packer
v0.1.4
Published
A Solana lib to send the most efficient transactions possible
Downloads
7
Readme
💁♀️ What this packages does
Transform a list of instructions into as many Transactions as necessary with fine tuned Compute Units and Priority Fee setup.
🙅 What this packages does not do
Handle sending or confirming the transactions
Installation
Yarn:
yarn add solana-tx-packer
Npm:
npm i solana-tx-packer
Example
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 🤝
Details
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.
Running tests
- 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!
Credits
This software uses some code from the following open source packages:
License
MIT