前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【区块链技术工坊34期】王登辉:以太坊通证协议标准及应用场景

【区块链技术工坊34期】王登辉:以太坊通证协议标准及应用场景

作者头像
辉哥
发布2019-03-15 11:27:11
发布2019-03-15 11:27:11
8200
举报
文章被收录于专栏:区块链入门区块链入门

1,活动基本信息

1)题目:

【区块链技术工坊34期】王登辉:以太坊通证协议标准及应用场景

2)议题:

通过本次技术分析,可以了解以太坊的ERC定义及知名ERC协议标准,如同质化通证系列ERC20以及ERC223协议; 非同质化系列ERC721以及 ERC875,ERC1155协议;STO标准半同质化系列ERC1400系列协议。

议题纲要:

  1. ERC的定义及标准列表
  2. 同质化通证ERC20系列 - ERC20、ERC223
  3. 非同质化通证ERC721系列 - ERC721,ERC875,ERC1155
  4. 证券类通证ERC1400系列

3)嘉宾:

王登辉,创业股平台 CTO,尖晶投资技术赋能中心副总经理, HiBlock技术社群上海合伙人,电子科技大学硕士毕业, 10年华为/中兴 产品.研发经验,深耕区块链应用。

4)活动定位

区块链技术工坊系列活动,由HiBlock,兄弟区块链,,创业股平台联合主办,HPB芯链战略支持的,聚焦于深度分享区块链知识,实现小会技术交友。区块链技术工坊坚持4F原则

Frency - 每周三晚上一次;

Focus - 聚焦区块链技术分享;

Fun - 20人以内会前做自我介绍,分享有深度的技术内容,技术交友;

Feedback - 会后有活动实录和合影照片。

2. 会议实录

ERC代表“Etherum Request for Comment",这是Ethereum版的意见征求稿 (RFC),包括一些关于以太坊网络建设的技术指导。

EIP表示以太坊优化协议(Ethereum Improvement Protocol),是一个进行代码修改并提交到平台加以接受的过程。

改进方案中包括协议规范和合约标准。 一旦EIP被委员会批准并最终确定,它就成为ERC。

1)如果开发人员对软件改动有了新的想法,这个想法应该以拉取请求(pull request)的形式呈现出来。在一个拉取请求中,改动能够在提案中轻易完成,同时积极听取社区的反馈。在这里,它属于EIP编辑的审查改动范围内。

2)如果EIP编辑认为这个请求在技术上没有错误的地方,并且符合以太坊的社区价值观,他们会将其作为草稿合并到下一个阶段中。

3)在合并之后,如Geth和Parity等以太坊各式各样的软件应用才会诞生,并且如果它们能真的运作起来,这个提案最终被看作是“已接受”。

4) 一旦接受以后,整个平台就会根据这个EIP提供的用以运行以太坊软件的多样代码来进行升级。

相应的EIP对应有4种状态:

草稿(Draft) - 处于打开状态,便于考察讨论;

接受(Accepted) - 即将被接受,例如将包含在下一个硬分叉中;

定稿(Final)- 在上一个硬分叉中被接受,已定稿;

延期(Deferred)- 不会马上被接受,但也许在将来的硬分叉版本会考虑。

  1. 同质化通证ERC20系列
  2. 非同质化通证ERC721系列
  3. 证券类通证ERC1410系列 网址:https://github.com/ethereum/EIPs

1)ERC20概要

状态:

定稿(Final)

提交记录:

https://github.com/ethereum/EIPs/issues/20

标准说明:

https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md

推荐样例:

https://github.com/OpenZeppelin/openzeppelin-solidity/tree/master/contracts/token/ERC20

2)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提款的代币数量上限

1)概要

状态:

草稿(Draft)

提交记录:

https://github.com/ethereum/EIPs/issues/223

标准说明:

https://github.com/Dexaran/ERC223-token-standard

推荐样例:

https://github.com/Dexaran/ERC223-token-standard/tree/Recommended

2)ERC223核心函数

  • transfer(address _to, uint _value): 会区分代币是发往外部账户地址还是发往智能合约地址。
  • transfer(address _to, uint _value, bytes _data): 会区分代币是发往外部账户地址还是发往智能合约地址,还可以传送数据。 2、如果_to(接收方合约)中没有实现tokenFallback函数,则事务必须失败,并且不会发生通证的传输。 3、如果_to是外部拥有的地址,则必须发送事务,而不尝试在_to中执行tokenFallback。 4、_data可以附加到这个通证(token)交易中,它将永远保持在块状(需要更多的gas)。 _data可以是空的。

