Logotipo de Zephyrnet

Guía completa de Ethereum Blockchain con Python

Fecha:

Introducción

Tenemos acceso a internet en todos los rincones del país. Casi todas las empresas que nos rodean, como la fabricación, el comercio minorista, la consultoría, etc., están probando su entorno, por lo que Internet es la primera opción que preferimos. La experiencia de las personas en la web se transforma a diario y la demanda se expande constantemente con el tiempo. Con la expansión de la web, la nueva palabra de moda 3.0 WEB está girando en todas partes, lo que tendrá un impacto significativo en la sociedad y hará que Internet sea más factible y fácil de usar. Si eres nuevo en esta palabra, entonces no te preocupes porque, en este artículo, profundizaremos en el mundo de la web descentralizada con E blockchain.

Este artículo fue publicado como parte del Blogatón de ciencia de datos.

Índice del contenido

  1. Introducción
  2. ¿Qué es la web 3.0?
  3. Tecnologías Blockchain
  4. Primeros pasos con Web3.py y Ethereum Blockchain
  5. Conexión a los nodos de Ethereum
  6. Interactuar con Ethereum Blockchain con Python
  7. ¿Cómo interactúa Ethereum Blockchain con los contratos inteligentes usando Python web 3.0?
  8. Cree un contrato inteligente de Hello World Solidity
  9. Interactuar con el contrato inteligente a través de Python
  10. ¿Cómo implementar contratos inteligentes con Python?
  11. Cree DAPP (Transacción) sin Metamask
  12. Conclusión

¿Qué es Web 3.0?

Web 3. O es el siguiente paso en la evolución de Internet, lo que le permite procesar datos con una inteligencia casi humana mediante el uso de inteligencia artificial y tecnologías blockchain. Con el crecimiento de la tecnología, las empresas están surgiendo y permitiendo la gestión de un ecosistema centralizado a uno descentralizado. En palabras simples, la web 2.0 es un sistema de gestión centralizado que evoluciona hacia la descentralización para permitir que todos desempeñen un papel igualitario con gran privacidad y seguridad, lo que se conoce como web 3.0. Web 3.0 permite un uso justo y una web abierta para todos.

Web 3.0
Fuente – Inteleggain

La Web 3.0 permite la arquitectura entre pares en la que cada par mantiene una copia de los mismos datos en la red y toda la red también se mantiene sincronizada, lo que se conoce como nodos. Por lo tanto, la transacción es altamente segura en la web 3.0, lo que brinda una experiencia de navegación más personalizada y personalizada en Internet.

Terminologías de cadena de bloques

Web 3.0 define algunos de los conceptos y terminologías más utilizados que debe conocer antes de sumergirse en la parte de desarrollo de un contrato inteligente con pitón.

  1. Blockchain - Blockchain es una arquitectura descentralizada de igual a igual que almacena registros transaccionales en forma de bloques que se replican en varias bases de datos de una cadena en una red conectada de nodos de igual a igual. Por lo tanto, blockchain también se define como un libro mayor inmutable que es completamente transparente.
  2. Cuadra - Grupo de nodos interconectados definidos como un bloque. Cada cadena consta de múltiples bloques en la cadena de bloques, y un bloque contiene 3 elementos llamados datos, nonce y hash.
  3. Nodo - Almacena los datos exactos para que el estado de la cadena de bloques se pueda consultar fácilmente.
  4. Contrato inteligente – Un acuerdo digital (programa) se ejecuta en una cadena de bloques Ethereum.

Primeros pasos con Web3.py y Ethereum Blockchain

Ethereum blockchain es una aplicación descentralizada que permite a múltiples empresas. Hay muchas formas en que podemos conectarnos con la cadena de bloques de Ethereum usando diferentes clientes. En esta publicación, usaremos la biblioteca python WEB3.py.

Para comenzar con el desarrollo, primero, necesitamos configurar nuestro sistema. Si no tiene Python versión 3.6 o superior, consulte este enlace para actualizar o instalar Python.

Conexión a los nodos de Ethereum

Primero es elegir y conectarse con el nodo Ethereum usando web3 y luego ejecutar los comandos básicos. Hay dos tipos de nodos, que son nodos locales y alojados. Usaremos Infura, una versión alojada. Hay muchas otras versiones alojadas disponibles. Las 3 formas básicas de conectarse con los nodos de Ethereum son HTTP, WebSockets e IPC.

