@aztec/protocol-contracts 0.0.1-commit.6d3c34e → 0.0.1-commit.7ac86ea28

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.
Files changed (71) hide show
  1. package/artifacts/AuthRegistry.json +249 -168
  2. package/artifacts/ContractClassRegistry.json +151 -4784
  3. package/artifacts/ContractInstanceRegistry.json +233 -925
  4. package/artifacts/FeeJuice.json +116 -785
  5. package/artifacts/MultiCallEntrypoint.json +139 -122
  6. package/artifacts/PublicChecks.json +988 -0
  7. package/dest/auth-registry/index.d.ts +1 -1
  8. package/dest/auth-registry/index.d.ts.map +1 -1
  9. package/dest/auth-registry/index.js +3 -3
  10. package/dest/auth-registry/lazy.js +1 -1
  11. package/dest/class-registry/contract_class_published_event.js +1 -1
  12. package/dest/class-registry/index.d.ts +1 -1
  13. package/dest/class-registry/index.d.ts.map +1 -1
  14. package/dest/class-registry/index.js +3 -3
  15. package/dest/class-registry/lazy.js +1 -1
  16. package/dest/class-registry/private_function_broadcasted_event.d.ts +5 -1
  17. package/dest/class-registry/private_function_broadcasted_event.d.ts.map +1 -1
  18. package/dest/class-registry/utility_function_broadcasted_event.d.ts +4 -1
  19. package/dest/class-registry/utility_function_broadcasted_event.d.ts.map +1 -1
  20. package/dest/fee-juice/index.d.ts +1 -1
  21. package/dest/fee-juice/index.d.ts.map +1 -1
  22. package/dest/fee-juice/index.js +3 -3
  23. package/dest/fee-juice/lazy.js +1 -1
  24. package/dest/instance-registry/index.d.ts +1 -1
  25. package/dest/instance-registry/index.d.ts.map +1 -1
  26. package/dest/instance-registry/index.js +3 -3
  27. package/dest/instance-registry/lazy.js +1 -1
  28. package/dest/make_protocol_contract.d.ts +4 -4
  29. package/dest/make_protocol_contract.d.ts.map +1 -1
  30. package/dest/make_protocol_contract.js +28 -14
  31. package/dest/multi-call-entrypoint/index.d.ts +1 -1
  32. package/dest/multi-call-entrypoint/index.d.ts.map +1 -1
  33. package/dest/multi-call-entrypoint/index.js +3 -3
  34. package/dest/multi-call-entrypoint/lazy.js +1 -1
  35. package/dest/protocol_contract_data.d.ts +15 -3
  36. package/dest/protocol_contract_data.d.ts.map +1 -1
  37. package/dest/protocol_contract_data.js +103 -17
  38. package/dest/provider/bundle.js +3 -3
  39. package/dest/provider/lazy.js +3 -3
  40. package/dest/public-checks/index.d.ts +5 -0
  41. package/dest/public-checks/index.d.ts.map +1 -0
  42. package/dest/public-checks/index.js +13 -0
  43. package/dest/public-checks/lazy.d.ts +6 -0
  44. package/dest/public-checks/lazy.d.ts.map +1 -0
  45. package/dest/{router → public-checks}/lazy.js +6 -6
  46. package/dest/scripts/generate_data.js +68 -23
  47. package/package.json +7 -7
  48. package/src/auth-registry/index.ts +3 -3
  49. package/src/auth-registry/lazy.ts +1 -1
  50. package/src/class-registry/contract_class_published_event.ts +1 -1
  51. package/src/class-registry/index.ts +3 -3
  52. package/src/class-registry/lazy.ts +1 -1
  53. package/src/fee-juice/index.ts +3 -3
  54. package/src/fee-juice/lazy.ts +1 -1
  55. package/src/instance-registry/index.ts +3 -3
  56. package/src/instance-registry/lazy.ts +1 -1
  57. package/src/make_protocol_contract.ts +37 -15
  58. package/src/multi-call-entrypoint/index.ts +3 -3
  59. package/src/multi-call-entrypoint/lazy.ts +1 -1
  60. package/src/protocol_contract_data.ts +80 -17
  61. package/src/provider/bundle.ts +3 -3
  62. package/src/provider/lazy.ts +3 -3
  63. package/src/{router → public-checks}/index.ts +5 -5
  64. package/src/{router → public-checks}/lazy.ts +7 -7
  65. package/artifacts/Router.json +0 -975
  66. package/dest/router/index.d.ts +0 -5
  67. package/dest/router/index.d.ts.map +0 -1
  68. package/dest/router/index.js +0 -13
  69. package/dest/router/lazy.d.ts +0 -6
  70. package/dest/router/lazy.d.ts.map +0 -1
  71. /package/artifacts/{Router.d.json.ts → PublicChecks.d.json.ts} +0 -0
