Skip to content

Guide

Mint faster than a person can.

Easternbot presses the buy button on an NFT sale for you, from several wallets at once, at the second the sale opens. This page is everything you need to run it. No prior experience assumed.

What this is

A bot that buys new NFTs the instant they go on sale.

When a new NFT collection launches, it usually goes on sale at a fixed time with a fixed supply. Everybody presses buy at the same second. Most of them are pressing it by hand. If the collection is any good, it sells out in seconds and the people who got in first are the only ones who got in at all.

That is the whole game, and it is a timing game. Easternbot does three things a person cannot:

  • It buys from several wallets at once, because most sales cap how many each wallet can take.
  • It prepares everything before the sale opens, so the moment arrives and there is nothing left to do but send.
  • It fires on the chain's clock, not your phone's, which are usually a second or two apart.

What you need

Fifteen minutes, a browser, and some money you are willing to risk.

You needWhyIf you do not have one
A phone or laptopThe bot runs in a normal browser. Nothing to install.Any modern browser works.
A seed phraseTwelve or twenty-four words that make a set of wallets, Ethereum and Solana alike. This is what signs the purchases.Make a fresh one in a wallet app you trust, just for minting. Easternbot does not make one.
Money on the right chainEach chain has its own money. A mint on Base needs ETH on Base, not ETH on Ethereum; a mint on Solana needs SOL.Send funds to your mint wallets before the sale.
A licence, to mint for real50 USDC a month, paid on Base. Looking and practising are free.See what it costs.

Chains it works on

Read straight from the bot's own list, so this table cannot drift from what the bot actually supports.

ChainYou pay gas inOrdering
EthereumETHHighest fee first
Robinhood ChainETHFirst come, first served
BaseETHHighest fee first
AbstractETHHighest fee first
ApeChainAPEFirst come, first served
InkETHHighest fee first
MonadMONHighest fee first
MegaETHETHHighest fee first
HyperEVMHYPEHighest fee first
SoneiumETHHighest fee first
ArcUSDCHighest fee first
SolanaSOLHighest fee first

Solana has its own screen, because its mints work differently. Pick SOL on the chain button, or just paste a Solana address; the screen switches itself. Minting on Solana covers what changes.

Your first run

Watch the whole thing happen without keys, money, or a licence.

The first time you open the bot it offers a dry run(a full rehearsal on a test network, where the money is not real). Take it. It runs the entire sequence end to end so you can see what the screen does before anything is at stake.

  1. Open the bot

    Go to easternbot.xyz. It is a web page, not an app.
  2. Press Run dry-run

    The offer appears on first open. If you skipped it, it is still there under the wallet sheet.
  3. Watch the log

    You will see the same sequence a real mint uses: checking the contract, arming, firing, and a result per wallet.

Set up wallets

One seed phrase makes a set of numbered wallets. They mint; they do not store.

A seed phrase(a list of words that is the master key to a set of wallets) is the only thing you need to recreate every wallet the bot uses. Anyone who has it has your money, so it never leaves your device andEasternbot never receives it.

  1. Open Setup

    Tap Set up mint wallets, or the settings button at the top right. Wallets, a signer of your own and a box are all set up there, once, and stay off the race screen after that.
  2. Paste a seed phrase, or keys

    Paste the phrase into Seed phrase or private keys and choose how many wallets to derive from it, typically four to eight. The same phrase makes that many Ethereum wallets and that many Solana wallets: the Solana ones are the same accounts Phantom shows for that phrase. Private keys, one per line, are taken as they are, Ethereum or Solana, and replace only that chain's wallets. Easternbot does not make a phrase for you: make a fresh one in a wallet app you trust, just for minting.
  3. Set a passphrase, then Save wallets

    This encrypts the keys on your device. It is not the seed phrase and it is not recoverable. Write it down, then press Save wallets.
  4. Turn on Face ID or fingerprint

    Optional but worth it. It unlocks the set with one scan instead of typing the passphrase before every race. The name on the button matches whatever your device actually has.
  5. Fund them from a cold wallet

    Send each mint wallet enough for the mint price plus gas, on the chain the sale is on. The bot will tell you which wallets are short before it arms.

Where keys live

Three options. Pick by how much you care about the last few hundred milliseconds.

Something has to hold the keys and sign the purchases. That thing is called the signer(whatever holds your keys and signs transactions).Easternbot never does. You choose where it runs.

On this device

Start here
Keys are encrypted in your browser and unlocked with your passphrase or your face. Nothing to install, nothing to rent. This is the right answer for almost everyone.

Your own signer

