@aztec/protocol-contracts 0.76.3 → 0.76.4-devnet-test
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/artifacts/AuthRegistry.json +453 -453
- package/artifacts/ContractClassRegisterer.json +409 -409
- package/artifacts/ContractInstanceDeployer.json +144 -144
- package/artifacts/FeeJuice.json +629 -629
- package/artifacts/MultiCallEntrypoint.json +41 -41
- package/artifacts/Router.json +376 -376
- package/dest/build_protocol_contract_tree.d.ts +2 -2
- package/dest/build_protocol_contract_tree.d.ts.map +1 -1
- package/dest/build_protocol_contract_tree.js +9 -5
- package/dest/protocol_contract_data.d.ts +1 -1
- package/dest/protocol_contract_data.d.ts.map +1 -1
- package/dest/protocol_contract_data.js +4 -4
- package/dest/protocol_contract_tree.d.ts +5 -2
- package/dest/protocol_contract_tree.d.ts.map +1 -1
- package/dest/protocol_contract_tree.js +19 -8
- package/package.json +4 -4
- package/src/build_protocol_contract_tree.ts +17 -7
- package/src/protocol_contract_data.ts +3 -3
- package/src/protocol_contract_tree.ts +26 -11
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { type AztecAddress, type Fr, type
|
|
1
|
+
import { type AztecAddress, type Fr, type IndexedMerkleTree, PROTOCOL_CONTRACT_TREE_HEIGHT, ProtocolContractLeafPreimage } from '@aztec/circuits.js';
|
|
2
2
|
export declare function buildProtocolContractTree(contracts: {
|
|
3
3
|
address: AztecAddress;
|
|
4
4
|
leaf: Fr;
|
|
5
|
-
}[]): Promise<
|
|
5
|
+
}[]): Promise<IndexedMerkleTree<ProtocolContractLeafPreimage, typeof PROTOCOL_CONTRACT_TREE_HEIGHT>>;
|
|
6
6
|
//# sourceMappingURL=build_protocol_contract_tree.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build_protocol_contract_tree.d.ts","sourceRoot":"","sources":["../src/build_protocol_contract_tree.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,EAAE,EACP,KAAK,
|
|
1
|
+
{"version":3,"file":"build_protocol_contract_tree.d.ts","sourceRoot":"","sources":["../src/build_protocol_contract_tree.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,EAAE,EACP,KAAK,iBAAiB,EAGtB,6BAA6B,EAC7B,4BAA4B,EAC7B,MAAM,oBAAoB,CAAC;AAG5B,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE;IAAE,OAAO,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,EAAE,CAAA;CAAE,EAAE,GAC/C,OAAO,CAAC,iBAAiB,CAAC,4BAA4B,EAAE,OAAO,6BAA6B,CAAC,CAAC,CAmBhG"}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IndexedMerkleTreeCalculator, MAX_PROTOCOL_CONTRACTS, PROTOCOL_CONTRACT_TREE_HEIGHT, ProtocolContractLeafPreimage, } from '@aztec/circuits.js';
|
|
2
2
|
import { poseidon2Hash } from '@aztec/foundation/crypto';
|
|
3
3
|
export async function buildProtocolContractTree(contracts) {
|
|
4
|
-
const
|
|
5
|
-
|
|
4
|
+
const hasher = {
|
|
5
|
+
hash: async (l, r) => (await poseidon2Hash([l, r])).toBuffer(),
|
|
6
|
+
hashInputs: async (i) => (await poseidon2Hash(i)).toBuffer(),
|
|
7
|
+
};
|
|
8
|
+
const calculator = await IndexedMerkleTreeCalculator.create(PROTOCOL_CONTRACT_TREE_HEIGHT, hasher, ProtocolContractLeafPreimage);
|
|
9
|
+
const leaves = new Array(MAX_PROTOCOL_CONTRACTS).fill(Buffer.alloc(32));
|
|
6
10
|
for (const contract of contracts) {
|
|
7
11
|
const index = contract.address.toField().toNumber();
|
|
8
|
-
leaves[index] = contract.leaf;
|
|
12
|
+
leaves[index] = contract.leaf.toBuffer();
|
|
9
13
|
}
|
|
10
14
|
return calculator.computeTree(leaves);
|
|
11
15
|
}
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRfcHJvdG9jb2xfY29udHJhY3RfdHJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9idWlsZF9wcm90b2NvbF9jb250cmFjdF90cmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJTCwyQkFBMkIsRUFDM0Isc0JBQXNCLEVBQ3RCLDZCQUE2QixFQUM3Qiw0QkFBNEIsR0FDN0IsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFekQsTUFBTSxDQUFDLEtBQUssVUFBVSx5QkFBeUIsQ0FDN0MsU0FBZ0Q7SUFFaEQsTUFBTSxNQUFNLEdBQUc7UUFDYixJQUFJLEVBQUUsS0FBSyxFQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtRQUM5RSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtLQUN2RSxDQUFDO0lBQ0YsTUFBTSxVQUFVLEdBQUcsTUFBTSwyQkFBMkIsQ0FBQyxNQUFNLENBQ3pELDZCQUE2QixFQUM3QixNQUFNLEVBQ04sNEJBQTRCLENBQzdCLENBQUM7SUFFRixNQUFNLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFeEUsS0FBSyxNQUFNLFFBQVEsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNqQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3BELE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRCxPQUFPLFVBQVUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDeEMsQ0FBQyJ9
|
|
@@ -3,7 +3,7 @@ export declare const protocolContractNames: readonly ["AuthRegistry", "ContractI
|
|
|
3
3
|
export type ProtocolContractName = (typeof protocolContractNames)[number];
|
|
4
4
|
export declare const ProtocolContractSalt: Record<ProtocolContractName, Fr>;
|
|
5
5
|
export declare const ProtocolContractAddress: Record<ProtocolContractName, AztecAddress>;
|
|
6
|
-
export declare const
|
|
6
|
+
export declare const ProtocolContractLeaves: {
|
|
7
7
|
AuthRegistry: Fr;
|
|
8
8
|
ContractInstanceDeployer: Fr;
|
|
9
9
|
ContractClassRegisterer: Fr;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol_contract_data.d.ts","sourceRoot":"","sources":["../src/protocol_contract_data.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAEtD,eAAO,MAAM,qBAAqB,+HAOxB,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,EAAE,EAAE,CAOjE,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,oBAAoB,EAAE,YAAY,CAO9E,CAAC;AAEF,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"protocol_contract_data.d.ts","sourceRoot":"","sources":["../src/protocol_contract_data.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAEtD,eAAO,MAAM,qBAAqB,+HAOxB,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,EAAE,EAAE,CAOjE,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,oBAAoB,EAAE,YAAY,CAO9E,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;CAOlC,CAAC;AAEF,eAAO,MAAM,wBAAwB,IAEpC,CAAC;AAEF,eAAO,MAAM,wCAAwC,IAEpD,CAAC;AACF,eAAO,MAAM,2CAA2C,IAEvD,CAAC;AACF,eAAO,MAAM,iDAAiD,IAE7D,CAAC;AACF,eAAO,MAAM,uCAAuC,IAEnD,CAAC"}
|
|
@@ -24,17 +24,17 @@ export const ProtocolContractAddress = {
|
|
|
24
24
|
FeeJuice: AztecAddress.fromBigInt(5n),
|
|
25
25
|
Router: AztecAddress.fromBigInt(6n),
|
|
26
26
|
};
|
|
27
|
-
export const
|
|
27
|
+
export const ProtocolContractLeaves = {
|
|
28
28
|
AuthRegistry: Fr.fromHexString('0x2e9b53693d0b765a2b3ba243a294d01280ad7cd80014562779c0e3fa7769c6c0'),
|
|
29
29
|
ContractInstanceDeployer: Fr.fromHexString('0x1665c5fbc1e58ba19c82f64c0402d29e8bbf94b1fde1a056280d081c15b0dac1'),
|
|
30
30
|
ContractClassRegisterer: Fr.fromHexString('0x1a11045c0895e4ba1d6bd55c52e7b493c301c079234354dd85f113903f0a8270'),
|
|
31
31
|
MultiCallEntrypoint: Fr.fromHexString('0x237a0bac451ebac796b96dbe27ccfda5230e8c962b391b84b0304c3775e9e0c0'),
|
|
32
|
-
FeeJuice: Fr.fromHexString('
|
|
32
|
+
FeeJuice: Fr.fromHexString('0x0bd5f44eb8429a4ea8ca193232e5ee576b300995ce5f88935aa03b0869fe13d5'),
|
|
33
33
|
Router: Fr.fromHexString('0x1281e0c1842212e79fa2249877524dda4f07f3d42cb502097302737bd3177550'),
|
|
34
34
|
};
|
|
35
|
-
export const protocolContractTreeRoot = Fr.fromHexString('
|
|
35
|
+
export const protocolContractTreeRoot = Fr.fromHexString('0x26d63d5bcf09b75cc6e123b591dd3e327347d30fe236061f7613ba8d7c5fdac6');
|
|
36
36
|
export const REGISTERER_CONTRACT_CLASS_REGISTERED_TAG = new Fr(11121068431693264234253912047066709627593769337094408533543930778360n);
|
|
37
37
|
export const REGISTERER_PRIVATE_FUNCTION_BROADCASTED_TAG = new Fr(2889881020989534926461066592611988634597302675057895885580456197069n);
|
|
38
38
|
export const REGISTERER_UNCONSTRAINED_FUNCTION_BROADCASTED_TAG = new Fr(24399338136397901754495080759185489776044879232766421623673792970137n);
|
|
39
39
|
export const DEPLOYER_CONTRACT_INSTANCE_DEPLOYED_TAG = Fr.fromHexString('0x2ec28b91a5f838506d6042915005ff55cf7a0a5f889a83b11faed33a31b486f2');
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdG9jb2xfY29udHJhY3RfZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm90b2NvbF9jb250cmFjdF9kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRFQUE0RTtBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXRELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHO0lBQ25DLGNBQWM7SUFDZCwwQkFBMEI7SUFDMUIseUJBQXlCO0lBQ3pCLHFCQUFxQjtJQUNyQixVQUFVO0lBQ1YsUUFBUTtDQUNBLENBQUM7QUFJWCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBcUM7SUFDcEUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2Qix3QkFBd0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkMsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLG1CQUFtQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5QixRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25CLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDbEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUErQztJQUNqRixZQUFZLEVBQUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7SUFDekMsd0JBQXdCLEVBQUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7SUFDckQsdUJBQXVCLEVBQUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7SUFDcEQsbUJBQW1CLEVBQUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7SUFDaEQsUUFBUSxFQUFFLFlBQVksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO0lBQ3JDLE1BQU0sRUFBRSxZQUFZLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztDQUNwQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUc7SUFDcEMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsb0VBQW9FLENBQUM7SUFDcEcsd0JBQXdCLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxvRUFBb0UsQ0FBQztJQUNoSCx1QkFBdUIsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLG9FQUFvRSxDQUFDO0lBQy9HLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsb0VBQW9FLENBQUM7SUFDM0csUUFBUSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsb0VBQW9FLENBQUM7SUFDaEcsTUFBTSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsb0VBQW9FLENBQUM7Q0FDL0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQ3RELG9FQUFvRSxDQUNyRSxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sd0NBQXdDLEdBQUcsSUFBSSxFQUFFLENBQzVELHFFQUFxRSxDQUN0RSxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sMkNBQTJDLEdBQUcsSUFBSSxFQUFFLENBQy9ELG9FQUFvRSxDQUNyRSxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0saURBQWlELEdBQUcsSUFBSSxFQUFFLENBQ3JFLHFFQUFxRSxDQUN0RSxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sdUNBQXVDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FDckUsb0VBQW9FLENBQ3JFLENBQUMifQ==
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
import { type AztecAddress,
|
|
2
|
-
export declare function
|
|
1
|
+
import { type AztecAddress, type ProtocolContractLeafPreimage } from '@aztec/circuits.js';
|
|
2
|
+
export declare function getProtocolContractLeafAndMembershipWitness(address: AztecAddress): Promise<{
|
|
3
|
+
lowLeaf: ProtocolContractLeafPreimage;
|
|
4
|
+
witness: import("@aztec/circuits.js").MembershipWitness<3>;
|
|
5
|
+
}>;
|
|
3
6
|
//# sourceMappingURL=protocol_contract_tree.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol_contract_tree.d.ts","sourceRoot":"","sources":["../src/protocol_contract_tree.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"protocol_contract_tree.d.ts","sourceRoot":"","sources":["../src/protocol_contract_tree.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EAGjB,KAAK,4BAA4B,EAClC,MAAM,oBAAoB,CAAC;AAsB5B,wBAAsB,2CAA2C,CAAC,OAAO,EAAE,YAAY;;;GActF"}
|
|
@@ -1,21 +1,32 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { assertLength } from '@aztec/foundation/serialize';
|
|
1
|
+
import { poseidon2Hash } from '@aztec/foundation/crypto';
|
|
3
2
|
import { buildProtocolContractTree } from './build_protocol_contract_tree.js';
|
|
4
|
-
import {
|
|
3
|
+
import { isProtocolContract } from './protocol_contract.js';
|
|
4
|
+
import { ProtocolContractAddress, ProtocolContractLeaves, protocolContractNames } from './protocol_contract_data.js';
|
|
5
5
|
let protocolContractTree;
|
|
6
6
|
async function getTree() {
|
|
7
7
|
if (!protocolContractTree) {
|
|
8
8
|
const leaves = protocolContractNames.map(name => ({
|
|
9
9
|
address: ProtocolContractAddress[name],
|
|
10
|
-
leaf:
|
|
10
|
+
leaf: ProtocolContractLeaves[name],
|
|
11
11
|
}));
|
|
12
12
|
protocolContractTree = await buildProtocolContractTree(leaves);
|
|
13
13
|
}
|
|
14
14
|
return protocolContractTree;
|
|
15
15
|
}
|
|
16
|
-
export async function
|
|
16
|
+
export async function getProtocolContractLeafAndMembershipWitness(address) {
|
|
17
17
|
const tree = await getTree();
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
let lowLeaf;
|
|
19
|
+
let witness;
|
|
20
|
+
if (isProtocolContract(address)) {
|
|
21
|
+
const index = address.toField().toNumber();
|
|
22
|
+
lowLeaf = tree.leafPreimages[index];
|
|
23
|
+
witness = tree.getMembershipWitness(index);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
lowLeaf = tree.getLowLeaf(address.toBigInt());
|
|
27
|
+
const hashed = (await poseidon2Hash(lowLeaf.toHashInputs())).toBuffer();
|
|
28
|
+
witness = tree.getMembershipWitness(hashed);
|
|
29
|
+
}
|
|
30
|
+
return { lowLeaf, witness };
|
|
20
31
|
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdG9jb2xfY29udHJhY3RfdHJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm90b2NvbF9jb250cmFjdF90cmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsc0JBQXNCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVySCxJQUFJLG9CQUVTLENBQUM7QUFFZCxLQUFLLFVBQVUsT0FBTztJQUNwQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUMxQixNQUFNLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hELE9BQU8sRUFBRSx1QkFBdUIsQ0FBQyxJQUFJLENBQUM7WUFDdEMsSUFBSSxFQUFFLHNCQUFzQixDQUFDLElBQUksQ0FBQztTQUNuQyxDQUFDLENBQUMsQ0FBQztRQUNKLG9CQUFvQixHQUFHLE1BQU0seUJBQXlCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUNELE9BQU8sb0JBQW9CLENBQUM7QUFDOUIsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsMkNBQTJDLENBQUMsT0FBcUI7SUFDckYsTUFBTSxJQUFJLEdBQUcsTUFBTSxPQUFPLEVBQUUsQ0FBQztJQUM3QixJQUFJLE9BQU8sQ0FBQztJQUNaLElBQUksT0FBTyxDQUFDO0lBQ1osSUFBSSxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMzQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxPQUFPLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDOUMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxNQUFNLGFBQWEsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3hFLE9BQU8sR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUNELE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDOUIsQ0FBQyJ9
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@aztec/protocol-contracts",
|
|
3
3
|
"homepage": "https://github.com/AztecProtocol/aztec-packages/tree/master/yarn-project/protocol-contracts",
|
|
4
4
|
"description": "Canonical Noir contracts for the Aztec Network",
|
|
5
|
-
"version": "0.76.
|
|
5
|
+
"version": "0.76.4-devnet-test",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"exports": {
|
|
8
8
|
".": "./dest/index.js",
|
|
@@ -69,9 +69,9 @@
|
|
|
69
69
|
]
|
|
70
70
|
},
|
|
71
71
|
"dependencies": {
|
|
72
|
-
"@aztec/circuits.js": "0.76.
|
|
73
|
-
"@aztec/foundation": "0.76.
|
|
74
|
-
"@aztec/types": "0.76.
|
|
72
|
+
"@aztec/circuits.js": "0.76.4-devnet-test",
|
|
73
|
+
"@aztec/foundation": "0.76.4-devnet-test",
|
|
74
|
+
"@aztec/types": "0.76.4-devnet-test",
|
|
75
75
|
"lodash.chunk": "^4.2.0",
|
|
76
76
|
"lodash.omit": "^4.5.0",
|
|
77
77
|
"tslib": "^2.4.0"
|
|
@@ -1,22 +1,32 @@
|
|
|
1
1
|
import {
|
|
2
2
|
type AztecAddress,
|
|
3
3
|
type Fr,
|
|
4
|
-
type
|
|
5
|
-
|
|
4
|
+
type IndexedMerkleTree,
|
|
5
|
+
IndexedMerkleTreeCalculator,
|
|
6
|
+
MAX_PROTOCOL_CONTRACTS,
|
|
6
7
|
PROTOCOL_CONTRACT_TREE_HEIGHT,
|
|
8
|
+
ProtocolContractLeafPreimage,
|
|
7
9
|
} from '@aztec/circuits.js';
|
|
8
10
|
import { poseidon2Hash } from '@aztec/foundation/crypto';
|
|
9
11
|
|
|
10
|
-
export async function buildProtocolContractTree(
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
export async function buildProtocolContractTree(
|
|
13
|
+
contracts: { address: AztecAddress; leaf: Fr }[],
|
|
14
|
+
): Promise<IndexedMerkleTree<ProtocolContractLeafPreimage, typeof PROTOCOL_CONTRACT_TREE_HEIGHT>> {
|
|
15
|
+
const hasher = {
|
|
16
|
+
hash: async (l: Buffer, r: Buffer) => (await poseidon2Hash([l, r])).toBuffer(),
|
|
17
|
+
hashInputs: async (i: Buffer[]) => (await poseidon2Hash(i)).toBuffer(),
|
|
18
|
+
};
|
|
19
|
+
const calculator = await IndexedMerkleTreeCalculator.create(
|
|
20
|
+
PROTOCOL_CONTRACT_TREE_HEIGHT,
|
|
21
|
+
hasher,
|
|
22
|
+
ProtocolContractLeafPreimage,
|
|
13
23
|
);
|
|
14
24
|
|
|
15
|
-
const leaves = new Array(
|
|
25
|
+
const leaves = new Array(MAX_PROTOCOL_CONTRACTS).fill(Buffer.alloc(32));
|
|
16
26
|
|
|
17
27
|
for (const contract of contracts) {
|
|
18
28
|
const index = contract.address.toField().toNumber();
|
|
19
|
-
leaves[index] = contract.leaf;
|
|
29
|
+
leaves[index] = contract.leaf.toBuffer();
|
|
20
30
|
}
|
|
21
31
|
|
|
22
32
|
return calculator.computeTree(leaves);
|
|
@@ -30,17 +30,17 @@ export const ProtocolContractAddress: Record<ProtocolContractName, AztecAddress>
|
|
|
30
30
|
Router: AztecAddress.fromBigInt(6n),
|
|
31
31
|
};
|
|
32
32
|
|
|
33
|
-
export const
|
|
33
|
+
export const ProtocolContractLeaves = {
|
|
34
34
|
AuthRegistry: Fr.fromHexString('0x2e9b53693d0b765a2b3ba243a294d01280ad7cd80014562779c0e3fa7769c6c0'),
|
|
35
35
|
ContractInstanceDeployer: Fr.fromHexString('0x1665c5fbc1e58ba19c82f64c0402d29e8bbf94b1fde1a056280d081c15b0dac1'),
|
|
36
36
|
ContractClassRegisterer: Fr.fromHexString('0x1a11045c0895e4ba1d6bd55c52e7b493c301c079234354dd85f113903f0a8270'),
|
|
37
37
|
MultiCallEntrypoint: Fr.fromHexString('0x237a0bac451ebac796b96dbe27ccfda5230e8c962b391b84b0304c3775e9e0c0'),
|
|
38
|
-
FeeJuice: Fr.fromHexString('
|
|
38
|
+
FeeJuice: Fr.fromHexString('0x0bd5f44eb8429a4ea8ca193232e5ee576b300995ce5f88935aa03b0869fe13d5'),
|
|
39
39
|
Router: Fr.fromHexString('0x1281e0c1842212e79fa2249877524dda4f07f3d42cb502097302737bd3177550'),
|
|
40
40
|
};
|
|
41
41
|
|
|
42
42
|
export const protocolContractTreeRoot = Fr.fromHexString(
|
|
43
|
-
'
|
|
43
|
+
'0x26d63d5bcf09b75cc6e123b591dd3e327347d30fe236061f7613ba8d7c5fdac6',
|
|
44
44
|
);
|
|
45
45
|
|
|
46
46
|
export const REGISTERER_CONTRACT_CLASS_REGISTERED_TAG = new Fr(
|
|
@@ -1,27 +1,42 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
type AztecAddress,
|
|
3
|
+
type IndexedMerkleTree,
|
|
4
|
+
type PROTOCOL_CONTRACT_TREE_HEIGHT,
|
|
5
|
+
type ProtocolContractLeafPreimage,
|
|
6
|
+
} from '@aztec/circuits.js';
|
|
7
|
+
import { poseidon2Hash } from '@aztec/foundation/crypto';
|
|
3
8
|
|
|
4
9
|
import { buildProtocolContractTree } from './build_protocol_contract_tree.js';
|
|
5
|
-
import {
|
|
10
|
+
import { isProtocolContract } from './protocol_contract.js';
|
|
11
|
+
import { ProtocolContractAddress, ProtocolContractLeaves, protocolContractNames } from './protocol_contract_data.js';
|
|
6
12
|
|
|
7
|
-
let protocolContractTree:
|
|
13
|
+
let protocolContractTree:
|
|
14
|
+
| IndexedMerkleTree<ProtocolContractLeafPreimage, typeof PROTOCOL_CONTRACT_TREE_HEIGHT>
|
|
15
|
+
| undefined;
|
|
8
16
|
|
|
9
17
|
async function getTree() {
|
|
10
18
|
if (!protocolContractTree) {
|
|
11
19
|
const leaves = protocolContractNames.map(name => ({
|
|
12
20
|
address: ProtocolContractAddress[name],
|
|
13
|
-
leaf:
|
|
21
|
+
leaf: ProtocolContractLeaves[name],
|
|
14
22
|
}));
|
|
15
23
|
protocolContractTree = await buildProtocolContractTree(leaves);
|
|
16
24
|
}
|
|
17
25
|
return protocolContractTree;
|
|
18
26
|
}
|
|
19
27
|
|
|
20
|
-
export async function
|
|
28
|
+
export async function getProtocolContractLeafAndMembershipWitness(address: AztecAddress) {
|
|
21
29
|
const tree = await getTree();
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
30
|
+
let lowLeaf;
|
|
31
|
+
let witness;
|
|
32
|
+
if (isProtocolContract(address)) {
|
|
33
|
+
const index = address.toField().toNumber();
|
|
34
|
+
lowLeaf = tree.leafPreimages[index];
|
|
35
|
+
witness = tree.getMembershipWitness(index);
|
|
36
|
+
} else {
|
|
37
|
+
lowLeaf = tree.getLowLeaf(address.toBigInt());
|
|
38
|
+
const hashed = (await poseidon2Hash(lowLeaf.toHashInputs())).toBuffer();
|
|
39
|
+
witness = tree.getMembershipWitness(hashed);
|
|
40
|
+
}
|
|
41
|
+
return { lowLeaf, witness };
|
|
27
42
|
}
|