May 31, 2023

Охота на ретродроп от zkSync

zkSync Lite (ранее zkSync 1.0) — это протокол для масштабируемых низкозатратных платежей на Ethereum, основанный на технологии zkRollup. Он работает в майнете уже более 2 лет, но его минус заключается в отсуствии смарт-контрактов, поэтому сейчас ведется активная разработка zkSync Era (ранее zkSync 2.0) — это роллап Zero Knowledge (ZK), который поддерживает общую совместимость EVM для блокчейна Ethereum. Это означает, что большинство dApps, развернутых на Ethereum, могут быть развернуты и на zkSync Era.

zkSync Lite

Официальный мост

Для начала нам нужно перевести средства в zkSync с сети Ethereum, сделать это можно через официальный мост на сайте.

Дальше можно выбрать мосты: zkSync, Orbiter Finance, LayerSwap или ZigZag, мы рекомендуем использовать именно мост от zkSync.

ZigZag

Это DEX, который уже раздал дроп, но тут проще всего будет набить определенное кол-во транзакций, поэтому нижимаем Swap в самом кошельке и нас перебрасывает на DEX.

Подключаем кошелек MetaMask, с помощью него вы будете подписывать транзакции для обменов.

Выбираем пару ETH к USDC и делаем свапы, советуем делать это не один день, а брать за привычку хотя бы раз в неделю или две, чтобы было больше уникальных дней.

Argent

Не путаем Argent X и Argent, первый — это расширение для браузера в сети StarkNet и L1, а второй — мобильное приложение в сети zkSync. Скачать приложение можно на Google Play и AppStore.

Когда скачали приложение, необходимо зарегистрироваться, переключить на zkSync и в дальнейшем при первых транзакциях надо будет авторизовать кошелек.
Скиньте немного ETH в сети zkSync на новый адрес.

Когда получили токены, сделайте пару обменов в самом приложении и закиньте немного в стейкинг/фарминг. После, можете выводить обратно на свой основной адрес.

NFTs

Создаем CID для NFT.
Регистрируемся на Pinata, затем нажимаем Upload — File.

Вставляем картинку для создания NFT.
Теперь мы видим созданный файл, копируем CID.

Переходим в zkSync Wallet, выбираем раздел NFTs и нажимаем Mint NFT, вставляем свой CID и подтверждаем транзакции.

После этого можно отправить NFT в сеть Ethereum, комиссия конечно не самая маленькая, но это может быть мультипликатором для дропа. Выбираем раздел NFTs и нажимаем Withdraw NFT to L1.

Дальше выбираем NFT и отправляем.

Sismo

Sismo выдает ZK значки для сохранения конфиденциальности и подтверждения сделанных активностей, как POAP, только на ZK и с анонимностью.
На Twitter подписано большое кол-во инфлюенсеров и даже сам Виталий Бутерин.

Сейчас на сайте можете посмотреть, какие бейджи вы можете заминтить. С большой вероятностью, вы сможете заминтить бейдж, который дают за донат на GR15

Также можно получить роли в Discord канале на Guild.

Crew3

С недавнего времени zkSync появился на Crew3, не стоит пропускать данную активность.
В их Discord канале можно получить роли: zkSync Crew3, Roadmappor и другие.

После всех действий можете вывести активы, также как делали вначале, через официальный мост.

Далее действия по экосистеме zkSync Era Mainnet и развертывание смарт-контракта

Официальный мост

Для начала добавляем сеть zkSync Era в MetaMask на сайте. Теперь необходимо перевести активы с Ethereum в zkSync Era на сайте через официальный мост (также можете пользоваться мостом от Orbiter Finance, который мы неоднократно уже упоминали, но чаще ганять объемы рекомендуем именно через официальный мост).

После того, как вы перевели активы в сеть zkSync Era переходим к DEX.

SyncSwap

Быстрая, дешевая и децентрализованная AMM биржа в майнете zkSync Era, мы еще в июле проходили Testnet от этого проекта в zkSync 2.0.

Переходим на сайт и делаем пару свапов (хотим напомнить, что помимо дропа от zkSync мы также ожидаем и от проектов внутри этой экосистемы).

Также во вкладке Pools добавляем ликвидность.

Mute

Еще один AMM DEX, у проекта есть свой токен, но команда zkSync может выделить часть токенов для своей экосистемы, а проекты могут выделить их для нас.

Делаем свапы на сайте.

И добавляем ликводность в пулы на сайте.

SpaceFi

Это кроссчейн web3 платформа с DEX, NFT, Starter и DAO на блокчейнах Layer2.

Сейчас можно посвапать токены на сайте и залить ликвидность.

MintSquare

NFT-маркетплейс, который поддерживаем zkSync и StarkNet (вы могли его видеть в нашей статье по экосистеме StarkNet).

Создаем свою NFT на сайте в zkSync Era Mainnet.

И покупаем/продаем NFTs на сайте.

После всех действий можете вывести активы, также как делали вначале, через официальный мост.

zkSync Name Service

