Skip to content

Commit 5e94420

Browse files
authored
Merge branch 'main' into om/keccakZK
2 parents b59aeed + 69d74d8 commit 5e94420

File tree

5 files changed

+20
-53
lines changed

5 files changed

+20
-53
lines changed

src/Noir.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,3 @@ export async function getTarget(noirDir: string | HardhatConfig) {
6161
const path = await import("path");
6262
return path.join(noirDir, "target");
6363
}
64-
65-
export type ProofFlavor = keyof typeof ProofFlavor;
66-
export const ProofFlavor = {
67-
ultra_keccak_honk: "ultra_keccak_honk",
68-
} as const;

src/index.ts

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
import { extendConfig, extendEnvironment } from "hardhat/config";
2-
import { HardhatPluginError, lazyObject } from "hardhat/plugins";
2+
import { lazyObject } from "hardhat/plugins";
33
import { HardhatConfig, HardhatUserConfig } from "hardhat/types";
44
import path from "path";
5-
import { NoirExtension, ProofFlavor } from "./Noir";
5+
import { NoirExtension } from "./Noir";
66
import "./tasks";
77
import "./type-extensions";
8-
import { PLUGIN_NAME } from "./utils";
98

109
extendConfig(
1110
(config: HardhatConfig, userConfig: Readonly<HardhatUserConfig>) => {
@@ -42,14 +41,8 @@ extendConfig(
4241
function resolveNoirConfig(
4342
u: HardhatUserConfig["noir"],
4443
): HardhatConfig["noir"] {
45-
const flavor: ProofFlavor[] = u.flavor
46-
? Array.isArray(u.flavor)
47-
? u.flavor
48-
: [u.flavor]
49-
: [ProofFlavor.ultra_keccak_honk];
5044
return {
5145
version: u.version,
52-
flavor,
5346
skipNargoWorkspaceCheck: u.skipNargoWorkspaceCheck ?? false,
5447
};
5548
}

src/tasks.ts

Lines changed: 11 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { HardhatPluginError } from "hardhat/plugins";
88
import { HardhatConfig } from "hardhat/types";
99
import { NoirCache } from "./cache";
1010
import { installNargo } from "./install";
11-
import { getTarget, ProofFlavor } from "./Noir";
11+
import { getTarget } from "./Noir";
1212
import { makeRunCommand, PLUGIN_NAME } from "./utils";
1313

1414
task(TASK_COMPILE, "Compile and generate circuits and contracts").setAction(
@@ -40,12 +40,7 @@ task(TASK_COMPILE, "Compile and generate circuits and contracts").setAction(
4040
return;
4141
}
4242

43-
for (const flavor of Object.values(ProofFlavor) as ProofFlavor[]) {
44-
if (!config.noir.flavor.includes(flavor)) {
45-
continue;
46-
}
47-
await generateSolidityVerifier(file, targetDir, flavor);
48-
}
43+
await generateSolidityVerifier(file, targetDir);
4944
await cache.saveJsonFileHash(file);
5045
}),
5146
);
@@ -102,43 +97,26 @@ task(
10297
},
10398
);
10499

105-
async function generateSolidityVerifier(
106-
file: string,
107-
targetDir: string,
108-
flavor: ProofFlavor,
109-
) {
100+
async function generateSolidityVerifier(file: string, targetDir: string) {
110101
const path = await import("path");
111102
const fs = await import("fs");
112103
const { UltraHonkBackend } = await import("@aztec/bb.js");
113104

114-
let verifier: string;
115105
const program = JSON.parse(fs.readFileSync(file, "utf-8"));
116-
switch (flavor) {
117-
case "ultra_keccak_honk": {
118-
const backend = new UltraHonkBackend(program.bytecode);
119-
const vk = await backend.getVerificationKey({ keccakZK: true });
120-
verifier = await backend.getSolidityVerifier(vk);
121-
break;
122-
}
123-
default: {
124-
flavor satisfies never;
125-
throw new HardhatPluginError(
126-
PLUGIN_NAME,
127-
`Unsupported Noir proof flavor: ${flavor}`,
128-
);
129-
}
130-
}
106+
107+
const backend = new UltraHonkBackend(program.bytecode);
108+
const vk = await backend.getVerificationKey({ keccakZK: true });
109+
let verifier = await backend.getSolidityVerifier(vk);
110+
131111
if (typeof verifier !== "string") {
132112
// bug in bb types
133113
verifier = new TextDecoder().decode(verifier);
134114
}
135115

136116
const name = path.basename(file, ".json");
137-
console.log(`Generating Solidity ${flavor} verifier for ${name}...`);
138-
const nameSuffix =
139-
flavor === ProofFlavor.ultra_keccak_honk ? "" : `_${flavor}`;
140-
fs.writeFileSync(path.join(targetDir, `${name}${nameSuffix}.sol`), verifier);
141-
console.log(`Generated Solidity ${flavor} verifier for ${name}`);
117+
console.log(`Generating Solidity verifier for ${name}...`);
118+
fs.writeFileSync(path.join(targetDir, `${name}.sol`), verifier);
119+
console.log(`Generated Solidity verifier for ${name}`);
142120
}
143121

144122
async function checkNargoWorkspace(config: HardhatConfig) {

src/type-extensions.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// To extend one of Hardhat's types, you need to import the module where it has been defined, and redeclare it.
44
import "hardhat/types/config";
55
import "hardhat/types/runtime";
6-
import { NoirExtension, ProofFlavor } from "./Noir";
6+
import { NoirExtension } from "./Noir";
77

88
declare module "hardhat/types/config" {
99
// This is an example of an extension to one of the Hardhat config values.
@@ -28,15 +28,17 @@ declare module "hardhat/types/config" {
2828
export interface HardhatUserConfig {
2929
noir: {
3030
version: string;
31-
flavor?: ProofFlavor | ProofFlavor[];
31+
/**
32+
* @deprecated no longer used
33+
*/
34+
// TODO: remove this
35+
flavor?: unknown;
3236
skipNargoWorkspaceCheck?: boolean;
3337
};
3438
}
3539

3640
export interface HardhatConfig {
37-
noir: Omit<Required<HardhatUserConfig["noir"]>, "flavor"> & {
38-
flavor: ProofFlavor[];
39-
};
41+
noir: Omit<Required<HardhatUserConfig["noir"]>, "flavor">;
4042
}
4143
}
4244

test/fixture-projects/hardhat-project/hardhat.config.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ const config: HardhatUserConfig = {
2121
},
2222
noir: {
2323
version: TEST_NOIR_VERSION,
24-
flavor: ["ultra_keccak_honk"],
2524
},
2625
};
2726

0 commit comments

Comments
 (0)