Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions examples/CRISP/deploy/verify.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
// SPDX-License-Identifier: LGPL-3.0-only
//
// This file is provided WITHOUT ANY WARRANTY;
// without even the implied warranty of MERCHANTABILITY
// or FITNESS FOR A PARTICULAR PURPOSE.

import hre from "hardhat";

import { verifyContracts } from "@enclave-e3/contracts/scripts";

async function main() {
const { ethers } = await hre.network.connect();
const [signer] = await ethers.getSigners();
const chain = (await signer.provider?.getNetwork())?.name ?? "localhost";

verifyContracts(chain);
}

main().catch((error) => {
console.error(error);
});
73 changes: 73 additions & 0 deletions examples/CRISP/deployed_contracts.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,79 @@
"sepolia": {
"RiscZeroGroth16Verifier": {
"address": "0x925d8331ddc0a1F0d96E68CF073DFE1d92b69187"
},
"PoseidonT3": {
"blockNumber": 9473284,
"address": "0x3333333C0A88F9BE4fd23ed0536F9B6c427e3B93"
},
"Enclave": {
"constructorArgs": {
"owner": "0x4f1f3a157073A35515C4fC4A8af2F1Af088f0676",
"registry": "0x0000000000000000000000000000000000000001",
"maxDuration": "2592000",
"params": [
"0x000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000fc00100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000003fffffff000001"
]
},
"blockNumber": 9473285,
"address": "0xeF857ba8231E4B8ea4E5DC9CC0891D70BC8E35B8"
},
"CiphernodeRegistryOwnable": {
"constructorArgs": {
"owner": "0x4f1f3a157073A35515C4fC4A8af2F1Af088f0676",
"enclaveAddress": "0xeF857ba8231E4B8ea4E5DC9CC0891D70BC8E35B8"
},
"blockNumber": 9473286,
"address": "0x9c45A278A1C36B50fF1687C8DFdb123d2214BE34"
},
"NaiveRegistryFilter": {
"constructorArgs": {
"owner": "0x4f1f3a157073A35515C4fC4A8af2F1Af088f0676",
"ciphernodeRegistryAddress": "0x9c45A278A1C36B50fF1687C8DFdb123d2214BE34"
},
"blockNumber": 9473287,
"address": "0xbbdF6af7EBe4Ad730C726af2f40dAa867B2C0D35"
},
"MockComputeProvider": {
"blockNumber": 9473289,
"address": "0x6C0cE8865D822803E072486D7ea0c5dEC076a066"
},
"MockDecryptionVerifier": {
"blockNumber": 9473290,
"address": "0x3E6a993EE75C73dA0BAF5a86a9716190d2b0920f"
},
"MockInputValidator": {
"blockNumber": 9473291,
"address": "0x4F1c2BBfE0a827EAF4A7CA912f51DdAd2281819F"
},
"MockE3Program": {
"constructorArgs": {
"mockInputValidator": "0x4F1c2BBfE0a827EAF4A7CA912f51DdAd2281819F"
},
"blockNumber": 9473292,
"address": "0xf69076Aa814a6206C3f049Ea8D1217495793AABa"
},
"MockRISC0Verifier": {
"address": "0xb9384e2b88A69E69149554F31288a8c305859463"
},
"CRISPInputValidatorFactory": {
"address": "0x20e599457c864241F46A38550ba3dCAAbeC20B48",
"constructorArgs": {
"inputValidator": "0x4F1c2BBfE0a827EAF4A7CA912f51DdAd2281819F"
}
},
"HonkVerifier": {
"address": "0xD3c89CD0B492f55F49203A0Da25d7ca744298B8d"
},
"CRISPProgram": {
"address": "0x26fd7066b28C0e18db3Bbfb7163f16e58597C273",
"constructorArgs": {
"enclave": "0xeF857ba8231E4B8ea4E5DC9CC0891D70BC8E35B8",
"verifierAddress": "0xb9384e2b88A69E69149554F31288a8c305859463",
"inputValidatorAddress": "0x4F1c2BBfE0a827EAF4A7CA912f51DdAd2281819F",
"honkVerifierAddress": "0xD3c89CD0B492f55F49203A0Da25d7ca744298B8d",
"imageId": "0x23734b77b0f76e85623a88d7a82f24c34c94834f2501964ea123b7a2027013a2"
}
}
}
}
10 changes: 10 additions & 0 deletions examples/CRISP/hardhat.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import hardhatEthersChaiMatchers from "@nomicfoundation/hardhat-ethers-chai-matc
import hardhatNetworkHelpers from "@nomicfoundation/hardhat-network-helpers";
import hardhatToolboxMochaEthersPlugin from "@nomicfoundation/hardhat-toolbox-mocha-ethers";
import hardhatTypechainPlugin from "@nomicfoundation/hardhat-typechain";
import hardhatVerify from "@nomicfoundation/hardhat-verify";

