Cada año, ArcTouch reúne a sus empleados en un hackatón de tres días, donde los grupos se proponen crear un prototipo de una idea utilizando tecnologías nuevas y emergentes. Este año, tuvimos muchos proyectos de hackathon de blockchain, y creemos que esto habla tanto del creciente interés en blockchain por parte de nuestro personal como del potencial para que las empresas se beneficien de él.
Mi grupo optó por implementar un sistema de verificación de identidad basado en la cadena de bloques. La idea era almacenar la prueba de edad de alguien, a la que un cantinero o empleado de ventas podría hacer referencia en lugar de una identificación física, como una licencia de conducir. Dado que planeábamos aprovechar los contratos inteligentes, optamos por una cadena de bloques de Ethereum. Sin embargo, para el desarrollo de primera ronda, usar la cadena de bloques pública o incluso la red de prueba no siempre es ideal debido a los largos tiempos de confirmación de las transacciones. En su lugar, analizamos varias opciones para activar rápidamente una cadena de bloques privada.

Con mucho, el enfoque más sencillo es utilizar un servicio en la nube como Azure para alojar una red blockchain privada. Azure hace que la configuración sea particularmente fácil al proporcionar una plantilla de Ethereum Blockchain Consortium, que presenta una cantidad configurable de nodos de minería y transacciones. En tres pasos y aproximadamente 10 minutos, puede configurar una cadena de bloques privada completamente funcional en la nube (aquí hay una excelente publicación de Medium que detalla esta configuración).
Sin embargo, esta plantilla de Azure en particular proporciona una cadena de bloques de prueba de trabajo (PoW) que, según sus requisitos, puede no ser la mejor opción para una cadena de bloques privada. Por ejemplo, optamos por una cadena de bloques de prueba de autoridad (PoA) utilizando el motor de consenso Clique de Ethereum que se lanzó el año pasado. Esta configuración de consenso funciona bien en un entorno privado porque los nodos no necesitan competir entre sí por el privilegio de acuñar bloques, lo que elimina la sobrecarga de procesamiento y el uso de energía que conlleva la minería de bloques PoW y el algoritmo ethhash.
Para crear nuestra red PoA en Azure, configuramos una instancia de servidor usando la plantilla Ubuntu Server 16.04 LTS para que actúe como nuestro nodo de autoridad. Dado que las autoridades no requieren grandes recursos informáticos, pudimos utilizar un tamaño de máquina virtual más pequeño (un B1S) con las opciones predeterminadas.

Nombre:  Capturar 1.PNG
Visitas: 98
Tamaño: 147.6 KB

Una vez aprovisionada la máquina virtual, configuramos nuestro nodo de autoridad siguiendo los siguientes pasos:




Paso 1: Instala Ethereum y geth
sudo apt-get install software-properties-common
sudo add-apt-repositorio -y ppa:ethereum/ethereum
sudo apt-obtener actualización
sudo apt-get install ethereum
Paso 2: generar la cuenta de autoridad y la cuenta de transacción
Generará dos cuentas, la primera de las cuales será la cuenta de autoridad y la segunda será una cuenta prefinanciada que se puede usar para enviar transacciones a la red:
geth --datadir .ethereum/ cuenta nueva
> Dirección: {6203bb870bfb79438b827de3d6b0070d4d2a5f7b}
geth --datadir .ethereum/ cuenta nueva
> Dirección: {1808adc011f6e970943d3f28f4d285053d9140ac}
¡Asegúrese de realizar un seguimiento de la contraseña utilizada para crear cada cuenta!
Paso 3: Crear el bloque de génesis
Usando puppeth, una herramienta CLI lanzada con geth 1.6, cree y exporte la definición para su bloque de génesis:
marioneta
...
Especifique un nombre de red para administrar (sin espacios, por favor)
> camarilla
...

Que te gustaría hacer? (predeterminado = estadísticas)
1. Mostrar estadísticas de red
2. Configurar nueva génesis
3. Seguimiento del nuevo servidor remoto
4. Implementar componentes de red
> 2

