1.2 ¿Qué es Ethereum

html

Punto del curso de Solidity: 1.2 ¿Qué es Ethereum

Ethereum es una plataforma de código abierto basada en blockchain que permite a los desarrolladores construir y desplegar aplicaciones descentralizadas (dApps). Fue propuesta por Vitalik Buterin a finales de 2013 y su desarrollo comenzó en 2014, siendo lanzada oficialmente en julio de 2015.

A diferencia de Bitcoin, cuyo propósito principal es ser una moneda digital, Ethereum se diseñó con la misión más amplia de servir como plataforma para cualquier tipo de blockchain y contrato inteligente. Los contratos inteligentes son scripts de código que se ejecutan automáticamente cuando se cumplen ciertas condiciones predefinidas.

Características Clave de Ethereum

  • Descentralización: La red Ethereum es gestionada por miles de nodos en todo el mundo, no por una autoridad central.
  • Contratos Inteligentes: Los contratos inteligentes permiten realizar acuerdos automatizados sin necesidad de intermediarios.
  • Ether (ETH): El token nativo de la red Ethereum se utiliza para pagar las comisiones de transacción y los servicios de computación en la red.
  • Máquina Virtual de Ethereum (EVM): Un entorno de ejecución que facilita la ejecución de contratos inteligentes en la red.

Contratos Inteligentes y su Ejecución

Los contratos inteligentes son piezas de código que se despliegan en la blockchain de Ethereum y se ejecutan automáticamente cuando se cumplen ciertas condiciones. Esto permite crear una amplia gama de aplicaciones, desde sistemas de votación hasta plataformas de finanzas descentralizadas.

Aquí tienes un ejemplo básico de un contrato inteligente escrito en Solidity, el lenguaje de programación específico de Ethereum:

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

    contract SimpleStorage {
        uint256 public storedData

        // Function to set the value of storedData
        function set(uint256 x) public {
            storedData = x
        }

        // Function to get the value of storedData
        function get() public view returns (uint256) {
            return storedData
        }
    }
    

En este ejemplo, el contrato SimpleStorage permite almacenar y recuperar un valor en la blockchain. Tiene dos funciones:

  • set(uint256 x): Esta función se usa para almacenar un número entero en la variable de estado storedData.
  • get(): Esta función se usa para recuperar el valor almacenado en storedData.

Transacciones y Gas

En Ethereum, cada operación en la red requiere una cierta cantidad de gas, que es esencialmente una unidad de medida de la cantidad de trabajo computacional que se necesita para realizar la operación. El gas se paga en ETH y sirve como incentivo para que los mineros procesen las transacciones.

Por ejemplo, si deseas interactuar con el contrato SimpleStorage y establecer un valor, harías una transacción que envíe una cierta cantidad de gas. Si no se envía suficiente gas, la operación fallará.

Aquí tienes un ejemplo de cómo podrías interactuar con el contrato inteligente usando Web3.js, una biblioteca que permite a las aplicaciones web interactuar con Ethereum:

    const Web3 = require(web3)
    const web3 = new Web3(https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID)

    const abi = [
        {
            constant: false,
            inputs: [
                {
                    name: x,
                    type: uint256
                }
            ],
            name: set,
            outputs: [],
            payable: false,
            stateMutability: nonpayable,
            type: function
        },
        {
            constant: true,
            inputs: [],
            name: get,
            outputs: [
                {
                    name: ,
                    type: uint256
                }
            ],
            payable: false,
            stateMutability: view,
            type: function
        }
    ]

    const address = 0xYourContractAddress
    const contract = new web3.eth.Contract(abi, address)

    // Interactuar con el contrato
    contract.methods.set(42).send({ from: 0xYourAddress })
        .then((receipt) => {
            console.log(Transaction receipt: , receipt)
        })

    contract.methods.get().call()
        .then((result) => {
            console.log(Stored data is: , result)
        })
    

En este ejemplo, primero se instancia Web3 y se conecta a un nodo Ethereum utilizando Infura. Luego, se define la ABI (Application Binary Interface) y la dirección del contrato que se quiere interactuar. Finalmente, se llama a las funciones set y get para almacenar y recuperar un valor en la blockchain.

Ethereum no solo ha revolucionado el mundo de las criptomonedas, sino que también ha abierto nuevas posibilidades para las aplicaciones descentralizadas y los contratos inteligentes, permitiendo así un ecosistema más libre, seguro y transparente.

AnteriorSiguiente

[mwai_chat]

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *