Skip to main content
The plugin deploys a suite of mock contracts that simulate the full CoFHE coprocessor stack on the Hardhat network. This lets you develop and test FHE contracts without running the off-chain FHE engine.

What the mocks simulate

The SDK automatically detects when it’s running against the mock environment (by checking bytecode at the MockZkVerifier fixed address) and adapts its behavior accordingly — ZK proof generation is skipped and verification is handled by the mock contracts.

Auto-deployment

Mock contracts are deployed automatically before every npx hardhat test and npx hardhat node run. To skip auto-deployment:
You only need COFHE_SKIP_MOCKS_DEPLOY=1 if your tests exclusively target an external RPC and don’t use the in-process Hardhat network at all.
You can also deploy mock contracts manually via the Hardhat task:
Or programmatically from a test or script:

Accessing mock contracts

hre.cofhe.mocks exposes typed accessors for each mock contract:

Reading plaintext values

Because MockTaskManager stores plaintext values on-chain, you can read the underlying plaintext of any encrypted handle directly in tests — no permit needed.

getPlaintext(ctHash)

Returns the plaintext bigint for a given ciphertext hash:

expectPlaintext(ctHash, expectedValue)

Assertion shorthand — wraps getPlaintext with a Chai expect:
getPlaintext and expectPlaintext only work on the Hardhat network (where MockTaskManager stores plaintexts). They will throw on localcofhe or any real network.