目錄

  • 導語

  • 什麼是ERC-20標準?

  • 以太坊代幣速覽

  • ERC-20代幣是如何產生的?

  • ERC-20具備哪些功能?

    • 穩定幣

    • 證券型代幣

    • 效用代幣

  • 是否可以參與ERC-20代幣挖礦?

  • ERC-20代幣的優缺點

    • ERC-20代幣的優點

    • ERC-20代幣的缺點

  • ERC-20、ERC-1155、ERC-223和ERC-721的區別是什麼?

  • 總結


導語

以太坊由Vitalik Buterin於2014年創立,其定位爲推出去中心化應用程序(DApp)的開源平臺。Buterin創建這條全新區塊鏈的動機很大程度源於比特幣協議缺乏靈活性。

自問世以來,以太坊區塊鏈吸引了很多開發人員、企業和企業家,催生出由用戶推出智能合約和分佈式應用程序的新興產業。

在本文中,我們將研究ERC-20標準,它是創建代幣的重要框架。雖然僅應用於以太坊網絡,但它是其他區塊鏈標準(例如幣安鏈的BEP-2)的靈感來源。


什麼是ERC-20標準?

在以太坊中,ERC的全稱是Ethereum Request for Comments,即以太坊註釋請求。這些技術文檔概述了以太坊的編程標準。請勿將之與以太坊改進提案(EIP)相混淆,後者與比特幣的BIP類似,屬於有關協議自身改進的建議。ERC的目標是在應用程序與合約之間建立便於交互的協議。

ERC-20由Vitalik Buterin和Fabian Vogelsteller於2015年開發撰寫,爲基於以太坊的代幣提出了另一種相對簡單的格式。只要遵循大綱,開發人員不需要重新開發,可以直接在整個行業的現行基礎上構建。

創建新的ERC-20代幣後,它們會自動與支持ERC-20標準的服務和軟件(軟件錢包、硬件錢包和交易平臺等)進行互操作。

需要注意的是,ERC-20標準已經發展成EIP(特別是EIP-20)。此時距離原來廣爲傳播的提案已經過去了數年之久,但即便此後又過了幾年,“ERC-20”的名字卻保留了下來。


以太坊代幣速覽

與ETH(以太坊的原生加密貨幣)不同,ERC-20代幣並不存入賬戶,而是僅存在於合約內部,如同獨立的數據庫。它指定代幣的規則(即名稱、符號、可分割性)並保留一個映射用戶餘額的以太坊地址列表。

爲了轉移代幣,用戶必須將交易發送到智能合約,要求合約將部分餘額分配至其他地方。例如,如果Alice希望給Bob發送5,000枚幣安學院代幣(BinanceAcademyTokens),她會在相應的智能合約中調用函數來執行指令。


Users interacting with a smart contract


她的調用指令中包含看似常規的以太坊交易,該筆交易向代幣合約支付了0枚ETH。這項調用包含在交易的其他字段中,指定Alice的意圖——在本案例中,她希望將代幣轉給Bob。

即使不發送以太幣,她也必須支付指定費用,才能將交易加入區塊。如果沒有ETH,則應在轉移代幣前預存一些ETH。

以下是Etherscan中的真實案例:某人調用了一份BUSD合約。您會看到代幣已經轉移,並支付了手續費,儘管價值字段顯示發送了0枚ETH。

接下來,我們加快步伐,深入瞭解典型的ERC-20合約結構。


ERC-20代幣是如何產生的?


Illustration of an ERC-20 token being created


依照ERC-20標準,您的合約必須設置六種強制性函數:totalSupply、balanceOf、transfer、transferFrom、approve以及allowance。此外,還可以指定可選函數,例如name、symbol和decimal。根據名稱即可瞭解函數功能,沒看明白也不必擔心,我們將在下文中逐一解析。

以下是通過以太坊專用的Solidity語言呈現的函數。


totalSupply

function totalSupply() public view returns (uint256)

用戶調用上述函數後,將返回合約所持代幣的總供應量。


balanceOf 

function balanceOf(address _owner) public view returns (uint256 balance)

與totalSupply不同,balanceOf使用地址作爲參數。調用後,系統返回該地址的代幣持有量餘額。請記住,以太坊網絡中的賬戶是公開透明的。只要知道地址,即可查詢任何用戶的餘額。


劃轉

function transfer(address _to, uint256 _value) public returns (bool success)

transfer函數支持用戶互相轉移代幣。您需要提供代幣接收地址和轉賬金額。

調用後,transfer會觸發事件(這種情況下爲“轉移”事件),基本功能是告知區塊鏈包含針對此函數的引用。


