Tutorial de Ethereum: ¡una mirada más profunda a Ethereum!



Este tutorial de Ethereum explica Ethereum desde un punto de vista arquitectónico y también cómo constituye la mejor plataforma para construir DAPPS y DAO.

Ethereum Tutorial:

En este blog del tutorial de Ethereum, explicaré el funcionamiento interno de la arquitectura de ethereum y también le mostraré la implementación de ethereum a través de un sencillo contrato inteligente .

Veo a Ethereum como una cadena de bloques programable que servirá a la mayoría de las empresas B2C en el futuro. Ethereum otorga a los desarrolladores la libertad de crear modelos complejos que se ejecutarán en la cadena de bloques, en lugar de restringirlos a operaciones predefinidas como la cadena de bloques de Bitcoin.





Con este enfoque, Ethereum se ha convertido en una plataforma para una gran cantidad de aplicaciones y organizaciones descentralizadas que incluyen, entre otras, las criptomonedas.

Cubriré una variedad de temas de manera exhaustiva a través de la ejecución de este blog 'Tutorial de Ethereum'. Estos temas incluyen:



Puede pasar por esta grabación del Tutorial de Ethereum donde nuestros instructores han explicado los temas de manera detallada con que le ayudará a comprender mejor este concepto.

Tutorial de Ethereum | Contratos inteligentes de Ethereum | Edureka

Tutorial de Ethereum: cuentas de Ethereum

La red Ethereum tiene dos tipos de cuentas, a saber:



  • Cuentas externas
  • Cuentas de contrato

Estas cuentas, tanto externas como contractuales, se denominan 'objetos de estado' y comprenden el 'estado' de la red ethereum. Cada objeto de estado tiene un estado bien definido. Para las cuentas externas, el estado comprende el saldo de la cuenta, mientras que para las cuentas por contrato, el estado se define por el almacenamiento y el saldo de la memoria.

Me referiré a las cuentas externas simplemente como cuentas. Estas cuentas son propiedad de están representadas por agentes externos de la red que incluyen a todos los usuarios comunes, mineros, agentes automatizados, etc.

Estas cuentas generalmente se controlan con la ayuda de algoritmos de criptografía de clave pública como RSA. El objetivo principal de las cuentas externas es servir como medio para que los usuarios interactúen con Ethereum Blockchain.

Las cuentas de contrato, por otro lado, son una colección de código que reside en la cadena de bloques en una dirección específica. Estos contratos son invocados por cuentas externas o por otros contratos a través de una función específica de llamado a la acción. Estos contratos están escritos en lenguajes de programación de alto nivel como Solidity, Serpent o LLL. Cada contrato que reside en la cadena de bloques de ethereum se almacena en un formato específico llamado código de bytes EVM (máquina virtual de Ethereum), que es un formato binario específico de ethereum.

Será justo que explique EVM ahora que les he hablado del código de bytes de EVM.

Tutorial de Ethereum: Máquina virtual Ethereum

Ethereum, de manera rústica, define un conjunto de protocolos generalizados que se han convertido en los pilares del desarrollo de aplicaciones descentralizadas. En el corazón de esto, se encuentra la Máquina Virtual Ethereum. La siguiente figura explica la arquitectura:

Arquitectura Ethereum - Tutorial Ethereum - Edureka

hashmap y hashtable en java

Es importante tener en cuenta que la máquina virtual Ethereum no solo está completamente aislada, sino que también está completamente aislada. Esto significa que el código que se está ejecutando actualmente en el EVM no tiene acceso a la red o al sistema de archivos y puede acceder con moderación a otros contratos.

Ahora que entendemos el núcleo de la plataforma, echemos un vistazo más profundo a los nodos de la red.

Tutorial de Ethereum: la red Ethereum

La red ethereum es una red pública de blockchain. Constituye la base de todas las aplicaciones y organizaciones de igual a igual descentralizadas que se ejecutan en la red. La red se compone de dos tipos de nodos, a saber, nodos completos y nodos ligeros.

