Cómo ejecutar una red privada de la cadena de bloques NEO

2017/11/15 发布

Posted on 2017/11/15

La ejecución de una red privada de la cadena de bloques de NEO es una parte integral de trabajar con la cadena de bloques, en particular para escribir y probar dApps y contratos inteligentes.
Una red privada es una cadena de bloques NEO completa para usted, aislada de las redes públicas.
Puede utilizarlo rápidamente, reclamar los 100 millones de NEO iniciales y experimentar con todos los aspectos de la cadena.
Esta publicación es una guía paso a paso para configurar una cadena privada con Docker y Python en Mac, Linux y Windows, y una introducción a neo-python y neo-privatenet-docker.

 

 Nota para los usuarios de Windows:
- neo-python no es compatible actualmente con Windows, porque LevelDB solo funciona en OSX y Linux. Aún puede ejecutar la red privada con el contenedor de Docker, pero para crear monederos y extraer NEO y GAS debe seguir los documentos oficiales de la cadena privada NEO comenzando con el paso 5. - Docker no funciona con Windows 10 Home Edition, se necesitara al menos Windows 10 Pro.

 

 NEO y las herramientas nativas se desarrollan principalmente con C # utilizando Windows.
La documentación oficial de NEO sobre cadenas privadas ofrece una buena visión general de cómo configurar una red privada con herramientas de Windows y 4 máquinas virtuales de Windows como nodos de consenso.
Gracias a los esfuerzos monumentales de la comunidad de la Ciudad de Zion (CoZ), la ejecución de una cadena privada es posible en cualquier plataforma con Docker o Python, con requisitos mínimos en el sistema.
Los dos proyectos específicos que vamos a utilizar son neo-python y neo-privatenet-docker:  - neo-python: nos permite ejecutar un nodo de NEO completo e interactuar con la cadena de bloques con Python 3. - neo-privatenet-docker : nos permite ejecutar toda una cadena de bloques NEO con 4 nodos de consenso en un único y ligero contenedor de Docker

En este punto también quiero mencionar neo-js, una implementación de nodo NEO en JavaScript, con varias características en la fuente de informacion.
neo-js no es tan maduro como neo-python, pero ya admite todas las llamadas RPC, y puede ejecutar un nodo local completo, guardando los datos de la cadena de bloques en una base de datos MongoDB.

 

 Configurando una cadena NEO privada, paso a paso  Los pasos son los siguientes: Configuración de Docker → neo-privatenet-docker → neo-python → conectarse a la red privada y crear un monedero → reclamar los 100.000.000 NEO iniciales.  Configuración DockerAsegúrese de tener Docker instalado y en ejecución: https://docs.docker.com/engine/installation/#desktop Asegúrese de que Docker esté actualizado a la última versión.Debería poder ejecutar $ docker ps sin encontrar errores Ejecutar la cadena privada Contenedor Docker - Clone neo-privatenet-docker, luego construya y ejecute el contenedor Docker con los cuatro nodos iniciales de consenso: - En este punto, el contenedor Docker que ejecuta los nodos de consenso se ejecuta en segundo plano. Puedes verlo con $ docker ps:  -Si encuentra un error como https://registry-1.docker.io/v2/library/ubuntu/manifests/16.04: unauthorized: incorrect username or password , puede que necesite iniciar sesión en el Docker hub $ docker login con su usuario -id (no el correo electrónico). - Cuando el contenedor Docker se detiene o se reinicia, se borra todo el estado (toda la cadena de bloques 'anterior' se habrá ido), y también se debe eliminar Chains / privnet de neo-python y cualquier monedero de privnet que haya creado.  neo-pythonAhora podemos conectarnos a la red privada con neo-python, crear una billetera y reclamar el NEO inicial:  - Configure neo-pytho como se describe en el archivo README: https://github.com/CityOfZion/neo-python#getting-started - Conéctese con neo-python a la cadena privada:  - El número de bloques debe aumentar continuamente (por ejemplo, 'Progreso 0/1') - Cree un monedero:  - Tome nota de la dirección, en este caso AKPwAZWyBWMdUe8NtoSYMeTmwCxrP4e2KB
