Ho creato un TON Sites (giuseppe.ton)

Crypto 8 dic 2024

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.


Tag