ZK‑KYC w DeFi: anonimowa zgodność bez ujawniania danych – praktyczne wdrożenia, ryzyka i przewagi dla DAO, giełd i airdropów
ZK‑KYC w DeFi: anonimowa zgodność bez ujawniania danych – praktyczne wdrożenia, ryzyka i przewagi dla DAO, giełd i airdropów
Kategorie: Bezpieczeństwo • Regulacje & Prawo • DeFi • Web3 & DAO • Giełdy & Kantory • Airdropy & Giveaway’e • Narzędzia & Kalkulatory
Po co nam ZK‑KYC teraz?
Czy można spełnić wymogi AML/KYC w DeFi bez naruszania prywatności użytkowników? Rosnące wymogi zgodności (np. w UE w kontekście MiCA/AMLR) oraz rosnące ograniczenia dla protokołów bez weryfikacji tożsamości popychają rynek ku rozwiązaniom typu ZK‑KYC – weryfikacji tożsamości z użyciem dowodów o zerowej wiedzy (ZK), które potwierdzają status (np. „osoba nie jest z listy sankcyjnej”, „ma 18+”, „rezydent EOG”) bez ujawniania danych źródłowych (imię, PESEL, adres).
Jak to działa w praktyce (rdzeń technologii)
1. Poświadczenia weryfikowalne (VC) i wystawcy
Użytkownik przechodzi standardowy KYC u wystawcy poświadczenia (bank, dostawca KYC, giełda). Zamiast wysyłać dane do każdego protokołu, otrzymuje credential (VC) potwierdzający atrybuty. Poświadczenie trafia do portfela lub aplikacji tożsamości (np. mobilnego).
2. Zeroknowledge: selektywne ujawnianie
Podczas interakcji z protokołem DeFi użytkownik generuje ZK‑dowód (SNARK/PLONK/Halo2), że jego credential spełnia politykę (np. „KYC‑passed & not‑sanctioned & region=EOG”), nie pokazując niczego więcej. Smart kontrakt weryfikuje tylko ważność dowodu i bieżący stan listy uprawnień.
3. Członkostwo, listy i odwołania
Najczęściej używa się drzew Merkle (lub akumulatorów kryptograficznych) do reprezentacji członkostwa w „grupie zgodnych użytkowników”. Aktualizacje (dodania/odwołania) publikowane są w on‑chainowym rejestrze lub przez zaufane feed’y orakli. Użytkownicy dowodzą, że ich anonimowy identyfikator jest liściem aktywnego drzewa, bez zdradzania, który to liść.
Architektury wdrożeniowe: od najprostszego do w pełni on‑chain
- Model bramki off‑chain (gateway): Dapp przepuszcza tylko żądania podpisane przez serwer zgodności po weryfikacji ZK‑dowodu. Szybkie w integracji, ale pół‑zdecentralizowane.
- Model hybrydowy: ZK‑dowód weryfikowany w smart kontrakcie, a root drzewa członków aktualizowany on‑chain przez multisig wystawców lub DAO zgodności.
- Model w pełni on‑chain: Dowody i listy członków oraz odwołań utrzymywane na łańcuchu/L2; spójny audyt, brak pojedynczego punktu awarii, wyższe koszty gazu.
Geofencing bez śledzenia lokalizacji: „dowód rezydencji” zamiast IP
Zamiast centralnego geoblokowania po IP, ZK‑KYC stosuje poświadczenia rezydencji. Użytkownik przedstawia ZK‑dowód, że jego credential jest oznaczony regionem dozwolonym przez politykę protokołu (np. EOG/PL/USA‑WY), nie ujawniając konkretnego adresu. Zmiany polityk kompiluje się do obwodów ZK; kontrakt akceptuje tylko dowody zgodne z aktualnym policy hash.
Integracje z DeFi, DAO i giełdami
DeFi: pule, lending i perpy
- Pule płynności „compliant‑only”: dostawcy LP dołączają dowód członkostwa; wypłaty możliwe tylko dla adresów z ważnym credentialem w chwili claim.
- Lending: różne parametry ryzyka (LTV, limity) w zależności od poziomu poświadczenia (np. „personhood only” vs „pełny KYC”).
- Perpetuale: przyjmowanie tylko zanonimizowanych dowodów 18+ i non‑sanctioned; wymuszenie „jednego konta na osobę” przez proof‑of‑uniqueness (np. Semaphore‑style nullifiers).
DAO: głosowanie i role
- Sybil‑resistant governance: każdy członek przedstawia dowód „osoba unikalna”, bez ujawniania tożsamości. Głosy ważone nadal tokenami, ale bez farmingu tożsamości.
- Komitety zgodności: rola multisig aktualizująca root członków zgodnych; audytowalne decyzje, prywatność użytkowników zachowana.
Giełdy & kantory: RFQ i OTC z prywatnością
- RFQ/OTC: strony przedstawiają ZK‑KYC + proof of solvency (dowód rezerw bez ujawniania adresów). Minimalizacja wycieków informacji.
- On‑chain listing: pary tokenów RWA dostępne wyłącznie dla adresów z odpowiednim zakresem uprawnień (jurysdykcja, status inwestora).
Airdropy i programy lojalnościowe bez Sybila i bez KYC‑spamu
- Proof‑of‑personhood + proof‑of‑eligibility: jeden zanonimizowany zrzut na jedną osobę, kryteria (np. posiadanie NFT, aktywność DeFi) dowodzone ZK bez linkowania adresów.
- Anti‑farm: nullifier generowany z identyfikatorem kampanii uniemożliwia wielokrotne roszczenia bez deanonimizacji.
Bezpieczeństwo: wektory ataku i jak się bronić
- Użycie cudzego credentiala (loaning): wiąż dowody z kluczem sesji (ECDH) i urządzeniem (np. podpis WebAuthn/FIDO), stosuj session‑bound tokens.
- Replay dowodu: dołącz challenge nonce od kontraktu i epoch ważności; nieakceptowanie starych epok po odwołaniu.
- Koluzja wystawców: wymagaj multi‑issuer (M‑z‑N) lub zk‑aggregated attestations – jeden dowód łączący kilka źródeł.
- Deanonimizacja przez wzorce użycia: proof request batching, mieszanie zadań i opóźnienia; unikanie charakterystycznych wielkości gazu.
- Cenzura: możliwość escape hatch przez alternatywnych weryfikatorów i L2; transparentna historia zmian root w kontrakcie.
Wydajność i koszty: co zweryfikujesz na L1, co na L2
| Aspekt | L1 (Ethereum) | L2 (Optimistic/ZK) | Praktyczna wskazówka |
|---|---|---|---|
| Weryfikacja SNARK | Najdroższa, przewidywalna | Tania, duża przepustowość | Weryfikuj na L2, na L1 tylko root i polityki |
| Aktualizacja list (root) | Bezpieczna, kosztowna | Tania i częsta | Batchuj aktualizacje, publikuj okresowo na L1 |
| Odwołania | Niezwłoczne, drogie | Szybkie, tanie | Model CRON/keeper do propagacji odwołań |
| UX | Wyższe opóźnienia | Bliskie Web2 | Generuj dowody w przeglądarce, cache’uj świadectwa |
Stos technologiczny: z czego to złożyć dziś
- Poświadczenia/Tożsamość: Iden3/Polygon ID (VC + ZK), Sismo (anonimowe poświadczenia, badges), Semaphore‑style grupy; standardy W3C VC/DID.
- Obwody ZK: Circom + snarkJS, Halo2/PLONK (np. przez Noir), systemy Groth16 (najtaniej w weryfikacji).
- On‑chain: kontrakty w Solidity do zarządzania root Merkle, listami polityk, rejestrem wystawców (role‑based access control).
- Orakle i harmonogram: Keepery do publikacji odwołań; podpisy EIP‑712 dla spójności off‑chain/on‑chain.
Mini‑przewodnik wdrożeniowy (dla devów)
- Zdefiniuj politykę: lista atrybutów (18+, non‑sanctioned, region=EOG), identyfikator wersji polityki (policyHash).
- Wybierz wystawców: Niezależni dostawcy KYC; wpisz ich klucze w rejestrze on‑chain.
- Zbuduj drzewo: Generuj root z anonimowych identyfikatorów (hash public key + salt), publikuj root w kontrakcie.
- Obwód ZK: Wejścia prywatne: credential, podpis wystawcy, atrybuty; wejścia publiczne: root, policyHash, nullifier. Wyjście: dowód ważności.
- Weryfikator: Smart kontrakt z funkcją verify(zkProof, root, policyHash, nullifier); zapobiegaj podwójnemu użyciu nullifier.
- UX: Generacja dowodu lokalnie (WASM), fallback do serwera prover z remote proving szyfrowanym end‑to‑end.
Porównanie systemów ZK do ZK‑KYC
| System | Setup | Rozmiar dowodu | Koszt weryfikacji on‑chain | Uwagi |
|---|---|---|---|---|
| Groth16 | Trusted (per‑circuit) | Bardzo mały | Niski | Świetny do produkcji, złożona ceremonia |
| PLONK | Universal/Updatable | Mały | Średni | Elastyczne obwody, mniejsza ceremonia |
| Halo2 | Brak trusted | Większy | Wyższy | Brak zaufanego setupu, lepsza transparencja |
Case study (hypotetyczne): DAO pożyczkowe z hybrydowym ZK‑KYC
- Cel: udostępnić linię kredytową RWA wyłącznie użytkownikom EOG 18+, bez przechowywania ich danych.
- Rozwiązanie: Polygon ID + obwód PLONK; root członków na L2, okresowa publikacja na L1 co 24h; nullifier per‑pożyczka.
- Efekt: 97% transakcji weryfikowanych na L2; odwołania propagowane w 2–5 min; brak fałszywych pozytywów w testach, redukcja drop‑off onboarding o 22% vs pełny KYC Web2.
Ryzyka prawne i zgodność (Regulacje & Prawo)
- Minimalizacja danych: nawet gdy dapp nie widzi danych osobowych, wystawca musi działać zgodnie z RODO i AML (zakres retencji, prawo do odwołania/portowalności).
- Jurysdykcje: polityki muszą odzwierciedlać lokalne wyjątki (np. różne progi KYC dla RWA) – wersjonowanie polityk i dziennik zmian on‑chain.
- Audyt: zapewnij możliwość privacy‑preserving audit (np. grok dowodów agregowanych), bez ujawniania tożsamości pojedynczych użytkowników.
KPI dla zespołów produktowych
- Średni czas wygenerowania dowodu (P95)
- Skuteczność odrzutów (% niezgodnych) bez fałszywych pozytywów
- Odsetek udanych aktualizacji root i opóźnienie propagacji odwołań
- Współczynnik porzuceń onboarding vs tradycyjny KYC
Najczęstsze błędy wdrożeniowe
- Wiązanie dowodu tylko z adresem, nie z sesją/urządzeniem.
- Brak mechanizmu unieważnień w czasie rzeczywistym.
- Niezgodność wersji polityki między obwodem a kontraktem.
- Założenie, że ZK rozwiązuje wszystko – potrzebny jest proces governance i monitoring.
Checklist dla startu (Start‑up’y & Projekty)
- Wybierz rynek/jurysdykcję i spisz politykę zgodności.
- Podpisz umowy z min. dwoma wystawcami credentiali (redukcja ryzyka dostawcy).
- Zbuduj MVP z bramką off‑chain, równolegle projektuj pełny weryfikator on‑chain.
- Przygotuj dashboardy KPI i alarmy (odwołania, opóźnienia, odsetek błędów).
- Uruchom bug bounty i audyt obwodów ZK oraz kontraktów.
Wnioski i następne kroki
ZK‑KYC pozwala wejść w segment RWA, compliance‑ready DeFi oraz geograficznie ograniczonych produktów, nie poświęcając prywatności użytkowników. Z technicznego punktu widzenia kluczowe są: właściwy dobór systemu dowodów, mechanizmy odwołań oraz session‑binding. Biznesowo – jasna polityka, wielu wystawców i metryki jakości.
Akcja: jeśli budujesz dapp, zacznij od hybrydowego modelu (weryfikacja on‑chain + aktualizacje na L2), a proces polityk i odwołań oprzyj na multisig/DAO. Następnie testuj kampanie airdropów z nullifierami i stopniowo rozszerzaj zakres poświadczeń.