@@ -0,0 +1,5 @@
1
+ import type { ProtocolContract } from '../protocol_contract.js';
2
+ export declare const PublicChecksArtifact: import("@aztec/stdlib/abi").ContractArtifact;
3
+ /** Returns the canonical deployment of the contract. */
4
+ export declare function getCanonicalPublicChecks(): Promise<ProtocolContract>;
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMtY2hlY2tzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFaEUsZUFBTyxNQUFNLG9CQUFvQiw4Q0FBaUUsQ0FBQztBQUluRyx3REFBd0Q7QUFDeEQsd0JBQWdCLHdCQUF3QixJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUtwRSJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/public-checks/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,eAAO,MAAM,oBAAoB,8CAAiE,CAAC;AAInG,wDAAwD;AACxD,wBAAgB,wBAAwB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAKpE"}
@@ -0,0 +1,13 @@
1
+ import { loadContractArtifact } from '@aztec/stdlib/abi';
2
+ import PublicChecksJson from '../../artifacts/PublicChecks.json' with {
3
+ type: 'json'
4
+ };
5
+ import { makeProtocolContract } from '../make_protocol_contract.js';
6
+ export const PublicChecksArtifact = loadContractArtifact(PublicChecksJson);
7
+ let protocolContract;
8
+ /** Returns the canonical deployment of the contract. */ export function getCanonicalPublicChecks() {
9
+ if (!protocolContract) {
10
+ protocolContract = makeProtocolContract('PublicChecks', PublicChecksArtifact);
11
+ }
12
+ return Promise.resolve(protocolContract);
13
+ }
@@ -0,0 +1,6 @@
1
+ import { type ContractArtifact } from '@aztec/stdlib/abi';
2
+ import type { ProtocolContract } from '../protocol_contract.js';
3
+ export declare function getPublicChecksArtifact(): Promise<ContractArtifact>;
4
+ /** Returns the canonical deployment of the public checks contract. */
5
+ export declare function getCanonicalPublicChecks(): Promise<ProtocolContract>;
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1YmxpYy1jaGVja3MvbGF6eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBd0IsTUFBTSxtQkFBbUIsQ0FBQztBQUdoRixPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBS2hFLHdCQUFzQix1QkFBdUIsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FXekU7QUFFRCxzRUFBc0U7QUFDdEUsd0JBQXNCLHdCQUF3QixJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQU0xRSJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../src/public-checks/lazy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAwB,MAAM,mBAAmB,CAAC;AAGhF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAKhE,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAWzE;AAED,sEAAsE;AACtE,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAM1E"}
@@ -2,22 +2,22 @@ import { loadContractArtifact } from '@aztec/stdlib/abi';
2
2
  import { makeProtocolContract } from '../make_protocol_contract.js';
3
3
  let protocolContract;
4
4
  let protocolContractArtifact;
