目錄
以太坊由Vitalik Buterin於2014年創立,其定位為推出去中心化應用程式(DApp)的開源平台。 Buterin創建這條全新區塊鏈的動機很大程度上源自於比特幣協議缺乏彈性。
自問世以來,以太坊區塊鏈吸引了許多開發人員、企業和企業家,催生出由用戶推出智慧合約和分散式應用程式的新興產業。
在本文中,我們將研究ERC-20標準,它是創建代幣的重要框架。雖然僅應用於以太坊網絡,但它是其他區塊鏈標準(例如幣安鏈的BEP-2)的靈感來源。
在以太坊中,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),她會在對應的智能合約中呼叫函數來執行指令。
她的呼叫指令中包含看似常規的以太坊交易,該筆交易向代幣合約支付了0枚ETH。這項呼叫包含在交易的其他欄位中,指定Alice的意圖——在本案例中,她希望將代幣轉給Bob。
即使不發送以太幣,她也必須支付指定費用,才能將交易加入區塊。如果沒有ETH,則應在轉移代幣前預存一些ETH。
以下是Etherscan中的真實案例:某人調用了一份BUSD合約。您會看到代幣已經轉移,並支付了手續費,儘管價值欄位顯示發送了0枚ETH。
接下來,我們加快步伐,深入了解典型的ERC-20合約結構。
依照ERC-20標準,您的合約必須設定六種強制性函數:totalSupply、balanceOf、transfer、transferFrom、approve span>以及allowance。此外,還可以指定可選函數,例如name、symbol和decimal strong>。根據名稱即可了解函數功能,沒看明白也不必擔心,我們將在下文中逐一解析。
以下是透過以太坊專用的Solidity語言呈現的函數。
function totalSupply() public view returns (uint256)
用戶呼叫上述函數後,將傳回合約所持代幣的總供應量。
function span> balanceOf(address _owner) public view returns (uint256 balance)
與totalSupply不同,balanceOf使用地址作為參數。呼叫後,系統會傳回該位址的代幣持有量餘額。請記住,以太坊網路中的帳戶是公開透明的。只要知道地址,即可查詢任何用戶的餘額。
function span> transfer(address _to, uint256 _value) public returns (bool success)
transfer函數支援使用者互相轉移代幣。您需要提供代幣接收地址和轉帳金額。
呼叫後,transfer會觸發事件(這種情況下為“轉移”事件),基本功能是告知區塊鏈包含針對此函數的引用。
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success )
transferFrom函數為transfer函數的便利替代方案,有效提升去中心化應用程式中的可程式性。與transfer函數類似,它用於移動代幣,但這些代幣不一定屬於調用合約的用戶。
換言之,您可以授權他人或另外一份合約來代替您轉移資金。例如,如果您不願意按日/按週/按月為訂閱服務手動付費,可以讓程式代替您完成任務。
此函數觸發的事件與transfer相同。
function approve(address _spender, uint256 _value) public returns (bool success) pre>從程式設計角度來看,approve是另一個非常有用的函數,可以限制智能合約從餘額中提取的代幣數量。沒有它,運作的合約有可能失效(或遭到利用),所有資金面臨失竊的風險。
再次以訂閱模型為例。假設您持有大量幣安學院代幣,並且希望為串流媒體DApp設定每周定期支付。自己忙於閱讀幣安學院的文章,不想每週花時間手動創建交易。
所持的大量幣安學院代幣餘額遠超過支付訂閱所需的費用。為了防止DApp將全部資產支付一空,可以使用approve設定限額。假設您的訂閱每週花費1枚幣安學院代幣,如果批准限額為20枚代幣,則可在5個月內自動支付訂閱費用。
如果程式出錯,DApp嘗試將資金提取一空,您最多只會損失20枚代幣。雖然丟失代幣令人心煩,但與失去所有資產相比,結果要好得多。
呼叫函數後,approve會觸發approval strong>事件,與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具備哪些功能?
總結以上所有函數,便獲得了一份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代幣的缺點
擴展性不佳 h4>
這是許多加密貨幣網路的通病,以太幣也無法倖免。按照目前的形式,它無法很好地擴展。在高峰期發送交易會產生高額費用和長時間的延遲。如果使用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的確缺少其他標準的一些功能,但其他合約類型能否取而代之還有待觀察。