TokenBundleBUNDLE
Launch LabLaunch GuideToolsPricingDocsBlogAbout
Getting started
IntroductionQuickstartThe workspaceCore concepts
Solana logoSolana
Solana overviewWalletspump.funPumpFun BundleTerminal
Robinhood Chain logoRobinhood Chain
Robinhood Chain overviewWallets & dispersePonsPons LaunchDeploy TokenCustom BundleManageTerminal
Ethereum logoEthereum
Ethereum overviewWallets & disperseDeploy TokenCustom BundleManageTerminal
BNB Chain logoBNB Chain
BNB Chain overviewFour.memeFour.meme LaunchWallets & disperseDeploy TokenCustom BundleManageTerminal
Base logoBase
Base overviewWallets & disperseDeploy TokenCustom BundleManageTerminal
Platform
FeesSecurity & custodyLaunch LabFree toolsNetworks roadmapTroubleshooting
TokenBundleBUNDLE

Multichain infrastructure for coordinated token launches.

Built for chain-native execution.
PRODUCTSolanaRobinhoodEthereumBNB ChainBasePricing
RESOURCESToolsDocsBlog
COMPANYAboutContactLog in
LEGALPrivacyTerms
© 2026 TokenBundleNon-custodial infrastructure · Use at your own risk
Docs/ Base

Custom Bundle

Open trading and buy from up to 100 wallets on Base, in Burst or Atomic mode.

Custom Bundle launches a token you own that isn't trading yet. In one run it whitelists your bundle wallets, calls your contract's open-trading function, and buys from every bundle wallet right after. Base has no bundle market, so Execute offers two modes (see Launch modes on Base below). Burst, the default, sends the whitelist, the open and each wallet's buy as separate transactions in one ordered batch, so buys look organic. Atomic puts all of it into ONE EIP-7702 transaction, so nothing can land in between.

What you need
  • A deployed ERC-20 that isn't trading yet, with an owner-only function that opens trading. Tokens from Deploy Token qualify.
  • The initial liquidity (ETH and tokens) already sent to the contract.
  • The Deployer (owner) private key, and a Master wallet with enough ETH for every buy, gas and the service fee.

The wizard has six steps: Token → Keys → Recipients → Distribute → Review → Execute. You can open any step at any time, and each button checks you have what it needs. The URL keeps ?bundle=<id>, so if you leave, a banner offers to Continue → your unfinished bundle. You can also reopen it from Manage.

#Step 1 — Token

tokenbundle.app/base/launch
TokenBundleBUNDLE
Base logo
ACTIVE NETWORKBase
WORKSPACE
OverviewDeploy TokenCustom BundleManageTerminalWallets
EXECUTION ENGINEOperational
T
ACCOUNTyou@tokenbundle.app
Custom Bundle

Bundle into a token you deployed yourself, elsewhere. Opens trading on your contract and buys with every bundle wallet right after. Uses plain, importable wallets throughout — not smart accounts.

1Token→
2Keys→
3Recipients→
4Distribute→
5Review→
6Execute

Every step is browsable at any time — the buttons below still check you have what each action actually needs.

STEP 1 OF 6

Fetch Token Data

Enter the token contract address and max-tx %, then pick the function that opens trading.

openTrading() external onlyOwner()

✎ Custom function name...

Find in My Contract

Found: configureLaunch() — double-check it looks right.

NameRobin Cat ($RCAT)
Owner0x71C7...976F
ETH on contract1.0000
Tokens on contract80,000,000
Uniswap pairnot open yet
ExplorerView on BaseScan →

ETH is paid from your distributor wallet, while tokens are sent from one of the wallets you generate. Service wallets buy in the same bundle, after your own wallets.

Enter the contract, pick the open-trading function, detect the whitelist function and choose a fee tier.
  • Token contract address: a live preview shows name, owner, the ETH and tokens on the contract, and the pair status.
  • Max Tx % (default 1): the share of supply each bundle wallet aims to buy. It also sets how much ETH Master needs.
  • Randomize buy amounts (0–50 %, default 15): each wallet buys a random amount between (100 − x)% and 100% of its Max Tx target, so the launch doesn't show N identical buys that bundle scanners flag instantly. 0 makes every wallet buy exactly the target. Wallets are still funded for the full target, so nothing comes up short.
  • Contract trading function: the default is enableTrading(). Other presets are openTrading(), openTrade(), OpenTrade(), launch(), startTrading(), StartTrading(), startTrade() and activate(). Choose ✎ Custom function name... for anything else. It must take no arguments.
  • Pre-launch whitelist function (optional): use this if your contract blocks non-whitelisted buyers at launch. Find in My Contract searches the bytecode for common names with the (address[],bool) signature, such as configureLaunch and whitelistBundle.
  • Service fee tier: see Fees.
If the token already has a live pair, Fetch Token Data is blocked. The open-trading call would revert, and there is no first-mover advantage left.

#Step 2 — Keys

Paste the Deployer (Owner) key and click Check Ownership. You get ✓ Ownership confirmed, or a warning if the key doesn't match the owner the contract reports. Paste the Master key and click Use this wallet. Keys can have the 0x prefix or not.

