Whitepaper · v0.2 (nacrt)

Proof of Croatian Personhood

Otvoreni protokol za onchain dokaz osobnosti ukorijenjen u hrvatskom/EU eID-u. Certilia danas → EUDI Wallet sutra.

Projekt: airKUNA (ITalk d.o.o.) Chain: Gnosis Licenca (namjera): Apache-2.0 / MIT 2026-07-07
Ovo je whitepaper (cjelina + motivacija + mehanizam, za zajednicu i grantove). Ključne odluke izvedene su kao zasebni ADR-ovi u docs/decisions/ (airKUNA vlastita ADR baza). Status: NACRT v0.2, dorađeno nakon dva kruga prior-art istraživanja.

0Sažetak

Problem: Hrvati imaju vrhunski digitalni identitet — Certilia MobileID (AKD, preko MUP-a, eIDAS razina High) — ali je centraliziran. Onchain svijet nema pouzdan, Sybil-otporan dokaz „ovo je jedinstvena stvarna osoba", što blokira legitimno onchain glasanje, demokratsko upravljanje i pravedno raspoređivanje resursa.

Rješenje: Otvoreni protokol koji verificiranu eID prijavu pretvara u soulbound token (SBT) osobnosti na Gnosisu. Jedinstvenost se ne veže za novčanik nego za nullifier izveden iz OIB-a (nullifier = HMAC-SHA256(OIB, pepper)), pa jedna osoba može imati više Safe novčanika, ali samo jedan identitet. Sirovi OIB nikad ne napušta backend (GDPR-first). Dizajn je source-agnostičan: Certilia danas, EU EUDI Wallet sutra — isti onchain sloj radi za svih 27 zemalja EU.

Ključni uvid (iz prior-art analize): za MVP ne treba skupa hardverska infrastruktura ni vlastita mreža potpisnika. Sybil-otpornost se postiže klijentskim dokazom (zkTLS nad Certilia OIDC-om, ili NFC čitanje eOI čipa) + onchain nullifier registrom. Decentralizirana Android verifier mreža je Faza 2 — poboljšava decentralizaciju povjerenja, nije preduvjet za rad.

1Problem

  1. Centralizirano povjerenje. Certilia/AKD je jedina točka istine. Za onchain demokraciju trebamo dokaz osobnosti koji ne ovisi o jednom entitetu koji sve može sam kovati.
  2. Sybil napadi. Bez dokaza osobnosti, jedna osoba otvori 1000 novčanika i preglasa poštene.
  3. Vezanost za novčanik. Naivni „KYC po novčaniku" ne radi: ljudi imaju više novčanika (hladni, topli, Safe za udrugu, Safe za tvrtku), a identitet mora biti iznad njih.
  4. Privatnost & GDPR. OIB je osjetljiv PII. Ne smije završiti onchain ni u plaintext bazi.
  5. Nasljeđe/oporavak. Izgubljeni novčanik ne smije značiti izgubljeni identitet.

2Temeljni primitiv: nullifier, ne novčanik

nullifier = HMAC-SHA256(OIB, TAJNI_PEPPER)

3Onchain arhitektura

Tri open-source ugovora na Gnosisu:

3.1 IdentityRegistry

mapping(bytes32 nullifier => Identity) registry;
struct Identity { address anchor; uint64 loa; uint64 verifiedAt; uint64 reverifiedAt; }

function claim(Attestation calldata a, bytes calldata proof) external {
    require(registry[a.nullifier].anchor == address(0), "one person, one identity");
    require(_verify(a, proof), "invalid attestation");   // vidi 4. — pluggable verifier
    registry[a.nullifier] = Identity(a.anchor, a.loa, _now(), _now());
    sbt.mint(a.anchor, a.nullifier);
}

3.2 PersonhoodSBT (EIP-5484)

Non-transferable bedž vezan uz anchor Safe. Nosi LoA i vremenske oznake; čita se iz glasačkih ugovora.

3.3 Razrješavanje više novčanika

4Most eID → onchain (pluggable verifier) — i zašto mesh nije MVP

_verify() je apstrakcija s više implementacija, biramo po fazi:

