Skip to content

Commit c4b5f14

Browse files
authored
feat: fetching and displaying deployer metadata (#346)
1 parent 7fabb6c commit c4b5f14

File tree

10 files changed

+207
-147
lines changed

10 files changed

+207
-147
lines changed
Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1 @@
1-
import { ChicmozL2ContractInstanceDeployerMetadata } from "@chicmoz-pkg/types";
2-
31
export const SERVICE_NAME = "explorer-api";
4-
5-
export const DEFAULT_VERIFIED_CONTRACT_INSTANCES_DEV: ChicmozL2ContractInstanceDeployerMetadata[] =
6-
// TODO: removeme
7-
[
8-
{
9-
address:
10-
"0x0e5fe9a23c854f14262bb3b3e88dab8e33412d6db17baa199506f865ed746a0c",
11-
uploadedAt: new Date(),
12-
contractIdentifier: "Some contract name/id",
13-
details: "This is a dummy verified contract instance",
14-
creatorName: "Test",
15-
creatorContact:
16-
"email: [email protected], discord: test#1234, telegram: @test",
17-
appUrl: "https://aztec.network",
18-
repoUrl: "https://github.com/AztecProtocol/aztec-packages",
19-
},
20-
];
21-
22-
export const DEFAULT_VERIFIED_CONTRACT_INSTANCES_PROD: ChicmozL2ContractInstanceDeployerMetadata[] =
23-
[
24-
// TODO: Add verified contract instances for production
25-
];

services/explorer-api/src/environment.ts

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,9 @@
11
import {
22
ApiKey,
3-
NODE_ENV,
4-
NodeEnv,
53
apiKeySchema,
64
l2NetworkIdSchema,
75
type L2NetworkId,
86
} from "@chicmoz-pkg/types";
9-
import {
10-
DEFAULT_VERIFIED_CONTRACT_INSTANCES_DEV,
11-
DEFAULT_VERIFIED_CONTRACT_INSTANCES_PROD,
12-
} from "./constants.js";
13-
14-
const verifiedContractAddresses =
15-
NODE_ENV === NodeEnv.PROD
16-
? DEFAULT_VERIFIED_CONTRACT_INSTANCES_PROD
17-
: DEFAULT_VERIFIED_CONTRACT_INSTANCES_DEV;
18-
19-
export const VERIFIED_CONTRACT_INSTANCES_CONTACT = verifiedContractAddresses;
207

218
export const PUBLIC_API_KEY: ApiKey = apiKeySchema.parse(
229
process.env.PUBLIC_API_KEY
Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,27 @@
11
import { getDb as db } from "@chicmoz-pkg/postgres-helper";
22
import { ChicmozL2ContractInstanceDeluxe, HexString } from "@chicmoz-pkg/types";
33
import { and, desc, eq, getTableColumns } from "drizzle-orm";
4-
import { logger } from "../../../../logger.js";
54
import {
65
l2ContractClassRegistered,
76
l2ContractInstanceDeployed,
7+
l2ContractInstanceDeployerMetadataTable,
88
l2ContractInstanceVerifiedDeploymentArguments,
99
} from "../../schema/l2contract/index.js";
1010
import { getContractClassRegisteredColumns, parseDeluxe } from "./utils.js";
1111

1212
export const getL2DeployedContractInstanceByAddress = async (
1313
address: HexString,
14-
includeArtifactJson?: boolean
14+
includeArtifactJson?: boolean,
1515
): Promise<ChicmozL2ContractInstanceDeluxe | null> => {
1616
const result = await db()
1717
.select({
1818
instance: getTableColumns(l2ContractInstanceDeployed),
1919
class: getContractClassRegisteredColumns(includeArtifactJson),
2020
verifiedDeploymentArguments: getTableColumns(
21-
l2ContractInstanceVerifiedDeploymentArguments
21+
l2ContractInstanceVerifiedDeploymentArguments,
22+
),
23+
deployerMetadata: getTableColumns(
24+
l2ContractInstanceDeployerMetadataTable,
2225
),
2326
})
2427
.from(l2ContractInstanceDeployed)
@@ -27,36 +30,47 @@ export const getL2DeployedContractInstanceByAddress = async (
2730
and(
2831
eq(
2932
l2ContractInstanceDeployed.contractClassId,
30-
l2ContractClassRegistered.contractClassId
33+
l2ContractClassRegistered.contractClassId,
3134
),
3235
eq(
3336
l2ContractInstanceDeployed.version,
34-
l2ContractClassRegistered.version
35-
)
36-
)
37+
l2ContractClassRegistered.version,
38+
),
39+
),
3740
)
3841
.leftJoin(
3942
l2ContractInstanceVerifiedDeploymentArguments,
4043
and(
4144
eq(
4245
l2ContractInstanceDeployed.address,
43-
l2ContractInstanceVerifiedDeploymentArguments.address
44-
)
45-
)
46+
l2ContractInstanceVerifiedDeploymentArguments.address,
47+
),
48+
),
49+
)
50+
.leftJoin(
51+
l2ContractInstanceDeployerMetadataTable,
52+
and(
53+
eq(
54+
l2ContractInstanceDeployed.address,
55+
l2ContractInstanceDeployerMetadataTable.address,
56+
),
57+
),
4658
)
4759
.where(eq(l2ContractInstanceDeployed.address, address))
4860
.orderBy(desc(l2ContractInstanceDeployed.version))
4961
.limit(1);
5062

