@ckb-ccc/core 1.5.0 → 1.6.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/transaction.d.ts +57 -4
- package/dist/ckb/transaction.d.ts.map +1 -1
- package/dist/ckb/transaction.js +83 -26
- package/dist/client/cache/cache.d.ts +67 -11
- package/dist/client/cache/cache.d.ts.map +1 -1
- package/dist/client/cache/cache.js +94 -9
- package/dist/client/cache/memory.advanced.d.ts +2 -2
- package/dist/client/cache/memory.advanced.d.ts.map +1 -1
- package/dist/client/cache/memory.advanced.js +19 -7
- package/dist/client/cache/memory.d.ts +24 -7
- package/dist/client/cache/memory.d.ts.map +1 -1
- package/dist/client/cache/memory.js +76 -18
- package/dist/client/client.d.ts +27 -6
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +113 -22
- package/dist/client/clientPublicMainnet.d.ts.map +1 -1
- package/dist/client/clientPublicMainnet.js +1 -6
- package/dist/client/clientTypes.advanced.d.ts +3 -0
- package/dist/client/clientTypes.advanced.d.ts.map +1 -1
- package/dist/client/clientTypes.advanced.js +3 -0
- package/dist/client/clientTypes.d.ts +110 -13
- package/dist/client/clientTypes.d.ts.map +1 -1
- package/dist/client/clientTypes.js +118 -4
- package/dist/client/jsonRpc/client.d.ts +4 -4
- package/dist/client/jsonRpc/client.d.ts.map +1 -1
- package/dist/client/jsonRpc/client.js +4 -4
- package/dist/client/jsonRpc/transformers.js +3 -3
- package/dist/jsonRpc/transports/webSocket.d.ts.map +1 -1
- package/dist/jsonRpc/transports/webSocket.js +7 -3
- package/dist/molecule/predefined.d.ts +10 -10
- package/dist/molecule/predefined.d.ts.map +1 -1
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +13 -1
- package/dist.commonjs/advanced.js +17 -7
- package/dist.commonjs/ckb/transaction.d.ts +57 -4
- package/dist.commonjs/ckb/transaction.d.ts.map +1 -1
- package/dist.commonjs/ckb/transaction.js +83 -26
- package/dist.commonjs/client/cache/cache.d.ts +67 -11
- package/dist.commonjs/client/cache/cache.d.ts.map +1 -1
- package/dist.commonjs/client/cache/cache.js +94 -9
- package/dist.commonjs/client/cache/memory.advanced.d.ts +2 -2
- package/dist.commonjs/client/cache/memory.advanced.d.ts.map +1 -1
- package/dist.commonjs/client/cache/memory.advanced.js +19 -7
- package/dist.commonjs/client/cache/memory.d.ts +24 -7
- package/dist.commonjs/client/cache/memory.d.ts.map +1 -1
- package/dist.commonjs/client/cache/memory.js +75 -17
- package/dist.commonjs/client/client.d.ts +27 -6
- package/dist.commonjs/client/client.d.ts.map +1 -1
- package/dist.commonjs/client/client.js +111 -20
- package/dist.commonjs/client/clientPublicMainnet.d.ts.map +1 -1
- package/dist.commonjs/client/clientPublicMainnet.js +1 -6
- package/dist.commonjs/client/clientTypes.advanced.d.ts +3 -0
- package/dist.commonjs/client/clientTypes.advanced.d.ts.map +1 -1
- package/dist.commonjs/client/clientTypes.advanced.js +4 -0
- package/dist.commonjs/client/clientTypes.d.ts +110 -13
- package/dist.commonjs/client/clientTypes.d.ts.map +1 -1
- package/dist.commonjs/client/clientTypes.js +123 -4
- package/dist.commonjs/client/jsonRpc/client.d.ts +4 -4
- package/dist.commonjs/client/jsonRpc/client.d.ts.map +1 -1
- package/dist.commonjs/client/jsonRpc/client.js +4 -4
- package/dist.commonjs/client/jsonRpc/transformers.js +2 -2
- package/dist.commonjs/index.js +17 -7
- package/dist.commonjs/jsonRpc/transports/webSocket.d.ts.map +1 -1
- package/dist.commonjs/jsonRpc/transports/webSocket.js +7 -3
- package/dist.commonjs/molecule/index.js +17 -7
- package/dist.commonjs/utils/index.d.ts +4 -0
- package/dist.commonjs/utils/index.d.ts.map +1 -1
- package/dist.commonjs/utils/index.js +13 -0
- package/package.json +1 -1
- package/src/ckb/transaction.ts +112 -41
- package/src/client/cache/cache.ts +126 -13
- package/src/client/cache/memory.advanced.ts +24 -7
- package/src/client/cache/memory.ts +130 -30
- package/src/client/client.ts +170 -27
- package/src/client/clientPublicMainnet.ts +1 -6
- package/src/client/clientTypes.advanced.ts +4 -0
- package/src/client/clientTypes.ts +224 -33
- package/src/client/jsonRpc/client.ts +11 -9
- package/src/client/jsonRpc/transformers.ts +2 -2
- package/src/jsonRpc/transports/webSocket.ts +17 -13
- package/src/utils/index.ts +14 -1
|
@@ -92,7 +92,11 @@ class MapLru extends Map {
|
|
|
92
92
|
this.capacity = capacity;
|
|
93
93
|
this.lru = [];
|
|
94
94
|
}
|
|
95
|
-
|
|
95
|
+
get(key) {
|
|
96
|
+
const val = super.get(key);
|
|
97
|
+
if (val === undefined) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
96
100
|
const index = this.lru.indexOf(key);
|
|
97
101
|
if (index !== -1) {
|
|
98
102
|
this.lru.splice(index, 1);
|
|
@@ -102,14 +106,22 @@ class MapLru extends Map {
|
|
|
102
106
|
this.delete(this.lru[0]);
|
|
103
107
|
this.lru.shift();
|
|
104
108
|
}
|
|
105
|
-
|
|
106
|
-
get(key) {
|
|
107
|
-
this.access(key);
|
|
108
|
-
return super.get(key);
|
|
109
|
+
return val;
|
|
109
110
|
}
|
|
110
111
|
set(key, value) {
|
|
111
|
-
this.
|
|
112
|
-
|
|
112
|
+
this.get(key);
|
|
113
|
+
super.set(key, value);
|
|
114
|
+
return this;
|
|
115
|
+
}
|
|
116
|
+
delete(key) {
|
|
117
|
+
if (!super.delete(key)) {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
const index = this.lru.indexOf(key);
|
|
121
|
+
if (index !== -1) {
|
|
122
|
+
this.lru.splice(index, 1);
|
|
123
|
+
}
|
|
124
|
+
return true;
|
|
113
125
|
}
|
|
114
126
|
}
|
|
115
127
|
exports.MapLru = MapLru;
|
|
@@ -1,27 +1,44 @@
|
|
|
1
|
-
import { Cell, CellLike, OutPointLike
|
|
1
|
+
import { Cell, CellLike, OutPointLike } from "../../ckb/index.js";
|
|
2
2
|
import { HexLike } from "../../hex/index.js";
|
|
3
|
+
import { NumLike } from "../../num/index.js";
|
|
3
4
|
import { ClientCollectableSearchKeyLike } from "../clientTypes.advanced.js";
|
|
5
|
+
import { ClientBlock, ClientBlockHeader, ClientBlockHeaderLike, ClientBlockLike, ClientTransactionResponse, ClientTransactionResponseLike } from "../clientTypes.js";
|
|
4
6
|
import { ClientCache } from "./cache.js";
|
|
5
7
|
export declare class ClientCacheMemory extends ClientCache {
|
|
6
8
|
private readonly maxCells;
|
|
7
9
|
private readonly maxTxs;
|
|
10
|
+
private readonly maxBlocks;
|
|
8
11
|
/**
|
|
9
12
|
* OutPoint => [isLive, Cell | OutPoint]
|
|
10
13
|
*/
|
|
11
14
|
private readonly cells;
|
|
12
15
|
/**
|
|
13
|
-
* TX Hash => Transaction
|
|
16
|
+
* TX Hash => Transaction Response
|
|
14
17
|
*/
|
|
15
18
|
private readonly knownTransactions;
|
|
16
|
-
|
|
17
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Block Number => Block Hash
|
|
21
|
+
*/
|
|
22
|
+
private readonly knownBlockHashes;
|
|
23
|
+
/**
|
|
24
|
+
* Block Hash => Block Header / Full Block
|
|
25
|
+
*/
|
|
26
|
+
private readonly knownBlocks;
|
|
27
|
+
constructor(maxCells?: number, maxTxs?: number, maxBlocks?: number);
|
|
28
|
+
markUsableNoCache(...cellLikes: (CellLike | CellLike[])[]): Promise<void>;
|
|
18
29
|
markUnusable(...outPointLikes: (OutPointLike | OutPointLike[])[]): Promise<void>;
|
|
19
30
|
clear(): Promise<void>;
|
|
20
31
|
findCells(keyLike: ClientCollectableSearchKeyLike): AsyncGenerator<Cell>;
|
|
21
|
-
getCell(outPointLike: OutPointLike): Promise<Cell | undefined>;
|
|
22
32
|
isUnusable(outPointLike: OutPointLike): Promise<boolean>;
|
|
23
|
-
recordTransactions(...transactions: (TransactionLike | TransactionLike[])[]): Promise<void>;
|
|
24
|
-
getTransaction(txHashLike: HexLike): Promise<Transaction | undefined>;
|
|
25
33
|
recordCells(...cells: (CellLike | CellLike[])[]): Promise<void>;
|
|
34
|
+
getCell(outPointLike: OutPointLike): Promise<Cell | undefined>;
|
|
35
|
+
recordTransactionResponses(...transactions: (ClientTransactionResponseLike | ClientTransactionResponseLike[])[]): Promise<void>;
|
|
36
|
+
getTransactionResponse(txHashLike: HexLike): Promise<ClientTransactionResponse | undefined>;
|
|
37
|
+
recordHeaders(...headers: (ClientBlockHeaderLike | ClientBlockHeaderLike[])[]): Promise<void>;
|
|
38
|
+
getHeaderByHash(hashLike: HexLike): Promise<ClientBlockHeader | undefined>;
|
|
39
|
+
getHeaderByNumber(numberLike: NumLike): Promise<ClientBlockHeader | undefined>;
|
|
40
|
+
recordBlocks(...blocks: (ClientBlockLike | ClientBlockLike[])[]): Promise<void>;
|
|
41
|
+
getBlockByHash(hashLike: HexLike): Promise<ClientBlock | undefined>;
|
|
42
|
+
getBlockByNumber(numberLike: NumLike): Promise<ClientBlock | undefined>;
|
|
26
43
|
}
|
|
27
44
|
//# 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,
|
|
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;AAGzC,qBAAa,iBAAkB,SAAQ,WAAW;IAyB9C,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IA1B5B;;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;gBAGiB,QAAQ,SAAM,EACd,MAAM,SAAM,EACZ,SAAS,SAAM;IAe5B,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;CASpC"}
|
|
@@ -3,17 +3,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ClientCacheMemory = void 0;
|
|
4
4
|
const index_js_1 = require("../../ckb/index.js");
|
|
5
5
|
const index_js_2 = require("../../hex/index.js");
|
|
6
|
+
const index_js_3 = require("../../num/index.js");
|
|
7
|
+
const clientTypes_js_1 = require("../clientTypes.js");
|
|
6
8
|
const cache_js_1 = require("./cache.js");
|
|
7
9
|
const memory_advanced_js_1 = require("./memory.advanced.js");
|
|
8
10
|
class ClientCacheMemory extends cache_js_1.ClientCache {
|
|
9
|
-
constructor(maxCells = 512, maxTxs = 256) {
|
|
11
|
+
constructor(maxCells = 512, maxTxs = 256, maxBlocks = 128) {
|
|
10
12
|
super();
|
|
11
13
|
this.maxCells = maxCells;
|
|
12
14
|
this.maxTxs = maxTxs;
|
|
15
|
+
this.maxBlocks = maxBlocks;
|
|
13
16
|
this.cells = new memory_advanced_js_1.MapLru(this.maxCells);
|
|
14
17
|
this.knownTransactions = new memory_advanced_js_1.MapLru(this.maxTxs);
|
|
18
|
+
this.knownBlockHashes = new memory_advanced_js_1.MapLru(this.maxBlocks);
|
|
19
|
+
this.knownBlocks = new memory_advanced_js_1.MapLru(this.maxBlocks);
|
|
15
20
|
}
|
|
16
|
-
async
|
|
21
|
+
async markUsableNoCache(...cellLikes) {
|
|
17
22
|
cellLikes.flat().forEach((cellLike) => {
|
|
18
23
|
const cell = index_js_1.Cell.from(cellLike).clone();
|
|
19
24
|
const outPointStr = (0, index_js_2.hexFrom)(cell.outPoint.toBytes());
|
|
@@ -44,10 +49,24 @@ class ClientCacheMemory extends cache_js_1.ClientCache {
|
|
|
44
49
|
if (!(0, memory_advanced_js_1.filterCell)(keyLike, cell)) {
|
|
45
50
|
continue;
|
|
46
51
|
}
|
|
47
|
-
this.cells.
|
|
52
|
+
this.cells.get(key);
|
|
48
53
|
yield cell.clone();
|
|
49
54
|
}
|
|
50
55
|
}
|
|
56
|
+
async isUnusable(outPointLike) {
|
|
57
|
+
const outPoint = index_js_1.OutPoint.from(outPointLike);
|
|
58
|
+
return !(this.cells.get((0, index_js_2.hexFrom)(outPoint.toBytes()))?.[0] ?? true);
|
|
59
|
+
}
|
|
60
|
+
async recordCells(...cells) {
|
|
61
|
+
cells.flat().map((cellLike) => {
|
|
62
|
+
const cell = index_js_1.Cell.from(cellLike);
|
|
63
|
+
const outPointStr = (0, index_js_2.hexFrom)(cell.outPoint.toBytes());
|
|
64
|
+
if (this.cells.get(outPointStr)) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
this.cells.set(outPointStr, [undefined, cell]);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
51
70
|
async getCell(outPointLike) {
|
|
52
71
|
const outPoint = index_js_1.OutPoint.from(outPointLike);
|
|
53
72
|
const cell = this.cells.get((0, index_js_2.hexFrom)(outPoint.toBytes()))?.[1];
|
|
@@ -55,29 +74,68 @@ class ClientCacheMemory extends cache_js_1.ClientCache {
|
|
|
55
74
|
return index_js_1.Cell.from(cell.clone());
|
|
56
75
|
}
|
|
57
76
|
}
|
|
58
|
-
async
|
|
59
|
-
const outPoint = index_js_1.OutPoint.from(outPointLike);
|
|
60
|
-
return !(this.cells.get((0, index_js_2.hexFrom)(outPoint.toBytes()))?.[0] ?? true);
|
|
61
|
-
}
|
|
62
|
-
async recordTransactions(...transactions) {
|
|
77
|
+
async recordTransactionResponses(...transactions) {
|
|
63
78
|
transactions.flat().map((txLike) => {
|
|
64
|
-
const tx =
|
|
65
|
-
this.knownTransactions.set(tx.hash(), tx);
|
|
79
|
+
const tx = clientTypes_js_1.ClientTransactionResponse.from(txLike);
|
|
80
|
+
this.knownTransactions.set(tx.transaction.hash(), tx);
|
|
66
81
|
});
|
|
67
82
|
}
|
|
68
|
-
async
|
|
83
|
+
async getTransactionResponse(txHashLike) {
|
|
69
84
|
const txHash = (0, index_js_2.hexFrom)(txHashLike);
|
|
70
85
|
return this.knownTransactions.get(txHash)?.clone();
|
|
71
86
|
}
|
|
72
|
-
async
|
|
73
|
-
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
|
|
87
|
+
async recordHeaders(...headers) {
|
|
88
|
+
headers.flat().map((headerLike) => {
|
|
89
|
+
const header = clientTypes_js_1.ClientBlockHeader.from(headerLike);
|
|
90
|
+
this.knownBlockHashes.set(header.number, header.hash);
|
|
91
|
+
const existed = this.knownBlocks.get(header.hash);
|
|
92
|
+
if (existed) {
|
|
77
93
|
return;
|
|
78
94
|
}
|
|
79
|
-
this.
|
|
95
|
+
this.knownBlocks.set(header.hash, { header });
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
async getHeaderByHash(hashLike) {
|
|
99
|
+
const hash = (0, index_js_2.hexFrom)(hashLike);
|
|
100
|
+
const block = this.knownBlocks.get(hash);
|
|
101
|
+
if (block) {
|
|
102
|
+
this.knownBlockHashes.get(block.header.number); // For LRU
|
|
103
|
+
}
|
|
104
|
+
return block?.header;
|
|
105
|
+
}
|
|
106
|
+
async getHeaderByNumber(numberLike) {
|
|
107
|
+
const number = (0, index_js_3.numFrom)(numberLike);
|
|
108
|
+
const hash = this.knownBlockHashes.get(number);
|
|
109
|
+
if (!hash) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
return this.getHeaderByHash(hash);
|
|
113
|
+
}
|
|
114
|
+
async recordBlocks(...blocks) {
|
|
115
|
+
blocks.flat().map((blockLike) => {
|
|
116
|
+
const block = clientTypes_js_1.ClientBlock.from(blockLike);
|
|
117
|
+
this.knownBlockHashes.set(block.header.number, block.header.hash);
|
|
118
|
+
this.knownBlocks.set(block.header.hash, block);
|
|
80
119
|
});
|
|
81
120
|
}
|
|
121
|
+
async getBlockByHash(hashLike) {
|
|
122
|
+
const hash = (0, index_js_2.hexFrom)(hashLike);
|
|
123
|
+
const block = this.knownBlocks.get(hash);
|
|
124
|
+
if (block) {
|
|
125
|
+
this.knownBlockHashes.get(block.header.number); // For LRU
|
|
126
|
+
if ("transactions" in block) {
|
|
127
|
+
return block;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
async getBlockByNumber(numberLike) {
|
|
133
|
+
const number = (0, index_js_3.numFrom)(numberLike);
|
|
134
|
+
const hash = this.knownBlockHashes.get(number);
|
|
135
|
+
if (!hash) {
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
return this.getBlockByHash(hash);
|
|
139
|
+
}
|
|
82
140
|
}
|
|
83
141
|
exports.ClientCacheMemory = ClientCacheMemory;
|
|
@@ -19,18 +19,28 @@ export declare abstract class Client {
|
|
|
19
19
|
mean: Num;
|
|
20
20
|
median: Num;
|
|
21
21
|
}>;
|
|
22
|
-
getFeeRate(blockRange?: NumLike
|
|
22
|
+
getFeeRate(blockRange?: NumLike, options?: {
|
|
23
|
+
maxFeeRate?: NumLike;
|
|
24
|
+
}): Promise<Num>;
|
|
23
25
|
abstract getTip(): Promise<Num>;
|
|
24
26
|
abstract getTipHeader(verbosity?: number | null): Promise<ClientBlockHeader>;
|
|
25
|
-
abstract
|
|
26
|
-
abstract
|
|
27
|
-
abstract
|
|
28
|
-
abstract
|
|
27
|
+
abstract getBlockByNumberNoCache(blockNumber: NumLike, verbosity?: number | null, withCycles?: boolean | null): Promise<ClientBlock | undefined>;
|
|
28
|
+
abstract getBlockByHashNoCache(blockHash: HexLike, verbosity?: number | null, withCycles?: boolean | null): Promise<ClientBlock | undefined>;
|
|
29
|
+
abstract getHeaderByNumberNoCache(blockNumber: NumLike, verbosity?: number | null): Promise<ClientBlockHeader | undefined>;
|
|
30
|
+
abstract getHeaderByHashNoCache(blockHash: HexLike, verbosity?: number | null): Promise<ClientBlockHeader | undefined>;
|
|
31
|
+
getBlockByNumber(blockNumber: NumLike, verbosity?: number | null, withCycles?: boolean | null): Promise<ClientBlock | undefined>;
|
|
32
|
+
getBlockByHash(blockHash: HexLike, verbosity?: number | null, withCycles?: boolean | null): Promise<ClientBlock | undefined>;
|
|
33
|
+
getHeaderByNumber(blockNumber: NumLike, verbosity?: number | null): Promise<ClientBlockHeader | undefined>;
|
|
34
|
+
getHeaderByHash(blockHash: HexLike, verbosity?: number | null): Promise<ClientBlockHeader | undefined>;
|
|
29
35
|
abstract estimateCycles(transaction: TransactionLike): Promise<Num>;
|
|
30
36
|
abstract sendTransactionDry(transaction: TransactionLike, validator?: OutputsValidator): Promise<Num>;
|
|
31
37
|
abstract sendTransactionNoCache(transaction: TransactionLike, validator?: OutputsValidator): Promise<Hex>;
|
|
32
38
|
abstract getTransactionNoCache(txHash: HexLike): Promise<ClientTransactionResponse | undefined>;
|
|
33
39
|
getCell(outPointLike: OutPointLike): Promise<Cell | undefined>;
|
|
40
|
+
getCellWithHeader(outPointLike: OutPointLike): Promise<{
|
|
41
|
+
cell: Cell;
|
|
42
|
+
header?: ClientBlockHeader;
|
|
43
|
+
} | undefined>;
|
|
34
44
|
abstract getCellLiveNoCache(outPointLike: OutPointLike, withData?: boolean | null, includeTxPool?: boolean | null): Promise<Cell | undefined>;
|
|
35
45
|
getCellLive(outPointLike: OutPointLike, withData?: boolean | null, includeTxPool?: boolean | null): Promise<Cell | undefined>;
|
|
36
46
|
abstract findCellsPagedNoCache(key: ClientIndexerSearchKeyLike, order?: "asc" | "desc", limit?: NumLike, after?: string): Promise<ClientFindCellsResponse>;
|
|
@@ -70,8 +80,19 @@ export declare abstract class Client {
|
|
|
70
80
|
abstract getCellsCapacity(key: ClientIndexerSearchKeyLike): Promise<Num>;
|
|
71
81
|
getBalanceSingle(lock: ScriptLike): Promise<Num>;
|
|
72
82
|
getBalance(locks: ScriptLike[]): Promise<Num>;
|
|
73
|
-
sendTransaction(transaction: TransactionLike, validator?: OutputsValidator
|
|
83
|
+
sendTransaction(transaction: TransactionLike, validator?: OutputsValidator, options?: {
|
|
84
|
+
maxFeeRate?: NumLike;
|
|
85
|
+
}): Promise<Hex>;
|
|
74
86
|
getTransaction(txHashLike: HexLike): Promise<ClientTransactionResponse | undefined>;
|
|
87
|
+
/**
|
|
88
|
+
* This method gets specified transaction with its block header (if existed).
|
|
89
|
+
* This is mainly for caching because we need the header to test if we can safely trust the cached tx status.
|
|
90
|
+
* @param txHashLike
|
|
91
|
+
*/
|
|
92
|
+
getTransactionWithHeader(txHashLike: HexLike): Promise<{
|
|
93
|
+
transaction: ClientTransactionResponse;
|
|
94
|
+
header?: ClientBlockHeader;
|
|
95
|
+
} | undefined>;
|
|
75
96
|
waitTransaction(txHash: HexLike, confirmations?: number, timeout?: number, interval?: number): Promise<ClientTransactionResponse | undefined>;
|
|
76
97
|
}
|
|
77
98
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,11 @@ const index_js_3 = require("../hex/index.js");
|
|
|
7
7
|
const index_js_4 = require("../num/index.js");
|
|
8
8
|
const index_js_5 = require("../utils/index.js");
|
|
9
9
|
const memory_js_1 = require("./cache/memory.js");
|
|
10
|
+
const clientTypes_advanced_js_1 = require("./clientTypes.advanced.js");
|
|
10
11
|
const clientTypes_js_1 = require("./clientTypes.js");
|
|
12
|
+
function hasHeaderConfirmed(header) {
|
|
13
|
+
return (0, index_js_4.numFrom)(Date.now()) - header.timestamp >= clientTypes_advanced_js_1.CONFIRMED_BLOCK_TIME;
|
|
14
|
+
}
|
|
11
15
|
/**
|
|
12
16
|
* @public
|
|
13
17
|
*/
|
|
@@ -15,8 +19,57 @@ class Client {
|
|
|
15
19
|
constructor(config) {
|
|
16
20
|
this.cache = config?.cache ?? new memory_js_1.ClientCacheMemory();
|
|
17
21
|
}
|
|
18
|
-
async getFeeRate(blockRange) {
|
|
19
|
-
|
|
22
|
+
async getFeeRate(blockRange, options) {
|
|
23
|
+
const feeRate = (0, index_js_4.numMax)((await this.getFeeRateStatistics(blockRange)).median, clientTypes_advanced_js_1.DEFAULT_MIN_FEE_RATE);
|
|
24
|
+
const maxFeeRate = (0, index_js_4.numFrom)(options?.maxFeeRate ?? clientTypes_advanced_js_1.DEFAULT_MAX_FEE_RATE);
|
|
25
|
+
if (maxFeeRate === index_js_2.Zero) {
|
|
26
|
+
return feeRate;
|
|
27
|
+
}
|
|
28
|
+
return (0, index_js_4.numMin)(feeRate, maxFeeRate);
|
|
29
|
+
}
|
|
30
|
+
async getBlockByNumber(blockNumber, verbosity, withCycles) {
|
|
31
|
+
const block = await this.cache.getBlockByNumber(blockNumber);
|
|
32
|
+
if (block) {
|
|
33
|
+
return block;
|
|
34
|
+
}
|
|
35
|
+
const res = await this.getBlockByNumberNoCache(blockNumber, verbosity, withCycles);
|
|
36
|
+
if (res && hasHeaderConfirmed(res.header)) {
|
|
37
|
+
await this.cache.recordBlocks(res);
|
|
38
|
+
}
|
|
39
|
+
return res;
|
|
40
|
+
}
|
|
41
|
+
async getBlockByHash(blockHash, verbosity, withCycles) {
|
|
42
|
+
const block = await this.cache.getBlockByHash(blockHash);
|
|
43
|
+
if (block) {
|
|
44
|
+
return block;
|
|
45
|
+
}
|
|
46
|
+
const res = await this.getBlockByHashNoCache(blockHash, verbosity, withCycles);
|
|
47
|
+
if (res && hasHeaderConfirmed(res.header)) {
|
|
48
|
+
await this.cache.recordBlocks(res);
|
|
49
|
+
}
|
|
50
|
+
return res;
|
|
51
|
+
}
|
|
52
|
+
async getHeaderByNumber(blockNumber, verbosity) {
|
|
53
|
+
const header = await this.cache.getHeaderByNumber(blockNumber);
|
|
54
|
+
if (header) {
|
|
55
|
+
return header;
|
|
56
|
+
}
|
|
57
|
+
const res = await this.getHeaderByNumberNoCache(blockNumber, verbosity);
|
|
58
|
+
if (res && hasHeaderConfirmed(res)) {
|
|
59
|
+
await this.cache.recordHeaders(res);
|
|
60
|
+
}
|
|
61
|
+
return res;
|
|
62
|
+
}
|
|
63
|
+
async getHeaderByHash(blockHash, verbosity) {
|
|
64
|
+
const header = await this.cache.getHeaderByHash(blockHash);
|
|
65
|
+
if (header) {
|
|
66
|
+
return header;
|
|
67
|
+
}
|
|
68
|
+
const res = await this.getHeaderByHashNoCache(blockHash, verbosity);
|
|
69
|
+
if (res && hasHeaderConfirmed(res)) {
|
|
70
|
+
await this.cache.recordHeaders(res);
|
|
71
|
+
}
|
|
72
|
+
return res;
|
|
20
73
|
}
|
|
21
74
|
async getCell(outPointLike) {
|
|
22
75
|
const outPoint = index_js_1.OutPoint.from(outPointLike);
|
|
@@ -24,22 +77,39 @@ class Client {
|
|
|
24
77
|
if (cached) {
|
|
25
78
|
return cached;
|
|
26
79
|
}
|
|
27
|
-
const transaction = await this.
|
|
80
|
+
const transaction = await this.getTransaction(outPoint.txHash);
|
|
28
81
|
if (!transaction) {
|
|
29
82
|
return;
|
|
30
83
|
}
|
|
31
|
-
const
|
|
32
|
-
if (
|
|
84
|
+
const output = transaction.transaction.getOutput(outPoint.index);
|
|
85
|
+
if (!output) {
|
|
33
86
|
return;
|
|
34
87
|
}
|
|
35
88
|
const cell = index_js_1.Cell.from({
|
|
36
89
|
outPoint,
|
|
37
|
-
|
|
38
|
-
outputData: transaction.transaction.outputsData[index] ?? "0x",
|
|
90
|
+
...output,
|
|
39
91
|
});
|
|
40
92
|
await this.cache.recordCells(cell);
|
|
41
93
|
return cell;
|
|
42
94
|
}
|
|
95
|
+
async getCellWithHeader(outPointLike) {
|
|
96
|
+
const outPoint = index_js_1.OutPoint.from(outPointLike);
|
|
97
|
+
const res = await this.getTransactionWithHeader(outPoint.txHash);
|
|
98
|
+
if (!res) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const { transaction, header } = res;
|
|
102
|
+
const output = transaction.transaction.getOutput(outPoint.index);
|
|
103
|
+
if (!output) {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
const cell = index_js_1.Cell.from({
|
|
107
|
+
outPoint,
|
|
108
|
+
...output,
|
|
109
|
+
});
|
|
110
|
+
await this.cache.recordCells(cell);
|
|
111
|
+
return { cell, header };
|
|
112
|
+
}
|
|
43
113
|
async getCellLive(outPointLike, withData, includeTxPool) {
|
|
44
114
|
const cell = await this.getCellLiveNoCache(outPointLike, withData, includeTxPool);
|
|
45
115
|
if (withData && cell) {
|
|
@@ -172,32 +242,53 @@ class Client {
|
|
|
172
242
|
async getBalance(locks) {
|
|
173
243
|
return (0, index_js_5.reduceAsync)(locks, async (acc, lock) => acc + (await this.getBalanceSingle(lock)), index_js_2.Zero);
|
|
174
244
|
}
|
|
175
|
-
async sendTransaction(transaction, validator) {
|
|
245
|
+
async sendTransaction(transaction, validator, options) {
|
|
176
246
|
const tx = index_js_1.Transaction.from(transaction);
|
|
247
|
+
const maxFeeRate = (0, index_js_4.numFrom)(options?.maxFeeRate ?? clientTypes_advanced_js_1.DEFAULT_MAX_FEE_RATE);
|
|
248
|
+
const fee = await tx.feeRate(this);
|
|
249
|
+
if (maxFeeRate > index_js_2.Zero && fee > maxFeeRate) {
|
|
250
|
+
throw new clientTypes_js_1.ErrorClientMaxFeeRateExceeded(maxFeeRate, fee);
|
|
251
|
+
}
|
|
177
252
|
const txHash = await this.sendTransactionNoCache(tx, validator);
|
|
178
|
-
await this.cache.recordTransactions(tx);
|
|
179
253
|
await this.cache.markTransactions(tx);
|
|
180
254
|
return txHash;
|
|
181
255
|
}
|
|
182
256
|
async getTransaction(txHashLike) {
|
|
183
257
|
const txHash = (0, index_js_3.hexFrom)(txHashLike);
|
|
184
258
|
const res = await this.getTransactionNoCache(txHash);
|
|
185
|
-
if (res
|
|
259
|
+
if (res) {
|
|
260
|
+
await this.cache.recordTransactionResponses(res);
|
|
186
261
|
return res;
|
|
187
262
|
}
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
263
|
+
return this.cache.getTransactionResponse(txHash);
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* This method gets specified transaction with its block header (if existed).
|
|
267
|
+
* This is mainly for caching because we need the header to test if we can safely trust the cached tx status.
|
|
268
|
+
* @param txHashLike
|
|
269
|
+
*/
|
|
270
|
+
async getTransactionWithHeader(txHashLike) {
|
|
271
|
+
const txHash = (0, index_js_3.hexFrom)(txHashLike);
|
|
272
|
+
const tx = await this.cache.getTransactionResponse(txHash);
|
|
273
|
+
if (tx?.blockHash) {
|
|
274
|
+
const header = await this.getHeaderByHash(tx.blockHash);
|
|
275
|
+
if (header && hasHeaderConfirmed(header)) {
|
|
276
|
+
return {
|
|
277
|
+
transaction: tx,
|
|
278
|
+
header,
|
|
279
|
+
};
|
|
280
|
+
}
|
|
191
281
|
}
|
|
282
|
+
const res = await this.getTransactionNoCache(txHash);
|
|
192
283
|
if (!res) {
|
|
193
|
-
return
|
|
194
|
-
transaction: tx,
|
|
195
|
-
status: "sent",
|
|
196
|
-
};
|
|
284
|
+
return;
|
|
197
285
|
}
|
|
286
|
+
await this.cache.recordTransactionResponses(res);
|
|
198
287
|
return {
|
|
199
|
-
|
|
200
|
-
|
|
288
|
+
transaction: res,
|
|
289
|
+
header: res.blockHash
|
|
290
|
+
? await this.getHeaderByHash(res.blockHash)
|
|
291
|
+
: undefined,
|
|
201
292
|
};
|
|
202
293
|
}
|
|
203
294
|
async waitTransaction(txHash, confirmations = 0, timeout = 60000, interval = 2000) {
|
|
@@ -227,7 +318,7 @@ class Client {
|
|
|
227
318
|
return tx;
|
|
228
319
|
}
|
|
229
320
|
if (Date.now() - startTime + interval >= timeout) {
|
|
230
|
-
throw new clientTypes_js_1.ErrorClientWaitTransactionTimeout();
|
|
321
|
+
throw new clientTypes_js_1.ErrorClientWaitTransactionTimeout(timeout);
|
|
231
322
|
}
|
|
232
323
|
await (0, index_js_5.sleep)(interval);
|
|
233
324
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientPublicMainnet.d.ts","sourceRoot":"","sources":["../../src/client/clientPublicMainnet.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAExE;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IAElD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAP,MAAM,CAAC,GAAE,mBAAmB,GAAG;QAC9C,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,cAAc,GAAG,SAAS,CAAC,CAAC;KAC3D,aAAA;
|
|
1
|
+
{"version":3,"file":"clientPublicMainnet.d.ts","sourceRoot":"","sources":["../../src/client/clientPublicMainnet.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAExE;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IAElD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAP,MAAM,CAAC,GAAE,mBAAmB,GAAG;QAC9C,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,cAAc,GAAG,SAAS,CAAC,CAAC;KAC3D,aAAA;IAuBH,IAAI,OAAO,IAAI,MAAM,CAAC,WAAW,EAAE,cAAc,GAAG,SAAS,CAAC,CAE7D;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;IAEK,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;CAS/D"}
|
|
@@ -25,13 +25,8 @@ class ClientPublicMainnet extends index_js_1.ClientJsonRpc {
|
|
|
25
25
|
"wss://mainnet.ckb.dev/ws",
|
|
26
26
|
"https://mainnet.ckb.dev/",
|
|
27
27
|
"https://mainnet.ckbapp.dev/",
|
|
28
|
-
"https://rpc.ankr.com/nervos_ckb",
|
|
29
28
|
]
|
|
30
|
-
: [
|
|
31
|
-
"https://mainnet.ckb.dev/",
|
|
32
|
-
"https://mainnet.ckbapp.dev/",
|
|
33
|
-
"https://rpc.ankr.com/nervos_ckb",
|
|
34
|
-
]),
|
|
29
|
+
: ["https://mainnet.ckb.dev/", "https://mainnet.ckbapp.dev/"]),
|
|
35
30
|
});
|
|
36
31
|
this.config = config;
|
|
37
32
|
}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { ScriptLike } from "../ckb/index.js";
|
|
2
2
|
import { HexLike } from "../hex/index.js";
|
|
3
3
|
import { Num, NumLike } from "../num/index.js";
|
|
4
|
+
export declare const CONFIRMED_BLOCK_TIME: bigint;
|
|
5
|
+
export declare const DEFAULT_MAX_FEE_RATE: bigint;
|
|
6
|
+
export declare const DEFAULT_MIN_FEE_RATE: bigint;
|
|
4
7
|
export declare function clientSearchKeyRangeFrom([a, b]: [NumLike, NumLike]): [
|
|
5
8
|
Num,
|
|
6
9
|
Num
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientTypes.advanced.d.ts","sourceRoot":"","sources":["../../src/client/clientTypes.advanced.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAW,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAExD,wBAAgB,wBAAwB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG;IACpE,GAAG;IACH,GAAG;CACJ,CAEA;AAED,MAAM,MAAM,oCAAoC,GAAG;IACjD,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC3B,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC3C,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5B,oBAAoB,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;IAC7D,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/C,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACjD,CAAC;AACF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,gBAAgB,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;IACjD,MAAM,CAAC,EAAE,oCAAoC,GAAG,IAAI,CAAC;IACrD,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC3B,CAAC"}
|
|
1
|
+
{"version":3,"file":"clientTypes.advanced.d.ts","sourceRoot":"","sources":["../../src/client/clientTypes.advanced.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAW,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAExD,eAAO,MAAM,oBAAoB,QAA0B,CAAC;AAC5D,eAAO,MAAM,oBAAoB,QAAoB,CAAC;AACtD,eAAO,MAAM,oBAAoB,QAAgB,CAAC;AAElD,wBAAgB,wBAAwB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG;IACpE,GAAG;IACH,GAAG;CACJ,CAEA;AAED,MAAM,MAAM,oCAAoC,GAAG;IACjD,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC3B,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC3C,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5B,oBAAoB,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;IAC7D,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/C,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACjD,CAAC;AACF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,gBAAgB,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;IACjD,MAAM,CAAC,EAAE,oCAAoC,GAAG,IAAI,CAAC;IACrD,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC3B,CAAC"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_MIN_FEE_RATE = exports.DEFAULT_MAX_FEE_RATE = exports.CONFIRMED_BLOCK_TIME = void 0;
|
|
3
4
|
exports.clientSearchKeyRangeFrom = clientSearchKeyRangeFrom;
|
|
4
5
|
const index_js_1 = require("../num/index.js");
|
|
6
|
+
exports.CONFIRMED_BLOCK_TIME = (0, index_js_1.numFrom)(1000 * 10 * 50); // 50 blocks * 10s
|
|
7
|
+
exports.DEFAULT_MAX_FEE_RATE = (0, index_js_1.numFrom)(10000000);
|
|
8
|
+
exports.DEFAULT_MIN_FEE_RATE = (0, index_js_1.numFrom)(1000);
|
|
5
9
|
function clientSearchKeyRangeFrom([a, b]) {
|
|
6
10
|
return [(0, index_js_1.numFrom)(a), (0, index_js_1.numFrom)(b)];
|
|
7
11
|
}
|