@aztec/pxe 0.21.0 → 0.23.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/README.md +1 -1
- package/dest/contract_data_oracle/index.d.ts +10 -14
- package/dest/contract_data_oracle/index.d.ts.map +1 -1
- package/dest/contract_data_oracle/index.js +26 -23
- package/dest/contract_data_oracle/private_functions_tree.d.ts +71 -0
- package/dest/contract_data_oracle/private_functions_tree.d.ts.map +1 -0
- package/dest/contract_data_oracle/private_functions_tree.js +97 -0
- package/dest/contract_database/memory_contract_database.js +3 -3
- package/dest/database/kv_pxe_database.d.ts.map +1 -1
- package/dest/database/kv_pxe_database.js +68 -36
- package/dest/database/note_dao.d.ts +1 -1
- package/dest/database/note_dao.d.ts.map +1 -1
- package/dest/database/note_dao.js +1 -1
- package/dest/database/pxe_database_test_suite.d.ts.map +1 -1
- package/dest/database/pxe_database_test_suite.js +29 -7
- package/dest/kernel_oracle/index.d.ts +10 -1
- package/dest/kernel_oracle/index.d.ts.map +1 -1
- package/dest/kernel_oracle/index.js +13 -5
- package/dest/kernel_prover/kernel_prover.d.ts +1 -1
- package/dest/kernel_prover/kernel_prover.d.ts.map +1 -1
- package/dest/kernel_prover/kernel_prover.js +19 -6
- package/dest/kernel_prover/proving_data_oracle.d.ts +13 -12
- package/dest/kernel_prover/proving_data_oracle.d.ts.map +1 -1
- package/dest/note_processor/note_processor.d.ts +1 -1
- package/dest/note_processor/note_processor.d.ts.map +1 -1
- package/dest/note_processor/note_processor.js +2 -2
- package/dest/note_processor/produce_note_dao.d.ts +1 -1
- package/dest/note_processor/produce_note_dao.d.ts.map +1 -1
- package/dest/note_processor/produce_note_dao.js +1 -1
- package/dest/pxe_service/create_pxe_service.d.ts.map +1 -1
- package/dest/pxe_service/create_pxe_service.js +5 -4
- package/dest/pxe_service/pxe_service.d.ts +2 -0
- package/dest/pxe_service/pxe_service.d.ts.map +1 -1
- package/dest/pxe_service/pxe_service.js +19 -24
- package/dest/pxe_service/test/pxe_test_suite.js +2 -2
- package/dest/simulator/index.d.ts +3 -3
- package/dest/simulator/index.d.ts.map +1 -1
- package/dest/simulator/index.js +5 -5
- package/dest/simulator_oracle/index.d.ts +7 -7
- package/dest/simulator_oracle/index.d.ts.map +1 -1
- package/dest/simulator_oracle/index.js +27 -27
- package/package.json +11 -11
- package/dest/contract_tree/index.d.ts +0 -108
- package/dest/contract_tree/index.d.ts.map +0 -1
- package/dest/contract_tree/index.js +0 -176
|
@@ -57,7 +57,7 @@ export const pxeTestSuite = (testName, pxeSetup) => {
|
|
|
57
57
|
it('successfully adds a contract', async () => {
|
|
58
58
|
const contracts = [randomDeployedContract(), randomDeployedContract()];
|
|
59
59
|
await pxe.addContracts(contracts);
|
|
60
|
-
const expectedContractAddresses = contracts.map(contract => contract.
|
|
60
|
+
const expectedContractAddresses = contracts.map(contract => contract.instance.address);
|
|
61
61
|
const contractAddresses = await pxe.getContracts();
|
|
62
62
|
// check if all the contracts were returned
|
|
63
63
|
expect(contractAddresses).toEqual(expect.arrayContaining(expectedContractAddresses));
|
|
@@ -97,4 +97,4 @@ export const pxeTestSuite = (testName, pxeSetup) => {
|
|
|
97
97
|
// only call synchronizer.
|
|
98
98
|
});
|
|
99
99
|
};
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHhlX3Rlc3Rfc3VpdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHhlX3NlcnZpY2UvdGVzdC9weGVfdGVzdF9zdWl0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsb0JBQW9CLEVBRXBCLGtCQUFrQixFQUNsQixzQkFBc0IsR0FDdkIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRW5ELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLFFBQWdCLEVBQUUsUUFBNEIsRUFBRSxFQUFFO0lBQzdFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO1FBQ3RCLElBQUksR0FBUSxDQUFDO1FBRWIsU0FBUyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ25CLEdBQUcsR0FBRyxNQUFNLFFBQVEsRUFBRSxDQUFDO1FBQ3pCLENBQUMsRUFBRSxNQUFPLENBQUMsQ0FBQztRQUVaLEVBQUUsQ0FBQywrRUFBK0UsRUFBRSxLQUFLLElBQUksRUFBRTtZQUM3RixNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksUUFBUSxFQUFFLENBQUMsQ0FBQztZQUN2RCxNQUFNLGVBQWUsR0FBRyxlQUFlLENBQUMsK0JBQStCLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBRTlHLE1BQU0sR0FBRyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsZUFBZSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBRW5G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
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { AztecNode, KeyStore } from '@aztec/circuit-types';
|
|
2
|
+
import { AcirSimulator } from '@aztec/simulator';
|
|
3
3
|
import { ContractDataOracle } from '../contract_data_oracle/index.js';
|
|
4
4
|
import { PxeDatabase } from '../database/pxe_database.js';
|
|
5
5
|
/**
|
|
6
6
|
* Helper method to create an instance of the acir simulator.
|
|
7
7
|
*/
|
|
8
|
-
export declare function getAcirSimulator(db: PxeDatabase,
|
|
8
|
+
export declare function getAcirSimulator(db: PxeDatabase, aztecNode: AztecNode, keyStore: KeyStore, contractDataOracle?: ContractDataOracle): AcirSimulator;
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/simulator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/simulator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAG1D;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,WAAW,EACf,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAClB,kBAAkB,CAAC,EAAE,kBAAkB,iBASxC"}
|
package/dest/simulator/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { AcirSimulator } from '@aztec/
|
|
1
|
+
import { AcirSimulator } from '@aztec/simulator';
|
|
2
2
|
import { ContractDataOracle } from '../contract_data_oracle/index.js';
|
|
3
3
|
import { SimulatorOracle } from '../simulator_oracle/index.js';
|
|
4
4
|
/**
|
|
5
5
|
* Helper method to create an instance of the acir simulator.
|
|
6
6
|
*/
|
|
7
|
-
export function getAcirSimulator(db,
|
|
8
|
-
const simulatorOracle = new SimulatorOracle(contractDataOracle ?? new ContractDataOracle(db
|
|
9
|
-
return new AcirSimulator(simulatorOracle);
|
|
7
|
+
export function getAcirSimulator(db, aztecNode, keyStore, contractDataOracle) {
|
|
8
|
+
const simulatorOracle = new SimulatorOracle(contractDataOracle ?? new ContractDataOracle(db), db, keyStore, aztecNode);
|
|
9
|
+
return new AcirSimulator(simulatorOracle, aztecNode);
|
|
10
10
|
}
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2ltdWxhdG9yL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUV0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFL0Q7O0dBRUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLEVBQWUsRUFDZixTQUFvQixFQUNwQixRQUFrQixFQUNsQixrQkFBdUM7SUFFdkMsTUFBTSxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQ3pDLGtCQUFrQixJQUFJLElBQUksa0JBQWtCLENBQUMsRUFBRSxDQUFDLEVBQ2hELEVBQUUsRUFDRixRQUFRLEVBQ1IsU0FBUyxDQUNWLENBQUM7SUFDRixPQUFPLElBQUksYUFBYSxDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUN2RCxDQUFDIn0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { AztecAddress, CompleteAddress, EthAddress, Fr, FunctionSelector, Header } from '@aztec/circuits.js';
|
|
1
|
+
import { AztecNode, KeyStore, L2Block, MerkleTreeId, NoteStatus, NullifierMembershipWitness, PublicDataWitness } from '@aztec/circuit-types';
|
|
2
|
+
import { AztecAddress, CompleteAddress, EthAddress, Fr, FunctionSelector, Header, L1_TO_L2_MSG_TREE_HEIGHT } from '@aztec/circuits.js';
|
|
4
3
|
import { FunctionArtifactWithDebugMetadata } from '@aztec/foundation/abi';
|
|
4
|
+
import { DBOracle, KeyPair, MessageLoadOracleInputs } from '@aztec/simulator';
|
|
5
5
|
import { ContractDataOracle } from '../contract_data_oracle/index.js';
|
|
6
6
|
import { PxeDatabase } from '../database/index.js';
|
|
7
7
|
/**
|
|
@@ -11,14 +11,14 @@ export declare class SimulatorOracle implements DBOracle {
|
|
|
11
11
|
private contractDataOracle;
|
|
12
12
|
private db;
|
|
13
13
|
private keyStore;
|
|
14
|
-
private
|
|
14
|
+
private aztecNode;
|
|
15
15
|
private log;
|
|
16
|
-
constructor(contractDataOracle: ContractDataOracle, db: PxeDatabase, keyStore: KeyStore,
|
|
16
|
+
constructor(contractDataOracle: ContractDataOracle, db: PxeDatabase, keyStore: KeyStore, aztecNode: AztecNode, log?: import("@aztec/foundation/log").DebugLogger);
|
|
17
17
|
getNullifierKeyPair(accountAddress: AztecAddress, contractAddress: AztecAddress): Promise<KeyPair>;
|
|
18
18
|
getCompleteAddress(address: AztecAddress): Promise<CompleteAddress>;
|
|
19
19
|
getAuthWitness(messageHash: Fr): Promise<Fr[]>;
|
|
20
20
|
popCapsule(): Promise<Fr[]>;
|
|
21
|
-
getNotes(contractAddress: AztecAddress, storageSlot: Fr): Promise<{
|
|
21
|
+
getNotes(contractAddress: AztecAddress, storageSlot: Fr, status: NoteStatus): Promise<{
|
|
22
22
|
contractAddress: AztecAddress;
|
|
23
23
|
storageSlot: Fr;
|
|
24
24
|
nonce: Fr;
|
|
@@ -38,7 +38,7 @@ export declare class SimulatorOracle implements DBOracle {
|
|
|
38
38
|
* @returns A promise that resolves to the message data, a sibling path and the
|
|
39
39
|
* index of the message in the l1ToL2MessageTree
|
|
40
40
|
*/
|
|
41
|
-
getL1ToL2Message(msgKey: Fr): Promise<MessageLoadOracleInputs
|
|
41
|
+
getL1ToL2Message(msgKey: Fr): Promise<MessageLoadOracleInputs<typeof L1_TO_L2_MSG_TREE_HEIGHT>>;
|
|
42
42
|
/**
|
|
43
43
|
* Gets the index of a commitment in the note hash tree.
|
|
44
44
|
* @param commitment - The commitment.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/simulator_oracle/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/simulator_oracle/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { MerkleTreeId, } from '@aztec/circuit-types';
|
|
2
2
|
import { createDebugLogger } from '@aztec/foundation/log';
|
|
3
|
+
import { MessageLoadOracleInputs } from '@aztec/simulator';
|
|
3
4
|
/**
|
|
4
5
|
* A data oracle that provides information needed for simulating a transaction.
|
|
5
6
|
*/
|
|
6
7
|
export class SimulatorOracle {
|
|
7
|
-
constructor(contractDataOracle, db, keyStore,
|
|
8
|
+
constructor(contractDataOracle, db, keyStore, aztecNode, log = createDebugLogger('aztec:pxe:simulator_oracle')) {
|
|
8
9
|
this.contractDataOracle = contractDataOracle;
|
|
9
10
|
this.db = db;
|
|
10
11
|
this.keyStore = keyStore;
|
|
11
|
-
this.
|
|
12
|
+
this.aztecNode = aztecNode;
|
|
12
13
|
this.log = log;
|
|
13
14
|
}
|
|
14
15
|
async getNullifierKeyPair(accountAddress, contractAddress) {
|
|
@@ -38,8 +39,12 @@ export class SimulatorOracle {
|
|
|
38
39
|
}
|
|
39
40
|
return capsule;
|
|
40
41
|
}
|
|
41
|
-
async getNotes(contractAddress, storageSlot) {
|
|
42
|
-
const noteDaos = await this.db.getNotes({
|
|
42
|
+
async getNotes(contractAddress, storageSlot, status) {
|
|
43
|
+
const noteDaos = await this.db.getNotes({
|
|
44
|
+
contractAddress,
|
|
45
|
+
storageSlot,
|
|
46
|
+
status,
|
|
47
|
+
});
|
|
43
48
|
return noteDaos.map(({ contractAddress, storageSlot, nonce, note, innerNoteHash, siloedNullifier, index }) => ({
|
|
44
49
|
contractAddress,
|
|
45
50
|
storageSlot,
|
|
@@ -82,15 +87,11 @@ export class SimulatorOracle {
|
|
|
82
87
|
* index of the message in the l1ToL2MessageTree
|
|
83
88
|
*/
|
|
84
89
|
async getL1ToL2Message(msgKey) {
|
|
85
|
-
const messageAndIndex = await this.
|
|
86
|
-
const message = messageAndIndex.message
|
|
90
|
+
const messageAndIndex = await this.aztecNode.getL1ToL2MessageAndIndex(msgKey);
|
|
91
|
+
const message = messageAndIndex.message;
|
|
87
92
|
const index = messageAndIndex.index;
|
|
88
|
-
const siblingPath = await this.
|
|
89
|
-
return
|
|
90
|
-
message,
|
|
91
|
-
siblingPath: siblingPath.toFieldArray(),
|
|
92
|
-
index,
|
|
93
|
-
};
|
|
93
|
+
const siblingPath = await this.aztecNode.getL1ToL2MessageSiblingPath('latest', index);
|
|
94
|
+
return new MessageLoadOracleInputs(message, index, siblingPath);
|
|
94
95
|
}
|
|
95
96
|
/**
|
|
96
97
|
* Gets the index of a commitment in the note hash tree.
|
|
@@ -98,42 +99,41 @@ export class SimulatorOracle {
|
|
|
98
99
|
* @returns - The index of the commitment. Undefined if it does not exist in the tree.
|
|
99
100
|
*/
|
|
100
101
|
async getCommitmentIndex(commitment) {
|
|
101
|
-
return await this.
|
|
102
|
+
return await this.aztecNode.findLeafIndex('latest', MerkleTreeId.NOTE_HASH_TREE, commitment);
|
|
102
103
|
}
|
|
103
104
|
async getNullifierIndex(nullifier) {
|
|
104
|
-
return await this.
|
|
105
|
+
return await this.aztecNode.findLeafIndex('latest', MerkleTreeId.NULLIFIER_TREE, nullifier);
|
|
105
106
|
}
|
|
106
107
|
async findLeafIndex(blockNumber, treeId, leafValue) {
|
|
107
|
-
return await this.
|
|
108
|
+
return await this.aztecNode.findLeafIndex(blockNumber, treeId, leafValue);
|
|
108
109
|
}
|
|
109
110
|
async getSiblingPath(blockNumber, treeId, leafIndex) {
|
|
110
|
-
// @todo Doing a nasty workaround here because of https://github.com/AztecProtocol/aztec-packages/issues/3414
|
|
111
111
|
switch (treeId) {
|
|
112
112
|
case MerkleTreeId.CONTRACT_TREE:
|
|
113
|
-
return (await this.
|
|
113
|
+
return (await this.aztecNode.getContractSiblingPath(blockNumber, leafIndex)).toFields();
|
|
114
114
|
case MerkleTreeId.NULLIFIER_TREE:
|
|
115
|
-
return (await this.
|
|
115
|
+
return (await this.aztecNode.getNullifierSiblingPath(blockNumber, leafIndex)).toFields();
|
|
116
116
|
case MerkleTreeId.NOTE_HASH_TREE:
|
|
117
|
-
return (await this.
|
|
117
|
+
return (await this.aztecNode.getNoteHashSiblingPath(blockNumber, leafIndex)).toFields();
|
|
118
118
|
case MerkleTreeId.PUBLIC_DATA_TREE:
|
|
119
|
-
return (await this.
|
|
119
|
+
return (await this.aztecNode.getPublicDataSiblingPath(blockNumber, leafIndex)).toFields();
|
|
120
120
|
case MerkleTreeId.ARCHIVE:
|
|
121
|
-
return (await this.
|
|
121
|
+
return (await this.aztecNode.getArchiveSiblingPath(blockNumber, leafIndex)).toFields();
|
|
122
122
|
default:
|
|
123
123
|
throw new Error('Not implemented');
|
|
124
124
|
}
|
|
125
125
|
}
|
|
126
126
|
getNullifierMembershipWitness(blockNumber, nullifier) {
|
|
127
|
-
return this.
|
|
127
|
+
return this.aztecNode.getNullifierMembershipWitness(blockNumber, nullifier);
|
|
128
128
|
}
|
|
129
129
|
getLowNullifierMembershipWitness(blockNumber, nullifier) {
|
|
130
|
-
return this.
|
|
130
|
+
return this.aztecNode.getLowNullifierMembershipWitness(blockNumber, nullifier);
|
|
131
131
|
}
|
|
132
132
|
async getBlock(blockNumber) {
|
|
133
|
-
return await this.
|
|
133
|
+
return await this.aztecNode.getBlock(blockNumber);
|
|
134
134
|
}
|
|
135
135
|
async getPublicDataTreeWitness(blockNumber, leafSlot) {
|
|
136
|
-
return await this.
|
|
136
|
+
return await this.aztecNode.getPublicDataTreeWitness(blockNumber, leafSlot);
|
|
137
137
|
}
|
|
138
138
|
/**
|
|
139
139
|
* Retrieve the databases view of the Block Header object.
|
|
@@ -149,7 +149,7 @@ export class SimulatorOracle {
|
|
|
149
149
|
* @returns The block number.
|
|
150
150
|
*/
|
|
151
151
|
async getBlockNumber() {
|
|
152
|
-
return await this.
|
|
152
|
+
return await this.aztecNode.getBlockNumber();
|
|
153
153
|
}
|
|
154
154
|
}
|
|
155
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2ltdWxhdG9yX29yYWNsZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUwsWUFBWSxHQUliLE1BQU0sc0JBQXNCLENBQUM7QUFXOUIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFxQix1QkFBdUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSzlFOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGVBQWU7SUFDMUIsWUFDVSxrQkFBc0MsRUFDdEMsRUFBZSxFQUNmLFFBQWtCLEVBQ2xCLFNBQW9CLEVBQ3BCLE1BQU0saUJBQWlCLENBQUMsNEJBQTRCLENBQUM7UUFKckQsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLFFBQUcsR0FBSCxHQUFHLENBQWtEO0lBQzVELENBQUM7SUFFSixLQUFLLENBQUMsbUJBQW1CLENBQUMsY0FBNEIsRUFBRSxlQUE2QjtRQUNuRixNQUFNLGdCQUFnQixHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFFLENBQUMsU0FBUyxDQUFDO1FBQ3ZGLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzlFLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQywyQkFBMkIsQ0FBQyxnQkFBZ0IsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUNyRyxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxLQUFLLENBQUMsa0JBQWtCLENBQUMsT0FB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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.23.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": "./dest/index.js",
|
|
6
6
|
"bin": "./dest/bin/index.js",
|
|
@@ -33,16 +33,16 @@
|
|
|
33
33
|
"workerThreads": true
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@aztec/
|
|
37
|
-
"@aztec/
|
|
38
|
-
"@aztec/
|
|
39
|
-
"@aztec/
|
|
40
|
-
"@aztec/
|
|
41
|
-
"@aztec/
|
|
42
|
-
"@aztec/
|
|
43
|
-
"@aztec/noir-
|
|
44
|
-
"@aztec/
|
|
45
|
-
"@aztec/types": "0.
|
|
36
|
+
"@aztec/circuit-types": "0.23.0",
|
|
37
|
+
"@aztec/circuits.js": "0.23.0",
|
|
38
|
+
"@aztec/ethereum": "0.23.0",
|
|
39
|
+
"@aztec/foundation": "0.23.0",
|
|
40
|
+
"@aztec/key-store": "0.23.0",
|
|
41
|
+
"@aztec/kv-store": "0.23.0",
|
|
42
|
+
"@aztec/noir-compiler": "0.23.0",
|
|
43
|
+
"@aztec/noir-protocol-circuits": "0.23.0",
|
|
44
|
+
"@aztec/simulator": "0.23.0",
|
|
45
|
+
"@aztec/types": "0.23.0",
|
|
46
46
|
"koa": "^2.14.2",
|
|
47
47
|
"koa-router": "^12.0.0",
|
|
48
48
|
"lodash.omit": "^4.5.0",
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import { AztecNode, ContractDao, PublicKey, StateInfoProvider } from '@aztec/circuit-types';
|
|
2
|
-
import { EthAddress, FUNCTION_TREE_HEIGHT, Fr, MembershipWitness, NewContractConstructor } from '@aztec/circuits.js';
|
|
3
|
-
import { ContractArtifact, FunctionSelector } from '@aztec/foundation/abi';
|
|
4
|
-
/**
|
|
5
|
-
* The ContractTree class represents a Merkle tree of functions for a particular contract.
|
|
6
|
-
* It manages the construction of the function tree, computes its root, and generates membership witnesses
|
|
7
|
-
* for constrained functions. This class also enables lookup of specific function artifact using selectors.
|
|
8
|
-
* It is used in combination with the AztecNode to compute various data for executing private transactions.
|
|
9
|
-
*/
|
|
10
|
-
export declare class ContractTree {
|
|
11
|
-
/**
|
|
12
|
-
* The contract data object containing the artifact and contract address.
|
|
13
|
-
*/
|
|
14
|
-
readonly contract: ContractDao;
|
|
15
|
-
private stateInfoProvider;
|
|
16
|
-
/**
|
|
17
|
-
* Data associated with the contract constructor for a new contract.
|
|
18
|
-
*/
|
|
19
|
-
readonly newContractConstructor?: NewContractConstructor | undefined;
|
|
20
|
-
private functionLeaves?;
|
|
21
|
-
private functionTree?;
|
|
22
|
-
private functionTreeRoot?;
|
|
23
|
-
private contractIndex?;
|
|
24
|
-
constructor(
|
|
25
|
-
/**
|
|
26
|
-
* The contract data object containing the artifact and contract address.
|
|
27
|
-
*/
|
|
28
|
-
contract: ContractDao, stateInfoProvider: StateInfoProvider,
|
|
29
|
-
/**
|
|
30
|
-
* Data associated with the contract constructor for a new contract.
|
|
31
|
-
*/
|
|
32
|
-
newContractConstructor?: NewContractConstructor | undefined);
|
|
33
|
-
/**
|
|
34
|
-
* Create a new ContractTree instance from the provided contract artifact, constructor arguments, and related data.
|
|
35
|
-
* The function generates function leaves for constrained functions, computes the function tree root,
|
|
36
|
-
* and hashes the constructor's verification key. It then computes the contract address using the contract
|
|
37
|
-
* and portal contract addresses, contract address salt, and generated data. Finally, it returns a new
|
|
38
|
-
* ContractTree instance containing the contract data and computed values.
|
|
39
|
-
*
|
|
40
|
-
* @param artifact - The contract's build artifact containing the functions and their metadata.
|
|
41
|
-
* @param args - An array of Fr elements representing the constructor's arguments.
|
|
42
|
-
* @param portalContract - The Ethereum address of the portal smart contract.
|
|
43
|
-
* @param contractAddressSalt - An Fr element representing the salt used to compute the contract address.
|
|
44
|
-
* @param from - The public key of the contract deployer.
|
|
45
|
-
* @param node - An instance of the AztecNode class representing the current node.
|
|
46
|
-
* @returns A new ContractTree instance containing the contract data and computed values.
|
|
47
|
-
*/
|
|
48
|
-
static new(artifact: ContractArtifact, args: Fr[], portalContract: EthAddress, contractAddressSalt: Fr, from: PublicKey, node: AztecNode): ContractTree;
|
|
49
|
-
/**
|
|
50
|
-
* Retrieve the artifact of a given function.
|
|
51
|
-
* The function is identified by its selector, which represents a unique identifier for the function's signature.
|
|
52
|
-
* Throws an error if the function with the provided selector is not found in the contract.
|
|
53
|
-
*
|
|
54
|
-
* @param selector - The function selector.
|
|
55
|
-
* @returns The artifact object containing relevant information about the targeted function.
|
|
56
|
-
*/
|
|
57
|
-
getFunctionArtifact(selector: FunctionSelector): import("@aztec/circuits.js").ContractFunctionDao;
|
|
58
|
-
/**
|
|
59
|
-
* Retrieve the bytecode of a function in the contract by its function selector.
|
|
60
|
-
* The function selector is a unique identifier for each function in a contract.
|
|
61
|
-
* Throws an error if the function with the given selector is not found in the contract.
|
|
62
|
-
*
|
|
63
|
-
* @param selector - The selector of a function to get bytecode for.
|
|
64
|
-
* @returns The bytecode of the function as a string.
|
|
65
|
-
*/
|
|
66
|
-
getBytecode(selector: FunctionSelector): string;
|
|
67
|
-
/**
|
|
68
|
-
* Retrieves the contract membership witness for the current contract tree instance.
|
|
69
|
-
* The contract membership witness is a proof that demonstrates the existence of the contract
|
|
70
|
-
* in the global contract merkle tree. This proof contains the index of the contract's leaf
|
|
71
|
-
* in the tree and the sibling path needed to construct the root of the merkle tree.
|
|
72
|
-
* If the witness hasn't been previously computed, this function will request the contract node
|
|
73
|
-
* to find the contract's index and path in order to create the membership witness.
|
|
74
|
-
*
|
|
75
|
-
* @param blockNumber - The block number at which to get the data.
|
|
76
|
-
*
|
|
77
|
-
* @returns A Promise that resolves to the MembershipWitness object for the given contract tree.
|
|
78
|
-
*/
|
|
79
|
-
getContractMembershipWitness(blockNumber?: number | 'latest'): Promise<MembershipWitness<16>>;
|
|
80
|
-
/**
|
|
81
|
-
* Calculate and return the root of the function tree for the current contract.
|
|
82
|
-
* This root is a cryptographic commitment to the set of constrained functions within the contract,
|
|
83
|
-
* which is used in the Aztec node's proof system. The root will be cached after the first call.
|
|
84
|
-
*
|
|
85
|
-
* @returns A promise that resolves to the Fr (finite field element) representation of the function tree root.
|
|
86
|
-
*/
|
|
87
|
-
getFunctionTreeRoot(): Promise<Fr>;
|
|
88
|
-
/**
|
|
89
|
-
* Retrieve the membership witness of a function within a contract's function tree.
|
|
90
|
-
* A membership witness represents the position and authentication path of a target function
|
|
91
|
-
* in the Merkle tree of constrained functions. It is required to prove the existence of the
|
|
92
|
-
* function within the contract during execution.
|
|
93
|
-
*
|
|
94
|
-
* @param selector - The function selector.
|
|
95
|
-
* @returns A MembershipWitness instance representing the position and authentication path of the function in the function tree.
|
|
96
|
-
*/
|
|
97
|
-
getFunctionMembershipWitness(selector: FunctionSelector): Promise<MembershipWitness<typeof FUNCTION_TREE_HEIGHT>>;
|
|
98
|
-
/**
|
|
99
|
-
* Retrieve the function leaves for the contract tree.
|
|
100
|
-
* Function leaves are computed based on constrained functions present in the contract.
|
|
101
|
-
* It caches the computed function leaves and returns them if already calculated.
|
|
102
|
-
*
|
|
103
|
-
* @returns An array of Fr representing the function leaves.
|
|
104
|
-
*/
|
|
105
|
-
private getFunctionLeaves;
|
|
106
|
-
private getContractIndex;
|
|
107
|
-
}
|
|
108
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contract_tree/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAgB,SAAS,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC1G,OAAO,EAEL,UAAU,EACV,oBAAoB,EACpB,EAAE,EAEF,iBAAiB,EACjB,sBAAsB,EAOvB,MAAM,oBAAoB,CAAC;AAS5B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG3E;;;;;GAKG;AACH,qBAAa,YAAY;IAOrB;;OAEG;aACa,QAAQ,EAAE,WAAW;IACrC,OAAO,CAAC,iBAAiB;IACzB;;OAEG;aACa,sBAAsB,CAAC;IAdzC,OAAO,CAAC,cAAc,CAAC,CAAO;IAC9B,OAAO,CAAC,YAAY,CAAC,CAAO;IAC5B,OAAO,CAAC,gBAAgB,CAAC,CAAK;IAC9B,OAAO,CAAC,aAAa,CAAC,CAAS;;IAG7B;;OAEG;IACa,QAAQ,EAAE,WAAW,EAC7B,iBAAiB,EAAE,iBAAiB;IAC5C;;OAEG;IACa,sBAAsB,CAAC,oCAAwB;IAGjE;;;;;;;;;;;;;;OAcG;WACW,GAAG,CACf,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,EAAE,EAAE,EAAE,EACV,cAAc,EAAE,UAAU,EAC1B,mBAAmB,EAAE,EAAE,EACvB,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,SAAS;IA+BjB;;;;;;;OAOG;IACI,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB;IAYrD;;;;;;;OAOG;IACI,WAAW,CAAC,QAAQ,EAAE,gBAAgB;IAI7C;;;;;;;;;;;OAWG;IACU,4BAA4B,CAAC,WAAW,GAAE,MAAM,GAAG,QAAmB;IAWnF;;;;;;OAMG;IACI,mBAAmB;IAQ1B;;;;;;;;OAQG;IACI,4BAA4B,CACjC,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,iBAAiB,CAAC,OAAO,oBAAoB,CAAC,CAAC;IAqB1D;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;YAOX,gBAAgB;CAgB/B"}
|
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
import { ContractDao, MerkleTreeId } from '@aztec/circuit-types';
|
|
2
|
-
import { CONTRACT_TREE_HEIGHT, FUNCTION_TREE_HEIGHT, FunctionData, MembershipWitness, NewContractData, computeFunctionTreeData, generateFunctionLeaves, hashVKStr, isConstrained, isConstructor, } from '@aztec/circuits.js';
|
|
3
|
-
import { computeCompleteAddress, computeContractLeaf, computeFunctionTree, computeFunctionTreeRoot, computeVarArgsHash, hashConstructor, } from '@aztec/circuits.js/abis';
|
|
4
|
-
import { FunctionSelector } from '@aztec/foundation/abi';
|
|
5
|
-
import { assertLength } from '@aztec/foundation/serialize';
|
|
6
|
-
/**
|
|
7
|
-
* The ContractTree class represents a Merkle tree of functions for a particular contract.
|
|
8
|
-
* It manages the construction of the function tree, computes its root, and generates membership witnesses
|
|
9
|
-
* for constrained functions. This class also enables lookup of specific function artifact using selectors.
|
|
10
|
-
* It is used in combination with the AztecNode to compute various data for executing private transactions.
|
|
11
|
-
*/
|
|
12
|
-
export class ContractTree {
|
|
13
|
-
constructor(
|
|
14
|
-
/**
|
|
15
|
-
* The contract data object containing the artifact and contract address.
|
|
16
|
-
*/
|
|
17
|
-
contract, stateInfoProvider,
|
|
18
|
-
/**
|
|
19
|
-
* Data associated with the contract constructor for a new contract.
|
|
20
|
-
*/
|
|
21
|
-
newContractConstructor) {
|
|
22
|
-
this.contract = contract;
|
|
23
|
-
this.stateInfoProvider = stateInfoProvider;
|
|
24
|
-
this.newContractConstructor = newContractConstructor;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Create a new ContractTree instance from the provided contract artifact, constructor arguments, and related data.
|
|
28
|
-
* The function generates function leaves for constrained functions, computes the function tree root,
|
|
29
|
-
* and hashes the constructor's verification key. It then computes the contract address using the contract
|
|
30
|
-
* and portal contract addresses, contract address salt, and generated data. Finally, it returns a new
|
|
31
|
-
* ContractTree instance containing the contract data and computed values.
|
|
32
|
-
*
|
|
33
|
-
* @param artifact - The contract's build artifact containing the functions and their metadata.
|
|
34
|
-
* @param args - An array of Fr elements representing the constructor's arguments.
|
|
35
|
-
* @param portalContract - The Ethereum address of the portal smart contract.
|
|
36
|
-
* @param contractAddressSalt - An Fr element representing the salt used to compute the contract address.
|
|
37
|
-
* @param from - The public key of the contract deployer.
|
|
38
|
-
* @param node - An instance of the AztecNode class representing the current node.
|
|
39
|
-
* @returns A new ContractTree instance containing the contract data and computed values.
|
|
40
|
-
*/
|
|
41
|
-
static new(artifact, args, portalContract, contractAddressSalt, from, node) {
|
|
42
|
-
const constructorArtifact = artifact.functions.find(isConstructor);
|
|
43
|
-
if (!constructorArtifact) {
|
|
44
|
-
throw new Error('Constructor not found.');
|
|
45
|
-
}
|
|
46
|
-
if (!constructorArtifact.verificationKey) {
|
|
47
|
-
throw new Error('Missing verification key for the constructor.');
|
|
48
|
-
}
|
|
49
|
-
const functions = artifact.functions.map(f => ({
|
|
50
|
-
...f,
|
|
51
|
-
selector: FunctionSelector.fromNameAndParameters(f.name, f.parameters),
|
|
52
|
-
}));
|
|
53
|
-
const leaves = generateFunctionLeaves(functions);
|
|
54
|
-
const root = computeFunctionTreeRoot(leaves);
|
|
55
|
-
const functionData = FunctionData.fromAbi(constructorArtifact);
|
|
56
|
-
const vkHash = hashVKStr(constructorArtifact.verificationKey);
|
|
57
|
-
const argsHash = computeVarArgsHash(args);
|
|
58
|
-
const constructorHash = hashConstructor(functionData, argsHash, vkHash);
|
|
59
|
-
const completeAddress = computeCompleteAddress(from, contractAddressSalt, root, constructorHash);
|
|
60
|
-
const contractDao = new ContractDao(artifact, completeAddress, portalContract);
|
|
61
|
-
const NewContractConstructor = {
|
|
62
|
-
functionData,
|
|
63
|
-
vkHash,
|
|
64
|
-
};
|
|
65
|
-
return new ContractTree(contractDao, node, NewContractConstructor);
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Retrieve the artifact of a given function.
|
|
69
|
-
* The function is identified by its selector, which represents a unique identifier for the function's signature.
|
|
70
|
-
* Throws an error if the function with the provided selector is not found in the contract.
|
|
71
|
-
*
|
|
72
|
-
* @param selector - The function selector.
|
|
73
|
-
* @returns The artifact object containing relevant information about the targeted function.
|
|
74
|
-
*/
|
|
75
|
-
getFunctionArtifact(selector) {
|
|
76
|
-
const artifact = this.contract.functions.find(f => f.selector.equals(selector));
|
|
77
|
-
if (!artifact) {
|
|
78
|
-
throw new Error(`Unknown function. Selector ${selector.toString()} not found in the artifact of contract ${this.contract.completeAddress.address.toString()}. Expected one of: ${this.contract.functions
|
|
79
|
-
.map(f => f.selector.toString())
|
|
80
|
-
.join(', ')}`);
|
|
81
|
-
}
|
|
82
|
-
return artifact;
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Retrieve the bytecode of a function in the contract by its function selector.
|
|
86
|
-
* The function selector is a unique identifier for each function in a contract.
|
|
87
|
-
* Throws an error if the function with the given selector is not found in the contract.
|
|
88
|
-
*
|
|
89
|
-
* @param selector - The selector of a function to get bytecode for.
|
|
90
|
-
* @returns The bytecode of the function as a string.
|
|
91
|
-
*/
|
|
92
|
-
getBytecode(selector) {
|
|
93
|
-
return this.getFunctionArtifact(selector).bytecode;
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Retrieves the contract membership witness for the current contract tree instance.
|
|
97
|
-
* The contract membership witness is a proof that demonstrates the existence of the contract
|
|
98
|
-
* in the global contract merkle tree. This proof contains the index of the contract's leaf
|
|
99
|
-
* in the tree and the sibling path needed to construct the root of the merkle tree.
|
|
100
|
-
* If the witness hasn't been previously computed, this function will request the contract node
|
|
101
|
-
* to find the contract's index and path in order to create the membership witness.
|
|
102
|
-
*
|
|
103
|
-
* @param blockNumber - The block number at which to get the data.
|
|
104
|
-
*
|
|
105
|
-
* @returns A Promise that resolves to the MembershipWitness object for the given contract tree.
|
|
106
|
-
*/
|
|
107
|
-
async getContractMembershipWitness(blockNumber = 'latest') {
|
|
108
|
-
const index = await this.getContractIndex();
|
|
109
|
-
const siblingPath = await this.stateInfoProvider.getContractSiblingPath(blockNumber, index);
|
|
110
|
-
return new MembershipWitness(CONTRACT_TREE_HEIGHT, index, assertLength(siblingPath.toFieldArray(), CONTRACT_TREE_HEIGHT));
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Calculate and return the root of the function tree for the current contract.
|
|
114
|
-
* This root is a cryptographic commitment to the set of constrained functions within the contract,
|
|
115
|
-
* which is used in the Aztec node's proof system. The root will be cached after the first call.
|
|
116
|
-
*
|
|
117
|
-
* @returns A promise that resolves to the Fr (finite field element) representation of the function tree root.
|
|
118
|
-
*/
|
|
119
|
-
getFunctionTreeRoot() {
|
|
120
|
-
if (!this.functionTreeRoot) {
|
|
121
|
-
const leaves = this.getFunctionLeaves();
|
|
122
|
-
this.functionTreeRoot = computeFunctionTreeRoot(leaves);
|
|
123
|
-
}
|
|
124
|
-
return Promise.resolve(this.functionTreeRoot);
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Retrieve the membership witness of a function within a contract's function tree.
|
|
128
|
-
* A membership witness represents the position and authentication path of a target function
|
|
129
|
-
* in the Merkle tree of constrained functions. It is required to prove the existence of the
|
|
130
|
-
* function within the contract during execution.
|
|
131
|
-
*
|
|
132
|
-
* @param selector - The function selector.
|
|
133
|
-
* @returns A MembershipWitness instance representing the position and authentication path of the function in the function tree.
|
|
134
|
-
*/
|
|
135
|
-
getFunctionMembershipWitness(selector) {
|
|
136
|
-
const targetFunctions = this.contract.functions.filter(isConstrained);
|
|
137
|
-
const functionIndex = targetFunctions.findIndex(f => f.selector.equals(selector));
|
|
138
|
-
if (functionIndex < 0) {
|
|
139
|
-
return Promise.resolve(MembershipWitness.empty(FUNCTION_TREE_HEIGHT, 0n));
|
|
140
|
-
}
|
|
141
|
-
if (!this.functionTree) {
|
|
142
|
-
const leaves = this.getFunctionLeaves();
|
|
143
|
-
this.functionTree = computeFunctionTree(leaves);
|
|
144
|
-
}
|
|
145
|
-
const functionTreeData = computeFunctionTreeData(this.functionTree, functionIndex);
|
|
146
|
-
return Promise.resolve(new MembershipWitness(FUNCTION_TREE_HEIGHT, BigInt(functionIndex), assertLength(functionTreeData.siblingPath, FUNCTION_TREE_HEIGHT)));
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Retrieve the function leaves for the contract tree.
|
|
150
|
-
* Function leaves are computed based on constrained functions present in the contract.
|
|
151
|
-
* It caches the computed function leaves and returns them if already calculated.
|
|
152
|
-
*
|
|
153
|
-
* @returns An array of Fr representing the function leaves.
|
|
154
|
-
*/
|
|
155
|
-
getFunctionLeaves() {
|
|
156
|
-
if (!this.functionLeaves) {
|
|
157
|
-
this.functionLeaves = generateFunctionLeaves(this.contract.functions);
|
|
158
|
-
}
|
|
159
|
-
return this.functionLeaves;
|
|
160
|
-
}
|
|
161
|
-
async getContractIndex() {
|
|
162
|
-
if (this.contractIndex === undefined) {
|
|
163
|
-
const { completeAddress, portalContract } = this.contract;
|
|
164
|
-
const root = await this.getFunctionTreeRoot();
|
|
165
|
-
const newContractData = new NewContractData(completeAddress.address, portalContract, root);
|
|
166
|
-
const commitment = computeContractLeaf(newContractData);
|
|
167
|
-
this.contractIndex = await this.stateInfoProvider.findLeafIndex('latest', MerkleTreeId.CONTRACT_TREE, commitment);
|
|
168
|
-
if (this.contractIndex === undefined) {
|
|
169
|
-
throw new Error(`Failed to find contract at ${completeAddress.address} with portal ${portalContract} resulting in commitment ${commitment}.`);
|
|
170
|
-
}
|
|
171
|
-
return this.contractIndex;
|
|
172
|
-
}
|
|
173
|
-
return this.contractIndex;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhY3RfdHJlZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWEsV0FBVyxFQUFFLFlBQVksRUFBZ0MsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRyxPQUFPLEVBQ0wsb0JBQW9CLEVBRXBCLG9CQUFvQixFQUVwQixZQUFZLEVBQ1osaUJBQWlCLEVBRWpCLGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsc0JBQXNCLEVBQ3RCLFNBQVMsRUFDVCxhQUFhLEVBQ2IsYUFBYSxHQUNkLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLHVCQUF1QixFQUN2QixrQkFBa0IsRUFDbEIsZUFBZSxHQUNoQixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBb0IsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFM0Q7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQU12QjtJQUNFOztPQUVHO0lBQ2EsUUFBcUIsRUFDN0IsaUJBQW9DO0lBQzVDOztPQUVHO0lBQ2Esc0JBQStDO1FBTC9DLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDN0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUk1QiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXlCO0lBQzlELENBQUM7SUFFSjs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUNJLE1BQU0sQ0FBQyxHQUFHLENBQ2YsUUFBMEIsRUFDMUIsSUFBVSxFQUNWLGNBQTBCLEVBQzFCLG1CQUF1QixFQUN2QixJQUFlLEVBQ2YsSUFBZTtRQUVmLE1BQU0sbUJBQW1CLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbkUs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
|