@aztec/foundation 0.47.1 → 0.49.2
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/dest/abi/abi.d.ts +7 -1
- package/dest/abi/abi.d.ts.map +1 -1
- package/dest/abi/abi.js +1 -1
- package/dest/config/env_var.d.ts +2 -0
- package/dest/config/env_var.d.ts.map +1 -0
- package/dest/config/env_var.js +2 -0
- package/dest/config/index.d.ts +53 -0
- package/dest/config/index.d.ts.map +1 -0
- package/dest/config/index.js +99 -0
- package/dest/crypto/pedersen/pedersen.wasm.d.ts +1 -1
- package/dest/crypto/pedersen/pedersen.wasm.d.ts.map +1 -1
- package/dest/crypto/pedersen/pedersen.wasm.js +3 -3
- package/dest/crypto/poseidon/index.d.ts +7 -0
- package/dest/crypto/poseidon/index.d.ts.map +1 -1
- package/dest/crypto/poseidon/index.js +14 -1
- package/dest/fields/fields.js +2 -2
- package/dest/fields/point.d.ts +0 -6
- package/dest/fields/point.d.ts.map +1 -1
- package/dest/fields/point.js +1 -13
- package/dest/fs/run_in_dir.d.ts +1 -1
- package/dest/fs/run_in_dir.d.ts.map +1 -1
- package/dest/fs/run_in_dir.js +8 -4
- package/dest/hash/index.d.ts +83 -0
- package/dest/hash/index.d.ts.map +1 -0
- package/dest/hash/index.js +110 -0
- package/dest/index.d.ts +3 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +4 -2
- package/dest/noir/noir_package_config.d.ts +4 -4
- package/dest/promise/running-promise.d.ts +5 -0
- package/dest/promise/running-promise.d.ts.map +1 -1
- package/dest/promise/running-promise.js +8 -1
- package/dest/{fifo/memory_fifo.d.ts → queue/base_memory_queue.d.ts} +8 -8
- package/dest/queue/base_memory_queue.d.ts.map +1 -0
- package/dest/{fifo/memory_fifo.js → queue/base_memory_queue.js} +5 -11
- package/dest/queue/bounded_serial_queue.d.ts.map +1 -0
- package/dest/{fifo → queue}/bounded_serial_queue.js +1 -1
- package/dest/queue/fifo_memory_queue.d.ts +21 -0
- package/dest/queue/fifo_memory_queue.d.ts.map +1 -0
- package/dest/queue/fifo_memory_queue.js +33 -0
- package/dest/queue/index.d.ts +6 -0
- package/dest/queue/index.d.ts.map +1 -0
- package/dest/queue/index.js +6 -0
- package/dest/queue/priority_memory_queue.d.ts +13 -0
- package/dest/queue/priority_memory_queue.d.ts.map +1 -0
- package/dest/queue/priority_memory_queue.js +17 -0
- package/dest/queue/priority_queue.d.ts +14 -0
- package/dest/queue/priority_queue.d.ts.map +1 -0
- package/dest/queue/priority_queue.js +29 -0
- package/dest/queue/semaphore.d.ts.map +1 -0
- package/dest/{fifo → queue}/semaphore.js +3 -3
- package/dest/queue/serial_queue.d.ts.map +1 -0
- package/dest/{fifo → queue}/serial_queue.js +3 -3
- package/dest/wasm/wasm_module.d.ts.map +1 -1
- package/dest/wasm/wasm_module.js +3 -3
- package/package.json +5 -3
- package/src/abi/abi.ts +9 -1
- package/src/config/env_var.ts +98 -0
- package/src/config/index.ts +132 -0
- package/src/crypto/pedersen/pedersen.wasm.ts +5 -2
- package/src/crypto/poseidon/index.ts +20 -0
- package/src/fields/fields.ts +1 -1
- package/src/fields/point.ts +0 -13
- package/src/fs/run_in_dir.ts +6 -3
- package/src/hash/index.ts +123 -0
- package/src/index.ts +3 -1
- package/src/promise/running-promise.ts +8 -0
- package/src/{fifo/memory_fifo.ts → queue/base_memory_queue.ts} +11 -10
- package/src/queue/fifo_memory_queue.ts +39 -0
- package/src/{fifo → queue}/index.ts +2 -1
- package/src/queue/priority_memory_queue.ts +20 -0
- package/src/queue/priority_queue.ts +34 -0
- package/src/{fifo → queue}/semaphore.ts +2 -2
- package/src/{fifo → queue}/serial_queue.ts +2 -2
- package/src/wasm/wasm_module.ts +2 -2
- package/dest/fifo/bounded_serial_queue.d.ts.map +0 -1
- package/dest/fifo/index.d.ts +0 -5
- package/dest/fifo/index.d.ts.map +0 -1
- package/dest/fifo/index.js +0 -5
- package/dest/fifo/memory_fifo.d.ts.map +0 -1
- package/dest/fifo/semaphore.d.ts.map +0 -1
- package/dest/fifo/serial_queue.d.ts.map +0 -1
- /package/dest/{fifo → queue}/bounded_serial_queue.d.ts +0 -0
- /package/dest/{fifo → queue}/semaphore.d.ts +0 -0
- /package/dest/{fifo → queue}/serial_queue.d.ts +0 -0
- /package/src/{fifo → queue}/bounded_serial_queue.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serial_queue.d.ts","sourceRoot":"","sources":["../../src/queue/serial_queue.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA8C;IACpE,OAAO,CAAC,cAAc,CAAiB;IAEvC;;;;;OAKG;IACI,KAAK;IAIZ;;;;;OAKG;IACI,MAAM;IAIb;;;;;;OAMG;IACI,MAAM;IAKb;;;;;OAKG;IACI,GAAG;IAKV;;;;;OAKG;IACI,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAgB/C;;OAEG;IACU,SAAS;CAGvB"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { FifoMemoryQueue } from './fifo_memory_queue.js';
|
|
2
2
|
/**
|
|
3
3
|
* A more specialized fifo queue that enqueues functions to execute. Enqueued functions are executed in serial.
|
|
4
4
|
*/
|
|
5
5
|
export class SerialQueue {
|
|
6
6
|
constructor() {
|
|
7
|
-
this.queue = new
|
|
7
|
+
this.queue = new FifoMemoryQueue();
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
10
|
* Initializes the execution of enqueued functions in the serial queue.
|
|
@@ -74,4 +74,4 @@ export class SerialQueue {
|
|
|
74
74
|
await this.put(async () => { });
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsX3F1ZXVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3F1ZXVlL3NlcmlhbF9xdWV1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFekQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sV0FBVztJQUF4QjtRQUNtQixVQUFLLEdBQUcsSUFBSSxlQUFlLEVBQXVCLENBQUM7SUEwRXRFLENBQUM7SUF2RUM7Ozs7O09BS0c7SUFDSSxLQUFLO1FBQ1YsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTTtRQUNYLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTTtRQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDcEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEdBQUc7UUFDUixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxHQUFHLENBQUksRUFBb0I7UUFDaEMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDekMsSUFBSSxDQUFDO29CQUNILE1BQU0sR0FBRyxHQUFHLE1BQU0sRUFBRSxFQUFFLENBQUM7b0JBQ3ZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDZixDQUFDO2dCQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQ1gsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNaLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDZCxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxDQUFDO1lBQ2xELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxTQUFTO1FBQ3BCLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7Q0FDRiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wasm_module.d.ts","sourceRoot":"","sources":["../../src/wasm/wasm_module.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"wasm_module.d.ts","sourceRoot":"","sources":["../../src/wasm/wasm_module.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,KAAK,KAAK,EAAyB,MAAM,iBAAiB,CAAC;AAIpE;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,MAAM,CAAC;IAEzC;;;;;OAKG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC;IAEvD;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAAC;CACpD;AAED;;;;;;;GAOG;AACH,qBAAa,UAAW,YAAW,WAAW;IAc1C,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ;IAdlB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,QAAQ,CAAC,CAAuB;IACxC,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,KAAK,CAAQ;IAErB;;;;;OAKG;gBAEO,MAAM,EAAE,WAAW,CAAC,MAAM,GAAG,MAAM,EACnC,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,GAAG,EAC7C,UAAU,SAAe;IAM3B;;;OAGG;IACI,SAAS,IAAI,WAAW,CAAC,MAAM,GAAG,MAAM;IAG/C;;;;;;OAMG;IACU,IAAI,CAAC,OAAO,SAAK,EAAE,OAAO,SAAO,EAAE,UAAU,GAAE,MAAM,GAAG,IAAoB;IA6CzF;;;OAGG;IACI,OAAO,IAAI,GAAG;IAOrB;;;OAGG;IACI,SAAS;IAIhB;;;OAGG;IACI,SAAS,CAAC,MAAM,EAAE,KAAK;IAQ9B;;;;;OAKG;IACI,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,MAAM;IAa/C;;;OAGG;IACI,YAAY,IAAI,WAAW,CAAC,MAAM;IAGzC;;;OAGG;IACI,SAAS,IAAI,UAAU;IAQ9B;;;OAGG;IACI,OAAO,IAAI,MAAM;IAIxB;;;;;OAKG;IACI,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU;IAI7D;;;;OAIG;IACI,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU;IAOlD;;;;OAIG;IACI,iBAAiB,CAAC,IAAI,EAAE,MAAM;IAUrC;;;;;OAKG;IACU,OAAO;IAIpB;;OAEG;IACI,OAAO;CAMf"}
|
package/dest/wasm/wasm_module.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Buffer } from 'buffer';
|
|
2
2
|
import { randomBytes } from '../crypto/index.js';
|
|
3
|
-
import { MemoryFifo } from '../fifo/index.js';
|
|
4
3
|
import { createDebugOnlyLogger } from '../log/index.js';
|
|
4
|
+
import { FifoMemoryQueue } from '../queue/index.js';
|
|
5
5
|
import { getEmptyWasiSdk } from './empty_wasi_sdk.js';
|
|
6
6
|
/**
|
|
7
7
|
* WasmModule:
|
|
@@ -21,7 +21,7 @@ export class WasmModule {
|
|
|
21
21
|
constructor(module, importFn, loggerName = 'aztec:wasm') {
|
|
22
22
|
this.module = module;
|
|
23
23
|
this.importFn = importFn;
|
|
24
|
-
this.mutexQ = new
|
|
24
|
+
this.mutexQ = new FifoMemoryQueue();
|
|
25
25
|
this.debug = createDebugOnlyLogger(loggerName);
|
|
26
26
|
this.mutexQ.put(true);
|
|
27
27
|
}
|
|
@@ -203,4 +203,4 @@ export class WasmModule {
|
|
|
203
203
|
this.mutexQ.put(true);
|
|
204
204
|
}
|
|
205
205
|
}
|
|
206
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FzbV9tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd2FzbS93YXNtX21vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRWhDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQWMscUJBQXFCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBZ0N0RDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxPQUFPLFVBQVU7SUFPckI7Ozs7O09BS0c7SUFDSCxZQUNVLE1BQW1DLEVBQ25DLFFBQXFDLEVBQzdDLFVBQVUsR0FBRyxZQUFZO1FBRmpCLFdBQU0sR0FBTixNQUFNLENBQTZCO1FBQ25DLGFBQVEsR0FBUixRQUFRLENBQTZCO1FBWHZDLFdBQU0sR0FBRyxJQUFJLGVBQWUsRUFBVyxDQUFDO1FBYzlDLElBQUksQ0FBQyxLQUFLLEdBQUcscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUNEOzs7Ozs7T0FNRztJQUNJLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsRUFBRSxPQUFPLEdBQUcsSUFBSSxFQUFFLGFBQTRCLGFBQWE7UUFDdkYsSUFBSSxDQUFDLEtBQUssQ0FDUixnQkFBZ0IsT0FBTyxXQUFXLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENB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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/foundation",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.49.2",
|
|
4
4
|
"packageManager": "yarn@3.4.1",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dest/index.js",
|
|
@@ -13,11 +13,13 @@
|
|
|
13
13
|
"./async-map": "./dest/async-map/index.js",
|
|
14
14
|
"./aztec-address": "./dest/aztec-address/index.js",
|
|
15
15
|
"./collection": "./dest/collection/index.js",
|
|
16
|
+
"./config": "./dest/config/index.js",
|
|
16
17
|
"./crypto": "./dest/crypto/index.js",
|
|
17
18
|
"./error": "./dest/error/index.js",
|
|
18
19
|
"./eth-address": "./dest/eth-address/index.js",
|
|
19
|
-
"./
|
|
20
|
+
"./queue": "./dest/queue/index.js",
|
|
20
21
|
"./fs": "./dest/fs/index.js",
|
|
22
|
+
"./hash": "./dest/hash/index.js",
|
|
21
23
|
"./json-rpc": "./dest/json-rpc/index.js",
|
|
22
24
|
"./json-rpc/server": "./dest/json-rpc/server/index.js",
|
|
23
25
|
"./json-rpc/client": "./dest/json-rpc/client/index.js",
|
|
@@ -88,7 +90,7 @@
|
|
|
88
90
|
]
|
|
89
91
|
},
|
|
90
92
|
"dependencies": {
|
|
91
|
-
"@aztec/bb.js": "0.
|
|
93
|
+
"@aztec/bb.js": "0.49.2",
|
|
92
94
|
"@koa/cors": "^5.0.0",
|
|
93
95
|
"@noble/curves": "^1.2.0",
|
|
94
96
|
"bn.js": "^5.2.1",
|
package/src/abi/abi.ts
CHANGED
|
@@ -231,6 +231,10 @@ export interface SourceCodeLocation {
|
|
|
231
231
|
*/
|
|
232
232
|
export type OpcodeLocation = string;
|
|
233
233
|
|
|
234
|
+
export type BrilligFunctionId = number;
|
|
235
|
+
|
|
236
|
+
export type OpcodeToLocationsMap = Record<OpcodeLocation, SourceCodeLocation[]>;
|
|
237
|
+
|
|
234
238
|
/**
|
|
235
239
|
* The debug information for a given function.
|
|
236
240
|
*/
|
|
@@ -238,7 +242,11 @@ export interface DebugInfo {
|
|
|
238
242
|
/**
|
|
239
243
|
* A map of the opcode location to the source code location.
|
|
240
244
|
*/
|
|
241
|
-
locations:
|
|
245
|
+
locations: OpcodeToLocationsMap;
|
|
246
|
+
/**
|
|
247
|
+
* For each Brillig function, we have a map of the opcode location to the source code location.
|
|
248
|
+
*/
|
|
249
|
+
brillig_locations: Record<BrilligFunctionId, OpcodeToLocationsMap>;
|
|
242
250
|
}
|
|
243
251
|
|
|
244
252
|
/**
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
export type EnvVar =
|
|
2
|
+
| 'TEST_ACCOUNTS'
|
|
3
|
+
| 'ENABLE_GAS'
|
|
4
|
+
| 'API_PREFIX'
|
|
5
|
+
| 'ETHEREUM_HOST'
|
|
6
|
+
| 'L1_CHAIN_ID'
|
|
7
|
+
| 'MNEMONIC'
|
|
8
|
+
| 'ROLLUP_CONTRACT_ADDRESS'
|
|
9
|
+
| 'REGISTRY_CONTRACT_ADDRESS'
|
|
10
|
+
| 'INBOX_CONTRACT_ADDRESS'
|
|
11
|
+
| 'OUTBOX_CONTRACT_ADDRESS'
|
|
12
|
+
| 'AVAILABILITY_ORACLE_CONTRACT_ADDRESS'
|
|
13
|
+
| 'FEE_JUICE_CONTRACT_ADDRESS'
|
|
14
|
+
| 'FEE_JUICE_PORTAL_CONTRACT_ADDRESS'
|
|
15
|
+
| 'ARCHIVER_URL'
|
|
16
|
+
| 'DEPLOY_AZTEC_CONTRACTS'
|
|
17
|
+
| 'L1_PRIVATE_KEY'
|
|
18
|
+
| 'L2_QUEUE_SIZE'
|
|
19
|
+
| 'WS_BLOCK_CHECK_INTERVAL_MS'
|
|
20
|
+
| 'P2P_ENABLED'
|
|
21
|
+
| 'P2P_BLOCK_CHECK_INTERVAL_MS'
|
|
22
|
+
| 'P2P_PEER_CHECK_INTERVAL_MS'
|
|
23
|
+
| 'P2P_L2_QUEUE_SIZE'
|
|
24
|
+
| 'TCP_LISTEN_ADDR'
|
|
25
|
+
| 'UDP_LISTEN_ADDR'
|
|
26
|
+
| 'P2P_TCP_ANNOUNCE_ADDR'
|
|
27
|
+
| 'P2P_UDP_ANNOUNCE_ADDR'
|
|
28
|
+
| 'PEER_ID_PRIVATE_KEY'
|
|
29
|
+
| 'BOOTSTRAP_NODES'
|
|
30
|
+
| 'P2P_TX_PROTOCOL'
|
|
31
|
+
| 'P2P_MIN_PEERS'
|
|
32
|
+
| 'P2P_MAX_PEERS'
|
|
33
|
+
| 'DATA_DIRECTORY'
|
|
34
|
+
| 'TX_GOSSIP_VERSION'
|
|
35
|
+
| 'P2P_QUERY_FOR_IP'
|
|
36
|
+
| 'P2P_TX_POOL_KEEP_PROVEN_FOR'
|
|
37
|
+
| 'TELEMETRY'
|
|
38
|
+
| 'OTEL_EXPORTER_OTLP_ENDPOINT'
|
|
39
|
+
| 'OTEL_SERVICE_NAME'
|
|
40
|
+
| 'NETWORK_NAME'
|
|
41
|
+
| 'NETWORK'
|
|
42
|
+
| 'API_KEY'
|
|
43
|
+
| 'AZTEC_NODE_URL'
|
|
44
|
+
| 'ARCHIVER_POLLING_INTERVAL_MS'
|
|
45
|
+
| 'ARCHIVER_VIEM_POLLING_INTERVAL_MS'
|
|
46
|
+
| 'ARCHIVER_MAX_LOGS'
|
|
47
|
+
| 'SEQ_TX_POLLING_INTERVAL_MS'
|
|
48
|
+
| 'SEQ_MAX_TX_PER_BLOCK'
|
|
49
|
+
| 'SEQ_MIN_TX_PER_BLOCK'
|
|
50
|
+
| 'SEQ_MIN_SECONDS_BETWEEN_BLOCKS'
|
|
51
|
+
| 'SEQ_MAX_SECONDS_BETWEEN_BLOCKS'
|
|
52
|
+
| 'COINBASE'
|
|
53
|
+
| 'FEE_RECIPIENT'
|
|
54
|
+
| 'ACVM_WORKING_DIRECTORY'
|
|
55
|
+
| 'ACVM_BINARY_PATH'
|
|
56
|
+
| 'SEQ_ALLOWED_SETUP_FN'
|
|
57
|
+
| 'SEQ_ALLOWED_TEARDOWN_FN'
|
|
58
|
+
| 'SEQ_MAX_BLOCK_SIZE_IN_BYTES'
|
|
59
|
+
| 'ENFORCE_FEES'
|
|
60
|
+
| 'SEQ_PUBLISHER_PRIVATE_KEY'
|
|
61
|
+
| 'SEQ_REQUIRED_CONFIRMATIONS'
|
|
62
|
+
| 'SEQ_PUBLISH_RETRY_INTERVAL_MS'
|
|
63
|
+
| 'VERSION'
|
|
64
|
+
| 'SEQ_DISABLED'
|
|
65
|
+
| 'PROVER_DISABLED'
|
|
66
|
+
| 'PROVER_REAL_PROOFS'
|
|
67
|
+
| 'PROVER_AGENT_ENABLED'
|
|
68
|
+
| 'PROVER_AGENT_POLL_INTERVAL_MS'
|
|
69
|
+
| 'PROVER_AGENT_CONCURRENCY'
|
|
70
|
+
| 'PROVER_JOB_TIMEOUT_MS'
|
|
71
|
+
| 'PROVER_JOB_POLL_INTERVAL_MS'
|
|
72
|
+
| 'PROVER_ID'
|
|
73
|
+
| 'WS_L2_BLOCK_QUEUE_SIZE'
|
|
74
|
+
| 'WS_PROVEN_BLOCKS_ONLY'
|
|
75
|
+
| 'PROVER_PUBLISH_RETRY_INTERVAL_MS'
|
|
76
|
+
| 'PROVER_PUBLISHER_PRIVATE_KEY'
|
|
77
|
+
| 'PROVER_REQUIRED_CONFIRMATIONS'
|
|
78
|
+
| 'PROVER_TEST_DELAY_MS'
|
|
79
|
+
| 'TX_PROVIDER_NODE_URL'
|
|
80
|
+
| 'TXE_PORT'
|
|
81
|
+
| 'BOT_PXE_URL'
|
|
82
|
+
| 'BOT_PRIVATE_KEY'
|
|
83
|
+
| 'BOT_RECIPIENT_ENCRYPTION_SECRET'
|
|
84
|
+
| 'BOT_TOKEN_SALT'
|
|
85
|
+
| 'BOT_TX_INTERVAL_SECONDS'
|
|
86
|
+
| 'BOT_PRIVATE_TRANSFERS_PER_TX'
|
|
87
|
+
| 'BOT_PUBLIC_TRANSFERS_PER_TX'
|
|
88
|
+
| 'BOT_FEE_PAYMENT_METHOD'
|
|
89
|
+
| 'BOT_NO_START'
|
|
90
|
+
| 'BOT_TX_MINED_WAIT_SECONDS'
|
|
91
|
+
| 'BOT_NO_WAIT_FOR_TRANSFERS'
|
|
92
|
+
| 'PXE_BLOCK_POLLING_INTERVAL_MS'
|
|
93
|
+
| 'PXE_L2_STARTING_BLOCK'
|
|
94
|
+
| 'PXE_DATA_DIRECTORY'
|
|
95
|
+
| 'BB_BINARY_PATH'
|
|
96
|
+
| 'BB_WORKING_DIRECTORY'
|
|
97
|
+
| 'BB_SKIP_CLEANUP'
|
|
98
|
+
| 'PXE_PROVER_ENABLED';
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { type EnvVar } from './env_var.js';
|
|
2
|
+
|
|
3
|
+
export { EnvVar } from './env_var.js';
|
|
4
|
+
|
|
5
|
+
export interface ConfigMapping {
|
|
6
|
+
env?: EnvVar;
|
|
7
|
+
parseEnv?: (val: string) => any;
|
|
8
|
+
defaultValue?: any;
|
|
9
|
+
printDefault?: (val: any) => string;
|
|
10
|
+
description: string;
|
|
11
|
+
isBoolean?: boolean;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function isBooleanConfigValue<T>(obj: T, key: keyof T): boolean {
|
|
15
|
+
return typeof obj[key] === 'boolean';
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export type ConfigMappingsType<T> = Record<keyof T, ConfigMapping>;
|
|
19
|
+
|
|
20
|
+
export function getConfigFromMappings<T>(configMappings: ConfigMappingsType<T>): T {
|
|
21
|
+
const config = {} as T;
|
|
22
|
+
|
|
23
|
+
for (const key in configMappings) {
|
|
24
|
+
if (configMappings[key]) {
|
|
25
|
+
const { env, parseEnv, defaultValue: def } = configMappings[key];
|
|
26
|
+
// Special case for L1 contract addresses which is an object of config values
|
|
27
|
+
if (key === 'l1Contracts' && def) {
|
|
28
|
+
(config as any)[key] = getConfigFromMappings(def);
|
|
29
|
+
} else {
|
|
30
|
+
const val = env ? process.env[env] : undefined;
|
|
31
|
+
if (val !== undefined) {
|
|
32
|
+
(config as any)[key] = parseEnv ? parseEnv(val) : val;
|
|
33
|
+
} else if (def !== undefined) {
|
|
34
|
+
(config as any)[key] = def;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return config;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Filters out a service's config mappings to exclude certain keys.
|
|
45
|
+
* @param configMappings - The service's config mappings
|
|
46
|
+
* @param keysToFilter - The keys to filter out
|
|
47
|
+
* @returns The filtered config mappings
|
|
48
|
+
*/
|
|
49
|
+
export function filterConfigMappings<T, K extends keyof T>(
|
|
50
|
+
configMappings: ConfigMappingsType<T>,
|
|
51
|
+
keysToFilter: K[],
|
|
52
|
+
): ConfigMappingsType<Omit<T, K>> {
|
|
53
|
+
return Object.fromEntries(
|
|
54
|
+
Object.entries(configMappings).filter(([key]) => !keysToFilter.includes(key as K)),
|
|
55
|
+
) as ConfigMappingsType<Omit<T, K>>;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Generates parseEnv and default values for a numerical config value.
|
|
60
|
+
* @param defaultVal - The default numerical value to use if the environment variable is not set or is invalid
|
|
61
|
+
* @returns Object with parseEnv and default values for a numerical config value
|
|
62
|
+
*/
|
|
63
|
+
export function numberConfigHelper(defaultVal: number): Pick<ConfigMapping, 'parseEnv' | 'defaultValue'> {
|
|
64
|
+
return {
|
|
65
|
+
parseEnv: (val: string) => safeParseNumber(val, defaultVal),
|
|
66
|
+
defaultValue: defaultVal,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Generates parseEnv and default values for a boolean config value.
|
|
72
|
+
* @param defaultVal - The default value to use if the environment variable is not set or is invalid
|
|
73
|
+
* @returns Object with parseEnv and default values for a boolean config value
|
|
74
|
+
*/
|
|
75
|
+
export function booleanConfigHelper(
|
|
76
|
+
defaultVal = false,
|
|
77
|
+
): Required<Pick<ConfigMapping, 'parseEnv' | 'defaultValue' | 'isBoolean'> & { parseVal: (val: string) => boolean }> {
|
|
78
|
+
const parse = (val: string | boolean) => (typeof val === 'boolean' ? val : ['1', 'true', 'TRUE'].includes(val));
|
|
79
|
+
return {
|
|
80
|
+
parseEnv: parse,
|
|
81
|
+
parseVal: parse,
|
|
82
|
+
defaultValue: defaultVal,
|
|
83
|
+
isBoolean: true,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Safely parses a number from a string.
|
|
89
|
+
* If the value is not a number or is not a safe integer, the default value is returned.
|
|
90
|
+
* @param value - The string value to parse
|
|
91
|
+
* @param defaultValue - The default value to return
|
|
92
|
+
* @returns Either parsed value or default value
|
|
93
|
+
*/
|
|
94
|
+
function safeParseNumber(value: string, defaultValue: number): number {
|
|
95
|
+
const parsedValue = parseInt(value, 10);
|
|
96
|
+
return Number.isSafeInteger(parsedValue) ? parsedValue : defaultValue;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Picks specific keys from the given configuration mappings.
|
|
101
|
+
*
|
|
102
|
+
* @template T - The type of the full configuration object.
|
|
103
|
+
* @template K - The keys to pick from the configuration object.
|
|
104
|
+
* @param {ConfigMappingsType<T>} configMappings - The full configuration mappings object.
|
|
105
|
+
* @param {K[]} keys - The keys to pick from the configuration mappings.
|
|
106
|
+
* @returns {ConfigMappingsType<Pick<T, K>>} - A new configuration mappings object containing only the specified keys.
|
|
107
|
+
*/
|
|
108
|
+
export function pickConfigMappings<T, K extends keyof T>(
|
|
109
|
+
configMappings: ConfigMappingsType<T>,
|
|
110
|
+
keys: K[],
|
|
111
|
+
): ConfigMappingsType<Pick<T, K>> {
|
|
112
|
+
return Object.fromEntries(keys.map(key => [key, configMappings[key]])) as ConfigMappingsType<Pick<T, K>>;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Extracts the default configuration values from the given configuration mappings.
|
|
117
|
+
*
|
|
118
|
+
* @template T - The type of the configuration object.
|
|
119
|
+
* @param {ConfigMappingsType<T>} configMappings - The configuration mappings object.
|
|
120
|
+
* @returns {T} - The configuration object with default values.
|
|
121
|
+
*/
|
|
122
|
+
export function getDefaultConfig<T>(configMappings: ConfigMappingsType<T>): T {
|
|
123
|
+
const defaultConfig = {} as T;
|
|
124
|
+
|
|
125
|
+
for (const key in configMappings) {
|
|
126
|
+
if (configMappings[key] && configMappings[key].defaultValue !== undefined) {
|
|
127
|
+
(defaultConfig as any)[key] = configMappings[key].defaultValue;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
return defaultConfig;
|
|
132
|
+
}
|
|
@@ -7,12 +7,15 @@ import { type Fieldable, serializeToFields } from '../../serialize/serialize.js'
|
|
|
7
7
|
* Create a pedersen commitment (point) from an array of input fields.
|
|
8
8
|
* Left pads any inputs less than 32 bytes.
|
|
9
9
|
*/
|
|
10
|
-
export function pedersenCommit(input: Buffer[]) {
|
|
10
|
+
export function pedersenCommit(input: Buffer[], offset = 0) {
|
|
11
11
|
if (!input.every(i => i.length <= 32)) {
|
|
12
12
|
throw new Error('All Pedersen Commit input buffers must be <= 32 bytes.');
|
|
13
13
|
}
|
|
14
14
|
input = input.map(i => (i.length < 32 ? Buffer.concat([Buffer.alloc(32 - i.length, 0), i]) : i));
|
|
15
|
-
const point = BarretenbergSync.getSingleton().pedersenCommit(
|
|
15
|
+
const point = BarretenbergSync.getSingleton().pedersenCommit(
|
|
16
|
+
input.map(i => new FrBarretenberg(i)),
|
|
17
|
+
offset,
|
|
18
|
+
);
|
|
16
19
|
// toBuffer returns Uint8Arrays (browser/worker-boundary friendly).
|
|
17
20
|
// TODO: rename toTypedArray()?
|
|
18
21
|
return [Buffer.from(point.x.toBuffer()), Buffer.from(point.y.toBuffer())];
|
|
@@ -21,6 +21,26 @@ export function poseidon2Hash(input: Fieldable[]): Fr {
|
|
|
21
21
|
);
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
+
/**
|
|
25
|
+
* Create a poseidon hash (field) from an array of input fields and a domain separator.
|
|
26
|
+
* @param input - The input fields to hash.
|
|
27
|
+
* @param separator - The domain separator.
|
|
28
|
+
* @returns The poseidon hash.
|
|
29
|
+
*/
|
|
30
|
+
export function poseidon2HashWithSeparator(input: Fieldable[], separator: number): Fr {
|
|
31
|
+
const inputFields = serializeToFields(input);
|
|
32
|
+
inputFields.unshift(new Fr(separator));
|
|
33
|
+
return Fr.fromBuffer(
|
|
34
|
+
Buffer.from(
|
|
35
|
+
BarretenbergSync.getSingleton()
|
|
36
|
+
.poseidon2Hash(
|
|
37
|
+
inputFields.map(i => new FrBarretenberg(i.toBuffer())), // TODO(#4189): remove this stupid conversion
|
|
38
|
+
)
|
|
39
|
+
.toBuffer(),
|
|
40
|
+
),
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
|
|
24
44
|
/**
|
|
25
45
|
* Runs a Poseidon2 permutation.
|
|
26
46
|
* @param input the input state. Expected to be of size 4.
|
package/src/fields/fields.ts
CHANGED
|
@@ -433,7 +433,7 @@ export function reduceFn<TInput, TField extends BaseField>(fn: (input: TInput) =
|
|
|
433
433
|
}
|
|
434
434
|
|
|
435
435
|
/** If we are in test mode, we register a special equality for fields. */
|
|
436
|
-
if (process.env.NODE_ENV === 'test') {
|
|
436
|
+
if (process.env.NODE_ENV === 'test' && typeof expect !== 'undefined') {
|
|
437
437
|
const areFieldsEqual = (a: unknown, b: unknown): boolean | undefined => {
|
|
438
438
|
const isAField = a instanceof BaseField;
|
|
439
439
|
const isBField = b instanceof BaseField;
|
package/src/fields/point.ts
CHANGED
|
@@ -267,19 +267,6 @@ export class Point {
|
|
|
267
267
|
}
|
|
268
268
|
}
|
|
269
269
|
|
|
270
|
-
/**
|
|
271
|
-
* Does this object look like a point?
|
|
272
|
-
* @param obj - Object to test if it is a point.
|
|
273
|
-
* @returns Whether it looks like a point.
|
|
274
|
-
*/
|
|
275
|
-
export function isPoint(obj: object): obj is Point {
|
|
276
|
-
if (!obj) {
|
|
277
|
-
return false;
|
|
278
|
-
}
|
|
279
|
-
const point = obj as Point;
|
|
280
|
-
return point.kind === 'point' && point.x !== undefined && point.y !== undefined;
|
|
281
|
-
}
|
|
282
|
-
|
|
283
270
|
export class NotOnCurveError extends Error {
|
|
284
271
|
constructor(x: Fr) {
|
|
285
272
|
super('The given x-coordinate is not on the Grumpkin curve: ' + x.toString());
|
package/src/fs/run_in_dir.ts
CHANGED
|
@@ -2,11 +2,11 @@ import * as fs from 'fs/promises';
|
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
|
|
4
4
|
// Create a random directory underneath a 'base' directory
|
|
5
|
-
// Calls a provided method, ensures the random directory is cleaned up afterwards
|
|
5
|
+
// Calls a provided method, ensures the random directory is cleaned up afterwards unless the operation fails
|
|
6
6
|
export async function runInDirectory<T>(
|
|
7
7
|
workingDirBase: string,
|
|
8
8
|
fn: (dir: string) => Promise<T>,
|
|
9
|
-
|
|
9
|
+
skipCleanup: boolean | undefined,
|
|
10
10
|
): Promise<T> {
|
|
11
11
|
// Create random directory to be used for temp files
|
|
12
12
|
const workingDirectory = await fs.mkdtemp(path.join(workingDirBase, 'tmp-'));
|
|
@@ -15,8 +15,11 @@ export async function runInDirectory<T>(
|
|
|
15
15
|
|
|
16
16
|
try {
|
|
17
17
|
return await fn(workingDirectory);
|
|
18
|
+
} catch (err) {
|
|
19
|
+
skipCleanup = true;
|
|
20
|
+
throw err;
|
|
18
21
|
} finally {
|
|
19
|
-
if (
|
|
22
|
+
if (!skipCleanup) {
|
|
20
23
|
await fs.rm(workingDirectory, { recursive: true, force: true });
|
|
21
24
|
}
|
|
22
25
|
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { randomBytes } from '@aztec/foundation/crypto';
|
|
2
|
+
import { BufferReader, deserializeBigInt, serializeBigInt } from '@aztec/foundation/serialize';
|
|
3
|
+
|
|
4
|
+
import { type Fr } from '../fields/fields.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* A class representing a hash.
|
|
8
|
+
*/
|
|
9
|
+
export class BaseHashType {
|
|
10
|
+
/**
|
|
11
|
+
* The size of the hash in bytes.
|
|
12
|
+
*/
|
|
13
|
+
public static SIZE = 32;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* HashType with value zero.
|
|
17
|
+
*/
|
|
18
|
+
public static ZERO = new BaseHashType(Buffer.alloc(BaseHashType.SIZE));
|
|
19
|
+
|
|
20
|
+
constructor(
|
|
21
|
+
/**
|
|
22
|
+
* The buffer containing the hash.
|
|
23
|
+
*/
|
|
24
|
+
public buffer: Buffer,
|
|
25
|
+
) {
|
|
26
|
+
if (buffer.length !== BaseHashType.SIZE) {
|
|
27
|
+
throw new Error(`Expected buffer to have length ${BaseHashType.SIZE} but was ${buffer.length}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Returns the raw buffer of the hash.
|
|
33
|
+
* @returns The buffer containing the hash.
|
|
34
|
+
*/
|
|
35
|
+
public toBuffer() {
|
|
36
|
+
return this.buffer;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Creates a HashType from a buffer.
|
|
41
|
+
* @param buffer - The buffer to create from.
|
|
42
|
+
* @returns A new HashType object.
|
|
43
|
+
*/
|
|
44
|
+
public static fromBuffer(buffer: Buffer | BufferReader) {
|
|
45
|
+
const reader = BufferReader.asReader(buffer);
|
|
46
|
+
return new BaseHashType(reader.readBytes(BaseHashType.SIZE));
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Checks if this hash and another hash are equal.
|
|
51
|
+
* @param hash - A hash to compare with.
|
|
52
|
+
* @returns True if the hashes are equal, false otherwise.
|
|
53
|
+
*/
|
|
54
|
+
public equals(hash: BaseHashType): boolean {
|
|
55
|
+
return this.buffer.equals(hash.buffer);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Returns true if this hash is zero.
|
|
60
|
+
* @returns True if this hash is zero.
|
|
61
|
+
*/
|
|
62
|
+
public isZero(): boolean {
|
|
63
|
+
return this.buffer.equals(Buffer.alloc(32, 0));
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Convert this hash to a hex string.
|
|
68
|
+
* @returns The hex string.
|
|
69
|
+
*/
|
|
70
|
+
public toString() {
|
|
71
|
+
return this.buffer.toString('hex');
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Convert this hash to a big int.
|
|
76
|
+
* @returns The big int.
|
|
77
|
+
*/
|
|
78
|
+
public toBigInt() {
|
|
79
|
+
return deserializeBigInt(this.buffer, 0, BaseHashType.SIZE).elem;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Creates a tx hash from a bigint.
|
|
83
|
+
* @param hash - The tx hash as a big int.
|
|
84
|
+
* @returns The HashType.
|
|
85
|
+
*/
|
|
86
|
+
public static fromBigInt(hash: bigint) {
|
|
87
|
+
return new BaseHashType(serializeBigInt(hash, BaseHashType.SIZE));
|
|
88
|
+
}
|
|
89
|
+
public static fromField(hash: Fr) {
|
|
90
|
+
return new BaseHashType(serializeBigInt(hash.toBigInt()));
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Converts this hash from a buffer of 28 bytes.
|
|
95
|
+
* Verifies the input is 28 bytes.
|
|
96
|
+
* @param buffer - The 28 byte buffer to construct from.
|
|
97
|
+
* @returns A HashType created from the input buffer with 4 bytes 0 padding at the front.
|
|
98
|
+
*/
|
|
99
|
+
public static fromBuffer28(buffer: Buffer) {
|
|
100
|
+
if (buffer.length != 28) {
|
|
101
|
+
throw new Error(`Expected HashType input buffer to be 28 bytes`);
|
|
102
|
+
}
|
|
103
|
+
const padded = Buffer.concat([Buffer.alloc(this.SIZE - 28), buffer]);
|
|
104
|
+
return new BaseHashType(padded);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Converts a string into a HashType object.
|
|
109
|
+
* @param str - The TX hash in string format.
|
|
110
|
+
* @returns A new HashType object.
|
|
111
|
+
*/
|
|
112
|
+
public static fromString(str: string): BaseHashType {
|
|
113
|
+
return new BaseHashType(Buffer.from(str, 'hex'));
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Generates a random HashType.
|
|
118
|
+
* @returns A new HashType object.
|
|
119
|
+
*/
|
|
120
|
+
public static random(): BaseHashType {
|
|
121
|
+
return new BaseHashType(Buffer.from(randomBytes(BaseHashType.SIZE)));
|
|
122
|
+
}
|
|
123
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -9,7 +9,7 @@ export * as crypto from './crypto/index.js';
|
|
|
9
9
|
export * as errors from './error/index.js';
|
|
10
10
|
export * as ethAddress from './eth-address/index.js';
|
|
11
11
|
export * as fields from './fields/index.js';
|
|
12
|
-
export * as fifo from './
|
|
12
|
+
export * as fifo from './queue/index.js';
|
|
13
13
|
export * as fs from './fs/index.js';
|
|
14
14
|
export * as jsonRpc from './json-rpc/index.js';
|
|
15
15
|
export * as jsonRpcClient from './json-rpc/client/index.js';
|
|
@@ -28,3 +28,5 @@ export * as url from './url/index.js';
|
|
|
28
28
|
export * as wasm from './wasm/index.js';
|
|
29
29
|
export * as worker from './worker/index.js';
|
|
30
30
|
export * as testing from './testing/index.js';
|
|
31
|
+
export * as config from './config/index.js';
|
|
32
|
+
export * as hash from './hash/index.js';
|
|
@@ -44,4 +44,12 @@ export class RunningPromise {
|
|
|
44
44
|
public isRunning() {
|
|
45
45
|
return this.running;
|
|
46
46
|
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Updates the polling interval. The new interval will take effect after the next poll.
|
|
50
|
+
* @param pollingIntervalMS The polling interval in milliseconds.
|
|
51
|
+
*/
|
|
52
|
+
setPollingIntervalMS(pollingIntervalMS: number) {
|
|
53
|
+
this.pollingIntervalMS = pollingIntervalMS;
|
|
54
|
+
}
|
|
47
55
|
}
|