@aztec/protocol-contracts 0.76.2 → 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.
@@ -1,6 +1,6 @@
1
- import { type AztecAddress, type Fr, type MerkleTree } from '@aztec/circuits.js';
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<MerkleTree>;
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,UAAU,EAGhB,MAAM,oBAAoB,CAAC;AAG5B,wBAAsB,yBAAyB,CAAC,SAAS,EAAE;IAAE,OAAO,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,EAAE,CAAA;CAAE,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAarH"}
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 { MerkleTreeCalculator, PROTOCOL_CONTRACT_TREE_HEIGHT, } from '@aztec/circuits.js';
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 calculator = await MerkleTreeCalculator.create(PROTOCOL_CONTRACT_TREE_HEIGHT, Buffer.alloc(32), async (a, b) => (await poseidon2Hash([a, b])).toBuffer());
5
- const leaves = new Array(2 ** PROTOCOL_CONTRACT_TREE_HEIGHT).fill(Buffer.alloc(32));
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRfcHJvdG9jb2xfY29udHJhY3RfdHJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9idWlsZF9wcm90b2NvbF9jb250cmFjdF90cmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJTCxvQkFBb0IsRUFDcEIsNkJBQTZCLEdBQzlCLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXpELE1BQU0sQ0FBQyxLQUFLLFVBQVUseUJBQXlCLENBQUMsU0FBZ0Q7SUFDOUYsTUFBTSxVQUFVLEdBQUcsTUFBTSxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsNkJBQTZCLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQ25ILENBQUMsTUFBTSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUN6QyxDQUFDO0lBRUYsTUFBTSxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxJQUFJLDZCQUE2QixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVwRixLQUFLLE1BQU0sUUFBUSxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDcEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQUVELE9BQU8sVUFBVSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN4QyxDQUFDIn0=
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 ProtocolContractLeaf: {
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,oBAAoB;;;;;;;CAOhC,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"}
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 ProtocolContractLeaf = {
27
+ export const ProtocolContractLeaves = {
28
28
  AuthRegistry: Fr.fromHexString('0x2e9b53693d0b765a2b3ba243a294d01280ad7cd80014562779c0e3fa7769c6c0'),
29
29
  ContractInstanceDeployer: Fr.fromHexString('0x1665c5fbc1e58ba19c82f64c0402d29e8bbf94b1fde1a056280d081c15b0dac1'),
30
- ContractClassRegisterer: Fr.fromHexString('0x080c61e07a84d2fa9fef16d18f1ae23523ec2007bbde4565b5ffe124fa6857df'),
30
+ ContractClassRegisterer: Fr.fromHexString('0x1a11045c0895e4ba1d6bd55c52e7b493c301c079234354dd85f113903f0a8270'),
31
31
  MultiCallEntrypoint: Fr.fromHexString('0x237a0bac451ebac796b96dbe27ccfda5230e8c962b391b84b0304c3775e9e0c0'),
32
- FeeJuice: Fr.fromHexString('0x2946115660107c3ca9bea1e486452595999c3677e7aaeaa9ca898e0fbba0051a'),
32
+ FeeJuice: Fr.fromHexString('0x0bd5f44eb8429a4ea8ca193232e5ee576b300995ce5f88935aa03b0869fe13d5'),
33
33
  Router: Fr.fromHexString('0x1281e0c1842212e79fa2249877524dda4f07f3d42cb502097302737bd3177550'),
34
34
  };
35
- export const protocolContractTreeRoot = Fr.fromHexString('0x0ba30a2a639e75c5de3e61f4c44f6fd5d83864861ec636b7ac99908f5425fc04');
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdG9jb2xfY29udHJhY3RfZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm90b2NvbF9jb250cmFjdF9kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRFQUE0RTtBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXRELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHO0lBQ25DLGNBQWM7SUFDZCwwQkFBMEI7SUFDMUIseUJBQXlCO0lBQ3pCLHFCQUFxQjtJQUNyQixVQUFVO0lBQ1YsUUFBUTtDQUNBLENBQUM7QUFJWCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBcUM7SUFDcEUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2Qix3QkFBd0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkMsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLG1CQUFtQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5QixRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25CLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDbEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUErQztJQUNqRixZQUFZLEVBQUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7SUFDekMsd0JBQXdCLEVBQUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7SUFDckQsdUJBQXVCLEVBQUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7SUFDcEQsbUJBQW1CLEVBQUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7SUFDaEQsUUFBUSxFQUFFLFlBQVksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO0lBQ3JDLE1BQU0sRUFBRSxZQUFZLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztDQUNwQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUc7SUFDbEMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsb0VBQW9FLENBQUM7SUFDcEcsd0JBQXdCLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxvRUFBb0UsQ0FBQztJQUNoSCx1QkFBdUIsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLG9FQUFvRSxDQUFDO0lBQy9HLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsb0VBQW9FLENBQUM7SUFDM0csUUFBUSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsb0VBQW9FLENBQUM7SUFDaEcsTUFBTSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsb0VBQW9FLENBQUM7Q0FDL0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQ3RELG9FQUFvRSxDQUNyRSxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sd0NBQXdDLEdBQUcsSUFBSSxFQUFFLENBQzVELHFFQUFxRSxDQUN0RSxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sMkNBQTJDLEdBQUcsSUFBSSxFQUFFLENBQy9ELG9FQUFvRSxDQUNyRSxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0saURBQWlELEdBQUcsSUFBSSxFQUFFLENBQ3JFLHFFQUFxRSxDQUN0RSxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sdUNBQXVDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FDckUsb0VBQW9FLENBQ3JFLENBQUMifQ==
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdG9jb2xfY29udHJhY3RfZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm90b2NvbF9jb250cmFjdF9kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRFQUE0RTtBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXRELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHO0lBQ25DLGNBQWM7SUFDZCwwQkFBMEI7SUFDMUIseUJBQXlCO0lBQ3pCLHFCQUFxQjtJQUNyQixVQUFVO0lBQ1YsUUFBUTtDQUNBLENBQUM7QUFJWCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBcUM7SUFDcEUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2Qix3QkFBd0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkMsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLG1CQUFtQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5QixRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25CLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7Q0FDbEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUErQztJQUNqRixZQUFZLEVBQUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7SUFDekMsd0JBQXdCLEVBQUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7SUFDckQsdUJBQXVCLEVBQUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7SUFDcEQsbUJBQW1CLEVBQUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7SUFDaEQsUUFBUSxFQUFFLFlBQVksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO0lBQ3JDLE1BQU0sRUFBRSxZQUFZLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztDQUNwQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUc7SUFDcEMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsb0VBQW9FLENBQUM7SUFDcEcsd0JBQXdCLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxvRUFBb0UsQ0FBQztJQUNoSCx1QkFBdUIsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLG9FQUFvRSxDQUFDO0lBQy9HLG1CQUFtQixFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsb0VBQW9FLENBQUM7SUFDM0csUUFBUSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsb0VBQW9FLENBQUM7SUFDaEcsTUFBTSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsb0VBQW9FLENBQUM7Q0FDL0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQ3RELG9FQUFvRSxDQUNyRSxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sd0NBQXdDLEdBQUcsSUFBSSxFQUFFLENBQzVELHFFQUFxRSxDQUN0RSxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sMkNBQTJDLEdBQUcsSUFBSSxFQUFFLENBQy9ELG9FQUFvRSxDQUNyRSxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0saURBQWlELEdBQUcsSUFBSSxFQUFFLENBQ3JFLHFFQUFxRSxDQUN0RSxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1BQU0sdUNBQXVDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FDckUsb0VBQW9FLENBQ3JFLENBQUMifQ==
@@ -1,3 +1,6 @@
1
- import { type AztecAddress, Fr } from '@aztec/circuits.js';
2
- export declare function getProtocolContractSiblingPath(address: AztecAddress): Promise<[Fr, Fr, Fr]>;
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,EAAE,KAAK,YAAY,EAAE,EAAE,EAAkD,MAAM,oBAAoB,CAAC;AAmB3G,wBAAsB,8BAA8B,CAAC,OAAO,EAAE,YAAY,yBAOzE"}
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 { Fr, PROTOCOL_CONTRACT_TREE_HEIGHT } from '@aztec/circuits.js';
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 { ProtocolContractAddress, ProtocolContractLeaf, protocolContractNames } from './protocol_contract_data.js';
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: ProtocolContractLeaf[name],
10
+ leaf: ProtocolContractLeaves[name],
11
11
  }));