5
- export async function getRouterArtifact() {
5
+ export async function getPublicChecksArtifact() {
6
6
  if (!protocolContractArtifact) {
7
7
  // Cannot assert this import as it's incompatible with bundlers like vite
8
8
  // https://github.com/vitejs/vite/issues/19095#issuecomment-2566074352
9
9
  // Even if now supported by al major browsers, the MIME type is replaced with
10
10
  // "text/javascript"
11
11
  // In the meantime, this lazy import is INCOMPATIBLE WITH NODEJS
12
- const { default: routerJson } = await import('../../artifacts/Router.json');
13
- protocolContractArtifact = loadContractArtifact(routerJson);
12
+ const { default: publicChecksJson } = await import('../../artifacts/PublicChecks.json');
13
+ protocolContractArtifact = loadContractArtifact(publicChecksJson);
14
14
  }
15
15
  return protocolContractArtifact;
16
16
  }
17
- /** Returns the canonical deployment of the auth registry. */ export async function getCanonicalRouter() {
17
+ /** Returns the canonical deployment of the public checks contract. */ export async function getCanonicalPublicChecks() {
18
18
  if (!protocolContract) {
19
- const routerArtifact = await getRouterArtifact();
20
- protocolContract = await makeProtocolContract('Router', routerArtifact);
19
+ const publicChecksArtifact = await getPublicChecksArtifact();
20
+ protocolContract = makeProtocolContract('PublicChecks', publicChecksArtifact);
21
21
  }
22
22
  return protocolContract;
23
23
  }
@@ -1,11 +1,12 @@
1
- import { CANONICAL_AUTH_REGISTRY_ADDRESS, CONTRACT_CLASS_REGISTRY_CONTRACT_ADDRESS, CONTRACT_INSTANCE_PUBLISHED_MAGIC_VALUE, CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS, FEE_JUICE_ADDRESS, MAX_PROTOCOL_CONTRACTS, MULTI_CALL_ENTRYPOINT_ADDRESS, ROUTER_ADDRESS } from '@aztec/constants';
1
+ import { CANONICAL_AUTH_REGISTRY_ADDRESS, CONTRACT_CLASS_REGISTRY_CONTRACT_ADDRESS, CONTRACT_INSTANCE_PUBLISHED_MAGIC_VALUE, CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS, FEE_JUICE_ADDRESS, MAX_PROTOCOL_CONTRACTS, MULTI_CALL_ENTRYPOINT_ADDRESS, PUBLIC_CHECKS_ADDRESS } from '@aztec/constants';
2
2
  import { makeTuple } from '@aztec/foundation/array';
3
- import { poseidon2Hash } from '@aztec/foundation/crypto/poseidon';
4
3
  import { Fr } from '@aztec/foundation/curves/bn254';
5
4
  import { createConsoleLogger } from '@aztec/foundation/log';
6
5
  import { loadContractArtifact } from '@aztec/stdlib/abi';
7
6
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
8
- import { getContractInstanceFromInstantiationParams } from '@aztec/stdlib/contract';
7
+ import { computeContractAddressFromInstance, computeInitializationHash, getContractClassFromArtifact } from '@aztec/stdlib/contract';
8
+ import { computeSiloedPrivateLogFirstField } from '@aztec/stdlib/hash';
9
+ import { PublicKeys } from '@aztec/stdlib/keys';
9
10
  import { ProtocolContracts } from '@aztec/stdlib/tx';
10
11
  import { promises as fs } from 'fs';
11
12
  import path from 'path';
@@ -21,7 +22,7 @@ const contractAddressMapping = {
21
22
  ContractClassRegistry: CONTRACT_CLASS_REGISTRY_CONTRACT_ADDRESS,
22
23
  MultiCallEntrypoint: MULTI_CALL_ENTRYPOINT_ADDRESS,
23
24
  FeeJuice: FEE_JUICE_ADDRESS,
24
- Router: ROUTER_ADDRESS
25
+ PublicChecks: PUBLIC_CHECKS_ADDRESS
25
26
  };
26
27
  async function clearDestDir() {
27
28
  try {
@@ -50,11 +51,32 @@ async function copyArtifact(srcName, destName) {
50
51
  await fs.copyFile(src, dest);
51
52
  return artifact;
52
53
  }
53
- async function computeAddress(artifact) {
54
- const instance = await getContractInstanceFromInstantiationParams(loadContractArtifact(artifact), {
55
- salt
56
- });
57
- return instance.address;
54
+ // Precompute all the expensive contract data that can be obtained from the artifact, to avoid redundant computations in clients.
55
+ // Protocol contracts come from a trusted source, so no class verifications are needed.
56
+ async function computeContractData(artifact, deployer) {
57
+ const loaded = loadContractArtifact(artifact);
58
+ const contractClass = await getContractClassFromArtifact(loaded);
59
+ const constructorArtifact = loaded.functions.find((f)=>f.name === 'constructor');
60
+ const initializationHash = await computeInitializationHash(constructorArtifact, []);
61
+ const instance = {
62
+ version: 1,
63
+ currentContractClassId: contractClass.id,
64
+ originalContractClassId: contractClass.id,
65
+ initializationHash,
66
+ publicKeys: PublicKeys.default(),
67
+ salt,
68
+ deployer
69
+ };
70
+ const address = await computeContractAddressFromInstance(instance);
71
+ return {
72
+ address,
73
+ classId: contractClass.id,
74
+ artifactHash: contractClass.artifactHash,
75
+ privateFunctionsRoot: contractClass.privateFunctionsRoot,
76
+ publicBytecodeCommitment: contractClass.publicBytecodeCommitment,
77
+ initializationHash,
78
+ privateFunctions: contractClass.privateFunctions
79
+ };
58
80
  }
59
81
  async function generateDeclarationFile(destName) {
60
82
  const content = `
@@ -88,14 +110,37 @@ function generateContractAddresses(names) {
88
110
  };
89
111
  `;
90
112
  }
91
- function generateDerivedAddresses(names, derivedAddresses) {
113
+ function generateDerivedAddresses(names, contractData) {
92
114
  return `
93
115
  export const ProtocolContractDerivedAddress = {
94
- ${derivedAddresses.map((address, i)=>`${names[i]}: AztecAddress.fromString('${address.toString()}')`).join(',\n')}
116
+ ${contractData.map((d, i)=>`${names[i]}: AztecAddress.fromString('${d.address.toString()}')`).join(',\n')}
117
+ };
118
+ `;
119
+ }
120
+ function generateClassIdPreimages(names, contractData) {
121
+ return `
122
+ export const ProtocolContractClassId: Record<ProtocolContractName, Fr> = {
123
+ ${contractData.map((d, i)=>`${names[i]}: Fr.fromString('${d.classId.toString()}')`).join(',\n')}
124
+ };
125
+
126
+ export const ProtocolContractClassIdPreimage: Record<ProtocolContractName, { artifactHash: Fr; privateFunctionsRoot: Fr; publicBytecodeCommitment: Fr }> = {
127
+ ${contractData.map((d, i)=>`${names[i]}: {
128
+ artifactHash: Fr.fromString('${d.artifactHash.toString()}'),
129
+ privateFunctionsRoot: Fr.fromString('${d.privateFunctionsRoot.toString()}'),
130
+ publicBytecodeCommitment: Fr.fromString('${d.publicBytecodeCommitment.toString()}'),
131
+ }`).join(',\n')}
132
+ };
133
+
134
+ export const ProtocolContractInitializationHash: Record<ProtocolContractName, Fr> = {
135
+ ${contractData.map((d, i)=>`${names[i]}: Fr.fromString('${d.initializationHash.toString()}')`).join(',\n')}
136
+ };
137
+
138
+ export const ProtocolContractPrivateFunctions: Record<ProtocolContractName, { selector: FunctionSelector; vkHash: Fr }[]> = {
139
+ ${contractData.map((d, i)=>`${names[i]}: [${d.privateFunctions.map((fn)=>`{ selector: FunctionSelector.fromField(Fr.fromString('${fn.selector.toField().toString()}')), vkHash: Fr.fromString('${fn.vkHash.toString()}') }`).join(', ')}]`).join(',\n')}
95
140
  };
96
141
  `;
97
142
  }
98
- async function generateProtocolContractsList(names, derivedAddresses) {
143
+ async function generateProtocolContractsList(names, contractData) {
99
144
  const list = makeTuple(MAX_PROTOCOL_CONTRACTS, ()=>AztecAddress.zero());
100
145
  for(let i = 0; i < names.length; i++){
101
146
  const name = names[i];
@@ -104,7 +149,7 @@ async function generateProtocolContractsList(names, derivedAddresses) {
104
149
  if (!list[derivedAddressIndex].equals(AztecAddress.zero())) {
105
150
  throw new Error(`Duplicate protocol contract address: ${address.toString()}`);
106
151
  }
107
- list[derivedAddressIndex] = derivedAddresses[i];
152
+ list[derivedAddressIndex] = contractData[i].address;
108
153
  }
109
154
  return `
110
155
  export const ProtocolContractsList = new ProtocolContracts([
@@ -117,16 +162,14 @@ async function generateProtocolContractsList(names, derivedAddresses) {
117
162
  // Generate the siloed log tags for events emitted via private logs.
118
163
  async function generateLogTags() {
119
164
  return `
120
- export const CONTRACT_INSTANCE_PUBLISHED_EVENT_TAG = Fr.fromHexString('${await poseidon2Hash([
121
- CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS,
122
- CONTRACT_INSTANCE_PUBLISHED_MAGIC_VALUE
123
- ])}');
165
+ export const CONTRACT_INSTANCE_PUBLISHED_EVENT_TAG = Fr.fromHexString('${await computeSiloedPrivateLogFirstField(new AztecAddress(new Fr(CONTRACT_INSTANCE_REGISTRY_CONTRACT_ADDRESS)), new Fr(CONTRACT_INSTANCE_PUBLISHED_MAGIC_VALUE))}');
124
166
  `;
125
167
  }
126
- async function generateOutputFile(names, derivedAddresses) {
168
+ async function generateOutputFile(names, contractData) {
127
169
  const content = `
128
170
  // GENERATED FILE - DO NOT EDIT. RUN \`yarn generate\` or \`yarn generate:data\`
129
171
  import { Fr } from '@aztec/foundation/curves/bn254';
172
+ import { FunctionSelector } from '@aztec/stdlib/abi';
130
173
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
131
174
  import { ProtocolContracts } from '@aztec/stdlib/tx';
132
175
 
@@ -136,9 +179,11 @@ async function generateOutputFile(names, derivedAddresses) {
136
179
 
137
180
  ${generateContractAddresses(names)}
138
181
 
139
- ${generateDerivedAddresses(names, derivedAddresses)}
182
+ ${generateDerivedAddresses(names, contractData)}
183
+
184
+ ${generateClassIdPreimages(names, contractData)}
140
185
 
141
- ${await generateProtocolContractsList(names, derivedAddresses)}
186
+ ${await generateProtocolContractsList(names, contractData)}
142
187
 
143
188
  ${await generateLogTags()}
144
189
  `;
@@ -147,16 +192,16 @@ async function generateOutputFile(names, derivedAddresses) {
147
192
  async function main() {
148
193
  await clearDestDir();
149
194
  const srcNames = JSON.parse(await fs.readFile(path.join(noirContractsRoot, 'protocol_contracts.json'), 'utf8'));
150
- const derivedAddresses = [];
195
+ const contractDataList = [];
151
196
  const destNames = srcNames.map((n)=>n.split('-')[1]);
152
197
  for(let i = 0; i < srcNames.length; i++){
153
198
  const srcName = srcNames[i];
154
199
  const destName = destNames[i];
155
200
  const artifact = await copyArtifact(srcName, destName);
156
201
  await generateDeclarationFile(destName);
157
- derivedAddresses.push(await computeAddress(artifact));
202
+ contractDataList.push(await computeContractData(artifact, AztecAddress.fromBigInt(BigInt(contractAddressMapping[destName]))));
158
203
  }
159
- await generateOutputFile(destNames, derivedAddresses);
204
+ await generateOutputFile(destNames, contractDataList);
160
205
  }
161
206
  try {
162
207
  await main();
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.0.1-commit.6d3c34e",
5
+ "version": "0.0.1-commit.7ac86ea28",
6
6
  "type": "module",
7
7
  "exports": {
8
8
  ".": "./dest/index.js",
@@ -22,12 +22,12 @@
22
22
  },
23
23
  "scripts": {
24
24
  "build": "yarn clean && yarn generate && yarn generate:cleanup-artifacts && ../scripts/tsc.sh",
25
- "build:keep-debug-symbols": "yarn clean && yarn generate && tsgo -b",
25
+ "build:keep-debug-symbols": "yarn clean && yarn generate && ../scripts/tsc.sh",
26
26
  "generate": "yarn generate:data",
27
27
  "generate:cleanup-artifacts": "node --no-warnings --loader @swc-node/register/esm src/scripts/cleanup_artifacts.ts",
28
28
  "generate:data": "node --no-warnings --loader @swc-node/register/esm src/scripts/generate_data.ts",
29
29
  "build:dev": "../scripts/tsc.sh --watch",
30
- "build:ts": "tsgo -b",
30
+ "build:ts": "../scripts/tsc.sh",
31
31
  "clean": "rm -rf ./dest .tsbuildinfo ./artifacts",
32
32
  "test": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --passWithNoTests --maxWorkers=${JEST_MAX_WORKERS:-8}"
33
33
  },
@@ -73,9 +73,9 @@
73
73
  ]
74
74
  },
75
75
  "dependencies": {
76
- "@aztec/constants": "0.0.1-commit.6d3c34e",
77
- "@aztec/foundation": "0.0.1-commit.6d3c34e",
78
- "@aztec/stdlib": "0.0.1-commit.6d3c34e",
76
+ "@aztec/constants": "0.0.1-commit.7ac86ea28",
77
+ "@aztec/foundation": "0.0.1-commit.7ac86ea28",
78
+ "@aztec/stdlib": "0.0.1-commit.7ac86ea28",
79
79
  "lodash.chunk": "^4.2.0",
80
80
  "lodash.omit": "^4.5.0",
81
81
  "tslib": "^2.4.0"
@@ -86,7 +86,7 @@
86
86
  "@types/lodash.chunk": "^4.2.9",
87
87
  "@types/lodash.omit": "^4.5.9",
88
88
  "@types/node": "^22.15.17",
89
- "@typescript/native-preview": "7.0.0-dev.20251126.1",
89
+ "@typescript/native-preview": "7.0.0-dev.20260113.1",
90
90
  "jest": "^30.0.0",
91
91
  "jest-mock-extended": "^4.0.0",
92
92
  "ts-loader": "^9.5.4",
@@ -10,9 +10,9 @@ let protocolContract: ProtocolContract;
10
10
  export const AuthRegistryArtifact: ContractArtifact = loadContractArtifact(AuthRegistryJson as NoirCompiledContract);
11
11
 
12
12
  /** Returns the canonical deployment of the auth registry. */
13
- export async function getCanonicalAuthRegistry(): Promise<ProtocolContract> {
13
+ export function getCanonicalAuthRegistry(): Promise<ProtocolContract> {
14
14
  if (!protocolContract) {
15
- protocolContract = await makeProtocolContract('AuthRegistry', AuthRegistryArtifact);
15
+ protocolContract = makeProtocolContract('AuthRegistry', AuthRegistryArtifact);
16
16
  }
17
- return protocolContract;
17
+ return Promise.resolve(protocolContract);
18
18
  }
@@ -23,7 +23,7 @@ export async function getAuthRegistryArtifact(): Promise<ContractArtifact> {
23
23
  export async function getCanonicalAuthRegistry(): Promise<ProtocolContract> {
24
24
  if (!protocolContract) {
25
25
  const authRegistryArtifact = await getAuthRegistryArtifact();
26
- protocolContract = await makeProtocolContract('AuthRegistry', authRegistryArtifact);
26
+ protocolContract = makeProtocolContract('AuthRegistry', authRegistryArtifact);
27
27
  }
28
28
  return protocolContract;
29
29
  }
@@ -29,7 +29,7 @@ export class ContractClassPublishedEvent {
29
29
  }
30
30
 
31
31
  static fromLog(log: ContractClassLog) {
32
- // See how the log is serialized in `noir-projects/noir-contracts/contracts/protocol/contract_class_registry/src/events/class_published.nr`.
32
+ // See how the log is serialized in `noir-projects/noir-contracts/contracts/protocol/contract_class_registry_contract/src/events/class_published.nr`.
33
33
  const fieldsWithoutTag = log.fields.fields.slice(1);
34
34
  const reader = new FieldReader(fieldsWithoutTag);
35
35
  const contractClassId = reader.readField();
@@ -14,10 +14,10 @@ export const ContractClassRegistryArtifact = loadContractArtifact(ContractClassR
14
14
  let protocolContract: ProtocolContract;
15
15
 
16
16
  /** Returns the canonical deployment of the contract. */
17
- export async function getCanonicalClassRegistry(): Promise<ProtocolContract> {
17
+ export function getCanonicalClassRegistry(): Promise<ProtocolContract> {
18
18
  if (!protocolContract) {
19
19
  const artifact = ContractClassRegistryArtifact;
20
- protocolContract = await makeProtocolContract('ContractClassRegistry', artifact);
20
+ protocolContract = makeProtocolContract('ContractClassRegistry', artifact);
21
21
  }
22
- return protocolContract;
22
+ return Promise.resolve(protocolContract);
23
23
  }
@@ -27,7 +27,7 @@ export async function getContractClassRegistryArtifact(): Promise<ContractArtifa
27
27
  export async function getCanonicalClassRegistry(): Promise<ProtocolContract> {
28
28
  if (!protocolContract) {
29
29
  const contractClassRegistryArtifact = await getContractClassRegistryArtifact();
30
- protocolContract = await makeProtocolContract('ContractClassRegistry', contractClassRegistryArtifact);
30
+ protocolContract = makeProtocolContract('ContractClassRegistry', contractClassRegistryArtifact);
31
31
  }
32
32
  return protocolContract;
33
33
  }
@@ -14,11 +14,11 @@ export const FeeJuiceArtifact = loadContractArtifact(FeeJuiceJson as NoirCompile
14
14
  let protocolContract: ProtocolContract;
15
15
 
16
16
  /** Returns the canonical deployment of the contract. */
17
- export async function getCanonicalFeeJuice(): Promise<ProtocolContract> {
17
+ export function getCanonicalFeeJuice(): Promise<ProtocolContract> {
18
18
  if (!protocolContract) {
19
- protocolContract = await makeProtocolContract('FeeJuice', FeeJuiceArtifact);
19
+ protocolContract = makeProtocolContract('FeeJuice', FeeJuiceArtifact);
20
20
  }
21
- return protocolContract;
21
+ return Promise.resolve(protocolContract);
22
22
  }
23
23
 
24
24
  /**
@@ -23,7 +23,7 @@ export async function getFeeJuiceArtifact(): Promise<ContractArtifact> {
23
23
  export async function getCanonicalFeeJuice(): Promise<ProtocolContract> {
24
24
  if (!protocolContract) {
25
25
  const feeJuiceArtifact = await getFeeJuiceArtifact();
26
- protocolContract = await makeProtocolContract('FeeJuice', feeJuiceArtifact);
26
+ protocolContract = makeProtocolContract('FeeJuice', feeJuiceArtifact);
27
27
  }
28
28
  return protocolContract;
29
29
  }
@@ -15,9 +15,9 @@ export const ContractInstanceRegistryArtifact = loadContractArtifact(
15
15
  let protocolContract: ProtocolContract;
16
16
 
17
17
  /** Returns the canonical deployment of the contract. */
18
- export async function getCanonicalInstanceRegistry(): Promise<ProtocolContract> {
18
+ export function getCanonicalInstanceRegistry(): Promise<ProtocolContract> {
19
19
  if (!protocolContract) {
20
- protocolContract = await makeProtocolContract('ContractInstanceRegistry', ContractInstanceRegistryArtifact);
20
+ protocolContract = makeProtocolContract('ContractInstanceRegistry', ContractInstanceRegistryArtifact);
21
21
  }
22
- return protocolContract;
22
+ return Promise.resolve(protocolContract);
23
23
  }
@@ -26,7 +26,7 @@ export async function getContractInstanceRegistryArtifact(): Promise<ContractArt
26
26
  export async function getCanonicalInstanceRegistry(): Promise<ProtocolContract> {
27
27
  if (!protocolContract) {
28
28
  const contractInstanceRegistryArtifact = await getContractInstanceRegistryArtifact();
29
- protocolContract = await makeProtocolContract('ContractInstanceRegistry', contractInstanceRegistryArtifact);
29
+ protocolContract = makeProtocolContract('ContractInstanceRegistry', contractInstanceRegistryArtifact);
30
30
  }
31
31
  return protocolContract;
32
32
  }
@@ -1,26 +1,48 @@
1
1
  import type { ContractArtifact } from '@aztec/stdlib/abi';
2
- import { getContractClassFromArtifact, getContractInstanceFromInstantiationParams } from '@aztec/stdlib/contract';
2
+ import { PublicKeys } from '@aztec/stdlib/keys';
3
3
 
4
4
  import type { ProtocolContract } from './protocol_contract.js';
5
- import { ProtocolContractAddress, type ProtocolContractName, ProtocolContractSalt } from './protocol_contract_data.js';
5
+ import {
6
+ ProtocolContractAddress,
7
+ ProtocolContractClassId,
8
+ ProtocolContractClassIdPreimage,
9
+ ProtocolContractInitializationHash,
10
+ type ProtocolContractName,
11
+ ProtocolContractPrivateFunctions,
12
+ ProtocolContractSalt,
13
+ } from './protocol_contract_data.js';
6
14
 
7
15
  /**
8
- * Returns the canonical deployment given its name and artifact.
9
- * To be used internally within the protocol-contracts package.
16
+ * Reconstructs a ProtocolContract from precomputed data without performing any hash computations.
17
+ * Internal to the protocol-contracts package — not part of the public API.
10
18
  */
11
- export async function makeProtocolContract(
12
- name: ProtocolContractName,
13
- artifact: ContractArtifact,
14
- ): Promise<ProtocolContract> {
19
+ export function makeProtocolContract(name: ProtocolContractName, artifact: ContractArtifact): ProtocolContract {
15
20
  const address = ProtocolContractAddress[name];
16
21
  const salt = ProtocolContractSalt[name];
17
- // TODO(@spalladino): This computes the contract class from the artifact twice.
18
- const contractClass = await getContractClassFromArtifact(artifact);
19
- const instance = await getContractInstanceFromInstantiationParams(artifact, { salt });
20
- return {
21
- instance: { ...instance, address },
22
- contractClass,
23
- artifact,
22
+ const classId = ProtocolContractClassId[name];
23
+ const { artifactHash, privateFunctionsRoot, publicBytecodeCommitment } = ProtocolContractClassIdPreimage[name];
24
+ const initializationHash = ProtocolContractInitializationHash[name];
25
+
26
+ const contractClass = {
27
+ id: classId,
28
+ version: 1 as const,
29
+ artifactHash,
30
+ privateFunctionsRoot,
31
+ publicBytecodeCommitment,
32
+ packedBytecode: artifact.functions.find(f => f.name === 'public_dispatch')?.bytecode ?? Buffer.alloc(0),
33
+ privateFunctions: ProtocolContractPrivateFunctions[name],
34
+ };
35
+
36
+ const instance = {
37
+ version: 1 as const,
38
+ currentContractClassId: classId,
39
+ originalContractClassId: classId,
40
+ initializationHash,
41
+ publicKeys: PublicKeys.default(),
42
+ salt,
43
+ deployer: address,
24
44
  address,
25
45
  };
46
+
47
+ return { instance, contractClass, artifact, address };
26
48
  }
@@ -10,9 +10,9 @@ export const MultiCallEntrypointArtifact = loadContractArtifact(MultiCallEntrypo
10
10
  let protocolContract: ProtocolContract;
11
11
 
12
12
  /** Returns the canonical deployment of the contract. */
13
- export async function getCanonicalMultiCallEntrypoint(): Promise<ProtocolContract> {
13
+ export function getCanonicalMultiCallEntrypoint(): Promise<ProtocolContract> {
14
14
  if (!protocolContract) {
15
- protocolContract = await makeProtocolContract('MultiCallEntrypoint', MultiCallEntrypointArtifact);
15
+ protocolContract = makeProtocolContract('MultiCallEntrypoint', MultiCallEntrypointArtifact);
16
16
  }
17
- return protocolContract;
17
+ return Promise.resolve(protocolContract);
18
18
  }
@@ -23,7 +23,7 @@ export async function getMultiCallEntrypointArtifact(): Promise<ContractArtifact
23
23
  export async function getCanonicalMultiCallEntrypoint(): Promise<ProtocolContract> {
24
24
  if (!protocolContract) {
25
25
  const multiCallEntrypointArtifact = await getMultiCallEntrypointArtifact();
26
- protocolContract = await makeProtocolContract('MultiCallEntrypoint', multiCallEntrypointArtifact);
26
+ protocolContract = makeProtocolContract('MultiCallEntrypoint', multiCallEntrypointArtifact);
27
27
  }
28
28
  return protocolContract;
29
29
  }
@@ -1,6 +1,7 @@
1
1
 
2
2
  // GENERATED FILE - DO NOT EDIT. RUN `yarn generate` or `yarn generate:data`
3
3
  import { Fr } from '@aztec/foundation/curves/bn254';
4
+ import { FunctionSelector } from '@aztec/stdlib/abi';
4
5
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
5
6
  import { ProtocolContracts } from '@aztec/stdlib/tx';
6
7
 
@@ -11,7 +12,7 @@
11
12
  'ContractClassRegistry',
12
13
  'MultiCallEntrypoint',
13
14
  'FeeJuice',
14
- 'Router'
15
+ 'PublicChecks'
15
16
  ] as const;
16
17
 
17
18
  export type ProtocolContractName = typeof protocolContractNames[number];
@@ -24,7 +25,7 @@ ContractInstanceRegistry: new Fr(1),
24
25
  ContractClassRegistry: new Fr(1),
25
26
  MultiCallEntrypoint: new Fr(1),
26
27
  FeeJuice: new Fr(1),
27
- Router: new Fr(1)
28
+ PublicChecks: new Fr(1)
28
29
  };
29
30
 
30
31
 
@@ -35,29 +36,91 @@ ContractInstanceRegistry: AztecAddress.fromBigInt(2n),
35
36
  ContractClassRegistry: AztecAddress.fromBigInt(3n),
36
37
  MultiCallEntrypoint: AztecAddress.fromBigInt(4n),
37
38
  FeeJuice: AztecAddress.fromBigInt(5n),
38
- Router: AztecAddress.fromBigInt(6n)
39
+ PublicChecks: AztecAddress.fromBigInt(6n)
39
40
  };
40
41
 
41
42
 
42
43
 
43
44
  export const ProtocolContractDerivedAddress = {
44
- AuthRegistry: AztecAddress.fromString('0x0b4c5a9ec45c5132dbbe9c6c67caa3a2810fb29cdde8442a7bed375a181e9b65'),
45
- ContractInstanceRegistry: AztecAddress.fromString('0x24f58ab2edfcaff61e9330ddf2e8c508785bdb746703424d1de26129432c4993'),
46
- ContractClassRegistry: AztecAddress.fromString('0x2f9ff6545041d143ed9b8edf3691ab2f37684b0766814c74c250f928b9dffd5b'),
47
- MultiCallEntrypoint: AztecAddress.fromString('0x025285627488b9bd0e344452faad21a597a75cd3c5768c736c846882f0f6da32'),
48
- FeeJuice: AztecAddress.fromString('0x2fba8d8f78fc11b66650a3805c0502d5ce3f102bac03a90384ec544805118aeb'),
49
- Router: AztecAddress.fromString('0x2278c3b1b8985060408c655dbcb90334d2c0515a7d294344b022ea8a922dd00f')
45
+ AuthRegistry: AztecAddress.fromString('0x05738188c145f5ae1f85ba32c2955df6cdadf5142a4a6db36c7bbf7919f07630'),
46
+ ContractInstanceRegistry: AztecAddress.fromString('0x0e0e44c7fd88f06c1a52e67137d92be96399a7d47ee5ca033bb306ec8d2b54f3'),
47
+ ContractClassRegistry: AztecAddress.fromString('0x14d670efa326a07b99777b01fb706427ca776095246569150f2a3f17a7d4dc66'),
48
+ MultiCallEntrypoint: AztecAddress.fromString('0x15bff1f94c1c820c5f9384e45114ae5b4c25489f816fdc5b80bfb5f54d852077'),
49
+ FeeJuice: AztecAddress.fromString('0x06ecf77d30887d7b701ad2235f560248e7c3d572e8640279f9d26d87312557ac'),
50
+ PublicChecks: AztecAddress.fromString('0x289c56a961e343e67f77ed2a9119fdf8b50f63034d598c5bba8ff280129e1579')
51
+ };
52
+
53
+
54
+
55
+ export const ProtocolContractClassId: Record<ProtocolContractName, Fr> = {
56
+ AuthRegistry: Fr.fromString('0x07438c0ca498858064954149028e00a6038eb8ea5529373582574a77a0f913f1'),
57
+ ContractInstanceRegistry: Fr.fromString('0x2112df65cee9b5fc9d222613fc7df8d3e05dd542ad565c9f255ab7b728dd9cc0'),
58
+ ContractClassRegistry: Fr.fromString('0x013466b8a65dea98ad80c119cf236a0acf53acfede687769410cfd57876b8242'),
59
+ MultiCallEntrypoint: Fr.fromString('0x1f87f80a8331b63219e4b04f618b371c04b73b2246c058a0962d9848f15cf1d8'),
60
+ FeeJuice: Fr.fromString('0x0b0ee1791b48ea378c6aed2ccdc29c7a5e63a742d77871294174c6879509806f'),
61
+ PublicChecks: Fr.fromString('0x0f1f06f003dd2ccb739a1719b8dccc2800b4015e7387d1e6ab1126b480871c54')
62
+ };
63
+
64
+ export const ProtocolContractClassIdPreimage: Record<ProtocolContractName, { artifactHash: Fr; privateFunctionsRoot: Fr; publicBytecodeCommitment: Fr }> = {
65
+ AuthRegistry: {
66
+ artifactHash: Fr.fromString('0x2fcb5576b472becea02a1d5228473217bb2f63570d868abcf16205a23377ec70'),
67
+ privateFunctionsRoot: Fr.fromString('0x11900a485e3ffa03da98d89abb0c9419200644aaf17f5caa863953fccf1ed88f'),
68
+ publicBytecodeCommitment: Fr.fromString('0x2c9138ec76d2f7db9c313a411adb0855e334ba6bb1bbbe191fff14ee0799deea'),
69
+ },
70
+ ContractInstanceRegistry: {
71
+ artifactHash: Fr.fromString('0x18601566bacdca7a5a40528f221b04ee7b74f382e6cd34fbdf69d31c50d5ee88'),
72
+ privateFunctionsRoot: Fr.fromString('0x136a6705c7ad1d47f65cb881a56909d4c78d3fa8944f5b103734cd91e654ed63'),
73
+ publicBytecodeCommitment: Fr.fromString('0x2ca33d0ab4d4cc2339aa7fa0788572ad32465cd461a222930e71b166aca83967'),
74
+ },
75
+ ContractClassRegistry: {
76
+ artifactHash: Fr.fromString('0x232d868db8a4d1e0f013efa4bfe5c39d96e11f16a62e3e73abbbafc3028fc410'),
77
+ privateFunctionsRoot: Fr.fromString('0x2ac3bf890a7d534a768079aa86889caa1a86373c8e6fc2db48215b11bbb79106'),
78
+ publicBytecodeCommitment: Fr.fromString('0x0ce4c618c3ed7f3a20410e618c06bb701e150af7fe28a3e92f68e7733809f33e'),
79
+ },
80
+ MultiCallEntrypoint: {
81
+ artifactHash: Fr.fromString('0x10292f802f1c5b7c6c813c003f6e068e4396892beeb195c9e031a841a4ce5800'),
82
+ privateFunctionsRoot: Fr.fromString('0x266505ecb7c02ce6e227227c0b6bdb44713c8ecd43164ee7bb00b8fb340e8b03'),
83
+ publicBytecodeCommitment: Fr.fromString('0x0ce4c618c3ed7f3a20410e618c06bb701e150af7fe28a3e92f68e7733809f33e'),
84
+ },
85
+ FeeJuice: {
86
+ artifactHash: Fr.fromString('0x2eb476f12cce5207be118047fb7f603378b78aa619d6539a4d9eec4700ea2507'),
87
+ privateFunctionsRoot: Fr.fromString('0x0abef3cfc6ae314886c841b42dc33d3eed255ad3dee7773daabf05b229573759'),
88
+ publicBytecodeCommitment: Fr.fromString('0x140b663a54207869cc411e3731d38cd65ea323ac2fc6004d3d73b7f175bb0f33'),
89
+ },
90
+ PublicChecks: {
91
+ artifactHash: Fr.fromString('0x003d3e0bff7456e270c38b0ae046cc77fa0b677df8d5bce6d7ff9bb7ecdfdbdd'),
92
+ privateFunctionsRoot: Fr.fromString('0x067243231eddf4222f3911defbba7705aff06ed45960b27f6f91319196ef97e1'),
93
+ publicBytecodeCommitment: Fr.fromString('0x2d0834fc9468fd2092091852543a2fbd7b6b313c7e5e4defe8730c8065366a03'),
94
+ }
95
+ };
96
+
97
+ export const ProtocolContractInitializationHash: Record<ProtocolContractName, Fr> = {
98
+ AuthRegistry: Fr.fromString('0x0000000000000000000000000000000000000000000000000000000000000000'),
99
+ ContractInstanceRegistry: Fr.fromString('0x0000000000000000000000000000000000000000000000000000000000000000'),
100
+ ContractClassRegistry: Fr.fromString('0x0000000000000000000000000000000000000000000000000000000000000000'),
101
+ MultiCallEntrypoint: Fr.fromString('0x0000000000000000000000000000000000000000000000000000000000000000'),
102
+ FeeJuice: Fr.fromString('0x0000000000000000000000000000000000000000000000000000000000000000'),
103
+ PublicChecks: Fr.fromString('0x0000000000000000000000000000000000000000000000000000000000000000')
104
+ };
105
+
106
+ export const ProtocolContractPrivateFunctions: Record<ProtocolContractName, { selector: FunctionSelector; vkHash: Fr }[]> = {
107
+ AuthRegistry: [{ selector: FunctionSelector.fromField(Fr.fromString('0x0000000000000000000000000000000000000000000000000000000079a3d418')), vkHash: Fr.fromString('0x185a64e85b31ece67103f33ec67ddef374308c0a5dc2b7f37e016bca0dce63fb') }],
108
+ ContractInstanceRegistry: [{ selector: FunctionSelector.fromField(Fr.fromString('0x0000000000000000000000000000000000000000000000000000000016ec12aa')), vkHash: Fr.fromString('0x262f7a90ecf055779001b67dad01a3add1e549f6c27931f0e71e463ce2142b57') }],
109
+ ContractClassRegistry: [{ selector: FunctionSelector.fromField(Fr.fromString('0x000000000000000000000000000000000000000000000000000000006934ed0d')), vkHash: Fr.fromString('0x1163f31e191528254c877fce0c7f62dd738f5552bbd2dda97512fe4777377f5b') }],
110
+ MultiCallEntrypoint: [{ selector: FunctionSelector.fromField(Fr.fromString('0x00000000000000000000000000000000000000000000000000000000f04908a9')), vkHash: Fr.fromString('0x21732ab3cecf633e4c31a030df62c93e35a005b89941fdab568d2818c1355192') }],
111
+ FeeJuice: [{ selector: FunctionSelector.fromField(Fr.fromString('0x00000000000000000000000000000000000000000000000000000000cbe67243')), vkHash: Fr.fromString('0x2ad6083b4595f8076c014e5152191013167ab1b5a31ad0cbb06490054c7c59ae') }, { selector: FunctionSelector.fromField(Fr.fromString('0x00000000000000000000000000000000000000000000000000000000e8d374b6')), vkHash: Fr.fromString('0x05aaffffdf797625ff24575d939339303775c5db77fb6bdcecbf955f726fd071') }],
112
+ PublicChecks: []
50
113
  };
51
114
 
52
115
 
53
116
 
54
117
  export const ProtocolContractsList = new ProtocolContracts([
55
- AztecAddress.fromString('0x0b4c5a9ec45c5132dbbe9c6c67caa3a2810fb29cdde8442a7bed375a181e9b65'),
56
- AztecAddress.fromString('0x24f58ab2edfcaff61e9330ddf2e8c508785bdb746703424d1de26129432c4993'),
57
- AztecAddress.fromString('0x2f9ff6545041d143ed9b8edf3691ab2f37684b0766814c74c250f928b9dffd5b'),
58
- AztecAddress.fromString('0x025285627488b9bd0e344452faad21a597a75cd3c5768c736c846882f0f6da32'),
59
- AztecAddress.fromString('0x2fba8d8f78fc11b66650a3805c0502d5ce3f102bac03a90384ec544805118aeb'),
60
- AztecAddress.fromString('0x2278c3b1b8985060408c655dbcb90334d2c0515a7d294344b022ea8a922dd00f'),
118
+ AztecAddress.fromString('0x05738188c145f5ae1f85ba32c2955df6cdadf5142a4a6db36c7bbf7919f07630'),
119
+ AztecAddress.fromString('0x0e0e44c7fd88f06c1a52e67137d92be96399a7d47ee5ca033bb306ec8d2b54f3'),
120
+ AztecAddress.fromString('0x14d670efa326a07b99777b01fb706427ca776095246569150f2a3f17a7d4dc66'),
121
+ AztecAddress.fromString('0x15bff1f94c1c820c5f9384e45114ae5b4c25489f816fdc5b80bfb5f54d852077'),
122
+ AztecAddress.fromString('0x06ecf77d30887d7b701ad2235f560248e7c3d572e8640279f9d26d87312557ac'),
123
+ AztecAddress.fromString('0x289c56a961e343e67f77ed2a9119fdf8b50f63034d598c5bba8ff280129e1579'),
61
124
  AztecAddress.fromString('0x0000000000000000000000000000000000000000000000000000000000000000'),
62
125
  AztecAddress.fromString('0x0000000000000000000000000000000000000000000000000000000000000000'),
63
126
  AztecAddress.fromString('0x0000000000000000000000000000000000000000000000000000000000000000'),
@@ -65,10 +128,10 @@ AztecAddress.fromString('0x00000000000000000000000000000000000000000000000000000
65
128
  AztecAddress.fromString('0x0000000000000000000000000000000000000000000000000000000000000000')
66
129
  ]);
67
130
 
68
- export const protocolContractsHash = Fr.fromString('0x15120d8d1e0cc574b866b2b3cde7225352edda647cb79ba9f1b9f7b7b582ac69');
131
+ export const protocolContractsHash = Fr.fromString('0x1e13776ddffd17d2a72e97753ee4bdc8fa83f7c826e35421e3c0844ee732a82b');
69
132
 
70
133
 
71
134
 
72
- export const CONTRACT_INSTANCE_PUBLISHED_EVENT_TAG = Fr.fromHexString('0x28da3fc471387d4e20b646b77abc8cdfc02a339a7507285a73d84f9b97b13486');
135
+ export const CONTRACT_INSTANCE_PUBLISHED_EVENT_TAG = Fr.fromHexString('0x1a7e1badb79abdd38c684b3c8306ffe7ecb33c69e3380d9855730aaaa83a21a8');
73
136
 
74
137