Tengo problemas para usar el modo de registro en Linux. Usando la versión 0.9.2.1 precompilada para Linux e iniciando el modo de prueba como se indica en bitcoin.org:
<bitcoin-ver>-linux/bin/64>> ./bitcoind -regtest -daemon
El servidor se inicia, pero obtener información devuelve "conexiones": 0. Intenté experimentar con varias configuraciones de rpc* en el archivo .conf. ¿Qué debo configurar exactamente para usar el modo de registro? ¿Necesito agregar nodos reales a través de addnode para regtest? No parece que deba necesitarlo. Pude obtener algunas conexiones agregando varios nodos reales una vez, pero después de unos minutos, las "conexiones" volvieron a 0. Avíseme si alguna información adicional ayudaría.
Necesita ejecutar más de un nodo en su máquina (puede hacerlo si le da a cada nodo un -port y -rpcport diferente). Y debe decirles cómo encontrarse (usando -connect=127.0.0.1:portnumber).
Hay ejemplos escritos en bash y python en el árbol de fuentes de Bitcoin Core: https://github.com/bitcoin/bitcoin/tree/master/test/funcional
Aunque creo que la respuesta de Fred Tingey está completa, tiene los siguientes atributos:
Por lo tanto, quería compartir el siguiente script bash conciso que hace lo que quiere el OP. Como otros han notado parcialmente, la clave para que esto funcione es:
-connect
para restringir a los nodos propios, recuerde usar -listen
para aceptar conexiones de los nodos propios.Dicho esto, aquí está mi start-regtest-network.sh
guión:
#!/bin/bash
bitcoind -server -listen -port=17591 -rpcuser=bitcoinrpc -rpcpassword=P$SECONDS -rpcport=16591 -datadir=$HOME/regtest/A/ -connect=localhost:17592 -regtest -pid=$HOME/regtest/A/.pid -daemon -debug
bitcoind -server -listen -port=17592 -rpcuser=bitcoinrpc -rpcpassword=P$SECONDS -rpcport=16592 -datadir=$HOME/regtest/B/ -connect=localhost:17593 -regtest -pid=$HOME/regtest/B/.pid -daemon -debug
bitcoind -server -listen -port=17593 -rpcuser=bitcoinrpc -rpcpassword=P$SECONDS -rpcport=16593 -datadir=$HOME/regtest/C/ -connect=localhost:17594 -regtest -pid=$HOME/regtest/C/.pid -daemon -debug
bitcoind -server -listen -port=17594 -rpcuser=bitcoinrpc -rpcpassword=P$SECONDS -rpcport=16594 -datadir=$HOME/regtest/D/ -connect=localhost:17595 -regtest -pid=$HOME/regtest/D/.pid -daemon -debug
bitcoind -server -listen -port=17595 -rpcuser=bitcoinrpc -rpcpassword=P$SECONDS -rpcport=16595 -datadir=$HOME/regtest/E/ -connect=localhost:17591 -regtest -pid=$HOME/regtest/E/.pid -daemon -debug
Además , aquí está mi stop-regtest-network.sh
:
#!/bin/bash
sudo killall --regex bitcoin.*
Me doy cuenta de que mi secuencia de comandos de detención es descuidada y eliminará todos los procesos de bitcoin. Si está tan inclinado, puede modificar esto para extraer los pid individuales de cada directorio de datos.
Por último , probablemente necesitará crear previamente algunos directores de datos para bitcoind si no edita el script en absoluto.
mkdir $HOME/regtest/A/
mkdir $HOME/regtest/B/
mkdir $HOME/regtest/C/
mkdir $HOME/regtest/D/
mkdir $HOME/regtest/E/
Debe tener nodos bitcoind registrados que se conecten por turnos en los puertos 17591, 17592, 17593, 17594 y 17595. Del mismo modo, debería poder conectarse a los puertos rpc 16591, 16592, 16593, 16594 y 16595. Si necesita conocer el RPC contraseña que puede verificar ps aux
o establecer una contraseña rpc explícita en el script.
HTH
../.pid
directorio de error o el archivo no existe. ¿Es obligatorio el pid?Para ejecutar varios nodos en modo de prueba en una sola máquina, deberá aislar cada nodo.
En este ejemplo tengo tres nodos, se llaman Alice, Bob y Cory. Dado que Bitcoin es una red Peer/Mesh, mi objetivo es conectar cada nodo para que los cambios realizados en Cory sean finalmente visibles para Bob (sin requerir necesariamente una conexión directa entre los dos).
Estas carpetas contendrán nuestros datos y configuraciones para cada nodo. Los nombres no son importantes, se pueden renombrar más tarde, por lo que puedes llamarlos "Alice", "Bob" y "Cory" por ahora. Recuerde dónde los crea, necesitará sus rutas para el Paso 3 a continuación.
En los archivos de configuración, Alice estará configurada para conectarse a Cory y Bob estará configurado para conectarse a Alice. Además de configurar las conexiones salientes, aquí también es donde especificamos las regtest=1
configuraciones server=1
.
regtest=1
server=1
# Alice connects to Cory
connect=localhost:18333
regtest=1
server=1
# Bob connects to Alice
connect=localhost:18444
regtest=1
server=1
# Cory connects to nobody
Tenga en cuenta que cada nodo debe tener un número de puerto diferente, ya que solo un nodo puede vincularse a un número de puerto en cualquier momento.
Por supuesto, puede elegir sus propios números de puerto, solo tenga cuidado de no usar un número de puerto que ya esté en uso por otra persona.
Las opciones de la línea de comandos le dirán a bitcoin qué número de puerto usar, dónde almacenar los datos y dónde encontrar su archivo de configuración:
"C:\Program Files\Bitcoin\bitcoin-qt.exe" -conf="C:\Alice\bitcoin.conf" -datadir="C:\Alice" -rpcport=18444
"C:\Program Files\Bitcoin\bitcoin-qt.exe" -conf="C:\Bob\bitcoin.conf" -datadir="C:\Bob" -rpcport=18555
"C:\Program Files\Bitcoin\bitcoin-qt.exe" -conf="C:\Cory\bitcoin.conf" -datadir="C:\Cory" -rpcport=18333
Esto lanzará tres instancias del Cliente Bitcoin y las carpetas de cada nodo comenzarán a inicializarse con datos de registro.
Puede usar la Help->Debug Window->Console
opción para ejecutar comandos de forma interactiva en cualquiera de los nodos. Por ejemplo, puede extraer 101 bloques con el siguiente comando de consola de bitcoin:
setgenerate true 101
Deberías (después de unos segundos) haber recibido monedas.
Estas actividades mineras dan como resultado transacciones de base de monedas , y solo la última de 50 BTC está disponible para gastar. Ahora puede enviar algo de BTC a uno de los otros nodos. Después de un poco más de minería, dicha transacción será confirmada .
También puede usar los comandos de la consola getpeerinfo
y getinfo
verificar que la red esté configurada correctamente. Uno de ellos (Cory con puerto=18333) debería tener 'sync=true' en su salida de peerinfo, y todos los nodos deberían tener la misma "altura de bloque" independientemente del nodo que se utilice para la minería.
Me gustaría hacer una adición a las respuestas anteriores.
En lugar de -connect=ip
la opción correcta para usar es -addnode=ip
. -connect
permite que un nodo se conecte solo a un nodo y mientras que '-addnode' intenta conectarse a la lista especificada de nodos (ip) entre otros nodos.
--addnode
también permitirá el descubrimiento y uso de nodos de compañeros? (mientras que --connect
se restringirá solo al nodo especificado). Si esto es cierto, podría valer la pena actualizar su respuesta, sería bueno que los lectores lo supieran.
jose m