最近幣圈新聞比較多,也炒幣這么久了,然而卻不知道幣怎么來了,作為程序猿的我們,有點丟人,話不多說,我們來發一個幣,名字叫 CodeToken,簡稱CTB。
因為發幣,部署,轉賬等都是要消耗GAS FEE(GAS FEE是什么?GAS FEE可以理解為手續費)的,因為我們要在測試網上發幣,測試網這里選擇的是Rinkeby,首先你要去https://faucet.rinkeby.io/ 領幣,步驟都寫的很清楚。
准備工具
- 在線編譯器remix:https://remix.ethereum.org/
- 主網區塊瀏覽器:https://etherscan.io/
- rinkeby測試網區塊瀏覽器:https://rinkeby.etherscan.io/
- MetaMask錢包插件
- VPN
- 推特(領幣需要)
1.編碼
打開以太坊區塊瀏覽器(https://etherscan.io/ ) 。如果打不開,需要VPN(公眾號回復VPN,獲取免費無限流量VPN)哦,我們搜索之前比較火的一個幣,YFII(二姨夫),相信炒幣的人都了解,難得一遇的百倍幣,產生了很多。

找到后,點擊下圖的合約地址

ok,代碼就在這里了

把里面的代碼拷貝出來,按文件划分,寫到remix中,如下:

代碼都是遵循標准的ERC20協議。所有的代碼我都加上了注釋,方便小伙伴們查看,同時,代碼也上傳到Github:https://github.com/joeBeckham/codeToken
2.編譯
代碼寫完后,我們就要編譯一下,看下寫的代碼有沒有問題。
首先我們要清楚,我們發布的主合約是CodeToken,編譯的時候要選中CodeToken.sol文件,然后選擇remix的左側的編譯按鈕,選擇solidity版本后,點擊下方的Compile CodeToken.sol 按鈕,當編譯通過后,會發現左側的編譯按鈕打上了一個對號,同時,會在文件按鈕中新增出一個artifacts文件夾,里面包含編譯后的文件。

3.部署
編譯通過了,接下來就要開始部署了。
首先,要清楚的是,remix左側的第三個按鈕是發布按鈕。點擊發布按鈕,會看到有ENVIRONMENT、ACCOUNT 、GAS LIMIT、CONTRACT等。
其中,ENVIRONMENT有如下幾個選項:
- JavaScript VM:這是Remix自己的內部沙箱。它不連接到MainNet,TestNet或任何專用網絡。這是一個內存中的區塊鏈,可用於簡單測試和快速挖掘。
- Injected Web3:這是用於瀏覽器插件(MetaMask)的選項。在這里,Remix將對區塊鏈集成的所有控制權交給MetaMask插件。此時,MetaMask控制要連接到的網絡。
- Web3 Provider:這允許在Remix中輸入URL以連接到區塊鏈。此處最常見的設置是運行本地節點並通過其IP/端口連接到該節點
ENVIRONMENT我們選擇 Injected Web3。
ACCOUNT 、GAS LIMIT默認即可,CONTRACT 則要選擇 CodeToken.sol 主合約。

一切就緒,那么,點擊 Deploy 發布按鈕,會彈出小狐狸確認框,此處會消耗GAS FEE,

點擊確認,我們會看到remix的控制台上有如下輸出:

包含了交易的狀態、hash、gas等信息,status我們看到是成功的,我們把這筆交易拿到以太坊區塊瀏覽器上去查看,當然,要去測試網的以太坊區塊瀏覽器中查看,復制 transaction hash ,然后 打開 https://rinkeby.etherscan.io/ ,會看到這筆交易的詳細信息:

那么我們怎么查看部署的合約呢?
復制 From 地址,在區塊瀏覽器中查詢,找到此地址發布的合約:

點進去即可看到。
4.驗證合約方法
合約部署完成后,我們要驗證下方法。依然是部署菜單,點擊 > ,會看到 一堆的東西,不要慌,我們一起解讀下

這些都是我們定義在合約的變量和方法。
點擊 totalSupply變量,我們查看下 發布的token總量,沒錯,是0,因為我們還沒有鑄幣

正如CodeToken代碼中所寫一樣,要鑄幣(mint方法),首先要 有鑄幣權限的地址,要想有鑄幣權限的地址,就必須先給某個地址添加鑄幣權限(addMinter方法),添加鑄幣權限並不是每個用戶都可以操作的,需要是治理管理員地址(governance變量),默認的治理管理員地址(governance變量)是部署合約的地址用戶,如果想要修改治理管理員地址,需要設置治理管理員地址(setGovernance方法),這個方法要求調用者必須為當前治理管理員地址,這樣就理解了吧。
我們在重新梳理一下,總結兩句話:
- 用前治理管理員地址給某個地址添加鑄幣權限(用governance地址調用addMinter方法)
- 擁有鑄幣權限地址向指定地址鑄幣(用addMinter方法的參數 執行mint方法)
我們來實踐一下:
1.把小狐狸的賬號切換到剛剛我們發布合約的賬號;

2.把test賬號設置為擁有鑄幣權限,把test的地址復制到 addMinter 后面的框中,點擊 addMinter 框,小狐狸確認后,我們看到這筆交易是成功的

3.查詢下test賬號的地址是否擁有鑄幣權限
將test賬號的地址復制到 minters 后面的框中,點擊,true,驗證通過

4.鑄幣,使用test賬號的地址來鑄幣10000個
在mint后面的框中輸入參數 0xf43d31E51c78dEdDA5E12711401e3B516b207fB7,10000000000000000000000,10000后面加18個0,因為鏈上是不使用小數的。
點擊mint按鈕,小狐狸確認后,我們看到這筆交易是失敗的

我們點擊上面的鏈接,查看這筆交易失敗的原因:

沒錯,錯誤是 不是miniter,我們捋一下,我們設置了 test賬號地址 擁有鑄幣權限,但是 我們小狐狸賬號是 nice_gogogo賬號,顯然,nice_gogogo我們沒有設置鑄幣權限。so,把小狐狸賬號切換到 test賬號
重新執行,ok,交易成功。
5.查看幣的總量,點擊 totalSupply

去掉18個0,總量10000,沒錯。
6.測試下轉賬方法
使用當前小狐狸賬戶(test賬號)來給 hhhhh 賬號轉500個CTB,在 transfer 后面的框中輸入:0x83B109CF083f0c8Bcc9ab07aF964B135Df325771,500000000000000000000,點擊transfer按鈕,

我們查看小狐狸的test賬號,原來應該是有10000個CTB的,轉賬500個成功后,剩余 9500個。

查看hhhhh賬號的CTB,沒有CTB,先添加代幣

查看CTB余額,果然是500個

5.發布源代碼
合約部署測試完成后,我們打開ETH區塊鏈瀏覽器,搜索我們發的token,CTB,注意,這次發的token合約地址是0x120d5ce8be6f65e51776086aefbb3f83b491b33c
搜索的時候你可能會發現有兩個 CTB,因為有一個是我測試的時候發的。

點擊合約地址后,然后選擇Contract選項,看不到我們的源代碼,並看到 有Verify And Publish,沒錯,是因為我們還沒有 上傳代碼並開源。

點擊Verify And Publish,選擇 編譯器類型、solidity版本、開源證書類型,點擊繼續

上傳文件:

上傳完文件后,拉到最底部,進行人機身份驗證后,點擊Verify And Publish

等待一會,ok,源代碼上傳完成。

這樣,整個合約就部署發布完成了。出了在remix中調用方法外,還可以在區塊瀏覽器中調用,搜索剛剛發布的幣 CTB,打開后 會看到 有Read Contract 和 Write Contract

-
Read Contract 是暴漏出的可讀變量和可讀方法,不用連接錢包,不會消耗GAS
-
Write Contract 是修改的變量和修改的方法,要連接錢包,會消耗GAS
這就是我們發布的 CTB 幣,我們實現了標准的ERC20協議中的接口。
炒幣不如了解怎么發幣,知其然還要知其所以然,很NICE哦。
文章持續更新,可以微信搜一搜「 碼咖 」第一時間閱讀