Configuración de Infura

diríjase a Infura y cree una cuenta para obtener un enlace al nodo Ethereum. Y eso es lo que usaremos para crear nuestra conexión con la cadena de bloques. Infura es Ethereum como servicio de nodo que nos da acceso a la red. Si se registra y verifica con su correo electrónico, obtendrá un panel donde deberá crear una nueva clave API con WEB3, darle un nombre y hacer clic en crear. Recibirá una clave API y la tendrá a mano.

nodos ethereum en blockchain

Fuente: Infura

Conéctese al nodo de prueba de Ethereum

Ahora podemos comenzar a escribir código python e interactuar con la cadena de bloques a través de web3.py. Para comenzar con web3, debe instalar la biblioteca web3.py en un directorio de trabajo utilizando el paquete PIP con el siguiente comando.

pip instalar web3

La biblioteca Web3 depende de una conexión a un nodo Ethereum, por lo que tenemos que conectarnos a un nodo Ethereum con web3 python. El nodo es solo una parte de la computadora de la red blockchain. Podemos usar un proveedor de conexión para conectarnos con la cadena de bloques. Hay muchos proveedores, como un proveedor de prueba de Ethereum, un proveedor de HTTP y un proveedor local, así que comencemos conectándonos a un proveedor de prueba de Ethereum. Para esto, debe crear un nuevo archivo de prueba de python, o puede usar Google Colab. Puede obtener ayuda de la documentación oficial si el código no se ejecuta.

desde web3 importar Web3, EthereumTesterProvider w3 = Web3(EthereumTesterProvider()) w3.isConnected()

¿Cómo conectarse a Ethereum con el proveedor HTTP?

Configuramos un Infura y creamos un nuevo proyecto con un punto final de API Web3 en el que debe copiar el punto final de Ethereum con Mainnet, nuestro proveedor de conexión de red. Y copie el siguiente código, que indica la creación del objeto de proveedor HTTP con el punto final como atributo, y pruebe la conexión. En el siguiente código, puede copiar el enlace del proveedor y agregar su clave API y ejecutar el código.

proveedor_url = 'https://mainnet.infura.io/v3/' w3 = Web3(Web3.HTTPProvider(proveedor_url)) w3.isConnected()

Interactuar con Ethereum Blockchain con Python

Podemos conectarnos con Ethereum Mainnet a través de un proveedor HTTP, por lo que ahora podemos usar nuestra instancia web3 para obtener información sobre el bloque más reciente, como número de bloque, nonce, límite de gas, tamaño, marca de tiempo, hash y transacciones.

último_bloque = w3.eth.get_block('último') print(último_bloque)

A continuación, aprende cómo comprobar una dirección de Ethereum y compruebe si la dirección es válida o no. En el siguiente código, puede pasar la dirección, la billetera o el contrato inteligente del usuario y mostrar los resultados.

print(w3.isAddress('0xDAFEA492D9c6733ae3d56b7Ed1ADB60692c98Bc5'))

Si deseas obtener el saldo de la billetera, luego use la función de dirección de suma de verificación. Primero, debe elegir la billetera de la dirección y luego verificar el saldo.

#verifique el número total de billetera ether = w3.toChecksumAddress('0xDAFEA492D9c6733ae3d56b7Ed1ADB60692c98Bc5') print(w3.eth.get_balance(wallet))

Puede hacer muchas más funciones en web3.py, por ejemplo, convertir WEI a ether. WEI es la denominación más pequeña de ETH, como un centavo a un dólar.

¿Cómo interactúa Ethereum Blockchain con los contratos inteligentes usando Python web 3.0?

Usaremos el contrato inteligente que ya existe en la cadena de bloques de Ethereum. Para encontrar el contrato, visite escaneo de éter. Es un famoso explorador de blockchain de Ethereum donde puede buscar contratos o transacciones por dirección, token o bloque. Debajo de la cadena de bloques, haga clic en contratos verificados y vea los múltiples contratos inteligentes. Abra cualquier contrato y desplácese hacia abajo para copiar la ABI del contrato que contiene toda la información sobre lo que contiene el contrato, como entradas, funciones, nombres, variables, etc.

