zkArb SDK
zkArb SDK is a developer toolkit that makes building zero-knowledge apps on Arbitrum simple and fast. It provides plug-and-play Circom circuit compilation, proof generation, and ready-to-deploy verifier contracts, so developers can focus on dApps instead of cryptography.
Videos
Description
zkarb-sdk
Write Circom. Compile. Deploy. Verify — all on Arbitrum.
Link to published npm library : https://www.npmjs.com/package/zkarb-sdk?activeTab=readme
Link to source code : https://github.com/jatinsahijwani/zkArb-sdk
Documentation : https://github.com/jatinsahijwani/zkArb-sdk/blob/main/README.md
A zero-setup toolkit to build, deploy, and verify ZK circuits using Circom — with no Web3 knowledge required.
Features
- 🧠 Write simple Circom circuits
- 🛠 Compile to .r1cs
, .wasm
, .zkey
, and Solidity verifier
- 🚀 Deploy verifier to Arbitrum with one command
- ✅ Verify proofs using a single JavaScript function
- 🧪 No Web3 scripting, no ABI handling — fully abstracted
Installation
Install globally (recommended for CLI usage):
npm install -g zkarb-sdk
Usage
Compile Circom circuit
npx zkarb-sdk compile <path-to-your-circom-file>
This command:
- Compiles your .circom file
- Runs Groth16 trusted setup
- Outputs .r1cs, .wasm, circuit_final.zkey, and verifier.sol
- All files are saved in a folder named after your circuit (e.g., ./yourCircuit/)
Test Compiled Circom Circuit
npx zkarb-sdk test <path-to-generated-folder> <path-to-input.json>
This command:
- Tests the zk System produced by the compile command
- Uses inputs provided by the developer from input.json provided
- produces proof.json and public.json
- proof.json contains the smart contract parameters, which will be used to verify it onchain
- public.json contains human verifiable outputs and proofs
Deploy Compiled Circom Circuit
npx zkarb-sdk deploy <path-to-generated-folder> <PRIVATE_KEY_OF_WALLET>
This command:
- Compiles verifier.sol generated during compilation using solc
- Deploys the compiled binary to Arbitrum, taking fees from the provided wallet's private key
Verify ZK Proof Programmatically
You can verify a proof directly using a single function call.
const { verifyProof } = require("zkarb-sdk");
const result = await verifyProof({
input: {
// Your circuit input goes here
},
"<relative-path-to-generated-folder>",
});
console.log(result ? "✅ Valid proof" : "❌ Invalid proof");
- You pass input (in the form of json) & Relative path to the generated folder, which was generated during compilation process
- Automatically generates the proof and public signals
- Formats the calldata for the Solidity verifier
- Calls the deployed verifier contract on Arbitrum and returns the result
# You don’t need to manually use snarkjs or interact with web3 directly — the SDK abstracts it all for you.
Commands Overview
| Command | Description |
|----------------------------------------------|--------------------------------------------------|
| npx zkarb-sdk compile <path-to-circuit>
| Compiles the .circom
file and runs Groth16 setup |
| npx zkarb-sdk test <output-folder> <path-to-input.json>
| Tests the Circom logic locally using ZK Proofs |
| npx zkarb-sdk deploy <output-folder> <private-key>
| Deploys the verifier contract to Arbitrum |
| verifyProof(input,"<relative-path-to-output-folder>")
(programmatic only) | Generates proof and verifies it on-chain using deployed contract |
Progress During Hackathon
Completed the project end-to-end during the Buildathon, from initial concept to full implementation (0% → 100%), including design, development, testing, and deployment.
Tech Stack
Fundraising Status
No funds have been raised for this project to date. The project is currently self-funded and developed entirely by the team.
Github Link
https://github.com/jatinsahijwani/zkArb-sdkWinner Track
Honorable Surprise Mention
Arbitrum Open House India: Online Buildathon