Nodos completos contienen el historial completo de transacciones desde el bloque génesis. Son una prueba completa de la integridad de la red blockchain. Los nodos completos deben contener todas y cada una de las transacciones que se hayan verificado de acuerdo con las reglas establecidas por las especificaciones de Ethereum.

Nodos de peso ligero por otro lado, solo contienen un subconjunto de toda la cadena de bloques. Estos tipos de nodos se utilizan principalmente en billeteras electrónicas que deben ser de naturaleza liviana y, por lo tanto, no se puede almacenar toda la cadena de bloques en ellas. Estos nodos, por el contrario, no verifican todos los bloques o transacciones y es posible que no tengan una copia del estado actual de la cadena de bloques. Dependen de nodos completos para proporcionarles detalles faltantes (o simplemente carecen de una funcionalidad particular). La ventaja de los nodos ligeros es que pueden comenzar a funcionar mucho más rápidamente, pueden ejecutarse en dispositivos con más limitaciones de memoria / computación y no consumen tanto almacenamiento.

Cada blockchain público tiene una moneda adjunta. Ethereum no es diferente. Echemos un vistazo más profundo a la criptomoneda de Ethereum.

Tutorial de Ethereum: éter y gas

Ether es el nombre de la criptomoneda que se utiliza para pagar las transacciones en la red ethereum. Además de pagar transacciones y servicios generales, Ether también se usa para comprar Gas, que a su vez se usa para pagar los cálculos dentro del EVM.

Ether es la unidad métrica y tiene muchas denominaciones que ayudan a pagar con precisión las transacciones y el gas. La denominación más pequeña, también conocida como unidad base, se llama Wei. Las denominaciones junto con sus nombres específicos se pueden ver en la siguiente tabla:

UnidadesValor WeiWei
wei1 wei1
Kwei1e3 wei1,000
Mwei1e6 wei1,000,000
Tejer1e9 wei1,000,000,000
microEther1e12 wei1,000,000,000,000
milieter1e15 wei1,000,000,000,000,000
Éter1e18 wei1,000,000,000,000,000,000

Como se discutió anteriormente, sabemos que EVM es responsable de ejecutar el código que se implementa en su red. Entonces, ¿qué impide que alguien ejecute un bucle infinito en el EVM y sobrecargue por completo su memoria? Aquí es donde entra el concepto de gas.

El gas se utiliza como métrica para pagar los recursos computacionales en la red. Cada contrato en la red tiene una cantidad máxima establecida de gas que puede usar para sus cálculos. Esto se conoce como ' Gas Limit ”Otros términos de gas asociados son los siguientes:

  • Precio del gas : Este es el costo del gas en términos de tokens como Ether y sus otras denominaciones. Para estabilizar el valor del gas, el precio del gas es un valor flotante tal que si el costo de los tokens o la moneda fluctúa, el precio del gas cambia para mantener el mismo valor real.
  • Gas Fee : Ésta es efectivamente la cantidad de gas que se necesita pagar para ejecutar una transacción o programa en particular (llamado contrato).

Por lo tanto, si alguien intenta ejecutar un fragmento de código que se ejecuta para siempre, el contrato eventualmente excederá su límite de gas y toda la transacción que invocó el contrato se revertirá a su estado anterior.


Ahora que conocemos la moneda, echemos un vistazo al proceso que genera una nueva moneda.

Tutorial de Ethereum: Minería

Ethereum, al igual que otras tecnologías públicas de blockchain, garantiza la seguridad a través de un modelo basado en incentivos. Esto se denomina mecanismo de prueba de trabajo. La siguiente figura muestra cómo funciona la minería ethereum:

Desde una perspectiva más técnica, el algoritmo de prueba de trabajo utilizado se llama Ethash, que es un algoritmo hash inspirado en el algoritmo Dagger-Hashimoto.

Ahora que hemos visto la arquitectura funcional de ethereum y discutido sus elementos esenciales, veamos un problema del mundo real y el enfoque de ethereum para resolverlo.

Tutorial de Ethereum: Caso de uso de financiación colectiva descentralizada

