Ethereum-handledning - En djupare titt på Ethereum!



Denna Ethereum-handledning förklarar Ethereum ur en arkitektonisk synvinkel och också hur den utgör den största plattformen för att bygga DAPPS och DAO.

Ethereum Handledning:

I denna Ethereum Tutorial-blogg kommer jag att förklara det inre arbetet med ethereums arkitektur och jag kommer också att visa dig implementeringen av ethereum genom en enkel smart kontrakt .

Jag ser Ethereum som en programmerbar blockchain som kommer att tjäna en majoritet av B2C-företag i framtiden. Ethereum ger utvecklare friheten att skapa komplexa modeller som ska köras på blockchain, istället för att begränsa dem till fördefinierade operationer som Bitcoin blockchain.





Med detta tillvägagångssätt har Ethereum förvandlat sig till en plattform för en uppsjö av decentraliserade applikationer och organisationer som inkluderar, men inte är begränsad till kryptovalutor.

Jag kommer att täcka en mängd olika ämnen på ett uttömmande sätt under körningen av denna 'Ethereum Tutorial' -blogg. Dessa ämnen inkluderar:



Du kan gå igenom denna inspelning av Ethereum Tutorial där våra instruktörer har förklarat ämnena på ett detaljerat sätt med som hjälper dig att förstå detta koncept bättre.

Handledning för Ethereum | Ethereum Smart Contracts | Edureka

Ethereum-handledning: Ethereum-konton

Ethereum-nätverket har två typer av konton, nämligen:



  • Externa konton
  • Kontraktskonton

Dessa konton, både externa och kontrakt, kallas 'statliga objekt' och omfattar 'tillståndet' för eterinnätverket. Varje tillståndsobjekt har ett väldefinierat tillstånd. För externa konton består staten av kontosaldot medan för kontokonton definieras tillståndet av minneslagring och saldo.

Jag hänvisar till externa konton helt enkelt som konton. Dessa konton ägs av representeras av externa agenter i nätverket som inkluderar alla vanliga användare, gruvarbetare, automatiserade agenter etc.

Dessa konton kontrolleras i allmänhet med hjälp av krypteringsalgoritmer för allmän nyckel som RSA. Huvudsyftet med externa konton är att fungera som ett medium för användare att interagera med Ethereum Blockchain.

Kontraktskonton är å andra sidan en samling koder som finns på blockchain på en specifik adress. Dessa kontrakt åberopas av externa konton eller av andra kontrakt genom en specifik uppmaningsfunktion. Dessa kontrakt är skrivna på skriptspråk på hög nivå som Solidity, Serpent eller LLL. Varje kontrakt som finns på ethereum blockchain lagras i ett specifikt format som kallas EVM (Ethereum Virtual Machine) bytecode vilket är ett eterospecifikt binärt format.

Det kommer bara att vara rättvist att jag förklarar EVM nu när jag har berättat om EVM-bytecode.

Ethereum-handledning: Ethereum Virtual Machine

Ethereum definierar på ett rustikt sätt en uppsättning generaliserade protokoll som har blivit pelarna i utvecklingen av decentraliserade applikationer. Kärnan i detta ligger den virtuella maskinen Ethereum. Figuren nedan förklarar arkitekturen:

Ethereum Architecture - Ethereum Tutorial - Edureka

vad är oföränderligt objekt i java

Det är viktigt att notera att Ethereum Virtual Machine inte bara är helt sandlådd utan också helt isolerad. Detta innebär att kod som för närvarande körs på EVM inte har tillgång till nätverket eller filsystemet och sparsamt kan komma åt andra kontrakt.

Nu när vi förstår kärnan i plattformen, låt oss ta en djupare titt på nätverksnoderna.

Ethereum-handledning: Ethereum-nätverket

