openchain-nodejs-ts-yxl 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +661 -0
- package/README.md +66 -0
- package/_config.yml +1 -0
- package/doc/SDK_CN.md +2003 -0
- package/example/atp10TokenDemo.js +319 -0
- package/example/exchange.js +184 -0
- package/example/offlineSignatureDemo.js +83 -0
- package/example/submitTransactionDemo.js +92 -0
- package/index.d.ts +186 -0
- package/index.js +9 -0
- package/lib/account/index.js +234 -0
- package/lib/blockchain/block.js +380 -0
- package/lib/blockchain/transaction.js +264 -0
- package/lib/common/ctp.js +5 -0
- package/lib/common/operation/accountSetMetadata.js +55 -0
- package/lib/common/operation/accountSetPrivilege.js +90 -0
- package/lib/common/operation/activateAccount.js +58 -0
- package/lib/common/operation/contractCreate.js +72 -0
- package/lib/common/operation/contractInvokeByAsset.js +75 -0
- package/lib/common/operation/contractInvokeByBU.js +53 -0
- package/lib/common/operation/createLog.js +44 -0
- package/lib/common/operation/ctp10TokenApprove.js +59 -0
- package/lib/common/operation/ctp10TokenAssign.js +59 -0
- package/lib/common/operation/ctp10TokenChangeOwner.js +58 -0
- package/lib/common/operation/ctp10TokenIssue.js +78 -0
- package/lib/common/operation/ctp10TokenTransfer.js +59 -0
- package/lib/common/operation/ctp10TokenTransferFrom.js +60 -0
- package/lib/common/operation/issueAsset.js +35 -0
- package/lib/common/operation/payAsset.js +62 -0
- package/lib/common/operation/payCoin.js +44 -0
- package/lib/common/util.js +880 -0
- package/lib/contract/index.js +212 -0
- package/lib/crypto/protobuf/bundle.json +1643 -0
- package/lib/exception/customErrors.js +56 -0
- package/lib/exception/errors.js +240 -0
- package/lib/exception/index.js +8 -0
- package/lib/operation/account.js +193 -0
- package/lib/operation/asset.js +106 -0
- package/lib/operation/bu.js +52 -0
- package/lib/operation/contract.js +184 -0
- package/lib/operation/ctp10Token.js +394 -0
- package/lib/operation/index.js +30 -0
- package/lib/operation/log.js +47 -0
- package/lib/sdk.js +70 -0
- package/lib/token/asset.js +79 -0
- package/lib/token/ctp10Token.js +301 -0
- package/lib/token/index.js +17 -0
- package/lib/util/index.js +86 -0
- package/openchain-sdk-nodejs.iml +9 -0
- package/package.json +39 -0
- package/test/Ctp10Token.test.js +96 -0
- package/test/account.test.js +132 -0
- package/test/accountActivateOperation.test.js +99 -0
- package/test/accountSetMetadata.test.js +102 -0
- package/test/accountSetPrivilege.test.js +66 -0
- package/test/asset.test.js +63 -0
- package/test/assetIssueOperation.test.js +77 -0
- package/test/assetSendOperation.test.js +103 -0
- package/test/blob.test.js +128 -0
- package/test/block.test.js +165 -0
- package/test/buSendOperation.test.js +64 -0
- package/test/contract.test.js +64 -0
- package/test/contractCreateOperation.test.js +41 -0
- package/test/contractCreateTransaction.test.js +116 -0
- package/test/contractInvokeByAssetOperation.test.js +109 -0
- package/test/contractInvokeByBUOperation.test.js +107 -0
- package/test/ctp10TokenApproveOperation.test.js +98 -0
- package/test/ctp10TokenAssignOperation.test.js +99 -0
- package/test/ctp10TokenChangeOwnerOperation.test.js +98 -0
- package/test/ctp10TokenIssueOperation.test.js +40 -0
- package/test/ctp10TokenIssueOperationTransaction.test.js +106 -0
- package/test/ctp10TokenTransferFromOperation.test.js +101 -0
- package/test/ctp10TokenTransferOperation.test.js +98 -0
- package/test/log.transaction.test.js +103 -0
- package/test/transaction.test.js +166 -0
- package/test/util.test.js +93 -0
package/doc/SDK_CN.md
ADDED
@@ -0,0 +1,2003 @@
|
|
1
|
+
|
2
|
+
# openchain-sdk-nodejs
|
3
|
+
|
4
|
+
## 概述
|
5
|
+
本文档简要概述openchain-sdk-nodejs常用接口文档, 让开发者更方便地写入和查询BU区块链。
|
6
|
+
|
7
|
+
- [名词解析](#名词解析)
|
8
|
+
- [请求参数与响应数据格式](#请求参数与响应数据格式)
|
9
|
+
- [请求参数](#请求参数)
|
10
|
+
- [响应数据](#响应数据)
|
11
|
+
- [使用方法](#使用方法)
|
12
|
+
- [生成SDK实例](#生成SDK实例)
|
13
|
+
- [查询](#信息查询)
|
14
|
+
- [提交交易](#提交交易)
|
15
|
+
- [获取账户nonce值](#获取账户nonce值)
|
16
|
+
- [构建操作](#构建操作)
|
17
|
+
- [构建交易Blob](#构建交易blob)
|
18
|
+
- [签名交易](#签名交易)
|
19
|
+
- [广播交易](#广播交易)
|
20
|
+
- [账户服务](#账户服务)
|
21
|
+
- [checkValid](#checkvalid)
|
22
|
+
- [getInfo](#getinfo-账户)
|
23
|
+
- [getNonce](#getnonce)
|
24
|
+
- [getBalance](#getbalance)
|
25
|
+
- [getAssets](#getassets)
|
26
|
+
- [资产服务](#资产服务)
|
27
|
+
- [getInfo](#getinfo-资产)
|
28
|
+
- [交易服务](#交易服务)
|
29
|
+
- [操作说明](#操作说明)
|
30
|
+
- [buildBlob](#buildblob)
|
31
|
+
- [evaluateFee](#evaluateFee)
|
32
|
+
- [sign](#sign)
|
33
|
+
- [submit](#submit)
|
34
|
+
- [getInfo](#getinfo-交易)
|
35
|
+
- [区块服务](#区块服务)
|
36
|
+
- [getNumber](#getnumber)
|
37
|
+
- [checkStatus](#checkstatus)
|
38
|
+
- [getTransactions](#gettransactions)
|
39
|
+
- [getInfo](#getinfo-区块)
|
40
|
+
- [getLatestInfo](#getlatestinfo)
|
41
|
+
- [getValidators](#getvalidators)
|
42
|
+
- [getLatestValidators](#getlatestvalidators)
|
43
|
+
- [getReward](#getreward)
|
44
|
+
- [getLatestReward](#getlatestreward)
|
45
|
+
- [getFees](#getfees)
|
46
|
+
- [getLatestFees](#getlatestfees)
|
47
|
+
- [合约服务](#合约服务)
|
48
|
+
- [getInfo](#getinfo-合约)
|
49
|
+
- [checkValid](#checkvalid-合约)
|
50
|
+
- [getAddress](#getAddress-合约)
|
51
|
+
|
52
|
+
- [工具](#工具)
|
53
|
+
- [utfToHex](#utftohex)
|
54
|
+
- [hexToUtf](#hextoutf)
|
55
|
+
- [buToMo](#butomo)
|
56
|
+
- [moToBu](#motobu)
|
57
|
+
- [错误码](#错误码)
|
58
|
+
|
59
|
+
## 名词解析
|
60
|
+
|
61
|
+
操作BU区块链: 向BU区块链写入或修改数据
|
62
|
+
|
63
|
+
广播交易: 向BU区块链写入或修改数据
|
64
|
+
|
65
|
+
查询BU区块链: 查询BU区块链中的数据
|
66
|
+
|
67
|
+
账户服务: 提供账户相关的有效性校验与查询接口
|
68
|
+
|
69
|
+
资产服务: 提供资产相关的查询接口
|
70
|
+
|
71
|
+
交易服务: 提供操写入BU区块链与查询接口
|
72
|
+
|
73
|
+
区块服务: 提供区块的查询接口
|
74
|
+
|
75
|
+
账户nonce值: 每个账户都维护一个序列号,用于用户提交交易时标识交易执行顺序的
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
## 请求参数与响应数据格式
|
80
|
+
|
81
|
+
### 请求参数
|
82
|
+
|
83
|
+
为了保证数字精度,请求参数中的Number类型,全都按照字符串处理,例如:
|
84
|
+
amount = 500, 那么传递参数时候就将其更改为 amount = '500' 字符串形式
|
85
|
+
|
86
|
+
|
87
|
+
### 响应数据
|
88
|
+
|
89
|
+
响应数据为JavaScript对象,数据格式如下:
|
90
|
+
|
91
|
+
```js
|
92
|
+
{
|
93
|
+
errorCode: 0,
|
94
|
+
errorDesc: '',
|
95
|
+
result: {}
|
96
|
+
}
|
97
|
+
```
|
98
|
+
|
99
|
+
说明:
|
100
|
+
1. errorCode: 错误码。0表示无错误,大于0表示有错误
|
101
|
+
2. errorDesc: 错误描述。
|
102
|
+
3. result: 返回结果
|
103
|
+
|
104
|
+
> 因响应数据结构固定,方便起见,后续接口说明中的`响应数据`均指`result`对象的属性
|
105
|
+
|
106
|
+
|
107
|
+
## SDK安装
|
108
|
+
```
|
109
|
+
npm install openchain-sdk --save
|
110
|
+
```
|
111
|
+
|
112
|
+
## 使用方法
|
113
|
+
|
114
|
+
这里介绍SDK的使用流程,首先需要生成SDK实现,然后调用相应服务的接口,其中服务包括账户服务、资产服务、合约服务、交易服务、区块服务,接口按使用分类分为生成公私钥地址接口、有效性校验接口、查询接口、提交交易相关接口
|
115
|
+
|
116
|
+
### 生成SDK实例
|
117
|
+
##### 传入参数
|
118
|
+
options 是一个对象,可以包含如下属性
|
119
|
+
|
120
|
+
参数 | 类型 | 描述 |
|
121
|
+
----------- | ------------ | ----------------- |
|
122
|
+
host| String | ip地址:端口
|
123
|
+
|
124
|
+
##### 实例:
|
125
|
+
|
126
|
+
```js
|
127
|
+
const OpenChainSDK = require('openchain-sdk');
|
128
|
+
|
129
|
+
const options = {
|
130
|
+
host: 'localhost/node/api',
|
131
|
+
};
|
132
|
+
|
133
|
+
const sdk = new OpenChainSDK(options);
|
134
|
+
|
135
|
+
```
|
136
|
+
|
137
|
+
### 信息查询
|
138
|
+
用于查询BU区块链上的数据,直接调用相应的接口即可,比如,查询账户信息,调用如下:
|
139
|
+
|
140
|
+
```js
|
141
|
+
const address = 'adxSqKcX8wGCMKhzNUBoDWfbeQaMhfnGdtyG2';
|
142
|
+
|
143
|
+
sdk.account.getInfo(address).then(info=> {
|
144
|
+
console.log(info);
|
145
|
+
}).catch(err => {
|
146
|
+
console.log(err.message);
|
147
|
+
});
|
148
|
+
```
|
149
|
+
|
150
|
+
### 提交交易
|
151
|
+
提交交易的过程包括以下几步:获取账户nonce值,构建操作,构建交易Blob,签名交易和广播交易。
|
152
|
+
|
153
|
+
#### 获取账户nonce值
|
154
|
+
|
155
|
+
开发者可自己维护各个账户nonce,在提交完一个交易后,自动递增1,这样可以在短时间内发送多笔交易,否则,必须等上一个交易执行完成后,账户的nonce值才会加1。接口调用如下:
|
156
|
+
|
157
|
+
```js
|
158
|
+
|
159
|
+
const address = 'adxSqKcX8wGCMKhzNUBoDWfbeQaMhfnGdtyG2';
|
160
|
+
|
161
|
+
sdk.account.getNonce(address).then(info => {
|
162
|
+
|
163
|
+
if (info.errorCode !== 0) {
|
164
|
+
console.log(info);
|
165
|
+
return;
|
166
|
+
}
|
167
|
+
|
168
|
+
const nonce = new BigNumber(info.result.nonce).plus(1).toString(10);
|
169
|
+
});
|
170
|
+
|
171
|
+
// 该例子中使用了big-number.js 将nonce的值加1,并返回字符串类型
|
172
|
+
|
173
|
+
```
|
174
|
+
|
175
|
+
#### 构建操作
|
176
|
+
|
177
|
+
这里的操作是指在交易中做的一些动作。 例如:构建发送BU的操作,调用如下:
|
178
|
+
|
179
|
+
```js
|
180
|
+
const destAddress = 'adxSk4rkz84a4fh5xYxfSqmAsnhcWZzrTfG2t';
|
181
|
+
|
182
|
+
const info = sdk.operation.buSendOperation({
|
183
|
+
destAddress,
|
184
|
+
amount: '60000',
|
185
|
+
metadata: '746573742073656e64206275',
|
186
|
+
});
|
187
|
+
|
188
|
+
```
|
189
|
+
|
190
|
+
#### 构建交易Blob
|
191
|
+
|
192
|
+
该接口用于生成交易Blob字符串,接口调用如下:
|
193
|
+
> 注意:nonce、gasPrice、feeLimit其值是只能是包含数字的字符串且不能以0开头
|
194
|
+
>
|
195
|
+
|
196
|
+
```js
|
197
|
+
|
198
|
+
let blobInfo = sdk.transaction.buildBlob({
|
199
|
+
sourceAddress: 'adxSqKcX8wGCMKhzNUBoDWfbeQaMhfnGdtyG2',
|
200
|
+
gasPrice: '3000',
|
201
|
+
feeLimit: '1000',
|
202
|
+
nonce: '102',
|
203
|
+
operations: [ sendBuOperation ],
|
204
|
+
metadata: '74657374206275696c6420626c6f62',
|
205
|
+
});
|
206
|
+
|
207
|
+
const blob = blobInfo.result;
|
208
|
+
|
209
|
+
```
|
210
|
+
|
211
|
+
#### 签名交易
|
212
|
+
|
213
|
+
该接口用于交易发起者使用私钥对交易进行签名。接口调用如下:
|
214
|
+
|
215
|
+
```js
|
216
|
+
const signatureInfo = sdk.transaction.sign({
|
217
|
+
privateKeys: [ privateKey ],
|
218
|
+
blob,
|
219
|
+
});
|
220
|
+
|
221
|
+
const signature = signatureInfo.result;
|
222
|
+
```
|
223
|
+
|
224
|
+
#### 广播交易
|
225
|
+
|
226
|
+
该接口用于向BU区块链发送交易,触发交易的执行。接口调用如下:
|
227
|
+
|
228
|
+
```js
|
229
|
+
sdk.transaction.submit({
|
230
|
+
blob,
|
231
|
+
signature: signature,
|
232
|
+
}).then(data => {
|
233
|
+
console.log(data);
|
234
|
+
});
|
235
|
+
|
236
|
+
```
|
237
|
+
|
238
|
+
## 账户服务
|
239
|
+
|
240
|
+
账户服务主要是账户相关的接口
|
241
|
+
|
242
|
+
|
243
|
+
#### create
|
244
|
+
> 接口说明
|
245
|
+
|
246
|
+
生成公私钥对及地址
|
247
|
+
> 调用方法
|
248
|
+
|
249
|
+
sdk.account.create()
|
250
|
+
|
251
|
+
> 响应数据
|
252
|
+
|
253
|
+
参数 | 类型 | 描述
|
254
|
+
----------- | ------------ | ----------------
|
255
|
+
privateKey | String | 私钥
|
256
|
+
publicKey | String | 公钥
|
257
|
+
address | String | 地址
|
258
|
+
|
259
|
+
|
260
|
+
> 实例:
|
261
|
+
|
262
|
+
```js
|
263
|
+
sdk.account.create().then(result => {
|
264
|
+
console.log(result);
|
265
|
+
}).catch(err => {
|
266
|
+
console.log(err.message);
|
267
|
+
});
|
268
|
+
```
|
269
|
+
|
270
|
+
### checkValid
|
271
|
+
> 接口说明
|
272
|
+
|
273
|
+
该接口用于检测账户地址的有效性
|
274
|
+
|
275
|
+
> 调用方法
|
276
|
+
|
277
|
+
sdk.account.checkValid(address)
|
278
|
+
|
279
|
+
> 请求参数
|
280
|
+
|
281
|
+
参数 | 类型 | 描述
|
282
|
+
----------- | ------------ | ----------------
|
283
|
+
address | String | 待检测的账户地址
|
284
|
+
|
285
|
+
> 响应数据
|
286
|
+
|
287
|
+
参数 | 类型 | 描述
|
288
|
+
----------- | ------------ | ----------------
|
289
|
+
isValid | Boolean | 账户地址是否有效
|
290
|
+
|
291
|
+
> 错误码
|
292
|
+
|
293
|
+
异常 | 错误码 | 描述
|
294
|
+
----------- | ----------- | --------
|
295
|
+
SYSTEM_ERROR | 20000 | System error
|
296
|
+
|
297
|
+
> 示例
|
298
|
+
|
299
|
+
```js
|
300
|
+
const address = 'adxSqKcX8wGCMKhzNUBoDWfbeQaMhfnGdtyG2';
|
301
|
+
|
302
|
+
sdk.account.checkValid(address).then(result => {
|
303
|
+
console.log(result);
|
304
|
+
}).catch(err => {
|
305
|
+
console.log(err.message);
|
306
|
+
});
|
307
|
+
|
308
|
+
```
|
309
|
+
|
310
|
+
### getInfo-账户
|
311
|
+
|
312
|
+
> 接口说明
|
313
|
+
|
314
|
+
该接口用于获取账户信息
|
315
|
+
|
316
|
+
> 调用方法
|
317
|
+
|
318
|
+
sdk.account.getInfo(address);
|
319
|
+
|
320
|
+
> 请求参数
|
321
|
+
|
322
|
+
参数 | 类型 | 描述
|
323
|
+
----------- | ------------ | ----------------
|
324
|
+
address | String | 待检测的账户地址
|
325
|
+
|
326
|
+
|
327
|
+
> 响应数据
|
328
|
+
|
329
|
+
参数 | 类型 | 描述
|
330
|
+
--------- | ------------- | ----------------
|
331
|
+
address | String | 账户地址
|
332
|
+
balance | String | 账户余额
|
333
|
+
nonce | String | 账户交易序列号
|
334
|
+
priv | [Object](#priv) | 账户权限
|
335
|
+
|
336
|
+
#### priv
|
337
|
+
成员 | 类型 | 描述
|
338
|
+
----------- | ------------ | ----------------
|
339
|
+
master_weight | String | 账户自身权重
|
340
|
+
signers |[Object](#signers)| 签名者权重
|
341
|
+
thresholds |[Object](#thresholds)| 门限
|
342
|
+
|
343
|
+
#### signers
|
344
|
+
成员 | 类型 | 描述
|
345
|
+
----------- | ------------ | ----------------
|
346
|
+
address | String | 签名账户地址
|
347
|
+
weight | String | 签名账户权重
|
348
|
+
|
349
|
+
#### thresholds
|
350
|
+
成员 | 类型 | 描述
|
351
|
+
----------- | ------------ | ----------------
|
352
|
+
tx_threshold | String | 交易默认门限
|
353
|
+
type_thresholds|[Object](#type_thresholds)|不同类型交易的门限
|
354
|
+
|
355
|
+
#### type_thresholds
|
356
|
+
成员 | 类型 | 描述
|
357
|
+
----------- | ------------ | ----------------
|
358
|
+
type | String | 操作类型
|
359
|
+
threshold | String | 门限
|
360
|
+
|
361
|
+
|
362
|
+
|
363
|
+
> 错误码
|
364
|
+
|
365
|
+
异常 | 错误码 | 描述
|
366
|
+
----------- | ----------- | --------
|
367
|
+
INVALID_ADDRESS_ERROR| 11006 | Invalid address
|
368
|
+
CONNECTNETWORK_ERROR| 11007| Connect network failed
|
369
|
+
SYSTEM_ERROR | 20000 | System error
|
370
|
+
|
371
|
+
> 示例
|
372
|
+
|
373
|
+
```js
|
374
|
+
const address = 'adxSqKcX8wGCMKhzNUBoDWfbeQaMhfnGdtyG2';
|
375
|
+
|
376
|
+
sdk.account.getInfo(address).then(result => {
|
377
|
+
console.log(result);
|
378
|
+
}).catch(err => {
|
379
|
+
console.log(err.message);
|
380
|
+
});
|
381
|
+
```
|
382
|
+
|
383
|
+
### getNonce
|
384
|
+
|
385
|
+
> 接口说明
|
386
|
+
|
387
|
+
该接口用于获取账户的nonce
|
388
|
+
|
389
|
+
> 调用方法
|
390
|
+
|
391
|
+
sdk.account.getNonce(address);
|
392
|
+
|
393
|
+
> 请求参数
|
394
|
+
|
395
|
+
参数 | 类型 | 描述
|
396
|
+
----------- | ------------ | ----------------
|
397
|
+
address | String | 待检测的账户地址
|
398
|
+
|
399
|
+
> 响应数据
|
400
|
+
|
401
|
+
参数 | 类型 | 描述
|
402
|
+
----------- | ------------ | ----------------
|
403
|
+
nonce | String | 该账户的交易序列号
|
404
|
+
|
405
|
+
> 错误码
|
406
|
+
|
407
|
+
异常 | 错误码 | 描述
|
408
|
+
----------- | ----------- | --------
|
409
|
+
INVALID_ADDRESS_ERROR | 11006 | Invalid address
|
410
|
+
CONNECTNETWORK_ERROR | 11007 | Connect network failed
|
411
|
+
SYSTEM_ERROR | 20000 | System error
|
412
|
+
|
413
|
+
> 示例
|
414
|
+
|
415
|
+
```js
|
416
|
+
|
417
|
+
const address = 'adxSqKcX8wGCMKhzNUBoDWfbeQaMhfnGdtyG2';
|
418
|
+
|
419
|
+
sdk.account.getNonce(address).then(result => {
|
420
|
+
console.log(result);
|
421
|
+
}).catch(err => {
|
422
|
+
console.log(err.message);
|
423
|
+
});
|
424
|
+
|
425
|
+
```
|
426
|
+
|
427
|
+
### getBalance
|
428
|
+
|
429
|
+
> 接口说明
|
430
|
+
|
431
|
+
该接口用于查询账户BU的余额
|
432
|
+
|
433
|
+
> 调用方法
|
434
|
+
|
435
|
+
sdk.account.getBalance(address);
|
436
|
+
|
437
|
+
> 请求参数
|
438
|
+
|
439
|
+
参数 | 类型 | 描述
|
440
|
+
----------- | ------------ | ----------------
|
441
|
+
address | String | 待检测的账户地址
|
442
|
+
|
443
|
+
> 响应数据
|
444
|
+
|
445
|
+
参数 | 类型 | 描述
|
446
|
+
----------- | ------------ | ----------------
|
447
|
+
balance | String | 该账户的余额
|
448
|
+
|
449
|
+
> 错误码
|
450
|
+
|
451
|
+
异常 | 错误码 | 描述
|
452
|
+
----------- | ----------- | --------
|
453
|
+
INVALID_ADDRESS_ERROR| 11006 | Invalid address
|
454
|
+
CONNECTNETWORK_ERROR| 11007| Connect network failed
|
455
|
+
SYSTEM_ERROR | 20000 | System error
|
456
|
+
|
457
|
+
> 示例
|
458
|
+
|
459
|
+
```js
|
460
|
+
|
461
|
+
const address = 'adxSqKcX8wGCMKhzNUBoDWfbeQaMhfnGdtyG2';
|
462
|
+
|
463
|
+
const info = sdk.account.getBalance(address);
|
464
|
+
|
465
|
+
```
|
466
|
+
|
467
|
+
### getAssets
|
468
|
+
|
469
|
+
> 接口说明
|
470
|
+
|
471
|
+
该接口用于获取账户所有资产信息
|
472
|
+
|
473
|
+
> 调用方法
|
474
|
+
|
475
|
+
sdk.account.getAssets(address);
|
476
|
+
|
477
|
+
> 请求参数
|
478
|
+
|
479
|
+
参数 | 类型 | 描述
|
480
|
+
----------- | ------------ | ----------------
|
481
|
+
address | String | 待检测的账户地址
|
482
|
+
|
483
|
+
> 响应数据
|
484
|
+
|
485
|
+
参数 | 类型 | 描述
|
486
|
+
----------- | ------------ | ----------------
|
487
|
+
assets | Array | 账户资产
|
488
|
+
|
489
|
+
> assets 数组元素为Object,其中包含如下属性:
|
490
|
+
|
491
|
+
参数 | 类型 | 描述
|
492
|
+
----------- | ------------ | ----------------
|
493
|
+
amount | String | 账户资产数量
|
494
|
+
key | object | 包含属性: code资产编码、issuer资产发行账户地址
|
495
|
+
|
496
|
+
> 错误码
|
497
|
+
|
498
|
+
异常 | 错误码 | 描述
|
499
|
+
----------- | ----------- | --------
|
500
|
+
INVALID_ADDRESS_ERROR| 11006 | Invalid address
|
501
|
+
CONNECTNETWORK_ERROR| 11007| Connect network failed
|
502
|
+
SYSTEM_ERROR | 20000 | System error
|
503
|
+
|
504
|
+
> 示例
|
505
|
+
|
506
|
+
```js
|
507
|
+
|
508
|
+
sdk.account.getAssets(address).then(result => {
|
509
|
+
console.log(result);
|
510
|
+
}).catch(err => {
|
511
|
+
console.log(err.message);
|
512
|
+
});
|
513
|
+
|
514
|
+
```
|
515
|
+
|
516
|
+
## 资产服务
|
517
|
+
|
518
|
+
账户服务主要是资产相关的接口,目前有1个接口:getAsset
|
519
|
+
|
520
|
+
### getInfo-资产
|
521
|
+
|
522
|
+
> 接口说明
|
523
|
+
|
524
|
+
该接口用于获取账户指定资产信息
|
525
|
+
|
526
|
+
> 调用方法
|
527
|
+
|
528
|
+
sdk.token.asset.getInfo(args);
|
529
|
+
|
530
|
+
> 请求参数args为Object其中包含如下属性
|
531
|
+
|
532
|
+
参数 | 类型 | 描述
|
533
|
+
----------- | ------------ | ----------------
|
534
|
+
address | String | 必填,待查询的账户地址
|
535
|
+
code | String | 必填,资产编码,长度[1 1024]
|
536
|
+
issuer | String | 必填,资产发行账户地址
|
537
|
+
|
538
|
+
> 响应数据
|
539
|
+
|
540
|
+
参数 | 类型 | 描述
|
541
|
+
----------- | ------------ | ----------------
|
542
|
+
asset | Array | 账户资产
|
543
|
+
|
544
|
+
> assets 数组元素为Object,其中包含如下属性:
|
545
|
+
|
546
|
+
参数 | 类型 | 描述
|
547
|
+
----------- | ------------ | ----------------
|
548
|
+
amount | String | 账户资产数量
|
549
|
+
key | object | 包含属性: code资产编码、issuer资产发行账户地址
|
550
|
+
|
551
|
+
> 错误码
|
552
|
+
|
553
|
+
异常 | 错误码 | 描述 |
|
554
|
+
---------------------- | ----------- | -------- |
|
555
|
+
INVALID_ADDRESS_ERROR | 11006 | Invalid address
|
556
|
+
CONNECTNETWORK_ERROR | 11007 | Connect network failed
|
557
|
+
INVALID_ASSET_CODE_ERROR | 11023 | The length of asset code must between 1 and 1024
|
558
|
+
INVALID_ISSUER_ADDRESS_ERROR | 11027 | Invalid issuer address
|
559
|
+
SYSTEM_ERROR | 20000 | System error
|
560
|
+
|
561
|
+
> 示例
|
562
|
+
|
563
|
+
```js
|
564
|
+
|
565
|
+
const args = {
|
566
|
+
address: 'adxSqKcX8wGCMKhzNUBoDWfbeQaMhfnGdtyG2',
|
567
|
+
code: 'TST',
|
568
|
+
issuer: 'adxSqKcX8wGCMKhzNUBoDWfbeQaMhfnGdtyG2',
|
569
|
+
};
|
570
|
+
|
571
|
+
|
572
|
+
sdk.token.asset.getInfo(args).then(data => {
|
573
|
+
console.log(data);
|
574
|
+
});
|
575
|
+
|
576
|
+
|
577
|
+
```
|
578
|
+
|
579
|
+
|
580
|
+
## 交易服务
|
581
|
+
|
582
|
+
交易服务主要是交易相关的接口,目前有5个接口:buildBlob, evaluateFee, sign, submit, getInfo。
|
583
|
+
|
584
|
+
其中调用buildBlob之前需要构建一些操作,分别包括如下操作:
|
585
|
+
|
586
|
+
### 操作说明
|
587
|
+
|
588
|
+
##### 激活账户
|
589
|
+
|
590
|
+
> 调用方式: sdk.operation.accountActivateOperation(args)
|
591
|
+
>
|
592
|
+
> 参数说明: args为Object,其中包含如下属性
|
593
|
+
|
594
|
+
|
595
|
+
成员变量 | 类型 | 描述 |
|
596
|
+
------------- | -------- | ---------------------------------- |
|
597
|
+
sourceAddress | String | 选填,操作源账户
|
598
|
+
metadata | String | 选填,备注
|
599
|
+
destAddress | String | 必填,目标账户地址
|
600
|
+
initBalance | String | 必填,初始化资产,其值只能是包含数字的字符串且不能以0开头, 值范围[1, max(int64)] (单位是MO)
|
601
|
+
> 1 BU = 10^8 MO
|
602
|
+
|
603
|
+
> 返回值
|
604
|
+
|
605
|
+
成员变量 | 类型 | 描述 |
|
606
|
+
--------- | -------- | ---------------------------------- |
|
607
|
+
operation | Object | 激活账户操作对象
|
608
|
+
|
609
|
+
> 错误码
|
610
|
+
|
611
|
+
异常 | 错误码 | 描述 |
|
612
|
+
--------- | -------- | ---------------------------------- |
|
613
|
+
INVALID_SOURCEADDRESS_ERROR | 11002 | Invalid sourceAddress
|
614
|
+
INVALID_DESTADDRESS_ERROR | 11003 | Invalid destAddress
|
615
|
+
INVALID_INITBALANCE_ERROR | 11004 | InitBalance must between 1 and max(int64)
|
616
|
+
SOURCEADDRESS_EQUAL_DESTADDRESS_ERROR | 11005 | SourceAddress cannot be equal to destAddress
|
617
|
+
INVALID_METADATA_ERROR | 15028 | Invalid metadata
|
618
|
+
SYSTEM_ERROR | 20000 | System error
|
619
|
+
|
620
|
+
##### 设置账户metadata消息
|
621
|
+
|
622
|
+
> 调用方式: sdk.operation.accountSetMetadataOperation(args)
|
623
|
+
>
|
624
|
+
> 参数说明: args为Object,其中包含如下属性
|
625
|
+
|
626
|
+
|
627
|
+
成员变量 | 类型 | 描述 |
|
628
|
+
------------- | -------- | ---------------------------------- |
|
629
|
+
sourceAddress | String | 选填,发起该操作的源账户地址
|
630
|
+
key | String | 必填,metadata的关键词,长度[1, 1024]
|
631
|
+
value | String | 必填,metadata的内容,长度[0, 256000]
|
632
|
+
version | String | 选填,metadata的版本
|
633
|
+
deleteFlag | boolean | 选填,是否删除metadata
|
634
|
+
metadata | String |选填,备注
|
635
|
+
|
636
|
+
> 返回值
|
637
|
+
|
638
|
+
成员变量 | 类型 | 描述 |
|
639
|
+
--------- | -------- | ---------------------------------- |
|
640
|
+
operation | Object | 操作对象
|
641
|
+
|
642
|
+
> 错误码
|
643
|
+
|
644
|
+
异常 | 错误码 | 描述 |
|
645
|
+
--------- | -------- | ---------------------------------- |
|
646
|
+
INVALID_SOURCEADDRESS_ERROR | 11002 | Invalid sourceAddress
|
647
|
+
INVALID_DATAKEY_ERROR | 11011 | The length of key must between 1 and 1024
|
648
|
+
INVALID_DATAVALUE_ERROR | 11012 | The length of value must between 0 and 256000
|
649
|
+
INVALID_DATAVERSION_ERROR | 11013 | The version must be equal to or greater than 0
|
650
|
+
SYSTEM_ERROR | 20000 | System error
|
651
|
+
|
652
|
+
|
653
|
+
##### 设置账户权限
|
654
|
+
|
655
|
+
> 调用方式: sdk.operation.accountSetPrivilegeOperation(args)
|
656
|
+
>
|
657
|
+
> 参数说明: args为Object,其中包含如下属性
|
658
|
+
|
659
|
+
|
660
|
+
成员变量 | 类型 | 描述 |
|
661
|
+
------------- | -------- | ---------------------------------- |
|
662
|
+
sourceAddress |String | 选填,发起该操作的源账户地址
|
663
|
+
masterWeight | String | 选填,账户自身权重,大小[0, max(uint32)]
|
664
|
+
txThreshold | String | 选填,交易门限,大小[0, max(int64)]
|
665
|
+
metadata | String | 选填,备注
|
666
|
+
Signer | Array | 选填,签名者权重列表
|
667
|
+
typeThresholds | Array | 选填,指定类型交易门限
|
668
|
+
|
669
|
+
|
670
|
+
>
|
671
|
+
> Signer 中的元素为对象
|
672
|
+
>
|
673
|
+
|
674
|
+
成员变量 | 类型 | 描述 |
|
675
|
+
------------- | -------- | ---------------------------------- |
|
676
|
+
address | String | 选填,签名账户地址
|
677
|
+
weight | String | 选填,签名账户权重,大小[0, max(uint32)]
|
678
|
+
|
679
|
+
|
680
|
+
>
|
681
|
+
> typeThresholds 中的元素为对象
|
682
|
+
>
|
683
|
+
|
684
|
+
成员变量 | 类型 | 描述 |
|
685
|
+
------------- | -------- | ---------------------------------- |
|
686
|
+
type | String | 选填,操作类型,大小[1, 100]
|
687
|
+
threshold | String | 选填,门限,大小[0, max(int64)]
|
688
|
+
|
689
|
+
|
690
|
+
> 返回值
|
691
|
+
|
692
|
+
成员变量 | 类型 | 描述 |
|
693
|
+
--------- | -------- | ---------------------------------- |
|
694
|
+
operation | Object | 操作对象
|
695
|
+
|
696
|
+
> 错误码
|
697
|
+
|
698
|
+
异常 | 错误码 | 描述 |
|
699
|
+
--------- | -------- | ---------------------------------- |
|
700
|
+
INVALID_SOURCEADDRESS_ERROR |11002 | Invalid sourceAddress
|
701
|
+
INVALID_MASTERWEIGHT_ERROR | 11015 | MasterWeight must between 0 and max(uint32)
|
702
|
+
INVALID_SIGNER_ADDRESS_ERROR | 11016 | Invalid signer address
|
703
|
+
INVALID_SIGNER_WEIGHT_ERROR |11017 | Signer weight must between 0 and max(uint32)
|
704
|
+
INVALID_TX_THRESHOLD_ERROR | 11018 | TxThreshold must between 0 and max(int64)
|
705
|
+
INVALID_OPERATION_TYPE_ERROR |11019 | Type of typeThreshold is invalid
|
706
|
+
INVALID_TYPE_THRESHOLD_ERROR | 11020 | TypeThreshold must between 0 and max(int64)
|
707
|
+
SYSTEM_ERROR | 20000 | System error
|
708
|
+
|
709
|
+
|
710
|
+
##### 发送BU
|
711
|
+
> 调用方式: sdk.operation.buSendOperation(args)
|
712
|
+
>
|
713
|
+
> 参数说明: args为Object,其中包含如下属性
|
714
|
+
|
715
|
+
|
716
|
+
成员变量 | 类型 | 描述 |
|
717
|
+
------------- | -------- | ---------------------------------- |
|
718
|
+
sourceAddress | String | 选填,操作源账户
|
719
|
+
metadata | String | 选填,备注
|
720
|
+
destAddress | String | 必填,目标账户地址
|
721
|
+
buAmount | String | 必填,初始化资产,其值只能是包含数字的字符串且不能以0开头, 值范围[1, max(int64)] (单位是MO)
|
722
|
+
|
723
|
+
> 返回值
|
724
|
+
|
725
|
+
成员变量 | 类型 | 描述 |
|
726
|
+
--------- | -------- | ---------------------------------- |
|
727
|
+
operation | Object | 发送BU操作对象
|
728
|
+
|
729
|
+
> 错误码
|
730
|
+
|
731
|
+
异常 | 错误码 | 描述 |
|
732
|
+
--------- | -------- | ---------------------------------- |
|
733
|
+
INVALID_SOURCEADDRESS_ERROR | 11002 | Invalid sourceAddress
|
734
|
+
INVALID_DESTADDRESS_ERROR | 11003 | Invalid destAddress
|
735
|
+
SOURCEADDRESS_EQUAL_DESTADDRESS_ERROR | 11005 | SourceAddress cannot be equal to destAddress
|
736
|
+
INVALID_BU_AMOUNT_ERROR | 11026 | BuAmount must between 1 and max(int64)
|
737
|
+
INVALID_ISSUER_ADDRESS_ERROR | 11027 | Invalid issuer address
|
738
|
+
SYSTEM_ERROR | 20000 | System error
|
739
|
+
|
740
|
+
|
741
|
+
##### 发布资产
|
742
|
+
> 调用方式: sdk.operation.assetIssueOperation(args)
|
743
|
+
>
|
744
|
+
> 参数说明: args为Object,其中包含如下属性
|
745
|
+
|
746
|
+
|
747
|
+
成员变量 | 类型 | 描述 |
|
748
|
+
------------- | -------- | ---------------------------------- |
|
749
|
+
sourceAddress | String | 选填,操作源账户
|
750
|
+
metadata | String | 选填,备注
|
751
|
+
code | String | 必填,资产编码
|
752
|
+
assetAmount | String | 必填,资产发布数量,其值只能是包含数字的字符串且不能以0开头, 值范围[1, max(int64)] (单位是MO)
|
753
|
+
|
754
|
+
> 返回值
|
755
|
+
|
756
|
+
成员变量 | 类型 | 描述 |
|
757
|
+
--------- | -------- | ---------------------------------- |
|
758
|
+
operation | Object | 发布资产操作对象
|
759
|
+
|
760
|
+
> 错误码
|
761
|
+
|
762
|
+
异常 | 错误码 | 描述 |
|
763
|
+
--------- | -------- | ---------------------------------- |
|
764
|
+
INVALID_SOURCEADDRESS_ERROR | 11002 | Invalid sourceAddress
|
765
|
+
INVALID_ASSET_CODE_ERROR | 11023 |The length of key must between 1 and 1024
|
766
|
+
INVALID_ASSET_AMOUNT_ERROR | 11024 | AssetAmount must between 1 and max(int64)
|
767
|
+
SYSTEM_ERROR | 20000 | System error
|
768
|
+
|
769
|
+
|
770
|
+
|
771
|
+
##### 转移资产
|
772
|
+
> 调用方式: sdk.operation.assetSendOperation(args)
|
773
|
+
>
|
774
|
+
> 参数说明: args为Object,其中包含如下属性
|
775
|
+
|
776
|
+
|
777
|
+
成员变量 | 类型 | 描述 |
|
778
|
+
------------- | -------- | ---------------------------------- |
|
779
|
+
sourceAddress | String | 选填,操作源账户
|
780
|
+
metadata | String | 选填,备注
|
781
|
+
destAddress | String | 必填,目标账户地址
|
782
|
+
code | String | 必填,资产编码
|
783
|
+
issuer | String | 必填,资产发行账户地址
|
784
|
+
assetAmount | String | 必填,资产转移数量,其值只能是包含数字的字符串且不能以0开头, 值范围[1, max(int64)] (单位是MO)
|
785
|
+
|
786
|
+
> 返回值
|
787
|
+
|
788
|
+
成员变量 | 类型 | 描述 |
|
789
|
+
--------- | -------- | ---------------------------------- |
|
790
|
+
operation | Object | 转移资产操作对象
|
791
|
+
|
792
|
+
> 错误码
|
793
|
+
|
794
|
+
异常 | 错误码 | 描述 |
|
795
|
+
--------- | -------- | ---------------------------------- |
|
796
|
+
INVALID_SOURCEADDRESS_ERROR |11002 | Invalid sourceAddress
|
797
|
+
INVALID_DESTADDRESS_ERROR | 11003 | Invalid destAddress
|
798
|
+
SOURCEADDRESS_EQUAL_DESTADDRESS_ERROR | 11005 | SourceAddress cannot be equal to destAddress
|
799
|
+
INVALID_ASSET_CODE_ERROR | 11023 | The length of asset code must between 1 and 1024
|
800
|
+
INVALID_ASSET_AMOUNT_ERROR | 11024 | AssetAmount must between 1 and max(int64)
|
801
|
+
INVALID_ISSUER_ADDRESS_ERROR | 11027 | Invalid issuer address
|
802
|
+
SYSTEM_ERROR |20000 | System error
|
803
|
+
|
804
|
+
|
805
|
+
##### 创建合约
|
806
|
+
> 调用方式: sdk.operation.contractCreateOperation(args)
|
807
|
+
>
|
808
|
+
> 参数说明: args为Object,其中包含如下属性
|
809
|
+
|
810
|
+
|
811
|
+
成员变量 | 类型 | 描述 |
|
812
|
+
------------- | -------- | ---------------------------------- |
|
813
|
+
initBalance | String | 必填,给合约账户的初始化资产,大小[1, max(64)]
|
814
|
+
payload | String | 必填,合约代码
|
815
|
+
sourceAddress | String | 选填,操作源账户
|
816
|
+
metadata | String | 选填,备注
|
817
|
+
|
818
|
+
|
819
|
+
> 返回值
|
820
|
+
|
821
|
+
成员变量 | 类型 | 描述 |
|
822
|
+
--------- | -------- | ---------------------------------- |
|
823
|
+
operation | Object | 合约创建操作对象
|
824
|
+
|
825
|
+
> 错误码
|
826
|
+
|
827
|
+
异常 | 错误码 | 描述 |
|
828
|
+
--------- | -------- | ---------------------------------- |
|
829
|
+
INVALID_SOURCEADDRESS_ERROR |11002 |Invalid sourceAddress
|
830
|
+
INVALID_INITBALANCE_ERROR |11004 | InitBalance must between 1 and max(int64)
|
831
|
+
PAYLOAD_EMPTY_ERROR |11044 |Payload must be a non-empty string
|
832
|
+
SYSTEM_ERROR |20000 | System error
|
833
|
+
|
834
|
+
|
835
|
+
##### 资产转移并触发合约,或仅触发合约
|
836
|
+
> 调用方式: sdk.operation.contractInvokeByAssetOperation(args)
|
837
|
+
>
|
838
|
+
> 该方法为Promise
|
839
|
+
>
|
840
|
+
> 参数说明: args为Object,其中包含如下属性
|
841
|
+
|
842
|
+
|
843
|
+
成员变量 | 类型 | 描述 |
|
844
|
+
------------- | -------- | ---------------------------------- |
|
845
|
+
contractAddress | String | 必填,合约账户地址
|
846
|
+
sourceAddress | String | 选填,发起该操作的源账户地址
|
847
|
+
code | String |选填,资产编码,长度[0, 1024],当为null时,仅触发合约
|
848
|
+
issuer |String | 选填,资产发行账户地址,当为null时,仅触发合约
|
849
|
+
assetAmount | String | 选填资产数量,大小[0, max(int64)],当是0时,仅触发合约
|
850
|
+
input |String | 选填,待触发的合约的main()入参
|
851
|
+
metadata |String | 选填,备注
|
852
|
+
|
853
|
+
|
854
|
+
> 返回值
|
855
|
+
|
856
|
+
成员变量 | 类型 | 描述 |
|
857
|
+
--------- | -------- | ---------------------------------- |
|
858
|
+
operation | Object | 资产转移并触发合约操作对象
|
859
|
+
|
860
|
+
> 错误码
|
861
|
+
|
862
|
+
异常 | 错误码 | 描述 |
|
863
|
+
--------- | -------- | ---------------------------------- |
|
864
|
+
INVALID_SOURCEADDRESS_ERROR | 11002 |Invalid sourceAddress
|
865
|
+
INVALID_CONTRACTADDRESS_ERROR | 11037 | Invalid contract address
|
866
|
+
CONTRACTADDRESS_NOT_CONTRACTACCOUNT_ERROR |11038 | ContractAddress is not a contract account
|
867
|
+
SOURCEADDRESS_EQUAL_CONTRACTADDRESS_ERROR |11040 |SourceAddress cannot be equal to contractAddress
|
868
|
+
INVALID_ASSET_CODE_ERROR |11023 |The length of asset code must between 0 and 1024
|
869
|
+
INVALID_CONTRACT_ASSET_AMOUNT_ERROR | 15031 | AssetAmount must between 0 and max(int64)
|
870
|
+
INVALID_ISSUER_ADDRESS_ERROR |11027 | Invalid issuer address
|
871
|
+
INVALID_INPUT_ERROR | 15028 | Invalid input
|
872
|
+
SYSTEM_ERROR |20000 | System error
|
873
|
+
|
874
|
+
##### BU资产的发送和触发合约,或仅触发合约
|
875
|
+
> 调用方式: sdk.operation.contractInvokeByBUOperation(args)
|
876
|
+
>
|
877
|
+
> 该方法为Promise
|
878
|
+
>
|
879
|
+
> 参数说明: args为Object,其中包含如下属性
|
880
|
+
|
881
|
+
|
882
|
+
成员变量 | 类型 | 描述 |
|
883
|
+
------------- | -------- | ---------------------------------- |
|
884
|
+
contractAddress |String | 必填,合约账户地址
|
885
|
+
sourceAddress | String | 选填,发起该操作的源账户地址
|
886
|
+
buAmount | String | 选填,资产发行数量,大小[0, max(int64)],当0时仅触发合约
|
887
|
+
input |String | 选填,待触发的合约的main()入参
|
888
|
+
metadata |String | 选填,备注
|
889
|
+
|
890
|
+
|
891
|
+
> 返回值
|
892
|
+
|
893
|
+
成员变量 | 类型 | 描述 |
|
894
|
+
--------- | -------- | ---------------------------------- |
|
895
|
+
operation | Object | BU资产的发送和触发合约操作对象
|
896
|
+
|
897
|
+
> 错误码
|
898
|
+
|
899
|
+
异常 | 错误码 | 描述 |
|
900
|
+
--------- | -------- | ---------------------------------- |
|
901
|
+
INVALID_SOURCEADDRESS_ERROR | 11002 | Invalid sourceAddress
|
902
|
+
INVALID_CONTRACTADDRESS_ERROR | 11037 | Invalid contract address
|
903
|
+
CONTRACTADDRESS_NOT_CONTRACTACCOUNT_ERROR | 11038 | ContractAddress is not a contract account
|
904
|
+
SOURCEADDRESS_EQUAL_CONTRACTADDRESS_ERROR | 11040 | SourceAddress cannot be equal to contractAddress
|
905
|
+
INVALID_CONTRACT_BU_AMOUNT_ERROR | 15030 | BuAmount must between 0 and max(int64)
|
906
|
+
INVALID_INPUT_ERROR | 15028 | Invalid input
|
907
|
+
SYSTEM_ERROR |20000 |System error
|
908
|
+
|
909
|
+
##### 在区块链上写日志信息
|
910
|
+
> 调用方式: sdk.operation.logCreateOperation(args)
|
911
|
+
>
|
912
|
+
> 参数说明: args为Object,其中包含如下属性
|
913
|
+
|
914
|
+
|
915
|
+
成员变量 | 类型 | 描述 |
|
916
|
+
------------- | -------- | ---------------------------------- |
|
917
|
+
sourceAddress |String |选填,发起该操作的源账户地址
|
918
|
+
topic |String |必填,日志主题,长度[1, 128]
|
919
|
+
data | String | 必填,日志内容,每个字符串长度[1, 1024]
|
920
|
+
metadata |String | 选填,备注
|
921
|
+
|
922
|
+
|
923
|
+
> 返回值
|
924
|
+
|
925
|
+
成员变量 | 类型 | 描述 |
|
926
|
+
--------- | -------- | ---------------------------------- |
|
927
|
+
operation | Object | 在区块链上写日志信息的操作对象
|
928
|
+
|
929
|
+
> 错误码
|
930
|
+
|
931
|
+
异常 | 错误码 | 描述 |
|
932
|
+
--------- | -------- | ---------------------------------- |
|
933
|
+
INVALID_SOURCEADDRESS_ERROR | 11002 | Invalid sourceAddress
|
934
|
+
INVALID_LOG_TOPIC_ERROR |11045 | The length of key must between 1 and 128
|
935
|
+
INVALID_LOG_DATA_ERROR | 11046 | The length of value must between 1 and 1024
|
936
|
+
SYSTEM_ERROR |20000 | System error
|
937
|
+
|
938
|
+
|
939
|
+
### buildBlob
|
940
|
+
|
941
|
+
> 接口说明
|
942
|
+
|
943
|
+
该接口用于生成交易Blob字符串
|
944
|
+
|
945
|
+
> 调用方法
|
946
|
+
|
947
|
+
sdk.transaction.buildBlob(args)
|
948
|
+
|
949
|
+
> 请求参数args为Object, 其中包含如下属性:
|
950
|
+
|
951
|
+
|
952
|
+
参数 | 类型 | 描述 |
|
953
|
+
----------- | ------------ | ---------------- |
|
954
|
+
sourceAddress | String | 必填,操作源账户
|
955
|
+
gasPrice | String | 必填,打包费用 (单位是MO)
|
956
|
+
feeLimit | String | 必填,交易费用 (单位是MO)
|
957
|
+
nonce | String | 必填,交易序列号
|
958
|
+
operations | Array | 必填,操作
|
959
|
+
ceilLedgerSeq | String | 选填,区块高度限制
|
960
|
+
metadata | String | 选填,备注
|
961
|
+
|
962
|
+
> gasPrice、feeLimit、nonce、ceilLedgerSeq其值只能是包含数字的字符串且不能以0开头
|
963
|
+
> 响应数据
|
964
|
+
|
965
|
+
参数 | 类型 | 描述 |
|
966
|
+
----------- | ------------ | ---------------- |
|
967
|
+
transactionBlob | String | Transaction序列化后的16进制字符串
|
968
|
+
|
969
|
+
> 错误码
|
970
|
+
|
971
|
+
异常 | 错误码 | 描述 |
|
972
|
+
----------- | ----------- | -------- |
|
973
|
+
INVALID_SOURCEADDRESS_ERROR | 11002 | Invalid sourceAddress
|
974
|
+
INVALID_NONCE_ERROR | 11048 | Nonce must between 1 and max(int64)
|
975
|
+
INVALID_GASPRICE_ERROR | 11049 | GasPrice must be between 1 and max(int64)
|
976
|
+
INVALID_FEELIMIT_ERROR | 11050 | FeeLimit must be between 1 and max(int64)
|
977
|
+
INVALID_CEILLEDGERSEQ_ERROR | 11052 | CeilLedgerSeq must be equal to or greater than 0
|
978
|
+
INVALID_METADATA_ERROR | 15028 | Invalid metadata
|
979
|
+
SYSTEM_ERROR | 20000 | System error
|
980
|
+
> 示例
|
981
|
+
|
982
|
+
```js
|
983
|
+
const args = {
|
984
|
+
sourceAddress,
|
985
|
+
gasPrice,
|
986
|
+
feeLimit,
|
987
|
+
nonce,
|
988
|
+
operations: [ sendBuOperation ],
|
989
|
+
metadata: '6f68206d79207478',
|
990
|
+
};
|
991
|
+
const blobInfo = sdk.transaction.buildBlob(args);
|
992
|
+
|
993
|
+
```
|
994
|
+
|
995
|
+
### evaluateFee
|
996
|
+
|
997
|
+
> 接口说明
|
998
|
+
|
999
|
+
该接口实现交易的费用评估
|
1000
|
+
|
1001
|
+
> 调用方法
|
1002
|
+
|
1003
|
+
sdk.transaction.evaluateFee(args)
|
1004
|
+
|
1005
|
+
> 请求参数args为Object, 包含如下属性
|
1006
|
+
|
1007
|
+
参数 | 类型 | 描述 |
|
1008
|
+
----------- | ------------ | ---------------- |
|
1009
|
+
sourceAddress | String | 必填,发起该操作的源账户地址
|
1010
|
+
nonce | String | 必填,待发起的交易序列号
|
1011
|
+
operations | Array | 必填,待提交的操作列表
|
1012
|
+
signtureNumber | String | 选填,待签名者的数量,默认是1
|
1013
|
+
metadata | String | 选填,备注
|
1014
|
+
|
1015
|
+
> 响应数据
|
1016
|
+
|
1017
|
+
参数 | 类型 | 描述 |
|
1018
|
+
----------- | ------------ | ---------------- |
|
1019
|
+
gasPrice | String | 打包费用
|
1020
|
+
feeLimit | String | 交易费用
|
1021
|
+
|
1022
|
+
> 错误码
|
1023
|
+
|
1024
|
+
异常 | 错误码 | 描述 |
|
1025
|
+
----------- | ----------- | -------- |
|
1026
|
+
INVALID_NONCE_ERROR | 11048 | Nonce must between 1 and max(int64)
|
1027
|
+
INVALID_ARGUMENTS | 15016 | Invalid arguments to the function
|
1028
|
+
SYSTEM_ERROR | 20000 | System error
|
1029
|
+
|
1030
|
+
> 示例
|
1031
|
+
|
1032
|
+
```js
|
1033
|
+
const args = {
|
1034
|
+
sourceAddress: 'adxSqKcX8wGCMKhzNUBoDWfbeQaMhfnGdtyG2',
|
1035
|
+
nonce: '101',
|
1036
|
+
operations: [sendBuOperation],
|
1037
|
+
signtureNumber: '1',
|
1038
|
+
metadata: '54657374206576616c756174696f6e20666565',
|
1039
|
+
};
|
1040
|
+
|
1041
|
+
sdk.transaction.evaluateFee(args).then(data => {
|
1042
|
+
console.log(data);
|
1043
|
+
});
|
1044
|
+
|
1045
|
+
|
1046
|
+
```
|
1047
|
+
|
1048
|
+
### sign
|
1049
|
+
|
1050
|
+
> 接口说明
|
1051
|
+
|
1052
|
+
该接口实现交易的签名
|
1053
|
+
|
1054
|
+
> 调用方法
|
1055
|
+
|
1056
|
+
sdk.transaction.sign(args)
|
1057
|
+
|
1058
|
+
> 请求参数args为Object, 包含如下属性
|
1059
|
+
|
1060
|
+
参数 | 类型 | 描述 |
|
1061
|
+
----------- | ------------ | ---------------- |
|
1062
|
+
privateKeys | Array | 必填,私钥列表
|
1063
|
+
blob | String | 必填,待签名blob
|
1064
|
+
|
1065
|
+
|
1066
|
+
> 响应数据
|
1067
|
+
|
1068
|
+
参数 | 类型 | 描述 |
|
1069
|
+
----------- | ------------ | ---------------- |
|
1070
|
+
signatures | Array | 签名后的数据列表
|
1071
|
+
|
1072
|
+
> signatures元素为object, 其中包含如下属性
|
1073
|
+
|
1074
|
+
参数 | 类型 | 描述 |
|
1075
|
+
----------- | ------------ | ---------------- |
|
1076
|
+
signData | String | 签名后的数据列表
|
1077
|
+
publicKey | String | 公钥
|
1078
|
+
|
1079
|
+
|
1080
|
+
> 错误码
|
1081
|
+
|
1082
|
+
异常 | 错误码 | 描述 |
|
1083
|
+
----------- | ----------- | -------- |
|
1084
|
+
INVALID_BLOB_ERROR | 11056 | Invalid blob
|
1085
|
+
PRIVATEKEY_ONE_ERROR | 11058 | One of privateKeys is invalid
|
1086
|
+
SYSTEM_ERROR | 20000 | System error
|
1087
|
+
|
1088
|
+
> 示例
|
1089
|
+
|
1090
|
+
```js
|
1091
|
+
const signatureInfo = sdk.transaction.sign({
|
1092
|
+
privateKeys: [ privateKey ],
|
1093
|
+
blob,
|
1094
|
+
});
|
1095
|
+
|
1096
|
+
console.log(signatureInfo);
|
1097
|
+
|
1098
|
+
```
|
1099
|
+
|
1100
|
+
### submit
|
1101
|
+
|
1102
|
+
> 接口说明
|
1103
|
+
|
1104
|
+
该接口实现交易的提交
|
1105
|
+
|
1106
|
+
> 调用方法
|
1107
|
+
|
1108
|
+
sdk.transaction.submit(args)
|
1109
|
+
|
1110
|
+
> 请求参数args为Object, 包含如下属性
|
1111
|
+
|
1112
|
+
|
1113
|
+
|
1114
|
+
参数 | 类型 | 描述 |
|
1115
|
+
----------- | ------------ | ---------------- |
|
1116
|
+
blob | String | 必填,交易blob
|
1117
|
+
signature | Array | 必填,签名列表
|
1118
|
+
|
1119
|
+
|
1120
|
+
> 响应数据
|
1121
|
+
|
1122
|
+
参数 | 类型 | 描述 |
|
1123
|
+
----------- | ------------ | ---------------- |
|
1124
|
+
hash | String | 交易hash
|
1125
|
+
|
1126
|
+
|
1127
|
+
|
1128
|
+
> 错误码
|
1129
|
+
|
1130
|
+
异常 | 错误码 | 描述 |
|
1131
|
+
----------- | ----------- | -------- |
|
1132
|
+
INVALID_BLOB_ERROR | 11056 | Invalid blob
|
1133
|
+
INVALID_SIGNATURE_ERROR | 15027 | Invalid signature
|
1134
|
+
SYSTEM_ERROR | 20000 | System error
|
1135
|
+
|
1136
|
+
> 示例
|
1137
|
+
|
1138
|
+
```js
|
1139
|
+
let transactionInfo = yield sdk.transaction.submit({
|
1140
|
+
blob: blob,
|
1141
|
+
signature: signature,
|
1142
|
+
});
|
1143
|
+
|
1144
|
+
```
|
1145
|
+
## 区块服务
|
1146
|
+
|
1147
|
+
### getNumber
|
1148
|
+
|
1149
|
+
> 接口说明
|
1150
|
+
|
1151
|
+
查询最新的区块高度
|
1152
|
+
|
1153
|
+
> 调用方法
|
1154
|
+
|
1155
|
+
sdk.block.getNumber()
|
1156
|
+
|
1157
|
+
|
1158
|
+
> 响应数据
|
1159
|
+
|
1160
|
+
参数 | 类型 | 描述 |
|
1161
|
+
----------- | ------------ | ---------------- |
|
1162
|
+
header | Object | 区块头
|
1163
|
+
blockNumber | String | 最新的区块高度
|
1164
|
+
|
1165
|
+
> 错误码
|
1166
|
+
|
1167
|
+
异常 | 错误码 | 描述 |
|
1168
|
+
----------- | ----------- | -------- |
|
1169
|
+
SYSTEM_ERROR | 20000 | System error
|
1170
|
+
|
1171
|
+
> 示例
|
1172
|
+
|
1173
|
+
```js
|
1174
|
+
sdk.block.getNumber().then((result) => {
|
1175
|
+
console.log(result);
|
1176
|
+
}).catch((err) => {
|
1177
|
+
console.log(err.message);
|
1178
|
+
});
|
1179
|
+
|
1180
|
+
```
|
1181
|
+
|
1182
|
+
### checkStatus
|
1183
|
+
|
1184
|
+
> 接口说明
|
1185
|
+
|
1186
|
+
检查本地节点区块是否同步完成
|
1187
|
+
|
1188
|
+
> 调用方法
|
1189
|
+
|
1190
|
+
sdk.block.checkStatus()
|
1191
|
+
|
1192
|
+
|
1193
|
+
> 响应数据
|
1194
|
+
|
1195
|
+
参数 | 类型 | 描述 |
|
1196
|
+
----------- | ------------ | ---------------- |
|
1197
|
+
isSynchronous | boolean | 区块是否同步
|
1198
|
+
|
1199
|
+
> 错误码
|
1200
|
+
|
1201
|
+
异常 | 错误码 | 描述 |
|
1202
|
+
----------- | ----------- | -------- |
|
1203
|
+
SYSTEM_ERROR | 20000 | System error
|
1204
|
+
|
1205
|
+
> 示例
|
1206
|
+
|
1207
|
+
```js
|
1208
|
+
|
1209
|
+
sdk.block.checkStatus().then((result) => {
|
1210
|
+
console.log(result);
|
1211
|
+
}).catch((err) => {
|
1212
|
+
console.log(err.message);
|
1213
|
+
});
|
1214
|
+
|
1215
|
+
```
|
1216
|
+
|
1217
|
+
### getTransactions
|
1218
|
+
|
1219
|
+
> 接口说明
|
1220
|
+
|
1221
|
+
查询指定区块高度下的所有交易
|
1222
|
+
|
1223
|
+
|
1224
|
+
> 调用方法
|
1225
|
+
|
1226
|
+
sdk.block.getTransactions(blockNumber)
|
1227
|
+
|
1228
|
+
|
1229
|
+
> 请求参数
|
1230
|
+
|
1231
|
+
参数 | 类型 | 描述 |
|
1232
|
+
----------- | ------------ | ---------------- |
|
1233
|
+
blockNumber | String | 待查询的区块高度
|
1234
|
+
|
1235
|
+
|
1236
|
+
> 响应数据
|
1237
|
+
|
1238
|
+
参数 | 类型 | 描述 |
|
1239
|
+
-----------|------------|----------------|
|
1240
|
+
total_count | String | 返回的总交易数
|
1241
|
+
transactions | [Array](#transactions) | 交易内容
|
1242
|
+
|
1243
|
+
### transactions
|
1244
|
+
成员变量 | 类型 | 描述 |
|
1245
|
+
----------- | ------------ | ---------------- |
|
1246
|
+
actual_fee|String|交易实际费用
|
1247
|
+
close_time|String|交易关闭时间
|
1248
|
+
error_code|String|交易错误码
|
1249
|
+
error_desc|String|交易描述
|
1250
|
+
hash|String|交易hash
|
1251
|
+
ledger_seq|String|区块序列号
|
1252
|
+
transaction|[TransactionInfo Object](#transactionInfoObject)|交易内容列表
|
1253
|
+
signatures|[Signature Object](#signatureObject)|签名列表
|
1254
|
+
tx_size|int64|交易大小
|
1255
|
+
|
1256
|
+
### transactionInfoObject
|
1257
|
+
|
1258
|
+
成员 | 类型 | 描述 |
|
1259
|
+
----------- | ------------ | ---------------- |
|
1260
|
+
source_address|String|交易发起的源账户地址
|
1261
|
+
fee_limit|String|交易费用
|
1262
|
+
gas_price|String|交易打包费用
|
1263
|
+
nonce|String|交易序列号
|
1264
|
+
operations|Object|操作列表
|
1265
|
+
|
1266
|
+
|
1267
|
+
### signatureObject
|
1268
|
+
成员变量 | 类型 | 描述 |
|
1269
|
+
----------- | ------------ | ---------------- |
|
1270
|
+
sign_data|String|签名后数据
|
1271
|
+
public_key|String|公钥
|
1272
|
+
|
1273
|
+
|
1274
|
+
|
1275
|
+
> 错误码
|
1276
|
+
|
1277
|
+
异常 | 错误码 | 描述 |
|
1278
|
+
----------- | ----------- | -------- |
|
1279
|
+
INVALID_BLOCKNUMBER_ERROR | 11060 | BlockNumber must bigger than 0
|
1280
|
+
QUERY_RESULT_NOT_EXIST | 15014 | Query result not exist
|
1281
|
+
SYSTEM_ERROR | 20000 | System error
|
1282
|
+
|
1283
|
+
> 示例
|
1284
|
+
|
1285
|
+
```js
|
1286
|
+
|
1287
|
+
sdk.block.getTransactions(100).then(result => {
|
1288
|
+
console.log(result);
|
1289
|
+
console.log(JSON.stringify(result));
|
1290
|
+
}).catch(err => {
|
1291
|
+
console.log(err.message);
|
1292
|
+
});
|
1293
|
+
```
|
1294
|
+
|
1295
|
+
|
1296
|
+
### getInfo-区块
|
1297
|
+
|
1298
|
+
> 接口说明
|
1299
|
+
|
1300
|
+
获取区块信息
|
1301
|
+
|
1302
|
+
> 调用方法
|
1303
|
+
|
1304
|
+
sdk.block.getInfo(blockNumber)
|
1305
|
+
|
1306
|
+
> 请求参数
|
1307
|
+
|
1308
|
+
参数 | 类型 | 描述 |
|
1309
|
+
----------- | ------------ | ---------------- |
|
1310
|
+
blockNumber | String | 待查询的区块高度
|
1311
|
+
|
1312
|
+
> 响应数据
|
1313
|
+
|
1314
|
+
参数 | 类型 | 描述 |
|
1315
|
+
----------- | ------------ | ---------------- |
|
1316
|
+
closeTime | String | 区块关闭时间
|
1317
|
+
number | String | 区块高度
|
1318
|
+
txCount | String | 交易总量
|
1319
|
+
version | String | 区块版本
|
1320
|
+
|
1321
|
+
> 错误码
|
1322
|
+
|
1323
|
+
异常 | 错误码 | 描述 |
|
1324
|
+
----------- | ----------- | -------- |
|
1325
|
+
INVALID_BLOCKNUMBER_ERROR | 11060 | BlockNumber must bigger than 0
|
1326
|
+
SYSTEM_ERROR | 20000 | System error
|
1327
|
+
|
1328
|
+
> 示例
|
1329
|
+
|
1330
|
+
```js
|
1331
|
+
|
1332
|
+
sdk.block.getInfo(100).then(result => {
|
1333
|
+
console.log(result);
|
1334
|
+
}).catch(err => {
|
1335
|
+
console.log(err.message);
|
1336
|
+
});
|
1337
|
+
|
1338
|
+
```
|
1339
|
+
|
1340
|
+
### getLatestInfo
|
1341
|
+
|
1342
|
+
> 接口说明
|
1343
|
+
|
1344
|
+
获取最新区块信息
|
1345
|
+
|
1346
|
+
> 调用方法
|
1347
|
+
|
1348
|
+
sdk.block. getLatestInfo()
|
1349
|
+
|
1350
|
+
|
1351
|
+
> 响应数据
|
1352
|
+
|
1353
|
+
参数 | 类型 | 描述 |
|
1354
|
+
----------- | ------------ | ---------------- |
|
1355
|
+
closeTime | String | 区块关闭时间
|
1356
|
+
number | String | 区块高度
|
1357
|
+
txCount | String | 交易总量
|
1358
|
+
version | String | 区块版本
|
1359
|
+
|
1360
|
+
> 错误码
|
1361
|
+
|
1362
|
+
异常 | 错误码 | 描述 |
|
1363
|
+
----------- | ----------- | -------- |
|
1364
|
+
SYSTEM_ERROR | 20000 | System error
|
1365
|
+
|
1366
|
+
> 示例
|
1367
|
+
|
1368
|
+
```js
|
1369
|
+
|
1370
|
+
sdk.block.getLatestInfo().then(result => {
|
1371
|
+
console.log(result);
|
1372
|
+
}).catch(err => {
|
1373
|
+
console.log(err.message);
|
1374
|
+
});
|
1375
|
+
|
1376
|
+
```
|
1377
|
+
|
1378
|
+
|
1379
|
+
### getValidators
|
1380
|
+
|
1381
|
+
> 接口说明
|
1382
|
+
|
1383
|
+
获取指定区块中所有验证节点数
|
1384
|
+
|
1385
|
+
> 调用方法
|
1386
|
+
|
1387
|
+
sdk.block.getValidators(blockNumber)
|
1388
|
+
|
1389
|
+
> 请求参数
|
1390
|
+
|
1391
|
+
参数 | 类型 | 描述 |
|
1392
|
+
----------- | ------------ | ---------------- |
|
1393
|
+
blockNumber | String | 待查询的区块高度
|
1394
|
+
|
1395
|
+
> 响应数据
|
1396
|
+
|
1397
|
+
参数 | 类型 | 描述 |
|
1398
|
+
----------- | ------------ | ---------------- |
|
1399
|
+
validators | Array | 验证节点列表
|
1400
|
+
|
1401
|
+
|
1402
|
+
> validators 的元素为Object,其中包含如下属性
|
1403
|
+
|
1404
|
+
参数 | 类型 | 描述 |
|
1405
|
+
----------- | ------------ | ---------------- |
|
1406
|
+
address | String| 共识节点地址
|
1407
|
+
pledge_coin_amount | String | 验证节点押金
|
1408
|
+
|
1409
|
+
|
1410
|
+
|
1411
|
+
> 错误码
|
1412
|
+
|
1413
|
+
异常 | 错误码 | 描述 |
|
1414
|
+
----------- | ----------- | -------- |
|
1415
|
+
INVALID_BLOCKNUMBER_ERROR | 11060 | BlockNumber must bigger than 0
|
1416
|
+
SYSTEM_ERROR | 20000 | System error
|
1417
|
+
|
1418
|
+
> 示例
|
1419
|
+
|
1420
|
+
```js
|
1421
|
+
|
1422
|
+
sdk.block.getValidators(100).then(result => {
|
1423
|
+
console.log(result);
|
1424
|
+
}).catch(err => {
|
1425
|
+
console.log(err.message);
|
1426
|
+
});
|
1427
|
+
```
|
1428
|
+
|
1429
|
+
### getLatestValidators
|
1430
|
+
|
1431
|
+
> 接口说明
|
1432
|
+
|
1433
|
+
获取最新区块中所有验证节点数
|
1434
|
+
|
1435
|
+
> 调用方法
|
1436
|
+
|
1437
|
+
sdk.block.getLatestValidators()
|
1438
|
+
|
1439
|
+
|
1440
|
+
> 响应数据
|
1441
|
+
|
1442
|
+
参数 | 类型 | 描述 |
|
1443
|
+
----------- | ------------ | ---------------- |
|
1444
|
+
validators | Array | 验证节点列表
|
1445
|
+
|
1446
|
+
|
1447
|
+
> validators 的元素为Object,其中包含如下属性
|
1448
|
+
|
1449
|
+
参数 | 类型 | 描述 |
|
1450
|
+
----------- | ------------ | ---------------- |
|
1451
|
+
address | String| 共识节点地址
|
1452
|
+
pledge_coin_amount | String | 验证节点押金
|
1453
|
+
|
1454
|
+
|
1455
|
+
|
1456
|
+
> 错误码
|
1457
|
+
|
1458
|
+
异常 | 错误码 | 描述 |
|
1459
|
+
----------- | ----------- | -------- |
|
1460
|
+
SYSTEM_ERROR | 20000 | System error
|
1461
|
+
|
1462
|
+
> 示例
|
1463
|
+
|
1464
|
+
```js
|
1465
|
+
|
1466
|
+
sdk.block.getLatestValidators().then(result => {
|
1467
|
+
console.log(result);
|
1468
|
+
}).catch(err => {
|
1469
|
+
console.log(err.message);
|
1470
|
+
});
|
1471
|
+
|
1472
|
+
```
|
1473
|
+
|
1474
|
+
### getReward
|
1475
|
+
|
1476
|
+
> 接口说明
|
1477
|
+
|
1478
|
+
获取指定区块中的区块奖励和验证节点奖励
|
1479
|
+
|
1480
|
+
> 调用方法
|
1481
|
+
|
1482
|
+
sdk.block.getReward(blockNumber)
|
1483
|
+
|
1484
|
+
> 请求参数
|
1485
|
+
|
1486
|
+
参数 | 类型 | 描述 |
|
1487
|
+
----------- | ------------ | ---------------- |
|
1488
|
+
blockNumber | String | 待查询的区块高度
|
1489
|
+
|
1490
|
+
> 响应数据
|
1491
|
+
|
1492
|
+
参数 | 类型 | 描述 |
|
1493
|
+
----------- | ------------ | ---------------- |
|
1494
|
+
blockReward | String | 区块奖励数
|
1495
|
+
validatorsReward | Array | 验证节点奖励情况
|
1496
|
+
|
1497
|
+
|
1498
|
+
> validatorsReward 的元素为Object,其中包含如下属性
|
1499
|
+
|
1500
|
+
参数 | 类型 | 描述 |
|
1501
|
+
----------- | ------------ | ---------------- |
|
1502
|
+
validator | String| 验证节点地址
|
1503
|
+
reward | String | 验证节点奖励
|
1504
|
+
|
1505
|
+
|
1506
|
+
|
1507
|
+
> 错误码
|
1508
|
+
|
1509
|
+
异常 | 错误码 | 描述 |
|
1510
|
+
----------- | ----------- | -------- |
|
1511
|
+
INVALID_BLOCKNUMBER_ERROR | 11060 | BlockNumber must bigger than 0
|
1512
|
+
SYSTEM_ERROR | 20000 | System error
|
1513
|
+
|
1514
|
+
> 示例
|
1515
|
+
|
1516
|
+
```js
|
1517
|
+
|
1518
|
+
sdk.block.getReward(100).then(result => {
|
1519
|
+
console.log(result);
|
1520
|
+
}).catch(err => {
|
1521
|
+
console.log(err.message);
|
1522
|
+
});
|
1523
|
+
|
1524
|
+
```
|
1525
|
+
|
1526
|
+
### getLatestReward
|
1527
|
+
|
1528
|
+
> 接口说明
|
1529
|
+
|
1530
|
+
获取最新区块中的区块奖励和验证节点奖励
|
1531
|
+
|
1532
|
+
> 调用方法
|
1533
|
+
|
1534
|
+
sdk.block.getLatestReward()
|
1535
|
+
|
1536
|
+
|
1537
|
+
> 响应数据
|
1538
|
+
|
1539
|
+
参数 | 类型 | 描述 |
|
1540
|
+
----------- | ------------ | ---------------- |
|
1541
|
+
blockReward | String | 区块奖励数
|
1542
|
+
validatorsReward | Array | 验证节点奖励情况
|
1543
|
+
|
1544
|
+
|
1545
|
+
> validatorsReward 的元素为Object,其中包含如下属性
|
1546
|
+
|
1547
|
+
参数 | 类型 | 描述 |
|
1548
|
+
----------- | ------------ | ---------------- |
|
1549
|
+
validator | String| 验证节点地址
|
1550
|
+
reward | String | 验证节点奖励
|
1551
|
+
|
1552
|
+
|
1553
|
+
|
1554
|
+
> 错误码
|
1555
|
+
|
1556
|
+
异常 | 错误码 | 描述 |
|
1557
|
+
----------- | ----------- | -------- |
|
1558
|
+
SYSTEM_ERROR | 20000 | System error
|
1559
|
+
|
1560
|
+
> 示例
|
1561
|
+
|
1562
|
+
```js
|
1563
|
+
|
1564
|
+
sdk.block.getLatestReward().then(result => {
|
1565
|
+
console.log(result);
|
1566
|
+
}).catch(err => {
|
1567
|
+
console.log(err.message);
|
1568
|
+
});
|
1569
|
+
|
1570
|
+
```
|
1571
|
+
|
1572
|
+
|
1573
|
+
### getFees
|
1574
|
+
|
1575
|
+
> 接口说明
|
1576
|
+
|
1577
|
+
获取指定区块中的账户最低资产限制和打包费用
|
1578
|
+
|
1579
|
+
> 调用方法
|
1580
|
+
|
1581
|
+
sdk.block.getFees(blockNumber)
|
1582
|
+
|
1583
|
+
> 请求参数
|
1584
|
+
|
1585
|
+
参数 | 类型 | 描述 |
|
1586
|
+
----------- | ------------ | ---------------- |
|
1587
|
+
blockNumber | String | 待查询的区块高度
|
1588
|
+
|
1589
|
+
> 响应数据
|
1590
|
+
|
1591
|
+
参数 | 类型 | 描述 |
|
1592
|
+
----------- | ------------ | ---------------- |
|
1593
|
+
fees | Object | 费用
|
1594
|
+
|
1595
|
+
|
1596
|
+
|
1597
|
+
> fees包含如下属性
|
1598
|
+
|
1599
|
+
参数 | 类型 | 描述 |
|
1600
|
+
----------- | ------------ | ---------------- |
|
1601
|
+
baseReserve | String| 账户最低资产限制
|
1602
|
+
gasPrice | String | 打包费用,单位MO,1 BU = 10^8 MO
|
1603
|
+
|
1604
|
+
|
1605
|
+
|
1606
|
+
> 错误码
|
1607
|
+
|
1608
|
+
异常 | 错误码 | 描述 |
|
1609
|
+
----------- | ----------- | -------- |
|
1610
|
+
INVALID_BLOCKNUMBER_ERROR | 11060 | BlockNumber must bigger than 0
|
1611
|
+
SYSTEM_ERROR | 20000 | System error
|
1612
|
+
|
1613
|
+
> 示例
|
1614
|
+
|
1615
|
+
```js
|
1616
|
+
|
1617
|
+
sdk.block.getFees(100).then(result => {
|
1618
|
+
console.log(result);
|
1619
|
+
}).catch(err => {
|
1620
|
+
console.log(err.message);
|
1621
|
+
});
|
1622
|
+
|
1623
|
+
```
|
1624
|
+
|
1625
|
+
### getLatestFees
|
1626
|
+
|
1627
|
+
> 接口说明
|
1628
|
+
|
1629
|
+
获取最新区块中的账户最低资产限制和打包费用
|
1630
|
+
|
1631
|
+
> 调用方法
|
1632
|
+
|
1633
|
+
sdk.block.getLatestFees()
|
1634
|
+
|
1635
|
+
> 响应数据
|
1636
|
+
|
1637
|
+
参数 | 类型 | 描述 |
|
1638
|
+
----------- | ------------ | ---------------- |
|
1639
|
+
fees | Object | 费用
|
1640
|
+
|
1641
|
+
|
1642
|
+
|
1643
|
+
> fees包含如下属性
|
1644
|
+
|
1645
|
+
参数 | 类型 | 描述 |
|
1646
|
+
----------- | ------------ | ---------------- |
|
1647
|
+
baseReserve | String| 账户最低资产限制
|
1648
|
+
gasPrice | String | 打包费用,单位MO,1 BU = 10^8 MO
|
1649
|
+
|
1650
|
+
|
1651
|
+
|
1652
|
+
> 错误码
|
1653
|
+
|
1654
|
+
异常 | 错误码 | 描述 |
|
1655
|
+
----------- | ----------- | -------- |
|
1656
|
+
SYSTEM_ERROR | 20000 | System error
|
1657
|
+
|
1658
|
+
> 示例
|
1659
|
+
|
1660
|
+
```js
|
1661
|
+
|
1662
|
+
sdk.block.getLatestFees().then(result => {
|
1663
|
+
console.log(result);
|
1664
|
+
}).catch(err => {
|
1665
|
+
console.log(err.message);
|
1666
|
+
});
|
1667
|
+
|
1668
|
+
```
|
1669
|
+
|
1670
|
+
|
1671
|
+
## 合约服务
|
1672
|
+
|
1673
|
+
### getInfo-合约
|
1674
|
+
|
1675
|
+
> 接口说明
|
1676
|
+
|
1677
|
+
查询合约代码
|
1678
|
+
|
1679
|
+
> 调用方法
|
1680
|
+
|
1681
|
+
sdk.contract.getInfo(contractAddress)
|
1682
|
+
|
1683
|
+
> 请求参数
|
1684
|
+
|
1685
|
+
参数 | 类型 | 描述 |
|
1686
|
+
----------- | ------------ | ---------------- |
|
1687
|
+
contractAddress | String | 合约账户地址
|
1688
|
+
|
1689
|
+
> 响应数据
|
1690
|
+
|
1691
|
+
参数 | 类型 | 描述 |
|
1692
|
+
----------- | ------------ | ---------------- |
|
1693
|
+
contract |Object | 合约信息
|
1694
|
+
type | Number | 合约类型
|
1695
|
+
payload | String | 合约代码
|
1696
|
+
|
1697
|
+
|
1698
|
+
> 错误码
|
1699
|
+
|
1700
|
+
异常 | 错误码 | 描述 |
|
1701
|
+
----------- | ----------- | -------- |
|
1702
|
+
INVALID_CONTRACTADDRESS_ERROR | 11037 |Invalid contract address
|
1703
|
+
CONTRACTADDRESS_NOT_CONTRACTACCOUNT_ERROR |11038 |ContractAddress is not a contract account
|
1704
|
+
INVALID_CONTRACT_HASH_ERROR | 11025 | Invalid transaction hash to create contract
|
1705
|
+
SYSTEM_ERROR | 20000 | System error
|
1706
|
+
|
1707
|
+
> 示例
|
1708
|
+
|
1709
|
+
```js
|
1710
|
+
const contractAddress = 'adxScpCtbeLP2KGRaCkbtrmz8iB5mu6DQcW3r';
|
1711
|
+
sdk.contract.getInfo(contractAddress).then(result => {
|
1712
|
+
console.log(result);
|
1713
|
+
}).catch(err => {
|
1714
|
+
console.log(err.message);
|
1715
|
+
});
|
1716
|
+
|
1717
|
+
```
|
1718
|
+
|
1719
|
+
### checkValid-合约
|
1720
|
+
|
1721
|
+
> 接口说明
|
1722
|
+
|
1723
|
+
检测合约账户地址的有效性
|
1724
|
+
|
1725
|
+
> 调用方法
|
1726
|
+
|
1727
|
+
sdk.contract.checkValid(contractAddress)
|
1728
|
+
|
1729
|
+
> 请求参数
|
1730
|
+
|
1731
|
+
参数 | 类型 | 描述 |
|
1732
|
+
----------- | ------------ | ---------------- |
|
1733
|
+
contractAddress | String | 合约账户地址
|
1734
|
+
|
1735
|
+
> 响应数据
|
1736
|
+
|
1737
|
+
参数 | 类型 | 描述 |
|
1738
|
+
----------- | ------------ | ---------------- |
|
1739
|
+
isValid |boolean | 合约账户地址是否有效
|
1740
|
+
|
1741
|
+
|
1742
|
+
|
1743
|
+
> 错误码
|
1744
|
+
|
1745
|
+
异常 | 错误码 | 描述 |
|
1746
|
+
----------- | ----------- | -------- |
|
1747
|
+
INVALID_CONTRACTADDRESS_ERROR | 11037 |Invalid contract address
|
1748
|
+
CONTRACTADDRESS_NOT_CONTRACTACCOUNT_ERROR |11038 |ContractAddress is not a contract account
|
1749
|
+
SYSTEM_ERROR | 20000 | System error
|
1750
|
+
|
1751
|
+
> 示例
|
1752
|
+
|
1753
|
+
```js
|
1754
|
+
|
1755
|
+
const contractAddress = 'adxScpCtbeLP2KGRaCkbtrmz8iB5mu6DQcW3r';
|
1756
|
+
sdk.contract.checkValid(contractAddress).then(result => {
|
1757
|
+
console.log(result);
|
1758
|
+
}).catch(err => {
|
1759
|
+
console.log(err.message);
|
1760
|
+
});
|
1761
|
+
|
1762
|
+
```
|
1763
|
+
|
1764
|
+
### getAddress-合约
|
1765
|
+
|
1766
|
+
> 接口说明
|
1767
|
+
|
1768
|
+
查询合约地址
|
1769
|
+
|
1770
|
+
> 调用方法
|
1771
|
+
|
1772
|
+
sdk.contract.getAddress(hash)
|
1773
|
+
|
1774
|
+
> 请求参数
|
1775
|
+
|
1776
|
+
参数 | 类型 | 描述 |
|
1777
|
+
----------- | ------------ | ---------------- |
|
1778
|
+
hash | String | 创建合约交易的hash |
|
1779
|
+
|
1780
|
+
> 响应数据
|
1781
|
+
|
1782
|
+
参数 | 类型 | 描述 |
|
1783
|
+
----------- | ------------ | ---------------- |
|
1784
|
+
contractAddressList|List<[ContractAddressInfo](#contractaddressinfo)>|合约地址列表
|
1785
|
+
|
1786
|
+
#### ContractAddressInfo
|
1787
|
+
|
1788
|
+
成员 | 类型 | 描述 |
|
1789
|
+
----------- | ------------ | ---------------- |
|
1790
|
+
contract_address|String|合约地址
|
1791
|
+
operation_index|Number|所在操作的下标
|
1792
|
+
|
1793
|
+
> 错误码
|
1794
|
+
|
1795
|
+
异常 | 错误码 | 描述 |
|
1796
|
+
----------- | ----------- | -------- |
|
1797
|
+
INVALID_HASH_ERROR|11055|Invalid transaction hash
|
1798
|
+
SYSTEM_ERROR|20000|System error
|
1799
|
+
|
1800
|
+
> 示例
|
1801
|
+
|
1802
|
+
```js
|
1803
|
+
|
1804
|
+
const hash = 'f298d08ec3987adc3aeef73e81cbb49cbad2316145ba190700de2d78657880c0';
|
1805
|
+
sdk.contract.getAddress(hash).then(data => {
|
1806
|
+
console.log(data);
|
1807
|
+
})
|
1808
|
+
|
1809
|
+
```
|
1810
|
+
|
1811
|
+
|
1812
|
+
## 工具
|
1813
|
+
|
1814
|
+
### utfToHex
|
1815
|
+
|
1816
|
+
> 接口说明
|
1817
|
+
|
1818
|
+
utf8字符串转换成十六进制字符串
|
1819
|
+
|
1820
|
+
> 调用方法
|
1821
|
+
|
1822
|
+
sdk.util.utfToHex(str)
|
1823
|
+
|
1824
|
+
> 请求参数
|
1825
|
+
|
1826
|
+
参数 | 类型 | 描述 |
|
1827
|
+
----------- | ------------ | ---------------- |
|
1828
|
+
str | String | 待转换的字符串
|
1829
|
+
|
1830
|
+
> 响应数据
|
1831
|
+
|
1832
|
+
十六进制字符串 / undefined(参数不正确时)
|
1833
|
+
|
1834
|
+
|
1835
|
+
> 示例
|
1836
|
+
|
1837
|
+
```js
|
1838
|
+
const hexString = sdk.util.utfToHex('hello, world');
|
1839
|
+
console.log(hexString);
|
1840
|
+
```
|
1841
|
+
|
1842
|
+
### hexToUtf
|
1843
|
+
|
1844
|
+
> 接口说明
|
1845
|
+
|
1846
|
+
十六进制字符串转换成utf8字符串
|
1847
|
+
|
1848
|
+
> 调用方法
|
1849
|
+
|
1850
|
+
sdk.util.hexToUtf(str)
|
1851
|
+
|
1852
|
+
> 请求参数
|
1853
|
+
|
1854
|
+
参数 | 类型 | 描述 |
|
1855
|
+
----------- | ------------ | ---------------- |
|
1856
|
+
str | String | 待转换的字符串
|
1857
|
+
|
1858
|
+
> 响应数据
|
1859
|
+
|
1860
|
+
utf8字符串 / undefined(参数不正确时)
|
1861
|
+
|
1862
|
+
|
1863
|
+
> 示例
|
1864
|
+
|
1865
|
+
```js
|
1866
|
+
const utfString = sdk.util.hexToUtf('68656c6c6f2c20776f726c64');
|
1867
|
+
console.log(utfString);
|
1868
|
+
```
|
1869
|
+
|
1870
|
+
|
1871
|
+
|
1872
|
+
### buToMo
|
1873
|
+
|
1874
|
+
> 接口说明
|
1875
|
+
|
1876
|
+
bu转换成mo
|
1877
|
+
|
1878
|
+
> 调用方法
|
1879
|
+
|
1880
|
+
sdk.util.buToMo(str)
|
1881
|
+
|
1882
|
+
> 请求参数
|
1883
|
+
|
1884
|
+
参数 | 类型 | 描述 |
|
1885
|
+
----------- | ------------ | ---------------- |
|
1886
|
+
str | String | 待转换的字符串(字符串最多支持8位小数)
|
1887
|
+
|
1888
|
+
> 响应数据
|
1889
|
+
|
1890
|
+
字符串 / ''(参数不正确时)
|
1891
|
+
|
1892
|
+
|
1893
|
+
> 示例
|
1894
|
+
|
1895
|
+
```js
|
1896
|
+
const mo = sdk.util.buToMo('5');
|
1897
|
+
console.log(mo);
|
1898
|
+
```
|
1899
|
+
|
1900
|
+
|
1901
|
+
### moToBu
|
1902
|
+
|
1903
|
+
> 接口说明
|
1904
|
+
|
1905
|
+
mo转换bu
|
1906
|
+
|
1907
|
+
> 调用方法
|
1908
|
+
|
1909
|
+
sdk.util.moToBu(str)
|
1910
|
+
|
1911
|
+
> 请求参数
|
1912
|
+
|
1913
|
+
参数 | 类型 | 描述 |
|
1914
|
+
----------- | ------------ | ---------------- |
|
1915
|
+
str | String | 待转换的字符串
|
1916
|
+
|
1917
|
+
> 响应数据
|
1918
|
+
|
1919
|
+
字符串 / ''(参数不正确时)
|
1920
|
+
|
1921
|
+
|
1922
|
+
> 示例
|
1923
|
+
|
1924
|
+
```js
|
1925
|
+
const bu = sdk.util.moToBu('500000000');
|
1926
|
+
console.log(bu);
|
1927
|
+
```
|
1928
|
+
|
1929
|
+
|
1930
|
+
## 错误码
|
1931
|
+
|
1932
|
+
异常 | 错误码 | 描述 |
|
1933
|
+
----------- | ----------- | -------- |
|
1934
|
+
ACCOUNT_CREATE_ERROR | 11001 | Failed to create the account
|
1935
|
+
INVALID_SOURCEADDRESS_ERROR | 11002 | Invalid sourceAddress
|
1936
|
+
INVALID_DESTADDRESS_ERROR | 11003 | Invalid destAddress
|
1937
|
+
INVALID_INITBALANCE_ERROR | 11004 | InitBalance must between 1 and max(int64)
|
1938
|
+
SOURCEADDRESS_EQUAL_DESTADDRESS_ERROR | 11005 | SourceAddress cannot be equal to destAddress
|
1939
|
+
INVALID_ADDRESS_ERROR | 11006 | Invalid address
|
1940
|
+
CONNECTNETWORK_ERROR | 11007 | Connect network failed
|
1941
|
+
METADATA_NOT_HEX_STRING_ERROR | 11008 | Metadata must be a hex string
|
1942
|
+
NO_ASSET_ERROR | 11009 | The account does not have the asset
|
1943
|
+
NO_METADATA_ERROR | 11010 | The account does not have the metadata
|
1944
|
+
INVALID_DATAKEY_ERROR | 11011 | The length of key must between 1 and 1024
|
1945
|
+
INVALID_DATAVALUE_ERROR | 11012 | The length of value must between 0 and 256000
|
1946
|
+
INVALID_DATAVERSION_ERROR | 11013 | The version must be equal to or greater than 0
|
1947
|
+
INVALID_MASTERWEIGHT_ERROR | 11015 | MasterWeight must between 0 and max(uint32)
|
1948
|
+
INVALID_SIGNER_ADDRESS_ERROR | 11016 | Invalid signer address
|
1949
|
+
INVALID_SIGNER_WEIGHT_ERROR | 11017 | Signer weight must between 0 and max(uint32)
|
1950
|
+
INVALID_TX_THRESHOLD_ERROR | 11018 | TxThreshold must between 0 and max(int64)
|
1951
|
+
INVALID_OPERATION_TYPE_ERROR | 11019 | Operation type must between 1 and 100
|
1952
|
+
INVALID_TYPE_THRESHOLD_ERROR | 11020 | TypeThreshold must between 0 and max(int64)
|
1953
|
+
INVALID_ASSET_CODE_ERROR | 11023 | The length of key must between 1 and 1024
|
1954
|
+
INVALID_ASSET_AMOUNT_ERROR | 11024 | AssetAmount must between 1 and max(int64)
|
1955
|
+
INVALID_BU_AMOUNT_ERROR | 11026 | BuAmount must between 1 and max(int64)
|
1956
|
+
INVALID_ISSUER_ADDRESS_ERROR | 11027 | Invalid issuer address
|
1957
|
+
NO_SUCH_TOKEN_ERROR | 11030 | No such token
|
1958
|
+
INVALID_TOKEN_NAME_ERROR | 11031 | The length of token name must between 1 and 1024
|
1959
|
+
INVALID_TOKEN_SIMBOL_ERROR | 11032 | The length of symbol must between 1 and 1024
|
1960
|
+
INVALID_TOKEN_DECIMALS_ERROR | 11033 | Decimals must less than 8
|
1961
|
+
INVALID_TOKEN_TOTALSUPPLY_ERROR | 11034 | TotalSupply must between 1 and max(int64)
|
1962
|
+
INVALID_TOKENOWNER_ERRPR | 11035 | Invalid token owner
|
1963
|
+
INVALID_CONTRACTADDRESS_ERROR | 11037 | Invalid contract address
|
1964
|
+
CONTRACTADDRESS_NOT_CONTRACTACCOUNT_ERROR | 11038 | ContractAddress is not a contract account
|
1965
|
+
INVALID_TOKEN_AMOUNT_ERROR | 11039 | Amount must between 1 and max(int64)
|
1966
|
+
SOURCEADDRESS_EQUAL_CONTRACTADDRESS_ERROR | 11040 | SourceAddress cannot be equal to contractAddress
|
1967
|
+
INVALID_FROMADDRESS_ERROR | 11041 | Invalid fromAddress
|
1968
|
+
FROMADDRESS_EQUAL_DESTADDRESS_ERROR | 11042 | FromAddress cannot be equal to destAddress
|
1969
|
+
INVALID_SPENDER_ERROR | 11043 | Invalid spender
|
1970
|
+
INVALID_LOG_TOPIC_ERROR | 11045 | The length of log topic must between 1 and 128
|
1971
|
+
INVALID_LOG_DATA_ERROR | 11046 | The length of one of log data must between 1 and 1024
|
1972
|
+
INVALID_NONCE_ERROR | 11048 | Nonce must between 1 and max(int64)
|
1973
|
+
INVALID_GASPRICE_ERROR | 11049 | Amount must between gasPrice in block and max(int64)
|
1974
|
+
INVALID_FEELIMIT_ERROR | 11050 | FeeLimit must between 1 and max(int64)
|
1975
|
+
OPERATIONS_EMPTY_ERROR | 1105O | Perations cannot be empty
|
1976
|
+
INVALID_CEILLEDGERSEQ_ERROR | 11052 | CeilLedgerSeq must be equal to or greater than 0
|
1977
|
+
OPERATIONS_ONE_ERROR | 11053 | One of operations error
|
1978
|
+
INVALID_SIGNATURENUMBER_ERROR | 11054 | SignagureNumber must between 1 and max(int32)
|
1979
|
+
INVALID_HASH_ERROR | 11055 | Invalid transaction hash
|
1980
|
+
INVALID_BLOB_ERROR | 11056 | Invalid blob
|
1981
|
+
PRIVATEKEY_NULL_ERROR | 11057 | PrivateKeys cannot be empty
|
1982
|
+
PRIVATEKEY_ONE_ERROR | 11058 | One of privateKeys is invalid
|
1983
|
+
URL_EMPTY_ERROR | 11062 | Url cannot be empty
|
1984
|
+
CONTRACTADDRESS_CODE_BOTH_NULL_ERROR | 11063 | ContractAddress and code cannot be empty at the same time
|
1985
|
+
INVALID_OPTTYPE_ERROR | 11064 | OptType must between 0 and 2
|
1986
|
+
INVALID_SIGNATURE_ERROR | 15027 | Invalid signature
|
1987
|
+
GET_ALLOWANCE_ERROR | 11065 | Get allowance error
|
1988
|
+
GET_TOKEN_INFO_ERROR | 11066 | Get token info error
|
1989
|
+
CONNECTN_BLOCKCHAIN_ERROR | 19999 | Failed to connect to the blockchain
|
1990
|
+
SYSTEM_ERROR | 20000 | System error
|
1991
|
+
ACCOUNT_NOT_EXIST | 15001 | Account not exist
|
1992
|
+
INVALID_NUMBER_OF_ARG | 15006 | Invalid number of arguments to the function
|
1993
|
+
QUERY_RESULT_NOT_EXIST | 15014 | Query result not exist
|
1994
|
+
INVALID_ARGUMENTS | 15016 | Invalid arguments to the function',
|
1995
|
+
FAIL | 15017 | Fail
|
1996
|
+
INVALID_FORMAT_OF_ARG | 15019 | Invalid format of argument to the function
|
1997
|
+
INVALID_OPERATIONS | 15022 | Invalid operation
|
1998
|
+
INVALID_SIGNATURE_ERROR | 15027 | Invalid signature
|
1999
|
+
INVALID_METADATA_ERROR | 15028 | Invalid metadata
|
2000
|
+
INVALID_INPUT_ERROR | 15028 | Invalid input
|
2001
|
+
INVALID_DELETEFLAG_ERROR | 15029 | DeleteFlag must be a boolean
|
2002
|
+
INVALID_CONTRACT_BU_AMOUNT_ERROR | 15030 | BuAmount must between 0 and max(int64)
|
2003
|
+
INVALID_CONTRACT_ASSET_AMOUNT_ERROR | 15031 | AssetAmount must between 0 and max(int64)
|