Ethereum blockchain
Fuente: Aprende por bit
  • En Colab, pegue el ABI copiado; también necesitaremos la dirección del contrato.
  • Visite el contrato y, encima, copie la dirección del contrato que comienza con 0x.
  • Cree una instancia (objeto) del contrato con dirección y ABI como parámetros de objeto.
  • Llame a cualquier función del contrato.
  • Pruebe el código para ejecutarlo en Colab y observe el resultado.
abi = '[{"inputs":[{"internalType":"contract ArtData","name":"data_","type":"address"},{"internalType":"contract FoundNote","name":"note_","type":"address"},{"internalType":"contract DailyMint","name":"mint_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"coinId","type":"uint256"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"name":"artStats","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"coinBalances","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coinStats","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"encodeDecimals","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenData","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenDataURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenImage","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenImageURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"coinId","type":"uint256"}],"name":"tokenStats","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"}]'
contract_address = '0x3008B7ddAc628Ad0Dcbaa0d7CFE622F0F9C3cD10'
#create instance
contract_instance = w3.eth.contract(address=contract_address, abi=abi)
#call the totalSupply function
total_supply = contract_instance.functions.totalSupply().call()
print(total_supply)

Cree un contrato inteligente de Hello World Solidity

Construiremos un contrato inteligente utilizando el lenguaje de programación Solidity y ejecutaremos una biblioteca Python SOLCX. Para crear un contrato inteligente, usamos Remix IDE. Puede crear un contrato inteligente directamente en un archivo Python o Google Colab. Si no sabe mucho sobre la solidez y el contrato inteligente pero desea explorarlos, consulte este contrato inteligente artículo. Si crea un nuevo contrato en Remix, cree un nuevo archivo con una extensión punto sol.

//Identificador de licencia SPDX pragma solidity 0.8.17; contrato HelloWorld { string mensaje público; constructor() { mensaje = "Hola Mundo"; } function setMessage(cadena de memoria _mensaje) public { mensaje = _mensaje; } función mostrarMensaje () ver devoluciones públicas (memoria de cadena) { mensaje de retorno; } }

En la parte superior del archivo, debe colocar el identificador de la licencia SPDX, incluir la versión de solidez y comenzar a crear el contrato al igual que la creación de la clase en c ++. Definimos una cadena y un constructor para definir el valor. Después de eso, agregamos una función para configurar el mensaje y una función para mostrar el mensaje en la consola, que es de tipo vista, lo que significa mostrar el valor. Solo usamos remix porque proporciona una función de compilación e implementación fácil en la que puede verificar que el contrato funciona bien.

Compile los contratos inteligentes de solidez con Python

Ahora puede copiar el contrato y usar Solcx para compilar el contrato. Para esto, necesitamos llamar a la fuente compilada y los valores de salida que necesitamos.

desde solcx import compile_source import solcx solcx.install_solc()
compiled_solidity = compile_source( ''' //Identificador de licencia SPDX pragma solidity 0.8.17; contract HelloWorld { string public message; constructor() { message = "Hello World"; } function setMessage(string memory _message) public { message = _message ; } función mostrarMensaje() ver retornos públicos (cadena de memoria) { mensaje de retorno; } } ''', valores_de_salida = ['abi', 'bin'] )

Después de ejecutar la celda anterior, podemos comenzar a interactuar con el contrato u obtener información. Podemos tomar la solidez compilada o llamar al elemento emergente y observar los resultados.

contract_id, contract_interface = compiled_solidity.popitem() print(contrato_id) print(contrato_interfaz)
imprimir (contrato_interfaz ['abi'])

Interactuar con el contrato inteligente a través de Python

Ahora tenemos que construir un contrato simple e inteligente, pero ¿cómo podemos interactuar con él para observar los resultados y rastrear las transacciones? Por lo tanto, solo necesita implementarlo en cualquier URL como Metamask o ganache, donde obtiene la URL HTTP del contrato inteligente para conectar el contrato con la biblioteca python web3. Y copie la dirección y la transacción web3 ether de remix ide. Y después de una conexión exitosa, podemos llamar a la función de python que ha creado en el contrato.

import json ganache_url = 'http://127.0.0.1:7545' w3 = Web3(Web3.HTTPProvider(ganache_url)) abi = json.loads('[{"inputs":[],"stateMutability":"nonpayable", "tipo":"constructor"},{"entradas":[],"nombre":"displayMessage","salidas":[{"internalType":"cadena","nombre":"","tipo": "string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"message","outputs":[{"internalType":" string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string ","name":"_message","type":"string"}],"name":"setMessage","outputs":[],"stateMutability":"nonpayable","type":"function" }]') dirección = w3.toChecksumAddress("0xd9145CCE52D386f254917e481eB44e9943F39138") contrato = w3.eth.contrato(dirección=dirección, abi=abi) print(contrato.función.mostrarMensaje().llamada())

