Tutoriel Ethereum - Un regard plus profond sur Ethereum!

Ce didacticiel Ethereum explique Ethereum d'un point de vue architectural et comment il constitue la meilleure plate-forme pour la construction de DAPPS et de DAO.

Ethereum Didacticiel:

Dans ce blog Tutoriel Ethereum, je vais vous expliquer le fonctionnement interne de l'architecture d'Ethereum et je vais également vous montrer l'implémentation d'Ethereum à travers un simple contrat intelligent .



Je vois Ethereum comme une blockchain programmable qui servira à l'avenir la majorité des entreprises B2C. Ethereum accorde aux développeurs la liberté de créer des modèles complexes à exécuter sur la blockchain, au lieu de les restreindre à des opérations prédéfinies comme la blockchain Bitcoin.



Avec cette approche, Ethereum s'est transformé en une plate-forme pour une pléthore d'applications et d'organisations décentralisées qui incluent, mais ne se limitent pas aux crypto-monnaies.

Je couvrirai une variété de sujets de manière exhaustive tout au long de ce blog 'Ethereum Tutorial'. Ces sujets incluent:



Vous pouvez parcourir cet enregistrement du didacticiel Ethereum où nos instructeurs ont expliqué les sujets de manière détaillée avec cela vous aidera à mieux comprendre ce concept.

Tutoriel Ethereum | Contrats intelligents Ethereum | Edureka

Tutoriel Ethereum: Comptes Ethereum

Le réseau Ethereum dispose de deux types de comptes, à savoir:



  • Comptes externes
  • Comptes de contrat

Ces comptes, à la fois externes et contractuels, sont appelés «objets d'état» et comprennent «l'état» du réseau ethereum. Chaque objet d'état a un état bien défini. Pour les comptes externes, l'état comprend le solde du compte tandis que pour les comptes de contrat, l'état est défini par le stockage de la mémoire et le solde.

Je ferai référence aux comptes externes simplement en tant que comptes. Ces comptes sont détenus par sont représentés par des agents externes du réseau qui incluent chaque utilisateur ordinaire, mineurs, agents automatisés, etc.

Ces comptes sont généralement contrôlés à l'aide d'algorithmes de cryptographie à clé publique comme RSA. L'objectif principal des comptes externes est de servir de moyen pour les utilisateurs d'interagir avec la blockchain Ethereum.

Les comptes contractuels, en revanche, sont un ensemble de codes résidant sur la blockchain à une adresse spécifique. Ces contrats sont invoqués par des comptes externes ou par d'autres contrats via une fonction d'appel à l'action spécifique. Ces contrats sont rédigés dans des langages de script de haut niveau comme Solidity, Serpent ou LLL. Chaque contrat qui réside sur la blockchain ethereum est stocké dans un format spécifique appelé bytecode EVM (Ethereum Virtual Machine) qui est un format binaire spécifique à Ethereum.

Ce sera juste que j'explique EVM maintenant que je vous ai parlé d'EVM-bytecode.

Tutoriel Ethereum: Machine virtuelle Ethereum

Ethereum, de manière rustique, définit un ensemble de protocoles généralisés qui sont devenus les piliers du développement d'applications décentralisées. Au cœur de cela, se trouve la machine virtuelle Ethereum. La figure ci-dessous explique l'architecture:

Architecture Ethereum - Tutoriel Ethereum - Edureka

convertir double en int java

Il est important de noter que la machine virtuelle Ethereum est non seulement complètement en bac à sable, mais également complètement isolée. Cela signifie que le code qui s'exécute actuellement sur l'EVM n'a pas accès au réseau ou au système de fichiers et peut accéder avec parcimonie à d'autres contrats.

Maintenant que nous comprenons le cœur de la plate-forme, examinons de plus près les nœuds du réseau.

Tutoriel Ethereum: Le réseau Ethereum

Le réseau Ethereum est un réseau public de blockchain. Il constitue la base de toutes les applications et organisations peer-to-peer décentralisées exécutées sur le réseau. Le réseau est composé de deux types de nœuds à savoir, des nœuds complets et des nœuds légers.

