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.
Files changed (76) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +66 -0
  3. package/_config.yml +1 -0
  4. package/doc/SDK_CN.md +2003 -0
  5. package/example/atp10TokenDemo.js +319 -0
  6. package/example/exchange.js +184 -0
  7. package/example/offlineSignatureDemo.js +83 -0
  8. package/example/submitTransactionDemo.js +92 -0
  9. package/index.d.ts +186 -0
  10. package/index.js +9 -0
  11. package/lib/account/index.js +234 -0
  12. package/lib/blockchain/block.js +380 -0
  13. package/lib/blockchain/transaction.js +264 -0
  14. package/lib/common/ctp.js +5 -0
  15. package/lib/common/operation/accountSetMetadata.js +55 -0
  16. package/lib/common/operation/accountSetPrivilege.js +90 -0
  17. package/lib/common/operation/activateAccount.js +58 -0
  18. package/lib/common/operation/contractCreate.js +72 -0
  19. package/lib/common/operation/contractInvokeByAsset.js +75 -0
  20. package/lib/common/operation/contractInvokeByBU.js +53 -0
  21. package/lib/common/operation/createLog.js +44 -0
  22. package/lib/common/operation/ctp10TokenApprove.js +59 -0
  23. package/lib/common/operation/ctp10TokenAssign.js +59 -0
  24. package/lib/common/operation/ctp10TokenChangeOwner.js +58 -0
  25. package/lib/common/operation/ctp10TokenIssue.js +78 -0
  26. package/lib/common/operation/ctp10TokenTransfer.js +59 -0
  27. package/lib/common/operation/ctp10TokenTransferFrom.js +60 -0
  28. package/lib/common/operation/issueAsset.js +35 -0
  29. package/lib/common/operation/payAsset.js +62 -0
  30. package/lib/common/operation/payCoin.js +44 -0
  31. package/lib/common/util.js +880 -0
  32. package/lib/contract/index.js +212 -0
  33. package/lib/crypto/protobuf/bundle.json +1643 -0
  34. package/lib/exception/customErrors.js +56 -0
  35. package/lib/exception/errors.js +240 -0
  36. package/lib/exception/index.js +8 -0
  37. package/lib/operation/account.js +193 -0
  38. package/lib/operation/asset.js +106 -0
  39. package/lib/operation/bu.js +52 -0
  40. package/lib/operation/contract.js +184 -0
  41. package/lib/operation/ctp10Token.js +394 -0
  42. package/lib/operation/index.js +30 -0
  43. package/lib/operation/log.js +47 -0
  44. package/lib/sdk.js +70 -0
  45. package/lib/token/asset.js +79 -0
  46. package/lib/token/ctp10Token.js +301 -0
  47. package/lib/token/index.js +17 -0
  48. package/lib/util/index.js +86 -0
  49. package/openchain-sdk-nodejs.iml +9 -0
  50. package/package.json +39 -0
  51. package/test/Ctp10Token.test.js +96 -0
  52. package/test/account.test.js +132 -0
  53. package/test/accountActivateOperation.test.js +99 -0
  54. package/test/accountSetMetadata.test.js +102 -0
  55. package/test/accountSetPrivilege.test.js +66 -0
  56. package/test/asset.test.js +63 -0
  57. package/test/assetIssueOperation.test.js +77 -0
  58. package/test/assetSendOperation.test.js +103 -0
  59. package/test/blob.test.js +128 -0
  60. package/test/block.test.js +165 -0
  61. package/test/buSendOperation.test.js +64 -0
  62. package/test/contract.test.js +64 -0
  63. package/test/contractCreateOperation.test.js +41 -0
  64. package/test/contractCreateTransaction.test.js +116 -0
  65. package/test/contractInvokeByAssetOperation.test.js +109 -0
  66. package/test/contractInvokeByBUOperation.test.js +107 -0
  67. package/test/ctp10TokenApproveOperation.test.js +98 -0
  68. package/test/ctp10TokenAssignOperation.test.js +99 -0
  69. package/test/ctp10TokenChangeOwnerOperation.test.js +98 -0
  70. package/test/ctp10TokenIssueOperation.test.js +40 -0
  71. package/test/ctp10TokenIssueOperationTransaction.test.js +106 -0
  72. package/test/ctp10TokenTransferFromOperation.test.js +101 -0
  73. package/test/ctp10TokenTransferOperation.test.js +98 -0
  74. package/test/log.transaction.test.js +103 -0
  75. package/test/transaction.test.js +166 -0
  76. 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)