@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.
- package/CHANGELOG.md +34 -0
- package/LICENSE +202 -0
- package/NOTICE +5 -0
- package/README.md +112 -0
- package/package.json +90 -0
- package/src/bop/bop-base/README.md +5 -0
- package/src/bop/bop-base/base.ts +366 -0
- package/src/bop/bop-base/index.ts +83 -0
- package/src/bop/bop-base/permit.ts +116 -0
- package/src/bop/bop-base/test/base.test.ts +867 -0
- package/src/bop/bop-base/test/index.test.ts +69 -0
- package/src/bop/bop-base/test/permit.test.ts +125 -0
- package/src/bop/bop-base/tsconfig.json +8 -0
- package/src/bop/bop-proto/README.md +2 -0
- package/src/bop/bop-proto/bop-ws.proto +266 -0
- package/src/bop/bop-proto/bop-ws.ts +4447 -0
- package/src/bop/bop-proto/bop.proto +898 -0
- package/src/bop/bop-proto/bop.ts +12890 -0
- package/src/bop/bop-proto/tsconfig.json +8 -0
- package/src/bop/bop-ws/index.ts +315 -0
- package/src/bop/bop-ws/sample/sample.ts +107 -0
- package/src/bop/bop-ws/tsconfig.json +8 -0
- package/src/bop/index.ts +14 -0
- package/src/bop-sdk/index.ts +22 -0
- package/src/bop-sdk/interface/abstract-service/abstract-account.ts +23 -0
- package/src/bop-sdk/interface/abstract-service/abstract-chain.ts +9 -0
- package/src/bop-sdk/interface/abstract-service/abstract-contract.ts +16 -0
- package/src/bop-sdk/interface/abstract-service/abstract-ledger.ts +15 -0
- package/src/bop-sdk/interface/abstract-service/abstract-provider.ts +13 -0
- package/src/bop-sdk/interface/abstract-service/abstract-signer.ts +133 -0
- package/src/bop-sdk/interface/abstract-service/abstract-transaction.ts +86 -0
- package/src/bop-sdk/interface/provider-ws.ts +10 -0
- package/src/bop-sdk/interface/provider.ts +22 -0
- package/src/bop-sdk/interface/service/3rd.ts +54 -0
- package/src/bop-sdk/interface/service/account.ts +86 -0
- package/src/bop-sdk/interface/service/chain.ts +27 -0
- package/src/bop-sdk/interface/service/contract.ts +51 -0
- package/src/bop-sdk/interface/service/helper.ts +426 -0
- package/src/bop-sdk/interface/service/ledger.ts +75 -0
- package/src/bop-sdk/interface/service/offline/check/index.js +138 -0
- package/src/bop-sdk/interface/service/offline/common/constant.js +6 -0
- package/src/bop-sdk/interface/service/offline/common/snowFlakeUtils.js +192 -0
- package/src/bop-sdk/interface/service/offline/common/util.js +511 -0
- package/src/bop-sdk/interface/service/offline/exception/customErrors.js +29 -0
- package/src/bop-sdk/interface/service/offline/exception/errors.js +90 -0
- package/src/bop-sdk/interface/service/offline/exception/index.js +5 -0
- package/src/bop-sdk/interface/service/offline/operation/accountCreateOperation.js +28 -0
- package/src/bop-sdk/interface/service/offline/operation/accountSetMetadataOperation.js +44 -0
- package/src/bop-sdk/interface/service/offline/operation/accountSetPrivilegeOperation.js +49 -0
- package/src/bop-sdk/interface/service/offline/operation/contractCreateOperation.js +43 -0
- package/src/bop-sdk/interface/service/offline/operation/contractInvokeOperation.js +42 -0
- package/src/bop-sdk/interface/service/offline/operation/contractInvokeRequestOperation.js +69 -0
- package/src/bop-sdk/interface/service/offline/operation/gasSendOperation.js +29 -0
- package/src/bop-sdk/interface/service/offline/operation/gasSendRequestOperation.js +61 -0
- package/src/bop-sdk/interface/service/offline/operation/index.js +20 -0
- package/src/bop-sdk/interface/service/offline/proto/chain_pb.js +12079 -0
- package/src/bop-sdk/interface/service/offline/proto/common_pb.js +2867 -0
- package/src/bop-sdk/interface/service/offline/transaction/index.js +988 -0
- package/src/bop-sdk/interface/service/offline/transaction/operations.js +188 -0
- package/src/bop-sdk/interface/service/offline/validate/account.js +152 -0
- package/src/bop-sdk/interface/service/offline/validate/contract.js +101 -0
- package/src/bop-sdk/interface/service/offline/validate/index.js +10 -0
- package/src/bop-sdk/interface/service/offline/validate/transaction.js +51 -0
- package/src/bop-sdk/interface/service/transaction.ts +731 -0
- package/src/bop-sdk/interface/signer.ts +46 -0
- package/src/bop-sdk/interface/test/3rd.test.ts +1571 -0
- package/src/bop-sdk/interface/test/account.test.ts +284 -0
- package/src/bop-sdk/interface/test/chain.test.ts +45 -0
- package/src/bop-sdk/interface/test/contract.test.ts +283 -0
- package/src/bop-sdk/interface/test/ledger.test.ts +166 -0
- package/src/bop-sdk/interface/test/provider.test.ts +407 -0
- package/src/bop-sdk/interface/test/signer.test.ts +105 -0
- package/src/bop-sdk/interface/test/transaction.test.ts +713 -0
- package/src/bop-sdk/proto/bop-sdk-common.proto +159 -0
- package/src/bop-sdk/proto/bop-sdk-common.ts +829 -0
- package/src/bop-sdk/proto/bop-sdk-interface.proto +581 -0
- package/src/bop-sdk/proto/bop-sdk-interface.ts +10839 -0
- package/src/bop-sdk/proto/bop-sdk-utils.proto +86 -0
- package/src/bop-sdk/proto/bop-sdk-utils.ts +1495 -0
- package/src/bop-sdk/utils/abi/abi-coder.ts +147 -0
- package/src/bop-sdk/utils/abi/address.ts +109 -0
- package/src/bop-sdk/utils/abi/bignumber.ts +403 -0
- package/src/bop-sdk/utils/abi/bytes.ts +565 -0
- package/src/bop-sdk/utils/abi/coders/abstract-coder.ts +239 -0
- package/src/bop-sdk/utils/abi/coders/address.ts +58 -0
- package/src/bop-sdk/utils/abi/coders/anonymous.ts +25 -0
- package/src/bop-sdk/utils/abi/coders/array.ts +275 -0
- package/src/bop-sdk/utils/abi/coders/boolean.ts +21 -0
- package/src/bop-sdk/utils/abi/coders/bytes.ts +36 -0
- package/src/bop-sdk/utils/abi/coders/fixed-bytes.ts +35 -0
- package/src/bop-sdk/utils/abi/coders/null.ts +25 -0
- package/src/bop-sdk/utils/abi/coders/number.ts +56 -0
- package/src/bop-sdk/utils/abi/coders/string.ts +24 -0
- package/src/bop-sdk/utils/abi/coders/tuple.ts +73 -0
- package/src/bop-sdk/utils/abi/constants/addresses.ts +1 -0
- package/src/bop-sdk/utils/abi/constants/bignumbers.ts +30 -0
- package/src/bop-sdk/utils/abi/constants/hashes.ts +2 -0
- package/src/bop-sdk/utils/abi/constants/index.ts +15 -0
- package/src/bop-sdk/utils/abi/constants/strings.ts +2 -0
- package/src/bop-sdk/utils/abi/fragments.ts +1243 -0
- package/src/bop-sdk/utils/abi/id.ts +6 -0
- package/src/bop-sdk/utils/abi/index.ts +46 -0
- package/src/bop-sdk/utils/abi/interface.ts +921 -0
- package/src/bop-sdk/utils/abi/keccak256.ts +9 -0
- package/src/bop-sdk/utils/abi/properties.ts +172 -0
- package/src/bop-sdk/utils/abi/strings/bytes32.ts +40 -0
- package/src/bop-sdk/utils/abi/strings/idna.ts +258 -0
- package/src/bop-sdk/utils/abi/strings/index.ts +28 -0
- package/src/bop-sdk/utils/abi/strings/utf8.ts +373 -0
- package/src/bop-sdk/utils/encryption-address.ts +501 -0
- package/src/bop-sdk/utils/encryption-crypto.ts +427 -0
- package/src/bop-sdk/utils/encryption-mnemonics.ts +120 -0
- package/src/bop-sdk/utils/index.ts +27 -0
- package/src/bop-sdk/utils/logger.ts +480 -0
- package/src/index.ts +35 -0
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { LedgerByBop } from "../service/ledger";
|
|
2
|
+
import { expect } from "chai";
|
|
3
|
+
import * as sinon from "sinon";
|
|
4
|
+
import { BopInterface, Config } from "../../../bop/bop-base";
|
|
5
|
+
import {
|
|
6
|
+
LedgerLeaderResponse,
|
|
7
|
+
LedgerNumberResponse,
|
|
8
|
+
LedgerResponse,
|
|
9
|
+
LedgerTxHashesResponse,
|
|
10
|
+
LedgerValidatorsResponse,
|
|
11
|
+
} from "../../proto/bop-sdk-interface";
|
|
12
|
+
|
|
13
|
+
// 使用 Sinon 创建模拟对象
|
|
14
|
+
const sandbox = sinon.createSandbox();
|
|
15
|
+
describe("provider-ledger-test", () => {
|
|
16
|
+
let ledger: LedgerByBop;
|
|
17
|
+
|
|
18
|
+
let bopInterface: BopInterface;
|
|
19
|
+
let config: Config;
|
|
20
|
+
|
|
21
|
+
beforeEach(() => {
|
|
22
|
+
config = new Config("https://bif-mainnet.bitfactory.cn", "xxx", "xxx");
|
|
23
|
+
bopInterface = new BopInterface(config);
|
|
24
|
+
|
|
25
|
+
ledger = new LedgerByBop(bopInterface);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
afterEach(() => {
|
|
29
|
+
// 重置模拟对象
|
|
30
|
+
sandbox.restore();
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
describe("ledger test", () => {
|
|
34
|
+
it("ledger.getLedgerNumber", async () => {
|
|
35
|
+
let response: LedgerNumberResponse;
|
|
36
|
+
response = await ledger.getLedgerNumber();
|
|
37
|
+
console.log(response);
|
|
38
|
+
expect(response.errorCode).to.equal(0);
|
|
39
|
+
expect(response.result).to.greaterThan(10000);
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
it("ledger.getLedger - latest", async () => {
|
|
43
|
+
let response: LedgerResponse;
|
|
44
|
+
response = await ledger.getLedger();
|
|
45
|
+
console.log(response);
|
|
46
|
+
expect(response.errorCode).to.equal(0);
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
it("ledger.getLedger - 1", async () => {
|
|
50
|
+
let response: LedgerResponse;
|
|
51
|
+
response = await ledger.getLedger(1);
|
|
52
|
+
console.log(response);
|
|
53
|
+
expect(response.errorCode).to.equal(0);
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
it("ledger.getLedger - 999999999", async () => {
|
|
57
|
+
let response: LedgerResponse;
|
|
58
|
+
response = await ledger.getLedger(999999999);
|
|
59
|
+
console.log(response);
|
|
60
|
+
expect(response.errorCode).to.equal(4);
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
it("ledger.getLedger - seq(-1)", async () => {
|
|
64
|
+
let response: LedgerResponse;
|
|
65
|
+
response = await ledger.getLedger(-1);
|
|
66
|
+
console.log(response);
|
|
67
|
+
expect(response.errorCode).to.equal(4);
|
|
68
|
+
expect(response.errorDesc).to.equal(
|
|
69
|
+
"The object does not exist, such as not being able to query accounts, TX, blocks, etc",
|
|
70
|
+
);
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
it("ledger.getLedger - seq(0)", async () => {
|
|
74
|
+
let response: LedgerResponse;
|
|
75
|
+
response = await ledger.getLedger(0);
|
|
76
|
+
console.log(response);
|
|
77
|
+
expect(response.errorCode).to.equal(4);
|
|
78
|
+
expect(response.errorDesc).to.equal(
|
|
79
|
+
"The object does not exist, such as not being able to query accounts, TX, blocks, etc",
|
|
80
|
+
);
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
it("ledger.getLedgerLeader - seq(5774903)", async () => {
|
|
84
|
+
let response: LedgerLeaderResponse;
|
|
85
|
+
response = await ledger.getLedgerLeader(5774903);
|
|
86
|
+
console.log(response);
|
|
87
|
+
expect(response.errorCode).to.equal(0);
|
|
88
|
+
expect(response.errorDesc).to.equal("ok");
|
|
89
|
+
expect(response.result).to.equal(
|
|
90
|
+
"did:bid:efk8iXFgo533n7waZAym6WVeZNPKKyX5",
|
|
91
|
+
);
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
it("ledger.getLedgerLeader - seq(latest)", async () => {
|
|
95
|
+
let response: LedgerLeaderResponse;
|
|
96
|
+
response = await ledger.getLedgerLeader();
|
|
97
|
+
console.log(response);
|
|
98
|
+
expect(response.errorCode).to.equal(0);
|
|
99
|
+
expect(response.errorDesc).to.equal("ok");
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
it("ledger.getLedgerLeader - seq(999999999)", async () => {
|
|
103
|
+
let response: LedgerLeaderResponse;
|
|
104
|
+
response = await ledger.getLedgerLeader(999999999);
|
|
105
|
+
console.log(response);
|
|
106
|
+
expect(response.errorCode).to.equal(4);
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
it("ledger.getLedgerValidators - seq(5774903)", async () => {
|
|
110
|
+
let response: LedgerValidatorsResponse;
|
|
111
|
+
response = await ledger.getLedgerValidators(5774903);
|
|
112
|
+
console.log(response);
|
|
113
|
+
expect(response.errorCode).to.equal(0);
|
|
114
|
+
expect(response.errorDesc).to.equal("ok");
|
|
115
|
+
expect(JSON.stringify(response.result)).to.equal(
|
|
116
|
+
'["did:bid:efuDacbAeXdwBENVkPCYNQQVE7KvYVkP","did:bid:efperBrbfFJrpRUebqDSmXjoLKoBiuGT","did:bid:ef16mauW9ukBbLqYpbZ8b7bavXTPeGMC","did:bid:efk8iXFgo533n7waZAym6WVeZNPKKyX5"]',
|
|
117
|
+
);
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
it("ledger.getLedgerValidators - seq(latest)", async () => {
|
|
121
|
+
let response: LedgerValidatorsResponse;
|
|
122
|
+
response = await ledger.getLedgerValidators();
|
|
123
|
+
console.log(response);
|
|
124
|
+
expect(response.errorCode).to.equal(0);
|
|
125
|
+
expect(response.errorDesc).to.equal("ok");
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
it("ledger.getLedgerValidators - seq(999999999)", async () => {
|
|
129
|
+
let response: LedgerValidatorsResponse;
|
|
130
|
+
response = await ledger.getLedgerValidators(999999999);
|
|
131
|
+
console.log(response);
|
|
132
|
+
expect(response.errorCode).to.equal(4);
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
it("ledger.getLedgerTxHashes - seq(5774920)", async () => {
|
|
136
|
+
let response: LedgerTxHashesResponse;
|
|
137
|
+
response = await ledger.getLedgerTxHashes(5774920);
|
|
138
|
+
console.log(response);
|
|
139
|
+
expect(response.errorCode).to.equal(0);
|
|
140
|
+
expect(response.errorDesc).to.equal("ok");
|
|
141
|
+
expect(response.result.length).to.equal(2);
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
it("ledger.getLedgerTxHashes - seq(-1)", async () => {
|
|
145
|
+
let response: LedgerTxHashesResponse;
|
|
146
|
+
response = await ledger.getLedgerTxHashes(-1);
|
|
147
|
+
console.log(response);
|
|
148
|
+
expect(response.errorCode).to.equal(4);
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
it("ledger.getLedgerTxHashes - seq(latest)", async () => {
|
|
152
|
+
let response: LedgerTxHashesResponse;
|
|
153
|
+
response = await ledger.getLedgerTxHashes();
|
|
154
|
+
console.log(response);
|
|
155
|
+
expect(response.errorCode).to.equal(0);
|
|
156
|
+
expect(response.errorDesc).to.equal("ok");
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
it("ledger.getLedgerTxHashes - seq(999999999)", async () => {
|
|
160
|
+
let response: LedgerTxHashesResponse;
|
|
161
|
+
response = await ledger.getLedgerTxHashes(999999999);
|
|
162
|
+
console.log(response);
|
|
163
|
+
expect(response.errorCode).to.equal(4);
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
});
|
|
@@ -0,0 +1,407 @@
|
|
|
1
|
+
import { expect } from "chai";
|
|
2
|
+
import * as sinon from "sinon";
|
|
3
|
+
import { ProviderByBop } from "../provider";
|
|
4
|
+
import { BopInterface, Config } from "../../../bop/bop-base";
|
|
5
|
+
import {
|
|
6
|
+
GetChainInfoResponse,
|
|
7
|
+
GetNetworkIdResponse,
|
|
8
|
+
LedgerResponse,
|
|
9
|
+
LedgerNumberResponse,
|
|
10
|
+
LedgerLeaderResponse,
|
|
11
|
+
LedgerValidatorsResponse,
|
|
12
|
+
LedgerTxHashesResponse,
|
|
13
|
+
GetAccountResponse,
|
|
14
|
+
GetAccountMetadataResponse,
|
|
15
|
+
GetAccountIncreaseNonceResponse,
|
|
16
|
+
GetAccountBalanceResponse,
|
|
17
|
+
GetAccountPrivResponse,
|
|
18
|
+
CheckContractAccountResponse,
|
|
19
|
+
GetContractInfoResponse,
|
|
20
|
+
TestTransactionRequest,
|
|
21
|
+
TestTransactionResponse,
|
|
22
|
+
CallContractRequest,
|
|
23
|
+
CallContractResponse,
|
|
24
|
+
GetTxPoolSizeResponse,
|
|
25
|
+
GetTransactionCacheResponse,
|
|
26
|
+
GetTransactionHistoryResponse,
|
|
27
|
+
SubmitTransactionParams,
|
|
28
|
+
SubmitTransactionResponse,
|
|
29
|
+
} from "bop-sdk/proto/bop-sdk-interface";
|
|
30
|
+
import {
|
|
31
|
+
ApplyRequest,
|
|
32
|
+
ApplyResponse,
|
|
33
|
+
ApplyStatusRequest,
|
|
34
|
+
ApplyStatusResponse,
|
|
35
|
+
DetailRequest,
|
|
36
|
+
DetailResponse,
|
|
37
|
+
DiscardRequest,
|
|
38
|
+
DiscardResponse,
|
|
39
|
+
QueryRequest,
|
|
40
|
+
QueryResponse,
|
|
41
|
+
} from "bop/bop-proto/bop";
|
|
42
|
+
|
|
43
|
+
describe("provider-test", () => {
|
|
44
|
+
//normal
|
|
45
|
+
let provider: ProviderByBop;
|
|
46
|
+
|
|
47
|
+
let bopInterface: BopInterface;
|
|
48
|
+
let config: Config;
|
|
49
|
+
|
|
50
|
+
//abnormal
|
|
51
|
+
let provider2: ProviderByBop;
|
|
52
|
+
|
|
53
|
+
let bopInterface2: BopInterface;
|
|
54
|
+
let config2: Config;
|
|
55
|
+
|
|
56
|
+
beforeEach(() => {
|
|
57
|
+
config = new Config("https://bif-mainnet.bitfactory.cn", "xxx", "xxx");
|
|
58
|
+
bopInterface = new BopInterface(config);
|
|
59
|
+
provider = new ProviderByBop(bopInterface);
|
|
60
|
+
|
|
61
|
+
config2 = new Config("ht://xxx", "xx", "xx");
|
|
62
|
+
bopInterface2 = new BopInterface(config2);
|
|
63
|
+
provider2 = new ProviderByBop(bopInterface2);
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
describe("abnormal provider test", () => {
|
|
67
|
+
it("provider2.chain.getChainInfo", async () => {
|
|
68
|
+
let response =
|
|
69
|
+
(await provider2.chain.getChainInfo()) as GetChainInfoResponse;
|
|
70
|
+
console.log(response);
|
|
71
|
+
expect(response.errorCode).to.equal(9999);
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
describe("provider test", () => {
|
|
76
|
+
it("provider.chain.getChainInfo", async () => {
|
|
77
|
+
let response =
|
|
78
|
+
(await provider.chain.getChainInfo()) as GetChainInfoResponse;
|
|
79
|
+
console.log(response);
|
|
80
|
+
expect(response.errorCode).to.equal(0);
|
|
81
|
+
expect(response.result?.networkId).to.equal("16234539267878");
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
it("provider.chain.getNetworkId", async () => {
|
|
85
|
+
let response =
|
|
86
|
+
(await provider.chain.getNetworkId()) as GetNetworkIdResponse;
|
|
87
|
+
console.log(response);
|
|
88
|
+
expect(response.errorCode).to.equal(0);
|
|
89
|
+
expect(response.result).to.equal("16234539267878");
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
it("provider.ledger.getLedgerNumber", async () => {
|
|
93
|
+
let response =
|
|
94
|
+
(await provider.ledger.getLedgerNumber()) as LedgerNumberResponse;
|
|
95
|
+
console.log(response);
|
|
96
|
+
expect(response.errorCode).to.equal(0);
|
|
97
|
+
expect(response.result).to.greaterThan(10000);
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
it("provider.ledger.getLedger", async () => {
|
|
101
|
+
let response = (await provider.ledger.getLedger()) as LedgerResponse;
|
|
102
|
+
console.log(response);
|
|
103
|
+
expect(response.errorCode).to.equal(0);
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
it("provider.ledger.getLedgerLeader", async () => {
|
|
107
|
+
let response = (await provider.ledger.getLedgerLeader(
|
|
108
|
+
5777886,
|
|
109
|
+
)) as LedgerLeaderResponse;
|
|
110
|
+
console.log(response);
|
|
111
|
+
expect(response.errorCode).to.equal(0);
|
|
112
|
+
expect(response.result).to.equal(
|
|
113
|
+
"did:bid:efk8iXFgo533n7waZAym6WVeZNPKKyX5",
|
|
114
|
+
);
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
it("provider.ledger.getLedgerValidators", async () => {
|
|
118
|
+
let response = (await provider.ledger.getLedgerValidators(
|
|
119
|
+
5777886,
|
|
120
|
+
)) as LedgerValidatorsResponse;
|
|
121
|
+
console.log(response);
|
|
122
|
+
expect(response.errorCode).to.equal(0);
|
|
123
|
+
expect(JSON.stringify(response.result)).to.equal(
|
|
124
|
+
'["did:bid:efuDacbAeXdwBENVkPCYNQQVE7KvYVkP","did:bid:efperBrbfFJrpRUebqDSmXjoLKoBiuGT","did:bid:ef16mauW9ukBbLqYpbZ8b7bavXTPeGMC","did:bid:efk8iXFgo533n7waZAym6WVeZNPKKyX5"]',
|
|
125
|
+
);
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
it("provider.ledger.getLedgerTxHashes", async () => {
|
|
129
|
+
let response =
|
|
130
|
+
(await provider.ledger.getLedgerTxHashes()) as LedgerTxHashesResponse;
|
|
131
|
+
console.log(response);
|
|
132
|
+
expect(response.errorCode).to.equal(0);
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
it("provider.account.getAccount", async () => {
|
|
136
|
+
let response = (await provider.account.getAccount(
|
|
137
|
+
"did:bid:efEnXEGWYjHRw1CzK4KpWTdusnaRokk8",
|
|
138
|
+
)) as GetAccountResponse;
|
|
139
|
+
console.log(response);
|
|
140
|
+
expect(response.errorCode).to.equal(0);
|
|
141
|
+
expect(response.result?.address).to.equal(
|
|
142
|
+
"did:bid:efEnXEGWYjHRw1CzK4KpWTdusnaRokk8",
|
|
143
|
+
);
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
it("provider.account.getAccountMetadata", async () => {
|
|
147
|
+
let response = (await provider.account.getAccountMetadata(
|
|
148
|
+
"did:bid:efEnXEGWYjHRw1CzK4KpWTdusnaRokk8",
|
|
149
|
+
"latest",
|
|
150
|
+
"layer_2_confirm_seq_did:bid:efGeHdgd1AwmtgUBKac3bGqrmPoNhA1k4254791",
|
|
151
|
+
)) as GetAccountMetadataResponse;
|
|
152
|
+
console.log(response);
|
|
153
|
+
expect(response.errorCode).to.equal(0);
|
|
154
|
+
expect(response.result[0].key).to.equal(
|
|
155
|
+
"layer_2_confirm_seq_did:bid:efGeHdgd1AwmtgUBKac3bGqrmPoNhA1k4254791",
|
|
156
|
+
);
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
it("provider.account.getAccountIncreaseNonce", async () => {
|
|
160
|
+
let response = (await provider.account.getAccountIncreaseNonce(
|
|
161
|
+
"did:bid:efEnXEGWYjHRw1CzK4KpWTdusnaRokk8",
|
|
162
|
+
)) as GetAccountIncreaseNonceResponse;
|
|
163
|
+
console.log(response);
|
|
164
|
+
expect(response.errorCode).to.equal(0);
|
|
165
|
+
expect(response.result).to.greaterThan(79685);
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
it("provider.account.getAccountBalance", async () => {
|
|
169
|
+
let response = (await provider.account.getAccountBalance(
|
|
170
|
+
"did:bid:efEnXEGWYjHRw1CzK4KpWTdusnaRokk8",
|
|
171
|
+
)) as GetAccountBalanceResponse;
|
|
172
|
+
console.log(response);
|
|
173
|
+
expect(response.errorCode).to.equal(0);
|
|
174
|
+
expect(response.result).to.equal(0);
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
it("provider.account.getAccountPriv", async () => {
|
|
178
|
+
let response = (await provider.account.getAccountPriv(
|
|
179
|
+
"did:bid:efEnXEGWYjHRw1CzK4KpWTdusnaRokk8",
|
|
180
|
+
)) as GetAccountPrivResponse;
|
|
181
|
+
console.log(response);
|
|
182
|
+
expect(response.errorCode).to.equal(0);
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
it("provider.contract.checkContractAccount", async () => {
|
|
186
|
+
let response = (await provider.contract.checkContractAccount(
|
|
187
|
+
"did:bid:efEnXEGWYjHRw1CzK4KpWTdusnaRokk8",
|
|
188
|
+
)) as CheckContractAccountResponse;
|
|
189
|
+
console.log(response);
|
|
190
|
+
expect(response.errorCode).to.equal(0);
|
|
191
|
+
expect(response.result).to.equal(true);
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
it("provider.contract.getContractInfo", async () => {
|
|
195
|
+
let response = (await provider.contract.getContractInfo(
|
|
196
|
+
"did:bid:efEnXEGWYjHRw1CzK4KpWTdusnaRokk8",
|
|
197
|
+
)) as GetContractInfoResponse;
|
|
198
|
+
console.log(response);
|
|
199
|
+
expect(response.errorCode).to.equal(0);
|
|
200
|
+
expect(response.result?.payload).to.equal(
|
|
201
|
+
'{"params":{},"codeData":{"slogan":"this is config-manager contract"}}',
|
|
202
|
+
);
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
it("provider.contract.estimateGas", async () => {
|
|
206
|
+
let request: TestTransactionRequest = {
|
|
207
|
+
items: [
|
|
208
|
+
{
|
|
209
|
+
transactionJson: {
|
|
210
|
+
feeLimit: 100000,
|
|
211
|
+
sourceAddress: "did:bid:efmHwsoavf2SWDkm4vwUJFwzZBWQnVV7",
|
|
212
|
+
gasPrice: 1,
|
|
213
|
+
nonce: "173",
|
|
214
|
+
operations: [
|
|
215
|
+
{
|
|
216
|
+
type: 1,
|
|
217
|
+
sourceAddress: "did:bid:efmHwsoavf2SWDkm4vwUJFwzZBWQnVV7",
|
|
218
|
+
createAccount: {
|
|
219
|
+
destAddress: "did:bid:efY72a55qY47gj2gSbvjLaLwdC439p4n",
|
|
220
|
+
initBalance: 1,
|
|
221
|
+
priv: {
|
|
222
|
+
masterWeight: 1,
|
|
223
|
+
thresholds: {
|
|
224
|
+
txThreshold: 1,
|
|
225
|
+
},
|
|
226
|
+
},
|
|
227
|
+
},
|
|
228
|
+
},
|
|
229
|
+
],
|
|
230
|
+
},
|
|
231
|
+
signatureNumber: 1,
|
|
232
|
+
},
|
|
233
|
+
],
|
|
234
|
+
};
|
|
235
|
+
|
|
236
|
+
let response = (await provider.transaction.estimateGas(
|
|
237
|
+
request,
|
|
238
|
+
)) as TestTransactionResponse;
|
|
239
|
+
console.log(response);
|
|
240
|
+
expect(response.errorCode).to.equal(0);
|
|
241
|
+
expect(response.result?.hash).to.equal(
|
|
242
|
+
"225a74cca66c4ca2a9ecfa61d2419734c7386c2cf86f90da3dd2a800c085d491",
|
|
243
|
+
);
|
|
244
|
+
});
|
|
245
|
+
|
|
246
|
+
it("provider.contract.callContract", async () => {
|
|
247
|
+
let request: CallContractRequest = {
|
|
248
|
+
contractAddress: "did:bid:efBcAumwRYrESbpRVTo4J4vYqXXfqBzu",
|
|
249
|
+
input:
|
|
250
|
+
'{"function":"balanceOf(address)","args":"did:bid:efBcAumwRYrESbpRVTo4J4vYqXXfqBzu","return":"returns(uint256)"',
|
|
251
|
+
};
|
|
252
|
+
let response = (await provider.contract.callContract(
|
|
253
|
+
request,
|
|
254
|
+
)) as CallContractResponse;
|
|
255
|
+
console.log(response);
|
|
256
|
+
expect(response.errorCode).to.equal(0);
|
|
257
|
+
expect(response.result?.queryRets[0]?.result).to.equal(
|
|
258
|
+
'{"code":0,"data":"[0]","desc":"","evmcode":"0000000000000000000000000000000000000000000000000000000000000000","gasused":2767}',
|
|
259
|
+
);
|
|
260
|
+
});
|
|
261
|
+
|
|
262
|
+
it("provider.bop.apply", async () => {
|
|
263
|
+
const request: ApplyRequest = {
|
|
264
|
+
data: [
|
|
265
|
+
{
|
|
266
|
+
bid: "did:bid:efC5REiFesaBuu1UXbMJWvEsqFRkQKiq",
|
|
267
|
+
status: "1",
|
|
268
|
+
},
|
|
269
|
+
],
|
|
270
|
+
};
|
|
271
|
+
let response = (await provider.bop.apply(request)) as ApplyResponse;
|
|
272
|
+
console.log(response);
|
|
273
|
+
expect(response.errorCode).to.equal(0);
|
|
274
|
+
expect(response.errorDesc).to.equal("ok");
|
|
275
|
+
});
|
|
276
|
+
|
|
277
|
+
it("provider.bop.status", async () => {
|
|
278
|
+
const request: ApplyStatusRequest = {
|
|
279
|
+
requestNo: "ca3d2fa2-28ab-4322-b9f7-b018667acf87",
|
|
280
|
+
};
|
|
281
|
+
let response: ApplyStatusResponse;
|
|
282
|
+
response = await provider.bop.status(request);
|
|
283
|
+
console.log(response);
|
|
284
|
+
expect(response.errorCode).to.equal(0);
|
|
285
|
+
expect(response.errorDesc).to.equal("ok");
|
|
286
|
+
});
|
|
287
|
+
|
|
288
|
+
it("provider.bop.detail", async () => {
|
|
289
|
+
const request: DetailRequest = {
|
|
290
|
+
requestNo: "ca3d2fa2-28ab-4322-b9f7-b018667acf87",
|
|
291
|
+
};
|
|
292
|
+
let response: DetailResponse;
|
|
293
|
+
response = await provider.bop.detail(request);
|
|
294
|
+
expect(response.errorCode).to.equal(0);
|
|
295
|
+
expect(response.errorDesc).to.equal("ok");
|
|
296
|
+
});
|
|
297
|
+
|
|
298
|
+
it("provider.bop.discard", async () => {
|
|
299
|
+
const request: DiscardRequest = {
|
|
300
|
+
hash: "6eff3a70b7794578641ab7a5e56e3e14347a37b857174f3f92112e769b32f575",
|
|
301
|
+
};
|
|
302
|
+
let response: DiscardResponse;
|
|
303
|
+
response = await provider.bop.discard(request);
|
|
304
|
+
expect(response.errorCode).to.equal(0);
|
|
305
|
+
expect(response.errorDesc).to.equal("ok");
|
|
306
|
+
expect(response.success).to.equal(true);
|
|
307
|
+
expect(response.result?.count).to.equal(1);
|
|
308
|
+
expect(response.result?.transactionBases[0]?.hash).to.equal(
|
|
309
|
+
"6eff3a70b7794578641ab7a5e56e3e14347a37b857174f3f92112e769b32f575",
|
|
310
|
+
);
|
|
311
|
+
});
|
|
312
|
+
|
|
313
|
+
it("provider.bop.query", async () => {
|
|
314
|
+
const request: QueryRequest = {
|
|
315
|
+
hash: "1b96779dab06c39c5a4d173bf0033000bd25076c7007dd03623a764ae60c9b48",
|
|
316
|
+
};
|
|
317
|
+
let response: QueryResponse;
|
|
318
|
+
response = await provider.bop.query(request);
|
|
319
|
+
expect(response.errorCode).to.equal(0);
|
|
320
|
+
expect(response.errorDesc).to.equal("ok");
|
|
321
|
+
expect(response.success).to.equal(true);
|
|
322
|
+
expect(response.result?.count).to.equal(1);
|
|
323
|
+
expect(response.result?.totalPage).to.equal(1);
|
|
324
|
+
expect(response.result?.transactionBases[0]?.hash).to.equal(
|
|
325
|
+
"1b96779dab06c39c5a4d173bf0033000bd25076c7007dd03623a764ae60c9b48",
|
|
326
|
+
);
|
|
327
|
+
});
|
|
328
|
+
|
|
329
|
+
it("provider.transaction.getTxPoolSize", async () => {
|
|
330
|
+
let response: GetTxPoolSizeResponse;
|
|
331
|
+
response = await provider.transaction.getTxPoolSize();
|
|
332
|
+
console.log(response);
|
|
333
|
+
expect(response.errorCode).to.equal(0);
|
|
334
|
+
expect(response.errorDesc).to.equal("ok");
|
|
335
|
+
});
|
|
336
|
+
|
|
337
|
+
it("provider.transaction.getTransactionHistory none params", async () => {
|
|
338
|
+
let response: GetTransactionHistoryResponse;
|
|
339
|
+
response = await provider.transaction.getTransactionHistory();
|
|
340
|
+
console.log(response);
|
|
341
|
+
expect(response.errorCode).to.equal(0);
|
|
342
|
+
expect(response.errorDesc).to.equal("ok");
|
|
343
|
+
expect(response.result?.totalCount).to.equal(100);
|
|
344
|
+
});
|
|
345
|
+
|
|
346
|
+
it("provider.transaction.getTransactionHistory with hash", async () => {
|
|
347
|
+
let response: GetTransactionHistoryResponse;
|
|
348
|
+
response = await provider.transaction.getTransactionHistory(
|
|
349
|
+
undefined,
|
|
350
|
+
undefined,
|
|
351
|
+
undefined,
|
|
352
|
+
"b5cef0860f6000cdfb4fa0d2dc95a013632032a49764ade7c1d972a493307315",
|
|
353
|
+
);
|
|
354
|
+
console.log(response);
|
|
355
|
+
expect(response.errorCode).to.equal(0);
|
|
356
|
+
expect(response.errorDesc).to.equal("ok");
|
|
357
|
+
expect(response.result?.totalCount).to.equal(1);
|
|
358
|
+
expect(
|
|
359
|
+
response.result?.transactions[0]?.transaction?.operations[0]?.log
|
|
360
|
+
?.datas[0],
|
|
361
|
+
).to.equal(
|
|
362
|
+
"080110641a286469643a6269643a65664765486467643141776d746755424b616333624771726d506f4e6841316b2a5618b1432802324f4661696c656420746f207375626d6974206c61796572322073746174652c206c617965723220736571283836323529206973206e6f7420657175616c206d617820736571283836323529202b20312e",
|
|
363
|
+
);
|
|
364
|
+
});
|
|
365
|
+
|
|
366
|
+
it("provider.transaction.getTransactionHistory with hash", async () => {
|
|
367
|
+
let response: GetTransactionHistoryResponse;
|
|
368
|
+
response = await provider.transaction.getTransactionHistory(5775638);
|
|
369
|
+
console.log(response);
|
|
370
|
+
expect(response.errorCode).to.equal(0);
|
|
371
|
+
expect(response.errorDesc).to.equal("ok");
|
|
372
|
+
expect(response.result?.totalCount).to.equal(2);
|
|
373
|
+
});
|
|
374
|
+
|
|
375
|
+
it("provider.transaction.submitTransaction", async () => {
|
|
376
|
+
const request: SubmitTransactionParams = {
|
|
377
|
+
items: [
|
|
378
|
+
{
|
|
379
|
+
signatures: [
|
|
380
|
+
{
|
|
381
|
+
publicKey:
|
|
382
|
+
"b065665b6fa23dc1c00b17b8d2cd86093c86bbae4c011247310f9160351bd64bc580cc",
|
|
383
|
+
signData:
|
|
384
|
+
"F62BA0BD3CC98EFBBA20DB540C6660BD4547390625AD4FF6CEB7B216985F6EFB3092E3F9E36299068D668D52CA92ABAD944D28342E0DD4D1ACEE06D700350702",
|
|
385
|
+
},
|
|
386
|
+
],
|
|
387
|
+
transactionBlob:
|
|
388
|
+
"0A286469643A6269643A6566433552456946657361427575315558624D4A577645737146526B514B6971103022D605080122D10512C305080112BE053630383036303430353233343830313536313030313035373630303038306664356235303631303133663830363130303230363030303339363030306633303036303830363034303532363030343336313036313030343135373630303033353763303130303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303930303436336666666666666666313638303633303331313533633231343631303034363537356236303030383066643562333438303135363130303532353736303030383066643562353036313030356236313030643635363562363034303531383038303630323030313832383130333832353238333831383135313831353236303230303139313530383035313930363032303031393038303833383336303030356238333831313031353631303039623537383038323031353138313834303135323630323038313031393035303631303038303536356235303530353035303930353039303831303139303630316631363830313536313030633835373830383230333830353136303031383336303230303336313031303030613033313931363831353236303230303139313530356235303932353035303530363034303531383039313033393066333562363036303630343038303531393038313031363034303532383036303062383135323630323030313766363836353663366336663230373736663732366336343030303030303030303030303030303030303030303030303030303030303030303030303030303030303831353235303930353039303536303061313635363237613761373233303538323033336431366230663863613362323334646363396233336139623533303063333630313561383838373732633761656565633965353733613537316437346338303032391A041A0208012880C2D72F2A0F63726561746520636F6E747261637430AC87E32F3864",
|
|
389
|
+
},
|
|
390
|
+
],
|
|
391
|
+
};
|
|
392
|
+
let response: SubmitTransactionResponse;
|
|
393
|
+
response = await provider.transaction.submitTransaction(request);
|
|
394
|
+
console.log(response);
|
|
395
|
+
});
|
|
396
|
+
|
|
397
|
+
it("provider.transaction.getTxPoolTransactions", async () => {
|
|
398
|
+
let response: GetTransactionCacheResponse;
|
|
399
|
+
response = await provider.transaction.getTxPoolTransactions();
|
|
400
|
+
console.log(response);
|
|
401
|
+
expect(response.errorCode).to.equal(4);
|
|
402
|
+
expect(response.errorDesc).to.equal(
|
|
403
|
+
"The object does not exist, such as not being able to query accounts, TX, blocks, etc",
|
|
404
|
+
);
|
|
405
|
+
});
|
|
406
|
+
});
|
|
407
|
+
});
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { SignerByBop } from "../signer";
|
|
2
|
+
import { ProviderByBop } from "../provider";
|
|
3
|
+
import { expect } from "chai";
|
|
4
|
+
import * as sinon from "sinon";
|
|
5
|
+
import {
|
|
6
|
+
CallContractResponse,
|
|
7
|
+
GetAccountBalanceResponse,
|
|
8
|
+
GetAccountIncreaseNonceResponse,
|
|
9
|
+
SignerSignResponse,
|
|
10
|
+
TestTransactionRequest,
|
|
11
|
+
TestTransactionResponse,
|
|
12
|
+
GetAccountResponse,
|
|
13
|
+
LedgerNumberResponse,
|
|
14
|
+
} from "../../../bop-sdk/proto/bop-sdk-interface";
|
|
15
|
+
import { BopInterface, Config } from "../../../bop/bop-base";
|
|
16
|
+
|
|
17
|
+
describe("signer-test", () => {
|
|
18
|
+
let bopInterface: BopInterface;
|
|
19
|
+
let config: Config;
|
|
20
|
+
let signer: SignerByBop;
|
|
21
|
+
let provider: ProviderByBop;
|
|
22
|
+
beforeEach(() => {
|
|
23
|
+
config = new Config("https://bif-mainnet.bitfactory.cn", "xxx", "xxx");
|
|
24
|
+
bopInterface = new BopInterface(config);
|
|
25
|
+
signer = new SignerByBop("your encprivate key");
|
|
26
|
+
provider = new ProviderByBop(bopInterface);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
afterEach(() => {});
|
|
30
|
+
|
|
31
|
+
describe("signer test", () => {
|
|
32
|
+
it("signer.constructor invalid privateKey", async () => {
|
|
33
|
+
try {
|
|
34
|
+
let signer: SignerByBop = new SignerByBop("xxx");
|
|
35
|
+
} catch (error) {
|
|
36
|
+
expect(error).to.equal("invalid privateKey");
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it("signer.constructor valid privateKey", async () => {
|
|
41
|
+
expect(signer.getAddress()).to.equal(
|
|
42
|
+
"did:bid:zfVHJnop875UMPmskam4JC4kLW4tAaDK",
|
|
43
|
+
);
|
|
44
|
+
expect(signer.getAddress()).to.equal(signer.address);
|
|
45
|
+
expect(signer.publicKey).to.equal(signer.publicKey);
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
it("signer.getBalance", async () => {
|
|
49
|
+
let signerWithProvider = signer.connect(provider);
|
|
50
|
+
|
|
51
|
+
let balance =
|
|
52
|
+
(await signerWithProvider.getBalance()) as GetAccountBalanceResponse;
|
|
53
|
+
console.log(balance);
|
|
54
|
+
expect(balance.errorCode).to.equal(0);
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
it("signer.getIncreaseNonce", async () => {
|
|
58
|
+
let signerWithProvider = signer.connect(provider);
|
|
59
|
+
let nonce =
|
|
60
|
+
(await signerWithProvider.getIncreaseNonce()) as GetAccountIncreaseNonceResponse;
|
|
61
|
+
console.log(nonce);
|
|
62
|
+
expect(nonce.errorCode).to.equal(0);
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
it("signer.getAccount", async () => {
|
|
66
|
+
let signerWithProvider = signer.connect(provider);
|
|
67
|
+
let account =
|
|
68
|
+
(await signerWithProvider.getAccount()) as GetAccountResponse;
|
|
69
|
+
console.log(account);
|
|
70
|
+
expect(account.errorCode).to.equal(0);
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
it("signer.getLedgerNumber", async () => {
|
|
74
|
+
let signerWithProvider = signer.connect(provider);
|
|
75
|
+
let number =
|
|
76
|
+
(await signerWithProvider.getLedgerNumber()) as LedgerNumberResponse;
|
|
77
|
+
console.log(number);
|
|
78
|
+
expect(number.errorCode).to.equal(0);
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it("signer.signTransaction", async () => {
|
|
82
|
+
let signerWithProvider = signer.connect(provider);
|
|
83
|
+
let response = (await signerWithProvider.signTransaction(
|
|
84
|
+
"0x010203",
|
|
85
|
+
)) as SignerSignResponse;
|
|
86
|
+
console.log(response);
|
|
87
|
+
console.log(response.result?.publicKey);
|
|
88
|
+
expect(response.errorCode).to.equal(0);
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
it("signer.callContract", async () => {
|
|
92
|
+
let signerWithProvider = signer.connect(provider);
|
|
93
|
+
let response = (await signerWithProvider.callContract(
|
|
94
|
+
"did:bid:efBcAumwRYrESbpRVTo4J4vYqXXfqBzu",
|
|
95
|
+
'{"function":"balanceOf(address)","args":"did:bid:efBcAumwRYrESbpRVTo4J4vYqXXfqBzu","return":"returns(uint256)"',
|
|
96
|
+
)) as CallContractResponse;
|
|
97
|
+
console.log(response);
|
|
98
|
+
console.log(response.result?.queryRets[0]);
|
|
99
|
+
expect(response.errorCode).to.equal(0);
|
|
100
|
+
expect(response.result?.queryRets[0]?.result).to.equal(
|
|
101
|
+
'{"code":0,"data":"[0]","desc":"","evmcode":"0000000000000000000000000000000000000000000000000000000000000000","gasused":2767}',
|
|
102
|
+
);
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
});
|