@aztec/aztec-node 0.85.0-alpha-testnet.9 → 0.85.0-alpha-testnet.11
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';
|
|
@@ -248,7 +249,24 @@ import { NodeMetrics } from './node_metrics.js';
|
|
|
248
249
|
* Method to fetch the current base fees.
|
|
249
250
|
* @returns The current base fees.
|
|
250
251
|
*/ async getCurrentBaseFees() {
|
|
251
|
-
|
|
252
|
+
let result;
|
|
253
|
+
try {
|
|
254
|
+
result = await this.globalVariableBuilder.getCurrentBaseFees();
|
|
255
|
+
} catch (error) {
|
|
256
|
+
// Hide any API keys that may be in the error message
|
|
257
|
+
if (error instanceof Error) {
|
|
258
|
+
this.config.l1ConsensusHostApiKeys?.forEach((apiKey)=>{
|
|
259
|
+
error.message = error.message.replace(apiKey, '********');
|
|
260
|
+
});
|
|
261
|
+
this.config.l1RpcUrls.forEach((url)=>{
|
|
262
|
+
// only show the host part of the url
|
|
263
|
+
const urlObj = new URL(url);
|
|
264
|
+
error.message = error.message.replace(url, urlObj.host);
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
throw error;
|
|
268
|
+
}
|
|
269
|
+
return result;
|
|
252
270
|
}
|
|
253
271
|
/**
|
|
254
272
|
* Method to fetch the current block number.
|
|
@@ -770,6 +788,50 @@ import { NodeMetrics } from './node_metrics.js';
|
|
|
770
788
|
});
|
|
771
789
|
return Promise.resolve();
|
|
772
790
|
}
|
|
791
|
+
async rollbackTo(targetBlock, force) {
|
|
792
|
+
const archiver = this.blockSource;
|
|
793
|
+
if (!('rollbackTo' in archiver)) {
|
|
794
|
+
throw new Error('Archiver implementation does not support rollbacks.');
|
|
795
|
+
}
|
|
796
|
+
const finalizedBlock = await archiver.getL2Tips().then((tips)=>tips.finalized.number);
|
|
797
|
+
if (targetBlock < finalizedBlock) {
|
|
798
|
+
if (force) {
|
|
799
|
+
this.log.warn(`Clearing world state database to allow rolling back behind finalized block ${finalizedBlock}`);
|
|
800
|
+
await this.worldStateSynchronizer.clear();
|
|
801
|
+
await this.p2pClient.clear();
|
|
802
|
+
} else {
|
|
803
|
+
throw new Error(`Cannot rollback to block ${targetBlock} as it is before finalized ${finalizedBlock}`);
|
|
804
|
+
}
|
|
805
|
+
}
|
|
806
|
+
try {
|
|
807
|
+
this.log.info(`Pausing archiver and world state sync to start rollback`);
|
|
808
|
+
await archiver.stop();
|
|
809
|
+
await this.worldStateSynchronizer.stopSync();
|
|
810
|
+
const currentBlock = await archiver.getBlockNumber();
|
|
811
|
+
const blocksToUnwind = currentBlock - targetBlock;
|
|
812
|
+
this.log.info(`Unwinding ${count(blocksToUnwind, 'block')} from L2 block ${currentBlock} to ${targetBlock}`);
|
|
813
|
+
await archiver.rollbackTo(targetBlock);
|
|
814
|
+
this.log.info(`Unwinding complete.`);
|
|
815
|
+
} catch (err) {
|
|
816
|
+
this.log.error(`Error during rollback`, err);
|
|
817
|
+
throw err;
|
|
818
|
+
} finally{
|
|
819
|
+
this.log.info(`Resuming world state and archiver sync.`);
|
|
820
|
+
this.worldStateSynchronizer.resumeSync();
|
|
821
|
+
archiver.resume();
|
|
822
|
+
}
|
|
823
|
+
}
|
|
824
|
+
async pauseSync() {
|
|
825
|
+
this.log.info(`Pausing archiver and world state sync`);
|
|
826
|
+
await this.blockSource.stop();
|
|
827
|
+
await this.worldStateSynchronizer.stopSync();
|
|
828
|
+
}
|
|
829
|
+
resumeSync() {
|
|
830
|
+
this.log.info(`Resuming world state and archiver sync.`);
|
|
831
|
+
this.worldStateSynchronizer.resumeSync();
|
|
832
|
+
this.blockSource.resume();
|
|
833
|
+
return Promise.resolve();
|
|
834
|
+
}
|
|
773
835
|
/**
|
|
774
836
|
* Returns an instance of MerkleTreeOperations having first ensured the world state is fully synched
|
|
775
837
|
* @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.85.0-alpha-testnet.
|
|
3
|
+
"version": "0.85.0-alpha-testnet.11",
|
|
4
4
|
"main": "dest/index.js",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -63,27 +63,27 @@
|
|
|
63
63
|
]
|
|
64
64
|
},
|
|
65
65
|
"dependencies": {
|
|
66
|
-
"@aztec/archiver": "0.85.0-alpha-testnet.
|
|
67
|
-
"@aztec/bb-prover": "0.85.0-alpha-testnet.
|
|
68
|
-
"@aztec/blob-sink": "0.85.0-alpha-testnet.
|
|
69
|
-
"@aztec/constants": "0.85.0-alpha-testnet.
|
|
70
|
-
"@aztec/epoch-cache": "0.85.0-alpha-testnet.
|
|
71
|
-
"@aztec/ethereum": "0.85.0-alpha-testnet.
|
|
72
|
-
"@aztec/foundation": "0.85.0-alpha-testnet.
|
|
73
|
-
"@aztec/kv-store": "0.85.0-alpha-testnet.
|
|
74
|
-
"@aztec/l1-artifacts": "0.85.0-alpha-testnet.
|
|
75
|
-
"@aztec/merkle-tree": "0.85.0-alpha-testnet.
|
|
76
|
-
"@aztec/node-lib": "0.85.0-alpha-testnet.
|
|
77
|
-
"@aztec/noir-protocol-circuits-types": "0.85.0-alpha-testnet.
|
|
78
|
-
"@aztec/p2p": "0.85.0-alpha-testnet.
|
|
79
|
-
"@aztec/protocol-contracts": "0.85.0-alpha-testnet.
|
|
80
|
-
"@aztec/prover-client": "0.85.0-alpha-testnet.
|
|
81
|
-
"@aztec/sequencer-client": "0.85.0-alpha-testnet.
|
|
82
|
-
"@aztec/simulator": "0.85.0-alpha-testnet.
|
|
83
|
-
"@aztec/stdlib": "0.85.0-alpha-testnet.
|
|
84
|
-
"@aztec/telemetry-client": "0.85.0-alpha-testnet.
|
|
85
|
-
"@aztec/validator-client": "0.85.0-alpha-testnet.
|
|
86
|
-
"@aztec/world-state": "0.85.0-alpha-testnet.
|
|
66
|
+
"@aztec/archiver": "0.85.0-alpha-testnet.11",
|
|
67
|
+
"@aztec/bb-prover": "0.85.0-alpha-testnet.11",
|
|
68
|
+
"@aztec/blob-sink": "0.85.0-alpha-testnet.11",
|
|
69
|
+
"@aztec/constants": "0.85.0-alpha-testnet.11",
|
|
70
|
+
"@aztec/epoch-cache": "0.85.0-alpha-testnet.11",
|
|
71
|
+
"@aztec/ethereum": "0.85.0-alpha-testnet.11",
|
|
72
|
+
"@aztec/foundation": "0.85.0-alpha-testnet.11",
|
|
73
|
+
"@aztec/kv-store": "0.85.0-alpha-testnet.11",
|
|
74
|
+
"@aztec/l1-artifacts": "0.85.0-alpha-testnet.11",
|
|
75
|
+
"@aztec/merkle-tree": "0.85.0-alpha-testnet.11",
|
|
76
|
+
"@aztec/node-lib": "0.85.0-alpha-testnet.11",
|
|
77
|
+
"@aztec/noir-protocol-circuits-types": "0.85.0-alpha-testnet.11",
|
|
78
|
+
"@aztec/p2p": "0.85.0-alpha-testnet.11",
|
|
79
|
+
"@aztec/protocol-contracts": "0.85.0-alpha-testnet.11",
|
|
80
|
+
"@aztec/prover-client": "0.85.0-alpha-testnet.11",
|
|
81
|
+
"@aztec/sequencer-client": "0.85.0-alpha-testnet.11",
|
|
82
|
+
"@aztec/simulator": "0.85.0-alpha-testnet.11",
|
|
83
|
+
"@aztec/stdlib": "0.85.0-alpha-testnet.11",
|
|
84
|
+
"@aztec/telemetry-client": "0.85.0-alpha-testnet.11",
|
|
85
|
+
"@aztec/validator-client": "0.85.0-alpha-testnet.11",
|
|
86
|
+
"@aztec/world-state": "0.85.0-alpha-testnet.11",
|
|
87
87
|
"koa": "^2.16.1",
|
|
88
88
|
"koa-router": "^12.0.0",
|
|
89
89
|
"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';
|
|
@@ -378,7 +379,24 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
378
379
|
* @returns The current base fees.
|
|
379
380
|
*/
|
|
380
381
|
public async getCurrentBaseFees(): Promise<GasFees> {
|
|
381
|
-
|
|
382
|
+
let result: GasFees;
|
|
383
|
+
try {
|
|
384
|
+
result = await this.globalVariableBuilder.getCurrentBaseFees();
|
|
385
|
+
} catch (error) {
|
|
386
|
+
// Hide any API keys that may be in the error message
|
|
387
|
+
if (error instanceof Error) {
|
|
388
|
+
this.config.l1ConsensusHostApiKeys?.forEach(apiKey => {
|
|
389
|
+
error.message = error.message.replace(apiKey, '********');
|
|
390
|
+
});
|
|
391
|
+
this.config.l1RpcUrls.forEach(url => {
|
|
392
|
+
// only show the host part of the url
|
|
393
|
+
const urlObj = new URL(url);
|
|
394
|
+
error.message = error.message.replace(url, urlObj.host);
|
|
395
|
+
});
|
|
396
|
+
}
|
|
397
|
+
throw error;
|
|
398
|
+
}
|
|
399
|
+
return result;
|
|
382
400
|
}
|
|
383
401
|
|
|
384
402
|
/**
|
|
@@ -1066,6 +1084,55 @@ export class AztecNodeService implements AztecNode, AztecNodeAdmin, Traceable {
|
|
|
1066
1084
|
return Promise.resolve();
|
|
1067
1085
|
}
|
|
1068
1086
|
|
|
1087
|
+
public async rollbackTo(targetBlock: number, force?: boolean): Promise<void> {
|
|
1088
|
+
const archiver = this.blockSource as Archiver;
|
|
1089
|
+
if (!('rollbackTo' in archiver)) {
|
|
1090
|
+
throw new Error('Archiver implementation does not support rollbacks.');
|
|
1091
|
+
}
|
|
1092
|
+
|
|
1093
|
+
const finalizedBlock = await archiver.getL2Tips().then(tips => tips.finalized.number);
|
|
1094
|
+
if (targetBlock < finalizedBlock) {
|
|
1095
|
+
if (force) {
|
|
1096
|
+
this.log.warn(`Clearing world state database to allow rolling back behind finalized block ${finalizedBlock}`);
|
|
1097
|
+
await this.worldStateSynchronizer.clear();
|
|
1098
|
+
await this.p2pClient.clear();
|
|
1099
|
+
} else {
|
|
1100
|
+
throw new Error(`Cannot rollback to block ${targetBlock} as it is before finalized ${finalizedBlock}`);
|
|
1101
|
+
}
|
|
1102
|
+
}
|
|
1103
|
+
|
|
1104
|
+
try {
|
|
1105
|
+
this.log.info(`Pausing archiver and world state sync to start rollback`);
|
|
1106
|
+
await archiver.stop();
|
|
1107
|
+
await this.worldStateSynchronizer.stopSync();
|
|
1108
|
+
const currentBlock = await archiver.getBlockNumber();
|
|
1109
|
+
const blocksToUnwind = currentBlock - targetBlock;
|
|
1110
|
+
this.log.info(`Unwinding ${count(blocksToUnwind, 'block')} from L2 block ${currentBlock} to ${targetBlock}`);
|
|
1111
|
+
await archiver.rollbackTo(targetBlock);
|
|
1112
|
+
this.log.info(`Unwinding complete.`);
|
|
1113
|
+
} catch (err) {
|
|
1114
|
+
this.log.error(`Error during rollback`, err);
|
|
1115
|
+
throw err;
|
|
1116
|
+
} finally {
|
|
1117
|
+
this.log.info(`Resuming world state and archiver sync.`);
|
|
1118
|
+
this.worldStateSynchronizer.resumeSync();
|
|
1119
|
+
archiver.resume();
|
|
1120
|
+
}
|
|
1121
|
+
}
|
|
1122
|
+
|
|
1123
|
+
public async pauseSync(): Promise<void> {
|
|
1124
|
+
this.log.info(`Pausing archiver and world state sync`);
|
|
1125
|
+
await (this.blockSource as Archiver).stop();
|
|
1126
|
+
await this.worldStateSynchronizer.stopSync();
|
|
1127
|
+
}
|
|
1128
|
+
|
|
1129
|
+
public resumeSync(): Promise<void> {
|
|
1130
|
+
this.log.info(`Resuming world state and archiver sync.`);
|
|
1131
|
+
this.worldStateSynchronizer.resumeSync();
|
|
1132
|
+
(this.blockSource as Archiver).resume();
|
|
1133
|
+
return Promise.resolve();
|
|
1134
|
+
}
|
|
1135
|
+
|
|
1069
1136
|
/**
|
|
1070
1137
|
* Returns an instance of MerkleTreeOperations having first ensured the world state is fully synched
|
|
1071
1138
|
* @param blockNumber - The block number at which to get the data.
|