Vai al contenuto principale

Aiuta ad aggiornare questa pagina

🌏

C'è una nuova versione di questa pagina, ma al momento è solo in inglese. Aiutaci a tradurre l'ultima versione.

Traduci la pagina
Visualizza in inglese

Nessun bug qui!🐛

Questa pagina non è stata tradotta. Per il momento, è stata intenzionalmente lasciata in inglese.

Conti di Ethereum

Ultima modifica: , Invalid DateTime
Modifica la pagina

Un conto di Ethereum è un'entità con un saldo in ether (ETH) che può inviare transazioni su Ethereum. I conti sono controllabili da utenti o distribuibili come Contratti Intelligenti.

Prerequisiti

I conti sono un argomento piuttosto basilare. Ma per meglio comprendere questa pagina, ti consigliamo innanzi tutto di leggere la nostra introduzione a Ethereum.

Tipi di conto

Ethereum ha due tipi di conto:

  • Di proprietà esterna: controllato da chiunque possieda le chiavi private
  • Contratto: un Contratto Intelligente distribuito in rete, controllato dal codice. Scopri di più sugli Smart Contract

Entrambi i tipi di conto hanno l'abilità di:

  • Ricevere, conservare e inviare ETH e token
  • Interagire con i contratti intelligenti distribuiti

Differenze fondamentali

Posseduti esternamente

  • Creare un conto non costa nulla
  • Può avviare transazioni
  • Le transazioni tra account esterni possono riguardare unicamente trasferimenti di ETH/token

Contratto

  • Creare un contratto ha un costo, poiché l'utente utilizza l'archiviazione di rete
  • Può inviare transazioni solo in risposta alla ricezione di una transazione
  • Le transazioni da un account esterno a un account basato su un contratto possono innescare un codice che può eseguire le azioni più svariate, come il trasferimento di token o persino la creazione di un nuovo contratto

Esaminando un conto

I conti di Ethereum hanno quattro campi:

  • nonce: un contatore che indica il numero di transazioni inviate dal conto. Questo assicura che le transazioni siano elaborate una volta. In un account basato su contratto, questo numero rappresenta il numero di contratti creati dall'account.
  • balance: il numero di wei posseduti da questo indirizzo. Wei è una denominazione di ETH e ci sono 1e+18 wei per ETH.
  • codeHash: questo hash si riferisce al codice di un account sulla Macchina virtuale Ethereum (EVM). Gli account basati su contratto contengono frammenti di codice programmati per eseguire diverse operazioni. Questo codice EVM viene eseguito se l'account riceve una chiamata di messaggio. Non è modificabile, a differenza degli altri campi dell'account. Tutti i frammenti di codice sono conservati nel database di stato sotto gli hash corrispondenti, per riferimento futuro. Questo valore dell'hash è noto come un codeHash. Per gli account esterni, il campo del codeHarsh è l'hash di una stringa vuota.
  • storageRoot: detto anche hash di archiviazione. Hash a 256 bit del nodo radice di un trie di Merkle Patricia che codifica il contenuto dello spazio di archiviazione dell'account (una mappatura tra valori interi a 256 bit), codificato nel trie come mappatura tra l'hash di Keccak a 256 bit delle chiavi intere a 256 bit e i valori interi codificati in RLP a 256 bit. Questo trie codifica l'hash dei contenuti d'archiviazione di questo account ed è vuoto di default.

Un diagramma mostra la composizione di un conto Diagramma adattato da Ethereum EVM illustrato

I conti posseduti esternamente e le coppie di chiavi

Un conto è composto da una coppia di chiavi crittografiche: pubblica e privata. Aiutano a provare che una transazione è stata realmente firmata dal mittente e prevenire le falsificazioni. La tua chiave privata è ciò che usi per firmare le transazioni, quindi ti concede la custodia dei fondi associati al tuo conto. Non possiedi mai realmente le criptovalute, possiedi le chiavi private; i fondi sono sempre nel registro mastro di Ethereum.

Questo impedisce ai malintenzionati di trasmettere false transazioni perché puoi sempre verificare il mittente di una transazione.

Se Alice vuole inviare ether dal proprio conto a quello di Bob, Alice deve creare una richiesta di transazione e inviarla alla rete per la verifica. L'uso di Ethereum della crittografia a chiave pubblica assicura che Alice possa provare che abbia originariamente avviato la richiesta di transazione. Senza i meccanismi crittografici, un utente malintenzionato "Eve" potrebbe semplicemente trasmettere pubblicamente una richiesta che somiglia a qualcosa del tipo "invia 5 ETH dal conto di Alice a quello di Eve" e nessuno potrebbe verificare che non fosse provenuto da Alice.

Creazione del conto

Quando vuoi creare un conto, gran parte delle librerie genererà una chiave privata casuale.

Una chiave privata si compone di 64 caratteri hex ed è codificabile con una password.

Esempio:

fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd036415f

La chiave pubblica è generata dalla chiave privata usando Elliptic Curve Digital Signature Algorithm. Puoi ottenere un indirizzo pubblico per il tuo account impiegando gli ultimi 20 byte dell'hash Keccak-256 della chiave pubblica e aggiungendo 0x all'inizio.

Ecco un esempio di creazione di un conto nella console usando il personal_newAccount di GETH

1> personal.newAccount()
2Passphrase:
3Repeat passphrase:
4"0x5e97870f263700f46aa00d967821199b9bc5a120"
5
6> personal.newAccount("h4ck3r")
7"0x3d80b31a78c30fc628f20b2c89d7ddbf6e53cedc"
8

Documentazione di GETH

È possibile derivare nuove chiavi pubbliche dalla tua chiave privata ma non puoi derivare una chiave privata dalle chiavi pubbliche. Questo significa che è vitale mantenere al sicuro una chiave privata, come suggerito dal nome, PRIVATA.

Necessiti di una chiave privata per firmare i messaggi e le transazioni che producono una firma. Gli altri possono quindi prendere la firma per derivare la tua chiave pubblica, provando l'autore del messaggio. Nella tua applicazione, puoi usare una libreria javascript per inviare le transazioni alla rete.

Account contratto

Anche gli account contratto hanno un indirizzo di 42 caratteri esadecimali:

Esempio:

0x06012c8cf97bead5deae237070f9587f8e7a266d

L'indirizzo dell'account contratto viene solitamente indicato quando un contratto viene distribuito nella blockchain di Ethereum. L’indirizzo deriva da quello del creatore e dal numero di transazioni inviate da tale indirizzo (il “nonce”).

Una nota sui portafogli

Un account non è un portafoglio. Un account è la coppia di chiavi per un account Ethereum di proprietà dell'utente. Un portafoglio è un'interfaccia o un'applicazione che ti permette di interagire con il tuo account Ethereum.

Demo visiva

Fatti guidare da Austin attraverso le funzionalità di hash e le coppie di chiavi.

Lettura consigliate

Conosci una risorsa pubblica che ti è stata utile? Modifica questa pagina e aggiungila!

Questo articolo è stato utile?

👈

Indietro

Web2 rispetto a Web3

Avanti

Transazioni
👉