> For the complete documentation index, see [llms.txt](https://docs.pump-bot.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.pump-bot.com/dex-bot-sniper-bot-front-running-bot/set-up-guide.md).

# Set-up Guide

## 1. First steps

{% hint style="info" %}
&#x20;Prerequisites :

* Windows operating system (your computer or a [VPS](https://en.wikipedia.org/wiki/Virtual_private_server), have a look at the FAQ)
  {% endhint %}

## 2. Configure your settings

You need first to configure your account.&#x20;

1\. **Run the ChainSniper PumpBot first**,  and enter your wallet and Private Key, or add them into the .json file.

2\. Open **settings.json** file and set your Exchange / Node values:

```
[
{
    "WALLETADDRESS": "0x68d8Bfa07451dBa40ec61FdB6b431e04C99368DE",
    "PRIVATEKEY": "083d1908f5b162cf94c651e85a5d61223b85c645aa944796dbcdf28df720033f",
    "WALLETADDRESS2": "null",
    "PRIVATEKEY2": "null",
    "WALLETADDRESS3": "null",
    "PRIVATEKEY3": "null",
    "WALLETADDRESS4": "null",
    "PRIVATEKEY4": "null",
    "WALLETADDRESS5": "null",
    "PRIVATEKEY5": "null",
    
    "MEMPOOL_METHOD": "public_node",
    "USECUSTOMNODE": "false",
    "CUSTOMNODE": "false",
    
    "EXCHANGE": "pancakeswap",
    "EXCHANGEVERSION": "2",
    "PREAPPROVE": "true",
    "UNLIMITEDSLIPPAGE": "false",
    "VERBOSE_PRICING": "true",
    "SLOW_MODE": "false",
    "START_BUY_AFTER_TIMESTAMP": "not used",
    "START_SELL_AFTER_TIMESTAMP": "not used",

    "_EXCHANGE_BASE_SYMBOL": "BNB ",
    "_STABLE_BASES": {
        "USDT": {
            "address": "0x55d398326f99059ff775485246999027b3197955",
            "multiplier": 0
        },
        "BUSD": {
            "address": "0xe9e7cea3dedca5984780bafc599bd69add087d56",
            "multiplier": 0
        },
        "USDC": {
            "address": "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d",
            "multiplier": 0
        }
    },
    "ENCRYPTPRIVATEKEYS": "false"
}
]

```

{% hint style="success" %}
Chainsniper can trade with 5 wallets at the same time, if you use MULTIPLEBUYS option
{% endhint %}

* **EXCHANGE** : enter the exchange you want to use. Available values:&#x20;
  * Uniswap
  * Pancakeswap
  * Biswap
  * Pinkswap
  * Babyswap
  * Bakeryswap
  * Spiritswap
  * Spookyswap
  * Protofi
  * ApeSwap
  * Quickswap
  * Polygon-apeswap
  * Waultswap
  * KuSwap
  * KoffeeSwap
  * Pangolin
  * Traderjoe
  * Tethys
  * Cronos-vvs
  * Cronos-crona
  * Viperswap
  * ... and also Pancakeswaptestnet and Uniswaptestnet, if you want to use the bot on testnets.<br>

{% hint style="info" %}
**TUTORIAL : HOW TO TEST THE BOT ON PANCAKE TESTNET**<br>

1/ Enter "pancakeswaptestnet" in settings.json

2/ Ask 1 testnet BNB here : <https://testnet.binance.org/faucet-smart>

3/ Add BNB testnet to your metamask&#x20;

4/ Use this website to make a swap on testnet : <https://pancake.kiemtienonline360.com/>

5/ Go here to find the contract address of the token you just sniped on testnet : <https://testnet.bscscan.com/>

6/ Enter this contract address in your tokens.json

7/ Snipe :)&#x20;

**HOW TO FIND TOKENS on BSC testnet ?**

You can find many transactions on Pancake testnet here : <https://testnet.bscscan.com/address/0xd99d1c33f9fc3444f8101754abc46c52416550d1>

\-----------------------------------------------

**TUTORIAL : HOW TO TEST THE BOT ON ETH RINKEBY TESTNET**<br>

1/ Enter "uniswaptestnet" in settings.json

2/ Ask 0.1 testnet ETH here : <https://faucets.chain.link/rinkeby>

3/ Add ETH testnet Rinkeby to your metamask&#x20;

5/ **HOW TO FIND TOKENS ?** go here to find contract address of tokens : <https://rinkeby.etherscan.io/address/0x7a250d5630b4cf539739df2c5dacb4c659f2488d>

6/ Enter contract address in your tokens.json

7/ Important : use this in your tokens.json&#x20;

&#x20;   "GAS": "BOOST",

&#x20;   "BOOSTPERCENT": "150",

8/ Snipe :)

9/ See results here : <https://rinkeby.etherscan.io/>
{% endhint %}

* **EXCHANGEVERSION** \
  Only available for Pancakeswap. Select "1" or "2".

  If you're not using Pancake, just leave it like this, bot won't take it into account.\ <br>
* **PRIVATEKEY** \
  You need to enter here the **Private key (and not the 12 words seed phrase)** of the wallets you want to use. [Read this article](https://metamask.zendesk.com/hc/en-us/articles/360015289632-How-to-Export-an-Account-Private-Key) to learn how to export your private key from Metamask.

{% hint style="info" %}
You can use **same wallet or different wallets.** It's as you prefer.
{% endhint %}

* **USECUSTOMNODE** \
  Set it to "true" if you want to use a custom node.\ <br>

* **CUSTOMNODE** \
  If you want to use a custom node, enter here your node's address **in http, wss, or IPC**\
  Example: wss\://bsc-ws-node.nariox.org:443&#x20;

* **PREAPPROVE** \
  Tells the bot to preapprove tokens on startup or not<br>

* **ENCRYPTPRIVATEKEYS** \
  Will be filled automatically when you start the bot for the first time\ <br>

* **UNLIMITEDSLIPPAGE** \
  Use this parameter if you want the bot to bypass completely the slippage setting and buy at any slippage, to avoid the "INSUFFICIENT\_AMOUNT" Error \
  \
  If you select UNLIMITEDSLIPPAGE= true, bot won't take into account SLIPPAGE parameter.&#x20;

{% hint style="danger" %} <mark style="color:red;">**Use UNLIMITED SLIPPAGE WITH CAUTION**</mark> \ <mark style="color:red;">THIS SHOULD BE USED FOR DEGEN SNIPES ONLY AND CAN RESULT IN LOSS OF FUNDS IF USED INCORRECTLY!!!</mark>
{% endhint %}

* **VERBOSE\_PRICING**\
  Default setting is "true", but if you set it to "false", bot will only show lines on the screen if the price is updated, like this :&#x20;

![](/files/HYLXfAWtwe632h0LoUY7)

* **SLOW\_MODE**

  A user contacted me because he was running the bot 24/7 on the default node, and his IP got temporarily banned because he made too many calls.\
  Indeed, on default RPC nodes, there is a rate limit (example : <https://docs.binance.org/smart-chain/developer/rpc.html#rate-limit>)\
  \--> We created a SLOW\_MODE parameter, who **makes the bot do price check every 0.5s only**.\
  Use it if you let the bot run all night on default node, if you just need to sell tokens without need for sniping, for instance

  To use it :

  * enter `SLOW_MODE : true` in settings.json

## 3/ Configure your tokens

Open **tokens.json** to configure the tokens and the orders that your bot will create. Here's an example:

```
[
  {
    "ENABLED": "true",
    "SYMBOL": "CAKE",
    "ADDRESS": "0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82",

// -----------  BUY / SELL  PARAMETERS ---------------------------------------------------------------------------------------- 
    "KIND_OF_SWAP": "base",            // enter "base" to use BUYAMOUNTINBASE , and "tokens" to use BUYAMOUNTINTOKENS
    "BUYAMOUNTINBASE": "0.000001",
    "BUYAMOUNTINTOKEN": "5",
    "MAX_BASE_AMOUNT_PER_EXACT_TOKENS_TRANSACTION": "0.5",     // used with KIND_OF_SWAP = tokens
    
    "BUYPRICEINBASE":  "0",
    "SELLPRICEINBASE": "200%",         // You can now put amount in % in this field
    "SELLAMOUNTINTOKENS": "ALL",
    "STOPLOSSPRICEINBASE": "60%",      // You can now put amount in % in this field
    "TRAILING_STOP_LOSS": "40%",       // put amount in % in this field. Enter '0' if you don't want to use it
    "SLIPPAGE": "5",

// -----------  LIQUIDITY PARAMETERS ---------------------------------------------------------------------------------------- 
    "WATCH_STABLES_PAIRS": "false",     // use this if you want bot to check all Stable Liquidity pairs
    "LIQUIDITYINNATIVETOKEN": "true",
    "USECUSTOMBASEPAIR": "false",
    "BASESYMBOL": "BUSD",
    "BASEADDRESS": "0xe9e7cea3dedca5984780bafc599bd69add087d56",
    "MINIMUM_LIQUIDITY_IN_DOLLARS": "10000",

// -----------  COUNTER  ANTI BOT PARAMETERS --------------------------------------------------------------------------- 
    "WAIT_FOR_OPEN_TRADE": "true_after_buy_tx_failed", // check Wiki, this is very useful
    "BUY_AND_SELL_TAXES_CHECK": "true",
    "MAX_BUY_TAX_IN_%": "2",
    "MAX_SELL_TAX_IN_%": "2",
    "BUYAFTER_XXX_SECONDS": "0",        
    "MULTIPLEBUYS": "false",            // you can use 2 options : 'several_wallets' or 'same_wallet'. Check wiki
    "BUYCOUNT": "2",

// -----------  GAS PARAMETERS ---------------------------------------------------------------------------------------- 
    "GAS": "BOOST",                     // PumpBot recommend you to use BOOST here
    "MAX_GAS": "9999",                  // Put here the maximum of GAS you want to pay if you use BOOST. If GAS > MAX_GAS Tx won't be made
    "BOOSTPERCENT": "30",
    "GASLIMIT": "1000000",
    "GASPRIORITY_FOR_ETH_ONLY": "1.5",

// -----------  OTHER PARAMETERS ---------------------------------------------------------------------------------------- 
    "MOONBAG": "0",                     // Bot will keep this amount in your wallet after SELL order
    "MAXTOKENS": "1",                   // Bot will stop if your balance > MAXTOKENS
    "HASFEES": "false",
    "MAX_SUCCESS_TRANSACTIONS_IN_A_ROW": "2",
    "MAX_FAILED_TRANSACTIONS_IN_A_ROW": "2",
    "RUGDOC_CHECK": "true",
    "ALWAYS_CHECK_BALANCE": "false",    // use this if you want bot to check your token balance between each price check

// -----------  PINKSALE SNIPING ---------------------------------------------------------------------------------------- 
    "PINKSALE_PRESALE_ADDRESS": "enter here the presale address if you're sniping a Pinksale listing",
    "PINKSALE_PRESALE_START_TIMESTAMP":  "1647477029"
  }
]

```

* **ENABLED**\
  Enable trading or not (if false, bot won't try to buy tokens)\ <br>
* **SYMBOL**\
  Symbol of the token you want to buy\ <br>
* **ADDRESS**\
  Contract address of the token you want to buy<br>
* **KIND\_OF\_SWAP**\
  You now have the choice between : \
  1/ **"KIND\_OF\_SWAP": "base"**  --> you want to swap with an amount of Base tokens\
  (example : I want to buy 1 BNB of CAKE token)\
  \
  2/ **"KIND\_OF\_SWAP": "tokens"**  --> you want to swap an exact amount of tokens\
  (example : I want to buy 50 CAKE tokens)\ <br>
* **BUYAMOUNTINBASE** (used with "KIND\_OF\_SWAP": "**base**")\
  Put here the amount **in the base symbol** that you want the bot to buy with\ <br>
* **BUYAMOUNTINTOKEN** (used with "KIND\_OF\_SWAP": "**tokens**")\
  Put here the **amount** **of tokens** that you want the bot to buy \ <br>
* **MAX\_BASE\_AMOUNT\_PER\_EXACT\_TOKENS\_TRANSACTION**\
  (used with "KIND\_OF\_SWAP": "**tokens**")\
  Put here the maximum amount of BNB / ETH / AVAX... that you want the bot to use, if you're swapping per tokens\
  \--> this option avoids you to spend too much to buy the tokens you want to buy\ <br>
* **BUYPRICEINBASE** (used with "KIND\_OF\_SWAP": "**base**")\
  Buy price of 1 token **in the base symbol** : if the price of 1 token is < or = to this price, the bot will buy.

{% hint style="info" %}
**If you want the bot to never buy, set BUYPRICEINBASE = 0** \
(price cannot be below 0)
{% endhint %}

* **SELLPRICEINBASE**\
  Sell price of 1 token **in the base symbol** : if the price of 1 token is > or = to this price, the bot will sell.\
  (it will sell at the Market price, not at your price)\
  \ <mark style="color:red;">**NEW : you can now enter a sell price in %**</mark>\
  Chainsniper is now able to determine the SELL price according to your real BUY price

  You just need to enter an amount in % in SELLPRICEINBASE and STOPLOSSPRICEINBASE, and it will automatically calculate sell price.<br>

  **Example :**

  &#x20;   "SELLPRICEINBASE": "300%"

  &#x20;   "STOPLOSSPRICEINBASE": "60%"

{% hint style="warning" %}
BUYPRICEINBASE and SELLPRICEINBASE are the buy price of **ONE token in BASE** **pair**.

Think about it as if you were in front of this screen:

{% endhint %}

![](/files/jKkwnpaUKYaNrJPuRTez)

{% hint style="info" %}
**If you want the bot to never sell, set SELLPRICEINBASE = 99999999**
{% endhint %}

* **STOPLOSSPRICEINBASE**\
  Set your Stop Loss price **in the base symbol** \
  Bot will sell if token price < STOPLOSS price<br>
* **TRAILING\_STOP\_LOSS**\
  A trailing stop-loss is an **intelligent version of a normal stop-loss**, which is a limit sell that fills if the price dips below a certain point, preventing losses from happening.<br>

  In a trailing stop-loss, the sell price follows (or “trails”) behind the current price of your chosen token, meaning that if the price moons and then unexpectedly drops, then the stop-loss would trigger at a higher price, meaning more profits for you.\
  \
  `How to use it :`\
  "TRAILING\_STOP\_LOSS": "80%" means that bot will sell if price goes down to 80% of ATH price (--> if ATH was 2$, bot will sell at 1.60$)

  \ <br>
* **SLIPPAGE** \
  Slippage you want to use (in %).\ <br>
* **MOONBAG**\
  Minimal amount of token you want to keep in your wallet. If you don't want to keep any token, put 0.\
  \&#xNAN;*(in this example, the bot will keep at least 20 KPAD token in your wallet)*\ <br>
* **MAXTOKENS** \
  This parameter is used to **make the bot stop buying**:
  * before buying, the bot checks MAXTOKENS&#x20;
  * if you hold more tokens than MAXTOKENS, the bot does not buy

{% hint style="info" %}
This parameter **does not** **influence how many tokens the bot will buy** during your trade: if you set MAXTOKENS = 1, the bot can buy 50000 tokens for example, no problem
{% endhint %}

If you want to make the bot stop buying after 1 trade, set MAXTOKENS to a low value, like "1" for instance.<br>

* **RUGDOC\_CHECK** \
  Call RugDoc's API to check if a contract is a honeypot or not.

  Check their website, be careful it cannot be 100% reliable of course!

  <https://rugdoc.io/honeypot/>

### Anti-antibot parameters

* BUYAFTER\_XXX\_SECONDS&#x20;
* WAIT\_FOR\_OPEN\_TRADE
* START\_BUY\_AFTER\_TIMESTAMP\
  START\_SELL\_AFTER\_TIMESTAMP
* MULTIPLEBUYS
* BUYCOUNT

[Please read dedicated "Counter anti-bot measures" page<br>](broken://pages/0GHwxx2ZP5ljH6ABGiAu)

### Liquidity parameters

* LIQUIDITYINNATIVETOKEN
* USECUSTOMBASEPAIR
* BASESYMBOL
* BASEADDRESS
* WATCH\_STABLES\_PAIRS<br>

:warning: :warning::warning: [Please read dedicated page carefully](broken://pages/hrhc9N0t8ufev6rwoquh) :warning::warning::warning:

{% hint style="danger" %} <mark style="color:red;">**WARNING : be VERY CAREFUL about those liquidity**</mark> <mark style="color:red;">**options**</mark>\ <mark style="color:red;">If you set up wrong configuration, bot will trade on wrong pair and make you lose funds. Beware</mark>
{% endhint %}

### Pinksale parameters

* PINKSALE\_PRESALE\_ADDRESS
* PINKSALE\_PRESALE\_START\_TIMESTAMP
* "WAIT\_FOR\_OPEN\_TRADE": "pinksale"

[Please read dedicated "Snipe Pinksale launches" page<br>](broken://pages/8XNrW4Di4186q3BWonjE)

* **MAX\_FAILED\_TRANSACTIONS\_IN\_A\_ROW** \
  Tells the bot to stop making buy/sell orders after XXX failed transactions\ <br>
* **MAX\_SUCCESS\_TRANSACTIONS\_IN\_A\_ROW** \
  Tells the bot to stop making buy/sell orders after XXX success transactions\
  \
  `Example :` if you want the bot to make 1 BUY and 1 SELL Tx, set it to **2**\ <br>
* **ALWAYS\_CHECK\_BALANCE**\
  To increase speed to maximum, the default behaviour of Chainsniper is to check your balance only at bot launch. It allows to reduce the amount of actions before make a sell order.\
  But some users want the bot to detect when they receive a token in their wallet while the bot is running, to sell the tokens as quickly as possible\
  \--> use this option to **make the bot check your tokens balance between every price check** (but this makes the bot a little bit slower - not too much slower, don't worry)\ <br>
* **MINIMUM\_LIQUIDITY\_IN\_DOLLARS** (since 4.0.5)\
  Use this option if you want the bot to set a **minimal** **amount of liquidity** before buying.

  Put liquidity amount in $.

{% hint style="danger" %}
Some people add very small amount of liquidity to Exchanges --> if you swap on this, you will lose all your money !!\
\
To avoid this, the team recommend to set **MINIMUM\_LIQUIDITY\_IN\_DOLLARS = 10000**
{% endhint %}

* **SELLAMOUNTINTOKENS**\
  Put here the **amount** **of token** that you want the bot to sell \ <br>
* **HASFEES** \
  Select "TRUE" if you want to trade a token with additional fees, like automatic transfer to liquidity when you buy / additional taxes / rebase / etc.\
  \
  If you don't use this on such tokens, you may have a <mark style="color:red;">Tx failed with "Pancake:K" error</mark>\ <br>
* **GAS / BOOSTPERCENT**&#x20;

  There is 2 ways to set your Gas :

1. **Set your** **own fixed Gas price** --> simply set Gas price in "GAS" parameter

   ```
   "GAS": "200",
   ```
2. **Let the bot calculate Gas price** relating to current Gas Price on blockchain :
   1. it reads the gas price on the blockchain&#x20;
   2. it applies the boost you set on Fast price. Example :

```
"GAS": "BOOST",
"BOOSTPERCENT": "30",
```

* **MAX\_GAS** \
  Put here the maximum of GAS you want to pay if you use BOOST. \
  If GAS > MAX\_GAS : Tx won't be made\ <br>
* **GASLIMIT** \
  Set it with the Gaslimit value you want to use \
  (we recommend to set it to **1000000** to avoid to be out of Gas)\ <br>
* **GASPRIORITY\_FOR\_ETH\_ONLY**\
  This is for ETH and AVAX only : sets Max Priority Gas.\
  The max priority fee, also referred to as the "**miner tip**", goes to the miner or validator, and incentivizes them to prioritize your transaction. Most often, the value you put in for "max priority fee" will be the amount you pay. \
  More details here : <https://www.blocknative.com/blog/eip-1559-fees> &#x20;

![](/files/wZ4AjsNE4WewZRy6cEE4)

## 4/ Launch the bot :rocket:&#x20;

* Start making Money on DEX Exchanges!
* Enjoy your Lambo :race\_car:&#x20;
