mirror of
https://gitee.com/BDWare/bdcontract-doc
synced 2025-01-10 09:54:17 +00:00
5382 lines
125 KiB
ReStructuredText
5382 lines
125 KiB
ReStructuredText
BDware SDK
|
||
==========
|
||
|
||
除使用可视化的智能合约在线IDE外,用户还可使用WebSocket接口、Http接口、Bash接口来启动和运行合约.
|
||
|
||
--------------
|
||
|
||
WebSocketSDK下载与安装
|
||
----------------------
|
||
|
||
合约SDK提供javascript版本与java版本的客户端。
|
||
|
||
java客户端的下载链接为:\ `java
|
||
source <./_static/BDWareJavaClient.zip>`__\ 和\ `jar <./_static/BDWareConfigTool.zip>`__
|
||
可参考java_source下的README.md及测试用例。
|
||
|
||
javascript的下载链接为:\ `js SDK <./_static/js/createWS.js>`__
|
||
内置的SM2加密库链接:\ `sm2 SDK <./_static/js/sm2.js>`__
|
||
|
||
建立连接
|
||
~~~~~~~~
|
||
|
||
建立与节点服务器之间的WebSocket连接.
|
||
|
||
参数
|
||
^^^^
|
||
|
||
+---------+------------------------------------------------------------+
|
||
| 字段 | 值 |
|
||
+=========+============================================================+
|
||
| url | 建立WebSocket的服务器URL. 使用\ ``http``\ 协议时, |
|
||
| | 前缀为\ ``ws://``, |
|
||
| | 如\ ``"ws://localhost:1717/SCIDE/SCExecutor"``; |
|
||
| | 使用\ ``https``\ 协议时, 前缀为\ ``wss://`` |
|
||
+---------+------------------------------------------------------------+
|
||
| msgHand | 收到服务器WebSocket回复后的回调函数, 用户可自行编写, |
|
||
| ler | 也可参考下面提供的示例 |
|
||
+---------+------------------------------------------------------------+
|
||
|
||
请求示例
|
||
^^^^^^^^
|
||
|
||
.. code:: javascript
|
||
|
||
var url = "ws://127.0.0.1:1717/SCIDE/SCExecutor";//与Slave节点建立连接
|
||
//var url = "ws://127.0.0.1:1718/NodeCenterWS";//与Manager节点建立连接
|
||
var msgHandler = function(m){
|
||
console.log("recmsg:");
|
||
console.log(m);
|
||
};
|
||
var onOpenHandler=undefined;
|
||
wssocket = createWssocket(url,onOpenHandler,msgHandler);
|
||
|
||
返回结果示例
|
||
^^^^^^^^^^^^
|
||
|
||
::
|
||
|
||
{
|
||
receiveSeg: [Function (anonymous)],
|
||
isSending: false,
|
||
sendList: [],
|
||
monitor: [Function (anonymous)],
|
||
send: [Function (anonymous)],
|
||
sendNextSegment: [Function (anonymous)],
|
||
isOpen: [Function (anonymous)]
|
||
}
|
||
|
||
ping
|
||
~~~~
|
||
|
||
``ping``\ 服务器测试
|
||
|
||
.. _参数-1:
|
||
|
||
参数
|
||
^^^^
|
||
|
||
====== ====
|
||
字段 值
|
||
====== ====
|
||
action ping
|
||
====== ====
|
||
|
||
.. _请求示例-1:
|
||
|
||
请求示例
|
||
^^^^^^^^
|
||
|
||
::
|
||
|
||
var request = {};
|
||
request.action = "ping";
|
||
wssocket.send(JSON.stringify(request));
|
||
|
||
.. _返回结果示例-1:
|
||
|
||
返回结果示例
|
||
^^^^^^^^^^^^
|
||
|
||
::
|
||
|
||
{
|
||
"action":"pong"
|
||
}
|
||
|
||
登录
|
||
~~~~
|
||
|
||
使用Websocket接口调用需要权限的接口时,不论是连接CenterPortal还是NodePortal必须先\ **登录**\ 。
|
||
登录的流程有3步:
|
||
|
||
- 客户端向服务端建立连接,连接建立完成后发送{“action”:“getSessionID”}(可在onOpenHandler中实现)
|
||
- 服务端收到请求后,会向客户端返回类似{“action”:“onGetSessionID”,“session”:“-4959947809200104526_session”}的结果
|
||
- 客户端收到onGetSessionID后,会使用本地的公私钥对sessionID进行签名,并调用login接口
|
||
- 服务端会返回onLogin的结果,data字段返回的是该公钥对应的角色。
|
||
|
||
--------------
|
||
|
||
用户角色划分
|
||
------------
|
||
|
||
合约节点的角色划分
|
||
~~~~~~~~~~~~~~~~~~
|
||
|
||
在合约节点(NodePortal.html)中分为NodeManager/ContractProvider/ContractInstanceManager/ContractUser四类角色。
|
||
|
||
======================= ==========================================================================
|
||
角色 说明
|
||
======================= ==========================================================================
|
||
NodeManager 该节点的管理者,拥有用户管理、节点配置等权限
|
||
ContractProvider 拥有编辑合约、开发合约代码、运行调试等权限
|
||
ContractInstanceManager 拥有启、停合约实例、配置合约实例IO等权限
|
||
ContractUser 拥有查看合约实例列表、调用合约等权限
|
||
Anonymous 匿名用户,可以调用合约,可以申请成为ContractProvider/InstanceManager等角色
|
||
======================= ==========================================================================
|
||
|
||
=============================== ==================== =========================================
|
||
接口 说明 角色
|
||
=============================== ==================== =========================================
|
||
changeDumpPeriod 设置备份周期 ContractInstanceManager;
|
||
createLedger 创建账本 ContractInstanceManager;
|
||
dumpContract 手动备份 ContractInstanceManager;
|
||
deleteMemoryFile 删除镜像 ContractInstanceManager;
|
||
forkContract 迁移合约 ContractInstanceManager;
|
||
getDumpPeriod 获取备份周期 ContractInstanceManager;
|
||
killAllContract 停止全部实例 ContractInstanceManager;
|
||
killContractProcess 停止某一实例 ContractInstanceManager;
|
||
listMemoryFiles 列取某一实例的镜像 ContractInstanceManager;
|
||
loadMemory 加载镜像 ContractInstanceManager;
|
||
queryContractInstanceDOI 查询合约实例信息 ContractInstanceManager;
|
||
rebuildHashIndex ContractInstanceManager;
|
||
setPermission ContractProvider;ContractInstanceManager;
|
||
startContract 启动合约 ContractInstanceManager;
|
||
startContractBatched 废弃 ContractInstanceManager;
|
||
startContractByYPK 启动合约 ContractInstanceManager;
|
||
startContractInTempZips 废弃 ContractInstanceManager;
|
||
startContractP2PTrustfully 启动合约(集群模式) ContractInstanceManager;
|
||
updateContract ContractInstanceManager;
|
||
connectTo 连接合约实例输出流 ContractInstanceManager;ContractUser;
|
||
countContractLogGroupByAction ContractInstanceManager;ContractUser;
|
||
countContractLogGroupByCategory ContractInstanceManager;ContractUser;
|
||
getLastLog 查询日志 ContractInstanceManager;ContractUser;
|
||
getLog 查询日志 ContractInstanceManager;ContractUser;
|
||
getLogSize 查询日志 ContractInstanceManager;ContractUser;
|
||
listAllContractProcess ContractInstanceManager;ContractUser;
|
||
listContractProcess 查询合约实例列表 ContractInstanceManager;ContractUser;
|
||
listLeakContractProcess ContractInstanceManager;ContractUser;
|
||
queryContractLogByDate ContractInstanceManager;ContractUser;
|
||
queryContractLogByKey ContractInstanceManager;ContractUser;
|
||
queryContractLogByOffset ContractInstanceManager;ContractUser;
|
||
queryContractLogDetail ContractInstanceManager;ContractUser;
|
||
queryContractLogSize ContractInstanceManager;ContractUser;
|
||
queryNodeLogByDate ContractInstanceManager;ContractUser;
|
||
queryNodeLogByOffset ContractInstanceManager;ContractUser;
|
||
queryNodeLogSize ContractInstanceManager;ContractUser;
|
||
rebuildContractLogIndex ContractInstanceManager;ContractUser;
|
||
rebuildNodeLogIndex ContractInstanceManager;ContractUser;
|
||
changePublic ContractProvider;
|
||
createFile 新建文件 ContractProvider;
|
||
deleteFile 删除文件 ContractProvider;
|
||
distributeContract ContractProvider;
|
||
downloadContract ContractProvider;
|
||
downloadContractFromOtherHost ContractProvider;
|
||
generateAnnotationSample ContractProvider;
|
||
generateAppDataAnalysis ContractProvider;
|
||
generateAppDataSource ContractProvider;
|
||
generateBDCoinEventProject ContractProvider;
|
||
generateBDCoinProject ContractProvider;
|
||
generateBiddingExample ContractProvider;
|
||
generateCSVProject ContractProvider;
|
||
generateContractExecutor ContractProvider;
|
||
generateDAC4BDOA ContractProvider;
|
||
generateDAC4BDOA_persist ContractProvider;
|
||
generateDACSample ContractProvider;
|
||
generateEmptyProject ContractProvider;
|
||
generateEventPublisher ContractProvider;
|
||
generateEventSubscriber ContractProvider;
|
||
generateGasExample ContractProvider;
|
||
generateHello ContractProvider;
|
||
generateHttpExample ContractProvider;
|
||
generateIncentives ContractProvider;
|
||
generateJSONExample ContractProvider;
|
||
generateLedgerExample ContractProvider;
|
||
generateLedgerProject ContractProvider;
|
||
generateLicenceManager ContractProvider;
|
||
generateLoggerExample ContractProvider;
|
||
generateMySQLExample ContractProvider;
|
||
generateMySQLProject ContractProvider;
|
||
generatePostgreSQLSample ContractProvider;
|
||
generateReadme ContractProvider;
|
||
generateRenderSample ContractProvider;
|
||
generateRocksDBSample ContractProvider;
|
||
generateSM2Example ContractProvider;
|
||
generateStaticResource ContractProvider;
|
||
generateTFLinux ContractProvider;
|
||
generategenerateTFMac ContractProvider;
|
||
getProject ContractProvider;
|
||
getTemplateList ContractProvider;
|
||
importContractInstanceCodeByDOI ContractProvider;
|
||
listFile ContractProvider;
|
||
listProject ContractProvider;
|
||
listProjectPermission ContractProvider;
|
||
listProjects ContractProvider;
|
||
renameFile ContractProvider;
|
||
saveFile ContractProvider;
|
||
startContractAsDebug ContractProvider;
|
||
uploadFile ContractProvider;
|
||
compile ContractProvider;ContractInstanceManager;
|
||
evaluates ContractProvider;ContractInstanceManager;
|
||
executeContractP2PTrustfully ContractProvider;ContractInstanceManager;
|
||
getCodeByID 查询代码 ContractProvider;ContractInstanceManager;
|
||
getControlFlowByFileName ContractProvider;ContractInstanceManager;
|
||
getGasValue ContractProvider;ContractInstanceManager;
|
||
listCompiledFiles ContractProvider;ContractInstanceManager;
|
||
queryContractResourceInfo ContractProvider;ContractInstanceManager;
|
||
queryFreeResourceInfo ContractProvider;ContractInstanceManager;
|
||
staticVerifyContract ContractProvider;ContractInstanceManager;
|
||
writeDyjs ContractProvider;ContractInstanceManager;
|
||
authNodeRole 授权角色 NodeManager;
|
||
changeBDledger 修改账本配置 NodeManager;
|
||
changeIpPort NodeManager;
|
||
changeNodeCenter 修改集群地址 NodeManager;
|
||
changeNodeName NodeManager;
|
||
changeIpPort NodeManager;
|
||
changeDOIPConfig NodeManager;
|
||
changeYJSPath NodeManager;
|
||
countNodeLogGroupByCategory NodeManager;
|
||
countRole NodeManager;
|
||
deleteRole NodeManager;
|
||
downloadUUID 废弃 NodeManager;
|
||
getEncodedUUID 废弃 NodeManager;
|
||
getPeerID NodeManager;
|
||
listAllAuthRole NodeManager;
|
||
listNodeInfos NodeManager;
|
||
listUnAuthRole NodeManager;
|
||
loadConfig NodeManager;
|
||
loadNodeConfig NodeManager;
|
||
lockEdit NodeManager;
|
||
unlockEdit NodeManager;
|
||
updateConfig NodeManager;
|
||
uploadLicence NodeManager;
|
||
applyNodeRole 申请角色 任意角色
|
||
executeContract 调用合约 任意角色
|
||
getConnCount 任意角色
|
||
getHashAbstractLocally 任意角色
|
||
getHashLocally 任意角色
|
||
getNodeRoleDeprecated 查询当前角色 任意角色
|
||
getSessionID 任意角色
|
||
listAdapters 任意角色
|
||
listTheContractProcess 任意角色
|
||
login 登录 任意角色
|
||
longStr 任意角色
|
||
ping 任意角色
|
||
queryDataByHash 任意角色
|
||
queryDataByHashLocally 任意角色
|
||
queryHashByOffset 任意角色
|
||
queryHashByRequestID 任意角色
|
||
queryHashSize 任意角色
|
||
queryLedgers 任意角色
|
||
queryRole 任意角色
|
||
queryTransactionByHash 任意角色
|
||
sendTransaction 任意角色
|
||
setLogStage 任意角色
|
||
=============================== ==================== =========================================
|
||
|
||
合约准入中心角色划分
|
||
~~~~~~~~~~~~~~~~~~~~
|
||
|
||
共分为两类角色:CenterManager和NodeManager。其中,CenterManager拥有对集群设置的权限。
|
||
NodeManager可以增加、删除节点等操作。
|
||
|
||
============================= ============ ==========================
|
||
接口 说明 角色
|
||
============================= ============ ==========================
|
||
authNodeManager CenterManager;
|
||
countActionLogByCategory CenterManager;
|
||
countCMLogByCategory CenterManager;
|
||
delete CenterManager;
|
||
listAllUsers CenterManager;
|
||
listApplyList CenterManager;
|
||
listLicence CenterManager;
|
||
queryActionLog CenterManager;
|
||
queryCMLog CenterManager;
|
||
updateLicence CenterManager;
|
||
addNode CenterManager;NodeManager;
|
||
changeNCFile CenterManager;NodeManager;
|
||
changeOtherNC CenterManager;NodeManager;
|
||
createTrustUnit 创建可信集群 CenterManager;NodeManager;
|
||
deleteTrustUnit CenterManager;NodeManager;
|
||
getNCFile CenterManager;NodeManager;
|
||
getNodeTrustUnits CenterManager;NodeManager;
|
||
getOtherNC CenterManager;NodeManager;
|
||
listContractProcess CenterManager;NodeManager;
|
||
listMultiPointContractProcess CenterManager;NodeManager;
|
||
listNodes CenterManager;NodeManager;
|
||
listTrustUnits CenterManager;NodeManager;
|
||
queryUserStat CenterManager;NodeManager;
|
||
stopMultiPointContractProcess CenterManager;NodeManager;
|
||
applyRole NodeManager;
|
||
executeContract 调用合约 任意角色
|
||
executeContractTrustfully 任意角色
|
||
getManagerPubkey 任意角色
|
||
getNodeRole 任意角色
|
||
getNodeSessionID 任意角色
|
||
getRole 任意角色
|
||
getSessionID 任意角色
|
||
login 登录 任意角色
|
||
============================= ============ ==========================
|
||
|
||
--------------
|
||
|
||
合约节点Http接口
|
||
----------------
|
||
|
||
``http://xxx.xxx.xxx.xxx:1717/SCIDE/SCManager``\ 为提供Http接口服务的服务器
|
||
URL(\ ``xxx.xxx.xxx.xxx:1717``\ 为BDWare SCIDE运行的IP和端口号) ,
|
||
用户可通过在URL后附加字段参数, 完成以下功能.
|
||
``http://xxx.xxx.xxx.xxx:18000/SCIDE/SCManager``
|
||
为提供Http接口服务的服务器
|
||
|
||
URL(\ ``xxx.xxx.xxx.xxx:1717`` 为BDWare
|
||
SCIDE运行的IP和端口号),用户可通过在URL后附加字段参数,完成以下功能:
|
||
|
||
用户管理类
|
||
~~~~~~~~~~
|
||
|
||
.. _ping-1:
|
||
|
||
ping
|
||
^^^^
|
||
|
||
``ping``\ 服务器测试
|
||
|
||
方法
|
||
''''
|
||
|
||
GET
|
||
|
||
.. _参数-2:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ====
|
||
字段 值
|
||
====== ====
|
||
action ping
|
||
====== ====
|
||
|
||
.. _请求示例-2:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
http://127.0.0.1:1717/SCIDE/SCManager?action=ping
|
||
|
||
.. _返回结果示例-2:
|
||
|
||
返回结果示例
|
||
''''''''''''
|
||
|
||
.. code:: json
|
||
|
||
{"data":"pong"}
|
||
|
||
合约代码管理类
|
||
~~~~~~~~~~~~~~
|
||
|
||
下载合约项目
|
||
^^^^^^^^^^^^
|
||
|
||
.. _方法-1:
|
||
|
||
方法
|
||
''''
|
||
|
||
GET
|
||
|
||
.. _参数-3:
|
||
|
||
参数
|
||
''''
|
||
|
||
=========== ================
|
||
字段 值
|
||
=========== ================
|
||
action downloadContract
|
||
projectName 合约项目名
|
||
isPrivate 是否在私有目录下
|
||
pubKey 用户公钥
|
||
timestamp 时间戳
|
||
sign 签名
|
||
=========== ================
|
||
|
||
.. _请求示例-3:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
http://127.0.0.1:18000/SCIDE/CMManager?action=downloadContract&projectName=BDCoin&isPrivate=false&pubKey=0480204f4ef341359a5f64fcb11baf9ca2e6706ac20cba3
|
||
8b7ff78aa631e97346086e2d48fac2ba7f5b75ccbd19ebf495c0e6f9934d69e3b083da4d42e46c991e0c2ea8bb45d59f31f46d0ec700fb01f2fdd275
|
||
|
||
上传文件
|
||
^^^^^^^^
|
||
|
||
.. _方法-2:
|
||
|
||
方法
|
||
''''
|
||
|
||
POST
|
||
|
||
.. _参数-4:
|
||
|
||
参数
|
||
''''
|
||
|
||
========= ================
|
||
字段 值
|
||
========= ================
|
||
path 文件上传路径
|
||
fileName 待上传文件名
|
||
isPrivate 是否在私有目录下
|
||
order 第几个数据包
|
||
count 数据包总数
|
||
timestamp 时间戳
|
||
sign 签名
|
||
========= ================
|
||
|
||
.. _请求示例-4:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
http://127.0.0.1:18000/SCIDE/Upload?path=/TEST/TEST.yjs&fileName=WechatIMG15.jpeg&isPrivate=true&order=0&count=3&pubKey=0480204f4ef341359a5f64fcb11baf9ca2e6706ac20cba36ca83066870cf2c1d5de6df67e24e68dde7934af9b31d94a6084281db3d32d5ce42ab8f75bf799aca05&sign=dd867469f5adf9986e4ea6215febeae50c7d4c3836d002cf8c17050dfca031fd2595ffa8646e9eeae53150d2cbaea690e27d818eaf5cea3632ee1b69c3307a4b631e97346086e2d48fac2ba7f5b75ccbd19ebf495c0e6f9934d69e3b083da4d42e46c991e0c2ea8bb45d59f31f46d0ec700fb01f2fdd275
|
||
|
||
.. _返回结果示例-3:
|
||
|
||
返回结果示例
|
||
''''''''''''
|
||
|
||
.. code:: json
|
||
|
||
{"status":"true","data":"success"}
|
||
|
||
保存合约脚本
|
||
^^^^^^^^^^^^
|
||
|
||
向服务器发送请求, 向服务器本地保存合约脚本内容.
|
||
|
||
.. _方法-3:
|
||
|
||
方法
|
||
''''
|
||
|
||
GET
|
||
|
||
.. _参数-5:
|
||
|
||
参数
|
||
''''
|
||
|
||
======= ==============
|
||
字段 值
|
||
======= ==============
|
||
action writeDyjs
|
||
target 合约脚本文件名
|
||
content 合约脚本内容
|
||
======= ==============
|
||
|
||
.. _请求示例-5:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
http://127.0.0.1:1717/SCIDE/SCManager?action=writeDyjs&target=testyjs.yjs&content=contract%20shortc%7B%0A%09export%20function%20main(arg)%7B%0A%09%09return%20arg.length%3B%09%0A%09%7D%0A%7D
|
||
|
||
.. _返回结果示例-4:
|
||
|
||
返回结果示例
|
||
''''''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"status": false,
|
||
"action": "onWriteDyjs",
|
||
"data": "success"
|
||
}
|
||
|
||
后续用户可启动并调用该合约.
|
||
|
||
合约实例管理类
|
||
~~~~~~~~~~~~~~
|
||
|
||
查询合约进程
|
||
^^^^^^^^^^^^
|
||
|
||
向服务器发送请求, 查询服务器上已经启动的所有合约进程.
|
||
|
||
.. _方法-4:
|
||
|
||
方法
|
||
''''
|
||
|
||
GET
|
||
|
||
.. _参数-6:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ===================
|
||
字段 值
|
||
====== ===================
|
||
action listContractProcess
|
||
====== ===================
|
||
|
||
.. _请求示例-6:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
http://127.0.0.1:1717/SCIDE/SCManager?action=listContractProcess
|
||
|
||
.. _返回结果示例-5:
|
||
|
||
返回结果示例
|
||
''''''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"status": false,
|
||
"action": "onListContractProcess",
|
||
"data": "[\n {\n \"id\": \"-562752842\",\n \"name\": \"shortc\",\n \"port\": \"1626\",\n \"times\": \"0 \",\n \"traffic\": \"32.00 B\",\n \"storage\": \"0.00 B\",\n \"contractStatus\": \"Ready\"\n }\n]"
|
||
}
|
||
|
||
启动合约
|
||
^^^^^^^^
|
||
|
||
向服务器发送请求, 启动某个合约.
|
||
|
||
.. _方法-5:
|
||
|
||
方法
|
||
''''
|
||
|
||
GET
|
||
|
||
.. _参数-7:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== =================================
|
||
字段 值
|
||
====== =================================
|
||
action startContract
|
||
script 合约脚本内容, 需进行进行URIEncode
|
||
====== =================================
|
||
|
||
.. _请求示例-7:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
http://127.0.0.1:1717/SCIDE/SCManager?action=startContract&script=contract%20shortc%7B%0A%09export%20function%20main(arg)%7B%0A%09%09return%20arg.length%3B%09%0A%09%7D%0A%7D
|
||
|
||
.. _返回结果示例-6:
|
||
|
||
返回结果示例
|
||
''''''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"data": "{\"status\":\"Success\",\"result\":\"\"}",
|
||
"action": "onStartContract",
|
||
"cid": "-562752842",
|
||
"executeTime": 1187
|
||
}
|
||
|
||
调用合约
|
||
^^^^^^^^
|
||
|
||
向服务器发送请求, 调用某个合约.
|
||
|
||
.. _方法-6:
|
||
|
||
方法
|
||
''''
|
||
|
||
GET
|
||
|
||
.. _参数-8:
|
||
|
||
参数
|
||
''''
|
||
|
||
=================== ===========================
|
||
字段 值
|
||
=================== ===========================
|
||
action executeContract
|
||
contractID 合约ID
|
||
withDynamicAnalysis true/false 是否进行动态分析
|
||
operation 调用合约的方法名
|
||
arg 调用合约的参数
|
||
pubkey 可选,调用者公钥
|
||
signature 可选,签名
|
||
=================== ===========================
|
||
|
||
其中pubkey为sm2的公钥,计算方式如下:
|
||
|
||
.. code:: javascript
|
||
|
||
//sm2 可从sm2.js中加载获得。
|
||
signature = sm2.doSignature(contractID+"|"+operation+"|"+arg+"|"+pubkey,privateKey);
|
||
|
||
.. _请求示例-8:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
http://127.0.0.1:1717/SCIDE/SCManager?action=executeContract&contractID=-620602333&operation=main&arg=hhh
|
||
|
||
.. _返回结果示例-7:
|
||
|
||
返回结果示例
|
||
''''''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"data": "{\"status\":\"Success\",\"result\":\"3\"}",
|
||
"action": "onExecuteResult",
|
||
"executeTime": "13"
|
||
}
|
||
|
||
批量启动合约
|
||
^^^^^^^^^^^^
|
||
|
||
向服务器发送请求, 启动服务器中保存有合约脚本的一系列合约.
|
||
|
||
.. _方法-7:
|
||
|
||
方法
|
||
''''
|
||
|
||
GET
|
||
|
||
.. _参数-9:
|
||
|
||
参数
|
||
''''
|
||
|
||
======== ====================================
|
||
字段 值
|
||
======== ====================================
|
||
action startContractBatched
|
||
fileList 合约脚本文件列表(Json数组,URLEncode)
|
||
======== ====================================
|
||
|
||
.. _请求示例-9:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
http://127.0.0.1:1717/SCIDE/SCManager?action=startContractBatched&fileList=%5B%20%22EventPuber.yjs%22%2C%20%22EventSuber.yjs%22%2C%20%22LicenceManager.yjs%22%20%5D
|
||
|
||
.. _返回结果示例-8:
|
||
|
||
返回结果示例
|
||
''''''''''''
|
||
|
||
.. code:: json
|
||
|
||
{"EventPuber.yjs":"{\"status\":\"Success\",\"result\":\"\"}","LicenceManager.yjs":"{\"status\":\"Success\",\"result\":\"\"}","EventSuber.yjs":"{\"status\":\"Success\",\"result\":\"\"}","action":"onStartContract"}
|
||
|
||
启动Zip包合约
|
||
^^^^^^^^^^^^^
|
||
|
||
向服务器发送请求, 启动服务器中包装为\ ``zip``\ 格式的合约.
|
||
|
||
.. _方法-8:
|
||
|
||
方法
|
||
''''
|
||
|
||
GET
|
||
|
||
.. _参数-10:
|
||
|
||
参数
|
||
''''
|
||
|
||
========= =======================
|
||
字段 值
|
||
========= =======================
|
||
action startContractInTempZips
|
||
owner 调用者公钥
|
||
path zip合约(路径及)文件名
|
||
signature 调用者签名
|
||
========= =======================
|
||
|
||
.. _请求示例-10:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
http://127.0.0.1:1717/SCIDE/SCManager?action=startContractInTempZips&owner=0475c7b061f32477c1e228dd04143daf58a5574dc3f6b02bd2857cc794eb92bfe98606dc314049e77fd8714f57a5a481cb470cc759e688fe60d40fc87092165e55&path=traceTest.zip&signature=650d3cad50509682937c253d84da99230e8ea1bcfb9b10f6d18f8888c7c4b6b4%2C72231a6daa078a3ce657c0a2ed38251b7db56cf725beaf86780d4c240b19ccc2
|
||
|
||
.. _返回结果示例-9:
|
||
|
||
返回结果示例
|
||
''''''''''''
|
||
|
||
.. code:: json
|
||
|
||
{"data":"verify failed","action":"onStartContract"}
|
||
|
||
获取合约代码
|
||
^^^^^^^^^^^^
|
||
|
||
向服务器发送请求, 获取某个ID合约的脚本代码.
|
||
|
||
.. _方法-9:
|
||
|
||
方法
|
||
''''
|
||
|
||
GET
|
||
|
||
.. _参数-11:
|
||
|
||
参数
|
||
''''
|
||
|
||
========== ===========
|
||
字段 值
|
||
========== ===========
|
||
action getCodeByID
|
||
contractID 合约ID
|
||
========== ===========
|
||
|
||
.. _请求示例-11:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
http://127.0.0.1:1717/SCIDE/SCManager?action=getCodeByID&contractID=814046805
|
||
|
||
.. _返回结果示例-10:
|
||
|
||
返回结果示例
|
||
''''''''''''
|
||
|
||
.. code:: json
|
||
|
||
{"status":true,"action":"onCodeResult","data":"@LogType(\"Arg\")\ncontract EventSuberAtCHQ{\n\t\n \texport function init(arg){\n\t\tvar result \u003d YancloudUtil.subscribe(\"EventPuberAt3966\",\"abc\",handler);\n // print(\"Handler:\"+handler);\n \t \n \t\treturn result;\n\t}\n \texport function handler(e){\n var ret \u003d \"ReceiveEvent:\";\n\t\tret+\u003d\"\\n\";\n \tprint(ret);\n \tret+\u003dYancloudUtil.executeContract(\"EventPuberAt3966\",\"notify\",\"success\");\n \tprint(ret);\n return ret;\n\t}\n}\n"}
|
||
|
||
保存合约状态
|
||
^^^^^^^^^^^^
|
||
|
||
向服务器发送请求, 获取节点服务器的状态转移日志.
|
||
|
||
.. _方法-10:
|
||
|
||
方法
|
||
''''
|
||
|
||
GET
|
||
|
||
.. _参数-12:
|
||
|
||
参数
|
||
''''
|
||
|
||
========== ===================
|
||
字段 值
|
||
========== ===================
|
||
action dumpContract
|
||
contractID 合约ID 或 合约Name=
|
||
========== ===================
|
||
|
||
.. _请求示例-12:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
http://127.0.0.1:18000/SCIDE/SCManager?action=dumpContract&contractID=counter&pubKey=040461417efe01423ba603f71c689387e8aac4aa2a6f7cddfaf22c1d22c40222f7669a054e7ec2e8533b04ccbc7a0e6655ac4ae4acef81a2b1822ec6cabcaf6c1f&sign=3045022004ffd1346b936196f5b13953d2f3e11823a0d0a2d2f6fecea258cef8e20d99c0022100bbc219ed1f56799ba28a763b9e9e47063164e7ceecfbfa752de42f44551ffb83
|
||
|
||
.. _返回结果示例-11:
|
||
|
||
返回结果示例
|
||
''''''''''''
|
||
|
||
.. code:: json
|
||
|
||
{"data":"success","size":"3.76 KB","time":"0.03s"}
|
||
|
||
获取合约内存文件列表
|
||
^^^^^^^^^^^^^^^^^^^^
|
||
|
||
向服务器发送请求, 获取某子文件夹中的所有内存文件列表.
|
||
|
||
.. _方法-11:
|
||
|
||
方法
|
||
''''
|
||
|
||
GET
|
||
|
||
.. _参数-13:
|
||
|
||
参数
|
||
''''
|
||
|
||
========== ==================
|
||
字段 值
|
||
========== ==================
|
||
action listMemoryFiles
|
||
contractID 合约Id 或 合约Name
|
||
========== ==================
|
||
|
||
.. _请求示例-13:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
http://127.0.0.1:18000/SCIDE/SCManager?action=listMemoryFiles&contractID=-247468535&pubKey=040461417efe01423ba603f71c689387e8aac4aa2a6f7cddfaf22c1d22c40222f7669a054e7ec2e8533b04ccbc7a0e6655ac4ae4acef81a2b1822ec6cabcaf6c1f&sign=3045022075c7268e888b0efdef167a3f4dfc6589d771c6be41b3c0a1dc12d057e811f395022100d44f460d0cc3643e169ef08231e75a1e895646c53295c0ef1d15c3b462a53d6b
|
||
|
||
.. _返回结果示例-12:
|
||
|
||
返回结果示例
|
||
''''''''''''
|
||
|
||
.. code:: json
|
||
|
||
{"data":["2020-09-23.18:40:38","2020-09-24.16:03:41","2020-09-24.16:58:39","2020-09-24.18:25:47","2020-09-24.18:32:37","2020-09-24.20:54:41","2020-09-24.20:57:39","2020-09-24.21:31:07","2020-09-24.21:32:09","2020-09-24.21:36:11","2020-09-28.15:29:15","2020-09-28.20:28:29","2020-09-28.20:39:46","2020-09-28.21:45:31","2020-09-28.21:49:18","2020-09-28.22:27:34","2020-09-28.22:31:09","2020-09-28.22:32:49","2020-10-07.16:51:06","2020-10-07.16:51:23","2020-10-25.21:09:10","2020-12-14.19:06:53","2021-02-02.10:28:56","2021-02-02.10:31:13"],"action":"onListMemoryFiles"}
|
||
|
||
停止合约
|
||
^^^^^^^^
|
||
|
||
向服务器发送请求, 停止某个合约.
|
||
|
||
.. _方法-12:
|
||
|
||
方法
|
||
''''
|
||
|
||
GET
|
||
|
||
.. _参数-14:
|
||
|
||
参数
|
||
''''
|
||
|
||
=========== ===================
|
||
字段 值
|
||
=========== ===================
|
||
action killContractProcess
|
||
id 合约ID
|
||
\*requestID 请求ID, String类型
|
||
=========== ===================
|
||
|
||
``*``\ 表示可选参数
|
||
|
||
.. _请求示例-14:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
http://127.0.0.1:1717/SCIDE/SCManager?action=killContractProcess&id=-1759263594
|
||
|
||
.. _返回结果示例-13:
|
||
|
||
返回结果示例
|
||
''''''''''''
|
||
|
||
.. code:: json
|
||
|
||
{"status":false,"action":"onListContractProcess","data":"[\n {\n \"id\": \"-65051856\",\n \"name\": \"EventSuber\",\n \"port\": \"1631\",\n \"times\": \"0 \",\n \"traffic\": \"32.00 B\",\n \"storage\": \"0.00 B\",\n \"contractStatus\": \"Ready\"\n },\n {\n \"id\": \"814046805\",\n \"name\": \"EventSuberAtCHQ\",\n \"port\": \"1630\",\n \"times\": \"0 \",\n \"traffic\": \"32.00 B\",\n \"storage\": \"0.00 B\",\n \"contractStatus\": \"Ready\"\n },\n {\n \"id\": \"2023975189\",\n \"name\": \"LicenceService\",\n \"port\": \"1632\",\n \"times\": \"0 \",\n \"traffic\": \"32.00 B\",\n \"storage\": \"0.00 B\",\n \"contractStatus\": \"Ready\"\n },\n {\n \"id\": \"-620602333\",\n \"name\": \"shortc\",\n \"port\": \"1627\",\n \"times\": \"0 \",\n \"traffic\": \"0.00 B\",\n \"storage\": \"0.00 B\",\n \"contractStatus\": \"Ready\"\n }\n]"}
|
||
|
||
停止所有合约
|
||
^^^^^^^^^^^^
|
||
|
||
向服务器发送请求, 停止服务器上启动的所有合约.
|
||
|
||
.. _方法-13:
|
||
|
||
方法
|
||
''''
|
||
|
||
GET
|
||
|
||
.. _参数-15:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ===============
|
||
字段 值
|
||
====== ===============
|
||
action killAllContract
|
||
====== ===============
|
||
|
||
.. _请求示例-15:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
http://127.0.0.1:1717/SCIDE/SCManager?action=killAllContract
|
||
|
||
.. _返回结果示例-14:
|
||
|
||
返回结果示例
|
||
''''''''''''
|
||
|
||
.. code:: json
|
||
|
||
{"status":false,"action":"onKillAllContract","data":"Kill:7357,7541,7548,7555,7584,7585,7591,7598,7609,7612,8440,8442,8444,8521,"}
|
||
|
||
静态分析合约
|
||
^^^^^^^^^^^^
|
||
|
||
向服务器发送请求, 静态分析合约脚本.
|
||
|
||
.. _方法-14:
|
||
|
||
方法
|
||
''''
|
||
|
||
GET
|
||
|
||
.. _参数-16:
|
||
|
||
参数
|
||
''''
|
||
|
||
========== ====================
|
||
字段 值
|
||
========== ====================
|
||
action staticVerifyContract
|
||
contractid 合约ID
|
||
script 请求ID, String类型
|
||
========== ====================
|
||
|
||
.. _请求示例-16:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
http://127.0.0.1:1717/SCIDE/SCManager?action=staticVerifyContract&contractid=943728900&script=contract%20shortc%7B%0A%09export%20function%20main(arg)%7B%0A%09%09return%20arg.length%3B%09%0A%09%7D%0A%7D&path=static.yjs
|
||
|
||
.. _返回结果示例-15:
|
||
|
||
返回结果示例
|
||
''''''''''''
|
||
|
||
.. code:: json
|
||
|
||
{"data":"{\"status\":\"Success\",\"result\":\"{\\\"main\\\":\\\"Ret:arg \\\"}\"}","action":"onExecuteResult","cid":"943728900","executeTime":54}
|
||
|
||
获取合约静态分析流
|
||
^^^^^^^^^^^^^^^^^^
|
||
|
||
向服务器发送请求, 获取某个合约的静态分析Control Flow.
|
||
|
||
.. _方法-15:
|
||
|
||
方法
|
||
''''
|
||
|
||
GET
|
||
|
||
.. _参数-17:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ========================
|
||
字段 值
|
||
====== ========================
|
||
action getControlFlowByFileName
|
||
path 合约ID
|
||
====== ========================
|
||
|
||
.. _请求示例-17:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
http://127.0.0.1:1717/SCIDE/SCManager?action=getControlFlowByFileName&path=EventSuber.yjs
|
||
|
||
.. _返回结果示例-16:
|
||
|
||
返回结果示例
|
||
''''''''''''
|
||
|
||
.. code:: json
|
||
|
||
{"init":{"blocks":[{"type":"Continuous","name":"B0","stmts":["\u003dL0\u003d","aload 0","invokevirtual wrp/jdk/nashorn/internal/runtime/ScriptFunction getScope ()Lwrp/jdk/nashorn/internal/runtime/ScriptObject;"],"original":""},{"type":"Continuous","name":"B1","stmts":["\u003dL1\u003d","astore 4"],"original":""},{"type":"Continuous","name":"B2","stmts":["\u003dL2\u003d","aload 4","invokedynamic dyn:getProp|getElem|getMethod:YancloudUtil (Ljava/lang/Object;)Ljava/lang/Object; HANDLE:wrp/jdk/nashorn/internal/runtime/linker/Bootstrap.bootstrap(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/CallSite; (6) 5 "],"original":"\t\tvar result \u003d YancloudUtil.subscribe(\"XiaomiSmartHomeAtPKU\",\"onAirPurifierModeChange\",handler);"},{"type":"Continuous","name":"B3","stmts":["dup","invokedynamic dyn:getMethod|getProp|getElem:subscribe (Ljava/lang/Object;)Ljava/lang/Object; HANDLE:wrp/jdk/nashorn/internal/runtime/linker/Bootstrap.bootstrap(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/CallSite; (6) 0 "],"original":"\t\tvar result \u003d YancloudUtil.subscribe(\"XiaomiSmartHomeAtPKU\",\"onAirPurifierModeChange\",handler);"},{"type":"Continuous","name":"B4","stmts":["swap","ldc XiaomiSmartHomeAtPKU","ldc onAirPurifierModeChange","aload 4","invokedynamic dyn:getProp|getElem|getMethod:handler (Ljava/lang/Object;)Ljava/lang/Object; HANDLE:wrp/jdk/nashorn/internal/runtime/linker/Bootstrap.bootstrap(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/CallSite; (6) 5 "],"original":"\t\tvar result \u003d YancloudUtil.subscribe(\"XiaomiSmartHomeAtPKU\",\"onAirPurifierModeChange\",handler);"},{"type":"Continuous","name":"B5","stmts":["invokedynamic dyn:call:\\\u003dYancloudUtil\\,subscribe (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object; HANDLE:wrp/jdk/nashorn/internal/runtime/linker/Bootstrap.bootstrap(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/CallSite; (6) 0 "],"original":"\t\tvar result \u003d YancloudUtil.subscribe(\"XiaomiSmartHomeAtPKU\",\"onAirPurifierModeChange\",handler);"},{"type":"Continuous","name":"B6","stmts":["\u003dL3\u003d","astore 5"],"original":"\t\tvar result \u003d YancloudUtil.subscribe(\"XiaomiSmartHomeAtPKU\",\"onAirPurifierModeChange\",handler);"},{"type":"Continuous","name":"B7","stmts":["\u003dL4\u003d","aload 5","areturn"],"original":" \t\treturn result;"},{"type":"Continuous","name":"B8","stmts":["\u003dL5\u003d"],"original":" \t\treturn result;"},{"type":"Continuous","name":"B9","stmts":["\u003dL6\u003d"],"original":" \t\treturn result;"}],"edges":[{"from":"B0","to":"B1","label":{"label":"e"}},{"from":"B1","to":"B2","label":{"label":"e"}},{"from":"B2","to":"B3","label":{"label":"e"}},{"from":"B3","to":"B4","label":{"label":"e"}},{"from":"B4","to":"B5","label":{"label":"e"}},{"from":"B5","to":"B6","label":{"label":"e"}},{"from":"B6","to":"B7","label":{"label":"e"}},{"from":"B7","to":"B9","label":{"label":"e"}}]},"handler":{"blocks":[{"type":"Continuous","name":"B0","stmts":["\u003dL0\u003d","aload 0","invokevirtual wrp/jdk/nashorn/internal/runtime/ScriptFunction getScope ()Lwrp/jdk/nashorn/internal/runtime/ScriptObject;"],"original":""},{"type":"Continuous","name":"B1","stmts":["\u003dL1\u003d","astore 4"],"original":""},{"type":"Continuous","name":"B2","stmts":["\u003dL2\u003d","ldc ReceiveEvent:","aload 2","invokedynamic dyn:getProp|getElem|getMethod:content (Ljava/lang/Object;)Ljava/lang/Object; HANDLE:wrp/jdk/nashorn/internal/runtime/linker/Bootstrap.bootstrap(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/CallSite; (6) 0 "],"original":" var ret \u003d \"ReceiveEvent:\"+e.content+\" \"+e.type;"},{"type":"Continuous","name":"B3","stmts":["invokestatic wrp/jdk/nashorn/internal/runtime/ScriptRuntime ADD (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"],"original":" var ret \u003d \"ReceiveEvent:\"+e.content+\" \"+e.type;"},{"type":"Continuous","name":"B4","stmts":["ldc ","invokestatic wrp/jdk/nashorn/internal/runtime/ScriptRuntime ADD (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"],"original":" var ret \u003d \"ReceiveEvent:\"+e.content+\" \"+e.type;"},{"type":"Continuous","name":"B5","stmts":["aload 2","invokedynamic dyn:getProp|getElem|getMethod:type (Ljava/lang/Object;)Ljava/lang/Object; HANDLE:wrp/jdk/nashorn/internal/runtime/linker/Bootstrap.bootstrap(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/CallSite; (6) 0 "],"original":" var ret \u003d \"ReceiveEvent:\"+e.content+\" \"+e.type;"},{"type":"Continuous","name":"B6","stmts":["invokestatic wrp/jdk/nashorn/internal/runtime/ScriptRuntime ADD (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"],"original":" var ret \u003d \"ReceiveEvent:\"+e.content+\" \"+e.type;"},{"type":"Continuous","name":"B7","stmts":["\u003dL3\u003d","astore 5"],"original":" var ret \u003d \"ReceiveEvent:\"+e.content+\" \"+e.type;"},{"type":"Continuous","name":"B8","stmts":["\u003dL4\u003d","aload 4","invokedynamic dyn:getMethod|getProp|getElem:print (Ljava/lang/Object;)Ljava/lang/Object; HANDLE:wrp/jdk/nashorn/internal/runtime/linker/Bootstrap.bootstrap(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/CallSite; (6) 5 "],"original":" \tprint(ret);"},{"type":"Continuous","name":"B9","stmts":["getstatic wrp/jdk/nashorn/internal/runtime/ScriptRuntime UNDEFINED Lwrp/jdk/nashorn/internal/runtime/Undefined;","aload 5","invokedynamic dyn:call:print (Ljava/lang/Object;Lwrp/jdk/nashorn/internal/runtime/Undefined;Ljava/lang/Object;)Ljava/lang/Object; HANDLE:wrp/jdk/nashorn/internal/runtime/linker/Bootstrap.bootstrap(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/CallSite; (6) 5 "],"original":" \tprint(ret);"},{"type":"Continuous","name":"B10","stmts":["pop"],"original":" \tprint(ret);"},{"type":"Continuous","name":"B11","stmts":["\u003dL5\u003d","aload 5","areturn"],"original":" return ret;"},{"type":"Continuous","name":"B12","stmts":["\u003dL6\u003d"],"original":" return ret;"},{"type":"Continuous","name":"B13","stmts":["\u003dL7\u003d"],"original":" return ret;"}],"edges":[{"from":"B0","to":"B1","label":{"label":"e"}},{"from":"B1","to":"B2","label":{"label":"e"}},{"from":"B2","to":"B3","label":{"label":"e"}},{"from":"B3","to":"B4","label":{"label":"e"}},{"from":"B4","to":"B5","label":{"label":"e"}},{"from":"B5","to":"B6","label":{"label":"e"}},{"from":"B6","to":"B7","label":{"label":"e"}},{"from":"B7","to":"B8","label":{"label":"e"}},{"from":"B8","to":"B9","label":{"label":"e"}},{"from":"B9","to":"B10","label":{"label":"e"}},{"from":"B10","to":"B11","label":{"label":"e"}},{"from":"B11","to":"B13","label":{"label":"e"}}]}}
|
||
|
||
日志查看类
|
||
~~~~~~~~~~
|
||
|
||
合约日志-查询数量
|
||
^^^^^^^^^^^^^^^^^
|
||
|
||
.. _方法-16:
|
||
|
||
方法
|
||
''''
|
||
|
||
GET
|
||
|
||
contractName为空或是不传入时,则为查询全部合约的条数
|
||
|
||
.. _参数-18:
|
||
|
||
参数
|
||
''''
|
||
|
||
============ ========================
|
||
字段 值
|
||
============ ========================
|
||
action queryContractLogSize
|
||
contractName 字符串,非必须,合约名称
|
||
============ ========================
|
||
|
||
.. _请求示例-18:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
http://127.0.0.1:18000/SCIDE/CMManager?action=queryContractLogSize&contractName=NanningDataSource
|
||
|
||
.. _返回结果示例-17:
|
||
|
||
返回结果示例
|
||
''''''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"size": 12,
|
||
"action": "onQueryContractLogSize",
|
||
"status": "success"
|
||
}
|
||
|
||
合约日志-根据日期查询
|
||
^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
.. _方法-17:
|
||
|
||
方法
|
||
''''
|
||
|
||
GET
|
||
|
||
.. _参数-19:
|
||
|
||
参数
|
||
''''
|
||
|
||
============ =====================================
|
||
字段 值
|
||
============ =====================================
|
||
action queryContractLogByDate
|
||
start long,必须,起始时间
|
||
end long,非必须,若无end,默认为当前时间
|
||
contractName 字符串,非必须,合约名称
|
||
============ =====================================
|
||
|
||
.. _请求示例-19:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
http://127.0.0.1:18000/SCIDE/CMManager?action=queryContractLogByDate&start=1597296300272&end=1597296305747
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"data": [
|
||
{
|
||
"action": "executeContract",
|
||
"pubKey": "04d1924329f72ced148f6f333fb985ccbaa31b1e3aacf10be5f43d4a4ff5ad88899a005e79e37fc06993e1d66ada8cf8b711cb36f59538bb7d3e39e70fa9360ddd",
|
||
"contractID": "-1382208250",
|
||
"contractName": "NanningDataSource",
|
||
"function": "getMainFrame",
|
||
"costTime": "2493",
|
||
"totalGas": "0",
|
||
"executionGas": "0",
|
||
"extraGas": "0",
|
||
"date": 1597296300272,
|
||
"key": "-8590335427581967208"
|
||
},
|
||
{
|
||
"action": "executeContract",
|
||
"pubKey": "04d1924329f72ced148f6f333fb985ccbaa31b1e3aacf10be5f43d4a4ff5ad88899a005e79e37fc06993e1d66ada8cf8b711cb36f59538bb7d3e39e70fa9360ddd",
|
||
"contractID": "-1382208250",
|
||
"contractName": "NanningDataSource",
|
||
"function": "loadResource",
|
||
"costTime": "732",
|
||
"totalGas": "0",
|
||
"executionGas": "0",
|
||
"extraGas": "0",
|
||
"date": 1597296301030,
|
||
"key": "849660532962309239"
|
||
},
|
||
{
|
||
"action": "executeContract",
|
||
"pubKey": "04d1924329f72ced148f6f333fb985ccbaa31b1e3aacf10be5f43d4a4ff5ad88899a005e79e37fc06993e1d66ada8cf8b711cb36f59538bb7d3e39e70fa9360ddd",
|
||
"contractID": "-1382208250",
|
||
"contractName": "NanningDataSource",
|
||
"function": "loadResource",
|
||
"costTime": "4580",
|
||
"totalGas": "0",
|
||
"executionGas": "0",
|
||
"extraGas": "0",
|
||
"date": 1597296305745,
|
||
"key": "-8003529429500512736"
|
||
},
|
||
{
|
||
"action": "executeContract",
|
||
"pubKey": "04d1924329f72ced148f6f333fb985ccbaa31b1e3aacf10be5f43d4a4ff5ad88899a005e79e37fc06993e1d66ada8cf8b711cb36f59538bb7d3e39e70fa9360ddd",
|
||
"contractID": "-1382208250",
|
||
"contractName": "NanningDataSource",
|
||
"function": "loadResource",
|
||
"costTime": "4551",
|
||
"totalGas": "0",
|
||
"executionGas": "0",
|
||
"extraGas": "0",
|
||
"date": 1597296305746,
|
||
"key": "7604666709899222357"
|
||
},
|
||
{
|
||
"action": "executeContract",
|
||
"pubKey": "04d1924329f72ced148f6f333fb985ccbaa31b1e3aacf10be5f43d4a4ff5ad88899a005e79e37fc06993e1d66ada8cf8b711cb36f59538bb7d3e39e70fa9360ddd",
|
||
"contractID": "-1382208250",
|
||
"contractName": "NanningDataSource",
|
||
"function": "loadResource",
|
||
"costTime": "6",
|
||
"totalGas": "0",
|
||
"executionGas": "0",
|
||
"extraGas": "0",
|
||
"date": 1597296305751,
|
||
"key": "-7561786202695627022"
|
||
}
|
||
],
|
||
"action": "onQueryRecentContractLog"
|
||
}
|
||
|
||
合约日志-根据偏移量查询
|
||
^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
.. _方法-18:
|
||
|
||
方法
|
||
''''
|
||
|
||
GET
|
||
|
||
.. _参数-20:
|
||
|
||
参数
|
||
''''
|
||
|
||
============ =============================================
|
||
字段 值
|
||
============ =============================================
|
||
action queryContractLogByOffset
|
||
count long,必须,获取日志条数
|
||
offset long,非必须,若无offset,默认返回最新count条
|
||
contractName 字符串,非必须,合约名称
|
||
============ =============================================
|
||
|
||
.. _请求示例-20:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
http://127.0.0.1:18000/SCIDE/CMManager?action=queryContractLogByOffset&count=5&contractName=NanningDataSource
|
||
|
||
.. _返回结果-1:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"data": [
|
||
{
|
||
"action": "executeContract",
|
||
"pubKey": "04d1924329f72ced148f6f333fb985ccbaa31b1e3aacf10be5f43d4a4ff5ad88899a005e79e37fc06993e1d66ada8cf8b711cb36f59538bb7d3e39e70fa9360ddd",
|
||
"contractID": "-1382208250",
|
||
"contractName": "NanningDataSource",
|
||
"function": "loadResource",
|
||
"costTime": "4",
|
||
"totalGas": "0",
|
||
"executionGas": "0",
|
||
"extraGas": "0",
|
||
"date": 1597296305842,
|
||
"key": "-2390672423847654148"
|
||
},
|
||
{
|
||
"action": "executeContract",
|
||
"pubKey": "04d1924329f72ced148f6f333fb985ccbaa31b1e3aacf10be5f43d4a4ff5ad88899a005e79e37fc06993e1d66ada8cf8b711cb36f59538bb7d3e39e70fa9360ddd",
|
||
"contractID": "-1382208250",
|
||
"contractName": "NanningDataSource",
|
||
"function": "isOwner",
|
||
"costTime": "4",
|
||
"totalGas": "0",
|
||
"executionGas": "0",
|
||
"extraGas": "0",
|
||
"date": 1597296305868,
|
||
"key": "6056586201629372511"
|
||
},
|
||
{
|
||
"action": "executeContract",
|
||
"pubKey": "04d1924329f72ced148f6f333fb985ccbaa31b1e3aacf10be5f43d4a4ff5ad88899a005e79e37fc06993e1d66ada8cf8b711cb36f59538bb7d3e39e70fa9360ddd",
|
||
"contractID": "-1382208250",
|
||
"contractName": "NanningDataSource",
|
||
"function": "getApplyList",
|
||
"costTime": "6",
|
||
"totalGas": "0",
|
||
"executionGas": "0",
|
||
"extraGas": "0",
|
||
"date": 1597296305893,
|
||
"key": "3882409580676458151"
|
||
},
|
||
{
|
||
"action": "executeContract",
|
||
"pubKey": "04d1924329f72ced148f6f333fb985ccbaa31b1e3aacf10be5f43d4a4ff5ad88899a005e79e37fc06993e1d66ada8cf8b711cb36f59538bb7d3e39e70fa9360ddd",
|
||
"contractID": "-1382208250",
|
||
"contractName": "NanningDataSource",
|
||
"function": "getAcceptList",
|
||
"costTime": "4",
|
||
"totalGas": "0",
|
||
"executionGas": "0",
|
||
"extraGas": "0",
|
||
"date": 1597296305908,
|
||
"key": "-3437513873417136535"
|
||
},
|
||
{
|
||
"action": "executeContract",
|
||
"pubKey": "04d1924329f72ced148f6f333fb985ccbaa31b1e3aacf10be5f43d4a4ff5ad88899a005e79e37fc06993e1d66ada8cf8b711cb36f59538bb7d3e39e70fa9360ddd",
|
||
"contractID": "-1382208250",
|
||
"contractName": "NanningDataSource",
|
||
"function": "analysisByIndustry",
|
||
"costTime": "6",
|
||
"totalGas": "0",
|
||
"executionGas": "0",
|
||
"extraGas": "0",
|
||
"signature": "4c2cef1756b2b591ab7eead19d67331e2294c7ba765c72298733c306ada0b6e84afbb6c7b9dba48b9843236ebe67aecb4af09fe58a51eef0e2e89b9f3e5cad02",
|
||
"arg": " {\"year\":2018,\"category\":\"工业\",\"indexType\":\"营业额\"}",
|
||
"date": 1597296314654,
|
||
"key": "203156239086062402"
|
||
}
|
||
],
|
||
"action": "onQueryRecentContractLog"
|
||
}
|
||
|
||
合约日志-根据key查询
|
||
^^^^^^^^^^^^^^^^^^^^
|
||
|
||
.. _方法-19:
|
||
|
||
方法
|
||
''''
|
||
|
||
GET
|
||
|
||
.. _参数-21:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ===========================
|
||
字段 值
|
||
====== ===========================
|
||
action queryContractLogByKey
|
||
key long,必须,该日志对应的key
|
||
====== ===========================
|
||
|
||
.. _请求示例-21:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
http://127.0.0.1:18000/SCIDE/CMManager?action=queryContractLogByKey&key=203156239086062402
|
||
|
||
.. _返回结果-2:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"data": {
|
||
"action": "executeContract",
|
||
"pubKey": "04d1924329f72ced148f6f333fb985ccbaa31b1e3aacf10be5f43d4a4ff5ad88899a005e79e37fc06993e1d66ada8cf8b711cb36f59538bb7d3e39e70fa9360ddd",
|
||
"contractID": "-1382208250",
|
||
"contractName": "NanningDataSource",
|
||
"function": "analysisByIndustry",
|
||
"costTime": "6",
|
||
"totalGas": "0",
|
||
"executionGas": "0",
|
||
"extraGas": "0",
|
||
"signature": "4c2cef1756b2b591ab7eead19d67331e2294c7ba765c72298733c306ada0b6e84afbb6c7b9dba48b9843236ebe67aecb4af09fe58a51eef0e2e89b9f3e5cad02",
|
||
"arg": " {\"year\":2018,\"category\":\"工业\",\"indexType\":\"营业额\"}",
|
||
"date": 1597296314654
|
||
},
|
||
"action": "onQueryContractLogByKey"
|
||
}
|
||
|
||
合约日志-按时间段统计调用次数
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
.. _方法-20:
|
||
|
||
方法
|
||
''''
|
||
|
||
GET
|
||
|
||
.. _参数-22:
|
||
|
||
参数
|
||
''''
|
||
|
||
======== ========================================================
|
||
字段 值
|
||
======== ========================================================
|
||
action countContractLogGroupByCategory
|
||
start long,必须,起始时间
|
||
end 非必须,终止时间,默认为当前
|
||
interval long,非必须,统计间隔
|
||
category 非必须,合约名称以逗号连接,不传入时统计全部合约调用情况
|
||
======== ========================================================
|
||
|
||
.. _请求示例-22:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
http://127.0.0.1:18000/SCIDE/CMManager?action=countContractLogGroupByCategory&start=1596758400000&interval=86400000
|
||
|
||
.. _返回结果-3:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"start": 1596758400000,
|
||
"interval": 86400000,
|
||
"action": "onCountContractLogGroupByCategory",
|
||
"data": [
|
||
0,
|
||
0,
|
||
0,
|
||
0,
|
||
0,
|
||
0,
|
||
43,
|
||
14
|
||
]
|
||
}
|
||
|
||
账本日志-查询数量
|
||
^^^^^^^^^^^^^^^^^
|
||
|
||
查询通过本节点去账本上记录的日志数量
|
||
|
||
.. _方法-21:
|
||
|
||
方法
|
||
''''
|
||
|
||
GET
|
||
|
||
.. _参数-23:
|
||
|
||
参数
|
||
''''
|
||
|
||
============ ================
|
||
字段 值
|
||
============ ================
|
||
action queryHashSize
|
||
contractName 非必须,合约名称
|
||
============ ================
|
||
|
||
.. _请求示例-23:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
http://127.0.0.1:18000/SCIDE/CMManager?action=queryHashSize&contractName=NanningDataSource
|
||
|
||
.. _返回结果-4:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"count": "2",
|
||
"action": "onQueryHashSize"
|
||
}
|
||
|
||
账本日志-根据偏移量查询
|
||
^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
查询x条通过本节点去账本上记录的日志的哈希列表
|
||
|
||
.. _方法-22:
|
||
|
||
方法
|
||
''''
|
||
|
||
GET
|
||
|
||
.. _参数-24:
|
||
|
||
参数
|
||
''''
|
||
|
||
============ ===========================================================
|
||
字段 值
|
||
============ ===========================================================
|
||
action queryHashByOffset
|
||
count 整数,必须,表示条数
|
||
offset 整数,非必须,表示偏移量,不传入offset则默认返回最新count条
|
||
contractName 字符串,非必须,表示合约名称
|
||
============ ===========================================================
|
||
|
||
.. _请求示例-24:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
http://127.0.0.1:18000/SCIDE/CMManager?action=queryHashByOffset&count=1&contractName=NanningDataSource
|
||
|
||
.. _返回结果-5:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"data": [
|
||
{
|
||
"hash": "3a6c60621907146b77146c1f2d48700e47520173",
|
||
"date": 1597296314658
|
||
}
|
||
],
|
||
"action": "onQueryHash",
|
||
"status": "success"
|
||
}
|
||
|
||
账本日志-根据hash查询详情
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
根据hash来查询日志内容
|
||
|
||
.. _方法-23:
|
||
|
||
方法
|
||
''''
|
||
|
||
GET
|
||
|
||
.. _参数-25:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ===============================
|
||
字段 值
|
||
====== ===============================
|
||
action queryDataByHash
|
||
hash 字符串,可通过queryHashByOffset
|
||
====== ===============================
|
||
|
||
.. _请求示例-25:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
http://127.0.0.1:18000/SCIDE/CMManager?action=queryDataByHash&count=1&contractName=NanningDataSource&hash=3a6c60621907146b77146c1f2d48700e47520173
|
||
|
||
.. _返回结果-6:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"from": "0x3034643139323433323966373263656431343866",
|
||
"to": "0x65786563757465436f6e74726163740000000000",
|
||
"data": "1597296314655 --> {\"extraGas\":\"0\",\"totalGas\":\"0\",\"executionGas\":\"0\",\"signature\":\"4c2cef1756b2b591ab7eead19d67331e2294c7ba765c72298733c306ada0b6e84afbb6c7b9dba48b9843236ebe67aecb4af09fe58a51eef0e2e89b9f3e5cad02\",\"costTime\":\"6\",\"arg\":\" {\\\\\\\"year\\\\\\\":2018,\\\\\\\"category\\\\\\\":\\\\\\\"工业\\\\\\\",\\\\\\\"indexType\\\\\\\":\\\\\\\"营业额\\\\\\\"}\",\"contractID\":\"-1382208250\",\"action\":\"analysisByIndustry\",\"pubKey\":\"04d1924329f72ced148f6f333fb985ccbaa31b1e3aacf10be5f43d4a4ff5ad88899a005e79e37fc06993e1d66ada8cf8b711cb36f59538bb7d3e39e70fa9360ddd\"}",
|
||
"requestID": "1597296314629_6067",
|
||
"action": "onQueryDataByHash"
|
||
}
|
||
|
||
账本日志-根据requestID查询Hash
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
根据requestID来查询日志内容,需由开发者保证requestID的唯一性
|
||
|
||
.. _方法-24:
|
||
|
||
方法
|
||
''''
|
||
|
||
GET
|
||
|
||
.. _参数-26:
|
||
|
||
参数
|
||
''''
|
||
|
||
========= ========================
|
||
字段 值
|
||
========= ========================
|
||
action queryHashByRequestID
|
||
requestID 字符串,在发起调用时生成
|
||
========= ========================
|
||
|
||
.. _请求示例-26:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
http://127.0.0.1:1717/SCIDE/SCManager?action=queryHashByRequestID&requestID=0987654321ab
|
||
|
||
节点日志-查询数量
|
||
^^^^^^^^^^^^^^^^^
|
||
|
||
.. _方法-25:
|
||
|
||
方法
|
||
''''
|
||
|
||
GET
|
||
|
||
.. _参数-27:
|
||
|
||
参数
|
||
''''
|
||
|
||
======== ============================
|
||
字段 值
|
||
======== ============================
|
||
action queryNodeLogSize
|
||
category 非必须,不传入时查询全部情况
|
||
======== ============================
|
||
|
||
其中包括:ping、startContract、saveFile等。
|
||
|
||
.. _请求示例-27:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
http://127.0.0.1:18000/SCIDE/CMManager?action=queryNodeLogSize
|
||
|
||
http://127.0.0.1:18000/SCIDE/CMManager?action=queryNodeLogSize&category=login
|
||
|
||
.. _返回结果-7:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"size": 177,
|
||
"action": "onQueryNodeLogSize",
|
||
"status": "success"
|
||
}
|
||
|
||
节点日志-按日期查询
|
||
^^^^^^^^^^^^^^^^^^^
|
||
|
||
.. _方法-26:
|
||
|
||
方法
|
||
''''
|
||
|
||
GET
|
||
|
||
.. _参数-28:
|
||
|
||
参数
|
||
''''
|
||
|
||
======== ============================
|
||
字段 值
|
||
======== ============================
|
||
action queryNodeLogByDate
|
||
start long,必须,起始日期
|
||
end long,非必须
|
||
category 非必须,不传入时查询全部情况
|
||
======== ============================
|
||
|
||
.. _请求示例-28:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
http://127.0.0.1:18000/SCIDE/CMManager?action=queryNodeLogByDate&start=1597376006441
|
||
|
||
http://127.0.0.1:18000/SCIDE/CMManager?action=queryNodeLogByDate&start=1596758400000&category=login
|
||
|
||
.. _返回结果-8:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"data": [
|
||
{
|
||
"action": "listAllAuthRole",
|
||
"pubKey": "04d1924329f72ced148f6f333fb985ccbaa31b1e3aacf10be5f43d4a4ff5ad88899a005e79e37fc06993e1d66ada8cf8b711cb36f59538bb7d3e39e70fa9360ddd",
|
||
"status": "accept",
|
||
"date": 1597376006438,
|
||
"key": "387355870552374748"
|
||
},
|
||
{
|
||
"action": "listUnAuthRole",
|
||
"pubKey": "04d1924329f72ced148f6f333fb985ccbaa31b1e3aacf10be5f43d4a4ff5ad88899a005e79e37fc06993e1d66ada8cf8b711cb36f59538bb7d3e39e70fa9360ddd",
|
||
"status": "accept",
|
||
"date": 1597376006441,
|
||
"key": "4772693258708933626"
|
||
},
|
||
{
|
||
"action": "countRole",
|
||
"pubKey": "04d1924329f72ced148f6f333fb985ccbaa31b1e3aacf10be5f43d4a4ff5ad88899a005e79e37fc06993e1d66ada8cf8b711cb36f59538bb7d3e39e70fa9360ddd",
|
||
"status": "accept",
|
||
"date": 1597376006444,
|
||
"key": "-6425375229108830572"
|
||
},
|
||
{
|
||
"action": "loadNodeConfig",
|
||
"pubKey": "04d1924329f72ced148f6f333fb985ccbaa31b1e3aacf10be5f43d4a4ff5ad88899a005e79e37fc06993e1d66ada8cf8b711cb36f59538bb7d3e39e70fa9360ddd",
|
||
"status": "accept",
|
||
"date": 1597376006448,
|
||
"key": "-6602401010405792959"
|
||
},
|
||
{
|
||
"action": "getPeerID",
|
||
"pubKey": "04d1924329f72ced148f6f333fb985ccbaa31b1e3aacf10be5f43d4a4ff5ad88899a005e79e37fc06993e1d66ada8cf8b711cb36f59538bb7d3e39e70fa9360ddd",
|
||
"status": "accept",
|
||
"date": 1597376006449,
|
||
"key": "-7006776427870311552"
|
||
}
|
||
],
|
||
"action": "onQueryNodeLogByDate"
|
||
}
|
||
|
||
节点日志-按偏移量查询
|
||
^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
.. _方法-27:
|
||
|
||
方法
|
||
''''
|
||
|
||
GET
|
||
|
||
.. _参数-29:
|
||
|
||
参数
|
||
''''
|
||
|
||
============ =============================================
|
||
字段 值
|
||
============ =============================================
|
||
action queryNodeLogByOffset
|
||
count long,必须,获取日志条数
|
||
offset long,非必须,若无offset,默认返回最新count条
|
||
contractName 字符串,非必须,合约名称
|
||
============ =============================================
|
||
|
||
.. _请求示例-29:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
http://127.0.0.1:18000/SCIDE/CMManager?action=queryNodeLogByOffset&count=5
|
||
|
||
.. _返回结果-9:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"data": [
|
||
{
|
||
"action": "listAllAuthRole",
|
||
"pubKey": "04d1924329f72ced148f6f333fb985ccbaa31b1e3aacf10be5f43d4a4ff5ad88899a005e79e37fc06993e1d66ada8cf8b711cb36f59538bb7d3e39e70fa9360ddd",
|
||
"status": "accept",
|
||
"date": 1597376006438,
|
||
"key": "387355870552374748"
|
||
},
|
||
{
|
||
"action": "listUnAuthRole",
|
||
"pubKey": "04d1924329f72ced148f6f333fb985ccbaa31b1e3aacf10be5f43d4a4ff5ad88899a005e79e37fc06993e1d66ada8cf8b711cb36f59538bb7d3e39e70fa9360ddd",
|
||
"status": "accept",
|
||
"date": 1597376006441,
|
||
"key": "4772693258708933626"
|
||
},
|
||
{
|
||
"action": "countRole",
|
||
"pubKey": "04d1924329f72ced148f6f333fb985ccbaa31b1e3aacf10be5f43d4a4ff5ad88899a005e79e37fc06993e1d66ada8cf8b711cb36f59538bb7d3e39e70fa9360ddd",
|
||
"status": "accept",
|
||
"date": 1597376006444,
|
||
"key": "-6425375229108830572"
|
||
},
|
||
{
|
||
"action": "loadNodeConfig",
|
||
"pubKey": "04d1924329f72ced148f6f333fb985ccbaa31b1e3aacf10be5f43d4a4ff5ad88899a005e79e37fc06993e1d66ada8cf8b711cb36f59538bb7d3e39e70fa9360ddd",
|
||
"status": "accept",
|
||
"date": 1597376006448,
|
||
"key": "-6602401010405792959"
|
||
},
|
||
{
|
||
"action": "getPeerID",
|
||
"pubKey": "04d1924329f72ced148f6f333fb985ccbaa31b1e3aacf10be5f43d4a4ff5ad88899a005e79e37fc06993e1d66ada8cf8b711cb36f59538bb7d3e39e70fa9360ddd",
|
||
"status": "accept",
|
||
"date": 1597376006449,
|
||
"key": "-7006776427870311552"
|
||
}
|
||
],
|
||
"action": "onQueryNodeLogByOffset"
|
||
}
|
||
|
||
节点日志-按时间段统计调用次数
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
.. _方法-28:
|
||
|
||
方法
|
||
''''
|
||
|
||
GET
|
||
|
||
.. _参数-30:
|
||
|
||
参数
|
||
''''
|
||
|
||
======== ==================================================
|
||
字段 值
|
||
======== ==================================================
|
||
action countLogGroupByCategory
|
||
start long,必须,起始时间
|
||
end 非必须,终止时间,默认为当前
|
||
interval long,非必须,统计间隔
|
||
category 非必须,action以逗号连接,不传入时统计全部调用情况
|
||
======== ==================================================
|
||
|
||
其中,category中的action为NodePortal的接口的action集合。
|
||
包括:ping、startContract、saveFile等。
|
||
|
||
.. _请求示例-30:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
http://127.0.0.1:18000/SCIDE/CMManager?action=countNodeLogGroupByCategory&start=1596758400000&interval=86400000
|
||
|
||
http://127.0.0.1:18000/SCIDE/CMManager?action=countNodeLogGroupByCategory&start=1596758400000&interval=86400000&category=ping,startContract
|
||
|
||
.. _返回结果-10:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"start": 1596758400000,
|
||
"interval": 86400000,
|
||
"action": "onCountNodeLogGroupByCategory",
|
||
"data": [
|
||
0,
|
||
0,
|
||
0,
|
||
0,
|
||
0,
|
||
0,
|
||
912,
|
||
761
|
||
]
|
||
}
|
||
|
||
输出历史记录日志
|
||
^^^^^^^^^^^^^^^^
|
||
|
||
向服务器发送请求, 获取节点服务器上合约的TimeTravel日志.
|
||
|
||
.. _方法-29:
|
||
|
||
方法
|
||
''''
|
||
|
||
GET
|
||
|
||
.. _参数-31:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ==================
|
||
字段 值
|
||
====== ==================
|
||
action printTimeTravelLog
|
||
====== ==================
|
||
|
||
.. _请求示例-31:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
http://127.0.0.1:1717/SCIDE/SCManager?action=printTimeTravelLog
|
||
|
||
.. _返回结果示例-18:
|
||
|
||
返回结果示例
|
||
''''''''''''
|
||
|
||
.. code:: json
|
||
|
||
{"status":false,"data":"[CMActions] memory dir \u003d /Users/oliveds/docs/SmartContract/contractExamples/memoryDumps/aa\n[CMActions] memory dir \u003d /Users/oliveds/docs/SmartContract/contractExamples/memoryDumps/aa_1572335939893.dyjs\n[CMActions] memory dir \u003d /Users/oliveds/docs/SmartContract/contractExamples/memoryDumps/memoryDumps\n[CMActions] memory dir \u003d /Users/oliveds/docs/SmartContract/contractExamples/memoryDumps\n[CMActions] memory dir \u003d /Users/oliveds/docs/SmartContract/contractExamples/memoryDumps\n[CMActions] memory dir \u003d /Users/oliveds/docs/SmartContract/contractExamples/memoryDumps/.\n[CMActions] memory dir \u003d /Users/oliveds/docs/SmartContract/contractExamples/memoryDumps/.\n"}
|
||
|
||
输出节点转移日志
|
||
^^^^^^^^^^^^^^^^
|
||
|
||
向服务器发送请求, 获取节点服务器的状态转移日志.
|
||
|
||
.. _方法-30:
|
||
|
||
方法
|
||
''''
|
||
|
||
GET
|
||
|
||
.. _参数-32:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ================
|
||
字段 值
|
||
====== ================
|
||
action printTransferLog
|
||
====== ================
|
||
|
||
.. _请求示例-32:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
http://127.0.0.1:1717/SCIDE/SCManager?action=printTransferLog
|
||
|
||
.. _返回结果示例-19:
|
||
|
||
返回结果示例
|
||
''''''''''''
|
||
|
||
.. code:: json
|
||
|
||
{"status":false,"data":""}
|
||
|
||
模板生成类
|
||
~~~~~~~~~~
|
||
|
||
账本Http接口
|
||
------------
|
||
|
||
.. code:: yaml
|
||
|
||
type: google.api.Service
|
||
config_version: 3
|
||
|
||
http:
|
||
rules:
|
||
- selector: bdware.bdledger.api.Node.ClientVersion
|
||
get: /v0/node/version
|
||
- selector: bdware.bdledger.api.Ledger.CreateLedger
|
||
post: /v0/ledgers
|
||
body: "*"
|
||
- selector: bdware.bdledger.api.Ledger.GetLedgers
|
||
get: /v0/ledgers
|
||
- selector: bdware.bdledger.api.Ledger.SendTransaction
|
||
post: /v0/ledgers/{ledger}/transactions
|
||
body: "*"
|
||
- selector: bdware.bdledger.api.Query.GetBlockByHash
|
||
get: /v0/ledgers/{ledger}/block
|
||
- selector: bdware.bdledger.api.Query.GetBlocks
|
||
post: /v0/ledgers/{ledger}/blocks/query
|
||
body: "*"
|
||
- selector: bdware.bdledger.api.Query.CountBlocks
|
||
post: /v0/ledgers/{ledger}/blocks/count
|
||
body: "*"
|
||
- selector: bdware.bdledger.api.Query.GetRecentBlocks
|
||
get: /v0/ledgers/{ledger}/blocks/recent
|
||
- selector: bdware.bdledger.api.Query.GetTransactionByHash
|
||
get: /v0/ledgers/{ledger}/transaction
|
||
- selector: bdware.bdledger.api.Query.GetTransactionByBlockHashAndIndex
|
||
get: /v0/ledgers/{ledger}/block/transaction
|
||
- selector: bdware.bdledger.api.Query.GetTransactions
|
||
post: /v0/ledgers/{ledger}/transactions/query
|
||
body: "*"
|
||
- selector: bdware.bdledger.api.Query.CountTransactions
|
||
post: /v0/ledgers/{ledger}/transactions/count
|
||
body: "*"
|
||
|
||
..
|
||
|
||
**Note**
|
||
|
||
Request/Response data of **bytes** type should/will be encoded with
|
||
`Base64 <https://tools.ietf.org/html/rfc4648#section-4>`__.
|
||
|
||
**Note**
|
||
|
||
When using hash strings in URL, they need to be encoded with
|
||
`encodeURIComponent <https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent>`__.
|
||
|
||
账本信息类
|
||
~~~~~~~~~~
|
||
|
||
Node.ClientVersion {#_node_clientversion}
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
Get BDLedger node version
|
||
|
||
::
|
||
|
||
GET http://{{IP}}:{{PORT}}/v0/node/version
|
||
|
||
返回示例
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"version": "dev-210119.a88bf4eb"
|
||
}
|
||
|
||
Ledger.CreateLedger {#_ledger_createledger}
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
Create a new ledger
|
||
|
||
::
|
||
|
||
POST http://{{IP}}:{{PORT}}/v0/ledgers
|
||
|
||
.. _请求示例-33:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"name": "test"
|
||
}
|
||
|
||
.. _返回示例-1:
|
||
|
||
返回示例
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"ok": true
|
||
}
|
||
|
||
Ledger.GetLedgers {#_ledger_getledgers}
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
Get all ledgers
|
||
|
||
::
|
||
|
||
GET http://{{IP}}:{{PORT}}/v0/ledgers
|
||
|
||
.. _返回示例-2:
|
||
|
||
返回示例
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"ledgers": [
|
||
"default",
|
||
"test"
|
||
]
|
||
}
|
||
|
||
Ledger.SendTransaction {#_ledger_sendtransaction}
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
Send a new transaction
|
||
|
||
::
|
||
|
||
POST http://{{IP}}:{{PORT}}/v0/ledgers/test/transactions
|
||
|
||
.. _请求示例-34:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"transaction": {
|
||
"type": 0,
|
||
"from": "8A3K/vANyv7wDcr+8A3K/vANyv4=",
|
||
"nonce": 52,
|
||
"data": "lQItWZKS5hlUn6V/DMKKwvZXxvM="
|
||
}
|
||
}
|
||
|
||
.. _返回示例-3:
|
||
|
||
返回示例
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"hash": "VQBeA5Ee0Y5hqEileoQuYMHbOSE="
|
||
}
|
||
|
||
查询类
|
||
~~~~~~
|
||
|
||
Query.GetBlockByHash {#_query_getblockbyhash}
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
Get a block identified by its hash
|
||
|
||
::
|
||
|
||
GET http://{{IP}}:{{PORT}}/v0/ledgers/test/block?hash=LSKr%2BK079Ax%2BrKdlyYN5ze2YGzo%3D
|
||
|
||
**hash** has to be encoded with
|
||
`encodeURIComponent <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent>`__
|
||
|
||
.. _返回示例-4:
|
||
|
||
返回示例
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"block": {
|
||
"hash": "LSKr+K079Ax+rKdlyYN5ze2YGzo=",
|
||
"creator": "",
|
||
"nonce": "0",
|
||
"parentHashes": [
|
||
"fLX5pMY8M1qSAGZdKT1rWBkdEMo=",
|
||
"rk0DWMaUpRG82yVX+cFhbfhPFdw=",
|
||
"3XkwkuMBearq8uavN76Te7Zdpl8="
|
||
],
|
||
"witnesses": [],
|
||
"timestamp": "1611038043",
|
||
"size": "0",
|
||
"transactionCount": 1,
|
||
"transactionsRoot": "VQBeA5Ee0Y5hqEileoQuYMHbOSE=",
|
||
"transactions": [
|
||
{
|
||
"blockHash": "",
|
||
"blockTimestamp": "0",
|
||
"index": 0,
|
||
"hash": "VQBeA5Ee0Y5hqEileoQuYMHbOSE=",
|
||
"type": "RECORD",
|
||
"from": "8A3K/vANyv7wDcr+8A3K/vANyv4=",
|
||
"nonce": "0",
|
||
"to": "AAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
||
"data": "lQItWZKS5hlUn6V/DMKKwvZXxvM="
|
||
}
|
||
],
|
||
"transactionHashes": [
|
||
"VQBeA5Ee0Y5hqEileoQuYMHbOSE="
|
||
]
|
||
}
|
||
}
|
||
|
||
Query.GetBlocks {#_query_getblocks}
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
Get blocks in a timestamp range
|
||
|
||
::
|
||
|
||
POST http://{{IP}}:{{PORT}}/v0/ledgers/test/blocks/query
|
||
|
||
.. code:: protobuf
|
||
|
||
enum IncludeTransactions {
|
||
NONE = 0; // Don't include transaction data
|
||
HASH = 1; // Include transactions hashes
|
||
FULL = 2; // Include full transactions
|
||
}
|
||
|
||
Requirement: asciimath:["start_timestamp"⇐"end_timestamp"]
|
||
|
||
If only **end_timestamp** is not specified, or
|
||
asciimath:["end_timestamp"-"start_timestamp">"query.maxDuration"], then
|
||
**end_timestamp** will be set to
|
||
asciimath:["start_timestamp"+"query.maxDuration"].
|
||
|
||
If only **start_timestamp** is not specified, then **start_timestamp**
|
||
will be set to asciimath:["end_timestamp"-"query.maxDuration"].
|
||
|
||
In all cases, **start_timestamp** will never be earlier than the genesis
|
||
block’s timestamp, and **end_timestamp** will never be later than the
|
||
current timestamp when the node process the query request.
|
||
|
||
.. _请求示例-35:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"start_timestamp": 1611038000,
|
||
"end_timestamp": 1611039000,
|
||
"include_transactions": 0
|
||
}
|
||
|
||
.. _返回示例-5:
|
||
|
||
返回示例
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"blocks": [
|
||
{
|
||
"hash": "LSKr+K079Ax+rKdlyYN5ze2YGzo=",
|
||
"creator": "",
|
||
"nonce": "0",
|
||
"parentHashes": [
|
||
"fLX5pMY8M1qSAGZdKT1rWBkdEMo=",
|
||
"rk0DWMaUpRG82yVX+cFhbfhPFdw=",
|
||
"3XkwkuMBearq8uavN76Te7Zdpl8="
|
||
],
|
||
"witnesses": [],
|
||
"timestamp": "1611038043",
|
||
"size": "0",
|
||
"transactionCount": 1,
|
||
"transactionsRoot": "VQBeA5Ee0Y5hqEileoQuYMHbOSE=",
|
||
"transactions": [],
|
||
"transactionHashes": []
|
||
}
|
||
],
|
||
"startTimestamp": "1611038043",
|
||
"endTimestamp": "1611038043"
|
||
}
|
||
|
||
请求示例2
|
||
'''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"start_timestamp": 1611038000,
|
||
"end_timestamp": 1611039000,
|
||
"include_transactions": 1
|
||
}
|
||
|
||
返回示例2
|
||
'''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"blocks": [
|
||
{
|
||
"hash": "LSKr+K079Ax+rKdlyYN5ze2YGzo=",
|
||
"creator": "",
|
||
"nonce": "0",
|
||
"parentHashes": [
|
||
"fLX5pMY8M1qSAGZdKT1rWBkdEMo=",
|
||
"rk0DWMaUpRG82yVX+cFhbfhPFdw=",
|
||
"3XkwkuMBearq8uavN76Te7Zdpl8="
|
||
],
|
||
"witnesses": [],
|
||
"timestamp": "1611038043",
|
||
"size": "0",
|
||
"transactionCount": 1,
|
||
"transactionsRoot": "VQBeA5Ee0Y5hqEileoQuYMHbOSE=",
|
||
"transactions": [],
|
||
"transactionHashes": [
|
||
"VQBeA5Ee0Y5hqEileoQuYMHbOSE="
|
||
]
|
||
}
|
||
],
|
||
"startTimestamp": "1611038043",
|
||
"endTimestamp": "1611038043"
|
||
}
|
||
|
||
**Request body 3.**
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"start_timestamp": 1611038000,
|
||
"end_timestamp": 1611039000,
|
||
"include_transactions": 2
|
||
}
|
||
|
||
**Response 3.**
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"blocks": [
|
||
{
|
||
"hash": "LSKr+K079Ax+rKdlyYN5ze2YGzo=",
|
||
"creator": "",
|
||
"nonce": "0",
|
||
"parentHashes": [
|
||
"fLX5pMY8M1qSAGZdKT1rWBkdEMo=",
|
||
"rk0DWMaUpRG82yVX+cFhbfhPFdw=",
|
||
"3XkwkuMBearq8uavN76Te7Zdpl8="
|
||
],
|
||
"witnesses": [],
|
||
"timestamp": "1611038043",
|
||
"size": "0",
|
||
"transactionCount": 1,
|
||
"transactionsRoot": "VQBeA5Ee0Y5hqEileoQuYMHbOSE=",
|
||
"transactions": [
|
||
{
|
||
"blockHash": "",
|
||
"blockTimestamp": "0",
|
||
"index": 0,
|
||
"hash": "VQBeA5Ee0Y5hqEileoQuYMHbOSE=",
|
||
"type": "RECORD",
|
||
"from": "8A3K/vANyv7wDcr+8A3K/vANyv4=",
|
||
"nonce": "0",
|
||
"to": "AAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
||
"data": "lQItWZKS5hlUn6V/DMKKwvZXxvM="
|
||
}
|
||
],
|
||
"transactionHashes": [
|
||
"VQBeA5Ee0Y5hqEileoQuYMHbOSE="
|
||
]
|
||
}
|
||
],
|
||
"startTimestamp": "1611038043",
|
||
"endTimestamp": "1611038043"
|
||
}
|
||
|
||
Query.CountBlocks {#_query_countblocks}
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
Count all blocks in a ledger, or blocks in a timestamp range
|
||
|
||
::
|
||
|
||
POST http://{{IP}}:{{PORT}}/v0/ledgers/test/blocks/count
|
||
|
||
Requirement: asciimath:["start_timestamp"⇐"end_timestamp"]
|
||
|
||
If neither **start_timestamp** nor **end_timestamp** is specified, then
|
||
count all blocks in the specified ledger.
|
||
|
||
If only **end_timestamp** is not specified, then count all blocks with
|
||
timestamps later than **start_timestamp**.
|
||
|
||
If only **start_timestamp** is not specified, then count all blocks with
|
||
timestamps earlier than **end_timestamp**.
|
||
|
||
In all cases, **start_timestamp** will never be earlier than the genesis
|
||
block’s timestamp, and **end_timestamp** will never be later than the
|
||
current timestamp when the node process the query request.
|
||
|
||
.. _请求示例-36:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{}
|
||
|
||
.. _返回示例-6:
|
||
|
||
返回示例
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"count": "5",
|
||
"startTimestamp": "0",
|
||
"endTimestamp": "1611039957"
|
||
}
|
||
|
||
.. _请求示例2-1:
|
||
|
||
请求示例2
|
||
'''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"start_timestamp": 1611038000,
|
||
"end_timestamp": 1611039000
|
||
}
|
||
|
||
.. _返回示例2-1:
|
||
|
||
返回示例2
|
||
'''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"count": "1",
|
||
"startTimestamp": "1611038000",
|
||
"endTimestamp": "1611039000"
|
||
}
|
||
|
||
Query.GetRecentBlocks {#_query_getrecentblocks}
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
Get recent **count** blocks (Only support IncludeTransactions=NONE for
|
||
now)
|
||
|
||
::
|
||
|
||
GET http://{{IP}}:{{PORT}}/v0/ledgers/test/blocks/recent?count=2
|
||
|
||
.. _返回示例-7:
|
||
|
||
返回示例
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"blocks": [
|
||
{
|
||
"hash": "LSKr+K079Ax+rKdlyYN5ze2YGzo=",
|
||
"creator": "",
|
||
"nonce": "0",
|
||
"parentHashes": [
|
||
"fLX5pMY8M1qSAGZdKT1rWBkdEMo=",
|
||
"rk0DWMaUpRG82yVX+cFhbfhPFdw=",
|
||
"3XkwkuMBearq8uavN76Te7Zdpl8="
|
||
],
|
||
"witnesses": [],
|
||
"timestamp": "1611038043",
|
||
"size": "0",
|
||
"transactionCount": 1,
|
||
"transactionsRoot": "VQBeA5Ee0Y5hqEileoQuYMHbOSE=",
|
||
"transactions": [],
|
||
"transactionHashes": []
|
||
},
|
||
{
|
||
"hash": "rk0DWMaUpRG82yVX+cFhbfhPFdw=",
|
||
"creator": "",
|
||
"nonce": "0",
|
||
"parentHashes": [
|
||
"fLX5pMY8M1qSAGZdKT1rWBkdEMo=",
|
||
"3XkwkuMBearq8uavN76Te7Zdpl8=",
|
||
"8pZPR74OALIbps5XFb4dL/s0j0M="
|
||
],
|
||
"witnesses": [],
|
||
"timestamp": "1610968019",
|
||
"size": "0",
|
||
"transactionCount": 1,
|
||
"transactionsRoot": "LuxttCm/pSHVMOKF0sJExk+DJXc=",
|
||
"transactions": [],
|
||
"transactionHashes": []
|
||
}
|
||
],
|
||
"startTimestamp": "1610968019",
|
||
"endTimestamp": "1611038043"
|
||
}
|
||
|
||
Query.GetTransactionByHash {#_query_gettransactionbyhash}
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
Get a transaction identified by its hash
|
||
|
||
::
|
||
|
||
GET http://{{IP}}:{{PORT}}/v0/ledgers/test/transaction?hash=VQBeA5Ee0Y5hqEileoQuYMHbOSE%3D
|
||
|
||
**hash** has to be encoded with
|
||
`encodeURIComponent <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent>`__
|
||
|
||
.. _返回示例-8:
|
||
|
||
返回示例
|
||
^^^^^^^^
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"transaction": {
|
||
"blockHash": "LSKr+K079Ax+rKdlyYN5ze2YGzo=",
|
||
"blockTimestamp": "1611038043",
|
||
"index": 0,
|
||
"hash": "VQBeA5Ee0Y5hqEileoQuYMHbOSE=",
|
||
"type": "RECORD",
|
||
"from": "8A3K/vANyv7wDcr+8A3K/vANyv4=",
|
||
"nonce": "0",
|
||
"to": "AAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
||
"data": "lQItWZKS5hlUn6V/DMKKwvZXxvM="
|
||
}
|
||
}
|
||
|
||
Query.GetTransactionByBlockHashAndIndex {#_query_gettransactionbyblockhashandindex}
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
Get a transaction identified by hash of the block it belongs to and its
|
||
index inside the block
|
||
|
||
::
|
||
|
||
GET http://{{IP}}:{{PORT}}/v0/ledgers/test/block/transaction?blockHash=LSKr%2BK079Ax%2BrKdlyYN5ze2YGzo%3D&index=0
|
||
|
||
**blockHash** has to be encoded with
|
||
`encodeURIComponent <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent>`__
|
||
|
||
.. _返回示例-9:
|
||
|
||
返回示例
|
||
^^^^^^^^
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"transaction": {
|
||
"blockHash": "LSKr+K079Ax+rKdlyYN5ze2YGzo=",
|
||
"blockTimestamp": "1611038043",
|
||
"index": 0,
|
||
"hash": "VQBeA5Ee0Y5hqEileoQuYMHbOSE=",
|
||
"type": "RECORD",
|
||
"from": "8A3K/vANyv7wDcr+8A3K/vANyv4=",
|
||
"nonce": "0",
|
||
"to": "AAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
||
"data": "lQItWZKS5hlUn6V/DMKKwvZXxvM="
|
||
}
|
||
}
|
||
|
||
Query.GetTransactions {#_query_gettransactions}
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
Get transactions in a timestamp range
|
||
|
||
::
|
||
|
||
POST http://{{IP}}:{{PORT}}/v0/ledgers/test/transactions/query
|
||
|
||
**start_timestamp** and **end_timestamp** follow the same requirements
|
||
and rules as in `??? <#Query.GetBlocks>`__.
|
||
|
||
.. _请求示例-37:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"start_timestamp": 1611038000,
|
||
"end_timestamp": 1611039000
|
||
}
|
||
|
||
.. _返回示例-10:
|
||
|
||
返回示例
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"transactions": [
|
||
{
|
||
"blockHash": "",
|
||
"blockTimestamp": "0",
|
||
"index": 0,
|
||
"hash": "VQBeA5Ee0Y5hqEileoQuYMHbOSE=",
|
||
"type": "RECORD",
|
||
"from": "8A3K/vANyv7wDcr+8A3K/vANyv4=",
|
||
"nonce": "0",
|
||
"to": "AAAAAAAAAAAAAAAAAAAAAAAAAAA=",
|
||
"data": "lQItWZKS5hlUn6V/DMKKwvZXxvM="
|
||
}
|
||
],
|
||
"startTimestamp": "1611038043",
|
||
"endTimestamp": "1611038043"
|
||
}
|
||
|
||
Query.CountTransactions {#_query_counttransactions}
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
Count all transactions in a ledger, or transactions in a timestamp range
|
||
|
||
::
|
||
|
||
POST http://{{IP}}:{{PORT}}/v0/ledgers/test/transactions/count
|
||
|
||
**start_timestamp** and **end_timestamp** follow the same requirements
|
||
and rules as in `??? <#Query.CountBlocks>`__.
|
||
|
||
.. _请求示例-38:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{}
|
||
|
||
.. _返回示例-11:
|
||
|
||
返回示例
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"count": "4",
|
||
"startTimestamp": "0",
|
||
"endTimestamp": "1611039957"
|
||
}
|
||
|
||
.. _请求示例2-2:
|
||
|
||
请求示例2
|
||
'''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"start_timestamp": 1611038000,
|
||
"end_timestamp": 1611039000
|
||
}
|
||
|
||
.. _返回示例2-2:
|
||
|
||
返回示例2
|
||
'''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"count": "1",
|
||
"startTimestamp": "1611038000",
|
||
"endTimestamp": "1611039000"
|
||
}
|
||
|
||
--------------
|
||
|
||
合约节点WebSocket接口
|
||
---------------------
|
||
|
||
.. _用户管理类-1:
|
||
|
||
用户管理类
|
||
~~~~~~~~~~
|
||
|
||
获取Session
|
||
^^^^^^^^^^^
|
||
|
||
登录前获取session以便进行签名。
|
||
|
||
.. _参数-33:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ============
|
||
字段 值
|
||
====== ============
|
||
action getSessionID
|
||
====== ============
|
||
|
||
.. _请求示例-39:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
var req = {};
|
||
req.action = "getSessionID";
|
||
wssocket.send(JSON.stringify(req));
|
||
|
||
.. _返回结果-11:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"action": "onSessionID",
|
||
"session": "9782323_session"
|
||
}
|
||
|
||
用户登录
|
||
^^^^^^^^
|
||
|
||
用户进行公私钥身份验证
|
||
|
||
.. _参数-34:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== =====
|
||
字段 值
|
||
====== =====
|
||
action login
|
||
====== =====
|
||
|
||
.. _请求示例-40:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
var loginParam = {};
|
||
loginParam.pubKey = global.sm2Key.publicKey;
|
||
loginParam.signature = sm2.doSignature(global.session,
|
||
global.sm2Key.privateKey);
|
||
loginParam.action = "login";
|
||
wssocket.send(JSON.stringify(loginParam));
|
||
|
||
.. _返回结果-12:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"action": "onLogin",
|
||
"data": "NodeManager,ContractProvider"
|
||
}
|
||
|
||
申请角色
|
||
^^^^^^^^
|
||
|
||
在节点管理员界面申请可以申请称为合约管理员(ContractInstanceManager)、合约使用者(ContractUser)、合约提供者(ContractProvider)
|
||
|
||
.. _参数-35:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== =============
|
||
字段 值
|
||
====== =============
|
||
action applyNodeRole
|
||
role 申请角色名称
|
||
====== =============
|
||
|
||
.. _请求示例-41:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
var param = {};
|
||
param.action = "applyNodeRole";
|
||
param.role = "ContractUser";
|
||
wssocket.send(JSON.stringify(param));
|
||
|
||
.. _返回结果-13:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"action": "onApplyRole",
|
||
"data": "success"
|
||
}
|
||
|
||
{
|
||
"action":"onApplyRole",
|
||
"data":"already has!"
|
||
}
|
||
|
||
授权角色
|
||
^^^^^^^^
|
||
|
||
.. _参数-36:
|
||
|
||
参数
|
||
''''
|
||
|
||
======== ====================
|
||
字段 值
|
||
======== ====================
|
||
action authNodeRole
|
||
isAccept bool类型,表示否授权
|
||
pubKey 授权用户公钥
|
||
======== ====================
|
||
|
||
.. _请求示例-42:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
var param = {};
|
||
param.action = "authNodeRole";
|
||
param.isAccept = true;
|
||
param.pubKey = "xxxxx";
|
||
wssocket.send(JSON.stringify(param));
|
||
|
||
.. _返回结果-14:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"action": "onAuthNodeRole",
|
||
"data": "success"
|
||
}
|
||
|
||
删除用户角色
|
||
^^^^^^^^^^^^
|
||
|
||
.. _参数-37:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ============
|
||
字段 值
|
||
====== ============
|
||
action deleteRole
|
||
role 删除角色名称
|
||
====== ============
|
||
|
||
.. _请求示例-43:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
var deleteInfo = {};
|
||
deleteInfo.pubKey = global.authorizedUsers.[publicKey];
|
||
deleteInfo.action = "deleteRole";
|
||
deleteInfo.role="ContractUser";
|
||
wssocket.send(JSON.stringify(deleteInfo));
|
||
|
||
.. _返回结果-15:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"action": "onDeleteRole",
|
||
"data": "success"
|
||
}
|
||
|
||
查看授权用户列表
|
||
^^^^^^^^^^^^^^^^
|
||
|
||
查看准入管理员当前组网中已经授权的节点管理员
|
||
|
||
.. _参数-38:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ===============
|
||
字段 值
|
||
====== ===============
|
||
action listAllAuthRole
|
||
====== ===============
|
||
|
||
.. _请求示例-44:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
var param = {};
|
||
param.action = "listAllAuthRole";
|
||
wssocket.send(JSON.stringify(param));
|
||
|
||
.. _返回结果-16:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"status":false,
|
||
"action":"onListAllAuthRole",
|
||
"data":
|
||
{
|
||
"kv":[{"key":"04eafad549d0757cf67f360815e15e157c7428c9ea9fb933f31a5d45bfb6edd9809c5bf6a5f37d7b817207f19fb2d76b7dbdefe38084cd3282e37b9ac39959dfab",
|
||
"value":"NodeManager,ContractProvider,ContractUser,ContractInstanceManager"}],
|
||
"time":[{"key":"04eafad549d0757cf67f360815e15e157c7428c9ea9fb933f31a5d45bfb6edd9809c5bf6a5f37d7b817207f19fb2d76b7dbdefe38084cd3282e37b9ac39959dfab",
|
||
"value":"1617178709933"}]
|
||
}
|
||
}
|
||
|
||
查看申请用户列表
|
||
^^^^^^^^^^^^^^^^
|
||
|
||
.. _参数-39:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ==============
|
||
字段 值
|
||
====== ==============
|
||
action listUnAuthRole
|
||
====== ==============
|
||
|
||
.. _请求示例-45:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
var param = {};
|
||
param.action = "listUnAuthRole";
|
||
wssocket.send(JSON.stringify(param));
|
||
|
||
.. _返回结果-17:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"action": "onListUnAuthRole",
|
||
"kv": [{
|
||
"key": "049999ebd14ff3b96ebf7f7325e1da94a1c4c376573a1dc1cec2b4f7a3b09ed7b07252134e93b6ac2e1853268b82f4b541d34fb42b0182cd61043e99d3489e2cf7",
|
||
"value": "ContractProvider,ContractUser"
|
||
}],
|
||
"time": [{
|
||
"key": "049999ebd14ff3b96ebf7f7325e1da94a1c4c376573a1dc1cec2b4f7a3b09ed7b07252134e93b6ac2e1853268b82f4b541d34fb42b0182cd61043e99d3489e2cf7",
|
||
"value": "1587398989914"
|
||
}]
|
||
}
|
||
|
||
参数(删除)
|
||
''''''''''
|
||
|
||
====== =============
|
||
字段 值
|
||
====== =============
|
||
action queryUserStat
|
||
====== =============
|
||
|
||
.. _请求示例-46:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
var param = {};
|
||
param.action = "queryUserStat";
|
||
wssocket.send(JSON.stringify(param));
|
||
|
||
.. _返回结果-18:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"action": "onQueryUserStat",
|
||
"userListCount": 3,
|
||
"applyListCount":0
|
||
}
|
||
|
||
.. _合约代码管理类-1:
|
||
|
||
合约代码管理类
|
||
~~~~~~~~~~~~~~
|
||
|
||
获取公共合约文件列表
|
||
^^^^^^^^^^^^^^^^^^^^
|
||
|
||
.. _参数-40:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ============
|
||
字段 值
|
||
====== ============
|
||
action listProjects
|
||
====== ============
|
||
|
||
.. _请求示例-47:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
var request = {};
|
||
request.action = "listProjects";
|
||
wssocket.send(JSON.stringify(request));
|
||
|
||
.. _返回结果-19:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"action":"onListProjects",
|
||
"data":"[\"AnnotationSample\",\"AppDataAnalysis\",\"AppDataSource\",\"BiddingExample\",\"ContractExecutor\"]",
|
||
"executeTime":0,
|
||
"isPrivate":false
|
||
}
|
||
|
||
获取私有合约文件列表
|
||
^^^^^^^^^^^^^^^^^^^^
|
||
|
||
.. _参数-41:
|
||
|
||
参数
|
||
''''
|
||
|
||
========= ============
|
||
字段 值
|
||
========= ============
|
||
action listProjects
|
||
pubKey 该用户的公钥
|
||
isPrivate true
|
||
========= ============
|
||
|
||
.. _请求示例-48:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
.. code:: javascript
|
||
|
||
var request = {};
|
||
request.action = "listProjects";
|
||
request.pubKey = "global.sm2.publicKey";
|
||
request.isPrivate=true;
|
||
wssocket.send(JSON.stringify(request));
|
||
|
||
.. _返回结果-20:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"action":"onListProjects",
|
||
"data":"[\"CSVFromTemplate\",\"Empty22\",\"MySQLFromTemplate\",\"test\"]",
|
||
"executeTime":0,
|
||
"isPrivate":true
|
||
}
|
||
|
||
获取合约实例
|
||
^^^^^^^^^^^^
|
||
|
||
.. _参数-42:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ===================
|
||
字段 值
|
||
====== ===================
|
||
action listContractProcess
|
||
====== ===================
|
||
|
||
.. _请求示例-49:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
var request = {};
|
||
request.action = "listContractProcess";
|
||
wssocket.send(JSON.stringify(request));
|
||
|
||
.. _返回结果-21:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"status":false,
|
||
"action":"onListContractProcess",
|
||
"data":"[{\"id\": \"1658407837\",\"name\": \"BDCoin\",\"port\": \"1617\"}]"
|
||
}
|
||
|
||
.. _启动合约-1:
|
||
|
||
启动合约
|
||
^^^^^^^^
|
||
|
||
.. _参数-43:
|
||
|
||
参数
|
||
''''
|
||
|
||
========= =============
|
||
字段 值
|
||
========= =============
|
||
action startContract
|
||
owner pubkey
|
||
requestID 当前时间
|
||
script 脚本内容
|
||
signature 签名
|
||
========= =============
|
||
|
||
.. _请求示例-50:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
request.action = "startContract";
|
||
request.owner = global.sm2Key.publicKey;
|
||
request.requestID = new Date().getTime() + "";
|
||
request.script = global.projectScript;
|
||
request.signature = sm2.doSignature("Algorithm|" + request.script + "|" + global.sm2Key.publicKey, global.sm2Key.privateKey);
|
||
wssocket.send(JSON.stringify(request));
|
||
|
||
.. _返回结果-22:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"data":"{\"needSeq\":false,\"seq\":0,\"status\":\"Success\",\"result\":\"\",\"isInsnLimit\":false,\"totalGas\":0,\"executionGas\":0,\"extraGas\":0,\"size\":0,\"eventRelated\":false}",
|
||
"action":"onStartContract",
|
||
"cid":"-506393888",
|
||
"executeTime":2496,
|
||
"responseID":"1617206735696"
|
||
}
|
||
|
||
启动可信集群合约
|
||
^^^^^^^^^^^^^^^^
|
||
|
||
.. _参数-44:
|
||
|
||
参数
|
||
''''
|
||
|
||
========= ====================================
|
||
字段 值
|
||
========= ====================================
|
||
action startContractP2PTrustfully
|
||
owner pubkey
|
||
isPrivate 当前时间
|
||
path 脚本所在路径
|
||
signature 签名
|
||
peersID 可信执行集群中的节点peerID组成的数组
|
||
\
|
||
========= ====================================
|
||
|
||
.. _请求示例-51:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
.. code:: javascript
|
||
|
||
var request = {};
|
||
request.action = "startContractP2PTrustfully";
|
||
request.peersID = ["3r729hf2ehf982","sjdfiwoehfwoi34","wnfnwoeifnwenef"];
|
||
var project = "JsonTest";
|
||
request.path = "/" + project + "/mainfest.json";
|
||
request.isPrivate = false;
|
||
request.signature = sm2.doSignature("Trusted|" + request.path + "|"
|
||
+ global.sm2Key.publicKey, global.sm2Key.privateKey); //合约的签名
|
||
request.resultcheck = $("#resultcheck")[0].value;
|
||
wssocket.send(JSON.stringify(request));
|
||
|
||
.. _返回结果-23:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"data":"{\"status\":\"Success\",\"result\":\"\"}",
|
||
"action":"onStartContractP2PTrustfully",
|
||
"cid":"-1543583350",
|
||
"executeTime":1544
|
||
}
|
||
|
||
分发合约项目
|
||
^^^^^^^^^^^^
|
||
|
||
.. _参数-45:
|
||
|
||
参数
|
||
''''
|
||
|
||
============= ==================
|
||
字段 值
|
||
============= ==================
|
||
action distributeContract
|
||
peersID 集群中节点peer
|
||
projectName 合约名
|
||
isPrivate 是否在私有目录
|
||
sponsorPeerID 发起者ID
|
||
signature 签名
|
||
============= ==================
|
||
|
||
.. _请求示例-52:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
.. code:: javascript
|
||
|
||
request.action = "distributeContract";
|
||
request.peersID = peersID;
|
||
request.projectName = global.projects[global.lastClickedProjectId];
|
||
request.isPrivate = $("#privateDir-tab").hasClass("active");
|
||
request.sponsorPeerID = global.peerID;
|
||
request.signature = sm2.doSignature("DistributeContract|" + request.projectName + "|" + global.sm2Key.publicKey, global.sm2Key.privateKey);
|
||
wssocket.send(JSON.stringify(request));
|
||
|
||
.. _返回结果-24:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"action":"onDistributeContract",
|
||
"progress":"100.00%"
|
||
}
|
||
|
||
终止合约
|
||
^^^^^^^^
|
||
|
||
.. _参数-46:
|
||
|
||
参数
|
||
''''
|
||
|
||
========= ===================
|
||
字段 值
|
||
========= ===================
|
||
action killContractProcess
|
||
id 合约id
|
||
requestID 请求ID
|
||
========= ===================
|
||
|
||
.. _请求示例-53:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
request.action = "killContractProcess";
|
||
request.id = contractid;
|
||
request.requestID = new Date().getTime() + "";
|
||
wssocket.send(JSON.stringify(request));
|
||
|
||
.. _返回结果-25:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"data": "ContractHandler: exit in 3 seconds!",
|
||
"action": "onOutputStream"
|
||
}
|
||
|
||
终止所有合约
|
||
^^^^^^^^^^^^
|
||
|
||
.. _参数-47:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ===============
|
||
字段 值
|
||
====== ===============
|
||
action killAllContract
|
||
====== ===============
|
||
|
||
.. _请求示例-54:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
request.action = "killAllContract";
|
||
wssocket.send(JSON.stringify(request));
|
||
|
||
.. _返回结果-26:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"status":false,
|
||
"action":"onKillAllContract",
|
||
"data":"Kill:7241,7245,"
|
||
}
|
||
|
||
.. _静态分析合约-1:
|
||
|
||
静态分析合约
|
||
^^^^^^^^^^^^
|
||
|
||
.. _参数-48:
|
||
|
||
参数
|
||
''''
|
||
|
||
========== ====================
|
||
字段 值
|
||
========== ====================
|
||
action staticVerifyContract
|
||
owner 用户私钥
|
||
isPartial 是否是部分
|
||
contractid contractid
|
||
script 脚本内容
|
||
path 合约文件名
|
||
========== ====================
|
||
|
||
.. _请求示例-55:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
.. code:: javascript
|
||
|
||
request.action = "staticVerifyContract";
|
||
request.owner = global.sm2Key.privateKey
|
||
request.isPartial = false;
|
||
request.contractid = contractid;
|
||
request.script = global.projectScript;
|
||
request.path = global.projectName;
|
||
wssocket.send(JSON.stringify(request));
|
||
|
||
.. _返回结果-27:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
|
||
{
|
||
"data":"{\"needSeq\":false,\"seq\":0,\"status\":\"Success\",\"result\":{\"hello\":\"Ret:\"},\"isInsnLimit\":false,\"totalGas\":0,\"executionGas\":0,\"extraGas\":0,\"size\":0,\"eventRelated\":false}",
|
||
"action":"onStaticVerifyResult",
|
||
"cid":"verify",
|
||
"executeTime":83
|
||
}
|
||
|
||
删除合约
|
||
^^^^^^^^
|
||
|
||
.. _参数-49:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ==========
|
||
字段 值
|
||
====== ==========
|
||
action deleteFile
|
||
file fileName
|
||
====== ==========
|
||
|
||
.. _请求示例-56:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
.. code:: javascript
|
||
|
||
request.action = "deleteFile";
|
||
request.file = fileName;
|
||
wssocket.send(JSON.stringify(request));
|
||
|
||
.. _返回结果-28:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"action":"onDeleteFile",
|
||
"data":"success",
|
||
"executeTime":0
|
||
}
|
||
|
||
私有合约传至公共目录
|
||
^^^^^^^^^^^^^^^^^^^^
|
||
|
||
.. _参数-50:
|
||
|
||
参数
|
||
''''
|
||
|
||
======== ============
|
||
字段 值
|
||
======== ============
|
||
action changePublic
|
||
pubkey 用户公钥
|
||
fileName fileName
|
||
======== ============
|
||
|
||
.. _请求示例-57:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
.. code:: javascript
|
||
|
||
request.action = "changePublic";
|
||
request.pubkey = pubkey;
|
||
request.fileName = fileName;
|
||
wssocket.send(JSON.stringify(request));
|
||
|
||
.. _返回结果-29:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"action":"onChangePublic",
|
||
"data":"success",
|
||
"executeTime":0
|
||
}
|
||
|
||
上传合约
|
||
^^^^^^^^
|
||
|
||
.. _参数-51:
|
||
|
||
参数
|
||
''''
|
||
|
||
========= ========================
|
||
字段 值
|
||
========= ========================
|
||
action UploadFile
|
||
isAppend false
|
||
fileName fileName
|
||
path path
|
||
isPrivate true/false
|
||
content fileContent(base64编码)
|
||
========= ========================
|
||
|
||
.. _请求示例-58:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
request.action = "uploadFile";
|
||
request.isAppend = false;
|
||
request.fileName = "test1.yjs";
|
||
request.path = "test1";
|
||
text="Y29udHJhY3QgdGVzdDF7CglleHBvcnQgZnVuY3Rpb24gaGVsbG8oYXJnKXsgCiAgICAgICAgcmV0dXJuICJ3b3JsZCI7ICAKICAgIH0gICAKfQ=="
|
||
request.content = text;
|
||
wssocket.send(JSON.stringify(request));
|
||
|
||
.. _返回结果-30:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"action":"onUploadFile",
|
||
"data":"success",
|
||
"executeTime":0
|
||
}
|
||
|
||
编译合约
|
||
^^^^^^^^
|
||
|
||
.. _参数-52:
|
||
|
||
参数
|
||
''''
|
||
|
||
========== ==========================
|
||
字段 值
|
||
========== ==========================
|
||
action compile
|
||
path string, 待编译的项目名称
|
||
privateTab bool, 是否为私有目录的项目
|
||
========== ==========================
|
||
|
||
.. _请求示例-59:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
.. code:: javascript
|
||
|
||
var req = {"action":"compile","path":"Hello","privateTab":true}
|
||
|
||
.. _返回结果-31:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{"result":"Hello_2020-08-17-09:09:40.ypk","action":"onCompile"}
|
||
|
||
锁定私有目录
|
||
^^^^^^^^^^^^
|
||
|
||
锁定某个用户的的私有目录编辑功能
|
||
|
||
.. _参数-53:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ======================
|
||
字段 值
|
||
====== ======================
|
||
action lockEdit
|
||
pubKey string, 要被锁定的公钥
|
||
====== ======================
|
||
|
||
.. _请求示例-60:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
.. code:: javascript
|
||
|
||
var req = {};
|
||
req.action = "lockEdit";
|
||
req.pubKey = "xxxxxx";
|
||
wssocket.send(JSON.stringify(req));
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"action":"onLockEdit",
|
||
"status":"success",
|
||
"data":"04c4c855862b53f323e077ccfcc744ecc2c0a04645ed16d99ede8fd5866b38c0670a97ad22c6260d1a4672aba2a5fe229a2d4eba34627c054aab102620afa288c1"
|
||
}
|
||
|
||
解锁私有目录
|
||
^^^^^^^^^^^^
|
||
|
||
解锁某个用户的的私有目录编辑功能
|
||
|
||
.. _参数-54:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ======================
|
||
字段 值
|
||
====== ======================
|
||
action unLockEdit
|
||
pubKey string, 要被锁定的公钥
|
||
====== ======================
|
||
|
||
.. _请求示例-61:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
.. code:: javascript
|
||
|
||
var req = {};
|
||
req.action = unlockEdit;
|
||
req.pubKey = "xxxxxx";
|
||
wssocket.send(JSON.stringify(req));
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"action":"onUnlockEdit",
|
||
"status":"success",
|
||
"data":"04c4c855862b53f323e077ccfcc744ecc2c0a04645ed16d99ede8fd5866b38c0670a97ad22c6260d1a4672aba2a5fe229a2d4eba34627c054aab102620afa288c1"
|
||
}
|
||
|
||
.. _合约实例管理类-1:
|
||
|
||
合约实例管理类
|
||
~~~~~~~~~~~~~~
|
||
|
||
.. _查询合约进程-1:
|
||
|
||
查询合约进程
|
||
^^^^^^^^^^^^
|
||
|
||
向服务器发送请求, 查询服务器上已经启动的所有合约进程.
|
||
|
||
.. _参数-55:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ===================
|
||
字段 值
|
||
====== ===================
|
||
action listContractProcess
|
||
====== ===================
|
||
|
||
.. _请求示例-62:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
.. code:: javascript
|
||
|
||
var request = {};
|
||
request.action = "listContractProcess";
|
||
wssocket.send(JSON.stringify(request));
|
||
|
||
.. _返回结果示例-20:
|
||
|
||
返回结果示例
|
||
''''''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"status": false,
|
||
"action": "onListContractProcess",
|
||
"data": "[...]"
|
||
}
|
||
|
||
.. _调用合约-1:
|
||
|
||
调用合约
|
||
^^^^^^^^
|
||
|
||
向服务器发送请求, 调用某个合约.
|
||
|
||
.. _参数-56:
|
||
|
||
参数
|
||
''''
|
||
|
||
=================== ================================
|
||
字段 值
|
||
=================== ================================
|
||
action executeContract
|
||
contractID 合约ID
|
||
withDynamicAnalysis true/false 是否进行动态分析,可选
|
||
operation 调用合约的方法名
|
||
arg 调用合约的参数
|
||
pubkey 调用者公钥,可选
|
||
signature 调用者签名 ,可选
|
||
=================== ================================
|
||
|
||
``*``\ 表示可选参数
|
||
|
||
.. code:: javascript
|
||
|
||
//sm2 可从sm2.js中加载获得。
|
||
signature = sm2.doSignature(contractID+"|"+operation+"|"+arg+"|"+pubkey,privateKey);
|
||
|
||
.. _请求示例-63:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
.. code:: javascript
|
||
|
||
var request = {};
|
||
request.action = "executeContract";
|
||
request.contractID = "2073401446";
|
||
request.operation = "main";
|
||
request.arg = "hhhhh";
|
||
wssocket.send(JSON.stringify(request));
|
||
|
||
.. _返回结果示例-21:
|
||
|
||
返回结果示例
|
||
''''''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"needSeq":false,
|
||
"seq":0,
|
||
"status":"Success",
|
||
"result":"world",
|
||
"isInsnLimit":false,
|
||
"totalGas":0,
|
||
"executionGas":0,
|
||
"extraGas":0,
|
||
"size":0,
|
||
"eventRelated":false,
|
||
"responseID":"1617211077264_223",
|
||
"action":"onExecuteResult",
|
||
"executeTime":"5"
|
||
}
|
||
|
||
输出历史记录日志(删除)
|
||
^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
向服务器发送请求, 获取节点服务器上合约的TimeTravel日志.
|
||
|
||
.. _参数-57:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ==================
|
||
字段 值
|
||
====== ==================
|
||
action printTimeTravelLog
|
||
====== ==================
|
||
|
||
.. _请求示例-64:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
.. code:: javascript
|
||
|
||
var request = {};
|
||
request.action = "printTimeTravelLog";
|
||
wssocket.send(JSON.stringify(request));
|
||
|
||
.. _返回结果示例-22:
|
||
|
||
返回结果示例
|
||
''''''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"status": false,
|
||
"data": "[CMActions] dumpContract :…t/contractExamples/memoryDumps/LicenceManager\n"
|
||
}
|
||
|
||
输出节点转移日志(删除)
|
||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
向服务器发送请求, 获取节点服务器的状态转移日志.
|
||
|
||
.. _参数-58:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ================
|
||
字段 值
|
||
====== ================
|
||
action printTransferLog
|
||
====== ================
|
||
|
||
.. _请求示例-65:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
.. code:: javascript
|
||
|
||
var request = {};
|
||
request.action = "printTransferLog";
|
||
wssocket.send(JSON.stringify(request));
|
||
|
||
.. _返回结果示例-23:
|
||
|
||
返回结果示例
|
||
''''''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"status": false,
|
||
"data": ""
|
||
}
|
||
|
||
合约状态迁移
|
||
^^^^^^^^^^^^
|
||
|
||
向服务器发送请求, 获取节点服务器的状态转移日志.
|
||
|
||
.. _参数-59:
|
||
|
||
参数
|
||
''''
|
||
|
||
============ ============
|
||
字段 值
|
||
============ ============
|
||
action loadMemory
|
||
contractName 合约名称
|
||
memoryFile 合约文件名称
|
||
============ ============
|
||
|
||
.. _请求示例-66:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
.. code:: javascript
|
||
|
||
var request = {};
|
||
request.action = "loadMemory";
|
||
request.contractName = "JsonContract";
|
||
request.memoryFile = "2020-03-17.20/42/55";
|
||
wssocket.send(JSON.stringify(request));
|
||
|
||
.. _返回结果示例-24:
|
||
|
||
返回结果示例
|
||
''''''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"data":"success",
|
||
"size":"0.00 B",
|
||
"action":"onTransferTo",
|
||
"time":"0.01s"
|
||
}
|
||
|
||
.. _日志查看类-1:
|
||
|
||
日志查看类
|
||
~~~~~~~~~~
|
||
|
||
查看本地近n日节点日志(删除)
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
.. _参数-60:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ================
|
||
字段 值
|
||
====== ================
|
||
action listLocalNodeLog
|
||
date 当前时间
|
||
====== ================
|
||
|
||
.. _请求示例-67:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
request.action = "listLocalNodeLog";
|
||
request.date = new Date().getTime() - 24 * 3600 * 1000 * n;
|
||
wssocket.send(JSON.stringify(request));
|
||
|
||
.. _返回结果-32:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"data":"[{\"action\":\"login\",\"pubKey\":\"null\",\"status\":\"accept\",\"date\":1583139323822}\",]"
|
||
}
|
||
|
||
查看本地近n日合约日志(删除)
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
.. _参数-61:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ====================
|
||
字段 值
|
||
====== ====================
|
||
action listLocalContractLog
|
||
date 当前时间
|
||
====== ====================
|
||
|
||
.. _请求示例-68:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
request.action = "listLocalContractLog";
|
||
request.date = new Date().getTime() - 24 * 3600 * 1000 * n;
|
||
wssocket.send(JSON.stringify(request));
|
||
|
||
.. _返回结果-33:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"data":"[\"{\"action\":\"startContract\",\"pubKey\":\"04405d7ba358d9234939623ab51ea94ca685e6a1f36ed81fd9630ccba6473e632f163bb30faffd4c91f21e5bace20101d6d6e36c04ac67eea14cc24b4962b84f57\",\"contractID\":\"845581788\",\"contractName\":\"null\",\"date\":1583141525539}\"]"
|
||
}
|
||
|
||
节点配置类
|
||
~~~~~~~~~~
|
||
|
||
获取节点配置信息
|
||
^^^^^^^^^^^^^^^^
|
||
|
||
.. _参数-62:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ==============
|
||
字段 值
|
||
====== ==============
|
||
action loadNodeConfig
|
||
====== ==============
|
||
|
||
.. _请求示例-69:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
var param = {};
|
||
param.action = "loadNodeConfig";
|
||
wssocket.send(JSON.stringify(param));
|
||
|
||
.. _返回结果-34:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
::
|
||
|
||
{
|
||
"status": true,
|
||
"action": "onLoadNodeConfig",
|
||
"data": {
|
||
"nodeName": "04BF52213343C147E631B877BCEB17B794230EE551E85F58FA429C4BA03D690778CC384C6916C63DF36CB9E35C7E274FDB4E18491DFE3D611D347856D441CACC5AF9090B515F02AFC2DFBF56461EC83B5A4CD342466360D6CF82E6E40B637430AC4A329CCBC798DAF7D526AF9E3B3600E0BEA1BFAB8C160EF90128FAF67B19E45F37664F1E4B",
|
||
"licence": "04AADCC7103CD02626D228AFFBEF53F8242ECA4DDD6F179D30B622440666715CFBB6FD1D3678A2B25812DEA9917073E79A65F7ADE517F784DC76288EFCEB37ECAA1025E6903540702F729DA1C2ECCD93F4E6FAFCE40DF443E7FD74387169D0C6D927C7BB12882D0471C8D3E6F31B0316A42FC38F6DD9978D4351B23B2AD63E2244909E98F51185D32CB99B4AE4E22D3AB4C04027BB",
|
||
"expireTime": "Wed Aug 26 09:43:08 CST 2020",
|
||
"nodes": "[\"node1\",\"node2\",\"node3\"]",
|
||
"yjsPath": "/Users/xxx/docs/BDWareHttp/generatedlib/yjs.jar",
|
||
"nodeCenter": "ws://127.0.0.1:1719/SCIDE/NodeCenter"
|
||
}
|
||
}
|
||
|
||
{
|
||
"status":true,
|
||
"action":"onLoadNodeConfig",
|
||
"data":{
|
||
"nodeName":"Node_180",
|
||
"peerID":"",
|
||
"masterAddress":"39.104.201.40:21031",
|
||
"licence":"04AADCC7103C",
|
||
"doipConfig":"{\\"LHSProxyAddress\\":\\"http://39.104.201.40:21042/\\",\\"ownerHandle\\":\\"86.5000.470/dou.TEST\\",\\"certPath\\":\\"keys/dou.TEST.keystore\\",\\"certPassword\\":\\"123456\\",\\"repoID\\":\\"86.5000.470/doip.vcg9Mu1gSq_bdw\\",\\"listeners\\":\\"[{\\\\\\"url\\\\\\":\\\\\\"tcp://39.104.201.40:21032\\\\\\",\\\\\\"protocolVersion\\\\\\":\\\\\\"2.1\\\\\\",\\\\\\"messageFormat\\\\\\":\\\\\\"packet\\\\\\"}]\\",\\"serviceDescription\\":\\"test local Contract Repository\\",\\"serviceName\\":\\"ContractEngine021\\"}",
|
||
"clusterConnected":"false",
|
||
"nodePubKey":"0492d974b8a5b473d0ed2c81800917f76e2a1ec3666067888c85fe6922a672223f2083f95402ae13a744df58deabbe7206c4a317dd14296b0d3941a26ca4e34dc5",
|
||
"ipPort":"",
|
||
"bdledger":"39.108.56.240:18091,39.108.56.12:1809139.104.70.160:18091 47.98.247.70:18091 47.98.248.208:18091 39.104.77.165:18091 47.98.249.131:18091",
|
||
"yjsPath":"/data/bdwaas/bdcontract/yjs.jar",
|
||
"nodeCenter":"ws://39.104.201.21040/SCIDE/NodeCenter"
|
||
}
|
||
}
|
||
|
||
修改节点配置
|
||
^^^^^^^^^^^^
|
||
|
||
.. _参数-63:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ==============
|
||
字段 值
|
||
====== ==============
|
||
action updateConfig
|
||
key 要改的配置项
|
||
val 要更改的目标值
|
||
====== ==============
|
||
|
||
其中,key的可选项包括:
|
||
|
||
============= =================================== ===============================
|
||
key的示 val示例 说明
|
||
============= =================================== ===============================
|
||
yjsPath /User/xxx/cp/yjs.jar 合约进程启动所需的jar
|
||
dataChain 192.168.1.8:18090,182.173.2.3:18091 账本节点的ip与端口
|
||
nodeCenter ws://127.0.0.1:18002 CenterPortal所在的ip/端口
|
||
nodeName Node_180 字符串类型
|
||
masterAddress 192.168.3.2:18001 该NodePortal节点的ip和的TCP端口
|
||
============= =================================== ===============================
|
||
|
||
其中NodePortal的TCP端口为Node的http/ws端口号+1。
|
||
|
||
修改节点名称
|
||
^^^^^^^^^^^^
|
||
|
||
.. _参数-64:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ==============
|
||
字段 值
|
||
====== ==============
|
||
action changeNodeName
|
||
data 新的节点名称
|
||
====== ==============
|
||
|
||
.. _请求示例-70:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
var param = {};
|
||
param.action = "changeNodeName";
|
||
param.data = "NewNodeName";
|
||
wssocket.send(JSON.stringify(param));
|
||
|
||
.. _返回结果-35:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"status": true,
|
||
"action": "onChangeNodeName",
|
||
"data": true
|
||
}
|
||
|
||
修改节点YJS路径
|
||
^^^^^^^^^^^^^^^
|
||
|
||
.. _参数-65:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== =====================
|
||
字段 值
|
||
====== =====================
|
||
action changeYJSPath
|
||
data 节点服务器yjs.jar路径
|
||
====== =====================
|
||
|
||
.. _请求示例-71:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
var param = {};
|
||
param.action = "changeYJSPath";
|
||
param.data = "/Users/xxx/docs/BDWareHttp/generatedlib/yjs.jar";
|
||
wssocket.send(JSON.stringify(param));
|
||
|
||
.. _返回结果-36:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"status": true,
|
||
"action": "onChangeYJSPath",
|
||
"data": true
|
||
}
|
||
|
||
修改NodeCenter
|
||
^^^^^^^^^^^^^^
|
||
|
||
.. _参数-66:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== =========================================
|
||
字段 值
|
||
====== =========================================
|
||
action changeNodeCenter
|
||
data 节点服务器要连接的NodeCenterWebSocket路径
|
||
====== =========================================
|
||
|
||
.. _请求示例-72:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
var param = {};
|
||
param.action = "changeNodeCenter";
|
||
param.data = "ws://127.0.0.1:1719/SCIDE/NodeCenter";
|
||
wssocket.send(JSON.stringify(param));
|
||
|
||
.. _返回结果-37:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"status": true,
|
||
"action": "onChangeNodeCenter",
|
||
"data": true
|
||
}
|
||
|
||
修改账本节点
|
||
^^^^^^^^^^^^
|
||
|
||
.. _参数-67:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ===========================
|
||
字段 值
|
||
====== ===========================
|
||
action changeBDledger
|
||
data 数链节点的IP:port,用“,”隔开
|
||
====== ===========================
|
||
|
||
.. _请求示例-73:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
var param = {};
|
||
param.action = "changeBDledger";
|
||
param.data = "39.108.56.240:18091,39.108.56.12:18091";
|
||
wssocket.send(JSON.stringify(param));
|
||
|
||
.. _返回结果-38:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"status": true,
|
||
"action": "onChangeBDledger",
|
||
"data": true
|
||
}
|
||
|
||
上传节点Licence
|
||
^^^^^^^^^^^^^^^
|
||
|
||
.. _参数-68:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== =======================
|
||
字段 值
|
||
====== =======================
|
||
action uploadLicence
|
||
data 节点服务器的Licence内容
|
||
====== =======================
|
||
|
||
.. _请求示例-74:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
var param = {};
|
||
param.action = "uploadLicence";
|
||
param.data = "04AADCC7103C";
|
||
wssocket.send(JSON.stringify(param));
|
||
|
||
.. _返回结果-39:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"status": true,
|
||
"action": "onUploadLicence",
|
||
"data": true
|
||
}
|
||
|
||
获取节点ID
|
||
^^^^^^^^^^
|
||
|
||
.. _参数-69:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== =========
|
||
字段 值
|
||
====== =========
|
||
action getNodeID
|
||
====== =========
|
||
|
||
.. _请求示例-75:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
var param = {};
|
||
param.action = "getNodeID";
|
||
wssocket.send(JSON.stringify(param));
|
||
|
||
.. _返回结果-40:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"status": true,
|
||
"action": "onGetNodeID",
|
||
"data": "0431…d3a92e1184bbc5817ebda5c2ad498e4ff1d240009b4f06d"
|
||
}
|
||
|
||
获取节点所在的可信执行集群
|
||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
.. _参数-70:
|
||
|
||
参数
|
||
''''
|
||
|
||
========== ================================================
|
||
字段 值
|
||
========== ================================================
|
||
action getNodeTrustUnits
|
||
data 节点ID
|
||
msgHandler 收到回复的回调函数, 可使用“建立连接”的msgHandler
|
||
ws 节点所属的NodeCenter的WebSocket地址
|
||
========== ================================================
|
||
|
||
.. _请求示例-76:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
centerportalws = createWssocket("ws://127.0.0.1:1718/NodeCenterWS",function() {
|
||
var param = {};
|
||
param.action = "getNodeTrustUnits";
|
||
param.data = "0431e311bd70840fe69965e2cabea97fafe99f2133953c01abb9bd7cb62af42f8283f474d203051e920d3a92e1184bbc5817ebda5c2ad498e4ff1d240009b4f06d";
|
||
centerportalws.send(JSON.stringify(param));
|
||
}, msgHandler);
|
||
|
||
.. _返回结果-41:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"data": [{
|
||
"key": "0475c7b061...65e55_4063665700873624164",
|
||
"value": "[\"04541429c11b094…40009b4f06d\"]"
|
||
}],
|
||
"action": "onGetNodeTrustUnits"
|
||
}
|
||
|
||
.. _模板生成类-1:
|
||
|
||
模板生成类
|
||
~~~~~~~~~~
|
||
|
||
获取合约模板列表
|
||
^^^^^^^^^^^^^^^^
|
||
|
||
.. _参数-71:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ===============
|
||
字段 值
|
||
====== ===============
|
||
action getTemplateList
|
||
====== ===============
|
||
|
||
.. _请求示例-77:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
.. code:: javascript
|
||
|
||
req={};
|
||
req.action = "getTemplateList";
|
||
wssocket.send(JSON.stringify(req));
|
||
|
||
.. _返回结果-42:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"data": [
|
||
{
|
||
"formDesc": {
|
||
"dbPWD": {
|
||
"label": "密码",
|
||
"type": "input"
|
||
},
|
||
"contractName": {
|
||
"label": "合约名称",
|
||
"type": "input"
|
||
},
|
||
"accessPolicy": {
|
||
"label": "访问控制策略",
|
||
"type": "input",
|
||
"option": [
|
||
{
|
||
"text": "无访问控制",
|
||
"value": "NAC"
|
||
},
|
||
{
|
||
"text": "直接访问控制",
|
||
"value": "DAC"
|
||
},
|
||
{
|
||
"text": "基于角色的访问控制",
|
||
"value": "RBAC"
|
||
}
|
||
]
|
||
},
|
||
"dbUserName": {
|
||
"label": "用户名",
|
||
"type": "input"
|
||
},
|
||
"fieldList": {
|
||
"label": "字段名",
|
||
"type": "tag"
|
||
},
|
||
"dbUrl": {
|
||
"label": "数据库链接",
|
||
"type": "input"
|
||
},
|
||
"tableName": {
|
||
"label": "表名",
|
||
"type": "input"
|
||
}
|
||
},
|
||
"apiName": "generateMySQLProject"
|
||
},
|
||
{
|
||
"formDesc": {
|
||
"contractName": {
|
||
"label": "合约名称",
|
||
"type": "input"
|
||
},
|
||
"accessPolicy": {
|
||
"label": "访问控制策略",
|
||
"type": "input",
|
||
"option": [
|
||
{
|
||
"text": "无访问控制",
|
||
"value": "NAC"
|
||
},
|
||
{
|
||
"text": "直接访问控制",
|
||
"value": "DAC"
|
||
},
|
||
{
|
||
"text": "基于角色的访问控制",
|
||
"value": "RBAC"
|
||
}
|
||
]
|
||
}
|
||
},
|
||
"apiName": "generateEmptyProject"
|
||
}
|
||
],
|
||
"action": "onTemplateList"
|
||
}
|
||
|
||
空白合约模板
|
||
^^^^^^^^^^^^
|
||
|
||
.. _参数-72:
|
||
|
||
参数
|
||
''''
|
||
|
||
============ =============================
|
||
字段 值
|
||
============ =============================
|
||
action generateEmptyProject
|
||
contractName 字符串类型,合约名称
|
||
isPrivate 布尔类型,是否为私有项目
|
||
accessPolicy 若为“DAC”,则实现直接访问控制
|
||
============ =============================
|
||
|
||
.. _请求示例-78:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
.. code:: javascript
|
||
|
||
var req = {};
|
||
req.contractName = "Empty22";
|
||
req.action = "generateEmptyProject";
|
||
req.accessPolicy = "DAC";
|
||
//wssocket为建立好的连接
|
||
wssocket.send(JSON.stringify(req));
|
||
|
||
.. _返回结果-43:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"action":"onListProjects",
|
||
"data":"[\"AnnotationSample\",\"AppDataAnalysis\",\"AppDataSource\"]",
|
||
"executeTime":0,
|
||
"isPrivate":false
|
||
}
|
||
|
||
MySQL接入合约
|
||
^^^^^^^^^^^^^
|
||
|
||
.. _参数-73:
|
||
|
||
参数
|
||
''''
|
||
|
||
============= ======================================================
|
||
字段 值
|
||
============= ======================================================
|
||
action generateMySQLProject
|
||
contractName 字符串类型,合约名称
|
||
isPrivate 布尔类型,是否为私有项目
|
||
dbUrl 字符串类型,数据库的URI
|
||
dbUserName 字符串类型,数据库的用户名
|
||
dbPWD 字符串类型,数据库密码
|
||
accessPolicy 若为“DAC”,则实现直接访问控制,若为“NAC”则没有访问控制
|
||
tableName 字符串类型,数据库的表名
|
||
fieldList 字符串列表,数据库的字段列表
|
||
defaultAccept 布尔值,表示申请时是否默认有权
|
||
============= ======================================================
|
||
|
||
.. _请求示例-79:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
.. code:: javascript
|
||
|
||
var req = {};
|
||
req.contractName = "MySQLFromTemplate";
|
||
req.action = "generateMySQLProject";
|
||
req.pubKey = global.sm2Key.publicKey;
|
||
req.isPrivate = true;
|
||
req.tableName = "data";
|
||
req.dbUrl = "jdbc:mysql://xxx:xxx/xxx";
|
||
req.dbUserName = "loushuai";
|
||
req.dbPWD = "loushuai";
|
||
req.fieldList = [{"name":"名字","code":"*"}];
|
||
req.basicInfo={"type":"所属分类","name":"资源名称"};
|
||
req.accessPolicy = "DAC";
|
||
req.defaultAccept = true;
|
||
//global.wssocket为建立好的连接
|
||
global.wssocket.send(JSON.stringify(req));
|
||
|
||
.. _返回结果-44:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"action":"onListProjects",
|
||
"data":"[\"CSVFromTemplate\",\"Empty22\",\"Hello\",\"MySQLFromTemplate\",\"test\"]",
|
||
"executeTime":0,
|
||
"isPrivate":true
|
||
}
|
||
|
||
CSV接入合约
|
||
^^^^^^^^^^^
|
||
|
||
.. _参数-74:
|
||
|
||
参数
|
||
''''
|
||
|
||
================= ======================================================
|
||
字段 值
|
||
================= ======================================================
|
||
action generateCSVProject
|
||
contractName 字符串类型,合约名称
|
||
base64EncodedData 字符串类型,通过base64编码后的CSV文件内容
|
||
isPrivate 可选字段,布尔类型,是否为私有项目
|
||
accessPolicy 若为“DAC”,则实现直接访问控制,若为“NAC”则没有访问控制
|
||
defaultAccept 可选字段,布尔值,表示申请时是否默认有权
|
||
================= ======================================================
|
||
|
||
.. _请求示例-80:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
.. code:: javascript
|
||
|
||
var req = {};
|
||
req.contractName = "CSVFromTemplate";
|
||
req.action = "generateCSVProject";
|
||
req.pubKey = global.sm2Key.publicKey;
|
||
req.isPrivate = true;
|
||
req.tableName = "data";
|
||
req.accessPolicy = "DAC";
|
||
req.defaultAccept = true;
|
||
req.base64EncodedData = "bmFtZSwgc2NvcmUsCmphY2ssIDkwLApsdWN5LCA5MQo=";
|
||
//global.wssocket为建立好的连接
|
||
global.wssocket.send(JSON.stringify(req));
|
||
|
||
.. _返回结果-45:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"action":"onListProjects",
|
||
"data":"[\"CSVFromTemplate\",\"Empty22\",\"Hello\",\"MySQLFromTemplate\",\"test\"]",
|
||
"executeTime":0,
|
||
"isPrivate":true
|
||
}
|
||
|
||
--------------
|
||
|
||
路由节点WebSocket接口
|
||
---------------------
|
||
|
||
.. _用户管理类-2:
|
||
|
||
用户管理类
|
||
~~~~~~~~~~
|
||
|
||
.. _获取session-1:
|
||
|
||
获取Session
|
||
^^^^^^^^^^^
|
||
|
||
登录前获取session以便进行签名。
|
||
|
||
.. _参数-75:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ============
|
||
字段 值
|
||
====== ============
|
||
action getSessionID
|
||
====== ============
|
||
|
||
.. _请求示例-81:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
var req = {};
|
||
req.action = "getSessionID";
|
||
wssocket.send(JSON.stringify(req));
|
||
|
||
.. _返回结果-46:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"action": "onSessionID",
|
||
"session": "9782323_session"
|
||
}
|
||
|
||
.. _用户登录-1:
|
||
|
||
用户登录
|
||
^^^^^^^^
|
||
|
||
用户进行公私钥身份验证,需先调用“getSessionID”获取sessionID以便于签名。
|
||
|
||
.. _参数-76:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== =====
|
||
字段 值
|
||
====== =====
|
||
action login
|
||
====== =====
|
||
|
||
.. _请求示例-82:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
var loginParam = {};
|
||
loginParam.pubKey = global.sm2Key.publicKey;
|
||
loginParam.signature = sm2.doSignature(global.session,
|
||
global.sm2Key.privateKey);
|
||
loginParam.action = "login";
|
||
wssocket.send(JSON.stringify(loginParam));
|
||
|
||
.. _返回结果示例-25:
|
||
|
||
返回结果示例
|
||
''''''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"action": "onLogin",
|
||
"data": "CenterManager"
|
||
}
|
||
|
||
用户获取当前角色(删除)
|
||
^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
用户根据登录时的公钥获取对应的角色,如果是第一次登录则此时的公钥默认称为准入管理员
|
||
|
||
.. _参数-77:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== =======
|
||
字段 值
|
||
====== =======
|
||
action getRole
|
||
====== =======
|
||
|
||
.. _请求示例-83:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
var param = {};
|
||
param.action = "getRole";
|
||
wssocket.send(JSON.stringify(param));
|
||
|
||
.. _返回结果示例-26:
|
||
|
||
返回结果示例
|
||
''''''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"action": "onGetRole",
|
||
"data": "CenterManager"
|
||
}
|
||
|
||
.. _申请角色-1:
|
||
|
||
申请角色
|
||
^^^^^^^^
|
||
|
||
在准入管理员界面可以申请称为组网中某个节点的节点管理员
|
||
|
||
.. _参数-78:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ==============
|
||
字段 值
|
||
====== ==============
|
||
action applyRole
|
||
role 申请的角色名称
|
||
====== ==============
|
||
|
||
.. _请求示例-84:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
var param = {};
|
||
param.action = "applyRole";
|
||
param.role="
|
||
wssocket.send(JSON.stringify(param));
|
||
|
||
.. _返回结果示例-27:
|
||
|
||
返回结果示例
|
||
''''''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"action": "onApplyRole",
|
||
"data": "failed"
|
||
}
|
||
|
||
添加节点
|
||
^^^^^^^^
|
||
|
||
.. _参数-79:
|
||
|
||
参数
|
||
''''
|
||
|
||
========== ================
|
||
字段 值
|
||
========== ================
|
||
action addNode
|
||
nodePubKey 要添加的节点公钥
|
||
========== ================
|
||
|
||
.. _请求示例-85:
|
||
|
||
请求示例
|
||
^^^^^^^^
|
||
|
||
::
|
||
|
||
var req = {};
|
||
//某节点的publicKey可通过连接该节点,并通过"获取节点配置信息"接口获取
|
||
req.nodePubKey = publicKey;
|
||
req.action = "addNode";
|
||
wssocket.send(JSON.stringify(req));
|
||
|
||
.. _删除用户角色-1:
|
||
|
||
删除用户角色
|
||
^^^^^^^^^^^^
|
||
|
||
.. _参数-80:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ==============
|
||
字段 值
|
||
====== ==============
|
||
action delete
|
||
pubKey 对应用户的公钥
|
||
====== ==============
|
||
|
||
.. _请求示例-86:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
var deleteInfo = {};
|
||
deleteInfo.pubKey = user.publicKey;
|
||
deleteInfo.action = "delete";
|
||
wssocket.send(JSON.stringify(deleteInfo));
|
||
|
||
.. _返回结果示例-28:
|
||
|
||
返回结果示例
|
||
''''''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"action": "onDelete",
|
||
"data": "success"
|
||
}
|
||
|
||
.. _查看授权用户列表-1:
|
||
|
||
查看授权用户列表
|
||
^^^^^^^^^^^^^^^^
|
||
|
||
查看准入管理员当前组网中已经授权的节点管理员
|
||
|
||
.. _参数-81:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ============
|
||
字段 值
|
||
====== ============
|
||
action listAllUsers
|
||
====== ============
|
||
|
||
.. _请求示例-87:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
var param = {};
|
||
param.action = "onListAllUsers";
|
||
wssocket.send(JSON.stringify(param));
|
||
|
||
.. _返回结果示例-29:
|
||
|
||
返回结果示例
|
||
''''''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"action": "onListAllUsers",
|
||
"kv": {
|
||
"key": "049999ebd14ff3b96ebf7f7325e1da94a1c4c376573a1dc1cec2b4f7a3b09ed7b07252134e93b6ac2e1853268b82f4b541d34fb42b0182cd61043e99d3489e2cf7",
|
||
"value": " NodeManager"
|
||
},
|
||
"time": {
|
||
"key": "049999ebd14ff3b96ebf7f7325e1da94a1c4c376573a1dc1cec2b4f7a3b09ed7b07252134e93b6ac2e1853268b82f4b541d34fb42b0182cd61043e99d3489e2cf7",
|
||
"value": 1587398989914
|
||
}
|
||
}
|
||
|
||
.. _查看申请用户列表-1:
|
||
|
||
查看申请用户列表
|
||
^^^^^^^^^^^^^^^^
|
||
|
||
.. _参数-82:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== =============
|
||
字段 值
|
||
====== =============
|
||
action listApplyList
|
||
====== =============
|
||
|
||
.. _请求示例-88:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
var param = {};
|
||
param.action = "onListApplyList";
|
||
wssocket.send(JSON.stringify(param));
|
||
|
||
.. _返回结果-47:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"action": "onListApplyList",
|
||
"kv": {
|
||
"key": "04b00f32eab70c78d1b43738f190d326d36c021af2124acefe6d057016b11ea31c750bb473e565c9d89e4993a44f4d30adf447d3026a21ff4b3b64cef523074ef7",
|
||
"value": " NodeManager"
|
||
},
|
||
"time": {
|
||
"key": "04b00f32eab70c78d1b43738f190d326d36c021af2124acefe6d057016b11ea31c750bb473e565c9d89e4993a44f4d30adf447d3026a21ff4b3b64cef523074ef7",
|
||
"value": 1587398989914
|
||
}
|
||
}
|
||
|
||
查看用户类型分布
|
||
^^^^^^^^^^^^^^^^
|
||
|
||
.. _参数-83:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== =============
|
||
字段 值
|
||
====== =============
|
||
action queryUserStat
|
||
====== =============
|
||
|
||
.. _请求示例-89:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
var param = {};
|
||
param.action = "onQueryUserStat";
|
||
wssocket.send(JSON.stringify(param));
|
||
|
||
.. _返回结果示例-30:
|
||
|
||
返回结果示例
|
||
''''''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"action": "onQueryUserStat",
|
||
"userListCount": 3,
|
||
"applyListCount":0
|
||
}
|
||
|
||
节点管理类
|
||
~~~~~~~~~~
|
||
|
||
查看节点列表
|
||
^^^^^^^^^^^^
|
||
|
||
查看该用户有权限查看的节点列表(仅准入管理员及合约管理者可用)
|
||
|
||
.. _参数-84:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== =========
|
||
字段 值
|
||
====== =========
|
||
action listNodes
|
||
====== =========
|
||
|
||
.. _请求示例-90:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
var param = {};
|
||
param.action = "listNodes";
|
||
wssocket.send(JSON.stringify(param));
|
||
|
||
.. _返回结果-48:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"offline": [{
|
||
"key": "0431e31...40009b4f06d",
|
||
"value": "0431e311bd708...b4f06d"
|
||
}],
|
||
"action": "onListNodes",
|
||
"online": [{
|
||
"contracts": [],
|
||
"pubKey": "0431e311...09b4f06d",
|
||
"nodeName": "NewNodeName",
|
||
"udpID": "528822126",
|
||
"cimanager": ""
|
||
}]
|
||
}
|
||
|
||
查看可信执行集群列表
|
||
^^^^^^^^^^^^^^^^^^^^
|
||
|
||
查看该用户有权限查看的节点列表(仅中心管理员及合约管理者可用)
|
||
|
||
.. _参数-85:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ==============
|
||
字段 值
|
||
====== ==============
|
||
action listTrustUnits
|
||
====== ==============
|
||
|
||
.. _请求示例-91:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
var param = {};
|
||
param.action = "listTrustUnits";
|
||
wssocket.send(JSON.stringify(param));
|
||
|
||
.. _返回结果-49:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"data": [{
|
||
"key": "0470b2f27f4f6…1cb855f1ecec11",
|
||
"value": "[...]"
|
||
}],
|
||
"action": "onListTrustUnits"
|
||
}
|
||
|
||
建立可信执行集群
|
||
^^^^^^^^^^^^^^^^
|
||
|
||
.. _参数-86:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ======================
|
||
字段 值
|
||
====== ======================
|
||
action createTrustUnit
|
||
data 节点公钥组成的Json数组
|
||
Msg 集群名称
|
||
====== ======================
|
||
|
||
.. _请求示例-92:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
var param = {};
|
||
param.action = "createTrustUnit";
|
||
param.data = "[\"382r0934309t...\",\"345343rr3f34...\"]";
|
||
param.msg = "newUnit1";
|
||
global.wssocket.send(JSON.stringify(param));
|
||
|
||
.. _返回结果-50:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"action": "onCreateTrustUnit",
|
||
"status": "Success"
|
||
}
|
||
|
||
删除可信执行集群
|
||
^^^^^^^^^^^^^^^^
|
||
|
||
.. _参数-87:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ===============
|
||
字段 值
|
||
====== ===============
|
||
action deleteTrustUnit
|
||
data 可信执行集群ID
|
||
====== ===============
|
||
|
||
.. _请求示例-93:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
var param = {};
|
||
param.action = "deleteTrustUnit";
|
||
param.data = "0475d34rf3434..._1583410158761";
|
||
global.wssocket.send(JSON.stringify(param));
|
||
|
||
.. _返回结果-51:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"action": "onDeleteTrustUnit",
|
||
"status": "Success"
|
||
}
|
||
|
||
.. _日志查看类-2:
|
||
|
||
日志查看类
|
||
~~~~~~~~~~
|
||
|
||
查看组网管理操作的统计
|
||
^^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
.. _参数-88:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ==============
|
||
字段 值
|
||
====== ==============
|
||
action queryActionLog
|
||
date 当前时间
|
||
====== ==============
|
||
|
||
.. _请求示例-94:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
request.action = "onQueryActionLog";
|
||
request.date = new Date().getTime() - 24 * 3600 * 1000 * n;
|
||
wssocket.send(JSON.stringify(request));
|
||
|
||
.. _返回结果-52:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{ "action":"onQueryActionLog",
|
||
"data":"[{\"action\":\"login\",\"pubKey\":\"null\",\"status\":\"accept\",\"date\":1583139323822}\",]"
|
||
}
|
||
|
||
查看本地近n日合约日志
|
||
^^^^^^^^^^^^^^^^^^^^^
|
||
|
||
.. _参数-89:
|
||
|
||
参数
|
||
''''
|
||
|
||
====== ====================
|
||
字段 值
|
||
====== ====================
|
||
action listLocalContractLog
|
||
date 当前时间
|
||
====== ====================
|
||
|
||
.. _请求示例-95:
|
||
|
||
请求示例
|
||
''''''''
|
||
|
||
::
|
||
|
||
request.action = "listLocalContractLog";
|
||
request.date = new Date().getTime() - 24 * 3600 * 1000 * n;
|
||
wssocket.send(JSON.stringify(request));
|
||
|
||
.. _返回结果-53:
|
||
|
||
返回结果
|
||
''''''''
|
||
|
||
.. code:: json
|
||
|
||
{
|
||
"data":"[\"{\"action\":\"startContract\",\"pubKey\":\"04405d7b...\",\"contractID\":\"845581788\",\"contractName\":\"null\",\"date\":1583141525539}\"]"
|
||
}
|
||
|
||
--------------
|
||
|
||
Bash接口
|
||
--------
|
||
|
||
已废弃。可使用BDWareConfigTool代替。 通过命令行发送Socket指令,
|
||
执行调用\ ``ContractController``\ 类中方法, 完成以下功能.
|
||
(需要在本机的``1615``\ 端口运行\ ``ContractManager``\ 实例)
|
||
|
||
.. figure:: ./_static/imgs/bash-api.png
|
||
:alt: Bash接口功能示意图
|
||
|
||
Bash接口功能示意图
|
||
|
||
指令
|
||
~~~~
|
||
|
||
.. code:: bash
|
||
|
||
java -jar yjs.jar function_name arguments
|
||
|
||
``function_name``\ 为调用的方法名;
|
||
|
||
``arguments``\ 为方法参数.
|
||
|
||
.. _启动合约-2:
|
||
|
||
启动合约
|
||
~~~~~~~~
|
||
|
||
.. _参数-90:
|
||
|
||
参数
|
||
^^^^
|
||
|
||
``function_name``\ 为\ ``startContract``;
|
||
|
||
``arguments``\ 为启动合约需要的参数, 包括合约类型\ ``type``,
|
||
合约ID\ ``id``, 合约脚本\ ``script``.
|
||
|
||
指令示例
|
||
^^^^^^^^
|
||
|
||
.. code:: bash
|
||
|
||
java -jar yjs.jar startContract "{\"type\":\"Algorigthm\",\"id\":\"656565\",\"script\":\"contract c{function main(arg){return arg/1.0+1;}}\"}"
|
||
|
||
.. _调用合约-2:
|
||
|
||
调用合约
|
||
~~~~~~~~
|
||
|
||
.. _参数-91:
|
||
|
||
参数
|
||
^^^^
|
||
|
||
``function_name``\ 为\ ``executeContract``;
|
||
|
||
``arguments``\ 为调用合约需要的参数, 包括调用参数\ ``arg``,
|
||
合约ID\ ``contractID``.
|
||
|
||
.. _指令示例-1:
|
||
|
||
指令示例
|
||
^^^^^^^^
|
||
|
||
.. code:: bash
|
||
|
||
java -jar yjs.jar executeContract "{\"arg\":\"http://www.baidu.com\",\"contractID\":\"656564\"}"
|
||
|
||
.. _停止合约-1:
|
||
|
||
停止合约
|
||
~~~~~~~~
|
||
|
||
.. _参数-92:
|
||
|
||
参数
|
||
^^^^
|
||
|
||
``function_name``\ 为\ ``stopContract``;
|
||
|
||
``arguments``\ 为调用合约需要的参数, 即合约ID\ ``contractID``.
|
||
|
||
.. _指令示例-2:
|
||
|
||
指令示例
|
||
^^^^^^^^
|
||
|
||
.. code:: bash
|
||
|
||
java -jar yjs.jar stopContract "{\"arg\":\"http://www.baidu.com\",\"contractID\":\"656564\"}"
|
||
|
||
停止全部合约
|
||
~~~~~~~~~~~~
|
||
|
||
.. _参数-93:
|
||
|
||
参数
|
||
^^^^
|
||
|
||
``function_name``\ 为\ ``stopAllContracts``.
|
||
|
||
.. _指令示例-3:
|
||
|
||
指令示例
|
||
^^^^^^^^
|
||
|
||
.. code:: bash
|
||
|
||
java -jar yjs.jar stopAllContracts
|
||
|
||
查询全部合约
|
||
~~~~~~~~~~~~
|
||
|
||
.. _参数-94:
|
||
|
||
参数
|
||
^^^^
|
||
|
||
``function_name``\ 为\ ``listContracts``.
|
||
|
||
.. _指令示例-4:
|
||
|
||
指令示例
|
||
^^^^^^^^
|
||
|
||
.. code:: bash
|
||
|
||
java -jar yjs.jar listContracts
|