- Cierre prompt.py (escriba exit o presione CTRL + D)
- Reclame los 100,000,000 NEO iniciales:  - Esto crea una transacción firmada por 3 de los 4 nodos de consenso, y espera que la cadena de bloques confirme la transacción. - Sea paciente, esto puede tomar uno o dos minutos.  En este punto, usted tiene 100m de NEO en su monedero y puedes hacer lo que quiera. Verifique el saldo con neo-python:  En este punto, ya tiene una cadena NEO privada en funcionamiento y con control total sobre los fondos iniciales. ¡Feliz hacking!  Cómo reiniciar y restablecer la red privadaEl contenedor Docker no persiste ningún estado. Si se detiene o se reinicia, todo el estado se pierde y toda la cadena de bloques se creará nuevamente en el próximo inicio. Es importante eliminar los archivos de cadena antiguos de neo-python (chains / privnet), de lo contrario se encontrará con problemas al ejecutar la base de datos anterior en contra de la nueva cadena.  Puede reiniciar manualmente el contenedor de red privada ejecutando ./docker_run.sh .
Esto detiene el contenedor neo-privnet si se está ejecutando, y comienza uno nuevo:  Reclamando el GAS inicialneo-python aún no es compatible con reclamar GAS. Puede reclamarlo con las herramientas oficiales de NEO como se describe en los documentos privados de la cadena NEO comenzando con el paso 5.  Consejos y trucos del Docker Aquí hay algunos comandos Docker de uso frecuente: -          docker ps enumera todas las instancias en ejecución, docker ps -a también todas las instancias detenidas – docs.-          Docker images enumera todas las imágenes locales desde las que puede comenzar un contenedor desde - docs:-          docker exec -it {container-id} / bin / bash abre una interfaz bash con un contenedor en ejecución - docs -          docker stop {container-id} detiene el contenedor – docs-          docker rm -f {container-id} detiene y elimina el contenedor – docs-          docker run para iniciar un nuevo contenedor - docs  NEO TestNetEl proyecto NEO también proporciona un TestNet en ejecución, pero esto solo debe usarse en las etapas finales de desarrollo (por diversas razones).    neo-python ¡neo-python es un proyecto increíble, un esfuerzo comunitario para volver a implementar el proyecto C # NEO original en Python! El proyecto ha recorrido un largo camino y ya admite las siguientes funcionalidades:  - Ejecución de un nodo NEO P2P basado en Python - CLI interactivo para configurar el nodo, así como inspeccionar e interactuar con la cadena de bloques - Ejecución de contratos inteligentes en la cadena de bloques en una máquina virtual Python - Funcionalidad básica de monedero (no completamente probada, no la use en mainnet)  neo-python se ha bifurcado desde un "muy" preliminar Python SDK, pero el desarrollo realmente comenzó en julio de 2017, con contribuciones constantes desde entonces: Desde el 3 de noviembre de 2017, neo-python tiene 18 colaboradores, y está encabezado por un localhuman.  Si desea trabajar con la cadena de bloques de NEO en una plataforma que no sea Windows, seguramente interactuará con neo-python de una forma u otra.
Es una parte integral de la cadena de herramientas de desarrollo multiplataforma, que se desarrolla activamente y, en general, un gran proyecto. ¡Solo quiero enviar un gran agradecimiento a todas las personas que contribuyeron para que esto sea posible! ♥ ️ Estoy entusiasmado con el brillante futuro de este proyecto y su futuro desarrollo. neo-privatenet-docker Echemos un vistazo más de cerca a neo-privatenet-docker, que nos permite ejecutar fácilmente una cadena de bloques NEO privada dentro de una imagen de Ubuntu Docker. Una cadena privada requiere al menos 4 nodos de consenso, que se ejecutan dentro de este único contenedor Docker. Los principales contribuyentes son hal0x2328 y phetter.  Comencemos con el archivo Docker:    -          La imagen está basada en Ubuntu 16:04 -          Se instalan varias utilidades del sistema, incluyendo LevelDB, un rápido almacenamiento de clave-valor de Google, y sqlite3, una base de datos SQL transaccional autónoma, sin servidor y de configuración cero. -          Los repositorios de Microsoft apt están configurados y dotnet-sdk-2.0.0 está instalado.
Recuerde, el proyecto NEO original se implementa en C # y se ejecuta en .NET Core. -          Se descarga la versión neo-cli de Ubuntu  Esa es prácticamente toda la configuración. Después de esto, se extrae neo-cli 4 veces (una para cada nodo de consenso) y se copian los archivos de inicio de la cadena privada: Cuando ejecuta el contenedor Docker con docker_run.sh, inicia el contenedor con 4 puertos abiertos (20333-20336, asignados al host) e invoca el script private_chain_start.sh:  private_chain_start.sh a su vez inicia 4 nodos NEO al ejecutar start_cli.sh cuatro veces:  Este código establece algunas variables a partir de los argumentos (dnpath, wallet, password), ejecuta dotnet neo-cli.dll, abre el monedero inicial del nodo y llama start consensuss para iniciar los nodos. En este punto, se están creando bloques en la cadena privada. ¡Eso es prácticamente todo! Y a pesar de que no parece a mucho código, es un salvavidas para comenzar con el desarrollo de la cadena de bloques de NEO y ejecutar una cadena privada, ya que permite que sea muy fácil y accesible. De nuevo, ¡muchas gracias a los desarrolladores que dirigen este proyecto! ¡Sugeriría que lo pruebes ahora mismo! Simplemente sigue la guía de inicio que se muestra arriba y tendrás tu propia cadena privada de NEO ejecutándose en muy poco tiempo.  Siéntete libre de unirte a NEO Slack y saluda, ¡es una comunidad abierta y acogedora! También puedes encontrar enlaces a otros recursos en la página oficial de NEO en neo.org. Si tiene comentarios sobre esta publicación, comuníquese con el autor a través de @metachris.