@aztec/txe 0.87.7 → 1.0.0-nightly.20250605
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 +93 -11
- package/dest/state_machine/dummy_p2p_client.d.ts +2 -2
- package/dest/state_machine/dummy_p2p_client.d.ts.map +1 -1
- package/dest/state_machine/dummy_p2p_client.js +3 -3
- package/dest/state_machine/index.js +1 -1
- package/dest/txe_service/txe_service.d.ts +8 -5
- package/dest/txe_service/txe_service.d.ts.map +1 -1
- package/dest/txe_service/txe_service.js +36 -19
- package/package.json +15 -15
- package/src/oracle/txe_oracle.ts +173 -42
- package/src/state_machine/dummy_p2p_client.ts +3 -3
- package/src/state_machine/index.ts +1 -1
- package/src/txe_service/txe_service.ts +54 -52
|
@@ -7,17 +7,17 @@ import type { ProtocolContract } from '@aztec/protocol-contracts';
|
|
|
7
7
|
import { AddressDataProvider, ContractDataProvider } from '@aztec/pxe/server';
|
|
8
8
|
import { ExecutionNoteCache, MessageLoadOracleInputs, type NoteData, type TypedOracle } from '@aztec/pxe/simulator';
|
|
9
9
|
import { type PublicTxResult } from '@aztec/simulator/server';
|
|
10
|
-
import { type ContractArtifact,
|
|
10
|
+
import { type ContractArtifact, type FunctionAbi, FunctionSelector, type NoteSelector } from '@aztec/stdlib/abi';
|
|
11
11
|
import { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
12
12
|
import { PublicDataWrite } from '@aztec/stdlib/avm';
|
|
13
13
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
14
14
|
import type { ContractInstance, ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
15
15
|
import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
|
|
16
16
|
import { type KeyValidationRequest, PrivateContextInputs } from '@aztec/stdlib/kernel';
|
|
17
|
-
import { ContractClassLog, IndexedTaggingSecret,
|
|
17
|
+
import { ContractClassLog, IndexedTaggingSecret, PrivateLog, PrivateLogWithTxData, type PublicLog, PublicLogWithTxData } from '@aztec/stdlib/logs';
|
|
18
18
|
import type { NoteStatus } from '@aztec/stdlib/note';
|
|
19
19
|
import { MerkleTreeId, NullifierMembershipWitness, PublicDataWitness } from '@aztec/stdlib/trees';
|
|
20
|
-
import { BlockHeader
|
|
20
|
+
import { BlockHeader } from '@aztec/stdlib/tx';
|
|
21
21
|
import { NativeWorldStateService } from '@aztec/world-state/native';
|
|
22
22
|
import { TXEAccountDataProvider } from '../util/txe_account_data_provider.js';
|
|
23
23
|
export declare class TXE implements TypedOracle {
|
|
@@ -134,8 +134,9 @@ export declare class TXE implements TypedOracle {
|
|
|
134
134
|
incrementAppTaggingSecretIndexAsSender(sender: AztecAddress, recipient: AztecAddress): Promise<void>;
|
|
135
135
|
getIndexedTaggingSecretAsSender(sender: AztecAddress, recipient: AztecAddress): Promise<IndexedTaggingSecret>;
|
|
136
136
|
fetchTaggedLogs(pendingTaggedLogArrayBaseSlot: Fr): Promise<void>;
|
|
137
|
-
|
|
138
|
-
|
|
137
|
+
validateEnqueuedNotesAndEvents(contractAddress: AztecAddress, noteValidationRequestsArrayBaseSlot: Fr, eventValidationRequestsArrayBaseSlot: Fr): Promise<void>;
|
|
138
|
+
getPublicLogByTag(tag: Fr, contractAddress: AztecAddress): Promise<PublicLogWithTxData | null>;
|
|
139
|
+
getPrivateLogByTag(siloedTag: Fr): Promise<PrivateLogWithTxData | null>;
|
|
139
140
|
avmOpcodeCall(targetContractAddress: AztecAddress, calldata: Fr[], isStaticCall: boolean): Promise<PublicTxResult>;
|
|
140
141
|
avmOpcodeSuccessCopy(): boolean;
|
|
141
142
|
avmOpcodeReturndataSize(): number;
|
|
@@ -150,11 +151,14 @@ export declare class TXE implements TypedOracle {
|
|
|
150
151
|
copyCapsule(contractAddress: AztecAddress, srcSlot: Fr, dstSlot: Fr, numEntries: number): Promise<void>;
|
|
151
152
|
aes128Decrypt(ciphertext: Buffer, iv: Buffer, symKey: Buffer): Promise<Buffer>;
|
|
152
153
|
getSharedSecret(address: AztecAddress, ephPk: Point): Promise<Point>;
|
|
153
|
-
storePrivateEventLog(contractAddress: AztecAddress, recipient: AztecAddress, eventSelector: EventSelector, logContent: Fr[], txHash: TxHash, logIndexInTx: number, txIndexInBlock: number): Promise<void>;
|
|
154
154
|
privateCallNewFlow(from: AztecAddress, targetContractAddress: AztecAddress | undefined, functionSelector: FunctionSelector | undefined, args: Fr[], argsHash?: Fr, isStaticCall?: boolean): Promise<{
|
|
155
155
|
endSideEffectCounter: Fr;
|
|
156
156
|
returnsHash: Fr;
|
|
157
157
|
txHash: Fr;
|
|
158
158
|
}>;
|
|
159
|
+
publicCallNewFlow(from: AztecAddress, targetContractAddress: AztecAddress, calldata: Fr[], isStaticCall: boolean): Promise<{
|
|
160
|
+
returnsHash: Fr;
|
|
161
|
+
txHash: Fr;
|
|
162
|
+
}>;
|
|
159
163
|
}
|
|
160
164
|
//# 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":"AACA,OAAO,EAGL,KAAK,wBAAwB,EAa9B,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,KAAK,MAAM,EAAyB,MAAM,uBAAuB,CAAC;AAE3E,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EACL,mBAAmB,EAEnB,oBAAoB,EAOrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,kBAAkB,EAElB,uBAAuB,EACvB,KAAK,QAAQ,EAGb,KAAK,WAAW,EAKjB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,
|
|
1
|
+
{"version":3,"file":"txe_oracle.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_oracle.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,14 +10,14 @@ import { AddressDataProvider, CapsuleDataProvider, ContractDataProvider, NoteDat
|
|
|
10
10
|
import { ExecutionNoteCache, HashedValuesCache, Oracle, PrivateExecutionOracle, UtilityExecutionOracle, executePrivateFunction, extractPrivateCircuitPublicInputs, pickNotes } from '@aztec/pxe/simulator';
|
|
11
11
|
import { WASMSimulator, extractCallStack, toACVMWitness, witnessMapToFields } from '@aztec/simulator/client';
|
|
12
12
|
import { createTxForPublicCalls } from '@aztec/simulator/public/fixtures';
|
|
13
|
-
import { ExecutionError, PublicContractsDB, PublicProcessor, PublicTxSimulator, createSimulationError, resolveAssertionMessageFromError } from '@aztec/simulator/server';
|
|
13
|
+
import { ExecutionError, GuardedMerkleTreeOperations, PublicContractsDB, PublicProcessor, PublicTxSimulator, createSimulationError, resolveAssertionMessageFromError } from '@aztec/simulator/server';
|
|
14
14
|
import { FunctionSelector, FunctionType, countArgumentsSize } from '@aztec/stdlib/abi';
|
|
15
15
|
import { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
16
16
|
import { PublicDataWrite } from '@aztec/stdlib/avm';
|
|
17
17
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
18
18
|
import { SimulationError } from '@aztec/stdlib/errors';
|
|
19
19
|
import { Gas, GasFees, GasSettings } from '@aztec/stdlib/gas';
|
|
20
|
-
import { computeNoteHashNonce, computePublicDataTreeLeafSlot, computeUniqueNoteHash, computeVarArgsHash, siloNoteHash, siloNullifier } from '@aztec/stdlib/hash';
|
|
20
|
+
import { computeCalldataHash, computeNoteHashNonce, computePublicDataTreeLeafSlot, computeUniqueNoteHash, computeVarArgsHash, siloNoteHash, siloNullifier } from '@aztec/stdlib/hash';
|
|
21
21
|
import { PartialPrivateTailPublicInputsForPublic, PartialPrivateTailPublicInputsForRollup, PrivateContextInputs, PrivateKernelTailCircuitPublicInputs, PrivateToPublicAccumulatedData, PrivateToRollupAccumulatedData, PublicCallRequest, RollupValidationRequests, ScopedLogHash } from '@aztec/stdlib/kernel';
|
|
22
22
|
import { deriveKeys } from '@aztec/stdlib/keys';
|
|
23
23
|
import { PrivateLog } from '@aztec/stdlib/logs';
|
|
@@ -750,11 +750,14 @@ export class TXE {
|
|
|
750
750
|
await this.pxeOracleInterface.removeNullifiedNotes(this.contractAddress);
|
|
751
751
|
return Promise.resolve();
|
|
752
752
|
}
|
|
753
|
-
async
|
|
754
|
-
await this.pxeOracleInterface.
|
|
753
|
+
async validateEnqueuedNotesAndEvents(contractAddress, noteValidationRequestsArrayBaseSlot, eventValidationRequestsArrayBaseSlot) {
|
|
754
|
+
await this.pxeOracleInterface.validateEnqueuedNotesAndEvents(contractAddress, noteValidationRequestsArrayBaseSlot, eventValidationRequestsArrayBaseSlot);
|
|
755
755
|
}
|
|
756
|
-
async
|
|
757
|
-
return await this.pxeOracleInterface.
|
|
756
|
+
async getPublicLogByTag(tag, contractAddress) {
|
|
757
|
+
return await this.pxeOracleInterface.getPublicLogByTag(tag, contractAddress);
|
|
758
|
+
}
|
|
759
|
+
async getPrivateLogByTag(siloedTag) {
|
|
760
|
+
return await this.pxeOracleInterface.getPrivateLogByTag(siloedTag);
|
|
758
761
|
}
|
|
759
762
|
// AVM oracles
|
|
760
763
|
async avmOpcodeCall(targetContractAddress, calldata, isStaticCall) {
|
|
@@ -859,9 +862,6 @@ export class TXE {
|
|
|
859
862
|
getSharedSecret(address, ephPk) {
|
|
860
863
|
return this.pxeOracleInterface.getSharedSecret(address, ephPk);
|
|
861
864
|
}
|
|
862
|
-
storePrivateEventLog(contractAddress, recipient, eventSelector, logContent, txHash, logIndexInTx, txIndexInBlock) {
|
|
863
|
-
return this.pxeOracleInterface.storePrivateEventLog(contractAddress, recipient, eventSelector, logContent, txHash, logIndexInTx, txIndexInBlock);
|
|
864
|
-
}
|
|
865
865
|
async privateCallNewFlow(from, targetContractAddress = AztecAddress.zero(), functionSelector = FunctionSelector.empty(), args, argsHash = Fr.zero(), isStaticCall = false) {
|
|
866
866
|
this.logger.verbose(`Executing external function ${await this.getDebugFunctionName(targetContractAddress, functionSelector)}@${targetContractAddress} isStaticCall=${isStaticCall}`);
|
|
867
867
|
const artifact = await this.contractDataProvider.getFunctionArtifact(targetContractAddress, functionSelector);
|
|
@@ -942,8 +942,9 @@ export class TXE {
|
|
|
942
942
|
globals.blockNumber = new Fr(this.blockNumber);
|
|
943
943
|
globals.gasFees = GasFees.empty();
|
|
944
944
|
const contractsDB = new PublicContractsDB(new TXEPublicContractDataSource(this));
|
|
945
|
-
const
|
|
946
|
-
const
|
|
945
|
+
const guardedMerkleTrees = new GuardedMerkleTreeOperations(this.baseFork);
|
|
946
|
+
const simulator = new PublicTxSimulator(guardedMerkleTrees, contractsDB, globals, true, true);
|
|
947
|
+
const processor = new PublicProcessor(globals, guardedMerkleTrees, contractsDB, simulator, new TestDateProvider());
|
|
947
948
|
const constantData = new TxConstantData(blockHeader, txContext, Fr.zero(), Fr.zero());
|
|
948
949
|
const hasPublicCalls = result.publicFunctionCalldata.length !== 0;
|
|
949
950
|
let inputsForRollup;
|
|
@@ -998,4 +999,85 @@ export class TXE {
|
|
|
998
999
|
txHash: txRequestHash
|
|
999
1000
|
};
|
|
1000
1001
|
}
|
|
1002
|
+
async publicCallNewFlow(from, targetContractAddress, calldata, isStaticCall) {
|
|
1003
|
+
this.logger.verbose(`Executing public function ${await this.getDebugFunctionName(targetContractAddress, FunctionSelector.fromField(calldata[0]))}@${targetContractAddress} isStaticCall=${isStaticCall}`);
|
|
1004
|
+
const gasLimits = new Gas(DEFAULT_GAS_LIMIT, MAX_L2_GAS_PER_TX_PUBLIC_PORTION);
|
|
1005
|
+
const teardownGasLimits = new Gas(DEFAULT_TEARDOWN_GAS_LIMIT, MAX_L2_GAS_PER_TX_PUBLIC_PORTION);
|
|
1006
|
+
const gasSettings = new GasSettings(gasLimits, teardownGasLimits, GasFees.empty(), GasFees.empty());
|
|
1007
|
+
const txContext = new TxContext(this.CHAIN_ID, this.ROLLUP_VERSION, gasSettings);
|
|
1008
|
+
const blockHeader = await this.pxeOracleInterface.getBlockHeader();
|
|
1009
|
+
const uniqueNoteHashes = [];
|
|
1010
|
+
const taggedPrivateLogs = [];
|
|
1011
|
+
const nullifiers = [
|
|
1012
|
+
this.getTxRequestHash()
|
|
1013
|
+
];
|
|
1014
|
+
const l2ToL1Messages = [];
|
|
1015
|
+
const contractClassLogsHashes = [];
|
|
1016
|
+
const calldataHash = await computeCalldataHash(calldata);
|
|
1017
|
+
const calldataHashedValues = new HashedValues(calldata, calldataHash);
|
|
1018
|
+
const publicCallRequest = new PublicCallRequest(from, targetContractAddress, isStaticCall, calldataHash);
|
|
1019
|
+
const publicCallRequests = [
|
|
1020
|
+
publicCallRequest
|
|
1021
|
+
];
|
|
1022
|
+
const globals = makeGlobalVariables();
|
|
1023
|
+
globals.blockNumber = new Fr(this.blockNumber);
|
|
1024
|
+
globals.gasFees = GasFees.empty();
|
|
1025
|
+
const contractsDB = new PublicContractsDB(new TXEPublicContractDataSource(this));
|
|
1026
|
+
const guardedMerkleTrees = new GuardedMerkleTreeOperations(this.baseFork);
|
|
1027
|
+
const simulator = new PublicTxSimulator(guardedMerkleTrees, contractsDB, globals, true, true);
|
|
1028
|
+
const processor = new PublicProcessor(globals, guardedMerkleTrees, contractsDB, simulator, new TestDateProvider());
|
|
1029
|
+
const constantData = new TxConstantData(blockHeader, txContext, Fr.zero(), Fr.zero());
|
|
1030
|
+
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));
|
|
1031
|
+
const inputsForPublic = new PartialPrivateTailPublicInputsForPublic(// nonrevertible
|
|
1032
|
+
PrivateToPublicAccumulatedData.empty(), // revertible
|
|
1033
|
+
// We are using revertible (app phase) because only the app-phase returns are exposed.
|
|
1034
|
+
accumulatedDataForPublic, PublicCallRequest.empty());
|
|
1035
|
+
const txData = new PrivateKernelTailCircuitPublicInputs(constantData, RollupValidationRequests.empty(), /*gasUsed=*/ new Gas(0, 0), /*feePayer=*/ AztecAddress.zero(), inputsForPublic, undefined);
|
|
1036
|
+
const tx = new Tx(txData, ClientIvcProof.empty(), [], [
|
|
1037
|
+
calldataHashedValues
|
|
1038
|
+
]);
|
|
1039
|
+
const results = await processor.process([
|
|
1040
|
+
tx
|
|
1041
|
+
]);
|
|
1042
|
+
const processedTxs = results[0];
|
|
1043
|
+
const failedTxs = results[1];
|
|
1044
|
+
if (failedTxs.length !== 0 || !processedTxs[0].revertCode.isOK()) {
|
|
1045
|
+
throw new Error('Public execution has failed');
|
|
1046
|
+
}
|
|
1047
|
+
const returnValues = results[3][0].values;
|
|
1048
|
+
let returnValuesHash;
|
|
1049
|
+
if (returnValues !== undefined) {
|
|
1050
|
+
// This is a bit of a hack to not deal with returning a slice in nr which is what normally happens.
|
|
1051
|
+
// Investigate whether it is faster to do this or return from the oracle directly.
|
|
1052
|
+
returnValuesHash = await computeVarArgsHash(returnValues);
|
|
1053
|
+
this.storeInExecutionCache(returnValues, returnValuesHash);
|
|
1054
|
+
}
|
|
1055
|
+
const fork = this.baseFork;
|
|
1056
|
+
const txEffect = TxEffect.empty();
|
|
1057
|
+
txEffect.noteHashes = processedTxs[0].txEffect.noteHashes;
|
|
1058
|
+
txEffect.nullifiers = processedTxs[0].txEffect.nullifiers;
|
|
1059
|
+
txEffect.privateLogs = taggedPrivateLogs;
|
|
1060
|
+
txEffect.publicLogs = processedTxs[0].txEffect.publicLogs;
|
|
1061
|
+
txEffect.publicDataWrites = processedTxs[0].txEffect.publicDataWrites;
|
|
1062
|
+
txEffect.txHash = new TxHash(new Fr(this.blockNumber));
|
|
1063
|
+
const body = new Body([
|
|
1064
|
+
txEffect
|
|
1065
|
+
]);
|
|
1066
|
+
const l2Block = new L2Block(makeAppendOnlyTreeSnapshot(this.blockNumber + 1), makeHeader(0, this.blockNumber, this.blockNumber), body);
|
|
1067
|
+
const l1ToL2Messages = Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(0).map(Fr.zero);
|
|
1068
|
+
await fork.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l1ToL2Messages);
|
|
1069
|
+
const stateReference = await fork.getStateReference();
|
|
1070
|
+
const archiveInfo = await fork.getTreeInfo(MerkleTreeId.ARCHIVE);
|
|
1071
|
+
const header = new BlockHeader(new AppendOnlyTreeSnapshot(new Fr(archiveInfo.root), Number(archiveInfo.size)), makeContentCommitment(), stateReference, globals, Fr.ZERO, Fr.ZERO);
|
|
1072
|
+
header.globalVariables.blockNumber = new Fr(this.blockNumber);
|
|
1073
|
+
l2Block.header = header;
|
|
1074
|
+
await fork.updateArchive(l2Block.header);
|
|
1075
|
+
await this.stateMachine.handleL2Block(l2Block);
|
|
1076
|
+
const txRequestHash = this.getTxRequestHash();
|
|
1077
|
+
this.setBlockNumber(this.blockNumber + 1);
|
|
1078
|
+
return {
|
|
1079
|
+
returnsHash: returnValuesHash ?? Fr.ZERO,
|
|
1080
|
+
txHash: txRequestHash
|
|
1081
|
+
};
|
|
1082
|
+
}
|
|
1001
1083
|
}
|
|
@@ -29,7 +29,7 @@ export declare class DummyP2P implements P2P {
|
|
|
29
29
|
isP2PClient(): true;
|
|
30
30
|
getTxsByHash(_txHashes: TxHash[]): Promise<Tx[]>;
|
|
31
31
|
getAttestationsForSlot(_slot: bigint, _proposalId?: string): Promise<BlockAttestation[]>;
|
|
32
|
-
|
|
32
|
+
addAttestations(_attestations: BlockAttestation[]): Promise<void>;
|
|
33
33
|
getL2BlockHash(_number: number): Promise<string | undefined>;
|
|
34
34
|
updateP2PConfig(_config: Partial<P2PConfig>): Promise<void>;
|
|
35
35
|
getL2Tips(): Promise<L2Tips>;
|
|
@@ -39,7 +39,7 @@ export declare class DummyP2P implements P2P {
|
|
|
39
39
|
getTxs(_filter: 'all' | 'pending' | 'mined'): Promise<Tx[]>;
|
|
40
40
|
getTxsByHashFromPool(_txHashes: TxHash[]): Promise<(Tx | undefined)[]>;
|
|
41
41
|
hasTxsInPool(_txHashes: TxHash[]): Promise<boolean[]>;
|
|
42
|
-
|
|
42
|
+
addTxsToPool(_txs: Tx[]): Promise<number>;
|
|
43
43
|
getSyncedLatestBlockNum(): Promise<number>;
|
|
44
44
|
getSyncedProvenBlockNum(): Promise<number>;
|
|
45
45
|
getSyncedLatestSlot(): Promise<bigint>;
|
|
@@ -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,wBAAwB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC9F,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,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAInC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,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,OAAO,CAAC,IAAI,CAAC;IAI1D,4BAA4B,CAAC,QAAQ,EAAE,wBAAwB,GAAG,IAAI;IAItE,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC;IAI5D,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAIzD,MAAM,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9B,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAI7D,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAIrD,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAI7D,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IAItE,iBAAiB,IAAI,qBAAqB,CAAC,EAAE,CAAC;IAI9C,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAIpC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,OAAO,IAAI,OAAO;IAIlB,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC;IAIlC,MAAM,IAAI,GAAG,GAAG,SAAS;IAIzB,WAAW,IAAI,IAAI;IAInB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC;IAIhD,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAIxF,
|
|
1
|
+
{"version":3,"file":"dummy_p2p_client.d.ts","sourceRoot":"","sources":["../../src/state_machine/dummy_p2p_client.ts"],"names":[],"mappings":"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"}
|
|
@@ -74,8 +74,8 @@ export class DummyP2P {
|
|
|
74
74
|
getAttestationsForSlot(_slot, _proposalId) {
|
|
75
75
|
throw new Error('DummyP2P does not implement "getAttestationForSlot"');
|
|
76
76
|
}
|
|
77
|
-
|
|
78
|
-
throw new Error('DummyP2P does not implement "
|
|
77
|
+
addAttestations(_attestations) {
|
|
78
|
+
throw new Error('DummyP2P does not implement "addAttestations"');
|
|
79
79
|
}
|
|
80
80
|
getL2BlockHash(_number) {
|
|
81
81
|
throw new Error('DummyP2P does not implement "getL2BlockHash"');
|
|
@@ -104,7 +104,7 @@ export class DummyP2P {
|
|
|
104
104
|
hasTxsInPool(_txHashes) {
|
|
105
105
|
throw new Error('DummyP2P does not implement "hasTxsInPool"');
|
|
106
106
|
}
|
|
107
|
-
|
|
107
|
+
addTxsToPool(_txs) {
|
|
108
108
|
throw new Error('DummyP2P does not implement "addTxs"');
|
|
109
109
|
}
|
|
110
110
|
getSyncedLatestBlockNum() {
|
|
@@ -39,7 +39,7 @@ export class TXEStateMachine {
|
|
|
39
39
|
blockNumber: block.header.globalVariables.blockNumber.toBigInt(),
|
|
40
40
|
timestamp: block.header.globalVariables.blockNumber.toBigInt()
|
|
41
41
|
},
|
|
42
|
-
|
|
42
|
+
attestations: []
|
|
43
43
|
}
|
|
44
44
|
]),
|
|
45
45
|
this.syncDataProvider.setHeader(block.header)
|
|
@@ -136,10 +136,13 @@ export declare class TXEService {
|
|
|
136
136
|
fetchTaggedLogs(pendingTaggedLogArrayBaseSlot: ForeignCallSingle): Promise<{
|
|
137
137
|
values: (string | ForeignCallArray)[];
|
|
138
138
|
}>;
|
|
139
|
-
|
|
139
|
+
validateEnqueuedNotesAndEvents(contractAddress: ForeignCallSingle, noteValidationRequestsArrayBaseSlot: ForeignCallSingle, eventValidationRequestsArrayBaseSlot: ForeignCallSingle): Promise<{
|
|
140
140
|
values: (string | ForeignCallArray)[];
|
|
141
141
|
}>;
|
|
142
|
-
|
|
142
|
+
getPublicLogByTag(tag: ForeignCallSingle, contractAddress: ForeignCallSingle): Promise<{
|
|
143
|
+
values: (string | ForeignCallArray)[];
|
|
144
|
+
}>;
|
|
145
|
+
getPrivateLogByTag(siloedTag: ForeignCallSingle): Promise<{
|
|
143
146
|
values: (string | ForeignCallArray)[];
|
|
144
147
|
}>;
|
|
145
148
|
storeCapsule(contractAddress: ForeignCallSingle, slot: ForeignCallSingle, capsule: ForeignCallArray): Promise<{
|
|
@@ -160,9 +163,6 @@ export declare class TXEService {
|
|
|
160
163
|
getSharedSecret(address: ForeignCallSingle, ephPKField0: ForeignCallSingle, ephPKField1: ForeignCallSingle, ephPKField2: ForeignCallSingle): Promise<{
|
|
161
164
|
values: (string | ForeignCallArray)[];
|
|
162
165
|
}>;
|
|
163
|
-
storePrivateEventLog(contractAddress: ForeignCallSingle, recipient: ForeignCallSingle, eventSelector: ForeignCallSingle, logContent: ForeignCallArray, txHash: ForeignCallSingle, logIndexInTx: ForeignCallSingle, txIndexInBlock: ForeignCallSingle): Promise<{
|
|
164
|
-
values: (string | ForeignCallArray)[];
|
|
165
|
-
}>;
|
|
166
166
|
avmOpcodeEmitUnencryptedLog(_message: ForeignCallArray): {
|
|
167
167
|
values: (string | ForeignCallArray)[];
|
|
168
168
|
};
|
|
@@ -231,5 +231,8 @@ export declare class TXEService {
|
|
|
231
231
|
simulateUtilityFunction(targetContractAddress: ForeignCallSingle, functionSelector: ForeignCallSingle, argsHash: ForeignCallSingle): Promise<{
|
|
232
232
|
values: (string | ForeignCallArray)[];
|
|
233
233
|
}>;
|
|
234
|
+
publicCallNewFlow(from: ForeignCallSingle, address: ForeignCallSingle, _length: ForeignCallSingle, calldata: ForeignCallArray, isStaticCall: ForeignCallSingle): Promise<{
|
|
235
|
+
values: (string | ForeignCallArray)[];
|
|
236
|
+
}>;
|
|
234
237
|
}
|
|
235
238
|
//# 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,
|
|
1
|
+
{"version":3,"file":"txe_service.d.ts","sourceRoot":"","sources":["../../src/txe_service/txe_service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { Fr, Point
|
|
1
|
+
import { Fr, Point } from '@aztec/aztec.js';
|
|
2
2
|
import { DEPLOYER_CONTRACT_ADDRESS } from '@aztec/constants';
|
|
3
3
|
import { openTmpStore } from '@aztec/kv-store/lmdb-v2';
|
|
4
4
|
import { enrichPublicSimulationError } from '@aztec/pxe/server';
|
|
5
|
-
import {
|
|
5
|
+
import { FunctionSelector, NoteSelector } from '@aztec/stdlib/abi';
|
|
6
6
|
import { PublicDataWrite } from '@aztec/stdlib/avm';
|
|
7
7
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
8
8
|
import { computePartialAddress } from '@aztec/stdlib/contract';
|
|
9
9
|
import { SimulationError } from '@aztec/stdlib/errors';
|
|
10
10
|
import { computePublicDataTreeLeafSlot } from '@aztec/stdlib/hash';
|
|
11
|
-
import {
|
|
11
|
+
import { PrivateLogWithTxData, PublicLogWithTxData } from '@aztec/stdlib/logs';
|
|
12
12
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
13
13
|
import { TXE } from '../oracle/txe_oracle.js';
|
|
14
14
|
import { addressFromSingle, arrayOfArraysToBoundedVecOfArrays, arrayToBoundedVec, bufferToU8Array, fromArray, fromSingle, fromUintArray, fromUintBoundedVec, toArray, toForeignCallResult, toSingle, toSingleOrArray } from '../util/encoding.js';
|
|
@@ -446,25 +446,40 @@ export class TXEService {
|
|
|
446
446
|
await this.typedOracle.fetchTaggedLogs(fromSingle(pendingTaggedLogArrayBaseSlot));
|
|
447
447
|
return toForeignCallResult([]);
|
|
448
448
|
}
|
|
449
|
-
async
|
|
449
|
+
async validateEnqueuedNotesAndEvents(contractAddress, noteValidationRequestsArrayBaseSlot, eventValidationRequestsArrayBaseSlot) {
|
|
450
450
|
if (!this.oraclesEnabled) {
|
|
451
451
|
throw new Error('Oracle access from the root of a TXe test are not enabled. Please use env._ to interact with the oracles.');
|
|
452
452
|
}
|
|
453
|
-
await this.typedOracle.
|
|
454
|
-
return toForeignCallResult([
|
|
455
|
-
toSingle(Fr.ONE)
|
|
456
|
-
]);
|
|
453
|
+
await this.typedOracle.validateEnqueuedNotesAndEvents(AztecAddress.fromField(fromSingle(contractAddress)), fromSingle(noteValidationRequestsArrayBaseSlot), fromSingle(eventValidationRequestsArrayBaseSlot));
|
|
454
|
+
return toForeignCallResult([]);
|
|
457
455
|
}
|
|
458
|
-
async
|
|
456
|
+
async getPublicLogByTag(tag, contractAddress) {
|
|
459
457
|
if (!this.oraclesEnabled) {
|
|
460
458
|
throw new Error('Oracle access from the root of a TXe test are not enabled. Please use env._ to interact with the oracles.');
|
|
461
459
|
}
|
|
462
|
-
// TODO(AD): this was warning that
|
|
463
|
-
const log = await Promise.resolve(this.typedOracle.
|
|
460
|
+
// TODO(AD): this was warning that getPublicLogByTag did not return a promise.
|
|
461
|
+
const log = await Promise.resolve(this.typedOracle.getPublicLogByTag(fromSingle(tag), AztecAddress.fromField(fromSingle(contractAddress))));
|
|
464
462
|
if (log == null) {
|
|
465
463
|
return toForeignCallResult([
|
|
466
464
|
toSingle(Fr.ZERO),
|
|
467
|
-
...
|
|
465
|
+
...PublicLogWithTxData.noirSerializationOfEmpty().map(toSingleOrArray)
|
|
466
|
+
]);
|
|
467
|
+
} else {
|
|
468
|
+
return toForeignCallResult([
|
|
469
|
+
toSingle(Fr.ONE),
|
|
470
|
+
...log.toNoirSerialization().map(toSingleOrArray)
|
|
471
|
+
]);
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
async getPrivateLogByTag(siloedTag) {
|
|
475
|
+
if (!this.oraclesEnabled) {
|
|
476
|
+
throw new Error('Oracle access from the root of a TXe test are not enabled. Please use env._ to interact with the oracles.');
|
|
477
|
+
}
|
|
478
|
+
const log = await this.typedOracle.getPrivateLogByTag(fromSingle(siloedTag));
|
|
479
|
+
if (log == null) {
|
|
480
|
+
return toForeignCallResult([
|
|
481
|
+
toSingle(Fr.ZERO),
|
|
482
|
+
...PrivateLogWithTxData.noirSerializationOfEmpty().map(toSingleOrArray)
|
|
468
483
|
]);
|
|
469
484
|
} else {
|
|
470
485
|
return toForeignCallResult([
|
|
@@ -540,13 +555,6 @@ export class TXEService {
|
|
|
540
555
|
]));
|
|
541
556
|
return toForeignCallResult(secret.toFields().map(toSingle));
|
|
542
557
|
}
|
|
543
|
-
async storePrivateEventLog(contractAddress, recipient, eventSelector, logContent, txHash, logIndexInTx, txIndexInBlock) {
|
|
544
|
-
if (!this.oraclesEnabled) {
|
|
545
|
-
throw new Error('Oracle access from the root of a TXe test are not enabled. Please use env._ to interact with the oracles.');
|
|
546
|
-
}
|
|
547
|
-
await this.typedOracle.storePrivateEventLog(AztecAddress.fromField(fromSingle(contractAddress)), AztecAddress.fromField(fromSingle(recipient)), EventSelector.fromField(fromSingle(eventSelector)), fromArray(logContent), new TxHash(fromSingle(txHash)), fromSingle(logIndexInTx).toNumber(), fromSingle(txIndexInBlock).toNumber());
|
|
548
|
-
return toForeignCallResult([]);
|
|
549
|
-
}
|
|
550
558
|
// AVM opcodes
|
|
551
559
|
avmOpcodeEmitUnencryptedLog(_message) {
|
|
552
560
|
if (!this.oraclesEnabled) {
|
|
@@ -766,4 +774,13 @@ export class TXEService {
|
|
|
766
774
|
toSingle(result)
|
|
767
775
|
]);
|
|
768
776
|
}
|
|
777
|
+
async publicCallNewFlow(from, address, _length, calldata, isStaticCall) {
|
|
778
|
+
const result = await this.typedOracle.publicCallNewFlow(addressFromSingle(from), addressFromSingle(address), fromArray(calldata), fromSingle(isStaticCall).toBool());
|
|
779
|
+
return toForeignCallResult([
|
|
780
|
+
toArray([
|
|
781
|
+
result.returnsHash,
|
|
782
|
+
result.txHash
|
|
783
|
+
])
|
|
784
|
+
]);
|
|
785
|
+
}
|
|
769
786
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/txe",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0-nightly.20250605",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": "./dest/index.js",
|
|
6
6
|
"bin": "./dest/bin/index.js",
|
|
@@ -57,20 +57,20 @@
|
|
|
57
57
|
]
|
|
58
58
|
},
|
|
59
59
|
"dependencies": {
|
|
60
|
-
"@aztec/accounts": "0.
|
|
61
|
-
"@aztec/archiver": "0.
|
|
62
|
-
"@aztec/aztec-node": "0.
|
|
63
|
-
"@aztec/aztec.js": "0.
|
|
64
|
-
"@aztec/bb-prover": "0.
|
|
65
|
-
"@aztec/constants": "0.
|
|
66
|
-
"@aztec/foundation": "0.
|
|
67
|
-
"@aztec/key-store": "0.
|
|
68
|
-
"@aztec/kv-store": "0.
|
|
69
|
-
"@aztec/protocol-contracts": "0.
|
|
70
|
-
"@aztec/pxe": "0.
|
|
71
|
-
"@aztec/simulator": "0.
|
|
72
|
-
"@aztec/stdlib": "0.
|
|
73
|
-
"@aztec/world-state": "0.
|
|
60
|
+
"@aztec/accounts": "1.0.0-nightly.20250605",
|
|
61
|
+
"@aztec/archiver": "1.0.0-nightly.20250605",
|
|
62
|
+
"@aztec/aztec-node": "1.0.0-nightly.20250605",
|
|
63
|
+
"@aztec/aztec.js": "1.0.0-nightly.20250605",
|
|
64
|
+
"@aztec/bb-prover": "1.0.0-nightly.20250605",
|
|
65
|
+
"@aztec/constants": "1.0.0-nightly.20250605",
|
|
66
|
+
"@aztec/foundation": "1.0.0-nightly.20250605",
|
|
67
|
+
"@aztec/key-store": "1.0.0-nightly.20250605",
|
|
68
|
+
"@aztec/kv-store": "1.0.0-nightly.20250605",
|
|
69
|
+
"@aztec/protocol-contracts": "1.0.0-nightly.20250605",
|
|
70
|
+
"@aztec/pxe": "1.0.0-nightly.20250605",
|
|
71
|
+
"@aztec/simulator": "1.0.0-nightly.20250605",
|
|
72
|
+
"@aztec/stdlib": "1.0.0-nightly.20250605",
|
|
73
|
+
"@aztec/world-state": "1.0.0-nightly.20250605",
|
|
74
74
|
"zod": "^3.23.8"
|
|
75
75
|
},
|
|
76
76
|
"devDependencies": {
|
package/src/oracle/txe_oracle.ts
CHANGED
|
@@ -52,6 +52,7 @@ import { WASMSimulator, extractCallStack, toACVMWitness, witnessMapToFields } fr
|
|
|
52
52
|
import { createTxForPublicCalls } from '@aztec/simulator/public/fixtures';
|
|
53
53
|
import {
|
|
54
54
|
ExecutionError,
|
|
55
|
+
GuardedMerkleTreeOperations,
|
|
55
56
|
PublicContractsDB,
|
|
56
57
|
PublicProcessor,
|
|
57
58
|
type PublicTxResult,
|
|
@@ -61,7 +62,6 @@ import {
|
|
|
61
62
|
} from '@aztec/simulator/server';
|
|
62
63
|
import {
|
|
63
64
|
type ContractArtifact,
|
|
64
|
-
EventSelector,
|
|
65
65
|
type FunctionAbi,
|
|
66
66
|
FunctionSelector,
|
|
67
67
|
FunctionType,
|
|
@@ -75,6 +75,7 @@ import type { ContractInstance, ContractInstanceWithAddress } from '@aztec/stdli
|
|
|
75
75
|
import { SimulationError } from '@aztec/stdlib/errors';
|
|
76
76
|
import { Gas, GasFees, GasSettings } from '@aztec/stdlib/gas';
|
|
77
77
|
import {
|
|
78
|
+
computeCalldataHash,
|
|
78
79
|
computeNoteHashNonce,
|
|
79
80
|
computePublicDataTreeLeafSlot,
|
|
80
81
|
computeUniqueNoteHash,
|
|
@@ -96,7 +97,14 @@ import {
|
|
|
96
97
|
ScopedLogHash,
|
|
97
98
|
} from '@aztec/stdlib/kernel';
|
|
98
99
|
import { deriveKeys } from '@aztec/stdlib/keys';
|
|
99
|
-
import {
|
|
100
|
+
import {
|
|
101
|
+
ContractClassLog,
|
|
102
|
+
IndexedTaggingSecret,
|
|
103
|
+
PrivateLog,
|
|
104
|
+
PrivateLogWithTxData,
|
|
105
|
+
type PublicLog,
|
|
106
|
+
PublicLogWithTxData,
|
|
107
|
+
} from '@aztec/stdlib/logs';
|
|
100
108
|
import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
|
|
101
109
|
import type { NoteStatus } from '@aztec/stdlib/note';
|
|
102
110
|
import { ClientIvcProof } from '@aztec/stdlib/proofs';
|
|
@@ -1166,30 +1174,24 @@ export class TXE implements TypedOracle {
|
|
|
1166
1174
|
return Promise.resolve();
|
|
1167
1175
|
}
|
|
1168
1176
|
|
|
1169
|
-
public async
|
|
1177
|
+
public async validateEnqueuedNotesAndEvents(
|
|
1170
1178
|
contractAddress: AztecAddress,
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
content: Fr[],
|
|
1174
|
-
noteHash: Fr,
|
|
1175
|
-
nullifier: Fr,
|
|
1176
|
-
txHash: TxHash,
|
|
1177
|
-
recipient: AztecAddress,
|
|
1179
|
+
noteValidationRequestsArrayBaseSlot: Fr,
|
|
1180
|
+
eventValidationRequestsArrayBaseSlot: Fr,
|
|
1178
1181
|
): Promise<void> {
|
|
1179
|
-
await this.pxeOracleInterface.
|
|
1182
|
+
await this.pxeOracleInterface.validateEnqueuedNotesAndEvents(
|
|
1180
1183
|
contractAddress,
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
content,
|
|
1184
|
-
noteHash,
|
|
1185
|
-
nullifier,
|
|
1186
|
-
txHash,
|
|
1187
|
-
recipient,
|
|
1184
|
+
noteValidationRequestsArrayBaseSlot,
|
|
1185
|
+
eventValidationRequestsArrayBaseSlot,
|
|
1188
1186
|
);
|
|
1189
1187
|
}
|
|
1190
1188
|
|
|
1191
|
-
async
|
|
1192
|
-
return await this.pxeOracleInterface.
|
|
1189
|
+
async getPublicLogByTag(tag: Fr, contractAddress: AztecAddress): Promise<PublicLogWithTxData | null> {
|
|
1190
|
+
return await this.pxeOracleInterface.getPublicLogByTag(tag, contractAddress);
|
|
1191
|
+
}
|
|
1192
|
+
|
|
1193
|
+
async getPrivateLogByTag(siloedTag: Fr): Promise<PrivateLogWithTxData | null> {
|
|
1194
|
+
return await this.pxeOracleInterface.getPrivateLogByTag(siloedTag);
|
|
1193
1195
|
}
|
|
1194
1196
|
|
|
1195
1197
|
// AVM oracles
|
|
@@ -1326,26 +1328,6 @@ export class TXE implements TypedOracle {
|
|
|
1326
1328
|
return this.pxeOracleInterface.getSharedSecret(address, ephPk);
|
|
1327
1329
|
}
|
|
1328
1330
|
|
|
1329
|
-
storePrivateEventLog(
|
|
1330
|
-
contractAddress: AztecAddress,
|
|
1331
|
-
recipient: AztecAddress,
|
|
1332
|
-
eventSelector: EventSelector,
|
|
1333
|
-
logContent: Fr[],
|
|
1334
|
-
txHash: TxHash,
|
|
1335
|
-
logIndexInTx: number,
|
|
1336
|
-
txIndexInBlock: number,
|
|
1337
|
-
): Promise<void> {
|
|
1338
|
-
return this.pxeOracleInterface.storePrivateEventLog(
|
|
1339
|
-
contractAddress,
|
|
1340
|
-
recipient,
|
|
1341
|
-
eventSelector,
|
|
1342
|
-
logContent,
|
|
1343
|
-
txHash,
|
|
1344
|
-
logIndexInTx,
|
|
1345
|
-
txIndexInBlock,
|
|
1346
|
-
);
|
|
1347
|
-
}
|
|
1348
|
-
|
|
1349
1331
|
async privateCallNewFlow(
|
|
1350
1332
|
from: AztecAddress,
|
|
1351
1333
|
targetContractAddress: AztecAddress = AztecAddress.zero(),
|
|
@@ -1505,8 +1487,9 @@ export class TXE implements TypedOracle {
|
|
|
1505
1487
|
globals.gasFees = GasFees.empty();
|
|
1506
1488
|
|
|
1507
1489
|
const contractsDB = new PublicContractsDB(new TXEPublicContractDataSource(this));
|
|
1508
|
-
const
|
|
1509
|
-
const
|
|
1490
|
+
const guardedMerkleTrees = new GuardedMerkleTreeOperations(this.baseFork);
|
|
1491
|
+
const simulator = new PublicTxSimulator(guardedMerkleTrees, contractsDB, globals, true, true);
|
|
1492
|
+
const processor = new PublicProcessor(globals, guardedMerkleTrees, contractsDB, simulator, new TestDateProvider());
|
|
1510
1493
|
|
|
1511
1494
|
const constantData = new TxConstantData(blockHeader, txContext, Fr.zero(), Fr.zero());
|
|
1512
1495
|
|
|
@@ -1617,4 +1600,152 @@ export class TXE implements TypedOracle {
|
|
|
1617
1600
|
txHash: txRequestHash,
|
|
1618
1601
|
};
|
|
1619
1602
|
}
|
|
1603
|
+
|
|
1604
|
+
async publicCallNewFlow(
|
|
1605
|
+
from: AztecAddress,
|
|
1606
|
+
targetContractAddress: AztecAddress,
|
|
1607
|
+
calldata: Fr[],
|
|
1608
|
+
isStaticCall: boolean,
|
|
1609
|
+
) {
|
|
1610
|
+
this.logger.verbose(
|
|
1611
|
+
`Executing public function ${await this.getDebugFunctionName(
|
|
1612
|
+
targetContractAddress,
|
|
1613
|
+
FunctionSelector.fromField(calldata[0]),
|
|
1614
|
+
)}@${targetContractAddress} isStaticCall=${isStaticCall}`,
|
|
1615
|
+
);
|
|
1616
|
+
|
|
1617
|
+
const gasLimits = new Gas(DEFAULT_GAS_LIMIT, MAX_L2_GAS_PER_TX_PUBLIC_PORTION);
|
|
1618
|
+
|
|
1619
|
+
const teardownGasLimits = new Gas(DEFAULT_TEARDOWN_GAS_LIMIT, MAX_L2_GAS_PER_TX_PUBLIC_PORTION);
|
|
1620
|
+
|
|
1621
|
+
const gasSettings = new GasSettings(gasLimits, teardownGasLimits, GasFees.empty(), GasFees.empty());
|
|
1622
|
+
|
|
1623
|
+
const txContext = new TxContext(this.CHAIN_ID, this.ROLLUP_VERSION, gasSettings);
|
|
1624
|
+
|
|
1625
|
+
const blockHeader = await this.pxeOracleInterface.getBlockHeader();
|
|
1626
|
+
|
|
1627
|
+
const uniqueNoteHashes: Fr[] = [];
|
|
1628
|
+
const taggedPrivateLogs: PrivateLog[] = [];
|
|
1629
|
+
const nullifiers: Fr[] = [this.getTxRequestHash()];
|
|
1630
|
+
const l2ToL1Messages: ScopedL2ToL1Message[] = [];
|
|
1631
|
+
const contractClassLogsHashes: ScopedLogHash[] = [];
|
|
1632
|
+
|
|
1633
|
+
const calldataHash = await computeCalldataHash(calldata);
|
|
1634
|
+
|
|
1635
|
+
const calldataHashedValues = new HashedValues(calldata, calldataHash);
|
|
1636
|
+
|
|
1637
|
+
const publicCallRequest = new PublicCallRequest(from, targetContractAddress, isStaticCall, calldataHash);
|
|
1638
|
+
const publicCallRequests: PublicCallRequest[] = [publicCallRequest];
|
|
1639
|
+
|
|
1640
|
+
const globals = makeGlobalVariables();
|
|
1641
|
+
globals.blockNumber = new Fr(this.blockNumber);
|
|
1642
|
+
globals.gasFees = GasFees.empty();
|
|
1643
|
+
|
|
1644
|
+
const contractsDB = new PublicContractsDB(new TXEPublicContractDataSource(this));
|
|
1645
|
+
const guardedMerkleTrees = new GuardedMerkleTreeOperations(this.baseFork);
|
|
1646
|
+
const simulator = new PublicTxSimulator(guardedMerkleTrees, contractsDB, globals, true, true);
|
|
1647
|
+
const processor = new PublicProcessor(globals, guardedMerkleTrees, contractsDB, simulator, new TestDateProvider());
|
|
1648
|
+
|
|
1649
|
+
const constantData = new TxConstantData(blockHeader, txContext, Fr.zero(), Fr.zero());
|
|
1650
|
+
|
|
1651
|
+
const accumulatedDataForPublic = new PrivateToPublicAccumulatedData(
|
|
1652
|
+
padArrayEnd(uniqueNoteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX),
|
|
1653
|
+
padArrayEnd(nullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX),
|
|
1654
|
+
padArrayEnd(l2ToL1Messages, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX),
|
|
1655
|
+
padArrayEnd(taggedPrivateLogs, PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX),
|
|
1656
|
+
padArrayEnd(contractClassLogsHashes, ScopedLogHash.empty(), MAX_CONTRACT_CLASS_LOGS_PER_TX),
|
|
1657
|
+
padArrayEnd(publicCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX),
|
|
1658
|
+
);
|
|
1659
|
+
|
|
1660
|
+
const inputsForPublic = new PartialPrivateTailPublicInputsForPublic(
|
|
1661
|
+
// nonrevertible
|
|
1662
|
+
PrivateToPublicAccumulatedData.empty(),
|
|
1663
|
+
// revertible
|
|
1664
|
+
// We are using revertible (app phase) because only the app-phase returns are exposed.
|
|
1665
|
+
accumulatedDataForPublic,
|
|
1666
|
+
PublicCallRequest.empty(),
|
|
1667
|
+
);
|
|
1668
|
+
|
|
1669
|
+
const txData = new PrivateKernelTailCircuitPublicInputs(
|
|
1670
|
+
constantData,
|
|
1671
|
+
RollupValidationRequests.empty(),
|
|
1672
|
+
/*gasUsed=*/ new Gas(0, 0),
|
|
1673
|
+
/*feePayer=*/ AztecAddress.zero(),
|
|
1674
|
+
inputsForPublic,
|
|
1675
|
+
undefined,
|
|
1676
|
+
);
|
|
1677
|
+
|
|
1678
|
+
const tx = new Tx(txData, ClientIvcProof.empty(), [], [calldataHashedValues]);
|
|
1679
|
+
|
|
1680
|
+
const results = await processor.process([tx]);
|
|
1681
|
+
|
|
1682
|
+
const processedTxs = results[0];
|
|
1683
|
+
const failedTxs = results[1];
|
|
1684
|
+
|
|
1685
|
+
if (failedTxs.length !== 0 || !processedTxs[0].revertCode.isOK()) {
|
|
1686
|
+
throw new Error('Public execution has failed');
|
|
1687
|
+
}
|
|
1688
|
+
|
|
1689
|
+
const returnValues = results[3][0].values;
|
|
1690
|
+
let returnValuesHash;
|
|
1691
|
+
|
|
1692
|
+
if (returnValues !== undefined) {
|
|
1693
|
+
// This is a bit of a hack to not deal with returning a slice in nr which is what normally happens.
|
|
1694
|
+
// Investigate whether it is faster to do this or return from the oracle directly.
|
|
1695
|
+
returnValuesHash = await computeVarArgsHash(returnValues);
|
|
1696
|
+
this.storeInExecutionCache(returnValues, returnValuesHash);
|
|
1697
|
+
}
|
|
1698
|
+
|
|
1699
|
+
const fork = this.baseFork;
|
|
1700
|
+
|
|
1701
|
+
const txEffect = TxEffect.empty();
|
|
1702
|
+
|
|
1703
|
+
txEffect.noteHashes = processedTxs[0]!.txEffect.noteHashes;
|
|
1704
|
+
txEffect.nullifiers = processedTxs[0]!.txEffect.nullifiers;
|
|
1705
|
+
txEffect.privateLogs = taggedPrivateLogs;
|
|
1706
|
+
txEffect.publicLogs = processedTxs[0]!.txEffect.publicLogs;
|
|
1707
|
+
txEffect.publicDataWrites = processedTxs[0]!.txEffect.publicDataWrites;
|
|
1708
|
+
|
|
1709
|
+
txEffect.txHash = new TxHash(new Fr(this.blockNumber));
|
|
1710
|
+
|
|
1711
|
+
const body = new Body([txEffect]);
|
|
1712
|
+
|
|
1713
|
+
const l2Block = new L2Block(
|
|
1714
|
+
makeAppendOnlyTreeSnapshot(this.blockNumber + 1),
|
|
1715
|
+
makeHeader(0, this.blockNumber, this.blockNumber),
|
|
1716
|
+
body,
|
|
1717
|
+
);
|
|
1718
|
+
|
|
1719
|
+
const l1ToL2Messages = Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(0).map(Fr.zero);
|
|
1720
|
+
await fork.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l1ToL2Messages);
|
|
1721
|
+
|
|
1722
|
+
const stateReference = await fork.getStateReference();
|
|
1723
|
+
const archiveInfo = await fork.getTreeInfo(MerkleTreeId.ARCHIVE);
|
|
1724
|
+
|
|
1725
|
+
const header = new BlockHeader(
|
|
1726
|
+
new AppendOnlyTreeSnapshot(new Fr(archiveInfo.root), Number(archiveInfo.size)),
|
|
1727
|
+
makeContentCommitment(),
|
|
1728
|
+
stateReference,
|
|
1729
|
+
globals,
|
|
1730
|
+
Fr.ZERO,
|
|
1731
|
+
Fr.ZERO,
|
|
1732
|
+
);
|
|
1733
|
+
|
|
1734
|
+
header.globalVariables.blockNumber = new Fr(this.blockNumber);
|
|
1735
|
+
|
|
1736
|
+
l2Block.header = header;
|
|
1737
|
+
|
|
1738
|
+
await fork.updateArchive(l2Block.header);
|
|
1739
|
+
|
|
1740
|
+
await this.stateMachine.handleL2Block(l2Block);
|
|
1741
|
+
|
|
1742
|
+
const txRequestHash = this.getTxRequestHash();
|
|
1743
|
+
|
|
1744
|
+
this.setBlockNumber(this.blockNumber + 1);
|
|
1745
|
+
|
|
1746
|
+
return {
|
|
1747
|
+
returnsHash: returnValuesHash ?? Fr.ZERO,
|
|
1748
|
+
txHash: txRequestHash,
|
|
1749
|
+
};
|
|
1750
|
+
}
|
|
1620
1751
|
}
|
|
@@ -105,8 +105,8 @@ export class DummyP2P implements P2P {
|
|
|
105
105
|
throw new Error('DummyP2P does not implement "getAttestationForSlot"');
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
-
public
|
|
109
|
-
throw new Error('DummyP2P does not implement "
|
|
108
|
+
public addAttestations(_attestations: BlockAttestation[]): Promise<void> {
|
|
109
|
+
throw new Error('DummyP2P does not implement "addAttestations"');
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
public getL2BlockHash(_number: number): Promise<string | undefined> {
|
|
@@ -145,7 +145,7 @@ export class DummyP2P implements P2P {
|
|
|
145
145
|
throw new Error('DummyP2P does not implement "hasTxsInPool"');
|
|
146
146
|
}
|
|
147
147
|
|
|
148
|
-
public
|
|
148
|
+
public addTxsToPool(_txs: Tx[]): Promise<number> {
|
|
149
149
|
throw new Error('DummyP2P does not implement "addTxs"');
|
|
150
150
|
}
|
|
151
151
|
|
|
@@ -62,7 +62,7 @@ export class TXEStateMachine {
|
|
|
62
62
|
blockNumber: block.header.globalVariables.blockNumber.toBigInt(),
|
|
63
63
|
timestamp: block.header.globalVariables.blockNumber.toBigInt(),
|
|
64
64
|
},
|
|
65
|
-
|
|
65
|
+
attestations: [],
|
|
66
66
|
},
|
|
67
67
|
]),
|
|
68
68
|
this.syncDataProvider.setHeader(block.header),
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { type ContractInstanceWithAddress, Fr, Point
|
|
1
|
+
import { type ContractInstanceWithAddress, Fr, Point } from '@aztec/aztec.js';
|
|
2
2
|
import { DEPLOYER_CONTRACT_ADDRESS } from '@aztec/constants';
|
|
3
3
|
import type { Logger } from '@aztec/foundation/log';
|
|
4
4
|
import { openTmpStore } from '@aztec/kv-store/lmdb-v2';
|
|
5
5
|
import type { ProtocolContract } from '@aztec/protocol-contracts';
|
|
6
6
|
import { enrichPublicSimulationError } from '@aztec/pxe/server';
|
|
7
7
|
import type { TypedOracle } from '@aztec/pxe/simulator';
|
|
8
|
-
import { type ContractArtifact,
|
|
8
|
+
import { type ContractArtifact, FunctionSelector, NoteSelector } from '@aztec/stdlib/abi';
|
|
9
9
|
import { PublicDataWrite } from '@aztec/stdlib/avm';
|
|
10
10
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
11
11
|
import { computePartialAddress } from '@aztec/stdlib/contract';
|
|
12
12
|
import { SimulationError } from '@aztec/stdlib/errors';
|
|
13
13
|
import { computePublicDataTreeLeafSlot } from '@aztec/stdlib/hash';
|
|
14
|
-
import {
|
|
14
|
+
import { PrivateLogWithTxData, PublicLogWithTxData } from '@aztec/stdlib/logs';
|
|
15
15
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
16
16
|
|
|
17
17
|
import { TXE } from '../oracle/txe_oracle.js';
|
|
@@ -700,16 +700,10 @@ export class TXEService {
|
|
|
700
700
|
return toForeignCallResult([]);
|
|
701
701
|
}
|
|
702
702
|
|
|
703
|
-
public async
|
|
703
|
+
public async validateEnqueuedNotesAndEvents(
|
|
704
704
|
contractAddress: ForeignCallSingle,
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
content: ForeignCallArray,
|
|
708
|
-
contentLength: ForeignCallSingle,
|
|
709
|
-
noteHash: ForeignCallSingle,
|
|
710
|
-
nullifier: ForeignCallSingle,
|
|
711
|
-
txHash: ForeignCallSingle,
|
|
712
|
-
recipient: ForeignCallSingle,
|
|
705
|
+
noteValidationRequestsArrayBaseSlot: ForeignCallSingle,
|
|
706
|
+
eventValidationRequestsArrayBaseSlot: ForeignCallSingle,
|
|
713
707
|
) {
|
|
714
708
|
if (!this.oraclesEnabled) {
|
|
715
709
|
throw new Error(
|
|
@@ -717,32 +711,50 @@ export class TXEService {
|
|
|
717
711
|
);
|
|
718
712
|
}
|
|
719
713
|
|
|
720
|
-
await this.typedOracle.
|
|
714
|
+
await this.typedOracle.validateEnqueuedNotesAndEvents(
|
|
721
715
|
AztecAddress.fromField(fromSingle(contractAddress)),
|
|
722
|
-
fromSingle(
|
|
723
|
-
fromSingle(
|
|
724
|
-
fromArray(content.slice(0, Number(BigInt(contentLength)))),
|
|
725
|
-
fromSingle(noteHash),
|
|
726
|
-
fromSingle(nullifier),
|
|
727
|
-
new TxHash(fromSingle(txHash)),
|
|
728
|
-
AztecAddress.fromField(fromSingle(recipient)),
|
|
716
|
+
fromSingle(noteValidationRequestsArrayBaseSlot),
|
|
717
|
+
fromSingle(eventValidationRequestsArrayBaseSlot),
|
|
729
718
|
);
|
|
730
719
|
|
|
731
|
-
return toForeignCallResult([
|
|
720
|
+
return toForeignCallResult([]);
|
|
732
721
|
}
|
|
733
722
|
|
|
734
|
-
async
|
|
723
|
+
async getPublicLogByTag(tag: ForeignCallSingle, contractAddress: ForeignCallSingle) {
|
|
735
724
|
if (!this.oraclesEnabled) {
|
|
736
725
|
throw new Error(
|
|
737
726
|
'Oracle access from the root of a TXe test are not enabled. Please use env._ to interact with the oracles.',
|
|
738
727
|
);
|
|
739
728
|
}
|
|
740
729
|
|
|
741
|
-
// TODO(AD): this was warning that
|
|
742
|
-
const log = await Promise.resolve(
|
|
730
|
+
// TODO(AD): this was warning that getPublicLogByTag did not return a promise.
|
|
731
|
+
const log = await Promise.resolve(
|
|
732
|
+
this.typedOracle.getPublicLogByTag(fromSingle(tag), AztecAddress.fromField(fromSingle(contractAddress))),
|
|
733
|
+
);
|
|
743
734
|
|
|
744
735
|
if (log == null) {
|
|
745
|
-
return toForeignCallResult([
|
|
736
|
+
return toForeignCallResult([
|
|
737
|
+
toSingle(Fr.ZERO),
|
|
738
|
+
...PublicLogWithTxData.noirSerializationOfEmpty().map(toSingleOrArray),
|
|
739
|
+
]);
|
|
740
|
+
} else {
|
|
741
|
+
return toForeignCallResult([toSingle(Fr.ONE), ...log.toNoirSerialization().map(toSingleOrArray)]);
|
|
742
|
+
}
|
|
743
|
+
}
|
|
744
|
+
|
|
745
|
+
async getPrivateLogByTag(siloedTag: ForeignCallSingle) {
|
|
746
|
+
if (!this.oraclesEnabled) {
|
|
747
|
+
throw new Error(
|
|
748
|
+
'Oracle access from the root of a TXe test are not enabled. Please use env._ to interact with the oracles.',
|
|
749
|
+
);
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
const log = await this.typedOracle.getPrivateLogByTag(fromSingle(siloedTag));
|
|
753
|
+
if (log == null) {
|
|
754
|
+
return toForeignCallResult([
|
|
755
|
+
toSingle(Fr.ZERO),
|
|
756
|
+
...PrivateLogWithTxData.noirSerializationOfEmpty().map(toSingleOrArray),
|
|
757
|
+
]);
|
|
746
758
|
} else {
|
|
747
759
|
return toForeignCallResult([toSingle(Fr.ONE), ...log.toNoirSerialization().map(toSingleOrArray)]);
|
|
748
760
|
}
|
|
@@ -862,33 +874,6 @@ export class TXEService {
|
|
|
862
874
|
return toForeignCallResult(secret.toFields().map(toSingle));
|
|
863
875
|
}
|
|
864
876
|
|
|
865
|
-
async storePrivateEventLog(
|
|
866
|
-
contractAddress: ForeignCallSingle,
|
|
867
|
-
recipient: ForeignCallSingle,
|
|
868
|
-
eventSelector: ForeignCallSingle,
|
|
869
|
-
logContent: ForeignCallArray,
|
|
870
|
-
txHash: ForeignCallSingle,
|
|
871
|
-
logIndexInTx: ForeignCallSingle,
|
|
872
|
-
txIndexInBlock: ForeignCallSingle,
|
|
873
|
-
) {
|
|
874
|
-
if (!this.oraclesEnabled) {
|
|
875
|
-
throw new Error(
|
|
876
|
-
'Oracle access from the root of a TXe test are not enabled. Please use env._ to interact with the oracles.',
|
|
877
|
-
);
|
|
878
|
-
}
|
|
879
|
-
|
|
880
|
-
await this.typedOracle.storePrivateEventLog(
|
|
881
|
-
AztecAddress.fromField(fromSingle(contractAddress)),
|
|
882
|
-
AztecAddress.fromField(fromSingle(recipient)),
|
|
883
|
-
EventSelector.fromField(fromSingle(eventSelector)),
|
|
884
|
-
fromArray(logContent),
|
|
885
|
-
new TxHash(fromSingle(txHash)),
|
|
886
|
-
fromSingle(logIndexInTx).toNumber(),
|
|
887
|
-
fromSingle(txIndexInBlock).toNumber(),
|
|
888
|
-
);
|
|
889
|
-
return toForeignCallResult([]);
|
|
890
|
-
}
|
|
891
|
-
|
|
892
877
|
// AVM opcodes
|
|
893
878
|
|
|
894
879
|
avmOpcodeEmitUnencryptedLog(_message: ForeignCallArray) {
|
|
@@ -1222,4 +1207,21 @@ export class TXEService {
|
|
|
1222
1207
|
|
|
1223
1208
|
return toForeignCallResult([toSingle(result)]);
|
|
1224
1209
|
}
|
|
1210
|
+
|
|
1211
|
+
async publicCallNewFlow(
|
|
1212
|
+
from: ForeignCallSingle,
|
|
1213
|
+
address: ForeignCallSingle,
|
|
1214
|
+
_length: ForeignCallSingle,
|
|
1215
|
+
calldata: ForeignCallArray,
|
|
1216
|
+
isStaticCall: ForeignCallSingle,
|
|
1217
|
+
) {
|
|
1218
|
+
const result = await (this.typedOracle as TXE).publicCallNewFlow(
|
|
1219
|
+
addressFromSingle(from),
|
|
1220
|
+
addressFromSingle(address),
|
|
1221
|
+
fromArray(calldata),
|
|
1222
|
+
fromSingle(isStaticCall).toBool(),
|
|
1223
|
+
);
|
|
1224
|
+
|
|
1225
|
+
return toForeignCallResult([toArray([result.returnsHash, result.txHash])]);
|
|
1226
|
+
}
|
|
1225
1227
|
}
|