En el último artículo te dije cómo instalar bitcoind (al menos en Ubuntu Linux) y cómo conectarte a testnet. Pero testnet es una buena solución cuando se realizan pruebas en un sitio web ya preparado que ya se ha implementado en un servidor de Internet. Pero para el desarrollo local esta está lejos de ser la solución más conveniente.
Puedes leer las primeras partes aquí y aquí.
Y aquí necesitaremos el tercer modo operativo de bitcoind:regtest (modo de prueba de regresión). Por Básicamente, es tu propio bitcoin pequeño de bolsillo. Con pocas excepciones, el comportamiento del software será Corresponde completamente al de combate. Pero, en primer lugar, no es necesario descargar la cadena de bloques (ni siquiera la de prueba, mucho más compacto). Además, en general, ni siquiera necesitas una conexión a Internet; todas las operaciones sucederá enteramente a nivel local.
Necesitaremos tener instalado bitcoind, lo cual es lógico, y un poco paciencia. Necesitas ejecutar al menos 2 copias de bitcoind para que interactúen entre sí, simulando funcionamiento de la red. Y finalmente, necesitaremos hacer minería. Pero no te alarmes, en el caso del Test de Regresión la dificultad se pone automáticamente a cero y no necesitaremos megavatios de energía ni una granja de ASIC de última generación.
Para empezar, creemos 2 directorios en los que se almacenarán los datos, los archivos de configuración y los registros de depuración. en total En los ejemplos usaré /home/developer como ruta raíz. Entonces, ejecute los siguientes comandos:
mkdir -p /home/developer/bitcoin-service
mkdir -p /home/developer/bitcoin-client
Nombres bitcoin-service y
bitcoin-client se toman solo por conveniencia. Incluso puedes llamarlos MYCOOLBITCOINNET; lo principal es obligatorio
Úselos en todas las acciones posteriores.
Por ahora asumiremos que el cliente bitcoin es un cierto "cliente" que nos pagará algo durante las pruebas y el servicio bitcoin es, en consecuencia, nuestra "tienda", entonces Sí, aceptará el pago.
Ahora necesitamos crear archivos en cada uno de los directorios creados. bitcoin.conf con el siguiente contenido:
# Al igual que con s testnet, necesitamos habilitar la interacción con el demonio. # La siguiente opción permite que bitcoind escuche en el puerto JSON-RPC servidor=1 rpcuser=nombre de usuario rpccontraseña=contraseña de usuario # especifica el puerto RPC.. ¡Debería ser diferente para cada servicio! # Por defecto este es el puerto 8332, pero recomiendo usar otros valores rpcport=18332 # Especificar el modo de funcionamiento - Modo de prueba de regresión prueba de registro=1 # Describiré los siguientes parámetros más adelante, solo es importante que también sean diferentes puerto=18333 addnode=localhost:28333 # Y en estos lugares debemos especificar bitcoin-service y bitcoin-client, respectivamente. datadir=/home/desarrollador/servicio-bitcoin pid=/home/developer/bitcoin-service/.pid
Ahora unas palabras sobre los puertos. El parámetro rpcport especifica qué El puerto estará escuchando conexiones RPC. Además de lo que dicta la lógica - diferentes demonios deberían tener Sean puertos diferentes, ejecutar dos en el mismo puerto simplemente no funcionará técnicamente. Esto lo hace más fácil por conveniencia. En total, indica por ejemplo 18332 para el primero y 28332 para el segundo.
Ahora unas palabras sobre el puerto y agregarnodo. El primero, puerto, especifica en qué puerto escuchará el demonio mientras espera conexiones de red. otros demonios: recordamos, bitcoin es una red p2p. También debería ser diferente para los diferentes demonios que corren. un el parámetro addnode, a su vez, indica qué conexiones se establecerán inmediatamente después de que se inicie el demonio. en combate En redes y redes de prueba, esto se implementa mediante un mecanismo especial de búsqueda de nodos. Y ya que lanzamos los demonios al completo. modo local, este mecanismo no nos ayudará de ninguna manera.
Por lo tanto tendremos que especificar conexiones en el archivo configuraciones. Por lo tanto, si para bitcoin-service especificamos el puerto 18333 y para bitcoin-client 28333, entonces el parámetro addnode se verá así para el servicio bitcoin localhost:28333 y localhost:18333 para cliente-bitcoin.
Algo como esto:
#/home/developer/bitcoin-service/bitcoin.conf: puerto=18333 addnode=localhost:28333 #/home/developer/bitcoin-client/bitcoin.conf: puerto=28333 addnode=localhost:18333
Y, por supuesto, los parámetros datadir y pid deben apuntar a los directorios correspondientes:
#/home/developer/bitcoin-service/bitcoin.conf: datadir=/home/desarrollador/servicio-bitcoin pid=/home/developer/bitcoin-service/.pid
#/home/developer/bitcoin-client/bitcoin.conf: datadir=/home/desarrollador/bitcoin-cliente pid=/home/developer/bitcoin-client/.pid
El primero de ellos, datadir, dice dónde se encuentra una copia de nuestro Pruebe blockchain, depure registros y otra información útil y no tan útil relacionada con las actividades de la vida. bitocoind, y el segundo, digamos, ayuda al demonio a no perderse entre muchos otros procesos del sistema.
Ahora Finalmente podemos lanzar nuestra testnet y disfrutar de nuestro bitcoin personal... Para hacer esto necesitamos ejecutar comandos, es importante ejecutarlos en diferentes ventanas de terminal:
bitcoind -conf=/home/developer/bitcoin-service/bitcoin.conf --printtoconsole bitcoind -conf=/home/developer/bitcoin-client/bitcoin.conf --printtoconsole
El parámetro -conf=... especifica qué archivo de configuración que queremos usar, y --printtoconsole dice que usaremos toda la información de depuración Mire en la pantalla, sin tener que monitorear los registros. Normalmente esto no es necesario, pero al empezar por primera vez Es mejor asegurarse de que todo se haga correctamente. Si entre las letras y números incomprensibles no hay una palabra aterradora Error : esto significa que podemos suponer que todo salió bien y que nuestra red bitcoin local está funcionando y podemos continuar con próximos pasos.
Si se trata de una red de combate y una red de prueba, llamar al demonio es bastante simple: bitcoin-cli [comando], luego, bajo el capó, sucede algo como esto: bitcoin-cli verifica la ruta predeterminada, de acuerdo con que normalmente contiene el archivo de configuración. Para Linux esto será $HOME/.bitcoin/bitcoin.conf, y se obtiene de él Los parámetros de conexión son los mismos rpcport, rpcuser y rpcpassword. Y ya usándolos, se conecta a bitcoind para ejecución del comando. Sin embargo, ahora no sólo tenemos archivos de configuración ubicados en lugares distintos a estándar, y también se ejecutan 2 copias de bitcoind simultáneamente. La pregunta lógica que surge es ¿cómo podemos ¿Conectarnos al que nos interesa y ejecutar el comando en él?
Hay varias opciones. Primero, puede especificar los parámetros de conexión en la línea de comando:
bitcoin-cli -rpcuser=nombre de usuario -rpcpassword=contraseña de usuario -rpcport=18332 getwalletinfo
Esto, por supuesto, es adecuado para una verificación única, pero No es muy conveniente utilizar un diseño de este tipo todo el tiempo. Bueno, para entender con quién nos conectamos, solo por la dirección. puerto - demasiado arriesgado.
Segunda opción, más legible:
bitcoin-cli -conf=/home/developer/bitcoin-service/bitcoin.conf getwalletinfo
Aquí indicamos la ubicación Archivo de configuración del cual se tomarán los parámetros de conexión. También voluminoso, pero un poco más cómodo.
Bueno, la tercera opción es escribir un par de scripts bash que sustituirán todos los parámetros que necesitamos, y luego con su ayuda contacta a los demonios. Cree un archivo, por ejemplo bitcoin-service.sh:
#!/usr/bin/env bash echo "nodo de SERVICIO Bitcoin:" bitcoin-cli -conf=/home/developer/bitcoin-service/bitcoin.conf $@
Y permitir su ejecución:
chmod +x servicio bitcoin..sh
Se debe crear el mismo archivo para el segundo. demonio, llamándolo lógicamente bitcoin-client.sh. Ahora podemos ejecutar cualquier comando simplemente escribiendo:
./bitcoin-service.sh getwalletinfo
Es una pena, pero el saldo de nuestra billetera es 0.0 BTC, esto se puede ver en la línea "saldo": 0,00000000. Es hora de arreglarlo:
./bitcoin-service.sh genera 1000
Este comando nos hará fabulosamente ricos. Obliga a bitcoind a generar 1000 nuevos bloques, con los correspondientes recompensa por la minería. Como resultado, por ejemplo, pude extraer rápidamente 14716.40625000.
Ahora podemos detener nuestros demonios bitcoin de prueba y ejecutarlos en un modo más conveniente:
bitcoin -conf=/home/developer/bitcoin-service/bitcoin.conf --daemon
bitcoind -conf=/home/developer/bitcoin-client/bitcoin.conf --daemon
Los demonios se ejecutarán en segundo plano, no mostrando toneladas de información inútil en la pantalla.
Ahora podemos transferir monedas de un demonio a otro. Consigamos la dirección bitcoin:
./bitcoin-client.sh obtener nueva dirección Nodo CLIENTE Bitcoin: 2Mw8q4gVeyb7kTGmGNmyVqRp4yaNCF6Niw6 #Y ahora enviemos algunas monedas de prueba: ./bitcoin-service.sh dirección de envío 2Mw8q4gVeyb7kTGmGNmyVqRp4yaNCF6Niw6 500 Nodo de SERVICIO Bitcoin: eec8a8efdd40d21564de027b8c9fa97b2abfb35befa5cd543f8be1f16016ef8f
Recibimos el número de transacción, eso lo significa todo. salió bien. Veamos lo que tenemos:
./bitcoin-client.sh getwalletinfo
Y aquí nos espera una sorpresa no muy agradable, el saldo sigue siendo igual a 0. Y esto sucede porque nuestra nueva transacción no está incluido en el bloque y, por tanto, no está confirmado. Pero en la línea "saldo_no confirmado" vemos 500.00000000. Bueno, está bien, ya sabemos cómo minar.
# Un bloque será suficiente por ahora ./bitcoin-client.sh genera 1
En este punto la preparación se puede considerar completa y finalmente me gustaría obtener algún resultado más valioso en la práctica.
En los siguientes artículos analizaré cómo podemos utilizar el sistema de prueba resultante para el desarrollo y, finalmente, pasaremos a la implementación real de la pasarela de pago.
Leer también
Apple publica nuevas reglas sobre aplicaciones de criptomonedas
Según TechCrunch, varios desarrolladores de Apple unieron fuerzas recientemente para crear la "Unión de Desarrolladores". El sindicato pidió a Apple que brindara a los usuarios de Apple Store la oportunidad de descargar pruebas gratuitas de sus aplicaciones. Esta es una de las primeras veces que los desarrolladores independientes de iOS intentan contraatacar las políticas de la Apple Store.
Aceptamos pagos en bitcoin: sexta parte. Matices, otra vez matices.
En la última parte, señalamos que no sería mala idea informarse sobre el hecho del pago desde bitcoind, en lugar de revisar todas las direcciones emitidas.
