Mi a Zcash? Ha nem bízol az államban. Útmutató kezdőknek.
Ahogy a kriptopénzek egyre szélesebb körű elfogadásra kerülnek és a világ egyre decentralizáltabbá válik, az egyén privát szférája különösen ki van téve a veszélyeknek. Ennek oka nagyrészt az, ahogy a legtöbb kriptopénz ki lett találva. Itt jön a képbe a Zcash.
A blokklánc úgy működik, mint egy nyitott főkönyv. Mindegyik és minden egyes, a felhasználó által végrehajtott tranzakció nyomon követhető rajta. Bár ez csökkenti a korrupciót és a rosszindulatú műveleteket, ezzel egyidőben teljes mértékben veszélyezteti a magánszférát.
Szükséges az, hogy valaki megmutassa életének minden egyes részét az egész világnak? Nem helyes az egyénnek egy kis magánéletet kérnie?
A kérdések megválaszolásához számos kriptopénz jött létre, amelyek teljes körű titoktartást kínálnak felhasználóiknak. A titkos pénzek műfajának zászlóshajói: a Zcash, a Monero és a Dash.
Átfogó útmutatónkban a Zcasht fogjuk bemutatni.
A Zcash egy decentralizált peer-to-peer kriptopénz. A bitcoin forkjából jött létre és ahhoz hasonlóan 21 millióban határozta meg a pénz maximális limitjét. De ezzel véget is ért a hasonlóság. A bitcoinnal ellentétben a Zcash teljes körű titoktartást kínál a felhasználók számára egy zseniálisan kitalált kriptográfia használatán keresztül.
Vizsgáljuk meg miről is van szó és nézzük meg mi is történik a színfalak mögött.
A Zcash eredete
Ahogy már korábban említettük, a Zcash a bitcoin forkjából keletkezett, 2016. október 28-án. Először a Zerocoin protokoll nevet kapta, mielőtt a Zerocash rendszerébe került és azután végül ZCash lett belőle.
A Zcash Wikipédia oldala a következőket írja:
A protokoll javítás fejlesztése és a referencia végrehajtása a Zerocoin Electric Coin Company által vezetett, amely Zcash néven is ismert.
Az alapító, vezérigazgató és a Zcash agya Zooko Wilcox.
Alapító és vezérigazgató
Zooko több mint 20 éves tapasztalattal rendelkezik a nyitott és decentralizált rendszerek, a kriptográfia, információ biztonság és startupok terén. Ezenkívül elismert munkája a DigiCash, Mojo Nation, ZRTP, “Zooko’s Triangle, Tajoe-LAFS, BLAKE2 és SPHINCS projektekben. A Least Authority alapítója is. Néha egészségtudományi témákban bloggerkedik. Rengeteget tweetel.
Hogyan működik a Zcash?
A Zcash egy másik blokklánc és kriptográfiai pénz, amely lehetővé teszi a privát cseréket (privát információk által és privát információkat is egyben) egy nyílt blokkhálózaton. Ez lehetővé teszi a szervezeteknek, a vevőknek és az új alkalmazásoknak, hogy ellenőrzésük alatt tartsák, ki láthatja a cserefolyamatuk adott pontjait, még akkor is, amikor világszintű, kevésbé jóváhagyott blokkláncon használatosak.- Zooko Wilcox
Hogyan történik egy átlagos bitcoin tranzakció?
Tegyük fel, hogy Szatosi 1 bitcoint szeretne küldeni Vitaliknak. Hogyan fogja ezt megtenni?
Először 1 bitcoint fog küldeni Vitalik nyilvános címére. Ezután a bányászok a tranzakció részleteit a blokkjaikba helyezik, így az ügylet befejezettnek tekinthető.
Akkor tehát miben különböznek a Zcash tranzakciók a bitcoinétől?
Először is, nézzük meg egy Zcash tranzakció képi illusztrálását:
Mit jelent mindez?
A Zcashnél kétféle tranzakció közül tudsz választani.
Az egyik az átlagos, nyílt tranzakció (transparent transaction), a másik pedig az álcázott és privát tranzakció (shielded private transaction).
Tegyük fel, hogy Szatosi 1 ZEC-et (ZEC = Zcash) szeretne küldeni Vitaliknak.
Ha Vitalik beleegyezik a tranzakció nyitottságába, vagyis, hogy bárki láthatja, akkor Szatosi elküldheti a ZEC-et Vitalik nyílt címére más néven “t-addr”-ra.
Azonban ha Vitalik egy kis privát szférát preferál és nem szeretné nyilvánossá tenni a tranzakció részleteit, akkor a pénzt egyszerűen elküldheti az álcázott címre más néven “z-addr”-ra.
Ha mind Szatosi, mind Vitalik álcázott címeket használt a tranzakció során, akkor ennek minden részlete privát lesz. Ez magában foglalja személyazonosságukat és a tranzakció összes részletét.
A Zcash ilyen magas szintű titkosítása zk-Snarks (a Zero Knowledge Succinct Non Interactive Arguments of Knowledge rövidítése) használatának segítségével valósulhat meg.
Mielőtt folytatnánk azonban, fontos először megérteni, hogy mi is az a zéró ismeret bizonyítások és a zk-Snarks.
Mik azok a zéró ismeret bizonyítások (Zero Knowledge Proofs)?
A nulla vagy zéró ismeret bizonyítások 1980-ban jöttek létre három MIT kutató, Shafi Goldwasser, Silvio Micali és Charles Rackoff munkájának köszönhetően. A tudósok olyan problémákon dolgoztak, amelyek az interaktív bizonyításrendszerekkel (interactive proof systems) voltak kapcsolatosak, ahol a bizonyító (prover) üzeneteket cserél a verifikálóval (verifier), amiben a bizonyító bebizonyítja egy információról való ismeretét a verifikálónak anélkül, hogy feltárná az adott bizonyítékkal kapcsolatos információt.
A tudósok mérföldkőnek számító felfedezése előtt a legtöbb bizonyítékrendszer a rendszer megbízhatósági tulajdonságán alapult. Ez abból a feltételezésből indult ki, hogy a bizonyító a rosszindulatú fél, vagyis bármilyen szituációban ő próbálja meg átvágni a verifikálót. A három kutató azonban más szemszögből közelítette meg a kérdést, vagyis a verifikáló morális szándékait kérdőjelezték meg a bizonyítóé helyett. Azt a kérdést tették fel, hogy hogyan lehet arról teljes mértékben megbizonyosodni, hogy a verifikáló nem szivárogtat ki információt, valamint aggodalmak merültek fel azzal kapcsolatban is, hogy vajon mennyi információ derül ki a bizonyítóról a verifikáló számára az ellenőrzési folyamat során.
Ennek a rejtvénynek számos következménye van a való világra nézve és az egyik legismertebb a jelszavak védelme. Tegyük fel, hogy egy jelszóval szeretnénk bejelentkezni egy weboldalra. A szokásos protokoll szerint az ügyfél, vagyis te bepötyögöd a jelszavadat, ami a szerverhez kerül, ez pedig hasheli a jelszót és összeveti azzal az értékkel, amelyet a rendszer tárol. Ha az értékek megegyeznek, akkor be tudsz lépni az oldalra.
Ugye te is látod a rendszer gyenge pontját? A szervernek egy egyszerű szöveges verziója van a te jelszavadról és a személyes adataid védelme a szerver, ebben az esetben a verifikáló kezeiben van. Ha a szervert megtámadják, vagy kompromittálódik, akkor a jelszavad a rosszindulatú félhez kerül, aminek súlyos következményei is lehetnek. Az ilyen esetek leküzdéséhez a zéró tudás bizonyítások minden szempontból elengedhetetlenek.
A korábban elhangzottak alapján, két fél vesz részt a zéró ismeret bizonyításokban, a bizonyító és a verifikáló. A zéró ismeret azt állítja, hogy a bizonyító be tudja bizonyítani a verifikálónak az adott információ birtoklását anélkül, hogy feltárná neki, hogy konkrétan mi is ez az információ.
A zéró ismeret bizonyítás tulajdonságai
Ahhoz, hogy a zéró ismeret bizonyítás működőképes legyen, a következő paramétereknek kell megfelelnie:
- Teljesség: Ha a kijelentés igaz, akkor egy becsületes verifikáló meggyőződhet erről egy becsületes bizonyító által.
- Megbízhatóság: Ha a bizonyító nem becsületes, akkor hazugsággal nem tudja meggyőzni a verifikálót a kijelentés igazságának megbízhatóságról.
- Zéró ismeret: Ha az állítás igaz, akkor a verifikálónak nem lesz tudomása arról, hogy valójában mit tartalmaz állítás.
Most már van némi elképzelésünk arról, hogy mi is az a zéró ismeret bizonyítás. Ismerkedjünk meg néhány konkrét példával, mielőtt jobban belemerülünk zk-SNARKS-ba és annak alkalmazásába a blokkláncon.
1. eset: Ali baba barlangja
Ebben a példában a bizonyító (P) azt mondja a verifikálónak (V), hogy ő tudja a titkos ajtó jelszavát, ami a barlang hátuljában van és be akarja ezt a tudást bizonyítani a verifikálónak, azonban ezt a jelszó megmondása nélkül tenné. Ez így néz ki:
Ali baba barlangjában tehát a bizonyító az A és B útvonalak valamelyikén gyalogol, feltételezve, hogy először átmegy az úton és hátulról éri el a titkos ajtót. Amikor ezt teszi, a verifikáló megjelenik a bejáratnál, aki nem tudja, hogy a bizonyító konkréten melyik útvonalon érkezett és kijelenti, hogy látni akarja, hogy a bizonyító a B útvonalról jön.
Amint a diagramon látható, a bizonyító valóban megjelenik a B útvonalon, de mi van akkor ha ez véletlen szerencse? Mi van akkor ha a bizonyító nem ismerte a jelszót és a B útvonalat választotta – aztán az ajtónál toporgott és akkor szerencséjére a verifikáló azt mondta, hogy a B útról jöjjön, amelyen már egyébként is ott tartózkodott.
Az érvényesség letesztelésének kísérlete többször is lezajlik. Ha a bizonyító minden egyes alkalommal a korrekt útvonalon jelenik meg, akkor ezt azt bizonyítja a verifikálónak, hogy a bizonyító tényleg ismeri a jelszót, annak ellenére, hogy a verifikáló nem tudja mi is a jelszó.
Lássuk, hogyan teljesül a zéró ismeret 3 tulajdonsága ebben a példában:
- Teljesség: Mivel a kijelentés igaznak bizonyult, a becsületes bizonyító meggyőzte a becsületes verifikálót.
- Megbízhatóság: Ha a bizonyító nem volt becsületes, akkor se tudta volna átvágni a verifikálót, mivel a tesztelés többször is megtörtént. A bizonyító egyszer csak kifogyott szerencséjéből.
- Zéró ismeret: A verifikáló soha nem tudta, hogy mi a jelszó, de meg volt győződve arról, hogy a bizonyító annak birtokában van.
2. eset: Waldo megkeresése
Emlékszel a Waldo megkeresése című játékra? Biztosan láttad már valahol, vagy a való életben vagy online. Azok számára, akik nem tudják miről van szó, a Waldo megkeresése olyan játék, amelyben meg kell találni Waldert az emberek tömegében. Ez egy egyszerű amolyan szúrd ki a fickót a képen játék. Hogy legyen valami elképzelésed a játékról, következzen egy kép:
Itt kell megtalálni Waldot, aki pedig így néz ki:
Egyszerűnek tűnik ugye? Keresd meg ezt a fickót a képen látható emberek tömegében. Persze semmi gond, de mi köze ennek a zéró ismerethez?
Képzeld el, hogy két ember játssza a játékot, Anna és Karcsi. Anna megsúgja Karcsinak, hogy tudja, hogy merre van Waldo, de nem akarja neki megmutatni, hogy pontosan hol. Szóval akkor hogyan is tudja bebizonyítani Anna Karcsinak, hogy megtalálta Waldot anélkül, hogy megmutatná?
Létezik egy érdekes dokumentum Monai Naortól, Yael Naortól és Omer Reingoldtól, amely 2 zéró ismeret megoldást kínál erre a dilemmára. Ezek a ‘Mid- Tech’ és a “Low-Tech’ megoldások. Nézzük meg miről is van szó.
Mid-Tech megoldás
A megoldás azért mid-tech, mert a bizonyítónak és a verifikálónak egy fénymásolót kell ehhez használnia. Anna és Karcsi először egy másolatot készít az eredeti képről. Anna azután kivágja Waldot a másolatból, figyelve arra, hogy Karcsi ne lásson semmit, aztán kidobja a maradékot. Ezután Anna meg tudja mutatni a kivágott Waldot Karcsinak, ezzel bizonyítva, hogy valóban megtalálta és ehhez nem kellett megmutatnia, hogy pontosan hol is volt a képen.
Azonban vannak ezzel problémák. Bár a megoldás teljesíti a zéró ismeret kritériumait, azonban nem felel meg a megbízhatóság paraméterének, mivel Anna számos esetben csalhatott volna. Például már kezdettől fogva lehetett volna egy kivágott Waldo képe, amit így ugyan megmutat Karcsinak, de valójában nem tudja, hogy hol is lehet Waldo. Tehát mi a megoldás erre?
Ennek megoldása aprólékos és alapos tesztelés. Anna és Karcsi először másolatot készítenek az eredeti képről. Ezután Karcsi egy jelet rajzol a másolat hátoldalára. Karcsi ezután átkíséri Annát egy szobába, ahol Anna el lesz zárva, így nem lehet esélye csalni. Ha Anna ezek után egy kivágott Waldoval jön ki, akkor Karcsi valóban meggyőződhet róla, hogy pontosan tudta, hol van Waldo, anélkül hogy Anna megmondta volna neki. Ezt a tesztet a páros többször is megismételheti és Karcsi összehasonlíthatja a különböző kivagdosott Waldokat, hogy még biztosabbá váljon Anna becsületességéről.
Low-Tech megoldás
Ez a megoldás alapvető eszközöket igényel. Az ötlet egyszerű. Egy kartonpapíron, amely kétszer akkora, mint az eredeti kép, ki kell vágni egy kisebb téglalapot. Amikor Karcsi nem néz oda, akkor Anna a kivágott téglalap helyét az eredeti képre helyezi, úgy, hogy azon csak Waldo látszódjon. Szól Karcsinak, hogy odanézhet végre, aki ezt fogja látni:
Karcsinak így lesz némi ötlete arról, hogy merre is lehet Waldo a képen, azonban a pontos helyet ennyiből nem fogja megtudni. Anna tehát bebizonyította Karcsinak, hogy megtalálta Waldot anélkül, hogy annak pontos helyét meghatározná.
Hogyan lehet nem interaktívvá tenni a zéró ismeretet?
A korábbi zéró ismeret ellenőrző rendszereknek volt egy nagy problémája. Ahhoz, hogy működőképes legyen, a bizonyítónak és a verifikálónak egyidőben kellett online lennie. Más szóval, a folyamat interaktív volt. Ez az egész rendszert használhatatlanná tette és lehetetlenné a skálázhatóságot. A verifikálók és bizonyítók képtelenek voltak egyidőben online lenni. Így egy olyan rendszerre volt szükség, ami hatékonyabb.
1986-ban Fiat és Shamir feltalálta a Fiat-Shamir heurisztikát és sikeresen megváltoztatta az interaktív zéró ismeret bizonyítást a nem interaktív zéró tudás bizonyítássá. Ez segítette az egész protokoll működését, bármilyen interakció nélkül. Az eljárás pedig nagyon egyszerű.
Egy példa illusztrálásához először bemutatjuk, hogy hogyan működött a zéró ismeret bizonyítás Fiat és Shamir előtt. Ezt egy egyszerű diszkrét logaritmussal tesszük meg.
- Anna be akarja bizonyítani Karcsinak, hogy ismeri az értéket (x) és meghatározza, hogy y=g^x a g alapig
- Anna egy véletlenszerű értéket választ (v) egy értékkészletből (Z) és kiszámítja a következőt: t=g^v, amit aztán elküld Karcsinak
- Karcsi egy véletlenszerű értéket választ (c) az értékkészletből (Z) és elküldi Annának
- Anna kiszámolja az r=v-c*x és visszaküldi Karcsinak az r értékét
- Karcsi ellenőrzi, hogy helyes-e a következő állítás: t=g^r * y^c (mivel r=v-c*x, y=g^x és egyszerű helyettesítéssel g^(v-c*x)*g ^ c*x=g^v=t)
- Karcsi nem tudja az x értékét, azonban a t=g^r * y^c állítást megvizsgálva le tudja ellenőrizni, hogy Anna valóban ismeri e az x értékét
Ez tehát az interakciós zéró ismeret, a probléma azonban ezzel az, hogy mindkettejüknek online kell lennie és az értékeket cserélgetnie, hogy működőképes legyen.
A kérdés tehát, hogyan tudja Anna Karcsinak bebizonyítania egy információ ismeretét akkor is, ha Karcsi nincs online?Ezt egy egyszerű kriptográfiai hash függvény segítségével teheti meg, a Fiat és Shamir elmélet szerint.
Nézzük meg, hogy a korábbi példánk hogyan működne egy nem interaktív módon:
- Anna be akarja bizonyítani Karcsinak, hogy ismeri az értéket (x) és meghatározza, hogy y=g^x a g alapig
- Anna egy véletlenszerű értéket választ (v) egy értékkészletből (Z) és kiszámítja a következőt: t=g^v
- Anna kiszámítja a c=H (g,y,t) értéket, ahol a H() egy hash függvény
- Anna kiszámítja az r=v-c*x értéket
- Karcsi vagy bárki más ezután ellenőrizheti, hogy valós állítás-e a t=g^r * y^c
Amint láthatjuk, a zéró ismeret bizonyítások nem interaktívok. És ezzel el is érkeztünk a zk-SNARK-hoz, amelynek létrejöttéhez ez az elmélet fektette le az alapokat.
Mire jó a zk-SNARKS?
A zk-SNARKS a “Zero Knowledge Succinct Non Interactive Argument of Knowledge” rövidítése. Használata a modern blokklánc technológiában hatalmas jelentőségű. Az alkalmazás megértéséhez fontos tudni hogy hogyan működik egy okos szerződés. Az okos szerződés lényegében olyan alapok letétbe helyezése, amely egy adott funkció elvégzése után aktiválódik.
Példa: Anna 100 ETH-t (ethert) tesz egy okos szerződésbe, amelyet Karcsinak szán. Karcsinak egy konkrét feladatot kell megcsinálnia az etherekért cserébe, amelynek elvégzése után megkapja az okos szerződéstől a 100 ETH-t.
Ez bonyolultabbá válik akkor, amikor Karcsi feladatai több rétegűek és bizalmasak. Tegyük fel, hogy okos szerződést kötöttél Annával. Csak akkor kapod meg a pénzt, ha megcsinálod A-t, B-t és C-t. De mi van akkor ha nem akarod feltárni az A, B és C részleteit, mert azok bizalmas információk például a vállalatodnál és nem akarod, hogy megtudják a versenytársaid, hogy pontosan mit is kell tenned?
A zk-SNARKS be tudja bizonyítani, hogy ezeket a lépéseket az okos szerződésben határozták meg, anélkül, hogy feltárná a lépések részleteit. Nagyon hasznos dolog a te és a vállalatod személyes adatainak a védelme. Ez pedig csak a folyamat egy részét tárja fel anélkül, hogy a teljes folyamatot bemutatja és bizonyítja, hogy becsületes vagy.
Hogyan működik a zk–SNARKS?
A zk-SNARKS 3 algoritmust tartalmaz: G, P és V.
A G egy kulcsgenerátor (key generator), amely egy “lambda” (amely bizalmas és semmilyen körülmények között nem szabad feltárni) bemenetet kreál és egy programot (C). Ez aztán két nyilvánosan elérhető kulcsot generál, a bizonyító kulcsot (proving key: pk) és a verifikáló kulcsot (verification key: vk). Ezek a kulcsok nyilvánosak és az érintett felek mindegyikének a rendelkezésére állnak.
A P a bizonyító (prover), aki 3 elemet fog használni bemenetként, ezek a pk (bizonyító kulcs), az x (véletlenszerű bemenet), amelyek nyilvánosak és a titkos kijelentést (w), amely az ismeretet bizonyítja, anélkül, hogy feltárná magát az ismeretet.
A P algoritmus egy prf bizonyítékot generál, amely: prf=P (pk, x, w).
A V verifikáló algoritmus lényegében egy logikai változót (boolean variable) ad vissza. A boolean változónak csak két lehetősége van: igaz lehet vagy hamis.
A verifikáló tehát a verifikáló kulcsot, a nyilvános bemenetet (x) és pfr bizonyítékot mint bemenetet használja, ami így néz ki:
V(vk,x,prf)
…és igaz állítást ad vissza, ha a bizonyítónak igaza van, avagy jelzi ha az hamis.
Most pedig pár szó a lambda paraméterről. A lambda értékét bizalmasan kell kezelni, mert bárki használhatja hamis bizonyítékok generálására. Ezek a hamis bizonyítékok igaz értéket fognak mutatni függetlenül attól, hogy a bizonyító tényleg ismeri-e a titkos kijelentést (w) vagy sem.
A zk-SNARKS funkcionalitása
A zk-SNARKS funkcionalitásának bemutatásához ugyanazt a példa programot használjuk, amit Christian Lundkvist a Consensys egyik cikkében mutatott be. Így néz ki a példa program:
függvény C(x, w)
{
return ( sha256(w) == x );
}
Lényegében, a C függvény bemenetként 2 értéket vesz fel, a nyilvános hash értéket (x) és a titkos utasítást (w), amelyet ellenőriznie kell. Ha a w SHA-256 hash értéke egyenlő x-szel, akkor a függvény igaz állítást ad vissza, ellenkező esetben pedig hamisat. (A SHA-256 a bitcoinban használt hash függvény).
Hozzuk vissza régi ismerőseinket, Annát és Karcsit erre a példára. Anna lesz a bizonyító, Karcsi a szkeptikus pedig a verifikáló.
Az első dolog amit Karcsinak mint verifikálónak meg kell tennie, hogy létrehozza a bizonyító és verifikáló kulcsot a G generátor segítségével. Ehhez Karcsinak generálnia kell a lambda véletlenszerű értékét. A korábbiak alapján, Karcsinak nagyon óvatosnak kell lennie a lambdával, mert nem tudathatja Annával annak értékét, amivel megakadályozza Annát abban, hogy hamis bizonyításokat gyártson.
Ez így fog kinézni:
- G(C, lambda) = (pk , vk).
Most hogy létrejött a két kulcs, Annának a bizonyítás létrehozásával kell bebizonyítania az utasítás érvényességét. A bizonyíték generálását Anna a P bizonyító algoritmussal fogja megtenni. Be fogja bizonyítani, hogy tudja a w titkos értékét, ami hash-es (a SHA 256 felbontásán keresztül), hogy megadja az x kimenetet. Tehát a bizonyító algoritmus a bizonyítások generációjához így néz ki:
- prf = P( pk, x, w).
Most hogy Anna létrehozta a prf bizonyítást, meg fogja adni az értékét Karcsinak, aki végre futtatni fogja a zk-SNARKS verifikációs algoritmusát.
Ami így fog kinézni:
- V( vk, x, prf).
Ebben az esetben a vk a verifikáló kulcs és az x az ismert hash érték és a prf a bizonyíték arra, hogy Annától kapta. Ha ez az algoritmus igaz állítást ad vissza, akkor ez azt jelenti, hogy Anna őszinte volt és valóban rendelkezett a w titkos értékkel. Ha hamis állítást ad vissza, akkor ez azt jelenti, hogy Anna hazudott arról, hogy tudja mi az w.
Hogyan bányászható a Zcash?
A blokk bányászat a Zcashnél az equihash segítségével történik. Az equihash egy proof-of-work algoritmus, amelyet Alex Biryukov és Dmitry Khovratovich dolgozott ki és ami a születésnapi paradoxonon (Generalized Birthday Problem) alapul.
Az equihash használatának a legfőbb oka az, hogy az ASIC-kal való bányászatot minél inkább barátságtalanná tegye. A kriptopénzek egyik problémája az, így a bitcoiné is, hogy a bányászfarmok monopolizálják a bányászatot, mivel sok pénzt fektetnek be ASIC gépekbe, hogy minél több bitcoint tudjanak bányászni.
Az ASIC-ok elriasztása azt jelenti, hogy a bányászat demokratikusabb és kevésbé centralizált lesz.
Ezt mondja a Zcash blogja az equihashról:
Azt gondoljuk továbbá, hogy nem valószínű az equihash nagy mértékű optimalizálása, ami előnyös helyzetet jelentene azon bányászoknak, akik ismerik az optimalizálást. Ennek az az oka, hogy a születésnap paradoxont széles körben tanulmányozták tudósok és kriptográfusok és az equihash közel áll a születésnapi paradoxonhoz. Vagyis úgy tűnik, hogy az equihash sikeres optimalizálása valószínűleg a születésnapi paradoxon optimalizálása lenne.
Szóval már hallottunk egy keveset a születésnapi problémáról, de mi is az? Mi az a születésnapi probléma azaz születésnapi paradoxon?
Ha egy vadidegennel találkozol az utcán, nagyon alacsony annak esélye, hogy mindkettőtöknek egy napon legyen a születésnapja. Valójában, feltételezve, hogy az év minden napján ugyanolyan esély van a születésnapra (1/365), annak az esélye, hogy az illetőnek is ugyanarra a napra essen, mindössze 0.27%.
Magyarul, valóban alacsony.
Mindazonáltal, ha 20-30 embert invitálsz egy szobába, akkor ennek esélye rendkívül megugrik. Valójában, 50-50 esély van arra, hogy ketten ugyanazon napon születtek.
Hogyan történhet ez meg? Ez egy egyszerű szabály miatt van a valószínűségben, amely a következőképpen történik. Tegyük fel, hogy N különböző lehetőségeid vannak egy esemény bekövetkezésének, akkor az N véletlen elemek négyzetgyökére van szükség ahhoz, hogy egy 50%-os ütközés esélye meglegyen.
Ha az elmélet a születésnapok esetében alkalmazzuk, akkor neked 365 különböző lehetőséged van, így csak a négyzetgyökre (365) van szükséged, ami ~23~, véletlenszerűen kiválasztott embernek az 50%-os esélyhez, hogy 2 embernek azonos legyen a születésnapja.
Zcash érmeelosztás
Mivel a Zcash a bitcoin egyik forkja, így van néhány hasonlóság.
A Zcashnek is 21 millió a maximális pénzérme száma, ami várhatóan 2032-re lesz kibányászva. A blokkok jutalma négy évente a felére csökken, hogy ellenőrzés alatt tartsa az ellátást.
A legtöbb pénzérmével ellentétben azonban, a Zcash nem volt előre kibányászva és nem volt ICO által finanszírozva.
A Zcashnek volt egy zárt befektetői köre, akik 1 millió dollárral finanszírozták a fejlesztéseket. Ezért cserébe a befektetők az első 4 éves időszakban a teljes ellátás 10%-os jutalmát kapják járulékos módon. Ennek a jutalomnak a neve az “Alapítók jutalma”.
Néhány ilyen befektető ismert név, így Barry Silbert, Erik Voorhes, Roger Ver és Naval Ravikant.
Nehéz a Zcash szabályozása?
A Zcash szabályozása nyilvánvalóan nehéz a hozzáadott biztonsági intézkedések miatt, azonban a bűnüldöző szerveknek van módja arra, hogy ellenőrizze a szabályokat, amennyiben arra szükség van. Ez két módon történik:
- Látható kulcs (View Key)
- Jegyzetek (Memos)
Minden Zcash felhasználónak saját látható kulcsa (View Key) van.
Szükség esetén a felhasználó megoszthatja a látható kulcsát valaki mással is. A látható kulcs lényegében feltárja az összes álcázott tranzakciót. A kulcs segítségével bárki láthatja az adott személy tranzakcióit és a címzett címét.
A Zcash tranzakciók egy jegyzethez való helyet is biztosítanak. A jegyzet így további információkat is tartalmazhat, amelyeket csak a címzett tekinthet meg.
Ez a jegyzet képes a pénzügyi intézmények közötti adatokat tartalmazni bárhol ahol a törvény szükségesnek ítéli ezen adatok küldését.– Zooko Wilcox
A Zcash hamisításának problémája
A Zcashnek szembe kellett néznie komoly hamisítási problémával, amely egy közvetlen vadhajtása volt a zk-SNARK programozásnak.
A Zcash 1.0-ban a privát ügyletek a SNARK nyilvános paramétereire támaszkodnak a zéró ismeret bizonyítások létrehozásához és verifikálásához. Ezeknek a SNARK nyilvános paramétereknek a generálásához nyilvános/privát kulcspárt kell létrehozni, majd meg kell semmisíteni a privát kulcsot és meg kell őrizni a nyilvánosat.
Azonban itt válnak a dolgok trükkössé.
Ha valaki megkaparintja ezt a privát kulcsot, az hamis érméket tud létrehozni.
Ez általában nem okoz problémát egy nyílt főkönyvben, mint amilyen a bitcoin is, ahol minden tranzakció nyitott könyv a világ számára. Azonban a Zcashnél az adatvédelem megakadályozza azt, hogy bárki ellenőrizhesse az érmék állapotát.
Így jellemzi Zooko Wilcox a privát kulcsot, vagy ahogyan ezt előszeretettel hívja a “mérgező hulladékot”:
A privát kulcsot mérgező hulladéknak nevezzük és a protokollunk célja annak biztosítása, hogy mérgező hulladék egyáltalán ne keletkezhessen. Képzelj el egy csomó különböző kémiai mellékterméket a gyáradban, amelyek egyénileg ártalmatlanok, de ha összekevered őket, akkor veszélyes anyag válik belőlük, amelyet nagyon nehéz kordában tartani. A mi megközelítésünk az, hogy ezeket az önmagukban ártalmatlan szereket külön tartsuk, így a mérgező hulladék sose jöhet létre.
Tehát annak érdekében, hogy csökkenjen a támadó esélye a mérgező hulladék megszerzéséhez, egy bonyolult ceremóniára került sor.
A Ceremónia
A ceremónia részletesen dokumentálva van a Radiolab podcaston, amit itt lehet meghallgatni.
A ceremónia célja a következő volt:
Létrehozni egy biztonságos többpárti számítást, amelyben a résztvevők mindegyike generál egy nyilvános/privát kulcspár szilánkot, vagyis egy kis darabkát.
Miután ez létrejött, minden tag megsemmisíti a privát kulcs szilánkját és összegyűlnek a nyilvános kulcs szilánkjaival abból a célból, hogy a nyilvános kulcsot létrehozzák.
Lényegében, ha csak egyetlen egy résztvevő semmisíti meg a privát kulcs szilánkját, akkor lehetetlen újra azt létrehozni. A kísérlet akkor sikertelen, ha az összes résztvevő hazudik.
Olvasd el Morgan Peck első kézből származó beszámolóját a ceremóniáról. A résztvevők erőfeszítése dicséretes.
Ez pedig Zooko Wilcox nyilatkozata a ceremónia lényegéről:
Kiemelkedő kriptográfiai és informatikai biztonság mérnöki teljesítményt végeztünk annak érdekében, hogy a SNARK nyilvános paramétereket generáljunk a Zcash 1.0 Sprout számára. A ceremónia általános szerkezete többpárti számításon, légréseken és kitörölhetetlen bizonyítékokon alapult. 6 különböző ember mindegyike a ceremónia egy részében vett részt. A többpárti számítás biztosítja, hogy még ha 5–en is közülük titokban összejátszanak, vagy megpróbálják rekonstruálni a mérgező hulladékot, egyetlen egyén őszinte viselkedése a mérgező hulladék szilánkjának megsemmisítésével megakadályozná, hogy valaha is rekonstruálható legyen. A ceremónia kiemelkedő ereje ellenére szándékomban áll a Zcash protokoll frissítése jövő évben, amely egy extra felderítő réteget fog hozzáadni a megelőzés rétegéhez.
Ethereum + Zcash = <3?
A Zcash a Zerocoin Electric Coin Company által 2016. szeptember 9-én indult és ez az első példája a blokklánc technológia koncepciójának a zk-SNARKS-val való egyesítésében. Célja, hogy teljesen biztonságos és álcázott tranzakciós tereket biztosítson a felhasználók számára anélkül, bárki számára feltárnának részleteket (például címeket).
Az Ethereum integrálni akarja a zk-SNARKS-ot a Metropolis fázisba való lépés során és úgy tervezik ezt megtenni, hogy a Zcashsel való szövetséget hoznak létre, amely magában foglalja a kölcsönös értékcserét. A Zcash vezető fejlesztője, Zooko Wilcox erről egy prezentációt adott elő a DeCon2-n Sanghajban, az előadású egy ilyen szövetség jövőjét térképezte fel. Elmondása szerint 3 módja van annak, hogy a Zcash, valamint a zk-SNARKS kiterjesztés az Ethereumhoz integrálható legyen.
Az első módszer az ún. “Baby Zoe” (Zoe = Zcash az Ethereumon). A Baby Zoe az Ethereumhoz hozzáad egy zk-snark elő fordítót és egy mini Zcash okos szerződést kreál. Az ötlet célja látni azt, hogy az Ethereum rendszer képes-e zk-snark által engedélyezett dappot létrehozni a blokklánc tetején.
A második módszer az Ethereum számíthatóságának az integrálása a Zcash blokkláncán belül. Ahogy Wilcox megfogalmazza, az Ethereum legnagyobb eszköze annak számíthatósága és az emberek szeretnék látni, hogy tudják-e ezt integrálni egy zk-snark-on alapuló blokkláncon, mint amilyen a Zcash. Képesek az emberek létrehozni dappokat olyan blokkláncon, amely zéró ismeret bizonyításokon alapul? Ez azonban még várat magára.
A harmadik és egyben legizgalmasabb aspektus a “Project Alchemy”. Ez alapvetően a két blokkhálózat összekapcsolása és interoperabilitása, amely lehetővé teszi, hogy az egyik zökkenőmentesen mozogjon a kettő között. A Zcash ezt a BTC Relay klónozásával tervezi megvalósítani. A BTC Relay egy Ethereum szkript, amely arra lett megírva, hogy létrehozzon egy bitcoin light klienst az Ethereumban. A Zcash klón ugyanezt a koncepciót fogja használni, vagyis hogy egy Zcash light klienst hozzon létre az Ethereumon belül.
Ha ez működni fog, akkor ez lesz az első, decentralizált pénznem rendszer a világon, amely elősegíti a dappok létrehozását a zéró ismeret beépítésével.
Előretekintve
A Zcash egyértelműen az egyik legmenőbb és legizgalmasabb érme. És igen jól teljesít a megszületése óta.
A cikk írásának időpontjában a Zcash piaci értéke 951 millió dollár, 1 ZEC pedig 235 dollárt ér.
Nagyon is nyilvánvaló, hogy miért is értékelik az emberek a Zcash által kínált privát szférát az egyre inkább átlátható világunkban.
Maga Edward Snowden is áldását adta a Zcashre:
Egyetértek. A Zcasht annak adatvédelmi technológiája a legérdekesebb bitcoin alternatívává teszi. A bitcoin nagyszerű, de ‘ha nem privát, akkor nem biztonságos’.
Hogyan tároljuk a Zcasht?
A Zcash pénztárcák teljes listáját a zcashcommunity oldalán találhatjuk meg.
Korábban említettük, hogy kétféle cím van a Zcashnél, a nyílt, vagyis átlátható (transparent) és a titkos (private), így a felhasználónak a személyes igényeinek megfelelő pénztárcát kell kiválasztania.
Internetes pénztárca
Ez a leggyorsabb módja annak, hogy Zcasht küldjünk vagy fogadjunk. Az alábbiakban felsorolt weboldalak közül a legtöbbnek van okostelefonos appja is. Ügyelni kell arra, hogy erős jelszavakat használjunk és ajánlott a 2 lépcsős hitelesítés engedélyezése, ha ez a rendelkezésre áll.
Web alapú appok / pénztárcák, amelyek a Zcash nyílt címeivel működnek:
- Guarda Wallet
- Exodus
- Jaxx
- Bitpie
- Coinomi
- Carbon Wallet
- Cryptonator
- Freewallet
- CoinBR/Stratum
- Waterhole
Hardveres pénztárca
A hardveres pénztárca a legbiztonságosabb módja a Zcash és más kriptopénzek tárolására. Az egyetlen hátránya (egyelőre) az, hogy csak a nyílt címet támogatja.
Hardveres pénztárcák, amelyek a Zcash nyílt címeivel működnek:
Helyi pénztárca
A helyi pénztárca Zcash kliensét és a teljes hálózati csomópontot futtatják a számítógépen. Telepítése és használata technikásabb mint a többieké.
Helyi pénztárcák, amelyek a Zcash titkos címeivel működnek:
Megjegyzés: Az első link a hivatalos Zcash kliens, ami Linuxon fut. A Windows verzió nyílt forráskódú David Mercertől. A Kozyilmaz a legfrissebb Mac verzióval rendelkezik. Az itt felsorolt Zcash pénztárcákkal használható API parancsok listáját pedig itt találhatjátok meg. Ha pedig még jobban bele szeretnél merülni a kódok világába, akkor itt lehet izgalmas ZCash projekteket felfedezni.
Váltó/tőzsde pénztárca
Nagyon egyszerű a használata a váltós pénztárcáknak, mindösszesen egy fiókot kell csak létrehoznunk. Ezután egy címet kell generálni a Zcash küldéséhez/fogadásához vagy az azzal való kereskedéshez. Jelen pillanatban kizárólag a Shapeshift támogatja a privát címek használatát.