Configurazione del nodo P2Pool#

Questa guida descrive come configurare un nodo Dash P2Pool per gestire un pool di miner. A differenza delle mining pool centralizzate, P2Pool si basa sullo stesso modello peer-2-peer (P2P) di Dash, rendendo il pool nel suo insieme altamente resistente agli attacchi dannosi e preservando e proteggendo la natura decentralizzata di Dash. Quando avvii un nodo P2Pool, cerca, si connette e condivide i dati con una rete decentralizzata di altri nodi P2Pool (noti anche come peer). I nodi P2Pool condividono una catena crittografica di dati che rappresentano valore, simile alla blockchain di Dash. La versione P2Pool si chiama sharechain. La natura decentralizzata ed equa di questo modello di mining fa sì che il mining con P2Pool sia fortemente incoraggiato. P2Pool per Dash utilizza il software p2pool-dash su GitHub, che è un fork di p2pool per Bitcoin. Per maggiori informazioni vedi qui.

A causa del modo in cui P2Pool gestisce gli aggiustamenti della difficoltà sulla catena azionaria, è importante mantenere una bassa latenza tra i miner e il nodo P2Pool per evitare che i miner inviino le azioni troppo tardi per entrare nella catena azionaria. Quando configuri il tuo nodo, devi considerare la sua posizione fisica e di rete rispetto ai minatori che intendi connettere al nodo. Se gestisci una mining farm, il tuo nodo P2Pool dovrebbe probabilmente essere una macchina fisica sulla stessa rete locale dei tuoi miner. Se prevedi di gestire un nodo pubblico, potrebbe essere meglio configurare il tuo nodo P2Pool come una macchina virtuale in un data center con una connessione ad alta velocità in modo che i miner geograficamente vicini possano estrarre nel tuo pool con una latenza relativamente bassa.

La sezione seguente descrive i passaggi per configurare un server Ubuntu che esegue P2Pool per Dash. È stato testato con Ubuntu 20.04 LTS e Dash 0.16. Anche se verrà fatto uno sforzo ragionevole per mantenerlo aggiornato, dovrebbe essere possibile modificare leggermente le istruzioni per supportare versioni o sistemi operativi diversi, se necessario.

Configurazione del server host#

Scarica una copia di Ubuntu Server LTS da https://ubuntu.com/download/server e installala sul tuo sistema seguendo i passaggi descritti qui <https://ubuntu.com/tutorials/install-ubuntu-server> __. Se utilizzi un VPS come Vultr o AWS, molto probabilmente il tuo provider fornirà un’opzione per installare questo sistema durante il provisioning. Assicurati di abilitare il server OpenSSH durante la configurazione in modo da poter controllare il server da una console remota. Una volta ottenuto l’accesso al tuo server, crea un nuovo utente non root se non lo hai già fatto utilizzando il comando seguente, sostituendo <username> con un nome utente a tua scelta:

adduser <username>

Ti verrà richiesta una password. Inserisci e conferma utilizzando una nuova password (diversa dalla password di root) e conservala in un luogo sicuro. Verranno inoltre visualizzate le richieste per le informazioni sull’utente, ma è possibile lasciarlo vuoto. Una volta creato l’utente, lo aggiungeremo al gruppo sudo in modo che possa eseguire comandi come root:

usermod -aG sudo <username>

Riavvia il server e accedi come nuovo utente. A questo punto è consigliato connettersi da remoto utilizzando PuTTY (per Windows) o ssh (per Linux e macOS) se non lo hai già fatto.

Configurazione delle port forwarding#

Se ti trovi su una rete privata dietro un router, dovrai impostare il port forwarding almeno per la porta 8999 (UDP/TCP) per l’accesso alla sharechain, così come per la porta 7903 (UDP/TCP) se vuoi che il tuo nodo essere accessibili al pubblico. Il modo in cui ciò viene eseguito dipende dal router di rete specifico e pertanto va oltre lo scopo di questa documentazione. Di seguito è mostrato un esempio tratto dalla popolare distribuzione di router open source DD-WRT. Le guide per la configurazione del port forwarding possono essere trovate qui e qui.

Prendi nota del tuo indirizzo IP dall’interfaccia di gestione del router o visitando https://www.whatismyip.com

../../../_images/p2pool-ddwrt.png

Configurazione delle port forwarding in DD-WRT#

Configurazione manuale#

Per prima cosa aggiorna il tuo sistema operativo come segue:

sudo apt update
sudo apt upgrade

Configurazione di dashd#

