什么是ERC?
ERC(Ethereum Request for Comment)是以太坊的意見征求稿(RFC)版本犁享,由互聯(lián)網(wǎng)工程任務組設計。RFC中包含了以太坊的技術和組織說明豹休,ERC則包含一些以太坊網(wǎng)絡構建技術指南炊昆。
ERC標準是由以太坊開發(fā)人員為以太坊社區(qū)編寫的。他們?yōu)榱私o以太坊平臺創(chuàng)建標準威根,提交了以太坊改進建議( EIP )——包括協(xié)議規(guī)范和合同標準凤巨。如果EIP被委員會批準并最終確定,它就成為了一個ERC医窿。
這些被委員會批準確定的EIP磅甩,為以太坊開發(fā)人員提供了一套可行的ERC標準。由于EIP的接口是開放的姥卢,所以開發(fā)人員可以基于這些標準之上構建智能合約卷要。其中ERC-20是整個加密社區(qū)中最流行的標準,以太坊平臺上的所有通證都使用這一標準独榴。下面我們就來了解什么是ERC-20標準僧叉,以及其他的一些ERC標準。
什么是ERC-20標準
ERC-20標準包括以下方法:
totalSupply()
:返回token的總供應量棺榔。balanceOf(address _owner)
:指定賬戶地址的賬戶余額瓶堕。transfer(address _to, uint256 _value)
:發(fā)送一筆交易,發(fā)送數(shù)量為_value的token到地址_to症歇,觸發(fā)Transfer事件郎笆。transferFrom(address _from, address _to, uint256 _value)
:從地址_from發(fā)送數(shù)量為_value的token到地址_to,觸發(fā)Transfer事件忘晤。approve(address _spender, uint256 _value)
:允許_spender提取一定數(shù)量的金額宛蚓。allowance(address _owner, address _spender)
:返回允許_spender從_owner提取的金額。
以上這些方法將會觸發(fā)以下事件:
transfer(address indexed _from, address indexed _to, uint256 _value)
:當token被轉移時則會觸發(fā)设塔。approval(address indexed _owner, addressindexed _spender, uint256 _value)
:成功調用approve方法后則會觸發(fā)凄吏。
ERC-20標準于2015年被提出,并于2017年9月正式確定闰蛔,這是通證標準化的一個很好的開始痕钢。但是,社區(qū)中的一些開發(fā)人員指出序六,這個標準存在缺陷和漏洞任连。另外,有些用例的確需要使用不同的標準难咕,下面介紹一些其他的ERC標準课梳。
ERC-223
狀態(tài):打開
提出日期:2017年5月3日
開發(fā)人員Dexaran詳細描述了ERC-223標準適用的兩種場景:
在ERC20通證標準中執(zhí)行交易有兩種方式:
1.transfer方法距辆。
2.approve + transferFrom 機制。
Token余額只是通證合約中的一個變量暮刃。
Token的交易在合約中的表現(xiàn)是變量的變化:轉出賬戶的余額將減少跨算,接收賬戶的余額將增多。
交易發(fā)生時椭懊, transfer方法不會通知接收賬戶诸蚕,接受賬戶也將無法識別傳入交易!下面是我寫的一個例子氧猬,來展示導致交易未處理和資金損失的過程 背犯。
如果接收賬戶接受到的是合約,用戶必須使用approve +transferFrom 機制來轉移通證盅抚;如果接收賬戶是外部帳戶地址漠魏,用戶必須通過 transfer方法轉移Token;如果選擇了錯誤的方法妄均,token將被卡在合約中(合約將不會識別交易)柱锹,那么,我們將無法提取這些被卡住的token丰包。
Dexaran提出的ERC-223標準就解決了這一問題禁熏,而且,它與ERC-20標準非常相似邑彪。當token轉移到智能合約時瞧毙,該合約的一個特殊方法tokenFallback將允許接收合約、拒絕通證或觸發(fā)進一步的操作寄症。在大多數(shù)情況下宙彪,tokenFallback方法可以用來代替approve方法。
ERC-621
狀態(tài):打開
提出日期:2017年5月1日
ERC-621標準是ERC-20通證標準的擴展有巧。該標準增加了兩個額外的方法:increaseSupply 和decreaseSupply您访,能夠增加和降低流通中的代幣供應量。而ERC-20標準僅允許單個通證發(fā)放事件剪决,這就限制了一個固定的不可更改的供應量。而ERC-621標準則建議totalSupply是可以修改的檀训。
ERC-721
狀態(tài):打開
提出日期: 2017年9月22日
ERC-721標準與ERC-20標準柑潦、ERC-23標準非常不同,它描述了一種不可互換的通證峻凫。這就意味著每個通證各不相同渗鬼,并且每個通證對不同的用戶具有不同的值。比如以太貓(CryptoKittes):每個數(shù)字貓都是一個獨立存在的商品荧琼,其價值取決于該種類的稀有性和用戶的喜好譬胎。
ERC-721通證標準可以在任何一個交易中使用差牛,但通證的價值則是“與每個通證相關聯(lián)的唯一性和稀缺性的結果”。該標準的函數(shù)包括name,
symbol
, totalSupply
, balanceOf
, ownerOf
,approve
, takeOwnership
, transfer
, tokenOfOwnerByIndex
, tokenMetadata
堰乔。
ERC-721標準還定義了兩個事件:Transfer
和Approval
偏化。Gerald Nash(杰拉爾德·納什)的文章就很好地解釋了可互換性這一概念。
ERC-827
狀態(tài):打開
建議日期:2018年12月1日
ERC-20標準的另一個擴展是ERC-827標準镐侯,它允許用戶轉移Token侦讨,持有者也能允許第三方使用Token。以太坊上的Token可以被其他應用程序重用苟翻,這其中也包括錢包和交換機韵卤。在需要支持第三方動態(tài)消費限額調整時,這一點非常有用崇猫。另外沈条,最重要的一點是,由于它是ERC-20標準的擴展诅炉,所以它也跟ERC-20標準兼容蜡歹。
該標準中的一些方法如下所示:
transferFrom
(address_from, address _to, uint256 _value, bytes _data) returns (bool success)
function approve
(address_spender, uint256 _value, bytes _data) returns (bool success)
以上這些就是目前為止,幾個有趣的標準化提案汞扎!