VerifierKakoDecentralizacijaFaza
A · zkTLS nad Certilia OIDCKlijent dokaže (Reclaim/zkTLS) da je Certilia JWKS potpisao id_token s njegovim OIB-om; ugovor verificira zk proofNema oraklske mreže; oslanja se na Certilia PKIMVP
B · NFC eOI (eOsobna) čipKlijent pasivno autenticira potpis izdavača čipa (tip Rarimo/zkPassport), izvede nullifier lokalnoNema oraklske mreže; oslanja se na državnu PKIMVP alt.
C · EIP-712 attestation oraklOff-chain verifier validira id_token (JWKS/iss/aud), potpiše {nullifier,anchor,loa}; ugovor provjeri potpisnikaJedan potpisnik = centralnoPrijelazno
D · M-of-N Android verifier meshKao C, ali M nezavisnih Android nodeova (StrongBox + Key Attestation) supotpisujeVisoka — nitko sam ne kujeFaza 2
Ključni uvid iz prior-arta (potvrđeno u 2 kruga): verifieri A i B daju Sybil-otpornost bez ikakve mreže potpisnika, jer se dokument/sesija sama kriptografski dokazuje. Dodatna potvrda: World ID radi personhood samo s nullifier-registrom + Semaphore zk, bez ikakvog signer-mesha — dokazani industrijski standard. Mesh (D) opravdavaju samo: (1) živi-OIDC root koji se ne može klijentski dokazati, i (2) politička priča „ni AKD ni ITalk ne mogu sami kovati". Zato: gradi A/B za MVP; mesh je Faza 2, ne preduvjet.

Ako ipak gradiš mesh (Faza 2): razmotri Acurast kao SUBSTRAT, ne gradi od nule. Acurast procesori (250k+ telefona) imaju vlastitu EVM adresu, code-bound hardverski ključ, hardversku atestaciju i mogu potpisati/settlati onchain. M-of-N Safe co-signing je custom logika na Acurastu — pretvara „kupi i pokreni telefone" u „deploy custom verifier na postojeću mrežu".

⚠ Caveat za sve HW-atestacijske pristupe: Android Key Attestation lanac korijeni u Googleu (Google potpisuje attestation ključ). Dakle mesh na Android atestaciji je trust-minimized, ne trustless — Google je root of trust. Pošteno to reci; mitigacija = miješanje vendora (Samsung Knox + Titan + Qualcomm) da nijedan proizvođač nije jedina točka.

5Verifier mreža (Faza 2): geolokalizirani Android signer-mesh

Dizajn zadržan jer daje jaku decentralizaciju povjerenja; nije MVP.

6Privatnost i glasanje

7GDPR / compliance

8Pozicioniranje vs prior-art

Puni stack ne postoji kao jedan proizvod, ali komponente imaju jak prior-art (Acurast, Lit, Rarimo/zkPassport, GEODNET, Reclaim/zkTLS, EBSI). Potvrđeno u istraživanju: „živi eID-OIDC → onchain SBT preko decentralizirane verifier mreže" je genuino nezauzet prostor. Naša diferencijacija nije patent nego:

Patent / Freedom-to-Operate:nChain US 11,347,838 B2 pokriva „identity tokeni → fiksni skup glasača → brojanje onchain signala → otpuštanje sredstava na prag" = izravno preklapa personhood-za-glasanje; treba FTO mišljenje prije komercijalizacije. Izbor M zasebnih EIP-712 potpisnika (ne pravi threshold ECDSA/MPC) ruta oko nChain threshold-ECDSA patenata. Patentiranje samo defenzivno, uz zastupnika.

9Open-source & financiranje

10Roadmap

FazaIsporuka
0 — MVPIdentityRegistry + PersonhoodSBT + verifier A (zkTLS/Certilia) ili B (NFC eOI); mock issuer/verifier lokalno
1Drugi neovisni izvor (phone-SBT preko sms.domovina.ai reverse-OTP) + credibility score; karta nodeova
2M-of-N Android verifier mesh (M zasebnih EIP-712 potpisnika, ne MPC) + DAO onboarding + statusi + slashing
3Socijalna atestacija (web-of-trust score)
4zk anonimno glasanje (MACI/Semaphore)
5EUDI Wallet izvor (SD-JWT VC/mDoc preko OpenID4VP) — pan-EU

11Otvorena pitanja / rizici


Dodatak: ADR baza

airKUNA ima vlastitu ADR bazu (docs/decisions/, kreće od 0001):