七行代碼發行 Token 一圓曾經的ICO美夢

走在 DeFi 鋼索上的大叔 andy 4年前 (2020-08-03) 1607次浏览 已收录 0个评论 扫描二维码

七行代碼發行 Token ,一圓曾經的ICO美夢

2017年區塊鏈迎來 ICO 狂潮高峰, 數百種各式各樣的幣傾巢而出,其中甚至還有撞名的。有不少區塊鏈集資成功,但從今年下半年回過頭看,還有價值的可能不到 10%。
2018年不少交易所也發行了自己的去中心化貨幣,比如台灣的 BitoPro 為例,算是趕上ICO的尾巴,不過規模較小,再加上功能有限,除了交易所內的功能可以使用到,而有優惠之外,吸引力真的不高。所以看起來也是搖搖欲墜,18年真的是冰河期。而因為 ICO狂潮,也帶動了 ERC20 Token,然後開始 ICO的套路在 Token 上似乎也做了進化,DApp 帶個遊戲,再加上激勵制度,看起來變得相當斯文,吃相也不那麼難看。
2017年11月 MakerDAO 推出的穩定幣 DAI ,使 DeFi 延續了區塊鏈的熱度,在2018 及 2019 年,以 Dai 為基礎的各種借貸、交易所、資產管理等服務,逐漸上線,如果說DeFi 在2018年是起步, 2019年 是累積能量,那2020年應該可以邁入成長期開始爆發。

原本已經寫好的 ERC20 Token 合約,具備基礎的 ERC20 標準功能之後,還沒有 Debug ,就發現 OpenZappelin 已經有寫好標準的 ERC20 合約。初步看了一下,原來是我重新造了輪子。但是,雖然OpenZappelin 的 ERC20 Token 合約是符合安全審查的,但還是缺乏一些進階的功能。在增加功能之前,我們就先來看看這個ERC20標準合約,要如何部署,發行屬於我們自己的 Token 。這裡用的都是最簡單的方式,只需具備:

  • Chrome 瀏覽器
  • MetaMask 錢包

瀏覽器只需要標準的瀏覽器就可以了,edge 跟 firefox 也都可以。錢包只要使用能連上 Ropsten 測試網路的 ERC20 相容錢包即可,使用 MetaMask 是因為可以直接切換網路,又掛在 chrome 上很方便。

先上代碼再說明。

pragma solidity ^0.6.0;

import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol";

contract ADCToken is ERC20 {
    constructor(uint256 initialSupply) public ERC20("AndyCoin", "ADC") {
        _mint(msg.sender, initialSupply * (10 ** uint256(decimals())));
    }
}

就這7行代碼,就可以發行標準的 ERC20 Token 然後使用 MataMask 錢包來收發代幣。
打開 Chrome ,進入 https://remix.ethereum.org/ ,我們使用 Remix 來編譯,錢包記得切換到 Ropsten 測試網路。
在 Remix 裡面建立新檔案,把代碼貼上後直接編譯完成。
對照下圖的行號,說明代碼。
第3行,調用 OpenZappelin 的 ERC20 Token 合約。
第5行,ADCToken 是合約名稱, 繼承自 ERC20 ,良好習慣的命名是與檔名相同。例外是同一個檔案內有兩個以上合約。
第6行,AndyCoin 是我們要創建的 Token 名稱 name , ADC 是 Token 代號 symbol
第7行,代幣數量,預設小數點後面是18個零,所以 10**18 就是 1個代幣,而我們用 10 ** uint256(decimals())) 的意思,就是用預設值來計算。這裡是坑,小心勿踩。

七行代碼發行 Token 一圓曾經的ICO美夢

然後按照上圖,左邊
ENVIROMENT 選 Injected Web3 ,意思是注入 Web3 的使用方式,這是最簡單的,你不用準備其他的編譯環境。
ACCOUNT 貼上要部署此合約的錢包地址,建議在這裡使用子錢包。最好符合錢包的安全使用規則。
CONTRACT 選擇已編譯完成的合約,我們這裡是 ADCToken ,檔名是 AndyCoin (此例檔名跟合約名不同)
DEPLOY 拉開後出現 INITIALSUPPLY ,這是合約建構子的參數名稱,是 Token 的初始供應量,由於合約沒有實現其他造幣的方法,因此這裡也等於總量。我們先少少的發行10億個幣就好。此坑小心輕踩。

