Aprovechando el inminente lanzamiento de la Testnet4 que solucionará los problemas que arrastra la Testnet3, vamos a instalar un nodo de esta nueva red según el Pull Request 29775 : https://github.com/bitcoin/bitcoin/pull/29775
Y después, jugaremos nuestras cartas para minar con CPU&GPU a ver si tenemos suerte y nos llevamos algunos Bitcoin de test.
Una experiencia que te hace sentir los primeros días de Bitcoin Mainnet cuando todavía se minaba con CPU.
Y con esto ya podemos compilar. Volvemos a la carpeta de bitcoin:
cd ..
Y compilamos en 3 comandos:
./autogen.sh
./configure
make -j "$(($(nproc) + 1))"
con este último comando utilizamos todos los cores de tu ordenador. Si quieres solo usar uno (más tiempo) simplemente ejecuta make
Este último proceso tarda un poco (5-10 minutos en función de vuestro procesador). Paciencia.
Al terminar moveremos bitcoind y bitcoin-cli a una carpeta de testing:
cd
mkdir -p testnet4/bin
cp ~/bitcoin/src/bitcoind ~/testnet4/bin/
cp ~/bitcoin/src/bitcoin-cli ~/testnet4/bin/
Ejecutando Testnet 4
Preparación del bitcoin.conf
Antes de configurar nuestro archivo bitcoin.conf, haremos un test run para ver que todo esté correcto:
cd testnet4/bin
./bitcoind -testnet4
Cuando veamos algo así:
Cancelaremos el proceso con las teclas Ctrl+C
Ahora ya se habrá creado nuestra carpeta .bitcoin y ahí es donde vamos a configurar nuestro bitcoin.conf:
cd ~/.bitcoin
En esta carpeta creamos el archivo bitcoin.conf donde a parte de configurar que bitcoind siempre se ejecute en testnet4, también le pediremos que cree un índice de todas las transacciones y que levante un servidor. Esto nos servirá para poder minar monedas de test pero antes crearemos unas creedenciales para nuestro RPC con rpcauth.py. Para ello descargaremos rpcauth.py:
Acto seguido tenemos que pensar que usuario y contraseña querremos poner a nuestro RPC. Si por ejemplo el usuario es luna y la contraseña nakamoto2140 ejecutaremos el siguiente comando:
python3 rpcauth.py luna nakamoto2140
Esto nos dará como resultado una cadena de texto tal que así:
La copiamos porque la vamos a necesitar para nuestro bitcoin.conf. Ahora sí, creamos este archivo con:
nano bitcoin.conf
Y en el archivo pegamos lo siguiente
testnet4=1
txindex=1
server=1
[testnet4]
rpcport=5000
rpcallowip=127.0.0.1
rpcbind=0.0.0.0
rpcauth=EL CODIGO QUE TE HAYA SALIDO A TI
Le damos a las teclas Ctrl+X y acto seguido tecleamos Y para guardar y salir.
Con esto volvemos a nuestra carpeta de testing:
cd ~/testnet4/bin
Y ejecutamos bitcoind, esta vez (Y SOLO ESTA VEZ) con el flag -reindex
./bitcoind -reindex
Así volveremos a ver la pantalla de sincronización de bloques que veiamos antes pero habrá vuelto a empezar para indexar todas las transacciones desde el principio. Por eso, una vez hecho, no volveremos a reindexar otra vez. Esperamos un poco y en menos de 1-2 minutos ya se sincroniza (a fecha de escritura la altura de bloque es de tan solo 25.164 bloques con lo que no hace falta más, pero con el tiempo esto irá aumentando).
Y así se nos quedará la ventana como "congelada" en algún punto, pero simplemente es que habrá llegado al extremo más avanzado de la cadena y quedará esperando a que se minen y reciban nuevos bloques:
Felicidades ya has sincronizado un nuevo nodo de testnet4. Ahora vamos a hacerle algunas consultas y a crear nuestra primera wallet.
CONSEJO 💡
Para poder cerrar esta ventana de terminal y que bitcoind no se detenga, dale a Ctrl+C en cualquier momento y ejecuta:
./bitcoind -daemon
Para ver lo que está pasando como lo hacías antes, puedes ejecutar en cualquier carpeta de terminal el siguiente comando:
tail -f ~/.bitcoin/testnet4/debug.log
Para salir, vuelve a hacer Ctrl+C . Ahora, no verás lo que sucede, pero bitcoind se seguirá ejecutando en el fondo.
Cuando quieras detener el proceso de bitcoin, desde cualquier carpeta ejecuta:
~/testnet4/bin/bitcoin-cli -testnet4 stop
Dialogando con nuestra testnet4
Estando en nuestra carpeta testnet4/bin:
cd ~/testnet4/bin
Dialogaremos con nuestra testnet4 con el comando bitcoin-cli -testnet4. Con lo que si por ejemplo queremos ver el estado de nuestra cadena de bloques de testnet4 se lo pediremos con getblockchaininfo así:
Y con esto tendremos el ejecutable "bfgminer" en la misma carpeta y podremos empezar a minar
Ejecutar bfgminer
Ejecutaremos bfgminer con el siguiente comando:
~/bfgminer/bfgminer -S opencl:auto -S cpu:auto -o http://127.0.0.1:5000 -u luna -p nakamoto2140 --generate-to mmFuEcas1fYqsE7DSGcA82cvTvVXU1Zo1Y --coinbase-sig "Viva el directo2140"
Si has utilizado la misma ruta para compilar bfgminer y estás ejecutando bitcoin core en la misma máquina, no tendrás que cambiar nada hasta el -u
El parametro -u es de usuario y has de colocar el que pusiste en la configuración del rpcauth.py. Igual con -p que es de password y tendrás que colocar la que utilizaste.
El --generate-to es para la dirección donde quieras recibir las recompensar de minar un bloque. Nota, cuando he intentado pasarle una dirección native segwit, bfgminer no me la ha aceptado. Por eso he creado una billetera Legacy P2PKH de Testnet4 en Sparrow. Esta dirección la ha tomado sin problema.
El --coinbase-sig es el mensaje (entre comillas) que quieres que aparezca en la transacción coinbase para identificarte como minero.
Y asi, al ejecutar este comando verás como tu ordenador empieza a minar con CPU o GPU (lo que encuentre) y verás como en la ventana donde ves todo lo que está pasando con tu bitcoind, tu nodo empieza a enviarle plantillas de bloques a tu miner (tu ordenador en este caso)...
... que en su ventana te mostrará el Hashrate que es capaz de alcanzar
Felicidades. Tienes un nodo de Testnet4 y estás intentando minar bloques en solitario.