Installation
Add Cipher to your project
npm install @privacy-protocol/cipher-contracts @fhevm/solidity @openzeppelin/contractsThis installs:
@privacy-protocol/cipher-contracts— the Cipher Solidity sources (the adapters)@fhevm/solidity— Zama’s FHE library (peer dependency)@openzeppelin/contracts— standard contract primitives (peer dependency)
Hardhat configuration
Cipher contracts target Solidity 0.8.27 on the Cancun EVM, and FHE needs the fhEVM plugin:
// hardhat.config.ts
import { HardhatUserConfig } from "hardhat/config";
import "@nomicfoundation/hardhat-toolbox";
import "@fhevm/hardhat-plugin";
import "dotenv/config";
const config: HardhatUserConfig = {
solidity: {
version: "0.8.27",
settings: {
optimizer: { enabled: true, runs: 10 },
evmVersion: "cancun",
},
},
networks: {
sepolia: {
url: process.env.SEPOLIA_RPC_URL ?? "",
accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : [],
},
},
};
export default config;npm install --save-dev @fhevm/hardhat-plugin @nomicfoundation/hardhat-toolbox dotenvSome adapters include a large on-chain verifier; the low optimizer
runs(10) keeps deployment bytecode within limits. If you only deploy your own contracts (and reuse a shared verifier), you can raise it.
Off-chain dependencies
If your app generates proofs or encrypts inputs, add the client stack (see the adapter’s docs for pinned versions):
npm install @noir-lang/noir_js @aztec/bb.js @zama-fhe/relayer-sdkVerify the install
Cipher ships Solidity sources under @privacy-protocol/cipher-contracts/src/.... Import a symbol
from the adapter you plan to use and compile. For the
Private DAO Adapter:
// contracts/TestImport.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.27;
import {IPrivateDaoAdapter} from
"@privacy-protocol/cipher-contracts/src/DaoToolkit/interface/IPrivateDaoAdapter.sol";
contract TestImport {
IPrivateDaoAdapter public adapter;
constructor(address _adapter) {
adapter = IPrivateDaoAdapter(_adapter);
}
}npx hardhat compileIf it compiles, you’re ready. Delete TestImport.sol and head to Adapters.
Next steps
- Adapters — choose an adapter and start integrating
Last updated on

