@aztec/aztec-node 0.86.0-nightly.20250507 → 0.86.0-nightly.20250509
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.
|
@@ -297,5 +297,8 @@ export declare class AztecNodeService implements AztecNode, AztecNodeAdmin, Trac
|
|
|
297
297
|
flushTxs(): Promise<void>;
|
|
298
298
|
getValidatorsStats(): Promise<ValidatorsStats>;
|
|
299
299
|
startSnapshotUpload(location: string): Promise<void>;
|
|
300
|
+
rollbackTo(targetBlock: number, force?: boolean): Promise<void>;
|
|
301
|
+
pauseSync(): Promise<void>;
|
|
302
|
+
resumeSync(): Promise<void>;
|
|
300
303
|
}
|
|
301
304
|
//# sourceMappingURL=server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/aztec-node/server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,uBAAuB,EAAwB,MAAM,yBAAyB,CAAC;AAC7F,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC7B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,KAAK,mBAAmB,EAAyC,MAAM,iBAAiB,CAAC;AAGlG,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/aztec-node/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,7 @@ import { EthAddress } from '@aztec/foundation/eth-address';
|
|
|
15
15
|
import { Fr } from '@aztec/foundation/fields';
|
|
16
16
|
import { createLogger } from '@aztec/foundation/log';
|
|
17
17
|
import { SerialQueue } from '@aztec/foundation/queue';
|
|
18
|
+
import { count } from '@aztec/foundation/string';
|
|
18
19
|
import { DateProvider, Timer } from '@aztec/foundation/timer';
|
|
19
20
|
import { SiblingPath } from '@aztec/foundation/trees';
|
|
20
21
|
import { openTmpStore } from '@aztec/kv-store/lmdb';
|
|
@@ -158,7 +159,8 @@ import { NodeMetrics } from './node_metrics.js';
|
|
|
158
159
|
p2pClient,
|
|
159
160
|
telemetry,
|
|
160
161
|
dateProvider,
|
|
161
|
-
epochCache
|
|
162
|
+
epochCache,
|
|
163
|
+
blockSource: archiver
|
|
162
164
|
});
|
|
163
165
|
const validatorsSentinel = await createSentinel(epochCache, archiver, p2pClient, config);
|
|
164
166
|
await validatorsSentinel?.start();
|
|
@@ -676,9 +678,9 @@ import { NodeMetrics } from './node_metrics.js';
|
|
|
676
678
|
});
|
|
677
679
|
const merkleTreeFork = await this.worldStateSynchronizer.fork();
|
|
678
680
|
try {
|
|
679
|
-
const processor = publicProcessorFactory.create(merkleTreeFork, newGlobalVariables, skipFeeEnforcement);
|
|
681
|
+
const processor = publicProcessorFactory.create(merkleTreeFork, newGlobalVariables, skipFeeEnforcement, /*clientInitiatedSimulation*/ true);
|
|
680
682
|
// REFACTOR: Consider merging ProcessReturnValues into ProcessedTx
|
|
681
|
-
const [processedTxs, failedTxs, returns] = await processor.process([
|
|
683
|
+
const [processedTxs, failedTxs, _usedTxs, returns] = await processor.process([
|
|
682
684
|
tx
|
|
683
685
|
]);
|
|
684
686
|
// REFACTOR: Consider returning the error rather than throwing
|
|
@@ -773,6 +775,50 @@ import { NodeMetrics } from './node_metrics.js';
|
|
|
773
775
|
});
|
|
774
776
|
return Promise.resolve();
|
|
775
777
|
}
|
|
778
|
+
async rollbackTo(targetBlock, force) {
|
|
779
|
+
const archiver = this.blockSource;
|
|
780
|
+
if (!('rollbackTo' in archiver)) {
|
|
781
|
+
throw new Error('Archiver implementation does not support rollbacks.');
|
|
782
|
+
}
|
|
783
|
+
const finalizedBlock = await archiver.getL2Tips().then((tips)=>tips.finalized.number);
|
|
784
|
+
if (targetBlock < finalizedBlock) {
|
|
785
|
+
if (force) {
|
|
786
|
+
this.log.warn(`Clearing world state database to allow rolling back behind finalized block ${finalizedBlock}`);
|
|
787
|
+
await this.worldStateSynchronizer.clear();
|
|
788
|
+
await this.p2pClient.clear();
|
|
789
|
+
} else {
|
|
790
|
+
throw new Error(`Cannot rollback to block ${targetBlock} as it is before finalized ${finalizedBlock}`);
|
|
791
|
+
}
|
|
792
|
+
}
|
|
793
|
+
try {
|
|
794
|
+
this.log.info(`Pausing archiver and world state sync to start rollback`);
|
|
795
|
+
await archiver.stop();
|
|
796
|
+
await this.worldStateSynchronizer.stopSync();
|
|
797
|
+
const currentBlock = await archiver.getBlockNumber();
|
|
798
|
+
const blocksToUnwind = currentBlock - targetBlock;
|
|
799
|
+
this.log.info(`Unwinding ${count(blocksToUnwind, 'block')} from L2 block ${currentBlock} to ${targetBlock}`);
|
|
800
|
+
await archiver.rollbackTo(targetBlock);
|
|
801
|
+
this.log.info(`Unwinding complete.`);
|
|
802
|
+
} catch (err) {
|
|
803
|
+
this.log.error(`Error during rollback`, err);
|
|
804
|
+
throw err;
|
|
805
|
+
} finally{
|
|
806
|
+
this.log.info(`Resuming world state and archiver sync.`);
|
|
807
|
+
this.worldStateSynchronizer.resumeSync();
|
|
808
|
+
archiver.resume();
|
|
809
|
+
}
|
|
810
|
+
}
|
|
811
|
+
async pauseSync() {
|
|
812
|
+
this.log.info(`Pausing archiver and world state sync`);
|
|
813
|
+
await this.blockSource.stop();
|
|
814
|
+
await this.worldStateSynchronizer.stopSync();
|
|
815
|
+
}
|
|
816
|
+
resumeSync() {
|
|
817
|
+
this.log.info(`Resuming world state and archiver sync.`);
|
|
818
|
+
this.worldStateSynchronizer.resumeSync();
|
|
819
|
+
this.blockSource.resume();
|
|
820
|
+
return Promise.resolve();
|
|
821
|
+
}
|
|
776
822
|
/**
|
|
777
823
|
* Returns an instance of MerkleTreeOperations having first ensured the world state is fully synched
|
|
778
824
|
* @param blockNumber - The block number at which to get the data.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/aztec-node",
|
|
3
|
-
"version": "0.86.0-nightly.
|
|
3
|
+
"version": "0.86.0-nightly.20250509",
|
|
4
4
|
"main": "dest/index.js",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -61,27 +61,27 @@
|
|
|
61
61
|
]
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
|
-
"@aztec/archiver": "0.86.0-nightly.
|
|
65
|
-
"@aztec/bb-prover": "0.86.0-nightly.
|
|
66
|
-
"@aztec/blob-sink": "0.86.0-nightly.
|
|
67
|
-
"@aztec/constants": "0.86.0-nightly.
|
|
68
|
-
"@aztec/epoch-cache": "0.86.0-nightly.
|
|
69
|
-
"@aztec/ethereum": "0.86.0-nightly.
|
|
70
|
-
"@aztec/foundation": "0.86.0-nightly.
|
|
71
|
-
"@aztec/kv-store": "0.86.0-nightly.
|
|
72
|
-
"@aztec/l1-artifacts": "0.86.0-nightly.
|
|
73
|
-
"@aztec/merkle-tree": "0.86.0-nightly.
|
|
74
|
-
"@aztec/node-lib": "0.86.0-nightly.
|
|
75
|
-
"@aztec/noir-protocol-circuits-types": "0.86.0-nightly.
|
|
76
|
-
"@aztec/p2p": "0.86.0-nightly.
|
|
77
|
-
"@aztec/protocol-contracts": "0.86.0-nightly.
|
|
78
|
-
"@aztec/prover-client": "0.86.0-nightly.
|
|
79
|
-
"@aztec/sequencer-client": "0.86.0-nightly.
|
|
80
|
-
"@aztec/simulator": "0.86.0-nightly.
|
|
81
|
-
"@aztec/stdlib": "0.86.0-nightly.
|
|
82
|
-
"@aztec/telemetry-client": "0.86.0-nightly.
|
|
83
|
-
"@aztec/validator-client": "0.86.0-nightly.
|
|
84
|
-
"@aztec/world-state": "0.86.0-nightly.
|
|
64
|
+
"@aztec/archiver": "0.86.0-nightly.20250509",
|
|
65
|
+
"@aztec/bb-prover": "0.86.0-nightly.20250509",
|
|
66
|
+
"@aztec/blob-sink": "0.86.0-nightly.20250509",
|
|
67
|
+
"@aztec/constants": "0.86.0-nightly.20250509",
|
|
68
|
+
"@aztec/epoch-cache": "0.86.0-nightly.20250509",
|
|
69
|
+
"@aztec/ethereum": "0.86.0-nightly.20250509",
|
|
70
|
+
"@aztec/foundation": "0.86.0-nightly.20250509",
|
|
71
|
+
"@aztec/kv-store": "0.86.0-nightly.20250509",
|
|
72
|
+
"@aztec/l1-artifacts": "0.86.0-nightly.20250509",
|
|
73
|
+
"@aztec/merkle-tree": "0.86.0-nightly.20250509",
|
|
74
|
+
"@aztec/node-lib": "0.86.0-nightly.20250509",
|
|
75
|
+
"@aztec/noir-protocol-circuits-types": "0.86.0-nightly.20250509",
|
|
76
|
+
"@aztec/p2p": "0.86.0-nightly.20250509",
|
|
77
|
+
"@aztec/protocol-contracts": "0.86.0-nightly.20250509",
|
|
78
|
+
"@aztec/prover-client": "0.86.0-nightly.20250509",
|
|
79
|
+
"@aztec/sequencer-client": "0.86.0-nightly.20250509",
|
|
80
|
+
"@aztec/simulator": "0.86.0-nightly.20250509",
|
|
81
|
+
"@aztec/stdlib": "0.86.0-nightly.20250509",
|
|
82
|
+
"@aztec/telemetry-client": "0.86.0-nightly.20250509",
|
|
83
|
+
"@aztec/validator-client": "0.86.0-nightly.20250509",
|
|
84
|
+
"@aztec/world-state": "0.86.0-nightly.20250509",
|
|
85
85
|
"koa": "^2.16.1",
|
|
86
86
|
"koa-router": "^12.0.0",
|
|
87
87
|
"tslib": "^2.4.0",
|
package/src/aztec-node/server.ts
CHANGED
|
@@ -16,6 +16,7 @@ import { EthAddress } from '@aztec/foundation/eth-address';
|
|
|
16
16
|
import { Fr } from '@aztec/foundation/fields';
|
|
17
17
|
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
18
18
|
import { SerialQueue } from '@aztec/foundation/queue';
|
|
19
|
+
import { count } from '@aztec/foundation/string';
|
|
19
20
|
import { DateProvider, Timer } from '@aztec/foundation/timer';
|
|
20
21
|
import { SiblingPath } from '@aztec/foundation/trees';
|
|
21
22
|
import type { AztecKVStore } from '@aztec/kv-store';
|
|
@@ -247,7 +248,13 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
247
248
|
const slasherClient = createSlasherClient(config, archiver, telemetry);
|
|
248
249
|
slasherClient.start();
|
|
249
250
|
|
|
250
|
-
const validatorClient = createValidatorClient(config, {
|
|
251
|
+
const validatorClient = createValidatorClient(config, {
|
|
252
|
+
p2pClient,
|
|
253
|
+
telemetry,
|
|
254
|
+
dateProvider,
|
|
255
|
+
epochCache,
|
|
256
|
+
blockSource: archiver,
|
|
257
|
+
});
|
|
251
258
|
|
|
252
259
|
const validatorsSentinel = await createSentinel(epochCache, archiver, p2pClient, config);
|
|
253
260
|
await validatorsSentinel?.start();
|
|
@@ -953,10 +960,15 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
953
960
|
|
|
954
961
|
const merkleTreeFork = await this.worldStateSynchronizer.fork();
|
|
955
962
|
try {
|
|
956
|
-
const processor = publicProcessorFactory.create(
|
|
963
|
+
const processor = publicProcessorFactory.create(
|
|
964
|
+
merkleTreeFork,
|
|
965
|
+
newGlobalVariables,
|
|
966
|
+
skipFeeEnforcement,
|
|
967
|
+
/*clientInitiatedSimulation*/ true,
|
|
968
|
+
);
|
|
957
969
|
|
|
958
970
|
// REFACTOR: Consider merging ProcessReturnValues into ProcessedTx
|
|
959
|
-
const [processedTxs, failedTxs, returns] = await processor.process([tx]);
|
|
971
|
+
const [processedTxs, failedTxs, _usedTxs, returns] = await processor.process([tx]);
|
|
960
972
|
// REFACTOR: Consider returning the error rather than throwing
|
|
961
973
|
if (failedTxs.length) {
|
|
962
974
|
this.log.warn(`Simulated tx ${txHash} fails: ${failedTxs[0].error}`, { txHash });
|
|
@@ -1069,6 +1081,55 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
1069
1081
|
return Promise.resolve();
|
|
1070
1082
|
}
|
|
1071
1083
|
|
|
1084
|
+
public async rollbackTo(targetBlock: number, force?: boolean): Promise<void> {
|
|
1085
|
+
const archiver = this.blockSource as Archiver;
|
|
1086
|
+
if (!('rollbackTo' in archiver)) {
|
|
1087
|
+
throw new Error('Archiver implementation does not support rollbacks.');
|
|
1088
|
+
}
|
|
1089
|
+
|
|
1090
|
+
const finalizedBlock = await archiver.getL2Tips().then(tips => tips.finalized.number);
|
|
1091
|
+
if (targetBlock < finalizedBlock) {
|
|
1092
|
+
if (force) {
|
|
1093
|
+
this.log.warn(`Clearing world state database to allow rolling back behind finalized block ${finalizedBlock}`);
|
|
1094
|
+
await this.worldStateSynchronizer.clear();
|
|
1095
|
+
await this.p2pClient.clear();
|
|
1096
|
+
} else {
|
|
1097
|
+
throw new Error(`Cannot rollback to block ${targetBlock} as it is before finalized ${finalizedBlock}`);
|
|
1098
|
+
}
|
|
1099
|
+
}
|
|
1100
|
+
|
|
1101
|
+
try {
|
|
1102
|
+
this.log.info(`Pausing archiver and world state sync to start rollback`);
|
|
1103
|
+
await archiver.stop();
|
|
1104
|
+
await this.worldStateSynchronizer.stopSync();
|
|
1105
|
+
const currentBlock = await archiver.getBlockNumber();
|
|
1106
|
+
const blocksToUnwind = currentBlock - targetBlock;
|
|
1107
|
+
this.log.info(`Unwinding ${count(blocksToUnwind, 'block')} from L2 block ${currentBlock} to ${targetBlock}`);
|
|
1108
|
+
await archiver.rollbackTo(targetBlock);
|
|
1109
|
+
this.log.info(`Unwinding complete.`);
|
|
1110
|
+
} catch (err) {
|
|
1111
|
+
this.log.error(`Error during rollback`, err);
|
|
1112
|
+
throw err;
|
|
1113
|
+
} finally {
|
|
1114
|
+
this.log.info(`Resuming world state and archiver sync.`);
|
|
1115
|
+
this.worldStateSynchronizer.resumeSync();
|
|
1116
|
+
archiver.resume();
|
|
1117
|
+
}
|
|
1118
|
+
}
|
|
1119
|
+
|
|
1120
|
+
public async pauseSync(): Promise<void> {
|
|
1121
|
+
this.log.info(`Pausing archiver and world state sync`);
|
|
1122
|
+
await (this.blockSource as Archiver).stop();
|
|
1123
|
+
await this.worldStateSynchronizer.stopSync();
|
|
1124
|
+
}
|
|
1125
|
+
|
|
1126
|
+
public resumeSync(): Promise<void> {
|
|
1127
|
+
this.log.info(`Resuming world state and archiver sync.`);
|
|
1128
|
+
this.worldStateSynchronizer.resumeSync();
|
|
1129
|
+
(this.blockSource as Archiver).resume();
|
|
1130
|
+
return Promise.resolve();
|
|
1131
|
+
}
|
|
1132
|
+
|
|
1072
1133
|
/**
|
|
1073
1134
|
* Returns an instance of MerkleTreeOperations having first ensured the world state is fully synched
|
|
1074
1135
|
* @param blockNumber - The block number at which to get the data.
|