輸入完成後,黃色按鈕 trasaction 。
然後錢包需要確認這筆交易,如下圖

七行代碼發行 Token 一圓曾經的ICO美夢

這裡標出所需花費的 gas ,這個值會跟在 mainchain 上部署一樣。
確認之後,回到 Remix ,如下圖右下部份。

七行代碼發行 Token 一圓曾經的ICO美夢

看到右下區域的 console
第二行綠色的文字,鏈接可以直接點開,會另開視窗到 etherscan ,可以即實看到這筆交易被確認的情況。
第三行是交易已經確認上鏈了。

下圖是確認完上鏈之後, Remix 左邊出現剛剛部署的合約欄位。

七行代碼發行 Token 一圓曾經的ICO美夢

Deployed Contracts 下拉,可以看到部署的合約。選到 ADCTOKEN , 可以先按右邊的複製鍵,把合約地址複製下來。許多地方都會用到此合約地址,比如在錢包內新增代幣時也會用到。
黃色的按鈕,是需要 gas 的操作,藍色的按鈕是不需要 gas 的操作。

我們點開 name, symbol, totalSupply 三個,如下圖

七行代碼發行 Token 一圓曾經的ICO美夢

三個欄位都正確沒毛病,totalSupply 是10億個代幣,後面跟上 18個零,因為 decimals 的項設值是18,我們沒有更改。

打開 MetaMask 發現代幣已到帳,因為 OpenZappelin 的 ERC20 實現,是會把初始供應量全部發給合約的創建者。如下圖。

七行代碼發行 Token 一圓曾經的ICO美夢

然後我們用 Remix 操作合約,發10萬個幣給另一個錢包帳號。這裡操作時,我們已經先把帳號複製下來,沒有切換錢包,請注意沒有切換錢包。如下圖。

七行代碼發行 Token 一圓曾經的ICO美夢

按下 transaction ,一樣要在錢包上確認。

如果沒有出現確認,就先等一下。等到出現確認並且按下之後,再切換成另一個接收代幣的帳號。下圖是切換到接收的錢包,下方沒有 ADC 代幣。

七行代碼發行 Token 一圓曾經的ICO美夢

沒有出現 ADC 代幣,我們手動加上。

按加入代幣之後,如下圖。

七行代碼發行 Token 一圓曾經的ICO美夢

在代幣合同位址的欄位,貼上合約地址,如下圖。

七行代碼發行 Token 一圓曾經的ICO美夢

會自動出現代幣代號及小數點精度, symbol 跟 decimal 。

按下一頁。

七行代碼發行 Token 一圓曾經的ICO美夢

然後按如入代幣。如下圖。

七行代碼發行 Token 一圓曾經的ICO美夢

然後再按回到上一頁,在左上角的向左箭頭。回到錢包主頁

七行代碼發行 Token 一圓曾經的ICO美夢

看到已經出現 ADC Token , 數量 10000 個,沒毛病。再回到剛剛的帳號,看看剩多少 ADC 。如下圖。

七行代碼發行 Token 一圓曾經的ICO美夢

ADC 代幣剩下 9億9千9百9十萬個。沒問題。

如果你想的話,也可以用錢包直接發,不需要從 Remix 操作合約來發代幣。一般我們也是直接從錢包發就可以了。

到目前為止,我們使用 OpenZappelin 的 ERC20 合約發行了 ADC Token ,看起來也很順利,但我們卻不了解裡面的結構,也就是 ERC20 代幣合約的內容是什麼,然後 OpenZappelin 又做了些什麼事。
下一篇文章我們來看看 ERC20.sol 裡面做了些什麼,看看高手是如何寫合約,看這種符合安全審核的程式,對我們這種新手來說很重要。可以透過高品質的代碼,學習到各種避免出現問題的寫法,盡量模仿高手的優點。


神隊友學長Andy , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:七行代碼發行 Token 一圓曾經的ICO美夢
喜欢 (0)
[[email protected]]
分享 (0)
andy
关于作者:
中年大叔,打拼 like young students.
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址