NEO改进协议提案3(NEP-3)

32次阅读

共计 1823 个字符,预计需要花费 5 分钟才能阅读完成。

文章目录
• 摘要• 动机• 原理• 详述
• 合约
• Function
• Event
• Parameter
• ParameterType
• EntryPoint

摘要
应用程序二进制接口(ABI)是两个程序模块之间的接口,其中一个通常是库和 / 或操作系统,另一个通常是由程序员创建的应用程序。本 NEP 描述了 NEO 智能合约的 ABI 标准
动机
NEO 智能合约系统旨在在合同之间相互调用。为实现这一目标,我们需要一种机制来公开智能合约的接口。使用 NeoContract ABI,开发人员可以轻松的创建程序来调用智能合约或编写能自动访问合同功能的客户端。
原理
我们假设应用程序二进制接口(ABI)是强类型的,在编译时已知且静态。其不会提供内省机制。我们主张所有合同都具有其在编译时可以调用的合约的接口定义此详述不涉及其接口是动态的或仅在运行时可知的合约。如果这些案例十分重要,可以适当的提出作为特殊构建在 NEO 的生态体系中。
详述
合约
NeoContract ABI 以 Json 格式定义定义,包含以下结构体,并且某些顶层对象可以包含数个子对象:{“hash”:“0x562851057d8afbc08fabc8c438d7cc771aef2195”,“entrypoint”:“main”,“functions”: [],“events”: []}hash 是合约的脚本哈希。它采用 16 进制字符按大端序编码 Entrypoint 代表合约函数的入口 functions 是一个函数对象数组,用于描述合约中每个函数的细节 events 是一个事件对象数组,用于描述合约中没给事件的细节
Function
函数对象包含以下结构:{“name”:“transfer”,“parameters”: [],“returntype”:“Boolean”}name 代表函数的名称,可以是任何有效的标识符。parameters 是一个参数对象数组,用于描述函数中每个参数的详细信息 returntype 代表函数的返回类型。可以是以下任意一种值:Signature, Boolean, Integer, Hash160, Hash256, ByteArray, PublicKey, String, Array, InteropInterface
Event
事件对象包含以下结构体 {“name”:“refund”,“parameters”: []}name 代表事件的名称,可以是任何有效的标识符。parameters 是一个参数对象数组,用于描述事件中每个参数的详细信息
Parameter
参数对象包含以下结构体:{“name”:“from”,“type”:“Hash160”}name 代表参数的名称,可以是任意有效字符 type 代表参数类型。可以是以下任意一种值:Signature, Boolean, Integer, Hash160, Hash256, ByteArray, PublicKey, String, Array, InteropInterface
ParameterType
参数类型有以下值:名称 描述 Signature A signature of a transaction or block which is generated by the user.Boolean 布尔值的值是 true 或者 false.Integer An arbitrarily large integer whose value in theory has no upper or lower bounds.Hash160 160 比特的整型.Hash256 256 比特的整型.ByteArray 字节数组.PublicKey 采用压缩模式的 ECC 公钥.String 采用 UTF- 8 编码的字符串.Array 对象数组. 其元素类型可以是参数类型中的任何一种.InteropInterface 返回互操作服务的接口.Void Void 意味着函数没有返回值. 该值不是参数类型中的任何一种.
EntryPoint
强烈建议每个合约具有以下入口函数:{“name”:“main”,“parameters”: [{“name”:“operation”,“type”:“String”},{“name”:“args”,“type”:“Array”}],“returntype”:“ByteArray”}
通过这种方式,调用者可以从入口点轻松的访问函数,通过第一个参数指定调用函数的名称,通过第二个参数指定函数的的参数
原文链接:https://github.com/neo-projec…

正文完
 0