Tutorial su Ethereum - Uno sguardo più approfondito a Ethereum!



Questo tutorial di Ethereum spiega Ethereum da un punto di vista architettonico e anche come costituisce la più grande piattaforma per la creazione di DAPPS e DAO.

Ethereum Tutorial:

In questo blog Tutorial di Ethereum, spiegherò il funzionamento interno dell'architettura di Ethereum e ti mostrerò anche l'implementazione di Ethereum attraverso un semplice contratto intelligente .

Vedo Ethereum come una blockchain programmabile che servirà la maggior parte delle aziende B2C in futuro. Ethereum garantisce agli sviluppatori la libertà di creare modelli complessi da eseguire sulla blockchain, invece di limitarli a operazioni predefinite come la blockchain di Bitcoin.





Con questo approccio, Ethereum si è trasformato in una piattaforma per una pletora di applicazioni e organizzazioni decentralizzate che include, ma non si limita, alle criptovalute.

Tratterò una varietà di argomenti in modo esaustivo durante l'esecuzione di questo blog 'Tutorial di Ethereum'. Questi argomenti includono:



Puoi passare attraverso questa registrazione del tutorial di Ethereum in cui i nostri istruttori hanno spiegato gli argomenti in modo dettagliato con questo ti aiuterà a capire meglio questo concetto.

Tutorial su Ethereum | Contratti intelligenti Ethereum | Edureka

Tutorial su Ethereum: account Ethereum

La rete Ethereum ha due tipi di account, vale a dire:



  • Account esterni
  • Conti contrattuali

Questi account, sia esterni che contrattuali, sono indicati come 'oggetti di stato' e comprendono lo 'stato' della rete ethereum. Ogni oggetto di stato ha uno stato ben definito. Per i conti esterni, lo stato comprende il saldo del conto mentre per i conti dei contratti lo stato è definito dalla memoria e dal saldo.

Mi riferirò agli account esterni semplicemente come account. Questi account sono di proprietà di sono rappresentati da agenti esterni della rete che includono ogni utente ordinario, minatori, agenti automatici, ecc.

Questi account sono generalmente controllati con l'aiuto di algoritmi di crittografia a chiave pubblica come RSA. Lo scopo principale degli account esterni è quello di servire come mezzo per consentire agli utenti di interagire con Ethereum Blockchain.

Gli account del contratto, d'altra parte, sono una raccolta di codice che risiede sulla blockchain a un indirizzo specifico. Questi contratti vengono richiamati da account esterni o da altri contratti tramite una specifica funzione di invito all'azione. Questi contratti sono scritti in linguaggi di scripting di alto livello come Solidity, Serpent o LLL. Ogni contratto che risiede sulla blockchain di Ethereum è memorizzato in un formato specifico chiamato bytecode EVM (Ethereum Virtual Machine) che è un formato binario specifico di Ethereum.

Sarà giusto che ti spieghi EVM ora che ti ho parlato di EVM-bytecode.

Tutorial su Ethereum: macchina virtuale Ethereum

Ethereum, in modo rustico, definisce un insieme di protocolli generalizzati che sono diventati i pilastri dello sviluppo di applicazioni decentralizzate. Al centro di tutto c'è la macchina virtuale Ethereum. La figura seguente spiega l'architettura:

Ethereum Architecture - Tutorial Ethereum - Edureka

def __init__

È importante notare che la macchina virtuale Ethereum non è solo completamente sandbox, ma anche completamente isolata. Ciò significa che il codice attualmente in esecuzione sull'EVM non ha accesso alla rete o al file system e può accedere con parsimonia ad altri contratti.

Ora che abbiamo compreso il nucleo della piattaforma, diamo uno sguardo più approfondito ai nodi di rete.

Tutorial su Ethereum: la rete Ethereum

La rete Ethereum è una rete blockchain pubblica. Costituisce la base di tutte le applicazioni e organizzazioni peer-to-peer decentralizzate eseguite sulla rete. La rete è composta da due tipi di nodi, vale a dire nodi completi e nodi leggeri.

