La publicación Configuración de un entorno de desarrollo para Blockchain apareció por primera vez en Coinpedia Fintech News

1. Introducción

Blockchain está ganando popularidad y desarrollándose hoy debido a su promesa de innovación y descentralización. Si bien parece fascinante desde fuera, sumergirse sin un entorno bien configurado es igualmente desalentador. Pero no te preocupes, ¡lo tenemos cubierto! Este artículo profundiza en el nicho de blockchain y proporciona guías detalladas e información adaptada a los intereses y necesidades de los desarrolladores de blockchain. ¡Prepárate para explorar el mundo de blockchain con este emocionante viaje!

2. Elegir las herramientas adecuadas

Al configurar su entorno, es esencial elegir las herramientas adecuadas según sus intereses y requisitos. Las siguientes son las herramientas y editores que puede explorar.

Sistema operativo: 

Puede desarrollar aplicaciones blockchain en cualquier sistema operativo, pero se prefieren macOS y Linux para una mejor compatibilidad y soporte.

Linux: Linux es gratuito y de código abierto y proporciona flexibilidad y personalización. Cuenta con un amplio apoyo comunitario y ricos recursos. Existen distribuciones populares de Linux que se utilizan ampliamente. Uno es Ubuntu, que es ideal para principiantes, y los otros son Fedora y Debian. La mayoría de los diseños de herramientas blockchain se realizan con Linux en su centro.

MacOS: MacOS es similar a Linux; Está basado en Unix y tiene similitudes en la experiencia de las herramientas de línea de comandos y el entorno de desarrollo. La integración de hardware y software es perfecta. Además, cuenta con un excelente soporte nativo, como Homebrew, Xcode y Docker.

Windows: Aún puedes usar Windows con WSL (Subsistema de Windows para Linux), esto te permite ejecutar Linux junto con Windows. Esto le brinda lo mejor de ambos mundos: familiaridad con Windows y las poderosas herramientas de Linux.

Tabla de diferencias entre OS/Mac/Linux

1.Editores de código/IDE:

Un buen editor de código o IDE puede hacerte mucho más productivo. Aquí hay algunas opciones en las que pensar:

  • VSCode: es bastante liviano y tiene complementos increíbles para diferentes lenguajes de codificación y marcos de blockchain.

  • IntelliJ IDEA: Esta es sólida y muy útil si estás jugando con proyectos de cadena de bloques de Java.

  • Texto sublime: es rápido y puedes modificarlo mucho. Es genial si te gusta mantener las cosas simples.

2.Sistemas de control de versiones: 

El control de versiones es muy importante para cualquier proyecto en el que estés construyendo algo. Git, junto con sitios web como GitHub o GitLab, te ayuda a manejar bien tu código, trabajar con otras personas y estar atento a los cambios. Estas herramientas facilitan la administración de su código base, formar equipos con otros y estar al tanto de todas las actualizaciones.

3. Instalación de software esencial

Lenguajes de programación

Estos son los pasos de instalación para los lenguajes comunes utilizados en el desarrollo de blockchain.

JavaScript/Mecanografiado:

Pitón:

Ir:

Óxido:

Estibador:

Docker ayuda a crear entornos de desarrollo consistentes.

  • Pasos de instalación para Docker.

4. Marcos y herramientas de desarrollo de blockchain

  • Configuración general:

La configuración general incluye varias herramientas y bibliotecas que admiten blockchain independientemente de la blockchain específica. Existen herramientas como Truffle y Hardhat que proporcionan un entorno de desarrollo integral.

  • Marcos populares:

  1. Hyperledger Fabric: un sistema blockchain especial diseñado para que lo utilicen las grandes empresas.

  2. Tendermint: una herramienta blockchain rápida que respalda las formas bizantinas tolerantes a fallas (BFT) para acordar cosas.

Containerización y virtualización:

Docker ayuda a mantener la misma configuración de trabajo en diferentes computadoras. Puede crear contenedores Docker con todas las dependencias que necesita, lo que facilita la configuración y el desmantelamiento de áreas de trabajo.

5. Configuración de redes Blockchain locales

  • Herramientas generales:

Algunas herramientas generales que resultan útiles para administrar y ejecutar la cadena de bloques local son las siguientes:

Docker Compose: Docker Compose se utiliza para definir y ejecutar aplicaciones Docker de múltiples contenedores. Utiliza un archivo docker-compose.yml. Estos son los pasos de instalación para el mismo:

Kubernetes: un sistema de código abierto para automatizar la implementación, el escalado y la gestión de aplicaciones en contenedores. Estos son los pasos de instalación de Kubernetes:

Archivo yaml:

