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.
In a hurry
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 need | Why | If you do not have one |
|---|---|---|
| A phone or laptop | The bot runs in a normal browser. Nothing to install. | Any modern browser works. |
| A seed phrase | Twelve 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 chain | Each 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 real | 50 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.
| Chain | You pay gas in | Ordering |
|---|---|---|
| Ethereum | ETH | Highest fee first |
| Robinhood Chain | ETH | First come, first served |
| Base | ETH | Highest fee first |
| Abstract | ETH | Highest fee first |
| ApeChain | APE | First come, first served |
| Ink | ETH | Highest fee first |
| Monad | MON | Highest fee first |
| MegaETH | ETH | Highest fee first |
| HyperEVM | HYPE | Highest fee first |
| Soneium | ETH | Highest fee first |
| Arc | USDC | Highest fee first |
| Solana | SOL | Highest 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.
Open the bot
Go to easternbot.xyz. It is a web page, not an app.Press Run dry-run
The offer appears on first open. If you skipped it, it is still there under the wallet sheet.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.
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.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.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.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.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 hereYour own signer
A box
AdvancedYou 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.
Paste the contract address
The long0x…string for the collection. The project publishes it. The bot works out which chain it is on by itself.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.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.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.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.
| Setting | Starting bid | Sent first | Use it when |
|---|---|---|---|
| Safe | Higher than 50% of recent bids | The starting bid | Quiet mint, no rush, you would rather not overpay. |
| Fast | Higher than 80% of recent bids | One step up, about 1.6× the starting bid | The normal choice. Competitive, not reckless. |
| Nuke | Higher than 95% of recent bids | The top bid: your gas budget, or 12× the starting bid without one | You 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 says | It means | Do this |
|---|---|---|
| Checking… | Reading the contract and simulating a purchase. | Wait a moment. |
| Sim passed · ready | A purchase would work right now. | You are clear to arm or fire. |
| Sim failed · check contract | A 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 Arm | The contract's source has not been published. | Stop. Do not arm. |
| Mint closed | The sale is over or sold out. | Nothing to do here. |
| Pick a chain | The address exists on more than one chain and the bot will not guess. | Choose the one the project named. |
| Signer offline · won't race | Your 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 Arm | Do this |
|---|---|
| Paste a contract to begin | Paste the collection's address. |
| Set up mint wallets first | Set up mint wallets in Setup. |
| Unlock your wallets first | Unlock with your passphrase or face. |
| Select at least one wallet | Tap Wallets and choose at least one. |
| Pick the chain this collection is on | Choose the chain the project named. |
| This call needs something only the project can supply | Get the proof or signature the sale needs, above. |
| The simulation did not pass | Read the reason under the address. Check it and the quantity. |
While it is running
| It says | It means | Do this |
|---|---|---|
| Armed | Prepared and watching. Nothing has been sent. | Leave it. Stop cancels. |
| Held · waiting for open | Signed and ready, waiting for the sale to open. | Leave it. It fires by itself. |
| Watching · 2 of 3 | How many independent connections to the chain are live. | More is better. One is still fine. |
| Not watching · fire by hand | No live connection, so it cannot detect the open by itself. | Fire manually when the sale starts. |
| Signed · held for the open | That wallet's purchase is signed and held for the open. | Leave it. |
| Sent · waiting for a block · bid 2 of 6 | Sent 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 · retrying | A 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 says | It means |
|---|---|
| Signed | Signed and held for the open. Nothing has been sent. |
| Sending | Sent, and no network node has taken it yet. Retries on its own. |
| In mempool | A node took it. It is waiting to be put in a block. |
| Included | It is in a block. The token ids show underneath. |
| Confirmed | More blocks have been built on top of it: 2 counting its own on Ethereum, 5 on the faster chains. |
| Missed | It never landed: sold out, beaten, or the wallet's nonce was used by something else. |
| Reverted | It 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 says | Do this |
|---|---|
| Endpoint busy · retrying | Nothing. One endpoint is having a bad minute. |
| Underpriced · bids higher while the budget allows | Nothing, unless you want to raise the gas budget. |
| Below the base fee · bids higher while the budget allows | The same. Fees rose after you armed. |
| Not enough to cover the bid · fund this wallet | Send that wallet more, or leave it out. |
| Nonce already used · this wallet sent something else first | Stop that wallet. Something else was sent from it. |
| Nonce used by another transaction · not one of these bids | Shown with Missed. That wallet sent something else first; nothing here was mined for it. |
When it is over
| It says | It means | Do this |
|---|---|---|
| You’re in · block 18,204,331 | The 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,331 | How 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. |
| Missed | It sold out, or someone got there first. | Nothing lost but gas. |
| Reverted | The 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 outIt 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 you | Do this | What the bot does |
|---|---|---|
| The whole list of addresses | Paste the list. | Builds the proof itself and checks it against the contract before arming. |
| A proof, for your wallet | Paste the proof. | Checks it verifies against the contract, then uses it. |
| A link to their API | Paste 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 itIf 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 passNo 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.
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.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.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.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:
| Preset | Priority fee | Tip | Fees |
|---|---|---|---|
| Safe | 200,000 µ-lamports | none | <0.0001 SOL |
| Fast | 1,000,000 µ-lamports | 0.0001 SOL | 0.0003 SOL |
| Nuke | 20,000,000 µ-lamports | 0.005 SOL | 0.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 says | Which means |
|---|---|
| Signed | Signed at Arm and held on this device. Nothing sent. |
| Sending | Sent, and no endpoint has taken it yet. |
| Accepted | An 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. |
| Processed | In a block the network has not voted on yet. |
| Confirmed | Most of the network has voted for that block. In practice, final. |
| Failed | In a block, but the mint was refused. The priority fee is spent; the tip is not. |
| Missed | Nothing 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 |
|---|---|
| thirdPartySigner | Needs the launchpad’s own signature · the bot cannot mint this |
| gatekeeper | Needs a captcha pass · the bot cannot mint this |
| nftGate, nftPayment, nftBurn, nftMintLimit, assetPayment, assetBurn, assetMintLimit, assetBurnMulti, assetPaymentMulti, assetGate | Needs an NFT from another collection · not supported |
| vanityMint | Needs 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–4213It 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.
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.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.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.
| Thing | Cost |
|---|---|
| Looking, simulating, dry runs | Free |
| Arming a real mint | 50 USDC a month, paid on Base |
| Gas and mint prices | Yours, paid to the network and the project |
| Solana: priority fees, Jito tips and rent | Yours, paid to the network |
| Solana: a hold deposit per wallet | 0.0011 SOL, set aside once and refundable |
| A cut of what you mint | None |
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.
Mint wallets are spending money
Keep nothing in them you would miss. Top them up before a mint and move winnings out afterwards.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.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.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.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 see | What it usually is | Fix |
|---|---|---|
| Sim failed on an open mint | Quantity 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 selling | The 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 it | No 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 pass | The 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 pass | The 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 allowlist | None 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 it | That 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 proof | The 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, everyone | A condition the contract enforces: price, phase, limit, allowlist. | The reason under the status names it. |
| Reverted, some wallets | Those 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 early | The device slept, or nothing was watching the chain. | Check the watching count. Consider a box for overnight mints. |
| Landed, but late | Your 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 accepted | The 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-race | The 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 guards | You 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 machine | The 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 bids | Something 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 again | The 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 open | The 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. |