NEP提案10

摘要

有一些项目已经在它们项目的智能合约中扩展了NEP-5所需的操作和方法,并提议(或准备提议)将其作为NEP-5扩展的附加操作和方法。
本NEP提出了支持智能合约现有标准扩展场景的解决方案。
遵从此NEP包含实现一个必需的,常量值的操作和方法支持标准,并可能创建一个或多个新的NEP以定义所需的任何操作和方法的新集合。
本NEP是个独立标准规范。规范本身并不是一个现有或将来的规范的扩展。本NEP是一个规范用于创建符合两个或多个NEP规范的所需操作的复合智能合约。

动机

一些已经在它们项目的智能合约中扩展了NEP-5所需操作和方法的项目提议(或准备提议)将这些附加的操作或者方法作为NEP-5的拓展。目前,没有处理此场景的端到端解决方案。多数情况表现为一个智能合约想要支持现有NEP附加的必需操作和方法或更多新增的草稿阶段、接受阶段或最终阶段的NEP。
离线客户端应用程序必须能知道智能合约是否支持指定NEP(或其他标准)所指的一系列指定所需方法和操作。此功能对于用户应用和交易平台以及所有调用智能合约的应用程序都至关重要。
针对此场景的简单直接的解决方案是遵守此NEP的智能合约实现称为supportedStandards的单个常量值操作和方法,并可能创建一个或多个新NEP以定义所需操作和方法的新集合。

一个关键前提是任何最终阶段NEP代表的是NEP中定义的所需操作/方法的不可变接口/ API合约。一旦NEP成为最终版本,更改它将废弃任何现有的智能合约实现…打破客户端应用程序,交易所,交易平台等之间的合约以及现有智能合约的付费部署。

详述

在下面的操作和方法定义中,我们提供了智能合约中定义的操作和方法的定义以及调用参数。
本NEP定义一个操作/方法类型:
(Required) : 符合此NEP的所有智能合约中存在的操作和方法。

方法

supportedStandards

• Syntax: public static string[] supportedStandards()
• Operation: “supportedStandards”
• Remarks: 此操作和方法不需要参数,并返回一个字符串数组。每个字符串都是表示智能合约支持的NEP(或其他标准)的代码。在字符串数组中包含特定代码意味着智能合约支持NEP中定义的所有必需操作和方法,这些操作和方法与代码相符。代码由使用规范系统的字母大小写格式指定。对于NEP代码,代码格式为“NEP-​​”(大写),后跟整数(NEP编号) - 不是混合大小写,也不是小写。

• Example: 返回值 {“NEP-5”, “NEP-10”} 表示支持NEP-5(NEP-5 token)和 本规范 所需的方法和操作
• Example: 返回值 {“NEP-5”, “NEP-10”, “NEP-1234”} 表示支持NEP-5 token和 NEP-1234(虚拟的NEP)所需的方法和操作。
NEP-1234所需的操作和方法可能是NEP-5的扩展,或者它们可能代表完全不相关的额外一组由智能合约共同支持的所需操作和方法
• Example: 返回值 {“nep-5”}, {“NEP5”}, and {“nep5”}通常被认为是无效响应除非“nep5”是非NEP规范系统中规范对应的有效代码。

“NEP扩展”是通过创建定义附加操作/方法的新NEP来实现的。例如,如果NEP-1234是包含附加操作/方法的新标准的代码(编号),则supportedStandards将返回{“NEP-​​5”,“NEP-​​10”,“NEP-​​1234”}。

原理

supportedStandards的最终设计是返回一个字符串数组。选择此设计是为了消除在离线客户端中解析原始逗号分隔字符串以及调用其他智能合约的智能合约的需要(参考: https://github.com/neo-project/proposals/issues/40#issuecomment-385080365).

向后兼容性

任何特定智能合约对此NEP的支持是可选的。
如果智能合约支持此NEP,则智能合约需要支持supportedStandards操作/方法。需要在返回的字符串数组中包含“NEP-​​10”作为其支持的标准之一。
如果智能合约不支持此NEP,则调用该函数应该以 调用智能合约未实现的方法的方式失败。
如果智能合约无法识别supportedStandards操作,则智能合约应返回false。

测试用例

本NEP不会引入或要求任何共识的更改。
有两个级别的测试用例:(i)在supportedStandards回应中,智能合约是否返回正确的字符串数组,并且由字符串所代表的代码是否表示有效的NEP(或其他标准); (ii)智能合约是否实现了由智能合约返回的字符串数组中的一系列代码所代表的NEP(和其他标准)所需的操作和方法。
由supportedStandards为NEP返回的代码应为“NEP-​​”(大写)格式,后跟整数(NEP编号) - 不是混合大小写,也不是小写。

实现

例子实现: https://github.com/neo-project/proposals/issues/40#issuecomment-385080365

来自 https://github.com/neo-project/proposals/blob/master/nep-10.mediawiki

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值