A small program you run on a computer you control, on your home network or a server. The phone becomes a remote control. Useful if you want the keys off the phone.

A box

Advanced
A rented server that holds the keys and watches the chain itself. It can fire while your phone is asleep, in a different country, or in your pocket. This is the fastest option and the most work. Its address and token go in Setup, under Box.

You can change your mind later. The wallets are the same wallets whichever one holds them, because they all come from the same seed phrase.

Run a mint

Paste an address, wait for green, choose how hard to push, press one button.

  1. Paste the contract address

    The long 0x… string for the collection. The project publishes it. The bot works out which chain it is on by itself.
  2. Wait for the check

    It reads the contract and runs a simulation(a pretend purchase, to see whether a real one would work). You are looking for Sim passed · ready. This costs nothing and touches nothing.
  3. Choose how hard to push

    Safe, Fast or Nuke decide how much you are willing to pay in gas to get in. See the table below.
  4. Choose how many, and from which wallets

    Qty is per wallet. Check the sale's own limit first: asking for more than it allows usually makes the whole purchase fail.
  5. Arm, or Fire

    If the sale is already open, Fire sends now. If it opens later, Arm · wait for open prepares everything and waits.

The three gas settings

On most chains, paying a higher fee gets you processed sooner. Before the sale opens the bot signs the same purchase at several prices, from a starting bid up to a top bid. The setting decides where the starting bid comes from and which price is sent first.

SettingStarting bidSent firstUse it when
SafeHigher than 50% of recent bidsThe starting bidQuiet mint, no rush, you would rather not overpay.
FastHigher than 80% of recent bidsOne step up, about 1.6× the starting bidThe normal choice. Competitive, not reckless.
NukeHigher than 95% of recent bidsThe top bid: your gas budget, or 12× the starting bid without oneYou want this one and you accept it may cost a lot.

Under Advanced, the max gas spend per wallet field is your gas budget. The row shows what it is set to while it is closed, so a budget is never hidden. Every bid the bot signs for a wallet is capped by it, so nothing above it can ever be sent. The cost on each setting's button is what its first bid costs at the current fee. If that bid is being outbid, the bot moves to a higher price it already signed, up to the budget and never past it. A wallet's balance can only lower its bids: more money in a wallet is never a reason to bid more.

Reading the screen

Every status the cockpit can show, and what to do about it.

This is the page to come back to. The bot says exactly one thing at a time, and each of them means something specific.

Before you arm

It saysIt meansDo this
Checking…Reading the contract and simulating a purchase.Wait a moment.
Sim passed · readyA purchase would work right now.You are clear to arm or fire.
Sim failed · check contractA purchase would not work. Wrong address, wrong quantity, or the sale is not open.Check the address and the quantity against what the project published.
Unverified · don't ArmThe contract's source has not been published.Stop. Do not arm.
Mint closedThe sale is over or sold out.Nothing to do here.
Pick a chainThe address exists on more than one chain and the bot will not guess.Choose the one the project named.
Signer offline · won't raceYour paired signer is not answering.Start it, or unlock the wallets on this device instead.

When Arm is grey, the line under it says why, and it names the first thing to fix:

Under ArmDo this
Paste a contract to beginPaste the collection's address.
Set up mint wallets firstSet up mint wallets in Setup.
Unlock your wallets firstUnlock with your passphrase or face.
Select at least one walletTap Wallets and choose at least one.
Pick the chain this collection is onChoose the chain the project named.
This call needs something only the project can supplyGet the proof or signature the sale needs, above.
The simulation did not passRead the reason under the address. Check it and the quantity.

While it is running

It saysIt meansDo this
ArmedPrepared and watching. Nothing has been sent.Leave it. Stop cancels.
Held · waiting for openSigned and ready, waiting for the sale to open.Leave it. It fires by itself.
Watching · 2 of 3How many independent connections to the chain are live.More is better. One is still fine.
Not watching · fire by handNo live connection, so it cannot detect the open by itself.Fire manually when the sale starts.
Signed · held for the openThat wallet's purchase is signed and held for the open.Leave it.
Sent · waiting for a block · bid 2 of 6Sent and waiting to be included. The bid is which of its signed prices is out.Leave it. If it is being outbid, it moves up by itself.
Send failed · retryingA message did not reach the network. Not a failed purchase.Nothing. It is already retrying.

Where each wallet is

Every wallet carries one word for where its purchase is, and the strip across the top of the race shows how far the furthest one has got. Each word comes from something that actually happened — a node's answer, a receipt, the chain's latest block — never from a timer.

