March 7, 2023

SCROLL. Testnet + Deploy Contract + Deploy Token.

https://t.me/goryachiepirojki

TESTNET

ШАГ 1

  • Переходим на страницу, где добавляем в MetaMask сеть Goerli и Scroll Alpha Testnet

ШАГ 2

  • Запрашиваем тестовый эфир в сети Goerli (кран можно использовать любой) - ТЫК

ШАГ 3

  • В разделе Bridge пересылаем токены из сети Goerli в сеть Scroll Aplha

Проводим бридж несколько раз с разными токенами в обе стороны. Обязательно оставьте эфир в Scroll Aplha для деплой контракта и токена :)

Текущие транзакции можно посмотреть нажав на адрес кошелька.

Бридж занял +- 15 минут.

DEPLOY CONTRACT

Для деплоя контракта и токена необходим сервер на Ubuntu.
Тестирование гайда проводилось на самом дешевом сервере Contabo за 6 евро, OC Ubuntu 20.04. На серверах слабее получалось не с первого раза!

Поехали! Каждую команду копируйте по отдельности!

sudo apt update
sudo apt install git 
git clone https://github.com/scroll-tech/scroll-contract-deploy-demo.git
cd scroll-contract-deploy-demo
curl -L https://foundry.paradigm.xyz | bash
source /root/.bashrc
foundryup
forge build --use 0.8.17
  • Копируем и вставляем весь блок кода, изменяя данные на свои (чуть ниже пример заполнения данных)
forge create --rpc-url https://alpha-rpc.scroll.io/l2 \
  --value <Количество эфира для блокировки в контракте> \
  --constructor-args <Время разблокировки> \
  --private-key <Твой приватный ключ> \
  --legacy \
  contracts/Lock.sol:Lock --use 0.8.17

Самым непонятным параметров является время разблокировки, это время в Unix. Вы можете взять число с примера ниже, а можете сделать своё, для этого переходите на данный сайт, вводите дату и время в конвертере и нажимаете Convert.

forge create --rpc-url https://alpha-rpc.scroll.io/l2 \
  --value 0.0000001ether \
  --constructor-args 1684740239 \
  --private-key e47bc48d582324ced164c60fb892bb0fba7221d9618bffea59918ce071a49cde \
  --legacy \
  contracts/Lock.sol:Lock --use 0.8.17
  • Результат должен выглядеть вот так:

DEPLOY TOKEN

В этом пункте гайда мы создадим свой собственный токен, я назову его LabsCrypto, а вы можете задать любое название, главное внимательно читайте!

КАЖДУЮ СТРОЧКУ КОПИРОВАТЬ И ВСТАВЛЯТЬ В ТЕРМИНАЛ ПО ОТДЕЛЬНОСТИ!

cd $HOME
sudo apt update
sudo apt install git
curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
mkdir DeployToken
cd DeployToken
sudo npm init # Нажимаем Enter до самого конца.
sudo npm install --save-dev hardhat
sudo npx hardhat # Нажимаем Enter до самого конца. (JavaScript Project)
npm install --save-dev "@nomicfoundation/hardhat-toolbox@^2.0.0"
npm i @openzeppelin/contracts
cd contracts
nano <Имя Вашего Токена>.sol # Придумываем имя токена. Пример:
# nano LabsCrypto.sol Должен открыться пустой файл
  • Копируем и вставляем в ваш файл весь блок кода, изменяя данные на свои. Сохранить файл после вставки можно комбинацией ctrl+X, далее нажимаем Y + Enter.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract <Имя Вашего Токена> is ERC20 {
    constructor() ERC20("<Имя Вашего Токена>", "<Сокращенное Имя Вашего Токена>") {
        _mint(msg.sender, 1000000000 * 10 ** decimals());
    }
}

Пример моего токена:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract LabsCrypto is ERC20 {
    constructor() ERC20("LabsCrypto", "LBSC") {
        _mint(msg.sender, 1000000000 * 10 ** decimals());
    }
}
  • Копируем весь блок кода ниже, должен открыться пустой файл.
cd $HOME/DeployToken/scripts
rm -rf deploy.js
nano deploy.js
  • Вставляем весь блок кода в наш файл, меняя данные на свои, сохраняем комбинацией клавиш ctrl+x, далее Y и Enter.
const { ethers } = require("hardhat");

async function main() {

  const token = await ethers.getContractFactory("ИМЯ ТВОЕГО ТОКЕНА!");


  const deployedToken = await token.deploy();   

  await deployedToken.deployed();

  console.log(`The smart contract was deployed at: ${deployedToken.address} on Scroll L2!`);
}

main().catch((error) => {
  console.error(error);
  process.exitCode = 1;
});

Пример моего кода:

const { ethers } = require("hardhat");

async function main() {

  const token = await ethers.getContractFactory("LabsCrypto");


  const deployedToken = await token.deploy();   

  await deployedToken.deployed();

  console.log(`The smart contract was deployed at: ${deployedToken.address} on Scroll L2!`);
}

main().catch((error) => {
  console.error(error);
  process.exitCode = 1;
});
  • Продолжаем вводить команды по одной строчке
npm i dotenv
cd $HOME/DeployToken
nano .env
PRIVATE_KEY="ТВОЙ ПРИВАТНЫЙ КЛЮЧ" # Не забудьте изменить ключ на свой
# Сохраняем комбинацией клавиш ctrl+x, далее Y и Enter.
rm -rf hardhat.config.js
nano hardhat.config.js
  • Вставляем весь блок кода в наш файл, НИЧЕГО НЕ МЕНЯЯ, сохраняем комбинацией клавиш ctrl+x, далее Y и Enter.
require("@nomicfoundation/hardhat-toolbox");
require("dotenv").config({ path: ".env" });

const PRIVATE_KEY = process.env.PRIVATE_KEY;

/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
  solidity: "0.8.17",
  networks: {
    scrollL2: {
      url: `https://alpha-rpc.scroll.io/l2`,
      accounts: [PRIVATE_KEY]
    }
  }
};
npx hardhat run scripts/deploy.js --network scrollL2
  • Получаем адрес контракта. Проверить его можно, найдя в эксплорере

Готово! Поздравляю тебя друг!