¿Qué motor de consenso utilizar? (predeterminado = camarilla)
1. Ethash - prueba de trabajo
2. Clique - prueba de autoridad
> 2

¿Cuántos segundos deben tomar los bloques? (predeterminado = 15)
> 15

¿Qué cuentas se pueden sellar? (obligatorio al menos uno)
> 0x6203bb870bfb79438b827de3d6b0070d4d2a5f7b
> 0x

¿Qué cuentas deben prefinanciarse? (recomendable al menos uno)
> 0x1808adc011f6e970943d3f28f4d285053d9140ac
> 0x

Especifique su ID de cadena/red si desea uno explícito (predeterminado = aleatorio)
> 42
INFO [02-15|18:24:03] Nuevo bloque de génesis configurado
Que te gustaría hacer? (predeterminado = estadísticas)
1. Mostrar estadísticas de red
2. Administrar la génesis existente
3. Seguimiento del nuevo servidor remoto
4. Implementar componentes de red
> 2

1. Modificar las reglas de bifurcación existentes
2. Exportar configuración de génesis
3. Eliminar la configuración de génesis
> 2

¿En qué archivo guardar el génesis? (predeterminado = camarilla.json)
> genesis.json
INFO [02-15|18:24:22] Bloque de génesis existente exportado
Utilice la primera cuenta generada, la autoridad, como la cuenta "selladora", y la segunda cuenta como la cuenta prefinanciada. Para el ID de red/cadena, recomendaría elegir un valor por debajo de 1000. Las cadenas de desarrollo usan el valor 1337, y descubrimos que los valores más altos (como los generados al elegir "aleatorio") pueden generar problemas más adelante.
Paso 4: Inicie su instancia privada de Ethereum
Inicialice e inicie su instancia geth de autoridad:
geth --datadir .ethereum/ init genesis.json

geth --nodiscover --networkid 42 --datadir .ethereum/ --unlock 0x6203bb870bfb79438b827de3d6b0070d4d2a5f7b --mine --rpc --rpcapi eth,net,web3 --rpcaddr
Pase la dirección de la autoridad al parámetro de desbloqueo y, para rpcaddr, use la dirección IP privada de su máquina virtual como se muestra en la configuración de red de la consola de Azure.

Nombre:  Capturar 2.PNG
Visitas: 33
Tamaño: 88.5 KB


Asegúrese de crear una regla de seguridad de entrada para el puerto 8545 en su grupo de seguridad de red para permitirle conectarse a su nodo de autoridad mediante la biblioteca web3.js estándar o, en nuestro caso, Nethereum para usar con Xamarin.


Nombre:  Capturar 3.PNG
Visitas: 97
Tamaño: 98.4 KB


Resultado: una cadena de bloques de Ethereum funcional
El proceso anterior toma alrededor de 20 minutos y da como resultado una cadena de bloques PoA Ethereum privada y totalmente funcional en la nube. Este entorno es ideal para el desarrollo de pruebas de concepto de aplicaciones descentralizadas (DApp) y proporciona transacciones rápidas y gratuitas.
Puede incluir fácilmente otras máquinas virtuales en la configuración para que actúen como nodos de transacciones dedicados o nodos de autoridad adicionales para una red más representativa. Pero desarrollar una prueba de concepto es solo un paso hacia el desarrollo de una solución comercial completa de blockchain. La seguridad de DApp es un tema notoriamente complejo, y la implementación en una red de prueba pública para probar escenarios del mundo real y verificar el funcionamiento correcto es fundamental.
La integración de su back-end basado en blockchain con un front-end de aplicación móvil también requiere una estrategia sólida. Blockchain presenta un desafío único en la experiencia del usuario, ya que las transacciones pueden tardar varios minutos en confirmarse según el precio del combustible que esté dispuesto a pagar.
Aquí en ArcTouch, estamos entusiasmados de ser una empresa de desarrollo de DApp y creemos que blockchain será un componente importante de las aplicaciones del mañana tanto para las empresas como para los consumidores.