https://github.com/tmlnv/layer_zero_bridger
Layer Zero Bridger, automating and managing USDC and USDT transfers across various blockchains.
https://github.com/tmlnv/layer_zero_bridger
cryptocurrency layerzero stargate web3
Last synced: about 23 hours ago
JSON representation
Layer Zero Bridger, automating and managing USDC and USDT transfers across various blockchains.
- Host: GitHub
- URL: https://github.com/tmlnv/layer_zero_bridger
- Owner: tmlnv
- License: mit
- Created: 2023-05-09T19:33:24.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-08-21T09:58:04.000Z (over 1 year ago)
- Last Synced: 2024-08-21T11:22:55.142Z (over 1 year ago)
- Topics: cryptocurrency, layerzero, stargate, web3
- Language: Python
- Homepage:
- Size: 386 KB
- Stars: 34
- Watchers: 1
- Forks: 15
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Layer Zero Bridger
The Layer Zero Bridger is a Python script that automates the process of transferring USDC or USDT (stablecoin cryptocurrencies) between different blockchains (Polygon -> Avalanche -> BSC -> Polygon as a default route). It uses a set of pre-configured wallet addresses to perform transfers in both directions and repeat the process a configurable number of times.
In addition to this, it is also possible to use script for Bungee Refuel, wallet balance checking, new wallets generation and more.