transferFrom

function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)

transferFrom函數是transfer函數的便捷替代方案,有效提升去中心化應用程序中的可編程性。與transfer函數類似,它用於移動代幣,但這些代幣不一定屬於調用合約的用戶。

換言之,您可以授權他人或另外一份合約來代替您轉移資金。例如,如果不願按日/按周/按月爲訂閱服務手動付費,可以讓程序代替您完成任務。

此函數觸發的事件與transfer相同。


approve

function approve(address _spender, uint256 _value) public returns (bool success)

從編程角度來看,approve是另一項非常有用的函數,可以限制智能合約從餘額中提取的代幣數量。沒有它,運行的合約有可能失效(或遭到利用),所有資金面臨失竊的風險。

再次以訂閱模型爲例。假設您持有大量幣安學院代幣,並且希望爲流媒體DApp設置每週定期支付。自己忙於閱讀幣安學院的文章,不想每週花時間手動創建交易。

所持的大量幣安學院代幣餘額遠超支付訂閱所需的費用。爲了防止DApp將全部資產支付一空,可以使用approve設置限額。假設您的訂閱每週花費1枚幣安學院代幣,如果批准限額爲20枚代幣,則可在5個月內自動支付訂閱費用。

如果程序出錯,DApp嘗試將資金提取一空,您最多隻會損失20枚代幣。雖然丟失代幣令人心煩,但與失去所有資產相比,結果要好很多。

調用該函數後,approve會觸發approval事件,與transfer函數一樣,它會將數據寫入區塊鏈。


allowance

function allowance(address _owner, address _spender) public view returns (uint256 remaining)

allowance可以與approve結合使用。如果爲合約授予代幣管理權限,您可以通過其檢查代幣的可提現餘額。例如,假設訂閱服務使用了20枚已批准代幣中的12枚,調用allowance函數會返回總計8枚代幣。


其他可選函數

上文討論的內容均爲強制性函數。另一方面,name、symbol和decimal屬於可選函數,但它們可以讓ERC-20更加完善。這些函數分別支持添加可讀名稱、設置符號(即ETH、BTC、BNB)以及指定代幣可劃分的小數位數。例如,用作貨幣的代幣比用來表示財產所有權的代幣更容易分割,因而更加受益。


請在GitHub查看此示例,瞭解這些元素在真實合約中的情況。


ERC-20具備哪些功能?


Illustration of various uses of ERC-20 tokens


彙總以上所有函數,便獲得了一份ERC-20合約。我們可以查詢總供應量、查看餘額、轉移資金並授權其他DApp代替我們管理代幣。

ERC-20代幣的靈活性是一項巨大的優勢。既定協議並不能限制開發,各方均可根據自身需求推出其他功能並設置特定參數。


穩定幣

穩定幣(與法幣掛鉤的代幣)通常使用ERC-20代幣標準。前文提及的BUSD合約交易就是典型示例,大多數的穩定幣也使用了這種形式。

對於主流法定貨幣支持的穩定幣,發行方可以持有歐元、美元等儲備金,然後針對儲備金中的每個單位發行代幣。這意味着,如果將1萬美元存入金庫,發行方可以創建1萬枚代幣,每枚代幣可兌換1美元。

從技術層面看,在以太坊中很容易實現。發行方只需推出帶有1萬枚代幣的合約,然後將代幣分發給用戶,許諾他們在未來可以將代幣兌換爲一定比例的法定貨幣。

用戶使用其代幣可以執行多種操作,包括購買商品和服務以及應用於DApp。此外,也可以要求發行方立即兌換這些代幣。在這種情況下,發行方也可以銷燬退回的代幣(讓其失效)並從儲備金中提取等額的法幣。

如前文所述,治理該系統的合約相對簡單。然而,推出穩定幣需要注意其他衆多外部因素(例如物流、合規性等),投入大量精力。


證券型代幣

證券型代幣類似於穩定幣,甚至在合約層級可以完全一致,因爲二者以相同的方式運作。區別在於發行方不同:證券型代幣代表有價證券,例如股票、債券或實物資產。它們通常(雖然並非一直如此)會授予持有者某家企業或商品的股份。


效用代幣

效用代幣可能是如今最常見的代幣類型。與前兩種代幣不同,效用代幣沒有任何實際資產提供支持。如果以航空公司的股份代表由資產支持的代幣,效用代幣就好比飛行常客計劃:它們具備某些功能,但沒有外部價值。效用代幣可以滿足衆多需求,例如用作遊戲內貨幣、去中心化應用程序的燃料以及忠誠度積分等。


