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


#1

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)
提交记录:


标准说明:

推荐样例:

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)
提交记录:


标准说明:

推荐样例:

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)
提交记录:


标准说明:

推荐样例:
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)
提交记录:


标准说明:
推荐样例:

(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进行了实现。
“多重宇宙的道具”,也就是可以跨游戏使用的游戏资产,他可以是角色,可以是武器,也可以是各类物品。

:milky_way:行业内最先支持ERC-1155标准
:space_invader:可以创建不限数量支持游戏藏品的钱包
:fast_forward:对游戏藏品的显示速度进行了最大程度的优化
:scroll:游戏内道具的交易记录(发送/接收/铸造)
:eyes:浏览其他人钱包里游戏道具
:gem:原生支持ERC-721&ERC-1155协议
:dragon:针对War of Crypto 提供ERC-1155的支持
:trident:针对Gods Unchained 提供ERC-721的支持
:heart_eyes_cat:针对CryptoKitties 提供ERC-721的支持

ERC1155概要
状态:
草稿(Draft)
提交记录:


标准说明:

推荐样例:

(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:


2)ERC 1400: Security Token Standard #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://www.jianshu.com/p/fc4dbe1fbf2c
第十九课 代币锁仓后逐步释放的ERC20智能合约实践 https://www.jianshu.com/p/db7cb9431ecc

第十七课 【ERC721实践】迷恋猫从玩耍到开发 https://www.jianshu.com/p/684490db252c
第三十三课 如何创建自己的ERC721非同质化资产生物商店? https://www.jianshu.com/p/57d58b1cd53a
第三十四课 采用TRUFFLE框架如何创建自己的ERC721非同质化资产生物商店? https://www.jianshu.com/p/e1c7191b5f70
第三十五课 如何配置Metadata以便装饰你的ERC721非同质化资产? https://www.jianshu.com/p/d5710a41a388

第十八课 【ERC875】Hiblock黑客马拉松门票从定制到编码实现 https://www.jianshu.com/p/ddaa0d3643ce

【ERC1155实践】ENJ铸造第一个有价值背书的游戏资产-WOC https://www.jianshu.com/p/2d67a0f0d199
第二十课 【ERC1155实践】欧阳询书法复制品从确权设计到买卖测试 https://www.jianshu.com/p/159bb16001a7
【ERC1155实践】区块链游戏的平行宇宙和为此而生的Enjin钱包 https://www.jianshu.com/p/d558acbc8f65

【ERC1400标准】支持证券增发,交易,相关法律文件存储的证券类同质化通证 https://www.jianshu.com/p/1e300a73eeef
第三十一课 ERC1410标准从分析到代码实现 https://www.jianshu.com/p/7588bcdda28c
【区块链实践】STO技术标准(ST-20,SRC20,R-TOKEN,DS Protocol,ERC1400,ERC1410) https://www.jianshu.com/p/db0ccdeb81ad


本次实录纪要由辉哥(王登辉,尖晶资本副总,HiBlock上海合伙人)整理记录,转发务必注明出处及本段信息。

现场活动照片:

坐席嘉宾介绍:嘉定蓝天经济城代表嘉宾,承诺区块链企业注册落地嘉定,享受2年免租,3年税收减半政策。这是对创业者的最大福利,本次享受VIP专席待遇。

3. 下期活动宣传

1)题目:
【区块链技术工坊35期】区块链上的稳定币理论和技术实现

2)议题:
过去一年里,稳定币成为了区块链的最热门话题之一。USDT 的独占鳌头,去中心化稳定币 Dai 的一枝独秀以及各种引入监管稳定币的出现让稳定币的市场好不热闹。最近摩根大通银行推出的 JPM coin再次引爆了区块链行业。错综复杂的市场下,对于用户而言,要去了解每一种稳定币的模式、甄别优劣和选择合适的稳定币却不是一件简单的事情。甚至对很多资深的区块链从业者,理解稳定币也并不容易。

“稳定币会是区块链的第三次落地应用吗?”“稳定币该怎么设计才能保持稳定?”“稳定币会取代法币吗?”“稳定币的商业模式和风险是什么?”“央行数字货币是何物”。请报名者带好笔记本电脑,且看MakerDAO 中国区负责人潘超的技术观点和从业经验的分享。

议题纲要:

  1. 稳定币出现的背景和原因。
  2. 稳定币的已有模式和经济学原理。
  3. 稳定币的技术实现和难点
  4. 央行数字货币的原理与设计

3)嘉宾:

潘超, MakerDAO 的货币政策研究员,同时担任中国区的负责人和 Maker 基金会理事。潘超的主要研究领域包括货币银行理论、区块链上的稳定币实现和机器学习在经济学中的应用,著有《稳定货币:区块链的第三次落地应用》课程。

4)时间/地点:
2019-03-13(周三晚上) 18:30 / 上海徐汇区龙华中路596号A座

5)活动报名海报
请微信扫描二维码报名参与,有门禁密码私送,空降无法参加。