Ir al contenido principal

🚀 ¡Estrenamos nueva casa digital en WordPress!

Hola, comunidad TecnoMente 👋 Hoy queremos compartirles una noticia que nos tiene con el corazón latiendo fuerte y los dedos tecleando con emoción: ¡nos mudamos! Después de un gran recorrido en Blogger —donde crecimos, experimentamos y compartimos saberes con ustedes— decidimos dar el siguiente paso: TecnoMente ahora tiene su propio espacio web en WordPress 🎉 🌐 ¿Qué significa esto para ti? Una experiencia más fluida y rápida , tanto en móviles como en PC. Un diseño más moderno y cómodo para leer, con más cariño visual. ¡Y lo más importante! Nuevas funcionalidades: ahora podés suscribirte , comentar más fácilmente, y muy pronto... ¡acceder a contenido exclusivo! 📌 Nuestra nueva dirección: https://blog.tecnomentebr.com Guárdala en tus favoritos, compártela con tu gente y date una vuelta. Este espacio es más que un blog: es una comunidad tech que piensa, crea y evoluciona. Gracias por ser parte del viaje desde el día uno. Esto recién empieza. Se vien...

Python y Blockchain: Cómo Crear un Smart Contract con Web3.py

Python y Blockchain: Cómo Crear un Smart Contract con Web3.py

La tecnología blockchain ha revolucionado la forma en que concebimos las transacciones digitales, la seguridad de los datos y la ejecución de contratos autónomos. Los smart contracts (contratos inteligentes) son una de las aplicaciones más poderosas de blockchain, permitiendo acuerdos auto-ejecutables sin intermediarios.

En este artículo, exploraremos cómo Python puede integrarse con blockchain para crear y desplegar un smart contract utilizando Web3.py, la biblioteca más popular para interactuar con Ethereum y otras redes descentralizadas.

¿Qué aprenderás?

  • Conceptos básicos de blockchain y smart contracts.
  • Configuración del entorno de desarrollo con Python y Web3.py.
  • Escritura y despliegue de un smart contract en la red Ethereum (testnet).
  • Interacción con el contrato desde Python.

1. Fundamentos de Blockchain y Smart Contracts

1.1 ¿Qué es Blockchain?

Blockchain es una base de datos distribuida que registra transacciones de manera inmutable, transparente y segura mediante criptografía. Cada bloque contiene un conjunto de transacciones y está enlazado al anterior, formando una cadena.

🔹 Características clave:

  • Descentralización: No hay una entidad central que controle la red.
  • Inmutabilidad: Los datos no pueden alterarse una vez registrados.
  • Consenso: Las transacciones se validan mediante algoritmos (Proof of Work, Proof of Stake).

1.2 ¿Qué son los Smart Contracts?

Un smart contract es un programa almacenado en la blockchain que se ejecuta automáticamente cuando se cumplen ciertas condiciones.

🔹 Ejemplos de uso:

  • Finanzas descentralizadas (DeFi): Préstamos automatizados.
  • NFTs: Contratos para tokens no fungibles.
  • Votación electrónica: Sistemas transparentes y auditables.

2. Configuración del Entorno de Desarrollo

2.1 Requisitos Previos

  • Python 3.8+ instalado.
  • Conocimientos básicos de programación en Python.
  • Cuenta en Infura (para conexión con Ethereum).
  • Metamask (billetera Ethereum).

2.2 Instalación de Dependencias

pip install web3 solcx
  • Web3.py: Biblioteca para interactuar con Ethereum.
  • Solcx: Compilador de Solidity (lenguaje para smart contracts).

2.3 Configuración de Infura y MetaMask

  1. Crea un proyecto en Infura y obtén tu API Key para la testnet (Ropsten, Goerli o Sepolia).
  2. Configura MetaMask y obtén tu clave privada (solo para desarrollo, nunca la expongas en producción).

3. Creación de un Smart Contract Básico en Solidity

3.1 Estructura de un Smart Contract

Usaremos Solidity, el lenguaje más popular para contratos en Ethereum.

📄 Ejemplo: Contrato de almacenamiento simple (Storage.sol)

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract SimpleStorage {
    uint256 private storedData;

    function set(uint256 x) public {
        storedData = x;
    }

    function get() public view returns (uint256) {
        return storedData;
    }
}

🔹 Explicación:

  • set(x): Guarda un número en la blockchain.
  • get(): Lee el número almacenado.

3.2 Compilación del Contrato con Solcx

from solcx import compile_standard, install_solc

install_solc("0.8.0")  # Instala la versión de Solidity

compiled_sol = compile_standard(
    {
        "language": "Solidity",
        "sources": {"Storage.sol": {"content": open("Storage.sol").read()}},
        "settings": {"outputSelection": {"*": {"*": ["abi", "evm.bytecode"]}}},
    },
    solc_version="0.8.0",
)

# Guarda el ABI y el bytecode
abi = compiled_sol["contracts"]["Storage.sol"]["SimpleStorage"]["abi"]
bytecode = compiled_sol["contracts"]["Storage.sol"]["SimpleStorage"]["evm"]["bytecode"]["object"]

4. Despliegue del Smart Contract en Ethereum

4.1 Conexión con la Blockchain usando Web3.py

from web3 import Web3

# Configuración de Web3 (usando Infura)
infura_url = "https://sepolia.infura.io/v3/TU_API_KEY"
w3 = Web3(Web3.HTTPProvider(infura_url))

# Verifica la conexión
print(f"Conectado: {w3.is_connected()}")

4.2 Despliegue del Contrato

