ZeroNet (decentralizált Internet BitCoin és torrent alapon)


Nemrégiben olvastam a ZeroNet-ről annak kapcsán, hogy a fejlesztő magyar srác, Kocsis Tamás lett a harmadik magyar, aki meghívást kapott a TED-re. Ez azért elég nagy dolog, így gondoltam érdemes utána nézni.
Annak idején én is gondolkodtam egy decentralizált Internet projekten. Az én elképzelésem az volt, hogy a hálózat node-jai csak egymást ismerik, és mikor valakinek egy adott tartalomra van szüksége, az igényét szétküldi a hálózatban. Ha valakinek megvan a tartalom, visszaküldi azt, ha nem, tovább küldi a kérést. Az üzenet addig terjed, míg meg nem lesz a tartalom (vagy míg le nem nullázódik az üzenetben elhelyezett számláló, hogy ne fusson az üzenet a végtelenségig, ha nincs meg a tartalom). Ha megvan a tartalom, az megindul visszafelé a hálózaton, miközben mindenki cache-eli, így legközelebb már jó eséllyel meglesz valami közelebbi csomópontnál. A cache mérete persze limitált, mert ugye senkinek nincs annyi helye, hogy az egész Internetet cache-elje, de a felépítésből adódóan kb. a nagy látogatottságú oldalak lesznek gyorsan elérhetőek. A weboldalak digitálisan aláírt ZIP-ek lettek volna, a szoftvert pedig PHP-ban gondoltam megírni, hogy ne csak helyben futhasson, hanem kirakhassuk a node-unkat bármilyen hosting providerhez, így állandó node-okat adva a hálózathoz. Végül a dologból nem lett semmi, mindössze érdekességként írtam le. :) Gyorsan át is térnék a ZeroNet-re...
A ZeroNet tulajdonképpen a BitCoin és a BitTorrent összegyúrása. Ha úgy teszik, a BitCoin webbé történő kiterjesztése. A BitCoin-os bejegyzésemben (http://lf.estontorise.hu/archives/662) írtam, hogy a BitCoin azonosító egy aszimmetrikus kulcspár publikus része, a pénz küldéseket pedig ennek a kulcsnak a privát részével hitelesítjük. A ZeroNet-en ugyanez a publikus kulcs lesz a weboldalunk címe (akár pénzt is küldhetünk közvetlenül a weblap címére, mivel ugye az egy BitCoin azonosító) és a privát kulcsunkkal hitelesítjük a tartalmat. Ennek a megoldásnak köszönhetően a ZeroNet pont ugyanolyan biztonságos, mint a BitCoin. A tartalmak eléréséhez a ZeroNet a jól ismert BitTorrent protokollt használja. Ha van egy honlap címünk (BitCoin azonosító), a rendszer rákeres a BitTorrent trackereken (DHT-t is támogat a rendszer). Az oldal maga tulajdonképpen egy torrent-be van becsomagolva, és minden esetben tartalmaz egy speciális json fájlt. Ez a json fájl digitálisan alá van írva, a weboldal fájljainak hash-ét, így hitelesítve azokat. Miután a fájlokat letöltöttük, a torrent protokoll működésének megfelelően mi is ki fogjuk szolgálni őket. Tömören ennyiről van szó BitCoin és BitTorrent okos ötvözete. Ami itt még plusz, hogy mikor egy oldal frissül, a tulajdonos azt rögtön broadcastolja a peer-eknek (akik letöltötték tőle, ezek listája ugye rendelkezésre áll a BitTorrent működéséből adódóan), akik tovább broadcastolják, így az oldalak mindig frissek maradnak. Bár nem teljesen anonim a megoldás, hisz a partnerek IP-je ismert, viszont jóval hatékonyabb, mint az én, előzőekben felvázolt változatom. Hogy ne kelljen minden esetben BitCoin azonosítókkal (kb. az IP cím szinonimája a ZeroNet-en) bohóckodni, a ZeroNet támogatja a NameCoin-t, amivel az internet DNS-éhez hasonlóan névvel láthatjuk el oldalainkat. Dióhéjban kb. ennyi a ZeroNet működése. Ügyes...

#blog