Деплоим контракт и создаем свой токен в сети Scroll
Для начала арендуем дешевенький сервер с операционной системой Ubuntu 20.04.
Я буду деплоить контракт на сервере с такими характеристиками:
- 3 ядра
- 4 GB RAM
- 80GB SSD
Разворачиваем смарт-контракт
Каждую команду прописывайте по отдельности
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://prealpha-rpc.scroll.io/l2 \ --value <Кол-во эфира> \ --constructor-args <Время блокировки> \ --private-key <Приватный ключ> \ --legacy \ contracts/Lock.sol:Lock --use 0.8.17
Не забудьте, что знаки <> используются только для указания значений, которые вам нужно изменить. В конечном коде их не должно быть
forge create --rpc-url https://prealpha-rpc.scroll.io/l2 \ --value 0.0001ether \ --constructor-args 1676137899 \ --private-key a689efaf85m325cebffa145661a82324c9618bffeae47be578259cbfffea96 \ --legacy \ contracts/Lock.sol:Lock --use 0.8.17
Время блокировки - это время, когда разблокируются ваши токены в нашем смарт-контраке. Вы можете сами указать это значение, воспользовавшись этим сайтом. Выставите необходимую дату и время, а затем нажмите кнопку "Convert". Необходимое значение отобразится в строке "Unix Timestamp", которое нужно вставить в блок кода
Приватный ключ можно взять, воспользовавшись этим гайдом
После того, как вы вставили заполненный блок кода, дождитесь окончания развертывания смарт-контракта. Подтверждением будет считаться вот такой текст:
Для проверки скопируйте поле "Deployed to" и вставьте на сайт
Если транзакция существует и помечена как Contract Creation - поздравляю, вы развернули смарт-контракт
Создаем токен
Каждую команду прописывайте по отдельности
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 и соглашаемся со всеми установками npm install --save-dev "@nomicfoundation/hardhat-toolbox@^2.0.0" npm i @openzeppelin/contracts cd contracts nano <Имя Вашего Токена>.sol # Замените значение на свое название токена
Если все прошло успешно, у вас должен открыться пустой файл, в который вы вписываете следующее:
// 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()); } }
Не забудьте, что знаки <> используются только для указания значений, которые вам нужно изменить. В конечном коде их не должно быть
Сохраняем файл комбинацией Ctrl+X, далее нажимаем Y и подтверждаем кнопкой Enter
Копируем весь блок кода, после которого должен открыться пустой файл
cd $HOME/DeployToken/scripts rm -rf deploy.js nano deploy.js
В открывшийся файл вставляем следующий блок, меняя значение токена на ваше
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; });
Сохраняем файл комбинацией Ctrl+X, далее нажимаем Y и подтверждаем кнопкой Enter
Следующие команды копируем по одной, заменив значение приватного ключа
npm i dotenv cd $HOME/DeployToken nano .env PRIVATE_KEY="<Приватный ключ>"
Сохраняем комбинацией Ctrl+X, далее нажимаем Y и подтверждаем кнопкой Enter
Эти две команды тоже вводим по очереди
rm -rf hardhat.config.js nano hardhat.config.js
Почти закончили! Осталось совсем чуть-чуть)
Копируем одним блоком, ничего не меняя
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://prealpha.scroll.io/l2`, accounts: [PRIVATE_KEY] } } };
Сохраняем через Ctrl+X, Y и Enter
Вводим последнюю команду, чтобы получить наш адрес контракта
npx hardhat run scripts/deploy.js --network scrollL2
Копируем появившийся адрес и ищем его в эксплорере
Готово! Сервер можно удалить или сбросить его, чтобы прогнать следующий кошелек