Keys are never stored
Only the two addresses are saved. The keys stay in this browser tab and are sent only with Fund (Master) and Execute (Deployer + Master). If you reload, paste them again.

#Step 3 — Recipients

tokenbundle.app/base/launch
TokenBundleBUNDLE
Base logo
ACTIVE NETWORKBase
WORKSPACE
OverviewDeploy TokenCustom BundleManageTerminalWallets
EXECUTION ENGINEOperational
T
ACCOUNTyou@tokenbundle.app
Custom Bundle

Bundle into a token you deployed yourself, elsewhere. Opens trading on your contract and buys with every bundle wallet right after. Uses plain, importable wallets throughout — not smart accounts.

1Token→
2Keys→
3Recipients→
4Distribute→
5Review→
6Execute

Every step is browsable at any time — the buttons below still check you have what each action actually needs.

STEP 3 OF 6

Recipients

How many bundle wallets, and the initial liquidity you'll seed the pair with. We generate and securely store these wallets ourselves.

1–100 wallets. This ETH + token % is what you'll need to have already deposited into the contract before Execute.

✓ 35 wallets + 2 service (replaced 0 old ones) ready. See the table below.

Sequential per-wallet cost (each wallet buys against a slightly moved pool) = 0.4912 ETH total needed

Master currently holds 2.1000 ETH — enough to fund this bundle.

Bundle wallets

#AddressKeyBalance
10x71C7656EC7ab88b098defB751B7401B5f6d8976F Show key0.0000
20x2546BcD3c84621e976D8185a91A922aE77ECEc30 Show key0.0000
30xbDA5747bFD65F08deb54cb465eB87D40e51B197E Show key0.0000

Service wallets

Included by your fee tier - ours, not yours. No private key access.

Generate the bundle wallets and check the progressive cost against Master's balance.
  • Generate new wallets or Import my wallets. Generate creates fresh wallets on the server. Import takes your own private keys, one per line (with or without 0x, up to 100); they are encrypted and stored like generated wallets and buy in the order pasted. Imported wallets that already hold ETH count toward funding, so you can use Skip (already funded) on step 4.
  • Number of wallets: 1–100 (default 35). With Import, it is the number of keys pasted.
  • Initial liquidity ETH (default 1) and Token % (default 80): what you will have seeded into the contract. Used to price the buys.
  • Generate N Wallets creates the bundle wallets on the server and adds your tier's service wallets at the end. Regenerating replaces them, and is refused while any old generated wallet still holds ETH (imported wallets are yours and keep their keys, so they don't block it).
  • The cost box prices each wallet in order against the pool (progressive cost) and compares the total with Master's balance.
  • Show key reveals a bundle wallet's key after you confirm once. Service wallet keys are never shown.

#Step 4 — Distribute

