@caict/bop-typescript-sdk 1.0.0

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 (115) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/LICENSE +202 -0
  3. package/NOTICE +5 -0
  4. package/README.md +112 -0
  5. package/package.json +90 -0
  6. package/src/bop/bop-base/README.md +5 -0
  7. package/src/bop/bop-base/base.ts +366 -0
  8. package/src/bop/bop-base/index.ts +83 -0
  9. package/src/bop/bop-base/permit.ts +116 -0
  10. package/src/bop/bop-base/test/base.test.ts +867 -0
  11. package/src/bop/bop-base/test/index.test.ts +69 -0
  12. package/src/bop/bop-base/test/permit.test.ts +125 -0
  13. package/src/bop/bop-base/tsconfig.json +8 -0
  14. package/src/bop/bop-proto/README.md +2 -0
  15. package/src/bop/bop-proto/bop-ws.proto +266 -0
  16. package/src/bop/bop-proto/bop-ws.ts +4447 -0
  17. package/src/bop/bop-proto/bop.proto +898 -0
  18. package/src/bop/bop-proto/bop.ts +12890 -0
  19. package/src/bop/bop-proto/tsconfig.json +8 -0
  20. package/src/bop/bop-ws/index.ts +315 -0
  21. package/src/bop/bop-ws/sample/sample.ts +107 -0
  22. package/src/bop/bop-ws/tsconfig.json +8 -0
  23. package/src/bop/index.ts +14 -0
  24. package/src/bop-sdk/index.ts +22 -0
  25. package/src/bop-sdk/interface/abstract-service/abstract-account.ts +23 -0
  26. package/src/bop-sdk/interface/abstract-service/abstract-chain.ts +9 -0
  27. package/src/bop-sdk/interface/abstract-service/abstract-contract.ts +16 -0
  28. package/src/bop-sdk/interface/abstract-service/abstract-ledger.ts +15 -0
  29. package/src/bop-sdk/interface/abstract-service/abstract-provider.ts +13 -0
  30. package/src/bop-sdk/interface/abstract-service/abstract-signer.ts +133 -0
  31. package/src/bop-sdk/interface/abstract-service/abstract-transaction.ts +86 -0
  32. package/src/bop-sdk/interface/provider-ws.ts +10 -0
  33. package/src/bop-sdk/interface/provider.ts +22 -0
  34. package/src/bop-sdk/interface/service/3rd.ts +54 -0
  35. package/src/bop-sdk/interface/service/account.ts +86 -0
  36. package/src/bop-sdk/interface/service/chain.ts +27 -0
  37. package/src/bop-sdk/interface/service/contract.ts +51 -0
  38. package/src/bop-sdk/interface/service/helper.ts +426 -0
  39. package/src/bop-sdk/interface/service/ledger.ts +75 -0
  40. package/src/bop-sdk/interface/service/offline/check/index.js +138 -0
  41. package/src/bop-sdk/interface/service/offline/common/constant.js +6 -0
  42. package/src/bop-sdk/interface/service/offline/common/snowFlakeUtils.js +192 -0
  43. package/src/bop-sdk/interface/service/offline/common/util.js +511 -0
  44. package/src/bop-sdk/interface/service/offline/exception/customErrors.js +29 -0
  45. package/src/bop-sdk/interface/service/offline/exception/errors.js +90 -0
  46. package/src/bop-sdk/interface/service/offline/exception/index.js +5 -0
  47. package/src/bop-sdk/interface/service/offline/operation/accountCreateOperation.js +28 -0
  48. package/src/bop-sdk/interface/service/offline/operation/accountSetMetadataOperation.js +44 -0
  49. package/src/bop-sdk/interface/service/offline/operation/accountSetPrivilegeOperation.js +49 -0
  50. package/src/bop-sdk/interface/service/offline/operation/contractCreateOperation.js +43 -0
  51. package/src/bop-sdk/interface/service/offline/operation/contractInvokeOperation.js +42 -0
  52. package/src/bop-sdk/interface/service/offline/operation/contractInvokeRequestOperation.js +69 -0
  53. package/src/bop-sdk/interface/service/offline/operation/gasSendOperation.js +29 -0
  54. package/src/bop-sdk/interface/service/offline/operation/gasSendRequestOperation.js +61 -0
  55. package/src/bop-sdk/interface/service/offline/operation/index.js +20 -0
  56. package/src/bop-sdk/interface/service/offline/proto/chain_pb.js +12079 -0
  57. package/src/bop-sdk/interface/service/offline/proto/common_pb.js +2867 -0
  58. package/src/bop-sdk/interface/service/offline/transaction/index.js +988 -0
  59. package/src/bop-sdk/interface/service/offline/transaction/operations.js +188 -0
  60. package/src/bop-sdk/interface/service/offline/validate/account.js +152 -0
  61. package/src/bop-sdk/interface/service/offline/validate/contract.js +101 -0
  62. package/src/bop-sdk/interface/service/offline/validate/index.js +10 -0
  63. package/src/bop-sdk/interface/service/offline/validate/transaction.js +51 -0
  64. package/src/bop-sdk/interface/service/transaction.ts +731 -0
  65. package/src/bop-sdk/interface/signer.ts +46 -0
  66. package/src/bop-sdk/interface/test/3rd.test.ts +1571 -0
  67. package/src/bop-sdk/interface/test/account.test.ts +284 -0
  68. package/src/bop-sdk/interface/test/chain.test.ts +45 -0
  69. package/src/bop-sdk/interface/test/contract.test.ts +283 -0
  70. package/src/bop-sdk/interface/test/ledger.test.ts +166 -0
  71. package/src/bop-sdk/interface/test/provider.test.ts +407 -0
  72. package/src/bop-sdk/interface/test/signer.test.ts +105 -0
  73. package/src/bop-sdk/interface/test/transaction.test.ts +713 -0
  74. package/src/bop-sdk/proto/bop-sdk-common.proto +159 -0
  75. package/src/bop-sdk/proto/bop-sdk-common.ts +829 -0
  76. package/src/bop-sdk/proto/bop-sdk-interface.proto +581 -0
  77. package/src/bop-sdk/proto/bop-sdk-interface.ts +10839 -0
  78. package/src/bop-sdk/proto/bop-sdk-utils.proto +86 -0
  79. package/src/bop-sdk/proto/bop-sdk-utils.ts +1495 -0
  80. package/src/bop-sdk/utils/abi/abi-coder.ts +147 -0
  81. package/src/bop-sdk/utils/abi/address.ts +109 -0
  82. package/src/bop-sdk/utils/abi/bignumber.ts +403 -0
  83. package/src/bop-sdk/utils/abi/bytes.ts +565 -0
  84. package/src/bop-sdk/utils/abi/coders/abstract-coder.ts +239 -0
  85. package/src/bop-sdk/utils/abi/coders/address.ts +58 -0
  86. package/src/bop-sdk/utils/abi/coders/anonymous.ts +25 -0
  87. package/src/bop-sdk/utils/abi/coders/array.ts +275 -0
  88. package/src/bop-sdk/utils/abi/coders/boolean.ts +21 -0
  89. package/src/bop-sdk/utils/abi/coders/bytes.ts +36 -0
  90. package/src/bop-sdk/utils/abi/coders/fixed-bytes.ts +35 -0
  91. package/src/bop-sdk/utils/abi/coders/null.ts +25 -0
  92. package/src/bop-sdk/utils/abi/coders/number.ts +56 -0
  93. package/src/bop-sdk/utils/abi/coders/string.ts +24 -0
  94. package/src/bop-sdk/utils/abi/coders/tuple.ts +73 -0
  95. package/src/bop-sdk/utils/abi/constants/addresses.ts +1 -0
  96. package/src/bop-sdk/utils/abi/constants/bignumbers.ts +30 -0
  97. package/src/bop-sdk/utils/abi/constants/hashes.ts +2 -0
  98. package/src/bop-sdk/utils/abi/constants/index.ts +15 -0
  99. package/src/bop-sdk/utils/abi/constants/strings.ts +2 -0
  100. package/src/bop-sdk/utils/abi/fragments.ts +1243 -0
  101. package/src/bop-sdk/utils/abi/id.ts +6 -0
  102. package/src/bop-sdk/utils/abi/index.ts +46 -0
  103. package/src/bop-sdk/utils/abi/interface.ts +921 -0
  104. package/src/bop-sdk/utils/abi/keccak256.ts +9 -0
  105. package/src/bop-sdk/utils/abi/properties.ts +172 -0
  106. package/src/bop-sdk/utils/abi/strings/bytes32.ts +40 -0
  107. package/src/bop-sdk/utils/abi/strings/idna.ts +258 -0
  108. package/src/bop-sdk/utils/abi/strings/index.ts +28 -0
  109. package/src/bop-sdk/utils/abi/strings/utf8.ts +373 -0
  110. package/src/bop-sdk/utils/encryption-address.ts +501 -0
  111. package/src/bop-sdk/utils/encryption-crypto.ts +427 -0
  112. package/src/bop-sdk/utils/encryption-mnemonics.ts +120 -0
  113. package/src/bop-sdk/utils/index.ts +27 -0
  114. package/src/bop-sdk/utils/logger.ts +480 -0
  115. package/src/index.ts +35 -0