Nœuds complets contiennent l'historique complet des transactions depuis le bloc de genèse. Ils sont une preuve à part entière de l'intégrité du réseau blockchain. Les nœuds complets doivent contenir chaque transaction qui a été vérifiée selon les règles définies par les spécifications d'Ethereum.

Nœuds légers d'autre part, ne contiennent qu'un sous-ensemble de l'ensemble de la blockchain. Ces types de nœuds sont principalement utilisés dans les portefeuilles électroniques qui doivent être légers par nature et, par conséquent, toute la blockchain ne peut pas être stockée dessus. Ces nœuds, en revanche, ne vérifient pas chaque bloc ou transaction et peuvent ne pas avoir de copie de l'état actuel de la blockchain. Ils s'appuient sur des nœuds complets pour leur fournir les détails manquants (ou manquent simplement de fonctionnalités particulières). L’avantage des nœuds légers est qu’ils peuvent être opérationnels beaucoup plus rapidement, s’exécuter sur des périphériques plus limités en termes de calcul / mémoire et ne consomment pas autant de stockage.

Chaque blockchain publique est associée à une devise. Ethereum n'est pas différent. Examinons de plus près la crypto-monnaie d'Ethereum.

Tutoriel Ethereum: Ether et gaz

Ether est le nom de la crypto-monnaie utilisée pour payer les transactions sur le réseau ethereum. Outre le paiement des transactions et des services généraux, Ether est également utilisé pour acheter du gaz, qui à son tour est utilisé pour payer les calculs au sein de l'EVM.

L'éther est l'unité métrique et a beaucoup de dénominations qui aident à payer avec précision les transactions et le gaz. La plus petite dénomination, une unité de base, est appelée Wei. Les dénominations ainsi que leurs noms spécifiques peuvent être vus dans le tableau ci-dessous:

UnitésValeur WeiWei
wei1 weiun
Kwei1e3 wei1 000
Mwei1e6 wei1 000 000
Tricoter1e9 wei1 000 000 000
microEther1e12 wei1 000 000 000 000
milliEther1e15 wei1 000 000 000 000 000
Éther1e18 wei1,000,000,000,000,000,000

Comme indiqué précédemment, nous savons qu'EVM est responsable de l'exécution du code déployé sur son réseau. Alors, qu'est-ce qui empêche quelqu'un d'exécuter une boucle infinie sur l'EVM et de surcharger complètement sa mémoire? C'est là qu'intervient le concept de gaz.

Le gaz est utilisé comme métrique pour payer les ressources de calcul sur le réseau. Chaque contrat sur le réseau a une quantité maximale de gaz qu'il peut utiliser pour ses calculs. Ceci est connu sous le nom de ' Limite de gaz »Les autres termes associés au gaz sont les suivants:

  • Prix ​​du gaz : C'est le coût du gaz en termes de jetons comme Ether et ses autres dénominations. Pour stabiliser la valeur du gaz, le prix du gaz est une valeur flottante telle que si le coût des jetons ou de la devise fluctue, le prix du gaz change pour conserver la même valeur réelle.
  • Frais de gaz : Il s'agit en fait de la quantité de gaz nécessaire à payer pour exécuter une transaction ou un programme particulier (appelé contrat).

Par conséquent, si quelqu'un essaie d'exécuter un morceau de code qui s'exécute indéfiniment, le contrat dépassera finalement sa limite de gaz et la transaction entière qui a invoqué le contrat sera restaurée à son état précédent.


Maintenant que nous connaissons la devise, examinons le processus qui génère une nouvelle devise.

Tutoriel Ethereum: exploitation minière

Ethereum, tout comme les autres technologies de blockchain publiques, assure la sécurité grâce à un modèle basé sur des incitations. C'est ce qu'on appelle un mécanisme de preuve de travail. La figure ci-dessous montre le fonctionnement de l'extraction d'Ethereum:

D'un point de vue plus technique, l'algorithme de preuve de travail utilisé s'appelle Ethash, qui est un algorithme de hachage inspiré de l'algorithme Dagger-Hashimoto.

Maintenant que nous avons vu l'architecture de travail d'Ethereum et discuté de ses éléments essentiels, voyons un problème du monde réel et l'approche d'Ethereum pour résoudre le même problème.

