Skip to content

Commit ca5a3f8

Browse files
committed
refactor(standard-contracts): mirror protocol-contracts pattern with shared infra
1 parent 67ad0fa commit ca5a3f8

17 files changed

Lines changed: 296 additions & 446 deletions

File tree

noir-projects/aztec-nr/standard_addresses/src/auth_registry.nr

Lines changed: 0 additions & 14 deletions
This file was deleted.
Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
1-
// Aggregator module for standard contract address stamps.
2-
//
3-
// Each submodule is generated by a script under
4-
// `yarn-project/standard-contracts/src/scripts/`. The hand-written
5-
// re-exports here keep downstream consumers using flat
6-
// `standard_addresses::FOO_ADDRESS` paths regardless of where the
7-
// stamp is generated.
1+
// GENERATED FILE - DO NOT EDIT. RUN `yarn workspace @aztec/standard-contracts run generate`.
2+
use protocol_types::{address::AztecAddress, traits::FromField};
83

9-
pub mod auth_registry;
10-
11-
pub use auth_registry::AUTH_REGISTRY_ADDRESS;
4+
pub global AUTH_REGISTRY_ADDRESS: AztecAddress = AztecAddress::from_field(
5+
0x1f7f0c3d878160356b2025b056a7a390ab34bd17f2ba4320ffb4a71698d5bf3a,
6+
);

yarn-project/standard-contracts/package.json

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
".": "./dest/index.js",
99
"./*": "./dest/*/index.js",
1010
"./*/lazy": "./dest/*/lazy.js",
11-
"./auth-registry/address": "./dest/auth-registry/address.gen.js"
11+
"./*/address": "./dest/*/address.js"
1212
},
1313
"typedocOptions": {
1414
"entryPoints": [
@@ -24,7 +24,6 @@
2424
"generate": "yarn generate:data",
2525
"generate:cleanup-artifacts": "node --no-warnings --loader @swc-node/register/esm src/scripts/cleanup_artifacts.ts",
2626
"generate:data": "node --no-warnings --loader @swc-node/register/esm src/scripts/generate_data.ts",
27-
"regen:auth-registry-address": "node --experimental-vm-modules dest/scripts/derive_auth_registry.js",
2827
"build:dev": "../scripts/tsc.sh --watch",
2928
"build:ts": "../scripts/tsc.sh",
3029
"clean": "rm -rf ./dest .tsbuildinfo ./artifacts",
@@ -73,7 +72,6 @@
7372
},
7473
"dependencies": {
7574
"@aztec/foundation": "workspace:^",
76-
"@aztec/protocol-contracts": "workspace:^",
7775
"@aztec/stdlib": "workspace:^",
7876
"tslib": "^2.4.0"
7977
},

yarn-project/standard-contracts/src/auth-registry/README.md

Lines changed: 0 additions & 14 deletions
This file was deleted.

yarn-project/standard-contracts/src/auth-registry/address.gen.ts

Lines changed: 0 additions & 11 deletions
This file was deleted.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// Address-only leaf export for browser bundles: importing from
2+
// `@aztec/standard-contracts/auth-registry/address` avoids dragging in the
3+
// `AuthRegistry.json` static import.
4+
import { StandardContractAddress, StandardContractClassId } from '../standard_contract_data.js';
5+
6+
export const AUTH_REGISTRY_ADDRESS = StandardContractAddress.AuthRegistry;
7+
export const AUTH_REGISTRY_CLASS_ID = StandardContractClassId.AuthRegistry;

yarn-project/standard-contracts/src/auth-registry/derive_auth_registry.test.ts

Lines changed: 0 additions & 94 deletions
This file was deleted.

yarn-project/standard-contracts/src/auth-registry/derive_auth_registry.ts

Lines changed: 0 additions & 140 deletions
This file was deleted.
Lines changed: 10 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,20 @@
1-
import { Fr } from '@aztec/foundation/curves/bn254';
2-
import type { ProtocolContract } from '@aztec/protocol-contracts';
3-
import { type ContractArtifact, loadContractArtifact } from '@aztec/stdlib/abi';
4-
import { AztecAddress } from '@aztec/stdlib/aztec-address';
5-
import { computeInitializationHash, getContractClassFromArtifact } from '@aztec/stdlib/contract';
6-
import { PublicKeys } from '@aztec/stdlib/keys';
1+
import { loadContractArtifact } from '@aztec/stdlib/abi';
72
import type { NoirCompiledContract } from '@aztec/stdlib/noir';
83

94
import AuthRegistryJson from '../../artifacts/AuthRegistry.json' with { type: 'json' };
10-
import { AUTH_REGISTRY_ADDRESS, AUTH_REGISTRY_CLASS_ID } from './address.gen.js';
5+
import { makeStandardContract } from '../make_standard_contract.js';
6+
import type { StandardContract } from '../standard_contract.js';
117

12-
export { AUTH_REGISTRY_ADDRESS, AUTH_REGISTRY_CLASS_ID } from './address.gen.js';
8+
export { AUTH_REGISTRY_ADDRESS, AUTH_REGISTRY_CLASS_ID } from './address.js';
139

14-
let protocolContract: ProtocolContract;
10+
export const AuthRegistryArtifact = loadContractArtifact(AuthRegistryJson as NoirCompiledContract);
1511

16-
export const AuthRegistryArtifact: ContractArtifact = loadContractArtifact(AuthRegistryJson as NoirCompiledContract);
12+
let standardContract: StandardContract;
1713

1814
/** Returns the standard deployment of the auth registry. */
19-
export async function getStandardAuthRegistry(): Promise<ProtocolContract> {
20-
if (!protocolContract) {
21-
protocolContract = await buildAuthRegistryProtocolContract(AuthRegistryArtifact);
15+
export function getStandardAuthRegistry(): Promise<StandardContract> {
16+
if (!standardContract) {
17+
standardContract = makeStandardContract('AuthRegistry', AuthRegistryArtifact);
2218
}
23-
return protocolContract;
24-
}
25-
26-
async function buildAuthRegistryProtocolContract(artifact: ContractArtifact): Promise<ProtocolContract> {
27-
const contractClass = await getContractClassFromArtifact(artifact);
28-
if (!contractClass.id.equals(AUTH_REGISTRY_CLASS_ID)) {
29-
throw new Error(
30-
`auth_registry artifact class id ${contractClass.id.toString()} does not match committed ` +
31-
`AUTH_REGISTRY_CLASS_ID ${AUTH_REGISTRY_CLASS_ID.toString()}; regenerate via ` +
32-
`\`yarn workspace @aztec/standard-contracts run regen:auth-registry-address\`.`,
33-
);
34-
}
35-
const constructorArtifact = artifact.functions.find(f => f.name === 'constructor');
36-
const initializationHash = await computeInitializationHash(constructorArtifact, []);
37-
38-
const instance = {
39-
version: 1 as const,
40-
currentContractClassId: AUTH_REGISTRY_CLASS_ID,
41-
originalContractClassId: AUTH_REGISTRY_CLASS_ID,
42-
initializationHash,
43-
publicKeys: PublicKeys.default(),
44-
salt: new Fr(1),
45-
deployer: AztecAddress.ZERO,
46-
address: AUTH_REGISTRY_ADDRESS,
47-
};
48-
49-
return { instance, contractClass, artifact, address: AUTH_REGISTRY_ADDRESS };
19+
return Promise.resolve(standardContract);
5020
}

0 commit comments

Comments
 (0)