@aztec/aztec-node 0.67.1-devnet → 0.68.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { type AztecNode, type ClientProtocolCircuitVerifier, type EpochProofQuote, type GetUnencryptedLogsResponse, type InBlock, type L1ToL2MessageSource, type L2Block, type L2BlockNumber, type L2BlockSource, type L2LogsSource, type LogFilter, MerkleTreeId, NullifierMembershipWitness, type NullifierWithBlockSource, type ProverConfig, PublicDataWitness, PublicSimulationOutput, type SequencerConfig, type Service, SiblingPath, type Tx, type TxEffect, type TxHash, TxReceipt, type TxScopedL2Log, type WorldStateSynchronizer } from '@aztec/circuit-types';
|
|
2
2
|
import { type ARCHIVE_HEIGHT, type BlockHeader, type ContractClassPublic, type ContractDataSource, type ContractInstanceWithAddress, Fr, type GasFees, type L1_TO_L2_MSG_TREE_HEIGHT, type NOTE_HASH_TREE_HEIGHT, type NULLIFIER_TREE_HEIGHT, type NodeInfo, type PUBLIC_DATA_TREE_HEIGHT, type PrivateLog, type ProtocolContractAddresses } from '@aztec/circuits.js';
|
|
3
3
|
import { type L1ContractAddresses } from '@aztec/ethereum';
|
|
4
|
-
import { type ContractArtifact } from '@aztec/foundation/abi';
|
|
5
4
|
import { AztecAddress } from '@aztec/foundation/aztec-address';
|
|
6
5
|
import { type Logger } from '@aztec/foundation/log';
|
|
7
6
|
import { DateProvider } from '@aztec/foundation/timer';
|
|
@@ -269,12 +268,12 @@ export declare class AztecNodeService implements AztecNode, Traceable {
|
|
|
269
268
|
* Simulates the public part of a transaction with the current state.
|
|
270
269
|
* @param tx - The transaction to simulate.
|
|
271
270
|
**/
|
|
272
|
-
simulatePublicCalls(tx: Tx): Promise<PublicSimulationOutput>;
|
|
271
|
+
simulatePublicCalls(tx: Tx, enforceFeePayment?: boolean): Promise<PublicSimulationOutput>;
|
|
273
272
|
isValidTx(tx: Tx, isSimulation?: boolean): Promise<boolean>;
|
|
274
273
|
setConfig(config: Partial<SequencerConfig & ProverConfig>): Promise<void>;
|
|
275
274
|
getProtocolContractAddresses(): Promise<ProtocolContractAddresses>;
|
|
276
275
|
addContractClass(contractClass: ContractClassPublic): Promise<void>;
|
|
277
|
-
|
|
276
|
+
registerContractFunctionNames(_address: AztecAddress, names: Record<string, string>): Promise<void>;
|
|
278
277
|
flushTxs(): Promise<void>;
|
|
279
278
|
}
|
|
280
279
|
//# 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,EACL,KAAK,SAAS,EACd,KAAK,6BAA6B,EAClC,KAAK,eAAe,EACpB,KAAK,0BAA0B,EAC/B,KAAK,OAAO,EACZ,KAAK,mBAAmB,EACxB,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,YAAY,EACZ,0BAA0B,EAC1B,KAAK,wBAAwB,EAG7B,KAAK,YAAY,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,eAAe,EACpB,KAAK,OAAO,EACZ,WAAW,EACX,KAAK,EAAE,EACP,KAAK,QAAQ,EACb,KAAK,MAAM,EACX,SAAS,EACT,KAAK,aAAa,EAGlB,KAAK,sBAAsB,EAE5B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,2BAA2B,EAEhC,EAAE,EACF,KAAK,OAAO,EAEZ,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,QAAQ,EAEb,KAAK,uBAAuB,EAC5B,KAAK,UAAU,EACf,KAAK,yBAAyB,EAE/B,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/aztec-node/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import { BBCircuitVerifier, TestCircuitVerifier } from '@aztec/bb-prover';
|
|
|
4
4
|
import { MerkleTreeId, NullifierMembershipWitness, P2PClientType, PublicDataWitness, PublicSimulationOutput, SiblingPath, TxReceipt, TxStatus, tryStop, } from '@aztec/circuit-types';
|
|
5
5
|
import { EthAddress, Fr, INITIAL_L2_BLOCK_NUM, } from '@aztec/circuits.js';
|
|
6
6
|
import { computePublicDataTreeLeafSlot } from '@aztec/circuits.js/hash';
|
|
7
|
+
import { EpochCache } from '@aztec/epoch-cache';
|
|
7
8
|
import { createEthereumChain } from '@aztec/ethereum';
|
|
8
9
|
import { AztecAddress } from '@aztec/foundation/aztec-address';
|
|
9
10
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
@@ -85,11 +86,12 @@ let AztecNodeService = (() => {
|
|
|
85
86
|
if (!config.realProofs) {
|
|
86
87
|
log.warn(`Aztec node is accepting fake proofs`);
|
|
87
88
|
}
|
|
89
|
+
const epochCache = await EpochCache.create(config.l1Contracts.rollupAddress, config, { dateProvider });
|
|
88
90
|
// create the tx pool and the p2p client, which will need the l2 block source
|
|
89
|
-
const p2pClient = await createP2PClient(P2PClientType.Full, config, archiver, proofVerifier, worldStateSynchronizer, telemetry);
|
|
91
|
+
const p2pClient = await createP2PClient(P2PClientType.Full, config, archiver, proofVerifier, worldStateSynchronizer, epochCache, telemetry);
|
|
90
92
|
// start both and wait for them to sync from the block source
|
|
91
93
|
await Promise.all([p2pClient.start(), worldStateSynchronizer.start()]);
|
|
92
|
-
const validatorClient =
|
|
94
|
+
const validatorClient = createValidatorClient(config, { p2pClient, telemetry, dateProvider, epochCache });
|
|
93
95
|
// now create the sequencer
|
|
94
96
|
const sequencer = config.disableValidator
|
|
95
97
|
? undefined
|
|
@@ -552,7 +554,7 @@ let AztecNodeService = (() => {
|
|
|
552
554
|
* Simulates the public part of a transaction with the current state.
|
|
553
555
|
* @param tx - The transaction to simulate.
|
|
554
556
|
**/
|
|
555
|
-
async simulatePublicCalls(tx) {
|
|
557
|
+
async simulatePublicCalls(tx, enforceFeePayment = true) {
|
|
556
558
|
const txHash = tx.getTxHash();
|
|
557
559
|
const blockNumber = (await this.blockSource.getBlockNumber()) + 1;
|
|
558
560
|
// If sequencer is not initialized, we just set these values to zero for simulation.
|
|
@@ -568,7 +570,7 @@ let AztecNodeService = (() => {
|
|
|
568
570
|
blockNumber,
|
|
569
571
|
});
|
|
570
572
|
try {
|
|
571
|
-
const processor = publicProcessorFactory.create(fork, prevHeader, newGlobalVariables);
|
|
573
|
+
const processor = publicProcessorFactory.create(fork, prevHeader, newGlobalVariables, enforceFeePayment);
|
|
572
574
|
// REFACTOR: Consider merging ProcessReturnValues into ProcessedTx
|
|
573
575
|
const [processedTxs, failedTxs, returns] = await processor.process([tx]);
|
|
574
576
|
// REFACTOR: Consider returning the error rather than throwing
|
|
@@ -628,10 +630,8 @@ let AztecNodeService = (() => {
|
|
|
628
630
|
this.log.info(`Adding contract class via API ${contractClass.id}`);
|
|
629
631
|
return this.contractDataSource.addContractClass(contractClass);
|
|
630
632
|
}
|
|
631
|
-
|
|
632
|
-
this.
|
|
633
|
-
// TODO: Node should validate the artifact before accepting it
|
|
634
|
-
return this.contractDataSource.addContractArtifact(address, artifact);
|
|
633
|
+
registerContractFunctionNames(_address, names) {
|
|
634
|
+
return this.contractDataSource.registerContractFunctionNames(_address, names);
|
|
635
635
|
}
|
|
636
636
|
flushTxs() {
|
|
637
637
|
if (!this.sequencer) {
|
|
@@ -693,4 +693,4 @@ let AztecNodeService = (() => {
|
|
|
693
693
|
_a;
|
|
694
694
|
})();
|
|
695
695
|
export { AztecNodeService };
|
|
696
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F6dGVjLW5vZGUvc2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDMUUsT0FBTyxFQVlMLFlBQVksRUFDWiwwQkFBMEIsRUFFMUIsYUFBYSxFQUdiLGlCQUFpQixFQUNqQixzQkFBc0IsRUFHdEIsV0FBVyxFQUlYLFNBQVMsRUFFVCxRQUFRLEVBR1IsT0FBTyxHQUNSLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQU1MLFVBQVUsRUFDVixFQUFFLEVBRUYsb0JBQW9CLEdBVXJCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEUsT0FBTyxFQUE0QixtQkFBbUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWhGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFlLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9FLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsZUFBZSxFQUNmLHNCQUFzQixFQUN0QixtQkFBbUIsRUFFbkIsZ0JBQWdCLEVBQ2hCLGVBQWUsR0FDaEIsTUFBTSxZQUFZLENBQUM7QUFD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
|
|
696
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F6dGVjLW5vZGUvc2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDMUUsT0FBTyxFQVlMLFlBQVksRUFDWiwwQkFBMEIsRUFFMUIsYUFBYSxFQUdiLGlCQUFpQixFQUNqQixzQkFBc0IsRUFHdEIsV0FBVyxFQUlYLFNBQVMsRUFFVCxRQUFRLEVBR1IsT0FBTyxHQUNSLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQU1MLFVBQVUsRUFDVixFQUFFLEVBRUYsb0JBQW9CLEdBVXJCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBNEIsbUJBQW1CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBZSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvRSxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLGVBQWUsRUFDZixzQkFBc0IsRUFDdEIsbUJBQW1CLEVBRW5C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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/aztec-node",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.68.0",
|
|
4
4
|
"main": "dest/index.js",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"clean": "rm -rf ./dest .tsbuildinfo",
|
|
24
24
|
"formatting": "run -T prettier --check ./src && run -T eslint ./src",
|
|
25
25
|
"formatting:fix": "run -T eslint --fix ./src && run -T prettier -w ./src",
|
|
26
|
-
"test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests"
|
|
26
|
+
"test": "HARDWARE_CONCURRENCY=16 RAYON_NUM_THREADS=4 NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=8"
|
|
27
27
|
},
|
|
28
28
|
"inherits": [
|
|
29
29
|
"../package.common.json"
|
|
@@ -55,9 +55,9 @@
|
|
|
55
55
|
"rootDir": "./src",
|
|
56
56
|
"reporters": [
|
|
57
57
|
[
|
|
58
|
-
"
|
|
58
|
+
"jest-silent-reporter",
|
|
59
59
|
{
|
|
60
|
-
"
|
|
60
|
+
"useDots": true
|
|
61
61
|
}
|
|
62
62
|
]
|
|
63
63
|
],
|
|
@@ -67,23 +67,24 @@
|
|
|
67
67
|
]
|
|
68
68
|
},
|
|
69
69
|
"dependencies": {
|
|
70
|
-
"@aztec/archiver": "0.
|
|
71
|
-
"@aztec/bb-prover": "0.
|
|
72
|
-
"@aztec/circuit-types": "0.
|
|
73
|
-
"@aztec/circuits.js": "0.
|
|
74
|
-
"@aztec/
|
|
75
|
-
"@aztec/
|
|
76
|
-
"@aztec/
|
|
77
|
-
"@aztec/
|
|
78
|
-
"@aztec/
|
|
79
|
-
"@aztec/
|
|
80
|
-
"@aztec/
|
|
81
|
-
"@aztec/
|
|
82
|
-
"@aztec/
|
|
83
|
-
"@aztec/
|
|
84
|
-
"@aztec/
|
|
85
|
-
"@aztec/
|
|
86
|
-
"@aztec/
|
|
70
|
+
"@aztec/archiver": "0.68.0",
|
|
71
|
+
"@aztec/bb-prover": "0.68.0",
|
|
72
|
+
"@aztec/circuit-types": "0.68.0",
|
|
73
|
+
"@aztec/circuits.js": "0.68.0",
|
|
74
|
+
"@aztec/epoch-cache": "0.68.0",
|
|
75
|
+
"@aztec/ethereum": "0.68.0",
|
|
76
|
+
"@aztec/foundation": "0.68.0",
|
|
77
|
+
"@aztec/kv-store": "0.68.0",
|
|
78
|
+
"@aztec/merkle-tree": "0.68.0",
|
|
79
|
+
"@aztec/p2p": "0.68.0",
|
|
80
|
+
"@aztec/protocol-contracts": "0.68.0",
|
|
81
|
+
"@aztec/prover-client": "0.68.0",
|
|
82
|
+
"@aztec/sequencer-client": "0.68.0",
|
|
83
|
+
"@aztec/simulator": "0.68.0",
|
|
84
|
+
"@aztec/telemetry-client": "0.68.0",
|
|
85
|
+
"@aztec/types": "0.68.0",
|
|
86
|
+
"@aztec/validator-client": "0.68.0",
|
|
87
|
+
"@aztec/world-state": "0.68.0",
|
|
87
88
|
"koa": "^2.14.2",
|
|
88
89
|
"koa-router": "^12.0.0",
|
|
89
90
|
"tslib": "^2.4.0"
|
package/src/aztec-node/server.ts
CHANGED
|
@@ -54,8 +54,8 @@ import {
|
|
|
54
54
|
type PublicDataTreeLeafPreimage,
|
|
55
55
|
} from '@aztec/circuits.js';
|
|
56
56
|
import { computePublicDataTreeLeafSlot } from '@aztec/circuits.js/hash';
|
|
57
|
+
import { EpochCache } from '@aztec/epoch-cache';
|
|
57
58
|
import { type L1ContractAddresses, createEthereumChain } from '@aztec/ethereum';
|
|
58
|
-
import { type ContractArtifact } from '@aztec/foundation/abi';
|
|
59
59
|
import { AztecAddress } from '@aztec/foundation/aztec-address';
|
|
60
60
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
61
61
|
import { type Logger, createLogger } from '@aztec/foundation/log';
|
|
@@ -167,6 +167,8 @@ export class AztecNodeService implements AztecNode, Traceable {
|
|
|
167
167
|
log.warn(`Aztec node is accepting fake proofs`);
|
|
168
168
|
}
|
|
169
169
|
|
|
170
|
+
const epochCache = await EpochCache.create(config.l1Contracts.rollupAddress, config, { dateProvider });
|
|
171
|
+
|
|
170
172
|
// create the tx pool and the p2p client, which will need the l2 block source
|
|
171
173
|
const p2pClient = await createP2PClient(
|
|
172
174
|
P2PClientType.Full,
|
|
@@ -174,13 +176,14 @@ export class AztecNodeService implements AztecNode, Traceable {
|
|
|
174
176
|
archiver,
|
|
175
177
|
proofVerifier,
|
|
176
178
|
worldStateSynchronizer,
|
|
179
|
+
epochCache,
|
|
177
180
|
telemetry,
|
|
178
181
|
);
|
|
179
182
|
|
|
180
183
|
// start both and wait for them to sync from the block source
|
|
181
184
|
await Promise.all([p2pClient.start(), worldStateSynchronizer.start()]);
|
|
182
185
|
|
|
183
|
-
const validatorClient =
|
|
186
|
+
const validatorClient = createValidatorClient(config, { p2pClient, telemetry, dateProvider, epochCache });
|
|
184
187
|
|
|
185
188
|
// now create the sequencer
|
|
186
189
|
const sequencer = config.disableValidator
|
|
@@ -798,7 +801,7 @@ export class AztecNodeService implements AztecNode, Traceable {
|
|
|
798
801
|
@trackSpan('AztecNodeService.simulatePublicCalls', (tx: Tx) => ({
|
|
799
802
|
[Attributes.TX_HASH]: tx.tryGetTxHash()?.toString(),
|
|
800
803
|
}))
|
|
801
|
-
public async simulatePublicCalls(tx: Tx): Promise<PublicSimulationOutput> {
|
|
804
|
+
public async simulatePublicCalls(tx: Tx, enforceFeePayment = true): Promise<PublicSimulationOutput> {
|
|
802
805
|
const txHash = tx.getTxHash();
|
|
803
806
|
const blockNumber = (await this.blockSource.getBlockNumber()) + 1;
|
|
804
807
|
|
|
@@ -822,7 +825,7 @@ export class AztecNodeService implements AztecNode, Traceable {
|
|
|
822
825
|
});
|
|
823
826
|
|
|
824
827
|
try {
|
|
825
|
-
const processor = publicProcessorFactory.create(fork, prevHeader, newGlobalVariables);
|
|
828
|
+
const processor = publicProcessorFactory.create(fork, prevHeader, newGlobalVariables, enforceFeePayment);
|
|
826
829
|
|
|
827
830
|
// REFACTOR: Consider merging ProcessReturnValues into ProcessedTx
|
|
828
831
|
const [processedTxs, failedTxs, returns] = await processor.process([tx]);
|
|
@@ -901,10 +904,8 @@ export class AztecNodeService implements AztecNode, Traceable {
|
|
|
901
904
|
return this.contractDataSource.addContractClass(contractClass);
|
|
902
905
|
}
|
|
903
906
|
|
|
904
|
-
public
|
|
905
|
-
this.
|
|
906
|
-
// TODO: Node should validate the artifact before accepting it
|
|
907
|
-
return this.contractDataSource.addContractArtifact(address, artifact);
|
|
907
|
+
public registerContractFunctionNames(_address: AztecAddress, names: Record<string, string>): Promise<void> {
|
|
908
|
+
return this.contractDataSource.registerContractFunctionNames(_address, names);
|
|
908
909
|
}
|
|
909
910
|
|
|
910
911
|
public flushTxs(): Promise<void> {
|