ERC721官方简要解释是Non-Fungible Tokens,简写为NFTs,多翻译为非同质代币。

ERC721 是由谜恋猫CryptoKitties背后的公司Axiom Zen的技术总监Dieter Shirley 在2017年9月提出。

目前谜恋猫已有20万ETH地址参与玩过。

那怎么理解非同质代币呢?

非同质代表独一无二,谜恋猫为例,每只猫都被赋予拥有基因,是独一无二的(一只猫就是一个NFTs),猫之间是不能置换的。这种独特性使得某些稀有猫具有收藏价值,也因此受到追捧。

ERC20代币是可置换的,且可细分为N份(1 = 10 * 0.1), 而ERC721的Token最小的单位为1,无法再分割。

如果同一个集合的两个物品具有不同的特征,这两个物品是非同质的,而同质是某个部分或数量可以被另一个同等部分或数量所代替。

非同质性其实广泛存在于我们的生活中,如图书馆的每一本,宠物商店的每一只宠物,歌手所演唱的歌曲,花店里不同的花等等,因此ERC721合约必定有广泛的应用场景。通过这样一个标准,也可建立跨功能的NFTs管理和销售平台(就像有支持ERC20的交易所和钱包一样),使生态更加强大。

(1)ERC721概要

状态:

定稿(Final)

提交记录:

https://github.com/ethereum/EIPs/issues/721

标准说明:

https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md

推荐样例:

1)https://www.cryptokitties.co/

2)https://github.com/OpenZeppelin/openzeppelin-solidity/tree/master/contracts/token/ERC721

(2)ERC721函数接口

  • balanceOf(address _owner): 返回由_owner 持有的NFTs的数量。
  • ownerOf(uint256 _tokenId): 返回tokenId代币持有者的地址。
  • exists(uint256 _tokenId): tokenId代币是否存在,返回BOOL值;
  • approve(address _to, uint256 _tokenId): 授予地址_to具有_tokenId的控制权,方法成功后需触发Approval 事件。
  • getApproved(uint256 _tokenId): 获得_tokenId授权的地址;
  • setApprovalForAll(address _operator, bool _approved): 授予地址_operator具有所有NFTs的控制权,成功后需触发ApprovalForAll事件。
  • isApprovedForAll(address _owner, address _operator): 用来查询授权。
  • transferFrom(address _from, address _to, uint256 _tokenId) 不建议使用本函数,建议使用safeTransferFrom函数。
  • safeTransferFrom(address _from, address _to, uint256 _tokenId): 把_tokenId代币从_from账户安全转移到_to账户,安全是指如果目标地址为合约地址,则执行onERC721Received进行资产转移,否则的话交易会回滚;如果目标地址为外部账号地址,则正常转移。
  • ERC721Metadata(可选接口) ERC721Metadata接口用于提供合约的元数据:name , symbol 及 URI URI表示NFT所对应的资源,例如 https://opensea-creatures-api.herokuapp.com/api/openseatest/3 tokenURI(): 返回_tokenId所对应的外部资源文件的URI。 外部资源文件需要包含名字、描述、图片, 输入URI可返回,其格式的要求如下页。
  • ERC721Metadata – 外部资源JSON

如何创建自己的ERC721非同质化资产生物商店?

如何装饰ERC721非同质化资产

ERC875协议是由AlphaWallet团队提出的,他们希望基于ERC875协议族,能够实现人、事、物、权token化。

另一种协议ERC721也能实现token的不可置换性,但其存在需要交易双方支付gas费用、无法简单实现原子化交易等一些不易于用户使用的问题。

首个落地应用:体育票务�或许与张中南在票务业务的经历有关,AlphaWallet选择从ERC875和钱包切入的第一个use case就是俄罗斯世界杯门票。目前 AlphaWallet 已与盛开体育达成合作。今年的俄罗斯世界杯,二者联合引入区块链技术以测试新的票务解决方案,将盛开体育世界杯票库内的部分门票转化为以太坊上的ERC875的token。由于这些token具有不可置换性,用户通过AlphaWallet钱包的动态二维码,以及线下的现场扫描,即可获得世界杯门票。考虑到进一步安全的问题,AlphaWallet钱包显示的动态二维码,每隔10s就会变一次。

