Private Kernel Circuit
The private kernel circuit is executed by the user on their own device. This ensures private inputs remain private.
note
This is the only core protocol circuit that truly requires the "zero-knowledge" property. Other circuits use SNARKs for succinct verification, but don't need to hide witness data. The private kernel must hide: the contract function executed, the user's address, and the function's inputs and outputs.
Overview
The private kernel processes all private function calls in a transaction, accumulating their side effects (note hashes, nullifiers, logs, messages) and validation requests. It runs recursively—once per private function call—building up a proof that all private execution was correct.
The kernel validates:
- Proof of private function execution
- Correct call context (caller, address, arguments)
- Proper scoping of side effects to their originating contract
- Uniqueness and ordering of side effect counters