@aztec/txe 0.46.4 → 0.46.6

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.
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env -S node --no-warnings
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bin/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env -S node --no-warnings
2
+ import { createDebugLogger } from '@aztec/aztec.js';
3
+ import http from 'http';
4
+ import { createTXERpcServer } from '../index.js';
5
+ /**
6
+ * Create and start a new TXE HTTP Server
7
+ */
8
+ function main() {
9
+ const { TXE_PORT = 8080 } = process.env;
10
+ const logger = createDebugLogger('aztec:txe_service');
11
+ logger.info(`Setting up TXE...`);
12
+ const txeServer = createTXERpcServer(logger);
13
+ const app = txeServer.getApp();
14
+ const httpServer = http.createServer(app.callback());
15
+ httpServer.timeout = 1e3 * 60 * 5; // 5 minutes
16
+ httpServer.listen(TXE_PORT);
17
+ logger.info(`TXE listening on port ${TXE_PORT}`);
18
+ }
19
+ main();
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmluL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRCxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFFeEIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWpEOztHQUVHO0FBQ0gsU0FBUyxJQUFJO0lBQ1gsTUFBTSxFQUFFLFFBQVEsR0FBRyxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDO0lBRXhDLE1BQU0sTUFBTSxHQUFHLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDdEQsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRWpDLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLE1BQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMvQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELFVBQVUsQ0FBQyxPQUFPLEdBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxZQUFZO0lBQy9DLFVBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFNUIsTUFBTSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsUUFBUSxFQUFFLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBRUQsSUFBSSxFQUFFLENBQUMifQ==
@@ -0,0 +1,9 @@
1
+ import { JsonRpcServer } from '@aztec/foundation/json-rpc/server';
2
+ import { type Logger } from '@aztec/foundation/log';
3
+ /**
4
+ * Creates an RPC server that forwards calls to the TXE.
5
+ * @param logger - Logger to output to
6
+ * @returns A TXE RPC server.
7
+ */
8
+ export declare function createTXERpcServer(logger: Logger): JsonRpcServer;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AA6CpD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,iBAEhD"}
package/dest/index.js ADDED
@@ -0,0 +1,37 @@
1
+ import { Fr } from '@aztec/foundation/fields';
2
+ import { JsonRpcServer } from '@aztec/foundation/json-rpc/server';
3
+ import { TXEService } from './txe_service/txe_service.js';
4
+ import { toForeignCallResult } from './util/encoding.js';
5
+ const TXESessions = new Map();
6
+ class TXEDispatcher {
7
+ constructor(logger) {
8
+ this.logger = logger;
9
+ }
10
+ // eslint-disable-next-line camelcase
11
+ async resolve_foreign_call({ session_id: sessionId, function: functionName, inputs, }) {
12
+ this.logger.debug(`Calling ${functionName} on session ${sessionId}`);
13
+ if (!TXESessions.has(sessionId) && functionName != 'reset') {
14
+ this.logger.info(`Creating new session ${sessionId}`);
15
+ TXESessions.set(sessionId, await TXEService.init(this.logger));
16
+ }
17
+ if (functionName === 'reset') {
18
+ TXESessions.delete(sessionId) &&
19
+ this.logger.info(`Called reset on session ${sessionId}, yeeting it out of existence`);
20
+ return toForeignCallResult([]);
21
+ }
22
+ else {
23
+ const txeService = TXESessions.get(sessionId);
24
+ const response = await txeService[functionName](...inputs);
25
+ return response;
26
+ }
27
+ }
28
+ }
29
+ /**
30
+ * Creates an RPC server that forwards calls to the TXE.
31
+ * @param logger - Logger to output to
32
+ * @returns A TXE RPC server.
33
+ */
34
+ export function createTXERpcServer(logger) {
35
+ return new JsonRpcServer(new TXEDispatcher(logger), { Fr }, {}, ['init']);
36
+ }
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUdsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUQsT0FBTyxFQUEwQixtQkFBbUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWpGLE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUFzQixDQUFDO0FBWWxELE1BQU0sYUFBYTtJQUNqQixZQUFvQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUFHLENBQUM7SUFFdEMscUNBQXFDO0lBQ3JDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxFQUN6QixVQUFVLEVBQUUsU0FBUyxFQUNyQixRQUFRLEVBQUUsWUFBWSxFQUN0QixNQUFNLEdBQ2M7UUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxZQUFZLGVBQWUsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUVyRSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxZQUFZLElBQUksT0FBTyxFQUFFLENBQUM7WUFDM0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDdEQsV0FBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFFRCxJQUFJLFlBQVksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUM3QixXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsMkJBQTJCLFNBQVMsK0JBQStCLENBQUMsQ0FBQztZQUN4RixPQUFPLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM5QyxNQUFNLFFBQVEsR0FBRyxNQUFPLFVBQWtCLENBQUMsWUFBWSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztZQUNwRSxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxNQUFjO0lBQy9DLE9BQU8sSUFBSSxhQUFhLENBQUMsSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzVFLENBQUMifQ==
@@ -0,0 +1,108 @@
1
+ /// <reference types="node" resolution-mode="require"/>
2
+ import { MerkleTreeId, type NoteStatus, NullifierMembershipWitness, PublicDataWitness, type UnencryptedL2Log } from '@aztec/circuit-types';
3
+ import { CallContext, Header, type KeyValidationRequest, PrivateCallStackItem, PrivateContextInputs, PublicCallRequest } from '@aztec/circuits.js';
4
+ import { type ContractArtifact, type FunctionAbi, FunctionSelector, type NoteSelector } from '@aztec/foundation/abi';
5
+ import { AztecAddress } from '@aztec/foundation/aztec-address';
6
+ import { Fr, type Point } from '@aztec/foundation/fields';
7
+ import { type Logger } from '@aztec/foundation/log';
8
+ import { type KeyStore } from '@aztec/key-store';
9
+ import { ContractDataOracle } from '@aztec/pxe';
10
+ import { type ExecutionNoteCache, type MessageLoadOracleInputs, type NoteData, type PackedValuesCache, type TypedOracle } from '@aztec/simulator';
11
+ import { type ContractInstance, type ContractInstanceWithAddress } from '@aztec/types/contracts';
12
+ import { type MerkleTrees } from '@aztec/world-state';
13
+ import { type TXEDatabase } from '../util/txe_database.js';
14
+ export declare class TXE implements TypedOracle {
15
+ private logger;
16
+ private trees;
17
+ private packedValuesCache;
18
+ private noteCache;
19
+ private keyStore;
20
+ private txeDatabase;
21
+ private blockNumber;
22
+ private sideEffectsCounter;
23
+ private contractAddress;
24
+ private msgSender;
25
+ private functionSelector;
26
+ private contractDataOracle;
27
+ private version;
28
+ private chainId;
29
+ constructor(logger: Logger, trees: MerkleTrees, packedValuesCache: PackedValuesCache, noteCache: ExecutionNoteCache, keyStore: KeyStore, txeDatabase: TXEDatabase);
30
+ getChainId(): Promise<Fr>;
31
+ getVersion(): Promise<Fr>;
32
+ getMsgSender(): AztecAddress;
33
+ getFunctionSelector(): FunctionSelector;
34
+ setMsgSender(msgSender: Fr): void;
35
+ setFunctionSelector(functionSelector: FunctionSelector): void;
36
+ getSideEffectsCounter(): number;
37
+ setSideEffectsCounter(sideEffectsCounter: number): void;
38
+ setContractAddress(contractAddress: AztecAddress): void;
39
+ setBlockNumber(blockNumber: number): void;
40
+ getTrees(): MerkleTrees;
41
+ getContractDataOracle(): ContractDataOracle;
42
+ getTXEDatabase(): TXEDatabase;
43
+ getKeyStore(): KeyStore;
44
+ addContractInstance(contractInstance: ContractInstanceWithAddress): Promise<void>;
45
+ addContractArtifact(artifact: ContractArtifact): Promise<void>;
46
+ getPrivateContextInputs(blockNumber: number, sideEffectsCounter?: number, isStaticCall?: boolean, isDelegateCall?: boolean): Promise<PrivateContextInputs>;
47
+ getPublicContextInputs(): {
48
+ argsHash: Fr;
49
+ isStaticCall: boolean;
50
+ toFields: () => Fr[];
51
+ };
52
+ avmOpcodeNullifierExists(innerNullifier: Fr, targetAddress: AztecAddress): Promise<boolean>;
53
+ avmOpcodeEmitNullifier(nullifier: Fr): Promise<void>;
54
+ avmOpcodeEmitNoteHash(innerNoteHash: Fr): Promise<void>;
55
+ deriveKeys(secret: Fr): {
56
+ masterNullifierSecretKey: import("@aztec/circuits.js").Fq;
57
+ masterIncomingViewingSecretKey: import("@aztec/circuits.js").Fq;
58
+ masterOutgoingViewingSecretKey: import("@aztec/circuits.js").Fq;
59
+ masterTaggingSecretKey: import("@aztec/circuits.js").Fq;
60
+ publicKeys: import("@aztec/circuits.js").PublicKeys;
61
+ };
62
+ addAuthWitness(address: AztecAddress, messageHash: Fr): Promise<void>;
63
+ addNullifiers(contractAddress: AztecAddress, nullifiers: Fr[]): Promise<void>;
64
+ addNoteHashes(contractAddress: AztecAddress, innerNoteHashes: Fr[]): Promise<void>;
65
+ getBlockNumber(): Promise<number>;
66
+ getContractAddress(): Promise<AztecAddress>;
67
+ getRandomField(): Fr;
68
+ packArgumentsArray(args: Fr[]): Promise<Fr>;
69
+ packReturns(returns: Fr[]): Promise<Fr>;
70
+ unpackReturns(returnsHash: Fr): Promise<Fr[]>;
71
+ getKeyValidationRequest(pkMHash: Fr): Promise<KeyValidationRequest>;
72
+ getContractInstance(address: AztecAddress): Promise<ContractInstance>;
73
+ getMembershipWitness(_blockNumber: number, _treeId: MerkleTreeId, _leafValue: Fr): Promise<Fr[] | undefined>;
74
+ getSiblingPath(blockNumber: number, treeId: MerkleTreeId, leafIndex: Fr): Promise<Fr[]>;
75
+ getNullifierMembershipWitness(blockNumber: number, nullifier: Fr): Promise<NullifierMembershipWitness | undefined>;
76
+ getPublicDataTreeWitness(blockNumber: number, leafSlot: Fr): Promise<PublicDataWitness | undefined>;
77
+ getLowNullifierMembershipWitness(_blockNumber: number, _nullifier: Fr): Promise<NullifierMembershipWitness | undefined>;
78
+ getHeader(_blockNumber: number): Promise<Header | undefined>;
79
+ getCompleteAddress(account: AztecAddress): Promise<import("@aztec/circuit-types").CompleteAddress>;
80
+ getAuthWitness(messageHash: Fr): Promise<Fr[] | undefined>;
81
+ popCapsule(): Promise<Fr[]>;
82
+ getNotes(storageSlot: Fr, numSelects: number, selectByIndexes: number[], selectByOffsets: number[], selectByLengths: number[], selectValues: Fr[], selectComparators: number[], sortByIndexes: number[], sortByOffsets: number[], sortByLengths: number[], sortOrder: number[], limit: number, offset: number, _status: NoteStatus): Promise<NoteData[]>;
83
+ notifyCreatedNote(storageSlot: Fr, noteTypeId: NoteSelector, noteItems: Fr[], innerNoteHash: Fr, counter: number): Promise<void>;
84
+ notifyNullifiedNote(innerNullifier: Fr, innerNoteHash: Fr, _counter: number): Promise<void>;
85
+ checkNullifierExists(innerNullifier: Fr): Promise<boolean>;
86
+ getL1ToL2MembershipWitness(_contractAddress: AztecAddress, _messageHash: Fr, _secret: Fr): Promise<MessageLoadOracleInputs<16>>;
87
+ avmOpcodeStorageRead(slot: Fr, length: Fr): Promise<Fr[]>;
88
+ storageRead(contractAddress: Fr, startStorageSlot: Fr, blockNumber: number, numberOfElements: number): Promise<Fr[]>;
89
+ storageWrite(startStorageSlot: Fr, values: Fr[]): Promise<Fr[]>;
90
+ emitEncryptedLog(_contractAddress: AztecAddress, _randomness: Fr, _encryptedNote: Buffer, _counter: number): void;
91
+ emitEncryptedNoteLog(_noteHashCounter: number, _encryptedNote: Buffer, _counter: number): void;
92
+ computeEncryptedNoteLog(contractAddress: AztecAddress, storageSlot: Fr, noteTypeId: NoteSelector, ovKeys: KeyValidationRequest, ivpkM: Point, preimage: Fr[]): Buffer;
93
+ emitUnencryptedLog(_log: UnencryptedL2Log, _counter: number): void;
94
+ emitContractClassUnencryptedLog(_log: UnencryptedL2Log, _counter: number): Fr;
95
+ callPrivateFunction(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, argsHash: Fr, sideEffectCounter: number, isStaticCall: boolean, isDelegateCall: boolean): Promise<PrivateCallStackItem>;
96
+ getInitialWitness(abi: FunctionAbi, argsHash: Fr, sideEffectCounter: number, isStaticCall: boolean, isDelegateCall: boolean): Promise<Map<number, string>>;
97
+ getDebugFunctionName(address: AztecAddress, selector: FunctionSelector): Promise<string | undefined>;
98
+ executePublicFunction(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, args: Fr[], callContext: CallContext): Promise<import("@aztec/simulator").PublicExecutionResult>;
99
+ avmOpcodeCall(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, args: Fr[], isStaticCall: boolean, isDelegateCall: boolean): Promise<import("@aztec/simulator").PublicExecutionResult>;
100
+ callPublicFunction(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, argsHash: Fr, sideEffectCounter: number, isStaticCall: boolean, isDelegateCall: boolean): Promise<Fr[]>;
101
+ enqueuePublicFunctionCall(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, argsHash: Fr, sideEffectCounter: number, isStaticCall: boolean, isDelegateCall: boolean): Promise<PublicCallRequest>;
102
+ setPublicTeardownFunctionCall(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, argsHash: Fr, sideEffectCounter: number, isStaticCall: boolean, isDelegateCall: boolean): Promise<PublicCallRequest>;
103
+ aes128Encrypt(input: Buffer, initializationVector: Buffer, key: Buffer): Buffer;
104
+ debugLog(message: string, fields: Fr[]): void;
105
+ emitEncryptedEventLog(_contractAddress: AztecAddress, _randomness: Fr, _encryptedEvent: Buffer, _counter: number): void;
106
+ computeEncryptedEventLog(_contractAddress: AztecAddress, _randomness: Fr, _eventTypeId: Fr, _ovKeys: KeyValidationRequest, _ivpkM: Point, _preimage: Fr[]): Buffer;
107
+ }
108
+ //# sourceMappingURL=txe_oracle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"txe_oracle.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_oracle.ts"],"names":[],"mappings":"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"}