Tutoriel Ethereum: Cas d'utilisation du financement participatif décentralisé

Énoncé du problème : Une bonne «idée» n’est pas tout dans le monde d’aujourd’hui pour démarrer une entreprise prospère. Beaucoup de financement et d'efforts sont nécessaires pour mettre en œuvre une idée. C'est là que des organisations comme «Kickstarter» entrent en scène. Ils fournissent aux projets la visibilité publique nécessaire aux dons pour leur projet pour le mettre en marche, mais l'architecture centralisée d'un tel motif a ses inconvénients, principalement dans la manière dont les récompenses sont gérées. Puisque l'autorité centralisée prend toutes les décisions, les systèmes sont sujets à des règles telles que:

  • quiconque a manqué la date limite de la campagne ne peut plus entrer
  • tout donateur qui a changé d'avis ne peut pas sortir

Approche :

Nous utilisons une méthodologie décentralisée pour résoudre le problème, comme expliqué dans l'image ci-dessous:

Solution :

Voici le contrat intelligent de solidité pour l'énoncé du problème ci-dessus.

pragma solidity ^ 0.4.16 jeton d'interface {transfert de fonction (destinataire d'adresse, montant uint)} contrat Crowdsale {adresse bénéficiaire public uint financement public Objectif uint montant publicRaised uint date limite publique uint jeton de prix public jeton public mappage de la récompense (adresse => uint256) équilibre publicOf bool financementGoalReached = false bool crowdsaleClosed = false événement GoalReached (destinataire de l'adresse, uint totalAmountRaised) événement FundTransfer (bailleur d'adresse, montant uint, bool isContribution) / ** * Fonction constructeur * * Configurer le propriétaire * / fonction Crowdsale (adresse ifSuccessfulSendTo // l'adresse du propriétaire lorsque le financement est réussi uint financementGoalInEthers // montant cible pour augmenter uint durationInMinutes // temps donné uint etherCostOfEachToken // coût des fonds propres en éther adresse addressOfTokenUsedAsReward // adresse du jeton) {bénéficiaire = ifSuccessfulSendTo financementGoal = financementGoalInEthers now * 1 ether date limite + durationInMinutes * 1 minutes price = etherCostOfEachToken * 1 éther à kenReward = token (addressOfTokenUsedAsReward)} / ** * Fonction de secours * * La fonction sans nom est la fonction par défaut qui est appelée chaque fois que quelqu'un envoie des fonds à un contrat * / function () payable {require (! crowdsaleClosed) uint amount = msg. value balanceOf [msg.sender] + = montant montantRaised + = montant tokenReward.transfer (msg.sender, montant / prix) FundTransfer (msg.sender, montant, true)} modificateur afterDeadline () {if (now = financementGoal) {financementGoalReached = true GoalReached (benefary, amountRaised)} crowdsaleClosed = true} / ** * Retirer les fonds * * Vérifie si l'objectif ou la limite de temps a été atteint, et si oui, et l'objectif de financement a été atteint, * envoie le montant total au bénéficiaire. Si l'objectif n'a pas été atteint, chaque contributeur peut retirer * le montant qu'il a contribué. * / function safeWithdrawal () afterDeadline {if (! financementGoalReached) {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 (financementGoalReached && benefary == msg.sender) {if (benefary.send (amountRaised)) {FundTransfer (bénéficiaire, amountRaised, false)} else {// Si nous ne parvenons pas à envoyer les fonds au bénéficiaire, débloquez le solde du financement des bailleurs de fonds fundReached = false}}}}

Si vous souhaitez apprendre la solidité, consultez notre blog sur , qui est utilisé pour développerpersonnalisécontrats intelligents.

Si vous souhaitez apprendre la blockchain et faire carrière dans les technologies de la blockchain, consultez notre qui vient avec une formation en direct animée par un instructeur et une expérience de projet réelle. Cette formation vous aidera à comprendre la Blockchain en profondeur et vous aidera à maîtriser le sujet.

Vous avez une question pour nous? Veuillez le mentionner dans la section commentaires et nous vous répondrons dans les plus brefs délais.