Desplegar:

  • Ejecutando nodos locales:

La configuración del nodo local es útil para probar su aplicación en un entorno controlado. Estos son los pasos para la configuración:

  • Usando máquinas virtuales:

Las máquinas virtuales le ayudan a experimentar con sus aplicaciones sin afectar el entorno local. También agrega una capa extra de abstracción.

6. Desarrollo de contratos inteligentes

Idiomas comunes:

  • Los contratos inteligentes generalmente están escritos en Solidity y Rust:

  • Solidez: así es como puedes instalar solidez:

instalación npm -g solcsolc –versión

Óxido:

objetivo de oxidación agregar wasm32-desconocido-desconocido

Compiladores y Linters:

Los compiladores y linters son las herramientas que se utilizan para redactar contratos inteligentes de alta calidad. Los compiladores lo ayudan a compilar el código para que pueda implementarlo aún más en la cadena de bloques.

Estos son los pasos para redactar un contrato: 

1. Solidez:

solc –bin –abi –optimize -o build/ YourContract.sol

Cree un archivo .solhint.json{ “extends”: “solhint:recommended”,  “rules”: {    “indent”: [“error”, 4],    “quotes”: [“error”, “double”]  }}

2. Óxido:

Instalar Clippy: componente oxidado agregar clippy Crear un archivo Clipy.toml[clippy]warnings_as_errors = true

Escribir contratos inteligentes

Al redactar un contrato inteligente debes tener en cuenta las pautas y mejores prácticas a seguir:

  • Asegúrese de que su código sea modular y reutilizable

  • Realizar auditorías de seguridad

  • Garantizar la eficiencia del gas para reducir los costos de transacción

  • Realizar pruebas exhaustivas 

  • Documente su código correctamente

  • Utilice bibliotecas SafeMath

  • Siempre verifique los valores de retorno y los errores.

  • Evite codificar valores en su contrato

  • Siga un estilo de codificación consistente

  • Implementar mecanismos de control de acceso.

  • Actualiza las dependencias periódicamente.

  • Usar eventos para iniciar sesión

  • Utilice bibliotecas estándar.

  • Utilice billeteras multifirma 

  • Tenga un plan de mantenimiento a largo plazo de su contrato.

7. Pruebas y depuración

Marcos de prueba:

  • Las pruebas son el pilar final y más fuerte de cualquier desarrollo. Mocha y Chai son esenciales para probar los contratos en JavaScript. Mocha es un marco de prueba y Chai es una biblioteca de aserciones al unísono para ayudar a ejecutar pruebas y escribir aserciones de prueba. Waffle es un marco de prueba que se integra perfectamente con Hardhat. Proporciona capacidades de prueba avanzadas y tiene afirmaciones completas.

Herramientas de depuración:

  • Depurar es encontrar errores y corregirlos en su código. Algunas herramientas ayudan con esto. Herramientas como Remix, GDB se utilizan para la depuración.

Pruebas continuas:

Probar todo el tiempo es muy importante a la hora de crear software hoy en día. Garantiza que las máquinas revisen y validen su código repetidamente. Cuando utiliza herramientas que ayudan con la integración continua (CI) y la implementación continua (CD), puede configurar un sistema que ejecute pruebas por sí solo cada vez que alguien cambie el código. Esto ayuda a encontrar problemas y mantiene el código en buen estado.

8. Herramientas de implementación

Estrategias generales de implementación:

  • A continuación se muestran algunas estrategias generales de implementación:

  1. Despliegue Local: El Despliegue se realiza localmente y de forma controlada utilizando herramientas como Ganache y Docker.

  2. Implementación de Testnet: esto se realiza para probar la aplicación en un entorno del mundo real sin activos reales.

  3. Implementación de la red principal: este es un paso crucial en el que se implementa en la red principal donde se realizan transacciones y activos reales. Esta implementación requiere pruebas exhaustivas antes de implementarla.

  4. Implementación automatizada: utilice canalizaciones de CI/CD para la implementación con fines de automatización y repetición.

Secuencias de comandos y automatización:

Así es como puedes escribir scripts para la automatización:

Guiones de casco:

Usando servicios en la nube:

La implementación de nodos blockchain y contratos inteligentes utilizando servicios en la nube proporciona facilidad, confiabilidad y escalabilidad. Podemos utilizar los siguientes servicios en la nube:

AWS: (Servicios web de Amazon):

  • AWS es un servicio en la nube administrado por Amazon, útil para la configuración de instancias EC2 para ejecutar nodos. Podemos implementar contratos inteligentes utilizando AWS lambda para ejecución sin servidor.

Azur

Azure Blockchain Service le ayuda a administrar redes blockchain. Puede utilizar Azure Functions o Azure DevOps para poner su cadena de bloques en acción y mantenerla actualizada.

PCG

Kubernetes Engine (GKE) o Compute Engine de Google Cloud le permite configurar nodos de blockchain. Google Cloud Functions y Cloud Build facilitan la configuración de su cadena de bloques.

9. Conexión a redes externas

1. Configuración: Pasos para configurar las conexiones:

  • Configuración de red: configure las configuraciones de red según sus requisitos. Aquí se da un ejemplo de Ethereum:

Archivo Json:{  “redes”: {    “mainnet”: {      “url”: “https://mainnet.infura.io/v3/YOUR-PROJECT-ID”,      “cuentas”: [“0xYOUR_PRIVATE_KEY”]    }  }}

  • Variables de entorno: utilice archivos .env y bibliotecas como dotenv para administrar las variables de entorno y almacenar la información de seguridad y las claves privadas de forma segura.

2. API y bibliotecas:

  • El uso de API y bibliotecas para interactuar con redes externas simplifica la interacción. A continuación se muestran algunas API de uso popular:

Ethers.js const {éteres} = require(“éteres”); proveedor constante = new ethers.providers.InfuraProvider(“homestead”, “SU-ID-PROYECTO”);

Polka.jsconst { ApiPromise, WsProvider } = require('@polkadot/api');const proveedor = nuevo WsProvider('wss://rpc.polkadot.io');const api = espera ApiPromise.create({ proveedor }) ;

Web3.js para ethereum:const Web3 = require('web3'); const web3 = new Web3('https://mainnet.infura.io/v3/YOUR-PROJECT-ID');

Integración de billetera:

  • La integración de Wallet permite a los usuarios interactuar con blockchain a través de transacciones e interacciones. Estos son los pasos para la integración de la billetera:

Metamáscara:

proveedor constante = new ethers.providers.Web3Provider(window.ethereum);

Conexión de billetera:

const WalletConnectProvider = require(“@walletconnect/web3-provider”); const proveedor = new WalletConnectProvider({ infuraId: “SU-INFURA-ID” });

10. Integración e implementación continuas (CI/CD)

Herramientas generales de CI/CD:

  • Acciones de Github: GitHub Actions te permite configurar CI/CD para blockchain.

CLI de Travis:

Circle CLI: CircleCI es otra forma de realizar CI/CD que funciona bien con proyectos blockchain. CircleCI le ofrece opciones sofisticadas para que la implementación se realice por sí sola.

Pruebas e implementación automatizadas:

  • Escribir flujos de trabajo para pruebas e implementación automatizadas garantiza un código coherente y ayuda con iteraciones rápidas.

Pruebas: prueba de casco npx Implementación: implementación de casco npx

11. Herramientas de seguridad

La seguridad es el corazón del mundo blockchain, por lo que es esencial garantizar las mejores herramientas de seguridad. Prácticas generales de seguridad:

  • Realizar revisiones periódicas del código.

  • Tener controles de acceso precisos para funciones públicas y privadas.

  • Tener auditorías periódicas

Herramientas de análisis estático:

  • Las herramientas de análisis estático son útiles para identificar las vulnerabilidades de nuestro código y rectificarlas. Algunas herramientas utilizadas para lo mismo son Mythril y Slither.

Auditorías periódicas:

Realizar auditorías externas e internas periódicas y solucionar los problemas que surjan antes de que se exploten los contratos.

12. Mejores prácticas

Estructura de carpetas:

  • Mantenga una estructura de carpetas adecuada y limpia para un acceso organizado y un entorno ordenado en el proyecto.

Variables de entorno

  • Utilice archivos env y bibliotecas dotenv 

  • Utilice herramientas de administración de secretos como AWS secret manager o Azure Key Vault.

Documentación:

La documentación del código es tan importante como escribir el código.

  • Mantenga un archivo README adecuado para que otros puedan entender su proyecto.

  • Agregue comentarios en el código siempre que sea necesario.

  • Utilice la wiki del proyecto o las API de documentación.

13. Conclusión

Podemos concluir diciendo que configurar el entorno adecuado es más importante que simplemente crear aplicaciones blockchain. La configuración del entorno tiene una lista de verificación para seleccionar las herramientas adecuadas para configurar redes locales e implementar contratos inteligentes. Si sigue los pasos y estrategias mencionados en este artículo, podrá crear aplicaciones eficientes, sólidas y seguras. Aprender todo el tiempo y ajustar las cosas para que se ajusten a sus necesidades lo ayudará a mejorar su configuración y crecer con ella para mantenerse al día con los nuevos avances en la tecnología blockchain. ¡Feliz codificación!