內容

  • 介紹

  • 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 是以太坊徵求意見。這些是定義以太坊程式設計標準的技術文件。這些不應與以太坊改進提案(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 智能合約中的函數來要求他這樣做。


Utilisateurs interagissant avec un smart contract


他的調用包含在看似常規的以太坊交易中,該交易向代幣合約支付 0 ETH。該呼叫包含在交易的附加欄位中,該欄位指定 Alice 想要做什麼。在我們的例子中,將代幣轉移給 Bob。

即使她不發送以太幣,她仍然需要支付費用才能將她的交易包含在區塊中。如果她沒有 ETH,則必須在轉移代幣之前獲取一些 ETH。

以下是 Etherscan 上上述內容的真實範例:有人呼叫 BUSD 合約。您可以看到代幣已被轉移,並且費用已支付,即使值欄位顯示發送了 0 ETH。

現在我們了解了基礎知識,讓我們深入了解一下,以便更好地了解典型 ERC-20 合約的結構。


ERC-20 代幣是如何創建的?


Illustration de la création d'un token ERC-20


為了符合 ERC-20 標準,您的合約必須包含六個強制性功能:totalSupply、balanceOf、transfer、transferFrom、approve 和 grant。此外,您還可以指定可選函數,例如名稱、符號和小數。這些函數的名稱可能會讓您清楚它們的作用。如果沒有,別擔心,我們將在下面解釋。

以下是專為以太坊設計的 Solidity 語言中出現的函數。


總供應量

函數totalSupply()公共視圖回傳(uint256)

當使用者呼叫時,上述函數會傳回合約持有的代幣總供應量。


餘額

函數balanceOf(地址_所有者)公共視圖傳回(uint256餘額)

與totalSupply不同,balanceOf需要一個參數(位址)。呼叫時,它會傳回該地址持有的代幣餘額。請記住,以太坊網路上的帳戶是公開的,因此只要您知道任何用戶的地址,您就可以查詢他們的餘額。


轉移

函數傳輸(address _to, uint256 _value) 公共回傳 (bool success)

轉移將代幣從一個用戶轉移到另一個用戶。您可以在此指定您想要匯款的地址和轉帳金額。

在呼叫時,傳輸會觸發稱為事件的事件(在本例中為傳輸事件),該事件本質上告訴區塊鏈包含對其的引用。


從轉移

函數transferFrom(位址_from,位址_to,uint256_value)公共回傳(布林成功)

TransferFrom 函數是轉帳的便捷替代方案,它允許在去中心化應用程式中提供更多的可程式性。與轉帳一樣,它用於移動代幣,但代幣不一定屬於調用合約的人。

換句話說,您可以授權某人或其他合約代表您轉移資金。一個可能的用例涉及支付基於訂閱的服務,您不希望每天/每週/每月手動發送付款。相反,您讓程式為您做這件事。

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


核准

函數批准(地址_spender,uint256_value)公共返回(布林成功)

從可程式性的角度來看,approve 是另一個有用的函數。借助此功能,您可以限制智能合約可以從您的餘額中提取的代幣數量。如果沒有它,合約可能會發生故障(或變得惡意),這可能會導致您損失所有資金。

讓我們回到我們的訂閱模型範例。假設您擁有大量 BinanceAcademyToken,並且想要為串流 DApp 設定每周定期付款。您日夜忙著閱讀幣安學院的內容。因此,您不想每週花時間手動建立交易。

您擁有巨額的 BinanceAcademyTokens 餘額,遠遠超出了支付訂閱費用所需的金額。為了防止DApp耗盡它們,您可以透過approve設定一個限制。假設您的訂閱費用為每週 1 個 BinanceAcademyToken。如果您將批准的價值上限限制為 20 個代幣,那麼您可以自動支付五個月的訂閱費用。

在最壞的情況下,如果 DApp 試圖撤回您的所有資金或發現錯誤,您只能損失 20 個代幣。這可能不是理想的解決方案,但它肯定比損失所有資金更有吸引力。

呼叫時,approve 會觸發approval 事件。與轉帳事件一樣,它將資料寫入區塊鏈。


津貼

函數 grant(address _owner, address _spender) 公共視圖回傳(剩餘 uint256)

津貼可以與批准結合使用。當您授予合約授權來管理您的代幣時,您可以使用它來檢查還可以提取多少。例如,如果您的訂閱已消耗了 20 個已批准代幣中的 12 個,則呼叫限額函數應傳回總共 8 個代幣。


選用功能

前面介紹的功能是強制性的。但函數、名稱、符號和小數不需要包含在內,但它們可以讓你的 ERC-20 合約更漂亮一點。它們分別允許您添加人類可讀的名稱、定義符號(例如 ETH、BTC、BNB),並指定代幣可整除的小數位數。例如,用作貨幣的代幣可能比代表資產所有權的代幣更容易分割。


在 GitHub 上查看此範例,以了解實際合約中的這些元素。


ERC-20 代幣可以做什麼?


Illustration des différentes utilisations des tokens 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 時解決這些問題,以太坊 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 缺乏其他標準實現的一些功能。後續類型的合約是否會到位還有待觀察。