Ethereum-zelfstudie - Een diepere kijk op Ethereum!



Deze Ethereum-zelfstudie legt Ethereum uit vanuit een architectonisch standpunt en ook hoe het het beste platform vormt voor het bouwen van DAPPS en DAO's.

Ethereum Zelfstudie:

In deze Ethereum Tutorial-blog zal ik de innerlijke werking van ethereum's architectuur uitleggen en ik zal je ook de implementatie van ethereum laten zien door middel van een eenvoudige slim contract .

Ik zie Ethereum als een programmeerbare blockchain die in de toekomst een meerderheid van B2C-ondernemingen zal dienen. Ethereum geeft ontwikkelaars de vrijheid om complexe modellen te maken die op de blockchain kunnen worden uitgevoerd, in plaats van ze te beperken tot vooraf gedefinieerde bewerkingen zoals de Bitcoin blockchain.





Met deze aanpak heeft Ethereum zichzelf veranderd in een platform voor een overvloed aan gedecentraliseerde applicaties en organisaties, waaronder, maar niet beperkt tot, cryptovaluta's.

Ik zal een verscheidenheid aan onderwerpen op een uitputtende manier behandelen tijdens deze ‘Ethereum Tutorial’ blog. Deze onderwerpen zijn onder meer:



U kunt deze opname van Ethereum Tutorial doornemen waar onze instructeurs de onderwerpen op een gedetailleerde manier hebben uitgelegd dat zal u helpen dit concept beter te begrijpen.

Ethereum-zelfstudie | Ethereum slimme contracten | Edureka

Ethereum-zelfstudie: Ethereum-accounts

Het Ethereum-netwerk heeft twee soorten accounts, namelijk:



  • Externe accounts
  • Contractaccounts

Deze accounts, zowel extern als contract, worden 'staatsobjecten' genoemd en vormen de 'toestand' van het ethereum-netwerk. Elk state-object heeft een goed gedefinieerde staat. Voor externe rekeningen omvat de toestand het rekeningsaldo, terwijl voor contractrekeningen de toestand wordt bepaald door de geheugenopslag en het saldo.

Ik noem externe accounts eenvoudigweg accounts. Deze accounts zijn eigendom van worden vertegenwoordigd door externe agenten van het netwerk, waaronder elke gewone gebruiker, mijnwerkers, geautomatiseerde agenten, enz.

Deze accounts worden over het algemeen beheerd met behulp van cryptografische algoritmen met openbare sleutels, zoals RSA. Het belangrijkste doel van externe accounts is om te dienen als een medium voor gebruikers om te communiceren met de Ethereum Blockchain.

Contractaccounts zijn daarentegen een verzameling code die zich op de blockchain op een specifiek adres bevindt. Deze contracten worden ingeroepen door externe accounts of door andere contracten via een specifieke call-to-action-functie. Deze contracten zijn geschreven in scripttalen van hoog niveau, zoals Solidity, Serpent of LLL. Elk contract dat zich op de ethereum-blockchain bevindt, wordt opgeslagen in een specifiek formaat genaamd EVM (Ethereum Virtual Machine) bytecode, wat een ethereum-specifiek binair formaat is.

Het zal alleen maar eerlijk zijn dat ik EVM uitleg nu ik je over EVM-bytecode heb verteld.

Ethereum-zelfstudie: Ethereum virtuele machine

Ethereum definieert op een rustieke manier een reeks algemene protocollen die de pijlers zijn geworden van de ontwikkeling van gedecentraliseerde applicaties. In het hart hiervan ligt de Ethereum Virtual Machine. In onderstaande figuur wordt de architectuur uitgelegd:

Ethereum-architectuur - Ethereum-zelfstudie - Edureka

java wacht en meld voorbeeld

Het is belangrijk op te merken dat de Ethereum Virtual Machine niet alleen volledig sandboxed is, maar ook volledig geïsoleerd. Dit betekent dat de code die momenteel op de EVM draait geen toegang heeft tot het netwerk of het bestandssysteem en spaarzaam toegang heeft tot andere contracten.

Nu we de kern van het platform begrijpen, gaan we dieper in op de netwerkknooppunten.

Ethereum-zelfstudie: het Ethereum-netwerk

Het ethereum-netwerk is een openbaar blockchain-netwerk. Het vormt de basis van alle gedecentraliseerde peer-to-peer-applicaties en organisaties die op het netwerk draaien. Het netwerk bestaat uit twee soorten knooppunten, namelijk volledige knooppunten en lichtgewicht knooppunten.