ERC875概要

状态:

还处于pull request下(issue)

提交记录:

https://github.com/ethereum/EIPs/issues/875

标准说明:

推荐样例:

https://github.com/alpha-wallet/ERC875-Example

(2) ERC875核心函数

  • function transfer(address _to, uint256[] _tokens) public; 通过包含通证索引的数组参数,把一组独一无二的通证转移给一个账户地址。相比ERC721一次只能转账一个通证,ERC875更显友好,它可以一次批量转账一组通证。这样既便利又能节约大量的GAS消耗。
  • function trade(uint256 expiryTimeStamp, uint256[] tokenIndices, uint8 v, bytes32 r, bytes32 s) public payable 该函数允许用户出售一组非同质通证而不需要支付GAS费,只需要购买者支付。这是通过签署包含要销售的代币数量,合同地址,到期时间戳,价格和包含ERC规范名称和链ID的前缀的证明来实现的。然后,买方可以通过附加适当的以太币(ether)来满足交易,从而在一次交易中支付交易。�这种设计也更有效,因为它允许订单在离线前完成,而不是在智能合约中创建订单并更新订单。到期时间戳保护卖方免受使用旧订单的人的影响。�这为点对点(p2p)原子交换(atomic swap)打开了大门,但对于这个标准应该是可选的,因为有些可能没有用它。�需要在消息中添加一些保护,例如编码链ID,合同地址和ERC规范名称,以防止重放和欺骗人们签署允许交易的消息。

恩金(Enjin)花了大半年的时间一直在完善ERC-1155这个通证协议,毫不夸张地说,该标准是现有以太坊上最适用于游戏资产的通证标准,将主流游戏中道具涉及到的一切操作经过高度抽象之后,基本通过ERC-1155进行了实现。

“多重宇宙的道具”,也就是可以跨游戏使用的游戏资产,他可以是角色,可以是武器,也可以是各类物品。

?行业内最先支持ERC-1155标准

?可以创建不限数量支持游戏藏品的钱包

⏩对游戏藏品的显示速度进行了最大程度的优化

?游戏内道具的交易记录(发送/接收/铸造)

?浏览其他人钱包里游戏道具

?原生支持ERC-721&ERC-1155协议

?针对War of Crypto 提供ERC-1155的支持

?针对Gods Unchained 提供ERC-721的支持

?针对CryptoKitties 提供ERC-721的支持

ERC1155概要

状态:

草稿(Draft)

提交记录:

https://github.com/ethereum/EIPs/issues/1155

标准说明:

https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1155.md

推荐样例:

https://enjincoin.io/

(2)ERC1155核心函数

  • 1) mint(string _name, uint256 _totalSupply, string _uri, uint8 _decimals, string _symbol)� 增发同质化通证
  • 2)approve(address _spender, uint256 _id, uint256 _currentValue, uint256 _value)� 授权给_spender账户一定额度的编号为 _id的同质化通证,_currentValue为当前已授权额度;
  • 3)transferFrom(address _from, address _to, uint256 _id, uint256 _value) �拥有者从 _from地址给 _to地址转账授权范围内的一定额度的一类同质化通证;
  • 4)balanceOf(uint256 _id, address _owner)� 拥有者_owner的 _id同质化通证的余额;
  • 5)allowance(uint256 _id, address _owner, address _spender)� 拥有者 _owner给消费者_spender在当前查询账户授权(approve)的额度;
  • 6)batchApprove(address _spender, uint256[] _ids, uint256[] _currentValues, uint256[] _values)�批量授权给_spender[]一组账户一定额度_values[]的编号为_ids[]的同质化通证,_currentValue[]为当前已授权额度,这几个数组的长度要严格对齐;
  • 7)batchTransferFrom(address _from, address _to, uint256[] _ids, uint256[] _values)� 拥有者从 _from地址给 _to地址转账授权范围内的一定额度_values[]的各类编号为_ids[]的各类同质化通证;
  • 8) -batchTransfer(address _to, uint256[] _ids, uint256[] _values)� 批量给目标账号_to转账各类编号为_ids[]的各类数额分别是_values[]的各类同质化通证;
  • 9)multicastTransfer(address[] _to, uint256[] _ids, uint256[] _values)� 当前账号批量给目标地址组合_to[]分别转移额度为_values[]的各类编号为_ids[]的同质化通证。

