@aztec/txe 0.86.0-starknet.1 → 0.87.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.
- package/dest/oracle/txe_oracle.d.ts +10 -6
- package/dest/oracle/txe_oracle.d.ts.map +1 -1
- package/dest/oracle/txe_oracle.js +190 -13
- package/dest/state_machine/archiver.d.ts +6 -0
- package/dest/state_machine/archiver.d.ts.map +1 -1
- package/dest/state_machine/archiver.js +10 -3
- package/dest/state_machine/dummy_p2p_client.d.ts +4 -1
- package/dest/state_machine/dummy_p2p_client.d.ts.map +1 -1
- package/dest/state_machine/dummy_p2p_client.js +9 -0
- package/dest/state_machine/index.d.ts.map +1 -1
- package/dest/state_machine/index.js +3 -1
- package/dest/state_machine/synchronizer.d.ts +2 -1
- package/dest/state_machine/synchronizer.d.ts.map +1 -1
- package/dest/state_machine/synchronizer.js +3 -0
- package/dest/txe_service/txe_service.d.ts +12 -3
- package/dest/txe_service/txe_service.d.ts.map +1 -1
- package/dest/txe_service/txe_service.js +221 -37
- package/dest/util/encoding.d.ts +11 -4
- package/dest/util/encoding.d.ts.map +1 -1
- package/dest/util/encoding.js +38 -2
- package/package.json +18 -18
- package/src/oracle/txe_oracle.ts +368 -15
- package/src/state_machine/archiver.ts +12 -3
- package/src/state_machine/dummy_p2p_client.ts +13 -1
- package/src/state_machine/index.ts +4 -1
- package/src/state_machine/synchronizer.ts +5 -1
- package/src/txe_service/txe_service.ts +427 -31
- package/src/util/encoding.ts +51 -2
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
3
1
|
import { type L1_TO_L2_MSG_TREE_HEIGHT } from '@aztec/constants';
|
|
4
2
|
import { Fr, Point } from '@aztec/foundation/fields';
|
|
5
3
|
import { type Logger } from '@aztec/foundation/log';
|
|
@@ -7,7 +5,7 @@ import { KeyStore } from '@aztec/key-store';
|
|
|
7
5
|
import type { AztecAsyncKVStore } from '@aztec/kv-store';
|
|
8
6
|
import type { ProtocolContract } from '@aztec/protocol-contracts';
|
|
9
7
|
import { AddressDataProvider, ContractDataProvider } from '@aztec/pxe/server';
|
|
10
|
-
import { type MessageLoadOracleInputs, type NoteData, type TypedOracle } from '@aztec/simulator/client';
|
|
8
|
+
import { ExecutionNoteCache, type MessageLoadOracleInputs, type NoteData, type TypedOracle } from '@aztec/simulator/client';
|
|
11
9
|
import { type PublicTxResult } from '@aztec/simulator/server';
|
|
12
10
|
import { type ContractArtifact, EventSelector, type FunctionAbi, FunctionSelector, type NoteSelector } from '@aztec/stdlib/abi';
|
|
13
11
|
import { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
@@ -16,7 +14,7 @@ import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
|
16
14
|
import type { ContractInstance, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
17
15
|
import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
|
|
18
16
|
import { type KeyValidationRequest, PrivateContextInputs } from '@aztec/stdlib/kernel';
|
|
19
|
-
import { ContractClassLog, IndexedTaggingSecret, LogWithTxData,
|
|
17
|
+
import { ContractClassLog, IndexedTaggingSecret, LogWithTxData, PrivateLog, type PublicLog } from '@aztec/stdlib/logs';
|
|
20
18
|
import type { NoteStatus } from '@aztec/stdlib/note';
|
|
21
19
|
import { MerkleTreeId, NullifierMembershipWitness, PublicDataWitness } from '@aztec/stdlib/trees';
|
|
22
20
|
import { BlockHeader, TxHash } from '@aztec/stdlib/tx';
|
|
@@ -56,7 +54,7 @@ export declare class TXE implements TypedOracle {
|
|
|
56
54
|
private CHAIN_ID;
|
|
57
55
|
private node;
|
|
58
56
|
private simulationProvider;
|
|
59
|
-
|
|
57
|
+
noteCache: ExecutionNoteCache;
|
|
60
58
|
private authwits;
|
|
61
59
|
private constructor();
|
|
62
60
|
static create(logger: Logger, store: AztecAsyncKVStore, protocolContracts: ProtocolContract[]): Promise<TXE>;
|
|
@@ -111,7 +109,7 @@ export declare class TXE implements TypedOracle {
|
|
|
111
109
|
getCompleteAddress(account: AztecAddress): Promise<import("@aztec/aztec.js").CompleteAddress>;
|
|
112
110
|
getAuthWitness(messageHash: Fr): Promise<Fr[] | undefined>;
|
|
113
111
|
getNotes(storageSlot: Fr, numSelects: number, selectByIndexes: number[], selectByOffsets: number[], selectByLengths: number[], selectValues: Fr[], selectComparators: number[], sortByIndexes: number[], sortByOffsets: number[], sortByLengths: number[], sortOrder: number[], limit: number, offset: number, status: NoteStatus): Promise<NoteData[]>;
|
|
114
|
-
notifyCreatedNote(storageSlot: Fr, _noteTypeId: NoteSelector, noteItems: Fr[], noteHash: Fr, counter: number):
|
|
112
|
+
notifyCreatedNote(storageSlot: Fr, _noteTypeId: NoteSelector, noteItems: Fr[], noteHash: Fr, counter: number): void;
|
|
115
113
|
notifyNullifiedNote(innerNullifier: Fr, noteHash: Fr, counter: number): Promise<void>;
|
|
116
114
|
notifyCreatedNullifier(innerNullifier: Fr): Promise<void>;
|
|
117
115
|
checkNullifierExists(innerNullifier: Fr): Promise<boolean>;
|
|
@@ -121,6 +119,7 @@ export declare class TXE implements TypedOracle {
|
|
|
121
119
|
commitState(): Promise<void>;
|
|
122
120
|
getTxRequestHash(): Fr;
|
|
123
121
|
notifyCreatedContractClassLog(_log: ContractClassLog, _counter: number): Fr;
|
|
122
|
+
simulateUtilityFunction(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, argsHash: Fr): Promise<Fr>;
|
|
124
123
|
callPrivateFunction(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, argsHash: Fr, sideEffectCounter: number, isStaticCall: boolean): Promise<{
|
|
125
124
|
endSideEffectCounter: Fr;
|
|
126
125
|
returnsHash: Fr;
|
|
@@ -152,5 +151,10 @@ export declare class TXE implements TypedOracle {
|
|
|
152
151
|
aes128Decrypt(ciphertext: Buffer, iv: Buffer, symKey: Buffer): Promise<Buffer>;
|
|
153
152
|
getSharedSecret(address: AztecAddress, ephPk: Point): Promise<Point>;
|
|
154
153
|
storePrivateEventLog(contractAddress: AztecAddress, recipient: AztecAddress, eventSelector: EventSelector, logContent: Fr[], txHash: TxHash, logIndexInTx: number, txIndexInBlock: number): Promise<void>;
|
|
154
|
+
privateCallNewFlow(from: AztecAddress, targetContractAddress: AztecAddress | undefined, functionSelector: FunctionSelector | undefined, args: Fr[], argsHash?: Fr, isStaticCall?: boolean): Promise<{
|
|
155
|
+
endSideEffectCounter: Fr;
|
|
156
|
+
returnsHash: Fr;
|
|
157
|
+
txHash: Fr;
|
|
158
|
+
}>;
|
|
155
159
|
}
|
|
156
160
|
//# sourceMappingURL=txe_oracle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"txe_oracle.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_oracle.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"txe_oracle.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_oracle.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +1,30 @@
|
|
|
1
1
|
import { Body, L2Block, Note } from '@aztec/aztec.js';
|
|
2
|
-
import { MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, NULLIFIER_SUBTREE_HEIGHT, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, PRIVATE_CONTEXT_INPUTS_LENGTH } from '@aztec/constants';
|
|
2
|
+
import { DEFAULT_GAS_LIMIT, DEFAULT_TEARDOWN_GAS_LIMIT, MAX_CONTRACT_CLASS_LOGS_PER_TX, MAX_ENQUEUED_CALLS_PER_TX, MAX_L2_GAS_PER_TX_PUBLIC_PORTION, MAX_L2_TO_L1_MSGS_PER_TX, MAX_NOTE_HASHES_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_PRIVATE_LOGS_PER_TX, NULLIFIER_SUBTREE_HEIGHT, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP, PRIVATE_CONTEXT_INPUTS_LENGTH } from '@aztec/constants';
|
|
3
3
|
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
4
4
|
import { Aes128, Schnorr, poseidon2Hash } from '@aztec/foundation/crypto';
|
|
5
5
|
import { Fr } from '@aztec/foundation/fields';
|
|
6
6
|
import { applyStringFormatting } from '@aztec/foundation/log';
|
|
7
|
-
import { Timer } from '@aztec/foundation/timer';
|
|
7
|
+
import { TestDateProvider, Timer } from '@aztec/foundation/timer';
|
|
8
8
|
import { KeyStore } from '@aztec/key-store';
|
|
9
9
|
import { AddressDataProvider, CapsuleDataProvider, ContractDataProvider, NoteDataProvider, PXEOracleInterface, PrivateEventDataProvider, TaggingDataProvider, enrichPublicSimulationError } from '@aztec/pxe/server';
|
|
10
|
-
import { ExecutionNoteCache, HashedValuesCache, Oracle, WASMSimulator, extractCallStack, extractPrivateCircuitPublicInputs, pickNotes, toACVMWitness, witnessMapToFields } from '@aztec/simulator/client';
|
|
10
|
+
import { ExecutionNoteCache, HashedValuesCache, Oracle, PrivateExecutionOracle, UtilityExecutionOracle, WASMSimulator, executePrivateFunction, extractCallStack, extractPrivateCircuitPublicInputs, pickNotes, toACVMWitness, witnessMapToFields } from '@aztec/simulator/client';
|
|
11
11
|
import { createTxForPublicCalls } from '@aztec/simulator/public/fixtures';
|
|
12
|
-
import { ExecutionError, PublicContractsDB, PublicTxSimulator, createSimulationError, resolveAssertionMessageFromError } from '@aztec/simulator/server';
|
|
13
|
-
import { FunctionSelector, countArgumentsSize } from '@aztec/stdlib/abi';
|
|
12
|
+
import { ExecutionError, PublicContractsDB, PublicProcessor, PublicTxSimulator, createSimulationError, resolveAssertionMessageFromError } from '@aztec/simulator/server';
|
|
13
|
+
import { FunctionSelector, FunctionType, countArgumentsSize } from '@aztec/stdlib/abi';
|
|
14
14
|
import { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
15
15
|
import { PublicDataWrite } from '@aztec/stdlib/avm';
|
|
16
16
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
17
17
|
import { SimulationError } from '@aztec/stdlib/errors';
|
|
18
|
-
import { Gas, GasFees } from '@aztec/stdlib/gas';
|
|
19
|
-
import { computeNoteHashNonce, computePublicDataTreeLeafSlot, computeUniqueNoteHash, siloNoteHash, siloNullifier } from '@aztec/stdlib/hash';
|
|
20
|
-
import { PrivateContextInputs, PublicCallRequest } from '@aztec/stdlib/kernel';
|
|
18
|
+
import { Gas, GasFees, GasSettings } from '@aztec/stdlib/gas';
|
|
19
|
+
import { computeNoteHashNonce, computePublicDataTreeLeafSlot, computeUniqueNoteHash, computeVarArgsHash, siloNoteHash, siloNullifier } from '@aztec/stdlib/hash';
|
|
20
|
+
import { PartialPrivateTailPublicInputsForPublic, PartialPrivateTailPublicInputsForRollup, PrivateContextInputs, PrivateKernelTailCircuitPublicInputs, PrivateToPublicAccumulatedData, PrivateToRollupAccumulatedData, PublicCallRequest, RollupValidationRequests, ScopedLogHash } from '@aztec/stdlib/kernel';
|
|
21
21
|
import { deriveKeys } from '@aztec/stdlib/keys';
|
|
22
|
+
import { PrivateLog } from '@aztec/stdlib/logs';
|
|
23
|
+
import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
|
|
24
|
+
import { ClientIvcProof } from '@aztec/stdlib/proofs';
|
|
22
25
|
import { makeAppendOnlyTreeSnapshot, makeContentCommitment, makeGlobalVariables, makeHeader } from '@aztec/stdlib/testing';
|
|
23
26
|
import { AppendOnlyTreeSnapshot, MerkleTreeId, NullifierMembershipWitness, PublicDataTreeLeaf, PublicDataWitness } from '@aztec/stdlib/trees';
|
|
24
|
-
import { BlockHeader, CallContext, GlobalVariables, PublicCallRequestWithCalldata, TxEffect, TxHash } from '@aztec/stdlib/tx';
|
|
27
|
+
import { BlockHeader, CallContext, GlobalVariables, HashedValues, PrivateExecutionResult, PublicCallRequestWithCalldata, Tx, TxConstantData, TxContext, TxEffect, TxHash, collectNested } from '@aztec/stdlib/tx';
|
|
25
28
|
import { ForkCheckpoint } from '@aztec/world-state/native';
|
|
26
29
|
import { TXEStateMachine } from '../state_machine/index.js';
|
|
27
30
|
import { TXEAccountDataProvider } from '../util/txe_account_data_provider.js';
|
|
@@ -240,8 +243,7 @@ export class TXE {
|
|
|
240
243
|
addPublicLogs(logs) {
|
|
241
244
|
logs.forEach((log)=>{
|
|
242
245
|
try {
|
|
243
|
-
|
|
244
|
-
const tag = log.log[1];
|
|
246
|
+
const tag = log.fields[0];
|
|
245
247
|
this.logger.verbose(`Found tagged public log with tag ${tag.toString()} in block ${this.blockNumber}`);
|
|
246
248
|
this.publicLogs.push(log);
|
|
247
249
|
} catch (err) {
|
|
@@ -412,7 +414,6 @@ export class TXE {
|
|
|
412
414
|
noteHash
|
|
413
415
|
}, counter);
|
|
414
416
|
this.sideEffectCounter = counter + 1;
|
|
415
|
-
return Promise.resolve();
|
|
416
417
|
}
|
|
417
418
|
async notifyNullifiedNote(innerNullifier, noteHash, counter) {
|
|
418
419
|
await this.checkNullifiersNotInTree(this.contractAddress, [
|
|
@@ -539,6 +540,46 @@ export class TXE {
|
|
|
539
540
|
notifyCreatedContractClassLog(_log, _counter) {
|
|
540
541
|
throw new Error('Method not implemented.');
|
|
541
542
|
}
|
|
543
|
+
async simulateUtilityFunction(targetContractAddress, functionSelector, argsHash) {
|
|
544
|
+
const artifact = await this.contractDataProvider.getFunctionArtifact(targetContractAddress, functionSelector);
|
|
545
|
+
if (!artifact) {
|
|
546
|
+
throw new Error(`Cannot call ${functionSelector} as there is artifact found at ${targetContractAddress}.`);
|
|
547
|
+
}
|
|
548
|
+
const call = {
|
|
549
|
+
name: artifact.name,
|
|
550
|
+
selector: functionSelector,
|
|
551
|
+
to: targetContractAddress
|
|
552
|
+
};
|
|
553
|
+
const entryPointArtifact = await this.pxeOracleInterface.getFunctionArtifact(call.to, call.selector);
|
|
554
|
+
if (entryPointArtifact.functionType !== FunctionType.UTILITY) {
|
|
555
|
+
throw new Error(`Cannot run ${entryPointArtifact.functionType} function as utility`);
|
|
556
|
+
}
|
|
557
|
+
const oracle = new UtilityExecutionOracle(call.to, [], [], this.pxeOracleInterface, undefined, undefined);
|
|
558
|
+
try {
|
|
559
|
+
this.logger.verbose(`Executing utility function ${entryPointArtifact.name}`, {
|
|
560
|
+
contract: call.to,
|
|
561
|
+
selector: call.selector
|
|
562
|
+
});
|
|
563
|
+
const args = await this.loadFromExecutionCache(argsHash);
|
|
564
|
+
const initialWitness = toACVMWitness(0, args);
|
|
565
|
+
const acirExecutionResult = await this.simulationProvider.executeUserCircuit(initialWitness, entryPointArtifact, new Oracle(oracle)).catch((err)=>{
|
|
566
|
+
err.message = resolveAssertionMessageFromError(err, entryPointArtifact);
|
|
567
|
+
throw new ExecutionError(err.message, {
|
|
568
|
+
contractAddress: call.to,
|
|
569
|
+
functionSelector: call.selector
|
|
570
|
+
}, extractCallStack(err, entryPointArtifact.debug), {
|
|
571
|
+
cause: err
|
|
572
|
+
});
|
|
573
|
+
});
|
|
574
|
+
const returnWitness = witnessMapToFields(acirExecutionResult.returnWitness);
|
|
575
|
+
this.logger.verbose(`Utility simulation for ${call.to}.${call.selector} completed`);
|
|
576
|
+
const returnHash = await computeVarArgsHash(returnWitness);
|
|
577
|
+
this.storeInExecutionCache(returnWitness, returnHash);
|
|
578
|
+
return returnHash;
|
|
579
|
+
} catch (err) {
|
|
580
|
+
throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
|
|
581
|
+
}
|
|
582
|
+
}
|
|
542
583
|
async callPrivateFunction(targetContractAddress, functionSelector, argsHash, sideEffectCounter, isStaticCall) {
|
|
543
584
|
this.logger.verbose(`Executing external function ${await this.getDebugFunctionName(targetContractAddress, functionSelector)}@${targetContractAddress} isStaticCall=${isStaticCall}`);
|
|
544
585
|
// Store and modify env
|
|
@@ -624,7 +665,7 @@ export class TXE {
|
|
|
624
665
|
const checkpoint = await ForkCheckpoint.new(db);
|
|
625
666
|
try {
|
|
626
667
|
const contractsDB = new PublicContractsDB(new TXEPublicContractDataSource(this));
|
|
627
|
-
const simulator = new PublicTxSimulator(this.baseFork, contractsDB, globalVariables, /*doMerkleOperations=*/ false);
|
|
668
|
+
const simulator = new PublicTxSimulator(this.baseFork, contractsDB, globalVariables, /*doMerkleOperations=*/ false, /*skipFeeEnforcement=*/ false, /*clientInitiatedSimulation=*/ true);
|
|
628
669
|
const { usedTxRequestHashForNonces } = this.noteCache.finish();
|
|
629
670
|
const firstNullifier = usedTxRequestHashForNonces ? this.getTxRequestHash() : this.noteCache.getAllNullifiers()[0];
|
|
630
671
|
// When setting up a teardown call, we tell it that
|
|
@@ -820,4 +861,140 @@ export class TXE {
|
|
|
820
861
|
storePrivateEventLog(contractAddress, recipient, eventSelector, logContent, txHash, logIndexInTx, txIndexInBlock) {
|
|
821
862
|
return this.pxeOracleInterface.storePrivateEventLog(contractAddress, recipient, eventSelector, logContent, txHash, logIndexInTx, txIndexInBlock);
|
|
822
863
|
}
|
|
864
|
+
async privateCallNewFlow(from, targetContractAddress = AztecAddress.zero(), functionSelector = FunctionSelector.empty(), args, argsHash = Fr.zero(), isStaticCall = false) {
|
|
865
|
+
this.logger.verbose(`Executing external function ${await this.getDebugFunctionName(targetContractAddress, functionSelector)}@${targetContractAddress} isStaticCall=${isStaticCall}`);
|
|
866
|
+
const artifact = await this.contractDataProvider.getFunctionArtifact(targetContractAddress, functionSelector);
|
|
867
|
+
if (artifact === undefined) {
|
|
868
|
+
throw new Error('Function Artifact does not exist');
|
|
869
|
+
}
|
|
870
|
+
const callContext = new CallContext(from, targetContractAddress, functionSelector, isStaticCall);
|
|
871
|
+
const gasLimits = new Gas(DEFAULT_GAS_LIMIT, MAX_L2_GAS_PER_TX_PUBLIC_PORTION);
|
|
872
|
+
const teardownGasLimits = new Gas(DEFAULT_TEARDOWN_GAS_LIMIT, MAX_L2_GAS_PER_TX_PUBLIC_PORTION);
|
|
873
|
+
const gasSettings = new GasSettings(gasLimits, teardownGasLimits, GasFees.empty(), GasFees.empty());
|
|
874
|
+
const txContext = new TxContext(this.CHAIN_ID, this.ROLLUP_VERSION, gasSettings);
|
|
875
|
+
const blockHeader = await this.pxeOracleInterface.getBlockHeader();
|
|
876
|
+
const noteCache = new ExecutionNoteCache(this.getTxRequestHash());
|
|
877
|
+
const context = new PrivateExecutionOracle(argsHash, txContext, callContext, /** Header of a block whose state is used during private execution (not the block the transaction is included in). */ blockHeader, /** List of transient auth witnesses to be used during this simulation */ [], /** List of transient auth witnesses to be used during this simulation */ [], HashedValuesCache.create(), noteCache, this.pxeOracleInterface, this.simulationProvider, 0, 1);
|
|
878
|
+
context.storeInExecutionCache(args, argsHash);
|
|
879
|
+
// Note: This is a slight modification of simulator.run without any of the checks. Maybe we should modify simulator.run with a boolean value to skip checks.
|
|
880
|
+
let result;
|
|
881
|
+
try {
|
|
882
|
+
const executionResult = await executePrivateFunction(this.simulationProvider, context, artifact, targetContractAddress, functionSelector);
|
|
883
|
+
const { usedTxRequestHashForNonces } = noteCache.finish();
|
|
884
|
+
const firstNullifierHint = usedTxRequestHashForNonces ? Fr.ZERO : noteCache.getAllNullifiers()[0];
|
|
885
|
+
const publicCallRequests = collectNested([
|
|
886
|
+
executionResult
|
|
887
|
+
], (r)=>[
|
|
888
|
+
...r.publicInputs.publicCallRequests.map((r)=>r.inner),
|
|
889
|
+
r.publicInputs.publicTeardownCallRequest
|
|
890
|
+
]).filter((r)=>!r.isEmpty());
|
|
891
|
+
const publicFunctionsCalldata = await Promise.all(publicCallRequests.map(async (r)=>{
|
|
892
|
+
const calldata = await context.loadFromExecutionCache(r.calldataHash);
|
|
893
|
+
return new HashedValues(calldata, r.calldataHash);
|
|
894
|
+
}));
|
|
895
|
+
result = new PrivateExecutionResult(executionResult, firstNullifierHint, publicFunctionsCalldata);
|
|
896
|
+
} catch (err) {
|
|
897
|
+
throw createSimulationError(err instanceof Error ? err : new Error('Unknown error during private execution'));
|
|
898
|
+
}
|
|
899
|
+
const uniqueNoteHashes = [];
|
|
900
|
+
const taggedPrivateLogs = [];
|
|
901
|
+
const nullifiers = result.firstNullifier.equals(Fr.ZERO) ? [
|
|
902
|
+
this.getTxRequestHash()
|
|
903
|
+
] : noteCache.getAllNullifiers();
|
|
904
|
+
const l2ToL1Messages = [];
|
|
905
|
+
const contractClassLogsHashes = [];
|
|
906
|
+
const publicCallRequests = [];
|
|
907
|
+
const nonceGenerator = nullifiers[0];
|
|
908
|
+
let publicTeardownCallRequest;
|
|
909
|
+
let noteHashIndexInTx = 0;
|
|
910
|
+
const executions = [
|
|
911
|
+
result.entrypoint
|
|
912
|
+
];
|
|
913
|
+
while(executions.length !== 0){
|
|
914
|
+
const execution = executions.shift();
|
|
915
|
+
executions.unshift(...execution.nestedExecutions);
|
|
916
|
+
const { contractAddress } = execution.publicInputs.callContext;
|
|
917
|
+
const noteHashesFromExecution = await Promise.all(execution.publicInputs.noteHashes.filter((noteHash)=>!noteHash.isEmpty()).map(async (noteHash)=>{
|
|
918
|
+
const nonce = await computeNoteHashNonce(nonceGenerator, noteHashIndexInTx++);
|
|
919
|
+
const siloedNoteHash = await siloNoteHash(contractAddress, noteHash.value);
|
|
920
|
+
// We could defer this to the public processor, and pass this in as non-revertible.
|
|
921
|
+
return computeUniqueNoteHash(nonce, siloedNoteHash);
|
|
922
|
+
}));
|
|
923
|
+
const privateLogsFromExecution = await Promise.all(execution.publicInputs.privateLogs.filter((privateLog)=>!privateLog.isEmpty()).map(async (metadata)=>{
|
|
924
|
+
metadata.log.fields[0] = await poseidon2Hash([
|
|
925
|
+
contractAddress,
|
|
926
|
+
metadata.log.fields[0]
|
|
927
|
+
]);
|
|
928
|
+
return metadata.log;
|
|
929
|
+
}));
|
|
930
|
+
uniqueNoteHashes.push(...noteHashesFromExecution);
|
|
931
|
+
taggedPrivateLogs.push(...privateLogsFromExecution);
|
|
932
|
+
l2ToL1Messages.push(...execution.publicInputs.l2ToL1Msgs.filter((l2ToL1Message)=>!l2ToL1Message.isEmpty()).map((message)=>message.scope(contractAddress)));
|
|
933
|
+
contractClassLogsHashes.push(...execution.publicInputs.contractClassLogsHashes.filter((contractClassLogsHash)=>!contractClassLogsHash.isEmpty()).map((message)=>message.logHash.scope(contractAddress)));
|
|
934
|
+
publicCallRequests.push(...execution.publicInputs.publicCallRequests.filter((publicCallRequest)=>!publicCallRequest.isEmpty()).map((callRequest)=>callRequest.inner));
|
|
935
|
+
if (publicTeardownCallRequest !== undefined && !execution.publicInputs.publicTeardownCallRequest.isEmpty()) {
|
|
936
|
+
throw new Error('Trying to set multiple teardown requests');
|
|
937
|
+
}
|
|
938
|
+
publicTeardownCallRequest = execution.publicInputs.publicTeardownCallRequest.isEmpty() ? publicTeardownCallRequest : execution.publicInputs.publicTeardownCallRequest;
|
|
939
|
+
}
|
|
940
|
+
const globals = makeGlobalVariables();
|
|
941
|
+
globals.blockNumber = new Fr(this.blockNumber);
|
|
942
|
+
globals.gasFees = GasFees.empty();
|
|
943
|
+
const contractsDB = new PublicContractsDB(new TXEPublicContractDataSource(this));
|
|
944
|
+
const simulator = new PublicTxSimulator(this.baseFork, contractsDB, globals, true, true);
|
|
945
|
+
const processor = new PublicProcessor(globals, this.baseFork, contractsDB, simulator, new TestDateProvider());
|
|
946
|
+
const constantData = new TxConstantData(blockHeader, txContext, Fr.zero(), Fr.zero());
|
|
947
|
+
const hasPublicCalls = result.publicFunctionCalldata.length !== 0;
|
|
948
|
+
let inputsForRollup;
|
|
949
|
+
let inputsForPublic;
|
|
950
|
+
// Private only
|
|
951
|
+
if (result.publicFunctionCalldata.length === 0) {
|
|
952
|
+
const accumulatedDataForRollup = new PrivateToRollupAccumulatedData(padArrayEnd(uniqueNoteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX), padArrayEnd(nullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX), padArrayEnd(l2ToL1Messages, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX), padArrayEnd(taggedPrivateLogs, PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX), padArrayEnd(contractClassLogsHashes, ScopedLogHash.empty(), MAX_CONTRACT_CLASS_LOGS_PER_TX));
|
|
953
|
+
inputsForRollup = new PartialPrivateTailPublicInputsForRollup(accumulatedDataForRollup);
|
|
954
|
+
} else {
|
|
955
|
+
const accumulatedDataForPublic = new PrivateToPublicAccumulatedData(padArrayEnd(uniqueNoteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX), padArrayEnd(nullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX), padArrayEnd(l2ToL1Messages, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX), padArrayEnd(taggedPrivateLogs, PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX), padArrayEnd(contractClassLogsHashes, ScopedLogHash.empty(), MAX_CONTRACT_CLASS_LOGS_PER_TX), padArrayEnd(publicCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX));
|
|
956
|
+
inputsForPublic = new PartialPrivateTailPublicInputsForPublic(// We are using non-revertible because we set the first nullifier to be used as a nonce generator, otherwise the tx hash is manually calculated.
|
|
957
|
+
// nonrevertible
|
|
958
|
+
accumulatedDataForPublic, // revertible
|
|
959
|
+
PrivateToPublicAccumulatedData.empty(), publicTeardownCallRequest ?? PublicCallRequest.empty());
|
|
960
|
+
}
|
|
961
|
+
const txData = new PrivateKernelTailCircuitPublicInputs(constantData, RollupValidationRequests.empty(), /*gasUsed=*/ new Gas(0, 0), /*feePayer=*/ AztecAddress.zero(), hasPublicCalls ? inputsForPublic : undefined, !hasPublicCalls ? inputsForRollup : undefined);
|
|
962
|
+
const tx = new Tx(txData, ClientIvcProof.empty(), [], result.publicFunctionCalldata);
|
|
963
|
+
const results = await processor.process([
|
|
964
|
+
tx
|
|
965
|
+
]);
|
|
966
|
+
const processedTxs = results[0];
|
|
967
|
+
const failedTxs = results[1];
|
|
968
|
+
if (failedTxs.length !== 0) {
|
|
969
|
+
throw new Error('Public execution has failed');
|
|
970
|
+
}
|
|
971
|
+
const fork = this.baseFork;
|
|
972
|
+
const txEffect = TxEffect.empty();
|
|
973
|
+
txEffect.noteHashes = processedTxs[0].txEffect.noteHashes;
|
|
974
|
+
txEffect.nullifiers = processedTxs[0].txEffect.nullifiers;
|
|
975
|
+
txEffect.privateLogs = taggedPrivateLogs;
|
|
976
|
+
txEffect.publicLogs = processedTxs[0].txEffect.publicLogs;
|
|
977
|
+
txEffect.publicDataWrites = processedTxs[0].txEffect.publicDataWrites;
|
|
978
|
+
txEffect.txHash = new TxHash(new Fr(this.blockNumber));
|
|
979
|
+
const body = new Body([
|
|
980
|
+
txEffect
|
|
981
|
+
]);
|
|
982
|
+
const l2Block = new L2Block(makeAppendOnlyTreeSnapshot(this.blockNumber + 1), makeHeader(0, this.blockNumber, this.blockNumber), body);
|
|
983
|
+
const l1ToL2Messages = Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(0).map(Fr.zero);
|
|
984
|
+
await fork.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l1ToL2Messages);
|
|
985
|
+
const stateReference = await fork.getStateReference();
|
|
986
|
+
const archiveInfo = await fork.getTreeInfo(MerkleTreeId.ARCHIVE);
|
|
987
|
+
const header = new BlockHeader(new AppendOnlyTreeSnapshot(new Fr(archiveInfo.root), Number(archiveInfo.size)), makeContentCommitment(), stateReference, globals, Fr.ZERO, Fr.ZERO);
|
|
988
|
+
header.globalVariables.blockNumber = new Fr(this.blockNumber);
|
|
989
|
+
l2Block.header = header;
|
|
990
|
+
await fork.updateArchive(l2Block.header);
|
|
991
|
+
await this.stateMachine.handleL2Block(l2Block);
|
|
992
|
+
const txRequestHash = this.getTxRequestHash();
|
|
993
|
+
this.setBlockNumber(this.blockNumber + 1);
|
|
994
|
+
return {
|
|
995
|
+
endSideEffectCounter: result.entrypoint.publicInputs.endSideEffectCounter,
|
|
996
|
+
returnsHash: result.entrypoint.publicInputs.returnsHash,
|
|
997
|
+
txHash: txRequestHash
|
|
998
|
+
};
|
|
999
|
+
}
|
|
823
1000
|
}
|
|
@@ -19,6 +19,12 @@ export declare class TXEArchiver extends ArchiverStoreHelper {
|
|
|
19
19
|
* @returns The number of the latest L2 block proven seen by the block source implementation.
|
|
20
20
|
*/
|
|
21
21
|
getProvenBlockNumber(): Promise<number>;
|
|
22
|
+
/**
|
|
23
|
+
* Gets a published l2 block. If a negative number is passed, the block returned is the most recent.
|
|
24
|
+
* @param number - The block number to return (inclusive).
|
|
25
|
+
* @returns The requested L2 block.
|
|
26
|
+
*/
|
|
27
|
+
getPublishedBlock(number: number): Promise<PublishedL2Block | undefined>;
|
|
22
28
|
/**
|
|
23
29
|
* Gets an l2 block. If a negative number is passed, the block returned is the most recent.
|
|
24
30
|
* @param number - The block number to return (inclusive).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../../src/state_machine/archiver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAuB,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAClG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAKpD,qBAAa,WAAY,SAAQ,mBAAmB;gBACtC,EAAE,EAAE,iBAAiB;IAIX,SAAS,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAS7E;;;OAGG;IACI,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAIxC;;;OAGG;IACI,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI9C;;;;OAIG;
|
|
1
|
+
{"version":3,"file":"archiver.d.ts","sourceRoot":"","sources":["../../src/state_machine/archiver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAuB,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAClG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAKpD,qBAAa,WAAY,SAAQ,mBAAmB;gBACtC,EAAE,EAAE,iBAAiB;IAIX,SAAS,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAS7E;;;OAGG;IACI,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAIxC;;;OAGG;IACI,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI9C;;;;OAIG;IACmB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAY9F;;;;OAIG;IACI,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAI7D;;;;OAIG;IACU,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAWjF,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAI7E,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAIlC,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAInC,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAI3D,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAIrE,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvD,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAI5B,cAAc,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAI5C,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC;IAI5G,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC;IAIvC,kBAAkB,IAAI,OAAO,CAAC,UAAU,CAAC;CAGjD"}
|
|
@@ -26,10 +26,10 @@ export class TXEArchiver extends ArchiverStoreHelper {
|
|
|
26
26
|
return this.store.getSynchedL2BlockNumber();
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
29
|
-
* Gets
|
|
29
|
+
* Gets a published l2 block. If a negative number is passed, the block returned is the most recent.
|
|
30
30
|
* @param number - The block number to return (inclusive).
|
|
31
31
|
* @returns The requested L2 block.
|
|
32
|
-
*/ async
|
|
32
|
+
*/ async getPublishedBlock(number) {
|
|
33
33
|
// If the number provided is -ve, then return the latest block.
|
|
34
34
|
if (number < 0) {
|
|
35
35
|
number = await this.store.getSynchedL2BlockNumber();
|
|
@@ -38,7 +38,14 @@ export class TXEArchiver extends ArchiverStoreHelper {
|
|
|
38
38
|
return undefined;
|
|
39
39
|
}
|
|
40
40
|
const blocks = await this.store.getPublishedBlocks(number, 1);
|
|
41
|
-
return blocks.length === 0 ? undefined : blocks[0]
|
|
41
|
+
return blocks.length === 0 ? undefined : blocks[0];
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Gets an l2 block. If a negative number is passed, the block returned is the most recent.
|
|
45
|
+
* @param number - The block number to return (inclusive).
|
|
46
|
+
* @returns The requested L2 block.
|
|
47
|
+
*/ getBlock(number) {
|
|
48
|
+
return this.getPublishedBlock(number).then((block)=>block?.block);
|
|
42
49
|
}
|
|
43
50
|
/**
|
|
44
51
|
* Gets an l2 block header.
|
|
@@ -4,10 +4,12 @@ import type { PeerInfo } from '@aztec/stdlib/interfaces/server';
|
|
|
4
4
|
import type { BlockAttestation, BlockProposal } from '@aztec/stdlib/p2p';
|
|
5
5
|
import type { Tx, TxHash } from '@aztec/stdlib/tx';
|
|
6
6
|
export declare class DummyP2P implements P2P {
|
|
7
|
+
validate(_txs: Tx[]): Promise<void>;
|
|
8
|
+
clear(): Promise<void>;
|
|
7
9
|
getPendingTxs(): Promise<Tx[]>;
|
|
8
10
|
getEncodedEnr(): Promise<string | undefined>;
|
|
9
11
|
getPeers(_includePending?: boolean): Promise<PeerInfo[]>;
|
|
10
|
-
broadcastProposal(_proposal: BlockProposal): void
|
|
12
|
+
broadcastProposal(_proposal: BlockProposal): Promise<void>;
|
|
11
13
|
registerBlockProposalHandler(_handler: (block: BlockProposal) => Promise<BlockAttestation | undefined>): void;
|
|
12
14
|
requestTxs(_txHashes: TxHash[]): Promise<(Tx | undefined)[]>;
|
|
13
15
|
requestTxByHash(_txHash: TxHash): Promise<Tx | undefined>;
|
|
@@ -41,5 +43,6 @@ export declare class DummyP2P implements P2P {
|
|
|
41
43
|
getSyncedLatestBlockNum(): Promise<number>;
|
|
42
44
|
getSyncedProvenBlockNum(): Promise<number>;
|
|
43
45
|
getSyncedLatestSlot(): Promise<bigint>;
|
|
46
|
+
markTxsAsNonEvictable(_: TxHash[]): Promise<void>;
|
|
44
47
|
}
|
|
45
48
|
//# sourceMappingURL=dummy_p2p_client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dummy_p2p_client.d.ts","sourceRoot":"","sources":["../../src/state_machine/dummy_p2p_client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEnD,qBAAa,QAAS,YAAW,GAAG;IAC3B,aAAa,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;IAI9B,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI5C,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAIxD,iBAAiB,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"dummy_p2p_client.d.ts","sourceRoot":"","sources":["../../src/state_machine/dummy_p2p_client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
export class DummyP2P {
|
|
2
|
+
validate(_txs) {
|
|
3
|
+
return Promise.resolve();
|
|
4
|
+
}
|
|
5
|
+
clear() {
|
|
6
|
+
throw new Error('DummyP2P does not implement "clear".');
|
|
7
|
+
}
|
|
2
8
|
getPendingTxs() {
|
|
3
9
|
throw new Error('DummyP2P does not implement "getPendingTxs"');
|
|
4
10
|
}
|
|
@@ -110,4 +116,7 @@ export class DummyP2P {
|
|
|
110
116
|
getSyncedLatestSlot() {
|
|
111
117
|
throw new Error('DummyP2P does not implement "getSyncedLatestSlot"');
|
|
112
118
|
}
|
|
119
|
+
markTxsAsNonEvictable(_) {
|
|
120
|
+
throw new Error('DummyP2P does not implement "markTxsAsNonEvictable".');
|
|
121
|
+
}
|
|
113
122
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/state_machine/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/state_machine/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAGjE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,qBAAa,eAAe;IAEjB,IAAI,EAAE,SAAS;IACf,YAAY,EAAE,eAAe;IAC7B,QAAQ,EAAE,WAAW;IACrB,gBAAgB,EAAE,gBAAgB;gBAHlC,IAAI,EAAE,SAAS,EACf,YAAY,EAAE,eAAe,EAC7B,QAAQ,EAAE,WAAW,EACrB,gBAAgB,EAAE,gBAAgB;WAGvB,MAAM,CAAC,EAAE,EAAE,iBAAiB;IA+BnC,aAAa,CAAC,KAAK,EAAE,OAAO;CAiB1C"}
|
|
@@ -2,6 +2,7 @@ import { AztecNodeService } from '@aztec/aztec-node';
|
|
|
2
2
|
import { TestCircuitVerifier } from '@aztec/bb-prover/test';
|
|
3
3
|
import { createLogger } from '@aztec/foundation/log';
|
|
4
4
|
import { SyncDataProvider } from '@aztec/pxe/server';
|
|
5
|
+
import { getPackageVersion } from '@aztec/stdlib/update-checker';
|
|
5
6
|
import { TXEArchiver } from './archiver.js';
|
|
6
7
|
import { DummyP2P } from './dummy_p2p_client.js';
|
|
7
8
|
import { TXEGlobalVariablesBuilder } from './global_variable_builder.js';
|
|
@@ -22,8 +23,9 @@ export class TXEStateMachine {
|
|
|
22
23
|
const synchronizer = await TXESynchronizer.create();
|
|
23
24
|
const syncDataProvider = new SyncDataProvider(db);
|
|
24
25
|
const aztecNodeConfig = {};
|
|
26
|
+
const log = createLogger('txe_node');
|
|
25
27
|
const node = new AztecNodeService(aztecNodeConfig, new DummyP2P(), archiver, archiver, archiver, archiver, synchronizer, undefined, undefined, // version and chainId should match the ones in txe oracle
|
|
26
|
-
1, 1, new TXEGlobalVariablesBuilder(), new TestCircuitVerifier(), undefined,
|
|
28
|
+
1, 1, new TXEGlobalVariablesBuilder(), getPackageVersion() ?? '', new TestCircuitVerifier(), undefined, log);
|
|
27
29
|
return new this(node, synchronizer, archiver, syncDataProvider);
|
|
28
30
|
}
|
|
29
31
|
async handleL2Block(block) {
|
|
@@ -22,10 +22,11 @@ export declare class TXESynchronizer implements WorldStateSynchronizer {
|
|
|
22
22
|
getSnapshot(blockNumber: number): MerkleTreeReadOperations;
|
|
23
23
|
/** Backups the db to the target path. */
|
|
24
24
|
backupTo(dstPath: string, compact?: boolean): Promise<Record<Exclude<SnapshotDataKeys, 'archiver'>, string>>;
|
|
25
|
-
start(): void
|
|
25
|
+
start(): Promise<void>;
|
|
26
26
|
status(): Promise<WorldStateSynchronizerStatus>;
|
|
27
27
|
stop(): Promise<void>;
|
|
28
28
|
stopSync(): Promise<void>;
|
|
29
29
|
resumeSync(): void;
|
|
30
|
+
clear(): Promise<void>;
|
|
30
31
|
}
|
|
31
32
|
//# sourceMappingURL=synchronizer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"synchronizer.d.ts","sourceRoot":"","sources":["../../src/state_machine/synchronizer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EACzB,gBAAgB,EAChB,sBAAsB,EACtB,4BAA4B,EAC7B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,qBAAa,eAAgB,YAAW,sBAAsB;IAIzC,uBAAuB,EAAE,uBAAuB;IAFnE,OAAO,CAAC,WAAW,CAAK;gBAEL,uBAAuB,EAAE,uBAAuB;WAEtD,MAAM;IAMN,aAAa,CAAC,KAAK,EAAE,OAAO;IASzC;;;;;OAKG;IACI,aAAa,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,4BAA4B,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAIvG,+FAA+F;IACxF,YAAY,IAAI,wBAAwB;IAI/C,qFAAqF;IAC9E,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAI/D,uFAAuF;IAChF,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,wBAAwB;IAIjE,yCAAyC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;IAI5G,KAAK,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"synchronizer.d.ts","sourceRoot":"","sources":["../../src/state_machine/synchronizer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EACzB,gBAAgB,EAChB,sBAAsB,EACtB,4BAA4B,EAC7B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,qBAAa,eAAgB,YAAW,sBAAsB;IAIzC,uBAAuB,EAAE,uBAAuB;IAFnE,OAAO,CAAC,WAAW,CAAK;gBAEL,uBAAuB,EAAE,uBAAuB;WAEtD,MAAM;IAMN,aAAa,CAAC,KAAK,EAAE,OAAO;IASzC;;;;;OAKG;IACI,aAAa,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,4BAA4B,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAIvG,+FAA+F;IACxF,YAAY,IAAI,wBAAwB;IAI/C,qFAAqF;IAC9E,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAI/D,uFAAuF;IAChF,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,wBAAwB;IAIjE,yCAAyC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;IAI5G,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,MAAM,IAAI,OAAO,CAAC,4BAA4B,CAAC;IAI/C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzB,UAAU,IAAI,IAAI;IAIlB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG9B"}
|
|
@@ -7,6 +7,7 @@ import { type ForeignCallArray, type ForeignCallSingle } from '../util/encoding.
|
|
|
7
7
|
export declare class TXEService {
|
|
8
8
|
private logger;
|
|
9
9
|
private typedOracle;
|
|
10
|
+
oraclesEnabled: boolean;
|
|
10
11
|
constructor(logger: Logger, typedOracle: TypedOracle);
|
|
11
12
|
static init(logger: Logger, protocolContracts: ProtocolContract[]): Promise<TXEService>;
|
|
12
13
|
getPrivateContextInputs(blockNumber: ForeignCallSingle): Promise<{
|
|
@@ -72,7 +73,7 @@ export declare class TXEService {
|
|
|
72
73
|
getPublicDataWitness(blockNumber: ForeignCallSingle, leafSlot: ForeignCallSingle): Promise<{
|
|
73
74
|
values: (string | ForeignCallArray)[];
|
|
74
75
|
}>;
|
|
75
|
-
getNotes(storageSlot: ForeignCallSingle, numSelects: ForeignCallSingle, selectByIndexes: ForeignCallArray, selectByOffsets: ForeignCallArray, selectByLengths: ForeignCallArray, selectValues: ForeignCallArray, selectComparators: ForeignCallArray, sortByIndexes: ForeignCallArray, sortByOffsets: ForeignCallArray, sortByLengths: ForeignCallArray, sortOrder: ForeignCallArray, limit: ForeignCallSingle, offset: ForeignCallSingle, status: ForeignCallSingle,
|
|
76
|
+
getNotes(storageSlot: ForeignCallSingle, numSelects: ForeignCallSingle, selectByIndexes: ForeignCallArray, selectByOffsets: ForeignCallArray, selectByLengths: ForeignCallArray, selectValues: ForeignCallArray, selectComparators: ForeignCallArray, sortByIndexes: ForeignCallArray, sortByOffsets: ForeignCallArray, sortByLengths: ForeignCallArray, sortOrder: ForeignCallArray, limit: ForeignCallSingle, offset: ForeignCallSingle, status: ForeignCallSingle, maxNotes: ForeignCallSingle, packedRetrievedNoteLength: ForeignCallSingle): Promise<{
|
|
76
77
|
values: (string | ForeignCallArray)[];
|
|
77
78
|
}>;
|
|
78
79
|
notifyCreatedNote(storageSlot: ForeignCallSingle, noteTypeId: ForeignCallSingle, note: ForeignCallArray, noteHash: ForeignCallSingle, counter: ForeignCallSingle): {
|
|
@@ -111,9 +112,9 @@ export declare class TXEService {
|
|
|
111
112
|
notifySetPublicTeardownFunctionCall(targetContractAddress: ForeignCallSingle, calldataHash: ForeignCallSingle, sideEffectCounter: ForeignCallSingle, isStaticCall: ForeignCallSingle): Promise<{
|
|
112
113
|
values: (string | ForeignCallArray)[];
|
|
113
114
|
}>;
|
|
114
|
-
notifySetMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter: ForeignCallSingle): {
|
|
115
|
+
notifySetMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter: ForeignCallSingle): Promise<{
|
|
115
116
|
values: (string | ForeignCallArray)[];
|
|
116
|
-
}
|
|
117
|
+
}>;
|
|
117
118
|
getChainId(): Promise<{
|
|
118
119
|
values: (string | ForeignCallArray)[];
|
|
119
120
|
}>;
|
|
@@ -222,5 +223,13 @@ export declare class TXEService {
|
|
|
222
223
|
avmOpcodeSuccessCopy(): {
|
|
223
224
|
values: (string | ForeignCallArray)[];
|
|
224
225
|
};
|
|
226
|
+
privateCallNewFlow(from: ForeignCallSingle, targetContractAddress: ForeignCallSingle, functionSelector: ForeignCallSingle, _argsLength: ForeignCallSingle, args: ForeignCallArray, argsHash: ForeignCallSingle, isStaticCall: ForeignCallSingle): Promise<{
|
|
227
|
+
values: (string | ForeignCallArray)[];
|
|
228
|
+
}>;
|
|
229
|
+
disableOracles(): void;
|
|
230
|
+
enableOracles(): void;
|
|
231
|
+
simulateUtilityFunction(targetContractAddress: ForeignCallSingle, functionSelector: ForeignCallSingle, argsHash: ForeignCallSingle): Promise<{
|
|
232
|
+
values: (string | ForeignCallArray)[];
|
|
233
|
+
}>;
|
|
225
234
|
}
|
|
226
235
|
//# sourceMappingURL=txe_service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"txe_service.d.ts","sourceRoot":"","sources":["../../src/txe_service/txe_service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,2BAA2B,EAAqB,MAAM,iBAAiB,CAAC;AAEtF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAElE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,KAAK,gBAAgB,EAAiD,MAAM,mBAAmB,CAAC;AAUzG,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,
|
|
1
|
+
{"version":3,"file":"txe_service.d.ts","sourceRoot":"","sources":["../../src/txe_service/txe_service.ts"],"names":[],"mappings":"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"}
|