@ckb-ccc/core 0.0.13-alpha.6 → 0.0.13-alpha.8
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 +22 -0
- package/dist/ckb/transaction.d.ts +91 -1
- package/dist/ckb/transaction.d.ts.map +1 -1
- package/dist/ckb/transaction.js +118 -24
- package/dist/client/cache/cache.d.ts +29 -9
- package/dist/client/cache/cache.d.ts.map +1 -1
- package/dist/client/cache/cache.js +43 -1
- package/dist/client/cache/memory.d.ts +10 -6
- package/dist/client/cache/memory.d.ts.map +1 -1
- package/dist/client/cache/memory.js +49 -39
- package/dist/client/client.d.ts +10 -4
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +6 -5
- package/dist/client/clientPublicMainnet.advanced.d.ts.map +1 -1
- package/dist/client/clientPublicMainnet.advanced.js +15 -0
- package/dist/client/clientPublicTestnet.advanced.d.ts.map +1 -1
- package/dist/client/clientPublicTestnet.advanced.js +15 -0
- package/dist/client/clientTypes.d.ts +47 -4
- package/dist/client/clientTypes.d.ts.map +1 -1
- package/dist/client/clientTypes.js +26 -1
- package/dist/client/jsonRpc/index.d.ts +39 -1
- package/dist/client/jsonRpc/index.d.ts.map +1 -1
- package/dist/client/jsonRpc/index.js +63 -2
- package/dist/client/jsonRpc/transformers.d.ts.map +1 -1
- package/dist/client/jsonRpc/transformers.js +11 -4
- package/dist/fixedPoint/index.d.ts +3 -3
- package/dist/fixedPoint/index.js +3 -3
- package/dist/signer/signer/index.d.ts +3 -1
- package/dist/signer/signer/index.d.ts.map +1 -1
- package/dist/signer/signer/index.js +14 -0
- package/dist.commonjs/ckb/transaction.d.ts +91 -1
- package/dist.commonjs/ckb/transaction.d.ts.map +1 -1
- package/dist.commonjs/ckb/transaction.js +121 -23
- package/dist.commonjs/client/cache/cache.d.ts +29 -9
- package/dist.commonjs/client/cache/cache.d.ts.map +1 -1
- package/dist.commonjs/client/cache/cache.js +45 -0
- package/dist.commonjs/client/cache/memory.d.ts +10 -6
- package/dist.commonjs/client/cache/memory.d.ts.map +1 -1
- package/dist.commonjs/client/cache/memory.js +49 -39
- package/dist.commonjs/client/client.d.ts +10 -4
- package/dist.commonjs/client/client.d.ts.map +1 -1
- package/dist.commonjs/client/client.js +6 -5
- package/dist.commonjs/client/clientPublicMainnet.advanced.d.ts.map +1 -1
- package/dist.commonjs/client/clientPublicMainnet.advanced.js +15 -0
- package/dist.commonjs/client/clientPublicTestnet.advanced.d.ts.map +1 -1
- package/dist.commonjs/client/clientPublicTestnet.advanced.js +15 -0
- package/dist.commonjs/client/clientTypes.d.ts +47 -4
- package/dist.commonjs/client/clientTypes.d.ts.map +1 -1
- package/dist.commonjs/client/clientTypes.js +33 -5
- package/dist.commonjs/client/jsonRpc/index.d.ts +39 -1
- package/dist.commonjs/client/jsonRpc/index.d.ts.map +1 -1
- package/dist.commonjs/client/jsonRpc/index.js +74 -13
- package/dist.commonjs/client/jsonRpc/transformers.d.ts.map +1 -1
- package/dist.commonjs/client/jsonRpc/transformers.js +55 -48
- package/dist.commonjs/fixedPoint/index.d.ts +3 -3
- package/dist.commonjs/fixedPoint/index.js +3 -3
- package/dist.commonjs/signer/signer/index.d.ts +3 -1
- package/dist.commonjs/signer/signer/index.d.ts.map +1 -1
- package/dist.commonjs/signer/signer/index.js +14 -0
- package/package.json +1 -1
- package/src/ckb/transaction.ts +170 -30
- package/src/client/cache/cache.ts +58 -13
- package/src/client/cache/memory.ts +60 -52
- package/src/client/client.ts +22 -5
- package/src/client/clientPublicMainnet.advanced.ts +17 -0
- package/src/client/clientPublicTestnet.advanced.ts +17 -0
- package/src/client/clientTypes.ts +76 -5
- package/src/client/jsonRpc/index.ts +105 -3
- package/src/client/jsonRpc/transformers.ts +11 -3
- package/src/fixedPoint/index.ts +3 -3
- package/src/signer/signer/index.ts +20 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# @ckb-ccc/core
|
|
2
2
|
|
|
3
|
+
## 0.0.13-alpha.8
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`8629449`](https://github.com/ckb-ecofund/ccc/commit/86294490e76fc2a1cee20f827883e02fceca6e8b) Thanks [@Hanssen0](https://github.com/Hanssen0)! - feat(core): ClientCache.clear
|
|
8
|
+
|
|
9
|
+
replaced ClientCache.revertTransactions
|
|
10
|
+
|
|
11
|
+
- [`52156f9`](https://github.com/ckb-ecofund/ccc/commit/52156f9df9cae9e0b71b77b49cda0e4d73e76142) Thanks [@Hanssen0](https://github.com/Hanssen0)! - feat(core): ClientCache.revertTransaction
|
|
12
|
+
|
|
13
|
+
- [`63606db`](https://github.com/ckb-ecofund/ccc/commit/63606db908f95bfc857430083932144d1ef4deef) Thanks [@Hanssen0](https://github.com/Hanssen0)! - feat(coree): typed errors
|
|
14
|
+
|
|
15
|
+
## 0.0.13-alpha.7
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- [`1043c2b`](https://github.com/ckb-ecofund/ccc/commit/1043c2bc211ec283b88dba3b81feef98e4185c0e) Thanks [@Hanssen0](https://github.com/Hanssen0)! - feat(core): nervos dao script
|
|
20
|
+
|
|
21
|
+
- [`079e20e`](https://github.com/ckb-ecofund/ccc/commit/079e20ef14cf9a7c06bbaddf3e92cbfbb005da11) Thanks [@Hanssen0](https://github.com/Hanssen0)! - feat(core): more APIs. Since parsing.
|
|
22
|
+
|
|
23
|
+
- [`ed154d1`](https://github.com/ckb-ecofund/ccc/commit/ed154d189e239907ad686ec51ac8133b6d5eb895) Thanks [@Hanssen0](https://github.com/Hanssen0)! - feat(core): Signer.findCells
|
|
24
|
+
|
|
3
25
|
## 0.0.13-alpha.6
|
|
4
26
|
|
|
5
27
|
### Patch Changes
|
|
@@ -268,12 +268,102 @@ export declare class Cell {
|
|
|
268
268
|
*/
|
|
269
269
|
clone(): Cell;
|
|
270
270
|
}
|
|
271
|
+
/**
|
|
272
|
+
* @public
|
|
273
|
+
*/
|
|
274
|
+
export type EpochLike = [NumLike, NumLike, NumLike];
|
|
275
|
+
/**
|
|
276
|
+
* @public
|
|
277
|
+
*/
|
|
278
|
+
export type Epoch = [Num, Num, Num];
|
|
279
|
+
/**
|
|
280
|
+
* @public
|
|
281
|
+
*/
|
|
282
|
+
export declare function epochFrom(epochLike: EpochLike): Epoch;
|
|
283
|
+
/**
|
|
284
|
+
* @public
|
|
285
|
+
*/
|
|
286
|
+
export declare function epochFromHex(hex: HexLike): Epoch;
|
|
287
|
+
/**
|
|
288
|
+
* @public
|
|
289
|
+
*/
|
|
290
|
+
export declare function epochToHex(epochLike: EpochLike): Hex;
|
|
291
|
+
/**
|
|
292
|
+
* @public
|
|
293
|
+
*/
|
|
294
|
+
export type SinceLike = {
|
|
295
|
+
relative: "absolute" | "relative";
|
|
296
|
+
metric: "blockNumber" | "epoch" | "timestamp";
|
|
297
|
+
value: NumLike;
|
|
298
|
+
} | NumLike;
|
|
299
|
+
/**
|
|
300
|
+
* @public
|
|
301
|
+
*/
|
|
302
|
+
export declare class Since {
|
|
303
|
+
relative: "absolute" | "relative";
|
|
304
|
+
metric: "blockNumber" | "epoch" | "timestamp";
|
|
305
|
+
value: Num;
|
|
306
|
+
/**
|
|
307
|
+
* Creates an instance of Since.
|
|
308
|
+
*
|
|
309
|
+
* @param relative - Absolute or relative
|
|
310
|
+
* @param metric - The metric of since
|
|
311
|
+
* @param value - The value of since
|
|
312
|
+
*/
|
|
313
|
+
constructor(relative: "absolute" | "relative", metric: "blockNumber" | "epoch" | "timestamp", value: Num);
|
|
314
|
+
/**
|
|
315
|
+
* Clone a Since.
|
|
316
|
+
*
|
|
317
|
+
* @returns A cloned Since instance.
|
|
318
|
+
*
|
|
319
|
+
* @example
|
|
320
|
+
* ```typescript
|
|
321
|
+
* const since1 = since0.clone();
|
|
322
|
+
* ```
|
|
323
|
+
*/
|
|
324
|
+
clone(): Since;
|
|
325
|
+
/**
|
|
326
|
+
* Creates a Since instance from a SinceLike object.
|
|
327
|
+
*
|
|
328
|
+
* @param since - A SinceLike object or an instance of Since.
|
|
329
|
+
* @returns A Since instance.
|
|
330
|
+
*
|
|
331
|
+
* @example
|
|
332
|
+
* ```typescript
|
|
333
|
+
* const since = Since.from("0x1234567812345678");
|
|
334
|
+
* ```
|
|
335
|
+
*/
|
|
336
|
+
static from(since: SinceLike): Since;
|
|
337
|
+
/**
|
|
338
|
+
* Converts the Since instance to num.
|
|
339
|
+
*
|
|
340
|
+
* @returns A num
|
|
341
|
+
*
|
|
342
|
+
* @example
|
|
343
|
+
* ```typescript
|
|
344
|
+
* const num = since.toNum();
|
|
345
|
+
* ```
|
|
346
|
+
*/
|
|
347
|
+
toNum(): Num;
|
|
348
|
+
/**
|
|
349
|
+
* Creates a Since instance from a num-like value.
|
|
350
|
+
*
|
|
351
|
+
* @param numLike - The num-like value to convert.
|
|
352
|
+
* @returns A Since instance.
|
|
353
|
+
*
|
|
354
|
+
* @example
|
|
355
|
+
* ```typescript
|
|
356
|
+
* const since = Since.fromNum("0x0");
|
|
357
|
+
* ```
|
|
358
|
+
*/
|
|
359
|
+
static fromNum(numLike: NumLike): Since;
|
|
360
|
+
}
|
|
271
361
|
/**
|
|
272
362
|
* @public
|
|
273
363
|
*/
|
|
274
364
|
export type CellInputLike = {
|
|
275
365
|
previousOutput: OutPointLike;
|
|
276
|
-
since?: NumLike | null;
|
|
366
|
+
since?: SinceLike | NumLike | null;
|
|
277
367
|
cellOutput?: CellOutputLike | null;
|
|
278
368
|
outputData?: HexLike | null;
|
|
279
369
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../src/ckb/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oCAAoC,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,KAAK,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../src/ckb/transaction.ts"],"names":[],"mappings":"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"}
|
package/dist/ckb/transaction.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { bytesFrom } from "../bytes/index.js";
|
|
1
|
+
import { bytesConcat, bytesFrom } from "../bytes/index.js";
|
|
2
2
|
import { Zero, fixedPointFrom, fixedPointToString, } from "../fixedPoint/index.js";
|
|
3
3
|
import { HasherCkb, hashCkb } from "../hasher/index.js";
|
|
4
4
|
import { hexFrom } from "../hex/index.js";
|
|
5
|
-
import { numFrom, numFromBytes, numToBytes, numToHex, } from "../num/index.js";
|
|
5
|
+
import { numBeToBytes, numFrom, numFromBytes, numLeFromBytes, numLeToBytes, numToBytes, numToHex, } from "../num/index.js";
|
|
6
6
|
import { apply, reduceAsync } from "../utils/index.js";
|
|
7
7
|
import * as mol from "./molecule.advanced/index.js";
|
|
8
8
|
import { Script } from "./script.js";
|
|
@@ -308,6 +308,113 @@ export class Cell {
|
|
|
308
308
|
return new Cell(this.outPoint.clone(), this.cellOutput.clone(), this.outputData);
|
|
309
309
|
}
|
|
310
310
|
}
|
|
311
|
+
/**
|
|
312
|
+
* @public
|
|
313
|
+
*/
|
|
314
|
+
export function epochFrom(epochLike) {
|
|
315
|
+
return [numFrom(epochLike[0]), numFrom(epochLike[1]), numFrom(epochLike[2])];
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* @public
|
|
319
|
+
*/
|
|
320
|
+
export function epochFromHex(hex) {
|
|
321
|
+
const bytes = bytesFrom(hexFrom(hex));
|
|
322
|
+
return [
|
|
323
|
+
numFrom(bytes.slice(4, 7)),
|
|
324
|
+
numFrom(bytes.slice(2, 4)),
|
|
325
|
+
numFrom(bytes.slice(0, 2)),
|
|
326
|
+
];
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* @public
|
|
330
|
+
*/
|
|
331
|
+
export function epochToHex(epochLike) {
|
|
332
|
+
const epoch = epochFrom(epochLike);
|
|
333
|
+
return hexFrom(bytesConcat(numBeToBytes(epoch[2], 2), numBeToBytes(epoch[1], 2), numBeToBytes(epoch[0], 3)));
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* @public
|
|
337
|
+
*/
|
|
338
|
+
export class Since {
|
|
339
|
+
/**
|
|
340
|
+
* Creates an instance of Since.
|
|
341
|
+
*
|
|
342
|
+
* @param relative - Absolute or relative
|
|
343
|
+
* @param metric - The metric of since
|
|
344
|
+
* @param value - The value of since
|
|
345
|
+
*/
|
|
346
|
+
constructor(relative, metric, value) {
|
|
347
|
+
this.relative = relative;
|
|
348
|
+
this.metric = metric;
|
|
349
|
+
this.value = value;
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Clone a Since.
|
|
353
|
+
*
|
|
354
|
+
* @returns A cloned Since instance.
|
|
355
|
+
*
|
|
356
|
+
* @example
|
|
357
|
+
* ```typescript
|
|
358
|
+
* const since1 = since0.clone();
|
|
359
|
+
* ```
|
|
360
|
+
*/
|
|
361
|
+
clone() {
|
|
362
|
+
return new Since(this.relative, this.metric, this.value);
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Creates a Since instance from a SinceLike object.
|
|
366
|
+
*
|
|
367
|
+
* @param since - A SinceLike object or an instance of Since.
|
|
368
|
+
* @returns A Since instance.
|
|
369
|
+
*
|
|
370
|
+
* @example
|
|
371
|
+
* ```typescript
|
|
372
|
+
* const since = Since.from("0x1234567812345678");
|
|
373
|
+
* ```
|
|
374
|
+
*/
|
|
375
|
+
static from(since) {
|
|
376
|
+
if (since instanceof Since) {
|
|
377
|
+
return since;
|
|
378
|
+
}
|
|
379
|
+
if (typeof since === "object" && "relative" in since) {
|
|
380
|
+
return new Since(since.relative, since.metric, numFrom(since.value));
|
|
381
|
+
}
|
|
382
|
+
return Since.fromNum(since);
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* Converts the Since instance to num.
|
|
386
|
+
*
|
|
387
|
+
* @returns A num
|
|
388
|
+
*
|
|
389
|
+
* @example
|
|
390
|
+
* ```typescript
|
|
391
|
+
* const num = since.toNum();
|
|
392
|
+
* ```
|
|
393
|
+
*/
|
|
394
|
+
toNum() {
|
|
395
|
+
const flag = ((this.relative === "absolute" ? 0 : 1) << 7) |
|
|
396
|
+
({ blockNumber: 0, epoch: 1, timestamp: 2 }[this.metric] << 5);
|
|
397
|
+
return numFrom(bytesConcat([flag], numLeToBytes(this.value, 7)));
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Creates a Since instance from a num-like value.
|
|
401
|
+
*
|
|
402
|
+
* @param numLike - The num-like value to convert.
|
|
403
|
+
* @returns A Since instance.
|
|
404
|
+
*
|
|
405
|
+
* @example
|
|
406
|
+
* ```typescript
|
|
407
|
+
* const since = Since.fromNum("0x0");
|
|
408
|
+
* ```
|
|
409
|
+
*/
|
|
410
|
+
static fromNum(numLike) {
|
|
411
|
+
const bytes = numBeToBytes(numLike, 8);
|
|
412
|
+
const relative = bytes[0] >> 7 === 0 ? "absolute" : "relative";
|
|
413
|
+
const metric = ["blockNumber", "epoch", "timestamp"][(bytes[0] >> 5) & 3];
|
|
414
|
+
const value = numLeFromBytes(bytes.slice(1, 8));
|
|
415
|
+
return new Since(relative, metric, value);
|
|
416
|
+
}
|
|
417
|
+
}
|
|
311
418
|
/**
|
|
312
419
|
* @public
|
|
313
420
|
*/
|
|
@@ -357,7 +464,7 @@ export class CellInput {
|
|
|
357
464
|
if (cellInput instanceof CellInput) {
|
|
358
465
|
return cellInput;
|
|
359
466
|
}
|
|
360
|
-
return new CellInput(OutPoint.from(cellInput.previousOutput),
|
|
467
|
+
return new CellInput(OutPoint.from(cellInput.previousOutput), Since.from(cellInput.since ?? 0).toNum(), apply(CellOutput.from, cellInput.cellOutput), apply(hexFrom, cellInput.outputData));
|
|
361
468
|
}
|
|
362
469
|
/**
|
|
363
470
|
* Complete extra infos in the input. Like the output of the out point.
|
|
@@ -1156,36 +1263,23 @@ export class Transaction {
|
|
|
1156
1263
|
}, numFrom(0));
|
|
1157
1264
|
}
|
|
1158
1265
|
async completeInputs(from, filter, accumulator, init) {
|
|
1159
|
-
const scripts = (await from.getAddressObjs()).map(({ script }) => script);
|
|
1160
1266
|
const collectedCells = [];
|
|
1161
1267
|
let acc = init;
|
|
1162
1268
|
let fulfilled = false;
|
|
1163
|
-
for (const
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
scriptType: "lock",
|
|
1167
|
-
filter,
|
|
1168
|
-
scriptSearchMode: "exact",
|
|
1169
|
-
withData: true,
|
|
1170
|
-
})) {
|
|
1171
|
-
if (this.inputs.some(({ previousOutput }) => previousOutput.eq(cell.outPoint))) {
|
|
1172
|
-
continue;
|
|
1173
|
-
}
|
|
1174
|
-
const i = collectedCells.push(cell);
|
|
1175
|
-
const next = await Promise.resolve(accumulator(acc, cell, i - 1, collectedCells));
|
|
1176
|
-
if (next === undefined) {
|
|
1177
|
-
fulfilled = true;
|
|
1178
|
-
break;
|
|
1179
|
-
}
|
|
1180
|
-
acc = next;
|
|
1269
|
+
for await (const cell of from.findCells(filter, true)) {
|
|
1270
|
+
if (this.inputs.some(({ previousOutput }) => previousOutput.eq(cell.outPoint))) {
|
|
1271
|
+
continue;
|
|
1181
1272
|
}
|
|
1182
|
-
|
|
1273
|
+
const i = collectedCells.push(cell);
|
|
1274
|
+
const next = await Promise.resolve(accumulator(acc, cell, i - 1, collectedCells));
|
|
1275
|
+
if (next === undefined) {
|
|
1276
|
+
fulfilled = true;
|
|
1183
1277
|
break;
|
|
1184
1278
|
}
|
|
1279
|
+
acc = next;
|
|
1185
1280
|
}
|
|
1186
1281
|
this.inputs.push(...collectedCells.map(({ outPoint, outputData, cellOutput }) => CellInput.from({
|
|
1187
1282
|
previousOutput: outPoint,
|
|
1188
|
-
since: 0,
|
|
1189
1283
|
outputData,
|
|
1190
1284
|
cellOutput,
|
|
1191
1285
|
})));
|
|
@@ -1,15 +1,35 @@
|
|
|
1
1
|
import { Cell, CellLike, OutPointLike, Transaction, TransactionLike } from "../../ckb/index.js";
|
|
2
2
|
import { HexLike } from "../../hex/index.js";
|
|
3
3
|
import { ClientCollectableSearchKeyLike } from "../clientTypes.advanced.js";
|
|
4
|
-
export
|
|
5
|
-
markUsable(...cellLikes: (CellLike | CellLike[])[]): Promise<void>;
|
|
6
|
-
markUnusable(...outPointLike: (OutPointLike | OutPointLike[])[]): Promise<void>;
|
|
4
|
+
export declare abstract class ClientCache {
|
|
5
|
+
abstract markUsable(...cellLikes: (CellLike | CellLike[])[]): Promise<void>;
|
|
6
|
+
abstract markUnusable(...outPointLike: (OutPointLike | OutPointLike[])[]): Promise<void>;
|
|
7
7
|
markTransactions(...transactionLike: (TransactionLike | TransactionLike[])[]): Promise<void>;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
abstract clear(): Promise<void>;
|
|
9
|
+
abstract findCells(filter: ClientCollectableSearchKeyLike): AsyncGenerator<Cell>;
|
|
10
|
+
/**
|
|
11
|
+
* Get a known cell by out point
|
|
12
|
+
* @param _outPoint
|
|
13
|
+
*/
|
|
14
|
+
abstract getCell(_outPoint: OutPointLike): Promise<Cell | undefined>;
|
|
15
|
+
abstract isUnusable(outPointLike: OutPointLike): Promise<boolean>;
|
|
16
|
+
/**
|
|
17
|
+
* Record known transactions
|
|
18
|
+
* Implement this method to enable transactions query caching
|
|
19
|
+
* @param _transactions
|
|
20
|
+
*/
|
|
21
|
+
recordTransactions(..._transactions: (TransactionLike | TransactionLike[])[]): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Get a known transaction by hash
|
|
24
|
+
* Implement this method to enable transactions query caching
|
|
25
|
+
* @param _txHash
|
|
26
|
+
*/
|
|
27
|
+
getTransaction(_txHash: HexLike): Promise<Transaction | undefined>;
|
|
28
|
+
/**
|
|
29
|
+
* Record known cells
|
|
30
|
+
* Implement this method to enable cells query caching
|
|
31
|
+
* @param _cells
|
|
32
|
+
*/
|
|
33
|
+
recordCells(..._cells: (CellLike | CellLike[])[]): Promise<void>;
|
|
14
34
|
}
|
|
15
35
|
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/client/cache/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAE5E,
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/client/cache/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAE5E,8BAAsB,WAAW;IAC/B,QAAQ,CAAC,UAAU,CAAC,GAAG,SAAS,EAAE,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3E,QAAQ,CAAC,YAAY,CACnB,GAAG,YAAY,EAAE,CAAC,YAAY,GAAG,YAAY,EAAE,CAAC,EAAE,GACjD,OAAO,CAAC,IAAI,CAAC;IACV,gBAAgB,CACpB,GAAG,eAAe,EAAE,CAAC,eAAe,GAAG,eAAe,EAAE,CAAC,EAAE,GAC1D,OAAO,CAAC,IAAI,CAAC;IAuBhB,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAChB,MAAM,EAAE,8BAA8B,GACrC,cAAc,CAAC,IAAI,CAAC;IACvB;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IACpE,QAAQ,CAAC,UAAU,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAEjE;;;;OAIG;IACG,kBAAkB,CACtB,GAAG,aAAa,EAAE,CAAC,eAAe,GAAG,eAAe,EAAE,CAAC,EAAE,GACxD,OAAO,CAAC,IAAI,CAAC;IAChB;;;;OAIG;IACG,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAIxE;;;;OAIG;IACG,WAAW,CAAC,GAAG,MAAM,EAAE,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CACvE"}
|
|
@@ -1 +1,43 @@
|
|
|
1
|
-
|
|
1
|
+
import { Transaction, } from "../../ckb/index.js";
|
|
2
|
+
export class ClientCache {
|
|
3
|
+
async markTransactions(...transactionLike) {
|
|
4
|
+
await Promise.all([
|
|
5
|
+
this.recordTransactions(...transactionLike),
|
|
6
|
+
...transactionLike.flat().map((transactionLike) => {
|
|
7
|
+
const tx = Transaction.from(transactionLike);
|
|
8
|
+
const txHash = tx.hash();
|
|
9
|
+
return Promise.all([
|
|
10
|
+
...tx.inputs.map((i) => this.markUnusable(i.previousOutput)),
|
|
11
|
+
...tx.outputs.map((o, i) => this.markUsable({
|
|
12
|
+
cellOutput: o,
|
|
13
|
+
outputData: tx.outputsData[i],
|
|
14
|
+
outPoint: {
|
|
15
|
+
txHash,
|
|
16
|
+
index: i,
|
|
17
|
+
},
|
|
18
|
+
})),
|
|
19
|
+
]);
|
|
20
|
+
}),
|
|
21
|
+
]);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Record known transactions
|
|
25
|
+
* Implement this method to enable transactions query caching
|
|
26
|
+
* @param _transactions
|
|
27
|
+
*/
|
|
28
|
+
async recordTransactions(..._transactions) { }
|
|
29
|
+
/**
|
|
30
|
+
* Get a known transaction by hash
|
|
31
|
+
* Implement this method to enable transactions query caching
|
|
32
|
+
* @param _txHash
|
|
33
|
+
*/
|
|
34
|
+
async getTransaction(_txHash) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Record known cells
|
|
39
|
+
* Implement this method to enable cells query caching
|
|
40
|
+
* @param _cells
|
|
41
|
+
*/
|
|
42
|
+
async recordCells(..._cells) { }
|
|
43
|
+
}
|
|
@@ -2,19 +2,23 @@ import { Cell, CellLike, OutPointLike, Transaction, TransactionLike } from "../.
|
|
|
2
2
|
import { HexLike } from "../../hex/index.js";
|
|
3
3
|
import { ClientCollectableSearchKeyLike } from "../clientTypes.advanced.js";
|
|
4
4
|
import { ClientCache } from "./cache.js";
|
|
5
|
-
export declare class ClientCacheMemory
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
export declare class ClientCacheMemory extends ClientCache {
|
|
6
|
+
/**
|
|
7
|
+
* OutPoint => [isLive, Cell | OutPoint]
|
|
8
|
+
*/
|
|
9
|
+
private readonly cells;
|
|
10
|
+
/**
|
|
11
|
+
* TX Hash => Transaction
|
|
12
|
+
*/
|
|
8
13
|
private readonly knownTransactions;
|
|
9
|
-
private readonly knownCells;
|
|
10
14
|
markUsable(...cellLikes: (CellLike | CellLike[])[]): Promise<void>;
|
|
11
15
|
markUnusable(...outPointLikes: (OutPointLike | OutPointLike[])[]): Promise<void>;
|
|
12
|
-
|
|
16
|
+
clear(): Promise<void>;
|
|
13
17
|
findCells(keyLike: ClientCollectableSearchKeyLike): AsyncGenerator<Cell>;
|
|
18
|
+
getCell(outPointLike: OutPointLike): Promise<Cell | undefined>;
|
|
14
19
|
isUnusable(outPointLike: OutPointLike): Promise<boolean>;
|
|
15
20
|
recordTransactions(...transactions: (TransactionLike | TransactionLike[])[]): Promise<void>;
|
|
16
21
|
getTransaction(txHashLike: HexLike): Promise<Transaction | undefined>;
|
|
17
22
|
recordCells(...cells: (CellLike | CellLike[])[]): Promise<void>;
|
|
18
|
-
getCell(outPointLike: OutPointLike): Promise<Cell | undefined>;
|
|
19
23
|
}
|
|
20
24
|
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/client/cache/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,QAAQ,EAER,YAAY,EACZ,WAAW,EACX,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAW,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGzC,qBAAa,iBAAkB,
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/client/cache/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,QAAQ,EAER,YAAY,EACZ,WAAW,EACX,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAW,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGzC,qBAAa,iBAAkB,SAAQ,WAAW;IAChD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,KAAK,CASR;IAEd;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAuC;IAEnE,UAAU,CAAC,GAAG,SAAS,EAAE,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IASlE,YAAY,CAChB,GAAG,aAAa,EAAE,CAAC,YAAY,GAAG,YAAY,EAAE,CAAC,EAAE,GAClD,OAAO,CAAC,IAAI,CAAC;IAcV,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrB,SAAS,CACd,OAAO,EAAE,8BAA8B,GACtC,cAAc,CAAC,IAAI,CAAC;IAYjB,OAAO,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAS9D,UAAU,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAMxD,kBAAkB,CACtB,GAAG,YAAY,EAAE,CAAC,eAAe,GAAG,eAAe,EAAE,CAAC,EAAE,GACvD,OAAO,CAAC,IAAI,CAAC;IAMV,cAAc,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAKrE,WAAW,CAAC,GAAG,KAAK,EAAE,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAWtE"}
|
|
@@ -1,73 +1,83 @@
|
|
|
1
1
|
import { Cell, OutPoint, Transaction, } from "../../ckb/index.js";
|
|
2
2
|
import { hexFrom } from "../../hex/index.js";
|
|
3
|
+
import { ClientCache } from "./cache.js";
|
|
3
4
|
import { filterCell } from "./memory.advanced.js";
|
|
4
|
-
export class ClientCacheMemory {
|
|
5
|
+
export class ClientCacheMemory extends ClientCache {
|
|
5
6
|
constructor() {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
super(...arguments);
|
|
8
|
+
/**
|
|
9
|
+
* OutPoint => [isLive, Cell | OutPoint]
|
|
10
|
+
*/
|
|
11
|
+
this.cells = new Map();
|
|
12
|
+
/**
|
|
13
|
+
* TX Hash => Transaction
|
|
14
|
+
*/
|
|
15
|
+
this.knownTransactions = new Map();
|
|
10
16
|
}
|
|
11
17
|
async markUsable(...cellLikes) {
|
|
12
18
|
cellLikes.flat().forEach((cellLike) => {
|
|
13
19
|
const cell = Cell.from(cellLike).clone();
|
|
14
|
-
|
|
15
|
-
this.
|
|
16
|
-
const index = this.unusableOutPoints.findIndex((o) => cell.outPoint.eq(o));
|
|
17
|
-
if (index !== -1) {
|
|
18
|
-
this.unusableOutPoints.splice(index, 1);
|
|
19
|
-
}
|
|
20
|
+
const outPointStr = hexFrom(cell.outPoint.toBytes());
|
|
21
|
+
this.cells.set(outPointStr, [true, cell]);
|
|
20
22
|
});
|
|
21
23
|
}
|
|
22
24
|
async markUnusable(...outPointLikes) {
|
|
23
25
|
outPointLikes.flat().forEach((outPointLike) => {
|
|
24
26
|
const outPoint = OutPoint.from(outPointLike);
|
|
25
|
-
|
|
26
|
-
const
|
|
27
|
-
if (
|
|
28
|
-
|
|
27
|
+
const outPointStr = hexFrom(outPoint.toBytes());
|
|
28
|
+
const existed = this.cells.get(outPointStr);
|
|
29
|
+
if (existed) {
|
|
30
|
+
existed[0] = false;
|
|
31
|
+
return;
|
|
29
32
|
}
|
|
33
|
+
this.cells.set(outPointStr, [false, { outPoint }]);
|
|
30
34
|
});
|
|
31
35
|
}
|
|
32
|
-
async
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
await Promise.all(tx.inputs.map((i) => this.markUnusable(i.previousOutput)));
|
|
37
|
-
await Promise.all(tx.outputs.map((o, i) => this.markUsable({
|
|
38
|
-
cellOutput: o,
|
|
39
|
-
outputData: tx.outputsData[i],
|
|
40
|
-
outPoint: {
|
|
41
|
-
txHash,
|
|
42
|
-
index: i,
|
|
43
|
-
},
|
|
44
|
-
})));
|
|
45
|
-
}));
|
|
36
|
+
async clear() {
|
|
37
|
+
for (const val of this.cells.values()) {
|
|
38
|
+
val[0] = undefined;
|
|
39
|
+
}
|
|
46
40
|
}
|
|
47
41
|
async *findCells(keyLike) {
|
|
48
|
-
for (const cell of this.
|
|
42
|
+
for (const [isLive, cell] of this.cells.values()) {
|
|
43
|
+
if (!isLive) {
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
49
46
|
if (!filterCell(keyLike, cell)) {
|
|
50
47
|
continue;
|
|
51
48
|
}
|
|
52
|
-
yield cell;
|
|
49
|
+
yield cell.clone();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
async getCell(outPointLike) {
|
|
53
|
+
const outPoint = OutPoint.from(outPointLike);
|
|
54
|
+
const cell = this.cells.get(hexFrom(outPoint.toBytes()))?.[1];
|
|
55
|
+
if (cell && cell.cellOutput && cell.outputData) {
|
|
56
|
+
return Cell.from(cell.clone());
|
|
53
57
|
}
|
|
54
58
|
}
|
|
55
59
|
async isUnusable(outPointLike) {
|
|
56
60
|
const outPoint = OutPoint.from(outPointLike);
|
|
57
|
-
return this.
|
|
61
|
+
return !(this.cells.get(hexFrom(outPoint.toBytes()))?.[0] ?? true);
|
|
58
62
|
}
|
|
59
63
|
async recordTransactions(...transactions) {
|
|
60
|
-
|
|
64
|
+
transactions.flat().map((txLike) => {
|
|
65
|
+
const tx = Transaction.from(txLike);
|
|
66
|
+
this.knownTransactions.set(tx.hash(), tx);
|
|
67
|
+
});
|
|
61
68
|
}
|
|
62
69
|
async getTransaction(txHashLike) {
|
|
63
70
|
const txHash = hexFrom(txHashLike);
|
|
64
|
-
return this.knownTransactions.
|
|
71
|
+
return this.knownTransactions.get(txHash)?.clone();
|
|
65
72
|
}
|
|
66
73
|
async recordCells(...cells) {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
74
|
+
cells.flat().map((cellLike) => {
|
|
75
|
+
const cell = Cell.from(cellLike);
|
|
76
|
+
const outPointStr = hexFrom(cell.outPoint.toBytes());
|
|
77
|
+
if (this.cells.get(outPointStr)) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
this.cells.set(outPointStr, [undefined, cell]);
|
|
81
|
+
});
|
|
72
82
|
}
|
|
73
83
|
}
|