¿Cómo implementar contratos inteligentes con Python?

Es hora de aprender la implementación del contrato inteligente directamente desde el código. Entonces, primero, debe crear una instancia de la conexión HTTP web3 como lo hemos hecho anteriormente. Después de eso, debemos definir los recursos de salida como valor ABI y código de bytes para copiar el código de bytes de los detalles de compilación del contrato inteligente. Después de eso, intentamos obtener el contrato y generar el hash de la transacción a través del cual obtenemos el recibo de la transacción e implementamos el contrato en Ganache. Ahora podemos llamar a la función de contrato de la misma manera que la compilamos en python.

ganache_url = 'http://127.0.0.1:7545'
w3 = Web3(Web3.HTTPProvider(ganache_url))
bytecode = "608060405234801561001057600080fd5b50600436106100415760003560e01c80632d59dc1214610046578063368b877214610064578063e21f37ce14610080575b600080fd5b61004e61009e565b60405161005b9190610261565b60405180910390f35b61007e600480360381019061007991906103cc565b610130565b005b610088610143565b6040516100959190610261565b60405180910390f35b6060600080546100ad90610444565b80601f01602080910402602001604051908101604052809291908181526020018280546100d990610444565b80156101265780601f106100fb57610100808354040283529160200191610126565b820191906000526020600020905b81548152906001019060200180831161010957829003601f168201915b5050505050905090565b806000908161013f919061062b565b5050565b6000805461015090610444565b80601f016020809104026020016040519081016040528092919081815260200182805461017c90610444565b80156101c95780601f1061019e576101008083540402835291602001916101c9565b820191906000526020600020905b8154815290600101906020018083116101ac57829003601f168201915b505050505081565b600081519050919050565b600082825260208201905092915050565b60005b8381101561020b5780820151818401526020810190506101f0565b60008484015250505050565b6000601f19601f8301169050919050565b6000610233826101d1565b61023d81856101dc565b935061024d8185602086016101ed565b61025681610217565b840191505092915050565b6000602082019050818103600083015261027b8184610228565b905092915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6102d982610217565b810181811067ffffffffffffffff821117156102f8576102f76102a1565b5b80604052505050565b600061030b610283565b905061031782826102d0565b919050565b600067ffffffffffffffff821115610337576103366102a1565b5b61034082610217565b9050602081019050919050565b82818337600083830152505050565b600061036f61036a8461031c565b610301565b90508281526020810184848401111561038b5761038a61029c565b5b61039684828561034d565b509392505050565b600082601f8301126103b3576103b2610297565b5b81356103c384826020860161035c565b91505092915050565b6000602082840312156103e2576103e161028d565b5b600082013567ffffffffffffffff811115610400576103ff610292565b5b61040c8482850161039e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061045c57607f821691505b60208210810361046f5761046e610415565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026104d77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261049a565b6104e1868361049a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600061052861052361051e846104f9565b610503565b6104f9565b9050919050565b6000819050919050565b6105428361050d565b61055661054e8261052f565b8484546104a7565b825550505050565b600090565b61056b61055e565b610576818484610539565b505050565b5b8181101561059a5761058f600082610563565b60018101905061057c565b5050565b601f8211156105df576105b081610475565b6105b98461048a565b810160208510156105c8578190505b6105dc6105d48561048a565b83018261057b565b50505b505050565b600082821c905092915050565b6000610602600019846008026105e4565b1980831691505092915050565b600061061b83836105f1565b9150826002028217905092915050565b610634826101d1565b67ffffffffffffffff81111561064d5761064c6102a1565b5b6106578254610444565b61066282828561059e565b600060209050601f8311600181146106955760008415610683578287015190505b61068d858261060f565b8655506106f5565b601f1984166106a386610475565b60005b828110156106cb578489015182556001820191506020850194506020810190506106a6565b868310156106e857848901516106e4601f8916826105f1565b8355505b6001600288020188555050505b50505050505056fea26469706673582212205a7e9021654bd053603b03a170fa4faa25f4669cc55e69f80391dbf37bc36f8164736f6c63430008110033"
greeter = web3.eth.contract(abi=abi, bytecode = bytecode)
tx_hash = greeter.constructor().transact()
tx_receipt = web3.eth.waitForTransactionReceipt(tx_hash)
#get the contract.

