Ho creato un TON Sites (giuseppe.ton)
Oggi, voglio scrivere un articolo diverso, ti spiego passo passo come ho creato un sito web nella blockchain di TON (The Open Network) e come funziona un po' il tutto.
Prima di proseguire è giusto capire di cosa stiamo parlando.
Cos'è TON
The Open Network, comunemente conosciuta come TON, è un ecosistema decentralizzato che ha la blockchain TON come componente principale. Creato, all'inizio, dal team di Telegram TON mira ad affrontare i limiti delle blockchain esistenti (Ethereum in primis) come la scalabilità, la velocità e l'usabilità.
TON utilizza un meccanismo di consenso chiamato Proof of Stake, in cui i validatori vengono selezionati in base al numero di token TON in loro possesso e in base a quelli in staking come collaterale. I validatori sono responsabili della verifica delle transazioni e della loro aggiunta alla blockchain. In cambio, ovviamente, guadagnano ricompense sotto forma di token TON.
La rete TON è interessante di per sé, anche a prescindere dalla blockchain TON, è una rete informatica completamente decentralizzata, sicura e privata, simile a TOR o a I2P.
TON Sites
Agli albori dell'attuale versione di Internet, tutti i dati tra utenti e siti web (ad esempio, le conversazioni in chat) erano sempre esposti e potevano essere letti da qualcun altro su Internet. Inoltre, non c'era modo di confermare se i dati fossero stati alterati durante il transito.
Col tempo è comparso l'HTTPS, un protocollo, che cripta e autentica i dati.
Da oltre 15 anni, l'HTTPS sta proliferando su Internet; tuttavia, circa il 20% dei siti web non utilizza questo protocollo per impostazione predefinita.
Ciononostante, esiste sempre la possibilità che i dati degli utenti vengano inviati attraverso canali non criptati.
Alla luce di ciò, la rete TON dispone di una propria crittografia obbligatoria e verifica automaticamente l'autenticità di tutto il traffico di dati. Senza avere un autorità di certificazione dietro.
TON Sites fornisce la crittografia e la verifica dell'autenticità dei dati tramite la crittografia integrata.
Come hai fatto a creare il TON Sites?
Fatte tutte le premesse del caso, creare un ton sites è molto semplice, per prima cosa dobbiamo compilare i pacchetti necessari per avviare il tutto:
git clone --recurse-submodules https://github.com/ton-blockchain/ton.git
Successivamente installiamo tutti gli applicativi necessari per compilare i programmi, quindi da terminale:
sudo apt install build-essential cmake clang openssl libssl-dev zlib1g-dev gperf libreadline-dev ccache libmicrohttpd-dev pkg-config libsodium-dev libsecp256k1-dev liblz4-dev
Rechiamoci nella cartella appena scaricata "ton"
cd ton/
Successivamente impostiamo dei compilatori di C e C++ predefiniti per la shell:
export CC=clang
export CXX=clang++
Rimuoviamo i file di configurazione CMake perché potrebbero creare problemi:
rm -rf CMakeFiles CMakeCache.txt
Creiamo una cartella chiamata builds:
mkdir ton-builds
cd ton-builds
Adesso lanciamo cmake:
cmake ..
Adesso andiamo a creare la build di rldp-http-proxy
cmake --build . --target rldp-http-proxy
Finito il "building" effettuiamo la stessa procedura per generate-random-id
cmake --build . --target storage-daemon storage-daemon-cli
Adesso, scarichiamo le configurazioni per far si che funzioni tutto correttamente:
wget https://ton-blockchain.github.io/global.config.json
Creiamo la cartella keyring dove andremo ad inserire la chiave privata del nostro sito:
mkdir keyring
Andiamo adesso a generare un indirizzo ADNL persistente con il comando:
./generate-random-id -m adnlid
Riceveremo a video una risposta simile a questa:
45061C1D4EC787XCZ318589E13C73D151D1CEF5D3C0E53AFBCF56A6C2FE2BD abqxh34j3ceve35ammfrhqty46rkhi4yxotydstv66pk2tmf7r12za3
Questo è il nostro indirizzo ADNL persistente diviso in due parti, la prima in HEX (esadecimale) che andremo a collegare successivamente sul nostro DNS, la seconda "user-friendly" quella che è possibile navigarci per intenderci.
In ogni caso la chiave privata viene salvata nel primo file (quello con nome 45061...) andiamo a spostarlo all'interno della cartella prima creata keyring:
mv 45061C1* keyring/
Successivamente copiamo la versione "user-friendly" ci servirà per capire se il nostro sito è accessibile o meno.
NGINX
Come proxy server utilizzeremo NGINX, quindi andiamo ad installarlo:
sudo apt-get install nginx -y
Rimuoviamo il file di default:
sudo rm -r /etc/nginx/sites-available/default
E creiamo un file tipo "giuseppe.ton"
sudo nano /etc/nginx/sites-available/giuseppe.ton
Questo è un esempio, della mia configurazione:
server {
listen 80;
server_name dominio.ton indirizzo.adnl
root /var/www/html/; # Percorso dei file della pagina Web
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Attiviamo il sito nginx , creando un link simbolico:
sudo ln -s /etc/nginx/sites-available/giuseppe.ton /etc/nginx/sites-enabled/giuseppe.ton
Verifichiamo la validità della configurazione e riavviamo nginx:
sudo nginx -t
sudo systemctl restart nginx
Adesso non ci resta che avviare rldp-http-proxy, per farlo digitiamo nel terminale:
./rldp-http-proxy -a NostroIP:3333 -R '*'@127.0.0.1:80 -C global.config.json -A indirizzoADNLsenzaPunto -d -l tonsite.log
Se da terminale non appare nessun errore il nostro sito è Online.
Per effettuare una verifica veloce possiamo copiare il nostro indirizzo adnl su una chat telegram così:
http://indirizzo.adnl/
Adesso, andremo a creare un servizio su systemd in modo che il nostro sito sia sempre online e ad ogni riavvio del server si riavvierà automaticamente il sito.
Andiamo a creare il service:
sudo nano /etc/systemd/system/rldp-http-proxy.service
Copiamo il seguente codice:
[Unit]
Description=RLDP HTTP Proxy Service
After=network.target
[Service]
Type=simple
WorkingDirectory=directory/del/eseguibile/
ExecStart=percorso/del/eseguibile/rldp-http-proxy \
-a indirizzoip:3333 \
-R '*'@127.0.0.1:80 \
-C global.config.json \
-A indirizzoADNLsenzaPunto \
-d \
-l tonsite.log
Restart=always
RestartSec=5
User=user # Inserire l'utente
[Install]
WantedBy=multi-user.target
Salviamo CTRL+X e successivamente "Y" ed abilitiamo il servizio per l'avvio automatico:
sudo systemctl enable rldp-http-proxy.service
Adesso possiamo avviare il servizio lanciando il comando:
sudo systemctl enable rldp-http-proxy.service
Per verificare lo stato del servizio diamo:
sudo systemctl status rldp-http-proxy.service
Ed ecco fatto, il nostro sito .TON è completamente Online.