Skip to content

Commit 1996584

Browse files
committed
done
1 parent 518547a commit 1996584

File tree

18 files changed

+245
-128
lines changed

18 files changed

+245
-128
lines changed

k8s/local/event-cannon/deployment.yaml

+6-6
Original file line numberDiff line numberDiff line change
@@ -33,17 +33,17 @@ spec:
3333
- name: INIFINITE_LOOP
3434
value: "true"
3535
- name: SCENARIO_SIMPLE_DEFAULT_ACCOUNT
36-
value: "true"
36+
value: "false"
3737
- name: SCENARIO_TOKEN_CONTRACT
38-
value: "true"
38+
value: "false"
3939
- name: SCENARIO_FUNCTIONS_VOTE
4040
value: "true"
4141
- name: SCENARIO_SIMPLE_CONTRACT
42-
value: "true"
42+
value: "false"
4343
- name: SCENARIO_SIMPLE_LOG
44-
value: "true"
44+
value: "false"
4545
- name: SCENARIO_L1L2_PUBLIC_MESSAGING
46-
value: "true"
46+
value: "false"
4747
- name: SCENARIO_L1L2_PRIVATE_MESSAGING
48-
value: "true"
48+
value: "false"
4949
status: {}

k8s/local/skaffold.no_ui.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ kind: Config
33
metadata:
44
name: no_ui
55
requires:
6-
- path: ./common/skaffold.infra.yaml
7-
- path: ./common/skaffold.aztec_sanbox_nodes.yaml
6+
#- path: ./common/skaffold.infra.yaml
7+
#- path: ./common/skaffold.aztec_sanbox_nodes.yaml
88
- path: ./explorer-api/skaffold.sandbox.yaml
99
- path: ./ethereum-listener/skaffold.sandbox.yaml
1010
- path: ./aztec-listener/skaffold.sandbox.yaml

packages/contract-verification/src/artifact/generate-payload.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { NoirCompiledContract } from "@aztec/aztec.js";
2-
import { VerifyArtifactPayload } from "types.js";
2+
import { VerifyArtifactPayload } from "../types.js";
33