Nodi completi contenere l'intera storia delle transazioni dal blocco genesi. Sono una prova a tutti gli effetti dell'integrità della rete blockchain. I nodi completi devono contenere ogni singola transazione verificata secondo le regole stabilite dalle specifiche di Ethereum.

Nodi leggeri d'altra parte contengono solo un sottoinsieme dell'intera blockchain. Questi tipi di nodi sono utilizzati principalmente nei portafogli elettronici che devono essere di natura leggera e quindi l'intera blockchain non può essere archiviata su di essi. Questi nodi, al contrario, non verificano ogni blocco o transazione e potrebbero non avere una copia dello stato corrente della blockchain. Si affidano a nodi completi per fornire loro i dettagli mancanti (o semplicemente mancano di funzionalità particolari). Il vantaggio dei nodi leggeri è che possono essere operativi molto più rapidamente, possono essere eseguiti su dispositivi con limitazioni di memoria / di calcolo e non consumano quasi lo stesso spazio di archiviazione.

Ogni blockchain pubblica ha una valuta collegata. Ethereum non è diverso. Diamo uno sguardo più approfondito alla criptovaluta di Ethereum.

Tutorial su Ethereum: etere e gas

Ether è il nome della criptovaluta utilizzata per pagare le transazioni sulla rete Ethereum. Oltre a pagare per transazioni e servizi generali, Ether viene utilizzato anche per acquistare Gas, che a sua volta viene utilizzato per pagare i calcoli all'interno dell'EVM.

L'etere è l'unità metrica e ha molti tagli che aiutano a pagare con precisione le transazioni e il gas. La denominazione più piccola, nota anche come unità di base, si chiama Wei. Le denominazioni insieme ai loro nomi specifici possono essere visualizzate nella tabella seguente:

UnitàValore WeiWei
wei1 weiuno
Kwei1e3 wei1.000
Mwei1e6 wei1.000.000
Knit1e9 wei1.000.000.000
microEther1e12 wei1.000.000.000.000
milliEther1e15 wei1.000.000.000.000.000
Etere1e18 wei1.000.000.000.000.000.000

Come discusso in precedenza, sappiamo che EVM è responsabile dell'esecuzione del codice distribuito sulla sua rete. Allora cosa impedisce a qualcuno di eseguire un ciclo infinito sull'EVM e di sovraccaricare completamente la sua memoria? È qui che entra in gioco il concetto di gas.

Il gas viene utilizzato come metrica per il pagamento delle risorse di calcolo sulla rete. Ogni contratto sulla rete ha una quantità massima di gas che può essere utilizzata per i suoi calcoli. Questo è noto come ' Limite di gas 'Altri termini relativi ai gas associati sono i seguenti:

  • Prezzo del gas : Questo è il costo del gas in termini di gettoni come Ether e le sue altre denominazioni. Per stabilizzare il valore del gas, il prezzo del gas è un valore fluttuante tale che se il costo dei gettoni o della valuta fluttua, il prezzo del gas cambia per mantenere lo stesso valore reale.
  • Costo del gas : Questa è effettivamente la quantità di gas necessaria per eseguire una particolare transazione o programma (chiamato contratto).

Quindi, se qualcuno cerca di eseguire un pezzo di codice che viene eseguito per sempre, il contratto alla fine supererà il suo limite di gas e l'intera transazione che ha invocato il contratto verrà riportata al suo stato precedente.


Ora che sappiamo della valuta, diamo un'occhiata al processo che genera nuova valuta.

Tutorial di Ethereum: mining

Ethereum, proprio come altre tecnologie blockchain pubbliche, garantisce la sicurezza attraverso un modello basato sugli incentivi. Questo è chiamato meccanismo di prova del lavoro. La figura seguente mostra come funziona il mining di Ethereum:

