invokescript 方法
通过虚拟机传递脚本之后返回结果。
note
- 此方法用于测试你的虚拟机脚本,如同在区块链上运行一样。这个 RPC 调用对区块链没有任何影响。
- 此方法由插件提供,需要安装 RpcServer 插件才可以调用
#
参数说明- script:一个由虚拟机运行的脚本,与 invokefunction 返回的 script 相同;
- signers:签名账户列表,可选
- account: 签名账户
- scopes: 签名的作用域,允许的值: FeeOnly, CalledByEntry, CustomContracts, CustomGroups, Global
- allowedcontracts: 如果 scopes 是 CustomContracts,该字段是签名生效的合约 Hash 列表
- allowedgroups: 如果 scopes 是 CustomGroups,该字段是签名生效的公钥列表。
#
调用示例请求正文:
{ "jsonrpc": "2.0", "id": 1, "method": "invokescript", "params": [ "DAlqdXN0IHRlc3QRDBRWyI0UCtLMDykDfdEKfwBgorUoXAwU19eXMOJ4xtkG5uj2lb+th34/+pAUwB8MCHRyYW5zZmVyDBTPduKL0AYsSkeO41VhARMZ88+k0kFifVtS", [ { "account": "NfbEjVjhhpDsni716KVbuQWqSjVNHAUdTh", "scopes": "CustomContracts", "allowedcontracts":["0xd2a4cff31913016155e38e474a2c06d08be276cf","0xd2a4cff31913016155e38e474a2c06d08be276cf"], "allowedgroups":[] } ] ]}
响应正文:
{ "jsonrpc": "2.0", "id": 1, "result": { "script": "DAlqdXN0IHRlc3QRDBRWyI0UCtLMDykDfdEKfwBgorUoXAwU19eXMOJ4xtkG5uj2lb+th34/+pAUwB8MCHRyYW5zZmVyDBTPduKL0AYsSkeO41VhARMZ88+k0kFifVtS", "state": "HALT", "gasconsumed": "997796", "exception": null, "stack": [ { "type": "Boolean", "value": false } ] }}
- state:虚拟机状态,
HALT
表示虚拟机执行成功,FAULT
表示虚拟机执行时遇到异常退出。 - gasconsumed:调用智能合约时消耗的系统手续费。
- stack:合约执行结果,其中 value 如果是字符串或 ByteArray,则是 Base64 编码后的结果。