Volledige knooppunten bevatten de volledige geschiedenis van transacties sinds het ontstaansblok. Ze zijn een volwaardig bewijs van de integriteit van het blockchain-netwerk. Volledige knooppunten moeten elke transactie bevatten die is geverifieerd volgens de regels die zijn opgesteld door de specificaties van Ethereum.

Lichtgewicht knooppunten aan de andere kant bevatten alleen een subset van de volledige blockchain. Dit soort knooppunten worden meestal gebruikt in e-wallets die licht van gewicht moeten zijn en daarom kan de hele blockchain er niet op worden opgeslagen. Deze knooppunten verifiëren daarentegen niet elk blok of elke transactie en hebben mogelijk geen kopie van de huidige blockchain-status. Ze vertrouwen op volledige knooppunten om hen te voorzien van ontbrekende details (of missen simpelweg bepaalde functionaliteit). Het voordeel van lichte knooppunten is dat ze veel sneller aan de slag kunnen, op meer rekenkrachtige / geheugenbeperkte apparaten kunnen werken en lang niet zoveel opslagruimte in beslag nemen.

Aan elke openbare blockchain is een valuta gekoppeld. Ethereum is niet anders. Laten we de cryptocurrency van Ethereum eens nader bekijken.

Ethereum-zelfstudie: ether en gas

Ether is de naam van de cryptovaluta die wordt gebruikt om transacties op het ethereum-netwerk te betalen. Naast het betalen voor algemene transacties en diensten, wordt Ether ook gebruikt om gas te kopen, dat op zijn beurt wordt gebruikt om te betalen voor berekeningen binnen het EVM.

Ether is de metrische eenheid en heeft veel coupures die helpen bij het nauwkeurig betalen voor transacties en gas. De kleinste denominatie, ook wel een basiseenheid genoemd, wordt Wei genoemd. De coupures samen met hun specifieke namen zijn te zien in de onderstaande tabel:

EenhedenWei-waardeWei
wei1 weieen
Kwei1e3 wei1.000
Mwei1e6 wei1.000.000
Brei1e9 wei1.000.000.000
microEther1e12 wei1.000.000.000.000
milliEther1e15 wei1.000.000.000.000.000
Ether1e18 wei1.000.000.000.000.000.000

Zoals eerder besproken, weten we dat EVM verantwoordelijk is voor het uitvoeren van code die op zijn netwerk wordt geïmplementeerd. Dus wat weerhoudt iemand ervan om een ​​oneindige lus op de EVM uit te voeren en zijn geheugen volledig te overbelasten? Dit is waar het concept Gas om de hoek komt kijken.

Gas wordt gebruikt als een maatstaf voor het betalen voor rekenbronnen op het netwerk. Elk contract op het netwerk heeft een bepaalde maximale hoeveelheid gas die het voor zijn berekeningen kan gebruiken. Dit staat bekend als de ' Gaslimiet 'Andere bijbehorende gastermen zijn als volgt:

  • Gasprijs : Dit zijn de kosten van gas in termen van tokens zoals Ether en zijn andere coupures. Om de waarde van gas te stabiliseren, is de gasprijs een zwevende waarde, zodat als de kosten van tokens of valuta fluctueren, de gasprijs verandert om dezelfde werkelijke waarde te behouden.
  • Gasvergoeding : Dit is in feite de hoeveelheid gas die moet worden betaald om een ​​bepaalde transactie of programma uit te voeren (een contract genoemd).

Als iemand dus probeert een stuk code uit te voeren dat voor altijd loopt, zal het contract uiteindelijk de gaslimiet overschrijden en wordt de volledige transactie die het contract opriep, teruggedraaid naar de vorige staat.


Nu we de valuta kennen, gaan we eens kijken naar het proces dat nieuwe valuta genereert.

Ethereum-zelfstudie: mijnbouw

Ethereum zorgt, net als andere openbare blockchain-technologieën, voor beveiliging door middel van een op incentives gebaseerd model. Dit wordt een proof-of-work-mechanisme genoemd. De onderstaande afbeelding laat zien hoe ethereum-mijnbouw werkt:

Vanuit een meer technisch perspectief wordt het gebruikte proof-of-work-algoritme Ethash genoemd, een hash-algoritme dat is geïnspireerd op het Dagger-Hashimoto-algoritme.

