Ethereum-tutorial - Et dybere kig på Ethereum!



Denne Ethereum-tutorial forklarer Ethereum fra et arkitektonisk synspunkt, og også hvordan det udgør den største platform til opbygning af DAPPS og DAO'er.

Ethereum Vejledning:

I denne Ethereum-selvstudieblog vil jeg forklare det indre arbejde med ethereums arkitektur, og jeg vil også vise dig implementeringen af ​​ethereum gennem en simpel smart kontrakt .

Jeg ser Ethereum som en programmerbar blockchain, der vil tjene et flertal af B2C-virksomheder i fremtiden. Ethereum giver udviklere friheden til at oprette komplekse modeller, der skal udføres på blockchain, i stedet for at begrænse dem til foruddefinerede operationer som Bitcoin blockchain.





Med denne tilgang har Ethereum forvandlet sig til en platform for en overflod af decentrale applikationer og organisationer, der inkluderer, men ikke er begrænset til kryptovalutaer.

Jeg vil dække en række emner på en udtømmende måde gennem løbet af denne 'Ethereum Tutorial' -blog. Disse emner inkluderer:



Du kan muligvis gennemgå denne optagelse af Ethereum Tutorial, hvor vores instruktører har forklaret emnerne detaljeret med det vil hjælpe dig med at forstå dette koncept bedre.

Ethereum-vejledning | Ethereum-smarte kontrakter | Edureka

Ethereum-tutorial: Ethereum-konti

Ethereum-netværket har to typer konti, nemlig:



  • Eksterne konti
  • Kontraktskonti

Disse konti, både eksterne og kontrakter, omtales som 'statsobjekter' og omfatter 'tilstanden' for ethereumnetværket. Hvert statsobjekt har en veldefineret tilstand. For eksterne konti består staten af ​​kontosaldoen, mens tilstanden for kontraktkonti er defineret af hukommelseslageret og saldoen.

Jeg vil bare henvise til eksterne konti som konti. Disse konti ejes af er repræsenteret af eksterne agenter på netværket, der inkluderer hver almindelig bruger, minearbejdere, automatiserede agenter osv.

Disse konti styres generelt ved hjælp af offentlige nøglekryptografialgoritmer som RSA. Hovedformålet med eksterne konti er at tjene som et medium for brugere til at interagere med Ethereum Blockchain.

Kontraktskonti er derimod en samling af kode, der findes i blockchain på en bestemt adresse. Disse kontrakter påkaldes af eksterne konti eller af andre kontrakter gennem en bestemt funktion til opfordring til handling. Disse kontrakter er skrevet på scripting-sprog på højt niveau som Solidity, Serpent eller LLL. Hver kontrakt, der findes på ethereum blockchain, gemmes i et specifikt format kaldet EVM (Ethereum Virtual Machine) bytecode, som er et etereumspecifikt binært format.

Det vil kun være fair, at jeg forklarer EVM nu, hvor jeg har fortalt dig om EVM-bytecode.

Ethereum Tutorial: Ethereum Virtual Machine

Ethereum definerer på en rustik måde et sæt generaliserede protokoller, der er blevet søjlerne i udviklingen af ​​decentrale applikationer. Kernen i dette ligger Ethereum Virtual Machine. Figuren nedenfor forklarer arkitekturen:

Ethereum Architecture - Ethereum Tutorial - Edureka

java vent og underret eksempel

Det er vigtigt at bemærke, at Ethereum Virtual Machine ikke kun er sandkasse, men også fuldstændig isoleret. Dette betyder, at kode, der i øjeblikket kører på EVM, ikke har adgang til netværket eller filsystemet og sparsomt kan få adgang til andre kontrakter.

Nu hvor vi forstår kernen i platformen, skal vi se nærmere på netværksknudepunkterne.

Ethereum-tutorial: Ethereum-netværket

Ethereum-netværket er et offentligt blockchain-netværk. Det danner grundlaget for alle decentrale peer-to-peer-applikationer og organisationer, der kører på netværket. Netværket består af to typer noder, nemlig fulde noder og letvægtsnoder.

