@aztec/standard-contracts 0.0.1-commit.8655d4a → 0.0.1-commit.9a89641

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 (45) hide show
  1. package/artifacts/AuthRegistry.json +981 -2282
  2. package/artifacts/HandshakeRegistry.d.json.ts +5 -0
  3. package/artifacts/HandshakeRegistry.json +13258 -0
  4. package/artifacts/MultiCallEntrypoint.json +754 -2417
  5. package/artifacts/PublicChecks.json +645 -1932
  6. package/dest/auth-registry/constants.d.ts +3 -2
  7. package/dest/auth-registry/constants.d.ts.map +1 -1
  8. package/dest/contract_data.d.ts +2 -2
  9. package/dest/contract_data.d.ts.map +1 -1
  10. package/dest/contract_data.js +10 -6
  11. package/dest/drift.js +1 -1
  12. package/dest/handshake-registry/constants.d.ts +11 -0
  13. package/dest/handshake-registry/constants.d.ts.map +1 -0
  14. package/dest/handshake-registry/constants.js +17 -0
  15. package/dest/handshake-registry/index.d.ts +6 -0
  16. package/dest/handshake-registry/index.d.ts.map +1 -0
  17. package/dest/handshake-registry/index.js +14 -0
  18. package/dest/handshake-registry/lazy.d.ts +7 -0
  19. package/dest/handshake-registry/lazy.d.ts.map +1 -0
  20. package/dest/handshake-registry/lazy.js +24 -0
  21. package/dest/index.d.ts +3 -1
  22. package/dest/index.d.ts.map +1 -1
  23. package/dest/index.js +2 -0
  24. package/dest/multi-call-entrypoint/constants.d.ts +3 -2
  25. package/dest/multi-call-entrypoint/constants.d.ts.map +1 -1
  26. package/dest/public-checks/constants.d.ts +3 -2
  27. package/dest/public-checks/constants.d.ts.map +1 -1
  28. package/dest/publishable_standard_contracts.d.ts +17 -0
  29. package/dest/publishable_standard_contracts.d.ts.map +1 -0
  30. package/dest/publishable_standard_contracts.js +23 -0
  31. package/dest/standard_contract_data.d.ts +2 -2
  32. package/dest/standard_contract_data.d.ts.map +1 -1
  33. package/dest/standard_contract_data.js +42 -18
  34. package/package.json +5 -4
  35. package/src/auth-registry/constants.ts +3 -1
  36. package/src/contract_data.ts +10 -8
  37. package/src/drift.ts +1 -1
  38. package/src/handshake-registry/constants.ts +23 -0
  39. package/src/handshake-registry/index.ts +25 -0
  40. package/src/handshake-registry/lazy.ts +35 -0
  41. package/src/index.ts +2 -0
  42. package/src/multi-call-entrypoint/constants.ts +3 -1
  43. package/src/public-checks/constants.ts +3 -1
  44. package/src/publishable_standard_contracts.ts +22 -0
  45. package/src/standard_contract_data.ts +53 -15
@@ -1,4 +1,5 @@
1
- export declare const STANDARD_AUTH_REGISTRY_ADDRESS: import("@aztec/stdlib/aztec-address").AztecAddress;
1
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
2
+ export declare const STANDARD_AUTH_REGISTRY_ADDRESS: AztecAddress;
2
3
  export declare const STANDARD_AUTH_REGISTRY_CLASS_ID: import("@aztec/foundation/schemas").Fr;
3
4
  export declare const STANDARD_AUTH_REGISTRY_SALT: import("@aztec/foundation/schemas").Fr;
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXV0aC1yZWdpc3RyeS9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsZUFBTyxNQUFNLDhCQUE4QixvREFBdUMsQ0FBQztBQUNuRixlQUFPLE1BQU0sK0JBQStCLHdDQUF1QyxDQUFDO0FBQ3BGLGVBQU8sTUFBTSwyQkFBMkIsd0NBQW9DLENBQUMifQ==
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXV0aC1yZWdpc3RyeS9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFJaEUsZUFBTyxNQUFNLDhCQUE4QixFQUFFLFlBQW1ELENBQUM7QUFDakcsZUFBTyxNQUFNLCtCQUErQix3Q0FBdUMsQ0FBQztBQUNwRixlQUFPLE1BQU0sMkJBQTJCLHdDQUFvQyxDQUFDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/auth-registry/constants.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,8BAA8B,oDAAuC,CAAC;AACnF,eAAO,MAAM,+BAA+B,wCAAuC,CAAC;AACpF,eAAO,MAAM,2BAA2B,wCAAoC,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/auth-registry/constants.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAIhE,eAAO,MAAM,8BAA8B,EAAE,YAAmD,CAAC;AACjG,eAAO,MAAM,+BAA+B,wCAAuC,CAAC;AACpF,eAAO,MAAM,2BAA2B,wCAAoC,CAAC"}
@@ -3,7 +3,7 @@ import { FunctionSelector } from '@aztec/stdlib/abi';
3
3
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
4
4
  import type { NoirCompiledContract } from '@aztec/stdlib/noir';
5
5
  /** Root of the noir-contracts package relative to `yarn-project/standard-contracts`. */
6
- export declare const NOIR_CONTRACTS_ROOT = "../../noir-projects/noir-contracts";
6
+ export declare const NOIR_CONTRACTS_ROOT = "../../noir-projects/labs/noir-contracts";
7
7
  /** Directory holding the freshly-compiled Noir artifacts the generator reads from. */
8
8
  export declare const NOIR_ARTIFACTS_SRC_PATH: string;
9
9
  /** Output directory inside this package where the trimmed artifacts get copied. */
@@ -60,4 +60,4 @@ export declare function loadArtifact(srcName: string): Promise<NoirCompiledContr
60
60
  * are performed.
61
61
  */