12
12
  protocolContractTree = await buildProtocolContractTree(leaves);
13
13
  }
14
14
  return protocolContractTree;
15
15
  }
16
- export async function getProtocolContractSiblingPath(address) {
16
+ export async function getProtocolContractLeafAndMembershipWitness(address) {
17
17
  const tree = await getTree();
18
- const index = address.toField().toNumber();
19
- return assertLength(tree.getSiblingPath(index).map(buf => new Fr(buf)), PROTOCOL_CONTRACT_TREE_HEIGHT);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdG9jb2xfY29udHJhY3RfdHJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm90b2NvbF9jb250cmFjdF90cmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsRUFBRSxFQUFtQiw2QkFBNkIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzNHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUzRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsb0JBQW9CLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVuSCxJQUFJLG9CQUE0QyxDQUFDO0FBRWpELEtBQUssVUFBVSxPQUFPO0lBQ3BCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzFCLE1BQU0sTUFBTSxHQUFHLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDaEQsT0FBTyxFQUFFLHVCQUF1QixDQUFDLElBQUksQ0FBQztZQUN0QyxJQUFJLEVBQUUsb0JBQW9CLENBQUMsSUFBSSxDQUFDO1NBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBQ0osb0JBQW9CLEdBQUcsTUFBTSx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBQ0QsT0FBTyxvQkFBb0IsQ0FBQztBQUM5QixDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSw4QkFBOEIsQ0FBQyxPQUFxQjtJQUN4RSxNQUFNLElBQUksR0FBRyxNQUFNLE9BQU8sRUFBRSxDQUFDO0lBQzdCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQyxPQUFPLFlBQVksQ0FDakIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUNsRCw2QkFBNkIsQ0FDOUIsQ0FBQztBQUNKLENBQUMifQ==
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.2",
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.2",
73
- "@aztec/foundation": "0.76.2",
74
- "@aztec/types": "0.76.2",
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 MerkleTree,
5
- MerkleTreeCalculator,
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(contracts: { address: AztecAddress; leaf: Fr }[]): Promise<MerkleTree> {
11
- const calculator = await MerkleTreeCalculator.create(PROTOCOL_CONTRACT_TREE_HEIGHT, Buffer.alloc(32), async (a, b) =>
12
- (await poseidon2Hash([a, b])).toBuffer(),
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(2 ** PROTOCOL_CONTRACT_TREE_HEIGHT).fill(Buffer.alloc(32));
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 ProtocolContractLeaf = {
33
+ export const ProtocolContractLeaves = {
34
34
  AuthRegistry: Fr.fromHexString('0x2e9b53693d0b765a2b3ba243a294d01280ad7cd80014562779c0e3fa7769c6c0'),
35
35
  ContractInstanceDeployer: Fr.fromHexString('0x1665c5fbc1e58ba19c82f64c0402d29e8bbf94b1fde1a056280d081c15b0dac1'),
36
- ContractClassRegisterer: Fr.fromHexString('0x080c61e07a84d2fa9fef16d18f1ae23523ec2007bbde4565b5ffe124fa6857df'),
36
+ ContractClassRegisterer: Fr.fromHexString('0x1a11045c0895e4ba1d6bd55c52e7b493c301c079234354dd85f113903f0a8270'),
37
37
  MultiCallEntrypoint: Fr.fromHexString('0x237a0bac451ebac796b96dbe27ccfda5230e8c962b391b84b0304c3775e9e0c0'),
38
- FeeJuice: Fr.fromHexString('0x2946115660107c3ca9bea1e486452595999c3677e7aaeaa9ca898e0fbba0051a'),
38
+ FeeJuice: Fr.fromHexString('0x0bd5f44eb8429a4ea8ca193232e5ee576b300995ce5f88935aa03b0869fe13d5'),
39
39
  Router: Fr.fromHexString('0x1281e0c1842212e79fa2249877524dda4f07f3d42cb502097302737bd3177550'),
40
40
  };
41
41
 
42
42
  export const protocolContractTreeRoot = Fr.fromHexString(
43
- '0x0ba30a2a639e75c5de3e61f4c44f6fd5d83864861ec636b7ac99908f5425fc04',
43
+ '0x26d63d5bcf09b75cc6e123b591dd3e327347d30fe236061f7613ba8d7c5fdac6',
44
44
  );
45
45
 
46
46
  export const REGISTERER_CONTRACT_CLASS_REGISTERED_TAG = new Fr(
@@ -1,27 +1,42 @@
1
- import { type AztecAddress, Fr, type MerkleTree, PROTOCOL_CONTRACT_TREE_HEIGHT } from '@aztec/circuits.js';
2
- import { assertLength } from '@aztec/foundation/serialize';
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 { ProtocolContractAddress, ProtocolContractLeaf, protocolContractNames } from './protocol_contract_data.js';
10
+ import { isProtocolContract } from './protocol_contract.js';
11
+ import { ProtocolContractAddress, ProtocolContractLeaves, protocolContractNames } from './protocol_contract_data.js';
6
12
 
7
- let protocolContractTree: MerkleTree | undefined;
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: ProtocolContractLeaf[name],
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 getProtocolContractSiblingPath(address: AztecAddress) {
28
+ export async function getProtocolContractLeafAndMembershipWitness(address: AztecAddress) {
21
29
  const tree = await getTree();
22
- const index = address.toField().toNumber();
23
- return assertLength<Fr, typeof PROTOCOL_CONTRACT_TREE_HEIGHT>(
24
- tree.getSiblingPath(index).map(buf => new Fr(buf)),
25
- PROTOCOL_CONTRACT_TREE_HEIGHT,
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
  }