➠ 想要開啓加密貨幣之旅?歡迎前往幣安購買以太幣!


是否可以參與ERC-20代幣挖礦?

您可以參與以太幣(ETH)挖礦,但代幣無法開採 – 我們將新代幣的創建稱爲鑄造。合約上線後,開發人員將根據計劃和路線圖分配供應量,

一般通過首次代幣發行(ICO)、首次交易所發行(IEO)或證券型代幣發行(STO)來完成。您可能會碰到這些首字母縮寫詞的多種變體,但它們的概念非常相似。投資者將以太幣發送至合約地址並獲得新代幣作爲回報。募集的資金用於爲項目的未來開發提供資金支持。用戶期待能夠(立即或稍後)使用其代幣或隨着項目的發展而轉售獲利。

代幣發放不一定自動執行。許多衆籌活動支持用戶使用各種數字貨幣(如BNB、BTC、ETH和USDT)完成支付,然後將相應餘額分配到用戶提供的地址。


ERC-20代幣的優缺點

ERC-20代幣的優點

可互換性

ERC-20代幣具有可互換性,所有單位均可互相交換。對於幣安學院代幣,無論持有哪一枚特定代幣都是一樣的。您可以與其他人展開交易,這些代幣的功能保持一致,類似於現金或黃金。

如果所持代幣希望發展成爲某種貨幣,這無疑是理想之選。特徵鮮明的代幣會失去可互換性,不符合您的要求。這會導致某些代幣的價值低於或高於同類代幣,違背了初衷。


靈活多變

正如前一章節探討的內容,ERC-20代幣具有極強的可定製性,可以爲不同應用程序量身定製解決方案。例如用作遊戲內貨幣、程序的忠誠度積分、數字收藏品,甚至可以代表藝術品和財產所有權。


深受歡迎

ERC-20在加密貨幣領域人氣高漲,基於其構建藍圖極具說服力。衆多交易平臺、錢包和智能合約現已兼容各種新推出的代幣。此外,開發人員的支持與文檔也相當全面。


ERC-20代幣的缺點

擴展性不佳

這是許多加密貨幣網絡的通病,以太坊也無法倖免。按照目前的形式,它無法很好地擴展。在高峯期發送交易會產生高額費用和長時間的延遲。如果使用ERC-20代幣而造成網絡擁塞,其可用性也會受到影響。

這並不是以太坊獨有的問題,而是所有安全的分佈式系統必須進行的權衡。社區計劃在遷移至Ethereum 2.0後解決這些問題,實施以太坊等離子體(Plasma)和以太坊Casper等升級改造。

敬請閱讀《區塊鏈可擴展性:側鏈和支付渠道》,詳細瞭解擴展性問題。


詐欺

雖然技術本身沒有問題,但在某些方面,輕鬆發行代幣可能是一項不利因素。簡單的ERC-20代幣很容易創建,這意味着任何人都可以做到,但意圖卻有好有壞。

因此,您必須謹慎投資。許多金字塔騙局和龐氏騙局僞裝成區塊鏈項目,在投資前必須自己做好調研,確認投資機會是否合法。

 

ERC-20、ERC-1155、ERC-223和ERC-721的區別是什麼?

ERC-20是首個(也是迄今爲止最受歡迎的)以太坊代幣標準,但並不是唯一一個。多年來,其他諸多標準不斷問世。它們大多是ERC-20的改進標準,另一些則試圖實現完全不同的目標。

少數不常見的標準應用於非同質化代幣(NFT)。在某些情況下,擁有不同屬性的獨特代幣會讓您成爲受益者。如需將獨一無二的藝術品、遊戲內資產等代幣化,其中一類合約可能更具吸引力。

例如,ERC-721標準用於非常熱門的謎戀貓(CryptoKitties) DApp。這種合約爲用戶提供了API,支持用戶鑄造專屬非同質化代幣並對元數據(圖像、說明等)編碼。

ERC-1155標準可以看作是針對ERC-721和ERC-20的改進。它在單一合約中同時支持同質化和非同質化代幣標準。

其他選項(如ERC-223或ERC-621)旨在提高可用性。前者實施保護措施,防止代幣意外轉移。後者對增減代幣供應量提供附加功能。

欲瞭解有關NFT的詳細內容,敬請閱讀《加密收藏品和非同質化代幣(NFT)指南》。


總結

多年來,ERC-20標準一直是加密資產領域的主導者。原因顯而易見:該標準相對簡單,任何人均可部署簡易合約來適應各種需求(效用代幣、穩定幣等)。儘管如此,ERC-20的確缺少其他標準的一些功能,但其他合約類型能否取而代之還有待觀察。