Доменный сервис на zkSync в майнете, за их Twitter следят пока пару инфлюенсеров, возможно еще выростят.

Можно зарегистрировать себе домен на сайте.

На 5+ символов примерная стоимость $7.

Eralend (ранее Nexon Finance)

Лендинговый протокол (участвовали в тестнете, Crew3 и донатили в проект, покупая NFT, за которые получили роли в Discord канале).

Подключаем на сайте кошелек и депозитим ETH или USDC.

Теперь, если не сделали сразу, ставим Collateral напротив токена, который вы задепозитили, чтобы можно было взять в долг под обеспечение этого токена.

И берем в долг ETH или USDC.

Также можно участвовать в Zealy (ранее Crew3) программе по ссылке.

Onchain Trade

DEX в сети zkSync Era, за их Twitter следит официальный аккаунт Aptos и в принципе большое кол-во инфлюенсеров.

Подключаем кошелек на сайте и делаем свапы.

Также во вкладке Pools добавляем токены в пулы.

У проекта уже есть свой токен $OT, но zkSync могут выделить какой-то процент своих токенов и на проекты, которые те в свою очередь могут раздать нам.

MES Protocol

Это DEX следующего поколения на основе книги ордеров, построенный на zkRollup и позволяет пользователям получать удовольствие от торговли как на CEX.

Вы уже должны быть знакомы с этим проектом, мы выкладывали их Testnet и Zealy программу, в которой можно получать роли в их Discord канале

Подключаем кошелек на сайте в сети zkSync Era и депозитим ETH или USDC на платформу.

Затем во вкладке Trade выбираем Sell или Buy, тип ордера и покупаем/продаем ETH.

Также пробуем функцию Convert (привычный для нас интерфейс DEX). Выбираем во вкладке Trade вкладку MES Convert и свапаем токены.

И в конце можете вывести активы с помощью Withdraw там же где и депозитили средства, но еще нужно будет заклеймить их, как на скрине ниже.

Maverick Protocol

Это AMM DEX с целью улучшить контроль над капиталом на рынке ликвидности, работает в сети Ethereum и zkSync Era.
В честь запуска на zkSync Era можно забрать NFT на Galxe до 17 мая и получить за эту NFT роль в их Discord канале.

Чтобы забрать NFT необходимо сделать свап на сумму более, чем $10 и внести ликвидность, чтобы сумма одного активна превышала $10.

Коннектим кошелек на их платформе и делаем свап.

И добавляем ликвидность во вкладке Pools.

После забираем NFT на Galxe и в их Discord канале в ветке #collabland-join забираем роль.

Tevaera

Игровая EVM-экосистема в сети zkSync, вы уже должны быть знакомы с ним, когда читали гайд по zkSync Lite.
Сейчас команда перешла полностью на zkSync Era и выпустила новые игры.

Регистрируемся у них на платформе, минтим себе Citizen ID и NFT, которые они предлагают.

После чего смотрим, какие есть активные игры и играем.

Сейчас у них проходит ивент до 19 мая, в котором разыгрывают Phoenix NFTs, которых всего будет 5000 NFT.
1500 распределят среди пользователей, которые будут играть в TevaRun до 19 мая и остальные разыграют, когда запустится TevaDex и TevaMarket, подробнее читаем в статье.

За анонсами следим в Discord канале.

Развертывание смарт-контракта на zkSync

Аренда сервера

Арендуем сервер, например на PQ хостинг или на любой другой платформе.
Минимальные характеристики для развертывания контракта: 1 CPU, 1 GB RAM и 30 GB SSD.

При оплате сервера необходимо ввести пароль, с помощью которого вы будете подключаться к серверу. После покупки, вам на почту придет письмо с данными вашего сервера.

Подключение к серверу

Для того, чтобы подключиться к серверу на Windows потребуется программа PuTTY:

  • В “Host Name” вводим IP вашего сервера и нажимаем “Open”;
  • В открывшемся окне прописываем команду: root;
  • Жмем “Enter” и вставляем пароль от сервера, затем “Enter”.

На MacOS просто запускаем программу Terminal:

  • Заходим на сервер командой: ssh root@IP_ADDRESS, IP_ADDRESS меняем на IP сервера;
  • Дальше вводим “yes”, жмем “Enter” и вставляем пароль от сервера (введеный пароль будет скрыт иконкой с ключом). Жмем “Enter”.

Приступаем к развертыванию смарт-контракта

В данной статье мы будем брать все коды из официальных ресурсов zkSync. Но некоторые коды мы чуть изменим и в процессе покажем изменения и для чего мы это сделали, чтобы отбросить ваши сомнения, так как действия происходят в майнете и вам придется вписывать свой ключ от кошелька в код! Кто не готов — не начинайте.

Обновляемся:

sudo apt update
sudo apt upgrade

Устанавливаем загрузчик:

sudo apt install -y curl

Запускаем скрипт установки для Node.js 18 (LTS) и устанавливаем:

curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs

Далее выполняем команды c директориями:

mkdir greeter-example
cd greeter-example
apt install cmdtest

