# Scroll Alpha Testnet дээр өөрийн токен үүсгээрэй

By [Happy24 Club ](https://paragraph.com/@turuu) · 2023-03-07

---

Би [энэ нийтлэлд](https://mirror.xyz/dashboard/edit/zOUHBXUkxhW0y9rcQs89UrtRtVmzBKVpBOvrmsE99zk) ухаалаг гэрээг хэрхэн ашиглах талаар дэлгэрэнгүй тайлбарласан бөгөөд одоо бид Scroll Alpha сүлжээнд өөрийн токен үүсгэхэд дүн шинжилгээ хийх болно.

Бид сайт руу орж метамаск түрийвчээ Scroll Alpha сүлжээнд холбоно - [https://remix.ethereum.org/](https://remix.ethereum.org/) Дараа нь (1) дүрс дээр дарж, гэрээнд нэр өгнө үү, жишээ нь Токен, цэг тавьж, .sol (2) нэмээд, хулганы зүүн товчлуураар (3) манай бичээсийн доор аль ч хэсгийг дарна уу. :

![](https://storage.googleapis.com/papyrus_images/0d2cbb9e57fa027e87fcbf230b0f2feab4ba8914c5dba79f706e99708e423967.png)

Кодыг хуулна:

    // 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); 
           } 
           
     }
    

Бид сайт руу буцаж очоод дэлгэцийн голд байрлах хар талбар дээр хулганы зүүн товчийг дараад CTRL + V дарж (хуулбарласан кодыг буулгаж) гарч ирэх мессеж дээр OK дарна уу (хэрэв гарч ирвэл):

![](https://storage.googleapis.com/papyrus_images/ada8d45c6832dbc59cf32d9df8c03750035a14e72abe9fa387a8cf4905bd9c45.png)

Дараа нь CTRL + S (хэрэв та Windows дээр бүх зүйлийг хийж байгаа бол) болон Command + S (Mac-д зориулсан) товчлуурын хослолыг дарсны дараа зүүн талд ногоон тэмдэглэгээ гарч ирэх бөгөөд энэ хэсэг рүү очно уу.

![](https://storage.googleapis.com/papyrus_images/c4a42ef6f5c812411a99546f237d8595fd24864e4634066ed51a6ce5dce349f3.png)

Дээд талбарт хөрвүүлэгчийн хувилбарыг хамгийн сүүлийн хувилбар болгон (тоо их байх тусмаа шинэлэг) (1) болгон өөрчилж, Compile товчийг (2) дарна уу:

![](https://storage.googleapis.com/papyrus_images/b38ce06687dc82a5294887f063e8a8e1519f4684c0c7238edcb3f956ff41953a.png)

Одоо бид цэсийн хамгийн доод хэсэг (1) руу очно, (2) **Injected Provider - Metamask**\-ыг сонгох ёстой, (3) хэсэгт таны метамаск түрийвч татагдах ёстой, нэмэлт параметрүүдийг (4) товшиж өргөжүүлнэ үү. Токены дурын нэр болон түүний товчилсон нэр (5) зохиосны дараа нь Гүйлгээ хийх (6) товчийг дарна уу:

![](https://storage.googleapis.com/papyrus_images/6908d8b22478cc15828ea18ac786b322f8e40243cada05599969baa939a4bda9.png)

Scroll Alpha Testnet сүлжээ метамаск дотор байгаа эсэхийг шалгаад **Баталгаажуулах** товчийг дарж түрийвчний гүйлгээнд гарын үсэг зурна уу.

![](https://storage.googleapis.com/papyrus_images/24a23c96ae69c3d1d0441b1f4acb87b64d2cb00b154246918d41e91659bc1c03.png)

Хэрэв бүх зүйл зөв хийгдсэн бол та доорх консол дээр дараах бичээс, метамаск дээрх харгалзах гүйлгээг харах болно.

![](https://storage.googleapis.com/papyrus_images/0b9732dabe6943c39fa058332e22cadf4e0f50d5a37766cedea0ac8e489b6dc6.png)

Дараа нь **Transactions recorder** талбарыг өргөжүүлнэ үү:

![](https://storage.googleapis.com/papyrus_images/64ef91c124f488bc31449a563a50dc0dec166b3b6ceda3b296cd5685634894d9.png)

**ERC20 AT..**.(1) табыг өргөжүүлж байна

**Mint** табыг өргөжүүлэх (2)

**Amount** талбарт 1800000000000000000000 утгыг оруулна уу (3)

Transact (4) дээр дарна уу

Бид **Баталгаажуулах** (5) дээр дарж метамаск дээрх гүйлгээнд гарын үсэг зурна:

![](https://storage.googleapis.com/papyrus_images/a9f3febde507e800c654ee5ba305758657e865f951ff87c4b1d77a3bd0085e6e.png)

Бид мөрний доод талд ногоон тэмдэглэгээг харж байгаа тул бүх зүйл хэвийн байна (1) одоо бид токенынхаа ухаалаг гэрээний хаягийг хуулж авахын тулд хуулбарлах дүрс дээр дарна уу (2):

![](https://storage.googleapis.com/papyrus_images/54b11002d23ed1f31ba482d0dff80190724798252178c818499c0d28dae5d116.png)

Дараа нь uniswap тестийн пуул руу орж [https://uniswap-v3.scroll.io/#/pool](https://uniswap-v3.scroll.io/#/pool) очоод **+New Position** дээр дарна уу:

![](https://storage.googleapis.com/papyrus_images/a1a26ba6c4f83b1dbac9e6c5c0b173cde1f0496a880ae9d8c907103ccd5c2ceb.png)

Дараа нь, эхний талбарт ETH-г сонгоод, хоёр дахь талбарт **"Select token"** дээр дарж, токеныхоо хуулсан ухаалаг гэрээний хаягаа оруулна.

![](https://storage.googleapis.com/papyrus_images/ab14cee14c432b55a65159eb4256935cb982ed40ab1553c5acee18e9393016b6.png)

Дараа нь та дэлгэцийн агшин дээрх (скин) бүх утгыг тохируулж, **"Preview"** товчийг дарна уу.

![](https://storage.googleapis.com/papyrus_images/1f68385f10dffb7d41f468a5bdc3361723fd475dba5eb2da47b1f42a78af2a9d.png)

Add товчийг дараад метамаск дээр гүйлгээнд гарын үсэг зурна уу:

![](https://storage.googleapis.com/papyrus_images/84612c403e5da999ad506b34059dd64c8ad2135426c4c898132a37ba3db9013b.png)

Бид токеныг зөв үүсгэж, Uniswap хөрвөх чадварт амжилттай нэмсэн гэдгийг батлах цонхыг харж байна:

![](https://storage.googleapis.com/papyrus_images/3423e78c563c7c2f0ff111fa41a7e6be0a35fbf66ed3d215e723d958c5d258c1.png)

Баяр хүргэе! Та Scroll Alpha Testnet дээр өөрийн токеныг амжилттай үүсгэлээ! Мөн та цааш улам ихийг мэдэж хүсэлтэй бол бидэнтэй нэгдээрэй 🤑👇

👉Happy24 Club | [Telegram](https://t.me/Happy24chanel) | [Chat](https://t.me/happy24c) | [Youtube](https://www.youtube.com/@happy24club/featured)

---

*Originally published on [Happy24 Club ](https://paragraph.com/@turuu/scroll-alpha-testnet)*