## Supported chains and tokens
- Polygon (USDC, USDT)
- Fantom (USDC)
- Avalanche (USDC, USDT)
- BSC (USDT)
- Arbitrum (USDT, USDC)
- Optimism (USDC)
- Base (USDC)
## Requirements
- Python 3.11
- An understanding of blockchain, cryptocurrency, and how to handle wallets and private keys securely.
- Docker (optional)
## Getting Started
1. Clone the repository:
```bash
git clone https://github.com/tmlnv/layer_zero_bridger.git
cd layer_zero_bridger
```
2. Install the required dependencies:
```bash
pip install -r requirements.txt
```
Or, using Docker:
```bash
docker build -t layer_zero_bridger .
```
3. Configure your wallets and number of cycles:
Specify the wallet keys in the `private_keys.example.env` file and run a command below.
_Note_: keys should be specified with a name for each key in a `KEY=value` way.
```bash
mv private_keys.example.env private_keys.env
```
In the `config.py` file, specify the min and max $ amounts for transferring, the number of transfer cycles you want to run and a $ amount for Bungee Refueling.
```python
AMOUNT_MIN = 100 # Min amount to bridge
AMOUNT_MAX = 150 # Max amount to bridge
# If stated amounts exceed wallet balance, the whole available balance would be bridged
TIMES = 10 # Number of transfer cycles
BUNGEE_AMOUNT = 10 # $ value of native asset to be bridged via Bungee Refuel
```
**Warning: Never disclose your private keys. They are sensitive information.**
## Usage
Execute the `main.py` script:
```bash
python main.py
```
Or, using Docker:
```bash
docker run -v ./private_keys.env:/app/private_keys.env layer_zero_bridger
```
To pass CLI arguments, append them after the image name and private_keys.env mounting:
```bash
docker run -v ./private_keys.env:/app/private_keys.env layer_zero_bridger --mode balance
````
## Operation
The main script performs the following actions for each wallet:
1. After a random delay of 1 to 200 seconds, it initiates a USDC transfer from Polygon to Avalanche.
2. It waits for a random period between 1200 and 1500 seconds.
3. Then, it initiates a USDC transfer from Avalanche to BSC. USDT tokens are received on BSC.
4. It waits for a random period between 1200 and 1500 seconds.
5. Then, it initiates a USDT transfer from BSC back to Polygon. USDC tokens are received on Polygon.
6. It waits for a random period between 100 and 300 seconds.
7. These steps are repeated a predefined number of times (`TIMES` in `config.py`).
The script logs all its actions and reports when each wallet's transfers are done and when all tasks are finished.
## Modules usage
To use separate modules, execute the `main.py` script using `--mode` flag with one of possible options or pass the `--mode` flag followed by the specific option to the Docker run command:
### One way bridge
Execute only separated one-time bridging runs if you want just to transfer assets. Consider token availability on both departure and destination chains. Execute the `main.py` script using `--mode one-way` flag with one of possible options:
- `pf` to bridge from Polygon to Fantom
- `pa` to bridge from Polygon to Avalanche
- `pb` to bridge from Polygon to BSC
- `parb` to bridge from Polygon to Arbitrum
- `po` to bridge from Polygon to Optimism
- `pbase` to bridge from Polygon to Base
- `fp` to bridge from Fantom to Polygon
- `fa` to bridge from Fantom to Avalanche
- `fb` to bridge from Fantom to BSC
- `ap` to bridge from Avalanche to Polygon
- `af` to bridge from Avalanche to Fantom
- `ab` to bridge from Avalanche to BSC
- `aarb` to bridge from Avalanche to Arbitrum
- `ao` to bridge from Avalanche to Optimism
- `abase` to bridge from Avalanche to Base
- `bp` to bridge from BSC to Polygon
- `bf` to bridge from BSC to Fantom
- `ba` to bridge from BSC to Avalanche
- `barb` to bridge from BSC to Arbitrum
- `bo` to bridge from BSC to Optimism
- `bbase` to bridge from BSC to Base
- `arbp` to bridge from Arbitrum to Polygon
- `arba` to bridge from Arbitrum to Avalanche
- `arbb` to bridge from Arbitrum to BSC
- `arbo` to bridge from Arbitrum to Optimism
- `arbbase` to bridge from Arbitrum to Base
- `op` to bridge from Optimism to Polygon
- `oa` to bridge from Optimism to Avalanche
- `ob` to bridge from Optimism to BSC
- `oarb` to bridge from Optimism to Arbitrum
- `obase` to bridge from Optimism to Base
- `basep` to bridge from Base to Polygon
- `basea` to bridge from Base to Avalanche
- `baseb` to bridge from Base to BSC
- `basearb` to bridge from Base to Arbitrum
- `baseo` to bridge from Base to Optimism
Example:
```bash
python main.py --mode one-way pf
```
### New wallet
Generate a new private key and its associated address if you require a fresh wallet. Execute the `main.py` script using `--mode new-wallet` flag.
Example:
```bash
python main.py --mode new-wallet
```
### Checking Balances
Check wallet balances. Execute the `main.py` script using `--mode balance` flag.
Example:
```bash
python main.py --mode balance
```
### Bungee Refuel
Get native tokens on the destination chain to pay fees using Bungee Refuel. Execute the `main.py` script using `--mode refuel` flag with one of possible options:
- `pa` to refuel from Polygon to Avalanche
- `pb` to refuel from Polygon to BSC
- `parb` to refuel from Polygon to Arbitrum
- `po` to refuel from Polygon to Optimism
- `pbase` to refuel from Polygon to Base
- `ap` to refuel from Avalanche to Polygon
- `ab` to refuel from Avalanche to BSC
- `aarb` to refuel from Avalanche to Arbitrum
- `ao` to refuel from Avalanche to Optimism
- `abase` to refuel from Avalanche to Base
- `bp` to refuel from BSC to Polygon
- `ba` to refuel from BSC to Avalanche
- `barb` to refuel from BSC to Arbitrum
- `bo` to refuel from BSC to Optimism
- `bbase` to refuel from BSC to Base
- `arbp` to refuel from Arbitrum to Polygon
- `arba` to refuel from Arbitrum to Avalanche
- `arbb` to refuel from Arbitrum to BSC
- `arbo` to refuel from Arbitrum to Optimism
- `arbbase` to refuel from Arbitrum to Base
- `op` to refuel from Optimism to Polygon
- `oa` to refuel from Optimism to Avalanche
- `ob` to refuel from Optimism to BSC
- `oarb` to refuel from Optimism to Arbitrum
- `obase` to refuel from Optimism to Base
- `basep` to refuel from Base to Polygon
- `basea` to refuel from Base to Avalanche
- `baseb` to refuel from Base to BSC
- `basearb` to refuel from Base to Arbitrum
- `baseo` to refuel from Base to Optimism
Example:
```bash
python main.py --mode refuel pa
```
_Note_: Consider that Bungee Refuel has different limits for different chains.
## Disclaimer
This script is meant for educational purposes. Always ensure you're keeping your private keys secure.
## License
[MIT](https://github.com/tmlnv/layer_zero_bridger/blob/main/LICENSE)