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
41 changes: 41 additions & 0 deletions .github/workflows/lint_and_format_checks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: Lint and Format Checks

on:
pull_request:
workflow_dispatch:

jobs:
lint-and-format:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Install pnpm
uses: pnpm/action-setup@v4
with:
version: 9.15.0

- name: Install dependencies
run: pnpm install

- name: Setup Noir
run: |
curl -L https://raw.githubusercontent.com/noir-lang/noirup/main/install | bash
echo "$HOME/.nargo/bin" >> $GITHUB_PATH

- name: Install Nargo
run: |
noirup --version 1.0.0-beta.16

- name: Run format check
run: pnpm run format:check

- name: Run linters
run: pnpm run lint
15 changes: 15 additions & 0 deletions .prettierrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"plugins": ["prettier-plugin-solidity"],
"overrides": [
{
"files": "*.sol",
"options": {
"printWidth": 80,
"tabWidth": 4,
"useTabs": false,
"singleQuote": false,
"bracketSpacing": true
}
}
]
}
21 changes: 21 additions & 0 deletions .solhintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"plugins": ["prettier"],
"extends": "solhint:recommended",
"excludedFiles": ["contracts/*Verifier.sol"],
"rules": {
"prettier/prettier": "error",
"quotes": ["error", "double"],
"no-inline-assembly": "",
"no-global-import": "error",
"no-empty-blocks": "",
"reason-string": "error",
"func-visibility": [
"warn",
{
"ignoreConstructors": true
}
],
"avoid-low-level-calls": "",
"no-unused-vars": "error"
}
}
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,3 @@ pnpm test-verifiers
3. **Generate verifiers** with `pnpm generate-solidity-verifiers`
4. **Create test proofs** with `pnpm generate-mock-proofs`
5. **Run tests** with `pnpm test-verifiers`

5 changes: 4 additions & 1 deletion contracts/interfaces/IVerifier.sol
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,8 @@
pragma solidity ^0.8.27;

interface IVerifier {
function verify(bytes calldata proof, bytes32[] calldata publicInputs) external returns (bool);
function verify(
bytes calldata proof,
bytes32[] calldata publicInputs
) external returns (bool);
}
23 changes: 13 additions & 10 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,17 @@
"author": "CardinalCryptography",
"license": "",
"packageManager": "pnpm@9.15.0",
"dependencies": {
"@aztec/bb.js": "3.0.0-nightly.20251104",
"@noir-lang/noir_js": "1.0.0-beta.16",
"devDependencies": {
"forge-std": "github:foundry-rs/forge-std#v1.12.0",
"@openzeppelin/contracts": "=5.5.0",
"@openzeppelin/contracts-upgradeable": "=5.5.0",
"@zkpassport/poseidon2": "^0.6.2"
},
"devDependencies": {
"openzeppelin-foundry-upgrades": "github:OpenZeppelin/openzeppelin-foundry-upgrades#v0.4.0",
"@aztec/bb.js": "3.0.0-nightly.20251104",
"@noir-lang/noir_js": "1.0.0-beta.16",
"@zkpassport/poseidon2": "^0.6.2",
"@types/node": "^24.10.1",
"forge-std": "github:foundry-rs/forge-std#v1.12.0",
"openzeppelin-foundry-upgrades": "github:OpenZeppelin/openzeppelin-foundry-upgrades#v0.3.6",
"prettier": "^3.2.5",
"prettier-plugin-solidity": "^2.2.0",
"prettier-plugin-solidity": "^1.0.0",
"solhint-community": "^4.0.1",
"solhint-plugin-prettier": "^0.1.0",
"ts-node": "10.9.2",
Expand All @@ -27,6 +25,11 @@
"compile-circuits": "nargo compile",
"generate-solidity-verifiers": "ts-node ./scripts/generate-solidity-verifiers.ts",
"generate-mock-proofs": "ts-node ./scripts/generate-mock-proofs.ts",
"test-verifiers": "forge test --gas-report"
"test-verifiers": "forge test --gas-report",
"lint": "pnpm run lint:sol && pnpm run lint:noir",
"lint:sol": "solhint 'contracts/**/*.sol'",
"lint:noir": "nargo check",
"format": "prettier --write '**/*.{ts,sol,json,md}' && nargo fmt",
"format:check": "prettier --check '**/*.{ts,sol,json,md}' && nargo fmt --check"
}
}
Loading