什麼是 ERC-20 代幣?在接下來的文章中,我們將對其進行詳細解釋。
Vitalik Buterin 於 2014 年創立了以太坊,作為創建去中心化應用程序 (DApps) 的開源(open-source)平台。
由於比特幣協議的靈活性有限,Buterin 想創建一個新的區塊鏈。
自推出以來,以太坊區塊鏈已發展成為一個由開發人員、企業和企業家組成的繁榮生態系統,吸引了越來越多的開發智能合約和分佈式應用程序的用戶社區。
ERC-20 standard 是創建 token 代幣的重要框架,我們將在本文中對其進行研究。
雖然 ERC-20 standard 是專門為以太坊網絡創建的,但該框架也啟發了其他區塊鏈標準,例如 Binance Chain 的 BEP-2。
ERC-20 有什麼作用?

ERC 全寫是 「Ethereum Request for Comments」,是用來描述以太坊編程標準。它們不同於 Ethereum Improvement Proposals (EIP),後者與比特幣的 BIP 一樣,旨在改進協議本身。另一方面,ERC 尋求建立標準,使應用程序和合同更容易協同工作。
2015 年,Vitalik Buterin 和 Fabian Vogelsteller 創建了 ERC-20,這是一種基於以太坊的 token 的簡單格式。開發人員可以利用現有的基礎來構建自己的代幣,而不是從頭開始。
實施了 ERC-20 標準(錢包、硬件錢包、交易所和其他服務和軟件)後,就可以創建新的 ERC-20 代幣。它們將自動互操作。
由於 ERC-20 標準被廣泛採用,在其最初提出的幾年後,ERC-20 標準變成了 EIP(特別是 EIP-20)。然而,“ERC-20”這個綽號在多年後仍在使用。
我們建議在繼續閱讀本文之前先觀看以下影片:
以太坊代幣詳解
與 ETH(以太坊的原生加密貨幣)不同,ERC-20 代幣不由賬戶持有。它們存在於合約中,類似於一個獨立的數據庫。它定義了 token 的特徵(名稱、符號、可分割性)並使用以太坊地址追蹤用戶餘額。
用戶必須向合約發送交易,要求它在其他地方分配一些餘額,以便轉移代幣。
在這種情況下,如果 Alice 想向 Bob 發送 5,000 個特定代幣,她會調用代幣智能合約中的一個函數來要求它這樣做。
交易中的額外字段指定 Alice 要做什麼——在我們的例子中,將代幣轉移給 Bob ——0 ETH。
即使她沒有發送任何以太幣,她仍然必須支付以以太幣計價的費用才能將她的交易包含在一個區塊中。如果她沒有 ETH,她必須在轉移代幣之前獲得一些 ETH。
這是 Etherscan 上上述內容的真實示例:有人正在調用 BUSD 合約。您可以看到正在轉移的代幣和正在支付的費用,即使 Value 字段表明沒有發送任何 ETH。
讓我們看一下 ERC-20 合約的內部工作原理,以更好地理解其結構。
創建 ERC-20 代幣的過程是怎樣的?
您的合約必須包括六個基本的 ERC-20 功能: totalSupply(總供給), balanceOf(餘額), transfer(轉移), transferFrom(從轉移), approve(批准)和 allowance(額度).
此外,您可以包括可選功能,如 name, symbol和 decimals.
您可以從它們的名稱中推斷出這些函數的作用。如果沒有,別擔心——我們會解釋它們。
以下是以太坊專用 Solidity 語言的內置函數列表。
totalSupply(總供給)
- function totalSupply() public view returns (uint256)
返回代幣總供應量的函數。
上述函數返回用戶請求時合約持有的代幣數量。
balanceOf(餘額)
- function balanceOf(address _owner) public view returns (uint256 balance)
balanceOf(餘額) 接受一個參數(一個地址)並返回該地址的代幣持有量的餘額,這與 totalSupply(總供給).
在以太坊網絡上,賬戶是公開的,所以如果你知道他們的地址,你可以查詢任何用戶的餘額。
transfer(轉移)
- function transfer(address _to, uint256 _value) public returns (bool 成功)
transfer(轉移) 適當地將代幣從一個用戶轉移到另一個用戶。在這裡,您提供要發送到的地址和轉賬金額。
當該函數是 public 時,如果傳輸成功則返回 true,否則返回 false(或拋出異常)。
您指定要發送到的地址和要轉移的金額,以便正確轉移代幣。
調用傳輸時會觸發事件(在本例中為事件傳輸),向區塊鏈發出信號以包含對其的引用。
transferFrom(從轉移)
- function transferFrom(address _from, address _to, uint256 _value) public returns (bool success)
如果傳輸成功,則成功調用 transferFrom(...) 會返回 true。
在去中心化應用中, transferFrom(從轉移) 功能是一個很好的替代品 transfer(轉移),因為它允許更多的可編程性。
喜歡 transfer(轉移),它移動代幣,但這些代幣不一定屬於調用合約的人。
您可以讓另一個合同或個人使用以太坊代表您執行付款。例如,您可能希望為基於訂閱的服務付費,而不必每天、每週或每月付款。相反,您讓程序為您處理。
此函數觸發與 transfer(轉移).
approve(批准)
- function approve(address _spender, uint256 _value) public returns (bool success)
如果交易成功,它返回 true。
approve(批准) 從可編程的角度來看,這是另一個很棒的特性。使用此功能,您可以限制智能合約可以從您的餘額中提取的代幣數量。
沒有它,你可能會得到一個錯誤(或被利用)的合約,它會竊取你所有的代幣。
假設您持有很多特定的代幣,並希望為流式 DApp 設置定期付款。您日夜忙碌,所以您不想每週花時間手動進行交易。
您目前擁有大量特定代幣,足以支付您的訂閱費用。
為了防止 DApp 將它們全部消耗掉,您可以限制您批准的數量。例如,如果您希望自動支付五個月的訂閱費用,您必須將批准的金額限制為 20 個代幣。
如果 DApp 試圖提取您的所有資金或發現錯誤,可能發生的最糟糕的事情是您損失了 20 個代幣。這可能並不理想,但肯定比失去所有資產更具吸引力。
當觸發批准事件時,它將數據寫入區塊鏈。它在被調用時批准。
allowance(額度)
- function allowance(address _owner, address _spender) public view returns (uint256 remaining)
檢查地址剩餘額度的功能。
可以使用 approve(批准) 結合功能 allowance(額度) 檢查一個合約有多少代幣被授予管理權限。
例如,如果您的訂閱用完了您的 20 個已批准代幣中的 12 個,allowance 函數應該返回 8 個。
可選功能
雖然需要前面討論的功能, name, symbol和 decimal 位置是可選的。
換句話說,您可以添加一個人類可讀的名稱,設置一個符號(例如 ETH、BTC 或 BNB),並指定 token 可以整除多少個小數位。
例如,代表財產的代幣可能比充當貨幣的代幣更易分割。
ERC-20代幣有什麼用?
我們通過組合上述所有功能創建了 ERC-20 合約。
我們可以查詢總供應量、查看餘額、轉賬,並允許其他 DApp 為我們管理代幣。
ERC-20 協議因其多功能性而廣受歡迎。只要遵守約定,各方就可以建立自定義值並添加其他功能。
穩定幣(Stablecoins)
大多數主要的穩定幣都使用 ERC-20 token 標準,該標准通常用於與法定貨幣掛鉤的穩定幣。
我們之前提到的 BUSD 合約交易就是一個例子,大多數主要的穩定幣也可以這種格式提供。
為了製作法幣支持的穩定幣,發行人持有歐元、美元等儲備金。對於發行的每一個代幣,他們都會保留一個單位法幣的儲備金。如果 $10,000 被鎖在金庫中,發行人可以創建 10,000 個代幣,每個代幣可兌換 $1。
從技術上講,在以太坊上發行代幣很簡單。使用 10,000 個代幣創建合約。然後,用戶將獲得代幣,以換取他們以後支付等量法定貨幣的承諾。
用戶可以使用他們的代幣購買物品或在 DApps 中使用它們,或者他們可以要求發行者立即交換它們。發行人銷毀返回的代幣(使其無法使用)並從其儲備中提取正確數量的資金。
如前所述,管理該系統的合同相對簡單。然而,創建穩定幣需要在物流、合規性等外部因素方面做大量工作。
Security tokens
穩定幣和 Security tokens 在合約層面的工作方式相同。
發行人而非合約決定代幣是否代表證券,例如股票、債券或實物資產。Security tokens 由證券表示,例如股票、債券或實物資產。
代幣可以授予持有人某種公司或產品的股份,儘管情況並非總是如此。
Utility tokens
當今使用最廣泛的代幣是實用型代幣。與前兩種產品不同,它們沒有任何支持。
如果資產支持代幣可與航空公司的股票相提並論,那麼實用型代幣就可與飛行常客計劃相提並論:它們有一個目的但沒有外部價值。
代幣可用於多種用途,包括遊戲內貨幣、去中心化應用程序的燃料、忠誠度積分等等。
ERC-20 代幣可以開採嗎?
ETH 代幣不可開採;我們說它們是在創建新的時鑄造(minted)的。
開發人員在啟動合同時根據他們的計劃和發展藍圖分配供應。
ICO、IEO 或 STO 通常是這種情況發生的方式。這些過程有幾個類似的術語,但含義基本相同。
投資者將以太幣發送到合約地址並收到新的代幣作為回報。籌集的資金用於資助該項目的未來發展。用戶希望能夠立即使用他們的代幣,或者隨著項目的發展轉售它們以獲取利潤。
Token 可以以不同的方式分發,但不必自動化。眾籌計劃經常允許用戶使用各種數字貨幣進行支付,例如 BNB、BTC、ETH 和 USDT(等等)。然後將餘額分配到用戶提供的地址。
ERC-20代幣的優缺點
優點
可替代的(Fungible)
每個 ERC-20 token 都是可替代的——這意味著每個單元都可以替換為另一個單元。您是否擁有某個token 或另一個 ERC-20 token 並不重要;你可以交換它們,它們在功能上是相同的,就像現金或黃金一樣。
如果您的代幣旨在成為一種貨幣,則不可替代代幣是最佳選擇。
具有獨特特徵的單個單元會使它們不可替代,這會使某些代幣比其他代幣更有價值或更不值錢,從而破壞它們的功能。
多元化的(Versatile)
正如我們在上一節中了解到的,可以為許多不同的目的定制 ERC-20 代幣。例如,它們可以用作遊戲內貨幣、忠誠度積分系統、數字收藏品,甚至可以用作美術和產權的象徵。
受歡迎的
ERC-20 在加密貨幣世界中廣泛使用的事實是採用它作為模型的一個令人信服的理由。
此外,有很多交易所、錢包和智能合約已經與新代幣兼容。開發人員支持和文檔非常豐富。
缺點
可擴展性(Scalability)
以太坊網絡有許多限制使其無法很好地擴展——當網絡最繁忙時會發生高額費用和延遲。
如果您啟動 ERC-20 代幣,如果網絡變得擁塞,它的可用性可能會受到影響。
雖然以太坊有其自身的一系列可擴展性問題,但社區正在努力通過以太坊 2.0 升級來解決這些問題,這將實施以太坊 Plasma 和以太坊 Casper 改進等升級。
騙局
在某些方面,可以創建 token 的簡單性可能被認為是一個缺點,而不是技術本身的問題。因此,任何人都可以創建 ERC-20 代幣,這不需花太多工夫。
因此,您應該謹慎投資您的資金。有許多偽裝成區塊鏈計劃的金字塔和龐氏騙局。在投資之前做自己的研究,這樣您就可以得出自己的結論,判斷風險投資是否合法。
ERC-20、ERC-1155、ERC-223、ERC-721有什麼區別?
除了 ERC-20(第一個也是最受歡迎的標準(到目前為止))之外,還為以太坊創建了許多其他 token 標準。 ERC-20 多年來一直在修訂,但也提出了其他替代方案。
不可替代代幣 (NFT) 使用某些不太常見的標準。在某些情況下,您的工作可能會受益於具有獨特屬性的代幣。例如,如果你想標記一件獨一無二的藝術品,這些合約之一可能更合適。
例如,可以使用 ERC-721 標準創建不可替代的代幣。 API 允許用戶創建自己的 token 並對元數據(圖像、描述等)進行編碼。廣受歡迎的 DApp CryptoKitties 就使用了這個標準。
ERC-1155 可被視為對 ERC-721 和 ERC-20 標準的改進。它定義了一個協議,允許可分割和不可分割的代幣存在於同一個合約中。
ERC-223 和 ERC-621 等其他標準旨在提高可用性。前者通過實施保護措施來防止意外的代幣轉移。後者增加了增加和減少代幣數量的額外功能,以提高可用性。
結語
長期以來,ERC-20 標準一直主導著加密資產行業,原因很簡單。
任何人都可以創建一個簡單的合約來適應廣泛的用途(實用代幣、穩定幣等),但 ERC-20 缺乏其他標準帶來的一些功能。後續合約類型是否會繼承它還有待觀察。
什麼是 Zookram?
Zookram 是學習 web3 + 加密貨幣的終極指南。我們涵蓋了您需要了解的所有內容,從如何購買每種加密貨幣到如何製作 NFT。