@aztec/txe 3.0.0-nightly.20250925 → 3.0.0-nightly.20250926
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/interfaces.d.ts +51 -0
- package/dest/oracle/interfaces.d.ts.map +1 -0
- package/dest/oracle/interfaces.js +3 -0
- package/dest/oracle/txe_oracle.d.ts +20 -5
- package/dest/oracle/txe_oracle.d.ts.map +1 -1
- package/dest/oracle/txe_oracle.js +44 -4
- package/dest/oracle/txe_oracle_public_context.d.ts +5 -3
- package/dest/oracle/txe_oracle_public_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_public_context.js +14 -3
- package/dest/oracle/txe_oracle_top_level_context.d.ts +9 -7
- package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_top_level_context.js +22 -22
- package/dest/rpc_translator.d.ts +13 -4
- package/dest/rpc_translator.d.ts.map +1 -1
- package/dest/rpc_translator.js +97 -62
- package/dest/txe_session.d.ts +4 -2
- package/dest/txe_session.d.ts.map +1 -1
- package/dest/txe_session.js +18 -4
- package/package.json +15 -15
- package/src/oracle/interfaces.ts +80 -0
- package/src/oracle/txe_oracle.ts +102 -59
- package/src/oracle/txe_oracle_public_context.ts +20 -15
- package/src/oracle/txe_oracle_top_level_context.ts +25 -42
- package/src/rpc_translator.ts +121 -65
- package/src/txe_session.ts +29 -4
- package/dest/oracle/txe_typed_oracle.d.ts +0 -41
- package/dest/oracle/txe_typed_oracle.d.ts.map +0 -1
- package/dest/oracle/txe_typed_oracle.js +0 -89
- package/src/oracle/txe_typed_oracle.ts +0 -147
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { CompleteAddress, ContractArtifact, ContractInstanceWithAddress, TxHash } from '@aztec/aztec.js';
|
|
2
|
+
import type { Fr } from '@aztec/foundation/fields';
|
|
3
|
+
import type { FunctionSelector } from '@aztec/stdlib/abi';
|
|
4
|
+
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
|
+
import type { UInt32, UInt64 } from '@aztec/stdlib/types';
|
|
6
|
+
/**
|
|
7
|
+
* Oracle methods associated with the execution of an Aztec #[public] function.
|
|
8
|
+
*
|
|
9
|
+
* Note that real contracts have their Brillig calls to these be transpiled into opcodes, the oracles are only executed
|
|
10
|
+
* as such when running the original Brillig code, e.g. when invoking functions that interact with a PublicContext
|
|
11
|
+
* directly in a Noir test.
|
|
12
|
+
*/
|
|
13
|
+
export interface IAvmExecutionOracle {
|
|
14
|
+
isAvm: true;
|
|
15
|
+
avmOpcodeAddress(): Promise<AztecAddress>;
|
|
16
|
+
avmOpcodeSender(): Promise<AztecAddress>;
|
|
17
|
+
avmOpcodeBlockNumber(): Promise<UInt32>;
|
|
18
|
+
avmOpcodeTimestamp(): Promise<bigint>;
|
|
19
|
+
avmOpcodeIsStaticCall(): Promise<boolean>;
|
|
20
|
+
avmOpcodeChainId(): Promise<Fr>;
|
|
21
|
+
avmOpcodeVersion(): Promise<Fr>;
|
|
22
|
+
avmOpcodeEmitNullifier(nullifier: Fr): Promise<void>;
|
|
23
|
+
avmOpcodeEmitNoteHash(noteHash: Fr): Promise<void>;
|
|
24
|
+
avmOpcodeNullifierExists(innerNullifier: Fr, targetAddress: AztecAddress): Promise<boolean>;
|
|
25
|
+
avmOpcodeStorageWrite(slot: Fr, value: Fr): Promise<void>;
|
|
26
|
+
avmOpcodeStorageRead(slot: Fr): Promise<Fr>;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Oracle methods associated with the execution of an Aztec Noir test.
|
|
30
|
+
*/
|
|
31
|
+
export interface ITxeExecutionOracle {
|
|
32
|
+
isTxe: true;
|
|
33
|
+
txeGetNextBlockNumber(): Promise<number>;
|
|
34
|
+
txeGetNextBlockTimestamp(): Promise<UInt64>;
|
|
35
|
+
txeAdvanceBlocksBy(blocks: number): Promise<void>;
|
|
36
|
+
txeAdvanceTimestampBy(duration: UInt64): void;
|
|
37
|
+
txeDeploy(artifact: ContractArtifact, instance: ContractInstanceWithAddress, foreignSecret: Fr): Promise<void>;
|
|
38
|
+
txeCreateAccount(secret: Fr): Promise<CompleteAddress>;
|
|
39
|
+
txeAddAccount(artifact: ContractArtifact, instance: ContractInstanceWithAddress, secret: Fr): Promise<CompleteAddress>;
|
|
40
|
+
txeAddAuthWitness(address: AztecAddress, messageHash: Fr): Promise<void>;
|
|
41
|
+
txeGetLastBlockTimestamp(): Promise<bigint>;
|
|
42
|
+
txeGetLastTxEffects(): Promise<{
|
|
43
|
+
txHash: TxHash;
|
|
44
|
+
noteHashes: Fr[];
|
|
45
|
+
nullifiers: Fr[];
|
|
46
|
+
}>;
|
|
47
|
+
txePrivateCallNewFlow(from: AztecAddress, targetContractAddress: AztecAddress, functionSelector: FunctionSelector, args: Fr[], argsHash: Fr, isStaticCall: boolean): Promise<Fr[]>;
|
|
48
|
+
txeSimulateUtilityFunction(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, args: Fr[]): Promise<Fr[]>;
|
|
49
|
+
txePublicCallNewFlow(from: AztecAddress, targetContractAddress: AztecAddress, calldata: Fr[], isStaticCall: boolean): Promise<Fr[]>;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/oracle/interfaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +1,27 @@
|
|
|
1
|
+
import { L1_TO_L2_MSG_TREE_HEIGHT } from '@aztec/constants';
|
|
1
2
|
import { Fr, Point } from '@aztec/foundation/fields';
|
|
2
3
|
import { PXEOracleInterface } from '@aztec/pxe/server';
|
|
3
|
-
import { ExecutionNoteCache, type NoteData, UtilityContext } from '@aztec/pxe/simulator';
|
|
4
|
-
import type { NoteSelector } from '@aztec/stdlib/abi';
|
|
4
|
+
import { ExecutionNoteCache, type IPrivateExecutionOracle, type IUtilityExecutionOracle, MessageLoadOracleInputs, type NoteData, UtilityContext } from '@aztec/pxe/simulator';
|
|
5
|
+
import type { FunctionSelector, NoteSelector } from '@aztec/stdlib/abi';
|
|
5
6
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
6
7
|
import { L2Block } from '@aztec/stdlib/block';
|
|
7
8
|
import type { ContractInstance } from '@aztec/stdlib/contract';
|
|
8
9
|
import type { MerkleTreeWriteOperations } from '@aztec/stdlib/interfaces/server';
|
|
9
10
|
import type { KeyValidationRequest } from '@aztec/stdlib/kernel';
|
|
10
|
-
import { IndexedTaggingSecret } from '@aztec/stdlib/logs';
|
|
11
|
+
import { ContractClassLog, IndexedTaggingSecret } from '@aztec/stdlib/logs';
|
|
11
12
|
import { type NoteStatus } from '@aztec/stdlib/note';
|
|
12
13
|
import { MerkleTreeId, NullifierMembershipWitness, PublicDataWitness } from '@aztec/stdlib/trees';
|
|
13
14
|
import { BlockHeader, GlobalVariables } from '@aztec/stdlib/tx';
|
|
14
|
-
|
|
15
|
-
export declare class TXE extends TXETypedOracle {
|
|
15
|
+
export declare class TXE implements IUtilityExecutionOracle, IPrivateExecutionOracle {
|
|
16
16
|
private contractAddress;
|
|
17
17
|
private pxeOracleInterface;
|
|
18
18
|
private forkedWorldTrees;
|
|
19
19
|
private anchorBlockGlobalVariables;
|
|
20
20
|
private nextBlockGlobalVariables;
|
|
21
21
|
private txRequestHash;
|
|
22
|
+
isMisc: true;
|
|
23
|
+
isUtility: true;
|
|
24
|
+
isPrivate: true;
|
|
22
25
|
private logger;
|
|
23
26
|
private executionCache;
|
|
24
27
|
private senderForTags?;
|
|
@@ -60,5 +63,17 @@ export declare class TXE extends TXETypedOracle {
|
|
|
60
63
|
privateSetSenderForTags(senderForTags: AztecAddress): Promise<void>;
|
|
61
64
|
close(): Promise<L2Block>;
|
|
62
65
|
private makeTxEffect;
|
|
66
|
+
utilityAssertCompatibleOracleVersion(_version: number): void;
|
|
67
|
+
utilityGetAuthWitness(_messageHash: Fr): Promise<Fr[] | undefined>;
|
|
68
|
+
utilityGetL1ToL2MembershipWitness(_contractAddress: AztecAddress, _messageHash: Fr, _secret: Fr): Promise<MessageLoadOracleInputs<typeof L1_TO_L2_MSG_TREE_HEIGHT>>;
|
|
69
|
+
utilityEmitOffchainEffect(_data: Fr[]): Promise<void>;
|
|
70
|
+
privateNotifyCreatedContractClassLog(_log: ContractClassLog, _counter: number): void;
|
|
71
|
+
privateCallPrivateFunction(_targetContractAddress: AztecAddress, _functionSelector: FunctionSelector, _argsHash: Fr, _sideEffectCounter: number, _isStaticCall: boolean): Promise<{
|
|
72
|
+
endSideEffectCounter: Fr;
|
|
73
|
+
returnsHash: Fr;
|
|
74
|
+
}>;
|
|
75
|
+
privateNotifyEnqueuedPublicFunctionCall(_targetContractAddress: AztecAddress, _calldataHash: Fr, _sideEffectCounter: number, _isStaticCall: boolean): Promise<void>;
|
|
76
|
+
privateNotifySetPublicTeardownFunctionCall(_targetContractAddress: AztecAddress, _calldataHash: Fr, _sideEffectCounter: number, _isStaticCall: boolean): Promise<void>;
|
|
77
|
+
privateNotifySetMinRevertibleSideEffectCounter(_minRevertibleSideEffectCounter: number): Promise<void>;
|
|
63
78
|
}
|
|
64
79
|
//# sourceMappingURL=txe_oracle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"txe_oracle.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_oracle.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"txe_oracle.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_oracle.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,20 +9,31 @@ import { makeAppendOnlyTreeSnapshot } from '@aztec/stdlib/testing';
|
|
|
9
9
|
import { MerkleTreeId } from '@aztec/stdlib/trees';
|
|
10
10
|
import { TxEffect, TxHash } from '@aztec/stdlib/tx';
|
|
11
11
|
import { insertTxEffectIntoWorldTrees, makeTXEBlockHeader } from '../utils/block_creation.js';
|
|
12
|
-
|
|
13
|
-
export class TXE extends TXETypedOracle {
|
|
12
|
+
export class TXE {
|
|
14
13
|
contractAddress;
|
|
15
14
|
pxeOracleInterface;
|
|
16
15
|
forkedWorldTrees;
|
|
17
16
|
anchorBlockGlobalVariables;
|
|
18
17
|
nextBlockGlobalVariables;
|
|
19
18
|
txRequestHash;
|
|
19
|
+
isMisc;
|
|
20
|
+
isUtility;
|
|
21
|
+
isPrivate;
|
|
20
22
|
logger;
|
|
21
23
|
executionCache;
|
|
22
24
|
senderForTags;
|
|
23
25
|
noteCache;
|
|
24
26
|
constructor(contractAddress, pxeOracleInterface, forkedWorldTrees, anchorBlockGlobalVariables, nextBlockGlobalVariables, txRequestHash){
|
|
25
|
-
|
|
27
|
+
this.contractAddress = contractAddress;
|
|
28
|
+
this.pxeOracleInterface = pxeOracleInterface;
|
|
29
|
+
this.forkedWorldTrees = forkedWorldTrees;
|
|
30
|
+
this.anchorBlockGlobalVariables = anchorBlockGlobalVariables;
|
|
31
|
+
this.nextBlockGlobalVariables = nextBlockGlobalVariables;
|
|
32
|
+
this.txRequestHash = txRequestHash;
|
|
33
|
+
this.isMisc = true;
|
|
34
|
+
this.isUtility = true;
|
|
35
|
+
this.isPrivate = true;
|
|
36
|
+
this.executionCache = new HashedValuesCache();
|
|
26
37
|
this.logger = createLogger('txe:oracle');
|
|
27
38
|
this.logger.debug('Entering Private/Utility context');
|
|
28
39
|
this.noteCache = new ExecutionNoteCache(txRequestHash);
|
|
@@ -44,7 +55,6 @@ export class TXE extends TXETypedOracle {
|
|
|
44
55
|
throw new Error(`Rejecting tx for emitting duplicate nullifiers`);
|
|
45
56
|
}
|
|
46
57
|
}
|
|
47
|
-
// TypedOracle
|
|
48
58
|
utilityGetRandomField() {
|
|
49
59
|
return Fr.random();
|
|
50
60
|
}
|
|
@@ -260,4 +270,34 @@ export class TXE extends TXETypedOracle {
|
|
|
260
270
|
txEffect.txHash = new TxHash(new Fr(this.nextBlockGlobalVariables.blockNumber));
|
|
261
271
|
return txEffect;
|
|
262
272
|
}
|
|
273
|
+
// TODO: this class will soon be replaced with the real UtilityExecutionOracle and PrivateExecutionOracle classes. The
|
|
274
|
+
// functions below are not currently used in Noir tests, and in most cases they're caught beforehand by the RPC
|
|
275
|
+
// translator - we just have a temporary empty implementation until we finalize the migration.
|
|
276
|
+
utilityAssertCompatibleOracleVersion(_version) {
|
|
277
|
+
throw new Error('Method not implemented.');
|
|
278
|
+
}
|
|
279
|
+
utilityGetAuthWitness(_messageHash) {
|
|
280
|
+
throw new Error('Method not implemented.');
|
|
281
|
+
}
|
|
282
|
+
utilityGetL1ToL2MembershipWitness(_contractAddress, _messageHash, _secret) {
|
|
283
|
+
throw new Error('Method not implemented.');
|
|
284
|
+
}
|
|
285
|
+
utilityEmitOffchainEffect(_data) {
|
|
286
|
+
throw new Error('Method not implemented.');
|
|
287
|
+
}
|
|
288
|
+
privateNotifyCreatedContractClassLog(_log, _counter) {
|
|
289
|
+
throw new Error('Method not implemented.');
|
|
290
|
+
}
|
|
291
|
+
privateCallPrivateFunction(_targetContractAddress, _functionSelector, _argsHash, _sideEffectCounter, _isStaticCall) {
|
|
292
|
+
throw new Error('Method not implemented.');
|
|
293
|
+
}
|
|
294
|
+
privateNotifyEnqueuedPublicFunctionCall(_targetContractAddress, _calldataHash, _sideEffectCounter, _isStaticCall) {
|
|
295
|
+
throw new Error('Method not implemented.');
|
|
296
|
+
}
|
|
297
|
+
privateNotifySetPublicTeardownFunctionCall(_targetContractAddress, _calldataHash, _sideEffectCounter, _isStaticCall) {
|
|
298
|
+
throw new Error('Method not implemented.');
|
|
299
|
+
}
|
|
300
|
+
privateNotifySetMinRevertibleSideEffectCounter(_minRevertibleSideEffectCounter) {
|
|
301
|
+
throw new Error('Method not implemented.');
|
|
302
|
+
}
|
|
263
303
|
}
|
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
import { Fr } from '@aztec/foundation/fields';
|
|
2
|
-
import
|
|
2
|
+
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
3
3
|
import { L2Block } from '@aztec/stdlib/block';
|
|
4
4
|
import { type MerkleTreeWriteOperations } from '@aztec/stdlib/trees';
|
|
5
5
|
import { GlobalVariables } from '@aztec/stdlib/tx';
|
|
6
6
|
import type { UInt32 } from '@aztec/stdlib/types';
|
|
7
|
-
import {
|
|
8
|
-
export declare class TXEOraclePublicContext
|
|
7
|
+
import type { IAvmExecutionOracle } from './interfaces.js';
|
|
8
|
+
export declare class TXEOraclePublicContext implements IAvmExecutionOracle {
|
|
9
9
|
private contractAddress;
|
|
10
10
|
private forkedWorldTrees;
|
|
11
11
|
private txRequestHash;
|
|
12
12
|
private globalVariables;
|
|
13
|
+
isAvm: true;
|
|
13
14
|
private logger;
|
|
14
15
|
private transientUniqueNoteHashes;
|
|
15
16
|
private transientSiloedNullifiers;
|
|
16
17
|
private publicDataWrites;
|
|
17
18
|
constructor(contractAddress: AztecAddress, forkedWorldTrees: MerkleTreeWriteOperations, txRequestHash: Fr, globalVariables: GlobalVariables);
|
|
18
19
|
avmOpcodeAddress(): Promise<AztecAddress>;
|
|
20
|
+
avmOpcodeSender(): Promise<AztecAddress>;
|
|
19
21
|
avmOpcodeBlockNumber(): Promise<UInt32>;
|
|
20
22
|
avmOpcodeTimestamp(): Promise<bigint>;
|
|
21
23
|
avmOpcodeIsStaticCall(): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"txe_oracle_public_context.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_oracle_public_context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAG9C,OAAO,
|
|
1
|
+
{"version":3,"file":"txe_oracle_public_context.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_oracle_public_context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAQ,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAEL,KAAK,yBAAyB,EAG/B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAoB,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,qBAAa,sBAAuB,YAAW,mBAAmB;IAS9D,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,eAAe;IAXzB,KAAK,EAAG,IAAI,CAAU;IAEtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,yBAAyB,CAAY;IAC7C,OAAO,CAAC,yBAAyB,CAAY;IAC7C,OAAO,CAAC,gBAAgB,CAAyB;gBAGvC,eAAe,EAAE,YAAY,EAC7B,gBAAgB,EAAE,yBAAyB,EAC3C,aAAa,EAAE,EAAE,EACjB,eAAe,EAAE,eAAe;IAW1C,gBAAgB,IAAI,OAAO,CAAC,YAAY,CAAC;IAIzC,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC;IAIxC,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;IAIvC,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAIrC,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC;IAIzC,gBAAgB,IAAI,OAAO,CAAC,EAAE,CAAC;IAI/B,gBAAgB,IAAI,OAAO,CAAC,EAAE,CAAC;IAIzB,sBAAsB,CAAC,SAAS,EAAE,EAAE;IAKpC,qBAAqB,CAAC,QAAQ,EAAE,EAAE;IAMlC,wBAAwB,CAAC,cAAc,EAAE,EAAE,EAAE,aAAa,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAW3F,qBAAqB,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IAYzC,oBAAoB,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IAuB3C,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAwB/B,OAAO,CAAC,YAAY;CAarB"}
|
|
@@ -1,24 +1,32 @@
|
|
|
1
1
|
import { Fr } from '@aztec/foundation/fields';
|
|
2
2
|
import { createLogger } from '@aztec/foundation/log';
|
|
3
3
|
import { PublicDataWrite } from '@aztec/stdlib/avm';
|
|
4
|
+
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
5
|
import { Body, L2Block } from '@aztec/stdlib/block';
|
|
5
6
|
import { computePublicDataTreeLeafSlot, siloNoteHash, siloNullifier } from '@aztec/stdlib/hash';
|
|
6
7
|
import { makeAppendOnlyTreeSnapshot } from '@aztec/stdlib/testing';
|
|
7
8
|
import { MerkleTreeId, PublicDataTreeLeaf } from '@aztec/stdlib/trees';
|
|
8
9
|
import { TxEffect, TxHash } from '@aztec/stdlib/tx';
|
|
9
10
|
import { insertTxEffectIntoWorldTrees, makeTXEBlockHeader } from '../utils/block_creation.js';
|
|
10
|
-
|
|
11
|
-
export class TXEOraclePublicContext extends TXETypedOracle {
|
|
11
|
+
export class TXEOraclePublicContext {
|
|
12
12
|
contractAddress;
|
|
13
13
|
forkedWorldTrees;
|
|
14
14
|
txRequestHash;
|
|
15
15
|
globalVariables;
|
|
16
|
+
isAvm;
|
|
16
17
|
logger;
|
|
17
18
|
transientUniqueNoteHashes;
|
|
18
19
|
transientSiloedNullifiers;
|
|
19
20
|
publicDataWrites;
|
|
20
21
|
constructor(contractAddress, forkedWorldTrees, txRequestHash, globalVariables){
|
|
21
|
-
|
|
22
|
+
this.contractAddress = contractAddress;
|
|
23
|
+
this.forkedWorldTrees = forkedWorldTrees;
|
|
24
|
+
this.txRequestHash = txRequestHash;
|
|
25
|
+
this.globalVariables = globalVariables;
|
|
26
|
+
this.isAvm = true;
|
|
27
|
+
this.transientUniqueNoteHashes = [];
|
|
28
|
+
this.transientSiloedNullifiers = [];
|
|
29
|
+
this.publicDataWrites = [];
|
|
22
30
|
this.logger = createLogger('txe:public_context');
|
|
23
31
|
this.logger.debug('Entering Public Context', {
|
|
24
32
|
contractAddress,
|
|
@@ -29,6 +37,9 @@ export class TXEOraclePublicContext extends TXETypedOracle {
|
|
|
29
37
|
avmOpcodeAddress() {
|
|
30
38
|
return Promise.resolve(this.contractAddress);
|
|
31
39
|
}
|
|
40
|
+
avmOpcodeSender() {
|
|
41
|
+
return Promise.resolve(AztecAddress.ZERO); // todo: change?
|
|
42
|
+
}
|
|
32
43
|
avmOpcodeBlockNumber() {
|
|
33
44
|
return Promise.resolve(this.globalVariables.blockNumber);
|
|
34
45
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { Fr } from '@aztec/foundation/fields';
|
|
2
2
|
import type { KeyStore } from '@aztec/key-store';
|
|
3
3
|
import { AddressDataProvider, PXEOracleInterface } from '@aztec/pxe/server';
|
|
4
|
-
import {
|
|
4
|
+
import { type IMiscOracle } from '@aztec/pxe/simulator';
|
|
5
5
|
import { type ContractArtifact, FunctionSelector } from '@aztec/stdlib/abi';
|
|
6
|
+
import { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
6
7
|
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
7
8
|
import { type ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
8
9
|
import { TxHash } from '@aztec/stdlib/tx';
|
|
@@ -10,8 +11,8 @@ import type { UInt64 } from '@aztec/stdlib/types';
|
|
|
10
11
|
import type { TXEStateMachine } from '../state_machine/index.js';
|
|
11
12
|
import type { TXEAccountDataProvider } from '../util/txe_account_data_provider.js';
|
|
12
13
|
import type { TXEContractDataProvider } from '../util/txe_contract_data_provider.js';
|
|
13
|
-
import {
|
|
14
|
-
export declare class TXEOracleTopLevelContext
|
|
14
|
+
import type { ITxeExecutionOracle } from './interfaces.js';
|
|
15
|
+
export declare class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecutionOracle {
|
|
15
16
|
private stateMachine;
|
|
16
17
|
private contractDataProvider;
|
|
17
18
|
private keyStore;
|
|
@@ -21,13 +22,14 @@ export declare class TXEOracleTopLevelContext extends TXETypedOracle {
|
|
|
21
22
|
private nextBlockTimestamp;
|
|
22
23
|
private version;
|
|
23
24
|
private chainId;
|
|
24
|
-
private logger;
|
|
25
25
|
private authwits;
|
|
26
|
-
|
|
26
|
+
isMisc: true;
|
|
27
|
+
isTxe: true;
|
|
28
|
+
private logger;
|
|
29
|
+
constructor(stateMachine: TXEStateMachine, contractDataProvider: TXEContractDataProvider, keyStore: KeyStore, addressDataProvider: AddressDataProvider, accountDataProvider: TXEAccountDataProvider, pxeOracleInterface: PXEOracleInterface, nextBlockTimestamp: bigint, version: Fr, chainId: Fr, authwits: Map<string, AuthWitness>);
|
|
27
30
|
utilityAssertCompatibleOracleVersion(version: number): void;
|
|
28
31
|
utilityGetRandomField(): Fr;
|
|
29
32
|
utilityDebugLog(message: string, fields: Fr[]): void;
|
|
30
|
-
utilityGetUtilityContext(): Promise<UtilityContext>;
|
|
31
33
|
txeGetNextBlockNumber(): Promise<number>;
|
|
32
34
|
txeGetNextBlockTimestamp(): Promise<bigint>;
|
|
33
35
|
txeGetLastBlockTimestamp(): Promise<bigint>;
|
|
@@ -48,7 +50,7 @@ export declare class TXEOracleTopLevelContext extends TXETypedOracle {
|
|
|
48
50
|
txePrivateCallNewFlow(from: AztecAddress, targetContractAddress: AztecAddress | undefined, functionSelector: FunctionSelector | undefined, args: Fr[], argsHash?: Fr, isStaticCall?: boolean): Promise<Fr[]>;
|
|
49
51
|
txePublicCallNewFlow(from: AztecAddress, targetContractAddress: AztecAddress, calldata: Fr[], isStaticCall: boolean): Promise<Fr[]>;
|
|
50
52
|
txeSimulateUtilityFunction(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, args: Fr[]): Promise<Fr[]>;
|
|
51
|
-
close(): bigint;
|
|
53
|
+
close(): [bigint, Map<string, AuthWitness>];
|
|
52
54
|
private getLastBlockNumber;
|
|
53
55
|
}
|
|
54
56
|
//# sourceMappingURL=txe_oracle_top_level_context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"txe_oracle_top_level_context.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_oracle_top_level_context.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAG9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,mBAAmB,EAEnB,kBAAkB,EAEnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,
|
|
1
|
+
{"version":3,"file":"txe_oracle_top_level_context.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_oracle_top_level_context.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { Fr } from '@aztec/foundation/fields';
|
|
|
4
4
|
import { applyStringFormatting, createLogger } from '@aztec/foundation/log';
|
|
5
5
|
import { TestDateProvider } from '@aztec/foundation/timer';
|
|
6
6
|
import { ORACLE_VERSION, enrichPublicSimulationError } from '@aztec/pxe/server';
|
|
7
|
-
import { ExecutionNoteCache, HashedValuesCache, Oracle, PrivateExecutionOracle,
|
|
7
|
+
import { ExecutionNoteCache, HashedValuesCache, Oracle, PrivateExecutionOracle, UtilityExecutionOracle, executePrivateFunction, generateSimulatedProvingResult } from '@aztec/pxe/simulator';
|
|
8
8
|
import { ExecutionError, WASMSimulator, createSimulationError, extractCallStack, resolveAssertionMessageFromError, toACVMWitness, witnessMapToFields } from '@aztec/simulator/client';
|
|
9
9
|
import { GuardedMerkleTreeOperations, PublicContractsDB, PublicProcessor, PublicTxSimulator } from '@aztec/simulator/server';
|
|
10
10
|
import { FunctionSelector, FunctionType } from '@aztec/stdlib/abi';
|
|
@@ -22,8 +22,7 @@ import { CallContext, HashedValues, PrivateExecutionResult, Tx, TxConstantData,
|
|
|
22
22
|
import { ForkCheckpoint } from '@aztec/world-state';
|
|
23
23
|
import { TXEPublicContractDataSource } from '../util/txe_public_contract_data_source.js';
|
|
24
24
|
import { getSingleTxBlockRequestHash, insertTxEffectIntoWorldTrees, makeTXEBlockHeader } from '../utils/block_creation.js';
|
|
25
|
-
|
|
26
|
-
export class TXEOracleTopLevelContext extends TXETypedOracle {
|
|
25
|
+
export class TXEOracleTopLevelContext {
|
|
27
26
|
stateMachine;
|
|
28
27
|
contractDataProvider;
|
|
29
28
|
keyStore;
|
|
@@ -33,10 +32,23 @@ export class TXEOracleTopLevelContext extends TXETypedOracle {
|
|
|
33
32
|
nextBlockTimestamp;
|
|
34
33
|
version;
|
|
35
34
|
chainId;
|
|
36
|
-
logger;
|
|
37
35
|
authwits;
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
isMisc;
|
|
37
|
+
isTxe;
|
|
38
|
+
logger;
|
|
39
|
+
constructor(stateMachine, contractDataProvider, keyStore, addressDataProvider, accountDataProvider, pxeOracleInterface, nextBlockTimestamp, version, chainId, authwits){
|
|
40
|
+
this.stateMachine = stateMachine;
|
|
41
|
+
this.contractDataProvider = contractDataProvider;
|
|
42
|
+
this.keyStore = keyStore;
|
|
43
|
+
this.addressDataProvider = addressDataProvider;
|
|
44
|
+
this.accountDataProvider = accountDataProvider;
|
|
45
|
+
this.pxeOracleInterface = pxeOracleInterface;
|
|
46
|
+
this.nextBlockTimestamp = nextBlockTimestamp;
|
|
47
|
+
this.version = version;
|
|
48
|
+
this.chainId = chainId;
|
|
49
|
+
this.authwits = authwits;
|
|
50
|
+
this.isMisc = true;
|
|
51
|
+
this.isTxe = true;
|
|
40
52
|
this.logger = createLogger('txe:top_level_context');
|
|
41
53
|
this.logger.debug('Entering Top Level Context');
|
|
42
54
|
}
|
|
@@ -56,21 +68,6 @@ export class TXEOracleTopLevelContext extends TXETypedOracle {
|
|
|
56
68
|
module: `${this.logger.module}:debug_log`
|
|
57
69
|
});
|
|
58
70
|
}
|
|
59
|
-
// temporary - authwits require this, consider removing it once authwit support improves
|
|
60
|
-
utilityGetUtilityContext() {
|
|
61
|
-
// The zero values for block number, timestamp and contract address are unfortunate sideeffect of use replacing
|
|
62
|
-
// the utilityGetContractAddress, utilityGetBlockNumber, utilityGetTimestamp, utilityGetChainId and
|
|
63
|
-
// utilityGetVersion oracles with utilityGetUtilityContext. Having those values populated does not make sense here
|
|
64
|
-
// as they have no meaning in top level context. OTOH version and chain id also don't really make sense here so
|
|
65
|
-
// think it's fine to learn to live with this tech debt for now.
|
|
66
|
-
return Promise.resolve(UtilityContext.from({
|
|
67
|
-
blockNumber: 0,
|
|
68
|
-
timestamp: 0n,
|
|
69
|
-
contractAddress: AztecAddress.zero(),
|
|
70
|
-
version: this.version,
|
|
71
|
-
chainId: this.chainId
|
|
72
|
-
}));
|
|
73
|
-
}
|
|
74
71
|
async txeGetNextBlockNumber() {
|
|
75
72
|
return await this.getLastBlockNumber() + 1;
|
|
76
73
|
}
|
|
@@ -404,7 +401,10 @@ export class TXEOracleTopLevelContext extends TXETypedOracle {
|
|
|
404
401
|
}
|
|
405
402
|
close() {
|
|
406
403
|
this.logger.debug('Exiting Top Level Context');
|
|
407
|
-
return
|
|
404
|
+
return [
|
|
405
|
+
this.nextBlockTimestamp,
|
|
406
|
+
this.authwits
|
|
407
|
+
];
|
|
408
408
|
}
|
|
409
409
|
async getLastBlockNumber() {
|
|
410
410
|
return (await this.stateMachine.node.getBlockHeader('latest'))?.globalVariables.blockNumber ?? 0;
|
package/dest/rpc_translator.d.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { type ContractInstanceWithAddress } from '@aztec/aztec.js';
|
|
2
|
+
import { type IMiscOracle, type IPrivateExecutionOracle, type IUtilityExecutionOracle } from '@aztec/pxe/simulator';
|
|
2
3
|
import { type ContractArtifact } from '@aztec/stdlib/abi';
|
|
3
|
-
import type {
|
|
4
|
+
import type { IAvmExecutionOracle, ITxeExecutionOracle } from './oracle/interfaces.js';
|
|
4
5
|
import type { TXESessionStateHandler } from './txe_session.js';
|
|
5
6
|
import { type ForeignCallArray, type ForeignCallSingle } from './util/encoding.js';
|
|
7
|
+
export declare class UnavailableOracleError extends Error {
|
|
8
|
+
constructor(oracleName: string);
|
|
9
|
+
}
|
|
6
10
|
export declare class RPCTranslator {
|
|
7
11
|
private stateHandler;
|
|
8
12
|
private oracleHandler;
|
|
@@ -15,7 +19,12 @@ export declare class RPCTranslator {
|
|
|
15
19
|
* @param oracleHandler The handler that will process all other oracle calls that are not directly related to session
|
|
16
20
|
* state.
|
|
17
21
|
*/
|
|
18
|
-
constructor(stateHandler: TXESessionStateHandler, oracleHandler:
|
|
22
|
+
constructor(stateHandler: TXESessionStateHandler, oracleHandler: IMiscOracle | IUtilityExecutionOracle | IPrivateExecutionOracle | IAvmExecutionOracle | ITxeExecutionOracle);
|
|
23
|
+
private handlerAsMisc;
|
|
24
|
+
private handlerAsUtility;
|
|
25
|
+
private handlerAsPrivate;
|
|
26
|
+
private handlerAsAvm;
|
|
27
|
+
private handlerAsTxe;
|
|
19
28
|
txeSetTopLevelTXEContext(): Promise<{
|
|
20
29
|
values: (string | ForeignCallArray)[];
|
|
21
30
|
}>;
|
|
@@ -174,9 +183,9 @@ export declare class RPCTranslator {
|
|
|
174
183
|
avmOpcodeGetContractInstanceInitializationHash(foreignAddress: ForeignCallSingle): Promise<{
|
|
175
184
|
values: (string | ForeignCallArray)[];
|
|
176
185
|
}>;
|
|
177
|
-
avmOpcodeSender(): {
|
|
186
|
+
avmOpcodeSender(): Promise<{
|
|
178
187
|
values: (string | ForeignCallArray)[];
|
|
179
|
-
}
|
|
188
|
+
}>;
|
|
180
189
|
avmOpcodeEmitNullifier(foreignNullifier: ForeignCallSingle): Promise<{
|
|
181
190
|
values: (string | ForeignCallArray)[];
|
|
182
191
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc_translator.d.ts","sourceRoot":"","sources":["../src/rpc_translator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,2BAA2B,EAAa,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"rpc_translator.d.ts","sourceRoot":"","sources":["../src/rpc_translator.ts"],"names":[],"mappings":"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"}
|