En este breve post final, discutiremos brevemente dos asuntos para probar una red P2P de blancoin:
- La implementación de una red de prueba de blancoin en Internet
- Faucets de Blancoin
implementando una testnet
En un post anterior, implementamos una red peer-to-peer de Blancoin en la red localhost. En esta implementación, los nodos de red escuchan las direcciones de loopback (127.0.0.x). La parte relevante del código en el archivo networknode.py que permite esto es:
######################################################
# start the network interface for the server node on
# the localhost loop: 127.0.0.19:8081
#####################################################
if __name__ == "__main__":
app.listen(address="127.0.0.19", port="8081")
logging.debug('server node is running')
print("network node starting at 127.0.0.19:8081")
Podemos cambiar fácilmente esta implementación para que los nodos escuchen en una direccion de Internet enrutable. Cada nodo de red edita su archivo networknode.py reemplazando el parametro address de la función app.listen con una dirección IP enrutable única que posee. Este simple cambio nos permite configurar una red de prueba de blancoin en Internet que escucha en algún puerto común designado.
implementando un faucet
Una vez que tengamos una red de prueba de blancoin en Internet, debemos proporcionar a los nodos de la red de Blancoin unidades monetarias para que puedan crear y propagar transacciones de prueba en la red. Esto se puede lograr creando un faucet de blancoin. Un faucet es un nodo de red que:
- Crea un par de claves públicas y privadas
- Crea y propaga una transacción que transfiere una cantidad fija de monedas de blancoin al propietario del par de claves que se ha creado
Un faucet funciona de la siguiente manera. Un solicitante le pide al faucet que le dé unidades de blancoin gratis a través de una llamada de procedimiento remoto JSON al servidor faucet JSON-RPC. El faucet genera una tupla de claves asimetricas y la envía de vuelta al solicitante. El faucet luego crea una transacción de tipo coinbase en la que un número fijo de monedas de blancoin se
transfiere al solicitante, utilizando el par de claves que se ha proporcionado al solicitante.
Finalmente, el faucet propaga esta transacción en la red Blancoin. Eventualmente, esta transacción se agregará a un bloque y el bloque se extraerá. Al ser minado, el solicitante tiene monedas de blancoin para gastar que fueron creadas por el faucet. También podemos implementar un faucet como servicio web. Un visitante que llega al faucet y el sitio web se proporciona con una tupla de claves asimetricas. Luego, el sitio web invoca el servidor de faucet RPC, que crea y propaga una transacción de blancoin que usa la clave
par que se ha proporcionado al visitante del sitio web.
final
Si está leyendo esto, felicitaciones. Ha llegado al punto terminal de esta serie de posts. Hemos completado un largo viaje desde los cimientos criptográficos de las blockchains y las criptomonedas para la construcción de transacciones, blockchains, nodos de minería y redes de criptomonedas. En el camino, hemos aprendido los algoritmos clave que operan en este espacio. Ahora debería tener la posibilidad de programar aplicaciones de blockchain y criptomonedas en el lenguaje de tu elección como C, Ruby o Javascript.