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

文章目录

  • 摘要
  • 动机
  • 原理
  • 详述
    • 合约
    • 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-project/proposals/blob/master/nep-3.mediawiki

转载于:https://my.oschina.net/u/3630365/blog/2987592

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值