Скрипт для максимально масштабной работы с ZKSync. Поддержка proxy, проверка газа в Ethereum Mainnet, учёт slippage-настроек для AMM-ок, рандомный сон между транзакциями и approve-ами.
Здесь реализовано 9
модулей на 10
контрактов:
- Cross-chain NFT
- Dmail
- Mute.io
- PancakeSwap
- SpaceFi
- SyncSwap
- TevaEra (ID + NFT)
- Velocore
- WooFi
Среди доступных операций:
- минт NFT:
- TevaEra:
- ID за единоразовую плату 0.0003 ETH (считается отдельным контрактом)
- NFT (бесплатно, платится лишь комиссия сети)
- Cross-chain NFT:
- NFT (бесплатно, платится лишь комиссия сети)
- TevaEra:
- swap-операции:
- Mute:
- ETH -> USDC
- USDC -> ETH
- PancakeSwap:
- ETH -> USDC
- USDC -> ETH
- USDC -> USDT
- USDT -> USDC
- SpaceFi:
- ETH -> USDC
- USDC -> ETH
- SyncSwap:
- ETH -> USDC
- USDC -> ETH
- USDC -> USDT
- USDT -> USDC
- Velocore:
- ETH -> USDC
- USDC -> ETH
- WooFi:
- ETH -> USDC
- USDC -> ETH
- Mute:
- дёшево, но считается: Dmail (отправка писем с кошелька на рандомный адрес из списка)
Во всех модулях реализована случайная пауза между транзакциями и approve-ами, суммы при операциях ETH -> ... от 10% до 25%, при операциях USDC / USDT -> ... проводятся все 100%.
Среди всех реализованных модулей реализована случайная выборка модулей заданной длины, то бишь, из 9 модулей можно задать длину 4
и будут выбраны 4 случайных модуля. Выбор операций также происходит случайным образом.
Проверено на Python 3.8.10, 3.9, 3.11.5!
- Клонировать данный репозиторий:
git clone https://github.com/IAmScRay/zksync && cd zksync
- Установить нужные зависимости:
pip install -r requirements.txt
- Добавить адреса, приватные ключи и URL для proxy-сервера (если таковые имеются) в
resources/addresses.json
- Настроить slippage, временные промежутки для транзакций и т.д. в
resources/config.json
- Запустить:
python3 main.py
Будут запрошены все требуемые данные, а также длина "цепочки" модулей. Если ввести длину -1, то будут проведены все stablecoin-ы в ETH ч/з PancakeSwap.
Иногда при swap-операциях на Mute.io, PancakeSwap бывает ошибка insufficient funds for value + gas * price
. Это означает, что недостаточно ETH для оплаты комиссии, хотя после проверки выпавшего адреса баланса предостаточно. Это бзик логики сети, можно будет обойти повторной отправкой транзакции в сеть (надо будет дописать этот кусочек...)