Obtenga el nodo 1 para extraer otro bloque, envíelo al nodo 2 y verifique que el nodo 2 lo haya recibido

Estoy tratando de escribir una prueba con bitcoin/test/funcional/example_test.py para obtener el nodo 1 para extraer otro bloque, enviarlo al nodo 2 y verificar que el nodo 2 lo recibió. ¿Alguna idea sobre cómo hacer/empezar en esto? Estoy familiarizado con Python, pero esto es bastante nuevo para mí.

Gracias.

Respuestas (1)

El valor predeterminado setup_network()implementado por el marco de prueba conecta todos los nodos, como se explica en el comentario de example_test.py's setup_network(). Dado que desea que el nodo 2 se conecte a los nodos 1 y 0, simplemente puede eliminar el setup_network()implementado example_test.pypara usar el predeterminado setup_network(). Luego, dentro de run_test(), puede hacerlo .generate()con cualquiera de los nodos y el bloque debe sincronizarse con todos los demás nodos.

Para garantizar que todos los nodos estén sincronizados con el mismo bloque, puede usar self.sync_blocks()lo que garantizará que cada nodo tenga la misma sugerencia antes de regresar.

Su prueba de ejecución tendría algo como:

def run_test(self):
    self.nodes[0].generate(1)
    self.sync_blocks()
Esto es muy esclarecedor, gracias, solo para confirmar: 1. ¿Se puede hacer que el nodo 1 extraiga otro bloque con self.nodes[1].generate(1)? 2. Enviar el bloque extraído del nodo 1 al nodo 2 se puede hacer con self.sync_blocks()[después de eliminar setup_network example_test.py para usar setup_network() predeterminado] 3. ¿Cómo verifico que el nodo 2 lo haya recibido?
1. Sí. 2. Una vez que se extrae un bloque, se envía automáticamente a todos los nodos a los que está conectado el nodo de minería. sync_blocks()solo se asegura de que todos los nodos estén sincronizados antes de continuar con la prueba. 3. Puede usar getbestblockhash()en los nodos 1 y 2 y verificar que coincidan. Pero no es necesario hacer eso ya que sync_blocks()lo hará por ti.
Perdón por ser tan novato, You can use getbestblockhash() on nodes 1 and 2 and check that they match.¿cómo se vería eso en el código? gracias de nuevo.
El cheque sería algo comoassert_equal(self.nodes[1].getbestblockhash(), self.nodes[2].getbestblockhash())