@aztec/pxe 0.28.1 → 0.30.0
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/contract_data_oracle/index.d.ts +23 -9
- package/dest/contract_data_oracle/index.d.ts.map +1 -1
- package/dest/contract_data_oracle/index.js +55 -39
- package/dest/contract_data_oracle/private_functions_tree.d.ts +7 -15
- package/dest/contract_data_oracle/private_functions_tree.d.ts.map +1 -1
- package/dest/contract_data_oracle/private_functions_tree.js +10 -15
- package/dest/database/contracts/contract_instance_db.d.ts +2 -0
- package/dest/database/contracts/contract_instance_db.d.ts.map +1 -1
- package/dest/database/kv_pxe_database.d.ts +3 -4
- package/dest/database/kv_pxe_database.d.ts.map +1 -1
- package/dest/database/kv_pxe_database.js +16 -17
- package/dest/database/pxe_database.d.ts +5 -2
- package/dest/database/pxe_database.d.ts.map +1 -1
- package/dest/kernel_oracle/index.d.ts +1 -0
- package/dest/kernel_oracle/index.d.ts.map +1 -1
- package/dest/kernel_prover/kernel_prover.js +4 -4
- package/dest/pxe_http/pxe_http_server.d.ts.map +1 -1
- package/dest/pxe_http/pxe_http_server.js +2 -4
- package/dest/pxe_service/create_pxe_service.d.ts.map +1 -1
- package/dest/pxe_service/create_pxe_service.js +8 -2
- package/dest/pxe_service/pxe_service.d.ts +8 -6
- package/dest/pxe_service/pxe_service.d.ts.map +1 -1
- package/dest/pxe_service/pxe_service.js +36 -37
- package/dest/pxe_service/test/pxe_test_suite.d.ts.map +1 -1
- package/dest/pxe_service/test/pxe_test_suite.js +26 -6
- package/dest/simulator_oracle/index.d.ts +1 -1
- package/dest/simulator_oracle/index.d.ts.map +1 -1
- package/dest/simulator_oracle/index.js +11 -14
- package/package.json +12 -12
- package/src/contract_data_oracle/index.ts +63 -50
- package/src/contract_data_oracle/private_functions_tree.ts +12 -17
- package/src/database/contracts/contract_instance_db.ts +3 -0
- package/src/database/kv_pxe_database.ts +17 -17
- package/src/database/pxe_database.ts +6 -2
- package/src/kernel_prover/kernel_prover.ts +3 -3
- package/src/pxe_http/pxe_http_server.ts +0 -4
- package/src/pxe_service/create_pxe_service.ts +7 -1
- package/src/pxe_service/pxe_service.ts +42 -40
- package/src/pxe_service/test/pxe_test_suite.ts +37 -6
- package/src/simulator_oracle/index.ts +10 -15
- package/dest/contract_database/index.d.ts +0 -2
- package/dest/contract_database/index.d.ts.map +0 -1
- package/dest/contract_database/index.js +0 -2
- package/dest/contract_database/memory_contract_database.d.ts +0 -43
- package/dest/contract_database/memory_contract_database.d.ts.map +0 -1
- package/dest/contract_database/memory_contract_database.js +0 -51
- package/src/contract_database/index.ts +0 -1
- package/src/contract_database/memory_contract_database.ts +0 -58
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/simulator_oracle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,UAAU,EACV,0BAA0B,EAC1B,iBAAiB,EAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,YAAY,EACZ,eAAe,EACf,UAAU,EACV,EAAE,EACF,gBAAgB,EAChB,MAAM,EACN,wBAAwB,EACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iCAAiC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/simulator_oracle/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { MerkleTreeId, } from '@aztec/circuit-types';
|
|
2
|
+
import { getFunctionArtifactWithDebugMetadata } from '@aztec/foundation/abi';
|
|
2
3
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
3
4
|
import { MessageLoadOracleInputs } from '@aztec/simulator';
|
|
4
5
|
/**
|
|
@@ -72,31 +73,27 @@ export class SimulatorOracle {
|
|
|
72
73
|
};
|
|
73
74
|
}
|
|
74
75
|
async getFunctionArtifactByName(contractAddress, functionName) {
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
}
|
|
79
|
-
const debug = await this.contractDataOracle.getFunctionDebugMetadata(contractAddress, artifact.selector);
|
|
80
|
-
return {
|
|
81
|
-
...artifact,
|
|
82
|
-
debug,
|
|
83
|
-
};
|
|
76
|
+
const instance = await this.contractDataOracle.getContractInstance(contractAddress);
|
|
77
|
+
const artifact = await this.contractDataOracle.getContractArtifact(instance.contractClassId);
|
|
78
|
+
return artifact && getFunctionArtifactWithDebugMetadata(artifact, functionName);
|
|
84
79
|
}
|
|
85
80
|
async getPortalContractAddress(contractAddress) {
|
|
86
81
|
return await this.contractDataOracle.getPortalContractAddress(contractAddress);
|
|
87
82
|
}
|
|
88
83
|
/**
|
|
89
84
|
* Retrieves the L1ToL2Message associated with a specific entry key
|
|
90
|
-
* Throws an error if the entry key is not found
|
|
91
85
|
*
|
|
86
|
+
* @throws If the entry key is not found
|
|
92
87
|
* @param entryKey - The key of the message to be retrieved
|
|
93
88
|
* @returns A promise that resolves to the message data, a sibling path and the
|
|
94
89
|
* index of the message in the l1ToL2MessageTree
|
|
95
90
|
*/
|
|
96
91
|
async getL1ToL2MembershipWitness(entryKey) {
|
|
97
|
-
const
|
|
98
|
-
|
|
99
|
-
|
|
92
|
+
const response = await this.aztecNode.getL1ToL2MessageMembershipWitness('latest', entryKey);
|
|
93
|
+
if (!response) {
|
|
94
|
+
throw new Error(`No L1 to L2 message found for entry key ${entryKey.toString()}`);
|
|
95
|
+
}
|
|
96
|
+
const [index, siblingPath] = response;
|
|
100
97
|
return new MessageLoadOracleInputs(index, siblingPath);
|
|
101
98
|
}
|
|
102
99
|
/**
|
|
@@ -159,4 +156,4 @@ export class SimulatorOracle {
|
|
|
159
156
|
return await this.aztecNode.getBlockNumber();
|
|
160
157
|
}
|
|
161
158
|
}
|
|
162
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2ltdWxhdG9yX29yYWNsZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUwsWUFBWSxHQUliLE1BQU0sc0JBQXNCLENBQUM7QUFVOUIsT0FBTyxFQUFxQyxvQ0FBb0MsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2hILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBcUIsdUJBQXVCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQU05RTs7R0FFRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBQzFCLFlBQ1Usa0JBQXNDLEVBQ3RDLEVBQWUsRUFDZixRQUFrQixFQUNsQixTQUFvQixFQUNwQixNQUFNLGlCQUFpQixDQUFDLDRCQUE0QixDQUFDO1FBSnJELHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixRQUFHLEdBQUgsR0FBRyxDQUFrRDtJQUM1RCxDQUFDO0lBRUosS0FBSyxDQUFDLG1CQUFtQixDQUFDLGNBQTRCLEVBQUUsZUFBNkI7UUFDbkYsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBRSxDQUFDLFNBQVMsQ0FBQztRQUN2RixNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM5RSxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsMkJBQTJCLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDckcsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUs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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/pxe",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.30.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": "./dest/index.js",
|
|
6
6
|
"bin": "./dest/bin/index.js",
|
|
@@ -33,17 +33,17 @@
|
|
|
33
33
|
"workerThreads": true
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@aztec/circuit-types": "0.
|
|
37
|
-
"@aztec/circuits.js": "0.
|
|
38
|
-
"@aztec/ethereum": "0.
|
|
39
|
-
"@aztec/foundation": "0.
|
|
40
|
-
"@aztec/key-store": "0.
|
|
41
|
-
"@aztec/kv-store": "0.
|
|
42
|
-
"@aztec/noir-compiler": "0.
|
|
43
|
-
"@aztec/noir-protocol-circuits-types": "0.
|
|
44
|
-
"@aztec/protocol-contracts": "0.
|
|
45
|
-
"@aztec/simulator": "0.
|
|
46
|
-
"@aztec/types": "0.
|
|
36
|
+
"@aztec/circuit-types": "0.30.0",
|
|
37
|
+
"@aztec/circuits.js": "0.30.0",
|
|
38
|
+
"@aztec/ethereum": "0.30.0",
|
|
39
|
+
"@aztec/foundation": "0.30.0",
|
|
40
|
+
"@aztec/key-store": "0.30.0",
|
|
41
|
+
"@aztec/kv-store": "0.30.0",
|
|
42
|
+
"@aztec/noir-compiler": "0.30.0",
|
|
43
|
+
"@aztec/noir-protocol-circuits-types": "0.30.0",
|
|
44
|
+
"@aztec/protocol-contracts": "0.30.0",
|
|
45
|
+
"@aztec/simulator": "0.30.0",
|
|
46
|
+
"@aztec/types": "0.30.0",
|
|
47
47
|
"koa": "^2.14.2",
|
|
48
48
|
"koa-router": "^12.0.0",
|
|
49
49
|
"lodash.omit": "^4.5.0",
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AztecAddress, MembershipWitness, VK_TREE_HEIGHT } from '@aztec/circuits.js';
|
|
2
2
|
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
} from '@aztec/
|
|
9
|
-
import { FunctionDebugMetadata, FunctionSelector } from '@aztec/foundation/abi';
|
|
3
|
+
ContractArtifact,
|
|
4
|
+
FunctionArtifact,
|
|
5
|
+
FunctionDebugMetadata,
|
|
6
|
+
FunctionSelector,
|
|
7
|
+
getFunctionDebugMetadata,
|
|
8
|
+
} from '@aztec/foundation/abi';
|
|
10
9
|
import { Fr } from '@aztec/foundation/fields';
|
|
11
10
|
import { ContractClassNotFoundError, ContractNotFoundError } from '@aztec/simulator';
|
|
12
11
|
import { ContractClass, ContractInstance } from '@aztec/types/contracts';
|
|
@@ -23,27 +22,34 @@ import { PrivateFunctionsTree } from './private_functions_tree.js';
|
|
|
23
22
|
* the required information and facilitate cryptographic proof generation.
|
|
24
23
|
*/
|
|
25
24
|
export class ContractDataOracle {
|
|
26
|
-
private
|
|
25
|
+
/** Map from contract class id to private function tree. */
|
|
26
|
+
private contractClasses: Map<string, PrivateFunctionsTree> = new Map();
|
|
27
|
+
/** Map from address to contract instance. */
|
|
28
|
+
private contractInstances: Map<string, ContractInstance> = new Map();
|
|
27
29
|
|
|
28
|
-
constructor(private db:
|
|
30
|
+
constructor(private db: ContractArtifactDatabase & ContractInstanceDatabase) {}
|
|
29
31
|
|
|
30
32
|
/** Returns a contract instance for a given address. Throws if not found. */
|
|
31
33
|
public async getContractInstance(contractAddress: AztecAddress): Promise<ContractInstance> {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
34
|
+
if (!this.contractInstances.has(contractAddress.toString())) {
|
|
35
|
+
const instance = await this.db.getContractInstance(contractAddress);
|
|
36
|
+
if (!instance) {
|
|
37
|
+
throw new ContractNotFoundError(contractAddress.toString());
|
|
38
|
+
}
|
|
39
|
+
this.contractInstances.set(contractAddress.toString(), instance);
|
|
35
40
|
}
|
|
36
|
-
return
|
|
41
|
+
return this.contractInstances.get(contractAddress.toString())!;
|
|
37
42
|
}
|
|
38
43
|
|
|
39
|
-
/** Returns a contract class for a given id. Throws if not found. */
|
|
44
|
+
/** Returns a contract class for a given class id. Throws if not found. */
|
|
40
45
|
public async getContractClass(contractClassId: Fr): Promise<ContractClass> {
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
46
|
+
const tree = await this.getTreeForClassId(contractClassId);
|
|
47
|
+
return tree.getContractClass();
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
public async getContractArtifact(contractClassId: Fr): Promise<ContractArtifact> {
|
|
51
|
+
const tree = await this.getTreeForClassId(contractClassId);
|
|
52
|
+
return tree.getArtifact();
|
|
47
53
|
}
|
|
48
54
|
|
|
49
55
|
/**
|
|
@@ -56,8 +62,8 @@ export class ContractDataOracle {
|
|
|
56
62
|
* @returns A Promise that resolves to the portal contract address.
|
|
57
63
|
*/
|
|
58
64
|
public async getPortalContractAddress(contractAddress: AztecAddress) {
|
|
59
|
-
const
|
|
60
|
-
return
|
|
65
|
+
const instance = await this.getContractInstance(contractAddress);
|
|
66
|
+
return instance.portalContractAddress;
|
|
61
67
|
}
|
|
62
68
|
|
|
63
69
|
/**
|
|
@@ -70,7 +76,7 @@ export class ContractDataOracle {
|
|
|
70
76
|
* @returns The corresponding function's artifact as an object.
|
|
71
77
|
*/
|
|
72
78
|
public async getFunctionArtifact(contractAddress: AztecAddress, selector: FunctionSelector) {
|
|
73
|
-
const tree = await this.
|
|
79
|
+
const tree = await this.getTreeForAddress(contractAddress);
|
|
74
80
|
return tree.getFunctionArtifact(selector);
|
|
75
81
|
}
|
|
76
82
|
|
|
@@ -86,9 +92,9 @@ export class ContractDataOracle {
|
|
|
86
92
|
public async getFunctionArtifactByName(
|
|
87
93
|
contractAddress: AztecAddress,
|
|
88
94
|
functionName: string,
|
|
89
|
-
): Promise<
|
|
90
|
-
const tree = await this.
|
|
91
|
-
return tree.
|
|
95
|
+
): Promise<FunctionArtifact | undefined> {
|
|
96
|
+
const tree = await this.getTreeForAddress(contractAddress);
|
|
97
|
+
return tree.getArtifact().functions.find(f => f.name === functionName);
|
|
92
98
|
}
|
|
93
99
|
|
|
94
100
|
/**
|
|
@@ -105,14 +111,9 @@ export class ContractDataOracle {
|
|
|
105
111
|
contractAddress: AztecAddress,
|
|
106
112
|
selector: FunctionSelector,
|
|
107
113
|
): Promise<FunctionDebugMetadata | undefined> {
|
|
108
|
-
const tree = await this.
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
if (!functionArtifact) {
|
|
112
|
-
return undefined;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
return tree.contract.getFunctionDebugMetadataByName(functionArtifact.name);
|
|
114
|
+
const tree = await this.getTreeForAddress(contractAddress);
|
|
115
|
+
const artifact = tree.getFunctionArtifact(selector);
|
|
116
|
+
return getFunctionDebugMetadata(tree.getArtifact(), artifact);
|
|
116
117
|
}
|
|
117
118
|
|
|
118
119
|
/**
|
|
@@ -126,7 +127,7 @@ export class ContractDataOracle {
|
|
|
126
127
|
* @throws Error if the contract address is unknown or not found.
|
|
127
128
|
*/
|
|
128
129
|
public async getBytecode(contractAddress: AztecAddress, selector: FunctionSelector) {
|
|
129
|
-
const tree = await this.
|
|
130
|
+
const tree = await this.getTreeForAddress(contractAddress);
|
|
130
131
|
return tree.getBytecode(selector);
|
|
131
132
|
}
|
|
132
133
|
|
|
@@ -140,7 +141,7 @@ export class ContractDataOracle {
|
|
|
140
141
|
* @returns A promise that resolves with the MembershipWitness instance for the specified contract's function.
|
|
141
142
|
*/
|
|
142
143
|
public async getFunctionMembershipWitness(contractAddress: AztecAddress, selector: FunctionSelector) {
|
|
143
|
-
const tree = await this.
|
|
144
|
+
const tree = await this.getTreeForAddress(contractAddress);
|
|
144
145
|
return tree.getFunctionMembershipWitness(selector);
|
|
145
146
|
}
|
|
146
147
|
|
|
@@ -158,6 +159,28 @@ export class ContractDataOracle {
|
|
|
158
159
|
return await Promise.resolve(MembershipWitness.random(VK_TREE_HEIGHT));
|
|
159
160
|
}
|
|
160
161
|
|
|
162
|
+
/**
|
|
163
|
+
* Retrieve or create a ContractTree instance based on the provided class id.
|
|
164
|
+
* If an existing tree with the same class id is found in the cache, it will be returned.
|
|
165
|
+
* Otherwise, a new ContractTree instance will be created using the contract data from the database
|
|
166
|
+
* and added to the cache before returning.
|
|
167
|
+
*
|
|
168
|
+
* @param classId - The class id of the contract for which the ContractTree is required.
|
|
169
|
+
* @returns A ContractTree instance associated with the specified contract address.
|
|
170
|
+
* @throws An Error if the contract is not found in the ContractDatabase.
|
|
171
|
+
*/
|
|
172
|
+
private async getTreeForClassId(classId: Fr): Promise<PrivateFunctionsTree> {
|
|
173
|
+
if (!this.contractClasses.has(classId.toString())) {
|
|
174
|
+
const artifact = await this.db.getContractArtifact(classId);
|
|
175
|
+
if (!artifact) {
|
|
176
|
+
throw new ContractClassNotFoundError(classId.toString());
|
|
177
|
+
}
|
|
178
|
+
const tree = new PrivateFunctionsTree(artifact);
|
|
179
|
+
this.contractClasses.set(classId.toString(), tree);
|
|
180
|
+
}
|
|
181
|
+
return this.contractClasses.get(classId.toString())!;
|
|
182
|
+
}
|
|
183
|
+
|
|
161
184
|
/**
|
|
162
185
|
* Retrieve or create a ContractTree instance based on the provided AztecAddress.
|
|
163
186
|
* If an existing tree with the same contract address is found in the cache, it will be returned.
|
|
@@ -168,18 +191,8 @@ export class ContractDataOracle {
|
|
|
168
191
|
* @returns A ContractTree instance associated with the specified contract address.
|
|
169
192
|
* @throws An Error if the contract is not found in the ContractDatabase.
|
|
170
193
|
*/
|
|
171
|
-
private async
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
if (!tree) {
|
|
175
|
-
const contract = await this.db.getContract(contractAddress);
|
|
176
|
-
if (!contract) {
|
|
177
|
-
throw new ContractNotFoundError(contractAddress.toString());
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
tree = new PrivateFunctionsTree(contract);
|
|
181
|
-
this.trees.push(tree);
|
|
182
|
-
}
|
|
183
|
-
return tree;
|
|
194
|
+
private async getTreeForAddress(contractAddress: AztecAddress): Promise<PrivateFunctionsTree> {
|
|
195
|
+
const instance = await this.getContractInstance(contractAddress);
|
|
196
|
+
return this.getTreeForClassId(instance.contractClassId);
|
|
184
197
|
}
|
|
185
198
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { ContractDao } from '@aztec/circuit-types';
|
|
2
1
|
import {
|
|
3
2
|
FUNCTION_TREE_HEIGHT,
|
|
4
3
|
MembershipWitness,
|
|
@@ -7,7 +6,7 @@ import {
|
|
|
7
6
|
getContractClassFromArtifact,
|
|
8
7
|
} from '@aztec/circuits.js';
|
|
9
8
|
import { MerkleTree } from '@aztec/circuits.js/merkle';
|
|
10
|
-
import { FunctionSelector } from '@aztec/foundation/abi';
|
|
9
|
+
import { ContractArtifact, FunctionSelector } from '@aztec/foundation/abi';
|
|
11
10
|
import { Fr } from '@aztec/foundation/fields';
|
|
12
11
|
import { assertLength } from '@aztec/foundation/serialize';
|
|
13
12
|
import { ContractClassWithId } from '@aztec/types/contracts';
|
|
@@ -20,15 +19,11 @@ import { ContractClassWithId } from '@aztec/types/contracts';
|
|
|
20
19
|
*/
|
|
21
20
|
export class PrivateFunctionsTree {
|
|
22
21
|
private tree?: MerkleTree;
|
|
23
|
-
private contractClass
|
|
22
|
+
private contractClass: ContractClassWithId;
|
|
24
23
|
|
|
25
|
-
constructor(
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
* TODO(@spalladino) Replace with contract class sourced from db.
|
|
29
|
-
*/
|
|
30
|
-
public readonly contract: ContractDao,
|
|
31
|
-
) {}
|
|
24
|
+
constructor(private readonly artifact: ContractArtifact) {
|
|
25
|
+
this.contractClass = getContractClassFromArtifact(artifact);
|
|
26
|
+
}
|
|
32
27
|
|
|
33
28
|
/**
|
|
34
29
|
* Retrieve the artifact of a given function.
|
|
@@ -39,12 +34,10 @@ export class PrivateFunctionsTree {
|
|
|
39
34
|
* @returns The artifact object containing relevant information about the targeted function.
|
|
40
35
|
*/
|
|
41
36
|
public getFunctionArtifact(selector: FunctionSelector) {
|
|
42
|
-
const artifact = this.
|
|
37
|
+
const artifact = this.artifact.functions.find(f => selector.equals(f.name, f.parameters));
|
|
43
38
|
if (!artifact) {
|
|
44
39
|
throw new Error(
|
|
45
|
-
`Unknown function. Selector ${selector.toString()} not found in the artifact
|
|
46
|
-
.map(f => `${f.name} (${f.selector.toString()})`)
|
|
47
|
-
.join(', ')}`,
|
|
40
|
+
`Unknown function. Selector ${selector.toString()} not found in the artifact with class ${this.getContractClassId().toString()}.`,
|
|
48
41
|
);
|
|
49
42
|
}
|
|
50
43
|
return artifact;
|
|
@@ -75,12 +68,14 @@ export class PrivateFunctionsTree {
|
|
|
75
68
|
|
|
76
69
|
/** Returns the contract class object. */
|
|
77
70
|
public getContractClass() {
|
|
78
|
-
if (!this.contractClass) {
|
|
79
|
-
this.contractClass = getContractClassFromArtifact(this.contract);
|
|
80
|
-
}
|
|
81
71
|
return this.contractClass;
|
|
82
72
|
}
|
|
83
73
|
|
|
74
|
+
/** Returns the contract artifact. */
|
|
75
|
+
public getArtifact() {
|
|
76
|
+
return this.artifact;
|
|
77
|
+
}
|
|
78
|
+
|
|
84
79
|
/**
|
|
85
80
|
* Returns the contract class identifier for the given artifact.
|
|
86
81
|
*/
|
|
@@ -15,4 +15,7 @@ export interface ContractInstanceDatabase {
|
|
|
15
15
|
* @param address - Address of the contract.
|
|
16
16
|
*/
|
|
17
17
|
getContractInstance(address: AztecAddress): Promise<ContractInstanceWithAddress | undefined>;
|
|
18
|
+
|
|
19
|
+
/** Returns the addresses all contract instances registered in the DB. */
|
|
20
|
+
getContractsAddresses(): Promise<AztecAddress[]>;
|
|
18
21
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { MerkleTreeId, NoteFilter, NoteStatus, PublicKey } from '@aztec/circuit-types';
|
|
2
2
|
import { AztecAddress, CompleteAddress, Header } from '@aztec/circuits.js';
|
|
3
3
|
import { ContractArtifact } from '@aztec/foundation/abi';
|
|
4
4
|
import { toBufferBE } from '@aztec/foundation/bigint-buffer';
|
|
@@ -20,7 +20,6 @@ export class KVPxeDatabase implements PxeDatabase {
|
|
|
20
20
|
#addressIndex: AztecMap<string, number>;
|
|
21
21
|
#authWitnesses: AztecMap<string, Buffer[]>;
|
|
22
22
|
#capsules: AztecArray<Buffer[]>;
|
|
23
|
-
#contracts: AztecMap<string, Buffer>;
|
|
24
23
|
#notes: AztecMap<string, Buffer>;
|
|
25
24
|
#nullifiedNotes: AztecMap<string, Buffer>;
|
|
26
25
|
#nullifierToNoteId: AztecMap<string, string>;
|
|
@@ -47,7 +46,6 @@ export class KVPxeDatabase implements PxeDatabase {
|
|
|
47
46
|
|
|
48
47
|
this.#authWitnesses = db.openMap('auth_witnesses');
|
|
49
48
|
this.#capsules = db.openArray('capsules');
|
|
50
|
-
this.#contracts = db.openMap('contracts');
|
|
51
49
|
|
|
52
50
|
this.#contractArtifacts = db.openMap('contract_artifacts');
|
|
53
51
|
this.#contractInstances = db.openMap('contracts_instances');
|
|
@@ -73,11 +71,22 @@ export class KVPxeDatabase implements PxeDatabase {
|
|
|
73
71
|
this.#deferredNotesByContract = db.openMultiMap('deferred_notes_by_contract');
|
|
74
72
|
}
|
|
75
73
|
|
|
74
|
+
public async getContract(
|
|
75
|
+
address: AztecAddress,
|
|
76
|
+
): Promise<(ContractInstanceWithAddress & ContractArtifact) | undefined> {
|
|
77
|
+
const instance = await this.getContractInstance(address);
|
|
78
|
+
const artifact = instance && (await this.getContractArtifact(instance?.contractClassId));
|
|
79
|
+
if (!instance || !artifact) {
|
|
80
|
+
return undefined;
|
|
81
|
+
}
|
|
82
|
+
return { ...instance, ...artifact };
|
|
83
|
+
}
|
|
84
|
+
|
|
76
85
|
public async addContractArtifact(id: Fr, contract: ContractArtifact): Promise<void> {
|
|
77
86
|
await this.#contractArtifacts.set(id.toString(), contractArtifactToBuffer(contract));
|
|
78
87
|
}
|
|
79
88
|
|
|
80
|
-
getContractArtifact(id: Fr): Promise<ContractArtifact | undefined> {
|
|
89
|
+
public getContractArtifact(id: Fr): Promise<ContractArtifact | undefined> {
|
|
81
90
|
const contract = this.#contractArtifacts.get(id.toString());
|
|
82
91
|
// TODO(@spalladino): AztecMap lies and returns Uint8Arrays instead of Buffers, hence the extra Buffer.from.
|
|
83
92
|
return Promise.resolve(contract && contractArtifactFromBuffer(Buffer.from(contract)));
|
|
@@ -95,6 +104,10 @@ export class KVPxeDatabase implements PxeDatabase {
|
|
|
95
104
|
return Promise.resolve(contract && SerializableContractInstance.fromBuffer(contract).withAddress(address));
|
|
96
105
|
}
|
|
97
106
|
|
|
107
|
+
getContractsAddresses(): Promise<AztecAddress[]> {
|
|
108
|
+
return Promise.resolve(Array.from(this.#contractInstances.keys()).map(AztecAddress.fromString));
|
|
109
|
+
}
|
|
110
|
+
|
|
98
111
|
async addAuthWitness(messageHash: Fr, witness: Fr[]): Promise<void> {
|
|
99
112
|
await this.#authWitnesses.set(
|
|
100
113
|
messageHash.toString(),
|
|
@@ -393,17 +406,4 @@ export class KVPxeDatabase implements PxeDatabase {
|
|
|
393
406
|
|
|
394
407
|
return notesSize + treeRootsSize + authWitsSize + addressesSize;
|
|
395
408
|
}
|
|
396
|
-
|
|
397
|
-
async addContract(contract: ContractDao): Promise<void> {
|
|
398
|
-
await this.#contracts.set(contract.instance.address.toString(), contract.toBuffer());
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
getContract(address: AztecAddress): Promise<ContractDao | undefined> {
|
|
402
|
-
const contract = this.#contracts.get(address.toString());
|
|
403
|
-
return Promise.resolve(contract ? ContractDao.fromBuffer(contract) : undefined);
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
getContracts(): Promise<ContractDao[]> {
|
|
407
|
-
return Promise.resolve(Array.from(this.#contracts.values()).map(c => ContractDao.fromBuffer(c)));
|
|
408
|
-
}
|
|
409
409
|
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NoteFilter } from '@aztec/circuit-types';
|
|
2
2
|
import { CompleteAddress, Header, PublicKey } from '@aztec/circuits.js';
|
|
3
|
+
import { ContractArtifact } from '@aztec/foundation/abi';
|
|
3
4
|
import { AztecAddress } from '@aztec/foundation/aztec-address';
|
|
4
5
|
import { Fr } from '@aztec/foundation/fields';
|
|
6
|
+
import { ContractInstanceWithAddress } from '@aztec/types/contracts';
|
|
5
7
|
|
|
6
8
|
import { ContractArtifactDatabase } from './contracts/contract_artifact_db.js';
|
|
7
9
|
import { ContractInstanceDatabase } from './contracts/contract_instance_db.js';
|
|
@@ -12,7 +14,9 @@ import { NoteDao } from './note_dao.js';
|
|
|
12
14
|
* A database interface that provides methods for retrieving, adding, and removing transactional data related to Aztec
|
|
13
15
|
* addresses, storage slots, and nullifiers.
|
|
14
16
|
*/
|
|
15
|
-
export interface PxeDatabase extends
|
|
17
|
+
export interface PxeDatabase extends ContractArtifactDatabase, ContractInstanceDatabase {
|
|
18
|
+
getContract(address: AztecAddress): Promise<(ContractInstanceWithAddress & ContractArtifact) | undefined>;
|
|
19
|
+
|
|
16
20
|
/**
|
|
17
21
|
* Add a auth witness to the database.
|
|
18
22
|
* @param messageHash - The message hash.
|
|
@@ -185,12 +185,12 @@ export class KernelProver {
|
|
|
185
185
|
>(output.publicInputs.end.newNullifiers);
|
|
186
186
|
|
|
187
187
|
const readNoteHashHints = this.hintsBuilder.getNoteHashReadRequestHints(
|
|
188
|
-
output.publicInputs.
|
|
188
|
+
output.publicInputs.validationRequests.noteHashReadRequests,
|
|
189
189
|
sortedNoteHashes,
|
|
190
190
|
);
|
|
191
191
|
|
|
192
192
|
const nullifierReadRequestHints = await this.hintsBuilder.getNullifierReadRequestHints(
|
|
193
|
-
output.publicInputs.
|
|
193
|
+
output.publicInputs.validationRequests.nullifierReadRequests,
|
|
194
194
|
output.publicInputs.end.newNullifiers,
|
|
195
195
|
);
|
|
196
196
|
|
|
@@ -200,7 +200,7 @@ export class KernelProver {
|
|
|
200
200
|
);
|
|
201
201
|
|
|
202
202
|
const masterNullifierSecretKeys = await this.hintsBuilder.getMasterNullifierSecretKeys(
|
|
203
|
-
output.publicInputs.
|
|
203
|
+
output.publicInputs.validationRequests.nullifierKeyValidationRequests,
|
|
204
204
|
);
|
|
205
205
|
|
|
206
206
|
this.log.debug(
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AuthWitness,
|
|
3
3
|
CompleteAddress,
|
|
4
|
-
ContractData,
|
|
5
|
-
ExtendedContractData,
|
|
6
4
|
ExtendedNote,
|
|
7
5
|
ExtendedUnencryptedL2Log,
|
|
8
6
|
L2Block,
|
|
@@ -36,8 +34,6 @@ export function createPXERpcServer(pxeService: PXE): JsonRpcServer {
|
|
|
36
34
|
CompleteAddress,
|
|
37
35
|
AztecAddress,
|
|
38
36
|
TxExecutionRequest,
|
|
39
|
-
ContractData,
|
|
40
|
-
ExtendedContractData,
|
|
41
37
|
ExtendedUnencryptedL2Log,
|
|
42
38
|
FunctionSelector,
|
|
43
39
|
TxHash,
|
|
@@ -43,7 +43,13 @@ export async function createPXEService(
|
|
|
43
43
|
const db = new KVPxeDatabase(await initStoreForRollup(AztecLmdbStore.open(pxeDbPath), l1Contracts.rollupAddress));
|
|
44
44
|
|
|
45
45
|
const server = new PXEService(keyStore, aztecNode, db, config, logSuffix);
|
|
46
|
-
|
|
46
|
+
for (const contract of [
|
|
47
|
+
getCanonicalClassRegisterer(),
|
|
48
|
+
getCanonicalInstanceDeployer(),
|
|
49
|
+
getCanonicalGasToken(l1Contracts.gasPortalAddress),
|
|
50
|
+
]) {
|
|
51
|
+
await server.registerContract(contract);
|
|
52
|
+
}
|
|
47
53
|
|
|
48
54
|
await server.start();
|
|
49
55
|
return server;
|