Planteamiento del problema : Una buena 'idea' no lo es todo en el mundo actual para iniciar un negocio exitoso. Se necesita mucho financiamiento y esfuerzo para implementar una idea. Aquí es donde entran en escena organizaciones como “Kickstarter”. Proporcionan a los proyectos la exposición pública necesaria para que las donaciones destinadas a su proyecto lo pongan en marcha, pero la arquitectura centralizada de tal motivo tiene sus desventajas, principalmente en la forma en que se manejan las recompensas. Dado que la autoridad centralizada toma todas las decisiones, los sistemas son propensos a reglas como:

  • Cualquiera que no cumpla con el plazo de la campaña no podrá participar más.
  • cualquier donante que haya cambiado de opinión no puede salir

Acercarse :

Tomamos una metodología descentralizada para abordar el problema como se explica en la siguiente imagen:

Solución :

Aquí está el contrato inteligente de solidez para la declaración del problema anterior.

pragma solidez ^ 0.4.16 interfaz token {transferencia de función (dirección receptor, monto uint)} contrato Crowdsale {dirección público beneficiario uint financiamiento público Meta uint monto público Subido uint fecha límite pública uint token de precio público token público Mapeo de recompensas (dirección => uint256) saldo público de bool financeGoalReached = falso bool crowdsaleClosed = evento falso GoalReached (dirección del destinatario, uint totalAmountRaised) evento FundTransfer (dirección del patrocinador, uint monto, bool isContribution) / ** * Función de constructor * * Configurar el propietario * / función Crowdsale (dirección ifSuccessfulSendTo // la dirección del propietario cuando el financiamiento es exitoso uint financeGoalInEthers // monto objetivo para aumentar uint durationInMinutes // tiempo dado uint etherCostOfEachToken // costo del capital en la dirección de ether addressOfTokenUsedAsReward // dirección del token) {beneficiary = ifSuccessfulSendTo financeGoal = financeGoalInEthers = ahora * 1 ether deadline + durationInMinutes * 1 minuto precio = etherCostOfEachToken * 1 ether para kenReward = token (addressOfTokenUsedAsReward)} / ** * Función alternativa * * La función sin nombre es la función predeterminada que se llama siempre que alguien envía fondos a un contrato * / function () payable {require (! crowdsaleClosed) uint amount = msg. value balanceOf [msg.sender] + = amount amountRaised + = amount tokenReward.transfer (msg.sender, amount / price) FundTransfer (msg.sender, amount, true)} modifier afterDeadline () {if (ahora = fondeoGoal) {fondeoGoalReached = true GoalReached (beneficiary, amountRaised)} crowdsaleClosed = true} / ** * Retirar los fondos * * Comprueba si se ha alcanzado el objetivo o el límite de tiempo y, de ser así, y se ha alcanzado el objetivo de financiación, * envía el importe total al beneficiario. Si no se alcanzó la meta, cada contribuyente puede retirar * la cantidad que contribuyó. * / function safeWithdrawal () afterDeadline {if (! financeGoalReached) {uint amount = balanceOf [msg.sender] balanceOf [msg.sender] = 0 if (amount> 0) {if (msg.sender.send (amount)) { FundTransfer (msg.sender, amount, false)} else {balanceOf [msg.sender] = amount}}} if (financeGoalReached && beneficiary == msg.sender) {if (beneficiary.send (amountRaised)) {FundTransfer (beneficiario, amountRaised, false)} else {// Si no enviamos los fondos al beneficiario, desbloqueamos el saldo de los financiadores .GoalReached = false}}}}

En caso de que esté interesado en aprender solidez, consulte nuestro blog en , que se utiliza para desarrollarpersonalizadocontratos inteligentes.

Si desea aprender Blockchain y desarrollar una carrera en Tecnologías Blockchain, consulte nuestro que viene con capacitación en vivo dirigida por un instructor y experiencia en proyectos de la vida real. Esta capacitación lo ayudará a comprender Blockchain en profundidad y lo ayudará a dominar el tema.

Tienes una pregunta para nosotros? Por favor menciónelo en la sección de comentarios. y nos pondremos en contacto contigo lo antes posible.