Morph. Беремо участь в останній фазі тестнету, полюючи на дроп

Morph — модульний L2, який поєднуючи сильні сторони Optimistic і ZK roll-ups, прагне підвищити масштабованість, мінімізувати витрати, прискорити вирішення спорів і забезпечити безпечні та адаптовані транзакції.

Залучили на Seed раунді $20 млн. інвестицій від DragonFly Capital, Pantera Capital, The Spartan Group та інших.

Links:

  1. Web-site

  2. Docs

  3. Twitter

  4. Discord

  5. Telegram

  6. Blog

Зараз йде остання фаза тестнету перед запуском майннет.

📝 Інструкція до тестнету

1. При потребі запрошуємо тестові токени для мережі Holesky:

  1. https://stakely.io/en/faucet/ethereum-holesky-testnet-eth

  2. https://faucet.quicknode.com/ethereum/holesky

  3. https://holesky-faucet.pk910.de

2. Переходимо на брідж, підключаємо гаманець та відправляємо тестові ETH в мережу Morph Holesky

3. Так само тестуємо вивід

4. Приєднуємось до Discord та ознайомлюємось, як отримати ролі в каналі call-of-morphy

5. Виконуємо завдання в наступних каналах, відправляємо пруфи до proof-of-challenges та отримуємо XP

Якщо у вас не відображаються канали, перейдіть до Канали і ролі → Перегляд каналів → Підписатися на категорію

Щоб переглянути свої транзакції, на сайті бріджу натисніть на свій адрес та перейдіть до Transactions

6. Деплоїм свій контракт на Remix

Якщо ви не розумієте, як деплоїти контракт, можете скористатись гайдом по деплою контракту в тестнеті Botanix, лише замінивши код (в ньому можете редагувати назву контракту, нейм, тікер, саплай):

https://www.youtube.com/watch?t=47&v=GY2d94FJWJI&feature=youtu.be

Код:

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

contract whereismymoney {
    string public name = "whereismymoney";
    string public symbol = "WIMM";
    uint8 public decimals = 18;
    uint256 public totalSupply = 1000000 * (10 ** uint256(decimals));
    address public owner;
   
    mapping(address => uint256) balances;
    mapping(address => mapping(address => uint256)) allowances;
   
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
   
    constructor() {
        owner = msg.sender;
        balances[owner] = totalSupply;
    }
   
    modifier onlyOwner() {
        require(msg.sender == owner, "Only the owner can call this function.");
        _;
    }
   
    function balanceOf(address account) public view returns (uint256) {
        return balances[account];
    }
   
    function transfer(address recipient, uint256 amount) public returns (bool) {
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount <= balances[msg.sender], "ERC20: transfer amount exceeds balance");
       
        balances[msg.sender] -= amount;
        balances[recipient] += amount;
       
        emit Transfer(msg.sender, recipient, amount);
       
        return true;
    }
   
    function approve(address spender, uint256 amount) public returns (bool) {
        allowances[msg.sender][spender] = amount;
       
        emit Approval(msg.sender, spender, amount);
       
        return true;
    }
   
    function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount <= balances[sender], "ERC20: transfer amount exceeds balance");
        require(amount <= allowances[sender][msg.sender], "ERC20: transfer amount exceeds allowance");
       
        balances[sender] -= amount;
        balances[recipient] += amount;
        allowances[sender][msg.sender] -= amount;
       
        emit Transfer(sender, recipient, amount);
       
        return true;
    }
   
    function allowance(address account, address spender) public view returns (uint256) {
        return allowances[account][spender];
    }
   
    function burn(uint256 amount) public returns (bool) {
        require(amount <= balances[msg.sender], "ERC20: burn amount exceeds balance");
       
        balances[msg.sender] -= amount;
        totalSupply -= amount;
       
        emit Transfer(msg.sender, address(0), amount);
       
        return true;
    }
   
    function mint(uint256 amount) public onlyOwner returns (bool) {
        require(totalSupply + amount <= 2**256 - 1, "ERC20: total supply exceeds uint256");
       
        balances[owner] += amount;
        totalSupply += amount;
       
        emit Transfer(address(0), owner, amount);
       
        return true;
    }
}

Complier вибирайте такий, який вказаний в коді:

7. Заповнюємо форму на амбасадора

Якщо у вас будуть будь-які запитання, буду радий вас бачити в тг каналі

Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
whereismymoney
whereismymoney@whereismymoney

https://t.me/cryptoinfo69

172Прочитань
0Автори
1Читачі
На Друкарні з 12 травня

Більше від автора

  • Side Protocol. Беремо участь у нагороджуваному тестеті

    Side Protocol — це перший модульний та омнічейн рівень обміну, що пропонує повний стек, а також спеціальну інфраструктуру, інструменти та програми для децентралізованого обміну активами.

    Теми цього довгочиту:

    Airdrop
  • Mint Blockchain. Отримуємо дроп за легкі активності в тестнеті без витрат

    - Отримуємо дроп за легкі активності в тестнеті без витрат - Проект підтримується Optimism та Celestia. Ймовірно, інвестиції вже були зібрані, але поки не були оголошені

    Теми цього довгочиту:

    Airdrop

Вам також сподобається

Коментарі (0)

Підтримайте автора першим.
Напишіть коментар!

Вам також сподобається