@aztec/txe 0.82.0 → 0.82.1

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/bin/index.js CHANGED
@@ -18,7 +18,7 @@ import { createTXERpcServer } from '../index.js';
18
18
  logger.info(`Setting up TXE...`);
19
19
  const txeServer = createTXERpcServer(logger);
20
20
  const { port } = await startHttpRpcServer(txeServer, {
21
- host: '0.0.0.0',
21
+ host: '127.0.0.1',
22
22
  port: TXE_PORT,
23
23
  timeoutMs: 1e3 * 60 * 5
24
24
  });
@@ -96,8 +96,8 @@ export declare class TXE implements TypedOracle {
96
96
  setIsStaticCall(isStatic: boolean): void;
97
97
  getIsStaticCall(): boolean;
98
98
  getRandomField(): Fr;
99
- storeInExecutionCache(values: Fr[]): Promise<Fr>;
100
- loadFromExecutionCache(returnsHash: Fr): Promise<Fr[]>;
99
+ storeInExecutionCache(values: Fr[], hash: Fr): void;
100
+ loadFromExecutionCache(hash: Fr): Promise<Fr[]>;
101
101
  getKeyValidationRequest(pkMHash: Fr): Promise<KeyValidationRequest>;
102
102
  getContractInstance(address: AztecAddress): Promise<ContractInstance>;
103
103
  getMembershipWitness(blockNumber: number, treeId: MerkleTreeId, leafValue: Fr): Promise<Fr[] | undefined>;
@@ -126,8 +126,8 @@ export declare class TXE implements TypedOracle {
126
126
  getInitialWitness(abi: FunctionAbi, argsHash: Fr, sideEffectCounter: number, isStaticCall: boolean): Promise<Map<number, string>>;
127
127
  getDebugFunctionName(address: AztecAddress, selector: FunctionSelector): Promise<string | undefined>;
128
128
  private executePublicFunction;
129
- enqueuePublicFunctionCall(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, argsHash: Fr, _sideEffectCounter: number, isStaticCall: boolean, isTeardown?: boolean): Promise<Fr>;
130
- setPublicTeardownFunctionCall(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, argsHash: Fr, sideEffectCounter: number, isStaticCall: boolean): Promise<Fr>;
129
+ notifyEnqueuedPublicFunctionCall(targetContractAddress: AztecAddress, calldataHash: Fr, _sideEffectCounter: number, isStaticCall: boolean, isTeardown?: boolean): Promise<void>;
130
+ notifySetPublicTeardownFunctionCall(targetContractAddress: AztecAddress, calldataHash: Fr, sideEffectCounter: number, isStaticCall: boolean): Promise<void>;
131
131
  notifySetMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter: number): Promise<void>;
132
132
  debugLog(message: string, fields: Fr[]): void;
133
133
  incrementAppTaggingSecretIndexAsSender(sender: AztecAddress, recipient: AztecAddress): Promise<void>;
@@ -135,7 +135,7 @@ export declare class TXE implements TypedOracle {
135
135
  syncNotes(): Promise<void>;
136
136
  deliverNote(contractAddress: AztecAddress, storageSlot: Fr, nonce: Fr, content: Fr[], noteHash: Fr, nullifier: Fr, txHash: Fr, recipient: AztecAddress): Promise<void>;
137
137
  getLogByTag(tag: Fr): Promise<LogWithTxData | null>;
138
- avmOpcodeCall(targetContractAddress: AztecAddress, args: Fr[], isStaticCall: boolean): Promise<PublicTxResult>;
138
+ avmOpcodeCall(targetContractAddress: AztecAddress, calldata: Fr[], isStaticCall: boolean): Promise<PublicTxResult>;
139
139
  avmOpcodeSuccessCopy(): boolean;
140
140
  avmOpcodeReturndataSize(): number;
141
141
  avmOpcodeReturndataCopy(rdOffset: number, copySize: number): Fr[];
@@ -1 +1 @@
1
- {"version":3,"file":"txe_oracle.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_oracle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"txe_oracle.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_oracle.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
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, PUBLIC_DISPATCH_SELECTOR } from '@aztec/constants';
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';
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';
@@ -17,11 +17,11 @@ import { AztecAddress } from '@aztec/stdlib/aztec-address';
17
17
  import { SimulationError } from '@aztec/stdlib/errors';
18
18
  import { Gas, GasFees } from '@aztec/stdlib/gas';
19
19
  import { computeNoteHashNonce, computePublicDataTreeLeafSlot, computeUniqueNoteHash, siloNoteHash, siloNullifier } from '@aztec/stdlib/hash';
20
- import { PrivateContextInputs } from '@aztec/stdlib/kernel';
20
+ import { PrivateContextInputs, PublicCallRequest } from '@aztec/stdlib/kernel';
21
21
  import { deriveKeys } from '@aztec/stdlib/keys';
22
22
  import { makeAppendOnlyTreeSnapshot, makeContentCommitment, makeGlobalVariables, makeHeader } from '@aztec/stdlib/testing';
23
23
  import { AppendOnlyTreeSnapshot, MerkleTreeId, NullifierMembershipWitness, PublicDataTreeLeaf, PublicDataWitness } from '@aztec/stdlib/trees';
24
- import { BlockHeader, CallContext, GlobalVariables, PublicExecutionRequest, TxEffect, TxHash } from '@aztec/stdlib/tx';
24
+ import { BlockHeader, CallContext, GlobalVariables, PublicCallRequestWithCalldata, TxEffect, TxHash } from '@aztec/stdlib/tx';
25
25
  import { ForkCheckpoint, NativeWorldStateService } from '@aztec/world-state/native';
26
26
  import { TXENode } from '../node/txe_node.js';
27
27
  import { TXEAccountDataProvider } from '../util/txe_account_data_provider.js';
@@ -261,11 +261,15 @@ export class TXE {
261
261
  getRandomField() {
262
262
  return Fr.random();
263
263
  }
264
- storeInExecutionCache(values) {
265
- return this.executionCache.store(values);
264
+ storeInExecutionCache(values, hash) {
265
+ return this.executionCache.store(values, hash);
266
266
  }
267
- loadFromExecutionCache(returnsHash) {
268
- return Promise.resolve(this.executionCache.getPreimage(returnsHash));
267
+ loadFromExecutionCache(hash) {
268
+ const preimage = this.executionCache.getPreimage(hash);
269
+ if (!preimage) {
270
+ throw new Error(`Preimage for hash ${hash.toString()} not found in cache`);
271
+ }
272
+ return Promise.resolve(preimage);
269
273
  }
270
274
  getKeyValidationRequest(pkMHash) {
271
275
  return this.keyStore.getKeyValidationRequest(pkMHash, this.contractAddress);
@@ -547,6 +551,9 @@ export class TXE {
547
551
  this.setContractAddress(targetContractAddress);
548
552
  this.setFunctionSelector(functionSelector);
549
553
  const artifact = await this.contractDataProvider.getFunctionArtifact(targetContractAddress, functionSelector);
554
+ if (!artifact) {
555
+ throw new Error(`Artifact not found when calling private function. Contract address: ${targetContractAddress}.`);
556
+ }
550
557
  const initialWitness = await this.getInitialWitness(artifact, argsHash, sideEffectCounter, isStaticCall);
551
558
  const acvmCallback = new Oracle(this);
552
559
  const timer = new Timer();
@@ -587,7 +594,7 @@ export class TXE {
587
594
  async getInitialWitness(abi, argsHash, sideEffectCounter, isStaticCall) {
588
595
  const argumentsSize = countArgumentsSize(abi);
589
596
  const args = this.executionCache.getPreimage(argsHash);
590
- if (args.length !== argumentsSize) {
597
+ if (args?.length !== argumentsSize) {
591
598
  throw new Error('Invalid arguments size');
592
599
  }
593
600
  const privateContextInputs = await this.getPrivateContextInputs(this.blockNumber - 1, sideEffectCounter, isStaticCall);
@@ -602,26 +609,11 @@ export class TXE {
602
609
  return toACVMWitness(0, fields);
603
610
  }
604
611
  async getDebugFunctionName(address, selector) {
605
- const instance = await this.contractDataProvider.getContractInstance(address);
606
- if (!instance) {
607
- return undefined;
608
- }
609
- const artifact = await this.contractDataProvider.getContractArtifact(instance.currentContractClassId);
610
- if (!artifact) {
611
- return undefined;
612
- }
613
- const functionSelectorsAndNames = await Promise.all(artifact.functions.map(async (f)=>({
614
- name: f.name,
615
- selector: await FunctionSelector.fromNameAndParameters(f.name, f.parameters)
616
- })));
617
- const functionSelectorAndName = functionSelectorsAndNames.find((f)=>f.selector.equals(selector));
618
- if (!functionSelectorAndName) {
619
- return undefined;
620
- }
621
- return `${artifact.name}:${functionSelectorAndName.name}`;
612
+ return await this.contractDataProvider.getDebugFunctionName(address, selector);
622
613
  }
623
- async executePublicFunction(args, callContext, isTeardown = false) {
624
- const executionRequest = new PublicExecutionRequest(callContext, args);
614
+ async executePublicFunction(calldata, msgSender, contractAddress, isStaticCall, isTeardown = false) {
615
+ const callRequest = await PublicCallRequest.fromCalldata(msgSender, contractAddress, isStaticCall, calldata);
616
+ const executionRequest = new PublicCallRequestWithCalldata(callRequest, calldata);
625
617
  const db = this.baseFork;
626
618
  const globalVariables = GlobalVariables.empty();
627
619
  globalVariables.chainId = new Fr(await this.node.getChainId());
@@ -641,7 +633,7 @@ export class TXE {
641
633
  // When setting up a teardown call, we tell it that
642
634
  // private execution used Gas(1, 1) so it can compute a tx fee.
643
635
  const gasUsedByPrivate = isTeardown ? new Gas(1, 1) : Gas.empty();
644
- const tx = await createTxForPublicCalls(firstNullifier, /*setupExecutionRequests=*/ [], /*appExecutionRequests=*/ isTeardown ? [] : [
636
+ const tx = createTxForPublicCalls(firstNullifier, /*setupExecutionRequests=*/ [], /*appExecutionRequests=*/ isTeardown ? [] : [
645
637
  executionRequest
646
638
  ], /*teardownExecutionRequests=*/ isTeardown ? executionRequest : undefined, /*feePayer=*/ AztecAddress.zero(), gasUsedByPrivate);
647
639
  result = await simulator.simulate(tx);
@@ -661,21 +653,20 @@ export class TXE {
661
653
  this.addPublicLogs(result.avmProvingRequest.inputs.publicInputs.accumulatedData.publicLogs.filter((log)=>!log.contractAddress.equals(AztecAddress.ZERO)));
662
654
  return Promise.resolve(result);
663
655
  }
664
- async enqueuePublicFunctionCall(targetContractAddress, functionSelector, argsHash, _sideEffectCounter, isStaticCall, isTeardown = false) {
656
+ async notifyEnqueuedPublicFunctionCall(targetContractAddress, calldataHash, _sideEffectCounter, isStaticCall, isTeardown = false) {
665
657
  // Store and modify env
666
658
  const currentContractAddress = this.contractAddress;
667
659
  const currentMessageSender = this.msgSender;
668
660
  const currentFunctionSelector = FunctionSelector.fromField(this.functionSelector.toField());
661
+ const calldata = this.executionCache.getPreimage(calldataHash);
662
+ if (!calldata) {
663
+ throw new Error('Calldata for enqueued call not found in cache');
664
+ }
665
+ const functionSelector = FunctionSelector.fromField(calldata[0]);
669
666
  this.setMsgSender(this.contractAddress);
670
667
  this.setContractAddress(targetContractAddress);
671
668
  this.setFunctionSelector(functionSelector);
672
- const callContext = new CallContext(/* msgSender */ currentContractAddress, targetContractAddress, FunctionSelector.fromField(new Fr(PUBLIC_DISPATCH_SELECTOR)), isStaticCall);
673
- const args = [
674
- this.functionSelector.toField(),
675
- ...this.executionCache.getPreimage(argsHash)
676
- ];
677
- const newArgsHash = await this.executionCache.store(args);
678
- const executionResult = await this.executePublicFunction(args, callContext, isTeardown);
669
+ const executionResult = await this.executePublicFunction(calldata, /* msgSender */ currentContractAddress, targetContractAddress, isStaticCall, isTeardown);
679
670
  // Poor man's revert handling
680
671
  if (!executionResult.revertCode.isOK()) {
681
672
  if (executionResult.revertReason && executionResult.revertReason instanceof SimulationError) {
@@ -695,12 +686,11 @@ export class TXE {
695
686
  this.setContractAddress(currentContractAddress);
696
687
  this.setMsgSender(currentMessageSender);
697
688
  this.setFunctionSelector(currentFunctionSelector);
698
- return newArgsHash;
699
689
  }
700
- async setPublicTeardownFunctionCall(targetContractAddress, functionSelector, argsHash, sideEffectCounter, isStaticCall) {
690
+ async notifySetPublicTeardownFunctionCall(targetContractAddress, calldataHash, sideEffectCounter, isStaticCall) {
701
691
  // Definitely not right, in that the teardown should always be last.
702
692
  // But useful for executing flows.
703
- return await this.enqueuePublicFunctionCall(targetContractAddress, functionSelector, argsHash, sideEffectCounter, isStaticCall, /*isTeardown=*/ true);
693
+ await this.notifyEnqueuedPublicFunctionCall(targetContractAddress, calldataHash, sideEffectCounter, isStaticCall, /*isTeardown=*/ true);
704
694
  }
705
695
  async notifySetMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter) {
706
696
  await this.noteCache.setMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter);
@@ -731,14 +721,13 @@ export class TXE {
731
721
  return await this.pxeOracleInterface.getLogByTag(tag);
732
722
  }
733
723
  // AVM oracles
734
- async avmOpcodeCall(targetContractAddress, args, isStaticCall) {
724
+ async avmOpcodeCall(targetContractAddress, calldata, isStaticCall) {
735
725
  // Store and modify env
736
726
  const currentContractAddress = this.contractAddress;
737
727
  const currentMessageSender = this.msgSender;
738
728
  this.setMsgSender(this.contractAddress);
739
729
  this.setContractAddress(targetContractAddress);
740
- const callContext = new CallContext(/* msgSender */ currentContractAddress, targetContractAddress, FunctionSelector.fromField(new Fr(PUBLIC_DISPATCH_SELECTOR)), isStaticCall);
741
- const executionResult = await this.executePublicFunction(args, callContext);
730
+ const executionResult = await this.executePublicFunction(calldata, /* msgSender */ currentContractAddress, targetContractAddress, isStaticCall);
742
731
  // Save return/revert data for later.
743
732
  this.nestedCallReturndata = executionResult.processedPhases[0].returnValues[0].values;
744
733
  this.nestedCallSuccess = executionResult.revertCode.isOK();
@@ -54,9 +54,9 @@ export declare class TXEService {
54
54
  getBlockNumber(): Promise<{
55
55
  values: (string | ForeignCallArray)[];
56
56
  }>;
57
- storeInExecutionCache(_length: ForeignCallSingle, values: ForeignCallArray): Promise<{
57
+ storeInExecutionCache(_length: ForeignCallSingle, values: ForeignCallArray, hash: ForeignCallSingle): {
58
58
  values: (string | ForeignCallArray)[];
59
- }>;
59
+ };
60
60
  loadFromExecutionCache(hash: ForeignCallSingle): Promise<{
61
61
  values: (string | ForeignCallArray)[];
62
62
  }>;
@@ -105,13 +105,15 @@ export declare class TXEService {
105
105
  getAuthWitness(messageHash: ForeignCallSingle): Promise<{
106
106
  values: (string | ForeignCallArray)[];
107
107
  }>;
108
- enqueuePublicFunctionCall(targetContractAddress: ForeignCallSingle, functionSelector: ForeignCallSingle, argsHash: ForeignCallSingle, sideEffectCounter: ForeignCallSingle, isStaticCall: ForeignCallSingle): Promise<{
108
+ notifyEnqueuedPublicFunctionCall(targetContractAddress: ForeignCallSingle, calldataHash: ForeignCallSingle, sideEffectCounter: ForeignCallSingle, isStaticCall: ForeignCallSingle): Promise<{
109
109
  values: (string | ForeignCallArray)[];
110
110
  }>;
111
- setPublicTeardownFunctionCall(targetContractAddress: ForeignCallSingle, functionSelector: ForeignCallSingle, argsHash: ForeignCallSingle, sideEffectCounter: ForeignCallSingle, isStaticCall: ForeignCallSingle): Promise<{
111
+ notifySetPublicTeardownFunctionCall(targetContractAddress: ForeignCallSingle, calldataHash: ForeignCallSingle, sideEffectCounter: ForeignCallSingle, isStaticCall: ForeignCallSingle): Promise<{
112
112
  values: (string | ForeignCallArray)[];
113
113
  }>;
114
- notifySetMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter: ForeignCallSingle): void;
114
+ notifySetMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter: ForeignCallSingle): {
115
+ values: (string | ForeignCallArray)[];
116
+ };
115
117
  getChainId(): Promise<{
116
118
  values: (string | ForeignCallArray)[];
117
119
  }>;
@@ -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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"}
@@ -172,11 +172,9 @@ export class TXEService {
172
172
  ]);
173
173
  }
174
174
  // Since the argument is a slice, noir automatically adds a length field to oracle call.
175
- async storeInExecutionCache(_length, values) {
176
- const returnsHash = await this.typedOracle.storeInExecutionCache(fromArray(values));
177
- return toForeignCallResult([
178
- toSingle(returnsHash)
179
- ]);
175
+ storeInExecutionCache(_length, values, hash) {
176
+ this.typedOracle.storeInExecutionCache(fromArray(values), fromSingle(hash));
177
+ return toForeignCallResult([]);
180
178
  }
181
179
  async loadFromExecutionCache(hash) {
182
180
  const returns = await this.typedOracle.loadFromExecutionCache(fromSingle(hash));
@@ -315,20 +313,17 @@ export class TXEService {
315
313
  toArray(authWitness)
316
314
  ]);
317
315
  }
318
- async enqueuePublicFunctionCall(targetContractAddress, functionSelector, argsHash, sideEffectCounter, isStaticCall) {
319
- const newArgsHash = await this.typedOracle.enqueuePublicFunctionCall(addressFromSingle(targetContractAddress), FunctionSelector.fromField(fromSingle(functionSelector)), fromSingle(argsHash), fromSingle(sideEffectCounter).toNumber(), fromSingle(isStaticCall).toBool());
320
- return toForeignCallResult([
321
- toSingle(newArgsHash)
322
- ]);
316
+ async notifyEnqueuedPublicFunctionCall(targetContractAddress, calldataHash, sideEffectCounter, isStaticCall) {
317
+ await this.typedOracle.notifyEnqueuedPublicFunctionCall(addressFromSingle(targetContractAddress), fromSingle(calldataHash), fromSingle(sideEffectCounter).toNumber(), fromSingle(isStaticCall).toBool());
318
+ return toForeignCallResult([]);
323
319
  }
324
- async setPublicTeardownFunctionCall(targetContractAddress, functionSelector, argsHash, sideEffectCounter, isStaticCall) {
325
- const newArgsHash = await this.typedOracle.setPublicTeardownFunctionCall(addressFromSingle(targetContractAddress), FunctionSelector.fromField(fromSingle(functionSelector)), fromSingle(argsHash), fromSingle(sideEffectCounter).toNumber(), fromSingle(isStaticCall).toBool());
326
- return toForeignCallResult([
327
- toSingle(newArgsHash)
328
- ]);
320
+ async notifySetPublicTeardownFunctionCall(targetContractAddress, calldataHash, sideEffectCounter, isStaticCall) {
321
+ await this.typedOracle.notifySetPublicTeardownFunctionCall(addressFromSingle(targetContractAddress), fromSingle(calldataHash), fromSingle(sideEffectCounter).toNumber(), fromSingle(isStaticCall).toBool());
322
+ return toForeignCallResult([]);
329
323
  }
330
324
  notifySetMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter) {
331
325
  this.typedOracle.notifySetMinRevertibleSideEffectCounter(fromSingle(minRevertibleSideEffectCounter).toNumber());
326
+ return toForeignCallResult([]);
332
327
  }
333
328
  async getChainId() {
334
329
  return toForeignCallResult([
@@ -70,7 +70,7 @@ export declare const ForeignCallArgsSchema: z.ZodArray<z.ZodUnion<[z.ZodString,
70
70
  masterIncomingViewingPublicKey: string;
71
71
  masterOutgoingViewingPublicKey: string;
72
72
  masterTaggingPublicKey: string;
73
- }>, import("@aztec/aztec.js").PublicKeys, {
73
+ }>, import("@aztec/stdlib/keys").PublicKeys, {
74
74
  masterNullifierPublicKey: string;
75
75
  masterIncomingViewingPublicKey: string;
76
76
  masterOutgoingViewingPublicKey: string;
@@ -83,7 +83,7 @@ export declare const ForeignCallArgsSchema: z.ZodArray<z.ZodUnion<[z.ZodString,
83
83
  currentContractClassId: Fr;
84
84
  originalContractClassId: Fr;
85
85
  initializationHash: Fr;
86
- publicKeys: import("@aztec/aztec.js").PublicKeys;
86
+ publicKeys: import("@aztec/stdlib/keys").PublicKeys;
87
87
  }, {
88
88
  version: 1;
89
89
  publicKeys: {
@@ -12,7 +12,7 @@ export declare class TXEPublicContractDataSource implements ContractDataSource {
12
12
  getContract(address: AztecAddress): Promise<ContractInstanceWithAddress | undefined>;
13
13
  getContractClassIds(): Promise<Fr[]>;
14
14
  getContractArtifact(address: AztecAddress): Promise<ContractArtifact | undefined>;
15
- getContractFunctionName(address: AztecAddress, selector: FunctionSelector): Promise<string | undefined>;
15
+ getDebugFunctionName(address: AztecAddress, selector: FunctionSelector): Promise<string | undefined>;
16
16
  registerContractFunctionSignatures(_address: AztecAddress, _signatures: []): Promise<void>;
17
17
  }
18
18
  //# sourceMappingURL=txe_public_contract_data_source.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"txe_public_contract_data_source.d.ts","sourceRoot":"","sources":["../../src/util/txe_public_contract_data_source.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAE9C,OAAO,EAAE,KAAK,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,2BAA2B,EAGjC,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAEnD,qBAAa,2BAA4B,YAAW,kBAAkB;IACxD,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,GAAG;IAElC,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAI3B,gBAAgB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IA0BlE,qBAAqB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAKtD,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC;IAK1F,mBAAmB,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;IAI9B,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAKjF,uBAAuB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAgB7G,kCAAkC,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAG3F"}
1
+ {"version":3,"file":"txe_public_contract_data_source.d.ts","sourceRoot":"","sources":["../../src/util/txe_public_contract_data_source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,KAAK,gBAAgB,EAAE,gBAAgB,EAAgB,MAAM,mBAAmB,CAAC;AAC1F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,2BAA2B,EAIjC,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAEnD,qBAAa,2BAA4B,YAAW,kBAAkB;IACxD,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,GAAG;IAElC,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAI3B,gBAAgB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IA4BlE,qBAAqB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC;IAKtD,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC;IAK1F,mBAAmB,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;IAI9B,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAKjF,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI1G,kCAAkC,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAG3F"}
@@ -1,8 +1,5 @@
1
- import { PUBLIC_DISPATCH_SELECTOR } from '@aztec/constants';
2
- import { Fr } from '@aztec/foundation/fields';
3
- import { PrivateFunctionsTree } from '@aztec/pxe/server';
4
- import { FunctionSelector } from '@aztec/stdlib/abi';
5
- import { computePublicBytecodeCommitment } from '@aztec/stdlib/contract';
1
+ import { FunctionType } from '@aztec/stdlib/abi';
2
+ import { computePrivateFunctionsRoot, computePublicBytecodeCommitment, getContractClassPrivateFunctionFromArtifact } from '@aztec/stdlib/contract';
6
3
  export class TXEPublicContractDataSource {
7
4
  txeOracle;
8
5
  constructor(txeOracle){
@@ -13,22 +10,20 @@ export class TXEPublicContractDataSource {
13
10
  }
14
11
  async getContractClass(id) {
15
12
  const contractClass = await this.txeOracle.getContractDataProvider().getContractClass(id);
13
+ if (!contractClass) {
14
+ return;
15
+ }
16
16
  const artifact = await this.txeOracle.getContractDataProvider().getContractArtifact(id);
17
- const tree = await PrivateFunctionsTree.create(artifact);
18
- const privateFunctionsRoot = await tree.getFunctionTreeRoot();
19
- const publicFunctions = [];
20
- if (contractClass.packedBytecode.length > 0) {
21
- publicFunctions.push({
22
- selector: FunctionSelector.fromField(new Fr(PUBLIC_DISPATCH_SELECTOR)),
23
- bytecode: contractClass.packedBytecode
24
- });
17
+ if (!artifact) {
18
+ return;
25
19
  }
20
+ const privateFunctions = await Promise.all(artifact.functions.filter((fn)=>fn.functionType === FunctionType.PRIVATE).map((fn)=>getContractClassPrivateFunctionFromArtifact(fn)));
21
+ const privateFunctionsRoot = await computePrivateFunctionsRoot(privateFunctions);
26
22
  return {
27
23
  id,
28
24
  artifactHash: contractClass.artifactHash,
29
25
  packedBytecode: contractClass.packedBytecode,
30
- publicFunctions: publicFunctions,
31
- privateFunctionsRoot: new Fr(privateFunctionsRoot.root),
26
+ privateFunctionsRoot,
32
27
  version: contractClass.version,
33
28
  privateFunctions: [],
34
29
  unconstrainedFunctions: []
@@ -36,11 +31,11 @@ export class TXEPublicContractDataSource {
36
31
  }
37
32
  async getBytecodeCommitment(id) {
38
33
  const contractClass = await this.txeOracle.getContractDataProvider().getContractClass(id);
39
- return computePublicBytecodeCommitment(contractClass.packedBytecode);
34
+ return contractClass && computePublicBytecodeCommitment(contractClass.packedBytecode);
40
35
  }
41
36
  async getContract(address) {
42
37
  const instance = await this.txeOracle.getContractDataProvider().getContractInstance(address);
43
- return {
38
+ return instance && {
44
39
  ...instance,
45
40
  address
46
41
  };
@@ -50,22 +45,10 @@ export class TXEPublicContractDataSource {
50
45
  }
51
46
  async getContractArtifact(address) {
52
47
  const instance = await this.txeOracle.getContractDataProvider().getContractInstance(address);
53
- return this.txeOracle.getContractDataProvider().getContractArtifact(instance.currentContractClassId);
48
+ return instance && this.txeOracle.getContractDataProvider().getContractArtifact(instance.currentContractClassId);
54
49
  }
55
- async getContractFunctionName(address, selector) {
56
- const artifact = await this.getContractArtifact(address);
57
- if (!artifact) {
58
- return undefined;
59
- }
60
- const functionSelectorsAndNames = await Promise.all(artifact.functions.map(async (f)=>({
61
- name: f.name,
62
- selector: await FunctionSelector.fromNameAndParameters({
63
- name: f.name,
64
- parameters: f.parameters
65
- })
66
- })));
67
- const func = functionSelectorsAndNames.find((f)=>f.selector.equals(selector));
68
- return Promise.resolve(func?.name);
50
+ async getDebugFunctionName(address, selector) {
51
+ return await this.txeOracle.getContractDataProvider().getDebugFunctionName(address, selector);
69
52
  }
70
53
  registerContractFunctionSignatures(_address, _signatures) {
71
54
  return Promise.resolve();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/txe",
3
- "version": "0.82.0",
3
+ "version": "0.82.1",
4
4
  "type": "module",
5
5
  "exports": "./dest/index.js",
6
6
  "bin": "./dest/bin/index.js",
@@ -59,17 +59,17 @@
59
59
  ]
60
60
  },
61
61
  "dependencies": {
62
- "@aztec/accounts": "0.82.0",
63
- "@aztec/aztec.js": "0.82.0",
64
- "@aztec/constants": "0.82.0",
65
- "@aztec/foundation": "0.82.0",
66
- "@aztec/key-store": "0.82.0",
67
- "@aztec/kv-store": "0.82.0",
68
- "@aztec/protocol-contracts": "0.82.0",
69
- "@aztec/pxe": "0.82.0",
70
- "@aztec/simulator": "0.82.0",
71
- "@aztec/stdlib": "0.82.0",
72
- "@aztec/world-state": "0.82.0",
62
+ "@aztec/accounts": "0.82.1",
63
+ "@aztec/aztec.js": "0.82.1",
64
+ "@aztec/constants": "0.82.1",
65
+ "@aztec/foundation": "0.82.1",
66
+ "@aztec/key-store": "0.82.1",
67
+ "@aztec/kv-store": "0.82.1",
68
+ "@aztec/protocol-contracts": "0.82.1",
69
+ "@aztec/pxe": "0.82.1",
70
+ "@aztec/simulator": "0.82.1",
71
+ "@aztec/stdlib": "0.82.1",
72
+ "@aztec/world-state": "0.82.1",
73
73
  "zod": "^3.23.8"
74
74
  },
75
75
  "devDependencies": {
package/src/bin/index.ts CHANGED
@@ -25,7 +25,7 @@ async function main() {
25
25
 
26
26
  const txeServer = createTXERpcServer(logger);
27
27
  const { port } = await startHttpRpcServer(txeServer, {
28
- host: '0.0.0.0',
28
+ host: '127.0.0.1',
29
29
  port: TXE_PORT,
30
30
  timeoutMs: 1e3 * 60 * 5,
31
31
  });
@@ -8,7 +8,6 @@ import {
8
8
  NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP,
9
9
  PRIVATE_CONTEXT_INPUTS_LENGTH,
10
10
  type PUBLIC_DATA_TREE_HEIGHT,
11
- PUBLIC_DISPATCH_SELECTOR,
12
11
  } from '@aztec/constants';
13
12
  import { padArrayEnd } from '@aztec/foundation/collection';
14
13
  import { Aes128, Schnorr, poseidon2Hash } from '@aztec/foundation/crypto';
@@ -72,7 +71,7 @@ import {
72
71
  siloNullifier,
73
72
  } from '@aztec/stdlib/hash';
74
73
  import type { MerkleTreeReadOperations, MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
75
- import { type KeyValidationRequest, PrivateContextInputs } from '@aztec/stdlib/kernel';
74
+ import { type KeyValidationRequest, PrivateContextInputs, PublicCallRequest } from '@aztec/stdlib/kernel';
76
75
  import { deriveKeys } from '@aztec/stdlib/keys';
77
76
  import {
78
77
  ContractClassLog,
@@ -98,7 +97,14 @@ import {
98
97
  type PublicDataTreeLeafPreimage,
99
98
  PublicDataWitness,
100
99
  } from '@aztec/stdlib/trees';
101
- import { BlockHeader, CallContext, GlobalVariables, PublicExecutionRequest, TxEffect, TxHash } from '@aztec/stdlib/tx';
100
+ import {
101
+ BlockHeader,
102
+ CallContext,
103
+ GlobalVariables,
104
+ PublicCallRequestWithCalldata,
105
+ TxEffect,
106
+ TxHash,
107
+ } from '@aztec/stdlib/tx';
102
108
  import { ForkCheckpoint, NativeWorldStateService } from '@aztec/world-state/native';
103
109
 
104
110
  import { TXENode } from '../node/txe_node.js';
@@ -404,12 +410,16 @@ export class TXE implements TypedOracle {
404
410
  return Fr.random();
405
411
  }
406
412
 
407
- storeInExecutionCache(values: Fr[]) {
408
- return this.executionCache.store(values);
413
+ storeInExecutionCache(values: Fr[], hash: Fr) {
414
+ return this.executionCache.store(values, hash);
409
415
  }
410
416
 
411
- loadFromExecutionCache(returnsHash: Fr) {
412
- return Promise.resolve(this.executionCache.getPreimage(returnsHash));
417
+ loadFromExecutionCache(hash: Fr) {
418
+ const preimage = this.executionCache.getPreimage(hash);
419
+ if (!preimage) {
420
+ throw new Error(`Preimage for hash ${hash.toString()} not found in cache`);
421
+ }
422
+ return Promise.resolve(preimage);
413
423
  }
414
424
 
415
425
  getKeyValidationRequest(pkMHash: Fr): Promise<KeyValidationRequest> {
@@ -825,6 +835,9 @@ export class TXE implements TypedOracle {
825
835
  this.setFunctionSelector(functionSelector);
826
836
 
827
837
  const artifact = await this.contractDataProvider.getFunctionArtifact(targetContractAddress, functionSelector);
838
+ if (!artifact) {
839
+ throw new Error(`Artifact not found when calling private function. Contract address: ${targetContractAddress}.`);
840
+ }
828
841
 
829
842
  const initialWitness = await this.getInitialWitness(artifact, argsHash, sideEffectCounter, isStaticCall);
830
843
  const acvmCallback = new Oracle(this);
@@ -880,7 +893,7 @@ export class TXE implements TypedOracle {
880
893
 
881
894
  const args = this.executionCache.getPreimage(argsHash);
882
895
 
883
- if (args.length !== argumentsSize) {
896
+ if (args?.length !== argumentsSize) {
884
897
  throw new Error('Invalid arguments size');
885
898
  }
886
899
 
@@ -899,30 +912,18 @@ export class TXE implements TypedOracle {
899
912
  }
900
913
 
901
914
  public async getDebugFunctionName(address: AztecAddress, selector: FunctionSelector): Promise<string | undefined> {
902
- const instance = await this.contractDataProvider.getContractInstance(address);
903
- if (!instance) {
904
- return undefined;
905
- }
906
- const artifact = await this.contractDataProvider.getContractArtifact(instance!.currentContractClassId);
907
- if (!artifact) {
908
- return undefined;
909
- }
910
- const functionSelectorsAndNames = await Promise.all(
911
- artifact.functions.map(async f => ({
912
- name: f.name,
913
- selector: await FunctionSelector.fromNameAndParameters(f.name, f.parameters),
914
- })),
915
- );
916
- const functionSelectorAndName = functionSelectorsAndNames.find(f => f.selector.equals(selector));
917
- if (!functionSelectorAndName) {
918
- return undefined;
919
- }
920
-
921
- return `${artifact.name}:${functionSelectorAndName.name}`;
915
+ return await this.contractDataProvider.getDebugFunctionName(address, selector);
922
916
  }
923
917
 
924
- private async executePublicFunction(args: Fr[], callContext: CallContext, isTeardown: boolean = false) {
925
- const executionRequest = new PublicExecutionRequest(callContext, args);
918
+ private async executePublicFunction(
919
+ calldata: Fr[],
920
+ msgSender: AztecAddress,
921
+ contractAddress: AztecAddress,
922
+ isStaticCall: boolean,
923
+ isTeardown: boolean = false,
924
+ ) {
925
+ const callRequest = await PublicCallRequest.fromCalldata(msgSender, contractAddress, isStaticCall, calldata);
926
+ const executionRequest = new PublicCallRequestWithCalldata(callRequest, calldata);
926
927
 
927
928
  const db = this.baseFork;
928
929
 
@@ -949,7 +950,7 @@ export class TXE implements TypedOracle {
949
950
  // When setting up a teardown call, we tell it that
950
951
  // private execution used Gas(1, 1) so it can compute a tx fee.
951
952
  const gasUsedByPrivate = isTeardown ? new Gas(1, 1) : Gas.empty();
952
- const tx = await createTxForPublicCalls(
953
+ const tx = createTxForPublicCalls(
953
954
  firstNullifier,
954
955
  /*setupExecutionRequests=*/ [],
955
956
  /*appExecutionRequests=*/ isTeardown ? [] : [executionRequest],
@@ -989,34 +990,34 @@ export class TXE implements TypedOracle {
989
990
  return Promise.resolve(result);
990
991
  }
991
992
 
992
- async enqueuePublicFunctionCall(
993
+ async notifyEnqueuedPublicFunctionCall(
993
994
  targetContractAddress: AztecAddress,
994
- functionSelector: FunctionSelector,
995
- argsHash: Fr,
995
+ calldataHash: Fr,
996
996
  _sideEffectCounter: number,
997
997
  isStaticCall: boolean,
998
998
  isTeardown = false,
999
- ): Promise<Fr> {
999
+ ): Promise<void> {
1000
1000
  // Store and modify env
1001
1001
  const currentContractAddress = this.contractAddress;
1002
1002
  const currentMessageSender = this.msgSender;
1003
1003
  const currentFunctionSelector = FunctionSelector.fromField(this.functionSelector.toField());
1004
+ const calldata = this.executionCache.getPreimage(calldataHash);
1005
+ if (!calldata) {
1006
+ throw new Error('Calldata for enqueued call not found in cache');
1007
+ }
1008
+ const functionSelector = FunctionSelector.fromField(calldata[0]);
1004
1009
  this.setMsgSender(this.contractAddress);
1005
1010
  this.setContractAddress(targetContractAddress);
1006
1011
  this.setFunctionSelector(functionSelector);
1007
1012
 
1008
- const callContext = new CallContext(
1013
+ const executionResult = await this.executePublicFunction(
1014
+ calldata,
1009
1015
  /* msgSender */ currentContractAddress,
1010
1016
  targetContractAddress,
1011
- FunctionSelector.fromField(new Fr(PUBLIC_DISPATCH_SELECTOR)),
1012
1017
  isStaticCall,
1018
+ isTeardown,
1013
1019
  );
1014
1020
 
1015
- const args = [this.functionSelector.toField(), ...this.executionCache.getPreimage(argsHash)];
1016
- const newArgsHash = await this.executionCache.store(args);
1017
-
1018
- const executionResult = await this.executePublicFunction(args, callContext, isTeardown);
1019
-
1020
1021
  // Poor man's revert handling
1021
1022
  if (!executionResult.revertCode.isOK()) {
1022
1023
  if (executionResult.revertReason && executionResult.revertReason instanceof SimulationError) {
@@ -1040,23 +1041,19 @@ export class TXE implements TypedOracle {
1040
1041
  this.setContractAddress(currentContractAddress);
1041
1042
  this.setMsgSender(currentMessageSender);
1042
1043
  this.setFunctionSelector(currentFunctionSelector);
1043
-
1044
- return newArgsHash;
1045
1044
  }
1046
1045
 
1047
- async setPublicTeardownFunctionCall(
1046
+ async notifySetPublicTeardownFunctionCall(
1048
1047
  targetContractAddress: AztecAddress,
1049
- functionSelector: FunctionSelector,
1050
- argsHash: Fr,
1048
+ calldataHash: Fr,
1051
1049
  sideEffectCounter: number,
1052
1050
  isStaticCall: boolean,
1053
- ): Promise<Fr> {
1051
+ ): Promise<void> {
1054
1052
  // Definitely not right, in that the teardown should always be last.
1055
1053
  // But useful for executing flows.
1056
- return await this.enqueuePublicFunctionCall(
1054
+ await this.notifyEnqueuedPublicFunctionCall(
1057
1055
  targetContractAddress,
1058
- functionSelector,
1059
- argsHash,
1056
+ calldataHash,
1060
1057
  sideEffectCounter,
1061
1058
  isStaticCall,
1062
1059
  /*isTeardown=*/ true,
@@ -1127,21 +1124,23 @@ export class TXE implements TypedOracle {
1127
1124
 
1128
1125
  // AVM oracles
1129
1126
 
1130
- async avmOpcodeCall(targetContractAddress: AztecAddress, args: Fr[], isStaticCall: boolean): Promise<PublicTxResult> {
1127
+ async avmOpcodeCall(
1128
+ targetContractAddress: AztecAddress,
1129
+ calldata: Fr[],
1130
+ isStaticCall: boolean,
1131
+ ): Promise<PublicTxResult> {
1131
1132
  // Store and modify env
1132
1133
  const currentContractAddress = this.contractAddress;
1133
1134
  const currentMessageSender = this.msgSender;
1134
1135
  this.setMsgSender(this.contractAddress);
1135
1136
  this.setContractAddress(targetContractAddress);
1136
1137
 
1137
- const callContext = new CallContext(
1138
+ const executionResult = await this.executePublicFunction(
1139
+ calldata,
1138
1140
  /* msgSender */ currentContractAddress,
1139
1141
  targetContractAddress,
1140
- FunctionSelector.fromField(new Fr(PUBLIC_DISPATCH_SELECTOR)),
1141
1142
  isStaticCall,
1142
1143
  );
1143
-
1144
- const executionResult = await this.executePublicFunction(args, callContext);
1145
1144
  // Save return/revert data for later.
1146
1145
  this.nestedCallReturndata = executionResult.processedPhases[0]!.returnValues[0].values!;
1147
1146
  this.nestedCallSuccess = executionResult.revertCode.isOK();
@@ -223,9 +223,9 @@ export class TXEService {
223
223
  }
224
224
 
225
225
  // Since the argument is a slice, noir automatically adds a length field to oracle call.
226
- async storeInExecutionCache(_length: ForeignCallSingle, values: ForeignCallArray) {
227
- const returnsHash = await this.typedOracle.storeInExecutionCache(fromArray(values));
228
- return toForeignCallResult([toSingle(returnsHash)]);
226
+ storeInExecutionCache(_length: ForeignCallSingle, values: ForeignCallArray, hash: ForeignCallSingle) {
227
+ this.typedOracle.storeInExecutionCache(fromArray(values), fromSingle(hash));
228
+ return toForeignCallResult([]);
229
229
  }
230
230
 
231
231
  async loadFromExecutionCache(hash: ForeignCallSingle) {
@@ -434,42 +434,39 @@ export class TXEService {
434
434
  return toForeignCallResult([toArray(authWitness)]);
435
435
  }
436
436
 
437
- async enqueuePublicFunctionCall(
437
+ public async notifyEnqueuedPublicFunctionCall(
438
438
  targetContractAddress: ForeignCallSingle,
439
- functionSelector: ForeignCallSingle,
440
- argsHash: ForeignCallSingle,
439
+ calldataHash: ForeignCallSingle,
441
440
  sideEffectCounter: ForeignCallSingle,
442
441
  isStaticCall: ForeignCallSingle,
443
442
  ) {
444
- const newArgsHash = await this.typedOracle.enqueuePublicFunctionCall(
443
+ await this.typedOracle.notifyEnqueuedPublicFunctionCall(
445
444
  addressFromSingle(targetContractAddress),
446
- FunctionSelector.fromField(fromSingle(functionSelector)),
447
- fromSingle(argsHash),
445
+ fromSingle(calldataHash),
448
446
  fromSingle(sideEffectCounter).toNumber(),
449
447
  fromSingle(isStaticCall).toBool(),
450
448
  );
451
- return toForeignCallResult([toSingle(newArgsHash)]);
449
+ return toForeignCallResult([]);
452
450
  }
453
451
 
454
- public async setPublicTeardownFunctionCall(
452
+ public async notifySetPublicTeardownFunctionCall(
455
453
  targetContractAddress: ForeignCallSingle,
456
- functionSelector: ForeignCallSingle,
457
- argsHash: ForeignCallSingle,
454
+ calldataHash: ForeignCallSingle,
458
455
  sideEffectCounter: ForeignCallSingle,
459
456
  isStaticCall: ForeignCallSingle,
460
457
  ) {
461
- const newArgsHash = await this.typedOracle.setPublicTeardownFunctionCall(
458
+ await this.typedOracle.notifySetPublicTeardownFunctionCall(
462
459
  addressFromSingle(targetContractAddress),
463
- FunctionSelector.fromField(fromSingle(functionSelector)),
464
- fromSingle(argsHash),
460
+ fromSingle(calldataHash),
465
461
  fromSingle(sideEffectCounter).toNumber(),
466
462
  fromSingle(isStaticCall).toBool(),
467
463
  );
468
- return toForeignCallResult([toSingle(newArgsHash)]);
464
+ return toForeignCallResult([]);
469
465
  }
470
466
 
471
467
  public notifySetMinRevertibleSideEffectCounter(minRevertibleSideEffectCounter: ForeignCallSingle) {
472
468
  this.typedOracle.notifySetMinRevertibleSideEffectCounter(fromSingle(minRevertibleSideEffectCounter).toNumber());
469
+ return toForeignCallResult([]);
473
470
  }
474
471
 
475
472
  async getChainId() {
@@ -1,14 +1,13 @@
1
- import { PUBLIC_DISPATCH_SELECTOR } from '@aztec/constants';
2
1
  import { Fr } from '@aztec/foundation/fields';
3
- import { PrivateFunctionsTree } from '@aztec/pxe/server';
4
- import { type ContractArtifact, FunctionSelector } from '@aztec/stdlib/abi';
2
+ import { type ContractArtifact, FunctionSelector, FunctionType } from '@aztec/stdlib/abi';
5
3
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
6
4
  import {
7
5
  type ContractClassPublic,
8
6
  type ContractDataSource,
9
7
  type ContractInstanceWithAddress,
10
- type PublicFunction,
8
+ computePrivateFunctionsRoot,
11
9
  computePublicBytecodeCommitment,
10
+ getContractClassPrivateFunctionFromArtifact,
12
11
  } from '@aztec/stdlib/contract';
13
12
 
14
13
  import type { TXE } from '../oracle/txe_oracle.js';
@@ -22,24 +21,26 @@ export class TXEPublicContractDataSource implements ContractDataSource {
22
21
 
23
22
  async getContractClass(id: Fr): Promise<ContractClassPublic | undefined> {
24
23
  const contractClass = await this.txeOracle.getContractDataProvider().getContractClass(id);
24
+ if (!contractClass) {
25
+ return;
26
+ }
25
27
  const artifact = await this.txeOracle.getContractDataProvider().getContractArtifact(id);
26
- const tree = await PrivateFunctionsTree.create(artifact);
27
- const privateFunctionsRoot = await tree.getFunctionTreeRoot();
28
-
29
- const publicFunctions: PublicFunction[] = [];
30
- if (contractClass!.packedBytecode.length > 0) {
31
- publicFunctions.push({
32
- selector: FunctionSelector.fromField(new Fr(PUBLIC_DISPATCH_SELECTOR)),
33
- bytecode: contractClass!.packedBytecode,
34
- });
28
+ if (!artifact) {
29
+ return;
35
30
  }
36
31
 
32
+ const privateFunctions = await Promise.all(
33
+ artifact.functions
34
+ .filter(fn => fn.functionType === FunctionType.PRIVATE)
35
+ .map(fn => getContractClassPrivateFunctionFromArtifact(fn)),
36
+ );
37
+ const privateFunctionsRoot = await computePrivateFunctionsRoot(privateFunctions);
38
+
37
39
  return {
38
40
  id,
39
41
  artifactHash: contractClass!.artifactHash,
40
42
  packedBytecode: contractClass!.packedBytecode,
41
- publicFunctions: publicFunctions,
42
- privateFunctionsRoot: new Fr(privateFunctionsRoot!.root),
43
+ privateFunctionsRoot,
43
44
  version: contractClass!.version,
44
45
  privateFunctions: [],
45
46
  unconstrainedFunctions: [],
@@ -48,12 +49,12 @@ export class TXEPublicContractDataSource implements ContractDataSource {
48
49
 
49
50
  async getBytecodeCommitment(id: Fr): Promise<Fr | undefined> {
50
51
  const contractClass = await this.txeOracle.getContractDataProvider().getContractClass(id);
51
- return computePublicBytecodeCommitment(contractClass.packedBytecode);
52
+ return contractClass && computePublicBytecodeCommitment(contractClass.packedBytecode);
52
53
  }
53
54
 
54
55
  async getContract(address: AztecAddress): Promise<ContractInstanceWithAddress | undefined> {
55
56
  const instance = await this.txeOracle.getContractDataProvider().getContractInstance(address);
56
- return { ...instance, address };
57
+ return instance && { ...instance, address };
57
58
  }
58
59
 
59
60
  getContractClassIds(): Promise<Fr[]> {
@@ -62,23 +63,11 @@ export class TXEPublicContractDataSource implements ContractDataSource {
62
63
 
63
64
  async getContractArtifact(address: AztecAddress): Promise<ContractArtifact | undefined> {
64
65
  const instance = await this.txeOracle.getContractDataProvider().getContractInstance(address);
65
- return this.txeOracle.getContractDataProvider().getContractArtifact(instance.currentContractClassId);
66
+ return instance && this.txeOracle.getContractDataProvider().getContractArtifact(instance.currentContractClassId);
66
67
  }
67
68
 
68
- async getContractFunctionName(address: AztecAddress, selector: FunctionSelector): Promise<string | undefined> {
69
- const artifact = await this.getContractArtifact(address);
70
- if (!artifact) {
71
- return undefined;
72
- }
73
- const functionSelectorsAndNames = await Promise.all(
74
- artifact.functions.map(async f => ({
75
- name: f.name,
76
- selector: await FunctionSelector.fromNameAndParameters({ name: f.name, parameters: f.parameters }),
77
- })),
78
- );
79
- const func = functionSelectorsAndNames.find(f => f.selector.equals(selector));
80
-
81
- return Promise.resolve(func?.name);
69
+ async getDebugFunctionName(address: AztecAddress, selector: FunctionSelector): Promise<string | undefined> {
70
+ return await this.txeOracle.getContractDataProvider().getDebugFunctionName(address, selector);
82
71
  }
83
72
 
84
73
  registerContractFunctionSignatures(_address: AztecAddress, _signatures: []): Promise<void> {