Circuit Registry

⚠️This API and documentation is still under active development.

The circuit registry represents a secure facility for storing compiled circuit artifacts and related proving and verifying key material. The circuit registry uses Vault for key management and stores proving and verifying keys as secrets within Vault.

Circuit

type Circuit struct {
provide.Model
// Artifacts, i.e., r1cs, ABI, etc
ABI []byte `json:"abi,omitempty"`
Binary []byte `gorm:"column:bin" json:"-"`
// Vault and the vault secret identifiers for the proving/verifying keys
VaultID *uuid.UUID `json:"vault_id"`
ProvingKeyID *uuid.UUID `json:"proving_key_id"`
VerifyingKeyID *uuid.UUID `json:"verifying_key_id"`
Name *string `json:"name"`
Description *string `json:"description"`
Identifier *string `json:"identifier"`
Provider *string `json:"provider"`
ProvingScheme *string `json:"proving_scheme"`
Curve *string `json:"curve"`
Status *string `sql:"not null;default:'init'" json:"status"`
// persistent storage for hashed proofs
StoreID *uuid.UUID `sql:"type:uuid" json:"store_id"`
// artifacts
Artifacts map[string]interface{} `sql:"-" json:"artifacts,omitempty"`
// optional on-chain artifact (i.e., verifier contract)
VerifierContract map[string]interface{} `sql:"-" json:"verifier_contract,omitempty"`
}

Documentation forthcoming.