Тестнет Scroll всі активності, працюємо на дроп.
Зміст статті:
1. Що таке Scroll?
2. Гільдія Scroll, таємна роль.
3. Підготовка до тестнету.
4. Scroll Bridge.
5. Uniswap Scroll. Своп та ліквідність.
6. Ігри які працюють на Scroll.
7. Розгортаємо контракт у мережі Scroll.
8. Деплой токена, створюємо cвій токен.
9. Заливаємо ліквідність нашого токену.
Що таке Scroll?
Scroll - це zkEVM Layer 2 протокол, який призначений вирішити проблеми з масштабованістю ETH. Його мета – надати користувачам майже миттєві та економічні транзакції, а також підтримувати високі властивості безпеки, які пропонує мережа Ethereum.
Вчора вийшла новина про те, що Scroll залучив $50 млн. при оцінці $1,8 млрд., і серед інвесторів були такі фонди, як Polychain Capital, Bixin Ventures, Maple Leaf Capital, Santiago Santos та інші.
На твіттер проекту підписано чимало впливових особистостей, серед яких: Vitalik Buterin, Stani Kulechov та інші.
Проект Scroll перейшов з преальфа тесту до альфа тесту на днях, тому варто обовязково ним скористатися, сподіваючись на дроп.
Гільдія Scroll, таємна роль.
Зовсім недавно команда створила гільдію, в якій на користувачів чекає секретна роль (більше інформації буде пізніше), вступаємо в Discord канал і отримуємо роль на Guild.
Підготовка до тестнету
1). Перейдіть на сайт та підключіть Meta Mask "Сonnect wallet".
Додайте: Layer 1 та Layer 2 мережі в Metamask.
2). Запитуємо тестові токени у мережі Goerli. Попередньо логінимся в Alchemy через Google:
Scroll Bridge
Ми отримали токени в мережі Goerli, тепер потрібно перегнати їх у Scroll. Зворотну транзакцію також краще зробити, це займе близько 10 хвилин:
1). Переходимо на сайт. Переведіть ETH з Goerli до тестової мережі Scroll.
2). Відразу робимо зворотну транзакцію для взаємодії:
3). Відправляємо трішки токенів своєму другові в мережі Scroll через Metamask:
Uniswap Scroll. Своп та ліквідність.
1) Переходимо на Uniswap Scroll. Міняємо ETH на будь який токен від юзерів:
0xc4D6FA12FF19bf74Ced9616EAb8936696CcD3d3A
0xA0D71B9877f44C744546D649147E3F1e70a93760
Це не офіційні токени, але потрібно зробити своп, щоб потім залити ліквідність
(всі токени задеплоєні користувачами, нижче по гайду теж створимо свій).
2) Переходимо до ліквідності "Pool"
4) Після чого нажимаємо Preview і підтверджуємо транзакцію в Metamask.
Ігри які працюють на Scroll
Є ще різні ігри, в які ви можете пограти в мережі Scroll тестнет:
• Хрестики - Нолики - https://onchain-tictactoe.vercel.app/
• Scroll Guardians - https://scroll-guardians.vercel.app/
• Scroll Kingdoms - https://scroll-237a2.web.app/
• Scroll чат - https://scroll-chat-frontend.vercel.app/, відповіді на питання про Scroll, але тільки на англійському.
• Scroll kingofthescroll - https://www.kingofthescroll.com/
Розгортаємо контракт у мережі Scroll.
1). Переходимо до студії Remix, відкриваємо папку Contracts і створюємо в ній новий файл під назвою EtherWallet.sol:
2) У вікно, що з'явилося, необхідно вставити код, який копіюємо звідси:
3) Переходимо на вкладку Solidity Compiler, вибираємо версію 0.7.4 та компілюємо наш файл:
4) Далі переходимо на вкладку Deploy and run transaction. У пункті Environment ставимо Injected Provider – Metamask, перевіряємо чи в Мета Маск мережа Scroll testnet та натискаємо Deploy:
5) Необхідно буде підтвердити транзакцію в Metamask. У разі успіху ви побачите наступне повідомлення внизу екрана:
На цьому все, ми розгорнули контракт в мережі Scroll тестнет.
Деплой токена, створюємо cвій токен
Процедура буде подібна, добавиться тільки декілька нових дій.
1). Переходимо знову до студії Remix, створюємо новий файл під назвою ERC20.sol.
2) У вікно, що з'явилося, необхідно вставити код, я залишу його нижче:
// SPDX-License-Identifier: MIT
// WTF Solidity by 0xAA
pragma solidity ^0.8.4;
interface IERC20 {
/**
* @dev 释放条件:当 `value` 单位的货币从账户 (`from`) 转账到另一账户 (`to`)时.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev 释放条件:当 `value` 单位的货币从账户 (`owner`) 授权给另一账户 (`spender`)时.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev 返回代币总供给.
*/
function totalSupply() external view returns (uint256);
/**
* @dev 返回账户`account`所持有的代币数.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev 转账 `amount` 单位代币,从调用者账户到另一账户 `to`.
*
* 如果成功,返回 `true`.
*
* 释放 {Transfer} 事件.
*/
function transfer(address to, uint256 amount) external returns (bool);
/**
* @dev 返回`owner`账户授权给`spender`账户的额度,默认为0。
*
* 当{approve} 或 {transferFrom} 被调用时,`allowance`会改变.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev 调用者账户给`spender`账户授权 `amount`数量代币。
*
* 如果成功,返回 `true`.
*
* 释放 {Approval} 事件.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev 通过授权机制,从`from`账户向`to`账户转账`amount`数量代币。转账的部分会从调用者的`allowance`中扣除。
*
* 如果成功,返回 `true`.
*
* 释放 {Transfer} 事件.
*/
function transferFrom(
address from,
address to,
uint256 amount
) external returns (bool);
}
contract ERC20 is IERC20 {
mapping(address => uint256) public override balanceOf;
mapping(address => mapping(address => uint256)) public override allowance;
uint256 public override totalSupply; // 代币总供给
string public name; // 名称
string public symbol; // 符号
uint8 public decimals = 18; // 小数位数
address public owner;
// @dev 在合约部署的时候实现合约名称和符号
constructor(string memory name_, string memory symbol_){
name = name_;
symbol = symbol_;
owner = msg.sender;
}
// @dev 实现`transfer`函数,代币转账逻辑
function transfer(address recipient, uint amount) external override returns (bool) {
balanceOf[msg.sender] -= amount;
balanceOf[recipient] += amount;
emit Transfer(msg.sender, recipient, amount);
return true;
}
// @dev 实现 `approve` 函数, 代币授权逻辑
function approve(address spender, uint amount) external override returns (bool) {
allowance[msg.sender][spender] = amount;
emit Approval(msg.sender, spender, amount);
return true;
}
// @dev 实现`transferFrom`函数,代币授权转账逻辑
function transferFrom(
address sender,
address recipient,
uint amount
) external override returns (bool) {
allowance[sender][msg.sender] -= amount;
balanceOf[sender] -= amount;
balanceOf[recipient] += amount;
emit Transfer(sender, recipient, amount);
return true;
}
// @dev 铸造代币,从 `0` 地址转账给 调用者地址
function mint(uint amount) external {
require(owner == msg.sender);
balanceOf[msg.sender] += amount;
totalSupply += amount;
emit Transfer(address(0), msg.sender, amount);
}
// @dev 销毁代币,从 调用者地址 转账给 `0` 地址
function burn(uint amount) external {
balanceOf[msg.sender] -= amount;
totalSupply -= amount;
emit Transfer(msg.sender, address(0), amount);
}
}
3) Переходимо на вкладку Solidity Compiler, вибираємо версію 0.8.17 та компілюємо наш файл:
4) Далі переходимо на вкладку Deploy and run transaction.
• У пункті Environment ставимо Injected Provider – Metamask.
• Далі нажимаємо на стрілочку (цифрою 3 вказав).
• Даємо будь яку назву (Name) я назвав Omega, і вказуємо (SYMBOL) символ токена - три літери, я вказав omg.
• Перевіряємо чи в Мета Маск мережа Scroll testnet та натискаємо transact.
5) Необхідно буде підтвердити транзакцію в Metamask. У разі успіху ви побачите наступне повідомлення внизу екрана:
Там ж на контракті нажимаєте на стрілочку, щоб відкрити додаткове вікно.
6) Тепер ми будемо мінтити/чеканити наші токени для цього введіть: 18000000000000000000000000 в поле "Mint" і нажміть transact.
7) Необхідно буде підтвердити транзакцію в Metamask. У разі успіху ви побачите наступне повідомлення внизу екрана:
Там ж копіюємо адрес токена нашого контракту
Заливаємо ліквідність нашого токену
1) Переходимо на Uniswap Scroll і добавляємо наші токени в Pool.
New Position - Select token - вставляємо адрес контракту який ми копіювали вище.
2) Вказуємо ціну токена (можете вказати будь які).
Після цього закидаємо ETH та наш створений токен (OMG) в пул для ліквідності. Робимо Approve та Preview.
3) І тоді кожен зможе купити ваш токен через Uniswap.
Ось мій адрес контракту токену: 0x19Dd26C40072ce93016B85f0588Aa7eB12CBF399
Можете попробувати свапнутись туди-сюди.
На цьому все, я розібрав всі можливі активності в Scroll Testnet. Всім удачі!