Skip to main content
The mock contracts log every FHE operation to the console. This shows exactly which operations your contracts perform during tests.

What gets logged

Each FHE operation emits a formatted log entry showing the operation name, the input and output operand hashes (truncated), and the security zone:
Wraps a block of code with logging enabled and prints a labeled box around the output. The name appears as the header so you can identify which call produced which operations.
withLogs enables logging before the closure runs and disables it after, so only operations from within that block appear in the output.

enableLogs() / disableLogs() (manual)

For finer-grained control, you can enable and disable logging manually:
enableLogs accepts an optional label string. If provided, it prints a labeled header immediately, useful when you want to mark a section of output at a known point.

Default logging behavior

Logging is enabled by default: MockTaskManager ships with its logOps flag set to true, so every FHE operation prints from the moment the mocks are deployed. The flag lives onchain, not in your Hardhat config. Every control below is a transaction that flips logOps on the deployed MockTaskManager, which is why the setting resets each time the mocks are redeployed. To silence logs for a whole test suite, disable them once in a global setup hook:
test/setup.ts
Or toggle logging for a specific run using the Hardhat task:
There is no Hardhat config option for this. The plugin’s config type still accepts a cofhe.logMocks boolean, but no plugin code reads it. Setting it has no effect on FHE-op logging. Use disableLogs() or the setlogops task instead.