Da una prospettiva più tecnica, l'algoritmo di prova del lavoro utilizzato è chiamato Ethash, che è un algoritmo di hashing ispirato all'algoritmo Dagger-Hashimoto.

Ora che abbiamo visto l'architettura funzionante di Ethereum e ne abbiamo discusso gli elementi essenziali, vediamo un problema del mondo reale e l'approccio di Ethereum per risolverlo.

Tutorial su Ethereum: caso di utilizzo decentralizzato del crowdfunding

Dichiarazione problema : Una buona 'idea' non è tutto nel mondo di oggi per avviare un'attività di successo. Sono necessari molti fondi e sforzi per realizzare un'idea. È qui che entrano in gioco organizzazioni come 'Kickstarter'. Forniscono ai progetti l'esposizione pubblica necessaria per le donazioni al loro progetto per farlo funzionare, ma l'architettura centralizzata di tale motivo ha i suoi svantaggi, principalmente nel modo in cui vengono gestite le ricompense. Poiché l'autorità centralizzata prende tutte le decisioni, i sistemi sono soggetti a regole come:

  • chi ha mancato la scadenza della campagna non può più entrare
  • qualsiasi donatore che ha cambiato idea non può uscirne

Approccio :

Adottiamo una metodologia decentralizzata per affrontare il problema, come spiegato nella figura seguente:

Soluzione :

Ecco il contratto intelligente di solidità per la dichiarazione del problema di cui sopra.

pragma solidity ^ 0.4.16 interface token {function transfer (address receiver, uint amount)} contract Crowdsale {address public beneficiary uint public fundingGoal uint public amountRaised uint public deadline uint public price token public tokenReward mapping (address => uint256) public balanceOf bool fundingGoalReached = false bool crowdsaleClosed = false event GoalReached (address recipient, uint totalAmountRaised) event FundTransfer (address backer, uint amount, bool isContribution) / ** * Constrctor function * * Imposta il proprietario * / funzione Crowdsale (address ifSuccessfulSendTo // the address del proprietario quando il finanziamento ha esito positivo uint fundingGoalInEthers // importo target per aumentare la durata uintInMinutes // tempo dato uint etherCostOfEachToken // costo del capitale in ether address addressOfTokenUsedAsReward // token address) {beneficiary = ifSuccessfulSendTo fundingGoal = nowGoalInEthers = 1 ether + durationInMinutes * 1 minuti price = etherCostOfEachToken * 1 ether to kenReward = token (addressOfTokenUsedAsReward)} / ** * Funzione di fallback * * La funzione senza nome è la funzione predefinita che viene chiamata ogni volta che qualcuno invia fondi a un contratto * / 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)} modificatore afterDeadline () {if (now = fundingGoal) {fundingGoalReached = true GoalReached (beneficiary, amountRaised)} crowdsaleClosed = true} / ** * Preleva i fondi * * Controlla se l'obiettivo o il limite di tempo è stato raggiunto e, in tal caso, e l'obiettivo di finanziamento è stato raggiunto, * invia l'intero importo al beneficiario. Se l'obiettivo non è stato raggiunto, ogni collaboratore può ritirare * l'importo che ha contribuito. * / 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)} else {// Se non inviamo i fondi al beneficiario, sblocca il finanziamento del saldo dei finanziatoriGoalReached = false}}}}

Se sei interessato a imparare la solidità, dai un'occhiata al nostro blog su , che viene utilizzato per lo sviluppopersonalizzatocontratti intelligenti.

Se desideri imparare Blockchain e costruire una carriera nelle tecnologie Blockchain, dai un'occhiata al nostro che viene fornito con formazione dal vivo con istruttore e esperienza di progetto nella vita reale. Questa formazione ti aiuterà a comprendere la Blockchain in profondità e ti aiuterà a raggiungere la padronanza dell'argomento.

Hai domande per noi? Si prega di menzionarlo nella sezione commenti e ti risponderemo il prima possibile.