zkSync Era Mainnet
Экспансия L2 рынка: в поисках ретро!
На очереди очередное облегчение для Виталика - zkSync.
Задача - захантить ретродроп.
Ориентировочные расходы 50-100$ на кошелек + пару сот оборотных - это минимум, объемы накручивать лучше постепенно и выйти на тысячи-десятки тысяч.
1. проходим квесты - https://layer3.xyz/category/zksync
! внимательно со слипеджем и прайсимпактом
можно увеличить расходы неосторожно !
2. Деплоим нфт набивая транзацкии экономя бюджет
Тут для обывателя тяжелее, так что по пунктам:
- берем сервер с минимальными настройками убунту 20.04, я беру посуточно у сервиса с рашки vdsina.ru, но можно брать тот же digital ocean, например
- после того, как сервер установлен, заходим в терминал и начинаем каждую команду по очереди:
sudo apt-get update && sudo apt-get install -y
curl -sL https://deb.nodesource.com/setup_16.x -o /tmp/nodesource_setup.sh
sudo bash /tmp/nodesource_setup.sh
sudo apt-get install -y nodejs
После установки данного блока начинаем деплой (каждую команду отдельно):
npm install --save-dev hardhat
(выбираем Create a TypeScript project, затем Enter и несколько раз У)
npm add -D typescript ts-node @types/node ethers@^5.7.2 zksync-web3@^0.14.3 @ethersproject/hash @ethersproject/web hardhat @matterlabs/hardhat-zksync-solc @matterlabs/hardhat-zksync-deploy
После данной команды вставляем код под нфт. Жмем і для включения редактирования, копируем и вставляем код ниже, после чего выходим путем нажатия Esc и вводим :wq.
import "@matterlabs/hardhat-zksync-deploy";
import "@matterlabs/hardhat-zksync-solc";
module.exports = {
zksolc: {
version: "1.3.6",
compilerSource: "binary",
settings: {},
},
defaultNetwork: "zkSyncMainnet",
networks: {
zkSyncMainnet: {
url: "https://zksync2-mainnet.zksync.io",
ethNetwork: "mainnet",
zksync: true,
},
},
solidity: {
version: "0.8.17",
},
};
После того как вставили и вышли продолжаем:
Жмем і для редактирования и вставляем данный код:
//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;
}
}
Жмем і для редактирования и вставляем данный код, перед этим удаляем текст со скобками ("<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]);
// 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
Пару минут и видим такое: Greeter was deployed to ... Contract greets us with Hi there!! Contract greets us with Hey guys!