@@ -0,0 +1,898 @@
1
+ syntax = "proto3";
2
+ package bop;
3
+
4
+ //账号备案 permit
5
+ // 备案或取消备案的请求项
6
+ message BidStatus {
7
+ string bid = 1; // 申请账号(长度在1-64之间)
8
+ string status = 2; // 账号状态,0:取消许可,1:许可(长度为1)
9
+ }
10
+
11
+ // 备案或取消备案的请求消息
12
+ message ApplyRequest {
13
+ repeated BidStatus data = 1; // 申请备案、取消备案bid集合,上限100条
14
+ }
15
+
16
+ message ApplyResult {
17
+ string requestNo = 1;
18
+ }
19
+
20
+ message ApplyResponse {
21
+ string trace = 1;
22
+ ApplyResult result = 2;
23
+ bool success = 3;
24
+ StatusCodes error_code = 4 [json_name = "error_code"];
25
+ string error_desc = 5 [json_name = "error_desc"];
26
+ }
27
+
28
+ message ApplyStatusRequest {
29
+ string requestNo = 1;
30
+ }
31
+
32
+ message ApplyStatusResult {
33
+ string requestNo = 1; // 请求的序号
34
+ string status = 2; // 存储状态(0:待处理,1:处理中,2:处理成功,3:处理失败)
35
+ string txHash = 3; // 数据上链交易hash
36
+ string errorDesc = 4; // 错误描述(如果处理失败,则提供详细错误信息)
37
+ }
38
+
39
+ message ApplyStatusResponse {
40
+ string trace = 1;
41
+ ApplyStatusResult result = 2;
42
+ bool success = 3;
43
+ StatusCodes error_code = 4 [json_name = "error_code"];
44
+ string error_desc = 5 [json_name = "error_desc"];
45
+ }
46
+
47
+ message DetailRequest {
48
+ string requestNo = 1;
49
+ }
50
+
51
+ message DetailResult {
52
+ string requestNo = 1; // 请求的序号
53
+ string txHash = 2; // 数据上链交易hash(假设为字符串)
54
+ string bidList = 3; // bid集合(字符串列表)
55
+ }
56
+
57
+ message DetailResponse {
58
+ string trace = 1;
59
+ DetailResult result = 2;
60
+ bool success = 3;
61
+ StatusCodes error_code = 4 [json_name = "error_code"];
62
+ string error_desc = 5 [json_name = "error_desc"];
63
+ }
64
+
65
+ //base
66
+ message HelloResult {
67
+ string chain_code = 1 [json_name = "chain_code"];
68
+ string license_version = 2 [json_name = "license_version"];
69
+ string monitor_version = 3 [json_name = "monitor_version"];
70
+ string overlay_version = 4 [json_name = "overlay_version"];
71
+ int64 websocket_port = 5 [json_name = "websocket_port"];
72
+ string address_prefix = 6 [json_name = "address_prefix"];
73
+ string chain_version = 7 [json_name = "chain_version"];
74
+ string current_time = 8 [json_name = "current_time"];
75
+ string hash_type = 9 [json_name = "hash_type"];
76
+ string ledger_version = 10 [json_name = "ledger_version"];
77
+ string network_id = 11 [json_name = "network_id"];
78
+ }
79
+
80
+ message HelloResponse {
81
+ string trace = 1;
82
+ HelloResult result = 2;
83
+ bool success = 3;
84
+ StatusCodes error_code = 4 [json_name = "error_code"];
85
+ string error_desc = 5 [json_name = "error_desc"];
86
+ }
87
+
88
+ //获取链上某个账户的信息
89
+ message GetAccountRequest {
90
+ string address = 1;
91
+ int64 height = 2;
92
+ string key = 3;
93
+ }
94
+
95
+ message Contract{
96
+ enum ContractType{
97
+ JAVASCRIPT = 0;
98
+ EVM = 1;
99
+ SYSTEM = 2;
100
+ }
101
+ ContractType type = 1;
102
+ string payload = 2;
103
+ }
104
+
105
+ message Signer {
106
+ enum Limit{
107
+ SIGNER_NONE = 0;
108
+ SIGNER = 100;
109
+ };
110
+ string address = 1;
111
+ int64 weight = 2;
112
+ }
113
+
114
+ message AccountPrivilege {
115
+ int64 master_weight = 1 [json_name = "master_weight"];
116
+ repeated Signer signers = 2;
117
+ AccountThreshold thresholds = 3;
118
+ }
119
+
120
+ message OperationTypeThreshold{
121
+ enum Type {
122
+ UNKNOWN = 0;
123
+ CREATE_ACCOUNT = 1;
124
+ SET_METADATA = 4;
125
+ SET_SIGNER_WEIGHT = 5;
126
+ SET_THRESHOLD = 6;
127
+ PAY_COIN = 7;
128
+ LOG = 8;
129
+ SET_PRIVILEGE = 9;
130
+ UPGRADE_CONTRACT = 10;
131
+ SET_CONTROLLED_AREA = 11;
132
+ AUTHORIZE_TRANSFER = 12;
133
+ };
134
+ Type type = 1;
135
+ int64 threshold = 2;
136
+ }
137
+
138
+ message AccountThreshold{
139
+ int64 tx_threshold = 1 [json_name = "tx_threshold"];
140
+ repeated OperationTypeThreshold type_thresholds = 2 [json_name = "type_thresholds"];
141
+ }
142
+
143
+ message KeyPair{
144
+ string key = 1;
145
+ string value = 2;
146
+ int64 version = 3;
147
+ }
148
+
149
+ message GetAccountResult {
150
+ string address = 1;
151
+ int64 balance = 2;
152
+ int64 nonce = 3;
153
+ bool auth_transfer = 4 [json_name = "auth_transfer"];
154
+ string metadatas_hash = 5 [json_name = "metadatas_hash"];
155
+ Contract contract = 6;
156
+ AccountPrivilege priv = 7;
157
+ repeated KeyPair metadatas = 8;
158
+ }
159
+
160
+ message GetAccountResponse {
161
+ string trace = 1;
162
+ GetAccountResult result = 2;
163
+ bool success = 3;
164
+ StatusCodes error_code = 4 [json_name = "error_code"];
165
+ string error_desc = 5 [json_name = "error_desc"];
166
+ }
167
+
168
+ message GetAccountBaseRequest {
169
+ string address = 1;
170
+ }
171
+
172
+ message GetAccountBaseResponse {
173
+ string trace = 1;
174
+ GetAccountResult result = 2;
175
+ bool success = 3;
176
+ StatusCodes error_code = 4 [json_name = "error_code"];
177
+ string error_desc = 5 [json_name = "error_desc"];
178
+ }
179
+
180
+ //获取指定账户metadata数据
181
+ message GetAccountMetadataRequest {
182
+ string address = 1;
183
+ string key = 2;
184
+ }
185
+
186
+ message GetAccountMetadataResponse {
187
+ string trace = 1;
188
+ map<string, KeyPair> result = 2;
189
+ bool success = 3;
190
+ StatusCodes error_code = 4 [json_name = "error_code"];
191
+ string error_desc = 5 [json_name = "error_desc"];
192
+ }
193
+
194
+ message GetLedgerRequest {
195
+ int64 seq = 1;
196
+ bool with_validator = 2;
197
+ bool with_leader = 3;
198
+ }
199
+
200
+ message LedgerHeader
201
+ {
202
+ int64 seq = 1;
203
+ string hash = 2;
204
+ string previous_hash = 3 [json_name = "previous_hash"];
205
+ string account_tree_hash = 4 [json_name = "account_tree_hash"];
206
+ int64 close_time = 5 [json_name = "close_time"];
207
+ string consensus_value_hash = 6 [json_name = "consensus_value_hash"];
208
+ int64 version = 7;
209
+ int64 tx_count = 8 [json_name = "tx_count"];
210
+ string validators_hash = 9 [json_name = "validators_hash"];
211
+ string fees_hash = 10 [json_name = "fees_hash"];
212
+ }
213
+
214
+ message GetLedgerResult {
215
+ string leader = 1;
216
+ repeated string validators = 2;
217
+ LedgerHeader header = 3;
218
+ int64 ledger_length = 4 [json_name = "ledger_length"];
219
+ }
220
+
221
+ message GetLedgerResponse {
222
+ string trace = 1;
223
+ GetLedgerResult result = 2;
224
+ bool success = 3;
225
+ StatusCodes error_code = 4 [json_name = "error_code"];
226
+ string error_desc = 5 [json_name = "error_desc"];
227
+ }
228
+
229
+ message Signature {
230
+ string public_key = 1 [json_name = "public_key"];
231
+ string sign_data = 2 [json_name = "sign_data"];
232
+ }
233
+
234
+ message TxBlob {
235
+ string transaction_blob = 1 [json_name = "transaction_blob"];;
236
+ repeated Signature signatures = 2;
237
+ }
238
+
239
+ message SubmitTransactionRequest {
240
+ repeated TxBlob items = 1;
241
+ }
242
+
243
+ message SubmitTransactionResult {
244
+ string hash = 1;
245
+ StatusCodes error_code = 4 [json_name = "error_code"];
246
+ string error_desc = 5 [json_name = "error_desc"];
247
+ }
248
+
249
+ message SubmitTransactionResponse {
250
+ repeated SubmitTransactionResult results = 1;
251
+ int64 success_count = 2 [json_name = "success_count"];
252
+ }
253
+
254
+ message GetTransactionHistoryRequest {
255
+ string hash = 1;
256
+ int64 ledger_seq = 2;
257
+ int64 start = 3;
258
+ int64 limit = 4;
259
+ }
260
+
261
+ message OperationCreateAccount{
262
+ string dest_address = 1 [json_name = "dest_address"];
263
+ Contract contract = 2;
264
+ AccountPrivilege priv = 3;
265
+ repeated KeyPair metadatas = 4;
266
+ int64 init_balance = 5 [json_name = "init_balance"];
267
+ string init_input = 6 [json_name = "init_input"];
268
+ }
269
+
270
+ message OperationPayCoin {
271
+ string dest_address = 1 [json_name = "dest_address"];
272
+ int64 amount = 2;
273
+ string input = 3;
274
+ }
275
+
276
+ message OperationSetMetadata{
277
+ string key = 1;
278
+ string value = 2;
279
+ int64 version = 3; //optional
280
+ bool delete_flag = 4 [json_name = "delete_flag"];
281
+ }
282
+
283
+ message OperationUpgradeContract {
284
+ string dest_address = 1 [json_name = "dest_address"];
285
+ string payload = 2;
286
+ int64 type = 3;
287
+ }
288
+
289
+ message OperationSetSignerWeight{
290
+ int64 master_weight = 1 [json_name = "master_weight"]; //required, [-1,MAX(UINT32)] -1: indicates no setting
291
+ repeated Signer signers = 2; //address:weight, if weight is 0, it indicates deleting this signer
292
+ }
293
+
294
+ message OperationSetThreshold{
295
+ int64 tx_threshold = 1 [json_name = "tx_threshold"];
296
+ repeated OperationTypeThreshold type_thresholds = 4; //type:threshold, threshold:0 indicates deleting this type
297
+ }
298
+
299
+ message OperationLog{
300
+ string topic = 1;
301
+ repeated string datas = 2;
302
+ repeated string topics = 3; //for evm
303
+ }
304
+
305
+ message OperationSetPrivilege{
306
+ string master_weight = 1 [json_name = "master_weight"];
307
+ repeated Signer signers = 2;
308
+ string tx_threshold = 3 [json_name = "tx_threshold"];
309
+ repeated OperationTypeThreshold type_thresholds = 4;
310
+ }
311
+
312
+ message ControlledArea{
313
+ enum TRUST_FLAG {
314
+ UNCERT = 0;
315
+ TRUSTED = 1;
316
+ UNTRUSTED = 2;
317
+ };
318
+
319
+ enum STATUS_FALG {
320
+ ENABLED = 0;
321
+ DISABLED = 1;
322
+ };
323
+
324
+ TRUST_FLAG trusted = 1;
325
+ STATUS_FALG status = 2;
326
+ repeated KeyPair attributes = 3 ;
327
+ }
328
+
329
+ message OperationSetControlledArea {
330
+ string dest_address = 1 [json_name = "dest_address"];
331
+ bool s_trusted = 2 [json_name = "s_trusted"];
332
+ bool s_status = 3 [json_name = "s_status"];
333
+ ControlledArea.TRUST_FLAG trusted = 4;
334
+ ControlledArea.STATUS_FALG status = 5;
335
+ repeated KeyPair attributes = 6;
336
+ }
337
+
338
+ message OperationAuthorizeTransfer{
339
+ string dest_address = 1 [json_name = "dest_address"];
340
+ bool auth = 2;
341
+ }
342
+
343
+ message Operation {
344
+ enum Type {
345
+ UNKNOWN = 0;
346
+ CREATE_ACCOUNT = 1;
347
+ SET_METADATA = 4;
348
+ SET_SIGNER_WEIGHT = 5;
349
+ SET_THRESHOLD = 6;
350
+ PAY_COIN = 7;
351
+ LOG = 8;
352
+ SET_PRIVILEGE = 9;
353
+ UPGRADE_CONTRACT = 10;
354
+ SET_CONTROLLED_AREA = 11;
355
+ AUTHORIZE_TRANSFER = 12;
356
+ };
357
+ Type type = 1;
358
+ string source_address = 2 [json_name = "source_address"];
359
+ string metadata = 3;
360
+
361
+ OperationCreateAccount create_account = 4 [json_name = "create_account"];
362
+ OperationSetMetadata set_metadata = 7 [json_name = "set_metadata"];
363
+ OperationSetSignerWeight set_signer_weight = 8 [json_name = "set_signer_weight"];
364
+ OperationSetThreshold set_threshold = 9 [json_name = "set_threshold"];
365
+ OperationPayCoin pay_coin = 10 [json_name = "pay_coin"];
366
+ OperationLog log = 11;
367
+ OperationSetPrivilege set_privilege = 12 [json_name = "set_privilege"];
368
+ OperationUpgradeContract upgrade_contract = 13 [json_name = "upgrade_contract"];
369
+ OperationSetControlledArea set_controlled_area = 14 [json_name = "set_controlled_area"];
370
+ OperationAuthorizeTransfer authorize_transfer = 15 [json_name = "authorize_transfer"];
371
+ }
372
+
373
+ message Transaction {
374
+ enum TxType{
375
+ INCREASE_NONCE = 0;
376
+ RANDOM_NONCE = 1;
377
+ };
378
+ string source_address = 1 [json_name = "source_address"];
379
+ int64 fee_limit = 2 [json_name = "fee_limit"];
380
+ int64 gas_price = 3 [json_name = "gas_price"];
381
+ string nonce = 4;
382
+ string metadata = 5;
383
+ TxType nonce_type = 6 [json_name = "nonce_type"];
384
+ int64 max_ledger_seq = 7 [json_name = "max_ledger_seq"];
385
+ repeated Operation operations = 8;
386
+ }
387
+
388
+ message TransactionEnv {
389
+ string hash = 1;
390
+ int64 actual_fee = 2 [json_name = "actual_fee"];
391
+ int64 close_time = 3 [json_name = "close_time"];
392
+ repeated string contract_tx_hashes = 4 [json_name = "contract_tx_hashes"];
393
+ StatusCodes error_code = 5 [json_name = "error_code"];
394
+ string error_desc = 6 [json_name = "error_desc"];
395
+ int64 ledger_seq = 7 [json_name = "ledger_seq"];
396
+ repeated Signature signatures = 8;
397
+ Transaction transaction = 9;
398
+ int64 tx_size = 10 [json_name = "tx_size"];
399
+ string blob = 11;
400
+ }
401
+
402
+ message GetTransactionHistoryResult {
403
+ int64 total_count = 1 [json_name = "total_count"];
404
+ repeated TransactionEnv transactions = 2;
405
+ }
406
+
407
+ message GetTransactionHistoryResponse {
408
+ string trace = 1;
409
+ GetTransactionHistoryResult result = 2;
410
+ bool success = 3;
411
+ StatusCodes error_code = 4 [json_name = "error_code"];
412
+ string error_desc = 5 [json_name = "error_desc"];
413
+ }
414
+
415
+ message TestTransaction {
416
+ Transaction transaction_json = 1 [json_name = "transaction_json"];
417
+ int64 signature_number = 2 [json_name = "signature_number"];
418
+ }
419
+
420
+ message TestTransactionRequest {
421
+ repeated TestTransaction items = 1;
422
+ }
423
+
424
+ message TestTransactionResult {
425
+ message Stat {
426
+ int64 apply_time = 1 [json_name = "apply_time"];
427
+ int64 memory_usage = 2 [json_name = "memory_usage"];
428
+ int64 stack_usage = 3 [json_name = "stack_usage"];
429
+ int64 step = 4;
430
+ }
431
+ message Transaction_env {
432
+ Transaction transaction = 1;
433
+ }
434
+ message TestTx {
435
+ int64 gas = 1;
436
+ Transaction_env transaction_env = 2 [json_name = "transaction_env"];
437
+ int64 actual_fee = 3 [json_name = "actual_fee"];
438
+ }
439
+ Stat stat = 1;
440
+ string hash = 2;
441
+ repeated TestTx txs = 3;
442
+ }
443
+
444
+ message TestTransactionResponse {
445
+ string trace = 1;
446
+ TestTransactionResult result = 2;
447
+ bool success = 3;
448
+ StatusCodes error_code = 4 [json_name = "error_code"];
449
+ string error_desc = 5 [json_name = "error_desc"];
450
+ }
451
+
452
+ message CallContractRequest{
453
+ string contract_address = 1 [json_name = "contract_address"];
454
+ string input = 2;
455
+ int64 fee_limit = 4 [json_name = "fee_limit"];
456
+ int64 gas_price = 5 [json_name = "gas_price"];
457
+ string source_address = 6 [json_name = "source_address"];
458
+ int64 opt_type = 7 [json_name = "opt_type"];
459
+ }
460
+
461
+ message CallContractResultSystem {
462
+ repeated QueryReturnSystem query_rets = 1 [json_name = "query_rets"];
463
+ }
464
+
465
+ message QueryReturnSystem {
466
+ Error error = 1;
467
+ SystemContractResult result = 2;
468
+ }
469
+
470
+ message SystemContractResult {
471
+ string data = 1;
472
+ }
473
+
474
+ message CallContractResultJs {
475
+ repeated QueryReturnJs query_rets = 1 [json_name = "query_rets"];
476
+ }
477
+
478
+ // 查询返回消息
479
+ message QueryReturnJs {
480
+ Error error = 1;
481
+ JsContractResult result = 2;
482
+ }
483
+
484
+ message JsContractResult {
485
+ string type = 1; // "string" 或 "bool"
486
+ string value = 2;
487
+ }
488
+
489
+ message CallContractResultEvm {
490
+ repeated QueryReturnEvm query_rets = 1 [json_name = "query_rets"];
491
+ }
492
+
493
+ message QueryReturnEvm {
494
+ Error error = 1;
495
+ EvmContractResult result = 2;
496
+ }
497
+
498
+ message EvmContractResult {
499
+ int32 code = 1;
500
+ string data = 2;
501
+ string desc = 3;
502
+ string eumcode = 4;
503
+ int64 gasused = 5;
504
+ }
505
+
506
+ // 错误消息
507
+ message Error {
508
+ string data = 1;
509
+ }
510
+
511
+ message QueryReturn {
512
+ string error = 1;
513
+ string result = 2;
514
+ }
515
+
516
+ message CallContractResult {
517
+ repeated QueryReturn query_rets = 1 [json_name = "query_rets"];
518
+ }
519
+
520
+ message CallContractResponse {
521
+ string trace = 1;
522
+ CallContractResult result = 2;
523
+ bool success = 3;
524
+ StatusCodes error_code = 4 [json_name = "error_code"];
525
+ string error_desc = 5 [json_name = "error_desc"];
526
+ }
527
+
528
+ message QueryRequest {
529
+ enum TxType{
530
+ BASE_TX = 0;
531
+ ENHANCED_TX = 1;
532
+ };
533
+ string bid = 1;
534
+ string hash = 2;
535
+ string tx_id = 3; //增强交易字段,暂时保留
536
+ string start_time = 4;
537
+ string end_time = 5;
538
+ TxType tx_type = 6;
539
+ int32 page = 7;
540
+ int32 page_size = 8;
541
+ int64 ledger_seq = 9;
542
+ }
543
+
544
+ message TransactionBase {
545
+ enum NetworkType {
546
+ UNKNOWN = 0; // 保留0作为未知或默认值
547
+ DOMESTIC_SPARK_EXPERIENCE = 1; // 国内星火体验网
548
+ DOMESTIC_SPARK_MAINNET = 2; // 国内星火主网
549
+ INTERNATIONAL_SPARK_EXPERIENCE = 3; // 国际星火体验网
550
+ INTERNATIONAL_SPARK_MAINNET = 4; //国际星火主网
551
+ }
552
+
553
+ enum TxType{
554
+ BASE_TX = 0;
555
+ ENHANCED_TX = 1;
556
+ };
557
+ string id = 1;
558
+ string tx_id = 2 [json_name = "tx_id"];
559
+ string hash = 3;
560
+ string api_key = 4 [json_name = "api_key"];
561
+ TxType tx_type = 5 [json_name = "tx_type"];
562
+ string create_time = 6 [json_name = "create_time"];
563
+ int64 ledger_seq = 7 [json_name = "ledger_seq"];
564
+ string source_address = 8 [json_name = "source_address"];
565
+ int64 actual_fee = 9 [json_name = "actual_fee"];
566
+ StatusCodes status = 10;
567
+ string status_desc = 11 [json_name = "status_desc"];
568
+ TransactionEnv base_transaction = 12 [json_name = "base_transaction"];
569
+ }
570
+
571
+ message QueryResult{
572
+ int64 count = 1;
573
+ int64 total_page = 2 [json_name = "total_page"];
574
+ repeated TransactionBase transaction_bases = 3 [json_name = "transaction_bases"];
575
+ }
576
+
577
+ message QueryResponse{
578
+ string trace = 1;
579
+ QueryResult result = 2;
580
+ bool success = 3;
581
+ StatusCodes error_code = 4 [json_name = "error_code"];
582
+ string error_desc = 5 [json_name = "error_desc"];
583
+ }
584
+
585
+ message GetTransactionCacheRequest{
586
+ enum PoolType{
587
+ PLATFORM = 0;
588
+ CHAIN = 1;
589
+ };
590
+ int64 limit = 2;
591
+ string hash = 3;
592
+ string address = 4;
593
+ }
594
+
595
+ message PlatformTransaction{
596
+ TransactionBase transactions = 1;
597
+ }
598
+
599
+ message ChainTransaction{
600
+ string status = 1;
601
+ string incoming_time = 2 [json_name = "incoming_time"];
602
+ string hash = 3;
603
+ repeated Signature signatures = 4;
604
+ Transaction transaction = 5;
605
+ }
606
+
607
+ message GetTransactionCacheChainResult{
608
+ int64 total_count = 1 [json_name = "total_count"];
609
+ repeated ChainTransaction transactions = 3 [json_name = "transactions"];
610
+ }
611
+
612
+ message GetTransactionCachePlatResult{
613
+ int64 total_count = 1 [json_name = "total_count"];
614
+ repeated TransactionEnv transactions = 3 [json_name = "transactions"];
615
+ }
616
+
617
+ message GetTransactionCacheChainResponse{
618
+ string trace = 1;
619
+ GetTransactionCacheChainResult result = 2;
620
+ bool success = 3;
621
+ StatusCodes error_code = 4 [json_name = "error_code"];
622
+ string error_desc = 5 [json_name = "error_desc"];
623
+ }
624
+
625
+ message GetTransactionCachePlatResponse{
626
+ string trace = 1;
627
+ GetTransactionCachePlatResult result = 2;
628
+ bool success = 3;
629
+ StatusCodes error_code = 4 [json_name = "error_code"];
630
+ string error_desc = 5 [json_name = "error_desc"];
631
+ }
632
+
633
+ message DiscardRequest{
634
+ string hash = 1;
635
+ int32 page = 2;
636
+ int32 page_size = 3;
637
+ }
638
+
639
+ message DiscardResult {
640
+ int64 count = 1;
641
+ int64 total_page = 2 [json_name = "total_page"];
642
+ repeated TransactionBase transaction_bases = 3 [json_name = "transaction_bases"];
643
+ }
644
+
645
+ message DiscardResponse {
646
+ string trace = 1;
647
+ DiscardResult result = 2;
648
+ bool success = 3;
649
+ StatusCodes error_code = 4 [json_name = "error_code"];
650
+ string error_desc = 5 [json_name = "error_desc"];
651
+ }
652
+
653
+ message GetTxCacheSizeResult {
654
+ int64 queue_size = 1 [json_name = "queue_size"];
655
+ }
656
+
657
+ message GetTxCacheSizeResponse {
658
+ string trace = 1;
659
+ GetTxCacheSizeResult result = 2;
660
+ bool success = 3;
661
+ StatusCodes error_code = 4 [json_name = "error_code"];
662
+ string error_desc = 5 [json_name = "error_desc"];
663
+ }
664
+
665
+
666
+
667
+ //开放平台状态码定义
668
+ enum StatusCodes {
669
+ // 成功状态
670
+ SUCCESS = 0;
671
+
672
+ // 服务内部错误
673
+ INTERNAL_SERVER_ERROR = 1;
674
+
675
+ // 参数错误
676
+ INVALID_PARAMETER = 2;
677
+
678
+ // 对象已存在,如重复提交交易
679
+ OBJECT_ALREADY_EXISTS = 3;
680
+
681
+ // 对象不存在,如查询不到账号、TX、区块等
682
+ OBJECT_NOT_FOUND = 4;
683
+
684
+ // TX 超时
685
+ TX_TIMEOUT = 5;
686
+
687
+ // 账户禁止使用
688
+ ACCOUNT_FORBIDDEN = 6;
689
+
690
+ // 数学计算溢出
691
+ MATH_OVERFLOW = 7;
692
+
693
+ // 公钥非法
694
+ ILLEGAL_PUBLIC_KEY = 90;
695
+
696
+ // 私钥非法
697
+ ILLEGAL_PRIVATE_KEY = 91;
698
+
699
+ // 签名权重不够,达不到操作的门限值
700
+ INSUFFICIENT_SIGNATURE_WEIGHT = 93;
701
+
702
+ // 地址非法
703
+ ILLEGAL_ADDRESS = 94;
704
+
705
+ // 交易缺失操作
706
+ MISSING_TRANSACTION_OPERATION = 97;
707
+
708
+ // 单笔交易内超过了100个操作
709
+ TOO_MANY_OPERATIONS = 98;
710
+
711
+ // 交易序号错误,nonce错误
712
+ INVALID_NONCE = 99;
713
+
714
+ // 余额不足
715
+ INSUFFICIENT_BALANCE = 100;
716
+
717
+ // 源和目的账号相等
718
+ SOURCE_AND_DESTINATION_EQUAL = 101;
719
+
720
+ // 创建账号操作,目标账号已存在
721
+ ACCOUNT_ALREADY_EXISTS = 102;
722
+
723
+ // 账户不存在
724
+ ACCOUNT_NOT_FOUND = 103;
725
+
726
+ // 创建账号初始化资产小于配置文件中最小费用
727
+ INSUFFICIENT_INITIAL_ASSETS = 106;
728
+
729
+ // 费用不足
730
+ INSUFFICIENT_FEE = 111;
731
+
732
+ // 权重值不在有效范围
733
+ WEIGHT_OUT_OF_RANGE = 120;
734
+
735
+ // 门限值不在有效范围
736
+ THRESHOLD_OUT_OF_RANGE = 121;
737
+
738
+ // metadata的version版本号不与已有的匹配
739
+ MISMATCHING_METADATA_VERSION = 144;
740
+
741
+ // 交易数据超出上限
742
+ TRANSACTION_DATA_TOO_LARGE = 146;
743
+
744
+ // 合约执行失败
745
+ CONTRACT_EXECUTION_FAILED = 151;
746
+
747
+ // 合约语法分析失败
748
+ CONTRACT_PARSE_FAILED = 152;
749
+
750
+ // 合约递归深度超出上限
751
+ CONTRACT_RECURSION_DEPTH_EXCEEDED = 153;
752
+
753
+ // 合约产生的交易超出上限
754
+ CONTRACT_GENERATED_TOO_MANY_TRANSACTIONS = 154;
755
+
756
+ // 合约执行超时
757
+ CONTRACT_EXECUTION_TIMEOUT = 155;
758
+
759
+ // 目标地址非合约账户
760
+ NON_CONTRACT_ADDRESS = 156;
761
+
762
+ // 插入交易缓存队列失败
763
+ FAILED_TO_INSERT_INTO_TX_QUEUE = 160;
764
+
765
+ // 禁止转移星火令
766
+ FORBIDDEN_SPARK_TOKEN_TRANSFER = 161;
767
+
768
+ // 服务域不存在
769
+ SERVICE_DOMAIN_NOT_FOUND = 170;
770
+
771
+ // 快速同步的快照不存在
772
+ SNAPSHOT_NOT_FOUND_FOR_FAST_SYNC = 180;
773
+
774
+ // 快速同步获取快照数据错误
775
+ ERROR_RETRIEVING_SNAPSHOT_FOR_FAST_SYNC = 181;
776
+
777
+ // 交易nonce重复,nonce在缓存中 (需重新发送交易)
778
+ DUPLICATE_NONCE_IN_CACHE = 183;
779
+
780
+ // 交易最大区块数错误,小于当前区块高度 (需要重新获取区块高度序列化接口)
781
+ INVALID_MAX_BLOCK_NUMBER = 184;
782
+
783
+ // 请求的API不存在
784
+ API_NOT_FOUND = 1013;
785
+
786
+ // 请求的API已停用
787
+ API_DEPRECATED = 1015;
788
+
789
+ // timeout
790
+ TIMEOUT = 1016;
791
+
792
+ // 参数类型解析异常
793
+ PARAMETER_TYPE_PARSING_EXCEPTION = -3;
794
+
795
+ // 无效参数异常
796
+ INVALID_PARAMETER_EXCEPTION = -6;
797
+
798
+ // 请求类型异常
799
+ REQUEST_TYPE_EXCEPTION = -7;
800
+
801
+ // 统一验证参数异常
802
+ UNIFIED_VALIDATION_EXCEPTION = -9;
803
+
804
+ // 不支持当前请求类型
805
+ METHOD_NOT_ALLOWED = 405;
806
+
807
+ // 交易数据中包含敏感词汇
808
+ SENSITIVE_WORDS_IN_TRANSACTION = 1101;
809
+
810
+ // 您的合约地址未在项目合约白名单
811
+ CONTRACT_ADDRESS_NOT_IN_WHITELIST = 1102;
812
+
813
+ // 请检查交易数据是否合规
814
+ ILLEGAL_TRANSACTION_DATA = 1103;
815
+
816
+ // 交易类型不存在
817
+ TRANSACTION_TYPE_NOT_FOUND = 1105;
818
+
819
+ // 远程调用失败
820
+ REMOTE_CALL_FAILED = 1106;
821
+
822
+ // 交易池类型不存在
823
+ TRANSACTION_POOL_TYPE_NOT_FOUND = 1107;
824
+
825
+ // 参数超出限制
826
+ PARAMETER_OUT_OF_RANGE = 1108;
827
+
828
+ // 非法参数
829
+ ILLEGAL_PARAMETER = 1109;
830
+
831
+ // 当bid 或 tx_id为不为空时,tx_type为必填
832
+ TX_TYPE_REQUIRED = 1110;
833
+
834
+ // 业务参数不能为空
835
+ BUSINESS_PARAMETER_CANNOT_BE_EMPTY = 1111;
836
+
837
+ // API Key不存在
838
+ API_KEY_NOT_FOUND = 1122;
839
+
840
+ // 每秒请求频次超出限制
841
+ REQUEST_RATE_EXCEEDED_PER_SECOND = 1200;
842
+
843
+ // 每日请求频次超出限制
844
+ REQUEST_RATE_EXCEEDED_PER_DAY = 1201;
845
+
846
+ // 您已无资源可用
847
+ NO_RESOURCES_AVAILABLE = 1202;
848
+
849
+ // 项目已被删除
850
+ PROJECT_DELETED = 1203;
851
+
852
+ // 项目已禁用
853
+ PROJECT_DISABLED = 1204;
854
+
855
+ // 项目被拉入黑名单
856
+ PROJECT_BLACKLISTED = 1205;
857
+
858
+ // 账户被拉入黑名单
859
+ ACCOUNT_BLACKLISTED = 1206;
860
+
861
+ // 请在Header中传入API Secret
862
+ API_SECRET_REQUIRED_IN_HEADER = 1207;
863
+
864
+ // 传入的API Secret与项目不匹配
865
+ MISMATCHING_API_SECRET = 1208;
866
+
867
+ // 增强交易服务未开启
868
+ ENHANCED_TRANSACTION_SERVICE_NOT_ENABLED = 1209;
869
+
870
+ // 项目类型与API类型不一致
871
+ MISMATCHING_PROJECT_AND_API_TYPE = 1210;
872
+
873
+ // 当前项目还没有主网权限
874
+ PROJECT_WITHOUT_MAINNET_PERMISSION = 1211;
875
+
876
+ // 平台队列中
877
+ IN_PLATFORM_QUEUE = 1311;
878
+
879
+ // 交易已提交到星火链
880
+ TRANSACTION_SUBMITTED_TO_SPARKCHAIN = 1312;
881
+
882
+ // 平台交易池超时丢弃
883
+ TRANSACTION_POOL_TIMEOUT_DISCARD = 1313;
884
+
885
+ // 项目暂无交易池(增强交易)
886
+ NO_TRANSACTION_POOL_FOR_PROJECT = 1314;
887
+
888
+ // 交易已存在
889
+ TRANSACTION_ALREADY_EXISTS = 1315;
890
+
891
+ // 星火链超时丢弃
892
+ SPARKCHAIN_TIMEOUT_DISCARD = 1316;
893
+
894
+ // 交易操作频繁
895
+ TOO_MANY_TRANSACTION_OPERATIONS = 1317;
896
+
897
+ URL_ERROR = 9999;
898
+ }