1,合法合规性

STO 最大优势就是主动接受监管,在有关部门的监督管理下合法合规运作。与信息不对称、权责不对称的 ICO 相比,监管机构将更容易对 STO 交易进行穿透式

监管;再结合区块链公开透明、不可篡改等优点,监管机构更容易实施反洗钱、投资者准入、交易合约设计审核等等监管措施。STO 对投资者的保障更加完善,也有可能会降低监管的难度,增加了项目发展的稳定性和可预期性。

2, 为有价值的项目提供快捷融资渠道, 扁平化PE/VC剪刀差空间。

这意味着未来谁的资产/项目更具有财富效应,全球资本就会涌向哪里。未来跨境资本流动会更加剧烈,对于创富能力强的国家和组织,是大的利好。

3, crypto的出现导致全球第一次从技术上出现了全球统一市场。

过去,除非各国监管共同努力,才能导致金融市场互联互通,现在由于crypto市场的出现,除非监管拼命努力,才能导致这个全球互联互通的市场断开。

标准制定了 Token 持有人的余额分离成多个分片(tranche)的能力。tranche 是一种以债务为基础的投资结构。这些证券将具有不同期限的,投资风险或高或低的 tranche 组合成一个整体,以达到降低投资者的风险,提供长期投资的目的。例如,你可能有一笔贷款转付证券,其中包括5到30年期的高风险和低风险的转付证券,基于 ERC1400 标准的 Token 将支持这种投资方式。

(1)ERC1410概要

状态:

草稿(Draft)

提交记录:

1)ERC 1410: Partially Fungible Token Standard:

https://github.com/ethereum/EIPs/issues/1410

2)ERC 1400: Security Token Standard #1411

https://github.com/ethereum/EIPs/issues/1411

推荐样例:

https://blog.neufund.org/good-protocols-how-to-properly-standardize-security-tokens-95ff83c81c4a

(2)ERC1410核心函数

  • function sendByTranche(…) 表示上述接口表示从调用者的指定tranche转指定金额到目的账户。
  • function operatorSendByTranche(…) ERC1410基于 ERC777继承了交易员(operator)的相关概念,允许某个交易员代表某个账户持有者基于tranche进行转账。
  • function authorizeOperatorByTranche 消息发送者授权给某个交易员某个特定tranche的操作权。每次被调用,必须emit AuthorizedOperatorByTranche event。

文章链接

【以太坊通证标准】ERC20系列,ERC721系列,ERC1400系列 https://cloud.tencent.com/developer/article/1182667

第十九课 代币锁仓后逐步释放的ERC20智能合约实践 https://cloud.tencent.com/developer/article/1182701

第十七课 【ERC721实践】迷恋猫从玩耍到开发 https://cloud.tencent.com/developer/article/1182456

第三十三课 如何创建自己的ERC721非同质化资产生物商店? https://cloud.tencent.com/developer/article/1394428

第三十四课 采用TRUFFLE框架如何创建自己的ERC721非同质化资产生物商店? https://cloud.tencent.com/developer/article/1394430

第三十五课 如何配置Metadata以便装饰你的ERC721非同质化资产? https://cloud.tencent.com/developer/article/1397409

第十八课 【ERC875】Hiblock黑客马拉松门票从定制到编码实现 https://cloud.tencent.com/developer/article/1182462

【ERC1155实践】ENJ铸造第一个有价值背书的游戏资产-WOC https://cloud.tencent.com/developer/article/1181991

第二十课 【ERC1155实践】欧阳询书法复制品从确权设计到买卖测试 https://cloud.tencent.com/developer/article/1192545

【ERC1155实践】区块链游戏的平行宇宙和为此而生的Enjin钱包 https://cloud.tencent.com/developer/article/1347307

【ERC1400标准】支持证券增发,交易,相关法律文件存储的证券类同质化通证 https://cloud.tencent.com/developer/article/1352406

第三十一课 ERC1410标准从分析到代码实现 https://cloud.tencent.com/developer/article/1374503

【区块链实践】STO技术标准(ST-20,SRC20,R-TOKEN,DS Protocol,ERC1400,ERC1410) https://cloud.tencent.com/developer/article/1366864

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.03.07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1,活动基本信息
  • 2. 会议实录
    • 文章链接
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档