It saysIt means
SignedSigned and held for the open. Nothing has been sent.
SendingSent, and no network node has taken it yet. Retries on its own.
In mempoolA node took it. It is waiting to be put in a block.
IncludedIt is in a block. The token ids show underneath.
ConfirmedMore blocks have been built on top of it: 2 counting its own on Ethereum, 5 on the faster chains.
MissedIt never landed: sold out, beaten, or the wallet's nonce was used by something else.
RevertedIt landed and the sale rejected it. The gas is spent.

Under a wallet's line

When a send does not take, the reason appears in small print under that wallet:

It saysDo this
Endpoint busy · retryingNothing. One endpoint is having a bad minute.
Underpriced · bids higher while the budget allowsNothing, unless you want to raise the gas budget.
Below the base fee · bids higher while the budget allowsThe same. Fees rose after you armed.
Not enough to cover the bid · fund this walletSend that wallet more, or leave it out.
Nonce already used · this wallet sent something else firstStop that wallet. Something else was sent from it.
Nonce used by another transaction · not one of these bidsShown with Missed. That wallet sent something else first; nothing here was mined for it.

When it is over

It saysIt meansDo this
You’re in · block 18,204,331The purchase landed, in that block. The token ids appear next to it.Go and sell, or hold.
hit 00:00:01 after open · block 18,204,331How long after the sale opened your first purchase landed, by the chain's own clock.Under a block time means you made the opening block or the one after.
MissedIt sold out, or someone got there first.Nothing lost but gas.
RevertedThe chain rejected the purchase. Usually a limit, a price, or an allowlist.Read the reason under the status. It says which.

Mints that open later

Arm hours early and let it fire without you.

Most good mints open at an announced time, often in the middle of your night. You do not have to be there.

Press Arm · wait for open and the bot prepares and signs everything immediately, then waits. When the moment comes there is no work left to do, only a send. It fires against the chain's own clock, which is what actually decides who was first.

If you are arming from a phone

  • Plug it in. A dead phone does not fire.
  • Leave the page open and the screen on. The bot asks your phone to stay awake, but a phone that is locked for hours may still sleep.
  • If it does go to sleep and wake up, the bot picks up where it was. It does not forget an armed race.

Allowlists

Some sales only let certain wallets in. The bot checks which of yours can.

An allowlist(a list of wallets allowed to mint early or at all) comes in three kinds, and the line under the contract address says which one you are looking at.

When the contract keeps the list itself

There is nothing to paste. The contract answers for each wallet, so a panel called On-chain allowlist appears under the address and says how many of your selected wallets are on it:

2 of 3 wallets on the on-chain list — the rest will sit out

It is read again whenever you change which wallets are selected.

When the contract needs a proof

Here the contract only stores a fingerprint of the list, not the addresses on it, so each wallet has to send a small piece of evidence called a proof. Without it, the purchase is rejected. A box called Allowlist proof appears directly under the contract address, only for this kind. Select your wallets first, paste into the box, and press Get proof. The bot checks what you pasted against the contract and says, under the button, how many of your wallets it found. There are three things you can paste, in order of preference:

If the project gave youDo thisWhat the bot does
The whole list of addressesPaste the list.Builds the proof itself and checks it against the contract before arming.
A proof, for your walletPaste the proof.Checks it verifies against the contract, then uses it.
A link to their APIPaste the link with {address} where the wallet goes.Fetches one proof per wallet and verifies each.

Some lists also say how many each wallet may mint, one number after each address. Paste them as they come; the bot recognises them and puts each wallet's number into its purchase. It can only do that when the contract's code is published, because that is where it learns which part of the purchase the number goes in. When it is not, the box says so, and those wallets sit out.

When only some of your wallets are on it

Either kind: select them all anyway. The simulation runs as a wallet that is on the list, so it does not matter which one comes first, and each wallet sends its own proof when one is needed. A wallet that is not on the list is not signed at all, because its purchase could only fail. The bot names it and races without it:

···4f2a not on the allowlist · racing without it

If none of your wallets is on the list, the check says so and Arm stays off, because the simulation cannot pass either:

No wallet has a proof — this call cannot pass

No gas is spent in either case.

When the project's server signs

Some sales use a signature from the project's own server rather than a list: the server decides whether your wallet may mint, and if so, signs a permission only that wallet can use. A box called Signed allowance appears under the contract address for this kind. Paste the link the project's site asks for its signature, with {address} where the wallet goes, or paste each wallet's address and signature on its own line. Press Get signatures, and the bot asks the project for every selected wallet the way its site would.

Minting on Solana

Same idea, different machinery: a candy machine instead of a contract, a hold instead of a nonce.

