从 NEO 2.9.0 开始,一些附加功能被独立封装在插件中用以调用,目的是为了提升节点的安全性,稳定性和灵活性。用户可以自行选取所需要的扩展功能而不用每次在启动 NEO-CLI时通过附加参数来调用,避免了很多人为的失误操作同时简化了打开钱包,调用 API 等一系列繁琐的指令。点击此处下载 Plugins。$ W) u: M( X; G( R
插件 | 功能 | |
ApplicationLogs | 在 RPC 模式下自动同步智能合约日志(ApplicationLogs),目前日志已经改为以 LevelDB 格式存储。 | 交易所必选 |
ImportBlocks | 同步离线包。 | 必选 |
RpcSecurity | 提升 RPC 安全。 | 可选 |
SimplePolicy | 启用共识的简单策略。 | 搭建私链必选 |
StatesDumper | 导出 NEO-CLI 状态数据。 | 可选 |
安装插件
要安装插件,在客户端根目录下新建 Plugins 文件夹(注意首字母大写),然后将解压出来的插件拷贝到其中,如下所示在neo-cli根目录下安装:
7 M) ? y( ?; _9 T
插件中的 API 接口
getapplicationlog 方法
根据指定的 NEP-5 交易 ID 获取合约日志。完整的合约日志会记录到 ApplicationLogs 目录。6 Y* J( R0 _% I7 y
此方法由插件提供,需要安装 ApplicationLogs 插件才可以调用。, B4 ^ P2 b8 I; j8 O& d) ?0 j
参数说明 ^* z- o0 i; q) b( `8 X/ T
txid:交易ID
调用示例- [( A9 m/ e- S: u
请求正文:4 v/ i+ @5 o8 [, z& Z
{
"jsonrpc": "2.0",
"method": "getapplicationlog",8 L7 \$ A0 v m: _# B6 J; x, v
"params": ["0xff488264c1abf9f5c3c17ed8071f6dd3cd809b25797a43af49316490ded8fb07"],: [& c$ h- }5 B& M) w
"id": 1) R0 r- r8 s$ w. [3 {
} R0 N7 L2 ~% Q% K( }* J6 i& A, Y* p
响应正文:
{
"jsonrpc": "2.0",' `4 f: g1 F( u5 w$ S+ Y, V4 w
"id": 1,
"result": {
"txid": "0xff488264c1abf9f5c3c17ed8071f6dd3cd809b25797a43af49316490ded8fb07",
"executions": [% _/ w! `( c" s8 [" b
{
"trigger": "Application",
"contract": "0x0110a8f666bcc650dc0b544e71c31491b061c79e",6 T! q! A, _# w$ X; C
"vmstate": "HALT, BREAK",( ~. T2 s3 ~7 t1 K, [6 a
"gas_consumed": "2.855",
"stack": [
{5 o) e. z) o6 b( Y+ T6 l' k1 o
"type": "Integer",6 D0 J, s( @3 B0 q. W$ ^
"value": "1"9 t; d. f' N6 q+ u9 d! o8 l
}
],
"notifications": [
{
"contract": "0xb9d7ea3062e6aeeb3e8ad9548220c4ba1361d263",4 `- f# L h0 ^/ f6 W5 v' \
"state": {
"type": "Array"," r9 f" Z6 l0 A( ^" o$ Y
"value": [, T3 ~1 y/ n% C5 E, y ?+ h3 {# l
{9 p2 d" u' w7 [, m( `" ?% _
"type": "ByteArray",
"value": "7472616e73666572"2 i$ x# o7 |" S! i4 V$ a' o' j7 W
},6 {- u' l) Y5 ?: Q
{
"type": "ByteArray",! d4 {6 A2 ^7 |7 a
"value": "e3069da508f128069a0cd2544b0728ccbacdfb43"0 {, l2 Y3 y" z0 x, Y4 Z8 u
},
{
"type": "ByteArray",# `. _; Z/ ?; t! V
"value": "d142f89e93b2717426a8130c37dad93aad70cff5"
},
{
"type": "ByteArray",; R- i; L, j. f6 H+ W* ?4 k
"value": "00e1f50500000000"" K' f9 X/ f9 n8 z
}" Y, e8 `, o" v1 V9 R
]
}. `: g( T; K- n
}
]
}# R, O5 }+ c1 O. ~/ R
]. k o4 _9 B+ v
}
}8 {4 C2 P$ Z: N9 x: _0 ~! O$ k
说明:" |0 r3 z5 X: s7 a T
其中 gas_consumed 表示该交易消耗的 gas 数量,即交易手续费。每笔交易会有10 gas 的免费额度。如果数量小于10,则不收取手续费,如果大于10,那么收取超过10的那部分作为手续费并向上取整。例如 gas_consumed = 12.3,那么实际收取的手续费为3 gas