# Configura la cuenta (usando clave privada de MetaMask)
private_key = "TU_CLAVE_PRIVADA"
account = w3.eth.account.from_key(private_key)

# Prepara la transacción
contract = w3.eth.contract(abi=abi, bytecode=bytecode)
txn = contract.constructor().build_transaction({
    "chainId": 11155111,  # Sepolia Testnet
    "gas": 2000000,
    "gasPrice": w3.to_wei("50", "gwei"),
    "nonce": w3.eth.get_transaction_count(account.address),
})

# Firma y envía la transacción
signed_txn = account.sign_transaction(txn)
txn_hash = w3.eth.send_raw_transaction(signed_txn.rawTransaction)
txn_receipt = w3.eth.wait_for_transaction_receipt(txn_hash)

print(f"Contrato desplegado en: {txn_receipt.contractAddress}")

5. Interacción con el Smart Contract desde Python

5.1 Llamando a las Funciones del Contrato

# Conecta al contrato usando su dirección
contract_address = txn_receipt.contractAddress
contract_instance = w3.eth.contract(address=contract_address, abi=abi)

# Ejecuta la función set()
txn = contract_instance.functions.set(42).build_transaction({
    "chainId": 11155111,
    "gas": 2000000,
    "gasPrice": w3.to_wei("50", "gwei"),
    "nonce": w3.eth.get_transaction_count(account.address),
})
signed_txn = account.sign_transaction(txn)
txn_hash = w3.eth.send_raw_transaction(signed_txn.rawTransaction)
txn_receipt = w3.eth.wait_for_transaction_receipt(txn_hash)

# Lee el valor con get()
value = contract_instance.functions.get().call()
print(f"Valor almacenado: {value}")  # Output: 42

6. Conclusiones y Siguientes Pasos

Hemos creado y desplegado un smart contract en la blockchain de Ethereum usando Python y Web3.py. Este es solo el comienzo; puedes explorar:

  • Integración con DeFi (Uniswap, Aave).
  • Desarrollo de NFTs con Python.
  • Optimización de gas y seguridad en contratos.

La combinación de Python y blockchain abre un mundo de posibilidades para desarrolladores. ¡Sigue experimentando y construyendo! 🚀


Recursos Adicionales

¿Te gustaría profundizar en algún tema en particular? ¡Déjalo en los comentarios! 👇

Comentarios

Entradas populares de este blog

🚀 ¡Estrenamos nueva casa digital en WordPress!

Hola, comunidad TecnoMente 👋 Hoy queremos compartirles una noticia que nos tiene con el corazón latiendo fuerte y los dedos tecleando con emoción: ¡nos mudamos! Después de un gran recorrido en Blogger —donde crecimos, experimentamos y compartimos saberes con ustedes— decidimos dar el siguiente paso: TecnoMente ahora tiene su propio espacio web en WordPress 🎉 🌐 ¿Qué significa esto para ti? Una experiencia más fluida y rápida , tanto en móviles como en PC. Un diseño más moderno y cómodo para leer, con más cariño visual. ¡Y lo más importante! Nuevas funcionalidades: ahora podés suscribirte , comentar más fácilmente, y muy pronto... ¡acceder a contenido exclusivo! 📌 Nuestra nueva dirección: https://blog.tecnomentebr.com Guárdala en tus favoritos, compártela con tu gente y date una vuelta. Este espacio es más que un blog: es una comunidad tech que piensa, crea y evoluciona. Gracias por ser parte del viaje desde el día uno. Esto recién empieza. Se vien...

Python en la Computación Cuántica: Librerías y Aplicaciones Emergentes

Python en la Computación Cuántica: Librerías y Aplicaciones Emergentes La computación cuántica, una de las fronteras más emocionantes de la tecnología moderna, está transformando la manera en que abordamos problemas complejos en diversas disciplinas. Aunque suena como algo sacado de la ciencia ficción, la computación cuántica ya está aquí, y Python se ha posicionado como el lenguaje de programación predilecto para interactuar con esta nueva realidad. Gracias a su sintaxis sencilla y a una comunidad vibrante, Python ofrece herramientas poderosas para explorar el mundo cuántico. En este artículo, exploraremos cómo Python se integra en la computación cuántica, destacando las principales librerías disponibles y sus aplicaciones emergentes. Además, presentaremos un ejemplo práctico para ilustrar cómo dar los primeros pasos en este fascinante campo. ¿Qué es la Computación Cuántica? A diferencia de la computación clásica, que utiliza bits para representar inf...

Integrando IA en Aplicaciones Web con Python: Tendencias para 2025

En los últimos años, la inteligencia artificial (IA) ha pasado de ser un tema de ciencia ficción a una herramienta cotidiana en el desarrollo de software. Desde asistentes virtuales hasta sistemas de recomendación, la IA está redefiniendo la forma en que interactuamos con la tecnología. En este artículo, exploraremos cómo integrar IA en aplicaciones web utilizando Python, una de las tecnologías más populares en este campo. También analizaremos las tendencias que marcarán el 2025 y presentaremos un ejemplo práctico para facilitar la comprensión. 1. ¿Por qué Python para integrar IA en aplicaciones web? Python se ha convertido en el lenguaje de programación favorito de muchos desarrolladores de IA por varias razones: Sencillez y legibilidad: Su sintaxis clara permite a los principiantes aprender rápido. Gran comunidad: Cuenta con una comunidad activa que comparte recursos, tutoriales y librerías. Ecosistema robusto: Librerías como TensorFlow, Keras, Scikit-learn y Pandas fa...