ZERØ by Zerion | Deploy-to-Earn
Привет братишка! Сегодня мы разберёмся в очередной, но отличающийся от других, новой L2 сети от Zerion — ZERØ. Более подробно про сам Zerion и что он из себя представляет я писал тут. Сейчас стоит разобраться в концепции ZERØ, а потом поиграться с кодом. Кто знает, вдруг именно в этот раз нам повезёт.
ZERϴ — это первый роллап (L2), который полностью убирает необходимость газа в транзакциях. Он полностью EVM-совместим и разработан на базе ZK Stack. Если вы перешли сюда из моего поста, значит вы уже знаете, как это всё работает. Если нет, рекомендую к прочтению и заодно можете пройтись по документации.
Почему вообще разворачивать смарт-контракт и играться с ним? Потому что ZERØ находится в стадии тестнета и единственной активностью на данный момент является — Bridge тестовых ETH из Serpolia. А перегонять туда и обратно раз за разом было бы подозрительным, если учитывать возможный критерий при возможном дропе за активность в тестовой сети.
Зато в документации проекта уже есть раздел про деплой и супермаленькая инструкция. Соответственно, умея в код, можно поиграться и нафармить себе транзакции до запуска обычных пользовательских функций.
Гайд написан на базе Ubuntu 22. Если вы пользуетесь MacOS, то повторите всё тоже самое, поменяв лишь менеджер установок с apt на brew от homebrew.
Установка homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Если вы пользуетесь Windows, то устанавку пакетов и библиотек выполняйте через встроенный менеджер winget.
Ну и в конце концов, ChatGPT всегда готов помочь. Команда установки любой библиотеки легко гуглится за одну секунду.
Подготовка
Перед тем, как перейти к основной задаче на сегодня, нам придётся подготовить аккаунт под это. Понадобится тестовый ETH в сети Sepolia.
Конечно, можно пойти на краны Google cloud, Infra, Alchemy и др, чтобы насобирать себе пару копеек, но зачем мучаться.
Восхваляю я Браяна Пеллегрино не из-за дропа, а из-за TestnetBridge, который даёт возможность купить sepETH за реальный ETH. И за ~2$ нам предлагают целых 13 sepETH, пока краны раздают по 0.05. Гем? Гем!
Выводим 1$ в Arbitrum, покупаем тестовые ETH и идём на bridge.zero.network. Тут мы бриджим свои ETH из Sepolia в ZERØ, и переходим к деплою.
В течение n-ого времени советую сделать пару, может и десятку, бриджей туда обратно, лишними не будут.
Deploy
Давайте ещё раз, деплоить мы будем простой контракт токена стандарта ERC20 по офф. документации ZKsync, так как ZERϴ работает на её базе.
Я взял в аренду простенький сервер за 5$. на play2go, с установленным Ubuntu 22-й версии. Вы можете сделать так же, чтобы никаких ошибок не было. А можете и на своей рабочей машине, но тогда за возникшие ошибки я не отвечаю.
Подключение к серверу: (пропустите, если делаете на своём устройстве)
ssh root@ip -L 8080:localhost:8080
Вместо ip — вставляем ip адрес арендованного сервера. (брать тут --> управлять)
Пароль пишем тот, который установили при покупке сервера.
ПРИМЕЧАНИЕ: все команды выполнять по очереди. 1 выделенная строка = 1 команда
Устанавливаем и обновляем пакеты:
sudo apt update && sudo apt upgrade -y
Если будет такое сообщение при установке, указываете цифрами все варианты, кроме последнего и нажимаете Enter.
sudo apt install nano
source ~/.bashrc
sudo apt install git
git init
curl -L https://foundry.paradigm.xyz | bash
source ~/.bashrc
foundryup
source ~/.bashrc
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.bashrc
Устанавливаем Foundry от ZKsync:
curl -L https://raw.githubusercontent.com/matter-labs/foundry-zksync/main/install-foundry-zksync | bash
source ~/.bashrc
forge init erc20 cd erc20
forge install OpenZeppelin/openzeppelin-contracts -no-commit
Создаём смарт-контракт ERC20 токена:
cd src
touch mytoken.sol
nano mytoken.sol
вставляем в открывшемся окне код, указанный ниже:
// SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.19; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; contract mytoken is ERC20, Ownable, ERC20Burnable { constructor() ERC20("Test Token", "TTK") Ownable(msg.sender) { _mint(msg.sender, 100 * 10 ** decimals()); } function mint(address to, uint256 amount) public onlyOwner { _mint(to, amount); } }
нажимаем ctrl+x --> y --> enter, чтобы сохранить файл
cd ..
forge build
forge create --legacy --rpc-url https://rpc.zerion.io/v1/zero-sepolia --chain 4457845 --zksync --private-key "приватный ключ" src/mytoken.sol:mytoken
Вместо "приватный ключ" вставляете приватный ключ от кошелька, с которого хотите сделать деплой.
Смарт контракт развернётся в тестовой сети ZERØ и сразу же заминтит 100 токенов на кошелёк.
Название токена и тикер по умолчанию стоят Test Token и TTK соответственно. При желании, вы можете поменять их на любое другое значение.
Deployer — ваш кошелёк
Deployed to — адрес смарт-контракта
Tx hash — хеш транзакции.
Для того, чтобы заминтить токен в n-ом количестве себе или другому на кошелёк, пишем эту команду:
cast send <contract_address> "mint(address,uint256)" <кошелёк, куда минтим> 100000000000000000000 --rpc-url https://rpc.zerion.io/v1/zero-sepolia --private-key <your_private_key>
Меняем значения на свои и отправляем. После чего идём на https://explorer.zero.network и проверяем результат.
cast send <contract_address> "burn(uint256)" <amount> --rpc-url https://rpc.zerion.io/v1/zero-sepolia --private-key <your_private_key>
Эта команда сжигает выбранное кол-во токенов. Так же, меняем значения на свои и отправляем запрос.
Конец!
В целом, базу я вам выдал. Если есть желание поиграться с вариациями смарт-контрактов и функций, то велкам в ChatGPT и офф. документацию ZKsync. Есть ещё такое.
Я не утверждаю, что проделанные действия как-то повлияют на возможный исход в виде дропа токена от Zerion. Но раз вы решили сделать активность, то это лучший способ, потому что другого функционала пока что не существует.
При любых вопросах обращайтесь в личку или в комменты канала. Всем отвечу!