Skip to main content

Concepts

Certichain combines a public blockchain with client-side cryptography and open credential standards. This section explains each idea the code depends on, at the depth needed to read the rest of these docs and the source. Each topic has an In Certichain part: where the idea appears, which file implements it and why it was chosen.

If a word is unfamiliar, the Glossary defines it in one or two sentences.

Pages in this section​

PageWhat it covers
Blockchain basicsAccounts, keys, transactions, gas, blocks, events and logs, chain ids, RPC endpoints, finality and reorganisations, test networks.
Hashing and commitmentsSHA-256 and keccak-256, domain separation, salted commitments (subject, metadata, enrolment), the selective disclosure field tree, canonical JSON.
SignaturesECDSA on secp256k1, EIP-191 and EIP-712, every typed-data structure Certichain signs, ERC-1271 contract wallets, deterministic signatures (RFC 6979) and why the app signs twice, Sign-In with Ethereum, Ed25519.
EncryptionAES-256-GCM with associated data, HPKE (RFC 9180) key wrapping, keys derived from wallet signatures, padding, share codes and capability links.
Zero-knowledge proofsGroth16, Semaphore v4 (identity, commitment, group, nullifier, scope, message), trusted setup, pinned circuit files and key checks.
StandardsW3C Verifiable Credentials 2.0, Data Integrity proofs, did:pkh and did:key, the certichain-eip712-2026 cryptosuite, eddsa-rdfc-2022, Open Badges 3.0, Bitstring Status List, OpenAPI.
Storage and IPFSContent addressing, CIDs, pinning, gateways, Pinata and the second pin provider.
Access control and governanceOpenZeppelin AccessControl, AccessControlDefaultAdminRules, Pausable, Safe multisig wallets, TimelockController, the guardian pattern.
GlossaryEvery term used on this site and in the app's interface.

How the ideas fit together​

The chain stores only fingerprints and a signature. The holder's package carries everything needed to prove the fingerprints: the details, the salts and the document key. A verifier recomputes the fingerprints in the browser and compares them with the chain.

Source files​

  • src/lib/eip712.ts, src/lib/commitments.ts, src/lib/credential-package.ts
  • src/lib/doc-crypto/ (document encryption)
  • src/lib/disclosure/ (selective disclosure)
  • src/lib/zk/ (access proofs)
  • src/lib/vc/ (verifiable credentials, Open Badges, status lists)
  • blockchain/contracts/v03/, blockchain/contracts/zk/