# Configuration

The `config.toml` file is the *heart* of the bot. Make sure to read the information **carefully** to not make any mistakes.

These are the current fields in the config.toml file:

```toml
licenseKey="XXXX-YYYY-ZZZZ-WWWW"
rpcUrl = "https://quiknode.pro/1"
grpcUrl = ""
wssUrl = "wss://quiknode.pro/1"
webhookUrl="https://discord.com/api/webhooks/XXXXX"
blockEngineURLLocation="amsterdam" #amsterdam,frankfurt,newyork,tokyo
TPS=100 #transactions per second

extraRPCS=[
    "https://quiknode.pro/2",
     "https://quiknode.pro/3"
]
pnlDelayMS = 500
grpcHeaders=""
[copyTrader]
turbo=true
global_maximum_buys_per_token=5
temporal = false
jito = true
circular = false
bloxroute = true
nextblock = false
nextblockLcoation = "frankfurt"
temporalLocation = "amsterdam"
bloxroute_url = "https://ny.solana.dex.blxrbdn.com/api/v2/submit" # make sure it ends with /api/v2/submit
bloxroute_api_key = ""
buy_tipFee = 0.001
sell_tipFee = 0.001
heliusUrl="https://helius-rpc.com/?api-key=XYZ"
getTransactionDelayMS = 500 
getTransactionRetries = 50 
getAccountInfoDelayMS = 400
getAccountInfoRetries = 50
```

Let's break down each field, followed by more details on it.

{% hint style="danger" %}
One of the most common mistakes has to do with case sensitive fields. Make sure all true/false values are **lowercase.**

**✅** true/false

❌ TRUE/FALSE

❌ True/False
{% endhint %}

* [x] licenseKey : **REQUIRED.** This is the license key that you own to use the bot.
* [x] rpcUrl:  **REQUIRED.**

