@aztec/txe 0.87.2 → 0.87.3-nightly.20250529
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 +7 -3
- package/dest/oracle/txe_oracle.d.ts.map +1 -1
- package/dest/oracle/txe_oracle.js +84 -4
- package/dest/state_machine/index.js +1 -1
- package/dest/txe_service/txe_service.d.ts +5 -2
- package/dest/txe_service/txe_service.d.ts.map +1 -1
- package/dest/txe_service/txe_service.js +16 -7
- package/package.json +15 -15
- package/src/oracle/txe_oracle.ts +158 -4
- package/src/state_machine/index.ts +1 -1
- package/src/txe_service/txe_service.ts +29 -7
|
@@ -14,7 +14,7 @@ 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, 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
20
|
import { BlockHeader, TxHash } from '@aztec/stdlib/tx';
|
|
@@ -133,9 +133,9 @@ export declare class TXE implements TypedOracle {
|
|
|
133
133
|
debugLog(message: string, fields: Fr[]): void;
|
|
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
137
|
deliverNote(contractAddress: AztecAddress, storageSlot: Fr, nonce: Fr, content: Fr[], noteHash: Fr, nullifier: Fr, txHash: TxHash, recipient: AztecAddress): Promise<void>;
|
|
138
|
-
|
|
138
|
+
getPublicLogByTag(tag: Fr, contractAddress: AztecAddress): Promise<PublicLogWithTxData | null>;
|
|
139
139
|
avmOpcodeCall(targetContractAddress: AztecAddress, calldata: Fr[], isStaticCall: boolean): Promise<PublicTxResult>;
|
|
140
140
|
avmOpcodeSuccessCopy(): boolean;
|
|
141
141
|
avmOpcodeReturndataSize(): number;
|
|
@@ -156,5 +156,9 @@ export declare class TXE implements TypedOracle {
|
|
|
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,KAAK,uBAAuB,EAC5B,KAAK,QAAQ,EAGb,KAAK,WAAW,EASjB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAIL,KAAK,cAAc,EAIpB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,KAAK,gBAAgB,EACrB,aAAa,EACb,KAAK,WAAW,EAChB,gBAAgB,EAEhB,KAAK,YAAY,EAElB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"txe_oracle.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_oracle.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@ import { PublicDataWrite } from '@aztec/stdlib/avm';
|
|
|
16
16
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
17
17
|
import { SimulationError } from '@aztec/stdlib/errors';
|
|
18
18
|
import { Gas, GasFees, GasSettings } from '@aztec/stdlib/gas';
|
|
19
|
-
import { computeNoteHashNonce, computePublicDataTreeLeafSlot, computeUniqueNoteHash, computeVarArgsHash, siloNoteHash, siloNullifier } from '@aztec/stdlib/hash';
|
|
19
|
+
import { computeCalldataHash, computeNoteHashNonce, computePublicDataTreeLeafSlot, computeUniqueNoteHash, computeVarArgsHash, siloNoteHash, siloNullifier } from '@aztec/stdlib/hash';
|
|
20
20
|
import { PartialPrivateTailPublicInputsForPublic, PartialPrivateTailPublicInputsForRollup, PrivateContextInputs, PrivateKernelTailCircuitPublicInputs, PrivateToPublicAccumulatedData, PrivateToRollupAccumulatedData, PublicCallRequest, RollupValidationRequests, ScopedLogHash } from '@aztec/stdlib/kernel';
|
|
21
21
|
import { deriveKeys } from '@aztec/stdlib/keys';
|
|
22
22
|
import { PrivateLog } from '@aztec/stdlib/logs';
|
|
@@ -744,7 +744,7 @@ export class TXE {
|
|
|
744
744
|
async getIndexedTaggingSecretAsSender(sender, recipient) {
|
|
745
745
|
return await this.pxeOracleInterface.getIndexedTaggingSecretAsSender(this.contractAddress, sender, recipient);
|
|
746
746
|
}
|
|
747
|
-
async
|
|
747
|
+
async fetchTaggedLogs(pendingTaggedLogArrayBaseSlot) {
|
|
748
748
|
await this.pxeOracleInterface.syncTaggedLogs(this.contractAddress, pendingTaggedLogArrayBaseSlot);
|
|
749
749
|
await this.pxeOracleInterface.removeNullifiedNotes(this.contractAddress);
|
|
750
750
|
return Promise.resolve();
|
|
@@ -752,8 +752,8 @@ export class TXE {
|
|
|
752
752
|
async deliverNote(contractAddress, storageSlot, nonce, content, noteHash, nullifier, txHash, recipient) {
|
|
753
753
|
await this.pxeOracleInterface.deliverNote(contractAddress, storageSlot, nonce, content, noteHash, nullifier, txHash, recipient);
|
|
754
754
|
}
|
|
755
|
-
async
|
|
756
|
-
return await this.pxeOracleInterface.
|
|
755
|
+
async getPublicLogByTag(tag, contractAddress) {
|
|
756
|
+
return await this.pxeOracleInterface.getPublicLogByTag(tag, contractAddress);
|
|
757
757
|
}
|
|
758
758
|
// AVM oracles
|
|
759
759
|
async avmOpcodeCall(targetContractAddress, calldata, isStaticCall) {
|
|
@@ -997,4 +997,84 @@ export class TXE {
|
|
|
997
997
|
txHash: txRequestHash
|
|
998
998
|
};
|
|
999
999
|
}
|
|
1000
|
+
async publicCallNewFlow(from, targetContractAddress, calldata, isStaticCall) {
|
|
1001
|
+
this.logger.verbose(`Executing public function ${await this.getDebugFunctionName(targetContractAddress, FunctionSelector.fromField(calldata[0]))}@${targetContractAddress} isStaticCall=${isStaticCall}`);
|
|
1002
|
+
const gasLimits = new Gas(DEFAULT_GAS_LIMIT, MAX_L2_GAS_PER_TX_PUBLIC_PORTION);
|
|
1003
|
+
const teardownGasLimits = new Gas(DEFAULT_TEARDOWN_GAS_LIMIT, MAX_L2_GAS_PER_TX_PUBLIC_PORTION);
|
|
1004
|
+
const gasSettings = new GasSettings(gasLimits, teardownGasLimits, GasFees.empty(), GasFees.empty());
|
|
1005
|
+
const txContext = new TxContext(this.CHAIN_ID, this.ROLLUP_VERSION, gasSettings);
|
|
1006
|
+
const blockHeader = await this.pxeOracleInterface.getBlockHeader();
|
|
1007
|
+
const uniqueNoteHashes = [];
|
|
1008
|
+
const taggedPrivateLogs = [];
|
|
1009
|
+
const nullifiers = [
|
|
1010
|
+
this.getTxRequestHash()
|
|
1011
|
+
];
|
|
1012
|
+
const l2ToL1Messages = [];
|
|
1013
|
+
const contractClassLogsHashes = [];
|
|
1014
|
+
const calldataHash = await computeCalldataHash(calldata);
|
|
1015
|
+
const calldataHashedValues = new HashedValues(calldata, calldataHash);
|
|
1016
|
+
const publicCallRequest = new PublicCallRequest(from, targetContractAddress, isStaticCall, calldataHash);
|
|
1017
|
+
const publicCallRequests = [
|
|
1018
|
+
publicCallRequest
|
|
1019
|
+
];
|
|
1020
|
+
const globals = makeGlobalVariables();
|
|
1021
|
+
globals.blockNumber = new Fr(this.blockNumber);
|
|
1022
|
+
globals.gasFees = GasFees.empty();
|
|
1023
|
+
const contractsDB = new PublicContractsDB(new TXEPublicContractDataSource(this));
|
|
1024
|
+
const simulator = new PublicTxSimulator(this.baseFork, contractsDB, globals, true, true);
|
|
1025
|
+
const processor = new PublicProcessor(globals, this.baseFork, contractsDB, simulator, new TestDateProvider());
|
|
1026
|
+
const constantData = new TxConstantData(blockHeader, txContext, Fr.zero(), Fr.zero());
|
|
1027
|
+
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));
|
|
1028
|
+
const inputsForPublic = new PartialPrivateTailPublicInputsForPublic(// nonrevertible
|
|
1029
|
+
PrivateToPublicAccumulatedData.empty(), // revertible
|
|
1030
|
+
// We are using revertible (app phase) because only the app-phase returns are exposed.
|
|
1031
|
+
accumulatedDataForPublic, PublicCallRequest.empty());
|
|
1032
|
+
const txData = new PrivateKernelTailCircuitPublicInputs(constantData, RollupValidationRequests.empty(), /*gasUsed=*/ new Gas(0, 0), /*feePayer=*/ AztecAddress.zero(), inputsForPublic, undefined);
|
|
1033
|
+
const tx = new Tx(txData, ClientIvcProof.empty(), [], [
|
|
1034
|
+
calldataHashedValues
|
|
1035
|
+
]);
|
|
1036
|
+
const results = await processor.process([
|
|
1037
|
+
tx
|
|
1038
|
+
]);
|
|
1039
|
+
const processedTxs = results[0];
|
|
1040
|
+
const failedTxs = results[1];
|
|
1041
|
+
if (failedTxs.length !== 0 || !processedTxs[0].revertCode.isOK()) {
|
|
1042
|
+
throw new Error('Public execution has failed');
|
|
1043
|
+
}
|
|
1044
|
+
const returnValues = results[3][0].values;
|
|
1045
|
+
let returnValuesHash;
|
|
1046
|
+
if (returnValues !== undefined) {
|
|
1047
|
+
// This is a bit of a hack to not deal with returning a slice in nr which is what normally happens.
|
|
1048
|
+
// Investigate whether it is faster to do this or return from the oracle directly.
|
|
1049
|
+
returnValuesHash = await computeVarArgsHash(returnValues);
|
|
1050
|
+
this.storeInExecutionCache(returnValues, returnValuesHash);
|
|
1051
|
+
}
|
|
1052
|
+
const fork = this.baseFork;
|
|
1053
|
+
const txEffect = TxEffect.empty();
|
|
1054
|
+
txEffect.noteHashes = processedTxs[0].txEffect.noteHashes;
|
|
1055
|
+
txEffect.nullifiers = processedTxs[0].txEffect.nullifiers;
|
|
1056
|
+
txEffect.privateLogs = taggedPrivateLogs;
|
|
1057
|
+
txEffect.publicLogs = processedTxs[0].txEffect.publicLogs;
|
|
1058
|
+
txEffect.publicDataWrites = processedTxs[0].txEffect.publicDataWrites;
|
|
1059
|
+
txEffect.txHash = new TxHash(new Fr(this.blockNumber));
|
|
1060
|
+
const body = new Body([
|
|
1061
|
+
txEffect
|
|
1062
|
+
]);
|
|
1063
|
+
const l2Block = new L2Block(makeAppendOnlyTreeSnapshot(this.blockNumber + 1), makeHeader(0, this.blockNumber, this.blockNumber), body);
|
|
1064
|
+
const l1ToL2Messages = Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(0).map(Fr.zero);
|
|
1065
|
+
await fork.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l1ToL2Messages);
|
|
1066
|
+
const stateReference = await fork.getStateReference();
|
|
1067
|
+
const archiveInfo = await fork.getTreeInfo(MerkleTreeId.ARCHIVE);
|
|
1068
|
+
const header = new BlockHeader(new AppendOnlyTreeSnapshot(new Fr(archiveInfo.root), Number(archiveInfo.size)), makeContentCommitment(), stateReference, globals, Fr.ZERO, Fr.ZERO);
|
|
1069
|
+
header.globalVariables.blockNumber = new Fr(this.blockNumber);
|
|
1070
|
+
l2Block.header = header;
|
|
1071
|
+
await fork.updateArchive(l2Block.header);
|
|
1072
|
+
await this.stateMachine.handleL2Block(l2Block);
|
|
1073
|
+
const txRequestHash = this.getTxRequestHash();
|
|
1074
|
+
this.setBlockNumber(this.blockNumber + 1);
|
|
1075
|
+
return {
|
|
1076
|
+
returnsHash: returnValuesHash ?? Fr.ZERO,
|
|
1077
|
+
txHash: txRequestHash
|
|
1078
|
+
};
|
|
1079
|
+
}
|
|
1000
1080
|
}
|
|
@@ -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)
|
|
@@ -133,13 +133,13 @@ export declare class TXEService {
|
|
|
133
133
|
getIndexedTaggingSecretAsSender(sender: ForeignCallSingle, recipient: ForeignCallSingle): Promise<{
|
|
134
134
|
values: (string | ForeignCallArray)[];
|
|
135
135
|
}>;
|
|
136
|
-
|
|
136
|
+
fetchTaggedLogs(pendingTaggedLogArrayBaseSlot: ForeignCallSingle): Promise<{
|
|
137
137
|
values: (string | ForeignCallArray)[];
|
|
138
138
|
}>;
|
|
139
139
|
deliverNote(contractAddress: ForeignCallSingle, storageSlot: ForeignCallSingle, nonce: ForeignCallSingle, content: ForeignCallArray, contentLength: ForeignCallSingle, noteHash: ForeignCallSingle, nullifier: ForeignCallSingle, txHash: ForeignCallSingle, recipient: ForeignCallSingle): Promise<{
|
|
140
140
|
values: (string | ForeignCallArray)[];
|
|
141
141
|
}>;
|
|
142
|
-
|
|
142
|
+
getPublicLogByTag(tag: ForeignCallSingle, contractAddress: ForeignCallSingle): Promise<{
|
|
143
143
|
values: (string | ForeignCallArray)[];
|
|
144
144
|
}>;
|
|
145
145
|
storeCapsule(contractAddress: ForeignCallSingle, slot: ForeignCallSingle, capsule: ForeignCallArray): Promise<{
|
|
@@ -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":"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
|
|
1
|
+
{"version":3,"file":"txe_service.d.ts","sourceRoot":"","sources":["../../src/txe_service/txe_service.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,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 { 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';
|
|
@@ -439,11 +439,11 @@ export class TXEService {
|
|
|
439
439
|
const secret = await this.typedOracle.getIndexedTaggingSecretAsSender(AztecAddress.fromField(fromSingle(sender)), AztecAddress.fromField(fromSingle(recipient)));
|
|
440
440
|
return toForeignCallResult(secret.toFields().map(toSingle));
|
|
441
441
|
}
|
|
442
|
-
async
|
|
442
|
+
async fetchTaggedLogs(pendingTaggedLogArrayBaseSlot) {
|
|
443
443
|
if (!this.oraclesEnabled) {
|
|
444
444
|
throw new Error('Oracle access from the root of a TXe test are not enabled. Please use env._ to interact with the oracles.');
|
|
445
445
|
}
|
|
446
|
-
await this.typedOracle.
|
|
446
|
+
await this.typedOracle.fetchTaggedLogs(fromSingle(pendingTaggedLogArrayBaseSlot));
|
|
447
447
|
return toForeignCallResult([]);
|
|
448
448
|
}
|
|
449
449
|
async deliverNote(contractAddress, storageSlot, nonce, content, contentLength, noteHash, nullifier, txHash, recipient) {
|
|
@@ -455,16 +455,16 @@ export class TXEService {
|
|
|
455
455
|
toSingle(Fr.ONE)
|
|
456
456
|
]);
|
|
457
457
|
}
|
|
458
|
-
async
|
|
458
|
+
async getPublicLogByTag(tag, contractAddress) {
|
|
459
459
|
if (!this.oraclesEnabled) {
|
|
460
460
|
throw new Error('Oracle access from the root of a TXe test are not enabled. Please use env._ to interact with the oracles.');
|
|
461
461
|
}
|
|
462
|
-
// TODO(AD): this was warning that
|
|
463
|
-
const log = await Promise.resolve(this.typedOracle.
|
|
462
|
+
// TODO(AD): this was warning that getPublicLogByTag did not return a promise.
|
|
463
|
+
const log = await Promise.resolve(this.typedOracle.getPublicLogByTag(fromSingle(tag), AztecAddress.fromField(fromSingle(contractAddress))));
|
|
464
464
|
if (log == null) {
|
|
465
465
|
return toForeignCallResult([
|
|
466
466
|
toSingle(Fr.ZERO),
|
|
467
|
-
...
|
|
467
|
+
...PublicLogWithTxData.noirSerializationOfEmpty().map(toSingleOrArray)
|
|
468
468
|
]);
|
|
469
469
|
} else {
|
|
470
470
|
return toForeignCallResult([
|
|
@@ -766,4 +766,13 @@ export class TXEService {
|
|
|
766
766
|
toSingle(result)
|
|
767
767
|
]);
|
|
768
768
|
}
|
|
769
|
+
async publicCallNewFlow(from, address, _length, calldata, isStaticCall) {
|
|
770
|
+
const result = await this.typedOracle.publicCallNewFlow(addressFromSingle(from), addressFromSingle(address), fromArray(calldata), fromSingle(isStaticCall).toBool());
|
|
771
|
+
return toForeignCallResult([
|
|
772
|
+
toArray([
|
|
773
|
+
result.returnsHash,
|
|
774
|
+
result.txHash
|
|
775
|
+
])
|
|
776
|
+
]);
|
|
777
|
+
}
|
|
769
778
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/txe",
|
|
3
|
-
"version": "0.87.
|
|
3
|
+
"version": "0.87.3-nightly.20250529",
|
|
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.87.
|
|
61
|
-
"@aztec/archiver": "0.87.
|
|
62
|
-
"@aztec/aztec-node": "0.87.
|
|
63
|
-
"@aztec/aztec.js": "0.87.
|
|
64
|
-
"@aztec/bb-prover": "0.87.
|
|
65
|
-
"@aztec/constants": "0.87.
|
|
66
|
-
"@aztec/foundation": "0.87.
|
|
67
|
-
"@aztec/key-store": "0.87.
|
|
68
|
-
"@aztec/kv-store": "0.87.
|
|
69
|
-
"@aztec/protocol-contracts": "0.87.
|
|
70
|
-
"@aztec/pxe": "0.87.
|
|
71
|
-
"@aztec/simulator": "0.87.
|
|
72
|
-
"@aztec/stdlib": "0.87.
|
|
73
|
-
"@aztec/world-state": "0.87.
|
|
60
|
+
"@aztec/accounts": "0.87.3-nightly.20250529",
|
|
61
|
+
"@aztec/archiver": "0.87.3-nightly.20250529",
|
|
62
|
+
"@aztec/aztec-node": "0.87.3-nightly.20250529",
|
|
63
|
+
"@aztec/aztec.js": "0.87.3-nightly.20250529",
|
|
64
|
+
"@aztec/bb-prover": "0.87.3-nightly.20250529",
|
|
65
|
+
"@aztec/constants": "0.87.3-nightly.20250529",
|
|
66
|
+
"@aztec/foundation": "0.87.3-nightly.20250529",
|
|
67
|
+
"@aztec/key-store": "0.87.3-nightly.20250529",
|
|
68
|
+
"@aztec/kv-store": "0.87.3-nightly.20250529",
|
|
69
|
+
"@aztec/protocol-contracts": "0.87.3-nightly.20250529",
|
|
70
|
+
"@aztec/pxe": "0.87.3-nightly.20250529",
|
|
71
|
+
"@aztec/simulator": "0.87.3-nightly.20250529",
|
|
72
|
+
"@aztec/stdlib": "0.87.3-nightly.20250529",
|
|
73
|
+
"@aztec/world-state": "0.87.3-nightly.20250529",
|
|
74
74
|
"zod": "^3.23.8"
|
|
75
75
|
},
|
|
76
76
|
"devDependencies": {
|
package/src/oracle/txe_oracle.ts
CHANGED
|
@@ -78,6 +78,7 @@ import type { ContractInstance, ContractInstanceWithAddress } from '@aztec/stdli
|
|
|
78
78
|
import { SimulationError } from '@aztec/stdlib/errors';
|
|
79
79
|
import { Gas, GasFees, GasSettings } from '@aztec/stdlib/gas';
|
|
80
80
|
import {
|
|
81
|
+
computeCalldataHash,
|
|
81
82
|
computeNoteHashNonce,
|
|
82
83
|
computePublicDataTreeLeafSlot,
|
|
83
84
|
computeUniqueNoteHash,
|
|
@@ -99,7 +100,13 @@ import {
|
|
|
99
100
|
ScopedLogHash,
|
|
100
101
|
} from '@aztec/stdlib/kernel';
|
|
101
102
|
import { deriveKeys } from '@aztec/stdlib/keys';
|
|
102
|
-
import {
|
|
103
|
+
import {
|
|
104
|
+
ContractClassLog,
|
|
105
|
+
IndexedTaggingSecret,
|
|
106
|
+
PrivateLog,
|
|
107
|
+
type PublicLog,
|
|
108
|
+
PublicLogWithTxData,
|
|
109
|
+
} from '@aztec/stdlib/logs';
|
|
103
110
|
import { ScopedL2ToL1Message } from '@aztec/stdlib/messaging';
|
|
104
111
|
import type { NoteStatus } from '@aztec/stdlib/note';
|
|
105
112
|
import { ClientIvcProof } from '@aztec/stdlib/proofs';
|
|
@@ -1161,7 +1168,7 @@ export class TXE implements TypedOracle {
|
|
|
1161
1168
|
return await this.pxeOracleInterface.getIndexedTaggingSecretAsSender(this.contractAddress, sender, recipient);
|
|
1162
1169
|
}
|
|
1163
1170
|
|
|
1164
|
-
async
|
|
1171
|
+
async fetchTaggedLogs(pendingTaggedLogArrayBaseSlot: Fr) {
|
|
1165
1172
|
await this.pxeOracleInterface.syncTaggedLogs(this.contractAddress, pendingTaggedLogArrayBaseSlot);
|
|
1166
1173
|
|
|
1167
1174
|
await this.pxeOracleInterface.removeNullifiedNotes(this.contractAddress);
|
|
@@ -1191,8 +1198,8 @@ export class TXE implements TypedOracle {
|
|
|
1191
1198
|
);
|
|
1192
1199
|
}
|
|
1193
1200
|
|
|
1194
|
-
async
|
|
1195
|
-
return await this.pxeOracleInterface.
|
|
1201
|
+
async getPublicLogByTag(tag: Fr, contractAddress: AztecAddress): Promise<PublicLogWithTxData | null> {
|
|
1202
|
+
return await this.pxeOracleInterface.getPublicLogByTag(tag, contractAddress);
|
|
1196
1203
|
}
|
|
1197
1204
|
|
|
1198
1205
|
// AVM oracles
|
|
@@ -1620,4 +1627,151 @@ export class TXE implements TypedOracle {
|
|
|
1620
1627
|
txHash: txRequestHash,
|
|
1621
1628
|
};
|
|
1622
1629
|
}
|
|
1630
|
+
|
|
1631
|
+
async publicCallNewFlow(
|
|
1632
|
+
from: AztecAddress,
|
|
1633
|
+
targetContractAddress: AztecAddress,
|
|
1634
|
+
calldata: Fr[],
|
|
1635
|
+
isStaticCall: boolean,
|
|
1636
|
+
) {
|
|
1637
|
+
this.logger.verbose(
|
|
1638
|
+
`Executing public function ${await this.getDebugFunctionName(
|
|
1639
|
+
targetContractAddress,
|
|
1640
|
+
FunctionSelector.fromField(calldata[0]),
|
|
1641
|
+
)}@${targetContractAddress} isStaticCall=${isStaticCall}`,
|
|
1642
|
+
);
|
|
1643
|
+
|
|
1644
|
+
const gasLimits = new Gas(DEFAULT_GAS_LIMIT, MAX_L2_GAS_PER_TX_PUBLIC_PORTION);
|
|
1645
|
+
|
|
1646
|
+
const teardownGasLimits = new Gas(DEFAULT_TEARDOWN_GAS_LIMIT, MAX_L2_GAS_PER_TX_PUBLIC_PORTION);
|
|
1647
|
+
|
|
1648
|
+
const gasSettings = new GasSettings(gasLimits, teardownGasLimits, GasFees.empty(), GasFees.empty());
|
|
1649
|
+
|
|
1650
|
+
const txContext = new TxContext(this.CHAIN_ID, this.ROLLUP_VERSION, gasSettings);
|
|
1651
|
+
|
|
1652
|
+
const blockHeader = await this.pxeOracleInterface.getBlockHeader();
|
|
1653
|
+
|
|
1654
|
+
const uniqueNoteHashes: Fr[] = [];
|
|
1655
|
+
const taggedPrivateLogs: PrivateLog[] = [];
|
|
1656
|
+
const nullifiers: Fr[] = [this.getTxRequestHash()];
|
|
1657
|
+
const l2ToL1Messages: ScopedL2ToL1Message[] = [];
|
|
1658
|
+
const contractClassLogsHashes: ScopedLogHash[] = [];
|
|
1659
|
+
|
|
1660
|
+
const calldataHash = await computeCalldataHash(calldata);
|
|
1661
|
+
|
|
1662
|
+
const calldataHashedValues = new HashedValues(calldata, calldataHash);
|
|
1663
|
+
|
|
1664
|
+
const publicCallRequest = new PublicCallRequest(from, targetContractAddress, isStaticCall, calldataHash);
|
|
1665
|
+
const publicCallRequests: PublicCallRequest[] = [publicCallRequest];
|
|
1666
|
+
|
|
1667
|
+
const globals = makeGlobalVariables();
|
|
1668
|
+
globals.blockNumber = new Fr(this.blockNumber);
|
|
1669
|
+
globals.gasFees = GasFees.empty();
|
|
1670
|
+
|
|
1671
|
+
const contractsDB = new PublicContractsDB(new TXEPublicContractDataSource(this));
|
|
1672
|
+
const simulator = new PublicTxSimulator(this.baseFork, contractsDB, globals, true, true);
|
|
1673
|
+
const processor = new PublicProcessor(globals, this.baseFork, contractsDB, simulator, new TestDateProvider());
|
|
1674
|
+
|
|
1675
|
+
const constantData = new TxConstantData(blockHeader, txContext, Fr.zero(), Fr.zero());
|
|
1676
|
+
|
|
1677
|
+
const accumulatedDataForPublic = new PrivateToPublicAccumulatedData(
|
|
1678
|
+
padArrayEnd(uniqueNoteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX),
|
|
1679
|
+
padArrayEnd(nullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX),
|
|
1680
|
+
padArrayEnd(l2ToL1Messages, ScopedL2ToL1Message.empty(), MAX_L2_TO_L1_MSGS_PER_TX),
|
|
1681
|
+
padArrayEnd(taggedPrivateLogs, PrivateLog.empty(), MAX_PRIVATE_LOGS_PER_TX),
|
|
1682
|
+
padArrayEnd(contractClassLogsHashes, ScopedLogHash.empty(), MAX_CONTRACT_CLASS_LOGS_PER_TX),
|
|
1683
|
+
padArrayEnd(publicCallRequests, PublicCallRequest.empty(), MAX_ENQUEUED_CALLS_PER_TX),
|
|
1684
|
+
);
|
|
1685
|
+
|
|
1686
|
+
const inputsForPublic = new PartialPrivateTailPublicInputsForPublic(
|
|
1687
|
+
// nonrevertible
|
|
1688
|
+
PrivateToPublicAccumulatedData.empty(),
|
|
1689
|
+
// revertible
|
|
1690
|
+
// We are using revertible (app phase) because only the app-phase returns are exposed.
|
|
1691
|
+
accumulatedDataForPublic,
|
|
1692
|
+
PublicCallRequest.empty(),
|
|
1693
|
+
);
|
|
1694
|
+
|
|
1695
|
+
const txData = new PrivateKernelTailCircuitPublicInputs(
|
|
1696
|
+
constantData,
|
|
1697
|
+
RollupValidationRequests.empty(),
|
|
1698
|
+
/*gasUsed=*/ new Gas(0, 0),
|
|
1699
|
+
/*feePayer=*/ AztecAddress.zero(),
|
|
1700
|
+
inputsForPublic,
|
|
1701
|
+
undefined,
|
|
1702
|
+
);
|
|
1703
|
+
|
|
1704
|
+
const tx = new Tx(txData, ClientIvcProof.empty(), [], [calldataHashedValues]);
|
|
1705
|
+
|
|
1706
|
+
const results = await processor.process([tx]);
|
|
1707
|
+
|
|
1708
|
+
const processedTxs = results[0];
|
|
1709
|
+
const failedTxs = results[1];
|
|
1710
|
+
|
|
1711
|
+
if (failedTxs.length !== 0 || !processedTxs[0].revertCode.isOK()) {
|
|
1712
|
+
throw new Error('Public execution has failed');
|
|
1713
|
+
}
|
|
1714
|
+
|
|
1715
|
+
const returnValues = results[3][0].values;
|
|
1716
|
+
let returnValuesHash;
|
|
1717
|
+
|
|
1718
|
+
if (returnValues !== undefined) {
|
|
1719
|
+
// This is a bit of a hack to not deal with returning a slice in nr which is what normally happens.
|
|
1720
|
+
// Investigate whether it is faster to do this or return from the oracle directly.
|
|
1721
|
+
returnValuesHash = await computeVarArgsHash(returnValues);
|
|
1722
|
+
this.storeInExecutionCache(returnValues, returnValuesHash);
|
|
1723
|
+
}
|
|
1724
|
+
|
|
1725
|
+
const fork = this.baseFork;
|
|
1726
|
+
|
|
1727
|
+
const txEffect = TxEffect.empty();
|
|
1728
|
+
|
|
1729
|
+
txEffect.noteHashes = processedTxs[0]!.txEffect.noteHashes;
|
|
1730
|
+
txEffect.nullifiers = processedTxs[0]!.txEffect.nullifiers;
|
|
1731
|
+
txEffect.privateLogs = taggedPrivateLogs;
|
|
1732
|
+
txEffect.publicLogs = processedTxs[0]!.txEffect.publicLogs;
|
|
1733
|
+
txEffect.publicDataWrites = processedTxs[0]!.txEffect.publicDataWrites;
|
|
1734
|
+
|
|
1735
|
+
txEffect.txHash = new TxHash(new Fr(this.blockNumber));
|
|
1736
|
+
|
|
1737
|
+
const body = new Body([txEffect]);
|
|
1738
|
+
|
|
1739
|
+
const l2Block = new L2Block(
|
|
1740
|
+
makeAppendOnlyTreeSnapshot(this.blockNumber + 1),
|
|
1741
|
+
makeHeader(0, this.blockNumber, this.blockNumber),
|
|
1742
|
+
body,
|
|
1743
|
+
);
|
|
1744
|
+
|
|
1745
|
+
const l1ToL2Messages = Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(0).map(Fr.zero);
|
|
1746
|
+
await fork.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l1ToL2Messages);
|
|
1747
|
+
|
|
1748
|
+
const stateReference = await fork.getStateReference();
|
|
1749
|
+
const archiveInfo = await fork.getTreeInfo(MerkleTreeId.ARCHIVE);
|
|
1750
|
+
|
|
1751
|
+
const header = new BlockHeader(
|
|
1752
|
+
new AppendOnlyTreeSnapshot(new Fr(archiveInfo.root), Number(archiveInfo.size)),
|
|
1753
|
+
makeContentCommitment(),
|
|
1754
|
+
stateReference,
|
|
1755
|
+
globals,
|
|
1756
|
+
Fr.ZERO,
|
|
1757
|
+
Fr.ZERO,
|
|
1758
|
+
);
|
|
1759
|
+
|
|
1760
|
+
header.globalVariables.blockNumber = new Fr(this.blockNumber);
|
|
1761
|
+
|
|
1762
|
+
l2Block.header = header;
|
|
1763
|
+
|
|
1764
|
+
await fork.updateArchive(l2Block.header);
|
|
1765
|
+
|
|
1766
|
+
await this.stateMachine.handleL2Block(l2Block);
|
|
1767
|
+
|
|
1768
|
+
const txRequestHash = this.getTxRequestHash();
|
|
1769
|
+
|
|
1770
|
+
this.setBlockNumber(this.blockNumber + 1);
|
|
1771
|
+
|
|
1772
|
+
return {
|
|
1773
|
+
returnsHash: returnValuesHash ?? Fr.ZERO,
|
|
1774
|
+
txHash: txRequestHash,
|
|
1775
|
+
};
|
|
1776
|
+
}
|
|
1623
1777
|
}
|
|
@@ -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),
|
|
@@ -11,7 +11,7 @@ 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 { PublicLogWithTxData } from '@aztec/stdlib/logs';
|
|
15
15
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
16
16
|
|
|
17
17
|
import { TXE } from '../oracle/txe_oracle.js';
|
|
@@ -689,14 +689,14 @@ export class TXEService {
|
|
|
689
689
|
return toForeignCallResult(secret.toFields().map(toSingle));
|
|
690
690
|
}
|
|
691
691
|
|
|
692
|
-
async
|
|
692
|
+
async fetchTaggedLogs(pendingTaggedLogArrayBaseSlot: ForeignCallSingle) {
|
|
693
693
|
if (!this.oraclesEnabled) {
|
|
694
694
|
throw new Error(
|
|
695
695
|
'Oracle access from the root of a TXe test are not enabled. Please use env._ to interact with the oracles.',
|
|
696
696
|
);
|
|
697
697
|
}
|
|
698
698
|
|
|
699
|
-
await this.typedOracle.
|
|
699
|
+
await this.typedOracle.fetchTaggedLogs(fromSingle(pendingTaggedLogArrayBaseSlot));
|
|
700
700
|
return toForeignCallResult([]);
|
|
701
701
|
}
|
|
702
702
|
|
|
@@ -731,18 +731,23 @@ export class TXEService {
|
|
|
731
731
|
return toForeignCallResult([toSingle(Fr.ONE)]);
|
|
732
732
|
}
|
|
733
733
|
|
|
734
|
-
async
|
|
734
|
+
async getPublicLogByTag(tag: ForeignCallSingle, contractAddress: ForeignCallSingle) {
|
|
735
735
|
if (!this.oraclesEnabled) {
|
|
736
736
|
throw new Error(
|
|
737
737
|
'Oracle access from the root of a TXe test are not enabled. Please use env._ to interact with the oracles.',
|
|
738
738
|
);
|
|
739
739
|
}
|
|
740
740
|
|
|
741
|
-
// TODO(AD): this was warning that
|
|
742
|
-
const log = await Promise.resolve(
|
|
741
|
+
// TODO(AD): this was warning that getPublicLogByTag did not return a promise.
|
|
742
|
+
const log = await Promise.resolve(
|
|
743
|
+
this.typedOracle.getPublicLogByTag(fromSingle(tag), AztecAddress.fromField(fromSingle(contractAddress))),
|
|
744
|
+
);
|
|
743
745
|
|
|
744
746
|
if (log == null) {
|
|
745
|
-
return toForeignCallResult([
|
|
747
|
+
return toForeignCallResult([
|
|
748
|
+
toSingle(Fr.ZERO),
|
|
749
|
+
...PublicLogWithTxData.noirSerializationOfEmpty().map(toSingleOrArray),
|
|
750
|
+
]);
|
|
746
751
|
} else {
|
|
747
752
|
return toForeignCallResult([toSingle(Fr.ONE), ...log.toNoirSerialization().map(toSingleOrArray)]);
|
|
748
753
|
}
|
|
@@ -1222,4 +1227,21 @@ export class TXEService {
|
|
|
1222
1227
|
|
|
1223
1228
|
return toForeignCallResult([toSingle(result)]);
|
|
1224
1229
|
}
|
|
1230
|
+
|
|
1231
|
+
async publicCallNewFlow(
|
|
1232
|
+
from: ForeignCallSingle,
|
|
1233
|
+
address: ForeignCallSingle,
|
|
1234
|
+
_length: ForeignCallSingle,
|
|
1235
|
+
calldata: ForeignCallArray,
|
|
1236
|
+
isStaticCall: ForeignCallSingle,
|
|
1237
|
+
) {
|
|
1238
|
+
const result = await (this.typedOracle as TXE).publicCallNewFlow(
|
|
1239
|
+
addressFromSingle(from),
|
|
1240
|
+
addressFromSingle(address),
|
|
1241
|
+
fromArray(calldata),
|
|
1242
|
+
fromSingle(isStaticCall).toBool(),
|
|
1243
|
+
);
|
|
1244
|
+
|
|
1245
|
+
return toForeignCallResult([toArray([result.returnsHash, result.txHash])]);
|
|
1246
|
+
}
|
|
1225
1247
|
}
|