Ethereum-nätverket är ett offentligt blockchain-nätverk. Det utgör grunden för alla decentraliserade peer-to-peer-applikationer och organisationer som körs på nätverket. Nätverket består av två typer av noder, nämligen fulla noder och lättviktsnoder.

Fullständiga noder innehålla hela transaktionshistoriken sedan Genesis-blocket. De är ett fullfjädrat bevis på blockchain-nätverkets integritet. Fullständiga noder måste innehålla varje transaktion som har verifierats enligt de regler som anges i Ethereums specifikationer.

Lätta noder å andra sidan innehåller endast en delmängd av hela blockchain. Dessa typer av noder används oftast i e-plånböcker som måste vara lätta i naturen och därför kan inte hela blockkedjan lagras på dem. Dessa noder, däremot, verifierar inte varje block eller transaktion och kanske inte har en kopia av det aktuella blockchain-tillståndet. De förlitar sig på fullständiga noder för att förse dem med saknade detaljer (eller helt enkelt saknar särskild funktionalitet). Fördelen med ljusnoder är att de kan komma igång mycket snabbare, kan köras på mer beräknings- / minnesbegränsade enheter och inte äter upp nästan lika mycket lagringsutrymme.

Varje offentlig blockchain har en valuta kopplad till sig. Ethereum är inte annorlunda. Låt oss ta en djupare titt på Ethereums kryptovaluta.

Ethereums handledning: eter och gas

Ether är namnet på den kryptovaluta som används för att betala för transaktioner i eterinnätverket. Förutom att betala för allmänna transaktioner och tjänster används Ether också för att köpa gas, som i sin tur används för att betala för beräkning inom EVM.

Ether är den metriska enheten och har många valörer som hjälper dig att betala exakt för transaktioner och gas. Den minsta beteckningen a.k.a basenhet heter Wei. Valörerna tillsammans med deras specifika namn kan ses i tabellen nedan:

EnheterWei värdeWei
wei1 weiett
Kwei1e3 wei1000
Mwei1e6 wei1 000 000
Sticka1e9 wei1.000.000.000
microEther1e12 wei1.000.000.000.000
milliEther1e15 wei1.000.000.000.000.000
Eter1e18 wei1.000.000.000.000.000.000

Som diskuterats tidigare vet vi att EVM ansvarar för att köra kod som distribueras i sitt nätverk. Så vad hindrar någon från att köra en oändlig slinga på EVM och överbelasta minnet helt? Det är här begreppet gas kommer in.

Gas används som ett mått för att betala för beräkningsresurser i nätverket. Varje kontrakt i nätverket har en bestämd maximal mängd gas som den kan använda för sina beräkningar. Detta kallas ' Gasgräns ”Andra tillhörande gastermer är följande:

  • Gaspris : Detta är kostnaden för gas i termer av polletter som Ether och dess andra valörer. För att stabilisera gasvärdet är gaspriset ett flytande värde så att om kostnaden för polletter eller valuta fluktuerar, ändras gaspriset för att hålla samma verkliga värde.
  • Gasavgift : Detta är faktiskt mängden gas som behövs för att genomföra en viss transaktion eller ett visst program (kallas ett kontrakt).

Följaktligen, om någon försöker köra en kod som går för evigt, kommer kontraktet så småningom att överskrida sin gasgräns och hela transaktionen som åberopade kontraktet kommer att rullas tillbaka till dess tidigare tillstånd.


Nu när vi vet om valutan, låt oss ta en titt på processen som genererar ny valuta.

Ethereums handledning: Gruvdrift

Ethereum, precis som andra offentliga blockchain-tekniker, säkerställer säkerhet genom en incitamentsbaserad modell. Detta kallas en proof-of-work-mekanism. Figuren nedan visar hur eterumbrytning fungerar:

Ur ett mer tekniskt perspektiv kallas proof-of-work-algoritmen Ethash, vilket är en hashingalgoritm inspirerad av Alggeritmen Dagger-Hashimoto.