Fund wallets sends one Multicall3 transaction from Master that gives every wallet its exact amount plus 0.0005 ETH per wallet (its own buy gas, Base's L1 data fee and a later sell) for gas. The bundle becomes funded, which Execute requires.

Funded the wallets some other way? Skip (already funded) checks every wallet's real balance against what Fund would have sent. If they all have enough, the bundle is marked funded. If not, you see how many wallets are short.

#Step 5 — Review

tokenbundle.app/base/launch
TokenBundleBUNDLE
Base logo
ACTIVE NETWORKBase
WORKSPACE
OverviewDeploy TokenCustom BundleManageTerminalWallets
EXECUTION ENGINEOperational
T
ACCOUNTyou@tokenbundle.app
Custom Bundle

Bundle into a token you deployed yourself, elsewhere. Opens trading on your contract and buys with every bundle wallet right after. Uses plain, importable wallets throughout — not smart accounts.

1Token→
2Keys→
3Recipients→
4Distribute→
5Review→
6Execute

Every step is browsable at any time — the buttons below still check you have what each action actually needs.

STEP 5 OF 6

↻ Refresh estimate

Review

Confirm token, bundle setup, and projected costs before executing.

GAS 0.005 gweiETH/USD $3,412ROUTER UNISWAP V2
TokenRobin Cat ($RCAT)
Trading functionopenTrading()
Deployer0x71C7...976F
Master0x2546...EC30
Bundle wallets35 + 2 service
FundedYes
✓ Whitelist bundle wallets (configureLaunch)✓ Open trading (openTrading)• Sample buy (0.001 ETH) (expected — trading not open yet)
Review the summary and run the dry-run simulation.

Check the token, trading function, Deployer, Master, wallet count and funding status. 🧪 Simulate Bundle dry-runs three calls without gas or keys: the whitelist call, the open-trading call, and a 0.001 ETH sample buy. The sample buy usually shows expected — trading not open yet, because it runs against the current state.

#Launch modes on Base

Base has no public mempool and no bundles (no eth_sendBundle). On step 6 you pick how the launch goes out:

Burst (default)Atomic · Max protection
HowWhitelist, open trading and one buy per wallet as separate transactions, sent as one ordered batch straight to the Base sequencerAll of it in ONE transaction (EIP-7702)
On BaseScanEach buy is its own transaction from its own wallet: looks organicAll wallets appear inside one transaction: visibly linked
GasEach wallet pays its own buyThe Deployer pays for everything
Wallets1–100Up to 75 (one transaction can use at most 16.7M gas)
Your token from Deploy Token~100%: the anti-snipe whitelist keeps everyone else out100%
Any other token (no whitelist)~99%: a sniper can occasionally slip in between100%

Why Burst is safe with your own token

A Clog or Standard Tax token from Deploy Token has an anti-snipe window (15 blocks, about 30 seconds, by default). During it only whitelisted wallets can buy. Execute whitelists every bundle wallet before it opens trading, so any other buy in that window simply fails, even if it lands between your transactions. Our tests on a Base fork check exactly that: a non-whitelisted buy right after the open is refused.

Burst with someone else's token

Nobody sees your open-trading transaction before it is in a 200 ms Flashblock, and the sequencer orders a Flashblock by priority fee, then arrival. Burst gives every transaction the same fee and sends them together, so your buys usually land right behind the open, in the same block. The remaining risk is a buy that misses that Flashblock and competes in the next one, where snipers who saw the open can be too. If you need a guarantee there, use Atomic.

How Atomic buys from many wallets in one transaction

For the launch, the Deployer and each bundle wallet temporarily point their account at TokenBundle's small LaunchDelegate contract (EIP-7702). The Deployer's one transaction then makes the token calls, and each wallet's buy runs as that wallet, with its own ETH. LaunchDelegate only runs a buy the wallet's own key signed, once, before a deadline; it has no owner and can't move funds on its own. Right after the launch every delegation is revoked.

#Step 6 — Execute

tokenbundle.app/base/launch
TokenBundleBUNDLE
Base logo
ACTIVE NETWORKBase
WORKSPACE
OverviewDeploy TokenCustom BundleManageTerminalWallets
EXECUTION ENGINEOperational
T
ACCOUNTyou@tokenbundle.app
Custom Bundle

Bundle into a token you deployed yourself, elsewhere. Opens trading on your contract and buys with every bundle wallet right after. Uses plain, importable wallets throughout — not smart accounts.

1Token→
2Keys→
3Recipients→
4Distribute→
5Review→
6Execute

Every step is browsable at any time — the buttons below still check you have what each action actually needs.

STEP 6 OF 6

Execute Bundle

Opens trading, then fires every buy wallet right after.

› Paying 0.1 ETH service fee to treasury from Master wallet...
› Fee paid. Tx: 0x8d1f…c2a9
› Pre-fetching everything needed to build the bundle...
› Whitelisting 37 wallet(s) via configureLaunch()...
› Planning 37 buy(s) with exact sequential pricing...
› Burst mode: signing 2 token call(s) and 37 separate buy(s)...
› Simulating all 39 transaction(s) in order...
› Simulation passed. Sending everything as one ordered batch to the Base sequencer...
› Trading opened in block 52025881. 37/37 buy(s) landed in that same block.
› 37/37 buy(s) succeeded.
The live execution log.

Above Simulate Bundle a balance check shows whether the Deployer can pay gas for the launch transactions and the Master can pay the service fee, with Refresh balances. Execute stays disabled while the Deployer is short. A Master warning can be ignored if a previous attempt already paid the fee: it is charged only once.

  1. Service fee
    Master pays the tier fee to the TokenBundle treasury in a separate transaction first. It needs the fee + 0.0002 ETH. The fee is charged once: if you retry, it is not charged again.
  2. Sign everything in advance
    Whitelist call (every bundle wallet, including service wallets), open-trading call, and one Uniswap V2 buy per wallet. Each wallet buys exactly its Max Tx % of supply, priced in order against the pool as it will be after open (the token's own launch tax, such as Clog, included), with 3% tolerance. The rest of its ETH stays for a later sell.
  3. Simulate before sending
    Every signed transaction (Burst) or the single launch transaction (Atomic) is dry-run in order on a Base RPC. If anything would fail, nothing is sent.
  4. Send to the Base sequencer
    Burst: one ordered batch straight to the Base sequencer, same priority fee on every transaction. Atomic: the one transaction goes to the sequencer, then every wallet's temporary delegation is revoked.
  5. Done
    You get X/N buy(s) succeeded, a hash or error per wallet, and Open Terminal →. The launch appears in Overview with its PNL.
Not included? Nothing was spent
If open trading doesn't go through, Execute stops and reports it; in Atomic mode a failed launch rolls back the open and every buy together - nothing was spent, every wallet's nonce is still free, safe to try Execute again.

Bundle lifecycle

draft → wallets_generated → funded → executed. An executed bundle can't be reopened. You can delete a bundle from Manage only once every bundle wallet is empty.

Bundle wallets appear in the Terminal's wallet table, labelled with the bundle's token symbol, so you can sell from them there. To move tokens or ETH out of them otherwise, use Show key on step 3 and import the key into a wallet such as MetaMask.
PREVIOUSDeploy TokenNEXT Manage