tigerbeetle-node 0.16.77 → 0.17.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/README.md +69 -70
- package/dist/benchmark.js +4 -4
- package/dist/benchmark.js.map +1 -1
- package/dist/bin/aarch64-linux-gnu/client.node +0 -0
- package/dist/bin/aarch64-linux-musl/client.node +0 -0
- package/dist/bin/aarch64-macos/client.node +0 -0
- package/dist/bin/x86_64-linux-gnu/client.node +0 -0
- package/dist/bin/x86_64-linux-musl/client.node +0 -0
- package/dist/bin/x86_64-macos/client.node +0 -0
- package/dist/bin/x86_64-windows/client.node +0 -0
- package/dist/bindings.d.ts +13 -13
- package/dist/bindings.js +104 -104
- package/dist/bindings.js.map +1 -1
- package/dist/index.d.ts +17 -4
- package/dist/index.js +43 -7
- package/dist/index.js.map +1 -1
- package/dist/test.js +152 -66
- package/dist/test.js.map +1 -1
- package/package.json +1 -1
- package/src/benchmark.ts +4 -4
- package/src/bindings.ts +16 -16
- package/src/index.ts +58 -11
- package/src/test.ts +160 -69
- package/src/translate.zig +181 -47
package/README.md
CHANGED
|
@@ -109,8 +109,8 @@ const account = {
|
|
|
109
109
|
timestamp: 0n,
|
|
110
110
|
};
|
|
111
111
|
|
|
112
|
-
const
|
|
113
|
-
//
|
|
112
|
+
const account_results = await client.createAccounts([account]);
|
|
113
|
+
// Results handling omitted.
|
|
114
114
|
```
|
|
115
115
|
|
|
116
116
|
See details for the recommended ID scheme in
|
|
@@ -167,21 +167,23 @@ const account1 = {
|
|
|
167
167
|
flags: AccountFlags.history,
|
|
168
168
|
};
|
|
169
169
|
|
|
170
|
-
const
|
|
171
|
-
//
|
|
170
|
+
const account_results = await client.createAccounts([account0, account1]);
|
|
171
|
+
// Results handling omitted.
|
|
172
172
|
```
|
|
173
173
|
|
|
174
174
|
### Response and Errors
|
|
175
175
|
|
|
176
|
-
The response is an
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
176
|
+
The response is an array containing the _status code_ and the _timestamp_ of
|
|
177
|
+
each account in the request batch:
|
|
178
|
+
- Successfully created accounts with the status
|
|
179
|
+
[`created`](https://docs.tigerbeetle.com/reference/requests/create_accounts#created)
|
|
180
|
+
return the timestamp assigned to the `Account` object.
|
|
181
|
+
- Already existing accounts with the result
|
|
182
|
+
[`exists`](https://docs.tigerbeetle.com/reference/requests/create_accounts#exists)
|
|
183
|
+
return the timestamp of the original existing object.
|
|
184
|
+
- Failed accounts return the status code along with the timestamp when the validation
|
|
185
|
+
occurred. See all error conditions in the
|
|
186
|
+
[create_accounts reference](https://docs.tigerbeetle.com/reference/requests/create_accounts#status).
|
|
185
187
|
|
|
186
188
|
```javascript
|
|
187
189
|
const account0 = {
|
|
@@ -230,18 +232,18 @@ const account2 = {
|
|
|
230
232
|
flags: 0,
|
|
231
233
|
};
|
|
232
234
|
|
|
233
|
-
const
|
|
234
|
-
for (
|
|
235
|
-
switch (
|
|
236
|
-
case
|
|
237
|
-
console.error(`Batch account at ${
|
|
235
|
+
const account_results = await client.createAccounts([account0, account1, account2]);
|
|
236
|
+
for (let i = 0; i < account_results.length; i++) {
|
|
237
|
+
switch (account_results[i].status) {
|
|
238
|
+
case CreateAccountStatus.created:
|
|
239
|
+
console.error(`Batch account at ${i} successfully created with timestamp ${account_results[i].timestamp}.`);
|
|
240
|
+
break;
|
|
241
|
+
case CreateAccountStatus.exists:
|
|
242
|
+
console.error(`Batch account at ${i} already exists with timestamp ${account_results[i].timestamp}.`);
|
|
238
243
|
break;
|
|
239
244
|
default:
|
|
240
|
-
console.error(
|
|
241
|
-
|
|
242
|
-
CreateAccountError[error.result]
|
|
243
|
-
}.`,
|
|
244
|
-
);
|
|
245
|
+
console.error(`Batch account at ${i} failed to create: ${account_results[i].status}`);
|
|
246
|
+
break;
|
|
245
247
|
}
|
|
246
248
|
}
|
|
247
249
|
```
|
|
@@ -290,8 +292,8 @@ const transfers = [{
|
|
|
290
292
|
timestamp: 0n,
|
|
291
293
|
}];
|
|
292
294
|
|
|
293
|
-
const
|
|
294
|
-
//
|
|
295
|
+
const transfers_results = await client.createTransfers(transfers);
|
|
296
|
+
// Results handling omitted.
|
|
295
297
|
```
|
|
296
298
|
|
|
297
299
|
See details for the recommended ID scheme in
|
|
@@ -299,14 +301,17 @@ See details for the recommended ID scheme in
|
|
|
299
301
|
|
|
300
302
|
### Response and Errors
|
|
301
303
|
|
|
302
|
-
The response is an
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
304
|
+
The response is an array containing the _status code_ and the _timestamp_ of
|
|
305
|
+
each transfer in the request batch:
|
|
306
|
+
- Successfully created transfers with the result
|
|
307
|
+
[`created`](https://docs.tigerbeetle.com/reference/requests/create_transfers#created)
|
|
308
|
+
return the timestamp assigned to the `Transfer` object.
|
|
309
|
+
- Already existing transfers with the result
|
|
310
|
+
[`exists`](https://docs.tigerbeetle.com/reference/requests/create_transfers#exists)
|
|
311
|
+
return the timestamp of the original existing object.
|
|
312
|
+
- Failed transfers return the status code along with the timestamp when the validation
|
|
313
|
+
occurred. See all error conditions in the
|
|
314
|
+
[create_transfers reference](https://docs.tigerbeetle.com/reference/requests/create_transfers#status).
|
|
310
315
|
|
|
311
316
|
```javascript
|
|
312
317
|
const transfers = [{
|
|
@@ -355,18 +360,18 @@ const transfers = [{
|
|
|
355
360
|
timestamp: 0n,
|
|
356
361
|
}];
|
|
357
362
|
|
|
358
|
-
const
|
|
359
|
-
for (
|
|
360
|
-
switch (
|
|
361
|
-
case
|
|
362
|
-
console.error(`Batch transfer at ${
|
|
363
|
+
const transfers_results = await client.createTransfers(batch);
|
|
364
|
+
for (let i = 0; i < transfers_results.length; i++) {
|
|
365
|
+
switch (transfers_results[i].status) {
|
|
366
|
+
case CreateTransferStatus.created:
|
|
367
|
+
console.error(`Batch transfer at ${i} successfully created with timestamp ${transfers_results[i].timestamp}.`);
|
|
368
|
+
break;
|
|
369
|
+
case CreateTransferStatus.exists:
|
|
370
|
+
console.error(`Batch transfer at ${i} already exists with timestamp ${transfers_results[i].timestamp}.`);
|
|
363
371
|
break;
|
|
364
372
|
default:
|
|
365
|
-
console.error(
|
|
366
|
-
|
|
367
|
-
CreateTransferError[error.result]
|
|
368
|
-
}.`,
|
|
369
|
-
);
|
|
373
|
+
console.error(`Batch transfer at ${i} failed to create: ${transfers_results[i].status}`);
|
|
374
|
+
break;
|
|
370
375
|
}
|
|
371
376
|
}
|
|
372
377
|
```
|
|
@@ -380,32 +385,26 @@ the `CreateTransferError` object for a human-readable string.
|
|
|
380
385
|
|
|
381
386
|
TigerBeetle performance is maximized when you batch
|
|
382
387
|
API requests.
|
|
388
|
+
|
|
383
389
|
A client instance shared across multiple threads/tasks can automatically
|
|
384
390
|
batch concurrent requests, but the application must still send as many events
|
|
385
391
|
as possible in a single call.
|
|
392
|
+
|
|
386
393
|
For example, if you insert 1 million transfers sequentially, one at a time,
|
|
387
394
|
the insert rate will be a *fraction* of the potential, because the client will
|
|
388
395
|
wait for a reply between each one.
|
|
389
|
-
|
|
390
|
-
```javascript
|
|
391
|
-
const batch = []; // Array of transfer to create.
|
|
392
|
-
for (let i = 0; i < batch.len; i++) {
|
|
393
|
-
const transfer_errors = await client.createTransfers(batch[i]);
|
|
394
|
-
// Error handling omitted.
|
|
395
|
-
}
|
|
396
|
-
```
|
|
397
|
-
|
|
398
396
|
Instead, **always batch as much as you can**.
|
|
397
|
+
|
|
399
398
|
The maximum batch size is set in the TigerBeetle server. The default is 8189.
|
|
400
399
|
|
|
401
400
|
```javascript
|
|
402
401
|
const batch = []; // Array of transfer to create.
|
|
403
402
|
const BATCH_SIZE = 8189;
|
|
404
403
|
for (let i = 0; i < batch.length; i += BATCH_SIZE) {
|
|
405
|
-
const
|
|
404
|
+
const transfers_results = await client.createTransfers(
|
|
406
405
|
batch.slice(i, Math.min(batch.length, BATCH_SIZE)),
|
|
407
406
|
);
|
|
408
|
-
//
|
|
407
|
+
// Results handling omitted.
|
|
409
408
|
}
|
|
410
409
|
```
|
|
411
410
|
|
|
@@ -467,8 +466,8 @@ const transfer1 = {
|
|
|
467
466
|
};
|
|
468
467
|
|
|
469
468
|
// Create the transfer
|
|
470
|
-
const
|
|
471
|
-
//
|
|
469
|
+
const transfers_results = await client.createTransfers([transfer0, transfer1]);
|
|
470
|
+
// Results handling omitted.
|
|
472
471
|
```
|
|
473
472
|
|
|
474
473
|
### Two-Phase Transfers
|
|
@@ -504,8 +503,8 @@ const transfer0 = {
|
|
|
504
503
|
timestamp: 0n,
|
|
505
504
|
};
|
|
506
505
|
|
|
507
|
-
let
|
|
508
|
-
//
|
|
506
|
+
let transfers_results = await client.createTransfers([transfer0]);
|
|
507
|
+
// Results handling omitted.
|
|
509
508
|
|
|
510
509
|
const transfer1 = {
|
|
511
510
|
id: 7n,
|
|
@@ -524,8 +523,8 @@ const transfer1 = {
|
|
|
524
523
|
timestamp: 0n,
|
|
525
524
|
};
|
|
526
525
|
|
|
527
|
-
|
|
528
|
-
//
|
|
526
|
+
transfers_results = await client.createTransfers([transfer1]);
|
|
527
|
+
// Results handling omitted.
|
|
529
528
|
```
|
|
530
529
|
|
|
531
530
|
#### Void a Pending Transfer
|
|
@@ -553,8 +552,8 @@ const transfer0 = {
|
|
|
553
552
|
timestamp: 0n,
|
|
554
553
|
};
|
|
555
554
|
|
|
556
|
-
let
|
|
557
|
-
//
|
|
555
|
+
let transfers_results = await client.createTransfers([transfer0]);
|
|
556
|
+
// Results handling omitted.
|
|
558
557
|
|
|
559
558
|
const transfer1 = {
|
|
560
559
|
id: 9n,
|
|
@@ -572,8 +571,8 @@ const transfer1 = {
|
|
|
572
571
|
timestamp: 0n,
|
|
573
572
|
};
|
|
574
573
|
|
|
575
|
-
|
|
576
|
-
//
|
|
574
|
+
transfers_results = await client.createTransfers([transfer1]);
|
|
575
|
+
// Results handling omitted.
|
|
577
576
|
```
|
|
578
577
|
|
|
579
578
|
## Transfer Lookup
|
|
@@ -752,8 +751,8 @@ batch.push({ id: 3n, /* ..., */ flags: 0 });
|
|
|
752
751
|
batch.push({ id: 3n, /* ..., */ flags: linkedFlag });
|
|
753
752
|
batch.push({ id: 4n, /* ..., */ flags: 0 });
|
|
754
753
|
|
|
755
|
-
const
|
|
756
|
-
//
|
|
754
|
+
const transfers_results = await client.createTransfers(batch);
|
|
755
|
+
// Results handling omitted.
|
|
757
756
|
```
|
|
758
757
|
|
|
759
758
|
## Imported Events
|
|
@@ -794,8 +793,8 @@ for (let index = 0; i < historical_accounts.length; i++) {
|
|
|
794
793
|
accounts.push(account);
|
|
795
794
|
}
|
|
796
795
|
|
|
797
|
-
const
|
|
798
|
-
//
|
|
796
|
+
const account_results = await client.createAccounts(accounts);
|
|
797
|
+
// Results handling omitted.
|
|
799
798
|
|
|
800
799
|
// Then, load and import all transfers with their timestamps from the historical source.
|
|
801
800
|
const transfers = [];
|
|
@@ -815,8 +814,8 @@ for (let index = 0; i < historical_transfers.length; i++) {
|
|
|
815
814
|
transfers.push(transfer);
|
|
816
815
|
}
|
|
817
816
|
|
|
818
|
-
const
|
|
819
|
-
//
|
|
817
|
+
const transfers_results = await client.createTransfers(transfers);
|
|
818
|
+
// Results handling omitted.
|
|
820
819
|
|
|
821
820
|
// Since it is a linked chain, in case of any error the entire batch is rolled back and can be retried
|
|
822
821
|
// with the same historical timestamps without regressing the cluster timestamp.
|
package/dist/benchmark.js
CHANGED
|
@@ -99,16 +99,16 @@ const runBenchmark = async () => {
|
|
|
99
99
|
const start = Date.now();
|
|
100
100
|
for (let i = 0; i < transfers.length; i++) {
|
|
101
101
|
const ms1 = Date.now();
|
|
102
|
-
const
|
|
103
|
-
(0, assert_1.default)(
|
|
102
|
+
const transferResults = await client.createTransfers(transfers[i]);
|
|
103
|
+
(0, assert_1.default)(transferResults.length === transfers[i].length);
|
|
104
104
|
const ms2 = Date.now();
|
|
105
105
|
const createTransferLatency = ms2 - ms1;
|
|
106
106
|
if (createTransferLatency > maxCreateTransfersLatency) {
|
|
107
107
|
maxCreateTransfersLatency = createTransferLatency;
|
|
108
108
|
}
|
|
109
109
|
if (IS_TWO_PHASE_TRANSFER) {
|
|
110
|
-
const
|
|
111
|
-
(0, assert_1.default)(
|
|
110
|
+
const postTransferResults = await client.createTransfers(posts[i]);
|
|
111
|
+
(0, assert_1.default)(postTransferResults.length === posts[i].length);
|
|
112
112
|
const ms3 = Date.now();
|
|
113
113
|
const commitTransferLatency = ms3 - ms2;
|
|
114
114
|
if (commitTransferLatency > maxCommitTransfersLatency) {
|
package/dist/benchmark.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"benchmark.js","sourceRoot":"","sources":["../src/benchmark.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'assert'\nimport {\n Account,\n createClient,\n Transfer,\n TransferFlags,\n} from '.'\n\nconst MAX_TRANSFERS = 51200\n// CI runs benchmark.ts against a \"--development\" replica.\nconst MAX_REQUEST_BATCH_SIZE = 253\nconst IS_TWO_PHASE_TRANSFER = false\n\nconst client = createClient({\n cluster_id: 0n,\n replica_addresses: [process.env.TB_ADDRESS || '3000']\n})\n\nconst TRANSFER_SIZE = 128\nconst accountA: Account = {\n id: 137n,\n debits_pending: 0n,\n debits_posted: 0n,\n credits_pending: 0n,\n credits_posted: 0n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n reserved: 0,\n ledger: 1,\n code: 1,\n flags: 0,\n timestamp: 0n,\n}\n\nconst accountB: Account = {\n id: 138n,\n debits_pending: 0n,\n debits_posted: 0n,\n credits_pending: 0n,\n credits_posted: 0n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n reserved: 0,\n ledger: 1,\n code: 1,\n flags: 0,\n timestamp: 0n,\n}\n\nconst runBenchmark = async () => {\n console.log(`pre-allocating ${MAX_TRANSFERS} transfers and posts...`)\n const transfers: Transfer[][] = []\n const posts: Transfer[][] = []\n\n let count = 0\n while (count < MAX_TRANSFERS) {\n const pendingBatch: Transfer[] = []\n const postBatch: Transfer[] = []\n for (let i = 0; i < MAX_REQUEST_BATCH_SIZE; i++) {\n if (count === MAX_TRANSFERS) break\n\n count += 1\n pendingBatch.push({\n id: BigInt(count),\n debit_account_id: accountA.id,\n credit_account_id: accountB.id,\n amount: 1n,\n pending_id: 0n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n timeout: IS_TWO_PHASE_TRANSFER ? 2 : 0,\n code: 1,\n ledger: 1,\n flags: IS_TWO_PHASE_TRANSFER ? TransferFlags.pending : 0,\n timestamp: 0n,\n })\n\n if (IS_TWO_PHASE_TRANSFER) {\n postBatch.push({\n id: BigInt(MAX_TRANSFERS + count),\n debit_account_id: accountA.id,\n credit_account_id: accountB.id,\n amount: 1n,\n pending_id: BigInt(count),\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n timeout: 0,\n code: 1,\n ledger: 1,\n flags: IS_TWO_PHASE_TRANSFER ? TransferFlags.post_pending_transfer : 0,\n timestamp: 0n,\n })\n }\n }\n\n transfers.push(pendingBatch)\n if (IS_TWO_PHASE_TRANSFER) posts.push(postBatch)\n }\n assert(count === MAX_TRANSFERS)\n\n console.log(`starting benchmark. MAX_TRANSFERS=${MAX_TRANSFERS} REQUEST_BATCH_SIZE=${MAX_REQUEST_BATCH_SIZE} NUMBER_OF_BATCHES=${transfers.length}`)\n let maxCreateTransfersLatency = 0\n let maxCommitTransfersLatency = 0\n const start = Date.now()\n\n for (let i = 0; i < transfers.length; i++) {\n const ms1 = Date.now()\n\n const transferErrors = await client.createTransfers(transfers[i])\n assert(transferErrors.length === 0)\n\n const ms2 = Date.now()\n const createTransferLatency = ms2 - ms1\n if (createTransferLatency > maxCreateTransfersLatency) {\n maxCreateTransfersLatency = createTransferLatency\n }\n\n if (IS_TWO_PHASE_TRANSFER) {\n const commitErrors = await client.createTransfers(posts[i])\n assert(commitErrors.length === 0)\n\n const ms3 = Date.now()\n const commitTransferLatency = ms3 - ms2\n if (commitTransferLatency > maxCommitTransfersLatency) {\n maxCommitTransfersLatency = commitTransferLatency\n }\n }\n }\n\n const ms = Date.now() - start\n\n return {\n ms,\n maxCommitTransfersLatency,\n maxCreateTransfersLatency\n }\n}\n\nconst main = async () => {\n console.log(\"creating the accounts...\")\n await client.createAccounts([accountA, accountB])\n const accountResults = await client.lookupAccounts([accountA.id, accountB.id])\n assert(accountResults.length === 2)\n assert(accountResults[0].debits_posted === 0n)\n assert(accountResults[1].debits_posted === 0n)\n\n const benchmark = await runBenchmark()\n\n const accounts = await client.lookupAccounts([accountA.id, accountB.id])\n const result = Math.floor((1000 * MAX_TRANSFERS)/benchmark.ms)\n console.log(\"=============================\")\n console.log(`${IS_TWO_PHASE_TRANSFER ? 'two-phase ' : ''}transfers per second: ${result}`)\n console.log(`create transfers max p100 latency per 10 000 transfers = ${benchmark.maxCreateTransfersLatency}ms`)\n console.log(`commit transfers max p100 latency per 10 000 transfers = ${benchmark.maxCommitTransfersLatency}ms`)\n assert(accounts.length === 2)\n assert(accounts[0].debits_posted === BigInt(MAX_TRANSFERS))\n assert(accounts[1].credits_posted === BigInt(MAX_TRANSFERS))\n}\n\nmain().catch(error => {\n console.log(error)\n}).finally(async () => {\n await client.destroy()\n})\n"]}
|
|
1
|
+
{"version":3,"file":"benchmark.js","sourceRoot":"","sources":["../src/benchmark.ts"],"names":[],"mappings":";;;;;AAAA,oDAA2B;AAC3B,wBAKU;AAEV,MAAM,aAAa,GAAG,KAAK,CAAA;AAE3B,MAAM,sBAAsB,GAAG,GAAG,CAAA;AAClC,MAAM,qBAAqB,GAAG,KAAK,CAAA;AAEnC,MAAM,MAAM,GAAG,IAAA,eAAY,EAAC;IAC1B,UAAU,EAAE,EAAE;IACd,iBAAiB,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,MAAM,CAAC;CACtD,CAAC,CAAA;AAEF,MAAM,aAAa,GAAG,GAAG,CAAA;AACzB,MAAM,QAAQ,GAAY;IACxB,EAAE,EAAE,IAAI;IACR,cAAc,EAAE,EAAE;IAClB,aAAa,EAAE,EAAE;IACjB,eAAe,EAAE,EAAE;IACnB,cAAc,EAAE,EAAE;IAClB,aAAa,EAAE,EAAE;IACjB,YAAY,EAAE,EAAE;IAChB,YAAY,EAAE,CAAC;IACf,QAAQ,EAAE,CAAC;IACX,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;IACR,SAAS,EAAE,EAAE;CACd,CAAA;AAED,MAAM,QAAQ,GAAY;IACxB,EAAE,EAAE,IAAI;IACR,cAAc,EAAE,EAAE;IAClB,aAAa,EAAE,EAAE;IACjB,eAAe,EAAE,EAAE;IACnB,cAAc,EAAE,EAAE;IAClB,aAAa,EAAE,EAAE;IACjB,YAAY,EAAE,EAAE;IAChB,YAAY,EAAE,CAAC;IACf,QAAQ,EAAE,CAAC;IACX,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;IACR,SAAS,EAAE,EAAE;CACd,CAAA;AAED,MAAM,YAAY,GAAG,KAAK,IAAI,EAAE;IAC9B,OAAO,CAAC,GAAG,CAAC,kBAAkB,aAAa,yBAAyB,CAAC,CAAA;IACrE,MAAM,SAAS,GAAiB,EAAE,CAAA;IAClC,MAAM,KAAK,GAAiB,EAAE,CAAA;IAE9B,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,OAAO,KAAK,GAAG,aAAa,EAAE,CAAC;QAC7B,MAAM,YAAY,GAAe,EAAE,CAAA;QACnC,MAAM,SAAS,GAAe,EAAE,CAAA;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,sBAAsB,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,IAAI,KAAK,KAAK,aAAa;gBAAE,MAAK;YAElC,KAAK,IAAI,CAAC,CAAA;YACV,YAAY,CAAC,IAAI,CAAC;gBAChB,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC;gBACjB,gBAAgB,EAAE,QAAQ,CAAC,EAAE;gBAC7B,iBAAiB,EAAE,QAAQ,CAAC,EAAE;gBAC9B,MAAM,EAAE,EAAE;gBACV,UAAU,EAAE,EAAE;gBACd,aAAa,EAAE,EAAE;gBACjB,YAAY,EAAE,EAAE;gBAChB,YAAY,EAAE,CAAC;gBACf,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtC,IAAI,EAAE,CAAC;gBACP,MAAM,EAAE,CAAC;gBACT,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC,gBAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACxD,SAAS,EAAE,EAAE;aACd,CAAC,CAAA;YAEF,IAAI,qBAAqB,EAAE,CAAC;gBAC1B,SAAS,CAAC,IAAI,CAAC;oBACb,EAAE,EAAE,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC;oBACjC,gBAAgB,EAAE,QAAQ,CAAC,EAAE;oBAC7B,iBAAiB,EAAE,QAAQ,CAAC,EAAE;oBAC9B,MAAM,EAAE,EAAE;oBACV,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC;oBACzB,aAAa,EAAE,EAAE;oBACjB,YAAY,EAAE,EAAE;oBAChB,YAAY,EAAE,CAAC;oBACf,OAAO,EAAE,CAAC;oBACV,IAAI,EAAE,CAAC;oBACP,MAAM,EAAE,CAAC;oBACT,KAAK,EAAE,qBAAqB,CAAC,CAAC,CAAC,gBAAa,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;oBACtE,SAAS,EAAE,EAAE;iBACd,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAED,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC5B,IAAI,qBAAqB;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAClD,CAAC;IACD,IAAA,gBAAM,EAAC,KAAK,KAAK,aAAa,CAAC,CAAA;IAE/B,OAAO,CAAC,GAAG,CAAC,qCAAqC,aAAa,uBAAuB,sBAAsB,sBAAsB,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;IACpJ,IAAI,yBAAyB,GAAG,CAAC,CAAA;IACjC,IAAI,yBAAyB,GAAG,CAAC,CAAA;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAEtB,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;QAClE,IAAA,gBAAM,EAAC,eAAe,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;QAEtD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,MAAM,qBAAqB,GAAG,GAAG,GAAG,GAAG,CAAA;QACvC,IAAI,qBAAqB,GAAG,yBAAyB,EAAE,CAAC;YACtD,yBAAyB,GAAG,qBAAqB,CAAA;QACnD,CAAC;QAED,IAAI,qBAAqB,EAAE,CAAC;YAC1B,MAAM,mBAAmB,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YAClE,IAAA,gBAAM,EAAC,mBAAmB,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;YAEtD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACtB,MAAM,qBAAqB,GAAG,GAAG,GAAG,GAAG,CAAA;YACvC,IAAI,qBAAqB,GAAG,yBAAyB,EAAE,CAAC;gBACtD,yBAAyB,GAAG,qBAAqB,CAAA;YACnD,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAA;IAE7B,OAAO;QACL,EAAE;QACF,yBAAyB;QACzB,yBAAyB;KAC1B,CAAA;AACH,CAAC,CAAA;AAED,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;IACtB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;IACvC,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;IACjD,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;IAC9E,IAAA,gBAAM,EAAC,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,CAAA;IACnC,IAAA,gBAAM,EAAC,cAAc,CAAC,CAAC,CAAC,CAAC,aAAa,KAAK,EAAE,CAAC,CAAA;IAC9C,IAAA,gBAAM,EAAC,cAAc,CAAC,CAAC,CAAC,CAAC,aAAa,KAAK,EAAE,CAAC,CAAA;IAE9C,MAAM,SAAS,GAAG,MAAM,YAAY,EAAE,CAAA;IAEtC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAA;IACxE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,aAAa,CAAC,GAAC,SAAS,CAAC,EAAE,CAAC,CAAA;IAC9D,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAA;IAC5C,OAAO,CAAC,GAAG,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,yBAAyB,MAAM,EAAE,CAAC,CAAA;IAC1F,OAAO,CAAC,GAAG,CAAC,4DAA4D,SAAS,CAAC,yBAAyB,IAAI,CAAC,CAAA;IAChH,OAAO,CAAC,GAAG,CAAC,4DAA4D,SAAS,CAAC,yBAAyB,IAAI,CAAC,CAAA;IAChH,IAAA,gBAAM,EAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAA;IAC7B,IAAA,gBAAM,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,KAAK,MAAM,CAAC,aAAa,CAAC,CAAC,CAAA;IAC3D,IAAA,gBAAM,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,cAAc,KAAK,MAAM,CAAC,aAAa,CAAC,CAAC,CAAA;AAC9D,CAAC,CAAA;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;IACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AACpB,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;IACpB,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;AACxB,CAAC,CAAC,CAAA","sourcesContent":["import assert from 'assert'\nimport {\n Account,\n createClient,\n Transfer,\n TransferFlags,\n} from '.'\n\nconst MAX_TRANSFERS = 51200\n// CI runs benchmark.ts against a \"--development\" replica.\nconst MAX_REQUEST_BATCH_SIZE = 253\nconst IS_TWO_PHASE_TRANSFER = false\n\nconst client = createClient({\n cluster_id: 0n,\n replica_addresses: [process.env.TB_ADDRESS || '3000']\n})\n\nconst TRANSFER_SIZE = 128\nconst accountA: Account = {\n id: 137n,\n debits_pending: 0n,\n debits_posted: 0n,\n credits_pending: 0n,\n credits_posted: 0n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n reserved: 0,\n ledger: 1,\n code: 1,\n flags: 0,\n timestamp: 0n,\n}\n\nconst accountB: Account = {\n id: 138n,\n debits_pending: 0n,\n debits_posted: 0n,\n credits_pending: 0n,\n credits_posted: 0n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n reserved: 0,\n ledger: 1,\n code: 1,\n flags: 0,\n timestamp: 0n,\n}\n\nconst runBenchmark = async () => {\n console.log(`pre-allocating ${MAX_TRANSFERS} transfers and posts...`)\n const transfers: Transfer[][] = []\n const posts: Transfer[][] = []\n\n let count = 0\n while (count < MAX_TRANSFERS) {\n const pendingBatch: Transfer[] = []\n const postBatch: Transfer[] = []\n for (let i = 0; i < MAX_REQUEST_BATCH_SIZE; i++) {\n if (count === MAX_TRANSFERS) break\n\n count += 1\n pendingBatch.push({\n id: BigInt(count),\n debit_account_id: accountA.id,\n credit_account_id: accountB.id,\n amount: 1n,\n pending_id: 0n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n timeout: IS_TWO_PHASE_TRANSFER ? 2 : 0,\n code: 1,\n ledger: 1,\n flags: IS_TWO_PHASE_TRANSFER ? TransferFlags.pending : 0,\n timestamp: 0n,\n })\n\n if (IS_TWO_PHASE_TRANSFER) {\n postBatch.push({\n id: BigInt(MAX_TRANSFERS + count),\n debit_account_id: accountA.id,\n credit_account_id: accountB.id,\n amount: 1n,\n pending_id: BigInt(count),\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n timeout: 0,\n code: 1,\n ledger: 1,\n flags: IS_TWO_PHASE_TRANSFER ? TransferFlags.post_pending_transfer : 0,\n timestamp: 0n,\n })\n }\n }\n\n transfers.push(pendingBatch)\n if (IS_TWO_PHASE_TRANSFER) posts.push(postBatch)\n }\n assert(count === MAX_TRANSFERS)\n\n console.log(`starting benchmark. MAX_TRANSFERS=${MAX_TRANSFERS} REQUEST_BATCH_SIZE=${MAX_REQUEST_BATCH_SIZE} NUMBER_OF_BATCHES=${transfers.length}`)\n let maxCreateTransfersLatency = 0\n let maxCommitTransfersLatency = 0\n const start = Date.now()\n\n for (let i = 0; i < transfers.length; i++) {\n const ms1 = Date.now()\n\n const transferResults = await client.createTransfers(transfers[i])\n assert(transferResults.length === transfers[i].length)\n\n const ms2 = Date.now()\n const createTransferLatency = ms2 - ms1\n if (createTransferLatency > maxCreateTransfersLatency) {\n maxCreateTransfersLatency = createTransferLatency\n }\n\n if (IS_TWO_PHASE_TRANSFER) {\n const postTransferResults = await client.createTransfers(posts[i])\n assert(postTransferResults.length === posts[i].length)\n\n const ms3 = Date.now()\n const commitTransferLatency = ms3 - ms2\n if (commitTransferLatency > maxCommitTransfersLatency) {\n maxCommitTransfersLatency = commitTransferLatency\n }\n }\n }\n\n const ms = Date.now() - start\n\n return {\n ms,\n maxCommitTransfersLatency,\n maxCreateTransfersLatency\n }\n}\n\nconst main = async () => {\n console.log(\"creating the accounts...\")\n await client.createAccounts([accountA, accountB])\n const accountResults = await client.lookupAccounts([accountA.id, accountB.id])\n assert(accountResults.length === 2)\n assert(accountResults[0].debits_posted === 0n)\n assert(accountResults[1].debits_posted === 0n)\n\n const benchmark = await runBenchmark()\n\n const accounts = await client.lookupAccounts([accountA.id, accountB.id])\n const result = Math.floor((1000 * MAX_TRANSFERS)/benchmark.ms)\n console.log(\"=============================\")\n console.log(`${IS_TWO_PHASE_TRANSFER ? 'two-phase ' : ''}transfers per second: ${result}`)\n console.log(`create transfers max p100 latency per 10 000 transfers = ${benchmark.maxCreateTransfersLatency}ms`)\n console.log(`commit transfers max p100 latency per 10 000 transfers = ${benchmark.maxCommitTransfersLatency}ms`)\n assert(accounts.length === 2)\n assert(accounts[0].debits_posted === BigInt(MAX_TRANSFERS))\n assert(accounts[1].credits_posted === BigInt(MAX_TRANSFERS))\n}\n\nmain().catch(error => {\n console.log(error)\n}).finally(async () => {\n await client.destroy()\n})\n"]}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/dist/bindings.d.ts
CHANGED
|
@@ -59,8 +59,8 @@ export type Transfer = {
|
|
|
59
59
|
flags: number;
|
|
60
60
|
timestamp: bigint;
|
|
61
61
|
};
|
|
62
|
-
export declare enum
|
|
63
|
-
|
|
62
|
+
export declare enum CreateAccountStatus {
|
|
63
|
+
created = 4294967295,
|
|
64
64
|
linked_event_failed = 1,
|
|
65
65
|
linked_event_chain_open = 2,
|
|
66
66
|
imported_event_expected = 22,
|
|
@@ -88,8 +88,8 @@ export declare enum CreateAccountError {
|
|
|
88
88
|
code_must_not_be_zero = 14,
|
|
89
89
|
imported_event_timestamp_must_not_regress = 26
|
|
90
90
|
}
|
|
91
|
-
export declare enum
|
|
92
|
-
|
|
91
|
+
export declare enum CreateTransferStatus {
|
|
92
|
+
created = 4294967295,
|
|
93
93
|
linked_event_failed = 1,
|
|
94
94
|
linked_event_chain_open = 2,
|
|
95
95
|
imported_event_expected = 56,
|
|
@@ -158,13 +158,13 @@ export declare enum CreateTransferError {
|
|
|
158
158
|
exceeds_credits = 54,
|
|
159
159
|
exceeds_debits = 55
|
|
160
160
|
}
|
|
161
|
-
export type
|
|
162
|
-
|
|
163
|
-
|
|
161
|
+
export type CreateAccountResult = {
|
|
162
|
+
timestamp: bigint;
|
|
163
|
+
status: CreateAccountStatus;
|
|
164
164
|
};
|
|
165
|
-
export type
|
|
166
|
-
|
|
167
|
-
|
|
165
|
+
export type CreateTransferResult = {
|
|
166
|
+
timestamp: bigint;
|
|
167
|
+
status: CreateTransferStatus;
|
|
168
168
|
};
|
|
169
169
|
export type AccountFilter = {
|
|
170
170
|
account_id: bigint;
|
|
@@ -198,12 +198,12 @@ export type AccountBalance = {
|
|
|
198
198
|
export declare enum Operation {
|
|
199
199
|
pulse = 128,
|
|
200
200
|
get_change_events = 137,
|
|
201
|
-
create_accounts = 138,
|
|
202
|
-
create_transfers = 139,
|
|
203
201
|
lookup_accounts = 140,
|
|
204
202
|
lookup_transfers = 141,
|
|
205
203
|
get_account_transfers = 142,
|
|
206
204
|
get_account_balances = 143,
|
|
207
205
|
query_accounts = 144,
|
|
208
|
-
query_transfers = 145
|
|
206
|
+
query_transfers = 145,
|
|
207
|
+
create_accounts = 146,
|
|
208
|
+
create_transfers = 147
|
|
209
209
|
}
|