Fuld noder indeholder hele transaktionshistorikken siden oprindelsesblokken. De er et fuldgyldigt bevis for integriteten af ​​blockchain-netværket. Fuld noder skal indeholde hver eneste transaktion, der er verificeret i henhold til reglerne, der er oprettet i Ethereums specifikationer.

Letvægtsnoder på den anden side indeholder kun en delmængde af hele blockchain. Disse typer noder bruges mest i e-tegnebøger, der skal være lette i naturen, og derfor kan hele blockchain ikke lagres på dem. Disse noder verificerer derimod ikke hver blok eller transaktion og har muligvis ikke en kopi af den aktuelle blockchain-tilstand. De stoler på fulde noder for at give dem manglende detaljer (eller simpelthen mangler særlig funktionalitet). Fordelen ved lysnoder er, at de kan komme i gang meget hurtigere, kan køre på mere beregningsmæssigt / hukommelsesbegrænsede enheder og ikke spiser næsten lige så meget lagerplads.

Hver offentlig blockchain har en valuta tilknyttet. Ethereum er ikke anderledes. Lad os se nærmere på Ethereums kryptovaluta.

Ethereum-tutorial: Ether og gas

Ether er navnet på den krypto-valuta, der bruges til at betale for transaktioner på ethereum-netværket. Bortset fra at betale for generelle transaktioner og tjenester, bruges Ether også til at købe gas, som igen bruges til at betale for beregning inden for EVM.

Ether er den metriske enhed og har mange pålydende værdier, der hjælper nøjagtigt med at betale for transaktioner og gas. Den mindste pålydende aka base enhed kaldes Wei. Valørerne sammen med deres specifikke navne kan ses i nedenstående tabel:

EnhederWei værdiWei
wei1 weien
Kwei1e3 wei1.000
Mwei1e6 wei1.000.000
Strikke1e9 wei1.000.000.000
microEther1e12 wei1.000.000.000.000
milliEther1e15 wei1.000.000.000.000.000
Æter1e18 wei1.000.000.000.000.000.000.000

Som tidligere diskuteret ved vi, at EVM er ansvarlig for at køre kode, der er implementeret på sit netværk. Så hvad forhindrer nogen i at køre en uendelig løkke på EVM'en og overbelaste hukommelsen fuldstændigt? Det er her begrebet gas kommer ind.

Gas bruges som en måling for at betale for beregningsressourcer på netværket. Hver kontrakt på netværket har en bestemt maksimal mængde gas, som den kan bruge til sine beregninger. Dette er kendt som “ Gasgrænse ”Andre tilknyttede gasudtryk er som følger:

  • Gaspris : Dette er prisen på gas i form af poletter som Ether og dets andre pålydende værdier. For at stabilisere gasens værdi er gasprisen en flydende værdi, således at hvis prisen på tokens eller valuta svinger, ændres gasprisen for at holde den samme reelle værdi.
  • Gasafgift : Dette er faktisk den mængde gas, der skal betales for at køre en bestemt transaktion eller et bestemt program (kaldet en kontrakt).

Derfor, hvis nogen forsøger at køre et stykke kode, der løber for evigt, vil kontrakten i sidste ende overskride dens gasgrænse, og hele transaktionen, der påberåbte sig kontrakten, rulles tilbage til sin tidligere tilstand.


Nu hvor vi ved om valutaen, skal vi se på den proces, der genererer ny valuta.

Ethereum-vejledning: Minedrift

Ethereum, ligesom andre offentlige blockchain-teknologier, sikrer sikkerhed gennem en incitamentsbaseret model. Dette kaldes en proof-of-work-mekanisme. Figuren nedenfor viser, hvordan etherumminedrift fungerer:

Fra et mere teknisk perspektiv kaldes proof-of-work-algoritmen Ethash, som er en hashing-algoritme inspireret af Dagger-Hashimoto-algoritmen.

Nu hvor vi har set etherums arbejdsarkitektur og diskuteret de væsentlige elementer, lad os se et problem i den virkelige verden og etherummetoden for at løse det samme.

