Leader-targeted Solana transaction sender.
cargo build --releaseBinary lands at ./target/release/harmonic-tx-sender.
The sender rotates through a directory of payer keypairs. Each keypair pays its own base fees and priority fees.
Generate:
mkdir keypairs
for i in $(seq 1 $NUM_KEYPAIRS); do
solana-keygen new -s --no-bip39-passphrase -o "keypairs/k${i}.json"
doneFund — either by airdrop on testnet:
for f in keypairs/*.json; do
solana airdrop -k "$f" 1 -u testnet
doneor by transferring from an already-funded keypair:
FUNDER=/path/to/funder.json
for f in keypairs/*.json; do
solana transfer "$(solana-keygen pubkey "$f")" 1 \
-u testnet --from "$FUNDER" --fee-payer "$FUNDER" --allow-unfunded-recipient
doneEach tx pays a 5000-lamport base fee plus a per-CU priority fee that runs from a few thousand up to ~15K lamports depending on the recipe.
Edit or copy config/example.toml. At minimum, set:
rpc_url— any Solana RPC for blockhash + leader-schedule querieskeypairs— path to the directory you just populatedidentity— base58 pubkey of the validator you want to targettarget_tps— sustained tx rate
and exactly one of the following delivery paths:
tpu_addr— direct QUIC to a specific validator TPU socketblock_engine_url— Harmonic bundlesjito_url— Jito bundles via Jito's public block engine
Using block_engine_url requires that the keypair authenticating with the block
engine is whitelisted. By default that's the first keypair in your keypairs/
directory; override with harmonic_bundle_keypair to point at a dedicated
searcher key.
Get the pubkey:
solana-keygen pubkey keypairs/k1.jsonThen contact the Harmonic team with that pubkey to be whitelisted. Without
whitelisting, auth fails immediately with Pubkey not whitelisted for role.
./target/release/harmonic-tx-sender <config.toml>The process runs until killed with Ctrl-C.