通往STO之路|ERC-1594标准详解

作者: Codefine好码实验室 | 来源:发表于2019-01-21 00:47 被阅读4次

    9月份以太坊社区相继出现 ERC-1400/1404/1410/1411 等证券型通证发行(Security Token Offering,简称STO)的标准提案,预示着通证市场开始主动拥抱政策监管,以太坊社区也在技术上寻求合规通证的实现机制。wlamos 今天为大家带来以太坊ERC-1594的草案标准详解, 让大家了解到社区最新的技术动态。

    证券型通证的特殊性

    与最常见的ERC-20通证相比, 证券型通证具有以下几个特殊性:

    1. 证券型通证具有转移限制

    我们熟悉的各种通证并不属于证券型通证,对此类通证要发起转账操作,通常只要转出账户有足够余额即可进行,但对于证券型通证,情况要复杂的多,需要考虑的因素可能包括:

    证券的锁定期,有可能不同部分的锁定期不同,比如每年解禁25%

    发送方与接收方的身份,是否通过了背景调查,之间是否有隶属关系等

    对证券本身的限制,比如根据相关法律,某类证券的投资者有数量限制(不超过2000人),或者单个投资者的持有上限有限制(持有比例不超过10%)

    此类限制较为多样,一方面很难完全用链上逻辑实现(比如将规则硬编码、白名单等),另一方面实现此类逻辑代价很大,即使实现也很难动态维护。

    为解决此问题,需要在进行相关操作时,可以参考链下数据。比如采用co-signing的方法,证券的转移需要证券的持有者批准,同时需要另一个可信机构签名过的数据(比如动态白名单)。

    2. 出错原因多样性

    证券型通证的操作可能有多种限制,这也意味着操作出错的原因多种多样。在操作失败时,开发者/用户需要知道出错的原因。此时可以考虑ERC1066,采用标准的错误编码。

    3. 发行与赎回

    证券型通证的发行与赎回(类似铸币与销毁)有其特殊性,比如需要第三方监管机构的批准签名数据。

    ERC-1594的解决方案

    ERC1594继承自ERC20,如有需要可以扩展为ERC777.

    继承自ERC20意味着符合ERC1594的证券型通证自动具有如下接口

    关于ERC20部分,此处不再赘述。本文主要介绍新增加的接口。

    通证转移

    ERC1594提供了两个接口用于通证的转移,每个接口都有一个_data数据,用于存放链下数据(比如签名过的数据等),这意味着链上逻辑(智能合约)可以获取并处理链下数据,可以根据链下数据进行更为灵活的控制。

    当_data为空时,其语义与ERC20的transfer/transferFrom一致。

    transferWithData/transferFromWithData都必须emit一个Transfer事件。

    检查通证转移是否可行

    如前所述,有多种原因可以导致转移操作失败,ERC1594提供了两个接口用于查询转移操作是否可以进行,其返回值

    - bool 类型表示此操作是否会成功

    - byte 类型返回值符合EIP-1066标准,表示标准的返回码 

    - bytes32 类型可以存储应用相关的其他附加信息

    这两个接口都提供了一个_data参数用于存放链下数据,如果此数据为空,则这两个接口用于检测transfer/transferFrom是否会成功,如果此数据不为空,则用于检测transferWithData/transferFromWithData是否会成功。

    - canTransfer假设msg.sender就是通证的发送者,后续会调用transfer/ transferWithData

    - canTransferFrom则可以指定通证的发送者,后续会调用transferFrom/ transferFromWithData

    发行

    用于检测发行是否结束,如果isIssuable()返回FALSE,则

    后续对isIssuable()的调用必须总是返回FALSE

    通证的总发行量不会增加

    此接口用于发行通证,增加通证的总发行量。_data可以存放链下数据来验证此次发行的合法性。当此函数被调用必须emit Issued事件。

    赎回

    用于通证的持有者赎回通证。

    赎回的通证必须从通证的总发行量与赎回者的账户中减去。 与transferWithData类似,参数_data可以存放链下数据 此函数的调用必须emitRedeemed事件。

    与transferFromWithData类似,_tokenHolder必须给msg.sender足够的allowance,并且赎回成功后,allowance必须进行更新,减去_value. 每次此函数调用都必须emit Redeemed事件。

    ERC-1594完整接口

    参考

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

    其他:

    通往STO之路|以太坊ERC1404标准解读

    通往STO之路 | 以太坊ERC1410方案详解

    通往STO之路|ERC-1643标准详解

    扫描关注最新区块链技术解读 本文经「原本」原创认证,作者好码实验室,访问yuanben.io查询【1FH7OXCQ】获取授权信息。

    相关文章

      网友评论

        本文标题:通往STO之路|ERC-1594标准详解

        本文链接:https://www.haomeiwen.com/subject/vzhqjqtx.html