62
62
  export declare function computeContractData(artifact: NoirCompiledContract): Promise<ContractData>;
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfZGF0YS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnRyYWN0X2RhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBWUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBd0IsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFPM0QsT0FBTyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUsvRCx3RkFBd0Y7QUFDeEYsZUFBTyxNQUFNLG1CQUFtQix1Q0FBdUMsQ0FBQztBQUN4RSxzRkFBc0Y7QUFDdEYsZUFBTyxNQUFNLHVCQUF1QixRQUE2QyxDQUFDO0FBQ2xGLG1GQUFtRjtBQUNuRixlQUFPLE1BQU0sMkJBQTJCLGdCQUFnQixDQUFDO0FBQ3pELHVFQUF1RTtBQUN2RSxlQUFPLE1BQU0sa0NBQWtDLG9DQUFvQyxDQUFDO0FBSXBGLGVBQU8sTUFBTSw2QkFBNkIsVUFHekMsQ0FBQztBQUVGLHVFQUF1RTtBQUN2RSxlQUFPLE1BQU0sc0JBQXNCLElBQVksQ0FBQztBQUNoRCxrRkFBa0Y7QUFDbEYsZUFBTyxNQUFNLDBCQUEwQixjQUFzQixDQUFDO0FBRTlEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsZUFBTyxNQUFNLGlCQUFpQixFQUFFO0lBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQztJQUFDLEdBQUcsRUFBRSxNQUFNLENBQUM7SUFBQyxPQUFPLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQTtDQUFFLEVBUXBGLENBQUM7QUFFRiw4RkFBOEY7QUFDOUYsTUFBTSxNQUFNLFlBQVksR0FBRztJQUN6QixPQUFPLEVBQUUsWUFBWSxDQUFDO0lBQ3RCLE9BQU8sRUFBRSxFQUFFLENBQUM7SUFDWixZQUFZLEVBQUUsRUFBRSxDQUFDO0lBQ2pCLG9CQUFvQixFQUFFLEVBQUUsQ0FBQztJQUN6Qix3QkFBd0IsRUFBRSxFQUFFLENBQUM7SUFDN0Isa0JBQWtCLEVBQUUsRUFBRSxDQUFDO0lBQ3ZCLGdCQUFnQixFQUFFO1FBQUUsUUFBUSxFQUFFLGdCQUFnQixDQUFDO1FBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQTtLQUFFLEVBQUUsQ0FBQztDQUNoRSxDQUFDO0FBRUY7Ozs7R0FJRztBQUNILHdCQUFzQixZQUFZLENBQUMsT0FBTyxFQUFFLE1BQU0sR0FBRyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FHakY7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsd0JBQXNCLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxvQkFBb0IsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBeUIvRiJ9
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3RfZGF0YS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnRyYWN0X2RhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBWUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBd0IsTUFBTSxtQkFBbUIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFPM0QsT0FBTyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUsvRCx3RkFBd0Y7QUFDeEYsZUFBTyxNQUFNLG1CQUFtQiw0Q0FBNEMsQ0FBQztBQUM3RSxzRkFBc0Y7QUFDdEYsZUFBTyxNQUFNLHVCQUF1QixRQUE2QyxDQUFDO0FBQ2xGLG1GQUFtRjtBQUNuRixlQUFPLE1BQU0sMkJBQTJCLGdCQUFnQixDQUFDO0FBQ3pELHVFQUF1RTtBQUN2RSxlQUFPLE1BQU0sa0NBQWtDLG9DQUFvQyxDQUFDO0FBSXBGLGVBQU8sTUFBTSw2QkFBNkIsVUFBd0UsQ0FBQztBQUVuSCx1RUFBdUU7QUFDdkUsZUFBTyxNQUFNLHNCQUFzQixJQUFZLENBQUM7QUFDaEQsa0ZBQWtGO0FBQ2xGLGVBQU8sTUFBTSwwQkFBMEIsY0FBc0IsQ0FBQztBQUU5RDs7Ozs7Ozs7Ozs7R0FXRztBQUNILGVBQU8sTUFBTSxpQkFBaUIsRUFBRTtJQUFFLElBQUksRUFBRSxNQUFNLENBQUM7SUFBQyxHQUFHLEVBQUUsTUFBTSxDQUFDO0lBQUMsT0FBTyxFQUFFLE1BQU0sR0FBRyxJQUFJLENBQUE7Q0FBRSxFQWFwRixDQUFDO0FBRUYsOEZBQThGO0FBQzlGLE1BQU0sTUFBTSxZQUFZLEdBQUc7SUFDekIsT0FBTyxFQUFFLFlBQVksQ0FBQztJQUN0QixPQUFPLEVBQUUsRUFBRSxDQUFDO0lBQ1osWUFBWSxFQUFFLEVBQUUsQ0FBQztJQUNqQixvQkFBb0IsRUFBRSxFQUFFLENBQUM7SUFDekIsd0JBQXdCLEVBQUUsRUFBRSxDQUFDO0lBQzdCLGtCQUFrQixFQUFFLEVBQUUsQ0FBQztJQUN2QixnQkFBZ0IsRUFBRTtRQUFFLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQztRQUFDLE1BQU0sRUFBRSxFQUFFLENBQUE7S0FBRSxFQUFFLENBQUM7Q0FDaEUsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCx3QkFBc0IsWUFBWSxDQUFDLE9BQU8sRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBR2pGO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILHdCQUFzQixtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsb0JBQW9CLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQXlCL0YifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"contract_data.d.ts","sourceRoot":"","sources":["../src/contract_data.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAwB,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAO3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAK/D,wFAAwF;AACxF,eAAO,MAAM,mBAAmB,uCAAuC,CAAC;AACxE,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,QAA6C,CAAC;AAClF,mFAAmF;AACnF,eAAO,MAAM,2BAA2B,gBAAgB,CAAC;AACzD,uEAAuE;AACvE,eAAO,MAAM,kCAAkC,oCAAoC,CAAC;AAIpF,eAAO,MAAM,6BAA6B,UAGzC,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,sBAAsB,IAAY,CAAC;AAChD,kFAAkF;AAClF,eAAO,MAAM,0BAA0B,cAAsB,CAAC;AAE9D;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAQpF,CAAC;AAEF,8FAA8F;AAC9F,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,EAAE,CAAC;IACZ,YAAY,EAAE,EAAE,CAAC;IACjB,oBAAoB,EAAE,EAAE,CAAC;IACzB,wBAAwB,EAAE,EAAE,CAAC;IAC7B,kBAAkB,EAAE,EAAE,CAAC;IACvB,gBAAgB,EAAE;QAAE,QAAQ,EAAE,gBAAgB,CAAC;QAAC,MAAM,EAAE,EAAE,CAAA;KAAE,EAAE,CAAC;CAChE,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAGjF;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC,CAyB/F"}
1
+ {"version":3,"file":"contract_data.d.ts","sourceRoot":"","sources":["../src/contract_data.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAwB,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAO3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAK/D,wFAAwF;AACxF,eAAO,MAAM,mBAAmB,4CAA4C,CAAC;AAC7E,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,QAA6C,CAAC;AAClF,mFAAmF;AACnF,eAAO,MAAM,2BAA2B,gBAAgB,CAAC;AACzD,uEAAuE;AACvE,eAAO,MAAM,kCAAkC,oCAAoC,CAAC;AAIpF,eAAO,MAAM,6BAA6B,UAAwE,CAAC;AAEnH,uEAAuE;AACvE,eAAO,MAAM,sBAAsB,IAAY,CAAC;AAChD,kFAAkF;AAClF,eAAO,MAAM,0BAA0B,cAAsB,CAAC;AAE9D;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAapF,CAAC;AAEF,8FAA8F;AAC9F,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE,EAAE,CAAC;IACZ,YAAY,EAAE,EAAE,CAAC;IACjB,oBAAoB,EAAE,EAAE,CAAC;IACzB,wBAAwB,EAAE,EAAE,CAAC;IAC7B,kBAAkB,EAAE,EAAE,CAAC;IACvB,gBAAgB,EAAE;QAAE,QAAQ,EAAE,gBAAgB,CAAC;QAAC,MAAM,EAAE,EAAE,CAAA;KAAE,EAAE,CAAC;CAChE,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAGjF;AAED;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC,CAyB/F"}
@@ -17,16 +17,15 @@ import { computeContractAddressFromInstance, computeInitializationHash, getContr
17
17
  import { PublicKeys } from '@aztec/stdlib/keys';
18
18
  import { promises as fs } from 'fs';
19
19
  import path from 'path';
20
- /** Root of the noir-contracts package relative to `yarn-project/standard-contracts`. */ export const NOIR_CONTRACTS_ROOT = '../../noir-projects/noir-contracts';
20
+ /** Root of the noir-contracts package relative to `yarn-project/standard-contracts`. */ export const NOIR_CONTRACTS_ROOT = '../../noir-projects/labs/noir-contracts';
21
21
  /** Directory holding the freshly-compiled Noir artifacts the generator reads from. */ export const NOIR_ARTIFACTS_SRC_PATH = path.join(NOIR_CONTRACTS_ROOT, './target');
22
22
  /** Output directory inside this package where the trimmed artifacts get copied. */ export const STANDARD_ARTIFACTS_DEST_DIR = './artifacts';
23
23
  /** Path of the generated TS data file (addresses, class IDs, etc.). */ export const STANDARD_CONTRACT_DATA_OUTPUT_PATH = './src/standard_contract_data.ts';
24
- // Both consumers (aztec-nr's `aztec` crate and noir-contracts' `aztec_sublib`) need an identical
25
- // twin of the generated addresses module. `aztec_sublib` cannot depend on `aztec`, so we stamp the
26
- // same file into both locations rather than introducing a shared crate.
24
+ // The `aztec` crate in aztec-nr needs a twin of the generated addresses module stamped into its
25
+ // source so circuits can reference standard-contract addresses at compile time (e.g. authwit and
26
+ // public_checks) without re-hashing at runtime.
27
27
  export const NOIR_STANDARD_ADDRESSES_PATHS = [
28
- '../../noir-projects/aztec-nr/aztec/src/standard_addresses.nr',
29
- '../../noir-projects/noir-contracts/contracts/protocol/aztec_sublib/src/standard_addresses.nr'
28
+ '../../noir-projects/labs/aztec-nr/aztec/src/standard_addresses.nr'
30
29
  ];
31
30
  /** The deployment salt baked into every standard contract instance. */ export const STANDARD_CONTRACT_SALT = new Fr(1);
32
31
  /** Every standard contract is deployed by the zero address (universal deploy). */ export const STANDARD_CONTRACT_DEPLOYER = AztecAddress.zero();
@@ -56,6 +55,11 @@ export const NOIR_STANDARD_ADDRESSES_PATHS = [
56
55
  name: 'PublicChecks',
57
56
  src: 'public_checks_contract-PublicChecks',
58
57
  nrConst: 'STANDARD_PUBLIC_CHECKS_ADDRESS'
58
+ },
59
+ {
60
+ name: 'HandshakeRegistry',
61
+ src: 'handshake_registry_contract-HandshakeRegistry',
62
+ nrConst: 'STANDARD_HANDSHAKE_REGISTRY_ADDRESS'
59
63
  }
60
64
  ];
61
65
  /**
package/dest/drift.js CHANGED
@@ -25,7 +25,7 @@ function generateSalts(names) {
25
25
  function generateAddresses(names, contractData) {
26
26
  return `
27
27
  export const StandardContractAddress: Record<StandardContractName, AztecAddress> = {
28
- ${contractData.map((d, i)=>`${names[i]}: AztecAddress.fromString('${d.address.toString()}')`).join(',\n')}
28
+ ${contractData.map((d, i)=>`${names[i]}: AztecAddress.fromStringUnsafe('${d.address.toString()}')`).join(',\n')}
29
29
  };
30
30
  `;
31
31
  }
@@ -0,0 +1,11 @@
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
3
+ export declare const STANDARD_HANDSHAKE_REGISTRY_ADDRESS: AztecAddress;
4
+ export declare const STANDARD_HANDSHAKE_REGISTRY_CLASS_ID: Fr;
5
+ export declare const STANDARD_HANDSHAKE_REGISTRY_SALT: Fr;
6
+ /**
7
+ * Request kind under which the HandshakeRegistry asks for a recipient's interactive-handshake signature through the
8
+ * `resolveCustomRequest` hook. Mirrors `INTERACTIVE_HANDSHAKE_REQUEST_KIND` in the registry contract.
9
+ */
10
+ export declare const INTERACTIVE_HANDSHAKE_REQUEST_KIND: Fr;
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaGFuZHNoYWtlLXJlZ2lzdHJ5L2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RCxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUloRSxlQUFPLE1BQU0sbUNBQW1DLEVBQUUsWUFBd0QsQ0FBQztBQUMzRyxlQUFPLE1BQU0sb0NBQW9DLElBQTRDLENBQUM7QUFDOUYsZUFBTyxNQUFNLGdDQUFnQyxJQUF5QyxDQUFDO0FBRXZGOzs7R0FHRztBQUlILGVBQU8sTUFBTSxrQ0FBa0MsRUFBRSxFQUUvQyxDQUFDIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/handshake-registry/constants.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAIhE,eAAO,MAAM,mCAAmC,EAAE,YAAwD,CAAC;AAC3G,eAAO,MAAM,oCAAoC,IAA4C,CAAC;AAC9F,eAAO,MAAM,gCAAgC,IAAyC,CAAC;AAEvF;;;GAGG;AAIH,eAAO,MAAM,kCAAkC,EAAE,EAE/C,CAAC"}
@@ -0,0 +1,17 @@
1
+ // Lightweight metadata leaf export for browser bundles: importing from
2
+ // `@aztec/standard-contracts/handshake-registry/constants` avoids dragging in the
3
+ // `HandshakeRegistry.json` static import.
4
+ import { sha256ToField } from '@aztec/foundation/crypto/sha256';
5
+ import { StandardContractAddress, StandardContractClassId, StandardContractSalt } from '../standard_contract_data.js';
6
+ export const STANDARD_HANDSHAKE_REGISTRY_ADDRESS = StandardContractAddress.HandshakeRegistry;
7
+ export const STANDARD_HANDSHAKE_REGISTRY_CLASS_ID = StandardContractClassId.HandshakeRegistry;
8
+ export const STANDARD_HANDSHAKE_REGISTRY_SALT = StandardContractSalt.HandshakeRegistry;
9
+ /**
10
+ * Request kind under which the HandshakeRegistry asks for a recipient's interactive-handshake signature through the
11
+ * `resolveCustomRequest` hook. Mirrors `INTERACTIVE_HANDSHAKE_REQUEST_KIND` in the registry contract.
12
+ */ // TODO: remove this mirrored constant and read the value from the HandshakeRegistry artifact once the contract
13
+ // global can be `#[abi]`-exported. Fixed upstream but not yet released:
14
+ // https://github.com/noir-lang/noir/pull/12714 and https://github.com/noir-lang/noir/issues/12620.
15
+ export const INTERACTIVE_HANDSHAKE_REQUEST_KIND = sha256ToField([
16
+ Buffer.from('HANDSHAKE_REGISTRY::INTERACTIVE_HANDSHAKE_REQUEST')
17
+ ]);
@@ -0,0 +1,6 @@
1
+ import type { StandardContract } from '../standard_contract.js';
2
+ export { INTERACTIVE_HANDSHAKE_REQUEST_KIND, STANDARD_HANDSHAKE_REGISTRY_ADDRESS, STANDARD_HANDSHAKE_REGISTRY_CLASS_ID, STANDARD_HANDSHAKE_REGISTRY_SALT, } from './constants.js';
3
+ export declare const HandshakeRegistryArtifact: import("@aztec/stdlib/abi").ContractArtifact;
4
+ /** Returns the standard deployment of the handshake registry. */
5
+ export declare function getStandardHandshakeRegistry(): Promise<StandardContract>;
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oYW5kc2hha2UtcmVnaXN0cnkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVoRSxPQUFPLEVBQ0wsa0NBQWtDLEVBQ2xDLG1DQUFtQyxFQUNuQyxvQ0FBb0MsRUFDcEMsZ0NBQWdDLEdBQ2pDLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsZUFBTyxNQUFNLHlCQUF5Qiw4Q0FBc0UsQ0FBQztBQUk3RyxpRUFBaUU7QUFDakUsd0JBQWdCLDRCQUE0QixJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUt4RSJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/handshake-registry/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EACL,kCAAkC,EAClC,mCAAmC,EACnC,oCAAoC,EACpC,gCAAgC,GACjC,MAAM,gBAAgB,CAAC;AAExB,eAAO,MAAM,yBAAyB,8CAAsE,CAAC;AAI7G,iEAAiE;AACjE,wBAAgB,4BAA4B,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAKxE"}
@@ -0,0 +1,14 @@
1
+ import { loadContractArtifact } from '@aztec/stdlib/abi';
2
+ import HandshakeRegistryJson from '../../artifacts/HandshakeRegistry.json' with {
3
+ type: 'json'
4
+ };
5
+ import { makeStandardContract } from '../make_standard_contract.js';
6
+ export { INTERACTIVE_HANDSHAKE_REQUEST_KIND, STANDARD_HANDSHAKE_REGISTRY_ADDRESS, STANDARD_HANDSHAKE_REGISTRY_CLASS_ID, STANDARD_HANDSHAKE_REGISTRY_SALT } from './constants.js';
7
+ export const HandshakeRegistryArtifact = loadContractArtifact(HandshakeRegistryJson);
8
+ let standardContract;
9
+ /** Returns the standard deployment of the handshake registry. */ export function getStandardHandshakeRegistry() {
10
+ if (!standardContract) {
11
+ standardContract = makeStandardContract('HandshakeRegistry', HandshakeRegistryArtifact);
12
+ }
13
+ return Promise.resolve(standardContract);
14
+ }
@@ -0,0 +1,7 @@
1
+ import { type ContractArtifact } from '@aztec/stdlib/abi';
2
+ import type { StandardContract } from '../standard_contract.js';
3
+ export { STANDARD_HANDSHAKE_REGISTRY_ADDRESS, STANDARD_HANDSHAKE_REGISTRY_CLASS_ID, STANDARD_HANDSHAKE_REGISTRY_SALT, } from './constants.js';
4
+ export declare function getHandshakeRegistryArtifact(): Promise<ContractArtifact>;
5
+ /** Returns the standard deployment of the handshake registry. */
6
+ export declare function getStandardHandshakeRegistry(): Promise<StandardContract>;
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hhbmRzaGFrZS1yZWdpc3RyeS9sYXp5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLGdCQUFnQixFQUF3QixNQUFNLG1CQUFtQixDQUFDO0FBR2hGLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFaEUsT0FBTyxFQUNMLG1DQUFtQyxFQUNuQyxvQ0FBb0MsRUFDcEMsZ0NBQWdDLEdBQ2pDLE1BQU0sZ0JBQWdCLENBQUM7QUFLeEIsd0JBQXNCLDRCQUE0QixJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQVc5RTtBQUVELGlFQUFpRTtBQUNqRSx3QkFBc0IsNEJBQTRCLElBQUksT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBTTlFIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../src/handshake-registry/lazy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAwB,MAAM,mBAAmB,CAAC;AAGhF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EACL,mCAAmC,EACnC,oCAAoC,EACpC,gCAAgC,GACjC,MAAM,gBAAgB,CAAC;AAKxB,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAW9E;AAED,iEAAiE;AACjE,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAM9E"}
@@ -0,0 +1,24 @@
1
+ import { loadContractArtifact } from '@aztec/stdlib/abi';
2
+ import { makeStandardContract } from '../make_standard_contract.js';
3
+ export { STANDARD_HANDSHAKE_REGISTRY_ADDRESS, STANDARD_HANDSHAKE_REGISTRY_CLASS_ID, STANDARD_HANDSHAKE_REGISTRY_SALT } from './constants.js';
4
+ let standardContract;
5
+ let standardContractArtifact;
6
+ export async function getHandshakeRegistryArtifact() {
7
+ if (!standardContractArtifact) {
8
+ // Cannot assert this import as it's incompatible with bundlers like vite
9
+ // https://github.com/vitejs/vite/issues/19095#issuecomment-2566074352
10
+ // Even if now supported by all major browsers, the MIME type is replaced with
11
+ // "text/javascript"
12
+ // In the meantime, this lazy import is INCOMPATIBLE WITH NODEJS
13
+ const { default: handshakeRegistryJson } = await import('../../artifacts/HandshakeRegistry.json');
14
+ standardContractArtifact = loadContractArtifact(handshakeRegistryJson);
15
+ }
16
+ return standardContractArtifact;
17
+ }
18
+ /** Returns the standard deployment of the handshake registry. */ export async function getStandardHandshakeRegistry() {
19
+ if (!standardContract) {
20
+ const artifact = await getHandshakeRegistryArtifact();
21
+ standardContract = makeStandardContract('HandshakeRegistry', artifact);
22
+ }
23
+ return standardContract;
24
+ }
package/dest/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  export * from './auth-registry/index.js';
2
+ export * from './handshake-registry/index.js';
2
3
  export * from './multi-call-entrypoint/index.js';
3
4
  export * from './public-checks/index.js';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYywwQkFBMEIsQ0FBQyJ9
5
+ export * from './publishable_standard_contracts.js';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMscUNBQXFDLENBQUMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,qCAAqC,CAAC"}
package/dest/index.js CHANGED
@@ -1,3 +1,5 @@
1
1
  export * from './auth-registry/index.js';
2
+ export * from './handshake-registry/index.js';
2
3
  export * from './multi-call-entrypoint/index.js';
3
4
  export * from './public-checks/index.js';
5
+ export * from './publishable_standard_contracts.js';
@@ -1,4 +1,5 @@
1
- export declare const STANDARD_MULTI_CALL_ENTRYPOINT_ADDRESS: import("@aztec/stdlib/aztec-address").AztecAddress;
1
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
2
+ export declare const STANDARD_MULTI_CALL_ENTRYPOINT_ADDRESS: AztecAddress;
2
3
  export declare const STANDARD_MULTI_CALL_ENTRYPOINT_CLASS_ID: import("@aztec/foundation/schemas").Fr;
3
4
  export declare const STANDARD_MULTI_CALL_ENTRYPOINT_SALT: import("@aztec/foundation/schemas").Fr;
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbXVsdGktY2FsbC1lbnRyeXBvaW50L2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxlQUFPLE1BQU0sc0NBQXNDLG9EQUE4QyxDQUFDO0FBQ2xHLGVBQU8sTUFBTSx1Q0FBdUMsd0NBQThDLENBQUM7QUFDbkcsZUFBTyxNQUFNLG1DQUFtQyx3Q0FBMkMsQ0FBQyJ9
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbXVsdGktY2FsbC1lbnRyeXBvaW50L2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUloRSxlQUFPLE1BQU0sc0NBQXNDLEVBQUUsWUFBMEQsQ0FBQztBQUNoSCxlQUFPLE1BQU0sdUNBQXVDLHdDQUE4QyxDQUFDO0FBQ25HLGVBQU8sTUFBTSxtQ0FBbUMsd0NBQTJDLENBQUMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/multi-call-entrypoint/constants.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,sCAAsC,oDAA8C,CAAC;AAClG,eAAO,MAAM,uCAAuC,wCAA8C,CAAC;AACnG,eAAO,MAAM,mCAAmC,wCAA2C,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/multi-call-entrypoint/constants.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAIhE,eAAO,MAAM,sCAAsC,EAAE,YAA0D,CAAC;AAChH,eAAO,MAAM,uCAAuC,wCAA8C,CAAC;AACnG,eAAO,MAAM,mCAAmC,wCAA2C,CAAC"}
@@ -1,4 +1,5 @@
1
- export declare const STANDARD_PUBLIC_CHECKS_ADDRESS: import("@aztec/stdlib/aztec-address").AztecAddress;
1
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
2
+ export declare const STANDARD_PUBLIC_CHECKS_ADDRESS: AztecAddress;
2
3
  export declare const STANDARD_PUBLIC_CHECKS_CLASS_ID: import("@aztec/foundation/schemas").Fr;
3
4
  export declare const STANDARD_PUBLIC_CHECKS_SALT: import("@aztec/foundation/schemas").Fr;
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGljLWNoZWNrcy9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsZUFBTyxNQUFNLDhCQUE4QixvREFBdUMsQ0FBQztBQUNuRixlQUFPLE1BQU0sK0JBQStCLHdDQUF1QyxDQUFDO0FBQ3BGLGVBQU8sTUFBTSwyQkFBMkIsd0NBQW9DLENBQUMifQ==
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGljLWNoZWNrcy9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFJaEUsZUFBTyxNQUFNLDhCQUE4QixFQUFFLFlBQW1ELENBQUM7QUFDakcsZUFBTyxNQUFNLCtCQUErQix3Q0FBdUMsQ0FBQztBQUNwRixlQUFPLE1BQU0sMkJBQTJCLHdDQUFvQyxDQUFDIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/public-checks/constants.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,8BAA8B,oDAAuC,CAAC;AACnF,eAAO,MAAM,+BAA+B,wCAAuC,CAAC;AACpF,eAAO,MAAM,2BAA2B,wCAAoC,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/public-checks/constants.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAIhE,eAAO,MAAM,8BAA8B,EAAE,YAAmD,CAAC;AACjG,eAAO,MAAM,+BAA+B,wCAAuC,CAAC;AACpF,eAAO,MAAM,2BAA2B,wCAAoC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { StandardContract } from './standard_contract.js';
2
+ /**
3
+ * Returns the standard contracts that are published on-chain (class registration + instance
4
+ * publication) before their public functions can be called: AuthRegistry, PublicChecks, and
5
+ * HandshakeRegistry. These are exactly the contracts guarded by the `ensure*Published` e2e setup
6
+ * helpers.
7
+ *
8
+ * MultiCallEntrypoint is deliberately excluded: it is a client-side entrypoint used to encode
9
+ * batched private calls and is never published for public execution.
10
+ *
11
+ * This is the single source of truth for the set of standard contracts that test environments seed
12
+ * at genesis (registration/deployment nullifiers) and preload into the archiver contract store, so
13
+ * the two stay consistent — preloading a class whose nullifier is not seeded would recreate the
14
+ * publish-collision bug that genesis seeding avoids.
15
+ */
16
+ export declare function getPublishableStandardContracts(): Promise<StandardContract[]>;
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaGFibGVfc3RhbmRhcmRfY29udHJhY3RzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHVibGlzaGFibGVfc3RhbmRhcmRfY29udHJhY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFL0Q7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILHdCQUFnQiwrQkFBK0IsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUU3RSJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publishable_standard_contracts.d.ts","sourceRoot":"","sources":["../src/publishable_standard_contracts.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,+BAA+B,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAE7E"}
@@ -0,0 +1,23 @@
1
+ import { getStandardAuthRegistry } from './auth-registry/index.js';
2
+ import { getStandardHandshakeRegistry } from './handshake-registry/index.js';
3
+ import { getStandardPublicChecks } from './public-checks/index.js';
4
+ /**
5
+ * Returns the standard contracts that are published on-chain (class registration + instance
6
+ * publication) before their public functions can be called: AuthRegistry, PublicChecks, and
7
+ * HandshakeRegistry. These are exactly the contracts guarded by the `ensure*Published` e2e setup
8
+ * helpers.
9
+ *
10
+ * MultiCallEntrypoint is deliberately excluded: it is a client-side entrypoint used to encode
11
+ * batched private calls and is never published for public execution.
12
+ *
13
+ * This is the single source of truth for the set of standard contracts that test environments seed
14
+ * at genesis (registration/deployment nullifiers) and preload into the archiver contract store, so
15
+ * the two stay consistent — preloading a class whose nullifier is not seeded would recreate the
16
+ * publish-collision bug that genesis seeding avoids.
17
+ */ export function getPublishableStandardContracts() {
18
+ return Promise.all([
19
+ getStandardAuthRegistry(),
20
+ getStandardPublicChecks(),
21
+ getStandardHandshakeRegistry()
22
+ ]);
23
+ }
@@ -1,7 +1,7 @@
1
1
  import { Fr } from '@aztec/foundation/curves/bn254';
2
2
  import { FunctionSelector } from '@aztec/stdlib/abi';
3
3
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
4
- export declare const standardContractNames: readonly ["AuthRegistry", "MultiCallEntrypoint", "PublicChecks"];
4
+ export declare const standardContractNames: readonly ["AuthRegistry", "MultiCallEntrypoint", "PublicChecks", "HandshakeRegistry"];
5
5
  export type StandardContractName = (typeof standardContractNames)[number];
6
6
  export declare const StandardContractSalt: Record<StandardContractName, Fr>;
7
7
  export declare const StandardContractAddress: Record<StandardContractName, AztecAddress>;
@@ -16,4 +16,4 @@ export declare const StandardContractPrivateFunctions: Record<StandardContractNa
16
16
  selector: FunctionSelector;
17
17
  vkHash: Fr;
18
18
  }[]>;
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmRfY29udHJhY3RfZGF0YS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3N0YW5kYXJkX2NvbnRyYWN0X2RhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUzRCxlQUFPLE1BQU0scUJBQXFCLGtFQUFtRSxDQUFDO0FBRXRHLE1BQU0sTUFBTSxvQkFBb0IsR0FBRyxDQUFDLE9BQU8scUJBQXFCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUUxRSxlQUFPLE1BQU0sb0JBQW9CLEVBQUUsTUFBTSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsQ0FJakUsQ0FBQztBQUVGLGVBQU8sTUFBTSx1QkFBdUIsRUFBRSxNQUFNLENBQUMsb0JBQW9CLEVBQUUsWUFBWSxDQUk5RSxDQUFDO0FBRUYsZUFBTyxNQUFNLHVCQUF1QixFQUFFLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBSXBFLENBQUM7QUFFRixlQUFPLE1BQU0sK0JBQStCLEVBQUUsTUFBTSxDQUNsRCxvQkFBb0IsRUFDcEI7SUFBRSxZQUFZLEVBQUUsRUFBRSxDQUFDO0lBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDO0lBQUMsd0JBQXdCLEVBQUUsRUFBRSxDQUFBO0NBQUUsQ0FpQjdFLENBQUM7QUFFRixlQUFPLE1BQU0sa0NBQWtDLEVBQUUsTUFBTSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsQ0FJL0UsQ0FBQztBQUVGLGVBQU8sTUFBTSxnQ0FBZ0MsRUFBRSxNQUFNLENBQ25ELG9CQUFvQixFQUNwQjtJQUFFLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQztJQUFDLE1BQU0sRUFBRSxFQUFFLENBQUE7Q0FBRSxFQUFFLENBbUI3QyxDQUFDIn0=
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmRfY29udHJhY3RfZGF0YS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3N0YW5kYXJkX2NvbnRyYWN0X2RhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUzRCxlQUFPLE1BQU0scUJBQXFCLHVGQUt4QixDQUFDO0FBRVgsTUFBTSxNQUFNLG9CQUFvQixHQUFHLENBQUMsT0FBTyxxQkFBcUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRTFFLGVBQU8sTUFBTSxvQkFBb0IsRUFBRSxNQUFNLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUtqRSxDQUFDO0FBRUYsZUFBTyxNQUFNLHVCQUF1QixFQUFFLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxZQUFZLENBUzlFLENBQUM7QUFFRixlQUFPLE1BQU0sdUJBQXVCLEVBQUUsTUFBTSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsQ0FLcEUsQ0FBQztBQUVGLGVBQU8sTUFBTSwrQkFBK0IsRUFBRSxNQUFNLENBQ2xELG9CQUFvQixFQUNwQjtJQUFFLFlBQVksRUFBRSxFQUFFLENBQUM7SUFBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUM7SUFBQyx3QkFBd0IsRUFBRSxFQUFFLENBQUE7Q0FBRSxDQXNCN0UsQ0FBQztBQUVGLGVBQU8sTUFBTSxrQ0FBa0MsRUFBRSxNQUFNLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUsvRSxDQUFDO0FBRUYsZUFBTyxNQUFNLGdDQUFnQyxFQUFFLE1BQU0sQ0FDbkQsb0JBQW9CLEVBQ3BCO0lBQUUsUUFBUSxFQUFFLGdCQUFnQixDQUFDO0lBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQTtDQUFFLEVBQUUsQ0F1QzdDLENBQUMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"standard_contract_data.d.ts","sourceRoot":"","sources":["../src/standard_contract_data.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,eAAO,MAAM,qBAAqB,kEAAmE,CAAC;AAEtG,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,EAAE,EAAE,CAIjE,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,oBAAoB,EAAE,YAAY,CAI9E,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,oBAAoB,EAAE,EAAE,CAIpE,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,MAAM,CAClD,oBAAoB,EACpB;IAAE,YAAY,EAAE,EAAE,CAAC;IAAC,oBAAoB,EAAE,EAAE,CAAC;IAAC,wBAAwB,EAAE,EAAE,CAAA;CAAE,CAiB7E,CAAC;AAEF,eAAO,MAAM,kCAAkC,EAAE,MAAM,CAAC,oBAAoB,EAAE,EAAE,CAI/E,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,MAAM,CACnD,oBAAoB,EACpB;IAAE,QAAQ,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,EAAE,CAAA;CAAE,EAAE,CAmB7C,CAAC"}
1
+ {"version":3,"file":"standard_contract_data.d.ts","sourceRoot":"","sources":["../src/standard_contract_data.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,eAAO,MAAM,qBAAqB,uFAKxB,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,EAAE,EAAE,CAKjE,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,oBAAoB,EAAE,YAAY,CAS9E,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,oBAAoB,EAAE,EAAE,CAKpE,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,MAAM,CAClD,oBAAoB,EACpB;IAAE,YAAY,EAAE,EAAE,CAAC;IAAC,oBAAoB,EAAE,EAAE,CAAC;IAAC,wBAAwB,EAAE,EAAE,CAAA;CAAE,CAsB7E,CAAC;AAEF,eAAO,MAAM,kCAAkC,EAAE,MAAM,CAAC,oBAAoB,EAAE,EAAE,CAK/E,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,MAAM,CACnD,oBAAoB,EACpB;IAAE,QAAQ,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,EAAE,CAAA;CAAE,EAAE,CAuC7C,CAAC"}
@@ -5,57 +5,81 @@ import { AztecAddress } from '@aztec/stdlib/aztec-address';
5
5
  export const standardContractNames = [
6
6
  'AuthRegistry',
7
7
  'MultiCallEntrypoint',
8
- 'PublicChecks'
8
+ 'PublicChecks',
9
+ 'HandshakeRegistry'
9
10
  ];
10
11
  export const StandardContractSalt = {
11
12
  AuthRegistry: new Fr(1),
12
13
  MultiCallEntrypoint: new Fr(1),
13
- PublicChecks: new Fr(1)
14
+ PublicChecks: new Fr(1),
15
+ HandshakeRegistry: new Fr(1)
14
16
  };
15
17
  export const StandardContractAddress = {
16
- AuthRegistry: AztecAddress.fromString('0x01de9d215d1845808cf388d3a88f9066af1e73ec280e979c3b1aec8ba6b149ea'),
17
- MultiCallEntrypoint: AztecAddress.fromString('0x09a72c4cb473b087f59f28f913aa103c214b4f9bbf10d4157e06745169359210'),
18
- PublicChecks: AztecAddress.fromString('0x05d900a6ed1b4ad3ff52cbe5f98d9b291b0f35c6dd5c41b1642659344d234bfe')
18
+ AuthRegistry: AztecAddress.fromStringUnsafe('0x1fe01dde371ec27308a4e5d1f08d2e734b773352c1f47d9d5b0974c1729ac16e'),
19
+ MultiCallEntrypoint: AztecAddress.fromStringUnsafe('0x124b09dd9229a0e476e5d5affcbd917c16400d7673a6b589497650afc18456da'),
20
+ PublicChecks: AztecAddress.fromStringUnsafe('0x0de6d5fa41576a2289a289180c5ba3b1b75d19a630c779cfbef4480e27ac3e28'),
21
+ HandshakeRegistry: AztecAddress.fromStringUnsafe('0x1f81756ef59026857b437350d1123ea317cacf3a20b95c77586d618591b8bb93')
19
22
  };
20
23
  export const StandardContractClassId = {
21
- AuthRegistry: Fr.fromString('0x2cfbdd0ce7cc31b5cc5f4eb8f680e0e245882b2208bd67828e41a8bd24a19292'),
22
- MultiCallEntrypoint: Fr.fromString('0x188160c82cb3a9a24c6f156f270e962afa124cdd2dabce78aaa0bf04fdd799f6'),
23
- PublicChecks: Fr.fromString('0x022bbd3c085d6a09ec500110852441419c7b1e6dc21a8d459233b72a84d03a1f')
24
+ AuthRegistry: Fr.fromString('0x07429c3c22c191987452fe7c8daeb56b8a4ada6d94fed30e7fb6659da36c5099'),
25
+ MultiCallEntrypoint: Fr.fromString('0x28aa32d375f8c4acb57cf9ee899bd3b08a5a148cecf2064602fe818aafdf6e33'),
26
+ PublicChecks: Fr.fromString('0x0ac1bd3e46990fdcd9c4182ca9dab6d9b22dda5ee1a9fe581dde36a6ea639596'),
27
+ HandshakeRegistry: Fr.fromString('0x1544fd83a3880eca21d17789665e5281318ea4f9395aef53217463deb5b82619')
24
28
  };
25
29
  export const StandardContractClassIdPreimage = {
26
30
  AuthRegistry: {
27
- artifactHash: Fr.fromString('0x0dd24a86cce5ff4ef33ca14f16359c5a154ce3f1ed91a9570dd5343569f5386f'),
28
- privateFunctionsRoot: Fr.fromString('0x17b584350f4c3ccafd8f688729afb9feab8976114fb40012e9dee65022c072a4'),
29
- publicBytecodeCommitment: Fr.fromString('0x2545f39893766508ce37bb5cea5e4dcab04c6f7f79f3089b1c076876e9d268b2')
31
+ artifactHash: Fr.fromString('0x0d029bbbf1f83e4c8c088213c7b7d200d2e89d2085183f53151d59ba369e1fab'),
32
+ privateFunctionsRoot: Fr.fromString('0x211b33685bcb41a5d3a2a84d8ec021c7280392cb4aae5a778eafe5282dbba740'),
33
+ publicBytecodeCommitment: Fr.fromString('0x0c7984b020afc901da3b5898b8f94d1d9a09ea2b37d6e0043409abc0b0332906')
30
34
  },
31
35
  MultiCallEntrypoint: {
32
- artifactHash: Fr.fromString('0x1f8c5717b0e478e63f462f9792969865684f8403b4608980b1a83324c03dd498'),
33
- privateFunctionsRoot: Fr.fromString('0x0e68dfbb256e80b08b3aef47aca1f2669e97a9c6259787893c1223ac083ad5d5'),
36
+ artifactHash: Fr.fromString('0x28f8874c4768c1072922ca41c49ba1f302aefb7f858ebb289dc17c993abc8528'),
37
+ privateFunctionsRoot: Fr.fromString('0x2cd2008a79f59c3f2caa996962b0b35889f5ee8fcf175282406a2a521550cc70'),
34
38
  publicBytecodeCommitment: Fr.fromString('0x0ce4c618c3ed7f3a20410e618c06bb701e150af7fe28a3e92f68e7733809f33e')
35
39
  },
36
40
  PublicChecks: {
37
- artifactHash: Fr.fromString('0x030776b58475bf6a0545eaa4f4002f5fe6701bd0d306b68065f4b40ef4fdbe60'),
41
+ artifactHash: Fr.fromString('0x1149d0cd4421cb20fccdcf2c73c79df4e773e30f6c4b8d24e8c1cd718d34d50b'),
38
42
  privateFunctionsRoot: Fr.fromString('0x202860adb1b8975971eeaf571aaaa88a27f4035290d58532ae7d60b0dfaad54c'),
39
43
  publicBytecodeCommitment: Fr.fromString('0x013c4f854a5c87c9daf86c5f9bc07a42c2a061f1d924a5b3564ec7edc8e18cb7')
44
+ },
45
+ HandshakeRegistry: {
46
+ artifactHash: Fr.fromString('0x1c02c2ba7d53ec4fd5450d6dc7f86ab1b17a6fcfa5a50850405e7529acc9638b'),
47
+ privateFunctionsRoot: Fr.fromString('0x10288478f6ce295fa9a831e0b712773f4c59287a6bc6ae57b5948519b94f7171'),
48
+ publicBytecodeCommitment: Fr.fromString('0x0ce4c618c3ed7f3a20410e618c06bb701e150af7fe28a3e92f68e7733809f33e')
40
49
  }
41
50
  };
42
51
  export const StandardContractInitializationHash = {
43
52
  AuthRegistry: Fr.fromString('0x0000000000000000000000000000000000000000000000000000000000000000'),
44
53
  MultiCallEntrypoint: Fr.fromString('0x0000000000000000000000000000000000000000000000000000000000000000'),
45
- PublicChecks: Fr.fromString('0x0000000000000000000000000000000000000000000000000000000000000000')
54
+ PublicChecks: Fr.fromString('0x0000000000000000000000000000000000000000000000000000000000000000'),
55
+ HandshakeRegistry: Fr.fromString('0x0000000000000000000000000000000000000000000000000000000000000000')
46
56
  };
47
57
  export const StandardContractPrivateFunctions = {
48
58
  AuthRegistry: [
49
59
  {
50
60
  selector: FunctionSelector.fromField(Fr.fromString('0x0000000000000000000000000000000000000000000000000000000079a3d418')),
51
- vkHash: Fr.fromString('0x06a5c1b3a636c954a90be43cb56a4bdd9dc8aec764151a012e0018753694ff54')
61
+ vkHash: Fr.fromString('0x2979f430e7a6d4c2222a35a5e00f9c8c0e41c5ad9afa95d8d718f5c1f57ac4f2')
52
62
  }
53
63
  ],
54
64
  MultiCallEntrypoint: [
55
65
  {
56
66
  selector: FunctionSelector.fromField(Fr.fromString('0x00000000000000000000000000000000000000000000000000000000f04908a9')),
57
- vkHash: Fr.fromString('0x0b19b2f937f2581922c2ead5411ad9ff4ed9710efe9849bde494d9a0f94812ec')
67
+ vkHash: Fr.fromString('0x1bc6ab9244a92fe2143e42a1856ea0b29415e0530eda89dd634a0b8630780593')
58
68
  }
59
69
  ],
60
- PublicChecks: []
70
+ PublicChecks: [],
71
+ HandshakeRegistry: [
72
+ {
73
+ selector: FunctionSelector.fromField(Fr.fromString('0x0000000000000000000000000000000000000000000000000000000019f8b409')),
74
+ vkHash: Fr.fromString('0x136fb94bf8b1bfdb25f4d6c6ced06b8db140a268330308027b32ced3151faa81')
75
+ },
76
+ {
77
+ selector: FunctionSelector.fromField(Fr.fromString('0x00000000000000000000000000000000000000000000000000000000db548fcf')),
78
+ vkHash: Fr.fromString('0x06bfb80a0e8d1c8f941c7f91c233e56febcb60300c4dcbf878df87120aa9a89f')
79
+ },
80
+ {
81
+ selector: FunctionSelector.fromField(Fr.fromString('0x00000000000000000000000000000000000000000000000000000000f1ff839b')),
82
+ vkHash: Fr.fromString('0x05eef6388f1678ef7a24ed7829a15abf8fb76922ed73477114ff4828e2772535')
83
+ }
84
+ ]
61
85
  };
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@aztec/standard-contracts",
3
3
  "homepage": "https://github.com/AztecProtocol/aztec-packages/tree/master/yarn-project/standard-contracts",
4
4
  "description": "Standard non-protocol contracts for the Aztec Network",
5
- "version": "0.0.1-commit.8655d4a",
5
+ "version": "0.0.1-commit.9a89641",
6
6
  "type": "module",
7
7
  "exports": {
8
8
  ".": "./dest/index.js",
@@ -10,7 +10,8 @@
10
10
  "./*/lazy": "./dest/*/lazy.js",
11
11
  "./auth-registry/constants": "./dest/auth-registry/constants.js",
12
12
  "./public-checks/constants": "./dest/public-checks/constants.js",
13
- "./multi-call-entrypoint/constants": "./dest/multi-call-entrypoint/constants.js"
13
+ "./multi-call-entrypoint/constants": "./dest/multi-call-entrypoint/constants.js",
14
+ "./handshake-registry/constants": "./dest/handshake-registry/constants.js"
14
15
  },
15
16
  "typedocOptions": {
16
17
  "entryPoints": [
@@ -73,8 +74,8 @@
73
74
  ]
74
75
  },
75
76
  "dependencies": {
76
- "@aztec/foundation": "0.0.1-commit.8655d4a",
77
- "@aztec/stdlib": "0.0.1-commit.8655d4a",
77
+ "@aztec/foundation": "0.0.1-commit.9a89641",
78
+ "@aztec/stdlib": "0.0.1-commit.9a89641",
78
79
  "tslib": "^2.4.0"
79
80
  },
80
81
  "devDependencies": {
@@ -1,8 +1,10 @@
1
1
  // Address-only leaf export for browser bundles: importing from
2
2
  // `@aztec/standard-contracts/auth-registry/constants` avoids dragging in the
3
3
  // `AuthRegistry.json` static import.
4
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
5
+
4
6
  import { StandardContractAddress, StandardContractClassId, StandardContractSalt } from '../standard_contract_data.js';
5
7
 
6
- export const STANDARD_AUTH_REGISTRY_ADDRESS = StandardContractAddress.AuthRegistry;
8
+ export const STANDARD_AUTH_REGISTRY_ADDRESS: AztecAddress = StandardContractAddress.AuthRegistry;
7
9
  export const STANDARD_AUTH_REGISTRY_CLASS_ID = StandardContractClassId.AuthRegistry;
8
10
  export const STANDARD_AUTH_REGISTRY_SALT = StandardContractSalt.AuthRegistry;
@@ -25,20 +25,17 @@ import { promises as fs } from 'fs';
25
25
  import path from 'path';
26
26
 
27
27
  /** Root of the noir-contracts package relative to `yarn-project/standard-contracts`. */
28
- export const NOIR_CONTRACTS_ROOT = '../../noir-projects/noir-contracts';
28
+ export const NOIR_CONTRACTS_ROOT = '../../noir-projects/labs/noir-contracts';
29
29
  /** Directory holding the freshly-compiled Noir artifacts the generator reads from. */
30
30
  export const NOIR_ARTIFACTS_SRC_PATH = path.join(NOIR_CONTRACTS_ROOT, './target');
31
31
  /** Output directory inside this package where the trimmed artifacts get copied. */
32
32
  export const STANDARD_ARTIFACTS_DEST_DIR = './artifacts';
33
33
  /** Path of the generated TS data file (addresses, class IDs, etc.). */
34
34
  export const STANDARD_CONTRACT_DATA_OUTPUT_PATH = './src/standard_contract_data.ts';
35
- // Both consumers (aztec-nr's `aztec` crate and noir-contracts' `aztec_sublib`) need an identical
36
- // twin of the generated addresses module. `aztec_sublib` cannot depend on `aztec`, so we stamp the
37
- // same file into both locations rather than introducing a shared crate.
38
- export const NOIR_STANDARD_ADDRESSES_PATHS = [
39
- '../../noir-projects/aztec-nr/aztec/src/standard_addresses.nr',
40
- '../../noir-projects/noir-contracts/contracts/protocol/aztec_sublib/src/standard_addresses.nr',
41
- ];
35
+ // The `aztec` crate in aztec-nr needs a twin of the generated addresses module stamped into its
36
+ // source so circuits can reference standard-contract addresses at compile time (e.g. authwit and
37
+ // public_checks) without re-hashing at runtime.
38
+ export const NOIR_STANDARD_ADDRESSES_PATHS = ['../../noir-projects/labs/aztec-nr/aztec/src/standard_addresses.nr'];
42
39
 
43
40
  /** The deployment salt baked into every standard contract instance. */
44
41
  export const STANDARD_CONTRACT_SALT = new Fr(1);
@@ -65,6 +62,11 @@ export const standardContracts: { name: string; src: string; nrConst: string | n
65
62
  nrConst: 'STANDARD_MULTI_CALL_ENTRYPOINT_ADDRESS',
66
63
  },
67
64
  { name: 'PublicChecks', src: 'public_checks_contract-PublicChecks', nrConst: 'STANDARD_PUBLIC_CHECKS_ADDRESS' },
65
+ {
66
+ name: 'HandshakeRegistry',
67
+ src: 'handshake_registry_contract-HandshakeRegistry',
68
+ nrConst: 'STANDARD_HANDSHAKE_REGISTRY_ADDRESS',
69
+ },
68
70
  ];
69
71
 
70
72
  /** Everything derived from a compiled standard-contract artifact that the generator emits. */
package/src/drift.ts CHANGED
@@ -37,7 +37,7 @@ function generateSalts(names: string[]) {
37
37
  function generateAddresses(names: string[], contractData: ContractData[]) {
38
38
  return `
39
39
  export const StandardContractAddress: Record<StandardContractName, AztecAddress> = {
40
- ${contractData.map((d, i) => `${names[i]}: AztecAddress.fromString('${d.address.toString()}')`).join(',\n')}
40
+ ${contractData.map((d, i) => `${names[i]}: AztecAddress.fromStringUnsafe('${d.address.toString()}')`).join(',\n')}
41
41
  };
42
42
  `;
43
43
  }
@@ -0,0 +1,23 @@
1
+ // Lightweight metadata leaf export for browser bundles: importing from
2
+ // `@aztec/standard-contracts/handshake-registry/constants` avoids dragging in the
3
+ // `HandshakeRegistry.json` static import.
4
+ import { sha256ToField } from '@aztec/foundation/crypto/sha256';
5
+ import type { Fr } from '@aztec/foundation/curves/bn254';
6
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
7
+
8
+ import { StandardContractAddress, StandardContractClassId, StandardContractSalt } from '../standard_contract_data.js';
9
+
10
+ export const STANDARD_HANDSHAKE_REGISTRY_ADDRESS: AztecAddress = StandardContractAddress.HandshakeRegistry;
11
+ export const STANDARD_HANDSHAKE_REGISTRY_CLASS_ID = StandardContractClassId.HandshakeRegistry;
12
+ export const STANDARD_HANDSHAKE_REGISTRY_SALT = StandardContractSalt.HandshakeRegistry;
13
+
14
+ /**
15
+ * Request kind under which the HandshakeRegistry asks for a recipient's interactive-handshake signature through the
16
+ * `resolveCustomRequest` hook. Mirrors `INTERACTIVE_HANDSHAKE_REQUEST_KIND` in the registry contract.
17
+ */
18
+ // TODO: remove this mirrored constant and read the value from the HandshakeRegistry artifact once the contract
19
+ // global can be `#[abi]`-exported. Fixed upstream but not yet released:
20
+ // https://github.com/noir-lang/noir/pull/12714 and https://github.com/noir-lang/noir/issues/12620.
21
+ export const INTERACTIVE_HANDSHAKE_REQUEST_KIND: Fr = sha256ToField([
22
+ Buffer.from('HANDSHAKE_REGISTRY::INTERACTIVE_HANDSHAKE_REQUEST'),
23
+ ]);
@@ -0,0 +1,25 @@
1
+ import { loadContractArtifact } from '@aztec/stdlib/abi';
2
+ import type { NoirCompiledContract } from '@aztec/stdlib/noir';
3
+
4
+ import HandshakeRegistryJson from '../../artifacts/HandshakeRegistry.json' with { type: 'json' };
5
+ import { makeStandardContract } from '../make_standard_contract.js';
6
+ import type { StandardContract } from '../standard_contract.js';
7
+
8
+ export {
9
+ INTERACTIVE_HANDSHAKE_REQUEST_KIND,
10
+ STANDARD_HANDSHAKE_REGISTRY_ADDRESS,
11
+ STANDARD_HANDSHAKE_REGISTRY_CLASS_ID,
12
+ STANDARD_HANDSHAKE_REGISTRY_SALT,
13
+ } from './constants.js';
14
+
15
+ export const HandshakeRegistryArtifact = loadContractArtifact(HandshakeRegistryJson as NoirCompiledContract);
16
+
17
+ let standardContract: StandardContract;
18
+
19
+ /** Returns the standard deployment of the handshake registry. */
20
+ export function getStandardHandshakeRegistry(): Promise<StandardContract> {
21
+ if (!standardContract) {
22
+ standardContract = makeStandardContract('HandshakeRegistry', HandshakeRegistryArtifact);
23
+ }
24
+ return Promise.resolve(standardContract);
25
+ }