Page cover

ZK Circuit Registry

Zero-knowledge circuit identifiers and hashes embedded in NØNOS.


Core Circuits

These circuits are hardcoded in the bootloader (highest trust level):

BOOT_AUTHORITY Circuit

Name:         BOOT_AUTHORITY
Category:     Core
Permissions:  BootAuthority, Attestation

Program Hash: fa02d10e8804169a47233e34a6ff3566248958adff55e1248d50304aff4ab230
VK Hash:      bf6d8ae8b77c2c0bb9ee46c8a847dfba9114363738cb22f28703a6cd9451a584

Domain:       "NONOS:ZK:PROGRAM:v1"

UPDATE_AUTHORITY Circuit

Name:         UPDATE_AUTHORITY
Category:     Core
Permissions:  UpdateAuthority

Program Hash: 8b3ca7195ef2710adc4592b86d33aa4f17e9285c447bf6913ace08d5621f73e4
VK Hash:      bf6d8ae8b77c2c0bb9ee46c8a847dfba9114363738cb22f28703a6cd9451a584

Domain:       "NONOS:ZK:PROGRAM:v1"

RECOVERY_KEY Circuit


Verifying Key (VK)

The BOOT_AUTHORITY verifying key (584 bytes, BLS12-381):


Permission Flags

Each circuit has a permission bitmap:

Permission
Bit
Hex Value

BootAuthority

0

0x00000001

UpdateAuthority

1

0x00000002

RecoveryKey

2

0x00000004

CommunityKey

3

0x00000008

UserCircuit

4

0x00000010

Attestation

5

0x00000020

CircuitAdmin

6

0x00000040

NetworkAccess

7

0x00000080

FilesystemAccess

8

0x00000100

HardwareAccess

9

0x00000200


Circuit Categories

Category
Trust Level
Source
Can Modify

Core

Highest

Compiled into bootloader

Bootloader update only

System

High

Signed ELF sections

Kernel update

Community

Medium

N-of-M multisig

Governance vote

User

Sandboxed

User-installed

User action


Section Magic

ZK circuit sections are identified by magic bytes:

Groth16 Proof Format

Component
Size
Description

A

48 bytes

G1 point (compressed)

B

96 bytes

G2 point (compressed)

C

48 bytes

G1 point (compressed)

Total

192 bytes

Complete proof

Proof Limits

Limit
Value

Max Public Inputs

256 KB

Max Proof Size

2 MB

Verification Time

~5 ms

Domain Separators

Domain
Purpose

NONOS:ZK:PROGRAM:v1

Program hash derivation

NONOS:CIRCUIT_KEY:v1

Circuit key derivation

NONOS:CAPSULE:COMMITMENT:v1

Default commitment binding

Hash Derivation

Program hashes are derived using BLAKE3:


Capsule Metadata

ZK proofs are wrapped in capsules:

Verification Flow


Adding New Circuits

System Circuit

  1. Define circuit constraints

  2. Run trusted setup ceremony

  3. Compute program hash

  4. Embed VK in kernel

  5. Register in SYSTEM_CIRCUITS

Community Circuit

  1. Define circuit and run setup

  2. Submit to governance

  3. Collect N-of-M signatures

  4. Register via community process

User Circuit

  1. Define circuit locally

  2. Run setup locally

  3. Install via user API

  4. Runs sandboxed (limited permissions)


Circuit Tools

Tool
Location
Purpose

zk-embed

nonos-boot/tools/zk-embed

Embed VK in binary

zk-ceremony

nonos-boot/tools/zk-ceremony

MPC setup

attestation-circuit

nonos-boot/tools/nonos-attestation-circuit

Attestation circuit

Last updated

Was this helpful?