@ckb-ccc/core 1.9.1 → 1.10.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 +18 -0
- package/dist/ckb/index.d.ts +1 -0
- package/dist/ckb/index.d.ts.map +1 -1
- package/dist/ckb/index.js +1 -0
- package/dist/ckb/script.d.ts +12 -0
- package/dist/ckb/script.d.ts.map +1 -1
- package/dist/ckb/script.js +17 -0
- package/dist/ckb/transaction.d.ts +147 -14
- package/dist/ckb/transaction.d.ts.map +1 -1
- package/dist/ckb/transaction.js +165 -28
- package/dist/ckb/transactionErrors.d.ts +15 -0
- package/dist/ckb/transactionErrors.d.ts.map +1 -0
- package/dist/ckb/transactionErrors.js +21 -0
- package/dist/client/cache/cache.d.ts +7 -0
- package/dist/client/cache/cache.d.ts.map +1 -1
- package/dist/client/cache/cache.js +11 -0
- package/dist/client/cache/memory.advanced.d.ts +36 -3
- package/dist/client/cache/memory.advanced.d.ts.map +1 -1
- package/dist/client/cache/memory.advanced.js +53 -25
- package/dist/client/cache/memory.d.ts +10 -1
- package/dist/client/cache/memory.d.ts.map +1 -1
- package/dist/client/cache/memory.js +13 -2
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +6 -9
- package/dist/client/clientPublicMainnet.advanced.d.ts.map +1 -1
- package/dist/client/clientPublicMainnet.advanced.js +60 -0
- package/dist/client/clientPublicTestnet.advanced.d.ts +23 -0
- package/dist/client/clientPublicTestnet.advanced.d.ts.map +1 -1
- package/dist/client/clientPublicTestnet.advanced.js +144 -0
- package/dist/client/clientTypes.advanced.d.ts +0 -1
- package/dist/client/clientTypes.advanced.d.ts.map +1 -1
- package/dist/client/clientTypes.advanced.js +0 -1
- package/dist/client/knownScript.d.ts +3 -1
- package/dist/client/knownScript.d.ts.map +1 -1
- package/dist/client/knownScript.js +4 -0
- package/dist.commonjs/ckb/index.d.ts +1 -0
- package/dist.commonjs/ckb/index.d.ts.map +1 -1
- package/dist.commonjs/ckb/index.js +1 -0
- package/dist.commonjs/ckb/script.d.ts +12 -0
- package/dist.commonjs/ckb/script.d.ts.map +1 -1
- package/dist.commonjs/ckb/script.js +17 -0
- package/dist.commonjs/ckb/transaction.d.ts +147 -14
- package/dist.commonjs/ckb/transaction.d.ts.map +1 -1
- package/dist.commonjs/ckb/transaction.js +164 -27
- package/dist.commonjs/ckb/transactionErrors.d.ts +15 -0
- package/dist.commonjs/ckb/transactionErrors.d.ts.map +1 -0
- package/dist.commonjs/ckb/transactionErrors.js +26 -0
- package/dist.commonjs/client/cache/cache.d.ts +7 -0
- package/dist.commonjs/client/cache/cache.d.ts.map +1 -1
- package/dist.commonjs/client/cache/cache.js +11 -0
- package/dist.commonjs/client/cache/memory.advanced.d.ts +36 -3
- package/dist.commonjs/client/cache/memory.advanced.d.ts.map +1 -1
- package/dist.commonjs/client/cache/memory.advanced.js +54 -26
- package/dist.commonjs/client/cache/memory.d.ts +10 -1
- package/dist.commonjs/client/cache/memory.d.ts.map +1 -1
- package/dist.commonjs/client/cache/memory.js +12 -1
- package/dist.commonjs/client/client.d.ts.map +1 -1
- package/dist.commonjs/client/client.js +5 -8
- package/dist.commonjs/client/clientPublicMainnet.advanced.d.ts.map +1 -1
- package/dist.commonjs/client/clientPublicMainnet.advanced.js +60 -0
- package/dist.commonjs/client/clientPublicTestnet.advanced.d.ts +23 -0
- package/dist.commonjs/client/clientPublicTestnet.advanced.d.ts.map +1 -1
- package/dist.commonjs/client/clientPublicTestnet.advanced.js +145 -1
- package/dist.commonjs/client/clientTypes.advanced.d.ts +0 -1
- package/dist.commonjs/client/clientTypes.advanced.d.ts.map +1 -1
- package/dist.commonjs/client/clientTypes.advanced.js +1 -2
- package/dist.commonjs/client/knownScript.d.ts +3 -1
- package/dist.commonjs/client/knownScript.d.ts.map +1 -1
- package/dist.commonjs/client/knownScript.js +4 -0
- package/package.json +1 -1
- package/src/ckb/index.ts +1 -0
- package/src/ckb/script.ts +20 -0
- package/src/ckb/transaction.ts +210 -33
- package/src/ckb/transactionErrors.ts +36 -0
- package/src/client/cache/cache.ts +14 -1
- package/src/client/cache/memory.advanced.ts +57 -30
- package/src/client/cache/memory.ts +18 -1
- package/src/client/client.ts +5 -10
- package/src/client/clientPublicMainnet.advanced.ts +68 -0
- package/src/client/clientPublicTestnet.advanced.ts +163 -0
- package/src/client/clientTypes.advanced.ts +0 -1
- package/src/client/knownScript.ts +5 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Num, NumLike } from "../num/index.js";
|
|
2
|
+
import { Script, ScriptLike } from "./script.js";
|
|
3
|
+
export declare class ErrorTransactionInsufficientCapacity extends Error {
|
|
4
|
+
readonly amount: Num;
|
|
5
|
+
readonly isForChange: boolean;
|
|
6
|
+
constructor(amountLike: NumLike, reason?: {
|
|
7
|
+
isForChange?: boolean;
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
export declare class ErrorTransactionInsufficientCoin extends Error {
|
|
11
|
+
readonly amount: Num;
|
|
12
|
+
readonly type: Script;
|
|
13
|
+
constructor(amountLike: NumLike, typeLike: ScriptLike);
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=transactionErrors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactionErrors.d.ts","sourceRoot":"","sources":["../../src/ckb/transactionErrors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAW,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEjD,qBAAa,oCAAqC,SAAQ,KAAK;IAC7D,SAAgB,MAAM,EAAE,GAAG,CAAC;IAC5B,SAAgB,WAAW,EAAE,OAAO,CAAC;gBAGnC,UAAU,EAAE,OAAO,EACnB,MAAM,CAAC,EAAE;QACP,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB;CAUJ;AAED,qBAAa,gCAAiC,SAAQ,KAAK;IACzD,SAAgB,MAAM,EAAE,GAAG,CAAC;IAC5B,SAAgB,IAAI,EAAE,MAAM,CAAC;gBAEjB,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU;CAOtD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { fixedPointToString } from "../fixedPoint/index.js";
|
|
2
|
+
import { numFrom } from "../num/index.js";
|
|
3
|
+
import { Script } from "./script.js";
|
|
4
|
+
export class ErrorTransactionInsufficientCapacity extends Error {
|
|
5
|
+
constructor(amountLike, reason) {
|
|
6
|
+
const amount = numFrom(amountLike);
|
|
7
|
+
const isForChange = reason?.isForChange ?? false;
|
|
8
|
+
super(`Insufficient CKB, need ${fixedPointToString(amount)} extra CKB${isForChange ? " for the change cell" : ""}`);
|
|
9
|
+
this.amount = amount;
|
|
10
|
+
this.isForChange = isForChange;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export class ErrorTransactionInsufficientCoin extends Error {
|
|
14
|
+
constructor(amountLike, typeLike) {
|
|
15
|
+
const amount = numFrom(amountLike);
|
|
16
|
+
const type = Script.from(typeLike);
|
|
17
|
+
super(`Insufficient coin, need ${amount} extra coin`);
|
|
18
|
+
this.amount = amount;
|
|
19
|
+
this.type = type;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -87,5 +87,12 @@ export declare abstract class ClientCache {
|
|
|
87
87
|
* @param _number
|
|
88
88
|
*/
|
|
89
89
|
getBlockByNumber(_number: NumLike): Promise<ClientBlock | undefined>;
|
|
90
|
+
/**
|
|
91
|
+
* Checks if a block header is considered confirmed.
|
|
92
|
+
* The default implementation compares the header's timestamp against the current time
|
|
93
|
+
* and a configured confirmation time. Override this method for custom confirmation logic.
|
|
94
|
+
* @param header
|
|
95
|
+
*/
|
|
96
|
+
hasHeaderConfirmed(header: ClientBlockHeader): boolean;
|
|
90
97
|
}
|
|
91
98
|
//# 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,
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/client/cache/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { Transaction, } from "../../ckb/index.js";
|
|
2
|
+
import { numFrom } from "../../num/index.js";
|
|
3
|
+
import { DEFAULT_CONFIRMED_BLOCK_TIME } from "./memory.advanced.js";
|
|
2
4
|
/**
|
|
3
5
|
* @public
|
|
4
6
|
* The ClientCache class is mainly designed for chained transactions.
|
|
@@ -125,4 +127,13 @@ export class ClientCache {
|
|
|
125
127
|
async getBlockByNumber(_number) {
|
|
126
128
|
return;
|
|
127
129
|
}
|
|
130
|
+
/**
|
|
131
|
+
* Checks if a block header is considered confirmed.
|
|
132
|
+
* The default implementation compares the header's timestamp against the current time
|
|
133
|
+
* and a configured confirmation time. Override this method for custom confirmation logic.
|
|
134
|
+
* @param header
|
|
135
|
+
*/
|
|
136
|
+
hasHeaderConfirmed(header) {
|
|
137
|
+
return (numFrom(Date.now()) - header.timestamp >= DEFAULT_CONFIRMED_BLOCK_TIME);
|
|
138
|
+
}
|
|
128
139
|
}
|
|
@@ -2,6 +2,7 @@ import { Cell, CellLike, ScriptLike } from "../../ckb/index.js";
|
|
|
2
2
|
import { HexLike } from "../../hex/index.js";
|
|
3
3
|
import { NumLike } from "../../num/index.js";
|
|
4
4
|
import { ClientCollectableSearchKeyLike } from "../clientTypes.advanced.js";
|
|
5
|
+
export declare const DEFAULT_CONFIRMED_BLOCK_TIME: bigint;
|
|
5
6
|
export type CellRecord = [
|
|
6
7
|
false,
|
|
7
8
|
Pick<Cell, "outPoint"> & Partial<Pick<Cell, "cellOutput" | "outputData">>
|
|
@@ -11,12 +12,44 @@ export declare function filterScript(valueLike: ScriptLike | undefined, filterLi
|
|
|
11
12
|
export declare function filterNumByRange(lengthLike: NumLike, range: [NumLike, NumLike] | undefined): boolean;
|
|
12
13
|
export declare function filterScriptByLenRange(valueLike?: ScriptLike, scriptLenRange?: [NumLike, NumLike]): boolean;
|
|
13
14
|
export declare function filterCell(searchKeyLike: ClientCollectableSearchKeyLike, cellLike: CellLike): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* A Least Recently Used (LRU) cache implemented using a Map.
|
|
17
|
+
*
|
|
18
|
+
* This class extends the built-in Map to provide an LRU cache with a fixed capacity.
|
|
19
|
+
* When the cache is full, the least recently used entry is automatically evicted.
|
|
20
|
+
*
|
|
21
|
+
* @template K The type of the keys in the cache.
|
|
22
|
+
* @template V The type of the values in the cache.
|
|
23
|
+
*/
|
|
14
24
|
export declare class MapLru<K, V> extends Map<K, V> {
|
|
15
25
|
private readonly capacity;
|
|
16
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Constructs a new MapLru instance.
|
|
28
|
+
*
|
|
29
|
+
* @param capacity The maximum number of entries the cache can hold. Must be a positive integer.
|
|
30
|
+
* @throws {Error} If the capacity is not a positive integer.
|
|
31
|
+
*/
|
|
17
32
|
constructor(capacity: number);
|
|
18
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Retrieves a value from the cache.
|
|
35
|
+
*
|
|
36
|
+
* If the key is present in the cache, the value is moved to the most-recently-used position.
|
|
37
|
+
*
|
|
38
|
+
* @param key The key of the value to retrieve.
|
|
39
|
+
* @returns The value associated with the key, or undefined if the key is not present.
|
|
40
|
+
*/
|
|
41
|
+
get(key: K): V | undefined;
|
|
42
|
+
/**
|
|
43
|
+
* Inserts a new value into the cache, or updates an existing value.
|
|
44
|
+
*
|
|
45
|
+
* If the key is already present in the cache, it is first deleted so that the re-insertion
|
|
46
|
+
* moves it to the most-recently-used position.
|
|
47
|
+
* If the cache is over capacity after the insertion, the least recently used entry is evicted.
|
|
48
|
+
*
|
|
49
|
+
* @param key The key of the value to insert or update.
|
|
50
|
+
* @param value The value to associate with the key.
|
|
51
|
+
* @returns This MapLru instance.
|
|
52
|
+
*/
|
|
19
53
|
set(key: K, value: V): this;
|
|
20
|
-
delete(key: K): boolean;
|
|
21
54
|
}
|
|
22
55
|
//# sourceMappingURL=memory.advanced.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.advanced.d.ts","sourceRoot":"","sources":["../../../src/client/cache/memory.advanced.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAU,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,OAAO,EAAW,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAW,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACL,8BAA8B,EAE/B,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"memory.advanced.d.ts","sourceRoot":"","sources":["../../../src/client/cache/memory.advanced.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAU,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,OAAO,EAAW,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAW,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACL,8BAA8B,EAE/B,MAAM,4BAA4B,CAAC;AAGpC,eAAO,MAAM,4BAA4B,QAA0B,CAAC;AAGpE,MAAM,MAAM,UAAU,GAClB;IACE,KAAK;IACL,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAAC,CAAC;CAC1E,GACD,CAAC,IAAI,EAAE,IAAI,CAAC,GACZ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAEtB,wBAAgB,UAAU,CACxB,QAAQ,EAAE,OAAO,EACjB,UAAU,EAAE,OAAO,GAAG,SAAS,EAC/B,UAAU,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GACzC,OAAO,CAgBT;AAED,wBAAgB,YAAY,CAC1B,SAAS,EAAE,UAAU,GAAG,SAAS,EACjC,UAAU,EAAE,UAAU,GAAG,SAAS,EAClC,UAAU,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,GACzC,OAAO,CAkBT;AAED,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,OAAO,EACnB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,SAAS,GACpC,OAAO,CAQT;AAED,wBAAgB,sBAAsB,CACpC,SAAS,CAAC,EAAE,UAAU,EACtB,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAClC,OAAO,CAYT;AAED,wBAAgB,UAAU,CACxB,aAAa,EAAE,8BAA8B,EAC7C,QAAQ,EAAE,QAAQ,GACjB,OAAO,CA4CT;AAED;;;;;;;;GAQG;AACH,qBAAa,MAAM,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAO7B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IANrC;;;;;OAKG;gBAC0B,QAAQ,EAAE,MAAM;IAO7C;;;;;;;OAOG;IACM,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAenC;;;;;;;;;;OAUG;IACM,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;CAarC"}
|
|
@@ -4,6 +4,7 @@ import { hexFrom } from "../../hex/index.js";
|
|
|
4
4
|
import { numFrom } from "../../num/index.js";
|
|
5
5
|
import { clientSearchKeyRangeFrom, } from "../clientTypes.advanced.js";
|
|
6
6
|
import { ClientIndexerSearchKey } from "../clientTypes.js";
|
|
7
|
+
export const DEFAULT_CONFIRMED_BLOCK_TIME = numFrom(1000 * 10 * 50); // 50 blocks * 10s
|
|
7
8
|
export function filterData(dataLike, filterLike, filterMode) {
|
|
8
9
|
if (!filterLike) {
|
|
9
10
|
return true;
|
|
@@ -78,41 +79,68 @@ export function filterCell(searchKeyLike, cellLike) {
|
|
|
78
79
|
}
|
|
79
80
|
return true;
|
|
80
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* A Least Recently Used (LRU) cache implemented using a Map.
|
|
84
|
+
*
|
|
85
|
+
* This class extends the built-in Map to provide an LRU cache with a fixed capacity.
|
|
86
|
+
* When the cache is full, the least recently used entry is automatically evicted.
|
|
87
|
+
*
|
|
88
|
+
* @template K The type of the keys in the cache.
|
|
89
|
+
* @template V The type of the values in the cache.
|
|
90
|
+
*/
|
|
81
91
|
export class MapLru extends Map {
|
|
92
|
+
/**
|
|
93
|
+
* Constructs a new MapLru instance.
|
|
94
|
+
*
|
|
95
|
+
* @param capacity The maximum number of entries the cache can hold. Must be a positive integer.
|
|
96
|
+
* @throws {Error} If the capacity is not a positive integer.
|
|
97
|
+
*/
|
|
82
98
|
constructor(capacity) {
|
|
83
99
|
super();
|
|
84
100
|
this.capacity = capacity;
|
|
85
|
-
|
|
101
|
+
if (!Number.isInteger(capacity) || capacity < 1) {
|
|
102
|
+
throw new Error("Capacity must be a positive integer");
|
|
103
|
+
}
|
|
86
104
|
}
|
|
105
|
+
/**
|
|
106
|
+
* Retrieves a value from the cache.
|
|
107
|
+
*
|
|
108
|
+
* If the key is present in the cache, the value is moved to the most-recently-used position.
|
|
109
|
+
*
|
|
110
|
+
* @param key The key of the value to retrieve.
|
|
111
|
+
* @returns The value associated with the key, or undefined if the key is not present.
|
|
112
|
+
*/
|
|
87
113
|
get(key) {
|
|
88
|
-
|
|
89
|
-
if (
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
const index = this.lru.indexOf(key);
|
|
93
|
-
if (index !== -1) {
|
|
94
|
-
this.lru.splice(index, 1);
|
|
95
|
-
}
|
|
96
|
-
this.lru.push(key);
|
|
97
|
-
if (this.lru.length > this.capacity) {
|
|
98
|
-
this.delete(this.lru[0]);
|
|
99
|
-
this.lru.shift();
|
|
114
|
+
// Check if the key exists. If not, return undefined.
|
|
115
|
+
if (!super.has(key)) {
|
|
116
|
+
return undefined;
|
|
100
117
|
}
|
|
101
|
-
|
|
118
|
+
const value = super.get(key);
|
|
119
|
+
// Move to most-recently-used position
|
|
120
|
+
super.delete(key);
|
|
121
|
+
super.set(key, value);
|
|
122
|
+
return value;
|
|
102
123
|
}
|
|
124
|
+
/**
|
|
125
|
+
* Inserts a new value into the cache, or updates an existing value.
|
|
126
|
+
*
|
|
127
|
+
* If the key is already present in the cache, it is first deleted so that the re-insertion
|
|
128
|
+
* moves it to the most-recently-used position.
|
|
129
|
+
* If the cache is over capacity after the insertion, the least recently used entry is evicted.
|
|
130
|
+
*
|
|
131
|
+
* @param key The key of the value to insert or update.
|
|
132
|
+
* @param value The value to associate with the key.
|
|
133
|
+
* @returns This MapLru instance.
|
|
134
|
+
*/
|
|
103
135
|
set(key, value) {
|
|
104
|
-
|
|
136
|
+
// Delete and re-insert to move key to the end (most-recently-used)
|
|
137
|
+
super.delete(key);
|
|
105
138
|
super.set(key, value);
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
return false;
|
|
111
|
-
}
|
|
112
|
-
const index = this.lru.indexOf(key);
|
|
113
|
-
if (index !== -1) {
|
|
114
|
-
this.lru.splice(index, 1);
|
|
139
|
+
// Evict oldest if over capacity
|
|
140
|
+
if (super.size > this.capacity) {
|
|
141
|
+
const oldestKey = super.keys().next().value;
|
|
142
|
+
super.delete(oldestKey);
|
|
115
143
|
}
|
|
116
|
-
return
|
|
144
|
+
return this;
|
|
117
145
|
}
|
|
118
146
|
}
|
|
@@ -8,6 +8,7 @@ export declare class ClientCacheMemory extends ClientCache {
|
|
|
8
8
|
private readonly maxCells;
|
|
9
9
|
private readonly maxTxs;
|
|
10
10
|
private readonly maxBlocks;
|
|
11
|
+
private readonly confirmedBlockTime;
|
|
11
12
|
/**
|
|
12
13
|
* OutPoint => [isLive, Cell | OutPoint]
|
|
13
14
|
*/
|
|
@@ -24,7 +25,14 @@ export declare class ClientCacheMemory extends ClientCache {
|
|
|
24
25
|
* Block Hash => Block Header / Full Block
|
|
25
26
|
*/
|
|
26
27
|
private readonly knownBlocks;
|
|
27
|
-
|
|
28
|
+
/**
|
|
29
|
+
* @param maxCells - Maximum number of cells to store in the cache. Defaults to 512.
|
|
30
|
+
* @param maxTxs - Maximum number of transactions to store in the cache. Defaults to 256.
|
|
31
|
+
* @param maxBlocks - Maximum number of blocks to store in the cache. Defaults to 128.
|
|
32
|
+
* @param confirmedBlockTime - Time in milliseconds after which a block is considered confirmed.
|
|
33
|
+
* Defaults to DEFAULT_CONFIRMED_BLOCK_TIME (50 blocks * 10s).
|
|
34
|
+
*/
|
|
35
|
+
constructor(maxCells?: number, maxTxs?: number, maxBlocks?: number, confirmedBlockTime?: bigint);
|
|
28
36
|
markUsableNoCache(...cellLikes: (CellLike | CellLike[])[]): Promise<void>;
|
|
29
37
|
markUnusable(...outPointLikes: (OutPointLike | OutPointLike[])[]): Promise<void>;
|
|
30
38
|
clear(): Promise<void>;
|
|
@@ -40,5 +48,6 @@ export declare class ClientCacheMemory extends ClientCache {
|
|
|
40
48
|
recordBlocks(...blocks: (ClientBlockLike | ClientBlockLike[])[]): Promise<void>;
|
|
41
49
|
getBlockByHash(hashLike: HexLike): Promise<ClientBlock | undefined>;
|
|
42
50
|
getBlockByNumber(numberLike: NumLike): Promise<ClientBlock | undefined>;
|
|
51
|
+
hasHeaderConfirmed(header: ClientBlockHeader): boolean;
|
|
43
52
|
}
|
|
44
53
|
//# 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,EAAE,IAAI,EAAE,QAAQ,EAAY,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAW,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAgB,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,yBAAyB,EACzB,6BAA6B,EAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/client/cache/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAY,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAW,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAgB,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,yBAAyB,EACzB,6BAA6B,EAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAQzC,qBAAa,iBAAkB,SAAQ,WAAW;IAgC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAlCrC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6B;IAEnD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA4C;IAE9E;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAsB;IAEvD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAG1B;IAEF;;;;;;OAMG;gBAEgB,QAAQ,SAAM,EACd,MAAM,SAAM,EACZ,SAAS,SAAM,EACf,kBAAkB,SAA+B;IAe9D,iBAAiB,CACrB,GAAG,SAAS,EAAE,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,GACtC,OAAO,CAAC,IAAI,CAAC;IASV,YAAY,CAChB,GAAG,aAAa,EAAE,CAAC,YAAY,GAAG,YAAY,EAAE,CAAC,EAAE,GAClD,OAAO,CAAC,IAAI,CAAC;IAcV,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKrB,SAAS,CACd,OAAO,EAAE,8BAA8B,GACtC,cAAc,CAAC,IAAI,CAAC;IAcjB,UAAU,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAMxD,WAAW,CAAC,GAAG,KAAK,EAAE,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/D,OAAO,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAS9D,0BAA0B,CAC9B,GAAG,YAAY,EAAE,CACb,6BAA6B,GAC7B,6BAA6B,EAAE,CAClC,EAAE,GACF,OAAO,CAAC,IAAI,CAAC;IAMV,sBAAsB,CAC1B,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC;IAK3C,aAAa,CACjB,GAAG,OAAO,EAAE,CAAC,qBAAqB,GAAG,qBAAqB,EAAE,CAAC,EAAE,GAC9D,OAAO,CAAC,IAAI,CAAC;IAaV,eAAe,CACnB,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IAQnC,iBAAiB,CACrB,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IAUnC,YAAY,CAChB,GAAG,MAAM,EAAE,CAAC,eAAe,GAAG,eAAe,EAAE,CAAC,EAAE,GACjD,OAAO,CAAC,IAAI,CAAC;IAQV,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAWnE,gBAAgB,CACpB,UAAU,EAAE,OAAO,GAClB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAUnC,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO;CAGvD"}
|
|
@@ -3,13 +3,21 @@ import { hexFrom } from "../../hex/index.js";
|
|
|
3
3
|
import { numFrom } from "../../num/index.js";
|
|
4
4
|
import { ClientBlock, ClientBlockHeader, ClientTransactionResponse, } from "../clientTypes.js";
|
|
5
5
|
import { ClientCache } from "./cache.js";
|
|
6
|
-
import { filterCell, MapLru } from "./memory.advanced.js";
|
|
6
|
+
import { DEFAULT_CONFIRMED_BLOCK_TIME, filterCell, MapLru, } from "./memory.advanced.js";
|
|
7
7
|
export class ClientCacheMemory extends ClientCache {
|
|
8
|
-
|
|
8
|
+
/**
|
|
9
|
+
* @param maxCells - Maximum number of cells to store in the cache. Defaults to 512.
|
|
10
|
+
* @param maxTxs - Maximum number of transactions to store in the cache. Defaults to 256.
|
|
11
|
+
* @param maxBlocks - Maximum number of blocks to store in the cache. Defaults to 128.
|
|
12
|
+
* @param confirmedBlockTime - Time in milliseconds after which a block is considered confirmed.
|
|
13
|
+
* Defaults to DEFAULT_CONFIRMED_BLOCK_TIME (50 blocks * 10s).
|
|
14
|
+
*/
|
|
15
|
+
constructor(maxCells = 512, maxTxs = 256, maxBlocks = 128, confirmedBlockTime = DEFAULT_CONFIRMED_BLOCK_TIME) {
|
|
9
16
|
super();
|
|
10
17
|
this.maxCells = maxCells;
|
|
11
18
|
this.maxTxs = maxTxs;
|
|
12
19
|
this.maxBlocks = maxBlocks;
|
|
20
|
+
this.confirmedBlockTime = confirmedBlockTime;
|
|
13
21
|
this.cells = new MapLru(this.maxCells);
|
|
14
22
|
this.knownTransactions = new MapLru(this.maxTxs);
|
|
15
23
|
this.knownBlockHashes = new MapLru(this.maxBlocks);
|
|
@@ -134,4 +142,7 @@ export class ClientCacheMemory extends ClientCache {
|
|
|
134
142
|
}
|
|
135
143
|
return this.getBlockByHash(hash);
|
|
136
144
|
}
|
|
145
|
+
hasHeaderConfirmed(header) {
|
|
146
|
+
return numFrom(Date.now()) - header.timestamp >= this.confirmedBlockTime;
|
|
147
|
+
}
|
|
137
148
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,OAAO,EAEP,YAAY,EACZ,UAAU,EAEV,eAAe,EAChB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,GAAG,EAAE,OAAO,EAAW,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,GAAG,EAAE,OAAO,EAA2B,MAAM,iBAAiB,CAAC;AAExE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client/client.js
CHANGED
|
@@ -4,11 +4,8 @@ import { hexFrom } from "../hex/index.js";
|
|
|
4
4
|
import { numFrom, numMax, numMin } from "../num/index.js";
|
|
5
5
|
import { reduceAsync, sleep } from "../utils/index.js";
|
|
6
6
|
import { ClientCacheMemory } from "./cache/memory.js";
|
|
7
|
-
import {
|
|
7
|
+
import { DEFAULT_MAX_FEE_RATE, DEFAULT_MIN_FEE_RATE, } from "./clientTypes.advanced.js";
|
|
8
8
|
import { CellDepInfo, ClientIndexerSearchKey, ErrorClientMaxFeeRateExceeded, ErrorClientWaitTransactionTimeout, } from "./clientTypes.js";
|
|
9
|
-
function hasHeaderConfirmed(header) {
|
|
10
|
-
return numFrom(Date.now()) - header.timestamp >= CONFIRMED_BLOCK_TIME;
|
|
11
|
-
}
|
|
12
9
|
/**
|
|
13
10
|
* @public
|
|
14
11
|
*/
|
|
@@ -30,7 +27,7 @@ export class Client {
|
|
|
30
27
|
return block;
|
|
31
28
|
}
|
|
32
29
|
const res = await this.getBlockByNumberNoCache(blockNumber, verbosity, withCycles);
|
|
33
|
-
if (res && hasHeaderConfirmed(res.header)) {
|
|
30
|
+
if (res && this.cache.hasHeaderConfirmed(res.header)) {
|
|
34
31
|
await this.cache.recordBlocks(res);
|
|
35
32
|
}
|
|
36
33
|
return res;
|
|
@@ -41,7 +38,7 @@ export class Client {
|
|
|
41
38
|
return block;
|
|
42
39
|
}
|
|
43
40
|
const res = await this.getBlockByHashNoCache(blockHash, verbosity, withCycles);
|
|
44
|
-
if (res && hasHeaderConfirmed(res.header)) {
|
|
41
|
+
if (res && this.cache.hasHeaderConfirmed(res.header)) {
|
|
45
42
|
await this.cache.recordBlocks(res);
|
|
46
43
|
}
|
|
47
44
|
return res;
|
|
@@ -52,7 +49,7 @@ export class Client {
|
|
|
52
49
|
return header;
|
|
53
50
|
}
|
|
54
51
|
const res = await this.getHeaderByNumberNoCache(blockNumber, verbosity);
|
|
55
|
-
if (res && hasHeaderConfirmed(res)) {
|
|
52
|
+
if (res && this.cache.hasHeaderConfirmed(res)) {
|
|
56
53
|
await this.cache.recordHeaders(res);
|
|
57
54
|
}
|
|
58
55
|
return res;
|
|
@@ -63,7 +60,7 @@ export class Client {
|
|
|
63
60
|
return header;
|
|
64
61
|
}
|
|
65
62
|
const res = await this.getHeaderByHashNoCache(blockHash, verbosity);
|
|
66
|
-
if (res && hasHeaderConfirmed(res)) {
|
|
63
|
+
if (res && this.cache.hasHeaderConfirmed(res)) {
|
|
67
64
|
await this.cache.recordHeaders(res);
|
|
68
65
|
}
|
|
69
66
|
return res;
|
|
@@ -270,7 +267,7 @@ export class Client {
|
|
|
270
267
|
const tx = await this.cache.getTransactionResponse(txHash);
|
|
271
268
|
if (tx?.blockHash) {
|
|
272
269
|
const header = await this.getHeaderByHash(tx.blockHash);
|
|
273
|
-
if (header && hasHeaderConfirmed(header)) {
|
|
270
|
+
if (header && this.cache.hasHeaderConfirmed(header)) {
|
|
274
271
|
return {
|
|
275
272
|
transaction: tx,
|
|
276
273
|
header,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientPublicMainnet.advanced.d.ts","sourceRoot":"","sources":["../../src/client/clientPublicMainnet.advanced.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,WAAW,EAAE,cAAc,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"clientPublicMainnet.advanced.d.ts","sourceRoot":"","sources":["../../src/client/clientPublicMainnet.advanced.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,WAAW,EAAE,cAAc,GAAG,SAAS,CAscxE,CAAC"}
|
|
@@ -338,4 +338,64 @@ export const MAINNET_SCRIPTS = Object.freeze({
|
|
|
338
338
|
},
|
|
339
339
|
],
|
|
340
340
|
},
|
|
341
|
+
[KnownScript.RgbppLock]: {
|
|
342
|
+
codeHash: "0xbc6c568a1a0d0a09f6844dc9d74ddb4343c32143ff25f727c59edf4fb72d6936",
|
|
343
|
+
hashType: "type",
|
|
344
|
+
cellDeps: [
|
|
345
|
+
{
|
|
346
|
+
cellDep: {
|
|
347
|
+
outPoint: {
|
|
348
|
+
txHash: "0x04c5c3e69f1aa6ee27fb9de3d15a81704e387ab3b453965adbe0b6ca343c6f41",
|
|
349
|
+
index: 0,
|
|
350
|
+
},
|
|
351
|
+
depType: "code",
|
|
352
|
+
},
|
|
353
|
+
type: {
|
|
354
|
+
codeHash: "0x00000000000000000000000000000000000000000000000000545950455f4944",
|
|
355
|
+
hashType: "type",
|
|
356
|
+
args: "0x68ad3d9e0bb9ea841a5d1fcd600137bd3f45401e759e353121f26cd0d981452f",
|
|
357
|
+
},
|
|
358
|
+
},
|
|
359
|
+
// Rgbpp lock config cell dep
|
|
360
|
+
{
|
|
361
|
+
cellDep: {
|
|
362
|
+
outPoint: {
|
|
363
|
+
txHash: "0x04c5c3e69f1aa6ee27fb9de3d15a81704e387ab3b453965adbe0b6ca343c6f41",
|
|
364
|
+
index: 1,
|
|
365
|
+
},
|
|
366
|
+
depType: "code",
|
|
367
|
+
},
|
|
368
|
+
},
|
|
369
|
+
],
|
|
370
|
+
},
|
|
371
|
+
[KnownScript.BtcTimeLock]: {
|
|
372
|
+
codeHash: "0x70d64497a075bd651e98ac030455ea200637ee325a12ad08aff03f1a117e5a62",
|
|
373
|
+
hashType: "type",
|
|
374
|
+
cellDeps: [
|
|
375
|
+
{
|
|
376
|
+
cellDep: {
|
|
377
|
+
outPoint: {
|
|
378
|
+
txHash: "0x6257bf4297ee75fcebe2654d8c5f8d93bc9fc1b3dc62b8cef54ffe166162e996",
|
|
379
|
+
index: 0,
|
|
380
|
+
},
|
|
381
|
+
depType: "code",
|
|
382
|
+
},
|
|
383
|
+
type: {
|
|
384
|
+
codeHash: "0x00000000000000000000000000000000000000000000000000545950455f4944",
|
|
385
|
+
hashType: "type",
|
|
386
|
+
args: "0x44b8253ae18e913a2845b0d548eaf6b3ba1099ed26835888932a754194028a8a",
|
|
387
|
+
},
|
|
388
|
+
},
|
|
389
|
+
// btc time lock config cell dep
|
|
390
|
+
{
|
|
391
|
+
cellDep: {
|
|
392
|
+
outPoint: {
|
|
393
|
+
txHash: "0x6257bf4297ee75fcebe2654d8c5f8d93bc9fc1b3dc62b8cef54ffe166162e996",
|
|
394
|
+
index: 1,
|
|
395
|
+
},
|
|
396
|
+
depType: "code",
|
|
397
|
+
},
|
|
398
|
+
},
|
|
399
|
+
],
|
|
400
|
+
},
|
|
341
401
|
});
|
|
@@ -1,4 +1,27 @@
|
|
|
1
1
|
import { ScriptInfoLike } from "./clientTypes.js";
|
|
2
2
|
import { KnownScript } from "./knownScript.js";
|
|
3
3
|
export declare const TESTNET_SCRIPTS: Record<KnownScript, ScriptInfoLike>;
|
|
4
|
+
/**
|
|
5
|
+
* Bitcoin Signet specific script overrides for testnet
|
|
6
|
+
*
|
|
7
|
+
* Contains script configurations that differ when using Bitcoin Signet
|
|
8
|
+
* instead of Bitcoin Testnet3. Only RgbppLock and BtcTimeLock are affected.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import { ClientPublicTestnet } from "@ckb-ccc/core";
|
|
13
|
+
* import { TESTNET_SCRIPTS, TESTNET_SCRIPTS_BTC_SIGNET_OVERRIDES } from "@ckb-ccc/core/advanced";
|
|
14
|
+
*
|
|
15
|
+
* // Use Bitcoin Testnet3 scripts (default)
|
|
16
|
+
* const testnet3Client = new ClientPublicTestnet();
|
|
17
|
+
*
|
|
18
|
+
* // Use Bitcoin Signet scripts by merging overrides
|
|
19
|
+
* const signetClient = new ClientPublicTestnet({
|
|
20
|
+
* scripts: {
|
|
21
|
+
* ...TESTNET_SCRIPTS,
|
|
22
|
+
* ...TESTNET_SCRIPTS_BTC_SIGNET_OVERRIDES
|
|
23
|
+
* }
|
|
24
|
+
* });
|
|
25
|
+
*/
|
|
26
|
+
export declare const TESTNET_SCRIPTS_BTC_SIGNET_OVERRIDES: Partial<Record<KnownScript, ScriptInfoLike>>;
|
|
4
27
|
//# sourceMappingURL=clientPublicTestnet.advanced.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientPublicTestnet.advanced.d.ts","sourceRoot":"","sources":["../../src/client/clientPublicTestnet.advanced.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,WAAW,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"clientPublicTestnet.advanced.d.ts","sourceRoot":"","sources":["../../src/client/clientPublicTestnet.advanced.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,WAAW,EAAE,cAAc,CAkd5D,CAAC;AAEL;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,oCAAoC,EAAE,OAAO,CACxD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,CAsEnC,CAAC"}
|