Most Solana collections sell through a candy machine(Metaplex's program for selling a collection one item at a time). Its rules — when it opens, the price, who may mint — sit in a companion account called its guard. The bot mints from Metaplex Core candy machines and from Candy Machine v3, including programmable NFTs.

  1. Paste the candy machine address

    Into Paste candy machine. It is shown on Solscan and usually on the project's mint page. Paste the guard or the collection by mistake and the screen says which one you pasted.
  2. Check the group

    A machine can sell in phases, called groups: an allowlist first, the public after. The bot picks the public one, or asks when two are live at once. An allowlist group needs the list pasted, like on Ethereum.
  3. Arm

    The first time a wallet arms on Solana, the bot sets aside a hold(a small account per wallet that lets its purchases be signed now and sent later) for it: 0.0011 SOL, refundable with Return deposits. Then every bid is signed in advance, checked on your device first, and held.
  4. It fires itself

    While holding, the bot keeps testing the real purchase against the chain. The first time the test mints, it sends. There is no Fire button to press early, because early can only fail.

What each preset bids

Two things buy a place in a Solana block: a priority fee(a price per unit of work, paid to the block's producer whether the mint works or not) and a tip(a payment to Jito, which runs most of Solana's block producers, paid only if the mint goes through). Each preset opens at one step of the same ladder and climbs from there if it is being outbid; Nuke opens at the highest step your cap allows. For a typical mint, under the default cap:

PresetPriority feeTipFees
Safe200,000 µ-lamportsnone<0.0001 SOL
Fast1,000,000 µ-lamports0.0001 SOL0.0003 SOL
Nuke20,000,000 µ-lamports0.005 SOL0.009 SOL

Nothing above 0.01 SOL in fees per wallet is ever signed unless you raise the cap under Advanced. The mint price and the NFT's rent come on top, and the screen shows both before you arm.

Where each wallet is

It saysWhich means
SignedSigned at Arm and held on this device. Nothing sent.
SendingSent, and no endpoint has taken it yet.
AcceptedAn endpoint took it and is passing it to the block producer. Solana has no mempool; this is the only step between sending and a block.
ProcessedIn a block the network has not voted on yet.
ConfirmedMost of the network has voted for that block. In practice, final.
FailedIn a block, but the mint was refused. The priority fee is spent; the tip is not.
MissedNothing of this wallet's landed, and nothing can now: sold out, stopped, or its hold was used by something else.

What it will not mint on Solana

A group that…Says
thirdPartySignerNeeds the launchpad’s own signature · the bot cannot mint this
gatekeeperNeeds a captcha pass · the bot cannot mint this
nftGate, nftPayment, nftBurn, nftMintLimit, assetPayment, assetBurn, assetMintLimit, assetBurnMulti, assetPaymentMulti, assetGateNeeds an NFT from another collection · not supported
vanityMintNeeds a vanity address · not supported

Launchpads that build the purchase on their own servers, Magic Eden's among them, are in this category: the bot cannot sign what it cannot see. The remote signer and the box are Ethereum-only for now, so Solana needs wallets saved in this browser, and selling from here is Ethereum-only too.

What you won

Not just that you got in, but exactly which tokens.

When a purchase lands, the bot reads the receipt and shows the token numbers, per wallet. That matters because you cannot sell, send or price a token whose number you never wrote down.

3 tokens · #4211–4213

It also records how long after the sale opened your purchase actually landed. If that number is large, something is slow, and the troubleshooting table covers what.

Selling

Set a price, see what you would actually keep, sign once.

Press Sell next to what you won. The bot reads three things from the chain before it shows you anything: whether the collection charges a royalty(a cut of every sale that goes to the creator), whether anything is allowed to move your token yet, and the state of your wallet's order history.

  1. Type a price

    The bot shows what you would keep after the royalty and the marketplace fee, and the price you would need to break even on what the mint cost you.
  2. Approve the collection, once

    A sale has to be able to move the token, and that takes one transaction per collection, ever. The bot tells you if it is needed and prepares it.
  3. Sign the listing

    You see one sentence describing exactly what you are authorising before you sign it. Read it.

What it costs

A flat monthly fee, and your own gas. No cut of anything.

ThingCost
Looking, simulating, dry runsFree
Arming a real mint50 USDC a month, paid on Base
Gas and mint pricesYours, paid to the network and the project
Solana: priority fees, Jito tips and rentYours, paid to the network
Solana: a hold deposit per wallet0.0011 SOL, set aside once and refundable
A cut of what you mintNone

The licence is checked against the first wallet of your seed phrase. Paying once covers every other wallet derived from the same phrase, so a set of eight is one licence, not eight. It covers Solana too: a Solana mint is armed with the same licence, which is why the Ethereum wallets from your phrase must be saved as well.

Staying safe

Five rules. All of them are about money you can lose without being hacked.

  1. Mint wallets are spending money

    Keep nothing in them you would miss. Top them up before a mint and move winnings out afterwards.
  2. Your seed phrase goes in one place, once

    Into the bot's own wallet sheet, on easternbot.xyz and no other address. Never into a link somebody sent you, never into a form, never into a chat. Easternbot will never ask for it anywhere else.
  3. Never arm an unverified contract

    If the code is not published, nobody can tell you what it does with your money. The status says so plainly.
  4. Check the quantity limit before you set Qty

    Asking for more than the sale allows usually fails the whole purchase, and you still pay the gas.
  5. A fast bot into a bad mint is still a bad mint

    Speed is the only thing here that is solved. What to buy is not.

When it goes wrong

The things that actually happen, and what each one means.

What you seeWhat it usually isFix
Sim failed on an open mintQuantity above the sale's limit, or an allowlist you are not on.Drop Qty to 1 and try again. If it passes, it was the limit.
Sim failed at Qty 1 on a mint you can see sellingThe collection mints through a launchpad the bot does not recognise.Nothing to change. It is a real limit, and the internals name it.
···4f2a not on the allowlist · racing without itNo proof for that wallet. It is not on the list you gave, or the list is for another phase.Nothing, if it really is not listed. Otherwise paste the right list.
This list gives each wallet an allowance, and this contract does not say which argument takes it. Wallets that need one will sit out.An allowance list matched, but the contract's code is not published, so the bot cannot place the number.Nothing to change in the bot. Mint those wallets on the project's site.
No wallet was given a signature — this call cannot passThe project's server signed for none of the selected wallets, or the link was not the one its site uses.Check the link on the project's own mint page. A wallet it will not sign for cannot mint there either.
No selected wallet is on the on-chain list — this call cannot passThe contract keeps its own list, and none of the selected wallets is on it.Select wallets that are on it. There is nothing to paste for this kind.
No selected wallet is on the allowlistNone of the selected wallets is on the list you gave.Select the listed wallets, or paste the list for this phase.
···4f2a had a transaction waiting · this mint replaces itThat wallet still had a transaction waiting to be mined, usually a bid from a race you stopped. The mint takes its place instead of queueing behind it.Nothing. If you meant to keep that transaction, stop and send it again yourself.
···4f2a left out · call would not carry its own proofThe bot could not build that wallet a call carrying its own proof, so it refused to sign one that could only fail.Rare. Nothing was spent. If every wallet shows it, run that mint from the project's site.
Reverted, everyoneA condition the contract enforces: price, phase, limit, allowlist.The reason under the status names it.
Reverted, some walletsThose wallets ran out of money, or hit a per-wallet cap.Check balances. The bot warns before arming if it can see it.
Missed on a mint you armed earlyThe device slept, or nothing was watching the chain.Check the watching count. Consider a box for overnight mints.
Landed, but lateYour connection to the chain is slow, or the phone was the bottleneck.A box removes both. It sits beside the chain rather than on a phone.
Fired · 1 of 2 acceptedThe box could not get some purchases to any endpoint, or a node refused them.Nothing, usually: the cockpit resends those itself. If it happens every time, the box needs better endpoints. The internals say how.
Signer offline mid-raceThe device holding the keys went to sleep or lost its connection.The strip turns red before it costs you anything. Unlock again.
That is the guard · paste the candy machine it guardsYou pasted the candy machine's guard, not the machine.Paste the candy machine. Solscan shows both; the machine is the one the guard is attached to.
No public mint · only the owner can mint from this machineThe machine has no guard, so only its owner can mint from it.Nothing to change. There is no public sale on this machine.
Refused to sign · …A transaction the server sent back broke one of the checks your device runs before signing: a transfer, a program or a fee it does not allow.Nothing was signed or spent. Arm again; if it repeats, report it, because it should not happen.
Hold used by another transaction · not one of these bidsSomething else used that wallet's hold — another tab or device armed the same wallet.Race each wallet from one place at a time.
Hold setup did not confirm in time · Arm againThe transaction setting up the hold did not reach a block in 45 seconds, usually because public endpoints were busy.Arm again. A keyed endpoint (see the internals) makes this rare.
Held on a Solana mint that is openThe test purchase is not minting: a rule of the guard fails for these wallets, or it would be taxed.The line under the race says which rule. Nothing is sent while it fails.