51-
if (result.length === 0) {
52-
logger.info(`No contract instance found for address: ${address}`);
53-
return null;
54-
}
55-
const { instance, class: contractClass, verifiedDeploymentArguments } = result[0];
63+
const {
64+
instance,
65+
class: contractClass,
66+
verifiedDeploymentArguments,
67+
deployerMetadata,
68+
} = result[0];
5669

5770
return parseDeluxe({
5871
contractClass,
5972
instance,
6073
verifiedDeploymentArguments,
74+
deployerMetadata,
6175
});
6276
};

services/explorer-api/src/svcs/database/controllers/l2contract/get-contract-instances.ts

Lines changed: 66 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { l2Block } from "../../schema/index.js";
66
import {
77
l2ContractClassRegistered,
88
l2ContractInstanceDeployed,
9+
l2ContractInstanceDeployerMetadataTable,
910
l2ContractInstanceVerifiedDeploymentArguments,
1011
} from "../../schema/l2contract/index.js";
1112
import { getBlocksWhereRange } from "../utils.js";
@@ -26,7 +27,10 @@ export const getL2DeployedContractInstances = async ({
2627
instance: getTableColumns(l2ContractInstanceDeployed),
2728
class: getContractClassRegisteredColumns(includeArtifactJson),
2829
verifiedDeploymentArguments: getTableColumns(
29-
l2ContractInstanceVerifiedDeploymentArguments
30+
l2ContractInstanceVerifiedDeploymentArguments,
31+
),
32+
deployerMetadata: getTableColumns(
33+
l2ContractInstanceDeployerMetadataTable,
3034
),
3135
})
3236
.from(l2ContractInstanceDeployed)
@@ -35,22 +39,31 @@ export const getL2DeployedContractInstances = async ({
3539
and(
3640
eq(
3741
l2ContractInstanceDeployed.contractClassId,
38-
l2ContractClassRegistered.contractClassId
42+
l2ContractClassRegistered.contractClassId,
3943
),
4044
eq(
4145
l2ContractInstanceDeployed.version,
42-
l2ContractClassRegistered.version
43-
)
44-
)
46+
l2ContractClassRegistered.version,
47+
),
48+
),
4549
)
4650
.leftJoin(
4751
l2ContractInstanceVerifiedDeploymentArguments,
4852
and(
4953
eq(
5054
l2ContractInstanceDeployed.address,
51-
l2ContractInstanceVerifiedDeploymentArguments.address
52-
)
53-
)
55+
l2ContractInstanceVerifiedDeploymentArguments.address,
56+
),
57+
),
58+
)
59+
.leftJoin(
60+
l2ContractInstanceDeployerMetadataTable,
61+
and(
62+
eq(
63+
l2ContractInstanceDeployed.address,
64+
l2ContractInstanceDeployerMetadataTable.address,
65+
),
66+
),
5467
)
5568
.innerJoin(l2Block, eq(l2Block.hash, l2ContractInstanceDeployed.blockHash))
5669
.where(whereRange)
@@ -62,6 +75,7 @@ export const getL2DeployedContractInstances = async ({
6275
contractClass: r.class,
6376
instance: r.instance,
6477
verifiedDeploymentArguments: r.verifiedDeploymentArguments,
78+
deployerMetadata: r.deployerMetadata,
6579
});
6680
});
6781

