介紹
以太坊由 Vitalik Buterin 於 2014 年創立,將自己定位爲啓動去中心化應用程序(DApp)的開源平臺。 Buterin 創建新區塊鏈的許多動機源於比特幣協議缺乏靈活性。
自推出以來,以太坊區塊鏈吸引了開發者、企業和企業家,催生了一個不斷增長的用戶推出智能合約和分佈式應用程序的行業。
在本文中,我們將瞭解 ERC-20 標準,這是創建代幣的重要框架。雖然該框架特定於以太坊網絡,但它也啓發了其他區塊鏈標準,例如幣安鏈的 BEP-2。
什麼是ERC-20標準?
在以太坊中,ERC 是以太坊徵求意見。這些技術文檔概述了以太坊編程標準。不要將它們與以太坊改進提案(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 BinanceAcademyToken,她會調用 BinanceAcademyToken 智能合約內的一個函數,要求其這樣做。

她的調用包含在看似常規的以太坊交易中,該交易向代幣合約支付 0 ETH。該調用包含在交易的附加字段中,該字段指定 Alice 想要做什麼 - 在我們的例子中,將代幣轉移給 Bob。
即使她沒有發送以太幣,她仍然必須支付以以太幣計價的費用才能將她的交易包含在區塊中。如果她沒有 ETH,她需要在轉移代幣之前獲得一些。
以下是 Etherscan 上上述內容的真實示例:有人正在調用 BUSD 合約。您可以看到代幣已轉移,並且已支付費用,即使 Value 字段顯示已發送 0 ETH。
現在我們已經熟悉了,讓我們深入瞭解一下,以更好地理解典型 ERC-20 合約的結構。
ERC-20 代幣是如何創建的?

爲了符合 ERC-20 標準,您的合約需要包含六個強制功能:totalSupply、balanceOf、transfer、transferFrom、approve 和 grant。此外,您還可以指定可選函數,例如名稱、符號和小數。您可能從名稱中就清楚這些函數的用途。如果沒有,別擔心——我們會分解它們。
以下是以太坊專用 Solidity 語言中出現的函數。
總供應量
函數totalSupply()公共視圖返回(uint256)當用戶調用時,上述函數返回合約持有的代幣總供應量。
餘額
函數balanceOf(地址_所有者)公共視圖返回(uint256餘額)與totalSupply不同,balanceOf需要一個參數(地址)。調用時,它會返回該地址持有的代幣餘額。請記住,以太坊網絡上的帳戶是公共的,因此只要您知道地址,您就可以查詢任何用戶的餘額。
轉移
函數傳輸(address _to, uint256 _value) 公共返回 (bool success)Transfer 恰當地將代幣從一個用戶轉移到另一個用戶。在這裏,您提供要發送的地址和轉賬金額。
調用時,傳輸會觸發稱爲事件的事件(在本例中爲事件傳輸),這基本上告訴區塊鏈包含對其的引用。
從轉移
函數transferFrom(地址_from,地址_to,uint256_value)公共返回(布爾成功)TransferFrom 函數是轉賬的便捷替代方案,它可以在去中心化應用程序中提供更多的可編程性。與轉賬一樣,它用於移動代幣,但這些代幣不一定屬於調用合約的人。
換句話說,您可以授權某人(或其他合同)代表您轉移資金。一個可能的用例涉及支付基於訂閱的服務,您不希望每天/每週/每月手動發送付款。相反,您只需讓程序爲您完成即可。
該函數觸發與傳輸相同的事件。
批准
函數批准(地址_spender,uint256_value)公共返回(布爾成功)從可編程性的角度來看,approve 是另一個有用的函數。通過此功能,您可以限制智能合約可以從您的餘額中提取的代幣數量。如果沒有它,您將面臨合約故障(或被利用)並竊取您所有資金的風險。
再次以我們的訂閱模型爲例。假設您有大量的 BinanceAcademyToken,並且您想要爲流式 DApp 設置每週定期付款。您日夜忙於閱讀幣安學院內容,因此您不想每週花時間手動創建交易。
您擁有大量的 BinanceAcademyToken 餘額,遠遠超過支付訂閱費用所需的金額。爲了防止 DApp 耗盡所有資金,您可以通過批准設置限制。假設您的訂閱費用爲每週 1 個 BinanceAcademyToken。如果您將批准的價值上限限制爲 20 個代幣,那麼您可以自動支付五個月的訂閱費用。
在最壞的情況下,如果 DApp 嘗試提取您的所有資金或發現錯誤,您只能損失 20 個代幣。這可能並不理想,但它肯定比失去所有資產更有吸引力。
調用時,approve 會觸發approval 事件。與轉賬事件一樣,它將數據寫入區塊鏈。
津貼
函數 grant(address _owner, address _spender) 公共視圖返回(剩餘 uint256)津貼可以與批准結合使用。當您授予合約管理代幣的權限時,您可以使用它來檢查它仍然可以提取多少代幣。例如,如果您的訂閱已用完 20 個已批准代幣中的 12 個,則調用限額函數應返回總共 8 個代幣。
可選功能
前面討論的功能是強制性的。另一方面,名稱、符號和小數不需要包含在內,但它們可以使您的 ERC-20 合約更漂亮一些。它們分別允許您添加人類可讀的名稱、設置符號(即 ETH、BTC、BNB)以及指定代幣可整除的小數位數。例如,用作貨幣的代幣可能比代表財產所有權的代幣更容易分割,從而受益更多。
在 GitHub 上查看此示例,瞭解真實合約中的這些元素。
ERC-20 代幣可以做什麼?

通過將上述所有功能組合在一起,我們就得到了 ERC-20 合約。我們可以查詢總供應量、檢查餘額、轉移資金以及授予其他 DApp 爲我們管理代幣的權限。
ERC-20 代幣的一大吸引力在於其靈活性。規定的約定並不限制開發,因此各方可以實現額外的功能並設置特定的參數來滿足他們的需求。
穩定幣
穩定幣(與法定貨幣掛鉤的代幣)通常使用 ERC-20 代幣標準。我們之前提到的 BUSD 合約交易就是一個例子,大多數主要穩定幣也都以這種格式提供。
對於典型的法幣支持的穩定幣,發行人持有歐元、美元等儲備。然後,他們爲其儲備中的每個單位發行一個代幣。這意味着,如果 10,000 美元被鎖在金庫中,發行者可以創建 10,000 個代幣,每個代幣可兌換 1 美元。
從技術上來說,這在以太坊中很容易實現。發行人只需啓動包含 10,000 個代幣的合約即可。然後,他們將它們分發給用戶,並承諾他們稍後可以將代幣兌換成一定比例的法定貨幣。
用戶可以用他們的代幣做很多事情——他們可以購買商品和服務或在 DApp 中使用它們。或者,他們可以要求發行人立即交換它們。在這種情況下,發行人會銷燬返回的代幣(使其無法使用)並從其儲備中提取正確數量的法定貨幣。
如上所述,管理該系統的合同相對簡單。然而,推出穩定幣需要在物流、監管合規等外部因素上做大量工作。
安全令牌
安全代幣類似於穩定幣。在合同層面,兩者甚至可以是相同的,因爲它們以相同的方式運作。這種區別發生在發行人層面。證券型代幣代表證券,例如股票、債券或實物資產。通常(儘管情況並非總是如此),他們會授予持有人某種企業或商品的股權。
實用代幣
實用代幣可能是當今最常見的代幣類型。與前兩種產品不同,它們沒有任何支持。如果資產支持代幣就像航空公司的股票,那麼實用代幣就像常旅客計劃:它們提供功能,但沒有外部價值。實用代幣可以滿足無數的用例,充當遊戲內貨幣、去中心化應用程序的燃料、忠誠度積分等等。
➠ 想要開始使用加密貨幣?在幣安上購買以太幣!
您可以開採 ERC-20 代幣嗎?
你可以開採以太幣(ETH),但代幣是不可開採的——我們說它們是在創建新代幣時鑄造的。當合同啓動時,開發商根據他們的計劃和路線圖分配供應。
通常,這是通過首次代幣發行 (ICO)、首次交易所發行 (IEO) 或證券型代幣發行 (STO) 來完成。您可能會遇到這些縮寫詞的變體,但這些概念非常相似。投資者將以太幣發送到合約地址,作爲回報,收到新的代幣。籌集到的資金將用於資助該項目的進一步開發。隨着項目的發展,用戶希望能夠使用他們的代幣(立即或稍後)或轉售以獲取利潤。
代幣分配不需要自動化。許多衆籌活動允許用戶使用一系列不同的數字貨幣(例如 BNB、BTC、ETH 和 USDT)進行支付。然後,相應的餘額將分配到用戶提供的地址。
ERC-20 代幣的優缺點
ERC-20 代幣的優點
可替代的
ERC-20 代幣是可互換的——每個單位都可以與另一個單位互換。如果您持有 BinanceAcademyToken,那麼您擁有什麼特定代幣並不重要。你可以用它換取別人的,它們在功能上仍然是相同的,就像現金或黃金一樣。
如果您的代幣旨在成爲某種貨幣,那麼這是理想的選擇。你不會想要具有可區分特徵的單個單位,這將使它們不可替代。這可能會導致某些代幣變得比其他代幣更有價值或更少,從而破壞了它們的目的。
靈活的
正如我們在上一節中探討的那樣,ERC-20 代幣具有高度可定製性,可以針對許多不同的應用程序進行定製。例如,它們可以用作遊戲內貨幣、忠誠度積分計劃、數字收藏品,甚至可以代表美術和產權。
受歡迎的
ERC-20 在加密貨幣行業的受歡迎程度是使用它作爲藍圖的一個非常令人信服的理由。有大量的交易所、錢包和智能合約已經與新推出的代幣兼容。此外,開發人員支持和文檔也很豐富。
ERC-20 代幣的缺點
可擴展性
與許多加密貨幣網絡一樣,以太坊也不能倖免於成長的煩惱。在目前的形式下,它的擴展性不佳——嘗試在高峯時間發送交易會導致高額費用和延遲。如果您啓動 ERC-20 代幣並且網絡變得擁塞,其可用性可能會受到影響。
這並不是以太坊獨有的問題。相反,這是安全分佈式系統中必要的權衡。社區計劃在遷移到以太坊 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 確實缺乏其他標準帶來的一些功能。後續類型的合同是否會取代它還有待觀察。

