The software is a multi-module programme designed for automated operations in the BASE blockchain ecosystem. Modules can be combined and configured individually, allowing flexible and personalized workflows.
- Uniswap: Automatic decentralized exchange operations.
- PancakeSwap: Automatic decentralized exchange operations.
- Woofi: Automatic decentralized exchange operations.
- Dmail: Generate and send decentralized mails.
- Zora: Automatic NFT minting on Zora.
- NFT2ME: Automated NFT minting for NFT2ME contracts.
- Aave: Interaction with liquidity pools on Aave.
- Moonwell: Liquidity pool management on Moonwell.
- BaseNames: Domain minting for BASE blockchain.
- Collector: Token collection and aggregation.
- Refuel: Automatically tops up ETH when topping up on a network and dynamically tops up ETH from another network if ETH unexpectedly runs out.
- Memory: Tracks and adapts operations dynamically.
(More features coming soon!)
- Go (Version 1.22.2 or newer)
- Git (for cloning the repository)
- Optional:
make
for simplified build and run commands.
- Clone the repository:
git clone https://github.com/ssq0-0/base.git
cd base
go mod download
go build -o base ./app/main.go
- Run the application:
./base
- Or use make(if installed):
make run
- Or use docker:
docker build -t base:latest .
docker run --rm \
-v $(pwd)/account/account_config.json:/base/account/account_config.json \
-v $(pwd)/app/process/state.json:/base/app/process/state.json \
base:latest
The configuration file (config.json
) is essential for customizing the behavior of the software. Below is a detailed explanation of its fields and their usage.
This section defines the wallets used by the software. Each wallet is described by the following fields:
private_key
: The private key of your wallet. Required for signing transactions.endpoint
: The address to which all funds will be transferred at the end of the collector module.revert_allowance
: Rollback of approves(true/false).base_name
: (Optional) If you need to mint a domain on BASE, specify the domain name here. For the cheapest options, use names with 10 or more characters.used_range
: The percentage of your balance to be used for swaps. For example, with a balance of $100 andused_range
set to 70, $70 will be used for each swap. It is not recommended to set this value above 90%.used_range_in_pools
: Similar toused_range
, but for liquidity pools (Aave & Moonwell). Recommended value is no more than 30% when combining multiple modules.bridge
: If bridging is required, specify the target network (e.g.,optimism
,arbitrum
).token
: The token to be bridged (e.g.,usdt
,usdc
). Note: Bridging uses Stargate, and the resulting token in the BASE network will beusdbc
.action_num_min
/action_num_max
: Minimum and maximum number of actions to be performed. A random number within this range will be chosen.action_time_window_min
/action_time_window_max
: Minimum and maximum delay between actions, in minutes.
Modules define which functionalities of the software are enabled. Set a module to true
to enable it, or false
to disable it.
- Avoid enabling all modules simultaneously.
- The
collector_mod
should always be used separately from other modules.
Example:
"modules": {
"uniswap": true,
"pancake": false,
"woofi": false,
"refuel":false,
"dmail": false,
"zora": true,
"nft2me": false,
"aave": true,
"moonwell": false,
"basenames": true,
"collector_mod": false
}
The nft_ca
section defines which NFT contracts will be used for minting operations. Each entry specifies the contract address and the price for minting.
-
nf2me
:- Specify contracts for NFT2ME.
- Include the price for minting each NFT. For free NFTs, specify
0.0002
to cover gas fees.
-
zora
:- Specify contracts for Zora.
- Provide the minting price in Sparks (Zora's internal currency).
"nft_ca": {
"nf2me": {
"0xContractAddress1": "0.0002",
"0xContractAddress2": "0.0002"
},
"zora": {
"0xContractAddress3": "118.98",
"0xContractAddress4": "78.9"
}
}
-
Contract Updates:
- After each session, update the contract list to prevent duplication.
- The software automatically removes contracts from the list once they are assigned to an account for minting.
-
Multi-Account Safety:
- When using multiple accounts, contracts are assigned uniquely per account during the same session, ensuring no overlaps.
-
NFT2ME Pricing:
- For free NFTs, always specify
0.0002
as the price to cover gas fees.
- For free NFTs, always specify
-
Zora Pricing:
- Zora uses Sparks as its currency.
Here is a complete example of the config.json
file, incorporating all wallet, module, and NFT contract settings:
{
"wallets": [
{
"private_key": "your_private_key_here",
"endpoint":"you_destination_address",
"revert_allowance":true,
"base_name": "example-domain",
"used_range": 70,
"used_range_in_pools": 25,
"bridge": "optimism",
"token": "usdt",
"action_num_min": 15,
"action_num_max": 20,
"action_time_window_min": 1,
"action_time_window_max": 5
}
],
"modules": {
"uniswap": true,
"pancake": false,
"woofi": false,
"refuel":false,
"dmail": false,
"zora": true,
"nft2me": true,
"aave": true,
"moonwell": false,
"basenames": true,
"collector_mod": false
},
"nft_ca": {
"nf2me": {
"0xContractAddress1": "0.0002",
"0xContractAddress2": "0.0002"
},
"zora": {
"0xContractAddress3": "150.0",
"0xContractAddress4": "101.2"
}
}
}