Nu we de werkende architectuur van ethereum hebben gezien en de essentiële elementen ervan hebben besproken, laten we eens kijken naar een reëel probleem en de ethereum-benadering om hetzelfde op te lossen.

Ethereum-zelfstudie: gebruiksscenario voor gedecentraliseerde crowdfunding

Probleemstelling : Een goed ‘idee’ is niet alles in de wereld van vandaag om een ​​succesvol bedrijf te starten. Er is veel geld en moeite nodig om een ​​idee te implementeren. Dit is waar organisaties als 'Kickstarter' in beeld komen. Ze bieden projecten de publieke bekendheid die nodig is voor donaties voor hun project om het op gang te krijgen, maar de gecentraliseerde architectuur van zo'n motief heeft zijn nadelen, voornamelijk in de manier waarop met de beloningen wordt omgegaan. Omdat de gecentraliseerde autoriteit alle beslissingen neemt, zijn systemen vatbaar voor regels zoals:

  • wie de deadline voor de campagne heeft gemist, kan niet meer instappen
  • elke donor die van gedachten is veranderd, kan er niet meer uit

Nadering :

We gebruiken een gedecentraliseerde methodologie om het probleem aan te pakken, zoals uitgelegd in de onderstaande afbeelding:

Oplossing :

Hier is het solide slimme contract voor de bovenstaande probleemstelling.

pragma solidity ^ 0.4.16 interface token {functieoverdracht (adres ontvanger, uint bedrag)} contract Crowdsale {adres openbare begunstigde uint openbare financiering Doel uint openbaar bedrag Verhoogd uint openbare deadline uint openbare prijs token openbaar tokenReward mapping (adres => uint256) openbare balansOf bool fundingGoalReached = false bool crowdsaleClosed = false event GoalReached (adres ontvanger, uint totalAmountRaised) event FundTransfer (adres backer, uint bedrag, bool isContribution) / ** * Constrctor functie * * Stel de eigenaar in * / functie Crowdsale (adres ifSuccessfulSendTo // het adres van de eigenaar wanneer de financiering succesvol is uint fundingGoalInEthers // streefbedrag om uint durationInMinutes // gegeven tijd uint etherCostOfEachToken // kosten van eigen vermogen in ether adres addressOfTokenUsedAsReward // token adres) {begunstigde = ifSuccessfulSendTo fundingGoal = fundingGoalInEthers = nu * 1 ether deadline + durationInMinutes * 1 minuten prijs = etherCostOfEachToken * 1 ether to kenReward = token (addressOfTokenUsedAsReward)} / ** * Terugvalfunctie * * De functie zonder naam is de standaardfunctie die wordt aangeroepen wanneer iemand geld naar een contract stuurt * / functie () te betalen {vereis (! crowdsaleClosed) uint bedrag = msg. waarde balanceOf [msg.sender] + = bedrag bedrag ingezameld + = bedrag tokenReward.transfer (msg.sender, bedrag / prijs) FundTransfer (msg.sender, bedrag, true)} modifier afterDeadline () {if (nu = fundingGoal) {fundingGoalReached = true GoalReached (begunstigde, amountRaised)} crowdsaleClosed = true} / ** * Geld opnemen * * Controleert of het doel of de tijdslimiet is bereikt, en zo ja, en het financieringsdoel is bereikt, * stuurt het volledige bedrag aan de begunstigde. Als het doel niet is bereikt, kan elke bijdrager het bedrag dat hij heeft bijgedragen opnemen *. * / function safeWithdrawal () afterDeadline {if (! fundingGoalReached) {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 (fundingGoalReached && begunstigde == msg.sender) {if (begunstigde.send (bedragRaised)) {FundTransfer (begunstigde, amountRaised, false)} else {// Als we het geld niet naar de begunstigde sturen, ontgrendel dan het saldo van de financiering van de financiersGoalReached = false}}}}

Als je geïnteresseerd bent in het leren van degelijkheid, bekijk dan onze blog op , die wordt gebruikt voor het ontwikkelengepersonaliseerdslimme contracten.

Als je Blockchain wilt leren en een carrière in Blockchain Technologies wilt opbouwen, bekijk dan onze die wordt geleverd met live training onder leiding van een instructeur en real-life projectervaring. Deze training zal je helpen Blockchain diepgaand te begrijpen en je te helpen het onderwerp onder de knie te krijgen.

Heeft u een vraag voor ons? Vermeld het in het opmerkingengedeelte en we nemen zo snel mogelijk contact met u op.