歡迎光臨
我們一直在努力

ETH 800 億美元市值的幕後功臣 – ERC20

根據 Coinist 數據顯示,2017 年全年的 ICO 融資規模達到 38 億美元。 大部分主流 ICO 代幣都是基於以太坊(Ethereum)平台開發,ICO 熱潮也支撐著以太幣價格從 2017年1月1日的 8 美元漲到最近的 886 美元,總市值超過 800 億美元。

具體以太坊取得如此成績的原因有很多,其中最重要的一個就是 ERC20 協議。

以太坊平台於 2015 年正式公開運行。 幾乎同時,以太坊開發者 Fabian Vogelsteller 和 Vitalik Buterin 等人開始製定 ERC20 協議。 制定 ERC20 協議目的是:提供代幣合約的基本架構,允許代幣被第三方合約使用,從而使得以太坊的任意一種代幣都可以在其他應用(錢包,交易所等)中使用。 有了ERC20 協議,人們不需要重複開發代幣基礎功能,極大降低代幣開發的門檻,讓開發者可以將代幣應用到更多領域,發起更多ICO 項目;由於不同ERC20 代幣都兼容 ERC20 協議,這樣兩個ERC20 代幣之間就能夠進行交易,使得用戶對持有代幣更有信心。

ERC20 協議在發布之後已經取得了很多成功:它被絕大多數以太坊錢包支持;成百上千的ERC20 代幣被創造出來,其中有些代幣的價值甚至高於一些加密貨幣;大部分的加密 貨幣交易所都支持交易ERC20 代幣。 ERC20 協議因此也成為加密貨幣世界中最成功的標準之一。

類似 HTTP 定義互聯網信息交換標準一樣,ERC20 協議定義一個代幣智能合約需要實現方法和事件。 ERC20 並不是一個技術,軟件或者代碼,它是一個技術標準。

ERC20 協議包含完成代幣交易需要實現的一些方法。 其中包含代幣交易,查詢代幣餘額,代幣總供應量等。 智能合約代碼如下:

其中必須實現的方法和事件包括:

  1. totalSupply:查詢代幣總供應量

  2. balanceOf:查詢特定地址的餘額

  3. allowance:查詢能夠從地址 _owner 提出的代幣數量

  4. transfer:從地址 _owner 轉移代幣到地址 _to,必須觸發 Transfer 事件

  5. approve:允許 _spender 從當前地址多次提幣,總量為 _value

  6. transferFrom:從地址 _from 轉移代幣到地址 _to,必須觸發 Transfer 事件。 這個方法是用於提幣流程,能給予開發者實現自定義行為

  7. Transfer 事件:在代幣轉移中觸發,轉移數量為 0 時也必須觸發該事件

  8. Approval 事件:成功調用 approve 時觸發

其他可選實現的方法有:

  1. name:返回代幣名

  2. symbol:返回代幣符號

  3. decimals:返回代幣使用的位數,用於餘額顯示

02

舉栗

我們可以通過下邊的模擬交易流程,理解 ERC20 協議是如何工作的。

具體假定代幣合約中有兩個用戶 Alice和Bob——兩個名人

查詢代幣餘額

用 balanceOf 查詢兩個用戶賬戶餘額:

tokenContact.balanceOf(0x0000000000000000000000000000000000000001);結果為:100

tokenContact.balanceOf(0x0000000000000000000000000000000000000002);結果為:200

發送代幣

假定 Alice 想發送 10 個代幣給 Bob,那麼 Alice 需要執行

tokenContract.transfer(0x0000000000000000000000000000000000000002, 10);

這會修改 balances 數據,寫入

再次查詢餘額:

tokenContact.balanceOf(0x0000000000000000000000000000000000000001);結果為:90

tokenContact.balanceOf(0x0000000000000000000000000000000000000002);結果為:210

approve 和 transferFrom 示例

假如 Alice 想授權 Bob 從自己這裡可以提取 30 個代幣,,Alice 需要執行:

tokenContract.approve(0x0000000000000000000000000000000000000002, 30);

這會在 allowed 映射表中寫入數據:

tokenContract.allowed[0x0000000000000000000000000000000000000001][0x0000000000000000000000000000000000000002] = 30;

當 Bob 想提幣時,Bob 需要執行(注意提幣額度超過 Alice 授權時會導致錯誤):

tokenContract.transferFrom(0x0000000000000000000000000000000000000001, 0x0000000000000000000000000000000000000002, 20;

此時查詢餘額:

tokenContact.balanceOf(0x0000000000000000000000000000000000000001);結果為:70

tokenContact.balanceOf(0x0000000000000000000000000000000000000002);結果為:230

這時 allowed 映射表被寫入新數據:

tokenContract.allowed[0x0000000000000000000000000000000000000001][0x0000000000000000000000000000000000000002] = 10;

03

總結

從以上模擬交易中可以看出:ERC20 協議本質上是一個智能合約接口,規定了開發者的代幣合約中必須實現的基本功能,按照ERC20 協議就能夠完成一個簡單的代幣合約,降低代幣 開發的技術難度;不同的ERC20 代幣都兼容ERC20 協議,因此只要交易所支持ERC20 協議就能夠支持多種ERC20 代幣,讓幣間交易也成為可能。

ERC20 協議,一方面讓開發者能夠用代幣衡量更多資產價值,發起更多ICO 項目;另一方面讓交易所很容易兼容ERC20 代幣,人們更願意也更方便購入ERC20 代幣,大量 的ICO 項目就會擁有更多的參與者。 這些都讓以太坊平台的生態系統豐富起來。 僅僅是開發工具鏈方面,以太坊平台就出現了很多開發框架、DApp 部署平台等,進一步提高開發效率。

在如今繁多的區塊鏈項目中,以太坊毫無疑問擁有最完備的生態系統支撐其 800 億美元的估值,這一切都離不開幕後功臣 — ERC20 協議。

未經允許不得轉載:頭條楓林網 » ETH 800 億美元市值的幕後功臣 – ERC20