@@ -70,14 +84,17 @@ export const getL2DeployedContractInstances = async ({
7084

7185
export const getL2DeployedContractInstancesByBlockHash = async (
7286
blockHash: HexString,
73-
includeArtifactJson?: boolean
87+
includeArtifactJson?: boolean,
7488
): Promise<ChicmozL2ContractInstanceDeluxe[]> => {
7589
const result = await db()
7690
.select({
7791
instance: getTableColumns(l2ContractInstanceDeployed),
7892
class: getContractClassRegisteredColumns(includeArtifactJson),
7993
verifiedDeploymentArguments: getTableColumns(
80-
l2ContractInstanceVerifiedDeploymentArguments
94+
l2ContractInstanceVerifiedDeploymentArguments,
95+
),
96+
deployerMetadata: getTableColumns(
97+
l2ContractInstanceDeployerMetadataTable,
8198
),
8299
})
83100
.from(l2ContractInstanceDeployed)
@@ -86,22 +103,31 @@ export const getL2DeployedContractInstancesByBlockHash = async (
86103
and(
87104
eq(
88105
l2ContractInstanceDeployed.contractClassId,
89-
l2ContractClassRegistered.contractClassId
106+
l2ContractClassRegistered.contractClassId,
90107
),
91108
eq(
92109
l2ContractInstanceDeployed.version,
93-
l2ContractClassRegistered.version
94-
)
95-
)
110+
l2ContractClassRegistered.version,
111+
),
112+
),
96113
)
97114
.leftJoin(
98115
l2ContractInstanceVerifiedDeploymentArguments,
99116
and(
100117
eq(
101118
l2ContractInstanceDeployed.address,
102-
l2ContractInstanceVerifiedDeploymentArguments.address
103-
)
104-
)
119+
l2ContractInstanceVerifiedDeploymentArguments.address,
120+
),
121+
),
122+
)
123+
.leftJoin(
124+
l2ContractInstanceDeployerMetadataTable,
125+
and(
126+
eq(
127+
l2ContractInstanceDeployed.address,
128+
l2ContractInstanceDeployerMetadataTable.address,
129+
),
130+
),
105131
)
106132
.where(eq(l2ContractInstanceDeployed.blockHash, blockHash))
107133
.orderBy(desc(l2ContractInstanceDeployed.version));
@@ -111,20 +137,24 @@ export const getL2DeployedContractInstancesByBlockHash = async (
111137
contractClass: r.class,
112138
instance: r.instance,
113139
verifiedDeploymentArguments: r.verifiedDeploymentArguments,
140+
deployerMetadata: r.deployerMetadata,
114141
});
115142
});
116143
};
117144

118145
export const getL2DeployedContractInstancesByContractClassId = async (
119146
contractClassId: string,
120-
includeArtifactJson?: boolean
147+
includeArtifactJson?: boolean,
121148
): Promise<ChicmozL2ContractInstanceDeluxe[]> => {
122149
const result = await db()
123150
.select({
124151
instance: getTableColumns(l2ContractInstanceDeployed),
125152
class: getContractClassRegisteredColumns(includeArtifactJson),
126153
verifiedDeploymentArguments: getTableColumns(
127-
l2ContractInstanceVerifiedDeploymentArguments
154+
l2ContractInstanceVerifiedDeploymentArguments,
155+
),
156+
deployerMetadata: getTableColumns(
157+
l2ContractInstanceDeployerMetadataTable,
128158
),
129159
})
130160
.from(l2ContractInstanceDeployed)
@@ -133,22 +163,31 @@ export const getL2DeployedContractInstancesByContractClassId = async (
133163
and(
134164
eq(
135165
l2ContractInstanceDeployed.contractClassId,
136-
l2ContractClassRegistered.contractClassId
166+
l2ContractClassRegistered.contractClassId,
137167
),
138168
eq(
139169
l2ContractInstanceDeployed.version,
140-
l2ContractClassRegistered.version
141-
)
142-
)
170+
l2ContractClassRegistered.version,
171+
),
172+
),
143173
)
144174
.leftJoin(
145175
l2ContractInstanceVerifiedDeploymentArguments,
146176
and(
147177
eq(
148178
l2ContractInstanceDeployed.address,
149-
l2ContractInstanceVerifiedDeploymentArguments.address
150-
)
151-
)
179+
l2ContractInstanceVerifiedDeploymentArguments.address,
180+
),
181+
),
182+
)
183+
.leftJoin(
184+
l2ContractInstanceDeployerMetadataTable,
185+
and(
186+
eq(
187+
l2ContractInstanceDeployed.address,
188+
l2ContractInstanceDeployerMetadataTable.address,
189+
),
190+
),
152191
)
153192
.where(eq(l2ContractInstanceDeployed.contractClassId, contractClassId))
154193
.orderBy(desc(l2ContractInstanceDeployed.version))
@@ -159,6 +198,7 @@ export const getL2DeployedContractInstancesByContractClassId = async (
159198
contractClass: r.class,
160199
instance: r.instance,
161200
verifiedDeploymentArguments: r.verifiedDeploymentArguments,
201+
deployerMetadata: r.deployerMetadata,
162202
});
163203
});
164204
};

0 commit comments

Comments
 (0)