dotenv.config();

Expand Down Expand Up @@ -68,6 +69,7 @@ const config: HardhatUserConfig = {
hardhatEthersChaiMatchers,
hardhatNetworkHelpers,
hardhatToolboxMochaEthersPlugin,
hardhatVerify,
],
tasks: [
cleanDeploymentsTask,
Expand Down Expand Up @@ -118,6 +120,14 @@ const config: HardhatUserConfig = {
outDir: "./types",
tsNocheck: false,
},
verify: {
etherscan: {
apiKey: process.env.ETHERSCAN_API_KEY || "",
},
blockscout: {
enabled: false,
},
},
solidity: {
version: "0.8.28",
npmFilesToBuild: [
Expand Down
25 changes: 13 additions & 12 deletions examples/CRISP/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,50 +18,51 @@
"dev:up": "bash ./scripts/dev.sh",
"deploy:contracts": "pnpm hardhat run deploy/deploy.ts",
"deploy:contracts:full": "export DEPLOY_ENCLAVE=true && pnpm deploy:contracts",
"deploy:contracts:full:mock": "export DEPLOY_ENCLAVE=true && export USE_MOCK_VERIFIER=true && export USE_MOCK_INPUT_VALIDATOR=true && pnpm deploy:contracts",
"deploy:contracts:full:mock": "export DEPLOY_ENCLAVE=true && export USE_MOCK_VERIFIER=true && export USE_MOCK_INPUT_VALIDATOR=true && pnpm deploy:contracts",
"test:e2e": "bash ./scripts/test_e2e.sh",
"test": "pnpm test:e2e",
"test:contracts": "hardhat test tests/crisp.contracts.test.ts --network localhost",
"test:circuits:inputs": "hardhat test test/governanceCircuit.test.ts",
"test:circuits": "cd circuits && nargo test",
"test:sdk": "cd sdk && pnpm test",
"release:sdk": "cd sdk && pnpm release",
"report": "playwright show-report"
"report": "playwright show-report",
"verify": "pnpm hardhat run deploy/verify.ts"
},
"dependencies": {
"@excubiae/contracts": "^0.4.0",
"@enclave-e3/contracts": "workspace:*",
"@excubiae/contracts": "^0.4.0",
"@zk-kit/lean-imt.sol": "2.0.0",
"poseidon-solidity": "^0.0.5",
"solady": "^0.1.13"
},
"devDependencies": {
"@aztec/bb.js": "^0.82.2",
"@noir-lang/noir_js": "1.0.0-beta.3",
"@enclave-e3/config": "^0.1.5",
"@nomicfoundation/hardhat-toolbox": "^5.0.0",
"@noir-lang/noir_js": "1.0.0-beta.3",
"@nomicfoundation/hardhat-ethers": "4",
"@nomicfoundation/hardhat-ethers-chai-matchers": "^3.0.0",
"@nomicfoundation/hardhat-network-helpers": "3",
"@nomicfoundation/hardhat-toolbox": "^5.0.0",
"@nomicfoundation/hardhat-toolbox-mocha-ethers": "3.0.0",
"@nomicfoundation/hardhat-typechain": "3",
"@nomicfoundation/hardhat-verify": "3",
"@types/node": "^22.18.0",
"forge-std": "github:foundry-rs/forge-std#v1.9.4",
"@nomicfoundation/hardhat-verify": "^3.0.1",
"@playwright/test": "1.52.0",
"@synthetixio/synpress": "^4.1.0",
"@synthetixio/synpress-cache": "^0.0.12",
"@typechain/ethers-v6": "^0.5.0",
"@typechain/hardhat": "^9.0.0",
"@types/chai": "^4.2.0",
"@types/mocha": ">=9.1.0",
"@playwright/test": "1.52.0",
"playwright": "1.52.0",
"@types/node": "^22.18.0",
"concurrently": "^9.1.2",
"dotenv": "^16.4.5",
"ethers": "^6.15.0",
"hardhat-deploy": "^0.12.4",
"concurrently": "^9.1.2",
"forge-std": "github:foundry-rs/forge-std#v1.9.4",
"hardhat": "^3.0.1",
"hardhat-deploy": "^0.12.4",
"hardhat-gas-reporter": "^1.0.8",
"playwright": "1.52.0",
"solidity-coverage": "^0.8.1",
"ts-node": "^10.9.2",
"typechain": "^8.3.0",
Expand Down
20 changes: 10 additions & 10 deletions packages/enclave-contracts/deployed_contracts.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"sepolia": {
"PoseidonT3": {
"blockNumber": 9461441,
"blockNumber": 9473394,
"address": "0x3333333C0A88F9BE4fd23ed0536F9B6c427e3B93"
},
"Enclave": {
Expand Down Expand Up @@ -33,23 +33,23 @@
"address": "0x0DC777566d1255B871dda65dD770cDb0E0280223"
},
"MockComputeProvider": {
"blockNumber": 9461446,
"address": "0x15b4159E8Cc37ce91c1C89cAcDCE71592A3D12cf"
"blockNumber": 9473395,
"address": "0x3528F39143034D0c84ebBAEc58407AD3775F26e1"
},
"MockDecryptionVerifier": {
"blockNumber": 9461448,
"address": "0x4697A79238A021c17Ffb76cf0995d9ec41383692"
"blockNumber": 9473396,
"address": "0x1F48f9939b9bb53635264c88E3F956Ac4F56bB58"
},
"MockInputValidator": {
"blockNumber": 9461452,
"address": "0x826C5Eb0C388fbCe7Ef483b9595749D42ACe14ad"
"blockNumber": 9473397,
"address": "0x645da3bFA7699d2006a34b1B223ecc712FD5d600"
},
"MockE3Program": {
"constructorArgs": {
"mockInputValidator": "0x826C5Eb0C388fbCe7Ef483b9595749D42ACe14ad"
"mockInputValidator": "0x645da3bFA7699d2006a34b1B223ecc712FD5d600"
},
"blockNumber": 9461453,
"address": "0x1375c3dB8De6F0b77B8AE2789DE2C953E96ca15e"
"blockNumber": 9473398,
"address": "0x40fF23DE7F572524CE9125E8EfDAd2aF1faFd929"
}
}
}
1 change: 1 addition & 0 deletions packages/enclave-contracts/scripts/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,4 @@ export * from "./deployAndSave/mockComputeProvider";
export * from "./deployAndSave/mockDecryptionVerifier";
export * from "./deployAndSave/mockInputValidator";
export * from "./deployAndSave/mockProgram";
export * from "./verify";
43 changes: 31 additions & 12 deletions packages/enclave-contracts/scripts/verify.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import { readAllDeployments } from "./utils";
*/
const findContractPath = (
contractName: string,
contractsDir: string = "contracts",
artifactsDir: string = "artifacts",
): string | undefined => {
const searchDir = (dir: string): string | undefined => {
const files = fs.readdirSync(dir);
Expand All @@ -29,23 +29,42 @@ const findContractPath = (
if (stat.isDirectory()) {
const result = searchDir(fullPath);
if (result) return result;
} else if (file.endsWith(".sol")) {
const content = fs.readFileSync(fullPath, "utf-8");
// Look for contract definition
const contractRegex = new RegExp(
`contract\\s+${contractName}\\s+`,
"m",
);
if (contractRegex.test(content)) {
// Return in Hardhat's format: relative/path/File.sol:ContractName
return `${fullPath}:${contractName}`;
} else if (file === `${contractName}.json`) {
try {
const artifact = JSON.parse(fs.readFileSync(fullPath, "utf-8"));

if (artifact.sourceName && artifact.contractName === contractName) {
const sourceName = artifact.sourceName;

// Skip external packages - return undefined so they won't be verified
if (
sourceName.startsWith("./@") ||
sourceName.startsWith("@") ||
sourceName.includes("node_modules")
) {
console.log(
`⏭️ Skipping external contract: ${contractName} (from ${sourceName})`,
);
return undefined;
}

// For local contracts, remove leading './' and return the path
let localPath = sourceName;
if (localPath.startsWith("./")) {
localPath = localPath.slice(2);
}

return `${localPath}:${contractName}`;
}
} catch (error) {
console.warn(`Failed to parse artifact at ${fullPath}:`, error);
}
}
}
return undefined;
};

return searchDir(contractsDir);
return searchDir(artifactsDir);
};

/**
Expand Down
2 changes: 1 addition & 1 deletion pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading