Manejo seguro de llaves privadas en proyectos blockchain con .env
Clase 12 de 24 • Curso de Dapps: Introducción al Desarrollo de Aplicaciones Descentralizadas
Contenido del curso
- 7

Setup de Proyectos Blockchain con Node.js y Yarn
04:32 - 8

Instalación y configuración de Hard Hat para contratos inteligentes
11:07 - 9

Compilación y despliegue de contratos inteligentes con Hard Hat
04:31 - 10

Actualización de Testnets en Ethereum: Goerli y Sepolia
01:52 - 11

Despliegue de Contratos Inteligentes en Redes de Prueba con Hard Hat
13:52 - 12

Manejo seguro de llaves privadas en proyectos blockchain con .env
07:47 - 13

Alternativas a Hard Hat para Desplegar Contratos Inteligentes
09:04
- 14

Implementación de OpenZeppelin en Smart Contracts Ethereum
15:54 - 15

Extensión de Funcionalidad en Contratos ERC721 con OpenZeppelin
11:04 - 16

Funciones de Metadata en NFTs y OpenSepaline
20:44 - 17

Cálculo y Diseño del ADN en PlatziPong NFTs
08:04 - 18

Implementación de contratos inteligentes en Solidity para NFTs
13:44 - 19

Generación de ADN Pseudoaleatorio en Contratos Solidity
12:01 - 20

Asignación de ADN y URL de imagen en NFTs con Solidity
16:57
¿Por qué son importantes las llaves privadas en blockchain?
La importancia de las llaves privadas en el entorno blockchain radica en su papel determinante para la seguridad y autenticación de transacciones y contratos inteligentes. En la web 3.0, tu identidad está definida por tu firma digital y se genera a través de tu llave privada. Usualmente, cuando se realiza un despliegue de contratos inteligentes o se efectúan transferencias de valor, se necesita firmar una transacción mediante un proceso criptográfico que valida la autenticidad del remitente.
- Función de las llaves privadas:
- Validan la autenticidad de las transacciones.
- Permiten firmar transacciones que después pueden enviarse a la blockchain.
El problema de compartir una clave privada es que cualquiera que la posea puede firmar transacciones en tu nombre. Este potencial riesgo de seguridad hace esencial protegerla en todo momento.
¿Cómo manejar de manera segura las llaves privadas?
Proteger las llaves privadas y otros datos sensibles dentro de un proyecto es crucial para evitar hackeos o robos. Una forma efectiva de hacerlo es mediante el uso de archivos .env, que almacenan información sensible localmente sin ser incluidos en repositorios públicos.
Implementación con .env
Para ocultar la información sensible en tu código, puedes seguir los siguientes pasos utilizando la librería .env:
-
Instalación de la librería
.env:yarn add dotenv --devEsta herramienta te permite leer variables del entorno e insertarlas en tu código JavaScript.
-
Creación de archivo
.env:- Crea un archivo
.envpara almacenar las llaves privadas y otros datos confidenciales, como el Infura Project ID.
DEPLOYER_SIGNER_PRIVATE_KEY=tu_llave_privada INFURA_PROJECT_ID=tu_id_de_infura - Crea un archivo
-
Ejemplo y exclusión del archivo en Git:
- Para dar una referencia a otros desarrolladores sin compartir datos sensibles, crea un archivo
.env.examplecon las claves pero sin valores reales. - Asegúrate de que el archivo
.envestá ignorado por Git agregándolo a.gitignore.
- Para dar una referencia a otros desarrolladores sin compartir datos sensibles, crea un archivo
-
Configura la librería en tu proyecto: Dentro de tu archivo de configuración o script de despliegue, carga las variables de ambiente usando
dotenv:require('dotenv').config(); const infuraProjectID = process.env.INFURA_PROJECT_ID; const privateKey = process.env.DEPLOYER_SIGNER_PRIVATE_KEY;
Reemplazar datos sensibles en el código
Para integrar las variables obtenidas del archivo .env en tu código de manera segura, puedes utilizar la interpolación de strings en JavaScript para sustituir directamente los valores privados en las configuraciones de conexión.
const providerURL = `https://mainnet.infura.io/v3/${infuraProjectID}`;
const wallet = new ethers.Wallet(privateKey, providerURL);
¿Qué otras alternativas existen para manejar llaves privadas?
Aunque el uso de .env es una estándar popular, no es la única forma de proteger la información sensible. Existen otras técnicas y herramientas que puedes explorar:
- Vaults de secretos: Servicios de seguridad que almacenan y gestionan información sensible de forma centralizada.
- Hardware Wallets: Dispositivos físicos que almacenan de forma segura las claves privadas fuera de línea, brindando una capa adicional de protección.
Proteger adecuadamente las llaves privadas y otros datos confidenciales es un paso vital en el desarrollo seguro de contratos inteligentes en blockchain. ¡Continúa explorando para encontrar las mejores prácticas y alternativas que se adapten a tus necesidades!