This is the rpc url that would be used to query the Solana blockchain. Make sure this rpc is good and has a decent rate limit, for more info check out [node](https://zed-software.gitbook.io/zed-docs/general/node "mention").

* [x] **grpcUrl:&#x20;*****OPTIONAL***

The bot also allows you to connect using gRPC rather than websockets (wss). If you do not want to use a gRPC connection, then leave this field **EMPTY.**

* [x] **wssUrl:  REQUIRED.**

Always fill in a valid wss url in this field, even if you will be using gRPC. Never leave this field empty/invalid.

* [x] **webhookUrl:&#x20;*****OPTIONAL***

This is a url of a discord webhook if you would want to use that. It would send you notification on what the bot has bought/sold. Don't know what webhooks are? <https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks>

* [x] **blockEngineURLLocation:&#x20;*****OPTIONAL***

This is only important if you are using **jito** , if you aren't **ignore** it. If you are using jito then make sure to choose the location that is closest to your server/machine. Locations available to choose from

* amsterdam
* frankfurt
* newyork
* tokyo

- [x] **TPS  : REQUIRED.**

This is the speed that transactions will be spammed **if using normal sending**. If you are using jito sending this setting will be will also be applied to it.

* [x] **pnlDelayMS**

This is the interval that the bot will refresh the current prices at for pumpfun riskmanagement in milliseconds.

{% hint style="warning" %}
If you do not want to use stop loss / take profit, set this to 0

Risk management is only enabled using gRPC.
{% endhint %}

* [x] **grpcHeaders :&#x20;*****OPTIONAL*****.**

Allows you to set headers when connecting to grpc node.

example: make sure there are no unnecessary spaces.

```
grpcHeaders = "x-api-key:9e7ed783-942e-4c6b-8dd6-ed47b54719a0"
```

* [x] **extraRPCS:&#x20;*****OPTIONAL***

Are you using Websockets & rpc? Only then is this field important for you, **else ignore.** This is an array that you can add multiple rpcs to , to distribute the load on the rpcs. Example:

```toml
extraRPCS=[
    "https://mainnet.helius-rpc.com/?api-key=4ee57105-c754-4055-b884-6afa6d447ebc",
    "rpc2",
    "rpc3"
]
```

{% hint style="info" %}
Notice the **quotation marks** and the **commas** after each rpc, **except the last one.** If you do not want any extraRPc then delete all RPCs.
{% endhint %}

* [x] turbo

This will put the bot in turbo mode, making it much faster. This is highly recommended to use with gRPC, and will give you lots of 0 blocks. However if you are using websockets, then this mode is not recommended.

* [x] **global\_maximum\_buys\_per\_token:&#x20;*****OPTIONAL***

This setting is **closely** related to a setting in the tasks file `task_maximum_buys_per_token`. In a nutshell this is what this feature achieves:

This allows you to limit the amount of time a token would be bought accross **all** tasks. However it is a bit advanced. Imagine your value is 5. Across all tasks the bot is allowed to buy the token 5 times. If it sells all tokens, then the counter resets. If it sells a percentage of the tokens, the counter decreases by 1, allowing the bot 1 more purchase.

The `task_maximum_buys_per_token`  works the same way, except this is **per** **task.**

* [x] **jito:&#x20;*****OPTIONAL***

This option sends the transaction through the Jito network, which allows you to tip the validators, to increase your landing rates, and reducing landing times. 👍

to enable it, set it to `true` , else to `false`

* [x] **nextblock:&#x20;*****OPTIONAL***

This option sends the transaction through the nextblock network, which allows you to tip the validators, to increase your landing rates, and reducing landing times. 👍

to enable it, set it to `true` , else to `false`

* [x] **temporal:&#x20;*****OPTIONAL***

This option sends the transaction through the **temporal** network, which allows you to tip the validators, to increase your landing rates, and reducing landing times. 👍

to enable it, set it to `true` , else to `false`

* [x] **bloxroute:&#x20;*****OPTIONAL***

This option sends the transaction through the **bloxroute** network, which allows you to tip the validators, to increase your landing rates, and reducing landing times. 👍

to enable it, set it to `true` , else to `false`

* [x] **circular:&#x20;*****OPTIONAL***

&#x20;option sends the transaction through the **circular** network, which allows you to tip the validators, to increase your landing rates, and reducing landing times. 👍

For now, only available in AMSTERDAM region.

to enable it, set it to `true` , else to `false`

{% hint style="info" %}
Highly recommend using a sending service.
{% endhint %}

* [x] **nextblockLocation:&#x20;*****OPTIONAL***

This is only important if you are using **nextblock**, if you aren't **ignore** it. If you are using nextblock then make sure to choose the location that is closest to your server/machine. Locations available to choose from

* frankfurt
* newyork

- [x] &#x20;**bloxroute\_url:&#x20;*****OPTIONAL***

If using bloxroute, the url where the transactions will be sent to.

* [x] bloxroute\_api\_ke&#x79;**:&#x20;*****OPTIONAL***

If using bloxroute, your authorization header key,

* [x] **temporalLocation:&#x20;*****OPTIONAL***

This is only important if you are using **temporal**, if you aren't **ignore** it. If you are using **temporal** then make sure to choose the location that is closest to your server/machine. URL Locations available to choose from

#### Direct HTTP: <a href="#direct-http" id="direct-http"></a>

PITT: [`http://pit1.nozomi.temporal.xyz/?c=`](http://pit1.nozomi.temporal.xyz/?c=)

EWR: [`http://ewr1.nozomi.temporal.xyz/?c=`](http://ewr1.nozomi.temporal.xyz/?c=)

AMS: [`http://ams1.nozomi.temporal.xyz/?c=`](http://ams1.nozomi.temporal.xyz/?c=)

FRA: [`http://fra2.nozomi.temporal.xyz/?c=`](http://fra2.nozomi.temporal.xyz/?c=)

#### Secure HTTPS: <a href="#secure-https" id="secure-https"></a>

AMS: [`https://ams1.secure.nozomi.temporal.xyz/?c=`](https://ams1.secure.nozomi.temporal.xyz/?c=)

EWR: [`https://ewr1.secure.nozomi.temporal.xyz/?c=`](https://ewr1.secure.nozomi.temporal.xyz/?c=)

PITT: [`https://pit1.secure.nozomi.temporal.xyz/?c=`](https://pit1.secure.nozomi.temporal.xyz/?c=)

FRA:  [`https://fra2.secure.nozomi.temporal.xyz/?c=`](https://fra2.secure.nozomi.temporal.xyz/?c=)

* [x] **buy\_tipFee:&#x20;*****OPTIONAL***

Tip that will be used for **buy** transactions

If you decide to use jito or nextblock, then this is the tip fee in **$SOL,** that would be tipped per transaction. Recommended tips varies based on the current market conditions, make sure to always keep your tip fee up to date to **stay competitive.**

**The minimum tip fee is 0.001 $SOL**

* [x] **sell\_tipFee:&#x20;*****OPTIONAL***

Tip that will be used for **sell** transactions

If you decide to use jito or nextblock, then this is the tip fee in **$SOL,** that would be tipped per transaction. Recommended tips varies based on the current market conditions, make sure to always keep your tip fee up to date to **stay competitive.**

**The minimum tip fee is 0.001 $SOL**

***

The following settings are for advanced users, you can freely ignore them in 99% of cases. just leave the default values in there.

* [x] **getTransactionDelayMS:&#x20;*****OPTIONAL***
* [x] **getTransactionRetries:&#x20;*****OPTIONAL***
* [x] **getAccountInfoDelayMS:&#x20;*****OPTIONAL***
* [x] **getAccountInfoRetries:&#x20;*****OPTIONAL***