44
export const generateVerifyArtifactPayload = (
5-
artifactObj: { default: NoirCompiledContract } | NoirCompiledContract
5+
artifactObj: { default: NoirCompiledContract } | NoirCompiledContract,
66
): VerifyArtifactPayload => {
77
const artifactJson = (artifactObj as { default: NoirCompiledContract })
88
.default
@@ -17,5 +17,5 @@ export const generateVerifyArtifactPayload = (
1717
export const generateVerifyArtifactUrl = (
1818
apiBaseUrl: string,
1919
contractClassId: string,
20-
version: number
20+
version: number,
2121
) => `${apiBaseUrl}/l2/contract-classes/${contractClassId}/versions/${version}`;

packages/contract-verification/src/artifact/verify-payload.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {
44
loadContractArtifact,
55
} from "@aztec/aztec.js";
66
import { ChicmozL2ContractClassRegisteredEvent } from "@chicmoz-pkg/types";
7-
import { VerifyArtifactPayload } from "types.js";
7+
import { VerifyArtifactPayload } from "../types.js";
88

99
export type VerificationResult = {
1010
isMatchingByteCode: boolean;
@@ -13,15 +13,15 @@ export type VerificationResult = {
1313

1414
export const verifyArtifactPayload = async (
1515
artifactPayload: VerifyArtifactPayload,
16-
storedArtifact: ChicmozL2ContractClassRegisteredEvent
16+
storedArtifact: ChicmozL2ContractClassRegisteredEvent,
1717
): Promise<VerificationResult> => {
1818
const parsedArtifact = JSON.parse(
19-
artifactPayload.stringifiedArtifactJson
19+
artifactPayload.stringifiedArtifactJson,
2020
) as NoirCompiledContract;
2121
const loadedArtifact = loadContractArtifact(parsedArtifact);
2222
const contractClass = await getContractClassFromArtifact(loadedArtifact);
2323
const isMatchingByteCode = storedArtifact.packedBytecode.equals(
24-
contractClass.packedBytecode
24+
contractClass.packedBytecode,
2525
);
2626
return {
2727
isMatchingByteCode,

packages/contract-verification/src/instance-deployment/generate-payload.ts

+9-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
import { NoirCompiledContract } from "@aztec/aztec.js";
2-
import { VerifyInstanceDeploymentPayload } from "types.js";
2+
import {
3+
VerifyInstanceDeploymentPayload,
4+
verifyInstanceDeploymentPayloadSchema,
5+
} from "../types.js";
36

47
export const generateVerifyInstancePayload = ({
58
publicKeysString,
@@ -23,7 +26,7 @@ export const generateVerifyInstancePayload = ({
2326
if (salt.length !== 66) {
2427
throw new Error(`Invalid salt length: ${salt.length}`);
2528
}
26-
return {
29+
return verifyInstanceDeploymentPayloadSchema.parse({
2730
publicKeysString,
2831
deployer,
2932
salt,
@@ -32,13 +35,13 @@ export const generateVerifyInstancePayload = ({
3235
? JSON.stringify(
3336
(artifactObj as { default: NoirCompiledContract }).default
3437
? (artifactObj as { default: NoirCompiledContract }).default
35-
: artifactObj
38+
: artifactObj,
3639
)
3740
: undefined,
38-
};
41+
});
3942
};
4043

4144
export const generateVerifyInstanceUrl = (
4245
apiBaseUrl: string,
43-
address: string
44-
) => `${apiBaseUrl}/l2/contract-instances/${address}/verified-deployment`;
46+
address: string,
47+
) => `${apiBaseUrl}/l2/contract-instances/${address}`;

packages/contract-verification/src/instance-deployment/verify-payload.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export const verifyInstanceDeploymentPayload = async (
1717
instanceAddress: string;
1818
stringifiedArtifactJson: string;
1919
contractClassId: string;
20-
}
20+
},
2121
): Promise<boolean> => {
2222
const {
2323
stringifiedArtifactJson,
@@ -28,13 +28,13 @@ export const verifyInstanceDeploymentPayload = async (
2828
publicKeysString,
2929
} = payload;
3030
const artifact = loadContractArtifact(
31-
JSON.parse(stringifiedArtifactJson) as unknown as NoirCompiledContract
31+
JSON.parse(stringifiedArtifactJson) as unknown as NoirCompiledContract,
3232
);
3333

3434
const initFn = artifact.functions.find((fn) => fn.name === "constructor");
3535
const initializationHash = await computeInitializationHash(
3636
initFn,
37-
constructorArgs
37+
constructorArgs,
3838
);
3939
const saltedHash = await computeSaltedInitializationHash({
4040
initializationHash,
+12-7
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { chicmozL2ContractInstanceVerifiedDeploymentArgumentsSchema } from "@chicmoz-pkg/types";
12
import { z } from "zod";
23

34
export type VerifyArtifactPayload = {
@@ -8,13 +9,17 @@ export type IsTokenArtifactResult = {
89
contractName: string;
910
details: string;
1011
};
11-
export const verifyInstanceDeploymentPayloadSchema = z.object({
12-
stringifiedArtifactJson: z.string().optional(),
13-
publicKeysString: z.string(),
14-
salt: z.string(),
15-
deployer: z.string(),
16-
constructorArgs: z.string().array(),
17-
});
12+
13+
export const verifyInstanceDeploymentPayloadSchema = z.lazy(() =>
14+
z.object({
15+
...chicmozL2ContractInstanceVerifiedDeploymentArgumentsSchema.omit({
16+
id: true,
17+
address: true,
18+
}).shape,
19+
stringifiedArtifactJson: z.string().optional(),
20+
}),
21+
);
22+
1823
export type VerifyInstanceDeploymentPayload = z.infer<
1924
typeof verifyInstanceDeploymentPayloadSchema
2025
>;

packages/types/src/aztec/l2Contract.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,17 @@ export type ChicmozL2ContractInstanceDeployedEvent = z.infer<
2323
typeof chicmozL2ContractInstanceDeployedEventSchema
2424
>;
2525

26-
export const chicmozL2ContractInstanceVerifiedDeploymentArguments = z.object({
26+
export const chicmozL2ContractInstanceVerifiedDeploymentArgumentsSchema = z.object({
2727
id: z.string().uuid().optional(),
2828
address: aztecAddressSchema,
2929
salt: frSchema,
3030
deployer: aztecAddressSchema,
3131
publicKeysString: z.string(),
32-
constructorArgs: z.string(),
32+
constructorArgs: z.string().array(),
3333
});
3434

3535
export type ChicmozL2ContractInstanceVerifiedDeploymentArgumnetsSchema = z.infer<
36-
typeof chicmozL2ContractInstanceVerifiedDeploymentArguments
36+
typeof chicmozL2ContractInstanceVerifiedDeploymentArgumentsSchema
3737
>;
3838

3939
export const chicmozL2ContractClassRegisteredEventSchema = z.object({

packages/types/src/aztec/special.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { chicmozL2BlockSchema } from "./l2Block.js";
77
import {
88
chicmozL2ContractClassRegisteredEventSchema,
99
chicmozL2ContractInstanceDeployedEventSchema,
10-
chicmozL2ContractInstanceVerifiedDeploymentArguments,
10+
chicmozL2ContractInstanceVerifiedDeploymentArgumentsSchema,
1111
} from "./l2Contract.js";
1212
import { chicmozL2TxEffectSchema } from "./l2TxEffect.js";
1313

@@ -22,8 +22,8 @@ export const chicmozL2ContractInstanceDeployerMetadataSchema = z.object({
2222
creatorContact: z.string(),
2323
appUrl: z.string(),
2424
repoUrl: z.string(),
25-
uploadedAt: z.date(),
26-
reviewedAt: z.date().optional(),
25+
uploadedAt: z.coerce.date(),
26+
reviewedAt: z.coerce.date().optional(),
2727
});
2828

2929
export type ChicmozL2ContractInstanceDeployerMetadata = z.infer<
@@ -36,7 +36,7 @@ export const chicmozL2ContractInstanceDeluxeSchema = z.object({
3636
blockHeight: chicmozL2BlockSchema.shape.height.optional(),
3737
deployerMetadata: chicmozL2ContractInstanceDeployerMetadataSchema.optional(),
3838
verifiedDeploymentArguments:
39-
chicmozL2ContractInstanceVerifiedDeploymentArguments.optional(),
39+
chicmozL2ContractInstanceVerifiedDeploymentArgumentsSchema.optional(),
4040
});
4141

4242
export type ChicmozL2ContractInstanceDeluxe = z.infer<

services/event-cannon/src/cannon/scenarios/deploy-and-interact-vote-contract.ts

+31-17
Original file line numberDiff line numberDiff line change
@@ -13,62 +13,76 @@ import {
1313
verifyContractInstanceDeployment,
1414
} from "./utils/index.js";
1515

16+
const contractId = "VotingContract";
17+
1618
export async function run() {
17-
logger.info("===== VOTING CONTRACT =====");
19+
logger.info(`===== ${contractId} =====`);
1820
const pxe = getPxe();
1921
await waitForPXE(pxe);
2022
const namedWallets = getWallets();
2123

2224
const deployerWallet = namedWallets.alice;
2325
const votingAdmin = namedWallets.alice.getAddress();
2426

25-
const contractLoggingName = "Voting Contract";
27+
const contractLoggingName = contractId;
2628
const contract = await deployContract({
2729
contractLoggingName,
2830
deployFn: (): DeploySentTx<EasyPrivateVotingContract> =>
2931
EasyPrivateVotingContract.deploy(deployerWallet, votingAdmin).send(),
30-
broadcastWithWallet: deployerWallet, // NOTE: comment this out to not broadcast
32+
//broadcastWithWallet: deployerWallet, // NOTE: comment this out to not broadcast
3133
node: getAztecNodeClient(),
3234
});
3335
registerContractClassArtifact(
3436
contractLoggingName,
3537
contractArtifactJson,
3638
contract.instance.contractClassId.toString(),
37-
contract.instance.version
39+
contract.instance.version,
3840
).catch((err) => {
3941
logger.error(
40-
`Failed to register contract class artifact: ${(err as Error).stack}`
42+
`Failed to register contract class artifact: ${(err as Error).stack}`,
4143
);
4244
});
4345

4446
verifyContractInstanceDeployment({
4547
contractLoggingName,
46-
artifactObj: contractArtifactJson,
4748
contractInstanceAddress: contract.address.toString(),
48-
publicKeysString: contract.instance.publicKeys.toString(),
49-
deployer: contract.instance.deployer.toString(),
50-
salt: contract.instance.salt.toString(),
51-
args: [votingAdmin.toString()]
49+
verifyArgs: {
50+
artifactObj: contractArtifactJson,
51+
publicKeysString: contract.instance.publicKeys.toString(),
52+
deployer: contract.instance.deployer.toString(),
53+
salt: contract.instance.salt.toString(),
54+
constructorArgs: [votingAdmin.toString()],
55+
},
56+
deployerMetadata: {
57+
contractIdentifier: contractId,
58+
details: "Easy private voting contract",
59+
creatorName: "Event Cannon",
60+
creatorContact:
61+
"email: [email protected], discord: test#1234, telegram: @test",
62+
appUrl: "https://aztec.network",
63+
repoUrl: "https://github.com/AztecProtocol/aztec-packages",
64+
reviewedAt: new Date(),
65+
},
5266
}).catch((err) => {
5367
logger.error(
54-
`Failed to verify contract instance deployment: ${(err as Error).stack}`
68+
`Failed to verify contract instance deployment: ${(err as Error).stack}`,
5569
);
5670
});
5771

5872
const votingContractAlice = await Contract.at(
5973
contract.address,
6074
EasyPrivateVotingContractArtifact,
61-
namedWallets.alice
75+
namedWallets.alice,
6276
);
6377
const votingContractBob = await Contract.at(
6478
contract.address,
6579
EasyPrivateVotingContractArtifact,
66-
namedWallets.bob
80+
namedWallets.bob,
6781
);
6882
const votingContractCharlie = await Contract.at(
6983
contract.address,
7084
EasyPrivateVotingContractArtifact,
71-
namedWallets.charlie
85+
namedWallets.charlie,
7286
);
7387

7488
const candidateA = new Fr(1);
@@ -77,15 +91,15 @@ export async function run() {
7791
await Promise.all([
7892
logAndWaitForTx(
7993
votingContractAlice.methods.cast_vote(candidateA).send(),
80-
"Cast vote 1 - candidate A"
94+
"Cast vote 1 - candidate A",
8195
),
8296
logAndWaitForTx(
8397
votingContractBob.methods.cast_vote(candidateA).send(),
84-
"Cast vote 2 - candidate A"
98+
"Cast vote 2 - candidate A",
8599
),
86100
await logAndWaitForTx(
87101
votingContractCharlie.methods.cast_vote(candidateB).send(),
88-
"Cast vote 3 - candidate B"
102+
"Cast vote 3 - candidate B",
89103
),
90104
]);
91105

0 commit comments

Comments
 (0)