Nu när vi har sett eterums arbetsarkitektur och diskuterat det är väsentliga element, låt oss se ett verkligt problem och eterummetoden för att lösa detsamma.

Ethereum-handledning: Decentraliserat användningsfall för publikfinansiering

Problemförklaring : En bra idé är inte allt i dagens värld för att starta ett framgångsrikt företag. Mycket finansiering och ansträngningar behövs för att genomföra en idé. Det är här organisationer som ”Kickstarter” kommer in i bilden. De ger projekt den offentliga exponering som behövs för donationer till sitt projekt för att få det igång, men den centrala arkitekturen för ett sådant motiv har sina nackdelar, främst i hur belöningarna hanteras. Eftersom den centraliserade myndigheten fattar alla beslut är systemen benägna att regler som:

  • alla som missade tidsfristen för kampanjen kan inte komma in mer
  • alla givare som ändrade sig kan inte komma ut

Närma sig :

Vi tar en decentraliserad metod för att ta itu med problemet som förklaras i bilden nedan:

Lösning :

Här är soliditetskontraktet för ovanstående problemförklaring.

pragma soliditet ^ 0.4.16 gränssnitttoken {funktionsöverföring (adressmottagare, uint belopp)} kontrakt Crowdsale {adress offentligt stödmottagare uint offentlig finansieringMål uint offentligt belopp Upphöjt uint offentligt deadline uint offentligt pris token offentligt token Belöningskartläggning (adress => uint256) offentligt saldo Av bool fundingGoalReached = falsk bool crowdsaleClosed = falsk händelse GoalReached (adressmottagare, uint totalAmountRaised) händelse FundTransfer (adressbacker, uint belopp, bool isContribution) / ** * Constrctor-funktion * * Ställ in ägaren * / funktionen Crowdsale (adress ifSuccessfulSendTo // adressen av ägaren när finansieringen är framgångsrik uint fundingGoalInEthers // målbelopp för att höja uint-varaktighetenInMinutes // given tid uint etherCostOfEachToken // cost of equity in eter address addressOfTokenUsedAsReward // token address) {beneficiary = ifSuccessfulSendTo fundingGoal = fundingGoalInEthers * 1 ether nu + durationInMinutes * 1 minuts pris = eterCostOfEachToken * 1 eter till kenReward = token (addressOfTokenUsedAsReward)} / ** * Fallback-funktion * * Funktionen utan namn är standardfunktionen som anropas när någon skickar medel till ett kontrakt * / funktion () som ska betalas {kräver (! crowdsaleClosed) uint belopp = msg. värdebalans Av [msg.sender] + = beloppbeloppRaised + = belopp tokenReward.transfer (msg.sender, belopp / pris) FundTransfer (msg.sender, amount, true)} modifierare efterDeadline () {if (now = fundingGoal) {fundingGoalReached = true GoalReached (beneficiary, amountRaised)} crowdsaleClosed = true} / ** * Ta ut pengarna * * Kontrollerar om målet eller tidsgränsen har uppnåtts, och i så fall och finansieringsmålet har uppnåtts, * skickar hela beloppet till stödmottagaren. Om målet inte nåddes kan varje bidragsgivare ta ut * det belopp de bidrog. * / 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 (beneficiary, amountRaised, false)} annat {// Om vi ​​inte skickar medlen till mottagaren, lås upp finansieringsbalansfinansieringGoalReached = false}}}}

Om du är intresserad av att lära dig soliditet, kolla in vår blogg på , som används för att utvecklapersonligsmarta kontrakt.

Om du vill lära dig Blockchain och bygga en karriär inom Blockchain Technologies, kolla in vår som kommer med instruktörsledad liveutbildning och verklig projektupplevelse. Den här utbildningen hjälper dig att förstå Blockchain på djupet och hjälper dig att behärska ämnet.

Har du en fråga till oss? Vänligen nämna det i kommentarfältet så återkommer vi så snart som möjligt.