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 для деплой контракта и токена :)
Текущие транзакции можно посмотреть нажав на адрес кошелька.
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
- Копируем поле Deployed to, и находим наш контракт в эксплорере Scroll.
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 Должен открыться пустой файл
// 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
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
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
- Получаем адрес контракта. Проверить его можно, найдя в эксплорере