@aztec/standard-contracts 0.0.1-commit.a4600f49 → 0.0.1-commit.aa0c64f
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/artifacts/AuthRegistry.json +276 -2151
- package/artifacts/HandshakeRegistry.json +379 -277
- package/artifacts/MultiCallEntrypoint.json +452 -2569
- package/artifacts/PublicChecks.json +700 -2421
- package/dest/handshake-registry/constants.d.ts +9 -3
- package/dest/handshake-registry/constants.d.ts.map +1 -1
- package/dest/handshake-registry/constants.js +10 -0
- package/dest/handshake-registry/index.d.ts +2 -2
- package/dest/handshake-registry/index.d.ts.map +1 -1
- package/dest/handshake-registry/index.js +1 -1
- package/dest/index.d.ts +2 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +1 -0
- package/dest/publishable_standard_contracts.d.ts +17 -0
- package/dest/publishable_standard_contracts.d.ts.map +1 -0
- package/dest/publishable_standard_contracts.js +23 -0
- package/dest/standard_contract_data.js +15 -15
- package/package.json +3 -3
- package/src/handshake-registry/constants.ts +13 -0
- package/src/handshake-registry/index.ts +1 -0
- package/src/index.ts +1 -0
- package/src/publishable_standard_contracts.ts +22 -0
- package/src/standard_contract_data.ts +15 -15
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
1
2
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
2
3
|
export declare const STANDARD_HANDSHAKE_REGISTRY_ADDRESS: AztecAddress;
|
|
3
|
-
export declare const STANDARD_HANDSHAKE_REGISTRY_CLASS_ID:
|
|
4
|
-
export declare const STANDARD_HANDSHAKE_REGISTRY_SALT:
|
|
5
|
-
|
|
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=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/handshake-registry/constants.ts"],"names":[],"mappings":"
|
|
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"}
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
// Lightweight metadata leaf export for browser bundles: importing from
|
|
2
2
|
// `@aztec/standard-contracts/handshake-registry/constants` avoids dragging in the
|
|
3
3
|
// `HandshakeRegistry.json` static import.
|
|
4
|
+
import { sha256ToField } from '@aztec/foundation/crypto/sha256';
|
|
4
5
|
import { StandardContractAddress, StandardContractClassId, StandardContractSalt } from '../standard_contract_data.js';
|
|
5
6
|
export const STANDARD_HANDSHAKE_REGISTRY_ADDRESS = StandardContractAddress.HandshakeRegistry;
|
|
6
7
|
export const STANDARD_HANDSHAKE_REGISTRY_CLASS_ID = StandardContractClassId.HandshakeRegistry;
|
|
7
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
|
+
]);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { StandardContract } from '../standard_contract.js';
|
|
2
|
-
export { STANDARD_HANDSHAKE_REGISTRY_ADDRESS, STANDARD_HANDSHAKE_REGISTRY_CLASS_ID, STANDARD_HANDSHAKE_REGISTRY_SALT, } from './constants.js';
|
|
2
|
+
export { INTERACTIVE_HANDSHAKE_REQUEST_KIND, STANDARD_HANDSHAKE_REGISTRY_ADDRESS, STANDARD_HANDSHAKE_REGISTRY_CLASS_ID, STANDARD_HANDSHAKE_REGISTRY_SALT, } from './constants.js';
|
|
3
3
|
export declare const HandshakeRegistryArtifact: import("@aztec/stdlib/abi").ContractArtifact;
|
|
4
4
|
/** Returns the standard deployment of the handshake registry. */
|
|
5
5
|
export declare function getStandardHandshakeRegistry(): Promise<StandardContract>;
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oYW5kc2hha2UtcmVnaXN0cnkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVoRSxPQUFPLEVBQ0wsa0NBQWtDLEVBQ2xDLG1DQUFtQyxFQUNuQyxvQ0FBb0MsRUFDcEMsZ0NBQWdDLEdBQ2pDLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsZUFBTyxNQUFNLHlCQUF5Qiw4Q0FBc0UsQ0FBQztBQUk3RyxpRUFBaUU7QUFDakUsd0JBQWdCLDRCQUE0QixJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUt4RSJ9
|
|
@@ -1 +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,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"}
|
|
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"}
|
|
@@ -3,7 +3,7 @@ import HandshakeRegistryJson from '../../artifacts/HandshakeRegistry.json' with
|
|
|
3
3
|
type: 'json'
|
|
4
4
|
};
|
|
5
5
|
import { makeStandardContract } from '../make_standard_contract.js';
|
|
6
|
-
export { STANDARD_HANDSHAKE_REGISTRY_ADDRESS, STANDARD_HANDSHAKE_REGISTRY_CLASS_ID, STANDARD_HANDSHAKE_REGISTRY_SALT } from './constants.js';
|
|
6
|
+
export { INTERACTIVE_HANDSHAKE_REQUEST_KIND, STANDARD_HANDSHAKE_REGISTRY_ADDRESS, STANDARD_HANDSHAKE_REGISTRY_CLASS_ID, STANDARD_HANDSHAKE_REGISTRY_SALT } from './constants.js';
|
|
7
7
|
export const HandshakeRegistryArtifact = loadContractArtifact(HandshakeRegistryJson);
|
|
8
8
|
let standardContract;
|
|
9
9
|
/** Returns the standard deployment of the handshake registry. */ export function getStandardHandshakeRegistry() {
|
package/dest/index.d.ts
CHANGED
|
@@ -2,4 +2,5 @@ export * from './auth-registry/index.js';
|
|
|
2
2
|
export * from './handshake-registry/index.js';
|
|
3
3
|
export * from './multi-call-entrypoint/index.js';
|
|
4
4
|
export * from './public-checks/index.js';
|
|
5
|
-
|
|
5
|
+
export * from './publishable_standard_contracts.js';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMscUNBQXFDLENBQUMifQ==
|
package/dest/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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"}
|
|
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
|
@@ -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
|
+
}
|
|
@@ -15,36 +15,36 @@ export const StandardContractSalt = {
|
|
|
15
15
|
HandshakeRegistry: new Fr(1)
|
|
16
16
|
};
|
|
17
17
|
export const StandardContractAddress = {
|
|
18
|
-
AuthRegistry: AztecAddress.fromStringUnsafe('
|
|
19
|
-
MultiCallEntrypoint: AztecAddress.fromStringUnsafe('
|
|
20
|
-
PublicChecks: AztecAddress.fromStringUnsafe('
|
|
21
|
-
HandshakeRegistry: AztecAddress.fromStringUnsafe('
|
|
18
|
+
AuthRegistry: AztecAddress.fromStringUnsafe('0x1fe01dde371ec27308a4e5d1f08d2e734b773352c1f47d9d5b0974c1729ac16e'),
|
|
19
|
+
MultiCallEntrypoint: AztecAddress.fromStringUnsafe('0x124b09dd9229a0e476e5d5affcbd917c16400d7673a6b589497650afc18456da'),
|
|
20
|
+
PublicChecks: AztecAddress.fromStringUnsafe('0x0de6d5fa41576a2289a289180c5ba3b1b75d19a630c779cfbef4480e27ac3e28'),
|
|
21
|
+
HandshakeRegistry: AztecAddress.fromStringUnsafe('0x1f81756ef59026857b437350d1123ea317cacf3a20b95c77586d618591b8bb93')
|
|
22
22
|
};
|
|
23
23
|
export const StandardContractClassId = {
|
|
24
|
-
AuthRegistry: Fr.fromString('
|
|
25
|
-
MultiCallEntrypoint: Fr.fromString('
|
|
26
|
-
PublicChecks: Fr.fromString('
|
|
27
|
-
HandshakeRegistry: Fr.fromString('
|
|
24
|
+
AuthRegistry: Fr.fromString('0x07429c3c22c191987452fe7c8daeb56b8a4ada6d94fed30e7fb6659da36c5099'),
|
|
25
|
+
MultiCallEntrypoint: Fr.fromString('0x28aa32d375f8c4acb57cf9ee899bd3b08a5a148cecf2064602fe818aafdf6e33'),
|
|
26
|
+
PublicChecks: Fr.fromString('0x0ac1bd3e46990fdcd9c4182ca9dab6d9b22dda5ee1a9fe581dde36a6ea639596'),
|
|
27
|
+
HandshakeRegistry: Fr.fromString('0x1544fd83a3880eca21d17789665e5281318ea4f9395aef53217463deb5b82619')
|
|
28
28
|
};
|
|
29
29
|
export const StandardContractClassIdPreimage = {
|
|
30
30
|
AuthRegistry: {
|
|
31
|
-
artifactHash: Fr.fromString('
|
|
31
|
+
artifactHash: Fr.fromString('0x0d029bbbf1f83e4c8c088213c7b7d200d2e89d2085183f53151d59ba369e1fab'),
|
|
32
32
|
privateFunctionsRoot: Fr.fromString('0x211b33685bcb41a5d3a2a84d8ec021c7280392cb4aae5a778eafe5282dbba740'),
|
|
33
33
|
publicBytecodeCommitment: Fr.fromString('0x0c7984b020afc901da3b5898b8f94d1d9a09ea2b37d6e0043409abc0b0332906')
|
|
34
34
|
},
|
|
35
35
|
MultiCallEntrypoint: {
|
|
36
|
-
artifactHash: Fr.fromString('
|
|
36
|
+
artifactHash: Fr.fromString('0x28f8874c4768c1072922ca41c49ba1f302aefb7f858ebb289dc17c993abc8528'),
|
|
37
37
|
privateFunctionsRoot: Fr.fromString('0x2cd2008a79f59c3f2caa996962b0b35889f5ee8fcf175282406a2a521550cc70'),
|
|
38
38
|
publicBytecodeCommitment: Fr.fromString('0x0ce4c618c3ed7f3a20410e618c06bb701e150af7fe28a3e92f68e7733809f33e')
|
|
39
39
|
},
|
|
40
40
|
PublicChecks: {
|
|
41
|
-
artifactHash: Fr.fromString('
|
|
41
|
+
artifactHash: Fr.fromString('0x1149d0cd4421cb20fccdcf2c73c79df4e773e30f6c4b8d24e8c1cd718d34d50b'),
|
|
42
42
|
privateFunctionsRoot: Fr.fromString('0x202860adb1b8975971eeaf571aaaa88a27f4035290d58532ae7d60b0dfaad54c'),
|
|
43
43
|
publicBytecodeCommitment: Fr.fromString('0x013c4f854a5c87c9daf86c5f9bc07a42c2a061f1d924a5b3564ec7edc8e18cb7')
|
|
44
44
|
},
|
|
45
45
|
HandshakeRegistry: {
|
|
46
|
-
artifactHash: Fr.fromString('
|
|
47
|
-
privateFunctionsRoot: Fr.fromString('
|
|
46
|
+
artifactHash: Fr.fromString('0x1c02c2ba7d53ec4fd5450d6dc7f86ab1b17a6fcfa5a50850405e7529acc9638b'),
|
|
47
|
+
privateFunctionsRoot: Fr.fromString('0x10288478f6ce295fa9a831e0b712773f4c59287a6bc6ae57b5948519b94f7171'),
|
|
48
48
|
publicBytecodeCommitment: Fr.fromString('0x0ce4c618c3ed7f3a20410e618c06bb701e150af7fe28a3e92f68e7733809f33e')
|
|
49
49
|
}
|
|
50
50
|
};
|
|
@@ -71,11 +71,11 @@ export const StandardContractPrivateFunctions = {
|
|
|
71
71
|
HandshakeRegistry: [
|
|
72
72
|
{
|
|
73
73
|
selector: FunctionSelector.fromField(Fr.fromString('0x0000000000000000000000000000000000000000000000000000000019f8b409')),
|
|
74
|
-
vkHash: Fr.fromString('
|
|
74
|
+
vkHash: Fr.fromString('0x136fb94bf8b1bfdb25f4d6c6ced06b8db140a268330308027b32ced3151faa81')
|
|
75
75
|
},
|
|
76
76
|
{
|
|
77
77
|
selector: FunctionSelector.fromField(Fr.fromString('0x00000000000000000000000000000000000000000000000000000000db548fcf')),
|
|
78
|
-
vkHash: Fr.fromString('
|
|
78
|
+
vkHash: Fr.fromString('0x06bfb80a0e8d1c8f941c7f91c233e56febcb60300c4dcbf878df87120aa9a89f')
|
|
79
79
|
},
|
|
80
80
|
{
|
|
81
81
|
selector: FunctionSelector.fromField(Fr.fromString('0x00000000000000000000000000000000000000000000000000000000f1ff839b')),
|
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.
|
|
5
|
+
"version": "0.0.1-commit.aa0c64f",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"exports": {
|
|
8
8
|
".": "./dest/index.js",
|
|
@@ -74,8 +74,8 @@
|
|
|
74
74
|
]
|
|
75
75
|
},
|
|
76
76
|
"dependencies": {
|
|
77
|
-
"@aztec/foundation": "0.0.1-commit.
|
|
78
|
-
"@aztec/stdlib": "0.0.1-commit.
|
|
77
|
+
"@aztec/foundation": "0.0.1-commit.aa0c64f",
|
|
78
|
+
"@aztec/stdlib": "0.0.1-commit.aa0c64f",
|
|
79
79
|
"tslib": "^2.4.0"
|
|
80
80
|
},
|
|
81
81
|
"devDependencies": {
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
// Lightweight metadata leaf export for browser bundles: importing from
|
|
2
2
|
// `@aztec/standard-contracts/handshake-registry/constants` avoids dragging in the
|
|
3
3
|
// `HandshakeRegistry.json` static import.
|
|
4
|
+
import { sha256ToField } from '@aztec/foundation/crypto/sha256';
|
|
5
|
+
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
6
|
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
5
7
|
|
|
6
8
|
import { StandardContractAddress, StandardContractClassId, StandardContractSalt } from '../standard_contract_data.js';
|
|
@@ -8,3 +10,14 @@ import { StandardContractAddress, StandardContractClassId, StandardContractSalt
|
|
|
8
10
|
export const STANDARD_HANDSHAKE_REGISTRY_ADDRESS: AztecAddress = StandardContractAddress.HandshakeRegistry;
|
|
9
11
|
export const STANDARD_HANDSHAKE_REGISTRY_CLASS_ID = StandardContractClassId.HandshakeRegistry;
|
|
10
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
|
+
]);
|
|
@@ -6,6 +6,7 @@ import { makeStandardContract } from '../make_standard_contract.js';
|
|
|
6
6
|
import type { StandardContract } from '../standard_contract.js';
|
|
7
7
|
|
|
8
8
|
export {
|
|
9
|
+
INTERACTIVE_HANDSHAKE_REQUEST_KIND,
|
|
9
10
|
STANDARD_HANDSHAKE_REGISTRY_ADDRESS,
|
|
10
11
|
STANDARD_HANDSHAKE_REGISTRY_CLASS_ID,
|
|
11
12
|
STANDARD_HANDSHAKE_REGISTRY_SALT,
|
package/src/index.ts
CHANGED
|
@@ -0,0 +1,22 @@
|
|
|
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
|
+
import type { StandardContract } from './standard_contract.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Returns the standard contracts that are published on-chain (class registration + instance
|
|
8
|
+
* publication) before their public functions can be called: AuthRegistry, PublicChecks, and
|
|
9
|
+
* HandshakeRegistry. These are exactly the contracts guarded by the `ensure*Published` e2e setup
|
|
10
|
+
* helpers.
|
|
11
|
+
*
|
|
12
|
+
* MultiCallEntrypoint is deliberately excluded: it is a client-side entrypoint used to encode
|
|
13
|
+
* batched private calls and is never published for public execution.
|
|
14
|
+
*
|
|
15
|
+
* This is the single source of truth for the set of standard contracts that test environments seed
|
|
16
|
+
* at genesis (registration/deployment nullifiers) and preload into the archiver contract store, so
|
|
17
|
+
* the two stay consistent — preloading a class whose nullifier is not seeded would recreate the
|
|
18
|
+
* publish-collision bug that genesis seeding avoids.
|
|
19
|
+
*/
|
|
20
|
+
export function getPublishableStandardContracts(): Promise<StandardContract[]> {
|
|
21
|
+
return Promise.all([getStandardAuthRegistry(), getStandardPublicChecks(), getStandardHandshakeRegistry()]);
|
|
22
|
+
}
|
|
@@ -20,21 +20,21 @@ export const StandardContractSalt: Record<StandardContractName, Fr> = {
|
|
|
20
20
|
};
|
|
21
21
|
|
|
22
22
|
export const StandardContractAddress: Record<StandardContractName, AztecAddress> = {
|
|
23
|
-
AuthRegistry: AztecAddress.fromStringUnsafe('
|
|
23
|
+
AuthRegistry: AztecAddress.fromStringUnsafe('0x1fe01dde371ec27308a4e5d1f08d2e734b773352c1f47d9d5b0974c1729ac16e'),
|
|
24
24
|
MultiCallEntrypoint: AztecAddress.fromStringUnsafe(
|
|
25
|
-
'
|
|
25
|
+
'0x124b09dd9229a0e476e5d5affcbd917c16400d7673a6b589497650afc18456da',
|
|
26
26
|
),
|
|
27
|
-
PublicChecks: AztecAddress.fromStringUnsafe('
|
|
27
|
+
PublicChecks: AztecAddress.fromStringUnsafe('0x0de6d5fa41576a2289a289180c5ba3b1b75d19a630c779cfbef4480e27ac3e28'),
|
|
28
28
|
HandshakeRegistry: AztecAddress.fromStringUnsafe(
|
|
29
|
-
'
|
|
29
|
+
'0x1f81756ef59026857b437350d1123ea317cacf3a20b95c77586d618591b8bb93',
|
|
30
30
|
),
|
|
31
31
|
};
|
|
32
32
|
|
|
33
33
|
export const StandardContractClassId: Record<StandardContractName, Fr> = {
|
|
34
|
-
AuthRegistry: Fr.fromString('
|
|
35
|
-
MultiCallEntrypoint: Fr.fromString('
|
|
36
|
-
PublicChecks: Fr.fromString('
|
|
37
|
-
HandshakeRegistry: Fr.fromString('
|
|
34
|
+
AuthRegistry: Fr.fromString('0x07429c3c22c191987452fe7c8daeb56b8a4ada6d94fed30e7fb6659da36c5099'),
|
|
35
|
+
MultiCallEntrypoint: Fr.fromString('0x28aa32d375f8c4acb57cf9ee899bd3b08a5a148cecf2064602fe818aafdf6e33'),
|
|
36
|
+
PublicChecks: Fr.fromString('0x0ac1bd3e46990fdcd9c4182ca9dab6d9b22dda5ee1a9fe581dde36a6ea639596'),
|
|
37
|
+
HandshakeRegistry: Fr.fromString('0x1544fd83a3880eca21d17789665e5281318ea4f9395aef53217463deb5b82619'),
|
|
38
38
|
};
|
|
39
39
|
|
|
40
40
|
export const StandardContractClassIdPreimage: Record<
|
|
@@ -42,23 +42,23 @@ export const StandardContractClassIdPreimage: Record<
|
|
|
42
42
|
{ artifactHash: Fr; privateFunctionsRoot: Fr; publicBytecodeCommitment: Fr }
|
|
43
43
|
> = {
|
|
44
44
|
AuthRegistry: {
|
|
45
|
-
artifactHash: Fr.fromString('
|
|
45
|
+
artifactHash: Fr.fromString('0x0d029bbbf1f83e4c8c088213c7b7d200d2e89d2085183f53151d59ba369e1fab'),
|
|
46
46
|
privateFunctionsRoot: Fr.fromString('0x211b33685bcb41a5d3a2a84d8ec021c7280392cb4aae5a778eafe5282dbba740'),
|
|
47
47
|
publicBytecodeCommitment: Fr.fromString('0x0c7984b020afc901da3b5898b8f94d1d9a09ea2b37d6e0043409abc0b0332906'),
|
|
48
48
|
},
|
|
49
49
|
MultiCallEntrypoint: {
|
|
50
|
-
artifactHash: Fr.fromString('
|
|
50
|
+
artifactHash: Fr.fromString('0x28f8874c4768c1072922ca41c49ba1f302aefb7f858ebb289dc17c993abc8528'),
|
|
51
51
|
privateFunctionsRoot: Fr.fromString('0x2cd2008a79f59c3f2caa996962b0b35889f5ee8fcf175282406a2a521550cc70'),
|
|
52
52
|
publicBytecodeCommitment: Fr.fromString('0x0ce4c618c3ed7f3a20410e618c06bb701e150af7fe28a3e92f68e7733809f33e'),
|
|
53
53
|
},
|
|
54
54
|
PublicChecks: {
|
|
55
|
-
artifactHash: Fr.fromString('
|
|
55
|
+
artifactHash: Fr.fromString('0x1149d0cd4421cb20fccdcf2c73c79df4e773e30f6c4b8d24e8c1cd718d34d50b'),
|
|
56
56
|
privateFunctionsRoot: Fr.fromString('0x202860adb1b8975971eeaf571aaaa88a27f4035290d58532ae7d60b0dfaad54c'),
|
|
57
57
|
publicBytecodeCommitment: Fr.fromString('0x013c4f854a5c87c9daf86c5f9bc07a42c2a061f1d924a5b3564ec7edc8e18cb7'),
|
|
58
58
|
},
|
|
59
59
|
HandshakeRegistry: {
|
|
60
|
-
artifactHash: Fr.fromString('
|
|
61
|
-
privateFunctionsRoot: Fr.fromString('
|
|
60
|
+
artifactHash: Fr.fromString('0x1c02c2ba7d53ec4fd5450d6dc7f86ab1b17a6fcfa5a50850405e7529acc9638b'),
|
|
61
|
+
privateFunctionsRoot: Fr.fromString('0x10288478f6ce295fa9a831e0b712773f4c59287a6bc6ae57b5948519b94f7171'),
|
|
62
62
|
publicBytecodeCommitment: Fr.fromString('0x0ce4c618c3ed7f3a20410e618c06bb701e150af7fe28a3e92f68e7733809f33e'),
|
|
63
63
|
},
|
|
64
64
|
};
|
|
@@ -96,13 +96,13 @@ export const StandardContractPrivateFunctions: Record<
|
|
|
96
96
|
selector: FunctionSelector.fromField(
|
|
97
97
|
Fr.fromString('0x0000000000000000000000000000000000000000000000000000000019f8b409'),
|
|
98
98
|
),
|
|
99
|
-
vkHash: Fr.fromString('
|
|
99
|
+
vkHash: Fr.fromString('0x136fb94bf8b1bfdb25f4d6c6ced06b8db140a268330308027b32ced3151faa81'),
|
|
100
100
|
},
|
|
101
101
|
{
|
|
102
102
|
selector: FunctionSelector.fromField(
|
|
103
103
|
Fr.fromString('0x00000000000000000000000000000000000000000000000000000000db548fcf'),
|
|
104
104
|
),
|
|
105
|
-
vkHash: Fr.fromString('
|
|
105
|
+
vkHash: Fr.fromString('0x06bfb80a0e8d1c8f941c7f91c233e56febcb60300c4dcbf878df87120aa9a89f'),
|
|
106
106
|
},
|
|
107
107
|
{
|
|
108
108
|
selector: FunctionSelector.fromField(
|