@aztec/foundation 0.0.1-commit.9d2bcf6d → 0.0.1-commit.9ef841308
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/array/sorted_array.d.ts +6 -1
- package/dest/array/sorted_array.d.ts.map +1 -1
- package/dest/array/sorted_array.js +18 -15
- package/dest/branded-types/slot.d.ts +4 -1
- package/dest/branded-types/slot.d.ts.map +1 -1
- package/dest/branded-types/slot.js +3 -0
- package/dest/buffer/index.d.ts +2 -1
- package/dest/buffer/index.d.ts.map +1 -1
- package/dest/buffer/index.js +1 -0
- package/dest/buffer/utils.d.ts +3 -0
- package/dest/buffer/utils.d.ts.map +1 -0
- package/dest/buffer/utils.js +7 -0
- package/dest/collection/array.d.ts +3 -1
- package/dest/collection/array.d.ts.map +1 -1
- package/dest/collection/array.js +15 -0
- package/dest/collection/index.d.ts +2 -1
- package/dest/collection/index.d.ts.map +1 -1
- package/dest/collection/index.js +1 -0
- package/dest/collection/lru_set.d.ts +35 -0
- package/dest/collection/lru_set.d.ts.map +1 -0
- package/dest/collection/lru_set.js +95 -0
- package/dest/config/env_var.d.ts +2 -2
- package/dest/config/env_var.d.ts.map +1 -1
- package/dest/config/index.d.ts +1 -1
- package/dest/config/index.d.ts.map +1 -1
- package/dest/config/index.js +15 -0
- package/dest/config/network_config.d.ts +19 -1
- package/dest/config/network_config.d.ts.map +1 -1
- package/dest/config/network_config.js +4 -1
- package/dest/config/network_name.d.ts +2 -2
- package/dest/config/network_name.d.ts.map +1 -1
- package/dest/config/network_name.js +2 -0
- package/dest/crypto/poseidon/index.d.ts +1 -1
- package/dest/crypto/poseidon/index.d.ts.map +1 -1
- package/dest/crypto/poseidon/index.js +40 -33
- package/dest/crypto/secp256k1-signer/utils.d.ts +12 -1
- package/dest/crypto/secp256k1-signer/utils.d.ts.map +1 -1
- package/dest/crypto/secp256k1-signer/utils.js +26 -0
- package/dest/curves/bn254/field.d.ts +2 -1
- package/dest/curves/bn254/field.d.ts.map +1 -1
- package/dest/curves/bn254/field.js +5 -2
- package/dest/eth-signature/eth_signature.d.ts +2 -1
- package/dest/eth-signature/eth_signature.d.ts.map +1 -1
- package/dest/eth-signature/eth_signature.js +7 -2
- package/dest/fifo/fifo_frame_reader.d.ts +41 -0
- package/dest/fifo/fifo_frame_reader.d.ts.map +1 -0
- package/dest/fifo/fifo_frame_reader.js +74 -0
- package/dest/fifo/index.d.ts +2 -0
- package/dest/fifo/index.d.ts.map +1 -0
- package/dest/fifo/index.js +1 -0
- package/dest/jest/setup.js +24 -0
- package/dest/json-rpc/client/safe_json_rpc_client.d.ts +2 -1
- package/dest/json-rpc/client/safe_json_rpc_client.d.ts.map +1 -1
- package/dest/json-rpc/client/safe_json_rpc_client.js +1 -1
- package/dest/json-rpc/server/api_key_auth.d.ts +19 -0
- package/dest/json-rpc/server/api_key_auth.d.ts.map +1 -0
- package/dest/json-rpc/server/api_key_auth.js +57 -0
- package/dest/json-rpc/server/index.d.ts +2 -1
- package/dest/json-rpc/server/index.d.ts.map +1 -1
- package/dest/json-rpc/server/index.js +1 -0
- package/dest/log/bigint-utils.d.ts +5 -0
- package/dest/log/bigint-utils.d.ts.map +1 -0
- package/dest/log/bigint-utils.js +21 -0
- package/dest/log/gcloud-logger-config.d.ts +1 -1
- package/dest/log/gcloud-logger-config.d.ts.map +1 -1
- package/dest/log/gcloud-logger-config.js +3 -0
- package/dest/log/log-filters.d.ts +17 -4
- package/dest/log/log-filters.d.ts.map +1 -1
- package/dest/log/log-filters.js +26 -12
- package/dest/log/pino-logger.d.ts +1 -1
- package/dest/log/pino-logger.d.ts.map +1 -1
- package/dest/log/pino-logger.js +6 -2
- package/dest/queue/base_memory_queue.d.ts +2 -2
- package/dest/queue/base_memory_queue.d.ts.map +1 -1
- package/dest/schemas/api.d.ts +2 -2
- package/dest/schemas/api.d.ts.map +1 -1
- package/dest/serialize/buffer_reader.d.ts +8 -1
- package/dest/serialize/buffer_reader.d.ts.map +1 -1
- package/dest/serialize/buffer_reader.js +13 -0
- package/dest/serialize/serialize.d.ts +19 -1
- package/dest/serialize/serialize.d.ts.map +1 -1
- package/dest/serialize/serialize.js +31 -0
- package/dest/sleep/index.d.ts +2 -1
- package/dest/sleep/index.d.ts.map +1 -1
- package/dest/sleep/index.js +10 -1
- package/dest/timer/date.d.ts +25 -1
- package/dest/timer/date.d.ts.map +1 -1
- package/dest/timer/date.js +33 -0
- package/dest/transport/transport_client.js +2 -2
- package/dest/trees/indexed_merkle_tree_calculator.d.ts +1 -1
- package/dest/trees/indexed_merkle_tree_calculator.d.ts.map +1 -1
- package/dest/trees/indexed_merkle_tree_calculator.js +5 -1
- package/package.json +23 -2
- package/src/array/sorted_array.ts +22 -17
- package/src/branded-types/slot.ts +5 -0
- package/src/buffer/index.ts +1 -0
- package/src/buffer/utils.ts +8 -0
- package/src/collection/array.ts +14 -0
- package/src/collection/index.ts +1 -0
- package/src/collection/lru_set.ts +115 -0
- package/src/config/env_var.ts +47 -9
- package/src/config/index.ts +15 -0
- package/src/config/network_config.ts +3 -0
- package/src/config/network_name.ts +4 -1
- package/src/crypto/poseidon/index.ts +42 -34
- package/src/crypto/secp256k1-signer/utils.ts +32 -0
- package/src/curves/bn254/field.ts +6 -2
- package/src/eth-signature/eth_signature.ts +7 -1
- package/src/fifo/fifo_frame_reader.ts +98 -0
- package/src/fifo/index.ts +1 -0
- package/src/jest/setup.mjs +27 -0
- package/src/json-rpc/client/safe_json_rpc_client.ts +2 -0
- package/src/json-rpc/server/api_key_auth.ts +63 -0
- package/src/json-rpc/server/index.ts +1 -0
- package/src/log/bigint-utils.ts +25 -0
- package/src/log/gcloud-logger-config.ts +5 -0
- package/src/log/log-filters.ts +29 -11
- package/src/log/pino-logger.ts +6 -2
- package/src/queue/base_memory_queue.ts +1 -1
- package/src/schemas/api.ts +4 -1
- package/src/serialize/buffer_reader.ts +15 -0
- package/src/serialize/serialize.ts +32 -0
- package/src/sleep/index.ts +10 -1
- package/src/timer/date.ts +48 -0
- package/src/transport/transport_client.ts +2 -2
- package/src/trees/indexed_merkle_tree_calculator.ts +5 -1
- package/dest/crypto/serialize.d.ts +0 -51
- package/dest/crypto/serialize.d.ts.map +0 -1
- package/dest/crypto/serialize.js +0 -68
- package/src/crypto/serialize.ts +0 -85
package/dest/sleep/index.js
CHANGED
|
@@ -20,6 +20,7 @@ import { InterruptError } from '../error/index.js';
|
|
|
20
20
|
* setTimeout(() =\> sleeper.interrupt(true), 1500); // Interrupt the sleep after 1.5 seconds
|
|
21
21
|
*/ export class InterruptibleSleep {
|
|
22
22
|
interrupts = [];
|
|
23
|
+
timeoutIds = [];
|
|
23
24
|
/**
|
|
24
25
|
* Sleep for a specified amount of time in milliseconds.
|
|
25
26
|
* The sleep function will pause the execution of the current async function
|
|
@@ -33,11 +34,17 @@ import { InterruptError } from '../error/index.js';
|
|
|
33
34
|
interruptResolve = resolve;
|
|
34
35
|
this.interrupts.push(resolve);
|
|
35
36
|
});
|
|
36
|
-
|
|
37
|
+
let timeoutId;
|
|
38
|
+
const timeoutPromise = new Promise((resolve)=>{
|
|
39
|
+
timeoutId = setTimeout(()=>resolve(false), ms);
|
|
40
|
+
this.timeoutIds.push(timeoutId);
|
|
41
|
+
});
|
|
37
42
|
const shouldThrow = await Promise.race([
|
|
38
43
|
interruptPromise,
|
|
39
44
|
timeoutPromise
|
|
40
45
|
]);
|
|
46
|
+
clearTimeout(timeoutId);
|
|
47
|
+
this.timeoutIds = this.timeoutIds.filter((id)=>id !== timeoutId);
|
|
41
48
|
this.interrupts = this.interrupts.filter((res)=>res !== interruptResolve);
|
|
42
49
|
if (shouldThrow) {
|
|
43
50
|
throw new InterruptError('Interrupted.');
|
|
@@ -52,6 +59,8 @@ import { InterruptError } from '../error/index.js';
|
|
|
52
59
|
*/ interrupt(sleepShouldThrow = false) {
|
|
53
60
|
this.interrupts.forEach((resolve)=>resolve(sleepShouldThrow));
|
|
54
61
|
this.interrupts = [];
|
|
62
|
+
this.timeoutIds.forEach((id)=>clearTimeout(id));
|
|
63
|
+
this.timeoutIds = [];
|
|
55
64
|
}
|
|
56
65
|
}
|
|
57
66
|
/**
|
package/dest/timer/date.d.ts
CHANGED
|
@@ -11,5 +11,29 @@ export declare class TestDateProvider extends DateProvider {
|
|
|
11
11
|
constructor(logger?: import("../log/pino-logger.js").Logger);
|
|
12
12
|
now(): number;
|
|
13
13
|
setTime(timeMs: number): void;
|
|
14
|
+
/** Resets the time back to real time (offset = 0). */
|
|
15
|
+
reset(): void;
|
|
16
|
+
/** Advances the time by the given number of seconds. */
|
|
17
|
+
advanceTime(seconds: number): void;
|
|
14
18
|
}
|
|
15
|
-
|
|
19
|
+
/**
|
|
20
|
+
* A date provider for tests that only advances time via explicit advanceTime() calls.
|
|
21
|
+
* Unlike TestDateProvider, this does NOT track real time progression - time is completely
|
|
22
|
+
* frozen until explicitly advanced. This eliminates flakiness from tests taking
|
|
23
|
+
* varying amounts of real time to execute.
|
|
24
|
+
*/
|
|
25
|
+
export declare class ManualDateProvider extends DateProvider {
|
|
26
|
+
private currentTimeMs;
|
|
27
|
+
/**
|
|
28
|
+
* @param initialTimeMs - Initial time in milliseconds. Defaults to a round timestamp for easy visualization.
|
|
29
|
+
*/
|
|
30
|
+
constructor(initialTimeMs?: number);
|
|
31
|
+
now(): number;
|
|
32
|
+
/** Sets the current time to the given timestamp in milliseconds. */
|
|
33
|
+
setTime(timeMs: number): void;
|
|
34
|
+
/** Advances the time by the given number of seconds. */
|
|
35
|
+
advanceTime(seconds: number): void;
|
|
36
|
+
/** Advances the time by the given number of milliseconds. */
|
|
37
|
+
advanceTimeMs(ms: number): void;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RpbWVyL2RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsZ0NBQWdDO0FBQ2hDLHFCQUFhLFlBQVk7SUFDaEIsR0FBRyxJQUFJLE1BQU0sQ0FFbkI7SUFFTSxZQUFZLElBQUksTUFBTSxDQUU1QjtJQUVNLFNBQVMsSUFBSSxJQUFJLENBRXZCO0NBQ0Y7QUFFRCwwREFBMEQ7QUFDMUQscUJBQWEsZ0JBQWlCLFNBQVEsWUFBWTtJQUdwQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU07SUFGbkMsT0FBTyxDQUFDLE1BQU0sQ0FBSztJQUVuQixZQUE2QixNQUFNLHlDQUFnRCxFQUVsRjtJQUVlLEdBQUcsSUFBSSxNQUFNLENBRTVCO0lBRU0sT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLFFBRzVCO0lBRUQsc0RBQXNEO0lBQy9DLEtBQUssU0FHWDtJQUVELHdEQUF3RDtJQUNqRCxXQUFXLENBQUMsT0FBTyxFQUFFLE1BQU0sUUFFakM7Q0FDRjtBQUVEOzs7OztHQUtHO0FBQ0gscUJBQWEsa0JBQW1CLFNBQVEsWUFBWTtJQUNsRCxPQUFPLENBQUMsYUFBYSxDQUFTO0lBRTlCOztPQUVHO0lBQ0gsWUFBWSxhQUFhLEdBQUUsTUFBc0MsRUFHaEU7SUFFZSxHQUFHLElBQUksTUFBTSxDQUU1QjtJQUVELG9FQUFvRTtJQUM3RCxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sUUFFNUI7SUFFRCx3REFBd0Q7SUFDakQsV0FBVyxDQUFDLE9BQU8sRUFBRSxNQUFNLFFBRWpDO0lBRUQsNkRBQTZEO0lBQ3RELGFBQWEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxRQUU5QjtDQUNGIn0=
|
package/dest/timer/date.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/timer/date.ts"],"names":[],"mappings":"AAEA,gCAAgC;AAChC,qBAAa,YAAY;IAChB,GAAG,IAAI,MAAM,CAEnB;IAEM,YAAY,IAAI,MAAM,CAE5B;IAEM,SAAS,IAAI,IAAI,CAEvB;CACF;AAED,0DAA0D;AAC1D,qBAAa,gBAAiB,SAAQ,YAAY;IAGpC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,MAAM,CAAK;IAEnB,YAA6B,MAAM,yCAAgD,EAElF;IAEe,GAAG,IAAI,MAAM,CAE5B;IAEM,OAAO,CAAC,MAAM,EAAE,MAAM,QAG5B;CACF"}
|
|
1
|
+
{"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/timer/date.ts"],"names":[],"mappings":"AAEA,gCAAgC;AAChC,qBAAa,YAAY;IAChB,GAAG,IAAI,MAAM,CAEnB;IAEM,YAAY,IAAI,MAAM,CAE5B;IAEM,SAAS,IAAI,IAAI,CAEvB;CACF;AAED,0DAA0D;AAC1D,qBAAa,gBAAiB,SAAQ,YAAY;IAGpC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,MAAM,CAAK;IAEnB,YAA6B,MAAM,yCAAgD,EAElF;IAEe,GAAG,IAAI,MAAM,CAE5B;IAEM,OAAO,CAAC,MAAM,EAAE,MAAM,QAG5B;IAED,sDAAsD;IAC/C,KAAK,SAGX;IAED,wDAAwD;IACjD,WAAW,CAAC,OAAO,EAAE,MAAM,QAEjC;CACF;AAED;;;;;GAKG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,OAAO,CAAC,aAAa,CAAS;IAE9B;;OAEG;IACH,YAAY,aAAa,GAAE,MAAsC,EAGhE;IAEe,GAAG,IAAI,MAAM,CAE5B;IAED,oEAAoE;IAC7D,OAAO,CAAC,MAAM,EAAE,MAAM,QAE5B;IAED,wDAAwD;IACjD,WAAW,CAAC,OAAO,EAAE,MAAM,QAEjC;IAED,6DAA6D;IACtD,aAAa,CAAC,EAAE,EAAE,MAAM,QAE9B;CACF"}
|
package/dest/timer/date.js
CHANGED
|
@@ -26,4 +26,37 @@ import { createLogger } from '../log/pino-logger.js';
|
|
|
26
26
|
timeMs
|
|
27
27
|
});
|
|
28
28
|
}
|
|
29
|
+
/** Resets the time back to real time (offset = 0). */ reset() {
|
|
30
|
+
this.offset = 0;
|
|
31
|
+
this.logger.warn('Time reset to real time');
|
|
32
|
+
}
|
|
33
|
+
/** Advances the time by the given number of seconds. */ advanceTime(seconds) {
|
|
34
|
+
this.offset += seconds * 1000;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* A date provider for tests that only advances time via explicit advanceTime() calls.
|
|
39
|
+
* Unlike TestDateProvider, this does NOT track real time progression - time is completely
|
|
40
|
+
* frozen until explicitly advanced. This eliminates flakiness from tests taking
|
|
41
|
+
* varying amounts of real time to execute.
|
|
42
|
+
*/ export class ManualDateProvider extends DateProvider {
|
|
43
|
+
currentTimeMs;
|
|
44
|
+
/**
|
|
45
|
+
* @param initialTimeMs - Initial time in milliseconds. Defaults to a round timestamp for easy visualization.
|
|
46
|
+
*/ constructor(initialTimeMs = Date.UTC(2025, 0, 1, 0, 0, 0)){
|
|
47
|
+
super();
|
|
48
|
+
this.currentTimeMs = initialTimeMs;
|
|
49
|
+
}
|
|
50
|
+
now() {
|
|
51
|
+
return this.currentTimeMs;
|
|
52
|
+
}
|
|
53
|
+
/** Sets the current time to the given timestamp in milliseconds. */ setTime(timeMs) {
|
|
54
|
+
this.currentTimeMs = timeMs;
|
|
55
|
+
}
|
|
56
|
+
/** Advances the time by the given number of seconds. */ advanceTime(seconds) {
|
|
57
|
+
this.currentTimeMs += seconds * 1000;
|
|
58
|
+
}
|
|
59
|
+
/** Advances the time by the given number of milliseconds. */ advanceTimeMs(ms) {
|
|
60
|
+
this.currentTimeMs += ms;
|
|
61
|
+
}
|
|
29
62
|
}
|
|
@@ -55,7 +55,7 @@ const log = createLogger('foundation:transport_client');
|
|
|
55
55
|
msgId,
|
|
56
56
|
payload
|
|
57
57
|
};
|
|
58
|
-
log.
|
|
58
|
+
log.trace(format(`->`, msg));
|
|
59
59
|
return new Promise((resolve, reject)=>{
|
|
60
60
|
this.pendingRequests.push({
|
|
61
61
|
resolve,
|
|
@@ -77,7 +77,7 @@ const log = createLogger('foundation:transport_client');
|
|
|
77
77
|
this.close();
|
|
78
78
|
return;
|
|
79
79
|
}
|
|
80
|
-
log.
|
|
80
|
+
log.trace(format(`<-`, msg));
|
|
81
81
|
if (isEventMessage(msg)) {
|
|
82
82
|
this.emit('event_msg', msg.payload);
|
|
83
83
|
return;
|
|
@@ -18,4 +18,4 @@ export declare class IndexedMerkleTreeCalculator<T extends IndexedTreeLeafPreima
|
|
|
18
18
|
computeTreeRoot(leaves?: Buffer[]): Promise<Buffer>;
|
|
19
19
|
}
|
|
20
20
|
export {};
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXhlZF9tZXJrbGVfdHJlZV9jYWxjdWxhdG9yLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHJlZXMvaW5kZXhlZF9tZXJrbGVfdHJlZV9jYWxjdWxhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sS0FBSyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdkUsT0FBTyxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTdELFVBQVUsbUJBQW1CLENBQUMsQ0FBQyxTQUFTLHVCQUF1QjtJQUM3RCxVQUFVLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUM7Q0FDL0I7QUFFRDs7R0FFRztBQUNILHFCQUFhLDJCQUEyQixDQUFDLENBQUMsU0FBUyx1QkFBdUIsRUFBRSxDQUFDLFNBQVMsTUFBTTtJQUV4RixPQUFPLENBQUMsTUFBTTtJQUNkLE9BQU8sQ0FBQyxVQUFVO0lBQ2xCLE9BQU8sQ0FBQyxNQUFNO0lBQ2QsT0FBTyxDQUFDLE9BQU87SUFKakIsT0FBTyxlQUtIO0lBRUosT0FBYSxNQUFNLENBQUMsQ0FBQyxTQUFTLHVCQUF1QixFQUFFLENBQUMsU0FBUyxNQUFNLEVBQ3JFLE1BQU0sRUFBRSxDQUFDLEVBQ1QsTUFBTSxFQUFFLFdBQVcsRUFDbkIsT0FBTyxFQUFFLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxFQUMvQixRQUFRLHNCQUFtQiw4Q0FPNUI7SUFFSyxXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0F5Q3BFO0lBRUssZUFBZSxDQUFDLE1BQU0sR0FBRSxNQUFNLEVBQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBa0I1RDtDQUNGIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexed_merkle_tree_calculator.d.ts","sourceRoot":"","sources":["../../src/trees/indexed_merkle_tree_calculator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,UAAU,mBAAmB,CAAC,CAAC,SAAS,uBAAuB;IAC7D,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,qBAAa,2BAA2B,CAAC,CAAC,SAAS,uBAAuB,EAAE,CAAC,SAAS,MAAM;IAExF,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IAJjB,OAAO,eAKH;IAEJ,OAAa,MAAM,CAAC,CAAC,SAAS,uBAAuB,EAAE,CAAC,SAAS,MAAM,EACrE,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAC/B,QAAQ,sBAAmB,8CAO5B;IAEK,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"indexed_merkle_tree_calculator.d.ts","sourceRoot":"","sources":["../../src/trees/indexed_merkle_tree_calculator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,UAAU,mBAAmB,CAAC,CAAC,SAAS,uBAAuB;IAC7D,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,qBAAa,2BAA2B,CAAC,CAAC,SAAS,uBAAuB,EAAE,CAAC,SAAS,MAAM;IAExF,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IAJjB,OAAO,eAKH;IAEJ,OAAa,MAAM,CAAC,CAAC,SAAS,uBAAuB,EAAE,CAAC,SAAS,MAAM,EACrE,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAC/B,QAAQ,sBAAmB,8CAO5B;IAEK,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAyCpE;IAEK,eAAe,CAAC,MAAM,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAkB5D;CACF"}
|
|
@@ -34,7 +34,11 @@ import { IndexedMerkleTree } from './indexed_merkle_tree.js';
|
|
|
34
34
|
const sorted = values.map((v, i)=>({
|
|
35
35
|
value: v,
|
|
36
36
|
index: i
|
|
37
|
-
})).sort((a, b)=>
|
|
37
|
+
})).sort((a, b)=>{
|
|
38
|
+
const aBigInt = toBigIntBE(a.value);
|
|
39
|
+
const bBigInt = toBigIntBE(b.value);
|
|
40
|
+
return aBigInt < bBigInt ? 1 : aBigInt > bBigInt ? -1 : 0;
|
|
41
|
+
});
|
|
38
42
|
const indexedLeaves = sorted.map((item, i)=>({
|
|
39
43
|
leaf: this.factory.fromBuffer(Buffer.concat([
|
|
40
44
|
item.value,
|
package/package.json
CHANGED
|
@@ -1,9 +1,29 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/foundation",
|
|
3
|
-
"version": "0.0.1-commit.
|
|
3
|
+
"version": "0.0.1-commit.9ef841308",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dest/index.js",
|
|
6
6
|
"types": "./dest/index.d.ts",
|
|
7
|
+
"typedocOptions": {
|
|
8
|
+
"entryPoints": [
|
|
9
|
+
"./src/buffer/index.ts",
|
|
10
|
+
"./src/collection/index.ts",
|
|
11
|
+
"./src/config/index.ts",
|
|
12
|
+
"./src/crypto/random/index.ts",
|
|
13
|
+
"./src/error/index.ts",
|
|
14
|
+
"./src/eth-address/index.ts",
|
|
15
|
+
"./src/json-rpc/index.ts",
|
|
16
|
+
"./src/log/index.ts",
|
|
17
|
+
"./src/retry/index.ts",
|
|
18
|
+
"./src/schemas/index.ts",
|
|
19
|
+
"./src/serialize/index.ts",
|
|
20
|
+
"./src/sleep/index.ts",
|
|
21
|
+
"./src/timer/index.ts",
|
|
22
|
+
"./src/types/index.ts"
|
|
23
|
+
],
|
|
24
|
+
"name": "Foundation",
|
|
25
|
+
"tsconfig": "./tsconfig.json"
|
|
26
|
+
},
|
|
7
27
|
"exports": {
|
|
8
28
|
"./eslint": "./eslint.config.js",
|
|
9
29
|
"./eslint.docs": "./eslint.config.docs.js",
|
|
@@ -41,6 +61,7 @@
|
|
|
41
61
|
"./eth-address": "./dest/eth-address/index.js",
|
|
42
62
|
"./eth-signature": "./dest/eth-signature/index.js",
|
|
43
63
|
"./queue": "./dest/queue/index.js",
|
|
64
|
+
"./fifo": "./dest/fifo/index.js",
|
|
44
65
|
"./fs": "./dest/fs/index.js",
|
|
45
66
|
"./buffer": "./dest/buffer/index.js",
|
|
46
67
|
"./json-rpc": "./dest/json-rpc/index.js",
|
|
@@ -124,7 +145,7 @@
|
|
|
124
145
|
"testEnvironment": "../../foundation/src/jest/env.mjs"
|
|
125
146
|
},
|
|
126
147
|
"dependencies": {
|
|
127
|
-
"@aztec/bb.js": "0.0.1-commit.
|
|
148
|
+
"@aztec/bb.js": "0.0.1-commit.9ef841308",
|
|
128
149
|
"@koa/cors": "^5.0.0",
|
|
129
150
|
"@noble/curves": "=1.7.0",
|
|
130
151
|
"@noble/hashes": "^1.6.1",
|
|
@@ -21,34 +21,39 @@ export function dedupeSortedArray<T>(arr: T[], cmp: Cmp<T>): void {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
export function insertIntoSortedArray<T>(arr: T[], item: T, cmp: Cmp<T>, allowDuplicates = true): boolean {
|
|
24
|
+
const index = findInsertionIndexInSortedArray(arr, item, cmp);
|
|
25
|
+
|
|
26
|
+
if (!allowDuplicates) {
|
|
27
|
+
// Check element before insertion point (upper bound returns index after equal elements)
|
|
28
|
+
if (index > 0 && cmp(arr[index - 1], item) === 0) {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
arr.splice(index, 0, item);
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Finds the index where needle would be inserted to maintain sorted order.
|
|
39
|
+
* Returns the count of elements less than or equal to needle.
|
|
40
|
+
*/
|
|
41
|
+
export function findInsertionIndexInSortedArray<T, N>(values: T[], needle: N, cmp: (a: T, b: N) => number): number {
|
|
24
42
|
let start = 0;
|
|
25
|
-
let end =
|
|
43
|
+
let end = values.length;
|
|
26
44
|
|
|
27
45
|
while (start < end) {
|
|
28
46
|
const mid = start + (((end - start) / 2) | 0);
|
|
29
|
-
const comparison = cmp(
|
|
47
|
+
const comparison = cmp(values[mid], needle);
|
|
30
48
|
|
|
31
|
-
if (comparison
|
|
49
|
+
if (comparison <= 0) {
|
|
32
50
|
start = mid + 1;
|
|
33
51
|
} else {
|
|
34
52
|
end = mid;
|
|
35
53
|
}
|
|
36
54
|
}
|
|
37
55
|
|
|
38
|
-
|
|
39
|
-
// Check element at insertion point
|
|
40
|
-
if (start < arr.length && cmp(arr[start], item) === 0) {
|
|
41
|
-
return false;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
// Check element before insertion point (in case we landed after duplicates)
|
|
45
|
-
if (start > 0 && cmp(arr[start - 1], item) === 0) {
|
|
46
|
-
return false;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
arr.splice(start, 0, item);
|
|
51
|
-
return true;
|
|
56
|
+
return start;
|
|
52
57
|
}
|
|
53
58
|
|
|
54
59
|
export function findIndexInSortedArray<T, N>(values: T[], needle: N, cmp: (a: T, b: N) => number): number {
|
|
@@ -73,6 +73,11 @@ SlotNumber.isValid = function (value: unknown): value is SlotNumber {
|
|
|
73
73
|
return typeof value === 'number' && Number.isInteger(value) && value >= 0;
|
|
74
74
|
};
|
|
75
75
|
|
|
76
|
+
/** Increments a SlotNumber by a given value. */
|
|
77
|
+
SlotNumber.add = function (sn: SlotNumber, increment: number): SlotNumber {
|
|
78
|
+
return SlotNumber(sn + increment);
|
|
79
|
+
};
|
|
80
|
+
|
|
76
81
|
/**
|
|
77
82
|
* The zero slot value.
|
|
78
83
|
*/
|
package/src/buffer/index.ts
CHANGED
package/src/collection/array.ts
CHANGED
|
@@ -315,3 +315,17 @@ export function partition<T>(items: T[], predicate: (item: T) => boolean): [T[],
|
|
|
315
315
|
}
|
|
316
316
|
return [pass, fail];
|
|
317
317
|
}
|
|
318
|
+
|
|
319
|
+
/** Partitions the given iterable into two arrays based on the predicate. */
|
|
320
|
+
export async function partitionAsync<T>(items: T[], predicate: (item: T) => Promise<boolean>): Promise<[T[], T[]]> {
|
|
321
|
+
const pass: T[] = [];
|
|
322
|
+
const fail: T[] = [];
|
|
323
|
+
for (const item of items) {
|
|
324
|
+
if (await predicate(item)) {
|
|
325
|
+
pass.push(item);
|
|
326
|
+
} else {
|
|
327
|
+
fail.push(item);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
return [pass, fail];
|
|
331
|
+
}
|
package/src/collection/index.ts
CHANGED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/** Node in a doubly-linked list used by {@link LruSet}. */
|
|
2
|
+
type LruNode<T> = {
|
|
3
|
+
value: T;
|
|
4
|
+
prev: LruNode<T> | undefined;
|
|
5
|
+
next: LruNode<T> | undefined;
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* A bounded set with Least Recently Used (LRU) eviction.
|
|
10
|
+
* Both {@link has} and {@link add} count as an access and refresh the entry's
|
|
11
|
+
* recency, so items that are actively checked stay in the set longest.
|
|
12
|
+
*
|
|
13
|
+
* Uses a doubly-linked list for O(1) ordering and a Map for O(1) lookup.
|
|
14
|
+
* Head = least recent, tail = most recent.
|
|
15
|
+
*/
|
|
16
|
+
export class LruSet<T> {
|
|
17
|
+
/** Map from value to its linked-list node for O(1) lookup. */
|
|
18
|
+
private readonly map = new Map<T, LruNode<T>>();
|
|
19
|
+
private head: LruNode<T> | undefined;
|
|
20
|
+
private tail: LruNode<T> | undefined;
|
|
21
|
+
|
|
22
|
+
constructor(private readonly maxSize: number) {
|
|
23
|
+
if (maxSize < 1) {
|
|
24
|
+
throw new Error('LruSet maxSize must be at least 1');
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** Number of entries in the set. */
|
|
29
|
+
get size(): number {
|
|
30
|
+
return this.map.size;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Returns true if the item is in the set.
|
|
35
|
+
* Refreshes the item's recency so it becomes the most recently used.
|
|
36
|
+
*/
|
|
37
|
+
has(item: T): boolean {
|
|
38
|
+
const node = this.map.get(item);
|
|
39
|
+
if (!node) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
this.moveToTail(node);
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Adds an item to the set. If the item already exists, refreshes its recency.
|
|
48
|
+
* If the set is at capacity, evicts the least recently used item.
|
|
49
|
+
*/
|
|
50
|
+
add(item: T): void {
|
|
51
|
+
const existing = this.map.get(item);
|
|
52
|
+
if (existing) {
|
|
53
|
+
this.moveToTail(existing);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (this.map.size >= this.maxSize) {
|
|
58
|
+
this.evictHead();
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const node: LruNode<T> = { value: item, prev: this.tail, next: undefined };
|
|
62
|
+
if (this.tail) {
|
|
63
|
+
this.tail.next = node;
|
|
64
|
+
} else {
|
|
65
|
+
this.head = node;
|
|
66
|
+
}
|
|
67
|
+
this.tail = node;
|
|
68
|
+
this.map.set(item, node);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/** Removes all entries from the set. */
|
|
72
|
+
clear(): void {
|
|
73
|
+
this.map.clear();
|
|
74
|
+
this.head = undefined;
|
|
75
|
+
this.tail = undefined;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/** Unlinks a node from its current position and relinks it at the tail. */
|
|
79
|
+
private moveToTail(node: LruNode<T>): void {
|
|
80
|
+
if (node === this.tail) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Unlink
|
|
85
|
+
if (node.prev) {
|
|
86
|
+
node.prev.next = node.next;
|
|
87
|
+
} else {
|
|
88
|
+
this.head = node.next;
|
|
89
|
+
}
|
|
90
|
+
if (node.next) {
|
|
91
|
+
node.next.prev = node.prev;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// Relink at tail
|
|
95
|
+
node.prev = this.tail;
|
|
96
|
+
node.next = undefined;
|
|
97
|
+
if (this.tail) {
|
|
98
|
+
this.tail.next = node;
|
|
99
|
+
}
|
|
100
|
+
this.tail = node;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/** Evicts the head (least recently used) node. */
|
|
104
|
+
private evictHead(): void {
|
|
105
|
+
const oldHead = this.head!;
|
|
106
|
+
this.map.delete(oldHead.value);
|
|
107
|
+
|
|
108
|
+
this.head = oldHead.next;
|
|
109
|
+
if (this.head) {
|
|
110
|
+
this.head.prev = undefined;
|
|
111
|
+
} else {
|
|
112
|
+
this.tail = undefined;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
package/src/config/env_var.ts
CHANGED
|
@@ -12,6 +12,9 @@ export type EnvVar =
|
|
|
12
12
|
| 'ARCHIVER_VIEM_POLLING_INTERVAL_MS'
|
|
13
13
|
| 'ARCHIVER_BATCH_SIZE'
|
|
14
14
|
| 'AZTEC_ADMIN_PORT'
|
|
15
|
+
| 'AZTEC_ADMIN_API_KEY_HASH'
|
|
16
|
+
| 'AZTEC_DISABLE_ADMIN_API_KEY'
|
|
17
|
+
| 'AZTEC_RESET_ADMIN_API_KEY'
|
|
15
18
|
| 'AZTEC_NODE_ADMIN_URL'
|
|
16
19
|
| 'AZTEC_NODE_URL'
|
|
17
20
|
| 'AZTEC_PORT'
|
|
@@ -20,6 +23,8 @@ export type EnvVar =
|
|
|
20
23
|
| 'BB_WORKING_DIRECTORY'
|
|
21
24
|
| 'BB_NUM_IVC_VERIFIERS'
|
|
22
25
|
| 'BB_IVC_CONCURRENCY'
|
|
26
|
+
| 'BB_CHONK_VERIFY_MAX_BATCH'
|
|
27
|
+
| 'BB_CHONK_VERIFY_BATCH_CONCURRENCY'
|
|
23
28
|
| 'BOOTSTRAP_NODES'
|
|
24
29
|
| 'BLOB_ARCHIVE_API_URL'
|
|
25
30
|
| 'BLOB_FILE_STORE_URLS'
|
|
@@ -47,7 +52,10 @@ export type EnvVar =
|
|
|
47
52
|
| 'BOT_TX_MINED_WAIT_SECONDS'
|
|
48
53
|
| 'BOT_MAX_CONSECUTIVE_ERRORS'
|
|
49
54
|
| 'BOT_STOP_WHEN_UNHEALTHY'
|
|
50
|
-
| '
|
|
55
|
+
| 'BOT_MODE'
|
|
56
|
+
| 'BOT_L2_TO_L1_MESSAGES_PER_TX'
|
|
57
|
+
| 'BOT_L1_TO_L2_SEED_COUNT'
|
|
58
|
+
| 'BOT_L1_TO_L2_SEED_INTERVAL'
|
|
51
59
|
| 'COINBASE'
|
|
52
60
|
| 'CRS_PATH'
|
|
53
61
|
| 'DATA_DIRECTORY'
|
|
@@ -56,6 +64,7 @@ export type EnvVar =
|
|
|
56
64
|
| 'BLOB_SINK_MAP_SIZE_KB'
|
|
57
65
|
| 'P2P_STORE_MAP_SIZE_KB'
|
|
58
66
|
| 'PROVER_BROKER_STORE_MAP_SIZE_KB'
|
|
67
|
+
| 'SIGNING_PROTECTION_MAP_SIZE_KB'
|
|
59
68
|
| 'WS_DB_MAP_SIZE_KB'
|
|
60
69
|
| 'ARCHIVE_TREE_MAP_SIZE_KB'
|
|
61
70
|
| 'NULLIFIER_TREE_MAP_SIZE_KB'
|
|
@@ -64,6 +73,7 @@ export type EnvVar =
|
|
|
64
73
|
| 'PUBLIC_DATA_TREE_MAP_SIZE_KB'
|
|
65
74
|
| 'DEBUG'
|
|
66
75
|
| 'DEBUG_P2P_DISABLE_COLOCATION_PENALTY'
|
|
76
|
+
| 'ENABLE_PROVER_NODE'
|
|
67
77
|
| 'ETHEREUM_HOSTS'
|
|
68
78
|
| 'ETHEREUM_DEBUG_HOSTS'
|
|
69
79
|
| 'ETHEREUM_ALLOW_NO_DEBUG_HOSTS'
|
|
@@ -73,8 +83,10 @@ export type EnvVar =
|
|
|
73
83
|
| 'KEY_STORE_DIRECTORY'
|
|
74
84
|
| 'L1_CHAIN_ID'
|
|
75
85
|
| 'L1_CONSENSUS_HOST_URLS'
|
|
86
|
+
| 'ETHEREUM_HTTP_TIMEOUT_MS'
|
|
76
87
|
| 'L1_CONSENSUS_HOST_API_KEYS'
|
|
77
88
|
| 'L1_CONSENSUS_HOST_API_KEY_HEADERS'
|
|
89
|
+
| 'L1_TX_FAILED_STORE'
|
|
78
90
|
| 'LOG_JSON'
|
|
79
91
|
| 'LOG_MULTILINE'
|
|
80
92
|
| 'LOG_NO_COLOR_PER_ACTOR'
|
|
@@ -100,6 +112,7 @@ export type EnvVar =
|
|
|
100
112
|
| 'P2P_BATCH_TX_REQUESTER_TX_BATCH_SIZE'
|
|
101
113
|
| 'P2P_BATCH_TX_REQUESTER_BAD_PEER_THRESHOLD'
|
|
102
114
|
| 'P2P_BLOCK_CHECK_INTERVAL_MS'
|
|
115
|
+
| 'P2P_SLOT_CHECK_INTERVAL_MS'
|
|
103
116
|
| 'P2P_BLOCK_REQUEST_BATCH_SIZE'
|
|
104
117
|
| 'P2P_BOOTSTRAP_NODE_ENR_VERSION_CHECK'
|
|
105
118
|
| 'P2P_BOOTSTRAP_NODES_AS_FULL_PEERS'
|
|
@@ -120,6 +133,7 @@ export type EnvVar =
|
|
|
120
133
|
| 'P2P_L2_QUEUE_SIZE'
|
|
121
134
|
| 'P2P_MAX_PEERS'
|
|
122
135
|
| 'P2P_PEER_CHECK_INTERVAL_MS'
|
|
136
|
+
| 'P2P_PEER_FAILED_BAN_TIME_MS'
|
|
123
137
|
| 'P2P_PEER_PENALTY_VALUES'
|
|
124
138
|
| 'P2P_QUERY_FOR_IP'
|
|
125
139
|
| 'P2P_REQRESP_INDIVIDUAL_REQUEST_TIMEOUT_MS'
|
|
@@ -140,9 +154,10 @@ export type EnvVar =
|
|
|
140
154
|
| 'P2P_PREFERRED_PEERS'
|
|
141
155
|
| 'P2P_MAX_PENDING_TX_COUNT'
|
|
142
156
|
| 'P2P_SEEN_MSG_CACHE_SIZE'
|
|
143
|
-
| 'P2P_DROP_TX'
|
|
144
157
|
| 'P2P_DROP_TX_CHANCE'
|
|
145
158
|
| 'P2P_TX_POOL_DELETE_TXS_AFTER_REORG'
|
|
159
|
+
| 'P2P_MIN_TX_POOL_AGE_MS'
|
|
160
|
+
| 'P2P_RPC_PRICE_BUMP_PERCENTAGE'
|
|
146
161
|
| 'DEBUG_P2P_INSTRUMENT_MESSAGES'
|
|
147
162
|
| 'PEER_ID_PRIVATE_KEY'
|
|
148
163
|
| 'PEER_ID_PRIVATE_KEY_PATH'
|
|
@@ -158,6 +173,7 @@ export type EnvVar =
|
|
|
158
173
|
| 'PROVER_BROKER_MAX_EPOCHS_TO_KEEP_RESULTS_FOR'
|
|
159
174
|
| 'PROVER_BROKER_DEBUG_REPLAY_ENABLED'
|
|
160
175
|
| 'PROVER_CANCEL_JOBS_ON_STOP'
|
|
176
|
+
| 'PROVER_ENQUEUE_CONCURRENCY'
|
|
161
177
|
| 'PROVER_COORDINATION_NODE_URLS'
|
|
162
178
|
| 'PROVER_PROOF_STORE'
|
|
163
179
|
| 'PROVER_FAILED_PROOF_STORE'
|
|
@@ -191,25 +207,32 @@ export type EnvVar =
|
|
|
191
207
|
| 'SENTINEL_ENABLED'
|
|
192
208
|
| 'SENTINEL_HISTORY_LENGTH_IN_EPOCHS'
|
|
193
209
|
| 'SENTINEL_HISTORIC_PROVEN_PERFORMANCE_LENGTH_IN_EPOCHS'
|
|
194
|
-
| '
|
|
210
|
+
| 'SEQ_ENABLE_PROPOSER_PIPELINING'
|
|
195
211
|
| 'SEQ_MAX_TX_PER_BLOCK'
|
|
212
|
+
| 'SEQ_MAX_TX_PER_CHECKPOINT'
|
|
196
213
|
| 'SEQ_MIN_TX_PER_BLOCK'
|
|
197
214
|
| 'SEQ_PUBLISH_TXS_WITH_PROPOSALS'
|
|
198
215
|
| 'SEQ_MAX_DA_BLOCK_GAS'
|
|
199
216
|
| 'SEQ_MAX_L2_BLOCK_GAS'
|
|
217
|
+
| 'SEQ_PER_BLOCK_ALLOCATION_MULTIPLIER'
|
|
218
|
+
| 'SEQ_REDISTRIBUTE_CHECKPOINT_BUDGET'
|
|
200
219
|
| 'SEQ_PUBLISHER_PRIVATE_KEY'
|
|
201
220
|
| 'SEQ_PUBLISHER_PRIVATE_KEYS'
|
|
202
221
|
| 'SEQ_PUBLISHER_ADDRESSES'
|
|
203
222
|
| 'SEQ_PUBLISHER_ALLOW_INVALID_STATES'
|
|
204
223
|
| 'SEQ_PUBLISHER_FORWARDER_ADDRESS'
|
|
224
|
+
| 'PUBLISHER_FUNDING_THRESHOLD'
|
|
225
|
+
| 'PUBLISHER_FUNDING_AMOUNT'
|
|
205
226
|
| 'SEQ_POLLING_INTERVAL_MS'
|
|
206
227
|
| 'SEQ_ENFORCE_TIME_TABLE'
|
|
207
228
|
| 'SEQ_L1_PUBLISHING_TIME_ALLOWANCE_IN_SLOT'
|
|
208
229
|
| 'SEQ_ATTESTATION_PROPAGATION_TIME'
|
|
209
230
|
| 'SEQ_BLOCK_DURATION_MS'
|
|
231
|
+
| 'SEQ_EXPECTED_BLOCK_PROPOSALS_PER_SLOT'
|
|
210
232
|
| 'SEQ_BUILD_CHECKPOINT_IF_EMPTY'
|
|
211
233
|
| 'SEQ_SECONDS_BEFORE_INVALIDATING_BLOCK_AS_COMMITTEE_MEMBER'
|
|
212
234
|
| 'SEQ_SECONDS_BEFORE_INVALIDATING_BLOCK_AS_NON_COMMITTEE_MEMBER'
|
|
235
|
+
| 'SEQ_SKIP_CHECKPOINT_PUBLISH_PERCENT'
|
|
213
236
|
| 'SLASH_MIN_PENALTY_PERCENTAGE'
|
|
214
237
|
| 'SLASH_MAX_PENALTY_PERCENTAGE'
|
|
215
238
|
| 'SLASH_VALIDATORS_ALWAYS'
|
|
@@ -220,6 +243,8 @@ export type EnvVar =
|
|
|
220
243
|
| 'SLASH_INACTIVITY_TARGET_PERCENTAGE'
|
|
221
244
|
| 'SLASH_INACTIVITY_CONSECUTIVE_EPOCH_THRESHOLD'
|
|
222
245
|
| 'SLASH_INVALID_BLOCK_PENALTY'
|
|
246
|
+
| 'SLASH_DUPLICATE_PROPOSAL_PENALTY'
|
|
247
|
+
| 'SLASH_DUPLICATE_ATTESTATION_PENALTY'
|
|
223
248
|
| 'SLASH_OVERRIDE_PAYLOAD'
|
|
224
249
|
| 'SLASH_PROPOSE_INVALID_ATTESTATIONS_PENALTY'
|
|
225
250
|
| 'SLASH_ATTEST_DESCENDANT_OF_INVALID_PENALTY'
|
|
@@ -234,6 +259,7 @@ export type EnvVar =
|
|
|
234
259
|
| 'TELEMETRY'
|
|
235
260
|
| 'TEST_ACCOUNTS'
|
|
236
261
|
| 'SPONSORED_FPC'
|
|
262
|
+
| 'PREFUND_ADDRESSES'
|
|
237
263
|
| 'TX_COLLECTION_FAST_NODES_TIMEOUT_BEFORE_REQ_RESP_MS'
|
|
238
264
|
| 'TX_COLLECTION_SLOW_NODES_INTERVAL_MS'
|
|
239
265
|
| 'TX_COLLECTION_SLOW_REQ_RESP_INTERVAL_MS'
|
|
@@ -244,9 +270,17 @@ export type EnvVar =
|
|
|
244
270
|
| 'TX_COLLECTION_FAST_MAX_PARALLEL_REQUESTS_PER_NODE'
|
|
245
271
|
| 'TX_COLLECTION_NODE_RPC_MAX_BATCH_SIZE'
|
|
246
272
|
| 'TX_COLLECTION_NODE_RPC_URLS'
|
|
247
|
-
| '
|
|
273
|
+
| 'TX_COLLECTION_MISSING_TXS_COLLECTOR_TYPE'
|
|
274
|
+
| 'TX_COLLECTION_FILE_STORE_URLS'
|
|
275
|
+
| 'TX_COLLECTION_FILE_STORE_SLOW_DELAY_MS'
|
|
276
|
+
| 'TX_COLLECTION_FILE_STORE_FAST_DELAY_MS'
|
|
277
|
+
| 'TX_COLLECTION_FILE_STORE_FAST_WORKER_COUNT'
|
|
278
|
+
| 'TX_COLLECTION_FILE_STORE_SLOW_WORKER_COUNT'
|
|
279
|
+
| 'TX_COLLECTION_FILE_STORE_FAST_BACKOFF_BASE_MS'
|
|
280
|
+
| 'TX_COLLECTION_FILE_STORE_SLOW_BACKOFF_BASE_MS'
|
|
281
|
+
| 'TX_COLLECTION_FILE_STORE_FAST_BACKOFF_MAX_MS'
|
|
282
|
+
| 'TX_COLLECTION_FILE_STORE_SLOW_BACKOFF_MAX_MS'
|
|
248
283
|
| 'TX_FILE_STORE_URL'
|
|
249
|
-
| 'TX_FILE_STORE_DOWNLOAD_URL'
|
|
250
284
|
| 'TX_FILE_STORE_UPLOAD_CONCURRENCY'
|
|
251
285
|
| 'TX_FILE_STORE_MAX_QUEUE_SIZE'
|
|
252
286
|
| 'TX_FILE_STORE_ENABLED'
|
|
@@ -255,15 +289,19 @@ export type EnvVar =
|
|
|
255
289
|
| 'TRANSACTIONS_DISABLED'
|
|
256
290
|
| 'VALIDATOR_ATTESTATIONS_POLLING_INTERVAL_MS'
|
|
257
291
|
| 'VALIDATOR_DISABLED'
|
|
292
|
+
| 'VALIDATOR_MAX_DA_BLOCK_GAS'
|
|
293
|
+
| 'VALIDATOR_MAX_L2_BLOCK_GAS'
|
|
294
|
+
| 'VALIDATOR_MAX_TX_PER_BLOCK'
|
|
295
|
+
| 'VALIDATOR_MAX_TX_PER_CHECKPOINT'
|
|
258
296
|
| 'VALIDATOR_PRIVATE_KEYS'
|
|
259
297
|
| 'VALIDATOR_PRIVATE_KEY'
|
|
260
|
-
| 'VALIDATOR_REEXECUTE'
|
|
261
298
|
| 'VALIDATOR_ADDRESSES'
|
|
262
299
|
| 'ROLLUP_VERSION'
|
|
263
300
|
| 'WS_BLOCK_CHECK_INTERVAL_MS'
|
|
264
301
|
| 'WS_BLOCK_REQUEST_BATCH_SIZE'
|
|
265
302
|
| 'L1_READER_VIEM_POLLING_INTERVAL_MS'
|
|
266
303
|
| 'WS_DATA_DIRECTORY'
|
|
304
|
+
| 'WS_NUM_HISTORIC_CHECKPOINTS'
|
|
267
305
|
| 'WS_NUM_HISTORIC_BLOCKS'
|
|
268
306
|
| 'ETHEREUM_SLOT_DURATION'
|
|
269
307
|
| 'AZTEC_SLOT_DURATION'
|
|
@@ -318,12 +356,12 @@ export type EnvVar =
|
|
|
318
356
|
| 'K8S_POD_NAME'
|
|
319
357
|
| 'K8S_POD_UID'
|
|
320
358
|
| 'K8S_NAMESPACE_NAME'
|
|
321
|
-
| '
|
|
322
|
-
| 'AUTO_UPDATE'
|
|
323
|
-
| 'AUTO_UPDATE_URL'
|
|
359
|
+
| 'ENABLE_VERSION_CHECK'
|
|
324
360
|
| 'WEB3_SIGNER_URL'
|
|
325
361
|
| 'SKIP_ARCHIVER_INITIAL_SYNC'
|
|
326
362
|
| 'BLOB_ALLOW_EMPTY_SOURCES'
|
|
363
|
+
| 'BLOB_PREFER_FILESTORES'
|
|
364
|
+
| 'BLOB_FILE_STORE_TIMEOUT_MS'
|
|
327
365
|
| 'FISHERMAN_MODE'
|
|
328
366
|
| 'MAX_ALLOWED_ETH_CLIENT_DRIFT_SECONDS'
|
|
329
367
|
| 'LEGACY_BLS_CLI'
|
package/src/config/index.ts
CHANGED
|
@@ -177,6 +177,21 @@ export function bigintConfigHelper(defaultVal?: bigint): Pick<ConfigMapping, 'pa
|
|
|
177
177
|
if (val === '') {
|
|
178
178
|
return defaultVal;
|
|
179
179
|
}
|
|
180
|
+
// Handle scientific notation (e.g. "1e+23", "2E23") which BigInt() doesn't accept directly.
|
|
181
|
+
// We parse it losslessly using bigint arithmetic instead of going through float64.
|
|
182
|
+
if (/[eE]/.test(val)) {
|
|
183
|
+
const match = val.match(/^(-?\d+(?:\.(\d+))?)[eE]([+-]?\d+)$/);
|
|
184
|
+
if (!match) {
|
|
185
|
+
throw new Error(`Cannot convert '${val}' to a BigInt`);
|
|
186
|
+
}
|
|
187
|
+
const digits = match[1].replace('.', '');
|
|
188
|
+
const decimalPlaces = match[2]?.length ?? 0;
|
|
189
|
+
const exponent = parseInt(match[3], 10) - decimalPlaces;
|
|
190
|
+
if (exponent < 0) {
|
|
191
|
+
throw new Error(`Cannot convert '${val}' to a BigInt: result is not an integer`);
|
|
192
|
+
}
|
|
193
|
+
return BigInt(digits) * 10n ** BigInt(exponent);
|
|
194
|
+
}
|
|
180
195
|
return BigInt(val);
|
|
181
196
|
},
|
|
182
197
|
defaultValue: defaultVal,
|
|
@@ -5,10 +5,13 @@ export const NetworkConfigSchema = z
|
|
|
5
5
|
bootnodes: z.array(z.string()),
|
|
6
6
|
snapshots: z.array(z.string()),
|
|
7
7
|
blobFileStoreUrls: z.array(z.string()).optional(),
|
|
8
|
+
txCollectionFileStoreUrls: z.array(z.string()).optional(),
|
|
8
9
|
registryAddress: z.string(),
|
|
9
10
|
feeAssetHandlerAddress: z.string().optional(),
|
|
10
11
|
l1ChainId: z.number(),
|
|
11
12
|
blockDurationMs: z.number().positive().optional(),
|
|
13
|
+
txPublicSetupAllowListExtend: z.string().optional(),
|
|
14
|
+
nodeVersion: z.string().optional(),
|
|
12
15
|
})
|
|
13
16
|
.passthrough(); // Allow additional unknown fields to pass through
|
|
14
17
|
|