【以太坊通证标准】ERC20系列,ERC721系列,ERC1400系列
1,摘要
史铁生语录【本⽂⽬标】
通过本⽂学习,了解ERC定义及知名ERC协议标准,如ERC20以及ERC223、ERC621,ERC777,ERC827,ERC1410协议; ERC721以及ERC875,ERC1155,ERC998协议,ERC 865等描述和定义。
2,ERC的定义及标准列表
ERC代表“Ethereum Request for Comment",这是Ethereum版的意见征求稿 (RFC),RFC是由互联⽹⼯程任务组制定的⼀个概念。RFC中的备忘录包含技术和组织注意事项。 对于ERC,意见征求稿中包括⼀些关于以太坊⽹络建设的技术指导。
ERC是Ethereum开发者为以太坊社区编写的。 因此,ERC的创建流程中包括开发⼈员。 为了创建⼀个以太坊平台的标准,开发⼈员应当提交了⼀个以太坊改进⽅案(EIP,Ethereum Improvement Protocol), 改进⽅案中包括协议规范和合约标准。 ⼀旦EIP被委员会批准并最终确定,它就成为ERC。 EIP的完整原始信息可以在GITHUB⽹址找到。
EIP提案⾸先需要进⾏⼀个严格的验收进程,⼤致包括了以下四个步骤:
1)如果开发⼈员对软件改动有了新的想法,这个想法应该以拉取请求(pull request)的形式呈现出来。在⼀个拉取请求中,改动能够在提案中轻易完成,同时积极听取社区的反馈。在这⾥,它属于EI
P编辑的审查改动范围内。
2)如果EIP编辑认为这个请求在技术上没有错误的地⽅,并且符合以太坊的社区价值观,他们会将其作为草稿合并到下⼀个阶段中。
荒山承包
3)在合并之后,如Geth何Parity等以太坊各式各样的软件应⽤才会诞⽣,并且如果它们能真的运作起来,这个提案最终被看作是“已接受”。4) ⼀旦接受以后,整个平台就会根据这个EIP提供的⽤以运⾏以太坊软件的多样代码来进⾏升级。
相应的EIP对应有4种状态:
草稿(Draft) - 处于打开状态,便于考察讨论;
接受(Accepted) - 即将被接受,例如将包含在下⼀个硬分叉中;
定稿(Final)- 在上⼀个硬分叉中被接受,已定稿;
延期(Deferred)- 不会马上被接受,但也许在将来的硬分叉版本会考虑。
ERC-20是整个加密社区中最为⼈熟知的标准,在Ethereum平台之上发布的⼤多数通证(token)都使⽤它。3,ERC20系列 - ERC20、ERC223、ERC621, ERC777,ERC827,ERC1400
读书图片唯美3.1 ERC20标准
标准说明:
推荐样例:
ERC-20标准中定义了以下函数接⼝:
totalSupply():
返回代币供给总量
电信是国企吗balanceOf(address _owner):
返回_owner的帐户余额
巾帼不让须眉
transfer(address _to,uint256 _value):
并将数量为_value的代币转⼊地址_to并触发transfer事件
transferFrom(address _from,address _to,uint256_value):
将地址_from中的_value数量的代币转⼊地址_to ,并触发transfer事件
approve(address _spender,uint256 _value):
允许_spender提取限额_value的代币
allowance(address _owner,address _spender):
返回_spender可从_owner提款的代币数量上限我家有喜事
ERC-20于2015年提出并于2017年9⽉正式实施。这是代币标准化的⼀个很好的起点。 然⽽,开发者社区 已经注意到它存在⼀些缺陷和漏洞,此外,还有⼀些场景它不能很好的满⾜。因此陆续提出了其他的ERC标准。
3.2 ERC223
状态:
草稿(Draft)
提交记录:
标准说明:
推荐样例:
开发⼈员Dexaran在⼀篇⽂章中详细描述了ERC20不适合的两种场景:
“在ERC20中执⾏交易有两种⽅式:transfer函数,approve + transferFrom机制,通证余额只是通证合约中的⼀个变量。
通证的交易是合约内部变量的变化。 转出账户的余额将减少,转⼊账户的余额将增加。
交易发⽣时, transfer()函数不会通知转⼊账户。 因此转⼊账户将⽆法识别传⼊的交易! 我写了⼀个例⼦,可以展⽰这⼀导致未处理的交易和资⾦损失的过程 。
因此,如果接收账户是合约账户,那么必须使⽤approve + transferFrom机制来发送通证。
快乐中国年
如果接受账户是外部帐户,则必须通过transfer函数发送通证。 如果选择了错误的机制,通证将卡在合约内(合约将不会识别交易),没有办法来提取这些卡壳的通证。“
他对这个问题提出的解决⽅案包含在ERC-223中 。 它与ERC-20标准⾮常相似,但解决了上述问题。当通证转移到智能合约账户时,该合约的特殊函数tokenFallback() 允许接收⽅合约拒绝通证或触发进⼀步的操作。 ⼤多数情况下,这可以⽤来代替approve()函数。烟台山公园
函数接⼝:
transfer(address _to, uint _value):