Нужно ввести Y, чтобы подтвердить действие.
Устанавливаем hardhat:

npm init --y
npm install --save-dev hardhat
npm install -g [email protected]
npx hardhat

Выбираем Create a TypeScript project, нажимаем Enter и далее два ответа Y:

Продолжаем команды:

mkdir greeter
cd greeter
npm init -y
npm add -D typescript ts-node @types/node ethers@^5.7.2 zksync-web3 @ethersproject/hash @ethersproject/web hardhat @matterlabs/hardhat-zksync-solc @matterlabs/hardhat-zksync-deploy
vim hardhat.config.ts

После крайней команды у нас откроется файл в нашей папке для деплоя, в него мы должны вставить код, для этого нажимаем i для того, чтобы мы могли редактировать и вставляем код, который указан ниже. Данный код мы брали по ссылкеи изменили версию и сеть на майнет.

import "@matterlabs/hardhat-zksync-deploy"; import "@matterlabs/hardhat-zksync-solc"; module.exports = { zksolc: { version: "1.3.7", compilerSource: "binary", settings: {}, }, defaultNetwork: "zkMainnet", networks: { zkMainnet: { url: "https://mainnet.era.zksync.io", ethNetwork: "https://eth.llamarpc.com", zksync: true, }, }, solidity: { version: "0.8.19", }, };

Далее нажимаем Esc вводим :wq и Enter.Продолжаем набирать команды.

mkdir contracts
mkdir deploy
vim contracts/Greeter.sol

После крайней команды у нас откроется файл, нажимаем снова i и вставляем код, который указан ниже, данный код мы брали по ссылке.

//SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.0;

contract Greeter { string private greeting;

constructor(string memory _greeting) { greeting = _greeting; }

function greet() public view returns (string memory) { return greeting; }

function setGreeting(string memory _greeting) public { greeting = _greeting; } }

Далее нажимаем Esc вводим :wq и Enter.Продолжаем набирать команды.

npx hardhat compile
vim deploy/deploy.ts

После крайней команды у нас откроется файл, нажимаем снова i и вставляем код, который указан ниже, данный код мы брали по ссылке в шестом пункте и внесли небольшие изменения, а именно строчку (console.log(greeterContract.interface.encodeDeploy([greeting]));) ее мы взяли по ссылке, так как нам нужно вести на экран в конце значения constructor arguments для того, чтобы в дальнейшем верифицировать наш контракт в скане. Также убрали автоматическое пополнение с L1 на L2 сеть, так как надеемся, что у вас есть ETH в сети zkSync Era.

Самое важное!! В коде приведенном ниже вместо <WALLET-PRIVATE-KEY> вставляем свой ключ от кошелька.

import { utils, Wallet } from "zksync-web3"; import * as ethers from "ethers"; import { HardhatRuntimeEnvironment } from "hardhat/types"; import { Deployer } from "@matterlabs/hardhat-zksync-deploy";

// An example of a deploy script that will deploy and call a simple contract. export default async function (hre: HardhatRuntimeEnvironment) { console.log(`Running deploy script for the Greeter contract`);

// Initialize the wallet. const wallet = new Wallet("<WALLET-PRIVATE-KEY>");

// Create deployer object and load the artifact of the contract we want to deploy. const deployer = new Deployer(hre, wallet); const artifact = await deployer.loadArtifact("Greeter");

// Deploy this contract. The returned object will be of a `Contract` type, similarly to ones in `ethers`. // `greeting` is an argument for contract constructor. const greeting = "Hi there!"; const greeterContract = await deployer.deploy(artifact, [greeting]); console.log(greeterContract.interface.encodeDeploy([greeting]));

// Show the contract info. const contractAddress = greeterContract.address; console.log(`${artifact.contractName} was deployed to ${contractAddress}`);

// Call the deployed contract. const greetingFromContract = await greeterContract.greet(); if (greetingFromContract == greeting) { console.log(`Contract greets us with ${greeting}!`); } else { console.error(`Contract said something unexpected: ${greetingFromContract}`); }

// Edit the greeting of the contract const newGreeting = "Hey guys"; const setNewGreetingHandle = await greeterContract.setGreeting(newGreeting); await setNewGreetingHandle.wait();

const newGreetingFromContract = await greeterContract.greet(); if (newGreetingFromContract == newGreeting) { console.log(`Contract greets us with ${newGreeting}!`); } else { console.error(`Contract said something unexpected: ${newGreetingFromContract}`); } }

Далее нажимаем Esc вводим :wq и Enter.Вводим команду для деплоя контракта:

npx hardhat deploy-zksync

Успешное развертывание должно выглядить так:

Сохраняем себе данные из своего терминала:

  1. Сonstructor arguments — это 5я строчка снизу, она самая длинная (это то, ради чего мы добавляли строчку в код);
  2. Контракт — это 4я строчка снизу;
  3. Сompiler — 0.8.19;
  4. Zksolc Version — 1.3.7.

Созданный контракт можем проверить перейдя в скан zkSync Era по ссылке и вставить свой смарт контракт.

Готово, мы развернули смарт-контракт!