Trouble shooting
Last updated
Last updated
error reading a body from connection
You can set USE_LOCAL_MARKET_CACHE=true
in your .env file. When this is set to true, it will load the market cache from the local file mainnet.json
. This is useful when you run jup and it's very slow to start, or even fail with error reading a body from connection
. You can update the local file with wget https://cache.jup.ag/markets?v=4 -O mainnet.json
Note by using this, you are responsible to keep the file up to date.
Too Many Requests
, or "statusCode": 429
You are hitting the rate limit of your RPC. This means your configuration is too aggressive for your RPC to handle.
Most free RPCs are not good enough for the bot to run. You need a paid RPC to run the bot.
If you don't have yellowstone url set, try reduce the number of intermedium mints you use. I would suggest to go from 1-2 mints to test
You may see this error if you exclude USDC, it can be safely ignored.
First make sure you are not running two bot instances on the same machine. If you do make sure one of them has DISABLE_LOCAL_JUPITER=true
To fix this issue, run
If it still not resolved, run
It should output a number for you, let's say it's 11020, then run
Generated transaction is too large
It is normal and ok to see this pop up once in a while, but if you are seeing this a lot, you can try
Use a smaller JUP_MAX_ACCOUNTS
Use 2hop and USE_DIRECT_ROUTE_ONLY: true
Remove memo
Don't close your token accounts, each token without a token account in your wallet will make this worse.
There are multiple cases where this can happen.
Check if you have set ENABLE_SIMULATION=false
, simulation is set to true by default, but it will reduce the number of opportunities you see, and if your RPC is slow, that can cause it to not show any opportunities.
Check if your jupiter success rate. If that is close to 0, then there's likly a mismatch between your jupiter and the intermedium tokens you use.
Check your minProfit, opportunities will drop as you raise the value of minProfit A LOT.
This is a big topic and a lot of things can affect it.
The first thing I would suggest is to copy the demo/shyft config from and have something landing first. Then tweak your settings from a working setup.
Performance tuningexplains a lot of the details on what may affect your results.
First check your minProfit setting in base-mint.json
Jito
For jito, it will only land when the transaction succeed. If nothing lands, it may because of a lot of different reasons. Just listing a few here:
You are too slow on reading/sending. The opportunity is already taken by others.
Your tip is not high enough. Note jito rank transactions by raw tip value, so even if you set a high percentage, others may still beat you with a lower tip percentage if their profit is higher. aka 50% of a 2 sol profit is still higher than 90% of a 0.1 sol profit. This usually happens because of different trade size/trade route.
You are sending too many requests to jito. With the bot's setup, you can send about 10 requests/s for jito bundles. If your setup is sending more than that, only 10 of them will get through each second. You should raise your minProfit or reduce the number of trade sizes etc. in this case to reduce the total requests you send.
Spam
For this question, we are specifically talking about having transactions landing. If they already land but failed, that's not what we are talking about here.
For spam, the reason for nothing to land is mostly two reasons:
The bot nees to run on Ubuntu 22+, if you are using a lower version upgrade should resolve your issue.
If your quote time is way higher than these numbers, you are overloading the jupiter api. You can try the following to improve your quote time.
Use a machine with more CPU cores. This may be the most straight forward one, jupiter api is very heavy on CPU usage.
If you are seeing your failed transaction with error contains Profit calculation error
, it's totally normal for spam mode. It means the trade in this transaction is losing you money, aka the output is smaller than the input. The program is designed to fail in this case to prevent you from losing money.
This is from Jup and basically means your transaction don't have any profit.
On Solana, whenever you own a new token, you will need to create a new token account for it, and you need to pay ~0.002 SOL rent for the token account. When using the bot, you will trade a lot of different tokens, hence a lot of token accounts will be created in your account. You can get back the rent by closing the token accounts. There are tools that can help you close all token accounts:
You are not paying a high enough fee. You can control the fees you use in two ways. Either set in your .env file, or set in your BASE)MINTS configs.
The rpc you use to send sucks. Different rpc have very different performance on sending. You can use theto test different rpcs to help you find the best one to use.
If you have set to true, the ideal quote time is single digit ms, and usually acceptable if it's under 30ms. If you have set to false, the quote time is acceptable if it's under 300ms.
Reduce the number of intermedium mints used. This is mostly helpful when you have set to false. As the more mints you have, the more time jupiter needs to find the best route.
Increase . means how often you send a new quote to jupiter for updated price info, increase this number can greatly help to reduce the overall requests you send.
Reduce the number of trade sizes you use(or if you use trade range). The bot will quote with every trade size you define, so reduce the total number of trade sizes will help to reduce the requests you send to jupiter.
Most of the time you can ignore this. This can happen when your quote price is too far away from what it landed onchain. The default compute unit limit is set to make sure 95% of your request succeed without this error. If you want to adjust this you can tweak