Cree DAPP (Transacción) sin Metamask

Metamask es una billetera descentralizada basada en Ethereum que almacena el Ether que se usa para comprar, enviar, intercambiar o convertir tokens criptográficos. Está disponible en dispositivos móviles y es una extensión para casi todos los navegadores, lo que facilita su uso y el seguimiento de las transacciones. Pero, ¿y si podemos hacer el mismo marketing y obtener la información completa de la cuenta a través de secuencias de comandos? Estamos estudiando web3 y blockchain, por lo que podemos conectar nuestra cuenta con un proveedor de HTTP y crear una cuenta temporal que se vinculará a nuestra cuenta de Ethereum, desde donde podemos obtener varios detalles de la cuenta y realizar una transacción. A continuación se muestra el fragmento de código que sigue un enfoque similar para demostrar la creación de transacciones a través de un script.

url_proveedor = 'https://mainnet.infura.io/v3/820a7144d1f24094bd8aef3cb79ddda3' web3 = Web3(Web3.HTTPProvider(url_proveedor)) web3.eth.account.create() cuenta = web3.eth.account.create() print( cuenta) print(cuenta.dirección) almacén de claves = cuenta.encrypt('foobar') print(almacén de claves)

Conclusión

Web 3.0 es la nueva era de Internet que proporciona a las máquinas inteligencia humana para pensar y actuar. Después de leer y seguir el artículo completo, aprendimos el uso práctico de la tecnología blockchain o Ethereum blockchain y cómo crea productos impactantes que interrumpen Internet y permiten que todos los sigan. Entonces, en este artículo, repasemos todos los puntos clave que hemos aprendido sobre la web 3.0 y la cadena de bloques de Ethereum.

  1. Descentralización - Blockchain ayudará a descentralizar el almacén de datos al tiempo que establece confianza en el mundo virtual porque la web 3.0 permite recuperar información en función del contenido que se puede mantener en varios lugares simultáneamente, lo que lo hace descentralizado.
  2. Toxidado y sin permiso - Los participantes pueden interactuar directamente con la red sin necesidad de un intermediario o permiso de un órgano de gobierno. Debido a esto, podemos acceder a todos los datos relevantes de nuestra elección con gran confianza.
  3. Inteligencia artificial y aprendizaje automático – En la web 3.0, las computadoras pueden entender la información de la misma manera que lo hacen las personas a través de la tecnología basada en ideas de la web semántica y el procesamiento del lenguaje natural.
  4. Conectividad y Ubicuidad – En la web 3.0, Internet será accesible para todos en cualquier lugar y en todo momento porque IOT se lanzará en varios dispositivos inteligentes nuevos. Estos dispositivos conectados a Internet ya no se limitarán a PC y teléfonos inteligentes porque son compatibles con la Web 2.0.
Internet 3.0 | cadena de bloques ethereum
Fuente: 101 blockchain.com

Al comprender las deficiencias de la web 2.0, empresas como Apple, Amazon, Google, etc., están transformando sus servicios existentes en aplicaciones de Internet 3.0 que cumplen con los 4 principios anteriores. Siri y wolfram alpha son dos aplicaciones que utilizan funciones web 3.0. Después de leer el artículo completo, espero que esté convencido de que la web 3.0 marcará una gran diferencia en la sociedad.

Entonces, responda una pregunta en la sección de comentarios a continuación: ¿Cómo se relaciona la web 3.0 con blockchain? Las siguientes opciones pueden ser la respuesta que debe seleccionar.

  • Ayuda a crear contratos inteligentes para páginas web en Internet.
  • Ayuda a la web 3.0 a almacenar sus datos en la cadena de bloques.
  • Ofrece una experiencia descentralizada a sus usuarios.
  • Todo lo mencionado anteriormente.

Tómese un minuto para responder el cuestionario en la sección de comentarios a continuación. Espero que haya sido fácil hacer frente a cada paso discutido en el artículo. Puede publicar consultas en la sección de comentarios a continuación o conectarse conmigo. Conéctate conmigo en LinkedIn y echa un vistazo a mis otros artículos sobre Analítica Vidhya

punto_img

Información más reciente

punto_img