# ZeroNet

ZeroNet è un network decentralizzato basato sull'omonimo software creato nel 2015 da Tamas Kocsis. Il programma permette la creazione di siti web ospitati in una rete peer to peer simile alla rete Bittorrent in cui ogni nodo della rete possiede una copia dei siti che visita e ne garantisce la distribuzione agli altri utenti. Il programma è scritto in python ed è completamente open source, distribuito nei termini della licenza GPL. Al contrario dei normali siti web che sono identificabili tramite un indirizzo IP ed un nome di dominio, gli ziti (nome che hanno i siti ospitati su Zeronet) sono identificati da una chiave crittografica pubblica, mentre le chiavi private consentono ai singoli utenti di firmare i contenuti da loro pubblicati (funzionando in modo simile ad un indirizzo dei portafogli Bitcoin). Sono inoltre presenti dei tracker del tutto simili a quelli della rete Bittorrent per gestire le comunicazioni fra i nodi.
I siti ospitati su Zeronet sono come già detto ospitati dai singoli nodi, che possono accederci tramite qualunque browser web una volta che il programma è avviato. Zeronet non è anonimo di default, ma consente di instradare volendo il suo traffico dati nella rete TOR se è necessario essere protetti dall'anonimato.
Il sito web di Zeronet ed i tracker della rete sono bloccati nella Repubblica Popolare Cinese; tale censura può tuttavia essere bypassata utilizzando la rete TOR tramite tunnel WireGuard.
Al momento è impossibile per chiunque oscurare uno sito web ospitato nella rete Zeronet, nemmeno tramite richieste di censura operate da governi o privati, in quanto questi siti sono ospitati da ogni computer della rete che li visita (pertanto è necessario "spegnere" tutte queste macchine per riuscire nell'intento). Tuttavia siti non più condivisi da nessuno possono risultare non più raggiungibili.
Uno zito di norma non può essere più grande di 10 MB, tuttavia questo limite può essere incrementato a piacimento (compare un alert quando questa azione è necessaria).
È possibile inoltre in ogni momento clonare un sito già esistente e gestirlo per conto proprio sulla propria macchina, diffondendo quindi a terzi la propria "versione" moderata in modo differente.
Esistono anche alcuni sistemi per rendere gli ziti visibili sul web in sola lettura, senza la necessità di scaricare il software (proxy).
Lo sviluppo del software è al momento fermo dall'inizio del 2020 ed attualmente utilizzando il client "ufficiale" non è possibile connettersi alla rete TOR tramite la nuova versione 3 degli hidden service, tuttavia la comunità di utenti dietro al progetto ha sviluppato una patch per risolvere questo problema che è stata integrata in alcuni fork del progetto attualmente mantenuti (vedi link a fondo pagina). La versione di default per Android, mantenuta da uno sviluppatore terzo, integra anch'essa questa patch.

## Servizi forniti di default

Dopo aver avviato il programma questo scaricherà in automatico dalla rete Zeronet lo zito ZeroHello che, oltre a fare da home page per la gestione dell'applicazione, fornirà già alcuni altri ziti e servizi a cui connettersi (molti di questi sono poi clonabili per creare propri servizi di forum, blog, ecc...):
* Zeronet Py3 updater: gestisce gli aggiornamenti del software, disponibile dal menù opzioni
* ZeroTalk: Forum decentralizzato stile Reddit. Clonabile e multilingua. Attualmente oltre ai forum in diverse lingue sono presenti anche alcuni forum tematici.
* ZeroBlog: Blog decentralizzato (clonabile per realizzare il proprio blog personale, molti blog di questo tipo sono rinvenibili nella rete)
* ZeroID: servizio di gestione delle identità e per il login e la registrazione su siti multiutente
* ZeroMail: servizio simil-mail che consente di scambiare messaggi con altri utenti Zeronet
* ZeroName: servizio per la gestione dei nomi di dominio
* ZeroSites: directory di siti ospitati su Zeronet
* ZeroMe: social network interno a Zeronet, ogni utente condivide solo i profili che visita
* ZeroWiki: wiki interna a Zeronet, clonabile per creare la propria wiki
* ZeroUP: servizio di file hosting, gli utenti condividono solo i file che scaricano
* Gif Time: galleria di immagini .gif

## Altri servizi creati dall'utenza

Diversi utenti nel tempo si sono prodigati nel creare nuove tipologie di ziti, anch'esse clonabili ed open source; qui sotto quelle più rilevanti:
* ZeroTalk++: versione migliorata di zerotalk, con moderazione più agevole e possibilità di caricare immagini e files
* ZeroBlog++: versione migliorata di zeroblog
* ZeroTorrent: versione modificata di zerotalk studiata per la condivisione di file torrent, dispone anche di un motore di ricerca interno
* Millchan: imageboard decentralizzata stile 4chan in cui gli utenti condividono solo i contenuti che visitano e le anteprime di tutto il resto (quest'ultima funzione è disabilitabile). Questo zito è stato clonato anche per creare un clone di 8chan
* IFS -Intergalactic File Server: zito che consente di caricare e condividere file di ogni sorta e che permette lo streaming dei file audio e video. Come per ZeroUP ogni utente condivide solo i file che scarica
* GalactiChan. Fork di MillChan pensato appositamente per il file sharing e per risolvere di default alcuni problemi legali che affliggono il suo predecessore impedendo di scaricare le anteprime dei file che non si condividono
* Sono disponibili inoltre numerose blacklist create dall'utenza e studiate per bloccare automaticamente contenuti dannosi, illegali, di spam, pornografici o secondo altri criteri specifici. Questi ziti consentono il blocco automatico sia degli ziti sia dell'utenza che rientra nei criteri scelti.

## Sviluppo dei siti

I siti su Zeronet possono essere scritti in HTML, CSS, JavaScript e CoffeeScript. Non è possibile invece utilizzare linguaggi lato server come il PHP. I siti possono inoltre interfacciarsi a database MySQL (distribuiti via P2P) per gestire il login e la registrazione degli utenti. Utilizzando appositi plugins ed API (ZeroFrame) i siti possono inoltre comunicare con la rete Zeronet richiamando codice Python via JavaScript.