invokescript 方法
通过虚拟机传递脚本之后返回结果。
- 此方法用于测试你的虚拟机脚本,如同在区块链上运行一样。这个 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 编码后的结果。