Ethereum Tutorial: Decentraliseret Crowd Funding Use Case

Problemformulering : En god 'idé' er ikke alt i dagens verden for at starte en succesrig virksomhed. Der er brug for en masse finansiering og indsats for at implementere en idé. Det er her organisationer som “Kickstarter” kommer ind i billedet. De giver projekter den offentlige eksponering, der er nødvendig for donationer til deres projekt for at få det til at køre, men den centraliserede arkitektur af et sådant motiv har sine ulemper, hovedsageligt i den måde, belønningerne håndteres på. Da den centraliserede myndighed træffer alle beslutninger, er systemer tilbøjelige til regler som:

  • enhver, der gik glip af deadline for kampagnen, kan ikke komme længere
  • enhver donor, der ombestemte sig, kan ikke komme ud

Nærme sig :

Vi tager en decentral metode til at løse problemet som forklaret i nedenstående billede:

Løsning :

Her er soliditetskontrakten for ovenstående problemangivelse.

pragma soliditet ^ 0.4.16 interface token {funktionsoverførsel (adressemodtager, uint beløb)} kontrakt Crowdsale {adresse offentlig modtager uint offentlig finansieringMål uint offentligt beløbHævet uint offentlig deadline uint offentligt pris token offentligt tokenBelønningskortlægning (adresse => uint256) offentlig balanceFor bool fundingGoalReached = falsk bool crowddsale Closed = falsk begivenhed GoalReached (adressemodtager, uint totalAmountRaised) begivenhed FundTransfer (adresseunderstøtter, uint beløb, bool isContribution) / ** * Constrctor-funktion * * Opsæt ejeren * / funktion Crowdsale (adresse ifSuccessfulSendTo // adressen af ejeren, når finansieringen er vellykket uint-finansieringGoalInEthers // målbeløb for at hæve uint-varighedInMinutter // given tid uint etherCostOfEachToken // omkostninger ved egenkapital i ether-adresse adresseOfTokenUsedAsReward // token-adresse) {beneficiary = ifSuccessfulSendTo fundingGoal = fundingGoalInEthers * 1 ether nu 1 ether + durationInMinutes * 1 minuts pris = etherCostOfEachToken * 1 ether til kenReward = token (addressOfTokenUsedAsReward)} / ** * Tilbagefaldsfunktion * * Funktionen uden navn er standardfunktionen, der kaldes, når nogen sender penge til en kontrakt * / funktion (), der skal betales {kræve (! crowdsaleClosed) uint beløb = msg. værdi balanceOf [msg.sender] + = beløb beløbRaised + = beløb tokenReward.transfer (msg.sender, beløb / pris) FundTransfer (msg.sender, beløb, sandt)} modifikator efterDeadline () {if (now = fundingGoal) {fundingGoalReached = true GoalReached (modtager, beløbRaised)} crowdsaleClosed = true} / ** * Træk midlerne * * Kontrollerer for at se, om mål eller tidsfrist er nået, og hvis ja, og finansieringsmålet blev nået, * sender hele beløbet til modtageren. Hvis målet ikke blev nået, kan hver bidragsyder trække * det beløb, de har bidraget med. * / 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 && beneficiary == msg.sender) {if (beneficiary.send (amountRaised)) {FundTransfer (begunstiget, amountRaised, false)} andet {// Hvis vi ikke sender pengene til modtageren, skal du låse op for finansieringsbalancens balanceGoalReached = false}}}

Hvis du er interesseret i at lære soliditet, skal du tjekke vores blog på , som bruges til udviklingpersonligsmarte kontrakter.

Hvis du ønsker at lære Blockchain og opbygge en karriere inden for Blockchain Technologies, så tjek vores som kommer med instruktørstyret live træning og projektoplevelse i det virkelige liv. Denne træning hjælper dig med at forstå Blockchain i dybden og hjælper dig med at opnå mestring over emnet.

Har du et spørgsmål til os? Nævn det i kommentarfeltet og vi vender tilbage til dig hurtigst muligt.