Releases: AlexRubik/rude-bot-solana
v0.2.7-alpha - 1st iteration Jito Bundles: Fixed Tip, Commitment
WARNING: Profit checking smart contract has not been modified to account for the Jito Bundle Tip. This version allows you to set a custom jito bundle tip.
-
this version is strictly for testing / proof of concept
-
new .env variable: BLOCK_ENGINE_URL
All possible values:amsterdam.mainnet.block-engine.jito.wtf | frankfurt.mainnet.block-engine.jito.wtf | ny.mainnet.block-engine.jito.wtf | tokyo.mainnet.block-engine.jito.wtf
-
new baseConfig.json object property: bundleTipLamports
Setting this to 0 will disable bundles and the transaction will be sent normally, witthout jito.
You will have to add these to your .env file if you want to use them, I'm not going to include them in the default file because I don't want to confuse people:
-
new .env variable: NORMAL_COMMITMENT
default isprocessed
-
new .env variable: BUNDLE_COMMITMENT
default isconfirmed
READ ABOUT COMMITMENT HERE: https://solana.com/docs/rpc#configuring-state-commitment
v0.2.6-alpha - Minor performance improvement
- Changed some logic to slightly improve performance for users on the budget setup: Setup Video
- Removed the rawTx log. You can turn it back on by putting this in the .env: DEBUG=true
- Cleaned up the auto populate createAtaBlacklist.json
- For those that want to play with the slippage values, you can add these to your .env:
MIN_SLIPPAGE_BPS=2000
MAX_SLIPPAGE_BPS=9000
The values are basis points (integers). If you don't have these variables in your .env then the values above are assigned by default.
v0.2.5-alpha - Auto populate createAtaBlacklist.json
Minimal convenience update
- New .env variable: AUTO_CREATE_ATA_BLACKLIST
- When true, the bot will get all your token mints on startup and put them in createAtaBlacklist.json
- The output is a bit buggy but if you see "Successfully wrote mint addresses to createAtaBlacklist.json" then it probably worked. You can also check the file to see if it worked.
- If you have a wSOL account, please remember to set WRAP_UNWRAP_SOL_ENABLED=false
v0.2.4-alpha - Fee Reduction, Dynamic Priority Fee, RPC Spam, WRAP_UNWRAP_SOL_ENABLED
- Bot Fee is now 10% - 33% of profit, previously 16% - 50%
Dynamic Priority Fee
- Based on potential profit scaled for 10% as max
- So if the potential profit for an arb is >= 10% then the maxFeeLamports will be used. Let me know if you want a config value for this
"minFeeLamports": 1000,
"maxFeeLamports": 3000
RPC Spamming
- New variables in .env: SPAM_RPCS_ENABLED, SEND_TXN_RPC_URL
- New file: rpcs.json
- Put all the RPC URLs you want to spam each transaction to (once for each RPC URL) in the rpcs.json file and set SPAM_RPCS_ENABLED=true in the .env
- When the spam env is false, the bot will use another new env variable, SEND_TXN_RPC_URL, to send transactions
- RPC_URL is used for all other non send txn interactions with the blockchain
WRAP_UNWRAP_SOL_ENABLED
- In all past versions, this has been defaulted to true
- When setting this to false the bot will assume you have a WSOL account (the token account for SOL). We'll see how to open a WSOL account below
- WARNING: all past versions of the bot will close a WSOL account on a successful transaction. So if you are running multiple versions, you will have conflicts when this variable = false
Open and fund a WSOL account
- Install and configure the Solana CLI
spl-token create-account So11111111111111111111111111111111111111112
- Send SOL to your new WSOL token account
spl-token sync-native
Docs: https://rude-bot-org.gitbook.io/rude-solana-arbitrage-bot
v0.2.3-alpha - Worker threads!
- ADD: WORKER_THREADS_ENABLED .env variable! Spawns a worker thread for each baseConfig object that will run in parallel to each other. In theory, this should significantly improve performance for everyone with non rate limited connections
- MODIFICATION: priority fee and profit bps threshold for simulation moved to baseConfig so now you can have unique values for those variables instead of them applying to all baseConfig objects like they were doing in .env
- TIP: you can have multiple baseConfig objects using the same mint. If you want to capture trade sizes for USDC from 1 - 100, try creating 4 baseConfig objects with min max ranges of 1-25, 26-50, 51-75, 76-100
- ADD: createAtaBlacklist.json; you can add mints to this file for the tokens you already have token accounts for so that the bot doesn't add an instruction to try to create a new token account. Less instructions is good
Documentation: https://rude-bot-org.gitbook.io/rude-solana-arbitrage-bot
v0.2.2-alpha
- Windows users can use WSL. Refer to the bottom of these release notes.
- Added maxAccounts value in baseConfig. Read about maxAccounts here
- maxAccounts is a param for each quote request and each arb requests 2 quotes. Transactions cannot have more than 64 accounts, so don't make the maxAccounts value higher than 32. I use 28 for this value and all previous versions of rude bot are defaulted to 28.
- Added MAX_RETRIES to .env. Read about max retries here
- nohup BUG! There is a known bug that causes the bot to stop after some arbitrary time when using nohup. A temp fix would be to use systemctl to create a service that will restart the bot every 2 hours
Documentation: https://rude-bot-org.gitbook.io/rude-solana-arbitrage-bot
v0.2.1-alpha - arb any token
- fixed performance bug
- added profitBps in config
- added directRoutesOnly in config
- removed smallestUnit in config
- added logs for the jup errors so you can see what tokenBs in the includedMints.json don't have routes for what you're attempting
- todo: config for max accounts
- todo: .env page in gitbook is now outdated with this version, see bottom of these notes
- todo: config for sim bps
We will still need to test this, but I think it might be slightly more efficient to run multiple instances with one token enabled (different token for each instance if that's your strategy) instead of one instance with multiple tokens enabled.
directRoutesOnly tip:
As a reminder, the swaps that the bot looks for look like this: TokenA -> TokenB, TokenB -> TokenA
includedMints.json are all the TokenBs. So if you enabled directRoutesOnly for a base token like WEN and you have some random shitcoin BALLZ in your includedMints then when you ask jup for WEN -> BALLZ, it's very likely this direct route does not exist and jup will tell you by throwing an error (look at the url. the mint that isn't your base token is probly the one causing the problem). If you want to prevent the error from appearing (temp fix) then you can remove the TokenBs from includedMints.json that cause the error. Sadly, this will affect ALL of your base tokens. Unless you add/remove accordingly for each instance you start. Sounds very annoying, I know. This will all be accounted for in later versions and you won't have to think about any of this. But for now, we're alpha testing!!! LFG!
Remember to read the gitbook and do some searching in there before asking me questions, thanks! I know it doesn't have everything but there's still some useful info in there <3
v0.1.1-alpha - status undefined hot fix
- hot fix for status undefined bug that was causing crashes
- going to start including the zip and the executable separately in these releases so you don't have to go through the whole zip file process and you can just drop the executable in your existing working directory
v0.1-alpha
- fixed status undefined bug that was causing bot to crash
- fixed flash loan bug
First Alpha Release
- There is a known bug on flash loans, don't use for now