P2Pool richiede l’esecuzione di un nodo Dash completo per ottenere i dati sui blocchi e sulle transazioni. Per scaricare e installare Dash, visita https://www.dash.org/downloads/ sul tuo computer per trovare il collegamento all’ultimo wallet Dash Core. Fai clic su Linux, quindi fai clic con il pulsante destro del mouse su Scarica TGZ per Dash Core x64 e seleziona Copia indirizzo collegamento. Torna alla finestra del terminale e inserisci il comando seguente, incollando l’indirizzo dell’ultima versione di Dash Core facendo clic con il pulsante destro del mouse o premendo Ctrl + V:

cd ~
wget https://github.com/dashpay/dash/releases/download/v23.1.0/dashcore-23.1.0-x86_64-linux-gnu.tar.gz

Verify the authenticity of your download by checking its detached signature against the public key published by the Dash Core development team. All releases of Dash since 0.16.0 are signed using GPG with the following key:

curl https://keybase.io/pasta/pgp_keys.asc | gpg --import
wget https://github.com/dashpay/dash/releases/download/v23.1.0/dashcore-23.1.0-x86_64-linux-gnu.tar.gz.asc
gpg --verify dashcore-23.1.0-x86_64-linux-gnu.tar.gz.asc

Crea una directory di lavoro per Dash, estrai l’archivio compresso, copia i file necessari nella directory e impostali come eseguibili:

mkdir ~/.dashcore
tar xfvz dashcore-23.1.0-x86_64-linux-gnu.tar.gz
cp dashcore-23.1.0/bin/dashd .dashcore/
cp dashcore-23.1.0/bin/dash-cli .dashcore/

Pulisci i file non necessari:

rm dashcore-23.1.0-x86_64-linux-gnu.tar.gz
rm -r dashcore-23.1.0/

Crea un file di configurazione utilizzando il seguente comando:

nano ~/.dashcore/dash.conf

Apparirà una finestra dell’editor. Ora dobbiamo creare un file di configurazione specificando diverse variabili. Copia e incolla il seguente testo per iniziare, quindi sostituisci le variabili specifiche della tua configurazione come segue:

#----
rpcuser=XXXXXXXXXXXXX
rpcpassword=XXXXXXXXXXXXXXXXXXXXXXXXXXXX
rpcallowip=127.0.0.1
#----
listen=1
server=1
daemon=1
maxconnections=64
#----

Sostituisci i campi contrassegnati con XXXXXXX come segue:

  • rpcuser: inserisci qualsiasi stringa di numeri o lettere, non sono ammessi caratteri speciali

  • rpcpassword: inserisci qualsiasi stringa di numeri o lettere, non sono ammessi caratteri speciali

Il risultato dovrebbe assomigliare a questo:

../../../_images/p2pool-dash-conf.png

Immissione dei dati chiave in dash.conf sul nodo P2Pool#

Premi Ctrl + X per chiudere l’editor e Y e Invio salvano il file. Ora puoi iniziare a eseguire Dash sul masternode per iniziare la sincronizzazione con la blockchain:

~/.dashcore/dashd

Verrà visualizzato il messaggio Server Dash Core in avvio. È possibile continuare con i passaggi seguenti e verificare periodicamente la sincronizzazione utilizzando il comando seguente. La sincronizzazione è completa quando il numero di blocchi è uguale al numero attuale di blocchi nella blockchain di Dash, come si può vedere da qualsiasi wallet Dash sincronizzato o block explorer:

~/.dashcore/dash-cli getblockcount

Configurazione di P2Pool#

Ora configureremo il software P2Pool e le sue dipendenze. Inizia con le dipendenze:

sudo apt install python2 python2-dev gcc g++ git
curl https://bootstrap.pypa.io/get-pip.py --output get-pip.py
sudo python2 get-pip.py
pip install twisted

Crea directory di lavoro e configura p2pool-dash:

git clone https://github.com/dashpay/p2pool-dash
cd p2pool-dash
git submodule update --init
cd dash_hash
python2 setup.py install --user

Aggiungeremo alcune interfacce extra opzionali al pannello di controllo:

cd ..
mv web-static web-static.old
git clone https://github.com/justino/p2pool-ui-punchy web-static
mv web-static.old web-static/legacy
cd web-static
git clone https://github.com/hardcpp/P2PoolExtendedFrontEnd ext
cd ..

Ora puoi avviare p2pool e facoltativamente specificare l’indirizzo di pagamento, l’IP esterno (se necessario), la tariffa e la donazione come segue:

python2 ~/p2pool-dash/run_p2pool.py --external-ip <public_ip> -w <port> -f <fee> -a <payout_address> --give-author <donation>

Potrai quindi monitorare il tuo nodo navigando ai seguenti indirizzi, sostituendo <ip_address> con l’indirizzo IP del tuo nodo P2Pool:

../../../_images/p2pool-antminer.png
../../../_images/p2pool-running.png

Configurazione di esempio che mostra un singolo Bitmain Antminer D3 connesso a un nodo p2pool-dash sulla rete locale#