Skip to content

Latest commit

 

History

History
85 lines (63 loc) · 2.6 KB

README.md

File metadata and controls

85 lines (63 loc) · 2.6 KB

Solana Transactions Packer

⚡️ Get your transactions ready for takeoff. ⚡️

ExampleRunning testsCredits

💁‍♀️ 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 npm version

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

  1. Duplicate the .env-template
  2. 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)
  3. Go to https://faucet.solana.com/ to load some SOL on this test wallet
  4. Install deps yarn
  5. Run tests yarn test
  6. Enjoy!

Credits

This software uses some code from the following open source packages:

License

MIT