NEO改進協議提案3(NEP-3)

文章目錄

  • 摘要
  • 動機
  • 原理
  • 詳述
    • 合約
    • Function
    • Event
    • Parameter
    • ParameterType
    • EntryPoint

摘要

應用程序二進制接口(ABI)是兩個程序模塊之間的接口,其中一個一般是庫和/或操做系統,另外一個一般是由程序員建立的應用程序。
本NEP描述了NEO智能合約的ABI標準git

動機

NEO智能合約系統旨在在合同之間相互調用。爲實現這一目標,咱們須要一種機制來公開智能合約的接口。使用NeoContract ABI,開發人員能夠輕鬆的建立程序來調用智能合約或編寫能自動訪問合同功能的客戶端。程序員

原理

咱們假設應用程序二進制接口(ABI)是強類型的,在編譯時已知且靜態。其不會提供內省機制。咱們主張全部合同都具備其在編譯時能夠調用的合約的接口定義
此詳述不涉及其接口是動態的或僅在運行時可知的合約。若是這些案例十分重要,能夠適當的提出做爲特殊構建在NEO的生態體系中。github

詳述

合約

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」
}
經過這種方式,調用者能夠從入口點輕鬆的訪問函數,經過第一個參數指定調用函數的名稱,經過第二個參數指定函數的的參數接口

原文連接:github.com/neo-project…事件

相關文章
相關標籤/搜索