diff --git a/.all-contributorsrc b/.all-contributorsrc index 484f914a4bd..ac7bccac6b2 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -9774,6 +9774,15 @@ "doc", "translation" ] + }, + { + "login": "Marcelixoo", + "name": "Marcelo T. dos Santos", + "avatar_url": "https://avatars.githubusercontent.com/u/29285152?v=4", + "profile": "http://marcelixoo.com", + "contributions": [ + "code" + ] } ], "contributorsPerLine": 7, diff --git a/README.md b/README.md index c47461406ee..48095d18b61 100644 --- a/README.md +++ b/README.md @@ -1534,6 +1534,9 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
+
` e contiene un frammento di codice, quindi il contenuto non va tradotto.
+Nell'esempio seguente, passando con il mouse sul <0> tag puoi vedere che rappresenta `` e contiene un frammento di codice, quindi il contenuto non va tradotto.
![Esempio di tag ambigui.png](./example-of-ambiguous-tags.png)
### Formule/abbreviazioni brevi vs. complete {#short-vs-full-forms}
-Nel sito web sono usate molte abbreviazioni, es. dApp, NFT, DAO, DeFi, etc. Queste abbreviazioni sono comunemente usate in inglese e gran parte dei visitatori del sito web ne è a conoscenza.
+Nel sito web sono usate molte abbreviazioni, es. dapp, NFT, DAO, DeFi, ecc. Queste abbreviazioni sono comunemente usate in inglese e gran parte dei visitatori del sito web ne è a conoscenza.
Dal momento che di solito non esistono traduzioni attestate in altre lingue, il modo migliore per trattare questi termini e altri simili è quello di fornire una traduzione descrittiva della forma estesa e aggiungere l'abbreviazione inglese tra parentesi.
Non tradurre queste abbreviazioni, poiché la maggior parte delle persone non le conoscerebbe e le versioni localizzate non avrebbero molto senso per la maggior parte dei visitatori.
-Esempio di come tradurre le dApp:
+Esempio di come tradurre le dapp:
- Applicazioni decentralizzate (dApp) → _Tradotto integralmente (abbreviazione tra parentesi)_
### Termini senza traduzioni attestate {#terms-without-established-translations}
-Alcuni termini potrebbero non avere traduzioni attestate in altre lingue e sono ampiamente noti con il termine originale in inglese. Tali termini includono principalmente concetti recenti, come proof-of-work, proof-of-stake, Beacon Chain, staking, ecc.
+Alcuni termini potrebbero non avere traduzioni attestate in altre lingue e sono ampiamente noti con il termine originale in inglese. Tali termini includono principalmente concetti recenti, come Proof of Work, Proof of Stake, Beacon Chain, staking, ecc.
Sebbene la traduzione di questi termini possa sembrare innaturale, poiché la versione inglese è comunemente usata anche in altre lingue, si consiglia vivamente di tradurli.
@@ -168,9 +182,9 @@ Traducendoli, sentiti libero di essere creativo, usa traduzioni descrittive o se
### Pulsanti e CTA {#buttons-and-ctas}
-Il sito web contiene numerosi pulsanti, che dovrebbero esser tradotti in modo diverso dagli altri contenuti.
+Il sito web contiene numerosi pulsanti, che dovrebbero essere tradotti in modo diverso dagli altri contenuti.
-Il testo del pulsante può essere identificato visualizzando gli screenshot contestuali, associati a gran parte delle stringhe, o visualizzando il contesto nell'editor, che include il segmento "pulsante".
+Il testo del pulsante può essere identificato visualizzando gli screenshot contestuali, associati a gran parte delle stringhe, o controllando il contesto nell'editor, che include l'espressione "button".
Le traduzioni dei pulsanti dovrebbero essere il più possibile brevi, onde evitare mancate corrispondenze di formattazione. Inoltre, le traduzioni dei pulsanti dovrebbero essere in forma imperativa, ovvero indicare un comando o una richiesta.
@@ -243,11 +257,11 @@ Alcuni esempi di aspetti a cui prestare particolare attenzione:
- Spagnolo – **1.000,50**
- Francese – **1 000,50**
- Un'altra considerazione importante sulla traduzione dei numeri riguarda il segno percentuale. Può essere scritto in diversi modi: **100%**, **100 %** o **%100**.
-- Infine, i numeri negativi possono essere mostrati in modo diverso, a seconda della lingua: -100, 100- (100) o [100].
+- Infine, i numeri negativi possono esser scritti diversamente, a secnda della lingua: -100, 100-, (100) o [100].
**Date**
-- Per la traduzione delle date, occorre tenere conto di una serie di considerazioni e differenze basate sulla lingua, tra cui il formato della data, il separatore, l'uso delle maiuscole/minuscole e gli zeri iniziali. Esistono anche differenze tra le date scritte per esteso e le date numeriche.
+- Traducendo le date, esistono numerose considerazioni e differenze basate sulla lingua. Ciò include il formato della data, il separatore, l'uso di maiuscole e minuscole e gli zeri iniziali. Esistono anche differenze tra le date scritte per esteso e le date numeriche.
- Alcuni esempi di formati di data diversi:
- Inglese UK (gg/mm/aaaa) – 1st January, 2022
- Inglese US (mm/gg/aaaa) – January 1st, 2022
@@ -268,7 +282,7 @@ Alcuni esempi di aspetti a cui prestare particolare attenzione:
**Unità di misura**
- Come regola generale, consigliamo di lasciare le unità di misura come appaiono nel testo originale. Se il tuo paese usa un sistema differente, puoi includere la conversione tra parentesi.
-- Oltre alla localizzazione delle unità di misura, è importante notare anche il diverso trattamento di tali unità nelle varie lingue. La differenza principale riguarda la spaziatura tra numero e unità, che può variare in base alla lingua. Ed esempio: 100kB o 100 kB, 50°F o 50 °F.
+- Oltre alla localizzazione delle unità di misura, è importante notare anche il diverso trattamento di tali unità nelle varie lingue. La differenza principale riguarda la spaziatura tra numero e unità, che può variare in base alla lingua. Esempi di ciò includono: 100kB o 100 kB, 50°F o 50 °F.
### Conclusioni {#conclusion}
@@ -276,4 +290,4 @@ Tradurre ethereum.org è una grande opportunità per conoscere i diversi aspetti
Quando traduci, cerca di non andare troppo in fretta. Prendila con calma e goditi l'esperienza!
-Grazie per aver partecipato al Programma di traduzione e per averci aiutato a rendere il sito web accessibile a un pubblico più ampio. La comunità di Ethereum è globale e siamo felici che tu ne faccia parte!
+Grazie per aver partecipato al Programma di Traduzione e per averci aiutato a rendere il sito web accessibile a un pubblico più ampio. La comunità di Ethereum è globale e siamo felici che tu ne faccia parte!
diff --git a/src/content/translations/it/dao/index.md b/src/content/translations/it/dao/index.md
index 777d07c9b8f..46a0333a79a 100644
--- a/src/content/translations/it/dao/index.md
+++ b/src/content/translations/it/dao/index.md
@@ -4,9 +4,9 @@ description: Una panoramica dei DAO su Ethereum
lang: it
template: use-cases
emoji: ":handshake:"
-sidebarDepth: 2
+sidebarDepth: 3
image: ../../../../assets/use-cases/dao-2.png
-alt: Rappresentazione di una votazione DAO su proposta.
+alt: Rappresentazione di una votazione DAO su una proposta.
summaryPoint1: Comunità di proprietà dei membri senza leadership centralizzata.
summaryPoint2: Un modo sicuro per collaborare con sconosciuti su Internet.
summaryPoint3: Un luogo sicuro per impegnare fondi in una causa specifica.
@@ -14,11 +14,11 @@ summaryPoint3: Un luogo sicuro per impegnare fondi in una causa specifica.
## Cosa sono le DAO? {#what-are-daos}
-Le DAO sono un modo efficace e sicuro per lavorare con persone che hanno la stessa visione in tutto il mondo.
+Con il termine DAO si intende una organizzazione di proprietà collettiva governata da blockchain che lavora per realizzare una missione condivisa.
-Pensate a loro come a società native di internet, di proprietà e gestite collettivamente dai membri. Contengono al loro interno un patrimonio a cui nessuno ha l'autorità di accedere senza l'approvazione del gruppo. Le decisioni sono regolate da proposte e votazioni per far sì che tutti nell'organizzazione abbiano voce in capitolo.
+Le DAO permettono di lavorare con persone con la stessa mentalità provenienti da tutto il mondo doversi fidare di un leader benevolo per gestire i fondi o le operazioni. Non esiste alcun CEO che possa spendere i fondi secondo i propri capricci o un CFO che possa manipolare i libri contabili. Invece, le regole basate sulla blockchain integrate nel codice definiscono il funzionamento dell'organizzazione e come vengono spesi i fondi.
-Non ci sono CEO che possano autorizzare le spese in base ai propri capricci e non ci sono possibilità che un CFO manipoli i registri. Tutto è trasparente e visibile e le regole relative alle spese sono integrate nella DAO tramite il suo codice.
+Contengono al loro interno un patrimonio a cui nessuno ha l'autorità di accedere senza l'approvazione del gruppo. Le decisioni sono governate da proposte e votazioni per garantire che tutti nell'organizzazione abbiano voce in capitolo, e tutto si verifica in modo trasparente sulla catena.
## Perché abbiamo bisogno delle DAO? {#why-dao}
@@ -40,88 +40,126 @@ Ciò apre molte opportunità di cooperazione e coordinamento a livello globale.
Per aiutarti a comprendere meglio, ecco alcuni esempi di come potresti utilizzare una DAO:
-- Beneficenza – puoi accettare soci e donazioni da chiunque nel mondo e il gruppo può decidere come spendere le donazioni.
-- Rete di freelancer – è possibile creare una rete di professionisti che mettono in comune i loro fondi per uffici e abbonamenti software.
+- Beneficenza – potresti accettare donazioni da chiunque nel mondo e votare su quali cause finanziare.
+- Proprietà collettiva – potresti acquistare beni fisici o digitali e i membri possono votare su come usarli.
- Iniziative e sovvenzioni – potresti creare un fondo di rischio che riunisce capitale di investimento e vota sulle iniziative da finanziare. Il denaro rimborsato potrebbe essere successivamente ridistribuito tra i membri del DAO.
-## Aderire a una DAO {#dao-membership}
+## Come funziona la DAO? {#how-daos-work}
-Ci sono diversi modelli per l'adesione a una DAO. L'adesione può determinare come funziona il voto e altri aspetti chiave della DAO.
+La spina dorsale di una DAO è il suo contratto intelligente, che definisce le regole dell'organizzazione e detiene il patrimonio del gruppo. Una volta che il contratto è attivo su Ethereum, nessuno può modificare le regole se non tramite voto. Nessuno può fare qualcosa che non sia previsto dalle regole e dalla logica del codice. E poiché anche il patrimonio è definito dal contratto intelligente, ciò significa che nessuno può spendere il denaro senza l'approvazione del gruppo. Questo significa che le DAO non hanno bisogno di un'autorità centrale. Al contrario, il gruppo prende le decisioni collettivamente e i pagamenti sono autorizzati automaticamente quando le proposte sono approvate dal voto.
-### Adesione basata su token {#token-based-membership}
+Ciò è possibile perché i contratti intelligenti sono a prova di manomissione, una volta che sono attivi su Ethereum. Non è possibile modificare il codice (le regole della DAO) senza che gli altri lo notino, perché tutto è pubblico.
-In genere è completamente senza permessi, a seconda del token utilizzato. Questi token di governance possono essere per lo più scambiati senza permessi su uno scambio decentralizzato. Altri devono essere guadagnati fornendo liquidità o altri tipi di "proof of work". In entrambi i casi, la semplice detenzione del token garantisce l'accesso al voto.
+
+ Di più sui contratti intelligenti
+
-_Di solito usato per governare ampi protocolli decentralizzati e/o i token stessi._
+## Ethereum e DAO {#ethereum-and-daos}
-#### Un celebre esempio {#token-example}
+Ethereum è la base perfetta per le DAO per una serie di motivi:
-[MakerDAO](https://makerdao.com) – Il token MKR di MakerDAO è ampiamente disponibile su scambi decentralizzati. Quindi chiunque può comprare potere di voto sul futuro del protocollo Maker.
+- Il consenso di Ethereum è sufficientemente distribuito e affermato affinché le organizzazioni possano fidarsi della rete.
+- Il codice del contratto intelligente non è modificabile una volta attivato, nemmeno dai suoi proprietari. Ciò permette alla DAO di funzionare secondo le regole con cui è stata programmata.
+- I contratti intelligenti possono inviare/ricevere fondi. In caso contrario occorrerebbe un intermediario fidato per gestire i fondi del gruppo.
+- La community di Ethereum si è dimostrata più collaborativa che competitiva, consentendo l'emergere rapido di migliori pratiche e sistemi di supporto.
-### Adesione basata su azioni {#share-based-membership}
+## Governance della DAO {#dao-governance}
-I DAO basati su azioni sono maggiormente soggetti a permessi, ma comunque abbastanza aperti. Tutti i potenziali membri possono presentare una proposta di adesione al DAO, di solito offrendo un tributo di qualche valore sotto forma di token o di lavoro. Le azioni rappresentano il potere di voto diretto e di proprietà. I membri possono uscire in qualsiasi momento con la loro quota proporzionale del patrimonio.
+Ci sono molte considerazioni da fare governando una DAO, ad esempio, come funzionano le votazioni e le proposte.
-_In genere usato per organizzazioni più fitte e incentrate sul fattore umano, come enti di beneficenza, collettivi di lavoratori e club di investimento. Può anche governare protocolli e token._
+### Delegazione {#governance-delegation}
-#### Un celebre esempio {#share-example}
+Una delegazione è la versione della democrazia rappresentativa della DAO. I titolari di token delegano i voti agli utenti da loro stessi nominati e si impegnano a gestire il protocollo e a rimanere informati.
-[MolochDAO](http://molochdao.com/) – MolochDAO si concentra sul finanziamento di progetti Ethereum. Richiede una proposta di adesione in modo che il gruppo possa valutare se il richiedente ha la competenza e il capitale necessari per formulare giudizi informati sui potenziali contributori. Non si può semplicemente acquistare l'accesso al DAO sul mercato.
+#### Un celebre esempio {#governance-example}
-### Appartenenza basata sulla reputazione {#reputation-based-membership}
+[ENS](https://claim.ens.domains/delegate-ranking) – I titolari di ENS possono delegare i propri voti a membri impegnati della community perché li rappresentino.
-La reputazione rappresenta la prova di partecipazione e concede potere di voto nella DAO. A differenza dell'appartenenza basata sui token o le quote, le DAO basate sulla reputazione non trasferiscono la proprietà ai contributori. La reputazione non può esser comprata, trasferita o delegata; i membri della DAO devono ottenere la reputazione tramite la partecipazione. Il voto su catena è privo di permessi e i potenziali membri possono inviare liberamente proposte per unirsi alla DAO e richiedere di ricevere reputazione e token come ricompensa in cambio dei loro contributi.
+### Governance automatica delle transazioni {#governance-example}
-_Tipicamente usati per lo sviluppo e la governance decentralizzati di protocolli e dapp, ma anche ben adatti a una diversa serie di organizzazioni, quali beneficienze, collettivi di lavoratori, club d'investimento, etc._
+In molte DAO, le transazioni saranno eseguite automaticamente se un quorum dei membri vota in modo affermativo.
-#### Un celebre esempio {#reputation-example}
+#### Un celebre esempio {#governance-example}
-[DXdao](https://DXdao.eth.link) – DXdao è un collettivo sovrano globale che dal 2019 crea e amministra protocolli e applicazioni decentralizzati. Sfrutta la governance basata sulla reputazione e il consenso olografico per coordinare e gestire i fondi, e questo significa che nessuno può comprarsi il potere per influenzare il futuro.
+[Nouns](https://nouns.wtf) – Nelle DAO di Nouns, una transazione è eseguita automaticamente al raggiungimento di un quorum di voti e una maggioranza di voti affermativi, se non ha ricevuto veti dai fondatori.
-## Come funziona la DAO? {#how-daos-work}
+### Governance multifirma {#governance-example}
-La colonna portante di una DAO è il suo smart contract. Il contratto definisce le regole dell'organizzazione e detiene il patrimonio del gruppo. Una volta che il contratto è attivo su Ethereum, nessuno può modificare le regole se non tramite voto. Nessuno può fare qualcosa che non è previsto dalle regole e dalla logica del codice. E dal momento che il patrimonio è definito anche dallo smart contract, nessuno può spendere il denaro senza l'approvazione del gruppo. Questo significa che le DAO non hanno bisogno di un'autorità centrale. Al contrario, il gruppo prende decisioni collettivamente e i pagamenti sono autorizzati automaticamente quando i voti passano.
+Mentre le DAO potrebbero avere migliaia di membri votanti, i fondi possono vivere in un portafoglio condiviso da 5-20 membri attivi della community, ritenuti affidabili e solitamente doxxati (identità pubbliche note alla community). Dopo un voto, i firmatari multifirma eseguono la volontà della community.
-Questo è possibile perché gli smart contract, una volta che sono attivi su Ethereum, sono a prova di manomissione. Non è possibile modificare il codice (le regole della DAO) senza che gli altri lo notino, perché tutto è pubblico.
+## Leggi sulle DAO {#dao-laws}
-
- Maggiori informazioni sugli Smart Contract
-
+Nel 1977, il Wyoming inventò la LLC, che protegge gli imprenditori e ne limita le responsabilità. Più di recente, lo Stato è stato il pioniere della legge sulle DAO, che stabilisce lo status giuridico delle DAO. Al momento, Wyoming, Vermont e le Isole Vergini hanno una qualche forma di legge sulle DAO.
-## Ethereum e DAO {#ethereum-and-daos}
+#### Un celebre esempio {#law-example}
-Ethereum è la base perfetta per le DAO per una serie di motivi:
+[CityDAO](https://citydao.io) – CityDao ha utilizzato la legge sulle DAO del Wyoming per acquistare 40 acri di terreno nei pressi del Parco Nazionale di Yellowstone.
-- Il consenso di Ethereum è sufficientemente distribuito e affermato affinché le organizzazioni possano fidarsi della rete.
-- Il codice dello smart contract non può essere modificato una volta attivato, nemmeno dai suoi proprietari. Ciò permette alla DAO di funzionare secondo le regole con cui è stata programmata.
-- Gli smart contract possono inviare/ricevere fondi. In caso contrario occorrerebbe un intermediario fidato per gestire i fondi del gruppo.
-- La community di Ethereum si è dimostrata più collaborativa che competitiva, consentendo l'emergere rapido di migliori pratiche e sistemi di supporto.
+## Aderire a una DAO {#dao-membership}
+
+Ci sono diversi modelli per aderire a una DAO. L'adesione può determinare come funziona il voto e altri aspetti chiave della DAO.
+
+### Adesione basata su token {#token-based-membership}
+
+In genere è completamente senza permessi, a seconda del token utilizzato. Questi token di governance possono essere per lo più scambiati senza permessi su uno scambio decentralizzato. Altri, invece, devono esser guadagnati fornendo liquidità o altri tipi di "Proof of Work". In entrambi i casi, la semplice detenzione del token garantisce l'accesso al voto.
+
+_Di solito usato per governare ampi protocolli decentralizzati e/o i token stessi._
+
+#### Un celebre esempio {#token-example}
+
+[MakerDAO](https://makerdao.com) – Il token MKR di MakerDAO è ampiamente disponibile sugli scambi decentralizzati e chiunque può acquistare il potere di voto sul futuro del protocollo di Maker.
+
+### Adesione basata su quote {#share-based-membership}
+
+I DAO basati su quote sono maggiormente soggetti a permessi, ma comunque abbastanza aperti. Tutti i potenziali membri possono inviare una proposta di adesione alla DAO, solitamente offrendo un tributo di qualche valore sotto forma di token o di lavoro. Le quote rappresentano il potere di voto diretto e la proprietà. I membri possono uscire in qualsiasi momento con la propria quota proporzionale del patrimonio.
+
+_In genere usato per organizzazioni più compatte e incentrate sul fattore umano, come enti di beneficenza, collettivi di lavoratori e club di investimento. Può anche governare protocolli e token._
+
+#### Un celebre esempio {#share-example}
+
+[MolochDAO](http://molochdao.com/) – MolochDAO si concentra sul finanziamento di progetti Ethereum. Richiede una proposta di adesione in modo che il gruppo possa valutare se il richiedente ha la competenza e il capitale necessari per formulare giudizi informati sui potenziali beneficiari. Non si può semplicemente acquistare l'accesso al DAO sul mercato.
+
+### Adesione basata sulla reputazione {#reputation-based-membership}
+
+La reputazione rappresenta la prova di partecipazione e conferisce potere di voto nella DAO. A differenza dell'adesione basata sui token o le quote, le DAO basate sulla reputazione non trasferiscono la proprietà ai collaboratori. La reputazione non può esser comprata, trasferita o delegata; i membri della DAO devono ottenere la reputazione tramite la loro partecipazione. Il voto su catena è privo di permessi e i potenziali membri possono inviare liberamente proposte per unirsi alla DAO e richiedere di ricevere reputazione e token come ricompensa in cambio dei loro contributi.
+
+_Tipicamente usati per lo sviluppo e la governance decentralizzati di protocolli e dApp, ma anche adatti a una serie eterogenea di organizzazioni, quali enti di beneficenza, collettivi di lavoratori, club d'investimento, etc._
+
+#### Un celebre esempio {#reputation-example}
+
+[DXdao](https://DXdao.eth.link) – DXdao è un collettivo sovrano globale che dal 2019 crea e amministra protocolli e applicazioni decentralizzati. Sfrutta la governance basata sulla reputazione e il consenso olografico per coordinare e gestire i fondi, il che significa che nessuno può comprarsi il potere per influenzarne il futuro.
-## Partecipa a / Lancia una DAO {#join-start-a-dao}
+## Aderisci a / Crea una DAO {#join-start-a-dao}
-### Partecipa a una DAO {#join-a-dao}
+### Aderisci a una DAO {#join-a-dao}
- [Community di Ethereum](/community/get-involved/#decentralized-autonomous-organizations-daos)
- [Lista delle DAO di DAOHaus](https://app.daohaus.club/explore)
+- [Elenco di DAO di Tally.xyz](https://www.tally.xyz)
-### Lancia una DAO {#start-a-dao}
+### Crea una DAO {#start-a-dao}
- [Evoca una DAO con DAOHaus](https://app.daohaus.club/summon)
-- [Crea una DAO alimentata da Aragon](https://aragon.org/product)
+- [Crea una DAO di Governance con Tally](https://www.tally.xyz/add-a-dao)
+- [Crea una DAO basata su Aragon](https://aragon.org/product)
- [Avvia una colonia](https://colony.io/)
- [Crea una DAO con il consenso olografico di DAOstack](https://alchemy.daostack.io/daos/create)
-## Lettura consigliate {#further-reading}
+## Letture consigliate {#further-reading}
-### Articoli sulla DAO {#dao-articles}
+### Articoli sulle DAO {#dao-articles}
- [Che cos'è una DAO?](https://aragon.org/dao) – [Aragon](https://aragon.org/)
-- [House of DAOs](https://wiki.metagame.wtf/docs/great-houses/house-of-daos) – [Metagame](https://wiki.metagame.wtf/)
+- [Il manuale delle DAO](https://daohandbook.xyz)
+- [La casa delle DAO](https://wiki.metagame.wtf/docs/great-houses/house-of-daos) – [Metagame](https://wiki.metagame.wtf/)
- [Che cos'è una DAO e a cosa serve?](https://daohaus.substack.com/p/-what-is-a-dao-and-what-is-it-for) – [DAOhaus](https://daohaus.club/)
- [Come avviare una comunità digitale basata su DAO](https://daohaus.substack.com/p/four-and-a-half-steps-to-start-a) – [DAOhaus](https://daohaus.club/)
-- [Cos'è una DAO?](https://coinmarketcap.com/alexandria/article/what-is-a-dao) – [Coinmarketcap](https://coinmarketcap.com)
-- [Cos'è il Consenso Olografico?](https://medium.com/daostack/holographic-consensus-part-1-116a73ba1e1c) - [DAOstack](https://daostack.io/)
+- [Che cos'è una DAO?](https://coinmarketcap.com/alexandria/article/what-is-a-dao) – [Coinmarketcap](https://coinmarketcap.com)
+- [Cos'è il consenso olografico?](https://medium.com/daostack/holographic-consensus-part-1-116a73ba1e1c) - [DAOstack](https://daostack.io/)
+- [Le DAO non sono società: dove è importante la decentralizzazione nelle organizzazioni autonome, di Vitalik](https://vitalik.ca/general/2022/09/20/daos.html)
+- [DAO, DAC, DA e altro: una guida incompleta alla terminologia](https://blog.ethereum.org/2014/05/06/daos-dacs-das-and-more-an-incomplete-terminology-guide) - [Blog di Ethereum](https://blog.ethereum.org)
### Video {#videos}
- [Che cos'è una DAO nel mondo delle criptovalute?](https://youtu.be/KHm0uUPqmVE)
+- [Può una DAO costruire una città?](https://www.ted.com/talks/scott_fitsimones_could_a_dao_build_the_next_great_city) – [TED](https://www.ted.com/)
diff --git a/src/content/translations/it/decentralized-identity/index.md b/src/content/translations/it/decentralized-identity/index.md
index 7c4959c1dd5..9736bc5eaef 100644
--- a/src/content/translations/it/decentralized-identity/index.md
+++ b/src/content/translations/it/decentralized-identity/index.md
@@ -11,7 +11,7 @@ summaryPoint2: L'identità decentralizzata rende possibile non fare affidamento
summaryPoint3: Grazie alle cripto, gli utenti hanno ora nuovamente gli strumenti per emettere, detenere e controllare i propri identificativi e attestazioni.
---
-L'identità sostiene virtualmente ogni aspetto della tua vita odierna. Usare i servizi online, aprire un conto bancario, votare alle elezioni, acquistare proprietà, garantire l'occupazione, tutte queste cose ti richiedono di dimostrare la tua identità.
+L'identità sostiene virtualmente ogni aspetto della tua vita odierna. Utilizzare servizi online, aprire un conto bancario, votare alle elezioni, acquistare proprietà, garantire l'occupazione: tutte queste cose richiedono di fornire la tua identità.
Tuttavia, i sistemi di gestione dell'identità tradizionali si sono a lungo affidati a intermediari centralizzati che emettono, detengono e controllano i tuoi identificativi e le tue [attestazioni](#what-are-attestations). Questo significa che non puoi controllare le tue informazioni correlate all'identità né decidere chi abbia accesso ai dati personali identificabili (PII) e in che misura a queste parti sia consentito l'accesso.
@@ -43,7 +43,7 @@ Le attestazioni sono differenti dagli identificativi. Un'attestazione _contiene_
Gli identificativi tradizionali come il tuo nome legale o l'indirizzo email si basano su terze parti: governi e fornitori di email. Gli identificativi decentralizzati (DID) sono diversi: non sono emessi, gestiti o controllati da un'entità centrale.
-Gli identificativi decentralizzati sono emessi, detenuti e controllati dalle persone stesse. Un [profilo Ethereum](/developers/docs/accounts/) è un esempio di identificativo decentralizzato. Puoi creare quanti tutti i profili che vuoi senza l'autorizzazione di nessuno e senza doverli memorizzare in un registro centrale.
+Gli identificativi decentralizzati sono emessi, detenuti e controllati dalle persone stesse. Un [conto di Ethereum](/developers/docs/accounts/) è un esempio di identificativo decentralizzato. Puoi creare quanti conti desideri senza l'autorizzazione di nessuno e senza doverli memorizzare in un registro centrale.
Gli identificativi decentralizzati sono memorizzati su libri mastri distribuiti (blockchain) o reti peer-to-peer. Questo rende i DID [unici a livello globale, risolvibili con elevata disponibilità e crittograficamente verificabili](https://w3c-ccg.github.io/did-primer/). Un identificativo decentralizzato è associabile a diverse entità, tra cui persone, organizzazioni o istituzioni governative.
@@ -53,7 +53,7 @@ Gli identificativi decentralizzati sono memorizzati su libri mastri distribuiti
L'infrastruttura a chiave pubblica (PKI) è una misura di sicurezza delle informazioni che genera una [chiave pubblica](/glossary/#public-key) e una [chiave privata](/glossary/#private-key) per un'entità. La crittografia della chiave pubblica è usata nelle reti blockchain per autenticare le identità dell'utente e provare la proprietà delle risorse digitali.
-Alcuni identificativi decentralizzati, come un profilo Ethereum, hanno chiavi pubbliche e private. La chiave pubblica identifica il controllore del profilo, mentre quelle privati possono firmare e decrittografare i messaggi per quel profilo. PKI fornisce le prove necessarie ad autenticare le entità e impedire il furto di identità e l'uso di identità false, usando le [firme crittografiche](https://andersbrownworth.com/blockchain/public-private-keys/) per verificare tutte le richieste.
+Alcuni identificativi decentralizzati, come un conto di Ethereum, hanno chiavi pubbliche e private. La chiave pubblica identifica il controllore del conto, mentre le chiavi private possono firmare e decrittografare i messaggi per questo conto. PKI fornisce le prove necessarie ad autenticare le entità e impedire il furto di identità e l'uso di identità false, usando le [firme crittografiche](https://andersbrownworth.com/blockchain/public-private-keys/) per verificare tutte le richieste.
### 2. Datastore decentralizzati {#decentralized-datastores}
@@ -97,15 +97,15 @@ Questo approccio consente alle attestazioni di ottenere persistenza basata sulla
### Attestazioni su catena {#onchain-attestations}
-Le attestazioni su catena sono detenute negli [smart contract](/developers/docs/smart-contracts/) sulla blockchain di Ethereum. Lo smart contract (che funge da registro), mapperà un'attestazione su un corrispondente identificativo decentralizzato sulla catena (una chiave pubblica).
+Le attestazioni su catena sono detenute nei [contratti intelligenti](/developers/docs/smart-contracts/) sulla blockchain di Ethereum. Il contratto intelligente (che funge da registro), mapperà un'attestazione a un identificativo decentralizzato corrispondente sulla catena (una chiave pubblica).
Ecco un esempio per mostrare come potrebbero funzionare in pratica le attestazioni su catena:
-1. Un'azienda (XYZ Corp) intende vendere delle azioni usando uno smart contract, ma vuole solo acquirenti che abbiano superato una verifica della storia personale.
+1. Un'azienda (XYZ Corp) pianifica di vendere quote di proprietà usando un contratto intelligente, ma vuole solo acquirenti che abbiano completato una verifica dei trascorsi personali.
2. XYZ Corp può far eseguire i controlli sulla storia personale dall'azienda affinché rilasci delle attestazioni su catena su Ethereum. Quest'attestazione certifica che una persona ha superato il controllo della storia personale senza esporre alcun dato personale.
-3. Lo smart contract che vende le quote può verificare il contratto del registro per le identità degli acquirenti controllati, rendendo possibile per lo smart contract determinare chi può acquistare le quote e chi no.
+3. Il contratto intelligente che vende le quote può verificare il contratto del registro per le identità degli acquirenti controllati, rendendo possibile per il contratto intelligente di determinare chi possa acquistare le quote e chi no.
### Token vincolati e identità {#soulbound}
@@ -131,9 +131,9 @@ L'identità decentralizzata ha molti possibili casi d'uso:
### 1. Accessi universali {#universal-dapp-logins}
-L'identità decentralizzata può aiutare a sostituire gli accessi basati su password con l'[autenticazione decentralizzata](https://www.ibm.com/blogs/blockchain/2018/10/decentralized-identity-an-alternative-to-password-based-authentication/). I fornitori di servizi possono rilasciare attestazioni agli utenti, memorizzabili in un portafoglio di Ethereum. Un esempio d'attestazione potrebbe essere un [NFT](/nft/) che concede al titolare di accedere a una community online.
+L'identità decentralizzata può aiutare a sostituire gli accessi basati su password con l'[autenticazione decentralizzata](https://www.ibm.com/blogs/blockchain/2018/10/decentralized-identity-an-alternative-to-password-based-authentication/). I fornitori di servizi possono emettere attestazioni agli utenti, memorizzabili in un portafoglio di Ethereum. Un esempio d'attestazione potrebbe essere un [NFT](/nft/) che concede al titolare di accedere a una community online.
-Una funzione [Accedi con Ethereum](https://login.xyz/) consente poi ai server di confermare il profilo Ethereum dell'utente e recuperare l'attestazione richiesta dall'indirizzo del suo conto. Questo significa che gli utenti possono accedere a piattaforme e siti web senza dover memorizzare lunghe password e migliorare l'esperienza online per gli utenti.
+Una funzionalità [Accedi con Ethereum](https://login.xyz/), poi, consentirebbe ai server di confermare il conto di Ethereum dell'utente e di recuperare l'attestazione necessaria dall'indirizzo del suo conto. Questo significa che gli utenti possono accedere a piattaforme e siti web senza dover memorizzare lunghe password e migliorare l'esperienza online per gli utenti.
### 2. Autenticazione KYC {#kyc-authentication}
@@ -145,7 +145,7 @@ L'identità decentralizzata consente alle aziende di saltare i convenzionali pro
Il voto online e i social media sono due nuove applicazioni per l'identità decentralizzata. Gli schemi di voto online sono esposti alla manipolazione, specialmente se degli attori malevoli creano identità false per votare. Chiedere alle persone di presentare attestazioni sulla catena può migliorare l'integrità dei processi di voto online.
-L'identità decentralizzata può aiutare a creare community online senza profili fasulli. Ad esempio, ogni utente potrebbe dover autenticare la propria identità usando un sistema di identità su catena, come Ethereum Name Service, riducendo la possibilità di bot.
+L'identità decentralizzata può aiutare a creare community online che siano prive di conti falsi. Ad esempio, ogni utente potrebbe dover autenticare la propria identità usando un sistema di identità su catena, come Ethereum Name Service, riducendo la possibilità di bot.
### 4. Protezione Anti Sybil {#sybil-protection}
@@ -156,7 +156,7 @@ Gli attacchi Sybil sono attacchi in cui delle persone ingannano un sistema induc
Esistono molti progetti ambiziosi che usano Ethereum come fondamenta per le soluzioni di identità decentralizzata:
- **[Ethereum Name Service (ENS)](https://ens.domains/)** - _Sistema di denominazione decentralizzato per identificativi su catena leggibili dalle macchine, come, indirizzi dei portafogli di Ethereum, hash di contenuto e metadati._
-- **[SpruceID](https://www.spruceid.com/)** - _Un progetto di identità decentralizzata che consente agli utenti di controllare l'identità digitale con conti Ethereum e profili ENS invece di basarsi su servizi di terze parti_
+- **[SpruceID](https://www.spruceid.com/)**: _Un progetto di identità decentralizzata che consente agli utenti di controllare l'identità digitale con i conti di Ethereum e i profili ENS, invece di affidarsi ai servizi di terze parti._
- **[Proof of Humanity](https://www.proofofhumanity.id)** - _Proof of Humanity (o PoH) è un sistema di verifica dell'identità sociale creato su Ethereum._
- **[BrightID](https://www.brightid.org/)** - _Rete d'identità sociale decentralizzata e open source che cerca di riformare la verifica dell'identità tramite la creazione e analisi di un grafico sociale_
- **[Proof-of-personhood Passport](https://proofofpersonhood.com/)** - _Aggregatore di identità digitali decentralizzate._
@@ -181,4 +181,4 @@ Esistono molti progetti ambiziosi che usano Ethereum come fondamenta per le solu
- [ERC-725 Alliance su GitHub](https://github.com/erc725alliance) — _Sostenitori dello standard ERC725 per la gestione dell'identità sulla blockchain di Ethereum_
- [Server Discord di SpruceID](https://discord.com/invite/Sf9tSFzrnt) — _Community per appassionati e sviluppatori al lavoro sull'Accesso con Ethereum_
-- [Veramo Labs](https://discord.gg/sYBUXpACh4) — _Una community di sviluppatori che contribuiscono a creare una rete per i dati verificabili per le applicazioni_
+- [Veramo Labs](https://discord.gg/sYBUXpACh4) — _Una community di sviluppatori che contribuiscono a creare un quadro per i dati verificabili per le applicazioni_
diff --git a/src/content/translations/it/defi/index.md b/src/content/translations/it/defi/index.md
index 5e6a7ddc1a8..dad005f51ef 100644
--- a/src/content/translations/it/defi/index.md
+++ b/src/content/translations/it/defi/index.md
@@ -6,10 +6,10 @@ template: use-cases
emoji: ":money_with_wings:"
image: ../../../../assets/use-cases/defi.png
alt: Logo di Eth in mattoncini Lego.
-sidebarDepth: 2
+sidebarDepth: 3
summaryPoint1: Un'alternativa globale e aperta all'attuale sistema finanziario.
-summaryPoint2: Prodotti che consentono di prendere in prestito, risparmiare, investire, fare affari e altro ancora.
-summaryPoint3: Sulla base della tecnologia open-source con cui chiunque può programmare.
+summaryPoint2: Prodotti che consentono di prendere in prestito, risparmiare, investire, scambiare e altro ancora.
+summaryPoint3: Basati sulla tecnologia open-source con cui chiunque può programmare.
---
DeFi è un sistema finanziario aperto e globale creato per l'era di internet - un'alternativa a un sistema opaco, rigidamente controllato e tenuto insieme da infrastrutture e processi vecchi di decenni. Offre controllo e visibilità sul proprio denaro. Fornisce esposizione ai mercati globali e alternative alla propria valuta locale o alle opzioni bancarie. I prodotti DeFi aprono servizi finanziari a chiunque abbia una connessione internet e sono prevalentemente detenuti e mantenuti dai loro utenti. Finora decine di miliardi di dollari di criptovalute sono fluiti attraverso le applicazioni DeFi e crescono ogni giorno.
@@ -53,9 +53,9 @@ Uno dei modi migliori per individuare il potenziale della DeFi è comprendere i
## Tutto è iniziato con Bitcoin... {#bitcoin}
-Bitcoin può essere considerato sotto molti aspetti la prima applicazione DeFi. Bitcoin consente di possedere e controllare realmente il valore e inviarlo ovunque in tutto il mondo. Offre infatti a un gran numero di persone, che non si fidano l'una dell'altra, un modo per accordarsi su un registro dei conti senza bisogno di un intermediario fidato. Bitcoin è aperto a tutti e nessuno ha l'autorità di cambiarne le regole. Le regole di Bitcoin, come la sua scarsità e la sua apertura, sono scritte nella tecnologia. Non è come la finanza tradizionale, in cui i governi possono stampare moneta che svaluta i risparmi e in cui le aziende possono chiudere i mercati.
+Bitcoin può essere considerato sotto molti aspetti la prima applicazione DeFi. Bitcoin consente di possedere e controllare realmente il valore e inviarlo ovunque in tutto il mondo. Infatti, a molte persone che non si fidano l'una dell'altra, offre un metodo per accordarsi su un libro mastro di conti, senza la necessità di un intermediario fidato. Bitcoin è aperto a tutti e nessuno ha l'autorità di cambiarne le regole. Le regole di Bitcoin, come la sua scarsità e la sua apertura, sono scritte nella tecnologia. Non è come la finanza tradizionale, in cui i governi possono stampare moneta che svaluta i risparmi e in cui le aziende possono chiudere i mercati.
-Ethereum si basa su questo. Come per Bitcoin, le regole non cambiano da un momento all'altro e tutti possono accedervi. Inoltre, questo sistema rende il denaro digitale programmabile, grazie agli [smart contract](/glossary#smart-contract), permettendo agli utenti di andare oltre il semplice deposito e invio di valore.
+Ethereum si basa su questo. Come per Bitcoin, le regole non cambiano da un momento all'altro e tutti possono accedervi. Ma rende anche programmabile questo denaro digitale, usando i [contratti intelligenti](/glossary#smart-contract), così che tu possa andare oltre l'archiviazione e l'invio di valore.
@@ -90,7 +90,7 @@ Esiste un'alternativa decentralizzata a gran parte dei servizi finanziari. Ma Et
### Inviare denaro in tutto il mondo {#send-money}
-In quanto blockchain, Ethereum è progettato per inviare transazioni in modo sicuro e globale. Come Bitcoin, Ethereum rende l'invio di denaro in tutto il mondo tanto facile quanto l'invio di un'e-mail. Basta inserire il [nome ENS](/nft/#nft-domains) del destinatario (come bob.eth) o l'indirizzo del suo conto dal proprio portafoglio e il pagamento gli arriverà direttamente in pochi minuti (in genere). Per inviare o ricevere pagamenti, è necessario un [portafoglio](/wallets/).
+In quanto blockchain, Ethereum è progettato per inviare transazioni in modo sicuro e globale. Come Bitcoin, Ethereum rende l'invio di denaro in tutto il mondo tanto facile quanto l'invio di un'e-mail. Basta inserire il [nome ENS](/nft/#nft-domains) del tuo destinatario (come bob.eth) o l'indirizzo del suo conto dal proprio portafoglio e il pagamento gli arriverà (solitamente) in pochi minuti. Per inviare o ricevere pagamenti, è necessario un [portafoglio](/wallets/).
Visualizza le dApp di pagamento
@@ -294,30 +294,30 @@ Con così tante cose in ballo, avrai bisogno di un modo per tenere traccia di tu
## Come funziona la DeFi? {#how-defi-works}
-La DeFi usa le criptovalute e gli smart contract per fornire servizi che non necessitano di intermediari. Nel mondo finanziario di oggi, gli istituti finanziari fungono da garanti delle transazioni. Questo dà a tali istituti un potere immenso, perché il denaro degli utenti fluisce attraverso di loro. Inoltre, miliardi di persone in tutto il mondo non possono nemmeno accedere a un conto bancario.
+La DeFi usa le criptovalute e i contratti intelligenti per fornire servizi che non necessitano di intermediari. Nel mondo finanziario di oggi, gli istituti finanziari fungono da garanti delle transazioni. Questo dà a tali istituti un potere immenso, perché il denaro degli utenti fluisce attraverso di loro. Inoltre, miliardi di persone in tutto il mondo non possono nemmeno accedere a un conto bancario.
-Con la DeFi, uno smart contract sostituisce l'istituto finanziario nella transazione. Uno smart contract è un tipo di conto Ethereum che può contenere fondi e inviarli/rimborsarli in base a certe condizioni. Nessuno può alterare lo smart contract quando è attivo, per cui verrà sempre eseguito come programmato.
+Nella DeFi, un contratto intelligente sostituisce l'istituzione finanziaria nella transazione. Un contratto intelligente è un tipo di conto di Ethereum che può detenere fondi e inviarli/rimborsarli secondo certe condizioni. Nessun può alterare quel contratto intelligente una volta attivato; sarà sempre eseguito come programmato.
-Un contratto progettato per recapitare un'indennità o un salario potrebbe essere programmato in modo da inviare denaro dal conto A al conto B ogni venerdì. E continuerebbe a farlo solo finché il conto A ha i fondi necessari. Nessuno può modificare il contratto e aggiungere il conto C come destinatario per sottrarre i fondi.
+Un contratto progettato per recapitare un'indennità o un salario, potrebbe esser programmato per inviare denaro dal Conto A al Conto B, ogni venerdì. E lo continuerà a fare finché il Conto A conterrà i fondi necessari. Nessuno può modificare il contratto e aggiungere il Conto C come destinatario per rubare i fondi.
Inoltre, i contratti sono pubblici e possono essere ispezionati e controllati da chiunque. Questo significa che eventuali contratti malevoli tendono a finire sotto l'esame della comunità abbastanza rapidamente.
-Ciò significa che al momento vi è la necessità di fidarsi dei membri più tecnici della comunità di Ethereum, capaci di leggere il codice. La comunità basata sull'open source aiuta a mantenere gli sviluppatori sotto controllo, ma questa necessità si ridurrà col tempo, quando gli smart contract diverranno più facili da leggere e verranno sviluppati altri modi per provare l'affidabilità del codice.
+Ciò significa che al momento vi è la necessità di fidarsi dei membri più tecnici della comunità di Ethereum, capaci di leggere il codice. La community basata sull'open source aiuta a mantenere sotto controllo gli sviluppatori, ma questa necessità, sarà ridotta col tempo, mentre i contratti intelligenti divengono più facili da leggere e sono sviluppati nuovi metodi per provare l'affidabilità del codice.
## Ethereum e DeFi {#ethereum-and-defi}
Ethereum è la base perfetta per la DeFi, per diverse ragioni:
-- Nessuno possiede Ethereum o gli smart contract al suo interno; ciò dà a tutti l'opportunità di usare la DeFi. Significa anche che nessuno può modificare le regole a propria discrezione.
+- Nessuno possiede Ethereum o i contratti intelligenti che vi risiedono: questo da' a tutti l'opportunità di usare le DeFi. Significa anche che nessuno può modificare le regole a propria discrezione.
- I prodotti della DeFi parlano tutti la stessa lingua dietro le quinte: Ethereum. Questo significa che molti dei prodotti funzionano insieme senza soluzione di continuità. Puoi prestare token su una piattaforma e scambiare il token fruttifero di interessi su un altro mercato e con un'applicazione completamente diversa. È esattamente come incassare punti fedeltà presso la propria banca.
- I token e la criptovaluta si basano su Ethereum, un registro condiviso. In fondo, tenere traccia delle transazioni e della proprietà è la specialità di Ethereum.
- Ethereum offre la massima libertà finanziaria: gran parte dei prodotti non assume mai la custodia dei tuoi fondi, lasciandoti il controllo.
Puoi pensare alla DeFi in termini di strati:
-1. La blockchain - Ethereum contiene lo storico delle transazioni e lo stato dei conti.
+1. La Blockchain: Ethereum contiene lo storico delle transazioni e lo stato dei conti.
2. Gli attivi - [ETH](/eth/) e gli altri token (valute).
-3. I protocolli - [Smart contract](/glossary/#smart-contract) che forniscono la funzionalità, ad esempio un servizio che consente il prestito decentralizzato di attivi.
+3. I protocolli: [contratti intelligenti](/glossary/#smart-contract) che forniscono la funzionalità, ad esempio, un servizio che consente il prestito decentralizzato delle risorse.
4. [Le applicazioni](/dapps/) - I prodotti che usiamo per gestire e accedere ai protocolli.
## Costruire la DeFi {#build-defi}
@@ -335,6 +335,7 @@ La DeFi è un movimento open source. I protocolli e le applicazioni della DeFi s
- [DeFi Pulse](https://defipulse.com/)
- [DeFi Prime](https://defiprime.com/)
- [DeFi Llama](https://defillama.com/)
+- [DeFi Rate](https://defirate.com/)
### Articoli sulla DeFi {#defi-articles}
diff --git a/src/content/translations/it/developers/docs/accounts/index.md b/src/content/translations/it/developers/docs/accounts/index.md
index ddf11b4cb02..ef35fb4f899 100644
--- a/src/content/translations/it/developers/docs/accounts/index.md
+++ b/src/content/translations/it/developers/docs/accounts/index.md
@@ -1,10 +1,10 @@
---
title: Conti di Ethereum
-description: "Informazioni sui conti di Ethereum: loro struttura dei dati e relazioni con la crittografia con coppie di chiavi."
+description: "Una spiegazione dei conti di Ethereum: loro struttura dei dati e relazioni con la crittografia con coppie di chiavi."
lang: it
---
-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.
+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 {#prerequisites}
@@ -14,8 +14,8 @@ I conti sono un argomento piuttosto basilare. Ma per meglio comprendere questa p
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](/developers/docs/smart-contracts/)
+- Conto posseduto esternamente (EOA): controllato da chiunque possieda le chiavi private
+- Conto del contratto: un contratto intelligente distribuito alla rete, controllato dal codice. Impara sui [contratti intelligenti](/developers/docs/smart-contracts/)
Entrambi i tipi di conto hanno l'abilità di:
@@ -28,32 +28,34 @@ Entrambi i tipi di conto hanno l'abilità di:
- Creare un conto non costa nulla
- Può avviare transazioni
-- Le transazioni tra account esterni possono riguardare unicamente trasferimenti di ETH/token
+- Le transazioni tra conti esterni possono riguardare unicamente trasferimenti di ETH/token
+- Composto da una coppia di chiavi crittografiche: chiavi pubbliche e private che controllano le attività del conto
**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
+- Le transazioni da un conto esterno al conto di un contratto possono innescare un codice che può eseguire molte azioni differenti, come trasferire token o persino creare un nuovo contratto
+- I conti del contratto non hanno chiavi private. Invece, sono controllati dalla logica del codice del contratto intelligente
## Esaminando un conto {#an-account-examined}
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.
+- `nonce`: Un contatore che indica il numero di transazioni inviate dal conto. Questo assicura che le transazioni siano elaborate una volta. Nel conto di un contratto, questo numero rappresenta il numero di contratti creati dal conto.
- `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.
+- `codeHash`: Questo hash si riferisce al _codice_ di un conto sulla Macchina Virtuale di Ethereum (EVM). I conti del contratto contengono frammenti di codice programmati per poter eseguire diverse operazioni. Questo codice dell'EVM viene eseguito se il conto riceve una chiamata di messaggio. Non è modificabile, a differenza degli altri campi del conto. 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 i conti esterni, il campo codeHash è l'hash di una stringa vuota.
+- `storageRoot`: detto anche hash di archiviazione. Un hash da 256 bit del nodo radice di un albero di Patricia Merkle che codifica i contenuti dell'archiviazione del conto (una mappatura tra i valori interi da 256 bit), codificato nell'albero come una mappatura dall'hash da 256 bit di Keccak delle chiavi intere da 256 bit ai valori interi codificati in RLP da 256 bit. Questo albero codifica l'hash dei contenuti dell'archiviazione di questo conto ed è vuoto di default.
-![Un diagramma mostra la composizione di un conto](./accounts.png) _Diagramma adattato da [Ethereum EVM illustrato](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
+![Un diagramma che mostra la composizione di un conto](./accounts.png) _Diagramma adattato da [Ethereum EVM illustrato](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
## I conti posseduti esternamente e le coppie di chiavi {#externally-owned-accounts-and-key-pairs}
-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.
+Un conto si compone di una coppia crittografica di chiavi: 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.
+Se Alice desidera inviare ether dal proprio conto a quello di Bob, 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 somigli a "inviare 5 ETH dal conto di Alice al conto di Eve" e nessuno potrebbe verificare che non fosse provenuta da Alice.
## Creazione del conto {#account-creation}
@@ -65,7 +67,7 @@ Esempio:
`fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd036415f`
-La chiave pubblica è generata dalla chiave privata usando [Elliptic Curve Digital Signature Algorithm](https://wikipedia.org/wiki/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.
+La chiave pubblica è generata dalla chiave privata usando [Elliptic Curve Digital Signature Algorithm](https://wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm). Puoi ottenere un indirizzo pubblico per il tuo conto prendendo 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
@@ -85,15 +87,15 @@ Repeat passphrase:
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 {#contract-accounts}
+## Conti del contratto {#contract-accounts}
-Anche gli account contratto hanno un indirizzo di 42 caratteri esadecimali:
+Inoltre, i conti del contratto contengono un indirizzo esadecimale da 42 caratteri:
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”).
+L'indirizzo del contratto è solitamente dato alla distribuzione di un contratto alla Blockchain di Ethereum. L’indirizzo deriva da quello del creatore e dal numero di transazioni inviate da tale indirizzo (il “nonce”).
## Chiavi del validatore {#validators-keys}
diff --git a/src/content/translations/it/developers/docs/apis/backend/index.md b/src/content/translations/it/developers/docs/apis/backend/index.md
index d8c0aaf7408..2f721ac1933 100644
--- a/src/content/translations/it/developers/docs/apis/backend/index.md
+++ b/src/content/translations/it/developers/docs/apis/backend/index.md
@@ -6,7 +6,7 @@ lang: it
Per interagire con la blockchain Ethereum (ad esempio leggere i dati della blockchain e/o inviare transazioni alla rete), un'applicazione software deve connettersi a un nodo Ethereum.
-Per questo scopo, ogni client di Ethereum implementa la specifica [JSON-RPC](/developers/docs/apis/json-rpc/), quindi esiste una serie uniforme di [endpoint](/developers/docs/apis/json-rpc/#json-rpc-methods) su cui possono basarsi le applicazioni.
+Per questo scopo, ogni client di Ethereum implementa la specifica [JSON-RPC](/developers/docs/apis/json-rpc/), quindi esiste una serie uniforme di [metodi](/developers/docs/apis/json-rpc/#json-rpc-methods) su cui possono basarsi le applicazioni.
Se desideri utilizzare un linguaggio di programmazione specifico per connetterti a un nodo Ethereum, sviluppa una soluzione personalizzata, ma tieni presente che ci sono già molte librerie all'interno dell'ecosistema che possono facilitarti la vita. Con queste librerie, gli sviluppatori possono scrivere metodi a una riga intuitivi per inizializzare le richieste RPC JSON (under the hood) che interagiscono con Ethereum.
@@ -56,10 +56,11 @@ Queste librerie eliminano buona parte della complessità legata al dover interag
- [ethercluster.com](https://www.ethercluster.com/)
-**Catainstack -** **_Nodi Ethereum condivisi e dedicati come servizio_**
+**Catainstack -** **_Nodi Ethereum elastici e dedicati come servizio_**
- [chainstack.com](https://chainstack.com)
- [Documentazione](https://docs.chainstack.com)
+- [Riferimento all'API di Ethereum](https://docs.chainstack.com/api/ethereum/ethereum-api-reference)
**QuickNode -** **_Infrastruttura della Blockchain come servizio._**
@@ -123,4 +124,4 @@ _Conosci una risorsa pubblica che ti è stata utile? Modifica questa pagina e ag
## Tutorial correlati {#related-tutorials}
- [Set up Web3js to use the Ethereum blockchain in JavaScript](/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/) _– Istruzioni per impostare web3.js in un progetto._
-- [Calling a Smart Contract from JavaScript](/developers/tutorials/calling-a-smart-contract-from-javascript/) _– Usando il token Dai, impara a chiamare le funzioni dei contratti con JavaScript_
+- [Chiamare un contratto intelligente da JavaScript](/developers/tutorials/calling-a-smart-contract-from-javascript/) _- Usando il token Dai, impara come chiamare le funzioni dei contratti usando JavaScript_
diff --git a/src/content/translations/it/developers/docs/apis/javascript/index.md b/src/content/translations/it/developers/docs/apis/javascript/index.md
index 172f8c14b54..4bb8b523664 100644
--- a/src/content/translations/it/developers/docs/apis/javascript/index.md
+++ b/src/content/translations/it/developers/docs/apis/javascript/index.md
@@ -6,7 +6,7 @@ lang: it
Per interagire con la blockchain Ethereum (ad esempio leggere i dati della blockchain e/o inviare transazioni alla rete), una web app deve connettersi a un nodo Ethereum.
-Per questo scopo, ogni client di Ethereum implementa la specifica [JSON-RPC](/developers/docs/apis/json-rpc/), quindi esiste una serie uniforme di [endpoint](/developers/docs/apis/json-rpc/endpoints/) su cui possono basarsi le applicazioni.
+Per questo scopo, ogni client di Ethereum implementa la specifica [JSON-RPC](/developers/docs/apis/json-rpc/), quindi esiste una serie uniforme di [metodi](/developers/docs/apis/json-rpc/#json-rpc-methods) su cui possono basarsi le applicazioni.
Se desideri utilizzare JavaScript per connetterti a un nodo Ethereum, puoi usare Javascript vanilla, ma tieni presente che ci sono già molte librerie all'interno dell'ecosistema che possono facilitarti la vita. Con queste librerie, gli sviluppatori possono scrivere metodi a una riga intuitivi per inizializzare le richieste RPC JSON (under the hood) che interagiscono con Ethereum.
@@ -65,8 +65,8 @@ var web3 = new Web3(
Una volta eseguita la configurazione, sarà possibile interrogare la blockchain per avere:
- numeri di blocco
-- stime del carburante
-- eventi Smart Contract
+- stime del gas
+- eventi del contratto intelligenti
- ID di rete
- e molto altro...
@@ -147,14 +147,14 @@ CONTEXTREQUEST
Una volta eseguita la configurazione, sarà possibile:
-- creare account
+- creare conti
- inviare transazioni
- firmare transazioni
- e molto altro...
-### Interagire con le funzioni degli Smart Contract {#interact-with-smart-contract-functions}
+### Interagire con le funzioni dei contratti intelligenti {#interact-with-smart-contract-functions}
-Le librerie client JavaScript consentono a un'applicazione di chiamare le funzioni degli Smart Contract leggendo l'ABI (Application Binary Interface) di un contratto compilato.
+Le librerie del client di JavaScript consentono alla tua applicazione di chiamare le funzioni dei contratti intelligenti, leggendo l'Interfaccia Binaria dell'Applicazione (ABI) di un contratto compilato.
L'ABI spiega essenzialmente le funzioni del contratto in un formato JSON e consente di utilizzarlo come un normale oggetto JavaScript.
@@ -209,8 +209,8 @@ Si tradurrebbe nel seguente JSON:
Ciò significa che è possibile:
-- Inviare una transazione allo Smart Contract ed eseguirne il metodo
-- Eseguire una chiamata per stimare quanto carburante servirà per eseguire un metodo nell'EVM
+- Invia una transazione al contratto intelligente ed eseguine il metodo
+- Chiamarla per stimare il gas che l'esecuzione di un metodo richiederà, all'esecuzione nell'EVM
- Distribuire un contratto
- E molto altro...
@@ -287,5 +287,5 @@ _Conosci una risorsa pubblica che ti è stata utile? Modifica questa pagina e ag
## Tutorial correlati {#related-tutorials}
- [Set up Web3js to use the Ethereum blockchain in JavaScript](/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/) _– Istruzioni per impostare web3.js in un progetto._
-- [Calling a Smart Contract from JavaScript](/developers/tutorials/calling-a-smart-contract-from-javascript/) _– Usando il token Dai, impara a chiamare le funzioni dei contratti con JavaScript_
+- [Chiamare un contratto intelligente da JavaScript](/developers/tutorials/calling-a-smart-contract-from-javascript/) _- Usando il token DAI, impara come chiamare la funzione dei contratti usando JavaScript._
- [Sending transactions using web3 and Alchemy](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) _– Istruzioni passo passo per l'invio di transazioni dal backend._
diff --git a/src/content/translations/it/developers/docs/apis/json-rpc/index.md b/src/content/translations/it/developers/docs/apis/json-rpc/index.md
index af792666643..18a192c4edf 100644
--- a/src/content/translations/it/developers/docs/apis/json-rpc/index.md
+++ b/src/content/translations/it/developers/docs/apis/json-rpc/index.md
@@ -48,7 +48,7 @@ Ecco alcuni esempi:
### Dati non formattati {#unformatted-data-encoding}
-Per la codifica di dati non formattati (insiemi di dati, indirizzi del conto, hash, insiemi di bytecode): codifica come esadecimali, prefisso "0x", due cifre esadecimali per byte.
+Codificando i dati non formattati (insiemi di dati, indirizzi dei conti, hash, insiemi di bytecode): codifica come esadecimali, prefisso "0x", due cifre esadecimali per byte.
Ecco alcuni esempi:
@@ -79,7 +79,7 @@ Le seguenti opzioni sono possibili per il parametro defaultBlock:
## Esempi
-Su questa pagina forniamo esempi su come usare gli endpoint individuali dell'API JSON_RPC usando lo strumento della riga di comando, [curl](https://curl.se). Questi esempi di endpoint individuali si trovano di seguito nella sezione [esempi di Curl](#curl-examples). In seguito in questa pagina, forniamo anche un [esempio end-to-end](#usage-example) per compilare e distribuire un contratto intelligente usando un nodo di Geth, l'API di JSON_RPC e curl.
+Su questa pagina forniamo esempi su come usare gli endpoint individuali dell'API JSON_RPC usando lo strumento della riga di comando, [curl](https://curl.se). Questi esempi di endpoint individuali si trovano di seguito nella sezione [esempi di Curl](#curl-examples). In seguito nella pagina, forniamo anche un [esempio completo](#usage-example) per la compilazione e la distribuzione di un contratto intelligente usando un nodo di Geth, l'API JSON_RPC e curl.
## Esempi di Curl {#curl-examples}
@@ -104,7 +104,7 @@ Alcuni metodi base del protocollo JSON-RPC richiedono dati dalla rete di Ethereu
### Metodi di Stato {#state_methods}
-> Metodi che indicano lo stato corrente di tutti i dati immagazzinati. Lo "stato" è come una grande RAM condivisa, che include i saldi dei conti, i dati dei contratti e le stime del gas.
+> Metodi che indicano lo stato corrente di tutti i dati immagazzinati. Lo "stato" è come una grande porzione di RAM condivisa, che include i saldi dei conti, i dati dei contratti e le stime del gas.
- [eth_getBalance](#eth_getbalance)
- [eth_getStorageAt](#eth_getstorageat)
@@ -213,7 +213,7 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"net_version","params":[],"id":67
}
```
-### net_listening {#net_peercount}
+### net_listening {#net_listening}
Restituisce `true` se il client sta ascoltando attivamente le connessioni di rete.
@@ -238,7 +238,7 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"net_listening","params":[],"id":
}
```
-### net_peerCount {#net_listening}
+### net_peerCount {#net_peercount}
Restituisce il numero di pari attualmente connessi al client.
@@ -412,7 +412,7 @@ Nessuno
**Restituisce**
-`QUANTITY` - intero del prezzo corrente di gas in wei.
+`QUANTITY`: intero del prezzo corrente del gas in wei.
**Esempio**
@@ -479,7 +479,7 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id
### eth_getBalance {#eth_getbalance}
-Restituisce il saldo del conto del dato indirizzo.
+Restituisce il saldo del conto dell'indirizzo dato.
**Parametri**
@@ -800,8 +800,8 @@ Firma una transazione che può essere inviata alla rete in un secondo momento ut
- `from`: `DATI`, 20 Bytes - L'indirizzo da cui viene inviata la transazione.
- `to`: `DATI`, 20 Bytes - (opzionale quando si crea un nuovo contratto) L'indirizzo a cui è indirizzata la transazione.
-- `gas`: `QUANTITÀ` - (opzionale, predefinito: 90000) Intero del gas fornito per l'esecuzione della transazione. Restituirà il gas inutilizzato.
-- `gasPrice`: `QUANTITY` - (opzionale, predefinito: To-Be-Determined) Intero del prezzo del gas utilizzato per ogni gas pagato, in Wei.
+- `gas`: `QUANTITÀ`: (facoltativo, predefinito: 90000) Intero del gas fornito per l'esecuzione della transazione. Restituirà il gas inutilizzato.
+- `gasPrice`: `QUANTITY`: (facoltativo, predefinito: To-Be-Determined) Intero del gasPrice usato per ogni gas pagato, in Wei.
- `value`: `QUANTITÀ` - (opzionale) Intero del valore inviato con questa transazione, in Wei.
- `data`: `DATI` - Il codice compilato di un contratto OPPURE l'hash della firma del metodo richiamato e i parametri codificati.
- `nonce`: `QUANTITÀ` - (opzionale) Intero di una nonce. Ciò permette di sovrascrivere le proprie transazioni in sospeso che utilizzano la stessa nonce.
@@ -833,8 +833,8 @@ Se il campo dati contiene il codice, crea una nuova transazione via messaggio o
- `from`: `DATI`, 20 Bytes - L'indirizzo da cui viene inviata la transazione.
- `to`: `DATI`, 20 Bytes - (opzionale quando si crea un nuovo contratto) L'indirizzo a cui è indirizzata la transazione.
-- `gas`: `QUANTITÀ` - (opzionale, predefinito: 90000) Intero del gas fornito per l'esecuzione della transazione. Restituirà il gas inutilizzato.
-- `gasPrice`: `QUANTITY` - (opzionale, predefinito: To-Be-Determined) Intero del prezzo del gas utilizzato per ogni gas pagato, in Wei.
+- `gas`: `QUANTITY`: (facoltativo, prededfinito: 90000) Intero del gas fornito per l'esecuzione della transazione. Restituirà il gas inutilizzato.
+- `gasPrice`: `QUANTITY`: (facoltativo, predefinito: To-Be-Determined) Intero del gasPrice usato per ogni gas pagato.
- `value`: `QUANTITÀ` - (opzionale) Intero del valore inviato con questa transazione, in Wei.
- `data`: `DATI` - Il codice compilato di un contratto OPPURE l'hash della firma del metodo richiamato e i parametri codificati.
- `nonce`: `QUANTITÀ` - (opzionale) Intero di una nonce. Questo permette di sovrascrivere le tue transazioni in sospeso che utilizzano la stessa nonce.
@@ -914,8 +914,8 @@ Esegue immediatamente un nuovo messaggio di chiamata senza creare una transazion
- `from`: `DATA`, 20 Bytes - (opzionale) L'indirizzo da cui viene inviata la transazione.
- `to`: `DATA`, 20 Bytes - L'indirizzo a cui è indirizzata la transazione.
-- `gas`: `QUANTITY` - (opzionale) Intero del gas fornito per l'esecuzione della transazione. eth_call consuma zero gas, ma questo parametro potrebbe essere necessario per alcune esecuzioni.
-- `gasPrice`: `QUANTITY` - (opzionale) Intero del prezzo del gas utilizzato per ogni gas pagato, in Wei
+- `gas`: `QUANTITY`: (facoltativo) Intero del gas fornito per l'esecuzione della transazione. eth_call consuma zero gas, ma questo parametro potrebbe essere necessario per alcune esecuzioni.
+- `gasPrice`: `QUANTITY`: (facoltativo) Intero del gasPrice usato per ogni gas pagato
- `value`: `QUANTITY` - (opzionale) Intero del valore inviato con questa transazione
- `data`: `DATA` - (opzionale) Hash del metodo di firma e dei parametri codificati. Per maggiori dettagli consulta [Ethereum Contract ABI nella documentazione di Solidity](https://docs.soliditylang.org/en/latest/abi-spec.html)
@@ -940,15 +940,15 @@ curl -X POST --data '{"jsonrpc":"2.0","method":"eth_call","params":[{see above}]
### eth_estimateGas {#eth_estimategas}
-Genera e restituisce una stima di quanto gas è necessario per consentire il completamento della transazione. La transazione non verrà aggiunta alla blockchain. Si noti che la stima può essere significativamente superiore alla quantità di gas effettivamente utilizzato dall'operazione, e ciò per una serie di motivi, tra cui la meccanica EVM e le prestazioni del nodo.
+Genera e restituisce una stima di quanto gas è necessario per consentire il completamento della transazione. La transazione non verrà aggiunta alla blockchain. Nota che la stima potrebbe esser significativamente superiore all'importo di gas effettivamente usato dall'operazione, per vari motivi, incluse le meccaniche dell'EVM e le prestazioni del nodo.
**Parametri**
-Vedi i parametri [eth_call](#eth_call), tutte le proprietà dovrebbero essere opzionali. Se non viene specificato alcun limite di gas, Go Ethereum usa il limite di gas del blocco in sospeso come limite superiore. Di conseguenza, la stima restituita potrebbe non essere sufficiente per eseguire la chiamata/transazione quando la quantità di gas è superiore al limite del gas del blocco in sospeso.
+Vedi i parametri [eth_call](#eth_call), tutte le proprietà dovrebbero essere opzionali. Se non è specificato alcun limite di gas, geth usa il limite di gas del blocco dal blocco in sospeso come limite massimo. Di conseguenza, la stima restituita potrebbe non esser sufficiente per eseguire la chiamata/transazione quando l'importo di gas è maggiore del limite di gas del blocco.
**Restituisce**
-`QUANTITY` - La quantità di gas utilizzato.
+`QUANTITY`: l'importo di gas utilizzato.
**Esempio**
@@ -997,8 +997,8 @@ params: [
- `totalDifficulty`: `QUANTITY` - intero della difficoltà totale della catena fino a questo blocco.
- `extraData`: `DATA` - il campo "dati extra" di questo blocco.
- `size`: `QUANTITY` - intero in bytes della dimensione di questo blocco.
-- `gasLimit`: `QUANTITY` - il gas massimo consentito in questo blocco.
-- `gasUsed`: `QUANTITY` - la totalità di gas usato da tutte le transazioni di questo blocco.
+- `gasLimit`: `QUANTITY`: il gas massimo consentito in questo blocco.
+- `gasUsed`: `QUANTITY`: il gas totale usato da tutte le transazioni in questo blocco.
- `timestamp`: `QUANTITY` - la marca temporale unix relativa a quando il blocco è stato collazionato.
- `transactions`: `Array` - Matrice di oggetti transazione o hash di transazione da 32 byte a seconda dell'ultimo parametro specificato.
- `uncles`: `Array` - Matrice di ommer hash.
@@ -1086,8 +1086,8 @@ params: ["0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"]
- `blockHash`: `DATA`, 32 byte - hash del blocco in cui si trovava questa transazione. `null` quando è in sospeso.
- `blockNumber`: `QUANTITY` - numero di blocco in cui si trovava questa transazione. `null` quando è in sospeso.
- `from`: `DATA`, 20 Bytes - l'indirizzo del mittente.
-- `gas`: `QUANTITY` - gas fornito dal mittente.
-- `gasPrice`: `QUANTITY` - prezzo del gas fornito dal mittente in Wei.
+- `gas`: `QUANTITY`: gas fornito dal mittente.
+- `gasPrice`: `QUANTITY`: prezzo del gas fornito dal mittente in Wei.
- `hash`: `DATA`, 32 Bytes - hash della transazione.
- `input`: `DATA` - i dati inviati insieme alla transazione.
- `nonce`: `QUANTITY` - il numero di transazioni effettuate dal mittente prima di questa.
@@ -1202,8 +1202,8 @@ params: ["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"]
- `blockNumber`: `QUANTITY` - numero di blocco in cui si trovava questa transazione.
- `from`: `DATA`, 20 Bytes - l'indirizzo del mittente.
- `to`: `DATA`, 20 Bytes - l'indirizzo del destinatario. null quando è una transazione di creazione del contratto.
-- `cumulativeGasUsed`: `QUANTITY` - La quantità totale di gas utilizzato quando questa transazione è stata eseguita nel blocco.
-- `gas Usato`: `QUANTITÀ` - La quantità di gas utilizzata solo da questa specifica transazione.
+- `cumulativeGasUsed`: `QUANTITY`: L'importo totale di gas usato all'esecuzione nel blocco di questa transazione.
+- `gas Usato`: `QUANTITÀ`: L'importo di gas usato solo da questa specifica transazione.
- `contractAddress`: `DATA`, 20 Bytes - L'indirizzo del contratto creato, se la transazione consisteva nella creazione di un contratto, altrimenti `null`.
- `logs`: `Array` - Array di oggetti di registro che questa transazione ha generato.
- `logsBloom`: `DATA`, 256 Bytes - Filtro Bloom per i client leggeri per recuperare rapidamente i log correlati. Restituisce anche _either_:
@@ -2059,7 +2059,7 @@ Crea un filtro per notificare, quando il client riceve un messaggio Whisper corr
1. `Oggetto` - Le opzioni del filtro:
- `to`: `DATA`, 60 Byte - (opzionale) L'identità del destinatario. _Quando è presente, proverà a decifrare qualsiasi messaggio in arrivo se il client detiene la chiave privata di questa identità._
-- `topics`: `Array of DATA` - Array of `DATA` topics which the incoming message's topics should match. You can use the following combinations:
+- `topics`: `Array of DATA` - Insieme di argomenti `DATA` a cui dovrebbero corrispondere gli argomenti del messaggio in entrata. You can use the following combinations:
- `[A, B] = A && B`
- `[A, [B, C]] = A && (B || C)`
- `[null, A, B] = ANYTHING && A && B` `null` funge da jolly
@@ -2201,7 +2201,7 @@ Risultato vedi [shh_getFilterChanges](#shh_getfilterchanges)
Questa sezione include una dimostrazione di come distribuire un contratto utilizzando solo l'interfaccia RPC. Esistono vie alternative per la distribuzione di contratti in cui questa complessità viene eliminata tramite astrazione, ad esempio utilizzando librerie costruite partendo dall'interfaccia RPC, come [web3. s](https://web3js.readthedocs.io/) e [web3.py](https://github.com/ethereum/web3.py). Queste astrazioni sono generalmente più facili da capire e meno soggette a errori, ma è comunque utile capire cosa succede dietro le quinte.
-Di seguito è riportato un semplice smart contract chiamato `Multiply7` che verrà distribuito utilizzando l'interfaccia JSON-RPC su un nodo Ethereum. Questo tutorial presuppone che il lettore stia già eseguendo un nodo Geth. Maggiori informazioni sui nodi e sui client sono disponibili [qui](/developers/docs/nodes-and-clients/run-a-node). Fare riferimento alla documentazione del [client](/developers/docs/nodes-and-clients/) individuale per capire come avviare HTTP JSON-RPC per i client non-Geth. La maggior parte dei clienti serve di default su `localhost:8545`.
+Di seguito, trovi un semplice contratto intelligente, detto `Multiply7`, che sarà distribuito usando l'interfaccia JSON-RPC a un nodo di Ethereum. Questo tutorial presuppone che il lettore stia già eseguendo un nodo Geth. Maggiori informazioni sui nodi e sui client sono disponibili [qui](/developers/docs/nodes-and-clients/run-a-node). Fare riferimento alla documentazione del [client](/developers/docs/nodes-and-clients/) individuale per capire come avviare HTTP JSON-RPC per i client non-Geth. La maggior parte dei clienti serve di default su `localhost:8545`.
```javascript
contract Multiply7 {
@@ -2252,7 +2252,7 @@ Binary:
6060604052341561000f57600080fd5b60eb8061001d6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063c6888fa1146044575b600080fd5b3415604e57600080fd5b606260048080359060200190919050506078565b6040518082815260200191505060405180910390f35b60007f24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da600783026040518082815260200191505060405180910390a16007820290509190505600a165627a7a7230582040383f19d9f65246752244189b02f56e8d0980ed44e7a56c0b200458caad20bb0029
```
-Ora che abbiamo il codice compilato dobbiamo determinare quanto gas occorre per distribuirlo. L'interfaccia RPC ha un metodo `eth_estimateGas` che ci darà una stima.
+Ora che abbiamo il codice compilato, dobbiamo determinare quanto gas occorre per distribuirlo. L'interfaccia RPC ha un metodo `eth_estimateGas` che ci darà una stima.
```bash
curl --data '{"jsonrpc":"2.0","method": "eth_estimateGas", "params": [{"from": "0x9b1d35635cc34752ca54713bb99d38614f63c955", "data": "0x6060604052341561000f57600080fd5b60eb8061001d6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063c6888fa1146044575b600080fd5b3415604e57600080fd5b606260048080359060200190919050506078565b6040518082815260200191505060405180910390f35b60007f24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da600783026040518082815260200191505060405180910390a16007820290509190505600a165627a7a7230582040383f19d9f65246752244189b02f56e8d0980ed44e7a56c0b200458caad20bb0029"}], "id": 5}' -H "Content-Type: application/json" localhost:8545
@@ -2266,7 +2266,7 @@ curl --data '{"jsonrpc":"2.0","method": "eth_sendTransaction", "params": [{"from
{"id":6,"jsonrpc":"2.0","result":"0xe1f3095770633ab2b18081658bad475439f6a08c902d0915903bafff06e6febf"}
```
-La transazione è accettata dal nodo e viene restituito un hash di transazione. Questo hash può essere usato per tracciare la transazione. Il passo successivo è quello di determinare l'indirizzo dove il nostro contratto è distribuito. Ogni transazione eseguita creerà una ricevuta. Questa ricevuta contiene varie informazioni sull'operazione, ad esempio il blocco in qui l'operazione è stata inclusa e la quantità di gas utilizzato dall'EVM. Se una transazione crea un contratto, conterrà anche l'indirizzo dello stesso. Possiamo recuperare la ricevuta con il metodo `eth_getTransactionReceipt` RPC.
+La transazione è accettata dal nodo e viene restituito un hash di transazione. Questo hash può essere usato per tracciare la transazione. Il passo successivo è quello di determinare l'indirizzo dove il nostro contratto è distribuito. Ogni transazione eseguita creerà una ricevuta. Questa ricevuta contiene varie informazioni sulla transazione, ad esempio, in quale blocco è stata inclusa e quanto gas è stato usato dall'EVM. Se una transazione crea un contratto, conterrà anche l'indirizzo dello stesso. Possiamo recuperare la ricevuta con il metodo `eth_getTransactionReceipt` RPC.
```bash
curl --data '{"jsonrpc":"2.0","method": "eth_getTransactionReceipt", "params": ["0xe1f3095770633ab2b18081658bad475439f6a08c902d0915903bafff06e6febf"], "id": 7}' -H "Content-Type: application/json" localhost:8545
@@ -2275,11 +2275,11 @@ curl --data '{"jsonrpc":"2.0","method": "eth_getTransactionReceipt", "params": [
Il nostro contratto è stato creato su `0x4d03d617d700cf81935d7f797f4e2ae719648262`. Un risultato nullo invece di una ricevuta significa che la transazione non è ancora stata inclusa in un blocco. Attendere un attimo e controllare se il miner è in esecuzione, quindi riprovare.
-#### Interagire con gli smart contract {#interacting-with-smart-contract}
+#### Interagire con i contratti intelligenti {#interacting-with-smart-contract}
In questo esempio invieremo una transazione usando `eth_sendTransaction` al metodo `multiply` del contratto.
-`eth_sendTransaction` richiede diversi argomenti, in particolare `from`, `to` e `data`. `From` è l'indirizzo pubblico del nostro account, mentre `to` è l'indirizzo del contratto. L'argomento `data` contiene un carico utile che definisce quale metodo deve essere chiamato e con quali argomenti. È qui che entra in gioco l'[ABI (interfaccia binaria dell'applicazione)](https://docs.soliditylang.org/en/latest/abi-spec.html). L'ABI è un file JSON che determina come definire e codificare i dati per l'EVM.
+`eth_sendTransaction` richiede diversi argomenti, in particolare `from`, `to` e `data`. `From` è l'indirizzo pubblico del nostro conto, mentre `to` è l'indirizzo del contratto. L'argomento `data` contiene un carico utile che definisce quale metodo deve essere chiamato e con quali argomenti. È qui che entra in gioco l'[ABI (interfaccia binaria dell'applicazione)](https://docs.soliditylang.org/en/latest/abi-spec.html). L'ABI è un file JSON che determina come definire e codificare i dati per l'EVM.
I byte del carico utile definiscono quale metodo viene chiamato nel contratto. Si tratta dei primi 4 byte dall'hash Keccak sul nome della funzione e sui suoi tipi di argomento, con codifica esadecimale. La funzione di moltiplicazione accetta un uint che è un alias per uint256. Ci ritroviamo quindi con:
diff --git a/src/content/translations/it/developers/docs/blocks/index.md b/src/content/translations/it/developers/docs/blocks/index.md
index d8d795885d3..b1eb2f7b871 100644
--- a/src/content/translations/it/developers/docs/blocks/index.md
+++ b/src/content/translations/it/developers/docs/blocks/index.md
@@ -8,7 +8,7 @@ I blocchi sono un insieme di transazioni che contengono un hash del blocco prece
## Prerequisiti {#prerequisites}
-Quello dei blocchi è un argomento piuttosto basico. Ad ogni modo, per comprendere meglio questa pagina, consigliamo innanzi tutto di leggere [Account](/developers/docs/accounts/), [Transazioni](/developers/docs/transactions/) e la nostra [introduzione a Ethereum](/developers/docs/intro-to-ethereum/).
+Quello dei blocchi è un argomento piuttosto basico. Ma, per aiutarti a comprendere meglio questa pagina, ti consigliamo innanzitutto di leggere sui [Conti](/developers/docs/accounts/), sulle [Transazioni](/developers/docs/transactions/) e la nostra [introduzione a Ethereum](/developers/docs/intro-to-ethereum/).
## Perché i blocchi? {#why-blocks}
@@ -86,7 +86,7 @@ L'`execution_payload_header` contiene i seguenti campi:
```
parent_hash: hash del blocco padre
-fee_recipient: indirizzo dell'account a cui pagare le commissioni sulla transazione
+fee_recipient: indirizzo del conto a cui pagare le commissioni sulla transazione
state_root: hash radice per lo stato globale dopo l'applicazione delle modifiche in questo blocco
receipts_root: hash del trie delle ricevute delle transazioni
logs_bloom: struttura di dati contenente i registri dell'evento
@@ -96,7 +96,7 @@ gas_limit: il carburante massimo consentito in questo blocco
gas_used: la quantità effettiva di carburante usata in questo blocco
timestamp: il tempo di blocco
extra_data: dati aggiuntivi arbitrari come byte grezzi
-base_fee_per_gas: il valore della commissione base
+base_fee_per_gas: il valore della commissione di base
block_hash: hash del blocco di esecuzione
transactions_root: hash radice delle transazioni nel payload
```
@@ -105,7 +105,7 @@ Lo stesso `execution_payload` contiene quanto segue (si noti che è identico all
```
parent_hash: hash del blocco padre
-fee_recipient: indirizzo dell'account a cui pagare le commissioni sulla transazione
+fee_recipient: indirizzo del conto a cui pagare le commissioni sulla transazione
state_root: hash radice per lo stato globale dopo l'applicazione delle modifiche in questo blocco
receipts_root: hash del trie delle ricevute delle transazioni
logs_bloom: struttura di dati contenente i registri dell'evento
@@ -115,7 +115,7 @@ gas_limit: il carburante massimo consentito in questo blocco
gas_used: la quantità effettiva di carburante usata in questo blocco
timestamp: il tempo di blocco
extra_data: dati aggiuntivi arbitrari come byte grezzi
-base_fee_per_gas: il valore della commissione base
+base_fee_per_gas: il valore della commissione di base
block_hash: hash del blocco di esecuzione
transactions: elenco delle transazioni da eseguire
```
@@ -126,7 +126,7 @@ Il tempo di blocco si riferisce al tempo che separa i blocchi. In Ethereum, il t
## Dimensioni del blocco {#block-size}
-Un'ultima nota importante: i blocchi stessi sono limitati in termini di dimensioni. Ogni blocco ha una dimensione prevista di 15 milioni di carburante, ma la dimensione dei blocchi aumenta o diminuisce in base alla domanda della rete, fino al limite massimo di 30 milioni di carburante del blocco (2 volte la dimensione previste del blocco). La quantità totale di carburante usato da tutte le transazioni nel blocco deve essere inferiore al limite di carburante del blocco. Ciò è importante perché evita che i blocchi siano arbitrariamente grandi. Se i blocchi potessero essere arbitrariamente grandi, i nodi completi meno performanti, gradualmente, non riuscirebbero più stare al passo con la rete per via dei requisiti di spazio e velocità. Più grande è il blocco, maggiore sarà la potenza di calcolo richiesta per elaborarlo in tempo per il prossimo slot. Questa è una forza centralizzante, a cui si resiste limitando le dimensioni dei blocchi.
+Un'ultima nota importante: i blocchi stessi sono limitati in termini di dimensioni. Ogni blocco ha una dimensione prevista di 15 milioni di gas, ma la dimensione dei blocchi aumenterà o diminuirà a seconda della domanda della rete, fino al limite del blocco di 30 milioni di gas (2 volte la dimensione prevista del blocco). L'importo totale di gas consumato da tutte le transazioni nel blocco dev'essere inferiore al limite di gas del blocco. Ciò è importante perché evita che i blocchi siano arbitrariamente grandi. Se i blocchi potessero essere arbitrariamente grandi, i nodi completi meno performanti, gradualmente, non riuscirebbero più stare al passo con la rete per via dei requisiti di spazio e velocità. Più grande è il blocco, maggiore sarà la potenza di calcolo richiesta per elaborarlo in tempo per il prossimo slot. Questa è una forza centralizzante, a cui si resiste limitando le dimensioni dei blocchi.
## Letture consigliate {#further-reading}
@@ -135,5 +135,5 @@ _Conosci una risorsa della community che ti è stata utile? Modifica questa pagi
## Argomenti correlati {#related-topics}
- [Transazioni](/developers/docs/transactions/)
-- [Carburante](/developers/docs/gas/)
+- [Gas](/developers/docs/gas/)
- [Proof of Stake](/developers/docs/consensus-mechanisms/pos)
diff --git a/src/content/translations/it/developers/docs/consensus-mechanisms/index.md b/src/content/translations/it/developers/docs/consensus-mechanisms/index.md
index 1c18196ec23..78cf705db84 100644
--- a/src/content/translations/it/developers/docs/consensus-mechanisms/index.md
+++ b/src/content/translations/it/developers/docs/consensus-mechanisms/index.md
@@ -72,7 +72,7 @@ La **resistenza di Sybil** misura l'efficacia di un protocollo contro un [attacc
Per decidere quale catena sia quella "corretta" si usa una **regola di selezione della catena**. Bitcoin usa la regola della "catena più lunga", nel senso che la blockchain più lunga è quella che il resto dei nodi accetta come valida e con cui lavora. Per le catene di Proof of Work, la catena più lunga è determinata dalla difficoltà cumulativa e totale del Proof of Work della catena. Anche Ethereum usava la regola della catena più lunga; tuttavia, ora che Ethereum opera sul Proof of Stake, ha adottato un algoritmo di scelta della diramazione che misura il 'peso' della catena. Il peso è la somma cumulata dei voti dei validatori, ponderata dai saldi di ether in staking dei validatori.
-Ethereum usa un meccanismo di consenso noto come [Gasper](/developers/docs/consensus-mechanisms/pos/gasper/), che combina il [Proof of Work Casper FFG](https://arxiv.org/abs/1710.09437) con la [regola di scelta della diramazione GHOST](https://arxiv.org/abs/2003.03052).
+Ethereum usa un meccanismo di consenso noto come [Gasper](/developers/docs/consensus-mechanisms/pos/gasper/), che combina il [proof-of-work di Casper FFG](https://arxiv.org/abs/1710.09437) con la [regola di scelta della biforcazione di GHOST](https://arxiv.org/abs/2003.03052).
## Letture consigliate {#further-reading}
diff --git a/src/content/translations/it/developers/docs/consensus-mechanisms/pos/index.md b/src/content/translations/it/developers/docs/consensus-mechanisms/pos/index.md
index d381272ac1c..2df745a7dc6 100644
--- a/src/content/translations/it/developers/docs/consensus-mechanisms/pos/index.md
+++ b/src/content/translations/it/developers/docs/consensus-mechanisms/pos/index.md
@@ -12,7 +12,7 @@ Per capire meglio questa pagina ti consigliamo di leggere i [meccanismi di conse
## Cos'è la proof-of-stake (PoS)? {#what-is-pos}
-La Proof of Stake è alla base di certi [meccanismi di consenso](/developers/docs/consensus-mechanisms/) usati dalle blockchain per ottenere il consenso distribuito. Nel proof-of-work, i miner provano di avere del capitale a rischio consumando energia. Ethereum usa il Proof of Stake, in cui i validatori mettono esplicitamente in stakaing il capitale sotto forma di ETH, in uno smart contract su Ethereum. Questi ETH in staking, poi, fungono da garanzia che può essere distrutta se il validatore si comporta in modo disonesto o pigro. Il validatore è poi responsabile di verificare che i nuovi blocchi propagati sulla rete siano validi e, occasionalmente, di creare e propagare nuovi blocchi.
+La Proof of Stake è alla base di certi [meccanismi di consenso](/developers/docs/consensus-mechanisms/) usati dalle blockchain per ottenere il consenso distribuito. Nel proof-of-work, i miner provano di avere del capitale a rischio consumando energia. Ethereum usa il proof-of-stake, in cui i validatori mettono esplicitamente in staking il capitale in forma di ETH, in un contratto intelligente su Ethereum. Questi ETH in staking, poi, fungono da garanzia che può essere distrutta se il validatore si comporta in modo disonesto o pigro. Il validatore è poi responsabile di verificare che i nuovi blocchi propagati sulla rete siano validi e, occasionalmente, di creare e propagare nuovi blocchi.
La Proof of Stake porta con sé una serie di miglioramenti rispetto all'ormai obsoleto sistema Proof of Work:
@@ -58,12 +58,16 @@ In generale è stato dimostrato che il proof-of-stake, come implementato su Ethe
| Il proof-of-stake offre una maggiore sicurezza cripto-economica rispetto al proof-of-work | Gli utenti devono far funzionare tre parti di software per partecipare al proof-of-stake di Ethereum. |
| È richiesta una minore emissione di nuovi ETH per incentivare i partecipanti alla rete | |
+## Preferisci un approccio visivo all'apprendimento? {#visual-learner}
+
+
+
## Letture consigliate {#further-reading}
- [FAQ Proof of Stake](https://vitalik.ca/general/2017/12/31/pos_faq.html) _Vitalik Buterin_
- [Cos'è il Proof of Stake](https://consensys.net/blog/blockchain-explained/what-is-proof-of-stake/) _ConsenSys_
- [Cos'è il Proof of Stake e perché è importante](https://bitcoinmagazine.com/culture/what-proof-of-stake-is-and-why-it-matters-1377531463) _Vitalik Buterin_
-- [La spiegazione della Beacon Chain Ethereum 2.0 da leggere per prima](https://ethos.dev/beacon-chain/) _Ethos.dev_
+- [La spiegazione della Beacon Chain di Ethereum 2.0, da leggere per prima](https://ethos.dev/beacon-chain) _Ethos.dev_
- [Perché il Proof of Stake (Nov 2020)](https://vitalik.ca/general/2020/11/06/pos2020.html) _Vitalik Buterin_
- [Proof of Stake: come ho imparato ad amare la soggettività debole](https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity/) _Vitalik Buterin_
- [Attacco e difesa del Proof of Stake di Ethereum](https://mirror.xyz/jmcook.eth/YqHargbVWVNRQqQpVpzrqEQ8IqwNUJDIpwRP7SS5FXs)
@@ -71,4 +75,4 @@ In generale è stato dimostrato che il proof-of-stake, come implementato su Ethe
## Argomenti correlati {#related-topics}
-- [Proof-of-work](/developers/docs/consensus-mechanisms/pow/)
+- [Proof of Work](/developers/docs/consensus-mechanisms/pow/)
diff --git a/src/content/translations/it/developers/docs/consensus-mechanisms/pow/index.md b/src/content/translations/it/developers/docs/consensus-mechanisms/pow/index.md
index b1f401d74f8..c481259a226 100644
--- a/src/content/translations/it/developers/docs/consensus-mechanisms/pow/index.md
+++ b/src/content/translations/it/developers/docs/consensus-mechanisms/pow/index.md
@@ -7,7 +7,7 @@ lang: it
La rete Ethereum venne avviata usando un meccanismo di consenso che utilizzava il **[Proof of Work (PoW)](/developers/docs/consensus-mechanisms/pow)** che consentiva ai nodi della rete Ethereum di concordare sullo stato di tutte le informazioni registrate sulla blockchain Ethereum e impediva alcuni tipi di attacchi economici. Tuttavia, Ethereum ha disattivato il Proof of Work nel 2022 e ha iniziato, invece, a usare il [Proof of Stake](/developers/docs/consensus-mechanisms/pos).
- Il Proof of Work è diventato ormai obsoleto. Ethereum non usa più il Proof of Work come parte del suo meccanismo di consenso, e usa invece il Proof of Stake. Leggi di più sul Proof of Stake e sullo staking.
+ Il Proof of Work è diventato ormai obsoleto. Ethereum non usa più il Proof of Work come parte del suo meccanismo di consenso, e usa invece il Proof of Stake. Leggi di più sul Proof of Stake e sullo staking.
## Prerequisiti {#prerequisites}
@@ -16,7 +16,7 @@ Per comprendere meglio questa pagina, consigliamo innanzi tutto di leggere il ma
## Cos'è la Proof of Work (PoW)? {#what-is-pow}
-Il consenso di Nakamoto, che utilizza il Proof of Work, è il meccanismo che un tempo consentiva di raggiungere il consenso nella rete decentralizzata Ethereum (ossia l'accordo di tutti i nodi) su alcuni aspetti come il saldo degli account e l'ordine delle transazioni. Questo impediva che gli utenti spendessero due volte le loro monete e assicurava che la catena Ethereum fosse estremamente difficile da attaccare o manipolare. Ora queste proprietà di sicurezza provengono invece dal Proof of Stake, usando il meccanismo di consenso noto come [Gasper](/developers/docs/consensus-mechanisms/pos/gasper/).
+Il consenso di Nakamoto, che utilizza il proof-of-work, è il meccanismo che un tempo consentiva alla rete decentralizzata di Ethereum di raggiungere il consenso (ossia, l'accordo di tutti i nodi) su aspetti come i saldi dei conti e l'ordine delle transazioni. Questo impediva che gli utenti spendessero due volte le loro monete e assicurava che la catena Ethereum fosse estremamente difficile da attaccare o manipolare. Ora, invece, queste proprietà di sicurezza provengono dal proof-of-stake, usando il meccanismo di consenso noto come [Gasper](/developers/docs/consensus-mechanisms/pos/gasper/).
## Proof of Work e mining {#pow-and-mining}
diff --git a/src/content/translations/it/developers/docs/consensus-mechanisms/pow/mining/index.md b/src/content/translations/it/developers/docs/consensus-mechanisms/pow/mining/index.md
index f9cffa3e212..2b0ed75e198 100644
--- a/src/content/translations/it/developers/docs/consensus-mechanisms/pow/mining/index.md
+++ b/src/content/translations/it/developers/docs/consensus-mechanisms/pow/mining/index.md
@@ -5,9 +5,7 @@ lang: it
---
-
-Il Proof of Work non è più il meccanismo di consenso alla base di Ethereum, il che significa che il mining è stato disattivato. Invece, Ethereum è protetto dai validatori che mettono ETH in staking. Puoi iniziare fin da subito a mettere in staking i tuoi ETH. Leggi di più su [La Fusione](/upgrades/merge/), il [Proof of Stake](/developers/docs/consensus-mechanisms/pos/) e lo [staking](/staking/). Questa pagina è per interesse storico.
-
+Il Proof of Work non è più il meccanismo di consenso alla base di Ethereum, il che significa che il mining è stato disattivato. Invece, Ethereum è protetto dai validatori che mettono ETH in staking. Puoi iniziare fin da subito a mettere in staking i tuoi ETH. Leggi di più su La Fusione, il proof-of-stake e lo staking. Questa pagina è solo per interesse storico.
## Prerequisiti {#prerequisites}
@@ -43,11 +41,11 @@ Per approfondire ulteriormente la redditività del mining, usa un apposito calco
## Come avveniva il mining delle transazioni Ethereum {#how-ethereum-transactions-were-mined}
-1. Un utente scrive e firma una richiesta di [transazione](/developers/docs/transactions/) con la chiave privata di un [account](/developers/docs/accounts/).
+1. Un utente scrive e firma una richiesta di [transazione](/developers/docs/transactions/) con la chiave privata di un [conto](/developers/docs/accounts/).
2. L'utente trasmette la richiesta di transazione all'intera rete Ethereum attraverso un [nodo](/developers/docs/nodes-and-clients/).
3. Dopo aver recepito la richiesta della nuova transazione, ogni nodo nella rete Ethereum aggiunge la richiesta alla propria mempool locale, un elenco di tutte le richieste di transazioni delle quali è venuto a conoscenza e che non sono ancora state inviate alla blockchain in un blocco.
-4. A un certo punto, un nodo di mining aggrega diverse decine o centinaia di richieste di transazioni in un [blocco](/developers/docs/blocks/) potenziale, in modo da massimizzare le [commissioni sulle transazioni](/developers/docs/gas/) che verranno guadagnate, rimanendo comunque entro il limite di gas per blocco. A questo punto, il nodo di mining:
- 1. Verifica la validità di ogni richiesta di transazione (ad esempio che nessuno stia provando a trasferire ether da un account senza firma, che una richiesta non abbia un formato scorretto ecc.), dopodiché esegue il codice della richiesta, cambiando lo stato della propria copia locale dell'EVM. Il miner assegna la commissione sulle transazioni per ogni richiesta di transazione al proprio account.
+4. A un certo punto, un nodo di mining aggrega diverse dozzine o centinaia di richieste di transazione in un [blocco](/developers/docs/blocks/) potenziale, così da massimizzare le [commissioni di transazione](/developers/docs/gas/) che saranno guadagnate, entro il limite di gas del blocco. A questo punto, il nodo di mining:
+ 1. Verifica la validità di ogni richiesta di transazione (cioè, che nessuno stia provando a trasferire ether da un conto per cui non ha prodotto una firma, la richiesta non è malformata, etc.) e, poi, esegue il codice della richiesta, alterando lo stato della loro copia locale dell'EVM. Il miner assegna la commissione sulla transazione per ogni simile richiesta di transazione, al proprio conto.
2. Inizia il processo di produzione del "certificato di legittimità" Proof of Work per il blocco potenziale, una volta che tutte le richieste di transazione nel blocco sono state verificate ed eseguite nella copia dell'EVM locale.
5. Infine un miner concluderà la produzione di un certificato per un blocco che include la nostra richiesta di transazione specifica. Il miner trasmetterà quindi il blocco completato, che include il certificato e una checksum del nuovo stato dell'EVM dichiarato.
6. Gli altri nodi vengono a conoscenza del nuovo blocco. Verificano il certificato, eseguono tutte le transazioni sul blocco (includendo la transazione originalmente inviata dal nostro utente) e verificano che la checksum del nuovo stato dell'EVM dopo l'esecuzione di tutte le transazioni combaci quella dello stato dichiarato dal blocco del miner. Solo a questo punto allora questi nodi aggiungeranno il blocco alla coda della blockchain e accetteranno il nuovo stato dell'EVM come canonico.
@@ -64,7 +62,7 @@ Austin ti guiderà attraverso il mining e la blockchain basata sul proof-of-work
## L'algoritmo di mining {#mining-algorithm}
-La Rete principale di Ethereum ha sempre e solo usato un algoritmo di mining: ['Ethash'](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash). Ethash era il successore di un algoritmo di R&S originale, noto come ['Dagger-Hashimoto'](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto).
+La Rete principale di Ethereum ha sempre e solo usato un algoritmo di mining: ['Ethash'](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash). Ethhash fu il successore di un algoritmo R&D originale, noto come ['Dagger-Hashimoto'](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto).
[Maggiori informazioni sugli algoritmi di mining](/developers/docs/consensus-mechanisms/pow/mining-algorithms/).
diff --git a/src/content/translations/it/developers/docs/dapps/index.md b/src/content/translations/it/developers/docs/dapps/index.md
index d38e56ed889..eb5b8676e20 100644
--- a/src/content/translations/it/developers/docs/dapps/index.md
+++ b/src/content/translations/it/developers/docs/dapps/index.md
@@ -4,7 +4,7 @@ description:
lang: it
---
-Un'applicazione decentralizzata (dApp) è un'applicazione costruita su una rete decentralizzata che coniuga uno [smart contract](/developers/docs/smart-contracts/) con un'interfaccia utente frontend. In Ethereum gli Smart Contract sono accessibili e trasparenti (come le API aperte) quindi una dapp può anche includere Smart Contract scritto da altri.
+Un'applicazione decentralizzata (dapp) è un'applicazione costruita su una rete decentralizzata che combina un [contratto intelligente](/developers/docs/smart-contracts/) e l'interfaccia utente di un frontend. Su Ethereum, i contratti intelligenti sono accessibili e trasparenti (come le API aperte), quindi la tua dapp può persino includere un contratto intelligente, già scritto da qualcun altro.
## Prerequisiti {#prerequisites}
@@ -19,21 +19,21 @@ Una dapp può avere codice frontend e interfacce utente scritti in qualsiasi lin
- **Decentralizzate** - Le dApp operano su Ethereum, una piattaforma pubblica decentralizzata dove nessun individuo o gruppo detiene il controllo
- **Deterministiche**: eseguono la stessa funzione a prescindere dall'ambiente dove vengono eseguite.
- **Turing complete** - Le dApp possono eseguire qualsiasi azione una volta fornite le risorse necessarie
-- **Isolate** - Le dApp vengono eseguite in un ambiente virtuale noto come Ethereum Virtual Machine. In questo modo, se lo smart contract ha un bug, non ostacolerà il normale funzionamento della rete blockchain
+- **Isolate** - Le dApp sono eseguite in un ambiente virtuale, noto come la Macchina Virtuale di Ethereum, così che se il contratto intelligente contiene un bug, non ostacolerà il normale funzionamento della rete della blockchain
-### Informazioni sugli Smart Contract {#on-smart-contracts}
+### Sui contratti intelligenti {#on-smart-contracts}
-Per presentare le dapp, dobbiamo introdurre gli Smart Contract, cioè il backend della dapp, in mancanza di una definizione migliore. Per una panoramica dettagliata, consulta la nostra sezione sugli [smart contract](/developers/docs/smart-contracts/).
+Per introdurre le dapp, dobbiamo introdurre i contratti intelligenti: la backend di una dapp, in mancanza di un termine migliore. Per una panoramica dettagliata, consulta la nostra sezione sui [contratti intelligenti](/developers/docs/smart-contracts/).
-Uno Smart Contract è codice che gira sulla blockchain Ethereum e che funziona esattamente come programmato. Una volta che gli smart contract sono distribuiti sulla rete, non è possibile modificarli. Le dapp possono essere decentralizzate perché sono controllate della logica scritta nel contratto, non da un individuo o da un'azienda. Questo significa anche gli Smart Contract devono essere progettati molto attentamente e testati accuratamente.
+Un contratto intelligente è codice che risiede sulla blockchain di Ethereum e opera esattamente come programmato. Una volta distribuiti i contratti intelligenti sulla rete, non puoi modificarli. Le dapp possono essere decentralizzate perché sono controllate della logica scritta nel contratto, non da un individuo o da un'azienda. Questo significa anche che devi progettare i tuoi contratti molto attenteamente e testarli accuratamente.
## Vantaggi dello sviluppo delle dapp {#benefits-of-dapp-development}
-- **Nessun tempo di inattività** – Una volta che lo smart contract è distribuito sulla blockchain, la rete nel suo insieme sarà sempre in grado di servire i client che cercano di interagire con il contratto. Gli attori malevoli quindi non possono lanciare attacchi denial-of-service verso dapp singole.
+- **Nessun tempo di inattività** – Una volta distribuito il contratto intelligente sulla blockchain, l'intera rete potrà sempre servire i clienti che cercano di interagire con il contratto. Gli attori malevoli quindi non possono lanciare attacchi denial-of-service verso dapp singole.
- **Privacy**: non è necessario fornire un'identità reale per distribuire una dapp o interagirvi.
- **Resistenza alla censura**: nessuna entità sulla rete può impedire agli utenti di inviare transazioni, distribuire dapp o leggere dati dalla blockchain.
- **Completa integrità dei dati**: i dati conservati sulla blockchain sono immutabili e indiscutibili, grazie alle primitive crittografiche. Attori malevoli non possono falsificare transazioni o altri dati che sono già stati resi pubblici.
-- **Calcolo trustless/comportamento verificabile** – gli smart contract possono essere analizzati ed è garantito che vengano eseguiti in modo prevedibile, senza la necessità di affidarsi ad un'autorità centrale. Questo non accade nei modelli tradizionali. Per esempio, quando usiamo l'online banking dobbiamo fidarci del fatto che gli istituti finanziari non abusino dei nostri dati finanziari, non manomettano record e non vengano attaccati da hacker.
+- **Calcolo senza fiducia/comportamento verificabile** – I contratti intelligenti sono analizzabili e, l'esecuzione in modi prevedibili è garantita, senza il bisogno di affidarsi a un'autorità centrale. Questo non accade nei modelli tradizionali. Per esempio, quando usiamo l'online banking dobbiamo fidarci del fatto che gli istituti finanziari non abusino dei nostri dati finanziari, non manomettano record e non vengano attaccati da hacker.
## Svantaggi dello sviluppo di dApp {#drawbacks-of-dapp-development}
@@ -49,7 +49,7 @@ Uno Smart Contract è codice che gira sulla blockchain Ethereum e che funziona e
## Strumenti per creare le dApp {#dapp-tools}
-**Scaffold-ETH _- Sperimenta rapidamente con Solidity utilizzando un frontend che si adatta al tuo smart contract._**
+**Scaffold-ETH _ Sperimenta rapidamente con Solidity utilizzando un frontend che si adatta al tuo contratto intelligente._**
- [GitHub](https://github.com/austintgriffith/scaffold-eth)
- [Esempio di dApp](https://punkwallet.io/)
diff --git a/src/content/translations/it/developers/docs/data-and-analytics/block-explorers/index.md b/src/content/translations/it/developers/docs/data-and-analytics/block-explorers/index.md
index 6ad6820db35..dbb37c79de5 100644
--- a/src/content/translations/it/developers/docs/data-and-analytics/block-explorers/index.md
+++ b/src/content/translations/it/developers/docs/data-and-analytics/block-explorers/index.md
@@ -1,11 +1,11 @@
---
title: Esploratori dei blocchi
-description: Introduzione agli esploratori di blocchi, il tuo portale nel mondo dei dati della blockchain, dove puoi eseguire ricerche su informazioni su transazioni, account, contratti e altro ancora.
+description: Un'introduzione agli esploratori di blocchi, il tuo portale al mondo dei dati della blockchain, dove puoi richiedere informazioni sulle transazioni, i conti, i contratti e altro.
lang: it
sidebarDepth: 3
---
-I block explorer sono il tuo portale sui dati di Ethereum. Puoi usarli per vedere dati in tempo reale su blocchi, transazioni, miner, account e altre attività che avvengono sulla catena.
+I block explorer sono il tuo portale sui dati di Ethereum. Puoi usarli per visualizzare i dati in tempo reale sui blocchi, le transazioni, i miner, i conti e altra attività sulla catena.
## Prerequisiti {#prerequisites}
@@ -36,12 +36,12 @@ Ogni 12 secondi vengono aggiunti nuovi blocchi a Ethereum (a meno che un proposi
- Altezza del blocco - Il numero del blocco e la lunghezza della blockchain (in blocchi) alla creazione del blocco corrente
- Marca oraria - L'ora in cui è stato proposto un blocco
- Transazioni - Il numero di transazioni incluse nel blocco
-- Destinatario della commissione - L'indirizzo che ha ricevuto le mance della commissione del gas dalle transazioni
+- Destinatario della commissione: L'indirizzo che ha ricevuto le mance della commissione del gas dalle transazioni
- Ricompensa del blocco - L'importo di ETH elargito al validatore che ha proposto il blocco
- Dimensione - Le dimensioni dei dati nel blocco (misurate in byte)
-- Gas usato - Le unità totali di gas usate dalle transazioni nel blocco
-- Limite del gas - I limiti di gas totali impostati dalle transazioni nel blocco
-- Commissione di base per gas - Il moltiplicatore minimo necessario perché una transazione venga inclusa in un blocco
+- Gas usato: Le unità di gas totali usate dalle transazioni nel blocco
+- Limite di gas: I limiti totali di gas impostati dalle transazioni nel blocco
+- Commissione di base per il gas: Il moltiplicatore minimo necessario perché una transazione sia inclusa in un blocco
- Commissioni bruciate - La quantità di ETH bruciati nel blocco
- Dati aggiuntivi - Ogni dato aggiuntivo che il miner ha incluso nel blocco
@@ -51,16 +51,16 @@ Ogni 12 secondi vengono aggiunti nuovi blocchi a Ethereum (a meno che un proposi
- Hash padre - L'hash del blocco che precedeva quello corrente
- StateRoot - L'hash di root dell'albero di Merkle che memorizza l'intero stato del sistema
-### Carburante {#gas}
+### Gas {#gas}
-Gli esploratori di blocchi non forniscono informazioni solo sull'utilizzo del carburante nelle transazioni e nei blocchi, ma anche sui prezzi correnti del carburante nella rete. Questo può aiutare a capire l'utilizzo della rete, a inviare transazioni sicure e a non spendere più carburante del necessario. Cerca le API che possono aiutarti a ottenere queste informazioni nell'interfaccia del tuo prodotto. I dati riguardanti il carburante coprono:
+Non solo gli esploratori dei blocchi ti forniranno i dati sull'utilizzo del Gas nelle transazioni e nei blocchi, ma alcuni ti forniranno informazioni anche sui prezzi correnti del gas nella rete. Ciò ti aiuterà a comprendere l'utilizzo della rete, a inviare transazioni sicuri e a non spendere troppo in gas. Cerca le API che possono aiutarti a ottenere queste informazioni nell'interfaccia del tuo prodotto. I dati specifici sul gas coprono:
-- Le unità stimate di carburante necessarie per una transazione sicura ma lenta (+ prezzo stimato e durata)
-- Le unità stimate di carburante necessarie per una transazione media (+ prezzo stimato e durata)
-- Le unità stimate di carburante necessarie per una transazione veloce (+ prezzo stimato e durata)
-- Tempo medio per la conferma basato sul prezzo del carburante
-- Contratti che consumano gas - in altre parole, i prodotti popolari e più utilizzati sulla rete
-- Conti che consumano gas - in altre parole, gli utenti frequenti della rete
+- Le unità stimate di gas necessarie per una transazione sicura ma lenta (+ prezzo stimato e durata)
+- Le unità stimate di gas necessarie per una transazione media (+ prezzo stimato e durata)
+- Le unità stimate di gas necessarie per una transazione veloce (+ prezzo stimato e durata)
+- Tempo medio di conferma basato sul prezzo del gas
+- Contratti che consumano gas: in altre parole, i prodotti popolari e più utilizzati sulla rete
+- Conti che consumano gas: in altre parole, gli utenti frequenti della rete
### Transazioni {#transactions}
@@ -72,53 +72,53 @@ Gli esploratori di blocchi sono diventati un punto di riferimento comune per tra
- Stato - Un'indicazione del fatto che la transazione sia in sospeso, fallita o riuscita
- Blocco - Il blocco in cui è stata inclusa la transazione
- Marca oraria - L'ora in cui il miner ha minato la transazione
-- Mittente - L'indirizzo del conto che ha inviato la transazione
-- Destinatario - L'indirizzo del destinatario o dello smart contract con cui interagisce la transazione
+- Mittente: L'indirizzo del conto che ha inviato la transazione
+- A - L'indirizzo del destinatario o del contratto intelligente con cui interagisce la transazione
- Token trasferiti - Un elenco dei token trasferiti nell'ambito della transazione
- Valore - Il valore totale degli ETH trasferiti
-- Commissione di transazione - L'importo pagato al miner per elaborare la transazione (calcolato per prezzo del gas\*gas usato)
+- Commissione di transazione: L'importo pagato al miner per elaborare la transazione (calcolato dal prezzo del gas\*gas usato)
**Dati avanzati**
-- Limite di gas - I numeri massimi di unità di gas che questa transazione può consumare
-- Gas usato - La quantità effettiva di unità di gas consumate dalla transazione
-- Prezzo del gas - Il prezzo fissato per unità di gas
-- Nonce - Il numero della transazione per l'indirizzo `from` (tieni a mente che inizia a 0, quindi un nonce di `100` sarebbe in realtà la 101a transazione inviata dal conto
+- Limite di gas: I numeri massimi di unità di gas che questa transazione può consumare
+- Gas usato: L'importo effettivo di unità di gas che la transazione ha consumato
+- Prezzo del gas: Il prezzo fissato per unità di gas
+- Nonce: Il numero della transazione per l'indirizzo `from` (tieni a mente che inizia a 0, quindi un nonce di `100`, sarebbe in realtà la 101° transazione inviata da questo conto
- Dati di input - Ogni informazione aggiuntiva richiesta dalla transazione
-### Conto {#accounts}
+### Conti {#accounts}
-Esistono molti dati relativi al conto ai quali è possibile accedere. Ecco perché spesso viene raccomandato di utilizzare diversi conti, così che le tue risorse e il valore non possano essere tracciati facilmente. Sono state sviluppate anche alcune soluzioni per rendere transazioni e attività del conto più private. Ecco i dati che sono disponibili per i conti:
+Esistono molti dati relativi a un conto a cui puoi accedere. Ecco perché, spesso, è consigliato usare più conti, così che le tue risorse e il tuo valore non siano facili da tracciare. Sono in oltre in corso di sviluppo alcune soluzioni per rendere le transazioni e l'attività del conto, più private. Ma ecco i dati disponibili per i conti:
-**Conti utente**
+**Conti dell'utente**
-- Indirizzo del conto - L'indirizzo pubblico che puoi usare per l'invio dei fondi
-- Saldo di ETH - L'importo di ETH associati a quel conto
+- Indirizzo del conto: L'indirizzo pubblico che puoi usare per l'invio dei fondi
+- Saldo di ETH: L'importo di ETH associato a quel conto
- Valore totale di ETH - Il valore degli ETH
-- Token - I token associati al conto e il loro valore
-- Storico della transazione - Un elenco di tutte le transazioni nell'ambito delle quali il conto in questione era il mittente o il destinatario
+- Token: I token associati al conto e il loro valore
+- Storico delle transazioni: Un elenco di tutte le transazioni in cui questo conto era il mittente o il destinatario
-**Smart contract**
+**Contratto intelligente**
-I conti Smart Contract hanno tutti i dati di un conto utente, ma alcuni esploratori di blocchi mostreranno anche alcune informazioni di codice. Ad esempio:
+I conti del contratto intelligente contengono tutti i dati che avrà il conto di un utente, ma alcuni esploratori del blocco mostreranno persino delle informazioni del codice. Ad esempio:
- Creatore del contratto - L'indirizzo che ha distribuito il contratto sulla rete principale
- Transazione di creazione - La transazione che ha incluso la distribuzione alla rete principale
-- Codice sorgente - Il codice in Solidity o Vyper dello smart contract
+- Codice sorgente: Il codice in Solidity o Vyper del contratto intelligente
- ABI del contratto - L'interfaccia binaria dell'applicazione del contratto; le chiamate che il contratto effettua e i dati ricevuti
-- Codice di creazione del contratto - Il bytecode compilato dello smart contract, creato quando si compila uno smart contract scritto in Solidity o Vyper, ecc.
-- Eventi del contratto - Uno storico dei metodi chiamati nello smart contract, fondamentalmente un modo per vedere come viene usato il contratto e con quale frequenza
+- Codice di creazione del contratto: Il bytecode compilato del contratto intelligente, creato quando compili un contratto intelligente scritto in Solidity o Vyper, etc.
+- Eventi del contratto: Uno storico dei metodi chiamati nel contratto intelligente, fondamentalmente, un modo per vedere come e quanto spesso è usato il contratto
### Token {#tokens}
-I token sono un tipo di contratto, quindi avranno dati simili a uno smart contract. Ma siccome hanno un valore e possono essere scambiati, contengono dati aggiuntivi:
+I token sono un tipo di contratto, quindi conterranno dati simili a un contratto intelligente. Ma siccome hanno un valore e possono essere scambiati, contengono dati aggiuntivi:
- Tipo - Se si tratta di un ERC-20, un ERC-721 o un altro standard di token
- Prezzo - Se si tratta di un ERC-20, avrà il valore di mercato corrente
- Limite di mercato - Se si tratta di un ERC-20, avrà un limite di mercato (calcolato come prezzo\*offerta totale)
- Offerta totale - Il numero di token in circolazione
- Titolari - Il numero di indirizzi contenenti il token
-- Trasferimenti - Il numero di volte che il token è stato trasferito tra conti
+- Trasferimenti: Il numero di volte che il token è stato trasferito tra i conti
- Storico delle transazioni - Uno storico di tutte le transazioni che includono il token
- Indirizzo del contratto - L'indirizzo del token distribuito sulla rete principale
- Decimali - I token ERC-20 sono divisibili e hanno cifre decimali
diff --git a/src/content/translations/it/developers/docs/data-and-analytics/index.md b/src/content/translations/it/developers/docs/data-and-analytics/index.md
index 798405c3355..3867cc58f60 100644
--- a/src/content/translations/it/developers/docs/data-and-analytics/index.md
+++ b/src/content/translations/it/developers/docs/data-and-analytics/index.md
@@ -18,7 +18,7 @@ In termini di fondamenti architettonici, occorre comprendere che cosa sono le [A
## Esploratori dei blocchi {#block-explorers}
-Molti [Esploratori di blocchi](/developers/docs/data-and-analytics/block-explorers/) mettono a disposizione [gateway RESTful](https://www.wikipedia.org/wiki/Representational_state_transfer) [API](https://www.wikipedia.org/wiki/API) che offrono agli sviluppatori visibilità sui dati in tempo reale su blocchi, transazioni, miner, account e altre attività sulla catena.
+Molti [Esploratori di Blocchi](/developers/docs/data-and-analytics/block-explorers/) offrono gateway dell'[API](https://www.wikipedia.org/wiki/API) di [RESTful](https://www.wikipedia.org/wiki/Representational_state_transfer), che forniranno visibilità agli sviluppatori in dati in tempo reale sui blocchi, le transazioni, i miner, i conti e altra attività sulla catena.
Gli sviluppatori possono quindi elaborare e trasformare questi dati per fornire agli utenti informazioni e interazioni uniche con la blockchain [](/glossary/#blockchain). Ad esempio, [Etherscan](etherscan.io) fornisce i dati d'esecuzione e consenso per ogni slot di 12s.
diff --git a/src/content/translations/it/developers/docs/development-networks/index.md b/src/content/translations/it/developers/docs/development-networks/index.md
index 438995e72d8..bc91f2f2b97 100644
--- a/src/content/translations/it/developers/docs/development-networks/index.md
+++ b/src/content/translations/it/developers/docs/development-networks/index.md
@@ -4,7 +4,7 @@ description: Panoramica delle reti di sviluppo e degli strumenti disponibili per
lang: it
---
-Quando si crea un'applicazione Ethereum con Smart Contract, è consigliabile eseguirla prima su una rete locale per vedere come funziona prima di distribuirla.
+Creando un'applicazione di Ethereum con i contratti intelligenti, vorrai eseguirlo su una rete locale per vedere come funziona, prima di distribuirla.
Come è possibile eseguire un server locale sul computer per lo sviluppo web, allo stesso modo è possibile usare una rete di sviluppo per creare un'istanza di blockchain locale per testare una dapp. Queste reti di sviluppo Ethereum offrono funzionalità che permettono un'iterazione molto più veloce rispetto a una rete di prova pubblica (ad esempio, non è necessario acquisire ETH da un faucet di una rete di prova).
@@ -20,8 +20,8 @@ Si tratta essenzialmente di client Ethereum (implementazioni di Ethereum) proget
_Potresti_ [eseguire un nodo](/developers/docs/nodes-and-clients/#running-your-own-node), ma poiché le reti di sviluppo sono costruite per lo sviluppo, spesso includono funzionalità pratiche come:
-- Inserire in modo deterministico dati nella blockchain locale (ad esempio account con saldi ETH)
-- Eseguire il mining istantaneo di blocchi a ogni transazione ricevuta, in ordine e senza ritardi
+- Inserimento deterministico dei dati nella tua blockchain locale (es. conti con saldi di ETH)
+- Produzione istantanea di blocchi a ogni transazione ricevuta, in ordine e senza ritardi
- Funzionalità di debugging e registrazione avanzate
## Strumenti disponibili {#available-projects}
@@ -49,7 +49,7 @@ La rete Hardhat è incorporata in Hardhat, un ambiente di sviluppo Ethereum prof
### Beacon Chain Locali {#local-beacon-chains}
-Alcuni client del consenso hanno strumenti integrati per avviare beacon chain locali per scopi di test. Sono disponibili le istruzioni per Lighthouse, Nimbus e Lodestar:
+Alcuni client del consenso sono dotati di strumenti integrati per avviare Beacon Chain locali per scopi di test. Sono disponibili le istruzioni per Lighthouse, Nimbus e Lodestar:
- [Testnet locale usando Lodestar](https://chainsafe.github.io/lodestar/usage/local/)
- [Testnet locale usando Lighthouse](https://lighthouse-book.sigmaprime.io/setup.html#local-testnets)
@@ -57,10 +57,10 @@ Alcuni client del consenso hanno strumenti integrati per avviare beacon chain lo
### Catene di prova pubbliche di Ethereum {#public-beacon-testchains}
-Attualmente esistono inoltre tre implementazioni di prova pubbliche di Ethereum. La rete di prova consigliata con supporto a lungo termine è Goerli. Anche Sepolia dovrebbe essere mantenuta nel futuro prossimo, ma il validatore impostato è autorizzato, il che significare che non sussiste alcun accesso generale ai nuovi validatori su questa rete di prova. La catena di Ropsten dovrebbe essere superata.
+Esistono anche due implementazioni di prova pubbliche e mantenute di Ethereum: Goerli e Sepolia. La rete di prova consigliata con supporto a lungo termine è Goerli, su cui tutti sono liberi di validare. Anche Sepolia, una catena più nuova e ridotta, dovrebbe essere mantenuta nel futuro prossimo, con una serie di validatori con permessi (a significare che non vi è accesso generale ai nuovi validatori su questa rete di prova). La catena Ropsten dovrebbe diventare obsoleta nel 4° trimestre 2022 e la catena Rinkeby dovrebbe diventare obsoleta tra il 2° e il 3° trimestre del 2023.
- [Launchpad di staking di Goerli](https://goerli.launchpad.ethereum.org/)
-- [Launchpad di staking di Ropsten](https://ropsten.launchpad.ethereum.org/)
+- [Annuncio di Deprecazione di Ropsten, Rinkeby e Kiln](https://blog.ethereum.org/2022/06/21/testnet-deprecation)
## Letture consigliate {#further-reading}
diff --git a/src/content/translations/it/developers/docs/ethereum-stack/index.md b/src/content/translations/it/developers/docs/ethereum-stack/index.md
index df22b93225d..f3764783fc6 100644
--- a/src/content/translations/it/developers/docs/ethereum-stack/index.md
+++ b/src/content/translations/it/developers/docs/ethereum-stack/index.md
@@ -10,7 +10,7 @@ Sono comunque disponibili tecnologie base di Ethereum che aiutano a fornire un m
## Livello 1: macchina virtuale Ethereum {#ethereum-virtual-machine}
-La [macchina virtuale Ethereum (EVM)](/developers/docs/evm/) è l'ambiente di runtime per gli Smart Contract su Ethereum. Tutti gli Smart Contract e le modifiche di stato sulla blockchian Ethereum sono eseguiti per mezzo di [transazioni](/developers/docs/transactions/). La EVM gestisce l'elaborazione di tutte le transazioni sulla rete Ethereum.
+La [Macchina Virtuale di Ethereum (EVM)](/developers/docs/evm/) è l'ambiente d'esecuzione per i contratti intelligenti su Ethereum. Tutti i contratti intelligenti e i cambiamenti di stato sulle blockchain di Ethereum sono eseguiti dalle [transazioni](/developers/docs/transactions/). La EVM gestisce l'elaborazione di tutte le transazioni sulla rete Ethereum.
Come avviene con ogni macchina virtuale, la EVM crea un livello di astrazione fra il codice in esecuzione e la macchina che esegue tale codice (il nodo Ethereum). Al momento la EVM è in esecuzione su migliaia di nodi distribuiti in tutto il mondo.
@@ -18,15 +18,15 @@ La EVM utilizza un insieme di istruzioni opcode per eseguire attività specifich
A uno sviluppatore di dapp non serve conoscere a fondo la EVM, gli basta sapere che esiste e fa funzionare in modo affidabile tutte le applicazioni su Ethereum senza interruzioni.
-## Livello 2: Smart Contract {#smart-contracts}
+## Livello 2: Contratti intelligenti {#smart-contracts}
-Gli [Smart Contract](/developers/docs/smart-contracts/) sono i programmi che vengono eseguiti sulla blockchain Ethereum.
+I [contratti intelligenti](/developers/docs/smart-contracts/) sono i programmi eseguiti sulla blockchain di Ethereum.
-Sono scritti in un [linguaggio di programmazione](/developers/docs/smart-contracts/languages/) specifico, che viene compilato in bytecode EVM (istruzioni macchina di basso livello dette opcode).
+I contratti intelligenti sono scritti usando [linguaggi di programmazione](/developers/docs/smart-contracts/languages/) specifici, compilati al bytecode dell'EVM (istruzioni della macchina di basso livello, dette opcode).
-Gli Smart Contract fungono non solo da librerie open source ma sono essenzialmente servizi open API che vengono eseguiti 24 ore su 24 e 7 giorni su 7, e non possono essere disattivati. Gli smart contract forniscono funzioni pubbliche con cui gli utenti e le applicazioni ([dApp](/developers/docs/dapps/)) possono interagire, senza necessitare di permessi. Qualsiasi applicazione può essere integrata con smart contract distribuiti per comporre funzionalità, come aggiungere i [feed di dati](/developers/docs/oracles/) o supportare gli scambi di token. Chiunque può distribuire nuovi Smart Contract su Ethereum per aggiungere funzionalità personalizzate che soddisfino le esigenze della propria applicazione.
+Non solo i contratti intelligenti servono da librerie open source, ma sono essenzialmente servizi API aperti in continua esecuzione e non disattivabili. I contratti intelligenti forniscono funzioni pubbliche con cui gli utenti e le applicazioni ([dapp](/developers/docs/dapps/)) potrebbero interagire, senza necessitare di permessi. Qualsiasi applicazione potrebbe integrarsi con i contratti intelligenti distribuiti per comporre la funzionalità, come aggiungere [feed di dati](/developers/docs/oracles/) o supportare gli scambi di token. Inoltre, chiunque può distribuire nuovi contratti intelligenti a Ethereum per aggiungere funzionalità personalizzate che soddisfino le esigenze della loro applicazione.
-Uno sviluppatore di dapp deve scrivere Smart Contract solo se intende aggiungere funzionalità personalizzate alla blockchain Ethereum. È infatti possibile soddisfare la maggior parte delle esigenze di un progetto (se non tutte) semplicemente integrando gli Smart Contract esistenti, ad esempio per supportare pagamenti con stablecoin o abilitare lo scambio decentralizzato di token.
+Come sviluppatore di dapp, dovrvai scrivere i contratti intelligenti solo se desideri aggiungere funzionalità personalizzate alla blockchain di Ethereum. Potresti renderti conto di poter soddisfare gran parte o tutte le esigenze del tuo progetto, semplicemente integrando con contratti intelligenti esistenti, ad esempio, se desideri supportare pagamenti in stablecoin o consentire lo scambio decentralizzato di token.
## Livello 3: nodi Ethereum {#ethereum-nodes}
@@ -34,7 +34,7 @@ Affinché un'applicazione interagisca con la blockchain di Ethereum, deve connet
I nodi Ethereum sono computer che eseguono software, ovvero un client Ethereum. Un client è una implementazione di Ethereum che verifica tutte le transazioni presenti in un blocco, facendo in modo che la rete rimanga sicura e i dati siano accurati. **I nodi di Ethereum sono la blockchain di Ethereum**. Memorizzano in maniera collettiva lo stato della blockchain Ethereum e raggiungono il consenso sulle transazioni per modificare lo stato della blockchain.
-Connettendo la propria applicazione a un nodo di Ethereum (tramite l'[API di JSON-RPC](/developers/docs/apis/json-rpc/)), l'applicazione può leggere i dati dalla blockchain (come i saldi dell'account dell'utente) nonché trasmettere le nuove transazioni alla rete (ad es. trasferire ETH tra gli account degli utenti o eseguire le funzioni degli smart contract).
+Connettendo la tua applicazione a un nodo di Ethereum (tramite l'[API JSON-RPC](/developers/docs/apis/json-rpc/)), la tua applicazione può leggere i dati dalla blockchain (come i saldi dei conti degli utenti), nonché trasmettere le nuove transazioni alla rete (come trasferire ETH tra conti degli utenti o eseguire funzioni dei contratti intelligenti).
## Livello 4: API client Ethereum {#ethereum-client-apis}
diff --git a/src/content/translations/it/developers/docs/evm/index.md b/src/content/translations/it/developers/docs/evm/index.md
index 38137013eed..3c69cd028f7 100644
--- a/src/content/translations/it/developers/docs/evm/index.md
+++ b/src/content/translations/it/developers/docs/evm/index.md
@@ -1,6 +1,6 @@
---
title: Macchina virtuale Ethereum (EVM)
-description: Introduzione alla macchina virtuale Ethereum e al suo ruolo per quanto riguarda stato, transazioni e Smart Contract.
+description: Un'introduzione alla Macchina Virtuale di Ethereum e a come si relaziona allo stato, alle transazioni e ai contratti intelligenti.
lang: it
---
@@ -16,7 +16,7 @@ Per comprendere l'EVM, è richiesta una conoscenza di base dei termini comuni de
Per descrivere blockchain come Bitcoin, viene spesso utilizzata l'analogia con un "libro mastro distribuito", che permette l'esistenza di una valuta decentralizzata utilizzando strumenti base della crittografia. Il libro mastro mantiene un registro delle attività che deve aderire a una serie di regole che governano ciò che qualcuno può e non può fare per modificarlo. Ad esempio, un indirizzo Bitcoin non può spendere più Bitcoin di quanti ne abbia ricevuti in precedenza. Queste regole sono alla base di tutte le transazioni su Bitcoin e di molte altre blockchain.
-Ethereum ha la sua valuta nativa (Ether), che segue quasi esattamente le stesse regole intuitive, ma consente anche una funzione molto più potente: [gli smart contract](/developers/docs/smart-contracts/). Per questa caratteristica più complessa, è necessaria un'analogia più complessa. Invece di essere un libro mastro distribuito, Ethereum è una [macchina di stato distribuita](https://wikipedia.org/wiki/Finite-state_machine). Lo stato di Ethereum è una grande enorme struttura di dati che contiene non solo tutti gli account e i saldi, ma una _macchina a stati_, che puiò cambiare da blocco a blocco in base a un set predefinito di regole, e che può eseguire codice macchina arbitrario. Le regole specifiche di cambio stato da blocco a blocco sono definite dall'EVM.
+Mentre Ethereum ha la propria criptovaluta nativa (Ether) che segue quasi esattamente le stesse regole intuitive, consente anche una funzione molto più potente: i [contratti intelligenti](/developers/docs/smart-contracts/). Per questa caratteristica più complessa, è necessaria un'analogia più complessa. Invece di essere un libro mastro distribuito, Ethereum è una [macchina di stato distribuita](https://wikipedia.org/wiki/Finite-state_machine). Lo stato di Ethereum è una grande struttura di dati che contiene non solo tutti i conti e i saldi, ma uno _stato della macchina_, che può cambiare da blocco a blocco secondo una serie predefinita di regole e che può eseguire il codice arbitrario della macchina. Le regole specifiche di cambio stato da blocco a blocco sono definite dall'EVM.
![Ddiagramma che mostra la composizione dell'EVM](./evm.png) _Diagramma adattato da [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
@@ -32,13 +32,13 @@ Dato un vecchio stato valido `(S)` e un nuovo set di transazioni valide `(T)`, l
### Stato {#state}
-Nell'ambito di Ethereum, lo stato è un'enorme struttura di dati chiamata [albero di Merkle Patricia modificato](/developers/docs/data-structures-and-encoding/patricia-merkle-trie/), che tiene tutti gli [account](/developers/docs/accounts/) collegati tramite hash e riducibili a un singolo hash radice memorizzato sulla blockchain.
+Nel contesto di Ethereum, lo stato è un'enorme struttura di dati detta un [albero di Patricia Merkle modificato](/developers/docs/data-structures-and-encoding/patricia-merkle-trie/), che contiene tutti i [conti](/developers/docs/accounts/) collegati da hash e riducibili a un singolo hash di radice, archiviato sulla blockchain.
### Transazioni {#transactions}
-Le transazioni sono istruzioni provenienti dagli account firmate crittograficamente. Esistono due tipi di transazioni: quelle che danno luogo a chiamate di messaggio e quelle che invece danno luogo alla creazione di contratti.
+Le transazioni sono istruzioni firmate crittograficamente, provenienti dai conti. Esistono due tipi di transazioni: quelle che danno luogo a chiamate di messaggio e quelle che invece danno luogo alla creazione di contratti.
-La creazione di contratti porta alla creazione di nuovo account contratto contenente bytecode di [Smart Contract](/developers/docs/smart-contracts/anatomy/) compilato. Quando un altro account fa una chiamata di messaggio a questo contratto, esegue il suo bytecode.
+La creazione del contratto risulta nella creazione di un nuovo conto del contratto, contenente bytecode compilato del [contratto intelligente](/developers/docs/smart-contracts/anatomy/). Ogni volta che un altro conto effettua una chiamata di messaggio a quel contratto, esegue il suo bytecode.
## Istruzioni dell'EVM {#evm-instructions}
@@ -46,11 +46,11 @@ L'EVM viene eseguita come una [macchina a stack](https://wikipedia.org/wiki/Stac
Durante l'esecuzione, l'EVM mantiene una _memoria_ transitoria (sotto forma di array di byte con indirizzamento a parola), che non rimane persistente tra le transazioni.
-I contratti, invece, contengono un trie di _memorizzazione_ di Merkle Patricia (sotto forma di array di parole con indirizzamento a parola), associato all'account in questione e parte dello stato globale.
+I contratti, comunque, contengono un albero d'_archiviazione_ di Merkle Patricia (come un insieme indirizzabile alle parole contenute), associato al conto in questione e parte dello stato globale.
-Il bytecode compilato dello smart contract compilato viene eseguito come numero di [opcode](/developers/docs/evm/opcodes) dell'EVM, che eseguono operazioni stack standard come `XOR`, `AND`, `ADD`, `SUB`, ecc. L'EVM implementa anche una serie di operazioni di stack specifiche della blockchain, come `INDIRIZZO`, `SALDO`, `BLOCKHASH`, etc.
+Il bytecode compilato del contratto intelligente è eseguito come un numero degli [opcode](/developers/docs/evm/opcodes) dell'EVM, che eseguono operazioni standard dello stack come `XOR`, `AND`, `ADD`, `SUB`, etc. L'EVM implementa anche una serie di operazioni di stack specifiche della blockchain, come `INDIRIZZO`, `SALDO`, `BLOCKHASH`, etc.
-![Diagramma che mostra dove occorre carburante nelle operazioni dell'EVM](../gas/gas.png) _Diagramma adattato da [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
+![Un diagramma che mostra dove è necessario il gas per le operazioni dell'EVM](../gas/gas.png) _Diagramma adattato da [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
## Implementazioni dell'EVM {#evm-implementations}
@@ -75,4 +75,4 @@ Tutti i [client Ethereum](/developers/docs/nodes-and-clients/#execution-clients)
## Argomenti correlati {#related-topics}
-- [Carburante](/developers/docs/gas/)
+- [Gas](/developers/docs/gas/)
diff --git a/src/content/translations/it/developers/docs/frameworks/index.md b/src/content/translations/it/developers/docs/frameworks/index.md
index 8f18b42d828..e6067db0a93 100644
--- a/src/content/translations/it/developers/docs/frameworks/index.md
+++ b/src/content/translations/it/developers/docs/frameworks/index.md
@@ -11,7 +11,7 @@ Sviluppare una dapp completa richiede diverse tecnologie. I framework software i
I framework sono già dotati di molte funzionalità, come:
- Funzionalità per avviare un'istanza di blockchain locale.
-- Utilità per compilare e testare Smart Contract.
+- Utilità per compilare e testare i tuoi contratti intelligenti.
- Componenti aggiuntivi di sviluppo client per creare un'applicazione rivolta all'utente all'interno dello stesso progetto/repository.
- Configurazione per connettersi a reti Ethereum e distribuire contratti, a un'istanza locale o a una delle reti pubbliche di Ethereum.
- Distribuzione di app decentralizzate - integrazioni con opzioni di archiviazione come IPFS.
@@ -32,7 +32,7 @@ Prima di iniziare a studiare i framework, raccomandiamo la lettura della nostra
- [hardhat.org](https://hardhat.org)
- [GitHub](https://github.com/nomiclabs/hardhat)
-**Ape -** **_Lo strumento di sviluppo di smart contract per utilizzatori di Python, Data Scientist e Professionisti della Sicurezza._**
+**Ape**: **_Lo strumento di sviluppo di contratti intelligenti per utilizzatori di Python, Data Scientist e Professionisti della Sicurezza._**
- [Documentazione](https://docs.apeworx.io/ape/stable/)
- [GitHub](https://github.com/ApeWorX/ape)
@@ -53,7 +53,7 @@ Prima di iniziare a studiare i framework, raccomandiamo la lettura della nostra
- [Documentazione](https://docs.web3j.io)
- [GitHub](https://github.com/web3j/web3j)
-**OpenZeppelin SDK:** **_ strumenti per Smart Contract all'avanguardia. Suite di strumenti per sviluppare, compilare, aggiornare, distribuire Smart Contract e interagirvi_**
+**OpenZeppelin SDK:** **_Gli Strumenti Definitivi per i Contratti Intelligenti: Una suite di strumenti per aiutarti a sviluppare, compilare, aggiornare, distribuire e interagire con i contratti intelligenti_**
- [SDK OpenZeppelin](https://openzeppelin.com/sdk/)
- [GitHub](https://github.com/OpenZeppelin/openzeppelin-sdk)
@@ -64,7 +64,7 @@ Prima di iniziare a studiare i framework, raccomandiamo la lettura della nostra
- [GitHub](https://github.com/paulrberg/create-eth-app)
- [Template](https://github.com/PaulRBerg/create-eth-app/tree/develop/templates)
-**Scaffold-Eth:** **_I componenti Ethers.js + Hardhat + React e gli hook per web3: tutto ciò che occorre per iniziare a creare applicazioni decentralizzate alimentate da smart contract._**
+**Scaffold-Eth:** **_I componenti Ethers.js + Hardhat + React e gli hook per web3: tutto ciò che ti serve per iniziare a creare applicazioni decentralizzate alimentate dai contratti intelligenti._**
- [GitHub](https://github.com/austintgriffith/scaffold-eth)
diff --git a/src/content/translations/it/developers/docs/gas/index.md b/src/content/translations/it/developers/docs/gas/index.md
index 91c07b2e8c5..85fcae3ddd4 100644
--- a/src/content/translations/it/developers/docs/gas/index.md
+++ b/src/content/translations/it/developers/docs/gas/index.md
@@ -4,53 +4,55 @@ description:
lang: it
---
-Il carburante è un elemento essenziale per la rete Ethereum. Consente di far funzionare la rete, proprio come un'automobile ha bisogno di benzina per funzionare.
+Il gas è essenziale per la rete di Ethereum. È il carburante che gli consente di operare, proprio come un'automobile lo necessita per funzionare.
## Prerequisiti {#prerequisites}
Per capire meglio questa pagina, consigliamo innanzi tutto di leggere gli argomenti su [transazioni](/developers/docs/transactions/) ed [EVM](/developers/docs/evm/).
-## Cos'è il carburante? {#what-is-gas}
+## Cos'è il gas? {#what-is-gas}
-Con il termine carburante ci si riferisce ad un'unità di misura che indica la quantità di sforzo di calcolo necessaria per eseguire operazioni specifiche sulla rete Ethereum.
+Gas fa riferimento all'unità che misura la quantità di sforzo di calcolo necessario per eseguire operazioni specifiche sulla rete di Ethereum.
-Dato che ogni transazione Ethereum necessita di risorse di calcolo per essere eseguita, richiede una commissione. Il carburante si riferisce alla commissione richiesta per far sì che una transazione su Ethereum vada a buon fine.
+Dato che ogni transazione Ethereum necessita di risorse di calcolo per essere eseguita, richiede una commissione. Gas si riferisce alla commissione necessaria per effettuare con successo una transazione su Ethereum.
-![Diagramma che mostra dove serve il carburante nelle operazioni dell'EVM](./gas.png) _Diagramma adattato da [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
+![Un diagramma che mostra dov'è necessario il gas nelle operazioni dell'EVM](./gas.png) _Diagramma adattato da [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
-In sostanza, le commissioni sul carburante sono pagate nella valuta nativa di Ethereum, l'ether (ETH). I prezzi del carburante sono indicati in Gwei, che è a sua volta un taglio dell'ETH: ogni Gwei equivale a 0,000000001 ETH (10-9 ETH). Per esempio, invece di dire che il carburante costa 0,000000001 Ether, puoi dire che costa 1 Gwei. La parola 'gwei' significa 'giga-wei', ed è pari a 1.000.000.000 wei. Wei (dal nome di [Wei Dai](https://wikipedia.org/wiki/Wei_Dai), creatore di [b-money](https://www.investopedia.com/terms/b/bmoney.asp)) è l'unità più piccola di ETH.
+Le commissioni del gas sono pagate nalla valuta nativa di Ethereum, ether (ETH). I prezzi del gas sono denotati in gwei, che è a sua volta una denominazione di ETH: ogni gwei equivale a 0,000000001 ETH (10-9 ETH). Ad esempio, invece di dire che il tuo gas costa 0,000000001 ether, puoi dire che costa 1 gwei. La parola 'gwei' significa 'giga-wei', ed è pari a 1.000.000.000 wei. Wei (dal nome di [Wei Dai](https://wikipedia.org/wiki/Wei_Dai), creatore di [b-money](https://www.investopedia.com/terms/b/bmoney.asp)) è l'unità più piccola di ETH.
## Prima dell'aggiornamento di Londra {#pre-london}
Le modalità di calcolo delle commissioni di transazione sulla rete Ethereum sono state modificate con [l'aggiornamento di Londra](/history/#london) dell'agosto 2021. Ecco un riepilogo di come funzionavano le cose in precedenza:
-Mettiamo che Alice debba pagare 1 ETH a Bob. Nella transazione, il limite di carburante è di 21.000 unità e il prezzo del carburante è 200 gwei.
+Mettiamo che Alice debba pagare 1 ETH a Bob. Nella transazione, il limite di gas è di 21.000 unità e il prezzo del gas è di 200 gwei.
-La commissione totale sarebbe: `Unità di carburante (limite) * Prezzo del gas per unità`, es. ` 21.000 * 200 = 4.200.000 gwei` o 0,0042 ETH
-
-Ipotizziamo che Jordan debba pagare 1 ETH a Taylor. Nella transazione, il limite di carburante è di 21.000 unità e la commissione base è di 10 gwei. Jordan include una mancia di 2 gwei.
+La commissione totale sarebbe: `Unità di gas (limite) * Prezzo del gas per unità`, es. ` 21.000 * 200 = 4.200.000 gwei` o 0,0042 ETH
## Dopo l'aggiornamento di Londra {#post-london}
-`21.000 * (10 + 2) = 252.000 gwei` o 0,000252 ETH.
+Ipotizziamo che Jordan debba pagare 1 ETH a Taylor. Nella transazione, il limite di gas è di 21.000 unità e la commissione di base è di 10 gwei. Jordan include una mancia di 2 gwei.
+
+La commissione totale sarebbe ora: `unità di gas usate * (commissione di base + commissione prioritaria)`, dove la `commissione di base` è un valore fissato dal protocollo e la `commissione prioritaria` è un valore fissato dall'utente come mancia al validatore.
+
+Ossia `21.000 * (10 + 2) = 252.000 gwei` o 0,000252 ETH.
-Quando Jordan invia il denaro, dal suo account sono sottratti 1,000252 ETH. Taylor riceve un accredito di 1,0000 ETH. Il validatore riceve la mancia di 0,000042 ETH. La commissione base di 0,00021 ETH è bruciata.
+Quando Jordan invia il denaro, dal suo conto sono sottratti 1,000252 ETH. Taylor riceve un accredito di 1,0000 ETH. Il validatore riceve la mancia di 0,000042 ETH. La commissione di base di 0,00021 ETH è bruciata.
-Inoltre, Jordan può anche impostare una commissione massima (`maxFeePerGas`) per la transazione. A Jordan viene rimborsata la differenza tra commissione massima ed effettiva, ovvero `rimborso = commissione max - (commissione base + commissione prioritaria)`. Jordan può impostare un importo massimo da pagare per la transazione da eseguire, senza preoccuparsi di pagare troppo "oltre" la commissione base quando la transazione è eseguita.
+Inoltre, Jordan può anche impostare una commissione massima (`maxFeePerGas`) per la transazione. A Jordan viene rimborsata la differenza tra commissione massima ed effettiva, ovvero `rimborso = commissione max - (commissione di base + commissione prioritaria)`. Jordan può impostare un importo massimo da pagare per la transazione da eseguire, senza preoccuparsi di pagare troppo "oltre" la commissione di base quando la transazione è eseguita.
### Dimensione del blocco {#block-size}
-Prima dell'Aggiornamento di Londra, Ethereum aveva blocchi di dimensioni fisse. Nei momenti di domanda elevata della rete, questi blocchi operavano a piena capacità. Quindi, spesso gli utenti dovevano attendere che la domanda elevata calasse per poter essere inclusi in un blocco, il che si traduceva in un'esperienza non soddisfacente per l'utente.
+Prima dell'Aggiornamento di Londra, Ethereum aveva blocchi di dimensioni fisse. Nei momenti di elevata domanda di rete, questi blocchi operavano a piena capacità. Quindi, spesso gli utenti dovevano attendere che la domanda elevata calasse per poter essere inclusi in un blocco, il che si traduceva in un'esperienza non soddisfacente per l'utente.
-L'Aggiornamento di Londra ha introdotto blocchi di dimensioni variabili in Ethereum. Ogni blocco ha una dimensione prevista di 15 milioni di carburante, ma la dimensione dei blocchi aumenta o diminuisce in base alla domanda della rete, fino al limite massimo di 30 milioni di carburante per blocco (2 volte la dimensione prevista del blocco). Il protocollo raggiunge una dimensione del blocco equilibrata di 15 milioni in media tramite il processo di _tâtonnement_. Significa che se la dimensione del blocco supera quella prevista, il protocollo aumenta la commissione base per il blocco successivo. Analogamente, il protocollo riduce la commissione base se la dimensione del blocco è inferiore a quella prevista. L'importo della commissione base si adatta proporzionalmente alla distanza della dimensione del blocco corrente rispetto a quella prevista. [Maggiori informazioni sui blocchi](/developers/docs/blocks/).
+L'Aggiornamento di Londra ha introdotto in Ethereum blocchi di dimensioni variabili. Ogni blocco ha una dimensione prevista di 15 milioni di gas, ma la dimensione dei blocchi aumenta o diminuisce in base alla domanda della rete, fino al limite massimo di 30 milioni di gas per blocco (2 volte la dimensione prevista del blocco). Il protocollo raggiunge una dimensione del blocco equilibrata di 15 milioni in media tramite il processo di _tâtonnement_. Significa che se la dimensione del blocco supera quella prevista, il protocollo aumenta la commissione di base per il blocco successivo. Analogamente, il protocollo riduce la commissione di base se la dimensione del blocco è inferiore a quella prevista. L'importo della commissione di base si adatta proporzionalmente alla distanza della dimensione del blocco corrente rispetto a quella prevista. [Maggiori informazioni sui blocchi](/developers/docs/blocks/).
### Tariffa base {#base-fee}
-Ogni blocco ha una commissione base che funge da prezzo di riserva. Per poter essere inseriti in un blocco, il prezzo offerto per il carburante deve essere pari almeno alla commissione base. La commissione base è calcolata indipendentemente dal blocco corrente ed è invece determinata dai blocchi che lo precedono, il che rende le commissioni sulle transazioni più prevedibili per gli utenti. Quando il blocco è minato, questa commissione base viene "bruciata", ovvero rimossa dalla circolazione.
+Ogni blocco ha una commissione di base che funge da prezzo di riserva. Per poter essere inseriti in un blocco, il prezzo offerto per il gas deve essere pari almeno alla commissione di base. La commissione di base è calcolata indipendentemente dal blocco corrente ed è invece determinata dai blocchi che lo precedono, il che rende le commissioni sulle transazioni più prevedibili per gli utenti. Quando il blocco è minato, questa commissione di base viene "bruciata", ovvero rimossa dalla circolazione.
-La commissione base è calcolata con una formula che confronta le dimensioni del blocco precedente (la quantità di carburante usata per tutte le transazioni) con le dimensioni di quello corrente. La commissione base aumenta di un massimo del 12,5% per blocco se la dimensione prevista del blocco viene superata. Questa crescita esponenziale rende economicamente impensabile che la dimensione del blocco resti elevata per un tempo indefinito.
+La commissione di base è calcolata con una formula che confronta le dimensioni del blocco precedente (la quantità di gas usata per tutte le transazioni) con le dimensioni di quello corrente. La commissione di base aumenta di un massimo del 12,5% per blocco se la dimensione prevista del blocco viene superata. Questa crescita esponenziale rende economicamente impensabile che la dimensione del blocco resti elevata per un tempo indefinito.
-| Numero del blocco | Gas incluso | Aumento della commissione | Tariffa base corrente |
+| Numero del blocco | Gas Incluso | Aumento della commissione | Tariffa base corrente |
| ----------------- | ----------: | ------------------------: | --------------------: |
| 1 | 15M | 0% | 100 gwei |
| 2 | 30M | 0% | 100 gwei |
@@ -61,11 +63,11 @@ La commissione base è calcolata con una formula che confronta le dimensioni del
| 7 | 30M | 12,5% | 180,2 gwei |
| 8 | 30M | 12,5% | 202,7 gwei |
-Rispetto al mercato del carburante basato su aste prima dell'aggiornamento di Londra, questa modifica del meccanismo delle commissioni sulle transazioni ha reso più affidabile la previsione delle commissioni. Secondo la tabella che precede, per creare una transazione sul blocco numero 9, un portafoglio indica all'utente con certezza che la **commissione base massima** da aggiungere al blocco successivo è `commissione base corrente * 112,5%` o `202,8 gwei * 112,5% = 228,1 gwei`.
+Rispetto al mercato del gas basato su aste prima dell'Aggiornamento di Londra, questa modifica del meccanismo delle commissioni sulle transazioni ha reso più affidabile la previsione delle commissioni. Secondo la tabella che precede, per creare una transazione sul blocco numero 9, un portafoglio indica all'utente con certezza che la **commissione di base massima** da aggiungere al blocco successivo è `commissione di base corrente * 112,5%` o `202,8 gwei * 112,5% = 228,1 gwei`.
-Inoltre, è importante notare che, vista la velocità con cui la commissione base aumenta mentre si avanza verso un blocco completo, è improbabile assistere a picchi prolungati di blocchi completi.
+Inoltre, è importante notare che, vista la velocità con cui la commissione di base aumenta mentre si avanza verso un blocco completo, è improbabile assistere a picchi prolungati di blocchi completi.
-| Numero del blocco | Gas incluso | Aumento della commissione | Tariffa base corrente |
+| Numero del blocco | Gas Incluso | Aumento della commissione | Tariffa base corrente |
| ----------------- | ----------: | ------------------------: | --------------------: |
| 30 | 30M | 12,5% | 2.705,6 gwei |
| ... | ... | 12,5% | ... |
@@ -75,77 +77,77 @@ Inoltre, è importante notare che, vista la velocità con cui la commissione bas
### Commissione prioritaria (mance) {#priority-fee}
-Prima dell'Aggiornamento di Londra, i miner avrebbero ricevuto la commissione sul carburante totale da ogni transazione inclusa in un blocco.
+Prima dell'Aggiornamento di Londra, i miner avrebbero ricevuto la commissione del gas totale da ogni transazione inclusa in un blocco.
-In virtù del fatto che la nuova commissione base viene bruciata, l'aggiornamento di Londra ha introdotto una commissione prioritaria (mancia) per incentivare i miner a includere una transazione nel blocco. Senza mance, i miner troverebbero economicamente conveniente minare blocchi vuoti, poiché riceverebbero la stessa ricompensa. In condizioni normali, una piccola mancia fornisce ai miner un incentivo minimo per includere una transazione. Per le transazioni che devono essere prioritariamente eseguite prima di altre nello stesso blocco, occorrerà una mancia più cospicua per tentare di superare le transazioni concorrenti.
+In virtù del fatto che la nuova commissione di base viene bruciata, l'Aggiornamento di Londra ha introdotto una commissione prioritaria (mancia) per incentivare i miner a includere una transazione nel blocco. Senza mance, i miner troverebbero economicamente conveniente minare blocchi vuoti, poiché riceverebbero la stessa ricompensa. In condizioni normali, una piccola mancia fornisce ai miner un incentivo minimo per includere una transazione. Per le transazioni che devono essere prioritariamente eseguite prima di altre nello stesso blocco, occorrerà una mancia più cospicua per tentare di superare le transazioni concorrenti.
### Commissione massima {#maxfee}
-Per eseguire una transazione sulla rete, gli utenti possono specificare un limite massimo che sono disposti a pagare affinché la loro transazione venga eseguita. Questo parametro opzionale è noto come `maxFeePerGas`. Affinché una transazione venga eseguita, la commissione massima deve essere maggiore della somma della commissione base e della mancia. Il mittente della transazione riceve il rimborso della differenza tra la commissione massima e la somma della commissione base e della mancia.
+Per eseguire una transazione sulla rete, gli utenti possono specificare un limite massimo che sono disposti a pagare affinché la loro transazione venga eseguita. Questo parametro facoltativo è noto come `maxFeePerGas`. Affinché una transazione venga eseguita, la commissione massima deve essere maggiore della somma della commissione di base e della mancia. Il mittente della transazione riceve il rimborso della differenza tra la commissione massima e la somma della commissione di base e della mancia.
### Calcolo delle commissioni {#calculating-fees}
-Uno dei benefici principali ottenuti con l'aggiornamento di Londra è il miglioramento dell'esperienza dell'utente nella definizione delle commissioni sulle transazioni. Per i portafogli che supportano l'aggiornamento, invece di dichiarare esplicitamente quanto si è disposti a pagare per far elaborare la transazione, i fornitori del portafoglio imposteranno automaticamente una commissione sulle transazioni consigliata (commissione base + commissione prioritaria consigliata) per ridurre la quantità di complessità gravante sugli utenti.
+Uno dei benefici principali ottenuti con l'Aggiornamento di Londra è il miglioramento dell'esperienza dell'utente nella definizione delle commissioni sulle transazioni. Per i portafogli che supportano l'aggiornamento, invece di dichiarare esplicitamente quanto si è disposti a pagare per far elaborare la transazione, i fornitori del portafoglio imposteranno automaticamente una commissione sulle transazioni consigliata (commissione di base + commissione prioritaria consigliata) per ridurre la quantità di complessità gravante sugli utenti.
## EIP-1559 {#eip-1559}
-L'implementazione dell'[EIP-1559](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1559.md) nell'Aggiornamento di Londra ha reso il meccanismo delle commissioni sulle transazioni più complesso rispetto al precedente sistema basato su aste dei prezzi del carburante, ma ha il vantaggio di rendere le commissioni sul carburante più prevedibili, migliorando l'efficienza del mercato delle commissioni sulle transazioni. Gli utenti possono inviare transazioni con una `maxFeePerGas` corrispondente a quanto sono disposti a pagare affinché la transazione sia eseguita, sapendo che non pagheranno di più del prezzo di mercato del carburante (`baseFeePerGas`) e otterranno il rimborso di qualsiasi extra, tranne la mancia.
+L'implementazione dell'[EIP-1559](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1559.md) nell'Aggiornamento di Londra ha reso il meccanismo delle commissioni sulle transazioni più complesso rispetto al precedente sistema basato su aste dei prezzi del gas, ma ha il vantaggio di rendere le commissioni del gas più prevedibili, migliorando l'efficienza del mercato delle commissioni sulle transazioni. Gli utenti possono inviare transazioni con una `maxFeePerGas` corrispondente a quanto sono disposti a pagare affinché la transazione sia eseguita, sapendo che non pagheranno di più del prezzo di mercato del gas (`baseFeePerGas`) e otterranno il rimborso di qualsiasi extra, tranne la mancia.
-In questo video viene spiegato l'EIP-1559 e i vantaggi che comporta:
+Questo video spiega l'EIP-1559 e i vantaggi che comporta:
-Se sei interessato puoi leggere le [specifiche esatte dell'EIP-1559](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1559.md).
+Se sei interessato, puoi leggere le [specifiche dell'EIP-1559](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1559.md) esatte.
-Approfondisci con queste [Risorse relative all'EIP-1559](https://hackmd.io/@timbeiko/1559-resources).
+Approfondisci con queste [Risorse dell'EIP-1559](https://hackmd.io/@timbeiko/1559-resources).
-## Perché esistono le commissioni sul carburante? {#why-do-gas-fees-exist}
+## Perché esistono le commissioni del gas? {#why-do-gas-fees-exist}
-In breve, le commissioni sul carburante contribuiscono a mantenere rete Ethereum sicura. Richiedendo una commissione per ogni calcolo eseguito sulla rete, evitiamo lo spam sulla rete da parte di attori malevoli. Per evitare cicli infiniti accidentali od ostili oppure altri sprechi di calcolo nel codice, ogni transazione deve definire un limite al numero di passaggi di calcolo dell'esecuzione del codice che può utilizzare. Questa unità di calcolo fondamentale è il "carburante".
+In breve, le commissioni del gas aiutano a proteggere la rete di Ethereum. Richiedendo una commissione per ogni calcolo eseguito sulla rete, impediamo agli utenti malevoli di compiere spam sulla rete. Per evitare cicli infiniti accidentali od ostili oppure altri sprechi di calcolo nel codice, ogni transazione deve definire un limite al numero di passaggi di calcolo dell'esecuzione del codice che può utilizzare. L'unità fondamentale di calcolo è il "gas".
-Sebbene una transazione preveda un limite, tutto il carburante non utilizzato in una transazione viene rimborsato all'utente (ciò che viene restituito è: `commissione massima - (commissione base + mancia)`).
+Sebbene una transazione preveda un limite, tutto il gas non utilizzato in una transazione viene rimborsato all'utente (ciò che viene restituito è: `commissione massima - (commissione di base + mancia)`).
-![Diagramma che mostra come viene rimborsato il carburante inutilizzato](../transactions/gas-tx.png) _Diagramma adattato dall' [illustrazione dell'Ethereum EVM](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
+![Diagramma che mostra come viene rimborsato il gas inutilizzato](../transactions/gas-tx.png) _Diagramma adattato da [Ethereum EVM illustrato](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
-## Cosa si intende con limite di carburante? {#what-is-gas-limit}
+## Cosa si intende con limite di gas? {#what-is-gas-limit}
-Il limite di carburante indica la quantità massima di carburante che si è disposti a consumare in una transazione. Le transazioni più complicate che coinvolgono [smart contract](/developers/docs/smart-contracts/) richiedono un maggiore lavoro di calcolo e quindi un limite di carburante superiore rispetto a un semplice pagamento. Un trasferimento di ETH standard richiede un limite di carburante di 21.000 unità di carburante.
+Il limite di gas si riferisce all'importo massimo di gas che si è disposti a consumare in una transazione. Le transazioni più complicate che coinvolgono i [contratti intelligenti](/developers/docs/smart-contracts/), richiedono un maggiore lavoro di calcolo e quindi un limite di gas maggiore rispetto a un semplice pagamento. Un trasferimento standard di ETH richiede un limite di gas di 21.000 unità di gas.
-Per esempio, se imposti un limite di carburante di 50.000 per un semplice trasferimento di ETH, l'EVM consuma 21.000 unità e le rimanenti 29.000 vengono rimborsate. Tuttavia, se specifichi troppo poco carburante, ad esempio un limite di carburante di 20.000 per un semplice trasferimento di ETH, l'EVM consumerà le tue 20.000 unità di carburante tentando di soddisfare la transazione, che però non potrà essere completata. A quel punto l'EVM annulla ogni modifica, ma dato che il miner ha già eseguito un lavoro pari a 20.000 unità di carburante, questo carburante viene consumato.
+Ad esempio, se imposti un limite di gas di 50.000 per un semplice trasferimento di ETH, l'EVM ne consumerebbe 21.000 unità e restituirebbe le 29.000 rimanenti. Tuttavia, se specifichi troppo poco gas, ad esempio un limite di gas di 20.000 per un semplice trasferimento di ETH, l'EVM consumerà le tue 20.000 unità di gas tentando di soddisfare la transazione, ma non la completerà. A quel punto l'EVM annulla ogni modifica, ma dato che il miner ha già eseguito un lavoro pari a 20.000 unità di gas, questo gas viene consumato.
-## Perché le commissioni del carburante possono esser così elevate? {#why-can-gas-fees-get-so-high}
+## Perché le commissioni del gas possono esser così elevate? {#why-can-gas-fees-get-so-high}
-Le commissioni sul carburante elevate sono dovute alla popolarità di Ethereum. Eseguire qualsiasi operazione su Ethereum richiede il consumo di carburante, ma bisogna considerare che lo spazio di carburante per blocco è limitato. Le commissioni includono l'esecuzione di calcoli, l'archiviazione o la manipolazione di dati, o ancora il trasferimento di token, tutte operazioni che consumano diverse quantità di unità di "carburante". All'aumentare della complessità delle funzionalità delle dapp, cresce anche il numero di operazioni che uno smart contract esegue, il che significa che ogni transazione occupa più spazio in un blocco di dimensioni limitate. Se c'è troppa domanda, gli utenti devono offrire una mancia maggiore per tentare di superare le transazioni degli altri utenti. Una mancia più cospicua può rendere più probabile che la tua transazione troverà posto nel blocco successivo.
+Le commissioni del gas elevate sono dovute alla popolarità di Ethereum. Eseguire qualsiasi operazione su Ethereum richiede il consumo di gas, ma lo spazio del gas per blocco è limitato. Le commissioni includono l'esecuzione di calcoli, l'archiviazione o la manipolazione di dati, o ancora il trasferimento di token, tutte operazioni che consumano diverse quantità di unità di "gas". All'aumentare della complessità delle funzionalità delle dApp, cresce anche il numero di operazioni eseguite da un contratto intelligente, il che significa che ogni transazione occupa più spazio in un blocco di dimensioni limitate. Se c'è troppa domanda, gli utenti devono offrire una mancia di importo maggiore per provare a superare le transazioni degli altri utenti. Una mancia più cospicua può rendere più probabile che la tua transazione troverà posto nel blocco successivo.
-Il prezzo del carburante da solo in realtà non determina quanto dobbiamo pagare per una specifica transazione. Per calcolare la commissione sulle transazioni dobbiamo moltiplicare il carburante usato per la commissione sulle transazioni, misurata in gwei.
+Il prezzo del gas da solo in realtà non determina quanto dobbiamo pagare per una specifica transazione. Per calcolare la commissione sulla transazione dobbiamo moltiplicare il gas usato per la commissione base, misurata in gwei.
## Iniziative per ridurre i costi del gas {#initiatives-to-reduce-gas-costs}
-Gli [aggiornamenti di scalabilità](/upgrades/) di Ethereum dovrebbero infine risolvere alcuni problemi delle commissioni sul carburante, che, a loro volta, consentiranno alla piattaforma di elaborare migliaia di transazioni al secondo e di scalare globalmente.
+Gli [aggiornamenti di scalabilità](/upgrades/) di Ethereum dovrebbero infine risolvere alcuni problemi delle commissioni del gas, che, a loro volta, consentiranno alla piattaforma di elaborare migliaia di transazioni al secondo e di scalare globalmente.
-Il ridimensionamento del Livello 2 è un'iniziativa fondamentale per migliorare notevolmente i costi del carburante, l'esperienza utente e la scalabilità. [Maggiori informazioni sul ridimensionamento del Livello 2](/developers/docs/scaling/#layer-2-scaling).
+Il ridimensionamento del Livello 2 è un'iniziativa fondamentale per migliorare notevolmente i costi del gas, l'esperienza utente e la scalabilità. [Maggiori informazioni sul ridimensionamento del Livello 2](/developers/docs/scaling/#layer-2-scaling).
-## Strategie utili per ridurre i costi del carburante {#strategies-for-you-to-reduce-gas-costs}
+## Strategie utili per ridurre i costi del gas {#strategies-for-you-to-reduce-gas-costs}
-Se stai cercando di ridurre i costi del carburante per i tuoi ETH, puoi impostare una mancia per indicare il livello di priorità della tua transazione. I miner anteporranno ed eseguiranno le transazioni che offrono una mancia maggiore per il carburante, poiché terranno le mance pagate dall'utente e saranno meno inclini a eseguire transazioni che prevedono mance inferiori.
+Se stai cercando di ridurre i costi del gas per i tuoi ETH, puoi impostare una mancia per indicare il livello di priorità della tua transazione. I miner anteporranno ed eseguiranno le transazioni che offrono una mancia maggiore per il gas, poiché terranno le mance pagate dall'utente e saranno meno inclini a eseguire transazioni che prevedono mance inferiori.
-Se desideri monitorare i prezzi del carburante in modo da poter inviare i tuoi ETH a un costo inferiore, puoi usare un ampio ventaglio di strumenti, come:
+Se desideri monitorare i prezzi del gas, così da poter inviare i tuoi ETH a un costo inferiore, puoi usare molti strumenti differenti, come:
-- [Etherscan](https://etherscan.io/gastracker) _- Strumento di stima del prezzo del carburante delle transazioni_
-- [Blocknative ETH Gas Estimator](https://chrome.google.com/webstore/detail/blocknative-eth-gas-estim/ablbagjepecncofimgjmdpnhnfjiecfm) _- Estensione per la stima del carburante di Chrome, che supporta sia transazioni legacy di Tipo 0 sia transazioni EIP-1559 di Tipo 2._
+- [Etherscan](https://etherscan.io/gastracker): _Strumento di stima del prezzo del gas delle transazioni_
+- [Blocknative ETH Gas Estimator](https://chrome.google.com/webstore/detail/blocknative-eth-gas-estim/ablbagjepecncofimgjmdpnhnfjiecfm): _Estensione di stima del gas di Chrome che supporta sia transazioni ereditarie di Tipo 0 che transazioni EIP-1559 di Tipo 2._
-- [ETH Gas Station](https://ethgasstation.info/) _- Strumenti di misurazione per il mercato del carburante dedicati ai consumatori_
-- [Cryptoneur Gas Fees Calculator](https://www.cryptoneur.xyz/gas-fees-calculator) _Calcola le commissioni del gas nella tua valuta locale per diversi tipi di transazione sulla rete principale, su Arbitrum e su Polygon._
+- [ETH Gas Station](https://ethgasstation.info/): _Strumenti di misurazione orientati al cliente per il mercato del gas di Ethereum_
+- [Cryptoneur Gas Fees Calculator](https://www.cryptoneur.xyz/gas-fees-calculator): _Calcola le commissioni del gas nella tua valuta locale per diversi tipi di transazione sulla Rete Principale, su Arbitrum e su Polygon._
## Strumenti correlati {#related-tools}
-- [Blocknative's Gas Platform](https://www.blocknative.com/gas) _- API per la stima del carburante sviluppata dalla piattaforma di dati mempool globale di Blocknative_
+- [Blocknative's Gas Platform](https://www.blocknative.com/gas): _API di stima del gas sviluppata dalla piattaforma di dati della mempool globale di Blocknative_
## Letture consigliate {#further-reading}
-- [Ethereum Gas Explained](https://defiprime.com/gas)
+- [Spiegazione del Gas di Ethereum](https://defiprime.com/gas)
- [Ethereum è più costoso da usare all'aumentare dei prezzi?](https://docs.ethhub.io/questions-about-ethereum/is-ethereum-more-expensive-to-use-as-price-rises/)
-- [Ridurre il consumo di carburante dei propri smart contract](https://medium.com/coinmonks/8-ways-of-reducing-the-gas-consumption-of-your-smart-contracts-9a506b339c0a)
+- [Ridurre il consumo di gas dei tuoi Contratti Intelligenti](https://medium.com/coinmonks/8-ways-of-reducing-the-gas-consumption-of-your-smart-contracts-9a506b339c0a)
- [Proof of Stake contro Proof of Work](https://blockgeeks.com/guides/proof-of-work-vs-proof-of-stake/)
## Argomenti correlati {#related-topics}
diff --git a/src/content/translations/it/developers/docs/ides/index.md b/src/content/translations/it/developers/docs/ides/index.md
index be5eb9ba300..8cbb2f14681 100644
--- a/src/content/translations/it/developers/docs/ides/index.md
+++ b/src/content/translations/it/developers/docs/ides/index.md
@@ -8,30 +8,25 @@ Quando si tratta di configurare un [ambiente di sviluppo integrato (IDE)](https:
## IDE basato su Web {#web-based-ides}
-Se desideri provare a scrivere codice prima di [configurare un ambiente di sviluppo locale](/developers/local-environment/), queste app Web sono personalizzate per lo sviluppo di Smart Contract Ethereum.
+Se desideri provare a scrivere del codice prima di [configurare un ambiente di sviluppo locale](/developers/local-environment/), queste app web sono personalizzate per lo sviluppo di contratti intelligenti di Ethereum.
-**Remix -** **_IDE basato sul web con analisi statiche e una macchina virtuale della blockchain di prova_**
+**[Remix](https://remix.ethereum.org/)**: **_IDE basato sul web che integra analisi statica e una macchina virtuale per una blockchain di prova_**
-- [remix.ethereum.org](https://remix.ethereum.org/)
+**[ChainIDE](https://chainide.com/)**: **_un IDE multi-catena basato su cloud_**
-**EthFiddle -** **_IDE basato sul web che ti consente di scrivere, compilare ed eseguire il debug del tuo contratto intelligente_**
+**[Replit (Solidity Starter)](https://replit.com/@replit/Solidity-starter-beta)**: **_un ambiente di sviluppo personalizzabile per Ethereum con reloading immediato, controllo degli errori e supporto della rete di prova di prim'ordine_**
-- [ethfiddle.com](https://ethfiddle.com/)
-- [Gitter](https://gitter.im/loomnetwork/ethfiddle)
-
-**ChainIDE -** **_Un IDE multi-chain basato su cloud_**
+**[Tenderly Sandbox](https://sandbox.tenderly.co/)**: **_un ambiente di prototipazione veloce è possibile scrivere, eseguire ed effettuare il debug dei contratti intelligenti nel browser usando Solidity e JavaScript_**
-- [chainide.com](https://chainide.com/)
+**[EthFiddle](https://ethfiddle.com/)**: **_IDE basato sul web che consente di scrivere, compilare ed eseguire il debug del tuo contratto intelligente_**
-**Replit -** **_Un ambiente di sviluppo personalizzabile per Ethereum con ricarica rapida, controllo degli errori e supporto di prima classe della rete di prova_**
-
-- [Solidity starter](https://replit.com/@replit/Solidity-starter-beta)
+- [Gitter](https://gitter.im/loomnetwork/ethfiddle)
## IDE desktop {#desktop-ides}
-Gli IDE più diffusi hanno plugin integrati che migliorano l'esperienza di sviluppo per Ethereum. Come minimo, offrono evidenziazione della sintassi per i [linguaggi di smart contract](/developers/docs/smart-contracts/languages/).
+Gli IDE più diffusi hanno plugin integrati che migliorano l'esperienza di sviluppo per Ethereum. Come minimo, offrono l'evidenziazione della sintassi per i [linguaggi dei contratti intelligenti](/developers/docs/smart-contracts/languages/).
-**Visual Studio Code -** **_IDE multipiattaforma professionale con supporto ufficiale a Ethereum_**
+**Visual Studio Code -** **_IDE multipiattaforma professionale con supporto ufficiale per Ethereum_**
- [Visual Studio Code](https://code.visualstudio.com/)
- [Azure Blockchain Workbench](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/microsoft-azure-blockchain.azure-blockchain-workbench?tab=Overview)
@@ -44,7 +39,7 @@ Gli IDE più diffusi hanno plugin integrati che migliorano l'esperienza di svilu
- [GitHub](https://github.com/atom)
- [Pacchetti Ethereum](https://atom.io/packages/search?utf8=%E2%9C%93&q=keyword%3Aethereum&commit=Search)
-**IDE JetBrains (IntelliJ IDEA, etc.) -** **_Strumenti essenziali per sviluppatori di software e team di sviluppo_**
+**JetBrains IDEs (IntelliJ IDEA, ecc.) -** **_Strumenti essenziali per sviluppatori di software e team_**
- [JetBrains](https://www.jetbrains.com/)
- [GitHub](https://github.com/JetBrains)
@@ -62,4 +57,4 @@ Gli IDE più diffusi hanno plugin integrati che migliorano l'esperienza di svilu
## Letture consigliate {#further-reading}
-_Conosci una risorsa pubblica che ti è stata utile? Modifica questa pagina e aggiungila!_
+_Conosci una risorsa della community che ti è stata utile? Modifica questa pagina e aggiungila!_
diff --git a/src/content/translations/it/developers/docs/intro-to-ether/index.md b/src/content/translations/it/developers/docs/intro-to-ether/index.md
index 73e199fed3b..3dbb8c305c3 100644
--- a/src/content/translations/it/developers/docs/intro-to-ether/index.md
+++ b/src/content/translations/it/developers/docs/intro-to-ether/index.md
@@ -18,11 +18,11 @@ La prima criptovaluta è stata Bitcoin, creata da Satoshi Nakamoto. Dal rilascio
## Cos'è un ether? {#what-is-ether}
-**Ether (ETH)** è la criptovaluta impiegata per molti scopi sulla rete Ethereum. Fondamentalmente è l'unica forma di pagamento accettabile per le commissioni sulle transazioni, e dopo [la fusione](/upgrades/merge) servianno degli ether per convalidare e proporre blocchi sulla rete principale. Ether viene anche utilizzato come forma primaria di garanzia nei mercati dei prestiti [DeFi](/defi), come unità di conto nei mercati NFT, come pagamento guadagnato per l'esecuzione di servizi o la vendita di beni fisici e altro ancora.
+**Ether (ETH)** è la criptovaluta impiegata per molti scopi sulla rete Ethereum. Fondamentalmente è l'unica forma di pagamento accettabile per le commissioni sulle transazioni, e dopo [la fusione](/upgrades/merge) servianno degli ether per convalidare e proporre blocchi sulla rete principale. L'ether è anche usato come una forma principale di garanzia nei mercati di prestito della [DeFi](/defi), come un'unità di conto nei mercati di NFT, come pagamento guadagnato per l'esecuzione di servizi o della vendita di beni del mondo reale e molto altro.
Ethereum consente agli sviluppatori di creare [**applicazioni decentralizzate (dapp)**](/developers/docs/dapps), che condividono tutte un pool di potenza di elaborazione. Questo pool condiviso è limitato, quindi Ethereum necessita di un meccanismo per determinare chi lo usa. In caso contrario, una dApp potrebbe consumare accidentalmente o malevolmente tutte le risorse della rete, impedendo ad altri di accedervi.
-La criptovaluta ether supporta un meccanismo di determinazione dei prezzi per la potenza di calcolo di Ethereum. Quando vogliono effettuare una transazione, gli utenti devono pagare ether per far riconoscere la propria transazione sulla blockchain. Questi costi d'uso sono noti come [commissioni del carburante](/developers/docs/gas/) e dipendono dalla quantità di potenza di calcolo necessaria per eseguire la transazione e dalla domanda di potenza di calcolo a livello della rete in quel momento.
+La criptovaluta ether supporta un meccanismo di determinazione dei prezzi per la potenza di calcolo di Ethereum. Quando vogliono effettuare una transazione, gli utenti devono pagare ether per far riconoscere la propria transazione sulla blockchain. Questi costi d'uso sono noti come [commissioni sul gas](/developers/docs/gas/), derivate dalla quantità di potenza di calcolo necessaria per eseguire la transazione e dalla domanda della rete per la potenza di calcolo in quel momento.
Pertanto, anche se una dApp malevola inviasse un ciclo infinito, a un certo punto la transazione terminerebbe gli ether e si arresterebbe, consentendo alla rete di tornare alla normalità.
@@ -38,7 +38,7 @@ L'ether è coniato come una ricompensa per ogni blocco proposto e al punto di co
Oltre a essere creato tramite le ricompense per il blocco, l'ether può essere anche distrutto o "bruciato", come si dice in gergo. L'ether bruciato viene rimosso dalla circolazione in via permanente.
-La bruciatura di ether ha luogo in ogni transazione su Ethereum. Quando gli utenti pagano per le proprie transazioni, viene distrutta una commissione di base sul gas, impostata dalla rete a seconda della domanda di transazioni. Questo, insieme a dimensioni variabili dei blocchi e una commissione del gas massima, semplifica la stima della commissione di transazione su Ethereum. Quando la domanda della rete è elevata, i [blocchi](https://etherscan.io/block/12965263) possono bruciare più ether di quanto ne sia coniato, compensando efficacemente l'emissione di ether.
+La bruciatura di ether ha luogo in ogni transazione su Ethereum. Quando gli utenti pagano per le proprie transazioni, una commissione di base sul gas, impostata dalla rete secondo la domanda di transazioni, viene distrutta. Questo, insieme a dimensioni variabili dei blocchi e una commissione sul gas massima, semplifica la stima della commissione della transazione su Ethereum. Quando la domanda della rete è elevata, i [blocchi](https://etherscan.io/block/12965263) possono bruciare più ether di quanto ne sia coniato, compensando efficacemente l'emissione di ether.
Bruciare la commissione di base impedisce vari metodi in cui i produttori del blocco potrebbero altrimenti manipolarla. Ad esempio, se i produttori del blocco hanno ricevuto la commissione di base, potrebbero includere le proprie transazioni gratuitamente e aumentare la commissione di base per tutti gli altri. In caso contrario, potrebbero rimborsare la commissione di base ad alcuni utenti al di fuori della catena, creando così un mercato delle commissioni sulle transazioni più opaco e complesso.
@@ -50,24 +50,24 @@ Wei è la quantità più piccola possibile di ether. Di conseguenza, molte imple
Gwei, abbreviazione di giga-wei, è spesso usato per descrivere i costi del gas su Ethereum.
-| Denominazione | Valore in ether | Uso comune |
-| ------------- | ---------------- | ---------------------------------------------- |
-| Wei | 10-18 | Implementazioni tecniche |
-| Gwei | 10-9 | Commissioni sul carburante leggibili dall'uomo |
+| Denominazione | Valore in ether | Uso comune |
+| ------------- | ---------------- | --------------------------------------- |
+| Wei | 10-18 | Implementazioni tecniche |
+| Gwei | 10-9 | Commissioni sul gas leggibili dall'uomo |
## Trasferire ether {#transferring-ether}
Ogni transazione su Ethereum contiene un campo di `valore`, che specifica l'importo di ether da trasferire, denominato in wei, e da inviare dall'indirizzo del mittente all'indirizzo del destinatario.
-Quando l'indirizzo del destinatario è uno [smart contract](/developers/docs/smart-contracts/), questo ether trasferito potrebbe essere usato per pagare il carburante quando lo smart contract esegue il proprio codice.
+Quando l'indirizzo del destinatario è un [contratto intelligente](/developers/docs/smart-contracts/), questo ether trasferito potrebbe essere usato per pagare il gas quando il contratto intelligente esegue il proprio codice.
[Maggiori informazioni sulle transazioni](/developers/docs/transactions/)
## Interrogare l'ether {#querying-ether}
-Gli utenti possono interrogare il saldo di ether di qualsiasi [accout](/developers/docs/accounts/) consultando il rispettivo campo del `saldo`, che mostra le posizioni in ether denominate in wei.
+Gli utenti possono interrogare il saldo di ether di qualsiasi [conto](/developers/docs/accounts/), ispezionando il campo `balance` del conto, che mostra le posizioni in ether, denominate in wei.
-[Etherscan](https://etherscan.io) è uno strumento popolare per consultare i saldi dell'indirizzo attraverso un'applicazione basata sul web. Per esempio, [questa pagina di Etherscan](https://etherscan.io/address/0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae) mostra il saldo per la Ethereum Foundation. I saldi del conto sono anche interrogabili usando i portafogli o direttamente effettuando richieste ai nodi.
+[Etherscan](https://etherscan.io) è uno strumento popolare per consultare i saldi dell'indirizzo attraverso un'applicazione basata sul web. Per esempio, [questa pagina di Etherscan](https://etherscan.io/address/0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae) mostra il saldo per la Ethereum Foundation. I saldi dei conti possono esser interrogati anche utilizzando i portafogli, o direttamente, effettuando richieste ai nodi.
## Letture consigliate {#further-reading}
diff --git a/src/content/translations/it/developers/docs/intro-to-ethereum/index.md b/src/content/translations/it/developers/docs/intro-to-ethereum/index.md
index cf7dea455e7..4be61711ca3 100644
--- a/src/content/translations/it/developers/docs/intro-to-ethereum/index.md
+++ b/src/content/translations/it/developers/docs/intro-to-ethereum/index.md
@@ -30,7 +30,7 @@ Nell'universo di Ethereum c'è un unico computer canonico (chiamato macchina vir
Le richieste di calcolo sono dette richieste di transazione; il registro di tutte le transazioni e dello stato presente dell'EVM viene memorizzato sulla blockchain, che a sua volta è memorizzata e concordata da tutti i nodi.
-I meccanismi crittografici assicurano che una volta verificate come valide e aggiunte alla blockchain, le transazioni non possano essere successivamente manomesse. Gli stessi meccanismi assicurano inoltre che tutte le transazioni siano firmate ed eseguite con "permessi" appropriati (nessuno a parte Alice stessa dovrebbe essere in grado di inviare attivi digitali dal suo account).
+I meccanismi crittografici assicurano che una volta verificate come valide e aggiunte alla blockchain, le transazioni non possano essere successivamente manomesse. Inoltre, gli stessi meccanismi assicurano che tutte le transazioni siano firmate ed eseguite con "permessi" appropriati (nessuno dovrebbe poter inviare risorse digitali dal conto di Alice, tranne la stessa Alice).
## Cos'è un ether? {#what-is-ether}
@@ -38,19 +38,19 @@ I meccanismi crittografici assicurano che una volta verificate come valide e agg
Ogni partecipante che trasmette una richiesta di transazione deve anche offrire un certo importo di ETH alla rete a titolo di ricompensa. La rete elargirà tale ricompensa a chiunque svolga il lavoro effettivo verificando la transazione, eseguendola, inviandola alla blockchain e trasmettendola alla rete.
-L'importo di ETH pagato corrisponde al tempo necessario per eseguire il calcolo. Queste ricompense impediscono inoltre ai partecipanti malevoli di intasare intenzionalmente la rete richiedendo l'esecuzione di calcoli infiniti o altri script ad alta intensità di risorse, poiché tali partecipanti devono pagare per il tempo di calcolo.
+L'importo di ETH pagato corrisponde alle risorse necessarie a eseguire il calcolo. Queste ricompense impediscono ai partecipanti malevoli di intasare intenzionalmente la rete, richiedendo l'esecuzione di calcoli infiniti o di altri script ad alta intensità di risorse, poiché tali partecipanti devono pagare per le risorse di calcolo.
L'ETH è inoltre usato per fornire sicurezza cripto-economica alla rete in tre modi principali: 1) è usato come un mezzo per ricompensare i validatori che propongono i blocchi o segnalano i comportamenti disonesti degli altri validatori; 2) è messo in staking dai validatori, fungendo da garanzia contro i comportamenti disonesti: se i validatori tentano di comportarsi in modo malevolo, i loro ETH possono esser distrutti; 3) è usato per ponderare i 'voti' per i blocchi appena proposti, alimentando la parte di scelta della diramazione del meccanismo di consenso.
-## Cosa sono gli Smart Contract? {#what-are-smart-contracts}
+## Cosa sono i contratti intelligenti? {#what-are-smart-contracts}
-In pratica, i partecipanti non scrivono nuovo codice ogni volta che desiderano richiedere un calcolo sull'EVM. Piuttosto, gli sviluppatori dell'applicazione caricano i programmi (frammenti di codice riutilizzabili) nello stato EVM e gli utenti richiedono di eseguire questi frammenti di codice con parametri variabili. Smart contract è il nome con il quale chiamiamo questi programmi caricati ed eseguiti dalla rete.
+In pratica, i partecipanti non scrivono nuovo codice ogni volta che desiderano richiedere un calcolo sull'EVM. Piuttosto, gli sviluppatori dell'applicazione caricano i programmi (frammenti di codice riutilizzabili) nello stato EVM e gli utenti richiedono di eseguire questi frammenti di codice con parametri variabili. Chiamiamo i programmi caricati a ed eseguiti dai contratti intelligenti della rete.
-A un livello molto basilare, puoi pensare a uno smart contract come una sorta di distributore automatico: uno script che, quando viene chiamato con certi parametri, esegue delle azioni o dei calcoli se sono soddisfatte determinate condizioni. Per esempio, un semplice smart contract del fornitore potrebbe creare e assegnare la proprietà di un asset digitale se il richiedente invia ETH a un destinatario specifico.
+A un livello molto basilare, puoi pensare a un contratto intelligente come una sorta di distributore automatico: uno script che, quando chiamato entro certi parametri, esegue delle azioni o dei calcoli, se certe condizioni sono soddisfatte. Ad esempio, il semplice contratto intelligente del fornitore potrebbe creare e assegnare la proprietà di una risorsa digitale se il chiamante invia ETH a un destinatario specifico.
-Qualunque sviluppatore può creare uno smart contract e renderlo pubblico alla rete, usando la blockchain come proprio livello dati, in cambio di una commissione pagata alla rete. Qualunque utente può quindi chiamare questo smart contract per eseguire il suo codice, anche in questo caso pagando una commissione alla rete.
+Qualsiasi sviluppatore può creare un contratto intelligente e renderlo pubblico sulla rete, usando la blockchain come suo livello dei dati, per una commissione pagata alla rete. Qualsiasi utente può, quindi, chiamare il contratto intelligente a eseguire il proprio codice, anche in questo caso per una commissione pagata alla rete.
-Dunque, con gli smart contract, gli sviluppatori possono creare e distribuire app rivolte agli utenti arbitrariamente complesse e servizi come marketplace, strumenti finanziari, giochi, ecc.
+Dunque, con i contratti intelligenti, gli sviluppatori possono creare e distribuire arbitrariamente app e servizi rivolti agli utenti, come: mercati, strumenti finanziari, giochi, etc.
## Terminologia {#terminology}
@@ -76,19 +76,19 @@ Le macchine fisiche reali che conservano lo stato dell'EVM. I nodi comunicano tr
[Maggiori informazioni sui nodi](/developers/docs/nodes-and-clients/)
-### Account {#accounts}
+### Conti {#accounts}
-Dove sono conservati gli ETH. Gli utenti possono inizializzare account, depositare ETH negli account e trasferire ETH dai loro account ad altri utenti. Account e saldi degli account sono memorizzati in una grande tabella nell'EVM, fanno parte dello stato complessivo dell'EVM.
+Dove sono conservati gli ETH. Gli utenti possono inizializzare i conti, depositare ETH nei conti e trasferire ETH dai propri conti ad altri utenti. I conti e i loro saldi sono archiviati in una grande tabella nell'EVM; sono parte dello stato complessivo dell'EVM.
-[Maggiori informazioni sugli account](/developers/docs/accounts/)
+[Di più sui conti](/developers/docs/accounts/)
### Transazioni {#transactions}
"Richiesta di transazione" è il termine formale per indicare una richiesta di esecuzione del codice sull'EVM, mentre una "transazione" è una richiesta di transazione portata a termine e il cambiamento associato nello stato dell'EVM. Qualunque utente può trasmettere una richiesta di transazione alla rete da un nodo. Affinché la richiesta di transazione influenzi lo stato dell'EVM concordato, deve essere convalidata, eseguita e "inviata alla rete" da un altro nodo. L'esecuzione di codice innesca un cambiamento di stato dell'EVM; al salvataggio della transazione, questo cambiamento di stato viene trasmesso a tutti i nodi della rete. Alcuni esempi di transazione:
-- Inviare X ETH dal mio account a quello di Alice.
-- Pubblicare il codice di uno Smart Contract nello stato dell'EVM.
-- Eseguire il codice dello Smart Contract all'indirizzo X dell'EVM, con argomenti Y.
+- Inviare X ETH dal mio conto a quello di Alice.
+- Pubblicare il codice di un contratto intelligente nello stato dell'EVM.
+- Eseguire il codice del contratto intelligente all'indirizzo X nell'EVM, con gli argomenti Y.
[Maggiori informazioni sulle transazioni](/developers/docs/transactions/)
@@ -98,11 +98,11 @@ Il volume di transazioni è molto alto, quindi le transazioni sono "salvate" in
[Maggiori informazioni sui blocchi](/developers/docs/blocks/)
-### Smart Contract {#smart-contracts}
+### Contratti intelligenti {#smart-contracts}
-Uno snippet di codice riutilizzabile (programma) che uno sviluppatore pubblica nello stato dell'EVM. Chiunque può richiedere che il codice dello smart contract venga eseguito facendo una richiesta di transazione. Siccome gli sviluppatori possono scrivere applicazioni arbitrarie eseguibili nell'EVM (giochi, marketplace, strumenti finanziari, ecc) pubblicando smart contract, queste spesso sono chiamate [dapp o app decentralizzate](/developers/docs/dapps/).
+Uno snippet di codice riutilizzabile (programma) che uno sviluppatore pubblica nello stato dell'EVM. Chiunque può richiedere che il codice del contratto intelligente sia eseguito effettuando una richiesta di transazione. Poiché gli sviluppatori possono scrivere applicazioni arbitrarie eseguibili nell'EVM (giochi, mercati, strumenti finanziari, etc.) pubblicando i contratti intelligenti, questi sono anche spesso detti [dapp, o App Decentralizzate](/developers/docs/dapps/).
-[Maggiori informazioni sugli smart contract](/developers/docs/smart-contracts/)
+[Di più sui contratti intelligenti](/developers/docs/smart-contracts/)
## Letture consigliate {#further-reading}
diff --git a/src/content/translations/it/developers/docs/mev/index.md b/src/content/translations/it/developers/docs/mev/index.md
index 338aa7aa602..d989c7ec965 100644
--- a/src/content/translations/it/developers/docs/mev/index.md
+++ b/src/content/translations/it/developers/docs/mev/index.md
@@ -4,39 +4,37 @@ description: Un'introduzione al valore estraibile massimo (MEV)
lang: it
---
-Il valore estraibile massimo (MEV) si riferisce al valore massimo che può essere estratto dalla produzione del blocco oltre alla ricompensa del blocco standard e alle commissioni del gas, includendo, escludendo e modificando l'ordine delle transazioni in un blocco.
+Il valore estraibile massimo (MEV) si riferisce al valore massimo che può esser estratto dalla produzione del blocco, oltre alla ricompensa standard del blocco e alle commissioni sul gas, includendo, escludendo e cambiando l'ordine delle transazioni in un blocco.
-### Valore estraibile del minatore
+### Valore estraibile dal miner {#miner-extractable-value}
-Questo concetto è stato applicato per la prima volta nell'ambito del [proof-of-work](/developers/docs/consensus-mechanisms/pow/) ed è stato inizialmente denominato "valore estraibile del minatore". Questo perché nel Proof of Work i miner controllano l'inclusione, l'esclusione e l'ordinamento della transazione. Tuttavia, dopo la transizione al proof-of-stake tramite [La Fusione](/upgrades/merge), i validatori saranno responsabili di questi ruoli e il mining non sarà più applicabile. Questi metodi di estrazione del valore persisteranno dopo la transizione e proprio per questo è stato necessario modificare il nome. Per conservare lo stesso acronimo a scopo di continuità e mantenere al contempo lo stesso significato fondamentale, ora utilizziamo "valore estraibile massimo" come alternativa più inclusiva.
+Il valore estraibile massimo fu applicato per la prima volta nel contesto del [proof-of-work](/developers/docs/consensus-mechanisms/pow/) e fu inizialmente definito come "valore estraibile dal miner". Questo perché nel Proof of Work i miner controllano l'inclusione, l'esclusione e l'ordinamento della transazione. Tuttavia, a partire dalla transizione al proof-of-stake tramite [La Fusione](/upgrades/merge), i validatori sono responsabili di tali ruoli e il mining non è più parte del protocollo di Ethereum. I metodi d'estrazione del valore però esistono ancora, quindi il termine usato adesso è invece "Valore estraibile massimo".
## Prerequisiti {#prerequisites}
-Assicurati di avere familiarità con [transazioni](/developers/docs/transactions/), [blocchi](/developers/docs/blocks/), [gas](/developers/docs/gas/) e [mining](/developers/docs/consensus-mechanisms/pow/mining/). Anche la familiarità con [dApp](/dapps/) e [DeFi](/defi/) è utile.
+Assicurati di essere familiare con le [transazioni](/developers/docs/transactions/), i [blocchi](/developers/docs/blocks/), il [proof-of-stake](/developers/docs/consensus-mechanisms/pos) e il [gas](/developers/docs/gas/). Anche la familiarità con [dApp](/dapps/) e [DeFi](/defi/) è utile.
## Estrazione del MEV {#mev-extraction}
-In teoria, il MEV proviene interamente dai minatori, poiché questi sono la sola parte in grado di garantire l'esecuzione di un'opportunità di MEV redditizia (almeno sull'attuale catena di proof-of-work - questo cambierà dopo [La Fusione](/upgrades/merge/)). Nella pratica, tuttavia, una grande porzione del MEV è estratta da partecipanti indipendenti della rete, chiamati "ricercatori". I ricercatori eseguono algoritmi complessi sui dati della blockchain per rilevare opportunità di MEV redditizie e si servono di bot per inviare automaticamente tali transazioni redditizie alla rete.
+In teoria, il MEV proviene interamente dai validatori poiché sono l'unica parte in grado di garantire l'esecuzione di un'opportunità di MEV redditizia. Nella pratica, tuttavia, una grande porzione del MEV è estratta da partecipanti indipendenti della rete, chiamati "ricercatori". I ricercatori eseguono algoritmi complessi sui dati della blockchain per rilevare opportunità di MEV redditizie e si servono di bot per inviare automaticamente tali transazioni redditizie alla rete.
-I miner ottengono comunque una parte dell'importo del MEV intero siccome i ricercatori sono disposti a pagare commissioni del carburante elevate (che vanno al miner), in cambio di una maggior probabilità d'inclusione delle loro transazioni redditizie in un blocco. Presumendo che i ricercatori siano economicamente razionali, la commissione del carburante che un ricercatore è disposto a pagare sarà pari fino al 100% del MEV del ricercatore (infatti, se la commissione del carburante fosse maggiore, il ricercatore perderebbe denaro).
+I validatori ottengono comunque una porzione dell'intero importo del MEV, poiché i ricercatori sono disposti a pagare commissioni sul gas maggiori (che vanno al validatore), in cambio di una maggiore probabilità d'inclusione delle loro transazioni profittevoli in un blocco. Supponendo che i ricercatori siano economicamente razionari, la commissione sul gas che un ricercatore è disposto a pagare sarà un importo fino al 100% del MEV del ricercatore (poiché se la commissione sul gas fosse stata maggiore, il ricercatore avrebbe perso denaro).
-Così, per alcune opportunità MEV altamente competitive, come l'[arbitraggio DEX](#mev-examples-dex-arbitrage), i ricercatori potrebbero dover pagare il 90% (o persino di più) dei loro ricavi MEV complessivi in commissioni del carburante al miner, in quanto sono tante le persone interessate a compiere lo stesso scambio di arbitraggio redditizio. Questo perché l'unico modo per garantire che la loro transazione di arbitraggio funzioni è quello di inviare la transazione con il prezzo del carburante più alto.
+Così, per alcune opportunità di MEV molto competitive, come l'[arbitraggio della DEX](#mev-examples-dex-arbitrage), i ricercatori potrebbero dover pagare il 90%, se non più, delle loro entrate totali del MEV in commissioni sul gas al validatore, poiché così tante persone vogliono eseguire lo stesso scambio d'arbitraggio profittevole. Questo è perché il solo modo per garantire che la loro transazione d'arbitraggio sia eseguita se inviano la transazione con il prezzo sul gas maggiore.
-### Golfing del carburante {#mev-extraction-gas-golfing}
+### Golf del gas {#mev-extraction-gas-golfing}
-Con questa dinamica, chi è bravo nel "golfing del carburante", ovvero la programmazione delle transazioni in modo che consumino la quantità minima di gas, ha un vantaggio competitivo, in quanto consente ai ricercatori di impostare un prezzo del carburante maggiore pur mantenendo costanti le commissioni del carburante totali (poiché commissioni del carburante = prezzo del carburante \* carburante utilizzato).
+Questa dinamica ha reso esser bravi al "golf del gas", la programmazione delle transazioni così che usino l'importo minimo di gas, un vantaggio competitivo, poiché consente ai ricercatori di impostare un prezzo del gas maggiore, mantenendo costanti le proprie commissioni sul gas totali (poiché, commissioni sul gas = prezzo del gas \* gas usato).
-Tra le tecniche di golfing del carburante più diffuse vi è quella di usare indirizzi che iniziano con una lunga stringa di zeri (ad es. [0x0000000000C521824EaFf97Eac7B73B084ef9306](https://etherscan.io/address/0x0000000000c521824eaff97eac7b73b084ef9306)), poiché occupano meno spazio di archiviazione (e dunque meno gas), oppure quella di lasciare piccoli saldi di token [ERC-20](/developers/docs/standards/tokens/erc-20/) nei contratti, poiché inizializzare uno slot di archiviazione costa più carburante (se il saldo è 0) rispetto a quello necessario per aggiornarne uno. Individuare altre tecniche per ridurre il consumo di carburante è un'area di ricerca attiva tra i ricercatori.
+Alcune tecniche di golf del gas ben note includono: usare indirizzi che iniziano con una lunga stringa di zeri (es. [0x0000000000C521824EaFf97Eac7B73B084ef9306](https://etherscan.io/address/0x0000000000c521824eaff97eac7b73b084ef9306)) poiché richiedono meno spazio (e quindi gas) da archiviare; e lasciando piccoli saldi del token [ERC-20](/developers/docs/standards/tokens/erc-20/) nei contratti, poiché costa più gas inizializzare uno slot d'archiviazione (se il saldo è 0), piuttosto che aggiornarne uno. Individuare altre tecniche per ridurre il consumo di gas è un'area di ricerca attiva tra i ricercatori.
### Frontrunner generalizzati {#mev-extraction-generalized-frontrunners}
-Anziché programmare algoritmi complessi per rilevare opportunità di MEV redditizie, alcuni ricercatori eseguono frontrunner generalizzati. I frontrunner generalizzati sono bot che tengono d'occhio il mempool per individuare le transazioni redditizie. Il frontrunner copierà il codice della transazione potenzialmente redditizia, sostituirà gli indirizzi con il proprio ed eseguirà la transazione localmente per verificare due volte che la transazione modificata risulti in un profitto all'indirizzo del frontrunner. Se la transazione è effettivamente redditizia, il frontrunner invierà la transazione modificata con l'indirizzo sostituito e un prezzo del carburante maggiorato, eseguendo il "frontrunning" della transazione originale e ottenendo il MEV del ricercatore originale.
+Anziché programmare algoritmi complessi per rilevare opportunità di MEV redditizie, alcuni ricercatori eseguono frontrunner generalizzati. I frontrunner generalizzati sono bot che tengono d'occhio il mempool per individuare le transazioni redditizie. Il frontrunner copierà il codice della transazione potenzialmente redditizia, sostituirà gli indirizzi con il proprio ed eseguirà la transazione localmente per verificare due volte che la transazione modificata risulti in un profitto all'indirizzo del frontrunner. Se la transazione è effettivamente redditizia, il precursore invierà la transazione modificata con l'indirizzo sostituito e un prezzo del gas maggiore, "precorrendo" la transazione originale e ottenendo il MEV originale del ricercatore.
### Flashbot {#mev-extraction-flashbots}
-I flashbot sono un progetto indipendente che estende il client di go-ethereum con un servizio che consente ai ricercatori di inviare le transazioni del MEV ai miner senza rivelarli al mempool pubblico. Questo impedisce ai frontrunner generalizzati di eseguire frontrun sulle transazioni.
-
-Al momento della redazione del presente articolo, una porzione significativa di transazioni MEV viene indirizzata attraverso i Flashbot; ciò significa che i frontrunner generalizzati non sono efficaci come in passato.
+I flashbot sono un progetto indipendente che estende i client di esecuzione con un servizio che consente ai ricercatori di inviare le transazioni del MEV ai validatori senza rivelarle al mempool pubblico. Questo impedisce ai frontrunner generalizzati di eseguire frontrun sulle transazioni.
## Esempi di MEV {#mev-examples}
@@ -44,17 +42,19 @@ Il MEV emerge sulla blockchain in diversi modi.
### Arbitraggio DEX {#mev-examples-dex-arbitrage}
-L'arbitraggio dello [scambio decentralizzato](/glossary/#dex) (DEX) è l'opportunità di MEV più semplice e più diffusa. Ne risulta che è anche la più competitiva.
+L'arbitraggio dello [scambio decentralizzato](/glossary/#dex) (DEX) è l'opportunità di MEV più semplice e più diffusa. Di conseguenza è anche la più competitiva.
Funziona come segue: se due DEX offrono un token a due prezzi diversi, qualcuno può acquistare il token sul DEX al prezzo minore e rivenderlo sul DEX al prezzo maggiore in un'unica transazione atomica. Grazie ai meccanismi della blockchain, questo è vero e proprio arbitraggio privo di rischi.
-[Ecco un esempio](https://etherscan.io/tx/0x5e1657ef0e9be9bc72efefe59a2528d0d730d478cfc9e6cdd09af9f997bb3ef4) di transazione d'arbitraggio redditizia in cui un ricercatore ha trasformato 1.000 ETH in 1.045 ETH sfruttando i diversi prezzi della coppia ETH/DAI su Uniswap vs. Sushiswap.
+[Ecco un esempio](https://etherscan.io/tx/0x5e1657ef0e9be9bc72efefe59a2528d0d730d478cfc9e6cdd09af9f997bb3ef4) di una transazione di arbitraggio redditizia in cui un ricercatore ha trasformato 1.000 ETH in 1.045 ETH sfruttando i diversi prezzi della coppia ETH/DAI su Uniswap vs. Sushiswap.
### Liquidazioni {#mev-examples-liquidations}
-Le liquidazioni del protocollo di prestito presentano un'altra ben nota opportunità di MEV.
+Le liquidazioni del protocollo di prestito presentano un'altra opportunità di MEV ben nota.
+
+I protocolli di prestito come Maker e Aave richiedono agli utenti di depositare un qualche tipo di garanzia (es. ETH). Questa garanzia depositata è poi usata per concedere prestiti ad altri utenti.
-I protocolli di prestito come Maker e Aave funzionano richiedendo agli utenti di depositare qualche tipo di garanzia (es. ETH). Gli utenti possono quindi prendere in prestito attivi e token diversi da altri, a seconda delle loro esigenze (ad esempio possono prendere in prestito MKR se vogliono votare su una proposta di governance di MakerDAO o SUSHI se vogliono guadagnare una porzione delle commissioni di trading su Sushiswap) fino a un certo importo della loro garanzia depositata, per esempio il 30% (l'esatta percentuale della capacità di prestito è determinata dal protocollo). In questo caso gli utenti da cui prendono in prestito gli altri token fungono da creditori.
+Gli utenti possono quindi prendere in prestito risorse e token dagli altri, a seconda delle loro esigenze (ad es. potresti prendere in prestito MKR se desideri votare in una proposta di governance di MakerDAO), fino a una certa percentuale della loro garanzia depositata. Ad esempio, se l'importo preso in prestito è un massimo del 30%, un utente che deposita 100 DAI nel protocollo può prendere in prestito fino all'equivalente di 30 DAI di un'altra risorsa. Il protocollo determina l'esatta percentuale di potenza presa in prestito.
Al fluttuare del valore della garanzia di un debitore, fluttua anche la capacità di prestito. Se, a causa delle fluttuazioni del mercato, il valore degli attivi presi in presi in prestito supera, ad esempio, il 30% del valore della loro garanzia (anche in questo caso l'esatta percentuale è determinata dal protocollo), il protocollo consente tipicamente a chiunque di liquidare la garanzia, pagando istantaneamente i creditori (in modo simile al funzionamento dei [margini aggiuntivi](https://www.investopedia.com/terms/m/margincall.asp) nella finanza tradizionale). In caso di liquidazione, il debitore deve solitamente pagare una cospicua commissione di liquidazione, parte della quale va al liquidatore; ed è qui che risiede l'opportunità di MEV.
@@ -100,24 +100,25 @@ Senza ricercatori razionali che cercano e correggono le inefficienze economiche
A livello di applicazione, alcune forme di MEV, come il sandwich trading, si traducono in un'esperienza inequivocabilmente peggiore per gli utenti. Gli utenti che ricevono il sandwich subiscono un maggiore slittamento e una peggiore esecuzione delle loro operazioni.
-A livello di rete, i frontrunner generalizzati e le aste dei prezzi del carburante che spesso intraprendono (quando due o più frontrunner competono affinché la loro transazione sia inclusa nel blocco successivo aumentando progressivamente il prezzo del carburante delle loro transazioni) determinano la congestione della rete e l'aumento dei prezzi del carburante per tutti gli altri soggetti che provino a eseguire transazioni regolari.
+Al livello della rete, i precursori generalizzati e le aste del prezzo del gas, che spesso intraprendono (quando due o più precursori competono perché la propria transazione sia inclusa nel blocco successivo, aumentando progressivamente il prezzo del gas della loro transazione), risultano in congestione della rete e prezzi del gas elevati per chiunque altro sia provando a eseguire transazioni regolari.
-Oltre a ciò che si verifica _all'interno_ dei blocchi, il MEV può avere effetti deleteri _tra_ i blocchi. Se il MEV disponibile in un blocco eccede significativamente la ricompensa del blocco standard, i miner potrebbero essere incentivati a ri-minare i blocchi e catturare da soli il MEV, provocando la riorganizzazione della blockchain e l'instabilità del consenso.
+Oltre a ciò che si verifica _all'interno_ dei blocchi, il MEV può avere effetti deleteri _tra_ i blocchi. Se il MEV disponibile in un blocco supera significativamente la ricompensa standard del blocco, i validatori potrebbero essere incentivati a riorganizzare i blocchi e catturare da soli il MEV, causando la riorganizzazione della blockchain e l'instabilità del consenso.
Questa possibile riorganizzazione della blockchain è stata [precedentemente esplorata sulla blockchain di Bitcoin](https://dl.acm.org/doi/10.1145/2976749.2978408). Poiché le metà delle ricompense del blocco e le commissioni di transazione di Bitcoin costituiscono una porzione sempre più consistente della ricompensa del blocco, si presentano situazioni in cui diventa economicamente razionale per i miner rinunciare alla ricompensa del blocco successivo e ri-minare invece i blocchi passati con commissioni maggiori. Con la crescita del MEV, la stessa tipologia di situazione potrebbe verificarsi in Ethereum, minacciando l'integrità della blockchain.
## Stato del MEV {#state-of-mev}
-L'estrazione di MEV è cresciuta esponenzialmente all'inizio del 2021, traducendosi in prezzi del gas estremamente alti nei primi mesi dell'anno. L'emergere del MEV-Relay di Flashbot ha ridotto l'efficacia dei frontrunner generalizzati e ha portato le aste dei prezzi del carburante al di fuori della catena, facendo scendere i prezzi del carburante per gli utenti ordinari.
+L'estrazione del MEV è aumentata a dismisura agli inizi del 2021, risultando in prezzi del gas estremamente elevati nei primi mesi dell'anno. L'emergere della trasmissione del MEV dei Flashbot ha ridotto l'efficienza dei precursori generalizzati e ha portato le aste del prezzo del gas al di fuori della catena, riducendo i prezzi del gas per gli utenti ordinari.
-Anche se molti ricercatori continuano a guadagnare bene con il MEV, in un contesto in cui le opportunità diventano più note e un numero crescente di ricercatori compete per la stessa opportunità, i miner otterranno ricavi totali sempre più alti dal MEV (poiché anche nei Flashbot hanno luogo aste del carburante come quelle descritte sopra, seppur privatamente, e i miner otterranno i ricavi del carburante risultanti). Inoltre, il MEV non è un'esclusiva di Ethereum e, man mano che le opportunità su Ethereum diventano più competitive, i ricercatori si spostano su blockchain alternative come Binance Smart Chain, dove esistono opportunità di MEV simili a quelle di Ethereum ma con minore competizione.
+Mentre molti ricercatori guadagnano ancora molto dal MEV, con il diffondersi delle opportunità e la competizione di sempre più ricercatori per la stessa opportunità, i validatori cattureranno sempre più ricavi totali del MEV (poiché lo stesso tipo di aste del gas originariamente descritte in precedenza, si verificano anche nei Flashbot, seppur privatamente, e i validatori cattureranno i ricavi di gas risultanti). Inoltre, il MEV non è un'esclusiva di Ethereum e, man mano che le opportunità su Ethereum diventano più competitive, i ricercatori si spostano su blockchain alternative come Binance Smart Chain, dove esistono opportunità di MEV simili a quelle di Ethereum ma con minore competizione.
-Man mano che la DeFi cresce e la sua popolarità aumenta, il MEV potrebbe presto superare significativamente la ricompensa di base dei blocchi di Ethereum. Da ciò deriva una crescente possibilità di re-mining dei blocchi in chiave egoistica e di instabilità del consenso. Alcuni ritengono che questa sia una minaccia esistenziale a Ethereum, ragion per cui disincentivare il mining egoistico è un'area attiva di ricerca nella teoria del protocollo Ethereum. Una soluzione attualmente in fase di esplorazione è l'[attenuazione delle ricompense del MEV](https://ethresear.ch/t/committee-driven-mev-smoothing/10408).
+D'altra parte, la transizione dal proof-of-work al proof-of-stake e lo sforzo di ridimensionamento di Ethereum in corso usando i rollup e lo sharding stanno modificando il panorama del MEV in modi ancora piuttosto nebuloso. Non è ancora noto come il fatto di conoscere i propositori di blocchi garantiti lievemente in anticipo modifichi le dinamiche di estrazione del MEV rispetto al modello probabilistico nel proof-of-work, o come questo sarà sconvolto quando l'[elezione del leader segreto singolo](https://ethresear.ch/t/secret-non-single-leader-election/11789) e la [tecnologia distribuita del validatore](https://github.com/ethereum/distributed-validator-specs) saranno implementate. Similmente, resta da vedere quali opportunità del MEV esistono quando gran parte dell'attività degli utenti è portata via da Ethereum e sui suoi rollup e shard di livello 2.
## Risorse correlate {#related-resources}
+- [Documentazione dei Flashbot](https://docs.flashbots.net/)
- [Flashbots GitHub](https://github.com/flashbots/pm)
-- [MEV-Explore](https://explore.flashbots.net/) _Dashboard ed esploratore delle transazioni live per le transazioni MEV_
+- [MEV-Explore](https://explore.flashbots.net/) _Dashboard e piattaforma di ricerca live delle transazioni MEV_
## Letture consigliate {#further-reading}
@@ -127,3 +128,4 @@ Man mano che la DeFi cresce e la sua popolarità aumenta, il MEV potrebbe presto
- [Escaping the Dark Forest](https://samczsun.com/escaping-the-dark-forest/)
- [Flashbots: Frontrunning the MEV Crisis](https://medium.com/flashbots/frontrunning-the-mev-crisis-40629a613752)
- [@bertcmiller's MEV Threads](https://twitter.com/bertcmiller/status/1402665992422047747)
+- [The Hitchhikers Guide To Ethereum](https://members.delphidigital.io/reports/the-hitchhikers-guide-to-ethereum)
diff --git a/src/content/translations/it/developers/docs/networks/index.md b/src/content/translations/it/developers/docs/networks/index.md
index 3c48ca1008c..c138e752f10 100644
--- a/src/content/translations/it/developers/docs/networks/index.md
+++ b/src/content/translations/it/developers/docs/networks/index.md
@@ -6,7 +6,7 @@ lang: it
Le reti sono ambienti Ethereum diversi ai quali si può accedere per sviluppare, testare o produrre. Poiché Ethereum è un protocollo, possono esistere diverse "reti" indipendenti conformi al protocollo senza che interagiscano tra loro.
-Un account Ethereum funzionerà su reti diverse ma il saldo dell'account e la cronologia delle transazioni non verranno riportati dalla rete Ethereum principale. Per utilizzi di test è utile sapere quali reti sono disponibili e come ottenere ETH per le reti di prova per poter sperimentare.
+Il tuo conto di Ethereum opererà su reti diverse, ma il saldo del tuo conto e lo storico delle transazioni non saranno riportati dalla Rete Principale di Ethereum. Per utilizzi di test è utile sapere quali reti sono disponibili e come ottenere ETH per le reti di prova per poter sperimentare.
## Prerequisiti {#prerequisites}
@@ -24,7 +24,7 @@ Quando per persone e scambi si parla di prezzi in ETH, si parla di ETH della ret
### Rete di prova di Ethereum {#ethereum-testnets}
-Oltre alla rete principale, sono disponibili reti di test pubbliche. Si tratta di reti utilizzate da sviluppatori di protocolli o di Smart Contract per testare sia gli aggiornamenti del protocollo che potenziali Smart Contract in un ambiente simile a quello di produzione prima della distribuzione sulla rete principale. In pratica, è analogo ad ambiente di produzione rispetto a server di staging.
+Oltre alla rete principale, sono disponibili reti di test pubbliche. Queste, sono reti usate dagli sviluppatori di protocolli o contratti intelligenti per testare sia gli aggiornamenti del protocollo che i potenziali contratti intelligenti, in un ambiente simile a quello di produzione prima della distribuzione alla Rete Principale. In pratica, è analogo ad ambiente di produzione rispetto a server di staging.
Dovresti testare il codice di ogni contratto che scrivi su una rete di prova prima di distribuirlo alla rete principale. Tra le dApp che si integrano con contratti intelligenti esistenti, gran parte dei progetti hanno copie distribuite alle reti di prova.
diff --git a/src/content/translations/it/developers/docs/nodes-and-clients/client-diversity/index.md b/src/content/translations/it/developers/docs/nodes-and-clients/client-diversity/index.md
index 67701045be8..82dd5c1ea9b 100644
--- a/src/content/translations/it/developers/docs/nodes-and-clients/client-diversity/index.md
+++ b/src/content/translations/it/developers/docs/nodes-and-clients/client-diversity/index.md
@@ -47,11 +47,11 @@ I due grafici a torta di cui sopra mostrano le istantanee dell'attuale diversit
I dati del livello d'esecuzione sono stati ottenuti da [Ethernodes](https://ethernodes.org) il 23/01/22. I dati per i client di consenso sono stati ottenuti da [Michael Sproul](https://github.com/sigp/blockprint). I dati dei client di consenso sono più difficili da ottenere perché i client della Beacon Chain non hanno sempre tracce inequivocabili, utilizzabili per identificarli. I dati sono stati generati usando un algoritmo di classificazione che talvolta confonde alcuni dei client di minoranza (vedi [qui](https://twitter.com/sproulM_/status/1440512518242197516) per ulteriori dettagli). Nel diagramma precedente, queste classificazioni ambigue sono trattate classificate come alternative multiple (es. Nimbus/Teku). È comunque chiaro che la maggioranza della rete sta eseguendo Prysm. I dati sono un'istantanea su una serie fissa di blocchi (in questo caso i blocchi della Beacon Chain dallo slot 2048001 al 2164916) e in alcuni momenti la dominanza di Prysm è stata anche maggiore, superando il 68%. Nonostante siano solo istantanee, i valori nel diagramma forniscono una buona indicazione generale dello stato corrente della diversità dei client.
-I dati della diversità dei client aggiornati per il livello di consenso sono ora disponibili su https://clientdiversity.org/.
+I dati di diversità dei client aggiornati per il livello del consenso sono ora disponibili su [clientdiversity.org](https://clientdiversity.org/).
## Livello di esecuzione {#execution-layer}
-Finora, la conversazione sulla diversità dei client si è concentrata sul livello del consenso. Tuttavia, il client d'esecuzione [Geth](https://geth.ethereum.org) rappresenta attualmente l'85% di tutti i nodi. Questa percentuale è problematica per gli stessi motivi dei client di consenso. Ad esempio, un bug su Geth che influenzi la gestione delle transazioni o la costruzione dei carichi utili d'esecuzione potrebbe condurre alla finalizzazione da parte dei client di consenso di transazioni problematiche o contenenti bug. Ethereum sarebbe più quindi più robusto con una distribuzione più equa dei client d'esecuzione, idealmente senza alcun client che rappresenti oltre il 33% della rete.
+Finora, la conversazione sulla diversità dei client si è concentrata sul livello del consenso. Tuttavia, il client d'esecuzione [Geth](https://geth.ethereum.org) rappresenta correntemente circa l'85% di tutti i nodi. Questa percentuale è problematica per gli stessi motivi dei client di consenso. Ad esempio, un bug su Geth che influenzi la gestione delle transazioni o la costruzione dei carichi utili d'esecuzione potrebbe condurre alla finalizzazione da parte dei client di consenso di transazioni problematiche o contenenti bug. Ethereum sarebbe più quindi più robusto con una distribuzione più equa dei client d'esecuzione, idealmente senza alcun client che rappresenti oltre il 33% della rete.
## Usare un client di minoranza {#use-minority-client}
diff --git a/src/content/translations/it/developers/docs/nodes-and-clients/index.md b/src/content/translations/it/developers/docs/nodes-and-clients/index.md
index 7250ad70c96..4ca95436169 100644
--- a/src/content/translations/it/developers/docs/nodes-and-clients/index.md
+++ b/src/content/translations/it/developers/docs/nodes-and-clients/index.md
@@ -7,7 +7,7 @@ sidebarDepth: 2
Ethereum è una rete distribuita di computer (noti come nodi) che eseguono software che possono verificare i blocchi e i dati delle transazioni. Per fare del tuo computer un nodo di Ethereum deve essere eseguita l'applicazione software, detta client.
-**Nota: è ancora possibile eseguire un client d'esecuzione da solo. Ma non sarà più possibile farlo dopo [La Fusione](/upgrades/merge). Dopo La Fusione, sia il client d'esecuzione sia quello di consenso devono essere eseguiti insieme perché un utente possa ottenere accesso alla rete di Ethereum. Alcune reti di prova (es. Kiln, Ropsten) hanno già le proprie versioni per La Fusione, quindi, i soli client d'esecuzione non sono più sufficienti per accedere a queste reti a meno che non siano affiancate da un client di consenso che possa tener traccia della testa della catena.**
+**Nota: non è più possibile eseguire un client di esecuzione da solo. Dopo [La Fusione](/upgrades/merge), sia il client di esecuzione sia quello di consenso devono essere eseguiti insieme perché un utente possa ottenere accesso alla rete di Ethereum.**
## Prerequisiti {#prerequisites}
@@ -79,7 +79,7 @@ Ethereum non supporta ancora una grande popolazione di nodi leggeri, ma il suppo
### Nodo archivio {#archive-node}
-- Memorizza tutto ciò che è presente nel nodo completo e crea un archivio degli stati storici. È necessario se desideri consultare qualcosa come un saldo dell'account sul blocco n. 4.000.000 o se vuoi testare in modo semplice e affidabile la tua serie di transazioni senza minarle usando il tracciamento.
+- Memorizza tutto ciò che è presente nel nodo completo e crea un archivio degli stati storici. È necessario se desideri consultare qualcosa come il saldo di un conto al blocco #4.000.000 o testare in modo semplice e affidabile le tue serie di transazioni, senza minarle usando il tracciamento.
- Si tratta di terabyte e terabyte di dati, che rendono i nodi archivio meno attraenti per gli utenti medi, ma possono essere utili per servizi come block explorer, fornitori di portafogli e analisi della catena.
La sincronizzazione dei client in qualsiasi modalità diversa dall'archivio comporterà l'eliminazione dei dati della blockchain. Significa che non rimarrà un archivio di tutti gli stati storici, ma il nodo completo è in grado di ricostruirli su richiesta.
@@ -122,7 +122,7 @@ Se sei un utente più tecnico, approfondisci i dettagli e le opzioni su come [Av
## Alternative {#alternatives}
-Configurare un nodo può richiedere tempo e risorse e non sempre è necessario eseguire un'istanza propria. In questo caso, è possibile utilizzare un provider di API terzo, come [Infura](https://infura.io), [Alchemy](https://alchemyapi.io) o [QuikNode](https://www.quiknode.io). In alternativa, [ArchiveNode](https://archivenode.io/) è un nodo archivio finanziato dalla community che spera di portare i dati di archivio sulla blockchain Ethereum a sviluppatori indipendenti che altrimenti non potrebbero permetterselo. Per una panoramica sull'uso di questi servizi, dai un'occhiata a [nodi come servizi](/developers/docs/nodes-and-clients/nodes-as-a-service/).
+Configurare un nodo può richiedere tempo e risorse e non sempre è necessario eseguire un'istanza propria. In questo caso, puoi usare un provider di API terzo, come [Infura](https://infura.io), [Alchemy](https://alchemyapi.io), [Chainstack](https://chainstack.com) o [QuikNode](https://www.quiknode.io). In alternativa, [ArchiveNode](https://archivenode.io/) è un nodo archivio finanziato dalla community che spera di portare i dati di archivio sulla blockchain Ethereum a sviluppatori indipendenti che altrimenti non potrebbero permetterselo. Per una panoramica sull'uso di questi servizi, dai un'occhiata a [nodi come servizi](/developers/docs/nodes-and-clients/nodes-as-a-service/).
Se qualcuno esegue un nodo di Ethereum con un'API pubblica nella tua community, puoi puntare i tuoi portafogli leggeri (come MetaMask) su un nodo della community [tramite RPC Personalizzato](https://metamask.zendesk.com/hc/en-us/articles/360015290012-Using-a-Local-Node) e ottenere maggiore privacy rispetto a quella offerta da terze parti casuali di fiducia.
@@ -130,25 +130,27 @@ D'altro canto, se esegui un client, puoi condividerlo con i amici che potrebbero
## Client d'esecuzione (ex "client di Eth1") {#execution-clients}
-La community di Ethereum mantiene numerosi client di esecuzione open source (precedentemente noti come 'client di Eth1' o semplicemente 'client di Ethereum'), sviluppati da diversi team usando diversi linguaggi di programmazione. Ciò rende la rete più forte e diversificata. L'obiettivo ideale è raggiungere la diversità senza che nessun client prevalga, così da ridurre eventuali punti di errore singoli.
+La community di Ethereum mantiene numerosi client di esecuzione open source (precedentemente noti come 'client di Eth1' o semplicemente 'client di Ethereum'), sviluppati da diversi team usando diversi linguaggi di programmazione. Questo rafforza la rete e la rende più [diversificata](/developers/docs/nodes-and-clients/client-diversity/). L'obiettivo ideale è raggiungere la diversità senza che nessun client prevalga, così da ridurre eventuali punti di errore singoli.
-Questa tabella riepiloga i diversi client in ordine alfabetico. Tutti sono mantenuti attivamente per rimanere al passo con gli aggiornamenti di rete, seguono le specifiche correnti e passano i [test del client](https://github.com/ethereum/tests).
+Questa tabella riepiloga i diversi client. Tutti superano i [test dei client](https://github.com/ethereum/tests) e sono mantenuti attivamente per rimanere al passo con gli aggiornamenti di rete.
-| Client | Linguaggio | Sistemi operativi | Reti | Strategie di sincronizzazione | Cancellazione dello stato |
-| -------------------------------------------------------- | ---------- | --------------------- | ----------------------------------------- | ------------------------------------------ | ------------------------- |
-| [Akula](https://akula.app) | Rust | Linux | Mainnet, Görli, Rinkeby, Ropsten, e altre | Completa | Archive, Pruned |
-| [Besu](https://pegasys.tech/solutions/hyperledger-besu/) | Java | Linux, Windows, macOS | Mainnet, Rinkeby, Ropsten, Görli, e altre | Rapida, Completa, Snap, Punto di controllo | Archive, Pruned |
-| [Erigon](https://github.com/ledgerwatch/erigon) | Go | Linux, Windows, macOS | Mainnet, Görli, Rinkeby, Ropsten | Completa, Snap | Archive, Pruned |
-| [Geth](https://geth.ethereum.org/) | Go | Linux, Windows, macOS | Mainnet, Görli, Rinkeby, Ropsten | Snap, Completa | Archive, Pruned |
-| [Nethermind](http://nethermind.io/) | C#, .NET | Linux, Windows, macOS | Mainnet, Görli, Ropsten, Rinkeby e altre | Snap, Rapida | Archive, Pruned |
+| Client | Linguaggio | Sistemi operativi | Reti | Strategie di sincronizzazione | Cancellazione dello stato |
+| ----------------------------------------------- | ---------- | --------------------- | --------------------------------------------------------- | -------------------------------------- | ------------------------- |
+| [Geth](https://geth.ethereum.org/) | Vai | Linux, Windows, macOS | Rete Principale, Sepolia, Görli, Ropsten, Rinkeby | Snap, Completa | Archiviata, Tagliata |
+| [Nethermind](http://nethermind.io/) | C#, .NET | Linux, Windows, macOS | Rete Principale, Sepolia, Görli, Ropsten, Rinkeby e altre | Snap (senza servire), Rapida, Completa | Archiviata, Tagliata |
+| [Besu](https://besu.hyperledger.org/en/stable/) | Java | Linux, Windows, macOS | Rete Principale, Sepolia, Görli, Ropsten, Rinkeby e altre | Rapida, Completa | Archiviata, Tagliata |
+| [Erigon](https://github.com/ledgerwatch/erigon) | Go | Linux, Windows, macOS | Rete Principale, Sepolia, Görli, Rinkeby, Ropsten e altre | Completa | Archiviata, Tagliata |
+| [Akula](https://akula.app) | Rust | Linux | Rete Principale, Sepolia, Görli, Rinkeby, Ropsten | Completa | Archiviata, Tagliata |
+
+**Sottolineiamo che OpenEthereum [è ormai obsoleto](https://medium.com/openethereum/gnosis-joins-erigon-formerly-turbo-geth-to-release-next-gen-ethereum-client-c6708dd06dd) e non viene più mantenuto.** Usalo con cautela e preferibilmente passa ad un'altra implementazione client.
Per ulteriori informazioni sulle reti supportate, consulta [reti Ethereum](/developers/docs/networks/).
-Ogni client ha vantaggi e casi d'uso unici, quindi è necessario sceglierne uno in base alle proprie preferenze. La diversità consente implementazioni in base alle diverse caratteristiche e al pubblico di utenti. È consigliabile scegliere un client in base a funzionalità, supporto, linguaggio di programmazione o licenze.
+Ogni client ha vantaggi e casi d'uso differenti, quindi è necessario sceglierne uno in base alle proprie preferenze. La diversità consente implementazioni focalizzate su diverse caratteristiche e bacini di utenti. Potresti voler scegliere un client a seconda delle funzionalità, del supporto, del linguaggio di programmazione o delle licenze.
### Besu {#besu}
-Hyperledger Besu è un client Ethereum di livello enterprise per reti pubbliche e autorizzate. Esegue tutte le funzionalità della Rete principale di Ethereum, dal monitoraggio a GraphQL, ha un monitoraggio avanzato ed è supportato da ConsensSys, entrambi in canali aperti della community e tramite SLA commerciali per le imprese. È scritto in Java con licenza Apache 2.0.
+Hyperledger Besu è un client Ethereum di livello aziendale per le reti pubbliche e autorizzate. Esegue tutte le funzionalità della Rete principale di Ethereum, dal monitoraggio a GraphQL, ha un monitoraggio avanzato ed è supportato da ConsensSys, entrambi in canali aperti della community e tramite SLA commerciali per le imprese. È scritto in Java con licenza Apache 2.0.
L'ampia [documentazione](https://besu.hyperledger.org/en/stable/) di Besu ti guiderà per tutti i dettagli sulle sue funzionalità e configurazioni.
@@ -174,23 +176,23 @@ Inoltre, Nethermind vanta una [documentazione dettagliata](https://docs.nethermi
## Client di consenso (ex client di "Eth2") {#consensus-clients}
-Esistono diversi client di consenso (precedentemente noti come client di 'Eth2') per supportare gli [aggiornamenti di consenso](/upgrades/beacon-chain/). Eseguono la Beacon Chain e forniranno il meccanismo di consenso Proof of Stake ai client di esecuzione, dopo [La Fusione](/upgrades/merge/).
+Esistono diversi client di consenso (precedentemente noti come client di "Eth2") per supportare gli [aggiornamenti del consenso](/upgrades/beacon-chain/). Eseguono la Beacon Chain e forniranno il meccanismo di consenso Proof of Stake ai client di esecuzione, dopo [La Fusione](/upgrades/merge/).
[Visualizza i client di consenso](/upgrades/get-involved/#clients).
-| Client | Lingua | Sistemi operativi | Reti |
-| ------------------------------------------------------------- | ---------- | --------------------- | ------------------------------------- |
-| [Lighthouse](https://lighthouse.sigmaprime.io/) | Rust | Linux, Windows, macOS | Beacon Chain, Goerli, Pyrmont |
-| [Lodestar](https://lodestar.chainsafe.io/) | TypeScript | Linux, Windows, macOS | Beacon Chain, Goerli |
-| [Nimbus](https://nimbus.team/) | Nim | Linux, Windows, macOS | Beacon Chain, Goerli |
-| [Prysm](https://docs.prylabs.network/docs/getting-started/) | Go | Linux, Windows, macOS | Beacon Chain, Gnosis, Goerli, Pyrmont |
-| [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) | Java | Linux, Windows, macOS | Beacon Chain, Gnosis, Goerli, Sepolia |
+| Client | Lingua | Sistemi operativi | Reti |
+| ------------------------------------------------------------- | ---------- | --------------------- | --------------------------------------------------------------- |
+| [Lighthouse](https://lighthouse.sigmaprime.io/) | Rust | Linux, Windows, macOS | Beacon Chain, Goerli, Pyrmont, Sepolia, Ropsten e altre |
+| [Lodestar](https://lodestar.chainsafe.io/) | TypeScript | Linux, Windows, macOS | Beacon Chain, Goerli, Sepolia, Ropsten e altre |
+| [Nimbus](https://nimbus.team/) | Nim | Linux, Windows, macOS | Beacon Chain, Goerli, Sepolia, Ropsten e altre |
+| [Prysm](https://docs.prylabs.network/docs/getting-started/) | Go | Linux, Windows, macOS | Beacon Chain, Gnosis, Goerli, Pyrmont, Sepolia, Ropsten e altre |
+| [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) | Java | Linux, Windows, macOS | Beacon Chain, Gnosis, Goerli, Sepolia, Ropsten e altre |
### Lighthouse {#lighthouse}
-Lighthouse è un'implementazione del client di consenso scritta in Rust sotto la licenza Apache-2.0. È mantenuta da Sigma Prime ed è stabile e pronta alla produzione sin dalla genesi della Beacon Chain. È affidata a varie imprese, pool di staking e singoli individui. Mira a esser sicura, performante e interoperabile in una vasta gamma di ambienti, da PC desktop a distribuzioni automatizzate sofisticate.
+Lighthouse è un'implementazione del client di consenso scritta in Rust sotto la licenza Apache-2.0. È mantenuta da Sigma Prime ed è stabile e pronta alla produzione sin dalla genesi della Beacon Chain. È affidata a varie imprese, pool di staking e singoli individui. Mira a essere sicura, performante e interoperabile in una vasta gamma di ambienti, da PC desktop a distribuzioni automatizzate sofisticate.
-La documentazione è consultabile nel [Libro su Lighthouse](https://lighthouse-book.sigmaprime.io/).
+La documentazione è consultabile nel [Libro su Lighthouse](https://lighthouse-book.sigmaprime.io/)
### Lodestar {#lodestar}
@@ -202,27 +204,32 @@ Maggiori informazioni si possono trovare sul nostro [sito web di Lodestar](https
Nimbus è un'implementazione del client di consenso scritta in Nim sotto la licenza Apache-2.0. È un client pronto alla produzione in uso dagli staker in autonomia e dai pool di staking. Nimbus è progettato per l'efficienza delle risorse, rendendo facile l'esecuzione sui dispositivi con risorse limitate e le infrastrutture aziendali con uguale facilità, senza compromettere la stabilità o ricompensare le prestazioni. Un'impronta di risorse più leggera fa sì che il client abbia un maggiore margine di sicurezza quando la rete è sotto stress.
-La documentazione è consulatbile nella [Guida di Nimbus](https://nimbus.guide/).
+Implementato da Trinity. Funziona come una sincronizzazione rapida ma scarica anche i dati necessari per eseguire gli ultimi blocchi, consentendo di interrogare la catena già nei primi minuti dall'inizio.
+
+- Sincronizza innanzitutto lo stato e consente di interrogare RPC in pochi minuti.
+- Ancora in sviluppo e non totalmente affidabile, la sincronizzazione in background è rallentata e le risposte RPC potrebbero fallire.
+
+Scopri di più nella [documentazione di Nimbus](https://nimbus.guide/)
### Prysm {#prysm}
Prysm è un client di consenso completo e open source scritto in Go sotto la licenza GPL-3.0. Dispone di un'UI webapp facoltativa e da' priorità all'esperienza dell'utente, alla documentazione e alla configurabilità sia per gli utenti di staking domestico che per quelli istituzionali.
-Visita la [documentazione di Prysm](https://docs.prylabs.network/docs/getting-started/) per maggiori informazioni.
+Visita la [documentazione di Prysm](https://docs.prylabs.network/docs/getting-started/) per scoprire di più.
### Teku {#teku}
-Teku è uno dei client originali della genesi della Beacon Chain. Insieme ai soliti obiettivi (sicurezza, robustezza, stabilità, utilizzabilità, prestazioni), Teku mira specificamente a conformarsi completamente a tutti i vari standard dei client di consenso.
+Teku è uno dei client di genesi originali della Beacon Chain. Insieme ai soliti obiettivi (sicurezza, robustezza, stabilità, utilizzabilità, prestazioni), Teku mira specificamente a conformarsi completamente a tutti i vari standard dei client di consenso.
Teku offre opzioni di sviluppo molto flessibili. Il nodo beacon e il client del validatore possono operare insieme come un singolo processo, il che è estremamente conveniente per gli staker in autonomia, o i nodi possono operare separatamente per le operazioni di staking sofisticate. Inoltre, Teku è completamente interoperabile con [Web3Signer](https://github.com/ConsenSys/web3signer/) per firmare la sicurezza della chiave e la protezione dallo slashing.
-Teku è scritto in Java ed è sotto licenza Apache 2.0. È sviluppato dal team Protocols di ConsenSys, responsabile anche di Besu e Web3Signer. Scopri di più nella [documentazione di Teku](https://docs.teku.consensys.net/en/latest/).
+Teku è scritto in Java con licenza Apache 2.0. È sviluppato dal team Protocols di ConsenSys, responsabile anche di Besu e Web3Signer. Scopri di più nella [documentazione di Teku](https://docs.teku.consensys.net/en/latest/).
## Modalità di sincronizzazione {#sync-modes}
-Per seguire e verificare i dati correnti nella rete, il client di Ethereum deve essere sincronizzato con l'ultimo stato della rete. Ciò ha luogo scaricando i dati dai pari, verificando crittograficamente la loro integrità e costruendo un database locale della blockchain.
+Per seguire e verificare i dati correnti nella rete, il client di Ethereum deve essere sincronizzato con l'ultimo stato della rete. Ciò avviene scaricando i dati dai pari, verificandone crittograficamente l'integrità e creando un database locale della blockchain.
-Le modalità di sincronizzazione rappresentano diversi approcci a questo processo con vari compromessi. I client variano anche nella loro implementazione degli algoritmi di sincronizzazione. Fai sempre riferimento alla documentazione ufficiale del tuo client scelto per le specifiche sull'implementazione.
+Le modalità di sincronizzazione rappresentano diversi approcci a questo processo, con vari compromessi. I client variano anche nella loro implementazione degli algoritmi di sincronizzazione. Fai sempre riferimento alla documentazione ufficiale del client scelto per le specifiche sull'implementazione.
### Modalità di sincronizzazione del livello di esecuzione {#execution-layer-sync-modes}
@@ -230,35 +237,41 @@ Le modalità di sincronizzazione rappresentano diversi approcci a questo process
La sincronizzazione completa scarica tutti i blocchi (incluse intestazioni, transazioni e ricevute) e genera lo stato della blockchain in modo incrementale eseguendo ogni blocco dalla genesi.
-- Minimizza la fiducia e offre la massima sicurezza verificando ogni transazione.
+- Riduce al minimo la fiducia e offre la massima sicurezza verificando ogni transazione.
- Al crescere del numero di transazioni, possono volerci giorni o persino settimane per elaborare tutte le transazioni.
#### Sincronizzazione rapida {#fast-sync}
-La sincronizzazione rapida scarica tutti blocchi (incluse intestazioni, transazioni e ricevute), verifica tutte le intestazioni, scarica lo stato e lo verifica rispetto alle intestazioni.
+La sincronizzazione rapida scarica tutti i blocchi (incluse intestazioni, transazioni e ricevute), verifica tutte le intestazioni, scarica lo stato e lo verifica rispetto alle intestazioni.
- Si basa sulla sicurezza del meccanismo di consenso.
- La sincronizzazione impiega solo qualche ora.
#### Sincronizzazione leggera {#light-sync}
-La modalità leggera del client scarica tutte le intestazioni e i dati del blocco e ne verifica alcuni casualmente. Sincronizza solo la punta della catena dal checkpoint attendibile.
+La modalità leggera del client scarica tutte le intestazioni e i dati del blocco e ne verifica alcuni casualmente. Sincronizza solo la punta della catena dal punto di controllo attendibile.
- Ottiene solo l'ultimo stato basandosi sulla fiducia negli sviluppatori e nel meccanismo di consenso.
-- Client pronto all'uso con lo stato di rete corrente in pochi minuti.
+- Client pronto all'uso con lo stato corrente della rete in pochi minuti.
[Maggiori informazioni sui client leggeri](https://www.parity.io/blog/what-is-a-light-client/)
#### Sincronizzazione snap {#snap-sync}
-La sincronizzazione snap è l'ultimo approccio per sincronizzare un client, sperimentato dal team di Geth. Usando le istantanee dinamiche fornite dai pari, recupera tutti i dati di account e archivi senza scaricare nodi trie intermedi e ricostruisce localmente il Merkle trie.
+La sincronizzazione snap è l'ultimo approccio per sincronizzare un client, sperimentato dal team di Geth. Usando le istantanee dinamiche fornite dai pari, recupera tutti i dati di conti e archivi senza scaricare nodi trie intermedi e ricostruisce localmente il Merkle trie.
- È la strategia di sincronizzazione più veloce, attualmente quella predefinita nella rete principale di Ethereum
- Risparmia molto spazio su disco e larghezza di banda di rete senza sacrificare la sicurezza
[Maggiori informazioni sulla sincronizzazione snap](https://github.com/ethereum/devp2p/blob/master/caps/snap.md)
-### Modalità di sincronizzazione del livello di consenso {#consensus-layer-sync-modes}
+| Client | Dimensione del disco (sincronizzazione rapida) | Dimensione del disco (archivio completo) |
+| ------------ | ---------------------------------------------- | ---------------------------------------- |
+| Geth | Oltre 400GB | Oltre 6TB |
+| OpenEthereum | Oltre 280GB | Oltre 6TB |
+| Nethermind | Oltre 500GB | Oltre 12TB |
+| Besu | Oltre 750GB | Oltre 5TB |
+| Erigon | N/D | Oltre 1TB |
#### Sincronizzazione ottimistica {#optimistic-sync}
@@ -278,9 +291,9 @@ Maggiori informazioni sulla [sincronizzazione del punto di controllo](https://no
Su internet si trovano molte informazioni sui client Ethereum. Ecco alcune risorse che potrebbero essere utili.
-- [Ethereum 101 - Part 2 - Understanding Nodes](https://kauri.io/ethereum-101-part-2-understanding-nodes/48d5098292fd4f11b251d1b1814f0bba/a) _– Wil Barnes, 13 February 2019_
-- [Running Ethereum Full Nodes: A Guide for the Barely Motivated](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _– Justin Leroux, 7 November 2019_
-- [Running an Ethereum Node](https://docs.ethhub.io/using-ethereum/running-an-ethereum-node/) _– ETHHub, updated often_
+- [Ethereum 101 - Parte 2 - Comprendere i nodi](https://kauri.io/ethereum-101-part-2-understanding-nodes/48d5098292fd4f11b251d1b1814f0bba/a) _– Wil Barnes, 13 febbraio 2019_
+- [Eseguire i nodi completi di Ethereum: una guida per i poco motivati](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _– Justin Leroux, 7 novembre 2019_
+- [Eseguire un nodo di Ethereum](https://docs.ethhub.io/using-ethereum/running-an-ethereum-node/) _– ETHHub, aggiornato spesso_
## Argomenti correlati {#related-topics}
@@ -289,5 +302,5 @@ Su internet si trovano molte informazioni sui client Ethereum. Ecco alcune risor
## Tutorial correlati {#related-tutorials}
-- [Running a Node with Geth](/developers/tutorials/run-light-node-geth/) _– Come scaricare, installare ed eseguire Geth. Si parla di modalità di sincronizzazione, console JavaScript e altro._
+- [Eseguire un nodo con Geth](/developers/tutorials/run-light-node-geth/) _– Come scaricare, installare ed eseguire Geth. Si parla di modalità di sincronizzazione, console di JavaScript e altro._
- [Trasforma il tuo Raspberry Pi 4 in un nodo validatore semplicemente eseguendo il flash della scheda MicroSD - Guida d'installazione](/developers/tutorials/run-node-raspberry-pi/) _ - Esegui il flash del tuo Raspberry Pi 4, collega un cavo Ethernet, connetti il disco SSD e alimenta il dispositivo per trasformare il Raspberry Pi 4 in un nodo completo di Ethereum eseguendo il livello di esecuzione (Rete principale) e/o il livello di consenso (Beacon Chain / validatore)._
diff --git a/src/content/translations/it/developers/docs/nodes-and-clients/nodes-as-a-service/index.md b/src/content/translations/it/developers/docs/nodes-and-clients/nodes-as-a-service/index.md
index 8766f47e5fe..6a4b4ea46c0 100644
--- a/src/content/translations/it/developers/docs/nodes-and-clients/nodes-as-a-service/index.md
+++ b/src/content/translations/it/developers/docs/nodes-and-clients/nodes-as-a-service/index.md
@@ -175,7 +175,7 @@ Ecco una lista di alcuni dei più popolari fornitori di nodi Ethereum. Aggiungin
- Esploratori di blocchi
- Tempo di risposta dell'API ⩽ 1 sec
- Team di supporto 24/7
- - Referente commerciale personale
+ - Gestore Personale del Conto
- Nodi condivisi, archivio, backup e dedicati
- [**Pocket Network**](https://www.pokt.network/)
- [Documentazione](https://docs.pokt.network/home/)
@@ -205,7 +205,7 @@ Ecco una lista di alcuni dei più popolari fornitori di nodi Ethereum. Aggiungin
- Bilanciamento geografico, multi-cloud/metal, rete a bassa latenza
- Supporto multi-catena (Optimism, Arbitrum, Polygon e altri 11)
- Livelli intermedi (middle layer) per velocità e stabilità (indirizzamento di chiamata, cache, indicizzazione)
- - Monitoraggio dello smart contract tramite Webhook
+ - Monitoraggio del contratto intelligente tramite Webhook
- Pannello di controllo intuitivo, suite di analisi, RPC composer
- Funzionalità di sicurezza avanzate (JWT, mascheratura, whitelist)
- API di dati e analisi NFT
@@ -252,7 +252,7 @@ Ecco una lista di alcuni dei più popolari fornitori di nodi Ethereum. Aggiungin
- Caratteristiche
- Front-running come servizio
- Mempool di transazioni globale con metodi di ricerca/filtraggio
- - Commissione TX illimitata e Gas illimitato per l'invio di transazioni
+ - Commissione TX illimitata e Gas infinito per inviare le transazioni
- Ottenimento più veloce del nuovo blocco e lettura della blockchain
- Il miglior prezzo per garanzia di chiamata dell'API
diff --git a/src/content/translations/it/developers/docs/nodes-and-clients/run-a-node/index.md b/src/content/translations/it/developers/docs/nodes-and-clients/run-a-node/index.md
index a98f17c7c24..6f74260beba 100644
--- a/src/content/translations/it/developers/docs/nodes-and-clients/run-a-node/index.md
+++ b/src/content/translations/it/developers/docs/nodes-and-clients/run-a-node/index.md
@@ -21,7 +21,7 @@ Il primo passo nell'avvio del tuo nodo è scegliere l’approccio che vuoi segui
Questa pagina ti guiderà per queste decisioni e ti aiuterà a trovare il modo più adatto per eseguire la tua istanza di Ethereum.
-Per scegliere tra le implementazioni del client, visualizza tutti i [client di esecuzione](/developers/docs/nodes-and-clients/#execution-clients) e i [client di consenso](/developers/docs/nodes-and-clients/#consensus-clients) pronti e disponibili della Rete principale e scopri la [diversità del client](/developers/docs/client-diversity).
+Per scegliere tra le implementazioni del client, visualizza tutti i [client di esecuzione](/developers/docs/nodes-and-clients/#execution-clients) e i [client di consenso](/developers/docs/nodes-and-clients/#consensus-clients) pronti e disponibili della Rete Principale e scopri di più sulla [diversità dei client](/developers/docs/nodes-and-clients/client-diversity).
Decidi se eseguire il software sul tuo [hardware o nel cloud](#local-vs-cloud), considerando i [requisiti](#requirements) dei client.
@@ -76,18 +76,18 @@ Le dimensioni del database e la velocità della sincronizzazione iniziale dipend
Assicurati anche che la tua connessione a internet non sia limitata da un [limite di larghezza di banda](https://wikipedia.org/wiki/Data_cap). Si consiglia di non usare una connessione a consumo poiché la sincronizzazione iniziale e i dati trasmessi alla rete potrebbero superare il limite di traffico.
-##### Sistema operativo
+##### Sistema operativo {#operating-system}
Tutti i client supportano i principali sistemi operativi: Linux, MacOS, Windows. Questo significa che puoi eseguire i nodi su macchine desktop o server ordinarie, con il sistema operativo (OS) più adatto alle tue esigenze. Assicurati che il tuo OS sia aggiornato per evitare potenziali problemi e vulnerabilità di sicurezza.
-##### Requisiti minimi
+##### Requisiti minimi {#minimum-requirements}
- CPU con 2+ core
- 8 GB di RAM
- 700GB di spazio libero su disco
- Larghezza di banda 10+ MBit/s
-##### Specifiche raccomandate
+##### Specifiche raccomandate {#recommended-hardware}
- CPU veloce con 4+ core
- 16 GB+ RAM
@@ -98,8 +98,8 @@ La modalità di sincronizzazione e il client che scegli influenzeranno i requisi
| Client | Dimensioni disco (sincronizzazione snap) | Dimensione disco (archivio completo) |
| ---------- | ---------------------------------------- | ------------------------------------ |
-| Geth | 400GB+ | 12TB+ |
-| Nethermind | 400GB+ | 12TB+ |
+| Geth | Oltre 500GB | 12TB+ |
+| Nethermind | Oltre 500GB | 12TB+ |
| Besu | 800GB+ | 12TB+ |
| Erigon | N/A | 2,5TB+ |
@@ -133,7 +133,7 @@ Diversi progetti intuitivi mirano a migliorare l'esperienza di configurazione di
Di seguito trovi alcuni progetti che possono aiutarti a installare e controllare i client in pochi click:
- [DappNode](https://docs.dappnode.io/get-started/installation/custom-hardware/installation/overview/) - DappNode non è fornito solo con una macchina da un fornitore. Il software, il launcher del nodo vero e proprio e il centro di controllo con molte funzionalità, sono utilizzabili su hardware arbitrario.
-- [eth-docker](https://eth-docker.net/) - La configurazione automatizzata usando Docker, incentrata sullo staking facile e sicuro, richiede una conoscenza di base del terminale e di Docker, consigliata per gli utenti un po' più avanzati.
+- [eth-docker](https://eth-docker.net/docs/About/Overview/) - La configurazione automatizzata usando Docker, incentrata sullo staking facile e sicuro, richiede una conoscenza di base del terminale e di Docker, consigliata per gli utenti un po' più avanzati.
- [Stereum](https://stereum.net/ethereum-node-setup/) - Launcher per installare i client su un server remoto tramite connessione SSH con una guida di configurazione con GUI, un centro di controllo e molte altre funzionalità.
- [NiceNode](https://www.nicenode.xyz/) - Launcher con un'esperienza utente semplice per eseguire un nodo sul tuo computer. Basta scegliere i client e avviarli in pochi clic. Ancora in fase di sviluppo.
@@ -145,7 +145,7 @@ Come spiegato prima, configurare il tuo nodo di Ethereum richiederà l'esecuzion
#### Ottenere il software del client {#getting-the-client}
-Prima, devi ottenere il software dei tuoi [client di esecuzione](/developers/docs/nodes-and-clients/#execution-clients) e [client di consenso](developers/docs/nodes-and-clients/#consensus-clients) preferiti.
+Prima di tutto devi ottenere il software dei tuoi [client di esecuzione](/developers/docs/nodes-and-clients/#execution-clients) e [client di consenso](developers/docs/nodes-and-clients/#consensus-clients) preferiti.
Puoi semplicemente scaricare un'applicazione eseguibile o pacchetto d'installazionepiù adatto al tuo sistema operativo e alla tua architettura. Verifica sempre le firme e le checksum dei pacchetti scaricati. Alcuni client offrono anche repository o immagini Docker per facilitare l’installazione e gli aggiornamenti. Tutti i client sono open source, quindi puoi anche compilarli da sorgente. Questo è un metodo più avanzato ma, in alcuni casi, potrebbe esser richiesto.
@@ -153,16 +153,16 @@ Le istruzioni per installare ogni client sono fornite nella documentazione colle
Ecco le pagine delle release dei client, in cui puoi trovare i loro binari precompilati o le istruzioni d'installazione:
-##### Client di esecuzione
+##### Client di esecuzione {#execution-clients}
- [Besu](https://github.com/hyperledger/besu/releases)
- [Erigon](https://github.com/ledgerwatch/erigon#usage) (Non fornisce un binario precompilato, dev'essere compilato)
- [Geth](https://geth.ethereum.org/downloads/)
- [Nethermind](https://downloads.nethermind.io/)
-Vale anche la pena notare che la diversità del client è un [problema sul livello di esecuzione](/developers/docs/client-diversity/#execution-layer). Si consiglia ai lettori di considerare l'esecuzione di un client di esecuzione di minoranza.
+Vale anche la pena notare che la diversità dei client è un [problema sul livello di esecuzione](/developers/docs/nodes-and-clients/client-diversity/#execution-layer). Si consiglia ai lettori di considerare l'esecuzione di un client di esecuzione di minoranza.
-##### Client di consenso
+##### Client di consenso {#consensus-clients}
- [Lighthouse](https://github.com/sigp/lighthouse/releases/latest)
- [Lodestar](https://chainsafe.github.io/lodestar/install/source/) (Non fornisce un binario precompilato, solo un'immagine Docker o da compilare da sorgente)
@@ -172,9 +172,9 @@ Vale anche la pena notare che la diversità del client è un [problema sul livel
La [diversità del client](/developers/docs/nodes-and-clients/client-diversity/) è cruciale per i nodi di consenso che eseguono validatori. Se la maggioranza dei validatori sta eseguendo una singola implementazione del client, la sicurezza della rete è a rischio. Si consiglia dunque di considerare la scelta di un client di minoranza.
-[Visualizza l'utimo uso del client della rete](https://clientdiversity.org/) e scopri di più sulla [diversità del client](/developers/docs/client-diversity).
+[Visualizza l'uso più recente del client della rete](https://clientdiversity.org/) e scopri di più sulla [diversità dei client](/developers/docs/nodes-and-clients/client-diversity).
-##### Verificare il software
+##### Verificare il software {#verifying-the-software}
Quando si scarica il software da Internet, si consiglia di verificarne l'integrità. Questo passaggio è facoltativo, ma specialmente con parti di infrastruttura essenziali come il client di Ethereum, è importante esser consapevoli dei potenziali vettori d'attacco ed evitarli. Se hai scaricato un binario precompilato, devi fidartene e rischiare che un utente malevolo possa scambiare l'eseguibile con un file malevolo.
@@ -210,20 +210,18 @@ Prima di avviare il software del client di Ethereum, verifica un'ultima volta ch
- Il sistema abbia la data e l'ora corrette.
- Il tuo router e firewall accettino le connessioni sulle porte di ascolto. Di default, i client di Ethereum usano una porta di ascolto (TCP) e una porta di scoperta (UDP), entrambe di default su 30303.
-Esegui prima il tuo client su una rete di prova, per assicurarti che tutto funzioni correttamente. Potrebbe essere utile [eseguire un nodo leggero di Geth](/developers/tutorials/run-light-node-geth/).
+Esegui prima il tuo client su una rete di prova per assicurarti che tutto funzioni correttamente.
All'avvio devi dichiarare qualsiasi impostazione del client che non sia predefinita. Puoi usare i flag o il file di configurazione per dichiarare la tua configurazione preferita. L'insieme di funzionalità e sintassi di configurazione di ogni client è diversa. Dai un'occhiata alla documentazione del tuo client per le specifiche.
I client di esecuzione e di consenso comunicano tramite un endpoint autenticato specificato nell'[API Engine](https://github.com/ethereum/execution-apis/tree/main/src/engine). Per potersi connettere a un client di consenso, il client di esecuzione deve generare un [`jwtsecret`](https://jwt.io/) a un percorso noto. Per motivi di sicurezza e stabilità, i client dovrebbero essere eseguiti sulla stessa macchina ed entrambi i client devono conoscere tale percorso, essendo usato per autenticare una connessione RPC locale tra di essi. Il client di esecuzione deve anche definire una porta di ascolto per le API autenticate.
-Questo token è generato automaticamente dal software del client ma, in alcuni casi, ad esempio durante i test pre-Fusione, potresti doverlo generare tu stesso. Puoi generarlo eseguendo:
+Questo token è generato automaticamente dal software del client ma, in alcuni casi, potresti doverlo generare tu stesso. Puoi generarlo utilizzando [OpenSSL](https://www.openssl.org/):
```
openssl rand -hex 32 > jwtsecret
```
-**Si noti che per il momento si consiglia di connettere un client di esecuzione e di consenso solo su una rete di prova (es. Kiln, Ropsten, Sepolia, Goerli) e di attendere le realease del client pronti per La Fusione prima di replicare il processo sulla Rete principale.**
-
#### Eseguire un client di esecuzione {#running-an-execution-client}
Questa sezione ti guiderà nell'avvio dei client di esecuzione. Serve solo da esempio per una configurazione di base, che avvierà il client con le seguenti impostazioni:
@@ -255,13 +253,13 @@ besu --network=mainnet \
--engine-jwt-secret=/path/to/jwtsecret
```
-Besu presenta inoltre un'opzione del launcher che porrà una serie di domande e genererà il file di configurazione. Eseguire il launcher interattivo usando:
+Besu presenta inoltre un'opzione del launcher che porrà una serie di domande e genererà il file di configurazione. Esegui il launcher interattivo usando:
```
besu --Xlauncher
```
-La [documentazione](https://besu.hyperledger.org/en/latest/HowTo/Get-Started/Starting-node/) di Besu contiene opzioni e dettagli di configurazione aggiuntivi.
+La [documentazione di Besu](https://besu.hyperledger.org/en/latest/HowTo/Get-Started/Starting-node/) contiene le opzioni aggiuntive e i dettagli di configurazione.
##### Eseguire Erigon
@@ -302,9 +300,9 @@ Nethermind.Runner --config mainnet \
La documentazione di Nethermind offre una [guida completa](https://docs.nethermind.io/nethermind/first-steps-with-nethermind/running-nethermind-post-merge) all'esecuzione di Nethermind con il client di consenso.
-Il client di esecuzione avvierà le sue funzioni principali, gli endpoint scelti e inizierà a cercare i pari. Dopo aver scoperto correttamente i peer, il client avvia la sincronizzazione. Dopo La Fusione, attende la connessione dal client di consenso. I dati della blockchain correnti saranno disponibili una volta che il client si sarà correttamente sincronizzato allo stato corrente.
+Il client di esecuzione avvierà le sue funzioni principali, gli endpoint scelti e inizierà a cercare i pari. Dopo aver scoperto correttamente i pari, il client avvia la sincronizzazione. Il client di esecuzione attenderà una connessione dal client di consenso. I dati correnti della blockchain saranno disponibili una volta che il client è sincronizzato correttamente allo stato corrente.
-#### Avviare il client di consenso {#starting-the-consensus-client}
+#### Avviare il client del consenso {#starting-the-consensus-client}
Il client di consenso deve essere avviato con la configurazione della porta corretta, per stabilire una connessione RPC locale al client di esecuzione. I client di consenso devono essere eseguiti con la porta del client di esecuzione esposta come argomento di configurazione.
@@ -312,11 +310,9 @@ Inoltre, il client di consenso necessita del percorso al `jwt-secret` del client
Se pianifichi di eseguire un validatore, assicurati di aggiungere un flag di configurazione che specifichi l'indirizzo di Ethereum del destinatario della commissione. È qui che sono accumulate le ricompense in ether per il tuo validatore. Ogni client di consenso ha un'opzione come `--suggested-fee-recipient=0xabcd1` che considera un indirizzo di Ethereum come un argomento.
-**Nota che consigliamo di attendere le release del client pronti per La Fusione prima di farlo sulla Rete principale di Ethereum; per ora, consigliamo di fare solo pratica sulle reti di prova come Kiln, Ropsten, Sepolia o Goerli**
-
-Avviando il Nodo Beacon sulla rete di prova, puoi risparmiare significativamente sul tempo di sincronizzazione usando l'endpoint pubblico per la [Sincronizzazione del punto di controllo](https://notes.ethereum.org/@launchpad/checkpoint-sync).
+Avviando il Nodo Beacon sulla rete di prova, puoi risparmiare parecchio tempo di sincronizzazione usando l'endpoint pubblico per la [Sincronizzazione del punto di controllo](https://notes.ethereum.org/@launchpad/checkpoint-sync).
-#### Eseguire un client di consenso
+#### Eseguire un client del consenso
##### Eseguire Lighthouse
@@ -327,8 +323,8 @@ lighthouse beacon_node
--network mainnet \
--datadir /data/ethereum \
--http \
- --execution.urls http://127.0.0.1:8551 \
- --jwt-secret="/path/to/jwtsecret" \
+ --execution-endpoint http://127.0.0.1:8551 \
+ --execution-jwt /path/to/jwtsecret \
```
##### Eseguire Lodestar
@@ -364,7 +360,7 @@ Prysm è dotato di uno script che consente una facile installazione automatica.
./prysm.sh beacon-chain \
--mainnet
--datadir /data/ethereum \
- --http-web3provider=http://localhost:8551 \
+ --execution-endpoint=http://localhost:8551 \
--jwt-secret=/path/to/jwtsecret
```
@@ -377,57 +373,59 @@ teku --network mainnet \
--ee-jwt-secret-file "/path/to/jwtsecret" \
```
-Scopri di più sull'esecuzione della configurazione pronta per La Fusione con Teku, nella [sua documentazione](https://docs.teku.consensys.net/en/22.8.0/HowTo/Prepare-for-The-Merge/).
+Quando un client di consenso si connette al client di esecuzione per leggere il contratto di deposito e identificare i validatori, si connette anche ad altri pari del Nodo Beacon e avvia la sincronizzazione degli slot del consenso dalla genesi. Una volta che il Nodo Beacon raggiunge l'epoca corrente, l'API Beacon diventa utilizzabile per i tuoi validatori. Scopri di più sulle [API del Nodo Beacon](https://eth2docs.vercel.app/).
-Il client di consenso si connette al client di esecuzione per leggere il contratto di deposito e identificare i validatori. Inoltre, si connette agli altri pari del Nodo Beacon e sincronizza gli slot del consenso dalla genesi. Quando raggiunge l'epoca corrente, l'API Beacon diventa utilizzabile per i tuoi validatori. Scopri di più sulle [API del Nodo Beacon](https://eth2docs.vercel.app/).
+### Aggiungere Validatori {#adding-validators}
-### Aggiungere validatori {#adding-validators}
+Un client di consenso funge da Nodo Beacon a cui si connettono i validatori. Ogni client di consenso ha il proprio software del validatore, descritto nei dettagli nella rispettiva documentazione.
-Il client di consenso serve da Nodo Beacon a cui si connette il client del validatore. Ogni client di consenso ha il proprio software del validatore, descritto nei dettagli nella rispettiva documentazione.
+Eseguire il proprio validatore consente lo [staking in autonomia](https://ethereum.org/en/staking/solo/), il metodo più d'impatto e affidabile per supportare la rete di Ethereum. Tuttavia, ciò richiede un deposito di 32 ETH. Per eseguire un validatore sul tuo nodo con un importo inferiore, potrebbe interessarti un pool decentralizzato con operatori del nodo privi di autorizzazioni, come [Rocket Pool](https://rocketpool.net/node-operators).
-Eseguire il proprio validatore consente lo [staking in autonomia](https://ethereum.org/en/staking/solo/), il metodo più d'impatto e affidabile. Ciò richiede un deposito di 32 ETH. Per eseguire un validatore sul tuo nodo con un importo minore, potrebbe interessarti un pool decentralizzato con operatori del nodo senza autorizzazioni, come [Rocket Pool](https://rocketpool.net/node-operators).
+Il metodo più facile per iniziare con lo staking e generare la chiave del validatore è usare il [Launchpad di Staking della Rete di Prova di Goerli](https://goerli.launchpad.ethereum.org/), che ti consente di testare la tua configurazione, [eseguendo i nodi su Goerli](https://notes.ethereum.org/@launchpad/goerli). Quando sei pronto per la Rete Principale, puoi ripetere questi passaggi usando il [Launchpad di Staking della Rete Principale](https://launchpad.ethereum.org/).
-Il metodo più facile per iniziare a mettere in staking e per generare la chiave del validatore è usare il [Launchpad di Staking della Rete di Prova di Prater](https://prater.launchpad.ethereum.org/), che ti consente di testare la tua configurazione [eseguendo i nodi su Goerli](https://notes.ethereum.org/@launchpad/goerli). Quando sei pronto per la Rete principale, puoi ripetere questi passaggi usando il [Launchpad di Staking della Rete principale](https://launchpad.ethereum.org/). Assicurati di verificare la [lista di controllo di preparazione della Rete principale](https://launchpad.ethereum.org/en/merge-readiness) per eseguire senza problemi il tuo validatore dopo La fusione.
+Dai un'occhiata alla [pagina sullo staking](/staking) per una panoramica sulle opzioni di staking.
### Usare il nodo {#using-the-node}
-I client di esecuzione offrono gli [endpoint dell'API RPC](/developers/docs/apis/json-rpc/) che puoi usare per inviare le transazioni, interagire con o distribuire gli smart contract sulla rete Ethereum in vari modi:
+I client di esecuzione offrono gli [endpoint dell'API RPC](/developers/docs/apis/json-rpc/) che puoi usare per inviare le transazioni, interagire con o distribuire i contratti intelligenti sulla rete Ethereum in vari modi:
- Effettuare una chiamata manuale con un protocollo adatto (es. usando `curl`)
- Allegare una console fornita (es. `geth attach`)
- Implementarli nelle applicazioni usando le librerie web3, es. [web3.py](https://web3py.readthedocs.io/en/stable/overview.html#overview), [ethers](https://github.com/ethers-io/ethers.js/)
-Client diversi hanno implementazioni diverse degli endpoint RPC. Ma esiste uno standard JSON-RPC che puoi usare con ogni client. Per una panoramica, [leggi la documentazione JSON-RPC](/developers/docs/apis/json-rpc/). Le applicazioni che necessitano di informazioni dalla rete Ethereum possono usare questa RPC. Ad esempio, il popolare portafoglio MetaMask ti consente di [connetterti al tuo endpoint RPC](https://metamask.zendesk.com/hc/en-us/articles/360015290012-Using-a-Local-Node), che ha forti vantaggi in termini di privacy e la sicurezza.
+Client diversi hanno implementazioni diverse degli endpoint RPC. Ma esiste uno standard JSON-RPC che puoi utilizzare con ogni client. Per una panoramica, [leggi la documentazione di JSON-RPC](/developers/docs/apis/json-rpc/). Le applicazioni che necessitano di informazioni dalla rete di Ethereum possono usare questa RPC. Ad esempio, il popolare portafoglio MetaMask ti consente di [connetterti al tuo endpoint RPC](https://metamask.zendesk.com/hc/en-us/articles/360015290012-Using-a-Local-Node), con forti vantaggi in termini di privacy e la sicurezza.
-I client di consenso espongono tutti l'[API Beacon](https://ethereum.github.io/beacon-APIs), utilizzabile per verificare lo stato del client di consenso o per scaricare blocchi e dati di consenso, inviando richieste usando strumenti come [Curl](https://curl.se). Maggiori informazioni a riguardo si possono trovare nella documentazione di ogni client di consenso.
+I client di consenso espongono tutti l'[API Beacon](https://ethereum.github.io/beacon-APIs) utilizzabile per verificare lo stato del client di consenso o per scaricare blocchi e dati di consenso, inviando richieste usando strumenti come [Curl](https://curl.se). Maggiori informazioni a riguardo si possono trovare nella documentazione di ogni client di consenso.
#### Raggiungere le RPC {#reaching-rpc}
-La porta predefinita per il client di esecuzione JSON-RPC è `8545`, ma puoi modificare le porte degli endpoint locali nella configurazione. Di default, l'interfaccia RPC è raggiungibile solo sul localhost del tuo computer. Per renderla accessibile da remoto, dovresti esporla al pubblico cambiando l'indirizzo in `0.0.0.0`. Questo la renderà raggiungibile sugli indirizzi IP pubblici e della rete locale. In gran parte dei casi, dovrai anche configurare il port forwarding sul tuo router.
+La porta predefinita per il client di esecuzione JSON-RPC è `8545`, ma puoi modificare le porte degli endpoint locali nella configurazione. Di default, l'interfaccia RPC è raggiungibile solo sul localhost del tuo computer. Per renderla accessibile da remoto, dovresti esporla al pubblico cambiando l'indirizzo in `0.0.0.0`. Ciò la renderà raggiungibile sugli indirizzi IP pubblici e della rete locale. In gran parte dei casi, dovrai anche configurare il port forwarding sul router.
-Devi farlo con cautela, poiché questo consentirà a chiunque su internet di controllare il tuo nodo. Degli attori malevoli potrebbero accedere al tuo nodo per abbattere il tuo sistema o rubare i tuoi fondi se stai usando il client come portafoglio.
+Approccia con cautela l'esposizione delle porte su Internet, poiché questo consentirà a chiunque su Internet di controllare il tuo nodo. Gli utenti malevoli potrebbero accedere al tuo nodo per abbattere il tuo sistema o rubare i tuoi fondi se stai usando il tuo client come un portafoglio.
Un modo per aggirare questo problema è impedire che i metodi RPC potenzialmente dannosi siano modificabili. Ad esempio, con Geth puoi dichiarare i metodi modificabili con un flag: `--http.api web3,eth,txpool`.
-Puoi inoltre ospitare l'accesso alla tua interfaccia RPC puntando il servizio di un server web, come Nginx, all'indirizzo locale e alla porta del tuo client. Questo ti consente anche di configurare un certificato per una connessione `https` sicura alla tua RPC.
+L'accesso all'interfaccia RPC può essere esteso tramite lo sviluppo di API del livello limite o applicazioni del server web, come Nginx, e connettendoli all'indirizzo locale e alla porta del tuo client. Sfruttare un livello centrale può inoltre consentire agli sviluppatori di configurare un certificato per connessioni `https` sicure all'interfaccia RPC.
+
+Configurare un server web, un proxy o l'API Rest rivolta all'esterno non è il solo modo per fornire accesso all'endpoint RPC del tuo nodo. Un altro metodo a tutela della privacy per configurare un endpoint raggiungibile pubblicamente è ospitare il nodo sul tuo servizio onion di [Tor](https://www.torproject.org/). Questo ti consentirà di raggiungere l'RPC al di fuori della tua rete locale senza un indirizzo IP pubblico statico o aprire le porte. Tuttavia, utilizzare questa configurazione potrebbe rendere l'endpoint RPC accessibile solo tramite la rete di Tor, che non è supportata da tutte le applicazioni e potrebbe risultare in problemi di connessione.
-Il metodo più sicuro e anche più semplice per configurare un endpoint pubblicamente raggiungibile, è ospitarlo nel tuo servizio onion di [Tor](https://www.torproject.org/). Questo ti consentirà di raggiungere l’RPC al di fuori della tua rete locale senza un indirizzo IP pubblico statico e senza aprire le porte. Tuttavia, tieni presente che la RPC è accessibile solo tramite la rete di Tor, che non è supportata da tutte le applicazioni e potrebbe causare problemi di connessione.
+Per farlo, devi creare il tuo [servizio di onion](https://community.torproject.org/onion-services/). Dai un'occhiata [alla documentazione](https://community.torproject.org/onion-services/setup/) sulla configurazione del servizio di onion per ospitare il tuo. Puoi puntarlo a un server web con proxy alla porta RPC o, semplicemente, direttamente all'RPC.
-Per farlo, devi creare il tuo [servizio onion](https://community.torproject.org/onion-services/). Dai un'occhiata [alla documentazione](https://community.torproject.org/onion-services/setup/) sulla configurazione del servizio di onion per ospitare il tuo. Puoi puntarlo a un server web con proxy alla porta RPC o, semplicemente, direttamente alla RPC.
+Infine, uno dei metodi più popolari per fornire accesso alle reti interne è tramite una connessione VPN. A seconda del tuo caso d'uso e della quantità di utenti che necessitano di accedere al tuo nodo, una connessione VPN potrebbe essere un'opzione. [OpenVPN](https://openvpn.net/) è una VPN SSL completa che implementa l'estensione di rete sicura di livello 2 o 3 OSI, utilizzando il protocollo standard SSL/TLS, supporta metodi di autenticazione flessibili del client basati su certificati, smart card e/o credenziali nome utente/password e consente politiche di controllo dell'accesso specifiche per utente o gruppo utilizzando le regole del firewall applicate all'interfaccia virtuale della VPN.
### Gestire il nodo {#operating-the-node}
-Devi monitorare regolarmente il tuo nodo per accertarti che funzioni correttamente. Occasionalmente potresti dover eseguire una manutenzione.
+Dovresti monitorare regolarmente il tuo nodo per accertarti che funzioni correttamente. Potresti dover eseguire una manutenzione occasionale.
-#### Mantenere il nodo online {#keeping-node-online}
+#### Mantenere online un nodo {#keeping-node-online}
Il tuo nodo non deve necessariamente essere sempre online, ma dovresti mantenerlo online il più possibile per mantenerlo sincronizzato con la rete. Puoi arrestarlo per poi riavviarlo, ma tieni a mente che:
-- L'arresto può richiedere diversi minuti se lo stato recente è ancora in fase di scrittura sul disco.
-- Gli arresti forzati possono danneggiare il database.
-- Il tuo client perderà la sincronizzazione con la rete e dovrà risincronizzarsi al riavvio. Tale processo dipende da quanto tempo è stato offline.
+- L'arresto può richiedere diversi minuti se lo stato recente è ancora in fase di scrittura su disco.
+- Gli arresti forzati possono danneggiare il database, obbligandoti a sincronizzare nuovamente l'intero nodo.
+- Il tuo client perderà la sincronizzazione con la rete e dovrà risincronizzarsi al riavvio. Sebbene il nodo possa iniziare la sincronizzazione da dove si trovava all'ultimo arresto, il processo può richiedere tempo a seconda di quanto è stato offline.
-_Questo non vale per i nodi validatori del livello di consenso._ Mettere offline il tuo nodo influenzerà tutti i servizi che ne dipendono. Se stai eseguendo un nodo per scopi di _staking_, dovresti cercare di ridurre al minimo i tempi di fermo.
+_Ciò non si applica ai nodi del validatore del livello di consenso._ Mettere offline il tuo nodo influenzerà tutti i servizi che ne dipendono. Se stai eseguendo un nodo per scopi di _staking_, dovresti cercare di ridurre al minimo i tempi di fermo.
#### Creare i servizi del client {#creating-client-services}
@@ -435,35 +433,36 @@ Valuta la possibilità di creare un servizio per eseguire automaticamente il tuo
#### Aggiornare i client {#updating-clients}
-Devi mantenere aggiornato il software del tuo client con le ultime patch di sicurezza, funzionalità ed [EIP](/eips/). Specialmente prima di [diramazioni permanenti](/history/), assicurati che stai eseguendo la versione del client corretta.
+Devi mantenere aggiornato il software del tuo client con le patch di sicurezza, funzionalità ed [EIP](/eips/) più recenti. Specialmente prima di [diramazioni permanenti](/history/), assicurati che stai eseguendo la versione del client corretta.
-> Prima di importanti aggiornamenti di rete, la EF pubblica un post sul suo [blog](blog.ethereum.org). Puoi [iscriverti a questi annunci](https://groups.google.com/a/ethereum.org/g/announcements) per ricevere una notifica alla tua email quando il tuo nodo necessita di un aggiornamento.
+> Prima di importanti aggiornamenti di rete, la EF pubblica un post sul suo [blog](https://blog.ethereum.org). Puoi [iscriverti a questi annunci](https://groups.google.com/a/ethereum.org/g/announcements) per ricevere una notifica alla tua email quando il tuo nodo necessita di un aggiornamento.
Aggiornare i client è molto semplice. Ogni client ha istruzioni specifiche nella propria documentazione, ma il processo consiste generalmente solo nello scaricare l'ultima versione e riavviare il client con il nuovo eseguibile. Il client dovrebbe riprendere da dove si è fermato, ma con gli aggiornamenti applicati.
-Ogni implementazione del client ha una stringa di versione leggibile dall'uomo usata nel protocollo in pari, ma è anche accessibile dalla riga di comando. Questa stringa di versione consente agli utenti di verificare che sia in esecuzione la versione corretta e consente ai block explorer e ad altri strumenti analitici interessati di quantificare la distribuzione di client specifici sulla rete. Si rimanda alla documentazione del singolo client per maggiori informazioni sulle stringhe di versione.
+Ogni implementazione del client ha una stringa di versione leggibile dall'uomo, utilizzata nel protocollo peer-to-peer, ma è anche accessibile dalla riga di comando. Questa stringa di versione consente agli utenti di verificare che sia in esecuzione la versione corretta e consente ai block explorer e ad altri strumenti analitici interessati di quantificare la distribuzione di client specifici sulla rete. Si rimanda alla documentazione del singolo client per maggiori informazioni sulle stringhe di versione.
#### Eseguire servizi aggiuntivi {#running-additional-services}
-Eseguire il proprio nodo ti consente di usare servizi che richiedono l'accesso diretto alla RPC del client di Ethereum. Questi sono servizi basati su Etherreum, come le [soluzioni di livello 2](/developers/docs/scaling/#layer-2-scaling), backend per i portafogli, block explorer, strumenti per gli sviluppatori e altre infrastrutture di Ethereum.
+Eseguire il tuo nodo ti consente di usare servizi che richiedono l'accesso diretto all'RPC del client di Ethereum. Questi sono servizi basati su Ethereum, come le [soluzioni di livello 2](/developers/docs/scaling/#layer-2-scaling), backend per i portafogli, block explorer, strumenti per gli sviluppatori e altre infrastrutture di Ethereum.
#### Monitorare il nodo {#monitoring-the-node}
-Per monitorare correttamente il tuo nodo, valuta di raccogliere delle metriche. I client forniscono endpoint delle metriche, così che tu possa ottenere dati coerenti sul tuo nodo. Usa strumenti come [InfluxDB](https://www.influxdata.com/get-influxdb/) o [Prometheus](https://prometheus.io/) per creare database che puoi trasformare in visualizzazioni e grafici sui software, come [Grafana](https://grafana.com/). Esistono molte configurazioni per usare questo software e diversi pannelli di controllo di Grafana che ti consentono di visualizzare il tuo nodo e la rete per intero. Ad esempio, dai un'occhiata al [tutorial sul monitoraggio di Geth](/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/).
+Per monitorare correttamente il tuo nodo, valuta di raccogliere delle metriche. I client forniscono endpoint delle metriche, così che tu possa ottenere dati completi sul tuo nodo. Usa strumenti come [InfluxDB](https://www.influxdata.com/get-influxdb/) o [Prometheus](https://prometheus.io/) per creare database che puoi trasformare in visualizzazioni e grafici nel software, come [Grafana](https://grafana.com/). Esistono molte configurazioni per utilizzare questo software e diversi pannelli di controllo di Grafana con cui puoi visualizzare il tuo nodo e la rete per intero. Ad esempio, dai un'occhiata al [tutorial sul monitoraggio di Geth](/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/).
-Come parte del tuo monitoraggio, assicurati di tenere d'occhio le prestazioni della tua macchina. Durante la sincronizzazione iniziale del nodo, il software del client potrebbe gravare molto su CPU e RAM. Oltre a Grafana, puoi usare gli strumenti che offre il tuo OS, come `htop` o `uptime`.
+Nell'ambito del monitoraggio, assicurati di tenere d'occhio le prestazioni della tua macchina. Durante la sincronizzazione iniziale del tuo nodo, il software del client potrebbe gravare molto su CPU e RAM. Oltre a Grafana, per farlo puoi usare gli strumenti che offre il tuo OS, come `htop` o `uptime`.
## Letture consigliate {#further-reading}
-- [Guide | How to setup a validator for Ethereum staking on mainnet](https://www.coincashew.com/coins/overview-eth/guide-or-how-to-setup-a-validator-on-eth2-mainnet) _– CoinCashew, aggiornato regolarmente_
-- [ETHStaker guides on running validators on testnets](https://github.com/remyroy/ethstaker#guides) – _ETHStaker, aggiornato regolarmente_
-- [Ethereum Staking Guides](https://github.com/SomerEsat/ethereum-staking-guides) _– Somer Esat, aggiornato regolarmente_
-- [The Merge FAQ for node operators](https://notes.ethereum.org/@launchpad/node-faq-merge) - _July 2022_
-- [Analyzing the hardware requirements to be an Ethereum full validated node](https://medium.com/coinmonks/analyzing-the-hardware-requirements-to-be-an-ethereum-full-validated-node-dc064f167902) _– Albert Palau, 24 settembre 2018_
-- [Running Ethereum Full Nodes: A Guide for the Barely Motivated](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _– Justin Leroux, 7 November 2019_
-- [Running an Ethereum Node](https://docs.ethhub.io/using-ethereum/running-an-ethereum-node/) _– ETHHub, updated often_
-- [Running a Hyperledger Besu Node on the Ethereum Mainnet: Benefits, Requirements, and Setup](https://pegasys.tech/running-a-hyperledger-besu-node-on-the-ethereum-mainnet-benefits-requirements-and-setup/) _– Felipe Faraggi, 7 maggio 2020_
-- [Deploying Nethermind Ethereum Client with Monitoring Stack](https://medium.com/nethermind-eth/deploying-nethermind-ethereum-client-with-monitoring-stack-55ce1622edbd) _– Nethermind.eth, 8 luglio 2020_
+- [Guide allo staking di Ethereum](https://github.com/SomerEsat/ethereum-staking-guides) - _Somer Esat, aggiornato spesso_
+- [Guida | Come configurare un validatore per lo staking di Ethereum sulla Rete Principale](https://www.coincashew.com/coins/overview-eth/guide-or-how-to-setup-a-validator-on-eth2-mainnet) _– CoinCashew, aggiornato regolarmente_
+- [Guide di ETHStaker all'esecuzione dei validatori sulle reti di prova](https://github.com/remyroy/ethstaker#guides) – _ETHStaker, aggiornato regolarmente_
+- [Guide allo staking di Ethereum](https://github.com/SomerEsat/ethereum-staking-guides) _– Somer Esat, aggiornato regolarmente_
+- [Domande frequenti sulla Fusione per gli operatori di nodi](https://notes.ethereum.org/@launchpad/node-faq-merge) - _Luglio 2022_
+- [Analizzare i requisiti hardware per essere un nodo completo e validato di Ethereum](https://medium.com/coinmonks/analyzing-the-hardware-requirements-to-be-an-ethereum-full-validated-node-dc064f167902) _– Albert Palau, 24 settembre 2018_
+- [Eseguire i nodi completi di Ethereum: una guida per i poco motivati](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _– Justin Leroux, 7 novembre 2019_
+- [Eseguire un nodo di Ethereum](https://docs.ethhub.io/using-ethereum/running-an-ethereum-node/) _– ETHHub, aggiornato spesso_
+- [Eseguire un nodo di Besu Hyperledger sulla Rete Principale di Ethereum: benefici, requisiti e configurazione](https://pegasys.tech/running-a-hyperledger-besu-node-on-the-ethereum-mainnet-benefits-requirements-and-setup/) _– Felipe Faraggi, 7 maggio 2020_
+- [Distribuire il client di Ethereum di Nethermind con lo stack di monitoraggio](https://medium.com/nethermind-eth/deploying-nethermind-ethereum-client-with-monitoring-stack-55ce1622edbd) _– Nethermind.eth, 8 luglio 2020_
## Argomenti correlati {#related-topics}
diff --git a/src/content/translations/it/developers/docs/oracles/index.md b/src/content/translations/it/developers/docs/oracles/index.md
index b89ae221e15..3f05a343b5f 100644
--- a/src/content/translations/it/developers/docs/oracles/index.md
+++ b/src/content/translations/it/developers/docs/oracles/index.md
@@ -1,19 +1,18 @@
---
title: Oracoli
-description: Gli oracoli aiutano a inserire dati del mondo reale in un'applicazione Ethereum perché gli Smart Contract non possono interrogare autonomamente i dati del mondo reale.
+description: Gli oracoli aiutano a inserire i dati del mondo reale nella tua applicazione di Ethereum, poiché i contratti intelligenti non possono interrogare autonomamente i dati del mondo reale.
lang: it
-incomplete: true
---
-Gli oracoli sono feed di dati che collegano Ethereum a informazioni del mondo reale esternamente alla catena, in modo da poter interrogare i dati negli Smart Contract. Ad esempio, le dapp dei mercati predittivi utilizzano gli oracoli per effettuare i pagamenti in base a eventi. Un mercato predittivo potrebbe chiedere di puntare ETH sul prossimo presidente degli Stati Uniti. Userà un oracolo per confermare l'esito e pagare i vincitori.
+Gli oracoli sono feed di dati che connettono Ethereum all'esterno della catena, informazioni del mondo reale, così che tu possa interrogare i dati nei tuoi contratti intelligenti. Ad esempio, le dapp dei mercati predittivi utilizzano gli oracoli per effettuare i pagamenti in base a eventi. Un mercato predittivo potrebbe chiedere di puntare ETH sul prossimo presidente degli Stati Uniti. Userà un oracolo per confermare l'esito e pagare i vincitori.
## Prerequisiti {#prerequisites}
-È necessario avere familiarità con [nodi](/developers/docs/nodes-and-clients/), [meccanismi di consenso](/developers/docs/consensus-mechanisms/) e [anatomia degli Smart Contract](/developers/docs/smart-contracts/anatomy/), in particolare eventi.
+Assicurati di esser familiare con i [nodi](/developers/docs/nodes-and-clients/), i [meccanismi di consenso](/developers/docs/consensus-mechanisms/) e l'[anatomia dei contratti intelligenti](/developers/docs/smart-contracts/anatomy/) e, nello specifico, con gli eventi.
## Cos'è un oracolo {#what-is-an-oracle}
-Un oracolo è un ponte tra la blockchain e il mondo reale. Agisce come API sulla catena, che è possibile interrogare per ottenere informazioni da inserire negli Smart Contract. Si può trattare di qualsiasi cosa, da informazioni sui prezzi a previsioni meteo. Gli oracoli possono anche essere bidirezionali ed essere usati per "inviare" i dati al mondo reale.
+Un oracolo è un ponte tra la blockchain e il mondo reale. Agiscono come API sulla catena che puoi interrogare per ottenere informazioni nei tuoi contratti intelligenti. Si può trattare di qualsiasi cosa, da informazioni sui prezzi a previsioni meteo. Gli oracoli possono anche essere bidirezionali ed essere usati per "inviare" i dati al mondo reale.
Guarda Patrick spiegare gli oracoli:
@@ -23,13 +22,13 @@ Guarda Patrick spiegare gli oracoli:
Con una blockchain come Ethereum, necessiti di ogni nodo nella rete per riprodurre ogni transazione e terminare con lo stesso risultato, garantito. Le API introducono dati potenzialmente variabili. Se stavi inviando ETH in base a un valore stabilito in $USD usando un'API per i prezzi, la query restituirà un risultato diverso da un giorno all'altro. Per non parlare del fatto che l'API potrebbe essere oggetto di attacchi o diventare obsoleta. In tal caso, i nodi della rete non sarebbero in grado di combaciare con lo stato corrente di Ethereum e, di fatto, verrebbe meno il [consenso](/developers/docs/consensus-mechanisms/).
-Gli oracoli risolvono questo problema pubblicando i dati sulla blockchain. Quindi ogni nodo che riproduce la transazione utilizzerà gli stessi dati immutabili che vengono pubblicati affinché siano visibili a tutti. A questo scopo, un oracolo in genere è costituito da uno smart contract e da alcuni componenti esterni alla catena che possono interrogare le API e poi inviare periodicamente transazioni per aggiornare i dati dello smart contract.
+Gli oracoli risolvono questo problema pubblicando i dati sulla blockchain. Quindi ogni nodo che riproduce la transazione utilizzerà gli stessi dati immutabili che vengono pubblicati affinché siano visibili a tutti. Per farlo, un oracolo è tipicamente composto da un contratto intelligente e alcuni componenti esterni alla catena che possono interrogare le API e che, periodicamente, inviano transazioni per aggiornare i dati del contratto intelligente.
### Il problema dell'oracolo {#oracle-problem}
-Come menzionato, le transazioni di Ethereum non possono accedere direttamente ai dati esterni alla catena. Allo stesso tempo, basarsi su una singola fonte di verità per fornire i dati è insicuro e invalida la decentralizzazione di uno smart contract. Questo è noto come il problema dell'oracolo.
+Come menzionato, le transazioni di Ethereum non possono accedere direttamente ai dati esterni alla catena. Al contempo, affidarsi a una singola fonte di verità per fornire dati non è sicuro e invalida la decentralizzazione di un contratto intelligente. Questo è noto come il problema dell'oracolo.
-Possiamo evitarlo usando un oracolo decentralizzato che attinge da più fonti di dati; se una fonte di dati viene hackerata o non funziona, lo smart contract funzionerà comunque come previsto.
+Possiamo evitarlo, usando un oracolo decentralizzato che preleva da più fonti di dati; se una fonte di dati è violata o si guasta, il contratto intelligente continuerà a funzionare come previsto.
### Sicurezza {#security}
@@ -39,16 +38,16 @@ La sicurezza di un oracolo è pari a quella della sua o delle sue fonti di dati.
Questo è un esempio di un'architettura semplice di un oracolo, ma esistono altri modi per innescare il calcolo esterno alla catena.
-1. Emetti un registro con il tuo [evento di smart contract](/developers/docs/smart-contracts/anatomy/#events-and-logs)
+1. Emetti un registro con l'[evento del tuo contratto intelligente](/developers/docs/smart-contracts/anatomy/#events-and-logs)
2. Un servizio esterno alla catena si è iscritto (solitamente usando qualcosa come il comando `eth_subscribe` di JSON-RPC) a questi registri specifici.
3. Il servizio esterno alla catena procede con l'esecuzione di alcune attività come definito dal registro.
-4. Il servizio esterno alla catena risponde coi dati richiesti in una transazione secondaria allo smart contract.
+4. Il servizio esterno alla catena risponde coi dati richiesti in una transazione secondaria al contratto intelligente.
È così che si ottengono dati in un rapporto 1 a 1, tuttavia, per migliorare la sicurezza è possibile decentralizzare la raccolta dei dati esterni alla catena.
Il prossimo passaggio potrebbe consistere nel far sì che una rete di questi nodi effettuino le chiamate ad API e fonti diverse e aggreghino i dati nella catena.
-Il [Chainlink Off-Chain Reporting](https://blog.chain.link/off-chain-reporting-live-on-mainnet/) (Chainlink OCR) ha migliorato questo metodo facendo comunicare tra loro le reti dell'oracolo esterne alla catena, firmando crittograficamente le loro risposte, aggregandole all'esterno della catena e inviando solo una transazione con il risultato sulla catena. In questo modo si consuma meno carburante ma si ottiene comunque la garanzia di dati decentralizzati, poiché ogni nodo ha firmato la propria parte della transazione, redendola immutabile dal nodo che invia la transazione. La politica di escalation subentra se il nodo non effettua la transazione e quello successivo la invia.
+Il [Chainlink Off-Chain Reporting](https://blog.chain.link/off-chain-reporting-live-on-mainnet/) (Chainlink OCR) ha migliorato questo metodo facendo comunicare tra loro le reti dell'oracolo esterne alla catena, firmando crittograficamente le loro risposte, aggregandole all'esterno della catena e inviando solo una transazione con il risultato sulla catena. Così, si consuma meno gas, ma si può comunque garantire che i dati siano decentralizzati, poiché ogni nodo ha firmato la propria parte della transazione, rendendola immutabile dal nodo che la sta inviando. La politica di escalation subentra se il nodo non effettua la transazione e quello successivo la invia.
## Utilizzo {#usage}
@@ -58,7 +57,7 @@ Usando servizi come Chainlink, è possibile fare riferimento ai dati decentraliz
- [generare numeri casuali verificabili (utili per il gioco)](https://chain.link/solutions/chainlink-vrf)
- [chiamare API esterne](https://docs.chain.link/docs/request-and-receive-data) – Un nuovo utilizzo riguarda il [Controllo delle riserve di wBTC](https://cointelegraph.com/news/1b-in-wrapped-bitcoin-now-being-audited-using-chainlink-s-proof-of-reserve)
-Ecco un esempio di come ottenere l'ultimo prezzo di ETH nel proprio smart contract usando il feed del prezzo di Chainlink:
+Ecco un esempio di come ottenere l'ultimo prezzo di ETH nel tuo contratto intelligente, usando il feed dei prezzi di Chainlink:
### Feed di dati di Chainlink {#chainlink-data-feeds}
@@ -102,7 +101,7 @@ contract PriceConsumerV3 {
### Chainlink VRF {#chainlink-vrf}
-Chainlink VRF (Funzione Casuale Verificabile) è una fonte di casualità provatamente equa e verificabile, progettata per gli smart contract. Gli sviluppatori degli smart contract possono usare Chainlink VRF come generazione di numeri casuali a prova di manomissione (RNG) per creare contratti intelligenti affidabili basati su risultati imprevedibili:
+Chainlink VRF (Funzione Casuale Verificabile) è una fonte di casualità provatamente equa e verificabile progettata per i contratti intelligenti. Gli sviluppatori dei contratti intelligenti possono usare Chainlink VRF come generazione di numeri casuali a prova di manomissione (RNG) per creare contratti intelligenti affidabili basati su risultati imprevedibili:
- Giochi e NFT della blockchain
- Assegnazione casuale di doveri e risorse (es. assegnazione casuale di giudici ai casi)
@@ -110,7 +109,7 @@ Chainlink VRF (Funzione Casuale Verificabile) è una fonte di casualità provata
I numeri casuali sono difficili perché le blockchain sono deterministiche.
-Lavorare con gli oracoli di Chainlink al di fuori dei feed di dati segue il [ciclo di richiesta e ricezione](https://docs.chain.link/docs/architecture-request-model) di lavoro con Chainlink. Viene utilizzato il token LINK per inviare carburante dell'oracolo ai suoi fornitori per restituire le risposte. Il token LINK è progettato specificamente per funzionare con gli oracoli e si basa sul token ERC-677 aggiornato, retrocompatibile con l'[ERC-20](/developers/docs/standards/tokens/erc-20/). Il seguente codice, se sviluppato sulla testnet di Kovan recupererà un numero casuale provato crittograficamente. Per effettuare la richiesta, finanzia il contratto con token LINK della testnet che puoi ottenere da [Kovan LINK Faucet](https://kovan.chain.link/).
+Lavorare con gli oracoli di Chainlink al di fuori dei feed di dati segue il [ciclo di richiesta e ricezione](https://docs.chain.link/docs/architecture-request-model) di lavoro con Chainlink. Usano il token LINK per inviare il gas ai fornitori dell'oracolo per restituire le risposte. Il token LINK è progettato specificamente per funzionare con gli oracoli e si basa sul token ERC-677 aggiornato, retrocompatibile con l'[ERC-20](/developers/docs/standards/tokens/erc-20/). Il seguente codice, se sviluppato sulla testnet di Kovan recupererà un numero casuale provato crittograficamente. Per effettuare la richiesta, finanzia il contratto con token LINK della testnet che puoi ottenere da [Kovan LINK Faucet](https://kovan.chain.link/).
```javascript
@@ -162,9 +161,9 @@ contract RandomNumberConsumer is VRFConsumerBase {
### Chainlink Keeper {#chainlink-keepers}
-Gli smart contract non possono attivare o avviare le proprie funzioni in momenti arbitrari o in condizioni arbitrarie. I cambiamenti di stato avvengono solo quando un altro account inizia una transazione (come un utente, un oracolo o un contratto). La [Rete di Chainlink Keeper](https://docs.chain.link/docs/chainlink-keepers/introduction/) fornisce opzioni per gli smart contract per esternalizzare le regolari attività di manutenzione in modo minimizzato e decentralizzato.
+I contratti intelligenti non possono innescare o avviare le proprie funzioni in momenti o in condizioni arbitrari. I cambiamenti di stato si verificheranno soltanto quando un altro conto avvia una transazione (come un utente, un oracolo o un contratto). La [Rete Keeper di Chainlink](https://docs.chain.link/docs/chainlink-keepers/introduction/) fornisce opzioni per i contratti intelligenti, per esternalizzare le regolari attività di manutenzione in modo minimizzato e decentralizzato.
-Per usare i Chainlink Keeper, uno smart contract deve implementare [KeeperCompatibleInterface](https://docs.chain.link/docs/chainlink-keepers/compatible-contracts/), che consiste di due funzioni:
+Per usare i Keeper di Chainlink, un contratto intelligente deve implementare [KeeperCompatibleInterface](https://docs.chain.link/docs/chainlink-keepers/compatible-contracts/), che consiste in due funzioni:
- `checkUpkeep` - Controlla se il contratto richiede l'esecuzione di un lavoro.
- `performUpkeep` - Esegue il lavoro sul contratto, se indicato da checkUpkeep.
@@ -220,11 +219,11 @@ Dopo aver distribuito un contratto compatibile con Keeper, è necessario registr
### Chiamata all'API di Chainlink {#chainlink-api-call}
-Le [Chiamate all'API di Chainlink](https://docs.chain.link/docs/make-a-http-get-request) sono il metodo più facile per ottenere dati dal mondo esterno alla catena con il metodo tradizionale in cui funziona il web: le chiamate API. Eseguire una sola istanza e utilizzare un solo oracolo lo rende centralizzato per natura. Per mantenerlo veramente decentralizzato, una piattaforma di smart contract dovrebbe usare numerosi nodi trovati in un [mercato di dati esterni](https://market.link/).
+Le [Chiamate all'API di Chainlink](https://docs.chain.link/docs/make-a-http-get-request) sono il metodo più facile per ottenere dati dal mondo esterno alla catena con il metodo tradizionale in cui funziona il web: le chiamate API. Eseguire una sola istanza e utilizzare un solo oracolo lo rende centralizzato per natura. Per mantenerlo veramente decentralizzato, una piattaforma di contratti intelligenti dovrebbe usare numerosi nodi trovati in un [mercato di dati esterni](https://market.link/).
[Distribuisci il seguente codice nel remix sulla rete di kovan per testarlo](https://remix.ethereum.org/#version=soljson-v0.6.7+commit.b8d736ae.js&optimize=false&evmVersion=null&gist=8a173a65099261582a652ba18b7d96c1)
-Questo segue anche il ciclo di richiesta e ricezione degli oracoli e necessita del finanziamento del contratto con Kovan LINK (il carburante dell'oracolo) per funzionare.
+Ciò segue anche il ciclo di richiesta e ricezione degli oracoli e necessita che il contratto sia finanziato con Kovan LINK (il gas dell'oracolo) per funzionare.
```javascript
pragma solidity ^0.6.0;
@@ -303,7 +302,7 @@ Puoi scoprire di più sulle applicazioni di Chainlink leggendo il [blog degli sv
- [Paralink](https://paralink.network/)
- [Dos.Network](https://dos.network/)
-### Creare uno smart contract oracolo {#build-an-oracle-smart-contract}
+### Creare un contratto intelligente dell'oracolo {#build-an-oracle-smart-contract}
Ecco un esempio di contratto oracolo di Pedro Costa. Puoi trovare ulteriori commenti nel suo articolo: [Implementing a Blockchain Oracle on Ethereum](https://medium.com/@pedrodc/implementing-a-blockchain-oracle-on-ethereum-cedc7e26b49e).
@@ -419,7 +418,7 @@ contract Oracle {
}
```
-_Ci piacerebbe avere più documentazione sulla creazione di uno smart contract oracolo. Se vuoi contribuire, crea una PR!_
+_Ci piacerebbe avere più documentazione sulla creazione di contratto intelligente dell'oracolo. Se vuoi contribuire, crea una PR!_
## Letture consigliate {#further-reading}
@@ -430,7 +429,7 @@ _Ci piacerebbe avere più documentazione sulla creazione di uno smart contract o
- [What is a Blockchain Oracle?](https://betterprogramming.pub/what-is-a-blockchain-oracle-f5ccab8dbd72) - _Patrick Collins_
- [Decentralised Oracles: a comprehensive overview](https://medium.com/fabric-ventures/decentralised-oracles-a-comprehensive-overview-d3168b9a8841) – _Julien Thevenard_
- [Implementing a Blockchain Oracle on Ethereum](https://medium.com/@pedrodc/implementing-a-blockchain-oracle-on-ethereum-cedc7e26b49e) – _Pedro Costa_
-- [Why can't smart contracts make API calls?](https://ethereum.stackexchange.com/questions/301/why-cant-contracts-make-api-calls) - _StackExchange_
+- [Perché i contratti intelligenti non possono effettuare le chiamate all'API?](https://ethereum.stackexchange.com/questions/301/why-cant-contracts-make-api-calls) - _StackExchange_
- [Why we need decentralized oracles](https://newsletter.banklesshq.com/p/why-we-need-decentralized-oracles) - _Bankless_
- [So you want to use a price oracle](https://samczsun.com/so-you-want-to-use-a-price-oracle/) -_samczsun_
@@ -441,3 +440,7 @@ _Ci piacerebbe avere più documentazione sulla creazione di uno smart contract o
**Tutorial**
- [Come recuperare il prezzo corrente di Ethereum in Solidity](https://blog.chain.link/fetch-current-crypto-price-data-solidity/) - _Chainlink_
+
+**Progetti di esempio**
+
+- [Progetto iniziale e completo di Chainlink per Ethereum in Solidity](https://github.com/hackbg/chainlink-fullstack) - _HackBG_
diff --git a/src/content/translations/it/developers/docs/programming-languages/dart/index.md b/src/content/translations/it/developers/docs/programming-languages/dart/index.md
index 3dbc0d52dab..902c4ad9800 100644
--- a/src/content/translations/it/developers/docs/programming-languages/dart/index.md
+++ b/src/content/translations/it/developers/docs/programming-languages/dart/index.md
@@ -5,13 +5,13 @@ lang: it
incomplete: true
---
-## Iniziare a capire gli smart contract e il linguaggio Solidity {#getting-started-with-smart-contracts-and-solidity}
+## Primi passi con i contratti intelligenti e il linguaggio Solidity {#getting-started-with-smart-contracts-and-solidity}
## Tutorial {#tutorials}
- [Flutter e Blockchain – Hello World Dapp](https://www.geeksforgeeks.org/flutter-and-blockchain-hello-world-dapp/) è una guida passo dopo passo per chi inizia da zero:
1. Installare la [suite di sviluppo di Truffle](https://www.trufflesuite.com/)
- 2. Scrivere un contratto intelligente su [Solidity](https://soliditylang.org/)
+ 2. Scrivere un contratto intelligente in [Solidity](https://soliditylang.org/)
3. Scrivere un'interfaccia utente su Dart
- [Creare una dapp Mobile con Flutter](https://medium.com/dash-community/building-a-mobile-dapp-with-flutter-be945c80315a) è molto più breve, il che potrebbe esser meglio se conosci già le basi
- Se preferisci imparare guardando un video, puoi guardare [Build Your First Blockchain Flutter App](https://www.youtube.com/watch?v=3Eeh3pJ6PeA), (crea la tua prima App di Flutter della Blockchain) che dura circa un'ora
diff --git a/src/content/translations/it/developers/docs/programming-languages/delphi/index.md b/src/content/translations/it/developers/docs/programming-languages/delphi/index.md
index cfe022f409a..f99d1b1d735 100644
--- a/src/content/translations/it/developers/docs/programming-languages/delphi/index.md
+++ b/src/content/translations/it/developers/docs/programming-languages/delphi/index.md
@@ -13,17 +13,17 @@ Impara a sviluppare per Ethereum utilizzando il linguaggio di programmazione Del
Usa Ethereum per creare applicazioni decentralizzate (dette "dapp") che sfruttano i vantaggi delle criptovalute e della tecnologia blockchain. Queste dapp sono attendibili perché, una volta "caricate" su Ethereum, vengono eseguite sempre come sono state programmate. Possono controllare risorse digitali per creare nuove tipologie di applicazioni finanziarie. Possono essere decentralizzate, il che significa che nessuna singola entità o persona le controlla e sono quasi impossibile da censurare.
-Crea applicazioni decentralizzate su Ethereum e interagisci con gli Smart Contract utilizzando il linguaggio Delphi.
+Creare applicazioni decentralizzate su Ethereum e interagire con i contratti intelligenti usando il linguaggio di programmazione Delphi!
-## Primi passi con gli Smart Contract e il linguaggio Solidity {#getting-started-with-smart-contracts-and-the-solidity-language}
+## Primi passi con i contratti intelligenti e il linguaggio Solidity {#getting-started-with-smart-contracts-and-the-solidity-language}
**Inizia a integrare Delphi con Ethereum**
Hai prima bisogno di nozioni di base? Dai un'occhiata a [ethereum.org/learn](/learn/) o [ethereum.org/developers](/developers/).
- [Blockchain Explained](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
-- [Understanding Smart Contracts](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
-- [Write your First Smart Contract](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [Comprendere i Contratti Intelligenti](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [Scrivi il tuo Primo Contratto Intelligente](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
- [Learn How to Compile and Deploy Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
## Riferimenti e link per principianti {#beginner-references-and-links}
@@ -33,12 +33,12 @@ Hai prima bisogno di nozioni di base? Dai un'occhiata a [ethereum.org/learn](/le
- [What is Delphereum?](https://github.com/svanas/delphereum/blob/master/README.md)
- [Connecting Delphi to a local (in-memory) blockchain](https://medium.com/@svanas/connecting-delphi-to-a-local-in-memory-blockchain-9a1512d6c5b0)
- [Connettere Delphi alla rete principale di Ethereum](https://medium.com/@svanas/connecting-delphi-to-the-ethereum-main-net-5faf1feffd83)
-- [Connecting Delphi to Smart Contracts](https://medium.com/@svanas/connecting-delphi-to-smart-contracts-3146b12803a1)
+- [Connettere Delphi ai Contratti Intelligenti](https://medium.com/@svanas/connecting-delphi-to-smart-contracts-3146b12803a1)
**Vuoi lasciare stare la configurazione per ora e passare direttamente agli esempi?**
-- [A 3-minute Smart Contract and Delphi - Part 1](https://medium.com/@svanas/a-3-minute-smart-contract-and-delphi-61d998571d)
-- [A 3-minute Smart Contract and Delphi - Part 2](https://medium.com/@svanas/a-3-minute-smart-contract-and-delphi-part-2-446925faa47b)
+- [Un Contratto Intelligente di 3 minuti e Delphi - Parte 1](https://medium.com/@svanas/a-3-minute-smart-contract-and-delphi-61d998571d)
+- [Un Contratto Intelligente di 3 minuti e Delphi - Parte 2](https://medium.com/@svanas/a-3-minute-smart-contract-and-delphi-part-2-446925faa47b)
## Articoli di livello intermedio {#intermediate-articles}
diff --git a/src/content/translations/it/developers/docs/programming-languages/dot-net/index.md b/src/content/translations/it/developers/docs/programming-languages/dot-net/index.md
index 03be5807cf4..72cd9972046 100644
--- a/src/content/translations/it/developers/docs/programming-languages/dot-net/index.md
+++ b/src/content/translations/it/developers/docs/programming-languages/dot-net/index.md
@@ -9,17 +9,17 @@ incomplete: true
Usa Ethereum per creare applicazioni decentralizzate (dette "dapp") che sfruttano i vantaggi delle criptovalute e della tecnologia blockchain. Queste dapp sono attendibili perché, una volta "caricate" su Ethereum, vengono eseguite sempre come sono state programmate. Possono controllare risorse digitali per creare nuove tipologie di applicazioni finanziarie. Possono essere decentralizzate, il che significa che nessuna singola entità o persona le controlla e sono quasi impossibile da censurare.
-Crea applicazioni decentralizzate su Ethereum e interagisci con Smart Contract utilizzando strumenti e linguaggi Microsoft. Supporta C#, Visual Basic .NET, F#, con strumenti come VSCode e Visual Studio, in .NET Framework/.NET Core/.NET Standard. Distribuisci una blockchain Ethereum su Azure usando Microsoft Azure Blockchain in pochi minuti. Porta .NET su Ethereum!
+Crea applicazioni decentralizzate basate su Ethereum e interagisci con i contratti intelligenti utilizzando strumenti e linguaggi dallo stack della tecnologia di Microsoft: Supporto C#. # Visual Basic .NET, F#, con strumenti come VSCode e Visual Studio, su .NET Framework/.NET Core/.NET Standard. Distribuisci una blockchain Ethereum su Azure usando Microsoft Azure Blockchain in pochi minuti. Porta .NET su Ethereum!
-## Primi passi con gli Smart Contract e il linguaggio Solidity {#getting-started-with-smart-contracts-and-the-solidity-language}
+## Primi passi con i contratti intelligenti e il linguaggio Solidity {#getting-started-with-smart-contracts-and-the-solidity-language}
**Operazioni di base per integrare .NET con Ethereum**
Hai prima bisogno di nozioni di base? Dai un'occhiata a [ethereum.org/learn](/learn/) o [ethereum.org/developers](/developers/).
- [Blockchain Explained](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
-- [Understanding Smart Contracts](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
-- [Write your First Smart Contract](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [Comprendere i Contratti Intelligenti](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [Scrivi il tuo Primo Contratto Intelligente](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
- [Learn How to Compile and Deploy Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
## Riferimenti e link per principianti {#beginner-references-and-links}
@@ -28,19 +28,19 @@ Hai prima bisogno di nozioni di base? Dai un'occhiata a [ethereum.org/learn](/le
- [Nethereum, Getting Started](https://docs.nethereum.com/en/latest/getting-started/)
- [Installing VS Code Solidity](https://marketplace.visualstudio.com/items?itemName=JuanBlanco.solidity)
-- [A .NET Developer’s Workflow for Creating and Calling Ethereum Smart Contracts](https://medium.com/coinmonks/a-net-developers-workflow-for-creating-and-calling-ethereum-smart-contracts-44714f191db2)
-- [Smart contracts integration with Nethereum](https://kauri.io/#collections/Getting%20Started/smart-contracts-integration-with-nethereum/#smart-contracts-integration-with-nethereumm)
-- [Interfacing .NET and Ethereum Blockchain Smart Contracts with Nethereum](https://medium.com/my-blockchain-development-daily-journey/interfacing-net-and-ethereum-blockchain-smart-contracts-with-nethereum-2fa3729ac933), also in [中文版](https://medium.com/my-blockchain-development-daily-journey/%E4%BD%BF%E7%94%A8nethereum%E9%80%A3%E6%8E%A5-net%E5%92%8C%E4%BB%A5%E5%A4%AA%E7%B6%B2%E5%8D%80%E5%A1%8A%E9%8F%88%E6%99%BA%E8%83%BD%E5%90%88%E7%B4%84-4a96d35ad1e1)
+- [Il Flusso di Lavoro di uno Sviluppatore .NET per Creare e Chiamare i Contratti Intelligenti di Ethereum](https://medium.com/coinmonks/a-net-developers-workflow-for-creating-and-calling-ethereum-smart-contracts-44714f191db2)
+- [Integrazione dei contratti intelligenti con Nethereum](https://kauri.io/#collections/Getting%20Started/smart-contracts-integration-with-nethereum/#smart-contracts-integration-with-nethereumm)
+- [Interfacciare .NET e i Contratti Intelligenti della Blockchain di Ethereum con Nethereum](https://medium.com/my-blockchain-development-daily-journey/interfacing-net-and-ethereum-blockchain-smart-contracts-with-nethereum-2fa3729ac933), anche in [中文版](https://medium.com/my-blockchain-development-daily-journey/%E4%BD%BF%E7%94%A8nethereum%E9%80%A3%E6%8E%A5-net%E5%92%8C%E4%BB%A5%E5%A4%AA%E7%B6%B2%E5%8D%80%E5%A1%8A%E9%8F%88%E6%99%BA%E8%83%BD%E5%90%88%E7%B4%84-4a96d35ad1e1)
- [Nethereum - An open source .NET integration library for blockchain](https://kauri.io/#collections/a%20hackathon%20survival%20guide/nethereum-an-open-source-.net-integration-library/)
- [Writing Ethereum Transactions to SQL Database Using Nethereum](https://medium.com/coinmonks/writing-ethereum-transactions-to-sql-database-using-nethereum-fd94e0e4fa36)
-- [See how to easily deploy Ethereum smart contracts using C# and VisualStudio](https://koukia.ca/deploy-ethereum-smart-contracts-using-c-and-visualstudio-5be188ae928c)
+- [Scopri come distribuire facilmente i contratti intelligenti di Ethereum usando C# e VisualStudio](https://koukia.ca/deploy-ethereum-smart-contracts-using-c-and-visualstudio-5be188ae928c)
**Vuoi lasciar stare temporaneamente la configurazione e passare direttamente agli esempi?**
- [Playground](http://playground.nethereum.com/) - Interagire con Ethereum e imparare a utilizzare Nethereum con il browser.
- - Interroga il saldo dell'account [C#](http://playground.nethereum.com/csharp/id/1001) [VB.NET](http://playground.nethereum.com/vb/id/2001)
- - Interroga il saldo degli Smart Contract ERC20 [C#](http://playground.nethereum.com/csharp/id/1005) [VB.NET](http://playground.nethereum.com/vb/id/2004)
- - Trasferisci Ether in un account [C#](http://playground.nethereum.com/csharp/id/1003) [VB.NET](http://playground.nethereum.com/vb/id/2003)
+ - Interroga il saldo del conto [C#](http://playground.nethereum.com/csharp/id/1001) [VB.NET](http://playground.nethereum.com/vb/id/2001)
+ - Interroga il Saldo di ERC20 del Contratto Intelligente [C#](http://playground.nethereum.com/csharp/id/1005) [VB.NET](http://playground.nethereum.com/vb/id/2004)
+ - Trasferisci Ether in un Conto [C#](http://playground.nethereum.com/csharp/id/1003) [VB.NET](http://playground.nethereum.com/vb/id/2003)
- ... e molto altro!
## Articoli di livello intermedio {#intermediate-articles}
@@ -68,7 +68,7 @@ Hai prima bisogno di nozioni di base? Dai un'occhiata a [ethereum.org/learn](/le
- [Nethereum Codegen Blazor](https://github.com/Nethereum/Nethereum.CodeGen.Blazor) - _Codegen Nethereum con interfaccia utente in Blazor_
- [Nethereum Blazor](https://github.com/Nethereum/NethereumBlazor) - _Navigatore della blockchain leggero e semplice portafoglio in .NET Wasm SPA_
- [Wonka Business Rules Engine](https://docs.nethereum.com/en/latest/wonka/) - _Motore di regole aziendali (per la piattaforma .NET e per quella di Ethereum) intrinsecamente guidato da metadati_
-- [Nethermind](https://github.com/NethermindEth/nethermind) - _Client Core .NET di Ethereum per Linux, Windows, macOS_
+- [Nethermind](https://github.com/NethermindEth/nethermind): _Un client di Ethereum di .NET Core per Linux, Windows, MacOS_
- [eth-utils](https://github.com/ethereum/eth-utils/) - _Funzioni di utilità per lavorare con basi di codice relative a Ethereum_
- [TestChains](https://github.com/Nethereum/TestChains) - _Catene di sviluppo .NET preconfigurate per risposte veloci (PoA)_
@@ -76,7 +76,7 @@ Cerchi altre risorse? Dai un'occhiata a [ethereum.org/developers](/developers/).
## Collaboratori della community .NET {#dot-net-community-contributors}
-Per Nethereum, scambiamo opinioni per lo più su [Gitter](https://gitter.im/Nethereum/Nethereum), dove tutti possono chiedere o rispondere a domande, cercare aiuto o semplicemente consultare informazioni. Inserisci Fai pure una PR o apri una segnalazione sul [repository Github di Nethereum](https://github.com/Nethereum), oppure semplicemente sfoglia i molti progetti disponibili. Ci trovi anche su [Discord](https://discord.gg/jQPrR58FxX)!
+Per Nethereum, scambiamo opinioni per lo più su [Gitter](https://gitter.im/Nethereum/Nethereum), dove tutti possono chiedere o rispondere a domande, cercare aiuto o semplicemente consultare informazioni. Sentiti libero di effettuare una PR o di aprire una segnalazione sul [repository di GitHub di Nethereum](https://github.com/Nethereum) o, semplicemente, di sfogliare i molti progetti secondari/di esempio disponibili. Ci trovi anche su [Discord](https://discord.gg/jQPrR58FxX)!
Se sei nuovo su Nethermind e necessiti d'aiuto per iniziare, unisciti al nostro [Discord](http://discord.gg/PaCMRFdvWT). I nostri sviluppatori sono a disposizione per rispondere alle tue domande. Non esitare ad aprire una PR o a sollevare qualsiasi dubbio sulla [repository di GitHub di Nethermind](https://github.com/NethermindEth/nethermind).
diff --git a/src/content/translations/it/developers/docs/programming-languages/golang/index.md b/src/content/translations/it/developers/docs/programming-languages/golang/index.md
index 3bdd603815d..1df57402e5d 100644
--- a/src/content/translations/it/developers/docs/programming-languages/golang/index.md
+++ b/src/content/translations/it/developers/docs/programming-languages/golang/index.md
@@ -9,15 +9,15 @@ incomplete: true
Usa Ethereum per creare applicazioni decentralizzate (o "dapp"). Queste dapp sono attendibili perché, una volta "caricate" su Ethereum, vengono eseguite sempre come sono state programmate. Sono decentralizzate, significa che sono eseguite su una rete peer-to-peer e non esiste un punto di errore singolo. Nessun ente o persona le controlla e sono quasi impossibili da censurare. Possono controllare risorse digitali in modo da creare nuovi tipi di applicazioni.
-## Primi passi con gli Smart Contract e il linguaggio Solidity {#getting-started-with-smart-contracts-and-solidity}
+## Primi passi con i contratti intelligenti e il linguaggio Solidity {#getting-started-with-smart-contracts-and-solidity}
**Operazioni di base per integrare Go con Ethereum**
Hai prima bisogno di nozioni di base? Dai un'occhiata a [ethereum.org/learn](/learn/) o [ethereum.org/developers](/developers/).
- [Blockchain Explained](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
-- [Understanding Smart Contracts](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
-- [Write your First Smart Contract](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [Comprendere i Contratti Intelligenti](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [Scrivi il tuo Primo Contratto Intelligente](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
- [Learn How to Compile and Deploy Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
- [Contract Tutorial](https://github.com/ethereum/go-ethereum/wiki/Contract-Tutorial)
@@ -26,8 +26,8 @@ Hai prima bisogno di nozioni di base? Dai un'occhiata a [ethereum.org/learn](/le
- [Choosing an Ethereum Client](https://www.trufflesuite.com/docs/truffle/reference/choosing-an-ethereum-client)
- [Getting Started with Geth](https://medium.com/@tzhenghao/getting-started-with-geth-c1a30b8d6458)
- [Use Golang to Connect to Ethereum](https://www.youtube.com/watch?v=-7uChuO_VzM)
-- [Deploy Ethereum Smart Contracts Using Golang](https://www.youtube.com/watch?v=pytGqQmDslE)
-- [A Step By Step Guide To Testing and Deploying Ethereum Smart Contracts in Go](https://hackernoon.com/a-step-by-step-guide-to-testing-and-deploying-ethereum-smart-contracts-in-go-9fc34b178d78)
+- [Distribuisci i Contratti Intelligenti di Ethereum Usando Golang](https://www.youtube.com/watch?v=pytGqQmDslE)
+- [Una Guida Passo dopo Passo per Testare e Distribuire i Contratti Intelligenti di Ethereum in Go](https://hackernoon.com/a-step-by-step-guide-to-testing-and-deploying-ethereum-smart-contracts-in-go-9fc34b178d78)
- [eBook: Ethereum Development with Go](https://goethereumbook.org/) - _Sviluppare applicazioni Ethereum con Go_
## Articoli e documentazione di livello intermedio {#intermediate-articles-and-docs}
diff --git a/src/content/translations/it/developers/docs/programming-languages/index.md b/src/content/translations/it/developers/docs/programming-languages/index.md
index 84952c32801..7afb3a16c56 100644
--- a/src/content/translations/it/developers/docs/programming-languages/index.md
+++ b/src/content/translations/it/developers/docs/programming-languages/index.md
@@ -4,7 +4,7 @@ description:
lang: it
---
-Spesso si crede erroneamente che gli sviluppatori debbano scrivere [Smart Contract](/developers/docs/smart-contracts/) per sviluppare su Ethereum. Non è vero. Uno degli aspetti positivi della rete e della community Ethereum è che si può [partecipare](/community/) usando praticamente qualsiasi linguaggio di programmazione.
+Spesso, si crede erroneamente che gli sviluppatori debbano scrivere i [contratti intelligenti](/developers/docs/smart-contracts/) per poter sviluppare su Ethereum. Non è vero. Uno degli aspetti positivi della rete e della community Ethereum è che si può [partecipare](/community/) usando praticamente qualsiasi linguaggio di programmazione.
Ethereum e la sua community adottano l'open source. È possibile trovare progetti della community, cioè implementazioni di client, API, framework di sviluppo, strumenti di test, in un'ampia gamma di linguaggi.
diff --git a/src/content/translations/it/developers/docs/programming-languages/java/index.md b/src/content/translations/it/developers/docs/programming-languages/java/index.md
index b00f77022eb..f07a37f91de 100644
--- a/src/content/translations/it/developers/docs/programming-languages/java/index.md
+++ b/src/content/translations/it/developers/docs/programming-languages/java/index.md
@@ -9,15 +9,15 @@ incomplete: true
Usa Ethereum per creare applicazioni decentralizzate (dette "dapp") che sfruttano i vantaggi delle criptovalute e della tecnologia blockchain. Queste dapp sono attendibili perché, una volta "caricate" su Ethereum, vengono eseguite sempre come sono state programmate. Possono controllare risorse digitali per creare nuove tipologie di applicazioni finanziarie. Possono essere decentralizzate, il che significa che nessuna singola entità o persona le controlla e sono quasi impossibile da censurare.
-## Primi passi con gli Smart Contract e il linguaggio Solidity {#getting-started-with-smart-contracts-and-solidity}
+## Primi passi con i contratti intelligenti e il linguaggio Solidity {#getting-started-with-smart-contracts-and-solidity}
**Operazioni di base per integrare Java con Ethereum**
Hai prima bisogno di nozioni di base? Dai un'occhiata a [ethereum.org/learn](/learn/) o [ethereum.org/developers.](/developers/)
- [Blockchain Explained](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
-- [Understanding Smart Contracts](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
-- [Write your First Smart Contract](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [Comprendere i Contratti Intelligenti](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [Scrivi il tuo Primo Contratto Intelligente](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
- [Learn How to Compile and Deploy Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
## Lavorare con client Ethereum {#working-with-ethereum-clients}
@@ -25,10 +25,10 @@ Hai prima bisogno di nozioni di base? Dai un'occhiata a [ethereum.org/learn](/le
Scopri come utilizzare [Web3J](https://github.com/web3j/web3j) e Hyperledger Besu, due dei principali client Java Ethereum
- [Connecting to an Ethereum client with Java, Eclipse, and Web3J](https://kauri.io/article/b9eb647c47a546bc95693acc0be72546/connecting-to-an-ethereum-client-with-java-eclipse-and-web3j)
-- [Manage an Ethereum account with Java and Web3j](https://kauri.io/article/925d923e12c543da9a0a3e617be963b4/manage-an-ethereum-account-with-java-and-web3j)
-- [Generate a Java Wrapper from your Smart Contract](https://kauri.io/article/84475132317d4d6a84a2c42eb9348e4b/generate-a-java-wrapper-from-your-smart-contract)
-- [Interacting with an Ethereum Smart Contract](https://kauri.io/article/14dc434d11ef4ee18bf7d57f079e246e/interacting-with-an-ethereum-smart-contract-in-java)
-- [Listening for Ethereum Smart Contract Events](https://kauri.io/article/760f495423db42f988d17b8c145b0874/listening-for-ethereum-smart-contract-events-in-java)
+- [Gestire un conto di Ethereum con Java e Web3j](https://kauri.io/article/925d923e12c543da9a0a3e617be963b4/manage-an-ethereum-account-with-java-and-web3j)
+- [Genera un Java Wrapper dal tuo Contratto Intelligente](https://kauri.io/article/84475132317d4d6a84a2c42eb9348e4b/generate-a-java-wrapper-from-your-smart-contract)
+- [Interagire con un Contratto Intelligente di Ethereum](https://kauri.io/article/14dc434d11ef4ee18bf7d57f079e246e/interacting-with-an-ethereum-smart-contract-in-java)
+- [Ascoltare per Eventi del Contratto Intelligente di Ethereum](https://kauri.io/article/760f495423db42f988d17b8c145b0874/listening-for-ethereum-smart-contract-events-in-java)
- [Using Besu (Pantheon), the Java Ethereum Client with Linux](https://kauri.io/article/276dd27f1458443295eea58403fd6965/using-pantheon-the-java-ethereum-client-with-linux)
- [Running a Hyperledger Besu (Pantheon) Node in Java Integration Tests](https://kauri.io/article/7dc3ecc391e54f7b8cbf4e5fa0caf780/running-a-pantheon-node-in-java-integration-tests)
- [Web3j Cheat Sheet]()
@@ -41,7 +41,7 @@ Scopri come utilizzare [Web3J](https://github.com/web3j/web3j) e Hyperledger Bes
## Modelli d'uso avanzati {#advanced-use-patterns}
-- [Using Eventeum to build a Java smart contract data cache](https://kauri.io/article/fe81ee9612eb4e5a9ab72790ef24283d/using-eventeum-to-build-a-java-smart-contract-data-cache)
+- [Usare Eventum per costruire la cache dei dati di un contratto intelligente in Java](https://kauri.io/article/fe81ee9612eb4e5a9ab72790ef24283d/using-eventeum-to-build-a-java-smart-contract-data-cache)
## Progetti e strumenti di Java {#java-projects-and-tools}
diff --git a/src/content/translations/it/developers/docs/programming-languages/javascript/index.md b/src/content/translations/it/developers/docs/programming-languages/javascript/index.md
index 64c6b9f8094..6c53de59407 100644
--- a/src/content/translations/it/developers/docs/programming-languages/javascript/index.md
+++ b/src/content/translations/it/developers/docs/programming-languages/javascript/index.md
@@ -14,18 +14,18 @@ Esistono opportunità per scrivere in JavaScript (o simile) a [tutti i livelli d
Se vuoi scrivere in JavaScript per interrogare la blockchain, inviare transazioni e altro ancora, il modo più comodo per farlo è utilizzare una [libreria API JavaScript](/developers/docs/apis/javascript/). Queste API consentono agli sviluppatori di interagire facilmente con i [nodi della rete Ethereum](/developers/docs/nodes-and-clients/).
-È possibile utilizzare queste librerie per interagire con gli Smart Contract su Ethereum, nel qual caso si può creare una dapp in cui JavaScript viene utilizzato solo per interagire con i contratti preesistenti.
+Puoi utilizzare queste librerie per interagire con i contratti intelligenti su Ethereum, quindi è possibile creare una dapp in cui, semplicemente, utilizzi JavaScript per interagire con i contratti pre-esistenti.
**Dai un'occhiata a:**
- [Web3.js](https://web3js.readthedocs.io/)
- [Ethers.js](https://docs.ethers.io/) _– Contiene l'implementazione del portafoglio di Ethereum e le utility in JavaScript e TypeScript._
-### Smart Contract {#smart-contracts}
+### Contratti intelligenti {#smart-contracts}
-Se sei uno sviluppatore JavaScript e vuoi scrivere uno Smart Contract personalizzato, consigliamo di familiarizzare con [Solidity](https://solidity.readthedocs.io). Questo è il linguaggio degli smart contract più popolare ed è sintatticamente simile a JavaScript, il che lo rende facile da imparare.
+Se sei uno sviluppatore JavaScript e vorresti scrivere il tuo contratto intelligente, consigliamo di familiarizzare con [Solidity](https://solidity.readthedocs.io). Questo è il linguaggio di contratti intelligenti più popolare ed è sintatticamente simile a JavaScript, che lo rende più facile da imparare.
-Scopri di più sugli [Smart Contract](/developers/docs/smart-contracts/).
+Di più sui [contratti intelligenti](/developers/docs/smart-contracts/).
## Comprendere il protocollo {#understand-the-protocol}
@@ -35,13 +35,13 @@ Esiste un'implementazione JavaScript della [macchina virtuale di Ethereum](/en/d
È suddivisa in vari pacchetti JavaScript che puoi leggere per comprendere meglio:
-- Account
+- Conti
- Blocchi
- La blockchain stessa
- Transazioni
- E molto altro...
-Ti aiuterà a comprendere ad esempio la struttura dati di un account.
+Ciò ti aiuterà a comprendere cose come "cos'è la struttura dei dati di un conto?".
Se preferisci invece leggere codice, questo codice JavaScript può essere un'alternativa interessante alla lettura della nostra documentazione.
@@ -63,7 +63,7 @@ Ci sono molte altre novità nel mondo di JavaScript per Ethereum, tra cui:
- strumenti per generare, importare ed esportare chiavi Ethereum.
- un'implementazione di `merkle-patricia-tree`, una struttura di dati delineata nel yellow paper di Ethereum.
-Approfondisci ciò che ti interessa maggiormente sul [repo EthereumJSrepo](https://github.com/ethereumjs)
+Approfondisci ciò che ti interessa maggiormente sul [repository EthereumJS](https://github.com/ethereumjs)
## Letture consigliate {#further-reading}
diff --git a/src/content/translations/it/developers/docs/programming-languages/python/index.md b/src/content/translations/it/developers/docs/programming-languages/python/index.md
index 3bec20d2b27..6a3bb445e64 100644
--- a/src/content/translations/it/developers/docs/programming-languages/python/index.md
+++ b/src/content/translations/it/developers/docs/programming-languages/python/index.md
@@ -9,38 +9,38 @@ incomplete: true
Usa Ethereum per creare applicazioni decentralizzate (dette "dapp") che sfruttano i vantaggi delle criptovalute e della tecnologia blockchain. Queste dapp sono attendibili perché, una volta "caricate" su Ethereum, vengono eseguite sempre come sono state programmate. Possono controllare risorse digitali per creare nuove tipologie di applicazioni finanziarie. Possono essere decentralizzate, il che significa che nessuna singola entità o persona le controlla e sono quasi impossibile da censurare.
-## Primi passi con gli Smart Contract e il linguaggio Solidity {#getting-started-with-smart-contracts-and-solidity}
+## Primi passi con i contratti intelligenti e il linguaggio Solidity {#getting-started-with-smart-contracts-and-solidity}
**Operazioni di base per integrare Python con Ethereum**
Hai prima bisogno di nozioni di base? Dai un'occhiata a [ethereum.org/learn](/learn/) o [ethereum.org/developers](/developers/).
- [Blockchain Explained](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
-- [Understanding Smart Contracts](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
-- [Write your First Smart Contract](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [Comprendere i Contratti Intelligenti](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [Scrivi il tuo Primo Contratto Intelligente](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
- [Learn How to Compile and Deploy Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
## Articoli per chi inizia ora {#beginner-articles}
- [Guida di uno sviluppatore (Python) a Ethereum](https://snakecharmers.ethereum.org/a-developers-guide-to-ethereum-pt-1/)
-- [Introduzione agli smart contract con Vyper](https://kauri.io/#collections/Getting%20Started/an-introduction-to-smart-contracts-with-vyper/)
+- [Un'Introduzione ai Contratti Intelligenti con Vyper](https://kauri.io/#collections/Getting%20Started/an-introduction-to-smart-contracts-with-vyper/)
- [Distribuisci il tuo Token ERC20 con Python e Brownie](https://betterprogramming.pub/python-blockchain-token-deployment-tutorial-create-an-erc20-77a5fd2e1a58)
- [Come sviluppare un contratto Ethereum utilizzando Python Flask?](https://medium.com/coinmonks/how-to-develop-ethereum-contract-using-python-flask-9758fe65976e)
- [Introduziona Web3.py · Ethereum per sviluppatori Python](https://www.dappuniversity.com/articles/web3-py-intro)
-- [Come richiamare una funzione di smart contract utilizzando Python e web3.py](https://stackoverflow.com/questions/57580702/how-to-call-a-smart-contract-function-using-python-and-web3-py)
+- [Come chiamare la funzione di un Contratto Intelligente usando Python e web3.py](https://stackoverflow.com/questions/57580702/how-to-call-a-smart-contract-function-using-python-and-web3-py)
## Articoli di livello intermedio {#intermediate-articles}
- [Dapp Development for Python Programmers](https://levelup.gitconnected.com/dapps-development-for-python-developers-f52b32b54f28)
- [Creating a Python Ethereum Interface: Part 1](https://hackernoon.com/creating-a-python-ethereum-interface-part-1-4d2e47ea0f4d)
-- [Ethereum Smart Contracts in Python: a comprehensive(ish) guide](https://hackernoon.com/ethereum-smart-contracts-in-python-a-comprehensive-ish-guide-771b03990988)
-- [Usare Brownie e Python per distribuire gli smart contract](https://dev.to/patrickalphac/using-brownie-for-to-deploy-smart-contracts-1kkp)
+- [Contratti Intelligenti di Ethereum su Python: una guida (quasi) completa](https://hackernoon.com/ethereum-smart-contracts-in-python-a-comprehensive-ish-guide-771b03990988)
+- [Usare Brownie e Python per distribuire i Contratti Intelligenti](https://dev.to/patrickalphac/using-brownie-for-to-deploy-smart-contracts-1kkp)
- [Creare NFT su OpenSea con Brownie](https://www.freecodecamp.org/news/how-to-make-an-nft-and-render-on-opensea-marketplace/)
## Modelli d'uso avanzati {#advanced-use-patterns}
-- [Compiling, deploying and calling Ethereum smartcontract using Python](https://yohanes.gultom.id/2018/11/28/compiling-deploying-and-calling-ethereum-smartcontract-using-python/)
-- [Analyze Solidity Smart Contracts with Slither](https://kauri.io/#collections/DevOps/analyze-solidity-smart-contracts-with-slither/#analyze-solidity-smart-contracts-with-slither)
+- [Compilazione, distribuzione e chiamata del contratto intelligente di Ethereum usando Python](https://yohanes.gultom.id/2018/11/28/compiling-deploying-and-calling-ethereum-smartcontract-using-python/)
+- [Analizzare i Contratti Intelligenti in Solidity con Slither](https://kauri.io/#collections/DevOps/analyze-solidity-smart-contracts-with-slither/#analyze-solidity-smart-contracts-with-slither)
- [Blockchain Fintech Tutorial: Lending and Borrowing With Python](https://blog.chain.link/blockchain-fintech-defi-tutorial-lending-borrowing-python/)
## Progetti e strumenti di Python {#python-projects-and-tools}
@@ -50,7 +50,7 @@ Hai prima bisogno di nozioni di base? Dai un'occhiata a [ethereum.org/learn](/le
- [Web3.py](https://github.com/ethereum/web3.py) - _Libreria Python per interagire con Ethereum_
- [Vyper](https://github.com/ethereum/vyper/) - _Linguaggio dei Contratti Intelligenti di Python per l'EVM_
- [Ape](https://github.com/ApeWorX/ape) - _Lo strumento di sviluppo di contratti intelligenti per utilizzatori di Python, Scienziati dei Dati e Professionisti della Sicurezza_
-- [Brownie](https://github.com/eth-brownie/brownie) - _Quadro di Python per distribuire, testare e interagire coi contratti intelligenti di Ethereum_
+- [Brownie](https://github.com/eth-brownie/brownie) - _Framework di Python per distribuire, testare e interagire con i contratti intelligenti di Ethereum_
- [py-evm](https://github.com/ethereum/py-evm) - _Implementazione della macchina virtuale Ethereum_
- [eth-tester](https://github.com/ethereum/eth-tester) - _Strumenti per testare le applicazioni basate su Ethereum_
- [eth-utils](https://github.com/ethereum/eth-utils/) - _Funzioni di utilità per lavorare con le basi di codice legate a Ethereum_
@@ -64,7 +64,7 @@ Hai prima bisogno di nozioni di base? Dai un'occhiata a [ethereum.org/learn](/le
### Archiviato / Non più mantenuto: {#archived--no-longer-maintained}
- [Trinity](https://github.com/ethereum/trinity) - _Il client Python di Ethereum_
-- [Mamba](https://github.com/arjunaskykok/mamba) - _Framework per scrivere, compilare e distribuire smart contract scritti in linguaggio Vyper_
+- [Mamba](https://mamba.black) - _Framework per scrivere, compilare e distribuire contratti intelligenti scritti nel linguaggio Vyper_
Cerchi altre risorse? Dai un'occhiata a [ethereum.org/developers](/developers/).
@@ -73,10 +73,10 @@ Cerchi altre risorse? Dai un'occhiata a [ethereum.org/developers](/developers/).
I seguenti progetti basati su Ethereum usano strumenti menzionati su questa pagina. Le repository open source correlate fungono da riferimento utile per il codice d'esempio e le migliori pratiche.
- [Yearn Finance](https://yearn.finance/) e [Repository di Yearn Vault Contracts](https://github.com/yearn/yearn-vaults)
-- [Curve](https://curve.fi/) e [Repository di smart contract di Curve](https://github.com/curvefi/curve-contract)
-- [BadgerDAO](https://badger.com/) e [smart contract che utilizzano la toolchain di Brownie](https://github.com/Badger-Finance/badger-system)
+- [Curve](https://curve.fi/) e la [repository dei contratti intelligenti di Curve](https://github.com/curvefi/curve-contract)
+- [BadgerDAO](https://badger.com/) e i [contratti intelligenti che usano la toolchain di Brownie](https://github.com/Badger-Finance/badger-system)
- [Sushi](https://sushi.com/) usa [Python nella gestione e distribuzione dei suoi vesting contract](https://github.com/sushiswap/sushi-vesting-protocols)
-- [Alpha Finance](https://alphafinance.io/), di Alpha Homora, usa [Brownie per testare e distribuire gli smart contract](https://github.com/AlphaFinanceLab/alpha-staking-contract)
+- [Alpha Finance](https://alphafinance.io/), di Alpha Homora, usa [Brownie per testare e distribuire i contratti intelligenti](https://github.com/AlphaFinanceLab/alpha-staking-contract)
## Discussione della Community di Python {#python-community-contributors}
diff --git a/src/content/translations/it/developers/docs/programming-languages/ruby/index.md b/src/content/translations/it/developers/docs/programming-languages/ruby/index.md
index 580242912ed..0006f6d060b 100644
--- a/src/content/translations/it/developers/docs/programming-languages/ruby/index.md
+++ b/src/content/translations/it/developers/docs/programming-languages/ruby/index.md
@@ -9,20 +9,20 @@ incomplete: false
Usa Ethereum per creare applicazioni decentralizzate (dette "dapp") che sfruttano i vantaggi delle criptovalute e della tecnologia blockchain. Queste dapp possono essere senza fiducia, a significare che una volta distribuite su Ethereum, saranno sempre eseguite come programmate. Possono controllare risorse digitali per creare nuove tipologie di applicazioni finanziarie. Possono essere decentralizzate, pertanto nessuna entità singola o individuo le controlla e sono quasi impossibili da censurare.
-## Primi passi con gli Smart Contract e il linguaggio Solidity {#getting-started-with-smart-contracts-and-solidity}
+## Primi passi con i contratti intelligenti e il linguaggio Solidity {#getting-started-with-smart-contracts-and-solidity}
**Inizia a integrare Ruby con Ethereum**
Ti servono prima le nozioni di base? Dai un'occhiata a [ethereum.org/learn](/learn/) o [ethereum.org/developers](/developers/).
- [Blockchain Explained](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
-- [Comprendere gli Smart Contract](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
-- [Scrivi il tuo Primo Smart Contact](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [Comprendere i Contratti Intelligenti](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [Scrivi il tuo Primo Contratto Intelligente](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
- [Impara Come Compilare e Distribuire Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
## Articoli per chi inizia ora {#beginner-articles}
-- [Comprendere definitivamente gli account Ethereum](https://dev.to/q9/finally-understanding-ethereum-accounts-1kpe)
+- [Comprendere definitivamente i conti di Ethereum](https://dev.to/q9/finally-understanding-ethereum-accounts-1kpe)
- [Autenticare definitivamente gli utenti di Rails con Metamask](https://dev.to/q9/finally-authenticating-rails-users-with-metamask-3fj)
- [Accesso con Ethereum - Rilascio di esempi di Rail e libreria di Ruby](https://blog.spruceid.com/sign-in-with-ethereum-ruby-library-release-and-rails-examples/)
- [Come connettersi alla rete di Ethereum usando Ruby](https://www.quicknode.com/guides/web3-sdks/how-to-connect-to-the-ethereum-network-using-ruby)
@@ -31,13 +31,13 @@ Ti servono prima le nozioni di base? Dai un'occhiata a [ethereum.org/learn](/lea
## Articoli di livello intermedio {#intermediate-articles}
- [App della Blockchain con Ruby](https://www.nopio.com/blog/blockchain-app-ruby/)
-- [Usare Ruby, connesso a Ethereum, per eseguire lo smart contract](https://titanwolf.org/Network/Articles/Article?AID=87285822-9b25-49d5-ba2a-7ad95fff7ef9)
+- [Usa Ruby, connesso a Ethereum, per eseguire il Contratto Intelligente](https://titanwolf.org/Network/Articles/Article?AID=87285822-9b25-49d5-ba2a-7ad95fff7ef9)
## Progetti e strumenti Ruby {#ruby-projects-and-tools}
### Attivi {#active}
-- [eth.rb](https://github.com/q9f/eth.rb) - _Libreria di Ruby e client RPC per gestire account, messaggi e transazioni di Ethereum_
+- [eth.rb](https://github.com/q9f/eth.rb): _Libreria di Ruby e client RPC per gestire conti, messaggi e transazioni di Ethereum_
- [keccak.rb](https://github.com/q9f/keccak.rb) - _L'hash di The Keccak (SHA3) usato da Ethereum_
- [siwe-ruby](https://github.com/spruceid/siwe-ruby) - _Implementazione in Ruby dell'Accesso con Ethereum_
- [siwe_rails](https://github.com/spruceid/siwe_rails) - _Gemma di Rails che aggiunge la firma locale SIWE nei percorsi_
diff --git a/src/content/translations/it/developers/docs/programming-languages/rust/index.md b/src/content/translations/it/developers/docs/programming-languages/rust/index.md
index 680424d28cc..51abb674d2b 100644
--- a/src/content/translations/it/developers/docs/programming-languages/rust/index.md
+++ b/src/content/translations/it/developers/docs/programming-languages/rust/index.md
@@ -9,15 +9,15 @@ incomplete: true
Usa Ethereum per creare applicazioni decentralizzate (dette "dapp") che sfruttano i vantaggi delle criptovalute e della tecnologia blockchain. Queste dapp sono attendibili perché, una volta "caricate" su Ethereum, vengono eseguite sempre come sono state programmate. Possono controllare risorse digitali per creare nuove tipologie di applicazioni finanziarie. Possono essere decentralizzate, il che significa che nessuna singola entità o persona le controlla e sono quasi impossibile da censurare.
-## Primi passi con gli Smart Contract e il linguaggio Solidity {#getting-started-with-smart-contracts-and-solidity}
+## Primi passi con i contratti intelligenti e il linguaggio Solidity {#getting-started-with-smart-contracts-and-solidity}
**Operazioni di base per integrare Rust con Ethereum**
Hai prima bisogno di nozioni di base? Dai un'occhiata a [ethereum.org/learn](/learn/) o [ethereum.org/developers](/developers/).
- [Blockchain Explained](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
-- [Understanding Smart Contracts](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
-- [Write your First Smart Contract](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [Comprendere i Contratti Intelligenti](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [Scrivi il tuo Primo Contratto Intelligente](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
- [Learn How to Compile and Deploy Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
## Articoli per chi inizia ora {#beginner-articles}
@@ -25,7 +25,8 @@ Hai prima bisogno di nozioni di base? Dai un'occhiata a [ethereum.org/learn](/le
- [Choosing an Ethereum Client](https://www.trufflesuite.com/docs/truffle/reference/choosing-an-ethereum-client)
- [The Rust Ethereum Client](https://openethereum.github.io/) \* **Notare che OpenEthereum [è ormai superato](https://medium.com/openethereum/gnosis-joins-erigon-formerly-turbo-geth-to-release-next-gen-ethereum-client-c6708dd06dd) e non viene più mantenuto.** Usalo con cautela e preferibilmente passa a un'altra implementazione client.
- [Sending Transaction to Ethereum Using Rust](https://kauri.io/#collections/A%20Hackathon%20Survival%20Guide/sending-ethereum-transactions-with-rust/)
-- [An Introduction to Smart Contracts with Parity Ethereum Client](https://wiki.parity.io/Smart-Contracts)
+- [Un'Introduzione ai Contratti Intelligenti con il Client di Ethereum Parity](https://wiki.parity.io/Smart-Contracts)
+- [Setting up your Oasis SDK dev environment](https://docs.oasis.dev/oasis-sdk/guide/getting-started)
- [A step-by-step tutorial on how to write contracts in rust Wasm for Kovan](https://github.com/paritytech/pwasm-tutorial)
## Articoli di livello intermedio {#intermediate-articles}
@@ -40,6 +41,7 @@ Hai prima bisogno di nozioni di base? Dai un'occhiata a [ethereum.org/learn](/le
- [Build a Decentralized Todo App Using Vue.js & Rust](https://medium.com/@jjmace01/build-a-decentralized-todo-app-using-vue-js-rust-webassembly-5381a1895beb)
- [Getting Started with Enigma - In Rust Programming Language](https://blog.enigma.co/getting-started-with-discovery-the-rust-programming-language-4d1e0b06de15)
- [An Intro to Secret Contracts](https://blog.enigma.co/getting-started-with-enigma-an-intro-to-secret-contracts-cdba4fe501c2)
+- [Deploying Solidity Contracts on Oasis (Compound)](https://docs.oasis.dev/tutorials/deploy-solidity.html#deploy-using-truffle)
- [Crea una blockchain in Rust](https://blog.logrocket.com/how-to-build-a-blockchain-in-rust/)
## Progetti e strumenti di Rust {#rust-projects-and-tools}
@@ -51,7 +53,7 @@ Hai prima bisogno di nozioni di base? Dai un'occhiata a [ethereum.org/learn](/le
- [Solaris](https://github.com/paritytech/sol-rs)
- [SputnikVM](https://github.com/sorpaas/rust-evm) - _Implementazione della macchina virtuale Ethereum in Rust_
- [rust-web3](https://github.com/tomusdrw/rust-web3) - _Implementazione della libreria di Web3.js in Rust_
-- [Wavelet](https://wavelet.perlin.net/docs/smart-contracts) - _Smart Contract Wavelet in Rust_
+- [Wavelet](https://wavelet.perlin.net/docs/smart-contracts) - _Contratto intelligente Wavelet su Rust_
- [Foundry](https://github.com/gakonst/foundry)- _Toolkit per lo sviluppo di applicazioni Ethereum_
- [Ethers_rs](https://github.com/gakonst/ethers-rs)- _Libreria di Ethereum e implementazione di portafogli_
- [evm_rs](https://github.com/rust-blockchain/evm)- _Implementazione della macchina virtuale di Ethereum in Rust_
diff --git a/src/content/translations/it/developers/docs/scaling/index.md b/src/content/translations/it/developers/docs/scaling/index.md
index 3c2140a3f1c..f2a822b5f3f 100644
--- a/src/content/translations/it/developers/docs/scaling/index.md
+++ b/src/content/translations/it/developers/docs/scaling/index.md
@@ -2,14 +2,13 @@
title: Scalabilità
description: Introduzione alle diverse opzioni di scalabilità attualmente in fase di sviluppo da parte della community Ethereum.
lang: it
-sidebarDepth: 3
---
## Panoramica della scalabilità {#scaling-overview}
Poiché il numero di persone che usano Ethereum è aumentato, la blockchain ha raggiunto determinati limiti di capacità. Ciò ha aumentato il costo di utilizzo della rete, creando la necessità di "soluzioni di scalabilità". Ci sono molteplici soluzioni in fase di ricerca, sperimentazione e implementazione, che adottano approcci diversi per raggiungere obiettivi simili.
-L'obiettivo principale della scalabilità è aumentare la velocità della transazione (finalità più veloce) e il volume di transazioni (numero elevato di transazioni al secondo), senza sacrificare la decentralizzazione o la sicurezza (maggiori informazioni su [Ethereum vision](/upgrades/vision/)). Sulla blockchain di Ethereum di livello 1, l'elevata domanda conduce a transazioni più lente e [prezzi del gas](/developers/docs/gas/) impraticabili. L'aumento della capacità della rete in termini di velocità e produttività è fondamentale per una significativa adozione di massa di Ethereum.
+L'obiettivo principale della scalabilità è aumentare la velocità della transazione (finalità più veloce) e il volume di transazioni (numero elevato di transazioni al secondo), senza sacrificare la decentralizzazione o la sicurezza (maggiori informazioni su [Ethereum vision](/upgrades/vision/)). Sulla blockchain di livello 1 di Ethereum, l'elevata domanda comporta transazioni più lente e [prezzi del gas](/developers/docs/gas/) impraticabili. L'aumento della capacità della rete in termini di velocità e produttività è fondamentale per una significativa adozione di massa di Ethereum.
Anche se velocità e produttività sono aspetti importanti, è essenziale che le soluzioni di scalabilità che rendono possibili questi obiettivi rimangano decentralizzate e sicure. Mantenere una barriera all'ingresso bassa per gli operatori dei nodi è fondamentale per scongiurare una progressione verso una potenza di calcolo centralizzata e insicura.
@@ -27,11 +26,11 @@ Questo metodo di scalabilità richiede modifiche al protocollo Ethereum ([rete p
Sharding è il processo di suddivisione orizzontale di un database per distribuire il carico. In un contesto Ethereum, lo sharding ridurrà la congestione della rete e aumenterà le transazioni al secondo creando nuove catene, note come "shard". Questo alleggerirà anche il carico per ogni validatore, che non dovrà più elaborare la totalità di tutte le transazioni sulla rete.
-Ulteriori informazioni sullo [sharding](/upgrades/sharding/).
+Scopri di più sullo [sharding](/upgrades/sharding/).
## Scalabilità off-chain {#off-chain-scaling}
-Le soluzioni off-chain sono implementate separatamente dalla rete principale di livello 1 - non richiedono alcuna modifica al protocollo Ethereum esistente. Alcune soluzioni, note come soluzioni di "livello 2", derivano la loro sicurezza direttamente dal consenso del livello 1 di Ethereum, come i [rollup ottimistici](/developers/docs/scaling/optimistic-rollups/), i [rollup a conoscenza zero](/developers/docs/scaling/zk-rollups/) o i [canali di stato](/developers/docs/scaling/state-channels/). Altre soluzioni comportano la creazione di nuove catene in varie forme, che derivano la loro sicurezza separatamente dalla rete principale, come le [sidechain](#sidechains) o le catene [plasma](#plasma). Queste soluzioni comunicano con la rete principale, ma derivano la loro sicurezza in modo diverso per raggiungere una serie di obiettivi.
+Le soluzioni off-chain sono implementate separatamente dalla rete principale di livello 1 - non richiedono alcuna modifica al protocollo Ethereum esistente. Alcune soluzioni, note come soluzioni di "livello 2", derivano la loro sicurezza direttamente dal consenso del livello 1 di Ethereum, come i [rollup ottimistici](/developers/docs/scaling/optimistic-rollups/), i [rollup a conoscenza zero](/developers/docs/scaling/zk-rollups/) o i [canali di stato](/developers/docs/scaling/state-channels/). Altre soluzioni comportano la creazione di nuove catene in varie forme, che derivano la propria sicurezza separatamente dalla Rete principale, come le [catene secondarie](#sidechains), i [validium](#validium) o le [catene Plasma](#plasma). Queste soluzioni comunicano con la rete principale, ma derivano la loro sicurezza in modo diverso per raggiungere una serie di obiettivi.
### Scalabilità di livello 2 {#layer-2-scaling}
@@ -46,40 +45,42 @@ Un'istanza specifica del Livello 2 potrebbe essere aperta e condivisa da molte a
#### Perché il Livello 2 è necessario? {#why-is-layer-2-needed}
- L'aumento delle transazioni al secondo migliora notevolmente l'esperienza utente e riduce la congestione della rete sulla Mainnet di Ethereum.
-- Le transazioni sono raggruppate in una singola transazione sulla Rete principale di Ethereum, riducendo il prezzo del gas per gli utenti e rendendo Ethereum più inclusivo e accessibile per le persone da tutto il mondo.
+- Le transazioni sono raggruppate in una singola transazione sulla Rete Principale di Ethereum, riducendo le commissioni del gas per gli utenti e rendendo Ethereum più inclusivo e accessibile per le persone da tutto il mondo.
- Qualunque aggiornamento alla scalabilità non dovrebbe sacrificare decentralizzazione e sicurezza - il livello 2 è basato su Ethereum.
- Esistono reti di livello 2 specifiche per le applicazioni che sfruttano le proprie efficienze lavorando con risorse su scala.
+[Maggiori informazioni sul livello 2](/layer-2/).
+
#### Rollup {#rollups}
-I rollup eseguono le transazioni al di fuori del Livello 1, dopodiché i dati vengono pubblicati al Livello 1, dove viene raggiunto il consenso. Poiché i dati della transazione sono inclusi nei blocchi del Livello 1, ciò consente ai rollup di essere protetti dalla sicurezza nativa di Ethereum.
+I rollup provvedono all'esecuzione delle transazioni al di fuori del livello 1, dopodiché i dati vengono inviati al livello 1, dove viene raggiunto il consenso. Poiché i dati della transazione sono inclusi nei blocchi del livello 1, ciò consente ai rollup di essere protetti dalla sicurezza nativa di Ethereum.
-Esistono due tipi di rollup con diversi modelli di sicurezza:
+Ci sono due tipi di rollup con diversi modelli di sicurezza:
- **Rollup ottimistici**: presumono che le transazioni siano valide di default ed eseguono solo il calcolo, tramite una [**prova di frode**](/glossary/#fraud-proof), nel caso di una contestazione. [Maggiori informazioni sui rollup ottimistici](/developers/docs/scaling/optimistic-rollups/).
- **Rollup a conoscenza zero**: esegue il calcolo al di fuori della catena e invia una [**prova di validità**](/glossary/#validity-proof) alla catena. [Maggiori informazioni sui rollup a conoscenza zero](/developers/docs/scaling/zk-rollups/).
#### Canali di stato {#channels}
-I canali di stato utilizzano contratti multi-firma per consentire ai partecipanti di effettuare transazioni rapidamente e liberamente al di fuori della catena, regolando poi la finalizzazione con la Rete principale. In questo modo si riduce la congestione, le commissioni e i ritardi sulla rete. Al momento esistono due tipi di canali: canali di stato e canali di pagamento.
+I canali di stato utilizzano contratti multisig per consentire ai partecipanti di effettuare transazioni rapidamente e liberamente al di fuori della catena, regolando la finalità con la Rete principale. In questo modo si riducono al minimo la congestione, le commissioni e i ritardi sulla rete. Al momento esistono due tipi di canali: canali di stato e canali di pagamento.
Maggiori informazioni sui [canali di stato](/developers/docs/scaling/state-channels/).
### Sidechain {#sidechains}
-Una sidechain è una blockchain indipendente compatibile con EVM che viene eseguita in parallelo alla rete principale. È compatibile con Ethereum tramite ponti bidirezionali e funziona secondo regole di consenso e parametri di blocco propri.
+Una sidechain è una blockchain indipendente compatibile con EVM che viene eseguita in parallelo alla Rete principale. È compatibile con Ethereum tramite ponti bidirezionali e funziona secondo regole di consenso e parametri del blocco propri.
Maggiori informazioni sulle [sidechain](/developers/docs/scaling/sidechains/).
### Plasma {#plasma}
-Una catena plasma è una blockchain separata ancorata alla catena principale di Ethereum, che utilizza le prove di frode (come i [rollup ottimistici](/developers/docs/scaling/optimistic-rollups/)) per arbitrare le dispute.
+Una catena Plasma è una blockchain separata e collegata alla catena principale di Ethereum che utilizza le prove di frode (come i [rollup ottimistici](/developers/docs/scaling/optimistic-rollups/)) per arbitrare le dispute.
Scopri di più sui [rollup](/developers/docs/scaling/plasma/).
### Validium {#validium}
-Una catena di Validum usa le prove di validità come i rollup a conoscenza zero, ma i dati non sono memorizzati sulla catena di livello 1 principale di Ethereum. Questo può tradursi in 10.000 transazioni al secondo per la catena di Validium, con più catene eseguibili in parallelo.
+Una catena Validum usa le prove di validità come i rollup a conoscenza zero, ma i dati non sono memorizzati sulla catena di livello 1 principale di Ethereum. Questo può tradursi in 10.000 transazioni al secondo per catena Validium, con la possibilità di eseguire più catene in parallelo.
Scopri di più su [Validium](/developers/docs/scaling/validium/).
@@ -94,7 +95,7 @@ Scopri di più su [Validium](/developers/docs/scaling/validium/).
-_Nota che la spiegazione nel video usa il termine "Livello 2" per riferirsi a tutte le soluzioni di ridimensionamento esterne alla catena, mentre noi distinguiamo il "Livello 2" come soluzione esterna alla catena, la cui sicurezza deriva dal consenso del Livello 1 (Rete principale)._
+_Nota che la spiegazione nel video usa il termine "Livello 2" per fare riferimento a tutte le soluzioni di ridimensionamento off-chain, mentre noi distinguiamo il "Livello 2" come soluzione off-chain, la sua sicurezza deriva dal consenso di livello 1 (Rete principale)._
diff --git a/src/content/translations/it/developers/docs/scaling/optimistic-rollups/index.md b/src/content/translations/it/developers/docs/scaling/optimistic-rollups/index.md
index bc66c8100d3..e109622182b 100644
--- a/src/content/translations/it/developers/docs/scaling/optimistic-rollups/index.md
+++ b/src/content/translations/it/developers/docs/scaling/optimistic-rollups/index.md
@@ -1,58 +1,267 @@
---
title: Rollup ottimistici
-description: Introduzione ai rollup ottimistici
+description: "Un'introduzione ai rollup ottimistici: una soluzione di ridimensionamento usata dalla community di Ethereum."
lang: it
---
+I rollup ottimistici sono protocolli di livello 2 (L2) progettati per estendere il volume del livello di base di Ethereum. Riducono il calcolo sulla catena principale di Ethereum elaborando le transazioni al di fuori della catena, offrendo miglioramenti significativi in termini di velocità di elaborazione. A differenza di altre soluzioni di ridimensionamento, come le [sidechain](/developers/docs/scaling/sidechains/), i rollup ottimistici derivano la propria sicurezza dalla Rete principale, pubblicando i risultati delle transazioni sulla catena o sulle [catene Plasma](/developers/docs/scaling/plasma/), che verificano le transazioni anche su Ethereum con le prove di frode, ma memorizzano i dati delle transazioni altrove.
+
+Siccome il calcolo è la parte lenta e costosa di Ethereum, i rollup ottimistici possono offrire miglioramenti alla scalabilità pari a 10-100x. I rollup ottimistici scrivono inoltre le transazioni a Ethereum come `calldata`, riducendo i costi del gas per gli utenti.
+
## Prerequisiti {#prerequisites}
-Occorre avere una buona comprensione di tutti gli argomenti fondamentali ed un elevato livello di comprensione della [scalabilità di Ethereum](/developers/docs/scaling/). L'implementazione di soluzioni di scalabilità, come i rollup, è un argomento avanzato in quanto la tecnologia è meno testata nel campo e continua ad essere oggetto di ricerca e sviluppo.
+Dovresti aver letto e compreso le nostre pagine sul [ridimensionamento di Ethereum](/developers/docs/scaling/) e il [livello 2](/layer-2/).
+
+## Cos'è un rollup ottimistico? {#what-is-an-optimistic-rollup}
+
+Un rollup ottimistico è un approccio al ridimensionamento di Ethereum che comporta lo spostamento del calcolo e dell'archiviazione di stato al di fuori della catena. I rollup ottimistici eseguono le transazioni al di fuori di Ethereum, ma pubblicano i dati delle transazioni nella Rete principale come `calldata`.
+
+Gli operatori del rollup ottimistico raggruppano svariate transazioni off-chain in grandi batch prima di inviarle a Ethereum. Questo approccio consente di distribuire i costi fissi su più transazioni in ogni batch, riducendo le commissioni per gli utenti finali. I rollup ottimistici usano inoltre tecniche di compressione per ridurre la quantità di dati pubblicati su Ethereum.
+
+I rollup ottimistici sono considerati "ottimistici" perché presuppongono che le transazioni off-chain siano valide e non pubblicano le prove di validità per i batch di transazioni pubblicati sulla catena. Questo distingue i rollup ottimistici dai [rollup a conoscenza zero](/developers/docs/scaling/zk-rollups) che pubblicano le [prove di validità](/glossary/#validity-proof) crittografiche per le transazioni off-chain.
+
+I rollup ottimistici, invece, si affidano a uno schema di prova di frode per rilevare i casi in cui le transazioni non sono calcolate correttamente. Dopo che un batch del rollup è inviata a Ethereum, c'è una finestra temporale (detta periodo di contestazione) durante la quale chiunque può contestare i risultati di una transazione del rollup calcolando una [prova di frode](/glossary/#fraud-proof).
+
+Se la prova di frode ha successo, il protocollo del rollup esegue nuovamente le transazioni e aggiorna di conseguenza lo stato del rollup. L'altro effetto di una prova di frode riuscita è che il sequenziatore responsabile dell'inclusione della transazione eseguita erroneamente in un blocco riceve una sanzione.
+
+Se il batch del rollup non viene contestata (cioè, tutte le transazioni sono eseguite correttamente) dopo la scadenza del periodo di contestazione, è ritenuta valida e accettata su Ethereum. Altri possono continuare a costruire su un blocco di rollup non confermato, ma con una precisazione: i risultati della transazione saranno annullati se basati su una transazione eseguita erroneamente pubblicata in precedenza.
+
+## Come interagiscono i rollup ottimistici con Ethereum? {#optimistic-rollups-and-Ethereum}
+
+I rollup ottimistici sono [soluzioni di ridimensionamento off-chain](/developers/docs/scaling/#off-chain-scaling) create per funzionare su Ethereum. Ogni rollup ottimistico è gestito da una serie di contratti intelligenti distribuiti sulla rete di Ethereum. I rollup ottimistici elaborano le transazioni al di fuori della catena principale di Ethereum, ma pubblicano le transazioni off-chain (in batch) in un contratto di rollup on-chain. Come la blockchain di Ethereum, questo registro delle transazioni è immutabile e forma la "catena di rollup ottimistico".
+
+L'architettura di un rollup ottimistico comprende le seguenti parti:
+
+**Contratti su catena**: L'operazione del rollup ottimistico è controllata dai contratti intelligenti eseguiti su Ethereum. Questo include i contratti che memorizzano i blocchi del rollup, monitorano gli aggiornamenti di stato sul rollup e tracciano i depositi degli utenti. In questo senso, Ethereum serve da livello di base o "livello 1" per i rollup ottimistici.
+
+**Macchina virtuale (VM) off-chain**: sebbene i contratti che gestiscono il protocollo di rollup ottimistico siano eseguiti su Ethereum, il protocollo di rollup esegue calcolo e archiviazione di stato su un'altra macchina virtuale separata dalla [Macchina Virtuale di Ethereum](/developers/docs/evm/). La VM off-chain è dove le applicazioni risiedono e dove sono eseguiti i cambiamenti di stato; serve da livello superiore o "livello 2" per un rollup ottimistico.
+
+Poiché i rollup ottimistici sono progettati per eseguire programmi scritti o compilati per l'EVM, la VM off-chain incorpora molte specifiche di progettazione dell'EVM. Inoltre, le prove di frode calcolate sulla catena consentono alla rete di Ethereum di imporre la validità dei cambiamenti di stato calcolati nella VM off-chain.
+
+I rollup ottimistici sono descritti come 'soluzioni di ridimensionamento ibridi' perché, sebbene esistano come protocolli separati, le loro proprietà di sicurezza sono derivate da Ethereum. Tra le altre cose, Ethereum garantisce la correttezza del calcolo off-chain di un rollup e la disponibilità dei dati dietro il calcolo. Questo rende i rollup ottimistici più sicuri dei protocolli di ridimensionamento off-chain puri (ad es. [sidechain](/developers/docs/scaling/sidechains/)) che non si affidano a Ethereum per la sicurezza.
+
+I rollup ottimistici si affidano al protocollo principale di Ethereum per quanto segue:
+
+### Disponibilità dei dati {#data-availability}
+
+Come accennato, i rollup ottimistici pubblicano i dati della transazione in Ethereum come `calldata`. Poiché l'esecuzione della catena di rollup si basa sulle transazioni inviate, chiunque può usare queste informazioni, ancorate al livello di base di Ethereum, per eseguire lo stato del rollup e verificare la correttezza delle transizioni di stato.
+
+La disponibilità dei dati è essenziale perché senza accesso ai dati di stato, gli autori delle contestazioni non possono costruire le prove di frode per contestare le operazioni di rollup non valide. Con Ethereum che fornisce la disponibilità dei dati, il rischio che gli operatori di rollup la passino liscia con atti malevoli (ad es. inviare blocchi non validi) è ridotto.
+
+### Resistenza alla censura {#censorship-resistance}
+
+I rollup ottimistici si affidano a Ethereum anche per la resistenza alla censura. In un rollup ottimistico, un'entità centralizzata (l'operatore) è responsabile dell'elaborazione delle transazioni e dell'invio dei blocchi di rollup a Ethereum. Ciò ha delle implicazioni:
+
+- Gli operatori del rollup possono censurare gli utenti andando completamente offline o rifiutandosi di produrre blocchi che introducano in essi determinate transazioni.
+
+- Gli operatori dei rollup possono impedire agli utenti di prelevare i fondi depositati nel contratto di rollup trattenendo i dati di stato necessari per le prove di proprietà di Merkle. Trattenere i dati di stato può anche nascondere lo stato del rollup agli utenti e impedire loro di interagire col rollup.
+
+I rollup ottimistici risolvono questo problema forzando gli operatori a pubblicare i dati associati agli aggiornamenti di stato su Ethereum. La pubblicazione dei dati di rollup sulla catena ha i seguenti benefici:
+
+- Se l'operatore di un rollup ottimistico va offline o smette di produrre i batch di transazioni, un altro nodo può usare i dati disponibili per riprodurre l'ultimo stato del rollup e proseguire con la produzione del blocco.
+
+- Gli utenti possono usare i dati della transazione per creare delle prove di Merkle per dimostrare la proprietà dei fondi e prelevare le proprie risorse dal rollup.
+
+- Gli utenti possono inoltre inviare le proprie transazioni sul L1 invece che al sequenziatore, nel qual caso il sequenziatore deve includere la transazione entro un certo limite di tempo per continuare a produrre blocchi validi.
+
+### Accordo {#settlement}
+
+Un altro ruolo rivestito da Ethereum nel contesto dei rollup ottimistici è quello di un livello d'accordo. Un livello di accordo collega l'intero ecosistema della blockchain, stabilisce sicurezza e fornisce finalità oggettiva se si verifica una disputa su un'altra catena (rollup ottimistici in questo caso) che richieda un arbitrato.
+
+La Rete principale di Ethereum fornisce un hub per i rollup ottimistici per verificare le prove di frode e risolvere le dispute. Inoltre, le transazioni condotte sul rollup sono finali solo _dopo_ che il blocco del rollup è accettato su Ethereum. Una volta che la transazione di un rollup è impegnata nel livello di base di Ethereum, non è posticipabile (tranne nell'altamente improbabile caso di una riorganizzazione della catena).
+
+## Come funzionano i rollup ottimistici? {#how-optimistic-rollups-work}
+
+### Esecuzione e aggregazione delle transazioni {#transaction-execution-and-aggregation}
+
+Gli utenti inviano le transazioni agli "operatori", che sono nodi responsabili dell'elaborazione delle transazioni sul rollup ottimistico. Anche noto come "validatore" o "aggregatore", l'operatore aggrega le transazioni, comprime i dati sottostanti e pubblica il blocco su Ethereum.
+
+Sebbene chiunque possa diventare un validatore, i validatori del rollup ottimistico devono fornire una cauzione prima di produrre i blocchi, come in un [sistema di proof-of-stake](/developers/docs/consensus-mechanisms/pos/). Questa cauzione è decurtabile se il validatore pubblica un blocco non valido o costruisce su un blocco vecchio ma non valido (anche se il suo blocco è valido). Così, i rollup ottimistici usano incentivi cripto-economici per assicurarsi che i validatori agiscano onestamente.
+
+Gli altri validatori sulla catena di rollup ottimistico dovrebbero eseguire le transazioni inviate usando la loro copia dello stato del rollup. Se lo stato finale di un validatore è differente da quello proposto dall'operatore, possono avviare una contestazione e calcolare una prova di frode.
+
+Alcuni rollup ottimistici potrebbero rinunciare a un sistema di validatore senza permessi e usare un solo "sequenziatore" per eseguire la catena. Come un validatore, il sequenziatore elabora le transazioni, produce i blocchi del rollup e invia le transazioni di rollup alla catena del L1 (Ethereum).
+
+Il sequenziatore si distingue da un normale operatore di rollup perché ha un controllo maggiore sull'ordine delle transazioni. Inoltre, il sequenziatore ha accesso prioritario alla catena di rollup ed è l'unica entità autorizzata a inviare le transazioni al contratto on-chain. Le transazioni da nodi non del sequenziatore o da normali utenti sono semplicemente accodate in una casella di ricezione separata finché il sequenziatore non le include in un nuovo batch.
+
+#### Inviare i blocchi di rollup a Ethereum {#submitting-blocks-to-ethereum}
+
+Come accennato, l'operatore di un rollup ottimistico raggruppa le transazioni off-chain in un batch e le invia a Ethereum per la notarizzazione. Questo processo comporta la compressione dei dati correlati alle transazioni e la loro pubblicazione su Ethereum come `calladata`.
+
+`calldata` è un'area non modificabile e non persistente in un contratto intelligente, che si comporta prevalentemente come una [memoria](/developers/docs/smart-contracts/anatomy/#memory). Mentre `calldata` persiste sulla catena come parte dei [registri storici](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html?highlight=memory#logs) della blockchain, non è memorizzato come una parte dello statko di Ethereum. Poiché `calldata` non tocca nessuna parte dello stato di Ethereum, è più economica per memorizzare i dati sulla catena.
+
+La parola chiave `calldata` è anche usata in Solidity per passare gli argomenti alla funzione di un contratto intelligente al momento dell'esecuzione. `calldata` identifica la funzione chiamata durante una transazione e trattiene gli input della funzione nella forma di una sequenza arbitraria di byte.
+
+Nel contesto dei rollup ottimistici, `calldata` è usata per inviare dati di transazione compressi al contratto on-chain. L'operatore del rollup aggiunge un nuovo batch chiamando la funzione necessaria nel contratto di rollup e passando i dati compressi come argomenti della funzione. Usare `calldata` riduce le commissioni degli utenti poiché gran parte dei costi in cui incorrono i rollup provengono dalla memorizzazione dei dati sulla catena.
+
+Ecco [un esempio](https://etherscan.io/tx/0x9102bfce17c58b5fc1c974c24b6bb7a924fb5fbd7c4cd2f675911c27422a5591) dell'invio di un batch del rollup per mostrare come funziona questo concetto. Il sequenziatore ha invocato il metodo `appendSequencerBatch()` e ha passato i dati della transazione compressi come input usando `calldata`.
+
+### Impegni di stato {#state-commitments}
+
+In qualsiasi momento, lo stato del rollup ottimistico (conti, saldi, codice del contratto, etc.) è organizzato come un [albero di Merkle](/whitepaper/#merkle-trees), detto "albero di stato". La radice di questo albero di Merkle (radice di stato), che fa riferimento all'ultimo stato del rollup, è associata a un hash ed è memorizzata nel contratto di rollup. Ogni transizione di stato sulla catena produce un nuovo stato del rollup, in cui un operatore si impegna calcolando una nuova radice di stato.
+
+L'operatore deve inviare sia le vecchie radici di stato che quelle nuove quando pubblica i batch. Se la vecchia radice di stato corrisponde a quella esistente nel contratto on-chain, quest'ultima viene scartata e sostituita con quella nuova.
+
+L'operatore del rollup deve anche creare una radice di Merkle per il batch di transazioni stesso. Questo consente a chiunque di provare l'inclusione di una transazione nel batch (sul L1) presentando una [prova di Merkle](/developers/tutorials/merkle-proofs-for-offline-data-integrity/).
+
+Gli impegni di stato, specialmente le radici di stato, sono necessari per provare la correttezza dei cambiamenti di stato in un rollup ottimistico. Il contratto di rollup accetta le nuove radici di stato dagli operatori immediatamente dopo la loro pubblicazione, ma può poi eliminare quelle non valide per ripristinare il rollup al suo stato corretto.
+
+### Prova di frode {#fraud-proving}
+
+Come spiegato, i rollup ottimistici consentono a chiunque di pubblicare blocchi senza fornire prove di validità. Tuttavia, per assicurarsi che la catena rimanga sicura, i rollup ottimistici specificano una finestra temporale durante la quale chiunque può contestare una transizione di stato. Dunque, i blocchi del rollup sono detti "asserzioni", poiché chiunque può contestarne la validità.
+
+Se qualcuno contesta un'asserzione, il protocollo del rollup avvierà il calcolo della prova di frode. Ogni tipo di prova di frode è interattivo: qualcuno deve pubblicare un'asserzione prima che un'altra persona possa contestarla. La differenza sta nel numero di cicli di interazione necessari per calcolare la prova di frode.
+
+Gli schemi di prova interattivi a turno singolo riproducono le transazioni oggetto di contestazione sul L1 per rilevare le asserzioni non valide. Il protocollo di rollup emula la ri-esecuzione della transazione oggetto di contestazione sul L1 (Ethereum) usando un contratto di verifica, con la radice di stato calcolata che determina chi vince la contestazione. Se il reclamo dell'autore della contestazione sullo stato del rollup è corretto, l'operatore è sanzionato tramite la decurtazione della sua cauzione.
+
+Tuttavia, ri-eseguire le transazioni sul L1 per rilevare la frode richiede la pubblicazione degli impegni di stato per le singole transazioni e aumenta i dati che i rollup devono pubblicare sulla catena. Anche la riproduzione delle transazioni comporta significativi costi del gas. Per questo, i rollup ottimistici stanno passando alla prova interattiva su più turni, che raggiunge lo stesso obiettivo (cioè, rilevare le operazioni di rollup non valide) con maggiore efficienza.
+
+#### Prova interattiva multi-turno {#multi-round-interactive-proving}
+
+La prova interattiva su più turni coinvolge un protocollo botta e risposta tra l'assertore e l'autore della contestazione, supervisionato da un contratto di verifica del L1, che decide infine la parte perdente. Dopo che un nodo del L2 contesta un'asserzione, l'assertore deve dividere l'asserzione constata in due metà uguali. Ogni asserzione individuale, in questo caso, conterrà tanti passaggi di calcolo quanto l'altra.
+
+L'autore della contestazione sceglierà poi quale asserzione desidera contestare. Il processo di divisione (detto "protocollo di bisezione") prosegue finché entrambe le parti stanno contestando un'asserzione su una _singola_ fase dell'esecuzione. A questo punto, il contratto del L1 risolverà la disputa valutando l'istruzione (e il suo risultato) per identificare la parte fraudolenta.
+
+L'assertore deve fornire una "prova di singola fase", verificando la validità del calcolo a singola fase contestato. Se l'assertore non riesce a fornire la prova di singola fase o il verificatore del L1 ritiene che la prova non sia valida, perde la contestazione.
+
+Alcune note su questo tipo di prova di frode:
+
+1. La prova di frode interattiva multi-turno è considerata efficiente perché minimizza il lavoro che la catena del L1 deve effettuare nell'arbitrato della disputa. Invece di riprodurre l'intera transazione, la catena del L1 deve eseguire nuovamente solo una fase nell'esecuzione del rollup.
+
+2. I protocolli di bisezione riducono la quantità di dati pubblicati sulla catena (non serve pubblicare gli impegni di stato per ogni transazione). Inoltre, le transazioni del rollup ottimistico non sono vincolate dal limite di gas di Ethereum. Viceversa, i rollup ottimistici che ri-eseguono le transazioni devono assicurarsi che una transazione del L2 abbia un limite di gas inferiore per emularne l'esecuzione entro una singola transazione di Ethereum.
+
+3. Parte della cauzione dell'assertore malevolo è assegnata all'autore della contestazione, mentre l'altra parte viene bruciata. La combustione previene la collusione tra validatori; se due validatori colludono per avviare delle contestazioni fasulle, perderanno comunque una parte considerevole dell'intero stake.
+
+4. La prova interattiva multi-turno richiede che entrambe le parti (l'assertore e l'autore della contestazione) compiano mosse entro la finestra di tempo specificata. La mancata azione prima della scadenza causa la perdita della contestazione dalla parte inadempiente.
+
+#### Perché le prove di frode contano per i rollup ottimistici {#fraud-proof-benefits}
+
+Le prove di frode sono importanti perché facilitano la _finalità senza fiducia_ nei rollup ottimistici. La finalità senza fiducia è una qualità dei rollup ottimistici che garantisce che una transazione, purché valida, sarà poi confermata.
+
+I nodi malevoli possono provare a ritardare la conferma di un blocco del rollup valido avviando delle contestazioni false. Tuttavia, le prove di frode dimostreranno infine la validità del blocco di rollup e ne causeranno la conferma.
+
+Questo si correla anche a un'altra proprietà di sicurezza dei rollup ottimistici: la validità della catena si basa sull'esistenza di _un_ nodo onesto. Il nodo onesto può far avanzare correttamente la catena pubblicando asserzioni valide o contestando quelle non valide. Indipendentemente dal caso, i nodi malevoli che ingaggiano contestazioni con il nodo onesto perderanno il proprio stake durante il processo di prova di frode.
+
+### Interoperabilità di L1/L2 {#l1-l2-interoperability}
+
+I rollup ottimistici sono progettati per l'interoperabilità con la Rete principale di Ethereum e per consentire agli utenti di passare messaggi e dati arbitrari tra L1 e L2. Sono inoltre compatibili con l'EVM, quindi puoi portare le [dapp](/developers/docs/dapps/) esistenti al rollup ottimistico o creare nuove dapp usando gli strumenti di sviluppo di Ethereum.
+
+#### 1. Spostamento di risorse {#asset-movement}
+
+##### Accedere al rollup
+
+Per usare un rollup ottimistico, gli utenti depositano ETH, token ERC-20 e altre risorse accettate nel contratto [ponte](/developers/docs/bridges/) del rollup sul L1. Il contratto ponte trasmetterà la transazione al L2, dove un importo di risorse equivalente è coniato e inviato all'indirizzo scelto dall'utente sul rollup ottimistico.
+
+Le transazioni generate dall'utente (come un deposito L1 > L2) sono solitamente accodate finché il sequenziatore non le invia nuovamente al contratto del rollup. Tuttavia, per preservare la resistenza alla censura, i rollup ottimistici consentono agli utenti di inviare una transazione direttamente al contratto di rollup on-chain se è stato ritardato oltre il tempo massimo consentito.
+
+Alcuni rollup ottimistici adottano un approccio più semplice per impedire che i sequenziatori censurino gli utenti. Qui, un blocco è definito da tutte le transazioni inviate al contratto del L1 dal blocco precedente (es. depositi) oltre alle transazioni elaborate sulla catena di rollup. Se un sequenziatore ignora una transazione del L1, pubblicherà la radice di stato errata (in modo dimostrabile); dunque, i sequenziatori non possono ritardare il messaggio generato dall'utente una volta pubblicati sul L1.
+
+##### Uscire dal rollup
+
+Il prelievo da un rollup ottimistico a Ethereum è più difficile a causa dello schema di prova di frode. Se un utente avvia una transazione L2 > L1 per prelevare i fondi in garanzia sul L1, devono attendere fino alla scadenza del periodo di contestazione, che dura circa sette giorni. Tuttavia, il processo di prelievo di per sé è abbastanza semplice.
+
+Dopo l'avvio della richiesta di prelievo sul rollup del L2, la transazione è inclusa nel batch successivo, mentre le risorse dell'utente sul rollup sono bruciate. Una volta pubblicato il batch su Ethereum, l'utente può calcolare una prova di Merkle per verificare l'inclusione della sua transazione di uscita nel blocco. Poi si tratta di attendere durante il periodo di ritardo per finalizzare la transazione sul L1 e prelevare i fondi alla Rete principale.
+
+Per evitare di attendere una settimana prima di prelevare i fondi a Ethereum, gli utenti dei rollup ottimistici possono impiegare un **fornitore di liquidità** (LP). Un fornitore di liquidità assume la proprietà di un prelievo del L2 in sospeso e paga l'utente sul L1 (in cambio di una commissione).
+
+I fornitori di liquidità possono verificare la validità della richiesta di prelievo dell'utente (eseguendo essi stessi la catena), prima di rilasciare i fondi. Così hanno la garanzia che la transazione sarà infine confermata (cioè, la finalità senza fiducia).
+
+#### 2. Compatibilità con l'EVM {#evm-compatibility}
+
+Per gli sviluppatori, il vantaggio dei rollup ottimistici è la loro compatibilità, o ancora meglio, equivalenza, con la [Macchina Virtuale di Ethereum (EVM)](/developers/docs/evm/). I rollup compatibili con l'EVM soddisfano le specifiche nel [Yellow Paper di Ethereum](https://ethereum.github.io/yellowpaper/paper.pdf) e supportano l'EVM al livello del cobytecode.
+
+La compatibilità dell'EVM nei rollup ottimistici ha i seguenti vantaggi:
+
+i. Gli sviluppatori possono migrare i contratti intelligenti esistenti su Ethereum alle catene dei rollup ottimistici senza dover estensivamente modificare le basi di codice. Questo può far risparmiare tempo ai team di sviluppo durante la distribuzione dei contratti intelligenti di Ethereum sul L2.
+
+ii. I team di sviluppatori e di progetto che usano i rollup ottimistici possono trarre vantaggio dall'infrastruttura di Ethereum. Questo include linguaggi di programmazione, librerie di codice, strumenti di test, software del client, infrastruttura di distribuzione e così via.
+
+Usare gli strumenti esistenti è importante perché questi sono stati ampiamente controllati, debuggati e migliorati negli anni. Rimuove inoltre la necessità per gli sviluppatori di Ethereum di imparare a costruire con uno stack di sviluppo interamente nuovo.
+
+#### 3. Chiamate del contratto tra catene {#cross-chain-contract-calls}
+
+Gli utenti (conti posseduti esternamente), interagiscono con i contratti del L2, inviando una transazione al contratto di rollup o faceendolo fare da un sequenziatore o un validatore. I rollup ottimistici, inoltre, consentono ai conti dei contratti su Ethereum di interagire con i contratti del L2, usando i contratti di collegamento per trasmettere messaggi e passare i dati dal L1 al L2. Questo significa che puoi programmare un contratto del L1 sulla Rete principale di Ethereum affinché invochi funzioni appartenenti a contratti su un rollup ottimistico del L2.
+
+Le chiamate del contratto tra catene si verificano in modo asincrono, il che significa che la chiamata è prima avviata e in seguito eseguita. Questo differisce dalle chiamate tra i due contratti su Ethereum, in cui la chiamata produce risultati immediatamente.
+
+Un esempio di chiamata del contratto tra catene è il deposito di token descritto precedentemente. Un contratto sul L1 mette in garanzia i token dell'utente e invia un messaggio a un contratto del L2 associato per coniare una quantità equivalente di token sul rollup.
+
+Poiché le chiamate del messaggio tra catene risultano nell'esecuzione del contratto, il mittente deve solitamente coprire i [costi del gas](/developers/docs/gas/) per il calcolo. Si consiglia di impostare un limite di gas elevato, per impedire alla transazione di fallire sulla catena di destinazione. Lo scenario di collegamento dei token è un buon esempio; se il lato del L1 della transazione (deposito del token) funziona, ma il lato dedl L2 (conio dei nuovi token) fallisce a causa del poco gas, il deposito diventa irrecuperabile.
+
+Infine, dovremmo notare che le chiamate di messaggio dal L2 al L1 tra i contratti, devono tenere conto dei ritardi (Le chiamate dal L1 al L2 sono tipicamente eseguite dopo qualche minuto). Questo perché i messaggi inviati alla Rete principale dai rollup ottimistici non possono essere eseguiti fino alla scadenza della finestra di contestazione.
+
+## Come funzionano le commissioni dei rollup ottimistici? {#how-do-optimistic-rollup-fees-work}
+
+I rollup ottimistici usano uno schema di commissioni sul gas, molto simile a Ethereum, per denotare quanto gli utenti pagano per la transazione. Le commissioni addebitate sui rollup ottimistici dipendono dai seguenti componenti:
+
+1. **Scrittura di stato**: i rollup ottimistici pubblicano i dati delle transazioni e le intestazioni dei blocchi (consistenti in: hash dell'intestazione del blocco precedente, radice di stato, radice del batch) su Ethereum come `calldata`. Il costo minimo di una transazione su Ethereum è di 21.000 gas. I rollup ottimistici possono ridurre il costo di scrittura della transazione al L1, raggruppando più transazioni in un singolo blocco (che ammortizza i 21.000 gas sulle numerose transazioni dell'utente).
+
+2. **`calldata`**: oltre la commissione di base della transazione, il costo di ogni scrittura di stato dipende dalla dimensione di `calldata` pubblicata al L1. I costi di `calldata` sono correntemente disciplinati dall'[EIP-1559](https://eips.ethereum.org/EIPS/eip-1559), che stipula un costo di 16 gas per i byte diversi da zero e 4 gas ber i byte pari a zero di `calldata`, rispettivamente. Per ridurre le commissioni dell'utente, gli operatori dei rollup comprimono le transazioni per ridurre il numero di byte di `calldata` pubblicati su Ethereum.
-Stai cercando una risorsa più adatta ai principianti? Consulta la nostra [introduzione al livello 2](/layer-2/).
+3. **Commissioni dell'operatore del L2**: questo è l'importo pagato al nodo del rollup come compenso per i costi di calcolo sostenuti nell'elaborazione delle transazioni, proprio come le commissioni del miner su Ethereum. I nodi del rollup addebitano commissioni di transazione inferiori, poiché gli L2 hanno capacità di elaborazione maggiori e non affrontano congestioni di rete che forzano i miner su Ethereum a dare priorità alle transazioni con commissioni maggiori.
-## Rollup ottimistici {#optimistic-rollups}
+I rollup ottimistici applicano diversi meccanismi per ridurre le commissioni per gli utenti, inclusi il raggruppamento delle transazioni e la compressione dei `calldata` per ridurre i costi di pubblicazione dei dati. Puoi controllare il [tracker delle commissioni del L2](https://l2fees.info/) per una panoramica in tempo reale dei costi d'uso dei rollup ottimistici basati su Ethereum.
-I rollup ottimistici si collocano parallelamente alla catena principale di Ethereum sul livello 2. Possono apportare miglioramenti a livello di scalabilità perché non eseguono calcoli di default. Invece, dopo una transazione, propongono il nuovo stato alla rete principale o "autenticano" la transazione.
+## Come fanno i rollup ottimistici a ridimensionare Ethereum? {#scaling-ethereum-with-optimistic-rollups}
-Con i rollup ottimistici, le transazioni sono scritte sulla catena principale di Ethereum come `calldata`, ottimizzandoli ulteriormente attraverso la riduzione del costo del carburante.
+Come spiegato, i rollup ottimistici pubblicano i dati delle transazioni compressi su Ethereum per garantire la disponibilità dei dati. La possibilità di comprimere i dati pubblicati sulla catena è essenziale per ridimensionare il volume su Ethereum coi rollup ottimistici.
-Siccome il calcolo è la parte lenta e costosa di Ethereum, i rollup ottimistici possono offrire miglioramenti a livello di scalabilità fino a 10-100x, a seconda della transazione. Questo numero aumenterà ancora di più con l'introduzione delle [shard chains](/upgrades/sharding), poiché saranno disponibili più dati se una transazione viene contestata.
+La catena principale di Ethereum pone limiti su quanti dati possono esser contenuti dai blocchi, denominati in unità di gas (la [dimensione media del blocco](/developers/docs/blocks/#block-size) è di 15 milioni di gas). Mentre ciò limita quanto gas è utilizzabile da ogni transazione, significa anche che possiamo aumentare le transazioni elaborate per blocco, riducendo i dati relativi alla transazione e migliorando direttamente la scalabilità.
-### Transazioni contestate {#disputing-transactions}
+I rollup ottimistici usano diverse tecniche per ottenere la compressione dei dati di transazione e migliorare i tassi TPS. Ad esempio, questo [articolo](https://vitalik.ca/general/2021/01/05/rollup.html) confronta i dati generati da una transazione utente di base (invio di ether) alla Rete principale, rispetto a quanti dati sono generati dalla stessa transazione su un rollup:
-I rollup ottimistici non calcolano la transazione, quindi occorre un meccanismo per assicurarsi che le transazioni siano legittime e non fraudolente. E qui entrano in gioco le prove di frode. Se qualcuno nota una transazione fraudolenta, il rollup esegue una prova di frode e avvia il calcolo della transazione utilizzando i dati di stato disponibili. Ciò significa che potresti avere tempi d'attesa maggiori per la conferma della transazione rispetto a un rollup ZK, poiché la transazione potrebbe essere contestata.
+| Parametro | Ethereum (L1) | Rollup (L2) |
+| ---------- | --------------------- | ------------ |
+| Nonce | ~3 | 0 |
+| Gasprice | ~8 | 0-0.5 |
+| Gas | 3 | 0-0.5 |
+| A | 21 | 4 |
+| Valore | 9 | ~3 |
+| Firma | ~68 (2 + 33 + 33) | ~0.5 |
+| Da | 0 (recuperato da sig) | 4 |
+| **Totale** | **~112 byte** | **~12 byte** |
-![Diagramma che mostra cosa succede quando avviene una transazione fraudolenta in un rollup ottimistico in Ethereum](./optimistic-rollups.png)
+Fare qualche calcolo approssimativo su queste cifre può aiutare a mostrare i miglioramenti della scalabilità derivati da un rollup ottimistico:
-Il carburante che serve per eseguire il calcolo della prova di frode viene rimborsato. Ben Jones di Optimism descrive così il metodo in uso:
+1. Le dimensioni obiettivo per ogni blocco sono di 15 milioni di gas e, verificare un byte di dati, costa 16 gas. Dividere la dimensione media del blocco per 16 gas (15.000.000/16), mostra che il blocco medio può contenere **937.500 byte di dati**.
+2. Se una transazione del rollup di base usa 12 byte, allora il blocco medio di Ethereum può elaborare **78.125 transazioni di rollup** (937.500/12) o **39 batch di rollup** (se ogni batch contiene una media di 2.000 transazioni).
+3. Se un nuovo blocco è prodotto su Ethereum ogni 15 secondi, allora le velocità di elaborazione del rollup ammonterebbero approssimativamente a **5.208 transazioni al secondo**. Ciò avviene dividendo il numero di transazioni di rollup di base che un blocco di Ethereum può contenere (**78.125**) per il tempo medio del blocco (**15 secondi**).
-"_chiunque sia in grado di eseguire un'azione che qualcuno dovrà provare come fraudolenta per proteggere i propri fondi richiede l'invio di un'obbligazione. In pratica, si bloccano alcuni ETH con la dichiarazione "Giuro di dire la verità"... Se non dico la verità e la frode viene confermata, il denaro sparisce (slashing). Non solo viene eseguito lo slashing di parte del denaro, ma un'altra parte pagherà il carburante necessario per effettuare la prova di frode_"
+Questa è una stima piuttosto ottimistica, dato che le transazioni del rollup ottimistico non possono verosimilmente comprendere un intero blocco su Ethereum. Tuttavia, può dare un'idea approssimativa di quanti guadagni in termini di scalabilità i rollup ottimistici possono offrire agli utenti di Ethereum (le implementazioni correnti offrono fino a 2.000 TPS).
-Perciò puoi vedere gli incentivi: i partecipanti vengono penalizzati se realizzano una frode e rimborsati se invece ne dimostrano una.
+L'introduzione dello [sharding dei dati](/upgrades/shard-chains/) su Ethereum dovrebbe migliorare la scalabilità nei rollup ottimistici. Poiché le transazioni del rollup devono condividere lo spazio del blocco con altre transazioni non del rollup, la loro capacità di elaborazione è limitata dal volume di dati sulla catena principale di Ethereum. Lo sharding aumenterà lo spazio disponibile per le catene del L2 per pubblicare dati per blocco, potenziando ulteriormente il volume sui rollup.
-### Pro e contro {#optimistic-pros-and-cons}
+### Pro e contro dei rollup ottimistici {#optimistic-rollups-pros-and-cons}
-| Pro | Contro |
-| ------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
-| Tutto quello si può fare con il livello 1 di Ethereum, si può fare anche con i rollup ottimistici, in quanto sono compatibili con EVM e Solidity. | Tempi di attesa lunghi per le transazioni sulla catena a causa di potenziali contestazioni di frodi. |
-| Tutti i dati della transazione sono memorizzati sulla catena di livello 1, il che significa sicurezza e decentralizzazione. | Un operatore può influenzare l'ordine della transazione. |
+| Pro | Contro |
+| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Offre enormi miglioramenti in termini di scalabilità senza sacrificare la sicurezza o la mancanza di fiducia. | Ritardi nella finalità della transazione a causa di potenziali contestazioni di frodi. |
+| I dati della transazione sono memorizzati sulla catena del livello 1, migliorando trasparenza, sicurezza, resistenza alla censura e decentralizzazione. | Gli operatori di rollup centralizzati (sequenziatori) possono influenzare l'ordine delle transazioni. |
+| La prova di frode garantisce la finalità senza fiducia e consente alle minoranze oneste di proteggere la catena. | Se non esistessero nodi onesti, un operatore malevolo potrebbe rubare i fondi pubblicando blocchi e impegni di stato non validi. |
+| Il calcolo delle prove di frode è aperto al nodo regolare del L2, a differenza delle prove di validità (usate nei rollup ZK), che richiedono hardware speciale. | Il modello di sicurezza si basa su almeno un nodo onesto che esegue le transazioni di rollup e invia le prove di frode per contestare le transizioni di stato non valide. |
+| I rollup traggono vantaggio dalla "liveness senza fiducia" (chiunque può forzare la catena ad avanzare eseguendo transazioni e pubblicando asserzioni) | Gli utenti devono attendere che scada il periodo di contestazione di una settimana prima di prelevare nuovamente i fondi su Ethereum. |
+| I rollup ottimistici si affidano a incentivi cripto-economici ben progettati, per aumentare la sicurezza sulla catena. | I rollup devono pubblicare tutti i dati delle transazioni su catena, il che può aumentare i costi. |
+| La compatibilità con l'EVM e Solidity consente agli sviluppatori di portare i contratti intelligenti nativi di Ethereum ai rollup o di usare strumenti esistenti per creare nuove dapp. | |
### Una spiegazione visiva dei rollup ottimistici {#optimistic-video}
-Guarda Finematics spiegare i rollup ottimistici:
+Preferisci un approccio visivo all'apprendimento? Guarda Finematics spiegare i rollup ottimistici:
### Utilizzo dei rollup ottimistici {#use-optimistic-rollups}
-Esistono molteplici implementazioni dei rollup Ottimistici che puoi integrare nelle tue dapp:
+Esistono molteplici implementazioni dei rollup ottimistici, che puoi integrare nelle tue dapp:
-**Lettura dei rollup ottimistici**
+## Ulteriori letture sui rollup ottimistici
-- [Tutto ciò che devi sapere sul rollup ottimistico](https://research.paradigm.xyz/rollups)
-- [EthHub sui rollup ottimsitici](https://docs.ethhub.io/ethereum-roadmap/layer-2-scaling/optimistic_rollups/)
-- [La guida essenziale ad Arbitrum](https://newsletter.banklesshq.com/p/the-essential-guide-to-arbitrum)
-- [Come funziona realmente il rollup ottimistico?](https://research.paradigm.xyz/optimism)
+- [How do optimistic rollups work (The complete guide)](https://www.alchemy.com/overviews/optimistic-rollups)
+- [Everything you need to know about Optimistic Rollup](https://research.paradigm.xyz/rollups)
+- [EthHub on optimistic rollups](https://docs.ethhub.io/ethereum-roadmap/layer-2-scaling/optimistic_rollups/)
+- [The Essential Guide to Arbitrum](https://newsletter.banklesshq.com/p/the-essential-guide-to-arbitrum)
+- [How does Optimism's Rollup really work?](https://research.paradigm.xyz/optimism)
- [OVM Deep Dive](https://medium.com/ethereum-optimism/ovm-deep-dive-a300d1085f52)
+- [What is the Optimistic Virtual Machine?](https://www.alchemy.com/overviews/optimistic-virtual-machine)
+- [How Do Optimistic Rollups Work? (The Complete Guide)](https://www.alchemy.com/overviews/optimistic-rollups)
diff --git a/src/content/translations/it/developers/docs/scaling/plasma/index.md b/src/content/translations/it/developers/docs/scaling/plasma/index.md
index c0a6c67f400..33afb98b266 100644
--- a/src/content/translations/it/developers/docs/scaling/plasma/index.md
+++ b/src/content/translations/it/developers/docs/scaling/plasma/index.md
@@ -6,24 +6,159 @@ incomplete: true
sidebarDepth: 3
---
-Una catena plasma è una blockchain separata ancorata alla catena principale di Ethereum, che utilizza le prove di frode (come i [rollup ottimistici](/developers/docs/scaling/optimistic-rollups/)) per arbitrare le dispute. Queste catene sono talvolta denominate catene "figlie", poiché sono essenzialmente delle copie più piccole della rete principale di Ethereum. Gli alberi di Merkle consentono la creazione di una pila illimitata di queste catene, che può aiutare a scaricare la larghezza di banda dalle catene principali (inclusa la rete principale). Da questi deriva la loro sicurezza attraverso [le prove di frode](/glossary/#fraud-proof), ed ogni catena figlia ha un proprio meccanismo per la convalida dei blocchi.
+Una catena Plasma è una blockchain separata collegata alla Rete principale di Ethereum ma che esegue le transazioni al di fuori della catena con il proprio meccanismo di validazione del blocco. Le catene Plasma sono solitamente note come catene "figlio", essenzialmente copie più piccole della Rete principale di Ethereum. Le catene Plasma usano le [prove di frode](/glossary/#fraud-proof) (come i [rollup ottimistici](/developers/docs/scaling/optimistic-rollups/)) per arbitrare le dispute.
+
+Gli alberi di Merkle consentono la creazione di una pila illimitata di queste catene che possono funzionare per scaricare la larghezza di banda dalle catene padre (inclusa la Rete principale di Ethereum). Tuttavia, benché queste catene derivino una certa sicurezza da Ethereum (tramite le prove di frode), la loro sicurezza ed efficienza sono influenzate da numerose limitazioni di progettazione.
## Prerequisiti {#prerequisites}
-Dovresti avere una buona comprensione di tutti gli argomenti fondamentali ed una comprensione di alto livello della [scalabilità di Ethereum](/developers/docs/scaling/). L'implementazione di soluzioni di scalabilità, come Plasma, è un argomento avanzato in quanto la tecnologia è meno testata nel campo e continua ad essere oggetto di ricerca e sviluppo.
+Dovresti avere una buona conoscenza di tutti gli argomenti fondamentali e una comprensione di alto livello del [ridimensionamento di Ethereum](/developers/docs/scaling/).
+
+## Cos'è Plasma?
+
+Plasma è un quadro per migliorare la scalabilità nelle blockchain pubbliche come Ethereum. Come descritto nel [whitepaper di Plasma](http://plasma.io/plasma.pdf) originale, le catene Plasma sono costruite su un'altra blockchain (detta "catena radice"). Ogni "catena figlia" si estende dalla catena di radice ed è generalmente gestita da un contratto intelligente, distribuito sulla catena madre.
+
+Le funzioni del contratto Plasma, tra le altre cose, fungono da [ponte](/developers/docs/bridges/), consentendo agli utenti di spostare risorse tra la Rete principale di Ethereum e la catena Plasma. Sebbene questo le renda simili alle [sidechain](/developers/docs/scaling/sidechains/), le catene Plasma beneficiano, almeno in una certa misura, della sicurezza della Rete principale di Ethereum. Questo le distingue dalle sidechain, che sono le uniche responsabili della propria sicurezza.
+
+## Come funziona Plasma?
+
+I componenti di base del quadro Plasma sono:
+
+### Calcolo off-chain {#off-chain-computation}
+
+La velocità di elaborazione attuale di Ethereum è limitata a circa 15-20 transazioni al secondo, riducendo la possibilità a breve termine di ridimensionamento per gestire più utenti. Questo problema esiste principalmente perché il [meccanismo di consenso](/developers/docs/consensus-mechanisms/) di Ethereum richiede molti nodi peer-to-peer per verificare ogni aggiornamento allo stato della blockchain.
+
+Sebbene il meccanismo di consenso di Ethereum sia necessario per la sicurezza, potrebbe non applicarsi a ogni caso d'uso. Ad esempio, Alice potrebbe non aver bisogno dei suoi pagamenti giornalieri a Bob per una tazza di caffè verificata dall'intera rete di Ethereum, poiché esiste una certa fiducia tra entrambe le parti.
+
+Plasma suppone che la Rete principale di Ethereum non necessiti di verificare tutte le transazioni. Invece, possiamo elaborare transazioni al di fuori della Rete principale, liberando i nodi dall'obbligo di convalidare ogni transazione.
+
+Il calcolo off-chain è necessario perché le catene Plasma possono sfruttare al meglio velocità e costo. Ad esempio, una catena Plasma potrebbe usare, e molto spesso usa, un singolo "operatore" per gestire l'ordine e l'esecuzione delle transazioni. Con una sola entità che verifica le transazioni, i tempi di elaborazione su una catena Plasma sono più veloci sulla Rete principale di Ethereum.
+
+### Impegni di stato {#state-commitments}
+
+Sebbene Plasma esegua le transazioni al di fuori della catena, queste sono regolate sul livello di esecuzione principale di Ethereum; in caso contrario, le catene Plasma non potrebbero trarre vantaggio dalle garanzie di sicurezza di Ethereum. Ma finalizzare le transazioni off-chain senza conoscere lo stato della catena Plasma corromperebbe il modello di sicurezza e consentirebbe la proliferazione di transazioni non valide. Per questo l'operatore, l'entità responsabile della produzione dei blocchi sulla catena Plasma deve pubblicare periodicamente degli "impegni di stato" su Ethereum.
+
+Uno [schema di impegno](https://en.wikipedia.org/wiki/Commitment_scheme) è una tecnica crittografica per assumersi l'impegno verso un valore o istruzione senza rivelarla all'altra parte. Gli impegni sono "vincolanti" nel senso che non puoi cambiare il valore o l'istruzione una volta che te ne sei assunto l'impegno. Gli impegni di stato in Plasma prendono la forma di "radici di Merkle" (derivate da un [albero di Merkle](/whitepaper/#merkle-trees)), che l'operatore invia a intervalli al contratto Plasma sulla catena di Ethereum.
+
+Le radici di Merkle sono primitive crittografiche che consentono la compressione di grandi quantità di informazioni. Una radice di Merkle (anche detta una "radice blocco", in questo caso), potrebbe rappresentare tutte le transazioni in un blocco. Le radici di Merkle rendono inoltre più facile verificare che una piccola parte di dati faccia parte del set di dati più ampio. Per esempio, un utente può produrre una [prova di Merkle](/developers/tutorials/merkle-proofs-for-offline-data-integrity/#main-content) per dimostrare l'inclusione di una transazione in un blocco specifico.
+
+Le radici di Merkle sono importanti per fornire informazioni sullo stato al di fuori della catena a Ethereum. Puoi pensare alle radici di Merkle come "punti di salvataggio": l'operatore sta dicendo che "Questo è lo stato della catena Plasma nel momento x e questa è la radice di Merkle che ne è la prova". L'operatore si sta assumendo un impegno verso lo _stato attuale_ della catena Plasma con una radice di Merkle, motivo per cui è chiamato "impegno di stato".
+
+### Entrate e uscite {#entries-and-exits}
+
+Perché gli utenti di Ethereum sfruttino Plasma, è necessario un meccanismo per spostare i fondi tra la Rete principale e le catene Plasma. Non possiamo però inviare arbitrariamente ether a un indirizzo sulla catena Plasma: queste catene sono incompatibili, quindi, la transazione fallirebbe o porterebbe alla perdita dei fondi.
+
+Plasma usa un contratto principale eseguito su Ethereum per elaborare le entrate e uscite dell'utente. Questo contratto principale è inoltre responsabile di monitorare gli impegni di stato (spiegati in precedenza) e di punire il comportamento disonesto tramite prove di frode (maggiori informazioni a riguardo in seguito).
+
+#### Entrare nella catena Plasma {#entering-the-plasma-chain}
+
+Per entrare nella catena Plasma, Alice (l'utente) dovrà depositare ETH o qualsiasi token ERC-20 nel contratto Plasma. L'operatore di Plasma, che guarda i depositi del contratto, ricrea un importo pari al deposito iniziale di Alice e lo rilascia al suo indirizzo sulla catena Plasma. Alice deve attestare per ricevere i fondi sulla catena figlio e può poi usarli per le transazioni.
+
+#### Uscire dalla catena Plasma {#exiting-the-plasma-chain}
+
+Uscire dalla catena Plasma è più complesso che entrarvi per diversi motivi. Il principale è che, mentre Ethereum ha informazioni sullo stato della catena Plasma, non può verificare se le informazioni siano vere o no. Un utente malevolo potrebbe fare un'asserzione errata ("Ho 1000 ETH") e riuscire a fornire prove fasulle per sostenerla.
+
+Per impedire i prelievi malevoli, è introdotto un "periodo di contestazione". Durante il periodo di contestazione (solitamente una settimana), chiunque può contestare una richiesta di prelievo usando una prova di frode. Se la contestazione ha successo, allora la richiesta di prelievo è negata.
+
+Tuttavia, di solito gli utenti sono onesti e fanno affermazioni corrette sui fondi che posseggono. In questo scenario, Alice avvierà una richiesta di prelievo sulla catena radice (Ethereum) inviando una transazione al contratto Plasma.
+
+Deve anche fornire una prova di Merkle che verifichi che una transazione che ha creato i suoi fondi sulla catena Plasma è stata inclusa in un blocco. Questo è necessario per le iterazioni di Plasma, come [Plasma MVP](https://www.learnplasma.org/en/learn/mvp.html), che usa un modello di [output delle transazioni non speso(UTXO)](https://en.wikipedia.org/wiki/Unspent_transaction_output).
+
+Altre, come [Plasma Cash](https://www.learnplasma.org/en/learn/cash.html), rappresentano i fondi come i [token non fungibili](/developers/docs/standards/tokens/erc-721/) invece degli UTXO. Prelevare, in questo caso, richiede la prova di proprietà dei token sulla catena Plasma. Ciò avviene inviando le ultime due transazioni relative al token e fornendo una prova di Merkle che verifichi l'inclusione di queste transazioni in un blocco.
+
+L'utente deve anche aggiungere una cauzione alla richiesta di prelievo come garanzia di comportamento onesto. Se l'autore di una contestazione prova che la richiesta di prelievo di Alice non è valida, la sua cauzione viene decurtata e una parte di essa va all'autore della contestazione come ricompensa.
+
+Se il periodo di contestazione scade senza che nessuno fornisca una prova di frode, la richiesta di prelievo di Alice è considerata valida, consentendole di recuperare i depositi dal contratto Plasma su Ethereum.
+
+### Arbitrato delle dispute {#dispute-arbitration}
+
+Come ogni blockchain, le catene Plasma necessitano di un meccanismo per imporre l'integrità delle transazioni nel caso in cui i partecipanti inizino ad agire in modo malevolo (ad es. doppia spesa di fondi). A tal fine, le catene Plasma usano le prove di frode per arbitrare le dispute relative alla validità delle transizioni di stato e penalizzare i cattivi comportamenti.
+
+Una prova di frode è semplicemente l'affermazione che una particolare transizione di stato non è valida. Un esempio è se un utente (Alice) prova a spendere gli stessi fondi due volte. Forse ha speso l'UTXO in una transazione con Bob e desidera spendere lo stesso UTXO (che ora è di Bob) in un'altra transazione.
+
+Per impedire il prelievo, Bob costruirà una prova di frode fornendo prova della spesa di tale UTXO da parte di Alice in una transazione precedente e una prova di Merkle dell'inclusione della transazione in un blocco. Lo stesso processo funziona in Plasma Cash: Bob dovrebbe fornire prova che Alice abbia precedentemente trasferito i token che sta provando a prelevare.
+
+Se la contestazione di Bob ha successo, la richiesta di prelievo di Alice viene annullata. Tuttavia, questo approccio si basa sulla possibilità per Bob di guardare la catena alla ricerca di richieste di prelievo. Se Bob è offline, allora Alice può elaborare il prelievo malevolo una volta scaduto il periodo di contestazione.
+
+## Il problema dell'uscita di massa in Plasma {#the-mass-exit-problem-in-plasma}
+
+Il problema dell'uscita di massa si verifica quando un gran numero di utenti prova a prelevare da una catena Plasma allo stesso momento. L'esistenza di questo problema ha a che fare con uno dei più grandi problemi di Plasma: la **non disponibilità dei dati**.
+
+La disponibilità dei dati è la capacità di verificare che le informazioni per un blocco proposto siano state realmente pubblicate sulla rete della blockchain. Un blocco è "non disponibile" se il produttore pubblica il blocco stesso ma trattiene i dati usati per crearlo.
+
+I blocchi devono essere disponibili se i nodi devono essere in grado di scaricare il blocco e verificare la validità delle transazioni. Le blockchain assicurano la disponibilità dei dati obbligando i produttori dei blocchi a pubblicare tutti i dati delle transazioni on-chain.
+
+La disponibilità dei dati aiuta anche a proteggere i protocolli di ridimensionamento off-chain che si basano sul livello di base di Ethereum. Forzando gli operatori su queste catene a pubblicare i dati delle transazioni su Ethereum, chiunque può contestare i blocchi non validi costruendo prove di frode facendo riferimento allo stato corretto della catena.
+
+Le catene Plasma memorizzano principalmente i dati delle transazioni con l'operatore e **non pubblicano alcun dato sulla Rete principale** (vale a dire, oltre agli impegni di stato periodici). Questo significa che gli utenti devono affidarsi all'operatore per fornire i dati del blocco, se devono creare delle prove di frode che constino le transazioni non valide. Se questo sistema funziona, allora gli utenti possono sempre usare le prove di frode per proteggere i fondi.
+
+Il problema nasce quando l'operatore, non un utente qualsiasi, è la parte che agisce in modo malevolo. Poiché l'operatore ha il controllo esclusivo della blockchain, ha un maggiore incentivo a portare avanti transizioni di stato non valide su una scala maggiore, come rubare i fondi appartenenti ad utenti sulla catena Plasma.
+
+In questo caso, usare il classico sistema basato sulla prova di frode non può funzionare. L'operatore potrebbe facilmente creare una transazione non valida trasferendo i fondi di Alice e Bob al proprio portafoglio e nascondendo i dati necessari per creare la prova di frode. Questo è possibile perché l'operatore non è tenuto a rendere disponibili i dati agli utenti o alla Rete principale.
+
+Dunque, la soluzione più ottimistica è quella di tentare una "uscita di massa" degli utenti dalla catena Plasma. L'uscita di massa rallenta il piano dell'operatore malevolo di rubare fondi e fornisce una certa misura di protezione agli utenti. Le richieste di prelievo sono ordinate in base al momento di creazione di ogni UTXO (o token), impedendo agli operatori malevoli dal danneggiare gli utenti onesti.
+
+Ciò nonostante, ci serve ancora di un modo per verificare la validità delle richieste di prelievo durante un'uscita di massa, per impedire a individui opportunisti di approfittare dell'elaborazione caotica delle uscite non valide. La soluzione è semplice: richiedere agli utenti di pubblicare l'ultimo **stato valido della catena** per far uscire il proprio denaro.
+
+Ma anche questo approccio ha dei problemi. Per esempio, se tutti gli utenti su una catena Plasma devono uscire (il che è possibile nel caso di un operatore malevolo), allora l'intero stato valido della catena Plasma deve essere scaricato subito sul livello di base di Ethereum. Con le dimensioni arbitrarie delle catene Plasma (elevato volume = più dati) e coi vincoli sulle velocità di elaborazione di Ethereum, questa non è una soluzione ideale.
+
+Sebbene i giochi di fuga sembrino divertenti in teoria, le "fughe" di massa nella vita reale potrebbero innescare congestioni dell'intera rete su Ethereum stessa. Oltre a danneggiare la funzionalità di Ethereum, un'uscita di massa mal coordinata comporta che gli utenti potrebbero non riuscire a prelevare i fondi prima che l'operatore abbia drenato ogni conto sulla catena di Plasma.
+
+## Pro e contro di Plasma {#pros-and-cons-of-plasma}
+
+| Pro | Contro |
+| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Volumi elevati d'offerta e basso costo per transazione. | Non supporta il calcolo generale (non può eseguire i contratti intelligenti. Solo trasferimenti di base di token, scambi e pochi altri tipi di transazione sono supportati tramite logica dei predicati. |
+| Ottima per transazioni tra utenti arbitrari (non c'è sovraccarico per coppia di utenti se entrambi sono sulla catena Plasma) | Necessità di monitorare la rete periodicamente (requisito di liveness) o delegare la responsabilità a qualcun altro per garantire la sicurezza dei fondi. |
+| Le catene Plasma sono adattabili a casi d'uso specifici non correlati alla catena principale. Chiunque, incluse le aziende, può personalizzare i contratti intelligenti di Plasma per fornire un'infrastruttura scalabile che funzioni in diversi contesti. | Fa affidamento ad uno o più operatori per archiviare i dati e fornirli su richiesta. |
+| Riduce il carico sulla Rete principale di Ethereum spostando calcoli e archiviazione al di fuori della catena. | I prelievi sono ritardati di diversi giorni per consentire eventuali contestazioni. Per risorse fungibili, questo può essere mitigato da provider di liquidità, ma c'è sempre associato un costo di capitale. |
+| | Se troppi utenti provano a uscire simultaneamente, la Rete principale di Ethereum potrebbe congestionarsi. |
+
+## Protocolli di ridimensionamento di Plasma vs. livello 2 {#plasma-vs-layer-2}
+
+Sebbene una volta Plasma fosse considerato una soluzione di ridimensionamento utile per Ethereum, da allora è stato abbandonato in favore dei [protocolli di ridimensionamento del livello 2 (L2)](/layer-2/). Le soluzioni di ridimensionamento del L2 rimediano a diversi problemi di Plasma:
+
+### Efficienza {#efficiency}
+
+I [rollup a conoscenza zero](/developers/docs/scaling/zk-rollups) generano prove crittografiche della validità di ogni batch di transazioni elaborato al di fuori della catena. Questo impedisce agli utenti (e agli operatori) di portare avanti transizioni di stato non valide, eliminando il bisogno di periodi di contestazione e fughe di massa. Significa anche che gli utenti non devono guardare periodicamente la catena per proteggere i propri fondi.
+
+### Supporto per i contratti intelligenti {#support-for-smart-contracts}
+
+Un altro problema con il quadro di Plasma era [l'incapacità di supportare l'esecuzione dei contratti intelligenti di Ethereum](https://ethresear.ch/t/why-smart-contracts-are-not-feasible-on-plasma/2598/4). Di conseguenza, gran parte delle implementazioni di Plasma erano prevalentemente create per pagamenti semplici o lo scambio di token ERC-20.
+
+Viceversa, i rollup ottimistici sono compatibili con la [Macchina Virtuale di Ethereum](/developers/docs/evm/) e possono eseguire [i contratti intelligenti](/developers/docs/smart-contracts/) nativi di Ethereum, rendendoli una soluzione utile e _sicura_ per il ridimensionamento delle [applicazioni decentralizzate](/developers/docs/dapps/). Similmente, sono in corso piani per [creare un'implementazione a conoscenza zero dell'EVM (zkEVM)](https://ethresear.ch/t/a-zk-evm-specification/11549) che consentirebbe ai rollup ZK di elaborare la logica arbitraria e di eseguire contratti intelligenti.
+
+### Non disponibilità dei dati {#data-unavailability}
+
+Come spiegato in precedenza, Plasma soffre di un problema di disponibilità dei dati. Se un operatore malevolo portasse avanti una transizione non valida sulla catena Plasma, gli utenti non potrebbero contestarla poiché l'operatore può trattenere i dati necessari a creare la prova di frode. I rollup risolvono questo problema forzando gli operatori a pubblicare i dati delle transazioni su Ethereum, consentendo a chiunque di verificare lo stato della catena e creare prove di frode se necessario.
+
+### Problema di uscita di massa {#mass-exit-problem}
+
+I rollup ZK e ottimistici risolvono entrambi il problema di uscita di massa di Plasma in vari modi. Ad esempio, un rollup ZK si basa su meccanismi crittografici che assicurano che gli operatori non possano rubare i fondi dell'utente in alcuno scenario.
+
+Analogamente, i rollup ottimistici impongono un periodo di ritardo sui prelievi durante cui chiunque può avviare una contestazione e impedire le richieste di prelievo malevole. Sebbene questo sia simile a Plasma, la differenza è che i verificatori hanno accesso ai dati necessari a creare le prove di frode. Dunque, non serve che gli utenti del rollup diano luogo a un frenetico "fuggi fuggi" per migrare verso la Rete principale di Ethereum.
+
+## In che modo Plasma differisce dalle sidechain e dallo sharding? {#plasma-sidechains-sharding}
+
+Plasma, sidechain e sharding sono abbastanza simili perché si connettono tutti alla Rete principale di Ethereum in qualche modo. Tuttavia, il livello e la forza di queste connessioni variano, il che influenza le proprietà di sicurezza di ciascuna soluzione di ridimensionamento.
+
+### Plasma vs sidechain {#plasma-vs-sidechains}
+
+Una [sidechain](/developers/docs/scaling/sidechains/) è una blockchain gestita in modo indipendente connessa alla Rete principale di Ethereum tramite un ponte bidirezionale. I [ponti](/bridges/) consentono agli utenti di scambiare token tra le due blockchain per effettuare transazioni sulla sidechain, riducendo la congestione sulla Rete principale di Ethereum e aumentando la scalabilità. Le sidechain usano un meccanismo di consenso separato e sono tipicamente molto più piccole della Rete principale di Ethereum. Ne risulta che il collegamento delle risorse a queste catene coinvolge un maggiore rischio; data la mancanza di garanzie di sicurezza ereditate dalla Rete principale di Ethereum nel modello della sidechain, gli utenti rischiano di perdere fondi in un attacco alla sidechain.
+
+Viceversa, le catene Plasma derivano la propria sicurezza dalla Rete principale. Questo le rende considerevolmente più sicure delle sidechain. Sia le sidechain che le catene Plasma possono avere diversi protocolli di consenso, ma la differenza è che le seconde pubblicano radici di Merkle per ogni blocco sulla Rete principale di Ethereum. Le radici blocco sono piccole informazioni utilizzabili per verificare le informazioni sulle transazioni che si verificano su una catena Plasma. Se si verifica un attacco su una catena Plasma, gli utenti possono prelevare in sicurezza i propri fondi sulla Rete principale usando le prove appropriate.
+
+### Plasma vs sharding {#plasma-vs-sharding}
+
+Sia le catene Plasma che le [shard chain](/upgrades/sharding/) pubblicano periodicamente prove crittografiche sulla Rete principale di Ethereum. Tuttavia, le due catene hanno proprietà di sicurezza diverse.
-## Pro e contro {#pros-and-cons}
+Le shard chain inviano "intestazioni di collazione" alla Rete principale contenenti informazioni dettagliate su ogni frammento di dati. I nodi sulla Rete principale verificano e applicano la validità dei frammenti di dati, riducendo la possibilità di transazioni di shard non valide e proteggendo la rete dalle attività malevole.
-| Pro | Contro |
-| ----------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| Volumi elevati, basso costo per transazione. | Non supporta il calcolo generale. Solo trasferimenti di base di token, scambi e pochi altri tipi di transazione sono supportati tramite logica dei predicati. |
-| Ottima per transazioni tra utenti arbitrari (non c'è sovraccarico per coppia di utenti se entrambi sono sulla catena plasma). | Necessità di monitorare la rete periodicamente (requisito di liveness) o delegare la responsabilità a qualcun altro per garantire la sicurezza dei fondi. |
-| | Fa affidamento ad uno o più operatori per archiviare i dati e fornirli su richiesta. |
-| | I prelievi sono ritardati di diversi giorni per consentire eventuali contestazioni. Per gli attivi fungibili, questo aspetto può essere mitigato da fornitori di liquidità, ma è sempre presente un costo di capitale. |
+Plasma è differente perché la Rete principale riceve solo informazioni minime sullo stato delle catene figlio. Questo significa che la Rete principale non può verificare efficientemente le transazioni condotte sulle catene figlio, rendendole meno sicure.
### Usare Plasma {#use-plasma}
-Diversi progetti forniscono implementazioni di Plasma che puoi integrare nelle tue dApp:
+Diversi progetti forniscono implementazioni di Plasma che puoi integrare nelle tue dapp:
- [OMG Network](https://omg.network/)
- [Polygon](https://polygon.technology/) (precedentemente Matic Network)
@@ -34,5 +169,9 @@ Diversi progetti forniscono implementazioni di Plasma che puoi integrare nelle t
- [EthHub su Plasma](https://docs.ethhub.io/ethereum-roadmap/layer-2-scaling/plasma/)
- [Learn Plasma](https://www.learnplasma.org/en/)
+- [A quick reminder of what "shared security" means and why it's so important](https://old.reddit.com/r/ethereum/comments/sgd3zt/a_quick_reminder_of_what_shared_security_means/)
+- [Sidechains vs Plasma vs Sharding](https://vitalik.ca/general/2019/06/12/plasma_vs_sharding.html)
+- [Understanding Plasma, Part 1: The Basics](https://www.theblockcrypto.com/amp/post/10793/understanding-plasma-part-1-the-basics)
+- [The Life and Death of Plasma](https://medium.com/dragonfly-research/the-life-and-death-of-plasma-b72c6a59c5ad#)
-_Conosci una risorsa pubblica che ti è stata utile? Modifica questa pagina e aggiungila!_
+_Conosci una risorsa della community che ti è stata utile? Modifica questa pagina e aggiungila!_
diff --git a/src/content/translations/it/developers/docs/scaling/sidechains/index.md b/src/content/translations/it/developers/docs/scaling/sidechains/index.md
index fa28bc9f66e..0e9e42cf368 100644
--- a/src/content/translations/it/developers/docs/scaling/sidechains/index.md
+++ b/src/content/translations/it/developers/docs/scaling/sidechains/index.md
@@ -1,38 +1,74 @@
---
title: Sidechain
-description: Un'introduzione alle sidechain come soluzione di scalabilità, attualmente utilizzate dalla comunità Ethereum.
+description: Un'introduzione alle sidechain come soluzione di ridemensionamento attualmente utilizzato dalla community di Ethereum.
lang: it
incomplete: true
sidebarDepth: 3
---
-Una sidechain è una blockchain separata che viene eseguita parallelamente alla rete principale di Ethereum e funziona in modo indipendente. Ha un proprio [algoritmo di consenso](/developers/docs/consensus-mechanisms/) (ad esempio [Proof of Authority](https://wikipedia.org/wiki/Proof_of_authority), [Proof Of Stake delegato](https://en.bitcoinwiki.org/wiki/DPoS), [Tolleranza ai Guasti Bizantini](https://decrypt.co/resources/byzantine-fault-tolerance-what-is-it-explained) e così via). È collegata alla rete principale da un ponte bidirezionale.
+Una sidechain è una blockchain separata eseguita in modo indipendente da Ethereum ed è connessa alla Rete principale di Ethereum da un ponte bidirezionale. Le sidechain possono avere parametri del blocco e [algoritmi di consenso](/developers/docs/consensus-mechanisms/) separati, spesso progettati per l'elaborazione efficiente delle transazioni. Usare una sidechain comporta compromessi, però, poiché non eredita le proprietà di sicurezza di Ethereum. A differenza dalle [soluzioni di ridimensionamento del livello 2](/layer-2/), le sidechain non ri-pubblicano i cambiamenti di stato e i dati della transazione nella Rete principale di Ethereum.
-Ciò che rende una sidechain particolarmente eccitante è che la catena funziona come la catena principale di Ethereum perché è basata su [EVM](/developers/docs/evm/). Non usa Ethereum: è Ethereum. Ciò significa che, se vuoi usare la tua [dApp](/developers/docs/dapps/) su una sidechain, è sufficiente distribuire il tuo codice su questa sidechain. Assomiglia e funziona proprio come la rete principale: scrivi i contratti in Solidity e interagisci con la catena tramite l'API Web3.
+Inoltre, le sidechain sacrificano alcune misure di decentralizzazione o di sicurezza per ottenere un volume elevato ([trilemma di scalabilità](https://vitalik.ca/general/2021/05/23/scaling.html)). Tuttavia, Ethereum, si impegna nel ridimensionamento senza compromettere la decentralizzazione e la sicurezza come definito nella [dichiarazione della vision](/upgrades/vision/) per gli aggiornamenti.
-## Prerequisiti {#prerequisites}
+## Come funzionano le sidechain? {#how-do-sidechains-work}
-Dovresti avere una buona comprensione di tutti gli argomenti fondamentali ed una comprensione di alto livello della [scalabilità di Ethereum](/developers/docs/scaling/).
+Le sidechain sono blockchain indipendenti, con cronologie, tabelle di marcia di sviluppo e considerazioni di progettazione differenti. Sebbene una sidechain possa condividere alcune somiglianze a livello superficiale con Ethereum, ha diverse funzionalità distintive.
-## Pro e contro {#pros-and-cons}
+### Algoritmi di consenso {#consensus-algorithms}
-| Pro | Contro |
-| ------------------------------------------------------ | --------------------------------------------------------------------------------------------------------- |
-| Tecnologia consolidata. | Meno decentralizzata. |
-| Supporta il calcolo generale, compatibilità con l'EVM. | Usa un meccanismo di consenso separato. Non protetta dal livello 1 (quindi tecnicamente non è livello 2). |
-| | Un quorum di validatori della sidechain può commettere frodi. |
+Una delle qualità che rendono uniche le sidechain (ossia diverse da Ethereum), è l'algoritmo di consenso utilizzato. Le sidechain non si affidano a Ethereum per il consenso e possono scegliere protocolli di consenso alternativi adatti alle loro esigenze. Alcuni esempi di algoritmi di consenso usati sulle sidechain includono:
+
+- [Proof of Authority](https://wikipedia.org/wiki/Proof_of_authority)
+- [proof-of-stake delegato](https://en.bitcoinwiki.org/wiki/DPoS)
+- [Tolleranza ai guasti bizantini](https://decrypt.co/resources/byzantine-fault-tolerance-what-is-it-explained).
+
+Come Ethereum, le sidechain hanno nodi di convalida che verificano ed elaborano le transazioni, producono blocchi e memorizzano lo stato della blockchain. I validatori sono inoltre responsabili del mantenimento del consenso lungo la rete e della sua protezione da attacchi malevoli.
+
+#### Parametri del blocco {#block-parameters}
+
+Ethereum pone dei limiti ai [tempi del blocco](/developers/docs/blocks/#block-time) (cioè, il tempo impiegato per produrre nuovi blocchi) e alle [dimensioni del blocco](/developers/docs/blocks/#block-size) (cioè, la quantità di dati contenuti per blocco denominata in gas). Al contrario, le catene secondarie adottano spesso parametri differenti, come tempi del blocco ridotti e limiti di gas superiori, per ottenere un volume elevato, transazioni veloci e commissioni basse.
+
+Sebbene ciò abbia alcuni vantaggi, comporta implicazioni critiche per la decentralizzazione e la sicurezza della rete. I parametri del blocco, come tempi di blocco veloci e grandi dimensioni del blocco, aumentano la difficoltà di eseguire un nodo completo, rendendo pochi "supernodi" responsabili della protezione della catena. In tale scenario, la possibilità di collusione del validatore o di un'acquisizione malevola della catena aumenta.
+
+Perché le blockchain scalino senza danneggiare la decentralizzazione, l'esecuzione di un nodo deve essere aperta a tutti, non necessariamente alle parti con hardware specializzato. Ecco perché sono in corso sforzi per assicurarsi che tutti possano [eseguire un nodo completo](/developers/docs/nodes-and-clients/#why-should-i-run-an-ethereum-node) sulla rete Ethereum.
+
+### Compatibilità con l'EVM {#evm-compatibility}
+
+Alcune sidechain sono compatibili con l'EVM e possono eseguire i contratti sviluppati per la [Macchina Virtuale di Ethereum (EVM)](/developers/docs/evm/). Le catene secondarie compatibili con l'EVM supportano i contratti intelligenti [scritti in Solidity](/developers/docs/smart-contracts/languages/), nonché altri linguaggi di contratti intelligenti dell'EVM, il che significa che i contratti intelligenti scritti per la Mainnet di Ethereum funzioneranno anche sulle catene secondarie compatibili con l'EVM.
+
+Questo significa che se vuoi usare la tua [dapp](/developers/docs/dapps/) su una catena secondaria, devi solo distribuire il tuo [contratto intelligente](/developers/docs/smart-contracts/) a tale catena secondaria. Assomiglia e funziona proprio come la Rete principale: scrivi i contratti in Solidity e interagisci con la catena tramite RPC della sidechain.
+
+Poiché le sidechain sono compatibili con l'EVM, sono considerate un'utile [soluzione di ridimensionamento](/developers/docs/scaling/) per le dapp native di Ethereum. Con la tua dapp su una catena secondaria, gli utenti possono godere di commissioni sul gas inferiori e transazioni più veloci, specialmente se la Rete Principale è congestionata.
+
+Tuttavia, come spiegato precedentemente, usare una sidechain comporta compromessi significativi. Ogni sidechain è responsabile per la propria sicurezza e non eredita le proprietà di sicurezza di Ethereum. Questo aumenta la possibilità di comportamenti malevoli che possono influenzare i tuoi utenti o metterne a rischio i fondi.
+
+### Spostamento di risorse {#asset-movement}
+
+Perché una blockchain separata diventi una sidechain alla Rete principale di Ethereum, deve avere la possibilità di facilitare il trasferimento di risorse da e verso la Rete principale di Ethereum. Questa interoperabilità con Ethereum è ottenuta usando un ponte della blockchain. I [ponti](/bridges/) usano i contratti intelligenti distribuiti sulla Rete Principale di Ethereum e su una catena secondaria per controllare il collegamento dei fondi tra di essi.
+
+Sebbene i ponti aiutino gli utenti a spostare fondi tra Ethereum e la sidechain, le risorse non vengono spostate fisicamente tra le due catene. Invece, i meccanismi che coinvolgono tipicamente la coniatura e la bruciatura sono usati per trasferire valore tra le catene. Maggiori informazioni su [come funzionano i ponti](/developers/docs/bridges/#how-do-bridges-work).
+
+## Pro e contro delle sidechain {#pros-and-cons-of-sidechains}
+
+| Pro | Contro |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------- |
+| La tecnologia sottostante le sidechain è consolidata e beneficia dell'ampia ricerca e dai miglioramenti nella progettazione. | Le sidechain rinunciano a una certa misura di decentralizzazione e mancanza di fiducia in cambio della scalabilità. |
+| Le sidechain supportano il calcolo generale e offrono compatibilità con l'EVM (possono eseguire dapp native di Ethereum). | Una sidechainusa un meccanismo di consenso e non beneficia delle garanzie di sicurezza di Ethereum. |
+| Le sidechain usano modelli di consenso differenti per elaborare efficientemente le transazioni e ridurre le commissioni di transazione per gli utenti. | Le sidechain richiedono ipotesi di fiducia più elevata (ad es. un quorum di validatori malevoli della sidechain può commettere frode). |
+| Le sidechain compatibili con l'EVM consentono alle dapp di espandere il proprio ecosistema. | |
### Usare la sidechain {#use-sidechains}
-Diversi progetti forniscono implementazioni di sidechain che puoi integrare nelle tue dApp:
+Diversi progetti forniscono implementazioni di sidechain che puoi integrare nelle tue dapp:
- [Polygon PoS](https://polygon.technology/solutions/polygon-pos)
- [Skale](https://skale.network/)
-- [Gnosis Chain (in precedenza xDai)](https://www.xdaichain.com/)
+- [Gnosis Chain (in precedenza xDai)](https://www.gnosischain.com/)
+- [Rete di Loom](https://loomx.io/)
## Letture consigliate {#further-reading}
-- [EthHub sulle sidechain](https://docs.ethhub.io/ethereum-roadmap/layer-2-scaling/sidechains/)
-- [Scaling Ethereum Dapps through Sidechains](https://medium.com/loom-network/dappchains-scaling-ethereum-dapps-through-sidechains-f99e51fff447) _Feb 8, 2018 - Georgios Konstantopoulos_
+- [EthHub on sidechains](https://docs.ethhub.io/ethereum-roadmap/layer-2-scaling/sidechains/)
+- [Scaling Ethereum dapps through Sidechains](https://medium.com/loom-network/dappchains-scaling-ethereum-dapps-through-sidechains-f99e51fff447) _8 feb 2018 - Georgios Konstantopoulos_
_Conosci una risorsa della community che ti è stata utile? Modifica questa pagina e aggiungila!_
diff --git a/src/content/translations/it/developers/docs/scaling/state-channels/index.md b/src/content/translations/it/developers/docs/scaling/state-channels/index.md
index faec94be336..fb8401138b1 100644
--- a/src/content/translations/it/developers/docs/scaling/state-channels/index.md
+++ b/src/content/translations/it/developers/docs/scaling/state-channels/index.md
@@ -6,52 +6,241 @@ incomplete: true
sidebarDepth: 3
---
-I canali di stato consentono ai partecipanti di effettuare transazioni `x` numero di volte all'esterno della catena inviando solo due transazioni sulla catena alla rete Ethereum. Ciò consente volumi di transazioni estremamente elevati.
+I canali di stato consentono ai partecipanti di transare al di fuori della catena in sicurezza, mantenendo l'interazione con la Rete principale di Ethereum a un minimo. I pari del canale possono condurre un numero arbitrario di transazioni off-chain inviando solo due transazioni su catena per aprire e chiudere il canale. Questo consente un volume di transazioni estremamente elevato e risulta in costi minori per gli utenti.
## Prerequisiti {#prerequisites}
-Dovresti avere una buona comprensione di tutti gli argomenti fondamentali ed una comprensione di alto livello della [scalabilità di Ethereum](/developers/docs/scaling/). L'implementazione di soluzioni di scalabilità, come i canali, è un argomento avanzato in quanto la tecnologia è meno testata nel campo e continua ad essere oggetto di ricerca e sviluppo.
+Dovresti aver letto e compreso le nostre pagine sul [ridimensionamento di Ethereum](/developers/docs/scaling/) e il [livello 2](/layer-2/).
-## Canali {#channels}
+## Cosa sono i canali? {#what-are-channels}
-I partecipanti devono bloccare una porzione dello stato di Ethereum, ad esempio un deposito di ETH, in un contratto multisig. Un contratto multisig è un tipo di contratto che richiede le firme (e quindi l'accordo) di chiavi private multiple per poter essere eseguito.
+Le blockchain pubbliche, come Ethereum, affrontano sfide di scalabilità dovute alla loro architettura distribuita: le transazioni on-chain devono essere eseguite da tutti i nodi. I nodi devono poter gestire il volume di transazioni in un blocco usando hardware modesto, imponendo un limite al volume di transazioni per mantenere decentralizzata la rete. I canali della blockchain risolvono questo problema consentendo agli utenti di interagire al di fuori della blockchain principale.
-Il blocco dello stato in questo modo è la prima transazione e apre il canale. I partecipanti possono poi eseguire transazioni esternamente alla catena, in modo rapido e libero. Quando l'interazione è terminata, viene inviata sulla catena una transazione finale, che sblocca lo stato.
+I canali sono semplici protocolli peer-to-peer che consentono a due parti di effettuare molte transazioni tra loro e poi di pubblicare solo i risultati finali nella blockchain. Il canale usa la crittografia per dimostrare che i dati sommari che generano sono davvero il risultato di una serie valida di transazioni intermedie. Un contratto intelligente ["multifirma"](developers/docs/smart-contracts/#multisig) assicura che le transazioni siano firmate dalle parti corrette.
-**Utile per**:
+Con i canali, i cambiamenti di stato sono eseguiti e convalidati dalle parti interessate, riducendo al minimo il calcolo sul livello di esecuzione di Ethereum. Questo riduce la congestione su Ethereum e, inoltre, aumenta le velocità di elaborazione delle transazioni per gli utenti.
-- molti aggiornamenti di stato
-- situazioni in cui il numero di partecipanti è noto in anticipo
-- situazioni in cui i partecipanti sono sempre disponibili
+Ogni canale è gestito da un [contratto intelligente multifirma](/developers/docs/smart-contracts/#multisig) eseguito su Ethereum. Per aprire un canale, i partecipanti distribuiscono il contratto del canale sulla catena e vi depositano i fondi. Le due parti firmano collettivamente un aggiornamento di stato per inizializzare lo stato del canale, dopodiché possono transare rapidamente e liberamente al di fuori della catena.
-Attualmente esistono due tipi di canali: canali di stato e canali di pagamento.
+Per chiudere il canale, i partecipanti inviano l'ultimo stato concordato del canale sulla catena. Dopodiché, il contratto intelligente distribuisce i fondi bloccati in base al saldo di ogni partecipante nello stato finale del canale.
+
+I canali peer-to-peer sono particolarmente utili per situazioni in cui alcuni partecipanti predefiniti desiderano eseguire transazioni ad alta frequenza senza incorrere in sovraccarichi visibili. I canali della blockchain rientrano in due categorie: **canali di pagamento** e **canali di stato**.
+
+## Canali di pagamento {#payment-channels}
+
+Un canale di pagamento è meglio descritto come un "registro bidirezionale" tenuto collettivamente da due utenti. Il saldo iniziale del registro è la somma dei depositi bloccati nel contratto on-chain durante la fase di apertura del canale.
+
+Gli aggiornamenti al saldo del registro (cioè, lo stato del canale di pagamento) richiedono l'approvazione di tutte le parti nel canale. Un aggiornamento del canale firmato da tutti i partecipanti al canale è considerato finalizzato, analogamente a una transazione su Ethereum.
+
+I canali di pagamento sono stati tra le prime soluzioni di ridimensionamento progettate per minimizzare l costosa attività on-chain nelle interazioni semplici tra utenti (ad es. trasferimenti di ETH, scambi atomici, micropagamenti). I partecipanti al canale possono condurre una quantità illimitata di transazioni istantanee e senza commissioni tra loro purché la somma netta dei loro trasferimenti non superi i token depositati.
## Canali di stato {#state-channels}
-Per spiegare il funzionamento di un canale di stato, forse è più efficace utilizzare un esempio, come il gioco del tris:
+Oltre a supportare i pagamenti off-chain, i canali di pagamento non si sono dimostrati utili per gestire la logica di transizione di stato generale. I canali di stato sono stati creati per risolvere questo problema e rendere i canali utili per ridimensionare il calcolo a scopo generale.
-1. Viene creato uno smart contract multisig "Giudice" sulla catena principale di Ethereum, che conosce le regole del tris e può identificare Alice e Bob come due giocatori della partita. Questo contratto contiene un premio di 1 ETH.
+I canali di stato hanno comunque molto in comune con i canali di pagamento. Ad esempio, gli utenti interagiscono scambiando messaggi firmati in modo crittografico (transazioni), che anche gli altri devono firmare. Se un aggiornamento di stato proposto non è firmato da tutti i partecipanti, non è valido.
-2. A questo punto, Alice e Bob iniziano a giocare, aprendo il canale di stato. Ogni mossa crea una transazione esterna alla catena che contiene un "nonce". Ciò significa semplicemente che potremo sempre vedere in seguito in quale ordine sono state eseguite le mosse.
+Tuttavia, oltre a detenere i saldi degli utenti, il canale monitora anche lo stato corrente dell'archiviazione del contratto (cioè, i valori delle variabili del contratto).
-3. Quando c'è un vincitore, il canale viene chiuso con l'invio dello stato finale (ad esempio la lista delle transazioni) al contratto Giudice, pagando una sola commissione per la transazione. Il Giudice si assicura che lo "stato finale" sia firmato da entrambe le parti e aspetta il tempo necessario per assicurarsi che nessuno possa legittimamente contestare il risultato, quindi paga il premio di 1 ETH ad Alice.
+Questo rende possibile l'esecuzione al di fuori della catena di un contratto intelligente tra due utenti. In questo scenario, gli aggiornamenti allo stato interno del contratto intelligente richiedono l'approvazione dei pari che hanno creato il canale.
-## Canali di pagamento {#payment-channels}
+Se da un lato questo risolve il problema di scalabilità precedentemente descritto, dall'altro ha implicazioni per la sicurezza. Su Ethereum, la validità delle transizioni di stato è imposta dal protocollo di consenso della rete. Questo rende impossibile proporre un aggiornamento non valido allo stato di un contratto intelligente o di alterarne l'esecuzione.
+
+I canali di stato non hanno le stesse garanzie di sicurezza. In una certa misura, un canale di stato è una versione in miniatura della Rete principale. Con una serie limitata di partecipanti che impongono le regole, le possibilità di comportamenti malevoli (ad es. proporre aggiornamenti di stato non validi) aumentano. I canali di stato traggono la propria sicurezza da un sistema di arbitrato delle dispute basato sulle [prove di frode](/glossary/#fraud-proof).
+
+## Come funzionano i canali di stato {#how-state-channels-work}
+
+Fondamentalmente, l'attività in un canale di stato è una sessione di interazioni che coinvolge gli utenti e un sistema di blockchain. Gli utenti comunicano prevalentemente tra loro al di fuori della catena e interagiscono con la blockchain sottostante solo per aprire il canale, chiuderlo o risolvere le potenziali dispute tra partecipanti.
+
+La seguente sezione delinea il flusso di lavoro di base di un canale di stato:
+
+### Aprire il canale {#opening-the-channel}
+
+Aprire un canale richiede ai partecipanti di impegnare fondi a un contratto intelligente sulla Rete Principale. Il deposito funziona anche da scheda virtuale, così gli attori partecipanti possono transare liberamente senza dover regolare immediatamente i pagamenti. Solo quando il canale è finalizzato sulla catena, le parti provvedono al regolamento reciproco e prelevano ciò che resta della loro scheda.
+
+Questo deposito serve anche da cauzione per garantire il comportamento onesto di ogni partecipante. Se i depositanti sono ritenuti colpevoli di azioni malevole durante la fase di risoluzione delle dispute, il contratto decurta il loro deposito.
+
+I pari del canale devono firmare uno stato iniziale, su cui concordano tutti. Questo serve da genesi del canale di stato, dopo di che gli utenti possono iniziare a transare.
+
+### Usare il canale {#using-the-channel}
+
+Dopo l'inizializzazione dello stato del canale, i pari interagiscono firmando le transazioni e inviandosele a vicenda per l'approvazione. I partecipanti avviano gli aggiornamenti di stato con queste transazioni e firmano gli aggiornamenti di stato altrui. Ogni transazione comprende quanto segue:
+
+- Un **nonce**, che agisce da ID univoco per le transazioni e impedisce gli attacchi replay. Identifica inoltre l'ordine in cui si sono verificati gli aggiornamenti di stato (che è importante per la risoluzione delle dispute)
+
+- Il vecchio stato del canale
+
+- Il nuovo stato del canale
+
+- La transazione che innesca la transizione di stato (ad. es. Alice invia 5 ETH a Bob)
+
+Gli aggiornamenti di stato nel canale non sono trasmessi sulla catena come avviene normalmente quando gli utenti interagiscono sulla Rete principale, il che è in linea con l'obiettivo dei canali di stato di ridurre al minimo l'impronta sulla catena. Finché i partecipanti acconsentono agli aggiornamenti di stato, questi sono definitivi quanto la transazione di Ethereum. I partecipanti devono dipendere dal consenso della Rete principale solo se sorge una disputa.
+
+### Chiudere il canale {#closing-the-channel}
+
+Chiudere un canale di stato richiede l'invio dello stato finale e concordato del canale al contratto intelligente sulla catena. I dettagli a cui si fa riferimento nell'aggiornamento di stato includono il numero di mosse di ogni partecipante e un elenco delle transazioni approvate.
+
+Dopo aver verificato che l'aggiornamento di stato sia valido (cioè, sia firmato da tutte le parti), il contratto intelligente finalizza il canale e distribuisce i fondi bloccati a seconda del risultato del canale. I pagamenti effettuati al di fuori della catena sono applicati allo stato di Ethereum e ogni partecipante riceve la propria quota rimanente di fondi bloccati.
+
+Lo scenario sopra descritto rappresenta cosa succede nel caso favorevole. A volte, gli utenti potrebbero non riuscire a raggiungere un accordo e finalizzare il canale (il caso sfavorevole). Ognuna delle seguenti cose potrebbe applicarsi alla situazione:
+
+- I partecipanti vanno offline e non propongono le transizioni di stato
+
+- I partecipanti si rifiutano di co-firmare gli aggiornamenti di stato validi
+
+- I partecipanti provano a finalizzare il canale proponendo un vecchio aggiornamento di stato al contratto on-chain
+
+- I partecipanti propongono delle transizioni di stato non valide da far firmare agli altri
+
+Ogni volta che il consenso tra gli attori partecipanti a un canale non viene raggiunto, l'ultima opzione è affidarsi al consenso della Rete principale per imporre lo stato finale e valido del canale. In questo caso, chiudere il canale di stato richiede la risoluzione delle dispute sulla catena.
+
+### Risolvere le dispute {#settling-disputes}
+
+Tipicamente, le parti in un canale acconsentono alla chiusura anticipata del canale e co-firmano l'ultima transizione di stato, che inviano al contratto intelligente. Una volta approvato l'aggiornamento sulla catena, l'esecuzione del contratto intelligente al di fuori della catena termina e i partecipanti escono dal canale col proprio denaro.
+
+Tuttavia, una parte può inviare una richiesta sulla catena per terminare l'esecuzione del contratto intelligente e finalizzare il canale, senza attendere l'approvazione della propria controparte. Se una qualsiasi delle situazioni di rottura del consenso precedentemente descritte si verifica, ciascuna parte può innescare la chiusura del canale da parte del contratto on-chain e la distribuzione dei fondi. Questo fornisce la **mancanza di fiducia**, che assicura che le parti oneste possano prelevare i propri depositi in qualsiasi momento, indipendentemente dalle azioni delle altre parti.
+
+Per elaborare l'uscita dal canale, l'utente deve inviare l'ultimo aggiornamento di stato valido dell'applicazione al contratto on-chain. Se questo corrisponde (cioè, porta la firma di tutte le parti), allora i fondi sono ridistribuiti in suo favore.
+
+Esiste, tuttavia, un ritardo nell'esecuzione delle richieste d'uscita dei singoli utenti. Se la richiesta di concludere il canale è stata approvata all'unanimità, allora la transazione di uscita on-chain è immediatamente eseguita.
+
+Il ritardo entra in gioco nelle uscite dei singoli utenti a causa della possibilità di azioni fraudolente. Ad esempio, un partecipante al canale potrebbe provare a finalizzarlo su Ethereum inviando un aggiornamento di stato precedente sulla catena.
+
+Come contromisura, i canali di stato consentono agli utenti onesti di contestare gli aggiornamenti di stato non validi inviando l'ultimo stato valido del canale sulla catena. I canali di stato sono progettati in modo che gli aggiornamenti di stato più recenti e concordati prevalgano sugli aggiornamenti di stato precedenti.
+
+Una volta che un pari innesca il sistema di risoluzione delle dispute on-chain, l'altra parte deve rispondere entro un certo limite di tempo (detto finestra di contestazione). Questo consente agli utenti di contestare la transazione di uscita, specialmente se l'altra parte sta applicando un aggiornamento obsoleto.
+
+Indipendentemente dal caso, gli utenti del canale hanno sempre forti garanzie di finalità: se la transizione di stato in loro possesso è stata firmata da tutti gli utenti ed è l'aggiornamento più recente, allora è di finalità pari a una transazione regolare on-chain. Devono comunque contestare l'altra parte sulla catena, ma il solo risultato possibile è finalizzare l'ultimo stato valido, che posseggono.
+
+### Come interagiscono i canali di stato con Ethereum? {#how-do-state-channels-interact-with-ethereum}
+
+Sebbene esistano come protocolli al di fuori della catena, i canali di stato hanno un componente sulla catena: il contratto intelligente distribuito su Ethereum aprendo il canale. Questo contratto controlla le risorse depositate nel canale, verifica gli aggiornamenti di stato e arbitra le dispute tra i partecipanti.
+
+I canali di stato non pubblicano i dati delle transazioni o gli impegni di stato nella Rete principale, a differenza delle soluzioni di ridimensionamento del [livello 2](/layer-2/). Tuttavia, sono più connessi alla Rete principale rispetto, ad esempio, alle [sidechain](/developers/docs/scaling/sidechains/), il che le rende in qualche modo più sicure.
+
+I canali di stato si affidano al protocollo principale di Ethereum per quanto segue:
+
+#### 1. Liveness {#liveness}
+
+Il contratto on-chain distribuito all'apertura del canale è responsabile della funzionalità del canale. Se il contratto è in esecuzione su Ethereum, allora il canale è sempre disponibile all'uso. Viceversa, una catena secondaria può sempre fallire, anche se la Rete Principale è operativa, mettendo a rischio i fondi dell'utente.
+
+#### 2. Sicurezza {#security}
+
+In una certa misura, i canali di stato si affidano a Ethereum per fornire sicurezza e proteggere gli utenti dai pari malevoli. Come discusso in seguito, i canali usano un meccanismo di prova di frode che consente agli utenti di sfidare i tentativi di finalizzare il canale con un aggiornamento non valido od obsoleto.
+
+In questo caso, la parte onesta fornisce l'ultimo stato del canale valido come una prova di frode al contratto on-chain per la verifica. Le prove di frode consentono alle parti reciprocamente diffidenti di condurre le transazioni off-chain senza rischiare i propri fondi nel processo.
+
+#### 3. Finalità {#finality}
+
+Gli aggiornamenti di stato firmati collettivamente dagli utenti del canale sono considerati tanto buoni quanto le transazioni on-chain. Tuttavia, tutta l'attività nel canale raggiunge la vera finalità solo quando il canale è chiuso su Ethereum.
+
+Nel caso ottimista, entrambe le parti possono cooperare e firmare l'aggiornamento di stato finale e inviarlo sulla catena per chiudere il canale, dopodiché i fondi sono distribuiti a seconda dello stato finale del canale. Nel caso pessimistico, quando qualcuno prova a barare pubblicando un aggiornamento di stato errato sulla catena, la sua transazione non è finalizzata fino alla scadenza della finestra di sfida.
+
+## Canali di stato virtuali {#virtual-state-channels}
+
+L'ingenua implementazione di un canale di stato sarebbe distribuire un nuovo contratto quando due utenti desiderano eseguire un'applicazione al di fuori della catena. Questo non solo è impossibile, ma nega anche l'efficienza di costo dei canali di stato (i costi della transazione on-chain possono sommarsi rapidamente).
+
+Per risolvere questo problema, sono stati creati i "canali virtuali". A differenza dei canali regolari che richiedono alle transazioni on-chain di aprirli e terminarli, un canale virtuale è apribile, eseguibile e finalizzabile senza interagire con la catena principale. È persino possibile risolvere le controversie al di fuori della catena usando questo metodo.
+
+Questo sistema si affida all'esistenza dei così detti "canali libro mastro", finanziati sulla catena. I canali virtuali tra due parti possono basarsi su un canale libro mastro esistente, con i proprietari dello stesso che servono da intermediari.
+
+Gli utenti in ogni canale virtuale interagiscono tramite l'istanza di un nuovo contratto, col canale del libro mastro capace di supportare diverse istanze del contratto. Lo stato del canale del libro mastro contiene inoltre più di uno stato d'archiviazione del contratto, consentendo l'esecuzione parallela delle applicazioni al di fuori della catena tra diversi utenti.
+
+Proprio come nei canali regolari, gli utenti scambiano aggiornamenti di stato per far progredire la macchina di stato. Tranne che per quando sorge una controversia, l'intermediario dev'esser contattato solo aprendo o terminando il canale.
+
+### Canali di pagamento virtuali {#virtual-payment-channels}
+
+I canali di pagamento virtuali si basano sulla stessa idea dei canali di stato virtuali: i partecipanti connessi alla stessa rete possono passare i messaggi senza dover aprire un nuovo canale sulla catena. Nei canali di pagamento virtuali, i trasferimenti di valore sono indirizzati per uno o più intermediari, con la garanzia che solo il destinatario inteso possa ricevere i fondi trasferiti.
+
+## Applicazioni dei canali di stato {#applications-of-state-channels}
+
+### Pagamenti {#payments}
+
+I primi canali della blockchain erano semplici protocolli che consentivano a due partecipanti di condurre trasferimenti rapidi e a commissioni ridotte al di fuori della catena, senza dover pagare elevate commissioni di transazione sulla Rete Principale. Oggi, i canali di pagamento sono comunque utili per le applicazioni progettate per lo scambio e deposito di ether e token.
+
+I pagamenti basati sul canale hanno i seguenti vantaggi:
+
+1. **Volume**: La quantità di transazioni off-chain per canale non è connessa al volume di Ethereum, influenzato da vari fattori, specialmente le dimensioni e il tempo del blocco. Eseguendo le transazioni al di fuori della catena, i canali della blockchain possono raggiungere volumi maggiori.
+
+2. **Privacy**: Poiché i canali esistono al di fuori della catena, i dettagli delle interazioni tra partecipanti non sono registrate sulla blockchain pubblica di Ethereum. Gli utenti del canale devono interagire sulla catena solo fondando e chiudendo i canali o risolvendo le controversie. Dunque, i canali sono utili per gli individui che desiderano transazioni più private.
+
+3. **Latenza**: Le transazioni off-chain condotte tra i partecipanti del canale sono risolvibili istantaneamente, se ambe le parti cooperano, riducendo i ritardi. In contrasto, inviare una transazione sulla Rete Principale richiede che i nodi elaborino la transazione, producano un nuovo blocco con la transazione e raggiungano il consenso. Gli utenti potrebbero anche dover attendere più conferme del blocco prima di considerare finalizzata una transazione.
+
+Implementare i canali di stato su soluzioni di livello 2, come i [rollup](/developers/docs/scaling/#rollups), potrebbe renderli persino più attraenti per i pagamenti. Sebbene i canali offrano pagamenti economici, i costi di configurazione del contratto su catena sulla Rete Principale durante la fase d'apertura possono divenire costosi, specialmente ai picchi delle commissioni sul gas. I rollup basati su Ethereum offrono [commissioni di transazione inferiori](https://l2fees.info/) e possono ridurre il sovraccarico per i partecipanti del canale per aver ridotto le commissioni di configurazione.
+
+### Microtransazioni {#microtransactions}
+
+Le microtransazioni sono pagamenti di basso valore (es., inferiori a una frazione di dollaro), che le aziende non possono elaborare senza incorrere in perdite. Queste entità devono pagare i fornitori del servizio di pagamento, cosa che non possono fare se il margine sui pagamenti del cliente è troppo basso per ottenere un profitto.
+
+I canali di pagamento risolvono questo problema riducendo il sovraccarico associato alle microtransazioni. Ad esempio, un Fornitore di Servizi Internet (ISP) può aprire un canale di pagamento con un cliente, consentendogli di trasmettere piccoli pagamenti ogni volta che usa il servizio.
+
+Oltre al costo d'apertura e chiusura del canale, i partecipanti non incorrono in ulteriori costi sulle microtransazioni (nessuna commissione sul gas). Questa è una situazione vantaggiosa per tutti, poiché i clienti hanno maggiore flessibilità in quanto pagano per i servizi e le aziende non perdono sulle microtransazioni profittevoli.
+
+### Applicazioni decentralizzate {#decentralized-applications}
+
+Come i canali di pagamento, i canali di stato possono effettuare pagamenti condizionali secondo gli stati finali della macchina di stato. I canali di stato possono anche supportare la logica di transizione di stato arbitraria, rendendoli utili per eseguire app generiche al di fuori della catena.
+
+I canali di stato sono spesso limitati ad applicazioni semplici basate sui turni, dato che ciò semplifica la gestione dei fondi impegnati al contratto sulla catena. Inoltre, con un numero limitato di parti che aggiornano lo stato dell'applicazione off-chain a intervalli, punire il comportamento disonesto è relativamente semplice.
+
+L'efficienza dell'applicazione di un canale di stato dipende anche dal suo design. Ad esempio, uno sviluppatore potrebbe distribuire il contratto del canale dell'app sulla catena una volta e consentire agli altri giocatori di riutilizzarla senza dover andare sulla catena. In questo caso, il canale iniziale dell'app serve da canale del libro mastro, supportando diversi canali virtuali, ognuno operante una nuova istanza del contratto intelligente dell'app al di fuori della catena.
+
+Un potenziale caso d'uso per le applicazioni del canale di stato sono i giochi semplici a due giocatori, in cui i fondi sono distribuiti a seconda del risultato della partita. Qui, il beneficio è che i giocatori non si fidano l'uno dell'altro (mancanza di fiducia) e che, il contratto on-chain, non i giocatori, controllino l'allocazione dei fondi e la regolazione delle controversie (decentralizzazione).
+
+Altri possibili casi d'uso per le app del canale di stato includono la proprietà del nome dell'ENS, libri mastri di NFT e molto altro.
+
+### Trasferimenti atomici {#atomic-transfers}
+
+I primi canali di pagamento furono limitati ai trasferimenti tra due parti, limitandone l'utilizzabilità. Tuttavia, l'introduzione dei canali virtuali ha consentito agli individui di indirizzare i trasferimenti per gli intermediari (cioè, più canali p2p) senza dover aprire un nuovo canale sulla catena.
+
+Comunemente descritti come "trasferimenti multi-salto", i pagamenti instradati sono atomici (cioè, tutte le parti della transazione riescono falliscono del tutto). I trasferimenti atomici usano gli [Hashed Timelock Contracts (HTLC)](https://en.bitcoin.it/wiki/Hash_Time_Locked_Contracts) per assicurare che il pagamento sia rilasciato solo se certe condizioni sono soddisfatte, riducendo dunque il rischio della controparte.
+
+## Svantaggi dell'uso dei canali di stato {#drawbacks-of-state-channels}
+
+### Presupposti di liveness {#liveness-assumptions}
+
+Per assicurare l'efficienza, i canali di stato fissano dei limiti di tempo sull'abilità dei partecipanti del canale di rispondere alle dispute. Questa regola presuppone che i pari saranno sempre online per monitorare l'attività del canale e impugnare le contestazioni quando necessario.
+
+In realtà, gli utenti possono andare offline per motivi che esulano dal loro controllo (ad es. connessione a Internet scadente, guasto meccanico, etc.). Se un utente onesto va offline, un pari malevolo può sfruttare la situazione presentando vecchi stati intermedi al contratto dell'arbitro e rubando i fondi impegnati.
+
+Alcuni canali usano delle "torri di controllo", entità responsabili di osservare gli eventi di disputa on-chain per conto di altri e di intraprendere le azioni necessarie, come avvisare le parti coinvolte. Tuttavia, questo può aggiungersi ai costi dell'uso di un canale di stato.
+
+### Non disponibilità dei dati {#data-unavailability}
+
+Come spiegato in precedenza, contestare una disputa non valida richiede la presentazione dell'ultimo stato valido del canale di stato. Questa è un'altra regola basata sul presupposto che gli utenti abbiano accesso all'ultimo stato del canale.
+
+Sebbene sia ragionevole aspettarsi che gli utenti del canale memorizzino copie dello stato dell'applicazione off-chain, questi dati potrebbero andar perduti a causa di errori o guasti meccanici. Se l'utente non ha eseguito il backup dei dati, può solo sperare che l'altra parte non finalizzi una richiesta di uscita non valida usando le vecchie transizioni di stato in suo possesso.
+
+Gli utenti di Ethereum non devono affrontare questo problema poiché la rete impone le regole sulla disponibilità dei dati. I dati della transazione sono memorizzati e propagati da tutti i nodi e scaricabili dagli utenti se e quando necessario.
+
+### Problemi di liquidità {#liquidity-issues}
+
+Per stabilire un canale della blockchain, i partecipanti devono bloccare i fondi in un contratto intelligente sulla catena per l'intero ciclo di vita del canale. Questo riduce la liquidità degli utenti del canale e, inoltre, limita i canali a coloro che possono permettersi di tenere i fondi bloccati sulla Rete principale.
+
+Tuttavia, i canali di registro, gestiti da un fornitore di servizi off-chain (OSP), possono ridurre i problemi di liquidità per gli utenti. Due pari connessi a un canale di registro possono creare un canale virtuale, che possono aprire e finalizzare completamente al di fuori della catena, in qualsiasi momento.
+
+I fornitori di servizi off-chain potrebbero anche aprire i canali con più pari, rendendoli utili per instradare i pagamenti. Ovviamente, gli utenti devono pagare delle commissioni agli OSP per i loro servizi, il che potrebbe essere sgradito ad alcuni.
+
+### Attacchi di griefing {#griefing-attacks}
+
+Gli attacchi di griefing sono una caratteristica comune dei sistemi basati sulla prova di frode. Un attacco di griefing non dà direttamente benefici all'autore ma causa sofferenza ( , cioè danni) alla vittima, da cui il nome.
+
+La prova di frode è suscettibile agli attacchi di griefing perché la parte onesta deve rispondere a ogni disputa, anche quelle non valide, o rischiare di perdere i propri fondi. Un partecipante malevolo può decidere di pubblicare ripetutamente le transizioni di stato obsolete sulla catena, obbligando la parte onesta a rispondere con lo stato valido. Il costo di queste transazioni on-chain può aumentare rapidamente, causando perdite alle parti oneste nel processo.
+
+### Insieme predefinito di partecipanti {#predefined-participant-sets}
+
+Fin dalla progettazione, il numero di partecipanti compresi in un canale di stato rimane fisso per tutto il suo ciclo di vita. Questo perché aggiornare l'insieme di partecipanti complicherebbe il funzionamento del canale, specialmente quando si finanzia il canale o si risolvono le dispute. Aggiungere o rimuovere partecipanti richiederebbe inoltre un'attività aggiuntiva sulla catena, che aumenterebbe il sovraccarico per gli utenti.
+
+Pur rendendo più facile ragionare sui canali di stato, questo limita l'utilità dei design dei canali agli sviluppatori di applicazioni. Questo spiega parzialmente perché i canali di stato siano stati abbandonati in favore di altre soluzioni di ridimensionamento, come i rollup.
-Canali di stato semplificati che si occupano solo di pagamenti (ad esempio trasferimenti ETH). Consentono trasferimenti esternamente alla catena tra due partecipanti, purché la somma netta dei trasferimenti non superi i token depositati.
+### Elaborazione in parallelo delle transazioni {#parallel-transaction-processing}
-## Pro e contro {#channels-pros-and-cons}
+I partecipanti al canale di stato inviano gli aggiornamenti di stato a turno, il che spiega perché funzionino al meglio per le "applicazioni basate su turni" (ad es. una partita di scacchi con due giocatori). Questo elimina il bisogno di gestire gli aggiornamenti di stato simultanei e riduce il lavoro che il contratto on-chain deve compiere per punire chi pubblica aggiornamenti obsoleti. Tuttavia, un effetto collaterale di questa progettazione è che le transazioni dipendono l'una dall'altra, aumentando la latenza e riducendo l'esperienza utente generale.
-| Pro | Contro |
-| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| Prelievo/regolamento istantaneo sulla rete principale (se entrambe le parti di un canale cooperano) | Tempi e costi necessari per configurare un canale. Non adatto per transazioni occasionali esternamente alla catena tra utenti arbitrari. |
-| Volumi estremamente elevati | Necessità di monitorare la rete periodicamente (requisito di liveness) o delegare la responsabilità a qualcun altro per garantire la sicurezza dei fondi. |
-| Costi per transazione più bassi in assoluto. Ottimo per flussi di micropagamenti | Necessità di bloccare fondi nei canali di pagamento aperti |
-| | Non supporta la partecipazione aperta |
+Alcuni canali di stato risolvono questo problema usando un design "full-duplex", che separa lo stato off-chain in due stati "simplex" unidirezionali, consentendo aggiornamenti di stato contemporanei. Tali design migliorano il volume off-chain e riducono i ritardi della transazione.
## Usare i canali di stato {#use-state-channels}
-Diversi progetti forniscono implementazioni dei canali di stato che puoi integrare nelle tue dApp:
+Diversi progetti forniscono implementazioni dei canali di stato che puoi integrare nelle tue dapp:
- [Connext](https://connext.network/)
- [Kchannels](https://www.kchannels.io/)
@@ -61,15 +250,16 @@ Diversi progetti forniscono implementazioni dei canali di stato che puoi integra
## Letture consigliate {#further-reading}
-**Canali di stato**
+**State channels**
-- [EthHub sui canali di stato](https://docs.ethhub.io/ethereum-roadmap/layer-2-scaling/state-channels/)
-- [Making Sense of Ethereum’s Layer 2 Scaling Solutions: State Channels, Plasma, and Truebit](https://medium.com/l4-media/making-sense-of-ethereums-layer-2-scaling-solutions-state-channels-plasma-and-truebit-22cb40dcc2f4) _– Josh Stark, Feb 12 2018_
-- [State Channels - an explanation](https://www.jeffcoleman.ca/state-channels/) _Nov 6, 2015 - Jeff Coleman_
+- [EthHub on state channels](https://docs.ethhub.io/ethereum-roadmap/layer-2-scaling/state-channels/)
+- [Making Sense of Ethereum’s Layer 2 Scaling Solutions: State Channels, Plasma, and Truebit](https://medium.com/l4-media/making-sense-of-ethereums-layer-2-scaling-solutions-state-channels-plasma-and-truebit-22cb40dcc2f4) _– Josh Stark, 12 feb 2018_
+- [State Channels - an explanation](https://www.jeffcoleman.ca/state-channels/) _6 nov 2015 - Jeff Coleman_
- [Basics of State Channels](https://education.district0x.io/general-topics/understanding-ethereum/basics-state-channels/) _District0x_
+- [Blockchain State Channels: A State of the Art](https://ieeexplore.ieee.org/document/9627997)
-**Canali di pagamento**
+**Payment channels**
-- [EthHub sui canali di pagamento](https://docs.ethhub.io/ethereum-roadmap/layer-2-scaling/payment-channels/)
+- [EthHub on payment channels](https://docs.ethhub.io/ethereum-roadmap/layer-2-scaling/payment-channels/)
_Conosci una risorsa della community che ti è stata utile? Modifica questa pagina e aggiungila!_
diff --git a/src/content/translations/it/developers/docs/scaling/validium/index.md b/src/content/translations/it/developers/docs/scaling/validium/index.md
index bce779e7405..01aa306af9a 100644
--- a/src/content/translations/it/developers/docs/scaling/validium/index.md
+++ b/src/content/translations/it/developers/docs/scaling/validium/index.md
@@ -2,34 +2,163 @@
title: Validium
description: Un'introduzione a Validium come soluzione di scalabilità, attualmente utilizzata dalla comunità Ethereum.
lang: it
-incomplete: true
sidebarDepth: 3
---
-Usa prove di validità come [i rollup ZK](/developers/docs/scaling/zk-rollups/) ma i dati non sono archiviati sul livello 1 della catena di Ethereum. Ciò può tradursi in 10.000 transazioni al secondo per catena validium, con la possibilità di eseguire più catene in parallelo.
+Validium è una [soluzione di ridimensionamento](/developers/docs/scaling/) che impongono l'integrità delle transazioni usando prove di validità come i [rollup ZK](/developers/docs/scaling/zk-rollups/), ma non memorizza i dati della transazione sulla Rete principale di Ethereum. Sebbene la disponibilità di dati off-chain introduca dei compromessi, può tradursi in enormi miglioramenti della scalabilità (i validium possono elaborare [circa 9.000 transazioni o più, al secondo](https://blog.matter-labs.io/zkrollup-vs-validium-starkex-5614e38bc263)).
## Prerequisiti {#prerequisites}
-Dovresti avere una buona comprensione di tutti gli argomenti fondamentali ed una comprensione di alto livello della [scalabilità di Ethereum](/developers/docs/scaling/). L'implementazione di soluzioni di scalabilità, come Validium, è un argomento avanzato in quanto la tecnologia è meno testata nel campo e continua ad essere oggetto di ricerca e sviluppo.
+Dovresti aver letto e compreso la nostra pagina sul [ridimensionamento di Ethereum](/developers/docs/scaling/) e il [livello 2](/layer-2).
-## Pro e contro {#pros-and-cons}
+## Cos'è un validium? {#what-is-validium}
-| Pro | Contro |
-| ------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| Nessun ritardo di prelievo (non c'è latenza per transazioni sulla catena e tra catene); conseguente maggior efficienza del capitale. | Supporto limitato di calcolo generale/smart contract; occorrono linguaggi specifici. |
-| Non vulnerabile a certi tipi di attacchi economici subiti da sistemi basati su prove di frode in applicazioni ad alto valore. | Necessità di un'elevata potenza di calcolo per generare le prove ZK; non conveniente per applicazioni con bassi volumi. |
-| | Tempo di finalità soggettiva più limitato (10-30 minuti per generare una prova ZK) (ma più veloce per finalità completa perché non c'è ritardo dovuto ai tempi di contestazione). |
-| | Per generare una prova devono essere disponibili costantemente dati esterni alla catena. |
+I validium sono soluzioni di ridimensionamento che usano la disponibilità di dati off-chain e il calcolo progettato per migliorare il volume elaborando le transazioni al di fuori della Rete principale di Ethereum. Come i rollup a conoscenza zero (rollup ZK), i validium pubblicano delle [prove a conoscenza zero](/glossary/#zk-proof) per verificare le transazioni off-chain su Ethereum. Questo impedisce transizioni di stato non valide e migliora le garanzie di sicurezza di una catena validium.
-### Usare Validium {#use-validium}
+Queste "prove di validità" possono essere sotto forma di ZK-SNARK (argomenti di conoscenza succinti non interattivi a conoscenza zero) o ZK-STARK (argomenti di conoscenza trasparenti e scalabili a conoscenza zero). Maggiori informazioni sulle [prove a conoscenza zero](https://consensys.net/blog/blockchain-explained/zero-knowledge-proofs-starks-vs-snarks/).
-Diversi progetti forniscono implementazioni di Validium che puoi integrare nelle tue dApp:
+I fondi appartenenti agli utenti di validium sono controllati da un contratto intelligente su Ethereum. I validium offrono prelievi quasi istantanei, analogamente ai rollup ZK; una volta che la prova di validità per una richiesta di prelievo è stata verificata sulla Rete principale, gli utenti possono prelevare i fondi fornendo delle [prove di Merkle](/developers/tutorials/merkle-proofs-for-offline-data-integrity/). La prova di Merkle convalida l'inclusione della transazione di prelievo dell'utente in un batch di transazioni verificate, consentendo al contratto on-chain di elaborare il prelievo.
-- [Starkware](https://starkware.co/)
-- [Matter Labs zkPorter](https://matter-labs.io/)
+Tuttavia, gli utenti di validium possono vedersi congelati i fondi e limitati i prelievi. Questo può verificarsi se i gestori della disponibilità dei dati sulla catena validium trattengono i dati di stato off-chain dagli utenti. Senza accesso ai dati della transazione, gli utenti non possono calcolare la prova di Merkle richiesta per dimostrare la proprietà dei fondi ed eseguire i prelievi.
+
+Questa è la differenza principale tra i validium e i rollup ZK: le loro posizioni sullo spettro della disponibilità dei dati. Le due soluzioni affrontano l'archiviazione dei dati in modo diverso, il che ha implicazioni per la sicurezza e la mancanza di fiducia.
+
+## Come interagiscono i validium con Ethereum? {#how-do-validiums-interact-with-ethereum}
+
+I validium sono protocolli di ridimensionamento basati sulla catena di Ethereum esistente. Sebbene esegua le transazioni al di fuori della catena, una catena di Validium è amministrata da un insieme di contratti intelligenti distribuiti sulla Rete Principale, tra cui:
+
+1. **Contratto di verifica**: il contratto di verifica, verifica la validità delle prove inviate dall'operatore di validium creando aggiornamenti di stato. Questo include le prove di validità che attestano la correttezza delle transazioni off-chain e le prove di disponibilità dei dati che verificano l'esistenza dei dati della transazione off-chain.
+
+2. **Contratto principale**: il contratto principale memorizza gli impegni di stato (radici di Merkle) inviati dai produttori di blocchi e aggiorna lo stato del validium una volta verificata la prova di validità sulla catena. Questo contratto elabora inoltre i depositi alla e i prelievi dalla catena validium.
+
+I validium si affidano anche alla catena principale di Ethereum per quanto segue:
+
+### Accordo {#settlement}
+
+Le transazioni eseguite su un validium non possono essere completamente confermate finché la catena genitore ne verifica la validità. Tutte le attività svolte su un validium devono essere infine regolate sulla Rete principale. La blockchain di Ethereum fornisce anche "garanzie di accordo" per gli utenti di validium, a significare che le transazioni off-chain non sono annullabili o alterabili una volta che se ne è assunto l'impegno sulla catena.
+
+### Sicurezza {#security}
+
+Ethereum, agendo da livello d'accordo, garantisce anche la validità delle transizioni di stato su validium. Le transazioni esterne alla catena eseguite sulla catena di Validium sono verificate tramite un contratto intelligente sul livello di base di Ethereum.
+
+Se il contratto di verifica on-chain ritiene che la prova non sia valida, le transazioni sono rifiutate. Questo significa che gli operatori devono soddisfare le condizioni di validità imposte dal protocollo Ethereum prima di aggiornare lo stato del validium.
+
+## Come funziona un validium? {#how-does-validium-work}
+
+### Transazioni {#transactions}
+
+Gli utenti inviano le transazioni all'operatore, un nodo responsabile di eseguire le transazioni sulla catena validium. Alcuni validium potrebbero usare un unico operatore per eseguire la catena o affidarsi a un meccanismo di [proof-of-stake (PoS)](/developers/docs/consensus-mechanisms/pos/) per la rotazione degli operatori.
+
+L'operatore aggrega le transazioni in un batch e lo invia a un circuito di prova. Il circuito di prova accetta il batch di transazioni (e altri dati pertinenti) come input e restituisce una prova di validità che verifica che le operazioni siano state eseguite correttamente.
+
+### Impegni di stato {#state-commitments}
+
+Lo stato del validium è associato a un hash come un albero di Merkle, con la radice memorizzata nel contratto principale su Ethereum. La radice di Merkle, anche nota come radice di stato, agisce da impegno crittografico allo stato corrente dei conti e saldi sul Validium.
+
+Per eseguire un aggiornamento di stato, l'operatore deve calcolare una nuova radice di stato (dopo aver eseguito le transazioni) e inviarla al contratto on-chain. Se la prova di validità corrisponde, lo stato proposto viene accettato e il validium passa alla nuova radice di stato.
+
+### Depositi e prelievi {#deposits-and-withdrawals}
+
+Gli utenti spostano i fondi da Ethereum a un validium depositando ETH (o qualsiasi token compatibile con ERC) nel contratto on-chain. Il contratto trasmette l'evento di deposito al validium al di fuori della catena, dove sull'indirizzo dell'utente viene accreditato un importo equivalente al suo deposito. L'operatore include inoltre questa transazione di deposito in un nuovo batch.
+
+Per spostare nuovamente i fondi nella Rete principale, l'utente di un validium avvia una transazione di prelievo e la invia all'operatore, che convalida la richiesta di prelievo e la include in un batch. Le risorse dell'utente sulla catena validium sono inoltre distrutte prima che possano uscire dal sistema. Una volta che la prova di validità associata al batch è verificata, l'utente può richiamare il contratto principale per prelevare ciò che rimane del suo deposito iniziale.
+
+Come meccanismo anti-censura, il protocollo validium consente agli utenti di prelevare direttamente dal contratto di validium senza passare per l'operatore. In questo caso, gli utenti devono fornire una prova di Merkle al contratto di verifica, mostrando l'inclusione di un conto nella radice di stato. Se la prova è accettata, l'utente può richiamare la funzione di prelievo del contratto principale per far uscire i suoi fondi dal validium.
+
+### Invio del batch {#batch-submission}
+
+Dopo aver eseguito un batch di transazioni, l'operatore invia la prova di validità associata al contratto di verifica e propone una nuova radice di stato al contratto principale. Se la prova è valida, il contratto principale aggiorna lo stato del validium e finalizza i risultati delle transazioni nel batch.
+
+A differenza di un rollup ZK, i produttori di blocchi su un validium non devono pubblicare i dati della transazione per i batch di transazioni (solo le intestazioni dei blocchi). Questo rende validium un protocollo di ridimensionamento puramente off-chain, a differenza dei protocolli di ridimensionamento "ibridi" (cioè, il [livello 2](/layer-2/)) che pubblicano i dati di stato sulla catena principale di Ethereum come `calldata`.
+
+### Disponibilità dei dati {#data-availability}
+
+Come accennato, i validium utilizzano un modello di disponibilità dei dati off-chain, dove gli operatori memorizzano tutti i dati delle transazioni al di fuori della Rete principale di Ethereum. La bassa impronta di dati on-chain di validium migliora la scalabilità (il volume non è limitato dalla capacità di elaborazione dei dati di Ethereum) e riduce le commissioni dell'utente (il costo di pubblicazione di `calldata` è inferiore).
+
+La disponibilità di dati off-chain, tuttavia, presenta un problema: i dati necessari per creare o verificare le prove di Merkle potrebbero non essere disponibili. Questo significa che gli utenti potrebbero non riuscire a prelevare i fondi dal contratto on-chain se gli operatori dovessero agire in modo malevolo.
+
+Varie soluzioni di validium tentano di risolvere questo problema decentralizzando l'archiviazione dei dati di stato. Questo comporta di costringere i produttori di blocchi a inviare i dati sottostanti a "gestori della disponibilità dei dati", responsabili dell'archiviazione dei dati off-chain e di renderli disponibili agli utenti su richiesta.
+
+I gestori della disponibilità dei dati in validium attestano alla disponibilità dei dati per le transazioni off-chain firmando ogni batch del validium. Queste firme costituiscono una forma di "prova di disponibilità", che il contratto di verifica on-chain controlla prima di approvare gli aggiornamenti di stato.
+
+I validium differiscono nel loro approccio alla gestione della disponibilità dei dati. Alcuni si affidano a parti fidate per memorizzare i dati di stato, mentre altri usano dei validatori assegnati casualmente per l'attività.
+
+#### Comitato di disponibilità dei dati (DAC) {#data-availability-committee}
+
+Per garantire la disponibilità di dati off-chain, alcune soluzioni di validium nominano un gruppo di entità fidate, collettivamente note come comitato di disponibilità dei dati (DAC), per memorizzare copie dello stato e fornire prova della disponibilità dei dati. I DAC sono più facili da implementare e richiedono un coordinamento minore, vista la bassa adesione.
+
+Tuttavia, gli utenti devono fidarsi del fatto che i DAC rendono disponibili i dati quando serve (ad es. per generare le prove di Merkle). Esiste la possibilità che i membri del comitato di disponibilità dei dati [siano compromessi da un attore malevolo](https://notes.ethereum.org/DD7GyItYQ02d0ax_X-UbWg?view), che potrebbe poi trattenere i dati off-chain.
+
+[Maggiori informazioni sui comitati di disponibilità dei dati nei validium](https://medium.com/starkware/data-availability-e5564c416424).
+
+#### Disponibilità dei dati vincolata {#bonded-data-availability}
+
+Altri validium richiedono ai partecipanti incaricati di archiviare i dati offline, di mettere in staking (cioè bloccare) i token in un contratto intelligente, prima di assumere i propri ruoli. Questo staking funge da "cauzione" per garantire il comportamento onesto tra i gestori della disponibilità dei dati e riduce le ipotesi di fiducia. Se questi partecipanti non riescono a provare la disponibilità dei dati, la cauzione viene decurtata.
+
+In uno schema di disponibilità dei dati vincolato, chiunque può esser assegnato a detenere dati off-chain una volta fornito lo stake necessario. Questo espande il pool di gestori di disponibilità dei dati idonei, riducendo la centralizzazione che influenza i comitati di disponibilità dei dati (DAC). Ancora più importante, questo approccio si affida a incentivi criptoeconomici per prevenire l'attività malevola, il che è considerevolmente più sicuro che nominare parti fidate per proteggere i dati offline nel validium.
+
+[Maggiori informazioni sulla disponibilità dei dati vincolata nei validium](https://blog.matter-labs.io/zkporter-a-breakthrough-in-l2-scaling-ed5e48842fbf).
+
+## Volizioni e validium {#volitions-and-validium}
+
+I validium offrono molti vantaggi, ma presentano dei compromessi (in particolare, la disponibilità dei dati). Ma, come molte soluzioni di ridimensionamento, i validium sono adatti a casi d'uso specifici, ecco perché sono state create le volizioni.
+
+Le volizioni combinano un rollup ZK e una catena validium e consentono agli utenti di passare tra le due soluzioni di ridimensionamento. Con le volizioni, gli utenti possono approfittare della disponibilità di dati off-chain di validium per determinate transazioni, mantenendo la libertà di passare a una soluzione di disponibilità dei dati on-chain (rollup ZK) se necessario. Questo dà essenzialmente agli utenti la libertà di scegliere i compromessi in base alle loro circostanze specifiche.
+
+Una piattaforma di scambio decentralizzata (DEX) potrebbe preferire l'uso di un'infrastruttura scalabile e privata di validium per gli scambi di valore elevato. Può anche usare un rollup ZK per gli utenti che desiderano le maggiori garanzie di sicurezza e la mancanza di fiducia dei rollup ZK.
+
+## Compatibilità tra validium ed EVM {#validiums-and-evm-compatibility}
+
+Come i rollup ZK, i validium sono per lo più adatti ad applicazioni semplici, come gli scambi di token e i pagamenti. Supportare il calcolo generale e l'esecuzione di contratti intelligenti tra i Validium è difficile da implementare, dato il considerevole sovraccarico del provare le istruzioni dell'[EVM](/developers/docs/evm/) in un circuito di prova a conoscenza zero.
+
+Alcuni progetti di validium provano ad aggirare questo problema compilando linguaggi compatibili all'EVM (es., Solidity, Vyper) per creare bytecode personalizzato e ottimizzato per una prova efficiente. Un inconveniente di questo approccio è che le nuove VM proof-friendly a conoscenza zero potrebbero non supportare importanti opcode dell'EVM, e gli sviluppatori devono scrivere direttamente nel linguaggio di alto livello per un'esperienza ottimale. Questo crea persino più problemi: obbliga gli sviluppatori a creare dapp con uno stack di sviluppo del tutto nuovo e spezza la compatibilità con l'infrastruttura corrente di Ethereum.
+
+Alcuni team, tuttavia, stanno tentando di ottimizzare gli opcode dell'EVM esistenti per i circuiti di prova a conoscenza zero. Questo risulterà nello sviluppo di una Macchina virtuale di Ethereum a conoscenza zero (zkEVM), una VM compatibile all'EVM che produce prove per verificare la correttezza dell'esecuzione del programma. Con una zkEVM, le catene di Validium possono eseguire i contratti intelligenti all'esterno della catena e inviare le prove di validità per verificare un calcolo esterno alla catena (senza doverlo eseguire nuovamente) su Ethereum.
+
+[Maggiori informazioni sulle zkEVM](https://www.alchemy.com/overviews/zkevm).
+
+## Come fanno i validium a ridimensionare Ethereum? {#scaling-ethereum-with-validiums}
+
+### 1. Archiviazione dei dati off-chain {#off-chain-data-storage}
+
+I progetti di ridimensionamento del livello 2, come i rollup ottimistici e a conoscenza zero, rinunciano all'infinita scalabilità dei protocolli di ridimensionamento off-chain puri (ad es. [Plasma](/developers/docs/scaling/plasma/)) in cambio della sicurezza, pubblicando alcuni dati di transazione su L1. Ma questo fa sì che le proprietà di scalabilità dei rollup sia limitata dalla larghezza di banda dei dati sulla Rete principale di Ethereum (lo [sharding dei dati](/upgrades/sharding/) propone di migliorare la capacità di archiviazione dei dati di Ethereum per questo motivo).
+
+I validium ottengono la scalabilità mantenendo tutti i dati della transazione al di fuori della catena e pubblicando gli impegni di stato (e le prove di validità) solo quando ritrasmettono gli aggiornamenti di stato alla catena principale di Ethereum. L'esistenza delle prove di validità, tuttavia, dà ai validium garanzie di sicurezza maggiori rispetto ad altre soluzioni di ridimensionamento off-chain pure, tra cui Plasma e le [sidechain](/developers/docs/scaling/sidechains/). Riducendo la quantità di dati che Ethereum deve elaborare prima di convalidare le transazioni off-chain, i validium estendono enormemente il volume sulla Rete principale.
+
+### 2. Prove ricorsive {#recursive-proofs}
+
+Una prova ricorsiva è una prova di validità che verifica la validità di altre prove. Questa "prova di prove" è generata aggregando diverse prove in modo ricorsivo finché non viene creata una prova finale che verifica tutte le prove precedenti. Le prove ricorsive scalano le velocità d'elaborazione della blockchain aumentando il numero di transazioni verificabili per prova di validità.
+
+Tipicamente, ogni prova di validità che l'operatore del validium invia a Ethereum per la verifica convalida l'integrità di un singolo blocco. Una singola prova ricorsiva può essere utilizzata per confermare la validità di diversi blocchi di validium allo stesso tempo; ciò è possibile poiché il circuito di prova può aggregare in modo ricorsivo diverse prove di blocco in una prova finale. Se il contratto di verifica on-chain accetta la prova ricorsiva, tutti i blocchi sottostanti sono immediatamente finalizzati.
+
+## Pro e contro di validium {#pros-and-cons-of-validium}
+
+| Pro | Contro |
+| ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| Le prove di validità impongono l'integrità delle transazioni off-chain e impediscono agli operatori di finalizzare aggiornamenti di stato non validi. | Produrre le prove di validità richiede hardware speciale, il che pone un rischio di centralizzazione. |
+| Aumenta l'efficienza del capitale per gli utenti (nessun ritardo nel prelievo dei fondi per riportarli su Ethereum) | Supporto limitato al calcolo generale/ai contratti intelligenti; linguaggi specializzati richiesti per lo sviluppo. |
+| Non vulnerabile a certi tipi di attacchi economici subiti da sistemi basati su prove di frode in applicazioni ad alto valore. | Elevata potenza di calcolo per generare le prove ZK; non conveniente per applicazioni a basso volume. |
+| Riduce le commissioni del gas per gli utenti, non pubblicando i calldata alla Rete Principale di Ethereum. | Tempo di finalità soggettiva più limitato (10-30 minuti per generare una prova ZK) ma più veloce per la finalità completa perché non c'è ritardo dovuto ai tempi di contestazione. |
+| Idoneo per casi d'uso specifici, come trading o gaming su blockchain, che danno priorità alla privacy e alla scalabilità della transazione. | Agli utenti può essere impedito il prelievo di fondi poiché la generazione delle prove di Merkle della proprietà richiede la continua disponibilità dei dati off-chain. |
+| La disponibilità di dati off-chain fornisce livelli di volume maggiori e aumenta la scalabilità. | Il modello di sicurezza si affida a ipotesi di fiducia e incentivi cripto-economici, a differenza dei rollup ZK, che si affidano puramente a meccanismi di sicurezza crittografica. |
+
+### Usare validium/volizioni {#use-validium-and-volitions}
+
+Diversi progetti forniscono implementazioni di validium e volizioni che puoi integrare nelle tue dapp:
+
+**StarkWare StarkEx** - _StarkEx è una soluzione di scalabilità del Livello 2 (L2) di Ethereum basata su prove di validità. Può operare in modalità di disponibilità dei dati rollup ZK o validium._
+
+- [Documentazione](https://docs.starkware.co/starkex-v4/starkex-deep-dive/data-availability-modes#validium)
+- [Sito web](https://starkware.co/starkex/)
+
+**Matter Labs zkPorter**- _zkPorter è un protocollo di ridimensionamento del Livello 2 che affronta la disponibilità dei dati con un approccio ibrido che combina le idee dei rollup Zk e dello sharding. Può supportare arbitrariamente molti shard, ognuno con la propria politica di disponibilità dei dati._
+
+- [Documentazione](https://docs.zksync.io/zkevm/#what-is-zkporter)
+- [Sito web](https://zksync.io/)
## Letture consigliate {#further-reading}
- [Validium And The Layer 2 Two-By-Two — Issue No. 99](https://www.buildblockchain.tech/newsletter/issues/no-99-validium-and-the-layer-2-two-by-two)
-
-_Conosci una risorsa pubblica che ti è stata utile? Modifica questa pagina e aggiungila!_
+- [Rollup ZK vs Validium](https://blog.matter-labs.io/zkrollup-vs-validium-starkex-5614e38bc263)
+- [Volition and the Emerging Data Availability spectrum](https://medium.com/starkware/volition-and-the-emerging-data-availability-spectrum-87e8bfa09bb)
+- [Rollups, Validiums, and Volitions: Learn About the Hottest Ethereum Scaling Solutions](https://www.defipulse.com/blog/rollups-validiums-and-volitions-learn-about-the-hottest-ethereum-scaling-solutions)
diff --git a/src/content/translations/it/developers/docs/scaling/zk-rollups/index.md b/src/content/translations/it/developers/docs/scaling/zk-rollups/index.md
index 0631f9c89f0..73f3c012d6d 100644
--- a/src/content/translations/it/developers/docs/scaling/zk-rollups/index.md
+++ b/src/content/translations/it/developers/docs/scaling/zk-rollups/index.md
@@ -1,32 +1,220 @@
---
-title: Rollup a conoscenza zero (zero-knowledge)
-description: Introduzione ai rollup a conoscenza zero
+title: Rollup a conoscenza zero
+description: Un'introduzione ai rollup a conoscenza zero, una soluzione di ridimensionamento usata dalla community di Ethereum.
lang: it
---
+I rollup a conoscenza zero (rollup ZK) sono [soluzioni di ridimensionamento](/developers/docs/scaling/) di livello 2 che aumentano il volume sulla Rete principale di Ethereum spostando il calcolo e l'archiviazione di stato al di fuori della catena. I rollup ZK possono elaborare migliaia di transazioni in un batch e poi pubblicare solo alcuni dati sommari minimi nella Rete principale. Questi dati sommari definiscono i cambiamenti che dovrebbero essere apportati allo stato di Ethereum e alcune prove crittografiche che tali modifiche siano corrette.
+
## Prerequisiti {#prerequisites}
-Occorre avere una buona comprensione di tutti gli argomenti fondamentali ed una conoscenza approfondita della [scalabilità di Ethereum](/developers/docs/scaling/). L'implementazione di soluzioni di scalabilità, come i rollup, è un argomento avanzato in quanto la tecnologia è meno testata sul campo e continua ad essere oggetto di ricerca e sviluppo.
+Dovresti aver letto e compreso la nostra pagina sul [ridimensionamento di Ethereum](/developers/docs/scaling/) e il [livello 2](/layer-2).
+
+## Cosa sono i rollup a conoscenza zero? {#what-are-zk-rollups}
+
+I **rollup a conoscenza zero (rollup ZK)** impacchettano (o 'eseguono il roll up') le transazioni in batch eseguiti al di fuori della catena. Il calcolo off-chain riduce la quantità di dati da pubblicare nella blockchain. Gli operatori del rollup ZK inviano un riepilogo delle modifiche necessarie per rappresentare tutte le transazioni in un batch, piuttosto che inviare individualmente ogni transazione. Inoltre, producono delle [prove di validità](/glossary/#validity-proof) per dimostrare la correttezza delle loro modifiche. La prova di validità dimostra con certezza crittografica che le modifiche proposte allo stato di Ethereum sono veramente il risultato finale dell'esecuzione di tutte le transazioni nel batch.
+
+Lo stato del rollup ZK è mantenuto da un contratto intelligente distribuito sulla rete di Ethereum. Per aggiornare questo stato, i nodi del rollup ZK devono inviare una prova di validità per la verifica. Come accennato, la prova di validità è una garanzia crittografica che il cambiamento di stato proposto dal rollup sia realmente il risultato dell'esecuzione dello specifico batch di transazioni. Questo significa che i rollup ZK devono solo fornire le prove di validità per finalizzare le transazioni su Ethereum invece di pubblicare tutti i dati della transazione on-chain come i [rollup ottimistici](/developers/docs/scaling/optimistic-rollups/).
+
+Spostando i fondi da un rollup ZK a Ethereum non ci sono ritardi perché le transazioni di uscita sono eseguite una volta che il contratto del rollup ZK verifica la prova di validità. Viceversa, il prelievo di fondi dai rollup ottimistici è soggetto a un ritardo per consentire di contestare la transazione di uscita con una [prova di frode](/glossary/#fraud-proof).
+
+I rollup ZK scrivono le transazioni in Ethereum come `calldata`. `calldata` è dove sono archiviati i dati inclusi nelle chiamate esterne alle funzioni del contratto intelligente. Le informazioni in `calldata` sono pubblicate sulla blockchain, consentendo a chiunque di ricostruire lo stato del rollup in modo indipendente. I rollup ZK usano delle tecniche di compressione per ridurre i dati della transazione; ad esempio, i conti sono rappresentati da un indicec, piuttosto che da un indirizzo, risparmiando 28 byte di dati. La pubblicazione dei dati on-chain rappresenta un costo significativo per i rollup, quindi, la compressione dei dati può ridurre le commissioni per gli utenti.
+
+## Come interagiscono i rollup ZK con Ethereum? {#zk-rollups-and-ethereum}
+
+Una catena di rollup ZK è un protocollo esterno alla catena che opera sulla blockchain di Ethereum ed è gestito dai contratti intelligenti sulla catena di Ethereum. I rollup ZK eseguono le transazioni al di fuori della Rete principale, ma impegnano periodicamente batch di transazioni off-chain in un contratto di rollup on-chain. Questo registro di transazioni è immutabile, come la blockchain di Ethereum, e forma la catena di rollup ZK.
+
+L'architettura principale del rollup ZK si compone dei seguenti componenti:
+
+1. **Contratti sulla catena**: come menzionato, il protocollo rollup ZK è controllato da contratti intelligenti eseguiti su Ethereum. Questo include il contratto principale che memorizza i blocchi del rollup, traccia i depositi e monitora gli aggiornamenti di stato. Un altro contratto on-chain (il contratto di verifica) verifica le prove a conoscenza zero inviate dai produttori di blocchi. Dunque, Ethereum serve da livello di base o "livello 1" per il rollup ZK.
+
+2. **Macchina virtuale (VM) off-chain**: benché il protocollo del rollup ZK risieda su Ethereum, l'esecuzione della transazione e l'archiviazione di stato si verificano su una macchina virtuale separata e indipendente dall'[EVM](/developers/docs/evm/). Questa VM off-chain è l'ambiente di esecuzione per le transazioni sul rollup ZK e serve da livello secondario o "livello 2" per il protocollo rollup ZK. Le prove di validità verificate sulla Rete principale di Ethereum garantiscono la correttezza delle transizioni di stato nella VM off-chain.
+
+I rollup ZK sono "soluzioni di ridimensionamento ibride": protocolli off-chain che operano indipendentemente ma derivano la sicurezza da Ethereum. Nello specifico, la rete di Ethereum impone la validità degli aggiornamenti di stato sul rollup ZK e garantisce la disponibilità dei dati dietro ogni aggiornamento allo stato del rollup. Di conseguenza, i rollup ZK sono considerevolmente più sicuri delle soluzioni di ridimensionamento off-chain, come le [sidechain](/developers/docs/scaling/sidechains/), responsabili delle proprie proprietà di sicurezza, o i [validium](/developers/docs/scaling/validiums/), che pur verificando le transazioni su Ethereum con le prove di validità, memorizzano altrove i dati della transazione.
+
+I rollup ZK si affidano al protocollo principale di Ethereum per quanto segue:
+
+### Disponibilità dei dati {#data-availability}
+
+I rollup ZK pubblicano dati di stato per ogni transazione elaborata al di fuori della catena in Ethereum. Con questi dati, è possibile per individui o aziende riprodurre lo stato del rollup e validare la catena da soli. Ethereum rende disponibili questi dati a tutti i partecipanti della rete come `calldata`.
+
+I rollup ZK non necessitano di pubblicare molti dati di transazione sulla catena poiché le prove di validità verificano già l'autenticità delle transizioni di stato. Tuttavia, memorizzare i dati su catena è comunque importante, perché consente la verifica senza permessi e indipendente dello stato della catena del L2, che a sua volta consente a chiunque di inviare batch di transazioni, impedendo agli operatori malevoli di censurare o congelare la catena.
+
+Sulla catena è necessario che gli utenti interagiscano col rollup. Senza l'accesso ai dati di stato, gli utenti non possono richiededre il saldo del proprio conto né avviare transazioni (es., prelievi), che si affidino alle informazioni di stato.
+
+### Finalità della transazione {#transaction-finality}
+
+Ethereum funge da livello di accordo per i rollup ZK: le transazioni del L2 sono finalizzate solo se il contratto del L1 accetta la prova di validità. Questo elimina il rischio che operatori malevoli corrompano la catena (ad es. rubando i fondi del rollup), poiché ogni transazione deve essere approvata sulla Rete principale. Inoltre, Ethereum garantisce che le operazioni degli utenti non siano annullabili una volta finalizzate sul L1.
+
+### Resistenza alla censura {#censorship-resistance}
+
+Gran parte dei rollup ZK usa un "supernodo" (l'operatore) per eseguire le transazioni, produrre batch e inviare blocchi al L1. Se ciò da un lato garantisce efficienza, dall'altro aumenta il rischio di censura: gli operatori malevoli dei rollup ZK possono censurare gli utenti, rifiutandosi di includere le loro transazioni nei batch.
+
+Come misura di sicurezza, i rollup ZK consentono agli utenti di inviare le transazioni direttamente al contratto di rollup sulla Rete principale se pensano di essere stati censurati dall'operatore. Questo consente agli utenti di forzare un'uscita dal rollup ZK a Ethereum senza doversi affidare all'autorizzazione dell'operatore.
+
+## Come funzionano i rollup ZK? {#how-do-zk-rollups-work}
+
+### Transazioni {#transactions}
+
+Gli utenti nel rollup ZK firmano le transazioni e le inviano agli operatori del L2 per l'elaborazione e inclusione nel batch successivo. In alcuni casi, l'operatore è un'entità centralizzata, detta sequenziatore, che esegue le transazioni, le aggrega in batch e le invia al L1. Il sequenziatore, in questo sistema, è l'unica entità autorizzata a produrre blocchi del L2 e aggiungere le transazioni del rollup al contratto del rollup ZK.
+
+Altri rollup ZK potrebbero effettuare la rotazione del ruolo dell'operatore usando una serie di validatori di [proof-of-stake](/developers/docs/consensus-mechanisms/pos/). I potenziali operatori depositano i fondi nel contratto di rollup, con la dimensione di ogni stake che influenza le possibilità che lo staker sia selezionato per produrre il prossimo batch del rollup. Lo stake dell'operatore può essere oggetto di slashing se agisce malevolmente, il che lo incentiva a pubblicare blocchi validi.
+
+#### Come i rollup ZK pubblicano i dati delle transazioni su Ethereum {#how-zk-rollups-publish-transaction-data-on-ethereum}
+
+Come spiegato, i dati della transazione sono pubblicati su Ethereum come `calldata`. `calldata` è un'area di dati in un contratto intelligente, usata per passare gli argomenti a una funzione e si comporta similmente alla [memoria](/developers/docs/smart-contracts/anatomy/#memory). Benché i `calldata` non siano memorizzati come parte dello stato di Ethereum, persistono sulla catena come [registri storici](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html?highlight=memory#logs) della catena di Ethereum. `calldata` non influenza lo stato di Ethereum, il che la rende un metodo economico per memorizzare i dati su catena.
+
+La parola chiave `calldata` identifica spesso il metodo del contratto intelligente chiamato da una transazione e trattiene gli input del metodo sotto forma di una sequenza arbitraria di byte. I rollup ZK usano `calldata` per pubblicare i dati di transazione compressi sulla catena; l'operatore del rollup aggiunge semplicemente un nuovo batch chiamando la funzione necessaria nel contratto di rollup e passa i dati compressi come argomenti della funzione. Questo aiuta a ridurre i costi per gli utenti poiché gran parte delle commissioni del rollup vanno verso la memorizzazione dei dati della transazione su catena.
+
+### Impegni di stato {#state-commitments}
+
+Lo stato del rollup ZK, che include conti e saldi del L2, è rappresentato come un [albero di Merkle](/whitepaper/#merkle-trees). Un hash crittografico della radice dell'albero di Merkle (radice di Merkle) è memorizzato nel contratto on-chain, consentendo al protocollo di rollup di tracciare le modifiche allo stato del rollup ZK.
+
+Il rollup transita a un nuovo stato dopo l'esecuzione di una nuova serie di transazioni. L'operatore che ha avviato la transizione di stato deve calcolare una nuova radice di stato e inviarla al contratto on-chain. Se la prova di validità associata al batch è autenticata dal contratto di verifica, la nuova radice di Merkle diventa la radice di stato canonica del rollup ZK.
+
+Oltre a calcolare le radici di stato, l'operatore del rollup ZK crea inoltre una radice del batch, la radice di un albero di Merkle che comprende tutte le transazioni in un batch. Quando viene inviato un nuovo batch, il contratto di rollup memorizza la radice del batch, consentendo agli utenti di provare che una transazione (ad es. una richiesta di prelievo) sia stata inclusa nel batch. Gli utenti dovranno fornire i dettagli della transazione, la radice del batch e una [prova di Merkle](/developers/tutorials/merkle-proofs-for-offline-data-integrity/) che mostri il percorso d'inclusione.
+
+### Prove di validità {#validity-proofs}
+
+La nuova radice di stato che l'operatore del rollup ZK invia al contratto del L1 è il risultato degli aggiornamenti allo stato del rollup. Diciamo che Alice invia 10 token a Bob, l'operatore semplicemente riduce il saldo di Alice di 10 e aumenta il saldo di Bob di 10. Poi, l'operatore esegue l'hashing dei dati del conto aggiornati, ricostruisce l'albero di Merkle del rollup e invia la nuova radice di Merkle al contratto su catena.
+
+Ma il contratto del rollup non accetterà automaticamente l'impegno di stato proposto finché l'operatore non proverà che la nuova radice di Merkle risultava dagli aggiornamenti allo stato del rollup corretti. L'operatore del rollup ZK lo fa producendo una prova di validità, un impegno crittografico succinto che verifica la correttezza delle transazioni raggruppate.
+
+Le prove di validità consentono alle parti di provare la correttezza di una istruzione senza rivelarla, per questo sono anche dette prove a conoscenza zero. I rollup ZK usano le prove di validità per confermare la correttezza delle transizioni di stato off-chain, senza dover eseguire di nuovo le transazioni su Ethereum. Queste prove possono assumere la forma di uno [ZK-SNARK](https://arxiv.org/abs/2202.06877) (argomento di conoscenza succinto non interattivo a conoscenza zero) o di uno [ZK-STARK](https://eprint.iacr.org/2018/046) (argomento di conoscenza trasparente e scalabile a conoscenza zero).
+
+Sia gli SNARK che gli STARK aiutano ad attestare all'integrità del calcolo off-chain nei rollup ZK, sebbene ogni tipo di prova abbia funzionalità distinte.
+
+**ZK-SNARK**
+
+Perché il protocollo ZK-SNARK funzioni, è necessario creare una Stringa di riferimento comune (CRS): la CRS fornisce i parametri pubblici per provare e verificare le prove di validità. La sicurezza del sistema di prova dipende dalla configurazione della CRS; se le informazioni usate per creare i parametri pubblici finiscono nelle mani di utenti malevoli, potrebbero generare prove di validità false.
+
+Alcuni rollup ZK tentano di risolvere questo problema usando una [cerimonia di calcolo multi-parte(MPC)](https://zkproof.org/2021/06/30/setup-ceremonies/amp/), coinvolgendo individui fidati, per generare i parametri pubblici per il circuito ZK-SNARK. Ogni parte apporta una certa casualità (detta "rifiuti tossici") alla costruzione della CRS, che deve distruggere immediatamente.
+
+Le configurazioni attendibili sono usate perché aumentano la sicurezza della configurazione della CRS. Finché un partecipante onesto distrugge il proprio input, la sicurezza del sistema ZK-SNARK è garantita. Tuttavia, questo approccio richiede comunque di fidarsi del fatto che i soggetti coinvolti elimineranno la loro casualità e non comprometteranno le garanzie di sicurezza del sistema.
+
+Ipotesi di fiducia a parte, gli ZK-SNARK sono popolari per le prove di piccole dimensioni e la verifica costante. Poiché la verifica della prova sul L1 costituisce il costo maggiore della gestione di un rollup ZK, gli L2 usano gli ZK-SNARK per generare prove verificabili in modo rapido ed economico sulla Rete principale.
+
+**ZK-STARK**
+
+Come gli ZK-SNARK, gli ZK-STARK provano la validità del calcolo off-chain senza rilevare gli input. Tuttavia, gli ZK-STARK sono considerati un miglioramento degli ZK-SNARK per la loro scalabilità e trasparenza.
+
+Gli ZK-STARK sono "trasparenti", potendo lavorare senza la configurazione attendibile di una stringa di riferimento comune (CRS). Invece, gli ZK-STARK si affidano alla casualità verificabile pubblicamente per configurare i parametri per generare e verificare le prove.
+
+Gli ZK-STARK forniscono inoltre una maggiore scalabilità perché il tempo necessario per provare e verificare le prove di validità aumenta _quasi linearmente_ rispetto alla complessità del calcolo sottostante. Con gli ZK-SNARK, la prova e la verifica dei tempi scalano _linearmente_ in rapporto alle dimensioni del calcolo sottostante. Questo significa che gli ZK-STARK richiedono meno tempo degli ZK-SNARK per provare e verificare quando sono coinvolti grandi serie di dati, rendendoli utili per le applicazioni a volume elevato.
+
+Gli ZK-STARK proteggono inoltre dai computer quantistici, mentre è opinione diffusa che la Crittografia a curva ellittica (ECC) usata negli ZK-SNARK sia suscettibile agli attacchi di calcolo quantistico. Lo svantaggio degli ZK-STARK è che producono prove di dimensioni maggiori, che sono più costose da verificare su Ethereum. Inoltre, non supportano la ricorsività, che è la chiave per scalare i calcoli off-chain con le prove a conoscenza zero.
-Stai cercando una risorsa più adatta ai principianti? Consulta la nostra [introduzione al livello 2](/layer-2/).
+#### Come funzionano le prove di validità nei rollup ZK? {#validity-proofs-in-zk-rollups}
-## Rollup a conoscenza zero (zero-knowledge) {#zk-rollups}
+##### Generazione della prova
-I **rollup a conoscenza zero (rollup ZK)** inglobano (o "avvolgono") centinaia di trasferimenti al di fuori della catena e generano una prova crittografica. Queste prove possono essere sotto forma di SNARK (argomenti di conoscenza succinti non interattivi) o STARK (argomenti di conoscenza trasparenti e scalabili). SNARK e STARK sono noti come prove di validità e sono pubblicati al livello 1.
+Prima di accettare le transazioni, l'operatore eseguirà i soliti controlli. Questo include confermare che:
-Il contratto intelligente del rollup ZK mantiene lo stato di tutti i trasferimenti sul livello 2 e, questo stato, è aggiornabile solo con una prova di validità. Questo significa che i rollup ZK necessitano solo della prova di validità invece di tutti i dati della transazione. Con un rollup ZK, convalidare un blocco è più rapido ed economico perché sono inclusi meno dati.
+- I conti del mittente e del destinatario sono parte dell'albero di stato.
+- Il mittente abbia abbastanza fondi per procedere con la transazione.
+- La transazione sia corretta e corrisponda alla chiave pubblica del mittente sul rollup.
+- Il nonce del mittente sia corretto, ecc.
-Con un rollup ZK, non ci sono ritardi spostando i fondi dal livello 2 all'1, poiché una prova di validità accettata dal contratto del rollup ZK ha già verificato i fondi.
+Una volta che il nodo del rollup ZK ha abbastanza transazioni, le aggrega in un batch e compila gli input per il circuito di prova da compilare in una prova ZK succinta. Questo include:
-Essendo sul livello 2, i rollup ZK sono ottimizzabili per ridurre ulteriormente le dimensioni della transazione. Ad esempio, un account è rappresentato da un indice anziché da un indirizzo, riducendo la transazione da 32 byte a soli 4 byte. Le transazioni sono scritte in Ethereum anche come `calldata`, riducendo il gas.
+- Un albero di Merkle che comprenda tutte le transazioni nel batch.
+- Le prove di Merkle per le transazioni per provare l'inclusione nel batch.
+- Prove di Merkle per ogni coppia mittente-destinatario nelle transazioni, per provare che questi conti facciano parte dell'albero di stato del rollup.
+- Una serie di radici di stato intermedie, derivate dall'aggiornamento della radice di stato dopo l'applicazione degli aggiornamenti di stato per ogni transazione (cioè, la riduzione dei conti dei mittente e l'aumento dei conti dei destinatari).
-### Pro e contro {#zk-pros-and-cons}
+Il circuito di prova calcola la prova di validità eseguendo a "ciclo" ogni transazione ed eseguendo gli stessi controlli che l'operatore ha completato prima di elaborare la transazione. Prima, verifica che il conto del mittente sia parte della radice di stato, utilizzando la prova di Merkle fornita. Poi, riduce il saldo del mittente, ne aumenta il nonce, esegue l'hashing dei dati aggiornati del conto e li combina con la prova di Merkle per generare una nuova radice di Merkle.
-| Pro | Contro |
-| -------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
-| Tempo di finalizzazione più veloce, poiché lo stato è verificato istantaneamente una volta che le prove sono inviate alla catena principale. | Alcuni non sono supportati dall'EVM. |
-| Non vulnerabile agli attacchi economici a cui i [rollup ottimistici](#optimistic-pros-and-cons) possono essere esposti. | Le prove di validità sono difficili da calcolare, non ne vale la pena per applicazioni con poca attività sulla catena. |
-| Sicuro e decentralizzato, dal momento che i dati necessari per recuperare lo stato sono sulla catena del livello 1. | Un operatore può influenzare l'ordine della transazione |
+Questa radice di Merkle riflette il solo cambiamento nello stato del rollup ZK: un cambiamento nel saldo e nel nonce del mittente. Ciò è possibile perché la prova di Merkle, usata per provare l'esistenza del conto, è usata per derivare la nuova radice di stato.
+
+Il circuito di prova esegue lo stesso processo sul conto del destinatario. Verifica se il conto del destinatario esiste sotto la radice di stato intermedia (usando la prova di Merkle), ne aumenta il saldo, esegue nuovamente l'hashing dei dati e li combina con la prova di Merkle per generare una nuova radice di stato.
+
+Il processo si ripete per ogni transazione; ogni "ciclo" crea una nuova radice di stato dall'aggiornamento del conto del mittente e una successiva nuova radice dall'aggiornamento del conto del destinatario. Come spiegato, ogni aggiornamento alla radice di stato rappresenta il cambiamento di una parte dell'albero di stato del rollup.
+
+Il circuito di prova ZK itera a ciclo di intero batch di transazioni, verificando la sequenza di aggiornamenti risultante in una radice di stato finale dopo l'esecuzione dell'ultima transazione. L'ultima radice di Merkle calcolata diventa la più recente radice di stato canonica del rollup ZK.
+
+##### Verifica della prova
+
+Dopo che il circuito di prova verifica la correttezza degli aggiornamenti di stato, l'operatore del L2 invia la prova di validità calcolata al contratto di verifica sul L1. Il circuito di verifica del contratto verifica la validità della prova oltre a controllare gli input pubblici che formano parte della prova:
+
+- **Radice di pre-stato**: la vecchia radice di stato del rollup ZK (cioè, prima dell'esecuzione delle transazioni raggruppate) che riflette l'ultimo stato valido noto della catena del L2.
+
+- **Radice di post-stato**: la nuova radice di stato del rollup ZK (cioè, dopo l'esecuzione delle transazioni raggruppate) che riflette lo stato più recente della catena del L2. La radice di post-stato è la radice finale derivata dopo aver applicato gli aggiornamenti di stato nel circuito di prova.
+
+- **Radice del batch**: la radice di Merkle del batch, derivata dalla _merklizzazione_ delle transazioni nel batch e dell'hashing della radice dell'albero.
+
+- **Input della transazione**: dati associati alle transazioni eseguite come parte del batch inviato.
+
+Se la prova soddisfa il circuito (cioè è valida), significa che esiste una sequenza di transazioni valide che fa transitare il rollup dallo stato precedente (con fingerprint crittografica dalla radice di pre-stato) a uno nuovo (con fingerprint crittografica dalla radice di post-stato). Se la radice di pre-stato corrisponde a quella memorizzata nel contratto di rollup e la prova è valida, il contratto di rollup prende la radice di post-stato dalla prova e aggiorna il suo albero di stato per riflettere lo stato cambiato del rollup.
+
+### Entrate e uscite {#entries-and-exits}
+
+Gli utenti entrano nel rollup ZK depositando i token nel contratto di rollup distribuito sulla catena del L1. Questa transazione è accodata poiché solo gli operatori possono inviare le transazioni al contratto di rollup.
+
+Se la coda di depositi in sospeso inizia a riempirsi, l'operatore del rollup ZK prenderà le transazioni di deposito e le invierà al contratto del rollup. Una volta che i suoi fondi sono nel rollup, l'utente può iniziare a eseguire transazioni inviando le transazioni all'operatore per l'elaborazione. Gli utenti possono verificare i saldi sul rollup eseguendo l'hashing dei dati del loro conto, inviando l'hash al contratto di rollup e fornendo una prova di Merkle per verificare rispetto alla radice di stato corrente.
+
+Il prelievo da un rollup ZK al L1 è semplice. L'utente avvia la transazione d'uscita, inviando le proprie risorse sul rollup a un conto specificato, per bruciarle. Se l'operatore include la transazione nel batch successivo, l'utente può inviare una richiesta di prelievo al contratto on-chain. Questa richiesta di prelievo includerà quanto segue:
+
+- Prova di Merkle che dimostra l'inclusione della transazione dell'utente al conto di bruciatura nel gruppo di transazioni
+
+- Dati di transazione
+
+- Radice del batch
+
+- Indirizzo del L1 per ricevere i fondi depositati
+
+Il contratto di rollup esegue l'hashing dei dati di transazione, verifica l'esistenza della radice del batch e usa la prova di Merkle per verificare se l'hash della transazione è parte della radice del batch. Dopodiché, il contratto esegue la transazione di uscita e invia i fondi all'indirizzo scelto dall'utente sul L1.
+
+## Rollup ZK e compatibilità con l'EVM {#zk-rollups-and-evm-compatibility}
+
+A differenza dei rollup ottimistici, i rollup ZK non sono facilmente compatibili con la [Macchina Virtuale di Ethereum (EVM)](/developers/docs/evm/). Fornire calcoli dell'EVM a scopo generale nei circuiti è più difficile e ha uso di risorse più elevato che dimostrare calcoli semplici (come il trasferimento di token descritto precedentemente).
+
+Tuttavia, i [progressi nella tecnologia a conoscenza zero](https://hackmd.io/@yezhang/S1_KMMbGt#Why-possible-now) stanno accendendo un rinnovato interesse verso l'avvolgimento dei calcoli dell'EVM nelle prove a conoscenza zero. Questi sforzi sono orientati alla creazione dell'implementazione di un'EVM a conoscenza zero (zkEVM) che possa verificare efficientemente la correttezza dell'esecuzione del programma. Una zkEVM ricrea gli opcode esistenti dell'EVM per la prova/verifica nei circuiti, consentendo l'esecuzione dei contratti intelligenti.
+
+Come l'EVM, una zkEVM transita tra gli stati dopo che il calcolo è eseguito su alcuni input. La differenza è che la zkEVM crea anche prove a conoscenza zero per verificare la correttezza di ogni passaggio nell'esecuzione del programma. Le prove di validità potrebbero verificare la correttezza delle operazioni che toccano lo stato della VM (memoria, stack, archiviazione) e il calcolo stesso (cioè, l'operazione ha chiamato gli opcode esatti e li ha eseguiti correttamente?).
+
+L'introduzione dei rollup ZK compatibili con l'EVM è prevista per aiutare gli sviluppatori a sfruttare le garanzie di scalabilità e sicurezza delle prove a conoscenza zero. Ancora più importante, la compatibilità con l'infrastruttura nativa di Ethereum fa sì che gli sviluppatori possano creare dapp con funzionalità ZK usando strumenti e linguaggi familiari (e collaudati).
+
+## Come funzionano le commissioni del rollup ZK? {#how-do-zk-rollup-fees-work}
+
+Quanto gli utenti pagano per le transazioni sui rollup ZK, dipende dalla commissione del gas, proprio come sulla Rete Principale di Ethereum. Tuttavia, le commissioni sul gas funzionano diversamente sul L2 e sono influenzate dai seguenti costi:
+
+1. **Scrittura di stato**: esiste un costo fisso per scrivere allo stato di Ethereum (cioè, inviare una transazione alla blockchain di Ethereum). I rollup ZK riducono questo costo raggruppando le transazioni e distribuendo i costi fissi per più utenti.
+
+2. **Pubblicazione dei dati**: i rollup ZK pubblicano i dati di stato per ogni transazione in Ethereum come `calldata`. I costi di `calldata` sono correntemente disciplinati dall'[EIP-1559](https://eips.ethereum.org/EIPS/eip-1559), che stipola un costo di 16 gas per i byte diversi da zero e di 4 gas per i byte zero di `calldata`, rispettivamente. Il costo pagato su ogni transazione è influenzato dalla quantità di `calldata` da pubblicare sulla catena per essa.
+
+3. **Commissioni dell'operatore del L2**: questo è l'importo pagato all'operatore del rollup come compenso per i costi di calcolo sostenuti nell'elaborazione delle transazioni, proprio come le commissioni del miner su Ethereum.
+
+4. **Generazione e verifica della prova**: gli operatori del rollup ZK devono produrre prove di validità per i batch di transazioni, il che impiega molte risorse. Anche verificare le prove a conoscenza zero sulla Rete Principale costa del gas (circa 500.000 gas).
+
+Oltre a raggruppare le transazioni, i rollup ZK riducono le commissioni per gli utenti comprimendo i dati della transazione. Puoi [vedere una panoramica in tempo reale](https://l2fees.info/) di quanto costa usare i rollup ZK di Ethereum.
+
+## Come fanno i rollup ZK a ridimensionare Ethereum? {#scaling-ethereum-with-zk-rollups}
+
+### Compressione dei dati della transazione {#transaction-data-compression}
+
+I rollup ZK estendono il volume sul livello di base di Ethereum portando il calcolo al di fuori della catena, ma la vera spinta per il ridimensionamento proviene dalla compressione dei dati delle transazioni. La [dimensione del blocco](/developers/docs/blocks/#block-size) di Ethereum limita i dati che ogni blocco può contenere e, di conseguenza, il numero di transazioni elaborate per blocco. Comprimendo i dati correlati alle transazioni, i rollup ZK aumentano significativamente il numero di transazioni elaborate per blocco.
+
+I rollup ZK possono comprimere i dati di transazione meglio dei rollup ottimistici, poiché non devono pubblicare tutti i dati richiesti per validare ogni transazione. Devono solo pubblicare i dati minimi richiesti per ricostruire l'ultimo stato dei conti e saldi sul rollup.
+
+### Prove ricorsive {#recursive-proofs}
+
+Un vantaggio delle prove a conoscenza zero è che le prove possono verificare altre prove. Ad esempio, uno ZK-SNARK singolo può verificare altri ZK-SNARK. Tale "prova delle prove" è detta prova ricorsiva e aumenta drasticamente il volume sui rollup ZK.
+
+Attualmente le prove di validità sono generate blocco per blocco e inviate al contratto del L1 per la verifica. Tuttavia, verificare singole prove di blocco limita il volume che i rollup ZK possono ottenere poiché solo un blocco può essere finalizzato quando l'operatore invia una prova.
+
+Le prove ricorsive, invece, permettono di finalizzare diversi blocchi con una sola prova di validità. Questo perché il circuito di prova aggrega ricorsivamente svariate prove di blocco finché non viene creata una prova finale. L'operatore del L2 invia questa prova ricorsiva e, se il contratto la accetta, tutti i blocchi pertinenti saranno finalizzati istantaneamente. Con le prove ricorsive, il numero di transazioni del rollup ZK finalizzabili su Ethereum a intervalli aumenta.
+
+### Pro e contro dei rollup ZK {#zk-rollups-pros-and-cons}
+
+| Pro | Contro |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| Le prove di validità assicurano la correttezza delle transazioni off-chain e impediscono agli operatori di eseguire le transizioni di stato non valide. | Il costo associato al calcolo e alla verifica delle prove di validità è sostanziale e può aumentare le commissioni per gli utenti del rollup. |
+| Offre una finalità della transazione più veloce in quanto gli aggiornamenti di stato sono approvati quando le prove di validità sono verificate sul L1. | Creare rollup ZK compatibili con l'EVM è difficile a causa della complessità della tecnologia a conoscenza zero. |
+| Si basa su meccanismi crittografici senza fiducia per la sicurezza, non sull'onestà degli attori incentivati come nei [rollup ottimistici](/developers/docs/scaling/optimistic-rollups/#optimistic-pros-and-cons). | Produrre le prove di validità richiede hardware specializzato, che potrebbe incoraggiare il controllo centralizzato della catena da alcune parti. |
+| Memorizza i dati necessari a recuperare lo stato off-chain sul L1, garantendo sicurezza, resistenza alla censura e decentralizzazione. | Gli operatori centralizzati (sequenziatori) possono influenzare l'ordine delle transazioni. |
+| Gli utenti beneficiano di una maggiore efficienza del capitale e possono prelevare fondi dal L2 senza ritardi. | I requisiti hardware potrebbero ridurre il numero di partecipanti che possono forzare la catena a fare progressi, aumentando il rischio che gli operatori malevoli congelino lo stato del rollup e censurino gli utenti. |
+| Non dipende dalle ipotesi di liveness e gli utenti non devono validare la catena per proteggere i propri fondi. | Alcuni sistemi di prova (es. ZK-SNARK) richiedono una configurazione attendibile che, se mal gestita, potrebbe potenzialmente compromettere il modello di sicurezza di un rollup ZK. |
+| Una migliore compressione dei dati può aiutare a ridurre i costi della pubblicazione di `calldata` su Ethereum e minimizzare le commissioni del rollup per gli utenti. | |
### Una spiegazione grafica dei rollup ZK {#zk-video}
@@ -40,8 +228,26 @@ Esistono molteplici implementazioni dei rollup ZK che puoi integrare nelle tue d
-**Lettura dei rollup ZK**
+## Chi sta lavorando a una zkEVM? {#zkevm-projects}
+
+I progetti che stanno lavorando alle zkEVM includono:
+
+- **[ZKSync](https://docs.zksync.io/zkevm/)** - _ZkSync 2.0 è un rollup ZK compatibile con l'EVM creato da Matter Labs, basato sulla propria zkEVM._
+
+- **[Applied ZKP](https://github.com/privacy-scaling-explorations/zkevm-specs)** - _Applied ZKP è un progetto finanziato dalla Ethereum Foundation per sviluppare un rollup ZK compatibile con l'EVM e un meccanismo per generare prove di validità per i blocchi di Ethereum._
+
+- **[Scroll](https://scroll.io/blog/zkEVM)** - _Scroll è un'azienda orientata alla tecnologia che sta lavorando alla creazione di una Soluzione di Livello 2 dello zkEVM nativa per Ethereum._
+
+- **[Polygon Hermez](https://docs.hermez.io/zkEVM/architecture/introduction/)** - _Hermez 2.0 è un Rollup ZK decentralizzato sulla rete principale di Ethereum che opera su una Macchina Virtuale di Ethereum a conoscenza zero (zkEVM) ed eseguite le transazioni di Ethereum in modo trasparente, includendo i contratti intelligenti con validazioni di prova a conoscenza zero._
+
+## Ulteriori letture sui rollup ZK {#further-reading-on-zk-rollups}
-- [Cosa sono i rollup a conoscenza zero?](https://coinmarketcap.com/alexandria/glossary/zero-knowledge-rollups)
-- [EthHub sui rollup ZK](https://docs.ethhub.io/ethereum-roadmap/layer-2-scaling/zk-rollups/)
-- [STARK vs SNARK](https://consensys.net/blog/blockchain-explained/zero-knowledge-proofs-starks-vs-snarks/)
+- [What Are Zero-Knowledge Rollups?](https://coinmarketcap.com/alexandria/glossary/zero-knowledge-rollups)
+- [What are zero-knowledge rollups?](https://alchemy.com/blog/zero-knowledge-rollups)
+- [EthHub on ZK-rollups](https://docs.ethhub.io/ethereum-roadmap/layer-2-scaling/zk-rollups/)
+- [STARKs vs SNARKs](https://consensys.net/blog/blockchain-explained/zero-knowledge-proofs-starks-vs-snarks/)
+- [What is a zkEVM?](https://www.alchemy.com/overviews/zkevm)
+- [Intro to zkEVM](https://hackmd.io/@yezhang/S1_KMMbGt)
+- [Awesome-zkEVM resources](https://github.com/LuozhuZhang/awesome-zkevm)
+- [ZK-SNARKS under the hood](https://vitalik.ca/general/2017/02/01/zk_snarks.html)
+- [How are SNARKs possible?](https://vitalik.ca/general/2021/01/26/snarks.html)
diff --git a/src/content/translations/it/developers/docs/smart-contracts/anatomy/index.md b/src/content/translations/it/developers/docs/smart-contracts/anatomy/index.md
index 70953b53f70..e24b4fe710f 100644
--- a/src/content/translations/it/developers/docs/smart-contracts/anatomy/index.md
+++ b/src/content/translations/it/developers/docs/smart-contracts/anatomy/index.md
@@ -1,18 +1,18 @@
---
-title: Anatomia degli Smart Contract
-description: "Uno sguardo più da vicino agli Smart Contract: funzioni, dati e variabili."
+title: Anatomia dei contratti intelligenti
+description: "Uno sguardo approfondito all'anatomia di un contratto intelligente: le funzioni, i dati e le variabili."
lang: it
---
-Uno Smart Contract è un programma che viene eseguito a un indirizzo di Ethereum. È composto di dati e funzioni che entrano in esecuzione appena si riceve una transazione. Ecco una panoramica di cosa costituisce uno Smart Contract.
+Un contratto intelligente è un programma eseguito a un indirizzo su Ethereum. È composto di dati e funzioni che entrano in esecuzione appena si riceve una transazione. Ecco una panoramica di cosa compone un contratto intelligente.
### Prerequisiti {#prerequisites}
-È necessario avere famigliarità con gli [Smart Contract](/developers/docs/smart-contracts/). Questa pagina presuppone che si conoscano i linguaggi di programmazione come JavaScript o Python.
+Prima, assicurati di aver letto a riguardo dei [contratti intelligenti](/developers/docs/smart-contracts/). Questa pagina presuppone che si conoscano i linguaggi di programmazione come JavaScript o Python.
## Dati {#data}
-Tutti i dati del contratto devono essere assegnati a una posizione: `storage` oppure ` memory`. Modificare lo storage in uno Smart Contract è dispendioso, perciò è opportuno valutare in anticipo dove devono essere posizionati i dati.
+Tutti i dati del contratto devono essere assegnati a una posizione: `storage` oppure ` memory`. Modificare l'archiviazione in un contratto intelligente è dispendioso, devi quindi considerare dove dovrebbero risiedere i tuoi dati.
### Storage {#storage}
@@ -56,7 +56,7 @@ Per ulteriori spiegazioni, consulta la documentazione:
I valori che vengono memorizzati solo per la durata di esecuzione di una funzione di contratto sono detti variabili di memoria. Dal momento che non sono memorizzati in modo permanente sulla blockchain, sono molto più economici da usare.
-Scopri di più su come l'EVM memorizza i dati (storage, memory e stack) in [Solidity docs](https://solidity.readthedocs.io/en/latest/introduction-to-smart-contracts.html?highlight=memory#storage-memory-and-the-stack).
+Scopri di più su come l'EVM memorizza i dati (Archiviazione, Memoria e lo Stack), nella [documentazione di Solidity](https://solidity.readthedocs.io/en/latest/introduction-to-smart-contracts.html?highlight=memory#storage-memory-and-the-stack).
### Variabili d'ambiente {#environment-variables}
@@ -165,7 +165,7 @@ Oltre alle variabili che vengono definite nel contratto, sono presenti alcune fu
- `address.send()` – Solidity
- `send(address)` – Vyper
-Queste permettono ai contratti di inviare ETH ad altri account.
+Queste, consentono ai contratti di inviare ETH agli altri conti.
## Scrivere funzioni {#writing-functions}
@@ -203,7 +203,7 @@ Un contratto completo potrebbe avere questa forma. Qui la funzione `constructor`
## Eventi e log {#events-and-logs}
-Gli eventi consentono di comunicare con uno Smart Contract dal frontend o da altre applicazioni che prevedono un'iscrizione. In seguito al mining di una transazione, gli Smart Contract possono emettere eventi e scrivere log sulla blockchain che il frontend può quindi elaborare.
+Gli eventi ti consentono di comunicare con il tuo contratto intelligente dal tuo frontend o da altre applicazioni che prevedono un'iscrizione. Quando una transazione è minata, i contratti intelligenti possono emettere eventi e scrivere registri alla blockchain, che il frontend può poi elaborare.
## Esempi commentati {#annotated-examples}
@@ -641,7 +641,7 @@ contract CryptoPizza is IERC721, ERC165 {
## Letture consigliate {#further-reading}
-Consulta la documentazione di Solidity e Vyper per una panoramica più completa degli Smart Contract:
+Dai un'occhiata alla documentazione di Solidity e Vyper per una panoramica più complessa dei contratti intelligenti:
- [Solidity](https://solidity.readthedocs.io/)
- [Vyper](https://vyper.readthedocs.io/)
@@ -653,6 +653,6 @@ Consulta la documentazione di Solidity e Vyper per una panoramica più completa
## Tutorial correlati {#related-tutorials}
-- [Downsizing contracts to fight the contract size limit](/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/) _– Alcuni consigli pratici per ridurre la dimensione degli Smart Contract._
-- [Logging data from Smart Contract with events](/developers/tutorials/logging-events-smart-contracts/) _– Introduzione agli eventi degli Smart Contract e come utilizzarli per registrare dati._
-- [Interact with other contracts from Solidity](/developers/tutorials/interact-with-other-contracts-from-solidity/) _– Come distribuire uno Smart Contract da un contratto esistente e interagirvi._
+- [Ridimensionare i contratti per contrastare il limite di dimensioni del contratto](/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/): _Alcuni consigli pratici per ridurre le dimensioni del tuo contratto intelligente._
+- [Registrare dati dai contratti intelligenti con gli eventi](/developers/tutorials/logging-events-smart-contracts/): _Un'introduzione agli eventi dei contratti intelligenti e a come puoi usarli per registrare i dati._
+- [Interagire con gli altri contratti da Solidity](/developers/tutorials/interact-with-other-contracts-from-solidity/): _Come distribuire un contratto intelligente da un contratto esistente e interagirvi._
diff --git a/src/content/translations/it/developers/docs/smart-contracts/compiling/index.md b/src/content/translations/it/developers/docs/smart-contracts/compiling/index.md
index c3a8a2a5a22..16713fb4d3b 100644
--- a/src/content/translations/it/developers/docs/smart-contracts/compiling/index.md
+++ b/src/content/translations/it/developers/docs/smart-contracts/compiling/index.md
@@ -1,6 +1,6 @@
---
-title: Compilazione di Smart Contract
-description: Spiegazione del motivo per cui è necessario compilare Smart Contract e cosa succede durante la compilazione.
+title: Compilazione dei contratti intelligenti
+description: Una spiegazione del perché devi compilare i contratti intelligenti e di cosa succede effettivamente durante la compilazione.
lang: it
incomplete: true
---
@@ -9,7 +9,7 @@ incomplete: true
## Prerequisiti {#prerequisites}
-Potresti trovare utile la nostra introduzione agli [Smart Contract](/developers/docs/smart-contracts/) e alla [macchina virtuale Ethereum](/developers/docs/evm/) prima di passare alla compilazione.
+Potresti trovare utile leggere la nostra introduzione ai [Contratti Intelligenti](/developers/docs/smart-contracts/) e alla [Macchina Virtuale Ethereum](/developers/docs/evm/) prima di passare alla compilazione.
## L'EVM {#the-evm}
@@ -37,9 +37,9 @@ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x
Il compilatore produce anche l'**Application Binary Interface (ABI)** che serve all'applicazione per capire il contratto e per chiamarne le funzioni.
-L'ABI è un file JSON che descrive il contratto distribuito e le sue funzioni di Smart Contract. Contribuisce a colmare il divario tra web2 e web3
+L'ABI è un file JSON che descrive il contratto distribuito e le funzioni del suo contratto intelligente. Contribuisce a colmare il divario tra web2 e web3
-Una [libreria client JavaScript](/developers/docs/apis/javascript/) leggerà l'**ABI** per poter chiamare lo Smart Contract nell'interfaccia dell'applicazione web.
+Una [libreria del client JavaScript](/developers/docs/apis/javascript/) leggerà l'**ABI** per poter chiamare il tuo contratto intelligente nell'interfaccia della tua app web.
Di seguito è riportato l'ABI per il contratto token ERC-20. Un ERC-20 è un token che puoi scambiare su Ethereum.
diff --git a/src/content/translations/it/developers/docs/smart-contracts/composability/index.md b/src/content/translations/it/developers/docs/smart-contracts/composability/index.md
index fa5c7f90e99..1bda2adc773 100644
--- a/src/content/translations/it/developers/docs/smart-contracts/composability/index.md
+++ b/src/content/translations/it/developers/docs/smart-contracts/composability/index.md
@@ -1,5 +1,5 @@
---
-title: Componibilità degli Smart Contract
+title: Componibilità dei contratti intelligenti
description:
lang: it
incomplete: true
@@ -7,23 +7,23 @@ incomplete: true
## Breve introduzione {#a-brief-introduction}
-Gli Smart Contract sono pubblici su Ethereum e possono essere considerati come API aperte. Non serve scrivere uno Smart Contract personalizzato per diventare sviluppatore di dapp, basta sapere come interagirvi. Ad esempio, puoi utilizzare gli Smart Contract esistenti di [Uniswap](https://uniswap.exchange/swap), una piattaforma di scambio decentralizzata, per gestire tutta la logica di scambio di token in un'app, non è necessario iniziare da zero. Dai un'occhiata ai loro contratti [v2](https://github.com/Uniswap/uniswap-v2-core/tree/master/contracts) e [v3](https://github.com/Uniswap/uniswap-v3-core/tree/main/contracts).
+I contratti intelligenti sono pubblici su Ethereum e possono esser considerati come API aperte. Non ti serve di scrivere il tuo contratto intelligente per diventare uno sviluppatore di dapp, basta sapere come interagirvi. Ad esempio, puoi usare i contratti intelligenti esistenti di [Uniswap](https://uniswap.exchange/swap), una borsa decentralizzata, per gestire tutta la logica di scambio di token nella tua app: non devi iniziare da zero. Dai un'occhiata ai loro contratti [v2](https://github.com/Uniswap/uniswap-v2-core/tree/master/contracts) e [v3](https://github.com/Uniswap/uniswap-v3-core/tree/main/contracts).
## Cos'è la componibilità? {#what-is-composability}
La componibilità è la combinazione di componenti distinti per creare nuovi sistemi e risultati. Nello sviluppo software, la componibilità indica che gli sviluppatori possono riutilizzare componenti software esistenti per creare nuove applicazioni. Un modo efficace per comprendere la componibilità è pensare a elementi componibili come i blocchi Lego. I vari tasselli di Lego possono essere combinati tra loro per creare strutture complesse.
-In Ethereum, ogni smart contract è un Lego di qualche tipo: puoi usare smart contract di altri progetti come blocchi di partenza per nuovi progetti. Ciò significa che non devi passare tempo a reinventare la ruota o costruire da zero.
+Su Ethereum, ogni contratto intelligente è un Lego di qualche tipo: puoi usare i contratti intelligenti da altri progetti come blocchi di partenza per il tuo progetto. Ciò significa che non devi passare tempo a reinventare la ruota o costruire da zero.
## Come funziona la componibilità? {#how-does-composability-work}
-Gli smart contract di Ethereum sono come API pubbliche, quindi chiunque può interagire col contratto o integrarlo nelle dapp per maggiori funzionalità. La componibilità dello smart contract si basa generalmente su tre principi: modularità, autonomia e scopribilità:
+I contratti intelligenti di Ethereum sono come API pubbliche, quindi, chiunque può interagire con il contratto o integrarlo nelle dapp per maggiori funzionalità. La componibilità dei contratti intelligenti si basa generalmente su tre principi: modularità, autonomia e scopribilità:
-**1. Modularità**: la capacità dei singoli componenti di eseguire un'attività specifica. In Ethereum, ogni smart contract ha un caso d'uso specifico (come visto nell'esempio di Uniswap).
+**1. Modularità**: la capacità dei singoli componenti di eseguire un'attività specifica. Su Ethereum, ogni contratto intelligente ha un caso d'uso specifico (come visto nell'esempio di Uniswap).
-**2. Autonomia**: i componenti componibili devono poter operare indipendentemente. Ogni smart contract in Ethereum è auto-eseguibile e può funzionare senza affidarsi ad altre parti del sistema.
+**2. Autonomia**: i componenti componibili devono poter operare indipendentemente. Ogni contratto intelligente su Ethereum è auto-eseguibile e può funzionare senza affidarsi ad altre parti del sistema.
-**3. Scopribilità**: gli sviluppatori non possono chiamare smart contract o integrare librerie software nelle applicazioni se queste non sono disponibili pubblicamente. Per progettazione, gli smart contract sono open source; chiunque può chiamare uno smart contract o biforcare un codebase.
+**3. Scopribilità**: Gli sviluppatori non possono chiamare i contratti esterni o integrare librerie software nelle applicazioni se queste non sono disponibili pubblicamente. Di design, i contratti intelligenti sono open source; chiunque può chiamare un contratto intelligente o biforcare un codebase.
## Vantaggi della componibilità {#benefits-of-composability}
@@ -31,7 +31,7 @@ Gli smart contract di Ethereum sono come API pubbliche, quindi chiunque può int
La componibilità riduce il lavoro degli sviluppatori per la creazione delle [dapp](/dapps/#what-are-dapps). [Come dice Naval Ravikant:](https://twitter.com/naval/status/1444366754650656770) "Open source significa che ogni problema va risolto una sola volta."
-Se c'è uno smart contract che risolve un problema, gli altri sviluppatori possono riutilizzarlo, così da non dover risolvere lo stesso problema. In questo modo, gli sviluppatori possono utilizzare librerie software esistenti e aggiungere funzionalità supplementari per creare nuove dapp.
+Se esiste un contratto intelligente che risolve un problema, altri sviluppatori possono riutilizzarlo, così che non debbano risolvere lo stesso problema. In questo modo, gli sviluppatori possono utilizzare librerie software esistenti e aggiungere funzionalità supplementari per creare nuove dapp.
### Maggiore innovazione {#greater-innovation}
@@ -47,7 +47,7 @@ Se un token ha un valore maggiore sull'`exchange A` rispetto all'`exchange B`, p
In uno scenario in cui non hai fondi sufficienti per coprire lo scambio, un prestito flash potrebbe essere ideale. I [prestiti Flash](/defi/#flash-loans) sono altamente tecnici, ma l'idea di base è che puoi prendere in prestito risorse (senza garanzia) e restituirle entro _una_ transazione.
-Tornando al nostro esempio iniziale, un trader d'arbitraggio può assumere un grande prestito flash, acquistare i token dall'`exchange B`, venderli sull'`exchange A`, ripagare il capitale e gli interessi e conservare il profitto, il tutto nella stessa transazione. Questa logica complessa richiede la combinazione di chiamate a più contratti, il che sarebbe impossibile se gli smart contract non fossero interoperabili.
+Tornando al nostro esempio iniziale, un trader d'arbitraggio può assumere un grande prestito flash, acquistare i token dall'`exchange B`, venderli sull'`exchange A`, ripagare il capitale e gli interessi e conservare il profitto, il tutto nella stessa transazione. Questa logica complessa richiede la combinazione di chiamate a più contratti, che sarebbe impossibile se i contratti intelligenti mancassero di interoperabilità.
## Esempi di componibilità su Ethereum {#composability-in-ethereum}
@@ -65,8 +65,8 @@ Invece di creare un sistema di autenticazione personalizzato o affidarti a forni
## Tutorial correlati {#related-tutorials}
-- [Contract Composability: The Building Blocks of Ethereum Smart Contract Development](https://www.decentlabs.io/blog/contract-composability-the-building-blocks-of-ethereum-smart-contract-development)
-- [Avvia lo sviluppo del frontend della tua dapp con create-eth-app](/developers/tutorials/kickstart-your-dapp-frontend-development-wth-create-eth-app/) _– Una panoramica di come usare create-eth-app per creare app con smart contract popolari._
+- [Componibilità del Contratto: I Blocchi di Partenza dello Sviluppo di Contratti Intelligenti su Ethereum](https://www.decentlabs.io/blog/contract-composability-the-building-blocks-of-ethereum-smart-contract-development)
+- [Avvia lo sviluppo del frontend della tua dapp con create-eth-app](/developers/tutorials/kickstart-your-dapp-frontend-development-wth-create-eth-app/) _– Una panoramica di come usare create-eth-app per creare app con contratti intelligenti popolari, pronti all'uso._
## Lettura consigliate {#further-reading}
diff --git a/src/content/translations/it/developers/docs/smart-contracts/deploying/index.md b/src/content/translations/it/developers/docs/smart-contracts/deploying/index.md
index 2fc9402e39d..3fd452f7a22 100644
--- a/src/content/translations/it/developers/docs/smart-contracts/deploying/index.md
+++ b/src/content/translations/it/developers/docs/smart-contracts/deploying/index.md
@@ -1,39 +1,39 @@
---
-title: Distribuzione di Smart Contract
+title: Distribuire i contratti intelligenti
description:
lang: it
---
-Uno Smart Contract deve essere distribuito per essere a disposizione degli utenti di una rete Ethereum.
+Devi distribuire il tuo contratto intelligente, affinché sia disponibile agli utenti di una rete di Ethereum.
-Per distribuire uno Smart Contract, si invia una transazione Ethereum che contiene il codice dello Smart Contract compilato senza specificare alcun destinatario.
+Per distribuire un contratto intelligente, invii una transazione di Ethereum contenente il codice compilato del contratto intelligente, senza specificare alcun destinatario.
## Prerequisiti {#prerequisites}
-È necessario conoscere le [reti Ethereum](/developers/docs/networks/), le [transazioni](/developers/docs/transactions/) e l'[anatomia degli Smart Contract](/developers/docs/smart-contracts/anatomy/) prima di distribuire Smart Contract.
+Dovresti comprendere le [reti di Ethereum](/developers/docs/networks/), le [transazioni](/developers/docs/transactions/) e l'[anatomia dei contratti intelligenti](/developers/docs/smart-contracts/anatomy/), prima di distribuire i contratti intelligenti.
-Distribuire un contratto costa inoltre ETH, quindi è necessario avere familiarità con [carburante e commissioni](/developers/docs/gas/) su Ethereum.
+Distribuire un contratto, inoltre, costa ether (ETH), quindi dovresti esser familiare con [gas e commissioni](/developers/docs/gas/) su Ethereum.
-Infine, è necessario compilare il contratto prima di distribuirlo, quindi assicurati di aver letto le informazioni sulla [compilazione degli Smart Contract](/developers/docs/smart-contracts/compiling/).
+Infine, dovrai compilare il tuo contratto prima di distribuirlo, quindi, assicurati di aver letto a riguardo della [compilazione dei contratti intelligenti](/developers/docs/smart-contracts/compiling/).
-## Come distribuire uno Smart Contract {#how-to-deploy-a-smart-contract}
+## Come distribuire un contratto intelligente {#how-to-deploy-a-smart-contract}
### Cosa ti serve {#what-youll-need}
-- bytecode del tuo contratto - viene generato attraverso la [compilazione](/developers/docs/smart-contracts/compiling/).
-- Ether per il carburante – imposterai il limite di carburante come altre transazioni, quindi sappi che la distribuzione del contratto richiede molto più carburante di un semplice trasferimento di ETH.
+- il bytecode del tuo contratto: è generato tramite la [compilazione](/developers/docs/smart-contracts/compiling/)
+- ETH per gas: imposterai il limite di gas come per altre transazioni, quindi, sappi che la distribuzione del contratto necessita di molto più gasi di un semplice trasferimento di ETH
- uno script o un plugin di distribuzione.
- Accedi a un [nodo di Ethereum](/developers/docs/nodes-and-clients/), eseguendone tuo autonomamente, connettendoti a un nodo pubblico oppure tramite una chiave API usando un [nodo di servizio](/developers/docs/nodes-and-clients/nodes-as-a-service/) come Infura o Alchemy.
-### Passaggi per distribuire uno smart contract {#steps-to-deploy}
+### Passaggi per distribuire un contratto intelligente {#steps-to-deploy}
-I passaggi specifici dipenderanno dagli strumenti utilizzati. Per esempio, dai un'occhiata alla [documentazione di Hardhat sulla distribuzione dei tuoi contratti](https://hardhat.org/guides/deploying.html) o alla [documentazione di Truffle su reti e distribuzione delle app](https://www.trufflesuite.com/docs/truffle/advanced/networks-and-app-deployment). Sono i due strumenti più popolari per la distribuzione di smart contract, che coinvolgono la scrittura di uno script per gestire le fasi di distribuzione.
+I passaggi specifici dipenderanno dagli strumenti utilizzati. Per esempio, dai un'occhiata alla [documentazione di Hardhat sulla distribuzione dei tuoi contratti](https://hardhat.org/guides/deploying.html) o alla [documentazione di Truffle su reti e distribuzione delle app](https://www.trufflesuite.com/docs/truffle/advanced/networks-and-app-deployment). Questi sono due degli strumenti più popolari per la distribuzione dei contratti intelligenti, che coinvolgono la scrittura di uno script per gestire i passaggi di distribuzione.
-Una volta distribuito, il contratto avrà un indirizzo Ethereum come gli altri [account](/developers/docs/accounts/).
+Una volta distribuito, il contratto avrà un indirizzo Ethereum come gli altri [conti](/developers/docs/accounts/).
## Strumenti correlati {#related-tools}
-**Remix - _Remix IDE consente di sviluppare, distribuire e amministrare gli smart contract per Ethereum come le blockchain_**
+**Remix - _Remix IDE consente di sviluppare, distribuire e amministrare i contratti intelligenti per Ethereum, come le blockchain_**
- [Remix](https://remix.ethereum.org)
@@ -59,9 +59,9 @@ Una volta distribuito, il contratto avrà un indirizzo Ethereum come gli altri [
## Tutorial correlati {#related-tutorials}
-- [Deploying your first smart contract](/developers/tutorials/deploying-your-first-smart-contract/)_– Introduzione alla distribuzione del primo Smart Contract su una rete di test Ethereum._
-- [Interact with other contracts from Solidity](/developers/tutorials/interact-with-other-contracts-from-solidity/) _– Come distribuire uno Smart Contract da un contratto esistente e interagirvi._
-- [How to downsize your contract size](/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/) _- Come ridurre le dimensioni del contratto per mantenerlo sotto il limite e risparmiare carburante_
+- [Distribuire il tuo primo contratto intelligente](/developers/tutorials/deploying-your-first-smart-contract/): _Un'introduzione alla distribuzione del tuo primo contratto su una rete di prova di Ethereum._
+- [Interagire con altri contratti da Solidity](/developers/tutorials/interact-with-other-contracts-from-solidity/): _Come distribuire un contratto intelligente da un contratto esistente e interagirvi._
+- [Come ridimensionare il tuo contratto](/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/): _Come ridurre le dimensioni del tuo contratto per mantenerlo sotto il limite e risparmiare sul gas_
## Letture consigliate {#further-reading}
diff --git a/src/content/translations/it/developers/docs/smart-contracts/index.md b/src/content/translations/it/developers/docs/smart-contracts/index.md
index 8a7e039be08..628381784d0 100644
--- a/src/content/translations/it/developers/docs/smart-contracts/index.md
+++ b/src/content/translations/it/developers/docs/smart-contracts/index.md
@@ -1,24 +1,24 @@
---
-title: Introduzione agli Smart Contract
-description: Panoramica sugli Smart Contract, incentrata sulle loro caratteristiche e limitazioni uniche.
+title: Introduzione ai contratti intelligenti
+description: Una panoramica sui contratti intelligenti, incentrata sulle loro caratteristiche e limitazioni uniche.
lang: it
---
-## Cos'è uno smart contract? {#what-is-a-smart-contract}
+## Cos'è un contratto intelligente? {#what-is-a-smart-contract}
-Uno Smart Contract è semplicemente un programma eseguito sulla blockchain di Ethereum. È una raccolta di codice (le funzioni) e dati (lo stato) che risiede a un indirizzo specifico sulla blockchain di Ethereum.
+Un "contratto intelligente" è semplicemente un programma eseguito sulla blockchain di Ethereum. È una raccolta di codice (le funzioni) e dati (lo stato) che risiede a un indirizzo specifico sulla blockchain di Ethereum.
-Gli smart contract sono un tipo di [account Ethereum](/developers/docs/accounts/). Ciò significa che hanno un saldo e possono essere oggetto di transazioni. Però non sono controllati da un utente, ma distribuiti in rete ed eseguiti come programmato. Gli account degli utenti possono quindi interagire con uno Smart Contract inviando transazioni che eseguono una funzione definita sul contratto. Gli Smart Contract possono definire regole, come un normale contratto, e imporle automaticamente tramite codice. Gli smart contract non sono eliminabili di default e le interazioni con essi sono irreversibili.
+I contratti intelligenti sono un tipo di [conto di Ethereum](/developers/docs/accounts/). Ciò significa che hanno un saldo e possono essere oggetto di transazioni. Però non sono controllati da un utente, ma distribuiti in rete ed eseguiti come programmato. I conti degli utenti possono quindi interagire con un contratto intelligente, inviando transazioni che eseguono una funzione definita sul contratto intelligente. I contratti intelligenti possono definire delle regole, come un contratto normale, e imporle automaticamente tramite il codice. I contratti intelligenti non possono esser eliminati di default e le interazioni con essi sono irreversibili.
## Prerequisiti {#prerequisites}
-Se stai muovendo i primi passi o stai cercando un'introduzione meno tecnica, consigliamo la nostra [introduzione agli smart contract](/smart-contracts/).
+Se stai solo muovendo i primi passi o stai cercando un'introduzione meno tecnica, consigliamo la nostra [introduzione ai contratti intelligenti](/smart-contracts/).
-È importante aver letto gli argomenti su [account](/developers/docs/accounts/), [transazioni](/developers/docs/transactions/) e [macchina virtuale di Ethereum](/developers/docs/evm/) prima di entrare nel mondo degli smart contract.
+Assicurati di aver letto a riguardo di [conti](/developers/docs/accounts/), [transazioni](/developers/docs/transactions/) e della [Macchina Virtuale di Ethereum](/developers/docs/evm/), prima di saltare nel mondo dei contratti intelligenti.
## Un distributore automatico digitale {#a-digital-vending-machine}
-Forse la metafora più efficace per uno smart contract è un distributore automatico, come descritto da [Nick Szabo](https://unenumerated.blogspot.com/). Con i giusti input si ottiene un determinato output.
+Forse la migliore metafora per un contratto intelligente è un distributore automatico, come descritto da [Nick Szabo](https://unenumerated.blogspot.com/). Con i giusti input si ottiene un determinato output.
Per ottenere uno snack da un distributore:
@@ -28,7 +28,7 @@ denaro + scelta dello snack = snack erogato
Questa logica è programmata nel distributore automatico.
-Uno smart contract, proprio come un distributore automatico, contiene una logica programmata al suo interno. Ecco un semplice esempio di come questo distributore automatico apparirebbe se fosse uno smart contract scritto in Solidity:
+Un contratto intelligente, come un distributore automatico, contiene della logica programmata. Ecco un semplice esempio di come apparirebbe questo distributore automatico se fosse un contratto intelligente scritto in Solidity:
```solidity
pragma solidity 0.8.7;
@@ -63,54 +63,54 @@ contract VendingMachine {
}
```
-Proprio come un distributore automatico, che elimina la necessità di avere un addetto alla vendita, anche gli smart contract possono sostituire gli intermediari in molti settori.
+Proprio come un distributore automatico rimuove la necessità di un addetto alla vendita, i contratti intelligenti possono sostituire gli intermediari in molte industrie.
## Senza autorizzazioni {#permissionless}
-Chiunque può scrivere uno smart contract e distribuirlo sulla rete. È sufficiente sapere programmare in un [linguaggio per smart contract](/developers/docs/smart-contracts/languages/) e avere ETH sufficienti per distribuire il contratto. Distribuire uno smart contract tecnicamente è una transazione, quindi occorre pagare una certa quantità di [gas](/developers/docs/gas/), proprio come accade per un semplice trasferimento di ETH. Tuttavia, i costi del gas per la distribuzione del contratto sono molto più elevati.
+Chiunque può scrivere un contratto intelligente e distribuirlo sulla rete. Devi solo imparare come programmare nel [linguaggio di un contratto intelligente](/developers/docs/smart-contracts/languages/) e avere ETH sufficienti per distribuire il tuo contratto. Distribuire un contratto intelligente è tecnicamente una transazione, quindi dovrai pagare del [Gas](/developers/docs/gas/) allo stesso modo in cui devi pagarlo per un semplice trasferimento di ETH. Tuttavia, i costi del gas per la distribuzione del contratto sono molto più elevati.
-Ethereum prevede linguaggi pratici per gli sviluppatori per la scrittura di smart contract:
+Ethereum prevede dei linguaggi pratici per gli sviluppatori per scrivere i contratti intelligenti:
- Solidity
- Vyper
[Ulteriori informazioni sui linguaggi](/developers/docs/smart-contracts/languages/)
-I contratti devono però essere compilati prima di poter essere distribuiti, affinché la macchina virtuale Ethereum possa interpretarli e memorizzarli. [Ulteriori informazioni sulla compilazione](/developers/docs/smart-contracts/compiling/)
+I contratti devono però essere compilati prima di poter essere distribuiti, affinché la macchina virtuale Ethereum possa interpretarli e memorizzarli. [Di più sulla compilazione](/developers/docs/smart-contracts/compiling/)
## Componibilità {#composability}
-Gli smart contract sono pubblici su Ethereum e possono essere paragonati ad API aperte. Questo significa che puoi chiamare altri smart contract nel tuo contratto in modo da estendere ampiamente quanto possibile. I contratti possono anche distribuire altri contratti.
+Gli smart contract sono pubblici su Ethereum e possono essere paragonati ad API aperte. Questo significa che puoi chiamare altri contratti intelligenti nel tuo contratto, così da estendere ampiamente ciò che è possibile. I contratti possono anche distribuire altri contratti.
-Scopri di più sulla [componibilità degli smart contract](/developers/docs/smart-contracts/composability/).
+Scopri di più sulla [componibilità dei contratti intelligenti](/developers/docs/smart-contracts/composability/).
## Limitazioni {#limitations}
-Gli smart contract da soli non possono ottenere informazioni sugli eventi del mondo reale, in quanto non possono inviare richieste HTTP. È così per progettazione. Basarsi su informazioni esterne potrebbe pregiudicare il consenso, importante per la sicurezza e la decentralizzazione.
+I soli contratti intelligenti non possono ottenere informazioni sugli eventi del "mondo reale", poiché non possono inviare richieste HTTP. È così per progettazione. Basarsi su informazioni esterne potrebbe pregiudicare il consenso, importante per la sicurezza e la decentralizzazione.
Esistono modi per aggirare questa condizione, grazie agli [oracoli](/developers/docs/oracles/).
-Un altro limite degli smart contract è la dimensione massima del contratto. Uno smart contract può avere una dimensione massima di 24KB o esaurirà il carburante. Questo problema può essere aggirato usando [il Diamond Pattern](https://eips.ethereum.org/EIPS/eip-2535) (schema a diamante).
+Un'altra limitazione dei contratti intelligenti è la dimensione massima del contratto. Un contratto intelligente può avere una dimensione massima di 24 Kb; altrimenti, esaurirà il gas. Questo problema può essere aggirato usando [il Diamond Pattern](https://eips.ethereum.org/EIPS/eip-2535) (schema a diamante).
## Contratti multifirma {#multisig}
-I contratti multifirma (firma multipla) sono conti per smart contract che richiedono più firme valide per eseguire una transazione. Ciò è molto utile per evitare singoli punti di fallimento per i contratti che detengono importi sostanziali di ether o altri token. I multifirma dividono inoltre la responsabilità per l'esecuzione del contratto e la gestione delle chiavi tra diverse parti e impediscono la perdita di una singola chiave privata, che si tradurrebbe in una perdita di fondi irreversibile. Per questi motivi, i contratti multifirma sono utilizzabili per una semplice governance DAO. Per poter esser eseguiti i multifirma richiedono N di M firme accettabili possibili (dove N ≤ M e M > 1). `N = 3, M = 5` e `N = 4, M = 7` sono comunemente usati. Un multifirma 4/7 richiede quattro di sette possibili firme valide. Questo significa che i fondi possono comunque essere recuperati, anche se vengono perse tre firme. In questo caso, significa anche che la maggioranza dei possessori della chiave deve acconsentire e firmare affinché il contratto venga eseguito.
+I contratti multifirma (a firma multipla), sono conti del contratto intelligente che richiedono più firme valide per eseguire una transazione. Ciò è molto utile per evitare singoli punti di fallimento per i contratti che detengono importi sostanziali di ether o altri token. I multifirma dividono inoltre la responsabilità per l'esecuzione del contratto e la gestione delle chiavi tra diverse parti e impediscono la perdita di una singola chiave privata, che si tradurrebbe in una perdita di fondi irreversibile. Per questi motivi, i contratti multifirma sono utilizzabili per una semplice governance DAO. Per poter esser eseguiti i multifirma richiedono N di M firme accettabili possibili (dove N ≤ M e M > 1). `N = 3, M = 5` e `N = 4, M = 7` sono comunemente usati. Un multifirma 4/7 richiede quattro di sette possibili firme valide. Questo significa che i fondi possono comunque essere recuperati, anche se vengono perse tre firme. In questo caso, significa anche che la maggioranza dei possessori della chiave deve acconsentire e firmare affinché il contratto venga eseguito.
-## Risorse sugli Smart Contract {#smart-contract-resources}
+## Risorse dei contratti intelligenti {#smart-contract-resources}
-**OpenZeppelin Contracts -** **_Libreria per lo sviluppo sicuro di smart contract._**
+**OpenZeppelin Contracts -** **_Libreria per lo sviluppo sicuro di contratti intelligenti._**
- [openzeppelin.com/contracts/](https://openzeppelin.com/contracts/)
- [GitHub](https://github.com/OpenZeppelin/openzeppelin-contracts)
- [Forum della community](https://forum.openzeppelin.com/c/general/16)
-**DappSys -** **_Blocchi di programmazione sicuri, semplici e flessibili per smart contract._**
+**DappSys -** **_Blocchi di programmazione sicuri, semplici e flessibili per contratti intelligenti._**
- [Dappsys](https://dappsys.readthedocs.io/)
- [GitHub](https://github.com/dapphub/dappsys)
## Letture consigliate {#further-reading}
-- [Smart Contracts: The Blockchain Technology That Will Replace Lawyers](https://blockgeeks.com/guides/smart-contracts/) _– Blockgeeks_
-- [Best Practices for Smart Contract Development](https://yos.io/2019/11/10/smart-contract-development-best-practices/) _– 10 novembre 2019 - Yos Riady_
-- [Contratti puliti - Una guida a modelli e pratiche per gli smart contract](https://www.wslyvh.com/clean-contracts/) _– 30 luglio 2020 - wslyvh_
+- [Contratti Intelligenti: La Tecnologia della Blockchain Che Sostituirà gli Avvocati](https://blockgeeks.com/guides/smart-contracts/) _– Blockgeeks_
+- [Migliori Pratiche per lo Sviluppo dei Contratti Intelligenti](https://yos.io/2019/11/10/smart-contract-development-best-practices/) _– 10 novembre 2019 - Yos Riady_
+- [Contratti puliti - Una guida a modelli e pratiche per i contratti intelligenti](https://www.wslyvh.com/clean-contracts/) _– 30 luglio 2020 - wslyvh_
diff --git a/src/content/translations/it/developers/docs/smart-contracts/languages/index.md b/src/content/translations/it/developers/docs/smart-contracts/languages/index.md
index ac889cbb610..0fc43094956 100644
--- a/src/content/translations/it/developers/docs/smart-contracts/languages/index.md
+++ b/src/content/translations/it/developers/docs/smart-contracts/languages/index.md
@@ -312,7 +312,7 @@ Ecco alcune cose da considerare se non hai ancora provato i vari linguaggi:
### Quali vantaggi offrono Yul e Yul+? {#yul-advantages}
- Linguaggio di basso livello, semplicistico e funzionale.
-- Consente di avvicinarsi all'EVM grezza, aiutando a ottimizzare l'uso di gas dai tuoi contratti.
+- Consente di avvicinarsi all'EVM grezza, aiutando a ottimizzare l'uso di gas dei tuoi contratti.
## Confronti tra linguaggi {#language-comparisons}
diff --git a/src/content/translations/it/developers/docs/smart-contracts/libraries/index.md b/src/content/translations/it/developers/docs/smart-contracts/libraries/index.md
index 0e9bdd7f6b7..9e875cff083 100644
--- a/src/content/translations/it/developers/docs/smart-contracts/libraries/index.md
+++ b/src/content/translations/it/developers/docs/smart-contracts/libraries/index.md
@@ -1,24 +1,24 @@
---
-title: Librerie degli Smart Contract
+title: Librerie dei contratti intelligenti
description:
lang: it
---
-Non è necessario scrivere da zero ogni Smart Contract del progetto. Sono disponibili molte librerie di Smart Contract che forniscono blocchi di programmazione riutilizzabili per il progetto.
+Non devi scrivere ogni contratto intelligente nel tuo progetto da zero. Esistono molte librerie open source di contratti intelligenti che forniscono blocchi di programmazione riutilizzabili per il tuo progetto, che possono salvarti dal dover reinventare la ruota.
## Prerequisiti {#prerequisites}
-Prima di iniziare a leggere delle librerie degli Smart Contract, è utile conoscere la struttura di questi contratti. Consulta [Anatomia degli Smart Contract](/developers/docs/smart-contracts/anatomy/) se ancora non l'hai fatto.
+Prima di saltare alle librerie dei contratti intelligenti, è una buona idea avere una buona comprensione della struttura di un contratto intelligente. Consulta l'[anatomia dei contratti intelligenti](/developers/docs/smart-contracts/anatomy/), se ancora non l'hai fatto.
## Cosa contiene una libreria {#whats-in-a-library}
-Nelle librerie degli Smart Contract trovi solitamente due tipi di blocchi di programmazione: comportamenti riutilizzabili che puoi aggiungere ai contratti e implementazioni di vari standard.
+Solitamente, puoi trovare due tipi di blocchi di programmazione nelle librerie dei contratti intelligenti: comportamenti riutilizzabili che puoi aggiungere ai tuoi contratti e implementazioni di vari standard.
### Comportamenti {#behaviors}
-È probabile che durante la scrittura degli Smart Contract si finisca a scrivere sempre gli stessi schemi, ad esempio per assegnare a un _admin_ l'indirizzo per effettuare operazioni protette in un contratto o per aggiungere un pulsante di _pausa_ di emergenza nell'evento di un problema imprevisto.
+Scrivendo i contratti intelligenti, è possibile che ti troverai a scrivere sempre gli stessi schemi, come assegnare un indirizzo _admin_ per svolgere le operazioni protette in un contratto, o aggiungere un pulsante d'emergenza _pause_ nel caso di un problema imprevisto.
-Le librerie degli Smart Contract solitamente forniscono implementazioni riutilizzabili di tali comportamenti come[librerie](https://solidity.readthedocs.io/en/v0.7.2/contracts.html#libraries) o tramite [eredità](https://solidity.readthedocs.io/en/v0.7.2/contracts.html#inheritance) in Solidity.
+Le librerie dei contratti intelligenti, solitamente, forniscono implementazioni riutilizzabili di questi comportamenti come [librerie](https://solidity.readthedocs.io/en/v0.7.2/contracts.html#libraries) o tramite [ereditarietà](https://solidity.readthedocs.io/en/v0.7.2/contracts.html#inheritance) in Solidity.
Ad esempio, di seguito è riportata una versione semplificata del contratto [`Ownable`](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.2.0/contracts/access/Ownable.sol) della [libreria dei contratti di OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts), che imposta un indirizzo come proprietario di un contratto e fornisce un modificatore per consentire l'accesso a un metodo solo a quel proprietario.
@@ -54,15 +54,15 @@ Un altro esempio noto è [SafeMath](https://docs.openzeppelin.com/contracts/3.x/
### Standard {#standards}
-Per promuovere la [componibilità e l'interoperabilità](/developers/docs/smart-contracts/composability/), la community di Ethereum ha definito diversi standard sotto forma di **ERC**. Puoi leggere di più nella sezione dedicata agli [standard](/developers/docs/standards/).
+Per facilitare la [componibilità e l'interoperabilità](/developers/docs/smart-contracts/composability/), la community di Ethereum ha definito diversi standard nella forma di **ERC**. Puoi leggere di più nella sezione dedicata agli [standard](/developers/docs/standards/).
-Se desideri includere un ERC all'interno di un contratto, è consigliabile cercare implementazioni standard anziché crearne di proprie. Molte librerie degli Smart Contract includono implementazioni per gran parte degli ERC più popolari. Per esempio, l'onnipresente [standard per token fungibile ERC20](/developers/tutorials/understand-the-erc-20-token-smart-contract/) si può trovare in [HQ20](https://github.com/HQ20/contracts/blob/master/contracts/token/README.md), [DappSys](https://github.com/dapphub/ds-token/) e [OpenZeppelin](https://docs.openzeppelin.com/contracts/3.x/erc20). Inoltre, alcuni ERC forniscono implementazioni canoniche come parte dello stesso ERC.
+Se desideri includere un ERC all'interno di un contratto, è consigliabile cercare implementazioni standard anziché crearne di proprie. Molte librerie di contratti intelligenti includono implementazioni per gli ERC più popolari. Ad esempio, l'onnipresente [standard per token fungibile ERC20](/developers/tutorials/understand-the-erc-20-token-smart-contract/) si può trovare in [HQ20](https://github.com/HQ20/contracts/blob/master/contracts/token/README.md), [DappSys](https://github.com/dapphub/ds-token/) e [OpenZeppelin](https://docs.openzeppelin.com/contracts/3.x/erc20). Inoltre, alcuni ERC forniscono implementazioni canoniche come parte dello stesso ERC.
Vale la pena ricordare che alcuni ERC non sono singoli, ma sono aggiunte di altri ERC. Per esempio, [ERC2612](https://eips.ethereum.org/EIPS/eip-2612) aggiunge un'estensione a ERC20 per migliorarne l'utilizzabilità.
## Come aggiungere una libreria {#how-to}
-Consulta sempre la documentazione della libreria che decidi di utilizzare per avere istruzioni specifiche su come includerla nel tuo progetto. Molte librerie dei contratti Solidity sono create con `npm`, quindi puoi usare semplicemente `npm install` per installarle. Gran parte degli strumenti per la [compilazione](/developers/docs/smart-contracts/compiling/) dei contratti cercherà librerie di Smart Contract in `node_modules`, quindi puoi usare il codice seguente:
+Consulta sempre la documentazione della libreria che decidi di utilizzare per avere istruzioni specifiche su come includerla nel tuo progetto. Molte librerie dei contratti Solidity sono create con `npm`, quindi puoi usare semplicemente `npm install` per installarle. Gran parte degli strumenti per [compilare](/developers/docs/smart-contracts/compiling/) i contratti, cercherà le librerie dei contratti intelligenti nei tuoi `node_modules`, quindi puoi fare quanto segue:
```solidity
// Questo caricherà la libreria @openzeppelin/contracts da node_modules
@@ -73,27 +73,27 @@ contract MyNFT is ERC721 {
}
```
-Indipendentemente dal metodo utilizzato, per includere una libreria controlla sempre la versione del [linguaggio](/developers/docs/smart-contracts/languages/). Ad esempio non puoi usare una libreria per Solidity 0.6 se stai scrivendo i contratti in Solidity 0.5.
+Indipendentemente dal metodo utilizzato, includendo una libreria, tieni sempre d'occhio la versione della [lingua](/developers/docs/smart-contracts/languages/). Ad esempio non puoi usare una libreria per Solidity 0.6 se stai scrivendo i contratti in Solidity 0.5.
## Quando usare una libreria {#when-to-use}
-Usare una libreria per Smart Contract in un progetto offre diversi vantaggi. Prima di tutto, fa risparmiare tempo perché fornisce blocchi di programmazione pronti all'uso che puoi includere nel sistema e che non devi programmare autonomamente.
+Usare la libreria di un contratto intelligente per il tuo progetto ha diversi benefici. Prima di tutto, fa risparmiare tempo perché fornisce blocchi di programmazione pronti all'uso che puoi includere nel sistema e che non devi programmare autonomamente.
-Anche la sicurezza è un importante vantaggio. Le librerie open source per Smart Contract sono infatti spesso molto controllate. Dato che molti progetti dipendono da esse, c'è un forte incentivo da parte della community a revisionarle costantemente. È molto più comune trovare errori nel codice di un'applicazione che nelle librerie riutilizzabili dei contratti. Inoltre alcune librerie sono sottoposte a [audit esterni](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/audit) per maggior sicurezza.
+Anche la sicurezza è un importante vantaggio. Le librerie dei contratti intelligenti open source, inoltre, sono spesso molto controllate. Dato che molti progetti dipendono da esse, c'è un forte incentivo da parte della community a revisionarle costantemente. È molto più comune trovare errori nel codice di un'applicazione che nelle librerie riutilizzabili dei contratti. Inoltre alcune librerie sono sottoposte a [audit esterni](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/audit) per maggior sicurezza.
-Tuttavia, usando librerie per Smart Contract si corre il rischio di includere codice che non si conosce nel progetto. La tentazione di importare un contratto e includerlo direttamente nel progetto è forte, ma se non si sa cosa fa il contratto, si potrebbe inavvertitamente inserire un problema nel sistema a causa di un comportamento imprevisto. Leggi sempre la documentazione del codice che importi e quindi controlla il codice direttamente prima di renderlo parte del tuo progetto.
+Tuttavia, l'uso delle librerie dei contratti intelligenti comporta il rischio di includere codice con cui non sei familiare nel tuo progetto. La tentazione di importare un contratto e includerlo direttamente nel progetto è forte, ma se non si sa cosa fa il contratto, si potrebbe inavvertitamente inserire un problema nel sistema a causa di un comportamento imprevisto. Leggi sempre la documentazione del codice che importi e quindi controlla il codice direttamente prima di renderlo parte del tuo progetto.
-Infine, per decidere se includere una libreria, considera l'uso generale che ne vorresti fare. Una libreria ampiamente adottata ha il vantaggio di avere alla base una community più grande e più occhi che la controllano alla ricerca di problemi. La sicurezza deve essere la tua preoccupazione principale quando sviluppi con gli Smart Contract.
+Infine, per decidere se includere una libreria, considera l'uso generale che ne vorresti fare. Una libreria ampiamente adottata ha il vantaggio di avere alla base una community più grande e più occhi che la controllano alla ricerca di problemi. La sicurezza dovrebbe essere la tua preoccupazione principale, quando sviluppi i contratti intelligenti!
## Strumenti correlati {#related-tools}
-**OpenZeppelin Contracts -** **_La libreria più popolare per lo sviluppo sicuro di Smart Contract._**
+**OpenZeppelin Contracts**: **_La libreria più popolare per lo sviluppo sicuro di contratti intelligenti._**
- [Documentazione](https://docs.openzeppelin.com/contracts/)
- [GitHub](https://github.com/OpenZeppelin/openzeppelin-contracts)
- [Forum della community](https://forum.openzeppelin.com/c/general/16)
-**DappSys -** **_Blocchi di programmazione sicuri, semplici e flessibili per Smart Contract_**
+**DappSys -** **_Blocchi di programmazione sicuri, semplici e flessibili per contratti intelligenti_**
- [Documentazione](https://dappsys.readthedocs.io/)
- [GitHub](https://github.com/dapphub/dappsys)
@@ -104,8 +104,8 @@ Infine, per decidere se includere una libreria, considera l'uso generale che ne
## Tutorial correlati {#related-tutorials}
-- [Security considerations for Ethereum developers](/developers/docs/smart-contracts/security/) _– Tutorial sulle considerazioni di sicurezza durante lo sviluppo di Smart Contract che include l'uso della libreria._
-- [Understand the ERC-20 token smart contract](/developers/tutorials/understand-the-erc-20-token-smart-contract/) _-Tutorial sullo standard ERC20, fornito da diverse librerie._
+- [Considerazioni sulla sicurezza per gli sviluppatori di Ethereum](/developers/docs/smart-contracts/security/): _Un tutorial sulle considerazioni sulla sicurezza durante lo sviluppo dei contratti intelligenti, incluso l'uso della libreria._
+- [Comprendere il contratto intelligente del token ERC-20](/developers/tutorials/understand-the-erc-20-token-smart-contract/): _Tutorial sullo standard ERC20, fornito da diverse librerie._
## Letture consigliate {#further-reading}
diff --git a/src/content/translations/it/developers/docs/smart-contracts/security/index.md b/src/content/translations/it/developers/docs/smart-contracts/security/index.md
index 01e03e7c090..c069a5be609 100644
--- a/src/content/translations/it/developers/docs/smart-contracts/security/index.md
+++ b/src/content/translations/it/developers/docs/smart-contracts/security/index.md
@@ -1,148 +1,246 @@
---
title: Sicurezza dei contratti intelligenti
-description: Considerazioni sulla sicurezza per sviluppatori Ethereum
+description: Una panoramica delle linee guida per costruire contratti intelligenti di Ethereum sicuri
lang: it
---
-Gli Smart Contract Ethereum sono estremamente flessibili, in grado di contenere grandi quantità di token (spesso per importi superiori a 1 miliardo di USD) e di eseguire una logica immutabile basata su codice di Smart Contract distribuito precedentemente. Sebbene questa situazione abbia creato un ecosistema vibrante e creativo di Smart Contract affidabili e interconnessi, è anche l'ecosistema perfetto per attrarre malintenzionati che cercano di trarre profitto sfruttando le vulnerabilità degli Smart Contract e il comportamento imprevisto di Ethereum. Il codice degli Smart Contract _di solito_ non può essere modificato per correggere falle di sicurezza, le risorse rubate dagli Smart Contract sono irrecuperabili e anche estremamente difficili da tracciare. L'importo totale del valore rubato o perso a causa di problemi degli Smart Contract supera facilmente il miliardo di dollari. Alcuni dei maggiori errori dovuti a errori di codifica degli Smart Contract includono:
+I contratti intelligenti sono estremamente flessibili e in grado di gestire grandi quantità di valori e dati, eseguendo allo stesso tempo una logica immutata basata sul codice distribuito sulla blockchain. Questo ha dato vita a un vivace ecosistema di applicazioni senza fiducia e decentralizzate, che offrono molti vantaggi rispetto ai sistemi legacy. I contratti intelligenti rappresentano anche un'opportunità per gli utenti malevoli che provano a speculare sfruttandone le vulnerabilità.
-- [Problema 1 relativo a multi-sig Parity: persi 30 milioni di dollari](https://www.coindesk.com/30-million-ether-reported-stolen-parity-wallet-breach)
-- [Problema 2 relativo a multi-sig Parity: bloccati 300 milioni di dollari](https://www.theguardian.com/technology/2017/nov/08/cryptocurrency-300m-dollars-stolen-bug-ether)
-- [The DAO hack, 3,6 milioni di ETH! Oltre un miliardo di dollari in base al prezzo attuale dell'ETH](https://hackingdistributed.com/2016/06/18/analysis-of-the-dao-exploit/)
+Blochchain pubbliche come Ethereun rendono ancora più complessa la questione della sicurezza dei contratti intelligenti. Una volta distribuito, il codice dei contratti _di solito_ non può essere modificato per correggere falle di sicurezza. In più, le risorse rubate dai contratti intelligenti sono estremamente difficili da tracciare e praticamente irrecuperabili per via della loro immutabilità.
+
+Anche se i dati possono variare, si stima che l'ammontare totale di valore rubato o perduto a causa di falle di sicurezza nei contratti intelligenti superi facilmente $1 miliardo. In questo sono inclusi incidenti rilievo come la [violazione della DAO](https://hackingdistributed.com/2016/06/18/analysis-of-the-dao-exploit/) (3,6 milioni di ETH rubati, per un valore superiore a $1 miliardo al prezzo attuale), la [violazione del portafoglio multi-firma di Parity](https://www.coindesk.com/30-million-ether-reported-stolen-parity-wallet-breach) ($30 milioni sottratti dagli hacker), e la questione del [portafoglio Parity congelato](https://www.theguardian.com/technology/2017/nov/08/cryptocurrency-300m-dollars-stolen-bug-ether) (più di $300 milioni di ETH bloccati per sempre).
+
+Per via di tutte queste problematiche, è imperativo per gli sviluppatori investire risorse nella costruzione di contratti intelligenti sicuri, robusti e resilienti. La sicurezza dei contratti intelligenti è una questione seria, su cui ogni sviluppatore farebbe bene a informarsi. Questa guida tratterà alcune considerazioni sulla sicurezza rivolte agli sviluppatori Ethereum ed esaminerà le risorse per migliorare la sicurezza dei contratti intelligenti.
## Prerequisiti {#prerequisites}
-Parleremo della sicurezza degli Smart Contract quindi assicurati di avere familiarità con gli [Smart Contract](/developers/docs/smart-contracts/) prima di affrontare questo argomento.
+Assicurati di avere familiarità con le [basi di programmazione di contratti intelligenti](/developers/docs/smart-contracts/) prima di affrontare la questione sicurezza.
-## Come scrivere codice più sicuro per gli Smart Contract {#how-to-write-more-secure-smart-contract-code}
+## Linee guida per costruire contratti intelligenti di Ethereum sicuri {#smart-contract-security-guidelines}
-Prima di eseguire codice sulla rete principale, è importante prendere sufficienti precauzioni per proteggere le risorse di valore associate allo Smart Contract. In questo articolo parleremo di alcuni attacchi specifici, suggeriremo risorse per saperne di più su altri tipi di attacco e indicheremo alcuni strumenti di base e le best practice per garantire il funzionamento corretto e sicuro dei contratti.
+### 1. Progetta controlli di accesso adeguati {#design-proper-access-controls}
-## Gli audit non sono infallibili {#audits-are-not-a-silver-bullet}
+Nei contratti intelligenti, le funzioni contrassegnate da `public` o `external` possono essere chiamate da qualsiasi conto posseduto esternamente (EOA) o da un conto contratto. È necessario specificare la visibilità pubblica per le funzioni se si desidera che altri interagiscano con il contratto. Le funzioni contrassegnate da `private` invece possono essere chiamate solo da funzioni all'interno del contratto intelligente e non da conti esterni. Dare a ogni partecipante della rete l'accesso alle funzioni del contratto può causare problemi, soprattutto se ciò implica che chiunque possa eseguire operazioni sensibili (ad esempio, coniare nuovi token).
-Anni fa, gli strumenti per scrivere, compilare, testare e distribuire Smart Contract erano molto immaturi, e di conseguenza molti progetti includevano codice Solidity scritto a caso che veniva poi passato a un auditor che lo esaminava per garantire che funzionasse in modo sicuro e come previsto. Nel 2020, i processi di sviluppo e gli strumenti che supportano la scrittura di codice Solidity sono decisamente migliori; queste best practice non solo assicurano che un progetto sia più facile da gestire, ma sono una parte fondamentale della sicurezza del progetto. Un audit al termine della scrittura dello Smart Contract non è più sufficiente come unico strumento per garantire la sicurezza del progetto. La sicurezza inizia ancor prima di scrivere la prima riga di codice dello Smart Contract, **la sicurezza inizia da processi di progettazione e sviluppo adeguati**.
+Per prevenire l'uso non autorizzato di funzioni di contratti intelligenti, è necessario implementare controlli di accesso sicuri. I meccanismi di controlli di accesso limitano la possibilità di utilizzare determinate funzioni in un contratto intelligente a soggetti approvati, come i conti responsabili della gestione del contratto. Il **modello Ownable** e il **controllo basato sul ruolo** sono due modelli utili per implementare il controllo di access nei contratti intelligenti:
-## Processo di sviluppo degli smart contract {#smart-contract-development-process}
+#### Modello Ownable {#ownable-pattern}
-Requisiti minimi:
+Nel modello Ownable, un indirizzo è impostato come “proprietario” del contratto durante il processo di creazione del contratto. Alle funzioni protette viene assegnato un modificatore `OnlyOwner` che garantisce che il contratto autentichi l'identità dell'indirizzo chiamante prima di eseguire la funzione. Le chiamate a funzioni protette che provengono da altri indirizzi a parte il proprietario del contratto sono sempre respinte, impedendo accessi indesiderati.
-- Tutto il codice memorizzato in un sistema di controllo delle versioni, come git
-- Tutte le modifiche al codice effettuate tramite richieste pull
-- Tutte le richieste pull hanno almeno un revisore. _Se sei l'unico sviluppatore nel progetto, prendi in considerazione la possibilità di trovare un altro sviluppatore che lavori da solo per revisionarvi i progetti a vicenda_
-- Un singolo comando compila, distribuisce ed esegue una serie di test sul codice utilizzando un ambiente di sviluppo per Ethereum (vedi: Truffle)
-- Hai verificato il codice con strumenti di base di analisi del codice come Mythril e Slither, idealmente prima dell'unione di ogni richiesta pull, e confrontato le differenze nell'output
-- Solidity non produce NESSUN avviso in fase di compilazione
-- Il codice è ben documentato
+#### Controllo di accesso basato sul ruolo {#role-based-access-control}
-C'è molto altro da dire sul processo di sviluppo, ma questo è un buon punto di partenza. Per ulteriori punti e spiegazioni dettagliate, vedi la [checklist per la qualità del processo stilata da DeFiSafety](https://docs.defisafety.com/review-process-documentation/process-quality-audit-process). [DefiSafety](https://defisafety.com/) è un servizio pubblico non ufficiale che pubblica recensioni di varie grandi dapp pubbliche di Ethereum. Parte del sistema di valutazione di DeFiSafety indica in che misura il progetto aderisce a questa checklist della qualità del processo. Seguendo questi processi:
+Registrare un unico indirizzo come `Owner` in un contratto intelligente introduce un rischio di centralizzazione e rappresenta un punto di errore unico. Se le chiavi del conto del proprietario sono compromesse, gli aggressori possono attaccare il contratto proprietario. Questo è il motivo per cui utilizzare un modello di controllo di accesso basato su ruoli con più conti amministrativi potrebbe essere un'opzione migliore.
-- Produrrai codice più sicuro, tramite test automatici riproducibili
-- Gli auditor saranno in grado di rivedere il tuo progetto in modo più efficace
-- Sarà più facile aggiungere nuovi sviluppatori
-- Gli sviluppatori potranno iterare, testare e ottenere feedback velocemente sulle modifiche
-- È meno probabile che il progetto subisca regressioni
+Nel controllo di accesso basato sui ruoli, l'accesso alle funzioni sensibili è distribuito in un gruppo di partecipanti fidati. Per esempio, un conto può essere responsabile della coniazione di token, mentre un altro esegue gli aggiornamenti o interrompe il contratto. Decentralizzare in questo modo il controllo di accesso elimina punti di errore unici e riduce il bisogno di ipotesi di fiducia per gli utenti.
-## Attacchi e vulnerabilità {#attacks-and-vulnerabilities}
+##### Uso dei portafogli multifirma
-Una volta assicurato che il codice Solidity sia scritto utilizzando un processo di sviluppo efficiente, diamo un'occhiata ad alcune vulnerabilità comuni di Solidity, per capire cosa può andare storto.
+Un altro approccio utile per implementare un controllo di accesso sicuro è utilizzare un [conto multifirma](/developers/docs/smart-contracts/#multisig) nella gestione di un contratto. A differenza di un comune EOA, i conti multifirma sono di proprietà di più entità e richiedono un numero minimo di firme da parte di più conti - solitamente da 3 a 5 - per eseguire transazioni.
-### Codice rientrante {#re-entrancy}
+L'utilizzo di un multifirma per il controllo di accesso introduce un ulteriore livello di sicurezza, dal momento che le azioni effettuate sul contratto di destinazione richiedono il consenso di più parti. Ciò è particolarmente utile nei casi in cui è necessario fare uso del modello Ownable, in quanto sarà più di difficile per un aggressore esterno o un insider ostile manipolare le funzioni sensibili del contratto per scopi malevoli.
-Il codice rientrante è uno dei più comuni e più importanti problemi di sicurezza da valutare quando si sviluppano Smart Contract. Mentre l'EVM non può eseguire più contratti allo stesso tempo, un contratto che chiama un altro contratto interrompe l'esecuzione e lo stato di memoria del contratto chiamante fino a quando la chiamata restituisce un risultato, dopo di che l'esecuzione procede normalmente. Questo momento di pausa e riavvio può creare una vulnerabilità conosciuta come "re-entrancy" o codice rientrante.
+### 2. Usa le istruzioni require(), assert(), e revert() per sorvegliare le operazioni del contratto {#use-require-assert-revert}
-Ecco una semplice versione di un contratto vulnerabile al codice rientrante:
+Come accennato, chiunque potrà chiamare funzioni pubbliche nel tuo contratto intelligente una volta che questo sarà distribuito sulla blockchain. Poiché è impossibile sapere in anticipo come i conti esterni interagiranno con un contratto, l'ideale è implementare, prima della distribuzione, misure di salvaguardia interne nei confronti di operazioni sensibili. È possibile imporre un comportamento corretto nei contratti intelligenti utilizzando le istruzioni `require()`, `assert()` e `revert()` per attivare eccezioni e annullare le modifiche dello stato se l'esecuzione non soddisfa determinati requisiti.
-```solidity
-// QUESTO CONTRATTO CONTIENE VULNERABILITA' INTENZIONALI, NON COPIARE
-contract Victim {
- mapping (address => uint256) public balances;
+**`require()`**: le istruzioni `require` sono definite all'inizio della funzione e assicurano che siano soddisfatte condizioni predefinite prima che venga eseguita la funzione chiamata. Un'istruzione `require` è utilizzabile per convalidare gli input dell'utente, controllare le variabili di stato o autenticare l'identità del conto chiamante, prima di procedere con una funzione.
- function deposit() external payable {
- balances[msg.sender] += msg.value;
+**`assert()`**: `assert()` è usata per rilevare gli errori interni e verificare le violazioni delle "invarianti" nel tuo codice. Un'invariante è un'asserzione logica sullo stato di un contratto, che dovrebbe rimanere valida per tutte le esecuzioni della funzione. Un esempio di invariante è la fornitura o saldo massimo totale del contratto di un token. Usare `assert()` garantisce che il tuo contratto non raggiunga mai uno stato vulnerabile e, se lo fa, tutte le modifiche alle variabili di stato sono annullate.
+
+**`revert()`**: `revert()` è utilizzabile in un'istruzione if-else che innesca un'eccezione se la condizione necessaria non è soddisfatta. Il seguente esempio di contratto utilizza `revert()` per proteggere l'esecuzione delle funzioni:
+
+```
+pragma solidity ^0.8.4;
+
+contract VendingMachine {
+ address owner;
+ error Unauthorized();
+ function buy(uint amount) public payable {
+ if (amount > msg.value / 2 ether)
+ revert("Not enough Ether provided.");
+ // Perform the purchase.
}
+ function withdraw() public {
+ if (msg.sender != owner)
+ revert Unauthorized();
- function withdraw() external {
- uint256 amount = balances[msg.sender];
- (bool success, ) = msg.sender.call.value(amount)("");
- require(success);
- balances[msg.sender] = 0;
+ payable(msg.sender).transfer(address(this).balance);
}
}
```
-Per consentire a un utente di prelevare gli ETH precedentemente archiviati nel contratto, questa funzione
+### 3. Testa i contratti intelligenti e verifica la correttezza del codice {#test-smart-contracts-and-verify-code-correctness}
+
+L'immutabilità del codice in esecuzione sulla [Macchina Virtuale di Ethereum](/developers/docs/evm/) fa sì che i contratti intelligenti richiedano un livello superiore di valutazione della qualità durante la fase di sviluppo. Testare ampiamente il tuo contratto e osservarlo per cogliere qualsiasi risultato imprevisto ne migliorerà considerevolmente la sicurezza e proteggerà i tuoi utenti sul lungo periodo.
+
+Il metodo consueto prevede di scrivere piccole unità di prova utilizzando i dati di simulazione che il contratto dovrebbe ricevere dagli utenti. La conduzione di [unit test](/developers/docs/smart-contracts/testing/#unit-testing) contribuisce a testare la funzionalità di certe funzioni e assicurarsi che un contratto intelligente funzioni come previsto.
+
+Sfortunatamente, gli unit test sono poco efficaci per migliorare la sicurezza del contratto intelligente se utilizzato in isolamento. Uno unit test potrebbe provare che una funzione sia eseguita correttamente per i dati di simulazione, ma gli unit test sono efficaci solo quanto i test scritti. Questo rende difficile rilevare i casi limite non identificati e le vulnerabilità che potrebbero spezzare la sicurezza del tuo contratto intelligente.
+
+Un approccio migliore è combinare gli unit test con i test basati sulle proprietà, eseguiti usando l'[analisi statica e dinamica](/developers/docs/smart-contracts/testing/#static-dynamic-analysis). L'analisi statica si affida alle rappresentazioni di basso livello, come i [grafici del flusso di controllo](https://en.wikipedia.org/wiki/Control-flow_graph) e gli [alberi di sintassi astratta](https://deepsource.io/glossary/ast/) per analizzare gli stati raggiungibili del programma e i percorsi d'esecuzione. Nel mentre, le tecniche di analisi dinamica, come il fuzzing, eseguono il codice del contratto con valori di input casuali per rilevare le operazioni che violano le proprietà di sicurezza.
+
+La [verifica formale](/developers/docs/smart-contracts/formal-verification) è un'altra tecnica per verificare le proprietà di sicurezza nei contratti intelligenti. A differenza dei test regolari, la verifica formale può dimostrare in modo conclusivo l'assenza di errori in un contratto intelligente. Ciò si ottiene creando una specifica formale che racchiuda le proprietà di sicurezza desiderate e dimostrando che un modello formale dei contratti aderisce a tale specifica.
+
+### 4. Richiedi una revisione indipendente del tuo codice {#get-independent-code-reviews}
+
+Dopo aver testato il tuo contratto, è bene richiedere ad altri di verificare il codice sorgente per qualsiasi problema di sicurezza. I test non scopriranno ogni difetto di un contratto intelligente, ma ottenere una revisione indipendente aumenta la possibilità di individuare le vulnerabilità.
+
+#### Controlli {#audits}
+
+Commissionare il controllo di un contratto intelligente è un modo di condurre una revisione indipendente del codice. I revisori rivestono un ruolo importante nell'assicurare che i contratti intelligenti siano sicuri e liberi da difetti di qualità ed errori di progettazione.
+
+Detto ciò, dovresti evitare di trattare i controlli come una bacchetta magica. I controlli del contratto intelligente non troveranno ogni bug e sono principalmente progettati per fornire un ulteriore ciclo di revisioni, che possono aiutare a rilevare i problemi non identificati dagli sviluppatori durante lo sviluppo e test iniziali. Inoltre, dovresti seguire le [migliori pratiche per lavorare con i revisori](https://twitter.com/tinchoabbate/status/1400170232904400897), come documentare correttamente il codice e aggiungere commenti inline, per massimizzare i benefici del controllo di un contratto intelligente.
+
+#### Caccia ai bug {#bug-bounties}
+
+Impostare un programma di caccia ai bug è un altro approccio per implementare le revisioni esterne del codice. Una bug bounty è una ricompensa finanziaria data a persone (solitamente hacker whitehat) che scoprono vulnerabilità in un'applicazione.
+
+Quando usate propriamente, queste ricompense per la caccia ai bug incentivano i membri della community di hacker a ispezionare il tuo codice in cerca di difetti critici. Un esempio reale è il "bug del denaro infinito", che avrebbe consentito a un utente malevolo di creare un importo illimitato di Ether su [Optimism](https://www.optimism.io/), un protocollo del [Livello 2](/layer-2/) eseguito su Ethereum. Fortunatamente, un hacker whitehat [ha scoperto il difetto](https://www.saurik.com/optimism.html) e informato il team, [guadagnandosi una ricca ricompensa](https://cryptoslate.com/critical-bug-in-ethereum-l2-optimism-2m-bounty-paid/).
+
+Una strategia utile è impostare la ricompensa di un programma di caccia ai bug proporzionale all'importo di fondi in staking. Descritto come "[caccia ai bug scalare](https://medium.com/immunefi/a-defi-security-standard-the-scaling-bug-bounty-9b83dfdc1ba7)", questo approccio fornisce incentivi finanziari alle persone perché divulghino responsabilmente le vulnerabilità invece di sfruttarle.
+
+### 5. Segui le migliori pratiche durante lo sviluppo del contratto intelligente {#follow-smart-contract-development-best-practices}
+
+L'esistenza di controlli e ricompense per la caccia ai bug non è una scusa per non scrivere codice di alta qualità. Una buona sicurezza dei contratti intelligenti deriva da processi di progettazione e sviluppo adeguati:
+
+- Archivia tutto il codice in un sistema di controllo delle versioni, come git
+
+- Effettua tutte le modifiche al codice tramite richieste pull
+
+- Assicurati che le richieste pull abbiano almeno un revisore indipendente; se stai lavorando a un progetto da solo, valuta di trovare altri sviluppatori e di scambiare revisioni di codice
+
+- Usa un [ambiente di sviluppo](/developers/docs/frameworks/) per testare, compilare e distribuire i contratti intelligenti
+
+- Esegui il tuo codice tramite strumenti di analisi del codice di base, come Mythril e Slither. Idealmente, dovresti farlo prima della fusione di ogni richiesta pull e confrontare le differenze nell'output
+
+- Assicurati che il tuo codice si compili senza errori e che il compilatore di Solidity non emetta alcun avviso
-1. Legge il saldo dell'utente
-2. Gli invia l'importo del saldo in ETH
-3. Imposta il saldo a 0, in modo che non sia possibile prelevarlo nuovamente.
+- Documenta correttamente il tuo codice (usando [NatSpec](https://solidity.readthedocs.io/en/develop/natspec-format.html)) e descrivi i dettagli sull'architettura del contratto in un linguaggio facile da comprendere. Questo semplificherà il controllo e la revisione del tuo codice da parte di altri.
-Se chiamato da un account standard (ad esempio un account MetaMask), questo codice funziona come previsto: msg.sender.call.value() invia semplicemente il saldo ETH. Però anche gli Smart Contract possono effettuare chiamate. Se quindi è un contratto maligno modificato a chiamare `withdraw()`, msg.sender.call.value() non invierà solo `amount` (l'importo) di ETH, ma chiamerà anche implicitamente il contratto per iniziare l'esecuzione del codice. Immagina che a chiamare sia questo contratto maligno:
+### 6. Implementa solidi piani di ripristino in caso di disastro {#implement-disaster-recovery-plans}
+
+Progettare controlli di accesso sicuri, implementare modificatori di funzioni e altri suggerimenti possono migliorare la sicurezza dei contratti intelligenti, ma non possono escludere la possibilità di exploit dannosi. Creare contratti intelligenti sicuri richiede di "prepararsi al fallimento" e di avere un piano di ripiego per rispondere efficientemente agli attacchi. Un adeguato piano di ripristino in caso di disastro includerà alcuni o tutti i seguenti componenti:
+
+#### Aggiornamenti del contratto {#contract-upgrades}
+
+Sebbene i contratti intelligenti di Ethereum siano immutabili di default, è possibile ottenere un certo grado di mutabilità utilizzando dei modelli di aggiornamento. Aggiornare i contratti è necessario nel caso in cui un difetto critico renda inutilizzabile il tuo vecchio contratto e distribuire una nuova logica sia l'opzione più fattibile.
+
+I meccanismi di aggiornamento del contratto operano diversamente, ma lo "schema del proxy" è uno degli approcci più popolari per aggiornare i contratti intelligenti. Gli schemi del proxy dividono lo stato e la logica di un'applicazione tra _due_ contratti. Il primo contratto (detto "contratto proxy") archivia le variabili di stato (es., i saldi degli utenti), mentre il secondo (detto "contratto logico") detiene il codice per l'esecuzione delle funzioni del contratto.
+
+I conti interagiscono con il contratto proxy, che invia le chiamate di tutte le funzioni al contratto logico utilizzando la chiamata di basso livello [`delegatecall()`](https://docs.soliditylang.org/en/v0.8.16/introduction-to-smart-contracts.html?highlight=delegatecall#delegatecall-callcode-and-libraries). A differenza di una normale chiamata di messaggio, `delegatecall()` garantisce che il codice in esecuzione all'indirizzo del contratto logico sia eseguito nel contesto del contratto chiamante. Ciò significa che il contratto logico scriverà sempre sulla memoria del proxy (invece che sulla propria) e che i valori originali di `msg.sender` e `msg.value` sono preservati.
+
+Delegare le chiamate al contratto logico richiede l'archiviazione del suo indirizzo nella memoria del contratto proxy. Pertanto, aggiornare la logica del contratto è solo una questione di distribuire un altro contratto logico e archiviare il nuovo indirizzo nel contratto proxy. Poiché le chiamate successive al contratto proxy sono indirizzate automaticamente al nuovo contratto logico, avresti "aggiornato" il contratto senza effettivamente modificare il codice.
+
+[Maggiori informazioni sull'aggiornamento dei contratti](/developers/docs/smart-contracts/upgrading/).
+
+#### Arresto d'emergenza {#emergency-stops}
+
+Come accennato, i controlli e test estesi non possono verosimilmente scoprire tutti i bug in un contratto intelligente. Se una vulnerabilità appare nel tuo codice dopo la distribuzione, correggerla è impossibile perché non puoi modificare il codice in esecuzione all'indirizzo del contratto. Inoltre, i meccanismi di aggiornamento (es., schemi del proxy) potrebbero richiedere del tempo per l'implementazione (spesso richiedono l'approvazione di parti differenti), dando più tempo agli utenti malevoli di causare più danni.
+
+L'opzione più drastica è implementare una funzione di "arresto d'emergenza" che blocca le chiamate alle funzioni vulnerabili in un contratto. Gli arresti d'emergenza comprendono tipicamente i seguenti componenti:
+
+1. Una variabile booleana globale che indica se il contratto intelligente è in uno stato d'arresto o no. Questa variabile è impostata a `false` durante la configurazione del contratto, ma si ripristinerà a `true` una volta arrestato il contratto.
+
+2. Funzioni riferite alla variabile booleana nella loro esecuzione. Tali funzioni sono accessibili quando il contratto intelligente non è arrestata e divengono inaccessibili una volta innescata la funzionalità di arresto d'emergenza.
+
+3. Un'entità avente accesso alla funzione di arresto d'emergenza, che imposta la variabile booleana a `true`. Per impedire azioni dannose, le chiamate a questa funzione possono essere limitate a un indirizzo fidato (es., il proprietario del contratto).
+
+Una volta che il contratto attiva l'arresto d'emergenza, certe funzioni non potranno essere chiamate. Ciò avviene avvolgendo le funzioni selezionate in un modificatore che fa riferimento alla variabile globale. Di seguito, è riportato [un esempio](https://github.com/fravoll/solidity-patterns/blob/master/EmergencyStop/EmergencyStop.sol) che descrive un'implementazione di questo schema nei contratti:
```solidity
-contract Attacker {
- function beginAttack() external payable {
- Victim(VICTIM_ADDRESS).deposit.value(1 ether)();
- Victim(VICTIM_ADDRESS).withdraw();
+// Questo codice non è stato controllato professionalmente e non fa promesse su sicurezza o correttezza. Usalo a tuo rischio.
+
+contract EmergencyStop {
+
+ bool isStopped = false;
+
+ modifier stoppedInEmergency {
+ require(!isStopped);
+ _;
}
- function() external payable {
- if (gasleft() > 40000) {
- Victim(VICTIM_ADDRESS).withdraw();
- }
+ modifier onlyWhenStopped {
+ require(isStopped);
+ _;
+ }
+
+ modifier onlyAuthorized {
+ // Check for authorization of msg.sender here
+ _;
+ }
+
+ function stopContract() public onlyAuthorized {
+ isStopped = true;
+ }
+
+ function resumeContract() public onlyAuthorized {
+ isStopped = false;
+ }
+
+ function deposit() public payable stoppedInEmergency {
+ // Deposit logic happening here
+ }
+
+ function emergencyWithdraw() public onlyWhenStopped {
+ // Emergency withdraw happening here
}
}
```
-Chiamando Attacker.beginAttack() si avvierà un ciclo del tipo:
+Questo esempio mostra le caratteristiche fondamentali degli arresti d'emergenza:
-```
-0.) EOA di Attacker chiama Attacker.beginAttack() con 1 ETH
-0.) Attacker.beginAttack() deposita 1 ETH in Victim
-
- 1.) Attacker -> Victim.withdraw()
- 1.) Victim reads balances[msg.sender]
- 1.) Victim invia ETH a Attacker (che esegue la funzione default)
- 2.) Attacker -> Victim.withdraw()
- 2.) Victim reads balances[msg.sender]
- 2.) Victim invia ETH a Attacker (che esegue la funzione default)
- 3.) Attacker -> Victim.withdraw()
- 3.) Victim reads balances[msg.sender]
- 3.) Victim invia ETH a Attacker (che esegue la funzione default)
- 4.) Attacker non ha abbastanza carburante, restituisce il risultato senza chiamare di nuovo
- 3.) balances[msg.sender] = 0;
- 2.) balances[msg.sender] = 0; (era già 0)
- 1.) balances[msg.sender] = 0; (era già 0)
-```
+- `isStopped` è una variabile booleana che restituisce `false` all'inizio e `true` quando il contratto entra in modalità d'emergenza.
-Chiamando Attacker.beginAttack con 1 ETH si attacca Victim con codice rientrante, prelevando più ETH rispetto alla disponibilità (prendendoli dai saldi di altri utenti e rendendo il contratto Victim non collateralizzato)
+- I modificatori della funzione `onlyWhenStopped` e `stoppedInEmergency` controllano la variabile `isStopped`. `stoppedInEmergency` è usata per controllare le funzioni che non dovrebbero essere accessibili quando il contratto è vulnerabile (es., `deposit()`). Le chiamate a queste funzioni saranno semplicemente annullate.
-### Come gestire il codice rientrante (in modo sbagliato) {#how-to-deal-with-re-entrancy-the-wrong-way}
+`onlyWhenStopped` è usata per le funzioni che dovrebbero poter essere chiamate durante un'emergenza (es., `emergencyWithdraw()`). Tali funzioni possono aiutare a risolvere la situazione, da cui la loro esclusione dall'elenco delle "funzioni limitate".
-Si potrebbe pensare di difendersi dal codice rientrante semplicemente impedendo a qualsiasi Smart Contract di interagire con il proprio codice. Se cerchi stackoverflow, trovi questo frammento di codice con tantissimi voti a favore:
+L'utilizzo di una funzionalità di arresto d'emergenza fornisce un palliativo efficiente per affrontare gravi vulnerabilità nel tuo contratto intelligente. Tuttavia, aumenta la necessità che gli utenti si fidino del fatto che gli sviluppatori non la attiveranno per motivi egoistici. A tal fine, decentralizzare il controllo dell'arresto d'emergenza sottoponendolo a un meccanismo di voto sulla catena, blocco temporale o a un'approvazione da un portafoglio multifirma, sono possibili soluzioni.
-```solidity
-function isContract(address addr) internal returns (bool) {
- uint size;
- assembly { size := extcodesize(addr) }
- return size > 0;
-}
-```
+#### Monitoraggio degli eventi {#event-monitoring}
+
+Gli [eventi](https://docs.soliditylang.org/en/v0.8.15/contracts.html#events) ti consentono di tracciare le chiamate alle funzioni del contratto intelligente e di monitorare le modifiche alle variabili di stato. È ideale programmare il tuo contratto intelligente in modo che emetta un evento ogni volta che una qualche parte effettua un'azione critica per la sicurezza (es., prelevare fondi).
-Sembra avere senso: i contratti hanno codice, se il chiamante ha un codice, non si consente di depositare. Aggiungiamolo:
+Registrare gli eventi e monitorarli al di fuori della catena fornisce dettagli sulle operazioni del contratto e aiuta a scoprire più velocemente le azioni malevoli. Ciò significa che il tuo team può rispondere più velocemente alle violazioni e agire per mitigare l'impatto sugli utenti, ad esempio interrompendo le funzioni o eseguendo un aggiornamento.
+
+Puoi anche optare per uno strumento di monitoraggio standard che inoltri automaticamente degli avvisi ogni volta che qualcuno interagisce con i tuoi contratti. Questi strumenti ti consentiranno di creare avvisi personalizzati basati su diversi inneschi, come il volume delle transazioni, la frequenza delle chiamate alla funzione o le funzioni specifiche coinvolte. Ad esempio, potresti programmare un avviso che si attivi quando l'importo prelevato in una singola transazione sia superiore a una determinata soglia.
+
+### 7. Progetta sistemi di governance sicuri {#design-secure-governance-systems}
+
+Potresti voler decentralizzare la tua applicazione dando il controllo dei contratti intelligenti ai membri della community. In questo caso, il sistema del contratto intelligente includerà un modulo di governance, ossia un meccanismo che consente ai membri della community di approvare le azioni amministrative tramite un sistema di governance sulla catena. Ad esempio, una proposta di aggiornare un contratto proxy a una nuova implementazione potrebbe esser votata dai possessori di token.
+
+La governance decentralizzata può essere vantaggiosa, specialmente poiché si allinea agli interessi degli sviluppatori e degli utenti finali. Tuttavia, i meccanismi di governance del contratto intelligente potrebbero introdurre nuovi rischi, se implementati in modo errato. Uno scenario plausibile è se un utente malevolo acquisisce un enorme potere di voto (misurato in numero di token posseduti) chiedendo un [prestito flash](/defi/#flash-loans) e presentando una proposta dannosa.
+
+Un modo di prevenire i problemi correlati alla governance sulla catena è [utilizzare un blocco temporale](https://blog.openzeppelin.com/protect-your-users-with-smart-contract-timelocks/). Un blocco temporale impedisce a un contratto intelligente di eseguire certe azioni finché non passa un dato periodo di tempo. Altre strategie includono l'assegnazione di un "peso di voto" a ogni token a seconda del tempo per cui è stato bloccato, o la misurazione del potere di voto di un indirizzo in un dato periodo storico (ad esempio, 2-3 blocchi nel passato) invece che al blocco corrente. Entrambi i metodi riducono la possibilità di accumulare rapidamente potere di voto per influire sui voti sulla catena.
+
+Maggiori informazioni sulla [progettazione di sistemi di governance sicuri](https://blog.openzeppelin.com/smart-contract-security-guidelines-4-strategies-for-safer-governance-systems/) e sui [differenti meccanismi di voto nelle DAO](https://hackernoon.com/governance-is-the-holy-grail-for-daos).
+
+### 8. Riduci al minimo la complessità nel codice {#reduce-code-complexity}
+
+Gli sviluppatori di software tradizionali hanno familiarità con il principio KISS ("keep it simple, stupid", letteralmente "tieniti sul semplice, stupido"), che consiglia di non introdurre complessità non necessarie nella progettazione del software. Questo segue il pensiero di vecchia data che i "sistemi complessi falliscono in modi complessi" e che siano più suscettibili a errori costosi.
+
+Mantenere le cose semplici è di particolare importanza nella scrittura dei contratti intelligenti, dato che i contratti intelligenti potrebbero potenzialmente controllare grandi importi di valore. Un suggerimento per ottenere la semplicità durante la scrittura dei contratti intelligenti è riutilizzare le librerie esistenti, come i [contratti di OpenZeppelin](https://docs.openzeppelin.com/contracts/4.x/), laddove possibile. Poiché queste librerie sono state controllate e testate ampiamente dagli sviluppatori, utilizzarle riduce le possibilità di introdurre bug rispetto a scrivere nuove funzionalità da zero.
+
+Un altro consiglio comune è scrivere piccole funzioni e mantenere i contratti modulari, dividendo la logica commerciale su più contratti. Non solo la scrittura di codice più semplice può ridurre la superficie di attacco in un contratto intelligente, ma rende anche più semplice ragionare della correttezza del sistema complessivo e rilevare precocemente possibili errori di progettazione.
+
+### 9. Difenditi dalle vulnerabilità comuni dei contratti intelligenti {#mitigate-common-smart-contract-vulnerabilities}
+
+#### Rientranza {#reentrancy}
+
+L'EVM non consente la concorrenza, il che significa che due contratti coinvolti in una chiamata di messaggio non possono essere eseguiti simultaneamente. Una chiamata esterna interrompe l'esecuzione e la memoria del contratto chiamante fino al ritorno della chiamata, dopodiché l'esecuzione procede normalmente. Questo processo può essere formalmente descritto come il trasferimento del [flusso di controllo](https://www.computerhope.com/jargon/c/contflow.htm) a un altro contratto.
+
+Sebbene per lo più innocuo, il trasferimento del flusso di controllo a contratti non fidati può causare dei problemi, come la rientranza. Un attacco di rientranza si verifica quando un contratto malevolo viene richiamato in un contratto vulnerabile prima che l'invocazione della funzione originale sia completa. Questo tipo di attacco può essere spiegato meglio con un esempio.
+
+Considera un contratto intelligente semplice ('Victim') che consenta a chiunque di depositare e prelevare Ether:
```solidity
-// QUESTO CONTRATTO CONTIENE VULNERABILITA' INTENZIONALI, NON COPIARE
-contract ContractCheckVictim {
- mapping (address => uint256) public balances;
+// Questo contratto è vulnerabile. Non utilizzarlo in produzione
- function isContract(address addr) internal returns (bool) {
- uint size;
- assembly { size := extcodesize(addr) }
- return size > 0;
- }
+contract Victim {
+ mapping (address => uint256) public balances;
function deposit() external payable {
- require(!isContract(msg.sender)); // <- NUOVA LINEA
balances[msg.sender] += msg.value;
}
@@ -155,39 +253,61 @@ contract ContractCheckVictim {
}
```
-Per depositare ETH, non bisogna avere codice di Smart Contract al proprio indirizzo. A questo però si può facilmente ovviare con il seguente contratto di Attacker:
+Questo contratto espone una funzione `withdraw()` per consentire agli utenti di prelevare gli ETH precedentemente depositati nel contratto. Elaborando un prelievo, il contratto esegue le seguenti operazioni:
-```solidity
-contract ContractCheckAttacker {
- constructor() public payable {
- ContractCheckVictim(VICTIM_ADDRESS).deposit(1 ether); // <- New line
- }
+1. Controlla il saldo di ETH dell'utente
+2. Invia i fondi all'indirizzo chiamante
+3. Ripristina il loro saldo a 0, impedendo ulteriori prelievi dall'utente
+
+La funzione `withdraw()` nel contratto `Victim` segue uno schema di "controlli-interazioni-effetti". _Verifica_ se le condizioni necessarie per l'esecuzione sono soddisfatte (cioè, se l'utente ha un saldo di ETH positivo) ed esegue l'_interazione_ inviando gli ETH all'indirizzo del chiamante, prima di applicare gli _effetti_ della transazione (cioè, ridurre il saldo dell'utente).
+
+Se `withdraw()` viene chiamato da un conto posseduto esternamente (EOA), la funzione si esegue come previsto: `msg.sender.call.value()` invia gli ETH al chiamante. Tuttavia, se `msg.sender` è un conto del contratto intelligente e chiama `withdraw()`, inviare i fondi utilizzando `msg.sender.call.value()` innescherà anche l'esecuzione del codice archiviato a quell'indirizzo.
+
+Immagina che questo sia il codice distribuito all'indirizzo del contratto:
+```solidity
+ contract Attacker {
function beginAttack() external payable {
- ContractCheckVictim(VICTIM_ADDRESS).withdraw();
+ Victim(victim_address).deposit.value(1 ether)();
+ Victim(victim_address).withdraw();
}
function() external payable {
if (gasleft() > 40000) {
- Victim(VICTIM_ADDRESS).withdraw();
+ Victim(victim_address).withdraw();
}
- }
+ }
}
```
-Mentre il primo attacco era un attacco alla logica del contratto, questo è un attacco al comportamento di distribuzione dei contratti Ethereum. Durante la costruzione, un contratto non ha ancora restituito il suo codice da distribuire al proprio indirizzo, ma mantiene il pieno controllo dell'EVM DURANTE questo processo.
+Questo contratto è progettato per fare tre cose:
-È tecnicamente possibile impedire che gli Smart Contract chiamino il proprio codice utilizzando questa riga:
+1. Accettare un deposito da un altro conto (probabilmente l'EOA dell'utente malevolo)
+2. Depositare 1 ETH nel contratto Victim
+3. Prelevare 1 ETH archiviato nel contratto intelligente
+
+Non c'è nulla di sbagliato qui, tranne il fatto che l'`Attacker` ha un'altra funzione che chiama nuovamente `withdraw()` in `Victim` se il gas rimanente da `msg.sender.call.value` in entrata è superiore a 40.000. Questo consente all'`Attacker` di rientrare nel contratto `Victim` e di prelevare ulteriori fondi, _prima_ del completamento della prima invocazione di `withdraw`. Il ciclo somiglia al seguente:
```solidity
-require(tx.origin == msg.sender)
+- L'EOA dell'Attacker chiama `Attacker.beginAttack()` con 1 ETH
+- `Attacker.beginAttack()` deposita 1 ETH in `Victim`
+- `Attacker` chiama `withdraw() in `Victim`
+- `Victim` controlla il saldo di `Attacker` (1 ETH)
+- `Victim` invia 1 ETH ad `Attacker` (che innesca la funzione di default)
+- `Attacker` chiama di nuovo `Victim.withdraw()` (si noti che `Victim` non ha ridotto il saldo di `Attacker` dopo il primo prelievo)
+- `Victim` controlla il saldo di `Attacker` (che è ancora 1 ETH perché non ha applicato gli effetti della prima chiamata)
+- `Victim` invia 1 ETH ad `Attacker` (che innesca la funzione di default e consente ad `Attacker` di rientrare nella funzione `withdraw`)
+- Il processo si ripete finché `Attacker` rimane senza gas; a quel punto `msg.sender.call.value` ritorna senza innescare alcun prelievo ulteriore
+- `Victim` infine applica i risultati della prima transazione (e delle successive) al proprio stato, così che il saldo di `Attacker` è impostato su 0
```
-Anche questa però non è ancora una buona soluzione. Uno degli aspetti più entusiasmanti di Ethereum è la sua componibilità: gli Smart Contract si integrano e si costruiscono l'uno sull'altro. Utilizzando la riga sopra, limiti l'utilità del progetto.
+Riepilogando: poiché il saldo del chiamante non è impostato a 0 fino al completamento dell'esecuzione della funzione, le invocazioni successive avranno successo, consentendo al chiamante di prelevare il proprio saldo numerose volte. Questo tipo di attacco è utilizzabile per sottrarre a un contratto intelligente i suoi fondi, come è avvenuto nella [violazione della DAO del 2016](https://www.coindesk.com/learn/2016/06/25/understanding-the-dao-attack/). Gli attacchi di rientranza sono ancora oggi un problema critico per i contratti intelligenti, come mostrato dagli [elenchi pubblici di exploit di rientranza](https://github.com/pcaversaccio/reentrancy-attacks).
+
+##### Come prevenire gli attacchi di rientranza
-### Come gestire il codice rientrante (in modo corretto) {#how-to-deal-with-re-entrancy-the-right-way}
+Un approccio per affrontare la rientranza è seguire lo [schema di controlli-effetti-interazioni](https://docs.soliditylang.org/en/develop/security-considerations.html#use-the-checks-effects-interactions-pattern). Questo schema ordina l'esecuzione delle funzioni in modo che il codice che esegue i controlli necessari prima di procedere all'esecuzione venga per primo, seguito dal codice che manipola lo stato del contratto e il codice che interagisce con gli altri contratti o EOA per ultimo.
-Semplicemente cambiando l'ordine dell'aggiornamento dello storage e della chiamata esterna si impedisce la condizione di codice rientrante che ha reso possibile l'attacco. Una nuova chiamata a withdraw, sempre se possibile, non andrà a beneficio dell'attaccante, dal momento che lo storage di `balances` (il saldo) sarà già impostato a 0.
+Lo schema di controlli-effetti-interazioni è utilizzato in una versione rivista del contratto `Victim`, mostrato di seguito:
```solidity
contract NoLongerAVictim {
@@ -200,128 +320,200 @@ contract NoLongerAVictim {
}
```
-Il codice qui sopra segue il modello di progettazione "controlli-effetti-interazioni", che aiuta a proteggere dal codice rientrante. Puoi approfondire [controli-effetti-interazioni qui](https://fravoll.github.io/solidity-patterns/checks_effects_interactions.html)
+Questo contratto esegue un _controllo_ sul saldo dell'utente, applica gli _effetti_ della funzione `withdraw()` (ripristinando il saldo dell'utente a 0), e procede all'esecuzione dell'_interazione_ (inviando gli ETH all'indirizzo dell'utente). Questo garantisce che il contratto aggiorni la propria memoria prima della chiamata esterna, eliminando la condizione di rientranza che ha consentito il primo attacco. Il contratto `Attacker` potrebbe ancora richiamare in `NoLongerAVictim`, ma poiché `balances[msg.sender]` è stata impostata a 0, ulteriori prelievi genereranno un errore.
+
+Un'altra opzione è utilizzare un blocco di esclusione reciproca (comunemente descritto come "mutex"), che blocca una porzione dello stato di un contratto fino al completamento dell'invocazione di una funzione. Questo è implementato utilizzando una variabile booleana impostata a `true` prima dell'esecuzione della funzione e ripristinata a `false` dopo l'invocazione. Come si può vedere nell'esempio seguente, l'utilizzo di un mutex protegge una funzione dalle chiamate ricorsive mentre l'invocazione originale è ancora in elaborazione, interrompendo efficientemente la rientranza.
+
+```solidity
+pragma solidity ^0.7.0;
+
+contract MutexPattern {
+ bool locked = false;
+ mapping(address => uint256) public balances;
+
+ modifier noReentrancy() {
+ require(!locked, "Blocked from reentrancy.");
+ locked = true;
+ _;
+ locked = false;
+ }
+ // This function is protected by a mutex, so reentrant calls from within `msg.sender.call` cannot call `withdraw` again.
+ // L'istruzione `return` risulta in `true`, pur valutando l'istruzione `locked = false` nel modificatore
+ function withdraw(uint _amount) public payable noReentrancy returns(bool) {
+ require(balances[msg.sender] >= _amount, "Nessun saldo da prelevare.");
+
+ balances[msg.sender] -= _amount;
+ bool (success, ) = msg.sender.call{value: _amount}("");
+ require(success);
+
+ return true;
+ }
+}
+```
+
+Puoi anche utilizzare un sistema di [pagamenti pull](https://docs.openzeppelin.com/contracts/4.x/api/security#PullPayment), che richiede agli utenti di prelevare i fondi dai contratti intelligenti, invece di un sistema di "pagamenti push", che invia i fondi ai conti. Ciò rimuove la possibilità di innescare inavvertitamente il codice a indirizzi sconosciuti (e può anche impedire determinati attacchi denial-of-service).
-### Come gestire il codice rientrante (opzione a prova di bomba) {#how-to-deal-with-re-entrancy-the-nuclear-option}
+#### Sottoeccedenze e sovraflussi di interi {#integer-underflows-and-overflows}
-Ogni volta che invii ETH a un indirizzo non attendibile o interagisci con un contratto sconosciuto (chiamando `transfer()` di un indirizzo token fornito dall'utente), ti apri alla possibilità di codice rientrante. **Progettando contratti che non inviano ETH e non chiamano contratti non affidabili, si preclude ogni possibilità di codice rientrante!**
+Il sovraflusso di un intero si verifica quando i risultati di un'operazione aritmetica ricadono al di fuori dell'intervallo accettabile di valori, causandone un "ripristino" al valore più basso rappresentabile. Ad esempio, un `uint8` può memorizzare solo i valori fino a 2^8-1=255. Le operazioni automatiche che risultano in valori superiori a `255` eccederanno e ripristineranno `uint` a `0`, analogamente a come il contachilometri di un'auto si ripristina a zero una volta raggiunto il chilometraggio massimo (999999).
-## Altri tipi di attacco {#more-attack-types}
+Le sottoeccedenze di interi si verificano per motivi simili: i risultati di un'operazione aritmetica ricadono al di sotto dell'intervallo accettabile. Diciamo che hai provato a ridurre `0` in un `uint8`, il risultato sarebbe semplicemente il ripristino al valore massimo rappresentabile (`255`).
-I tipi di attacco illustrati sopra coprono i problemi del codice di Smart Contract (codice rientrante) e alcune stranezze di Ethereum (codice in esecuzione all'interno di costruttori di contratto, prima che il codice sia disponibile all'indirizzo del contratto). Ci sono moltissimi altri tipi di attacco da evitare, ad esempio:
+Sia le sottoeccedenze che i sovraflussi di interi possono comportare modifiche impreviste alle variabili di stato di un contratto e risultare nell'esecuzione non pianificata. Di seguito è riportato un esempio che mostra come un utente malevolo può sfruttare il sovraflusso aritmetico in un contratto intelligente per eseguire un'operazione non valida:
-- Front-running
-- Rifiuto di invio di ETH
-- Overflow/underflow di numeri interi
+```
+pragma solidity ^0.7.6;
-Letture consigliate:
+// Questo contratto è progettato per agire da caveau temporale.
+// L'utente può depositare in questo contratto, ma non può prelevare per almeno una settimana.
+// L'utente può inoltre estendere il tempo di attesa oltre il periodo di attesa di 1 settimana.
-- [Consensys Smart Contract Known Attacks](https://consensys.github.io/smart-contract-best-practices/attacks/) - Una spiegazione molto leggibile delle vulnerabilità più significative, molte con codice di esempio.
-- [SWC Registry](https://swcregistry.io/docs/SWC-128) - Elenco curato di CWE che si applicano a Ethereum e Smart Contract
+/*
+1. Distribuisci TimeLock
+2. Distribuisci Attack con l'indirizzo di TimeLock
+3. Chiama Attack.attack inviando 1 ether. Potrai immediatamente
+ prelevare i tuoi ether.
-## Strumenti per la sicurezza {#security-tools}
+Cos'è successo?
+L'attacco ha causato il sovraflusso di TimeLock.lockTime ed è riuscito a prelevare
+prima del periodo di attesa di 1 settimana.
+*/
-Niente può sostituire la conoscenza dei principi di base della sicurezza di Ethereum e l'utilizzo di una società di auditing professionale che riveda il codice, però sono disponibili molti strumenti che aiutano a evidenziare potenziali problemi nel codice.
+contract TimeLock {
+ mapping(address => uint) public balances;
+ mapping(address => uint) public lockTime;
-### Sicurezza degli smart contract {#smart-contract-security}
+ function deposit() external payable {
+ balances[msg.sender] += msg.value;
+ lockTime[msg.sender] = block.timestamp + 1 weeks;
+ }
-**Slither -** **_Framework di analisi statica per Solidity scritto in Python 3_**
+ function increaseLockTime(uint _secondsToIncrease) public {
+ lockTime[msg.sender] += _secondsToIncrease;
+ }
-- [GitHub](https://github.com/crytic/slither)
+ function withdraw() public {
+ require(balances[msg.sender] > 0, "Fondi insufficienti");
+ require(block.timestamp > lockTime[msg.sender], "Tempo di blocco non scaduto");
-**MythX -** **_API per l'analisi della sicurezza degli Smart Contract Ethereum_**
+ uint amount = balances[msg.sender];
+ balances[msg.sender] = 0;
-- [mythx.io](https://mythx.io/)
-- [Documentazione](https://docs.mythx.io/)
+ (bool sent, ) = msg.sender.call{value: amount}("");
+ require(sent, "Impossibile inviare Ether");
+ }
+}
-**Mythril -** **_Strumento di analisi della sicurezza per bytecode dell'EVM._**
+contract Attack {
+ TimeLock timeLock;
-- [mythril](https://github.com/ConsenSys/mythril)
-- [Documentazione](https://mythril-classic.readthedocs.io/en/master/about.html)
+ constructor(TimeLock _timeLock) {
+ timeLock = TimeLock(_timeLock);
+ }
-**Manticore -** **_Interfaccia da riga di comando che usa uno strumento di esecuzione simbolica su smart contract e file binari_**
+ fallback() external payable {}
+
+ function attack() public payable {
+ timeLock.deposit{value: msg.value}();
+ /*
+ if t = tempo di blocco corrente, allora dobbiamo trovare x tale che
+ x + t = 2**256 = 0
+ so x = -t
+ 2**256 = type(uint).max + 1
+ so x = type(uint).max + 1 - t
+ */
+ timeLock.increaseLockTime(
+ type(uint).max + 1 - timeLock.lockTime(address(this))
+ );
+ timeLock.withdraw();
+ }
+}
+```
-- [GitHub](https://github.com/trailofbits/manticore)
-- [Documentazione](https://github.com/trailofbits/manticore/wiki)
+##### Come prevenire sottoeccedenze e sovraflussi di interi
-**Securify -** **_Scanner di sicurezza per smart contract Ethereum_**
+Dalla versione 0.8.0, il compilatore di Solidity rifiuta il codice risultante in sottoeccedenze e sovraflussi di interi. Tuttavia, i contratti compilati con una versione inferiore del compilatore dovrebbero eseguire controlli sulle funzioni che comportano operazioni aritmetiche, oppure utilizzare una libreria (es., [SafeMath](https://docs.openzeppelin.com/contracts/2.x/api/math)) che controlli sottoeccedenze/sovraflussi.
-- [securify.chainsecurity.com](https://securify.chainsecurity.com/)
-- [Discord](https://discordapp.com/invite/nN77ckb)
+#### Manipolazione degli oracoli {#oracle-manipulation}
-**ERC20 Verifier -** **_Strumento di verifica utilizzato per controllare se un contratto rispetta lo standard ERC20_**
+Gli [oracoli](/developers/docs/oracles/) si procurano le informazioni al di fuori della catena e le inviano sulla catena per l'uso dai contratti intelligenti. Con gli oracoli puoi progettare dei contratti intelligenti che interagiscono con sistemi esterni alla catena, come i mercati dei capitali, espandendo notevolmente la loro applicazione.
-- [erc20-verifier.openzeppelin.com](https://erc20-verifier.openzeppelin.com)
-- [Forum](https://forum.openzeppelin.com/t/online-erc20-contract-verifier/1575)
+Ma se l'oracolo è corrotto e invia informazioni errate sulla catena, i contratti intelligenti saranno eseguiti sulla base di input errati, il che può causare problemi. Questa è la base del "problema degli oracoli", che riguarda il compito di assicurarsi che le informazioni provenienti da un oracolo della blockchain siano accurate, aggiornate e tempestive.
-### Verifica formale {#formal-verification}
+Un problema di sicurezza correlato è l'utilizzo di un oracolo sulla catena, come uno scambio decentralizzato, per ottenere il prezzo a pronti per un bene. Le piattaforme di prestito nell'industria della [finanza decentralizzata (DeFi)](/defi/) lo fanno spesso per determinare il valore della garanzia di un utente, per determinare quanto possa prendere in prestito.
-**Informazioni sulla verifica formale**
+I prezzi del DEX sono spesso accurati, in gran parte a causa degli arbitri che ripristinano la parità nei mercati. Tuttavia, sono aperti alla manipolazione, in particolare se l'oracolo sulla catena calcola i prezzi dei beni sulla base degli schemi di negoziazione storici (come di solito accade).
-- [How formal verification of smart-contacts works](https://runtimeverification.com/blog/how-formal-verification-of-smart-contracts-works/) _20 luglio 2018 - Brian Marick_
-- [How Formal Verification Can Ensure Flawless Smart Contract](https://media.consensys.net/how-formal-verification-can-ensure-flawless-smart-contracts-cbda8ad99bd1) _29 gennaio 2018 - Bernard Mueller_
+Ad esempio, un utente malevolo potrebbe pompare artificialmente il prezzo a pronti di un bene richiedendo un prestito flash poco prima di interagire con il tuo contratto di prestito. L'interrogazione del DEX per sapere il prezzo del bene restituirebbe un valore superiore al normale (a causa del grande "ordine d'acquisto" dell'utente malevolo, distorcendo la domanda per il bene), consentendogli di prendere in prestito più del dovuto. Tali "attacchi di prestito flash" sono stati utilizzati per sfruttare la dipendenza dagli oracoli dei prezzi tra le applicazioni DeFi, costando ai protocolli milioni in fondi perduti.
-### Usare gli strumenti {#using-tools}
+##### Come prevenire la manipolazione degli oracoli
-Due degli strumenti più popolari per l'analisi della sicurezza degli smart contract sono:
+Il requisito minimo per evitare la manipolazione degli oracoli è utilizzare una rete di oracoli decentralizzati che richieda le informazioni da fonti multiple per evitare singoli punti di errore. In gran parte dei casi, gli oracoli decentralizzati contengono incentivi criptoeconomici integrati per incoraggiare i nodi dell'oracolo a segnalare le informazioni corrette, rendendoli più sicuri rispetto agli oracoli centralizzati.
-- [Slither](https://github.com/crytic/slither) di [Trail of Bits](https://www.trailofbits.com/) (versione hosted: [Crytic](https://crytic.io/))
-- [Mythril](https://github.com/ConsenSys/mythril) di [ConsenSys](https://consensys.net/) (versione hosted: [MythX](https://mythx.io/))
+Se prevedi di interrogare un oracolo sulla catena per conoscere i prezzi dei beni, valuta di utilizzarne uno che implementi un meccanismo di prezzo medio ponderato per il tempo (TWAP). Un [oracolo TWAP](https://docs.uniswap.org/protocol/V2/concepts/core-concepts/oracles) interroga il prezzo di un bene in due momenti differenti (che puoi modificare) e calcola il prezzo a pronti a seconda della media ottenuta. La scelta di periodi di tempo più lunghi protegge il tuo protocollo dalla manipolazione dei prezzi poiché i grandi ordini eseguiti di recente non possono influire sui prezzi dei beni.
-Entrambi sono strumenti utili che analizzano il codice e segnalano problemi. Ognuno ha una versione hosted [commercial], ma sono disponibili anche gratuitamente da eseguire localmente. Il seguente è un rapido esempio di come eseguire Slither, che viene reso disponibile in una comoda immagine Docker `trailofbits/eth-security-toolbox`. Dovrai [installare Docker se non lo hai già installato](https://docs.docker.com/get-docker/).
+## Risorse di sicurezza dei contratti intelligenti per sviluppatori {#smart-contract-security-resources-for-developers}
-```bash
-$ mkdir test-slither
-$ curl https://gist.githubusercontent.com/epheph/460e6ff4f02c4ac582794a41e1f103bf/raw/9e761af793d4414c39370f063a46a3f71686b579/gistfile1.txt > bad-contract.sol
-$ docker run -v `pwd`:/share -it --rm trailofbits/eth-security-toolbox
-docker$ cd /share
-docker$ solc-select 0.5.11
-docker$ slither bad-contract.sol
-```
+### Strumenti per analizzare i contratti intelligenti e verificare la correttezza del codice {#code-analysis-tools}
-Genererà questo output:
-
-```bash
-ethsec@1435b241ca60:/share$ slither bad-contract.sol
-INFO:Detectors:
-Reentrancy in Victim.withdraw() (bad-contract.sol#11-16):
- External calls:
- - (success) = msg.sender.call.value(amount)() (bad-contract.sol#13)
- State variables written after the call(s):
- - balances[msg.sender] = 0 (bad-contract.sol#15)
-Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities
-INFO:Detectors:
-Low level call in Victim.withdraw() (bad-contract.sol#11-16):
- - (success) = msg.sender.call.value(amount)() (bad-contract.sol#13)
-Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
-INFO:Slither:bad-contract.sol analyzed (1 contracts with 46 detectors), 2 result(s) found
-INFO:Slither:Use https://crytic.io/ to get access to additional detectors and GitHub integration
-```
+- **[Strumenti e librerie di test](/developers/docs/smart-contracts/testing/#testing-tools-and-libraries)**: _raccolta di strumenti e librerie standard per eseguire unit test, analisi statiche e dinamiche sui contratti intelligenti._
+
+- **[Strumenti di verifica formale](/developers/docs/smart-contracts/formal-verification/#formal-verification-tools)**: _strumenti per verificare la correttezza funzionale nei contratti intelligenti e controllare le invarianti._
+
+- **[Servizi di controllo dei contratti intelligenti](/developers/docs/smart-contracts/testing/#smart-contract-auditing-services)**: _elenco di organizzazioni che forniscono servizi di controllo dei contratti intelligenti per progetti di sviluppo per Ethereum._
+
+- **[Piattaforme di bug bounty](https://ethereum.org/en/developers/docs/smart-contracts/testing/#bug-bounty-platforms)**: _piattaforme per coordinare le ricompense per la caccia ai bug e ricompensare la divulgazione responsabile delle vulnerabilità critiche nei contratti intelligenti._
+
+### Strumenti per monitorare i contratti intelligenti {#smart-contract-monitoring-tools}
+
+- **[OpenZeppelin Defender Sentinels](https://docs.openzeppelin.com/defender/sentinel)**: _uno strumento per monitorare automaticamente e rispondere a eventi, funzioni e parametri di transazione sui tuoi contratti intelligenti._
+
+- **[Tenderly Real-Time Alerting](https://tenderly.co/alerting/)**: _uno strumento per ricevere notifiche in tempo reale quando si verificano eventi insoliti o imprevisti sui tuoi contratti intelligenti o portafogli._
+
+### Strumenti per l'amministrazione sicura dei contratti intelligenti {#smart-contract-administration-tools}
+
+- **[OpenZeppelin Defender Admin](https://docs.openzeppelin.com/defender/admin)**: _interfaccia per gestire l'amministrazione dei contratti intelligenti, inclusi i controlli di accesso, gli aggiornamenti e l'interruzione._
+
+- **[Gnosis Safe](https://gnosis.io/safe/)**: _portafoglio del contratto intelligente eseguito su Ethereum, che richiede un numero minimo di persone per approvare una transazione prima che possa verificarsi (M di N)._
+
+- **[Contratti OpenZeppelin](https://docs.openzeppelin.com/contracts/4.x/)**: _librerie dei contratti per implementare funzionalità amministrative, inclusa la proprietà del contratto, aggiornamenti, controlli di accesso, governance, interruzioni e altro._
+
+### Pubblicazioni di vulnerabilità ed exploit noti dei contratti intelligenti {#common-smart contract-vulnerabilities-and-exploits}
+
+- **[ConsenSys: attacchi noti ai contratti intelligenti](https://consensys.github.io/smart-contract-best-practices/attacks/)**: _spiegazione per principianti delle vulnerabilità più significative dei contratti, con esempi di codice per gran parte dei casi._
+
+- **[Registro SWC](https://swcregistry.io/)**: _elenco curato di elementi di Enumerazione delle debolezze comuni (CWE) che si applicano ai contratti intelligenti di Ethereum._
+
+- **[Rekt](https://rekt.news/)**: _pubblicazione aggiornata regolarmente di violazioni ed exploit cripto ad alto profilo, con report postumi dettagliati._
+
+### Sfide per imparare sulla sicurezza dei contratti intelligenti {#challenges-for-learning-smart-contract-security}
+
+- **[Awesome BlockSec CTF](https://github.com/blockthreat/blocksec-ctfs)**: _elenco curato di wargame di sicurezza della blockchain, sfide e competizioni di [Capture The Flag](https://www.webopedia.com/definitions/ctf-event/amp/) e soluzioni._
+
+- **[Damn Vulnerable DeFi](https://www.damnvulnerabledefi.xyz/)**: _wargame per apprendere la sicurezza offensiva dei contratti intelligenti della Defi e creare abilità di caccia ai bug e controllo di sicurezza._
+
+- **[Ethernaut](https://ethernaut.openzeppelin.com/)**: _wargame basato su Web3/Solidity in cui ogni livello è un contratto intelligente da 'violare'._
+
+### Migliori pratiche per proteggere i contratti intelligenti {#smart-contract-security-best-practices}
-Qui Slither ha identificato una potenzialità di codice rientrante, individuando le righe principali su cui potrebbe verificarsi il problema, e ci fornisce un link per avere maggiori dettagli:
+- **[ConsenSys: migliori pratiche sulla sicurezza dei contratti intelligenti di Ethereum](https://consensys.github.io/smart-contract-best-practices/)**: _elenco completo di linee guida per proteggere i contratti intelligenti di Ethereum._
-> Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities
+- **[Nascent: semplice kit di strumenti di sicurezza](https://github.com/nascentxyz/simple-security-toolkit)**: _raccolta di pratiche guide e liste di controllo incentrate sulla sicurezza per lo sviluppo dei contratti intelligenti._
-In questo modo è possibile venire a conoscenza rapidamente di potenziali problemi del codice. Come tutti gli strumenti di test automatici, Slither non è perfetto, e a volte segnala troppo. Può mettere in guardia da un potenziale codice rientrante anche quando non è presente alcuna vulnerabilità sfruttabile. Spesso, rivedere le DIFFERENZE nell'output di Slither tra le modifiche al codice è estremamente illuminante e aiuta a scoprire le vulnerabilità che sono state introdotte molto prima che il codice del progetto sia completo.
+- **[Schemi di Solidity](https://fravoll.github.io/solidity-patterns/)**: _utile raccolta di schemi sicuri e migliori pratiche per il linguaggio di programmazione di contratti intelligenti Solidity._
-## Letture consigliate {#further-reading}
+- **[Documentazione di Solidity: considerazioni sulla sicurezza](https://docs.soliditylang.org/en/v0.8.16/security-considerations.html)**: _linee guida per la scrittura di contratti intelligenti sicuri con Solidity._
-**Guide alle migliori prassi di sicurezza dei contratti intelligenti**
+- **[Standard di verifica della sicurezza dei contratti intelligenti](https://github.com/securing/SCSVS)**: _lista di controllo in quattordici parti, creata per standardizzare la sicurezza dei contratti intelligenti per sviluppatori, architetti, revisori di sicurezza e fornitori._
-- [consensys.github.io/smart-contract-best-practices/](https://consensys.github.io/smart-contract-best-practices/)
-- [GitHub](https://github.com/ConsenSys/smart-contract-best-practices/)
-- [Raccolta di raccomandazioni di sicurezza e migliori pratiche](https://github.com/guylando/KnowledgeLists/blob/master/EthereumSmartContracts.md)
+### Tutorial sulla sicurezza dei contratti intelligenti {#tutorials-on-smart-contract-security}
-**Standard di verifica di sicurezza degli smart contract (SCSVS)**
+- [Come scrivere contratti intelligenti sicuri](/developers/tutorials/secure-development-workflow/)
-- [securing.github.io/SCSVS/](https://securing.github.io/SCSVS/)
+- [Come usare Slither per trovare i bug nei contratti intelligenti](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/)
-_Conosci una risorsa pubblica che ti è stata utile? Modifica questa pagina e aggiungila!_
+- [Come usare Manticore per trovare bug nei contratti intelligenti](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/)
-## Tutorial correlati {#related-tutorials}
+- [Linee guida sulla sicurezza dei contratti intelligenti](/developers/tutorials/smart-contract-security-guidelines/)
-- [Flusso di lavoro per lo sviluppo sicuro](/developers/tutorials/secure-development-workflow/)
-- [Come utilizzare Slither per individuare i bug negli smart contract](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/)
-- [Come utilizzare Manticore per individuare i bug negli smart contract](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/)
-- [Linee guida di sicurezza](/developers/tutorials/smart-contract-security-guidelines/)
-- [Sicurezza dei token](/developers/tutorials/token-integration-checklist/)
+- [Come integrare in sicurezza il tuo contratto dei token con token arbitrari](/developers/tutorials/token-integration-checklist/)
diff --git a/src/content/translations/it/developers/docs/smart-contracts/testing/index.md b/src/content/translations/it/developers/docs/smart-contracts/testing/index.md
index 64d725a10ac..1b4a2a22c1f 100644
--- a/src/content/translations/it/developers/docs/smart-contracts/testing/index.md
+++ b/src/content/translations/it/developers/docs/smart-contracts/testing/index.md
@@ -1,64 +1,64 @@
---
-title: Test degli smart contract
-description: Una panoramica delle tecniche e delle considerazioni per testare gli smart contract di Ethereum
+title: Testare i contratti intelligenti
+description: Una panoramica delle tecniche e considerazioni per testare i contratti intelligenti di Ethereum
lang: it
---
-Testare gli [smart contract](/developers/docs/smart-contracts/) è una delle misure più importanti per migliorarne la [sicurezza](/developers/docs/smart-contracts/security/). A differenza dei software tradizionali, in genere gli smart contract non possono essere aggiornati dopo il lancio, il che rende imperativo testarli rigorosamente prima di distribuirli sulla rete di Ethereum.
+Testare i [contratti intelligenti](/developers/docs/smart-contracts/) è una delle misure più importanti per migliorarne la [sicurezza](/developers/docs/smart-contracts/security/). A differenza dei software tradizionali, i contratti intelligenti non possono tipicamente esser aggiornati dopo il lancio, rendendo imperativo testarli rigorosamente prima di distribuirsi sulla rete di Ethereum.
-## Cosa significa testare gli smart contract? {#what-is-smart-contract-testing}
+## In che consiste testare i contratti intelligenti? {#what-is-smart-contract-testing}
-Con testare gli smart contract si intende l'esecuzione di analisi e valutazioni dettagliate per valutare la qualità del codice sorgente durante il ciclo di sviluppo. Testare uno smart contract semplifica l'identificazione di bug e vulnerabilità e riduce la possibilità di errori software che potrebbero portare a costosi exploit.
+Testare il contratto intelligente significa eseguire analisi e valutazioni dettagliate di un contratto intelligente, per valutare la qualità del suo codice sorgente durante il ciclo di sviluppo. Testare un contratto intelligente semplifica l'identificazione di bug e vulnerabilità e riduce la possibilità di errori del software che potrebbero comportare costosi exploit.
-Il test degli smart contract assume molte forme, con metodi differenti che offrono una serie di vantaggi. Le strategie per testare gli smart contract di Ethereum sono classificabili in due ampie categorie: **test automatizzati** e **test manuali**.
+Il test dei contratti intelligenti assume molte forme, con metodi differenti che offrono una serie di benefici. Le strategie per testare i contratti intelligenti di Ethereum sono classificabili in due ampie categorie: **test automatizzati** e **test manuali**.
### Test automatizzati {#automated-testing}
-I test automatizzati comportano l'uso di strumenti automatizzati per svolgere test scriptati degli smart contract. Questa tecnica si affida a software automatizzati che possono eseguire ripetuti test per individuare eventuali difetti negli smart contract.
+I test automatizzati comportano l'uso di strumenti automatizzati per svolgere test scriptati dei contratti intelligenti. Questa tecnica si affida a software automatizzati che possono eseguire dei test ripetuti per individuare i difetti dei contratti intelligenti.
I test automatizzati sono efficienti, usano meno risorse e offrono livelli di copertura superiori alle analisi manuali. Gli strumenti di test automatizzati sono anche configurabili coi dati dei test, il che consente di confrontare i comportamenti previsti con i risultati effettivi.
### Test manuali {#manual-testing}
-I test manuali sono assistiti dall'uomo e implicano la presenza di un individuo che esegue manualmente i passaggi dei test. I controlli del codice, in cui sviluppatori e/o revisori analizzano ogni singola riga del codice del contratto, sono un esempio di test manuale per gli smart contract.
+I test manuali sono assistiti dall'uomo e implicano la presenza di un individuo che esegue manualmente i passaggi dei test. I controlli del codice, in cui sviluppatori e/o revisori analizzano ogni singola riga del codice del contratto, sono un esempio di test manuali per i contratti intelligenti.
-Il test manuale degli smart contract richiede notevoli abilità e un investimento considerevole di tempo, denaro e sforzo. Inoltre, a volte i test manuali possono essere soggetti a problemi derivati dall'errore umano.
+I test manuali dei contratti intelligenti richiedono notevoli abilità e un considerevole investimento di tempo, denaro e lavoro. Inoltre, a volte i test manuali possono essere soggetti a problemi derivati dall'errore umano.
-Tuttavia, applicare il test manuale agli smart contract può anche esser vantaggioso. I controlli del codice sfruttano l'intelligenza umana per individuare difetti nel codice del contratto che potrebbero passare inosservati durante i test automatizzati.
+Tuttavia, applicare il test manuale ai contratti intelligenti può anche esser benefico. I controlli del codice sfruttano l'intelligenza umana per individuare difetti nel codice del contratto che potrebbero passare inosservati durante i test automatizzati.
-Testare manualmente i propri smart contract permette anche di rivelare vulnerabilità esistenti al di fuori del codice, ma che possono comunque influenzarlo. Ad esempio, il controllo di uno smart contract può fare emergere vulnerabilità derivanti dall'interazione difettosa con i componenti al di fuori della catena.
+Testare manualmente i tuoi contratti intelligenti può anche rivelare vulnerbailità esistenti al di fuori del codice, ma che possono comunque influenzarlo. Ad esempio, il controllo di un contratto intelligente può scoprire vulnerabilità derivanti dall'interazione difettosa con i componenti esterni alla catena.
-## Perché è importante testare gli smart contract? {#benefits-of-smart-contract-testing}
+## Perché è importante testare i contratti intelligenti? {#benefits-of-smart-contract-testing}
-Testare gli smart contract è importante per i seguenti motivi:
+Testare i contratti intelligenti è importante per i seguenti motivi:
-### 1. Gli smart contract sono applicazioni dal valore elevato {#smart-contracts-are-high-value-applications}
+### 1. I contratti intelligenti sono applicazioni dal valore elevato {#smart-contracts-are-high-value-applications}
-Gli smart contract hanno spesso a che fare con risorse finanziarie dal valore elevato, specialmente in settori come la [finanza decentralizzata (DeFi)](/defi/), ed oggetti di valore, come i [token non fungibili (NFT)](/nft/). Come tali, le vulnerabilità minori negli smart contract possono tradursi e spesso si traducono in perdite enormi e irrecuperabili per gli utenti. Effettuando test completi, tuttavia, è possibile esporre errori nel codice degli smart contract e ridurre i rischi di sicurezza prima della distribuzione.
+I contratti intelligenti hanno spesso a che fare con risorse finanziarie dal valore elevato, specialmente in settori come la [finanza decentralizzata (DeFi)](/defi/) e con beni di valore, come i [token non fungibili (NFT)](/nft/). Come tali, le vulnerabilità minori nei contratti intelligenti possono tradursi, come spesso succede, in enormi e irrecuperabili perdite per gli utenti. Dei test completi, tuttavia, possono esporre gli errori nel codice del contratto intelligente e ridurre i rischi di sicurezza prima della distribuzione.
-### 2. Gli smart contract sono immutabili {#smart-contracts-are-immutable}
+### 2. I contratti intelligenti sono immutabili {#smart-contracts-are-immutable}
-Gli smart contract distribuiti nella [Macchina Virtuale di Ethereum (EVM)](/developers/docs/evm/) sono immutabili di default. Mentre gli sviluppatori tradizionali potrebbero essere abituati a risolvere i bug del software dopo il lancio, lo sviluppo di Ethereum lascia poco spazio alla risoluzione delle falle di sicurezza una volta che uno smart contract è attivo sulla blockchain.
+I contratti intelligenti distribuiti nella [Macchina Virtuale di Ethereum (EVM)](/developers/docs/evm/) sono immutabili di default. Mentre gli sviluppatori tradizionali potrebbero esser abituati alla risoluzione dei bug del software dopo il lancio, lo sviluppo di Ethereum lascia poco spazio alla risoluzione delle falle di sicurezza una volta che un contratto intelligente è attivo sulla blockchain.
-Benché esistano meccanismi di aggiornabilità per gli smart contract, come gli schemi del proxy, possono essere difficili da implementare. Oltre a ridurre l'immutabilità e introdurre complessità, spesso gli aggiornamenti richiedono complessi processi di governance.
+Sebbene esistano dei meccanismi d'aggiornabilità per i contratti intelligenti, come gli schemi del proxy, questi possono risultare difficili da implementare. Oltre a ridurre l'immutabilità e introdurre complessità, spesso gli aggiornamenti richiedono complessi processi di governance.
-In gran parte, gli aggiornamenti dovrebbero essere considerati come l'ultima spiaggia ed evitati, se non necessari. Rilevare potenziali vulnerabilità e difetti nel proprio smart contract durante la fase pre-lancio riduce il bisogno di aggiornamenti logici.
+In gran parte, gli aggiornamenti dovrebbero essere considerati come l'ultima spiaggia ed evitati, se non necessari. Rilevare potenziali vulnerabilità e difetti nel tuo contratto intelligente durante la fase pre-lancio, riduce il bisogno di aggiornamenti logici.
-## Test automatizzati per gli smart contract {#automated-testing-for-smart-contracts}
+## Test automatizzati per i contratti intelligenti {#automated-testing-for-smart-contracts}
### 1. Test funzionali {#functional-testing}
-I test funzionali verificano la funzionalità di uno smart contract e garantiscono che ogni funzione nel codice funzioni come previsto. I test funzionali richiedono la comprensione di come lo smart contract dovrebbe comportarsi in determinate condizioni. Quindi, è possibile testare ogni funzione eseguendo calcoli con i valori selezionati e confrontando i risultati ottenuti con quelli previsti.
+I test funzionali verificano la funzionalità di un contratto intelligente e garantiscono che ogni funzione nel codice operi come previsto. I test funzionali richiedono la comprensione di come il tuo contratto intelligente dovrebbe comportarsi in certe condizioni. Quindi, è possibile testare ogni funzione eseguendo calcoli con i valori selezionati e confrontando i risultati ottenuti con quelli previsti.
I test funzionali coprono tre metodi: **test unitario**, **test d'integrazione** e **test di sistema**.
#### Test unitario
-Il test dell'unità comporta il test della correttezza dei singoli componenti in uno smart contract. Un test unitario è semplice, rapido da eseguire e fornisce un'idea chiara di cosa è andato storto se il test fallisce.
+Il test dell'unità comporta il test della correttezza dei singoli componenti in un contratto intelligente. Un test unitario è semplice, rapido da eseguire e fornisce un'idea chiara di cosa è andato storto se il test fallisce.
-I testi unitari sono fondamentali per lo sviluppo degli smart contract, specialmente se occorre aggiungere nuova logica al codice. Puoi verificare il comportamento di ogni funzione e confermare che venga eseguito come desiderato.
+I test dell'unità sono fondamentali per lo sviluppo del contratto intelligente, specialmente se necessiti di aggiungere nuova logica al codice. Puoi verificare il comportamento di ogni funzione e confermare che venga eseguito come desiderato.
-Eseguire un test unitario spesso richiede la creazione di _asserzioni_, semplici dichiarazioni informali che specificano i requisiti di uno smart contract. Il test unitario è poi utilizzabile per testare ogni asserazione e verificare se resta vera durante l'esecuzione.
+Eseguire un test dell'unità richiede spesso la creazione di _asserzioni_: semplici dichiarazioni informali che specificano i requisiti per un contratto intelligente. Il test unitario è poi utilizzabile per testare ogni asserazione e verificare se resta vera durante l'esecuzione.
Esempi di asserzioni correlate al contratto includono:
@@ -70,7 +70,7 @@ iii. "Il contratto si ripristina in caso di errore"
#### Test d'integrazione
-Il test d'integrazione è di un livello superiore rispetto al test unitario sulla gerarchia dei test. Nel test d'integrazione, i singoli componenti dello smart contract vengono testati insieme.
+Il test d'integrazione è di un livello superiore rispetto al test unitario sulla gerarchia dei test. Nel test d'integrazione, i singoli componenti del contratto intelligente sono testati insieme.
Questo approccio rileva gli errori derivanti dalle interazioni tra i diversi componenti di un contratto o tra diversi contratti. Dovresti usare questo metodo se hai un contratto complesso con numerose funzioni o con una funzione che si interfaccia con altri contratti.
@@ -78,81 +78,81 @@ Il test d'integrazione può essere utile per assicurarsi che aspetti come l'[ere
#### Test di sistema
-I test di sistema sono la fase finale del test funzionale per gli smart contract. Un sistema valuta lo smart contract come un prodotto completamente integrato per vedere se performa come specificato nei requisiti tecnici.
+I test di sistema sono la fase finale del test funzionale per i contratti intelligenti. Un sistema valuta il contratto intelligente come un prodotto completamente integrato per vedere se performa come specificato nei requisiti tecnici.
-Puoi pensare a questa fase come al controllo del flusso end-to-end del tuo smart contract dal punto di vista di un utente. Un modo efficace per eseguire i test di sistema su uno smart contract consiste nel distribuirli su un ambiente simile a quello di produzione, come una [rete di prova](/developers/docs/networks/#ethereum-testnets) o una [rete di sviluppo](/developers/docs/development-networks/).
+Puoi pensare a questa fase come un controllo del flusso da parte a parte del tuo contratto intelligente dal punto di vista di un utente. Un buon modo per eseguire i test di sistema su un contratto intelligente, è distribuirli su un ambiente simile a quello di produzione, come una [rete di prova](/developers/docs/networks/#ethereum-testnets) o una [rete di sviluppo](/developers/docs/development-networks/).
Qui gli utenti finali possono eseguire prove e segnalare eventuali problemi con la logica aziendale del contratto e le funzionalità generali. Il test di sistema è importante perché non è possibile cambiare il codice una volta distribuito il contratto nell'ambiente dell'EVM principale.
### 2. Analisi statica/dinamica {#static-dynamic-analysis}
-L'analisi statica e l'analisi dinamica sono due metodi di test automatizzati per valutare le qualità di sicurezza degli smart contract. Entrambe le tecniche, tuttavia, usano approcci differenti per trovare difetti nel codice del contratto.
+L'analisi statica e l'analisi dinamica sono due metodi di test automatizzati per valutare le qualità di sicurezza dei contratti intelligenti. Entrambe le tecniche, tuttavia, usano approcci differenti per trovare difetti nel codice del contratto.
#### Analisi statica
-L'analisi statica esamina il codice sorgente o il bytecode di uno smart contract prima dell'esecuzione. Questo significa che puoi eseguire il debug del codice del contratto senza eseguire effettivamente il programma. Gli analizzatori statici possono rilevare le vulnerabilità comuni negli smart contract e aiutare a conformarsi alle pratiche migliori.
+L'analisi statica esamina il codice sorgente o il bytecode di un contratto intelligente prima dell'esecuzione. Questo significa che puoi eseguire il debug del codice del contratto senza eseguire effettivamente il programma. Gli analizzatori statici possono rilevare le vulnerabilità comuni nei contratti intelligenti e aiutare a conformarsi alle pratiche migliori.
#### Analisi dinamica
-Le tecniche di analisi dinamica richiedono l'esecuzione dello smart contract in un ambiente di esecuzione per identificare i problemi a livello del codice. Gli analizzatori del codice dinamico osservano i comportamenti del contratto durante l'esecuzione e generano un rapporto dettagliato sulle vulnerabilità e violazioni di proprietà identificate.
+Le tecniche di analisi dinamica richiedono l'esecuzione del contratto intelligente in un ambiente d'esecuzione per identificare i problemi nel tuo codice. Gli analizzatori del codice dinamico osservano i comportamenti del contratto durante l'esecuzione e generano un rapporto dettagliato sulle vulnerabilità e violazioni di proprietà identificate.
-Il fuzzing (test con dati casuali) è un esempio di una tecnica di analisi dinamica per testare i contratti. Durante i test di fuzzing, un fuzzer alimenta lo smart contract con dati malformati e non validi e monitora la reazione del contratto a tali input.
+Il fuzzing (test con dati casuali) è un esempio di una tecnica di analisi dinamica per testare i contratti. Durante i test di fuzz, un fuzzer alimenta il tuo contratto intelligente di dati malformati e non validi e monitora come il contratto risponde a tali input.
-Come ogni programma, gli smart contract si affidano agli input forniti dagli utenti per eseguire funzioni. E, pur supponendo che gli utenti forniscano input corretti, potrebbe anche accadere il contrario.
+Come ogni programma, i contratti intelligenti si affidano agli input forniti dagli utenti per eseguire funzioni. E, pur supponendo che gli utenti forniscano input corretti, potrebbe anche accadere il contrario.
-In alcuni casi, inviare valori di input errati a uno smart contract può causare perdite di risorse, crash, o peggio condurre all'esecuzione di codice indesiderato. Le campagne di fuzzing identificano tali problemi in anticipo, consentendo di eliminare la vulnerabilità.
+In alcuni casi, inviare valori di input errati a un contratto intelligente può causare perdite della risorsa, crash, o peggio, condurre all'imprevista esecuzione del codice. Le campagne di fuzzing identificano tali problemi in anticipo, consentendo di eliminare la vulnerabilità.
-## Test manuale per gli smart contract {#manual-testing-for-smart-contracts}
+## Test manuale per i contratti intelligenti {#manual-testing-for-smart-contracts}
### 1. Controlli del codice {#code-audits}
-Un controllo del codice è una valutazione dettagliata del codice sorgente di uno smart contract per scoprire possibili punti di guasto, falle di sicurezza e pratiche di sviluppo deboli. Anche se i controlli del codice possono essere automatizzati, qui facciamo riferimento all'analisi del codice assistita dall'uomo.
+Un controllo del codice è una valutazione dettagliata del codice sorgente di un contratto intelligente per scoprire possibili punti di guasto, falle di sicurezza e pratiche di sviluppo deboli. Anche se i controlli del codice possono essere automatizzati, qui facciamo riferimento all'analisi del codice assistita dall'uomo.
-I controlli del codice richiedono una mentalità da utente malevolo per mappare i possibili vettori di attacco negli smart contract. Anche eseguendo controlli automatizzati, l'analisi di ogni riga del codice sorgente è un requisito minimo per scrivere smart contract sicuri.
+I controlli del codice richiedono una mentalità da utente malevolo per mappare i possibili vettori di attacco nei contratti intelligenti. Anche se esegui dei controlli automatizzati, l'analisi di ogni riga del codice sorgente è un requisito minimo per scrivere contratti intelligenti sicuri.
-Puoi anche commissionare un controllo di sicurezza per dare agli utenti garanzie migliori sulla sicurezza dello smart contract. I controlli beneficiano dall'ampia analisi eseguita dai professionisti della cyber-sicurezza e rilevano le vulnerabilità potenziali o i bug che potrebbero danneggiare la funzionalità dello smart contract.
+Puoi anche commissionare un controllo di sicurezza per dare agli utenti garanzie migliori sulla sicurezza del contratto intelligente. I controlli beneficiano dall'ampia analisi eseguita dai professionisti della cyber-sicurezza e rilevano le vulnerabilità potenziali o i bug che potrebbero danneggiare la funzionalità del contratto intelligente.
### 2. Caccia ai bug {#bug-bounties}
-Una caccia ai bug è una ricompensa finanziaria data a un individuo che scopre una vulnerabilità o un bug nel codice di un programma e la segnala agli sviluppatori. Le cacce ai bug sono simili ai controlli poiché comportano di chiedere ad altri di aiutare a trovare difetti negli smart contract. La differenzza principale è che i programmi di caccia ai bug sono aperti alla più ampia community di sviluppatori/hacker.
+Una caccia ai bug è una ricompensa finanziaria data a un individuo che scopre una vulnerabilità o un bug nel codice di un programma e la segnala agli sviluppatori. Le cacce ai bug sono simili ai controlli poiché comportano di chiedere ad altri di aiutare a trovare difetti nei contratti intelligenti. La differenzza principale è che i programmi di caccia ai bug sono aperti alla più ampia community di sviluppatori/hacker.
-I programmi di caccia ai bug attraggono spesso un'ampia classe di hacker etici e di professionisti della sicurezza indipendenti con abilità ed esperienza uniche. Questo potrebbe essere un vantaggio rispetto ai controlli sugli smart contract che si affidano principalmente a team che potrebbero possedere esperienze limitate o minime.
+I programmi di caccia ai bug attraggono spesso un'ampia classe di hacker etici e di professionisti della sicurezza indipendenti con abilità ed esperienza uniche. Questo potrebbe essere un vantaggio sui controlli del contratto intelligente che si affidano principalmente ai team che potrebbero possedere esperienza limitata o minima.
## Test vs. verifica formale {#testing-vs-formal-verification}
-Sebbene i test aiutino a confermare che un contratto restituisce i risultati previsti per alcuni input di dati, non può provare in via conclusiva lo stesso per gli input non usati durante i test. Testare uno smart contract non può garantire la "correttezza funzionale", il che significa che non può mostrare che un programma si comporta come richiesto per _tutte_ le serie di valori e condizioni di input.
+Sebbene i test aiutino a confermare che un contratto restituisce i risultati previsti per alcuni input di dati, non può provare in via conclusiva lo stesso per gli input non usati durante i test. Testare un contratto intelligente non può garantire la "correttezza funzionale", a significare che non può mostrare che un programma si comporta come richiesto per _tutte_ le serie di valori e condizioni di input.
-Come tali, gli sviluppatori sono incoraggiati a incorporare la **verifica formale** nel loro approccio a valutare la correttezza degli smart contract. La verifica formale usa [metodi formali](https://www.brookings.edu/techstream/formal-methods-as-a-path-toward-better-cybersecurity/), tecniche matematicamente rigorose per specificare e verificare software.
+Come tali, gli sviluppatori sono incoraggiati a incorporare la **verifica formale** nel loro approccio a valutare la correttezza dei contratti intelligenti. La verifica formale usa [metodi formali](https://www.brookings.edu/techstream/formal-methods-as-a-path-toward-better-cybersecurity/), tecniche matematicamente rigorose per specificare e verificare software.
-La verifica formale è considerata importante per gli smart contract perché aiuta gli sviluppatori a testare formalmente le ipotesi correlate agli stessi. A tale scopo vengono create specifiche formali che descrivono le proprietà di uno smart contract e si verifica che un modello formale dello smart contract corrisponda alla specifica. Questo approccio aumenta la fiducia che uno smart contract eseguirà le funzioni solo come definito nella sua logica aziendale e in nessun altro caso.
+La verifica formale è considerata importante per i contratti intelligenti perché aiuta gli sviluppatori a testare formalmente le ipotesi correlate ai contratti intelligenti. Questo è fatto creando delle specifiche formali che descrivono le proprietà di un contratto intelligente e verificando che un modello formale del contratto intelligente corrisponda alla specifica. Questo approccio aumenta la fiducia che un contratto intelligente eseguirà le funzioni solo come definito nella sua logica aziendale e in nessun altro caso.
-[Maggiori informazioni sulla verifica formale per gli smart contract](/developers/docs/smart-contracts/formal-verification)
+[Di più sulla verifica formale per i contratti intelligenti](/developers/docs/smart-contracts/formal-verification)
## Strumenti di test e librerie {#testing-tools-and-libraries}
### Strumenti per i test unitari {#unit-testing-tools}
-**Solidity-Coverage** - _Strumento di copertura del codice di Solidity, utile per testare gli smart contract._
+**Solidity-Coverage** - _Strumento di copertura del codice di Solidity utile per testare i contratti intelligenti._
- [GitHub](https://github.com/sc-forks/solidity-coverage)
-**Waffle** - _Quadro per lo sviluppo e l'esecuzione di test avanzati sugli smart contract (basato su ethers.js)_.
+**Waffle** - _Quadro per lo sviluppo e test avanzati dei contratti intelligenti (basato su ethers.js)_.
- [Documentazione](https://ethereum-waffle.readthedocs.io/en/latest/)
- [GitHub](https://github.com/TrueFiEng/Waffle)
- [Sito web](https://getwaffle.io/)
-**Remix Tests** - _Strumento per testare gli smart contract di Solidity. Opera sotto il plugin "Solidity Unit Testing" di Remix IDE, usato per scrivere ed eseguire casi di prova per un contratto._
+**Remix Tests** - _Strumento per testare i contratti intelligenti di Solidity. Opera sotto il plugin "Solidity Unit Testing" di Remix IDE, usato per scrivere ed eseguire casi di prova per un contratto._
- [Documentazione](https://remix-ide.readthedocs.io/en/latest/unittesting.html)
- [GitHub](https://github.com/ethereum/remix-project/tree/master/libs/remix-tests)
-**OpenZeppelin Test Helpers** - _Libreria di affermazione per testare gli smart contract di Ethereum. Assicurati che i tuoi contratti si comportino come previsto!_
+**OpenZeppelin Test Helpers** - _Libreria di affermazione per testare i contratti intelligenti di Ethereum. Assicurati che i tuoi contratti si comportino come previsto!_
- [GitHub](https://github.com/OpenZeppelin/openzeppelin-test-helpers)
- [Documentazione](https://docs.openzeppelin.com/test-helpers)
-**Quadro di test degli smart contract di Truffle** - _Quadro di test automatizzato per testare i tuoi contratti in un attimo._
+**Quadro di test dei contratti intelligenti di Truffle** - _Quadro di test automatizzato per testare i tuoi contratti in un attimo._
- [Documenti](https://trufflesuite.com/docs/truffle/testing/testing-your-contracts/)
- [Sito Web](https://trufflesuite.com/)
@@ -162,7 +162,7 @@ La verifica formale è considerata importante per gli smart contract perché aiu
- [Documentazione](https://eth-brownie.readthedocs.io/en/v1.0.0_a/tests.html)
- [GitHub](https://github.com/eth-brownie/brownie)
-**Test di Foundry** - _Foundry offre Forge, un quadro di prova di Ethereum veloce e flessibile, capace di eseguire semplici test unitari, controlli di ottimizzazione del gas e fuzzing del contratto._
+**Test di Foundry**: _Foundry offre Forge, un quadro di prova di Ethereum veloce e flessibile, capace di eseguire semplici test unitari, controlli di ottimizzazione del gas e del contratto._
- [GitHub](https://github.com/foundry-rs/foundry/tree/master/forge)
- [Documentazione](https://book.getfoundry.sh/forge/)
@@ -178,21 +178,21 @@ La verifica formale è considerata importante per gli smart contract perché aiu
- [GitHub](https://github.com/ConsenSys/mythril-classic)
- [Documentazione](https://mythril-classic.readthedocs.io/en/master/about.html)
-**Slither** - _Quadro di analisi statica di Solidity basato su Python per trovare vulnerabilità, migliorare la comprensione del codice e scrivere analisi personalizzate per gli smart contract._
+**Slither** - _Quadro di analisi statica di Solidity basato su Python per trovare vulnerabilità, migliorare la comprensione del codice e scrivere analisi personalizzate per i contratti intelligenti._
- [GitHub](https://github.com/crytic/slither)
-**Rattle** - _Quadro di analisi statica del bytecode dell'EVM progettato per operare sugli smart contract distribuiti._
+**Rattle** - _Quadro di analisi statica del bytecode dell'EVM progettato per operare sui contratti intelligenti distribuiti._
- [GitHub](https://github.com/crytic/rattle)
### Strumenti di analisi dinamica {#dynamic-analysis-tools}
-**Echidna** - _Fuzzer del contratto veloce, per rilevare le vulnerabilità negli smart contract tramite i test basati sulla proprietà._
+**Echidna** - _Fuzzer del contratto veloce, per rilevare le vulnerabilità nei contratti intelligenti tramite i test basati sulla proprietà._
- [GitHub](https://github.com/crytic/echidna/)
-**Harvey** - _Strumento di fuzzing automatizzato utile per rilevare le violazioni di proprietà nel codice dello smart contract._
+**Harvey** - _Strumento di fuzzing automatizzato utile per rilevare le violazioni di proprietà nel codice del contratto intelligente._
- [Sito web](https://consensys.net/diligence/fuzzing/)
@@ -201,13 +201,13 @@ La verifica formale è considerata importante per gli smart contract perché aiu
- [GitHub](https://github.com/trailofbits/manticore)
- [Documentazione](https://github.com/trailofbits/manticore/wiki)
-### Servizi di controllo degli smart contract {#smart-contract-auditing-services}
+### Servizi di controllo dei contratti intelligenti {#smart-contract-auditing-services}
-**ConsenSys Diligence** - _Servizio di controllo degli smart contract che aiuta i progetti sull'ecosistema della blockchain ad assicurare che i loro protocolli siano pronti al lancio e creati per proteggere gli utenti._
+**ConsenSys Diligence** - _Servizio di controllo dei contratti intelligenti che aiuta i progetti sull'ecosistema della blockchain ad assicurare che i loro protocolli siano pronti al lancio e creati per proteggere gli utenti._
- [Sito web](https://consensys.net/diligence/)
-**CertiK** - _Studio di sicurezza della blockchain, pioniere nell'uso di tecnologie di verifica formali e all'avanguardia sugli smart contract e le reti della blockchain._
+**CertiK** - _Studio di sicurezza della Blockchain, pioniere nell'uso di tecnologie di Verifica formali e all'avanguardia sui contratti intelligenti e le reti della blockchain._
- [Sito web](https://www.certik.com/)
@@ -223,13 +223,13 @@ La verifica formale è considerata importante per gli smart contract perché aiu
- [Sito web](https://quantstamp.com/)
-**OpenZeppelin** - _Azienda di sicurezza degli smart contract che fornisce controlli di sicurezza per i sistemi distribuiti._
+**OpenZeppelin** - _Azienda di sicurezza dei contratti intelligenti che fornisce controlli di sicurezza per i sistemi distribuiti._
- [Sito web](https://www.openzeppelin.com/security-audits)
### Piattaforme di caccia ai bug {#bug-bounty-platforms}
-**Immunefi** - _Piattaforma di caccia ai bug per gli smart contract e i progetti di DeFi, in cui i ricercatori revisionano il codice, divulgano le vulnerabilità, vengono pagati e rendono le cripto più sicure._
+**Immunefi** - _Piattaforma di caccia ai bug per i contratti intelligenti e i progetti di DeFi, in cui i ricercatori revisionano il codice, divulgano le vulnerabilità, vengono pagati e rendono le cripto più sicure._
- [Sito web](https://immunefi.com/)
@@ -240,17 +240,17 @@ La verifica formale è considerata importante per gli smart contract perché aiu
## Tutorial correlati {#related-tutorials}
- [Configurare l'integrazione continua in Solidity e Truffle](/developers/tutorials/solidity-and-truffle-continuous-integration-setup/) _– Come configurare Travis o Circle CI per il test Truffle con plug-in utili._
-- [Panoramica dei prodotti per il test](/developers/tutorials/guide-to-smart-contract-security-tools/) _– Panoramica e confronto tra diversi prodotti per il test._
-- [Come usare Echidna per testare gli smart contract](/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/)
-- [Come utilizzare Manticore per individuare i bug negli smart contract](/developers/tutorials/how-to-use-manticor-to-find-smart-contract-bugs/)
-- [Come utilizzare Slither per individuare i bug negli smart contract](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/)
+- [Panoramica dei prodotti di testing](/developers/tutorials/guide-to-smart-contract-security-tools/) _– Panoramica e confronto di diversi prodotti di testing_
+- [Come usare Echidna per testare i contratti intelligenti](/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/)
+- [Come usare Manticore per trovare i bug dei contratti intelligenti](/developers/tutorials/how-to-use-manticor-to-find-smart-contract-bugs/)
+- [Come usare Slither per trovare i bug dei contratti intelligenti](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/)
- [Come simulare i contratti in Solidity per testarli](/developers/tutorials/how-to-mock-solidity-contracts-for-testing/)
- [Come migrare dai test di Truffle all'ambiente di test di OpenZeppelin](https://docs.openzeppelin.com/test-environment/0.1/migrating-from-truffle)
- [Come testare i contratti dopo che sono stati distribuiti su una rete](https://fulldecent.blogspot.com/2019/04/testing-deployed-ethereum-contracts.html)
- [Impara sulla Blockchain, Solidity e lo sviluppo Full Stack in Web3 con JavaScript (YouTube)](https://www.youtube.com/watch?v=gyMwXuJrbJQ)
-- [Corso su Solidity, la Blockchain e gli smart contract (YouTube)](https://www.youtube.com/watch?v=M576WGiDBdQ)
+- [Corso su Solidity, la Blockchain e i Contratti Intelligenti (YouTube)](https://www.youtube.com/watch?v=M576WGiDBdQ)
## Letture consigliate {#further-reading}
-- [Una guida approfondita per testare gli smart contract di Ethereum](https://iamdefinitelyahuman.medium.com/an-in-depth-guide-to-testing-ethereum-smart-contracts-2e41b2770297) - _Ben Hauser_
-- [Come testare gli smart contract di Ethereum](https://betterprogramming.pub/how-to-test-ethereum-smart-contracts-35abc8fa199d) - _Alex Roan_
+- [Una Guida Approfondita a Testare i Contratti Intelligenti di Ethereum](https://iamdefinitelyahuman.medium.com/an-in-depth-guide-to-testing-ethereum-smart-contracts-2e41b2770297) - _Ben Hauser_
+- [Come Testare i Contratti Intelligenti di Ethereum](https://betterprogramming.pub/how-to-test-ethereum-smart-contracts-35abc8fa199d) - _Alex Roan_
diff --git a/src/content/translations/it/developers/docs/standards/index.md b/src/content/translations/it/developers/docs/standards/index.md
index 60b450798af..8ce06ac0760 100644
--- a/src/content/translations/it/developers/docs/standards/index.md
+++ b/src/content/translations/it/developers/docs/standards/index.md
@@ -7,7 +7,7 @@ incomplete: true
## Panoramica degli standard {#standards-overview}
-La community Ethereum ha adottato numerosi standard che aiutano a mantenere i progetti (come [ i client Ethereum](/developers/docs/nodes-and-clients/) e i portafogli) interoperabili tra le diverse implementazioni e garantiscono che Smart Contract e dapp rimangano componibili.
+La community di Ethereum ha adottato molti standard che aiutano a mantenere interoperabili i progetti (come i [client di Ethereum](/developers/docs/nodes-and-clients/) e i portafogli) tra le implementazioni e ad assicurarsi che i contratti intelligenti e le dapp restino componibili.
Normalmente, gli standard vengono introdotti come [proposte di miglioramento di Ethereum](/eips/) (EIP) che vengono discusse dai membri della community attraverso un [processo standard](https://eips.ethereum.org/EIPS/eip-1).
@@ -22,19 +22,33 @@ Normalmente, gli standard vengono introdotti come [proposte di miglioramento di
## Tipi di standard {#types-of-standards}
-Alcune EIP riguardano standard a livello di applicazione (ad esempio un formato standard di Smart Contract), che vengono introdotti come [richieste di commento Ethereum (ERC)](https://eips.ethereum.org/erc). Molte ERC sono standard critici ampiamente utilizzati nell'ecosistema Ethereum.
+Esistono 3 tipi di EIP:
-- [Elenco delle ERC](https://eips.ethereum.org/erc)
+- Traccia Standard: descrive qualsiasi modifica che influenzi gran parte o tutte le implementazioni di Ethereum
+- [Meta-Traccia](https://eips.ethereum.org/meta): descrive un processo circostante Ethereum o propone una modifica a un processo
+- [Traccia Informativa](https://eips.ethereum.org/informational): descrive un problema di design di Ethereum o fornisce linee guida o informazioni generali alla community di Ethereum
-### Standard token {#token-standards}
+Inoltre, la Traccia Standard è suddivisa in 4 categorie:
+
+- [Principale](https://eips.ethereum.org/core): miglioramenti che richiedono una diramazione del consenso
+- [Rete](https://eips.ethereum.org/networking): miglioramenti relativi a devp2p e al protocollo secondario Ethereum leggero, nonché miglioramenti proposti alle specifiche del protocollo di rete di Whisper e Swarm.
+- [Interfaccia](https://eips.ethereum.org/interface): miglioramenti relativi alle specifiche e agli standard API/RPC del client e certi standard di livello linguistico come i nomi dei metodi e le ABI del contratto.
+- [ERC](https://eips.ethereum.org/erc): standard e convenzioni a livello delle applicazioni
+
+Informazioni più dettagliate su questi diversi tipi e categorie sono disponibili in [EIP-1](https://eips.ethereum.org/EIPS/eip-1#eip-types)
+
+### Standard per i token {#token-standards}
- [ERC-20](/developers/docs/standards/tokens/erc-20/) - Un'interfaccia standard per token fungibili (intercambiabili), come i token di voto, i token di staking o le valute virtuali.
- [ERC-721](/developers/docs/standards/tokens/erc-721/) - Un'interfaccia standard per token non fungibili, come un atto relativo a opere d'arte o canzoni.
-- [ERC-777](/developers/docs/standards/tokens/erc-777/) - Uno standard di token migliore rispetto a ERC-20.
-- [ERC-1155](/developers/docs/standards/tokens/erc-1155/) - Uno standard del token che può contenere risorse sia fungibili che non fungibili.
+- [ERC-777](/developers/docs/standards/tokens/erc-777/) - Uno standard per i token migliore rispetto a ERC-20.
+- [ERC-1155](/developers/docs/standards/tokens/erc-1155/) - Uno standard per i token che può contenere risorse sia fungibili che non fungibili.
+- [ERC-4626](/developers/docs/standards/tokens/erc-4626/) - Uno standard di cassaforte tokenizzata progettato per ottimizzare e unificare i parametri tecnici delle cassaforti di resa.
-Maggiori informazioni sugli [standard token](/developers/docs/standards/tokens/).
+Maggiori informazioni sugli [standard peri token](/developers/docs/standards/tokens/).
## Letture consigliate {#further-reading}
+- [Proposte di miglioramento di Ethereum (EIP)](/eips/)
+
_Conosci una risorsa della community che ti è stata utile? Modifica questa pagina e aggiungila!_
diff --git a/src/content/translations/it/developers/docs/standards/tokens/erc-1155/index.md b/src/content/translations/it/developers/docs/standards/tokens/erc-1155/index.md
index 93a2a2b9210..62a8e42738b 100644
--- a/src/content/translations/it/developers/docs/standards/tokens/erc-1155/index.md
+++ b/src/content/translations/it/developers/docs/standards/tokens/erc-1155/index.md
@@ -10,7 +10,7 @@ Un'interfaccia standard per i contratti che gestiscono più tipi di token. Un si
**Cosa si intende per Standard Multi-Token?**
-L'idea è semplice e cerca di creare un'interfaccia per gli smart contract in grado di rappresentare e controllare qualsiasi numero di tipi di token fungibili e non fungibili. In questo modo, il token ERC-1155 può svolgere le stesse funzioni di un token [ERC-20](/developers/docs/standards/tokens/erc-20/) e [ERC-721](/developers/docs/standards/tokens/erc-721/), e anche entrambi contemporaneamente. E soprattutto, migliorare la funzionalità di entrambi gli standard, rendendola più efficiente, e correggendo evidenti errori di implementazione sugli standard ERC-20 e ERC-721.
+L'idea è semplice e cerca di creare un'interfaccia per i contratti intelligenti, che possa rappresentare e controllare qualsiasi numero di tipi di token fungibili e non fungibili. In questo modo, il token ERC-1155 può svolgere le stesse funzioni di un token [ERC-20](/developers/docs/standards/tokens/erc-20/) e [ERC-721](/developers/docs/standards/tokens/erc-721/), e anche entrambi contemporaneamente. E soprattutto, migliorare la funzionalità di entrambi gli standard, rendendola più efficiente, e correggendo evidenti errori di implementazione sugli standard ERC-20 e ERC-721.
Il token ERC-1155 è descritto nella sua interezza in [EIP-1155](https://eips.ethereum.org/EIPS/eip-1155).
@@ -113,7 +113,7 @@ function onERC1155BatchReceived(
) external returns(bytes4);
```
-Dato il supporto a [EIP-165](https://eips.ethereum.org/EIPS/eip-165), i supporti di ERC-1155 ricevono hook solo per gli smart contract. La funzione di hook deve restituire un valore bytes4 magico predefinito dato come:
+Dato il supporto all'[EIP-165](https://eips.ethereum.org/EIPS/eip-165), i supporti di ERC-1155 ricevono hook solo per i contratti intelligenti. La funzione di hook deve restituire un valore bytes4 magico predefinito dato come:
```solidity
bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))
@@ -136,11 +136,11 @@ Abbiamo già accennato ad alcune regole di trasferimento sicure già nelle spieg
3. uno qualsiasi dei saldi dei titolari per i token in `_ids` è inferiore ai rispettivi importi in `_values` inviati al destinatario.
4. si verifica qualsiasi altro errore.
-_Nota_: tutte le funzioni batch compreso l'hook esistono anche come versioni senza batch. Questo è fatto per ragioni di efficienza nell’uso del carburante, considerando che il trasferimento di un solo bene sarà probabilmente ancora la modalità più comunemente utilizzato. Li abbiamo esclusi per semplicità nelle spiegazioni, lo stesso vale per le regole di trasferimento sicure. I nomi sono identici, basta rimuovere 'Batch'.
+_Nota_: tutte le funzioni batch compreso l'hook esistono anche come versioni senza batch. Ciò avviene per l'efficienza del gas, considerando che trasferire una singola risorsa sarebbe comunque il metodo più usato. Li abbiamo esclusi per semplicità nelle spiegazioni, lo stesso vale per le regole di trasferimento sicure. I nomi sono identici, basta rimuovere 'Batch'.
## Letture consigliate {#further-reading}
- [EIP-1155 Standard Multi-Token](https://eips.ethereum.org/EIPS/eip-1155)
- [ERC-1155: Openzeppelin Docs](https://docs.openzeppelin.com/contracts/3.x/erc1155)
-- [ERC-1155: GitHub Repo](https://github.com/enjin/erc-1155)
+- [ERC-1155: Repository di GitHub](https://github.com/enjin/erc-1155)
- [API di Alchemy NFT](https://docs.alchemy.com/alchemy/enhanced-apis/nft-api)
diff --git a/src/content/translations/it/developers/docs/standards/tokens/erc-20/index.md b/src/content/translations/it/developers/docs/standards/tokens/erc-20/index.md
index a5b4fb63703..00f127fb0b3 100644
--- a/src/content/translations/it/developers/docs/standards/tokens/erc-20/index.md
+++ b/src/content/translations/it/developers/docs/standards/tokens/erc-20/index.md
@@ -18,30 +18,30 @@ I token possono rappresentare praticamente tutto in Ethereum:
- un'oncia d'oro
- e molto altro...
-Una caratteristica così potente di Ethereum deve essere gestita da uno standard robusto. Questo è esattamente il ruolo di ERC-20! Questi standard permette agli sviluppatori di creare applicazioni token interoperabili con altri prodotti e servizi.
+Una caratteristica così potente di Ethereum deve essere gestita da uno standard robusto. Questo è esattamente il ruolo di ERC-20! Questo standard permette agli sviluppatori di creare applicazioni token interoperabili con altri prodotti e servizi.
**Cos'è ERC-20?**
-ERC-20 introduce uno standard per i token fungibili. In altre parole questi token hanno una proprietà che rende ogni token esattamente uguale (per tipo e valore) a un altro token. Per esempio, un token ERC-20 funziona esattamente come ETH, ossia 1 token è e sarà sempre uguale a tutti gli altri token.
+ERC-20 introduce uno standard per i token fungibili. In altre parole, questi token hanno una proprietà che rende ogni token esattamente uguale (per tipo e valore) a un altro token. Per esempio, un token ERC-20 funziona esattamente come ETH, ossia 1 token è e sarà sempre uguale a tutti gli altri token.
## Prerequisiti {#prerequisites}
-- [Account](/developers/docs/accounts)
-- [Smart Contract](/developers/docs/smart-contracts/)
+- [Conti](/developers/docs/accounts)
+- [Contratti Intelligenti](/developers/docs/smart-contracts/)
- [Standard per i token](/developers/docs/standards/tokens/)
## Corpo {#body}
-ERC-20 (Ethereum Request for Comments 20), proposto da Fabian Vogelsteller nel novembre 2015, è uno standard token che implementa un'API per token all'interno di Smart Contract.
+L'ERC-20 (Ethereum Request for Comments 20), proposto da Fabian Vogelsteller nel novembre del 2015, è uno Standard del Token che implementa un'API per i token nei Contratti Intelligenti.
Esempio di funzionalità fornite da ERC-20:
-- trasferire token da un account a un altro
-- richiedere il saldo corrente di token di un account
+- trasferire token da un conto all'altro
+- ottenere il saldo corrente di token di un conto
- richiedere la quantità totale di token disponibile sulla rete
-- approvare che una quantità di token di un account possa essere spesa da un account di terze parti
+- approvare se un importo di token da un conto è spendibile da un conto di terze parti
-Se uno Smart Contract implementa i seguenti metodi ed eventi può essere chiamato contratto token ERC-20 e, una volta distribuito, sarà responsabile di tenere traccia dei token creati su Ethereum.
+Se un Contratto Intelligente implementa i seguenti metodi ed eventi, può esser definito un Contratto a Token ERC-20 e, una volta distribuito, sarà responsabile di tenere traccia dei token creati su Ethereum.
Da [EIP-20](https://eips.ethereum.org/EIPS/eip-20):
diff --git a/src/content/translations/it/developers/docs/standards/tokens/erc-4626/index.md b/src/content/translations/it/developers/docs/standards/tokens/erc-4626/index.md
new file mode 100644
index 00000000000..6bdc5675994
--- /dev/null
+++ b/src/content/translations/it/developers/docs/standards/tokens/erc-4626/index.md
@@ -0,0 +1,207 @@
+---
+title: Standard della cassaforte tokenizzata ERC-4626
+description: Uno standard per le cassaforti di resa.
+lang: it
+---
+
+## Introduzione {#introduction}
+
+ERC-4626 è uno standard per ottimizzare e unificare i parametri tecnici delle cassaforti di resa. Fornisce un'API standard per le cassaforti di resa tokenizzate che rappresenta le quote di un singolo token ERC-20 sottostante. ERC-4626 delinea anche un'estensione facoltativa per le cassaforti tokenizzate usando ERC-20, offrendo le funzionalità di base per depositare e prelevare token e leggere i saldi.
+
+**Il ruolo dell'ERC-4626 nelle cassaforti di resa**
+
+I mercati di prestito, gli aggregatori e i token intrinsecamente fruttiferi di interessi aiutano gli utenti a trovare la miglior resa sui propri cripto-token eseguendo strategie differenti. Queste strategie sono create con lievi variazioni, che potrebbero essere incline a errore o potrebbero sprecare risorse di sviluppo.
+
+L'ERC-4626 nelle cassaforti di resa ridurrà lo sforzo di integrazione e sbloccherà l'accesso alla resa in varie applicazioni con piccoli sforzi specializzati dagli sviluppatori, creando schemi d'implementazione coerenti e robusti.
+
+Il token ERC-4626 è descritto nella sua interezza in [EIP-4626](https://eips.ethereum.org/EIPS/eip-4626).
+
+## Prerequisiti {#prerequisites}
+
+Per comprendere meglio questa pagina, consigliamo innanzitutto di leggere [standard per i token](/developers/docs/standards/tokens/) e [ERC-20](/developers/docs/standards/tokens/erc-20/).
+
+## ERC-4626 Funzioni e caratteristiche: {#body}
+
+### Metodi {#methods}
+
+#### asset {#asset}
+
+```solidity
+function asset() public view returns (address)
+```
+
+Questa funzione restituisce l'indirizzo del token sottostante, utilizzato per la cassaforte per la contabilità, i depositi e i prelievi.
+
+#### totalAssets {#totalassets}
+
+```solidity
+function totalAssets() public view returns (uint256)
+```
+
+Questa funzione restituisce l'importo totale di risorse sottostanti detenute dalla cassaforte.
+
+#### convertToShares {#convertoshares}
+
+```solidity
+function convertToShares(uint256 assets) public view returns (uint256 shares)
+```
+
+Questa funzione restituisce la quantità di `shares` che sarebbe scambiata dalla cassaforte per la quantità fornita di `assets`.
+
+#### convertToAssets {#convertoassets}
+
+```solidity
+function convertToAssets(uint256 shares) public view returns (uint256 assets)
+```
+
+Questa funzione restituisce la quantità di `assets` che sarebbe scambiata dalla cassaforte per la quantità di `shares` fornita.
+
+#### maxDeposit {#maxdeposit}
+
+```solidity
+function maxDeposit(address receiver) public view returns (uint256)
+```
+
+Questa funzione restituisce la quantità massima di risorse sottostanti depositabili in una singola chiamata a [`deposit`](#deposit) dal `receiver`.
+
+#### previewDeposit {#previewdeposit}
+
+```solidity
+function previewDeposit(uint256 assets) public view returns (uint256)
+```
+
+Questa funzione consente agli utenti di simulare gli effetti del loro deposito al blocco corrente.
+
+#### deposit {#deposit}
+
+```solidity
+function deposit(uint256 assets, address receiver) public returns (uint256 shares)
+```
+
+Questa funzione deposita `assets` di token sottostanti nella cassaforte e concede la proprietà delle `shares` al `receiver`.
+
+#### maxMint {#maxmint}
+
+```solidity
+function maxMint(address receiver) public view returns (uint256)
+```
+
+Questa funzione restituisce la quantità massima di quote coniabili in una sola chiamata a [`mint`](#mint) dal `receiver`.
+
+#### previewMint {#previewmint}
+
+```solidity
+function previewMint(uint256 shares) public view returns (uint256)
+```
+
+Questa funzione consente agli utenti di simulare gli effetti del loro conio al blocco corrente.
+
+#### mint {#mint}
+
+```solidity
+function mint(uint256 shares, address receiver) public returns (uint256 assets)
+```
+
+Questa funzione conia esattamente quote della cassaforte `shares` al `receiver`, depositando `assets` di token sottostanti.
+
+#### maxWithdraw {#maxwithdraw}
+
+```solidity
+function maxWithdraw(address owner) public view returns (uint256)
+```
+
+Questa funzione restituisce la quantità massima di risorse sottostanti prelevabili dal saldo dell'`owner` con una singola chiamata a [`withdraw`](#withdraw).
+
+#### previewWithdraw {#previewwithdraw}
+
+```solidity
+function previewWithdraw(uint256 assets) public view returns (uint256)
+```
+
+Questa funzione consente agli utenti di simulare gli effetti del loro prelievo al blocco corrente.
+
+#### withdraw {#withdraw}
+
+```solidity
+function withdraw(uint256 assets, address receiver, address owner) public returns (uint256 shares)
+```
+
+Questa funzione brucia `shares` da `owner` e invia esattamente token `assets` dalla cassaforte al `receiver`.
+
+#### maxRedeem {#maxredeem}
+
+```solidity
+function maxRedeem(address owner) public view returns (uint256)
+```
+
+Questa funzione restituisce la quantità massima di quote che possono essere riscattate dal saldo dell'`owner` tramite una chiamata a [`redeem`](#redeem).
+
+#### previewRedeem {#previewredeem}
+
+```solidity
+function previewRedeem(uint256 shares) public view returns (uint256)
+```
+
+Questa funzione consente agli utenti di simulare gli effetti del loro riscatto al blocco corrente.
+
+#### redeem {#redeem}
+
+```solidity
+function redeem(uint256 shares, address receiver, address owner) public returns (uint256 assets)
+```
+
+Questa funzione riscatta un numero specifico di `shares` dall'`owner` e invia `assets` del token sottostante dalla cassaforte al `receiver`.
+
+#### totalSupply {#totalsupply}
+
+```solidity
+function totalSupply() public view returns (uint256)
+```
+
+Restituisce il numero totale di quote della cassaforte non riscattate in circolazione.
+
+#### balanceOf {#balanceof}
+
+```solidity
+function balanceOf(address owner) public view returns (uint256)
+```
+
+Restituisce la quantità totale di quote della cassaforte che l'`owner` possiede attualmente.
+
+### Eventi {#events}
+
+#### Evento di Deposito
+
+**DEVE** essere emesso quando i token sono depositati nella cassaforte tramite i metodi [`mint`](#mint) e [`deposit`](#deposit)
+
+```solidity
+event Deposit(
+ address indexed sender,
+ address indexed owner,
+ uint256 assets,
+ uint256 shares
+)
+```
+
+Dove `sender` è l'utente che ha scambiato `assets` per `shares` e ha trasferito tali `shares` all'`owner`.
+
+#### Evento di Prelievo
+
+**DEVE** essere emesso quando le quote sono prelevate dalla cassaforte da un depositante con i metodi [`redeem`](#redeem) o [`withdraw`](#withdraw).
+
+```solidity
+event Withdraw(
+ address indexed sender,
+ address indexed receiver,
+ address indexed owner,
+ uint256 assets,
+ uint256 share
+)
+```
+
+Dove `sender` è l'utente che ha innescato il prelievo e scambiato `shares`, possedute dall'`owner`, per `assets`. `receiver` è l'utente che ha ricevuto le `assets` prelevate.
+
+## Letture consigliate {#further-reading}
+
+- [EIP-4626: Tokenized vault Standard](https://eips.ethereum.org/EIPS/eip-4626)
+- [ERC-4626: GitHub Repo](https://github.com/Rari-Capital/solmate/blob/main/src/mixins/ERC4626.sol)
diff --git a/src/content/translations/it/developers/docs/standards/tokens/erc-721/index.md b/src/content/translations/it/developers/docs/standards/tokens/erc-721/index.md
index 9f2e1562ea8..86b19bb1fdb 100644
--- a/src/content/translations/it/developers/docs/standards/tokens/erc-721/index.md
+++ b/src/content/translations/it/developers/docs/standards/tokens/erc-721/index.md
@@ -12,23 +12,23 @@ Un token non fungibile (NFT) è usato per identificare inequivocabilmente qualco
**Cos'è ERC-721?**
-ERC-721 introduce uno standard per NFT, in altre parole questo tipo di token è unico e può avere un diverso valore rispetto a un altro token dello stesso Smart Contract, magari dovuto all'età, alla rarità o ad altro, come il suo aspetto. Cosa? Aspetto?
+L'ERC-721 introduce uno standard per gli NFT; in altre parole, questo tipo di Token è unico e può avere un valore differente da un altro Token dallo stesso Contratto Intelligente, forse a causa della sua età, rarità o persino ad altro, come il suo aspetto. Cosa? Aspetto?
-Sì! Tutti gli NFT hanno una variabile `uint256` chiamata `tokenId`, quindi per i contratti ERC-721 la coppia `contract address, uint256 tokenId` deve essere unica a livello globale. Detto ciò, una dApp può avere un "convertitore" che usa il `tokenId` come input e produce in output un'immagine come zombie, armi, skill o fantastici gattini!
+Sì! Tutti gli NFT hanno una variabile `uint256` chiamata `tokenId`, quindi per i contratti ERC-721 la coppia `contract address, uint256 tokenId` deve essere unica a livello globale. Detto ciò, una dapp può avere un "convertitore" che utilizza il `tokenId` come input e restituisce l'immagine di qualcosa come zombie, armi, abilità o teneri gattini!
## Prerequisiti {#prerequisites}
-- [Account](/developers/docs/accounts/)
-- [Smart Contract](/developers/docs/smart-contracts/)
+- [Conti](/developers/docs/accounts/)
+- [Contratti Intelligenti](/developers/docs/smart-contracts/)
- [Standard token](/developers/docs/standards/tokens/)
## Corpo {#body}
-ERC-721 (Ethereum Request for Comments 721), proposto da William Entriken, dieter Shirley, Jacob Evans e Nastassia Sachs nel gennaio 2018, è uno standard token non fungibile che implementa un'API per token all'interno di Smart Contract.
+L'ERC-721 (Ethereum Request for Comments 721), proposto da William Entriken, Dieter Shirely, Jacob Evans e Nastassia Sachs a gennaio 2018, è uno Standard del Token Non Fungibile che implementa un'API per i token nei Contratti Intelligenti.
-Fornisce funzionalità ad esempio per il trasferimento di token da un account a un altro, la richiesta del saldo corrente di token di un account, del proprietario di un token specifico e anche la quantità totale di token disponibili sulla rete. Oltre a questo ha anche altre funzionalità, come la possibilità di approvare che una quantità di token di un account possa essere spostata da un account terzo.
+Fornisce funzionalità come il trasferimento dei token da un conto all'altro, l'ottenimento del saldo corrente del token di un conto, l'ottenimento del proprietario di un token specifico, nonché l'offerta totale del token disponibile sulla rete. Oltre a ciò, ha alcune altre funzionalità, come approvare che un importo di token da un conto possa esser spostato da un conto di terze parti.
-Se uno Smart Contract implementa i seguenti metodi ed eventi può essere chiamato contratto token non fungibile ERC-721 e, una volta distribuito, sarà responsabile di tenere traccia dei token creati su Ethereum.
+Se un Contratto Intelligente implementa i seguenti metodi ed eventi, può esser definito un Contratto a Token Non Fungibile ERC-721 e, una volta distribuito, sarà responsabile di tenere traccia dei token creati su Ethereum.
Da [EIP-721](https://eips.ethereum.org/EIPS/eip-721):
@@ -231,9 +231,10 @@ recent_births = [get_event_data(w3.codec, ck_extra_events_abi[1], log)["args"] f
- [CryptoKitties](https://www.cryptokitties.co/) è un gioco basato su creature a cui si può dare da mangiare, collezionabili e molto tenere chiamate CryptoKitties.
- [Sorare](https://sorare.com/) è un gioco di calcio fantasy globale in cui si possono collezionare oggetti in edizione limitata e gestire squadre, gareggiando per vincere premi.
- [The Ethereum Name Service (ENS)](https://ens.domains/) offre un modo sicuro e decentralizzato per indirizzare risorse sia all'interno che all'esterno della blockchain utilizzando nomi semplici e leggibili.
-- [Unstoppable Domains](https://unstoppabledomains.com/) è un'azienda di San Francisco che crea domini sulle blockchain. I domini delle blockchain sostituiscono gli indirizzi della criptovaluta con nomi facilmente leggibili, che possono essere usati per creare siti web resistenti alla censura.
+- [POAP](https://poap.xyz) offre NFT gratuiti alle persone che partecipano a eventi o completano azioni specifiche. I POAP sono creabili e distribuibili gratuitamente.
+- [Unstoppable Domains](https://unstoppabledomains.com/) è un'azienda di San Francisco che crea domini sulle blockchain. I domini delle blockchain sostituiscono gli indirizzi della criptovaluta con nomi leggibili dall'uomo, che possono essere usati per creare siti web resistenti alla censura.
- [Gods Unchained Cards](https://godsunchained.com/) è un gioco di carte collezionabili sulla blockchain Ethereum che usa gli NFT per dare una proprietà reale alle risorse del gioco.
-- [Bored Ape Yacht Club](https://boredapeyachtclub.com) è una raccolta di 10.000 NFT uniche, che, oltre a essere opere d'arte la cui rarità è dimostrata, agiscono da token di appartenenza al club, fornendo ai membri vantaggi e benefici che possono aumentare nel tempo come risultato degli sforzi della community.
+- [Bored Ape Yacht Club](https://boredapeyachtclub.com) è una raccolta di 10.000 NFT unici che, oltre a essere opere d'arte la cui rarità è dimostrata, fungono da token di appartenenza al club, fornendo ai membri vantaggi e benefici che possono aumentare nel tempo come risultato degli sforzi della community.
## Letture consigliate {#further-reading}
diff --git a/src/content/translations/it/developers/docs/standards/tokens/erc-777/index.md b/src/content/translations/it/developers/docs/standards/tokens/erc-777/index.md
index d3e0ffa197e..3514bb027a5 100644
--- a/src/content/translations/it/developers/docs/standards/tokens/erc-777/index.md
+++ b/src/content/translations/it/developers/docs/standards/tokens/erc-777/index.md
@@ -18,14 +18,14 @@ L'ERC-777 fornisce i seguenti miglioramenti rispetto all'ERC-20.
### Hook {#hooks}
-Gli hook sono una funzione descritta nel codice di uno smart contract. Gli hook vengono chiamati quando si inviano o ricevono token tramite il contratto. Questo consente a uno smart contract di reagire ai token in ingresso o in uscita.
+Gli hook sono una funzione descritta nel codice di un contratto intelligente. Gli hook vengono chiamati quando si inviano o ricevono token tramite il contratto. Questo consente a un contratto intelligente di reagire ai token in entrata o in uscita.
Gli hook sono registrati e scoperti usando lo standard [ERC-1820](https://eips.ethereum.org/EIPS/eip-1820).
#### Perché gli hook sono un'ottima cosa? {#why-are-hooks-great}
1. Gli hook consentono di inviare token a un contratto e notificarlo in una sola transazione, a differenza di [ERC-20](https://eips.ethereum.org/EIPS/eip-20), che richiede una doppia chiamata (`approve`/`transferFrom`) per fare la stessa cosa.
-2. I contratti privi di hook registrati non sono compatibili con l'ERC-777. Il contratto inviante interromperà la transazione se il contratto ricevente non registra un hook. In questo modo si impediscono trasferimenti accidentali a smart contract non ERC-777.
+2. I contratti privi di hook registrati non sono compatibili con l'ERC-777. Il contratto inviante interromperà la transazione se il contratto ricevente non registra un hook. Ciò previene i trasferimenti accidentali a contratti intelligenti non ERC-777.
3. Gli hook possono rifiutare le transazioni.
### Decimali {#decimals}
diff --git a/src/content/translations/it/developers/docs/standards/tokens/index.md b/src/content/translations/it/developers/docs/standards/tokens/index.md
index 4542f6c8ab5..ccb372c4cf8 100644
--- a/src/content/translations/it/developers/docs/standards/tokens/index.md
+++ b/src/content/translations/it/developers/docs/standards/tokens/index.md
@@ -7,12 +7,12 @@ incomplete: true
## Introduzione {#introduction}
-Uno dei molti standard di sviluppo di Ethereum si concentra sulle interfacce dei token. Questi standard aiutano a garantire che gli Smart Contract rimangano componibili, in modo che, ad esempio, quando un nuovo progetto emette un token, esso rimanga compatibile con gli scambi decentralizzati già esistenti.
+Molti standard di sviluppo di Ethereum si incentrano sulle interfacce dei token. Questi standard aiutano ad assicurarsi che i contratti intelligenti restino componibili, così che, ad esempio, quando un nuovo progetto emette un token, esso rimanga compatibile con le borse decentralizzate esistenti.
## Prerequisiti {#prerequisites}
- [Standard di sviluppo Ethereum](/developers/docs/standards/)
-- [Smart Contract](/developers/docs/smart-contracts/)
+- [Contratti intelligenti](/developers/docs/smart-contracts/)
## Standard token {#token-standards}
@@ -22,6 +22,7 @@ Ecco alcuni degli standard token più popolari su Ethereum:
- [ERC-721](/developers/docs/standards/tokens/erc-721/) - Un'interfaccia standard per token non fungibili, come un atto relativo a opere d'arte o canzoni.
- [ERC-777](/developers/docs/standards/tokens/erc-777/) - ERC-777 consente alle persone di creare funzionalità extra sui token come un contratto di mescolamento per una migliore privacy della transazione o una funzione di recupero d'emergenza per salvarti se perdi le tue chiavi private.
- [ERC-1155](/developers/docs/standards/tokens/erc-1155/) - ERC-1155 consente scambi e aggregazioni di transazioni più efficienti, risparmiando sui costi. Questo standard del token consente di creare token d'utilità (come $BNB o $BAT) e token non fungibili come CryptoPunks.
+- [ERC-4626](/developers/docs/standards/tokens/erc-4626/) - Uno standard di cassaforte tokenizzata progettato per ottimizzare e unificare i parametri tecnici delle cassaforti di resa.
## Letture consigliate {#further-reading}
@@ -30,6 +31,6 @@ _Conosci una risorsa della community che ti è stata utile? Modifica questa pagi
## Tutorial correlati {#related-tutorials}
- [Token integration checklist](/developers/tutorials/token-integration-checklist/) _- Una checklist di aspetti da considerare quando interagiamo con i token._
-- [Understand the ERC20 token smart contract](/developers/tutorials/understand-the-erc-20-token-smart-contract/) _- Introduzione alla distribuzione del primo Smart Contract su una rete di test Ethereum._
-- [Transfers and approval of ERC20 tokens from a Solidity smart contract](/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/) _– Come usare uno smart contract per interagire con un token usando il linguaggio Solidity._
+- [Comprendere il contratto intelligente del token ERC20](/developers/tutorials/understand-the-erc-20-token-smart-contract/): _Un'introduzione alla distribuzione del tuo primo contratto intelligente su una rete di prova di Ethereum._
+- [Trasferimenti e approvazione dei token ERC20 da un contratto intelligente in Solidity](/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/): _Come usare un contratto intelligente per interagire con un token, usando il linguaggio Solidity._
- [Implementing an ERC721 market [a how-to guide]](/developers/tutorials/how-to-implement-an-erc721-market/) _- Come mettere in vendita oggetti tokenizzati su una bacheca annunci decentralizzata._
diff --git a/src/content/translations/it/developers/docs/storage/index.md b/src/content/translations/it/developers/docs/storage/index.md
index 4e200a8c613..33ae39501e0 100644
--- a/src/content/translations/it/developers/docs/storage/index.md
+++ b/src/content/translations/it/developers/docs/storage/index.md
@@ -6,7 +6,7 @@ lang: it
A differenza di un server centralizzato gestito da una singola società o organizzazione, il sistema di storage decentralizzato consiste in una rete peer-to-peer di operatori-user che trattengono una porzione di tutti i dati esistenti, creando un sistema resiliente di salvataggio e condivisione di file. Tale sistema può trovarsi in un'applicazione basata sulla blockchain o in qualunque rete peer-to-peer.
-Ethereum stesso può essere usato come sistema di storage decentralizzato, ed è ciò che avviene per il salvataggio di codice in tutti gli smart contract. Ad ogni modo, Ethereum non è stato progettato per gestire grandi quantitativi di dati. La catena Ethereum cresce costantemente e, al momento della redazione di questa pagina, si aggira intorno a 500GB - 1TB ([a seconda del client](https://etherscan.io/chartsync/chaindefault)), ed ogni nodo sulla rete deve essere in grado di memorizzare tutti i dati. Se la catena dovesse espandersi raggiungendo un grosso volume di dati (ad esempio 5TB), non sarebbe possibile continuare l'esecuzione di tutti i nodi. Inoltre, il costo di distribuzione di così tanti dati alla rete principale diventerebbe proibitivo in termini di costo a causa delle commissioni del [gas](/developers/docs/gas).
+Lo stesso Ethereum è utilizzabile come un sistema decentralizzato d'archiviazione e ciò avviene per l'archiviazione del codice in tutti i contratti intelligenti. Ad ogni modo, Ethereum non è stato progettato per gestire grandi quantitativi di dati. La catena Ethereum cresce costantemente e, al momento della redazione di questa pagina, si aggira intorno a 500GB - 1TB ([a seconda del client](https://etherscan.io/chartsync/chaindefault)), ed ogni nodo sulla rete deve essere in grado di memorizzare tutti i dati. Se la catena dovesse espandersi raggiungendo un grosso volume di dati (ad esempio 5TB), non sarebbe possibile continuare l'esecuzione di tutti i nodi. Inoltre, il costo di distribuzione di così tanti dati alla Rete Principale, sarebbe proibitivo a causa delle commissioni del [gas](/developers/docs/gas).
A causa di tali vincoli, necessitiamo di una catena o metodologia diversa per archiviare grandi quantità di dati in modo decentralizzato.
@@ -21,7 +21,7 @@ Guardando alle opzioni di archiviazione decentralizzata (dStorage), esistono alc
### Basata sulla blockchain {#blockchain-based}
-Affinché un dato persista nel tempo, occorre usare un meccanismo di persistenza. Ad esempio, in Ethereum il meccanismo di persistenza prevede di tenere conto dell'intera catena quando si esegue un nodo. Nuovi pezzi di dati vengono aggiunti alla fine della chain, e questa continua a crescere - richiedendo ad ogni nodo di replicare tutti i dati incorporati.
+Affinché un dato persista nel tempo, occorre usare un meccanismo di persistenza. Ad esempio, su Ethereum, il meccanismo di persistenza prevede di tener conto dell'intera catena, operando un nodo. Nuovi pezzi di dati vengono aggiunti alla fine della chain, e questa continua a crescere - richiedendo ad ogni nodo di replicare tutti i dati incorporati.
Questo meccanismo prende il nome di persistenza **basata sulla blockchain**.
@@ -46,6 +46,7 @@ Le piattaforme con persistenza basata su contratto sono:
- [Skynet](https://siasky.net/)
- [Storj](https://storj.io/)
- [0Chain](https://0chain.net/)
+- [Rete Crust](https://crust.network)
### Considerazioni aggiuntive {#additional-consideration}
@@ -55,6 +56,7 @@ IPFS è un sistema distribuito per memorizzare e accedere a file, siti web, appl
- [Pinata](https://www.pinata.cloud/) _(servizio di pinning IPFS)_
- [Pinata](https://www.pinata.cloud/) _(servizio di pinning IPFS)_
- [Pinata](https://www.pinata.cloud/) _(servizio di pinning IPFS)_
+- [IPFS Scan](https://ipfs-scan.io) _(esploratore di pinning di IPFS)_
## Ritenzione dei dati {#data-retention}
@@ -70,6 +72,7 @@ Tipi di dStorage con meccanismo di messa alla prova:
- Skynet
- Arweave
- Filecoin
+- Rete Crust
### Decentralità {#decentrality}
@@ -83,6 +86,7 @@ Strumenti decentralizzati senza KYC:
- Filecoin
- IPFS
- Ethereum
+- Rete Crust
### Consenso {#consensus}
@@ -98,6 +102,7 @@ Basata sul proof-of-stake:
- Ethereum
- Filecoin
- 0Chain
+- Rete Crust
## Strumenti correlati {#related-tools}
@@ -136,13 +141,19 @@ Basata sul proof-of-stake:
- [Documentazione](https://docs.0chain.net/0chain/)
- [GitHub](https://github.com/0chain/)
-**Swarm - _Una piattaforma d'archiviazione distribuita e servizio di distribuzione di contenuti per lo stack web3 di Ethereum._**
+**Rete Crust: _Crust è una piattaforma di dStorage basata su IPFS._**
+
+- [Crust.network](https://crust.network)
+- [Documentazione](https://wiki.crust.network)
+- [Github](https://github.com/crustio)
+
+**Swarm - _Una piattaforma di archiviazione distribuita e un servizio di distribuzione di contenuti per lo stack web3 di Ethereum._**
- [EthSwarm.org](https://www.ethswarm.org/)
- [Documentazione](https://docs.ethswarm.org/docs/)
- [GitHub](https://github.com/ethersphere/)
-**OrbitDB - _Un database peer to peer decentralizzato basato su IPFS._**
+**OrbitDB - _Un database peer-to-peer decentralizzato basato su IPFS._**
- [OrbitDB.org](https://orbitdb.org/)
- [Documentazione](https://github.com/orbitdb/field-manual/)
@@ -160,7 +171,7 @@ Basata sul proof-of-stake:
- [Documentazione](https://developers.ceramic.network/learn/welcome/)
- [GitHub](https://github.com/ceramicnetwork/js-ceramic/)
-**Filebase - _La prima piattaforma di archiviazione di oggetti compatibile con S3 che ti consente di archiviare i dati su più reti d'archiviazione decentralizzata, tra cui IPFS, Sia, Skynet e Storj._**
+**Filebase - _La prima piattaforma di archiviazione di oggetti compatibile con S3 che consente di archiviare i dati su più reti d'archiviazione decentralizzata, tra cui IPFS, Sia, Skynet e Storj._**
- [Filebase.com](https://filebase.com/)
- [Documentazione](https://docs.filebase.com/)
@@ -169,9 +180,9 @@ Basata sul proof-of-stake:
## Letture consigliate {#further-reading}
- [Cos'è l'archiviazione decentralizzata?](https://coinmarketcap.com/alexandria/article/what-is-decentralized-storage-a-deep-dive-by-filecoin) - _CoinMarketCap_
-- [Sfatando cinque falsi miti sull'archiviazione decentralizzata](https://www.storj.io/blog/busting-five-common-myths-about-decentralized-storage) - _Storj_
+- [Sfatiamo cinque falsi miti sull'archiviazione decentralizzata](https://www.storj.io/blog/busting-five-common-myths-about-decentralized-storage) - _Storj_
-_Conosci una risorsa pubblica che ti è stata utile? Modifica questa pagina e aggiungila!_
+_Conosci una risorsa della community che ti è stata utile? Modifica questa pagina e aggiungila!_
## Argomenti correlati {#related-topics}
diff --git a/src/content/translations/it/developers/docs/transactions/index.md b/src/content/translations/it/developers/docs/transactions/index.md
index 0eb7c699e9c..f57ba6567c7 100644
--- a/src/content/translations/it/developers/docs/transactions/index.md
+++ b/src/content/translations/it/developers/docs/transactions/index.md
@@ -4,15 +4,15 @@ description: "Panoramica sulle transazioni Ethereum: come funzionano, struttura
lang: it
---
-Le transazioni sono istruzioni firmate crittograficamente da account. Un account avvia una transazione per aggiornare lo stato della rete Ethereum. La transazione più semplice è il trasferimento di ETH da un account ad un altro.
+Le transazioni sono istruzioni firmate crittograficamente dai conti. Un conto avvierà una transazione per aggiornare lo stato della rete di Ethereum. La transazione più semplice è il trasferimento di ETH da un conto all'altro.
## Prerequisiti {#prerequisites}
-Per comprendere meglio questa pagina, consigliamo di leggere innanzitutto la sezione [Account](/developers/docs/accounts/) e la nostra [introduzione ad Ethereum](/developers/docs/intro-to-ethereum/).
+Per aiutarti a comprendere meglio questa pagina, ti consigliamo di leggere, innanzitutto, sui [Conti](/developers/docs/accounts/) e la nostra [introduzione a Ethereum](/developers/docs/intro-to-ethereum/).
## Cos'è una transazione? {#whats-a-transaction}
-Per transazione Ethereum si intende un'azione iniziata da un account controllato dall'esterno (externally-owned), in altre parole gestito dall'uomo e non da un contratto. Per esempio, se Bob manda ad Alice 1 ETH, l'importo verrà addebitato sull'account di Bob e accreditato su quello di Alice. Questa azione che modifica lo stato avviene all'interno di una transazione.
+Una transazione di Ethereum si riferisce a un'azione avviata da un conto esterno, in altre parole, da un conto gestito da un umano, non da un contratto. Ad esempio, se Bob invia 1 ETH ad Alice, il conto di Bob sarà addebitato e quello di Alice sarà accreditato. Questa azione che modifica lo stato avviene all'interno di una transazione.
![Diagramma che mostra un cambiamento di stato causato da una transazione](./tx.png) _Diagramma adattato da [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
@@ -22,16 +22,16 @@ Le transazioni richiedono una commissione e devono essere incluse in un blocco v
Una transazione inviata contiene le seguenti informazioni:
-- `recipient` – L'indirizzo ricevente (se si tratta di un account di proprietà esterna, la transazione trasferirà valore. Se si tratta di un contratto, la transazione eseguirà il codice del contratto)
+- `recipient`: L'indirizzo ricevente (se è un conto esterno, la transazione trasferirà del valore. Se è il conto di un contratto, la transazione eseguirà il codice del contratto)
- `signature` – Identificatore del mittente. Viene generata quando la chiave privata del mittente firma la transazione e conferma che il mittente ha autorizzato la transazione
-- `nonce` - Un contatore con incremento sequenziale, che indica il numero della transazione dall'account
+- `nonce` - Un contatore con incremento sequenziale, che indica il numero della transazione dal conto
- `value` – Quantità di ETH da trasferire dal mittente al destinatario (in WEI, un taglio dell'ETH)
- `data` – Campo opzionale per includere dati arbitrari
-- `gasLimit` – Importo massimo di unità di carburante che possono essere consumate dalla transazione. Le unità di carburante rappresentano fasi di calcolo
-- `maxPriorityFeePerGas` - La quantità massima di carburante da includere come mancia al validatore
-- `maxFeePerGas` - La quantità massima di carburante che si è disposti a pagare per la transazione (comprensiva di `baseFeePerGas` e `maxPriorityFeePerGas`)
+- `gasLimit`: l'importo massimo di unità di gas consumabili dalla transazione. Le unità di gas rappresentano le fasi di calcolo
+- `maxPriorityFeePerGas`: la quantità massima di gas da includere come mancia al validatore
+- `maxFeePerGas`: la quantità massima di gas che si è disposti a pagare per la transazione (comprensiva di `baseFeePerGas` e `maxPriorityFeePerGas`)
-Il carburante è un riferimento per il calcolo necessario perché un validatore elabori la transazione. Gli utenti devono pagare una commissione per questo calcolo. Il `gasLimit` e il `maxPriorityFeePerGas` determinano la commissione massima sulla transazione pagata al validatore. [Maggiori informazioni sul carburante](/developers/docs/gas/).
+Il gas è un riferimento al calcolo necessario perché un validatore elabori la transazione. Gli utenti devono pagare una commissione per questo calcolo. Il `gasLimit` e il `maxPriorityFeePerGas` determinano la commissione massima sulla transazione pagata al validatore. [Di più sul Gas](/developers/docs/gas/).
L'oggetto della transazione sarà qualcosa del genere:
@@ -105,7 +105,7 @@ Con l'hash di firma, la transazione può provare crittograficamente che proviene
### Il campo di dati {#the-data-field}
-La grande maggioranza delle transazioni accede a un contratto da un conto controllato dall'esterno (externally-owned). Gran parte dei contratti è scritta in Solidity e interpreta il proprio campo dei dati secondo l'[interfaccia binaria dell'applicazione (Application Binary Interface – ABI)](/glossary/#abi/).
+La grande maggioranza delle transazioni accede a un contratto da un conto esterno. Gran parte dei contratti è scritta in Solidity e interpreta il proprio campo dei dati secondo l'[interfaccia binaria dell'applicazione (Application Binary Interface – ABI)](/glossary/#abi/).
I primi quattro byte specificano quale funzione chiamare, usando l'hash del nome e degli argomenti della funzione. Talvolta si può identificare la funzione dal selettore, usando [questo database](https://www.4byte.directory/signatures/).
@@ -130,13 +130,13 @@ Su Ethereum esistono diversi tipi di transazioni:
- Transazioni regolari: una transazione da un conto a un altro.
- Transazioni di distribuzione del contratto: una transazione senza un indirizzo 'to', in cui il campo dei dati è usato per il codice del contratto.
-- Esecuzione di un contratto: una transazione che interagisce con uno smart contract distribuito. In questo caso, l'indirizzo 'a' è l'indirizzo dello smart contract.
+- Esecuzione di un contratto: una transazione che interagisce con un contratto intelligente distribuito. In questo caso, l'indirizzo 'a' è l'indirizzo del contratto intelligente.
-### Carburante {#on-gas}
+### Sul gas {#on-gas}
-Come accennato, le transazioni hanno un costo in [carburante](/developers/docs/gas/) per essere eseguite. Semplici transazioni di trasferimento richiedono 21000 unità di carburante.
+Come accennato, le transazioni hanno un costo di [gas](/developers/docs/gas/) per essere eseguite. Semplici transazioni di trasferimento richiedono 21.000 unità di Gas.
-Quindi per poter inviare 1 ETH ad Alice con una `baseFeePerGas` di 190 gwei e una `maxPriorityFeePerGas` di 10 gwei, Bob dovrà pagare la seguente commissione:
+Quindi, perché Bob possa inviare 1 ETH ad Alice a una `baseFeePerGas` di 190 gwei e una `maxPriorityFeePerGas` di 10 gwei, Bob dovrà pagare la seguente commissione:
```
(190 + 10) * 21000 = 4,200,000 gwei
@@ -144,19 +144,19 @@ Quindi per poter inviare 1 ETH ad Alice con una `baseFeePerGas` di 190 gwei e un
0.0042 ETH
```
-Sull'account di Bob verranno addebitati **-1,0042 ETH**
+Sul conto di Bob sarà addebitato **-1,0042 ETH** (1 ETH per Alice + 0,0042 ETH di commissioni del gas)
-Sull'account di Alice verranno accreditati **+1,0 ETH**
+Il conto di Alice sarà accreditato di **+1,0 ETH**
La commissione base brucerà **-0,00399 ETH**
Il validatore riceve la mancia di **oltre 0,000210 ETH**
-Il carburante è richiesto anche per ogni interazione con Smart Contract.
+Il gas è anche necessario per qualsiasi interazione del contratto intelligente.
-![Diagramma che mostra come viene rimborsato il carburante inutilizzato](./gas-tx.png) _Diagramma adattato da [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
+![Diagramma che mostra come è rimborsato il gas inutilizzato](./gas-tx.png) _Diagramma adattato da [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
-Il carburante non utilizzato viene rimborsato sull'account dell'utente.
+Il gas non utilizzato, viene rimborsato al conto dell'utente.
## Ciclo di vita delle transazioni {#transaction-lifecycle}
@@ -169,13 +169,13 @@ Una volta inviata una transazione, succede quanto segue:
## Dimostrazione visiva {#a-visual-demo}
-Austin ci illustra transazioni, carburante e mining.
+Guarda Austin mentre ti illustra transazioni, gas e mining.
## Typed Transaction Envelope {#typed-transaction-envelope}
-In origine Ethereum aveva un solo formato per le transazioni. Ogni transazione conteneva nonce, prezzo del carburante, limite del carburante, indirizzo di destinazione, valore, dati, v, r e s. Questi campi sono codificati in RLP e somigliano a qualcosa del genere:
+In origine Ethereum aveva un solo formato per le transazioni. Ogni transazione conteneva un nonce, il prezzo del gas, il limite del gass, l'indirizzo di destinazione, il valore, i dati, v, r e s. Questi campi sono codificati in RLP e somigliano a qualcosa del genere:
`RLP([nonce, gasPrice, gasLimit, to, value, data, v, r, s])`
@@ -200,6 +200,6 @@ _Conosci una risorsa pubblica che ti è stata utile? Modifica questa pagina e ag
## Argomenti correlati {#related-topics}
-- [Account](/developers/docs/accounts/)
+- [Conti](/developers/docs/accounts/)
- [Macchina virtuale Ethereum (EVM)](/developers/docs/evm/)
-- [Carburante](/developers/docs/gas/)
+- [Gas](/developers/docs/gas/)
diff --git a/src/content/translations/it/developers/docs/web2-vs-web3/index.md b/src/content/translations/it/developers/docs/web2-vs-web3/index.md
index 0771e97478e..5fe23815edd 100644
--- a/src/content/translations/it/developers/docs/web2-vs-web3/index.md
+++ b/src/content/translations/it/developers/docs/web2-vs-web3/index.md
@@ -15,13 +15,13 @@ Molti sviluppatori Web3 hanno deciso di sviluppare dApp per via della decentrali
- Chiunque sia in rete ha il permesso di utilizzare il servizio. In altre parole, non serve chiedere un permesso.
- Nessuno può bloccare un utente o impedirgli l'accesso al servizio.
- I pagamenti sono incorporati tramite il token nativo, ether (ETH).
-- Ethereum è Turing completa, significa che puoi programmare praticamente qualsiasi cosa.
+- Ethereum è Turing completa, a significare che puoi programmare praticamente qualsiasi cosa.
## Confronti pratici {#practical-comparisons}
| Web2 | Web3 |
| ------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| Twitter può censurare qualsiasi account o tweet | I tweet Web3 sarebbero incensurabili perché il controllo è decentralizzato |
+| Twitter può censurare qualsiasi conto o tweet | I tweet Web3 sarebbero incensurabili perché il controllo è decentralizzato |
| Il servizio di pagamento potrebbe decidere di non consentire determinati tipi di lavoro | Le app di pagamento Web3 non richiedono dati personali e non possono impedire pagamenti |
| I server delle app della gig-economy potrebbero non essere disponibili temporaneamente e influenzare il reddito dei lavoratori | Su Web3 non si può verificare una situazione di non disponibilità dei server: usano Ethereum, una rete decentralizzata con migliaia di computer che agiscono da backend |
diff --git a/src/content/translations/it/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md b/src/content/translations/it/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md
index e171b2a2607..4fa2f8af1e1 100644
--- a/src/content/translations/it/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md
+++ b/src/content/translations/it/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md
@@ -6,7 +6,6 @@ lang: it
tags:
- "primi passi"
- "python"
- - "blockchain"
- "web3.py"
skill: beginner
published: 2020-09-08
diff --git a/src/content/translations/it/developers/tutorials/create-and-deploy-a-defi-app/index.md b/src/content/translations/it/developers/tutorials/create-and-deploy-a-defi-app/index.md
index b3be880f83a..244559e1012 100644
--- a/src/content/translations/it/developers/tutorials/create-and-deploy-a-defi-app/index.md
+++ b/src/content/translations/it/developers/tutorials/create-and-deploy-a-defi-app/index.md
@@ -3,7 +3,7 @@ title: Creare e distribuire un'App DeFi
description: Deposita i token ERC20 sullo smart contract e conia token Farm
author: "strykerin"
tags:
- - "Solidity"
+ - "solidity"
- "defi"
- "web3.js"
- "truffle"
@@ -22,7 +22,7 @@ In questo tutorial creeremo un'applicazione DeFi con Solidity in cui gli utenti
Se questa è la prima volta che scrivi uno smart contract, dovrai configurare il tuo ambiente. Useremo due strumenti: [Truffle](https://www.trufflesuite.com/) e [Ganache](https://www.trufflesuite.com/ganache).
-Truffle è un ambiente di sviluppo e framework di verifica per lo sviluppo di smart contract per Ethereum. Con Truffle è facile costruire e distribuire gli smart contract alla blockchain. Ganache consente di creare una blockchain locale di Ethereum per poter testare gli smart contract. Simula le funzionalità della rete reale e i primi 10 conti sono finanziati con 100 ether di prova, rendendo la distribuzione e la verifica dello smart contract gratuita e facile. Ganache è disponibile come applicazione desktop e strumento di riga di comando. Per questo articolo useremo l'applicazione desktop dell'UI.
+Truffle è un ambiente di sviluppo e framework di verifica per lo sviluppo di smart contract per Ethereum. Con Truffle è facile costruire e distribuire gli smart contract alla blockchain. Ganache consente di creare una blockchain locale di Ethereum per poter testare gli smart contract. Simula le funzionalità della rete reale e, i primi 10 conti, sono finanziati con 100 ether di prova, rendendo la distribuzione e i test del contratto intelligente, gratuiti e facili. Ganache è disponibile come applicazione desktop e strumento di riga di comando. Per questo articolo useremo l'applicazione desktop dell'UI.
![Applicazione desktop dell'UI di Ganache](https://cdn-images-1.medium.com/max/2360/1*V1iQ5onbLbT5Ib2QaiOSyg.png)_Applicazione desktop dell'UI di Ganache_
@@ -74,7 +74,7 @@ Nel codice seguente alla:
- Riga 6: Chiamiamo il costruttore di ERC20.sol e passiamo per il nome e i parametri del simbolo come `"MyToken"` e `"MTKN"` rispettivamente.
-- Riga 7: Coniamo e trasferiamo 1 milione di token per il conto che sta distribuendo lo smart contract (usiamo i 18 decimali predefiniti per il token ERC20, il che significa che se vogliamo coniare 1 token, lo rappresenteremo come 1000000000000000000, 1 con 18 zeri).
+- Riga 7: Coniamo e trasferiamo 1 milione di token per il conto che sta distribuendo il contratto intelligente (usiamo i 18 decimali predefiniti per il token ERC20, il che significa che se vogliamo coniare 1 token, lo rappresenterai come 1000000000000000000, 1 con 18 zeri).
Possiamo vedere di seguito l'implementazione del costruttore di ERC20.sol, dove il campo `_decimals` è impostato a 18:
@@ -145,7 +145,7 @@ Apri Ganache e seleziona l'opzione "Avvio Rapido" per avviare una blockchain loc
truffle migrate
```
-L'indirizzo usato per distribuire i nostri contratti è il primo dall'elenco di indirizzi che Ganache ci mostra. Per verificarlo, possiamo aprire l'applicazione desktop di Ganache e possiamo verificare che il saldo di ether per il primo conto è stato ridotto a causa del costo di ether per distribuire gli smart contract:
+L'indirizzo usato per distribuire i nostri contratti è il primo dall'elenco di indirizzi che Ganache ci mostra. Per verificarlo, possiamo aprire l'applicazione desktop di Ganache e possiamo verificare che il saldo di ether per il primo conto sia stato ridotto a causa del costo di ether per distribuire i nostri contratti intelligenti:
![Applicazione desktop di Ganache](https://cdn-images-1.medium.com/max/2346/1*1iJ9VRlyLuza58HL3DLfpg.png)_Applicazione desktop di Ganache_
@@ -391,7 +391,7 @@ Per eseguire questo script: `truffle exec .\scripts\transferMyTokenToFarmToken.j
_output di transferMyTokenToFarmToken.js_
-Come possiamo vedere, abbiamo depositato correttamente i MyToken sullo smart contract, poiché il primo conto ha ora dei FarmToken.
+Come possiamo vedere, abbiamo depositato correttamente i MyToken al contratto intelligente, poiché il primo conto ha ora dei FarmToken.
Per poter prelevare:
diff --git a/src/content/translations/it/developers/tutorials/deploying-your-first-smart-contract/index.md b/src/content/translations/it/developers/tutorials/deploying-your-first-smart-contract/index.md
index c6de9214a9c..eadfecc6527 100644
--- a/src/content/translations/it/developers/tutorials/deploying-your-first-smart-contract/index.md
+++ b/src/content/translations/it/developers/tutorials/deploying-your-first-smart-contract/index.md
@@ -1,12 +1,12 @@
---
title: Distribuzione del primo Smart Contract
-description: Introduzione alla distribuzione del primo Smart Contract su una rete di test Ethereum
+description: Introduzione alla distribuzione del primo Smart Contract su una rete di prova Ethereum
author: "jdourlens"
tags:
- - "Smart Contract"
+ - "smart contract"
- "remix"
- - "solidity"
- - "primi passi"
+ - "Solidity"
+ - "per cominciare"
- "distribuzione"
skill: beginner
lang: it
diff --git a/src/content/translations/it/developers/tutorials/erc-721-vyper-annotated-code/index.md b/src/content/translations/it/developers/tutorials/erc-721-vyper-annotated-code/index.md
index d53757a5a41..21a876b58be 100644
--- a/src/content/translations/it/developers/tutorials/erc-721-vyper-annotated-code/index.md
+++ b/src/content/translations/it/developers/tutorials/erc-721-vyper-annotated-code/index.md
@@ -129,7 +129,7 @@ event ApprovalForAll:
approved: bool
```
-Talvolta è utile avere un _operatore_ che possa gestire tutti i token di un account di un tipo specifico (quelli gestiti da un contratto specifico), similmente a una delega. Ad esempio, potrei voler dare a un contratto una delega per verificare se non l'ho contattato per sei mesi e, in questo caso, distribuisce le mie risorse ai miei eredi (se uno di loro lo richiede, i contratti non possono fare niente senza esser chiamati da una transazione). In ERC-20 possiamo solo dare un'indennità elevata a un contratto di ereditarietà, ma questo non funziona per ERC-721 perché i token non sono fungibili. Questo è l'equivalente.
+Talvolta, è utile avere un _operatore_, che possa gestire tutti i token di un conto di un tipo specifico (quelli gestiti da un contratto specifico), similmente a una delega. Ad esempio, potrei voler dare a un contratto una delega per verificare se non l'ho contattato per sei mesi e, in questo caso, distribuisce le mie risorse ai miei eredi (se uno di loro lo richiede, i contratti non possono fare niente senza esser chiamati da una transazione). In ERC-20 possiamo solo dare un'indennità elevata a un contratto di ereditarietà, ma questo non funziona per ERC-721 perché i token non sono fungibili. Questo è l'equivalente.
Il valore `approved` ci comunica se l'evento è per un'approvazione, o la revoca di un'approvazione.
@@ -161,7 +161,7 @@ Questo algoritmo funziona solo per le interfacce utente e i server esterni. Il c
ownerToOperators: HashMap[address, HashMap[address, bool]]
```
-Un account potrebbe avere più di un singolo operatore. Un semplice `HashMap` è insufficiente per tenerne traccia, perché ogni chiave conduce a un valore singolo. Invece, puoi usare `HashMap[address, bool]` come valore. Di default, il valore per ogni indirizzo è `False`, che significa che non è un operatore. Puoi impostare i valori a `True` se necessario.
+Un conto potrebbe avere più di un singolo operatore. Un semplice `HashMap` è insufficiente per tenerne traccia, perché ogni chiave conduce a un valore singolo. Invece, puoi usare `HashMap[address, bool]` come valore. Di default, il valore per ogni indirizzo è `False`, che significa che non è un operatore. Puoi impostare i valori a `True` se necessario.
```python
# @dev Address of minter, who can mint a token
@@ -214,7 +214,7 @@ Per accedere alle variabili di stato, si usa `self.` (di nuovo, c
#### Funzioni di visualizzazione {#views}
-Sono funzioni che non modificano lo stato della blockchain e dunque sono eseguibili liberamente se chiamate esternamente. Se le funzioni di visualizzazione sono chiamate da un contratto, devono comunque essere eseguite su ogni nodo e dunque costano del carburante.
+Sono funzioni che non modificano lo stato della blockchain e dunque sono eseguibili liberamente se chiamate esternamente. Se le funzioni di visualizzazione sono chiamate da un contratto, devono comunque esser eseguite su ogni nodo e, dunque, costano gas.
```python
@view
@@ -394,7 +394,7 @@ def _clearApproval(_owner: address, _tokenId: uint256):
self.idToApprovals[_tokenId] = ZERO_ADDRESS
```
-Cambia il valore solo se necessario. Le variabili di stato risiedono nella memoria. Scrivere alla memoria è una delle operazioni più costose che l'EVM (Macchina Virtuale di Ethereum) effettua (in termini di [carburante](/developers/docs/gas/)). Dunque, è bene mantenerla al minimo, anche scrivere il valore esistente ha un costo elevato.
+Cambia il valore solo se necessario. Le variabili di stato risiedono nella memoria. La scrittura all'archiviazione è una delle operazioni più costose che l'EVM (Macchina Virtuale di Ethereum) effettua (in termini di [gas](/developers/docs/gas/)). Dunque, è bene mantenerla al minimo, anche scrivere il valore esistente ha un costo elevato.
```python
@internal
@@ -553,7 +553,7 @@ def setApprovalForAll(_operator: address, _approved: bool):
#### Conia nuovi token e distruggi token esistenti {#mint-burn}
-L'account che ha creato il contratto è il `coniatore`, il super utente autorizzato a coniare nuovi NFT. Tuttavia, nemmeno lui è autorizzato a bruciare i token esistenti. Può farlo solo il proprietario, o un'entità da autorizzata dal proprietario.
+Il conto che ha creato il contratto è il `minter`, il super utente autorizzato a coniare nuovi NFT. Tuttavia, nemmeno lui è autorizzato a bruciare i token esistenti. Può farlo solo il proprietario, o un'entità da autorizzata dal proprietario.
```python
### MINT & BURN FUNCTIONS ###
@@ -578,7 +578,7 @@ Questa funzione restituisce sempre `True`, perché se l'operazione fallisce è r
assert msg.sender == self.minter
```
-Solo il coniatore (l'account che ha creato il contratto ERC-721) può coniare nuovi token. Questo può essere un problema in futuro se si vuole cambiare l'identità del coniatore. In un contratto di produzione, potresti volere una funzione che consenta al coniatore di trasferire i propri privilegi a qualcun altro.
+Solo il coniatore (il conto che ha creato il contratto ERC-721) può coniare nuovi token. Questo può essere un problema in futuro se si vuole cambiare l'identità del coniatore. In un contratto di produzione, potresti volere una funzione che consenta al coniatore di trasferire i propri privilegi a qualcun altro.
```python
# Throws if `_to` is zero address
@@ -612,7 +612,7 @@ def burn(_tokenId: uint256):
log Transfer(owner, ZERO_ADDRESS, _tokenId)
```
-Chiunque è autorizzato a trasferire un token, può bruciarlo. Anche se bruciare un token appare equivalente a trasferirlo all'indirizzo zero, l'indirizzo zero non riceve realmente il token. Questo ci consente di liberare tutta la memoria usata per il token, potendo così ridurre il costo del carburante della transazione.
+Chiunque è autorizzato a trasferire un token, può bruciarlo. Anche se bruciare un token appare equivalente a trasferirlo all'indirizzo zero, l'indirizzo zero non riceve realmente il token. Ciò ci consente di liberare tutta l'archiviazione usata per il token, riducendo il costo del gas della transazione.
# Usare questo contratto {#using-contract}
diff --git a/src/content/translations/it/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md b/src/content/translations/it/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md
index f16acef0902..260acb14c9d 100644
--- a/src/content/translations/it/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md
+++ b/src/content/translations/it/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md
@@ -22,9 +22,9 @@ Questa è una guida per principianti per muovere i primi passi con lo sviluppo d
Inizieremo dalla registrazione ad Alchemy e passeremo alla scrittura del tuo primo script web3! Non è necessaria alcuna esperienza di sviluppo con blockchain.
-## 1. Crea un profilo Alchemy gratuito {#sign-up-for-a-free-alchemy-account}
+## 1. Registrati per un Conto Gratuito di Alchemy {#sign-up-for-a-free-alchemy-account}
-Creare un account Alchemy è facile. [Registrati gratuitamente qui](https://auth.alchemyapi.io/signup).
+Creare un conto di Alchemy è facile, [registrati gratuitamente qui](https://auth.alchemyapi.io/signup).
## 2. Crea un'app con Alchemy {#create-an-alchemy-app}
@@ -55,7 +55,7 @@ Per le richieste manuali, consigliamo di interagire con `JSON-RPC` tramite richi
- `params`: elenco di parametri da passare al metodo.
- `id`: ID della richiesta. Sarà restituita dalla risposta, e potrai controllare sempre a quale richiesta appartiene la risposta.
-Ecco un'esempio che puoi eseguire dalla riga di comando per recuperare il prezzo corrente del carburante:
+Ecco un esempio che puoi eseguire dalla riga di comando per recuperare il prezzo corrente del gas:
```bash
curl https://eth-mainnet.alchemyapi.io/v2/demo \
@@ -64,7 +64,7 @@ curl https://eth-mainnet.alchemyapi.io/v2/demo \
-d '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":73}'
```
-_**NOTA:** Sostituisci [https://eth-mainnet.alchemyapi.io/v2/demo](https://eth-mainnet.alchemyapi.io/jsonrpc/demo) con la tua chiave API `https://eth-mainnet.alchemyapi.io/v2/**your-api-key`\*\*._
+_**NOTA:** Sostituisci [https://eth-mainnet.alchemyapi.io/v2/demo](https://eth-mainnet.alchemyapi.io/jsonrpc/demo) con la tua chiave API `https://eth-mainnet.alchemyapi.io/v2/**your-api-key`._
**Risultati:**
@@ -78,7 +78,7 @@ _**NOTA:** Sostituisci [https://eth-mainnet.alchemyapi.io/v2/demo](https://eth-m
**_NOTA:_** gli script qui sotto devono essere eseguiti in un **contesto node** o **salvati in un file**, non devono essere eseguiti dalla riga di comando. Se non hai installato Node o npm, dai un'occhiata a questa [guida di configurazione per Mac](https://app.gitbook.com/@alchemyapi/s/alchemy/guides/alchemy-for-macs).
-Ci sono tantissime [librerie Web3](https://docs.alchemyapi.io/guides/getting-started#other-web3-libraries) che possono essere integrate con Alchemy, ma consigliamo di usare [Alchemy Web3](https://docs.alchemy.com/reference/api-overview), un sostituto di web3.js, creato e configurato per funzionare perfettamente con Alchemy. Fornisce diversi vantaggi, come tentativi automatici e supporto affidabile per WebSocket.
+Ci sono tantissime [librerie Web3](https://docs.alchemyapi.io/guides/getting-started#other-web3-libraries) che puoi integrare con Alchemy, tuttavia, consigliamo di usare [Alchemy Web3](https://docs.alchemy.com/reference/api-overview), un sostituto di web3.js, creato e configurato per funzionare senza problemi con Alchemy. Fornisce diversi vantaggi, come tentativi automatici e supporto affidabile per WebSocket.
Per installare AlchemyWeb3.js, **passa alla directory del tuo progetto** ed esegui:
diff --git a/src/content/translations/it/developers/tutorials/how-to-implement-an-erc721-market/index.md b/src/content/translations/it/developers/tutorials/how-to-implement-an-erc721-market/index.md
index cd95b4d87f7..c0ab631254c 100644
--- a/src/content/translations/it/developers/tutorials/how-to-implement-an-erc721-market/index.md
+++ b/src/content/translations/it/developers/tutorials/how-to-implement-an-erc721-market/index.md
@@ -3,9 +3,9 @@ title: Come implementare un market ERC-721
description: Come mettere in vendita oggetti tokenizzati su bacheche di annunci decentralizzate
author: "Alberto Cuesta Cañada"
tags:
- - "Smart Contract"
+ - "smart contract"
- "erc-721"
- - "solidity"
+ - "Solidity"
- "token"
skill: intermediate
lang: it
diff --git a/src/content/translations/it/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md b/src/content/translations/it/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md
new file mode 100644
index 00000000000..99efb270389
--- /dev/null
+++ b/src/content/translations/it/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md
@@ -0,0 +1,106 @@
+---
+title: Come simulare i contratti intelligenti in Solidity per testarli
+description: Perché è importante prendersi gioco dei propri contratti in fase di test
+author: Markus Waas
+lang: it
+tags:
+ - "solidity"
+ - "contratti intelligenti"
+ - "test"
+ - "simulazione"
+skill: intermediate
+published: 2020-05-02
+source: soliditydeveloper.com
+sourceUrl: https://soliditydeveloper.com/mocking-contracts
+---
+
+[Gli oggetti Mock](https://en.wikipedia.org/wiki/Mock_object) sono un modello di progettazione comune nella programmazione orientata agli oggetti. Il termine inglese per "simulare" è "to mock", dal francese antico "mocquer" col significato di "prendersi gioco di". Questo significato si è poi evoluto in "imitare qualcosa di reale", che è ciò che in effetti facciamo nella programmazione. Prenditi gioco dei tuoi contratti intelligenti quanto vuoi, ma simulali ogni volta che puoi. Ti semplificherà la vita.
+
+## Condurre unit test dei contratti con le simulazioni {#unit-testing-contracts-with-mocks}
+
+Simulare un contratto significa essenzialmente creare una seconda versione di quel contratto che si comporta in modo simile a quello originale, ma in modo che possa essere facilmente controllato dallo sviluppatore. Ci si ritrova spesso con contratti complessi in cui si desidera solo [eseguire unit test di piccole parti del contratto](/developers/docs/smart-contracts/testing/). Ma cosa succede se il test di questa piccola parte richiede uno condizione molto specifica del contratto, difficile da ottenere?
+
+Potresti scrivere una complessa logica di configurazione del test ogni volta che porta il contratto nello stato richiesto o scrivi una simulazione. Simulare un contratto tramite ereditarietà è semplice. Basta creare un secondo contratto simulato che erediti da quello originale. Ora puoi sovrascrivere le funzioni nella tua simulazione. Vediamolo con un esempio.
+
+## Esempio: ERC20 Privato {#example-private-erc20}
+
+Usiamo un contratto ERC-20 di esempio dotato di un tempo privato iniziale. Il proprietario può gestire utenti privati, che saranno gli unici autorizzati a ricevere token all'inizio. Una volta trascorso un certo intervallo di tempo, a tutti sarà consentito utilizzare i token. Se sei curioso, stiamo usando l'hook [`_beforeTokenTransfer`](https://docs.openzeppelin.com/contracts/3.x/extending-contracts#using-hooks) dalla nuova libreria di contratti OpenZeppelin v3.
+
+```solidity
+pragma solidity ^0.6.0;
+
+import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
+import "@openzeppelin/contracts/access/Ownable.sol";
+
+contract PrivateERC20 is ERC20, Ownable {
+ mapping (address => bool) public isPrivateUser;
+ uint256 private publicAfterTime;
+
+ constructor(uint256 privateERC20timeInSec) ERC20("PrivateERC20", "PRIV") public {
+ publicAfterTime = now + privateERC20timeInSec;
+ }
+
+ function addUser(address user) external onlyOwner {
+ isPrivateUser[user] = true;
+ }
+
+ function isPublic() public view returns (bool) {
+ return now >= publicAfterTime;
+ }
+
+ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual override {
+ super._beforeTokenTransfer(from, to, amount);
+
+ require(_validRecipient(to), "PrivateERC20: destinatario non valido");
+ }
+
+ function _validRecipient(address to) private view returns (bool) {
+ if (isPublic()) {
+ return true;
+ }
+
+ return isPrivateUser[to];
+ }
+}
+```
+
+E ora, simuliamolo.
+
+```solidity
+pragma solidity ^0.6.0;
+import "../PrivateERC20.sol";
+
+contract PrivateERC20Mock is PrivateERC20 {
+ bool isPublicConfig;
+
+ constructor() public PrivateERC20(0) {}
+
+ function setIsPublic(bool isPublic) external {
+ isPublicConfig = isPublic;
+ }
+
+ function isPublic() public view returns (bool) {
+ return isPublicConfig;
+ }
+}
+```
+
+Otterrai uno dei seguenti messaggi d'errore:
+
+- `PrivateERC20Mock.sol: TypeError: La funzione di sovrascrizione manca dello specificatore "ovverride".`
+- `PrivateERC20.sol: TypeError: Tentativo di sovrascrizione della funzione non virtuale. Hai dimenticato di aggiungere "virtual"?`
+
+Poiché stiamo usando la nuova versione di Solidity 0.6, dobbiamo aggiungere la parola chiave `virtual` per le funzioni sovrascrivibili e `override` per la funzione di sovrascrizione. Quindi, aggiungiamoli a entrambe le funzioni `isPublic`.
+
+Ora, nei tuoi unit test, puoi invece usare `PrivateERC20Mock`. Quando desideri testare il comportamento durante il tempo di utilizzo privato, usa `setIsPublic(false` e, allo stesso modo, `setIsPublic(true)` per testare il tempo di utilizzo pubblico. Ovviamente, nel nostro esempio, abbiamo potuto usare soltanto i [time helper](https://docs.openzeppelin.com/test-helpers/0.5/api#increase) per modificare anche i tempi di conseguenza. Ma l'idea della simulazione dovrebbe ora esserti chiara e puoi immaginarti scenari in cui non sia facile come far procedere semplicemente il tempo.
+
+## Simulare molti contratti {#mocking-many-contracts}
+
+Può diventare caotico creare un altro contratto per ogni singola simulazione. Se ciò ti preoccupa, puoi dare un'occhiata alla libreria [MockContract](https://github.com/gnosis/mock-contract). Ti consente di sovrascrivere e modificare i comportamenti dei contratti al volo. Tuttavia, funziona solo per le chiamate di simulazione a un altro contratto, quindi non funzionerebbe per il nostro esempio.
+
+## La simulazione può essere ancora più potente {#mocking-can-be-even-more-powerful}
+
+I poteri della simulazione non finiscono qui.
+
+- Aggiungere funzioni: è utile non solo sovrascrivere una funzione specifica, ma anche aggiungere funzioni aggiuntive. Un buon esempio per i token è proprio avere una funzione `mint` aggiuntiva per consentire a qualsiasi utente di ottenere nuovi token gratuitamente.
+- Uso nelle reti di prova: quando distribuisci e testi i tuoi contratti sulle reti di prova insieme alla tua dApp, prendi in considerazione l'uso di una versione simulata. Evita di sovrascrivere le funzioni, a meno che non sia davvero necessario. Dopotutto, vuoi testare la logica reale. Ma può essere utile aggiungere una funzione di ripristino che ripristini semplicemente lo stato del contratto all'inizio, senza necessità di alcuna nuova distribuzione. Ovviamente, non vorresti farlo in un contratto sulla Rete Principale.
diff --git a/src/content/translations/it/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md b/src/content/translations/it/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md
index 89326796090..796d12b2f72 100644
--- a/src/content/translations/it/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md
+++ b/src/content/translations/it/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md
@@ -546,7 +546,7 @@ Questa volta, ha scoperto che la proprietà è immediatamente violata.
## Individuare le transazioni ad alto consumo di gas {#finding-transactions-with-high-gas-consumption}
-Vedremo come individuare le transazioni con un alto consumo di carburante con Echidna. L'obiettivo è il seguente smart contract:
+Vedremo come individuare le transazioni con un alto consumo di gas con Echidna. L'obiettivo è il seguente smart contract:
```solidity
contract C {
@@ -583,9 +583,9 @@ echidna_test: passed! 🎉
Seed: 2320549945714142710
```
-### Misurare il consumo di carburante {#measuring-gas-consumption}
+### Misurare il Consumo di Gas {#measuring-gas-consumption}
-Per abilitare il consumo di carburante con Echidna, crea un file di configurazione `config.yaml`:
+Per abilitare il consumo di gas con Echidna, crea un file di configurazione `config.yaml`:
```yaml
estimateGas: true
@@ -619,7 +619,7 @@ Seed: -325611019680165325
- Il gas mostrato è una stima fornita da [HEVM](https://github.com/dapphub/dapptools/tree/master/src/hevm#hevm-).
-### Filtrare le chiamate di riduzione del carburante {#filtering-out-gas-reducing-calls}
+### Filtrare le Chiamate di Riduzione del Gas {#filtering-out-gas-reducing-calls}
Il tutorial precedente sulle **funzioni di filtraggio da chiamare durante una campagna di fuzzing**, mostra come rimuovere alcune funzioni dal tuo test.
Questo può esser critico per ottenere una stima accurata del gas. Considera l'esempio seguente:
@@ -677,7 +677,7 @@ push used a maximum of 40839 gas
check used a maximum of 1484472 gas
```
-### Sommario: Trovare transazioni ad alto consumo di gas {#summary-finding-transactions-with-high-gas-consumption}
+### Sommario: Individuare le transazioni ad alto consumo di gas {#summary-finding-transactions-with-high-gas-consumption}
Echidna può trovare le transazioni ad alto consumo di gas usando l'opzione di configurazione `estimateGas`:
diff --git a/src/content/translations/it/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md b/src/content/translations/it/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md
index ae8ca3b1b8b..56886cd3a7b 100644
--- a/src/content/translations/it/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md
+++ b/src/content/translations/it/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md
@@ -5,7 +5,7 @@ author: Trailofbits
lang: it
tags:
- "Solidity"
- - "Smart Contract"
+ - "smart contract"
- "sicurezza"
- "test"
- "verifica formale"
@@ -171,7 +171,7 @@ Senza altre informazioni, Manticore esplorerà il contratto con nuove transazion
Manticore restituirà le informazioni un una directory `mcore_*`. In questa directory troverai, tra altre cose:
- `global.summary`: copertura e avvisi del compilatore
-- `test_XXXXX.summary`: copertura, ultima istruzione, saldi dell'account per test case
+- `test_XXXXX.summary`: copertura, ultima istruzione, saldi del conto per casi di prova
- `test_XXXXX.tx`: elenco dettagliato delle transazioni per test case
Qui Manticore trova 7 test case che corrispondono a (l'ordine dei nomi dei file potrebbe variare):
@@ -190,13 +190,13 @@ _Il riepilogo dell'esplorazione f(!=65) denota f chiamata con ogni valore divers
Come puoi notare, Manticore genera un test case univoco per ogni transazione riuscita o ripristinata.
-Usa il flag `--quick-mode` se desideri un'esplorazione veloce del codice (disabilita rilevatori di bug, calcolo del carburante, ecc.)
+Usa il flag `--quick-mode` se desideri un'esplorazione veloce del codice (disabilita rilevatori di bug, calcolo del carburante, etc.)
### Manipolazione di uno Smart Contract tramite l'API {#manipulate-a-smart-contract-through-the-api}
Questa sezione contiene informazioni su come manipolare uno Smart Contract tramite l'API Python di Manticore. Puoi creare un nuovo file con l'estensione di Python `*.py` e scrivere il codice necessario aggiungendo i comandi dell'API (le basi saranno descritte di seguito) in questo file e poi eseguirlo con il comando `$ python3 *.py`. Puoi anche eseguire i comandi qui sotto direttamente nella console Python. Per eseguirla usa il comando `$ python3`.
-### Creazione di account {#creating-accounts}
+### Creare i Conti {#creating-accounts}
La prima da fare è inizializzare una nuova blockchain con i comandi seguenti:
@@ -206,7 +206,7 @@ from manticore.ethereum import ManticoreEVM
m = ManticoreEVM()
```
-Un account senza contratto viene creato usando [m.create_account](https://manticore.readthedocs.io/en/latest/evm.html?highlight=create_account#manticore.ethereum.ManticoreEVM.create_account):
+Un conto privo di contratto è creato usando [m.create_account](https://manticore.readthedocs.io/en/latest/evm.html?highlight=create_account#manticore.ethereum.ManticoreEVM.create_account):
```python
user_account = m.create_account(balance=1000)
@@ -231,7 +231,7 @@ contract_account = m.solidity_create_contract(source_code, owner=user_account)
#### Riepilogo {#summary}
-- Puoi creare account utente e di contratto con [m.create_account](https://manticore.readthedocs.io/en/latest/evm.html?highlight=create_account#manticore.ethereum.ManticoreEVM.create_account) e [m.solidity_create_contract](https://manticore.readthedocs.io/en/latest/evm.html?highlight=solidity_create#manticore.ethereum.ManticoreEVM.create_contract).
+- Puoi creare conti dell'utente e del contratto con [m.create_account](https://manticore.readthedocs.io/en/latest/evm.html?highlight=create_account#manticore.ethereum.ManticoreEVM.create_account) e [m.solidity_create_contract](https://manticore.readthedocs.io/en/latest/evm.html?highlight=solidity_create#manticore.ethereum.ManticoreEVM.create_contract).
### Esecuzione di transazioni {#executing-transactions}
@@ -352,7 +352,7 @@ for state in m.all_states:
Puoi accedere alle informazioni sullo stato. Per esempio:
-- `state.platform.get_balance(account.address)`: il saldo dell'account
+- `state.platform.get_balance(account.address)`: il saldo del conto
- `state.platform.transactions`: l'elenco delle transazioni
- `state.platform.transactions[-1].return_data`: i dati restituiti dall'ultima transazione
diff --git a/src/content/translations/it/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md b/src/content/translations/it/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md
index 26b870ac0d4..530a597cc89 100644
--- a/src/content/translations/it/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md
+++ b/src/content/translations/it/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md
@@ -5,7 +5,7 @@ author: Trailofbits
lang: it
tags:
- "Solidity"
- - "Smart Contract"
+ - "smart contract"
- "sicurezza"
- "test"
- "analisi statica"
diff --git a/src/content/translations/it/developers/tutorials/kickstart-your-dapp-frontend-development-wth-create-eth-app/index.md b/src/content/translations/it/developers/tutorials/kickstart-your-dapp-frontend-development-wth-create-eth-app/index.md
index 1934f04db7f..aceca1cc28e 100644
--- a/src/content/translations/it/developers/tutorials/kickstart-your-dapp-frontend-development-wth-create-eth-app/index.md
+++ b/src/content/translations/it/developers/tutorials/kickstart-your-dapp-frontend-development-wth-create-eth-app/index.md
@@ -60,15 +60,15 @@ Mentre [Web3](https://web3js.readthedocs.io/en/v1.2.7/) è ancora molto usato, n
[GraphQL](https://graphql.org/) è un metodo alternativo per gestire i dati rispetto a un'[API di Restful](https://restfulapi.net/). Ha diversi vantaggi rispetto alle Api di Restful, specialmente per i dati della blockchain decentralizzata. Se sei interessato al ragionamento dietro questo metodo, dai un'occhiata a [GraphQL Will Power the Decentralized Web](https://medium.com/graphprotocol/graphql-will-power-the-decentralized-web-d7443a69c69a).
-Solitamente recupereresti i dati direttamente dal tuo smart contract. Vuoi leggere l'ora dell'ultima operazione? Basta chiamare `MyContract.methods.latestTradeTime().call()` per recuperare i dati da un nodo di Ethereum come Infura nella tua Dapp. E se ci fossero centinaia di punti di dati diversi? Ne deriverebbero centinaia di recuperi di dati al nodo, richiedendo ogni volta un [RTT](https://wikipedia.org/wiki/Round-trip_delay_time) e rendendo lenta e inefficiente la tua Dapp. Una scappatoia potrebbe essere una funzione di chiamata del recuperatore nel tuo contratto, in modo da restituire più dati in una volta. Questa soluzione però non è sempre ideale.
+Solitamente recupereresti i dati direttamente dal tuo smart contract. Vuoi leggere l'ora dell'ultima operazione? Basta chiamare `MyContract.methods.latestTradeTime().call()`, che recupera i dati da un nodo di Ethereum come Infura, nella tua dapp. E se ci fossero centinaia di punti di dati diversi? Ciò risulterebbe in centinaia di recuperi di dati al nodo, richiedendo ogni volta un [RTT](https://wikipedia.org/wiki/Round-trip_delay_time) e rendendo la tua dapp lenta e inefficace. Una scappatoia potrebbe essere una funzione di chiamata del recuperatore nel tuo contratto, in modo da restituire più dati in una volta. Questa soluzione però non è sempre ideale.
E poi potresti essere interessato anche ai dati storici. Vuoi sapere non solo l'orario dell'ultima operazione, ma gli orari per tutte le operazioni che tu stesso hai mai eseguito? Usa il pacchetto subgraph _create-eth-app_, leggi la [documentazione](https://thegraph.com/docs/define-a-subgraph) e adattalo ai tuoi contratti. Se stai cercando degli smart contract popolari, potrebbe anche esistere già un subgraph. Dai un'occhiata al [subgraph explorer](https://thegraph.com/explorer/).
-Una volta che hai un subgraph, ti consente di scrivere una semplice query nella tua Dapp che recuperi tutti i dati importanti della blockchain, inclusi quelli storici di cui hai bisogno, in un solo recupero.
+Una volta che hai un grafico secondario, ti consente di scrivere una semplice richiesta nella tua dapp che recuperi tutti i dati importanti della blockchain, inclusi quelli storici che necessiti, tramite un solo recupero necessario.
### Apollo {#apollo}
-Grazie all'integrazione di [Apollo Boost](https://www.apollographql.com/docs/react/get-started/), puoi facilmente integrare il grafico nella tua Dapp di React. Specialmente quando si utilizzano gli [hook di React e Apollo](https://www.apollographql.com/blog/apollo-client-now-with-react-hooks-676d116eeae2), recuperare i dati è tanto facile quanto scrivere una singola query di GraphQL nel tuo componente:
+Grazie all'integrazione di [Apollo Boost](https://www.apollographql.com/docs/react/get-started/), puoi integrare facilmente il grafico nella tua dapp di React. Specialmente quando si utilizzano gli [hook di React e Apollo](https://www.apollographql.com/blog/apollo-client-now-with-react-hooks-676d116eeae2), recuperare i dati è tanto facile quanto scrivere una singola query di GraphQL nel tuo componente:
```js
const { loading, error, data } = useQuery(myGraphQlQuery)
@@ -100,7 +100,7 @@ Quando scegli di integrare Aave con _create-eth-app_, otterrai un'[integrazione
### Uniswap {#uniswap}
-[Uniswap](https://uniswap.exchange/) è uno scambio decentralizzato (DEX). I fornitori di liquidità possono guadagnare commissioni fornendo i token richiesti o ether per ambe le parti di uno scambio. È ampiamente usato e dunque ha una delle liquidità più elevate per una gamma davvero ampia di token. Puoi integrarla facilmente nella tua Dapp, ad esempio per consentire agli utenti di scambiare i loro ETH per DAI.
+[Uniswap](https://uniswap.exchange/) è uno scambio decentralizzato (DEX). I fornitori di liquidità possono guadagnare commissioni fornendo i token richiesti o ether per ambe le parti di uno scambio. È ampiamente usato e dunque ha una delle liquidità più elevate per una gamma davvero ampia di token. Puoi integrarla facilmente nella tua dapp, ad esempio, per consentire agli utenti di scambiare i propri ETH per DAI.
Sfortunatamente, al momento della redazione del del presente articolo, l'integrazione è solo per Uniswap v1 e non per [la recente v2](https://uniswap.org/blog/uniswap-v2/).
diff --git a/src/content/translations/it/developers/tutorials/learn-foundational-ethereum-topics-with-sql/index.md b/src/content/translations/it/developers/tutorials/learn-foundational-ethereum-topics-with-sql/index.md
index ae1376b08da..a52fb3dfed8 100644
--- a/src/content/translations/it/developers/tutorials/learn-foundational-ethereum-topics-with-sql/index.md
+++ b/src/content/translations/it/developers/tutorials/learn-foundational-ethereum-topics-with-sql/index.md
@@ -1,6 +1,6 @@
---
title: Imparare gli argomenti fondamentali di Ethereum con SQL
-description: Questo tutorial aiuta i lettori a comprendere i concetti fondamentali di Ethereum, incluse transazioni, blocchi e carburante, effettuando query di dati sulla catena con lo Structured Query Language (SQL).
+description: Questo tutorial aiuta i lettori a comprendere i concetti fondamentali di Ethereum, incluse le transazioni, i blocchi e il gas, interrogando i dati sulla catena con il Linguaggio di Richiesta Strutturato (SQL).
author: "Paul Apivat"
tags:
- "SQL"
@@ -10,7 +10,7 @@ tags:
- "Dune Analytics"
- "Blocchi"
- "Transazioni"
- - "Carburante"
+ - "Gas"
skill: beginner
lang: it
published: 2021-05-11
@@ -20,21 +20,21 @@ sourceUrl: https://paulapivat.com/post/query_ethereum/
Molti tutorial di Ethereum sono rivolti agli sviluppatori, mancano invece risorse educative per gli analisti di dati o per le persone che vogliono visualizzare dati sulla catena senza eseguire un client o un nodo.
-Questo tutorial aiuta i lettori a comprendere i concetti fondamentali di Ethereum, incluse transazioni, blocchi e carburante, effettuando query di dati sulla catena con lo Structured Query Language (SQL) tramite un'interfaccia fornita da [Dune Analytics](https://dune.xyz/home).
+Questo tutorial aiuta i lettori a comprendere i concetti fondamentali di Ethereum, incluse le transazioni, i blocchi e il gas, interrogando i dati sulla catena con il linguaggio di richiesta strutturato (SQL), tramite un'interfaccia fornita da [Dune Analytics](https://dune.xyz/home).
-I dati sulla catena possono aiutarci a comprendere Ethereum, la rete e, un'economia per la potenza di calcolo, e dovrebbero servire come una base per la comprensione delle sfide che Ethereum sta affrontando oggi (es., aumento dei prezzi del carburante) e, soprattutto, come confronto sulle soluzioni di scaling.
+I dati sulla catena possono aiutarci a comprendere Ethereum, la rete, come un'economia per la potenza di calcolo, e dovrebbero servire da base per comprendere le sfide che Ethereum affronta oggi (cioè, l'aumento dei prezzi del gas) e, soprattutto, le discussioni sulle soluzioni di ridimensionamento.
### Transazioni {#transactions}
-Il percorso di un utente su Ethereum inizia inizializzando l'account controllato da un utente o un'entità con un saldo di ETH. Esistono due tipi di account: account controllato dall'utente o smart contract (vedi [ethereum.org](/developers/docs/accounts/)).
+Il percorso di un utente su Ethereum inizia inizializzando il conto controllato da un utente o da un'entità, con un saldo di ETH. Esistono due tipi di conto: controllato dall'utente o contratto intelligente (vedi [ethereum.org](/developers/docs/accounts/)).
-Ogni conto è visualizzabile su un esploratore di blocchi come [Etherscan](https://etherscan.io/). Gli esploratori di blocchi sono un portale ai dati di Ethereum. Mostrano, in tempo reale, i dati su blocchi, transazioni, miner, account e altre attività sulla catena (vedi [qui](/developers/docs/data-and-analytics/block-explorers/)).
+Ogni conto è visualizzabile su un esploratore di blocchi come [Etherscan](https://etherscan.io/). Gli esploratori di blocchi sono un portale ai dati di Ethereum. Mostrano, in tempo reale, i dati su blocchi, transazioni, miner, conti e altre attività sulla catena (vedi [qui](/developers/docs/data-and-analytics/block-explorers/)).
Tuttavia, è possibile che un utente voglia interrogare i dati direttamente per riconciliare le informazioni fornite da esploratori di blocchi esterni. [Dune Analytics](https://duneanalytics.com/)mette a disposizione questa capacità a chiunque abbia una conoscenza di SQL.
-Per riferimento, l'account dello smart contract per la Ethereum Foundation (EF) può visualizzato visto su [Etherscan](https://etherscan.io/address/0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae).
+Per riferimento, il conto del contratto intelligente per la Ethereum Foundation (EF) può essere visualizzato su [Etherscan](https://etherscan.io/address/0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae).
-Una cosa da notare è che tutti gli account, incluso quello dell'EF, hanno un indirizzo pubblico utilizzabile per inviare e ricevere le transazioni.
+Una cosa da notare è che tutti i conti, incluso quello dell'EF, hanno un indirizzo pubblico, utilizzabile per inviare e ricevere le transazioni.
Il saldo del conto su Etherscan comprende transazioni regolari e interne. Le transazioni interne, nonostante il nome, non sono transazioni _reali_ che modificano lo stato della catena. Sono trasferimenti di valore avviati eseguendo un contratto ([sorgente](https://ethereum.stackexchange.com/questions/3417/how-to-get-contract-internal-transactions)). Poiché le transazioni interne non hanno firma, **non** sono incluse sulla blockchain e non sono interrogabili con Dune Analytics.
@@ -70,13 +70,13 @@ Questo produrrà le stesse informazioni fornite sulla pagina della transazione d
#### Etherscan {#etherscan}
-![etherscan_view](./etherscan_view.png)
+![](./etherscan_view.png)
[Pagina del contratto dell'EF su Etherscan.](https://etherscan.io/address/0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe)
#### Dune Analytics {#dune-analytics}
-![dune_view](./dune_view.png)
+![](./dune_view.png)
Puoi trovare la dashboard [qui](https://duneanalytics.com/paulapivat/Learn-Ethereum). Clicca sulla tabella per vedere l'interrogazione (vedi anche sopra).
@@ -88,8 +88,9 @@ Una transazione inviata presenta diverse informazioni, tra cui ([sorgente](/deve
- **Firma**: mentre le chiavi private di un mittente firmano una transazione, con SQL possiamo interrogare l'indirizzo pubblico di un mittente ("da").
- **Valore**: questo è l'importo di ETH trasferito (vedi la colonna di `ether`).
- **Dati**: sono i dati arbitrari che hanno ricevuto l'hashing (vedi la colonna `data`)
-- **gasLimit**: la massima quantità di carburante, o il costo del calcolo, consumabile da una transazione (vedi `gas_limit`).
-- **gasPrice**: la commissione che il mittente paga per firmare una transazione sulla blockchain. Il carburante è denominato in Gwei, ovvero 0,000000001 ETH (nove decimali).
+- **gasLimit**: l'importo massimo di unità di gas consumabili dalla transazione. Le unità di gas rappresentano le fasi di calcolo
+- **maxPriorityFeePerGas**: l'importo massimo di gas da includere come mancia al miner
+- **maxFeePerGas**: l'importo massimo di gas che si è disposti a pagare per la transazione (inclusiva di baseFeePerGas e maxPriorityFeePerGas)
Possiamo richiedere informazioni specifici per le transazioni all'indirizzo pubblico della Ethereum Foundation:
@@ -124,7 +125,6 @@ Ecco l'[interrogazione](https://duneanalytics.com/queries/44856/88292) su Dune A
SELECT
time,
number,
- difficulty,
hash,
parent_hash,
nonce
@@ -154,7 +154,7 @@ ORDER BY block_time DESC`
Ecco l'output in SQL su Dune:
-![list_of_txn](./list_of_txn.png)
+![](./list_of_txn.png)
Questo singolo blocco aggiunto alla catena cambia lo stato della macchina virtuale di Ethereum ([EVM](/developers/docs/evm/)). Dozzine, a volte, centinaia di transazioni vengono verificate in un solo colpo. In questo caso specifico, sono state incluse 222 transazioni.
@@ -173,19 +173,19 @@ FROM temp_table
Per il blocco 12396854, di 222 transazioni totali, 204 sono state verificate correttamente:
-![successful_txn](./successful_txn.png)
+![](./successful_txn.png)
Le richieste di transazioni si verificano dozzine di volte al secondo, ma i blocchi sono impegnati approssimativamente ogni 15 secondi ([sorgente](/developers/docs/blocks/)).
-Per vedere che un blocco è prodotto approssimativamente ogni 15 secondi, potremmo prendere il numero di secondi in un giorno (86400) diviso per 15 per ottenere una _stima_ del numero medio di blocchi al giorno (~ 5760).
+Per vedere che un blocco è prodotto approssimativamente ogni 15 secondi, potremmo prendere il numero di secondi in una giornata (86400) diviso per 15 per ottenere un numero medio stimato di blocchi al giorno (circa 5760).
Il grafico per i blocchi di Ethereum prodotti al giorno (2016 - presente) è:
-![daily_blocks](./daily_blocks.png)
+![](./daily_blocks.png)
Il numero medio di blocchi prodotti giornalmente in questo periodo di tempo è di ~5.874:
-![avg_daily_blocks](./avg_daily_blocks.png)
+![](./avg_daily_blocks.png)
Le interrogazioni sono:
@@ -216,13 +216,13 @@ FROM temp_table
Il numero medio di blocchi prodotto ogni giorno dal 2016 è lievemente superiore a quel numero, a 5.874. In alternativa, dividendo 86400 secondi per i 5874 blocchi medi, si ottiene 14,7 secondi, pari a circa un blocco ogni 15 secondi.
-### Carburante {#gas}
+### Gas {#gas}
-I blocchi hanno dimensioni limitate. Ogni blocco ha un limite di carburante che è collettivamente impostato dai miner e dalla rete per prevenire una dimensione del blocco arbitrariamente grande, così da ridurre il peso sul nodo completo in termini di requisiti di spazio su disco e velocità ([sorgente](/developers/docs/blocks/)).
+I blocchi hanno dimensioni limitate. La dimensione massima del blocco è dinamica e varia a seconda della domanda di rete, tra le 12.500.000 e le 25.000.000 unità. I limiti sono necessari per evitare che le dimensioni arbitrariamente grandi dei blocchi mettano a dura prova i nodi completi, in termini di requisiti di spazio su disco e velocità ([fonte](/developers/docs/blocks/)).
-Un modo per concettualizzare il limite di carburante del blocco è pensare a esso come la **fornitura** di spazio per i blocchi disponibile in cui raggruppare le transazioni. Il limite di carburante del blocco è interrogabile e visualizzabile dal 2016 a oggi:
+Un modo per concettualizzare il limite di gas del blocco è immaginarlo come l'**offerta** di spazio del blocco disponibile, in cui raggruppare le transazioni. Il limite di gas del blocco è interrogabile e visualizzabile dal 2016 a oggi:
-![avg_gas_limit](./avg_gas_limit.png)
+![](./avg_gas_limit.png)
```sql
SELECT
@@ -233,9 +233,9 @@ GROUP BY dt
OFFSET 1
```
-Poi c'è il carburante reale usato giornalmente per pagare per i calcoli effettuati sulla catena di Ethereum (es., inviare una transazione, chiamare uno smart contract, coniare un NFT). Questa è la **domanda** di spazio per i blocchi disponibile di Ethereum:
+Poi, c'è il gas effettivo, usato quotidianamente per pagare i calcoli effettuati sulla catena di Ethereum (cioè, l'invio della transazione, la chiamata di un contratto intelligente, il conio di un NFT). Questa è la **domanda** di spazio per i blocchi disponibile di Ethereum:
-![daily_gas_used](./daily_gas_used.png)
+![](./daily_gas_used.png)
```sql
SELECT
@@ -250,13 +250,13 @@ Possiamo anche giustapporre questi due grafici insieme per vedere come si alline
![gas_demand_supply](./gas_demand_supply.png)
-Possiamo quindi vedere i prezzi del carburante come una funzione della domanda di spazio per i blocchi di Ethereum, alla luce dell'offerta disponibile.
+Dunque, possiamo comprendere i prezzi del gas come una funzione di domanda per lo spazio del blocco di Ethereum, data l'offerta disponibile.
-Infine, potremmo voler interrogare i prezzi giornalieri medi del carburante per la catena di Ethereum, per farlo occorrerà però un tempo di interrogazione particolarmente lungo, quindi filtreremo la nostra interrogazione alla quantità di carburante media pagata per transazione dalla Ethereum Foundation.
+Infine, potremmo voler interrogare i prezzi del gas quotidiani medi per la catena di Ethereum, tuttavia, farlo risulterà in un tempo di richiesta particolarmente lungo, quindi filtreremo la nostra richiesta all'importo medio di gas pagato per transazione dall'Ethereum Foundation.
-![ef_daily_gas](./ef_daily_gas.png)
+![](./ef_daily_gas.png)
-Possiamo vedere i prezzi del carburante pagati negli anni nelle transazioni all'indirizzo dell'Ethereum Foundation. Ecco l'interrogazione:
+Possiamo vedere i prezzi del gas pagati per tutte le transazioni effettuate all'indirizzo dell'Ethereum Foundation negli anni. Ecco l'interrogazione:
```sql
SELECT
diff --git a/src/content/translations/it/developers/tutorials/logging-events-smart-contracts/index.md b/src/content/translations/it/developers/tutorials/logging-events-smart-contracts/index.md
index 885a28c78eb..a3472c56bf2 100644
--- a/src/content/translations/it/developers/tutorials/logging-events-smart-contracts/index.md
+++ b/src/content/translations/it/developers/tutorials/logging-events-smart-contracts/index.md
@@ -3,9 +3,9 @@ title: Registrare dati dagli Smart Contract con gli eventi
description: Introduzione agli eventi degli Smart Contract e come usarli per registrare dati
author: "jdourlens"
tags:
- - "Smart Contract"
+ - "smart contract"
- "remix"
- - "Solidity"
+ - "solidity"
- "eventi"
skill: intermediate
lang: it
@@ -15,7 +15,7 @@ sourceUrl: https://ethereumdev.io/logging-data-with-events/
address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE"
---
-In Solidity, gli [eventi](/developers/docs/smart-contracts/anatomy/#events-and-logs) sono segnali inviati che possono essere attivati dagli Smart Contract. Le dapp, o altri elementi connessi all'API JSON-RPC di Ethereum, possono attendere questi eventi e agire di conseguenza. Gli eventi sono anche indicizzabili così che la cronologia dell'evento sia ricercabile in seguito.
+In Solidity, gli [eventi](/developers/docs/smart-contracts/anatomy/#events-and-logs) sono segnali inviati che possono essere attivati dagli Smart Contract. Le dapp, o qualsiasi cosa sia connessa all'API di JSON-RPC di Ethereum, possono ascoltare questi eventi e agire di conseguenza. Gli eventi sono anche indicizzabili così che la cronologia dell'evento sia ricercabile in seguito.
## Eventi {#events}
diff --git a/src/content/translations/it/developers/tutorials/optimism-std-bridge-annotated-code/index.md b/src/content/translations/it/developers/tutorials/optimism-std-bridge-annotated-code/index.md
index baf3c00d5e2..df6c04fb5de 100644
--- a/src/content/translations/it/developers/tutorials/optimism-std-bridge-annotated-code/index.md
+++ b/src/content/translations/it/developers/tutorials/optimism-std-bridge-annotated-code/index.md
@@ -3,7 +3,7 @@ title: "Guida del ponte standard di Optimism per contratti"
description: Come funziona il ponte standard per Optimism? Perché funziona così?
author: Ori Pomerantz
tags:
- - "Solidity"
+ - "solidity"
- "optimism"
- "ponte"
- "livello 2"
@@ -160,7 +160,7 @@ Questa funzione non è davvero necessaria, perché sul L2 è un contratto pre-di
) external;
```
-Il parametro `_l2Gas` è la quantità di gas di L2 che la transazione può spendere. [Fino a un certo limite (elevato), è gratuito](https://community.optimism.io/docs/developers/bridge/messaging/#for-l1-%E2%87%92-l2-transactions-2), quindi, a meno che il contratto ERC-20 non faccia qualcosa di davvero strano durante il conio, non dovrebbe essere un problema. Questa funzione si occupa dello scenario comune, in cui un utente collega le risorse allo stesso indirizzo su una blockchain differente.
+Il parametro `_l2Gas` è l'importo di gas del L2 che la transazione può spendere. [Fino a un certo limite (elevato), è gratuito](https://community.optimism.io/docs/developers/bridge/messaging/#for-l1-%E2%87%92-l2-transactions-2), quindi, a meno che il contratto ERC-20 non faccia qualcosa di davvero strano durante il conio, non dovrebbe essere un problema. Questa funzione si occupa dello scenario comune, in cui un utente collega le risorse allo stesso indirizzo su una blockchain differente.
```solidity
/**
@@ -319,16 +319,16 @@ import { ICrossDomainMessenger } from "./ICrossDomainMessenger.sol";
```solidity
/**
* @title CrossDomainEnabled
- * @dev Helper contract for contracts performing cross-domain communications
+ * @dev Contratto di supporto per contratti che eseguono comunicazioni tra domini
*
- * Compiler used: defined by inheriting contract
+ * Compiler usato: definito dal contratto ereditario
*/
contract CrossDomainEnabled {
/*************
- * Variables *
+ * Variabili *
*************/
- // Messenger contract used to send and receive messages from the other domain.
+ // Il contratto di Messaggistica usato per inviare e ricevere messaggi dall'altro dominio.
address public messenger;
/***************
@@ -436,7 +436,7 @@ Infine, la funzione che invia un messaggio all'altro livello.
}
```
-In questo caso, non ci interessiamo della rientranza: sappiamo che `getCrossDomainMessenger()` restituisce un indirizzo attendibile, anche se Slither non ha modo di saperlo.
+In questo caso, non ci preoccupiamo della rientranza, sappiamo che `getCrossDomainMessenger()` restituisce un indirizzo affidabile, anche se Slither non ha modo di saperlo.
### Il contratto del ponte di L1 {#the-l1-bridge-contract}
@@ -486,7 +486,7 @@ import { Lib_PredeployAddresses } from "../../libraries/constants/Lib_PredeployA
import { Address } from "@openzeppelin/contracts/utils/Address.sol";
```
-[Utility per indirizzi di OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Address.sol). Serve per distinguere tra gli indirizzi del contratto e quelli appartenenti ai conti posseduti esternamente (EOA).
+[Utility per indirizzi di OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Address.sol). Serve a distinguere tra gli indirizzi del contratto e quelli appartenenti a conti posseduti esternamente (EOA).
Non è una soluzione perfetta, perché non esiste modo di distinguere tra chiamate dirette e chiamate effettuate dal costruttore di un contratto ma, quantomeno, ci consente di identificare ed evitare alcuni errori comuni dell'utente.
@@ -546,7 +546,7 @@ Una doppia [mappatura](https://www.tutorialspoint.com/solidity/solidity_mappings
Per poter aggiornare questo contratto senza dover copiare tutte le variabili in memoria. Per farlo, usiamo un [`Proxy`](https://docs.openzeppelin.com/contracts/3.x/api/proxy), un contratto che usa [`delegatecall`](https://solidity-by-example.org/delegatecall/) per trasferire le chiamate a un contratto distinto, il cui indirizzo è memorizzato dal contratto del proxy (quando aggiorni, dici al proxy di modificare tale indirizzo). Quando usi `delegatecall`, la memoria rimane quella del contratto _chiamante_, quindi non sono influenzati i valori di tutte le variabili di stato del contratto.
-Un effetto di questo schema è che non viene usata la memoria del contratto _chiamato_ di `delegatecall` e, dunque, i valori del costruttore passati a esso non sono rilevanti. Questo è il motivo per cui possiamo fornire un valore senza senso al costruttore di `CrossDomainEnabled`. È anche il motivo per cui l'inizializzazione di seguito è separata dal costruttore.
+Un effetto di questo schema è che l'archiviazione del contratto, ovvero la _chiamata_ di `delegatecall`, non è usata e dunque i valori del costruttore a esso passati non importano. Questo è il motivo per cui possiamo fornire un valore senza senso al costruttore di `CrossDomainEnabled`. È anche il motivo per cui l'inizializzazione di seguito è separata dal costruttore.
```solidity
/******************
@@ -560,7 +560,7 @@ Un effetto di questo schema è che non viene usata la memoria del contratto _chi
// slither-disable-next-line external-function
```
-Questo [test di Slither](https://github.com/crytic/slither/wiki/Detector-Documentation#public-function-that-could-be-declared-external), identifica le funzioni non chiamate dal codice del contratto e che potrebbero dunque esser dichiarate `external` invece che `public`. Il costo del gas delle funzioni `external` può esser inferiore, perché possono ricevere dei parametri nei dati della chiamata. Le funzioni dichiarate come `public` devono esser accessibili dall'interno del contratto. I contratti non possono modificare i propri dati di chiamata, quindi, i parametri devono essere in memoria. Quando una simile funzione è chiamata esternamente, è necessario copiare i dati di chiamata in memoria, e questa operazione costa del gas. In questo caso la funzione è chiamata solo una volta, quindi, non siamo interessati alla sua inefficienza.
+Questo [test di Slither](https://github.com/crytic/slither/wiki/Detector-Documentation#public-function-that-could-be-declared-external), identifica le funzioni non chiamate dal codice del contratto e che potrebbero dunque esser dichiarate `external` invece che `public`. Il costo del gas delle funzioni `external` può essere inferiore, perché possono contenere dei parametri nei dati della chiamata. Le funzioni dichiarate come `public` devono esser accessibili dall'interno del contratto. I contratti non possono modificare i propri dati di chiamata, quindi, i parametri devono essere in memoria. Quando una funzione simile è chiamata esternamente, è necessario copiare i dati della chiamata alla memoria, il che costa gas. In questo caso la funzione è chiamata solo una volta, quindi, non siamo interessati alla sua inefficienza.
```solidity
function initialize(address _l1messenger, address _l2TokenBridge) public {
@@ -749,7 +749,7 @@ Queste due funzioni sono wrapper intorno a `_initiateERC20Deposit`, la funzione
) internal {
```
-Questa funzione è simile a `_initiateETHDeposit` di cui sopra, con alcune importanti differenze. La prima differenza è che questa funzione riceve come parametri gli indirizzi del token e l'importo da trasferire. Nel caso di ETH, la chiamata al ponte include già il trasferimento della risorsa al conto del ponte (`msg.value`).
+Questa funzione è simile a `_initiateETHDeposit` di cui sopra, con alcune importanti differenze. La prima differenza è che questa funzione riceve come parametri gli indirizzi del token e l'importo da trasferire. Nel caso degli ETH, la chiamata al ponte include il trasferimento della risorsa al conto del ponte (`msg.value`).
```solidity
// When a deposit is initiated on L1, the L1 Bridge transfers the funds to itself for future
@@ -1269,10 +1269,10 @@ Se un utente ha commesso un errore rilevabile usando l'indirizzo del token L2 er
}
```
-## Conclusione {#conclusion}
+## Conclusioni {#conclusion}
Il ponte standard è il meccanismo più flessibile per i trasferimenti di risorse. Tuttavia, essendo così generico, non è sempre il metodo più facile da usare. Specialmente per i prelievi, gran parte degli utenti preferisce usare [ponti di terze parti](https://www.optimism.io/apps/bridges) che non attendono il periodo di contestazione dell'errore e non richiedono una prova di Merkle per finalizzare il prelievo.
-Questi ponti funzionano tipicamente avendo delle risorse su L1, che forniscono immediatamente a fronte di una piccola commissione (spesso inferiore al costo di gas per un prelievo del ponte standard). Quando il ponte (o le persone che lo gestiscono) prevede di avere poche risorse su L1, trasferisce delle sufficienti risorse da L2. Poiché questi sono prelievi molto grandi, il costo di prelievo è ammortizzato su un grande importo e ha un'incidenza minore.
+Questi ponti funzionano tipicamente avendo delle risorse sul L1, che forniscono immediatamente per una ridotta commissione (spesso inferiore al costo del gas per un prelievo del ponte standard). Quando il ponte (o le persone che lo gestiscono) prevede di avere poche risorse su L1, trasferisce delle sufficienti risorse da L2. Poiché questi sono prelievi molto grandi, il costo di prelievo è ammortizzato su un grande importo e ha un'incidenza minore.
Spero che questo articolo ti abbia aiutato a comprendere meglio come funziona il livello 2 e come scrivere un codice chiaro e sicuro in Solidity.
diff --git a/src/content/translations/it/developers/tutorials/secure-development-workflow/index.md b/src/content/translations/it/developers/tutorials/secure-development-workflow/index.md
index 012f9a1ade1..99fb2c1a6f2 100644
--- a/src/content/translations/it/developers/tutorials/secure-development-workflow/index.md
+++ b/src/content/translations/it/developers/tutorials/secure-development-workflow/index.md
@@ -3,7 +3,7 @@ title: Elenco di controllo di sicurezza per gli smart contract
description: Un flusso di lavoro suggerito per scrivere smart contract sicuri
author: "Trailofbits"
tags:
- - "smart contract"
+ - "smart Contract"
- "sicurezza"
- "Solidity"
skill: intermediate
diff --git a/src/content/translations/it/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md b/src/content/translations/it/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md
index 063872eb19c..fcc1df336fb 100644
--- a/src/content/translations/it/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md
+++ b/src/content/translations/it/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md
@@ -1,6 +1,6 @@
---
title: Inviare transazioni usando Web3
-description: "Questa è una guida per principianti per inviare transazioni di Ethereum usando web3. Ci sono tre fasi principali per inviare una transazione alla blockchain di Ethereum: creare, firmare e trasmettere. Le vedremo tutte e tre."
+description: "Questa è una guida per principianti per inviare transazioni di Ethereum usando Web3. Ci sono tre fasi principali per inviare una transazione alla blockchain di Ethereum: creare, firmare e trasmettere. Le vedremo tutte e tre."
author: "Elan Halpern"
tags:
- "transazioni"
@@ -10,12 +10,12 @@ skill: beginner
lang: it
published: 2020-11-04
source: Documentazione di Alchemy
-sourceUrl: https://docs.alchemy.com/alchemy/introduction/getting-started/sending-txs
+sourceUrl: https://docs.alchemy.com/docs/how-to-send-transactions-on-ethereum
---
-Questa è una guida per principianti per inviare transazioni di Ethereum usando web3. Ci sono tre fasi principali per inviare una transazione alla blockchain di Ethereum: creare, firmare e trasmettere. Le vedremo tutte e tre, sperando di rispondere a tutte le domande che potreste avere! In questo tutorial, useremo [Alchemy](https://www.alchemy.com/) per inviare le nostre transazioni alla catena di Ethereum. Puoi [creare qui un profilo di Alchemy gratuito](https://auth.alchemyapi.io/signup).
+Questa è una guida per principianti per inviare transazioni di Ethereum usando Web3. Esistono tre passaggi principali per poter inviare una transazione alla blockchain di Ethereum: creare, firmare e trasmettere. Le vedremo tutte e tre, sperando di rispondere a tutte le domande che potreste avere! In questo tutorial, useremo [Alchemy](https://www.alchemy.com/) per inviare le nostre transazioni alla catena di Ethereum. Puoi [creare qui un conto gratuito di Alchemy](https://auth.alchemyapi.io/signup).
-**NOTA:** Questa guida riguarda la firma delle transazioni sul _backend_ per la tua app; se desideri integrare la firma delle transazioni sul frontend, dai un'occhiata all'integrazione di [ Web3 con un fornitore del browser](https://docs.alchemy.com/reference/api-overview#with-a-browser-provider).
+**NOTA:** Questa guida è per firmare le tue transazioni sul _backend_ per la tua app. Se desideri integrare la firma delle tue transazioni sul frontend, dai un'occhiata all'integrazione di [Web3 con un fornitore del browser](https://docs.alchemy.com/reference/api-overview#with-a-browser-provider).
## Le nozioni di base {#the-basics}
@@ -29,16 +29,16 @@ Come gran parte degli sviluppatori di blockchain quando iniziano, potresti aver
### 2\. Cos'è un "firmatario"? {#what-is-a-signer}
- I firmatari firmano le transazioni per te usando la tua chiave privata. In questo tutorial useremo [ web3 di Alchemy](https://docs.alchemyapi.io/alchemy/documentation/alchemy-web3) per firmare la nostra transazione, ma puoi anche usare qualsiasi altra libreria di web3.
-- Sul frontend, un buon esempio di un firmatario è [metamask](https://metamask.io/), che firma e invia le transazioni per conto tuo.
+- Sul frontend, un buon esempio di firmatario sarebbe [MetaMask](https://metamask.io/), che firmerà e invierà le transazioni per conto tuo.
### 3\. Perché devo firmare le mie transazioni? {#why-do-i-need-to-sign-my-transactions}
- Ogni utente che desidera inviare una transazione sulla rete di Ethereum deve firmare la transazione (usando la propria chiave privata), per poter convalidare che l'origine della transazione sia quella affermata.
-- È super importante proteggere questa chiave privata, poiché avere accesso a essa concede il pieno controllo sul tuo conto privato, consentendoti (o a chiunque acceda) di eseguire transazioni per conto tuo.
+- È davvero importante proteggere questa chiave privata, poiché avere accesso a essa concede il pieno controllo sul tuo conto privato, consentendoti (o a chiunque acceda) di eseguire transazioni per conto tuo.
### 4\. Come proteggo la mia chiave privata? {#how-do-i-protect-my-private-key}
-- Ci sono molti modi per proteggere la tua chiave privata e usarla per inviare le transazioni. In questo tutorial, useremo un file .env. Tuttavia, potresti anche usare un provider separato che memorizzi le chiavi private, usare un file keystore o altre opzioni.
+- Ci sono molti modi per proteggere la tua chiave privata e usarla per inviare le transazioni. In questo tutorial useremo un file `.env`. Tuttavia, potresti anche usare un provider separato che memorizzi le chiavi private, usare un file keystore o altre opzioni.
### 5\. Qual è la differenza tra `eth_sendTransaction` e `eth_sendRawTransaction`? {#difference-between-send-and-send-raw}
@@ -58,10 +58,10 @@ Questo è ciò che useremo nel nostro tutorial.
Okay, ora che ci siamo tolti alcune di queste domande, passiamo al tutorial. Sentiti libero di fare domande in qualsiasi momento su [Discord](https://discord.gg/gWuC7zB) di Alchemy!
-**NOTA:** Questa guida richiede un profilo di Alchemy, un indirizzo di Ethereum o portafoglio di Metamask, NodeJS e npm installato. Altrimenti, segui questi passaggi:
+**NOTA:** Questa guida richiede un conto di Alchemy, un indirizzo di Ethereum o un portafoglio di Metamask, NodeJS e npm installato. Altrimenti, segui questi passaggi:
-1. [Crea un profilo di Alchemy](https://auth.alchemyapi.io/signup)
-2. [Crea un account di MetaMask](https://metamask.io/) (od ottieni un indirizzo di Ethereum)
+1. [Crea un conto gratuito di Alchemy](https://auth.alchemyapi.io/signup)
+2. [Crea un conto di MetaMask](https://metamask.io/) (od ottieni un indirizzo di Ethereum)
3. [Segui questi passaggi per installare NodeJs e NPM](https://docs.alchemy.com/alchemy/guides/alchemy-for-macs)
## Fasi per inviare la tua transazione {#steps-to-sending-your-transaction}
@@ -93,13 +93,13 @@ npm install @alch/alchemy-web3
### 5\. Installa dotenv {#install-dotenv}
-Useremo un file .env per memorizzare in sicurezza la nostra chiave API e la chiave privata.
+Useremo un file `.env` per memorizzare in sicurezza la nostra chiave API e la chiave privata.
```
npm install dotenv --save
```
-### 6\. Crea il file .env {#create-the-dotenv-file}
+### 6\. Crea il file `.env` {#create-the-dotenv-file}
Crea un file `.env` nella cartella del tuo progetto e aggiungi quanto segue (sostituendo "`your-api-url`" e "`your-private-key`")
@@ -112,12 +112,12 @@ PRIVATE_KEY = "your-private-key"
```
-Non eseguire il commit di .env
! Assicurati di non condividere o esporre mai il tuo file .env
con nessuno, poiché così facendo comprometteresti i tuoi segreti. Se stai usando il controllo di versione, aggiungi il tuo .env
a un file gitignore.
+Non eseguire il commit di .env
! Sei pregato di assicurarti di non condividere o esporre mai il tuo file .env
con nessuno, poiché così facendo comprometteresti i tuoi segreti. Se stai usando il controllo della versione, aggiungi il tuo .env
a un file gitignore.
### 7\. Crea il file `sendTx.js` {#create-sendtx-js}
-Ottimo, ora che abbiamo protetto i nostri dati sensibili in un file .env, iniziamo a programmare. Per il nostro esempio di transazione d'invio, re-invieremo gli ETH al faucet di Rinkeby.
+Ottimo, ora che abbiamo protetto i nostri dati sensibili in un file `.env`, iniziamo a programmare. Per il nostro esempio di transazione d'invio, re-invieremo gli ETH al faucet di Rinkeby.
Crea un file `sendTx.js`, dove configureremo e invieremo la nostra transazione d'esempio e aggiungi a esso le seguenti linee di codice:
@@ -160,8 +160,8 @@ Prima di passare all'esecuzione di questo codice, vediamo alcuni di questi compo
- `nonce`: La specifica nonce è usata per tenere traccia del numero di transazioni inviate dal tuo indirizzo. Ci serve per motivi di sicurezza e per prevenire gli [attacchi di riproduzione](https://docs.alchemyapi.io/resources/blockchain-glossary#account-nonce). Per ottenere il numero di transazioni inviate dal tuo indirizzo, usiamo [getTransactionCount](https://docs.alchemyapi.io/documentation/alchemy-api-reference/json-rpc#eth_gettransactioncount).
- `transaction`: L'oggetto transazione ha alcuni aspetti che dobbiamo specificare
- `to`: Questo è l'indirizzo a cui vogliamo inviare ETH. In questo caso, stiamo re-inviando gli ETH al [faucet di Rinkeby](https://faucet.rinkeby.io/) da cui li abbiamo inizialmente richiesti.
- - `value`: Questo è l'importo che desideriamo inviare, specificato in wei, dove 10^18 wei = 1 ETH
- - `gas`: Ci sono molti modi per determinare la giusta quantità di carburante da includere nella tua transazione. Alchemy ha persino un [webhook dei prezzi del carburante](https://docs.alchemyapi.io/guides/alchemy-notify#address-activity-1) per avvisarti quando il prezzo del carburante scende sotto una certa soglia. Per le transazioni della rete principale, è buona pratica controllare uno stimatore del carburante come [ETH Gas Station](https://ethgasstation.info/) per determinare la giusta quantità di carburante da includere. 21.000 è la quantità minima di carburante che un'operazione su Ethereum userà, quindi per assicurarti che la nostra transazione sarà eseguita, ne mettiamo 30.000.
+ - `value`: Questo è l'importo che desideriamo inviare, specificato in Wei, dove 10^18 Wei = 1 ETH
+ - `gas`: Esistono molti modi per determinare il giusto importo di gas da includere con la tua transazione. Alchemy ha persino un [webhook dei prezzi del gas](https://docs.alchemyapi.io/guides/alchemy-notify#address-activity-1), per notificarti quando il prezzo del gas ricade entro una certa soglia. Per le transazioni della Rete Principale, è buona pratica controllare uno strumento di stima del gas come [ETH Gas Station](https://ethgasstation.info/) per determinare il giusto importo di gas da includere. 21.000 è l'importo minimo di gas che un'operazione su Ethereum adopererà, quindi, per assicurarci che la nostra transazione sarà eseguita, inseriamo qui 30.000.
- `nonce`: vedi sopra la definizione di nonce. Nonce inizia a contare da zero.
- [FACOLATIVO] data: serve per inviare informazioni aggiuntive con il tuo trasferimento, o per chiamare uno smart contract, non serve per i trasferimenti di saldo; guarda la nota più avanti.
- `signedTx`: Per firmare il nostro oggetto di transazione, useremo il metodo `signTransaction` con la nostra `PRIVATE_KEY`
@@ -169,9 +169,9 @@ Prima di passare all'esecuzione di questo codice, vediamo alcuni di questi compo
**Una Nota sui dati** Esistono due tipi principali di transazioni che è possibile inviare su Ethereum.
-- Trasferimento del saldo: Invia eth da un indirizzo a un altro. Non serve nessun campo di dati, ma se vuoi inviare ulteriori informazioni insieme alla tua transazione, puoi inserire queste informazioni nel formato HEX in questo campo.
- - Ad esempio, ipotizziamo di voler scrivere l'hash di un documento IPFS nella catena di Ethereum per potergli conferire un indicatore data/ora immutabile. Il nostro campo di dati dovrebbe quindi somigliare ai dati: web3.utils.toHex(‘IPFS hash‘). Ora tutti possono interrogare la catena e vedere quando quel documento è stato aggiunto.
-- Transazione relativa a uno smart contract: esegue il codice di qualche smart contract sulla catena. In questo caso, il campo di dati dovrebbe contenere la funzione intelligente che vorresti eseguire, insieme a eventuali parametri.
+- Trasferimento del saldo: Invia ETH da un indirizzo a un altro. Non serve nessun campo di dati, ma se vuoi inviare ulteriori informazioni insieme alla tua transazione, puoi inserire queste informazioni nel formato HEX in questo campo.
+ - Ad esempio, ipotizziamo di voler scrivere l'hash di un documento IPFS alla catena di Ethereum per dargli una marca oraria immutabile. Il campo dei nostri dati dovrebbe somigliare ai dati: `web3.utils.toHex(‘IPFS hash‘)`. Ora tutti possono interrogare la catena e vedere quando quel documento è stato aggiunto.
+- Transazione del contratto intelligente: Esegui il codice di qualche contratto intelligente sulla catena. In questo caso, il campo di dati dovrebbe contenere la funzione intelligente che vorresti eseguire, insieme a eventuali parametri.
- Per un esempio pratico, dai un'occhiata alla Fase 8 in questo [Tutorial Hello World](https://docs.alchemyapi.io/alchemy/tutorials/hello-world-smart-contract#step-8-create-the-transaction).
### 8\. Esegui il codice usando `node sendTx.js` {#run-the-code-using-node-sendtx-js}
diff --git a/src/content/translations/it/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md b/src/content/translations/it/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md
index bec02774bf9..3952b215422 100644
--- a/src/content/translations/it/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md
+++ b/src/content/translations/it/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md
@@ -1,6 +1,6 @@
---
title: Configura web3.js per usare la blockchain di Ethereum in JavaScript
-description: Come usare uno smart contract per interagire con un token utilizzando il linguaggio Solidity
+description: Come usare uno Smart Contract per interagire con un token utilizzando il linguaggio Solidity
author: "jdourlens"
tags:
- "web3.js"
diff --git a/src/content/translations/it/developers/tutorials/short-abi/index.md b/src/content/translations/it/developers/tutorials/short-abi/index.md
new file mode 100644
index 00000000000..1971048ce87
--- /dev/null
+++ b/src/content/translations/it/developers/tutorials/short-abi/index.md
@@ -0,0 +1,552 @@
+---
+title: "ABI brevi per l'ottimizzazione dei calldata"
+description: Ottimizzare gli smart contract per i Rollup ottimistici
+author: Ori Pomerantz
+lang: it
+tags:
+ - "livello 2"
+ - "optimism"
+ - "gas"
+skill: intermediate
+published: 2022-04-01
+---
+
+## Introduzione {#introduction}
+
+In questo articolo conoscerai i [rollup ottimistici](/developers/docs/scaling/optimistic-rollups), il costo delle transazioni su di essi e come tale diversa struttura di costo ci imponga di ottimizzare diversi aspetti rispetto alla Rete principale di Ethereum. Imparerai anche come implementare quest'ottimizzazione.
+
+### Divulgazione completa {#full-disclosure}
+
+Sono un dipendente a tempo pieno di [Optimism](https://www.optimism.io/), quindi gli esempi in questo articolo saranno eseguiti su Optimism. Tuttavia la tecnica qui spiegata dovrebbe funzionare altrettanto bene per altri rollup.
+
+### Terminologia {#terminology}
+
+Parlando di rollup, il termine "livello 1" (L1) è usato per la Rete principale, la rete di produzione di Ethereum. Il termine "livello 2" (L2) è usato per il rollup o qualsiasi altro sistema che si basa sul L1 per la sicurezza ma svolge gran parte della sua elaborazione al di fuori della catena.
+
+## Come possiamo ridurre ulteriormente il costo delle transazioni su L2? {#how-can-we-further-reduce-the-cost-of-L2-transactions}
+
+I [Rollup ottimistici](/developers/docs/scaling/optimistic-rollups) devono conservare un registro di ogni transazione storica, così che chiunque possa consultarlo e verificare che lo stato corrente sia corretto. Il metodo più economico per inserire dati nella Rete principale di Ethereum è scriverli come calldata. Questa soluzione è stata scelta sia da [Optimism](https://help.optimism.io/hc/en-us/articles/4413163242779-What-is-a-rollup-) che da [Arbitrum](https://developer.offchainlabs.com/docs/rollup_basics#intro-to-rollups).
+
+### Costo delle transazioni su L2 {#cost-of-l2-transactions}
+
+Il costo delle transazioni su L2 ha due componenti:
+
+1. Elaborazione su L2, solitamente estremamente economica
+2. Archiviazione sul L1, legata ai costi del gas della Rete Principale
+
+Al momento della scrittura, su Optimism il costo del gas del L2 è 0,001 [Gwei](https://ethereum.org/en/developers/docs/gas/#pre-london). Il costo del gas del L1, d'altra parte, è approssimativamente di 40 gwei. [Puoi visualizzare i prezzi correnti qui](https://public-grafana.optimism.io/d/9hkhMxn7z/public-dashboard?orgId=1&refresh=5m).
+
+Un byte di dati di chiamata costa 4 gas (se è zero) o 16 gas (se ha qualsiasi altro valore). Una delle operazioni più costose sull'EVM è scrivere in memoria. Il costo massimo della scrittura di una parola di 32 byte all'archiviazione sul L2, è di 22.100 gas. Attualmente, ciò equivale a 22,1 gwei. Quindi, se possiamo risparmiare un singolo byte zero di calldata, potremo scrivere circa 200 byte in memoria e ne usciremo comunque bene.
+
+### L'ABI {#the-abi}
+
+La stragrande maggioranza delle transazioni, accede a un contratto da un conto posseduto esternamente. Gran parte dei contratti è scritta in Solidity e interpreta il proprio campo dei dati secondo [l'interfaccia binaria dell'applicazione (Application Binary Interface – ABI)](https://docs.soliditylang.org/en/latest/abi-spec.html#formal-specification-of-the-encoding).
+
+Tuttavia, l'ABI è stata progettata per il L1, dove un byte di calldata costa approssimativamente quanto quattro operazioni aritmetiche, non per il L2 dove un byte di calldata costa più di un migliaio di operazioni aritmetiche. Ad esempio, [ecco una transazione di trasferimento ERC-20](https://kovan-optimistic.etherscan.io/tx/0x7ce4c144ebfce157b4de99d8ad53a352ae91b57b3fa06d8a1c79439df6bfa998). I calldata sono divisi come segue:
+
+| Sezione | Lunghezza | Byte | Byte sprecati | Gas sprecato | Byte necessari | Gas necessario |
+| ------------------------- | --------: | ----: | ------------: | -----------: | -------------: | -------------: |
+| Selettore della funzione | 4 | 0-3 | 3 | 48 | 1 | 16 |
+| Zeri | 12 | 4-15 | 12 | 48 | 0 | 0 |
+| Indirizzo di destinazione | 20 | 16-35 | 0 | 0 | 20 | 320 |
+| Importo | 32 | 36-67 | 17 | 64 | 15 | 240 |
+| Totale | 68 | | | 160 | | 576 |
+
+Spiegazione:
+
+- **Selettore della funzione**: il contratto ha meno di 256 funzioni, quindi, possiamo distinguerle con un solo byte. Questi byte sono tipicamente diversi da zero e, dunque, [costano sedici gas](https://eips.ethereum.org/EIPS/eip-2028).
+- **Zeri**: questi byte sono sempre zero perché un indirizzo di venti byte non richiede una parola di trentadue byte. I byte contenenti zero costano quattro gas ([vedi lo yellowpaper](https://ethereum.github.io/yellowpaper/paper.pdf), Appendice G, p. 27, il valore per `G``txdatazero`).
+- **Importo**: se supponiamo che in questo contratto, `decimals` sia diciotto (il valore normale) e l'importo massimo di token che trasferiamo sarà 1018, otteniamo un importo massimo di 1036. 25615 > 1036, quindi quindici byte sono sufficienti.
+
+Uno spreco di 160 gas sul L1 è di norma trascurabile. Una transazione costa almeno [21.000 gas](https://yakkomajuri.medium.com/blockchain-definition-of-the-week-ethereum-gas-2f976af774ed), quindi un ulteriore 0,8% non conta. Tuttavia, sul L2 le cose sono diverse. Quasi l'intero costo della transazione deriva dalla scrittura sul L1. Oltre ai calldata della transazione, ci sono 109 byte di intestazione della transazione (indirizzo di destinazione, firma, ecc.). Il costo totale è dunque `109*16+576+160=2480`, e ne stiamo sprecando circa il 6,5%.
+
+## Ridurre i costi quando non controlli la destinazione {#reducing-costs-when-you-dont-control-the-destination}
+
+Supponendo di non avere il controllo sul contratto di destinazione, puoi comunque usare una soluzione simile a [questa](https://github.com/qbzzt/ethereum.org-20220330-shortABI). Vediamo i file pertinenti.
+
+### Token.sol {#token.sol}
+
+[Questo è il contratto di destinazione](https://github.com/qbzzt/ethereum.org-20220330-shortABI/blob/master/contracts/Token.sol). È un contratto ERC-20 standard, con una funzionalità aggiuntiva. Questa funzione `faucet` consente a qualsiasi utente di ottenere dei token da usare. Renderebbe inutile una produzione del contratto ERC-20, ma semplifica la vita quando l'ERC-20 esiste solo per facilitare i test.
+
+```solidity
+ /**
+ * @dev Dà al chiamante 1000 token da usare
+ */
+ function faucet() external {
+ _mint(msg.sender, 1000);
+ } // function faucet
+```
+
+[Puoi vedere un esempio di questo contratto distribuito qui](https://kovan-optimistic.etherscan.io/address/0x950c753c0edbde44a74d3793db738a318e9c8ce8).
+
+### CalldataInterpreter.sol {#calldatainterpreter.sol}
+
+[Questo è il contratto che le transazioni dovrebbero chiamare con calldata più brevi](https://github.com/qbzzt/ethereum.org-20220330-shortABI/blob/master/contracts/CalldataInterpreter.sol). Analizziamolo riga per riga.
+
+```solidity
+//SPDX-License-Identifier: Unlicense
+pragma solidity ^0.8.0;
+
+
+import { OrisUselessToken } from "./Token.sol";
+```
+
+Ci serve la funzione del token per sapere come chiamarla.
+
+```solidity
+contract CalldataInterpreter {
+
+ OrisUselessToken public immutable token;
+```
+
+L'indirizzo del token per cui siamo un proxy.
+
+```solidity
+
+ /**
+ * @dev Specifica l'indirizzo del token
+ * @param tokenAddr_ Indirizzo del contratto ERC-20
+ */
+ constructor(
+ address tokenAddr_
+ ) {
+ token = OrisUselessToken(tokenAddr_);
+ } // constructor
+```
+
+L'indirizzo del token è l'unico parametro che dobbiamo specificare.
+
+```solidity
+ function calldataVal(uint startByte, uint length)
+ private pure returns (uint) {
+```
+
+Leggi un valore dai calldata.
+
+```solidity
+ uint _retVal;
+
+ require(length < 0x21,
+ "calldataVal il limite di lunghezza è 32 byte");
+
+ require(length + startByte <= msg.data.length,
+ "calldataVal sta provando a leggere oltre calldatasize");
+```
+
+Caricheremo in memoria un'unica parola da 32 byte (256 bit) e rimuoveremo i byte che non fanno parte del campo che vogliamo. Questo algoritmo non funziona per valori più lunghi di 32 byte e, ovviamente, non possiamo leggere oltre il termine dei calldata. Sul L1, potrebbe esser necessario saltare questi test per risparmiare sul gas, ma sul L2, il gas è estremamente economico, consentendo qualsiasi controllo d'integrità immaginabile.
+
+```solidity
+ assembly {
+ _retVal := calldataload(startByte)
+ }
+```
+
+Potremmo aver copiato i dati dalla chiamata a `fallback()` (vedi sotto), ma è più facile usare [Yul](https://docs.soliditylang.org/en/v0.8.12/yul.html), il linguaggio assembly dell'EVM.
+
+Qui usiamo [l'opcode CALLDATALOAD](https://www.evm.codes/#35) per leggere i byte da `startByte` a `startByte+31` nello stack. In generale, la sintassi di un opcode su Yul è `(,...)`.
+
+```solidity
+
+ _retVal = _retVal >> (256-length*8);
+```
+
+Solo i byte `length` più significativi fanno parte del campo, quindi effettuiamo uno [spostamento a destra](https://en.wikipedia.org/wiki/Logical_shift) per liberarci degli altri valori. Questo ha il vantaggio aggiuntivo di spostare il valore a destra del campo, quindi è il valore stesso invece del valore moltiplicato per 256qualcosa.
+
+```solidity
+
+ return _retVal;
+ }
+
+
+ fallback() external {
+```
+
+Quando una chiamata a un contratto in Solidity non corrisponde ad alcuna delle firme della funzione, chiama [la funzione `fallback()`](https://docs.soliditylang.org/en/v0.8.12/contracts.html#fallback-function) (supponendo che ne esista una). Nel caso di `CalldataInterpreter`, _qualsiasi_ chiamata arriva qui perché non vi sono altre funzioni `external` o `public`.
+
+```solidity
+ uint _func;
+
+ _func = calldataVal(0, 1);
+```
+
+Leggi il primo byte dei calldata, che ci dice la funzione. Ci sono due motivi per cui una funzione potrebbe non essere disponibile qui:
+
+1. Le funzioni che sono `pure` o `view` non cambiano lo stato e non costano gas (quando chiamate al di fuori della catena). Non ha senso provare a ridurne il loro costo del gas.
+2. Le funzioni che si affidano a [`msg.sender`](https://docs.soliditylang.org/en/v0.8.12/units-and-global-variables.html#block-and-transaction-properties). Il valore del `msg.sender` sarà l'indirizzo `CalldataInterpreter`, non il chiamante.
+
+Sfortunatamente, [guardando alle specifiche dell'ERC-20](https://eips.ethereum.org/EIPS/eip-20), questo lascia solo una funzione: `transfer`. Questo ci lascia con solo due funzioni: `transfer` (perché possiamo chiamare `transferFrom`) e `faucet` (perché possiamo ritrasferire i token a chiunque ci abbia chiamati).
+
+```solidity
+
+ // Chiama i metodi di modifica dello stato del token usando
+ // informazioni dal calldata
+
+ // faucet
+ if (_func == 1) {
+```
+
+Una chiamata a `faucet()`, priva di parametri.
+
+```solidity
+ token.faucet();
+ token.transfer(msg.sender,
+ token.balanceOf(address(this)));
+ }
+```
+
+Dopo aver chiamato `token.faucet()` otteniamo i token. Tuttavia, come contratto proxy, non **necessitiamo** di token. L'EOA (conto posseduto esternamente) o il contratto che ci ha chiamati, sì. Quindi trasferiamo tutti i nostri token a chiunque ci abbia chiamati.
+
+```solidity
+ // transfer (suppone un'identità per esso)
+ if (_func == 2) {
+```
+
+Il trasferimento dei token richiede due parametri: l'indirizzo di destinazione e l'importo.
+
+```solidity
+ token.transferFrom(
+ msg.sender,
+```
+
+Consentiamo solo ai chiamanti di trasferire i token che possiedono
+
+```solidity
+ address(uint160(calldataVal(1, 20))),
+```
+
+L'indirizzo di destinazione inizia al byte #1 (il byte #0 è la funzione). Come indirizzo, è lungo 20 byte.
+
+```solidity
+ calldataVal(21, 2)
+```
+
+Per questo contratto specifico supponiamo che il numero massimo di token che chiunque voglia trasferire entri in due byte (meno di 65536).
+
+```solidity
+ );
+ }
+```
+
+In generale, un trasferimento richiede 35 byte di calldata:
+
+| Sezione | Lunghezza | Byte |
+| ------------------------- | --------: | ----: |
+| Selettore della funzione | 1 | 0 |
+| Indirizzo di destinazione | 32 | 1-32 |
+| Importo | 2 | 33-34 |
+
+```solidity
+ } // fallback
+
+} // contract CalldataInterpreter
+```
+
+### test.js {#test.js}
+
+[Questo test unitario di JavaScript](https://github.com/qbzzt/ethereum.org-20220330-shortABI/blob/master/test/test.js) ci mostra come usare questo meccanismo (e come verificare che funzioni correttamente). Partirò dal presupposto che tu comprenda [chai](https://www.chaijs.com/) ed [ether](https://docs.ethers.io/v5/) e spiegherò solo le parti che si applicano nello specifico al contratto.
+
+```js
+const { expect } = require("chai");
+
+describe("CalldataInterpreter", function () {
+ it("Should let us use tokens", async function () {
+ const Token = await ethers.getContractFactory("OrisUselessToken")
+ const token = await Token.deploy()
+ await token.deployed()
+ console.log("Token addr:", token.address)
+
+ const Cdi = await ethers.getContractFactory("CalldataInterpreter")
+ const cdi = await Cdi.deploy(token.address)
+ await cdi.deployed()
+ console.log("CalldataInterpreter addr:", cdi.address)
+
+ const signer = await ethers.getSigner()
+```
+
+Iniziamo distribuendo entrambi i contratti.
+
+```javascript
+ // Ottiene token da usare
+ const faucetTx = {
+```
+
+Non possiamo usare le funzioni di alto livello che useremmo normalmente (come `token.faucet()`) per creare le transazioni, perché non seguiamo l'ABI. Invece, dobbiamo costruire noi stessi la transazione e poi inviarla.
+
+```javascript
+ to: cdi.address,
+ data: "0x01"
+```
+
+Ci sono due parametri che dobbiamo fornire per la transazione:
+
+1. `to`, l'indirizzo di destinazione. Questo è il contratto dell'interprete dei calldata.
+2. `data`, i calldata da inviare. Nel caso di una chiamata al faucet, i dati sono in un singolo byte, `0x01`.
+
+```javascript
+
+ }
+ await (await signer.sendTransaction(faucetTx)).wait()
+```
+
+Chiamiamo [il metodo `sendTransaction` del firmatario](https://docs.ethers.io/v5/api/signer/#Signer-sendTransaction) perché abbiamo già specificato la destinazione (`faucetTx.to`) e ci serve che la transazione sia firmata.
+
+```javascript
+// Controlla che il faucet fornisca correttamente i token
+expect(await token.balanceOf(signer.address)).to.equal(1000)
+```
+
+Qui verifichiamo il saldo. Non serve risparmiare gas sulle funzioni `view`, quindi le eseguiamo normalmente.
+
+```javascript
+// Dà un'indennità al CDI (impossibile proxare le approvazioni)
+const approveTX = await token.approve(cdi.address, 10000)
+await approveTX.wait()
+expect(await token.allowance(signer.address, cdi.address)).to.equal(10000)
+```
+
+Dà all'interprete dei calldata un'indennità per poter effettuare trasferimenti.
+
+```javascript
+// Trasferisce i token
+const destAddr = "0xf5a6ead936fb47f342bb63e676479bddf26ebe1d"
+const transferTx = {
+ to: cdi.address,
+ data: "0x02" + destAddr.slice(2, 42) + "0100",
+}
+```
+
+Crea una transazione di trasferimento. Il primo byte è "0x02", seguito dall'indirizzo di destinazione e infine dall'importo (0x0100, ovvero 256 in decimale).
+
+```javascript
+ await (await signer.sendTransaction(transferTx)).wait()
+
+ // Verifichiamo che abbiamo 256 token in meno
+ expect (await token.balanceOf(signer.address)).to.equal(1000-256)
+
+ // E che la nostra destinazione li ha ricevuti
+ expect (await token.balanceOf(destAddr)).to.equal(256)
+ }) // it
+}) // describe
+```
+
+### Esempio {#example}
+
+Se desideri vedere questi file in azione senza eseguirli tu stesso, segui questi link:
+
+1. [Distribuzione di`OrisUselessToken`](https://kovan-optimistic.etherscan.io/tx/1410744) all'[indirizzo `0x950c753c0edbde44a74d3793db738a318e9c8ce8`](https://kovan-optimistic.etherscan.io/address/0x950c753c0edbde44a74d3793db738a318e9c8ce8).
+2. [Distribuzione di `CalldataInterpreter`](https://kovan-optimistic.etherscan.io/tx/1410745) all'[indirizzo `0x16617fea670aefe3b9051096c0eb4aeb4b3a5f55`](https://kovan-optimistic.etherscan.io/address/0x16617fea670aefe3b9051096c0eb4aeb4b3a5f55).
+3. [Chiamata a `faucet()`](https://kovan-optimistic.etherscan.io/tx/1410746).
+4. [Chiamata a `OrisUselessToken.approve()`](https://kovan-optimistic.etherscan.io/tx/1410747). Questa chiamata deve andare direttamente al contratto del token, poiché l'elaborazione si affida al `msg.sender`.
+5. [Chiamata a `transfer()`](https://kovan-optimistic.etherscan.io/tx/1410748).
+
+## Ridurre il costo quando hai il controllo del contratto di destinazione {#reducing-the-cost-when-you-do-control-the-destination-contract}
+
+Se hai il controllo sul contratto di destinazione, puoi creare funzioni che bypassano i controlli `msg.sender` poiché si fidano dell'interprete dei calldata. [Puoi vedere un esempio di come funziona qui, nel ramo `control-contract`](https://github.com/qbzzt/ethereum.org-20220330-shortABI/tree/control-contract).
+
+Se il contratto rispondesse solo alle transazioni esterne, potremmo riuscirsi con un solo contratto. Tuttavia, questo spezzerebbe la [componibilità](/developers/docs/smart-contracts/composability/). È molto meglio avere un contratto che risponda alle normali chiamate ERC-20 e un altro che risponda alle transazioni con dati della chiamata brevi.
+
+### Token.sol {#token.sol-2}
+
+In questo esempio, possiamo modificare `Token.sol`. Questo ci permette di avere un numero di funzioni che solo il proxy può chiamare. Ecco le nuove parti:
+
+```solidity
+ // Il solo indirizzo che può specificare l'indirizzo di CalldataInterpreter
+ address owner;
+
+ // L'indirizzo di CalldataInterpreter
+ address proxy = address(0);
+```
+
+Il contratto ERC-20 deve conoscere l'identità del proxy autorizzato. Tuttavia, non possiamo impostare questa variabile nel costruttore, perché non conosciamo ancora il valore. Questo contratto è stato istanziato subito poiché il proxy si aspetta che l'indirizzo del token sia nel suo costruttore.
+
+```solidity
+ /**
+ * @dev Chiama il costruttore dell'ERC-20.
+ */
+ constructor(
+ ) ERC20("Oris useless token-2", "OUT-2") {
+ owner = msg.sender;
+ }
+```
+
+L'indirizzo del creatore (chiamato `owner`) è memorizzato qui perché è l'unico indirizzo autorizzato a impostare il proxy.
+
+```solidity
+ /**
+ * @dev imposta l'indirizzo per il proxy (il CalldataInterpreter).
+ * Può esser chiamata solo dal proprietario
+ */
+ function setProxy(address _proxy) external {
+ require(msg.sender == owner, "Può esser chiamata solo dal proprietario");
+ require(proxy == address(0), "Proxy già impostato");
+
+ proxy = _proxy;
+ } // function setProxy
+```
+
+Il proxy ha accesso privilegiato, perché può bypassare i controlli di sicurezza. Per essere certi di poterci fidare del proxy, l'unico che può chiamare questa funzione è l'`owner`, e solo una volta. Una volta che `proxy` ha un valore reale (non zero), quel valore non può cambiare, quindi anche se il proprietario diventa malevolo, o la sua mnemonica viene rivelata, siamo comunque al sicuro.
+
+```solidity
+ /**
+ * @dev Alcune funzioni possono esser chiamate solo dal proxy.
+ */
+ modifier onlyProxy {
+```
+
+Questa è una [funzione `modifier`](https://www.tutorialspoint.com/solidity/solidity_function_modifiers.htm), ossia modifica come funzionano le altre funzioni.
+
+```solidity
+ require(msg.sender == proxy);
+```
+
+In primo luogo, verifica che siamo stati chiamati dal proxy e da nessun altro. Altrimenti, `revert`.
+
+```solidity
+ _;
+ }
+```
+
+Se è così, esegui la funzione che modifichiamo.
+
+```solidity
+ /* Funzioni che consentono al proxy di fare effettivamente il proxy per i conti */
+
+ function transferProxy(address from, address to, uint256 amount)
+ public virtual onlyProxy() returns (bool)
+ {
+ _transfer(from, to, amount);
+ return true;
+ }
+
+ function approveProxy(address from, address spender, uint256 amount)
+ public virtual onlyProxy() returns (bool)
+ {
+ _approve(from, spender, amount);
+ return true;
+ }
+
+ function transferFromProxy(
+ address spender,
+ address from,
+ address to,
+ uint256 amount
+ ) public virtual onlyProxy() returns (bool)
+ {
+ _spendAllowance(from, spender, amount);
+ _transfer(from, to, amount);
+ return true;
+ }
+```
+
+Queste sono tre operazioni che normalmente richiedono che il messaggio provenga direttamente dall'entità che sta trasferendo token o approvando un'indennità. Qui abbiamo una versione del proxy di queste operazioni che:
+
+1. È modificata da `onlyProxy()`, così che nessun altro possa controllarla.
+2. Ottiene l'indirizzo che sarebbe normalmente `msg.sender` come un parametro aggiuntivo.
+
+### CalldataInterpreter.sol {#calldatainterpreter.sol-2}
+
+L'interprete dei dati della chiamata è praticamente identico a quello precedente, tranne che le funzioni in proxy ricevono un parametro `msg.sender` e non è necessaria un'indennità per `transfer`.
+
+```solidity
+ // transfer (indennità non necessaria)
+ if (_func == 2) {
+ token.transferProxy(
+ msg.sender,
+ address(uint160(calldataVal(1, 20))),
+ calldataVal(21, 2)
+ );
+ }
+
+ // approve
+ if (_func == 3) {
+ token.approveProxy(
+ msg.sender,
+ address(uint160(calldataVal(1, 20))),
+ calldataVal(21, 2)
+ );
+ }
+
+ // transferFrom
+ if (_func == 4) {
+ token.transferFromProxy(
+ msg.sender,
+ address(uint160(calldataVal( 1, 20))),
+ address(uint160(calldataVal(21, 20))),
+ calldataVal(41, 2)
+ );
+ }
+```
+
+### Test.js {#test.js-2}
+
+Ci sono alcune modifiche tra il codice di test precedente e questo.
+
+```js
+const Cdi = await ethers.getContractFactory("CalldataInterpreter")
+const cdi = await Cdi.deploy(token.address)
+await cdi.deployed()
+await token.setProxy(cdi.address)
+```
+
+Dobbiamo dire al contratto ERC-20 di quale proxy fidarsi
+
+```js
+console.log("CalldataInterpreter addr:", cdi.address)
+
+// Servono due firmatari per verificare le indennità
+const signers = await ethers.getSigners()
+const signer = signers[0]
+const poorSigner = signers[1]
+```
+
+Per verificare `approve()` e `transferFrom()`, ci serve un secondo firmatario. Lo chiamiamo `poorSigner` perché non riceve nessuno dei nostri token (deve avere degli ETH, ovviamente).
+
+```js
+// Trasferisci i token
+const destAddr = "0xf5a6ead936fb47f342bb63e676479bddf26ebe1d"
+const transferTx = {
+ to: cdi.address,
+ data: "0x02" + destAddr.slice(2, 42) + "0100",
+}
+await (await signer.sendTransaction(transferTx)).wait()
+```
+
+Poiché il contratto ERC-20 si fida del proxy (`cdi`), non ci serve un'indennità per inoltrare i trasferimenti.
+
+```js
+// approval e transferFrom
+const approveTx = {
+ to: cdi.address,
+ data: "0x03" + poorSigner.address.slice(2, 42) + "00FF",
+}
+await (await signer.sendTransaction(approveTx)).wait()
+
+const destAddr2 = "0xE1165C689C0c3e9642cA7606F5287e708d846206"
+
+const transferFromTx = {
+ to: cdi.address,
+ data: "0x04" + signer.address.slice(2, 42) + destAddr2.slice(2, 42) + "00FF",
+}
+await (await poorSigner.sendTransaction(transferFromTx)).wait()
+
+// Verifica che la combo approve / transeferFrom sia stata eseguita correttamente
+expect(await token.balanceOf(destAddr2)).to.equal(255)
+```
+
+Testa le due nuove funzioni. Nota che `transeferFromTx` richiede due parametri dell'indirizzo: l'autore dell'indennità e il destinatario.
+
+### Esempio {#example-2}
+
+Se desideri vedere questi file in azione senza eseguirli tu stesso, segui questi link:
+
+1. [Distribuzione di `OrisUselessToken-2`](https://kovan-optimistic.etherscan.io/tx/1475397) all'indirizzo [`0xb47c1f550d8af70b339970c673bbdb2594011696`](https://kovan-optimistic.etherscan.io/address/0xb47c1f550d8af70b339970c673bbdb2594011696).
+2. [Distribuzione di `CalldataInterpreter`](https://kovan-optimistic.etherscan.io/tx/1475400) all'indirizzo [`0x0dccfd03e3aaba2f8c4ea4008487fd0380815892`](https://kovan-optimistic.etherscan.io/address/0x0dccfd03e3aaba2f8c4ea4008487fd0380815892).
+3. [Chiamata a `setProxy()`](https://kovan-optimistic.etherscan.io/tx/1475402).
+4. [Chiamata a `faucet()`](https://kovan-optimistic.etherscan.io/tx/1475409).
+5. [Chiamata a `transferProxy()`](https://kovan-optimistic.etherscan.io/tx/1475416).
+6. [Chiamata a `approveProxy()`](https://kovan-optimistic.etherscan.io/tx/1475419).
+7. [Chiamata a `transferFromProxy()`](https://kovan-optimistic.etherscan.io/tx/1475421). Nota che questa chiamata proviene da un indirizzo diverso dagli altri, `poorSigner` invece di `signer`.
+
+## Conclusione {#conclusion}
+
+Sia [Optimism](https://medium.com/ethereum-optimism/the-road-to-sub-dollar-transactions-part-2-compression-edition-6bb2890e3e92) che [Arbitrum](https://developer.offchainlabs.com/docs/special_features) stanno cercando modi per ridurre le dimensioni dei calldata scritti al L1 e dunque per ridurre il costo delle transazioni. Tuttavia, come fornitori di infrastruttura alla ricerca di soluzioni generiche, le nostre capacità sono limitate. Come sviluppatore di dapp, hai conoscenze specifiche per l'applicazione che ti consentono di ottimizzare i tuoi calldata molto meglio di quanto potremmo fare noi in una soluzione generica. Speriamo che questo articolo ti aiuti a trovare la soluzione ideale per le tue esigenze.
diff --git a/src/content/translations/it/developers/tutorials/smart-contract-security-guidelines/index.md b/src/content/translations/it/developers/tutorials/smart-contract-security-guidelines/index.md
index f93650ba9b1..989363b3238 100644
--- a/src/content/translations/it/developers/tutorials/smart-contract-security-guidelines/index.md
+++ b/src/content/translations/it/developers/tutorials/smart-contract-security-guidelines/index.md
@@ -3,13 +3,13 @@ title: Linee guida di sicurezza per gli Smart Contract
description: Elenco di controllo con le linee guida di sicurezza da tenere presenti per la creazione di una dapp
author: "Trailofbits"
tags:
- - "Solidity"
- - "Smart Contract"
+ - "solidity"
+ - "smart contract"
- "sicurezza"
skill: intermediate
lang: it
published: 2020-09-06
-source: Creare contratti sicuri
+source: Costruire contratti sicuri
sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/development-guidelines/guidelines.md
---
diff --git a/src/content/translations/it/developers/tutorials/solidity-and-truffle-continuous-integration-setup/index.md b/src/content/translations/it/developers/tutorials/solidity-and-truffle-continuous-integration-setup/index.md
index c9d63946d34..586ef126cc1 100644
--- a/src/content/translations/it/developers/tutorials/solidity-and-truffle-continuous-integration-setup/index.md
+++ b/src/content/translations/it/developers/tutorials/solidity-and-truffle-continuous-integration-setup/index.md
@@ -100,7 +100,7 @@ workflows:
## Aggiungere il plugin eth-gas-reporter {#adding-the-eth-gas-reporter-plugin}
-Il plugin eth-gas-reporter è piuttosto utile per tenere traccia dei costi del carburante delle funzioni del tuo smart contract. Averlo nella tua CI sarà inoltre utile per mostrare le differenze quando si aggiungono le richieste di pull.
+Il plugin eth-gas-reporter è piuttosto utile per tenere traccia dei costi del gas delle funzioni del tuo contratto intelligente. Averlo nella tua CI sarà inoltre utile per mostrare le differenze quando si aggiungono le richieste di pull.
### Fase 1: Installa il plugin eth-gas-reporter e i codecheck {#step-1-install-the-eth-gas-reporter-plugin-and-codechecks}
@@ -139,16 +139,16 @@ checks:
- npx codechecks
```
-### Fase 5: Crea un conto Codechecks {#step-5-create-a-codechecks-account}
+### Fase 5: Crea un conto di Codechecks {#step-5-create-a-codechecks-account}
- Crea un conto con [Codechecks](http://codechecks.io/).
- Aggiungi la repo di GitHub.
- Copia il segreto e aggiungi `CC_SECRET=COPIED SECRET` alla tua CI (vedi qui per [Travis](https://docs.travis-ci.com/user/environment-variables/), qui per [CircleCI](https://circleci.com/docs/2.0/env-vars/#setting-an-environment-variable-in-a-project)).
- Ora prosegui e crea una richiesta di pull.
-È tutto. Ora troverai un bel rapporto sulle modifiche ai costi del carburante della tua richiesta di pull.
+È tutto. Ora troverai un bel rapporto sulle modifiche ai costi del gas della tua richiesta di pull.
-![Esempio di rapporti del carburante](./gas-reports.png)
+![Esempio di rapporti del gas](./gas-reports.png)
## Aggiungere il plugin di solidity-coverage {#adding-the-solidity-coverage-plugin}
@@ -182,7 +182,7 @@ Solidity coverage avvia la propria ganache-cli, quindi non dobbiamo preoccuparce
### Fase 4: Aggiungi la repository a coveralls {#step-4-add-repository-to-coveralls}
-- Crea un conto [Coveralls](https://coveralls.io/).
+- Crea un conto con [Coveralls](https://coveralls.io/).
- Aggiungi la repo di GitHub.
- Ora prosegui e crea una richiesta di pull.
diff --git a/src/content/translations/it/developers/tutorials/testing-erc-20-tokens-with-waffle/index.md b/src/content/translations/it/developers/tutorials/testing-erc-20-tokens-with-waffle/index.md
index be152d3aa70..5f1755704c4 100644
--- a/src/content/translations/it/developers/tutorials/testing-erc-20-tokens-with-waffle/index.md
+++ b/src/content/translations/it/developers/tutorials/testing-erc-20-tokens-with-waffle/index.md
@@ -1,10 +1,10 @@
---
title: Testare i token ERC-20 con Waffle
-description: Scopri come testare gli smart contract di Solidity e usare gli abbinatori di smart contract con Waffle.
+description: Scopri come testare i contratti intelligenti di Solidity e usa gli abbinatori di contratti intelligenti con Waffle.
author: Vladislav Starostenko
tags:
- "waffle"
- - "smart contract"
+ - "Smart Contract"
- "Solidity"
- "test"
- "erc-20"
@@ -15,30 +15,30 @@ published: 2020-10-16
In questo tutorial imparerai come:
-- Scrivere test per gli smart contract con Waffle
-- Usare alcuni abbinatori popolari per testare gli smart contract con Waffle
+- Scrivere test per i contratti intelligenti con Waffle
+- Usare alcuni abbinatori popolari per testare i contratti intelligenti con Waffle
Premesse:
-- Sai muoverti in un terminale
-- Sai creare un nuovo progetto `JavaScript`
-- Hai già scritto qualche riga di codice in `Solidity`
-- Hai già scritto qualche test in `JavaScript`
-- Hai già usato `yarn` o `npm`, l'installatore di pacchetti di JavaScript
+- sai muoverti in un terminale,
+- sai creare un nuovo progetto `JavaScript`,
+- hai scritto alcune righe di codice in `Solidity`,
+- hai scritto qualche test in `JavaScript`,
+- hai usato `yarn` o `npm`, installatore di pacchetti di JavaScript.
-Ancora una volta, se alcune di queste premesse non sono vere o se non desideri riprodurre il codice in questo articolo, probabilmente puoi comunque seguirlo senza problemi.
+Ancora, se alcune di queste premesse sono false o non desideri riprodurre il codice in questo articolo, puoi probabilmente seguirlo ancora e senza problemi.
## Qualche parola su Waffle {#a-few-words-about-waffle}
-[Waffle](https://getwaffle.io) è la libreria più avanzata per scrivere e testare gli smart contract.
+[Waffle](https://getwaffle.io) è la libreria più avanzata per scrivere e testare i contratti intelligenti.
-Lavora con ethers-js dell'[API di JavaScript](/developers/docs/apis/javascript/).
+Opera con ethers-js dell'[API di JavaScript](/developers/docs/apis/javascript/).
Puoi leggere maggiori dettagli nella [documentazione di Waffle](https://ethereum-waffle.readthedocs.io/en/latest/#waffle-documentation)!
## Tutorial rapido {#the-quick-tutorial}
-Per prima cosa, crea un nuovo progetto `JavaScript` o `TypeScript` (qui userò `TS`, ma se usi `JS` non è un problema ):
+Per prima cosa, crea un nuovo progetto `JavaScript` o `TypeScript` (Userò `TS`, ma se usi `JS` non è un problema ):
Qualcosa del genere:
@@ -649,7 +649,7 @@ Per iniziare, installa `ethereum-waffle`. In questo tutorial userò `yarn`, quin
yarn add --dev ethereum-waffle
```
-## Fase #2: Scrivi uno smart contract [Link alla documentazione](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-a-contract) {#step-2-write-a-smart-contract}
+## Fase #2: Scrivere un contratto intelligente [Link alla documentazione](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-a-contract) {#step-2-write-a-smart-contract}
In questo tutorial, userò un token [ERC20](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/ded2b0a55c9c13731963ab7b85a70c8e73504bab/contracts/token/ERC20/ERC20.sol) da [OpenZeppelin](https://openzeppelin.com).
@@ -659,7 +659,7 @@ Quindi, aggiungi `OpenZeppelin` installandolo con `yarn`:
yarn add @openzeppelin/contracts -D
```
-A questo punto, crea il contratto `BasicToken.sol` nella cartella `src`:
+Poi, crea il contratto `BasicToken.sol` nella cartella `src`:
```solidity
pragma solidity ^0.6.0;
@@ -675,9 +675,9 @@ contract BasicToken is ERC20 {
```
-## Fase #3: Compila il tuo smart contract [Link alla documentazione](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#compiling-the-contract) {#step-3-compile-your-smart-contract}
+## Fase #3: Compila il tuo contratto intelligente [Link alla documentazione](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#compiling-the-contract) {#step-3-compile-your-smart-contract}
-Per compilare il tuo smart contract, aggiungi la seguente voce nel `package.json` del tuo progetto:
+Per compilare il tuo contratto intelligente, aggiungi la seguente voce nel `package.json` del tuo progetto:
```json
{
@@ -702,7 +702,7 @@ Un esempio della configurazione di `waffle.json`:
Puoi leggere di più sulla configurazione di Waffle [qui](https://ethereum-waffle.readthedocs.io/en/latest/configuration.html#configuration).
-Quindi basta eseguire `yarn build` per compilare il tuo smart contract.
+Poi basta eseguire `yarn build` per compilare il tuo contratto intelligente.
Dovresti vedere che Waffle ha compilato il tuo contratto e posizionato l'output JSON risultante nella cartella `build`.
@@ -1007,13 +1007,13 @@ Dovresti vedere che Waffle ha compilato il tuo contratto e posizionato l'output
-## Fase #4: Testa il tuo smart contract [Link alla documentazione](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests) {#step-4-test-your-smart-contract}
+## Fase #4: Testa il tuo contratto intelligente [Link alla documentazione](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests) {#step-4-test-your-smart-contract}
-### Fase #4.1 Installa le dipendenze necessarie [Link alla documentazione](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests) {#step-4-1}
+### Fase #4.1 Installa le dipendenze necessaria [Link alla documentazione](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests) {#step-4-1}
-Dopo aver autorizzato con successo uno smart contract, possiamo testarlo. Useremo `Waffle` per farlo.
+Dopo aver autorizzato con successo un contratto intelligente, possiamo testarlo. Useremo `Waffle` per farlo.
-I test con `Waffle` sono scritti usando `Mocha` insieme a `Chai`. Possiamo usare un diverso ambiente di test, ma gli abbinatori di `Waffle` funzionano solo con `Chai`.
+I test con `Waffle` sono scritti usando `Mocha` insieme a `Chai`. Possiamo usare un ambiente di test diverso, ma gli abbinatori di `Waffle` funzionano solo con `Chai`.
Quindi, dobbiamo aggiungere `Chai` alle nostre dipendenze:
@@ -1023,7 +1023,7 @@ Quindi, dobbiamo aggiungere `Chai` alle nostre dipendenze:
### Fase #4.2 Crea il file di test [Link alla documentazione](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests) {#step-4-2}
-Per scrivere il test dobbiamo creare il file `BasicToken.test.ts` nella nostra cartella di prova.
+Per scrivere il nostro test dobbiamo creare il file `BasicToken.test.ts` nella nostra cartella di prova.
```ts
import { expect, use } from "chai"
@@ -1043,13 +1043,13 @@ describe("BasicToken", () => {
})
```
-Quindi, usiamo il metodo `deployContract` da `Waffle` per distribuire il nostro token. A livello di argomenti, dovremmo passare `wallet`, il file json compilato del nostro contratto e il saldo predefinito.
+Quindi, usiamo il metodo `deployContract` di `Waffle` per distribuire il nostro token. Come argomenti dovremmo passare `wallet`, il file json compilato del nostro contratto e il saldo predefinito.
-`Waffle` ci consente inoltre di creare un `wallet`, che rende davvero semplice la distribuzione di un contratto.
+`Waffle` ci consente inoltre di creare un `wallet`, il che rende davvero semplice la distribuzione di un contratto.
Puoi leggere di più sul `wallet` [qui](https://ethereum-waffle.readthedocs.io/en/latest/basic-testing.html?highlight=wallet#getting-wallets) e puoi leggere di più sulla funzione di distribuzione [qui](https://ethereum-waffle.readthedocs.io/en/latest/basic-testing.html?highlight=wallet#deploying-contracts).
-Scriviamo un test semplice per controllare il saldo del nostro portafoglio. Poiché abbiamo inviato il valore 1000 durante la distribuzione del nostro contratto, il saldo del portafoglio dev'essere 1000 token, che possiamo verificare nel primo test.
+Scriviamo un test semplice per controllare il saldo del nostro portafoglio. Poiché abbiamo inviato il valore 1000 durante la distribuzione del nostro contratto, il saldo del nostro portafoglio dev'essere 1000 token, che possiamo verificare nel primo test.
```ts
it("Assigns initial balance", async () => {
@@ -1057,13 +1057,13 @@ it("Assigns initial balance", async () => {
})
```
-Per eseguire il test usa `yarn test`
+Per eseguire il test, usa `yarn test`
### Fase #4.3 Emettere eventi [Link alla documentazione](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html?highlight=changeBalance#emitting-events) {#step-4-3}
-In questo tutorial, voglio mostrarti gli abbinatori di `Waffle` più utili. Iniziamo con il primo.
+In questo tutorial, voglio mostrarti gli abbinatori di `Waffle` più utili, iniziamo con il primo.
-`Waffle` ci consente di testare quali eventi sono stati emessi.
+`Waffle` ci consente di testare che eventi sono emessi.
In questo tutorial, testerò il metodo `transfer` del nostro contratto.
@@ -1079,15 +1079,15 @@ it("Transfer emits event", async () => {
Inoltre, un grande vantaggio di questo abbinatore è che possiamo controllare quali argomenti sono stati chiamati da quest'evento aggiungendo `withArgs` al nostro test.
-Questo ci consentirà di esser sicuri che la funzione venga chiamata correttamente!
+Questo ci consentirà di esser sicuri che la nostra funzione stia venendo chiamata correttamente!
### Fase #4.4 Ripristino con il messaggio [Link alla documentazione](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html?highlight=changeBalance#revert-with-message) {#step-4-4}
-`Waffle` ci consente di testare con quale messaggio ha avuto luogo il ripristino.
+`Waffle` ci consente di testare con che messaggio è stato ripristinato.
-Per questa verifica useremo l'abbinatore `revertedWith` nel nostro test.
+Useremo l'abbinatore `revertedWith` nel nostro test per controllarlo.
-Possiamo scrivere un test in cui eseguiremo un trasferimento per un importo maggiore di quello presente nel nostro portafoglio. Dopodiché controlleremo se la transazione è stata invertita con il messaggio corretto!
+Possiamo scrivere un test in cui eseguiremo un trasferimento per un importo maggiore di quanto abbiamo nel nostro portafoglio. E poi controlleremo se la transazione è tornata con il messaggio esatto!
```ts
it("Impossibile trasferire oltre l'importo", async () => {
@@ -1097,13 +1097,13 @@ it("Impossibile trasferire oltre l'importo", async () => {
})
```
-### Fase #4.5 Saldo di cambio del token [Link alla documentazione](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html?highlight=changeBalance#change-balance) {#step-4-5}
+### Fase #4.5 Cambiamento del saldo dei token [Link alla documentazione](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html?highlight=changeBalance#change-balance) {#step-4-5}
`Waffle` ci consente di verificare le modifiche ai saldi dei portafogli!
Possiamo usare l'abbinatore `changeTokenBalance` per controllare il cambiamento del saldo o `changeTokenBalances` per un conto multiplo.
-L'abbinatore può accettare `numbers`, `strings` e `BigNumbers` come cambiamento del saldo, mentre l'indirizzo dovrebbe essere specificato come portafoglio o contratto.
+L'abbinatore può accettare `numbers`, `strings` e `BigNumbers` come cambiamento di un saldo, mentre l'indirizzo dovrebbe esser specificato come un portafoglio o un contratto.
Scriviamo il prossimo test:
@@ -1115,7 +1115,7 @@ it("Invia cambiamenti della transazione del saldo del destinatario", async () =>
})
```
-Quanto sopra è un test per un solo portafoglio.
+Quanto sopra è un test per un singolo portafoglio.
E il successivo per più portafogli:
@@ -1127,12 +1127,12 @@ it("Invia cambiamenti della transazione saldi mittente e destinatario", async ()
})
```
-La transazione dovrebbe passare come callback (dobbiamo controllare il saldo prima della chiamata) o come risposta della transazione.
+La transazione dovrebbe passare come callback (dobbiamo controllare il saldo prima della chiamata) o come una risposta della transazione.
## Congratulazioni {#congratulations}
-**Congratulazioni! Sei arrivato in fondo al tutorial. Hai fatto il tuo primo grande passo verso la verifica degli smart contract con Waffle.**
+**Congratulazioni! Hai concluso il mio tutorial. Hai fatto il tuo primo grande passo verso i contratti intelligenti con Waffle.**
-**Il codice relativo a questo tutorial è disponibile [qui](https://github.com/VladStarostenko/tutorial-for-ethereum-org-website).**
+**Il codice da questo tutorial si può trovare [qui](https://github.com/VladStarostenko/tutorial-for-ethereum-org-website).**
-**Altra documentazione su `Waffle` disponibile [qui](https://getwaffle.io).**
+**Altra documentazione su `Waffle` è disponibile [qui](https://getwaffle.io).**
diff --git a/src/content/translations/it/developers/tutorials/testing-smart-contract-with-waffle/index.md b/src/content/translations/it/developers/tutorials/testing-smart-contract-with-waffle/index.md
index 1e22e3d8c8a..191ec42be65 100644
--- a/src/content/translations/it/developers/tutorials/testing-smart-contract-with-waffle/index.md
+++ b/src/content/translations/it/developers/tutorials/testing-smart-contract-with-waffle/index.md
@@ -4,7 +4,7 @@ description: Scopri come testare gli smart contract di Solidity e usare gli abbi
author: Vladislav Starostenko
tags:
- "waffle"
- - "Smart Contract"
+ - "smart contract"
- "Solidity"
- "test"
- "erc-20"
@@ -1011,7 +1011,7 @@ Dovresti vedere che Waffle ha compilato il tuo contratto e posizionato l'output
### Fase #4.1 Installa le dipendenze necessarie [Link alla documentazione](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests) {#step-4-1}
-Dopo aver autorizzato con successo un contratto intelligente, possiamo testarlo. Useremo `Waffle` per farlo.
+Dopo aver autorizzato con successo uno smart contract, possiamo testarlo. Useremo `Waffle` per farlo.
I test con `Waffle` sono scritti usando `Mocha` insieme a `Chai`. Possiamo usare un ambiente di test diverso, ma gli abbinatori di `Waffle` funzionano solo con `Chai`.
@@ -1023,7 +1023,7 @@ Quindi, dobbiamo aggiungere `Chai` alle nostre dipendenze:
### Fase #4.2 Crea il file di test [Link alla documentazione](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests) {#step-4-2}
-Per scrivere il nostro test dobbiamo creare il file `BasicToken.test.ts` nella nostra cartella di prova.
+Per scrivere il test dobbiamo creare il file `BasicToken.test.ts` nella nostra cartella di prova.
```ts
import { expect, use } from "chai"
@@ -1049,7 +1049,7 @@ Quindi, usiamo il metodo `deployContract` di `Waffle` per distribuire il nostro
Puoi leggere di più sul `wallet` [qui](https://ethereum-waffle.readthedocs.io/en/latest/basic-testing.html?highlight=wallet#getting-wallets) e puoi leggere di più sulla funzione di distribuzione [qui](https://ethereum-waffle.readthedocs.io/en/latest/basic-testing.html?highlight=wallet#deploying-contracts).
-Scriviamo un test semplice per controllare il saldo del nostro portafoglio. Poiché abbiamo inviato il valore 1000 durante la distribuzione del nostro contratto, il saldo del nostro portafoglio dev'essere 1000 token, che possiamo verificare nel primo test.
+Scriviamo un test semplice per controllare il saldo del nostro portafoglio. Poiché abbiamo inviato il valore 1000 durante la distribuzione del nostro contratto, il saldo del portafoglio dev'essere 1000 token, che possiamo verificare nel primo test.
```ts
it("Assigns initial balance", async () => {
diff --git a/src/content/translations/it/developers/tutorials/token-integration-checklist/index.md b/src/content/translations/it/developers/tutorials/token-integration-checklist/index.md
index 1fd3c3f6786..c18e3951480 100644
--- a/src/content/translations/it/developers/tutorials/token-integration-checklist/index.md
+++ b/src/content/translations/it/developers/tutorials/token-integration-checklist/index.md
@@ -5,7 +5,7 @@ author: "Trailofbits"
lang: it
tags:
- "Solidity"
- - "Smart Contract"
+ - "smart contract"
- "sicurezza"
- "token"
skill: intermediate
@@ -56,7 +56,7 @@ Slither include una utility, [slither.prop](https://github.com/crytic/slither/wi
Infine, ci sono alcune caratteristiche che sono difficili da identificare automaticamente. Riesamina manualmente queste condizioni:
- **Transfer e transferFrom non devono richiedere commissioni.** I token deflazionistici possono condurre a comportamenti imprevisti.
-- **Vengono presi in considerazione gli interessi potenziali guadagnati dal token.** Alcuni token distribuiscono interessi ai possessori di token. Questo interesse potrebbe rimanere intrappolato nel contratto se non preso in considerazione.
+- **I potenziali interessi guadagnati dal token sono considerati.** Alcuni token distribuiscono interessi ai possessori di token. Questo interesse potrebbe rimanere intrappolato nel contratto se non preso in considerazione.
## Composizione del contratto {#contract-composition}
diff --git a/src/content/translations/it/developers/tutorials/using-websockets/index.md b/src/content/translations/it/developers/tutorials/using-websockets/index.md
index 7a263281294..193c56d5cc0 100644
--- a/src/content/translations/it/developers/tutorials/using-websockets/index.md
+++ b/src/content/translations/it/developers/tutorials/using-websockets/index.md
@@ -24,13 +24,13 @@ A differenza di HTTP, con i WebSocket non serve fare continuamente richieste qua
Come avviene con ogni connessione di rete, non presupporre che un WebSocket rimanga aperto per sempre senza interruzioni; gestire correttamente a mano la caduta di connessione e la riconnessione può essere complicato. Un altro lato negativo dei WebSocket è che non si ottengono codici di stato HTTP come risposta ma solo il messaggio di errore.
-[Alchemy Web3](https://docs.alchemy.com/reference/api-overview) aggiunge automaticamente la gestione degli errori WebSocket e i nuovi tentativi senza necessità di configurazione.
+[Alchemy Web3](https://docs.alchemy.com/reference/api-overview) aggiunge automaticamente la gestione degli errori di WebSocket e i nuovi tentativi senza necessità di configurazione alcuna.
## Facciamo una prova {#try-it-out}
Il modo più facile per testare i WebSocket è installare uno strumento da riga di comando per eseguire richieste WebSocket come [wscat](https://github.com/websockets/wscat). Usando wscat, è possibile inviare richieste come di seguito:
-_Nota: se hai un account Alchemy, puoi sostituire `demo` con la tua chiave API. [Registrati qui per avere un account Alchemy gratuito!](https://auth.alchemyapi.io/signup)_
+_Nota: se hai un conto di Alchemy, puoi sostituire `demo` con la tua chiave API. [Registrati qui per avere un conto gratuito di Alchemy!](https://auth.alchemyapi.io/signup)_
```
$ wscat -c wss://eth-mainnet.ws.alchemyapi.io/ws/demo
@@ -142,13 +142,11 @@ Esempio:
"method": "eth_subscription",
"params": {
"result": {
- "difficulty": "0x15d9223a23aa",
"extraData": "0xd983010305844765746887676f312e342e328777696e646f7773",
"gasLimit": "0x47e7c4",
"gasUsed": "0x38658",
"logsBloom":
"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
- "miner": "0xf8b483dba2c3b7176a3da549ad41a48bb3121069",
"nonce": "0x084149998194cc5f",
"number": "0x1348c9",
"parentHash": "0x7736fab79e05dc611604d22470dadad26f56fe494421b5b333de816ce1f25701",
@@ -250,4 +248,4 @@ curl https://eth-mainnet.alchemyapi.io/v2/your-api-key
---
-[Registrati ad Alchemy](https://auth.alchemyapi.io/signup) gratis, dai un'occhiata alla [nostra documentazione](https://docs.alchemyapi.io/) e, per le ultime novità, seguici su [Twitter](https://twitter.com/AlchemyPlatform).
+[Registrati con Alchemy](https://auth.alchemyapi.io/signup) gratuitamente, dai un'occhiata alla [nostra documentazione](https://docs.alchemyapi.io/) e, per le notizie più recenti, seguici su [Twitter](https://twitter.com/AlchemyPlatform).
diff --git a/src/content/translations/it/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md b/src/content/translations/it/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
index f8cb28953b5..00470c4258b 100644
--- a/src/content/translations/it/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
+++ b/src/content/translations/it/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
@@ -1,10 +1,10 @@
---
title: "Waffle: simulazioni dinamiche e test delle chiamate del contratto"
-description: Tutorial avanzato su Waffle per usare la simulazione dinamica e testare le chiamate del contratto
+description: Tutorial avanzato su Waffle per usare la simulazione dinamica e testare le chiamate di contratto
author: "Daniel Izdebski"
tags:
- "waffle"
- - "Smart Contract"
+ - "smart contract"
- "Solidity"
- "test"
- "simulazione"
@@ -13,22 +13,22 @@ lang: it
published: 2020-11-14
---
-## Di cosa tratta questo tutorial? {#what-is-this-tutorial-about}
+## A cosa serve questo tutorial? {#what-is-this-tutorial-about}
In questo tutorial imparerai come:
- usare la simulazione dinamica
-- testare le interazioni tra smart contract
+- testare interazioni tra Smart Contract
Premesse:
-- Sai già come scrivere un semplice smart contract in `Solidity`
-- Sai già utilizzare `JavaScript` e `TypeScript`
-- Hai già seguito altri tutorial di `Waffle<` o ne sai già qualcosa
+- sai già come scrivere un semplice Smart Contract in `Solidity`
+- sai utilizzare `JavaScript` e `TypeScript`
+- hai seguito altri tutorial di `Waffle<` o ne sai già qualcosa
## Simulazione dinamica {#dynamic-mocking}
-Perché la simulazione dinamica è utile? Ci consente di scrivere unit test anziché test di integrazione. Cosa significa? Che non dobbiamo preoccuparci delle dipendenze tra gli smart contract, dunque possiamo testarli tutti in maniera completamente isolata. Vediamo come.
+Perché la simulazione dinamica è utile? Ci consente di scrivere unit test anziché test di integrazione. Cosa significa? Che non dobbiamo preoccuparci delle dipendenze tra gli Smart Contract, dunque possiamo testarli tutti in completo isolamento. Vediamo come.
### **1. Progetto** {#1-project}
@@ -69,11 +69,11 @@ La struttura del progetto sarà ora simile a:
└── test
```
-### **2. Smart contract** {#2-smart-contract}
+### **2. Smart Contract** {#2-smart-contract}
-Per avviare la simulazione dinamica, occorre uno smart contract con dipendenze. Nessun problema!
+Per avviare la simulazione dinamica, serve uno Smart Contract con dipendenze. Nessun problema.
-Ecco un semplice smart contract scritto in `Solidity` con il solo scopo di controllare se siamo ricchi. Usa il token ERC20 per verificare se abbiamo abbastanza token. Inseriscilo in `./contracts/AmIRichAlready.sol`.
+Ecco un semplice Smart Contract scritto in `Solidity` con il solo scopo di controllare se siamo ricchi. Usa il token ERC20 per verificare se abbiamo abbastanza token. Inseriscilo in `./contracts/AmIRichAlready.sol`.
```solidity
pragma solidity ^0.6.2;
@@ -99,7 +99,7 @@ contract AmIRichAlready {
Poiché vogliamo usare la simulazione dinamica, non ci serve tutto ERC20, quindi usiamo l'interfaccia IERC20 con una sola funzione.
-È ora di creare il contratto. A tale scopo useremo `Waffle`. Innanzi tutto, creeremo un semplice file di configurazione `waffle.json` che specifichi le opzioni di compilazione.
+È ora di creare questo contratto. Per questo useremo `Waffle`. Prima, creeremo un semplice file di configurazione `waffle.json` che specifichi le opzioni di compilazione.
```json
{
@@ -116,7 +116,7 @@ Ora siamo pronti a creare il contratto con Waffle:
$ npx waffle
```
-Facile, vero? Nella cartella `build/` sono comparsi due file corrispondenti al contratto e all'interfaccia. Li useremo più avanti per i test.
+Facile, vero? Nella cartella `build/` sono comparsi due file corrispondenti al contratto e all'interfaccia. Li useremo dopo per i test.
### **3. Test** {#3-testing}
@@ -146,21 +146,21 @@ Waffle usa `chai` per il test. Tuttavia, prima di poterlo usare, dobbiamo inseri
use(solidity)
```
-Dobbiamo implementare la funzione `beforeEach()` che ripristinerà lo stato del contratto prima di ogni test. Pensiamo intanto a cosa ci serve. Per distribuire un contratto servono due cose: un portafoglio e un contratto ERC20 distribuito da passare come argomento per il contratto `AmIRichAlready`.
+Dobbiamo implementare la funzione `beforeEach()` che ripristinerà lo stato del contratto prima di ogni test. Prima pensiamo a cosa ci serve. Per distribuire un contratto servono due cose: un portafoglio e un contratto ERC20 distribuito da passare come argomento per il contratto `AmIRichAlready`.
-Per prima cosa creiamo un portafoglio:
+Prima creiamo un portafoglio:
```typescript
const [wallet] = new MockProvider().getWallets()
```
-Quindi dobbiamo distribuire un contratto ERC20. Ecco la parte complicata: abbiamo solo un'interfaccia. Questa è la parte in cui Waffle ci viene in aiuto. Waffle ha la funzione magica `deployMockContract()` che crea un contratto usando solo l'_abi_ dell'interfaccia:
+Poi dobbiamo distribuire un contratto ERC20. Ecco la parte complicata: abbiamo solo un'interfaccia. Questa è la parte in cui Waffle ci viene in aiuto. Waffle ha la funzione magica `deployMockContract()` che crea un contratto usando solo l'_abi_ dell'interfaccia:
```typescript
const mockERC20 = await deployMockContract(wallet, IERC20.abi)
```
-Ora, con il portafoglio e l'ERC20 distribuito, possiamo continuare e distribuire il contratto `AmIRichAlready`:
+Ora con il portafoglio e l'ERC20 distribuito, possiamo continuare e distribuire il contratto `AmIRichAlready`:
```typescript
const contract = await deployContract(wallet, AmIRichAlready, [
@@ -200,7 +200,7 @@ describe("Am I Rich Already", () => {
Scriviamo il primo test per il contratto `AmIRichAlready`. Cosa pensi dovrebbe fare il test? Esatto! Dobbiamo controllare se siamo già ricchi :)
-Ma aspetta un attimo. Come farà il nostro contratto simulato a sapere quali valori restituire? Non abbiamo implementato alcuna logica per la funzione `balanceOf()`. Anche qui Waffle ci viene in aiuto. Il nostro contratto simulato ora contiene alcuni elementi interessanti:
+Ma aspetta un attimo. Come farà il nostro contratto simulato a sapere che valori restituire? Non abbiamo implementato alcuna logica per la funzione `balanceOf()`. Di nuovo, Waffle ci viene in aiuto. Il nostro contratto simulato ha contenuto interessante:
```typescript
await mockERC20.mock..returns()
@@ -225,7 +225,7 @@ Siamo pronti a scatenare la bestia:
![Un test superato](test-one.png)
-Quindi il test funziona, ma... si può ancora migliorare. La funzione `balanceOf()` restituirà sempre 99999. Possiamo migliorarla specificando un portafoglio per il quale la funzione deve restituire qualcosa, proprio come un vero contratto:
+Quindi il test funziona, ma... si può ancora migliorare. La funzione `balanceOf()` restituirà sempre 99999. Possiamo migliorarla specificando un portafoglio per cui la funzione deve restituire qualcosa, proprio come un vero contratto:
```typescript
it("returns false if the wallet has less than 1000001 tokens", async () => {
@@ -255,7 +255,7 @@ Esegui i test...
## Test delle chiamate del contratto {#testing-contract-calls}
-Ricapitoliamo cosa abbiamo fatto finora. Abbiamo testato la funzionalità del contratto `AmIRichAlready`, che sembra funzionare correttamente. Quindi abbiamo finito, giusto? Non proprio. Waffle ci consente di testare il nostro contratto ancora più a fondo. Ma come esattamente? Beh, nell'arsenale di Waffle ci sono i matcher `calledOnContract()` e `calledOnContractWith()`. Ci consentiranno di verificare se il contratto ha chiamato il contratto simulato ERC20. Ecco un test di base con uno di questi matcher:
+Ricapitoliamo cosa abbiamo fatto finora. Abbiamo testato la funzionalità del contratto `AmIRichAlready` che sembra funzionare correttamente. Quindi abbiamo finito, giusto? Non proprio. Waffle ci consente di testare il nostro contratto ancora più a fondo. Ma come esattamente? Beh, nell'arsenale di Waffle ci sono i matcher `calledOnContract()` e `calledOnContractWith()`. Ci consentiranno di verificare se il contratto ha chiamato il contratto simulato ERC20. Ecco un test di base con uno di questi matcher:
```typescript
it("checks if contract called balanceOf on the ERC20 token", async () => {
@@ -281,13 +281,13 @@ Controlliamo se i test sono corretti:
![Tre test superati](test-three.png)
-Ottimo, tutti i test danno semaforo verde.
+Ottimo, tutti i test danno luce verde.
Testare le chiamate di contratto con Waffle è facilissimo. Ma ecco la parte migliore. Questi matcher funzionano sia con contratti normali che simulati! Questo perché Waffle registra e filtra le chiamate all'EVM piuttosto che inserire il codice, come invece fanno librerie di testing popolari di altre tecnologie.
## Il traguardo {#the-finish-line}
-Congratulazioni! Ora sai come usare Waffle per testare le chiamate di contratto e i contratti simulati dinamicamente. Ci sono funzionalità ben più interessanti da scoprire. Ti consiglio di immergerti nella documentazione di Waffle.
+Congratulazioni! Ora sai come usare Waffle per testare le chiamate di contratto e i contratti simulati dinamicamente. Ci sono funzionalità ben più interessanti da scoprire. Ti consiglio di tuffarti nella documentazione di Waffle.
La documentazione di Waffle è disponibile [qui](https://ethereum-waffle.readthedocs.io/).
@@ -295,4 +295,4 @@ Il codice sorgente di questo tutorial si può trovare [qui](https://github.com/E
Altri tutorial che potrebbero interessarti:
-- [Test di smart contract con Waffle](/developers/tutorials/testing-smart-contract-with-waffle/)
+- [Test di Smart Contract con Waffle](/developers/tutorials/testing-smart-contract-with-waffle/)
diff --git a/src/content/translations/it/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers/index.md b/src/content/translations/it/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers/index.md
index e974a18b3d2..c26d3097544 100644
--- a/src/content/translations/it/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers/index.md
+++ b/src/content/translations/it/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers/index.md
@@ -4,7 +4,7 @@ description: Crea il tuo primo progetto Waffle con hardhat ed ethers.js
author: "MiZiet"
tags:
- "waffle"
- - "Smart Contract"
+ - "smart contract"
- "Solidity"
- "test"
- "hardhat"
diff --git a/src/content/translations/it/eips/index.md b/src/content/translations/it/eips/index.md
index 56332585420..3745353e313 100644
--- a/src/content/translations/it/eips/index.md
+++ b/src/content/translations/it/eips/index.md
@@ -1,30 +1,30 @@
---
title: Proposte di miglioramento di Ethereum (EIP)
-description: Informazioni di base necessarie per capire le proposte di miglioramento di Ethereum (EIP).
+description: Le informazioni di base necessarie per comprendere le EIP
lang: it
---
-# Introduzione alle Proposte di miglioramento di Ethereum (EIP) {#introduction-to-ethereum-improvement-proposals-eips}
+# Introduzione alle Proposte di miglioramento di Ethereum (EIP) {#introduction-to-ethereum-improvement-proposals}
## Cosa sono le EIP? {#what-are-eips}
Le [Proposte di miglioramento di Ethereum (EIP)](https://eips.ethereum.org/) sono standard che specificano i potenziali nuovi processi e le potenziali funzionalità per Ethereum. Le EIP contengono le specifiche tecniche per i cambiamenti proposti e agiscono da "bocche della verità" per la community. Gli upgrade della rete e gli standard dell'applicazione per Ethereum sono discussi e sviluppati tramite il processo EIP.
-Tutti nella community di Ethereum hanno la possibilità di creare un'EIP. Le linee guida per scriverle si trovano in [EIP 1](https://eips.ethereum.org/EIPS/eip-1). L'EIP dovrebbe fornire una specifica tecnica concisa della funzionalità e la sua motivazione. L'autore dell'EIP è responsabile di creare consenso nella community e di documentare le opinioni divergenti. Dato l'elevato livello tecnico richiesto per inviare un'EIP ben fatta, storicamente gran parte degli autori di EIP sono stati sviluppatori di applicazioni o protocolli.
+Tutti nella community di Ethereum hanno la possibilità di creare un'EIP. Le linee guida per scriverle si trovano in [ EIP-1](https://eips.ethereum.org/EIPS/eip-1). Un'EIP, in primo luogo, dovrebbe fornire una specifica tecnica concisa, con una piccola motivazione. L'autore dell'EIP è responsabile di raggiungere il consenso nella community e di documentare le opinioni alternative. Data l'elevata barriera tecnica richiesta per inviare un'EIP ben fatta, storicamente gran parte degli autori di EIP sono tipicamente sviluppatori di applicazioni o protocolli.
## Perché sono importanti le EIP? {#why-do-eips-matter}
-Le EIP giocano un ruolo fondamentale nel definire come si verificano i cambiamenti e come sono documentati su Ethereum. Sono il modo in cui le persone propongono, dibattono e adottano i cambiamenti. Esistono [diversi tipi di EIP](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1.md#eip-types) tra cui le EIP fondamentali per i cambiamenti del protocollo di basso livello che influenzano il consenso e richiedono un upgrade della rete e le ERC per gli standard delle applicazioni. Per esempio, standard per creare token, come [ERC20](https://eips.ethereum.org/EIPS/eip-20) o [ERC721](https://eips.ethereum.org/EIPS/eip-721), consentono alle applicazioni di interagire con questi token usando le stesse regole, e facilitando la creazione di applicazioni interoperabili.
+Le EIP giocano un ruolo fondamentale nel definire come si verificano i cambiamenti e come sono documentati su Ethereum. Sono il modo in cui le persone propongono, dibattono e adottano i cambiamenti. Esistono [diversi tipi di EIP](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1.md#eip-types), incluse le EIP fondamentali per le modifiche al protocollo di basso livello che influenzano il consenso e richiedono un aggiornamento della rete, come [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) e le ERC per gli standard delle applicazioni, come [EIP-20](https://eips.ethereum.org/EIPS/eip-20) ed [EIP-721](https://eips.ethereum.org/EIPS/eip-721).
-Ogni upgrade della rete consiste di una serie di EIP che necessitano di essere implementate da ogni [client di Ethereum](/learn/#clients-and-nodes) sulla rete. Questo implica che per mantenere il consenso con altri client sulla rete principale Ethereum, gli sviluppatori client devono assicurarsi di aver implementato tutte le EIP richieste.
+Ogni upgrade della rete consiste di una serie di EIP che necessitano di essere implementate da ogni [client di Ethereum](/learn/#clients-and-nodes) sulla rete. Ciò significa che per mantenere il consenso con altri client sulla Rete Principale di Ethereum, gli sviluppatori client devono assicurarsi di aver implementato tutte le EIP necessarie.
-Oltre a fornire una specifica tecnica per le modifiche, le EIP sono l'unità attorno a cui gira la governance di Ethereum: tutti sono liberi di proporne una, e poi varie parti interessate nella community si confronteranno per determinare se deve essere adottata come standard o inclusa in un upgrade della rete. Poiché le EIP non fondamentali non devono essere adottate da tutte le applicazioni (per esempio, puoi creare un [token non ERC20](https://eips.ethereum.org/EIPS/eip-20)), ma le EIP principali devono essere ampiamente adottate (perché tutti i nodi devono aggiornarsi per rimanere parte della stessa rete), le EIP fondamentali richiedono un consenso più ampio all'interno della community rispetto a quelle non fondamentali.
+Oltre a fornire una specifica tecnica per le modifiche, le EIP sono l'unità attorno a cui gira la governance di Ethereum: tutti sono liberi di proporne una, e poi varie parti interessate nella community si confronteranno per determinare se deve essere adottata come standard o inclusa in un upgrade della rete. Poiché le EIP non fondamentali non devono essere adottate da tutte le applicazioni (ad esempio, è possibile creare un token fungibile che non implementi l'EIP-20), ma le EIP principali devono essere ampiamente adottate (perché tutti i nodi devono aggiornarsi per rimanere parte della stessa rete), le EIP fondamentali richiedono un consenso più ampio all'interno della community rispetto a quelle non fondamentali.
## Storia delle EIP {#history-of-eips}
Il [repository di GitHub delle proposte di miglioramento di Ethereum (EIP)](https://github.com/ethereum/EIPs) è stato creato a ottobre 2015. Il processo delle EIP si basa sul processo delle [proposte di miglioramento di bitcoin (BIP)](https://github.com/bitcoin/bips), che a sua volta si basa sul processo delle [proposte di rafforzamento di Python (PEP)](https://www.python.org/dev/peps/).
-Gli editor di EIP devono revisionare le EIP verificando solidità tecnica, grammatica/ortografia e stile del codice. Martin Becze, Vitalik Buterin, Gavin Wood e altri erano gli editori di EIP originali dal 2015 alla fine del 2016.
+Gli editor di EIP devono revisionare le EIP verificando la solidità tecnica, i problemi di formattazione e la correzione di ortografia, grammatica e stile del codice delle EIP. Martin Becze, Vitalik Buterin, Gavin Wood e altri erano gli editori di EIP originali dal 2015 alla fine del 2016.
Gli editor EIP correnti sono
@@ -46,27 +46,21 @@ Gli editori emeriti di EIP sono
Se vorresti diventare un editore EIP, sei pregato di dare un'occhiata all'[EIP-5069](https://eips.ethereum.org/EIPS/eip-5069).
-Gli editori EIP, insieme ai membri della community di [Ethereum Cat Herders](https://ethereumcatherders.com/) ed [Ethereum Magicians](https://ethereum-magicians.org/), stanno decidendo quale EIP sarà implementato, sono responsabili della facilitazione delle EIP, nonché del loro spostamento alla fase "Finale" o di "Prelievo".
+Gli editor di EIP decidono quando una proposta è pronta a diventare un'EIP e aiutano gli autori delle EIP a portare avanti le proprie proposte. [Ethereum Cat Herders](https://ethereumcatherders.com/) aiuta a organizzare incontri tra gli editor di EIP e la community (vedi [EIPIP](https://github.com/ethereum-cat-herders/EIPIP)).
Il processo di standardizzazione completa insieme al grafico sono descritti in [EIP-1](https://eips.ethereum.org/EIPS/eip-1)
## Maggiori informazioni {#learn-more}
-Se sei interessato a leggere di più sulle EIP, dai un'occhiata al [sito web delle EIP](https://eips.ethereum.org/) dove puoi trovare ulteriori informazioni, tra cui:
+Se ti interessa leggere di più sulle EIP, dai un'occhiata al [sito web delle EIP](https://eips.ethereum.org/) e a [EIP-1](https://eips.ethereum.org/EIPS/eip-1). Ecco alcuni link utili:
-- [I diversi tipi di EIP](https://eips.ethereum.org/)
-- [Un elenco di ogni EIP creata](https://eips.ethereum.org/all)
-- [Stati delle EIP e cosa significano](https://eips.ethereum.org/)
+- [Un elenco di ogni EIP](https://eips.ethereum.org/all)
+- [Una descrizione di tutti i tipi di EIP](https://eips.ethereum.org/EIPS/eip-1#eip-types)
+- [Una descrizione di tutti gli stati delle EIP](https://eips.ethereum.org/EIPS/eip-1#eip-process)
## Partecipa {#participate}
-Chiunque può creare EIP o ERC, sebbene dovresti leggere [EIP-1](https://eips.ethereum.org/EIPS/eip-1), che delinea il processo dell'EIP, cos'è, i suoi tipi, il documento che dovrebbe contenere, il formato e modello, l'elenco degli Editori delle EIP e tutto ciò che ti serve di sapere a riguardo prima di crearne una. La tua nuova EIP dovrebbe definire le nuove funzionalità non ancora molto complesse, né super di nicchia e utilizzabili dai progetti nell'ecosistema di Ethereum. La parte più difficile è la facilitazione: tu, in qualità di autore, devi facilitare le persone intorno alla tua EIP, raccogliere feedback, scrivere articoli che descrivono i problemi risolti dalla tua EIP e collaborare coi progetti per implementarla.
-
-Se sei interessato a seguire il processo di discussione o a condividere il tuo input sulle EIP, dai un'occhiata al [forum di Ethereum Magicians](https://ethereum-magicians.org/), dove sono discusse le EIP con la community.
-
-Vedi anche:
-
-- [Come creare un'EIP](https://eips.ethereum.org/EIPS/eip-1)
+Chiunque può creare un'EIP. Prima di inviare una proposta, devi leggere [EIP-1](https://eips.ethereum.org/EIPS/eip-1), che delinea il processo dell'EIP e come scriverne una, e sollecitare un feedback su [Ethereum Magicians](https://ethereum-magicians.org/), dove le proposte sono discusse con la community prima di inviare una bozza.
## Riferimenti {#references}
diff --git a/src/content/translations/it/energy-consumption/index.md b/src/content/translations/it/energy-consumption/index.md
index 42748fdea81..a8b355fb654 100644
--- a/src/content/translations/it/energy-consumption/index.md
+++ b/src/content/translations/it/energy-consumption/index.md
@@ -6,87 +6,70 @@ lang: it
# Consumo energetico di Ethereum {#introduction}
-L'attuale spesa energetica di Ethereum con il [proof-of-work](/developers/docs/consensus-mechanisms/#proof-of-work) è troppo elevata e insostenibile. Risolvere i problemi di spesa energetica senza sacrificare la sicurezza e la decentralizzazione è una sfida tecnica significativa ed è stata oggetto di ricerca e sviluppo per anni. Esploriamo perché la costruzione di Ethereum ha avuto un alto impatto ambientale e come il prossimo aggiornamento della rete a [proof-of-stake](/developers/docs/consensus-mechanisms/pos) cambierà drasticamente la situazione.
+Ethereum è una blockchain ecologica. Usa un meccanismo di consenso di [proof-of-stake](/developers/docs/consensus-mechanisms/pos) che può esser eseguito sui dispositivi a bassa potenza e non richiede elevata potenza di calcolo per partecipare. Il meccanismo di proof-of-stake di Ethereum protegge la rete usando gli ETH in staking piuttosto che l'energia consumata, come nel [proof-of-work](/developers/docs/consensus-mechanisms/pow). Il passaggio al proof-of-stake significa che l'energia consumata dalla rete di Ethereum è relativamente ridotta, verso i 0,01 TWh/anno.
-## L'energia protegge la rete {#energy-secures-the-network}
-
-Le transazioni sulla blockchain Ethereum sono convalidate dai ["minatori"](/developers/docs/consensus-mechanisms/pow/mining). I "minatori" raggruppano le transazioni in blocchi ordinati e le aggiungono alla blockchain Ethereum. I nuovi blocchi vengono trasmessi a tutti gli altri operatori del nodo che eseguono le transazioni in modo indipendente e verificano che siano validi. Qualsiasi azione disonesta si presenta come un'incongruenza tra i diversi nodi. I blocchi onesti vengono aggiunti alla blockchain e diventano una parte immutabile della storia.
-
-La capacità di ogni "minatore" di aggiungere nuovi blocchi funziona solo se c'è un costo associato al minare e imprevedibilità su quale nodo specifico invia il prossimo blocco. Queste condizioni sono soddisfatte imponendo il proof-of-work (PoW). Per essere idoneo a inviare un blocco di transazioni, un "minatore" deve risolvere un puzzle computazionale arbitrario più velocemente di qualsiasi altro "minatore". Risolvere il puzzle crea concorrenza tra i "minatori" e costi sotto forma di spesa energetica. Per defraudare con successo la blockchain, un "minatore" disonesto dovrebbe vincere costantemente la gara di proof-of-work, il che è molto improbabile ed estremamente costoso.
-
-Ethereum usa il proof-of-work fin dall'inizio. La migrazione dal proof-of-work al proof-of-stake è sempre stato un obiettivo fondamentale di Ethereum. Tuttavia, sviluppare un sistema proof-of-stake che aderisca ai principi fondamentali di Ethereum di sicurezza e decentralizzazione non è banale. Ci sono volute molte ricerche e scoperte nella crittografia, nella criptoeconomia e nella progettazione di meccanismi per arrivare ad un punto in cui la transizione è possibile.
+## Spesa energetica del proof-of-stake {#proof-of-stake-energy}
-## Spesa energetica del proof-of-work {#proof-of-work}
+Il consumo energetico di Ethereum è approssimativamente pari al costo di operazione di un portatile modesto per ogni nodo sulla rete.
-Proof-of-work è un modo solido per proteggere la rete e imporre cambiamenti onesti alla blockchain, ma è problematico per diverse ragioni. Poiché il diritto di minare un blocco richiede la risoluzione di un puzzle computazionale arbitrario, i "minatori" possono aumentare le loro probabilità di successo investendo in un hardware più potente. Questi incentivi causano una "corsa agli armamenti" dei "minatori" che acquistano attrezzature per minare che consumano sempre più energia. Il protocollo proof-of-work di Ethereum attualmente ha un consumo energetico totale annuo approssimativamente uguale a quello della Finlandia[^1] e un'impronta di carbonio simile alla Svizzera[^1].
+Molti articoli stimano una spesa energetica "per transazione" per confrontare le blockchain ad altre industrie. Il beneficio di ciò è che è facile da comprendere. Tuttavia, le stime basate sulle transazioni possono essere fuorvianti poiché l'energia richiesta per proporre e validare un blocco è indipendente dal numero di transazioni al suo interno. Un'unità di spesa energetica per transazione implica che meno transazioni porterebbero a una spesa minore e viceversa, il che non è vero. Una stima per transazione dipende fortemente da come è definito il volume di transazione di una blockchain e, modificare tale definizione, può far sembrare maggiore o minore il valore.
-## Proof-of-Stake {#proof-of-stake}
+Ad esempio, su Ethereum, il volume di transazione non è solo quello del livello di base, è anche la somma del volume di transazione di tutti i suoi rollup del "[livello 2](/layer-2/)", non generalmente inclusi nei calcoli e che lo ridurrebbero drasticamente. Questo è uno dei motivi per cui gli strumenti che confrontano il consumo energetico per transazione sulle piattaforme, sono fuorvianti.
-Un futuro più verde per Ethereum è già in costruzione sotto forma di catena [**proof-of-stake (PoS)**](/upgrades/beacon-chain/). Nell'ambito del [proof-of-stake](/developers/docs/consensus-mechanisms/pos/), la risoluzione dei puzzle arbitrario non è necessaria. Rimuovendo la risoluzione dei puzzle si riduce drasticamente il dispendio energetico necessario per mettere in sicurezza la rete. I "minatori" vengono sostituiti da convalidatori che svolgono la stessa funzione, ma, anziché spendere i loro attivi in anticipo sotto forma di lavoro computazionale, investono ETH come garanzia reale contro il comportamento disonesto. Se il convalidatore è pigro (offline quando si suppone che debba adempiere a qualche dovere di convalidatore) può lentamente perdere il suo ETH investito, mentre un comportamento palesemente disonesto ha come risultato che gli attivi investiti vengono ridotti. Questo incentiva fortemente la partecipazione attiva e onesta nel rendere sicura la rete.
+Più rilevante è il consumo energetico complessivo e l'impronta carbonica dell'intera rete. Da tali valori, possiamo esaminare ciò che la rete offre ai suoi utenti e alla società intera ed effettuare una valutazione più globale del fatto che la spesa energetica sia o meno giustificata. Le misurazioni per transazione, d'altra parte, implicano che il valore della rete provenga solo dal suo ruolo nel trasferire criptovalute tra conti e proibiscono un'analisi onesta di costi e benefici.
-Analogamente al proof-of-work, un'entità dannosa richiederebbe almeno il 51% del totale degli ETH investiti nella rete per eseguire un [attacco del 51%](/glossary/#51-attack). Tuttavia, a differenza del proof-of-work, dove la perdita potenziale di un attacco non riuscito è solo il costo di generare la potenza di hash necessaria per minare, nel proof-of-stake, la possibile perdita di un attacco è l'intera quantità di ETH usata come garanzia reale. Questa struttura disincentivante permette la sicurezza della rete con il proof-of-stake eliminando la necessità di spendere energia in calcoli arbitrari. Spiegazioni dettagliate sulla sicurezza della rete in proof-of-stake possono essere trovate [qui](/developers/docs/consensus-mechanisms/pos/) e [qui](https://vitalik.ca/general/2017/12/31/pos_faq.html).
+Il [CCRI](https://carbon-ratings.com) (Crypto Carbon Ratings Institute) ha analizzato ampiamente il consumo di elettricità e l'impronta carbonica della rete Ethereum (vedi il report [_La Fusione - Implicazioni sul consumo elettrico e sull'impronta carbonica della rete Ethereum_](https://carbon-ratings.com/eth-report-2022)). Il CCRI ha misurato il consumo elettrico di diversi nodi con varie configurazioni hardware e software del client. Ne è risultata una stima di **2,601 MWh** (0,0026 TWh) per il consumo annuo di elettricità della rete al momento dell'analisi (settembre 2022), corrispondente alle emissioni carboniche annuali di **870 tonnellate di CO2e**, applicando i fattori di intensità carbonica specifici regionali.
-## La fusione {#the-merge}
+[Digiconomist fornisce il consumo energetico e le impronte carboniche dell'intera rete per Bitcoin ed Ethereum](https://digiconomist.net/ethereum-energy-consumption). Nel momento in cui viene scritto questo articolo, Bitcoin consuma circa 200 TWh/anno di energia ed emette circa 100 MT (megatonnellate) di carbonio all'anno, generando circa 32.000 t di rifiuti energetici da hardware obsoleti ogni anno. In confronto, la spesa energetica totale per proteggere Ethereum è più vicina a **0,01 TWh/anno**.
-C'è una catena proof-of-stake funzionale chiamata [Beacon Chain](/upgrades/beacon-chain/) che è in funzione da dicembre 2020 e che sta dimostrando la fattibilità del protocollo proof-of-stake. La fusione si riferisce al momento in cui Ethereum si lascia alle spalle il proof-of-work e adotta completamente il proof-of-stake. La fusione dovrebbe avvenire nel secondo trimestre del 2022. [Maggiori informazioni sulla fusione](/upgrades/merge/).
+
-## Spesa energetica del proof-of-stake {#proof-of-stake-energy}
+La suddetta cifra mostra il consumo energetico annuale stimato in TWh/anno per vari settori (aggiornata a giugno 2022). _Nota che le stime presentate nel grafico provengono da fonti disponibili pubblicamente, delle quali si riporta il link nel testo di seguito. Sono illustrative e non rappresentano una stima, promessa o previsione ufficiale._
-Oltre a costruire la fiducia nel meccanismo di proof-of-stake, la Beacon Chain permette anche di stimare l'utilizzo di energia post-fusione di Ethereum. Una [stima recente](https://blog.ethereum.org/2021/05/18/country-power-no-more/) ha suggerito che la fusione del proof-of-stake potrebbe risultare in una riduzione del 99,95% dell'uso totale di energia, con il proof-of-stake che è ~2000 volte più efficiente dal punto di vista energetico del proof-of-work. Il dispendio energetico di Ethereum sarà all'incirca uguale al costo di funzionamento di un computer domestico per ogni nodo della rete.
+Per contestualizzare il consumo energetico di Ethereum, possiamo confrontare le stime annualizzate per altri settori. Se consideriamo Ethereum una piattaforma per mantenere in modo sicuro gli asset digitali come investimenti, forse possiamo compararla all'estrazione dell'oro, che si stima consumi circa [240 TWh/anno](https://www.kitco.com/news/2021-05-17/Gold-s-energy-consumption-doubles-that-of-bitcoin-Galaxy-Digital.html). Come piattaforma di pagamenti digitali, potremmo forse compararla a PayPal (che si stima consumi circa [0,26 TWh/anno](https://app.impaakt.com/analyses/paypal-consumed-264100-mwh-of-energy-in-2020-24-from-non-renewable-sources-27261)). Come piattaforma di intrattenimento, potremmo forse compararla all'industria videoludica, che si stima consumi circa [34 TW/anno](https://www.researchgate.net/publication/336909520_Toward_Greener_Gaming_Estimating_National_Energy_Use_and_Energy_Efficiency_Potential) _nei soli Stati Uniti_. Le stime del consumo energetico di Netflix oscillano drasticamente tra [circa 0,45TWhr/anno](https://s22.q4cdn.com/959853165/files/doc_downloads/2020/02/0220_Netflix_EnvironmentalSocialGovernanceReport_FINAL.pdf) (come da sua stima del 2019) fino a circa 94 TWh/anno (come stimato da [Shift Project](https://theshiftproject.org/en/article/unsustainable-use-online-video/)); esistono delle discussioni sulle ipotesi sottostanti tali stime, disponibili su [Carbon Brief](https://www.carbonbrief.org/factcheck-what-is-the-carbon-footprint-of-streaming-video-on-netflix). Altrimenti, Ethereum potrebbe essere comparata a YouTube, che si stima consumi circa [244 TWh/anno](https://thefactsource.com/how-much-electricity-does-youtube-use/), sebbene questi valori dipendano molto dal tipo di dispositivo su cui sono trasmessi i video e dall'efficienza energetica dell'infrastruttura sottostante, come i centri di dati. Le stime del consumo energetico di YouTube sono state ripartite per canali e singoli video. [Queste stime](https://thefactsource.com/how-much-electricity-does-youtube-use/) lasciano intendere che le persone che hanno guardato Gangnam Style nel 2019 hanno consumato 45 volte più energia di quella utilizzata dal proof-of-stake di Ethereum in un anno.
-![immagine](energy_use_per_transaction.png)
+## Un livello d'applicazione ecologico {#green-applications}
-Stima del consumo energetico del PoW (proof-of-work) per tx utilizzato in cifre sulla base dei dati di maggio 2021, al momento di scrivere la stessa fonte suggeriva fino a 175,56 kWh
+Mentre il consumo energetico di Ethereum è molto ridotto, vi è anche una community sostanziale, in crescita e altamente attiva di **finanza rigenerativa (ReFi)** che sta nascendo su Ethereum. Le applicazioni ReFi usano i componenti della DeFi per creare applicazioni finanziarie aventi esternalità positive a beneficio dell'ambiente. La ReFi è parte di un più ampio movimento ["solarpunk"](https://en.wikipedia.org/wiki/Solarpunk), strettamente allineato con Ethereum e che mira ad accoppiare l'avanzamento tecnologico alla gestione ambientale. La natura decentralizzata, senza permessi e componibile di Ethereum lo rende il livello di base ideale per la ReFi e le community solarpunk. Tramite il loro sviluppo (e altri, es. [DeSci](/desci/)), Ethereum sta diventando una tecnologia positiva in termini ambientali e sociali.
-Confrontiamo questi numeri a un servizio come Visa. 100.000 transazioni Visa utilizzano 149 kWh di energia[^2]. Supponendo che lo sharding sia stato implementato, il tasso di transazione corrente di Ethereum (15 transazioni al secondo) sarà aumentato di almeno 64 volte (il numero di partizioni), senza contare l'ottimizzazione aggiuntiva dai rollup. Una stima realistica per Ethereum post-fusione sottoposto a sharding con rollup è [25.000 - 100.000](https://twitter.com/VitalikButerin/status/1312905884549300224?s=20) transazioni al secondo. Possiamo utilizzare queste informazioni per stimare la spesa massima e minima di energia per 100.000 transazioni.
+## Il debito carbonico di Ethereum {#carbon-debt}
-- 25.000 transazioni al secondo.
-- `100.000 / 25.000 = 4` secondi per elaborare 100.000 transazioni.
+Il consumo energetico corrente di Ethereum è molto ridotto, ma non è sempre stato così. Ethereum è passato al suo meccanismo di consenso di proof-of-stake nel 3° trimestre del 2022. Tuttavia, dal 2014 al 2022 Ethereum ha usato un meccanismo di proof-of-work, che ha avuto un costo ambientale molto maggiore.
-Possiamo anche stimare la spesa energetica di Ethereum al secondo, facendo una stima prudente che 10.000 convalidatori attivi stiano proteggendo la rete (ci sono più di [250.000 convalidatori sulla Beacon Chain](https://beaconscan.com/) al momento, ma molti convalidatori possono operare su un unico nodo. Attualmente, si stima che ci siano 3.000-4.000 singoli nodi, quindi 10.000 è una stima prudente per la post-fusione):
+Dalle sue origini, Ethereum ha mirato a implementare un meccanismo di consenso di proof-of-stake, ma farlo senza sacrificare la sicurezza e la decentralizzazione ha richiesto anni di ricerca e sviluppo mirati. Dunque, per avviare la rete è stato usato un meccanismo di proof-of-work. Il consenso di proof-of-work richiede ai miner di usare il proprio hardware per risolvere un rompicapo, consumando energia nel processo. La soluzione al rompicapo prova che l'energia è stata realmente utilizzata dal miner, dimostrando che ha investito valore del mondo reale per il diritto ad aggiungere elementi alla blockchain. Il consumo energetico totale di Ethereum ha raggiunto un picco durante l'apice del mercato rialzista delle criptovalute a febbraio 2022 a poco meno di 94 TWh/anno. Nell'estate precedente al passaggio al proof-of-stake, il consumo energetico era più vicino ai 60 TWh/anno, comparabile a quello dell'Uzbekistan, con un'emissione carbonica equivalente a quella dell'Azerbaijan (33 MT/anno).
-`1,44 kWh di uso giornaliero * 10.000 nodi di rete = 14.400 kWh` al giorno. Ci sono 86.400 secondi in un giorno, quindi `14.400 / 86.400 = 0,1666666667 kWh` al secondo.
+Il [CCRI](https://carbon-ratings.com) ha esaminato l'impatto della fusione di Ethereum dal proof-of-work al proof-of-stake; i risultati hanno sottolineato il significativo impatto del cambiamento del protocollo di consenso: il consumo di elettricità annualizzato è stato ridotto da 22.900.320 MWh a 2.601 MWh e, dunque, di oltre il **99,988%**. Similmente, l'impronta carbonica di Ethereum è stata ridotta approssimativamente del **99,992%** (da 11.016.000 a 870 tonnellate di CO2e). Rappresentato metaforicamente, ciò corrisponde a una riduzione delle emissioni dall'altezza della Torre Eiffel a un piccolo giocattolo di plastica, come mostrato nella figura sottostante.
-Moltiplicando questo valore per il tempo necessario ad elaborare 100.000 transazioni: `0,1667 * 4 = 0,667 kWh`.
+![Confronto del consumo energetico di Ethereum prima e dopo La Fusione. Sulla sinistra è mostrata la Torre Eiffel, alta 330 metri, e sulla destra un giocattolo di plastica, alto 4 cm, sotto una lente d'ingrandimento.](energy_consumption_pre_post_merge.png)
-Questo valore è pari allo ~0,4% dell'energia utilizzata da Visa per lo stesso numero di transazioni, ovvero una riduzione della spesa energetica di un fattore di ~225 rispetto all'attuale rete proof-of-work di Ethereum.
+Sia il proof-of-work che il proof-of-stake sono semplicemente meccanismi per decidere chi aggiungerà il prossimo blocco. Passare dal proof-of-work al proof-of-stake, in cui il valore reale investito proviene dagli ETH in staking direttamente in un contratto intelligente, rimuove la necessità per i miner di consumare energia per aggiungere alla blockchain. Dunque, il costo ambientale per proteggere la rete è ridotto drasticamente.
-Ripetere il calcolo con il numero massimo di transazioni al secondo si ottiene 0,1667 kWh al secondo, che è circa lo 0,1% della spesa energetica di Visa, ovvero una riduzione di ~894 volte.
+## Perché il proof-of-stake è più ecologico del proof-of-work? {#why-pos-is-greener-than-pow}
-_Nota: non è del tutto accurato confrontare in base al numero di transazioni dato che il consumo di energia di Ethereum è basato sul tempo. Il consumo di energia di Ethereum è lo stesso in 1 minuto, indipendentemente dal fatto che faccia 1 o 1.000 transazioni._
+Il proof-of-work è un metodo forte per proteggere la rete. Le transazioni sulla blockchain di Ethereum sotto il precedente sistema di proof-of-work erano validate dai [miner](/developers/docs/consensus-mechanisms/pow/mining). I miner raggruppavano le transazioni in blocchi ordinati e li aggiungevano alla blockchain di Ethereum. I nuovi blocchi venivano trasmessi a tutti gli altri operatori del nodo che eseguivano le transazioni in modo indipendente e verificavano che fossero valide. Qualsiasi azione disonesta si presentava come un'incongruenza tra i diversi nodi. I blocchi onesti erano aggiunti alla blockchain e diventavano una parte immutabile dello storico. La capacità di ogni miner di aggiungere nuovi blocchi funziona solo se c'è un costo associato al mining e vi è imprevedibilità su quale nodo specifico invii il blocco successivo. Tali condizioni sono soddisfatte imponendo il proof-of-work. Per esser idoneo a inviare un blocco di transazioni, un miner deve prima inviare la soluzione di un rompicapo computazionalmente dispendioso. Per assumere correttamente il controllo della blockchain, un miner disonesto avrebbe dovuto vincere coerentemente la gara del proof-of-work investendo in hardware ed energia sufficienti a superare le prestazioni di gran parte degli altri miner.
-_Dobbiamo anche considerare che Ethereum non si limita a semplici transazioni finanziarie, ma è anche una piattaforma completa costruita per smart contract e applicazioni decentralizzate._
+Questo meccanismo di protezione della rete è problematico per diversi motivi. Prima di tutto, i miner avrebbero aumentato le proprie possibilità di successo investendo in hardware più potenti, creando le condizioni per una corsa alle armi, coi miner che acquistavano equipaggiamenti di mining sempre più energivori. Questo ha aumentato il consumo energetico della rete e ha generato sprechi di hardware. In secondo luogo, il protocollo di proof-of-work di Ethereum (prima della transizione al proof-of-stake) aveva un consumo energetico annualizzato totale approssimativamente pari a quello della Finlandia [^1] e un'impronta carbonica simile a quella della Svizzera [^1].
-## Un Ethereum più verde {#green-ethereum}
+Il proof-of-stake usa i validatori invece dei miner. I validatori ricoprono la stessa funzione dei miner, tranne che invece di consumare le proprie risorse come consumo energetico, mettono ETH in staking come garanzia contro i comportamenti disonesti. Questi ETH in staking possono essere distrutti se il validatore si comporta male, con sanzioni più severe per le azioni più nefaste. Ciò incentiva fortemente la partecipazione attiva e onesta nel proteggere la rete senza richiedere grandi consumi energetici. Poiché quasi tutta l'energia consumata proteggendo la rete di proof-of-work proveniva dall'algoritmo di mining, il passaggio al proof-of-stake ha ridotto drasticamente i consumi energetici. Inoltre, non vi è alcun beneficio nell'investire in hardware più potente sotto il proof-of-stake, quindi non esiste alcuna condizione di corsa alle armi e vi è un ridotto spreco elettronico. I validatori di Ethereum possono operare sui tipici laptop o dispositivi a basso consumo, come [Raspberry Pi](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/index.html).
-Mentre il consumo di energia di Ethereum è stato storicamente sostanziale, c'è stato un grande investimento di tempo e intelletto degli sviluppatori nella transizione da una convalida dei blocchi ad elevato consumo energetico a una efficiente dal punto di vista energetico. Per citare [Bankless](http://podcast.banklesshq.com/), il modo migliore per ridurre l'energia consumata dal proof-of-work è semplicemente "spegnerlo", che è l'approccio che Ethereum si è impegnata ad adottare.
+Leggi di più su [come Ethereum implementa il proof-of-stake](/developers/docs/consensus-mechanisms/pos) e com'è paragonato al proof-of-work.
Se pensi che queste statistiche siano errate o possano essere rese più accurate, ti invitiamo a segnalarlo o inviare una "Pull Request". Queste sono stime del team di ethereum.org fatte usando informazioni pubblicamente accessibili e l'attuale tabella di marcia di Ethereum. Queste dichiarazioni non rappresentano una promessa ufficiale della Fondazione Ethereum.
-## Letture consigliate {#further-reading}
+## Ulteriori letture {#further-reading}
-- [A country's worth of power, no more](https://blog.ethereum.org/2021/05/18/country-power-no-more/) – _Carl Beekhuizen, 18 maggio 2021_
-- [Emissions Ethereum: A bottom-up Estimate](https://kylemcdonald.github.io/ethereum-emissions/) _ Kyle McDonald_
-- [Ethereum Energy Consumption Index](https://digiconomist.net/ethereum-energy-consumption/) – _Digiconomist_
+- [L'energia necessaria a un paese; non più](https://blog.ethereum.org/2021/05/18/country-power-no-more/) – _Carl Beekhuizen, 18 maggio 2021_
+- [Consumo energetico di Ethereum](https://mirror.xyz/jmcook.eth/ODpCLtO4Kq7SCVFbU4He8o8kXs418ZZDTj0lpYlZkR8)
+- [Emissioni di Ethereum: Una Stima Completa](https://kylemcdonald.github.io/ethereum-emissions/) _Kyle McDonald_
+- [Indice del Consumo Energetico di Ethereum](https://digiconomist.net/ethereum-energy-consumption/) – _Digiconomist_
- [ETHMerge.com](https://ethmerge.com/)—_[@InsideTheSim](https://twitter.com/InsideTheSim)_
+- [La Fusione - Implicazioni sul consumo elettrico e sull'impronta carbonica della rete Ethereum](https://carbon-ratings.com/eth-report-2022) - _CCRI_
## Argomenti correlati {#related-topics}
- [Visione di Ethereum](/upgrades/vision/)
- [La Beacon Chain](/upgrades/beacon-chain)
-- [La fusione](/upgrades/merge/)
-- [Sharding](/upgrades/beacon-chain/)
-
-### Note a piè pagina e fonti {#footnotes-and-sources}
-
-#### 1. Consumo energetico del proof-of-work di Ethereum {#fn-1}
-
-[Consumo di energia per paese. Ethereum (TWh all'anno)](https://digiconomist.net/ethereum-energy-consumption)
-
-#### 2. Consumo energetico di Visa {#fn-2}
-
-[Consumo energetico medio di rete Bitcoin per transazione rispetto alla rete VISA a partire dal 2020, Statista](https://www.statista.com/statistics/881541/bitcoin-energy-consumption-transaction-comparison-visa/)
-
-[Rapporto finanziario Visa quarto trimestre 2020](https://s1.q4cdn.com/050606653/files/doc_financials/2020/q4/Visa-Inc.-Q4-2020-Operational-Performance-Data.pdf)
+- [La Fusione](/upgrades/merge/)
+- [Frammentazione](/upgrades/beacon-chain/)
diff --git a/src/content/translations/it/governance/index.md b/src/content/translations/it/governance/index.md
index c3d464945cb..d3383694836 100644
--- a/src/content/translations/it/governance/index.md
+++ b/src/content/translations/it/governance/index.md
@@ -2,11 +2,12 @@
title: La governance di Ethereum
description: Un'introduzione a come vengono prese le decisioni su Ethereum.
lang: it
+postMergeBannerTranslation: page-upgrades-post-merge-banner-governance-ood
---
# Introduzione alla governance di Ethereum {#introduction}
-_Se nessuno possiede Ethereum, come vengono prese le decisioni sui cambiamenti passati e futuri? Con "governance di Ethereum" si intende il processo che consente di prendere tali decisioni_
+_Se nessuno possiede Ethereum, come vengono prese le decisioni sui cambiamenti passati e futuri? La governance di Ethereum si riferisce al processo che consente di prendere tali decisioni._
@@ -20,7 +21,7 @@ Nessuna persona possiede o controlla il protocollo Ethereum, ma è comunque nece
## La governance di Ethereum {#ethereum-governance}
-La governance di Ethereum è il processo attraverso il quale vengono apportate modifiche al protocollo. È importante sottolineare che questo processo non ha a che fare con il modo in cui le persone e le applicazioni utilizzano il protocollo, infatti Ethereum è senza autorizzazioni. Chiunque da qualsiasi parte del mondo può partecipare ad attività on-chain. Non ci sono regole fisse su chi può o non può creare un'applicazione o inviare una transazione. Tuttavia, esiste un processo per proporre modifiche al protocollo principale, su cui vengono eseguite queste applicazioni. Poiché così tante persone dipendono dalla stabilità di Ethereum, esiste una soglia di coordinamento molto alta per i cambiamenti fondamentali, inclusi i processi sociali e tecnici, per garantire che qualsiasi modifica a Ethereum sia sicura e ampiamente supportata dalla comunità
+La governance di Ethereum è il processo attraverso il quale vengono apportate modifiche al protocollo. È importante sottolineare che questo processo non ha a che fare con il modo in cui le persone e le applicazioni utilizzano il protocollo, infatti Ethereum è senza autorizzazioni. Chiunque da qualsiasi parte del mondo può partecipare ad attività on-chain. Non ci sono regole fisse su chi può o non può creare un'applicazione o inviare una transazione. Tuttavia, esiste un processo per proporre modifiche al protocollo principale, su cui vengono eseguite queste applicazioni. Poiché molte persone dipendono dalla stabilità di Ethereum, esiste una soglia di coordinamento davvero elevata per i cambiamenti principali, inclusi i processi sociali e tecnici, per garantire che ogni modifica a Ethereum sia sicura e ampiamente supportata dalla community.
### Governance on-chain e off-chain {#on-chain-vs-off-chain}
diff --git a/src/content/translations/it/nft/index.md b/src/content/translations/it/nft/index.md
index 0041d104d37..1d54861d3c9 100644
--- a/src/content/translations/it/nft/index.md
+++ b/src/content/translations/it/nft/index.md
@@ -7,9 +7,9 @@ emoji: ":frame_with_picture:"
sidebarDepth: 3
image: ../../../../assets/infrastructure_transparent.png
alt: Un logo Eth visualizzato tramite ologramma.
-summaryPoint1: Un modo per rappresentare qualsiasi cosa unica come un attivo basato su Ethereum.
-summaryPoint2: Gli NFTs stanno dando più potere che mai ai creatori di contenuti.
-summaryPoint3: Alimentato da smart contract sulla blockchain Ethereum.
+summaryPoint1: Un modo per rappresentare qualsiasi cosa unica come un asset basato su Ethereum.
+summaryPoint2: Gli NFT stanno dando più potere che mai ai creatori di contenuti.
+summaryPoint3: Basato sui contratti intelligenti sulla blockchain di Ethereum.
---
I NFT stanno avendo un successo travolgente nel mondo dell'arte digitale e degli oggetti da collezione. La vita di moltissimi artisti digitali sta cambiando grazie alle enormi vendite ad un nuovo pubblico di cripto-utenti. Anche diverse celebrità si stanno interessando al fenomeno, individuando nuove opportunità per agganciare i fan. Ma l'arte digitale è solo un modo per utilizzare i NFT. In realtà possono essere utilizzati per rappresentare la proprietà di qualsiasi bene unico, come un atto connesso a un oggetto nel mondo digitale o fisico.
@@ -18,7 +18,7 @@ Se Andy Warhol fosse nato alla fine degli anni '90, probabilmente avrebbe coniat
## Cos'è un NFT? {#what-are-nfts}
-I NFT sono token che possiamo utilizzare per rappresentare la proprietà di oggetti unici. Permettono di tokenizzare cose come l'arte, gli oggetti da collezione e persino gli immobili. Possono avere un solo proprietario ufficiale alla volta e sono protetti dalla blockchain Ethereum – nessuno può modificare il record di proprietà o copiare/incollare un nuovo NFT in esistenza.
+I NFT sono token che possiamo utilizzare per rappresentare la proprietà di oggetti unici. Ci consentono di tokenizzare cose come l'arte, gli oggetti da collezione e persino gli immobili. La proprietà di una risorsa è protetta dalla blockchain di Ethereum: nessuno può modificare il registro di proprietà o copiare/incollare un nuovo NFT in esistenza.
NFT sta per Non-Fungible-Token (token non fungibile). Non fungibile è un termine economico che potremmo usare per descrivere cose come i mobili, un file musicale o un computer. Queste cose non sono intercambiabili per altri oggetti perché hanno proprietà uniche.
@@ -94,7 +94,7 @@ Gli NFT sono diversi dai token ERC-20, come DAI o LINK, in quanto ogni singolo t
- Firme
- Molte altre opzioni con cui dare libero sfogo alla creatività!
-Un NFT può avere un solo proprietario alla volta. La proprietà è gestita attraverso l'identificativo univoco e i metadati che nessun altro token può replicare. Gli NFT sono coniati attraverso smart contract che assegnano la proprietà e gestiscono la trasferibilità degli NFT. Quando qualcuno crea o conia un NFT, esegue il codice memorizzato in smart contract conformi a standard diversi, come ERC-721. Queste informazioni vengono aggiunte alla blockchain in cui viene gestito l'NFT. Il processo di coniatura, ad alto livello, attraversa i seguenti passaggi:
+La proprietà dei NFT è gestita tramite l'ID e i metadati univoci che nessun altro token può replicare. I NFT sono coniati tramite i contratti intelligenti, che assegnano la proprietà e gestiscono la trasferibilità dei NFT. Quando qualcuno crea o conia un NFT, esegue il codice memorizzato nei contratti intelligenti conformi a diversi standard, come l'[ERC-721](/developers/docs/standards/tokens/erc-721/). Queste informazioni sono aggiunte alla blockchain dov'è gestito il NFT. Il processo di conio, da un livello elevato, include i seguenti passaggi:
- Creazione di un nuovo blocco
- Convalida delle informazioni
@@ -110,7 +110,7 @@ Gli NFT hanno alcune proprietà speciali:
In altre parole, se _possiedi_ un NFT:
- Puoi facilmente dimostrare di possederlo.
- - Dimostrare che possiedi un NFT è molto simile a dimostrare che hai ETH nel tuo account.
+ - Dimostrare che possiedi un NFT è molto simile a provare di possedere ETH nel tuo conto.
- Ad esempio, se acquisti un NFT la proprietà del token univoco viene trasferita al tuo portafoglio tramite il tuo indirizzo pubblico.
- Il token dimostra che la tua copia del file digitale è l'originale.
- La tua chiave privata è la prova che dimostra la proprietà dell'originale.
@@ -289,11 +289,10 @@ Gli NFT stanno diventando sempre più popolari, il che significa che sono anche
Per chiarire alcune cose:
-- I NFT non contribuiscono direttamente ad aumentare l'impronta di carbonio di Ethereum.
-- Al momento il modo con cui Ethereum garantisce la sicurezza dei tuoi fondi e asset è ad alta intensità energetica, ma sta per migliorare.
-- Una volta migliorata, l'impronta di carbonio di Ethereum sarà ridotta del 99,95%, diventando più efficiente dal punto di vista energetico rispetto a molti altri settori.
+- La creazione e il trasferimento di NFT sono solo transazioni di Ethereum: non influenzano direttamente l'energia consumata da Ethereum, né spendono autonomamente la propria energia.
+- Ethereum è una blockchain a basso consumo energetico, a significare che l'impatto ambientale della creazione, dell'acquisto e del trasferimento dei NFT è molto ridotto.
-Per spiegarti meglio dovremo entrare un po' più nel tecnico, quindi abbi pazienza...
+Le prossime sezioni spiegano ulteriormente con qualche dettaglio tecnico in più...
### Non incolpare gli NFT {#nft-qualities}
@@ -303,143 +302,39 @@ Decentralizzato significa che tu e tutti gli altri potete verificare il possesso
Sicuro significa che nessuno può copiare/incollare il tuo NFT o sottrarlo.
-Queste qualità di Ethereum rendono possibile possedere digitalmente oggetti unici e ottenere un prezzo equo per i tuoi contenuti. Ma questo ha un costo. Blockchain come Bitcoin ed Ethereum consumano molta energia in questo momento, in quanto occorre molta energia per preservare queste qualità. Se fosse facile riscrivere la storia di Ethereum in modo da rubare NFT o criptovalute, il sistema crollerebbe.
+Queste qualità di Ethereum rendono possibile possedere digitalmente oggetti unici e ottenere un prezzo equo per i tuoi contenuti. Ethereum protegge le risorse usando un meccanismo di consenso decentralizzato che coinvolge il ['proof-of-stake'](/developers/docs/consensus-mechanisms/pos). Questo è un metodo a basse emissioni di carbonio che può aggiungere un blocco di transazioni alla catena ed è considerato più sicuro dell'alternativa ad alto consumo energetico, il ['proof-of-work'](/developers/docs/consensus-mechanisms/pow). I NFT sono stati associati a elevati consumi energetici perché Ethereum era protetto usando il proof-of-work. Ciò non è più vero.
-#### Il processo per coniare il tuo NFT {#minting-nfts}
+#### Coniare NFT {#minting-nfts}
Quando si conia un NFT, devono accadere alcune cose:
- Deve essere confermato come un asset sulla blockchain.
-- Il saldo del conto del proprietario deve essere aggiornato per includere tale asset. In questo modo sarà successivamente possibile scambiarlo o "possederlo" in modo verificabile.
-- Le transazioni che confermano quanto sopra devono essere aggiunte ad un blocco e "immortalate" nella catena.
-- Il blocco deve essere confermato da tutti nella rete come "corretto". Questo consenso elimina la necessità di intermediari, in quanto la rete accetta che il NFT esiste e appartiene a te. Inoltre, essendo sulla catena, può essere verificato da chiunque. Questo è uno dei modi con cui Ethereum aiuta i creatori di NFT a massimizzare i guadagni.
+- Il saldo del conto del proprietario dev'esser aggiornato per includere tale risorsa. In questo modo sarà successivamente possibile scambiarlo o "possederlo" in modo verificabile.
+- Le transazioni che confermano l'esigenza suddetta di esser aggiunti a un blocco e "immortalati" sulla catena.
+- Il blocco deve essere confermato da tutti nella rete come "corretto". Questo consenso elimina la necessità di intermediari, in quanto la rete accetta che il NFT esiste e appartiene a te. Inoltre, essendo sulla catena, può essere verificato da chiunque. Questo è uno dei modi in cui Ethereum aiuta i creatori di NFT a massimizzare i propri guadagni.
-Tutti questi compiti sono svolti dai miner, che provvedono a informare il resto della rete del tuo NFT e di chi lo possiede. Ciò significa che il mining deve essere sufficientemente difficile, altrimenti chiunque potrebbe affermare di possedere il NFT che hai appena coniato e trasferire la proprietà in modo fraudolento. Esistono molti incentivi per garantire che i miner agiscano con onestà.
+Tutte queste mansioni sono svolte dai produttori e validatori di blocchi. I propositori di blocchi aggiungono la transazione del tuo NFT a un blocco e la trasmettono al resto della rete. I validatori verificano che la transazione sia valida e, poi, la aggiungono ai loro database. Esistono molti incentivi cripto-economici per assicurarsi che i validatori stiano agendo con onestà. Altrimenti, chiunque potrebbe semplicemente rivendicare il proprio NFT da te appena coniato e trasferirne fraudolentemente la proprietà.
-[Maggiori informazioni sul mining](/developers/docs/consensus-mechanisms/pow/)
+#### Sicurezza dei NFT {#nft-security}
-#### Proteggere il tuo NFT con il mining {#securing-nfts}
+La sicurezza di Ethereum deriva dal proof-of-stake. Il sistema è progettato per disincentivare economicamente le azioni malevole, rendendo Ethereum a prova di manomissione. Questo è ciò che rende possibili i NFT. Una volta che il blocco contenente la transazione del tuo NFT diventa finalizzato, modificarlo costerebbe milioni di ETH a un utente malevolo. Chiunque esegua il software di Ethereum potrebbe immediatamente rilevare la manomissione disonesta con un NFT e l'utente malevolo sarebbe penalizzato economicamente ed espulso.
-La difficoltà del mining deriva dal fatto che ci vuole tanta potenza di calcolo per creare nuovi blocchi nella catena. È importante sottolineare che i blocchi vengono creati in modo coerente, non solo quando sono necessari. Vengono creati ogni 12 secondi circa.
+I problemi di sicurezza dei NFT sono molto spesso correlati alle truffe di phishing, alle vulnerabilità dei contratti intelligenti o agli errori degli utenti (come esporre inavvertitamente le chiavi private), rendendo la sicurezza di un buon portafoglio critica per i proprietari di NFT.
-Ciò è importante per rendere Ethereum a prova di manomissione, una delle qualità che rende possibile gli NFT. Maggiore è il numero di blocchi, più sicura è la catena. Se il tuo NFT è stato creato nel blocco #600 e un hacker dovesse provare a rubare il tuo NFT modificando i suoi dati, l'impronta digitale di tutti i blocchi successivi cambierebbe. Chiunque esegua il software Ethereum sarebbe quindi immediatamente in grado di capire ed evitare che accada.
-
-Questo significa però che occorre usare costantemente della potenza di calcolo. Significa anche che un blocco contenente 0 transazioni di NFT avrà comunque grossomodo la stessa impronta di carbonio, in quanto verrà consumata potenza di calcolo per crearlo. I blocchi saranno riempiti da altre transazioni non basate su NFT.
-
-#### In questo momento le blockchain sono ad alta intensità energetica {#blockchains-intensive}
-
-Ebbene sì, la creazione di blocchi mediante il mining è associata a un'impronta di carbonio (e questo è un problema anche per catene come Bitcoin), ma non è direttamente colpa degli NFT.
-
-Molte attività connesse al mining utilizzano fonti energetiche rinnovabili o energia inutilizzata in luoghi remoti. Ricordiamo inoltre che i settori che gli NFT e le criptovalute stanno rivoluzionando hanno anch'essi enormi impronte di carbonio. Ma solo perché i settori esistenti sono poco virtuosi, non significa che non dovremmo sforzarci di fare meglio.
-
-Infatti lo facciamo. Ethereum sta evolvendo per rendere l'utilizzo di Ethereum (e di riflesso gli NFT) più efficiente sotto il profilo energetico. Questo è sempre stato il piano, fin dall'inizio.
-
-Non siamo qui per difendere l'impronta ambientale del mining, ma vogliamo spiegare in che modo le cose stanno cambiando per il meglio.
-
-### Un futuro più verde... {#a-greener-future}
-
-Da quando Ethereum è in circolazione, il consumo energetico del mining è stato un'enorme area di interesse per sviluppatori e ricercatori. E la visione è sempre stata quella di sostituirlo il prima possibile. [Maggiori informazioni sulla visione di Ethereum](/upgrades/vision/)
-
-Questa visione sta prendendo forma in questo momento.
-
-#### Un Ethereum più verde {#greener-ethereum}
-
-Ethereum sta attualmente attraversando una serie di aggiornamenti che sostituiranno il mining con lo [staking](/staking/). Questo processo rimuoverà la potenza di calcolo come meccanismo di sicurezza e ridurrà l'impronta di carbonio di Ethereum di circa il 99,95%[^1]. In questo mondo, gli staker impegnano fondi anziché potenza di calcolo per proteggere la rete.
-
-Il costo energetico di Ethereum diventerà il costo di funzionamento di un computer domestico moltiplicato per il numero di nodi nella rete. Se ci sono 10.000 nodi nella rete e il costo connesso al funzionamento di un computer domestico è di circa 525kWh all'anno, si arriva a 5.250.000kWh[^1] all'anno per l'intera rete.
-
-Possiamo usare questo dato per confrontare il futuro di Ethereum con un servizio globale come Visa. 100.000 transazioni Visa utilizzano 149kWh di energia[^2]. In Ethereum con proof-of-stake, quello stesso numero di transazioni costerebbe 17.4 kWh d'energia, pari a circa l'11% dell'energia totale[^3]. Questo senza considerare le molte ottimizzazioni a cui si sta lavorando in parallelo al livello del consenso e le shard chain, come i [rollup](/glossary/#rollups). Si potrebbe arrivare addirittura a 0,1666666667kWh di energia per 100.000 transazioni.
-
-È importante sottolineare che ciò migliora l'efficienza energetica preservando la decentralizzazione e la sicurezza di Ethereum. È possibile che molte altre blockchain esistenti usino già una qualche forma di staking, ma sono garantite da pochi staker selezionati, non dalle migliaia che avrà Ethereum. Maggiore è la decentralizzazione, più sicuro è il sistema.
-
-[Maggiori informazioni sulle stime energetiche](#footnotes-and-sources)
-
-_Abbiamo fornito il confronto di base con Visa, ossia con un nome familiare, per farti comprendere il consumo energetico di Ethereum proof-of-stake. Tuttavia, nella pratica non è proprio corretto confrontare in base al numero di transazioni. La produzione di energia di Ethereum è basata sul tempo. Se Ethereum facesse più o meno le stesse transazioni ogni minuto, la produzione di energia rimarrebbe la stessa._
-
-_È anche importante ricordare che Ethereum non fa solo transazioni finanziarie: è una piattaforma per applicazioni, quindi sarebbe più equo fare un confronto con diverse aziende/diversi settori tra cui Visa, AWS ed altre ancora!_
-
-#### Tempistiche {#timelines}
-
-Il processo è già iniziato. [La Beacon Chain](/upgrades/beacon-chain/), il primo aggiornamento, è stato lanciato a dicembre 2020. Esso fornisce le basi per lo staking consentendo agli staker di unirsi al sistema. Il passo successivo relativo all'efficienza energetica è quello di fondere l'attuale catena, quella protetta dai miner, nella beacon chain, in cui il mining non è necessario. Le tempistiche non possono essere precise in questa fase, ma si stima che ciò accadrà a un certo punto nel corso del 2022. Questo processo è noto come La Fusione (in precedenza “docking”). [Maggiori informazioni sulla fusione](/upgrades/merge/).
-
-
- Maggiori informazioni sugli aggiornamenti di Ethereum
+
+ Di più sulla sicurezza
## Costruire con i NFT {#build-with-nfts}
-La maggior parte degli NFT è costruita utilizzando uno standard coerente, noto come [ERC-721](/developers/docs/standards/tokens/erc-721/). Tuttavia, esistono altri standard che potrebbero interessarti. Lo standard [ERC-1155](https://blog.enjincoin.io/erc-1155-the-crypto-item-standard-ac9cf1c5a226) ammette i token semi-fungibili, particolarmente utili nel campo del gioco. Più di recente, è stato proposto l'[EIP-2309](https://eips.ethereum.org/EIPS/eip-2309) per rendere notevolmente più efficiente la coniazione degli NFT. Questo standard permette di coniare tutti gli NTF che vuoi in un'unica transazione!
+Gran parte dei NFT è creata usando uno standard coerente, noto come [ERC-721](/developers/docs/standards/tokens/erc-721/). Tuttavia, esistono altri standard che potrebbero interessarti. Lo standard [ERC-1155](https://blog.enjincoin.io/erc-1155-the-crypto-item-standard-ac9cf1c5a226) ammette i token semi-fungibili, particolarmente utili nel mondo dei videogiochi. E, più di recente, è stato proposto l'[EIP-2309](https://eips.ethereum.org/EIPS/eip-2309), per rendere il conio di NFT molto più efficiente. Questo standard ti consente di coniarne quanti preferisci, in un'unica transazione!
## Lettura consigliate {#further-reading}
-- [Crypto art data](https://cryptoart.io/data) – Richard Chen, aggiornato automaticamente
+- [Crypto art data](https://cryptoart.io/data) – _Richard Chen, aggiornato automaticamente_
- [OpenSea: the NFT Bible](https://opensea.io/blog/guides/non-fungible-tokens/) – _Devin Fizner, 10 Gennaio 2020_
- [A beginner's guide to NFTs](https://linda.mirror.xyz/df649d61efb92c910464a4e74ae213c4cab150b9cbcc4b7fb6090fc77881a95d) – _Linda Xie, Gennaio 2020_
- [Everything you need to know about the metaverse](https://foundation.app/blog/enter-the-metaverse) – _Foundation team, foundation.app_
- [No, CryptoArtists Aren’t Harming the Planet](https://medium.com/superrare/no-cryptoartists-arent-harming-the-planet-43182f72fc61)
-- [A country's worth of power, no more](https://blog.ethereum.org/2021/05/18/country-power-no-more/) – _Carl Beekhuizen, 18 maggio 2021_
-
-
-
-### Note e fonti {#footnotes-and-sources}
-
-Qui spieghiamo come siamo arrivati alle stime energetiche riportate sopra. Le stime si applicano alla rete nel suo insieme e non sono riservate solo al processo di creazione, acquisto o vendita di NFT.
-
-#### 1. Riduzione del consumo energetico del 99,95% rispetto al mining {#fn-1}
-
-La riduzione del 99,95% del consumo di energia grazie al passaggio da un sistema protetto mediante il mining a un sistema protetto con lo staking è calcolata utilizzando le seguenti fonti di dati:
-
-- 44,49 TWh di energia elettrica annualizzata viene consumata dal mining di Ethereum - [Digiconomist](https://digiconomist.net/ethereum-energy-consumption)
-
-- Un computer fisso medio, ovvero tutto ciò che serve per eseguire il Proof of Stake, consuma 0,06kWh di energia all'ora – [Grafico sul consumo energetico della Silicon Valley](https://www.siliconvalleypower.com/residents/save-energy/appliance-energy-use-chart) (Alcune stime sono leggermente superiori, a 0,15kWh)
-
-Al momento della redazione, sono presenti 140.592 validatori da 16.405 indirizzi unici. Di questi, si presume che 87.897 validatori stiano effettuando lo staking da casa.
-
-Si ipotizza che la persona media che effettua lo staking da casa utilizzi un personal computer fisso da 100 watt per eseguire una media di 5,4 client di convalida.
-
-Gli 87.897 validatori che operano da casa equivalgono a 16.300 utenti che consumano ~1,64 megawatt di energia.
-
-Gli altri validatori sono gestiti da operatori di custodia, quali scambi e servizi di staking. Si può presumere che consumino 100w per 5,5 validatori. Si tratta di una sovrastima generale, con margine di sicurezza.
-
-In totale, Ethereum con il proof-of-stake consuma quindi qualcosa come 2,62 megawatt, circa lo stesso di una piccola città americana.
-
-Si tratta di una riduzione di almeno il 99,95% del consumo totale di energia rispetto alla stima effettuata da Digiconomist di 44,94 TWh all'anno attualmente consumati dai miner di Ethereum.
-
-#### 2. Consumo energetico di Visa {#fn-2}
-
-Il costo di 100.000 transazioni Visa è di 149 kwH - [Consumo energetico medio della rete Bitcoin per transazione rispetto alla rete VISA al 2020, Statista](https://www.statista.com/statistics/881541/bitcoin-energy-consumption-transaction-comparison-visa/)
-
-A settembre 2020 hanno elaborato 140.839.000.000 transazioni – [Report finanziario di Visa nel Q4 2020](https://s1.q4cdn.com/050606653/files/doc_financials/2020/q4/Visa-Inc.-Q4-2020-Operational-Performance-Data.pdf)
-
-#### 3. Consumo energetico per 100.000 transazioni su una rete di proof-of-stake frammentata {#fn-3}
-
-Si stima che gli aggiornamenti di scalabilità consentiranno alla rete di elaborare tra le 25.000 e le 100.000 transazioni al secondo, con [100.000 come massimo teorico al momento](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698).
-
-[Vitalik Buterin sulle transazioni per secondo potenziali con lo sharding](https://twitter.com/VitalikButerin/status/1312905884549300224)
-
-Come minimo, lo sharding consentirà 64 volte la quantità di transazioni di oggi, che si attesta a circa 15 transazioni. È la quantità di shard chain (dati e capacità supplementari) che vengono introdotte. [Maggiori informazioni sulle shard chain](/upgrades/sharding/)
-
-Ciò significa che possiamo stimare quanto tempo ci vorrà per elaborare 100.000 transazioni in modo da poterlo confrontare con l'esempio di Visa sopra riportato.
-
-- `15 * 64 = 960` transazioni al secondo.
-- `100.000 / 960 = 104,2` secondi per elaborare 100.000 transazioni.
-
-In 104,2 secondi, la rete Ethereum utilizzerà la seguente quantità di energia:
-
-`1,44kWh di uso giornaliero * 10.000 nodi di rete = 14.400kWh` al giorno.
-
-Ci sono 86.400 secondi in un giorno, quindi `14.400 / 86.400 = 0,1666666667kWh` al secondo.
-
-Se moltiplichiamo ciò per la quantità di tempo impiegata per elaborare 100.000 transazioni: `0.1666666667 * 104.2 = 17.3666666701 kWh`.
-
-Ciò equivale all'**11,6554809866%** dell'energia consumata dalla stessa quantità di transazioni con Visa.
-
-E ricorda, questo si basa sulla quantità minima di transazioni che Ethereum potrà gestire al secondo. Se Ethereum raggiunge il suo potenziale di 100.000 transazioni al secondo, 100.000 transazioni consumerebbero 0,1666666667 kWh.
-
-In altre parole, se Visa gestisse 140.839.000.000 di transazioni a un costo di 149 kWh per 100.000 transazioni, consumerebbe 209.850.110 kWh di energia all'anno.
-
-Ethereum in un anno consuma 5.256.000 kWh. Con un potenziale di 788.940.000.000 - 3.153.600.000.000 transazioni elaborate in quel periodo.
-
-
- Se pensi che questi dati siano errati o possano essere resi più accurati, ti invitiamo ad aprire una segnalazione o un PR. Queste sono stime del team di ethereum.org effettuate usando informazioni pubblicamente accessibili e il design pianificato di Ethereum. Esse non costituiscono una promessa ufficiale dell'Ethereum Foundation.
-
+- [Consumo energetico di Ethereum](/energy-consumption/)
+- [L'energia necessaria a un paese; non più](https://blog.ethereum.org/2021/05/18/country-power-no-more/) – _Carl Beekhuizen, 18 maggio 2021_
diff --git a/src/content/translations/it/security/index.md b/src/content/translations/it/security/index.md
index f84a78cf1f9..e7a67b214f5 100644
--- a/src/content/translations/it/security/index.md
+++ b/src/content/translations/it/security/index.md
@@ -14,7 +14,7 @@ Con l'interesse per le criptovalute in crescita, imparare le migliori pratiche q
### Usa password forti {#use-strong-passwords}
-[Oltre l'80% degli hack di account sono il risultato di password deboli o rubate](https://cloudnine.com/ediscoverydaily/electronic-discovery/80-percent-hacking-related-breaches-related-password-issues-cybersecurity-trends/). Una lunga combinazione di caratteri, numeri e simboli è la cosa migliore per mantenere sicuri gli account.
+[Oltre l'80% delle violazioni dei conti sono un risultato di password deboli o rubate](https://cloudnine.com/ediscoverydaily/electronic-discovery/80-percent-hacking-related-breaches-related-password-issues-cybersecurity-trends/). Una lunga combinazione di caratteri, numeri e simboli è la cosa migliore per mantenere sicuri i tuoi conti.
Un errore comune che le persone fanno è usare una combinazione di due o tre parole comuni e correlate tra loro. Le password di questo tipo sono insicure perché sono inclini a una semplice tecnica di hacking conosciuta come [attacco a dizionario](https://wikipedia.org/wiki/Dictionary_attack).
@@ -37,7 +37,7 @@ Un altro errore comune è l'utilizzo di password che possono essere facilmente i
### Usa password uniche per tutto {#use-unique-passwords}
-Una password forte non fornisce tanta protezione se la password viene rivelata in una violazione di dati. Il sito web [Have I Been Pwned](https://haveibeenpwned.com) ti permette di verificare se i tuoi account sono stati coinvolti in una qualsiasi violazione di dati memorizzati nel loro database. Se sì, **dovresti cambiare immediatamente le password violate**. L'utilizzo di password uniche per ogni account riduce il rischio che gli hacker ottengano l'accesso a tutti i tuoi account quando una delle tue password è compromessa.
+Una password forte non fornisce tanta protezione se la password viene rivelata in una violazione di dati. Il sito web [Have I Been Pwned](https://haveibeenpwned.com) ti consente di verificare se i tuoi conti sono stati coinvolti in una qualsiasi violazione di dati memorizzata nel loro database. Se sì, **dovresti cambiare immediatamente le password violate**. L'utilizzo di password univoche per ogni conto, riduce il rischio che gli utenti malevoli ottengano accesso a tutti i tuoi conti, alla compromissione di una delle tue password.
### Usa un gestore di password {#use-password-manager}
@@ -47,7 +47,7 @@ Una password forte non fornisce tanta protezione se la password viene rivelata i
-Ricordare password forti e uniche per ogni account non è l'ideale. Un gestore di password offre un deposito sicuro e criptato per tutte le tue password a cui puoi accedere attraverso una password principale forte. Suggeriscono inoltre password forti quando ci si iscrive a un nuovo servizio, in modo da non doverne creare una propria. Molti gestori di password dicono anche se si è subita una violazione dei dati, permettendo di cambiare le password prima di qualsiasi attacco malevolo.
+Ricordare password forti e univoche per ogni tuo conto, non è ideale. Un gestore di password offre un deposito sicuro e criptato per tutte le tue password a cui puoi accedere attraverso una password principale forte. Suggeriscono inoltre password forti quando ci si iscrive a un nuovo servizio, in modo da non doverne creare una propria. Molti gestori di password dicono anche se si è subita una violazione dei dati, permettendo di cambiare le password prima di qualsiasi attacco malevolo.
![Esempio di utilizzo di un gestore di password](./passwordManager.png)
@@ -66,7 +66,7 @@ Per provare che sei veramente tu, ci sono diverse prove uniche che possono esser
- Qualcosa di te che sia univoco (come una impronta digitale o uno scanner iride/facciale)
- Qualcosa che possiedi (una chiave di sicurezza o un'app di autenticazione sul tuo telefono)
-L'utilizzo dell'**autenticazione a due fattori (2FA)** fornisce un ulteriore _fattore di sicurezza_ per i tuoi account online in modo che la sola conoscenza della tua password (qualcosa che conosci) non sia sufficiente per accedere a un account. Più comunemente, il secondo fattore è un codice casuale di 6 cifre, noto come **password monouso a tempo (TOTP)**, a cui si può accedere attraverso un'app di autenticazione come Google Authenticator o Authy. Esse funzionano come fattore "qualcosa che possiedi" perché il seme che genera il codice a tempo è memorizzato sul tuo dispositivo.
+L'uso dell'**Autenticazione a Due Fattori (A2F)**, fornisce un *fattore di sicurezza* aggiuntivo per i tuoi conti online, così che il solo conoscere la tua password non sia abbastanza per accedere a un conto. Più comunemente, il secondo fattore è un codice casuale di 6 cifre, noto come **password monouso a tempo (TOTP)**, a cui si può accedere attraverso un'app di autenticazione come Google Authenticator o Authy. Esse funzionano come fattore "qualcosa che possiedi" perché il seme che genera il codice a tempo è memorizzato sul tuo dispositivo.
@@ -150,13 +150,15 @@ Mantenere le chiavi private offline riduce massicciamente il rischio di essere v
L'invio accidentale di criptovalute all'indirizzo del portafoglio sbagliato è un errore comune. **Una transazione inviata su Ethereum è irreversibile.** A meno che tu non conosca il proprietario dell'indirizzo e possa convincerlo a rimandarti i tuoi fondi non ci sarà modo per te di recuperarli.
-Assicurati sempre che l'indirizzo a cui stai inviando corrisponda esattamente all'indirizzo del destinatario desiderato prima di inviare una transazione. Quando si interagisce con uno smart contract, si raccomanda anche di leggere il messaggio della transazione prima di firmare.
+Assicurati sempre che l'indirizzo a cui stai inviando corrisponda esattamente all'indirizzo del destinatario desiderato prima di inviare una transazione. È anche consigliato, interagendo con un contratto intelligente, leggere il messaggio della transazione prima di firmare.
-### Impostare i limiti di spesa degli smart contract {#spend-limits}
+### Impostare i limiti di spesa del contratto intelligente {#spend-limits}
-Quando si interagisce con gli smart contract, non permettere limiti di spesa illimitati. Una spesa illimitata potrebbe consentire allo smart contract di prosciugare il tuo portafoglio. Invece, fissa dei limiti di spesa solo all'importo necessario per la transazione.
+Interagendo con i contratti intelligenti, non consentire limiti di spesa illimitati. Una spesa illimitata potrebbe consentire al contratto intelligente di prosciugare il tuo portafoglio. Invece, fissa dei limiti di spesa solo all'importo necessario per la transazione.
-Molti portafogli Ethereum offrono una protezione dei limiti per salvaguardare l'utente dal prosciugamento dei conti.
+Molti portafogli di Ethereum offrono una protezione dei limiti per salvaguardarti dal prosciugamento dei conti.
+
+[Esplora portafogli con protezione dei limiti](/wallets/find-wallet/?filters=has_limits_protection)
@@ -165,18 +167,18 @@ Molti portafogli Ethereum offrono una protezione dei limiti per salvaguardare l'
I truffatori sono sempre alla ricerca di modi per toglierti i fondi. È impossibile fermare completamente i truffatori, ma possiamo renderli meno efficaci essendo consapevoli delle tecniche più utilizzate. Ci sono molte varianti di queste truffe, ma generalmente seguono gli stessi schemi di alto livello. Se non altro, ricorda:
- sii sempre scettico/a
-- nessuno ti darà ETH gratis o scontati!
+- nessuno ti darà ETH gratis o scontati
- nessuno ha bisogno di accedere alle tue chiavi private o ai tuoi dati personali
### Truffa del giveaway {#giveaway}
Una delle truffe più comuni in criptovaluta è la truffa del giveaway. La truffa del giveaway può assumere molte forme, ma la premessa generale è che se invii ETH all'indirizzo del portafoglio fornito, riceverai indietro il tuo ETH ma raddoppiato. *Per questa ragione è conosciuta anche come la truffa del 2 per 1.*
-Queste truffe di solito prevedono un periodo limitato di opportunità per rivendicare il giveaway incoraggiando un processo decisionale scadente e creando un senso di falsa urgenza.
+Queste truffe di solito prevedono un periodo limitato di opportunità per richiedere l'omaggio incoraggiando un processo decisionale scadente e creare un falsa senso di urgenza.
#### Hack dei social media {#social-media-hacks}
-Nel luglio del 2020 si è verificata una situazione del genere di alto profilo: sono stati violati gli account Twitter di celebrità e organizzazioni di spicco. L'hacker ha pubblicato simultaneamente un giveaway di Bitcoin sugli account violati. Sebbene i tweet ingannevoli siano stati rapidamente notati ed eliminati, gli hacker sono riusciti comunque a farla franca guadagnando 11 bitcoin (ovvero 500.000 dollari a settembre 2021)
+A luglio 2020 si è verificata una simile versione ad alto profilo, quando i profili di Twitter di celebrità e organizzazioni prominenti, sono stati violati. L'hacker ha pubblicato simultaneamente un giveaway di Bitcoin sui conti violati. Sebbene i tweet ingannevoli siano stati rapidamente notati ed eliminati, gli hacker riuscirono comunque a farla franca con un'estorsione del valore di 11 bitcoin (o $500.000 a settembre 2021).
![Una truffa su Twitter](./appleTwitterScam.png)
@@ -202,7 +204,7 @@ Come regola generale, il personale non comunicherà mai con te attraverso canali
- Non condividere mai le chiavi private, le frasi seed o le password
- Non consentire a nessuno l'accesso remoto al tuo computer
-- Non comunicare mai al di fuori dei canali designati dall'organizzazione
+- Non comunicare mai al di fuori dai canali designati dall'organizzazione
@@ -210,11 +212,19 @@ Come regola generale, il personale non comunicherà mai con te attraverso canali
-### Truffe di tipo phishing {#phishing-scams}
+### Truffa del token "Eth2" {#eth2-token-scam}
+
+Nella corsa a [La Fusione](/upgrades/merge/), i truffatori hanno approfittato della confusione sul termine 'Eth2' per provare a convincere gli utenti a riscattare i propri ETH per un token 'ETH2'. Non esiste alcun 'ETH2' e non è stato introdotto alcun altro token legittimo con La Fusione. Gli ETH che possedevi prima de La Fusione, sono gli stessi ETH adesso. **Non serve intraprendere alcuna azione correlata ai tuoi ETH per tenere conto del passaggio dal proof-of-work al proof-of-stake**.
+
+I truffatori potrebbero apparire sotto forma di "supporto", dicendoti che se depositi i tuoi ETH, riceverai degli 'ETH2' in cambio. Non esiste alcun [supporto ufficiale di Ethereum](/community/support/) e non esiste alcun nuovo token. Non condividere mai la frase di seed del tuo portafoglio con nessuno.
+
+_Nota: esistono token/ticker derivativi che potrebbero rappresentare ETH in staking (cioè rETH da Rocket Pool, stETH da Lido, ETH2 da Coinbase), ma non dovresti "migrare” verso di essi._
-Le truffe di tipo phishing sono un altro metodo sempre più comune che i truffatori usano per tentare di rubare i fondi dal tuo portafoglio.
+### Truffe di phishing {#phishing-scams}
-Alcune e-mail di phishing chiedono agli utenti di cliccare su link che li reindirizzano a siti web falsi, chiedendo loro di inserire la loro frase seed, reimpostare la password o inviare ETH. Altri possono chiederti di installare inconsapevolmente un malware per infettare il tuo computer e dare ai truffatori l'accesso ai file del tuo computer.
+Le truffe di phishing sono un altro metodo sempre più comune che i truffatori utilizzeranno, per tentare di rubare i fondi del tuo portafoglio.
+
+Alcune email di phishing chiedono agli utenti di cliccare su link che li reindirizzeranno a siti web falsi, chiedendo loro di inserire la loro frase di seed, ripristinare la loro password o di inviare ETH. Gli altri potrebbero chiederti di installare inconsapevolmente un malware, per infettarti il computer e dare accesso ai file del tuo computer ai truffatori.
Se ricevi un'email da un mittente sconosciuto, ricorda:
@@ -222,23 +232,23 @@ Se ricevi un'email da un mittente sconosciuto, ricorda:
- Non divulgare mai le tue informazioni personali o password a nessuno
- Elimina le e-mail da mittenti sconosciuti
-[Altro su come evitare truffe di tipo phishing](https://support.mycrypto.com/staying-safe/mycrypto-protips-how-not-to-get-scammed-during-ico)
+[Di più su come evitare le truffe di phishing](https://support.mycrypto.com/staying-safe/mycrypto-protips-how-not-to-get-scammed-during-ico)
-### Intermediari-truffatori di scambi di criptovalute {#broker-scams}
+### Truffe dei broker di trading di criptovalute {#broker-scams}
-Gli intermediari-truffatori di scambi di criptovalute affermano di essere intermediari di criptovalute specializzati che si offrono di prendere i tuoi soldi e investirli per tuo conto. Questa offerta è di solito accompagnata da promesse di rendimenti irrealistici. Dopo che il truffatore ha ricevuto i tuoi fondi, può indurti a inviarne altri, in modo che tu non perda ulteriori guadagni dall'investimento, o può scomparire del tutto.
+Le truffe dei broker di trading di criptovalute affermano di esser broker specialisti in criptovalute, che offriranno di prendere il tuo denaro e di investirlo per conto tuo. Le promesse di rendimenti irrealistici accompagnano solitamente quest'offerta. Dopo che il truffatore riceve i tuoi fondi, può indurti a inviarne altri, così che tu non perda ulteriori guadagni dall'investimento, o potrebbe scomparire del tutto.
-Questi intermediari fraudolenti trovano le loro vittime utilizzando account falsi su YouTube per iniziare conversazioni apparentemente naturali sull'intermediario. Queste conversazioni spesso hanno un alto numero di like per aumentarne la legittimità, ma i voti positivi provengono tutti da account bot.
+Questi broker fraudolenti trovano le proprie vittime usando profili YouTube falsi per creare conversazioni apparentemente naturali sul broker. Queste conversazioni, spesso, sono molto votate positivamente, per aumentarne la legittimità, sebbene i voti positivi provengano tutti da bot.
-**In Internet non fidarti degli sconosciuti che vogliono investire a tuo nome. Perderai la tua criptovaluta.**
+**Non fidarti degli sconosciuti su Internet che desiderano investire per tuo conto. Perderai le tue criptovalute.**
-![La truffa di un intermediario di scambi su YouTube](./brokerScam.png)
+![Una truffa del broker di trading su YouTube](./brokerScam.png)
-### Le truffe dei gruppi di "minatori" di criptovalute {#mining-pool-scams}
+### Truffe dei pool di mining di criptovalute {#mining-pool-scams}
-Le truffe dei gruppi di "minatori" sono perpetrate da persone che ti contattano senza essere sollecitati affermando che puoi ottenere grandi guadagni unendoti a un gruppo di "minatori" su Ethereum. Il truffatore farà le sue affermazioni e rimarrà in contatto con te per tutto il tempo necessario. Essenzialmente, il truffatore cercherà di convincerti che se ti unisci a un gruppo di "minatori" su Ethereum, la tua criptovaluta sarà usata per creare ETH e ti saranno pagati i dividendi sotto forma di ETH. All'inizio noterai solo che la tua criptovaluta avrà scarsi rendimenti. Questo semplicemente per invogliarti a investire di più. Alla fine, tutti i tuoi fondi saranno inviati a un indirizzo sconosciuto e il truffatore scomparirà o addirittura, come è accaduto in un caso recente, continuerà a rimanere in contatto.
+Da settembre 2022, il mining su Ethereum non è più possibile. Tuttavia, le truffe dei pool di mining continuano a esistere. Le truffe dei pool di mining coinvolgono persone che ti contattano senza esser sollecitati e che affermano che tu possa ricevere grandi introiti unendoti a un pool di mining di Ethereum. Il truffatore farà affermazioni e rimarrà in contatto con te per tutto il tempo necessario. Essenzialmente, il truffatore proverà a convincerti che se ti unisci a un pool di mining di Ethereum, la tua criptovaluta sarà usata per creare ETH e che riceverai dei dividendi sotto forma di ETH. Alla fine, noterai che la tua criptovaluta avrà scarsi rendimenti. Ciò, semplicemente, serve per invogliarti a investire di più. Infine, tutti i tuoi fondi saranno inviati a un indirizzo sconosciuto e il truffatore scomparirà o, in alcuni casi, continuerà a rimanere in contatto, come successo in un caso recente.
-In conclusione, diffida delle persone che ti contattano sui social media chiedendoti di far parte di un gruppo di "minatori". Una volta persa la tua criptovaluta è andata.
+In conclusione, diffida delle persone che ti contattano sui social, chiedendoti di far parte di un pool di mining. Una volta perse le tue criptovalute, non potrai fare nulla.
Alcune cose da ricordare:
@@ -246,19 +256,13 @@ Alcune cose da ricordare:
- Fai la tua ricerca su staking, gruppi di liquidità, o altri modi di investire le tue criptovalute
- Raramente, se non mai, tali sistemi sono legittimi. Se lo fossero, probabilmente sarebbero mainstream e ne avresti sentito parlare.
-[Un uomo ha perso 200.000 dollari a causa della truffa di un gruppo di "minatori"](https://www.reddit.com/r/CoinBase/comments/r0qe0e/scam_or_possible_incredible_payout/)
-
-### Truffa del token "Eth2" {#eth2-token-scam}
-
-Con [la fusione](/upgrades/merge/) in arrivo nel 2022, i truffatori hanno approfittato della confusione intorno al termine "Eth2" per provare a convincere gli utenti a riscattare i loro ETH per un token "ETH2". Non esiste alcun "ETH2" o alcun altro nuovo token introdotto dalla fusione. L'ETH che possiedi oggi continuerà a essere lo stesso ETH dopo la fusione e non serve effettuare alcuno scambio del tuo ETH per la fusione.
-
-I truffatori potrebbero apparire sotto forma di "supporto", dicendoti che se depositi i tuoi ETH, riceverai degli "ETH2" in cambio. Non esiste alcun [supporto ufficiale di Ethereum](/community/support/) e non esiste alcun nuovo token. Non condividere mai la frase di seed del tuo portafoglio con nessuno.
+[Un uomo ha perso $200k in una truffa del pool di mining](https://www.reddit.com/r/CoinBase/comments/r0qe0e/scam_or_possible_incredible_payout/)
### Truffe airdrop {#airdrop-scams}
-Le truffe airdrop riguardano un progetto fraudolento di airdropping di un attivo (NFT, token) nel tuo portafoglio con il rimando a un sito web fraudolento per rivendicare l'attivo in questione. Ti sarà richiesto di accedere con il tuo portafoglio di Ethereum e di "approvare" una transazione tentando di reclamare. Questa transazione compromette il tuo conto inviando le tue chiavi pubblica e privata al truffatore. Una forma alternativa di questa truffa potrebbe chiederti di confermare una transazione che invia fondi al conto del truffatore.
+Le truffe di Airdrop prevedono un falso progetto di airdropping di una risorsa (NFT, token) nel tuo portafoglio e ti inviano a un sito web di truffa per rivendicare la risorsa in questione. Ti sarà richiesto di accedere con il tuo portafoglio di Ethereum e di "approvare" una transazione tentando di reclamare. Questa transazione compromette il tuo conto inviando la tua chiave pubblica e privata al truffatore. Una forma alternativa di questa truffa potrebbe chiederti di confermare una transazione che invia fondi al conto del truffatore.
-[Di più sulle truffe di airdrop](https://www.youtube.com/watch?v=LLL_nQp1lGk)
+[Maggiori informazioni sulle truffe di airdrop](https://www.youtube.com/watch?v=LLL_nQp1lGk)
@@ -281,4 +285,5 @@ Le truffe airdrop riguardano un progetto fraudolento di airdropping di un attivo
### Educazione alle truffe {#reading-scam-education}
- [Staying Safe: Common Scams](https://support.mycrypto.com/staying-safe/common-scams) - _MyCrypto_
-- [Avoiding Scams](https://bitcoin.org/en/scams) _Bitcoin.org_
+- [Evitare le Truffe](https://bitcoin.org/en/scams) - _Bitcoin.org_
+- [Discussione di Twitter sulle email e i messaggi di phishing di criptovalute comuni](https://twitter.com/tayvano_/status/1516225457640787969) - _Taylor Monahan_
diff --git a/src/content/translations/it/smart-contracts/index.md b/src/content/translations/it/smart-contracts/index.md
index 57d478e88f6..1d8ad26cc9d 100644
--- a/src/content/translations/it/smart-contracts/index.md
+++ b/src/content/translations/it/smart-contracts/index.md
@@ -1,16 +1,16 @@
---
-title: Smart contract
-description: Un'introduzione semplificata agli smart contract
+title: Contratti intelligenti
+description: Un'introduzione semplificata ai contratti intelligenti
lang: it
---
-# Introduzione agli smart contract {#introduction-to-smart-contracts}
+# Introduzione ai contratti intelligenti {#introduction-to-smart-contracts}
-Gli smart contract sono i mattoni alla base delle [applicazioni di Ethereum](/dapps/). Sono programmi informatici memorizzati sulla blockchain, che ci consentono di convertire i contratti tradizionali in equivalenti digitali. Gli smart contract sono molto logici, e seguono una struttura "se questo, allora quello". Questo significa che seguono precisamente la loro programmazione, e non sono modificabili.
+I contratti intelligenti sono i blocchi di costruzione alla base delle [applicazioni di Ethereum](/dapps/). Sono programmi informatici memorizzati sulla blockchain che consentono di convertire i contratti tradizionali in equivalenti digitali. I contratti intelligenti sono molto logici: seguendo una struttura "se questo, allora quello". Questo significa che seguono precisamente la loro programmazione, e non sono modificabili.
-Nick Szabo ha coniato il termine "smart contract" (in italiano: contratto intelligente). Nel 1994 ha scritto [un'introduzione al concetto](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart.contracts.html), e nel 1996 [un'esplorazione di ciò che gli smart contract possono fare](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart_contracts_2.html).
+Nick Szabo ha coniato il termine "smart contract" (contratto intelligente). Nel 1994, ha scritto [un'introduzione al concetto](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart.contracts.html) e, nel 1996, [un'esplorazione di ciò che i contratti intelligenti potrebbero fare](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart_contracts_2.html).
-Nick Szabo immaginò un mercato digitale basato su questi processi automatici e crittograficamente sicuri. Un luogo in cui le transazioni e le funzioni aziendali possono verificarsi in modo affidabile, senza intermediari. Gli smart contract su Ethereum hanno messo in pratica questa visione.
+Nick Szabo immaginò un mercato digitale basato su questi processi automatici e crittograficamente sicuri. Un luogo in cui le transazioni e le funzioni aziendali possono verificarsi in modo affidabile, senza intermediari. I contratti intelligenti su Ethereum hanno messo in pratica questa visione.
## Cosa sono i contratti? {#what-are-contracts}
@@ -28,13 +28,13 @@ Alice e Bob stanno facendo una gara in bici. Diciamo che Alice scommette con Bob
Questo sciocco esempio illustra il problema con qualsiasi accordo “non intelligente”. Anche se le condizioni dell'accordo sono soddisfatte (quindi, hai vinto la gara), devi comunque fidarti del fatto che un'altra persona soddisfi l'accordo (es., pagare la scommessa).
-## Smart contract {#smart-contracts}
+## Contratti intelligenti {#smart-contracts}
-Gli smart contract digitalizzano gli accordi, trasformando i termini di un accordo in codice informatico, che si esegue automaticamente quando i termini contrattuali sono soddisfatti.
+I contratti intelligenti digitalizzano gli accordi, trasformando i termini di un accordo in codice informatico, che si esegue automaticamente quando i termini contrattuali sono soddisfatti.
### Un distributore automatico digitale {#vending-machine}
-Una semplice metafora per uno smart contract è un distributore automatico, che funziona in modo simile a uno smart contract: degli input specifici garantiscono degli output predeterminati.
+Una semplice metafora per uno smart contract è un distributore automatico, che funziona in modo molto simile: degli input specifici garantiscono degli output predeterminati.
- Selezioni un prodotto
- Il distributore automatico indica l'importo richiesto per acquistare il prodotto
@@ -46,29 +46,29 @@ Il distributore automatico eroga il prodotto desiderato solo se sono soddisfatti
### Esecuzione automatica {#automation}
-Uno dei benefici più significativi che gli smart contract hanno rispetto ai contratti regolari, è che il risultato è eseguito automaticamente alla realizzazione delle condizioni contrattuali. Non serve aspettare che un umano esegua il risultato. In altre parole: con gli smart contract non serve più fidarsi della controparte.
+Uno dei benefici più significativi che i contratti intelligenti hanno rispetto ai contratti regolari, è che il risultato è eseguito automaticamente alla realizzazione delle condizioni contrattuali. Non serve aspettare che un umano esegua il risultato. In altre parole: i contratti intelligenti rimuovono la necessità di fiducia.
-Ad esempio, potresti scrivere uno smart contract che detiene i fondi in custodia per un bambino, consentendogli di ritirarli dopo una data specifica. Se provano a prelevare i fondi prima della data specificata, lo smart contract non sarà eseguito. Oppure, potresti scrivere un contratto che ti consegna automaticamente una versione digitale del titolo di un auto nel momento in cui paghi il rivenditore.
+Ad esempio, potresti scrivere un contratto intelligente che detiene i fondi in custodia per un bambino, consentendogli di ritirarli dopo una data specifica. Se provano a prelevare i fondi prima della data specificata, il contratto intelligente non sarà eseguito. Oppure, potresti scrivere un contratto che ti consegna automaticamente una versione digitale del titolo di un auto nel momento in cui paghi il rivenditore.
### Risultati prevedibili {#predictability}
-Il fattore umano è uno dei più motivi di fallimento più frequente dei contratti tradizionali. Ad esempio, due singoli giudici potrebbero interpretare un contratto tradizionale in modi differenti. Le loro interpretazioni potrebbero condurre a prendere decisioni differenti e a risultati non omogenei. Gli smart contract eliminano la possibilità di interpretazioni differenti. Al contrario, gli smart contract si eseguono precisamente secondo le condizioni scritte nel codice del contratto. Questa precisione significa che, partendo dalle stesse circostanze, lo smart contract produrrà lo stesso risultato.
+Il fattore umano è uno dei più motivi di fallimento più frequente dei contratti tradizionali. Ad esempio, due singoli giudici potrebbero interpretare un contratto tradizionale in modi differenti. Le loro interpretazioni potrebbero condurre a prendere decisioni differenti e a risultati non omogenei. I contratti intelligenti rimuovono la possibilità di interpretazioni differenti. Invece, i contratti intelligenti si eseguono precisamente secondo le condizioni scritte nel codice del contratto. Questa precisione significa che, date le stesse circostanze, il contratto intelligente produrrà lo stesso risultato.
### Registro pubblico {#public-record}
-Gli smart contract sono anche utili per i controlli e il monitoraggio. Poiché gli smart contract di Ethereum si trovano su una blockchain pubblica, chiunque può monitorare istantaneamente i trasferimenti di risorse e altre informazioni correlate. Ad esempio puoi verificare che qualcuno abbia inviato denaro al tuo indirizzo.
+I contratti intelligenti sono anche utili per i controlli e il monitoraggio. Poiché i contratti intelligenti di Ethereum si trovano su una blockchain pubblica, chiunque può monitorare istantaneamente i trasferimenti di risorse e altre informazioni correlate. Ad esempio puoi verificare che qualcuno abbia inviato denaro al tuo indirizzo.
### Protezione della privacy {#privacy-protection}
-Gli smart contract possono anche proteggere la nostra privacy. Poiché Ethereum è una rete pseudonima (le tue transazioni sono pubblicamente legate a un indirizzo crittografico univoco, non alla tua identità), puoi proteggere la tua privacy dagli osservatori.
+I contratti intelligenti, inoltre, possono proteggere la tua privacy. Poiché Ethereum è una rete pseudonima (le tue transazioni sono pubblicamente legate a un indirizzo crittografico univoco, non alla tua identità), puoi proteggere la tua privacy dagli osservatori.
### Termini visibili {#visible-terms}
-Infine, come nei contratti, puoi verificare cosa c'è in uno smart contract prima di firmarlo (o interagire con esso in altro modo). Ancora meglio, la trasparenza pubblica dei termini contrattuali permette a chiunque di esaminarlo.
+Infine, come nei contratti, puoi verificare cosa c'è in un contratto intelligente prima di firmarlo (o altrimenti interagirvi). Ancora meglio, la trasparenza pubblica dei termini contrattuali permette a chiunque di esaminarlo.
-## Casi d'uso degli smart contract {#use-cases}
+## Casi d'uso dei contratti intelligenti {#use-cases}
-Quindi, gli smart contract sono programmi informatici che risiedono sulla blockchain. Possono eseguirsi automaticamente. Puoi monitorare le loro transazioni, predire come agiscono e persino usarli con uno pseudonimo. Forte! Ma a cosa servono? Beh, gli smart contract possono fare essenzialmente qualsiasi cosa possono fare gli altri programmi informatici.
+Quindi, i contratti intelligenti sono programmi informatici che risiedono sulla blockchain. Possono eseguirsi automaticamente. Puoi monitorare le loro transazioni, predire come agiscono e persino usarli con uno pseudonimo. Forte! Ma a cosa servono? Beh, i contratti intelligenti possono fare essenzialmente qualsiasi cosa possano fare gli altri programmi informatici.
Possono eseguire calcoli, creare valuta, memorizzare dati, coniare NFT, inviare comunicazioni e persino generare immagini. Ecco alcuni esempi popolari dal mondo reale:
@@ -81,14 +81,14 @@ Possono eseguire calcoli, creare valuta, memorizzare dati, coniare NFT, inviare
## Preferisci un approccio visivo all'apprendimento? {#visual-learner}
-Guarda la spiegazione di Finematics sugli smart contract:
+Guarda la spiegazione di Finematics sui contratti intelligenti:
## Lettura consigliate {#further-reading}
-- [Come gli smart contract cambieranno il mondo](https://www.youtube.com/watch?v=pA6CGuXEKtQ)
-- [Smart contract: la tecnologia della blockchain che sostituirà gli avvocati](https://blockgeeks.com/guides/smart-contracts/)
-- [Smart contract per sviluppatori](/developers/docs/smart-contracts/)
+- [Come i Contratti Intelligenti Cambieranno il Mondo](https://www.youtube.com/watch?v=pA6CGuXEKtQ)
+- [Contratti Intelligenti: La Tecnologia della Blockchain Che Sostituirà gli Avvocati](https://blockgeeks.com/guides/smart-contracts/)
+- [Contratti intelligenti per sviluppatori](/developers/docs/smart-contracts/)
- [Impara a scrivere i contratti intelligenti](/developers/learning-tools/)
-- [Padroneggiare Ethereum - Cos'è uno smart contract?](https://github.com/ethereumbook/ethereumbook/blob/develop/07smart-contracts-solidity.asciidoc#what-is-a-smart-contract)
+- [Padroneggiare Ethereum - Cos'è un Contratto Intelligente?](https://github.com/ethereumbook/ethereumbook/blob/develop/07smart-contracts-solidity.asciidoc#what-is-a-smart-contract)
diff --git a/src/content/translations/it/social-networks/index.md b/src/content/translations/it/social-networks/index.md
index b16ffe3a7dd..acd9d5f635b 100644
--- a/src/content/translations/it/social-networks/index.md
+++ b/src/content/translations/it/social-networks/index.md
@@ -21,7 +21,7 @@ Esistono molti social network decentralizzati come alternative ai servizi social
### Come funzionano i social network decentralizzati? {#decentralized-social-networks-overview}
-I social network decentralizzati sono una classe di [applicazioni decentralizzate (dapp)](/dapps/), applicazioni sviluppate dai [contratti intelligenti](/developers/docs/smart-contracts/) distribuiti sulla blockchain. Il codice del contratto serve da backend per queste app e ne definisce la logica aziendale.
+I social network decentralizzati sono una classe di [applicazioni decentralizzate (dapp)](/dapps/): applicazioni sviluppate dai [contratti intelligenti](/developers/docs/smart-contracts/) distribuiti sulla blockchain. Il codice del contratto serve da backend per queste app e ne definisce la logica aziendale.
Le piattaforme social tradizionali si affidano ai database per memorizzare le informazioni degli utenti, il codice del programma e altre forme di dati. Ma questo crea singoli punti di guasto e introduce un rischio significativo. Ad esempio, i server di Facebook sono tristemente [andati offline per ore](https://www.npr.org/2021/10/05/1043211171/facebook-instagram-whatsapp-outage-business-impact) l'anno scorso, impedendo agli utenti di accedere alla piattaforma.
@@ -37,13 +37,13 @@ Molte piattaforme social basate sulla blockchain hanno token nativi che rendono
2. I social network decentralizzati sono costruiti su ideali open source e rendono disponibile il codice sorgente per le applicazioni all'ispezione pubblica. Eliminando l'implementazione di algoritmi opachi comuni nei social tradizionali, i social network basati sulla blockchain possono allineare gli interessi di utenti e a quelli dei creatori della piattaforma.
-3. I social decentralizzati eliminano l’"intermediario." I creatori di contenuti hanno la proprietà diretta sui propri contenuti e si impegnano direttamente con follower, fan, acquirenti e altri soggetti, semplicemente con uno smart contract tra loro.
+3. I social network decentralizzati eliminano l'"intermediario". I creatori di contenuti hanno la proprietà diretta sui propri contenuti e si impegnano direttamente con seguaci, fan, acquirenti e altre parti, senza nient'altro che un contratto intelligente tra loro.
4. Poiché le dapp sono eseguite sulla rete di Ethereum, sostenuta da una rete di nodi globale e peer-to-peer, i social decentralizzati sono meno esposte a interruzioni e guasti del server.
-5. Le piattaforme social decentralizzate offrono un quadro di monetizzazione migliorato per i creatori di contenuti tramite i token non fungibili (NFT), i pagamenti in cripto in app e altro.
+5. Le piattaforme social decentralizzate offrono un quadro di monetizzazione migliorato per i creatori di contenuti, tramite i token non fungibili (NFT), i pagamenti in criptovalute integrati e altro.
-6. I social decentralizzati consentono agli utenti un livello elevato di privacy e anonimato. Per esempio, una persona può accedere a un social basato su Ethereum usando un profilo ENS o un portafoglio, senza dover condividere dati personali identificabili (PII) come nomi, indirizzi email, etc.
+6. I social decentralizzati permettono agli utenti un elevato livello di privacy e anonimato. Per esempio, una persona può accedere a un social basato su Ethereum usando un profilo ENS o un portafoglio, senza dover condividere dati personali identificabili (PII) come nomi, indirizzi email, etc.
7. I social decentralizzati non si affidano a database centralizzati, ma all'archiviazione decentralizzata, considerevolmente migliori per proteggere i dati degli utenti.
@@ -75,11 +75,11 @@ Le piattaforme social native del [Web3](/web3/) non sono le sole che stanno prov
### Reddit {#reddit}
-Reddit ha [pubblicizzato i Community Points](https://cointelegraph.com/news/reddit-to-reportedly-tokenize-karma-points-and-onboard-500m-new-users), ovvero token ERC-20 che gli utenti possono guadagnare pubblicando contenuti di qualità e contribuendo alle community online (subreddit). È possibile rivendicarli per [ottenere privilegi esclusivi e vantaggi](https://www.reddit.com/community-points/) in una subreddit. Per questo progetto, Reddit sta collaborando con Arbitrum, un rollup di [livello 2](/layer-2/) progettato per scalare le transazioni di Ethereum.
+Reddit ha [propagandato i Punti della Community](https://cointelegraph.com/news/reddit-to-reportedly-tokenize-karma-points-and-onboard-500m-new-users), [token ERC-20](/developers/docs/standards/tokens/erc-20/) che gli utenti possono guadagnare pubblicando contenuti di qualità e contribuendo alle community online (subreddit). Puoi riscattare questi token in una subreddit per [ottenere privilegi e vantaggi esclusivi](https://www.reddit.com/community-points/). Per questo progetto, Reddit sta collaborando con Arbitrum, un rollup di [livello 2](/layer-2/) progettato per scalare le transazioni di Ethereum.
-Il programma è già in fase beta, con la subreddit r/CryptoCurrency che sta [eseguendo la propria versione dei Community Points, detti "Moons"](https://www.reddit.com/r/CryptoCurrency/wiki/moons_wiki). Dalla wiki della community:
+Il programma è già attivo, con la subreddit r/CryptoCurrency [che adopera la sua versione dei Punti della Community, detti "Moon"](https://www.reddit.com/r/CryptoCurrency/wiki/moons_wiki). Secondo la descrizione ufficiale, i Moon "ricompensano pubblicatori, commentatori e moderatori per i loro contributi alla subreddit." Poiché questi token sono sulla blockchain (gli utenti li ricevono nei portafogli), sono indipendenti da Reddit e non possono esser rimossi.
-> _Le “Moons” sono token ERC-20 sulla rete di Rinkeby, lanciati dagli admin di Reddit a maggio 2020 nell’ambito del progetto dei Community Points. Sono un mezzo per ricompensare gli utenti per i loro contributi in r/CryptoCurrency con un'unità di proprietà nella subreddit. Le Moons sono indipendenti da Reddit e, una volta guadagnate, né gli admin né i moderatori della subreddit possono toglierle dagli utenti. Le Moons sono gestite da una serie di smart contract che gestiscono saldi, trasferimenti, distribuzione/rivendicazione e acquisto di Abbonamenti Speciali. Gli smart contract e le app mobili sono stati revisionati e controllati da Trail of Bits, una società di sicurezza indipendente._
+Dopo aver confluso una fase beta sulla rete di prova di Rinkeby, i Punti della Community di Reddit sono ora su [Arbitrum Nova](https://nova.arbitrum.io/), una blockchain che combina le proprietà di un [Validium](/developers/docs/scaling/validium/) e di un [rollup ottimistico](/developers/docs/scaling/optimistic-rollups/). Oltre a usare i Punti della Community per sbloccare funzionalità speciali, gli utenti possono anche scambiarli per valuta legale nelle borse. Inoltre, la quantità di Punti della Community posseduto da un utente, ne determina l'influenza sul processo di presa decisionale nella community.
### Twitter {#twitter}
diff --git a/src/content/translations/it/staking/pools/index.md b/src/content/translations/it/staking/pools/index.md
index 363c8240539..e79e360485d 100644
--- a/src/content/translations/it/staking/pools/index.md
+++ b/src/content/translations/it/staking/pools/index.md
@@ -17,7 +17,7 @@ summaryPoints:
I pool di staking sono un approccio collaborativo per consentire a molti, con quantità minori di ETH, di ottenere i 32 ETH necessari per attivare un insieme di chiavi di validazione. La funzionalità di pooling non è supportata nativamente all'interno del protocollo, quindi le soluzioni sono state sviluppate separatamente per rispondere a questa esigenza.
-Alcuni pool operano utilizzando contratti intelligenti, dove i fondi possono essere depositati in un contratto, che gestisce e traccia in modo affidabile il tuo stake, e ti emette un token che rappresenta questo valore. Altri pool non possono coinvolgere smart contract e sono invece mediati fuori dalla catena.
+Alcuni pool operano utilizzando i contratti intelligenti, dove i fondi possono essere depositati in un contratto, che gestisce e traccia in modo affidabile il tuo stake, e ti emette un token che rappresenta questo valore. Altri pool potrebbero non coinvolgere i contratti intelligenti ed essere invece mediati al di fuori dalla catena.
## Perché mettere in stake con un pool? {#why-stake-with-a-pool}
@@ -66,17 +66,10 @@ Tipicamente, i token di liquidità ERC-20 sono emessi agli staker che rappresent
-Attualmente, il prelievo di fondi da un validatore sulla Beacon Chain non è possibile, il che limita la possibilità di riscattare effettivamente il tuo token di liquidità per le ricompense in ETH bloccate nel livello del consenso.
-Altrimenti, i pool che usano un token di liquidità ERC-20 consentono agli utenti di scambiare questo token nel mercato aperto, consentendoti efficientemente di "prelevare" senza rimuovere realmente gli ETH dalla Beacon Chain.
-
-
-
-Gli staker in pool non devono fare nulla per prepararsi alla Fusione.
-
-Tuttavia, all'avvicinarsi della Fusione, state attenti ai truffatori. **Non devi aggiornare i tuoi ETH o token ETH in staking** per la transizione al proof-of-stake.
+Al momento, è impossibile prelevare fondi da un validatore di Ethereum, il che limita l'abilità di _riscattare_ effettivamente il tuo token di liquidità per le ricompense in ETH bloccate nel livello del consenso.
-Scopri di più su [La Fusione](/upgrades/merge/)
+Altrimenti, i pool che usano un token di liquidità ERC-20 consentono agli utenti di scambiarlo nel mercato aperto, consentendoti di vendere la tua posizione di staking, "prelevando" effettivamente senza rimuovere realmente ETH dal contratto di staking.
diff --git a/src/content/translations/it/staking/saas/index.md b/src/content/translations/it/staking/saas/index.md
index a410073152f..6adbf655343 100644
--- a/src/content/translations/it/staking/saas/index.md
+++ b/src/content/translations/it/staking/saas/index.md
@@ -69,27 +69,13 @@ Hai un suggerimento per un fornitore di staking come servizio che abbiamo diment
-Sì. Ogni profilo è composto sia da chiavi di firma che da chiavi di prelievo. Perché un validatore possa attestare lo stato della catena, partecipare a comitati di sincronizzazione e proporre blocchi, le chiavi di firma devono essere prontamente accessibili presso un client del validatore. Queste devono esser connesse a Internet in qualche modo e sono dunque intrinsecamente considerate chiavi "calde". Questo è un requisito affinché il tuo validatore possa attestare e, dunque, le chiavi usate per trasferire o prelevare i fondi sono separate per motivi di sicurezza.
+Sì. Ogni conto è composto sia da chiavi di firma che di prelievo. Affinché un validatore possa attestare allo stato della catena, partecipare ai comitati di sincronizzazione e proporre blocchi, le chiavi di firma devono essere prontamente accessibili dal client di un validatore. Queste devono esser connesse a Internet in qualche modo e sono dunque intrinsecamente considerate chiavi "calde". Questo è un requisito affinché il tuo validatore possa attestare e, dunque, le chiavi usate per trasferire o prelevare i fondi sono separate per motivi di sicurezza.
Tutte queste chiavi possono sempre essere rigenerate in un modo riproducibile, usando la tua frase di seed mnemonica di 24 parole. Assicurati di mettere questo seed al sicuro o non potrai generare le tue chiavi di prelievo quando arriverà il momento.
- Quando metti 32 ETH in stake con un fornitore di SaaS, quegli ETH sono ancora depositati al contratto di deposito di staking ufficiale. Come tali, gli staker SaaS sono attualmente limitati alle stesse restrizioni di prelievo degli staker in solo. Questo significa che mettere in staking i tuoi ETH è attualmente un deposito unidirezionale. Questo sarà il caso fino all'aggiornamento Shanghai che si pianifica seguirà la Fusione.
-
-
-
- Dopo la Fusione, gli staker in SaaS inizieranno a ricevere le commissioni/mance di transazione non bruciate. Verifica con il tuo fornitore per determinare come aggiornare le tue impostazioni per includere un indirizzo di Ethereum che usi e al quale saranno inviati questi fondi quando arriverà il momento.
-
-La Fusione non consentirà di prelevare il tuo stake o le ricompense del protocollo; queste funzionalità sono pianificate per l'aggiornamento Shanghai, che seguirà la fusione di un periodo stimato a sei mesi fino a un anno.
-
-
-
-Gli staker in SaaS non devono fare nulla per prepararsi alla Fusione.
-
-Esistono alcune cose a cui gli operatori del nodo devono partecipare per questo aggiornamento. Verifica col tuo fornitore di staking per garantire che i loro sistemi siano pronti.
-
-Scopri di più su [La Fusione](/upgrades/merge/)
+ Quando metti 32 ETH in stake con un fornitore di SaaS, quegli ETH sono ancora depositati al contratto di deposito di staking ufficiale. Come tali, gli staker SaaS sono attualmente limitati alle stesse restrizioni di prelievo degli staker in solo. Questo significa che mettere in staking i tuoi ETH è attualmente un deposito unidirezionale. Sarà questo il caso fino all'aggiornamento Shanghai.
diff --git a/src/content/translations/it/staking/solo/index.md b/src/content/translations/it/staking/solo/index.md
index 00a047c9945..90990837821 100644
--- a/src/content/translations/it/staking/solo/index.md
+++ b/src/content/translations/it/staking/solo/index.md
@@ -8,7 +8,7 @@ image: ../../../../../assets/staking/leslie-solo.png
alt: Leslie il rinoceronte sul suo chip informatico.
sidebarDepth: 2
summaryPoints:
- - Ricevi ricompense massime direttamente dal protocollo (incluse le commissioni non bruciate dopo La Fusione) per mantenere il tuo validatore propriamente funzionante e online
+ - Ricevi le ricompense massime direttamente dal protocollo per mantenere il tuo validatore propriamente in funzione e online
- Opera hardware domestico e aggiungi personalmente alla sicurezza e decentralizzazione della rete di Ethereum
- Rimuovi la fiducia e non lasciar mai perdere il controllo delle chiavi dei tuoi fondi
---
@@ -57,7 +57,7 @@ Per quanto vorremmo che lo staking in solo fosse accessibile e privo di rischi p
- Il prelievo degli ETH in staking o delle ricompense dal saldo di un validatore non è ancora supportato. Il supporto per i prelievi è pianificato per l'aggiornamento Shanghai, consecutivo alla Fusione. Dovresti anticipare che i tuoi ETH resteranno bloccati per almeno uno o due anni. Dopo l'aggiornamento Shanghai potrai prelevare liberamente porzioni o tutto il tuo stake se lo desideri.
+ Il prelievo degli ETH in staking o delle ricompense dal saldo di un validatore non è ancora supportato. Il supporto per i prelievi è pianificato per il prossimo aggiornamento Shanghai. Dovresti anticipare che i tuoi ETH resteranno bloccati per almeno uno o due anni. Dopo l'aggiornamento Shanghai potrai prelevare liberamente porzioni o tutto il tuo stake se lo desideri.
L'hardware, talvolta, si guasta, le connessioni di rete generano errori e il software del client a volte necessita di aggiornamenti. La manutenzione del nodo è inevitabile e richiederà occasionalmente la tua attenzione. Vorrai assicurarti di esser consapevole di qualsiasi aggiornamento di rete anticipato o di altri aggiornamenti critici del client.
@@ -88,10 +88,6 @@ Il Launchpad di Staking è un'applicazione open source che ti aiuterà a diventa
-
-Nota per gli staker esistenti: La Fusione si avvicina, il che porta qualche modifica rispetto al lancio dello staking. Assicurati di conoscere bene con la Lista di controllo di preparazione alla Fusione sul Launchpad di Staking.
-
-
## Cosa considerare con il nodo e gli strumenti di configurazione del client {#node-tool-considerations}
Esistono sempre più strumenti e servizi per aiutarti a mettere i tuoi ETH in staking in solo, ma ognuno presenta diversi rischi e benefici.
@@ -129,7 +125,9 @@ Hai un suggerimento per uno strumento di staking che abbiamo dimenticato? Dai un
Esistono alcune domande molto comuni sullo staking che meritano di essere affrontate.
-Un validatore è un'entità virtuale che risiede sulla Beacon Chain e partecipa al consenso del protocollo di Ethereum. I validatori sono rappresentati da un saldo, una chiave pubblica e altre proprietà. Un client del validatore è il software che agisce per conto del validatore detenendone e usandone la chiave privata. Un singolo client del validatore può detenere molte coppie di chiavi, controllando molti validatori.
+
+Un _validatore_ è un'entità virtuale che risiede su Ethereum e partecipa al consenso del protocollo di Ethereum. I validatori sono rappresentati da un saldo, una chiave pubblica e altre proprietà. Un _client del validatore_ è il software che agisce per conto del validatore, detenendone e usandone la chiave privata. Un singolo client del validatore può detenere molte coppie di chiavi, controllando molti validatori.
+
@@ -145,7 +143,7 @@ Andare offline quando la rete sta finalizzando correttamente NON comporterà alc
Nota che le sanzioni per inattività sono proporzionali a quanti validatori sono offline contemporaneamente. Nei casi in cui una grande porzione della rete è offline in una volta sola, le sanzioni per ciascuno di questi validatori saranno maggiori rispetto a quando non è disponibile un singolo validatore.
-In casi estremi, se la rete interrompe la finalizzazione a causa del fatto che più di un terzo dei validatori è offline, questi utenti subiranno quella che è nota come una fuga d'inattività quadratica, una perdita esponenziale di ETH dai conti del validatore offline. Questo consente alla rete, eventualmente, di auto-curarsi bruciando gli ETH dei validatori inattivi finché il loro saldo non raggiunge i 16 ETH, e a quel punto saranno automaticamente espulsi dal pool del validatore. I validatori online rimanenti alla fine comprenderanno ancora oltre i 2/3 della rete, soddisfacendo la super maggioranza necessaria per finalizzare nuovamente la catena.
+In casi estremi, se la rete interrompe la finalizzazione poiché più di un terzo dei validatori è offline, questi utenti subiranno quella che è nota come fuga d'inattività quadratica, una riduzione esponenziale di ETH dai conti offline dei validatori. Questo consente alla rete, eventualmente, di auto-curarsi bruciando gli ETH dei validatori inattivi finché il loro saldo non raggiunge i 16 ETH, e a quel punto saranno automaticamente espulsi dal pool del validatore. I validatori online rimanenti alla fine comprenderanno ancora oltre i 2/3 della rete, soddisfacendo la super maggioranza necessaria per finalizzare nuovamente la catena.
@@ -157,7 +155,7 @@ Operare un client di super maggioranza (ogni client usato da oltre 2/3 della ret
I bug equivalenti in un client di minoranza non sarebbero mai finalizzati e, ciò risulterebbe in un voto di contorno, con la semplice conseguenza di sanzioni d'inattività, non tagli.
-Scopri di più sull'importanza di operare un client di minoranza.
+Scopri di più sull'importanza di eseguire un client di minoranza.
@@ -179,18 +177,6 @@ Le sanzioni offline sono proporzionali a quanti altri sono offline contemporanea
Ulteriori informazioni su ricompense e sanzioni
-
-Gli staker che operano correntemente sul client del livello di consenso (Beacon Chain) dovranno anche eseguire un client del livello di esecuzione dopo La Fusione. La nuova API di Engine sarà usata per interfacciarsi tra i due livelli, richiedendo un codice segreto JWT. Se attualmente utilizzi una Beacon Chain senza un client del livello di esecuzione, dovrai sincronizzare il livello di esecuzione prima della Fusione per restare sincronizzato con la rete.
-
-La Fusione porterà anche le commissioni di transazione non bruciate ai validatori. Queste commissioni non si accumulano nel saldo associato alle chiavi del validatore ma possono essere dirette a un regolare indirizzo di Ethereum di tua scelta. Per ricevere le tue mance (commissioni prioritarie) dai blocchi proposti, dovresti aggiornare le impostazioni del tuo client con l'indirizzo verso cui desideri siano inviate.
-
-I collegamenti alla documentazione del singolo client e le informazioni aggiuntive si possono trovare sulla lista di controllo di preparazione alla Fusione sul Launchpad.
-
-
-Lista di controllo di preparazione alla Fusione
-
-
-
## Approfondimenti {#further-reading}
- [Problema di diversità dei client di Ethereum](https://hackernoon.com/ethereums-client-diversity-problem) - _@emmanuelawosika 2022_
diff --git a/src/content/translations/it/upgrades/beacon-chain/index.md b/src/content/translations/it/upgrades/beacon-chain/index.md
index eb7cad4c988..17ee3ece42e 100644
--- a/src/content/translations/it/upgrades/beacon-chain/index.md
+++ b/src/content/translations/it/upgrades/beacon-chain/index.md
@@ -4,14 +4,13 @@ description: Informati rigurado alla Beacon Chain - l'aggiornamento che ha intro
lang: it
template: upgrade
image: ../../../../../assets/upgrades/core.png
-summaryPoint1: La Beacon Chain non apporta modifiche all'Ethereum che stiamo utilizzando.
-summaryPoint2: Ha introdotto Proof of Stake nell'ecosistema Ethereum.
-summaryPoint3: Nel 2022, è stata fusa con la catena di Proof of Work originale di Ethereum.
-summaryPoint4: La logica del consenso e il protocollo di gossip del blocco introdotti dalla Beacon Chain, proteggono ora Ethereum.
+summaryPoint1: La Beacon Chain ha introdotto il proof-of-stake nell'ecosistema Ethereum.
+summaryPoint2: È stata fusa con la catena di proof-of-work originale di Ethereum nel settembre 2022.
+summaryPoint3: La Beacon Chain ha introdotto la logica del consenso e il protocollo di gossip del blocco, che ora protegge Ethereum.
---
- La Beacon Chain è stata resa disponibile il 1° dicembre 2020. All'epoca, era una catena separata dalla Rete principale di Ethereum. Eseguiva il Poof of stake, ma non gestiva alcuna transazione. La Beacon Chain è stata fusa con la Rete principale originale di Ethereum nel 2022 per acquisire la logica di consenso e la propagazione dei blocchi per Ethereum. A partire dalla Fusione, esiste una sola catena di Ethereum.
+ La Beacon Chain è stata attivata l'1 dicembre 2020 e ha formalizzato il proof-of-stake come il meccanismo di consenso di Ethereum con l'aggiornamento della Fusione il 15 settembre 2022.
## Cos'era la Beacon Chain? {#what-is-the-beacon-chain}
@@ -20,7 +19,7 @@ La Beacon Chain era il nome della blockchain di Proof of stake originale, lancia
## Cosa faceva la Beacon Chain? {#what-does-the-beacon-chain-do}
-La Beacon Chain era il nome dato a un registro degli account che conducevano e coordinavano la rete di [staker](/staking/) di Ethereum, prima che questi iniziassero a convalidare transazioni reali di Ethereum. Non elaborava le transazioni né gestiva le interazioni tra smart contract.
+La Beacon Chain era il nome dato a un registro di conti che conduceva e coordinava la rete di [staker](/staking/) di Ethereum, prima che questi iniziassero a convalidare transazioni reali di Ethereum. Non elaborava le transazioni, né gestiva le interazioni del contratto intelligente.
Ha introdotto il motore di consenso (o "livello di consenso") che ha preso il posto del mining di Proof of Work su Ethereum, apportando con esso molti miglioramenti significativi.
@@ -72,4 +71,5 @@ Lo sharding potrà entrare in modo sicuro nell'ecosistema Ethereum solo quando s
## Letture consigliate
-[Maggiori informazioni sugli aggiornamenti futuri di Ethereum](/upgrades/vision) [Maggiori informazioni sul Proof of stake](/develoeprs/docs/consensus-mechanisms/pos)
+- [Maggiori informazioni sugli aggiornamenti futuri di Ethereum](/upgrades/vision)
+- [Maggiori informazioni sul proof-of-stake](/developers/docs/consensus-mechanisms/pos)
diff --git a/src/content/translations/it/upgrades/merge/index.md b/src/content/translations/it/upgrades/merge/index.md
index e04a4ebaf11..0ac7fef614c 100644
--- a/src/content/translations/it/upgrades/merge/index.md
+++ b/src/content/translations/it/upgrades/merge/index.md
@@ -4,29 +4,33 @@ description: "Scopri La Fusione: quando la Rete principale di Ethereum ha adotta
lang: it
template: upgrade
image: ../../../../../assets/upgrades/merge.png
-summaryPoint1: La Rete principale di Ethereum usa il Poof of stake, ma non è sempre stato così.
-summaryPoint2: La transizione dal meccanismo originale di Proof of Work al Proof of stake è stata chiamata La Fusione.
-summaryPoint3: La Fusione si riferisce al momento in cui la Rete principale originale di Ethereum è divenuta parte di una blockchain di Proof of stake separata, detta Beacon Chain, ora esistente come un'unica catena.
+summaryPoint1: La Rete Principale di Ethereum usa il proof-of-stake, ma non è sempre stato così.
+summaryPoint2: L'aggiornamento dal meccanismo originale di proof-of-work al proof-of-stake è stato chiamato La Fusione.
+summaryPoint3: La Fusione si riferisce alla fusione della Rete Principale originale di Ethereum con una blockchain di proof-of-stake separata, detta Beacon Chain, ora esistenti come un'unica catena.
summaryPoint4: La Fusione ha ridotto il consumo energetico di Ethereum di circa il 99,95%.
---
+
+ La Fusione è avvenuta il 15 settembre 2022. Ciò ha portato a termine la transizione di Ethereum al consenso di proof-of-stake, deprecando ufficialmente il proof-of-work e riducendo il consumo energetico di circa il 99,95%.
+
+
## In cosa ha consistito la Fusione? {#what-is-the-merge}
La Fusione è stata l'unione del livello di esecuzione originale di Ethereum (la Rete principale che esisteva dalla [genesi](/history/#frontier)) con il suo nuovo livello di consenso di Proof of stake, la Beacon Chain. Ha eliminato la necessità di grandi quantità di energia richieste dal processo di mining, consentendo invece di proteggere la rete utilizzando l'ETH in staking. È stato un passo davvero emozionante nel realizzare la visione di Ethereum: maggiori scalabilità, sicurezza e sostenibilità.
-Inizialmente, la [Beacon Chain](/upgrades/beacon-chain/) veniva inviata separatamente dalla [Rete principale](/glossary/#mainnet). La Rete principale di Ethereum, con tutti i suoi account, saldi, smart contract e lo stato della blockchain, continuava a esser protetta dalla [Proof of Work](/developers/docs/consensus-mechanisms/pow/), anche mentre la Beacon Chain funzionava in parallelo utilizzando la [Proof of stake](/developers/docs/consensus-mechanisms/pos/). La Fusione si è verificata quando, finalmente, questi due sistemi si sono uniti e il Poof of Work è stata permanentemente sostituita dal Proof of stake.
+Inizialmente, la [Beacon Chain](/upgrades/beacon-chain/) veniva inviata separatamente dalla [Rete principale](/glossary/#mainnet). La Rete Principale di Ethereum, con tutti i suoi conti, saldi, contratti intelligenti e stati della blockchain, ha continuato a esser protetta dal [proof-of-work](/developers/docs/consensus-mechanisms/pow/), anche mentre la Beacon Chain operava in parallelo, utilizzando il [proof-of-stake](/developers/docs/consensus-mechanisms/pos/). La Fusione si è verificata quando, finalmente, questi due sistemi si sono uniti e il Poof of Work è stata permanentemente sostituita dal Proof of stake.
Immagina Ethereum come una nave lanciata prima di essere pronta per un viaggio interstellare. Con la Beacon Chain, la community ha costruito un nuovo motore e uno scafo più resistente. Dopo test significativi, è arrivato il momento di scambiare il vecchio motore con quello nuovo durante il volo. Questo ha aggiunto il nuovo e più efficiente motore nella nave esistente, consentendole di percorrere diversi anni luce e conquistare l'universo.
## La fusione con la rete principale {#merging-with-mainnet}
-La Proof of Work ha protetto la Rete rrincipale di Ethereum dalla genesi alla Fusione. Questo ha permesso alla blockchain di Ethereum a cui siamo tutti abituati di venire alla luce, nel luglio 2015, con tutte le sue funzionalità familiari: transazioni, smart contract, account, ecc.
+La Proof of Work ha protetto la Rete rrincipale di Ethereum dalla genesi alla Fusione. Questo ha consentito alla blockchain di Ethereum a cui siamo tutti abituati di venire alla luce, a luglio 2015, con tutte le sue funzionalità familiari: transazioni, contratti intelligenti, conti, etc.
Nella storia di Ethereum, gli sviluppatori si sono preparati per un'eventuale transizione dal Proof of Work al Proof of stake. Il 1° dicembre 2020, la Beacon Chain è stata creata come una blockchain separata dalla Rete principale, eseguita in parallelo.
-Originariamente la Beacon Chain non elaborava le transazioni della Rete principale. Invece, ha raggiunto il consenso sul proprio stato, concordando sui validatori attivi e i saldi dei loro account. Dopo numerose prove, è giunto il momento che la Beacon Chain raggiunga il consenso sui dati del mondo reale. Dopo La Fusione, la Beacon Chain è diventata il motore di consenso per tutti i dati della rete, incluse le transazioni e i saldi degli account del livello di esecuzione.
+Originariamente la Beacon Chain non elaborava le transazioni della Rete principale. Invece, stava raggiungendo il consenso sul proprio stato, concordando sui validatori attivi e i saldi dei loro conti. Dopo numerose prove, è giunto il momento che la Beacon Chain raggiunga il consenso sui dati del mondo reale. Dopo La Fusione, la Beacon Chain è divenuta il motore di consenso per tutti i dati della rete, incluse le transazioni del livello d'esecuzione e i saldi dei conti.
La Fusione ha rappresentato il passaggio ufficiale all'uso della Beacon Chain come il motore della produzione del blocco. Il mining non è più il mezzo di produzione di blocchi validi. Invece, i validatori del Proof of stake hanno adottato questo ruolo e sono ora responsabili dell'elaborazione della validità di tutte le transazioni e della proposta dei blocchi.
@@ -40,9 +44,9 @@ Questa transizione al Proof of stake ha cambiato il metodo di emissione dell'eth
**La Fusione non ha modificato nulla per i detentori/utenti.**
-_Vale la pena ripeterlo_: Come utente o detentore di ETH o di qualsiasi altra risorsa digitale su Ethereum, nonché come staker non operante su nodi, **non devi fare nulla coi tuoi fondi o il tuo portafoglio per approcciare La Fusione.** Gli ETH sono sempre ETH. Non esiste nulla del tipo "vecchi ETH"/"nuovi ETH" o "ETH1"/"ETH2" e i portafogli funzioneranno esattamente allo stesso modo dopo La Fusione. Le persone che dicono altro sono probabilmente truffatori.
+_Vale la pena ripeterlo_: Come utente o detentore di ETH o di qualsiasi altra risorsa digitale su Ethereum, nonché come staker non operatore di nodo, **non devi fare nulla coi tuoi fondi o il tuo portafoglio per approcciare La Fusione.** Gli ETH sono sempre ETH. Non esiste nulla del tipo "vecchi ETH"/"nuovi ETH" o "ETH1"/"ETH2" e i portafogli funzioneranno esattamente allo stesso modo dopo La Fusione. Le persone che dicono altro sono probabilmente truffatori.
-Nonostante il passaggio dal Proof of Work, l'intera cronologia di Ethereum dalla genesi è rimasta intatta e inalterata dalla transizione al Proof of stake. Ogni fondo detenuto nel tuo portafoglio prima de La Fusione sarà ancora accessibile dopo di essa. **Non è richiesta alcuna azione di aggiornamento da parte tua.**
+Nonostante il passaggio dal Proof of Work, l'intera cronologia di Ethereum dalla genesi è rimasta intatta e inalterata dalla transizione al Proof of stake. Qualsiasi fondo detenuto nel tuo portafoglio prima della Fusione è ancora accessibile dopo di essa. **Non è richiesta alcuna azione di aggiornamento da parte tua.**
[Maggiori informazioni sulla sicurezza di Ethereum](/security/#eth2-token-scam)
@@ -59,7 +63,7 @@ Gli elementi dell'azione chiave includono:
2. Autentica sia il client di esecuzione che quello di consenso con un segreto JWT condiviso, così che tu possa comunicare in sicurezza.
3. Imposta un indirizzo `fee recipient` per ricevere le mance/MEV di commissioni su transazioni che hai guadagnato.
-Non completare i primi due elementi farà sì che il tuo nodo risulti "offline", finché entrambi i livelli non saranno sincronizzati e autenticati.
+Non completare i primi due elementi farà sì che il tuo nodo risulti "offline" finché entrambi i livelli non saranno sincronizzati e autenticati.
Non impostare un `fee recipient` consentirà comunque al tuo validatore di comportarsi come al solito, ma perderai le mance e qualsiasi MEV di commissioni non bruciate che avresti altrimenti ottenuto nei blocchi proposti dal tuo validatore.
@@ -83,7 +87,7 @@ Non completare i suddetti elementi farà sì che il tuo nodo risulti "offline",
@@ -115,7 +119,7 @@ Esistono due tipi di nodi di Ethereum: i nodi che possono proporre blocchi e que
I nodi che propongono blocchi sono solo una minima parte dei nodi totali su Ethereum. Questa categoria include i nodi di mining in modalità Proof of Work (PoW) e i nodi validatori in modalità Proof of stake (PoS). Questa categoria richiede l'impegno di risorse economiche (come la potenza di hash della GPU nel Proof of Work o ETH in staking nel Proof of stake) in cambio della capacità di proporre occasionalmente il blocco successivo e ottenere le ricompense del protocollo.
-Gli altri nodi sulla rete (cioè, la maggioranza) non devono impegnare alcuna risorsa economica oltre a un computer di livello consumer con 1-2 TB di spazio di archiviazione disponibile e una connessione a Internet. Questi nodi non propongono i blocchi, ma rivestono comunque un ruolo critico nel proteggere la rete, considerando responsabili tutti i propositori di blocchi, attendendo nuovi blocchi e verificandone la validità all'arrivo secondo le regole del consenso di rete. Se il blocco è valido, il nodo continua a propagarlo per la rete. Se per qualsiasi motivo il blocco non è valido, il software del nodo lo scarterà come non valido e ne interromperà la propagazione.
+Gli altri nodi sulla rete (cioè, la maggioranza) non devono impegnare alcuna risorsa economica oltre a un computer di livello consumer con 1-2 TB di spazio di archiviazione disponibile e una connessione a Internet. Questi nodi non propongono blocchi, tuttavia, rivestono un ruolo critico nel proteggere la rete, considerando responsabili tutti i propositori di blocco, ascoltando nuovi blocchi e verificandone la validità all'arrivo, secondo le regole di consenso della rete. Se il blocco è valido, il nodo continua a propagarlo per la rete. Se per qualsiasi motivo il blocco non è valido, il software del nodo lo scarterà come non valido e ne interromperà la propagazione.
Eseguire un nodo che non produce blocchi è possibile per chiunque in entrambi i meccanismi di consenso (Proof of Work o Proof of stake); è _fortemente consigliato_ a tutti gli utenti che ne hanno i mezzi. Eseguire un nodo è estremamente prezioso per Ethereum e offre benefici aggiuntivi a ogni persona che ne esegue uno, come maggiore sicurezza, privacy e resistenza alla censura.
@@ -126,11 +130,11 @@ L'abilità per chiunque di eseguire il proprio nodo è _assolutamente essenziale
-Le commissioni del carburante sono un prodotto della domanda di rete rispetto alla capacità della rete. La Fusione ha reso obsoleto l'uso del Proof of Work, passando al Proof of stake per il consenso, ma non ha modificato significativamente alcun parametro che influenzi direttamente la capacità o il volume di rete.
+Le commissioni del gas sono un prodotto della domanda di rete relativo alla capacità della rete. La Fusione ha reso obsoleto l'uso del Proof of Work, passando al Proof of stake per il consenso, ma non ha modificato significativamente alcun parametro che influenzi direttamente la capacità o il volume di rete.
-Con una [tabella di marcia incentrata sul rollup](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698), gli sforzi si concentrano su scalare l'attività degli utenti al [livello 2](/layer-2/), abilitando allo stesso tempo la Rete principale di livello 1 come livello di accordo decentralizzato sicuro, ottimizzato per l'archiviazione dei dati di rollup per aiutare a rendere esponenzialmente più economiche le transazioni di rollup. La transizione al Proof of stake è un precursore essenziale per realizzarlo. [Maggiori informazioni su carburante e commissioni.](/developers/docs/gas/)
+Con una [tabella di marcia incentrata sul rollup](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698), gli sforzi si concentrano su scalare l'attività degli utenti al [livello 2](/layer-2/), abilitando allo stesso tempo la Rete principale di livello 1 come livello di accordo decentralizzato sicuro, ottimizzato per l'archiviazione dei dati di rollup per aiutare a rendere esponenzialmente più economiche le transazioni di rollup. La transizione al Proof of stake è un precursore essenziale per realizzarlo. [Di più su gas e commissioni.](/developers/docs/gas/)
@@ -46,13 +46,13 @@ Con requisiti hardware minori, lo sharding faciliterà l'esecuzione dei [client]
Mentre aggiorniamo le cose, dai un'occhiata a La Guida per Autostoppisti a Ethereum per un'eccellente spiegazione della tabella di marcia di Ethereum.
-Le prime shard chain disponibili forniranno solo dati aggiuntivi in rete. Non gestiranno le transazioni o gli Smart Contract. Garantiranno comunque incredibili miglioramenti al numero di transazioni al secondo quando combinate ai rollup.
+Le prime shard chain disponibili forniranno solo dati aggiuntivi in rete. Non gestiranno le transazioni o i contratti intelligenti. Garantiranno comunque incredibili miglioramenti al numero di transazioni al secondo quando combinate ai rollup.
I rollup sono una tecnologia di secondo livello che esiste già oggi. Permettono alle dapp di raggruppare o "eseguire il roll up" delle transazioni in una sola transazione off-chain, generare una prova crittografica e inviarla alla catena. In questo modo, i dati necessari per una transazione vengono ridotti. Combinando questo aspetto con le informazioni extra rese disponibili dalle shard, s ottengono 100.000 transazioni al secondo.
## Shard chain versione 2: esecuzione di codice {#code-execution}
-Il piano è sempre stato quello di aggiungere ulteriori funzionalità agli shard, per renderli più simili a quello che è oggi la [rete principale Ethereum](/glossary/#mainnet). Questo consentirebbe loro di memorizzare ed eseguire il codice e gestire le transazioni, poiché ogni frammento conterrebbe la propria serie univoca di smart contract e saldi di conti. La comunicazione incrociata tra frammenti consentirebbe l'esecuzione di transazioni tra i vari frammenti.
+Il piano è sempre stato quello di aggiungere ulteriori funzionalità agli shard, per renderli più simili a quello che è oggi la [rete principale Ethereum](/glossary/#mainnet). Questo consentirebbe loro di memorizzare ed eseguire il codice e gestire le transazioni, poiché ogni frammento conterrebbe la propria serie univoca di contratti intelligenti e saldi di conti. La comunicazione incrociata tra frammenti consentirebbe l'esecuzione di transazioni tra i vari frammenti.
Tuttavia, considerando l'aumento di transazioni al secondo che i frammenti di versione 1 forniscono, ce n'è ancora bisogno? La questione è tuttora oggetto di dibattito all'interno della community e sembrano esserci alcune opzioni.
@@ -64,7 +64,7 @@ Vitalik Buterin, parlando al podcast Bankless, ha presentato 3 potenziali opzion
#### 1. Esecuzione di stato non necessaria {#state-execution-not-needed}
-Significa che non diamo agli shard la possibilità di gestire gli smart contract e li utilizziamo solo come depositi di dati.
+Questo significherebbe che non diamo ai frammenti la capacità di gestire i contratti intelligenti e li utilizziamo invece come depositi di dati.
#### 2. Inserire alcuni shard di esecuzione {#some-execution-shards}
diff --git a/src/content/translations/it/web3/index.md b/src/content/translations/it/web3/index.md
new file mode 100644
index 00000000000..5cf993c4e4c
--- /dev/null
+++ b/src/content/translations/it/web3/index.md
@@ -0,0 +1,159 @@
+---
+title: Cos'è Web3 e perché è importante?
+description: "Un'introduzione al Web3: la prossima evoluzione del World Wide Web e perché conta."
+lang: it
+---
+
+# Introduzione a Web3 {#introduction}
+
+La centralizzazione ha aiutato a integrare miliardi di persone nel World Wide Web e ha creato l'infrastruttura stabile e robusta su cui esso risiede. Allo stesso tempo, molte entità centralizzate esercitano una forte presa su grandi aree del World Wide Web, decidendo unilateralmente cosa dovrebbe e non dovrebbe esser consentito.
+
+Web3 è la risposta a questo dilemma. Invece di un Web monopolizzato dalle grandi aziende tecnologiche, il Web3 adotta la decentralizzazione ed è in costruzione, operato e posseduto dai suoi utenti. Web3 mette il potere nelle mani degli individui piuttosto che delle grandi aziende. Prima di parlare di Web3, vediamo come siamo arrivati qui.
+
+
+
+## Il primo Web {#early-internet}
+
+Gran parte delle persone pensano al Web come un pilastro continuo della vita moderna: è stato inventato e semplicemente esiste da allora. Tuttavia, il Web che gran parte di noi conosciamo oggi è abbastanza differente da come fu immaginato originariamente. Per comprenderlo meglio, è utile suddividere la breve storia del Web in due distinti periodi: Web 1.0 e Web 2.0.
+
+### Web 1.0: sola Lettura (1990-2004) {#web1}
+
+Nel 1989, al CERN, Ginevra, Tim Berners-Lee era impegnato nello sviluppo dei protocolli che sarebbero diventati il World Wide Web. La sua idea? Creare protocolli aperti e decentralizzati che consentissero la condivisione di informazioni da tutta la Terra.
+
+Il primo esordio della creazione di Berners-Lee, ora noto come 'Web 1.0', si verificò all'incirca tra il 1990 e il 2004. Web 1.0 si componeva principalmente di siti web statici posseduti da aziende e non esisteva quasi alcuna interazione tra gli utenti, i singoli individui producevano raramente i contenuti, portando a renderlo noto come il web di sola lettura.
+
+![Architettura client-server, rappresentativa del Web 1.0](./web1.png)
+
+### Web 2.0: lettura e scrittura (2004-oggi) {#web2}
+
+L’era del Web 2.0 iniziò nel 2004 con l'emergenza delle piattaforme social. Invece che di sola lettura, il web si evolse per esser di lettura e scrittura. Invece di aziende che fornivano contenuti agli utenti, iniziarono anche a nascere piattaforme per condividere contenuti generati dagli utenti e le interazioni tra utenti. Con l’aumentare degli utilizzatori del web, una manciata di grandi aziende iniziarono a controllare una quantità sproporzionata del traffico e del valore generati sul web. Il web 2.0 ha dato vita anche al modello di ricavi generati dalla pubblicità. Sebbene gli utenti potessero creare i contenuti, non erano i proprietari e non potevano monetizzarli.
+
+![Architettura client-server, rappresentativa del Web 2.0](./web2.png)
+
+
+
+## Web 3.0: lettura, scrittura e possesso {#web3}
+
+Il principio di “Web 3.0” fu coniato dal co-fondatore di [Ethereum](/what-is-ethereum/), Gavin Wood, poco dopo il lancio di Ethereum nel 2014. Gavin ha messo in parole una soluzione per un problema sentito da molti primi utilizzatori di criptovalute: il Web richiedeva troppa fiducia. Cioè, gran parte del Web che le persone conoscono e usano oggi si basa sull'affidare a una manciata di aziende private di agire nei migliori interessi pubblici.
+
+![Architettura dei nodi decentralizzati, rappresentativa del Web3](./web3.png)
+
+### Cos'è Web3? {#what-is-web3}
+
+Web3 è diventato un termine che indica complessivamente la visione di un'Internet nuova e migliore. Alla base, Web3 usa le blockchain, le criptovalute e gli NFT per restituire potere sotto forma di proprietà. [In un post del 2021 su Twitter](https://twitter.com/j1mmyeth/status/1459003044067258370) questo è espresso perfettamente: il Web1 era in sola lettura, il Web2 era in lettura e scrittura, il Web3 sarà in lettura, scrittura e proprietà.
+
+#### Idee principali di Web3 {#core-ideas}
+
+Sebbene sia impegnativo dare una definizione rigida di cosa sia il Web3, alcuni principi essenziali ne guidano la creazione.
+
+- **Web3 è decentralizzato:** invece di grandi aree di Internet controllate e possedute da entità centralizzate, la proprietà è distribuita tra i suoi creatori e i suoi utenti.
+- **Web3 non prevede permessi e privilegi:** tutti hanno uguale accesso per partecipare a Web3, nessuno escluso.
+- **Web3 prevede nativamente i pagamenti:** usa criptovalute per spendere e inviare denaro online, invece di affidarsi all'infrastruttura obsoleta di banche ed elaboratori del pagamento.
+- **Web3 non si basa sulla fiducia:** opera usando incentivi e meccanismi economici invece di affidarsi a terze parti fidate.
+
+### Perché Web3 è importante? {#why-is-web3-important}
+
+Sebbene le funzionalità caratterizzanti non siano isolate e non si adattino a categorie ordinate, per semplicità, abbiamo provato a separarle per renderle più facili da comprendere.
+
+#### Proprietà {#ownership}
+
+Il Web3 ti dà la proprietà delle tue risorse digitali in un modo senza precedenti. Ad esempio, ipotizziamo che stai giocando a un gioco di web2. Se acquisti un oggetto di gioco, è legato direttamente al tuo profilo. Se i creatori del gioco eliminano il tuo profilo, perderai tutti gli oggetti. Oppure, se smetti di giocare al gioco, perdi il valore che hai investito nei tuoi oggetti di gioco.
+
+Il Web3 consente la proprietà diretta tramite i [token non fungibili (NFT)](/nft/). Nessuno, nemmeno i creatori del gioco, ha il potere di toglierti la proprietà. E, se smetti di giocare, puoi vendere o scambiare i tuoi oggetti di gioco sui mercati aperti e recuperarne il valore.
+
+
+ Maggiori informazioni sugli NFT
+
+ Maggiori informazioni sui NFT
+
+
+
+#### Resistenza alla censura {#censorship-resistance}
+
+I rapporti di potere tra piattaforme e creatori di contenuti sono enormemente squilibrati.
+
+OnlyFans è un sito di contenuti per adulti generati dagli utenti con oltre 1 milione di creatori di contenuti, molti dei quali usano la piattaforma come propria fonte di reddito principale. Ad agosto 2021, OnlyFans ha annunciato piani per bandire i contenuti sessualmente espliciti. L'annuncio ha scatenato la rabbia tra i creatori sulla piattaforma, che si sono sentiti derubati di un reddito su una piattaforma che avevano contribuito a creare. Dopo questa reazione negativa, la decisione è stata rapidamente ritirata. Nonostante i creatori abbiano vinto questa battaglia, ciò evidenzia un problema per i creatori del Web 2.0: abbandonando una piattaforma perdi la reputazione e i seguaci che hai accumulato.
+
+Sul Web3, i tuoi dati risiedono sulla blockchain. Quando decidi di abbandonare una piattaforma, puoi portare con te la tua reputazione, collegandola a un'altra interfaccia che più chiaramente si allinea ai tuoi valori.
+
+Il Web 2.0 richiede ai creatori di contenuti di fidarsi del fatto che le piattaforme non modifichino le regole, ma la resistenza alla censura è una caratteristica nativa di una piattaforma di Web3.
+
+#### Organizzazioni autonome decentralizzate (DAO) {#daos}
+
+Oltre a possedere i tuoi dati in Web3, puoi possedere la piattaforma come un collettivo, usando i token che agiscono da quote in un'azienda. Le DAO ti consentono di coordinare la proprietà decentralizzata di una piattaforma e di prendere decisioni sul suo futuro.
+
+Le DAO sono tecnicamente definite come contratti intelligenti concordati che automatizzano la presa decisionale decentralizzata su un gruppo di risorse (token). Gli utenti coi token votano su come sono spese le risorse e il codice esegue automaticamente il risultato del voto.
+
+Tuttavia, le persone definiscono molte community del Web3 come DAO. Queste community hanno tutte diversi livelli di decentralizzazione e automatizzazzione per codice. Correntemente, stiamo esplorando cosa sono le DAO e come potrebbero evolversi in futuro.
+
+
+ Impara di più sulle DAO
+
+ Di più sulle DAO
+
+
+
+### Identità {#identity}
+
+Tradizionalmente, creeresti un conto per ogni piattaforma che usi. Ad esempio, potresti avere un profilo di Twitter, un profilo di YouTube e un profilo di Reddit. Desideri cambiare il tuo nome visualizzato o la tua immagine del profilo? Devi farlo per ogni profilo. Puoi usare gli accessi social in alcuni casi, ma questo presenta un problema comune: la censura. In un solo click, queste piattaforme possono escluderti da tutta la tua vita online. Ancora peggio, molte piattaforme ti richiedono di affidare loro le tue informazioni personalmente identificabili, per creare un profilo.
+
+Web3 risolve questi problemi consentendoti di controllare la tua identità digitale con un indirizzo di Ethereum e un profilo ENS. Usare un indirizzo di Ethereum consente di avere un solo accesso tra piattaforme che è sicuro, resistente alla censura e anonimo.
+
+
+ Accesso con Ethereum
+
+
+### Pagamenti nativi {#native-payments}
+
+L'infrastruttura di pagamento del Web2 si affida a banche e processori di pagamento, escludendo le persone senza conti bancari o coloro che vivono nei confini del paese sbagliato. Web3 usa token come [ETH](/eth/) per inviare denaro direttamente nel browser e non richiede alcuna terza parte fidata.
+
+
+ Maggiori informazioni su ETH
+
+
+## Limitazioni del Web3 {#web3-limitations}
+
+Nonostante i numerosi benefici di Web3 nella sua forma corrente, esistono ancora molte limitazioni che l'ecosistema deve risolvere perché possa prosperare.
+
+### Accessibilità {#accessibility}
+
+Importanti funzionalità di Web3, come Accedi con Ethereum, sono già disponibili per esser usati da chiunque, a costo zero. Ma, il costo relativo delle transazioni è ancora proibitivo per molti. A causa delle commissioni di transazione elevate, è meno probabile che Web3 sia usato nei paesi meno sviluppati e in via di sviluppo. Su Ethereum, queste difficoltà sono risolte tramite gli [aggiornamenti della rete](/upgrades/) e le [soluzioni di ridimensionamento del livello 2](/developers/docs/scaling/). La tecnologia è pronta, ma necessitiamo di una maggiore adozione del livello 2 per rendere Web3 accessibile a tutti.
+
+### Esperienza utente {#user-experience}
+
+Correntemente, la barriera tecnica per accedere all'uso di Web3 è troppo elevata. Gli utenti devono comprendere le problematiche di sicurezza, la complessa documentazione tecnica e navigare in interfacce utente non intuitive. I [fornitori di portafogli](/wallets/find-wallet/), in particolare, stanno lavorando per risolverlo, ma è necessario un ulteriore progresso prima che Web3 sia adottato in massa.
+
+### Educazione {#education}
+
+Web3 introduce nuovi paradigmi che richiedono l'apprendimento di modelli mentali differenti da quelli usati nel Web 2.0. Una simile ondata d'istruzione si verificò al guadagnare popolarità del Web 1.0 alla fine degli anni '90; i fautori del World Wide Web utilizzarono una serie di tecniche d'istruzione per educare il pubblico, dalle semplici metafore (l'autostrada delle informazioni, navigare sul web, etc.), alle [trasmissioni televisive](https://www.youtube.com/watch?v=SzQLI7BxfYI). Il Web3 non è difficile, ma è differente. Le iniziative educative che informano gli utenti di Web2 di questi paradigmi del Web3, sono vitali per il suo successo.
+
+Ethereum.org contribuisce all'istruzione su Web3 tramite il suo [Programma di Traduzione](/contributing/translation-program/), mirando a tradurre importanti contenuti di Ethereum in quante più lingue possibili.
+
+### Infrastruttura centralizzata {#centralized-infrastructure}
+
+L'ecosistema di Web3 è giovane e in rapida evoluzione. Di conseguenza, al momento dipende principalmente dall'infrastruttura centralizzata (GitHub, Twitter, Discord, etc.). Molte aziende del Web3 si stanno affrettando a colmare queste lacune, ma costruire un'infrastruttura affidabile e d'alta qualità richiede tempo.
+
+## Un futuro decentralizzato {#decentralized-future}
+
+Il Web3 è un ecosistema giovane e in continua evoluzione. Gavin Wood ha coniato il termine nel 2014, ma molte di queste idee sono diventate realtà solo di recente. Solo nell'ultimo anno, è sorto un notevole interesse nelle criptovalute, vi sono stati miglioramenti alle soluzioni di ridimensionamento del livello 2, esperimenti in massa con nuove forme di governance e rivoluzioni nell'identità digitale.
+
+Siamo solo all'inizio della creazione di un Web migliore con Web3, ma mentre continuiamo a migliorare l'infrastruttura che lo supporterà, il futuro del Web appare roseo.
+
+## Come posso partecipare {#get-involved}
+
+- [Ottieni un portafoglio](/wallets/)
+- [Trova una community](/community/)
+- [Esplora le applicazioni Web3](/dapps/)
+- [Partecipa a una DAO](/dao/)
+- [Crea sul Web3](/developers/)
+
+## Lettura consigliate {#further-reading}
+
+Il Web3 non ha una definizione rigida. Vari partecipanti della community hanno prospettive differenti al riguardo. Eccone alcune:
+
+- [What is Web3? L'Internet Decentralizzato del Futuro Spiegato](https://www.freecodecamp.org/news/what-is-web3/) – _Nader Dabit_
+- [Dare Senso al Web 3](https://medium.com/l4-media/making-sense-of-web-3-c1a9e74dcae) – _Josh Stark_
+- [Perché Web3 È Importante](https://future.a16z.com/why-web3-matters/) — _Chris Dixon_
+- [Perché la Decentralizzazione È Importante](https://onezero.medium.com/why-decentralization-matters-5e3f79f7638e) - _Chris Dixon_
+- [Il Panorama di Web3](https://a16z.com/wp-content/uploads/2021/10/The-web3-Readlng-List.pdf) – _a16z_
+- [Il Dibattito su Web3](https://www.notboring.co/p/the-web3-debate?s=r) – _Packy McCormick_
diff --git a/src/content/translations/it/whitepaper/index.md b/src/content/translations/it/whitepaper/index.md
index c5d672ce566..f8d8bb7584e 100644
--- a/src/content/translations/it/whitepaper/index.md
+++ b/src/content/translations/it/whitepaper/index.md
@@ -7,306 +7,320 @@ sidebarDepth: 2
# Whitepaper Ethereum {#ethereum-whitepaper}
-_Questo documento introduttivo è stato originariamente pubblicato nel 2013 da Vitalik Buterin, fondatore di [Ethereum](/what-is-ethereum/), prima del lancio del progetto nel 2015. Vale la pena ricordare che Ethereum, come molti progetti software open-source basati su una comunità, si è evoluto dai primi tempi._
+_Questo documento introduttivo è stato originariamente pubblicato nel 2014 da Vitalik Buterin, fondatore di [Ethereum](/what-is-ethereum/), prima del lancio del progetto nel 2015. Vale la pena di ricordare che Ethereum, come molti progetti software open-source basati su una comunità, si è evoluto dai primi tempi._
-_Anche se ormai ha alcuni anni, continuiamo a usare questo documento perché rimane un utile riferimento e una rappresentazione accurata di Ethereum e della sua visione. Per conoscere gli ultimi sviluppi di Ethereum e come vengono apportate modifiche al protocollo, consigliamo di consultare [questa guida](/learn/)._
+_Pur essendo stato redatto qualche anno fa, questo documento rimane comunque un utile riferimento e una rappresentazione accurata di Ethereum e della sua visione. Per conoscere gli ultimi sviluppi di Ethereum e come vengono apportate modifiche al protocollo, consigliamo di consultare [questa guida](/learn/)._
-## Smart Contract di prossima generazione e piattaforma applicativa decentralizzata {#a-next-generation-smart-contract-and-decentralized-application-platform}
+[Ricercatori e accademici alla ricerca di una versione storica o canonica del whitepaper [del dicembre 2014] dovrebbero avvalersi di questo PDF.](./whitepaper-pdf/Ethereum_Whitepaper_-_Buterin_2014.pdf)
-Lo sviluppo di Bitcoin da parte di Satoshi Nakamoto nel 2009 è stato spesso considerato come una trasformazione radicale dei concetti di denaro e valuta, essendo il primo esempio di risorsa digitale che allo stesso tempo non ha supporto reale, [valore intrinseco](http://Bitcoinmagazine.com/8640/an-exploration-of-intrinsic-value-what-it-is-why-Bitcoin-doesnt-have-it-and-why-Bitcoin-does-have-it/), emittente o controllore centralizzato. Tuttavia, un'altra (probabilmente più importante) parte dell'esperimento Bitcoin è la tecnologia blockchain che sta alla base, sotto forma di strumento di consenso distribuito, e l'attenzione sta cominciando rapidamente a passare a questo altro aspetto di Bitcoin. Le applicazioni citate comunemente come alternative della tecnologia blockchain includono risorse digitali su blockchain che rappresentano valute e strumenti finanziari personalizzati ([colored coins](https://docs.google.com/a/buterin.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lIzrTLuoWu2z1BE/edit) o moneta colorata), la proprietà di un dispositivo fisico sottostante ([smart property](https://en.Bitcoin.it/wiki/Smart_Property)), risorse non fungibili come nomi di dominio ([Namecoin](http://namecoin.org)) e applicazioni più complesse che comportano la presenza di risorse digitali controllate direttamente da codice che attua regole arbitrarie ([Smart Contract](http://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/idea.html)) o addirittura [organizzazioni autonome decentralizzate](http://Bitcoinmagazine.com/7050/bootstrapping-a-decentralized-autonomous-corporation-part-i/) (DAO) basate su blockchain. Quello che Ethereum intende fornire è una blockchain con un linguaggio di programmazione esaustivo Turing completo, che può essere utilizzato per creare "contratti", i quali a loro volta possono essere utilizzati per codificare funzioni di transizione di stato arbitrarie, permettendo agli utenti di creare uno dei sistemi sopra descritti (e molti altri che non abbiamo ancora immaginato), semplicemente scrivendo la logica in poche righe di codice.
+## Un Contratto Intelligente di Prossima Generazione e una Piattaforma dell'Applicazione Decentralizzata {#a-next-generation-smart-contract-and-decentralized-application-platform}
+
+Lo sviluppo di Bitcoin da parte di Satoshi Nakamoto nel 2009 è stato spesso considerato come uno sviluppo radicale in denaro e valuta, essendo il primo esempio di risorsa digitale che allo stesso tempo non ha alcun supporto o [valore intrinseco](http://bitcoinmagazine.com/8640/an-exploration-of-intrinsic-value-what-it-is-why-bitcoin-doesnt-have-it-and-why-bitcoin-does-have-it/) e nessun emittente o controllore centralizzato. Tuttavia, un'altra parte, probabilmente più importante, dell'esperimento Bitcoin è la tecnologia blockchain sottostante come strumento di consenso distribuito e l'attenzione sta rapidamente iniziando a spostarsi su quest'altro aspetto di Bitcoin. Le applicazioni alternative comunemente citate della tecnologia della blockchain, includono l'utilizzo delle risorse digitali sulla blockchain per rappresentare valute personalizzate e strumenti finanziari ("[monete colorate](https://docs.google.com/a/buterin.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lIzrTLuoWu2z1BE/edit)"), il proprietario di un dispositivo fisico sottostante ("[proprietà intelligente](https://en.bitcoin.it/wiki/Smart_Property)"), risorse non fungibili come i nomi del dominio ("[Namecoin](http://namecoin.org)"), nonché applicazioni più complesse che precludano il possesso di risorse digitali, direttamente controllate da un pezzo di codice che implementi regole arbitrarie ("[contratti intelligenti](http://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/idea.html)") o persino "[organizzazioni autonome decentralizzate](http://bitcoinmagazine.com/7050/bootstrapping-a-decentralized-autonomous-corporation-part-i/)" (DAO) basate sulla blockchain. Ciò che Ethereum intende fornire è una blockchain con un linguaggio di programmazione completo di Turing integrato, che può essere utilizzato per creare "contratti" da utilizzare per codificare funzioni di transizioni di stato arbitrarie, consentendo agli utenti di creare uno qualsiasi dei sistemi descritti sopra, nonché molti altri che non abbiamo ancora immaginato, semplicemente scrivendo la logica in poche righe di codice.
## Introduzione a Bitcoin e concetti esistenti {#introduction-to-bitcoin-and-existing-concepts}
### Storia {#history}
-Il concetto di valuta digitale decentralizzata, così come di applicazioni alternative come i registri di proprietà, esiste da decenni. I protocolli anonimi di moneta elettronica degli anni '80 e '90, per lo più basati su una primitiva crittografica nota come Chaumian blinding, fornivano una valuta con un elevato grado di privacy, ma i protocolli non riuscivano ad avere successo a causa della loro dipendenza da un intermediario centralizzato. Nel 1998, Wei Da con [b-money](http://www.weidai.com/bmoney.txt) introdusse la proposta di creare denaro attraverso la risoluzione di enigmi di calcolo e il consenso decentralizzato, che però era povera di dettagli su come ottenere quest'ultimo. Nel 2005, Hal Finney introdusse il concetto di [Proof of Work riutilizzabili](http://nakamotoinstitute.org/finney/rpow/), un sistema che utilizzava le idee di b-money insieme agli enigmi Hashcash ad alta difficoltà di calcolo di Adam Back per creare un concetto di criptovaluta. Ma anche questo tentativo fallì in quanto si basava su elaborazione attendibile come backend. Nel 2009 fu per la prima volta creata da Satoshi Nakamoto una valuta decentralizzata, combinando concetti già assodati per gestire la proprietà attraverso la crittografia a chiave pubblica, con un algoritmo di consenso per tenere traccia della proprietà delle monete. Questo sistema era noto come "proof-of-work".
-
-Il meccanismo che stava alla base della proof-of-work era una novità assoluta nel campo perché risolveva contemporaneamente due problemi. In primo luogo, forniva un semplice e moderatamente efficace algoritmo di consenso, permettendo ai nodi della rete di concordare collettivamente una serie di aggiornamenti canonici allo stato del libro mastro di Bitcoin. In secondo luogo, forniva un meccanismo per consentire il libero ingresso nel processo di consenso, rivolvendo il problema politico di decidere chi poteva influenzare il consenso e contemporaneamente impedendo gli attacchi sybil. Lo faceva sostituendo un ostacolo formale alla partecipazione (cioè l'obbligo di essere registrati come entità unica in un determinato elenco) con un ostacolo economico: il peso di un solo nodo nel processo di voto per il consenso era direttamente proporzionale alla potenza di calcolo associata al nodo. Da allora, è stato proposto un approccio alternativo chiamato _proof-of-stake_, che calcola il peso di un nodo in modo proporzionale alla quantità di valuta che possiede e non alla sua potenza di calcolo; la discussione sui meriti relativi dei due approcci va oltre lo scopo di questo documento ma è importante notare che entrambi gli approcci possono essere usati come punto di partenza per una criptovaluta.
+Il concetto di valuta digitale decentralizzata, così come di applicazioni alternative come i registri di proprietà, esiste da decenni. I protocolli anonimi di moneta elettronica degli anni '80 e '90, per lo più basati su una crittografia primitiva nota come Chaumian blinding, fornivano una valuta con un alto grado di privacy, ma i protocolli non riuscivano in gran parte a guadagnare popolarità a causa della loro dipendenza da un intermediario centralizzato. Nel 1998, il sistema [b-money](http://www.weidai.com/bmoney.txt) proposto da Wei Dai è stato il primo a introdurre l'idea di creare denaro attraverso la risoluzione di enigmi computazionali ed il consenso decentralizzato, ma la sua proposta era povera di dettagli su come il consenso decentralizzato potesse essere effettivamente implementato. Nel 2005, Hal Finney ha introdotto il concetto di "[proof-of-work riutilizzabili](https://nakamotoinstitute.org/finney/rpow/)", un sistema che utilizza le idee di b-money insieme agli enigmi Hashcash di Adam Back, difficili dal punto di vista computazionale, per creare un concetto di criptovaluta, ma ancora una volta non è stato all'altezza dell'ideale affidandosi al trusted computing come back-end. Nel 2009 Satoshi Nakamoto ha realizzato per la prima volta una moneta decentralizzata, combinando primitive consolidate per la gestione della proprietà attraverso la crittografia a chiave pubblica con un algoritmo di consenso per tenere traccia di chi possiede le monete, noto come "proof-of-work".
-Ecco un post del blog di Vitalik Buterin, il fondatore di Ethereum, sulla [storia precedente a Ethereum](https://vitalik.ca/general/2017/09/14/prehistory.html). [Qui](https://blog.ethereum.org/2016/02/09/cut-and-try-building-a-dream/) trovate un altro post di blog con altri cenni storici.
+Il meccanismo alla base del proof-of-work ha rappresentato una svolta nel settore perché ha risolto contemporaneamente due problemi. In primo luogo, ha fornito un algoritmo di consenso semplice e moderatamente efficace, consentendo ai nodi della rete di concordare collettivamente una serie di aggiornamenti canonici allo stato del libro mastro Bitcoin. In secondo luogo, ha fornito un meccanismo per consentire il libero ingresso nel processo di consenso, risolvendo il problema politico di decidere chi può influenzare il consenso, e allo stesso tempo prevenendo gli attacchi Sybil. Ciò avviene sostituendo una barriera formale alla partecipazione, come il requisito di essere registrati come entità unica in una particolare lista, con una barriera economica: il peso di un singolo nodo nel processo di votazione del consenso è direttamente proporzionale alla potenza di calcolo che il nodo rappresenta. Da allora, è stato proposto un approccio alternativo chiamato _proof-of-stake_, che calcola il peso di un nodo come proporzionale alle sue disponibilità di valuta e non alle risorse computazionali; la discussione dei meriti relativi dei due approcci esula dallo scopo di questo documento, ma va notato che entrambi gli approcci possono fungere da colonna portante di una criptovaluta.
### Bitcoin come sistema di transizione tra stati {#bitcoin-as-a-state-transition-system}
-![Transizione tra stati di Ethereum](../../../whitepaper/ethereum-state-transition.png)
+![Transizione tra stati di Ethereum](./ethereum-state-transition.png)
-Da un punto di vista tecnico, il libro mastro di una criptovaluta come Bitcoin può essere pensato come un sistema di transizione tra stati, dove esiste uno "stato" che consiste nello stato di proprietà di tutti i Bitcoin esistenti e una "funzione di transizione tra stati" che prende uno stato e una transazione e produce un nuovo stato come risultato. In un sistema bancario tradizionale, ad esempio, lo stato è un estratto conto, mentre una transazione è una richiesta di spostare $X da A a B, e la funzione di transizione tra stati riduce il valore del conto di A di $X, aumentando quello del conto di B di $X. Se l'account di A ha meno di $X, la funzione di transizione tra stati restituisce un errore. Pertanto, si può formalmente definire:
+Da un punto di vista tecnico, il libro mastro di una criptovaluta come Bitcoin può esser pensato come un sistema di transizione tra stati, dove esiste uno "stato" di proprietà di tutti i Bitcoin esistenti e una "funzione di transizione tra stati" che, da uno stato e una transazione, produce un nuovo stato, che è il risultato. In un sistema bancario standard, ad esempio, lo stato è un bilancio, una transazione è una richiesta di spostare $X da A a B e la funzione di transizione di stato riduce il valore nel conto di A di $X e aumenta il valore nel conto di B di $X. Se il conto di A ha meno di $X, la funzione di transizione di stato restituisce un errore. Pertanto, si può formalmente definire come:
- APPLY(S,TX) -> S' or ERROR
+```
+APPLY(S,TX) -> S' or ERROR
+```
Nel sistema bancario sopra definito:
- APPLY({ Alice: $50, Bob: $50 },"send $20 from Alice to Bob") = { Alice: $30, Bob: $70 }
+```js
+APPLY({ Alice: $50, Bob: $50 },"send $20 from Alice to Bob") = { Alice: $30, Bob: $70 }
+```
Ma:
- APPLY({ Alice: $50, Bob: $50 },"send $70 from Alice to Bob") = ERROR
-
-Lo "stato" in Bitcoin è la raccolta di tutte le monete (tecnicamente, "output delle transazioni non speso" o UTXO) di cui è stato eseguito il mining e che non sono ancora state spese, dove ogni UTXO ha un taglio e un proprietario (definito da un indirizzo a 20 byte che è essenzialmente una chiave pubblica crittografica[fn. 1](#notes)). Una transazione contiene uno o più input, dove ogni input contiene un riferimento a un UTXO esistente e una firma crittografica prodotta dalla chiave privata associata all'indirizzo del proprietario, e uno o più output, dove ogni output contiene un nuovo UTXO da aggiungere allo stato.
-
-La funzione di transizione tra stati `APPLY(S,TX) -> S'` può essere definita approssimativamente come segue:
-
-1. Per ogni input in `TX`:
-
- - Se l'UTXO a cui si fa riferimento non è in `S`, viene restituito un errore.
- - Se la firma fornita non corrisponde al proprietario dell'UTXO, viene restituito un errore.
-
-2. Se la somma dei tagli di tutti gli UTXO in ingresso è inferiore alla somma dei tagli di tutti gli UTXO in uscita, viene restituito un errore.
-3. Viene restituito `S'` con tutti gli UTXO in ingresso rimossi e tutti gli UTXO in uscita aggiunti.
-
-La prima metà del primo passaggio impedisce ai mittenti delle transazioni di spendere monete che non esistono, la seconda metà del primo passaggio impedisce ai mittenti delle transazioni di spendere monete altrui e il secondo passaggio implementa la conservazione del valore. Per utilizzare queste regole per il pagamento, il protocollo è il seguente. Supponiamo che Alice voglia inviare 11,7 BTC a Bob. In primo luogo, Alice cercherà una serie di UTXO disponibili che possiede, che ammontino almeno a un totale di 11,7 BTC. Realisticamente, Alice non sarà in grado di ottenere esattamente 11,7 BTC; supponiamo che il minimo che riesce a ottenere sia 6+4+2=12. Quindi crea una transazione con questi tre input e due output. Il primo output sarà 11,7 BTC con l'indirizzo di Bob come proprietario, e il secondo output sarà il restante 0,3 BTC di "resto", aventi come proprietario Alice stessa.
+```js
+APPLY({ Alice: $50, Bob: $50 },"send $70 from Alice to Bob") = ERROR
+```
+
+Lo "stato" in Bitcoin è la raccolta di tutte le monete (tecnicamente, "output di transazione non speso" o UTXO) di cui è stato eseguito il minting e che non sono ancora state spese, dove ogni UTXO ha un taglio e un proprietario (definito da un indirizzo a 20 byte che è essenzialmente una chiave pubblica crittografica[fn1](#notes)). Una transazione contiene uno o più input contenenti ciascuno un riferimento a un UTXO esistente e a una firma crittografica, prodotta dalla chiave privata associata all'indirizzo del proprietario, e ad uno o più input contenenti ciascuno un nuovo UTXO da aggiungere allo stato.
+
+La funzione di transizione di stato `APPLY(S,TX) -> S'` è approssimativamente definibile come segue:
+
+
+ -
+ Per ogni input in
TX
:
+
+ -
+ Se l'UTXO a cui si fa riferimento non è in
S
, viene restituito un errore.
+
+ -
+ Se la firma fornita non corrisponde al proprietario dell'UXTO, viene restituito un errore.
+
+
+
+ -
+ Se la somma dei tagli di tutti gli UTXO in ingresso è inferiore alla somma dei tagli di tutti gli UTXO in uscita, viene restituito un errore.
+
+ -
+ Restituisce
S
con tutti gli UTXO di ingresso rimossi e tutti gli UTXO di uscita aggiunti.
+
+
+
+La prima metà del primo passaggio impedisce ai mittenti delle transazioni di spendere monete che non esistono, la seconda metà del primo passaggio impedisce ai mittenti delle transazioni di spendere monete altrui e il secondo passaggio implementa la conservazione del valore. Per utilizzare queste regole per il pagamento, il protocollo è il seguente. Supponiamo che Alice voglia inviare 11,7 BTC a Bob. In primo luogo, Alice cercherà una serie di UTXO disponibili che possiede, che ammontino almeno a un totale di 11,7 BTC. Realisticamente, Alice non sarà in grado di ottenere esattamente 11,7 BTC; supponiamo che il minimo che riesce a ottenere sia 6+4+2=12. Quindi crea una transazione con questi tre input e due output. Il primo output sarà 11,7 BTC con l'indirizzo di Bob come proprietario e il secondo output saranno i restanti 0,3 BTC di "resto", aventi come proprietario la stessa Alice.
### Mining {#mining}
-![Blocchi di Ethereum](../../../whitepaper/ethereum-blocks.png)
+![Blocchi di Ethereum](./ethereum-blocks.png)
-Se avessimo accesso a un servizio centralizzato affidabile, il sistema sarebbe facile da implementare; si potrebbe semplicemente programmare come descritto, usando il disco rigido di un server centralizzato per tenere traccia dello stato. Invece con Bitcoin stiamo cercando di costruire un sistema di valuta decentralizzato, quindi dovremo combinare il sistema di transizione tra stati con un sistema di consenso, per garantire che tutti concordino sull'ordine delle transazioni. Il processo di consenso decentralizzato di Bitcoin richiede che i nodi nella rete tentino continuamente di produrre pacchetti di transazioni chiamati "blocchi". La rete è destinata a produrre circa un blocco ogni dieci minuti, dove ogni blocco contiene un indicatore data/ora, un nonce, un riferimento (hash) al blocco precedente e un elenco di tutte le transazioni che sono state effettuate dopo il blocco precedente. Nel tempo, questa situazione crea una "blockchain" persistente, in continua crescita, che si aggiorna costantemente per rappresentare l'ultimo stato del libro mastro di Bitcoin.
+Se avessimo accesso a un servizio centralizzato affidabile, il sistema sarebbe facile da implementare; si potrebbe semplicemente programmare come descritto, usando il disco rigido di un server centralizzato per tenere traccia dello stato. Invece con Bitcoin stiamo cercando di costruire un sistema di valuta decentralizzato, quindi dovremo combinare il sistema di transizione tra stati con un sistema di consenso, per garantire che tutti concordino sull'ordine delle transazioni. Il processo di consenso decentralizzato di Bitcoin richiede che i nodi nella rete tentino continuamente di produrre pacchetti di transazioni chiamati "blocchi". La rete è destinata a produrre circa un blocco ogni dieci minuti e ogni blocco contiene un indicatore data/ora, un nonce, un riferimento (hash) al blocco precedente e un elenco di tutte le transazioni che sono state effettuate dopo il blocco precedente. Nel tempo, questa situazione crea una "blockchain" persistente, in continua crescita, che si aggiorna costantemente per rappresentare l'ultimo stato del libro mastro di Bitcoin.
L'algoritmo per controllare se un blocco è valido, espresso in questo paradigma, è il seguente:
-1. Verifica se il blocco precedente a cui fa riferimento il blocco corrente esiste ed è valido.
-2. Verifica che l'indicatore data/ora del blocco sia maggiore di quello del blocco precedente[fn. 2](#notes) e meno di 2 ore nel futuro
-3. Verifica che la proof-of-work del blocco sia valida.
-4. Supponiamo che `S[0]` sia lo stato alla fine del blocco precedente.
-5. Supponiamo che `TX` sia la lista delle transazioni del blocco con `n` transazioni. Per ogni `i` in `0...n-1`, si applica `S[i+1] = APPLY(S[i], X[i])` Se una o più applicazioni restituiscono un errore, il codice esce e restituisce false.
-6. Restituisce true, e registra `S[n]` come stato alla fine del blocco.
+1. Verifica se il blocco precedente a cui fa riferimento il blocco corrente esiste ed è valido.
+2. Verifica che l'indicatore data/ora (timestamp) del blocco sia maggiore di quella del precedente[fn2](#notes) e meno di 2 ore nel futuro.
+3. Verifica che il proof-of-work del blocco sia valido.
+4. Supponiamo che `S[0]` sia lo stato alla fine del blocco precedente.
+5. Supponiamo che `TX` sia la lista delle transazioni del blocco con `n` transazioni. Per ogni `i` in `0...n-1`, impostare `S[i+1] = APPLY(S[i],TX[i])`. Se una qualsiasi applicazione restituisce un errore, si chiude e restituisce il valore "false".
+6. Quando restituisce il valore "true", registrare `S[n]` come stato alla fine del blocco.
-In sostanza, ogni transazione nel blocco deve fornire una transizione di stato valida da quello che era lo stato canonico prima che la transazione fosse eseguita al nuovo stato. Si noti che lo stato non è codificato in alcun modo nel blocco; è puramente un'astrazione che il nodo che esegue la convalida deve ricordare e può essere calcolato in sicurezza per ogni blocco solo partendo dallo stato genesi e applicando sequenzialmente ogni transazione in ogni blocco. Si noti inoltre che l'ordine in cui il miner include le transazioni nel blocco è importante; se ci sono due transazioni A e B in un blocco, in modo tale che B spenda un UTXO creato da A, il blocco sarà valido solo se A viene prima di B e non viceversa.
+In sostanza, ogni transazione nel blocco deve fornire una transizione di stato valida da quello che era lo stato canonico prima che la transazione al nuovo stato fosse eseguita. Si noti che lo stato non è codificato in alcun modo nel blocco; è puramente un'astrazione che il nodo che esegue la convalida deve ricordare e può essere calcolato in sicurezza per ogni blocco solo partendo dallo stato genesi e applicando sequenzialmente ogni transazione in ogni blocco. Si noti inoltre che l'ordine in cui il miner include le transazioni nel blocco è importante; se ci sono due transazioni A e B in un blocco, in modo tale che B spenda un UTXO creato da A, il blocco sarà valido solo se A viene prima di B e non viceversa.
-L'unica condizione di validità presente nell'elenco qui sopra che non si trova in altri sistemi è il requisito di "proof-of-work". La condizione esatta è che l'hash double-SHA256 di ogni blocco, trattato come un numero a 256 bit, deve essere inferiore a un target regolato dinamicamente, che al momento della scrittura di questo documento è di circa 2187. Lo scopo è rendere la creazione di blocchi "difficile" dal punto di vista del calcolo, impedendo così ad attacchi sybil di ricreare l'intera blockchain a loro favore. Dato che SHA256 è progettato per essere una funzione pseudocasuale completamente imprevedibile, l'unico modo per creare un blocco valido è semplicemente tramite un processo di tentativo ed errore, incrementando ripetutamente il nonce e controllando se il nuovo hash coincide.
+L'unica condizione di validità presente nell'elenco qui sopra che non si trova in altri sistemi è il requisito "proof-of-work". La condizione esatta è che l'hash double-SHA256 di ogni blocco, trattato come un numero a 256 bit, debba essere inferiore a un target regolato dinamicamente, che al momento della scrittura di questo documento è di circa 2187. Lo scopo è rendere la creazione di blocchi "difficile" dal punto di vista computazionale, impedendo così ad attacchi Sybil di ricreare l'intera blockchain a loro favore. Dato che SHA256 è progettato per essere una funzione pseudocasuale completamente imprevedibile, l'unico modo per creare un blocco valido è semplicemente tramite il metodo "prova e sbaglia", incrementando ripetutamente il nonce e controllando se il nuovo hash coincide.
-All'attuale obiettivo di \~2187, la rete deve fare una media di \~269 tentativi prima di trovare un blocco valido; in generale, l'obiettivo viene ricalibrato dalla rete ogni 2016 blocchi, in modo che in media un nuovo blocco venga prodotto da un nodo nella rete ogni dieci minuti. Al fine di ricompensare i miner per questo lavoro di calcolo, il miner di ogni blocco ha il diritto di includere una transazione assegnandosi 12,5 BTC creati dal nulla. Inoltre, se una o più transazioni hanno un taglio totale superiore nei propri input rispetto agli output, anche la differenza va al miner come "commissione sulle transazioni". Per inciso, questo è anche l'unico meccanismo con cui vengono emessi nuovi BTC; lo stato genesi non conteneva alcuna moneta.
+All'attuale target di \~2187, la rete deve fare una media di \~269 tentativi prima di trovare un blocco valido; in generale, il target viene ricalibrato dalla rete ogni 2016 blocchi, in modo che, in media, un nuovo blocco venga prodotto da un nodo nella rete ogni dieci minuti. Al fine di ricompensare i miner per questo lavoro computazionale, il miner di ogni blocco ha il diritto di includere una transazione assegnandosi 12,5 BTC creati dal nulla. Inoltre, se una o più transazioni hanno un taglio totale superiore nei propri input rispetto agli output, anche la differenza va al miner come "commissione sulle transazioni". Per inciso, questo è anche l'unico meccanismo con cui vengono emessi nuovi BTC; lo stato genesi non conteneva alcuna moneta.
Al fine di comprendere meglio lo scopo del mining, vediamo cosa succede in caso di attacco da parte di un malintenzionato. Poiché la crittografia sottostante di Bitcoin è nota per essere sicura, l'attaccante rivolgerà la sua attenzione all'unica parte del sistema Bitcoin che non è protetta direttamente dalla crittografia: l'ordine delle transazioni. La strategia dell'attaccante è semplice:
-1. Invia 100 BTC ad un esercente in cambio di un prodotto (preferibilmente un prodotto digitale a consegna rapida)
-2. Attende la consegna del prodotto
-3. Esegue un'altra transazione inviando gli stessi 100 BTC a se stesso
-4. Cerca di convincere la rete che la transazione che ha inviato a se stesso è quella che è arrivata prima.
+1. Invia 100 BTC ad un commerciante in cambio di un prodotto (preferibilmente un prodotto digitale a consegna rapida)
+2. Attende la consegna del prodotto
+3. Esegue un'altra transazione inviando gli stessi 100 BTC a se stesso
+4. Cerca di convincere la rete che la transazione che ha inviato a se stesso è quella che è arrivata prima.
-Dopo alcuni minuti dall'esecuzione del passaggio (1), un miner includerà la transazione in un blocco, ad esempio nel blocco 270. Dopo circa un'ora, altri cinque blocchi saranno stati aggiunti alla catena dopo quel blocco, e ciascuno di questi blocchi punterà indirettamente alla transazione, pertanto confermandola. A questo punto, l'esercente accetterà il pagamento come finalizzato e consegnerà il prodotto; dal momento che supponiamo che si tratti di un bene digitale, la consegna è immediata. Ora, l'attaccante crea un'altra transazione, inviando i 100 BTC a se stesso. Se l'attaccante inviasse questa transazione semplicemente a caso, la transazione non verrebbe elaborata; i miner cercherebbero di eseguire `APPLY(S, X)` e noterebbero che `TX` consuma un UTXO che non è più nello stato. Invece l'attaccante crea una "diramazione" della blockchain, iniziando a eseguire il mining di un'altra versione del blocco 270 e puntando allo stesso blocco 269 come padre, ma con la nuova transazione al posto di quella vecchia. Poiché i dati del blocco sono diversi, la situazione richiede una ripetizione della proof-of-work. Inoltre, la nuova versione del blocco 270 dell'aggressore ha un hash diverso, quindi i blocchi originali da 271 a 275 non "puntano" ad esso; così la catena originale e la nuova catena dell'aggressore sono completamente separate. La regola è che, in caso di diramazione, la blockchain più lunga è considerata quella vera, così i miner legittimi lavoreranno sulla catena 275 mentre solo l'aggressore lavora sulla catena 270. Per far diventare la propria blockchain la più lunga, l'aggressore ha bisogno di disporre di più potenza di calcolo rispetto al resto della rete combinata, per recuperare il ritardo (da qui il termine "attacco del 51%").
+Qualche minuto dopo aver eseguito il passaggio 1), qualche miner includerà la transazione in un blocco, ad esempio il blocco numero 270000. Dopo circa un'ora, altri cinque blocchi saranno stati aggiunti alla catena dopo quel blocco, e ciascuno di questi blocchi punterà indirettamente alla transazione, pertanto confermandola. A questo punto, il commerciante accetterà il pagamento come finalizzato e consegnerà il prodotto; dal momento che supponiamo che si tratti di un bene digitale, la consegna è immediata. Ora, l'attaccante crea un'altra transazione, inviando i 100 BTC a se stesso. Se l'attaccante inviasse questa transazione semplicemente a caso, la transazione non verrebbe elaborata; i miner cercherebbero di eseguire `APPLY(S, X)` e noterebbero che `TX` consuma un UTXO che non è più nello stato. Invece l'attaccante crea una "diramazione" della blockchain, iniziando a eseguire il mining di un'altra versione del blocco 270000 e puntando al blocco 269999 in quanto principale, ma con la nuova transazione al posto di quella vecchia. Poiché i dati del blocco sono diversi, la situazione richiede una ripetizione del proof-of-work. Inoltre, la nuova versione del blocco 270000 dell'attaccante ha un hash diverso, quindi i blocchi originali da 270001 a 270005 non "puntano" ad esso; così la catena originale e la nuova catena dell'attaccante sono completamente separate. La regola è che, in caso di diramazione, la blockchain più lunga è considerata quella vera, così i miner legittimi lavoreranno sulla catena 270005 mentre solo l'attaccante lavorerà sulla catena 270000. Per far diventare la propria blockchain la più lunga, l'attaccante ha bisogno di disporre di più potenza computazionale rispetto al resto della rete combinata, per recuperare il ritardo (da qui l'espressione "attacco del 51%").
### Alberi di Merkle {#merkle-trees}
-![SPV in Bitcoin](../../../whitepaper/spv-bitcoin.png)
+![SPV in Bitcoin](./spv-bitcoin.png)
_A sinistra: basta presentare solo un piccolo numero di nodi in un albero di Merkle per fornire una prova della validità di un ramo._
_A destra: ogni tentativo di cambiare una parte dell'albero di Merkle causerà incoerenze ai livelli superiori della catena._
-Una caratteristica importante per la scalabilità di Bitcoin è che il blocco è memorizzato in una struttura dati multi-livello. L'"hash" di un blocco è in realtà solo l'hash dell'intestazione del blocco, dati per circa 200 byte che contengono indicatore data/ora, nonce, hash del blocco precedente e hash radice di una struttura di dati chiamata albero di Merkle, che memorizza tutte le transazioni nel blocco. Un albero di Merkle è un tipo di albero binario, composto da un insieme di nodi con un gran numero di nodi foglia in fondo all'albero contenenti i dati sottostanti, un insieme di nodi intermedi in cui ogni nodo è l'hash dei suoi due figli e infine un solo nodo radice, anch'esso formato dall'hash dei suoi due figli, che rappresenta la cima dell'albero. Lo scopo dell'albero di Merkle è di consentire che i dati in un blocco siano consegnati pezzo per pezzo: un nodo può scaricare solo l'intestazione di un blocco da una sorgente, la parte limitata dell'albero relativa a se stesso da un'altra sorgente ed essere comunque certo che tutti i dati siano corretti. Il motivo per cui questo funziona è che gli hash si propagano verso l'alto: se un utente malintenzionato tenta di inserire una transazione falsa nella parte inferiore dell'albero di Merkle, questo cambiamento causerà un cambiamento nel nodo superiore e poi un cambiamento nel nodo ancora superiore finché, alla fine, cambierà la radice dell'albero e quindi l'hash del blocco, causando la registrazione di un blocco completamente diverso da parte del protocollo (quasi certamente con una "proof-of-work" non valida).
+Una caratteristica importante per la scalabilità di Bitcoin è che il blocco è memorizzato in una struttura dati multi-livello. L'"hash" di un blocco è in realtà solo l'hash dell'intestazione del blocco, un dato di circa 200 byte che contiene indicatore data/ora, nonce, hash del blocco precedente e hash radice di una struttura di dati chiamata albero di Merkle, che memorizza tutte le transazioni nel blocco. Un albero di Merkle è un tipo di albero binario, composto da un insieme di nodi con un gran numero di "nodi-foglia" nella parte bassa dell'albero contenenti i dati sottostanti, un insieme di nodi intermedi in cui ogni nodo è l'hash dei suoi due elementi secondari e infine un solo nodo radice, anch'esso formato dall'hash dei suoi due elementi secondari, che rappresenta la cima dell'albero. Lo scopo dell'albero di Merkle è di consentire che i dati in un blocco siano consegnati pezzo per pezzo: un nodo può scaricare solo l'intestazione di un blocco da una sorgente, la piccola parte dell'albero pertinente da un'altra sorgente, essendo comunque certi che tutti i dati siano corretti. Il motivo per cui questo funziona è che gli hash si propagano verso l'alto: se un utente malintenzionato tenta di inserire una transazione falsa nella parte inferiore dell'albero di Merkle, questo cambiamento causerà un cambiamento nel nodo superiore e poi un cambiamento nel nodo ancora superiore finché, alla fine, cambierà la radice dell'albero e quindi l'hash del blocco, causando la registrazione di un blocco completamente diverso da parte del protocollo (quasi certamente con un "proof-of-work" non valido).
-Il protocollo dell'albero di Merkle è probabilmente essenziale per la sostenibilità a lungo termine. Un nodo completo nella rete Bitcoin è un nodo che memorizza ed elabora per intero tutti i blocchi e occupa circa 15 GB di spazio su disco nella rete Bitcoin ad aprile 2014, e cresce di oltre un gigabyte al mese. Attualmente, questo è fattibile per alcuni computer desktop e non smartphone, ma in futuro solo aziende e hobbisti saranno in grado di partecipare. Un protocollo noto come "simplified payment verification" (SPV) consente l'esistenza di un'altra classe di nodi, chiamati nodi leggeri, che scaricano le intestazioni dei blocchi, verificano la proof-of-work sulle intestazioni dei blocchi, quindi scaricano solo i rami associati alle transazioni che sono rilevanti per loro. Questo permette ai nodi leggeri di determinare con una forte sicurezza quale è lo stato di qualsiasi transazione Bitcoin, e il loro saldo corrente, scaricando solo una piccolissima porzione dell'intera blockchain.
+Il protocollo dell'albero di Merkle è probabilmente essenziale per la sostenibilità a lungo termine. Un nodo completo nella rete Bitcoin è un nodo che memorizza ed elabora per intero tutti i blocchi e occupa circa 15 GB di spazio su disco nella rete Bitcoin ad aprile 2014, e cresce di oltre un gigabyte al mese. Attualmente, questo è fattibile per alcuni computer desktop e non per gli smartphone, ma in futuro solo aziende e hobbisti saranno in grado di partecipare. Un protocollo noto come "simplified payment verification" (SPV) consente l'esistenza di un'altra classe di nodi, chiamati "nodi leggeri", che scaricano le intestazioni dei blocchi, verificano il "proof-of-work" sulle intestazioni dei blocchi, quindi scaricano solo i rami associati alle transazioni che sono rilevanti per loro. Questo permette ai nodi leggeri di determinare con una forte sicurezza lo stato di qualsiasi transazione Bitcoin, e il loro saldo corrente, scaricando solo una piccolissima porzione dell'intera blockchain.
### Applicazioni blockchain alternative {#alternative-blockchain-applications}
-L'idea di prendere il concetto di blockchain e applicarlo ad altri campi ha una lunga storia. Nel 1998, Nick Szabo ideò il concetto di [titoli di proprietà sicuri con l'autorizzazione del proprietario](http://nakamotoinstitute.org/secure-property-titles/), in un documento che descriveva come "nuovi progressi nella tecnologia dei database replicati" permetteranno ad un sistema basato su blockchain di memorizzare un registro che indichi chi possiede un appezzamento di terreno, creando un elaborato framework che include concetti come piccola proprietà terriera, usucapione e tassa fondiaria georgiana. Tuttavia ai tempi non esisteva purtroppo alcun efficace sistema di database replicato e quindi il protocollo non è mai stato realizzato. Dopo il 2009, però, una volta sviluppato il consenso decentralizzato di Bitcoin, un certo numero di applicazioni alternative ha rapidamente iniziato a emergere.
+L'idea di prendere il concetto di blockchain e applicarlo ad altri campi ha una lunga storia. Nel 2005, Nick Szabo ha presentato il concetto di "[titoli di proprietà protetti con autorità del proprietario](https://nakamotoinstitute.org/secure-property-titles/)", un documento che descrive come "i nuovi progressi nella tecnologia dei database replicati" consentiranno un sistema basato su blockchain per l'archiviazione di un registro di chi possiede quale terreno, creando un quadro elaborato che includa concetti come fattoria, possesso avverso e tassa fondiaria georgiana. Tuttavia ai tempi non esisteva purtroppo alcun efficace sistema di database replicato e quindi il protocollo non è mai stato realizzato. Dopo il 2009, però, una volta sviluppato il consenso decentralizzato di Bitcoin, un certo numero di applicazioni alternative ha rapidamente iniziato a emergere.
-- **Namecoin** - creato nel 2010, [Namecoin](https://namecoin.org/) è meglio descritto come un database di registrazione dei nomi decentralizzato. In protocolli decentralizzati come Tor, Bitcoin e BitMessage, ci deve essere un modo per identificare gli account, affinché altre persone possano interagire con loro, ma in tutte le soluzioni esistenti l'unico tipo di identificatore disponibile è un hash pseudocasuale come `1LW79wp5ZBqaHW1jL5TCiBCrhQYtHagUWy`. Idealmente, si dovrebbe poter avere un account con un nome come "george". Però il problema è che se una persona può creare un account chiamato "george", qualcun altro può usare lo stesso processo per registrare "george" per se stesso e impersonarlo. L'unica soluzione è un paradigma first-to-file, dove la prima registrazione ha successo e la seconda fallisce, problema che calza a pennello con il protocollo del consenso di Bitcoin. Namecoin è l'implementazione più antica, e più riuscita, di un sistema di registrazione dei nomi che utilizza questa idea.
-- **Colored coin** - lo scopo di [colored coin](https://docs.google.com/a/buterin.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lIzrTLuoWu2z1BE/edit) è di fungere da protocollo per consentire di creare le proprie valute digitali o, come nel caso banale ma importante di una valuta con una sola unità, token digitali, sulla blockchain di Bitcoin. Nel protocollo dei colored coins, qualcuno "emette" una nuova valuta assegnando pubblicamente un colore a uno specifico UTXO Bitcoin e il protocollo definisce ricorsivamente il colore di altri UTXO sullo stesso degli input spesi della transazione per la creazione (si applicano alcune regole speciali nel caso di input a colori misti). Questo permette agli utenti di avere portafogli contenenti solo UTXO di un colore specifico, inviarli come Bitcoin standard e poterli tracciare su tutta la blockchain per determinare il colore di ogni UTXO che ricevono.
-- **Metacoin** - l'idea che sta alla base di una metacoin è avere un protocollo basato su Bitcoin, che utilizza le transazioni Bitcoin per memorizzare transazioni di metacoin ma con una diversa funzione di transizione tra stati, `APPLY'`. Poiché il protocollo metacoin non può impedire che transazioni metacoin non valide appaiano nella blockchain Bitcoin, viene aggiunta una regola che se `APPLY'(S,TX)` restituisce un errore, il protocollo passa automaticamente a `APPLY'(S,TX) = S`. Si tratta di un facile meccanismo per creare un protocollo di criptovalute arbitrario, potenzialmente con funzionalità avanzate che non possono essere implementate all'interno di Bitcoin, ma con un costo di sviluppo molto basso poiché le complessità di mining e networking sono già gestite dal protocollo Bitcoin. Metacoin è stato usato per implementare alcune classi di contratti finanziari, registrazione dei nomi e scambio decentralizzato.
+- **Namecoin**: creato nel 2010, [Namecoin](https://namecoin.org/) si può descrivere come un database di registrazione dei nomi decentralizzato. Nei protocolli decentralizzati come Tor, Bitcoin e BitMessage, è necessario un modo per identificare i conti, così che le altre persone possano interagirvi; ma in tutte le soluzioni esistenti, il solo tipo di identificativo disponibile è un hash pseudo-casuale come `1LW79wp5ZBqaHW1jL5TCiBCrhQYtHagUWy`. Idealmente, si dovrebbe poter avere un conto con un nome come "george". Tuttavia, il problema è che se una persona può creare un conto denominato "george", allora qualcun altro può usare lo stesso processo per registrare "george" per se stesso, oltre a impersonarlo. La soluzione è un paradigma del “primo depositante”, dove la prima registrazione riesce e la seconda no, un problema perfettamente adatto al protocollo di consenso di Bitcoin. Namecoin è l'implementazione meno recente e più riuscita di un sistema di registrazione dei nomi che usa tale idea.
+- **Colored coins**: lo scopo di [colored coins](https://docs.google.com/a/buterin.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lIzrTLuoWu2z1BE/edit) è di servire come protocollo per consentire alle persone di creare le proprie valute digitali o, nell'importante caso banale di una valuta con un'unità, token digitali, sulla blockchain di Bitcoin. Nel protocollo colored coins, qualcuno "emette" una nuova valuta assegnando pubblicamente un colore a un UTXO di Bitcoin specifico e il protocollo definisce ricorsivamente il colore dell'altro UTXO affinché sia lo stesso degli input spesi dalla transazione che la sta creando (si applicano alcune regole speciali in caso di input di colore misto). Questo consente agli utenti di mantenere i portafogli contenenti solo UTXO di un colore specifico e di inviarli, proprio come i Bitcoin regolari, retrocedendo per la blockchain per determinare il colore di ogni UTXO che ricevono.
+- **Metacoins**: l'idea dietro un metacoin è di avere un protocollo che risieda su Bitcoin, usando le transazioni di Bitcoin per memorizzare le transazioni di metacoin, ma avendo una funzione di transizione tra stati differente, `APPLY'`. Poiché il protocollo metacoin non può impedire la comparsa di transazioni di metacoin non valide nella blockchain di Bitcoin, si aggiunge la regola secondo cui, se `APPLY'(S,TX)` restituisce un errore, il protocollo va al valore predefinito `APPLY'(S,TX) = S`. Questo fornisce un facile meccanismo per creare un protocollo della criptovaluta arbitrario, potenzialmente con funzionalità avanzate non implementabili nello stesso Bitcoin, ma con un costo di sviluppo molto ridotto poiché le complessità di mining e di rete sono già gestite dal protocollo di Bitcoin. I metacoin sono stati usati per implementare delle classi di contratti finanziari, di registrazione dei nomi e di scambio decentralizzato.
-Quindi, in generale, ci sono due approcci per creare un protocollo di consenso: creare una rete indipendente e creare un protocollo basato su Bitcoin. Il primo approccio, pur essendo ragionevolmente riuscito nel caso di applicazioni come Namecoin, è difficile da attuare; ogni implementazione individuale deve avviare una blockchain indipendente, oltre a creare e testare tutta la transizione tra stati necessaria e il codice di networking. Inoltre, prevediamo che l'insieme di applicazioni per la tecnologia decentralizzata di consenso seguirà una distribuzione secondo una legge esponenziale, in cui la stragrande maggioranza delle applicazioni sarebbe troppo piccola per garantire una propria blockchain, e notiamo che esistono grandi classi di applicazioni decentralizzate, in particolare organizzazioni autonome decentrate, che hanno bisogno di interagire tra loro.
+Quindi, in generale, ci sono due approcci per creare un protocollo di consenso: creare una rete indipendente e creare un protocollo basato su Bitcoin. Il primo approccio, pur essendo ragionevolmente riuscito nel caso di applicazioni come Namecoin, è difficile da attuare; ogni implementazione individuale deve avviare una blockchain indipendente, oltre a creare e testare tutta la transizione tra stati necessaria e il codice di networking. Inoltre, prevediamo che l'insieme di applicazioni per la tecnologia decentralizzata di consenso seguirà una distribuzione della legge di potenza, in cui la stragrande maggioranza delle applicazioni sarebbe troppo piccola per garantire una propria blockchain, e notiamo che esistono grandi classi di applicazioni decentralizzate, in particolare organizzazioni autonome decentrate, che hanno bisogno di interagire tra loro.
-L'approccio basato su Bitcoin, d'altra parte, ha il difetto che non eredita le funzionalità semplificate di verifica dei pagamenti di Bitcoin. SPV funziona per Bitcoin perché può utilizzare la profondità della blockchain come delega di validità cioè, a un certo punto, quando gli antenati di una transazione sono abbastanza vecchi, si può affermare con sicurezza che erano legittimamente parte dello stato. Meta-protocolli basati sulla blockchain, invece, non possono obbligare la blockchain a non includere le transazioni che non sono valide nel contesto dei propri protocolli. Quindi, un'implementazione completamente sicura del meta-protocollo SPV dovrebbe eseguire una scansione all'indietro fino all'inizio della blockchain Bitcoin per stabilire se alcune transazioni sono valide. Attualmente, tutte le implementazioni leggere dei meta-protocolli basati su Bitcoin fanno riferimento a un server attendibile per fornire i dati, probabilmente un risultato molto poco ottimale, soprattutto se uno degli scopi principali di una criptovaluta è quello di eliminare la necessità di attendibilità.
+L'approccio basato su Bitcoin, d'altra parte, ha il difetto che non eredita le funzionalità semplificate di verifica dei pagamenti di Bitcoin. SPV funziona per Bitcoin perché può utilizzare la profondità della blockchain come delega di validità; a un certo punto, quando i predecessori di una transazione sono abbastanza obsoleti, si può affermare con sicurezza che erano legittimamente parte dello stato. Meta-protocolli basati sulla blockchain, invece, non possono obbligare la blockchain a non includere le transazioni che non sono valide nel contesto dei propri protocolli. Quindi, un'implementazione completamente sicura del meta-protocollo SPV dovrebbe eseguire una scansione all'indietro fino all'inizio della blockchain Bitcoin per stabilire se alcune transazioni sono valide. Attualmente, tutte le implementazioni leggere dei meta-protocolli basati su Bitcoin fanno riferimento a un server attendibile per fornire i dati, probabilmente un risultato poco ottimale, soprattutto se uno degli scopi principali di una criptovaluta è quello di eliminare la necessità di attendibilità.
### Scripting {#scripting}
-Anche senza alcuna estensione, il protocollo Bitcoin in realtà facilita una versione debole del concetto di "Smart Contract". UTXO in Bitcoin può essere posseduto non solo da una chiave pubblica, ma anche da uno script più complesso, espresso in un semplice linguaggio di programmazione basato su stack. In questo paradigma, una transazione che spende quell'UTXO deve fornire dati che soddisfano lo script. In realtà, anche il meccanismo base di proprietà della chiave pubblica è implementato tramite uno script: lo script accetta una firma a curva ellittica come input, la verifica in base alla transazione e all'indirizzo che possiede l'UTXO e restituisce 1 se la verifica dà esito positivo, altrimenti 0. Esistono altri script più complicati per altri casi d'uso. Ad esempio, si può creare uno script che richieda firme da due chiavi private su tre per convalidare ("multisig"), una configurazione utile per account aziendali, account di risparmio sicuri e alcune situazioni di deposito per esercenti. Gli script possono anche essere utilizzati per pagare taglie per soluzioni a problemi di calcolo e si può anche creare uno script che indichi qualcosa del tipo "questo UTXO Bitcoin è tuo se puoi fornire una prova SPV che hai inviato una transazione Dogecoin di questo taglio a me", essenzialmente consentendo lo scambio decentralizzato tra criptovalute diverse.
+Anche senza alcuna estensione, il protocollo di Bitcoin facilità in realtà una versione debole di un concetto di "contratti intelligenti". UTXO in Bitcoin può essere posseduto non solo da una chiave pubblica, ma anche da uno script più complesso, espresso in un semplice linguaggio di programmazione basato su stack. In questo paradigma, una transazione che spende quell'UTXO deve fornire dati che soddisfano lo script. In realtà, anche il meccanismo base di proprietà della chiave pubblica è implementato tramite uno script: lo script accetta una firma a curva ellittica come input, la verifica in base alla transazione e all'indirizzo che possiede l'UTXO e restituisce 1 se la verifica dà esito positivo, altrimenti 0. Esistono altri script più complicati per altri casi d'uso. Ad esempio, si può creare uno script che richieda le firme da due di tre chiavi private per validare ("multifirma"), una configurazione utile per i conti aziendali, i conti di risparmi sicuri e alcune situazioni di deposito a garanzia del commerciante. Gli script possono anche essere utilizzati per pagare ricompense per soluzioni a problemi di calcolo e si può persino creare uno script che indichi qualcosa del tipo "questo UTXO Bitcoin è tuo se puoi fornire una prova SPV che hai inviato una transazione Dogecoin di questo taglio a me", essenzialmente consentendo lo scambio decentralizzato tra criptovalute diverse.
Il linguaggio di scripting implementato in Bitcoin ha però diverse importanti limitazioni:
-- **Mancanza di completezza di Turing** - il linguaggio di scripting Bitcoin supporta un vasto sottoinsieme di calcoli, ma non tutto. La categoria principale che manca sono i cicli. Viene fatto per evitare cicli infiniti durante la verifica delle transazioni; teoricamente è un ostacolo sormontabile per i programmatori di script, dato che qualsiasi ciclo può essere simulato semplicemente ripetendo il codice sottostante molte volte con un'istruzione if condizionale, ma questo crea script molto poco efficienti dal punto di vista dello spazio. Ad esempio, l'implementazione di un algoritmo di firma a curva ellittica alternativo richiederebbe probabilmente 256 cicli di moltiplicazione ripetuti inclusi singolarmente nel codice.
-- **Mancata visibilità del valore** - non c'è modo per uno script UTXO di fornire un controllo granulare sull'importo prelevabile. Ad esempio, un caso d'uso interessante di un contratto oracolo sarebbe un contratto di copertura, dove A e B hanno messo $1000 in BTC e dopo 30 giorni lo script invia $1000 in BTC ad A e il resto a B. Questo richiederebbe un oracolo per stabilire il valore di 1 BTC in USD, ma anche in questo caso si tratterebbe di un enorme miglioramento in termini di attendibilità e requisiti infrastrutturali rispetto alle soluzioni completamente centralizzate attualmente disponibili. Tuttavia, poiché UTXO sono tutto o niente, il solo modo per ottenere questo risultato è attraverso il trucco molto poco efficiente di avere molti UTXO di vari tagli (ad esempio un UTXO di 2k per ogni k fino a 30) e chiedere a O di scegliere quale UTXO inviare a A e quale a B.
-- **Mancanza di stato** - un [UTXO può essere speso o non speso](https://Bitcoin.org/en/glossary/unspent-transaction-output); non vi è alcuna possibilità di avere contratti multi-stage o script con uno stato interno diverso. Questo rende difficile creare contratti con opzioni a più fasi, offerte di scambio decentralizzate o protocolli di impegno crittografico a due fasi (necessari per ricompense di calcolo sicure). Significa anche che UTXO può essere utilizzato solo per creare contratti semplici e monouso e non per più complessi contratti con stato, come le organizzazioni decentralizzate, e rende i meta-protocolli difficili da implementare. Lo stato binario combinato alla mancanza di visibilità sul valore impedisce anche un'altra importante applicazione, il limite di prelievo.
-- **Mancanza di visibilità sulla blockchain** - gli UTXO non possono accedere ai dati della blockchain come il nonce, l'indicatore data/ora e l'hash del blocco precedente. Questo limita seriamente le applicazioni del gioco d'azzardo, e molte altre categorie, privando il linguaggio di scripting di una fonte potenzialmente preziosa di casualità.
+- **Mancanza di completezza di Turing**: serve a indicare che, sebbene esista una grande sottoserie di calcolo supportata dal linguaggio di scripting di Bitcoin, non supporta quasi niente. La categoria principale che manca sono i cicli. Ciò si esegue evitando i cicli infiniti durante la verifica della transazione; teoricamente, è un ostacolo sormontabile per i programmatori di script, poiché ogni ciclo è simulabile semplicemente ripetendo il codice sottostante molte volte con un'istruzione if, ma ciò porta a script molto inefficienti a livello di spazio. Ad esempio, implementare un algoritmo di firma della curva ellittica alternativo richiederebbe 256 turni di moltiplicazione ripetuti, tutti inclusi individualmente nel codice.
+- **Mancata visibilità del valore**, non c'è modo per uno script UTXO di fornire un controllo fine sull'importo prelevabile. Ad esempio, un caso d'uso interessante di un contratto oracolo sarebbe un contratto di copertura secondo cui A e B mettono 1000 dollari in BTC e dopo 30 giorni lo script invia 1000 dollari in BTC ad A e il resto a B. Questo richiederebbe un oracolo per stabilire il valore di 1 BTC in USD, ma anche in questo caso si tratterebbe di un enorme miglioramento in termini di attendibilità e requisiti infrastrutturali rispetto alle soluzioni completamente centralizzate attualmente disponibili. Tuttavia, poiché i UTXO sono tutto o niente, l'unico modo per ottenere questo risultato è attraverso il trucco molto poco efficiente di avere molti UTXO di vari tagli (ad esempio un UTXO di 2k per ogni k fino a 30) e chiedere a O di scegliere quali UTXO inviare ad A e quali a B.
+- **Mancanza di stato** - un UTXO può essere speso o non speso; non vi è alcuna possibilità di avere contratti multifase o script con uno stato interno diverso. Così si rende difficile creare contratti di opzioni multifase, piattaforme di scambio decentralizzate o protocolli d'impegno crittografico a due fasi (necessari per ricompense computazionali sicure). Significa anche che UTXO può essere usato solo per costruire semplici contratti irripetibili e non dei contratti più complessi "di stato", quali organizzazioni decentralizzate, e rende difficile da implementare i meta protocolli. Stato binario abbinato a mancanza di valore significa inoltre che un'altra applicazione importante, i limiti sui prelievi, è possibile.
+- **Blockchain invisibile** - per gli UTXO i dati blockchain quali il nonce, la marca temporale e l'hash blocco precedente sono invisibili. Questo limita severamente applicazioni dei giochi d'azzardo e alcune altre categorie, in quanto priva la lingua dello script di fonti di casualità potenzialmente utili.
Quindi abbiamo tre approcci alla creazione di applicazioni per le criptovalute: creare una nuova blockchain, usare lo scripting basato su Bitcoin e creare un meta-protocollo basato su Bitcoin. Creare una nuova blockchain offre libertà illimitata nella creazione di un set di funzionalità, ma a scapito del tempo di sviluppo, del lavoro necessario per partire e della sicurezza. L'utilizzo di script è facile da implementare e standardizzare, ma è molto limitato in termini di capacità e i meta-protocolli, sebbene semplici, peccano in termini di scalabilità. Con Ethereum, vogliamo creare un framework alternativo che fornisca vantaggi anche maggiori in termini di facilità di sviluppo, proprietà di light client più complete e consenta allo stesso tempo alle applicazioni di condividere un ambiente economico e la sicurezza della blockchain.
## Ethereum {#ethereum}
-L'intento di Ethereum è creare un protocollo alternativo per sviluppare applicazioni decentralizzate, fornendo una serie diversa di compromessi che crediamo saranno molto utili per una vasta classe di applicazioni decentralizzate, con enfasi particolare sulle situazioni dove i tempi di sviluppo rapidi, la sicurezza per le applicazioni piccole e usate raramente e la possibilità per applicazioni diverse di interagire molto efficientemente sono importanti. Ethereum raggiunge questo obiettivo costruendo ciò che è essenzialmente l'ultimo livello fondamentale astratto: una blockchain con un linguaggio di programmazione integrato e Turing completo, che permette a tutti di scrivere Smart Contract e applicazioni decentralizzate dove si possono creare le proprie regole arbitrarie per proprietà, formati delle transazioni e funzioni di transizione tra stati. Una versione base di Namecoin può essere scritta in due righe di codice e altri protocolli come valute e sistemi di reputazione sono costruibili in meno di venti. Gli Smart Contract, "scatole" crittografiche che contengono valore e si sbloccano solo se vengono soddisfatte certe condizioni, possono anche essere sviluppati sulla piattaforma, con una potenza molto più ampia di quanto offerto dallo scripting di Bitcoin grazie alla completezza di Turing, alla consapevolezza del valore, alla consapevolezza della blockchain e allo stato.
-
-### Filosofia {#philosophy}
+L'intento di Ethereum è creare un protocollo alternativo per sviluppare applicazioni decentralizzate, fornendo una serie diversa di compromessi che crediamo saranno molto utili per una vasta classe di applicazioni decentralizzate, con enfasi particolare sulle situazioni dove i tempi di sviluppo rapidi, la sicurezza per le applicazioni piccole e usate raramente e la possibilità per applicazioni diverse di interagire molto efficientemente sono importanti. Ethereum lo fa costruendo essenzialmente il livello fondamentale astratto definitivo: una blockchain con un linguaggio di programmazione completo e integrato, consentendo a chiunque di scrivere i contratti intelligenti e le applicazioni decentralizzate, in cui possono creare le proprie regole arbitrarie per proprietà, formati di transazione e funzioni di transizione di stato. Una versione base di Namecoin può essere scritta in due righe di codice e altri protocolli come valute e sistemi di reputazione sono costruibili in meno di venti. I contratti intelligenti, "scatole" crittografiche contenenti valore, sbloccate esclusivamente alla soddisfazione di certe condizioni, possono esser basati sulla piattaforma, con una potenza vastamente maggiore di quella offerta dallo scripting di Bitcoin, grazie alla completezza di Turing, la consapevolezza del valore e della blockchain e lo stato.
-La progettazione di Ethereum si basa sui seguenti principi:
+### Conti di Ethereum {#ethereum-accounts}
-1. **Semplicità**: il protocollo di Ethereum deve essere il più semplice possibile, anche a costo di inefficienze di archiviazione dati o tempi.[fn. 3](#notes) Un programmatore medio deve idealmente poter seguire e implementare l'intera specifica,[fn. 4](#notes) così da realizzare completamente il potenziale democratico senza precedenti associato alla criptovaluta oltre alla visione di Ethereum di protocollo aperto a tutti. Ogni ottimizzazione che aggiunge complessità non deve essere inclusa, a meno che non offra benefici veramente sostanziali.
-2. **Universalità**: una parte fondamentale della filosofia di progettazione di Ethereum è che Ethereum non ha "funzionalità".[fn. 5](#notes) Ethereum fornisce invece un linguaggio di scripting interno Turing completo, che un programmatore può usare per creare tutti i tipi di Smart Contract o di transazioni che possano essere definiti matematicamente. Vuoi inventare uno strumento finanziario derivato personalizzato? Con Ethereum puoi. Vuoi creare una valuta nuova? Configurala come contratto Ethereum. Vuoi configurare un Daemon o Skynet completo? Potrebbero essere necessarie alcune migliaia di contratti collegati tra di loro e potresti doverli finanziare generosamente, ma con Ethereum niente ti ferma.
-3. **Modularità**: le componenti del protocollo di Ethereum devono essere progettate per essere più modulari e separabili possibile. Nel corso dello sviluppo, il nostro obiettivo è creare un programma dove, se qualcuno eseguisse una piccola modifica del protocollo in un punto, lo stack dell'applicazione continuerebbe a funzionare senza ulteriori modifiche. Invenzioni come Ethash (vedi l'[appendice dello Yellow Paper](https://ethereum.github.io/yellowpaper/paper.pdf#appendix.J) o l'[articolo della wiki](https://github.com/ethereum/wiki/wiki/Ethash)), gli alberi di Patricia modificati ([Yellow Paper](https://ethereum.github.io/yellowpaper/paper.pdf#appendix.D), [wiki](https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-Patricia-Tree)) e RLP ([YP](https://ethereum.github.io/yellowpaper/paper.pdf#appendix.B), [wiki](https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP)) devono essere e sono implementate come librerie complete di funzionalità e separate. Per questo motivo, anche se vengono usate in Ethereum, sebbene Ethereum non richieda certe funzionalità, sono comunque utilizzabili anche in altri protocolli. Lo sviluppo di Ethereum deve puntare a offrire vantaggi all'intero ecosistema di criptovalute, non solo a se stesso.
-4. **Agilità**: i dettagli del protocollo di Ethereum non sono scritti sula pietra. Saremo comunque estremamente prudenti nell'apportare modifiche a costrutti di alto livello, ad esempio con la [sharding roadmap](https://ethresear.ch/t/sharding-phase-1-spec/1407/) l'esecuzione con astrazione, dove la disponibilità dei dati è garantita solo dal consenso. I test di calcolo nelle fasi più avanzate del processo di sviluppo potrebbero farci scoprire che determinate modifiche, ad esempio all'architettura del protocollo o alla macchina virtuale di Ethereum (EVM), miglioreranno sostanzialmente scalabilità o sicurezza. Se verranno scoperte opportunità di questo tipo, le perseguiremo.
-5. **Non discriminazione** e **mancanza di censura**: il protocollo non deve tentare di limitare attivamente o impedire categorie specifiche d'uso. Tutti i meccanismi regolatori nel protocollo devono essere progettati per regolare direttamente i danni e non per tentare di opporsi ad applicazioni specifiche indesiderate. Un programmatore può anche eseguire uno script con cicli infiniti su Ethereum se desidera pagare la necessaria commissione sulle transazioni legata a ogni passaggio di calcolo.
+In Ethereum, lo stato si compone di oggetti detti "conti", ognuno avente un indirizzo da 20 byte e transizioni di stato, trasferimenti diretti di valore e informazioni tra i conti. Un conto di Ethereum contiene quattro campi:
-### Account Ethereum {#ethereum-accounts}
+- Il **nonce**, un contatore usato per assicurarsi che ogni transazione sia elaborabile solo una volta
+- Il **saldo di ether** corrente del conto
+- Il **codice del contratto** del conto, se presente
+- L'archiviazione del **conto** (vuoto per impostazione predefinita)
-In Ethereum, lo stato è costituito da oggetti detti "account", dove ogni account ha un indirizzo di 20 byte e transizioni di stato che sono trasferimenti diretti di valore e informazioni tra account. Un account Ethereum contiene quattro campi:
+"Ether" è il cripto-carburante interno principale di Ethereum ed è usato per pagare le commissioni delle transazioni. In generale, esistono due tipi di conto: **conti posseduti esternamente**, controllati da chiavi private e **conti di contratti**, controllati dal codice del rispettivo contratto. Un conto posseduto esternamente non contiene codice e nessuno puoi inviare messaggi da un conto posseduto esternamente creando e firmando una transazione; nel conto di un contratto, ogni volta che esso riceve un messaggio, il suo codice si attiva, consentendogli di leggere e scrivere all'archiviazione interna e di inviare altri messaggi o, a sua volta, creare contratti.
-- Il **nonce**, un contatore usato per garantire che ogni transazione venga elaborata una sola volta
-- Il **saldo di ether** corrente dell'account
-- Il **codice del contratto** dell'account, se presente
-- Lo **storage** dell'account (vuoto di default)
-
-L'ether è il cripto-carburante interno principale di Ethereum, ed è usato per pagare le commissioni sulle transazioni. In generale, esistono due tipi di account: **account con proprietà esterna**, controllati da chiavi private e **account contratto**, controllati dal relativo codice di contratto. Un account con proprietà esterna non ha codice; si possono inviare messaggi da un account con proprietà esterna creando e firmando una transazione. In un account contratto, ogni volta che l'account riceve un messaggio, il suo codice si attiva, consentendogli di leggere e scrivere nello storage interno e inviare altri messaggi o creare contratti a sua volta.
-
-Si noti che i contratti in Ethereum non devono essere considerati come qualcosa da rispettare o a cui attenersi. Sono invece simili ad "agenti autonomi" che vivono all'interno dell'ambiente di esecuzione di Ethereum, sempre eseguendo codice specifico quando richiamato da un messaggio o una transazione, e con controllo diretto sul proprio saldo di ether e il proprio store di chiave/valore per monitorare costantemente le variabili persistenti.
+Si noti che i "contratti" in Ethereum non dovrebbero essere visti come qualcosa che dovrebbe essere "soddisfatto" o "rispettato"; piuttosto, sono più come "agenti autonomi" che vivono all'interno dell'ambiente di esecuzione di Ethereum, eseguendo sempre una parte specifica del codice se ricevono un messaggio o una transazione, e hanno il controllo diretto sul proprio saldo ether e sul proprio archivio di chiavi/valori per tenere traccia delle variabili persistenti.
### Messaggi e transazioni {#messages-and-transactions}
-Il termine "transazione" in Ethereum fa riferimento al pacchetto di dati firmati che contiene un messaggio da inviare da un account con proprietà esterna. Le transazioni contengono:
+Il termine "transazione" è usato in Ethereum per riferirsi al pacchetto di dati firmati che memorizza un messaggio da inviare da un conto posseduto esternamente. Le transazioni contengono:
- Il destinatario del messaggio
- Una firma che identifica il mittente
- L'importo di ether da trasferire dal mittente al destinatario
- Un campo di dati facoltativo
-- Un valore `STARTGAS`, che rappresenta il numero massimo di passaggi di calcolo che l'esecuzione della transazione è autorizzata ad eseguire
-- Un valore `GASPRICE`, che rappresenta la commissione che il mittente paga per il passaggio di calcolo
+- Un valore `STARTGAS`, rappresentante il numero massimo di passaggi di calcolo che l'esecuzione della transazione può intraprendere
+- Un valore `GASPRICE`, rappresentante la commissione pagata dal mittente per il passaggio di calcolo
-I primi tre sono campi standard previsti in ogni criptovaluta. Il campo dei dati non ha funzione per default, ma la macchina virtuale ha un opcode che un contratto può usare per accedere ai dati. Come caso d'uso d'esempio, se un contratto funziona come servizio di registrazione di domini sulla blockchain, potrebbe aver bisogno di interpretare i dati che gli vengono passati, ad esempio contenenti due campi: il primo con il dominio da registrare e il secondo con l'indirizzo IP a cui eseguire la registrazione. Il contratto leggerebbe questi valori dai dati del messaggio e li inserirebbe come necessario nello storage.
+I primi tre sono campi standard previsti in ogni criptovaluta. Il campo dati non ha alcuna funzione predefinita, ma la macchina virtuale ha un codice operativo tramite il quale un contratto può accedere ai dati; come esempio d'uso, se un contratto funziona come un servizio di registrazione di domini su blockchain, allora potrebbe voler interpretare i dati che gli vengono trasmessi come contenenti due "campi", il primo campo è un dominio da registrare e il secondo campo è l'indirizzo IP in cui registrarlo. Il contratto leggerebbe tali valori dai dati del messaggio e li posizionerebbe in modo appropriato nell'archivio.
-I campi `STARTGAS` e `GASPRICE` sono cruciali per l'anti-diniego di Ethereum del modello del servizio. Per impedire cicli infiniti accidentali o malevoli o altri sprechi di calcolo nel codice, ogni transazione deve impostare un limite al numero di passaggi di esecuzione di codice che può eseguire. L'unità fondamentale di calcolo è il "carburante". Solitamente, un passaggio di calcolo costa 1 unità di carburante, ma alcune operazioni costano di più perché richiedono più calcoli o incrementano la quantità di dati che devono essere archiviati come parte dello stato. È inoltre presente una commissione di 5 unità di carburante per ogni byte di dati della transazione. L'intento del sistema di commissioni è richiedere a un aggressore di pagare in proporzione per ogni risorsa che utilizza, tra cui calcolo, larghezza di banda e storage. Quindi, ogni transazione che porta la rete a utilizzare una quantità maggiore di ognuna di queste risorse deve avere una commissione di carburante più o meno proporzionale all'incremento.
+I campi `STARTGAS` e `GASPRICE` sono cruciali per il modello contro il denial of service di Ethereum. Per prevenire cicli infiniti accidentali o ostili oppure altri sprechi di calcolo nel codice, ogni transazione deve definire un limite del numero di passaggi di calcolo dell'esecuzione di codice che può utilizzare. L'unità fondamentale di calcolo è il "gas"; solitamente, un passaggio di calcolo costa 1 gas, ma alcune operazioni costano importi di gas maggiori, perché più costosi a livello di calcolo, o aumentano la quantità di dati da memorizzare come parte dello stato. Inoltre, esiste una commissione di 5 gas per ogni byte nei dati della transazione. L'intento del sistema di commissioni è richiedere a un utente malevolo di pagare proporzionatamente per ogni risorsa consumata, inclusi calcolo, larghezza di banda e archiviazione; dunque, qualsiasi transazione che induca a consumi maggiori di qualsiasi di queste risorse dalla rete, deve avere una commissione di gas approssimativamente proporzionale all'incremento.
### Messaggi {#messages}
-I contratti possono inviare "messaggi" ad altri contratti, cioè oggetti virtuali che non vengono mai serializzati ed esistono solo nell'ambiente di esecuzione di Ethereum. Un messaggio contiene:
+I contratti possono inviare "messaggi" ad altri contratti, I messaggi sono oggetti virtuali mai serializzati ed esistono solo nell'ambiente d'esecuzione di Ethereum. Un messaggio contiene:
- Il mittente del messaggio (implicito)
- Il destinatario del messaggio
- L'importo di ether da trasferire con il messaggio
-- Un campo opzionale di dati
-- Un valore di `STARTGAS`
+- Un campo di dati facoltativo
+- Un valore `STARTGAS`
-Essenzialmente, un messaggio è come una transazione, ad eccezione nel fatto che è prodotto da un contratto e non è un attore esterno. Un messaggio è prodotto quando un contratto che sta eseguendo codice esegue l'opcode `CALL`, che produce ed esegue un messaggio. Come una transazione, un messaggio conduce all'account del destinatario che ne esegue il codice. Dunque, i contratti possono avere rapporti con altri contratti esattamente come possono fare gli attori esterni.
+Essenzialmente, un messaggio è come una transazione, ma è prodotto da un contratto e non da un attore esterno. Un messaggio è prodotto quando un contratto che sta correntemente eseguendo il codice esegue l'opcode `CALL`, che produce ed esegue un messaggio. Come una transazione, un messaggio induce il conto del destinatario a eseguire il proprio codice. Dunque, i contratti possono avere rapporti con altri contratti esattamente come gli attori esterni.
-Nota che la quota di carburante assegnata da una transazione o da un contratto si applica al carburante totale consumato da quella transazione e tutte le esecuzioni secondarie. Ad esempio, se un attore esterno A invia una transazione a B con 1000 unità di carburante e B consuma 600 unità di carburante prima di inviare un messaggio a C, e l'esecuzione interna di C consuma 300 unità di carburante prima di restituire il valore, allora B può spendere altre 100 unità di carburante prima di finirlo.
+Nota che l'indennità di gas assegnata da una transazione o contratto si applica al gas totale consumato da quella transazione e tutte le esecuzioni secondarie. Ad esempio, se un attore esterno A invia una transazione a B con 1000 gas e B consuma 600 gas prima di inviare un messaggio a C e l'esecuzione interna di C consuma 300 gas prima di rispondere, allora B può spendere altri 100 gas prima di terminarlo.
### Funzione di transizione tra stati di Ethereum {#ethereum-state-transition-function}
-![Transizione tra stati dell'ether](../../../whitepaper/ether-state-transition.png)
+![Transizione tra stati dell'ether](./ether-state-transition.png)
-La funzione di transizione tra stati di Ethereum, `APPLY(S,TX) -> S'` può essere definita come segue:
+La funzione di transizione tra stati di Ethereum, `APPLY(S,TX) -> S'`, è definibile come segue:
-1. Controlla se la transazione ha un formato corretto (ad esempio ha il numero esatto di valori), la firma è valida e il nonce corrisponde a quello dell'account del mittente. Se non è così, viene restituito un errore.
-2. Calcola la commissione sulle transazioni come ` STARTGAS * GASPRICE` e determina l'indirizzo del mittente dalla firma. Sottrae la commissione dal saldo dell'account del mittente e aumenta il nonce del mittente. Se il saldo non è sufficiente, viene restituito un errore.
-3. Inizializza `GAS = STARTGAS` e preleva una certa quantità di carburante per byte per pagare i byte nella transazione.
-4. Trasferisce il valore della transazione dell'account del mittente a quello del ricevente. Se l'account ricevente non esiste ancora, lo crea. Se l'account ricevente è un contratto, esegue il codice del contratto fino al completamento o finché l'esecuzione esaurisce il carburante.
-5. Se il trasferimento del valore fallisce perché il mittente non aveva abbastanza denaro o perché l'esecuzione del codice ha esaurito il carburante, annulla tutte le modifiche di stato tranne il pagamento delle commissioni e aggiunge quest'ultime all'account del miner.
-6. In caso contrario, rimborsa le commissioni per tutto il carburante rimanente al mittente e invia le commissioni pagate per il carburante consumato al miner.
+1. Verifica se la transzione è ben formata (cioè, ha il numero corretto di valori), se la firma è valida e se il nonce corrisponde a quello del conto del mittente. Se non è così, viene restituito un errore.
+2. Calcola la commissione di transazione come ` STARTGAS * GASPRICE` e determina l'indirizzo del mittente dalla firma. Sottrae la commissione dal saldo del conto del mittente e incrementa il nonce del mittente. Se il saldo non è sufficiente, viene restituito un errore.
+3. Inizializza `GAS = STARTGAS` e preleva un dato importo di gas per byte per pagare per i byte nella transazione.
+4. Trasferisce il valore della transazione dal conto del mittente al conto ricevente. Se il conto ricevente ancora non esiste, lo crea. Se il conto del ricevente è un contratto, esegue il codice del contratto al completamento o finché l'esecuzione termina il gas.
+5. Se il trasferimento di valore fallisce perché il mittente non aveva abbastanza denaro o l'esecuzione del codice ha terminato il gas, ripristina tutte le modifiche di stato tranne il pagamento delle commissioni e le aggiunge al conto del miner.
+6. Altrimenti, rimborsa le commissioni per tutto il gas rimanente al mittente e invia le commissioni pagate per il gas consumato al miner.
-Per esempio, supponi che il codice del contratto sia:
+Per esempio, supponiamo che il codice del contratto sia:
- if !self.storage[calldataload(0)]:
- self.storage[calldataload(0)] = calldataload(32)
+```py
+if !self.storage[calldataload(0)]:
+ self.storage[calldataload(0)] = calldataload(32)
+```
-In realtà il codice del contratto è scritto nel codice di basso livello dell'EVM; questo esempio invece è scritto in Serpent, uno dei nostri linguaggi di alto livello, per maggiore chiarezza, ed è compilabile in codice dell'EVM. Supponiamo che lo storage del contratto inizi vuoto e che la transazione sia inviata con un valore di 10 ether, 2000 unità di carburante, 0,001 di prezzo del carburante in ether e 64 byte di dati, con i byte da 0 a 31 che rappresentano il numero `2` e i byte da 32 a 63 che rappresentano la stringa `CHARLIE`.[fn. 6](#notes) Il processo per la funzione di transizione tra stati in questo caso sarà il seguente:
+Si noti che in realtà il codice del contratto è scritto nel codice di basso livello dell'EVM; questo esempio è scritto in Serpent, uno dei nostri linguaggi di alto livello, per chiarezza, ed è compilabile al codice dell'EVM. Supponiamo che l'archiviazione del contratto sia vuota all'inizio e che sia inviata una transazione con valore di 10 ether, 2000 gas, 0,001 ether di prezzo del gas e 64 byte di dati, con i byte dallo 0 al 31 rappresentanti il numero `2` e i byte dal 32 al 63 rappresentanti la stringa `CHARLIE`. Il processo per la funzione di transizione tra stati in questo caso sarà il seguente:
-1. Si controlla che la transazione sia valida e abbia un formato corretto.
-2. Si controlla che il mittente della transazione abbia almeno 2000 \* 0,001 = 2 ether. Se sì, si sottraggono 2 ether dall'account del mittente.
-3. Si inizializza carburante = 2000; supponendo che la transazione sia lunga 170 byte e che la commissione per byte sia 5, si sottrae 850 in modo che rimangano 1150 unità di carburante.
-4. Si sottraggono altri 10 ether dall'account del mittente e si aggiungono all'account del contratto.
-5. Si esegue il codice. In questo caso è semplice: si controlla se lo storage del contratto all'indice `2` è usato, si nota che non lo è e quindi si imposta lo storage all'indice `2` sul valore `CHARLIE`. Supponiamo che questo richieda 187 unità di carburante, l'importo rimanente di carburante è 1150 - 187 = 963
-6. Si aggiungono nuovamente 963 \* 0,001 = 0,963 ether all'account del mittente e si restituisce lo stato risultante.
+1. Verifica che la transazione sia valida e abbia un formato corretto.
+2. Verifica che il mittente della transazione abbia almeno 2000 \ \* 0,001 = 2 ether. Se sì, si sottraggono 2 ether dal conto del mittente.
+3. Inizializza gas = 2000; supponendo che la transazione sia lunga 170 byte e la commissione per byte sia 5, sottrarre 850 così che rimangano 1150 unità di gas.
+4. Sottrae altri 10 ether dal conto del mittente e li aggiunge conto del contratto.
+5. Esegue il codice. In questo caso è semplice: verifica se è usato l'archivio del contratto all'indice `2`, nota che non è così e, quindi, imposta l'archivio all'indice `2` al valore `CHARLIE`. Supponiamo che questo richieda 187 gas, quindi l'importo di gas rimanente è di 1150 - 187 = 963
+6. Aggiunge 963 \* 0.001 = 0.963 ether al conto del mittente del mittente e restituisce lo stato risultante.
-Se non fosse esistito alcun contratto dal lato della transazione del ricevente, la commissione totale sulle transazioni sarebbe stata semplicemente pari al valore `GASPRICE` fornito moltiplicato per la lunghezza della transazione in byte e i dati inviati con la transazione sarebbero stati irrilevanti.
+Se non c'era alcun contratto al destinatario della transazione, allora la commissione totale della transazione sarebbe semplicemente pari al `GASPRICE` fornito, moltiplicato per la lunghezza della transazione in byte e, i dati inviati insieme a essa, sarebbero irrilevanti.
-Tieni presente che i messaggi funzionano in modo analogo alle transazioni in termini di ripristino: se l'esecuzione di un messaggio esaurisce il carburante, l'esecuzione di quel messaggio e tutte le altre esecuzioni causate da quella, vengono annullate, tranne le esecuzioni padre. Questo significa che è "sicuro" per un contratto chiamarne un altro, perché se A chiama B con G carburante, allora è garantito che l'esecuzione di A esaurirà al massimo G carburante. Infine, tieni presente che esiste un opcode, `CREATE`, che crea un contratto; le sue meccaniche di esecuzione sono generalmente simili a `CALL`, ad l'eccezione del fatto che l'output dell'esecuzione determina il codice di un contratto appena creato.
+Nota che i messaggi operano come le transazioni in termini di ripristino: se l'esecuzione di un messaggio esaurisce il gas, allora essa e tutte le altre esecuzioni innescate da essa, si ripristinano; mentre le esecuzioni principali non necessitano di esser ripristinate. Ciò significa che è un contratto può chiamare "in sicurezza" un altro contratto, poiché se A chiama B con G gas, allora è garantito che l'esecuzione di A perda al massimo G di gas. Infine, si noti che c'è un opcode `CREATE`, che crea un contratto; i suoi meccanismi di esecuzione assomigliano generalmente a `CALL`, tranne che l'output dell'esecuzione determina il codice di un contratto appena creato.
### Esecuzione del codice {#code-execution}
-Il codice nei contratti Ethereum è scritto in un linguaggio bytecode basato su stack di basso livello, detto "codice della macchina virtuale Ethereum" o "codice dell'EVM". Il codice consiste in una serie di byte, dove ogni byte rappresenta un'operazione. In generale, l'esecuzione del codice è un ciclo infinito che consiste nella ripetuta esecuzione dell'operazione al contatore corrente del programma (che inizia da zero) e poi nell'aumento del contatore del programma di uno, finché non viene raggiunta la fine del codice, si verifica un errore o viene rilevata l'istruzione `STOP` o `RETURN`. Le operazioni hanno accesso ai tre tipi di spazio in cui memorizzare dati:
+Il codice nei contratti di Ethereum è scritto in un linguaggio bytecode basato sullo stack di basso livello, detto "codice della macchina virtuale di Ethereum" o "codice EVM". Il codice consiste in una serie di byte, dove ogni byte rappresenta un'operazione. In generale, l'esecuzione del codice è un ciclo infinito che consiste nella ripetuta esecuzione dell'operazione al contatore corrente del programma (che inizia da zero) e poi nell'aumento del contatore del programma di uno, finché non viene raggiunta la fine del codice, si verifica un errore o viene rilevata l'istruzione `STOP` o `RETURN`. Le operazioni hanno accesso a tre tipi di spazio in cui archiviare i dati:
-- Lo **stack**, un contenitore LIFO (last-in-first-out) in cui i valori è possibile fare il push dei valori ed estrarli
+- Lo **stack**, un contenitore last-in-first-out in cui è possibile eseguire il push e il pop dei valori
- La **memoria**, un array di byte espandibili infinitamente
-- Lo **storage** a lungo termine del contratto, un archivio chiave/valore. A differenza di stack e memoria, che si ripristinano alla fine del calcolo, lo storage persiste a lungo termine.
+- L'**archivio** a lungo termine del contratto, un archivio di chiavi/valori. A differenza dello stack e della memoria, che si ripristinano al termine del calcolo, l'archivio persiste a lungo termine.
-Il codice può anche accedere a valore, mittente e dati del messaggio in arrivo, nonché ai dati dell'intestazione del blocco e il codice può anche restituire un array byte di dati come output.
+Il codice può anche accedere al valore, al mittente e ai dati del messaggio in arrivo, nonché ai dati dell'intestazione del blocco e il codice può anche restituire una matrice di dati di byte come output.
-Il modello di esecuzione formale del codice dell'EVM è sorprendentemente semplice. Mentre la macchina virtuale di Ethereum è in esecuzione, il suo stato di calcolo completo può essere definito dalla tupla `(block_state, transaction, message, code, memory, stack, pc, gas)`, dove `block_state` è lo stato globale che contiene tutti gli account e include saldi e storage. All'inizio di ogni turno d'esecuzione, l'istruzione corrente si trova accettando il `pc`esimo byte di `code` (o 0 se `pc >= len(code)`) e ogni istruzione ha la propria definizione che indica come influenzerà la tupla. Ad esempio, `ADD` prende due elementi dallo stack e ne esegue il push della somma, riduce il valore di `gas` di 1 e aumenta il valore di `pc` di 1, e `SSTORE` prende i primi due elementi dello stack e inserisce il secondo nello storage del contratto all'indice specificato dal primo elemento. Sebbene ci siano molti modi per ottimizzare l'esecuzione della macchina virtuale di Ethereum tramite una compilazione just-in-time, un'implementazione di base di Ethereum è eseguibile in poche centinaia di righe di codice.
+Il modello di esecuzione formale del codice dell'EVM è sorprendentemente semplice. Mentre la macchina virtuale Ethereum è in esecuzione, il suo stato di calcolo completo può essere definito dalla tupla `(block_state, transaction, message, code, memory, stack, pc, gas)`, in cui `block_state` è lo stato globale, contenente tutti i conti e include i saldi e l'archiviazione. All'inizio di ogni ciclo di esecuzione, l'istruzione corrente viene trovata prendendo il `pc`esimo byte di `code` (o 0 se `pc >= len(code)`), e ogni istruzione ha la propria definizione in termini di come influisce sulla tupla. Ad esempio, `ADD` estrae due elementi dallo stack e ne restituisce la somma, riduce `gas` di 1 e incrementa `pc` di 1 e ` SSTORE` espelle i primi due elementi dallo stack e inserisce il secondo elemento nell'archiviazione del contratto all'indice specificato dal primo elemento. Sebbene ci siano molti modi per ottimizzare l'esecuzione della macchina virtuale di Ethereum tramite una compilazione just-in-time, un'implementazione di base di Ethereum è eseguibile in poche centinaia di righe di codice.
### Blockchain e mining {#blockchain-and-mining}
-![Diagramma a blocchi dell'applicazione in Ethereum](../../../whitepaper/ethereum-apply-block-diagram.png)
+![Diagramma a blocchi dell'applicazione in Ethereum](./ethereum-apply-block-diagram.png)
-La blockchain di Ethereum è per molti versi simile a quella di Bitcoin, ma con alcune differenze. La differenza principale tra Ethereum e Bitcoin, riguardo l'architettura della blockchain, è che, a differenza di Bitcoin che contiene solo una copia dell'elenco delle transazioni, i blocchi di Ethereum contengono una copia sia dell'elenco delle transazioni che dello stato più recente. A parte questo, anche altri due valori, il numero del blocco e la difficoltà, sono memorizzati nel blocco. L'algoritmo di convalida del blocco di base in Ethereum avviene come segue:
+La blockchain di Ethereum è per molti versi simile a quella di Bitcoin, ma con alcune differenze. La differenza principale tra Ethereum e Bitcoin, riguardo l'architettura della blockchain, è che, a differenza di Bitcoin che contiene solo una copia dell'elenco delle transazioni, i blocchi di Ethereum contengono una copia sia dell'elenco delle transazioni che dello stato più recente. A parte questo, anche altri due valori, il numero del blocco e la difficoltà, sono memorizzati nel blocco. L'algoritmo di convalida del blocco di base in Ethereum è il seguente:
-1. Si controlla se il blocco a cui si fa riferimento in precedenza esiste ed è valido.
-2. Si controlla che la data e l'ora del blocco siano maggiori di quelli del blocco a cui si fa riferimento in precedenza e inferiori a 15 minuti nel futuro
-3. Si controlla che il numero del blocco, la difficoltà, la radice di transazione, la radice zio e il limite di carburante (vari concetti specifici di Ethereum a basso livello) siano validi.
-4. Si controlla che la proof-of-work sul blocco sia valida.
-5. Si rende `S[0]` lo stato alla fine del blocco precedente.
-6. Si rende `TX` l'elenco delle transazioni del blocco, con `n` transazioni. Per tutti gli `i` in `0...n-1`, si imposta `S[i+1] = APPLY(S[i],TX[i])`. Se una o più applicazioni restituisce un errore o se il carburante totale consumato nel blocco fino a questo punto eccede il valore di `GASLIMIT`, viene restituito un errore.
-7. Si rende `S_FINAL` `S[n]`, ma aggiungendo la ricompensa del blocco pagata al miner.
-8. Si controlla se la radice dell'albero di Merkle dello stato `S_FINAL` è pari alla radice dello stato finale indicata nell'intestazione del blocco. In caso affermativo, il blocco è valido; in caso negativo, no.
+1. Verifica se il blocco a cui si fa riferimento in precedenza esiste ed è valido.
+2. Verifica che la marca temporale del blocco sia maggiore di quella del blocco precedente di riferimento e meno di 15 minuti nel futuro
+3. Verifica che il numero del blocco, la difficoltà, la radice della transazione, la radice dell'ommer e il limite di gas (vari concetti di basso livello specifici di Ethereum), siano validi.
+4. Verifica che il proof-of-work del blocco sia valido.
+5. Supponiamo che `S[0]` sia lo stato alla fine del blocco precedente.
+6. Si rende `TX` l'elenco delle transazioni del blocco, con `n` transazioni. Per tutti gli `i` in `0...n-1`, si imposta `S[i+1] = APPLY(S[i],TX[i])`. Se qualsiasi applicazione restituisce un errore, o se il gas totale consumato nel blocco fino a questo punto supera il `GASLIMIT`, restituisce un errore.
+7. Si rende `S_FINAL` `S[n]`, ma aggiungendo la ricompensa del blocco pagata al miner.
+8. Verifica che la radice dell'albero di Merkle dello stato `S_FINAL` sia uguale alla radice dello stato finale fornita nell'intestazione del blocco. In caso affermativo, il blocco è valido; in caso negativo, no.
-L'approccio potrebbe sembrare altamente inefficiente a prima vista, perché deve memorizzare l'intero stato con ogni blocco, ma in realtà l'efficienza dovrebbe essere paragonabile a quella di Bitcoin. Il motivo è che lo stato è memorizzato nella struttura dell'albero e dopo ogni blocco solo una piccola parte dell'albero deve essere modificata. Dunque, in generale, tra due blocchi adiacenti l'ampia maggioranza dell'albero sarà la stessa e quindi i dati possono essere memorizzati una volta e vi si può fare riferimento due volte usando i puntatori (es. hash degli alberi secondari). A questo scopo, viene usato un tipo di albero speciale, noto come "albero di Patricia", includendo una modifica al concetto di albero di Merkle che consente ai nodi di essere inseriti ed eliminati, e non solo modificati, in modo efficiente. Inoltre, poiché tutte le informazioni di stato sono parte dell'ultimo blocco, non è necessario memorizzare l'intera cronologia della blockchain. Questa strategia, se potesse essere applicata a Bitcoin, secondo alcuni calcoli potrebbe far risparmiare da 5 a 20 volte lo spazio usato.
+A prima vista l'approccio può sembrare poco efficiente, perché deve memorizzare l'intero stato con ogni blocco, ma in realtà l'efficienza dovrebbe essere paragonabile a quella di Bitcoin. Il motivo è che lo stato è memorizzato nella struttura ad albero e dopo ogni blocco è necessario modificare solo una piccola parte di esso. Quindi, in generale, tra due blocchi adiacenti la stragrande maggioranza dell'albero dovrebbe essere la stessa, e quindi i dati possono essere archiviati una volta e referenziati due volte usando i puntatori (es. hash di sottoalberi). A questo scopo, viene usato un tipo di albero speciale, noto come "Patricia tree", includendo una modifica al concetto di albero di Merkle che consente ai nodi di essere inseriti ed eliminati, e non solo modificati, in modo efficiente. Inoltre, poiché tutte le informazioni sullo stato fanno parte dell'ultimo blocco, non è necessario archiviare l'intera cronologia della blockchain: una strategia che, se potesse essere applicata a Bitcoin, può essere calcolata per fornire un risparmio di spazio di 5-20 volte.
-Ci si chiede spesso "dove" sia eseguito il codice del contratto, in termini di hardware fisico. La risposta è semplice: il processo di esecuzione del codice del contratto fa parte della definizione della funzione di transizione tra gli stati, che a sua volta fa parte dell'algoritmo di convalida del blocco. Quindi se una transazione viene aggiunta al blocco `B`, l'esecuzione del codice generata da quella transazione avverrà in tutti i nodi, ora e in futuro, che eseguono e convalidano il blocco `B`.
+Una domanda frequente è "dove" viene eseguito il codice del contratto, in termini di hardware fisico. La risposta è semplice: il processo di esecuzione del codice del contratto fa parte della definizione della funzione di transizione tra stati, che fa parte dell'algoritmo di convalida del blocco, quindi se una transazione viene aggiunta nel blocco `B` il codice di esecuzione generato da quella transazione verrà eseguito da tutti i nodi, ora e in futuro, che scaricano e convalidano il blocco `B`.
## Applicazioni {#applications}
-In generale, esistono tre tipi di applicazioni su Ethereum. La prima categoria è quella delle applicazioni finanziarie, che forniscono agli utenti metodi più potenti per gestire i contratti e accedervi usando il proprio denaro. Questa categoria include le valute secondarie, i derivati finanziari, i contratti di copertura, i portafogli di risparmio, i testamenti e anche alcune classi di contratti di impiego su larga scala. La seconda categoria è quella delle applicazioni semi-finanziarie, dove il denaro è coinvolto ma esiste anche un aspetto decisamente non monetario; un esempio perfetto è l'auto-imposizione di ricompense per soluzioni a problemi di calcolo. Infine, esistono applicazioni come il voto online e la governance decentralizzata, che non sono affatto finanziarie.
+In generale, esistono tre tipi di applicazioni su Ethereum. La prima categoria è quella delle applicazioni finanziarie, che forniscono agli utenti metodi più potenti per gestire i contratti e accedervi usando il proprio denaro. Questa categoria include le valute secondarie, i derivati finanziari, i contratti di copertura, i portafogli di risparmio, i testamenti e anche alcune classi di contratti di impiego su larga scala. La seconda categoria è quella delle applicazioni semi-finanziarie, dove il denaro è coinvolto ma esiste anche un aspetto decisamente non monetario; un esempio perfetto è l'auto-imposizione di ricompense per soluzioni a problemi di calcolo. Infine, esistono applicazioni come il voto online e la governance decentralizzata, che non sono affatto operazioni finanziarie.
### Sistemi di token {#token-systems}
-I sistemi di token sulla blockchain hanno molte applicazioni che vanno dalle valute secondarie che rappresentano risorse come USD o oro ad azioni aziendali, token singoli che rappresentano proprietà intelligenti, coupon non falsificabili sicuri e persino sistemi di token assolutamente privi di legami al valore convenzionale, usati come sistemi di punti a scopo di incentivo. I sistemi di token sono sorprendentemente facili da implementare in Ethereum. Il punto principale per capire questo aspetto è che una valuta, o sistema di token, fondamentalmente è un database con un'operazione: sottrarre X unità da A e dare X unità a B, con l'indicazione che (1) A abbia almeno X unità prima della transazione e che (2) la transazione sia approvata da A. Tutto ciò che serve per implementare un sistema di token è implementare questa logica in un contratto.
+I sistemi di token sulla blockchain hanno molte applicazioni che vanno dalle valute secondarie che rappresentano risorse come USD o oro ad azioni aziendali, token singoli che rappresentano proprietà intelligenti, coupon non falsificabili sicuri e persino sistemi di token assolutamente privi di legami al valore convenzionale, usati come sistemi di punti a scopo di incentivo. I sistemi di token sono sorprendentemente facili da implementare in Ethereum. Il punto principale per capire questo aspetto è che una valuta, o un sistema di token, fondamentalmente è un database con un'operazione: sottrarre X unità da A e dare X unità a B, con l'indicazione che (1) A abbia almeno X unità prima della transazione e che (2) la transazione sia approvata da A. Tutto ciò che serve per implementare un sistema di token è implementare questa logica in un contratto.
-Il codice di base per implementare un sistema di token in Serpent è simile al seguente:
+Il codice di base per l'implementazione di un sistema token in Serpent appare come segue:
- def send(to, value):
- if self.storage[msg.sender] >= value:
- self.storage[msg.sender] = self.storage[msg.sender] - value
- self.storage[to] = self.storage[to] + value
+```py
+def send(to, value):
+ if self.storage[msg.sender] >= value:
+ self.storage[msg.sender] = self.storage[msg.sender] - value
+ self.storage[to] = self.storage[to] + value
+```
-Questa essenzialmente è un'implementazione letterale della funzione di transizione tra stati "sistema bancario" descritta in precedenza in questo documento. È necessario aggiungere alcune righe di codice extra per il passaggio iniziale della distribuzione delle unità di valuta in primo luogo e per pochi altri casi limite e, idealmente, una funzione per permettere ad altri contratti di interrogare il saldo di un indirizzo. E questo è tutto. In teoria, i sistemi di token basati su Ethereum che agiscono come valute secondarie possono potenzialmente includere un'altra importante funzionalità mancante alle meta-valute basate su Bitcoin sulla catena: la possibilità di pagare le commissioni sulle transazioni direttamente in quella valuta. Il modo in cui questo verrebbe implementato sarebbe che il contratto manterrebbe un saldo di ether con cui rimborserebbe gli ether usati per pagare le commissioni al mittente e ricaricherebbe il saldo raccogliendo le unità di valuta interne ottenute dalle commissioni e rivendendole in un'asta costantemente attiva. Gli utenti avrebbero quindi bisogno di "attivare" i propri account con ether, ma una volta che gli ether sono presenti potrebbero essere riutilizzati, perché il contratto li rimborserebbe ogni volta.
+Si tratta essenzialmente di un'implementazione letterale della funzione di transizione tra stati "sistema bancario" descritta più sopra nel presente documento. In primo luogo e per pochi altri casi limite, è necessario aggiungere alcune righe di codice extra per il passaggio iniziale della distribuzione delle unità di valuta e, idealmente, sarebbe aggiunta una funzione per permettere ad altri contratti di chiedere il saldo di un indirizzo. E questo è tutto. Teoricamente, i sistemi di token basati su Ethereum che agiscono come sottovalute possono potenzialmente includere un'altra importante caratteristica che manca alle meta-valute basate su Bitcoin a catena: la possibilità di pagare le commissioni delle transazioni direttamente in quella valuta. Tutto ciò verrebbe implementato in modo che il contratto mantenga un saldo in ether con il quale rimborserebbe l'ether utilizzato per pagare le commissioni al mittente e ricarichi questo saldo raccogliendo le unità di valuta interne che riceve in commissioni rivendendole in un'asta in costantemente attiva. Dunque, gli utenti devono "attivare" i propri conti con dell'ether, ma una volta che l'ether è lì, sarebbe riutilizzabile, poiché il contratto lo rimborserebbe ogni volta.
### Derivati finanziari e valute dal valore stabile {#financial-derivatives-and-stable-value-currencies}
-I derivati finanziari sono l'applicazione più comune di uno "Smart Contract" e tra le più semplici da implementare nel codice. La sfida principale legata all'implementazione di contratti finanziari è che la maggioranza richiede riferimenti a un ticker di prezzi esterni; ad esempio, un'applicazione molto utile sarebbe uno Smart Contract che copra dalla volatilità dell'ether (o di un'altra criptovaluta) rispetto al dollaro US, ma in questo caso il contratto dovrebbe conoscere il valore di ETH/USD. Il modo più semplice per implementare questa funzione è tramite un contratto di "feed di dati" gestito da una parte specifica (es. NASDAQ), progettato in modo che quella parte abbia la possibilità di aggiornare il contratto quando necessario, e fornendo un'interfaccia che consenta ad altri contratti di inviare un messaggio al contratto originario e ottenere una risposta con il prezzo.
+Le derivate finanziari sono l'applicazione più comune di un "contratto intelligente" e tra le più semplici da implementare nel codice. La sfida principale nell'implementazione dei contratti finanziari è che la maggioranza di essi richiede riferimenti a un ticker del prezzo esterno; ad esempio, un'applicazione molto desiderabile è un contratto intelligente che copra dalla volatilità dell'ether (o di un'altra criptovaluta), relativamente al dollaro americano ma, farlo, richiede al contratto di conoscere quale sia il valore di ETH/USD. Il modo più semplice per implementare questa funzione è tramite un contratto di "feed di dati" gestito da una parte specifica (es. NASDAQ), progettato in modo che quella parte abbia la possibilità di aggiornare il contratto quando necessario, fornendo un'interfaccia che consenta ad altri contratti di inviare un messaggio al contratto originario e ottenere una risposta con il prezzo.
-Dato l'aspetto critico appena evidenziato, il contratto di copertura sarebbe simile a:
+Dato l'aspetto critico appena evidenziato, il contratto di copertura sarebbe il seguente:
-1. Si attende che la parte A inserisca 1000 ether.
-2. Si attende che la parte B inserisca 1000 ether.
-3. Si registra il valore USD di 1000 ether, calcolato interrogando il contratto di feed di dati, nello storage. Supponiamo che il valore sia $x.
-4. Dopo 30 giorni, si consente ad A o B di "riattivare" il contratto per inviare $x in ether (calcolato interrogando di nuovo il contratto di feed di dati per ottenere il nuovo prezzo) ad A e il resto a B.
+1. Si attende che la parte A inserisca 1000 ether.
+2. Si attende che la parte B inserisca 1000 ether.
+3. Si registra il valore USD di 1000 ether, calcolato interrogando il contratto del feed di dati nell'archivio. Supponiamo che il valore sia x $.
+4. Dopo 30 giorni, si consente ad A o B di "riattivare" il contratto per inviare x $ in ether (calcolato interrogando di nuovo il contratto del feed di dati per ottenere il nuovo prezzo) ad A e il resto a B.
-Un contratto del genere avrebbe un potenziale significativo nel commercio di criptovalute. Uno dei problemi principali menzionati in relazione alle criptovalute è il fatto che siano volatili; sebbene molti utenti ed esercenti possano cercare la sicurezza e la comodità di aver a che fare con risorse crittografiche, potrebbero non voler rischiare di perdere il 23% del valore dei propri fondi in un solo giorno. Finora, la soluzione proposta più comunemente sono le risorse sostenute dall'emittente; l'idea è che un'emittente crei una valuta secondaria per la quale abbia il diritto di emettere e revocare unità e fornisca un'unità della valuta a tutti coloro che le forniscono (offline) un'unità di una risorsa sottostante specificata (ad esempio oro, USD). L'emittente poi promette di fornire un'unità della risorsa sottostante a chiunque restituisca un'unità della criptorisorsa. Questo meccanismo consente a tutte le risorse non crittografiche di essere "accumulate" in una risorsa crittografica, a patto che l'emittente sia attendibile.
+Un contratto del genere avrebbe un potenziale significativo nel commercio di criptovalute. Uno dei problemi principali menzionati in relazione alle criptovalute è il fatto che siano volatili; sebbene molti utenti e commercianti possano cercare la sicurezza e la comodità di avere a che fare con risorse crittografiche, potrebbero non voler rischiare di perdere il 23% del valore dei propri fondi in un solo giorno. Finora, la soluzione più comunemente proposta sono le risorse sostenute dall'emittente; l'idea è che un emittente crei una valuta secondaria per la quale abbia il diritto di emettere e revocare unità e fornisca un'unità della valuta a tutti coloro che le forniscono (offline) con un'unità di una risorsa sottostante specificata (ad esempio oro, USD). L'emittente poi promette di fornire un'unità della risorsa sottostante a chiunque restituisca un'unità della criptorisorsa. Questo meccanismo consente a tutte le risorse non crittografiche di essere "accumulate" in una risorsa crittografica, a patto che l'emittente sia attendibile.
-In pratica, però, gli emittenti non sono sempre affidabili e in alcuni casi l'infrastruttura bancaria è troppo debole, o troppo ostile, per permette l'esistenza di questi servizi. I derivati finanziari rappresentano un'alternativa. In questo caso, invece di un singolo emittente che fornisce i fondi per sostenere una risorsa, il ruolo è rivestito da un mercato decentralizzato di speculatori che scommettono che il prezzo di una risorsa di riferimento crittografica (es. ETH) aumenterà. A differenza degli emittenti, gli speculatori non hanno convenienza a far fallire la loro posizione perché il contratto di copertura tiene in deposito i loro fondi. Tieni presente che questo approccio non è completamente decentralizzato, perché una fonte attendibile è ancora necessaria per fornire il ticker dei prezzi, sebbene probabilmente si tratti di un enorme miglioramento in termini di riduzione dei requisiti dell'infrastruttura (anziché essere un'emittente, emettere un feed di prezzi non richiede alcuna licenza e potrebbe essere categorizzato come libertà di parola) e riduzione delle potenziali frodi.
+In pratica, però, gli emittenti non sono sempre affidabili e in alcuni casi l'infrastruttura bancaria è troppo debole, o troppo ostile, perchè tali servizi possano essere presi in considerazione. I derivati finanziari rappresentano un'alternativa. In questo caso, invece di un singolo emittente che fornisce i fondi per sostenere una risorsa, il ruolo è rivestito da un mercato decentralizzato di speculatori che scommettono che il prezzo di una risorsa di riferimento crittografica (es. ETH) aumenterà. A differenza degli emittenti, agli speculatori non conviene far fallire la loro posizione perché il contratto di copertura tiene in deposito i loro fondi. Si noti che questo approccio non è completamente decentralizzato, perché una fonte attendibile è ancora necessaria per fornire il ticker dei prezzi, nonostante si tratti di un enorme miglioramento in termini di riduzione dei requisiti dell'infrastruttura (al contrario del caso degli emittenti, emettere un feed di prezzi non richiederebbe alcuna licenza e potrebbe essere categorizzato come libertà di parola) e di riduzione delle potenziali frodi.
### Identità e sistemi di reputazione {#identity-and-reputation-systems}
-La prima criptovaluta alternativa, [Namecoin](http://namecoin.org/), tentò di usare una blockchain in stile Bitcoin per fornire un sistema di registrazione dei nomi, dove gli utenti potevano registrare i propri nomi in un database pubblico insieme ad altri dati. Il caso d'uso principale è per un sistema [DNS](https://wikipedia.org/wiki/Domain_Name_System), la mappatura tra nomi di dominio come "Bitcoin.org" (o, nel caso di Namescoin, "Bitcoin.bit") e un indirizzo IP. Altri casi d'uso includono l'autenticazione email e sistemi di reputazione potenzialmente più avanzati. Questo è il contratto di base per fornire un sistema di registrazione dei nomi in stile Namecoin su Ethereum:
+La prima criptovaluta alternativa, [Namecoin](http://namecoin.org/), tentò di usare una blockchain in stile Bitcoin per fornire un sistema di registrazione dei nomi, dove gli utenti potevano registrare i propri nomi in un database pubblico insieme ad altri dati. Il caso d'uso principale è per un sistema [DNS](https://wikipedia.org/wiki/Domain_Name_System), che mappa i nomi di dominio come "Bitcoin.org" (o, nel caso di Namescoin, "Bitcoin.bit") e un indirizzo IP. Altri casi d'uso includono l'autenticazione e-mail e sistemi di reputazione potenzialmente più avanzati. Questo è il contratto di base per fornire un sistema di registrazione dei nomi in stile Namecoin su Ethereum:
- def register(name, value):
- if !self.storage[name]:
- self.storage[name] = value
+```py
+def register(name, value):
+ if !self.storage[name]:
+ self.storage[name] = value
+```
-Il contratto è molto semplice; è un database all'interno della rete Ethereum, aggiungibile, ma non modificabile o rimovibile da essa. Tutti possono registrare un nome con un dato valore e quella registrazione rimarrà per sempre. Un contratto di registrazione dei nomi più sofisticato avrà anche una "clausola di funzione" che consentirà ad altri contratti di interrogarlo, nonché un meccanismo per il "proprietario" di un nome (cioè chi lo ha registrato per primo) per cambiare i dati o trasferire la proprietà. Si possono anche aggiungere funzionalità di reputazione e web-of-trust.
+Il contratto è molto semplice; si tratta di un database all'interno della rete Ethereum, aggiungibile, ma non modificabile o rimovibile da essa. Tutti possono registrare un nome con un dato valore e quella registrazione rimarrà per sempre. Un contratto di registrazione dei nomi più sofisticato avrà anche una "clausola di funzione" che consentirà ad altri contratti di interrogarlo, nonché un meccanismo per il "proprietario" di un nome (cioè chi lo ha registrato per primo) per cambiare i dati o trasferirne la proprietà. Si può anche aggiungere la reputazione e la funzionalità web-of-trust.
-### Storage di file decentralizzato {#decentralized-file-storage}
+### Archivio di file decentralizzato {#decentralized-file-storage}
-Negli ultimi anni, sono emerse molte startup popolari che si occupano di storage di file online (la più prominente è Dropbox). Puntano a consentire agli utenti di caricare un backup del proprio disco rigido, facendo memorizzare il backup al servizio e consentendo all'utente di accedervi in cambio di un abbonamento mensile. Però attualmente il mercato dello storage di file a volte è piuttosto inefficiente; un breve sguardo a varie [soluzioni esistenti](http://online-storage-service-review.toptenreviews.com/) mostra che, in particolare a livello dei 20-200 GB, detti "uncanny valley", in cui non sono disponibili né quote gratuite né sconti a livello aziendale, i prezzi mensili per lo storage di file sono superiori a quelli di un intero disco rigido per un mese. I contratti di Ethereum possono consentire lo sviluppo di un'ecosistema di storage di file decentralizzato, dove i singoli utenti possono guadagnare piccole quantità di denaro affittando i propri dischi fissi e lo spazio inutilizzato è utilizzabile per abbassare ulteriormente i costi dello storage di file.
+Negli ultimi anni, sono emerse molte startup popolari che si occupano di archivi di file online, la più prominente è Dropbox. Puntano a consentire agli utenti di caricare un backup del proprio disco rigido, facendo memorizzare il backup al servizio e consentendo all'utente di accedervi in cambio di un abbonamento mensile. Tuttavia, attualmente il mercato degli archivi di file è talvolta piuttosto inefficiente; un breve sguardo a varie soluzioni esistenti mostra che, in particolare a livello dei 20-200 GB, detti "uncanny valley", in cui non sono disponibili né quote gratuite né sconti a livello aziendale, i prezzi mensili per l'archivio di file sono superiori a quelli di un intero disco rigido per un mese. I contratti di Ethereum possono consentire lo sviluppo di un ecosistema di archivi di file decentralizzato, dove i singoli utenti possono guadagnare piccole quantità di denaro dando in affitto i propri dischi fissi e lo spazio inutilizzato è utilizzabile per abbassare ulteriormente i costi dell'archivio di file.
-La chiave su cui si basa questo meccanismo sarebbe quella che abbiamo definito "contratto decentralizzato di Dropbox". Questo contratto funziona come segue. Innanzitutto, si dividono i dati desiderati in blocchi, crittografandone ognuno a scopo di privacy e derivandone un albero di Merkle. Poi si crea un contratto con la regola che, ogni N blocchi, il contratto selezionerà un indice casuale nell'albero di Merkle (usando l'hash del blocco precedente, accessibile dal codice del contratto, come fonte di casualità) e assegnerà X ether alla prima entità che offrirà una transazione con una prova di proprietà del pagamento semplificata in stile verifica del blocco a quel particolare indice dell'albero. Quando un utente vuole riscaricare il suo file, può usare un protocollo del canale di micropagamento (es. paga 1 szabo per 32 kilobyte) per recuperare il file; l'approccio più efficiente in termini di commissioni è non pubblicare la transazione fino alla fine, ma sostituirla con una lievemente più lucrativa con lo stesso nonce per ogni 32 kilobyte.
+La chiave su cui si basa questo meccanismo sarebbe quella che abbiamo definito "contratto decentralizzato di Dropbox". Questo contratto funziona come segue. Innanzitutto, si dividono i dati desiderati in blocchi, crittografando ognuno di essi a scopo di privacy e derivandone un albero di Merkle. Poi si crea un contratto con la regola che, ogni N blocchi, il contratto seleziona un indice casuale nell'albero di Merkle (usando l'hash del blocco precedente, accessibile dal codice del contratto, come fonte di casualità) e assegna X ether alla prima entità che offre una transazione con una prova semplificata di proprietà del blocco (simile alla verifica di un pagamento) in quel particolare indice dell'albero. Quando un utente vuole riscaricare il suo file, può usare un protocollo del canale di micropagamento (es. paga 1 szabo per 32 kilobyte) per recuperare il file; l'approccio più efficiente in termini di commissioni è non pubblicare la transazione fino alla fine, ma sostituirla con una lievemente più lucrativa con lo stesso nonce per ogni 32 kilobyte.
-Un'importante funzionalità del protocollo è che, sebbene possa sembrare che ci si fidi di molti nodi casuali per non dimenticare il file, si può ridurre tale rischio quasi a zero dividendo il file in molte parti tramite la condivisione del segreto e controllando i contratti per vedere che ogni parte sia ancora in possesso di qualche nodo. Se un contratto sta ancora pagando denaro, fornisce una prova crittografica che qualcuno sta ancora utilizzando lo storage per il file.
+Un'importante funzionalità del protocollo è che, sebbene possa sembrare che ci si fidi di molti nodi casuali per non dimenticare il file, si può ridurre tale rischio quasi a zero dividendo il file in molte parti tramite la condivisione del segreto e controllando i contratti per vedere che ogni parte sia ancora in possesso di qualche nodo. Se un contratto sta ancora pagando denaro, fornisce una prova crittografica che qualcuno sta ancora utilizzando l'archivio per il file.
### Organizzazioni autonome decentralizzate {#decentralized-autonomous-organizations}
-Il concetto generale di "organizzazione autonoma decentralizzata" (DAO) corrisponde a un'entità virtuale che ha una determinata serie di membri o azionisti che, forse con una maggioranza del 67%, hanno il diritto di spendere i fondi dell'entità e modificarne il codice. I membri deciderebbero collettivamente come l'organizzazione dovrebbe allocare i propri fondi. I metodi per allocare i fondi di una DAO vanno da ricompense, a salari, fino a meccanismi molto più particolari come una valuta interna per premiare il lavoro. Questo replica essenzialmente le trappole legali di un'azienda tradizionale o no profit, ma usando solo la tecnologia crittografica della blockchain per applicarle. Finora gran parte delle discussioni sulle DAO si è concentrata sul modello "capitalista" di una "corporazione autonoma decentralizzata" (DAC) con azionisti che ricevono dividendi e azioni scambiabili; un'alternativa, forse descritta come una "community autonoma decentralizzata", farebbe avere ai membri una parte uguale nel processo decisionale e richiederebbe al 67% dei membri esistenti di raggiungere un accordo per aggiungere o rimuovere un membro. Dovrebbe poi essere imposto collettivamente dal gruppo il requisito che una persona possa far parte di una sola organizzazione.
+Il concetto generale di "organizzazione decentralizzata autonoma" è quello di un'entità virtuale che ha un certo insieme di membri o azionisti che, magari con una maggioranza del 67%, hanno il diritto di spendere i fondi dell'entità e di modificarne il codice. I membri deciderebbero collettivamente come l'organizzazione dovrebbe allocare i propri fondi. I metodi per allocare i fondi di una DAO vanno da ricompense, a salari, fino a meccanismi molto più particolari come una valuta interna per premiare il lavoro. Questo replica essenzialmente gli "escamotage" legali di un'azienda tradizionale o senza scopo di lucro, ma usando solo la tecnologia crittografica della blockchain per applicarli. Finora gran parte delle discussioni sulle DAO si è concentrata sul modello "capitalista" di una "corporazione autonoma decentralizzata" (DAC) con azionisti che ricevono dividendi e azioni scambiabili; un'alternativa, forse descritta come una "comunità autonoma decentralizzata", farebbe avere ai membri una parte uguale nel processo decisionale e richiederebbe al 67% dei membri esistenti di raggiungere un accordo per aggiungere o rimuovere un membro. Il requisito che una persona possa avere una sola quota dovrebbe quindi essere applicato collettivamente dal gruppo.
-Segue una descrizione di massima di come programmare una DAO. Il design più semplice è un codice auto-modificante che cambia se due terzi dei membri concordano su una modifica. Sebbene in teoria il codice sia immutabile, questa situazione è facilmente aggirabile inserendo parti di codice in contratti distinti (garantendo, di fatto, mutabilità) e memorizzando l'indirizzo dei contratti da chiamare nello storage modificabile. In una semplice implementazione di un simile contratto DAO, ci sarebbero tre tipi di transazione, distinti dai dati forniti nella transazione:
+Segue una descrizione di massima di come programmare una DAO. Il design più semplice è un codice auto-modificante che cambia se due terzi dei membri concordano una modifica. Sebbene il codice sia teoricamente immutabile, si può facilmente aggirare questo problema e avere una mutabilità di fatto avendo blocchi di codice in contratti separati e avendo l'indirizzo di quali contratti invocare archiviato nella memoria modificabile. In una semplice implementazione di un simile contratto DAO, ci sarebbero tre tipi di transazione, distinti dai dati forniti nella transazione:
-- `[0,i,K,V]` per registrare una proposta con indice `i` che cambi l'indirizzo all'indice dello storage `K` e al valore `V`
+- `[0,i,K,V]` per registrare una proposta con indice `i` per modificare l'indirizzo nell'indice di archivio `K` al valore `V`
- `[1,i]` per registrare un voto a favore della proposta `i`
-- `[2,i]` per finalizzare la proposta `i` se sono stati dati abbastanza voti
+- `[2,i]` per finalizzare la proposta `i` se sono stati espressi abbastanza voti
-Il contratto avrebbe poi clausole per ognuno dei punti. Manterrebbe un registro di tutte le modifiche aperte nello storage, insieme a una lista di chi le ha votate. Avrebbe anche un elenco di tutti i membri. Quando un cambiamento dello storage arriva ai due terzi dei membri che lo votano, una transazione finalizzante potrebbe eseguire la modifica. Uno scheletro più sofisticato avrebbe anche una capacità di voto integrata per caratteristiche come l'invio di una transazione, l'aggiunta e la rimozione di membri e potrebbe persino assicurare la delega del voto in stile [democrazia liquida](https://wikipedia.org/wiki/Delegative_democracy) (cioè chiunque può delegare qualcuno a votare per conto suo, e la delega è transitiva, quindi se A delega B e B delega C, allora C determina il voto di A). Questa progettazione consentirebbe alla DAO di crescere organicamente come community decentralizzata, consentendo di delegare agli specialisti il compito di escludere i membri sebbene, a differenza di quanto avviene nel "sistema corrente", gli specialisti possono facilmente comparire e scomparire nel tempo quando i singoli membri della community cambiano i loro allineamenti.
+Il contratto avrebbe poi clausole per ognuno dei punti. Manterrebbe un registro di tutte le modifiche aperte nell'archivio, insieme a una lista di chi le ha votate. Avrebbe anche un elenco di tutti i membri. Quando un cambiamento dell'archivio arriva ai due terzi dei membri che lo votano, una transazione finalizzante potrebbe eseguire la modifica. Una struttura più sofisticata avrebbe anche una capacità di voto integrata per caratteristiche come l'invio di una transazione, l'aggiunta e la rimozione di membri e potrebbe persino assicurare la delega del voto in stile [democrazia liquida](https://wikipedia.org/wiki/Delegative_democracy) (cioè chiunque può delegare qualcuno a votare per conto suo, e la delega è transitiva, quindi se A delega B e B delega C, allora C determina il voto di A). Questo design consentirebbe alla DAO di crescere organicamente come comunità decentralizzata, consentendo alle persone di delegare eventualmente il compito di filtrare chi è un membro a specialisti, sebbene, a differenza del "sistema attuale", gli specialisti possano facilmente entrare e uscire dall'esistenza nel tempo man mano che i singoli membri della comunità cambiano i loro allineamenti.
-Un modello alternativo si riferirebbe a una corporazione decentralizzata, dove ogni account può avere zero o più quote e per prendere una decisione sono necessari due terzi delle quote. Uno scheletro completo coinvolgerebbe la gestione delle risorse, la possibilità di fare un'offerta di acquisto o vendita di quote, nonché di accettare offerte (preferibilmente con un meccanismo di abbinamento degli ordini all'interno del contratto). Esisterebbe anche una delega in stile democrazia liquida, generalizzando il concetto di "consiglio di amministrazione".
+Un modello alternativo è per una società decentralizzata, dove ogni conto può avere zero o più quote e sono necessarie più di due terzi di quote per prendere una decisione. Una struttura completa comporterebbe la funzionalità di gestione delle risorse, la capacità di fare un'offerta per l'acquisto o la vendita di azioni e la capacità di accettare offerte (preferibilmente con un meccanismo di corrispondenza degli ordini all'interno del contratto). Esiste anche una delega in stile "democrazia liquida", generalizzando il concetto di "consiglio di amministrazione".
### Ulteriori applicazioni {#further-applications}
-**1. Portafogli di risparmio**. Supponi che Alice voglia mantenere i propri fondi al sicuro, ma è preoccupata di perdere la sua chiave privata o che qualcuno la comprometta. Inserisce ether in un contratto con Bob, una banca, come segue:
+**1. Portafogli di risparmio**. Supponiamo che Alice voglia tenere al sicuro i suoi fondi, ma sia preoccupata di perdere la sua chiave privata o che qualcuno possa hackerarla. Versa ether in un contratto con Bob, una banca, come segue:
- Alice da sola può prelevare al massimo l'1% dei fondi ogni giorno.
- Bob da solo può prelevare al massimo l'1% dei fondi ogni giorno, ma Alice ha la possibilità di effettuare una transazione con la sua chiave per revocare questa possibilità.
@@ -314,90 +328,94 @@ Un modello alternativo si riferirebbe a una corporazione decentralizzata, dove o
Normalmente, l'1% al giorno è abbastanza per Alice, e se Alice vuole prelevare di più può contattare Bob e chiedergli aiuto. Nel caso la chiave di Alice venga compromessa, Alice si potrebbe rivolgere a Bob per spostare i fondi in un nuovo contratto. Se Alice perdesse la sua chiave, Bob potrebbe prelevare i fondi. Se Bob si rivelasse malintenzionato, Alice potrebbe revocare la sua capacità di prelievo.
-**2. Assicurazione dei raccolti**. Si può facilmente creare un contratto di derivati finanziari utilizzando un feed di dati sul clima anziché un indice dei prezzi. Se un agricoltore in Iowa acquista un derivato che paga inversamente rispetto alle precipitazioni nello stato dell'Iowa, in caso di siccità l'agricoltore riceverebbe automaticamente denaro, mentre se piovesse abbastanza, l'agricoltore sarebbe felice perché l'andamento del raccolto sarebbe positivo. Questo discorso può essere esteso a alle assicurazioni sulle calamità naturali in generale.
+**2. Assicurazione dei raccolti**. Si può facilmente stipulare un contratto di derivati finanziari ma utilizzando un feed di dati del tempo invece di qualsiasi indice di prezzo. Se un agricoltore in Iowa acquista un derivato che paga inversamente in base alle precipitazioni in Iowa, in caso di siccità, l'agricoltore riceverà automaticamente denaro e se invece ci sarà abbastanza pioggia l'agricoltore sarà felice perché i suoi raccolti saranno positivi. Questo discorso può essere esteso alle assicurazioni sulle calamità naturali in generale.
-**3. Un feed dati decentralizzato**. Per i contratti finanziari per differenza, in realtà potrebbe essere possibile decentralizzare il feed dati attraverso un protocollo chiamato [SchellingCoin](http://blog.ethereum.org/2014/03/28/schellingcoin-a-minimal-trust-universal-data-feed/). In pratica, SchellingCoin funziona così: N parti mettono tutte nel sistema il valore di un determinato dato (ad esempio il prezzo di ETH/USD), i valori vengono ordinati e tutti quelli tra il 25° e il 75° percentile ottengono un token come ricompensa. Tutti sono incentivati a fornire la risposta che daranno tutti gli altri, e l'unico valore su cui un grande numero di partecipanti può realisticamente concordare è quello più ovvio: la verità. Questo crea un protocollo decentralizzato che può teoricamente fornire qualsiasi numero di valori, tra cui il prezzo di ETH/USD, la temperatura a Berlino o persino il risultato di un calcolo particolarmente difficile.
+**3. Un feed dati decentralizzato**. Per i contratti finanziari per differenza, potrebbe essere effettivamente possibile decentralizzare il feed di dati tramite un protocollo chiamato"[SchellingCoin](http://blog.ethereum.org/2014/03/28/schellingcoin-a-minimal-trust-universal-data-feed/)". In pratica, SchellingCoin funziona così: N parti mettono nel sistema il valore di un determinato dato (ad esempio il prezzo di ETH/USD), i valori vengono ordinati e tutti quelli tra il 25° e il 75° percentile ottengono un token come ricompensa. Ognuno ha l'incentivo a fornire la risposta che tutti gli altri forniranno, e l'unico valore su cui un gran numero di giocatori può essere realisticamente d'accordo è l'ovvio valore predefinito: la verità. Questo crea un protocollo decentralizzato che può teoricamente fornire qualsiasi numero di valori, compreso il prezzo in ETH/USD, la temperatura a Berlino o anche il risultato di un particolare calcolo rigido.
-**4. Deposito multi-firma intelligente**. Bitcoin permette contratti di transazioni multi-firma dove, ad esempio, tre di cinque chiavi possono spendere i fondi. Ethereum consente una granularità maggiore; ad esempio, quattro su cinque possono spendere tutto, tre su cinque possono spendere fino al 10% al giorno e due su cinque possono spendere fino allo 0,5% al giorno. Inoltre, la multi-firma di Ethereum è asincrona: due parti possono registrare le proprie firme sulla blockchain in momenti diversi e l'ultima firma invierà automaticamente la transazione.
+**4. Deposito multi-firma intelligente**. Bitcoin permette contratti di transazioni multi-firma dove, ad esempio, tre chiavi su cinque possono spendere i fondi. Ethereum consente una granularità maggiore; ad esempio, quattro su cinque possono spendere tutto, tre su cinque possono spendere fino al 10% al giorno e due su cinque possono spendere fino allo 0,5% al giorno. Inoltre, la multi-firma di Ethereum è asincrona: due parti possono registrare le proprie firme sulla blockchain in momenti diversi e l'ultima firma invierà automaticamente la transazione.
**5. Cloud computing**. La tecnologia dell'EVM può essere usata anche per creare un ambiente di calcolo verificabile, che consenta agli utenti di chiedere ad altri di effettuare i calcoli e quindi, facoltativamente, chiedere una prova del fatto che i calcoli, a certi punti di controllo selezionati casualmente, siano stati eseguiti correttamente. Questa situazione consente di creare un mercato di cloud computing, dove ogni utente può partecipare con il proprio desktop, notebook o server specializzato e il controllo a campione unito a depositi di sicurezza può essere utilizzato per garantire che il sistema sia attendibile (cioè che i nodi non possano aggirare il sistema traendone profitto). Un sistema del genere potrebbe non essere idoneo per tutte le operazioni; quelle che richiedono un alto livello di comunicazione tra processi, ad esempio, non possono essere eseguite facilmente su un cloud di nodi di grandi dimensioni. Altre operazioni, invece, sono molto più facili da parallelizzare; progetti come SETI@home, folding@home e algoritmi genetici possono essere facilmente implementati su una piattaforma di questa natura.
-**6. Gioco d'azzardo peer to peer**. Sulla blockchain di Ethereum può essere implementato qualsiasi numero di protocolli di gioco d'azzardo peer-to-peer, come [Cyberdice](http://www.cl.cam.ac.uk/~fms27/papers/2008-StajanoCla-cyberdice.pdf) di Frank Stajano e Richard Clayton. Il più semplice protocollo di gioco d'azzardo è in realtà semplicemente un contratto che controlla la differenza sull'hash del blocco successivo, e da questo possono essere realizzati protocolli più avanzati, creando servizi di gioco d'azzardo con commissioni pari quasi a zero, che non hanno alcuna possibilità di aggirare il sistema.
+**6. Gioco d'azzardo peer to peer**. Qualsiasi numero di protocolli di gioco d'azzardo peer-to-peer, come Frank Stajano e il [Cyberdice](http://www.cl.cam.ac.uk/~fms27/papers/2008-StajanoCla-cyberdice.pdf)di Richard Clayton, può essere implementato sulla blockchain Ethereum. Il più semplice protocollo di gioco d'azzardo è in realtà semplicemente un contratto che controlla la differenza sull'hash del blocco successivo, e da questo possono essere realizzati protocolli più avanzati, creando servizi di gioco d'azzardo con commissioni pari quasi a zero, che non hanno alcuna possibilità di aggirare il sistema.
**7. Mercati predittivi**. Con un oracolo o SchellingCoin, anche i mercati predittivi sono facili da implementare e, insieme a SchellingCoin, possono rivelarsi la prima applicazione mainstream di [futarchy](http://hanson.gmu.edu/futarchy.html) come protocollo di governance per le organizzazioni decentrate.
-**8. Marketplace decentralizzati sulla catena**, che utilizzano il sistema di reputazione e di identità come base.
+**8. Mercati decentralizzati sulla catena**, che utilizzano il sistema di reputazione e di identità come base.
-## Problematiche e varie {#miscellanea-and-concerns}
+## Problematiche, varie ed eventuali {#miscellanea-and-concerns}
### Implementazione GHOST modificata {#modified-ghost-implementation}
Il protocollo "Greedy Heaviest Observed Subtree" (GHOST) è un'innovazione introdotta per la prima volta da Yonatan Sompolinsky e Aviv Zohar nel [dicembre 2013](https://eprint.iacr.org/2013/881.pdf). La motivazione che sta alla base di GHOST è che le blockchain con tempi di conferma rapidi attualmente hanno una sicurezza ridotta a causa di un elevato tasso di obsolescenza, perché i blocchi impiegano un certo periodo di tempo per propagarsi attraverso la rete. Se il miner A esegue il mining di un blocco e poi il miner B esegue il mining di un altro blocco prima che il blocco del miner A si propaghi a B, il blocco del miner B andrà sprecato e non contribuirà alla sicurezza della rete. Inoltre, è presente un problema di centralizzazione: se il miner A è un pool di mining con il 30% di hashpower e B ha il 10% di hashpower, A corre il rischio di produrre un blocco obsoleto per il 70% del tempo (dato che per il rimanente 30% del tempo produce l'ultimo blocco e quindi ottiene subito i dati di mining) mentre B corre il rischio di produrre un blocco obsoleto per il 90% del tempo. Quindi, se l'intervallo del blocco è abbastanza breve affinché il tasso di obsolescenza sia elevato, A sarà notevolmente più efficiente semplicemente in virtù delle sue dimensioni. Con la combinazione di questi due effetti, nelle blockchain che producono blocchi rapidamente è probabile che un pool di mining con una percentuale abbastanza elevata di hashpower in rete abbia di fatto il controllo sul processo di mining.
-Come descritto da Sompolinsky e Zohar, GHOST risolve il primo problema di perdita di sicurezza della rete includendo blocchi obsoleti nel calcolo della catena "più lunga"; cioè, al calcolo del blocco con la proof-of-work più elevata vengono aggiunti non solo il padre e gli elementi ancora superiori di un blocco, ma anche i discendenti obsoleti dell'antenato del blocco (nel gergo di Ethereum gli "zii"). Per risolvere il secondo problema della propensione alla centralizzazione, andiamo oltre il protocollo descritto da Sompolinsky e Zohar e forniamo ricompense anche per i blocchi obsoleti: un blocco obsoleto riceve l'87,5% della ricompensa di base dovuta e il nipote che include il blocco obsoleto il restante 12,5%. Le commissioni sulle transazioni però non vengono assegnate agli zii.
+Come descritto da Sompolinsky e Zohar, GHOST risolve il primo problema di perdita di sicurezza della rete includendo blocchi obsoleti nel calcolo della catena "più lunga"; cioè, al calcolo del blocco con il proof-of-work più elevato vengono aggiunti non solo il principale e gli elementi ancora superiori di un blocco, ma anche i discendenti obsoleti del principale del blocco (nel gergo di Ethereum gli "ommer"). Per risolvere il secondo problema della propensione alla centralizzazione, andiamo oltre il protocollo descritto da Sompolinsky e Zohar e forniamo ricompense anche per i blocchi obsoleti: un blocco obsoleto riceve l'87,5% della ricompensa di base dovuta e il subordinato che include il blocco obsoleto il restante 12,5%. Le commissioni sulle transazioni però non vengono assegnate agli ommer.
Ethereum implementa una versione semplificata di GHOST che scende solo di sette livelli. In particolare, è definito come segue:
-- Un blocco deve specificare un padre, oltre che 0 o più zii
-- Uno zio incluso nel blocco `B` deve avere le seguenti proprietà:
-- Deve essere figlio diretto dell'antenato di `k`a generazione di `B`, dove `2 <= k <= 7`.
-- Non può essere un antenato di `B`
-- Uno zio deve essere un'intestazione di blocco valida, ma non per forza un blocco verificato in precedenza e neanche valido
-- Uno zio deve essere diverso da tutti gli zii inclusi nei precedenti blocchi e da tutti quelli inclusi nello stesso blocco (inclusione non doppia)
-- Per ogni zio `U` nel blocco `B`, alla ricompensa base del miner di `B` viene aggiunto un ulteriore 3,125% e il miner di U ottiene il 93,75% di una ricompensa base standard.
+- Un blocco deve specificare un elemento principale, oltre che 0 o più ommer
+- Uno ommer incluso nel blocco B deve avere le seguenti proprietà:
+ - Deve essere un elemento subordinato diretto del principale della generazione k di B, dove 2 <= k <= 7.
+ - Non può essere un elemento principale di B
+ - Un ommer deve essere un'intestazione di blocco valida, ma non è necessario che sia un blocco verificato in precedenza o addirittura valido
+ - Un ommer deve essere diverso da tutti gli ommer inclusi nei precedenti blocchi e da tutti quelli inclusi nello stesso blocco (inclusione non doppia)
+- Per ogni ommer U nel blocco B, alla ricompensa base del miner di B viene aggiunto un ulteriore 3,125% e il miner di U ottiene il 93,75% di una ricompensa base standard.
-Questa versione limitata di GHOST, con zii che possono essere inclusi solo fino a 7 generazioni, è stata utilizzata per due motivi. In primo luogo, una versione di GHOST illimitata includerebbe troppe complicazioni nel calcolo degli zii validi per un determinato blocco. Secondo, una versione di GHOST illimitata con compenso come in Ethereum non incentiverebbe un miner ad eseguire il mining sulla catena principale anziché sulla catena di un aggressore pubblico.
+Questa versione limitata di GHOST, con ommer che possono essere inclusi solo fino a 7 generazioni, è stata utilizzata per due motivi. In primo luogo, una versione di GHOST illimitata includerebbe troppe complicazioni nel calcolo degli ommer validi per un determinato blocco. In secondo luogo, il GHOST illimitato con compensazione come utilizzato in Ethereum elimina l'incentivo per un miner ad eseguire il mining dalla catena principale e non dalla catena di un utente malintenzionato.
### Commissioni {#fees}
-Poiché ogni transazione pubblicata nella blockchain impone alla rete l'obbligo di scaricarla e verificarla, nasce la necessità di avere un meccanismo di regolamentazione, che in genere includa commissioni sulle transazioni, per prevenire abusi. L'approccio predefinito, utilizzato anche in Bitcoin, è quello di avere solo commissioni volontarie, facendo affidamento sui miner affinché agiscano da guardiani e impongano valori minimi dinamici. Questo approccio è stato accolto molto favorevolmente dalla community Bitcoin, soprattutto perché "si basa sul mercato", cioè consente di determinare il prezzo in base all’offerta e alla domanda tra miner e chi invia le transazioni. Il problema di questo tipo di ragionamento però è che l'elaborazione delle transazioni non è un mercato. Anche se può sembrare attraente configurare l'elaborazione delle transazioni come un servizio che il miner offre al mittente, in realtà ogni transazione che un miner include dovrà essere elaborata da ogni nodo della rete, quindi la stragrande maggioranza del costo legato all'elaborazione delle transazioni è a carico di terzi e non del miner che decide se includere il blocco. Di conseguenza, è molto probabile che si verifichi una situazione di tragedia dei beni comuni.
+Poiché ogni transazione pubblicata nella blockchain impone alla rete l'obbligo di scaricarla e verificarla, nasce così la necessità di avere un meccanismo di regolamentazione, che in genere includa commissioni sulle transazioni, per prevenire gli abusi. L'approccio predefinito, utilizzato in Bitcoin, è quello di avere commissioni puramente volontarie, basandosi sui miner che agiscono come guardiani e stabiliscono minimi dinamici. Questo approccio è stato accolto molto favorevolmente dalla comunità di Bitcoin, soprattutto perché "si basa sul mercato", cioè consente di determinare il prezzo in base all’offerta e alla domanda tra miner e chi invia le transazioni. Il problema con questo tipo di ragionamento risiede nel fatto che l'elaborazione delle transazioni non è un mercato. Anche se può sembrare attraente configurare l'elaborazione delle transazioni come un servizio che il miner offre al mittente, in realtà ogni transazione che un miner include dovrà essere elaborata da ogni nodo della rete, quindi la stragrande maggioranza del costo legato all'elaborazione delle transazioni è a carico di terzi e non del miner che decide se includere o no il blocco. Di conseguenza, è molto probabile che si verifichi una situazione di tragedia dei beni comuni.
-Tuttavia, questo difetto nel meccanismo basato sul mercato, se viene fatta una determinata ipotesi di semplificazione imprecisa, si annulla magicamente. L'argomentazione è indicata di seguito. Si supponga che:
+Tuttavia, come risulta da questo difetto del meccanismo basato sul mercato, quando si tratta di un'ipotesi di semplificazione particolarmente imprecisa, magicamente si annulla. L'argomentazione è la seguente. Si supponga che:
-1. Una transazione porti a `k` operazioni, offrendo la ricompensa `kR` al miner che la include, dove `R` è impostato dal mittente e `k` e `R` sono (approssimativamente) visibili al miner in anticipo.
-2. Un'operazione ha un costo di elaborazione di `C` per ogni nodo (cioè tutti i nodi hanno uguale efficienza)
-3. Ci sono `N` nodi di mining, ognuno con esattamente la stessa potenza di elaborazione (quindi `1/N` del totale)
-4. Non esistono nodi completi che esulino dal mining.
+1. Una transazione porti a `k` operazioni, offrendo la ricompensa `kR` al miner che la include, dove `R` è impostato dal mittente e `k` e `R` sono (approssimativamente) visibili al miner in anticipo.
+2. Un'operazione abbia un costo di elaborazione di `C` per ogni nodo (cioè tutti i nodi hanno uguale efficienza)
+3. Ci siano `N` nodi di mining, ognuno con esattamente la stessa potenza di elaborazione (quindi `1/N` del totale)
+4. Non esistano nodi completi che esulino dal mining.
-Un miner è disposto a elaborare una transazione se la ricompensa prevista è superiore al costo. Quindi, la ricompensa prevista è `kR/N` dal momento che il miner ha una possibilità di `1/N` di elaborare il blocco successivo e il costo di elaborazione è semplicemente `kC`. Secondo questo calcolo, i miner includeranno transazioni dove `kR/N > kC` o `R > NC`. Si noti che `R` è la commissione per operazione fornita dal mittente ed è quindi un limite inferiore sul vantaggio che il mittente ottiene dalla transazione, e `NC` è il costo per l'intera rete per l'elaborazione di un'operazione. Di conseguenza, i miner sono incentivati a includere solo le transazioni per cui il beneficio utilitaristico totale supera il costo.
+Un miner è disposto a elaborare una transazione se la ricompensa prevista è superiore al costo. Quindi, la ricompensa prevista è `kR/N` dal momento che il miner ha una possibilità di `1/N` di elaborare il blocco successivo e il costo di elaborazione è semplicemente `kC`. Di conseguenza, i miner includeranno le transazioni in cui `kR/N > kC`, o `R > NC`. Si noti che `R` è la commissione per operazione fornita dal mittente ed è quindi un limite inferiore sul vantaggio che il mittente ottiene dalla transazione, e `NC` è il costo per l'intera rete per l'elaborazione di un'operazione. Di conseguenza, i miner sono incentivati a includere solo le transazioni per cui il beneficio utilitaristico totale supera il costo.
-Tuttavia, nella realtà, ci sono diverse deviazioni importanti da queste ipotesi:
+Tuttavia, nella realtà, ci sono diverse differenze importanti da queste ipotesi:
-1. Il miner in realtà paga un costo più elevato per elaborare la transazione rispetto agli altri nodi di verifica, dal momento che il tempo di verifica supplementare ritarda la propagazione del blocco e quindi aumenta la possibilità che il blocco diventi obsoleto.
-2. Esistono nodi completi non sottoposti a mining.
-3. La distribuzione di potenza di mining nella pratica può risultare non affatto equa.
-4. Sono presenti speculatori, avversari politici e squilibrati la cui funzione di utilità include il causare danni alla rete, che possono abilmente configurare contratti con costo molto inferiore rispetto al costo pagato da altri nodi di verifica.
+1. Il miner in realtà paga un costo più elevato per elaborare la transazione rispetto agli altri nodi di verifica, dal momento che il tempo di verifica supplementare ritarda la propagazione del blocco e quindi aumenta la possibilità che il blocco diventi obsoleto.
+2. Esistono nodi completi non sottoposti a mining.
+3. Nella pratica la distribuzione di potenza di mining può risultare per nulla equa.
+4. Sono presenti speculatori, avversari politici e squilibrati la cui funzione di utilità include il causare danni alla rete, che possono abilmente configurare contratti con costo molto inferiore rispetto al costo pagato da altri nodi di verifica.
-(1) favorisce una tendenza per il miner a includere meno transazioni e (2) aumenta `NC`; di conseguenza, questi due effetti si annullano a vicenda almeno parzialmente.[Come?](https://github.com/ethereum/wiki/issues/447#issuecomment-316972260) (3) e (4) sono il problema principale; per risolverli semplicemente stabiliamo un limite fluttuante: nessun blocco può avere un numero di operazioni superiore a `BLK_LIMIT_FACTOR` volte la media mobile esponenziale a lungo termine. Nello specifico:
+(1) favorisce una tendenza per il miner a includere meno transazioni e (2) aumenta `NC`; di conseguenza, questi due effetti si annullano a vicenda almeno parzialmente.[Come?](https://github.com/ethereum/wiki/issues/447#issuecomment-316972260) (3) e (4) sono i problemi principali; per risolverli, stabiliamo semplicemente un limite fluttuante: nessun blocco può avere un numero di operazioni superiore a `BLK_LIMIT_FACTOR` volte la media mobile esponenziale a lungo termine. Nello specifico:
- blk.oplimit = floor((blk.parent.oplimit \* (EMAFACTOR - 1) +
- floor(parent.opcount \* BLK\_LIMIT\_FACTOR)) / EMA\_FACTOR)
+```js
+blk.oplimit = floor((blk.parent.oplimit \* (EMAFACTOR - 1) +
+floor(parent.opcount \* BLK\_LIMIT\_FACTOR)) / EMA\_FACTOR)
+```
`BLK_LIMIT_FACTOR` e `EMA_FACTOR` sono costanti che per il momento saranno impostate a 65536 e 1,5, ma questo probabilmente cambierà dopo ulteriori analisi.
-C'è un altro fattore che disincentiva blocchi di grandi dimensioni in Bitcoin: i blocchi grandi richiedono più tempo per essere propagati e quindi hanno una maggiore probabilità di diventare obsoleti. In Ethereum, anche i blocchi ad alto consumo di carburante possono richiedere più tempo per essere propagati, sia perché sono fisicamente più grandi che perché impiegano più tempo per elaborare le transizioni di stato delle transazioni da convalidare. Questo disincentivo al ritardo è una problematica importante in Bitcoin ma meno in Ethereum, a causa del protocollo GHOST; quindi, i limiti di blocco regolamentati offrono una base più stabile.
+C'è un altro fattore che disincentiva blocchi di grandi dimensioni in Bitcoin: i blocchi grandi richiedono più tempo per essere propagati e quindi hanno una maggiore probabilità di diventare obsoleti. Su Ethereum, anche i blocchi ad alto consumo di gas possono richiedere più tempo per esser propagati, sia perché fisicamente più grandi, che perché richiedono più tempo per elaborare le transizioni di stato della transazione da convalidare. Questo disincentivo al ritardo è una problematica importante in Bitcoin ma meno in Ethereum, a causa del protocollo GHOST; quindi, i limiti di blocco regolamentati offrono una base più stabile.
### Calcolo e Turing equivalenza {#computation-and-turing-completeness}
-È importante tenere presente che la macchina virtuale di Ethereum è Turing completa. Significa che il codice dell'EVM può codificare qualsiasi calcolo eseguibile dal punto di vista concettuale, compresi i cicli infiniti. Il codice dell'EVM permette il looping in due modi. In primo luogo, sono presenti un'istruzione `JUMP`, che permette al programma di tornare a un punto precedente nel codice, e un'istruzione `JUMPI`, per fare un salto condizionale, consentendo istruzioni come `while x < 27: x = x * 2`. In secondo luogo, i contratti possono chiamarsi a vicenda, consentendo potenzialmente il looping attraverso la ricorsività. Questo fa nascere naturalmente un problema: gli utenti malintenzionati possono danneggiare miner e nodi completi costringendoli a entrare in un ciclo infinito? Questa questione si presenta a causa di un problema informatico noto come problema della terminazione: non c'è modo di prevedere, in termini generali, se un dato programma si arresterà o meno.
+È importante tenere presente che la macchina virtuale di Ethereum è Turing equivalente. Significa che il codice dell'EVM può codificare qualsiasi calcolo eseguibile dal punto di vista concettuale, compresi i cicli infiniti. Il codice dell'EVM permette il looping in due modi. In primo luogo, sono presenti un'istruzione `JUMP`, che permette al programma di tornare a un punto precedente nel codice, e un'istruzione `JUMPI`, per fare un salto condizionale, consentendo istruzioni come `while x < 27: x = x * 2`. In secondo luogo, i contratti possono chiamarsi a vicenda, consentendo potenzialmente il looping attraverso la ricorsività. Questo fa nascere naturalmente un problema: gli utenti malintenzionati possono danneggiare miner e nodi completi costringendoli a entrare in un ciclo infinito? Questa questione si presenta a causa di un problema informatico noto come problema della terminazione: non c'è modo di prevedere, in termini generali, se un dato programma si arresterà o meno.
Come descritto nella sezione sulla transizione tra stati, la nostra soluzione funziona richiedendo che una transazione imposti un numero massimo di passaggi di calcolo eseguibili. Se l'esecuzione richiede un calcolo più lungo, viene ripristinata, ma le commissioni vengono pagate comunque. I messaggi funzionano allo stesso modo. Per spiegare i motivi che stanno alla base della nostra soluzione, si considerino i seguenti esempi:
-- Un aggressore crea un contratto che esegue un ciclo infinito, poi invia una transazione che attiva quel ciclo per il miner. Il miner elabora la transazione, eseguendo il ciclo infinito e attende che il carburante si esaurisca. Anche se l'esecuzione esaurisce il carburante e si ferma a metà, la transazione è comunque valida e il miner chiede comunque la commissione all'aggressore per ogni fase di calcolo.
-- Un aggressore crea un ciclo infinito molto lungo con l'intento di costringere il miner ad eseguire il calcolo per un tempo talmente lungo che, nel momento in cui il calcolo terminerà, saranno stati creati alcuni nuovi blocchi e non sarà possibile per il miner includere la transazione per richiedere la commissione. L'aggressore però dovrà inviare un valore per `STARTGAS` limitando il numero dei passaggi di calcolo permessi per l'esecuzione, in modo che il miner sappia in anticipo che il calcolo richiederà un numero di passaggi eccessivo.
-- Un aggressore vede un contratto con il seguente codice `send(A,contract.storage[A]); contract.storage[A] = 0` e invia una transazione con carburante sufficiente per eseguire solo il primo passaggio ma non il secondo (ad esempio per effettuare un prelievo, senza far diminuire il saldo). L'autore del contratto non si deve preoccupare di proteggersi da tali attacchi, perché se l'esecuzione si ferma a metà, le modifiche apportate vengono ripristinate.
-- Un contratto finanziario funziona prendendo la mediana di nove feed di dati proprietari per ridurre al minimo il rischio. Un aggressore prende possesso di uno dei feed di dati, che è progettato per essere modificabile tramite il meccanismo di chiamata a indirizzo variabile descritto nella sezione sulle DAO, e lo converte per eseguire un ciclo infinito, tentando così di forzare tutti i tentativi di rivendicare fondi dal contratto finanziario ad esaurire il carburante. Tuttavia, il contratto finanziario può impostare un limite di carburante sul messaggio per impedire il verificarsi di questa situazione.
+- Un aggressore crea un contratto che esegue un ciclo infinito, poi invia una transazione che attiva quel ciclo per il miner. Il miner elaborerà la transazione, eseguendo il ciclo infinito e attenderà che il gas si esaurisca. Sebbene l'esecuzione esaurisca il gas e si interrompa a metà, la transazione è comunque valida e il miner rivendica ugualmente la commissione dall'utente malevolo, per ogni passaggio di calcolo.
+- Un aggressore crea un ciclo infinito molto lungo con l'intento di costringere il miner ad eseguire il calcolo per un tempo talmente lungo che, nel momento in cui il calcolo terminerà, saranno stati creati alcuni nuovi blocchi e non sarà possibile per il miner includere la transazione per richiedere la commissione. Tuttavia, l'utente malevolo dovrà inviare un valore per `STARTGAS`, limitando il numero di passaggi di calcolo permessi all'esecuzione, quindi, il miner saprà in anticipo che il calcolo richiederà un numero eccessivamente elevato di passaggi.
+- Un utente malevolo vede un contratto con un codice come il seguente `send(A,contract.storage[A]); contract.storage[A] = 0` e invia uan transazione con abbastanza gas da eseguire il primo passaggio, ma non il secondo (es. effettuando un prelievo ma non consentendo al saldo di ridursi). L'autore del contratto non si deve preoccupare di proteggersi da tali attacchi, perché se l'esecuzione si ferma a metà, le modifiche apportate vengono ripristinate.
+- Un contratto finanziario funziona prendendo la mediana di nove feed di dati proprietari per ridurre al minimo il rischio. Un utente malevolo prende possesso di uno dei feed di dati, progettato per esser modificabile tramite il meccanismo di chiamata all'indirizzo della variabile descritto nella sezione sulle DAO e lo converte in un ciclo infinito, dunque tentando di forzare qualsiasi tentativo di rivendicare fondi dal contratto finanziario, per esaurire il gas. Tuttavia, il contratto finanziario può impostare un limite di gas sul messaggio per impedire tale problema.
-L'alternativa alla Turing equivalenza è l'incompletezza di Turing, dove `JUMP` e `JUMPI` non esistono e può esistere solo una copia di ogni contratto nello stack di chiamate in un determinato momento. Con questo sistema, il sistema di commissioni descritto e le incertezze sull'efficacia della nostra soluzione potrebbero non essere necessari, in quanto il costo di esecuzione di un contratto sarebbe limitato dalla sua dimensione. Inoltre, l'incompletezza di Turing non è neanche una limitazione eccessiva; tra tutti gli esempi di contratto che abbiamo concepito internamente, finora solo uno richiedeva un ciclo, e anche questo ciclo potrebbe essere rimosso inserendo 26 ripetizioni di una riga di codice. Considerate le gravi implicazioni della Turing equivalenza, e i vantaggi limitati, perché non usare semplicemente un linguaggio Turing incompleto? In realtà, l'incompletezza di Turing è lungi dall'essere una vera soluzione al problema. Per capire perché, prendiamo in considerazione i contratti seguenti:
+L'alternativa all'equivalenza Turing è l'incompletezza Turing, dove `JUMP` e `JUMPI` non esistono e può esistere solo una copia di ogni contratto nello stack di chiamate in un determinato momento. Con questo sistema, il sistema di commissioni descritto e le incertezze sull'efficacia della nostra soluzione potrebbero non essere necessari, in quanto il costo di esecuzione di un contratto sarebbe limitato dalla sua dimensione. Inoltre, l'incompletezza di Turing non è neanche una limitazione eccessiva; tra tutti gli esempi di contratto che abbiamo concepito internamente, finora solo uno richiedeva un ciclo, e anche questo ciclo potrebbe essere rimosso inserendo 26 ripetizioni di una riga di codice. Considerate le gravi implicazioni dell'equivalenza Turing, e i vantaggi limitati, perché non usare semplicemente un linguaggio Turing incompleto? In realtà, l'incompletezza di Turing è lontana dall'essere una vera soluzione al problema. Per capire perché, prendiamo in considerazione i contratti seguenti:
- C0: call(C1); call(C1);
- C1: call(C2); call(C2);
- C2: call(C3); call(C3);
- ...
- C49: call(C50); call(C50);
- C50: (esegue un passaggio di un programma e registra la modifica nello storage)
+```sh
+C0: call(C1); call(C1);
+C1: call(C2); call(C2);
+C2: call(C3); call(C3);
+...
+C49: call(C50); call(C50);
+C50: (esegue un passaggio di un programma e registra la modifica nello storage)
+```
-Ora, si invia una transazione ad A. Così, in 51 transazioni, abbiamo un contratto che richiede 250 passaggi di calcolo. I miner potrebbero cercare di rilevare queste bombe logiche in anticipo, mantenendo un valore insieme a ogni contratto che specifichi il numero massimo di passaggi di calcolo che può accettare, e calcolandolo per i contratti che chiamano ricorsivamente altri contratti. Per fare questo però i miner dovrebbero vietare ai contratti di creare altri contratti (poiché la creazione e l'esecuzione di tutti i 26 contratti di cui sopra potrebbero facilmente essere inseriti in un unico contratto). Un altro punto problematico riguarda il fatto che il campo dell'indirizzo di un messaggio è una variabile, quindi in generale potrebbe non essere neanche possibile sapere in anticipo quali altri contratti verranno chiamati da un determinato contratto. Quindi, tutto sommato, giungiamo a una conclusione sorprendente: la Turing equivalenza è incredibilmente facile da gestire, mentre l'incompletezza di Turing è altrettanto incredibilmente difficile da gestire, a meno che non vengano messi in atto esattamente gli stessi controlli. Ma in tal caso, perché non lasciare che il protocollo rimanga Turing completo?
+Ora, si invia una transazione ad A. Così, in 51 transazioni, abbiamo un contratto che richiede 250 passaggi di calcolo. I miner potrebbero provare a rilevare tali "bombe logiche" in anticipo mantenendo un valore insieme a ciascun contratto specificando il numero massimo di passaggi computazionali che può richiedere e calcolandolo per i contratti che invocano ricorsivamente altri contratti, ma ciò richiederebbe ai miner di vietare i contratti che creano altri contratti (poiché tutti i 26 contratti di cui sopra creati ed eseguiti potrebbero essere facilmente raggruppati in un unico contratto). Un altro punto problematico riguarda il fatto che il campo dell'indirizzo di un messaggio è una variabile, quindi in generale potrebbe non essere neanche possibile sapere in anticipo quali altri contratti verranno invocati da un determinato contratto. Quindi, tutto sommato, giungiamo a una conclusione sorprendente: la Turing equivalenza è incredibilmente facile da gestire, mentre l'incompletezza di Turing è altrettanto incredibilmente difficile da gestire, a meno che non vengano messi in atto esattamente gli stessi controlli. Ma in tal caso, perché non lasciare che il protocollo rimanga Turing equivalente?
### Valuta ed emissione {#currency-and-issuance}
@@ -417,7 +435,7 @@ L'emissione avverrà secondo il seguente modello:
- Lo 0,099x dell'importo totale venduto verrà mantenuto come riserva a lungo termine.
- Lo 0,26x dell'importo totale venduto sarà assegnato ai miner ogni anno per sempre dopo quel momento.
-| Gruppo | al lancio | Dopo 1 anno | Dopo 5 anni |
+| Gruppo | Al lancio | Dopo 1 anno | Dopo 5 anni |
| ------------------------------- | --------- | ----------- | ----------- |
| Unità di valuta | 1,198X | 1,458X | 2,498X |
| Acquirenti | 83,5% | 68,6% | 40,0% |
@@ -425,77 +443,74 @@ L'emissione avverrà secondo il seguente modello:
| Riserva utilizzata post-vendita | 8,26% | 6,79% | 3,96% |
| Miner | 0% | 17,8% | 52,0% |
-**Tasso di crescita a lungo termine (in percentuale)**
+#### Tasso di crescita a lungo termine dell'offerta (in percentuale)
-![Inflazione in Ethereum](../../../whitepaper/ethereum-inflation.png)
+![Inflazione in Ethereum](./ethereum-inflation.png)
-_Nonostante l'emissione lineare della valuta, come è avvenuto nel tempo con Bitcoin, il tasso di crescita dell'offerta tende comunque a zero_
+_Nonostante l'emissione lineare della valuta, come è avvenuto con Bitcoin, nel tempo il tasso di crescita dell'offerta tende comunque allo zero._
-Le due scelte principali nel modello di cui sopra sono (1) l'esistenza e la dimensione di un pool di sovvenzioni e (2) l'esistenza di un'offerta lineare in continua crescita, anziché limitata come in Bitcoin. Il pool di sovvenzioni è giustificato come segue. Se non esistesse, e l’emissione lineare fosse ridotta a 0,217x per garantire un tasso di inflazione costante, la quantità totale di ether sarebbe 16,5% in meno e quindi ogni unità varrebbe il 19,8% in più. Di conseguenza, nell'equilibrio verrebbe acquistato il 19,8% in più di ether nella vendita, quindi ogni unità avrebbe di nuovo esattamente lo stesso valore che aveva in precedenza. L'organizzazione avrebbe inoltre 1.198x BTC, che si possono considerare come suddivisi in due parti: i BTC originali e l'ulteriore 0,198x. Quindi, questa situazione è _esattamente equivalente_ alla sovvenzione, ma con una differenza importante: l'organizzazione detiene puramente BTC e quindi non è incentivata a supportare il valore dell'unità ether.
+Le due scelte principali nel modello di cui sopra sono (1) l'esistenza e la dimensione di un pool di sovvenzioni e (2) l'esistenza di un'offerta lineare in continua crescita, anziché limitata come in Bitcoin. Il pool di sovvenzioni è giustificato come segue. Se non esistesse, e l'emissione lineare fosse ridotta a 0,217x per garantire un tasso di inflazione costante, la quantità totale di ether sarebbe inferiore del 16,5%, quindi ogni unità varrebbe il 19,8% in più. Di conseguenza, nell'equilibrio verrebbe acquistato il 19,8% in più di ether nella vendita, quindi ogni unità avrebbe di nuovo esattamente lo stesso valore che aveva in precedenza. L'organizzazione avrebbe inoltre 1,198x BTC, che si possono considerare come suddivisi in due parti: i BTC originali e l'ulteriore 0,198x. Quindi, questa situazione è _esattamente equivalente_ alla sovvenzione, ma con una differenza importante: l'organizzazione detiene puramente BTC e quindi non è incentivata a supportare il valore dell'unità ether.
-Il modello di crescita lineare permanente dell'offerta riduce il rischio di quello che alcuni considerano un'eccessiva concentrazione di ricchezza in Bitcoin, e dà agli individui che vivono in epoche presenti e future un'equa possibilità di acquistare unità di valuta, assicurando allo stesso tempo un forte incentivo a ottenere e conservare ether, perché il "tasso di crescita dell'offerta" in percentuale con il tempo tende ancora a a zero. Teorizziamo questo anche perché le monete vengono sempre perse nel tempo per negligenza, decesso, ecc. e la perdita di monete può essere modellata come percentuale dell'offerta totale annua, dove l'offerta totale di valuta in circolazione si stabilizzerà alla fine su un valore pari all'emissione annua diviso per il tasso di perdita (cioè con un tasso di perdita dell'1%, quando l'offerta raggiunge 26X, verrà eseguito il mining di 0,26X e 0,26X andrà perso ogni anno, creando un equilibrio).
+Il modello di crescita lineare permanente dell'offerta riduce il rischio di quello che alcuni considerano un'eccessiva concentrazione di ricchezza in Bitcoin, e dà agli individui che vivono in epoche presenti e future un'equa possibilità di acquistare unità di valuta, assicurando allo stesso tempo un forte incentivo a ottenere e conservare ether, perché il "tasso di crescita dell'offerta" in percentuale nel tempo tende ancora a zero. Teorizziamo questo anche perché le monete vengono sempre perse nel tempo per negligenza, decesso, ecc, e la perdita di monete può essere modellata come percentuale dell'offerta totale annua, dove l'offerta totale di valuta in circolazione si stabilizzerà alla fine su un valore pari all'emissione annua diviso per il tasso di perdita (cioè con un tasso di perdita dell'1%, quando l'offerta raggiunge 26X, verrà eseguito il mining di 0.26X e 0.26X andrà perso ogni anno, creando un equilibrio).
-Si noti che, in futuro, è probabile che Ethereum passerà a un modello proof-of-stake per motivi di sicurezza, riducendo l'obbligo di emissione a un valore compreso tra 0 e 0,05X l'anno. Nel caso in cui l'organizzazione Ethereum perda fondi o per qualsiasi altro motivo scompaia, lasciamo aperto un "contratto sociale": chiunque ha il diritto di creare un candidato futuro di Ethereum, all'unica condizione che la quantità di ether deve essere al massimo uguale a `60102216 * (1,198 + 0,26 * n)` dove `n` è il numero di anni dopo il blocco genesi. I creatori sono liberi di vendere tramite crowd-selling o assegnare in altro modo una parte o tutta la differenza tra l'espansione dell'offerta basata su PoS e l'espansione massima consentita dell'offerta per finanziare lo sviluppo. Gli upgrade candidati che non sono conformi al contratto sociale possono creare diramazioni giustificate verso versioni conformi.
+Occorre notare che, in futuro, è probabile che Ethereum passerà a un modello proof-of-stake per motivi di sicurezza, riducendo l'obbligo di emissione a un valore compreso tra 0 e 0,05X l'anno. Nel caso in cui l'organizzazione Ethereum perda fondi o per qualsiasi altro motivo scompaia, lasciamo aperto un "contratto sociale": chiunque ha il diritto di creare un candidato futuro di Ethereum, all'unica condizione che la quantità di ether debba essere al massimo uguale a`60102216 * (1,198 + 0,26 * n)` dove `n` è il numero di anni dopo il blocco genesi. I creatori sono liberi di vendere tramite crowd-selling o assegnare in altro modo una parte o tutta la differenza tra l'espansione dell'offerta basata su PoS e l'espansione massima consentita dell'offerta per finanziare lo sviluppo. Gli upgrade candidati che non sono conformi al contratto sociale possono creare diramazioni giustificate verso versioni conformi.
### Centralizzazione del mining {#mining-centralization}
-L'algoritmo di mining di Bitcoin si basa sul fatto che i miner calcolano SHA256 su versioni leggermente modificate dell'intestazione del blocco milioni di volte, in continuazione, fino a quando alla fine trovano un nodo con una versione di hash inferiore al target (attualmente circa 2192). Tuttavia, questo algoritmo di mining è vulnerabile a due forme di centralizzazione. In primo luogo, l'ecosistema di mining è attualmente dominato da ASIC (circuiti integrati specifici per applicazioni), chip di computer progettati specificamente per il mining su Bitcoin e quindi migliaia di volte più efficienti per questo compito. Significa che il mining su Bitcoin non è più un'attività altamente decentralizzata ed egualitaria, che richiede milioni di dollari di capitale per partecipare in modo efficace. In secondo luogo, la maggior parte dei miner Bitcoin non esegue realmente la convalida del blocco localmente, ma si basa su un pool di mining centralizzato che fornisce le intestazioni dei blocchi. Questa situazione è probabilmente anche peggiore: nel momento in cui questo documento è stato scritto, i tre principali pool di mining controllano indirettamente circa il 50% della potenza di elaborazione nella rete Bitcoin, anche se questo è mitigato dal fatto che i miner possono passare ad altri pool di mining se un pool o una coalizione tenta un attacco del 51%.
+L'algoritmo di mining di Bitcoin si basa sul fatto che i miner calcolano SHA256 su versioni leggermente modificate dell'intestazione del blocco milioni di volte, in continuazione, fino a quando alla fine trovano un nodo con una versione di hash inferiore al target (attualmente circa 2192). Tuttavia, questo algoritmo di mining è vulnerabile a due forme di centralizzazione. In primo luogo, l'ecosistema di mining è attualmente dominato da ASIC (circuiti integrati specifici per applicazioni), chip di computer progettati specificamente per il mining su Bitcoin e quindi migliaia di volte più efficienti per questo compito. Significa che il mining su Bitcoin non è più un'attività altamente decentralizzata ed egualitaria, che richiede milioni di dollari di capitale per partecipare in modo efficace. In secondo luogo, la maggior parte dei miner Bitcoin non esegue realmente la convalida del blocco localmente, ma si basa su un pool di mining centralizzato che fornisce le intestazioni dei blocchi. Questo problema è probabilmente anche peggiore: mentre scriviamo il presente documento, i tre principali pool di mining controllano indirettamente circa il 50% della potenza di elaborazione nella rete Bitcoin, anche se questo è mitigato dal fatto che i miner possono passare ad altri pool di mining se un pool o una coalizione tenta un attacco del 51%.
-L'intento corrente di Ethereum è di utilizzare un algoritmo di mining in cui i miner devono recuperare dati casuali dallo stato, calcolare alcune transazioni selezionate casualmente dagli ultimi N blocchi della blockchain e restituire l'hash del risultato. Questo ha due vantaggi importanti. In primo luogo, i contratti Ethereum possono includere qualsiasi tipo di calcolo, quindi un ASIC Ethereum sarebbe essenzialmente un ASIC per il calcolo generale, cioè una CPU migliore. In secondo luogo, il mining richiede l'accesso all'intera blockchain e costringe quindi i miner a memorizzare l'intera blockchain e ad essere almeno in grado di verificare ogni transazione. Questo elimina la necessità di avere pool di mining centralizzati. Anche se i pool di mining possono comunque svolgere il ruolo legittimo di uniformare la casualità della distribuzione delle ricompense, questa funzione può essere svolta altrettanto bene da pool peer-to-peer senza controllo centrale.
+L'intento corrente di Ethereum è di utilizzare un algoritmo di mining in cui i miner devono recuperare dati casuali dallo stato, calcolare alcune transazioni selezionate casualmente dagli ultimi N blocchi della blockchain e restituire l'hash del risultato. Questo ha due vantaggi importanti. In primo luogo, i contratti Ethereum possono includere qualsiasi tipo di calcolo, quindi un ASIC Ethereum sarebbe essenzialmente un ASIC per il calcolo generale, cioè una CPU migliore. In secondo luogo, il mining richiede l'accesso all'intera blockchain e costringe quindi i miner a memorizzare l'intera blockchain e ad essere almeno in grado di verificare ogni transazione. Ciò elimina la necessità di avere pool di mining centralizzati. Anche se i pool di mining possono comunque svolgere il ruolo legittimo di uniformare la casualità della distribuzione delle ricompense, questa funzione può essere svolta altrettanto bene da pool peer-to-peer senza controllo centrale.
-Questo modello non è testato e si possono presentare difficoltà lungo il percorso nell'evitare determinate ottimizzazioni intelligenti quando si utilizza l'esecuzione del contratto come algoritmo di mining. Tuttavia, una caratteristica particolarmente interessante di questo algoritmo è che permette a chiunque di "avvelenare il pozzo", introducendo un gran numero di contratti nella blockchain appositamente progettati per ostacolare determinati ASIC. I produttori di ASIC sono incentivati economicamente a utilizzare un trucco di questo tipo per attaccarsi a vicenda. Per questo motivo, la soluzione che stiamo sviluppando è in ultima analisi una soluzione economica adattabile piuttosto che puramente tecnica.
+Questo modello non è testato e si possono presentare difficoltà lungo il percorso per evitare determinate ottimizzazioni intelligenti quando si utilizza l'esecuzione del contratto come algoritmo di mining. Tuttavia, una caratteristica particolarmente interessante di questo algoritmo è che permette a chiunque di "avvelenare il pozzo", introducendo un gran numero di contratti nella blockchain appositamente progettati per ostacolare determinati ASIC. I produttori di ASIC sono incentivati economicamente a utilizzare un trucco di questo tipo per attaccarsi a vicenda. Per questo motivo, la soluzione che stiamo sviluppando è in ultima analisi una soluzione economica adattabile piuttosto che puramente tecnica.
### Scalabilità {#scalability}
-Una problematica sollevata spesso in riferimento a Ethereum è la questione della scalabilità. Come Bitcoin, Ethereum ha lo svantaggio che ogni transazione deve essere elaborata da ogni nodo della rete. Con Bitcoin, la dimensione della blockchain corrente rimane a circa 15 GB, e cresce di circa 1 MB all'ora. Se la rete Bitcoin dovesse elaborare le 2000 transazioni di Visa al secondo, crescerebbe di 1 MB ogni tre secondi (1 GB all'ora, 8 TB all'anno). È probabile che Ethereum sperimenti un modello di crescita simile, peggiorato dal fatto che ci saranno molte applicazioni basate sulla blockchain Ethereum e non solo una valuta, come nel caso di Bitcoin, ma migliorato dal fatto che i nodi completi di Ethereum devono memorizzare solo lo stato e non l'intera cronologia della blockchain.
+Una problematica sollevata spesso in riferimento a Ethereum è la questione della scalabilità. Come Bitcoin, Ethereum ha lo svantaggio che ogni transazione deve essere elaborata da ogni nodo della rete. Con Bitcoin, la dimensione della blockchain corrente rimane a circa 15 GB, e cresce di circa 1 MB all'ora. Se la rete Bitcoin dovesse elaborare le 2.000 transazioni al secondo di Visa, crescerebbe di 1 MB ogni tre secondi (1 GB all'ora, 8 TB all'anno). È probabile che Ethereum sperimenti un modello di crescita simile, peggiorato dal fatto che ci saranno molte applicazioni basate sulla blockchain Ethereum e non solo una valuta, come nel caso di Bitcoin, ma migliorato dal fatto che i nodi completi di Ethereum devono memorizzare solo lo stato e non l'intera cronologia della blockchain.
-Il problema legato a una dimensione della blockchain così elevata è il rischio di centralizzazione. Se la dimensione della blockchain aumenta ad esempio a 100 TB, lo scenario probabile sarebbe che solo un numero molto esiguo di grandi imprese eseguirebbe nodi completi, mentre tutti gli utenti abituali utilizzerebbero nodi SPV leggeri. In una situazione del genere, si presenta il problema potenziale che i nodi completi potrebbero aggregarsi e accordarsi per aggirare il sistema in qualche modo redditizio (ad esempio cambiando la ricompensa del blocco e attribuendosi BTC). I nodi leggeri non avrebbero modo di rilevare immediatamente la situazione. Naturalmente, rimarrebbe almeno un nodo completo onesto e dopo alcune ore le informazioni sulla frode si presenterebbero attraverso canali come Reddit. Ma a quel punto sarebbe troppo tardi; spetterebbe agli utenti standard organizzare uno sforzo per bandire i blocchi interessati, un problema di coordinamento massiccio e probabilmente impraticabile su una scala simile, che corrisponderebbe all'esclusione di un attacco del 51% riuscito. Nel caso di Bitcoin, questo è attualmente un problema, ma esiste una modifica della blockchain [suggerita da Peter Todd](https://web.archive.org/web/20140623061815/http://sourceforge.net/p/bitcoin/mailman/message/31709140/) che mitigherà la situazione.
+Il problema legato a una dimensione della blockchain così elevata è il rischio di centralizzazione. Se la dimensione della blockchain aumenta ad esempio a 100 TB, lo scenario probabile sarebbe che solo un numero molto esiguo di grandi imprese eseguirebbe nodi completi, mentre tutti gli utenti abituali utilizzerebbero nodi SPV leggeri. In una situazione del genere, si presenta il problema potenziale che i nodi completi potrebbero aggregarsi e accordarsi per aggirare il sistema in qualche modo redditizio (ad esempio cambiando la ricompensa del blocco e attribuendosi BTC). I nodi leggeri non avrebbero modo di rilevare immediatamente la situazione. Certo, probabilmente esisterebbe almeno un full node onesto, e dopo poche ore le informazioni sulla frode uscirebbero attraverso canali come Reddit, ma a quel punto sarebbe troppo tardi: spetterebbe agli utenti ordinari organizzare uno sforzo per inserire nella lista nera i blocchi dati, un problema di coordinamento enorme e probabilmente irrealizzabile su una scala simile a quella di portare a termine un attacco riuscito del 51%. Nel caso di Bitcoin, questo è attualmente un problema, ma esiste una modifica della blockchain [suggerita da Peter Todd](https://web.archive.org/web/20140623061815/http://sourceforge.net/p/bitcoin/mailman/message/31709140/) che allevierà il problema.
-A breve termine, Ethereum utilizzerà due strategie aggiuntive per affrontare il problema. In primo luogo, a causa degli algoritmi di mining basati sulla blockchain, almeno ogni miner sarà costretto a essere un nodo completo, creando un limite inferiore al numero di nodi completi. In secondo luogo (ancora più importante), includeremo però una radice intermedia dell'albero di stati nella blockchain dopo l'elaborazione di ogni transazione. Anche se la convalida dei blocchi è centralizzata, a patto che sia presente un nodo di verifica onesto, il problema della centralizzazione può essere aggirato tramite un protocollo di verifica. Se un miner pubblica un blocco non valido, questo blocco sarà formattato in modo scorretto oppure lo stato `S[n]` non sarà corretto. Dal momento che `S[0]` è sempre corretto, ci deve essere un primo stato `S[i]` errato, dove `S[i-1]` è corretto. Il nodo di verifica fornirebbe l'indice `i`, insieme a una "prova di non validità" costituita dal sottoinsieme dei nodi dell'albero di Patricia che devono elaborare `APPLY(S[i-1], X[i]) -> S[i]`. I nodi potrebbero usare quei nodi di Patricia per eseguire quella parte del calcolo e notare che il `S[i]` generato non corrisponde al `S[i]` fornito.
+A breve termine, Ethereum utilizzerà due strategie aggiuntive per affrontare il problema. In primo luogo, a causa degli algoritmi di mining basati sulla blockchain, almeno ogni miner sarà costretto a essere un nodo completo, creando un limite inferiore al numero di nodi completi. In secondo luogo, ancora più importante, includeremo una radice intermedia dell'albero di stati nella blockchain dopo l'elaborazione di ogni transazione. Anche se la convalida dei blocchi è centralizzata, a patto che sia presente un nodo di verifica onesto, il problema della centralizzazione può essere aggirato tramite un protocollo di verifica. Se un miner pubblica un blocco non valido, questo blocco o è formattato in modo scorretto oppure lo stato `S[n]` non è corretto. Dal momento che `S[0]` è sempre corretto, ci deve essere un primo stato `S[i]` errato, dove `S[i-1]` è corretto. Il nodo di verifica fornirebbe l'indice `i`, insieme a una "prova di non validità" costituita dal sottoinsieme dei nodi del "Patricia tree" che devono elaborare `APPLY(S[i-1], X[i]) -> S[i]`. I nodi potrebbero usare i suddetti nodi per eseguire quella parte del calcolo e notare che il valore `S[i]` generato non corrisponde al valore `S[i]` fornito.
-Un altro attacco più sofisticato coinvolgerebbe miner malevoli che pubblicano blocchi incompleti. In questo caso non esistono nemmeno informazioni complete per determinare se i blocchi sono validi o meno. La soluzione a questa situazione è un protocollo challenge-response: nodi di verifica emettono "challenge" sotto forma di indici delle transazioni target; al ricevimento di un nodo, un nodo leggero considera il blocco non attendibile fino a quando un altro nodo (il miner o un altro autore della verifica) fornisce un sottoinsieme dei nodi di Patricia come prova di validità.
+Un altro attacco più sofisticato coinvolgerebbe miner malintenzionati che pubblicano blocchi incompleti. In questo caso non esistono nemmeno informazioni complete per determinare se i blocchi sono validi o meno. La soluzione a questo problema è un protocollo challenge-response: nodi di verifica emettono "challenge" sotto forma di indici delle transazioni target; al ricevimento di un nodo, un nodo leggero considera il blocco non attendibile fino a quando un altro nodo, il miner o un altro autore della verifica, fornisce un sottoinsieme dei nodi di Patricia come prova di validità.
## Conclusioni {#conclusion}
-Il protocollo Ethereum è stato concepito originariamente come una versione aggiornata di una criptovaluta, che fornisce funzionalità avanzate come deposito sulla blockchain, limiti di prelievo, contratti finanziari, mercati per il gioco d'azzardo e simili attraverso un linguaggio di programmazione altamente generalizzato. Il protocollo Ethereum non "supporta" direttamente nessuna delle applicazioni, ma l'esistenza di un linguaggio di programmazione Turing completo significa che possono essere creati contratti arbitrari teoricamente per qualsiasi tipo di transazione o applicazione. L'aspetto più interessante di Ethereum, però, è che il protocollo va oltre la valuta. Protocolli che riguardano storage decentralizzato di file, calcolo decentralizzato e mercati predittivi decentralizzati, tra decine di altri concetti, hanno il potenziale di aumentare sostanzialmente l'efficienza dell'industria del calcolo e fornire un'enorme spinta ad altri protocolli peer-to-peer aggiungendo per la prima volta un livello di natura economica. Per concludere, è presente anche una gamma notevole di applicazioni che non hanno nulla a che fare con il denaro.
+Il protocollo Ethereum è stato concepito originariamente come una versione aggiornata di una criptovaluta, che fornisce funzionalità avanzate come deposito sulla blockchain, limiti di prelievo, contratti finanziari, mercati per il gioco d'azzardo e simili attraverso un linguaggio di programmazione altamente generalizzato. Il protocollo Ethereum non "supporta" direttamente nessuna delle applicazioni, ma l'esistenza di un linguaggio di programmazione Turing equivalente significa che possono essere creati contratti arbitrari teoricamente per qualsiasi tipo di transazione o applicazione. L'aspetto più interessante di Ethereum, però, è che il protocollo va oltre la valuta. Protocolli che riguardano l'archivio decentralizzato di file, il calcolo decentralizzato e i mercati predittivi decentralizzati, tra decine di altri concetti, hanno il potenziale di aumentare sostanzialmente l'efficienza dell'industria del calcolo e fornire un'enorme spinta ad altri protocolli peer-to-peer aggiungendo per la prima volta un livello di natura economica. Per concludere, è presente anche una gamma notevole di applicazioni che non hanno nulla a che fare con il denaro.
-Il concetto di funzione di transizione arbitraria tra stati implementato dal protocollo di Ethereum fornisce una piattaforma con un potenziale unico: anziché essere un protocollo chiuso e con un unico scopo, pensato per una gamma specifica di applicazioni di storage dei dati, gioco d'azzardo o finanza, Ethereum è aperto per natura e crediamo che sia altamente idoneo per essere utilizzato nei prossimi anni base per moltissimi protocolli di natura sia finanziaria che non.
+Il concetto di funzione di transizione arbitraria tra stati implementato dal protocollo di Ethereum fornisce una piattaforma con un potenziale unico; anziché essere un protocollo chiuso e con un unico scopo, pensato per una gamma specifica di applicazioni di archiviazione dei dati, gioco d'azzardo o finanza, Ethereum è aperto per natura e crediamo che sia altamente idoneo per essere utilizzato nei prossimi anni come base per moltissimi protocolli di natura finanziaria e non.
-## Note e ulteriori letture {#notes-and-further-reading}
+## Note e articoli per approfondire {#notes-and-further-reading}
### Note {#notes}
-1. Un lettore con esperienza potrebbe far notare che in realtà un indirizzo Bitcoin è l'hash della chiave pubblica della curva ellittica e non la chiave pubblica stessa. Tuttavia, in realtà è perfettamente legittimo dal punto di vista della terminologia della crittografia fare riferimento all'hash pubkey hash come chiave pubblica. La crittografia di Bitcoin infatti può essere considerata un algoritmo di firma digitale personalizzato, dove la chiave pubblica è costituita dall'hash della pubkey ECC, la firma è costituita dalla pubkey ECC concatenata con la firma ECC e l'algoritmo di verifica comporta il controllo della pubkey ECC nella firma rispetto all'hash della pubkey ECC fornito come chiave pubblica e quindi la verifica della firma ECC sulla base della pubkey ECC.
-2. Tecnicamente, la mediana degli 11 blocchi precedenti.
-3. Il protocollo Ethereum deve essere il più possibile semplice e pratico, ma può essere necessario avere un livello abbastanza elevato di complessità, ad esempio in caso di necessità di ampliamento, per interiorizzare i costi di storage, larghezza di banda e I/O, per motivi di sicurezza, privacy, trasparenza ecc. Laddove sia necessaria una certa complessità, la documentazione deve essere il più chiara, concisa e aggiornata possibile, in modo che chi non conosce Ethereum possa imparare ad usarlo e diventare esperto.
-4. Vedere il [Yellow Paper](https://ethereum.github.io/yellowpaper/paper.pdf) della macchina virtuale Ethereum (utile come specifica e come riferimento per creare un client Ethereum da zero), mentre sono disponibili anche molti argomenti in [Ethereum wiki](https://github.com/ethereum/wiki/wiki), come lo sviluppo con sharding, lo sviluppo di base, lo sviluppo di dapp, la ricerca, Casper R&D e i protocolli di rete. A scopo di ricerca e possibile implementazione futura c'è [ethresearch.ch](https://ethresear.ch).
-5. Un altro modo per esprimere questo concetto è l'astrazione. L'[ultima roadmap](https://ethresear.ch/t/sharding-phase-1-spec/1407/67) sta pianificando di astrarre l'esecuzione, in modo da permettere ai motori di esecuzione di non seguire necessariamente una specifica canonica, ma per esempio di permettere la personalizzazione per un'applicazione specifica o per uno shard. (Questa eterogeneità dei motori di esecuzione non è indicata esplicitamente nella roadmap. È previsto anche lo sharding eterogeneo, teorizzato da Vlad Zamfir.)
-6. Internamente, sia 2 che "CHARLIE" sono numeri, dove quest'ultimo è una rappresentazione big-endian in base 256. I numeri possono essere da 0 a 2256-1.
+1. Un lettore con esperienza potrebbe notare che in realtà un indirizzo Bitcoin è l'hash della chiave pubblica della curva ellittica e non la chiave pubblica stessa. Tuttavia, in realtà è perfettamente legittimo dal punto di vista della terminologia della crittografia fare riferimento all'hash della chiave pubblica come alla chiave pubblica stessa. Questo perché la crittografia di Bitcoin può essere considerata un algoritmo di firma digitale personalizzato, in cui la chiave pubblica è costituita dall'hash della chiave pubblica ECC, la firma è costituita dalla chiave pubblica ECC concatenata con la firma ECC e l'algoritmo di verifica prevede il controllo della chiave pubblica ECC nella firma rispetto all'hash della chiave pubblica ECC, fornito come chiave pubblica e quindi verificando la firma ECC rispetto alla chiave pubblica ECC.
+2. Tecnicamente, la mediana degli 11 blocchi precedenti.
+3. Internamente, sia 2 che "CHARLIE" sono numeri[fn3](#notes), con quest'ultimo nella rappresentazione di base 256 big-endian. I numeri possono essere da 0 a 2256-1.
### Letture consigliate {#further-reading}
-1. [Intrinsic value](http://bitcoinmagazine.com/8640/an-exploration-of-intrinsic-value-what-it-is-why-bitcoin-doesnt-have-it-and-why-bitcoin-does-have-it/)
-2. [Smart property](https://en.bitcoin.it/wiki/Smart_Property)
-3. [Smart contracts](https://en.bitcoin.it/wiki/Contracts)
-4. [B-money](http://www.weidai.com/bmoney.txt)
-5. [Reusable proofs of work](http://www.finney.org/~hal/rpow/)
-6. [Secure property titles with owner authority](http://szabo.best.vwh.net/securetitle.html)
-7. [Bitcoin whitepaper](http://bitcoin.org/bitcoin.pdf)
-8. [Namecoin](https://namecoin.org/)
-9. [Zooko's triangle](https://wikipedia.org/wiki/Zooko's_triangle)
-10. [Colored coins whitepaper](https://docs.google.com/a/buterin.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lIzrTLuoWu2z1BE/edit)
-11. [Mastercoin whitepaper](https://github.com/mastercoin-MSC/spec)
-12. [Decentralized autonomous corporations, Bitcoin Magazine](http://bitcoinmagazine.com/7050/bootstrapping-a-decentralized-autonomous-corporation-part-i/)
-13. [Simplified payment verification](https://en.bitcoin.it/wiki/Scalability#Simplifiedpaymentverification)
-14. [Merkle trees](https://wikipedia.org/wiki/Merkle_tree)
-15. [Patricia trees](https://wikipedia.org/wiki/Patricia_tree)
+1. [Valore intrinseco](http://bitcoinmagazine.com/8640/an-exploration-of-intrinsic-value-what-it-is-why-bitcoin-doesnt-have-it-and-why-bitcoin-does-have-it/)
+2. [Proprietà intelligente](https://en.bitcoin.it/wiki/Smart_Property)
+3. [Contratti intelligenti](https://en.bitcoin.it/wiki/Contracts)
+4. [B-money](http://www.weidai.com/bmoney.txt)
+5. [Proof-of-work riutilizzabili](https://nakamotoinstitute.org/finney/rpow/)
+6. [Titoli di proprietà sicuri con l'autorità del proprietario](https://nakamotoinstitute.org/secure-property-titles/)
+7. [Whitepaper Bitcoin](http://bitcoin.org/bitcoin.pdf)
+8. [Namecoin](https://namecoin.org/)
+9. [Triangolo di Zooko](https://wikipedia.org/wiki/Zooko's_triangle)
+10. [Whitepaper Colored coins](https://docs.google.com/a/buterin.com/document/d/1AnkP_cVZTCMLIzw4DvsW6M8Q2JC0lIzrTLuoWu2z1BE/edit)
+11. [Whitepaper Mastercoin](https://github.com/mastercoin-MSC/spec)
+12. [Aziende autonome decentralizzate, Bitcoin Magazine](http://bitcoinmagazine.com/7050/bootstrapping-a-decentralized-autonomous-corporation-part-i/)
+13. [Verifica del pagamento semplificata](https://en.bitcoin.it/wiki/Scalability#Simplifiedpaymentverification)
+14. [Albero di Merkle](https://wikipedia.org/wiki/Merkle_tree)
+15. [Patricia tree](https://wikipedia.org/wiki/Patricia_tree)
16. [GHOST](https://eprint.iacr.org/2013/881.pdf)
-17. [StorJ and Autonomous Agents, Jeff Garzik](http://garzikrants.blogspot.ca/2013/01/storj-and-bitcoin-autonomous-agents.html)
-18. [Mike Hearn on Smart Property at Turing Festival](http://www.youtube.com/watch?v=Pu4PAMFPo5Y)
+17. [StorJ e agenti autonomi, Jeff Garzik](http://garzikrants.blogspot.ca/2013/01/storj-and-bitcoin-autonomous-agents.html)
+18. [Mike Hearn sulla proprietà intelligente al Turing Festival](http://www.youtube.com/watch?v=Pu4PAMFPo5Y)
19. [Ethereum RLP](https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-RLP)
-20. [Ethereum Merkle Patricia trees](https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-Patricia-Tree)
-21. [Peter Todd on Merkle sum trees](http://sourceforge.net/p/bitcoin/mailman/message/31709140/)
+20. [Alberi di Merkle e Patricia di Ethereum](https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-Patricia-Tree)
+21. [Peter Todd sugli alberi della somma Merkle](http://sourceforge.net/p/bitcoin/mailman/message/31709140/)
-_Per la cronologia del white paper, vedere https://github.com/ethereum/wiki/blob/old-before-deleting-all-files-go-to-wiki-wiki-instead/old-whitepaper-for-historical-reference.md_
+_Per la storia del whitepaper, vedere [questo wiki](https://github.com/ethereum/wiki/blob/old-before-deleting-all-files-go-to-wiki-wiki-instead/old-whitepaper-for-historical-reference.md)._
-_Ethereum, come molti progetti software open source basati su una comunità, si è evoluto dai primi tempi. Per conoscere gli ultimi sviluppi di Ethereum e come vengono apportate modifiche al protocollo, consigliamo di consultare [questa guida](/learn/)._
+_Ethereum, come molti progetti di software open source basati su una comunità, si è evoluto dal suo lancio iniziale. Per conoscere gli ultimi sviluppi di Ethereum e come vengono apportate modifiche al protocollo, consigliamo di consultare [questa guida](/learn/)._
diff --git a/src/content/translations/ja/developers/docs/accounts/index.md b/src/content/translations/ja/developers/docs/accounts/index.md
new file mode 100644
index 00000000000..3cc4c1eeb3a
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/accounts/index.md
@@ -0,0 +1,125 @@
+---
+title: イーサリアムアカウント
+description: イーサリアムアカウントの説明 - データ構造と鍵ペア暗号との関係
+lang: ja
+---
+
+イーサリアムアカウントとは、イーサリアム上でトランザクションを送信できる Ether (ETH) 残高を持つエンティティです。 アカウントはユーザーが管理し、スマートコントラクトとしてデプロイすることができます。
+
+## 前提知識 {#prerequisites}
+
+この記事は初心者向けに記載していますが、 このページの理解を深めるために、まずは [イーサリアム入門](/developers/docs/intro-to-ethereum/)を読むことをお勧めします。
+
+## アカウントの種類 {#types-of-account}
+
+イーサリアムには 2 種類のアカウントがあります。
+
+- 外部所有アカウント(EOA) – 秘密鍵の保有者により管理
+- コントラクトアカウント – ネットワークにデプロイされたスマートコントラクトでコードにより制御される。 [スマートコントラクト](/developers/docs/smart-contracts/)の詳細
+
+両方のアカウントで次のことができます。
+
+- ETH やトークンの受信、保有、送信
+- 展開されたスマートコントラクトとのやりとり
+
+### 主な相違点 {#key-differences}
+
+**外部所有アカウント**
+
+- アカウント作成は無償
+- トランザクションの開始が可能
+- 外部所有アカウント間のトランザクションは、ETH やトークンの送金のみ可能
+- アカウントの活動をコントロールする公開鍵と秘密鍵という暗号鍵のペアで構成
+
+**コントラクトアカウント**
+
+- コントラクト作成は有償(ネットワークストレージを使用するため)
+- トランザクションの受信に応じてのみ、トランザクションを送信可能
+- 外部アカウントからコントラクトアカウントへのトランザクションは、トークンの転送や新しいコントラクト作成まで、さまざまなアクションを実行するコードをトリガー可能
+- コントラクトアカウントには秘密鍵がなく スマートコントラクトのコードのロジックによって制御される
+
+## アカウントの詳細 {#an-account-examined}
+
+イーサリアムアカウントには 4 つのフィールドがあります。
+
+- `nonce` – アカウントから送信されたトランザクションの総数を示すカウンター。 これにより、トランザクションは一度だけ実行される。 コントラクトアカウントでは、この数字はアカウントで作成されたコントラクト数を表す。
+- `balance` - アドレスが所有する wei 額。 wei は ETH の最小単位で、1ETH は 1e+18wei。
+- `codeHash` - このハッシュは、イーサリアム仮想マシン(EVM)のアカウントの*コード*を指す。 コントラクトアカウントには、さまざまな操作を行えるコードの断片がプログラムされており、 この EVM コードはアカウントにメッセージ呼び出しがあった場合に実行される。 他のアカウントのフィールドとは異なり、変更することはできない。 このようなコードの断片はすべて、対応するハッシュの状態データベースに含まれ、後で取得可能。 このハッシュ値が codeHash として知られている。 外部所有アカウントの場合、codeHash フィールドは空の文字列のハッシュとなる。
+- `storageRoot` – ストレージハッシュとも呼ばれる。 アカウントのストレージ内容をコード化する Merkle Patricia ツリーのルートノードの 256 ビットハッシュ(256 ビット整数値間のマッピング)で、256 ビット整数キーの Keccak 256 ビットハッシュから RLP エンコードされた 256 ビット整数値へのマッピングとしてデジタルツリーの中へコード化される。 このツリーは、このアカウントのストレージコンテンツのハッシュであり、デフォルトは空です。
+
+![アカウントの構成図](./accounts.png) _ [イーサリアム EVM](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)からの図解_
+
+## 外部所有アカウントと鍵のペア {#externally-owned-accounts-and-key-pairs}
+
+アカウントは、公開鍵と秘密鍵からなる暗号鍵のペアで構成されています。 トランザクションが送信者によって実際に署名されていることを証明し、偽造を防ぐためです。 秘密鍵はトランザクションの署名に使用されるもので、アカウントに紐づく資金を管理する権限を与えます。 暗号通貨を実際に保有することはなく、秘密鍵を保有するだけで、資金は常にイーサリアム台帳にあります。
+
+これにより、トランザクションの送信者を常に確認することができるため、悪意のある者により偽のトランザクションをブロードキャストされることを防ぎます。
+
+仮に Alice が自分のアカウントから Ether を Bob のアカウントに送金するとしましょう。Alice はトランザクションリクエストを作成し、検証するためネットワークに送信する必要があります。 イーサリアムの公開鍵暗号により、Alice が元々トランザクションリクエストを開始したことを証明できます。 暗号化メカニズムがなかったとすると、 悪意のある者により「Alice のアカウントから 5 ETH を Eve のアカウントに送信」のような要求を公に送信することができ、それが Alice からのリクエストでないことを確認することができなくなります。
+
+## アカウントの作成 {#account-creation}
+
+アカウントを作成したい場合、ほとんどのライブラリはランダムな秘密鍵を生成します。
+
+秘密鍵は 64 文字で構成されており、パスワードで暗号化することができます。
+
+例:
+
+`fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd036415f`
+
+公開鍵は、秘密鍵から[楕円曲線 DSA](https://wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm)を用いて生成されます。 公開鍵の keccak-256 ハッシュの末尾 20 バイトに`0x` を先頭に追加することで、アカウントの公開アドレスを取得できます。
+
+次に GETH の`personal_newAccount`を使用してコンソールにアカウントを作成する例を示します。
+
+```go
+> personal.newAccount()
+Passphrase:
+Repeat passphrase:
+"0x5e97870f263700f46aa00d967821199b9bc5a120"
+
+> personal.newAccount("h4ck3r")
+"0x3d80b31a78c30fc628f20b2c89d7ddbf6e53cedc"
+```
+
+[GETH のドキュメント](https://geth.ethereum.org/docs)
+
+秘密鍵から新しい公開鍵を生成することは可能ですが、公開鍵から秘密鍵を生成することはできません。 これは**秘密**の名前が示すように、 秘密鍵を秘密に保つことが不可欠であることを意味しています。
+
+署名を出力するメッセージとトランザクションに署名するには秘密鍵が必要です。 他者はそのメッセージの発信者を証明するための署名を取り出すことができます。 アプリケーションで、javascript ライブラリを使用してトランザクションをネットワークに送信できます。
+
+## コントラクトアカウント {#contract-accounts}
+
+コントラクトアカウントも、 42 文字の 16 進数のアドレスを持っています。
+
+例:
+
+`0x06012c8cf97bead5deae237070f9587f8e7a266d`
+
+通常、コントラクトアドレスは、コントラクトがイーサリアムブロックチェーンにデプロイされるときに与えられます。 アドレスは作成者のアドレスとそのアドレスから送信されたトランザクション数(nonce)から作られます。
+
+## バリデータ鍵 {#validators-keys}
+
+イーサリアムにはもう 1 種類の鍵があり、これはイーサリアムがプルーフ・オブ・ワークからプルーフ・オブ・ステークに基づくコンセンサスに切り替えた際に導入されたものです。 「BLS」鍵で、バリデータを識別するために使用されます。 これらの鍵は効率的に集約され、ネットワークがコンセンサスに至るまでに必要な帯域幅を削減できます。 この鍵集約がなければ、バリデータの最小ステーク額ははるかに高くなってしまいます。
+
+[バリデータ鍵の詳細](/developers/docs/consensus-mechanisms/pos/keys/)
+
+## ウォレットについて {#a-note-on-wallets}
+
+アカウントはウォレットではありません。 アカウントはユーザーが所有するイーサリアムアカウントの鍵ペアです。 ウォレットは、イーサリアムアカウントとやり取りできるインターフェイス、またはアプリケーションのことです。
+
+## ビジュアルデモ {#a-visual-demo}
+
+ハッシュ関数と鍵ペアに関する Austin の説明動画をご覧ください。
+
+
+
+
+
+## 参考文献 {#further-reading}
+
+_役に立つコミュニティリソースをご存知の場合は、 ページを編集して追加してください。_
+
+## 関連トピック {#related-topics}
+
+- [スマートコントラクト](/developers/docs/smart-contracts/)
+- [トランザクション](/developers/docs/transactions/)
diff --git a/src/content/translations/ja/developers/docs/apis/backend/index.md b/src/content/translations/ja/developers/docs/apis/backend/index.md
new file mode 100644
index 00000000000..88f9ccf4bf2
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/apis/backend/index.md
@@ -0,0 +1,127 @@
+---
+title: バックエンドAPIライブラリ
+description: アプリケーションからブロックチェーンへやりとりできるイーサリアムクライアントAPIの紹介。
+lang: ja
+---
+
+ソフトウェアアプリケーションがイーサリアムブロックチェーンとやりとりを行うには (例: ブロックチェーンデータの読み込み、トランザクションの送信など) 、イーサリアムノードに接続する必要があります。
+
+この目的のために、すべてのイーサリアムクライアントは[JSON-RPC](/developers/docs/apis/json-rpc/)の仕様を実装しています。そのため、アプリケーションは統一された[メソッド](/developers/docs/apis/json-rpc/#json-rpc-methods)のセットを使用できます。
+
+もし特定のプログラミング言語を使用してイーサリアムノードに接続したい場合には、独自のソリューションのほかに公開されている既存のライブライを使用することでより簡単に実装できます。 これらのライブラリにより、デベロッパーは直感的な 1 行のメソッドを作成するだけで、イーサリアムとやり取りする JSON-RPC リクエストを (内部的に) 初期化できるようになります。
+
+## 前提知識 {#prerequisites}
+
+[イーサリアムスタック](/developers/docs/ethereum-stack/) と [イーサリアムクライアント](/developers/docs/nodes-and-clients/)も内容を理解するのに役立ちます。
+
+## ライブラリの利点 {#why-use-a-library}
+
+これらのライブラリは、イーサリアムノードと直接やり取りする複雑な大部分を抽象化します。 また、ユーティリティ関数 (ETH を Gwei に変換する関数など) も提供されています。そのため、デベロッパーは複雑なイーサリアムクライアントの作業に費やす時間を削減でき、自身のアプリケーションの独自機能の開発作業に専念できます。
+
+## 利用可能なライブラリ {#available-libraries}
+
+**Alchemy -** **_イーサリアム開発プラットフォーム_**
+
+- [alchemy.com](https://www.alchemy.com/)
+- [ドキュメント](https://docs.alchemyapi.io/)
+- [GitHub](https://github.com/alchemyplatform)
+- [Discord](https://discord.com/invite/A39JVCM)
+
+**BlockCypher -** **_イーサリアム Web API_**
+
+- [blockcypher.com](https://www.blockcypher.com/)
+- [ドキュメント](https://www.blockcypher.com/dev/ethereum/)
+
+**Infura -** **_アズ・ア・サービス型のイーサリアム API_**
+
+- [infura.io](https://infura.io)
+- [ドキュメント](https://infura.io/docs)
+- [GitHub](https://github.com/INFURA)
+
+**Cloudflare のイーサリアムゲートウェイ**
+
+- [cloudflare-eth.com](https://cloudflare-eth.com)
+
+**DataHub by Figment -** **_イーサリアムメインネットとテストネットを使用する Web3 API サービス _**
+
+- [DataHub](https://www.figment.io/datahub)
+- [ドキュメント](https://docs.figment.io/introduction/what-is-datahub)
+
+**Nodesmith -** **_イーサリアムメインネットとテストネットへの JSON-RPC API アクセス_**
+
+- [nodesmith.io](https://nodesmith.io/network/ethereum/)
+- [ドキュメント](https://nodesmith.io/docs/#/ethereum/apiRef)
+
+**Ethercluster -** **_ETH と ETC の両方をサポートする独自のイーサリアム API サービスを実行_**
+
+- [ethercluster.com](https://www.ethercluster.com/)
+
+**Chainstack -** **_柔軟性の高い、専用のアズ・ア・サービス型イーサリアムノード_**
+
+- [chainstack.com](https://chainstack.com)
+- [ドキュメント](https://docs.chainstack.com)
+- [イーサリアム API リファレンス](https://docs.chainstack.com/api/ethereum/ethereum-api-reference)
+
+**QuickNode -** **_アズ・ア・サービス型のブロックチェーン・インフラストラクチャ_**
+
+- [quicknode.com](https://quicknode.com)
+- [ドキュメント](https://www.quicknode.com/docs)
+- [Discord](https://discord.gg/NaR7TtpvJq)
+
+**Python Tooling -** **_Python でイーサリアムとやり取りするための各種ライブラリ_**
+
+- [py.ethereum.org](http://python.ethereum.org/)
+- [web3.py GitHub](https://github.com/ethereum/web3.py)
+- [web3.py チャット](https://gitter.im/ethereum/web3.py)
+
+**web3j -** **_イーサリアム用の Java/Android/Kotlin/Scala の統合ライブラリ_**
+
+- [GitHub](https://github.com/web3j/web3j)
+- [ドキュメント](https://docs.web3j.io/)
+- [Gitter](https://gitter.im/web3j/web3j)
+
+**Rivet -** **_オープンソースソフトウェアを搭載した、アズ・ア・サービス型のイーサリアムとイーサリアムクラシックの API_**
+
+- [rivet.cloud](https://rivet.cloud)
+- [ドキュメント](https://rivet.cloud/docs/)
+- [GitHub](https://github.com/openrelayxyz/ethercattle-deployment)
+
+**Nethereum -** **_ブロックチェーンのためのオープンソースの .NET 統合ライブラリ_**
+
+- [GitHub](https://github.com/Nethereum/Nethereum)
+- [ドキュメント](http://docs.nethereum.com/en/latest/)
+- [Discord](https://discord.com/invite/jQPrR58FxX)
+
+**Tatum -** **_究極のブロックチェーン開発プラットフォーム_**
+
+- [Tatum](https://tatum.io/)
+- [GitHub](https://github.com/tatumio/)
+- [ドキュメント](https://docs.tatum.io/)
+- [Discord](https://discord.gg/EDmW3kjTC9)
+
+**Watchdata -** **_イーサリアムブロックチェーンへのシンプルで信頼性の高い API アクセスを提供_**
+
+- [Watchdata](https://watchdata.io/)
+- [ドキュメント](https://docs.watchdata.io/)
+- [Discord](https://discord.com/invite/TZRJbZ6bdn)
+
+**Zmok -** **_JSON-RPC/WebSocket API としてのスピード重視のイーサリアムノード_**
+
+- [zmok.io](https://zmok.io/)
+- [GitHub](https://github.com/zmok-io)
+- [ドキュメント](https://docs.zmok.io/)
+- [Discord](https://discord.gg/fAHeh3ka6s)
+
+## 参考文献 {#further-reading}
+
+_役に立つコミュニティリソースをご存知の場合は、 ページを編集して追加してください。_
+
+## 関連トピック {#related-topics}
+
+- [ノードとクライアント](/developers/docs/nodes-and-clients/)
+- [開発フレームワーク](/developers/docs/frameworks/)
+
+## 関連チュートリアル {#related-tutorials}
+
+- [Javascript でイーサリアムブロックチェーンを使用するための Web3js のセットアップ](/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/) _– プロジェクトで web3.js をセットアップするための手順。_
+- [JavaScript からスマートコントラクトを呼び出す](/developers/tutorials/calling-a-smart-contract-from-javascript/) _– Dai トークンを使用することで、JavaScript を使用してスマートコントラクト関数を呼び出す方法を確認できます。_
diff --git a/src/content/translations/ja/developers/docs/apis/javascript/index.md b/src/content/translations/ja/developers/docs/apis/javascript/index.md
new file mode 100644
index 00000000000..82852b10e30
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/apis/javascript/index.md
@@ -0,0 +1,290 @@
+---
+title: JavaScript APIライブラリ
+description: アプリケーションからブロックチェーンへやり取りできるJavaScriptクライアントライブラリの紹介。
+lang: ja
+---
+
+Web アプリはイーサリアムブロックチェーンとやりとりを行うために (例えばブロックチェーンデータの読み込みやトランザクションの送信など) 、イーサリアムノードに接続する必要があります。
+
+この目的のために、すべてのイーサリアムクライアントは[JSON-RPC](/developers/docs/apis/json-rpc/)の仕様を実装しています。そのため、アプリケーションは統一された[メソッド](/developers/docs/apis/json-rpc/#json-rpc-methods)のセットを使用できます。
+
+JavaScript でイーサリアムノードに接続する場合、通常の JavaScript を使用することは可能です。しかし、エコシステム内には、作業をより簡単にするいくつかの便利なライブラリがあります。 これらのライブラリにより、デベロッパーは直感的な 1 行のメソッドを作成するだけで、イーサリアムとやり取りする JSON-RPC リクエストを (内部的に) 初期化できるようになります。
+
+[マージ](/upgrades/merge/)以降は、ノードの実行には、実行クライアントとコンセンサスクライアントという 2 つのつながったイーサリアムソフトウェアが必要になることに注意してください。 必ず、ノードに実行クライアントとコンセンサスクライアントの両方が含まれるようにしてください。 ノードがローカルマシン上にない (ノードが AWS インスタンス上で動作しているなど) 場合は、適宜、チュートリアルの IP アドレスをアップデートしてください。 詳細については、[ノードの実行](/developers/docs/nodes-and-clients/run-a-node/)ページをご覧ください。
+
+## 前提知識 {#prerequisites}
+
+JavaScript を理解している必要があります。また、[イーサリアムスタック](/developers/docs/ethereum-stack/)と[イーサリアムクライアント](/developers/docs/nodes-and-clients/)についても理解していることが推奨されます。
+
+## ライブラリの利点 {#why-use-a-library}
+
+これらのライブラリにより、イーサリアムノードと直接やり取りする際の複雑さが抽象化されます。 また、ユーティリティ関数 (ETH を Gwei に変換する関数など) も提供されています。そのため、デベロッパーは複雑なイーサリアムクライアントの作業に費やす時間を削減でき、自身のアプリケーションの独自機能の開発作業に専念できます。
+
+## ライブラリの機能 {#library-features}
+
+### イーサリアムノードに接続 {#connect-to-ethereum-nodes}
+
+providers ライブラリを使用することで、JSON-RPC、INFURA、Etherscan、Alchemy または MetaMask であっても、イーサリアムに接続してデータを読み取ることができます。
+
+**Ethers.js を使った例**
+
+```js
+// A Web3Provider wraps a standard Web3 provider, which is
+// what MetaMask injects as window.ethereum into each page
+const provider = new ethers.providers.Web3Provider(window.ethereum)
+
+// The MetaMask plugin also allows signing transactions to
+// send ether and pay to change state within the blockchain.
+// For this, we need the account signer...
+const signer = provider.getSigner()
+```
+
+**Web3.js を使った例**
+
+```js
+var web3 = new Web3("http://localhost:8545")
+// or
+var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"))
+
+// change provider
+web3.setProvider("ws://localhost:8546")
+// or
+web3.setProvider(new Web3.providers.WebsocketProvider("ws://localhost:8546"))
+
+// Using the IPC provider in node.js
+var net = require("net")
+var web3 = new Web3("/Users/myuser/Library/Ethereum/geth.ipc", net) // mac os path
+// or
+var web3 = new Web3(
+ new Web3.providers.IpcProvider("/Users/myuser/Library/Ethereum/geth.ipc", net)
+) // mac os path
+// on windows the path is: "\\\\.\\pipe\\geth.ipc"
+// on linux the path is: "/users/myuser/.ethereum/geth.ipc"
+```
+
+一度セットアップすると、ブロックチェーンへ以下のクエリが可能になります。
+
+- ブロック番号
+- ガスの推定値
+- スマートコントラクトのイベント
+- ネットワーク ID
+- その他
+
+### ウォレットの機能 {#wallet-functionality}
+
+これらのライブラリは、ウォレットの作成、キーの管理、トランザクションへ署名を行います。
+
+Ethers.js を使った例
+
+```js
+// Create a wallet instance from a mnemonic...
+mnemonic =
+ "announce room limb pattern dry unit scale effort smooth jazz weasel alcohol"
+walletMnemonic = Wallet.fromMnemonic(mnemonic)
+
+// ...or from a private key
+walletPrivateKey = new Wallet(walletMnemonic.privateKey)
+
+walletMnemonic.address === walletPrivateKey.address
+// true
+
+// The address as a Promise per the Signer API
+walletMnemonic.getAddress()
+// { Promise: '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1' }
+
+// A Wallet address is also available synchronously
+walletMnemonic.address
+// '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1'
+
+// The internal cryptographic components
+walletMnemonic.privateKey
+// '0x1da6847600b0ee25e9ad9a52abbd786dd2502fa4005dd5af9310b7cc7a3b25db'
+walletMnemonic.publicKey
+// '0x04b9e72dfd423bcf95b3801ac93f4392be5ff22143f9980eb78b3a860c4843bfd04829ae61cdba4b3b1978ac5fc64f5cc2f4350e35a108a9c9a92a81200a60cd64'
+
+// The wallet mnemonic
+walletMnemonic.mnemonic
+// {
+// locale: 'en',
+// path: 'm/44\'/60\'/0\'/0/0',
+// phrase: 'announce room limb pattern dry unit scale effort smooth jazz weasel alcohol'
+// }
+
+// Note: A wallet created with a private key does not
+// have a mnemonic (the derivation prevents it)
+walletPrivateKey.mnemonic
+// null
+
+// Signing a message
+walletMnemonic.signMessage("Hello World")
+// { Promise: '0x14280e5885a19f60e536de50097e96e3738c7acae4e9e62d67272d794b8127d31c03d9cd59781d4ee31fb4e1b893bd9b020ec67dfa65cfb51e2bdadbb1de26d91c' }
+
+tx = {
+ to: "0x8ba1f109551bD432803012645Ac136ddd64DBA72",
+ value: utils.parseEther("1.0"),
+}
+
+// Signing a transaction
+walletMnemonic.signTransaction(tx)
+// { Promise: '0xf865808080948ba1f109551bd432803012645ac136ddd64dba72880de0b6b3a7640000801ca0918e294306d177ab7bd664f5e141436563854ebe0a3e523b9690b4922bbb52b8a01181612cec9c431c4257a79b8c9f0c980a2c49bb5a0e6ac52949163eeb565dfc' }
+
+// The connect method returns a new instance of the
+// Wallet connected to a provider
+wallet = walletMnemonic.connect(provider)
+
+// Querying the network
+wallet.getBalance()
+// { Promise: { BigNumber: "42" } }
+wallet.getTransactionCount()
+// { Promise: 0 }
+
+// Sending ether
+wallet.sendTransaction(tx)
+```
+
+[全ドキュメントを読む](https://docs.ethers.io/v5/api/signer/#Wallet)
+
+セットアップ後、以下が可能になります。
+
+- アカウントの作成
+- トランザクションの送信
+- トランザクションへの署名
+- 等々...
+
+### スマートコントラクト関数とのやり取り {#interact-with-smart-contract-functions}
+
+Javascript クライアントライブラリを使用すると、コンパイルされたコントラクトのアプリケーションバイナリインタフェース (ABI) を読み取ることによって、アプリからスマートコントラクト関数を呼び出せるようになります。
+
+ABI には基本的に JSON 形式でコントラクトの関数が記述されており、それを通常の JavaScript オブジェクトのように使用することができます。
+
+以下は Solidity のスマートコントラクトです:
+
+```solidity
+contract Test {
+ uint a;
+ address d = 0x12345678901234567890123456789012;
+
+ function Test(uint testInt) { a = testInt;}
+
+ event Event(uint indexed b, bytes32 c);
+
+ event Event2(uint indexed b, bytes32 c);
+
+ function foo(uint b, bytes32 c) returns(address) {
+ Event(b, c);
+ return d;
+ }
+}
+```
+
+上記は次のような JSON になります:
+
+```json
+[{
+ "type":"constructor",
+ "payable":false,
+ "stateMutability":"nonpayable"
+ "inputs":[{"name":"testInt","type":"uint256"}],
+ },{
+ "type":"function",
+ "name":"foo",
+ "constant":false,
+ "payable":false,
+ "stateMutability":"nonpayable",
+ "inputs":[{"name":"b","type":"uint256"}, {"name":"c","type":"bytes32"}],
+ "outputs":[{"name":"","type":"address"}]
+ },{
+ "type":"event",
+ "name":"Event",
+ "inputs":[{"indexed":true,"name":"b","type":"uint256"}, {"indexed":false,"name":"c","type":"bytes32"}],
+ "anonymous":false
+ },{
+ "type":"event",
+ "name":"Event2",
+ "inputs":[{"indexed":true,"name":"b","type":"uint256"},{"indexed":false,"name":"c","type":"bytes32"}],
+ "anonymous":false
+}]
+```
+
+次のことが可能であることを意味します:
+
+- スマートコントラクトにトランザクションを送信し、メソッドを実行
+- EVM でメソッド実行時にかかるガス代を見積もるためにコール
+- コントラクトのデプロイ
+- 等々...
+
+### ユーティリティ関数 {#utility-functions}
+
+ユーティリティ関数は、イーサリアムでの構築を少し簡単にする便利なショートカットです。
+
+ETH の値は、デフォルトで wei に設定されています。 1 ETH は、1,000,000,000,000,000,000,000,000,000,000,000,000 wei です。つまり、非常に巨大な数値を扱っているということです。 Ether は`web3.utils.toWei`によって、wei に変換されます。
+
+Ethers.js で記述した場合は次のようになります:
+
+```js
+// Get the balance of an account (by address or ENS name)
+balance = await provider.getBalance("ethers.eth")
+// { BigNumber: "2337132817842795605" }
+
+// Often you will need to format the output for the user
+// which prefer to see values in ether (instead of wei)
+ethers.utils.formatEther(balance)
+// '2.337132817842795605'
+```
+
+- [Web3js のユーティリティ関数](https://web3js.readthedocs.io/en/v1.2.11/web3-utils.html#)
+- [Ethers のユーティリティ関数](https://docs.ethers.io/v5/api/utils/)
+
+## 利用可能なライブラリ {#available-libraries}
+
+**Web3.js -** **_イーサリアムの JavaScript API_**
+
+- [ドキュメント](https://web3js.readthedocs.io/en/1.0/)
+- [GitHub](https://github.com/ethereum/web3.js/)
+
+**Ethers.js -** **_JavaScript と TypeScript での完全なイーサリアムウォレットの実装とユーティリティ_**
+
+- [ドキュメント](https://docs.ethers.io/)
+- [GitHub](https://github.com/ethers-io/ethers.js/)
+
+**The Graph -** **_イーサリアムと IPFS のデータをインデックス化し、GraphQL を使用してクエリを実行するためのプロトコル_**
+
+- [The Graph](https://thegraph.com/)
+- [Graph Explorer](https://thegraph.com/explorer/)
+- [ドキュメント](https://thegraph.com/docs/)
+- [GitHub](https://github.com/graphprotocol/)
+- [Discord](https://thegraph.com/discord)
+
+**light.js -** **_ライトクライアント向けに最適化された高位のリアクティブ JS ライブラリ_**
+
+- [GitHub](https://github.com/openethereum/js-libs/tree/master/packages/light.js)
+
+**Web3-wrapper -** **_Typescript で記述された、Web3.js の代替ライブラリ_**
+
+- [ドキュメント](https://0x.org/docs/web3-wrapper#introduction)
+- [GitHub](https://github.com/0xProject/0x-monorepo/tree/development/packages/web3-wrapper)
+
+**Alchemyweb3 -** **_自動リトライと強化された API を備えた、Web3.js のラッパー_**
+
+- [ドキュメント](https://docs.alchemy.com/reference/api-overview)
+- [GitHub](https://github.com/alchemyplatform/alchemy-web3)
+
+**Alchemy NFT API -** **_所有権やメタデータ属性などの NFT データを取得するための API_**
+
+- [ドキュメント](https://docs.alchemy.com/alchemy/enhanced-apis/nft-api)
+- [GitHub](https://github.com/alchemyplatform/alchemy-web3)
+
+## 参考文献 {#further-reading}
+
+_役に立つコミュニティリソースをご存知の場合は、 このページを編集して追加してください。_
+
+## 関連トピック {#related-topics}
+
+- [ノードとクライアント](/developers/docs/nodes-and-clients/)
+- [開発フレームワーク](/developers/docs/frameworks/)
+
+## 関連チュートリアル {#related-tutorials}
+
+- [Javascript でイーサリアムブロックチェーンを使用するための Web3js のセットアップ](/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/) _– プロジェクトで web3.js をセットアップするための手順。_
+- [JavaScript からスマートコントラクトを呼び出す](/developers/tutorials/calling-a-smart-contract-from-javascript/) _– Dai トークンを使用することで、JavaScript を使用してスマートコントラクト関数を呼び出す方法を確認できます。_
+- [Web3 と Alchemy を使用してトランザクションを送信する](/developers/tutorials/sending-transactions-using-web3-and-alchemy/) _– バックエンドからトランザクションを送信するための段階的ガイド。_
diff --git a/src/content/translations/ja/developers/docs/apis/json-rpc/index.md b/src/content/translations/ja/developers/docs/apis/json-rpc/index.md
new file mode 100644
index 00000000000..54d015b2c2c
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/apis/json-rpc/index.md
@@ -0,0 +1,2345 @@
+---
+title: JSON-RPC API
+description: イーサリアムクライアント用のステートレスで軽量なリモートプロシージャコール (RPC) プロトコル。
+lang: ja
+---
+
+ソフトウェアアプリケーションがイーサリアムブロックチェーンとやり取りする (ブロックチェーンデータの読み取りまたはネットワークへのトランザクションの送信) ためには、イーサリアムノードに接続する必要があります。
+
+この目的のために、すべての[イーサリアムクライアント](/developers/docs/nodes-and-clients/#execution-clients)は[JSON-RPC 仕様](https://github.com/ethereum/execution-apis)を実装しています。そのため、ノードやクライアントの実装がどんなものであっても、アプリケーションは統一されたメソッドのセットを使用できます。
+
+[JSON-RPC](https://www.jsonrpc.org/specification)は、ステートレスで軽量なリモートプロシージャコール (RPC) プロトコルです。 いくつかのデータ構造とその処理に関するルールを定義しています。 トランスポートに依存しないため、同じプロセス内だけでなく、ソケット経由、HTTP 経由など、さまざまなメッセージパッシング環境で利用できます。 データ形式としては、JSON (RFC 4627) を使用します。
+
+## クライアントの実装 {#client-implementations}
+
+各イーサリアムクライアントでは、JSON-RPC 仕様を実装する際に異なるプログラミング言語を使用できます。 特定のプログラミング言語に関連する詳細については、各[クライアントのドキュメント](/developers/docs/nodes-and-clients/#execution-clients)を参照してください。 最新の API サポート情報についても、各クライアントのドキュメントを確認することをお勧めします。
+
+## 便利なライブラリ {#convenience-libraries}
+
+JSON-RPC API を介してイーサリアムクライアントと直接やり取りすることもできますが、dapp デベロッパーの作業が多くの場合に簡単になるオプションもあります。 [JavaScript](/developers/docs/apis/javascript/#available-libraries)と[バックエンド API](/developers/docs/apis/backend/#available-libraries)には、JSON-RPC API の上にラッパーを提供する多くのライブラリが存在します。 これらのライブラリを使用することで、デベロッパーは任意のプログラミング言語による直感的な 1 行のメソッドを作成するだけで、イーサリアムとやり取りする JSON-RPC リクエストを (内部的に) 初期化できるようになります。
+
+## コンセンサスクライアント API {#consensus-clients}
+
+このページでは、主にイーサリアムの実行クライアントで使用される JSON-RPC API について説明します。 しかし、コンセンサスクライアントには、ユーザーがノードについての情報のクエリを行える RPC API が用意されており、ビーコンブロック、ビーコンの状態、その他のコンセンサス関連の情報を直接ノードにリクエストできます。 この API については 、[ビーコン API のウェブページ](https://ethereum.github.io/beacon-APIs/#/)に記載されています。
+
+内部 API は、ノード内のクライアント間通信にも使用されます。 つまり、コンセンサスクライアントと実行クライアントとの間のデータ交換を可能にします。 これは「Engine API」と呼ばれており、仕様は[Github](https://github.com/ethereum/execution-apis/blob/main/src/engine/specification.md)で入手できます。
+
+## 実行クライアントの仕様 {#spec}
+
+[GitHub 上で JSON-RPC API の全仕様を読む](https://github.com/ethereum/execution-apis)。
+
+## 慣例 {#conventions}
+
+### 16 進数のエンコーディング {#hex-encoding}
+
+フォーマットされていないバイト配列とそのバイト数という、2 つのキーデータ型が JSON で渡されます。 どちらも 16 進数エンコーディングで渡されますが、フォーマットの要件は異なります。
+
+#### バイト数 {#quantities-encoding}
+
+バイト数 (整数、数字) をエンコーディングする際は、最も簡潔な表現である、接頭辞「0x」の 16 進数でエンコードします (小さな例外: ゼロは「0x0」と表記する必要があります) 。
+
+以下に、いくつかの例を示します。
+
+- 0x41 (10 進数で 65)
+- 0x400 (10 進数で 1024)
+- 間違い: 0x (常に少なくとも 1 桁の数字が必要です。ゼロは「0x0」)
+- 間違い: 0x0400 (先頭のゼロは許可されていません)
+- 間違い: ff (接頭辞は 0x でなければなりません)
+
+### フォーマットされていないデータ {#unformatted-data-encoding}
+
+フォーマットされていないデータ (バイト配列、アカウントアドレス、ハッシュ、バイトコード配列) をエンコードする場合、16 進数としてエンコードし、接頭辞を「0x」とし、1 バイトごとに 2 桁の 16 進数でエンコードします。
+
+以下に、いくつかの例を示します。
+
+- 0x41 (サイズ 1、「A」)
+- 0x004200 (サイズ 3、「\0B\0」)
+- 0x (サイズ 0、「」)
+- 間違い: 0xf0f0f (偶数でなければなりません)
+- 間違い: 004200 (接頭辞が 0x でなければなりません)
+
+### デフォルトのブロックパラメーター {#default-block}
+
+以下のメソッドには、追加のデフォルトブロックパラメータがあります。
+
+- [eth_getBalance](#eth_getbalance)
+- [eth_getCode](#eth_getcode)
+- [eth_getTransactionCount](#eth_gettransactioncount)
+- [eth_getStorageAt](#eth_getstorageat)
+- [eth_call](#eth_call)
+
+イーサリアムの状態に作用するリクエストを行う場合は、最後のデフォルトブロックパラメータによってブロックの高さが決定します。
+
+デフォルトブロックパラメータには、以下のオプションがあります。
+
+- `HEX String` - 整数のブロック番号
+- `String "earliest"` - 最も古い/始まりのブロック
+- `String "latest"` - 最も新しいマイニング済みブロック
+- `String "pending"` - 保留中の状態/トランザクション
+
+## 使用例
+
+このページでは、コマンドラインツールである[curl](https://curl.se)を使用した、各 JSON-RPC API エンドポイントの使用方法の例を紹介します。 各エンドポイントの使用例は、[curl の使用例](#curl-examples)セクションで確認できます。 ページの下方には、Geth ノード、JSON-RPC API、curl を使用したスマートコントラクトのコンパイルとデプロイの[エンドツーエンドの例](#usage-example)もあります。
+
+## Curl の使用例 {#curl-examples}
+
+以下に、[curl](https://curl.se)でイーサリアムノードへのリクエストを行うことによって JSON-RPC API を使用する例をいくつか示します。 それぞれの例には、エンドポイントの説明、パラメータ、戻り値の型、使用方法の範例が含まれています。
+
+curl リクエストは、コンテンツタイプに関するエラーメッセージを返すことがあります。 この理由は、`--data`オプションによって、コンテンツタイプが`application/x-www-form-urlencoded`に設定されるためです。 これによってノードがエラーになる場合は、呼び出しの最初に、手動で`-H "Content-Type: application/json"`と記述してヘッダーを設定してください。 また、使用例には、curl で最後に指定する引数である URL/IP とポートの組み合わせ (例: `127.0.0.1:8545`) が含まれていません 。 これらの追加データが含まれた完全な curl リクエストは、次の形式になります。
+
+```shell
+curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}' 127.0.0.1:8545
+```
+
+## ゴシップ、状態、履歴 {#gossip-state-history}
+
+少数のコア JSON-RPC メソッドは、イーサリアムネットワークからのデータを必要とします。該当メソッドは、*ゴシップ、状態、履歴*という、3 つの主要カテゴリーに明確に分類できます。 各メソッドは、セクションにあるリンクからジャンプするか、目次でメソッドの全リストを調べることで見つけられます。
+
+### ゴシップメソッド {#gossip-methods}
+
+> チェーンの先頭までたどるメソッドです。 これにより、トランザクションがどのようにネットワークを進み、ブロックへたどり着くのか、また、クライアントがどのようにして新しいブロックについての情報を得るのかがわかります。
+
+- [eth_blockNumber](#eth_blocknumber)
+- [eth_sendRawTransaction](#eth_sendrawtransaction)
+
+### 状態メソッド {#state_methods}
+
+> このメソッドは、すべての保存データの現在の状態を報告します。 「状態」は、RAM 内の 1 つの大きな共有部分です。アカウントの残高、コントラクトデータ、ガスの推定値が含まれています。
+
+- [eth_getBalance](#eth_getbalance)
+- [eth_getStorageAt](#eth_getstorageat)
+- [eth_getTransactionCount](#eth_gettransactioncount)
+- [eth_getCode](#eth_getcode)
+- [eth_call](#eth_call)
+- [eth_estimateGas](#eth_estimategas)
+
+### 履歴メソッド {#history_methods}
+
+> このメソッドは、各ブロックの履歴レコードを始まりのブロックまでさかのぼって取得します。 これは、1 つの大きな追加専用ファイルのようなもので、すべてのブロックヘッダー、ブロックボディ、アンクルブロック、トランザクションレシートが含まれます。
+
+- [eth_getBlockTransactionCountByHash](#eth_getblocktransactioncountbyhash)
+- [eth_getBlockTransactionCountByNumber](#eth_getblocktransactioncountbynumber)
+- [eth_getUncleCountByBlockHash](#eth_getunclecountbyblockhash)
+- [eth_getUncleCountByBlockNumber](#eth_getunclecountbyblocknumber)
+- [eth_getBlockByHash](#eth_getblockbyhash)
+- [eth_getBlockByNumber](#eth_getblockbynumber)
+- [eth_getTransactionByHash](#eth_gettransactionbyhash)
+- [eth_getTransactionByBlockHashAndIndex](#eth_gettransactionbyblockhashandindex)
+- [eth_getTransactionByBlockNumberAndIndex](#eth_gettransactionbyblocknumberandindex)
+- [eth_getTransactionReceipt](#eth_gettransactionreceipt)
+- [eth_getUncleByBlockHashAndIndex](#eth_getunclebyblockhashandindex)
+- [eth_getUncleByBlockNumberAndIndex](#eth_getunclebyblocknumberandindex)
+
+## JSON-RPC API メソッド {#json-rpc-methods}
+
+### web3_clientVersion {#web3_clientversion}
+
+現在のクライアントバージョンを返します。
+
+**パラメータ**
+
+なし
+
+**戻り値**
+
+`String` - 現在のクライアントのバージョン
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}'
+// Result
+{
+ "id":67,
+ "jsonrpc":"2.0",
+ "result": "Mist/v0.9.3/darwin/go1.4.1"
+}
+```
+
+### web3_sha3 {#web3_sha3}
+
+指定されたデータの Keccak-256 (標準の SHA3-256 では*ない*) を返します。
+
+**パラメータ**
+
+1. `DATA` - SHA3 ハッシュに変換するデータ
+
+```js
+params: ["0x68656c6c6f20776f726c64"]
+```
+
+**戻り値**
+
+`DATA` - 指定された文字列の SHA3 結果
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"web3_sha3","params":["0x68656c6c6f20776f726c64"],"id":64}'
+// Result
+{
+ "id":64,
+ "jsonrpc": "2.0",
+ "result": "0x47173285a8d7341e5e972fc677286384f802f8ef42a5ec5f03bbfa254cb01fad"
+}
+```
+
+### net_version {#net_version}
+
+現在のネットワーク ID を返します。
+
+**パラメータ**
+
+なし
+
+**戻り値**
+
+`String` - 現在のネットワーク ID
+
+現在のネットワーク ID の全リストは、[chainlist.org](https://chainlist.org)で入手できます。 一般的なネットワーク ID は、以下のとおりです。 `1`: イーサリアムメインネット `2`: Morden テストネット (廃止) `3`: Ropsten テストネット `4`: Rinkeby テストネット `5`: Goerli テストネット
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"net_version","params":[],"id":67}'
+// Result
+{
+ "id":67,
+ "jsonrpc": "2.0",
+ "result": "3"
+}
+```
+
+### net_listening {#net_listening}
+
+クライアントのネットワーク接続のリッスンがアクティブな場合に、`true`を返します。
+
+**パラメータ**
+
+なし
+
+**戻り値**
+
+`Boolean` - リッスンしている場合は`true`、その他の場合は`false`
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"net_listening","params":[],"id":67}'
+// Result
+{
+ "id":67,
+ "jsonrpc":"2.0",
+ "result":true
+}
+```
+
+### net_peerCount {#net_peercount}
+
+クライアントに現在接続されているピアの数を返します。
+
+**パラメータ**
+
+なし
+
+**戻り値**
+
+`QUANTITY` - 接続されているピア数 (整数) 。
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":74}'
+// Result
+{
+ "id":74,
+ "jsonrpc": "2.0",
+ "result": "0x2" // 2
+}
+```
+
+### eth_protocolVersion {#eth_protocolversion}
+
+現在のイーサリアムプロトコルのバージョンを返します。
+
+**パラメータ**
+
+なし
+
+**戻り値**
+
+`String` - 現在のイーサリアムプロトコルのバージョン
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_protocolVersion","params":[],"id":67}'
+// Result
+{
+ "id":67,
+ "jsonrpc": "2.0",
+ "result": "54"
+}
+```
+
+### eth_syncing {#eth_syncing}
+
+同期ステータスに関するデータを含むオブジェクトか、`false`を返します。
+
+**パラメータ**
+
+なし
+
+**戻り値**
+
+`Object|Boolean` - 同期ステータスデータを含むオブジェクト、または同期していない場合は`FALSE`
+
+- `startingBlock`: `QUANTITY` - インポートを開始したブロック (同期がブロックの先頭に達したときのみリセットされる)
+- `currentBlock`: `QUANTITY` - 現在のブロック。eth_blockNumber と同一
+- `highestBlock`: `QUANTITY` - 最大ブロック高の推定値
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}'
+// Result
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": {
+ startingBlock: '0x384',
+ currentBlock: '0x386',
+ highestBlock: '0x454'
+ }
+}
+// Or when not syncing
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": false
+}
+```
+
+### eth_coinbase {#eth_coinbase}
+
+クライアントのコインベースアドレスを返します。
+
+**パラメータ**
+
+なし
+
+**戻り値**
+
+`DATA`、20 バイト - 現在のコインベースアドレス。
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_coinbase","params":[],"id":64}'
+// Result
+{
+ "id":64,
+ "jsonrpc": "2.0",
+ "result": "0x407d73d8a49eeb85d32cf465507dd71d507100c1"
+}
+```
+
+### eth_mining {#eth_mining}
+
+クライアントの新規ブロックのマイニングがアクティブな場合に、`true`を返します。
+
+**パラメータ**
+
+なし
+
+**戻り値**
+
+`Boolean` - クライアントがマイニングしている場合は`true`、その他の場合は`false`
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_mining","params":[],"id":71}'
+//
+{
+ "id":71,
+ "jsonrpc": "2.0",
+ "result": true
+}
+```
+
+### eth_hashrate {#eth_hashrate}
+
+ノードがマイニングしている 1 秒あたりのハッシュの数を返します。
+
+**パラメータ**
+
+なし
+
+**戻り値**
+
+`QUANTITY` - 1 秒あたりのハッシュの数
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_hashrate","params":[],"id":71}'
+// Result
+{
+ "id":71,
+ "jsonrpc": "2.0",
+ "result": "0x38a"
+}
+```
+
+### eth_gasPrice {#eth_gasprice}
+
+現在のガス価格を wei で返します。
+
+**パラメータ**
+
+なし
+
+**戻り値**
+
+`QUANTITY` - 現在のガス価格 (wei 単位の整数)
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":73}'
+// Result
+{
+ "id":73,
+ "jsonrpc": "2.0",
+ "result": "0x1dfd14000" // 8049999872 Wei
+}
+```
+
+### eth_accounts {#eth_accounts}
+
+クライアントが所有するアドレスのリストを返します。
+
+**パラメータ**
+
+なし
+
+**戻り値**
+
+`DATA配列`、20 バイト - クライアントが所有するアドレス
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":1}'
+// Result
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": ["0x407d73d8a49eeb85d32cf465507dd71d507100c1"]
+}
+```
+
+### eth_blockNumber {#eth_blocknumber}
+
+最も新しいブロックの番号を返します。
+
+**パラメータ**
+
+なし
+
+**戻り値**
+
+`QUANTITY` - クライアントの現在のブロックの番号 (整数)
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":83}'
+// Result
+{
+ "id":83,
+ "jsonrpc": "2.0",
+ "result": "0x4b7" // 1207
+}
+```
+
+### eth_getBalance {#eth_getbalance}
+
+指定されたアドレスのアカウントの残高を返します。
+
+**パラメータ**
+
+1. `DATA`、20 バイト - 残高を確認するアドレス
+2. `QUANTITY|TAG` - ブロック番号 (整数)、もしくは文字列`"latest"`、`"earliest"`、`"pending"`のいずれか。[デフォルトのブロックパラメータ](/developers/docs/apis/json-rpc/#default-block-parameter)を参照してください
+
+```js
+params: ["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"]
+```
+
+**戻り値**
+
+`QUANTITY` - 現在の残高 (wei 単位の整数)
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"],"id":1}'
+// Result
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0x0234c8a3397aab58" // 158972490234375000
+}
+```
+
+### eth_getStorageAt {#eth_getstorageat}
+
+指定されたアドレスのストレージの位置の値を返します。
+
+**パラメータ**
+
+1. `DATA`、20 バイト - ストレージのアドレス
+2. `QUANTITY` - ストレージの位置 (整数)
+3. `QUANTITY|TAG` - ブロック番号 (整数)、または文字列`"latest"`、`"earliest"`、`"pending"`のいずれか。[デフォルトのブロックパラメータ](/developers/docs/apis/json-rpc/#default-block-parameter)を参照してください
+
+**戻り値**
+
+`DATA` - このストレージの位置の値
+
+**例: ** 正確な位置計算は、取得するストレージによって変わります。 ここでは、アドレス`0x391694e7e0b0cce554cb130d723a9d27458f9298`で、`0x295a70b2de5e3953354a6a8344e616ed314d7251`にデプロイされているコントラクトについて考えます。
+
+```
+contract Storage {
+ uint pos0;
+ mapping(address => uint) pos1;
+ function Storage() {
+ pos0 = 1234;
+ pos1[msg.sender] = 5678;
+ }
+}
+```
+
+pos0 の値の取得は簡単です。
+
+```js
+curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": ["0x295a70b2de5e3953354a6a8344e616ed314d7251", "0x0", "latest"], "id": 1}' localhost:8545
+{"jsonrpc":"2.0","id":1,"result":"0x00000000000000000000000000000000000000000000000000000000000004d2"}
+```
+
+しかし、マップ (map) の要素の取得は、より難しくなります。 マップ (map) の要素の位置は、次のように計算されます。
+
+```js
+keccack(LeftPad32(key, 0), LeftPad32(map position, 0))
+```
+
+つまり、pos1["0x391694e7e0b0cce554cb130d723a9d27458f9298"]のストレージを取得するためには、次のように位置を計算する必要があります。
+
+```js
+keccak(
+ decodeHex(
+ "000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298" +
+ "0000000000000000000000000000000000000000000000000000000000000001"
+ )
+)
+```
+
+これは、web3 ライブラリに付属する Geth コンソールを使用して、次のように計算できます。
+
+```js
+> var key = "000000000000000000000000391694e7e0b0cce554cb130d723a9d27458f9298" + "0000000000000000000000000000000000000000000000000000000000000001"
+undefined
+> web3.sha3(key, {"encoding": "hex"})
+"0x6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9"
+```
+
+これにより、以下のようにしてストレージを取得できます。
+
+```js
+curl -X POST --data '{"jsonrpc":"2.0", "method": "eth_getStorageAt", "params": ["0x295a70b2de5e3953354a6a8344e616ed314d7251", "0x6661e9d6d8b923d5bbaab1b96e1dd51ff6ea2a93520fdc9eb75d059238b8c5e9", "latest"], "id": 1}' localhost:8545
+{"jsonrpc":"2.0","id":1,"result":"0x000000000000000000000000000000000000000000000000000000000000162e"}
+```
+
+### eth_getTransactionCount {#eth_gettransactioncount}
+
+アドレスから*送信*されたトランザクションの数を返します。
+
+**パラメータ**
+
+1. `DATA`、20 バイト - アドレス
+2. `QUANTITY|TAG` - ブロック番号 (整数)、または文字列`"latest"`、`"earliest"`、`"pending"`のいずれか。[デフォルトのブロックパラメータ](/developers/docs/apis/json-rpc/#default-block-parameter)を参照してください
+
+```js
+params: [
+ "0x407d73d8a49eeb85d32cf465507dd71d507100c1",
+ "latest", // state at the latest block
+]
+```
+
+**戻り値**
+
+`QUANTITY` - このアドレスから送信されたトランザクションの数 (整数)
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionCount","params":["0x407d73d8a49eeb85d32cf465507dd71d507100c1","latest"],"id":1}'
+// Result
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0x1" // 1
+}
+```
+
+### eth_getBlockTransactionCountByHash {#eth_getblocktransactioncountbyhash}
+
+指定されたブロックハッシュに一致するブロック内のトランザクションの数を返します。
+
+**パラメータ**
+
+1. `DATA`、32 バイト - ブロックハッシュ
+
+```js
+params: ["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"]
+```
+
+**戻り値**
+
+`QUANTITY` - このブロック内のトランザクションの数 (整数)
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByHash","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":1}'
+// Result
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0xb" // 11
+}
+```
+
+### eth_getBlockTransactionCountByNumber {#eth_getblocktransactioncountbynumber}
+
+指定されたブロック番号に一致するブロックのトランザクションの数を返します。
+
+**パラメータ**
+
+1. `QUANTITY|TAG` - ブロック番号 (整数)、または文字列`"latest"`、`"earliest"`、`"pending"`のいずれか。[デフォルトのブロックパラメータ](/developers/docs/apis/json-rpc/#default-block-parameter)を参照してください
+
+```js
+params: [
+ "0xe8", // 232
+]
+```
+
+**戻り値**
+
+`QUANTITY` - このブロック内のトランザクションの数 (整数)
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockTransactionCountByNumber","params":["0xe8"],"id":1}'
+// Result
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0xa" // 10
+}
+```
+
+### eth_getUncleCountByBlockHash {#eth_getunclecountbyblockhash}
+
+指定されたブロックハッシュに一致するブロックのアンクルの数を返します。
+
+**パラメータ**
+
+1. `DATA`、32 バイト - ブロックハッシュ
+
+```js
+params: ["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"]
+```
+
+**戻り値**
+
+`QUANTITY` - このブロック内のアンクルの数 (整数)
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockHash","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":1}'
+// Result
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0x1" // 1
+}
+```
+
+### eth_getUncleCountByBlockNumber {#eth_getunclecountbyblocknumber}
+
+指定されたブロック番号に一致するブロック内のアンクルの数を返します。
+
+**パラメータ**
+
+1. `QUANTITY|TAG` - ブロック番号 (整数)、または文字列"latest"、"earliest" 、"pending"のいずれか。[デフォルトのブロックパラメータ](/developers/docs/apis/json-rpc/#default-block-parameter)を参照してください
+
+```js
+params: [
+ "0xe8", // 232
+]
+```
+
+**戻り値**
+
+`QUANTITY` - このブロック内のアンクルの数 (整数)
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleCountByBlockNumber","params":["0xe8"],"id":1}'
+// Result
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0x1" // 1
+}
+```
+
+### eth_getCode {#eth_getcode}
+
+指定されたアドレスのコードを返します。
+
+**パラメータ**
+
+1. `DATA`、20 バイト - アドレス
+2. `QUANTITY|TAG` - ブロック番号 (整数)、または文字列`"latest"`、`"earliest"`、`"pending"`のいずれか。[デフォルトのブロックパラメータ](/developers/docs/apis/json-rpc/#default-block-parameter)を参照してください
+
+```js
+params: [
+ "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b",
+ "0x2", // 2
+]
+```
+
+**戻り値**
+
+`DATA` - 指定されたアドレスからのコード
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getCode","params":["0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b", "0x2"],"id":1}'
+// Result
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0x600160008035811a818181146012578301005b601b6001356025565b8060005260206000f25b600060078202905091905056"
+}
+```
+
+### eth_sign {#eth_sign}
+
+この署名メソッドは、イーサリアム固有の署名を次のように計算します。`sign(keccak256("\x19Ethereum Signed Message:\n" + len(message) + message)))`。
+
+メッセージに接頭辞を追加することで、計算された署名がイーサリアム固有の署名として認識可能になります。 これにより、悪意のある dapp によって任意のデータ (トランザクションなど) が署名され、被害者のなりすましに悪用される被害を防ぐことができます。
+
+注: 署名するアドレスのロックを解除する必要があります。
+
+**パラメータ**
+
+1. `DATA`、20 バイト - アドレス
+2. `DATA`、N バイト - 署名するメッセージ
+
+**戻り値**
+
+`データ`: 署名
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sign","params":["0x9b2055d370f73ec7d8a03e965129118dc8f5bf83", "0xdeadbeaf"],"id":1}'
+// Result
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0xa3f20717a250c2b0b729b7e5becbff67fdaef7e0699da4de7ca5895b02a170a12d887fd3b17bfdce3481f10bea41f45ba9f709d39ce8325427b57afcfc994cee1b"
+}
+```
+
+### eth_signTransaction {#eth_signtransaction}
+
+[eth_sendRawTransaction](#eth_sendrawtransaction)を使用して、ネットワークに後から送信可能なトランザクションに署名します。
+
+**パラメータ**
+
+1. `Object` - トランザクションオブジェクト
+
+- `from`: `DATA`、20 バイト - トランザクションの送信元アドレス
+- `to`: `DATA`、20 バイト - トランザクションの宛先アドレス (新規コントラクトの作成時はオプション)
+- `gas`: `QUANTITY` - (オプション、デフォルトは 90000) トランザクションの実行のために提供されているガス (整数)。 使われなかったガスは返却されます
+- `gasPrice`: `QUANTITY` - (オプション、デフォルトは未確定) ガスごとに支払われるガス価格 (wei 単位の整数)
+- `value`: `QUANTITY` - (オプション) このトランザクションで送信された価値 (wei 単位の整数)
+- `data`: `DATA` - コンパイルされたコントラクトのコード。または呼び出されたメソッドの署名とエンコードされたパラメータのハッシュ
+- `nonce`: `QUANTITY` - (オプション) ノンス (nonce) (整数)。 同じノンス (nonce) を使用している保留中のトランザクションを上書きできます
+
+**戻り値**
+
+`DATA` - 署名されたトランザクションオブジェクト
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"id": 1,"jsonrpc": "2.0","method": "eth_signTransaction","params": [{"data":"0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675","from": "0xb60e8dd61c5d32be8058bb8eb970870f07233155","gas": "0x76c0","gasPrice": "0x9184e72a000","to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567","value": "0x9184e72a"}]}'
+// Result
+{
+ "id": 1,
+ "jsonrpc": "2.0",
+ "result": "0xa3f20717a250c2b0b729b7e5becbff67fdaef7e0699da4de7ca5895b02a170a12d887fd3b17bfdce3481f10bea41f45ba9f709d39ce8325427b57afcfc994cee1b"
+}
+```
+
+### eth_sendTransaction {#eth_sendtransaction}
+
+新規のメッセージ呼び出しトランザクションを作成します。または、データフィールドにコードが含まれている場合は、コントラクトの作成を行います。
+
+**パラメータ**
+
+1. `Object` - トランザクションオブジェクト
+
+- `from`: `DATA`、20 バイト - トランザクションの送信元アドレス
+- `to`: `DATA`、20 バイト - (新規コントラクトの作成時はオプション)トランザクションの宛先アドレス
+- `gas`: `QUANTITY` - (オプション、デフォルトは 90000) トランザクションを実行するために提供されているガス (整数) 。 使用されなかったガスは返却されます
+- `gasPrice`: `QUANTITY` - (オプション、デフォルトは未確定) ガスの支払いに適用されたガス価格 (整数)
+- `value`: `QUANTITY` - (オプション) このトランザクションで送信された価値 (整数)
+- `data`: `DATA` - コンパイルされたコントラクトのコード。または呼び出されたメソッドの署名とエンコードされたパラメータのハッシュ
+- `nonce`: `QUANTITY` - (オプション) ノンス (nonce) (整数)。 同じノンス (nonce) を使用している保留中のトランザクションを上書きできます
+
+```js
+params: [
+ {
+ from: "0xb60e8dd61c5d32be8058bb8eb970870f07233155",
+ to: "0xd46e8dd67c5d32be8058bb8eb970870f07244567",
+ gas: "0x76c0", // 30400
+ gasPrice: "0x9184e72a000", // 10000000000000
+ value: "0x9184e72a", // 2441406250
+ data: "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675",
+ },
+]
+```
+
+**戻り値**
+
+`DATA`、32 バイト - トランザクションのハッシュ、またはトランザクションがまだ使用可能でない場合はゼロハッシュ
+
+コントラクトのアドレスを取得するには、コントラクトを作成したトランザクションがマイニングされた後に[eth_getTransactionReceipt](#eth_gettransactionreceipt)を使用します。
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{see above}],"id":1}'
+// Result
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"
+}
+```
+
+### eth_sendRawTransaction {#eth_sendrawtransaction}
+
+署名されたトランザクションについて、新規メッセージ呼び出しのトランザクションの作成、またはコントラクトの作成を行います。
+
+**パラメータ**
+
+1. `DATA` - 署名されたトランザクションのデータ
+
+```js
+params: [
+ "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675",
+]
+```
+
+**戻り値**
+
+`DATA`、32 バイト - トランザクションのハッシュ、またはトランザクションがまだ使用可能でない場合はゼロハッシュ
+
+コントラクトのアドレスを取得するには、コントラクトを作成したトランザクションがマイニングされた後に[eth_getTransactionReceipt](#eth_gettransactionreceipt)を使用します。
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":[{see above}],"id":1}'
+// Result
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"
+}
+```
+
+### eth_call {#eth_call}
+
+ブロックチェーン上にトランザクションを作成することなく、即時に新規メッセージ呼び出しを実行します。
+
+**パラメータ**
+
+1. `Object` - トランザクションの呼び出しオブジェクト
+
+- `from`: `DATA`、20 バイト - トランザクションの送信元アドレス
+- `to`: `DATA`、20 バイト - トランザクションの宛先アドレス
+- `gas`: `QUANTITY` - (オプション) トランザクションを実行するために提供されているガス (整数) 。 eth_call はガスを消費しませんが、このパラメータは、一部の実行では必要になる場合があります
+- `gasPrice`: `QUANTITY` - (オプション) ガスの支払いに適用されるガス価格 (整数)
+- `value`: `QUANTITY` - (オプション) このトランザクションで送信された価値 (整数)
+- `data`: `DATA` - (オプション) メソッド署名とエンコードされたパラメータのハッシュ。 詳細については、[Solidity のドキュメントのイーサリアムコントラクト ABI](https://docs.soliditylang.org/en/latest/abi-spec.html)を参照してください
+
+2. `QUANTITY|TAG` - ブロック番号 (整数)、または文字列`"latest"`、`"earliest"`、`"pending"`のいずれか。[デフォルトのブロックパラメータ](/developers/docs/apis/json-rpc/#default-block-parameter)を参照してください
+
+**戻り値**
+
+`DATA` - 実行されたコントラクトの戻り値
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_call","params":[{see above}],"id":1}'
+// Result
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0x"
+}
+```
+
+### eth_estimateGas {#eth_estimategas}
+
+トランザクションの完了に必要なガスの推定値を計算して返します。 このトランザクションはブロックチェーンに加えられません。 推定値は、EVM の仕組みやノードのパフォーマンスなどのさまざまな理由により、トランザクションによって実際に使われる実際のガス量を大幅に上回る可能性があることに注意してください。
+
+**パラメータ**
+
+[eth_call](#eth_call)パラメータを参照してください。ただし、すべてのプロパティはオプションです。 ガスリミットが指定されていない場合、Geth では保留中のブロックのガスリミットが上限値として使用されます。 その結果、保留中のブロックのガスリミットよりガス量が多い場合には、返される推定値の量では、呼び出し/トランザクションを実行するには十分でないことがあります。
+
+**戻り値**
+
+`QUANTITY` - ガス使用量
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_estimateGas","params":[{see above}],"id":1}'
+// Result
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0x5208" // 21000
+}
+```
+
+### eth_getBlockByHash {#eth_getblockbyhash}
+
+ハッシュを使用して、ブロックに関する情報を返します。
+
+**パラメータ**
+
+1. `DATA`、32 バイト - ブロックのハッシュ
+2. `Boolean` - `true`の場合は、完全なトランザクションオブジェクトを返します。 `false`の場合は、トランザクションのハッシュのみを返します
+
+```js
+params: [
+ "0xdc0818cf78f21a8e70579cb46a43643f78291264dda342ae31049421c82d21ae",
+ false,
+]
+```
+
+**戻り値**
+
+`Object` - ブロックオブジェクト、またはブロックが見つからなかった場合は`null`
+
+- `number`: `QUANTITY` - ブロック番号。 保留中のブロックの場合は`null`
+- `hash`: `DATA`、32 バイト - ブロックのハッシュ。 保留中のブロックの場合は`null`
+- `parentHash`: `DATA`、32 バイト - 親ブロックのハッシュ
+- `nonce`: `DATA`、8 バイト - 生成されたプルーフ・オブ・ワークのハッシュ。 保留中のブロックの場合は`null`
+- `sha3Uncles`: `DATA`、32 バイト - ブロックのアンクルデータの SHA3
+- `logsBloom`: `DATA`、256 バイト - ブロックのログのブルームフィルタ。 保留中のブロックの場合は`null`
+- `transactionsRoot`: `DATA`、32 バイト - ブロックのトランザクションツリーのルート
+- `stateRoot`: `DATA`、32 バイト - ブロックの最終状態ツリーのルート
+- `receiptsRoot`: `DATA`、32 バイト - ブロックのレシートツリーのルート
+- `miner`: `DATA`、20 バイト - マイニング報酬が支払われる受益者のアドレス
+- `difficulty`: `QUANTITY` - このブロックの難易度 (整数)
+- `totalDifficulty`: `QUANTITY` -このブロックまでのチェーンの合計難易度 (整数)
+- `extraData`: `DATA` - このブロックの「extra data」フィールド
+- `size`: `QUANTITY` - このブロックのサイズのバイト数 (整数)
+- `gasLimit`: `QUANTITY` - このブロックで許可されているガスの最大量
+- `gasUsed`: `QUANTITY` - このブロックのすべてのトランザクションで使用されたガスの合計量
+- `timestamp`: `QUANTITY` - ブロックが照合されたときの UNIX タイムスタンプ
+- `transactions`: `Array` - 最後に指定したパラメータに応じて、トランザクションオブジェクトの配列、または 32 バイトのトランザクションハッシュ
+- `uncles`: `Array` - アンクルハッシュの配列
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByHash","params":["0xdc0818cf78f21a8e70579cb46a43643f78291264dda342ae31049421c82d21ae", false],"id":1}'
+// Result
+{
+{
+"jsonrpc": "2.0",
+"id": 1,
+"result": {
+ "difficulty": "0x4ea3f27bc",
+ "extraData": "0x476574682f4c5649562f76312e302e302f6c696e75782f676f312e342e32",
+ "gasLimit": "0x1388",
+ "gasUsed": "0x0",
+ "hash": "0xdc0818cf78f21a8e70579cb46a43643f78291264dda342ae31049421c82d21ae",
+ "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+ "miner": "0xbb7b8287f3f0a933474a79eae42cbca977791171",
+ "mixHash": "0x4fffe9ae21f1c9e15207b1f472d5bbdd68c9595d461666602f2be20daf5e7843",
+ "nonce": "0x689056015818adbe",
+ "number": "0x1b4",
+ "parentHash": "0xe99e022112df268087ea7eafaf4790497fd21dbeeb6bd7a1721df161a6657a54",
+ "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+ "size": "0x220",
+ "stateRoot": "0xddc8b0234c2e0cad087c8b389aa7ef01f7d79b2570bccb77ce48648aa61c904d",
+ "timestamp": "0x55ba467c",
+ "totalDifficulty": "0x78ed983323d",
+ "transactions": [
+ ],
+ "transactionsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
+ "uncles": [
+ ]
+}
+}
+```
+
+### eth_getBlockByNumber {#eth_getblockbynumber}
+
+ブロック番号を使用して、ブロックに関する情報を返します。
+
+**パラメータ**
+
+1. `QUANTITY|TAG` - ブロック番号 (整数)、または文字列`"latest"`、`"earliest"`、`"pending"`のいずれか。[デフォルトのブロックパラメータ](/developers/docs/apis/json-rpc/#default-block-parameter)を参照してください
+2. `Boolean` - `true`の場合は、完全なトランザクションオブジェクトを返します。 `false`の場合は、トランザクションのハッシュのみを返します
+
+```js
+params: [
+ "0x1b4", // 436
+ true,
+]
+```
+
+**戻り値**については、[eth_getBlockByHash](#eth_getblockbyhash)を参照してください。
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["0x1b4", true],"id":1}'
+```
+
+結果については、[eth_getBlockByHash](#eth_getblockbyhash)を参照してください。
+
+### eth_getTransactionByHash {#eth_gettransactionbyhash}
+
+トランザクションハッシュを使用して、リクエストされたトランザクションに関する情報を返します。
+
+**パラメータ**
+
+1. `DATA`、32 バイト - トランザクションのハッシュ
+
+```js
+params: ["0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"]
+```
+
+**戻り値**
+
+`Object` - トランザクションオブジェクト、またはトランザクションが見つからなかった場合は`null`
+
+- `blockHash`: `DATA`、32 バイト - このトランザクションが組み込まれていたブロックのハッシュ。 保留中の場合は`null`
+- `blockNumber`: `QUANTITY` - このトランザクションが組み込まれていたブロックの番号。 保留中の場合は`null`
+- `from`: `DATA`、20 バイト - 送信者のアドレス
+- `gas`: `QUANTITY` - 送信者が提供するガス
+- `gasPrice`: `QUANTITY` - 送信者が指定したガス価格 (wei 単位)
+- `hash`: `DATA`、32 バイト - トランザクションのハッシュ
+- `input`: `DATA` - トランザクションと共に送信されるデータ
+- `nonce`: `QUANTITY` - 送信者がこのトランザクションより前に送信したトランザクションの数
+- `to`: `DATA`、20 バイト - 受信者のアドレス。 コントラクト作成時のトランザクションは`null`
+- `transactionIndex`: `QUANTITY` - ブロック内のトランザクションのインデックスの位置 (整数)。 保留中の場合は`null`
+- `value`: `QUANTITY` - 送金された価値 (wei 単位)
+- `v`: `QUANTITY` - ECDSA のリカバリ ID
+- `r`: `QUANTITY` - ECDSA 署名 r
+- `s`: `QUANTITY` - ECDSA 署名 s
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByHash","params":["0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b"],"id":1}'
+// Result
+{
+ "jsonrpc":"2.0",
+ "id":1,
+ "result":{
+ "blockHash":"0x1d59ff54b1eb26b013ce3cb5fc9dab3705b415a67127a003c3e61eb445bb8df2",
+ "blockNumber":"0x5daf3b", // 6139707
+ "from":"0xa7d9ddbe1f17865597fbd27ec712455208b6b76d",
+ "gas":"0xc350", // 50000
+ "gasPrice":"0x4a817c800", // 20000000000
+ "hash":"0x88df016429689c079f3b2f6ad39fa052532c56795b733da78a91ebe6a713944b",
+ "input":"0x68656c6c6f21",
+ "nonce":"0x15", // 21
+ "to":"0xf02c1c8e6114b1dbe8937a39260b5b0a374432bb",
+ "transactionIndex":"0x41", // 65
+ "value":"0xf3dbb76162000", // 4290000000000000
+ "v":"0x25", // 37
+ "r":"0x1b5e176d927f8e9ab405058b2d2457392da3e20f328b16ddabcebc33eaac5fea",
+ "s":"0x4ba69724e8f69de52f0125ad8b3c5c2cef33019bac3249e2c0a2192766d1721c"
+ }
+}
+```
+
+### eth_getTransactionByBlockHashAndIndex {#eth_gettransactionbyblockhashandindex}
+
+ブロックのハッシュとトランザクションのインデックスの位置を使用して、トランザクションに関する情報を返します。
+
+**パラメータ**
+
+1. `DATA`、32 バイト - ブロックのハッシュ
+2. `QUANTITY` - トランザクションのインデックスの位置 (整数)
+
+```js
+params: [
+ "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331",
+ "0x0", // 0
+]
+```
+
+**戻り値**については、[eth_getTransactionByHash](#eth_gettransactionbyhash)を参照してください。
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockHashAndIndex","params":["0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b", "0x0"],"id":1}'
+```
+
+結果については、[eth_getTransactionByHash](#eth_gettransactionbyhash)を参照してください。
+
+### eth_getTransactionByBlockNumberAndIndex {#eth_gettransactionbyblocknumberandindex}
+
+ブロック番号とトランザクションのインデックスの位置を使用して、トランザクションに関する情報を返します。
+
+**パラメータ**
+
+1. `QUANTITY|TAG` - ブロック番号、または文字列`"latest"`、`"earliest"`、`"pending"`のいずれか。[デフォルトのブロックパラメータ](/developers/docs/apis/json-rpc/#default-block-parameter)を参照してください
+2. `QUANTITY` - トランザクションのインデックスの位置
+
+```js
+params: [
+ "0x29c", // 668
+ "0x0", // 0
+]
+```
+
+**戻り値**については、[eth_getTransactionByHash](#eth_gettransactionbyhash)を参照してください
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionByBlockNumberAndIndex","params":["0x29c", "0x0"],"id":1}'
+```
+
+結果については、[eth_getTransactionByHash](#eth_gettransactionbyhash)を参照してください
+
+### eth_getTransactionReceipt {#eth_gettransactionreceipt}
+
+トランザクションのハッシュを使用して、トランザクションのレシートを返します。
+
+**注** : 保留中のトランザクションでは、レシートは得られません。
+
+**パラメータ**
+
+1. `DATA`、32 バイト - トランザクションのハッシュ
+
+```js
+params: ["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"]
+```
+
+**戻り値** `Object` - トランザクションレシートのオブジェクト、またはレシートが見つからなかった場合は`null`
+
+- `transactionHash`: `DATA`、32 バイト - トランザクションのハッシュ
+- `transactionIndex`: `QUANTITY` - ブロック内のトランザクションインデックスの位置 (整数)
+- `blockHash`: `DATA`、32 バイト - このトランザクションが組み込まれていたブロックのハッシュ
+- `blockNumber`: `QUANTITY` - このトランザクションが組み込まれていたブロックの番号
+- `from`: `DATA`、20 バイト - 送信者のアドレス
+- `to`: `DATA`、20 バイト - 受信者のアドレス。 コントラクト作成時のトランザクションは null
+- `cumulativeGasUsed`:`QUANTITY` - ブロック内でこのトランザクションを実行する際に使用されたガスの総量
+- `gasUsed`: `QUANTITY` - この特定のトランザクションのみで使用されたガスの量
+- `contractAddress`: `DATA`、20 バイト - コントラクト作成時のトランザクションの場合は作成されたコントラクトのアドレス、その他の場合は`null`
+- `logs`: `Array` - このトランザクションによって生成されたログオブジェクトの配列
+- `logsBloom`: `DATA`、256 バイト - 関連ログを迅速に取得するためのライトクライアント用のブルームフィルター。 また、以下の*いずれか*も返します
+- `root` : `DATA`、32 バイト - トランザクション後の状態ルート (Byzantium より前)
+- `status`: `QUANTITY` - `1` (成功)、または`0` (失敗)
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238"],"id":1}'
+// Result
+{
+"id":1,
+"jsonrpc":"2.0",
+"result": {
+ transactionHash: '0xb903239f8543d04b5dc1ba6579132b143087c68db1b2168786408fcbce568238',
+ transactionIndex: '0x1', // 1
+ blockNumber: '0xb', // 11
+ blockHash: '0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b',
+ cumulativeGasUsed: '0x33bc', // 13244
+ gasUsed: '0x4dc', // 1244
+ contractAddress: '0xb60e8dd61c5d32be8058bb8eb970870f07233155', // or null, if none was created
+ logs: [{
+ // logs as returned by getFilterLogs, etc.
+ }, ...],
+ logsBloom: "0x00...0", // 256 byte bloom filter
+ status: '0x1'
+ }
+}
+```
+
+### eth_getUncleByBlockHashAndIndex {#eth_getunclebyblockhashandindex}
+
+ハッシュとアンクルインデックスの位置を使用して、ブロックのアンクルに関する情報を返します。
+
+**パラメータ**
+
+1. `DATA`、32 バイト - ブロックのハッシュ
+2. `QUANTITY` - アンクルインデックスの位置
+
+```js
+params: [
+ "0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b",
+ "0x0", // 0
+]
+```
+
+**戻り値**については、[eth_getBlockByHash](#eth_getblockbyhash)を参照してください。
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockHashAndIndex","params":["0xc6ef2fc5426d6ad6fd9e2a26abeab0aa2411b7ab17f30a99d3cb96aed1d1055b", "0x0"],"id":1}'
+```
+
+結果については、[eth_getBlockByHash](#eth_getblockbyhash)を参照してください。
+
+**注**: アンクルには、個々のトランザクションは含まれていません。
+
+### eth_getUncleByBlockNumberAndIndex {#eth_getunclebyblocknumberandindex}
+
+ブロック番号とアンクルのインデックスの位置を使用して、ブロックのアンクルに関する情報を返します。
+
+**パラメータ**
+
+1. `QUANTITY|TAG` - ブロック番号、または文字列`"latest"`、`"earliest"`、`"pending"`のいずれか。[デフォルトのブロックパラメータ](/developers/docs/apis/json-rpc/#default-block-parameter)を参照してください
+2. `QUANTITY` - アンクルのインデックスの位置
+
+```js
+params: [
+ "0x29c", // 668
+ "0x0", // 0
+]
+```
+
+**戻り値**については、[eth_getBlockByHash](#eth_getblockbyhash)を参照してください。
+
+**注**: アンクルには、個々のトランザクションは含まれていません。
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getUncleByBlockNumberAndIndex","params":["0x29c", "0x0"],"id":1}'
+```
+
+結果については、[eth_getBlockByHash](#eth_getblockbyhash)を参照してください。
+
+### eth_getCompilers {#eth_getcompilers}
+
+クライアントで利用可能なコンパイラのリストを返します。
+
+**パラメータ** なし
+
+**戻り値** `Array` - 利用可能なコンパイラの配列
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getCompilers","params":[],"id":1}'
+// Result
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": ["solidity", "lll", "serpent"]
+}
+```
+
+### eth_compileSolidity {#eth_compile_solidity}
+
+コンパイルされた Solidity コードを返します。
+
+**パラメータ**
+
+1. `String` - ソースコード
+
+```js
+params: [
+ "contract test { function multiply(uint a) returns(uint d) { return a * 7; } }",
+]
+```
+
+**戻り値** `DATA` - コンパイルされたソースコード
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_compileSolidity","params":["contract test { function multiply(uint a) returns(uint d) { return a * 7; } }"],"id":1}'
+// Result
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": {
+ "code": "0x605880600c6000396000f3006000357c010000000000000000000000000000000000000000000000000000000090048063c6888fa114602e57005b603d6004803590602001506047565b8060005260206000f35b60006007820290506053565b91905056",
+ "info": {
+ "source": "contract test {\n function multiply(uint a) constant returns(uint d) {\n return a * 7;\n }\n}\n",
+ "language": "Solidity",
+ "languageVersion": "0",
+ "compilerVersion": "0.9.19",
+ "abiDefinition": [
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "name": "a",
+ "type": "uint256"
+ }
+ ],
+ "name": "multiply",
+ "outputs": [
+ {
+ "name": "d",
+ "type": "uint256"
+ }
+ ],
+ "type": "function"
+ }
+ ],
+ "userDoc": {
+ "methods": {}
+ },
+ "developerDoc": {
+ "methods": {}
+ }
+ }
+}
+```
+
+### eth_compileLLL {#eth_compileLLL}
+
+コンパイルされた LLL コードを返します。
+
+**パラメータ**
+
+1. `String` - ソースコード
+
+```js
+params: ["(returnlll (suicide (caller)))"]
+```
+
+**戻り値** `DATA` - コンパイルされたソースコード
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_compileLLL","params":["(returnlll (suicide (caller)))"],"id":1}'
+// Result
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0x603880600c6000396000f3006001600060e060020a600035048063c6888fa114601857005b6021600435602b565b8060005260206000f35b600081600702905091905056" // the compiled source code
+}
+```
+
+### eth_compileSerpent {#eth_compileserpent}
+
+コンパイルされた Serpent コードを返します。
+
+**パラメータ**
+
+1. `String` - ソースコード
+
+```js
+params: ["/* some serpent */"]
+```
+
+**戻り値** `DATA` - コンパイルされたソースコード
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_compileSerpent","params":["/* some serpent */"],"id":1}'
+// Result
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0x603880600c6000396000f3006001600060e060020a600035048063c6888fa114601857005b6021600435602b565b8060005260206000f35b600081600702905091905056" // the compiled source code
+}
+```
+
+### eth_newFilter {#eth_newfilter}
+
+(ログの) 状態変更を通知するために、フィルターオプションに基づいてフィルターオブジェクトを作成します。 状態変更を確認するには、[eth_getFilterChanges](#eth_getfilterchanges)を呼び出します。
+
+**トピックフィルターを指定する際の注:** トピックは順序に依存します。 トピック [A, B] を持つログのトランザクションは、下記のトピックフィルターによってマッチングされます。
+
+- `[]` 「条件なし」
+- `[A]` 「最初の位置が A (その後の位置については条件なし) 」
+- `[null, B]`「最初の位置は条件なし、かつ 2 番目の位置が B (その後の位置については条件なし) 」
+- `[A, B]`「最初の位置が A、かつ 2 番目の位置が B (その後の位置については条件なし) 」
+- `[[A, B], [A, B]]`「最初の位置が (A または B)、かつ 2 番目の位置が (A または B) (その後の位置については条件なし) 」
+- **パラメータ**
+
+1. `Object` - フィルターのオプション
+
+- `fromBlock`: `QUANTITY|TAG` - (オプション、デフォルトは`"latest"`) ブロック番号 (整数)、または`"latest"` (最後にマイニングされたブロック)、`"pending"`、`"earliest"` (まだマイニングされていないトランザクション) のいずれか
+- `toBlock`: `QUANTITY|TAG` - (オプション、デフォルト: `"latest"`) ブロック番号 (整数) 。 `"latest"` (最後にマイニングされたブロック)。`"pending"`、`"earliest"` (まだマイニングされていないトランザクション) のいずれか
+- `address`: `DATA|Array`、20 バイト - (オプション) ログの生成元となるコントラクトアドレス、またはアドレスのリスト
+- `topics`: `Array of DATA`、- (オプション) 32 バイトの`DATA`配列のトピック。 トピックは順序に依存します。 各トピックは「or」オプションの DATA 配列にすることも可能
+
+```js
+params: [
+ {
+ fromBlock: "0x1",
+ toBlock: "0x2",
+ address: "0x8888f1f195afa192cfee860698584c030f4c9db1",
+ topics: [
+ "0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b",
+ null,
+ [
+ "0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b",
+ "0x0000000000000000000000000aff3454fce5edbc8cca8697c15331677e6ebccc",
+ ],
+ ],
+ },
+]
+```
+
+**戻り値** `QUANTITY` - フィルター ID
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newFilter","params":[{"topics":["0x12341234"]}],"id":73}'
+// Result
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0x1" // 1
+}
+```
+
+### eth_newBlockFilter {#eth_newblockfilter}
+
+新しいブロックの到着を通知するために、ノードにフィルターを作成します。 状態変更を確認するには、[eth_getFilterChanges](#eth_getfilterchanges)を呼び出します。
+
+**パラメータ** なし
+
+**戻り値** `QUANTITY` - フィルター ID
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newBlockFilter","params":[],"id":73}'
+// Result
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0x1" // 1
+}
+```
+
+### eth_newPendingTransactionFilter {#eth_newpendingtransactionfilter}
+
+新しい保留中のトランザクションの到着を通知するために、ノードにフィルターを作成します。 状態変更を確認するには、[eth_getFilterChanges](#eth_getfilterchanges)を呼び出します。
+
+**パラメータ** なし
+
+**戻り値** `QUANTITY` - フィルター ID
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_newPendingTransactionFilter","params":[],"id":73}'
+// Result
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0x1" // 1
+}
+```
+
+### eth_uninstallFilter {#eth_uninstallfilter}
+
+指定された ID のフィルターをアンインストールします。 ウォッチが不要になったときには、必ず呼び出す必要があります。 また、フィルターは一定の期間、[eth_getFilterChanges](#eth_getfilterchanges)を使用してリクエストされていないとタイムアウトします。
+
+**パラメータ**
+
+1. `QUANTITY` - フィルター ID
+
+```js
+params: [
+ "0xb", // 11
+]
+```
+
+**戻り値** `Boolean` - フィルターが正常にアンインストールされた場合は`true`、その他の場合は`false`
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_uninstallFilter","params":["0xb"],"id":73}'
+// Result
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": true
+}
+```
+
+### eth_getFilterChanges {#eth_getfilterchanges}
+
+フィルターのポーリングメソッド。最後のポーリング以降に発生したログの配列を返します。
+
+**パラメータ**
+
+1. `QUANTITY` - フィルター ID
+
+```js
+params: [
+ "0x16", // 22
+]
+```
+
+**戻り値** `Array` - ログオブジェクトの配列、または最後のポーリングから変化がない場合は空の配列
+
+- `eth_newBlockFilter`で作成したフィルターでは、ブロックハッシュ (`DATA`、32 バイト) が返されます (例: `["0x3454645634534..."]`)
+- `eth_newPendingTransactionFilter`で作成したフィルターでは、トランザクションハッシュ (`DATA`、32 バイト) が返されます (例: `["0x6345343454645..."]`)
+- `eth_newFilter`で作成されたフィルターでは、ログは下記のパラメータを持つオブジェクトになります
+ - `removed`: `TAG` - チェーンの再編成によってログが削除された場合は`true`。 ログが有効な場合は`false`
+ - `logIndex`: `QUANTITY` - ブロック内のログインデックスの位置 (整数)。 保留中のログの場合は`null`
+ - `transactionIndex`: `QUANTITY` - ログの作成元のトランザクションのインデックスの位置 (整数) 。 保留中のログの場合は`null`
+ - `transactionHash`: `DATA`、32 バイト - このログが作成されたトランザクションのハッシュ。 保留中のログの場合は`null`
+ - `blockHash`: `DATA`、32 バイト - このログが存在したブロックのハッシュ。 保留中の場合は`null`。 保留中のログの場合は`null`
+ - `blockNumber`: `QUANTITY` - このログが存在したブロックの番号。 保留中の場合は`null`。 保留中のログの場合は`null`
+ - `address`: `DATA`、20 バイト - このログの作成元のアドレス
+ - `data`: `DATA` - 1 つ以上の 32 バイトのインデックス付けされていないログの引数を含む
+ - `topics`: `Array of DATA` - 0 から 4 つの 32 バイトのインデックス付けされたログの引数の`DATA`配列 (*Solidity*の場合: 最初のトピックはイベント (例: `Deposit(address,bytes32,uint256)`) の署名の*ハッシュ*。ただし、`anonymous`指定子でイベントを宣言した場合を除きます)
+- **例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getFilterChanges","params":["0x16"],"id":73}'
+// Result
+{
+ "id":1,
+ "jsonrpc":"2.0",
+ "result": [{
+ "logIndex": "0x1", // 1
+ "blockNumber":"0x1b4", // 436
+ "blockHash": "0x8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcfdf829c5a142f1fccd7d",
+ "transactionHash": "0xdf829c5a142f1fccd7d8216c5785ac562ff41e2dcfdf5785ac562ff41e2dcf",
+ "transactionIndex": "0x0", // 0
+ "address": "0x16c5785ac562ff41e2dcfdf829c5a142f1fccd7d",
+ "data":"0x0000000000000000000000000000000000000000000000000000000000000000",
+ "topics": ["0x59ebeb90bc63057b6515673c3ecf9438e5058bca0f92585014eced636878c9a5"]
+ },{
+ ...
+ }]
+}
+```
+
+### eth_getFilterLogs {#eth_getfilterlogs}
+
+指定された ID のフィルターに一致する、すべてのログの配列を返します。
+
+**パラメータ**
+
+1. `QUANTITY` - フィルター ID
+
+```js
+params: [
+ "0x16", // 22
+]
+```
+
+**戻り値**については、 [eth_getFilterChanges](#eth_getfilterchanges)を参照してください。
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getFilterLogs","params":["0x16"],"id":74}'
+```
+
+結果については、[eth_getFilterChanges](#eth_getfilterchanges)を参照してください。
+
+### eth_getLogs {#eth_getlogs}
+
+指定されたフィルターオブジェクトに一致する、すべてのログの配列を返します。
+
+**パラメータ**
+
+1. `Object` - フィルターのオプション
+
+- `fromBlock`: `QUANTITY|TAG` - (オプション、デフォルトは`"latest"`) ブロック番号 (整数)、または`"latest"` (最後にマイニングされたブロック)、`"pending"`、`"earliest"` (まだマイニングされていないトランザクション) のいずれか
+- `toBlock`: `QUANTITY|TAG` - (オプション、デフォルト: `"latest"`) ブロック番号 (整数) 。 `"latest"` (最後にマイニングされたブロック)。`"pending"`、`"earliest"` (まだマイニングされていないトランザクション) のいずれか
+- `address`: `DATA|Array`、20 バイト - (オプション) ログの生成元となるコントラクトアドレス、またはアドレスのリスト
+- `topics`: `Array of DATA`、- (オプション) 32 バイトの`DATA`トピックの配列。 トピックは順序に依存します。 各トピックは「or」オプションの DATA 配列にすることも可能
+- `blockhash`: `DATA`、32 バイト - (オプション、**実装予定**) EIP-234 が追加されたことにより、`blockHash`が新たなフィルターオプションになります。これは、返されるログを 32 バイトのハッシュ`blockHash`を持つ単一のブロックに制限します。 `blockHash`を使用することは、`fromBlock`と`toBlock`に`blockHash`のハッシュのブロック番号を指定することと同等です。 `blockHash`がフィルター条件にある場合、`fromBlock`と`toBlock`は使用できません
+
+```js
+params: [
+ {
+ topics: [
+ "0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b",
+ ],
+ },
+]
+```
+
+**戻り値**については、 [eth_getFilterChanges](#eth_getfilterchanges)を参照してください。
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getLogs","params":[{"topics":["0x000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b"]}],"id":74}'
+```
+
+結果については、[eth_getFilterChanges](#eth_getfilterchanges)を参照してください。
+
+### eth_getWork {#eth_getwork}
+
+現在のブロックのハッシュ、シードハッシュ、 (「target」の) 境界条件を返します。
+
+**パラメータ** なし
+
+**戻り値** `Array` - 次のプロパティを持つ配列
+
+1. `DATA`、32 バイト - 現在のブロックヘッダーの PoW ハッシュ
+2. `DATA`、32 バイト - DAG に使用されるシードハッシュ
+3. `DATA`、32 バイト - 境界条件 (「target」)、2^256/難易度
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getWork","params":[],"id":73}'
+// Result
+{
+ "id":1,
+ "jsonrpc":"2.0",
+ "result": [
+ "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
+ "0x5EED00000000000000000000000000005EED0000000000000000000000000000",
+ "0xd1ff1c01710000000000000000000000d1ff1c01710000000000000000000000"
+ ]
+}
+```
+
+### eth_submitWork {#eth_submitwork}
+
+プルーフ・オブ・ワークの解答の送信に使用されます。
+
+**パラメータ**
+
+1. `DATA`、8 バイト - 見つかったノンス (nonce) (64 ビット)
+2. `DATA`、32 バイト - ヘッダーの PoW ハッシュ (256 ビット)
+3. `DATA`、32 バイト - ミックスダイジェスト (256 ビット)
+
+```js
+params: [
+ "0x0000000000000001",
+ "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
+ "0xD1FE5700000000000000000000000000D1FE5700000000000000000000000000",
+]
+```
+
+**戻り値** `Boolean` - 送信された解答が有効な場合は`true`、その他の場合は`false`
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0", "method":"eth_submitWork", "params":["0x0000000000000001", "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", "0xD1GE5700000000000000000000000000D1GE5700000000000000000000000000"],"id":73}'
+// Result
+{
+ "id":73,
+ "jsonrpc":"2.0",
+ "result": true
+}
+```
+
+### eth_submitHashrate {#eth_submithashrate}
+
+マイニングハッシュレートの送信に使用されます。
+
+**パラメータ**
+
+1. `Hashrate`、ハッシュレートの 16 進数の文字列表現 (32 バイト)
+2. `ID`、文字列 - クライアントを識別するランダムな 16 進数の ID (32 バイト)
+
+```js
+params: [
+ "0x0000000000000000000000000000000000000000000000000000000000500000",
+ "0x59daa26581d0acd1fce254fb7e85952f4c09d0915afd33d3886cd914bc7d283c",
+]
+```
+
+**戻り値** `Boolean` - 送信が成功した場合は`true`、その他の場合は`false`
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0", "method":"eth_submitHashrate", "params":["0x0000000000000000000000000000000000000000000000000000000000500000", "0x59daa26581d0acd1fce254fb7e85952f4c09d0915afd33d3886cd914bc7d283c"],"id":73}'
+// Result
+{
+ "id":73,
+ "jsonrpc":"2.0",
+ "result": true
+}
+```
+
+### db_putString (deprecated) {#db_putstring}
+
+ローカルデータベースに文字列を保存します。
+
+**注: ** この関数は非推奨です。
+
+**パラメータ**
+
+1. `String` - データベース名
+2. `String` - キーの名前
+3. `String` - 保存する文字列
+
+```js
+params: ["testDB", "myKey", "myString"]
+```
+
+**戻り値** `Boolean` - 値が保管された場合は`true`、その他の場合は`false`
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"db_putString","params":["testDB","myKey","myString"],"id":73}'
+// Result
+{
+ "id":1,
+ "jsonrpc":"2.0",
+ "result": true
+}
+```
+
+### db_getString (deprecated) {#db_getstring}
+
+ローカルデータベースから文字列を返します。 **注: ** この関数は非推奨です。
+
+**パラメータ**
+
+1. `String` - データベース名
+2. `String` - キーの名前
+
+```js
+params: ["testDB", "myKey"]
+```
+
+**戻り値** `String` - 前回保存した文字列
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"db_getString","params":["testDB","myKey"],"id":73}'
+// Result
+{
+ "id":1,
+ "jsonrpc":"2.0",
+ "result": "myString"
+}
+```
+
+### db_putHex (deprecated) {#db_puthex}
+
+ローカルデータベースにバイナリデータを保存します。 **注: ** この関数は非推奨です。
+
+**パラメータ**
+
+1. `String` - データベース名
+2. `String` - キーの名前
+3. `DATA` - 保存するデータ
+
+```js
+params: ["testDB", "myKey", "0x68656c6c6f20776f726c64"]
+```
+
+**戻り値** `Boolean` - 値が保管された場合は`true`、その他の場合は`false`
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"db_putHex","params":["testDB","myKey","0x68656c6c6f20776f726c64"],"id":73}'
+// Result
+{
+ "id":1,
+ "jsonrpc":"2.0",
+ "result": true
+}
+```
+
+### db_getHex (deprecated) {#db_gethex}
+
+ローカルデータベースからバイナリデータを返します。 **注: ** この関数は非推奨です。
+
+**パラメータ**
+
+1. `String` - データベース名
+2. `String` - キーの名前
+
+```js
+params: ["testDB", "myKey"]
+```
+
+**戻り値** `DATA` - 前回保存したデータ
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"db_getHex","params":["testDB","myKey"],"id":73}'
+// Result
+{
+ "id":1,
+ "jsonrpc":"2.0",
+ "result": "0x68656c6c6f20776f726c64"
+}
+```
+
+### shh_version (deprecated) {#shh_post}
+
+現在の Whisper プロトコルのバージョンを返します。
+
+**注: ** この関数は非推奨です。
+
+**パラメータ** なし
+
+**戻り値** `String` - 現在の Whisper プロトコルのバージョン
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"shh_version","params":[],"id":67}'
+// Result
+{
+ "id":67,
+ "jsonrpc": "2.0",
+ "result": "2"
+}
+```
+
+### shh_post (deprecated) {#shh_version}
+
+Whisper メッセージを送信します。
+
+**注: ** この関数は非推奨です。
+
+**パラメータ**
+
+1. `Object` - Whisper ポストオブジェクト
+
+- `from`: `DATA`、60 バイト - (オプション) 送信者のアイデンティティ
+- `to`: `DATA`、60 バイト - (オプション) 受信者のアイデンティティ。 このオプションがある場合、Whisper は受信者のみが復号できるようにメッセージを暗号化します
+- `topics`: `Array of DATA` - 受信者がメッセージを識別するための、`DATA`配列のトピック
+- `payload`: `DATA` - メッセージのペイロード
+- `priority`: `QUANTITY` - ... (?) からの rang の優先度 (整数)
+- `ttl`: `QUANTITY` - 存続期間 (秒単位の整数)
+
+```js
+params: [
+ {
+ from: "0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1",
+ to: "0x3e245533f97284d442460f2998cd41858798ddf04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a0d4d661997d3940272b717b1",
+ topics: [
+ "0x776869737065722d636861742d636c69656e74",
+ "0x4d5a695276454c39425154466b61693532",
+ ],
+ payload: "0x7b2274797065223a226d6",
+ priority: "0x64",
+ ttl: "0x64",
+ },
+]
+```
+
+**戻り値** `Boolean` - メッセージが送信された場合は`true`、その他の場合は`false`
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"shh_post","params":[{"from":"0xc931d93e97ab07fe42d923478ba2465f2..","topics": ["0x68656c6c6f20776f726c64"],"payload":"0x68656c6c6f20776f726c64","ttl":0x64,"priority":0x64}],"id":73}'
+// Result
+{
+ "id":1,
+ "jsonrpc":"2.0",
+ "result": true
+}
+```
+
+### shh_newIdentity (deprecated){#shh_newidentity}
+
+クライアントに新規の Whisper アイデンティティを作成します。
+
+**注: ** この関数は非推奨です。
+
+**パラメータ** なし
+
+**戻り値** `DATA`、60 バイト - 新規アイデンティティのアドレス
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"shh_newIdentity","params":[],"id":73}'
+// Result
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0xc931d93e97ab07fe42d923478ba2465f283f440fd6cabea4dd7a2c807108f651b7135d1d6ca9007d5b68aa497e4619ac10aa3b27726e1863c1fd9b570d99bbaf"
+}
+```
+
+### shh_hasIdentity (deprecated){#shh_hasidentity}
+
+指定されたアイデンティティの秘密鍵を、クライアントが保持しているかどうかを確認します。
+
+**注: ** この関数は非推奨です。
+
+**パラメータ**
+
+1. `DATA`、60 バイト - 確認するアイデンティティのアドレス
+
+```js
+params: [
+ "0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1",
+]
+```
+
+**戻り値** `Boolean` - クライアントがアイデンティティの秘密鍵を持っている場合は`true`、その他の場合は`false`
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"shh_hasIdentity","params":["0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1"],"id":73}'
+// Result
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": true
+}
+```
+
+### shh_newGroup (deprecated){#shh_newgroup}
+
+**注: ** この関数は非推奨です。
+
+**パラメータ** なし
+
+**戻り値** `DATA`、60 バイト - 新規グループのアドレス (?)
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"shh_newGroup","params":[],"id":73}'
+// Result
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": "0xc65f283f440fd6cabea4dd7a2c807108f651b7135d1d6ca90931d93e97ab07fe42d923478ba2407d5b68aa497e4619ac10aa3b27726e1863c1fd9b570d99bbaf"
+}
+```
+
+### shh_addToGroup (deprecated){#shh_addtogroup}
+
+**注: ** この関数は非推奨です。
+
+**パラメータ**
+
+1. `DATA`、60 バイト - グループに追加するアイデンティティのアドレス (?)
+
+```js
+params: [
+ "0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1",
+]
+```
+
+**戻り値** `Boolean` - アイデンティティのグループへの追加が成功した場合は`true`、その他の場合は`false` (?)
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"shh_addToGroup","params":["0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1"],"id":73}'
+// Result
+{
+ "id":1,
+ "jsonrpc": "2.0",
+ "result": true
+}
+```
+
+### shh_newFilter (deprecated){#shh_newfilter}
+
+クライアントがフィルターオプションに一致する Whisper メッセージを受信したときに、そのことを通知するためのフィルターを作成します。 **注: ** この関数は非推奨です。
+
+**パラメータ**
+
+1. `Object` - フィルターオプション
+
+- `to`: `DATA`、60 バイト - (オプション) 受信者のアイデンティティ。 _このオプションが存在しているときにクライアントがこのアイデンティティの秘密鍵を保持していると、すべての受信メッセージの復号が試行されます_
+- `topics`: `Array of DATA` - 受信メッセージのトピックとマッチングする`DATA`配列のトピック You can use the following combinations:
+ - `[A, B] = A && B`
+ - `[A, [B, C]] = A && (B || C)`
+ - `[null, A, B] = ANYTHING && A && B` (`null`はワイルドカードとして機能)
+ -
+
+```js
+params: [
+ {
+ topics: ["0x12341234bf4b564f"],
+ to: "0x04f96a5e25610293e42a73908e93ccc8c4d4dc0edcfa9fa872f50cb214e08ebf61a03e245533f97284d442460f2998cd41858798ddfd4d661997d3940272b717b1",
+ },
+]
+```
+
+**戻り値** `QUANTITY` - 新しく作成されたフィルター
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"shh_newFilter","params":[{"topics": ['0x12341234bf4b564f'],"to": "0x2341234bf4b2341234bf4b564f..."}],"id":73}'
+// Result
+{
+ "id":1,
+ "jsonrpc":"2.0",
+ "result": "0x7" // 7
+}
+```
+
+### shh_uninstallFilter (deprecated){#shh_uninstallfilter}
+
+指定された ID を使用して、フィルターをアンインストールします。 ウォッチが不要になったときには、必ず呼び出す必要があります。 また、フィルターは一定の期間、[shh_getFilterChanges](#shh_getfilterchanges)を使用してリクエストされていないとタイムアウトします。 **注: ** この関数は非推奨です。
+
+**パラメータ**
+
+1. `QUANTITY` - フィルター ID
+
+```js
+params: [
+ "0x7", // 7
+]
+```
+
+**戻り値** `Boolean` - フィルターのアンインストールに成功した場合は`true`、その他の場合は`false`
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"shh_uninstallFilter","params":["0x7"],"id":73}'
+// Result
+{
+ "id":1,
+ "jsonrpc":"2.0",
+ "result": true
+}
+```
+
+### shh_getFilterChanges (deprecated){#shh_getfilterchanges}
+
+Whisper フィルターのポーリングメソッド。 このメソッドの最後の呼び出し以降の新しいメッセージを返します。 **注: **[shh_getMessages](#shh_getmessages)メソッドを呼び出すと、重複メッセージを受信しないように、このメソッドのバッファーがリセットされます。 **注: ** この関数は非推奨です。
+
+**パラメータ**
+
+1. `QUANTITY` - フィルター ID
+
+```js
+params: [
+ "0x7", // 7
+]
+```
+
+**戻り値** `Array` - 最後のポーリング以降に受信したメッセージの配列
+
+- `hash`: `DATA`、32 バイト (?) - メッセージのハッシュ
+- `from`: `DATA`、60 バイト - 送信者が指定されている場合、メッセージの送信者
+- `to`: `DATA`、60 バイト - 受信者が指定されている場合、メッセージの受信者
+- `expiry`: `QUANTITY` - このメッセージが期限切れになる時間 (秒単位の整数) (?)
+- `ttl`: `QUANTITY` - システム内のメッセージの存続時間 (秒単位の整数)
+- `sent`: `QUANTITY` - メッセージの送信時の UNIX タイムスタンプ (整数)
+- `topics`: `Array of DATA` - メッセージに含まれる`DATA`配列のトピック
+- `payload`: `DATA` - メッセージのペイロード
+- `workProved`: `QUANTITY` - このメッセージを送信する前に必要となったワーク (整数) (?)
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"shh_getFilterChanges","params":["0x7"],"id":73}'
+// Result
+{
+ "id":1,
+ "jsonrpc":"2.0",
+ "result": [{
+ "hash": "0x33eb2da77bf3527e28f8bf493650b1879b08c4f2a362beae4ba2f71bafcd91f9",
+ "from": "0x3ec052fc33..",
+ "to": "0x87gdf76g8d7fgdfg...",
+ "expiry": "0x54caa50a", // 1422566666
+ "sent": "0x54ca9ea2", // 1422565026
+ "ttl": "0x64", // 100
+ "topics": ["0x6578616d"],
+ "payload": "0x7b2274797065223a226d657373616765222c2263686...",
+ "workProved": "0x0"
+ }]
+}
+```
+
+### shh_getMessages (deprecated) {#shh_getmessages}
+
+フィルターに一致するメッセージをすべて取得します。 `shh_getFilterChanges`とは異なり、すべてのメッセージを返します。
+
+**注: ** この関数は非推奨です。
+
+**パラメータ**
+
+1. `QUANTITY` - フィルター ID
+
+```js
+params: [
+ "0x7", // 7
+]
+```
+
+**戻り値**については、 [shh_getFilterChanges](#shh_getfilterchanges)を参照してください。
+
+**例**
+
+```js
+// Request
+curl -X POST --data '{"jsonrpc":"2.0","method":"shh_getMessages","params":["0x7"
+],"id":73}'
+```
+
+結果については、[shh_getFilterChanges](#shh_getfilterchanges)を参照してください。
+
+## 使用例 {#usage-example}
+
+### JSON_RPC を使用してコントラクトをデプロイする {#deploying-contract}
+
+このセクションでは、RPC インターフェースのみを使用してコントラクトをデプロイする方法について、実例を交えて説明します。 コントラクトをデプロイする際の複雑さを抽象化できる別の方法があります。例えば、RPC インターフェースを基盤に作成されたライブラリ ([web3.js](https://web3js.readthedocs.io/)、[web3.py](https://github.com/ethereum/web3.py)など)を使用できます。 一般には、抽象化すると簡単に理解できるようになり、エラーも起こりにくくなります。それでも、内部で何が起きているのかを知ることは役に立ちます。
+
+以下は、JSON-RPC インターフェースを使用してイーサリアムノードにデプロイされる、`Multiply7`と呼ばれる簡単なスマートコントラクトです。 このチュートリアルは、読者がすでに Geth ノードを実行していることを前提としています。 ノードとクライアントの詳細については、[こちら](/developers/docs/nodes-and-clients/run-a-node)をご覧ください。 また、Geth クライアント以外の HTTP JSON-RPC を起動する方法については、それぞれの[クライアント](/developers/docs/nodes-and-clients/)のドキュメントを参照してください。 ほとんどのクライアントは、デフォルトでは`localhost:8545`で動作します。
+
+```javascript
+contract Multiply7 {
+ event Print(uint);
+ function multiply(uint input) returns (uint) {
+ Print(input * 7);
+ return input * 7;
+ }
+}
+```
+
+まず、HTTP RPC インターフェースが有効になっていることを確認します。 つまり、Geth の起動時に`--http`フラグを設定します。 この例では、プライベート開発チェーン上の Geth ノードを使用します。 このアプローチを使用する際には、本物のネットワーク上の Ether は必要ありません。
+
+```bash
+
+geth --http --dev --mine --miner.threads 1 --unlock 0 console 2>>geth.log
+
+```
+
+これにより、HTTP RPC インターフェースが`http://localhost:8545`で開始します。
+
+[curl](https://curl.haxx.se/download.html)を使用してコインベースアドレスと残高を取得することにより、インターフェースが実行されていることを確認できます。 例で示されているデータは、ローカルノードによって異なります。ご注意ください。 これらのコマンドを試す場合は、2 番目の curl リクエストの request パラメータの値を、1 番目の curl リクエストから返された result パラメータに置き換えてください。
+
+```bash
+curl --data '{"jsonrpc":"2.0","method":"eth_coinbase", "id":1}' -H "Content-Type: application/json" localhost:8545
+{"id":1,"jsonrpc":"2.0","result":["0x9b1d35635cc34752ca54713bb99d38614f63c955"]}
+
+curl --data '{"jsonrpc":"2.0","method":"eth_getBalance", "params": ["0x9b1d35635cc34752ca54713bb99d38614f63c955", "latest"], "id":2}' -H "Content-Type: application/json" localhost:8545
+{"id":2,"jsonrpc":"2.0","result":"0x1639e49bba16280000"}
+```
+
+数値は 16 進数でエンコードされているため、残高は 16 進数の wei で返されます。 Ether 単位で残高を確認したい場合は、Geth コンソールから Web3 を使用できます。
+
+```javascript
+web3.fromWei("0x1639e49bba16280000", "ether")
+// "410"
+```
+
+これでプライベート開発チェーンに Ether が存在するようになったため、コントラクトをデプロイできます。 最初のステップは、Multiply7 コントラクトを EVM に送信できるバイトコードにコンパイルすることです。 Solidity のコンパイラである solc をインストールするには、[Solidity ドキュメント](https://docs.soliditylang.org/en/latest/installing-solidity.html)を参照してください ([この例で使用しているコンパイラのバージョン](https://github.com/ethereum/solidity/releases/tag/v0.4.20)に適合するように、古い`solc`リリースを使用することをお勧めします)。
+
+次のステップでは、Multiply7 コントラクトを、EVM に送信できるバイトコードにコンパイルします。
+
+```bash
+echo 'pragma solidity ^0.4.16; contract Multiply7 { event Print(uint); function multiply(uint input) public returns (uint) { Print(input * 7); return input * 7; } }' | solc --bin
+
+======= :Multiply7 =======
+Binary:
+6060604052341561000f57600080fd5b60eb8061001d6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063c6888fa1146044575b600080fd5b3415604e57600080fd5b606260048080359060200190919050506078565b6040518082815260200191505060405180910390f35b60007f24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da600783026040518082815260200191505060405180910390a16007820290509190505600a165627a7a7230582040383f19d9f65246752244189b02f56e8d0980ed44e7a56c0b200458caad20bb0029
+```
+
+これで、コードがコンパイルされました。次に、デプロイに必要なガスの量を特定する必要があります。 RPC インターフェースには、推定値を取得するための`eth_estimateGas`メソッドがあります。
+
+```bash
+curl --data '{"jsonrpc":"2.0","method": "eth_estimateGas", "params": [{"from": "0x9b1d35635cc34752ca54713bb99d38614f63c955", "data": "0x6060604052341561000f57600080fd5b60eb8061001d6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063c6888fa1146044575b600080fd5b3415604e57600080fd5b606260048080359060200190919050506078565b6040518082815260200191505060405180910390f35b60007f24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da600783026040518082815260200191505060405180910390a16007820290509190505600a165627a7a7230582040383f19d9f65246752244189b02f56e8d0980ed44e7a56c0b200458caad20bb0029"}], "id": 5}' -H "Content-Type: application/json" localhost:8545
+{"jsonrpc":"2.0","id":5,"result":"0x1c31e"}
+```
+
+最後に、コントラクトをデプロイします。
+
+```bash
+curl --data '{"jsonrpc":"2.0","method": "eth_sendTransaction", "params": [{"from": "0x9b1d35635cc34752ca54713bb99d38614f63c955", "gas": "0x1c31e", "data": "0x6060604052341561000f57600080fd5b60eb8061001d6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063c6888fa1146044575b600080fd5b3415604e57600080fd5b606260048080359060200190919050506078565b6040518082815260200191505060405180910390f35b60007f24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da600783026040518082815260200191505060405180910390a16007820290509190505600a165627a7a7230582040383f19d9f65246752244189b02f56e8d0980ed44e7a56c0b200458caad20bb0029"}], "id": 6}' -H "Content-Type: application/json" localhost:8545
+{"id":6,"jsonrpc":"2.0","result":"0xe1f3095770633ab2b18081658bad475439f6a08c902d0915903bafff06e6febf"}
+```
+
+トランザクションがノードによって受け入れられると、トランザクションのハッシュが返されます。 このハッシュはトランザクションの追跡に使用されます。 次のステップは、コントラクトがデプロイされているアドレスを特定することです。 実行された各トランザクションによって、レシートが作成されます。 このレシートには、トランザクションが含まれていたブロックや、EVM によって使用されたガスの量など、トランザクションに関するさまざまな情報が含まれています。 トランザクション でコントラクトが作成される場合は、コントラクトのアドレスも含まれています。 レシートは、`eth_getTransactionReceipt` RPC メソッドで取得できます。
+
+```bash
+curl --data '{"jsonrpc":"2.0","method": "eth_getTransactionReceipt", "params": ["0xe1f3095770633ab2b18081658bad475439f6a08c902d0915903bafff06e6febf"], "id": 7}' -H "Content-Type: application/json" localhost:8545
+{"jsonrpc":"2.0","id":7,"result":{"blockHash":"0x77b1a4f6872b9066312de3744f60020cbd8102af68b1f6512a05b7619d527a4f","blockNumber":"0x1","contractAddress":"0x4d03d617d700cf81935d7f797f4e2ae719648262","cumulativeGasUsed":"0x1c31e","from":"0x9b1d35635cc34752ca54713bb99d38614f63c955","gasUsed":"0x1c31e","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","status":"0x1","to":null,"transactionHash":"0xe1f3095770633ab2b18081658bad475439f6a08c902d0915903bafff06e6febf","transactionIndex":"0x0"}}
+```
+
+これで、コントラクトが`0x4d03d617d700cf81935d7f797f4e2ae719648262`に作成されました。 レシートの代わりに null の結果が得られた場合は、トランザクションが まだブロックに含まれていないことを意味します。 しばらく待って、自分のマイナーが実行中になっていることを確認してから再試行してください。
+
+#### スマートコントラクトとのやりとり {#interacting-with-smart-contract}
+
+この例では、`eth_sendTransaction`を使用して、コントラクトの`multiply`メソッドにトランザクションを送信します。
+
+`eth_sendTransaction`にはいくつかの引数、具体的には`from`、`to`、`data`が必要です。 `from`は、アカウントのパブリックアドレスで、`to`はコントラクトのアドレスです。 引数`data`には、どのメソッドがどの引数で呼び出されるのかが定義されたペイロードが含まれています。 ここで、[ABI (アプリケーション・バイナリー・インターフェース) ](https://docs.soliditylang.org/en/latest/abi-spec.html)を使用します。 ABI は、EVM のためにデータの定義とエンコードの方法を明示した JSON ファイルです。
+
+ペイロードのバイトによって、コントラクトのどのメソッドが呼び出されるかが定義されています。 これは、関数名とその引数の型を 16 進数でエンコードした Keccak ハッシュの最初の 4 バイトです。 multiply 関数は uint256 のエイリアスである uint を受け取ります。 これにより、以下のようになります。
+
+```javascript
+web3.sha3("multiply(uint256)").substring(0, 10)
+// "0xc6888fa1"
+```
+
+次のステップでは、引数をエンコードします。 uint256 は 1 つのみです。この例では 6 とします。 ABI には、uint256 型のエンコード方法を指定するセクションがあります。
+
+`int: enc(X)`は、X のビッグエンディアンの 2 の補数表現でのエンコーディングです。長さが 32 バイトの倍数になるように、X が負の場合は 0xff を使用して、正の場合は 0 >バイトを使用して左詰めされます。
+
+これにより、`00000000000000000000000000000000000000000000006`とエンコードされます。
+
+関数セレクターとエンコードされた引数を組み合わせると、データは `0xc6888fa10000000000000000000000000000000000000000000000000000000000000006`になります。
+
+これを、以下のようにノードに送信します。
+
+```bash
+curl --data '{"jsonrpc":"2.0","method": "eth_sendTransaction", "params": [{"from": "0xeb85a5557e5bdc18ee1934a89d8bb402398ee26a", "to": "0x6ff93b4b46b41c0c3c9baee01c255d3b4675963d", "data": "0xc6888fa10000000000000000000000000000000000000000000000000000000000000006"}], "id": 8}' -H "Content-Type: application/json" localhost:8545
+{"id":8,"jsonrpc":"2.0","result":"0x759cf065cbc22e9d779748dc53763854e5376eea07409e590c990eafc0869d74"}
+```
+
+トランザクションが送信されたので、トランザクションハッシュが返されました。 取得したレシートには、以下が含まれています。
+
+```javascript
+{
+ blockHash: "0xbf0a347307b8c63dd8c1d3d7cbdc0b463e6e7c9bf0a35be40393588242f01d55",
+ blockNumber: 268,
+ contractAddress: null,
+ cumulativeGasUsed: 22631,
+ gasUsed: 22631,
+ logs: [{
+ address: "0x6ff93b4b46b41c0c3c9baee01c255d3b4675963d",
+ blockHash: "0xbf0a347307b8c63dd8c1d3d7cbdc0b463e6e7c9bf0a35be40393588242f01d55",
+ blockNumber: 268,
+ data: "0x000000000000000000000000000000000000000000000000000000000000002a",
+ logIndex: 0,
+ topics: ["0x24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da"],
+ transactionHash: "0x759cf065cbc22e9d779748dc53763854e5376eea07409e590c990eafc0869d74",
+ transactionIndex: 0
+ }],
+ transactionHash: "0x759cf065cbc22e9d779748dc53763854e5376eea07409e590c990eafc0869d74",
+ transactionIndex: 0
+}
+```
+
+レシートには、ログが含まれています。 このログは、EVM によってトランザクションの実行時に生成され、レシートに含まれます。 `multiply`関数によって、`Print`イベントが入力の 7 倍で発生したことが示されています。 `Print`イベントの引数は uint256 であるため、ABI ルールに従ってデコードできます。これにより、期待される 10 進数である 42 が得られます。 このデータのほかに、トピックを使用することでどのイベントによってログが作成されたかを把握することもできます。
+
+```javascript
+web3.sha3("Print(uint256)")
+// "24abdb5865df5079dcc5ac590ff6f01d5c16edbc5fab4e195d9febd1114503da"
+```
+
+ここまで、最も一般的ないくつかのタスクを簡単に紹介し、JSON-RPC を直接使用する方法について実例を交えて説明しました。
+
+## 関連トピック {#related-topics}
+
+- [JSON-RPC の仕様](http://www.jsonrpc.org/specification)
+- [ノードとクライアント](/developers/docs/nodes-and-clients/)
+- [JavaScript APIs](/developers/docs/apis/javascript/)
+- [バックエンド API](/developers/docs/apis/backend/)
+- [実行クライアント](/developers/docs/nodes-and-clients/#execution-clients)
diff --git a/src/content/translations/ja/developers/docs/blocks/index.md b/src/content/translations/ja/developers/docs/blocks/index.md
new file mode 100644
index 00000000000..7a4b7773e8c
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/blocks/index.md
@@ -0,0 +1,139 @@
+---
+title: ブロック
+description: イーサリアムブロックチェーンの概要 - データ構造、データ構造の背景と構成
+lang: ja
+---
+
+ブロックとは、チェーンの 1 つ前のハッシュとトランザクションのバッチのことです。 ハッシュはブロックデータから暗号的に生成されるため、チェーンのブロックはお互いに繋がっています。 前のブロックのハッシュを用いるため、どれかのブロックが改ざんされるとデータの整合性が取れなくなるため、ブロックチェーンを実行しているすべての人が改ざんに気づくことになります。
+
+## 前提知識 {#prerequisites}
+
+この記事は初心者向けに記載していますが、 より理解を深めるために、まず[アカウント](/developers/docs/accounts/)、[トランザクション](/developers/docs/transactions/)そして[イーサリアムの導入](/developers/docs/intro-to-ethereum/)を読むことをお勧めします。
+
+## ブロックを使用する背景 {#why-blocks}
+
+ブロックはすべてのイーサリアムネットワークへの参加者が同期された状態を維持し、トランザクションの正確な履歴に同意できるように、複数のトランザクションをブロックにバッチとして格納します。 これは、何十件(もしくは数百) ものトランザクションが一度にコミット、合意、同期されることを意味します。
+
+![状態の変更を起こすブロックのトランザクション図](./tx-block.png) _ [イーサリアム EVM](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)からの図解_
+
+コミットの間隔をあけ、すべてのネットワーク参加者がコンセンサスに至るまでの十分な時間を確保しています。たとえトランザクション要求が毎秒数十回発生したとしても、ブロックはイーサリアム上で 12 秒に 1 回生成され、コミットされます。
+
+## ブロックの仕組み {#how-blocks-work}
+
+トランザクション履歴を保持するため、ブロックは厳密に順序付けられ、作成されたすべての新規ブロックに親ブロックへの参照 (ハッシュ) が含まれます。 同様に、ブロック内のトランザクションも厳密に順序付けられています。 まれな例外を除き、 常時ネットワーク上のすべての参加者は、正確な数のブロックとその履歴に合意しており、現在のトランザクションリクエストを次のブロックにバッチ処理しています。
+
+バリデータがブロックをまとめると、そのブロックは残りの他のネットワークに伝播されます。すべてのノードはこのブロックをブロックチェーンの最後尾に追加し、次のブロックを生成するために新しいバリデータが選ばれます。 このブロック生成とコミットメント/コンセンサスプロセスは、現在イーサリアム「プルーフ・オブ・ステーク (PoS) 」プロトコルによって定義されています。
+
+## プルーフ・オブ・ステーク(PoS)プロトコル {#proof-of-work-protocol}
+
+プルーフ・オブ・ステークとは、以下のことを意味します。
+
+- 検証を行うノードは、不正行為をしない担保として、デポジットコントラクトに 32 ETH のステーキングが必要。 明らかに不誠実な行為を行うと、担保のステーキングの一部またはすべてが失うことになるため、ネットワークの保護を目的としている。
+- すべてのスロット(12 秒間隔)において、ランダムに 1 つのバリデータがブロックの提案者として選出される。 選ばれたバリデータが、トランザクションを 1 つにまとめ、実行し新たな「状態」を決定し、 この情報をブロックに格納し、他のバリデータに渡す。
+- 新しいブロックに関する情報を受け取った他のバリデータは、トランザクションを再実行し、グローバル状態への変更提案について同意することを確認する。 ブロックが有効であった場合、それを自分のデータベースに追加する。
+- バリデータが同一スロットで 2 つの競合するブロックの情報を受け取った場合は、フォーク・チョイス・アルゴリズムを使用して、最も多額の ETH ステーキングにより支持されている方を選択する。
+
+[プルーフ・オブ・ステーク(PoS)の詳細](/developers/docs/consensus-mechanisms/pos)
+
+## ブロックが保持するパラメータ {#block-anatomy}
+
+ブロックにはたくさんの情報が含まれており、 大まかには、以下のようなフィールドがあります。
+
+```
+slot: ブロックが所属するスロット
+proposer_index: ブロックを提案しているバリデータのID
+parent_root: 前のブロックのハッシュ
+state_root: 状態オブジェクトのルートハッシュ
+body: 複数のフィールドを含むオブジェクト、定義は以下に記載。
+```
+
+ブロックの`body`には独自のフィールドがいくつかあります。
+
+```
+randao_reveal: 次のブロックの提案者を選択するのに使用される値
+eth1_data: デポジットコントラクトに関する情報
+graffiti: ブロックにタグをつけるのに使用される任意の値
+proposer_slashings: スラッシング対象のバリデータリスト
+attester_slashings: スラッシング対象のバリデータリスト
+attestations: 現在のブロックに同意するアテステーションのリスト
+deposits: デポジットコントラクトへの新規デポジットのリスト
+voluntary_exits: ネットワークに存在するバリデータリスト
+sync_aggregate: ライトクライアントを提供するのに使用されるバリデータのサブセット
+execution_payload: 実行クライアントから渡されたトランザクション
+```
+
+`attestations`フィールドには、ブロック内のすべてのアテステーションのリストが含まれます。 アテステーションは、複数のデータを含むそれぞれの独自のデータ型があり、 それぞれのアテステーションには以下が含まれています。
+
+```
+aggregation_bits: 当該アテステーションに参加したバリデータリスト
+data: 複数のサブフィールドを持つコンテナ
+signature: アテステーションを行った全バリデータの署名を集約したもの
+```
+
+`attestation`の`data`フィールドには、以下が含まれます。
+
+```
+slot: アテステーションが関連するスロット
+index: 証明しているバリデータのインデックス
+beacon_block_root: このオブジェクトを含むビーコンブロックのルートハッシュ
+source: 直近の正当性が確認されたチェックポイント
+target: 最新のエポックバウンダリブロック
+```
+
+`execution_payload`のトランザクションを実行すると、グローバル状態が更新されます。 すべてのクライアントは「新しい状態」が「新しいブロック」の`state_root`フィールドの状態と一致することを確認するために、`execution_payload`のトランザクションを再実行します。 このようにして、クライアントは「新しいブロック」が有効であり、ブロックチェーンに追加しても安全であることを判断します。 `execution payload`自体は、いくつかのフィールドを持つオブジェクトです。 実行データに関する重要な要約情報を含む`execution_payload_header`もあります。 これらのデータ構造は、以下のように構成されています。
+
+`execution_payload_header`には、以下のフィールドが含まれます。
+
+```
+parent_hash: 親ブロックのハッシュ
+fee_recipient: トランザクションフィーの支払い先のアカウントアドレス
+state_root: 当該ブロック変更後のグローバル状態のルートハッシュ
+receipts_root: トランザクションレシートトライのハッシュ
+logs_bloom: イベントログを含むデータ構造
+prev_randao: バリデータのランダムな選択で使用する値
+block_number: 現在のブロック番号
+gas_limit: 当該ブロックの最大許容ガス量
+gas_used: 当該ブロックでの実際のガス使用量
+timestamp: ブロックタイム
+extra_data: 任意の追加データ(Rawバイト)
+base_fee_per_gas: ベースフィー値
+block_hash: 実行ブロックのハッシュ
+transactions_root: ペイロードに含まれるトランザクションのルートハッシュ
+```
+
+`execution_payload`自体には、以下のものが含まれます (トランザクションのルートハッシュの代わりに実際のトランザクションのリストを含んでいることを除けば、ヘッダーと同じ)。
+
+```
+parent_hash: 親ブロックのハッシュ
+fee_recipient: トランザクションフィーの支払い先のアカウントアドレス
+state_root: 当該ブロック変更後のグローバル状態のルートハッシュ
+receipts_root: トランザクションレシートトライのハッシュ
+logs_bloom: イベントログを含むデータ構造
+prev_randao: バリデータのランダムな選択で使用する値
+block_number: 現在のブロック番号
+gas_limit: 当該ブロックの最大許容ガス量
+gas_used: 当該ブロックでの実際のガス使用量
+timestamp: ブロックタイム
+extra_data: 任意の追加データ(Rawバイト)
+base_fee_per_gas: ベースフィー値
+block_hash: 実行ブロックのハッシュ
+transactions_root: ペイロードに含まれるトランザクションのルートハッシュ
+```
+
+## ブロックタイム {#block-time}
+
+ブロックタイムとは、ブロックを区切る時間を指します。 イーサリアムでは、時間は「スロット」と呼ばれる 12 秒単位で分割されています。 各スロットで、単一のバリデータがブロックを提案するために選ばれます。 すべてのバリデータがオンラインで完全に稼働中と仮定すると、すべてのスロットにブロックが 1 つ存在し、ブロックタイムは 12 秒です。 しかし、ブロックを提案するように求められたときにバリデータがオフラインであることがあり、スロットが空になってしまうことがあります。 この点がブロックタイムが確率的であり、マイニングの難易度によって調整されるプルーフ・オブ・ワークを基としたシステムとは異なります。
+
+## ブロックサイズ {#block-size}
+
+最後に重要なのは、ブロック自体のサイズが制限されていることです。 各ブロックの目標サイズは 1,500 万ガスですが、ブロックの上限である 3,000 万ガス(目標ブロックサイズの 2 倍)までは、ネットワークの需要に応じてブロックサイズが増減します。 ブロックの全トランザクションで消費されたガスの総量は、ブロックのガスリミット以下でなければなりません。 これはブロックが勝手に大きくなりすぎないようにする点で重要です。 もしブロックサイズが非常に大きくなると、パフォーマンスの低いフルノードは、スペースと速度の要件により、ネットワークに追いつけなくなってしまいます。 ブロックが大きいほど、次のスロットに間に合うように処理するために必要な計算能力が高くなります。 これは中央集権的な力につながってしまうため、ブロックサイズに上限を設けています。
+
+## 参考文献 {#further-reading}
+
+_役に立つコミュニティリソースをご存知の場合は、 このページを編集して追加してください。_
+
+## 関連トピック {#related-topics}
+
+- [トランザクション](/developers/docs/transactions/)
+- [ガス](/developers/docs/gas/)
+- [プルーフ・オブ・ステーク](/developers/docs/consensus-mechanisms/pos)
diff --git a/src/content/translations/ja/developers/docs/consensus-mechanisms/index.md b/src/content/translations/ja/developers/docs/consensus-mechanisms/index.md
new file mode 100644
index 00000000000..654e6f3f050
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/consensus-mechanisms/index.md
@@ -0,0 +1,91 @@
+---
+title: 合意メカニズム
+description: 分散システムにおける合意形成プロトコルと、イーサリアムにおける合意形成プロトコルの役割についての解説
+lang: ja
+---
+
+合意メカニズムという用語は、「プルーフ・オブ・ステーク」、「プルーフ・オブ・ワーク」、「プルーフ・オブ・オーソリティ」といったプロトコルを指すのに使われることがあります。 しかし、これらは実際にはシビル攻撃を防ぐための合意メカニズムの構成要素に過ぎません。 合意メカニズムは、分散された一連のノードがブロックチェーンの状態に合意できるようにする考え方、プロトコル、およびインセンティブを完全にまとめたメカニズムです。
+
+## 前提知識 {#prerequisites}
+
+このページの理解を深めるために、まずは[イーサリアム入門](/developers/docs/intro-to-ethereum/)を読むことをお勧めします。
+
+## コンセンサス(合意)とは {#what-is-consensus}
+
+コンセンサス(合意)とは、全員が合意に達しているという意味で使われています。 これから映画に見に行くグループで考えてみましょう。 どの映画を鑑賞するかグループ内で意見が一致すれば、コンセンサスが形成されます。 意見が分かれている場合、どの映画にするか決める手段が必要です。 極端な状況では、最終的にグループが分かれてしまうこともあるでしょう。
+
+イーサリアムのブロックチェーンではこのプロセスが形式化されており、コンセンサスに達するとは、ネットワーク上のノードの少なくとも 66%が、ネットワークの全体的な状態に合意することを意味します。
+
+## 合意メカニズムとは {#what-is-a-consensus-mechanism}
+
+合意メカニズムという用語は、ノードのネットワークがブロックチェーンの状態に合意することを可能にするプロトコル、インセンティブ、考え方のすべてを指します。
+
+イーサリアムはプルーフ・オブ・ステークに基づく合意メカニズムを使用しており、一連の報酬に加えて、ペナルティがステーカーが預け入れた資本に適用されることにより、暗号経済的な安全性を得ています。 このインセンティブ構造は個々のステーカーがバリデータを誠実に運用することを奨励し、そうでないステーカーに対してペナルティを与え、ネットワークへの攻撃のコストを非常に高くします。
+
+また、ブロックの提案や検証、トランザクションの処理、チェーン先頭に対する見解の投票などを行う、誠実なバリデータがどのように選ばれるかを規定するプロトコルがあります。 まれに複数のブロックがチェーンの先頭付近の同じ位置にある状況に対しては、「最も重みのある」チェーンを構成するブロックを選択するフォーク・チョイスメカニズムがあります。これはブロックに投票したバリデータ数によって測定され、バリデータがステーキングしたイーサ残高により加重されます。
+
+概念の一部はコードには明示的に定義されていませんが、コンセンサスに重要なものがあります。たとえば、ネットワークへの攻撃に対する最後の防衛線として、帯域外で行われる社会的調整により提供されるセキュリティなどです。
+
+これらの構成要素が一体となって合意メカニズムを形成しています。
+
+## 合意形成アルゴリズムの種類 {#types-of-consensus-mechanisms}
+
+### プルーフ・オブ・ワーク方式 {#proof-of-work}
+
+ビットコインと同様に、イーサリアムもかつては**プルーフ・オブ・ワーク(PoW)**に基づいたコンセンサスプロトコルを使用していました。
+
+#### ブロックの作成 {#pow-block-creation}
+
+バリデータがブロックを作成します。 各スロットでランダムに 1 つのバリデータがブロック提案者に選ばれます。 コンセンサスクライアントは、ペアの実行クライアントから「実行ペイロード」としてトランザクションの束 (バンドル) を要求します。 これをコンセンサスデータで包んでブロックを形成し、イーサリアムのネットワーク上の他のノードに送ります。 このブロック生成により、ETH で報酬を受け取ることができます。 1 つのスロットに複数の候補ブロックが存在する場合や、ノードが異なる時間にブロックの情報を得た場合、フォーク・チョイス・アルゴリズムがアテステーションの重みが最も大きいチェーンを形成するブロックを選択します(ここでの重みとは、アテステーションしたバリデータの数を彼らが保有している ETH 残高で加重したもの) 。
+
+#### セキュリティ {#pow-security}
+
+チェーンに不正行為を働くには、ネットワークのコンピューティング能力の 51%が必要であるため、ネットワークの安全性が保たれています。 51%を獲得しるには、莫大な設備投資とエネルギーが必要となるため、得るものよりも費やすものの方が多くなってしまいます。
+
+[プルーフ・オブ・ワーク](/developers/docs/consensus-mechanisms/pow/)の詳細
+
+### プルーフ・オブ・ステーク方式 {#proof-of-stake}
+
+イーサリアムは現在、**プルーフ・オブ・ステーク(PoS)**に基づいたコンセンサスプロトコルを使用しています。
+
+#### ブロックの作成 {#pos-block-creation}
+
+プルーフ・オブ・ステークは、システムに参加するために ETH をステーキングしたバリデータによって行われます。 ランダムに選択された 1 つのバリデータが、新しいブロックを作成し、ネットワークと共有し、報酬を獲得します。 苛烈な計算を行うのではなく、ネットワークに ETH をステーキングが必要になり、 これは健全なネットワークの行動を奨励するものです。
+
+#### セキュリティ {#pos-security}
+
+仮にプルーフ・オブ・ステーク・システムでチェーンを支配しようとすると、攻撃者は大量の ETH を破壊しなければならないため、暗号経済的に安全性が保たれています。 報酬システムがステーカーに対して、誠実な行動を取るようにインセンティブを与える一方、ペナルティは悪意のある行動を抑制しています。
+
+[プルーフ・オブ・ステーク ](/developers/docs/consensus-mechanisms/pos/)の詳細
+
+### ビジュアルガイド {#types-of-consensus-video}
+
+イーサリアムで使われているさまざまな種類の合意メカニズムについて視聴しましょう。
+
+
+
+### シビル耐性およびチェーン選択 {#sybil-chain}
+
+プルーフ・オブ・ワークとプルーフ・オブ・ステークは、それ自体はコンセンサスプロトコルではありませんが、分かりやすくするためにそのように呼ばれることがよくあります。 これらは実際にはシビル耐性メカニズムであり、誰が最新のブロックを作成するかを決めるものです。 もう一つの重要なコンポーネントは、チェーン・チョイス(別名:フォーク選択)アルゴリズムです。これはチェーンの先頭に複数のブロックが存在する場合、正しいブロックをノードが 1 つ選択するアルゴリズムです。
+
+**シビル耐性**は[シビル攻撃](https://wikipedia.org/wiki/Sybil_attack)に対するプロトコルの性能を測るものであり、 シビル攻撃とは 1 人のユーザーまたはグループが多くのユーザーであるように装う攻撃です。 この種の攻撃への耐性は、分散型ブロックチェーンには不可欠であり、この耐性があることにより、投入されたリソースに応じてマイナーとバリデータが平等に報酬を得ることができます。 プルーフ・オブ・ワークやプルーフ・オブ・ステークは、ユーザーに多くのエネルギーを消費させたり、多くの担保を入れさせることで、この問題を解決します。 これらは、シビル攻撃に対する経済的な抑止力となります。
+
+**チェーン・セレクション・ルール**は、どのチェーンが「正しい」チェーンであるかを決定するルールです。 イーサリアムとビットコインは、ブロックチェーンの長さが長い方を、他のノードが有効なものとして受け入れるという「最長のチェーン」ルールを採用しています。 プルーフ・オブ・ワークチェーンの場合、最長のチェーンはチェーンの累積プルーフ・オブ・ワーク難易度によって決定されます。 イーサリアムも以前は「最長チェーン」ルールを採用していましたが、現在のイーサリアムはプルーフ・オブ・ステークで実行されており、チェーンの「重み」を測定する最新のフォーク・チョイス・アルゴリズムを採用しています。 この重みは、バリデータの投票の累計をバリデータがステーキングしたイーサ残高により加重されて決まります。
+
+イーサリアムでは、[Casper FFG プルーフ・オブ・ステーク](https://arxiv.org/abs/1710.09437)と[GHOST フォーク・チョイスルール](https://arxiv.org/abs/2003.03052)を組み合わせた[Gasper](/developers/docs/consensus-mechanisms/pos/gasper/)と呼ばれる合意メカニズムが採用されています。
+
+## 参考文献 {#further-reading}
+
+- [ブロックチェーンの合意アルゴリズムとは](https://academy.binance.com/en/articles/what-is-a-blockchain-consensus-algorithm)
+- [ナカモトコンセンサスとは 初心者向け完全ガイド](https://blockonomi.com/nakamoto-consensus/)
+- [Casper の仕組み](https://medium.com/unitychain/intro-to-casper-ffg-9ed944d98b2d)
+- [プルーフ・オブ・ワーク・ブロックチェーンのセキュリティと性能について](https://eprint.iacr.org/2016/555.pdf)
+- [ビザンチン障害](https://en.wikipedia.org/wiki/Byzantine_fault)
+
+_役に立つコミュニティリソースをご存知の場合は、 ページを編集して追加してください。_
+
+## 関連トピック {#related-topics}
+
+- [プルーフ・オブ・ワーク](/developers/docs/consensus-mechanisms/pow/)
+- [マイニング](/developers/docs/consensus-mechanisms/pow/mining/)
+- [プルーフ・オブ・ステーク](/developers/docs/consensus-mechanisms/pos/)
diff --git a/src/content/translations/ja/developers/docs/consensus-mechanisms/pos/index.md b/src/content/translations/ja/developers/docs/consensus-mechanisms/pos/index.md
new file mode 100644
index 00000000000..84aa2609011
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/consensus-mechanisms/pos/index.md
@@ -0,0 +1,78 @@
+---
+title: プルーフ・オブ・ステーク(PoS)
+description: イーサリアムにおけるプルーフ・オブ・ステーク (PoS)プロトコルとその役割
+lang: ja
+---
+
+プルーフ・オブ・ステーク(PoS)は、イーサリアムの[合意形成のメカニズム](/developers/docs/consensus-mechanisms/)の基礎となっています。 イーサリアムは 2022 年プルーフ・オブ・ステークのメカニズムに移行しました。これまでの[プルーフ・オブ・ワーク](/developers/docs/consensus-mechanisms/pow)のアーキテクチャと比較して、より安全で、エネルギー消費量が少なく、新たなスケーリングソリューションの導入に適しています。
+
+## 前提知識 {#prerequisites}
+
+このページをより理解するために、まずは[合意メカニズム](/developers/docs/consensus-mechanisms/)を読むことをお勧めします。
+
+## プルーフ・オブ・ステーク(PoS)とは {#what-is-pos}
+
+プルーフ・オブ・ステークとは、分散型コンセンサスを実現するためにブロックチェーンが使用する[合意メカニズム](/developers/docs/consensus-mechanisms/)のことです。 プルーフ・オブ・ワークでは、マイナーがエネルギーを消費することにより自分の資本を費やします。 プルーフ・オブ・ステークでは、バリデータが ETH でイーサリアム上のスマートコントラクトに明示的に自身の資本をステーキングします。 このステーキングされた ETH は、バリデータが不正行為を行ったり、怠慢な場合は失われるため、担保として機能します。 バリデータはネットワーク上で伝播された新しいブロックが有効であることを確認し、また時折バリデータ自身が新しいブロックを作成し伝播します。
+
+プルーフ・オブ・ステークは、現在は廃止されたプルーフ・オブ・ワークシステムに比べて、数多くの利点があります。
+
+- エネルギー効率の向上 - プルーフ・オブ・ワークの計算に多くのエネルギーを必要としない
+- ハードウェア要件の低減 - 新しいブロックを作成するのに高性能なハードウェアが不要
+- 中央集権化リスクの減少 - プルーフ・オブ・ステークでは、より多くのノードの参加を促進し、ネットワークの保護につながる
+- エネルギー消費量が減るため、インセンティブに必要な ETH の発行が減る
+- 不正に対する経済制裁により、プルーフ・オブ・ワークと比較して 51%攻撃のコストが指数関数的に高くなる
+- 51%攻撃が暗号経済の防御を乗り越えた場合でも、正当なチェーンの社会的な回復が可能
+
+## バリデータ {#validators}
+
+バリデータとして参加するには、デポジットコントラクトに 32 ETH を預け入れ、実行クライアント、 コンセンサスクライアント、バリデータの 3 つのソフトウェアを実行する必要があります。 ETH を預け入れたユーザーはアクティベーションキューに参加します。このアクティベーションキューは新規バリデータのネットワークへの参加率を制限するものです。 アクティベートされると、バリデータはイーサリアムネットワーク上の他のバリデータから新しいブロックを受け取ります。 ブロック内で配信されたトランザクションが再実行され、ブロックの署名が確認され、ブロックの有効性が検証されます。 その後、バリデータはネットワーク全体に対して、アテステーションと呼ばれる、ブロックを支持する票を投じます。
+
+プルーフ・オブ・ワークの下では、ブロックのタイミングはマイニングの難易度によって決まりますが、プルーフ・オブ・ステークでは間隔は固定されています。 プルーフ・オブ・ステークのイーサリアムにおける時間は、スロット(12 秒)とエポック(32 スロット)に分かれています。 すべてのスロットで 1 つのバリデータがランダムに選択され、ブロックを提案できます。 このバリデータは新しいブロックを作成後、ネットワーク上の他のノードに新しいブロックを送信します。 また、すべてのスロットでバリデータの委員会がランダムに選択され、提案されているブロックの有効性を判断し、投票が行われます。
+
+## ファイナリティ {#finality}
+
+分散ネットワークにおいてトランザクションがファイナリティを持つのは、相当量の ETH が消費されなければ変更できないブロックの一部になった時です。 プルーフ・オブ・ステークのイーサリアムでは、「チェックポイント」ブロックを使用してこれが管理されています。 各エポックの最初のブロックはチェックポイントです。 バリデータが有効と認めるチェックポイントのペアに投票します。 チェックポイントのペアが、ステーキングされた ETH の少なくとも 3 分の 2 に相当する票を集めると、チェックポイントがアップグレードされます。 2 つのうちより新しいもの(ターゲット)が「正当」となります。 2 つのうちより早いもの(古いもの)は、前のエポックでターゲットだったためすでに正当化されており、 「ファイナライズ(確定)」にアップグレードされます。 ファイナライズされたブロックを元に戻そうとするには、攻撃者はステーキングされた全 ETH の少なくとも 3 分の 1 を失うことになります。 この理由については、こちらの[イーサリアム・ファウンデーションのブログ記事](https://blog.ethereum.org/2016/05/09/on-settlement-finality/)で説明されています。 ファイナリティには 3 分の 2 のマジョリティが必要なため、攻撃者はステークされた全体の 3 分の 1 にあたる投票で、ネットワークのファイナリティを阻止することができます。 これを防ぐメカニズムが[インアクティビティ・リーク](https://arxiv.org/pdf/2003.03052.pdf)で、 チェーンが 4 回以上のエポックのファイナライズに失敗したときに有効になります。 インアクティビティ・リークは、マジョリティに反する投票を行うバリデータのステーキング ETH を流出させ、3 分の 2 のマジョリティを取り戻し、チェーンをファイナライズさせます。
+
+## 暗号経済のセキュリティ {#crypto-economic-security}
+
+バリデータの実行はコミットメントです。 バリデータは、ブロックの検証とブロックの提案に参加するための十分なハードウェアと接続性を維持する必要があります。 報酬として、バリデータには ETH が支払われ、ステーキング残高が増加します。 一方、バリデータの参加は、個人的な利益や妨害のためにネットワークを攻撃する新しい抜け道を開くことにもなります。 これを防ぐため、呼び出されたときに参加しなかった場合、バリデータは ETH 報酬を逃し、不誠実な行動を行うとステーキングを失う仕組みをとっています。 不誠実と考えられる行動には主に 2 つあり、1 つのスロットで複数のブロックを提案すること(曖昧) と、矛盾するアテステーションを行うことです。 スラッシングされる ETH は、同時にスラッシングされるバリデータの数によって変動します。 これは[「コリレーション・ペナルティ」](https://arxiv.org/pdf/2003.03052.pdf)として知られ、バリデータが単独でステーキングの 1%弱を失う小さなペナルティから、バリデータ全員の 100%のステーキングが破棄されるようなマススラッシングイベントが起こる場合があります。 これは 1 日目の即時ペナルティ(最大 0.5 ETH)から始まり、18 日目のコリレーション・ペナルティ、最後に 36 日目のネットワークからの強制退出までの期間に課されます。 ネットワークには存在するものの、バリデータが投票に不参加のため、毎日少しづつアテステーションペナルティーが課されます。 総じて、組織的な攻撃には多大なコストがかかることを意味します。
+
+## フォークの選択 {#fork-choice}
+
+ネットワークが最適かつ誠実に実行されている場合は、チェーンの先頭には 1 つの新しいブロックしか存在せず、すべてのバリデータがそれにアテステーションを行います。 ただし、 ネットワークの遅延により、またはブロック提案者が曖昧であった場合、バリデータによっては、チェーンの先頭についての見解が異なりアテステーションをしない場合があります。 このため、コンセンサスクライアントはどちらを選択するのかを決めるアルゴリズムを必要とします。 プルーフ・オブ・ステークのイーサリアムで使用されるアルゴリズムは、[LMD-GHOST](https://arxiv.org/pdf/2003.03052.pdf)と呼ばれ、履歴の中で最も重みのあるフォークを選択します。
+
+## プルーフ・オブ・ステークとセキュリティ {#pos-and-security}
+
+[51%攻撃](https://www.investopedia.com/terms/1/51-attack.asp)の脅威は、プルーフ・オブ・ステークにも依然として存在しますが、攻撃者側のリスクのほうが非常に高くなります。 攻撃を試みるには、ステーキングされた ETH の 51%を必要とします。 自らのアテステーションを使って、攻撃者は自分に都合の良いフォークが最も票を集めるようにすることができます。 集められたアテステーションの「重み」は、コンセンサスクライアントが正しいチェーンを判断する際に使用されるため、攻撃者は自分自身のフォークが「正当な」ものにすることができます。 しかしながら、プルーフ・オブ・ワークに勝るプルーフ・オブ・ステークの強みは、コミュニティが反撃を行う柔軟性を備えていることです。 例えば、誠実なバリデータ達は攻撃者のフォークを無視し、マイノリティのチェーンを構築し続け、アプリ、取引所やプールにも同様の対応を取るように推奨することができます。 また、ネットワークから攻撃者を強制的に排除し、攻撃者がステーキングした ETH を破壊することを決定できます。 これらは 51%攻撃に対する強力な経済的防衛です。
+
+51%攻撃は悪意のある行為の 1 つに過ぎません。 他にもロング・レンジ攻撃(ファイナリティガジェットがこの攻撃ベクトルを無効化)、ショート・レンジ再編成攻撃(ブロック提案者のブースティングとアテステーション期限により軽減)、バウンス攻撃とバランシング攻撃(これも提案者のブースティングによって緩和される上、これらの攻撃は理想的なネットワーク条件下でのみ実現)、またはアバランチ攻撃(最新メッセージのみを考慮するフォーク・チョイス・アルゴリズムによって無力化)といった攻撃があります。
+
+総合的に、イーサリアムに実装されているプルーフ・オブ・ステークはプルーフ・オブ・ワークよりも経済的に安全であることが実証されています。
+
+## メリットとデメリット {#pros-and-cons}
+
+| メリット | デメリット |
+| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
+| ステーキングにより個人がネットワークの安全性に参画しやすくなり、分散化を促進。 バリデータノードは通常のラップトップで実行可能。 ステーキングプールを利用すると、32 ETH 未満でもステーキング可能。 | プルーフ・オブ・ステークは若く、プルーフ・オブ・ワークと比較して実環境でのテストが少ない |
+| ステーキングはより分散型であり、 規模の経済がプルーフ・オブ・ワークのマイニングの場合と同じようには適用されない。 | プルーフ・オブ・ステークは、プルーフ・オブ・ワークよりも実装が複雑 |
+| プルーフ・オブ・ワークと比較して、プルーフ・オブ・ステークでは暗号経済的なセキュリティが向上 | イーサリアムのプルーフ・オブ・ステークに参加するには、3 つのソフトウェアの実行が必要 |
+| ネットワーク参加者へのインセンティブに、新規 ETH の発行が少なくて済む | |
+
+## 映像による学習教材 {#visual-learner}
+
+
+
+## 参考文献 {#further-reading}
+
+- [プルーフ・オブ・ステークに関するよくある質問](https://vitalik.ca/general/2017/12/31/pos_faq.html) _Vitalik Buterin_
+- [プルーフ・オブ・ステークとは](https://consensys.net/blog/blockchain-explained/what-is-proof-of-stake/) _ConsenSys_
+- [プルーフ・オブ・ステークとは何か、またその重要性](https://bitcoinmagazine.com/culture/what-proof-of-stake-is-and-why-it-matters-1377531463) _Vitalik Buterin_
+- [まず読むべきビーコンチェーンイーサリアム 2.0 の説明](https://ethos.dev/beacon-chain) _Ethos.dev_
+- [プルーフ・オブ・ステークの重要性(2020 年 11 月)](https://vitalik.ca/general/2020/11/06/pos2020.html) _Vitalik Buterin_
+- [プルーフ・オブ・ステーク: 低い客観性の利点](https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity/) _Vitalik Buterin_
+- [プルーフ・オブ・ステークのイーサリアム対する攻撃と防御](https://mirror.xyz/jmcook.eth/YqHargbVWVNRQqQpVpzrqEQ8IqwNUJDIpwRP7SS5FXs)
+- [プルーフ・オブ・ステーク設計理論](https://medium.com/@VitalikButerin/a-proof-of-stake-design-philosophy-506585978d51) _Vitalik Buterin_
+
+## 関連トピック {#related-topics}
+
+- [プルーフ・オブ・ワーク](/developers/docs/consensus-mechanisms/pow/)
diff --git a/src/content/translations/ja/developers/docs/consensus-mechanisms/pow/index.md b/src/content/translations/ja/developers/docs/consensus-mechanisms/pow/index.md
new file mode 100644
index 00000000000..3a1dac0e2d9
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/consensus-mechanisms/pow/index.md
@@ -0,0 +1,109 @@
+---
+title: プルーフ・オブ・ワーク(PoW)
+description: イーサリアムにおけるプルーフ・オブ・ワーク (PoW)プロトコルとその役割について
+lang: ja
+---
+
+イーサリアムのネットワークは、**[プルーフ・オブ・ワーク(PoW)](/developers/docs/consensus-mechanisms/pow)**という合意メカニズムを使用して始まりました。 このメカニズムにより、イーサリアムネットワークのノードは、ブロックチェーンに記録されたすべての情報に関してネットワーク全体で合意を取り、特定の種類の経済的な攻撃を防ぎました。 しかしながら、イーサリアムは 2022 年にプルーフ・オブ・ワーク(PoW)を停止し、これに代わる[プルーフ・オブ・ステーク(PoS)](/developers/docs/consensus-mechanisms/pos)の使用を開始しました。
+
+
+ 現在、プルーフ・オブ・ワークは廃止されています。 イーサリアムの合意メカニズムにはプルーフ・オブ・ワークではなく、 現在はプルーフ・オブ・ステークが採用されています。 詳細については、プルーフ・オブ・ステークとステーキングを参照してください。
+
+
+## 前提条件 {#prerequisites}
+
+このページをよく理解するためには、まず[トランザクション](/developers/docs/transactions/)、[ブロック](/developers/docs/blocks/)、および[合意メカニズム](/developers/docs/consensus-mechanisms/)について読むことをお勧めします。
+
+## プルーフ・オブ・ワーク(PoW)とは {#what-is-pow}
+
+ナカモトコンセンサスはプルーフ・オブ・ワークを利用した旧メカニズムで、分散型のイーサリアムネットワークが、アカウント残高やトランザクションの順序などについてコンセンサス(例: すべてのノードが合意すること)を得ることを可能にしました。 加えてユーザーのコインの「二重支出」を防ぎ、イーサリアムチェーンの攻撃や改ざんを非常に困難なものにしました。 これらのセキュリティは現在、[Gasper](/developers/docs/consensus-mechanisms/pos/gasper/)として知られる合意メカニズムを用いたプルーフ・オブ・ステークによりもたらされています。
+
+## プルーフ・オブ・ワークとマイニング {#pow-and-mining}
+
+プルーフ・オブ・ワーク(PoW)は、プルーフ・オブ・ワークのブロックチェーン上のマイニング難易度とルール設定の基礎となるアルゴリズムです。 マイニングとは「ワーク(作業)」そのもので、 チェーンに有効なブロックを追加する行為です。 チェーンの長さがブロックチェーンの正しいフォークを選択する上で使われるため、マイニングは重要な作業となります。 より多くの「ワーク」が完了すると、チェーンが長くなりブロック番号が上がり、ネットワークが現在の状況に確信をより持てるようになります。
+
+[マイニングの詳細](/developers/docs/consensus-mechanisms/pow/mining/)
+
+## イーサリアムのプルーフ・オブ・ワークの仕組み {#how-it-works}
+
+イーサリアムトランザクションがブロックへと処理されます。 現在廃止されているプルーフ・オブ・ワークのイーサリアムでは、ブロックには以下の情報が含まれていました。
+
+- 難易度 - 例: 3,324,092,183,262,715
+- mixHash – 例: `0x44bca881b07a6a09f83b130798072441705d9a665c5ac8bdf2f39a3cdf3bee29`
+- nonce – 例: `0xd3ee432b4fb3d26b`
+
+このブロックデータは、プルーフ・オブ・ワーク(PoW)に直接由来していました。
+
+### プルーフ・オブ・ワークの詳細 {#the-work}
+
+プルーフ・オブ・ワークのプロトコルである Ethash では、有効なノンスを持つブロックのみがチェーンに追加され、マイナーはブロックを生成するノンスを見つけるためにトライ&エラー(試行錯誤)を繰り返し、マイナー間の激しい競争を必要としました 。
+
+ブロック生成の競争において、マイナーはフルチェーンをダウンロードして実行することによってのみ得られるデータセットを、数学的な関数を用いて計算を実行し、繰り返し送りました。 このデータセットは、ブロックの難易度によって決まるターゲットを下回る mixHash の生成に使用されました。 これを行うには、トライ&エラーの繰り返しになります。
+
+難易度はハッシュのターゲット値の大きさを決定し、 ターゲットが小さいほど、有効なハッシュのセットは小さくなります。 一度ブロックが生成されると、他のマイナーやクライアントは驚くほど簡単にブロックを検証できました。 たとえ 1 つのトランザクションが変更された場合でも、ハッシュが全く異なり、不正が明らかになりました。
+
+まとめると、ハッシュはトランザクションの改竄の発見を容易にします。 また、プロセスとしてのプルーフ・オブ・ワークは、チェーンに対する攻撃への大きな抑止力にもなりました。
+
+### プルーフ・オブ・ワークとセキュリティ {#security}
+
+イーサリアムのメインチェーンでマイニングを行うインセンティブがマイナーに支払われました。 システムを弱体化させてしまうため、マイナーが独自のチェーンを始めることに対するインセンティブはほとんどありませんでした。 ブロックチェーンは、ある単一の状態が真実であることに依存します。
+
+プルーフ・オブ・ワークは、チェーンを拡張することを目的としました。 最も長いチェーンは、最も計算が行われたチェーンであるため、最長のチェーンが有効なチェーンとして最も信頼を置くことができました。 イーサリアムのプルーフ・オブ・ワーク(PoW)システムでは、トランザクションを消去するブロックの作成、不正なブロックの作成、または別のチェーンを維持することはほぼ不可能でした。 これは改ざんを行おうとすると、悪意のあるマイナーが常に他の誰よりも速くブロックノンスを解決しなければならなかったためです。
+
+悪意のあるブロックを有効なものとして、一貫して作成するためには、悪意を持ったマイナーは他のマイナーに勝つ必要があります。そのためには、ネットワークのマイニングパワーの 51%以上が必要でした。 その「ワーク」量には、多くの高価な計算能力が必要であり、それに費やされるエネルギーは、攻撃で得られる利益を上回る可能性さえありました。
+
+### プルーフ・オブ・ワークの経済 {#economics}
+
+また、プルーフ・オブ・ワークは通貨を新規発行し、マイナーにインセンティブを与えていました。
+
+[コンスタンティノープルアップグレード](/history/#constantinople)以降、ブロックの生成を正常に行ったマイナーには、新たにミントされた 2 ETH とトランザクションフィーの一部が報酬として支払われました。
+また、Ommer ブロックの場合には、1.75 ETH を補償しました。 Ommer ブロックとは、あるマイナーが有効ブロックを生成したのとほぼ同時に、違うマイナーが有効なブロックを生成したことを指します。最終的にはどのチェーンが先端に入るかが決定されました。 この Ommer ブロックは、通常ネットワークの遅延が原因で起こりました。
+
+## ファイナリティ {#finality}
+
+イーサリアムでは、トランザクションが変更不可能なブロックの一部になると、「ファイナリティ」に達します。
+
+マイナーは分散して作業するため、2 つの有効なブロックが同時にマイニングされることがありました。 これは一時的なフォークを作成します。 最終的には、これらのチェーンの内の 1 つが容認されたチェーンとなり、後続のブロックがマイニングされて追加され、チェーンが長くなっていきました。
+
+さらに複雑なことに、一時的なフォークで拒否されたトランザクションが、容認されたチェーンの方に含まれていない可能性がありました。 これはトランザクションが取り消される可能性があることを意味します。 そのため、ファイナリティとは、トランザクションを取り消し不可能と見なすまでに待機する時間を指します。 以前のプルーフ・オブ・ワークのイーサリアムでは、特定のブロック`N`の上に多くのブロックをマイニングすればするほど、`N`のトランザクションが成功し、元に戻されなくなり、より高い信頼性を得られました。 現在のプルーフ・オブ・ステークではファイナリティは確率的なものではなく、明示的で、ブロックのプロパティによりファイナリティに至ります。
+
+## プルーフ・オブ・ワークのエネルギー使用 {#energy}
+
+ネットワークを安全に保つために必要なエネルギー量は、プルーフ・オブ・ワークが批判を受ける大きな要因です。 セキュリティと分散化を維持するために、プルーフ・オブ・ワークのイーサリアムは多量のエネルギーを消費しました。 プルーフ・オブ・ステークへの少し前、イーサリアムのマイナーは合計で年間約 70 TWh を消費していました(2022 年 7 月 18 日の[digiconomist](digiconomist.net)によるとチェコ共和国とほぼ同等量) 。
+
+## メリットとデメリット {#pros-and-cons}
+
+| メリット | デメリット |
+| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
+| プルーフ・オブ・ワークは中立。 開始時に ETH は必要なく、ブロック報酬により残高が 0 ETH から増える。 [プルーフ・オブ・ステーク](/developers/docs/consensus-mechanisms/pos/)では、最初に ETH が必要。 | プルーフ・オブ・ワークはエネルギーを大量に消費するため、環境への悪影響がある。 |
+| プルーフ・オブ・ワークは、長年にわたって、ビットコインやイーサリアムを安全性と分散性を維持してきた十分にテスト・試行された合意メカニズム。 | マイニングをしたい場合は、専門機器が必要となり、始めるにあたって多額の投資が必要。 |
+| プルーフ・オブ・ステークと比較すると、実装が比較的容易。 | 必要な計算量が増えるため、マイニングプールがマイニングゲームを支配する可能性があり、集中化とセキュリティのリスクにつながる。 |
+
+## プルーフ・オブ・ステークとの比較 {#compared-to-pos}
+
+プルーフ・オブ・ステークは、プルーフ・オブ・ワーク同様、分散型ネットワークが安全にコンセンサスを得られるようにするという共通の目的があります。 しかし、プロセスと役割にはいくつかの違いがあります。
+
+- プルーフ・オブ・ステークにより、計算能力の重要性が ETH のステーキングへと移行する。
+- プルーフ・オブ・ステークにより、マイナーはバリデータに代わり、 バリデータは ETH をステークすることで、新しいブロックを作成できる。
+- ブロック作成におけるバリデータ間の競争がなくなり、アルゴリズムがバリデータをランダムに選択。
+- ファイナリティがより明確になり、特定のチェックポイントで、2/3 のバリデータがブロックの状態に合意した場合、最終とみなされる。 バリデータはこの合意に自身のステーキングすべてを賭ける必要があり、共謀しようとすると、ステーキング全額を失うことになる。
+
+[プルーフ・オブ・ステークの詳細](/developers/docs/consensus-mechanisms/pos/)
+
+## 映像で学びたい人向け {#visual-learner}
+
+
+
+## 参考文献 {#further-reading}
+
+- [マジョリティ攻撃](https://en.bitcoin.it/wiki/Majority_attack)
+- [ファイナリティ概念について](https://blog.ethereum.org/2016/05/09/on-settlement-finality/)
+
+### ビデオ {#videos}
+
+- [プルーフ・オブ・ワークプロトコルの技術的な説明](https://youtu.be/9V1bipPkCTU)
+
+## 関連トピック {#related-topics}
+
+- [マイニング](/developers/docs/consensus-mechanisms/pow/mining/)
+- [プルーフ・オブ・ステーク](/developers/docs/consensus-mechanisms/pos/)
diff --git a/src/content/translations/ja/developers/docs/consensus-mechanisms/pow/mining/index.md b/src/content/translations/ja/developers/docs/consensus-mechanisms/pow/mining/index.md
new file mode 100644
index 00000000000..f36f57b85c5
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/consensus-mechanisms/pow/mining/index.md
@@ -0,0 +1,83 @@
+---
+title: マイニング
+description: マイニングがイーサリアムでどのように機能していたのかの説明
+lang: ja
+---
+
+
+プルーフ・オブ・ワークは、イーサリアムの合意メカニズムの基盤ではなくなり、すでにマイニングは廃止されています。 マイニングに代わって、イーサリアムはETHをステーキングするバリデータにより保護されています。 今日からETHのステーキングを始めることができます。 詳細についてはマージ、プルーフ・オブ・ステークおよびステーキングを参照してください。 このページについては、これまでのイーサリアムの歩みを学ぶための参考としてお読みください。
+
+
+## 前提知識 {#prerequisites}
+
+このページをよく理解するためには、まず[トランザクション](/developers/docs/transactions/)、[ブロック](/developers/docs/blocks/)、[プルーフ・オブ・ワーク](/developers/docs/consensus-mechanisms/pow/)について読むことをお勧めします。
+
+## イーサリアムのマイニングとは {#what-is-ethereum-mining}
+
+マイニングとは、現在廃止されているプルーフ・オブ・ワークのアーキテクチャで、イーサリアムのブロックチェーンに追加されるトランザクションのブロックを生成するプロセスのことです。
+
+マイニングと言う言葉は、鉱山から金を探し当てることをたとえて付けられました。 金や貴金属が希少なように、デジタルトークンも希少であり、プルーフ・オブ・ワークのシステムで保有量を増やす唯一の方法がマイニングです。 プルーフ・オブ・ワークのイーサリアムでは、ETH の発行は唯一マイニングにより行われました。 ただしイーサリアムのマイニングは、金や貴金属と異なり、ブロックチェーンのブロックを生成、検証、発行、伝播することによってネットワークを保護する手段でもありました。
+
+Ether のマイニング = ネットワークの保護
+
+マイニングは、すべてのプルーフ・オブ・ワークのブロックチェーンの生命線をなします。 プルーフ・オブ・ステークへの移行前は、イーサリアムのマイナー (ソフトウェアを実行するコンピュータ)は、時間と計算能力を使ってトランザクションを処理し、ブロックを生成していました。
+
+## マイナーが必要な理由 {#why-do-miners-exist}
+
+イーサリアムのような分散型システムでは、全員がトランザクションに同意する必要があります。 マイナーは多くの計算能力を必要とするパズルを解いてブロックを生成することで、これを実現し、攻撃からネットワークを保護していました。
+
+[プルーフ・オブ・ワークの詳細](/developers/docs/consensus-mechanisms/pow/)
+
+以前は、コンピュータを使って誰でもイーサリアムネットワークでマイニング可能でしたが、 誰もが ETH のマイニングで利益を得られるわけではありませんでした。 多くの場合マイナーは専用のコンピュータハードウェアを購入し、安価なエネルギー源を入手する必要がありました。 平均的なコンピュータでは、マイニングに関連するコストをまかなうのに十分なブロック報酬を得ることはほとんどありませんでした。
+
+### マイニング・コスト {#cost-of-mining}
+
+- マイニング装置の構築と維持に必要なハードウェアの潜在的なコスト
+- マイニング装置に電力を供給するための電気コスト
+- マイニングプール利用の場合は、プールで生成された各ブロックごとにかかる一律の手数料が発生
+- マイニング装置(換気、エネルギー監視、電気配線など)をサポートする設備の潜在的なコスト
+
+さらにマイニングの収益性を詳しく確認するには、[Etherscan](https://etherscan.io/ether-mining-calculator)などが提供するマイニング計算機をご使用ください。
+
+## イーサリアムトランザクションのマイニング方法 {#how-ethereum-transactions-were-mined}
+
+1. [アカウント](/developers/docs/accounts/)の秘密鍵を使って、[トランザクション](/developers/docs/transactions/)リクエストを書き込み、署名する。
+2. 次に[ノード](/developers/docs/nodes-and-clients/)からイーサリアムネットワーク全体にトランザクションリクエストをブロードキャストする。
+3. 新しいトランザクションリクエストを受けると、イーサリアムネットワークの各ノードがリクエストをローカルのメンプールに追加する(メンプールとはブロックのブロックチェーンにまだコミットされていないすべてのトランザクションリクエストのリスト)。
+4. ある時点で、マイニングノードは数十または数百のトランザクションリクエストを獲得できる[トランザクションフィー](/developers/docs/gas/)を最大化しつつ、ブロックのガスリミットを超えない方法で[ブロック](/developers/docs/blocks/)に集約する。 次に、マイニングノードは下記を実施:
+ 1. 各トランザクションリクエストの有効性を確認し(つまり、署名を作成していないアカウントから Ether を送信していない、リクエスト形式が正しくないなど)、リクエストのコードを実行して、 EVM のローカルコピーの状態を変更する。 マイナーは、トランザクションリクエストごとにトランザクションフィーを報酬として自分のアカウントに支払う。
+ 2. ブロック内のすべてのトランザクションリクエストが検証され、ローカルの EVM コピー上で実行されると、潜在的なブロックに対するプルーフ・オブ・ワークの「正当性の証明書」の作成プロセスを開始する。
+5. 最終的に、マイナーは特定のトランザクションリクエストを含むブロックの証明書の作成を完了する。 その後、マイナーは証明書と新しい EVM 状態のチェックサムを含む、完成したブロックをブロードキャストする。
+6. 他のノードについては、新しいブロックを受け取り、 証明書を検証し、ブロック自体ですべてのトランザクションを実行する(ユーザーによって最初にブロードキャストされたトランザクションを含む)。 加えて、すべてのトランザクションの実行後の新しい EVM 状態のチェックサムが、マイナーのブロックによって要求された状態のチェックサムと一致することを確認する。 その時になって始めて、他のノードがブロックチェーンの末尾にこのブロックを追加し、新しい EVM 状態を正規の状態として受け入れる。
+7. 各ノードは、条件を満たしていないトランザクションリクエストのローカルのメンプールから、新しいブロック内の全トランザクションを削除する。
+8. ネットワークに新たに参加する新規ノードは、このトランザクションを含むブロックを含む、すべてのブロックを順にダウンロードする。 ローカル EVM コピーを初期化し(ブランク状態の EVM として開始)、ローカル EVM コピーの上でブロックですべてのトランザクションを実行するプロセスを実行し、各ブロックの状態チェックサムを検証する。
+
+すべてのトランザクションは一度だけマイニングされますが(新しいブロックに追加され、初めて伝播される)、正規の EVM 状態を進める過程ですべての参加者によって実行・検証されます。 これは、**信頼せず、確認する**というブロックチェーンの主要な考え方を反映したものです。
+
+## ビジュアルデモ {#a-visual-demo}
+
+マイニングとプルーフ・オブ・ワークのブロックチェーンに関する Austin の説明動画をご視聴ください。
+
+
+
+## マイニングアルゴリズム {#mining-algorithm}
+
+イーサリアムメインネットでは、[「Ethash」](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash)という 1 つのマイニングアルゴリズムのみが使用されました。 Ethhash とは、[「Dagger-Hashimoto」](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto)として知られるオリジナルの研究開発アルゴリズムを受け継いだものです。
+
+[マイニングアルゴリズムの詳細](/developers/docs/consensus-mechanisms/pow/mining-algorithms/)
+
+## 参考文献 {#further-reading}
+
+- [イーサリアムのマイニングとは](https://docs.ethhub.io/using-ethereum/mining/) _EthHub_
+
+## 関連ツール {#related-tools}
+
+- [上位のイーサリアムマイナー](https://etherscan.io/stat/miner?range=7&blocktype=blocks)
+- [Etherscan マイニング計算機](https://etherscan.io/ether-mining-calculator)
+- [Minerstat マイニング計算機](https://minerstat.com/coin/ETH)
+
+## 関連トピック {#related-topics}
+
+- [ガス](/developers/docs/gas/)
+- [EVM](/developers/docs/evm/)
+- [プルーフ・オブ・ワーク](/developers/docs/consensus-mechanisms/pow/)
diff --git a/src/content/translations/ja/developers/docs/dapps/index.md b/src/content/translations/ja/developers/docs/dapps/index.md
new file mode 100644
index 00000000000..38508185259
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/dapps/index.md
@@ -0,0 +1,82 @@
+---
+title: 分散型アプリケーション(Dapp)入門
+description:
+lang: ja
+---
+
+分散型アプリケーション(Dapp)とは、 [スマートコントラクト](/developers/docs/smart-contracts/) とフロントエンドのユーザーインターフェイスを組み合わせた、分散型ネットワーク上に構築されたアプリケーションのことです。 イーサリアムでは、スマートコントラクトはオープン API のようにアクセス可能で透明性があるため、他の人が書いたスマートコントラクトを含めることもできます。
+
+## 前提知識 {#prerequisites}
+
+分散型アプリ(Dapp)について学ぶ前に、 [ブロックチェーンの基本](/developers/docs/intro-to-ethereum/)を網羅し、イーサリアムネットワークとネットワークの分散化についてお読みください。
+
+## 分散型アプリケーション(Dapp)の定義 {#definition-of-a-dapp}
+
+分散型アプリ(Dapp)は、分散型ピアツーピアネットワーク上で稼働するバックエンドコードを内包しています。 これはバックエンドコードが中央集権的なサーバ上で実行されているアプリとは対照的です。
+
+分散型アプリ(Dapp)は、普通のアプリと同様に、任意の言語で書かれたフロントエンドコードとユーザーインターフェースを持ち、バックエンドを呼び出します。 さらに、そのフロントエンド部分を[IPFS](https://ipfs.io/)などの分散型ストレージにホストすることができます。
+
+- **分散型** - 分散型アプリ(Dapp)はイーサリアム上で動作する。イーサリアムはオープンでパブリックな分散型プラットフォームで、特定の個人やグループがコントロールすることはない。
+- **確定性** - 分散型アプリ(Dapp)は実行される環境に依存せず、同じ機能を実行する。
+- **チューリング完全** - 分散型アプリ(Dapp)は必要なリソースがあれば、あらゆるアクションを実行可能。
+- **隔離性** - 分散型アプリ(Dapp)は、イーサリアム仮想マシンと呼ばれる仮想環境で実行されるため、スマートコントラクトにバグがあっても、ブロックチェーンネットワーク自身の正常な機能を妨げることがない。
+
+### スマートコントラクト {#on-smart-contracts}
+
+分散型アプリ(Dapp)の説明をするには、まずスマートコントラクトから始める必要があります。適当な言葉が見つからないため、スマートコントラクトは分散型アプリのバックエンドと考えてください。 詳細については、 [スマートコントラクト](/developers/docs/smart-contracts/)のセクションをご覧ください。
+
+スマートコントラクトは、イーサリアムブロックチェーン上に存在し、プログラムされた通りに実行されるコードのことです。 一度ネットワークにデプロイされたスマートコントラクトを変更することはできません。 分散型アプリ(Dapp)は、個人や企業ではなく、コントラクトに書かれたロジックのみによって制御されるため、分散化することができます。 これはまた、スマートコントラクトを非常に慎重に設計し、徹底的にテストしなければならないことも意味しています。
+
+## 分散型アプリ(Dapp)のメリット {#benefits-of-dapp-development}
+
+- **ゼロダウンタイム** - スマートコントラクトがブロックチェーンにデプロイされると、ネットワーク全体が常にスマートコントラクトとのやり取りを求めるクライアントにサービスを提供できるようになる。 そのため、個々の分散型アプリを対象としたサービス拒否攻撃を行えない。
+- **プライバシー** - 分散型アプリ(Dapp)の展開や利用には、現実世界の身分証明書の提供は必要ない。
+- **検閲耐性** - ネットワーク上のどの存在もトランザクション、分散型アプリ(Dapp)のデプロイ、またはブロックチェーンからのデータの読み込みを阻止できない。
+- **完全なデータの整合性** - 暗号プリミティブにより、ブロックチェーン上に保存されたデータは、変更不可能で明白。 トランザクションやすでに公開されているその他のデータを偽造することはできない。
+- **トラストレスな計算/検証可能な動作** - スマートコントラクトは分析でき、中央集権的な機関を信頼する必要なく、予測可能な方法で実行される。 従来のモデルではトラストレスではなく、例えばオンラインバンキングシステムを使う場合などは、金融機関が個人の財務データを悪用したり、記録を改ざんしたり、ハッキングの被害に合わないと信頼しなくてはならない。
+
+## 分散型アプリ(Dapp)のデメリット {#drawbacks-of-dapp-development}
+
+- **メンテナンス** - ブロックチェーンに公開されたコードやデータが修正されにくいため、メンテナンスが困難となる場合がある。 古いバージョンでバグやセキュリティ上のリスクが特定されている場合でも、デベロッパーがデプロイされた分散型アプリ(または分散型アプリが保存する基盤となるデータ)を更新することは困難。
+- **性能オーバーヘッド** - 膨大な性能オーバーヘッドがあり、スケーリングが非常に困難。 イーサリアムが目指すセキュリティ、完全性、透明性、信頼性のレベルを達成するために、すべてのノードが全トランザクションを実行および保存する。 これに加えて、プルーフ・オブ・ステークのコンセンサスにも時間がかかる。
+- **ネットワーク輻輳** - 1 つの分散型アプリ(Dapp)が多くの計算リソースを使用すると、ネットワーク全体が滞る。 現在、1 秒間に約 10 ~ 15 件のトランザクションのみ処理可能だが、それ以上のスピードでトランザクションが送られてくると、未確認のトランザクション数がすぐに膨らむ。
+- **ユーザーエクスペリエンス** - 平均的なエンドユーザーにとっては、真に安全な方法でブロックチェーンと対話する必要なツールスタックをセットアップすることが困難であるため、ユーザーにとって使いやすいユーザーエクスペリエンスを作り込む事は困難な場合がある。
+- **中央集中化** - イーサリアムのベースレイヤーの上に構築されたユーザーとデベロッパーに使い勝手の良いソリューションは、最終的には集中型サービスのようになってしまう場合がある。 例えば、鍵やその他の機密情報をサーバ側に保存したり、集中管理されたサーバを使ってフロントエンドを提供したり、重要なビジネスロジックをブロックチェーンに書き込む前にサーバで実行することになるため、中央集権化されたアプリと類似してしまう場合がある。 中央集権では、従来のモデルに対するブロックチェーンのメリットの多くを失ってしまう。
+
+## 映像で学びたい人向け {#visual-learner}
+
+
+
+## 分散型アプリ(Dapp)の作成ツール {#dapp-tools}
+
+**Scaffold-ETH _ - 自分のスマートコントラクトに適応するフロントエンドを使用して、Solidity を手軽に試す。_**
+
+- [GitHub](https://github.com/austintgriffith/scaffold-eth)
+- [分散型アプリ(Dapp)の例](https://punkwallet.io/)
+
+**Create Eth App _-1 つのコマンドでイーサリアムアプリを作成_**
+
+- [GitHub](https://github.com/paulrberg/create-eth-app)
+
+**One Click Dapp _- [ABI](/glossary/#abi)から分散型アプリ(Dapp)フロントエンドを生成する FOSS ツール_**
+
+- [oneclickdapp.com](https://oneclickdapp.com)
+- [GitHub](https://github.com/oneclickdapp/oneclickdapp-v1)
+
+**Etherflow _- イーサリアムデベロッパー向けの FOSS ツール。ノードをテストし、ブラウザから RPC 呼び出しの作成・デバッグするツール。_**
+
+- [etherflow.quiknode.io](https://etherflow.quiknode.io/)
+- [GitHub](https://github.com/abunsen/etherflow)
+
+## 参考文献 {#further-reading}
+
+- [Web 3.0 アプリケーションのアーキテクチャ](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application) - _Preethi Kasireddy_
+- [分散型アプリケーションに関するガイド(2021 年)](https://limechain.tech/blog/what-are-dapps-the-2021-guide/) - _LimeChain_
+- [分散型アプリとは](https://www.gemini.com/cryptopedia/decentralized-applications-defi-Dapps) - _Gemini_
+
+_役に立つコミュニティリソースをご存知の場合は、 ページを編集して追加してください。_
+
+## 関連トピック {#related-topics}
+
+- [イーサリアムスタック入門](/developers/docs/ethereum-stack/)
+- [開発フレームワーク](/developers/docs/frameworks/)
diff --git a/src/content/translations/ja/developers/docs/data-and-analytics/block-explorers/index.md b/src/content/translations/ja/developers/docs/data-and-analytics/block-explorers/index.md
new file mode 100644
index 00000000000..6e5f2e83838
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/data-and-analytics/block-explorers/index.md
@@ -0,0 +1,242 @@
+---
+title: ブロックエクスプローラー
+description: ブロックエクスプローラー (トランザクション、アカウント、コントラクトなどの情報のクエリを実行できる、ブロックチェーンデータのポータル) の紹介
+lang: ja
+sidebarDepth: 3
+---
+
+ブロックエクスプローラーは、イーサリアムデータのポータルとして機能します。 ブロックエクスプローラーを使用すると、ブロック、トランザクション、マイナー、アカウント、およびその他のオンチェーンのアクティビティについて、リアルタイムのデータを確認できます。
+
+## 前提知識 {#prerequisites}
+
+ブロックエクスプローラーから提供されるデータを理解するためには、イーサリアムの基本的な概念を理解する必要があります。 [イーサリアム入門](/developers/docs/intro-to-ethereum/)から始めましょう。
+
+## サービス {#services}
+
+- [Etherscan](https://etherscan.io/) –_中国語、韓国語、ロシア語、日本語でも利用できます_
+- [Etherchain](https://www.etherchain.org/)
+- [Ethplorer](https://ethplorer.io/) –_中国語、スペイン語、フランス語、トルコ語、ロシア語、韓国語、ベトナム語でも利用できます_
+- [blockchair](https://blockchair.com/ethereum) –_スペイン語、フランス語、イタリア語、オランダ語、ポルトガル語、ロシア語、中国語、ペルシア語でも利用できます_
+- [Blockscout](https://blockscout.com/)
+- [OKLink](https://www.oklink.com/eth)
+- [Otterscan](https://otterscan.io/)
+
+## データ {#data}
+
+イーサリアムは透過的な設計であるため、すべてを検証できます。 ブロックエクスプローラーは、その情報を取得するためのインターフェースを提供します。 このインターフェースでは必要に応じて、イーサリアムのメインネットワークとテストネットの両方のデータを取得できます。 データは、実行データとコンセンサスデータに分けられます。 実行データとは、特定のブロック内で実行されたトランザクションのことです。 コンセンサスデータは、ブロック自体、およびブロックを提案したバリデータを指します。
+
+ブロックエクスプローラーから取得できるデータの種類を、以下にまとめます。
+
+### 実行データ {#execution-data}
+
+イーサリアムには、12 秒ごとに (ブロック提案者が順番を逃さない限り) 新しいブロックが追加されます。そのため、ブロックエクスプローラーには、ほぼ常に一定のペースでデータが追加されていきます。 ブロックには、以下の役に立つ重要なデータがたくさん含まれています:
+
+**標準データ**
+
+- Block height (ブロック高) - 現在のブロックの作成時のブロック番号とブロックチェーンの長さ (ブロック単位)
+- Timestamp (タイムスタンプ) - ブロックが提案された時刻
+- Transactions (トランザクション) - ブロック内に含まれるトランザクションの数
+- Fee recipient (フィーの受取人) - トランザクションでガス代のチップを受け取ったアドレス
+- Block Reward (ブロック報酬) - ブロックを提案したバリデータに支払われる ETH の額
+- Size (サイズ) - ブロック内のデータのサイズ (バイト単位)
+- Gas used (ガス使用量) - ブロック内のトランザクションで使用されたガスの合計単位
+- Gas limit (ガスリミット) - ブロック内のトランザクションによって設定されたガス上限値の合計
+- Base fee per gas (ガスあたりのベースフィー) - トランザクションをブロックに含めるために必要なガス代の最小単位
+- Burnt fees (焼却されたフィー) - ブロックで焼却された ETH の額
+- Extra data (追加データ) - マイナーがブロックに記録した追加データ
+
+**拡張データ**
+
+- Hash (ハッシュ) - ブロックヘッダー (ブロックの一意な識別子) を表す暗号論的ハッシュ
+- Parent hash (親ハッシュ) - 現在のブロックの前のブロックのハッシュ
+- StateRoot (状態ルート) - システム全体の状態を格納するマークルツリーのルートハッシュ
+
+### ガス {#gas}
+
+ブロックエクスプローラーでは、トランザクションやブロックのガスの使用に関するデータを取得できます。さらに、ネットワークの現在のガス価格についての情報を得られる場合もあります。 これにより、ネットワークの使用状況の把握、トランザクションの安全な送信、ガスの浪費防止が可能になります。 これらの情報は、API を利用して、ご使用の製品のインターフェースに取り込むことができます。 ガスの固有データには、以下が含まれます。
+
+- 安全だが時間のかかるトランザクションに必要なガスの推定単位数 (+推定価格と所要時間)
+- 平均的な速さのトランザクションに必要なガスの推定単位数 (+推定価格と所要時間)
+- 高速なトランザクションに必要なガスの推定単位数 (+推定価格と所要時間)
+- ガス価格に基づいた平均確認時間
+- ガスを消費しているコントラクト - つまり、ネットワーク上で頻繁に利用されている人気製品
+- ガスを消費しているアカウント - つまり、頻繁にネットワークを利用しているユーザー
+
+### トランザクション {#transactions}
+
+ブロックエクスプローラーは、トランザクションの進捗状況を追跡できる場所として一般的になっています。 詳細な情報を得ることで、確実性が増大するためです。 トランザクションデータには、以下が含まれます。
+
+**標準データ**
+
+- Transaction hash (トランザクションハッシュ) - トランザクションの送信時に生成されるハッシュ
+- Status (ステータス) - トランザクションが保留中、失敗、成功のいずれであるかを示す
+- Block (ブロック) - トランザクションが含まれるブロック
+- Timestamp (タイムスタンプ) - マイナーがトランザクションをマイニングした時刻
+- From - トランザクションを送信したアカウントのアドレス
+- To - トランザクションとやり取りする受信者またはスマートコントラクトのアドレス
+- Tokens transferred (送金されたトークン) - トランザクションの一部として送金されたトークンのリスト
+- Value (価値) - 送金される ETH の価値
+- Transaction fee (トランザクションフィー) -トランザクションを処理するためにマイナーに支払われる額 (ガス価格\*ガス使用量)
+
+**拡張データ**
+
+- Gas limit (ガスリミット) - このトランザクションで消費できるガス単位の最大値
+- Gas used (ガス使用量) - トランザクションで消費された実際のガス量
+- Gas price (ガス価格) - ガス単位あたりの設定価格
+- Nonce (ノンス) - `from`のアドレスのトランザクション番号 (この番号は 0 から始まります。そのため、この値が`100`の場合、このアカウントから送信された 101 番目のトランザクションとなることに留意する必要があります)
+- Input data (入力情報) - トランザクションで必要とされる追加情報
+
+### アカウント {#accounts}
+
+アカウントについて取得できるデータは非常に多くあります。 そのため、多くの場合、資産や価値を簡単に追跡されないように複数のアカウントを使用することが推奨されています。 また、トランザクションやアカウントのアクティビティをよりプライベートにするためのソリューションもあります。 アカウントから取得できるデータには、以下が含まれます。
+
+**ユーザーアカウント**
+
+- Account address (アカウントアドレス) - 資金の送金先として使用できるパブリックアドレス
+- ETH balance (ETH 残高) - アカウントに関連付けられた ETH の額
+- Total ETH value (ETH の総価値) - ETH の価値
+- Tokens (トークン) - アカウントに関連付けられたトークンとその価値
+- Transaction history (トランザクション履歴) - このアカウントを送信元または宛先とするすべてのトランザクションのリスト
+
+**スマートコントラクト**
+
+スマートコントラクトアカウントは、ユーザーアカウントが持つすべてのデータを持っていますが、ブロックエクスプローラーによってはソースコードの情報も表示されます。 例としては:
+
+- Contract creator (コントラクト作成者) - コントラクトをメインネットにデプロイしたアドレス
+- Creation transaction (作成したトランザクション) - メインネットへのデプロイが含まれたトランザクション
+- Source code (ソースコード) - スマートコントラクトの Solidity コードまたは Vyper コード
+- Contract ABI (コントラクトの ABI) - コントラクトによる呼び出しと受信データのための、コントラクト用のアプリケーションバイナリインターフェース (ABI)
+- Contract creation code (コントラクト作成コード) - Solidity や Vyper などで記述されたスマートコントラクトをコンパイルしたときに作成される、コンパイル済みバイトコード
+- Contract events (コントラクトイベント) - スマートコントラクトで呼び出されたメソッドの履歴。コントラクトの使用方法と頻度を確認するための基本的な方法として使用
+
+### トークン {#tokens}
+
+トークンはコントラクトの一種であるため、スマートコントラクトと同様のデータを持ちます。 しかし、トークンは価値を持ち、取引が可能です。トークンには、以下の追加のデータポイントが含まれます。
+
+- Type (タイプ) - ERC-20、ERC-721、またはその他のトークン標準
+- Price (価格) - ERC-20 の場合のみ、現行市場価値
+- Market cap (時価総額) - ERC-20 の場合のみ、時価総額 (計算式: 価格\*総供給量)
+- Total supply (総供給量) - 流通しているトークンの数
+- Holders (保有者) -トークンを保有するアドレスの数
+- Transfers - トークンがアカウント間で送金された回数
+- Transaction history (トランザクション履歴) - トークンを含むすべてのトランザクションの履歴
+- Contract address (コントラクトアドレス) - メインネットにデプロイされたトークンのアドレス
+- Decimals (小数) - ERC-20 トークンは分割が可能であり、小数点以下の桁数を持つ
+
+### ネットワーク {#network}
+
+一部のブロックデータは、イーサリアムのより包括的な健全性に関連します。
+
+- Total transations (合計トランザクション数) - イーサリアムの誕生以降のトランザクションの数
+- Transactions per second (1 秒あたりのトランザクション数) - 1 秒以内に処理可能なトランザクションの数
+- ETH price (ETH 価格) - 1ETH の現在評価額
+- Total ETH supply (総 ETH 供給量) - 流通している ETH の数。ETH は、ブロックが作成されるごとにブロック報酬というかたちで新規に作成される
+- Market cap (時価総額) - 計算式: 価格\*供給量
+
+## コンセンサスレイヤーのデータ {#consensus-layer-data}
+
+### エポック {#epoch}
+
+セキュリティ上の理由から、各エポックの終了時 (6.4 分ごと) に、ランダムに選出されたバリデータ委員会が作成されます。 エポックデータには、以下が含まれます。
+
+- Epoch number (エポック番号)
+- Finalized status (ファイナライズの状態) - エポックがファイナライズされたかどうか (Yes/No)
+- Time - エポックの終了時刻
+- Attestations (アテステーション) - エポック内のアテステーションの数 (スロット内のブロックへの投票数)
+- Deposits (デポジット) - エポックに含まれる ETH のデポジットの数 (バリデータになるには ETH をステークする必要がある)
+- Slashings (スラッシング) - ブロック提案者またはアテスターに対するペナルティの数
+- Voting participation (投票参加) - ブロックのアテステーションに使用される、ステーク済みの ETH の量
+- Validators (バリデータ数) -エポックのアクティブなバリデータの数
+- Average Validator balance (バリデータの平均残高) - アクティブなバリデータの平均残高
+- Slots (スロット数) - エポックに含まれるスロットの数 (スロットは有効なブロックを 1 つ含む)
+
+### スロット {#slot}
+
+スロットはブロックを作成する機会です。各スロットの取得可能なデータには、以下が含まれます。
+
+- Epoch (エポック) - スロットが有効なエポック
+- Slot number (スロット番号)
+- Status (ステータス) - スロットのステータス (Proposed/Missed)
+- Time (時刻) - スロットのタイムスタンプ
+- Proposer (提案者) - スロットでブロックを提案したバリデータ
+- Block root (ブロックルート) - ビーコンブロックのハッシュツリーのルート
+- Parent root (親ルート) - 直前のブロックのハッシュ
+- State root (状態ルート) - ビーコン状態のハッシュツリーのルート
+- Signature (署名)
+- Randao reveal (RanDAO 公開)
+- Graffiti (グラフィティ) - ブロック提案者は、32 バイト長のメッセージをブロック提案に含めることができる
+- Execution Data (実行データ)
+ - Block hash (ブロックハッシュ)
+ - Deposit count (デポジットカウント)
+ - Deposit root (デポジットルート)
+- Attestations (アテステーション) - スロット内のブロックのアテステーションの数
+- Deposits (デポジット) - このスロットでのデポジットの数
+- Voluntary exits (自主退出) - スロット中に退出したバリデータの数
+- Slashings (スラッシング) - ブロックの提案者またはアテスターに対するペナルティの数
+- Votes (投票数) - このスロットのブロックに投票したバリデータの数
+
+### ブロック {#blocks-1}
+
+プルーフ・オブ・ステークでは、時間をスロットとエポックに分割します。 つまり、データが新しくなります。
+
+- Proposer (提案者) - 新規ブロックを提案するためにアルゴリズムによって選出されたバリデータ
+- Epoch (エポック) - 提案されたブロックのエポック
+- Slot (スロット) - 提案されたブロックのスロット
+- Attestations (アテステーション) - スロットに含まれるアテステーションの数。アテステーションは、ブロックをビーコンチェーンに移行する準備が整っているかどうかを示す投票のようなもの
+
+### バリデータ {#validators}
+
+バリデータの責務は、ブロックを提案してスロット内で証明することです。
+
+- Validator number (バリデータ番号) - バリデータを表す一意の番号
+- Current balance (現在の残高) - 報酬を含むバリデータの残高
+- Effective balance (有効残高) - ステーキングに使用されるバリデータの残高
+- Income (収入) - バリデータが受け取った報酬またはペナルティ
+- Status (ステータス) - バリデータが現在オンラインでアクティブであるかどうかを示す
+- Attestation effectiveness (アテステーションの有効性) - バリデータのアテステーションがチェーンに含まれるまでにかかる平均時間。
+- Eligibility for activation (アクティブ化資格) - バリデータが検証を行えるようになった日付 (およびエポック)
+- Active since (アクティブ日) - バリデータがアクティブになった日付 (およびエポック)
+- Proposed blocks (提案ブロック) - バリデータが提案したブロック
+- Attestations (アテステーション数) - バリデータが提供したアテステーションの数
+- Deposits (デポジット) - バリデータが行ったステーキングデポジットの、送信元アドレス、トランザクションハッシュ、ブロック番号、タイムスタンプ、額、ステータス
+
+### アテステーション {#attestations}
+
+アテステーションは、ブロックをチェーンに含めるための「yes」の投票です。 そのデータは、アテステーションの記録と証明したバリデータに関連付けられています。
+
+- Slot (スロット) - アテステーションが行われたスロット
+- Committee index (委員会インデックス) - 特定のスロットの委員会のインデックス
+- Aggregation bits (集約ビット) - アテステーションに参加したすべてのバリデータのアテステーションの集約を表す
+- Validators (バリデータ) - アテステーションを提供したバリデータの数
+- Beacon block root (ビーコンブロックルート) - バリデータが証明しているブロックをポイントする
+- Source (ソース) - 最新の正当化されたエポックをポイントする
+- Target (ターゲット) - 最新のエポック境界をポイントする
+- Signature (署名)
+
+### ネットワーク {#network-1}
+
+コンセンサスレイヤーの最上位データには、以下のものが含まれます。
+
+- Current epoch (現在のエポック)
+- Current slot (現在のスロット)
+- Active validators (アクティブなバリデータ) - アクティブなバリデータの数
+- Pending validators (保留中のバリデータ) - アクティブになるのを待機しているバリデータの数
+- Staked ETH (ステーク済みの ETH) - ネットワークでステークされた ETH の量
+- Average balance (平均残高) - バリデータの平均 ETH 残高
+
+## ブロックエクスプローラー {#block-explorers}
+
+- [Etherscan](https://etherscan.io/) - イーサリアムメインネット、Ropsten テストネット、Kovan テストネット、Rinkby テストネット、Goerli テストネットのデータを取得するために使用できるブロックエクスプローラー
+- [Etherchain](https://www.etherchain.org/) - イーサリアムメインネットのブロックエクスプローラー
+- [Ethplorer](https://ethplorer.io/) - イーサリアムメインネットと Kovan テストネットのトークンを中心としたブロックエクスプローラー
+- [Blockchair](https://blockchair.com/ethereum) - 最もプライベートなイーサリアムエクスプローラー。 データのソートやフィルタリング (メンプール) も可能
+
+## 参考文献 {#further-reading}
+
+_役に立つコミュニティリソースをご存知の場合は、 ページを編集して追加してください。_
+
+## 関連トピック {#related-topics}
+
+- [トランザクション](/developers/docs/transactions/)
+- [アカウント](/developers/docs/accounts/)
+- [ネットワーク](/developers/docs/networks/)
diff --git a/src/content/translations/ja/developers/docs/data-and-analytics/index.md b/src/content/translations/ja/developers/docs/data-and-analytics/index.md
new file mode 100644
index 00000000000..09137541ea3
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/data-and-analytics/index.md
@@ -0,0 +1,45 @@
+---
+title: データと分析
+description: オンチェーン分析およびDappで使用するデータを取得する方法
+lang: ja
+---
+
+## はじめに {#Introduction}
+
+ネットワークの活用が拡大するにつれて、オンチェーンデータには高価値の情報がますます増えています。 データ量の急増に伴い、こうした情報を計算して集約し、レポートを作成したり、dapp を動作させたりするためには、多大な時間と労力が必要になってきています。
+
+既存のデータプロバイダを活用することで、開発を迅速化し、より正確な結果を生み出し、維持のための労力を削減できます。 これにより、チームはプロジェクトが提供しようとしているコア機能に集中することができます。
+
+## 前提知識 {#prerequisites}
+
+データ分析の文脈における[ブロックエクスプローラー](/developers/docs/data-and-analytics/block-explorers/)の使用方法をより深く理解するためには、その基本的な概念を把握しておく必要があります。 また、[インデックス](/glossary/#index)の概念について熟知していると、システム設計に追加されたメリットについても理解できます。
+
+アーキテクチャの基礎としては、[API](https://www.wikipedia.org/wiki/API)および[REST](https://www.wikipedia.org/wiki/Representational_state_transfer)の概念について、少なくとも理論として把握している必要があります。
+
+## ブロックエクスプローラー {#block-explorers}
+
+多くの[ブロックエクスプローラー](/developers/docs/data-and-analytics/block-explorers/)は、[RESTful](https://www.wikipedia.org/wiki/Representational_state_transfer) [API](https://www.wikipedia.org/wiki/API)ゲートウェイを提供しています。このゲートウェイにより、デベロッパーは、ブロック、トランザクション、マイナー、アカウント、およびその他のオンチェーンアクティビティについて、リアルタイムのデータを可視化できるようになります。
+
+デベロッパーはこうしたデータを処理して変換することで、[ブロックチェーン](/glossary/#blockchain)についての独自のインサイトおよびやり取りをユーザーに提供できます。 例えば、[Etherscan](etherscan.io)は、12 秒のスロットごとに実行データとコンセンサスデータを提供します。
+
+## The Graph {#the-graph}
+
+[Graph ネットワーク](https://thegraph.com/)は、ブロックチェーンデータを編成するための分散型インデックスプロトコルです。 The Graph では、オンチェーンデータを集約するためにオフチェーンの中央データストアの構築と管理を行う必要はありません。デベロッパーは、完全にパブリックインフラストラクチャで実行できるサーバレスアプリケーションを構築できます。
+
+[GraphQL](https://graphql.org/)を使用することにより、デベロッパーはサブグラフと呼ばれるキュレートされた任意のオープン API のクエリを実行して、dapp の動作に必要な情報を取得できます。 このインデックス化されたサブグラフへのクエリを実行することで、レポートと dapp について、パフォーマンスやスケーラビリティ面でのメリットを得られるだけでなく、ネットワークコンセンサスによって本質的な精度も向上します。 新たな機能改善やサブグラフがネットワークに追加されることでプロジェクトの反復処理が迅速化し、こうした機能強化をさらに活用できるようになります。
+
+## クライアントの多様性
+
+[クライアントの多様性](/developers/docs/nodes-and-clients/client-diversity/)は、バグや脆弱性に対する回復力を提供します。そのため、イーサリアムネットワーク全体の健全性にとって重要です。 現在、[clientdiversity.org](https://clientdiversity.org/)、[rated.network](rated.network)、[pool.invis.cloud](pool.invis.cloud)、[slashed.info](slahed.info)、[Ethernodes](https://ethernodes.org/)など、いくつかのクライアント多様性ダッシュボードがあります。
+
+## Dune Analytics {#dune-analytics}
+
+[Dune Analytics](https://dune.com/)は、リレーショナルデータベース (PostgreSQL および DatabricksSQL) テーブルのために、ブロックチェーンデータの前処理を行います。 これにより、ユーザーは SQL を使用してブロックチェーンデータのクエリを実行し、クエリ結果に基づいてダッシュボードを構築できるようになります。 オンチェーンデータは、`blocks`、`transactions`、(event) `logs`、(call) `traces`という、4 つの未加工テーブルに編成されます。 一般的なコントラクトやプロトコルはデコードされており、それぞれにイベントと呼び出しのテーブルのセットがあります。 これらのイベントと呼び出しのテーブルはさらに処理され、DEX、レンディング、ステーブルコインなどのプロトコルの種類によって抽象テーブルに編成されます。
+
+## 参考文献 {#further-reading}
+
+- [Graph ネットワークの概要](https://thegraph.com/docs/en/about/network/)
+- [Graph Query Playground](https://thegraph.com/explorer/subgraph/graphprotocol/graph-network-mainnet?version=current)
+- [EtherScan の API コードの例](https://etherscan.io/apis#contracts)
+- [Beaconcha.in ビーコンチェーンエクスプローラー](https://beaconcha.in)
+- [Dune の基礎](https://docs.dune.com/#dune-basics)
diff --git a/src/content/translations/ja/developers/docs/development-networks/index.md b/src/content/translations/ja/developers/docs/development-networks/index.md
new file mode 100644
index 00000000000..0abe30893e5
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/development-networks/index.md
@@ -0,0 +1,72 @@
+---
+title: 開発用ネットワーク
+description: 開発用ネットワークとイーサリアムアプリケーションの構築に役立つツールの概要。
+lang: ja
+---
+
+スマートコントラクトを使用するイーサリアムアプリケーションを構築する場合は、デプロイする前にローカルネットワーク上で実行して動作を確認することをお勧めします。
+
+ウェブ開発において自分のコンピュータ上でローカルサーバを実行する場合と同様に、開発用ネットワークを使用してローカルブロックチェーンのインスタンスを作成し、dapp をテストできます。 このイーサリアムの開発用ネットワークには、パブリックテストネットワークと比較して反復処理を大幅に迅速化する機能があります (たとえば、テストネットフォーセットから ETH を取得する必要がありません)。
+
+## 前提知識 {#prerequisites}
+
+開発用ネットワークについて学ぶ前に、[イーサリアムスタック](/developers/docs/ethereum-stack/)と[イーサリアムネットワーク](/developers/docs/networks/)の基本を理解する必要があります。
+
+## 開発用ネットワークとは {#what-is-a-development-network}
+
+開発用ネットワークは、基本的にはローカル開発のために設計された専用のイーサリアムクライアント (イーサリアムの実装) です。
+
+**標準的なイーサリアムノードをローカルで実行してみましょう。**
+
+そのまま[ノードの実行](/developers/docs/nodes-and-clients/#running-your-own-node)に進むことも*可能*ですが、開発用ネットワークは開発用に構築されているため、多くの場合に以下のような便利な機能が搭載されています。
+
+- ローカルブロックチェーンにデータを確定的にシードする (ETH 残高を持つアカウントなど) 機能
+- 受け取ったトランザクションごとに、順序どおり遅延なく即時にブロックを生成する機能
+- デバッグとロギングの拡張機能
+
+## 利用可能なツール {#available-projects}
+
+**注**: ほとんどの[開発フレームワーク](/developers/docs/frameworks/)には、組み込みの開発用ネットワークが含まれています。 フレームワークの[ローカル開発環境のセットアップ](/developers/local-environment/)から始めることをお勧めします。
+
+### Ganache {#ganache}
+
+テストの実行、コマンドの実行、状態の調査に使用できる専用のイーサリアムブロックチェーンを迅速に起動し、チェーンの動作を制御します。
+
+Ganache は、デスクトップアプリケーション (Ganache UI) とコマンドラインツール (`ganache-cli`) の両方を提供しています。 Truffle Suite というツールスイートに組み込まれています。
+
+- [ウェブサイト](https://www.trufflesuite.com/ganache)
+- [GitHub](https://github.com/trufflesuite/ganache)
+- [ドキュメント](https://www.trufflesuite.com/docs/ganache/overview)
+
+### Hardhat Network {#hardhat-network}
+
+開発用に設計されたローカルイーサリアムネットワークです。 コントラクトのデプロイ、テストの実行、コードのデバッグを可能にします。
+
+Hardhat Network には、プロフェッショナルのためのイーサリアム開発環境である Hardhat が組み込まれています。
+
+- [ウェブサイト](https://hardhat.org/)
+- [GitHub](https://github.com/nomiclabs/hardhat)
+
+### ローカルビーコンチェーン {#local-beacon-chains}
+
+一部のコンセンサスクライアントには、テスト用にローカルビーコンチェーンをスピンアップするためのツールが組み込まれています。 Lighthouse、Nimbus、Lodestar での手順は、以下で確認できます。
+
+- [Lodestar を使用したローカルテストネット](https://chainsafe.github.io/lodestar/usage/local/)
+- [Lighthouse を使用したローカルテストネット](https://lighthouse-book.sigmaprime.io/setup.html#local-testnets)
+- [Nimbus を使用したローカルテストネット](https://github.com/status-im/nimbus-eth1/blob/master/fluffy/docs/local_testnet.md)
+
+### 公開イーサリアムテストチェーン {#public-beacon-testchains}
+
+また、イーサリアムには Goerli と Sepolia という、2 つの維持されている公開テスト環境の実装もあります。 長期的なサポートが受けられる推奨テストネットは Goerli です。Goerli は、誰でも自由に検証できます。 Sepolia は、より新しい小規模なチェーンであり、当面は維持されると予測されています。許可されたバリデータのみがアクセスできます (つまり、このテストネットには、新規のバリデータは通常アクセスできません)。 Ropsten チェーンは、2022 年の第 4 期に廃止される予定です。Rinkeby チェーンは、2023 年の第 2 期または第 3 期に廃止される予定です。
+
+- [Goerli ステーキングランチパッド](https://goerli.launchpad.ethereum.org/)
+- [Ropsten、Rinkeby、Kiln の廃止のお知らせ](https://blog.ethereum.org/2022/06/21/testnet-deprecation)
+
+## 参考文献 {#further-reading}
+
+_イーサリアムを学ぶために利用したコミュニティリソースはありますか? もしあればページを編集して追加してください!_
+
+## 関連トピック {#related-topics}
+
+- [開発フレームワーク](/developers/docs/frameworks/)
+- [ローカル開発環境の構築](/developers/local-environment/)
diff --git a/src/content/translations/ja/developers/docs/ethereum-stack/index.md b/src/content/translations/ja/developers/docs/ethereum-stack/index.md
new file mode 100644
index 00000000000..d4c919d5401
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/ethereum-stack/index.md
@@ -0,0 +1,61 @@
+---
+title: イーサリアムスタック
+description: さまざまなレイヤーのイーサリアムスタックとそれらの関係性
+lang: ja
+---
+
+他のソフトウェアスタックと同様に、完全な「イーサリアムスタック」は、目的に応じてプロジェクトごとに異なります。
+
+しかし、イーサリアムのコアコンポーネントを理解すれば、ソフトウェアアプリケーションとイーサリアムブロックチェーンとのやり取りの仕組みのモデルをイメージできます。 イーサリアムスタックのレイヤーについて理解することで、イーサリアムを他のソフトウェアに統合するさまざまな方法を理解することができます。
+
+## レベル 1: イーサリアム仮想マシン {#ethereum-virtual-machine}
+
+[イーサリアム仮想マシン (EVM)](/developers/docs/evm/)は、イーサリアムのスマートコントラクトのランタイム環境です。 イーサリアムブロックチェーン上のすべてのスマートコントラクトと状態変更は、[トランザクション](/developers/docs/transactions/)によって実行されます。 全てのイーサリアムネットワーク上のトランザクションは EVM によって処理されます。
+
+他の仮想マシンと同様に、EVM は実行コードと実行マシン (イーサリアムノード) との間に抽象レベルを作成します。 現在、EVM は世界中に分散された数千のノードで動作しています。
+
+内部では、EVM は一連のオペコードを使用して特定のタスクを実行します。 これらの (140 個のユニークな) オペコードにより、EVM はチューリング完全となっています。つまり、EVM は十分なリソースさえあれば、何でも計算可能です。
+
+dapp デベロッパーは、EVM について詳しく知る必要はありません。イーサリアム上のすべてのアプリケーションをダウンタイムなしで確実に動作させている存在であることを理解していれば十分です。
+
+## レベル 2: スマートコントラクト {#smart-contracts}
+
+[スマートコントラクト](/developers/docs/smart-contracts/) は、イーサリアムブロックチェーン上で実行可能なプログラムです。
+
+スマートコントラクトは、EVM バイトコード (オペコードと呼ばれる低レベルの機械語) にコンパイルされる、特定の[プログラミング言語](/developers/docs/smart-contracts/languages/)を使用して記述されています。
+
+スマートコントラクトは、オープンソースライブラリとして機能するだけではありません。本質的には、ダウンタイムなしで常時稼動しているオープン API サービスです。 スマートコントラクトは、ユーザーやアプリケーション ([dapp](/developers/docs/dapps/)) が許可を必要とせずにやり取りできるようにするパブリック機能を提供します。 どんなアプリケーションであっても、デプロイされたスマートコントラクトと統合することで、[データフィード](/developers/docs/oracles/)の追加などの機能の作成やトークンスワップのサポートが可能になります。 誰でも新しいスマートコントラクトをイーサリアムにデプロイして、アプリケーションのニーズを満たす独自の機能を追加できます。
+
+Dapp デベロッパーは、イーサリアムブロックチェーンに独自の機能を追加したい場合にのみ、スマートコントラクトを記述する必要があります。 実際には、既存のスマートコントラクトとの統合でプロジェクトのほとんどのニーズを達成することができます。 たとえば、ステーブルコインで支払いをサポートしたい場合や、トークンの分散型取引を可能にしたい場合などです。
+
+## レベル 3: イーサリアムノード {#ethereum-nodes}
+
+アプリケーションがイーサリアムブロックチェーンとやり取りするためには、[イーサリアムノード](/developers/docs/nodes-and-clients/)に接続する必要があります。 ノードに接続すると、ブロックチェーンデータの読み取りやネットワークへのトランザクションの送信が可能になります。
+
+イーサリアムノードは、ソフトウェアを実行しているコンピュータ、すなわちイーサリアムクライアントです。 クライアントはイーサリアムの実装であり、各ブロック内のすべてのトランザクションを検証し、ネットワークの安全性とデータの正確性を維持します。 **イーサリアムノードはイーサリアムブロックチェーン**です。 イーサリアムブロックチェーンの状態をまとめて保存し、ブロックチェーンの状態を変更するためのトランザクションについてコンセンサスを得ます。
+
+アプリケーションをイーサリアムノードに ([JSON-RPC API](/developers/docs/apis/json-rpc/)を介して) 接続することで、アプリはブロックチェーンからデータ (ユーザーアカウントの残高など) を読み取ることができ、また新しいトランザクションをネットワークにブロードキャストすることができます (ユーザーアカウント間で ETH を送金したり、スマートコントラクトの機能を実行するなど) 。
+
+## レベル 4: イーサリアムクライアント API {#ethereum-client-apis}
+
+多くの便利なライブラリ (イーサリアムのオープンソースコミュニティによって構築および維持されている) を活用すると、アプリケーションがイーサリアムブロックチェーンに接続して通信できるようになります。
+
+ユーザー側のアプリケーションがウェブアプリの場合は、フロントエンドに直接、[JavaScript API](/developers/docs/apis/javascript/)を`npm install`できます。 あるいは、[Python](/developers/docs/programming-languages/python/)または[Java](/developers/docs/programming-languages/java/) API を使用して、この機能をサーバー側に実装することも可能です。
+
+これらの API は、イーサリアムスタックにとって必須ではありませんが、イーサリアムノードと直接やり取りする際の複雑さの多くを抽象化してくれます。 また、こうした API では、ユーティリティ関数 (ETH を Gwei に変換する関数など) も提供されています。そのため、デベロッパーは複雑なイーサリアムクライアントの作業に費やす時間を削減でき、自身のアプリケーションの独自機能の開発作業に専念できます。
+
+## レベル 5: エンドユーザーアプリケーション {#end-user-applications}
+
+スタックの最上位レベルには、ユーザー側のアプリケーションがあります。 これらは日常的に使用されている標準的なアプリケーションであり、主にウェブアプリとモバイルアプリです。
+
+こうしたアプリケーションのユーザーインターフェースの開発方法も、本質的には変わりません。 多くの場合、ユーザーは使用しているアプリケーションがブロックチェーンを使用して構築されているかどうかを知る必要はありません。
+
+## スタックを選ぶ準備ができたら {#ready-to-choose-your-stack}
+
+イーサリアムアプリケーションのための[ローカル開発環境のセットアップ](/developers/local-environment/)ガイドをご覧ください。
+
+## 参考文献 {#further-reading}
+
+- [Web 3.0 アプリケーションのアーキテクチャ](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application) - _Preethi Kasireddy_
+
+_役に立つコミュニティリソースをご存知の場合は、 このページを編集して追加してください。_
diff --git a/src/content/translations/ja/developers/docs/evm/index.md b/src/content/translations/ja/developers/docs/evm/index.md
new file mode 100644
index 00000000000..fc4a9cbecba
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/evm/index.md
@@ -0,0 +1,78 @@
+---
+title: イーサリアム仮想マシン(EVM)
+description: イーサリアム仮想マシンと状態、トランザクション、およびスマートコントラクトの関係性の説明
+lang: ja
+---
+
+イーサリアム仮想マシン(EVM)の物理的なインスタンス化は、雲や海の波を指し示すようには説明できませんが、イーサリアムクライアントを実行する数千の接続されたコンピュータによって維持される 1 つのエンティティとして*存在*します。
+
+イーサリアムのプロトコル自体、この特別な状態マシンの継続的、無中断かつ変更不可能である動作を維持することが唯一の目的です。 すべてのイーサリアムアカウントとスマートコントラクトが存続する環境です。 チェーン内のすべてブロックにおいて、イーサリアムは単一の「正規」の状態のみを持ち、EVM はブロックごとに新たな有効状態を計算するためのルールを定義します。
+
+## 前提知識 {#prerequisites}
+
+EVM を理解するためには、[バイト](https://wikipedia.org/wiki/Byte)、[メモリ](https://wikipedia.org/wiki/Computer_memory)、[スタック]()など、コンピュータサイエンスの一般的な用語に関する基本知識が必要です。 また、暗号学やブロックチェーンの概念である[ハッシュ関数](https://wikipedia.org/wiki/Cryptographic_hash_function)、[マークルツリー](https://wikipedia.org/wiki/Merkle_tree)などを知っていると理解の手助けになります。
+
+## 台帳から状態マシンへ {#from-ledger-to-state-machine}
+
+「分散台帳」の例えは、ビットコインのようなブロックチェーンを説明する際によく使用され、暗号技術の基本的なツールを使用して分散型通貨を可能にするものです。 台帳はアクティビティの記録を維持し、アクティビティは台帳を変更する上で、誰かができること・できないことを定める一連の規則に従います。 例えば、あるビットコインアドレスで、以前に受け取ったビットコインよりも多くのビットコインを使用できません。 このルールは、ビットコインをはじめとする多くのブロックチェーンのすべてのトランザクションを支えるものです。
+
+イーサリアムには、ほぼ同様の直観的なルールに従うイーサリアムのネイティブ暗号通貨(イーサ)に加えて、[スマートコントラクト](/developers/docs/smart-contracts/)というさらに強力な機能があります。 この機能は複雑なため、説明にはより詳しい例が必要になります。 イーサリアムは分散台帳ではなく、分散型の[状態マシン](https://wikipedia.org/wiki/Finite-state_machine)です。 イーサリアムの状態とは、全アカウントとその残高を保持するだけでなく、予め定義されたルールに従ってブロックごとに変化し、任意のマシンコードを実行できる*マシンの状態*を保持する、巨大なデータ構造です。 ブロックごとの状態変化の具体的なルールは、EVM によって定義されています。
+
+![EVMの構成図](./evm.png) _ [イーサリアム EVM](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)からの図解_
+
+## イーサリアムの状態遷移関数 {#the-ethereum-state-transition-function}
+
+EVM は数学の関数のように動作し、入力に対して決定論的な出力が得られます。 そのため、イーサリアムを**状態遷移関数**を持つと正式に表現することもできます。
+
+```
+Y(S, T)= S'
+```
+
+古い有効な状態 `(S)`と新しい有効なトランザクションのセット`(T)` により、イーサリアムの状態遷移関数`Y(S, T)`は新しい有効な出力状態 `S'` を生成します。
+
+### 状態 {#state}
+
+イーサリアムにおける「状態」とは、[修正マークルパトリシアツリー](/developers/docs/data-structures-and-encoding/patricia-merkle-trie/)と呼ばれる巨大なデータ構造であり、ハッシュでリンクされたすべての[アカウント](/developers/docs/accounts/)を保持し、ブロックチェーンに保存されている単一のルートハッシュにまとめることができます。
+
+### トランザクション {#transactions}
+
+イーサリアムにおける「トランザクション」とは、アカウントから暗号的に署名された一連の指示です。 トランザクションには、メッセージの呼び出しが発生するものと、コントラクトの作成が発生するものの 2 種類があります。
+
+スマートコントラクトを作成すると、コンパイルされた[スマートコントラクト](/developers/docs/smart-contracts/anatomy/)バイトコードを含む、新規コントラクトアカウントが作られます。 他のアカウントがスマートコントラクトへメッセージの呼び出しを行うたびに、そのバイトコードが実行されます。
+
+## EVM 指示 {#evm-instructions}
+
+EVM は 1024 項目を含む[スタックマシン](https://wikipedia.org/wiki/Stack_machine)として実行されます。 各項目は 256 ビットの単語で、これは 256 ビットの暗号(Keccak-256 ハッシュや secp256k1 シグネチャなど)を使いやすいように選択されています。
+
+実行中、EVM は一時的な*メモリ*(ワードアドレスによるバイト配列として)を持ちますが、これはトランザクション間には継続されません。
+
+しかし、スマートコントラクトにはマークルパトリシア*ストレージ*のツリーが(ワードアドレス可能なワードアレイとして)含まれており、当該アカウントに関連付けられ、グローバルな状態の一部となっています。
+
+コンパイルされたスマートコントラクトのバイトコードは、`XOR`、`AND`、 `ADD`、 `SUB`のような標準的なスタック操作を行う多数の EVM[オペコード](/developers/docs/evm/opcodes)として実行されます。 また、EVM は`ADDRESS`、`BALANCE`、`BLOCKHASH`など、ブロックチェーン固有のスタック操作を多数実装しています。
+
+![EVMを実行にガスが必要な箇所を示す図](../gas/gas.png) _ [イーサリアム EVM](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)からの図解_
+
+## EVM の実装 {#evm-implementations}
+
+EVM のすべての実装は、イーサリアムイエローペーパーに記載されている仕様を遵守する必要があります。
+
+イーサリアムの 7 年間の歴史の中で、EVM は何度も改訂されており、また、様々なプログラミング言語により EVM の実装がされてきました。
+
+すべての[イーサリアムクライアント](/developers/docs/nodes-and-clients/#execution-clients)は EVM 実装を含みます。 さらに、次のような複数のスタンドアローンの実装があります。
+
+- [Py-EVM](https://github.com/ethereum/py-evm) - _Python_
+- [evmone](https://github.com/ethereum/evmone) - _C++_
+- [ethereumjs-vm](https://github.com/ethereumjs/ethereumjs-vm) - _JavaScript_
+- [eEVM](https://github.com/microsoft/eevm) - _C++_
+
+## 参考文献 {#further-reading}
+
+- [イーサリアムイエローペーパー](https://ethereum.github.io/yellowpaper/paper.pdf)
+- [Jellopaper(別名: KEVM): K における EVM のセマンティクス](https://jellopaper.org/)
+- [The Beigepaper](https://github.com/chronaeon/beigepaper)
+- [イーサリアム仮想マシンのオペコード](https://www.ethervm.io/)
+- [Solidity ドキュメントの簡単な紹介](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html#index-6)
+
+## 関連トピック {#related-topics}
+
+- [ガス](/developers/docs/gas/)
diff --git a/src/content/translations/ja/developers/docs/frameworks/index.md b/src/content/translations/ja/developers/docs/frameworks/index.md
new file mode 100644
index 00000000000..72f932aa3e9
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/frameworks/index.md
@@ -0,0 +1,94 @@
+---
+title: Dapp開発フレームワーク
+description: フレームワークの利点を調査し、利用可能なオプションを比較します。
+lang: ja
+---
+
+## フレームワーク入門 {#introduction-to-frameworks}
+
+本格的な dapp を構築するには、 さまざまな技術が必要になります。 ソフトウェアフレームワークには、必要な機能の多くが含まれています。 あるいは、好きなツールで作業できるように簡単なプラグインシステムが備わっています。
+
+フレームワークには、すぐに使用できる機能が数多く用意されています。たとえば、以下があります。
+
+- ローカルブロックチェーンのインスタンスをスピンアップする機能
+- スマートコントラクトをコンパイルしてテストするためのユーティリティ
+- 同じプロジェクト/リポジトリ内でユーザー側のアプリケーションを構築するために使用できる、クライアント開発アドオン
+- イーサリアムネットワーク (ローカルで実行されているインスタンスまたはイーサリアムのパブリックネットワーク) に接続し、コントラクトをデプロイするための設定
+- 分散型アプリケーションの配布 - IPFS などのストレージオプションとの統合
+
+## 前提知識 {#prerequisites}
+
+フレームワークの使用を開始する前に、[dapp](/developers/docs/dapps/)と[イーサリアムスタック](/developers/docs/ethereum-stack/)の入門を最初に読むことをお勧めします。
+
+## 利用可能なフレームワーク {#available-frameworks}
+
+**Truffle -** **_開発環境、テストフレームワーク、ビルドパイプライン、およびその他のツール_**
+
+- [trufflesuite.com](https://www.trufflesuite.com/)
+- [GitHub](https://github.com/trufflesuite/truffle)
+
+**Hardhat -** **_プロフェッショナルのためのイーサリアム開発環境_**
+
+- [hardhat.org](https://hardhat.org)
+- [GitHub](https://github.com/nomiclabs/hardhat)
+
+**Ape -** **_パイソニスタ、データサイエンティスト、セキュリティプロフェッショナル向けのスマートコントラクト開発ツール_**
+
+- [ドキュメント](https://docs.apeworx.io/ape/stable/)
+- [GitHub](https://github.com/ApeWorX/ape)
+
+**Brownie -** **_Python ベースの開発環境とテストフレームワーク_**
+
+- [ドキュメント](https://eth-brownie.readthedocs.io/en/latest/)
+- [GitHub](https://github.com/eth-brownie/brownie)
+
+**Embark -** **_イーサリアム、IPFS、Whisper と統合された開発環境、テストフレームワーク、およびその他のツール_**
+
+- [ドキュメント](https://embark.status.im/docs/)
+- [GitHub](https://github.com/embark-framework/embark)
+
+**Web3j -** **_JVM 上でブロックチェーンアプリケーションを開発するためのプラットフォーム_**
+
+- [ホームページ](https://www.web3labs.com/web3j-sdk)
+- [ドキュメント](https://docs.web3j.io)
+- [GitHub](https://github.com/web3j/web3j)
+
+**OpenZeppelin SDK -** **_究極のスマートコントラクトツールキット。すなわち、スマートコントラクトの開発、コンパイル、アップグレード、デプロイ、やり取りを支援するツールスイート_**
+
+- [OpenZeppelin SDK](https://openzeppelin.com/sdk/)
+- [GitHub](https://github.com/OpenZeppelin/openzeppelin-sdk)
+- [コミュニティフォーラム](https://forum.openzeppelin.com/c/support/17)
+
+**Create Eth App -** **_単一のコマンドで、イーサリアムで稼動するアプリケーションを作成可能。 豊富な選択肢を提供する UI フレームワークと DeFi テンプレートが付属する_**
+
+- [GitHub](https://github.com/paulrberg/create-eth-app)
+- [テンプレート](https://github.com/PaulRBerg/create-eth-app/tree/develop/templates)
+
+**Scaffold-Eth -** **_ Web3.0 のための Ethers.js + Hardhat + React のコンポーネントとフック。スマートコントラクトを利用した分散型アプリケーションの構築を始めるために必要なすべてのものがそろっている_**
+
+- [GitHub](https://github.com/austintgriffith/scaffold-eth)
+
+**The Graph -** **_ブロックチェーンデータのクエリを効率的に行える_**
+
+- [ウェブサイト](https://thegraph.com/)
+- [チュートリアル](/developers/tutorials/the-graph-fixing-web3-data-querying/)
+
+**Alchemy -** **_イーサリアム開発プラットホーム_**
+
+- [alchemy.com](https://www.alchemy.com/)
+- [GitHub](https://github.com/alchemyplatform)
+- [Discord](https://discord.com/invite/A39JVCM)
+
+**Foundry -** **_Rust でのイーサリアムアプリケーション開発のための、迅速でポータブルなモジュラー型ツールキット_**
+
+- [ドキュメント](https://book.getfoundry.sh/)
+- [GitHub](https://github.com/gakonst/foundry/)
+- [Foundry のツール](https://github.com/crisgarner/awesome-foundry)
+
+## 参考文献 {#further-reading}
+
+_役に立つコミュニティリソースをご存知の場合は、 ページを編集して追加してください。_
+
+## 関連トピック {#related-topics}
+
+- [ローカル開発環境のセットアップ](/developers/local-environment/)
diff --git a/src/content/translations/ja/developers/docs/gas/index.md b/src/content/translations/ja/developers/docs/gas/index.md
new file mode 100644
index 00000000000..c25b93bbf08
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/gas/index.md
@@ -0,0 +1,155 @@
+---
+title: ガスとフィー(手数料)
+description:
+lang: ja
+---
+
+イーサリアムネットワークにとってガスは切り離せないものです。 ガスは車にとってのガソリンのようにいイーサリアムを稼働させるための燃料として使われます。
+
+## 前提知識 {#prerequisites}
+
+このページをよく理解するためには、まず[トランザクション](/developers/docs/transactions/)、[EVM](/developers/docs/evm/)を読むことをお勧めします。
+
+## ガスとは {#what-is-gas}
+
+ガスとは、イーサリアムネットワーク上で特定の操作を実行するために必要な計算労力を測定する単位のことです。
+
+各トランザクションは実行するために計算リソースを必要とするため、トランザクションにはフィー(手数料)が必要になります。 そこでガスはイーサリアムで正常にトランザクションを行うための手数料として用いられます。
+
+![EVMを実行する際にガスが必要な箇所を示す図](./gas.png) _ [イーサリアム EVM](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)からの図解_
+
+実際にはガス代はイーサリアムのネイティブ通貨であるイーサ(ETH)で支払われます。 ガス代は ETH を表す単位の一つである gwei で表されます。gwei は 0.000000001 ETH(10-9 ETH)と等価です。 例えば、0.000000001 ETH の費用がかかるとは、1 gwei かかるということを意味します。 「gwei」という単語自体は「ギガウェイ」を意味し、10 億 wei と同じです。 wei は[b-money](https://www.investopedia.com/terms/b/bmoney.asp)の創始者である[Wei Dai](https://wikipedia.org/wiki/Wei_Dai)か名前を付けられ、ETH の最小単位です。
+
+## ロンドンアップグレード前 {#pre-london}
+
+イーサリアムネットワークのトランザクションフィーの算出方法は、2021 年 8 月の[ロンドンアップグレード](/history/#london)に伴って変更されました。 ロンドンアップグレード前の計算方法を次に示します。
+
+例えば、Alice が Bob に 1 ETH を支払う必要があるとしましょう。 トランザクションでは、ガスリミットは 21,000 ユニット、ガス価格は 200 gwei です。
+
+フィーの総額は`ガスユニット(リミット)*単位当たりのガス価格`です。 つまり、`21,000 * 200 = 4,200,000 gwei`または 0.0042 ETH です。
+
+## ロンドンアップグレード後 {#post-london}
+
+例えば、Jordan が Taylor に 1 ETH を支払わなければならないとしましょう。 トランザクションでは、ガスリミットは 21,000 ユニット、ベースフィーは 10 gwei です。 Jordan は 2 gwei のチップを追加します。
+
+料金の合計は次のようになります。`使用ガスユニット * (ベースフィー + プライオリティフィー) ` ここで、`ベースフィー`はプロトコルにより設定された値、`プライオリティフィー`はバリデータへのチップとしてユーザーが設定した値です。
+
+つまり、`21,000 * (10 + 2) = 252,000 gwei`または 0.000252 ETH です。
+
+Jordan が送金すると、1.000252 ETH が Jordan の口座から差し引かれます。 Taylor は 1.0000 ETH を受領します。 バリデータは、0.000042 ETH のチップを受け取ります。 ベースフィーは 0.00021 ETH です。
+
+さらに、Jordan はトランザクションの最大のフィー(`maxFeePerGas`)を設定することもできます。 最大フィーと実際のフィーの差額は、Jordan に返金されます。 つまり、`返金= 最大フィー - (ベースフィー + プライオリティフィー)`になります。 トランザクションが実行時のベースフィーの「払い過ぎ」を心配することなく、トランザクションに支払う最大金額を設定することができます。
+
+### ブロックサイズ {#block-size}
+
+ロンドンアップグレード前は、イーサリアムのブロックサイズは固定されていました。 ネットワーク需要が高い時期には、これらのブロックは全能力を使って稼働していました。 その結果、ブロックに追加されるには、全体の需要が減るのを待たなければならないことが多く、ユーザーエクスペリエンスが損なわれました。
+
+ロンドンアップグレードで、イーサリアムに可変サイズのブロックが導入されました。 各ブロックの目標サイズは 1,500 万ガスですが、ブロックの上限である 3,000 万ガス(目標ブロックサイズの 2 倍)までは、ネットワークの需要に応じてブロックのサイズが増減します。 このプロトコルは、 *tâtonnement*のプロセスを通じて平均 1,500 万の平衡ブロックサイズを実現します。 つまり、ブロックサイズがターゲットブロックサイズよりも大きい場合、プロトコルは次のブロックのベースフィーを増加させます。 同様に、ブロックサイズがターゲットブロックサイズより小さい場合、プロトコルはベースフィーを減らします。 ベースフィーが調整される金額は、現在のブロックサイズとターゲットまでの差に比例します。 [ブロックの詳細](/developers/docs/blocks/)
+
+### ベースフィー {#base-fee}
+
+各ブロックにはベースフィーがあり、これは最低価格です。 ブロックに含まれるには、ガスあたりの提供価格がベースフィー以上である必要があります。 ベースフィーは現在のブロックとは別個に計算され(その前のブロックにより決定)、おおよそのトランザクションフィーを予測できます。 ブロックがマイニングされると、このベースフィーが「消費」され、流通から削除されます。
+
+ベースフィーは、前のブロックのサイズ(すべてのトランザクションに使用されるガスの量)とターゲットサイズを比較して計算されます。 ターゲットブロックサイズを超えると、ベースフィーは 1 ブロックあたり最大 12.5%増加します。 この指数的な増加により、ブロックサイズが無期限に高いままであることが経済的に不可能になります。
+
+| ブロック数 | 含有ガス | 増加されるフィー | 現在のベースフィー |
+| ---------- | -------: | ---------------: | -----------------: |
+| 1 | 15M | 0% | 100 gwei |
+| 2 | 30M | 0% | 100 gwei |
+| 3 | 30M | 12.5% | 112.5 gwei |
+| 4 | 30M | 12.5% | 126.6 gwei |
+| 5 | 30M | 12.5% | 142.4 gwei |
+| 6 | 30M | 12.5% | 160.2 gwei |
+| 7 | 30M | 12.5% | 180.2 gwei |
+| 8 | 30M | 12.5% | 202.7 gwei |
+
+ロンドンアップグレード前のガスオークション以前の市場と比較して、このトランザクションフィーの仕組みの変更により、手数料をより信頼性高く予測できるようになりました。 上の表により、ブロック数 9 のトランザクションを行う場合、次のブロックに追加される**最大ベースフィー**が`現在のベースフィー * 112.5%`つまり`202.8 gwei * 112.5% = 228.1 gwei`であるとウォレットがユーザーに通知できます。
+
+また、フルブロックの状態だとベースフィーの上昇速度が上がるため、フルブロックのスパイクが長くは続かないことにも注意してください。
+
+| ブロック数 | 含有ガス | 増加されるフィー | 現在のベースフィー |
+| ---------- | -------: | ---------------: | -----------------: |
+| 30 | 30M | 12.5% | 2705.6 gwei |
+| ... | ... | 12.5% | ... |
+| 50 | 30M | 12.5% | 28531.3 gwei |
+| ... | ... | 12.5% | ... |
+| 100 | 30M | 12.5% | 10302608.6 gwei |
+
+### プライオリティフィー(チップ) {#priority-fee}
+
+ロンドンアップグレード前、ブロックに含まれるトランザクションから得られるガス代の合計額は、マイナーが受け取っていました。
+
+ロンドンアップグレードによる新しいベースフィーでは、マイナーがトランザクションをブロックに追加するインセンティブを与えるためにプライオリティフィー(チップ)が導入されました。 チップがなければ、マイナーは空のブロックをマイニングした方が、同じブロック報酬を得られるので経済的に有利となります。 通常の状況では、少額のチップは、マイナーがトランザクションを行うための最小限のインセンティブとなります。 同一ブロック内の他のトランザクションよりも優先的に実行される必要があるトランザクションの場合、競合するトランザクションよりも優先的に実行されるためには、より高いチップが必要となります。
+
+### 最大フィー {#maxfee}
+
+ネットワーク上でトランザクションを実行するために、ユーザーはトランザクション実行に支払うフィーの上限を指定できます。 このオプションのパラメータは、`maxFeePerGas`として知られています。 トランザクションを実行するためには、最大フィーはベースフィーとチップの合計を超えなければなりません。 トランザクションの送信者には、最大フィーからベースフィーとチップの合計額を差し引いた差額が返金されます。
+
+### フィー(手数料)の計算 {#calculating-fees}
+
+ロンドンのアップグレードで得られた主なメリットの 1 つに、トランザクションフィーを設定する際のユーザーエクスペリエンスの向上があります。 アップグレード対応ウォレットでは、ユーザーがトランザクションを成立させるためにいくら支払うかを明示するのではなく、ウォレット提供者が推奨トランザクションフィー(ベースフィー+推奨プライオリティフィー)を自動的に設定し、ユーザー側の複雑さを軽減します。
+
+## EIP-1559 {#eip-1559}
+
+ロンドンアップグレードで[EIP-1559](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1559.md)が導入されたことで、トランザクションフィーの仕組みは従来のガス代オークションよりも複雑になりましたが、ガス代の予測がしやすくなり、結果的にトランザクションフィー市場がより効率的になるというメリットがあります。 ユーザーはガスの市場価格(`baseFeePerGas`)以上の金額を支払うことなく、トランザクションの実行に支払う`maxFeePerGas`を設定してトランザクションを送信でき、チップを差し引いた余剰分は返金されます。
+
+EIP-1559 とそのメリットについて説明するビデオ:
+
+
+
+より正確な情報は、 [EIP-1559 の仕様](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1559.md)をご覧ください。
+
+[EIP-1559 リソース](https://hackmd.io/@timbeiko/1559-resources)でさらに詳細情報を調べる。
+
+## ガス代の必要性 {#why-do-gas-fees-exist}
+
+簡単に説明すると、ガス代はイーサリアムネットワークを安全に保つのに役立ちます。 ネットワーク上のそれぞれの計算処理に手数料を課すことで、ネットワークに対する攻撃を防止します。 コード内の偶発的または敵対的な無限ループ、またはその他の過剰計算による損失を防ぐために、 各トランザクションはコード実行の計算ステップ数(1 トランザクションにおける計算量)を制限する必要があります。 計算の基本単位は「ガス」になります。
+
+トランザクションには制限がありますが、トランザクションで使用されなかったガスはユーザーに返却されます(例: `最大フィー - (ベースフィー + チップ)`が返金)。
+
+![未使用ガスの返金方法を示す図](../transactions/gas-tx.png) _ [イーサリアム EVM](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)からの図解_
+
+## ガスリミット {#what-is-gas-limit}
+
+ガスリミットとは、1 回のトランザクションで消費できるガスの最大量のことです。 [スマートコントラクト](/developers/docs/smart-contracts/)を含む複雑なトランザクションでは、単純な支払いよりもより多くの計算作業が必要なため、高いガスリミットを必要とします。 標準の ETH 送金には、21,000 ユニットのガスリミットが必要です。
+
+例えば、簡単な ETH 送金に 50,000 のガスリミットを設定した場合、EVM は 21,000 を消費し、残りの 29,000 が戻されます。 ただし ETH 送金に、例えば 20,000 など少なすぎるガスリミットを指定する場合は、EVM はトランザクションを満たそうとして、20,000 のガスユニットを消費しますが、完了はしません。 EVM は変更を元に戻しますが、20,000 ガスユニットに相当する作業はすでにマイナーが実施済みのため、その分のガスは消費されます。
+
+## ガス代が高い理由 {#why-can-gas-fees-get-so-high}
+
+高いガス代はイーサリアムの人気の高さが原因です。 イーサリアム上で動作するにはガスの消費が必要であり、ブロックごとにガススペースが制限されています。 フィーには計算、データの保存、操作、トークンの転送、それぞれの消費量が異なる「ガス」量が含まれます。 分散型アプリ(Dapp)機能がより複雑になるにつれて、スマートコントラクトが実行する操作数も増え、各トランザクションは限られたサイズのブロックの多くのスペースを占めます。 需要が高すぎる場合、他のユーザーのトランザクションよりも高いチップをオファーする必要があります。 チップをより高くすることで、トランザクションが次のブロックに入る可能性が高くなります。
+
+ガス代だけでは、特定のトランザクションにどれだけの金額を実際に支払う必要があるかを決定できません。 トランザクションフィーを計算するには、使用されたガスにベースガスフィー(gwei)を掛ける必要があります。
+
+## ガス代削減への取り組み {#initiatives-to-reduce-gas-costs}
+
+イーサリアムの[スケーラビリティ・アップグレード](/upgrades/)は、最終的にいくつかのガス代の問題を解決し、ひいてはプラットフォームが毎秒数千のトランザクションを処理し、グローバルにスケールアップできるはずです。
+
+レイヤー 2 のスケーリングは、ガス代、ユーザーエクスペリエンス、スケーラビリティを大幅に向上させるための主要なイニシアチブです。 [レイヤー 2 スケーリングの詳細](/developers/docs/scaling/#layer-2-scaling)
+
+## ガス代を低減するための戦略 {#strategies-for-you-to-reduce-gas-costs}
+
+ETH のガス代を削減したい場合は、トランザクションの優先度を示すチップを設定できます。 マイナーは、ガスあたりのチップが高いトランザクションを処理して実行します。ユーザーが支払うチップを獲得できるため、チップが低く設定されたトランザクションは実行したくないためです。
+
+ETH をより安く送れるようにガス代を節約したい場合は、次のような様々なツールを利用できます。
+
+- [Etherscan Gas Tracker](https://etherscan.io/gastracker) _トランザクションガス価格見積もりツール_
+- [Blocknative ETH Gas Estimator](https://chrome.google.com/webstore/detail/blocknative-eth-gas-estim/ablbagjepecncofimgjmdpnhnfjiecfm) _タイプ 0 のレガシー・トランザクションとタイプ 2 の EIP-1559 トランザクションの両方をサポートする Chrome 拡張機能のガス見積もりツール。_
+
+- [ETH Gas Station](https://ethgasstation.info/) _イーサリアムガス市場の消費者志向メトリクス_
+- [Cryptoneur Gas Fees Calculator](https://www.cryptoneur.xyz/gas-fees-calculator) _メインネット、Arbitrum、Polygon で異なるトランザクションタイプのガス代をローカル通貨で計算_
+
+## 関連ツール {#related-tools}
+
+- [Blocknative's Gas Platform](https://www.blocknative.com/gas) _Blocknative のグローバル mempool データプラットフォームを搭載したガス見積もり API_
+
+## 参考文献 {#further-reading}
+
+- [イーサリアムガスの説明](https://defiprime.com/gas)
+- [イーサリアムは価格上昇に伴い、使用料も高くなるのか?](https://docs.ethhub.io/questions-about-ethereum/is-ethereum-more-expensive-to-use-as-price-rises/)
+- [スマートコントラクトのガス消費量の削減](https://medium.com/coinmonks/8-ways-of-reducing-the-gas-consumption-of-your-smart-contracts-9a506b339c0a)
+- [プルーフ・オブ・ステークとプルーフ・オブ・ワークの比較](https://blockgeeks.com/guides/proof-of-work-vs-proof-of-stake/)
+
+## 関連トピック {#related-topics}
+
+- [マイニング](/developers/docs/consensus-mechanisms/pow/mining/)
diff --git a/src/content/translations/ja/developers/docs/ides/index.md b/src/content/translations/ja/developers/docs/ides/index.md
new file mode 100644
index 00000000000..cfd3c61d6c2
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/ides/index.md
@@ -0,0 +1,60 @@
+---
+title: 統合開発環境 (IDE)
+description:
+lang: ja
+---
+
+[統合開発環境 (IDE) ](https://wikipedia.org/wiki/Integrated_development_environment)のセットアップに関して言えば、イーサリアム上のアプリケーションのプログラミングは、他のソフトウェアプロジェクトのプログラミングと類似しています。 多くの選択肢があるので、最終的には自分の好みに合った IDE やコードエディタを選んでください。 イーサリアムの開発に最適な IDE は、ほとんどの場合、従来のソフトウェア開発ですでに使用している IDE です。
+
+## Web ベースの IDE {#web-based-ides}
+
+[ローカル開発環境のセットアップ](/developers/local-environment/)を行う前にコードを触りたい場合、以下のウェブアプリがイーサリアムのスマートコントラクト開発用にカスタムビルドされています。
+
+**[Remix](https://remix.ethereum.org/) ** - **_組み込みの静的解析とテストブロックチェーンの仮想マシンを備えた、ウェブベースの IDE_**
+
+**[ChainIDE](https://chainide.com/)** - **_クラウドベースのマルチチェーン IDE_**
+
+**[Replit (Solidity スターター)](https://replit.com/@replit/Solidity-starter-beta)** - **_ホットリロード、エラーチェック、最高級のテストネットサポートを提供する、イーサリアムのためのカスタマイズ可能な開発環境_**
+
+**[Tenderly Sandbox](https://sandbox.tenderly.co/)** - **_Solidity と JavaScript を使用してブラウザ上でスマートコントラクトを記述、実行、デバッグできる高速プロトタイピング環境_**
+
+**[EthFiddle](https://ethfiddle.com/)** - **_スマートコントラクトの記述、コンパイル、デバッグを可能にするウェブベースの IDE_**
+
+- [Gitter](https://gitter.im/loomnetwork/ethfiddle)
+
+## デスクトップの IDE {#desktop-ides}
+
+ほとんどの定番 IDE では、イーサリアムの開発体験を向上させるプラグインが構築されています。 少なくとも、[スマートコントラクト言語](/developers/docs/smart-contracts/languages/)の構文強調表示は使用できます。
+
+**Visual Studio Code -** **_イーサリアムから公式にサポートされている、プロフェッショナルなクロスプラットフォーム IDE_**
+
+- [Visual Studio Code](https://code.visualstudio.com/)
+- [Azure Blockchain Workbench](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/microsoft-azure-blockchain.azure-blockchain-workbench?tab=Overview)
+- [サンプルコード](https://github.com/Azure-Samples/blockchain/blob/master/blockchain-workbench/application-and-smart-contract-samples/readme.md)
+- [GitHub](https://github.com/microsoft/vscode)
+
+**Atom -** **_21 世紀に向けた、ハッキング可能なテキストエディタ_**
+
+- [Atom](https://atom.io/)
+- [GitHub](https://github.com/atom)
+- [イーサリアムパッケージ](https://atom.io/packages/search?utf8=%E2%9C%93&q=keyword%3Aethereum&commit=Search)
+
+**JetBrains IDE (IntelliJ IDEA など) -** **_ソフトウェアデベロッパーやチームに不可欠なツール_**
+
+- [JetBrains](https://www.jetbrains.com/)
+- [GitHub](https://github.com/JetBrains)
+- [IntelliJ Solidity](https://github.com/intellij-solidity/intellij-solidity/)
+
+**Remix Desktop -** **_ローカルマシンで Remix IDE を体験_**
+
+- [ダウンロード](https://github.com/ethereum/remix-desktop/releases)
+- [GitHub](https://github.com/ethereum/remix-desktop)
+
+## プラグインと拡張機能 {#plugins-extensions}
+
+- [Solidity](https://marketplace.visualstudio.com/items?itemName=JuanBlanco.solidity) - Visual Studio Code のためのイーサリアムの Solidity 言語
+- [Prettier Solidity](https://github.com/prettier-solidity/prettier-plugin-solidity) - Prettier を使用するコードフォーマッター
+
+## 参考文献 {#further-reading}
+
+_役に立つコミュニティリソースをご存知の場合は、 ページを編集して追加してください。_
diff --git a/src/content/translations/ja/developers/docs/index.md b/src/content/translations/ja/developers/docs/index.md
new file mode 100644
index 00000000000..b762870a4f9
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/index.md
@@ -0,0 +1,25 @@
+---
+title: イーサリアムの開発ドキュメント
+description: ethereum.orgのデベロッパー向けドキュメントの紹介
+lang: ja
+---
+
+このドキュメントは、イーサリアムでの構築を支援するためのものです。 コンセプトとしてのイーサリアムを紹介し、イーサリアムの技術スタックに加えて、より複雑なアプリケーションやユースケース向けの高度なトピックを説明しています。
+
+これはオープンソースのコミュニティ活動ですので、役に立つと思われる場合は、新しいトピックの提案、新しいコンテンツの追加、または例を提供してください。 すべてのドキュメントは GitHub で編集できます。編集方法がわからない場合は、[こちらの手順](https://github.com/ethereum/ethereum-org-website/blob/dev/docs/editing-markdown.md)に従ってください。
+
+## 開発モジュール {#development-modules}
+
+初めてイーサリアムの開発に挑戦される方は、最初から本のように読み進めていくことをお勧めします。
+
+### 基本的なトピック {#foundational-topics}
+
+
+
+### イーサリアムスタック {#ethereum-stack}
+
+
+
+### 上級者向け {#advanced}
+
+
diff --git a/src/content/translations/ja/developers/docs/intro-to-ether/index.md b/src/content/translations/ja/developers/docs/intro-to-ether/index.md
new file mode 100644
index 00000000000..45a2019db0a
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/intro-to-ether/index.md
@@ -0,0 +1,80 @@
+---
+title: イーサ入門
+description: デベロッパーによるイーサ暗号通貨の紹介
+lang: ja
+---
+
+## 前提知識 {#prerequisites}
+
+このページをよりよく理解するために、まずは[イーサリアム入門](/developers/docs/intro-to-ethereum/)を読むことをお勧めします。
+
+## 暗号通貨とは {#what-is-a-cryptocurrency}
+
+暗号通貨は、ブロックチェーンベースのレジャー(台帳)によって保護された交換媒体です。
+
+交換媒体とは、商品やサービスの対価として広く受け入れられているもので、レジャーとはトランザクションを記録するデータの保管場所のことです。 ブロックチェーン技術は、信頼できる第三者にレジャーを維持してもらうことなく、ユーザーがレジャー上でトランザクションを行うことを可能にします。
+
+最初の暗号通貨は、サトシ・ナカモトが作ったビットコインです。 2009 年にビットコインがリリースされて以来、多くの異なるブロックチェーンで何千もの暗号通貨が作られました。
+
+## イーサとは {#what-is-ether}
+
+**イーサ(ETH)**は、イーサリアムネットワーク上で広く使用されている暗号通貨です。 基本的には、トランザクションフィーの支払いとして唯一認められているもので、[マージ](/upgrades/merge)後は、メインネットでブロックの検証や提案にも必要となっています。 また、イーサは[分散型金融(DeFi)i](/defi)融資市場での主要な担保として、NFT 市場でのアカウント単位として、サービスの実行や現実世界の商品の販売で得られる支払いとしてなどにも使用されています。
+
+イーサリアムでは、デベロッパーが
+
+**分散型アプリケーション(Dapp)**を作成でき、すべての Dapp は 1 つの計算能力のプールを共有します。 この共有プールには限りがあるので、誰が使用するかを判断するためのメカニズムを必要とします。 メカニズムがなければ、ある分散型アプリ(Dapp)が偶発的または悪意を持って、すべてのネットワークリソースを消費してしまい、他のユーザーがアクセスできなくなる恐れがあります。
+
+イーサ暗号通貨は、イーサリアムのコンピューティング能力の価格設定メカニズムに対応しています。 トランザクションを行うには、ブロックチェーン上でトランザクションを認識してもらうためにイーサを支払う必要があります。 これらの使用料は[ガス代](/developers/docs/gas/)として知られており、ガス代は処理を実行するために必要な計算力の量と、その時のネットワーク全体の計算力の需要により決まります。
+
+そのため、悪意のある分散型アプリ(Dapp)が無限ループを送信したとしても、最終的には保有しているイーサを使い果たしてトランザクションが終了し、ネットワークが正常に戻ることになります。
+
+[広く一般的](https://www.reuters.com/article/us-crypto-currencies-lending-insight-idUSKBN25M0GP#:~:text=price%20of%20ethereum)にイーサリアムとイーサが[混同](https://www.cnn.com/2021/03/14/tech/nft-art-buying/index.html#:~:text=price%20of%20ethereum)されますが、「イーサリアムの価格」について話されている時は、イーサの価格を意味します。
+
+## イーサのミント {#minting-ether}
+
+ミント(鋳造)とは、イーサリアムのレジャー(台帳)に新しいイーサが作成されるプロセスのことを指します。 イーサリアムの基礎となるプロトコルが新しいイーサを作り出すのであって、ユーザーがイーサを作り出すことはできません。
+
+イーサは提案された各ブロックの報酬と、コンセンサスに関連するその他のバリデータの活動に対して、エポックチェックポイントごとにミントされます。 発行される総額は、バリデータの数と、バリデータがステーキングしたイーサ量に依存します。 すべてのバリデータが誠実でオンラインであるという理想的な場合では、発行された総額はバリデータ間で均等に分配されるようになっていますが、実際はバリデータのパフォーマンスに応じて変動します。 発行総額の約 1/8 はブロック提案者に、残りは他のバリデータに分配されます。 また、ブロック提案者はトランザクションフィーや MEV 関連の収入からチップを獲得しますが、これらは新規発行ではなく、リサイクルされたイーサから支払われたます。
+
+## イーサの焼却 {#burning-ether}
+
+ブロック報酬でイーサがミントされるだけではなく、「バーン(焼却)」によりイーサは消去されます。 イーサが焼却されると、永久に流通できなくなります。
+
+イーサリアムの全トランザクションで、イーサの焼却が発生します。 ユーザーがトランザクションフィー(手数料)を支払うと、トランザクションの需要に応じてネットワークにより設定されたベースガスフィー(基本ガス手数料)が破棄されます。 これは可変ブロックサイズと最大ガスフィーと相まって、イーサリアムでのトランザクションフィーの見積もりを簡素化します。 ネットワーク需要が高い場合は、 [ブロック](https://etherscan.io/block/12965263)がミントされるイーサよりも多くのイーサを燃焼させ、イーサの発行を効果的に相殺することができます。
+
+ベースフィーを焼却することで、ブロック生成者による不正行為を防ぐことができます。 例えば、ブロック生成者がベースフィーを受け取った場合、自分自身のトランザクションを無料にするために、生成するブロックに自分のトランザクションを追加したり、他の人のベースフィーを上げることができます。 もしくは、オフチェーンの一部のユーザーにベースフィーを払い戻すことができ、より不透明で複雑なトランザクションフィー市場につながるおそれがあります。
+
+## イーサの通貨単位 {#denominations}
+
+イーサリアムでは多くのトランザクションが少額であるため、少額のトランザクションで使用される通貨単位があります。 これらの通貨単位で、特に重要なのが wei と gwei です。
+
+wei は最小のイーサ通貨単位で、[イーサリアムイエローペーパー](https://ethereum.github.io/yellowpaper/paper.pdf)のような多くの技術的な実装では、すべての計算は wei で行われます。
+
+gwei は giga-wei の略で、イーサリアムのガス代を記述するためによく使用されます。
+
+| 通貨単位 | イーサ | 使用例 |
+| -------- | ---------------- | -------------------------------------- |
+| wei | 10-18 | 技術的な実装 |
+| gwei | 10-9 | ギガ表記により読みやすく表示したガス代 |
+
+## イーサの送金 {#transferring-ether}
+
+イーサリアムの各トランザクションには、送信者のアドレスから受信者のアドレスへのイーサ送金額を指定する`value`フィールドが含まれています(単位は wei)。
+
+受信者のアドレスが[スマートコントラクト](/developers/docs/smart-contracts/)の場合、この送金されたイーサは、スマートコントラクトがコードを実行する際のガス代の支払いに使用することができます。
+
+[トランザクションの詳細](/developers/docs/transactions/)
+
+## イーサの照会 {#querying-ether}
+
+[アカウント](/developers/docs/accounts/)の`balance`フィールドを確認すると、すべてのアカウントのイーサ残高を照会することができます(wei を単位とするイーサ保有量が表示)。
+
+[Etherscan](https://etherscan.io)は、ウェブベースのアプリを介してアドレスの残高を調べる人気のツールです。 例えば、 [この Etherscan のページ](https://etherscan.io/address/0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae)はイーサリアム・ファウンデーションの残高を表示しています。 アカウント残高は、ウォレットやノードにリクエストすることで確認できます。
+
+## 参考文献 {#further-reading}
+
+- [イーサとイーサリアムの定義](https://www.cmegroup.com/education/courses/introduction-to-ether/defining-ether-and-ethereum.html) – _CME Group_
+- [イーサリアムホワイトペーパー](/whitepaper/): イーサリアムの当初の提案。 本書はイーサの説明とその作成の背後にある理由について記述。
+- [Gwei Calculator](https://www.alchemy.com/gwei-calculator): wei、gwei、イーサの変換ツール。 wei、Gwei、ETH の任意の数値を入力するだけで、自動変換。
+
+_役に立つコミュニティリソースをご存知の場合は、 このページを編集して追加してください。_
diff --git a/src/content/translations/ja/developers/docs/intro-to-ethereum/index.md b/src/content/translations/ja/developers/docs/intro-to-ethereum/index.md
new file mode 100644
index 00000000000..57524cd18a1
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/intro-to-ethereum/index.md
@@ -0,0 +1,116 @@
+---
+title: イーサリアム入門
+description: 分散型アプリ(Dapp)デベロッパーによるイーサリアムのコアコンセプトの紹介
+lang: ja
+---
+
+## ブロックチェーンとは {#what-is-a-blockchain}
+
+ブロックチェーンとは、単一のネットワークにつながる多くのコンピュータが更新・共有する公開データベースのことです。
+
+この「ブロック」とは、データと状態が連続的にまとまったグループのこと(ブロックと呼ばれる)を意味します。 ETH を誰かに送金する場合は、その送金トランザクションデータがブロックに追加される必要があります。
+
+「チェーン」とは、各ブロックが親ブロックを暗号化して参照しているという仕組みを指し、 各ブロックは連鎖してつながっています。 あるブロックのデータを変更するには後続のすべてのブロックを変更する必要があり、それにはネットワーク全体のコンセンサス(合意)が必要となるため事実上不可能となります。
+
+ネットワーク上のすべてのコンピュータが、新しいブロックとチェーン全体に合意しなければなりません。 これらのコンピュータのことを「ノード」と呼びます。 ノードはブロックチェーン上で繋がるすべてのノードが、同じデータを保有することを保証します。 この分散化された合意形成を行うために、ブロックチェーンには合意メカニズムが必須となります。
+
+イーサリアムは現在[プルーフ・オブ・ステーク (PoS)](/developers/docs/consensus-mechanisms/pos/)合意メカニズムを使用しています。 新しいブロックをチェーンに追加するには、少なくとも 32 ETH をデポジットコントラクトにステーキングし、バリデータソフトウェアを実行する必要があります。 その後、ランダムに選択されたバリデータがブロックを提案し、他のバリデータが検証してブロックチェーンに追加します。 このモデルでは、通常、チェーンは 1 つだけになりますが、ネットワークの遅延や不正行為により、チェーンの先頭近くの同じ位置に複数のブロックが作成されることがあります。 これを解決する方法として、1 つの正しいブロックセットを選択するフォーク・チョイス・アルゴリズムが存在します。 最も重みがあるチェーンを形成するブロックが選択されます。ここでの「重み」とはブロックを承認したバリデータの数を意味します(承認したバリデータがステーキングした ETH にて加重) 。 報酬とペナルティのシステムにより、バリデータに対し、可能な限り誠実かつオンラインであるためのインセンティブが働きます。
+
+ブロックチェーンがデータをどのようにハッシュ化するのか、1 つ前のブロックがどのように過去の全ブロックを参照するのかについては、Anders Brownworth 氏によるこちらの[デモ](https://andersbrownworth.com/blockchain/blockchain)ビデオをご覧下さい。
+
+Anders 氏によるブロックチェーンのハッシュに関する説明:
+
+
+
+## イーサリアムとは {#what-is-ethereum}
+
+イーサリアムとは、ブロックチェーンにコンピュータが組み込まれたもので、 分散型、自由参加型かつ、検閲耐性を備えたアプリや組織を構築するための基盤となっています。
+
+イーサリアムの世界には、イーサリアムネットワーク上の誰もがその状態に同意できる単一の正規のコンピュータ(イーサリアム仮想マシンまたは EVM と呼ばれる)があります。 イーサリアムネットワークに参加するすべての人(全イーサリアムノード)は、このコンピュータの状態のコピーを保持します。 さらに、参加者は誰でもこのコンピュータに任意の計算を実行するようにリクエストをブロードキャストできます。 リクエストが配信されると、ネットワーク上の他の参加者は、計算を確認・検証し、実行します。 実行されると EVM の状態が変更され、それが確定し、ネットワーク全体に伝播されます。
+
+この計算作業のリクエストを「トランザクションリクエスト」と呼びます。すべてのトランザクションの記録と EVM の現在の状態はブロックチェーンに保存され、それがすべてのノードによって保存され、合意されます。
+
+このような暗号メカニズムは、一度トランザクションが有効であると検証されてブロックチェーンに追加された後は、改ざんができないようにします。 また、このメカニズムにより、すべてのトランザクションが適切な「許可」があって、署名・実行されることが保証されます。(ここでの「許可」とは、例えば Alice のアカウントからデジタル資産を送信するのは、Alice 以外の他者にはできないという意味)。
+
+## イーサとは {#what-is-ether}
+
+**イーサ(ETH)**はイーサリアムのネイティブ暗号通貨です。 ETH の目的は、ブロックチェーンに必要な計算の市場を可能にすることです。 このような市場は、トランザクションリクエストを検証し、実行するための経済的なインセンティブを与え、またネットワークに計算リソースを提供します。
+
+また、新たなトランザクションリクエストをブロードキャストする参加者は、いくらかの ETH を報酬としてネットワークに提供しなければなりません。 この報酬はトランザクションの検証、実行、ブロックチェーンへのコミット、ネットワークへのブロードキャストといった作業を最終的に行った参加者に与えられます。
+
+支払われる ETH の額は、トランザクションリクエストの計算に必要なリソースに相当します。 計算リソースに応じて報酬を払わなければならないため、これらの報酬は無限に計算したりリソースを大量に消費するスクリプトを実行することで意図的にネットワークを詰まらせる悪意のある参加者からも守ることができます。
+
+また、ETH は暗号経済的なセキュリティを提供するため、主に次の 3 つの方法で使用されます。1) ブロックの提案、または他のバリデータの不誠実な行為を指摘したバリデータへの報酬。 2) 不誠実な行為に対する担保(バリデータは ETH をステーキングしており、バリデータが不誠実な行為を行った場合、バリデータの ETH を破壊)。3) 新しく提案されたブロックに対する「投票」の重み付けに使われ、合意メカニズムのフォーク・チョイスで使用。
+
+## スマートコントラクトとは {#what-are-smart-contracts}
+
+参加者は EVM で計算をリクエストするたびに、新たなコードを作成するわけではありません。 アプリケーションデベロッパーがプログラム(再利用可能なコードの一部)を EVM にアップロードし、ユーザーがそのコードをさまざまなパラメータで実行するようにリクエストします。 ブロックチェーン上のネットワークにアップロードされ、実行されるプログラムをスマートコントラクトと呼びます。
+
+スマートコントラクトは、基本的なレベルでは、自動販売機のようなものだと考えることができます。つまり、特定のパラメータで呼び出され、一定の条件が満たされた場合、何らかのアクションや計算を実行するスクリプトです。 例えば、発信者が特定の受取人に ETH を送信すると、スマートコントラクトが単純にデジタル資産の所有権を作成・割り当てるなどです。
+
+デベロッパーであれば誰でも、スマートコントラクトを作成し、ブロックチェーンをデータ層として使ってネットワークに公開できます(ただし、フィー(手数料)が必要)。 また、すべてのユーザーはスマートコントラクトを呼び出してコードを実行できます(これにもフィーが必要)。
+
+このように、スマートコントラクトを利用することで、デベロッパーは複雑なユーザー向けアプリや様々なサービス(マーケットプレイス、金融商品、ゲームなど)を構築し、ブロックチェーン上にデプロイできます。
+
+## 用語集 {#terminology}
+
+### ブロックチェーン {#blockchain}
+
+イーサリアムネットワークの過去の処理を踏まえてコミットされたすべてのブロックシークエンスのこと。 各ブロックが前のブロックへの参照を含んでいることが名前の由来。前のブロックを参照することにより、すべてのブロックの順序(つまり正確な履歴)が維持される。
+
+### ETH {#eth}
+
+**イーサ(ETH)**はイーサリアムのネイティブ暗号通貨。 コー ド実行リクエストが達成されるには、ユーザーは手数料として ETH を支払う必要がある。
+
+[ETH の詳細](/developers/docs/intro-to-ether/)
+
+### EVM(イーサリアム仮想マシン) {#evm}
+
+EVM(イーサリアム仮想マシン)とは、イーサリアムネットワーク上のすべてのノードが同じ状態を保存し、同意するグローバルな仮想コンピュータ。 参加者は誰でも、EVM で任意のコードの実行をリクエストすることができ、コードが実行されると、EVM の状態が変更される。
+
+[EVM の詳細](/developers/docs/evm/)
+
+### ノード {#nodes}
+
+EVM の状態を保存している実際のマシン。 ノードは相互に通信して、EVM の状態と新しい状態の変化に関する情報を伝達する。 あるノードからコード実行リクエストをブロードキャストすることで、コードの実行をリクエストできる。 イーサリアムネットワーク自体は、すべてのイーサリアムノードとその通信の集合体。
+
+[ノードの詳細](/developers/docs/nodes-and-clients/)
+
+### アカウント {#accounts}
+
+ETH の保有先。 ユーザーはアカウントを初期化し、アカウントに ETH を入金したり、アカウントから他のユーザーへ ETH を送金できる。 アカウントとアカウント残高は EVM の巨大なテーブルに保存され、これらは EVM 全体の状態の一部。
+
+[アカウントの詳細](/developers/docs/accounts/)
+
+### トランザクション {#transactions}
+
+「トランザクションリクエスト」とは EVM 上でのコード実行リクエストの正式名称であり、「トランザクション」とは実行されたトランザクションリクエストとそれに伴う EVM 状態の変化を指す。 すべてのユーザーは、ノードからネットワークにトランザクションリクエストをブロードキャスト可能。 トランザクションリクエストが、合意された EVM の状態を変更するには、他のノードによって検証・実行され、「ネットワークにコミット」される必要がある。 コードを実行すると EVM の状態が変化し、コミットするとこの状態の変化がネットワーク内のすべてのノードにブロードキャストされる。 トランザクションの例:
+
+- 自分のアカウントから Alice のアカウントに X ETH を送信
+- スマートコントラクトのコードを EVM 状態に公開
+- EVM のアドレス X で、引数 Y を使用してスマートコントラクトのコードを実行
+
+[トランザクションの詳細](/developers/docs/transactions/)
+
+### ブロック {#blocks}
+
+トランザクション量が非常に多いため、トランザクションはバッチまたはブロック単位で「コミット」される。 ブロックには通常、数十から数百のトランザクションが含まれる。
+
+[ブロックの詳細](/developers/docs/blocks/)
+
+### スマートコントラクト {#smart-contracts}
+
+デベロッパーが EVM の状態に公開する、再利用可能なコード(プログラム)の断片。 トランザクションリクエストを行うことで、誰でもスマートコントラクトコードの実行をリクエスト可能。 デベロッパーはスマートコントラクトを公開して、任意の実行可能なアプリケーション(ゲーム、マーケットプレイス、金融商品など)を EVM に書き込むことができ、これらは[分散型アプリ(Dapp)](/developers/docs/dapps/)と呼ばれる。
+
+[スマートコントラクトの詳細](/developers/docs/smart-contracts/)
+
+## 参考文献 {#further-reading}
+
+- [イーサリアムホワイトペーパー](/whitepaper/)
+- [イーサリアムの仕組み](https://www.preethikasireddy.com/post/how-does-ethereum-work-anyway) - _Preethi Kasireddy_
+
+_役に立つコミュニティリソースをご存知の場合は、 ページを編集して追加してください。_
+
+## 関連チュートリアル {#related-tutorials}
+
+- [イーサリアムのデベロッパー向けガイド・パート 1](/developers/tutorials/a-developers-guide-to-ethereum-part-one/) _– Python と web3.py を使用した初心者向けのイーサリアムガイド_
diff --git a/src/content/translations/ja/developers/docs/networks/index.md b/src/content/translations/ja/developers/docs/networks/index.md
new file mode 100644
index 00000000000..b87df10e5a6
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/networks/index.md
@@ -0,0 +1,146 @@
+---
+title: ネットワーク
+description: イーサリアムネットワーク概要、およびアプリケーションテスト用のテストネットのイーサ(ETH)の取得場所
+lang: ja
+---
+
+開発、テスト、本番の用途に応じて、異なるイーサリアム環境にアクセスすることができます。 イーサリアムはプロトコルであるため、プロトコルに準拠した、複数の互いに干渉しない「ネットワーク」が存在します。
+
+イーサリアムアカウントは異なるネットワークすべてで使用できますが、アカウント残高とトランザクション履歴はメインネットから継承されません。 テスト目的に利用可能なネットワークと、テストネットの ETH を取得する方法を知っておくと有用です。
+
+## 前提知識 {#prerequisites}
+
+テストネットワークは試用目的として、安価で安全なイーサリアムを提供します。それぞれのネットワークを読み進める前に、[イーサリアムの基本](/developers/docs/intro-to-ethereum/)を理解する必要があります。
+
+## パブリックネットワーク {#public-networks}
+
+パブリックネットワークは、インターネット接続で世界中の誰でもアクセスできます。 誰でも公開ブロックチェーン上でトランザクションを読み取りまたは作成し、実行されているトランザクションを検証できます。 ピア間のコンセンサスにより、トランザクションとネットワークの状態を追加するかが決まります。
+
+### イーサリアムメインネット {#ethereum-mainnet}
+
+メインネットは、プライマリ、パブリックのイーサリアム本番環境のブロックチェーンであり、実際の価値を持つトランザクションが分散台帳上で実行されています。
+
+ユーザーと取引所が ETH 価格について話す場合は、メインネットの ETH を指しています。
+
+### イーサリアムテストネット {#ethereum-testnets}
+
+メインネットに加えて、パブリックのテストネットがあります。 このテストネットは、プロトコルやスマートコントラクトのデベロッパーが、メインネットへデプロイする前に、実際の運用環境でプロトコルの更新や将来的なスマートコントラクトの双方をテストするためのネットワークです。 これは一般のウェブ開発における、本番とステージングサーバと同じようなものと考えてください。
+
+メインネットにデプロイする前に、テストネットで作成したコントラクトコードをテストする必要があります。 既存のスマートコントラクトと統合する分散型アプリ(Dapp)では、ほとんどのプロジェクトはコピーがテストネットにデプロイされています。
+
+ほとんどのテストネットは、プルーフ・オブ・オーソリティ(PoA)合意メカニズムを使って開始されました。 これは、選ばれた少数のノードがトランザクションを検証し、新しいブロックを作成することで、その過程でアイデンティティをステーキングします。 あるいは、許可された少数のマイナーのプルーフ・オブ・ワークの合意メカニズムを使用して開始されたいくつかのテストネットもあります。 しかし、[マージ](/upgrades/merge)の準備として、これらのテストネットはプルーフ・オブ・ステークへ移行し、イーサリアムメインネットのマージが行われる前に、テストの機会が複数回提供されました。 現在、イーサリアムテストネットは、イーサリアムメインネットと同様にプルーフ・オブ・ステークです。
+
+テストネットの ETH は実価値がないため、テストネットの ETH には市場価値はありません。 実際にイーサリアムを利用するには ETH が必要なので、ほとんどの人はフォーセットからテストネット ETH を取得します。 ほとんどのフォーセットは Web アプリで、ETH を送信するアドレスを入力します。
+
+#### Goerli (ゴエリ) {#goerli}
+
+Goerli (ゴエリ)はプルーフ・オブ・ステークのテストネットです。 アプリケーションデベロッパー向けの安定したテストネットとして、長期的にわたって維持されると見込まれています。 テストネットがマージされる前は、 Goerli はプルーフ・オブ・オーソリティのテストネットでした。
+
+- [ウェブサイト](https://goerli.net/)
+- [GitHub](https://github.com/goerli/testnet)
+- [Etherscan](https://goerli.etherscan.io)
+
+##### Goerli フォーセット
+
+- [Goerli faucet](https://faucet.goerli.mudit.blog/)
+- [Chainlink faucet](https://faucets.chain.link/)
+- [Alchemy Goerli Faucet](https://goerlifaucet.com/)
+
+#### Sepolia (セポリア) {#sepolia}
+
+Sepolia (セポリア)は、プルーフ・オブ・ステークのテストネットです。 Sepolia はまだ稼働していますが、長期的には維持されない予定です。 2022 年 6 月にマージされる前は、Sepolia はプルーフ・オブ・ワークのテストネットでした。
+
+- [ウェブサイト](https://sepolia.dev/)
+- [GitHub](https://github.com/goerli/sepolia)
+- [Otterscan](https://sepolia.otterscan.io/)
+- [Etherscan](https://sepolia.etherscan.io)
+
+##### Sepolia フォーセット
+
+- [Sepolia faucet](https://faucet.sepolia.dev/)
+- [FaucETH](https://fauceth.komputing.org)
+
+#### Ropsten (ロプステン) _(非推奨)_ {#ropsten}
+
+_注意: [Ropsten (ロプステン)テストネットは非推奨](https://github.com/ethereum/pm/issues/460)であり、プロトコルのアップグレードは行われません。 Sepolia または Goerli にアプリケーションを移行することを検討してください。_
+
+Ropsten は、プルーフ・オブ・ステークのテストネットです。 2022 年後半に廃止される予定です。 2022 年 6 月にマージされる前は、ロプステンはプルーフ・オブ・ワークのテストネットでした。
+
+##### Ropsten フォーセット
+
+- [FaucETH](https://fauceth.komputing.org) (ソーシャルアカウントを必要としない複数チェーンのフォーセット)
+- [Paradigm faucet](https://faucet.paradigm.xyz/)
+
+#### Rinkeby (リンケビュー) _(非推奨)_ {#rinkeby}
+
+_注意: [Rinkeby (リンケビュー)テストネットは非推奨](https://github.com/ethereum/pm/issues/460)であり、プロトコルのアップグレードは行われません。 Sepolia または Goerli にアプリケーションを移行することを検討してください。_
+
+古いバージョンの Geth クライアントに対応している、プルーフ・オブ・オーソリティのテストネット。
+
+##### Rinkeby フォーセット
+
+- [FaucETH](https://fauceth.komputing.org) (ソーシャルアカウントを必要としない複数チェーンのフォーセット)
+- [Alchemy faucet](https://RinkebyFaucet.com)
+- [Chainlink faucet](https://faucets.chain.link/)
+- [Paradigm faucet](https://faucet.paradigm.xyz/)
+- [Rinkeby Faucet](https://faucet.rinkeby.io/)
+
+#### Kovan (コバン) _(非推奨)_ {#kovan}
+
+_注意: [Kovan (コバン)テストネットは非推奨](https://github.com/ethereum/pm/issues/460)であり、プロトコルのアップグレードは行われません。 Sepolia または Goerli にアプリケーションを移行することを検討してください。_
+
+OpenEthereum クライアントに対応している、非常に古いプルーフ・オブ・オーソリティのテストネット。
+
+##### Kovan フォーセット
+
+- [FaucETH](https://fauceth.komputing.org) (ソーシャルアカウントを必要としない複数チェーンのフォーセット)
+- [Chainlink faucet](https://faucets.chain.link/)
+- [Paradigm faucet](https://faucet.paradigm.xyz/)
+
+### レイヤー 2 テストネット {#layer-2-testnets}
+
+[レイヤー 2 (L2)](/layer-2/)は、イーサリアムのスケーリングソリューションの総称です。 レイヤー 2 はイーサリアムを拡張し、またイーサリアムのセキュリティ保証を継承する独立したブロックチェーンです。 レイヤー 2 テストネットは、通常、パブリックイーサリアムテストネットと対になっています。
+
+#### Arbitrum Rinkeby (アービトラム・リンケビー) {#arbitrum-rinkeby}
+
+[Arbitrum](https://arbitrum.io/)のテストネット。
+
+Arbitrum Rinkeby フォーセット:
+
+- [FaucETH](https://fauceth.komputing.org) (ソーシャルアカウントを必要としない複数チェーンのフォーセット)
+- [Chainlink faucet](https://faucets.chain.link/)
+- [Paradigm faucet](https://faucet.paradigm.xyz/)
+
+#### Optimistic Kovan (オプティミスティック・コバン) {#optimistic-kovan}
+
+[Optimism](https://www.optimism.io/)のテストネット。
+
+Optimistic Kovan フォーセット:
+
+- [FaucETH](https://fauceth.komputing.org) (ソーシャルアカウントを必要としない複数チェーンのフォーセット)
+- [Paradigm faucet](https://faucet.paradigm.xyz/)
+
+## プライベートネットワーク {#private-networks}
+
+イーサリアムネットワークは、ノードがパブリックネットワーク(メインネットやテストネット)に接続しなければ、プライベートネットワーク です。 ここでのプライベートとは、保護されており安全という意味ではなく、別のまたは分離されていることを意味します。
+
+### 開発フレームワーク {#development-networks}
+
+イーサリアムアプリケーションを構築する場合は、プライベートネットワークで実行して、デプロイする前に動作確認をすることをお勧めします。 自身のコンピュータ上でローカルサーバを作成し、Web 開発するのと同様に、ローカルのブロックチェーンインスタンスを作成し、開発中の分散型アプリ(Dapp)をテストできます。 プライベートネットワークでのテストは、パブリックテストネットよりもはるかに高速な反復処理が可能です。
+
+これをサポートするためのプロジェクトやツールがあります。 [開発ネットワーク](/developers/docs/development-networks/)の詳細をご覧ください。
+
+### コンソーシアムネットワーク {#consortium-networks}
+
+コンセンサスプロセスは、信頼される事前定義された一連のノードにより制御されます。 例えば、既知の学術機関のプライベートネットワークが単一ノードを管理し、ブロックはネットワークの署名者数のしきい値により検証されます。
+
+パブリックイーサリアムネットワークがパブリックなインターネットだとすると、コンソーシアムネットワークはプライベートなイントラネットと考えることができます。
+
+## 関連ツール {#related-tools}
+
+- [Chainlist](https://chainlist.org/) _ウォレットとプロバイダを適切なチェーン ID とネットワーク ID に接続する EVM ネットワークのリスト_
+- [EVM ベースのチェーン](https://github.com/ethereum-lists/chains) *Chainlist*を動かすチェーンメタデータの GitHub リポジトリ
+
+## 参考文献 {#further-reading}
+
+- [イーサリアムテストネットの進化](https://etherworld.co/2022/08/19/the-evolution-of-ethereum-testnet/)
diff --git a/src/content/translations/ja/developers/docs/nodes-and-clients/client-diversity/index.md b/src/content/translations/ja/developers/docs/nodes-and-clients/client-diversity/index.md
new file mode 100644
index 00000000000..60b619db997
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/nodes-and-clients/client-diversity/index.md
@@ -0,0 +1,112 @@
+---
+title: クライアントの多様性
+description: イーサリアムクライアントの多様性の重要性についての概説
+lang: ja
+sidebarDepth: 2
+---
+
+イーサリアムノードの動作は、ノードが実行するクライアントソフトウェアによって制御されています。 プロダクションレベルのイーサリアムクライアントは複数存在しており、それぞれ別のチームにより、異なるプログラミング言語で開発され、保守されています。 これらのクライアントは共通の仕様に基づいて構築されており、クライアント間のシームレスな連携、共通する機能、同等のユーザーエクスペリエンスを提供しています。 しかしながら、現時点ではクライアントの占有率は偏ってしまっており、ネットワークの安全性が最大限にまで高められていません。 クライアントの多様性を可能な限り高めるには、クライアント別の利用者数は同程度になることが望ましいです。
+
+## 前提知識 {#prerequisites}
+
+ノードやクライアントが何かについてご存知ではない場合、[ノードとクライアント](/developers/docs/nodes-and-clients/)を参照してください。 [実行レイヤー](/glossary/#execution-layer)と[コンセンサスレイヤー](/glossary/#consensus-layer)は用語集に定義が記載されています。
+
+## クライアントが複数ある理由 {#why-multiple-clients}
+
+独立して開発・保守されるクライアントが複数存在するのは、クライアントの多様性が攻撃やバグに対するネットワークの耐性を高めるからです。 複数のクライアントがあることはイーサリアム固有の強みです。他のブロックチェーンでは、単一のクライアントに依存しており、そのクライアントに絶対に誤りがないという前提に基づいています。 しかし、ただ複数のクライアントがあるだけでは不十分です。クライアントはコミュニティで採用され、すべてのアクティブノードが比較的均等に複数のクライアントに分散している必要があります。
+
+## クライアント実装の多様性が重要な理由 {#client-diversity-importance}
+
+独立して開発・保守される多くのクライアントがあることは、分散型ネットワークの健全性には不可欠です。 この理由を探ってみましょう。
+
+### バグ {#bugs}
+
+個々のクライアントにあるバグは、そのクライアントがイーサリアムノードのマイノリティである場合は、ネットワークへのリスクは低くなります。 多数のクライアントにノードがほぼ均等に分散しているならば、大半のクライアントで共通の問題がある可能性は小さいため、結果的としてネットワークはより堅牢になります。
+
+### 攻撃耐性 {#resilience}
+
+クライアントの多様性は、攻撃に対する耐性も同時にもたらします。 例えば、[特定のクライアントに対する攻撃](https://twitter.com/vdWijden/status/1437712249926393858)で不正なチェーンへと改ざんしようとする試みが成功する可能性は低くなります。これは、他のクライアントに同じような攻撃ができる可能性は低く、正規のチェーンは壊れないためです。 クライアントの多様性が低いほど、多数派のクライアントへの攻撃に関するリスクが高まります。 クライアントの多様性がネットワーク上の悪意のある攻撃に対する重要な防御となることは、既に証明されています。例えば、2016 年の上海 DOS 攻撃の事例は、多数派のクライアント(Geth)に対して、ブロックごとに何万回も遅いディスク i/o 操作を実行したため起こりました。 この脆弱性を持たない他のクライアントもオンラインであったため、イーサリアムは Geth の脆弱性が修正されている間も攻撃に耐え、稼働を続けることができました。
+
+### プルーフ・オブ・ステークにおけるファイナリティ {#finality}
+
+イーサリアムノードの 33%以上を占めるコンセンサスクライアントのバグがあると、ビーコンチェーンのファイナライズを妨げる可能性があります。つまり、トランザクションの取り消しや改ざんが発生するおそれがあります。 これはイーサリアム上に構築された多くのアプリ、特に分散型金融(DeFi)にとって非常に大きな問題となります。
+
+ さらに、3 分の 2 のマジョリティを占めるクライアントの重大なバグにより、チェーンが誤って スプリットし、ファイナライズされ、大量のバリデータが無効なチェーン上で立ち往生する可能性があります。 これらのバリデータが正しいチェーンに再び参加しようとする場合、スラッシングのペナルティを受けるか、時間がかかり高額となる任意退出後に、再度アクティベーションを行います。 スラッシングの規模は過失のあるノードの数に比例し、3 分の 2 のマジョリティが最大のスラッシング(32 ETH)を受けます。
+
+これらは可能性が低いシナリオですが、アクティブなノードにクライアントを均等に分散することで、イーサリアムのエコシステムはリスクを軽減することが出来ます。 特定のコンセンサスクライアントが、全ノードの 33%のシェアを占めないことが理想です。
+
+### 責任の共有 {#responsibility}
+
+マジョリティクライアントを維持するためには人件費もかかります。 小規模な開発チームは過剰な負担と責任を負わなければなりません。 クライアントの多様性が低いほど、マジョリティクライアントを保守するデベロッパーの責任が大きくなります。 この責任を複数のチームに分散させることは、イーサリアムのノードネットワークの健全性と、人々の繋がりの両方にとって望ましいことです。
+
+## 現在のクライアントの多様性 {#current-client-diversity}
+
+![クライアントの多様性を示す円グラフ](./client-diversity.png) _図のデータは[ethernodes.org](https://ethernodes.org)と[clientdiversity.org](https://clientdiversity.org/)から引用_
+
+上の 2 つの円グラフは、実行レイヤーとコンセンサスレイヤーの現在(2022 年 1 月の執筆時点)のクライアントの多様性のスナップショットを示しています。 実行レイヤーの大多数は[Geth](https://geth.ethereum.org/)が占めており、1 位と大差をつけて[Open Ethereum](https://openethereum.github.io/)が 2 位、次に[Erigon](https://github.com/ledgerwatch/erigon)、[Nethermind](https://nethermind.io/)と続きますが、その他のクライアントはネットワークの 1%未満に過ぎません。 コンセンサスレイヤーで最も一般的に使用されている[Prysm](https://prysmaticlabs.com/#projects)は、Geth ほど独占しているわけではありませんが、それでもネットワークの 60%以上を占めています。 [Lighthouse](https://lighthouse.sigmaprime.io/)と[Teku](https://consensys.net/knowledge-base/ethereum-2/teku/)がそれぞれ約 20%と約 14%を占め、他のクライアントはほとんど使われていません。
+
+実行レイヤーのデータは[Ethernodes](https://ethernodes.org)から 2022 年 1 月 23 日に、 コンセンサスクライアントのデータは[Michael Sproul](https://github.com/sigp/blockprint)から取得されました。 ビーコンチェーンのクライアントは、コンセンサスクライアントを識別するための明確な痕跡を常に持っている訳ではないため、コンセンサスクライアントのデータを取得することはより困難です。 データはマイノリティクライアントの一部を混同する場合がある分類アルゴリズムを用いて生成されました(詳細は[こちら](https://twitter.com/sproulM_/status/1440512518242197516)を参照)。 上の図では、これらの曖昧な分類は、どちらか一方のラベル(Nimbus/Teku など)で記載されています。 いずれにせよ、ネットワークのマジョリティが Prysm を実行していることは明白です。 データは固定されたブロック群(この場合はスロット 2048001 から 2164916) のスナップショットです。Prysm の占める割合が高まり、68%を超えることもありました。 これはスナップショットに過ぎませんが、図中の値は、クライアントの多様性の現状をよく表すものです。
+
+コンセンサスレイヤーのクライアントの多様性についての最新のデータは、[clientdiversity.org](https://clientdiversity.org/)から入手できます。
+
+## 実行レイヤー {#execution-layer}
+
+これまでクライアントの多様性に関する議論は、主にコンセンサスレイヤーに焦点が当てられていました。 しかし、実行クライアント[Geth](https://geth.ethereum.org)は現在、すべてのノードの 85%を占めています。 この高い占有率は、コンセンサスクライアントと同じ理由で問題になります。 例えば、トランザクション処理や実行ペイロードの構築に影響を与えるバグが Geth にあると、コンセンサスクライアントが問題や不具合のあるトランザクションをファイナライズする可能性があります。 そのため、使われる実行クライアントがより均一に分散されると、イーサリアムの健全性が高まります。ネットワークの 33%以上を占めるクライアントが存在しないことが理想です。
+
+## マイノリティクライアントの使用 {#use-minority-client}
+
+クライアントの多様性に対応するには、個々のユーザーがマイノリティクライアントを選ぶだけでなく、マイニング/バリデータプールや、メジャーな分散型アプリ(Dapp)や取引所などの機関がクライアントを切り替えることも必要です。 しかし、すべてのユーザーは現在の不均衡を是正し、利用可能なすべてのイーサリアムソフトウェアの使用の正常化に向けて貢献することができます。 マージ後はすべてのノードオペレーターは、実行クライアントとコンセンサスクライアントの両方を実行する必要があります。 以下に示すクライアントの組み合わせを選ぶことは、クライアントの多様性の向上につながります。
+
+### 実行クライアント {#execution-clients}
+
+[Besu](https://www.hyperledger.org/use/besu)
+
+[Nethermind](https://downloads.nethermind.io/)
+
+[Erigon](https://github.com/ledgerwatch/erigon)
+
+[Akula](https://akula.app)
+
+[Go-Ethereum](https://geth.ethereum.org/)
+
+### コンセンサスクライアント {#consensus-clients}
+
+[Nimbus](https://nimbus.team/)
+
+[Lighthouse](https://github.com/sigp/lighthouse)
+
+[Teku](https://consensys.net/knowledge-base/ethereum-2/teku/)
+
+[Lodester](https://github.com/ChainSafe/lodestar) - _レビューおよび監査中_
+
+ノードオペレーターを大多数を占めるクライアントからの移行を奨励し、移行プロセスを加速できるよう、技術系のユーザーはマイノリティクライアント向けのチュートリアルやドキュメントの作成にご協力ください。 マイノリティコンセンサスクライアントへの移行に関するガイドは、 [clientdiversity.org](https://clientdiversity.org/)から入手できます。
+
+## クライアントの多様性のダッシュボード {#client-diversity-dashboards}
+
+実行レイヤーとコンセンサスレイヤーのクライアントの多様性に関するリアルタイムの統計情報を提供しているダッシュボードがいくつかあります。
+
+**コンセンサスレイヤー:**
+
+- [Rated.network](https://www.rated.network/)
+- [clientdiversity.org](https://clientdiversity.org/)
+- [pools.invis.cloud](https://pools.invis.cloud/)
+- [slashed.info](https://www.slashed.info/)
+
+**実行レイヤー:**
+
+- [Ethernodes](https://ethernodes.org/)
+
+## 参考文献 {#further-reading}
+
+- [イーサリアムのコンセンサスレイヤーにおけるクライアントの多様性について](https://mirror.xyz/jmcook.eth/S7ONEka_0RgtKTZ3-dakPmAHQNPvuj15nh0YGKPFriA)
+- [イーサリアムマージ: マジョリティクライアントは自己責任での実行](https://dankradfeist.de/ethereum/2022/03/24/run-the-majority-client-at-your-own-peril.html) – _Dankrad Fiest、2022 年 3 月 24 日_
+- [クライアントの多様性の重要性](https://our.status.im/the-importance-of-client-diversity/)
+- [イーサリアムノードサービスのリスト](https://ethereumnodes.com/)
+- [クライアントの多様性問題の「5 つの理由」](https://notes.ethereum.org/@afhGjrKfTKmksTOtqhB9RQ/BJGj7uh08)
+- [イーサリアムの多様性と解決方法(Youtube)](https://www.youtube.com/watch?v=1hZgCaiqwfU)
+- [clientdiversity.org](https://clientdiversity.org/)
+
+## 関連トピック {#related-topics}
+
+- [イーサリアムノードの運用](/run-a-node/)
+- [ノードとクライアント](/developers/docs/nodes-and-clients/)
diff --git a/src/content/translations/ja/developers/docs/nodes-and-clients/index.md b/src/content/translations/ja/developers/docs/nodes-and-clients/index.md
new file mode 100644
index 00000000000..5892cff44c8
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/nodes-and-clients/index.md
@@ -0,0 +1,306 @@
+---
+title: ノードとクライアント
+description: イーサリアムノードとクライアントソフトの概要、およびノードを設定する方法、およびその必要性
+lang: ja
+sidebarDepth: 2
+---
+
+イーサリアムは、「ノード」と呼ばれるコンピュータの分散型ネットワークです。ノードで実行されているソフトウェアが、ブロックとトランザクションデータを検証します。 このソフトウェア・アプリケーションは「クライアント」と呼ばれ、コンピュータをイーサリアムノードにするために、必ず実行されなければならないものです。
+
+**注意: 現在、実行クライアントを単独で実行することはできません。 [マージ](/upgrades/merge)以降、イーサリアムネットワークにアクセスするには、実行クライアントとコンセンサスクライアントの両方を実行する必要があります。**
+
+## 前提知識 {#prerequisites}
+
+イーサリアムクライアントの独自のインスタンスを実行する前に、ピアツーピア・ネットワークの概念と[EVM の基本](/developers/docs/evm/)の理解が必要です。 まずは[イーサリアム入門](/developers/docs/intro-to-ethereum/)をご覧ください。
+
+初めてノードを運用する場合は、まず[イーサリアムノードの運用](/run-a-node)というユーザーフレンドリーな説明を確認してください。
+
+## ノードとクライアントとは {#what-are-nodes-and-clients}
+
+「ノード」とは、イーサリアムソフトウェアを実行している他のコンピュータに接続されているイーサリアムクライアントソフトウェアの何らかのインスタンスであり、ネットワークを形成します。 「クライアント」とは、プロトコルルールに対してデータを検証し、安全なネットワークを維持するイーサリアムの実装です。
+
+マージを経て、イーサリアムは実行レイヤーとコンセンサスレイヤーの 2 つの要素で構成されています。 両方のレイヤーは異なるクライアントソフトウェアによって実行されています。 このページでは、これらを実行クライアントとコンセンサスクライアントと呼びます。
+
+- 実行クライアントは(EL クライアントや実行エンジンとも呼ばれ、過去の名称は Eth1 クライアント)、ネットワークでブロードキャストされた新たなトランザクションを受け取り、EVM(イーサリアム仮想マシン)でトランザクションを実行し、すべての現在のイーサリアムデータの最新の状態とデータベースを保持する。
+- コンセンサスクライアントは(ビーコンノードや CL クライアントとも呼ばれる、旧称は ETh2 クライアント)、プルーフ・オブ・ステークのコンセンサスアルゴリズムを実行し、実行クライアントからの検証されたデータに基づき、ネットワークの合意を形成する。
+
+[マージ](/upgrades/merge/)前は、コンセンサスレイヤーと実行レイヤーは別々のネットワークでした。イーサリアム上のすべてのトランザクションとユーザーアクティビティは、現在の実行レイヤーで行われていました。 1 つのクライアントソフトウェアが、実行環境を提供しとマイナーが生成するブロックのコンセンサス検証の両方を行っていました。 コンセンサスレイヤーの[ビーコンチェーン](/upgrades/beacon-chain/)は、2020 年 12 月から別個に実行されてきました。 ビーコンチェーンにより、プルーフ・オブ・ステークの導入とイーサリアムネットワークからのデータに基づくバリデータのネットワークの調整が始まりました。
+
+マージにより、イーサリアムはこれらのネットワークを接続し、プルーフ・オブ・ステークへ移行しました。 イーサリアムの状態を検証するために、実行クライアントとコンセンサスクライアントは、同時に稼働します。
+
+様々なソフトウェアを組み合わせたモジュラー型設計は、[カプセル化された複雑さ](https://vitalik.ca/general/2022/02/28/complexity.html)と呼ばれます。 このアプローチにより、マージをシームレスに実行でき、[レイヤー 2 エコシステム](/layer-2/)などの個々のクライアントを再利用することができました。
+
+![実行クライアントとコンセンサスクライアントの連結](./eth1eth2client.png) 実行クライアントとコンセンサスクライアントの統合の簡略図
+
+### クライアントの多様性 {#client-diversity}
+
+[実行クライアント](/developers/docs/nodes-and-clients/#execution-clients)と[コンセンサスクライアント](/developers/docs/nodes-and-clients/#consensus-clients)の両方は、異なるチームがさまざまなプログラミング言語で開発しています。
+
+複数のクライアント実装が、単一のコードベースへの依存を減らし、ネットワークをより強固にします。 理想的な目標としては、どのクライアントもネットワークの大多数を占めることなく、多様性を達成し、単一障害点を減らすことです。 また、言語の多様性はより広範なデベロッパーコミュニティを招くことにつながり、デベロッパーの希望言語で開発できます。
+
+[クライアントの多様性](/developers/docs/nodes-and-clients/client-diversity/)についてもっと詳しく
+
+これらのクライアント実装に共通しているのは、一つの仕様に則っているということです。 仕様がイーサリアムネットワークとブロックチェーンの機能を規定しており、 すべての技術的な詳細が定義されています。仕様は下記で確認することができます。
+
+- 元々は[イーサリアムイエローペーパー](https://ethereum.github.io/yellowpaper/paper.pdf)
+- [実行クライアントの仕様](https://github.com/ethereum/execution-specs/)
+- [コンセンサスクライアントの仕様](https://github.com/ethereum/consensus-specs)
+- さまざまな[ネットワーク・アップグレード](/history/)で実装された[EIP](https://eips.ethereum.org/)
+
+### ネットワークのノードの追跡 {#network-overview}
+
+イーサリアムネットワークのノードの概要をリアルタイムで提供するトラッカーが複数あります。 分散型ネットワークの性質上、これらのクローラーはネットワークの限定されたビューしか提供できず、異なる結果を報告する可能性があることに注意してください。
+
+- Etherscan による[ノードのマップ](https://etherscan.io/nodetracker)
+- Bitfly による[Ethernodes](https://ethernodes.org/)
+- [イーサリアムノードクローラー](https://crawler.ethereum.org/)
+- [Nodewatch](https://www.nodewatch.io/): Chainsafe によるコンセンサスノードのクローリング
+
+## ノードの類型 {#node-types}
+
+[自分でノードを実行](/developers/docs/nodes-and-clients/run-a-node/)したい場合、ノードにはいくつかの種類があり、それぞれデータの扱い方が異なります。 実際に、クライアントが実行できるノードには、ライトノード、フルノード、アーカイブノードの 3 種類があります。 また、異なる同期戦略のオプションがあり、同期時間を短縮できます。 同期とは、イーサリアムの状態についての最新情報をどれだけ迅速に取得できるかを指します。
+
+### フルノード {#full-node}
+
+- 完全なブロックチェーンデータを保存(ただし、フルノードは定期的にプルーニングされており、最初のジェネシス(誕生)までさかのぼる状態は保存されていない)
+- ブロック検証に参加し、すべてのブロックと状態を検証する
+- フルノードからすべての状態が得られる(ただし、非常に古い状態はアーカイブノードへのリクエストから再構築)
+- ネットワークに貢献し、リクエストに応じてデータを提供する
+
+### ライトノード {#light-node}
+
+すべてのブロックをダウンロードするのではなく、ライトノードはブロックヘッダーをダウンロードします。 これらのヘッダーには、ブロックの内容に関するサマリー情報のみが含まれます。 ライトノードが必要とするその他の情報は、フルノードから取得します。 ライトノードは受信したデータをブロック ヘッダーの状態ルートに対して個別に検証できます。 ライトノードでは、フルノードを実行するために必要な強力なハードウェアや高帯域幅がなくても、イーサリアムネットワークに参加できます。 最終的には、ライトノードは携帯電話や組み込み機器で動作できるようになる可能性があります。 ライトノードはコンセンサスには参加せず、マイナーやバリデータにはなれませんが、フルノードと同じ機能でイーサリアムブロックチェーンにアクセスできます。
+
+実行クライアントの Geth には、[ライト同期(Light sync)](https://github.com/ethereum/devp2p/blob/master/caps/les.md)オプションがあります。 しかし、ライト Geth ノードはデータを取得する上で、フルノードに依存しています。 ライトノードへデータを提供するフルノードはほとんどなく、ライトノードはしばしばピアを見つけることができません。 現在、コンセンサスレイヤーには本番使用可能なライトクライアントは存在しませんが、開発中のクライアントはいくつかあります。
+
+また、[ゴシップネットワーク](https://www.ethportal.net/)を介してライトクライアントデータを提供する方法もあります。 ゴシップネットワークは、フルノードがリクエストに応答することなくライトノードのネットワークをサポートできるため好都合です。
+
+イーサリアムはまだ多数のライトノードをサポートしていませんが、ライトノードのサポートは近い将来急速に発展すると予想される領域です。
+
+### アーカイブノード {#archive-node}
+
+- フルノードに保存されているすべてを保持し、過去の状態のアーカイブを構築する。 例えば、ブロック 4,000,000 のアカウント残高をクエリしたい場合、または簡単にかつ確実にトレースを使用してマイニングを行うことなく、自分のトランザクションセットをテストしたい場合などに必要。
+- データがテラバイト単位になるため、平均的なユーザーにとってアーカイブノードは魅力的なものではないが、ブロックエクスプローラー、ウォレットベンダー、チェーン分析などのサービスに有用。
+
+アーカイブ以外の任意のモードでクライアントを同期すると、ブロックチェーンデータがプルーニングされます。 つまり、すべての過去の状態を保存するアーカイブは存在しませんが、フルノードは必要に応じて構築できます。
+
+## イーサリアムノードを運用する必要性 {#why-should-i-run-an-ethereum-node}
+
+ノードを運用することで、直接的にトラストレスで、かつプライベートにイーサリアムを利用できると同時に、イーサリアムをより強固にし、分散化に貢献することができます。
+
+### メリット {#benefits-to-you}
+
+自分のノードを運用すると、プライベートで自己完結したトラストレスな形でイーサリアムを利用することができます。 クライアントを使って自分でデータを検証できるので、ネットワークを信頼する必要はありません。 「信頼せず検証」はブロックチェーンでよく言われるマントラです。
+
+- ノードはすべてのトランザクションとブロックをコンセンサスルールに対して検証する。 つまり、ネットワークの他のノードに依存したり、完全に信頼する必要がない。
+- 自分のノードでイーサリアムウォレットを使用可能。 ランダムなノードに自分のアドレスや残高を漏らす必要がないため、より安全かつプライベートに分散型アプリ(Dapp)を利用できる。 自身のクライアントですべてをチェックできる。 [MetaMask](https://metamask.io)、[Frame](https://frame.sh/)、[他の多くのウォレット](/wallets/find-wallet/)は RPC インポート機能を提供し、自分のノードを使用できる。
+- イーサリアムからのデータに依存する他のサービスを実行および自分でホスト可能 (例えば、ビーコンチェーンのバリデータ、レイヤー 2 などのソフトウェア、インフラストラクチャ、ブロックエクスプローラー、ペイメントプロセッサーなど)。
+- 独自のカスタム[RPC エンドポイント](https://ethereum.org/en/developers/docs/apis/json-rpc/)を提供できる。 それがコミュニティ向けに公開されたイーサリアムエンドポイント、または非公開のエンドポイントであっても、あなたのノードを他の人が使用でき、結果として中央集権的な大手プロバイダを回避できる。
+- **プロセス間通信(IPC)**を利用してノードに接続、またはノードを書き換えプラグインとしてプログラムの読み込みが可能。 これにより、レイテンシーが低くなり、Web3 ライブラリを使用して大量のデータを処理する場合、またはトランザクションをできるだけ早く置き換える必要がある場合に(フロントランニング)、非常に有用。
+- ETH を直接ステーキングでき、ネットワークの安全性に貢献し、同時に報酬を得ることができる。 始めるには[ソロステーキング](https://ethereum.org/en/staking/solo/)を参照。
+
+![アプリケーションやノードを介してイーサリアムにアクセスする方法](./nodes.png)
+
+### ネットワークのメリット {#network-benefits}
+
+イーサリアムの健全性、セキュリティ、運用レジリエンスにとって、ノードの多様性は重要です。
+
+- フルノードがコンセンサスルールを強制するため、ルールに従わないブロックが受け入れられることはない。 これはネットワークのセキュリティ強化につながる(すべてのノードが完全な検証ができないライトノードの場合では、バリデータがネットワークに対して攻撃できる恐れがあるため)。
+- [プルーフ・オブ・ステーク](/developers/docs/consensus-mechanisms/pos/#what-is-pos)の暗号経済的な防御を上回る攻撃の場合、正しいチェーンを選ぶフルノードによって、社会的回復が行われる。
+- ネットワークのノード数が増えることで、分散化の究極の目標である多様で堅牢なネットワークとなり、検閲耐性があり、信頼性の高いシステムになる。
+- フルノードからのブロックチェーンデータに依存するライトクライアントに、ブロックチェーンデータへのアクセスを提供する。 ネットワークの使用量が高いとき、ライトノードが同期するのに十分な数のフルノードが必要。 ライトノードはブロックチェーン全体を保持せず、[ブロックヘッダーのステートルート](/developers/docs/blocks/#block-anatomy)を利用してデータを検証する。 必要に応じて、ライトノードはブロックからより多くの情報のリクエストを行う。
+
+あなたがフルノードを運用すると、イーサリアムのネットワーク全体がその恩恵を受けることになります。
+
+## 自分のノードの運用 {#running-your-own-node}
+
+自分のイーサリアムクライアントの運用に興味がありますか?
+
+初心者にやさしい導入方法については、[ノードの運用](/run-a-node)ページで詳細を確認してください。
+
+技術的な方向けには、[自分のノードを立ち上げる](/developers/docs/nodes-and-clients/run-a-node/)を参照し、詳細やオプションを確認してください。
+
+## 代替手段 {#alternatives}
+
+自分のノードを設定するには時間とリソースがかかりますが、常に独自のインスタンスを実行する必要はありません。 この場合では、[Infura](https://infura.io)、[Alchemy](https://alchemyapi.io)、[Chainstack](https://chainstack.com)、または[QuikNode](https://www.quiknode.io)のようなサードパーティーの API プロバイダーを利用できます。 あるいは、[ArchiveNode](https://archivenode.io/)というコミュニティが資金提供しているアーカイブノードがあり、時間とリソースに余裕のない独立デベロッパーのためにイーサリアムブロックチェーンのアーカイブデータを提供しています。 これらのサービスの概要については、 [ノード・アズ・ア・サービス(NaaS)](/developers/docs/nodes-and-clients/nodes-as-a-service/)で確認してください。
+
+コミュニティでパブリックな API を持つイーサリアムノードが運用されている場合、MetaMask のようなライトウォレットを[カスタム RPC を介して](https://metamask.zendesk.com/hc/en-us/articles/360015290012-Using-a-Local-Node)コミュニティノードに向けることができ、ランダムなサードパーティを使うよりも、よりプライバシーを確保できます。
+
+一方で、自分のクライアントを運用している場合は、必要としている友人とクライアントを共有できます。
+
+## 実行クライアント(旧 「Eth1 クライアント」) {#execution-clients}
+
+イーサリアムコミュニティは、異なるプログラミング言語で、さまざまなチームによって開発された、複数のオープンソースの実行クライアント(旧称は「Eth1 クライアント」または「イーサリアムクライアント」) を維持しています。 これにより、ネットワークがより強固になり、[多様性](/developers/docs/nodes-and-clients/client-diversity/)を実現します。 理想的な目標としては、どのクライアントもネットワークの大多数を占めることなく、多様性を達成し、単一障害点を減らすことです。
+
+この表は、いくつかのクライアントをまとめたものです。 これらはすべて[クライアントテスト](https://github.com/ethereum/tests)に合格し、アクティブにネットワークのアップグレードで最新の状態に維持されています。
+
+| クライアント | 言語 | オペレーティングシステム | ネットワーク | 同期戦略 | 状態剪定 |
+| ----------------------------------------------- | -------- | ------------------------ | --------------------------------------------------- | ------------------------------- | -------------------- |
+| [Geth](https://geth.ethereum.org/) | Go | Linux、Windows、macOS | メインネット、Sepolia、Görli、Ropsten、Rinkeby | スナップ、フル | アーカイブ、プルーン |
+| [Nethermind](http://nethermind.io/) | C#、.NET | Linux、Windows、macOS | メインネット、Sepolia、Görli、Ropsten、Rinkeby など | スナップ(配信なし) 、高速、フル | アーカイブ、プルーン |
+| [Besu](https://besu.hyperledger.org/en/stable/) | Java | Linux、Windows、macOS | メインネット、Sepolia、Görli、Ropsten、Rinkeby など | 高速、フル | アーカイブ、プルーン |
+| [Erigon](https://github.com/ledgerwatch/erigon) | Go | Linux、Windows、macOS | メインネット、Sepolia、Görli、Rinkeby、Ropsten など | フル | アーカイブ、プルーン |
+| [Akula](https://akula.app) | Rust | Linux | メインネット、Sepolia、Görli、Rinkeby、Ropsten | フル | アーカイブ、プルーン |
+
+**OpenEthereum は[非推奨](https://medium.com/openethereum/gnosis-joins-erigon-formerly-turbo-geth-to-release-next-gen-ethereum-client-c6708dd06dd)となり、メンテナンスされていません。**注意して使用し、できれば他のクライアントに切り替えてください。
+
+サポートされているネットワークの詳細については、[イーサリアムネットワーク](/developers/docs/networks/)をご覧ください。
+
+各クライアントには独自のユースケースとメリットがあります。自分の好みに基づいて選択してください。 多様性により、クライアントが異なる機能やユーザー対象に特化することができます。 機能、サポート、プログラミング言語、またはライセンスに基づいて、クライアントを選択することをお勧めします。
+
+### Besu {#besu}
+
+ハイパーレジャー・ベスは、パブリックネットワークと許可型ネットワーク向けのエンタープライズグレードのイーサリアムクライアントです。 トレースから GraphQL まで、イーサリアムメインネットのすべての機能を実行し、広範なモニタリングを行い、公開コミュニティチャンネルと企業向けの商用 SLA の両方で、ConsenSys 社によりサポートされています。 Java 実装で、Apache 2.0 ライセンスです。
+
+機能とセットアップの詳細については、Besu の広範な[ドキュメント](https://besu.hyperledger.org/en/stable/)に記載されています。
+
+### Erigon {#erigon}
+
+Erigon(旧称: Turbo-Geth)は、Go Ethereum のフォークとして始まり、速度とディスク容量の効率に特化しています。 Erigon はイーサリアムを完全に再構築された実装で、現在は Go 実装ですが、[Akula](https://medium.com/@vorot93/meet-akula-the-fastest-ethereum-implementation-ever-built-58eaca244c39)など他の言語でも開発中です。 Erigon は、より高速、よりモジュラー型、より最適化されたイーサリアムの実装を提供することを目的としています。 2TB 程度のディスク容量で、3 日以内にフルアーカイブノードの同期ができます。
+
+### Go Ethereum (Geth) {#geth}
+
+Go Ethereum(略して Geth) は、イーサリアムプロトコルのオリジナルの実装の 1 つです。 現在、最も普及しているクライアントであり、ユーザーやデベロッパー向けのツールの種類も豊富です。 Go 実装で、完全にオープンソースで、GNU LGPL v3 の下でライセンスされています。
+
+詳細については、Geth の[ドキュメント](https://geth.ethereum.org/docs/)を参照してください。
+
+### Nethermind {#nethermind}
+
+Nethermind は C# .NET の技術スタックで開発されたイーサリアムの実装で、LGPL-3.0 ライセンスです。ARM を含むすべての主要なプラットフォームで稼働します。 以下のような優れたパフォーマンスを提供します。
+
+- 最適化された仮想マシン
+- 状態アクセス
+- ネットワーク機能と、Prometheus/Grafana ダッシュボード、シークエンス・エンタープライズ・ロギング・サポート、JSON RPC トレース、分析プラグインなどの豊富な機能
+
+また、Nethermind には[詳細なドキュメント](https://docs.nethermind.io)、強力な開発サポート、オンラインコミュニティ、プレミアムユーザー向けの 24 時間年中無休のサポートもあります。
+
+## コンセンサスクライアント(旧「Eth2」クライアント) {#consensus-clients}
+
+[コンセンサスアップグレード](/upgrades/beacon-chain/)に対応する複数のコンセンサスクライアント(旧称: 「Eth2」クライアント) があります。 ビーコンチェーンを実行しており、[マージ](/upgrades/merge/)以降、実行クライアントにプルーフ・オブ・ステークの合意メカニズムを提供します。
+
+[コンセンサスクライアントを見る](/upgrades/get-involved/#clients)
+
+| クライアント | 言語 | オペレーティングシステム | ネットワーク |
+| ------------------------------------------------------------- | ---------- | ------------------------ | ---------------------------------------------------------------- |
+| [Lighthouse](https://lighthouse.sigmaprime.io/) | Rust | Linux、Windows、macOS | ビーコンチェーン、Goerli、Pyrmont、Sepolia、Ropsten など |
+| [Lodestar](https://lodestar.chainsafe.io/) | TypeScript | Linux、Windows、macOS | ビーコンチェーン、Goerli、Sepolia、Ropsten など |
+| [Nimbus](https://nimbus.team/) | Nim | Linux、Windows、macOS | ビーコンチェーン、Goerli、Sepolia、Ropsten など |
+| [Prysm](https://docs.prylabs.network/docs/getting-started/) | Go | Linux、Windows、macOS | ビーコンチェーン、Gnosis、Goerli、Pyrmont、Sepolia、Ropsten など |
+| [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) | Java | Linux、Windows、macOS | ビーコンチェーン、Gnosis、Goerli、Sepolia、Ropsten など |
+
+### Lighthouse {#lighthouse}
+
+Lighthouse は、Apache-2.0 ライセンスの下、Rust で書かれたコンセンサスクライアントの実装です。 Sigma Prime により管理され、ビーコンチェーンの誕生以降安定し、本番リリースされています。 様々なエンタープライズ、ステーキングプール、個人からの信頼を得ています。 デスクトップ PC から高度な自動デプロイまで、幅広い環境における安全性、パフォーマンス、相互運用性を目指しています。
+
+ドキュメントは、[Lighthouse Book](https://lighthouse-book.sigmaprime.io/)にあります。
+
+### Lodestar {#lodestar}
+
+Lodestar は LGPL-3.0 ライセンスの下、Typescript で書かれ、本番対応のコンセンサスクライアントの実装です。 ChainSafe Systems 社により管理され、ソロステーカー、デベロッパー、研究者向けのコンセンサスクライアントの中で最も新しいものです。 Loadstar は、イーサリアムプロトコルを JavaScript で実装したビーコンノードとバリデータクライアントで構成されています。 ライトクライアントでのイーサリアムの使いやすさを向上させ、より多くのデベロッパーグループがアクセスできるようし、エコシステムの多様性にさらに貢献することを目指しています。
+
+詳細については、[Lodestar のウェブサイト](https://lodestar.chainsafe.io/)をご覧ください。
+
+### Nimbus {#nimbus}
+
+Nimbus は Apache-2.0 ライセンスの下、Nim で書かれたコンセンサスクライアントの実装です。 ソロステーカーやステーキングプールで使用されており、本番対応のクライアントです。 Nimbus はリソース効率を重視して設計されており、リソースに制限のあるデバイスや企業のインフラストラクチャ上でも、安定性や報酬のパフォーマンスを損なわずに簡単に実行できます。 リソース利用量が少ないということは、ネットワークに負荷がかかったときでも、クライアントの安全域が大きくなることを意味します。
+
+Trinity により実装されています。 高速同期のように機能しますが、最新のブロックを実行するために必要なデータもダウンロードします。開始から数分以内にチェーンをクエリできます。
+
+- 最初に状態を同期し、数分で RPC にクエリ可能
+- まだ開発中で、完全に信頼できるわけではなく、バックグラウンド同期が遅くなり、RPC 応答が失敗する可能性がある
+
+詳しくは、[Nimbus のドキュメント](https://nimbus.guide/)をご覧ください。
+
+### Prysm {#prysm}
+
+Prysm は GPL-3.0 ライセンスの下、Go で書かれたフル機能のオープンソースのコンセンサスクライアントです。 オプションのウェブアプリの UI を備え、自宅でステーキングするユーザーと機関ユーザー両方向けに、ユーザーエクスペリエンス、ドキュメント、設定可能性を優先しているのが特徴です。
+
+詳しくは、[Prysm のドキュメント](https://docs.prylabs.network/docs/getting-started/)をご覧ください。
+
+### Teku {#teku}
+
+Teku はオリジナルのビーコンチェーンで誕生したクライアントの 1 つです。 セキュリティ、堅牢性、安定性、使いやすさ、パフォーマンスのよくある目標に加えて、Teku はさまざまなコンセンサスクライアント標準に完全に準拠することを特に目指しています。
+
+Teku は非常に柔軟なデプロイメントオプションを提供しています。 ビーコンノードとバリデータクライアントをシングルプロセスとして一緒に実行でき、ソロステーカーにとって非常に便利です。または、高度なステーキング操作用にノードを個別に実行することもできます。 さらに、署名キーのセキュリティとスラッシング保護のため、[Web3Signer](https://github.com/ConsenSys/web3signer/)と完全に相互運用可能です。
+
+Teku は Java 実装で、Apache 2.0 ライセンスです。 Besu や Web3Signer を手がける ConsenSys 社のプロトコルチームによる開発です。 詳しくは、[Teku のドキュメント](https://docs.teku.consensys.net/en/latest/)をご覧ください。
+
+## 同期モード {#sync-modes}
+
+ネットワークの現在のデータを追って検証するには、イーサリアムクライアントは最新のネットワーク状態と同期する必要があります。 これは、ピアからデータをダウンロードし、暗号的に完全性を検証し、ローカルのブロックチェーンデータベースを構築することで行われます。
+
+同期モードには、さまざまなトレードオフを持つ異なるアプローチがあります。 また、各クライアントにより、同期アルゴリズムの実装に違いがあります。 実装の詳細については、常にクライアントの公式ドキュメントを参照してください。
+
+### 実行レイヤーの同期モード {#execution-layer-sync-modes}
+
+#### フル同期(Full sync) {#full-sync}
+
+フル同期は、ヘッダー、トランザクション、レシートを含むすべてのブロックをダウンロードし、最初のジェネシス(誕生)からの全ブロックを実行することで、ブロックチェーンの状態を段階的に生成します。
+
+- すべてのトランザクションを検証することにより、信用する必要性を最小限に抑え、最高のセキュリティを提供
+- トランザクション数が増えると、全トランザクションを処理するのに数日から数週間かかることがある
+
+#### 高速同期(Fast sync) {#fast-sync}
+
+高速同期は、ヘッダー、トランザクション、レシートを含むすべてのブロックをダウンロードし、全ヘッダーを検証の上、状態をダウンロードし、検証したヘッダーに対して状態を検証します。
+
+- 合意メカニズムのセキュリティに依存
+- 同期には数時間しかかからない
+
+#### 軽量同期(Light sync) {#light-sync}
+
+軽量クライアントモード(Light client mode)は、すべてのブロックヘッダー、ブロックデータをダウンロードし、ランダムに検証を行います。 信頼できるチェックポイントからのチェーンの先端のみを同期します。
+
+- デベロッパーへの信頼と合意メカニズムに依存し、最新の状態のみを取得
+- クライアントは数分で現在のネットワーク状態で使用できるようになる
+
+[ライトクライアントの詳細](https://www.parity.io/blog/what-is-a-light-client/)
+
+#### スナップ同期(Snap sync) {#snap-sync}
+
+スナップ同期はクライアント同期の最新のアプローチであり、Geth チームによって開発されました。 ピアが提供するダイナミック・スナップショットを使用して、中間ツリーノードをダウンロードすることなく、すべてのアカウントデータとストレージデータを取得し、ローカルでマークルツリーを再構築します。
+
+- 現在イーサリアムメインネットでデフォルトとなっている最速の同期戦略
+- セキュリティを損なうことなく、ディスク使用量とネットワーク帯域幅を大幅に節約可能
+
+[スナップ同期の詳細](https://github.com/ethereum/devp2p/blob/master/caps/snap.md)
+
+| クライアント | ディスクサイズ(高速同期) | ディスクサイズ(フルアーカイブ) |
+| ------------ | ------------------------ | ------------------------------ |
+| Geth | 400GB 以上 | 6TB 以上 |
+| OpenEthereum | 280GB 以上 | 6TB 以上 |
+| Nethermind | 500GB 以上 | 12TB 以上 |
+| Besu | 750GB 以上 | 5TB 以上 |
+| Erigon | N/A | 1TB 以上 |
+
+#### オプティミスティック同期(Optimistic sync) {#optimistic-sync}
+
+オプティミスティック同期はマージ後の同期戦略で、オプトインで下位互換性(他の同期モードと互換性がある)があるように設計されており、実行ノードが確立された方法で同期できます。 実行エンジンはビーコンブロックを完全に検証せず、*オプティミスティックに(楽観的に)*インポートでき、最新の先頭を探し、上記の方法でチェーンの同期を開始します。 次に、実行クライアントが追いつくと、ビーコンチェーンのトランザクションの有効性をコンセンサスクライアントに通知します。
+
+[オプティミスティック同期の詳細](https://github.com/ethereum/consensus-specs/blob/dev/sync/optimistic.md)
+
+#### チェックポイント同期(Checkpoint sync) {#checkpoint-sync}
+
+チェックポイント同期は、弱い主観性同期(Weak Subjectivity Sync)とも呼ばれ、ビーコンノードの同期でユーザーエクスペリエンスが優れています。 これは[弱い主観性(Weak Subjectivity)](/developers/docs/consensus-mechanisms/pos/weak-subjectivity/)の前提に基づいており、最初のジェネシスブロック からではなく、最新の「弱い主観性チェックポイント」からビーコンチェーンを同期します。 [ジェネシスブロック](/glossary/#genesis-block)からの同期と同様の信頼性を仮定したチェックポイント同期により、初期同期の時間を大幅に短縮できます。
+
+実運用では、ノードがリモートサービスに接続して最新のファイナライズされた状態をダウンロードし、その時点からのデータの検証を続けます。 データを提供しているサードパーティは信頼できるものであり、慎重に選ばれる必要があります。
+
+[チェックポイント同期](https://notes.ethereum.org/@djrtwo/ws-sync-in-practice)の詳細
+
+## 参考文献 {#further-reading}
+
+インターネットには、イーサリアムクライアントに関する情報がたくさんあります。 ここでは、参考になりそうなリソースをいくつか紹介します。
+
+- [イーサリアム 101 - パート 2 - ノードについての理解](https://kauri.io/ethereum-101-part-2-understanding-nodes/48d5098292fd4f11b251d1b1814f0bba/a) _– 2019 年 2 月 13 日 - Wil Barnes_
+- [イーサリアムフルノードの運用: 手間を省きたい人向けのガイド](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _2019 年 11 月 7 日 - Justin Leroux_
+- [イーサリアムノードの運用](https://docs.ethhub.io/using-ethereum/running-an-ethereum-node/) _– ETHHub、頻繁に更新_
+
+## 関連トピック {#related-topics}
+
+- [ブロック](/developers/docs/blocks/)
+- [ネットワーク](/developers/docs/networks/)
+
+## 関連チュートリアル {#related-tutorials}
+
+- [Geth](/developers/tutorials/run-light-node-geth/)でノードを運用 _– Geth のダウンロード、インストール、実行方法。 同期モード、Javascript コンソールなど。_
+- [MicroSD カードを挿入するだけで、Raspberry Pi 4 をバリデータノードにする – インストールガイド](/developers/tutorials/run-node-raspberry-pi/) _– Raspberry Pi 4 をフラッシュし、イーサネットケーブルを接続し、SSD ディスクを接続して、電源を入れることで、Raspberry Pi 4 を、実行レイヤー(メインネット)とコンセンサスレイヤー(ビーコンチェーン / バリデータ)の両方もしくは片方を実行するフルイーサリアムノードにする。_
diff --git a/src/content/translations/ja/developers/docs/nodes-and-clients/nodes-as-a-service/index.md b/src/content/translations/ja/developers/docs/nodes-and-clients/nodes-as-a-service/index.md
new file mode 100644
index 00000000000..085fc28438d
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/nodes-and-clients/nodes-as-a-service/index.md
@@ -0,0 +1,270 @@
+---
+title: ノード運用サービス
+description: ノード運用サービス、メリットとデメリット、および人気のプロバイダーの初心者向け概要
+lang: ja
+sidebarDepth: 2
+---
+
+## はじめに {#Introduction}
+
+自分自身で[イーサリアムノード](/developers/docs/nodes-and-clients/#what-are-nodes-and-clients)を実行するのは、特に始めての場合や、急速にスケーリングするときには難しい場合があります。 既に最適化されたノードインフラストラクチャを実行する[サービス](#popular-node-services)がいくつかあり、利用するとアプリケーションや製品開発に集中できるようになります。 ノード運用サービスがどのように機能するか、それらを使用するメリットとデメリット、またご興味がある方向けにプロバイダーを記載します。
+
+## 前提知識 {#prerequisites}
+
+ノードやクライアントが何かについてご存知ではない場合、[ノードとクライアント](/developers/docs/nodes-and-clients/)を参照してください。
+
+## ステーカー {#stakoooooooooooooors}
+
+ソロステーカーは、サードパーティプロバイダーを使用せず、自分のインフラストラクチャを運用する必要があります。 これは、実行クライアントとコンセンサスクライアントの両方を実行することを意味します。 [マージ](/upgrades/merge)前は、コンセンサスクライアントのみを実行し、実行データに関しては中央集中型のプロバイダーを使用できましたが、これはもうできなくなり、ソロステーカーは、両方のクライアントを実行する必要があります。 しかし、このプロセスを容易にするために利用できるサービスがあります。
+
+詳細については、[ノードの運用](/developers/docs/nodes-and-clients/run-a-node/)をご覧ください。
+
+このページに記載されているサービスは、ステーキング以外のノードについてです。
+
+## ノード運用サービスの仕組み {#how-do-node-services-work}
+
+ノード運用サービスプロバイダーは、分散ノードクライアントの実行を代行し、利用者の負担を軽減してくれます。
+
+これらのサービスは通常、ブロックチェーンへの書き込みと読み込みに使用できる API キーを提供します。 多くの場合、メインネットに加えて [イーサリアムテストネット](/developers/docs/networks/#ethereum-testnets)にもアクセスできます。
+
+サービスによっては、自分専用ノードの運用を提供するものもあり、ロードバランサーを使用してノード間のアクティビティを分散するものもあります。
+
+ほとんどのノードサービスとの統合は非常に簡単で、自己ホストノードを交換、またはサービス自体を切り替えるには、コードを 1 行変更するだけです。
+
+多くの場合、ノード運用サービスは様々な[ノードクライアント](/developers/docs/nodes-and-clients/#execution-clients)と[型](/developers/docs/nodes-and-clients/#node-types)を実行します。1 つの API でクライアント固有のメソッドに加えて、フルノードとアーカイブノードにアクセスできます。
+
+ノード運用サービスには秘密鍵やあなたの情報を保管してはいけないことにご留意ください。
+
+## ノード運用サービスを利用するメリット {#benefits-of-using-a-node-service}
+
+ノード運用サービスの利用の主なメリットは、自分でノードの保守と管理に時間を費やす必要がないことです。 これにより、インフラストラクチャのメンテナンスを心配する必要がなくなり、製品の構築に集中することができます。
+
+独自のノードの運用は、ストレージから処理能力、貴重なエンジニアリング時間など、非常に高価になります。 スケーリング時にノードを多数立ち上げたり、最新バージョンにアップグレードしたり、状態の一貫性を確実にするなどの作業は、望んでいる Web3 製品の作成に必要なリソースや時間を削いでしまいます。
+
+## ノード運用サービス利用のデメリット {#cons-of-using-a-node-service}
+
+ノード運用サービスを利用すると、製品のインフラストラクチャの中央集権化を行うことになります。 この理由から、分散性を重視するプロジェクトでは、サードパーティーにアウトソーシングするのではなく、独自ホスティングのノードが好まれることがあります。
+
+[自分のノードを実行するメリット](/developers/docs/nodes-and-clients/#benefits-to-you)に関する詳細
+
+## 一般的なノード運用サービス {#popular-node-services}
+
+最も一般的なイーサリアムノードプロバイダーのリストです。不足しているものがあれば追加してください。 無料または有料ティアに加えて、各ノードサービスにより提供されるメリットと機能は異なります。ご自身の必要性に応じて、よくリサーチを行ってから最適なものを選択してください。
+
+- [**Alchemy**](https://alchemy.com/)
+ - [ドキュメント](https://docs.alchemyapi.io/)
+ - 機能
+ - 月間 3 億のコンピュートユニット(約 3 千万件の getLatestBlock リクエスト)の最大無料ティア
+ - Polygon、Starknet、Optimism、Arbitrum などの複数のチェーン対応
+ - イーサリアム分散型アプリ(Dapp)と分散型金融(DeFi)のトランザクション量の約 70%を供給
+ - Alchemy Notify によるリアルタイム Webhook アラート
+ - クラス最高のサポートと信頼性/安定性
+ - Alchemy の NFT API
+ - リクエストエクスプローラー、メンプールウォッチャー、および コンポーザーを備えたダッシュボード
+ - 統合されたテストネットフォーセットのアクセス
+ - 18,000 人のアクティブユーザーを持つ開発者のための Discord コミュニティ
+- [**Ankr**](https://www.ankr.com/)
+ - [ドキュメント](https://docs.ankr.com/)
+ - 機能
+ - Ankr Protocol - 8 チェーン以上の Public RPC API エンドポイントへのオープンアクセス
+ - ロードバランシングとノードのヘルスモニタリングにより、最も近い利用可能なノードへの高速で信頼性の高いゲートウェイを実現
+ - プレミアムティアは WSS エンドポイント、レートリミットの上限なし
+ - ワンクリックで 40 チェーン以上のフルノードとバリデータノードをデプロイ可能
+ - 従量課金制
+ - 分析ツール
+ - ダッシュボード
+ - RPC、HTTPS および WSS エンドポイント
+ - ダイレクトサポート
+- [**BlockDaemon**](https://blockdaemon.com/)
+ - [ドキュメント](https://ubiquity.docs.blockdaemon.com/)
+ - メリット
+ - ダッシュボード
+ - ノード単位での課金
+ - 分析
+- [**Chainstack**](https://chainstack.com/)
+ - [ドキュメント](https://docs.chainstack.com/)
+ - 機能
+ - 無料共有ノード
+ - 共有アーカイブノード
+ - GraphQL サポート
+ - RPC と WSS エンドポイント
+ - 専用フルノードとアーカイブノード
+ - 専用デプロイの高速同期
+ - BYOC (Bring your own cloud、クラウド持ち込み)
+ - 時間課金制
+ - 24 時間年中無休のダイレクトサポート
+- [**DataHub**](https://datahub.figment.io)
+ - [ドキュメント](https://docs.figment.io/)
+ - 機能
+ - 毎月 3 百万件のリクエストの無料ティアオプション
+ - RPC と WSS エンドポイント
+ - 専用のフルノードとアーカイブノード
+ - 自動スケーリング(ボリューム割引)
+ - 無料のアーカイブデータ
+ - サービス分析
+ - ダッシュボード
+ - 24 時間年中無休のダイレクトサポート
+ - 暗号通貨での支払い(エンタープライズ)
+- [**GetBlock**](https://getblock.io/)
+ - [ドキュメント](https://getblock.io/docs/get-started/authentication-with-api-key/)
+ - 機能
+ - 40 以上のブロックチェーンノードへのアクセス
+ - 4 万の無料デイリーリクエスト
+ - 無制限の API キー
+ - 高速接続(1GB/秒)
+ - トレース+アーカイブ
+ - 高度な分析
+ - 自動アップデート
+ - 技術サポート
+- [**InfStones**](https://infstones.com/)
+ - 機能
+ - 無料ティアオプション
+ - 従量課金制
+ - 分析
+ - ダッシュボード
+ - 独自の API エンドポイント
+ - 専用フルノード
+ - 専用デプロイの高速同期
+ - 24 時間年中無休のダイレクトサポート
+ - 50 以上のブロックチェーンノードへのアクセス
+- [**Infura**](https://infura.io/)
+ - [ドキュメント](https://infura.io/docs)
+ - 機能
+ - 無料ティアオプション
+ - 従量課金制
+ - 有料のアーカイブデータ
+ - ダイレクトサポート
+ - ダッシュボード
+- [**Kaleido**](https://kaleido.io/)
+ - [ドキュメント](https://docs.kaleido.io/)
+ - 機能
+ - 無料スターターティア
+ - イーサリアムノードのワンクリック・デプロイ
+ - カスタマイズ可能なクライアントとアルゴリズム(Geth、Quorum & Besu || PoA、IBFT & Raft)
+ - 500 以上の管理 API とサービス API
+ - イーサリアムトランザクション送信のための RESTful インターフェイス(Apache Kafka のサポート)
+ - イベント配信のためのアウトバウンドストリーム(Apache Kafka のサポート)
+ - 「オフチェーン」の付随サービスの豊富なコレクション(例: 双方向の暗号化されたメッセージングトランスポート)
+ - ガバナンスとロールベースのアクセス制御を備えた簡単なネットワーク・オンボーディング
+ - 管理者とエンドユーザーの両方の高度なユーザー管理
+ - スケーラビリティと復元力に優れたエンタープライズ レベルのインフラストラクチャ
+ - Cloud HSM 秘密鍵管理
+ - イーサリアムメインネットテザリング
+ - ISO 27k および SOC 2 Type 2 認証
+ - 動的ランタイム設定(例: クラウド統合の追加、ノードイングレスの変更など)
+ - マルチクラウド、マルチリージョン、ハイブリッド展開オーケストレーションのサポート
+ - シンプルな時間単位の SaaS ベース価格
+ - SLA と 24 時間年中無休のサポート
+- [**Moralis**](https://moralis.io/)
+ - [ドキュメント](https://docs.moralis.io/)
+ - 機能
+ - 無料共有ノード
+ - 無料共有アーカイブノード
+ - プライバシー重視(ログポリシーなし)
+ - クロスチェーンサポート
+ - 従量課金制
+ - ダッシュボード
+ - 独自のイーサリアム SDK
+ - 独自の API エンドポイント
+ - ダイレクト技術サポート
+- [**NOWNodes**](https://nownodes.io/)
+ - [ドキュメント](https://documenter.getpostman.com/view/13630829/TVmFkLwy)
+ - 機能
+ - 50 以上のブロックチェーンノードへのアクセス
+ - 無料の API キー
+ - ブロックエクスプローラー
+ - API 応答時間 1 秒以下
+ - 24 時間年中無休のサポートチーム
+ - パーソナルアカウントマネージャー
+ - 共有、アーカイブ、バックアップ、専用ノード
+- [**Pocket Network**](https://www.pokt.network/)
+ - [ドキュメント](https://docs.pokt.network/home/)
+ - 機能
+ - 分散 RPC プロトコルとマーケットプレイス
+ - 1 日あたり百万件のリクエスト無料ティア(エンドポイントあたり最大 2)
+ - [パブリックエンドポイント](https://docs.pokt.network/home/resources/public-rpc-endpoints)
+ - プレステーク+プログラム(1 日に百万件を超えるリクエストが必要な場合)
+ - 15 以上のブロックチェーン対応
+ - アプリケーションへのサービスで POKT を獲得する 6400 以上のノード
+ - アーカイブノード、トレース付きアーカイブノード、テストネットノードサポート
+ - イーサリアムメインネットノードクライアントの多様性
+ - 単一障害点なし
+ - ゼロダウンタイム
+ - 費用対効果の高いほぼゼロ・トークノミクス(ネットワーク参加に POKT を 1 回ステーキング)
+ - 月々のコストなし、インフラストラクチャを資産に変更
+ - プロトコルに組み込まれたロードバランシング
+ - 1 日あたりのリクエスト件数と、1 時間あたりのノード数を無限に拡張可
+ - 最もプライベートで検閲耐性のあるオプション
+ - ハンズオンデベロッパーサポート
+ - [Pocket Portal](https://bit.ly/ETHorg_POKTportal)ダッシュボードと分析
+- [**QuickNode**](https://www.quicknode.com)
+ - [ドキュメント](https://www.quicknode.com/docs/)
+ - 機能
+ - 業界をリードする性能と信頼性
+ - 24 時間年中無休のテクニカルサポートとデベロッパーの Discord コミュニティ
+ - 地理的なバランスを考慮した、マルチ クラウド/メタル、低遅延ネットワーク
+ - マルチチェーンサーポート(Optimism、Arbitrum、Polygon 他 11 種以上)
+ - スピードと安定性を考慮したミドルレイヤー (コールルーティング、キャッシュ、インデックス作成)
+ - Webhook によるスマートコントラクト・モニタリング
+ - 直感的なダッシュボード、分析スイート、RPC コンポーザー
+ - 高度なセキュリティ機能 (JWT、マスキング、ホワイトリスト)
+ - NFT データと分析 API
+ - [SOC2 認証](https://www.quicknode.com/security)
+ - デベロッパーからエンタープライズまで適する
+- [**Rivet**](https://rivet.cloud/)
+ - [ドキュメント](https://rivet.readthedocs.io/en/latest/)
+ - 機能
+ - 無料ティアオプション
+ - 従量課金制
+- [**SenseiNode**](https://senseinode.com)
+ - [ドキュメント](https://docs.senseinode.com/)
+ - 機能
+ - 専用ノードと共有ノード
+ - ダッシュボード
+ - ラテンアメリカの様々な地域で、AWS 外の複数のホスティングプロバイダーを使ったホスティング
+ - Prysm と Lighthouse クライアント
+- [**SettleMint**](https://console.settlemint.com/)
+ - [ドキュメント](https://docs.settlemint.com/)
+ - 機能
+ - 無料トライアル
+ - 従量課金制
+ - GraphQL サポート
+ - RPC と WSS エンドポイント
+ - 専用フルノード
+ - BYOC (Bring your own cloud、クラウド持ち込み)
+ - 分析ツール
+ - ダッシュボード
+ - 時間課金制
+ - ダイレクトサポート
+- [**Watchdata**](https://watchdata.io/)
+ - [ドキュメント](https://docs.watchdata.io/)
+ - 機能
+ - データの信頼性
+ - ダウンタイムがなく、途切れない接続
+ - プロセスの自動化
+ - 無料プラン
+ - 高制限でどのユーザーにも適する
+ - 様々なノードに対応
+ - リソーススケーリング
+ - 高速処理速度
+- [**ZMOK**](https://zmok.io/)
+ - [ドキュメント](https://docs.zmok.io/)
+ - 機能
+ - サービス化の先駆者
+ - 検索/フィルタリング機能があるグローバルトランザクションメンプール
+ - トランザクション送信のトランザクションフィーとガス代の制限なし
+ - 新規ブロックの最速の取得とブロックチェーンの読み取り
+ - API 呼び出しあたりのベストプライス保証
+
+## 参考文献 {#further-reading}
+
+- [イーサリアムノードサービスの一覧](https://ethereumnodes.com/)
+
+## 関連トピック {#related-topics}
+
+- [ノードとクライアント](/developers/docs/nodes-and-clients/)
+
+## 関連チュートリアル {#related-tutorials}
+
+- [Alchemy を使用したイーサリアム開発入門](/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/)
+- [Web3 と Alchemy を使用したトランザクションの送信ガイド](/developers/tutorials/sending-transactions-using-web3-and-alchemy/)
diff --git a/src/content/translations/ja/developers/docs/nodes-and-clients/run-a-node/index.md b/src/content/translations/ja/developers/docs/nodes-and-clients/run-a-node/index.md
new file mode 100644
index 00000000000..c72bf5b0431
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/nodes-and-clients/run-a-node/index.md
@@ -0,0 +1,471 @@
+---
+title: 自分のイーサリアムノードの立ち上げ
+description: イーサリアムクライアントを自分のインスタンスで立ち上げる一般的な手順
+lang: ja
+sidebarDepth: 2
+---
+
+自分自身のノードを立ち上げ、運用することは、さまざまなメリットがあります。新しい可能性が開かれ、エコシステムのサポートへの貢献にもつながります。 このページは、自分のノードを立ち上げ、イーサリアムのトランザクション検証に参加する方法について説明します。
+
+[マージ](/upgrades/merge)以降、イーサリアムノードの運用には、**実行レイヤー(EL)**クライアントと**コンセンサスレイヤー(CL)**クライアントの 2 つが必要であることに注意してください。 このページでは、この 2 つのクライアントをインストール、設定、接続してイーサリアムノードを立ち上げる方法を紹介します。
+
+## 前提知識 {#prerequisites}
+
+イーサリアムノードが何か、なぜクライアントを実行するのかに関する理解が必要です。 これらについては、[ノードとクライアント](/developers/docs/nodes-and-clients/)に記載されています。
+
+初めてノードを運用する方や、あまり技術的な知識が必要でない方法をお探しの方は、まず[イーサリアムノードの運用](/run-a-node)というユーザーフレンドリーな説明を確認してください。
+
+## アプローチの選択 {#choosing-approach}
+
+ノードを立ち上げる最初のステップは、アプローチを選ぶことです。 要件やさまざまな可能性に基づき、クライアントの実装(実行クライアントとコンセンサスクライアント両方)、環境(ハードウェア、システム)、クライアント設定のパラメータを選択する必要があります。
+
+本ページではこれらについて説明し、あなたにとって最適なイーサリアムインスタンスの実行方法を見つけるサポートをします。
+
+クライアントを選択する上で、メインネット対応している利用可能なすべての[実行クライアント](/developers/docs/nodes-and-clients/#execution-clients)と[コンセンサスクライアント](/developers/docs/nodes-and-clients/#consensus-clients)を確認し、[クライアントの多様性](/developers/docs/nodes-and-clients/client-diversity)について理解を深めてください。
+
+クライアントの[要件](#requirements)を確認し、ソフトウェアを[自分のハードウェア、またはクラウド上で実行](#local-vs-cloud)するかを決めます。
+
+環境を整えたら、[初心者向けのインターフェース](#automatized-setup)か、高度なオプションが使用できるターミナルを使った[手動](#manual-setup)かを選び、クライアントをインストールします。
+
+ノードが実行して同期が取れたら、使用する準備が整いますが、メンテナンスには常に意識を向ける必要があります。
+
+![クライアントのセットアップ](./diagram.png)
+
+### 環境とハードウェア {#environment-and-hardware}
+
+#### ローカルまたはクラウド {#local-vs-cloud}
+
+イーサリアムクライアントは、コンシューマーグレードのコンピュータで動作します。マイニング専用マシンのような特別なハードウェアは必要ありません。 そのため、ノードのデプロイメントには、ニーズに合わせた様々なオプションがあります。 簡単にするため、ローカルの物理マシンとクラウドサーバの両方でノードを実行することしましょう。
+
+- クラウド
+ - プロバイダーは高可用性のサーバと静的なパブリック IP アドレスを提供
+ - 専用または仮想サーバを構築するよりも容易に利用可能
+ - サードパーティであるサーバプロバイダーを信頼しなければならないトレードオフが発生
+ - フルノードに必要なストレージ容量により、レンタルサーバの価格が高くなることがある
+- 自分のハードウェア
+ - トラストレスで主権的なアプローチ
+ - 1 回限りの投資
+ - 事前設定された専用マシンを購入することも可能
+ - マシンやネットワークの物理的な準備、メンテナンス、トラブルシューティングが必要
+
+どちらの選択肢も、上記のような異なるメリットがあります。 従来型のクラウドコンピューティングプロバイダに加えて、クラウドソリューションを探している場合は、ノードのデプロイに焦点を当てたサービスもあります。 例:
+
+- [QuikNode](https://www.quiknode.io/)
+- [BlockDaemon](https://blockdaemon.com)
+- [Alchemy](https://www.alchemy.com/)
+
+ホスティングされたノードのオプションについては、[ノード・アズ・ア・サービス](/developers/docs/nodes-and-clients/nodes-as-a-service/)も参照してください。
+
+#### ハードウェア {#hardware}
+
+しかし、検閲耐性をもつ分散型ネットワークは、クラウドプロバイダに依存すべきではありません。 クラウドではなく、ローカルハードウェア上でノードを実行することが、エコシステムにとってより健全となります。 [推計](https://www.ethernodes.org/networkType/Hosting)によると、クラウド上で動作するノードの割合が多く、単一障害点となる可能性があることが示唆されています。
+
+イーサリアムクライアントは、デスクトップパソコン、ノートパソコン、サーバ、あるいはシングルボードコンピュータ上で動作させることができます。 パーソナルコンピュータでクライアントを実行することも可能ですが、ノード専用マシンを用意することで、プライマリコンピュータへの影響を最小限に抑えながら、パフォーマンスとセキュリティを大幅に向上させることができます。
+
+自分のハードウェアの使用は非常に簡単です。 シンプルなオプションだけでなく、より技術的な方向けの高度なセットアップ方法も多数用意されています。 それでは、自分自身のマシンでイーサリアムクライアントを実行するための要件と方法を見てみましょう。
+
+#### 必要条件 {#requirements}
+
+ハードウェア要件はクライアントによって異なりますが、ノードは同期を維持する必要があるだけなので、通常、要件はそれほど高くありません。 より多くの計算能力を必要とするマイニングと混同しないでください。 ただし、より強力なハードウェアでは同期時間とパフォーマンスは改善します。
+
+クライアントをインストールする前に、コンピュータに十分なリソースがあることを確認してください。 最小システム要件と推奨システム要件は以下のとおりです。
+
+ハードウェアのボトルネックは、主にディスク容量です。 イーサリアムブロックチェーンの同期は、非常に多くの入出力を必要とし、多くのディスクスペースが必要です。 同期後も数百 GB の空き容量を確保できる、ソリッド・ステート・ドライブ(SSD)を用意することをお勧めします。
+
+データベースのサイズと初期同期の速度は、選択したクライアント、設定、[同期戦略](/developers/docs/nodes-and-clients/#sync-modes)によって異なります。
+
+また、インターネット接続が[帯域幅の上限](https://wikipedia.org/wiki/Data_cap)により制限されていないことを確認してください。 ネットワークにブロードキャストされたデータが制限を超える可能性があるため、従量非制限の接続を使用することをお勧めします。
+
+##### オペレーティングシステム {#operating-system}
+
+すべてのクライアントは、Linux、MacOS、Windows などの主要なオペレーティングシステムに対応しています。 自分に最適なオペレーティングシステム(OS)を使って、通常のデスクトップまたはサーバマシンでノードを実行できます。 潜在的な問題やセキュリティの脆弱性を回避するために、お使いの OS が最新の状態になっていることを確認してください。
+
+##### 最小システム要件 {#minimum-requirements}
+
+- CPU: デュアルコア以上
+- RAM 8GB
+- ディスク空き容量 700GB
+- 帯域幅 10MB/秒以上
+
+##### 推奨される仕様 {#recommended-hardware}
+
+- 高速 CPU クアッドコア以上
+- RAM 16GB 以上
+- 高速 SSD 1TB 以上
+- 帯域幅 25MB/秒以上
+
+選択した同期モードとクライアントによって必要容量が変わります。以下に各クライアントに必要なディスク容量の概算を記載します。
+
+| クライアント | ディスクサイズ(スナップ同期) | ディスクサイズ(フルアーカイブ) |
+| ------------ | ---------------------------- | ------------------------------ |
+| Geth | 500GB 以上 | 12TB 以上 |
+| Nethermind | 500GB 以上 | 12TB 以上 |
+| Besu | 800GB 以上 | 12TB 以上 |
+| Erigon | N/A | 2.5TB 以上 |
+
+- 注: エリゴンにはスナップ同期はありませんが、フルプルーニングが可能(約 500GB)
+
+コンセンサスクライアントには、必要な容量はクライアントの実装や有効にした機能(バリデータスラッシャーなど)によって変わりますが、概ねビーコンデータ用にさらに 200GB を必要とします。 多数のバリデータを実行すると、帯域幅への負荷も大きくなります。 こちらの分析に、[コンセンサスクライアントの要件詳細](https://medium.com/@migalabs/analysis-of-ethereum-2-consensus-clients-dfede8e0145e)が記載されています。
+
+#### プラグ・アンド・プレイ・ソリューション {#plug-and-play}
+
+自分のハードウェアでノードを実行するのに最も簡単な方法は、プラグ・アンド・プレイ・ボックスを使用することです。 事前設定されたマシンを使うと、注文、接続、実行と最も簡単に実行することができます。 何もかもが事前設定されており、自動実行され、直感的なガイドとダッシュボードでソフトウェアを監視・制御できます。
+
+- [DappNode](https://dappnode.io/)
+- [Avado](https://ava.do/)
+
+#### シングルボードコンピュータ {#ethereum-on-a-single-board-computer}
+
+Raspberry Pi のような ARM アーキテクチャを持つシングルボードコンピュータを使用すると、イーサリアムノードを簡単かつ安価に実行できます。 [Ethereum on ARM](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/)は、Raspberry Pi やその他の ARM ボード向けに、実行クライアントとコンセンサスクライアントが容易に実行できるイメージを複数提供しています。
+
+これらのようなデバイスは、小型、価格が手頃、効率が良く、自宅でノードを運用するのに理想的な反面、性能には限界があることに留意してください。
+
+## ノードの立ち上げ {#spinning-up-node}
+
+実際のクライアント設定は、自動ランチャーを使うか、または手動で直接設定できます。
+
+上級者でない場合は、ランチャー(インストールをガイドし、クライアントのセットアッププロセスを自動化するソフトウェア)を使用することをお勧めします。 とはいえ、ターミナルの使用経験があれば、手動設定は簡単です。
+
+### ガイド付き設定 {#automatized-setup}
+
+複数プロジェクトが、クライアント設定のユーザーエクスペリエンスの向上を目指しています。 ランチャーはクライアントのインストールと設定を自動的に行います。クライアントのガイド付きセットアップと監視用にグラフィック・インターフェイスを提供しているランチャーもあります。
+
+数回クリックするだけでクライアントをインストールし、制御できる便利なプロジェクトを下記に紹介します。
+
+- [DappNode](https://docs.dappnode.io/get-started/installation/custom-hardware/installation/overview/) - DappNode はベンダーからのマシンだけに提供されているのではなく、 ノードランチャーやコントロールセンターのソフトウェアは多くの機能があり、任意のハードウェアで使用可能。
+- [eth-docker](https://eth-docker.net/docs/About/Overview/) - Docker を使った自動設定は、簡単で安全なステーキングに焦点を当てており、ターミナルと Docker の基本的な知識が必要。少し上級のユーザー向け。
+- [Stereum](https://stereum.net/ethereum-node-setup/) - SSH 接続でリモートサーバにクライアントをインストールするためのランチャー。GUI セットアップガイド、コントロールセンター、その他多くの機能搭載。
+- [NiceNode](https://www.nicenode.xyz/) - コンピュータ上でノードを実行するためのランチャー。分かりやすいユーザーエクスペリエンスが特徴。 クライアントを選択し、数回クリックするだけで開始可能。 現在、開発中。
+
+### 手動でのクライアント設定 {#manual-setup}
+
+もう一つのオプションは、手動でクライアントソフトウェアをダウンロードし、確認・設定することです。 グラフィック・インターフェイスを提供しているクライアントはありますが、手動設定はターミナルの基本的なスキルが必要となりますが、はるかに汎用性があります。
+
+前述したように、自分のイーサリアムノードを立ち上げるには、コンセンサスクライアントと実行クライアントをペアで実行する必要があります。 一部のクライアントには、他の種類のライトクライアントが含まれいるものがあり、それ以外のソフトウェアを必要とせず同期します。 しかし、完全にトラストレスな検証にはコンセンサスクライアントと実行クライアントの両方が必要です。
+
+#### クライアントソフトウェアの取得 {#getting-the-client}
+
+まず、希望する[実行クライアント](/developers/docs/nodes-and-clients/#execution-clients)と[コンセンサスクライアント](/developers/docs/nodes-and-clients/#consensus-clients)ソフトウェアを取得する必要があります。
+
+オペレーティングシステムとアーキテクチャに適した、実行可能なアプリケーションやインストールパッケージをダウンロードするだけです。 必ず、ダウンロードしたパッケージの署名とチェックサムを確認してください。 インストールやアップデートを簡単にするためのリポジトリや Docker イメージを提供するクライアントもあります。 クライアントはすべてオープンソースなので、ソースからビルドすることもできます。 これはより高度な方法ですが、場合によっては必要な場合があります。
+
+クライアントごとの手順は、上記のクライアントリストにリンクされているドキュメントに記載されています。
+
+ここでは、ビルド済みのバイナリやインストール方法が掲載されているクライアントのリリースページを紹介します。
+
+##### 実行クライアント {#execution-clients}
+
+- [Besu](https://github.com/hyperledger/besu/releases)
+- [Erigon](https://github.com/ledgerwatch/erigon#usage) (ビルド済みのバイナリを提供していないためコンパイル要)
+- [Geth](https://geth.ethereum.org/downloads/)
+- [Nethermind](https://downloads.nethermind.io/)
+
+また、クライアントの多様性は[実行レイヤーで問題](/developers/docs/nodes-and-clients/client-diversity/#execution-layer)となっていることにも注意が必要です。 マイノリティの実行クライアントの運用を検討することをお勧めします。
+
+##### コンセンサスクライアント {#consensus-clients}
+
+- [Lighthouse](https://github.com/sigp/lighthouse/releases/latest)
+- [Lodestar](https://chainsafe.github.io/lodestar/install/source/) (ビルド済みのバイナリを提供していないため、Docker イメージを使用またはソースからビルド)
+- [Nimbus](https://github.com/status-im/nimbus-eth2/releases/latest)
+- [Prysm](https://github.com/prysmaticlabs/prysm/releases/latest)
+- [Teku](https://github.com/ConsenSys/teku/releases)
+
+[クライアントの多様性](/developers/docs/nodes-and-clients/client-diversity/)は、バリデータを実行しているコンセンサスノードにとって重要です。 マジョリティのバリデータが単一のクライアントを実行していると、ネットワークのセキュリティが危険にさらされます。 そのため、マイノリティクライアントを選択することをお勧めします。
+
+[最新のネットワーククライアントの使用状況](https://clientdiversity.org/)を参照し、[クライアントの多様性](/developers/docs/nodes-and-clients/client-diversity)についてご覧ください。
+
+##### ソフトウェアの検証 {#verifying-the-software}
+
+インターネットからソフトウェアをダウンロードする場合は、ダウンロードしたファイルの完全性を検証することをお勧めします。 このステップは任意ですが、特にイーサリアムクライアントのような重要なインフラストラクチャの一部では、潜在的な攻撃ベクトルを認識し、回避することが重要です。 ビルド済みのバイナリをダウンロードした場合、それを信頼する必要がありますが、攻撃者が実行ファイルを悪意のあるものにすり替えるというリスクがあります。
+
+デベロッパーはリリースしたバイナリに、デベロッパーの PGP キーで署名しているためめ、デベロッパーが作ったソフトウェアそのものを間違いなく実行していることを暗号的に検証できます。 デベロッパーが使用した公開鍵は、クライアントのリリースページやドキュメントに記載されており、そこから入手できます。 リリースされているクライアントと署名をダウンロードした後、[GnuPG](https://gnupg.org/download/index.html)などの PGP 実装を使って、簡単に検証できます。 [Linux](https://www.tecmint.com/verify-pgp-signature-downloaded-software/)または[Windows/MacOS](https://freedom.press/training/verifying-open-source-software/)の`gpg`を使って、オープンソースソフトウェアを検証するチュートリアルを確認してください。
+
+ダウンロードしたソフトウェアを検証するもう 1 つの方法としては、ハッシュが(一意の暗号論的指紋)、デベロッパーによって提供されたものと一致するかどうかを確認することです。 これは PGP を使うよりもさらに簡単で、ハッシュだけを提供するクライアントもあります。 ダウンロードしたソフトウェアに対しハッシュ関数を実行し、リリースページに載っているものと比較してください。 例:
+
+```
+sha256sum teku-22.6.1.tar.gz
+
+9b2f8c1f8d4dab0404ce70ea314ff4b3c77e9d27aff9d1e4c1933a5439767dde
+```
+
+#### クライアントのセットアップ {#client-setup}
+
+クライアントソフトウェアのインストール、ダウンロード、またはコンパイルが完了したら、実行する準備が整い、 あとは適切な設定を行うだけです。 クライアントは豊富な設定オプションを提供しており、様々な機能を有効化できます。
+
+まずは、クライアントのパフォーマンスやデータ使用量に大きく影響するオプションから紹介します。 [同期モード](/developers/docs/nodes-and-clients/#sync-modes)とは、ブロックチェーンデータのダウンロードと検証のさまざまな方法を表します。 ノードを開始する前に、使用するネットワークと同期モードを決める必要があります。 考慮すべき最も重要なことは、クライアントに必要なディスク容量と同期時間です。 どの同期モードがデフォルトであるかをクライアントのドキュメントで確認してください。 デフォルトの同期モードが適切でなければ、セキュリティレベル、利用可能なデータ、およびコストに基づいて別の同期モードを選択します。 同期アルゴリズムとは別に、さまざまな種類の古いデータをプルーニングすることもできます。 プルーニングは、最近のブロックから利用できない状態ツリーノードなど、古いデータを削除します。
+
+その他の基本設定オプションは、例えば ネットワークの選択(メインネットまたはテストネット)、RPC または WebSocket などの HTTP エンドポイントの有効化などです。 クライアントのドキュメントには、すべての機能とオプションが載っています。 CLI (コマンドラインインターフェース)または設定ファイルに直接、対応するフラグを指定してクライアントを実行することで、さまざまなクライアント設定ができます。 各クライアントによって多少異なりますので、設定オプションの詳細については、公式ドキュメントまたはヘルプページを必ず参照してください。
+
+テストのため、テストネットの 1 つでクライアントを実行することを推奨します。 詳しくは、[対応ネットワークの概要](/developers/docs/nodes-and-clients/#execution-clients)を参照してください。
+
+基本設定による実行クライアントの実行例は、次のセクションに記載されています。
+
+#### 実行クライアントの開始 {#starting-the-execution-client}
+
+イーサリアムクライアントソフトウェアを開始する前に、環境の準備ができているか最終チェックをしてください。 以下の事項などを確認してください。
+
+- 選択したネットワークと同期モードを考慮した十分なディスク容量があること。
+- メモリと CPU が他のプログラムによって停止されないこと。
+- オペレーティングシステムが最新バージョンに更新されていること。
+- システムが正しい時刻と日付になっていること。
+- ルーターとファイアウォールは、リスニングポートの接続を受け付けること。 デフォルトでは、イーサリアムクライアントはリスナー (TCP) ポートとディスカバリー(UDP)ポートを使用し、ポート番号はともに 30303 がデフォルト。
+
+最初にテストネットでクライアントを実行して、すべてが正常に動作していることを確認します。
+
+最初にデフォルトではないクライアントを設定する必要があります。 フラグまたは設定ファイルを使って、希望の設定に変更できます。 各クライアントにより機能や設定構文は異なります。 具体的な内容については、お使いのクライアントのドキュメントを確認してください。
+
+実行クライアントとコンセンサスクライアントは、[Engine API](https://github.com/ethereum/execution-apis/tree/main/src/engine)で指定された認証済みエンドポイントを介して通信します。 実行クライアントはコンセンサスクライアントに接続するために、既知のパスで[`jwtsecret`](https://jwt.io/)を生成する必要があります。 セキュリティと安定性の理由から、両方のクライアントは同じマシン上で実行する必要があり、ローカル RPC 接続で相互に認証するので、両方のクライアントがこのパスを知っていなければなりません。 また、実行クライアントは認証された API のリスニングポートを定義する必要があります。
+
+このトークンはクライアントソフトウェアによって自動的に生成されます。場合によっては、自分で作成することもあります。 [OpenSSL](https://www.openssl.org/)を使って生成できます。
+
+```
+openssl rand -hex 32 > jwtsecret
+```
+
+#### 実行クライアントの開始 {#running-an-execution-client}
+
+このセクションでは、実行クライアントの開始について説明します。 あくまでも基本的な設定例となりますが、以下の設定でクライアントを起動します。
+
+- この例では、メインネットに接続するネットワークを指定
+ - [テストネット](/developers/docs/networks/)のいずれか 1 つを選択して、セットアップの予備テストも実行可
+- ブロックチェーンを含むすべてのデータが格納されるデータディレクトリを定義
+ - パスは必ず実際のものに変更する(例: 外付けドライブのディレクトリの指定など)
+- クライアントと通信するためのインターフェイスを有効化
+ - コンセンサスクライアントとの通信で利用する JSON RPC と Engine API を含む
+- API 認証で使う`jwtsecret`のパスを定義
+ - 例えば、`/tmp/jwtsecret`など、クライアントがアクセス可能な実際のパスにする
+
+これは基本的な例であることに注意してください。それ以外の設定はすべてデフォルトになっています。 各クライアントのドキュメントをよく読み、デフォルト、設定、機能について学びましょう。 バリデータの実行、モニタリングなど、その他の機能の詳細については、各クライアントのドキュメントを参考にしてください。
+
+> 注意: 例のバックスラッシュ`\`は見やすさのために記載しており、設定フラグは 1 行で定義できます。
+
+##### Besu の実行
+
+この例では、メインネットで Besu を起動し、ブロックチェーンデータをデフォルトフォーマットで`/data/ethereum`に保存し、コンセンサスクライアントへの接続のために JSON RPC と Engine RPC を有効にしています。 Engine API は、トークン`jwtsecret`で認証され、`localhost`からのみ呼び出しが許可されます。
+
+```
+besu --network=mainnet \
+ --data-path=/data/ethereum \
+ --rpc-http-enabled=true \
+ --engine-rpc-enabled=true \
+ --engine-host-allowlist="*" \
+ --engine-jwt-enabled=true \
+ --engine-jwt-secret=/path/to/jwtsecret
+```
+
+Besu には、一連の質問に答えることで設定ファイルを生成できるランチャーオプションもあります。 対話型ランチャーを実行するには、以下の通りです。
+
+```
+besu --Xlauncher
+```
+
+[Besu のドキュメント](https://besu.hyperledger.org/en/latest/HowTo/Get-Started/Starting-node/)で、追加のオプションと設定の詳細を参照してください。
+
+##### Erigon の実行
+
+この例では、Erigon をメインネットで起動、ブロックチェーンデータを`/data/ethereum`に保存、JSON RPC を有効化、許可するネームスペースを定義、また`jwtsecret`パスで定義されるコンセンサスクライアントへの接続認証を有効にしています。
+
+```
+erigon --chain mainnet \
+ --datadir /data/ethereum \
+ --http --http.api=engine,eth,web3,net \
+ --authrpc.jwtsecret=/path/to/jwtsecret
+```
+
+Erigon はデフォルトで 8GB の HDD でフル同期を行い、アーカイブデータは 2TB 以上となります。 `datadir`が十分な空き容量のあるディスクを指していることを確認するか、さまざまな種類のデータを削除する`--prune`フラグを検討してください。 詳細については、Erigon の`--help`オプションを参照してください。
+
+##### Geth の実行
+
+この例では、Geth をメインネットで起動、ブロックチェーンデータを`/data/ethereum`に保存、JSON RPC を有効化、許可するネームスペースを定義しています。 また、コンセンサスクライアントに接続するための認証を有効化し、認証に必要な`jwtsecret`を定義し、許可する接続のオプションも合わせて(この例では`localhost`からのみ)定義しています。
+
+```
+geth --mainnet \
+ --datadir "/data/ethereum" \
+ --http --http.api="eth,web3,net" \
+ --authrpc.vhosts="localhost" \
+ --authrpc.jwtsecret=/path/to/jwtsecret
+```
+
+[すべての設定オプションのドキュメント](https://geth.ethereum.org/docs/interface/command-line-options)と[コンセンサスクライアントと Geth を実行する方法](https://geth.ethereum.org/docs/interface/consensus-clients)を参照してください。
+
+##### Nethermind の実行
+
+Nethermind は、様々な[インストールオプション](https://docs.nethermind.io/nethermind/first-steps-with-nethermind/getting-started)を提供しています。 ガイド付きセットアップ機能を備えたランチャーを含むさまざまなバイナリがパッケージに含まれており、インタラクティブに設定できます。 あるいは、実行ファイルそのものであるランナーもあり、設定フラグを付けて実行することもできます。 JSON RPC はデフォルトで有効になっています。
+
+```
+Nethermind.Runner --config mainnet \
+ --datadir /data/ethereum \
+ --JsonRpc.JwtSecretFile=/path/to/jwtsecret
+```
+
+Nethermind は、Nethermind とコンセンサスクライアントを実行するための[完全ガイド](https://docs.nethermind.io/nethermind/first-steps-with-nethermind/running-nethermind-post-merge)を提供しています。
+
+実行クライアントはコア機能と選択されたエンドポイントを開始し、ピアを探し始めます。 ピアが正常に見つかった後、クライアントは同期を開始します。 実行クライアントは、コンセンサスクライアントからの接続を待機します。 クライアントが正常に現在の状態に同期されると、現在のブロックチェーンデータが利用可能になります。
+
+#### コンセンサスクライアントの開始 {#starting-the-consensus-client}
+
+実行クライアントへのローカル RPC 接続を確立させために、コンセンサスクライアントを正しいポート設定で起動する必要があります。 コンセンサスクライアントは、公開した実行クライアントのポートを引数に設定して実行する必要があります。
+
+コンセンサスクライアントは、RPC 接続を認証するために実行クライアントの`jwt-secret`へのパスも必要です。 上記の実行例と同様に、各コンセンサスクライアントは、jwt トークンファイルパスを引数とする設定フラグを持っています。 これは実行クライアントに使われる`jwtsecret`のパスと一致しなければなりません。
+
+バリデータを運用する予定がある場合は、フィーを受け取るイーサリアムアドレスを指定する設定フラグを必ず追加してください。 これはバリデータのイーサ報酬が蓄積されるアドレスになります。 各コンセンサスクライアントは、例えば`--suggested-fee-recipient=0xabcd1`のように、イーサリアムアドレスを引数に取るオプションがあります。
+
+テストネットでビーコンノードを起動する場合、[チェックポイント同期](https://notes.ethereum.org/@launchpad/checkpoint-sync)にパブリックエンドポイントを使用すると、同期時間が大幅に短縮されます。
+
+#### コンセンサスクライアントの実行
+
+##### Lighthouse の実行
+
+Lighthouse を実行する前に、[Lighthouse Book](https://lighthouse-book.sigmaprime.io/installation.html)でインストールと設定方法の詳細を参照してください。
+
+```
+lighthouse beacon_node
+ --network mainnet \
+ --datadir /data/ethereum \
+ --http \
+ --execution-endpoint http://127.0.0.1:8551 \
+ --execution-jwt /path/to/jwtsecret \
+```
+
+##### Lodestar の実行
+
+Lodestar ソフトウェアをコンパイルするか、Docker イメージをダウンロードしてインストールしてください。 詳細については、[ドキュメント](https://chainsafe.github.io/lodestar/)、およびより包括的な[セットアップガイド](https://hackmd.io/@philknows/rk5cDvKmK)を参照してください。
+
+```
+lodestar beacon \
+ --rootDir="/data/ethereum" \
+ --network=mainnet \
+ --eth1.enabled=true \
+ --execution.urls="http://127.0.0.1:8551" \
+ --jwt-secret="/path/to/jwtsecret"
+```
+
+##### Nimbus の実行
+
+Nimbus には、コンセンサスクライアントと実行クライアントの両方が含まれています。 Nimbus は計算能力の低いデバイスでも実行できます。 [必要なものと Nimbus 自体のインストール後](https://nimbus.guide/quick-start.html)、コンセンサスクライアントを実行できます。
+
+```
+nimbus_beacon_node \
+ --network=mainnet \
+ --web3-url=http://127.0.0.1:8551 \
+ --rest \
+ --jwt-secret="/path/to/jwtsecret"
+```
+
+##### Prysm の実行
+
+Prysm には、簡単に自動インストールできるスクリプトがあります。 詳細については、[Prysm ドキュメント](https://docs.prylabs.network/docs/install/install-with-script)を参照してください。
+
+```
+./prysm.sh beacon-chain \
+ --mainnet
+ --datadir /data/ethereum \
+ --execution-endpoint=http://localhost:8551 \
+ --jwt-secret=/path/to/jwtsecret
+```
+
+##### Teku の実行
+
+```
+teku --network mainnet \
+ --data-path "/data/ethereum" \
+ --ee-endpoint http://localhost:8551 \
+ --ee-jwt-secret-file "/path/to/jwtsecret" \
+```
+
+コンセンサスクライアントが実行クライアントに接続し、デポジットコントラクトを読み込みバリデータを識別します。また、他のビーコンノードのピアにも接続し、ジェネシスブロック(最初のブロック)からコンセンサススロットの同期を開始します。 ビーコンノードが現在のエポックに達すると、ビーコン API がバリデータで使用できるようになります。 詳細については、[ビーコンノード API](https://eth2docs.vercel.app/)を参照してください。
+
+### バリデータの追加 {#adding-validators}
+
+コンセンサスクライアントは、バリデータが接続するビーコンノードとして機能します。 各コンセンサスクライアントは、それぞれのバリデータ・ソフトウェアを搭載しています。詳細については、各ドキュメントに記載されています。
+
+自分でバリデータを実行すると、[ソロステーキング](https://ethereum.org/en/staking/solo/)ができます。これはイーサリアムネットワークをサポートする上で、最も影響があり、トラストレスな方法です。 しかし、これには 32 ETH のデポジットが必要になります。 より少ない金額で自分のノードでバリデータを実行するには、[Rocket Pool](https://rocketpool.net/node-operators)など、パーミッションレスなノードオペレータの分散型プールに関心を持つかもしれません。
+
+ステーキングとバリデータのキー生成の最も簡単な方法は、[Goerli テストネット・ステーキングランチパッド](https://goerli.launchpad.ethereum.org/)を使うことです。これにより、[Goerli でノードを実行](https://notes.ethereum.org/@launchpad/goerli)し、自分のセットアップをテストすることができます。 メインネットへの準備ができたら、今度は[メインネット・ステーキングランチパッド](https://launchpad.ethereum.org/)を使って、同じ手順を繰り返します。
+
+ステーキングオプションの概要については、[ステーキング](/staking)ページをご覧ください。
+
+### ノードの使用 {#using-the-node}
+
+実行クライアントは、トランザクションの送信、イーサリアムネットワーク上のスマートコントラクトとの対話やデプロイなど、様々な用途で使用可能な[RPC API エンドポイント](/developers/docs/apis/json-rpc/)を提供します。
+
+- 適切なプロトコルで手動呼び出し(例: `curl`)
+- 指定したコンソールの接続(例: `geth attach`)
+- Web3 ライブラリを用いたアプリケーションへの実装(例: [web3.py](https://web3py.readthedocs.io/en/stable/overview.html#overview)、[ethers](https://github.com/ethers-io/ethers.js/))
+
+クライアントが異なれば、RPC エンドポイントの実装も異なります。 しかし、すべてのクライアントで使用できる標準的な JSON-RPC があります。 概要については、[JSON-RPC ドキュメント](/developers/docs/apis/json-rpc/)を参照してください。 イーサリアムネットワークからの情報を必要とするアプリケーションは、この RPC を使用できます。 例えば、人気のウォレットである MetaMask では、[自分自身の RPC エンドポイントに接続](https://metamask.zendesk.com/hc/en-us/articles/360015290012-Using-a-Local-Node)することができ、プライバシーとセキュリティに大きな利点があります。
+
+コンセンサスクライアントは、すべて[Beacon API](https://ethereum.github.io/beacon-APIs)を公開しており、これを利用してコンセンサスクライアントの状態を確認したり、[Curl](https://curl.se)などのツールを使ってリクエストを送り、ブロックやコンセンサスデータをダウンロードすることができます。 これに関する詳細については、各コンセンサスクライアントのドキュメントを参照してください。
+
+#### RPC への接続 {#reaching-rpc}
+
+実行クライアントの JSON-RPC デフォルトポートは`8545`ですが、設定でローカルエンドポイントのポート番号を変更できます。 デフォルトでは、RPC インターフェイスはコンピュータのローカルホストからのみアクセス可能です。 リモートからアクセスできるようにするには、アドレスを`0.0.0.0`に変更し、パブリックに公開することができます。 これにより、ローカルネットワークおよびパブリック IP アドレスで接続可能になります。 ほとんどの場合、ルーターでポート転送も設定する必要があります。
+
+インターネットにポートを公開するアプローチは、インターネット上の誰でもノードをコントロールできるようになるため、注意が必要です。 悪意のある者がノードにアクセスしてシステムをダウンさせたり、クライアントをウォレットとして使用している場合は、資金が盗まれる可能性があります。
+
+これを回避するには、危険性のある RPC メソッドを変更できないようにすることです。 例えば、Geth の場合、フラグで変更可能なメソッドを明示することができます。`--http.api web3,eth,txpool`.
+
+RPC インターフェイスへのアクセスは、エッジレイヤー API の開発、もしくは Nginx のようなウェブサーバアプリケーションからクライアントのローカルアドレスやポートに接続することで拡張できます。 デベロッパーは、ミドルレイヤーを活用することで、RPC インターフェースへセキュアな`https`接続用の証明書を設定することもできます。
+
+ノードの RPC エンドポイントへのアクセスを付与する方法は、ウェブサーバ、プロキシ、または外向けの REST API の設定だけではありません。 別の方法として、独自の[Tor](https://www.torproject.org/)オニオンサービス上でノードをホストすると、プライバシーを保護しつつ、パブリックからアクセス可能なエンドポイントを設定することができます。 これにより、静的なパブリック IP アドレスやオープンポートを使用せずに、ローカルネットワーク外から RPC に到達できます。 ただし、Tor ネットワークはすべてのアプリケーションでサポートされているわけではなく、接続問題が発生する可能性があるネットワーク経由からのみ、RPC エンドポイントがアクセス可能になることに注意してください。
+
+これを行うには、自身の[オニオンサービス](https://community.torproject.org/onion-services/)を作成する必要があります。 自分自身のオニオンサービスをセットアップするには、[ドキュメント](https://community.torproject.org/onion-services/setup/)を参照してください。 RPC ポートへのプロキシを使って Web サーバを指すか、直接 RPC を指すことができます。
+
+最後に、最も一般的な VPN を使って、内部ネットワークへのアクセスを提供することもできます。 ユースケースとノードへアクセスが必要なユーザーの人数にもよりますが、安全な VPN 接続は選択肢の一つとなります。 [OpenVPN](https://openvpn.net/)は、フル機能の SSL VPN です。OSI レイヤー 2 やレイヤー 3 の安全なネットワーク拡張機能を実装し、業界標準の SSL/TLS プロトコルを使います。また、証明書ベースの柔軟なクライアント認証方法もサポートしており、スマートカード認証またはユーザ名/パスワード認証の組み合わせも可能で、ユーザーやグループ固有のアクセスコントロールポリシーをファイヤーウォールルールを使い VPN の仮想インターフェースに適用できます。
+
+### ノードの運用 {#operating-the-node}
+
+ノードが正常に動作するように、定期的に監視する必要があります。 時折メンテナンスが必要になる場合があります。
+
+#### ノードのオンライン状態の維持 {#keeping-node-online}
+
+ノードが常時オンラインになっている必要はありませんが、ネットワークと同期させるためにできるだけオンラインにしておく必要があります。 シャットダウンして再起動することもできますが、以下の点に留意してください。
+
+- 最新の状態をディスクに書き込みれ中の場合は、シャットダウンには数分程度かかることがある。
+- 強制シャットダウンを行うと、データベースに損傷を与え、ノード全体の再同期が必要になることがある。
+- クライアントはネットワークとの同期が解除され、再起動時に再同期が必要。 ノードは最後にシャットダウンされたところから同期を開始できるが、オフラインになっていた時間に応じて処理時間が増加。
+
+*これはコンセンサスレイヤーのバリデータノードには適用されません。*ノードをオフラインにすると、ノードに依存するすべてのサービスに影響を及ぼします。 *ステーキング*目的でノードを実行している場合は、可能な限りダウンタイムを最小限に抑えるようにしてください。
+
+#### クライアントサービスの作成 {#creating-client-services}
+
+起動時にクライアントを自動起動するサービスを作成することを検討してください。 例えば、Linux サーバでは`systemd`などでサービスを作成し、権限が制限されたユーザーの下で、適切な設定でクライアントを実行し、自動的に再起動するように作成するのが最善の方法でしょう。
+
+#### クライアントの更新 {#updating-clients}
+
+クライアントソフトウェアを最新のセキュリティパッチ、機能、 [EIP](/eips/)で、最新の状態に保つ必要があります。 特に、[ハードフォーク](/history/)の前に、正しいクライアントバージョンを実行していることを確認してください。
+
+> 重要なネットワーク更新の前には、イーサリアム・ファウンデーション(EF)の[ブログ](https://blog.ethereum.org)で投稿されます。 [これらのお知らせを購読する](https://groups.google.com/a/ethereum.org/g/announcements)ことで、ノードの更新が必要なときにメールで通知を受け取ることができます。
+
+クライアントの更新は非常に簡単です。 各クライアントのドキュメントに具体的な手順が記載されていますが、一般的には最新版をダウンロードし、新しい実行ファイルを使ってクライアントを再起動するだけです。 アップデートが適用され、クライアントは前回終了したところから再開するはずです。
+
+各クライアントは、ピアツーピアプロトコルで使用される人間が判読できるバージョン文字列を持っていますが、コマンドラインからもアクセスできます。 このバージョン文字列を使って、ユーザーは自分が正しいバージョンを実行していることを確認でき、ブロックエクスプローラーやその他の分析ツールは、ネットワーク上で特定のクライアントの分散を定量化します。 バージョン文字列の詳細については、個々のクライアントのドキュメントを参照してください。
+
+#### その他のサービスの実行 {#running-additional-services}
+
+自分でノードを実行すると、イーサリアムクライアント RPC に直接アクセスを必要とするサービスを利用できます。 これらは[レイヤー 2 ソリューション](/developers/docs/scaling/#layer-2-scaling)、ウォレットのバックエンド、ブロックエクスプローラー、デベロッパーツール、その他のイーサリアムインフラストラクチャのようなイーサリアム上に構築されたサービスです。
+
+#### ノードの監視 {#monitoring-the-node}
+
+ノードを適切に監視するために、メトリクスの収集を検討してください。 クライアントが提供するメトリクス・エンドポイントから、ノードに関する包括的なデータを取得できます。 [InfluxDB](https://www.influxdata.com/get-influxdb/)や[Prometheus](https://prometheus.io/) のようなツールを使用して、データベースを作成でき、[Grafana](https://grafana.com/)のようなソフトウェアで視覚化やグラフ化ができます。 このソフトウェアを使用するための多くのセットアップと、ノードとネットワーク全体を視覚化するためのさまざまな Grafana ダッシュボードがあります。 一例として、[Geth の監視に関するグチュートリアル](/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/)を参照してください。
+
+モニタリングの一環として、必ずマシンのパフォーマンスを監視してください。 ノードの初期の同期中、クライアントソフトウェアは CPU と RAM に非常に大きな負荷がかかる場合があります。 Grafana に加えて、OS が提供する`htop`や`uptime`などのツールを使用して監視を行うこともできます。
+
+## 参考文献 {#further-reading}
+
+- [イーサリアムステーキングガイド](https://github.com/SomerEsat/ethereum-staking-guides) _– Somer Esat、頻繁に更新_
+- [ガイド|イーサリアムメインネットでステーキングをするためのバリデータのセットアップ方法](https://www.coincashew.com/coins/overview-eth/guide-or-how-to-setup-a-validator-on-eth2-mainnet) _CoinCashew、定期的に更新_
+- [ETHStaker によるテストネットでのバリデータ運用ガイド](https://github.com/remyroy/ethstaker#guides) - _ETHStaker、定期的に更新_
+- [イーサリアムステーキングガイド](https://github.com/SomerEsat/ethereum-staking-guides) _– Somer Esat、定期的に更新_
+- [ノード運用者向けのマージに関するよくある質問](https://notes.ethereum.org/@launchpad/node-faq-merge) - _2022 年 7 月_
+- [イーサリアムのフル検証ノードになるためのハードウェア要件の分析](https://medium.com/coinmonks/analyzing-the-hardware-requirements-to-be-an-ethereum-full-validated-node-dc064f167902) _– Albert Palau、2018 年 9 月 24 日_
+- [イーサリアムフルノードの運用: 完全ガイド](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _2019 年 11 月 7 日 - Justin Leroux_
+- [イーサリアムノードの運用](https://docs.ethhub.io/using-ethereum/running-an-ethereum-node/) _– ETHHub、頻繁に更新_
+- [イーサリアムメインネットでハイパーレジャー Besu ノードの運用: メリット・要件・セットアップ](https://pegasys.tech/running-a-hyperledger-besu-node-on-the-ethereum-mainnet-benefits-requirements-and-setup/) _– Felipe Faraggi、2020 年 5 月 7 日_
+- [モニタリングスタックで Nethermind イーサリアムクアイアントのデプロイ](https://medium.com/nethermind-eth/deploying-nethermind-ethereum-client-with-monitoring-stack-55ce1622edbd) _– Nethermind.eth、2020 年 7 月 8 日_
+
+## 関連トピック {#related-topics}
+
+- [ノードとクライアント](/developers/docs/nodes-and-clients/)
+- [ブロック](/developers/docs/blocks/)
+- [ネットワーク](/developers/docs/networks/)
diff --git a/src/content/translations/ja/developers/docs/programming-languages/dart/index.md b/src/content/translations/ja/developers/docs/programming-languages/dart/index.md
new file mode 100644
index 00000000000..c60260a521d
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/programming-languages/dart/index.md
@@ -0,0 +1,28 @@
+---
+title: Dartデベロッパーのためのイーサリアム
+description: Dart言語を使用してイーサリアムを開発する方法を学ぶ
+lang: ja
+incomplete: true
+---
+
+## スマートコントラクトと Solidity を使い始める {#getting-started-with-smart-contracts-and-solidity}
+
+## チュートリアル {#tutorials}
+
+- [Flutter とブロックチェーン – Hello World dapp](https://www.geeksforgeeks.org/flutter-and-blockchain-hello-world-dapp/)で、開始手順を段階的に説明しています。
+ 1. [Truffle 開発スイート](https://www.trufflesuite.com/)をインストールする
+ 2. [Solidity](https://soliditylang.org/)でスマートコントラクトを記述する
+ 3. Dart でユーザーインターフェースを記述する
+- [Flutter を使用したモバイル dapp の構築](https://medium.com/dash-community/building-a-mobile-dapp-with-flutter-be945c80315a)は、より簡潔な説明となっています。すでに基礎を理解している場合は、こちらを参照することをお勧めします。
+- ビデオでの学習をご希望の場合は、[初めてのブロックチェーン Flutter アプリの構築](https://www.youtube.com/watch?v=3Eeh3pJ6PeA)をご覧いただけます。このビデオは約 1 時間です。
+- 時間がない場合は、[イーサリアムでの Flutter と Dart を使用したブロックチェーンの分散型アプリの構築](https://www.youtube.com/watch?v=jaMFEOCq_1s)をご覧ください。このビデオはわずか 20 分です。
+- [Flutter アプリケーションへの MetaMask の統合](https://youtu.be/8qzVDje3IWk) - この短いビデオでは、Flutter アプリケーションに MetaMask を統合する手順を段階的に説明しています。
+
+## イーサリアムクライアントの操作 {#working-with-ethereum-clients}
+
+イーサリアムを使用して、仮想通貨とブロックチェーン技術の利点を活用した分散型アプリケーション (「dapp」) を作成します。 現在、少なくとも、Dart でイーサリムの[JSON RPC API](/developers/docs/apis/json-rpc/)が利用できるライブラリが 2 つメンテナンスされています。
+
+1. [sionbutler.eu の Web3dart](https://pub.dev/packages/web3dart)
+1. [darticulate.com の Ethereum 5.0.0](https://pub.dev/packages/ethereum)
+
+特定のイーサリアムアドレスの操作やさまざまな仮想通貨の価格の取得を可能にする、追加のライブラリもあります。 完全なリストについては、[こちら](https://pub.dev/dart/packages?q=ethereum)をご覧ください。
diff --git a/src/content/translations/ja/developers/docs/programming-languages/delphi/index.md b/src/content/translations/ja/developers/docs/programming-languages/delphi/index.md
new file mode 100644
index 00000000000..5824c768d2f
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/programming-languages/delphi/index.md
@@ -0,0 +1,56 @@
+---
+title: Delphiデベロッパーのためのイーサリアム
+description: Delphiプログラミング言語を使用してイーサリアムを開発する方法を学ぶ
+lang: ja
+incomplete: true
+---
+
+
+
+Delphi プログラミング言語を使用してイーサリアムを開発する方法を学ぶ
+
+
+
+イーサリアムを使用して、暗号通貨とブロックチェーン技術の利点を利用した分散型アプリケーション (Dapp) を作成します。 dapp は、信頼性の高いアプリケーションです。つまり、イーサリアムにデプロイした後は、常にプログラムしたとおりに動作します。 デジタル資産を制御して、新たなタイプの金融アプリケーションを作成できます。 また、分散化できるため、単一のエンティティや個人は制御できず、検閲はほぼ不可能であることを意味します。
+
+分散型アプリケーションをイーサリアム上に構築し、Delphi プログラミング言語を使用してスマートコントラクトとのやり取りを行えます。
+
+## スマートコントラクトと Solidity を使い始める {#getting-started-with-smart-contracts-and-the-solidity-language}
+
+**Delphi をイーサリアムに統合するための最初のステップを踏み出してみましょう。**
+
+先に基礎を学習したい場合は、 [ethereum.org/learn](/learn/)または[ethereum.org/developers](/developers/)をご確認ください。
+
+- [ブロックチェーンの説明](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
+- [スマートコントラクトを理解する](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [初めてのスマートコントラクトを記述する](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [Solidity のコンパイルとデプロイの方法を学ぶ](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
+
+## 初級者向けの参考文献とリンク {#beginner-references-and-links}
+
+**Delphereum ライブラリの紹介**
+
+- [Delphereum とは](https://github.com/svanas/delphereum/blob/master/README.md)
+- [Delphi をローカル (メモリ内) ブロックチェーンに接続する](https://medium.com/@svanas/connecting-delphi-to-a-local-in-memory-blockchain-9a1512d6c5b0)
+- [Delphi をイーサリアムメインネットに接続する](https://medium.com/@svanas/connecting-delphi-to-the-ethereum-main-net-5faf1feffd83)
+- [Delphi をスマートコントラクトに接続する](https://medium.com/@svanas/connecting-delphi-to-smart-contracts-3146b12803a1)
+
+**セットアップをスキップして、そのままサンプルに進みますか?**
+
+- [3 分でわかるスマートコントラクトと Delphi - Part 1](https://medium.com/@svanas/a-3-minute-smart-contract-and-delphi-61d998571d)
+- [3 分でわかるスマートコントラクトと Delphi - Part 2](https://medium.com/@svanas/a-3-minute-smart-contract-and-delphi-part-2-446925faa47b)
+
+## 中級者向けの記事 {#intermediate-articles}
+
+- [Delphi でイーサリアム署名されたメッセージ署名を生成する](https://medium.com/@svanas/generating-an-ethereum-signed-message-signature-in-delphi-75661ce5031b)
+- [Delphi を使用して Ether を送金する](https://medium.com/@svanas/transferring-ether-with-delphi-b5f24b1a98a4)
+- [Delphi を使用して ERC-20 トークンを送金する](https://medium.com/@svanas/transferring-erc-20-tokens-with-delphi-bb44c05b295d)
+
+## 高度な使用パターン {#advanced-use-patterns}
+
+- [Delphi とイーサリアム名サービス (ENS)](https://medium.com/@svanas/delphi-and-ethereum-name-service-ens-4443cd278af7)
+- [QuikNode、イーサリアム、Delphi](https://medium.com/@svanas/quiknode-ethereum-and-delphi-f7bfc9671c23)
+- [Delphi とイーサリアムの暗い森](https://svanas.medium.com/delphi-and-the-ethereum-dark-forest-5b430da3ad93)
+- [Delphi でトークンを別のトークンにスワップする](https://svanas.medium.com/swap-one-token-for-another-in-delphi-bcb999c47f7)
+
+もっとリソースをお探しですか? [ethereum.org/developers](/developers/)をご確認ください。
diff --git a/src/content/translations/ja/developers/docs/programming-languages/dot-net/index.md b/src/content/translations/ja/developers/docs/programming-languages/dot-net/index.md
new file mode 100644
index 00000000000..4ac21eac54c
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/programming-languages/dot-net/index.md
@@ -0,0 +1,86 @@
+---
+title: .NETデベロッパーのためのイーサリアム
+description: .NETベースのプロジェクトとツールを使ってイーサリアムの開発方法を学ぶ
+lang: ja
+incomplete: true
+---
+
+.NETベースのプロジェクトとツールを使ってイーサリアムの開発方法を学ぶ
+
+イーサリアムを使用して、仮想通貨とブロックチェーン技術のメリットを活用した分散型アプリケーション (「dapp」) を作成します。 dapp は、信頼性の高いアプリケーションです。つまり、イーサリアムにデプロイした後は、常にプログラムしたとおりに動作します。 デジタル資産を制御して、新たなタイプの金融アプリケーションを作成できます。 また、分散化できるため、単一のエンティティや個人は制御できず、検閲はほぼ不可能であることを意味します。
+
+Microsoft のテクノロジースタックのツールと言語を使用して、イーサリアム上に分散型アプリケーションを構築し、スマートコントラクトとやり取りできます。.NET Framework/.NET Core/.NET Standard にまたがり、VSCode と Visual Studio などのツールにより、C#、# Visual Basic、.NET、F#をサポートしています。 Microsoft Azure Blockchain を使用して、Azure 上にイーサリアムブロックチェーンを数分でデプロイできます。 イーサリアムに.NET の愛を届けよう!
+
+## スマートコントラクトと Solidity 言語を使い始める {#getting-started-with-smart-contracts-and-the-solidity-language}
+
+**.NET をイーサリアムに統合するための最初のステップを踏み出してみましょう。**
+
+先に基礎を学習したい場合は、 [ethereum.org/learn](/learn/)または[ethereum.org/developers](/developers/)をご確認ください。
+
+- [ブロックチェーンの説明](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
+- [スマートコントラクトを理解する](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [初めてのスマートコントラクトを記述する](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [Solidity のコンパイルとデプロイの方法を学ぶ](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
+
+## 初級者向けの参照文献とリンク {#beginner-references-and-links}
+
+**Nethereum ライブラリと VS Code Solidity の紹介**
+
+- [Nethereum 入門](https://docs.nethereum.com/en/latest/getting-started/)
+- [VS Code Solidity のインストール](https://marketplace.visualstudio.com/items?itemName=JuanBlanco.solidity)
+- [イーサリアムスマートコントラクトを作成して呼び出すための.NET デベロッパーのワークフロー](https://medium.com/coinmonks/a-net-developers-workflow-for-creating-and-calling-ethereum-smart-contracts-44714f191db2)
+- [Nethereum とのスマートコントラクトの統合](https://kauri.io/#collections/Getting%20Started/smart-contracts-integration-with-nethereum/#smart-contracts-integration-with-nethereumm)
+- [.NET およびイーサリアムブロックチェーンのスマートコントラクトと Nethereum との間のインターフェース](https://medium.com/my-blockchain-development-daily-journey/interfacing-net-and-ethereum-blockchain-smart-contracts-with-nethereum-2fa3729ac933) ([中文版](https://medium.com/my-blockchain-development-daily-journey/%E4%BD%BF%E7%94%A8nethereum%E9%80%A3%E6%8E%A5-net%E5%92%8C%E4%BB%A5%E5%A4%AA%E7%B6%B2%E5%8D%80%E5%A1%8A%E9%8F%88%E6%99%BA%E8%83%BD%E5%90%88%E7%B4%84-4a96d35ad1e1)も参照)
+- [Nethereum - ブロックチェーン用のオープンソース.NET 統合ライブラリ](https://kauri.io/#collections/a%20hackathon%20survival%20guide/nethereum-an-open-source-.net-integration-library/)
+- [Nethereum を使用した SQL データベースへのイーサリアムトランザクションの記述](https://medium.com/coinmonks/writing-ethereum-transactions-to-sql-database-using-nethereum-fd94e0e4fa36)
+- [C#と Visual Studio を使用してイーサリアムスマートコントラクトを簡単にデプロイする方法](https://koukia.ca/deploy-ethereum-smart-contracts-using-c-and-visualstudio-5be188ae928c)
+
+**セットアップをスキップして、そのままサンプルに進みますか?**
+
+- [Playground](http://playground.nethereum.com/) - ブラウザを介してイーサリアムとやり取りし、Nethereum の使用方法を学ぶ
+ - アカウント残高のクエリ [C#](http://playground.nethereum.com/csharp/id/1001) [VB.NET](http://playground.nethereum.com/vb/id/2001)
+ - ERC20 スマートコントラクトの残高のクエリ [C#](http://playground.nethereum.com/csharp/id/1005) [VB.NET](http://playground.nethereum.com/vb/id/2004)
+ - アカウントへの Ether の送金 [C#](http://playground.nethereum.com/csharp/id/1003) [VB.NET](http://playground.nethereum.com/vb/id/2003)
+ - ... などなど!
+
+## 中級者向けの記事 {#intermediate-articles}
+
+- [Nethereum のワークブックとサンプルリスト](http://docs.nethereum.com/en/latest/Nethereum.Workbooks/docs/)
+- [独自の開発テストチェーンをデプロイする](https://github.com/Nethereum/Testchains)
+- [Solidity のための VS Code コード生成プラグイン](https://docs.nethereum.com/en/latest/nethereum-codegen-vscodesolidity/)
+- [Unity とイーサリアム: なぜ、そして、どうやって?](https://www.raywenderlich.com/5509-unity-and-ethereum-why-and-how)
+- [イーサリアム dapp 用の ASP.NET Core Web API の作成](https://tech-mint.com/blockchain/create-asp-net-core-web-api-for-ethereum-dapps/)
+- [Nethereum Web3 を使用したサプライチェーントラッキングシステムの実装](http://blog.pomiager.com/post/using-nethereum-web3-to-implement-a-supply-chain-traking-system4)
+- [Nethereum のブロック処理](https://nethereum.readthedocs.io/en/latest/nethereum-block-processing-detail/)と[C# Playground でのサンプル](http://playground.nethereum.com/csharp/id/1025)
+- [Nethereum の Websocket ストリーミング](https://nethereum.readthedocs.io/en/latest/nethereum-subscriptions-streaming/)
+- [Kaleido と Nethereum](https://kaleido.io/kaleido-and-nethereum/)
+- [Quorum と Nethereum](https://github.com/Nethereum/Nethereum/blob/master/src/Nethereum.Quorum/README.md)
+
+## 高度なユースケース {#advanced-use-patterns}
+
+- [Azure Key Vault と Nethereum](https://github.com/Azure-Samples/bc-community-samples/tree/master/akv-nethereum)
+- [Nethereum.DappHybrid](https://github.com/Nethereum/Nethereum.DappHybrid)
+- [Ujo Nethereum のバックエンドリファレンスアーキテクチャ](https://docs.nethereum.com/en/latest/nethereum-ujo-backend-sample/)
+
+## .NET プロジェクト、ツール、その他 {#dot-net-projects-tools-and-other-fun-stuff}
+
+- [Nethereum Playground](http://playground.nethereum.com/) - _ブラウザでの Nethereum コードスニペットのコンパイル、作成、実行_
+- [Nethereum Codegen Blazor](https://github.com/Nethereum/Nethereum.CodeGen.Blazor) - _Blazor の UI を使用した Nethereum のコード生成_
+- [Nethereum Blazor](https://github.com/Nethereum/NethereumBlazor) - _.NET Wasm の SPA ライトブロックチェーンエクスプローラーとシンプルなウォレット_
+- [Wonka Business Rules Engine](https://docs.nethereum.com/en/latest/wonka/) - _本質的にメタデータ駆動型の (.NET プラットフォームとイーサリアムプラットフォームの両方のための) ビジネスルールエンジン。_
+- [Nethermind](https://github.com/NethermindEth/nethermind) - _Linux、Windows、MacOS 用の.NET Core イーサリアムクライアント_
+- [eth-utils](https://github.com/ethereum/eth-utils/) - _イーサリアム関連のコードベースを操作するためのユーティリティ関数_
+- [TestChains](https://github.com/Nethereum/TestChains) - _高速応答のための事前設定済みの.NET 開発チェーン (PoA)_
+
+もっとリソースをお探しですか? [ethereum.org/developers](/developers/)をご確認ください。
+
+## .NET コミュニティコントリビューター {#dot-net-community-contributors}
+
+Nethereum では、主に[Gitter](https://gitter.im/Nethereum/Nethereum)を活用しています。ここでは誰でも、質問、質問への回答、支援要請などを行えます。単なる雑談も歓迎です。 [Nethereum の Github リポジトリ](https://github.com/Nethereum)では、リクエストのプルや問題のオープンが可能です。参加者のサイドプロジェクトやサンプルプロジェクトを閲覧することもできます。 また、その他に[Discord](https://discord.gg/jQPrR58FxX)もご利用いただけます。
+
+Nethermind を初めて利用する際に支援が必要な場合は、[Discord](http://discord.gg/PaCMRFdvWT)にご参加ください。 デベロッパーが常駐しており、ご質問に回答します。 また、[Nethermind GitHub リポジトリ](https://github.com/NethermindEth/nethermind)でのリクエストのプルや問題のオープンも、いつでも行えます。
+
+## その他のリスト {#other-aggregated-lists}
+
+[Nethereum の公式サイト](https://nethereum.com/)
+[Nethermind の公式サイト](https://nethermind.io/)
diff --git a/src/content/translations/ja/developers/docs/programming-languages/golang/index.md b/src/content/translations/ja/developers/docs/programming-languages/golang/index.md
new file mode 100644
index 00000000000..5359918e53c
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/programming-languages/golang/index.md
@@ -0,0 +1,84 @@
+---
+title: Goデベロッパーのためのイーサリアム
+description: Goベースのプロジェクトとツールを使ってイーサリアムの開発方法を学ぶ
+lang: ja
+incomplete: true
+---
+
+Goベースのプロジェクトとツールを使ってイーサリアムの開発方法を学ぶ
+
+イーサリアムを使用して分散型アプリケーション (「dapp」) を作成します。 dapp は、信頼性の高いアプリケーションです。つまり、イーサリアムにデプロイした後は、常にプログラムしたとおりに動作します。 分散型であるため、ピアツーピアのネットワーク上で動作します。単一障害点はありません。 単一のエンティティや個人によって制御されず、検閲はほぼ不可能です。 デジタル資産を制御して、新たなタイプのアプリケーションを作成できます。
+
+## スマートコントラクトと Solidity を使い始める {#getting-started-with-smart-contracts-and-solidity}
+
+**Go をイーサリアムに統合するための最初のステップを踏み出してみましょう。**
+
+先に基礎を学習したい場合は、 [ethereum.org/learn](/learn/)または[ethereum.org/developers](/developers/)をご確認ください。
+
+- [ブロックチェーンの説明](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
+- [スマートコントラクトを理解する](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [初めてのスマートコントラクトを記述する](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [Solidity のコンパイルとデプロイの方法を学ぶ](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
+- [コントラクトのチュートリアル](https://github.com/ethereum/go-ethereum/wiki/Contract-Tutorial)
+
+## 初心者向けの記事と書籍 {#beginner-articles-and-books}
+
+- [イーサリアムクライアントの選択](https://www.trufflesuite.com/docs/truffle/reference/choosing-an-ethereum-client)
+- [Geth 入門](https://medium.com/@tzhenghao/getting-started-with-geth-c1a30b8d6458)
+- [Golang を使用してイーサリアムに接続する](https://www.youtube.com/watch?v=-7uChuO_VzM)
+- [Golang を使用してイーサリアムスマートコントラクトをデプロイする](https://www.youtube.com/watch?v=pytGqQmDslE)
+- [Go でのイーサリアムスマートコントラクトのテストとデプロイのための段階的ガイド](https://hackernoon.com/a-step-by-step-guide-to-testing-and-deploying-ethereum-smart-contracts-in-go-9fc34b178d78)
+- [eBook: Go を使用したイーサリアム開発](https://goethereumbook.org/) - _Go を使用してイーサリアムアプリケーションを開発する_
+
+## 中級者向けの記事とドキュメント {#intermediate-articles-and-docs}
+
+- [Go イーサリアムのドキュメント](https://geth.ethereum.org/docs/) - _公式のイーサリアムの Golang についてのドキュメント_
+- [Erigon のプログラマーガイド](https://github.com/ledgerwatch/erigon/blob/devel/docs/programmers_guide/guide.md) - _状態ツリー、マルチプルーフ、トランザクション処理などについて図示したガイド_
+- [Erigon とステートレスイーサリアム](https://youtu.be/3-Mn7OckSus?t=394) - _2020 年イーサリアムコミュニティカンファレンス (EthCC 3)_
+- [Erigon:イーサリアムクライアントの最適化](https://www.youtube.com/watch?v=CSpc1vZQW2Q) - _2018 年開発者会議 4_
+- [Go イーサリアム GoDoc](https://godoc.org/github.com/ethereum/go-ethereum)
+- [Go で Geth を使用して dapp を作成する](https://kauri.io/#collections/A%20Hackathon%20Survival%20Guide/creating-a-dapp-in-go-with-geth/)
+- [Golang と Geth を使用してイーサリアムプライベートネットワークで作業する](https://myhsts.org/tutorial-learn-how-to-work-with-ethereum-private-network-with-golang-with-geth.php)
+- [Go を使用してイーサリアム上で Solidity コントラクトの単体テストを行う](https://medium.com/coinmonks/unit-testing-solidity-contracts-on-ethereum-with-go-3cc924091281)
+- [Geth をライブラリとして使用するためのクイックリファレンス](https://medium.com/coinmonks/web3-go-part-1-31c68c68e20e)
+
+## 発展的なユースケース {#advanced-use-patterns}
+
+- [Geth のシミュレートされたバックエンド](https://kauri.io/#collections/An%20ethereum%20test%20toolkit%20in%20Go/the-geth-simulated-backend/#_top)
+- [イーサリアムと Quorum を使用したアズ・ア・サービス型のブロックチェーンアプリケーション](https://blockchain.dcwebmakers.com/blockchain-as-a-service-apps-using-ethereum-and-quorum.html)
+- [イーサリアムブロックチェーンアプリケーションにおける分散型ストレージ IPFS と Swarm](https://blockchain.dcwebmakers.com/work-with-distributed-storage-ipfs-and-swarm-in-ethereum.html)
+- [モバイルクライアント: ライブラリと InProc のイーサリアムノード](https://github.com/ethereum/go-ethereum/wiki/Mobile-Clients:-Libraries-and-Inproc-Ethereum-Nodes)
+- [ネイティブ dapp: イーサリアムコントラクトへの Go バインディング](https://github.com/ethereum/go-ethereum/wiki/Native-DApps:-Go-bindings-to-Ethereum-contracts)
+
+## Go のプロジェクトとツール {#go-projects-and-tools}
+
+- [Geth / Go イーサリアム](https://github.com/ethereum/go-ethereum) - _イーサリアムプロトコルの公式 Go 実装_
+- [Go イーサリアム コード分析](https://github.com/ZtesoftCS/go-ethereum-code-analysis) - _Go Ethereum のソースコードのレビューと分析_
+- [Erigon](https://github.com/ledgerwatch/erigon) - _Go イーサリアムの派生。アーカイブノードにフォーカスしており、より高速_
+- [Golem](https://github.com/golemfactory/golem) - _Golem はコンピューティングパワーのグローバル市場を創造している_
+- [Quorum](https://github.com/jpmorganchase/quorum) - _データプライバシーをサポートするイーサリアムの許可された実装_
+- [Prysm](https://github.com/prysmaticlabs/prysm) - _イーサリアム「Serenity」2.0 の Go 実装_
+- [Eth Tweet](https://github.com/yep/eth-tweet) - _分散型 Twitter: イーサリアムブロックチェーン上で稼動するマイクロブログサービス_
+- [Plasma MVP Golang](https://github.com/kyokan/plasma) - _Minimum Viable Plasma 仕様の Golang の実装と拡張_
+- [Open Ethereum Mining Pool](https://github.com/sammy007/open-ethereum-pool) - _オープンソースのイーサリアムマイニングプール_
+- [Ethereum HD Wallet](https://github.com/miguelmota/go-ethereum-hdwallet) - _Go イーサリアム HD ウォレットの派生_
+- [Multi Geth](https://github.com/multi-geth/multi-geth) - _多くの種類のイーサリアムネットワークをサポート_
+- [Geth ライトクライアント](https://github.com/zsfelfoldi/go-ethereum/wiki/Geth-Light-Client) - _ライトイーサリアムサブプロトコルの Geth 実装_
+- [イーサリアム Golang SDK](https://github.com/everFinance/goether) - _Golang でのシンプルなイーサリアムウォレットの実装とユーティリティ_
+
+もっとリソースをお探しですか? [ethereum.org/developers](/developers/)をご確認ください。
+
+## Go コミュニティコントリビューター {#go-community-contributors}
+
+- [Geth Discord](https://discordapp.com/invite/nthXNEv)
+- [Geth Gist](https://gitter.im/ethereum/go-ethereum)
+- [Gophers Slack](https://invite.slack.golangbridge.org/) - [#ethereum channel](https://gophers.slack.com/messages/C9HP1S9V2)
+- [StackExchange - Ethereum](https://ethereum.stackexchange.com/)
+- [Multi Geth Gitter](https://gitter.im/ethoxy/multi-geth)
+- [イーサリアム Gitter](https://gitter.im/ethereum/home)
+- [Geth ライトクライアント Gitter](https://gitter.im/ethereum/light-client)
+
+## その他のリスト {#other-aggregated-lists}
+
+- [素晴らしいイーサリアム](https://github.com/btomashvili/awesome-ethereum)
+- [Consensys: イーサリアムデベロッパーツールの決定版リスト](https://media.consensys.net/an-definitive-list-of-ethereum-developer-tools-2159ce865974) | [GitHub ソース](https://github.com/ConsenSys/ethereum-developer-tools-list)
diff --git a/src/content/translations/ja/developers/docs/programming-languages/index.md b/src/content/translations/ja/developers/docs/programming-languages/index.md
new file mode 100644
index 00000000000..5645a159d42
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/programming-languages/index.md
@@ -0,0 +1,29 @@
+---
+title: プログラミング言語
+description:
+lang: ja
+---
+
+よくある誤解は、イーサリアム上で構築を行うためには、デベロッパーが[スマートコントラクト](/developers/docs/smart-contracts/)を記述しなくてはならないというものです。 これは間違いです。 イーサリアムのネットワークとコミュニティの素晴らしさの一つは、ほぼどんなプログラミング言語であっても[参加](/community/)できることにあります。
+
+イーサリアムとそのコミュニティは、オープンソースを採用しています。 クライアントの実装、API、開発フレームワーク、テストツールなどのコミュニティプロジェクトは、さまざまな言語で記述されています。
+
+## 言語の選択 {#data}
+
+以下から使用したい開発言語を選択して、プロジェクト、リソース、仮想コミュニティを見つけられます。
+
+- [Dart デベロッパーのためのイーサリアム](/developers/docs/programming-languages/dart/)
+- [Delphi デベロッパーのためのイーサリアム](/developers/docs/programming-languages/delphi/)
+- [.NET デベロッパーのためのイーサリアム](/developers/docs/programming-languages/dot-net/)
+- [Go デベロッパーのためのイーサリアム](/developers/docs/programming-languages/golang/)
+- [Java デベロッパーのためのイーサリアム](/developers/docs/programming-languages/java/)
+- [JavaScript デベロッパーのためのイーサリアム](/developers/docs/programming-languages/javascript/)
+- [Python デベロッパーのためのイーサリアム](/developers/docs/programming-languages/python/)
+- [Ruby デベロッパーのためのイーサリアム](/developers/docs/programming-languages/ruby/)
+- [Rust デベロッパーのためのイーサリアム](/developers/docs/programming-languages/rust/)
+
+### 使いたい言語がサポートされていなかった場合 {#other-lang}
+
+上記以外のプログラミング言語について、リソースや仮想コミュニティへのリンクを追加したい場合は、[問題をオープンする](https://github.com/ethereum/ethereum-org-website/issues/new/choose)ことによって、新しいページをリクエストできます。
+
+現在サポートされていない言語でブロックチェーンのインタフェースのコードを記述したい場合は、[JSON-RPC インターフェース](/developers/docs/apis/json-rpc/)を使用してイーサリアムネットワークに接続できます。 このインターフェースは、TCP/IP を使用できるすべての言語で利用可能です。
diff --git a/src/content/translations/ja/developers/docs/programming-languages/java/index.md b/src/content/translations/ja/developers/docs/programming-languages/java/index.md
new file mode 100644
index 00000000000..bbdd1ff9836
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/programming-languages/java/index.md
@@ -0,0 +1,59 @@
+---
+title: Javaデベロッパーのためのイーサリアム
+description: Javaベースのプロジェクトとツールを使ってイーサリアムの開発方法を学ぶ
+lang: ja
+incomplete: true
+---
+
+Javaベースのプロジェクトとツールを使ってイーサリアムの開発方法を学ぶ
+
+イーサリアムを使用して、仮想通貨とブロックチェーン技術の利点を活用した分散型アプリケーション (「dapp」) を作成します。 dapp は、信頼性の高いアプリケーションです。つまり、イーサリアムにデプロイした後は、常にプログラムしたとおりに動作します。 デジタル資産を制御して、新たなタイプの金融アプリケーションを作成できます。 また、分散化できるため、単一のエンティティや個人は制御できず、検閲はほぼ不可能であることを意味します。
+
+## スマートコントラクトと Solidity を使い始める {#getting-started-with-smart-contracts-and-solidity}
+
+**Java をイーサリアムに統合するための最初のステップを踏み出してみましょう。**
+
+先に基礎を学習したい場合は、 [ethereum.org/learn](/learn/)または[ethereum.org/developers](/developers/)をご確認ください。
+
+- [ブロックチェーンの説明](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
+- [スマートコントラクトを理解する](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [初めてのスマートコントラクトを記述する](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [Solidity のコンパイルとデプロイの方法を学ぶ](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
+
+## イーサリアムクライアントの操作 {#working-with-ethereum-clients}
+
+2 つの主要な Java イーサリアムクライアントである[Web3j](https://github.com/web3j/web3j)とハイパーレジャー Besu の使用方法を学ぶ
+
+- [Java、Eclipse、Web3j を使用してイーサリアムクライアントに接続する](https://kauri.io/article/b9eb647c47a546bc95693acc0be72546/connecting-to-an-ethereum-client-with-java-eclipse-and-web3j)
+- [Java と Web3j を使用してイーサリアムアカウントを管理する](https://kauri.io/article/925d923e12c543da9a0a3e617be963b4/manage-an-ethereum-account-with-java-and-web3j)
+- [スマートコントラクトから Java Wrapper を生成する](https://kauri.io/article/84475132317d4d6a84a2c42eb9348e4b/generate-a-java-wrapper-from-your-smart-contract)
+- [イーサリアムスマートコントラクトとやり取りする](https://kauri.io/article/14dc434d11ef4ee18bf7d57f079e246e/interacting-with-an-ethereum-smart-contract-in-java)
+- [イーサリアムスマートコントラクトのイベントをリッスンする](https://kauri.io/article/760f495423db42f988d17b8c145b0874/listening-for-ethereum-smart-contract-events-in-java)
+- [Linux で Java イーサリアムクライアントである Besu (Pantheon) を使用する](https://kauri.io/article/276dd27f1458443295eea58403fd6965/using-pantheon-the-java-ethereum-client-with-linux)
+- [Java 統合テストでハイパーレジャー Besu (Pantheon) ノードを実行する](https://kauri.io/article/7dc3ecc391e54f7b8cbf4e5fa0caf780/running-a-pantheon-node-in-java-integration-tests)
+- [Web3j のチートシート]()
+
+## 中級者向けの記事 {#intermediate-articles}
+
+- [IPFS を使用して Java アプリケーションのストレージを管理する](https://kauri.io/article/3e8494f4f56f48c4bb77f1f925c6d926/managing-storage-in-a-java-application-with-ipfs)
+- [Web3j を使用して Java で ERC20 トークンを管理する](https://kauri.io/article/d13e911bbf624108b1d5718175a5e0a0/manage-erc20-tokens-in-java-with-web3j)
+- [Web3j トランザクションマネージャー](https://kauri.io/article/4cb780bb4d0846438d11885a25b6d7e7/web3j-transaction-managers)
+
+## 発展的なユースケース {#advanced-use-patterns}
+
+- [Eventeum を使用して Java スマートコントラクトのデータキャッシュを構築する](https://kauri.io/article/fe81ee9612eb4e5a9ab72790ef24283d/using-eventeum-to-build-a-java-smart-contract-data-cache)
+
+## Java のプロジェクトとツール {#java-projects-and-tools}
+
+- [ハイパーレジャー Besu (Pantheon) (イーサリアムクライアント)](https://docs.pantheon.pegasys.tech/en/stable/)
+- [Web3j (イーサリアムクライアントとやり取りするためのライブラリ)](https://github.com/web3j/web3j)
+- [Eventeum (イベントリスナー)](https://github.com/ConsenSys/eventeum)
+- [Mahuta (IPFS デベロッパーツール)](https://github.com/ConsenSys/mahuta)
+
+もっとリソースをお探しですか? [ethereum.org/developers](/developers/)をご確認ください。
+
+## Java コミュニティコントリビューター {#java-community-contributors}
+
+- [IO Builders](https://io.builders)
+- [Kauri](https://kauri.io)
+- [Besu HL チャット](https://chat.hyperledger.org/channel/besu)
diff --git a/src/content/translations/ja/developers/docs/programming-languages/javascript/index.md b/src/content/translations/ja/developers/docs/programming-languages/javascript/index.md
new file mode 100644
index 00000000000..93187b50009
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/programming-languages/javascript/index.md
@@ -0,0 +1,70 @@
+---
+title: JavaScriptデベロッパーのためのイーサリアム
+description: JavaScriptベースのプロジェクトとツールを使ってイーサリアムの開発方法を学ぶ
+lang: ja
+---
+
+JavaScript はイーサリアムのエコシステムで最も人気のある言語の 1 つです。 実際、できるだけ多くのイーサリアムの機能を JavaScript で実装することに注力している専門[チーム](https://github.com/ethereumjs)も存在しています。
+
+[スタックのすべてのレベル](/developers/docs/ethereum-stack/)で、JavaScript (または近似の言語) で記述できる機会があります。
+
+## イーサリアムとのやりとり {#interact-with-ethereum}
+
+### JavaScript API ライブラリ {#javascript-api-libraries}
+
+JavaScript でブロックチェーンへのクエリやトランザクションの送信などを行うための最も便利な方法は、[JavaScript API ライブラリ](/developers/docs/apis/javascript/)を使用することです。 このライブラリの API を使用すると、デベロッパーは[イーサリアムネットワークのノード](/developers/docs/nodes-and-clients/)と簡単にやり取りできます。
+
+このライブラリにより、イーサリアム上のスマートコントラクトとやり取りできるようになります。そのため、JavaScript のみで既存のコントラクトとやり取りできる dapp を構築することが可能になります。
+
+**以下をご参照ください。**
+
+- [Web3.js](https://web3js.readthedocs.io/)
+- [Ethers.js](https://docs.ethers.io/) - _JavaScript と TypeScript での完全なイーサリアムウォレットの実装とユーティリティを含む_
+
+### スマートコントラクト {#smart-contracts}
+
+独自のスマートコントラクトを作成したいと考えている JavaScript デベロッパーは、[Solidity](https://solidity.readthedocs.io)について熟知することをお勧めします。 これは最も人気のあるスマートコントラクト言語であり、構文的には JavaScript に似ているため、比較的簡単に習得できる可能性があります。
+
+詳細については、[スマートコントラクト](/developers/docs/smart-contracts/)をご確認ください。
+
+## プロトコルの理解 {#understand-the-protocol}
+
+### イーサリアム仮想マシン {#the-ethereum-virtual-machine}
+
+[イーサリアム仮想マシン](/developers/docs/evm/)の JavaScript 実装を利用できます。 これは、最新のフォークルールをサポートしています。 フォークルールとは、計画されたアップグレードの結果として EVM に加えられた変更のことです。
+
+イーサリアム仮想マシンは、さまざまな JavaScript パッケージに分かれています。これらのパッケージを調べることで、以下の項目について理解を深めることができます。
+
+- アカウント
+- ブロック
+- ブロックチェーン自体
+- トランザクション
+- その他
+
+これにより、アカウントのデータ構造などについて理解できるようになります。
+
+コードを読みたい場合は、イーサリアムドキュメントを通読するよりも、上記の JavaScript のほうが役立ちます。
+
+**モノリポを調べる**
+[`ethereumjs`](https://github.com/ethereumjs/ethereumjs-vm)
+
+### ノードとクライアント {#nodes-and-clients}
+
+開発中の Ethereumjs クライアントを利用できます。 これにより、理解できる言語でイーサリアムクライアントの動作について詳細に調査できます。
+
+**クライアントを調べる**
+[`ethereumjs`](https://github.com/ethereumjs/ethereumjs-client)
+
+## 他のプロジェクト {#other-projects}
+
+イーサリアムの JavaScript 界隈では、その他にも、以下を含めた多くのプロジェクトが進められています。
+
+- ウォレットユーティリティのライブラリ
+- イーサリアムのキーを生成、インポート、エクスポートするためのツール
+- `merkle-patricia-tree`の実装 - イーサリアムの技術仕様書で概説されているデータ構造
+
+[EthereumJS リポジトリ](https://github.com/ethereumjs)で、最も興味があるものについて詳細に調査してみてください。
+
+## 参考文献 {#further-reading}
+
+_役に立つコミュニティリソースをご存知の場合は、 このページを編集して追加してください。_
diff --git a/src/content/translations/ja/developers/docs/programming-languages/python/index.md b/src/content/translations/ja/developers/docs/programming-languages/python/index.md
new file mode 100644
index 00000000000..dc4d85cf96c
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/programming-languages/python/index.md
@@ -0,0 +1,88 @@
+---
+title: Pythonデベロッパーのためのイーサリアム
+description: Pythonベースのプロジェクトとツールを使ってイーサリアムの開発方法を学ぶ
+lang: ja
+incomplete: true
+---
+
+Pythonベースのプロジェクトとツールを使用してイーサリアムを開発する方法を学ぶ
+
+イーサリアムを使用して、仮想通貨とブロックチェーン技術の利点を活用した分散型アプリケーション (「dapp」) を作成します。 dapp は、信頼性の高いアプリケーションです。つまり、イーサリアムにデプロイした後は、常にプログラムしたとおりに動作します。 デジタル資産を制御して、新たなタイプの金融アプリケーションを作成できます。 また、分散化できるため、単一のエンティティや個人は制御できず、検閲はほぼ不可能であることを意味します。
+
+## スマートコントラクトと Solidity を使い始める {#getting-started-with-smart-contracts-and-solidity}
+
+**Python をイーサリアムに統合するための最初のステップを踏み出してみましょう。**
+
+先に基礎を学習したい場合は、 [ethereum.org/learn](/learn/)または[ethereum.org/developers](/developers/)をご確認ください。
+
+- [ブロックチェーンの説明](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
+- [スマートコントラクトを理解する](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [初めてのスマートコントラクトを記述する](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [Solidity のコンパイルとデプロイの方法を学ぶ](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
+
+## 初心者向けの記事 {#beginner-articles}
+
+- [Python デベロッパー向けのイーサリアムガイド](https://snakecharmers.ethereum.org/a-developers-guide-to-ethereum-pt-1/)
+- [Vyper を使用したスマートコントラクト入門](https://kauri.io/#collections/Getting%20Started/an-introduction-to-smart-contracts-with-vyper/)
+- [Python と Brownie を使用して独自の ERC20 トークンをデプロイする](https://betterprogramming.pub/python-blockchain-token-deployment-tutorial-create-an-erc20-77a5fd2e1a58)
+- [Python の Flask を使用したイーサリアムコントラクトの開発方法](https://medium.com/coinmonks/how-to-develop-ethereum-contract-using-python-flask-9758fe65976e)
+- [Web3.py 入門 - Python デベロッパーのためのイーサリアム](https://www.dappuniversity.com/articles/web3-py-intro)
+- [Python と web3.py を使用したスマートコントラクト関数の呼び出し方法](https://stackoverflow.com/questions/57580702/how-to-call-a-smart-contract-function-using-python-and-web3-py)
+
+## 中級者向けの記事 {#intermediate-articles}
+
+- [Python プログラマーのための dapp 開発](https://levelup.gitconnected.com/dapps-development-for-python-developers-f52b32b54f28)
+- [Python のイーサリアムインターフェースを作成する: その 1](https://hackernoon.com/creating-a-python-ethereum-interface-part-1-4d2e47ea0f4d)
+- [Python でのイーサリアムスマートコントラクト: 包括的ガイド](https://hackernoon.com/ethereum-smart-contracts-in-python-a-comprehensive-ish-guide-771b03990988)
+- [Brownie と Python を使用してスマートコントラクトをデプロイする](https://dev.to/patrickalphac/using-brownie-for-to-deploy-smart-contracts-1kkp)
+- [Brownie を使用して OpenSea で NFT を作成する](https://www.freecodecamp.org/news/how-to-make-an-nft-and-render-on-opensea-marketplace/)
+
+## 発展的なユースケース {#advanced-use-patterns}
+
+- [Python を使用したイーサリアムスマートコントラクトのコンパイル、デプロイ、呼び出し](https://yohanes.gultom.id/2018/11/28/compiling-deploying-and-calling-ethereum-smartcontract-using-python/)
+- [Slither を使用した Solidity スマートコントラクトの分析](https://kauri.io/#collections/DevOps/analyze-solidity-smart-contracts-with-slither/#analyze-solidity-smart-contracts-with-slither)
+- [ブロックチェーンのフィンテックチュートリアル: Python を使用した貸出と借入](https://blog.chain.link/blockchain-fintech-defi-tutorial-lending-borrowing-python/)
+
+## Python のプロジェクトとツール {#python-projects-and-tools}
+
+### 現在でもメンテナンスされているもの {#active}
+
+- [Web3.py](https://github.com/ethereum/web3.py) - _イーサリアムとやり取りするための Python ライブラリ_
+- [Vyper](https://github.com/ethereum/vyper/) - _EVM のための Python ライクなスマートコントラクト言語_
+- [Ape](https://github.com/ApeWorX/ape) - _パイソニスタ、データサイエンティスト、セキュリティプロフェッショナル向けのスマートコントラクト開発ツール_
+- [Brownie](https://github.com/eth-brownie/brownie) - _イーサリアムスマートコントラクトのデプロイ、テスト、やり取りを行うための Python フレームワーク_
+- [py-evm](https://github.com/ethereum/py-evm) - _イーサリアム仮想マシンの実装_
+- [eth-tester](https://github.com/ethereum/eth-tester) - _イーサリアムベースのアプリケーションをテストするためのツール_
+- [eth-utils](https://github.com/ethereum/eth-utils/) - _イーサリアム関連のコードベースを操作するためのユーティリティ関数_
+- [py-solc-x](https://pypi.org/project/py-solc-x/) - _solc Solidity コンパイラの Python ラッパー (Solidity 0.5x をサポート)_
+- [py-wasm](https://github.com/ethereum/py-wasm) - _WebAssembly インタプリタの Python 実装_
+- [pydevp2p](https://github.com/ethereum/pydevp2p) - _イーサリアムの P2P スタックの実装_
+- [pymaker](https://github.com/makerdao/pymaker) - _Maker コントラクトのための Python API_
+- [siwe](https://github.com/spruceid/siwe-py) - _Python のためのイーサリアムによるサインイン (siwe)_
+- [イーサリアムの統合のための Web3 DeFi](https://github.com/tradingstrategy-ai/web3-ethereum-defi) - _ERC-20、Uniswap、その他の一般的なプロジェクトのための、すぐに統合を行える Python パッケージ_
+
+### アーカイブ済み・メンテナンスされていないもの {#archived--no-longer-maintained}
+
+- [Trinity](https://github.com/ethereum/trinity) - _イーサリアム Python クライアント_
+- [Mamba](https://mamba.black) - _Vyper 言語で記述された、スマートコントラクトの記述、コンパイル、デプロイのためのフレームワーク_
+
+もっとリソースをお探しですか? [ethereum.org/developers](/developers/)をご確認ください。
+
+## Python ツールを使用したプロジェクト {#projects-using-python-tooling}
+
+以下のイーサリアムベースのプロジェクトでは、このページに記載されているツールを使用しています。 関連するオープンソースのリポジトリは、コード例や最善の方法として参照でき、役立ちます。
+
+- [Yearn Finance](https://yearn.finance/)と[Yearn Vault Contracts リポジトリ](https://github.com/yearn/yearn-vaults)
+- [Curve](https://curve.fi/)と[Curve のスマートコントラクトリポジトリ](https://github.com/curvefi/curve-contract)
+- [BadgerDAO](https://badger.com/)と[Brownie ツールチェーンを使用したスマートコントラクト](https://github.com/Badger-Finance/badger-system)
+- [Sushi](https://sushi.com/)による[Python を使用したべスティングコントラクトの管理とデプロイ](https://github.com/sushiswap/sushi-vesting-protocols)
+- Alpha Homora で有名な[Alpha Finance](https://alphafinance.io/)による[Brownie を使用したスマートコントラクトのテストとデプロイ](https://github.com/AlphaFinanceLab/alpha-staking-contract)
+
+## Python コミュニティディスカッション {#python-community-contributors}
+
+- [イーサリアム Python コミュニティの Discord](https://discord.gg/9zk7snTfWe) Web3.py やその他の Python フレームワークについてのディスカッションを行う場所
+- [Vyper Discord](<[https://discord.gg/9zk7snTfWe](https://discord.gg/SdvKC79cJk)>) Vyper スマートコントラクトのプログラミングについてのディスカッションを行う場所
+
+## その他のリスト {#other-aggregated-lists}
+
+Vyper wiki には、[Vyper のための充実したリソースのリスト](https://github.com/ethereum/vyper/wiki/Vyper-tools-and-resources)があります。
diff --git a/src/content/translations/ja/developers/docs/programming-languages/ruby/index.md b/src/content/translations/ja/developers/docs/programming-languages/ruby/index.md
new file mode 100644
index 00000000000..005a9924deb
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/programming-languages/ruby/index.md
@@ -0,0 +1,61 @@
+---
+title: Rubyデベロッパーのためのイーサリアム
+description: Rubyベースのプロジェクトとツールを使ってイーサリアムの開発方法を学びます。
+lang: ja
+incomplete: false
+---
+
+Rubyベースのプロジェクトとツールを使用してイーサリアムの開発方法を学びます。
+
+イーサリアムを使用して、仮想通貨とブロックチェーン技術の利点を活用した分散型アプリケーション (「dapp」) を作成します。 dapp は、信頼性の高いアプリケーションです。つまり、イーサリアムにデプロイした後は、常にプログラムしたとおりに動作します。 デジタル資産を制御して、新たなタイプの金融アプリケーションを作成できます。 また、分散化できるため、単一のエンティティや個人は制御できず、検閲はほぼ不可能であることを意味します。
+
+## スマートコントラクトと Solidity を使い始める {#getting-started-with-smart-contracts-and-solidity}
+
+**Ruby をイーサリアムに統合するための最初のステップを踏み出してみましょう。**
+
+先に基礎を学習したい場合は、 [ethereum.org/learn](/learn/)または[ethereum.org/developers](/developers/)をご確認ください。
+
+- [ブロックチェーンの説明](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
+- [スマートコントラクトを理解する](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [初めてのスマートコントラクトを記述する](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [Solidity のコンパイルとデプロイの方法を学ぶ](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
+
+## 初心者向けの記事 {#beginner-articles}
+
+- [いよいよイーサリアムアカウントを理解する](https://dev.to/q9/finally-understanding-ethereum-accounts-1kpe)
+- [いよいよ MetaMask を使用して Rails Users を認証する](https://dev.to/q9/finally-authenticating-rails-users-with-metamask-3fj)
+- [イーサリアムによるサインイン - Ruby ライブラリと Rails のサンプルリリース](https://blog.spruceid.com/sign-in-with-ethereum-ruby-library-release-and-rails-examples/)
+- [Ruby を使用してイーサリアムネットワークに接続する方法](https://www.quicknode.com/guides/web3-sdks/how-to-connect-to-the-ethereum-network-using-ruby)
+- [Ruby で新しいイーサリアムアドレスを生成する方法](https://www.quicknode.com/guides/web3-sdks/how-to-generate-a-new-ethereum-address-in-ruby)
+
+## 中級者向けの記事 {#intermediate-articles}
+
+- [Ruby を使用したブロックチェーンアプリケーション](https://www.nopio.com/blog/blockchain-app-ruby/)
+- [イーサリアムに接続された Ruby を使用した、スマートコントラクトの実行](https://titanwolf.org/Network/Articles/Article?AID=87285822-9b25-49d5-ba2a-7ad95fff7ef9)
+
+## Ruby プロジェクトとツール {#ruby-projects-and-tools}
+
+### 現在でもメンテナンスされているもの {#active}
+
+- [eth.rb](https://github.com/q9f/eth.rb) - _イーサリアムアカウント、メッセージ、トランザクションを扱うための Ruby ライブラリと RPC クライアント_
+- [keccak.rb](https://github.com/q9f/keccak.rb) - _イーサリアムによって使用される Keccak (SHA3) ハッシュ_
+- [siwe-ruby](https://github.com/spruceid/siwe-ruby) - _イーサリアムによるサインインの Ruby 実装_
+- [siwe_rails](https://github.com/spruceid/siwe_rails) - _siwe ローカルサインインのルートを追加する Rails gem_
+- [siwe-rails-examples](https://github.com/spruceid/siwe-rails-examples) - _カスタムコントローラで Ruby on Rails を使用した siwe の例_
+- [omniauth-siwe](https://github.com/spruceid/omniauth-siwe) - _イーサリアムによるサインイン (siwe) のための OmniAuth ストラテジー_
+- [omniauth-nft](https://github.com/valthon/omniauth-nft) - _NFT 所有権による認証のための OmniAuth ストラテジー_
+- [ethereum-on-rails](https://github.com/q9f/ethereum-on-rails) - _MetaMask を Ruby on Rails に接続できるようにする、Rails でのイーサリアムテンプレート_
+
+### アーカイブ済み ・メンテナンスされていないもの {#archived--no-longer-maintained}
+
+- [web3-eth](https://github.com/spikewilliams/vtada-ethereum) - _Ruby を使用してイーサリアムノードの RPC メソッドを呼び出す_
+- [ethereum_tree](https://github.com/longhoangwkm/ethereum_tree) - _BIP32 標準に従って階層決定性ウォレットから ETH アドレスを生成するための Ruby ライブラリ_
+- [etherlite](https://github.com/budacom/etherlite) - _Ruby on Rails のためのイーサリアム統合_
+- [ethereum.rb](https://github.com/EthWorks/ethereum.rb) - _JSON-RPC インターフェースを使用する Ruby のイーサリアムクライアント。トランザクションの送信、コントラクトの作成、コントラクトとのやり取りを行えるようにするとともに、イーサリアムノードで使用する便利なツールキットも提供する_
+- [omniauth-ethereum.rb](https://github.com/q9f/omniauth-ethereum.rb) - _OmniAuth のイーサリアムプロバイダストラテジーを実装する_
+
+もっとリソースをお探しですか? [デベロッパーホーム](/developers/)をご確認ください。
+
+## Ruby コミュニティコントリビューター {#ruby-community-contributors}
+
+[イーサリアム Ruby テレグラムグループ](https://t.me/ruby_eth) は急速に成長しているコミュニティのホストであり、上記のプロジェクトや関連するトピックに関するディスカッションのための専用のリソースです。
diff --git a/src/content/translations/ja/developers/docs/programming-languages/rust/index.md b/src/content/translations/ja/developers/docs/programming-languages/rust/index.md
new file mode 100644
index 00000000000..1ebb06f071c
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/programming-languages/rust/index.md
@@ -0,0 +1,69 @@
+---
+title: Rustデベロッパーのためのイーサリアム
+description: Rustベースのプロジェクトとツールを使ってイーサリアムの開発方法を学ぶ
+lang: ja
+incomplete: true
+---
+
+Rustベースのプロジェクトとツールを使ってイーサリアムの開発方法を学ぶ
+
+イーサリアムを使用して、仮想通貨とブロックチェーン技術の利点を活用した分散型アプリケーション (「dapp」) を作成します。 dapp は、信頼性の高いアプリケーションです。つまり、イーサリアムにデプロイした後は、常にプログラムしたとおりに動作します。 デジタル資産を制御して、新たなタイプの金融アプリケーションを作成できます。 また、分散化できるため、単一のエンティティや個人は制御できず、検閲はほぼ不可能であることを意味します。
+
+## スマートコントラクトと Solidity を使い始める {#getting-started-with-smart-contracts-and-solidity}
+
+**Rust をイーサリアムに統合するための最初のステップを踏み出してみましょう。**
+
+先に基礎を学習したい場合は、 [ethereum.org/learn](/learn/)または[ethereum.org/developers](/developers/)をご確認ください。
+
+- [ブロックチェーンの説明](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained)
+- [スマートコントラクトを理解する](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract)
+- [初めてのスマートコントラクトを記述する](https://kauri.io/article/124b7db1d0cf4f47b414f8b13c9d66e2/remix-ide-your-first-smart-contract)
+- [Solidity のコンパイルとデプロイの方法を学ぶ](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment)
+
+## 初心者向けの記事 {#beginner-articles}
+
+- [イーサリアムクライアントの選択](https://www.trufflesuite.com/docs/truffle/reference/choosing-an-ethereum-client)
+- [Rust イーサリアムクライアント](https://openethereum.github.io/) \* **OpenEthereum は[すでに廃止されており](https://medium.com/openethereum/gnosis-joins-erigon-formerly-turbo-geth-to-release-next-gen-ethereum-client-c6708dd06dd)、現在は維持されていません。** ご利用には注意が必要です。できれば、他のクライアント実装に切り替えてください。
+- [Rust を使用してイーサリアムにトランザクションを送信する](https://kauri.io/#collections/A%20Hackathon%20Survival%20Guide/sending-ethereum-transactions-with-rust/)
+- [Parity イーサリアムクライアントを使用するスマートコントラクトの入門](https://wiki.parity.io/Smart-Contracts)
+- [Oasis SDK 開発環境のセットアップ](https://docs.oasis.dev/oasis-sdk/guide/getting-started)
+- [Kovan のための Rust Wasm でのコントラクトの記述方法についての段階的なチュートリアル](https://github.com/paritytech/pwasm-tutorial)
+
+## 中級者向けの記事 {#intermediate-articles}
+
+- [Rust-Web3 ドキュメント](https://tomusdrw.github.io/rust-web3/web3/index.html)
+- [Rust-Web3 の実例](https://github.com/tomusdrw/rust-web3/blob/master/examples)
+
+## 発展的なユースケース {#advanced-use-patterns}
+
+- [pwasm_ethereum: イーサリアムライクなネットワークとやり取りするための extern ライブラリ](https://github.com/openethereum/pwasm-ethereum)
+- [JavaScript と Rust を使用して分散型チャットを構築する](https://medium.com/perlin-network/build-a-decentralized-chat-using-javascript-rust-webassembly-c775f8484b52)
+- [Vue.js と Rust を使用して分散化 Todo アプリケーションを構築する](https://medium.com/@jjmace01/build-a-decentralized-todo-app-using-vue-js-rust-webassembly-5381a1895beb)
+- [Enigma 入門 - Rust プログラミング言語を使用](https://blog.enigma.co/getting-started-with-discovery-the-rust-programming-language-4d1e0b06de15)
+- [シークレットコントラクト入門](https://blog.enigma.co/getting-started-with-enigma-an-intro-to-secret-contracts-cdba4fe501c2)
+- [Oasis (Compound) に Solidity コントラクトをデプロイする](https://docs.oasis.dev/tutorials/deploy-solidity.html#deploy-using-truffle)
+- [Rust でブロックチェーンを構築する](https://blog.logrocket.com/how-to-build-a-blockchain-in-rust/)
+
+## Rust のプロジェクトとツール {#rust-projects-and-tools}
+
+- [pwasm-ethereum](https://github.com/paritytech/pwasm-ethereum) - _イーサリアムライクのネットワークとやり取りするための extern のコレクション_
+- [Lighthouse](https://github.com/sigp/lighthouse) - _高速イーサリアムコンセンサスレイヤークライアント_
+- [イーサリアム WebAssembly](https://ewasm.readthedocs.io/en/mkdocs/)
+- [oasis_std](https://docs.rs/oasis-std/0.2.7/oasis_std/) - _OASIS API リファレンス_
+- [Solaris](https://github.com/paritytech/sol-rs)
+- [SputnikVM](https://github.com/sorpaas/rust-evm) - _Rust のイーサリアム仮想マシンの実装_
+- [rust-web3](https://github.com/tomusdrw/rust-web3) - _Web3.js ライブラリの Rust 実装_
+- [Wavelet](https://wavelet.perlin.net/docs/smart-contracts) - _Rust での Wavelet スマートコントラクト_
+- [Foundry](https://github.com/gakonst/foundry)- _イーサリアムアプリケーション開発のためのツールキット_
+- [Ethers_rs](https://github.com/gakonst/ethers-rs)- _イーサリアムライブラリとウォレットの実装_
+- [evm_rs](https://github.com/rust-blockchain/evm)- _Rust でのイーサリアム仮想マシンの実装_
+- [SewUp](https://github.com/second-state/SewUp) - _Rust を使用したイーサリアム WebAssembly コントラクトの構築を、一般的なバックエンドでの開発と同様に行えるようにするライブラリ_
+
+もっとリソースをお探しですか? [ethereum.org/developers](/developers/)をご確認ください。
+
+## Rust コミュニティコントリビューター {#rust-community-contributors}
+
+- [イーサリアム WebAssembly](https://gitter.im/ewasm/Lobby)
+- [Oasis Gitter](https://gitter.im/Oasis-official/Lobby)
+- [Parity Gitter](https://gitter.im/paritytech/parity)
+- [Enigma](https://discord.gg/SJK32GY)
diff --git a/src/content/translations/ja/developers/docs/smart-contracts/anatomy/index.md b/src/content/translations/ja/developers/docs/smart-contracts/anatomy/index.md
new file mode 100644
index 00000000000..dffe514965f
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/smart-contracts/anatomy/index.md
@@ -0,0 +1,658 @@
+---
+title: スマートコントラクトの解剖学
+description: スマートコンタクトの構造、すなわち機能、データ、変数について詳しく調べます。
+lang: ja
+---
+
+スマートコントラクトは、イーサリアム上のアドレスで実行されるプログラムです。 それらはトランザクションの受信時に実行できるデータと関数で構成されています。 ここでは、スマートコントラクトの構成要素の概要を説明します。
+
+### 前提知識 {#prerequisites}
+
+最初に、[スマートコントラクト](/developers/docs/smart-contracts/)を必ずお読みください。 このドキュメントは、JavaScript や Python などのプログラミング言語に精通していることを前提としています。
+
+## データ {#data}
+
+すべてのコントラクトのデータは、`storage`または`memory`のいずれかのロケーションに割り当てる必要があります。 スマートコントラクトのストレージの変更にはコストがかかりますので、データをどこに格納するかを考える必要があります。
+
+### ストレージ {#storage}
+
+永続データはストレージと呼ばれ、状態変数で表されます。 これらの値は、ブロックチェーンに永続的に保存されます。 コントラクトがコンパイル時に必要なブロックチェーンのストレージ容量を追跡できるように、型を宣言する必要があります。
+
+```solidity
+// Solidity example
+contract SimpleStorage {
+ uint storedData; // State variable
+ // ...
+}
+```
+
+```python
+# Vyper example
+storedData: int128
+```
+
+オブジェクト指向言語でのプログラミングの経験がある場合は、ほとんどの型になじみがあるでしょう。 しかし、イーサリアムの開発が初めての場合、`address`は目新しいかもしれません。
+
+`address`型は、20 バイトまたは 160 ビットに相当するイーサリアムアドレスを保持します。 先頭が 0x の 16 進数を返します。
+
+その他の型には次のものがあります。
+
+- ブール値
+- 整数
+- 固定小数点数
+- 固定サイズのバイト配列
+- 動的サイズのバイト配列
+- 有理数リテラルと整数リテラル
+- 文字列リテラル
+- 16 進数リテラル
+- 列挙型
+
+詳細については、以下のドキュメントをご覧ください。
+
+- [Vyper の型を見る](https://vyper.readthedocs.io/en/v0.1.0-beta.6/types.html#value-types)
+- [Solidity の型を見る](https://solidity.readthedocs.io/en/latest/types.html#value-types)
+
+### メモリ {#memory}
+
+コントラクト関数の実行期間にのみ保存される値は、メモリ変数と呼ばれます。 これらはブロックチェーンに永続的に保存されることはないため、低コストで使用できます
+
+EVM がデータ(ストレージ、メモリ、スタック)を格納する方法の詳細については、[Solidity のドキュメント](https://solidity.readthedocs.io/en/latest/introduction-to-smart-contracts.html?highlight=memory#storage-memory-and-the-stack)をご覧ください。
+
+### 環境変数 {#environment-variables}
+
+コントラクトで定義した変数に加え、特別なグローバル変数がいくつかあります。 これらは主にブロックチェーンや現在のトランザクションに関する情報を提供するために使用されます。
+
+例:
+
+| **プロパティ** | **状態変数** | **説明** |
+| ----------------- | ------------ | ------------------------------------ |
+| `block.timestamp` | uint256 | 現在のブロックエポックタイムスタンプ |
+| `msg.sender` | address | メッセージの送信者(現在の呼び出し) |
+
+## 関数 {#functions}
+
+簡単に言うと、関数は受信トランザクションに応じて情報を取得したり、情報を設定したりすることができます。
+
+関数呼び出しには、以下の 2 種類があります。
+
+- `internal` - これらは EVM 呼び出しを作成しません。
+ - internal 関数と状態変数は、内部(つまり、現在のコントラクト内またはそれから派生したコントラクト内)からのみアクセスできます。
+- `external` - これらは EVM 呼び出しを作成します。
+ - external 関数はコントラクトインターフェイスの一部であり、他のコントラクトから呼び出したり、トランザクションを介して呼び出したりすることができます。 external 関数`f`を内部で呼び出すことはできません(つまり、`f()`は動作しませんが、`this.f()`は動作します)。
+
+`public`または`private`にすることもできます。
+
+- `public`関数は、コントラクト内から内部で呼び出すことも、メッセージを介して外部から呼び出すこともできます。
+- `private`関数は、それらが定義されているコントラクトからのみ参照できます。派生したコントラクトからは参照できません。
+
+関数と状態変数はどちらも public または private にすることができます。
+
+コントラクトの状態変数を更新するための関数は次のとおりです。
+
+```solidity
+// Solidity example
+function update_name(string value) public {
+ dapp_name = value;
+}
+```
+
+- `string`型のパラメータ`value`が`update_name`関数に渡されます。
+- `public`と宣言されており、誰でもアクセスできます。
+- `view`が宣言されていないため、コントラクトの状態を変更できます。
+
+### View 関数 {#view-functions}
+
+これらの関数によって、コントラクトのデータの状態を変更しないことを指定します。 一般的な例としては、「getter」関数があります。例えば、これを使用してユーザーの残高を受け取ることができます。
+
+```solidity
+// Solidity example
+function balanceOf(address _owner) public view returns (uint256 _balance) {
+ return ownerPizzaCount[_owner];
+}
+```
+
+```python
+dappName: public(string)
+
+@view
+@public
+def readName() -> string:
+ return dappName
+```
+
+状態の変更と見なされるものは、以下のとおりです。
+
+1. 状態変数への書き込み。
+2. [イベントの発行](https://solidity.readthedocs.io/en/v0.7.0/contracts.html#events)。
+3. [他のコントラクトの作成](https://solidity.readthedocs.io/en/v0.7.0/control-structures.html#creating-contracts)。
+4. `selfdestruct`の使用。
+5. 呼び出しによるイーサ(ETH)の送信。
+6. `view`や`pure`が指定されていない関数の呼び出し。
+7. 低レベル呼び出しの使用。
+8. 特定のオペコードを含むインラインアセンブリの使用。
+
+### コンストラクタ関数 {#constructor-functions}
+
+`constructor`関数は、コントラクトが最初にデプロイされたときに 1 回だけ実行されます。 多くのクラスベースのプログラミング言語の`constructor`と同様に、これらの関数はしばしば、指定された値に状態変数を初期化します。
+
+```solidity
+// Solidity example
+// Initializes the contract's data, setting the `owner`
+// to the address of the contract creator.
+constructor() public {
+ // All smart contracts rely on external transactions to trigger its functions.
+ // `msg` is a global variable that includes relevant data on the given transaction,
+ // such as the address of the sender and the ETH value included in the transaction.
+ // Learn more: https://solidity.readthedocs.io/en/v0.5.10/units-and-global-variables.html#block-and-transaction-properties
+ owner = msg.sender;
+}
+```
+
+```python
+# Vyper example
+
+@external
+def __init__(_beneficiary: address, _bidding_time: uint256):
+ self.beneficiary = _beneficiary
+ self.auctionStart = block.timestamp
+ self.auctionEnd = self.auctionStart + _bidding_time
+```
+
+### 組み込み関数 {#built-in-functions}
+
+コントラクトで定義した変数と関数に加え、特別な組み込み関数がいくつかあります。 最もわかりやすい例は、以下のとおりです。
+
+- `address.send()` – Solidity
+- `send(address)` – Vyper
+
+これらの関数により、コントラクトは他のアカウントに ETH を送信することができます。
+
+## 関数を書く {#writing-functions}
+
+関数には以下のものが必要です。
+
+- パラメータ変数と型(パラメータを受け取る場合)
+- internal/external の宣言
+- pure/view/payable の宣言
+- 戻り値の型(値を返す場合)
+
+```solidity
+pragma solidity >=0.4.0 <=0.6.0;
+
+contract ExampleDapp {
+ string dapp_name; // state variable
+
+ // Called when the contract is deployed and initializes the value
+ constructor() public {
+ dapp_name = "My Example dapp";
+ }
+
+ // Get Function
+ function read_name() public view returns(string) {
+ return dapp_name;
+ }
+
+ // Set Function
+ function update_name(string value) public {
+ dapp_name = value;
+ }
+}
+```
+
+完全なコントラクトはこのようになります。 ここで、`constructor`関数は、`dapp_name`変数の初期値を提供します。
+
+## イベントとログ {#events-and-logs}
+
+イベント(event)を使用すると、フロントエンドやその他のサブスクライブアプリケーションからスマートコントラクトと通信できます。 トランザクションがマイニングされると、スマートコントラクトはイベントを発行し、フロントエンドが処理できるログをブロックチェーンに書き込みます。
+
+## 注釈付きの例 {#annotated-examples}
+
+Solidity で書かれた例を以下に示します。 コードを実行したい場合は、[Remix](http://remix.ethereum.org)で操作できます。
+
+### Hello World {#hello-world}
+
+```solidity
+// Specifies the version of Solidity, using semantic versioning.
+// Learn more: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#pragma
+pragma solidity ^0.5.10;
+
+// Defines a contract named `HelloWorld`.
+// A contract is a collection of functions and data (its state).
+// Once deployed, a contract resides at a specific address on the Ethereum blockchain.
+// Learn more: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html
+contract HelloWorld {
+
+ // Declares a state variable `message` of type `string`.
+ // State variables are variables whose values are permanently stored in contract storage.
+ // The keyword `public` makes variables accessible from outside a contract
+ // and creates a function that other contracts or clients can call to access the value.
+ string public message;
+
+ // Similar to many class-based object-oriented languages, a constructor is
+ // a special function that is only executed upon contract creation.
+ // Constructors are used to initialize the contract's data.
+ // Learn more: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constructors
+ constructor(string memory initMessage) public {
+ // Accepts a string argument `initMessage` and sets the value
+ // into the contract's `message` storage variable).
+ message = initMessage;
+ }
+
+ // A public function that accepts a string argument
+ // and updates the `message` storage variable.
+ function update(string memory newMessage) public {
+ message = newMessage;
+ }
+}
+```
+
+### トークン {#token}
+
+```solidity
+pragma solidity ^0.5.10;
+
+contract Token {
+ // An `address` is comparable to an email address - it's used to identify an account on Ethereum.
+ // Addresses can represent a smart contract or an external (user) accounts.
+ // Learn more: https://solidity.readthedocs.io/en/v0.5.10/types.html#address
+ address public owner;
+
+ // A `mapping` is essentially a hash table data structure.
+ // This `mapping` assigns an unsigned integer (the token balance) to an address (the token holder).
+ // Learn more: https://solidity.readthedocs.io/en/v0.5.10/types.html#mapping-types
+ mapping (address => uint) public balances;
+
+ // Events allow for logging of activity on the blockchain.
+ // Ethereum clients can listen for events in order to react to contract state changes.
+ // Learn more: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#events
+ event Transfer(address from, address to, uint amount);
+
+ // Initializes the contract's data, setting the `owner`
+ // to the address of the contract creator.
+ constructor() public {
+ // All smart contracts rely on external transactions to trigger its functions.
+ // `msg` is a global variable that includes relevant data on the given transaction,
+ // such as the address of the sender and the ETH value included in the transaction.
+ // Learn more: https://solidity.readthedocs.io/en/v0.5.10/units-and-global-variables.html#block-and-transaction-properties
+ owner = msg.sender;
+ }
+
+ // Creates an amount of new tokens and sends them to an address.
+ function mint(address receiver, uint amount) public {
+ // `require` is a control structure used to enforce certain conditions.
+ // If a `require` statement evaluates to `false`, an exception is triggered,
+ // which reverts all changes made to the state during the current call.
+ // Learn more: https://solidity.readthedocs.io/en/v0.5.10/control-structures.html#error-handling-assert-require-revert-and-exceptions
+
+ // Only the contract owner can call this function
+ require(msg.sender == owner, "You are not the owner.");
+
+ // Enforces a maximum amount of tokens
+ require(amount < 1e60, "Maximum issuance exceeded");
+
+ // Increases the balance of `receiver` by `amount`
+ balances[receiver] += amount;
+ }
+
+ // Sends an amount of existing tokens from any caller to an address.
+ function transfer(address receiver, uint amount) public {
+ // The sender must have enough tokens to send
+ require(amount <= balances[msg.sender], "Insufficient balance.");
+
+ // Adjusts token balances of the two addresses
+ balances[msg.sender] -= amount;
+ balances[receiver] += amount;
+
+ // Emits the event defined earlier
+ emit Transfer(msg.sender, receiver, amount);
+ }
+}
+```
+
+### 固有のデジタル資産 {#unique-digital-asset}
+
+```solidity
+pragma solidity ^0.5.10;
+
+// Imports symbols from other files into the current contract.
+// In this case, a series of helper contracts from OpenZeppelin.
+// Learn more: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#importing-other-source-files
+
+import "../node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol";
+import "../node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
+import "../node_modules/@openzeppelin/contracts/introspection/ERC165.sol";
+import "../node_modules/@openzeppelin/contracts/math/SafeMath.sol";
+
+// The `is` keyword is used to inherit functions and keywords from external contracts.
+// In this case, `CryptoPizza` inherits from the `IERC721` and `ERC165` contracts.
+// Learn more: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#inheritance
+contract CryptoPizza is IERC721, ERC165 {
+ // Uses OpenZeppelin's SafeMath library to perform arithmetic operations safely.
+ // Learn more: https://docs.openzeppelin.com/contracts/2.x/api/math#SafeMath
+ using SafeMath for uint256;
+
+ // Constant state variables in Solidity are similar to other languages
+ // but you must assign from an expression which is constant at compile time.
+ // Learn more: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constant-state-variables
+ uint256 constant dnaDigits = 10;
+ uint256 constant dnaModulus = 10 ** dnaDigits;
+ bytes4 private constant _ERC721_RECEIVED = 0x150b7a02;
+
+ // Struct types let you define your own type
+ // Learn more: https://solidity.readthedocs.io/en/v0.5.10/types.html#structs
+ struct Pizza {
+ string name;
+ uint256 dna;
+ }
+
+ // Creates an empty array of Pizza structs
+ Pizza[] public pizzas;
+
+ // Mapping from pizza ID to its owner's address
+ mapping(uint256 => address) public pizzaToOwner;
+
+ // Mapping from owner's address to number of owned token
+ mapping(address => uint256) public ownerPizzaCount;
+
+ // Mapping from token ID to approved address
+ mapping(uint256 => address) pizzaApprovals;
+
+ // You can nest mappings, this example maps owner to operator approvals
+ mapping(address => mapping(address => bool)) private operatorApprovals;
+
+ // Internal function to create a random Pizza from string (name) and DNA
+ function _createPizza(string memory _name, uint256 _dna)
+ // The `internal` keyword means this function is only visible
+ // within this contract and contracts that derive this contract
+ // Learn more: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#visibility-and-getters
+ internal
+ // `isUnique` is a function modifier that checks if the pizza already exists
+ // Learn more: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html#function-modifiers
+ isUnique(_name, _dna)
+ {
+ // Adds Pizza to array of Pizzas and get id
+ uint256 id = SafeMath.sub(pizzas.push(Pizza(_name, _dna)), 1);
+
+ // Checks that Pizza owner is the same as current user
+ // Learn more: https://solidity.readthedocs.io/en/v0.5.10/control-structures.html#error-handling-assert-require-revert-and-exceptions
+
+ // note that address(0) is the zero address,
+ // indicating that pizza[id] is not yet allocated to a particular user.
+
+ assert(pizzaToOwner[id] == address(0));
+
+ // Maps the Pizza to the owner
+ pizzaToOwner[id] = msg.sender;
+ ownerPizzaCount[msg.sender] = SafeMath.add(
+ ownerPizzaCount[msg.sender],
+ 1
+ );
+ }
+
+ // Creates a random Pizza from string (name)
+ function createRandomPizza(string memory _name) public {
+ uint256 randDna = generateRandomDna(_name, msg.sender);
+ _createPizza(_name, randDna);
+ }
+
+ // Generates random DNA from string (name) and address of the owner (creator)
+ function generateRandomDna(string memory _str, address _owner)
+ public
+ // Functions marked as `pure` promise not to read from or modify the state
+ // Learn more: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#pure-functions
+ pure
+ returns (uint256)
+ {
+ // Generates random uint from string (name) + address (owner)
+ uint256 rand = uint256(keccak256(abi.encodePacked(_str))) +
+ uint256(_owner);
+ rand = rand % dnaModulus;
+ return rand;
+ }
+
+ // Returns array of Pizzas found by owner
+ function getPizzasByOwner(address _owner)
+ public
+ // Functions marked as `view` promise not to modify state
+ // Learn more: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#view-functions
+ view
+ returns (uint256[] memory)
+ {
+ // Uses the `memory` storage location to store values only for the
+ // lifecycle of this function call.
+ // Learn more: https://solidity.readthedocs.io/en/v0.5.10/introduction-to-smart-contracts.html#storage-memory-and-the-stack
+ uint256[] memory result = new uint256[](ownerPizzaCount[_owner]);
+ uint256 counter = 0;
+ for (uint256 i = 0; i < pizzas.length; i++) {
+ if (pizzaToOwner[i] == _owner) {
+ result[counter] = i;
+ counter++;
+ }
+ }
+ return result;
+ }
+
+ // Transfers Pizza and ownership to other address
+ function transferFrom(address _from, address _to, uint256 _pizzaId) public {
+ require(_from != address(0) && _to != address(0), "Invalid address.");
+ require(_exists(_pizzaId), "Pizza does not exist.");
+ require(_from != _to, "Cannot transfer to the same address.");
+ require(_isApprovedOrOwner(msg.sender, _pizzaId), "Address is not approved.");
+
+ ownerPizzaCount[_to] = SafeMath.add(ownerPizzaCount[_to], 1);
+ ownerPizzaCount[_from] = SafeMath.sub(ownerPizzaCount[_from], 1);
+ pizzaToOwner[_pizzaId] = _to;
+
+ // Emits event defined in the imported IERC721 contract
+ emit Transfer(_from, _to, _pizzaId);
+ _clearApproval(_to, _pizzaId);
+ }
+
+ /**
+ * Safely transfers the ownership of a given token ID to another address
+ * If the target address is a contract, it must implement `onERC721Received`,
+ * which is called upon a safe transfer, and return the magic value
+ * `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`;
+ * otherwise, the transfer is reverted.
+ */
+ function safeTransferFrom(address from, address to, uint256 pizzaId)
+ public
+ {
+ // solium-disable-next-line arg-overflow
+ this.safeTransferFrom(from, to, pizzaId, "");
+ }
+
+ /**
+ * Safely transfers the ownership of a given token ID to another address
+ * If the target address is a contract, it must implement `onERC721Received`,
+ * which is called upon a safe transfer, and return the magic value
+ * `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`;
+ * otherwise, the transfer is reverted.
+ */
+ function safeTransferFrom(
+ address from,
+ address to,
+ uint256 pizzaId,
+ bytes memory _data
+ ) public {
+ this.transferFrom(from, to, pizzaId);
+ require(_checkOnERC721Received(from, to, pizzaId, _data), "Must implement onERC721Received.");
+ }
+
+ /**
+ * Internal function to invoke `onERC721Received` on a target address
+ * The call is not executed if the target address is not a contract
+ */
+ function _checkOnERC721Received(
+ address from,
+ address to,
+ uint256 pizzaId,
+ bytes memory _data
+ ) internal returns (bool) {
+ if (!isContract(to)) {
+ return true;
+ }
+
+ bytes4 retval = IERC721Receiver(to).onERC721Received(
+ msg.sender,
+ from,
+ pizzaId,
+ _data
+ );
+ return (retval == _ERC721_RECEIVED);
+ }
+
+ // Burns a Pizza - destroys Token completely
+ // The `external` function modifier means this function is
+ // part of the contract interface and other contracts can call it
+ function burn(uint256 _pizzaId) external {
+ require(msg.sender != address(0), "Invalid address.");
+ require(_exists(_pizzaId), "Pizza does not exist.");
+ require(_isApprovedOrOwner(msg.sender, _pizzaId), "Address is not approved.");
+
+ ownerPizzaCount[msg.sender] = SafeMath.sub(
+ ownerPizzaCount[msg.sender],
+ 1
+ );
+ pizzaToOwner[_pizzaId] = address(0);
+ }
+
+ // Returns count of Pizzas by address
+ function balanceOf(address _owner) public view returns (uint256 _balance) {
+ return ownerPizzaCount[_owner];
+ }
+
+ // Returns owner of the Pizza found by id
+ function ownerOf(uint256 _pizzaId) public view returns (address _owner) {
+ address owner = pizzaToOwner[_pizzaId];
+ require(owner != address(0), "Invalid Pizza ID.");
+ return owner;
+ }
+
+ // Approves other address to transfer ownership of Pizza
+ function approve(address _to, uint256 _pizzaId) public {
+ require(msg.sender == pizzaToOwner[_pizzaId], "Must be the Pizza owner.");
+ pizzaApprovals[_pizzaId] = _to;
+ emit Approval(msg.sender, _to, _pizzaId);
+ }
+
+ // Returns approved address for specific Pizza
+ function getApproved(uint256 _pizzaId)
+ public
+ view
+ returns (address operator)
+ {
+ require(_exists(_pizzaId), "Pizza does not exist.");
+ return pizzaApprovals[_pizzaId];
+ }
+
+ /**
+ * Private function to clear current approval of a given token ID
+ * Reverts if the given address is not indeed the owner of the token
+ */
+ function _clearApproval(address owner, uint256 _pizzaId) private {
+ require(pizzaToOwner[_pizzaId] == owner, "Must be pizza owner.");
+ require(_exists(_pizzaId), "Pizza does not exist.");
+ if (pizzaApprovals[_pizzaId] != address(0)) {
+ pizzaApprovals[_pizzaId] = address(0);
+ }
+ }
+
+ /*
+ * Sets or unsets the approval of a given operator
+ * An operator is allowed to transfer all tokens of the sender on their behalf
+ */
+ function setApprovalForAll(address to, bool approved) public {
+ require(to != msg.sender, "Cannot approve own address");
+ operatorApprovals[msg.sender][to] = approved;
+ emit ApprovalForAll(msg.sender, to, approved);
+ }
+
+ // Tells whether an operator is approved by a given owner
+ function isApprovedForAll(address owner, address operator)
+ public
+ view
+ returns (bool)
+ {
+ return operatorApprovals[owner][operator];
+ }
+
+ // Takes ownership of Pizza - only for approved users
+ function takeOwnership(uint256 _pizzaId) public {
+ require(_isApprovedOrOwner(msg.sender, _pizzaId), "Address is not approved.");
+ address owner = this.ownerOf(_pizzaId);
+ this.transferFrom(owner, msg.sender, _pizzaId);
+ }
+
+ // Checks if Pizza exists
+ function _exists(uint256 pizzaId) internal view returns (bool) {
+ address owner = pizzaToOwner[pizzaId];
+ return owner != address(0);
+ }
+
+ // Checks if address is owner or is approved to transfer Pizza
+ function _isApprovedOrOwner(address spender, uint256 pizzaId)
+ internal
+ view
+ returns (bool)
+ {
+ address owner = pizzaToOwner[pizzaId];
+ // Disable solium check because of
+ // https://github.com/duaraghav8/Solium/issues/175
+ // solium-disable-next-line operator-whitespace
+ return (spender == owner ||
+ this.getApproved(pizzaId) == spender ||
+ this.isApprovedForAll(owner, spender));
+ }
+
+ // Check if Pizza is unique and doesn't exist yet
+ modifier isUnique(string memory _name, uint256 _dna) {
+ bool result = true;
+ for (uint256 i = 0; i < pizzas.length; i++) {
+ if (
+ keccak256(abi.encodePacked(pizzas[i].name)) ==
+ keccak256(abi.encodePacked(_name)) &&
+ pizzas[i].dna == _dna
+ ) {
+ result = false;
+ }
+ }
+ require(result, "Pizza with such name already exists.");
+ _;
+ }
+
+ // Returns whether the target address is a contract
+ function isContract(address account) internal view returns (bool) {
+ uint256 size;
+ // Currently there is no better way to check if there is a contract in an address
+ // than to check the size of the code at that address.
+ // どのように動くかの詳細は、
+ // https://ethereum.stackexchange.com/a/14016/36603 を確認する。
+ // TODO すべてのアドレスが縮小されるので、
+ // セレニティリリースの前に、ここをもう一度確認する。
+ // solium-disable-next-line security/no-inline-assembly
+ assembly {
+ size := extcodesize(account)
+ }
+ return size > 0;
+ }
+}
+```
+
+## 参考文献 {#further-reading}
+
+スマートコントラクトの全体的な概要については、Solidity と Vyper のドキュメントをご確認ください。
+
+- [Solidity](https://solidity.readthedocs.io/)
+- [Vyper](https://vyper.readthedocs.io/)
+
+## 関連トピック {#related-topics}
+
+- [スマートコントラクト](/developers/docs/smart-contracts/)
+- [イーサリアム仮想マシン(EVM)](/developers/docs/evm/)
+
+## 関連チュートリアル {#related-tutorials}
+
+- [コントラクトのサイズ制限に対処するためのコントラクトのサイズ縮小](/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/) _- スマートコントラクトのサイズを小さくするための実用的なヒント_
+- [イベントを使用してスマートコントラクトからデータをログに記録](/developers/tutorials/logging-events-smart-contracts/) _- スマートコントラクトのイベントの紹介と、それを使ってデータをログに記録する方法_
+- [Solidity を使用した他のコントラクトとの連携](/developers/tutorials/interact-with-other-contracts-from-solidity/) _- 既存のコントラクトからスマートコントラクトをデプロイし、それを扱う方法_
diff --git a/src/content/translations/ja/developers/docs/smart-contracts/compiling/index.md b/src/content/translations/ja/developers/docs/smart-contracts/compiling/index.md
new file mode 100644
index 00000000000..0d90bad9c78
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/smart-contracts/compiling/index.md
@@ -0,0 +1,278 @@
+---
+title: スマートコントラクトのコンパイル
+description: スマートコントラクトをコンパイルする必要がある理由と、コンパイルを実際にどのように行うかの説明します。
+lang: ja
+incomplete: true
+---
+
+Web アプリとイーサリアム仮想マシン(EVM)が理解できるように、コントラクトをコンパイルする必要があります。
+
+## 前提知識 {#prerequisites}
+
+コンパイルについて読む前に、[スマートコントラクト](/developers/docs/smart-contracts/)と[イーサリアム仮想マシン](/developers/docs/evm/)の概要を読んでおくと役立ちます。
+
+## EVM (イーサリアム仮想マシン) {#the-evm}
+
+[EVM](/developers/docs/evm/)がコントラクトを実行できるようにするには、**バイトコード**にする必要があります。 以下はコンパイルするコントラクトです。
+
+```solidity
+pragma solidity 0.4.24;
+
+contract Greeter {
+
+ function greet() public constant returns (string) {
+ return "Hello";
+ }
+
+}
+```
+
+**上記は次のように変換されます。**
+
+```
+PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0xCFAE3217 EQ PUSH2 0x46 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5B PUSH2 0xD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x9B JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x80 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xC8 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x48656C6C6F000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP SWAP1 JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 SLT 0xec 0xe 0xf5 0xf8 SLT 0xc7 0x2d STATICCALL ADDRESS SHR 0xdb COINBASE 0xb1 BALANCE 0xe8 0xf8 DUP14 0xda 0xad DUP13 LOG1 0x4c 0xb4 0x26 0xc2 DELEGATECALL PUSH7 0x8994D3E002900
+```
+
+## Web アプリ {#web-applications}
+
+コンパイラは、アプリケーションがコントラクトを理解し、コントラクトの関数を呼び出すために必要な**アプリケーションバイナリインターフェイス(ABI)**も生成します。
+
+ABI は、デプロイされたコントラクトとそのスマートコントラクト関数を記述する JSON ファイルです。 これにより、Web2 と Web3 のギャップを埋めることができます。
+
+[JavaScript クライアントライブラリ](/developers/docs/apis/javascript/)は**ABI**を読み取り、Web アプリのインターフェイスでスマートコントラクトを呼び出すことができます。
+
+以下は、ERC-20 トークンコントラクトの ABI です。 ERC-20 はイーサリアムで取引できるトークンです。
+
+```json
+[
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "name",
+ "outputs": [
+ {
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "name": "_spender",
+ "type": "address"
+ },
+ {
+ "name": "_value",
+ "type": "uint256"
+ }
+ ],
+ "name": "approve",
+ "outputs": [
+ {
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "totalSupply",
+ "outputs": [
+ {
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "name": "_from",
+ "type": "address"
+ },
+ {
+ "name": "_to",
+ "type": "address"
+ },
+ {
+ "name": "_value",
+ "type": "uint256"
+ }
+ ],
+ "name": "transferFrom",
+ "outputs": [
+ {
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "decimals",
+ "outputs": [
+ {
+ "name": "",
+ "type": "uint8"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "name": "_owner",
+ "type": "address"
+ }
+ ],
+ "name": "balanceOf",
+ "outputs": [
+ {
+ "name": "balance",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [],
+ "name": "symbol",
+ "outputs": [
+ {
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "constant": false,
+ "inputs": [
+ {
+ "name": "_to",
+ "type": "address"
+ },
+ {
+ "name": "_value",
+ "type": "uint256"
+ }
+ ],
+ "name": "transfer",
+ "outputs": [
+ {
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "constant": true,
+ "inputs": [
+ {
+ "name": "_owner",
+ "type": "address"
+ },
+ {
+ "name": "_spender",
+ "type": "address"
+ }
+ ],
+ "name": "allowance",
+ "outputs": [
+ {
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "payable": false,
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "payable": true,
+ "stateMutability": "payable",
+ "type": "fallback"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "name": "spender",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "Approval",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "name": "from",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "Transfer",
+ "type": "event"
+ }
+]
+```
+
+## 参考文献 {#further-reading}
+
+- [ABI 仕様](https://solidity.readthedocs.io/en/v0.7.0/abi-spec.html) _– Solidity_
+
+## 関連トピック {#related-topics}
+
+- [JavaScript クライアントライブラリ](/developers/docs/apis/javascript/)
+- [イーサリアム仮想マシン(EVM)](/developers/docs/evm/)
diff --git a/src/content/translations/ja/developers/docs/smart-contracts/composability/index.md b/src/content/translations/ja/developers/docs/smart-contracts/composability/index.md
new file mode 100644
index 00000000000..8fdb36d6f43
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/smart-contracts/composability/index.md
@@ -0,0 +1,77 @@
+---
+title: スマートコントラクトの構成可能性
+description:
+lang: ja
+incomplete: true
+---
+
+## 簡単な紹介 {#a-brief-introduction}
+
+スマートコントラクトはイーサリアム上で公開されており、オープン API と考えることができます。 Dapp デベロッパーになるために、独自のスマートコントラクトを書く必要はありません。スマートコントラクトとやり取りする方法を理解するだけで済みます。 例えば、アプリ内のすべてのトークンスワップロジックを処理するために、分散型取引所である[Uniswap](https://uniswap.exchange/swap)の既存のスマートコントラクトを使用できます。ゼロから始める必要はありません。 [v2](https://github.com/Uniswap/uniswap-v2-core/tree/master/contracts)と[v3](https://github.com/Uniswap/uniswap-v3-core/tree/main/contracts)のコントラクトをいくつか確認してみてください。
+
+## 構成可能性とは {#what-is-composability}
+
+構成可能性とは、新しいシステムや出力を作成するために、別個のコンポーネントを組み合わせることです。 ソフトウェア開発では、構成可能性とは、既存のソフトウェアコンポーネントを再利用して新しいアプリケーションを構築できることを意味します。 構成可能性を理解するには、レゴブロックのような構成可能な要素として考えると良いでしょう。 各々のレゴは別のレゴと組み合わせることができ、異なるレゴを組み合わせることで複雑な構造を構築できます。
+
+イーサリアムでは、すべてのスマートコントラクトはレゴのようなものです。他のプロジェクトのスマートコントラクトをプロジェクトの構成要素であるビルディングブロックとして使用できます。 これは、一からのやり直しやゼロからの構築に時間を費やす必要がないことを意味します。
+
+## 構成可能性の仕組み {#how-does-composability-work}
+
+イーサリアムのスマートコントラクトはパブリック API のようなものなので、誰でもコントラクトとやり取りしたり、それらを Dapp に統合して機能を追加したりすることができます。 スマートコントラクトの構成は一般的に、モジュール性、自律性、発見性の 3 つの原則に基づいています。
+
+**1. モジュール性**: 個々のコンポーネントが特定のタスクを実行する能力です。 イーサリアムでは、すべてのスマートコントラクトに特定のユースケースがあります(Uniswap の例に見ることができます)。
+
+**2. 自律性**: 構成可能なコンポーネントには、独立して動作できることが求められます。 イーサリアムの各スマートコントラクトは自己実行形式であり、システムの他の部分に依存することなく機能することができます。
+
+**3. 発見性**: 公開されていない外部コントラクトを呼び出したり、公開されていないソフトウェアライブラリをアプリケーションに統合したりすることはできません。 設計上、スマートコントラクトはオープンソースであり、誰でもスマートコントラクトを呼び出したり、コードベースをフォークしたりすることができます。
+
+## 構成可能性のメリット {#benefits-of-composability}
+
+### 開発サイクルの短縮 {#shorter-development-cycle}
+
+構成可能性は、[Dapp](/dapps/#what-are-dapps)を作成する際にデベロッパーが行うべき作業を減らします。 [Naval Ravikant 氏が言うように、](https://twitter.com/naval/status/1444366754650656770)「オープンソースは、すべての問題を一度だけ解決すればよいということを意味する」ということです。
+
+一つの問題を解決するスマートコントラクトがある場合、他のデベロッパーはそれを再利用できるため、同じ問題を解決する必要はありません。 このようにして、デベロッパーは既存のソフトウェアライブラリを利用し、更なる機能を追加して新しい Dapp を作成することができます。
+
+### イノベーションの加速 {#greater-innovation}
+
+構成可能性があると、デベロッパーが自由にオープンソースコードを再利用、修正、複製、または統合して望ましい結果を生み出せるため、イノベーションや検証作業が促進されます。 その結果、開発チームは基本的な機能に時間を費やすことが少なくなり、新機能の検証作業に多くの時間を費やすことができます。
+
+### ユーザーエクスペリエンスの向上 {#better-user-experience}
+
+イーサリアムエコシステムのコンポーネント間の相互運用性は、ユーザーエクスペリエンスを向上させます。 アプリケーション間で通信できない分断されたエコシステムよりも、外部のスマートコントラクトを統合している Dapp の方が、ユーザーに高い機能性を提供できます。
+
+ここでは、裁定取引の例を使用して、相互運用性のメリットを説明します。
+
+トークンが`取引所A`で`取引所B`よりも高く取引されている場合、この価格差を利用して利益を上げることができます。 ただし、それができるのは、トランザクション(つまり、`取引所B`からトークンを購入し、`取引所A`でそれを売却すること)に資金を提供するだけの十分な資金がある場合に限ります。
+
+取引を行うのに十分な資金を持っていないシナリオでは、フラッシュローンが理想的かもしれません。 [フラッシュローン](/defi/#flash-loans)は非常に専門的ですが、基本的な考え方は、*一つ*のトランザクション内で(担保なしに)資産を借りて同じだけ返すということです。
+
+当初の例に戻りましょう。制定取引業者は多額のフラッシュローンを利用して`取引所B`からトークンを購入し、それらを`取引所A`に売却し、資金と利息の払い戻しを受け、利益を確保するまでを同一のトランザクションの中で行うことができます。 この複雑なロジックでは、複数のコントラクトへの呼び出しを組み合わせる必要がありますが、スマートコントラクトに相互運用性がない場合は不可能です。
+
+## イーサリアムの構成可能性の例 {#composability-in-ethereum}
+
+### トークンスワップ {#token-swaps}
+
+ETH でトランザクションフィーを支払う必要がある Dapp を作成する場合、トークンスワップロジックを統合することで、ユーザーが他の ERC-20 トークンで支払えるようにすることができます。 このコードは、コントラクトが呼び出された関数を実行する前に、ユーザーのトークンを ETH に自動的に変換します。
+
+### ガバナンス {#governance}
+
+[DAO](/dao/)向けにカスタマイズしたガバナンスシステムの構築には、コストと時間がかかることがあります。 代わりに、[Aragon Client](https://client.aragon.org/)のようなオープンソースのガバナンスツールキットを使用して、ガバナンスフレームワークをすばやく作成して DAO を立ち上げることができます。
+
+### ID 管理 {#identity-management}
+
+カスタム認証システムを構築したり、集中型プロバイダーに依存したりしなくても、ユーザーの認証を管理する分散型アイデンティティ(DID)ツールを統合できます。 例えば、オープンソースツールキットの[SpluceID](https://www.spruceid.com/)などがあります。このツールキットは「イーサリアムでサインイン」機能を提供し、ユーザーはイーサリアムウォレットを使用してアイデンティティを認証できます。
+
+## 関連トピック {#related-tutorials}
+
+- [コントラクトの構成可能性: イーサリアムスマートコントラクト開発のビルディングブロック](https://www.decentlabs.io/blog/contract-composability-the-building-blocks-of-ethereum-smart-contract-development)
+- [create-eth-app を使用した Dapp フロントエンドの始動](/developers/tutorials/kickstart-your-dapp-frontend-development-wth-create-eth-app/) _- create-eth-app を使用して、一般的なスマートコントラクトを使用する、すぐに利用可能なアプリを作成する方法の概要_
+
+## 参考文献 {#further-reading}
+
+_イーサリアムを学ぶために利用したコミュニティリソースはありますか? もしあればページを編集して追加してください!_
+
+- [構成可能性はイノベーションである](https://future.a16z.com/how-composability-unlocks-crypto-and-everything-else/)
+- [構成可能性が Web3 にとって重要な理由](https://hackernoon.com/why-composability-matters-for-web3)
+- [構成可能性とは](https://blog.aragon.org/what-is-composability/#:~:text=Aragon,connect%20to%20every%20other%20piece.)
diff --git a/src/content/translations/ja/developers/docs/smart-contracts/deploying/index.md b/src/content/translations/ja/developers/docs/smart-contracts/deploying/index.md
new file mode 100644
index 00000000000..faec540f9d1
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/smart-contracts/deploying/index.md
@@ -0,0 +1,76 @@
+---
+title: スマートコントラクトの導入
+description:
+lang: ja
+---
+
+イーサリアムネットワークのユーザーがスマートコントラクトを利用できるようにするには、それをデプロイする必要があります。
+
+ブロックチェーン上でのスマートコントラクトのデプロイとは、要するにスマートコントラクトのコンパイル済みのコードが格納されたイーサリアムトランザクションを、受信者を指定せずに送信するということです。
+
+## 事前に {#prerequisites}
+
+スマートコントラクトをデプロイする前に、[イーサリアムネットワーク](/developers/docs/networks/)、[トランザクション](/developers/docs/transactions/)、[スマートコントラクトの構造](/developers/docs/smart-contracts/anatomy/)を理解する必要があります。
+
+コントラクトのデプロイにはイーサ(ETH)もかかりますので、イーサリアムの[ガスと手数料](/developers/docs/gas/)を熟知しておく必要があります。
+
+最後に、デプロイする前にコントラクトをコンパイルする必要がありますので、 [スマートコントラクトのコンパイル](/developers/docs/smart-contracts/compiling/)を必ずお読みください。
+
+## スマートコントラクトのデプロイ方法 {#how-to-deploy-a-smart-contract}
+
+### 必要なもの {#what-youll-need}
+
+- コントラクトのバイトコード - これは[コンパイル](/developers/docs/smart-contracts/compiling/)によって生成されます。
+- ガス用の ETH - 他のトランザクションと同様にガスリミットを設定しますので、コントラクトのデプロイには、単純な ETH の送金よりも多くのガスが必要であることに注意してください。
+- デプロイメントのためのスクリプトやプラグイン。
+- [イーサリアムノード](/developers/docs/nodes-and-clients/)へのアクセス。これは、自身のノードを実行するか、公開ノードに接続するか、Infura や Alchemy のような[ノードサービス](/developers/docs/nodes-and-clients/nodes-as-a-service/)を使用して API キーを介するかのいずれかの方法で行います。
+
+### スマートコントラクトをデプロイする手順 {#steps-to-deploy}
+
+実際の手順は、どのツールを利用するかによって変わります。 例えば、[コントラクトのデプロイに関する Hardhat のドキュメント](https://hardhat.org/guides/deploying.html)や、[ネットワークとアプリケーションのデプロイに関する Truffle のドキュメント](https://www.trufflesuite.com/docs/truffle/advanced/networks-and-app-deployment)をご確認ください。 これらは、スマートコントラクトをデプロイするための最も一般的なツールです。このデプロイでは、デプロイの手順を進めていくためのスクリプトを作成します。
+
+デプロイされると、コントラクトは他の[アカウント](/developers/docs/accounts/)と同じように、イーサリアムアドレスを持つようになります。
+
+## 関連ツール {#related-tools}
+
+**Remix - _Remix IDE では、イーサリアムのようなブロックチェーン上のスマートコントラクトの開発、デプロイ、管理を行うことができます。_**
+
+- [Remix](https://remix.ethereum.org)
+
+**Tenderly - _EVM 互換チェーン上のあらゆるものを、リアルタイムデータを活用してシミュレート、デバッグ、監視します。_**
+
+- [tenderly.co](https://tenderly.co/)
+- [ドキュメント](https://docs.tenderly.co/)
+- [GitHub](https://github.com/Tenderly)
+- [Discord](https://discord.gg/eCWjuvt)
+
+**Hardhat - _イーサリアムソフトウェアのコンパイル、デプロイ、テスト、デバッグができる開発環境。_**
+
+- [hardhat.org](https://hardhat.org/getting-started/)
+- [コントラクトのデプロイについてのドキュメント](https://hardhat.org/guides/deploying.html)
+- [GitHub](https://github.com/nomiclabs/hardhat)
+- [Discord](https://discord.com/invite/TETZs2KK4k)
+
+**Truffle -** **_開発環境、テストフレームワーク、ビルドパイプライン、およびその他のツール。_**
+
+- [trufflesuite.com](https://www.trufflesuite.com/)
+- [ネットワークとアプリケーションのデプロイに関するドキュメント](https://www.trufflesuite.com/docs/truffle/advanced/networks-and-app-deployment)
+- [GitHub](https://github.com/trufflesuite/truffle)
+
+## 関連チュートリアル {#related-tutorials}
+
+- [最初のスマートコントラクトのデプロイ](/developers/tutorials/deploying-your-first-smart-contract/) _- イーサリアムテストネットワークに最初のスマートコントラクトをデプロイする方法の紹介_
+- [Solidity を使用した他のコントラクトとの連携](/developers/tutorials/interact-with-other-contracts-from-solidity/) _- 既存のコントラクトからスマートコントラクトをデプロイし、それを扱う方法_
+- [コントラクトのサイズを小さくする方法](/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/) _- コントラクトコードのサイズをリミットよりも下げて、ガスを節約する方法_
+
+## さらに学びたい方へ {#further-reading}
+
+- [https://docs.openzeppelin.com/learn/deploying-and-interacting](https://docs.openzeppelin.com/learn/deploying-and-interacting) - _OpenZeppelin_
+- [Hardhat を使用したコントラクトのデプロイ](https://hardhat.org/guides/deploying.html) - _Nomic Labs_
+
+_イーサリアムを学ぶために利用したコミュニティリソースはありますか? もしあればページを編集して追加してください!_
+
+## 関連トピック {#related-topics}
+
+- [開発フレームワーク](/developers/docs/frameworks/)
+- [イーサリアムノードの実行](/developers/docs/nodes-and-clients/run-a-node/)
diff --git a/src/content/translations/ja/developers/docs/smart-contracts/index.md b/src/content/translations/ja/developers/docs/smart-contracts/index.md
new file mode 100644
index 00000000000..cdcbea74aa7
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/smart-contracts/index.md
@@ -0,0 +1,115 @@
+---
+title: スマートコントラクト入門
+description: 独自の特性と制限に焦点を当てたスマートコントラクトの概要
+lang: ja
+---
+
+## スマートコントラクトとは {#what-is-a-smart-contract}
+
+「スマートコントラクト」とは、単にイーサリアムブロックチェーン上で動作するプログラムのことです。 イーサリアムブロックチェーン上の特定のアドレスに存在するコード(その機能)とデータ(その状態)の集合です。
+
+スマートコントラクトは[イーサリアムアカウント](/developers/docs/accounts/)の一種です。 つまり、残高があり、トランザクションの対象とすることができます。 しかし、スマートコントラクトはユーザーによって制御されるものではなく、ネットワークにデプロイされ、プログラムされた通りに実行されます。 ユーザーアカウントは、スマートコントラクトで定義されている機能を実行するトランザクションを送信することで、スマートコントラクトとやり取りできます。 スマートコントラクトはビジネスにおける契約と同じように、ルールを定めて、そのルールをコードによって自動的に適用することができます。 スマートコントラクトは、デフォルトで削除できないようになっており、スマートコントラクトとのやり取りを取り消すことはできません。
+
+## 前提知識 {#prerequisites}
+
+イーサリアムを使い始めたばかりの方や、あまり技術的ではない入門ドキュメントをお探しの方は、[スマートコントラクト入門](/smart-contracts/)をご覧になることをお勧めします。
+
+スマートコントラクトを使い始める前に、[アカウント](/developers/docs/accounts/)、[トランザクション](/developers/docs/transactions/)、[イーサリアム仮想マシン](/developers/docs/evm/)を読んでおいてください。
+
+## デジタル自動販売機 {#a-digital-vending-machine}
+
+スマートコントラクトは、[Nick Szabo](https://unenumerated.blogspot.com/)が説明したように、自動販売機に例えるのが最も適切かもしれません。 適切な入力では、特定の出力が保証されます。
+
+自動販売機でスナックを取得する場合、以下のロジックになります。
+
+```
+お金 + スナック選択 = 出てくるスナック
+```
+
+このロジックは自動販売機にプログラムされています。
+
+自動販売機と同様に、スマートコントラクトにはロジックがプログラムされています。 この自動販売機が Solidity で書かれたスマートコントラクトであればどのように見えるか、簡単な例を挙げてみましょう。
+
+```solidity
+pragma solidity 0.8.7;
+
+contract VendingMachine {
+
+ // Declare state variables of the contract
+ address public owner;
+ mapping (address => uint) public cupcakeBalances;
+
+ // When 'VendingMachine' contract is deployed:
+ // 1. // 2. コントラクトの所有者としてデプロイアドレスを設定 set the deployed smart contract's cupcake balance to 100
+ constructor() {
+ owner = msg.sender;
+ cupcakeBalances[address(this)] = 100;
+ }
+
+ // Allow the owner to increase the smart contract's cupcake balance
+ function refill(uint amount) public {
+ require(msg.sender == owner, "Only the owner can refill.");
+ cupcakeBalances[address(this)] += amount;
+ }
+
+ // Allow anyone to purchase cupcakes
+ function purchase(uint amount) public payable {
+ require(msg.value >= amount * 1 ether, "You must pay at least 1 ETH per cupcake");
+ require(cupcakeBalances[address(this)] >= amount, "Not enough cupcakes in stock to complete this purchase");
+ cupcakeBalances[address(this)] -= amount;
+ cupcakeBalances[msg.sender] += amount;
+ }
+}
+```
+
+自動販売機が販売員の必要性を無くしたように、スマートコントラクトは多くの業界の仲介者を不要にし、自動化することができます。
+
+## パーミッションレス {#permissionless}
+
+誰でもスマートコントラクトを作成してネットワークにデプロイできます。 [スマートコントラクト言語](/developers/docs/smart-contracts/languages/)でのコーディング方法を学び、コントラクトをデプロイするのに十分な ETH を持っていればよいのです。 スマートコントラクトのデプロイは技術的にはトランザクションなので、単純な ETH 送金に[ガス](/developers/docs/gas/)を支払う必要があるのと同じように、ガスを支払う必要があります。 ただし、コントラクトのデプロイにかかるガス代は、はるかに高くなります。
+
+イーサリアムには以下のような、スマートコントラクトを作成するためのデベロッパーフレンドリーな言語があります。
+
+- Solidity
+- Vyper
+
+[開発言語についての詳細](/developers/docs/smart-contracts/languages/)
+
+ただし、イーサリアムの仮想マシンがコントラクトコードを解釈して保存できるようするためには、コントラクトをデプロイする前にコンパイルが必要です。 [コンパイルの詳細](/developers/docs/smart-contracts/compiling/)
+
+## コンポーザビリティ {#composability}
+
+スマートコントラクトはイーサリアム上で公開されており、オープン API と考えることができます。 つまり、自分のスマートコントラクトの中で他のスマートコントラクトを呼び出し、自分のスマートコントラクトでできることを大幅に拡張することができるのです。 スマートコントラクトは他のスマートコントラクトをデプロイすることもできます。
+
+[スマートコントラクトのコンポーザビリティ](/developers/docs/smart-contracts/composability/)についてもっと詳しく知る
+
+## 制限事項 {#limitations}
+
+スマートコントラクトだけでは、HTTP リクエストを送信できないため、実際のイベントに関する情報を得ることはできません。 これは仕様です。 外部の情報に頼ると、セキュリティや分散化のために重要なコンセンサスが損なわれる可能性があります。
+
+[オラクル](/developers/docs/oracles/)を使用して、この問題を回避する方法があります。
+
+スマートコントラクトのもう一つの制約は、コントラクトの最大サイズです。 スマートコントラクトの最大サイズは 24KB です。それ以上の場合はガス不足になります。 これは、[ダイヤモンドパターン](https://eips.ethereum.org/EIPS/eip-2535)を使用して回避することができます。
+
+## マルチシグコントラクト {#multisig}
+
+マルチシグ(複数署名)コントラクトは、トランザクションを実行するために複数の有効な署名を必要とするスマートコントラクトアカウントです。 これは、相当量のイーサやトークンを保持するコントラクトで単一障害点を回避するのに特に便利です。 マルチシグはまた、コントラクトの実行と鍵の管理の責任を複数の当事者間で分担し、取返しのつかない資金損失につながる秘密鍵の紛失を防ぎます。 これらの理由から、簡単な DAO ガバナンスのためにマルチシグコントラクトを利用することができます。 マルチシグでは実行に、許容可能な M 個の署名の内の N 個の署名(N ≤ M、M > 1)が必要です。 `N = 3, M = 5`と`N = 4, M = 7`が一般的に使用されます。 4/7 マルチシグでは、7 つの有効な署名のうちの 4 つが必要です。 これは、3 つの署名が失われても資金が回収可能であることを意味します。 この場合、コントラクトを実行するためには、鍵の保有者の過半数の同意と署名が必要であることも意味します。
+
+## スマートコントラクト関連情報 {#smart-contract-resources}
+
+**OpenZeppelin Contracts -** **_安全なスマートコントラクト開発のためのライブラリ。_**
+
+- [openzeppelin.com/contracts/](https://openzeppelin.com/contracts/)
+- [GitHub](https://github.com/OpenZeppelin/openzeppelin-contracts)
+- [コミュニティフォーラム](https://forum.openzeppelin.com/c/general/16)
+
+**DappSys -** **_スマートコントラクトのための安全でシンプルかつ柔軟なビルディングブロック。_**
+
+- [Dappsys](https://dappsys.readthedocs.io/)
+- [GitHub](https://github.com/dapphub/dappsys)
+
+## 参考文献 {#further-reading}
+
+- [スマートコントラクト: 弁護士を不要にするブロックチェーンテクノロジー](https://blockgeeks.com/guides/smart-contracts/) _– Blockgeeks_
+- [スマートコントラクト開発のための最善の方法](https://yos.io/2019/11/10/smart-contract-development-best-practices/) _– 2019 年 11 月 10 日 - Yos Riady_
+- [ クリーンコントラクト - スマートコントラクトのパターンと実践に関するガイド](https://www.wslyvh.com/clean-contracts/) _– 2020 年 7 月 30 日 - wslyvh_
diff --git a/src/content/translations/ja/developers/docs/smart-contracts/languages/index.md b/src/content/translations/ja/developers/docs/smart-contracts/languages/index.md
new file mode 100644
index 00000000000..f711dc00e86
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/smart-contracts/languages/index.md
@@ -0,0 +1,324 @@
+---
+title: スマートコントラクト言語
+description: 2つの主要なスマートコントラクト言語であるSolidityとVyperの概要と比較
+lang: ja
+---
+
+イーサリアムの長所は、比較的デベロッパーフレンドリーな言語を使ってスマートコントラクトを記述できることです。 Python や[中括弧を使ってブロックを表現する言語](https://wikipedia.org/wiki/List_of_programming_languages_by_type#Curly-bracket_languages)を使用している方は、見慣れたような構文を持つ言語を使うことができます。
+
+最も活発にメンテナンスされている言語は、以下の 2 つです。
+
+- Solidity
+- Vyper
+
+また、経験豊富なデベロッパーであれば、[イーサリアム仮想マシン](/developers/docs/evm/)用の中間言語である Yul や、Yul を拡張した Yul+を使うのもよいでしょう。
+
+開発中の新しい言語に興味があり、テストに協力したいとお考えの場合は、Fe というまだ登場したばかりのスマートコントラクト言語を試してみることができます。
+
+## 前提知識 {#prerequisites}
+
+プログラミング言語、特に JavaScript や Python の知識は、スマートコントラクト言語の違いを理解するのに役立ちます。 また、スマートコントラクトをコンセプトとして理解し、言語比較を深く掘り下げることをお勧めします。 [スマートコントラクトの紹介](/developers/docs/smart-contracts/)
+
+## Solidity {#solidity}
+
+- スマートコントラクトを実装するためのオブジェクト指向の高級言語
+- C++に強い影響を受けた中括弧を使ってブロックを表現する言語
+- 静的型付け(変数型はコンパイル時に決定される)
+- 以下の言語機能をサポートしている
+ - 継承(他のコントラクトを拡張できる)
+ - ライブラリ(他のオブジェクト指向言語における静的クラスで定義された静的関数のように、さまざまなコントラクトから呼び出すことができる再利用可能なコードを作成できる)
+ - 複雑なユーザー定義型
+
+### 参照すべきリンク {#important-links}
+
+- [ドキュメント](https://docs.soliditylang.org/en/latest/)
+- [Solidity 言語ポータル](https://soliditylang.org/)
+- [Solidity by Example](https://docs.soliditylang.org/en/latest/solidity-by-example.html)
+- [GitHub](https://github.com/ethereum/solidity/)
+- [Solidity Matrix チャットルーム](https://matrix.to/#/#ethereum_solidity:gitter.im)にブリッジされた[Solidity Gitter チャットルーム](https://gitter.im/ethereum/solidity/)
+- [チートシート](https://reference.auditless.com/cheatsheet)
+- [Solidity ブログ](https://blog.soliditylang.org/)
+- [Solidity Twitter](https://twitter.com/solidity_lang)
+
+### コントラクトのコード例 {#example-contract}
+
+```solidity
+// SPDX-License-Identifier: GPL-3.0
+pragma solidity >= 0.7.0;
+
+contract Coin {
+ // The keyword "public" makes variables
+ // accessible from other contracts
+ address public minter;
+ mapping (address => uint) public balances;
+
+ // Events allow clients to react to specific
+ // contract changes you declare
+ event Sent(address from, address to, uint amount);
+
+ // Constructor code is only run when the contract
+ // is created
+ constructor() {
+ minter = msg.sender;
+ }
+
+ // Sends an amount of newly created coins to an address
+ // Can only be called by the contract creator
+ function mint(address receiver, uint amount) public {
+ require(msg.sender == minter);
+ require(amount < 1e60);
+ balances[receiver] += amount;
+ }
+
+ // Sends an amount of existing coins
+ // from any caller to an address
+ function send(address receiver, uint amount) public {
+ require(amount <= balances[msg.sender], "Insufficient balance.");
+ balances[msg.sender] -= amount;
+ balances[receiver] += amount;
+ emit Sent(msg.sender, receiver, amount);
+ }
+}
+```
+
+この例は、Solidity のコントラクト構文がどのようなものか理解するのに役立つでしょう。 関数と変数のより詳細な説明については、[ドキュメント](https://docs.soliditylang.org/en/latest/contracts.html)を参照してください。
+
+## Vyper {#vyper}
+
+- Python 的なプログラミング言語
+- 強い型付け
+- コンパクトでわかりやすいコンパイラコード
+- 効率的なバイトコード生成
+- コントラクトの安全性を確保し、監査が容易になることを目的として、意図的に Solidity よりも機能を絞っている。 Vyper は以下をサポートしていない
+ - modifier 修飾子
+ - 継承
+ - インラインアセンブリ
+ - 関数のオーバーロード
+ - オペレータのオーバーロード
+ - 再帰呼び出し
+ - 無限ループ
+ - バイナリ固定少数点
+
+詳細については、[Vyper のドキュメント](https://vyper.readthedocs.io/en/latest/index.html)を参照してください。
+
+### 参照すべきリンク {#important-links-1}
+
+- [ドキュメント](https://vyper.readthedocs.io)
+- [Vyper by Example](https://vyper.readthedocs.io/en/latest/vyper-by-example.html)
+- [More Vyper by Example](https://vyper-by-example.org/)
+- [GitHub](https://github.com/vyperlang/vyper)
+- [Vyper コミュニティの Discord チャット](https://discord.gg/SdvKC79cJk)
+- [チートシート](https://reference.auditless.com/cheatsheet)
+- [スマートコントラクト開発フレームワークと Vyper 用ツール](/developers/docs/programming-languages/python/)
+- [VyperPunk - Vyper スマートコントラクトのセキュリティとハッキングを学ぶ](https://github.com/SupremacyTeam/VyperPunk)
+- [VyperExamples - Vyper の脆弱性の例](https://www.vyperexamples.com/reentrancy)
+- [開発用 Vyper Hub](https://github.com/zcor/vyper-dev)
+- [人気を博している Vyper のスマートコントラクトの例](https://github.com/pynchmeister/vyper-greatest-hits/tree/main/contracts)
+- [素晴らしい Vyper の厳選されたリソース](https://github.com/spadebuilders/awesome-vyper)
+
+### 例 {#example}
+
+```python
+# Open Auction
+
+# Auction params
+# Beneficiary receives money from the highest bidder
+beneficiary: public(address)
+auctionStart: public(uint256)
+auctionEnd: public(uint256)
+
+# Current state of auction
+highestBidder: public(address)
+highestBid: public(uint256)
+
+# Set to true at the end, disallows any change
+ended: public(bool)
+
+# Keep track of refunded bids so we can follow the withdraw pattern
+pendingReturns: public(HashMap[address, uint256])
+
+# Create a simple auction with `_bidding_time`
+# seconds bidding time on behalf of the
+# beneficiary address `_beneficiary`.
+@external
+def __init__(_beneficiary: address, _bidding_time: uint256):
+ self.beneficiary = _beneficiary
+ self.auctionStart = block.timestamp
+ self.auctionEnd = self.auctionStart + _bidding_time
+
+# Bid on the auction with the value sent
+# together with this transaction.
+# The value will only be refunded if the
+# auction is not won.
+@external
+@payable
+def bid():
+ # Check if bidding period is over.
+ assert block.timestamp < self.auctionEnd
+ # Check if bid is high enough
+ assert msg.value > self.highestBid
+ # Track the refund for the previous high bidder
+ self.pendingReturns[self.highestBidder] += self.highestBid
+ # Track new high bid
+ self.highestBidder = msg.sender
+ self.highestBid = msg.value
+
+# Withdraw a previously refunded bid. The withdraw pattern is
+# used here to avoid a security issue. If refunds were directly
+# sent as part of bid(), a malicious bidding contract could block
+# those refunds and thus block new higher bids from coming in.
+@external
+def withdraw():
+ pending_amount: uint256 = self.pendingReturns[msg.sender]
+ self.pendingReturns[msg.sender] = 0
+ send(msg.sender, pending_amount)
+
+# End the auction and send the highest bid
+# to the beneficiary.
+@external
+def endAuction():
+ # It is a good guideline to structure functions that interact
+ # with other contracts (i.e. they call functions or send ether)
+ # into three phases:
+ # 1. checking conditions
+ # 2. performing actions (potentially changing conditions)
+ # 3. interacting with other contracts
+ # If these phases are mixed up, the other contract could call
+ # back into the current contract and modify the state or cause
+ # effects (ether payout) to be performed multiple times.
+ # If functions called internally include interaction with external
+ # contracts, they also have to be considered interaction with
+ # external contracts.
+
+ # 1. Conditions
+ # Check if auction endtime has been reached
+ assert block.timestamp >= self.auctionEnd
+ # Check if this function has already been called
+ assert not self.ended
+
+ # 2. Effects
+ self.ended = True
+
+ # 3. Interaction
+ send(self.beneficiary, self.highestBid)
+```
+
+この例は、Vyper のコントラクト構文がどのようなものか理解するのに役立つでしょう。 関数と変数のより詳細な説明については、[ドキュメント](https://vyper.readthedocs.io/en/latest/vyper-by-example.html#simple-open-auction)を参照してください。
+
+## Yul と Yul+ {#yul}
+
+イーサリアムを使い始めたばかりで、スマートコントラクト言語を使ってコードを書いたことがない場合は、Solidity や Vyper を利用することをお勧めします。 Yul や Yul+を検討するのは、スマートコントラクトのセキュリティの最善の方法や、EVM との連携の具体的な内容に精通してからにしてください。
+
+**Yul**
+
+- イーサリアムのための中間言語
+- [EVM](/developers/docs/evm)および[Ewasm](https://github.com/ewasm)というイーサリアム向けの WebAssembly をサポートしており、両方のプラットフォームで使用可能な共通部分として設計されている
+- EVM と eWASM の両方のプラットフォームに同程度のメリットをもたらす、高度な最適化段階を経る対象となる
+
+**Yul+**
+
+- Yul に高効率な拡張機能を施した低レベル言語
+- コントラクトの[オプティミスティック・ロールアップ](/developers/docs/scaling/optimistic-rollups/)のために設計された
+- Yul に新しい機能を追加した実験的なアップグレード案として捉えることができる
+
+### 参照すべきリンク {#important-links-2}
+
+- [Yul のドキュメント](https://docs.soliditylang.org/en/latest/yul.html)
+- [Yul+のドキュメント](https://github.com/fuellabs/yulp)
+- [Yul+ Playground](https://yulp.fuel.sh/)
+- [Yul+の紹介記事](https://medium.com/@fuellabs/introducing-yul-a-new-low-level-language-for-ethereum-aa64ce89512f)
+
+### コントラクトのコード例 {#example-contract-2}
+
+以下の簡単な例では、べき乗関数を実装しています。 `solc --strict-assembly --bin input.yul`を使用してコンパイルすることができます。 この例は、input.yul に記述されます。
+
+```
+{
+ function power(base, exponent) -> result
+ {
+ switch exponent
+ case 0 { result := 1 }
+ case 1 { result := base }
+ default
+ {
+ result := power(mul(base, base), div(exponent, 2))
+ if mod(exponent, 2) { result := mul(base, result) }
+ }
+ }
+ let res := power(calldataload(0), calldataload(32))
+ mstore(0, res)
+ return(0, 32)
+}
+```
+
+スマートコントラクトの経験が豊富な場合は、Yul による[ERC20 の完全な実装](https://solidity.readthedocs.io/en/latest/yul.html#complete-erc20-example)をご覧ください。
+
+## Fe {#fe}
+
+- イーサリアム仮想マシン(EVM)向けの静的型付け言語
+- Python と Rust の影響を受けている
+- イーサリアムのエコシステムに不慣れなデベロッパーでも簡単に学習できる言語であることを目標としている
+- Fe の開発は未だ初期段階にあり、2021 年 1 月にアルファ版がリリースされた
+
+### 参照すべきリンク {#important-links-3}
+
+- [GitHub](https://github.com/ethereum/fe)
+- [Fe に関するアナウンス](https://snakecharmers.ethereum.org/fe-a-new-language-for-the-ethereum-ecosystem/)
+- [2021 年の Fe のロードマップ](https://notes.ethereum.org/LVhaTF30SJOpkbG1iVw1jg)
+- [Fe の Discord チャット](https://discord.com/invite/ywpkAXFjZH)
+- [Twitter](https://twitter.com/official_fe)
+
+### コントラクトのコード例 {#example-contract-3}
+
+Fe で実装されたシンプルなコントラクトのコード例を以下に示します。
+
+```
+type BookMsg = bytes[100]
+
+contract GuestBook:
+ pub guest_book: map
+
+ event Signed:
+ book_msg: BookMsg
+
+ pub def sign(book_msg: BookMsg):
+ self.guest_book[msg.sender] = book_msg
+
+ emit Signed(book_msg=book_msg)
+
+ pub def get_msg(addr: address) -> BookMsg:
+ return self.guest_book[addr].to_mem()
+
+```
+
+## 選択方法 {#how-to-choose}
+
+他のプログラミング言語と同様に、個人的な好みだけでなく、行いたいことに最適なツールを選択することが重要です。
+
+まだどの言語も試していない場合に考慮すべき事項をいくつか紹介します。
+
+### Solidity の長所 {#solidity-advantages}
+
+- 初心者向けに、多くのチュートリアルや学習ツールが用意されている。 詳細については、[コーディングで学ぶ](/developers/learning-tools/)セクションを参照
+- 優れた開発ツールが利用可能
+- Solidity には大きなデベロッパーコミュニティがあり、質問に対する答えをすぐに見つけることができる
+
+### Vyper の長所 {#vyper-advatages}
+
+- Python デベロッパーが、スマートコントラクトの記述を始めるのに最適な方法である
+- Vyper の機能の数は絞られているため、アイデアから素早くプロトタイプを構築可能
+- Vyper は監査が容易で、最大限に人間が読めるようにすることを目指している
+
+### Yul と Yul+の長所 {#yul-advantages}
+
+- シンプルで機能的な低レベル言語
+- 生の EVM に近づくことができ、コントラクトのガス使用量を最適化するのに役立つ
+
+## 言語比較 {#language-comparisons}
+
+コントラクトのライフサイクル、インターフェイス、演算子、データ構造、関数、制御フローなどの基本的な構文の比較については、 [Auditless によるチートシート](https://reference.auditless.com/cheatsheet/)を参照してください。
+
+## 参考文献 {#further-reading}
+
+- [OpenZeppelin による Solidity コントラクトライブラリ](https://docs.openzeppelin.com/contracts)
+- [Solidity by Example](https://solidity-by-example.org)
diff --git a/src/content/translations/ja/developers/docs/smart-contracts/libraries/index.md b/src/content/translations/ja/developers/docs/smart-contracts/libraries/index.md
new file mode 100644
index 00000000000..0f27ec7541f
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/smart-contracts/libraries/index.md
@@ -0,0 +1,112 @@
+---
+title: スマートコントラクトライブラリ
+description:
+lang: ja
+---
+
+プロジェクト内のすべてのスマートコントラクトを一から書く必要はありません。 利用可能なオープンソースのスマートコントラクトライブラリが多数あり、プロジェクトに再利用可能なビルディングブロックが提供されています。これにより、一からやり直す必要がなくなります。
+
+## 前提知識 {#prerequisites}
+
+スマートコントラクトライブラリを使用する前に、スマートコントラクトの構造をよく理解しておくことをお勧めします。 まだ理解していない場合は、[スマートコントラクトの構造](/developers/docs/smart-contracts/anatomy/)を確認してください。
+
+## ライブラリの中身 {#whats-in-a-library}
+
+スマートコントラクトライブラリには、通常、2 種類のビルディングブロックがあります。コントラクトに追加できる再利用可能な振る舞いと、さまざまな標準の実装です。
+
+### 振る舞い {#behaviors}
+
+スマートコントラクトを記述していると、コントラクト内の保護された操作を行うために*管理者*アドレスを割り当てたり、予期せぬ問題が発生した場合に緊急用の*一時停止*ボタンを追加したりと、似たようなパターンを何度も書くことになる可能性があります。
+
+スマートコントラクトライブラリは通常、Solidity で[ライブラリ](https://solidity.readthedocs.io/en/v0.7.2/contracts.html#libraries)または[継承](https://solidity.readthedocs.io/en/v0.7.2/contracts.html#inheritance)を介して、これらの振る舞いを再利用できる実装を提供します。
+
+例として、[OpenZeppelin のコントラクトライブラリ](https://github.com/OpenZeppelin/openzeppelin-contracts)の[`Ownable contract`](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.2.0/contracts/access/Ownable.sol)を簡易にしたバージョンを以下に示します。これは、あるアドレスをコントラクトの所有者として指定し、その所有者のみにメソッドへのアクセスを制限する modifier を提供するコードです。
+
+```solidity
+contract Ownable {
+ address public owner;
+
+ constructor() internal {
+ owner = msg.sender;
+ }
+
+ modifier onlyOwner() {
+ require(owner == msg.sender, "Ownable: caller is not the owner");
+ _;
+ }
+}
+```
+
+コントラクトでこのようなビルディングブロックを使用するには、最初にインポートしてから自身のコントラクトの中で拡張します。 これにより、元になった`Ownable`コントラクトによって提供される修飾子を使用して、独自の関数を保護することができます。
+
+```solidity
+import ".../Ownable.sol"; // Path to the imported library
+
+contract MyContract is Ownable {
+ // The following function can only be called by the owner
+ function secured() onlyOwner public {
+ msg.sender.transfer(1 ether);
+ }
+}
+```
+
+もう一つの一般的な例は、[SafeMath](https://docs.openzeppelin.com/contracts/3.x/utilities#math)または[DsMath](https://dappsys.readthedocs.io/en/latest/ds_math.html)です。 これらは (ベースコントラクトとは対照的に) 言語で提供されていないオーバーフローチェック付きの算術関数を提供するライブラリです。 ネイティブの算術演算の代わりに、これらのライブラリのいずれかを使用することで、悲惨な結果をもたらすオーバーフローからコントラクトを守ることをお勧めします。
+
+### 標準 {#standards}
+
+[構成可能性と相互運用性](/developers/docs/smart-contracts/composability/)を促進するために、イーサリアムコミュニティは**ERC**の形式でいくつかの標準を定義しました。 詳細については、 [標準](/developers/docs/standards/)セクションを参照してください。
+
+ERC をコントラクトの一部として組み込む場合、独自の ERC をロールアウトするよりも、標準の実装を探すことをお勧めします。 最も一般的な ERC の実装は、多くのスマートコントラクトライブラリに含まれています。 例えば、どこにでもある[ERC20 代替可能トークン標準](/developers/tutorials/understand-the-erc-20-token-smart-contract/)は[HQ20](https://github.com/HQ20/contracts/blob/master/contracts/token/README.md)、[DappSys](https://github.com/dapphub/ds-token/)と[OpenZeppelin](https://docs.openzeppelin.com/contracts/3.x/erc20)で見つかります。 さらに、ERC によっては ERC 自体の一部として標準実装を提供することもあります。
+
+特筆すべきは、一部の ERC はスタンドアロンではなく、他の ERC に機能を追加するものであるということです。 例えば、 [ERC2612](https://eips.ethereum.org/EIPS/eip-2612) はユーザビリティを向上させるために ERC20 に拡張機能を追加します。
+
+## ライブラリの追加方法 {#how-to}
+
+プロジェクトにライブラリを含める具体的な手順については、必ずそのライブラリのドキュメントを参照してください。 複数の Solidity コントラクトライブラリは`npm`を使用してパッケージ化されていますので、`npm install`を実行するだけで済みます。 コントラクトを[コンパイル](/developers/docs/smart-contracts/compiling/)するためのほとんどのツールは、`node_modules`でスマートコントラクトライブラリを調べます。そのため、以下のように指定できます。
+
+```solidity
+// This will load the @openzeppelin/contracts library from your node_modules
+import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
+
+contract MyNFT is ERC721 {
+ constructor() ERC721("MyNFT", "MNFT") public { }
+}
+```
+
+使用するメソッドに関係なく、ライブラリを含む場合は[言語](/developers/docs/smart-contracts/languages/)のバージョンを常に気に留めておくようにしてください。 たとえば、Solidity 0.5 でコントラクトを書いている場合は、Solidity 0.6 のライブラリを使用することはできません。
+
+## ライブラリの利用時 {#when-to-use}
+
+プロジェクトにスマートコントラクトライブラリを使用すると、いくつかの利点があります。 まず第一に、自分でコーディングしなくても、すぐに利用可能でシステムに含めることができるビルディングブロックが提供されるため、作業時間を短縮できます。
+
+セキュリティも大きなプラスです。 また、オープンソースのスマートコントラクトライブラリは、頻繁かつ詳細に調査されます。 多くのプロジェクトがそれらのライブラリに依存していることを考えると、コミュニティには継続的な見直しを行おうとする強い動機があります。 再利用可能なコントラクトライブラリ内よりも、アプリケーションコード内の方が、はるかに高い確率でエラーが見つかります。 ライブラリのいくつかは、更なるセキュリティ強化で[外部監査](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/audit)を受けます。
+
+ただし、スマートコントラクトライブラリを使用すると、馴染みのないコードをプロジェクトに組み込むリスクが生じます。 コントラクトをインポートして直接プロジェクトに組み込みたいと思うかもしれませんが、そのコントラクトが何をするものなのかをよく理解していないと、気付かないうちにシステム内で予期せぬ動作による問題を生じさせてしまう恐れがあります。 必ずインポートするコードのドキュメントを読んで、そのコード自体を確認してからプロジェクトの一部にするようにしてください。
+
+最後に、ライブラリを含めるかどうかを決定する際には、その全体的な使用法を考慮してください。 広く採用されているものには、より大きなコミュニティとより多くの目で問題が調査されているという利点があります。 スマートコントラクトを使用して構築する場合、セキュリティが最も重視されるべきです。
+
+## 関連ツール {#related-tools}
+
+**OpenZeppelin Contracts -** **_安全なスマートコントラクト開発のための広く普及しているライブラリ。_**
+
+- [ドキュメント](https://docs.openzeppelin.com/contracts/)
+- [GitHub](https://github.com/OpenZeppelin/openzeppelin-contracts)
+- [コミュニティフォーラム](https://forum.openzeppelin.com/c/general/16)
+
+**DappSys -** **_スマートコントラクトのための安全でシンプルで柔軟なビルディングブロック。_**
+
+- [ドキュメント](https://dappsys.readthedocs.io/)
+- [GitHub](https://github.com/dapphub/dappsys)
+
+**HQ20 - \*\***_実世界向けの完全な機能を備えた分散アプリケーションの構築を支援する、コントラクト、ライブラリ、サンプルを含む Solidity プロジェクト。_\*\*
+
+- [GitHub](https://github.com/HQ20/contracts)
+
+## 関連トピック {#related-tutorials}
+
+- [イーサリアムデベロッパーのためのセキュリティに関する考慮事項](/developers/docs/smart-contracts/security/) _-スマートコントラクトの構築時のセキュリティに関する考慮事項(ライブラリの使用を含む)_
+- [ERC-20 トークンスマートコントラクトを理解する](/developers/tutorials/understand-the-erc-20-token-smart-contract/) _-複数のライブラリで提供される ERC20 標準のチュートリアル_
+
+## さらに学びたい方へ {#further-reading}
+
+_イーサリアムを学ぶために利用したコミュニティリソースはありますか? もしあればページを編集して追加してください!_
diff --git a/src/content/translations/ja/developers/docs/smart-contracts/security/index.md b/src/content/translations/ja/developers/docs/smart-contracts/security/index.md
new file mode 100644
index 00000000000..3995b1b30f9
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/smart-contracts/security/index.md
@@ -0,0 +1,519 @@
+---
+title: スマートコントラクトのセキュリティ
+description: 安全なイーサリアムスマートコントラクトを構築するためのガイドラインの概要
+lang: ja
+---
+
+スマートコントラクトは、非常に柔軟性が高く、大量の値やデータを制御できる能力があり、ブロックチェーン上のコードに基づきイミュータブルな(不変の)ロジックを実行します。 これにより、トラストレスな分散型アプリケーション(Dapp)による活気に満ちたエコシステムが構築され、レガシーシステムと比べて多くの利点をもたらしています。 しかし、これはスマートコントラクトの脆弱性を悪用して利益を得ようとしている攻撃者に機会を与えてしまうことにもなります。
+
+イーサリアムのようなパブリックブロックチェーンは、スマートコントラクトのセキュリティ確保の問題をさらに複雑にします。 デプロイされたコントラクトのコードは*通常*、セキュリティ上の欠陥にパッチを当てるために変更することはできません。一方、スマートコントラクトから盗まれた資産は追跡が非常に難しく、その不変性により、大抵回収できません。
+
+数値は一様ではありませんが、スマートコントラクトのセキュリティ上の欠陥が原因で盗まれたり失われたりした価値の総額は、10 億ドルを超えると推定されています。 これには、[The DAO ハック](https://hackingdistributed.com/2016/06/18/analysis-of-the-dao-exploit/)(現行価格 10 億ドル相当以上の 360 万 ETH の盗難)、[パリティ(Parity)マルチシグウォレットハック](https://www.coindesk.com/30-million-ether-reported-stolen-parity-wallet-breach) (ハッカーによる 3000 万ドルの盗難)、[パリティ(Parity)凍結ウォレット問題](https://www.theguardian.com/technology/2017/nov/08/cryptocurrency-300m-dollars-stolen-bug-ether)(3 億ドル以上の ETH を永遠にロック)などの有名な事件も含まれています。
+
+前述の問題は、デベロッパーに安全で堅牢な回復力のあるスマートコントラクトの構築に労力を費やすことを不可欠にしました。 スマートコントラクトのセキュリティは深刻な課題であり、全てのデベロッパーが学ぶべきことです。 このガイドでは、イーサリアムデベロッパーのためのセキュリティの考慮事項について説明します。さらに、スマートコントラクトのセキュリティ向上に役立つリソースもご紹介します。
+
+## 前提知識 {#prerequisites}
+
+セキュリティに取り組む前に、[スマートコントラクト開発の基礎](/developers/docs/smart-contracts/)に精通しておいてください。
+
+## 安全なイーサリアムスマートコントラクトを構築するためのガイドライン {#smart-contract-security-guidelines}
+
+### 1. 適切なアクセス制御設計 {#design-proper-access-controls}
+
+スマートコントラクトでは、`public`または`external`が記述されている関数は、どの外部所有アカウント (EOA) もしくはコントラクトアカウントからでも呼び出すことができます。 他のコントラクトが自分のコントラクトとやり取りできるようにするには、関数に public の可視性を指定する必要があります。 一方で`private`と記述されている関数は、外部アカウントで呼び出すことはできず、スマートコントラクト内の関数でしか呼び出すことはできません。 全てのネットワーク参加者にコントラクト関数へのアクセスを許可してしまうと、特に、細心の注意が求められる操作(例: 新しいトークンのミントなど)を誰でも実行できる場合に、さまざまな問題を引き起こす可能性があります。
+
+スマートコントラクト関数の無許可での使用を防ぐために、安全なアクセス制御の実装が必要です。 アクセス制御メカニズムは、スマートコントラクトの特定の関数を、コントラクトを管理する責任を負うアカウントなどの承認されたエンティティだけが使用できるように制限します。 **Ownable パターン**と**ロールベースアクセス制御**は、スマートコントラクトでアクセス制御を実装する際に有用なパターンです
+
+#### Ownable パターン {#ownable-pattern}
+
+Ownable パターンでは、コントラクト作成プロセスでアドレスがコントラクトの「オーナー(所有者)」として設定されます。 保護される関数には、`OnlyOwner`修飾子が指定されます。これにより、関数を実行する前にコントラクトが呼び出し元のアドレスのアイデンティティを認証するようになります。 保護された関数に対するコントラクトの所有者以外のアドレスからの呼び出しは、常に取り消されます。これにより、不正なアクセスが防止されます。
+
+#### ロールベースアクセス制御 {#role-based-access-control}
+
+スマートコントラクトに単一のアドレスを`Owner`として登録すると、集中化のリスクをもたらし、単一障害点となります。 所有者のアカウントキーが侵害された場合、攻撃者はその所有者のコントラクトを攻撃できます。 これが、複数の管理アカウントを使用するロールベースアクセス制御パターンを採用した方が良い理由です。
+
+ロールベースアクセス制御では、細心の注意が求められる関数へのアクセスは、信頼できる一連の参加者の間で分散されます。 例えば、あるアカウントがトークンをミントする役割を担い、別のアカウントがアップグレードもしくはコントラクトの一時停止を実行する役割を担います。 このようにアクセス制御を分散化することで、単一障害点を取り除き、ユーザーの信頼の前提を減らします。
+
+##### マルチシグウォレットの使用
+
+安全なアクセス制御を実装するもう一つのアプローチとして、[マルチシグ(複数署名)アカウント](/developers/docs/smart-contracts/#multisig)でコントラクトを管理することもできます。 通常の EOA と異なり、マルチシグアカウントは複数のエンティティに所有されます。また、トランザクションの実行には最低数のアカウントの署名 (例: 5 つのうち 3 つの署名など) が必要です。
+
+アクセス制御でマルチシグ (複数署名) を使用すると、追加のセキュリティレイヤーを導入できます。なぜなら、目的のコントラクトを動作させるには複数の当事者からの同意が必要になるためです。 これは Ownable パターンを使う必要がある場合に特に有用です。これにより、攻撃者や不正な内部関係者が、細心の注意が求められるコントラクト関数を悪意のある目的で操作することをより困難にするためです。
+
+### 2. コントラクト操作の保護に require()、assert()、revert() ステートメントを使用 {#use-require-assert-revert}
+
+前述のように、スマートコントラクトをいったんブロックチェーンにデプロイすると、誰でもその中の public 関数を呼び出すことができます。 外部アカウントがどのようにコントラクトとやり取りするかを事前に知ることはできないため、デプロイする前に、問題のある操作に対して内部的な防御策を講じることが理想的です。 実行する際、特定の要件を満たさない場合は、`require()`、`assert()`、および`revert()`ステートメントを使用して例外をトリガーし、状態変更を元に戻すことにより、スマートコントラクトで正しい動作を強制できます。
+
+**`require()`**: `require`は、関数の開始時に定義され、呼び出された関数が実行される前に、事前に定義された条件を確実に満たすようにします。 `require`ステートメントは、ユーザーの入力の検証、状態変数のチェック、または関数を実行する前に呼び出し元のアカウントのアイデンティティを認証するために使用することができます。
+
+**`assert()`**: `assert()`は、内部エラーの検出や、コード内の「不変条件」の違反をチェックするために使用されます。 不変条件とは、コントラクトの状態に関する論理アサーションであり、すべての関数の実行に対して真 (true) となるべきものです。 不変条件の例としては、トークンコントラクトの最大供給量や残高があげられます。 `assert()` を使用することで、コントラクトが脆弱な状態にならないようにします。もしそうなった場合は、状態変数へのすべての変更がロールバックされます。
+
+**`revert()`**: `revert()` if-else 文の中で使用することができ、必要な条件を満たさない場合に例外を発生させます。 以下のサンプルコントラクトでは、`revert()`によって関数の実行を保護しています。
+
+```
+pragma solidity ^0.8.4;
+
+contract VendingMachine {
+ address owner;
+ error Unauthorized();
+ function buy(uint amount) public payable {
+ if (amount > msg.value / 2 ether)
+ revert("Not enough Ether provided.");
+ // Perform the purchase.
+ }
+ function withdraw() public {
+ if (msg.sender != owner)
+ revert Unauthorized();
+
+ payable(msg.sender).transfer(address(this).balance);
+ }
+}
+```
+
+### 3. スマートコントラクトのテストとコードの正確性の検証 {#test-smart-contracts-and-verify-code-correctness}
+
+[イーサリアム仮想マシン](/developers/docs/evm/)で実行されるコードの不変性は、スマートコントラクトの開発段階において、より高いレベルの品質評価が要求されることを意味しています。 コントラクトを広範にテストし、予期しない結果を観察することでセキュリティは大幅に向上し、長期的にはユーザーを保護することができます。
+
+通常の方法としては、小さな単体テストを作成します。これには、コントラクトがユーザーから受け取ることが予想されるモックデータを使います。 [単体テスト](/developers/docs/smart-contracts/testing/#unit-testing)は、特定の関数の機能をテストしたり、スマートコントラクトが期待通りに動作することを確認したりするのに適しています。
+
+残念ながら、単体テストを単独で行った場合は、スマートコントラクトのセキュリティを向上させるのに最小限の効果しかありません。 単体テストは、関数がモックデータに対して正しく実行されていることを証明するかもしれませんが、作成されたテストに対してのみ有効であるにすぎません。 これは、見落としたエッジケースや脆弱性の検出を難しくするので、スマートコントラクトの安全性を損なう可能性があります。
+
+より良い方法としては、単体テストと[静的・動的解析](/developers/docs/smart-contracts/testing/#static-dynamic-analysis)を用いて実施するプロパティベースのテストを組み合わせることです。 静的解析は、[制御フローグラフ](https://en.wikipedia.org/wiki/Control-flow_graph)や[抽象構文木](https://deepsource.io/glossary/ast/)といった低レベルな表現を頼りに到達可能なプログラムの状態や実行経路を解析します。 一方、ファジング (fuzzing) などの動的解析手法は、ランダムな入力値でコントラクトコードを実行し、セキュリティプロパティに違反する操作を検出します。
+
+[形式検証](/developers/docs/smart-contracts/formal-verification)は、スマートコントラクトのセキュリティプロパティを検証するためのもう一つの手法です。 通常のテストとは異なり、形式検証はスマートコントラクトにエラーがないことを決定的に証明することができます。 これは、望ましいセキュリティプロパティをとらえた形式仕様記述を作成し、コントラクトの形式的モデルがこの仕様に準拠していることを証明することで実現されます。
+
+### 4. 第三者コードレビューの依頼 {#get-independent-code-reviews}
+
+コントラクトのテスト後、セキュリティ上の問題がないか、他者にソースコードの確認を依頼する方法もあります。 テストによってスマートコントラクトのすべての欠陥を発見できるわけではありませんが、第三者によるレビューを受けることで、脆弱性を発見できる可能性が高まります。
+
+#### 監査 {#audits}
+
+スマートコントラクトの監査を委託することは、第三者コードレビューを実施する一つの方法です。 監査人は、スマートコントラクトが安全で、品質不良や設計ミスがないようにする重要な役割を担っています。
+
+それでも、監査を特効薬のように受け止めるのは避けるべきです。 スマートコントラクト監査は、すべてのバグを発見できるわけではなく、主に追加のレビューを提供するためのものです。これは、初回の開発とテストでデベロッパーが見逃した問題を検出するのに役立ちます。 スマートコントラクト監査のメリットを最大限に活かすには、コードを適切に文書化し、インラインコメントを追加するなどの[監査人と協業するための最善の方法](https://twitter.com/tinchoabbate/status/1400170232904400897)も実践する必要があります。
+
+#### バグ報奨金 {#bug-bounties}
+
+バグ報奨金プログラムを設けることは、外部コードレビューを実施するためのもう一つのアプローチです。 バク報奨金とは、アプリケーション内の脆弱性を発見した個人 (通常はホワイトハットハッカー) に与えられる金銭的な報酬です。
+
+バグ報奨金プログラムが適切に機能すれば、ハッカーコミュニティのメンバーは重大な欠陥がないかコードを検査することでインセンティブを得ることができます。 実例としては「無限貨幣バグ」があります。これにより、イーサリアム上で動作している[オプティミズム](https://www.optimism.io/)という[レイヤー 2 プロトコル](https://ethereum.org/en/layer-2/)で、攻撃者が無限にイーサ (Ether) を発行できてしまうというものでした。 幸運なことに、ホワイトハットハッカーは[その欠陥](https://www.saurik.com/optimism.html)を発見しチームに通知したため、[その過程で多額の報酬を得ました](https://cryptoslate.com/critical-bug-in-ethereum-l2-optimism-2m-bounty-paid/)。
+
+バグ報奨金プログラムの報酬額を、危機にさらされている資金の額に比例して設定すると、有効な戦略となります。 「[バグ報奨金スケール](https://medium.com/immunefi/a-defi-security-standard-the-scaling-bug-bounty-9b83dfdc1ba7)」と呼ばれるこのアプローチは、脆弱性を悪用するのではなく、責任をもって開示するように、個人に金銭的なインセンティブを与えるものです。
+
+### 5. スマートコントラクト開発の最善の方法への準拠 {#follow-smart-contract-development-best-practices}
+
+監査やバグ報奨金の制度があるからといって、高品質なコードを書くという責任がなくなるわけではありません。 優れたスマートコントラクトセキュリティは、次の適切な設計と開発プロセスに従うことから始まります。
+
+- Git などのバージョン管理システムにすべてのコードを保存する
+
+- すべてのコードの修正はプルリクエストで行う
+
+- プルリクエストでは、少なくとも 1 人の第三者レビュアーを確保する。プロジェクトを 1 人で進めている場合は、他のデベロッパーを見つけて互いのコードをレビューすることを検討する
+
+- スマートコントラクトのテスト、コンパイル、デプロイに[開発環境](/developers/docs/frameworks/)を使用する
+
+- Mythril や Slither など、基本的なコード解析ツールを使用してコードを実行する。 これは、各プルリクエストがマージされる前に実行し、出力の違いを比較しておくのが理想的である
+
+- コードがエラーなくコンパイルされ、Solidity コンパイラが警告を発していないことを確認する
+
+- [NatSpec](https://solidity.readthedocs.io/en/develop/natspec-format.html)を使用してコードを適切に文書化し、コントラクトのアーキテクチャの詳細を理解しやすい言葉で記述する。 これにより、第三者によるコードの監査やレビューが容易になる
+
+### 6. 堅牢な災害復旧計画の実装 {#implement-disaster-recovery-plans}
+
+安全なアクセス制御の設計、関数修飾子の実装、その他の提案等は、スマートコントラクトのセキュリティを向上させる可能性はありますが、悪意のある攻撃が行われる可能性を完全に排除することはできません。 安全なスマートコントラクトを構築するには、「失敗に備える」ことと攻撃に効果的に対応するための予備計画を持つことが必要になります。 適切な災害復旧計画には、次の構成要素のうち一部またはすべてが組み込まれます。
+
+#### コントラクトのアップグレード {#contract-upgrades}
+
+イーサリアムスマートコントラクトは、デフォルトではイミュータブル (不変) ですが、アップグレードパターンを用いることで可変性をある程度獲得することが可能です。 コントラクトのアップグレードは、重大な欠陥によって古いコントラクトが使用できなくなり、新しいロジックをデプロイすることが最も現実的な選択肢となる場合に必要になります。
+
+コントラクトのアップグレードのメカニズムは様々ですが、「プロキシパターン」はスマートコントラクトのアップグレードでより一般的なアプローチの一つです。 プロキシパターンは、アプリケーションを「状態」と「ロジック」の*2 つの*コントラクトに分割します。 最初のコントラクト (「プロキシコントラクト」と呼ばれる) は、状態変数 (例: ユーザーの残高など) を格納します。一方、2 つ目のコントラクトは (「ロジックコントラクト」と呼ばれる) は、コントラクトの関数を実行するためのコードを保持します。
+
+アカウントは、プロキシコントラクトとやり取りを行います。プロキシコントラクトは、すべての関数の呼び出しを低レベル呼び出しである[`delegatecall()`](https://docs.soliditylang.org/en/v0.8.16/introduction-to-smart-contracts.html?highlight=delegatecall#delegatecall-callcode-and-libraries)を使ってロジックコントラクトへディスパッチします。 通常のメッセージ呼び出しとは異なり、`delegatecall()`は、 ロジックコントラクトのアドレスで実行されるコードが、呼び出し元コントラクトのコンテキスト内で実行されるようにします。 つまり、ロジックコントラクトは、ロジックのストレージではなく、常にプロキシのストレージに書き込みを行い、元の`msg.sender`や`msg.value`の値は保持されるということです。
+
+ロジックコントラクトに呼び出しを委任するには、プロキシコントラクトのストレージにロジックコントラクトのアドレスを格納する必要があります。 したがって、コントラクトのロジックをアップグレードするには、別のロジックコントラクトをデプロイし、プロキシコントラクトに新しいロジックコントラクトのアドレスを格納するだけでよいのです。 プロキシコントラクトに対するその後の呼び出しは、自動的に新しいロジックコントラクトにルーティングされるため、実際にコードを修正することなく、コントラクトを「アップグレード」したことになります。
+
+[コントラクトのアップグレードの詳細](/developers/docs/smart-contracts/upgrading/)
+
+#### 緊急停止 {#emergency-stops}
+
+前述のように、広範な監査とテストでは、スマートコントラクトのすべてのバグを発見することはできません。 デプロイ後にコード内に脆弱性が見つかっても、コントラクトアドレスで実行されるコードを変更することはできないため、パッチを適用することは不可能です。 また、アップグレードメカニズム (例: プロキシパターンなど) は、実装に時間がかかる場合があり (異なる関係者の承認が必要な場合が多いため) 、攻撃者に被害を拡大させる時間を与えるだけです。
+
+最終手段は、コントラクト内の脆弱な関数の呼び出しをブロックする「緊急停止」関数を実装することです。 通常、緊急停止は以下のコンポーネントで構成されています。
+
+1. スマートコントラクトが停止状態かどうかを示す、グローバルなブール型変数。 この変数は、コントラクトを設定するときに`false`に設定されますが、コントラクトが停止すると`true`に戻ります。
+
+2. 実行時に上記ブール型変数を参照する関数。 これらの関数には、スマートコントラクトが停止していない場合はアクセスでき、緊急停止機能がトリガーされるとアクセスできなくなります。
+
+3. 上記ブール型変数を`true`に設定する緊急停止関数へのアクセス権を持つエンティティ。 悪意のある行為を防ぐために、この関数への呼び出しを信頼できるアドレス (例: コントラクトの所有者など) に制限できます。
+
+コントラクトが緊急停止を作動させると、特定の関数は呼び出せなくなります。 これは、グローバル変数を参照する modifier を使って、選択対象の関数をラップすることで実現されます。 下記は、コントラクトへのこのパターンの実装を記述した[例](https://github.com/fravoll/solidity-patterns/blob/master/EmergencyStop/EmergencyStop.sol)です。
+
+```solidity
+// このコードは、専門的な監査を受けておらず、安全性や正確性を約束するものではありません。 自己責任で利用してくだささい。
+
+contract EmergencyStop {
+
+ bool isStopped = false;
+
+ modifier stoppedInEmergency {
+ require(!isStopped);
+ _;
+ }
+
+ modifier onlyWhenStopped {
+ require(isStopped);
+ _;
+ }
+
+ modifier onlyAuthorized {
+ // Check for authorization of msg.sender here
+ _;
+ }
+
+ function stopContract() public onlyAuthorized {
+ isStopped = true;
+ }
+
+ function resumeContract() public onlyAuthorized {
+ isStopped = false;
+ }
+
+ function deposit() public payable stoppedInEmergency {
+ // Deposit logic happening here
+ }
+
+ function emergencyWithdraw() public onlyWhenStopped {
+ // Emergency withdraw happening here
+ }
+}
+```
+
+この例では、緊急停止の基本機能を示しています。
+
+- `isStopped`はブール値で、最初は評価が`false`になっており、コントラクトが緊急モードに入ると、評価が`true`になります。
+
+- 関数修飾子 (modifier)である、`onlyWhenStopped`および `stoppedInEmergency`は、`isStopped`変数をチェックします。 `stoppedInEmergency`は、コントラクトが脆弱な場合にアクセスできないようにする必要がある関数の制御に使用されます(例: `deposit()`など) 。 これらの関数への呼び出しは取り消されます。
+
+`onlyWhenStopped`は、緊急時に呼び出し可能でなければならない関数に使用されます(例: `emergencyWithdraw()`) 。 このような関数は事態の解決に役立つため、「制限されている関数」のリストから除外されます。
+
+緊急停止機能を使用すると、スマートコントラクトの深刻な脆弱性に対処する際に効果的な応急処置を施すことができます。 しかし、デベロッパーが利己的な理由で起動しないように、ユーザーがデベロッパーを信頼する必要性が高まります。 これに対し、オンチェーン投票メカニズムを採用したり、タイムロック、マルチシグウォレットからの承認など、さまざまな方法で緊急停止を分散管理することが解決策として考えられます。
+
+#### イベント監視 {#event-monitoring}
+
+[イベント](https://docs.soliditylang.org/en/v0.8.15/contracts.html#events)で、スマートコントラクト関数への呼び出しを追跡し、状態変数の変更を監視できます。 ある当事者が、セーフティクリティカルな行為(例: 資金の引き出しなど)を行うたびに、イベントを発行するようにスマートコントラクトをプログラムするのが理想的です。
+
+イベントのログを取り、それらをオフチェーンで監視することは、コントラクトの稼働状況の内側を明らかにし、悪意のある行為の早期発見に役立ちます。 これにより、チームはハッキングに迅速に対応し、機能の一時停止やアップグレードの実施など、ユーザーへの影響を軽減するための対策を講じることができます。
+
+また、誰かがコントラクトとやり取りするたびにアラートを自動的に転送する、既製の監視ツールを選択することもできます。 これらのツールを使用すると、トランザクション量、関数呼び出しの頻度、関連する特定の関数など、さまざまなトリガーに基づいてカスタムアラートを作成できます。 具体例としては、単一のトランザクションで引き出された金額が、特定のしきい値を超えたときに発行されるアラートをプログラムできます。
+
+### 7. 安全なガバナンスシステムの設計 {#design-secure-governance-systems}
+
+コアスマートコントラクトの制御をコミュニティメンバーに委任することで、アプリケーションを分散化することができます。 この場合、スマートコントラクトシステムにガバナンスモジュールを組み込みます。これは、コミュニティメンバーが、オンチェーンのガバナンスシステムを介して管理操作を承認できるようにするメカニズムです。 例えば、プロキシコントラクトを新しい実装へアップグレードするという提案について、トークン保有者による投票を行うことができます。
+
+分散型ガバナンスは、特にデベロッパーとエンドユーザーの利害が一致することもあり、有益なものになり得ます。 それでもなお、スマートコントラクトのガバナンスメカニズムは、誤って実装された場合に新しいリスクをもたらすことがあります。 起こり得るシナリオは、攻撃者が[フラッシュローン](/defi/#flash-loans)を利用して膨大な投票力(保有トークン数で測定)を獲得し、悪意のある提案を押し通すというものです。
+
+オンチェーンガバナンスに関連する問題を防ぐ方法の一つとして、[タイムロックの使用](https://blog.openzeppelin.com/protect-your-users-with-smart-contract-timelocks/)が挙げられます。 タイムロックは、特定の時間が経過するまでスマートコントラクトが特定のアクションを実行できないようにするものです。 その他の戦略としては、各トークンがロックされている期間に応じて「投票の重み」を割り当てることや、現在のブロックの代わりに過去の期間 (例: 2 ~ 3 ブロック前) でアドレスの投票力を測定することなどがあります。 どちらの方法も、オンチェーンの投票を思い通りに動かす投票力を短期間で獲得する可能性を減らすことができます。
+
+詳細は、[安全なガバナンスシステムの設計](https://blog.openzeppelin.com/smart-contract-security-guidelines-4-strategies-for-safer-governance-systems/)と[DAO におけるさまざまな投票メカニズム](https://hackernoon.com/governance-is-the-holy-grail-for-daos)をご覧ください。
+
+### 8. コードの複雑さの最小化 {#reduce-code-complexity}
+
+従来のソフトウェアデベロッパーは、ソフトウェア設計に不必要な複雑さを持ち込まないようにするという KISS (Keep It Simple, Stupid) 原則に慣れ親しんでいます。 これは、「複雑なシステムには複雑な障害が発生する」、さらに複雑さによりコストのかかるエラーが発生しやすいという長年の考え方に従ったものです。
+
+スマートコントラクトが高額の価値を制御する可能性があることを考えると、シンプルさを保ってスマートコントラクトを記述することが特に重要になります。 スマートコントラクトをシンプルに記述するコツは、可能な限り[OpenZeppelin コントラクト](https://docs.openzeppelin.com/contracts/4.x/)のような既存のライブラリを再利用することです。 これらのライブラリは、デベロッパーによって広範な監査とテストが行われているため、新しい機能をゼロから書くことでバグを発生させる可能性を減らすことができます。
+
+別の一般的なアドバイスとしては、小さな関数を記述すること、さらにビジネスロジックを複数のコントラクトに分割してコントラクトをモジュラー型にすることがあります。 よりシンプルなコードを書くことで、スマートコントラクトへの攻撃面を減らすだけでなく、システム全体の正確性を推論しやすくなり、設計エラーの可能性を早期に検出できるようになります。
+
+### 9. 一般的なスマートコントラクトの脆弱性からの保護 {#mitigate-common-smart-contract-vulnerabilities}
+
+#### 再入可能 (リエントランシー) {#reentrancy}
+
+EVM は同時実行を許可していません。つまり、メッセージ呼び出しに関わる 2 つのコントラクトは同時に実行できません。 外部呼び出しは、呼び出しが戻るまで呼び出し元のコントラクトの実行とメモリを一時停止させます。その時点で外部呼び出しの実行が正常に進みます。 このプロセスは、別のコントラクトへの[制御フロー](https://www.computerhope.com/jargon/c/contflow.htm)の移動として形式的に記述することが可能です。
+
+ほとんど場合問題は発生しませんが、信頼できないコントラクトに制御フローを移した場合には、再入可能(リエントランシー)などの問題を引き起こす可能性があります。 元の関数の呼び出しが完了する前に、悪意のあるコントラクトが再び脆弱なコントラクトを呼び出す場合に、再入可能(リエントランシー)攻撃が発生します。 例とともに、このタイプの攻撃を詳しく説明します。
+
+誰でもイーサ (Ether) を入出金できるシンプルなスマートコントラクト (「Victim」) を考えてみましょう。
+
+```solidity
+// このコントラクトには、脆弱性があります。 プロダクションでは使用しないでください。
+
+contract Victim {
+ mapping (address => uint256) public balances;
+
+ function deposit() external payable {
+ balances[msg.sender] += msg.value;
+ }
+
+ function withdraw() external {
+ uint256 amount = balances[msg.sender];
+ (bool success, ) = msg.sender.call.value(amount)("");
+ require(success);
+ balances[msg.sender] = 0;
+ }
+}
+```
+
+このコントラクトは、ユーザーが以前コントラクトに入金した ETH を引き出せるように、`withdraw()`関数を公開しています。 引き出しを処理する際、コントラクトは次の操作を行います。
+
+1. ユーザーの ETH 残高を確認します。
+2. 呼び出し元のアドレスへ資金を送金します。
+3. 残高を 0 にリセットし、ユーザーからの追加の引き出しを防止します。
+
+`Victim`コントラクトの`withdraw()`関数は、「checks-interactions-effects」パターンに従っています。 実行に必要な条件 (つまり、ユーザーの ETH 残高がプラスになっているか) が満たされているかどうかを*確認 (checks) *し、呼び出し元のアドレスに ETH を送金するという*相互作用 (interactions) *を行った後、トランザクションの*結果 (effects) * (つまり、ユーザーの残高を減らす) を適用しているのです。
+
+`withdraw()`が外部所有口座 (EOA) から呼び出された場合、この関数は期待どおりに実行されます。つまり、`msg.sender.call.value()`は呼び出し元に ETH を送金します。 しかし、`msg.sender`が`withdraw()`を呼び出すスマートコントラクトアカウントの場合、`msg.sender.call.value()`を使用して資金を送金すると、そのアドレスに保存されているコードの実行もトリガーすることになります。
+
+以下がそのコントラクトアドレスにデプロイされているコードだと想像してみてください。
+
+```solidity
+ contract Attacker {
+ function beginAttack() external payable {
+ Victim(victim_address).deposit.value(1 ether)();
+ Victim(victim_address).withdraw();
+ }
+
+ function() external payable {
+ if (gasleft() > 40000) {
+ Victim(victim_address).withdraw();
+ }
+ }
+}
+```
+
+このコントラクトは以下の 3 つのことを行うように設計されています。
+
+1. 別のアカウント (攻撃者の EOA の可能性あり) からの入金を受け入れます。
+2. Victim コントラクトへ 1 ETH を入金します。
+3. スマートコントラクトに格納された 1 ETH を引き出します。
+
+`Attacker`には、入力となる`msg.sender.call.value`からの残りのガスが 4 万以上なら`Victim`内の`withdraw()`を再度呼び出すもう一つの関数があることを除き問題はありません。 これにより、`Attacker`は`Victim`に再入可能になり、最初の`withdraw`の呼び出しが完了する前に、多くの資金を引き出すことができます。 次のようなサイクルになります。
+
+```solidity
+- 攻撃者のEOAが、1 ETHで「Attacker.beginAttack()」関数を呼び出します。
+- 「Attacker.beginAttack()」関数で、1 ETHを「Victim」へ入金します。
+- 「Attacker」が、「Victim」の「withdraw()」関数を呼び出します。
+- 「Victim」が、「Attacker」の残高を確認します(1 ETH)。
+- 「Victim」が、1 ETHを「Attacker」へ送金します(これが、デフォルトの関数をトリガーします)。
+- 「Attacker」は、「Victim.withdraw()」関数を再度呼び出します(「Victim」は、最初の引き出しから「Attacker」の残高を減らしていないことに注意してください)。
+- 「Victim」は、「Attacker」の残高を確認します(最初の呼び出しの結果が適用されていないため、まだ1 ETHです)。
+- 「Victim」は、1 ETH を「Attacker」へ送金します(これが、デフォルトの関数をトリガーし、「Attacker」が「withdraw」関数に再入できるようにします)。
+- このプロセスは、「Attacker」がガスを使い果たすまで繰り返されます。ガスがなくなると、「msg.sender.call.value」はさらなる引き出しをトリガーせずに戻ります。
+- 「Victim」は、最終的に最初のトランザクション(および後続のトランザクション)の結果をステート(状態)に適用するので、「Attacker」の残高は0に設定されます。
+```
+
+要約すると、関数の実行が完了するまで呼び出し元の残高が 0 にならないため、その後の呼び出しが成功し、呼び出し元が何度も残高を引き出せるようになります。 この種の攻撃は、[2016 年の DAO ハック](https://www.coindesk.com/learn/2016/06/25/understanding-the-dao-attack/)で行われたように、スマートコントラクトから資金を流出させるために使用されます。 [再入可能(リエントランシー)エクスプロイトの公開リスト](https://github.com/pcaversaccio/reentrancy-attacks)が示すように、再入可能攻撃は今日でもスマートコントラクトにとって深刻な問題になっています。
+
+##### 再入可能 (リエントランシー) 攻撃を防ぐ方法
+
+再入可能に対処するアプローチとして、[checks-effects-interactions パターン](https://docs.soliditylang.org/en/develop/security-considerations.html#use-the-checks-effects-interactions-pattern)に従うことが挙げられます。 このパターンは、次のように関数の実行を順序付けるものです。最初に、実行を進める前に必要な確認を行うコードが来ます。次に、コントラクトの状態を操作するコードが来ます。最後に、他のコントラクトや EOA とやり取りをするコードが来ます。
+
+checks-effect-interaction パターンは、以下に示している`Victim`コントラクトの改訂版で使用しています。
+
+```solidity
+contract NoLongerAVictim {
+ function withdraw() external {
+ uint256 amount = balances[msg.sender];
+ balances[msg.sender] = 0;
+ (bool success, ) = msg.sender.call.value(amount)("");
+ require(success);
+ }
+}
+```
+
+このコントラクトは、ユーザーの残高を*確認 (check)* し、`withdraw()`関数の*結果 (effects) *を (ユーザーの残高を 0 にすることで) 適用し、_相互作用 (interaction) _ (ユーザーのアドレスに ETH を送金) の実行へと進みます。 これにより、外部呼び出しの前に、コントラクトがストレージを確実にアップデートするようになり、最初の攻撃を可能にする再入可能の条件が排除されます。 `Attacker`コントラクトは依然として、`NoLongerAVictim`を再び呼び出すことができますが、`balances[msg.sender]`が 0 にセットされているので、さらなる引き出しをしてもエラーがスローされます。
+
+もう一つのオプションは、関数の呼び出しが完了するまで、コントラクトの状態の一部をロックする相互排他ロック (一般的に「ミューテックス」と呼ばれる) を使用することです。 これは、ブール型変数を使って実装されます。関数が実行される前に`true`に設定し、呼び出しが完了した後に`false`に戻します。 以下の例で見られるように、元の呼び出しがまだ処理中であっても、ミューテックスを使うことで再帰的な呼び出しから関数を守ることができます。これにより、効果的に再入可能を防ぐことができます。
+
+```solidity
+pragma solidity ^0.7.0;
+
+contract MutexPattern {
+ bool locked = false;
+ mapping(address => uint256) public balances;
+
+ modifier noReentrancy() {
+ require(!locked, "Blocked from reentrancy.");
+ locked = true;
+ _;
+ locked = false;
+ }
+ // This function is protected by a mutex, so reentrant calls from within `msg.sender.call` cannot call `withdraw` again.
+ // `return`ステートメントは、`true`と評価しますが、まだmodifierのステートメントでは`locked = false`と評価します。
+ function withdraw(uint _amount) public payable noReentrancy returns(bool) {
+ require(balances[msg.sender] >= _amount, "No balance to withdraw.");
+
+ balances[msg.sender] -= _amount;
+ bool (success, ) = msg.sender.call{value: _amount}("");
+ require(success);
+
+ return true;
+ }
+}
+```
+
+また、アカウントに資金を送る「プッシュ型決済」システムではなく、ユーザーがスマートコントラクトから資金を引き出す必要がある[「プル型決済」](https://docs.openzeppelin.com/contracts/4.x/api/security#PullPayment)システムを利用することでも防止可能です。 これにより、不明なアドレスで不注意にコードをトリガーする可能性を取り除けます (特定の DoS 攻撃も防げます) 。
+
+#### 整数のアンダーフローとオーバーフロー {#integer-underflows-and-overflows}
+
+算術演算の結果が許容値の範囲外になると、整数のオーバーフローが発生します。これにより、表現可能な最小値に「ロールオーバー」します。 例えば、`uint8`は、2^8-1=255 までの値だけを格納できます。 `255`を超える値の算術演算の結果はオーバーフローし、`uint`を`0`にリセットします。これは、車のオドメーターが最大走行距離 (999999) に達すると 0 にリセットされるのと同じです。
+
+整数のアンダーフローも同様の理由で発生します。それは算術演算の結果が許容値の範囲を下回った場合です。 例えば、`uint8`で`0`をデクリメントしようと試みると、結果は単純に表現可能な最大値 (`255`) にロールオーバーします。
+
+整数のオーバーフローとアンダーフローのどちらも、コントラクトの状態変数に予期せぬ変更をもたらし、予定外の実行につながる可能性があります。 以下は、攻撃者がスマートコントラクトの算術オーバーフローを悪用して、不正な操作を行う方法を示した例です。
+
+```
+pragma solidity ^0.7.6;
+
+// このコントラクトはタイムボールトとして動作するように設計されています。
+// ユーザーは、このコントラクトへ入金できますが、最低一週間は引き出しができません。
+// ユーザーは、一週間よりも長い待機期間になるように待ち時間を延長することもできます。
+
+/*
+1. TimeLockをデプロイします
+2. TimeLockのアドレスでAttackをデプロイします
+3. Attack.attackを呼び出し、1 ETHを送金します 即座にETHが引き出せるようになります。
+
+何が起きたのでしょうか?
+AttackがTimeLock.lockTimeのオーバーフローを引き起こしたため、設定された一週間の待機期間より前に引き出しが可能になりました。
+*/
+
+contract TimeLock {
+ mapping(address => uint) public balances;
+ mapping(address => uint) public lockTime;
+
+ function deposit() external payable {
+ balances[msg.sender] += msg.value;
+ lockTime[msg.sender] = block.timestamp + 1 weeks;
+ }
+
+ function increaseLockTime(uint _secondsToIncrease) public {
+ lockTime[msg.sender] += _secondsToIncrease;
+ }
+
+ function withdraw() public {
+ require(balances[msg.sender] > 0, "Insufficient funds");
+ require(block.timestamp > lockTime[msg.sender], "Lock time not expired");
+
+ uint amount = balances[msg.sender];
+ balances[msg.sender] = 0;
+
+ (bool sent, ) = msg.sender.call{value: amount}("");
+ require(sent, "Failed to send Ether");
+ }
+}
+
+contract Attack {
+ TimeLock timeLock;
+
+ constructor(TimeLock _timeLock) {
+ timeLock = TimeLock(_timeLock);
+ }
+
+ fallback() external payable {}
+
+ function attack() public payable {
+ timeLock.deposit{value: msg.value}();
+ /*
+ 「t = 現在のロック時間」ならば、xを以下のようにして求める必要があります。
+ x + t = 2**256 = 0
+ so x = -t
+ 2**256 = type(uint).max + 1
+ so x = type(uint).max + 1 - t
+ */
+ timeLock.increaseLockTime(
+ type(uint).max + 1 - timeLock.lockTime(address(this))
+ );
+ timeLock.withdraw();
+ }
+}
+```
+
+##### 整数のアンダーフローとオーバーフローを防ぐ方法
+
+バージョン 0.8.0 以降の Solidity コンパイラは、整数のアンダーフローとオーバーフローを引き起こすコードを拒否します。 しかし、それよりも低いバージョンのコンパイラでコンパイルされたコントラクトでは、算術演算を実行する関数でチェックを行うか、アンダーフローとオーバーフローをチェックするライブラリ (例: [SafeMath](https://docs.openzeppelin.com/contracts/2.x/api/math)) を使用する必要があります。
+
+#### オラクル (Oracle) の改ざん {#oracle-manipulation}
+
+[オラクル (Oracles) ](/developers/docs/oracles/)は、オフチェーン情報を取得し、スマートコントラクトが使用できるようにオンチェーンに送信します。 オラクルを使用すると、資本市場などのオフチェーンシステムと相互運用するスマートコントラクトを設計して、アプリケーションを大幅に拡張できます。
+
+しかし、オラクルに間違いが含まれており、誤った情報をオンチェーンに送信した場合、スマートコントラクトが誤った入力に基づいて実行され、問題が発生する可能性があります。 これが「オラクルの問題」の根拠であり、ブロックチェーンのオラクルからの情報を確実に正確かつ最新で、タイムリーなものにするということが重要になってきます。
+
+関連するセキュリティ上の懸念は、分散型取引所(DEX)などのオンチェーンのオラクルを使用して、資産の現在価格を取得することです。 [分散型金融 (DeFi)](/defi/) 業界のレンディング (貸付) プラットフォームは、多くの場合、これを行ってユーザーの担保の価値を判断し、そのユーザーが借りられる金額を決定します。
+
+DEX の価格は正確であることが多く、これは市場の均衡を取り戻す裁定者によるものです。 しかし、特にオンチェーンオラクルが過去の取引パターンに基づいて資産価格を計算する場合 (通常の計算方法) 、改ざんされる可能性があります。
+
+例えば、攻撃者は、レンディングコントラクトとやり取りする直前に、フラッシュローンを利用して、資産の現在価格を人為的に吊り上げることができます。 DEX に資産価格を問い合わせると、通常よりも高い価値が返ってくる (攻撃者の大量の「買い注文」が資産の需要を歪めているため) ため、本来よりも多くの借入ができます。 このような「フラッシュローン攻撃」は、DeFi アプリケーション間の価格オラクルへの依存を悪用し、プロトコルに数百万ドルの損失を与えたと言われています。
+
+##### オラクルの改ざんを防ぐ方法
+
+オラクルの改ざんを回避するための最小要件としては、単一障害点を避けるために複数のソースから情報を照会する分散型オラクルネットワークを使用することです。 ほとんどの場合、分散型オラクルにはオラクルノードに正しい情報を報告するよう促す暗号経済的なインセンティブが組み込まれており、集中型オラクルよりも安全性が高くなっています。
+
+オンチェーンオラクルに資産価格を照会する場合は、時間加重平均価格 (TWAP) メカニズムを実装しているものを使用することを検討してください。 [TWAP オラクル](https://docs.uniswap.org/protocol/V2/concepts/core-concepts/oracles)は、ある資産の価格を 2 つの異なる時点 (修正可能) で照会し、得られた平均値に基づいて現在価格を計算します。 長い期間を選択することで、直前に行われた大量の注文が資産価格に影響を与えることができないため、価格の不正操作からプロトコルを保護します。
+
+## デペロッパー向けスマートコントラクト・セキュリティリソース {#smart-contract-security-resources-for-developers}
+
+### スマートコントラクト分析とコードの正確性検証ツール {#code-analysis-tools}
+
+- **[テストツールとライブラリ](/developers/docs/smart-contracts/testing/#testing-tools-and-libraries)** - _スマートコントラクトの単体テスト、静的解析、動的解析を行うための業界標準ツールやライブラリのコレクション。_
+
+- **[形式検証ツール](/developers/docs/smart-contracts/formal-verification/#formal-verification-tools)** - _スマートコントラクトの機能的な正しさを検証し、不変条件をチェックするためのツール。_
+
+- **[スマートコントラクト監査サービス](/developers/docs/smart-contracts/testing/#smart-contract-auditing-services)** - _イーサリアム開発プロジェクト向けのスマートコントラクト監査サービスを提供する企業のリスト。_
+
+- **[バグ報奨金プラットフォーム](https://ethereum.org/en/developers/docs/smart-contracts/testing/#bug-bounty-platforms)** - _バグ報奨金の調整と、スマートコントラクトの重大な脆弱性の責任ある開示へ報酬を与えるためのプラットフォーム。_
+
+### スマートコントラクト監視ツール {#smart-contract-monitoring-tools}
+
+- **[OpenZeppelin Defender Sentinels](https://docs.openzeppelin.com/defender/sentinel)** - _スマートコントラクト上のイベント、関数、トランザクションパラメータの自動的な監視と応答を行うツール。_
+
+- **[Tenderly リアルタイムアラート](https://tenderly.co/alerting/)** - _スマートコントラクトやウォレットに異常なイベントや予期せぬイベントが発生した場合に、通知をリアルタイムに受けとるためのツール。_
+
+### スマートコントラクトのセキュリティ管理ツール {#smart-contract-administration-tools}
+
+- **[OpenZeppelin Defender Admin](https://docs.openzeppelin.com/defender/admin)** - _アクセス制御、アップグレード、一時停止など、スマートコントラクトの管理を行うためのインターフェイス。_
+
+- **[Gnosis Safe](https://gnosis.io/safe/)** - _イーサリアム上で動作し、トランザクションが発生する前に最低人数 (N 人中の M 人) の承認が必要なスマートコントラクトウォレット。_
+
+- **[OpenZeppelin コントラクト](https://docs.openzeppelin.com/contracts/4.x/)** - _コントラクトの所有権、アップグレード、アクセス制御、ガバナンス、一時停止機能など、管理機能を実装するためのコントラクトライブラリ。_
+
+### スマートコントラクトの既知の脆弱性・悪用事例の公開情報
+
+{#common-smart contract-vulnerabilities-and-exploits}
+
+- **[ConsenSys: スマートコントラクトの既知の攻撃](https://consensys.github.io/smart-contract-best-practices/attacks/)** - _コントラクトの最重要な脆弱性を、ほとんどのケースでサンプルコード付きで初心者にもわかりやすく解説。_
+
+- **[SWC レジストリ](https://swcregistry.io/)** - _イーサリアムスマートコントラクトに適用される共通脆弱性タイプ一覧 (CWE) アイテムの厳選リスト。_
+
+- **[Rekt](https://rekt.news/)** - _注目の暗号ハッキングやエクスプロイトを、詳細な事後分析レポートとともに定期的に更新して公開。_
+
+### スマートコントラクトのセキュリティ学習課題 {#challenges-for-learning-smart-contract-security}
+
+- **[Awesome BlockSec CTF](https://github.com/blockthreat/blocksec-ctfs)** - _ブロックチェーンセキュリティの机上演習、課題、[Capture The Flag](https://www.webopedia.com/definitions/ctf-event/amp/)コンペやソリューション記事の厳選リスト。_
+
+- **[Damn Vulnerable DeFi](https://www.damnvulnerabledefi.xyz/)** - _DeFi スマートコントラクトの攻撃的なセキュリティを学び、バグハンティングやセキュリティ監査のスキルを身につけるための机上演習。_
+
+- **[Ethernaut](https://ethernaut.openzeppelin.com/)** - _各レベルが「ハッキング」する必要のあるスマートコントラクトになっている、Web3/Solidity ベースの机上演習。_
+
+### スマートコントラクトのセキュリティを確保する最善の方法 {#smart-contract-security-best-practices}
+
+- **[ConsenSys: イーサリアムスマートコントラクトのセキュリティの最善の方法](https://consensys.github.io/smart-contract-best-practices/)** - _イーサリアムスマートコントラクトのセキュリティを確保するためのガイドラインの包括的なリスト。_
+
+- **[Nascent: シンプルセキュリティツールキット](https://github.com/nascentxyz/simple-security-toolkit)** - _スマートコントラクト開発のための、セキュリティに特化した実践的なガイドとチェックリストのコレクション。_
+
+- **[Solidity パターン](https://fravoll.github.io/solidity-patterns/)** - _スマート コントラクトプログラミング言語「Solidity」の安全なパターンと最善の方法に関して役立つ情報をまとめたもの。_
+
+- **[Solidity ドキュメント: セキュリティ考慮事項](https://docs.soliditylang.org/en/v0.8.16/security-considerations.html)** - _Solidity で安全なスマートコントラクトを記述するためのガイドライン。_
+
+- **[スマートコントラクトセキュリティ検証標準](https://github.com/securing/SCSVS)** - _デベロッパー、アーキテクト、セキュリティ評価者、ベンダー向けにスマートコントラクトのセキュリティを標準化するために作成された 14 部構成のチェックリスト。_
+
+### スマートコントラクトのセキュリティに関するチュートリアル {#tutorials-on-smart-contract-security}
+
+- [安全なスマートコントラクトコードの記述方法](/developers/tutorials/secure-development-workflow/)
+
+- [Slither を使用してスマートコントラクトのバグを見つける方法](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/)
+
+- [Manticore を使用してスマートコントラクトのバグを見つける方法](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/)
+
+- [スマートコントラクトのセキュリティガイドライン](/developers/tutorials/smart-contract-security-guidelines/)
+
+- [トークンコントラクトと任意のトークンを安全に統合する方法](/developers/tutorials/token-integration-checklist/)
diff --git a/src/content/translations/ja/developers/docs/smart-contracts/testing/index.md b/src/content/translations/ja/developers/docs/smart-contracts/testing/index.md
new file mode 100644
index 00000000000..a7c3b62d815
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/smart-contracts/testing/index.md
@@ -0,0 +1,256 @@
+---
+title: スマートコントラクトのテスト
+description: イーサリアムスマートコントラクトをテストするための手法と考慮事項の概要
+lang: ja
+---
+
+[スマートコントラクト](/developers/docs/smart-contracts/)のテストは、[スマートコントラクトのセキュリティ](/developers/docs/smart-contracts/security/)を向上させる最も重要な対策の 1 つです。 従来のソフトウェアとは異なり、通常、スマートコントラクトは起動後に更新することができないため、イーサリアムネットワークにコントラクトをデプロイする前に厳格なテストを行うことが不可欠です。
+
+## スマートコントラクトのテストとは {#what-is-smart-contract-testing}
+
+スマートコントラクトのテストとは、スマートコントラクトの開発サイクルにおいて、そのソースコードの品質を評価するために詳細な分析と評価を行うことを意味します。 スマートコントラクトをテストすることで、バグや脆弱性の特定が容易になり、コストのかかるエクスプロイトにつながるソフトウェアエラーの可能性を低減することができます。
+
+スマートコントラクトのテストには様々な形態があり、それぞれの手法によってメリットがあります。 イーサリアムスマートコントラクトのテスト戦略は、大きく 2 つに分類されます。**自動テスト**と**手動テスト**です。
+
+### 自動テスト {#automated-testing}
+
+自動テストでは、自動化ツールを使って、スマートコントラクトのスクリプトテストを実施します。 この技術は、スマートコントラクトの欠陥を見つけるためにテストを繰り返し実行できる自動化されたソフトウェアに依存しています。
+
+自動テストは効率的で、使用するリソースも少なく、手動分析よりも高いカバレッジレベルを実現します。 また、自動テストツールにテストデータを設定することで、予測された動作と実際の結果を比較することができます。
+
+### 手動テスト {#manual-testing}
+
+手動テストは、人が介在し、テスト手順を手動で実行するものです。 コード監査は、デベロッパーや監査人がコントラクトコードのすべての行に目を通すもので、スマートコントラクトの手動テストの一例です。
+
+スマートコントラクトの手動テストには、かなりのスキルと、時間、費用、労力の投資が必要です。 さらに、手作業によるテストは、時にヒューマンエラーの問題をはらんでいることがあります。
+
+さらに、手作業によるテストは、時にヒューマンエラーの問題をはらんでいることがあります。 コード監査は、人間の知能を利用して、自動テストでは検出されない可能性のある契約コードの欠陥を見つけます。
+
+スマートコントラクトを手動でテストすることで、コードの外に存在する、しかし影響を及ぼしうる脆弱性を発見することもできます。 例えば、スマートコントラクトの監査では、オフチェーンのコンポーネントとの欠陥のある相互作用に起因する脆弱性を発見することができます。
+
+## スマートコントラクトのテストの重要性 {#benefits-of-smart-contract-testing}
+
+以下の理由により、スマートコントラクトのテストは重要です。
+
+### 1. スマートコントラクトは高価値のアプリケーションである {#smart-contracts-are-high-value-applications}
+
+スマートコントラクトは、特に[分散型金融(DeFi)](/defi/)などの業界において価値の高い金融資産や、[非代替性トークン(NFT)](/nft/)などの有価物を扱うことがよくあります。 そのため、スマートコントラクトの些細な脆弱性が、ユーザーにとって回復不能な巨額の損失につながることがしばしばあります。 しかし、包括的なテストにより、スマートコントラクトのコードの誤りを明らかにし、デプロイする前にセキュリティリスクを低減することができます。
+
+### 2. スマートコントラクトはイミュータブル(不変)である {#smart-contracts-are-immutable}
+
+[イーサリアム仮想マシン(EVM)](/developers/docs/evm/)にデプロイされたスマートコントラクトは、デフォルトでイミュータブル(不変)となっています。 従来のデベロッパーは、発売後にソフトウェアのバグを修正することに慣れているかもしれませんが、イーサリアムの開発では、スマートコントラクトがブロックチェーン上で稼働すると、セキュリティ上の欠陥を修正する余地がほとんどなくなります。
+
+スマートコントラクトのアップグレード可能なメカニズムには、プロキシパターンなどがありますが、これらは実装が難しい場合があります。 アップグレードによって不変性が損なわれ、複雑さが生じるだけでなく、しばしば複雑なガバナンスプロセスが要求されます。
+
+ほとんどの場合、アップグレードは最後の手段と考え、必要な場合を除き避けるべきです。 起動前の段階でスマートコントラクトの潜在的な脆弱性や欠陥を検出することで、ロジックのアップグレードの必要性を減らすことができます。
+
+## スマートコントラクトの自動テスト {#automated-testing-for-smart-contracts}
+
+### 1. 機能テスト {#functional-testing}
+
+機能テストは、スマートコントラクトの機能を検証し、コード内の各機能が期待通りに動作することを保証するものです。 機能テストでは、スマートコントラクトが特定の条件下でどのように動作すべきかを理解する必要があります。 その後、選択した値で計算を実行し、返された出力と期待される出力を比較することで、各機能をテストすることができます。
+
+機能テストには 3 つの手法があります。**単体テスト**、**統合テスト**、**システムテスト**です。
+
+#### 単体テスト
+
+単体テストは、スマートコントラクトの個々のコンポーネントの正確性をテストするものです。 単体テストはシンプルで、素早く実行でき、テストが失敗した場合に何が悪かったのかを明確にすることができます。
+
+スマートコントラクトの開発では、特にコードに新しいロジックを追加する必要がある場合、単体テストは非常に重要です。 各機能の動作を検証し、意図したとおりに実行されることを確認することができます。
+
+多くの場合、単体テストを実行するには、_アサーション_(スマートコントラクトの要件を指定する単純で非公式なステートメント)の作成が必要になります。 単体テストでは、それぞれのアサーションをテストし、実行時にそれが正しいかどうかを確認することができます。
+
+コントラクト関連のアサーションの例としては、以下のものがあります。
+
+I. 「コントラクトを一時停止できるのは管理者のみ」
+
+ii. 「管理者以外は新しいトークンをミントできない」
+
+iii. 「コントラクトはエラーになると元に戻る」
+
+#### 統合テスト
+
+統合テストは、テスト階層において単体テストより上位に位置します。 統合テストでは、スマートコントラクトの個々のコンポーネントが一緒にテストされます。
+
+このアプローチは、コントラクトの異なる構成要素間、または複数のコントラクトにまたがる相互作用に起因するエラーを検出するものです。 複数の機能を持つ複雑なコントラクトや、他のコントラクトとのインターフェイスを持つコントラクトがある場合は、この手法を使用する必要があります。
+
+統合テストは、継承や依存性注入などが適切に動作することを確認するのに便利です。
+
+#### システムテスト
+
+システムテストは、スマートコントラクトの機能テストの最終段階です。 システムテストは、スマートコントラクトを完全に統合された 1 つの製品として評価し、技術要件で指定されたとおりの性能を発揮するかどうかを確認します。
+
+この段階は、ユーザーの視点からスマートコントラクトのエンドツーエンドの流れを確認することだと考えることができます。 スマートコントラクトのシステムテストを行うには、[テストネット](/developers/docs/networks/#ethereum-testnets)や[開発用ネットワーク](/developers/docs/development-networks/)などの本番同様の環境上にデプロイすることが良い方法と言えます。
+
+ここでは、エンドユーザーが試験運用を行い、コントラクトのビジネスロジックや全体的な機能に関する問題を報告することができます。 システムテストが重要なのは、コントラクトがメインの EVM 環境にデプロイされると、コードを変更することができないからです。
+
+### 2. 静的/動的解析 {#static-dynamic-analysis}
+
+スマートコントラクトのセキュリティ品質を評価するための自動テスト手法として、静的解析と動的解析があります。 しかし、どちらの手法も、コントラクトコードの不具合を発見するために、異なるアプローチを採用しています。
+
+#### 静的解析
+
+静的解析は、実行前にスマートコントラクトのソースコードまたはバイトコードを調査します。 つまり、実際にプログラムを実行することなく、コントラクトコードをデバッグすることができるのです。 静的解析ツールは、イーサリアムスマートコントラクトに共通する脆弱性を検出し、最善の方法の遵守を支援します。
+
+#### 動的解析
+
+動的解析手法では、スマートコントラクトをランタイム環境で実行し、コードの問題点を特定する必要があります。 動的コードアナライザーは、実行中のコントラクトの振る舞いを観察し、特定された脆弱性やプロパティ違反の詳細なレポートを生成します。
+
+ファジングは、コントラクトをテストするための動的解析手法の一例です。 ファズテストでは、ファザーがスマートコントラクトに不正なデータを与え、その入力に対してコントラクトがどのように応答するかを監視します。
+
+ファズテストでは、ファザーがスマートコントラクトに不正なデータを与え、その入力に対してコントラクトがどのように応答するかを監視します。 ユーザーが正しい入力をすることを前提としていますが、必ずしもそうであるとは限らないからです。
+
+スマートコントラクトに誤った入力値を送ると、リソースリークやクラッシュを引き起こしたり、最悪の場合、意図しないコードの実行につながったりするケースがあります。 ファジングキャンペーンでは、このような問題を事前に発見し、脆弱性を排除することが可能です。
+
+## スマートコントラクトの手動テスト {#manual-testing-for-smart-contracts}
+
+### 1. コード監査 {#code-audits}
+
+コード監査とは、スマートコントラクトのソースコードを詳細に評価し、起こりうる障害点、セキュリティ上の欠陥、不適切な開発手法を発見することです。 コード監査は自動化することもできますが、ここでは人の手を介したコード解析を指しています。
+
+コード監査では、スマートコントラクトで考えられる攻撃ベクトルをマッピングするために、攻撃者のマインドセットが必要です。 自動監査を行うにしても、ソースコードの一行一行を解析することは、安全なスマートコントラクトを書くための最低条件です。
+
+また、スマートコントラクトの安全性をより確実にするために、セキュリティ監査を依頼することも可能です。 監査では、サイバーセキュリティの専門家による広範な解析が行われ、スマートコントラクトの機能を破壊する可能性のある脆弱性やバグを検出することができます。
+
+### 2. バグ報奨金 {#bug-bounties}
+
+バグ報奨金とは、プログラムのコードに脆弱性やバグを発見し、デベロッパーに報告した個人に与えられる金銭的な報酬のことです。 バグ報奨金は、スマートコントラクトの不具合の発見を他の人に依頼するもので、監査に似ています。 大きな違いは、バグ報奨金プログラムには、デベロッパーコミュニティやハッカーコミュニティからも幅広く参加できるということです。
+
+バグ奨励金プログラムには、独自のスキルや経験を持つ幅広い層の倫理的ハッカーや独立したセキュリティ専門家が多く参加します。 これは、限られた専門知識を持つチームに依存するスマートコントラクト監査にはない利点と言えるでしょう。
+
+## テストと形式検証の比較 {#testing-vs-formal-verification}
+
+テストは、あるデータ入力に対してコントラクトが期待通りの結果を返すことを確認するのに役立ちますが、テストで使用されていない入力に対して同じことを決定的に証明することはできません。 スマートコントラクトのテストは「機能的な正しさ」を保証できません。つまり、入力値や条件の*すべての*セットに対してプログラムが要求通りに動作することを示すことはできないのです。
+
+そのため、デベロッパーはスマートコントラクトの正しさを評価するアプローチに**形式検証**を取り入れることが推奨されています。 形式検証では、[形式手法](https://www.brookings.edu/techstream/formal-methods-as-a-path-toward-better-cybersecurity/)(ソフトウェアを仕様化し検証するための数学的に厳密な技法)を用います。
+
+形式検証は、デベロッパーがスマートコントラクトに関連する仮定を形式的に検証するのに役立つため、スマートコントラクトにとって重要であると考えられています。 これは、スマートコントラクトの特性を記述した形式的な仕様を作成し、スマートコントラクトの形式モデルがその仕様に合致していることを検証することで実現されます。 このアプローチにより、スマートコントラクトはビジネスロジックで定義された機能のみを実行し、それ以外の機能は実行しないという信頼性を高めることができます。
+
+[スマートコントラクトのための形式検証の詳細](/developers/docs/smart-contracts/formal-verification)
+
+## テストのためのツールとライブラリ {#testing-tools-and-libraries}
+
+### 単体テストツール {#unit-testing-tools}
+
+**Solidity-Coverage** - _スマートコントラクトのテストに便利な Solidity のコードカバレッジツールです_。
+
+- [GitHub](https://github.com/sc-forks/solidity-coverage)
+
+**Waffle** - _高度なスマートコントラクトの開発とテストのためのフレームワークです(ethers.js をベースとする)_。
+
+- [ドキュメント](https://ethereum-waffle.readthedocs.io/en/latest/)
+- [GitHub](https://github.com/TrueFiEng/Waffle)
+- [ウェブサイト](https://getwaffle.io/)
+
+**Remix Tests** - _Solidity スマートコントラクトをテストするためのツールです。 Remix IDE の「Solidity Unit Testing」プラグインで動作します。このプラグインは、コントラクトのテストケースの作成と実行に使用されます。_
+
+- [ドキュメンテーション](https://remix-ide.readthedocs.io/en/latest/unittesting.html)
+- [GitHub](https://github.com/ethereum/remix-project/tree/master/libs/remix-tests)
+
+**OpenZeppelin テストヘルパー -** _イーサリアムスマートコントラクトテストのためのアサーションライブラリです。 コントラクトが期待通りに動作することを確認してください。_
+
+- [GitHub](https://github.com/OpenZeppelin/openzeppelin-test-helpers)
+- [ドキュメント](https://docs.openzeppelin.com/test-helpers)
+
+**Truffle スマートコントラクトテストフレームワーク** - _自動テストフレームワークにより、コントラクトのテストを簡単に行うことができます。_
+
+- [ドキュメント](https://trufflesuite.com/docs/truffle/testing/testing-your-contracts/)
+- [ウェブサイト](https://trufflesuite.com/)
+
+**ユニットテストフレームワーク Brownie** - _Brownie は、最小限のコードで小さなテストを作成することができ、大規模なプロジェクトでもうまく拡張できる、機能豊富なテストフレームワークである Pytest を利用しています。_
+
+- [ドキュメント](https://eth-brownie.readthedocs.io/en/v1.0.0_a/tests.html)
+- [GitHub](https://github.com/eth-brownie/brownie)
+
+**Foundry Tests** - _Foundry 社は、シンプルな単体テスト、ガス最適化チェック、コントラクトファジングを実行できる、高速で柔軟なイーサリアムテストフレームワークである Forge を提供しています。_
+
+- [GitHub](https://github.com/foundry-rs/foundry/tree/master/forge)
+- [ドキュメント](https://book.getfoundry.sh/forge/)
+
+**Etheno** - _JSON RPC マルチプレクサ、解析ツールラッパー、テスト統合ツールからなるオールインワンのイーサリアムテストツールです。 Etheno は、大規模なマルチコントラクトプロジェクトにおいて、Manticore や Echidna のような分析ツールを設定する複雑さを解消します。_
+
+- [GitHub](https://github.com/crytic/etheno)
+
+### 静的解析ツール {#static-analysis-tools}
+
+**Mythril** - _Taint 解析、Concolic 解析、制御フローチェックを用いてコントラクトの脆弱性を検出する EVM バイトコード評価ツールです_。
+
+- [GitHub](https://github.com/ConsenSys/mythril-classic)
+- [ドキュメント](https://mythril-classic.readthedocs.io/en/master/about.html)
+
+**Slither** - _Python ベースの Solidity 静的解析フレームワークで、脆弱性の発見、コード理解の強化、スマートコントラクトのカスタム解析の記述に使用します。_
+
+- [GitHub](https://github.com/crytic/slither)
+
+**Rattle** - _デプロイされたスマートコントラクトで動作するように設計された EVM バイトコード静的解析フレームワークです。_
+
+- [GitHub](https://github.com/crytic/rattle)
+
+### 動的解析ツール {#dynamic-analysis-tools}
+
+**Echidna** - _プロパティベースのテストによりスマートコントラクトの脆弱性を検出する高速なコントラクトファザーです_。
+
+- [GitHub](https://github.com/crytic/echidna/)
+
+**Harvey** - _スマートコントラクトのコードのプロパティ違反を検出するのに便利な自動ファジングツールです。_
+
+- [ウェブサイト](https://consensys.net/diligence/fuzzing/)
+
+**Manticore** - _EVM バイトコード解析のための動的シンボリック実行フレームワーク。_
+
+- [GitHub](https://github.com/trailofbits/manticore)
+- [ドキュメント](https://github.com/trailofbits/manticore/wiki)
+
+### スマートコントラクト監査サービス {#smart-contract-auditing-services}
+
+**ConsenSys Diligence** - _スマートコントラクトの監査サービスにより、ブロックチェーンエコシステム全体のプロジェクトについて、プロトコルが起動に適した状態にあり、ユーザーを保護するように構築されていることを確認します。_
+
+- [ウェブサイト](https://consensys.net/diligence/)
+
+**CertiK** - _スマートコントラクトとブロックチェーンネットワークに最先端の形式検証技術を使用する先駆的なブロックチェーンセキュリティ企業です。_
+
+- [ウェブサイト](https://www.certik.com/)
+
+**Trail of Bits** - _セキュリティ研究と攻撃者のメンタリティを融合させ、リスクの低減とコードの堅牢化を図るサイバーセキュリティ企業です。_
+
+- [ウェブサイト](https://www.trailofbits.com/)
+
+**PeckShield** - _ブロックチェーンエコシステム全体のセキュリティ、プライバシー、ユーザビリティのための製品やサービスを提供するブロックチェーンセキュリティ企業です。_
+
+- [ウェブサイト](https://peckshield.com/)
+
+**QuantStamp** - _セキュリティおよびリスク評価サービスを通じて、ブロックチェーン技術の主流化を促進する監査サービスです_。
+
+- [ウェブサイト](https://quantstamp.com/)
+
+**OpenZeppelin** - _分散型システムのセキュリティ監査を提供するスマートコントラクトセキュリティ企業です。_
+
+- [ウェブサイト](https://www.openzeppelin.com/security-audits)
+
+### バグ報奨金プラットフォーム {#bug-bounty-platforms}
+
+**Immunefi** - _スマートコントラクトと DeFi プロジェクトのためのバグ報奨金プラットフォームです。セキュリティ研究者がコードをレビューし、脆弱性を開示し、報酬を得て、暗号をより安全なものにします。_
+
+- [ウェブサイト](https://immunefi.com/)
+
+**HackerOne** - _企業とペネトレーションテスターやサイバーセキュリティ研究者をつなぐ、脆弱性調整とバグ報奨金のプラットフォームです。_
+
+- [ウェブサイト](https://www.hackerone.com/)
+
+## 関連チュートリアル {#related-tutorials}
+
+- [安定性と Truffle 連続統合設定](/developers/tutorials/solidity-and-truffle-continuous-integration-setup/) _– Travis または Circle CI の Truffle テストと有益なプラグインのセットアップ方法_
+- [製品テストの概要](/developers/tutorials/guide-to-smart-contract-security-tools/) _– 様々な製品テストの概要と比較_
+- [スマートコントラクトのテストに Echidna を使用する方法](/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/)
+- [Manticore を使用してスマートコントラクトのバグを見つける方法](/developers/tutorials/how-to-use-manticor-to-find-smart-contract-bugs/)
+- [Slither を使用してスマートコントラクトのバグを見つける方法](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/)
+- [テスト用 Solidity コントラクトのモックの作成方法](/developers/tutorials/how-to-mock-solidity-contracts-for-testing/)
+- [Truffle テストから OpenZeppelin テスト環境に移行する方法](https://docs.openzeppelin.com/test-environment/0.1/migrating-from-truffle)
+- [ネットワークにデプロイした後にスマートコントラクトをテストする方法](https://fulldecent.blogspot.com/2019/04/testing-deployed-ethereum-contracts.html)
+- [JavaScript で学ぶブロックチェーン、Solidity、フルスタック Web3 開発(YouTube)](https://www.youtube.com/watch?v=gyMwXuJrbJQ)
+- [Solidity、ブロックチェーン、スマートコントラクト講座(YouTube)](https://www.youtube.com/watch?v=M576WGiDBdQ)
+
+## 参考文献 {#further-reading}
+
+- [イーサリアムスマートコントラクトのテストに関する徹底的なガイド](https://iamdefinitelyahuman.medium.com/an-in-depth-guide-to-testing-ethereum-smart-contracts-2e41b2770297) - _Ben Hauser_
+- [イーサリアムスマートコントラクトのテスト方法](https://betterprogramming.pub/how-to-test-ethereum-smart-contracts-35abc8fa199d) - _Alex Roan_
diff --git a/src/content/translations/ja/developers/docs/storage/index.md b/src/content/translations/ja/developers/docs/storage/index.md
new file mode 100644
index 00000000000..636dad41c95
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/storage/index.md
@@ -0,0 +1,189 @@
+---
+title: 分散ストレージ
+description: 分散型ストレージとは何であるか、さらに、分散型ストレージをDappに統合するために利用できるツールの概要
+lang: ja
+---
+
+単一の企業ないしは組織に運営されている中央集権型サーバーとは異なり、分散型ストレージシステムは、データ全体の一部を保持するユーザーや事業者のピアツーピアネットワークで構成されます。これにより、耐障害性のあるファイルストレージ共有システムを構築することができます。 これらの分散型ストレージシステムは、ブロックチェーン上のアプリケーションやピアツーピアをベースとしたネットワークに取り入れることができます。
+
+イーサリアム自体を分散型ストレージシステムとして使用することができ、全てのスマートコントラクトのコードストレージがまさにそれにあてはまります。 しかしながら、イーサリアムは大量のデータの保存に適した設計にはなっていません。 チェーンは着実に大きくなっていっており、執筆時点でのイーサリアムチェーンの容量は、([クライアントによって異なりますが、](https://etherscan.io/chartsync/chaindefault))およそ 500GB - 1TB にもなっています。ネットワーク上の全てのノードは、これだけのデータを保存できる必要があります。 チェーンのデータサイズが巨大になってしまった場合(たとえば 5TB)、全てのノードが実行を続けることはとても現実的ではありません。 しかも、これほどのデータをメインネットにデプロイするために必要なコストは、[ガス](/developers/docs/gas)代のために法外なほどに高価なものとなります。
+
+これらの制限のために、大量のデータを分散型の手法で保存するには異なるチェーンか方法が必要になります。
+
+分散型ストレージ(dStorage)を実現する方法を探すとき、ユーザーが念頭に置いておくべきことがいくつかあります。
+
+- 永続化メカニズム/インセンティブ構造
+- データ保持の強制
+- 分散性
+- コンセンサスの方法
+
+## 永続化メカニズム/インセンティブ構造 {#persistence-mechanism}
+
+### ブロックチェーンベース {#blockchain-based}
+
+データの一部を永続的に保存するためには、なんらかの永続化メカニズムを利用する必要があります。 たとえば、イーサリアムでは 1 つのノードを実行する際にチェーン全体で処理を行う必要があるという永続化メカニズムがあります。 新しいデータがチェーンの終わりに追加され、そのデータは増大を続けます。これに伴い、すべてのノードは埋め込まれたすべてのデータを複製する必要があります。
+
+これは、**ブロックチェーンベースの**永続性として知られています。
+
+ブロックチェーンベースの永続性には、チェーンがあまりにも大きくなりすぎると、すべてのデータを維持・保存することが難しくなるという問題があります(例: [多くの資料](https://healthit.com.au/how-big-is-the-internet-and-how-do-we-measure-it/)がインターネットには 40 ゼタバイト以上のストレージ容量が必要だと見積もっています)。
+
+ブロックチェーンには、なんらかの形でインセンティブを発生させる構造が必要です。 ブロックチェーンベースの永続化には、バリデータへの支払いというインセンティブがあります。 データがチェーンに追加されると、バリデータはそのデータを追加することで支払いを受けます。
+
+ブロックチェーンベースの永続性を持つプラットフォーム
+
+- イーサリアム
+- [Arweave](https://www.arweave.org/)
+
+### コントラクトベース {#contract-based}
+
+**コントラクトベース**の永続性では、すべてのノードでデータを複製し永遠に保存することはできないということが分かります。そのため、代わりにコントラクトによる合意で維持しなければなりません。 これらの合意は、複数台のノード間で結ばれる、一定期間データを保持することを約束するものです。 データを保持するためには、コントラクトの期間が切れるたびに払い戻しまたは更新が行われなければなりません。
+
+ほとんどの場合、オンチェーンにすべてのデータを保存する代わりに、チェーン上でデータが保存されている場所のハッシュが保存されます。 こうすることで、すべてのデータを保持するためにチェーン全体を拡張する必要がなくなります。
+
+コントラクトベースの永続性を持つプラットフォーム
+
+- [Filecoin](https://docs.filecoin.io/about-filecoin/what-is-filecoin/)
+- [Skynet](https://siasky.net/)
+- [Storj](https://storj.io/)
+- [0Chain](https://0chain.net/)
+- [Crust Network](https://crust.network)
+
+### その他の考慮事項 {#additional-consideration}
+
+IPFS は、ファイル、ウェブサイト、アプリケーション、データの保存とアクセスのための分散型システムです。 インセンティブスキームは組み込まれていませんが、上記のいずれかのコントラクトベースのインセンティブソリューションとともに、データの長期保持に使用できます。 IPFS でデータを保持するもう一つの方法は、ピンニングサービスというデータを「固定化」してくれるサービスと連携することです。 独自の IPFS ノードを実行して自分のデータや他のユーザーのデータを無料で保持し、ネットワークに貢献することもできます。
+
+- [IPFS (ピアツーピア分散ファイルシステム)](https://docs.ipfs.io/concepts/what-is-ipfs/)
+- [Pinata](https://www.pinata.cloud/) _(IPFS ピンニングサービス)_
+- [web3.storage](https://web3.storage/) _(IPFS/Filecoin ピンニングサービス)_
+- [Infura](https://infura.io/product/ipfs) _(IPFS ピンニングサービス)_
+- [IPFS Scan](https://ipfs-scan.io) _(IPFS ピンニングエクスプローラー)_
+
+## データの保持 {#data-retention}
+
+データを保持するには、システムに、データが保持されていることを確認するための何らかのメカニズムが必要です。
+
+### チャレンジメカニズム {#challenge-mechanism}
+
+データが保持されていることを確認する最も一般的な方法の 1 つに、ある種の暗号論的チャレンジを使用して、ノードにチャレンジを行い、ノードにまだデータがあることを確認するという方法があります。 単純なものとしては、Arweave のプルーフ・オブ・アクセス(PoA)があります。 これは、ノードに対してチャレンジを行い、最新のブロックとランダムな過去ブロックの両方にデータがあるかどうかを確認するものです。 ノードがチャレンジに解答できない場合、ペナルティが課されます。
+
+チャレンジメカニズムを持つ分散型ストレージ(dStorage)のタイプ
+
+- 0Chain
+- Skynet
+- Arweave
+- Filecoin
+- Crust Network
+
+### 分散性 {#decentrality}
+
+プラットフォームの分散化レベルを測る優れたツールはありませんが、一般的に、プラットフォームが中央集権型ではないという証拠を示すために、KYC のようなことを行わないツールを使用することができます。
+
+KYC なしの分散型ツール
+
+- 0Chain (KYC なし版を実装)
+- Skynet
+- Arweave
+- Filecoin
+- IPFS (ピアツーピア分散ファイルシステム)
+- イーサリアム
+- Crust Network
+
+### コンセンサスの方法 {#consensus}
+
+これらのツールのほとんどは、独自のバージョンの[合意メカニズム](/developers/docs/consensus-mechanisms/)を持っていますが、通常は、[**プルーフ・オブ・ワーク(PoW)**](/developers/docs/consensus-mechanisms/pow/)または[**プルーフ・オブ・ステーク(PoS)**](/developers/docs/consensus-mechanisms/pos/)に基づいています。
+
+プルーフ・オブ・ワーク方式:
+
+- Skynet
+- Arweave
+
+プルーフ・オブ・ステーク方式:
+
+- イーサリアム
+- Filecoin
+- 0Chain
+- Crust Network
+
+## 関連ツール {#related-tools}
+
+**IPFS - _IPFS (InterPlanetary File System)は、イーサリアムのための分散ストレージとファイル参照システムです。_**
+
+- [Ipfs.io](https://ipfs.io/)
+- [ドキュメント](https://docs.ipfs.io/)
+- [GitHub](https://github.com/ipfs/ipfs)
+
+**Storj DCS - _デベロッパー向けの安全でプライベートな S3 互換の分散型クラウドオブジェクトストレージです。_**
+
+- [Storj.io](https://storj.io/)
+- [ドキュメント](https://docs.storj.io/)
+
+**Skynet - _Skynet は、分散型 Web 専用の分散型 PoW チェーンです。_**
+
+- [Skynet.net](https://siasky.net/)
+- [ドキュメント](https://siasky.net/docs/)
+- [GitHub](https://github.com/SkynetLabs/)
+
+**Filecoin - _Filecoin は、IPFS の開発チームによって作成されたものです。 IPFS の理想形をベースとしたインセンティブレイヤーです。_**
+
+- [Filecoin.io](https://filecoin.io/)
+- [ドキュメント](https://docs.filecoin.io/)
+- [GitHub](https://github.com/filecoin-project/)
+
+**Arweave - _Arweave は、データを保存するための分散型ストレージ(dStorage)プラットフォームです。_**
+
+- [Arweave.org](https://www.arweave.org/)
+- [ドキュメント](https://docs.arweave.org/info/)
+- [Arweave](https://github.com/ArweaveTeam/arweave/)
+
+**0chain - _0Chain は、シャーディングとブロバーを備えたプルーフ・オブ・ステークの分散型ストレージ(dStorage)プラットフォームです。_**
+
+- [0Chain.net](https://0chain.net/)
+- [ドキュメント](https://docs.0chain.net/0chain/)
+- [GitHub](https://github.com/0chain/)
+
+**Crust Network - _Crust は、IPFS ベースの分散型ストレージ(dStorage)プラットフォームです。_**
+
+- [Crust.network](https://crust.network)
+- [ドキュメント](https://wiki.crust.network)
+- [GitHub](https://github.com/crustio)
+
+**Swarm - _イーサリアム Web3 スタックのための分散型ストレージプラットフォームとコンテンツ配信サービスです。_**
+
+- [EthSwarm.org](https://www.ethswarm.org/)
+- [ドキュメント](https://docs.ethswarm.org/docs/)
+- [GitHub](https://github.com/ethersphere/)
+
+**OrbitDB - _IPFS ベースの分散型ピアツーピアデータベースです。_**
+
+- [OrbitDB.org](https://orbitdb.org/)
+- [ドキュメント](https://github.com/orbitdb/field-manual/)
+- [GitHub](https://github.com/orbitdb/orbit-db/)
+
+**Aleph.im - _分散型クラウドプロジェクト(データベース、ファイルストレージ、コンピューティング、DID)です。 オフチェーンとオンチェーンのピアツーピア技術のユニークなブレンド。 IPFS とマルチチェーン互換性。_**
+
+- [Aleph.im](https://aleph.im/)
+- [ドキュメント](https://aleph.im/#/developers/)
+- [GitHub](https://github.com/aleph-im/)
+
+**Ceramic - _データリッチで魅力的なアプリケーションのためのユーザー制御 IPFS データベースストレージです。_**
+
+- [Ceramic.network](https://ceramic.network/)
+- [ドキュメント](https://developers.ceramic.network/learn/welcome/)
+- [GitHub](https://github.com/ceramicnetwork/js-ceramic/)
+
+**Filebase - _初の S3 互換オブジェクトストレージ プラットフォームで、IPFS、Sia、Skynet、Storj など複数の分散型ストレージ ネットワークにわたってデータを保存することが可能です_。**
+
+- [Filebase.com](https://filebase.com/)
+- [ドキュメント](https://docs.filebase.com/)
+- [GitHub](https://github.com/filebase)
+
+## 参考文献 {#further-reading}
+
+- [分散型ストレージとは](https://coinmarketcap.com/alexandria/article/what-is-decentralized-storage-a-deep-dive-by-filecoin) - _CoinMarketCap_
+- [分散型ストレージに関する 5 つの一般的な通念を覆す](https://www.storj.io/blog/busting-five-common-myths-about-decentralized-storage) - _Storj_
+
+_イーサリアムを学ぶために利用したコミュニティリソースはありますか? ページを編集して追加してください。_
+
+## 関連トピック {#related-topics}
+
+- [開発フレームワーク](/developers/docs/frameworks/)
diff --git a/src/content/translations/ja/developers/docs/transactions/index.md b/src/content/translations/ja/developers/docs/transactions/index.md
new file mode 100644
index 00000000000..b87dde772c7
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/transactions/index.md
@@ -0,0 +1,205 @@
+---
+title: トランザクション
+description: イーサリアムトランザクションの概要 - 仕組み、データ構造、およびアプリケーションを介したトランザクションの送信方法
+lang: ja
+---
+
+トランザクションは、アカウントから暗号的に署名された命令のことを意味します。 アカウントはトランザクションを開始し、イーサリアムネットワークの状態を更新します。 最も単純なトランザクションは、あるアカウントから別のアカウントに ETH を転送することです。
+
+## 前提知識 {#prerequisites}
+
+このページの理解を深めるために、事前に[アカウント](/developers/docs/accounts/)と[イーサリアム入門](/developers/docs/intro-to-ethereum/)を読むことをお勧めします。
+
+## トランザクションとは {#whats-a-transaction}
+
+イーサリアムトランザクションとは、コントラクトではなく人間によって管理されたアカウントである外部所有アカウント(EOA)によって開始されたアクションを指します。 例えば、Bob が Alice に 1 ETH を送信するとしましょう。Bob のアカウントから 1 ETH 引き落とされ、Alice のアカウントに振り込みされなければなりません。 この状態の変更はトランザクション内で実行されます。
+
+![状態の変化を起こすトランザクション図](./tx.png) _ [イーサリアム EVM](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)からの図解_
+
+EVM の状態を変更するトランザクションは、ネットワーク全体にブロードキャストされる必要があります。 すべてのノードは、EVM で実行されるトランザクションのリクエストをブロードキャストできます。 この後、バリデータがトランザクションを実行し、結果の状態の変更をネットワークに伝播します。
+
+トランザクションにはフィー(手数料)が必要で、検証されたブロックに含まれる必要があります。 この概要を簡単にするために、ガス代と検証については別のページで取り上げます。
+
+送信されたトランザクションには次の情報が含まれます。
+
+- `recipient` – 受信アドレス(外部所有のアカウントの場合、トランザクションは値を転送。 コントラクトアカウントの場合、トランザクションはコントラクトコードを実行)
+- `signature` – 送信者の識別子。 これは、送信者の秘密鍵がトランザクションに署名し、送信者がこのトランザクションを承認したときに生成される
+- `nonce`-連続的に増加するカウンタで、アカウントから送信されたトランザクション番号を示す
+- `value` – 送信者から受信者へ転送する ETH 額(ETH のデノミネーションの wei)
+- `data` - 任意のデータを含めるオプションのフィールド
+- `gasLimit` – トランザクションで消費できるガスユニットの最大量。 ガスユニットとは、計算ステップを表す。
+- `maxPriorityFeePerGas` - バリデータへのチップとして含まれるガスの最大金額
+- `maxFeePerGas` - トランザクションに支払うガス代の最大金額(`baseFeePerGas`と`maxPriorityFeePerGas`を含む)
+
+ガスとは、バリデータのトランザクションに必要な計算を意味します。 ユーザーはこの計算に手数料を支払う必要があります。 `gasLimit`と`maxPriorityFeePerGas` はバリデータに支払われるトランザクションフィーの上限を決定します。 [ガスの詳細](/developers/docs/gas/)
+
+トランザクションオブジェクトは次のようになります。
+
+```js
+{
+ from: "0xEA674fdDe714fd979de3EdF0F56AA9716B898ec8",
+ to: "0xac03bb73b6a9e108530aff4df5077c2b3d481e5a",
+ gasLimit: "21000",
+ maxFeePerGas: "300",
+ maxPriorityFeePerGas: "10",
+ nonce: "0",
+ value: "10000000000"
+}
+```
+
+しかし、トランザクションオブジェクトは送信者の秘密鍵を使って署名する必要があります。 これは、トランザクションが送信者からのみ行われ、不正に送信されなかったことを証明するものです。
+
+Geth のようなイーサリアムクライアントは、この署名プロセスを処理します。
+
+[JSON-RPC](https://eth.wiki/json-rpc/API)呼び出しの例:
+
+```json
+{
+ "id": 2,
+ "jsonrpc": "2.0",
+ "method": "account_signTransaction",
+ "params": [
+ {
+ "from": "0x1923f626bb8dc025849e00f99c25fe2b2f7fb0db",
+ "gas": "0x55555",
+ "maxFeePerGas": "0x1234",
+ "maxPriorityFeePerGas": "0x1234",
+ "input": "0xabcd",
+ "nonce": "0x0",
+ "to": "0x07a565b7ed7d7a678680a4c162885bedbb695fe0",
+ "value": "0x1234"
+ }
+ ]
+}
+```
+
+応答例:
+
+```json
+{
+ "jsonrpc": "2.0",
+ "id": 2,
+ "result": {
+ "raw": "0xf88380018203339407a565b7ed7d7a678680a4c162885bedbb695fe080a44401a6e4000000000000000000000000000000000000000000000000000000000000001226a0223a7c9bcf5531c99be5ea7082183816eb20cfe0bbc322e97cc5c7f71ab8b20ea02aadee6b34b45bb15bc42d9c09de4a6754e7000908da72d48cc7704971491663",
+ "tx": {
+ "nonce": "0x0",
+ "maxFeePerGas": "0x1234",
+ "maxPriorityFeePerGas": "0x1234",
+ "gas": "0x55555",
+ "to": "0x07a565b7ed7d7a678680a4c162885bedbb695fe0",
+ "value": "0x1234",
+ "input": "0xabcd",
+ "v": "0x26",
+ "r": "0x223a7c9bcf5531c99be5ea7082183816eb20cfe0bbc322e97cc5c7f71ab8b20e",
+ "s": "0x2aadee6b34b45bb15bc42d9c09de4a6754e7000908da72d48cc7704971491663",
+ "hash": "0xeba2df809e7a612a0a0d444ccfa5c839624bdc00dd29e3340d46df3870f8a30e"
+ }
+ }
+}
+```
+
+- `raw`は再帰長プレフィックス(RLP)エンコード形式の署名されたトランザクション
+- `tx`は JSON 形式の署名されたトランザクション
+
+署名ハッシュでトランザクションが送信者から送信され、ネットワークに送信されたことを暗号的に証明することができます。
+
+### データ(data)フィールド {#the-data-field}
+
+大多数のトランザクションは、外部所有アカウント(EOA)からコントラクトにアクセスします。 コントラクトの多くは Solidity で書かれ、 [アプリケーションバイナリインターフェイス (ABI)](/glossary/#abi)に従ってデータフィールドを解釈します。
+
+最初の 4 バイトは、関数の名前と引数のハッシュを使用して、どの関数を呼び出すかを指定します。 [このデータベース](https://www.4byte.directory/signatures/)を使用して、セレクターから関数を識別することができます。
+
+残りのコールデータ(calldata)は [ABI 仕様でエンコードされた](https://docs.soliditylang.org/en/latest/abi-spec.html#formal-specification-of-the-encoding)引数です。
+
+例えば、[このトランザクション](https://etherscan.io/tx/0xd0dcbe007569fcfa1902dae0ab8b4e078efe42e231786312289b1eee5590f6a1)を見てみましょう。 **詳細をクリック**して、コールデータ (calldata)を表示します。
+
+関数セレクタは`0xa9059cbb`です。 [この署名を持つ既知の関数](https://www.4byte.directory/signatures/?bytes4_signature=0xa9059cbb)がいくつかあります。 この場合は、[コントラクトのソース コード](https://etherscan.io/address/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48#code)がイーサリアムにアップロードされているため、`transfer(address,uint256)`関数であることがわかります。
+
+残りのデータは以下の通りです。
+
+```
+0000000000000000000000004f6742badb049791cd9a37ea913f2bac38d01279
+000000000000000000000000000000000000000000000000000000003b0559f4
+```
+
+ABI の仕様により、整数値(20 バイトの整数であるアドレスなど)が、ABI に 32 バイトのワードとして表示され、先頭はゼロで埋めらます。 これから、`to`のアドレスが [`4f6742badb049791cd9a37ea913f2bac38d01279`](https://etherscan.io/address/0x4f6742badb049791cd9a37ea913f2bac38d01279)であることが解ります。 `value`は、0x3b0559f4 = 990206452 です。
+
+## トランザクションの形式 {#types-of-transactions}
+
+イーサリアムでは、いくつかの異なる形式のトランザクションがあります。
+
+- 通常のトランザクション: あるアカウントから別のアカウントへのトランザクション。
+- コントラクト・デプロイ・トランザクション: 「to」のないトランザクションで、データフィールドがコントラクトコードに使用されているもの。
+- コントラクトの実行: デプロイされたスマートコントラクトと相互作用するトランザクション。 この場合、「to」アドレスはスマートコントラクトアドレス。
+
+### ガス {#on-gas}
+
+前述のように、トランザクションを実行するのに[ガス](/developers/docs/gas/)が必要です。 単純な送金トランザクションには、21,000 ユニットのガスが必要です。
+
+つまり、Bob が Alice に 1 ETH を`baseFeePerGas`が 190 gwei、`maxPriorityFeePerGas`が 10 gwei で送るためには、Bob は次のフィー(手数料)を支払う必要があります。
+
+```
+(190 + 10) * 21000 = 4,200,000 gwei
+--or--
+0.0042 ETH
+```
+
+Bob のアカウントから、**-1.0042 ETH** (Alice への送金 1 ETH + ガス代 0.0042 ETH)引き落とされます。
+
+Alice のアカウントに **+1.0 ETH**振り込み
+
+ベースフィーは**-0.00399 ETH**を消費
+
+バリデータは **+0.000210 ETH** のチップを獲得
+
+スマートコントラクトとの対話にもガスが必要です。
+
+![未使用ガスの返金図](./gas-tx.png) _ [イーサリアム EVM](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)からの図解_
+
+トランザクションで使用されなかったガス代は、ユーザーアカウントに返金されます。
+
+## トランザクションのライフサイクル {#transaction-lifecycle}
+
+トランザクションが送信されると、次のことが実行されます。
+
+1. トランザクション送信後、暗号はトランザクションハッシュを生成: `0x97d99bc77292111a21b12c933c949d4f31684f1d6954ff477d0477538ff017`
+2. その後、トランザクションはネットワークにブロードキャストされ、他の多くのトランザクション同様に、プールに含まれる。
+3. バリデータはトランザクションを検証し、それを「成功」とみなすには、トランザクションをブロックに追加する必要がある。
+4. 時間と経過とともに、トランザクションを含むブロックは「正当 (justified)」にアップグレードされ、その後「ファイナライズ (finalized) 」になる。 これらのアップグレードにより、トランザクションの成功と非改ざん性がかなり確実になる。 一度ファイナライズされたブロックは、数十億ドルの費用がかかる攻撃によってのみでしか変更できない。
+
+## ビジュアルデモ {#a-visual-demo}
+
+トランザクション、ガス、マイニングに関する Austin の説明動画をご覧ください。
+
+
+
+## 型付トランザクションエンベロープ(Typed Transaction Envelope) {#typed-transaction-envelope}
+
+イーサリアムは当初、トランザクション形式は 1 つのみでした。 各トランザクションには、ノンス (nonce)、ガス代、ガスリミット、to アドレス、値、データ、v、r、s があります。 これらのフィールドは RLP エンコードされており、次のようになります。
+
+`RLP([nonce, gasPrice, gasLimit, to, value, data, v, r, s])`
+
+イーサリアムは、アクセスリストや[EIP-1559](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1559.md)などの新機能を、レガシーなトランザクション形式に影響を与えずに実装できるよう、複数の種類のトランザクションをサポートするように進化してきました。
+
+[EIP-2718: 型付トランザクションエンベロープ(Typed Transaction Envelope)](https://eips.ethereum.org/EIPS/eip-2718)では、将来のトランザクション形式のためのエンベロープ(外包)となるトランザクション種類を定義します。
+
+EIP-2718 は、型付トランザクションの新しく一般化されたエンベロープです。 この新しい標準では、トランザクションは次のように解釈されます。
+
+`TransactionType || TransactionPayload`
+
+フィールドは次のように定義されます。
+
+- `TransactionType` は、0 ~ 0x7f の数字で、合計 128 種類のトランザクションタイプが可能
+- `TransactionPayload` - トランザクション型式で定義された任意のバイト配列
+
+## 参考文献 {#further-reading}
+
+- [EIP-2718: 型付トランザクションエンベロープ(Typed Transaction Envelope)](https://eips.ethereum.org/EIPS/eip-2718)
+
+_役に立つコミュニティリソースをご存知の場合は、 このページを編集して追加してください。_
+
+## 関連トピック {#related-topics}
+
+- [アカウント](/developers/docs/accounts/)
+- [イーサリアム仮想マシン(EVM)](/developers/docs/evm/)
+- [ガス](/developers/docs/gas/)
diff --git a/src/content/translations/ja/developers/docs/web2-vs-web3/index.md b/src/content/translations/ja/developers/docs/web2-vs-web3/index.md
new file mode 100644
index 00000000000..b343d715329
--- /dev/null
+++ b/src/content/translations/ja/developers/docs/web2-vs-web3/index.md
@@ -0,0 +1,62 @@
+---
+title: Web2とWeb3の比較
+description:
+lang: ja
+---
+
+Web2 とは、多くの人たちが知っている現在のインターネットのことを指します。 ですが、インターネットはユーザーの個人データと引き換えに、サービスを提供する企業によって支配されています。 イーサリアムにおける Web3 とはブロックチェーン上で実行される分散型アプリケーション(Dapp)のことを指します。 分散型アプリ(Dapp)とは、個人データが一部の企業に収益に利用されず、誰でも参加できるアプリケーションです。
+
+より初心者にやさしいリソースをお探しの場合は、 [Web3 入門](/web3/)をご覧ください。
+
+## Web3 のメリット {#web3-benefits}
+
+多くの Web3 デベロッパーが、イーサリアムが「分散型」であるため、この上でアプリケーションを構築することを選択してきました。
+
+- ネットワーク上にいる人は誰でも、サービスを利用する権限を持っており、パーミッションレス
+- 誰もがあなたをブロックしたり、サービスへのアクセスを拒否することはできない
+- 支払いはネイティブトークンであるイーサ(ETH) を介して行われる
+- イーサリアムは「チューリング完全」で、コンピュータ上で出来ることであればなんでもプログラミング可能
+
+## 実際の比較 {#practical-comparisons}
+
+| Web2 | Web3 |
+| --------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
+| Twitter はアカウントやツイートを検閲可能 | コントロールが分散化されているため、Web3 のツイートは検閲不可 |
+| 支払いサービス提供者が、特定の業種の支払いを許可しないことがある | Web3 ネイティブの支払いサービスは、個人情報を必要とせず、業種も問わない(業種などを理由にブロックしない) |
+| サーバがダウンすることがあり、Uber のようなギグエコノミーに従事する労働者の収入に影響を与える可能性がある | イーサリアム上にある数千個のコンピュータと分散的に接続しているため、Web3 サーバはダウンタイムなし |
+
+これは、すべてのサービスが分散型アプリ(Dapp)に移行する必要があると示唆しているものではなく、 Web2 と Web3 サービスの主な違いを示すための例示です。
+
+## Web3 の制限 {#web3-limitations}
+
+Web3 にはいくつかの制限があります。
+
+- スケーラビリティ - 分散化されているため、Web3 ではトランザクションが遅い。 支払いのような状態の変更は、ノードによって処理され、ネットワーク全体に適用される必要がある。
+- UX - Web3 アプリケーションとやり取りするには、追加のステップ、ソフトウェア、トレーニングが必要となり、 既存のサービス Web3 上に構築する上でのハードルになり得る。
+- アクセシビリティ – 現在の Web ブラウザは Web3 の統合が十分でないため、多くのユーザーにとって Web3 は利用しにくい。
+- コスト - 成功を収めている分散型アプリ(Dapp)の多くは、コストがかかっているため、コードのごく一部のみをブロックチェーンに配置。
+
+## 中央集権型と分散型 {#centralization-vs-decentralization}
+
+下記の表は、「中央集権型」と「分散型デジタルネットワーク」の大まかなメリットとデメリットをまとめたものです。
+
+| 中央集権型システム | 分散型システム |
+| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| すべてのコンピュータが、一つの中心のコンピュータに接続しているため、情報の伝播が比較的早い。 | ネットワーク上の最も遠い参加者は、多くのエッジ分離れていることがある。 ネットワークの片側から送信された情報は、反対側に到達するまでに時間がかかることがある。 |
+| 通常、高パフォーマンス(スループットが高く、消費される計算リソースが少ない)、実装が容易。 | 通常、低パフォーマンス(スループットが低く、高い計算リソースが消費)、実装が複雑。 |
+| データが競合する場合、解決は明確で簡単(正しいデータは中央権威に存在)。 | 参加者が同期するデータの状態について矛盾を主張をする場合、解決にはしばしば複雑なプロトコルが必要。 |
+| 単一障害点: 悪意のある実行者が、中央権威をターゲットにし、ネットワークをダウンさせるおそれがある。 | 単一障害点なし: 参加者の大部分が攻撃されたり障害を受けても、ネットワークは機能できる。 |
+| ネットワーク参加者間の調整は、はるかに容易であり、中央権威により処理。 中央権威は、ネットワーク参加者にアップグレード、プロトコルの更新など、ほぼ摩擦を生じさせず適用させることができる。 | ネットワークレベルの意思決定、プロトコルのアップグレードなど、単一のエージェントが最終的な意思決定を行わないため、調整はしばしば困難。 最悪の場合、プロトコルの変更について意見の相違がある場合、ネットワークが分裂することがある。 |
+| 中央権威はデータを検閲でき、ネットワークの一部を他のネットワークと相互作用しないように切断する可能性がある。 | 情報がネットワーク全体に伝播する多くの方法があるため、検閲は非常に困難。 |
+| ネットワークへの参加は中央権威により制御。 | 誰でもネットワークに参加でき、いわゆる「ゲートキーパー」は存在しない。 理想的には、参加費用は非常に低い。 |
+
+これらは、すべてのネットワークに当てはまるわけではないことにご留意ください。 さらに、実際にはネットワークの中央集権化・分散化の度合いはあいまいであり、完全に中央集権化されたネットワークや完全に分散化されたネットワークは存在しません。
+
+## 参考文献 {#further-reading}
+
+- [Web3 とは](/web3/) - _ethereum.org_
+- [Web 3.0 アプリケーションのアーキテクチャ](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application) - _Preethi Kasireddy_
+- [分散化の意味](https://medium.com/@VitalikButerin/the-meaning-of-decentralization-a0c92b76a274) _2017 年 2 月 6 日 - Vitalik Buterin_
+- [非中央集権化が重要な理由](https://medium.com/s/story/why-decentralization-matters-5e3f79f7638e) - _2018 年 2 月 18 日 - Chris Dixon_
+- [Web 3.0 とは、また Web 3.0 が重要な理由](https://medium.com/fabric-ventures/what-is-web-3-0-why-it-matters-934eb07f3d2b) _2019 年 12 月 31 日 - Max Mersch and Richard Muirhead_
+- [Web3.0 が必要な理由](https://medium.com/@gavofyork/why-we-need-web-3-0-5da4f2bf95ab) _2018 年 9 月 12 日 - Gavin Wood_
diff --git a/src/content/translations/nl/decentralized-identity/index.md b/src/content/translations/nl/decentralized-identity/index.md
new file mode 100644
index 00000000000..7ca2f616b6e
--- /dev/null
+++ b/src/content/translations/nl/decentralized-identity/index.md
@@ -0,0 +1,184 @@
+---
+title: Gedecentraliseerde identiteit
+description: Wat is gedecentraliseerde identiteit, en waarom is het belangrijk?
+lang: nl
+template: use-cases
+emoji: ":id:"
+sidebarDepth: 2
+image: ../../../../assets/eth-gif-cat.png
+summaryPoint1: Traditionele identiteitssystemen hebben de uitgifte, het onderhoud en de controle van uw identificatiemiddelen gecentraliseerd.
+summaryPoint2: Gedecentraliseerde identiteit verwijdert vertrouwen op gecentraliseerde derden.
+summaryPoint3: Dankzij crypto hebben gebruikers nu de tools om hun eigen identificaties en attestaties uit te geven, bij te houden en te beheren.
+---
+
+Identiteit vormt vandaag de dag de basis van vrijwel elk aspect in uw leven. Gebruik maken van online diensten, een bankrekening openen, stemmen bij verkiezingen, onroerend goed kopen, een baan zekerstellen - al deze zaken vereisen uw identiteit.
+
+Traditionele identiteitsbeheersystemen hebben echter lang vertrouwd op gecentraliseerde tussenpersonen die uw identificatiegegevens en [attestaties](#what-are-attestations) uitgeven, bewaren en controleren. Dit betekent dat u uw identiteitsgerelateerde informatie niet kunt controleren of beslissen wie toegang heeft tot persoonlijke informatie (PII) en hoeveel toegang deze partijen precies hebben.
+
+Om deze problemen op te lossen, hebben we gedecentraliseerde identiteitssystemen gebouwd op openbare blockchains zoals Ethereum. Gedecentraliseerde identiteit stelt individuen in staat hun identiteitsgerelateerde informatie te beheren. Met gedecentraliseerde identiteitsoplossingen kunt _u_ zelf uw identificatiekenmerken creëren en houdt u zelf uw certificaten bij, zonder te vertrouwen op centrale autoriteiten, zoals dienstverleners of overheden.
+
+## Wat is identiteit {#what-is-identity}
+
+Identiteit betekent iemands gevoel voor zichzelf, gedefinieerd door zijn unieke kenmerken. Identiteit verwijst naar het zijn van een _individu_, d.w.z. een afzonderlijke menselijke entiteit. Identiteit zou ook kunnen verwijzen naar andere niet-menselijke entiteiten, zoals een organisatie of autoriteit.
+
+## Wat zijn identicatiekenmerken? {#what-are-identifiers}
+
+Een identicatiekenmerk is een stuk informatie dat als aanwijzing dient voor een bepaalde identiteit of bepaalde identiteiten. Algemene identificatiekenmerken omvatten:
+
+- Naam
+- Sociale-zekerheidsnummer/BTW-nummer
+- Mobiel (telefoon)nummer
+- Datum en plaats van geboorte
+- Digitale identificatiegegevens, bijv. e-mailadressen, gebruikersnamen, avatars
+
+Deze traditionele identificatiekenmerken worden uitgegeven, beheerd en gecontroleerd door centrale entiteiten. U heeft toestemming nodig van uw regering om uw naam te veranderen of van een social media platform om uw gebruikersnaam te veranderen.
+
+## Wat zijn attesten? {#what-are-attestations}
+
+Een attest is een claim gedaan door een entiteit over een andere entiteit. Als u in de Verenigde Staten woont, dan attesteert het door de afdeling Motorvoertuigen (een entiteit) verstrekte rijbewijs dat u (een andere entiteit) legale toestemming heeft om in een auto te rijden.
+
+Attesten verschillen van identificatiekenmerken. Een attest _bevat_ identificatiekenmerken om te verwijzen naar een bepaalde identiteit en maakt een claim over een kenmerk dat gerelateerd is aan deze identiteit. Dus uw rijbewijs bevat identificatiekenmerken (naam, geboortedatum, adres), maar is ook het attest van uw wettelijke recht om te rijden.
+
+### Wat zijn gedecentraliseerde identificatiekenmerken? {#what-are-decentralized-identifiers}
+
+Traditionele identificatiekenmerken zoals uw wettelijke naam of e-mailadres vertrouwen op derde partijen — overheden en e-mailproviders. Gedecentraliseerde kenmerken (DID's) zijn anders — ze worden niet uitgegeven, beheerd of gecontroleerd door een centrale entiteit.
+
+Gedecentraliseerde identificatiekenmerken worden uitgegeven, beheerd en gecontroleerd door personen. Een [Ethereum-account](/developers/docs/accounts/) is een voorbeeld van een gedecentraliseerd identificatiekenmerk. U kunt zoveel accounts aanmaken als u wilt zonder enige toestemming van wie ook en zonder dat u ze hoeft op te slaan in een centraal register.
+
+Gedecentraliseerde identificatiekenmerken worden opgeslagen op gedistribueerde ledgers (blockchains) of peer-to-peer netwerken. Dit maakt DID's [wereldwijd uniek, oplosbaar met een hoge beschikbaarheid en cryptografisch verifieerbaar](https://w3c-ccg.github.io/did-primer/). Een gedecentraliseerd identificatiekenmerk kan worden geassocieerd met verschillende entiteiten, waaronder mensen, organisaties of overheidsinstellingen.
+
+## Wat maakt gedecentraliseerde identificatiekenmerken mogelijk? {#what-makes-decentralized-identifiers-possible}
+
+### 1. Publieke sleutel-infrastructuur (PKI) {#public-key-infrastructure}
+
+Publieke sleutel-infrastructuur (PKI) is een informatiebeveiligingsmaatregel die een [publieke sleutel](/glossary/#public-key) en [privé-sleutel](/glossary/#private-key) voor een entiteit genereert. Publieke sleutel-cryptografie wordt gebruikt in blockchain-netwerken om gebruikersidentiteiten te verifiëren en eigendom van digitale activa te bewijzen.
+
+Sommige gedecentraliseerde identificatiekenmerken, zoals een Ethereum-account, hebben publieke en privé-sleutels. De publieke sleutel identificeert de account-controller, terwijl de privé-sleutels berichten kunnen ondertekenen en decrypteren voor dit account. PKI biedt bewijzen die nodig zijn om entiteiten te verifiëren en impersonatie en het gebruik van valse identiteiten te voorkomen, met behulp van [cryptografische handtekeningen](https://andersbrownworth.com/blockchain/public-private-keys/) om alle claims te verifiëren.
+
+### 2. Gedecentraliseerde datastores {#decentralized-datastores}
+
+Een blockchain dient als een verifieerbaar dataregister: een open, betrouwbare en gedecentraliseerde opslagplaats van informatie. Het bestaan van openbare blockchains voorkomt de noodzaak om identificatiekenmerken op te slaan in gecentraliseerde registers.
+
+Als iemand de geldigheid van een gedecentraliseerd identificatiekenmerk moet bevestigen, kan hij de bijbehorende publieke sleutel op de blockchain zoeken. Dit is anders dan de traditionele identificatiekenmerken die door derden geauthenticeerd moeten worden.
+
+## Hoe maken gedecentraliseerde kenmerken en attesten gedecentraliseerde identiteit mogelijk? {#how-decentralized-identifiers-and-attestations-enable-decentralized-identity}
+
+Gedecentraliseerde identiteit is het idee dat identiteitsgerelateerde informatie zelfbediend, privé en draagbaar moet zijn, waarbij gedecentraliseerde kenmerken en attesten de primaire bouwstenen zijn.
+
+In de context van een gedecentraliseerde identiteit zijn attesten (ook bekend als [Verifiable Credentials](https://www.w3.org/TR/vc-data-model/)) manipulatiebestendige, cryptografisch verifieerbare claims gemaakt door de uitgever. Elke bevestiging of Verifieerbare Legitimatie (Verifiable Credential) die entiteiten (bijv. een organisatie) uitgeven, is gekoppeld aan hun DID.
+
+Omdat DID's op de blockchain zijn opgeslagen, kan iedereen de geldigheid van een attest verifiëren door de DID van de uitgever op Ethereum te controleren. De Ethereum-blockchain gedraagt zich in wezen als een wereldwijde directory die de verificatie van DID's die gekoppeld zijn aan bepaalde entiteiten mogelijk maakt.
+
+Gedecentraliseerde identificatiekenmerken zijn de reden dat attesten zelfcontrolerend en verifieerbaar zijn. Zelfs als de uitgevende instelling niet meer bestaat, heeft de houder altijd bewijs van de herkomst en geldigheid van het attest.
+
+Gedecentraliseerde kenmerken zijn ook van cruciaal belang voor de bescherming van de privacy van persoonlijke informatie door middel van gedecentraliseerde identiteit. Als een persoon bijvoorbeeld een bewijs van een attest (een rijbewijs) indient, hoeft de verifiërende partij de geldigheid van informatie in het bewijs niet te controleren. In plaats daarvan heeft de verifiërende partij alleen cryptografische garanties nodig voor de authenticiteit van het attest en de identiteit van de uitgevende organisatie om te bepalen of het bewijs geldig is.
+
+## Soorten attesten in gedecentraliseerde identiteit {#types-of-attestations-in-decentralized-identity}
+
+Hoe attestinformatie wordt opgeslagen en opgehaald in een Ethereum-identiteitsecosysteem is anders dan bij traditioneel identiteitsbeheer. Hier is een overzicht van de verschillende benaderingen om attesten uit te geven, op te slaan en te verifiëren in gedecentraliseerde identiteitssystemen:
+
+### Off-chain attesten {#off-chain-attestations}
+
+Een nadeel van opslag van attesten on-chain is dat ze informatie kunnen bevatten die personen liever privé willen houden. De publieke aard van de Ethereum-blockchain maakt het onaantrekkelijk om dergelijke attesten bij te houden.
+
+De oplossing is het uitgeven van attesten, die worden bijgehouden door de gebruikers zelf (off-chain in digitale portemonnees), maar ondertekend met de DID van de uitgever, die on-chain is opgeslagen. Deze attesten worden versleuteld als [JSON Web Tokens](https://en.wikipedia.org/wiki/JSON_Web_Token) en bevatten de digitale handtekening van de uitgever — wat eenvoudige verificatie van off-chain claims mogelijk maakt.
+
+Hier is een hypothetisch scenario om off-chain attesten uit te leggen:
+
+1. Een universiteit (de uitgever) genereert een attest (een digitaal academisch certificaat), ondertekent het met zijn sleutels en geeft het uit aan Bob (de identiteitseigenaar).
+
+2. Bob solliciteert op een baan en wil zijn academische kwalificaties bewijzen aan een werkgever, dus deelt hij het attest vanuit zijn mobiele portemonnee. Het bedrijf (de verifiërende partij) kan dan de geldigheid van het attest bevestigen door de DID van de uitgever te controleren (d.w.z. de publieke sleutel ervan op Ethereum).
+
+### Off-chain attesten met persistente toegang {#offchain-attestations-with-persistent-access}
+
+Onder deze regeling worden attesten omgezet in JSON-bestanden en off-chain opgeslagen (in het ideale geval in een [gedecentraliseerde cloudopslagplatform](/developers/docs/storage/), zoals IPFS of Swarm). Een [hash](/glossary/#hash) van het JSON-bestand wordt echter on-chain opgeslagen en gekoppeld aan een DID via een on-chain register. De bijbehorende DID kan van de uitgever van het attest of van de ontvanger zijn.
+
+Deze aanpak maakt het mogelijk om voor attesten blockchain-gebaseerde persistentie te verkrijgen, terwijl informatie over claims versleuteld en verifieerbaar blijft. Het maakt ook een selectieve openbaarmaking mogelijk, aangezien de houder van de privé-sleutel de informatie kan decoderen.
+
+### On-chain attesten {#onchain-attestations}
+
+On-chain attesten worden bijgehouden in [smart contracts](/developers/docs/smart-contracts/) op de Ethereum-blockchain. Het smart contract (dat handelt als een register) zal een attest toewijzen aan een bijbehorend on-chain gedecentraliseerd identificatiekenmerk (een publieke sleutel).
+
+Hier is een voorbeeld om te laten zien hoe on-chain attesten in de praktijk zouden kunnen werken:
+
+1. Een bedrijf (XYZ Corp) is van plan eigendomsaandelen te verkopen met behulp van een smart contract, maar wil alleen kopers die een achtergrondcontrole hebben voltooid.
+
+2. XYZ Corp kan het bedrijf achtergrondcontroles laten uitvoeren om on-chain attesten op Ethereum uit te geven. Dit attest verklaart dat een persoon de achtergrondcontrole heeft doorstaan zonder dat enige persoonlijke gegevens zijn openbaargemaakt.
+
+3. Het smart contract dat de aandelen verkoopt kan het registercontract controleren voor de identiteit van gescreende kopers; dit maakt het mogelijk voor het smart contract om te bepalen wie de aandelen mag kopen en wie niet.
+
+### Zielsgebonden tokens en identiteit {#soulbound}
+
+[Zielsgebonden tokens](https://vitalik.ca/general/2022/01/26/soulbound.html) (niet-overdraagbare NFT's) kunnen worden gebruikt om informatie te verzamelen die uniek is voor een specifieke portemonnee. Dit creëert in feite een unieke on-chain identiteit gekoppeld aan een bepaald Ethereum-adres, dat tokens kan bevatten die prestaties (bijv. het voltooien van een specifieke online cursus of het verbreken van een score in een game) of deelname aan een gemeenschap vertegenwoordigen.
+
+## Voordelen van gedecentraliseerde identiteit {#benefits-of-decentralized-identity}
+
+1. Gedecentraliseerde identiteit verhoogt de individuele controle op identificatie-informatie. Gedecentraliseerde identificatiekenmerken en attesten kunnen worden geverifieerd zonder te vertrouwen op gecentraliseerde autoriteiten en diensten van derden.
+
+2. Gedecentraliseerde identiteitsoplossingen maken een betrouwbare, naadloze en privacy-beschermingsmethode mogelijk voor het verifiëren en beheren van de gebruikersidentiteit.
+
+3. Gedecentraliseerde identiteit benut blockchain-technologie, wat voor vertrouwen tussen verschillende partijen zorgt en cryptografische garanties biedt om de geldigheid van attesten te bewijzen.
+
+4. Gedecentraliseerde identiteit maakt identiteitsgegevens draagbaar. Gebruikers bewaren attesten en identificatiekenmerken in een mobiele portemonnee en kunnen deze delen met een partij van keuze. Gedecentraliseerde identificatiekenmerken en attesten zijn niet vergrendeld in de database van de uitgevende organisatie.
+
+5. Gedecentraliseerde identiteit moet goed werken met opkomende zero-knowledge-technologieën, die mensen in staat stellen om te bewijzen dat ze iets in bezit hebben of gedaan hebben zonder te onthullen wat het precies is. Dit zou een krachtige manier kunnen zijn om vertrouwen en privacy te combineren voor toepassingen zoals stemmen.
+
+6. Gedecentraliseerde identiteit maakt het voor het anti-Sybil-mechanisme mogelijk om te identificeren wanneer een individu zich voordoet als meerdere individuen om te gamen of om een systeem te spammen.
+
+## Use-cases voor gedecentraliseerde identiteit {#decentralized-identity-use-cases}
+
+Gedecentraliseerde identiteit heeft vele potentiële use-cases:
+
+### 1. Universele logins {#universal-dapp-logins}
+
+Gedecentraliseerde identiteit kan wachtwoordgebaseerde logins vervangen door [gedecentraliseerde authenticatie](https://www.ibm.com/blogs/blockchain/2018/10/decentralized-identity-an-alternative-to-password-based-authentication/). Dienstverleners kunnen attesten uitgeven aan gebruikers, die kunnen worden opgeslagen in een Ethereum-portemonnee. Een voorbeeld hiervan is: een [NFT](/nft/) die de houder toegang geeft tot een online community.
+
+Een functie [Aanmelden met Ethereum](https://login.xyz/) zou dan de servers in staat stellen om het Ethereum-account van de gebruiker te bevestigen en het vereiste attest op te halen van zijn/haar accountadres. Dit betekent dat gebruikers toegang hebben tot platformen en websites zonder lange wachtwoorden te hoeven onthouden, en het verbetert de online ervaring voor gebruikers.
+
+### 2. KYC-verificatie {#kyc-authentication}
+
+Het gebruik van online diensten vereist dat personen attesten en andere gegevens moeten voorleggen, zoals een rijbewijs of een nationaal paspoort. Deze benadering is echter problematisch, omdat particuliere gebruikersinformatie in gevaar kan worden gebracht en dienstverleners de geldigheid van het attest niet kunnen verifiëren.
+
+Gedecentraliseerde identiteit staat bedrijven toe om de conventionele [Know-Your-Customer (KYC)](https://en.wikipedia.org/wiki/Know_your_customer)-processen over te slaan en gebruikersidentiteiten te verifiëren via Verifiable Credentials. Dit vermindert de kosten van identiteitsbeheer en voorkomt het gebruik van valse documenten.
+
+### 3. Stemmen en online gemeenschappen {#voting-and-online-communities}
+
+Online stemmen en sociale media zijn twee nieuwe toepassingen van gedecentraliseerde identiteit. Online verkiezingen zijn vatbaar voor manipulatie, vooral als kwaadwillige spelers valse identiteiten creëren om te kunnen stemmen. Mensen vragen om on-chain attesten te presenteren kan de integriteit van online stemprocessen verbeteren.
+
+Gedecentraliseerde identiteit kan helpen online gemeenschappen te creëren zonder valse accounts. Elke gebruiker zou bijvoorbeeld zijn/haar identiteit moeten verifiëren met behulp van een on-chain identiteitssysteem, zoals de Ethereum Name Service, waardoor de mogelijkheid van bots wordt verkleind.
+
+### 4. Anti-Sybil-bescherming {#sybil-protection}
+
+Sybil-aanvallen verwijzen naar individuele mensen die een systeem valselijk doen denken dat het om meerdere mensen gaat, om zo hun invloed te vergroten. [Subsidies toekennende applicaties](https://gitcoin.co/grants/) die gebruik maken van [kwadratisch stemmen](https://www.radicalxchange.org/concepts/plural-voting/) zijn kwetsbaar voor deze Sybil-aanvallen, omdat de waarde van een subsidie wordt verhoogd wanneer meer personen erop stemmen, wat gebruikers ertoe aanzet om hun bijdragen te verdelen over meerdere identiteiten. Gedecentraliseerde identiteiten helpen dit te voorkomen door de last voor elke deelnemer om te bewijzen dat hij of zij echt een mens is, te verhogen, vaak zonder dat het nodig is om specifieke privé-informatie te onthullen.
+
+## Gebruik gedecentraliseerde identiteit {#use-decentralized-identity}
+
+Er zijn veel ambitieuze projecten die Ethereum als basis voor gedecentraliseerde identiteitsoplossingen gebruiken:
+
+- **[Ethereum Name Service (ENS)](https://ens.domains/)** - _Een gedecentraliseerd benamingssysteem voor on-chain, machine-leesbare identificatiekenmerken, zoals Ethereum-portemonnee-adressen, content hashes en metadata._
+- **[SpruceID](https://www.spruceid.com/)** - _Een gedecentraliseerd identiteitsproject dat gebruikers in staat stelt om hun digitale identiteit te beheren met Ethereum-accounts en ENS-profielen, in plaats van te vertrouwen op diensten van derden._
+- **[Bewijs van Menselijkheid (PoH)](https://www.proofofhumanity.id)** - _Bewijs van Menselijkheid (of Proof of Humanity, PoH) is een sociaal identiteitsverificatiesysteem gebouwd op Ethereum._
+- **[BrightID](https://www.brightid.org/)** - _Een gedecentraliseerd, open-source sociaal identiteitsnetwerk dat probeert de identiteitsverificatie te hervormen door het creëren en analyseren van een sociale grafiek._
+- **[Proof-of-personhood-paspoort](https://proofofpersonhood.com/)** - _Een gedecentraliseerde digitale identiteitsaggregator._
+
+## Verder lezen {#further-reading}
+
+### Artikels {#articles}
+
+- [Blockchain Use Cases: blockchain in digitale identiteit](https://consensys.net/blockchain-use-cases/digital-identity/) — _ConsenSys_
+- [Wat is Ethereum ERC725? Zelf-soeverein identiteitsbeheer op de Blockchain](https://cryptoslate.com/what-is-erc725-self-sovereign-identity-management-on-the-blockchain/) - _Sam Town_
+- [How Blockchain Could Solve the Problem of Digital Identity](https://time.com/6142810/proof-of-humanity/) — _Andrew R. Chow_
+- [What Is Decentralized Identity And Why Should You Care?](https://web3.hashnode.com/what-is-decentralized-identity) — _Emmanuel Awosika_
+
+### Video's {#videos}
+
+- [Gedecentraliseerde identiteit (Bonus Livestream Sessie)](https://www.youtube.com/watch?v=ySHNB1za_SE&t=539s) - _Een geweldige uitleg over gedecentraliseerde identiteit van Andreas Antonopolous_
+- [Aanmelden met Ethereum en gedecentraliseerde identiteit met Ceramic, IDX, React en 3ID Connect](https://www.youtube.com/watch?v=t9gWZYJxk7c) - _YouTube-tutorial over het opbouwen van een identiteitsbeheersysteem voor het creëren, lezen en bijwerken van gebruikersprofielen met behulp van Ethereum-portemonnees door Nader Dabit_
+- [BrightID - Gedecentraliseerde identiteit op Ethereum](https://www.youtube.com/watch?v=D3DbMFYGRoM) — _Bankless podcast over BrightID, een gedecentralisserde identiteitsoplossing voor Ethereum_
+- [The Off Chain Internet: Decentralized Identity & Verifiable Credentials](https://www.youtube.com/watch?v=EZ_Bb6j87mg) — Presentatie op EthDenver 2022 door Evin McMullen
+
+### Gemeenschappen {#communities}
+
+- [ERC-725-alliantie op GitHub](https://github.com/erc725alliance) — _Voorstanders van de ERC725-standaard voor het beheer van identiteit op de Ethereum-blockchain_
+- [SpruceID Discord-server](https://discord.com/invite/Sf9tSFzrnt) — _Gemeenschap voor enthousiastelingen en ontwikkelaars die werken aan Aanmelden met Ethereum_
+- [Veramo Labs](https://discord.gg/sYBUXpACh4) — _Een gemeenschap van ontwikkelaars die bijdraagt aan het bouwen van een kader om gegevens te verifieren voor applicaties_
diff --git a/src/content/translations/nl/defi/index.md b/src/content/translations/nl/defi/index.md
index c9227f83ae0..eeb1932e013 100644
--- a/src/content/translations/nl/defi/index.md
+++ b/src/content/translations/nl/defi/index.md
@@ -5,11 +5,11 @@ lang: nl
template: use-cases
emoji: ":money_with_wings:"
image: ../../../../assets/use-cases/defi.png
-alt: Een Ethereum-logo gemaakt van legostenen.
+alt: Een Eth-logo gemaakt van legostenen.
sidebarDepth: 2
summaryPoint1: Een wereldwijd, open alternatief voor ons huidige financiële systeem.
-summaryPoint2: Producten waarmee u kunt lenen, sparen, investeren, handelen en veel meer.
-summaryPoint3: Gebaseerd op open-source-technologien die iedereen kan gebruiken.
+summaryPoint2: Producten waarmee u kunt lenen, sparen, investeren, handelen en meer.
+summaryPoint3: Gebaseerd op open-source-technologieën die iedereen kan gebruiken.
---
DeFi is een open en globaal financieel systeem gemaakt voor het internettijdperk. Het is een alternatief voor het huidige financiële systeem dat streng gecontrolleerd is en dat op een oude infrastructuur gebouwd is. Het geeft u volledige controlle en inzicht in uw geld. Het geeft u blootstelling aan de mondiale markten en alternatieven voor uw lokale valuta of bankopties. DeFi-producten stellen diensten open voor iedereen met een internetverbinding en zijn grotendeels het eigendom van en worden onderhouden door de gebruikers. Tot dusver zijn er al miljarden dollars aan crypto door DeFi-applicaties gestroomd en dit groeit nog elke dag.
@@ -335,6 +335,7 @@ DeFi is een open-source beweging. De DeFi-protocollen en -applicaties staan alle
- [DeFi Pulse](https://defipulse.com/)
- [DeFi Prime](https://defiprime.com/)
- [DeFi Llama](https://defillama.com/)
+- [DeFi Rate](https://defirate.com/)
### DeFi-artikelen {#defi-articles}
diff --git a/src/content/translations/nl/smart-contracts/index.md b/src/content/translations/nl/smart-contracts/index.md
new file mode 100644
index 00000000000..bbddc18aa9b
--- /dev/null
+++ b/src/content/translations/nl/smart-contracts/index.md
@@ -0,0 +1,94 @@
+---
+title: Smart contracts
+description: Een niet-technische introductie tot smart contracts
+lang: nl
+---
+
+# Inleiding tot smart contracts {#introduction-to-smart-contracts}
+
+Smart contracts zijn de fundamentele bouwstenen van [Ethereum-toepassingen](/dapps/). Het zijn computerprogramma's die zijn opgeslagen op de blockchain waarmee traditionele contracten kunnen worden omgezet in digitale parallellen. Smart contracts zijn heel logisch - ze volgen een "als dit dan dat"-structuur. Dit betekent dat ze zich precies gedragen zoals ze geprogrammeerd zijn en ze niet gewijzigd kunnen worden.
+
+Nick Szabo heeft de term "smart contract" bedacht. In 1994 schreef hij [een inleiding op het concept](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart.contracts.html) en in 1996, [een verkenning van wat smart contracts kunnen doen](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart_contracts_2.html).
+
+Nick Szabo heeft een digitale markt ontworpen die is gebouwd op deze automatische, cryptografisch veilige processen. Een plek waar transacties en zakelijke functies betrouwbaar kunnen plaatsvinden – zonder tussenpersonen. Smart contracts op Ethereum brengen deze visie in de praktijk.
+
+## Wat zijn contracten? {#what-are-contracts}
+
+U denkt waarschijnlijk: _"Ik ben geen advocaat! Waarom zou ik me om contracten bekommeren?"_. Voor de meeste mensen gaan contracten gepaard met onnodig lange algemene voorwaarden of met saaie juridische documenten.
+
+Contracten zijn niet meer dan overeenkomsten. Dat wil zeggen dat elke vorm van overeenkomst kan worden vervat in de voorwaarden van een contract. Verbale overeenkomsten of contracten op papier zijn voor veel dingen aanvaardbaar, maar ze zijn niet zonder gebreken.
+
+### Vertrouwen en contracten {#trust-and-contracts}
+
+Een van de grootste problemen met een traditioneel contract is de noodzaak dat vertrouwde personen het resultaat van het contract volgen.
+
+Hier is een voorbeeld:
+
+Alice en Bob hebben een fietsrace. Laten we zeggen dat Alice $ 10 wed dat ze de race zal winnen. Bob heeft er alle vertrouwen in dat hij de winnaar zal zijn en gaat akkoord met de weddenschap. Uiteindelijk beëindigt Alice de race eerder dan Bob en is zij de duidelijke winnaar. Maar Bob weigert de weddenschap uit te betalen en beweert dat Alice heeft gesjoemeld.
+
+Dit dwaze voorbeeld illustreert het probleem van een niet-slimme overeenkomst. Zelfs als aan de voorwaarden van de overeenkomst wordt voldaan (d.w.z. je bent de winnaar van de race), moet je nog steeds een ander persoon vertrouwen om de overeenkomst uit te voeren (d.w.z. de uitbetaling van de weddenschap).
+
+## Smart contracts {#smart-contracts}
+
+Smart contracts digitaliseren overeenkomsten door de voorwaarden van een overeenkomst om te zetten in computercode die automatisch wordt uitgevoerd wanneer er aan de contractvoorwaarden wordt voldaan.
+
+### Een digitale verkoopautomaat {#vending-machine}
+
+Een eenvoudige metafoor voor een smart contract is een verkoopautomaat die op ongeveer dezelfdemanier werkt als een smart contract: specifieke inputs garanderen een vooraf bepaalde output.
+
+- Je selecteert een product
+- De verkoopautomaat retourneert de hoeveelheid die nodig is om het product te kopen
+- Je voert het juiste bedrag in
+- De verkoopautomaat controleert of je het juiste bedrag hebt ingevoerd
+- De verkoopautomaat geeft je het gekozen product
+
+De verkoopautomaat zal het gewenste product pas losmaken als aan alle vereisten is voldaan. Als je geen product selecteert of niet genoeg geld invoert, zal de automaat het product niet afgeven.
+
+### Automatische uitvoering {#automation}
+
+Een van de belangrijkste voordelen die smart contracts bieden ten opzichte van reguliere contracten is dat het resultaat automatisch wordt uitgevoerd wanneer de contractvoorwaarden worden bereikt. We hoeven niet te wachten op de uitvoering van het resultaat door een mens. Met andere woorden: smart contracts verwijderen de noodzaak van vertrouwen.
+
+U kunt bijvoorbeeld een smart contract opstellen dat fondsen in escrow houdt voor een kind, waarna het kind het geld kan opnemen na een bepaalde datum. Als het kind probeert het geld op te nemen vóór de opgegeven datum, wordt het smart contract simpelweg niet uitgevoerd. Of u kunt een contract schrijven dat u automatisch een digitale versie geeft van een autobewijs wanneer u de dealer betaalt.
+
+### Voorspelbare resultaten {#predictability}
+
+De menselijke factor is een van de grootste mislukkingen bij traditionele contracten. Zo kunnen bijvoorbeeld twee individuele rechters een traditioneel contract op twee verschillende manieren interpreteren. Hun interpretaties kunnen ertoe leiden dat er verschillende beslissingen worden genomen en de resultaten uiteenlopen. Smart contracts elimineren de mogelijkheid van verschillende interpretaties. Smart contracts voeren in plaats daarvan precies uit op basis van de voorwaarden die zijn geschreven in de code van het contract. Deze precisie betekent dat het smart contract onder dezelfde omstandigheden, altijd hetzelfde resultaat zal opleveren.
+
+### Openbaar register {#public-record}
+
+Smart contracts zijn ook nuttig voor audits en tracking. Omdat Ethereum smart contracts op een openbare blockchain staan, kan iedereen informatie over asset transfers en andere gerelateerde informatie direct bijhouden. U kunt bijvoorbeeld controleren of iemand geld naar uw adres heeft gestuurd.
+
+### Privacybescherming {#privacy-protection}
+
+Smart contracts kunnen ook uw privacy beschermen. Omdat Ethereum een pseudonymeus netwerk is (een netwerk waar uw transacties publiekelijk verbonden zijn aan een uniek cryptografische adres, en niet aan uw identiteit), kunt u uw privacy beschermen tegen observeerders.
+
+### Zichtbare voorwaarden {#visible-terms}
+
+Ten slotte kunt u net als bij contracten controleren wat er in een smart contract staat voordat u het ondertekent (of er op andere wijze mee communiceert). Beter nog, publieke transparantie van de voorwaarden in het contract betekent dat iedereen het onder de loep kan nemen.
+
+## Smart contract use-cases {#use-cases}
+
+Smart contracts zijn dus computerprogramma's die op de blockchain leven. Ze kunnen automatisch worden uitgevoerd. U kunt hun transacties bijhouden, voorspellen hoe ze handelen en ze zelfs pseudoniem gebruiken. Dat is geweldig. Maar waar zijn ze goed voor? Nou, smart contracts kunnen in feite alles doen wat andere computerprogramma's doen.
+
+Ze kunnen berekeningen uitvoeren, valuta creëren, gegevens opslaan, NFT's minten, communicatie uitzenden en zelfs afbeeldingen genereren. Hier zijn enkele populaire praktijkvoorbeelden:
+
+- [Stablecoins](/stablecoins/)
+- [Creëren en distribueren van unieke digitale activa](/nft/)
+- [Een automatische, open wisselkoers](/get-eth/#dex)
+- [Gedecentraliseerde gaming](/dapps/?category=gaming)
+- [Een verzekeringsbeleid dat automatisch uitbetaalt](https://etherisc.com/)
+- [Een standaard waarmee mensen aangepaste, interoperabele valuta's kunnen maken](/developers/docs/standards/tokens/)
+
+## Leer je liever visueel? {#visual-learner}
+
+Bekijk smart contracts uitgelegd door Finematics:
+
+
+
+## Verder lezen {#further-reading}
+
+- [Hoe smart contracts de wereld zullen veranderen](https://www.youtube.com/watch?v=pA6CGuXEKtQ)
+- [Smart contracts: de blockchain-technologie die advocaten zal vervangen](https://blockgeeks.com/guides/smart-contracts/)
+- [Smart contracts voor ontwikkelaars](/developers/docs/smart-contracts/)
+- [Leer smart contracts te schrijven](/developers/learning-tools/)
+- [Ethereum begrijpen - Wat is een smart contract?](https://github.com/ethereumbook/ethereumbook/blob/develop/07smart-contracts-solidity.asciidoc#what-is-a-smart-contract)
diff --git a/src/content/translations/nl/social-networks/index.md b/src/content/translations/nl/social-networks/index.md
new file mode 100644
index 00000000000..2f34fc77c23
--- /dev/null
+++ b/src/content/translations/nl/social-networks/index.md
@@ -0,0 +1,118 @@
+---
+title: Gedecentraliseerde sociale netwerken
+description: Een overzicht van gedecentraliseerde sociale netwerken op Ethereum
+lang: nl
+template: use-cases
+emoji: ":mega:"
+sidebarDepth: 2
+image: ../../../../assets/ethereum-learn.png
+summaryPoint1: Blockchain-gebaseerde platformen voor sociale interactie en het creëren en verspreiden van content.
+summaryPoint2: Gedecentraliseerde sociale medianetwerken beschermen de privacy van gebruikers en verbeteren de gegevensbeveiliging.
+summaryPoint3: Tokens en NFT's creëren nieuwe manieren om content te monetariseren.
+---
+
+Sociale netwerken spelen een grote rol in ons dagelijks leven. Een gecentraliseerde controle van deze platformen levert echter veel problemen op: gegevensinbreuken, serverstoringen, deplatforming, censuur en privacyschendingen zijn enkele van de nadelen van sociale media. Om deze zaken te bestrijden bouwen ontwikkelaars sociale netwerken op Ethereum. Gedecentraliseerde sociale netwerken kunnen veel van de problemen van traditionele sociale netwerken oplossen en de algehele ervaring van gebruikers verbeteren.
+
+## Wat zijn gedecentraliseerde sociale netwerken? {#what-are-decentralized-social-networks}
+
+Gedecentraliseerde sociale netwerken zijn op blockchain gebaseerde platformen die gebruikers in staat stellen informatie uit te wisselen en inhoud te publiceren/verspreiden naar doelgroepen. Omdat deze toepasingen op de blockchain draaien, kunnen ze gedecentraliseerd zijn en resistent tegen censuur en ongepaste controle.
+
+Veel gedecentraliseerde sociale netwerken bestaan als alternatieven voor populaire sociale mediadiensten, zoals Facebook, LinkedIn, Twitter en Medium. Maar de door blockchain aangedreven sociale netwerken hebben een aantal kenmerken die ze voorrang geven op traditionele sociale mediaplatformen.
+
+### Hoe werken gedecentraliseerde sociale netwerken? {#decentralized-social-networks-overview}
+
+Gedecentraliseerde sociale netwerken zijn een klasse van [gedecentraliseerde applicaties (dapps)](/dapps/) - applicaties aangedreven door [smart contracts](/developers/docs/smart-contracts/) geïmplementeerd op de blockchain. De contractcode dient als de backend voor deze apps en definieert hun bedrijfslogica.
+
+Traditionele sociale mediaplatformen vertrouwen op databases voor het opslaan van gebruikersinformatie, programmacode en andere vormen van gegevens. Dit creëert echter enkele punten van mislukking (single points-of-failure) en brengt een aanzienlijk risico met zich mee. Een berucht voorbeeld hiervan was [vorig jaar het uren offline gaan](https://www.npr.org/2021/10/05/1043211171/facebook-instagram-whatsapp-outage-business-impact) van de servers van Facebook, wat verhinderde dat de gebruikers het platform konden gebruiken.
+
+Gedecentraliseerde sociale netwerken bestaan op een peer-to-peer netwerk bestaande uit duizenden nodes over de hele wereld. Zelfs als sommige nodes falen, functioneert het netwerk ononderbroken, waardoor toepassingen resistent blijven tegen fouten en storingen.
+
+Gebruik van gedecentraliseerde opslagsystemen zoals [het InterPlanetary File System (IPFS)](https://ipfs.io/), sociale netwerken die op Ethereum zijn gebouwd, kunnen gebruikersinformatie beschermen tegen uitbuiting en kwaadaardig gebruik. Niemand zal uw persoonlijke informatie aan adverteerders verkopen, noch zullen hackers uw vertrouwelijke gegevens kunnen stelen.
+
+Veel op blockchain gebaseerde sociale platformen hebben eigen tokens die inkomsten genereren zonder het gebruik van advertenties. Gebruikers kunnen deze tokens kopen om toegang te krijgen tot bepaalde functies, in-app aankopen te doen of hun favoriete content creators te steunen.
+
+## Voordelen van gedecentraliseerde sociale netwerken {#benefits}
+
+1. Gedecentraliseerde sociale netwerken zijn censuurbestendig en toegankelijk voor iedereen. Dit betekent dat gebruikers niet willekeurig kunnen worden verbannen, gedeplatformeerd of beperkt.
+
+2. Gedecentraliseerde sociale netwerken zijn gebouwd op open-source idealen en maken broncode voor applicaties beschikbaar voor publieke inspectie. Door de implementatie van ondoorzichtige algoritmen te elimineren die gebruikelijk zijn in traditionele sociale media, kunnen op blockchain-gebaseerde sociale netwerken de belangen van gebruikers en platformmakers op elkaar afstemmen.
+
+3. Gedecentraliseerde sociale netwerken elimineren de "tussenpersoon". Content creators zijn de directe eigenaars van hun content en hebben direct contact met hun volgers, fans, kopers en andere partijen, met niets anders dan een smart contract tussen hen.
+
+4. Zoals dapps die op het Ethereum-netwerk draaien, dat wordt ondersteund door een wereldwijd peer-to-peer netwerk van nodes, zijn gedecentraliseerde sociale netwerken minder gevoelig voor downtime en uitval van servers.
+
+5. Gedecentraliseerde sociale platformen bieden een verbeterd monetariseringskader voor creators via niet-vervangbare tokens (NFT's), in-app cryptobetalingen en meer.
+
+6. Gedecentraliseerde sociale netwerken bieden gebruikers een hoog niveau van privacy en anonimiteit. Een persoon kan zich bijvoorbeeld aanmelden bij een op Ethereum gebaseerd sociaal netwerk met behulp van een ENS-profiel of portemonnee - zonder andere persoonlijk identificeerbare informatie (PII), zoals namen, e-mailadressen, enz., te hoeven delen.
+
+7. Gedecentraliseerde sociale netwerken zijn afhankelijk van gedecentraliseerde opslag, niet van gecentraliseerde databases, en zijn dus aanzienlijk beter voor het beschermen van gebruikersgegevens.
+
+## Gedecentraliseerde sociale netwerken op Ethereum {#ethereum-social-networks}
+
+Het Ethereum-netwerk is de voorkeurstool geworden voor ontwikkelaars die gedecentraliseerde sociale media maken vanwege de populariteit van de tokens (ERC-20/ERC-721) en de massale gebruikersbasis. Hier zijn enkele voorbeelden van op Ethereum gebaseerde sociale netwerken:
+
+### Peepeth {#peepeth}
+
+[Peepeth](https://peepeth.com/) is een microbloggingplatform vergelijkbaar met Twitter. Het werkt op de Ethereum-blockchain en gebruikt IPFS om gebruikersgegevens op te slaan.
+
+Gebruikers kunnen korte berichten verzenden, ook wel "Peeps" genoemd, die niet kunnen worden verwijderd of gewijzigd. Je kunt tips vezamelen of versturen naar iedereen op het platform in ether (ETH) zonder de app te verlaten.
+
+### Mirror {#mirror}
+
+[Mirror](https://mirror.xyz/) is een web3-compatibel schrijfplatform dat streeft naar decentralisatie en eigenaarschap van gebruikers. Gebruikers kunnen op Mirror gratis lezen en schrijven door simpelweg hun portemonnee te verbinden. Gebruikers kunnen ook geschreven materiaal verzamelen en zich abonneren op hun favoriete schrijvers.
+
+Berichten op Mirror worden permanent opgeslagen op Arweave, een gedecentraliseerd opslagplatform, en kunnen worden gemint als verzamelbare [niet-vervangbare tokens (NFT's)](/nft/), ook wel bekend als Writing NFT's. Writing NFT's kunnen helemaal gratis door schrijvers gemaakt worden, en het verzamelen ervan gebeurt op een Ethereum L2 — waardoor transacties goedkoop, snel en milieuvriendelijk worden gemaakt.
+
+### MINDS {#minds}
+
+[MINDS](https://www.minds.com/) is een van de meest gebruikte gedecentraliseerde sociale netwerken. Het werkt als Facebook en heeft al miljoenen gebruikers bereikt.
+
+Gebruikers gebruiken het eigen ERC-20 token $MIND van het platform om voor items te betalen. Gebruikers kunnen ook $MIND-tokens verdienen door populaire content te publiceren, bij te dragen aan het ecosysteem en anderen naar het platform te verwijzen.
+
+## Web2 sociale netwerken op Ethereum {#web2-social-networks-and-ethereum}
+
+[Web3](/web3/) eigen sociale platformen zijn niet de enige die proberen de blockchain-technologie te integreren in sociale media. Veel gecentraliseerde platformen zijn ook van plan Ethereum te integreren in hun infrastructuur:
+
+### Reddit {#reddit}
+
+Reddit heeft [Community Points](https://cointelegraph.com/news/reddit-to-reportedly-tokenize-karma-points-and-onboard-500m-new-users) geïntroduceerd, wat [ERC-20-tokens](/developers/docs/standards/tokens/erc-20/) zijn die gebruikers kunnen verdienen door kwalitatieve inhoud te posten en bij te dragen aan online gemeenschappen (subreddits). Deze tokens kunt u binnen een subreddit inwisselen om [exclusieve privileges en voordelen](https://www.reddit.com/community-points/) te krijgen. Voor dit project werkt Reddit met Arbitrum, een [laag 2](/layer-2/) rollup die is ontworpen om Ethereum-transacties te schalen.
+
+Het programma is al live, met de r/CryptoCurrency subreddit [die zijn versie van gemeenschapspunten genaamd "Moons" draait](https://www.reddit.com/r/CryptoCurrency/wiki/moons_wiki). Volgens de officiële beschrijving beloont Moons "posters, commentators en moderators voor hun bijdragen aan de subreddit." Omdat deze tokens op de blockchain staan (gebruikers ontvangen ze in hun portemonnee), zijn ze onafhankelijk van Reddit en kunnen ze niet worden weggenomen.
+
+Na het afsluiten van een beta-fase op het Rinkeby-testnet staan de Reddit-gemeenschapspunten nu op [Arbitrum Nova](https://nova.arbitrum.io/), een blockchain die de eigenschappen van een [validium](/developers/docs/scaling/validium/) en een [optimistic rollup](/developers/docs/scaling/optimistic-rollups/) combineert. Naast het gebruik van gemeenschapspunten om speciale functies te ontgrendelen, kunnen gebruikers ze ook verhandelen op exchanges in ruil voor fiat. Ook bepaalt de hoeveelheid gemeenschapspunten die een gebruiker bezit diens invloed op het besluitvormingsproces binnen de gemeenschap.
+
+### Twitter {#twitter}
+
+In januari 2021 heeft Twitter Blue [ondersteuning voor NFT's](https://mashable.com/article/twitter-blue-nft-profile-picture) geïmplementeerd, waardoor gebruikers hun portemonnee kunnen verbinden en NFT's als profielfoto's kunnen gebruiken. Op het moment van dit schrijven heeft het socialemediabedrijf ook [plannen aangekondigd](https://www.theverge.com/2021/8/16/22627435/twitter-bluesky-lead-jay-graber-decentralized-social-web) om in de toekomst een gedecentraliseerd sociaal netwerk te creëren.
+
+### Instagram {#instagram}
+
+In mei 2022 [kondigde Instagram ondersteuning aan voor NFT's](https://about.instagram.com/blog/announcements/instagram-digital-collectibles) op Ethereum en Polygon. Gebruikers kunnen NFT's direct op Instagram posten door hun Ethereum-portemonnee te verbinden.
+
+## Gebruik gedecentraliseerde sociale netwerken {#use-decentralized-social-networks}
+
+- **[Status.im](https://status.im/)** - _Status is een beveiligde communicatie-app die gebruik maakt van een open-source, peer-to-peer protocol en end-to-end versleuteling om uw berichten te beschermen tegen derden._
+- **[Mirror.xyz](https://mirror.xyz/)** - _Mirror is een gedecentraliseerd publicatieplatform in handen van gebruikers dat gebouwd is op Ethereum. Het is bedoeld voor gebruikers om ideeën te crowdfunden, content te verkopen en hoogwaardige gemeenschappen op te bouwen._
+- **[Lens Protocol](https://lens.xyz/)** - _Lens Protocol is een samen te stellen gedecentraliseerde sociale grafiek die creators helpt met hun eigendomsrecht op hun content, waar ze ook maar heen gaan in het digitale landschap van het gedecentraliseerde internet._
+
+## Lees verder {#further-reading}
+
+### Artikelen {#articles}
+
+- [Social Networks Are the Next Big Decentralization Opportunity](https://www.coindesk.com/tech/2021/01/22/social-networks-are-the-next-big-decentralization-opportunity/) — _Ben Goertzel_
+- [Web3 holds the promise of decentralized, community-powered social networks](https://venturebeat.com/2022/02/26/web3-holds-the-promise-of-decentralized-community-powered-social-networks/) — _Sumit Ghosh_
+- [An Overview of the Blockchain Social Media Landscape](https://www.gemini.com/cryptopedia/blockchain-social-media-decentralized-social-media) — _Gemini Cryptopedia_
+- [How Blockchain Can Solve Social Media Privacy](https://www.investopedia.com/news/ethereum-blockchain-social-media-privacy-problem-linkedin-indorse/) — _Prableen Bajpai_
+- [Social Media Networks Are Coming To The Blockchain](https://businesstechguides.co/what-are-decentralized-social-networks) — _Emmanuel Awosika_
+
+### Video's {#videos}
+
+- [Decentralized Social Media Explained](https://www.youtube.com/watch?v=UdT2lpcGvcQ) — _Coinmarketcap_
+- [DeSo Blockchain Wants to Decentralize Social Media](https://www.youtube.com/watch?v=SG2HUiVp0rE) — _Bloomberg Technology_
+- [The Future of Decentralized Social Media w/ Balaji Srinivasan, Vitalik Buterin, Juan Benet](https://www.youtube.com/watch?v=DTxE9KV3YrE) — _ETHGlobal_
+
+### Gemeenschappen {#communities}
+
+- [Status Discord Server](https://discord.com/invite/3Exux7Y)
+- [Mirror Discord Server](https://discord.com/invite/txuCHcE8wV)
+- [r/CryptoCurrency subreddit](https://www.reddit.com/r/CryptoCurrency/)
diff --git a/src/content/translations/nl/staking/pools/index.md b/src/content/translations/nl/staking/pools/index.md
new file mode 100644
index 00000000000..561ddb25d52
--- /dev/null
+++ b/src/content/translations/nl/staking/pools/index.md
@@ -0,0 +1,86 @@
+---
+title: Gepoolde staking
+description: Een overzicht van hoe u aan de slag kunt met gepoolde ETH-staking
+lang: nl
+template: staking
+emoji: ":money_with_wings:"
+image: ../../../../../assets/staking/leslie-pool.png
+alt: Leslie de neushoorn die in het zwembad zwemt.
+sidebarDepth: 2
+summaryPoints:
+ - Stake en verdien beloningen met een willekeurig aantal ETH, door samen te werken met anderen
+ - Sla het moeilijke deel over en vertrouw validatoractiviteiten aan een derde toe
+ - Bewaar liquiditeitstokens in uw eigen portemonnee
+---
+
+## Wat zijn staking-pools? {#what-are-staking-pools}
+
+Staking-pools zijn een gezamenlijke aanpak om veel gebruikers met kleinere hoeveelheden ETH de mogelijkheid te bieden de 32 ETH te verkrijgen die nodig zijn om een set validatorsleutels te activeren. De pooling-functionaliteit wordt oorspronkelijk niet ondersteund binnen het protocol, dus er zijn oplossingen ontwikkeld om aan deze behoefte te voldoen.
+
+Sommige pools werken met smart contracts, waar fondsen kunnen worden gestort op een contract dat uw stake beheert en volgt zonder vertrouwenskwestie en u een token geeft die deze waarde vertegenwoordigt. Andere pools hebben mogelijk geen smart contracts en worden in plaats daarvan via de off-chain beheerd.
+
+## Waarom staken met een pool? {#why-stake-with-a-pool}
+
+Naast de voordelen die we hebben behandeld in onze [inleiding tot staking](/staking/), komt staking met een pool met nog een aantal andere duidelijke voordelen.
+
+
+
+ Bent u geen whale? Geen probleem. De meeste staking-pools laten u vrijwel elke hoeveelheid ETH staken door samen te werken met andere stakers, in tegenstelling tot solo staking waar u 32 ETH voor nodig heeft.
+
+
+ Staken met een pool is net zo makkelijk als een token swap. U hoeft zich geen zorgen te maken over hardware-installatie en node-onderhoud. Pools maken het mogelijk voor u om uw ETH te storten, waardoor node-operators validators kunnen uitvoeren. Beloningen worden vervolgens verdeeld over alle bijdragers, minus een vergoeding voor de node-activiteiten.
+
+
+ Veel staking-pools geven een token dat een claim op uw gestakete ETH en de beloningen die het genereert, vertegenwoordigt. Dit stelt u in staat om gebruik te maken van uw gestakete ETH, bijvoorbeeld als onderpand in DeFi-applicaties.
+
+
+
+
+
+## Wat te overwegen {#what-to-consider}
+
+Gepoolde of gedelegeerde staking wordt oorspronkelijk niet door het Ethereum-protocol ondersteund, maar gezien de vraag die er bestaat van gebruikers die minder dan 32 ETH willen staken, is er een groeiend aantal oplossingen gebouwd om aan deze vraag te voldoen.
+
+Elke pool en de tools of smart contracts die ervoor gebruikt worden, zijn door verschillende teams opgebouwd, en elke pool heeft zijn eigen risico's en voordelen.
+
+Hieronder zijn attribuutindicatoren gebruikt om opmerkelijke sterke of zwakke punten te signaleren die een genoemde staking-pool kan hebben. Gebruik deze sectie als referentie voor hoe we deze attributen definiëren terwijl u een pool kiest om u bij aan te sluiten.
+
+
+
+## Onderzoek staking-pools {#explore-staking-pools}
+
+Er zijn verschillende opties beschikbaar om u te helpen met uw installatie. Gebruik de bovenstaande indicatoren om u te helpen de onderstaande tools door te nemen.
+
+
+Houd rekening met het belang van het kiezen van een service die de diversiteit van clients serieus neemt, omdat dit de veiligheid van het netwerk verbetert en uw risico's beperkt. Services die bewijs hebben van het beperken van het gebruik van meerderheid-clients, zijn gemarkeerd als "diverse clients."
+
+
+
+
+Heeft u een suggestie voor een staking-tool die we hebben gemist? Bekijk ons [productlijstbeleid](/contributing/adding-staking-products/) om te zien of het een goede fit is en om het ter beoordeling in te dienen.
+
+## Veelgestelde vragen {#faq}
+
+
+Meestal worden ERC-20-liquiditeitstokens uitgegeven aan stakers die de waarde van hun gestakete ETH plus beloningen vertegenwoordigen. Houd in uw achterhoofd dat verschillende pools hun staking-beloningen verdelen onder hun gebruikers via ietwat verschillende methoden, maar dit is wat gebruikelijk is.
+
+
+
+
+Fondsen opnemen van een Ethereum-validator is momenteel niet mogelijk, wat de mogelijkheid beperkt om uw liquiditeitstokens in te wisselen voor de ETH-beloningen die in de consensuslaag vergrendeld zitten.
+
+Of pools die gebruik maken van een ERC-20-liquiditeitstoken kunnen gebruikers dit token in de open markt laten verhandelen, waardoor u uw staking-positie kunt verkopen zonder daadwerkelijk ETH te verwijderen uit het staking-contract.
+
+
+
+Er zijn veel overeenkomsten tussen deze gepoolde staking-opties en gecentraliseerde exchanges, zoals de mogelijkheid om kleine hoeveelheden ETH te staken en deze te bundelen om validators te activeren.
+
+In tegenstelling tot gecentraliseerde exchanges gebruiken veel andere gepoolde staking-opties smart contracts en/of liquiditeitstokens, die meestal ERC-20-tokens zijn die in uw eigen portemonnee kunnen worden bewaard en net als elke andere token kunnen worden gekocht of verkocht. Dit biedt een laag van soevereiniteit en veiligheid door u de controle te geven over uw tokens, maar het geeft u nog steeds geen directe controle over de validator-client die namens u attesteert op de achtergrond.
+
+Sommige pooling-opties zijn meer gedecentraliseerd dan andere als het gaat om de nodes waarmee ze ondersteund worden. Om de gezondheid en decentralisatie van het netwerk te bevorderen, worden stakers altijd aangemoedigd om een poolingservice te selecteren die een gedecentraliseerde set node-operators zonder toestemming mogelijk maakt.
+
+
+## Verder lezen {#further-reading}
+
+- [Staking met Rocket Pool - Staking Overview](https://docs.rocketpool.net/guides/staking/overview.html) - _RocketPool docs_
+- [Staking Ethereum With Lido](https://help.lido.fi/en/collections/2947324-staking-ethereum-with-lido) - _Lido help docs_
diff --git a/src/content/translations/nl/staking/saas/index.md b/src/content/translations/nl/staking/saas/index.md
new file mode 100644
index 00000000000..401dc346eff
--- /dev/null
+++ b/src/content/translations/nl/staking/saas/index.md
@@ -0,0 +1,89 @@
+---
+title: Staking-as-a-service
+description: Een overzicht van hoe u aan de slag kunt met gepoolde ETH-staking
+lang: nl
+template: staking
+emoji: ":money_with_wings:"
+image: ../../../../../assets/staking/leslie-saas.png
+alt: Leslie de neushoorn zweeft in de wolken.
+sidebarDepth: 2
+summaryPoints:
+ - Node operators van derden beheren de werking van uw validator-client
+ - Geweldige optie voor iedereen met 32 ETH, die zich niet comfortabel voelt met de technische complexiteit van het draaien van een node
+ - Verminder het vertrouwen en bewaar zelf uw opnamesleutels
+---
+
+## Wat is staking-as-a-service? {#what-is-staking-as-a-service}
+
+Staking-as-a-service ("SaaS") is een categorie van stakingdiensten waarbij u uw eigen 32 ETH stort voor een validator, maar node-activiteiten naar een externe operator worden gedelegeerd. Dit proces omvat meestal een begeleiding door de initiële set-up, inclusief sleutelgeneratie en storting, met daarna het uploaden van uw ondertekeningssleutels naar de operator. Hiermee kan de service uw validator namens u beheren, meestal tegen een maandelijkse vergoeding.
+
+## Waarom staken met een service? {#why-stake-with-a-service}
+
+Het Ethereum-protocol ondersteunt zelf geen stake-delegering, daarom zijn deze diensten gebouwd om aan deze vraag te voldoen. Als u 32 ETH hebt om te staken, maar u zich niet op uw gemak voelt om met hardware om te gaan, kunt u met SaaS-diensten het moeilijke deel delegeren terwijl u eigen blokbeloningen verdient.
+
+
+
+ Stort uw eigen 32 ETH om uw eigen set ondertekeningssleutels te activeren die zullen deelnemen aan de Ethereum-consensus. Volg uw voortgang met dashboards om de ETH-beloningen te zien accumuleren.
+
+
+ Vergeet hardwarespecificaties, installatie, node-onderhoud en upgrades.
+ Met SaaS-providers kunt u het moeilijke deel uitbesteden door uw eigen ondertekeningsgegevens te uploaden, waardoor namens u een validator kan worden uitgevoerd tegen een kleine vergoeding.
+
+
+ In veel gevallen hoeven gebruikers de toegang tot de sleutels voor het opnemen of overschrijven van gestakete fondsen niet op te geven. Deze zijn anders dan de ondertekeningssleutels en kunnen apart worden opgeslagen om uw risico als staker te beperken (maar niet te verwijderen).
+
+
+
+
+
+## Wat te overwegen {#what-to-consider}
+
+Er is een groeiend aantal staking-as-a-service providers om u te helpen uw ETH te staken, maar elk met verschillende risico's en voordelen.
+
+Attribuutindicatoren worden hieronder gebruikt om opmerkelijke of zwakke punten te signaleren die een genoemde SaaS-provider kan hebben. Gebruik deze sectie als referentie voor hoe we deze attributen definiëren, wanneer u een service kiest om u te helpen met uw staking-traject.
+
+
+
+## Verken staking-serviceproviders {#saas-providers}
+
+Hieronder staat een aantal beschikbare SaaS-providers. Gebruik bovenstaande indicatoren om u te helpen door de onderstaande services te gaan
+
+
+Houd rekening met het belang van het ondersteunen van diversiteit van clients, omdat dit de veiligheid van het netwerk verbetert en uw risico's beperkt. Services die bewijs hebben van het beperken van het gebruik van meerderheid-clients zijn gemarkeerd als "diverse clients."
+
+
+#### SaaS-providers
+
+
+
+#### Sleutelgenerators
+
+
+
+Heeft u een suggestie voor een staking-as-a-service provider die we gemist hebben? Bekijk ons [productlijstbeleid](/contributing/adding-staking-products/) om te zien of het een goede fit is en om het ter beoordeling in te dienen.
+
+## Veelgestelde vragen {#faq}
+
+
+ Regelingen zullen verschillen van provider tot provider, maar gewoonlijk wordt u begeleid bij het instellen van de benodigde ondertekeningssleutels (één per 32 ETH) en het uploaden ervan naar uw provider zodat ze namens u kunnen valideren. De ondertekeningssleutels alleen bieden geen mogelijkheid om uw geld op te nemen, over te schrijven of uit te geven. Ze bieden echter wel de mogelijkheid om op consensus te stemmen, wat kan leiden tot offline boetes of slashing als het niet juist wordt gedaan.
+
+
+
+Ja. Elk account bestaat uit sleutels voor ondertekening en opname. Om een validator de status van de chain te laten bevestigen, deel te laten nemen aan sync-comités en blokken te laten voorstellen, moeten de ondertekeningssleutels gemakkelijk toegankelijk zijn door een validator-client. Deze moeten op een of andere manier met het internet worden verbonden en worden dus per definitie beschouwd als "hot" keys. Dit is een vereiste voor uw validator om te kunnen attesteren, en dus zijn de sleutels die worden gebruikt om fondsen over te schrijven of op te nemen om veiligheidsredenen gescheiden.
+
+Al deze sleutels kunnen altijd op een reproduceerbare manier worden gegenereerd met behulp van uw uit 24 woorden bestaande mnemonische herstelzin. Zorg ervoor dat u uw herstelzin veilig bewaard, anders kunt u uw opnamesleutels niet genereren wanneer dat nodig is.
+
+
+
+ Wanneer u 32 ETH staket met een SaaS-provider, wordt die ETH nog steeds gestort op het officiële staking-stortingscontract. Als zodaning zijn SaaS-stakers momenteel beperkt door dezelfde opnamebeperkingen als solo stakers. Dit betekent dat het staken van uw ETH momenteel een eenrichtings storting is. Dit zal het geval zijn tot aan de Shanghai upgrade.
+
+
+
+Door een SaaS-provider te gebruiken, vertrouwt u de werking van uw node toe aan iemand anders. Dit brengt het risico van slechte node-prestaties met zich mee, wat u niet kunt controleren. In het geval dat uw validator wordt geslashed, wordt uw validatorsaldo bestraft en onder dwang verwijderd uit de validator-pool. Deze fondsen wordt vergrendeld totdat opnames op protocolniveau worden ingeschakeld.
+
+Neem contact op met de individuele SaaS-providers voor meer informatie over garanties of verzekeringsopties. Als u liever de volledige controle over uw validatorinstallatie heeft, leer dan meer over hoe u uw ETH solo kunt staken.
+
+
+## Verder lezen {#further-reading}
+
+- [Evaluating Staking Services](https://www.attestant.io/posts/evaluating-staking-services/) - _Jim McDonald 2020_
diff --git a/src/content/translations/nl/staking/solo/index.md b/src/content/translations/nl/staking/solo/index.md
new file mode 100644
index 00000000000..6d7f6a62300
--- /dev/null
+++ b/src/content/translations/nl/staking/solo/index.md
@@ -0,0 +1,188 @@
+---
+title: Solo stake uw ETH
+description: Een overzicht van hoe u moet beginnen met solo staking van uw ETH
+lang: nl
+template: staking
+emoji: ":money_with_wings:"
+image: ../../../../../assets/staking/leslie-solo.png
+alt: Leslie de neushoorn op haar eigen computerchip.
+sidebarDepth: 2
+summaryPoints:
+ - Ontvang maximale beloningen rechtstreeks uit het protocol voor het goed en online laten functioneren van uw validator
+ - Voer home-hardware uit en voeg persoonlijk toe aan de beveiliging en decentralisatie van het Ethereum-netwerk
+ - Verwijder vertrouwen en geef nooit de controle over de sleutels tot uw geld op
+---
+
+## Wat is solo staking? {#what-is-solo-staking}
+
+Solo staking is de handeling van het [uitvoeren van een Ethereum-node](/run-a-node/) aangesloten op het internet en het storten van 32 ETH om een [validator](#faq)te activeren, wat u de mogelijkheid geeft om rechtstreeks deel te nemen aan netwerkconsensus.
+
+Een Ethereum-node bestaat uit zowel een uitvoeringslaag (EL)-client, als een consensuslaag (CL)-client. Deze clients zijn software die naast elkaar werken, samen met een geldige set ondertekeningssleutels, om transacties en blokken te verifiëren, het juiste hoofd van de chain te attesteren en blokken voor te stellen.
+
+Solo stakers zijn verantwoordelijk voor het bedienen van de hardware die nodig is om deze clients uit te voeren. Het is ten zeerste aangeraden om hiervoor een speciale machine te gebruiken die u thuis bedient. Dit is zeer nuttig voor de gezondheid van het netwerk.
+
+Een solo staker ontvangt beloningen rechtstreeks uit het protocol voor het goed en online laten functioneren van zijn/haar validator.
+
+## Waarom solo staken? {#why-stake-solo}
+
+Solo staking brengt meer verantwoordelijkheid met zich mee, maar geeft u maximale controle over uw geld en staking-installatie.
+
+
+
+ Verdien in ETH omgezette beloningen direct uit het protocol wanneer uw validator online is, zonder dat tussenpersonen een deel afpakken.
+
+
+ Bewaar je eigen sleutels. Kies de combinatie van clients en hardware waarmee u uw risico kunt minimaliseren en het best kunt bijdragen aan de gezondheid en beveiliging van het netwerk. Staking-diensten van derden nemen deze beslissingen voor u, en deze maken niet altijd de beste keuzes.
+
+
+ Solo staking is de meest impactvolle manier om te staken. Door thuis een validator op uw eigen hardware uit te voeren, versterkt u de robuustheid, decentralisatie en veiligheid van het Ethereum-protocol.
+
+
+
+## Overwegingen voordat u begint met solo staking {#considerations-before-staking-solo}
+
+We zouden heel graag willen dat solo staking toegankelijk en risicovrij zou zijn voor iedereen, maar dit is niet de realiteit. Er zijn enkele praktische en serieuze overwegingen om in gedachten te houden voordat u kiest voor het solo staken van uw ETH.
+
+
+
+ Bij het beheren van uw eigen node moet u wat tijd besteden om te leren hoe u de software gebruikt die u heeft gekozen. Dit heeft betrekking op het lezen van relevante documentatie en letten op communicatiekanalen van die dev-teams.
+ Hoe meer u begrijpt van de software die u gebruikt en hoe proof-of-stake werkt, hoe minder risico's er zullen zijn als staker, en hoe makkelijker het zal zijn om problemen op te lossen die zich kunnen voordoen.
+
+
+ Node setup vereist een redelijk comfortniveau bij het werken met computers, hoewel nieuwe tools dit makkelijker maken na verloop van tijd. Het begrijpen van de opdrachtregelinterface is nuttig, maar niet langer strikt nodig.
+ Het vereist ook een zeer elementaire hardwareinstallatie en enig begrip van de aanbevolen minimum specificaties.
+
+
+ Net als hoe privé-sleutels uw Ethereum-adres beveiligen, moet u specifieke sleutels genereren voor uw validator. U moet begrijpen hoe u uw herstelzinnen en privé-sleutels veilig moet houden.
+
+
+
+ Het opnemen van gestakete ETH of beloningen van een validatorsaldo wordt nog niet ondersteund. Ondersteuning voor opnames is gepland voor de aankomende Shanghai upgrade. U moet er rekening mee houden dat uw ETH ten minste één tot twee jaar vergrendeld blijft. Na de Shanghai upgrade bent u vrij om delen of uw hele stake op te nemen, als u dat wenst.
+
+
+ Hardware faalt af en toe, netwerkverbindingen geven soms fouten en client-software moet soms bijgewerkt worden. Node-onderhoud is onvermijdelijk en vereist af en toe uw aandacht. U moet er zeker van zijn dat u op de hoogte blijft van alle verwachte netwerkupgrades of andere kritische client-upgrades.
+
+
+ Uw beloningen zijn in verhouding tot de tijd die uw validator online is en juist attesteert. Downtime leidt tot boetes in verhouding tot hoeveel andere andere validators offline zijn op hetzelfde moment, maar leidt niet tot slashing. Bandbreedte is ook van belang, omdat de beloningen verminderen voor attesten die niet op tijd worden ontvangen. De vereisten zullen verschillen, maar een minimum van +/- 10 MB/s wordt aanbevolen.
+
+
+ Anders dan inactiviteitsboetes voor offline zijn, is er ook slashing. Dit is een veel serieuzere boete gereserveerd voor kwaadwillige misdrijven. Door een minderheid-client met sleutels enkel op één machine tegelijk te gebruiken, wordt het risico op slashing geminimaliseerd. Toch moeten alle stakers zich bewust zijn van de risico's van slashing.
+
+
+
+
+
+
+
+## Hoe het werkt {#how-it-works}
+
+
+
+Indien ooit gewenst, kunt u stoppen als validator; hiermee hoeft u niet meer online te blijven, wat wel het verkrijgen van verdere beloningen stopt. Wees ervan bewust dat _opname_ van deze fondsen niet mogelijk zal zijn tot de geplande Shanghai upgrade.
+
+Na de Shanghai upgrade kunnen gebruikers zowel hun beloningen als hun stake opnemen als ze dat willen.
+
+## Aan de slag met het Staking Launchpad {#get-started-on-the-staking-launchpad}
+
+Het Staking Launchpad is een open-source applicatie die u helpt om een staker te worden. Het begeleidt u bij het kiezen van uw clients, het genereren van uw sleutels en het storten van uw ETH op het staking-stortingscontract. Er is een checklist beschikbaar om er zeker van te zijn dat u alles heeft ingevuld om uw validator veilig in te stellen.
+
+
+
+## Wat te overwegen met tools voor nodes en client-instelling {#node-tool-considerations}
+
+Er is een groeiend aantal tools en services om u te helpen als solo staker van uw ETH, maar elk heeft verschillende risico's en voordelen.
+
+Attribuutindicatoren worden hieronder gebruikt om opmerkelijke sterke of zwakke punten aan te geven die een genoemde staking tool kan hebben. Gebruik deze sectie als referentie voor hoe we deze attributen definiëren wanneer u een tool kiest om u te helpen op uw staking-traject.
+
+
+
+## Onderzoek tools voor nodes en de instelling van clients {#node-and-client-tools}
+
+Er zijn verschillende opties beschikbaar om u te helpen met uw installatie. Gebruik bovenstaande indicatoren om u door de onderstaande tools heen te leiden.
+
+
+Houd rekening met het belang van het kiezen van een minoriteit-client, aangezien dit de veiligheid van het netwerk verbetert en uw risico beperkt. Tools die u in staat stellen om een minoriteit-client in te stellen worden aangeduid als "multi-client."
+
+
+#### Node tools
+
+
+
+#### Sleutelgenerators
+
+Deze tools worden gebruikt als een alternatief voor de [Staking Deposit CLI](https://github.com/ethereum/staking-deposit-cli/), om u te helpen met het genereren van sleutels.
+
+
+
+Heeft u een voorstel voor een staking tool die we hebben gemist? Bekijk ons [productlijstbeleid](/contributing/adding-staking-products/) om te zien of het een goede fit zou zijn en om het ter beoordeling in te dienen.
+
+## Bekijk solo staking-handleidingen {#staking-guides}
+
+
+
+## Veelgestelde vragen {#faq}
+
+Dit zijn enkele van de meest voorkomende vragen over staking die de moeite waard zijn om te weten.
+
+
+
+Een _validator_ is een virtuele entiteit die op Ethereum bestaat en deelneemt aan de consensus van het Ethereum-protocol. Validators worden vertegenwoordigd door een saldo, een publieke sleutel en andere eigenschappen. Een _validator client_ is de software die namens de validator handelt door de privé-sleutel te bewaren en te gebruiken. Een enkele validator-client kan verschillende sleutelparen hebben die verschillende validators kunnen controleren.
+
+
+
+
+Voor elk sleutelpaar gekoppeld aan een validator moet precies 32 ETH geactiveerd worden. Meer ETH gestort op een enkele set sleutels verhoogt het beloningspotentieel niet, aangezien elke validator is beperkt tot een effectief saldo van 32 ETH. Dit betekent dat staking wordt uitgevoerd in 32 ETH-incrementen, elk met zijn eigen set sleutels en saldo.
+
+Stort niet meer dan 32 ETH voor één enkele validator. Het zal je beloningen niet verhogen, en het wordt vergrendeld tot de geplande Shanghai update.
+
+Als solo staking u te veeleisend lijkt, overweeg dan om een staking-as-a-service provider te gebruiken, of als je met minder dan 32 ETH werkt, bekijk dan de staking pools.
+
+
+
+Offline gaan wanneer het netwerk correct wordt afgesloten, zal NIET resulteren in slashing. Kleine inactiviteitsboetes worden opgelopen als uw validator niet beschikbaar is gedurende een bepaalde tijdsperiode (elk 6,4 minuten lang), maar dit is heel anders dan slashing. Deze boetes zijn iets minder dan de beloning die u zou hebben verdiend als de validator beschikbaar was om te attesteren, en deze verliezen kunnen worden terugverdiend door ongeveer evenveel tijd weer online te blijven.
+
+Merk op dat boetes voor inactiviteit proportioneel zijn aan hoeveel validators tegelijkertijd offline zijn. In gevallen waarbij een groot deel van het netwerk tegelijk geheel offline is, zullen de boetes voor elk van deze validators groter zijn dan wanneer er een enkele validator niet beschikbaar is.
+
+In extreme gevallen, als het netwerk stopt met werken doordat meer dan een derde van de validators offline is, zullen deze gebruikers ondervinden wat bekend staat als een kwadratisch inactiviteitslek, wat een exponentiële afvoer van ETH van offline validator-accounts is. Dit stelt het netwerk in staat om zichzelf uiteindelijk te genezen door het verbranden van ETH van inactieve validators totdat hun saldo 16 ETH bereikt, op welk moment ze automatisch zullen worden verwijderd uit de validator-pool. De resterende online validators zullen uiteindelijk weer meer dan 2/3 van het netwerk omvatten, waarmee voldaan wordt aan de supermeerderheid die nodig is om de chain opnieuw te voltooien.
+
+
+
+Kort samengevat kan dit nooit volledig worden gegarandeerd, maar als u te goeder trouw handelt, een minderheid-client uitvoert en uw ondertekeningssleutels op slechts één machine tegelijk houdt, is het risico om geslashed te worden bijna nul.
+
+Er zijn slechts enkele specifieke manieren die ertoe kunnen leiden dat een validator geslashed en uit het netwerk verwijderd wordt. Op het moment van schrijven, zijn de slashings die zich hebben voorgedaan uitsluitend het resultaat geweest van overbodige hardware-instellingen waarbij ondertekeningssleutels op twee aparte machines tegelijk werden opgeslagen. Dit kan per ongeluk resulteren in een dubbele stem van uw sleutels, wat een overtreding is die tot slashing kan leiden.
+
+Het uitvoeren van een supermeerderheid-client (elke client die gebruikt wordt door meer dan 2/3 van het netwerk) houdt ook het risico in van een mogelijke slashing in het geval dat deze client een bug heeft die resulteert in een chain fork. Dit kan leiden tot een onjuiste fork die afgerond wordt. Om terug te corrigeren naar de beoogde chain moet u een surround vote indienen door te proberen een afgerond blok ongedaan te maken. Dit is ook een overtreding die tot slashing kan leiden; dit kan worden vermeden door simpelweg een minderheid-client te gebruiken.
+
+Gelijkwaardige bugs in een minderheid-client zouden nooit afgerond worden en zouden dus nooit resulteren in een surround vote; het zou simpelweg leiden tot inactiviteitsboetes, niet tot slashing.
+
+Meer informatie over het belang van het uitvoeren van een minderheid-client.
+
+
+
+
+Individuele clients kunnen wat betreft prestatie en gebruikersinterface lichtjes variëren, omdat ze elk ontwikkeld zijn door verschillende teams die verschillende programmeertalen gebruiken. Dat gezegd hebbende, is geen enkele de "beste" client. Alle productie-clients zijn uitstekende stukken software, die allemaal dezelfde kernfuncties uitvoeren om te synchroniseren en te communiceren met de blockchain.
+
+Aangezien alle productie-clients dezelfde basisfunctionaliteit bieden, is het in feite erg belangrijk dat u kiest voor een minderheid-client - dit betekent een client die op dit moment NIET wordt gebruikt door de meerderheid van de validators op het netwerk. Dit kan contraproductief klinken, maar met een meerderheid- of supermeerderheid-client heeft u een verhoogd risico op slashing in het geval van een bug in die client. Het uitvoeren van een minderheid-client beperkt deze risico's aanzienlijk.
+
+Meer informatie over de reden waarom client-diversiteit cruciaal is
+
+
+
+Hoewel een virtuele privé-server (VPS) kan worden gebruikt als vervanging voor thuishardware, zijn de fysieke toegang en locatie van uw validator-client ook van belang. Gecentraliseerde cloudoplossingen zoals Amazon Web Services of Digital Ocean maken het mogelijk om hardware niet zelf te hoeven verkrijgen en bedienen, ten koste van het centraliseren van het netwerk.
+
+Hoe meer validator-clients draaien op een enkele gecentraliseerde cloud-opslagoplossing, hoe gevaarlijker het wordt voor deze gebruikers. Elke gebeurtenis die deze providers offline haalt, of dat nu het geval is door aanvallen, regelgevingseisen of gewoon door stroom- en internetproblemen, zorgt ervoor dat elke validator-client die van deze server afhankelijk is tegelijkertijd offline gaat.
+
+Offline boetes zijn evenredig aan hoeveel andere validators er tegelijkertijd offline zijn. Het gebruik van een VPS verhoogt het risico dat offline boetes zwaarder zullen zijn, en verhoogt uw risico op kwadratische lekkage of slashing in het geval dat de uitval groot genoeg is. Om uw eigen risico en het risico voor het netwerk te minimaliseren, worden gebruikers sterk aangemoedigd om hun eigen hardware te verkrijgen en gebruiken.
+
+Meer over beloningen en boetes
+
+
+## Verder lezen {#further-reading}
+
+- [Ethereum's Client Diversity Problem](https://hackernoon.com/ethereums-client-diversity-problem) - _@emmanuelawosika 2022_
+- [Helping Client Diversity](https://www.attestant.io/posts/helping-client-diversity/) - _Jim McDonald 2022_
+- [Client diversity on Ethereum's consensus layer](https://mirror.xyz/jmcook.eth/S7ONEka_0RgtKTZ3-dakPmAHQNPvuj15nh0YGKPFriA) - _jmcook.eth 2022_
+- [How To: Shop For Ethereum Validator Hardware](https://www.youtube.com/watch?v=C2wwu1IlhDc) - _EthStaker 2022_
+- [Step by Step: How to join the Ethereum 2.0 Testnet](https://kb.beaconcha.in/guides/tutorial-eth2-multiclient) - _Butta_
+- [Eth2 Slashing Prevention Tips](https://medium.com/prysmatic-labs/eth2-slashing-prevention-tips-f6faa5025f50) - _Raul Jordan 2020_
+- [Rewards and Penalties on Ethereum 2.0](https://consensys.net/blog/codefi/rewards-and-penalties-on-ethereum-20-phase-0/) - _James BeckMarch 2020_
diff --git a/src/content/translations/pl/nft/index.md b/src/content/translations/pl/nft/index.md
new file mode 100644
index 00000000000..1bf6c65d874
--- /dev/null
+++ b/src/content/translations/pl/nft/index.md
@@ -0,0 +1,340 @@
+---
+title: Tokeny niezamienny (NFT)
+description: Przedstawienie NFT na Ethereum
+lang: pl
+template: use-cases
+emoji: ":frame_with_picture:"
+sidebarDepth: 2
+image: ../../../../assets/infrastructure_transparent.png
+alt: Logo Ethereum wyświetlane jako hologram.
+summaryPoint1: Sposób reprezentowania czegoś wyjątkowego jako aktywu na blockchainie Ethereum.
+summaryPoint2: NFT dają ich twórcom możliwości, których nigdy wcześniej nie mieli.
+summaryPoint3: Wspierane przez inteligentne kontrakty na blockchainie Ethereum.
+---
+
+Obecnie NFT podbijają świat sztuki cyfrowej i przedmiotów kolekcjonerskich. Sztuka cyfrowa zmienia życie artystów, którzy ją tworzą, dzięki sprzedaży tych dzieł za ogromne kwoty nowej społeczności krypto. Do grona społeczności związanej z NFT dołączają także celebryci, widzący nowy sposób kontaktu z fanami. Ale cyfrowa sztuka to tylko jedno z zastosowań NFT. Mogą one reprezentować własność jakiejkolwiek wartości, tak jak ma to miejsce w fizycznym świecie.
+
+Jeśli Andy Warhol urodziłby się w późnych latach 90., to prawdopodobnie zmintowałby Campbell's Soup jako NFT. To tylko kwestia czasu zanim Kanye West wyda Yeezy na Ethereum. Być może pewnego dnia NFT bedzie dowodem własności twojego samochodu.
+
+## Czym jest NFT? {#what-are-nfts}
+
+NFT są tokenami, które reprezentują własność czegoś unikatowego. Pozwalają one na tokenizacje rzeczy takich jak sztuka, przedmioty kolekcjonerskie a nawet nieruchomości. Własność zabezpieczona jest przez blockchain Ethereum - nikt nie może go zmodyfikować tak by np. zmienić zapis lub skopiować/wkleić nowe NFT do już istniejącego.
+
+NFT to skrót od Non-Fungible-Token (Token Niezamienny). "Niezamienny" to termin pochodzący z ekonomii, którym możesz opisać rzeczy takie jak twoje meble, plik z piosenką lub twój komputer. Te rzeczy nie są wymienne za inne przedmioty, ponieważ mają unikalne właściwości.
+
+Przedmioty zamienne, z drugiej strony, mogą być łatwo wymieniane, poniważ ich wartość definiuje je bardziej niż ich unikalne właściwości. Dla przykładu, ETH lub dolary są zamienne, ponieważ 1 ETH lub $1 USD jest zawsze wymienny z 1 ETH lub $1 USD.
+
+
+
+## Internet rzeczy {#internet-of-assets}
+
+NFT i Ethereum rozwiązują niektóre z problemów występujących w dzisiejszym internecie. Ponieważ wszystko staje się coraz bardziej cyfrowe, nie ma potrzeby replikować właściwości fizycznych przedmiotów, takich jak rzadkość, unikatowość oraz dowód własności. Nie mówiąc już o cyfrowych przedmiotach, które mają sens tylko w kontekście ich produktów. Na przykład nie możesz odsprzedać piosenki, którą kupiłeś/aś na iTunes lub nie możesz wymienić punktów lojalnościowych jednej firmy za fundusze na innej platformie, nawet jeśli istnieje na to rynek.
+
+Tak wygląda porównanie internetu zasobów z internetem, który dziś używa większość z nas...
+
+### Porównanie {#nft-comparison}
+
+| Internet NFT | Internet dzisiaj |
+| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| NFT są cyfrowo unikalne, nie istnieją dwa takie same NFT. | Kopia pliku takiego jak .mp3 lub .jpg jest dokładnie taka sama jak oryginał. |
+| Każde NFT musi mieć właściciela, który jest publicznie jawny i każdy może go łatwo zweryfikować. | Rejest własności przedmiotów cyfrowych jest przechowywany na serwerach kontrolowanych przez instytucje - musisz im wierzyć na słowo. |
+| NFT są kompatybilne ze wszystkich, co jest zbudowane na Ethereum. Bilet na jakieś wydarzenie, który jest NFT może zostać zymieniony na każdej platformie tego typu działającej na Ethereum za zupełnie inne NFT. Możesz wymienić dzieło sztuki na bilet! | Firmy dysponujące przedmiotami cyfrowymi muszą budować swoją własną infrastrukturę. Na przykład aplikacja, która wydaje bilety w formie cyfrowej na różne wydarzenia, musiałaby zbudować swoją własną giełdę biletów. |
+| Twórcyc mogą sprzedać swoją sztukę wszędzie i otrzymują dostęp do globalnego rynku. | Twórcy opierają się na infrastrukturze i systemie dystrybucji platform, z których korzystają. Są one często objęte określonymi warunkami użytkowania i ograniczeniami geograficznymi. |
+| Twórcy mogą zachować prawa własności do swojej pracy i otrzymywać tantiemy z każdej kolejnej odsprzedaży. | Platformy, takie jak serwisy streamingowe, zachowują większość zysków ze sprzedaży. |
+| Przedmioty mogą być używane w zaskakujący sposób. Na przykład możesz wykorzystać cyfrowy obrazek jako zabezpieczenie zdecentralizowanej pożyczki. | |
+
+### Przykłady NFT {#nft-examples}
+
+Świat NFT jest relatywnie nowy. W teorii, NFT może być użyte do wszystkiego, co jest unikalne i potrzebuje dowodu własności. Oto kilka przykładów NFT, które istnieją dzisiaj, aby pomóc Ci zrozumieć koncepcję:
+
+- [Unikatowe dzieło cyfrowe](https://foundation.app/artworks)
+- [Unikatowe sneakersy w limitowanej linii mody](https://www.metagrail.co/auctions/91cf83fb-3477-4155-aae8-6dcb9b853397)
+- [Przedmiot w grze wideo](https://market.decentraland.org/)
+- [Esej](https://zora.co/0x517bab7661C315C63C6465EEd1b4248e6f7FE183/145)
+- [Cyfrowy artykuł kolekcjonerski](https://www.larvalabs.com/cryptopunks/details/1)
+- [Nazwa domeny](https://app.ens.domains/name/ethereum.eth)
+- [Bilet, który daje Ci dostęp do wydarzenia lub kupon](https://www.yellowheart.io/)
+- [Kupowanie towarów w świecie rzeczywistym](https://www.tangible.store/)
+- [Fragmentacja nieruchomości](https://realt.co/)
+- [Stopień ważności certyfikatów](https://www.degreecert.com/)
+- [Licencyjne opłaty za muzykę w postaci NFT](https://opulous.org/)
+- [Move-to-earn (poruszaj się i zarabiaj)](https://yeticoineth.com/about.html)
+- [Tożsamość cyfrowa](https://photochromic.io/)
+
+### Przykłady z ethereum.org {#ethereum-org-examples}
+
+Używamy NFT, aby docenić naszych współtwórców oraz mamy własną domenę NFT.
+
+#### POAPy (protokół Proof of Attendance) {#poaps}
+
+Jeśli przyczynisz się do ethereum.org, możesz otrzymać NFT z POAP. Są to przedmioty kolekcjonerskie, które dowodzą, że braliśmy udział w jakimś wydarzeniu. Niektóre wydarzenia kryptowalutowe wykorzystały POAPy jako formę biletu. [Więcej na temat przyczyniania się do Ethereum](/contributing/#poap).
+
+![ethereum.org POAP](./poap.png)
+
+#### ethereum.eth {#ethereum-dot-eth}
+
+Ta strona ma alternatywną domenę obsługiwaną przez NFT, **ethereum.eth**. Nasz adres `.org` jest zarządzany centralnie przez DNS, podczas gdy ethereum`.eth` jest zarejestrowane na Ethereum za pośrednictwem Ethereum Name Service (ENS). I jest posiadany oraz zarządzany przez nas. [Sprawdź nasz wpis do ENS](https://app.ens.domains/name/ethereum.eth)
+
+[Więcej na temat ENS](https://app.ens.domains)
+
+## Jak działają NFT? {#how-nfts-work}
+
+NFT różnią się od tokenów ERC-20, takich jak DAI lub LINK, ponieważ każdy pojedynczy token jest całkowicie unikalny i nie jest podzielony. NFT dają możliwość przypisania własności dowolnego unikalnego elementu danych cyfrowych, możliwych do wyśledzenia za pomocą blockchainu Ethereum jako publicznego rejestru. NFT jest mintowane z obiektów cyfrowych jako reprezentacja zasobów cyfrowych lub niecyfrowych. NFT może na przykład reprezentować:
+
+- Sztukę cyfrową:
+ - GIFy
+ - Przedmioty kolekcjonerskie
+ - Muzykę
+ - Materiały wideo
+- Rzeczywiste przedmioty:
+ - Akt własności samochodu
+ - Bilety na wydarzenie w świecie rzeczywistym
+ - Ztokenizowane faktury
+ - Dokumenty prawne
+ - Podpisy
+- Wiele i jeszcze więcej innych możliwości!
+
+Do każdego NFT przypisane jest jego unikalne ID oraz metadane, które nie mogą być skopiowane przez żaden inny token. NFT są mintowane dzięki smart contractom, które przypisują im właściciela i zarządzają możliwością przesłania NFT. Gdy ktoś tworzy lub mintuje NFT, kreuje kod przechowywany w smart kontractach, który odpowiada różnym standardom, takim jak[ ERC-721](/developers/docs/standards/tokens/erc-721/). Ta informacja jest dodawana do blockchainu, gdzie NFT jest zarządzane. Proces mintowania, patrząc z wysokiego poziomu, obejmuje następujące kroki:
+
+- Tworzenie nowego bloku
+- Zatwierdzenie informacji
+- Wpisanie informacji na blockchain
+
+NFT mają pewne specjalne właściwości:
+
+- Każdy zmintowany token ma unikalny identyfikator, który jest bezpośrednio powiązany z jednym adresem Ethereum.
+- Nie są bezpośrednio zamienne z innymi tokenami 1:1. Na przykład 1 ETH jest dokładnie taki sam jak każdy inny ETH. Tak nie jest w przypadku NFT.
+- Każdy token ma właściciela, a ta informacja jest łatwa do zweryfikowania.
+- Istnieją na Ethereum i mogą być kupowane i sprzedawane na dowolnym rynku NFT z działającym na Ethereum.
+
+Innymi słowy, jeśli _posiadasz_ NFT:
+
+- Możesz łatwo udowodnić, że jesteś jego właścicielem.
+ - Udowodnienie, że jesteś właścicielem NFT jest bardzo podobne do udowodnienia, że masz ETH w swoim portfelu.
+ - Na przykład, powiedzmy, że kupujesz NFT, a akt własności unikalnego tokenu jest przenoszony do Twojego portfela za pośrednictwem publicznego adresu.
+ - Token dowodzi, że twoja kopia pliku cyfrowego jest oryginałem.
+ - Twój prywatny klucz jest dowodem własności (proof-of-ownership) oryginału.
+ - Klucz publiczny twórcy treści służy jako certyfikat autentyczności dla tego konkretnego artefaktu cyfrowego.
+ - Klucz publiczny twórców jest zasadniczo stałym, niezmiennym elementem historii tokenu. Klucz publiczny twórcy może udowodnić, że token który posiadasz został stworzony przez konkretną osobę, przyczyniając się w ten sposób do jego wartości rynkowej (to pozwala uniknąć podrabiania NFT).
+ - Innym sposobem na udowodnienie, że jesteś właścicielem NFT jest podpisanie wiadomości, aby udowodnić, że jesteś właścicielem klucza prywatnego stojącego za adresem.
+ - Jak wspomniano powyżej, Twój prywatny klucz to dowód posiadania (proof-of-ownership) oryginału. To mówi nam, że klucze prywatne za tym adresem kontrolują dane NFT.
+ - Podpisana wiadomość może być wykorzystana jako dowód, że posiadasz swoje klucze prywatne bez ujawniania ich nikomu i tym samym dowodzi, że jesteś właścicielem NFT!
+- Nikt nie może w żaden sposób tym manipulować.
+- Możesz je sprzedać i dzięki temu w niektórych przypadkach oryginalny twórca otrzyma tantiemy od odsprzedaży.
+- Lub możesz trzymać NFT na zawsze, nie martwiąc się o swój token, ponieważ wiesz, że jest on zabezpieczony twoim portfelem na Ethereum.
+
+A jeśli _stworzysz_ NFT:
+
+- Możesz łatwo udowodnić, że jesteś jego twórcą.
+- Sam określasz jego ilość.
+- Możesz zarabiać tantiemy za każdym razem, gdy zostanie sprzedane.
+- Możesz je sprzedać na dowolnym rynku NFT lub bezpośrednio. Nie jesteś przywiązany do żadnej platformy i nie potrzebujesz pośredników.
+
+### Ilość i niedobór {#scarcity}
+
+Twórca NFT podejmuje decyzję o jego ilości.
+
+Na przykład, bilet na wydarzenie sportowe. Tak jak organizator wydarzenia może wybrać, ile biletów ma sprzedać, twórca NFT może zdecydować, ile istnieje replik. Czasami są to dokładne repliki, takie jak 5000 biletów na wejście. Czasami kilka z nich jest bardzo podobnych, ale każdy z nich nieco się różni, np. bilet z przypisanym miejscem. W innym przypadku twórca może chcieć utworzyć tylko jedno NFT jako specjalny przedmiot kolekcjonerski.
+
+W takich przypadkach każde NFT nadal miałoby niepowtarzalny identyfikator (jak kod kreskowy na tradycyjnym „bilecie”) i tylko jednego właściciela. Planowana ilość NFT ma znaczenie i zależy tylko od twórcy. Twórca może zamierzać uczynić każdy NFT całkowicie wyjątkowym w celu stworzenia niedoboru. Może też mieć powody do stworzenia kilku tysięcy replik. Pamiętaj, wszystkie te informacje są publiczne.
+
+### Tantiemy {#royalties}
+
+Niektóre NFT automatycznie wypłacą tantiemy swoim twórcom po sprzedaży. To wciąż rozwijająca się koncepcja, ale ma bardzo duży potencjał. Pierwotni właściciele [EulerBeats Originals](https://eulerbeats.com/) zarabiają 8% ceny za każdym razem, gdy ich NFT jest sprzedawane. A niektóre platformy, takie jak [Fundacja](https://foundation.app) i [Zora](https://zora.co/), wspierają pobieranie tantiemów przez swoich artystów.
+
+Dzieje się to całkowicie automatyczne, więc twórcy mogą się zrelaksować i zarabiać tantiemy w miarę jak ich praca jest sprzedawana od osoby do osoby. Obecnie temat tantiemów jest skomplikowany - wielu twórców nie otrzymuje wynagrodzenia, na które zasługują. Jeśli twój NFT ma zaprogramowane tantiemy, nigdy nie zostaniesz oszukany.
+
+## W jakim celu używa się NFT? {#nft-use-cases}
+
+Oto więcej informacji na temat niektórych lepiej rozwiniętych przypadków używania NFT w sieci Ethereum.
+
+- [Treści cyfrowe](#nfts-for-creators)
+- [Przedmioty w grach](#nft-gaming)
+- [Nazwy domen](#nft-domains)
+- [Produkty fizyczne](#nft-physical-items)
+- [Inwestycje i zastawy pożyczek](#nfts-and-defi)
+
+
+
+### Maksymalizacja zarobków dla twórców {#nfts-for-creators}
+
+Obecnie NFT są najbardziej wykorzystywane w sferze treści cyfrowych. Dzieje się tak dlatego, że ten przemysł jest dziś fundamentalnie zepsuty. Zarobki twórców są połykane przez platformy.
+
+Artysta, który publikuje prace w mediach społecznościowych, zarabia pieniądze dla platformy, która pokazuje reklamy jego fanom. Artysta otrzymuje w zamian popularność, ale popularność nie płaci rachunków.
+
+NFT napędzają nową "gospodarkę twórców", w której twórcy nie przekazują praw do swoich treści na platformy, z których korzystają. Prawo własności jest częścią samej treści.
+
+Kiedy sprzedają swoje prace, wynagrodzenie trafia bezpośrednio do nich. Jeśli nowy właściciel sprzedaje NFT, oryginalny twórca może nawet automatycznie otrzymać tantiemy. Jest to gwarantowane z każdą sprzedażą, ponieważ adres twórcy jest częścią metadanych tokenu, których nie da się zmodyfikować.
+
+
+ Odkrywaj, kupuj lub stwórz swoje własne NFT...
+
+ Przeglądaj sztukę w NFT
+
+
+
+#### Problem z kopiowaniem/wklejaniem {#nfts-copy-paste}
+
+Malkontenci często twierdzą, że NFT to tylko głupi obrazek, który można zescreenować. Często mówią z satysfakcją "Patrz, teraz mam ten obrazek za darmo"
+
+No wporządku. Lecz czy wygooglowanie obrazu Picassa np. "Guernica" czyni cię właścicielem wartego miliony dzieła sztuki?
+
+Ostatecznie posiadanie realnej rzeczy jest wartością rynkową. Im częściej jakaś część treści jest udostępniana, screenowana i generalnie w użyciu zyskuje więcej na wartości.
+
+Posiadanie wymiernej, realnej rzeczy daje zawszę większą wartość niż brak własności.
+
+
+
+### Wzmocnienie potencjału gier {#nft-gaming}
+
+NFT spotkały się z dużym zainteresowaniem deweloperów gier. NFT mogą dostarczać ewidencję własności przedmiotów w grze, być paliwem dla ekonomii gier i przynosić wiele korzyści graczom.
+
+W wielu zwykłych grach możesz kupić przedmioty do użycia w grze. Lecz gdyby tym przedmiotem byłoby NFT, mógłbyś odzyskać pieniądze poprzez ich sprzedaż, gdy już skończysz grę. Możesz nawet osiągnąć zysk, jeśli ten przedmiot stanie się bardziej pożądany.
+
+Deweloperzy gier – jako emitenci NFT – mogą zarabiać na prawach autorskich za każdym razem, gdy przedmiot jest odsprzedawany na wolnym rynku. Tworzy to wzajemnie korzystny model biznesowy, w ramach którego zarówno gracze, jak i deweloperzy zarabiają na wtórnym rynku NFT.
+
+Oznacza to również, że jeśli gra nie jest już utrzymywana przez deweloperów, przedmioty które zebrałeś(aś) i tak należą do ciebie.
+
+Ostatecznie przedmioty, które nabyłeś w grze, mogą w tym momencie, istnieć poza nią. Nawet jeśli gra zniknie z sieci, przedmioty dalej bedą pod twoją kontrolą. Można powiedzieć że stają się one rodzajem cyfrowych pamiątek, tworząc swoją własną wartość.
+
+Decentraland to gra osadzona w wirtualnej rzeczywistości, gdzie możesz kupić NFT reprezentujące wirtualne ziemie, z których możesz korzystać, według własnego uznania.
+
+
+ Sprawdź gry Ethereum, oparte na NFT...
+
+ Poznawaj gry NFT
+
+
+
+
+
+### Adresy Ethereum łatwiej zapamiętywalne {#nft-domains}
+
+Usługa Ethereum Name Service używa NFT do podania adresu Ethereum o łatwej do zapamiętania nazwie, jak `mywallet.eth`. Oznacza to, że możesz poprosić kogoś o wysłanie Ci ETH za pośrednictwem `mywallet.eth` zamiast `0x123456789.....`.
+
+Działa to w podobny sposób jak nazwa domeny witryny, która sprawia, że adres IP jest łatwiejszy do zapamiętania. Podobnie jak domeny, nazwy ENS mają wartość, zwykle w oparciu o długość i przydatność. Z ENS nie potrzebujesz rejestru domen, aby ułatwić przeniesienie własności. Zamiast tego możesz handlować swoimi nazwami ENS na giełdzie NFT.
+
+Twoja domena ENS może:
+
+- Otrzymywać kryptowaluty i inne NFT.
+- Przekierować do zdecentralizowanej strony internetowej, takiej jak [ethereum.eth](https://ethereum.eth.link). [Więcej o decentralizacji Twojej strony](https://docs.ipfs.io/how-to/websites-on-ipfs/link-a-domain/#domain-name-service-dns)
+- Przechowywać dowolne informacje, w tym informacje o profilu, takie jak adresy e-mail i adresy Twittera.
+
+
+
+### Produkty fizyczne {#nft-physical-items}
+
+Tokenizacja fizycznych przedmiotów nie jest jeszcze tak rozwinięta jak tokenizacja ich cyfrowych odpowiedników. Istnieje jednak mnóstwo projektów badających tokenizację nieruchomości, unikalnych przedmiotów mody i innych.
+
+Ponieważ NFT są zasadniczo umowami, w przyszłości będziesz mógł kupić samochód lub dom przy użyciu ETH i otrzymać akt prawny jako NFT w zamian (w tej samej transakcji). W miarę jak sytuacja staje się coraz bardziej zaawansowana, nie jest trudno wyobrazić sobie świat, w którym Twój portfel Ethereum staje się kluczem do Twojego samochodu lub domu - Twoje drzwi będą odblokowane przez kryptograficzny dowód własności.
+
+Z cennymi aktywami, takimi jak samochody i nieruchomości reprezentowanymi na Ethereum, można wykorzystać NFT jako zabezpieczenie w zdecentralizowanych pożyczkach. Jest to szczególnie pomocne, jeśli nie posiadasz dużo gotówki czy kryptowalut, ale za to posiadasz wartościowe fizyczne rzeczy. [Więcej o DeFi](/defi/)
+
+
+
+### NFT oraz DeFi {#nfts-and-defi}
+
+Świat NFT i [zdecentralizowanego finansowania (DeFi)](/defi/) zaczynają współdziałać w wielu interesujących sposobach.
+
+#### Kredyty zabezpieczone przez NFT {#nft-backed-loans}
+
+Istnieją aplikacje DeFi, które pozwalają pożyczać pieniądze pod zastaw. Na przykład zastawiasz 10 ETH, aby pożyczyć 5000 DAI ([stablecoin](/stablecoins/)). Gwarantuje to, że pożyczkodawca zostanie spłacony — jeżeli pożyczkobiorca nie spłaci DAI, wtedy zastaw trafia do pożyczkodawcy. Nie każdy ma jednak wystarczająco dużo kryptowalut, aby użyć go pod zastaw.
+
+Projekty zaczynają badać wykorzystywanie NFT jako zastawu. Wyobraź sobie, że kiedyś dawno kupiłeś rzadkie NFT CryptoPunk — przy dzisiejszych cenach może on być wart tysiące dolarów. Dając go w zastaw, możesz uzyskać dostęp do pożyczki na tych samy zasadach co w przypadku zastawu w krypto. Jeśli nie spłacisz DAI, Twój CryptoPunk zostanie wysłany do kredytodawcy jako zastaw. Kiedyś, może będzie to działało z dowolną tokenizowalną jako NFT rzeczą.
+
+Nie jest to trudne na Ethereum, ponieważ oba światy (NFT i DeFi) działają na tej samej infrastrukturze.
+
+#### Własność częściowa {#fractional-ownership}
+
+Twórcy NFT mogą również tworzyć "udziały" dla swoich NFT. Daje to inwestorom i fanom możliwość posiadania części NFT bez konieczności kupowania całości. Daje to jeszcze więcej możliwości zarówno dla twórców NFT, jak i dla kolekcjonerów.
+
+- Częściowe NFT mogą być przedmiotem obrotu na [DEXach](/defi/#dex) , takich jak Uniswap, a nie tylko [rynkach NFT](/dapps?category=collectibles). Oznacza to więcej nabywców i sprzedawców.
+- Ogólna cena NFT może być określona na podstawie ceny jego udziałów.
+- Masz więcej okazji do posiadania i czerpania zysków z przedmiotów, którymi się interesujesz. Więcej osób będzie stać na posiadanie NFT.
+
+Jest to nadal w fazie eksperymentu, ale możesz dowiedzieć się więcej o częściowej własności NFT na następujących giełdach:
+
+- [NIFTEX](https://landing.niftex.com/)
+- [NFTX](https://gallery.nftx.org/)
+
+Teoretycznie mogłoby to umożliwić posiadanie np. obrazu Picassa. Zostalibyście akcjonariuszem Picasso NFT, co oznacza, że mielibyście coś do powiedzenia w takich rzeczach, jak podział dochodów. It's very likely that one day soon owning a fraction of an NFT will enter you into a decentralised autonomous organisation (DAO) for managing that asset.
+
+These are Ethereum-powered organisations that allow strangers, like global shareholders of an asset, to coordinate securely without necessarily having to trust the other people. That's because not a single penny can be spent without group approval.
+
+As we mentioned, this is an emerging space. NFTs, DAOs, fractionalised tokens are all developing at different paces. But all their infrastructure exists and can work together easily because they all speak the same language: Ethereum. So watch this space.
+
+[More on DAOs](/dao/)
+
+### Certificates of authenticity {#certificates}
+
+Companies offering fake certificates for university degrees are reportedly a billion-dollar industry that NFTs can help combat. NFTs can be a secure and quick way to verify someone's degree credentials.
+
+[In South Korea, one university is already issuing degree certificates as an NFT](https://forkast.news/headlines/south-korea-nfts-graduates-hoseo/), with the hope that NFTs will improve access to administrative services and prevent forgery or alteration of the degree. [Trinity Business School (TBS) in Ireland is also planning on offering NFTs from 2023](https://trinitynews.ie/2022/04/business-school-to-offer-degree-nfts/).
+
+
+
+## Ethereum and NFTs {#ethereum-and-nfts}
+
+Ethereum makes it possible for NFTs to work for a number of reasons:
+
+- Transaction history and token metadata is publicly verifiable – it's simple to prove ownership history.
+- Once a transaction is confirmed, it's nearly impossible to manipulate that data to "steal" ownership.
+- Trading NFTs can happen peer-to-peer without needing platforms that can take large cuts as compensation.
+- All Ethereum products share the same "backend". Put another way, all Ethereum products can easily understand each other – this makes NFTs portable across products. You can buy an NFT on one product and sell it on another easily. As a creator you can list your NFTs on multiple products at the same time – every product will have the most up-to-date ownership information.
+- Ethereum never goes down, meaning your tokens will always be available to sell.
+
+## The environmental impact of NFTs {#environmental-impact-nfts}
+
+NFTs are growing in popularity which means they're also coming under increased scrutiny – especially over their carbon footprint.
+
+To clarify a few things:
+
+- Creating and transferring NFTs are just Ethereum transactions - they have no direct impact on the energy expended by Ethereum, nor do they independently expend their own energy.
+- Ethereum is a low-energy blockchain, meaning the environmental impact of creating, buying and transferring NFTs is very small.
+
+The next sections explain further with a little more technical detail...
+
+### Don't blame it on the NFTs {#nft-qualities}
+
+The whole NFT ecosystem works because Ethereum is decentralized and secure.
+
+Decentralized meaning you and everyone else can verify you own something. All without trusting or granting custody to a third party who can impose their own rules at will. It also means your NFT is portable across many different products and markets.
+
+Secure meaning no one can copy/paste your NFT or steal it.
+
+These qualities of Ethereum makes digitally owning unique items and getting a fair price for your content possible. Ethereum protects the assets using a decentralized consensus mechanism which involves ['proof-of-stake'](/developers/docs/consensus-mechanisms/pos). This is a low carbon method to determine who can add a block of transactions to the chain, and is considered more secure than the energy-intensive alternative, ['proof-of-work'](/developers/docs/consensus-mechanisms/pow). NFTs have been associated with high energy expenditure because Ethereum used to be secured using proof-of-work. This is no longer true.
+
+#### Minting NFTs {#minting-nfts}
+
+When you mint an NFT, a few things have to happen:
+
+- It needs to be confirmed as an asset on the blockchain.
+- The owner's account balance must be updated to include that asset. This makes it possible for it to then be traded or verifiably "owned".
+- The transactions that confirm the above need to be added to a block and "immortalized" on the chain.
+- The block needs to be confirmed by everyone in the network as "correct". This consensus removes the need for intermediaries because the network agrees that your NFT exists and belongs to you. And it's on chain so anyone can check it. This is one of the ways Ethereum helps NFT creators to maximize their earnings.
+
+All these tasks are done by block producers and validators. Block proposers add your NFT transaction to a block and broadcast it to the rest of the network. Validators check that the transaction is valid and then add it to their databases. There are lots of crypto-economic incentives in place to make sure validators are acting honestly. Otherwise, anyone could just claim that they own the NFT you just minted and fraudulently transfer ownership.
+
+#### NFT security {#nft-security}
+
+Ethereum's security comes from proof-of-stake. The system is designed to economically disincentivize malicious actions, making Ethereum tamper-proof. This is what makes NFTs possible. Once the block containing your NFT transaction becomes finalized it would cost an attacker millions of ETH to change it. Anyone running Ethereum software would immediately be able to detect dishonest tampering with an NFT, and the bad actor would be economically penalized and ejected.
+
+Security issues relating to NFTs are most often related to phishing scams, smart contract vulnerabilities or user errors (such as inadvertently exposing private keys), making good wallet security critical for NFT owners.
+
+
+ More on security
+
+
+## Build with NFTs {#build-with-nfts}
+
+Most NFTs are built using a consistent standard known as [ERC-721](/developers/docs/standards/tokens/erc-721/). However there are other standards that you might want to look into. The [ERC-1155](https://blog.enjincoin.io/erc-1155-the-crypto-item-standard-ac9cf1c5a226) standard allows for semi-fungible tokens which is particularly useful in the realm of gaming. And more recently, [EIP-2309](https://eips.ethereum.org/EIPS/eip-2309) has been proposed to make minting NFTs a lot more efficient. This standard lets you mint as many as you like in one transaction!
+
+## Dalsza lektura {#further-reading}
+
+- [Crypto art data](https://cryptoart.io/data) – _Richard Chen, updated automatically_
+- [OpenSea: the NFT Bible](https://opensea.io/blog/guides/non-fungible-tokens/) – _Devin Fizner, January 10 2020_
+- [A beginner's guide to NFTs](https://linda.mirror.xyz/df649d61efb92c910464a4e74ae213c4cab150b9cbcc4b7fb6090fc77881a95d) – _Linda Xie, January 2020_
+- [Everything you need to know about the metaverse](https://foundation.app/blog/enter-the-metaverse) – _Foundation team, foundation.app_
+- [No, CryptoArtists Aren’t Harming the Planet](https://medium.com/superrare/no-cryptoartists-arent-harming-the-planet-43182f72fc61)
+- [Ethereum's energy consumption](/energy-consumption/)
+- [A country's worth of power, no more](https://blog.ethereum.org/2021/05/18/country-power-no-more/) – _Carl Beekhuizen, May 18 2021_
diff --git a/src/content/translations/pt-br/bridges/index.md b/src/content/translations/pt-br/bridges/index.md
index 78c58fcc1cc..94db74d6cd4 100644
--- a/src/content/translations/pt-br/bridges/index.md
+++ b/src/content/translations/pt-br/bridges/index.md
@@ -113,16 +113,17 @@ Os fundos do usuário estão em risco se:
- os operadores da ponte tiverem intenção maliciosa em uma ponte confiável
- a ponte for hackeada
-Um ataque hacker recente foi a ponte Wormhole da Solana, [onde 120k wETH (US$ 325 milhões) foram roubados durante o ataque hacker](https://rekt.news/wormhole-rekt/).
+Um ataque hacker recente foi a ponte Wormhole da Solana, [onde 120k wETH (US$ 325 milhões) foram roubados durante o ataque hacker](https://rekt.news/wormhole-rekt/). Muitos dos [principais hacks em blockchains envolveram pontes](https://rekt.news/leaderboard/).
-As pontes são cruciais para integrar usuários às camadas 2 do Ethereum e até mesmo para usuários que desejam explorar diferentes ecossistemas. Entretanto, dados os riscos envolvidos na interação com as pontes, os usuários devem entender as trocas que as pontes estão fazendo.
+As pontes são cruciais para integrar usuários às camadas 2 do Ethereum e até mesmo para usuários que desejam explorar diferentes ecossistemas. Entretanto, dados os riscos envolvidos na interação com as pontes, os usuários devem entender as trocas que as pontes estão fazendo. Estas são algumas [estratégias para segurança entre cadeias](https://blog.debridge.finance/10-strategies-for-cross-chain-security-8ed5f5879946).
## Leitura adicional {#further-reading}
--
-
+- [EIP-5164: Execução entre cadeias](https://ethereum-magicians.org/t/eip-5164-cross-chain-execution/9658) _18 de junho de 2022 - Brendan Asselstine_
+- [L2Bridge Risk Framework](https://gov.l2beat.com/t/l2bridge-risk-framework/31) _5 de julho de 2022 - Bartek Kiepuszewski_
+- ["Por que o futuro será multi-chain, mas não será cross-chain."](https://old.reddit.com/r/ethereum/comments/rwojtk/ama_we_are_the_efs_research_team_pt_7_07_january/hrngyk8/)_8 de janeiro de 2022 - Vitalik Buterin_
- [O que são pontes Blockchain e como podemos classificá-las?](https://blog.li.finance/what-are-blockchain-bridges-and-how-can-we-classify-them-560dc6ec05fa) _18 de fevereiro de 2021 – Arjun Chand_
- [O que são pontes de cadeias cruzadas?](https://www.alchemy.com/overviews/cross-chain-bridges) _10 de maio de 2022 – Alchemy_
- [Pontos Blockchain: construindo redes de criptoredes](https://medium.com/1kxnetwork/blockchain-bridges-5db6afac44f8) _8 de setembro de 2021 – Dmitriy Berenzon_
diff --git a/src/content/translations/pt-br/community/events/index.md b/src/content/translations/pt-br/community/events/index.md
index a83b0643c90..247e246b4cc 100644
--- a/src/content/translations/pt-br/community/events/index.md
+++ b/src/content/translations/pt-br/community/events/index.md
@@ -1,8 +1,8 @@
---
title: Eventos Ethereum
description: Como fazer parte da comunidade Ethereum.
-hideEditButton: true
lang: pt-br
+hideEditButton: true
---
## Próximos eventos {#events}
diff --git a/src/content/translations/pt-br/community/get-involved/index.md b/src/content/translations/pt-br/community/get-involved/index.md
index e537b70098b..ba2f5cde5bd 100644
--- a/src/content/translations/pt-br/community/get-involved/index.md
+++ b/src/content/translations/pt-br/community/get-involved/index.md
@@ -17,6 +17,7 @@ Fazem parte da comunidade Ethereum pessoas de vários contextos e habilidades di
- Assista ou participe das [reuniões do núcleo de desenvolvedores](https://www.youtube.com/playlist?list=PLaM7G4Llrb7zfMXCZVEXEABT8OSnd4-7w)
- [Lista de desejos do Programa de apoio ao ecossistema](https://esp.ethereum.foundation/wishlist/): ferramentas, documentação e áreas de infraestrutura onde o Programa de suporte ao ecossistema do Ethereum está ativamente buscando aplicativos
- [Web3Bridge](https://www.web3bridge.com/): participe da promissora comunidade da web3 em sua iniciativa de identificar, treinar e oferecer suporte a centenas de desenvolvedores e membros da comunidade em toda a África
+- Junte-se ao [Discord Ethereum Cat Herders](https://discord.io/EthCatHerders)
## Pesquisadores e acadêmicos {#researchers-and-academics}
@@ -26,9 +27,11 @@ Você tem experiência em matemática, criptografia ou economia? Talvez você se
- [Ethresear.ch](https://ethresear.ch): fórum principal para pesquisas do Ethereum e o fórum mais influente do mundo no que se refere à economia de criptomoedas
- [Lista de desejos do Programa de apoio ao ecossistema](https://esp.ethereum.foundation/wishlist/): áreas de pesquisa onde o Programa de apoio ao ecossistema do Ethereum está ativamente buscando novos aplicativos
+[Explore áreas de pesquisa mais ativas](/community/research/).
+
## Habilidades que não necessitam de conhecimento técnico {#non-technical}
-Se você não é um desenvolvedor, pode ser difícil saber por onde começar no Ethereum. Aqui estão algumas sugestões de conhecimentos específicos, assim como recursos para ajudar você.
+Se você não é um desenvolvedor, pode ser difícil saber por onde começar no Ethereum. Aqui estão algumas sugestões, juntamente com recursos para determinados meios profissionais.
### Organize um encontro na sua cidade {#meetups}
@@ -56,7 +59,7 @@ Ajude na descentralização do Ethereum unindo-se a milhares de operadores de n
### Faça staking de seu ETH {#staking}
-Ao fazer staking de seu ETH, você pode receber recompensas enquanto ajuda a proteger a rede Ethereum.
+Ao participar com seu ETH, você pode receber recompensas enquanto ajuda a proteger a rede Ethereum.
- [Mais sobre participação](/staking/)
@@ -85,30 +88,34 @@ O ecossistema Ethereum pretende financiar bens públicos e projetos de impacto.
**Quer trabalhar na Ethereum?**
- [Empregos em ethereum.org](/about/#open-jobs)
-- [Empregos na Fundação Ethereum](https://ethereum.bamboohr.com/jobs/)
+- [Ofertas de empregos da Ethereum Foundation (Lever)](https://jobs.lever.co/ethereumfoundation)
+- [Oferstas de emprego da Ethereum Foundation (BambooHR)](https://ethereum.bamboohr.com/jobs/)
- [Empregos relacionados a criptomoedas](https://cryptocurrencyjobs.co/ethereum/)
- [Crypto.jobs](https://crypto.jobs/)
- [Carreiras na ConsenSys](https://consensys.net/careers/)
- [Lista de empregos relacionados a criptomoedas](https://cryptojobslist.com/ethereum-jobs)
-- [Emprego na Bankless](https://pallet.xyz/list/bankless/jobs)
+- [Ofertas de emprego na Bankless](https://pallet.xyz/list/bankless/jobs)
- [Empregos na useWeb3](https://www.useweb3.xyz/jobs)
- [Empregos na Web3](https://web3.career)
- [Web3 Army](https://web3army.xyz/)
+- [Empregos na Crypto Valley](https://cryptovalley.jobs/)
## Participe de uma DAO {#decentralized-autonomous-organizations-daos}
-"DAOs" são organizações autônomas descentralizadas. Esses grupos aproveitam a tecnologia Ethereum para facilitar a organização e a colaboração. Por exemplo, para controlar a adesão, votar em propostas ou administrar bens em comum. Embora as DAOs ainda sejam experimentais, elas oferecem oportunidades para você encontrar grupos com os quais se identifica. Encontre colaboradores e aumente o seu impacto na comunidade Ethereum. [Mais sobre DAOs](/dao/)
-
-- [LexDAO](https://lexdao.coop) [@lex_DAO](https://twitter.com/lex_DAO): _engenharia jurídica_
-- [Machi X](https://machix.com) [@MachiXOficial](https://twitter.com/MachiXOfficial): _comunidade de arte_
-- [MetaCartel](https://metacartel.org) [@Meta_Cartel](https://twitter.com/Meta_Cartel): _incubadora de DAO_
-- [MetaCartel Ventures](https://metacartel.xyz) [@VENTURE_DAO](https://twitter.com/VENTURE_DAO): _venture para projetos cripto pré-seed_
-- [MetaGame](https://metagame.wtf) [@MetaFam](https://twitter.com/MetaFam): _mecânica de jogos para o vida real MMORPG_
-- [MetaFactory](https://metafactory.ai) [@TheMetaFactory](https://twitter.com/TheMetaFactory): _marcas de vestuário Digiphysical_
-- [MolochDAO](https://molochdao.com) [@MolochDAO](https://twitter.com/MolochDAO): _a comunidade focada em financiar o desenvolvimento do Ethereum_
-- [Μ├](https://metagammadelta.com/) (Meta Gamma Delta) [@metagammadelta](https://twitter.com/metagammadelta): _projetos liderados por mulheres_
-- [Guilda de Reide](https://raidguild.org) [@RaidGuild](https://twitter.com/RaidGuild): _grupo de builders da Web3_
-- [DAOSquare](https://www.daosquare.io) [@DAOSquare](https://twitter.com/DAOSquare): _promova o conceito de DAO em campos que não são tecnológicos e ajude as pessoas a criar valor por meio do DAO._
-- [dOrg](https://dOrg.tech) [@dOrg_tech](https://twitter.com/dOrg_tech): _grupo freelancer de desenvolvimento Web3 trabalhando como uma DAO_
-- [HausDAO](https://daohaus.club) [@nowdaoit](https://twitter.com/nowdaoit): _governaça comunitária da DAOhaus_
-- [Developer DAO](https://www.developerdao.com/) [@developer_dao](https://twitter.com/developer_dao): _comunidade de builders que acreditam na propriedade coletiva da Internet_
+"DAOs" são organizações autônomas descentralizadas. Esses grupos aproveitam a tecnologia do Ethereum para facilitar a organização e a colaboração. Por exemplo, para controlar a adesão, votar em propostas ou administrar bens em comum. Embora as DAOs ainda sejam experimentais, elas oferecem oportunidades para você encontrar grupos com os quais se identifica. Encontre colaboradores e aumente o seu impacto na comunidade Ethereum. [Mais sobre DAOs](/dao/)
+
+- [DAOSquare](https://www.daosquare.io) [@DAOSquare](https://twitter.com/DAOSquare) – _Promova o conceito de DAO no campo não técnico e ajude as pessoas a criar valor através do DAO_
+- [Developer DAO](https://www.developerdao.com/) [@developer_dao](https://twitter.com/developer_dao) – _Comunidade de construtores que acreditam na propriedade coletiva da Internet_
+- [dOrg](https://dOrg.tech) [@dOrg_tech](https://twitter.com/dOrg_tech) – _Grupo de freelancers de desenvolvimento Web3 trabalhando como DAO_
+- [DXdao](https://DXdao.eth.link/) [@DXdao](https://twitter.com/DXdao_) – _Desenvolvimento descentralizado e governança de dapps e protocolos_
+- [HausDAO](https://daohaus.club) [@nowdaoit](https://twitter.com/nowdaoit) – _Governaça comunitária da DAOhaus_
+- [Hero DAO](https://herodao.org/) [@hero_dao](https://twitter.com/hero_dao) – _Franquia de super-heróis de propriedade da comunidade_
+- [LexDAO](https://lexdao.coop) [@lex_DAO](https://twitter.com/lex_DAO) – _Engenharia jurídica_
+- [Machi X](https://machix.com) [@MachiXOficial](https://twitter.com/MachiXOfficial) – _Comunidade artística_
+- [MetaCartel](https://metacartel.org) [@Meta_Cartel](https://twitter.com/Meta_Cartel) – _Incubadora de DAO_
+- [MetaCartel Ventures](https://metacartel.xyz) [@VENTURE_DAO](https://twitter.com/VENTURE_DAO) – _Venture para projetos cripto pré-seed_
+- [MetaGame](https://metagame.wtf) [@MetaFam](https://twitter.com/MetaFam) – _Mecânica de jogos para a vida real MMORPG_
+- [MetaFactory](https://metafactory.ai) [@TheMetaFactory](https://twitter.com/TheMetaFactory) – _Marcas de vestuário Digiphysical_
+- [Μ├](https://metagammadelta.com/) (Meta Gamma Delta) [@metagammadelta](https://twitter.com/metagammadelta) – _Projetos liderados por mulheres_
+- [MolochDAO](https://molochdao.com) [@MolochDAO](https://twitter.com/MolochDAO) – _Comunidade focada em financiar o desenvolvimento do Ethereum_
+- [Raid Guild](https://raidguild.org) [@RaidGuild](https://twitter.com/RaidGuild)– _Grupo de construtores da Web3_
diff --git a/src/content/translations/pt-br/community/grants/index.md b/src/content/translations/pt-br/community/grants/index.md
index 75718883f29..a49f28af15e 100644
--- a/src/content/translations/pt-br/community/grants/index.md
+++ b/src/content/translations/pt-br/community/grants/index.md
@@ -1,5 +1,5 @@
---
-title: Fundação Ethereum e programas de recompensas da comunidade
+title: Fundação Ethereum & Programa de Recompensas da Comunidade
description: Uma listagem dos programas de recompensas por meio do ecossistema Ethereum.
lang: pt-br
---
@@ -14,21 +14,28 @@ Esta página é administrada por nossa comunidade. Se houver algo faltando ou er
Esses programas abrangem um amplo ecossistema Ethereum ao oferecer recompensas a um grande escopo de projetos. Eles incluem soluções de dimensionamento, formação de comunidades, segurança, privacidade e muito mais. Essas recompensas não são específicas de nenhuma plataforma Ethereum e são um bom lugar para começar se você não tiver certeza.
-- [Programa de suporte ao ecossistema EF](https://esp.ethereum.foundation)-_ Financiar projetos de código aberto que beneficiam a Ethereum, com foco particular em ferramentas universais, infraestrutura, pesquisa e bens públicos _
+- [Programa de suporte ao ecossistema EF](https://esp.ethereum.foundation)-_ Financiar projetos de código aberto que beneficiam o Ethereum, com foco particular em ferramentas universais, infraestrutura, pesquisa e bens públicos _
- [Ethereum RFP](https://github.com/ethereum/requests-for-proposals)-_ Solicitações de propostas da Fundação Ethereum para trabalho e projetos no seu ecossistema_
-- [MetaCartel](https://www.metacartel.org/grants/)-_Desenvolvimento de aplicativos descentralizados, criação de DAO_
- Recompensas variando entre $1K e $8.000 dólares.
-- [Moloch DAO](https://www.molochdao.com/)-_Privacidade, dimensionamento da camada 2, segurança do cliente e mais_
+- [MetaCartel](https://www.metacartel.org/grants/) – _Desenvolvimento de Dapp, criação de DAO_
+- [Moloch DAO](https://www.molochdao.com/) – _Privacidade, dimensionamento da camada 2, segurança do cliente e mais_
- [Recompensas abertas](https://opengrants.com/explore)
+- [Concessões DAO](https://docs.google.com/spreadsheets/d/1XHc-p_MHNRdjacc8uOEjtPoWL86olP4GyxAJOFO0zxY/edit#gid=0) – _Planilha Google de organizações que oferecem concessões_
+- [Desafio de mesclagem de dados](https://esp.ethereum.foundation/merge-data-challenge) – _Convocando todos os Ethereanos, cientistas de dados, engenheiros de dados, visualizadores de dados, desenvolvedores e qualquer pessoa interessada em explorar os dados do Ethereum!_
## Especificidades do projeto {#project-specific}
Estes projetos criaram seus próprios programas de recompensas destinados a desenvolvimento e experimentação de suas tecnologias.
-- [TheGraph](https://airtable.com/shrdfvnFvVch3IOVm) – _O ecossistema [The Graph](https://thegraph.com/)_
-- [Programa de fundos Uniswap](https://www.unigrants.org/) – _[Uniswap](https://uniswap.org/) comunidade_
-- [Balancer](https://balancergrants.notion.site/Balancer-Community-Grants-23e562c5bc4347cd8304637bff0058e6) – _[Balancer](https://balancer.fi/) Fundo do ecossistema_
-- [mStable](https://docs.mstable.org/advanced/grants-program) - _[mStable](https://mstable.org/) comunidade_
+- [Programa de concessões Aave](https://aavegrants.org/) – _[Aave](https://aave.com/) concede DAO_
+- [Balancer](https://balancergrants.notion.site/Balancer-Community-Grants-23e562c5bc4347cd8304637bff0058e6) – _Fundo do ecossistema [Balancer](https://balancer.fi/)_
+- [Programa de concessões da Chainlink](https://chain.link/community/grants) – _Concessões da comunidade da [Chainlink](https://chain.link/)_
+- [Programa de concessões Compound](https://compoundgrants.org/) – _Ecossistema financeiro [Compound](https://compound.finance/)_
+- [Programa de concessões da Consensys](https://consensys.net/grants/) – _Concessões do Ethereum e financiamento de cadeia de blocos [Consensys](https://consensys.net/)_
+- [Organização de concessões do ecossistema Lido (LEGO)](https://lego.lido.fi/) – _Ecossistema financeiro [Lido](https://lido.fi/)_
+- [Programa de concessões mStable](https://docs.mstable.org/advanced/grants-program) – _Comunidade [mStable](https://mstable.org/)_
+- [The Graph](https://airtable.com/shrdfvnFvVch3IOVm) – _Ecossistema [The Graph](https://thegraph.com/)_
+- [Programa de fundos Uniswap](https://www.unigrants.org/) – _Comunidade [Uniswap](https://uniswap.org/)_
+- [Web3 Grants](https://web3grants.net) – _Uma extensa lista de programas de concessão web3/crypto relacionados_
## Financiamento quadrático {#quadratic-funding}
diff --git a/src/content/translations/pt-br/community/language-resources/index.md b/src/content/translations/pt-br/community/language-resources/index.md
index 8dae93ce1fc..0fcc0f676c4 100644
--- a/src/content/translations/pt-br/community/language-resources/index.md
+++ b/src/content/translations/pt-br/community/language-resources/index.md
@@ -16,7 +16,7 @@ Conhece algum recurso educacional em sua língua? [Abra uma solicitação](https
## Recursos em Ethereum.org {#ethereum-org}
-O site Ethereum.org é traduzido por nativos em mais de 40 idiomas, os quais pode encontrar na nossa [página de idiomas](/languages).
+Ethereum.org é traduzido nativamente para mais de 40 idiomas que você pode encontrar em nossa [página de idiomas](/languages).
Se você for bilíngue e deseja nos ajudar a alcançar mais pessoas, também pode fazer parte do [Programa de tradução da ethereum.org](/contributing/translation-program/#translation-program) e nos ajudar a traduzir o site.
@@ -28,10 +28,12 @@ Se você for bilíngue e deseja nos ajudar a alcançar mais pessoas, também pod
- [BeInCrypto](http://www.beincrypto.com.br): notícias e artigos sobre criptomoedas, incluindo uma lista das exchanges disponíveis no Brasil
- [Cointelegraph](http://cointelegraph.com.br/category/analysis): versão brasileira do Cointelegraph, um das maiores mídias digitais sobre criptomoedas
+- [Livecoins](http://www.livecoins.com.br/ethereum) - notícias e materiais informativos sobre criptomoedas
- [Seudinheiro](http://www.seudinheiro.com/criptomoedas/): notícias e relatórios sobre criptomoedas
**Educação**
+- [web3dev](https://www.web3dev.com.br/) - Centro de conteúdo e comunidade Discord para desenvolvedores de web 3.
- [Web3Brasil](https://github.com/web3brasil/web3brasil): recursos para aprender Web3 e DeFi
- [CriptoFacil](http://www.criptofacil.com/ultimas-noticias/): notícias e educação sobre criptomoedas, incluindo Ethereum para principiantes e DeFi para iniciantes
- [CriptoAtivos](http://www.criptoativos.wiki.br/): informações sobre criptomoedas, materiais educativos e blog
@@ -43,7 +45,7 @@ Se você for bilíngue e deseja nos ajudar a alcançar mais pessoas, também pod
**Recursos gerais**
- [Ethereum.cn](https://www.ethereum.cn/): conteúdo mantido pela comunidade, cobrindo assuntos como as melhorias na camada de consenso, as conclusões dos encontros dos desenvolvedores, a segunda camada etc.
-- [EthFans](https://github.com/editor-Ajian/EthFans.org-annual-collected-works/): aprenda tudo — dos fundamentos aos tópicos avançados sobre Ethereum
+- [EthFans](https://github.com/editor-Ajian/EthFans.org-annual-collected-works/) — aprenda tudo, de noções básicas a tópicos avançados do Ethereum
- [Unitimes](https://mp.weixin.qq.com/s/tvloZSDBSOQN9zDQj_91kA): conteúdo mantido pela comunidade sobre Ethereum, DeFi, NFT ou conhecimento relacionado à Web3
- [123ETH](https://123eth.org/): um portal para o ecossistema Ethereum
- [Zhen Xiao](http://zhenxiao.com/blockchain/): cursos on-line gratuitos sobre criptomoedas e suas aplicações
@@ -57,51 +59,68 @@ Se você for bilíngue e deseja nos ajudar a alcançar mais pessoas, também pod
**Para desenvolvedores**
-- [DappLearning](https://github.com/Dapp-Learning-DAO/Dapp-Learning): um grupo de aprendizado para estudar projetos mainstream sobre aplicativos descentralizados e compartilhar pensamentos e comentários semanalmente
+- [DappLearning](https://github.com/Dapp-Learning-DAO/Dapp-Learning) – um grupo de aprendizado para estudar projetos Dapp convencionais e compartilhar pensamentos e comentários toda semana
- [LearnBlockchain](https://learnblockchain.cn/): uma comunidade para desenvolvedores. Compartilha informações sobre a tecnologia blockchain
**Para pesquisadores de criptografia**
-- [SecbitLabs](https://mp.weixin.qq.com/s/69_tqBJpr_sbaKtR1sBRMw): uma conta no WeChat sobre criptografia, segurança etc.
-- [Sparkbyte](https://mp.weixin.qq.com/s/9KgKTc_jtJ7bWKdbNPoqvQ): uma conta no WeChat sobre a tecnologia ZK
+- [SecbitLabs](https://mp.weixin.qq.com/s/69_tqBJpr_sbaKtR1sBRMw) - uma conta WeChat, explicando a criptografia, segurança, etc.
+- [Sparkbyte](https://mp.weixin.qq.com/s/9KgKTc_jtJ7bWKdbNPoqvQ) - uma conta no WeChat sobre a tecnologia ZK
+
+### Tcheco {#cs}
+
+- [Gwei.cz](https://gwei.cz) – Comunidade local em torno da Web3, que cria conteúdo educacional, organiza eventos online e presenciais
+- [Gwei.cz Příručka](https://prirucka.gwei.cz/) – Guia Ethereum para iniciantes
+- [DAO Příručka](https://dao.gwei.cz/) – Guia do iniciante para DAOs
+- [ Mastering Ethereum](https://ipfs.infura-ipfs.io/ipfs/bafybeidvuxhnsgfx3tncpfxheqglkjwmdxclknlgd7s7qggd2a6bzgb27m) – Dominando o Ethereum em Tcheco
### Francês {#fr}
-- [Ethereum France](https://www.ethereum-france.com/): Ethereum France organiza eventos, cria conteúdo e encoraja discussões em torno do Ethereum
-- [Ethereum.fr](https://ethereum.fr/): educação e notícias sobre Ethereum
-- [BanklessFR](https://banklessfr.substack.com/): boletim informativo em francês sobre finanças descentralizadas
-- [CryptoFR](https://cryptofr.com/category/44/ethereum-general): fórum de criptomoedas com uma subpágina sobre Ethereum
+- [Ethereum France](https://www.ethereum-france.com/) – O Ethereum France organiza eventos, cria conteúdo e incentiva discussões em torno do Ethereum
+- [Ethereum.fr](https://ethereum.fr/) – Educação e notícias sobre o Ethereum
+- [BanklessFR](https://banklessfr.substack.com/) – Boletim informativo em francês sobre finanças descentralizadas
+- [CryptoFR](https://cryptofr.com/category/44/ethereum-general) – Fórum de criptomoedas com uma subpágina sobre o Ethereum
### Alemão {#de}
-- [Aprendizagem em Microsoft (Solidity)](https://docs.microsoft.com/de-de/learn/modules/blockchain-learning-solidity/): usando Solidity
-- [Microsoft Learn (smart contracts)](https://docs.microsoft.com/de-de/learn/modules/blockchain-solidity-ethereum-smart-contracts/): escrevendo contratos inteligentes em Ethereum com Solidity
-- [Microsoft Learn (Ethereum networks)](https://docs.microsoft.com/de-de/learn/modules/blockchain-ethereum-networks/): conectar e implementar redes Ethereum
-- [Microsoft Learn (blockchains)](https://docs.microsoft.com/de-de/learn/paths/ethereum-blockchain-development/): ponto de entrada para o desenvolvimento da blockchain
+- [Microsoft Learn (Solidity)](https://docs.microsoft.com/de-de/learn/modules/blockchain-learning-solidity/) – Usando o Solidity
+- [Microsoft Learn (contratos inteligentes)](https://docs.microsoft.com/de-de/learn/modules/blockchain-solidity-ethereum-smart-contracts/) – escrevendo contratos inteligentes do Ethereum com Solidity
+- [Microsoft Learn (redes Ethereum)](https://docs.microsoft.com/de-de/learn/modules/blockchain-ethereum-networks/) – Conectar e implementar redes Ethereum
+- [Microsoft Learn (cadeias de blocos)](https://docs.microsoft.com/de-de/learn/paths/ethereum-blockchain-development/) – Ponto de entrada para o desenvolvimento da cadeia de blocos
### Italiano {#it}
-- [Ethereum Italia](https://www.ethereum-italia.it/): educação, eventos e notícias sobre Ethereum com foco nos contratos inteligentes e na tecnologia blockchain
-- [Ethereum Italia Podcast](https://www.ethereum-italia.it/podcast/): podcast sobre Ethereum em italiano
-- [Aprendizagem em Microsoft (Solidity)](https://docs.microsoft.com/it-it/learn/modules/blockchain-learning-solidity/): usando Solidity
-- [Microsoft Learn (smart contracts)](https://docs.microsoft.com/it-it/learn/modules/blockchain-solidity-ethereum-smart-contracts/): escrevendo contratos inteligentes com Solidity
-- [Microsoft Learn (dApps)](https://docs.microsoft.com/it-it/learn/modules/blockchain-create-ui-decentralized-apps/): criar uma interface de usuário com aplicativos descentralizados
+- [Ethereum Italia](https://www.ethereum-italia.it/) – Educação, eventos e notícias sobre o Ethereum com foco nos contratos inteligentes e na tecnologia blockchain
+- [Ethereum Italia Podcast](https://www.ethereum-italia.it/podcast/) – podcast sobre o Ethereum em italiano
+- [Aprendizagem em Microsoft (Solidity)](https://docs.microsoft.com/it-it/learn/modules/blockchain-learning-solidity/) – usando Solidity
+- [Microsoft Learn (conratos inteligentes)](https://docs.microsoft.com/it-it/learn/modules/blockchain-solidity-ethereum-smart-contracts/) – Escrevendo contratos inteligentes com Solidity
+- [Microsoft Learn (dapps)](https://docs.microsoft.com/it-it/learn/modules/blockchain-create-ui-decentralized-apps/) – crie uma interface de usuário com aplicativos descentralizados
### Espanhol {#es}
-- [Ethereum Madrid](https://ethereummadrid.com/): blockchain, DeFi e cursos, eventos e blog sobre governança
-- [Cointelegraph](https://es.cointelegraph.com/ethereum-for-beginners): guia sobre Ethereum em espanhol para iniciantes
-- [Tutoriais online](https://tutoriales.online/curso/solidity): aprenda Solidity e programação em Ethereum
-- [Curso de introdução ao desenvolvimento de Ethereum](https://youtube.com/playlist?list=PLTqiwJDd_R8y9pfUBjhkVa1IDMwyQz-fU): fundamentos, testes e implantação em Solidity do seu primeiro contrato inteligente
-- [Curso de introdução à segurança e hacking na Ethereum](https://youtube.com/playlist?list=PLTqiwJDd_R8yHOvteko_DmUxUTMHnlfci): entendendo as vulnerabilidades comuns e os problemas de segurança em contratos inteligentes reais
-- [Curso de introdução ao desenvolvimento em DeFi](https://youtube.com/playlist?list=PLTqiwJDd_R8zZiP9_jNdaPqA3HqoW2lrS): aprendendo como funcionam os contratos inteligentes de DeFi em Solidity e criando seu próprio Automated Market Maker
+- [Ethereum Madrid](https://ethereummadrid.com/) – cadeia de blocos, DeFi e cursos, eventos e blog sobre governança
+- [Cointelegraph](https://es.cointelegraph.com/ethereum-for-beginners) – guia sobre o Ethereum em espanhol para iniciantes
+- [Tutoriais online](https://tutoriales.online/curso/solidity) – aprenda Solidity e programação em Ethereum
+- [Curso de introdução ao desenvolvimento do Ethereum](https://youtube.com/playlist?list=PLTqiwJDd_R8y9pfUBjhkVa1IDMwyQz-fU) – fundamentos, testes e implantação em Solidity do seu primeiro contrato inteligente
+- [Curso de introdução à segurança e hacking no Ethereum](https://youtube.com/playlist?list=PLTqiwJDd_R8yHOvteko_DmUxUTMHnlfci) – entendendo as vulnerabilidades comuns e os problemas de segurança em contratos inteligentes reais
+- [Curso de introdução ao desenvolvimento em DeFi](https://youtube.com/playlist?list=PLTqiwJDd_R8zZiP9_jNdaPqA3HqoW2lrS) – aprendendo como funcionam os contratos inteligentes de DeFi em Solidity e criando seu próprio Automated Market Maker
+- [Cryptoversidad](https://www.youtube.com/c/Cryptoversidad) – Educação não técnica em cadeia de blocos do iniciante ao avançado. Aprenda tudo sobre criptomoedas e Ethereum.
### Turco {#tr}
-- [BTK Akademi](https://www.btkakademi.gov.tr/portal/course/blokzincir-ve-kripto-paralar-10569#!/about): curso com foco em blockchain e criptomoedas
+- [BTK Akademi](https://www.btkakademi.gov.tr/portal/course/blokzincir-ve-kripto-paralar-10569#!/about) – curso com foco em cadeia de blocos e criptomoedas
+- [A grande mudança de nome – o que aconteceu com Eth2?](https://miningturkiye.org/konu/ethereum-madenciligi-bitiyor-mu-onemli-gelisme.655/) – tradução em turco da excelente publicação de blog sobre a mudança de nome, explicando o afastamento da terminologia "Eth2"
### Vietnamita {#vi}
-- [Grupo de Dinos](https://wiki.tino.org/ethereum-la-gi/): visão geral do Ethereum, das dApps, das carteiras e perguntas frequentes
-- [Tap Chi Bitcoin](https://tapchibitcoin.io/tap-chi/tin-tuc-ethereum-eth): plataforma web com subpáginas de noticias e educação sobre Ethereum
-- [Coin68](https://coin68.com/ethereum-tieu-diem/): portal de criptomoedas com notícias e conteúdo educacional sobre Ethereum
+- [Tino Group](https://wiki.tino.org/ethereum-la-gi/) – visão geral do Ethereum, dapps, carteiras e perguntas frequentes
+- [Tap Chi Bitcoin](https://tapchibitcoin.io/tap-chi/tin-tuc-ethereum-eth) – plataforma Web com subpáginas de noticias e educacionais sobre o Ethereum
+- [Coin68](https://coin68.com/ethereum-tieu-diem/) – portal de criptomoedas com notícias e conteúdo educacional sobre o Ethereum
+
+### Japonês {#ja}
+
+- [Associação japonesa de corretoras de ativos virtuais e de criptomoedas](https://jvcea.or.jp/)
+- [Associação japonesa de empresas de criptoativos](https://cryptocurrency-association.org/)
+- [Comece com o desenvolvimento de cadeia de blocos – Learn | Microsoft Docs](https://docs.microsoft.com/ja-jp/learn/paths/ethereum-blockchain-development/) – Este caminho de aprendizagem apresenta a cadeia de blocos e o desenvolvimento na plataforma do Ethereum
+- [ Mastering Ethereum](https://www.oreilly.co.jp/books/9784873118963/) – Dominando o Ethereum em Japonês
+- [Desenvolvimento de contratos inteligentes com Solidity e Ethereum](https://www.oreilly.co.jp/books/9784873119342/) – Desenvolvimento de contratos inteligentes com Solidity e Ethereum em Japonês
diff --git a/src/content/translations/pt-br/community/online/index.md b/src/content/translations/pt-br/community/online/index.md
new file mode 100644
index 00000000000..50f8b16ec0b
--- /dev/null
+++ b/src/content/translations/pt-br/community/online/index.md
@@ -0,0 +1,49 @@
+---
+title: Comunidades online
+description: Uma listagem dos programas de recompensas por meio do ecossistema Ethereum.
+lang: pt-br
+---
+
+# Comunidades online {#online-communities}
+
+Centenas de milhares de entusiastas do Ethereum se reúnem nestes fóruns na Internet para compartilhar notícias, falar sobre avanços recentes, debater problemas técnicos e imaginar o futuro.
+
+## Fóruns {#forums}
+
+r/ethereum – tudo sobre o Ethereum
+r/ethfinance – o lado financeiro do Ethereum, incluindo DeFi
+r/ethdev – focado no desenvolvimento do Ethereum
+r/ethtrader – tendências e análise de mercado
+r/ethstaker – bem-vindos a todos os interessados em apostar no Ethereum
+Fellowship of Ethereum Magicians – comunidade orientada em torno de padrões técnicos no Ethereum
+Ethereum Stackexchange – discussão e ajuda para desenvolvedores Ethereum
+Pesquisa Ethereum – o painel de mensagens mais influente para pesquisa criptoeconômica
+
+## Salas de bate-papo {#chat-rooms}
+
+Ethereum Cat Herders –Comunidade orientada em torno da oferta de apoio à gestão de projetos para o desenvolvimento do Ethereum
+Ethereum Hackers – Chat no Discord administrado pela ETHGlobal: uma comunidade online para hackers Ethereum em todo o mundo
+CryptoDevs – Comunidade Discord focada no desenvolvimento do Ethereum
+Discord EthStaker – Comunidade orientada para oferecer suporte no gerenciamento de projetos para o desenvolvimento do Ethereum
+Equipe do site Ethereum.org – pare e converse sobre desenvolvimento e design do site ethereum.org com a equipe e pessoas da comunidade
+Web3 University – comunidade focada em aprender desenvolvimento Web3
+Matos Discord – comunidade de criadores da Web3 na qual construtores, lideranças industriais e entusiastas do Ethereum se encontram. somos apaixonados pelo desenvolvimento, design e cultura da Web3. venha construir conosco.
+Solidity Gitter– chat para desenvolvimento do solidity (Gitter)
+Solidity Matrix – chat para desenvolvimento do Solidity (Matrix)
+
+## YouTube e Twitter {#youtube-and-twitter}
+
+Ethereum Foundation – Mantenha-se atualizado com as últimas novidades da Ethereum Foundation
+@ethereum – Conta oficial da Ethereum Foundation
+@ethdotorg – O portal para o Ethereum, construído para a nossa comunidade global em crescimento
+Lista de contas influentes sobre o Ethereum no Twitter
+
+
+
+
+
+
+ Saiba mais sobre DAOs
+
+
+
diff --git a/src/content/translations/pt-br/community/support/index.md b/src/content/translations/pt-br/community/support/index.md
index 7947624ed6d..6452a694a11 100644
--- a/src/content/translations/pt-br/community/support/index.md
+++ b/src/content/translations/pt-br/community/support/index.md
@@ -20,7 +20,7 @@ Compreender a natureza descentralizada do Ethereum é vital porque qualquer pess
Aprenda os conceitos básicos do Ethereum
-Apesar da falta de apoio oficial, muitos grupos, comunidades e projetos em todo o ecossistema Ethereum ficarão felizes em ajudar.
+Apesar da falta de suporte oficial, muitos grupos, comunidades e projetos em todo o ecossistema Ethereum estão felizes em ajudar, e você pode encontrar muitas informações e recursos úteis nesta página. Ainda tem dúvidas? Junte-se ao [Discord ethereum.org](/discord/) e tentaremos ajudar.
## Suporte a carteiras {#wallet-support}
@@ -106,4 +106,8 @@ Transações em Ethereum podem algumas vezes ficar bloqueadas se você tiver env
#### Como minero Ethereum? {#mining-ethereum}
-Não recomendamos comprar equipamentos de mineração, se você ainda não está minerando Ethereum. A [fusão](/upgrades/merge/) que ocorrerá cerca do 2º trimestre de 2022 fará a transição do Ethereum da prova de trabalho para a prova de participação. Esta mudança significa que a mineração de Ethereum não será mais possível.
+A mineração do Ethereum não é mais possível. A mineração foi desativada quando o Ethereum passou de prova de trabalho para prova de participação. Agora, em vez de mineradores, o Ethereum tem validadores. Os validadores participam com ETH e recebem recompensas de aposta para proteger a rede.
+
+#### Como me torno um participante/validador? {#become-validator}
+
+Para se tornar um validador, você deve participar com 32 ETH no contrato de depósito do Ethereum e configurar um nó validador. Mais informações estão disponíveis em nossas [páginas de participação](/staking) e na [plataforma de lançamento de participação](https://launchpad.ethereum.org/).
diff --git a/src/content/translations/pt-br/developers/docs/accounts/index.md b/src/content/translations/pt-br/developers/docs/accounts/index.md
index 2b39079955e..57829af26ff 100644
--- a/src/content/translations/pt-br/developers/docs/accounts/index.md
+++ b/src/content/translations/pt-br/developers/docs/accounts/index.md
@@ -14,8 +14,8 @@ As contas são um tema muito amigável para iniciantes. Mas para ajudá-lo a ent
Ethereum tem dois tipos de contas:
-- Propriedade externa — controlada por qualquer pessoa com as chaves privadas
-- Contrato – um contrato inteligente implantado para a rede, controlado por código. Saiba mais sobre [contratos inteligentes](/developers/docs/smart-contracts/)
+- Conta de propriedade externa (EOA) — controlada por qualquer pessoa com as chaves privadas
+- Conta de contrato — um contrato inteligente implantado na rede, controlado por código. Saiba mais sobre [contratos inteligentes](/developers/docs/smart-contracts/)
Ambos os tipos de conta têm capacidade para:
@@ -29,12 +29,14 @@ Ambos os tipos de conta têm capacidade para:
- Não há custo para criar uma conta
- Pode iniciar transações
- Transações entre contas de propriedade externa só podem ser transferências de ETH/token
+- Composto por um par de chaves criptográficas: chaves públicas e privadas que controlam as atividades da conta
**Contrato**
- Criar um contrato tem um custo porque você está usando o armazenamento de rede
- Só pode enviar transações em resposta ao recebimento de transação
- Transações de uma conta externa para uma conta contrato podem acionar um código que pode executar muitas ações diferentes, como transferir tokens ou até mesmo criar um contrato
+- As contas de contrato não têm chaves privadas. Em vez disso, eles são controlados pela lógica do código do contrato inteligente
## Uma conta analisada {#an-account-examined}
@@ -95,13 +97,19 @@ Exemplo:
O endereço do contrato é geralmente dado quando um contrato é implantado na Blockchain do Ethereum. O endereço vem do endereço do criador e do número de transações enviadas desse endereço (o “nonce”).
-## Mais informações sobre carteiras {#a-note-on-wallets}
+## Chaves de validação {#validators-keys}
-Uma conta não é uma carteira. Uma conta é o par de chaves para uma conta Ethereum de propriedade do usuário. Uma carteira é uma “interface” ou aplicativo que permite você interagir com a sua conta Ethereum.
+Há também outro tipo de chave no Ethereum, introduzida quando o Ethereum mudou de prova de trabalho para prova de participação baseado no consenso. Essas chaves são "BLS" e são usadas para identificar validadores. Essas chaves podem ser agregadas de forma eficiente para reduzir a largura de banda necessária para que a rede chegue a um consenso. Sem essa agregação de chaves, a participação mínima para um validador seria muito maior.
+
+[Mais sobre chaves de validação](/developers/docs/consensus-mechanisms/pos/keys/).
+
+## Observação sobre carteiras {#a-note-on-wallets}
+
+Uma conta não é uma carteira. Uma conta é o par de chaves para uma conta Ethereum de propriedade do usuário. Uma carteira é uma interface ou um aplicativo que permite interagir com a sua conta Ethereum.
## Uma demonstração visual {#a-visual-demo}
-Assista a Austin guiar você pelas funções hash e pelos pares de chaves.
+Assista a Austin mostrando passo a passo as funções de hash e os pares de chaves.
@@ -109,7 +117,7 @@ Assista a Austin guiar você pelas funções hash e pelos pares de chaves.
## Leitura adicional {#further-reading}
-_Conhece um recurso da comunidade que ajudou você? Edite esta página e adicione-o!_
+_Conhece algum recurso da comunidade que o ajudou? Edite essa página e adicione-a!_
## Tópicos relacionados {#related-topics}
diff --git a/src/content/translations/pt-br/developers/docs/blocks/index.md b/src/content/translations/pt-br/developers/docs/blocks/index.md
index 201826a3605..9999b95ebc2 100644
--- a/src/content/translations/pt-br/developers/docs/blocks/index.md
+++ b/src/content/translations/pt-br/developers/docs/blocks/index.md
@@ -12,58 +12,128 @@ Os blocos são um tópico muito amigável para iniciantes. Mas para ajudá-lo a
## Por que blocos? {#why-blocks}
-Para garantir que todos os participantes da rede Ethereum mantenham um estado sincronizado e concordem com o histórico preciso de transações, nós processamos lotes de transações em blocos. Isso significa que dezenas (ou centenas) de transações são confirmadas, aceitas e sincronizadas de uma só vez.
+Para garantir que todos os participantes da rede Ethereum mantenham um estado sincronizado e concordem com o histórico preciso de transações, nós processamos lotes de transações em blocos. Isso significa que dezenas (ou centenas) de transações são confirmadas, acordadas e sincronizadas de uma só vez.
![Um diagrama mostrando transações em um bloco causando mudanças de estado](./tx-block.png) _Diagrama adaptado de [Ethereum EVM ilustrado](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
-Ao espaçar os conjuntos de alterações, damos a todos os participantes da rede tempo suficiente para chegar a um consenso: mesmo que os pedidos de transação ocorram dezenas de vezes por segundo, os blocos no Ethereum são confirmados, aproximadamente, uma vez a cada quinze segundos.
+Ao espaçar as confirmações, damos a todos os participantes da rede tempo suficiente para chegar a um consenso: mesmo que as solicitações de transação ocorram dezenas de vezes por segundo, os blocos só são criados e confirmados na Ethereum uma vez a cada doze segundos.
## Como os blocos funcionam {#how-blocks-work}
Para preservar o histórico de transação, os blocos são estritamente ordenados (cada novo bloco criado contém uma referência ao seu bloco de origem), e as transações dentro dos blocos também são ordenadas estritamente. Exceto em casos raros, a qualquer momento, todos os participantes da rede concordam com o número exato e o histórico de blocos, e estão trabalhando para processar em lote as solicitações atuais de transações para o bloco seguinte.
-Uma vez que um bloco é montado (minerado) por algum minerador na rede, ele é propagado para o resto da rede; todos os nós adicionam este bloco ao final de suas blockchain e a mineração continua. O processo exato de montagem de blocos (mineração) e o processo de compromisso/consenso são, atualmente, especificados pelo protocolo de prova de trabalho do Ethereum.
+Uma vez que um bloco é colocado por algum validador na rede, ele é propagado para o restante da rede; todos os nós adicionam esse bloco ao final de sua cadeia de blocos e um novo validador é selecionado para criar o próximo bloco. O processo exato de montagem de blocos e o processo de compromisso/consenso são atualmente especificados pelo protocolo de “prova de participação” da Ethereum.
-### Uma demonstração visual {#a-visual-demo}
+## Protocolo de prova de participação {#proof-of-work-protocol}
-
+Prova de participação significa o seguinte:
-## Protocolo de prova de trabalho {#proof-of-work-protocol}
+- Os nós de validação precisam colocar 32 ETH em um contrato de depósito como garantia contra mau comportamento. Isso ajuda a proteger a rede porque atividades comprovadamente desonestas fazem com que parte de ou toda essa participação seja destruída.
+- Em cada espaço (espaçados de doze segundos), um validador é selecionado aleatoriamente para ser o proponente do bloco. Eles agrupam transações, as executam e determinam um novo "estado". Eles agrupam essas informações em um bloco e as passam para outros validadores.
+- Outros validadores que ouvem sobre um novo bloco reexecutam as transações para garantir que concordam com a mudança proposta para o estado global. Assumindo que o bloco é válido, eles o adicionam ao seu próprio banco de dados.
+- Se um validador ouvir sobre dois blocos conflitantes para o mesmo espaço, eles usam seu algoritmo de escolha de fork para escolher aquele suportado pelo ETH que teve mais participação.
-Prova de trabalho significa o seguinte:
-
-- Os nós de mineração (Mining nodes) precisam gastar uma quantidade variável, mas substancial de energia, tempo e poder computacional para produzir um "certificado de legitimidade" para um bloco que eles propõem à rede. Isso ajuda a proteger a rede de ataques de spam/DoS, entre outros, já que os certificados são caros de produzir.
-- Outros mineradores que ficarem sabendo sobre um novo bloco, com um certificado de legitimidade válido, devem aceitar o novo bloco como o próximo bloco canônico na blockchain.
-- A quantidade exata de tempo necessário para qualquer minerador produzir este certificado é uma variável aleatória com alta variação. Isso garante que é improvável que dois mineradores produzam validações, simultaneamente, para um próximo bloco proposto; quando um minerador produz e propaga um novo bloco certificado, eles podem ter quase certeza de que o bloco será aceito pela rede como o próximo bloco canônico na blockchain, sem conflito (embora exista um protocolo para lidar com conflitos, assim como, o caso de duas cadeias de blocos certificados serem produzidas quase simultaneamente).
-
-[Mais sobre mineração](/developers/docs/consensus-mechanisms/pow/mining/)
+[Mais sobre prova de participação](/developers/docs/consensus-mechanisms/pos)
## O que há em um bloco? {#block-anatomy}
-- `timestamp`: o horário em que o bloco foi minerado.
-- `blockNumber`: o comprimento da blockchain em blocos.
-- `baseFeePerGas`: a taxa mínima por gás necessária para que uma transação seja incluída no bloco.
-- `difficulty`: o esforço necessário para minerar o bloco.
-- `mixHash`: um identificador exclusivo para esse bloco.
-- `parentHash`: o identificador exclusivo do bloco que veio antes (é assim que os blocos são vinculados em uma cadeia).
-- `transactions`: as transações incluídas no bloco.
-- `stateRoot`: todo o estado do sistema — saldo da conta, armazenamento do contrato, código de contrato e nonces da conta.
-- `nonce`: um hash que, quando combinado com o mixHash, prova que o bloco passou por [prova de trabalho](/developers/docs/consensus-mechanisms/pow/).
+Há muitas informações contidas em um bloco. No nível mais alto, um bloco contém os seguintes campos:
+
+```
+espaço: o espaço ao qual o bloco pertence no
+proposer_index: o ID do validador que propõe o bloco
+parent_root: o hash do bloco anterior
+state_root: o hash raiz do objeto de estado
+body: um objeto que contém vários campos, conforme definido abaixo
+```
+
+O bloco `body` contém vários campos próprios:
+
+```
+randao_reveal: um valor usado para selecionar o próximo proponente do bloco
+eth1_data: informações sobre o contrato de depósito
+graffiti: dados arbitrários usados para marcar blocos
+proposer_slashings: lista de validadores a serem removidos
+attester_slashings: lista de validadores a serem removidos
+attestations: lista de atestações a favor do bloco atual
+deposits: lista de novos depósitos no contrato de depósito
+voluntary_exits: lista de validadores saindo da rede
+sync_aggregate: subconjunto de validadores usados para atender clientes simplificados (light clients)
+execution_payload: transações passadas do cliente de execução
+```
+
+O campo `attestations` contém uma lista de todas as atestações no bloco. As atestações têm seu próprio tipo de dados que contém vários dados. Cada atestação contém:
+
+```
+aggregation_bits: uma lista de quais validadores participaram desta atestação
+data: um contêiner com vários subcampos
+signature: assinatura agregada de todos os validadores de atestados
+```
+
+O campo `data` no `attestation` contém o seguinte:
+
+```
+slot: o espaço ao qual a atestação se refere
+index: índices para atestar validadores
+beacon_block_root: o hash raiz do bloco Beacon contendo esse objeto
+source: o último ponto de verificação justificado
+target: o último bloco de limite da época
+```
+
+A execução das transações no `execution_payload` atualiza o estado global. Todos os clientes reexecutam as transações no `execution_payload` para garantir que o novo estado corresponda ao novo bloco do campo `state_root`. É assim que os clientes podem dizer que um novo bloco é válido e seguro para adicionar à cadeia de blocos deles. O próprio `execution payload` é um objeto com vários campos. Há também um `execution_payload_header` que contém informações importantes de resumo sobre os dados de execução. Essas estruturas de dados são organizadas da seguinte forma:
+
+O `execution_payload_header` contém os seguintes campos:
+
+```
+parent_hash: hash do bloco pai
+fee_recipient: endereço da conta para pagamento de taxas de transação para
+state_root: hash raiz para o estado global depois de aplicar as alterações nesse bloco
+receipts_raiz: hash da tentativa de recibos da transação
+logs_bloom: estrutura de dados contendo logs de eventos
+prev_randao: valor usado na seleção aleatória do validador
+block_number: o número do bloco atual
+gas_limit: gás máximo permitido nesse bloco
+gas_used: a quantidade real de gás usada nesse bloco
+timestamp: o tempo do bloco
+extra_data: dados adicionais arbitrários como bytes brutos
+base_fee_per_gas: o valor da taxa base
+block_hash: hash do bloco de execução
+transaction_root: hash raiz das transações no conteúdo
+```
+
+O próprio `execution_payload` contém o seguinte (observe que isso é idêntico ao cabeçalho, exceto que, em vez do hash raiz das transações, ele inclui a lista real de transações):
+
+```
+parent_hash: hash do bloco pai
+fee_recipient: endereço da conta para pagamento de taxas de transação para
+state_root: hash raiz para o estado global após aplicar as alterações neste bloco
+receipts_raiz: hash da tentativa de recibos da transação
+logs_bloom: estrutura de dados contendo logs de eventos
+prev_randao: valor usado na seleção aleatória do validador
+block_number: o número do bloco atual
+gas_limit: gás máximo permitido neste bloco
+gas_used: a quantidade real de gás usada neste bloco
+timestamp: o tempo do bloco
+extra_data: dados adicionais arbitrários como bytes brutos
+base_fee_per_gas: o valor da taxa base
+block_hash: hash do bloco de execução
+transações: lista de transações a serem executadas
+```
## Tempo de bloco {#block-time}
-Tempo de bloco se refere ao tempo que se leva para minerar um novo bloco. No Ethereum, o tempo médio do bloco está entre 12 a 14 segundos e é avaliado após cada bloco. O tempo esperado de bloco é definido como uma constante no nível do protocolo e é usado para proteger a segurança da rede quando os mineradores adicionam mais poder computacional. O tempo médio do bloco é comparado com o tempo esperado do bloco, e se a média do tempo de bloco for maior, então a dificuldade será diminuída no cabeçalho do bloco. Se o tempo médio de bloco for menor, então a dificuldade no cabeçalho do bloco será aumentada.
+O tempo do bloco refere-se ao tempo de separação dos blocos. No Ethereum, o tempo é dividido em doze unidades de segundos chamadas de "espaços". Em cada espaço, um único validador é selecionado para propor um bloco. Supondo que todos os validadores estejam online e totalmente funcionais, haverá um bloco em cada espaço, o que significa que o tempo de um bloco é de 12s. No entanto, ocasionalmente, os validadores podem estar offline quando chamados para propor um bloco, o que significa que os espaços podem às vezes ficar vazios. Isso é diferente dos sistemas baseados em prova de trabalho, em que os tempos de bloco são probabilísticos e ajustados pela dificuldade de mineração.
## Tamanho do bloco {#block-size}
-Uma nota final importante é que os blocos em si são delimitados em tamanho. Cada bloco tem um tamanho alvo de 15 milhões de gás, mas o tamanho dos blocos vai aumentar ou diminuir de acordo com as demandas da rede, até o limite do bloco de 30 milhões de gás (2 vezes o tamanho do bloco de destino). A quantidade total de gás gasto por todas as transações no bloco deve ser inferior ao limite de gás do bloco. Isso é importante porque garante que os blocos não podem ser, arbitrariamente, grandes. Se os blocos pudessem ser arbitrariamente grandes, os full nodes (nós completos) com menos desempenho iriam gradualmente deixar de ser capazes de acompanhar a rede devido aos requisitos de espaço e velocidade.
+Uma nota final importante é que os blocos em si são delimitados em tamanho. Cada bloco tem um tamanho alvo de 15 milhões de gás, mas o tamanho dos blocos vai aumentar ou diminuir de acordo com as demandas da rede, até o limite do bloco de 30 milhões de gás (2 vezes o tamanho do bloco de destino). A quantidade total de gás gasto por todas as transações no bloco deve ser inferior ao limite de gás do bloco. Isso é importante porque garante que os blocos não podem ser, arbitrariamente, grandes. Se os blocos pudessem ser arbitrariamente grandes, os nós completos (full nodes) com menos desempenho iriam gradualmente deixar de ser capazes de acompanhar a rede devido aos requisitos de espaço e velocidade. Quanto maior o bloco, maior o poder de computação necessário para processá-los a tempo para o próximo espaço. Esta é uma força centralizadora, à qual se resiste limitando os tamanhos dos blocos.
## Leitura adicional {#further-reading}
-_Conhece algum recurso da comunidade que o ajudou? Edite essa página e adicione!_
+_Conhece um recurso da comunidade que ajudou você? Edite essa página e adicione-a!_
## Tópicos relacionados {#related-topics}
-- [Mineração](/developers/docs/consensus-mechanisms/pow/mining/)
- [Transações](/developers/docs/transactions/)
- [Gás](/developers/docs/gas/)
+- [Prova de participação](/developers/docs/consensus-mechanisms/pos)
diff --git a/src/content/translations/pt-br/developers/docs/consensus-mechanisms/index.md b/src/content/translations/pt-br/developers/docs/consensus-mechanisms/index.md
index 7f2841afbbd..fd9a7cf0825 100644
--- a/src/content/translations/pt-br/developers/docs/consensus-mechanisms/index.md
+++ b/src/content/translations/pt-br/developers/docs/consensus-mechanisms/index.md
@@ -2,62 +2,61 @@
title: Mecanismos de consenso
description: Uma explicação dos protocolos de consenso em sistemas distribuídos e o papel que desempenham no Ethereum.
lang: pt-br
-incomplete: true
---
-Quando se trata de blockchains como Ethereum, que são, na essência, bancos de dados distribuídos, os nós da rede devem ser capazes de chegar a um acordo sobre o estado atual do sistema. Isso é obtido por meio de mecanismos de consenso.
-
-Embora os mecanismos de consenso não estejam diretamente relacionados à construção de um dapp, entendê-los irá esclarecer conceitos relevantes para você e para a experiência dos seus usuários, como preços de gás e tempos de transação.
+O termo "mecanismo de consenso" é frequentemente usado de forma coloquial para se referir a protocolos de "prova de participação", "prova de trabalho" ou "prova de autoridade". No entanto, esses são apenas componentes em mecanismos de consenso que protegem contra os ataques Sybil. Mecanismos de consenso são a pilha completa de ideias, protocolos e incentivos que permitem que um conjunto distribuído de nós concorde com o estado da cadeia de blocos.
## Pré-requisitos {#prerequisites}
-Para melhor entender esta página, recomendamos que você leia primeiro a nossa [introdução ao Ethereum](/developers/docs/intro-to-ethereum/).
+Para melhor entender esta página, recomendamos que você leia primeiro a nossa [Introdução ao Ethereum](/developers/docs/intro-to-ethereum/).
## O que é consenso? {#what-is-consensus}
-Por consenso, queremos dizer que se chegou a um acordo geral. Considere um grupo de pessoas indo ao cinema. Se não houver desacordo quanto a uma proposta de escolha do filme, então haverá consenso. No caso extremo, o grupo eventualmente se separará.
+Por consenso, queremos dizer que se chegou a um acordo geral. Considere um grupo de pessoas indo ao cinema. Se não houver desacordo sobre uma proposta de escolha de filme, então um consenso é alcançado. Se houver desacordo, o grupo deve ter meios para decidir qual filme assistir. Em casos extremos, o grupo eventualmente se separará.
-Em relação à blockchain, chegar a consenso significa que pelo menos 51% dos nós da rede concordam no próximo estado global da rede.
+Em relação à cadeia de blocos Ethereum, o processo é formalizado e chegar a um consenso significa que pelo menos 66% dos nós da rede concordam com o estado global da rede.
## O que é um mecanismo de consenso? {#what-is-a-consensus-mechanism}
-Mecanismos de consenso (também conhecidos como protocolos de consenso ou algoritmos de consenso) permitem que sistemas distribuídos (redes de computadores) trabalhem juntos e permaneçam seguros.
+O termo mecanismo de consenso refere-se a toda a pilha de protocolos, incentivos e ideias que permitem que uma rede de nós concorde com o estado de uma cadeia de blocos.
+
+O Ethereum utiliza um mecanismo de consenso baseado em provas de participação que deriva sua segurança criptoeconômica de um conjunto de recompensas e penalidades aplicadas ao capital bloqueado pelos participantes. Essa estrutura de incentivos encoraja os participantes individuais a operar validadores honestos, pune aqueles que não o fazem e cria um custo extremamente alto para atacar a rede.
-Por décadas, esses mecanismos foram usados para estabelecer consenso entre nós de banco de dados, servidores de aplicativos e outras infraestruturas corporativas. Nos últimos anos, novos protocolos de consenso foram inventados para permitir que sistemas criptoeconômicos, como o Ethereum, concordem com o estado da rede.
+Em seguida, existe um protocolo que rege como validadores honestos são selecionados para propor ou validar blocos, processar transações e votar por sua visão do topo da cadeia. Nas raras situações em que vários blocos estão na mesma posição perto do topo da cadeia, existe um mecanismo de escolha da bifurcação que seleciona os blocos que compõem a cadeia "mais pesada", medido pelo número de validadores que votaram nos blocos ponderados pelo seu equilíbrio de ether colocado.
-Um mecanismo de consenso em um sistema de criptomoedas também ajuda a prevenir certos tipos de ataques econômicos. Em teoria, um invasor pode comprometer o consenso, controlando 51% da rede. Os mecanismos de consenso são projetados para tornar este "ataque de 51%" inviável. Diferentes mecanismos são projetados para resolver esse problema de segurança de diferentes formas.
+Alguns conceitos são importantes para o consenso que não estão explicitamente definidos no código, como a segurança adicional oferecida pela potencial coordenação social fora de banda como última linha de defesa contra ataques na rede.
-
+Esses componentes juntos formam o mecanismo de consenso.
## Tipos de mecanismos de consenso {#types-of-consensus-mechanisms}
-### Prova de trabalho {#proof-of-work}
+### Baseado em prova de trabalho {#proof-of-work}
-Ethereum, como Bitcoin, atualmente usa um protocolo de consenso denominado ** prova de trabalho (PoW) **.
+Como o Bitcoin, o Ethereum já usou um protocolo de consenso baseado em **prova de trabalho (PoW)**.
#### Criação de blocos {#pow-block-creation}
-Prova de trabalho é feita por [mineradores](/developers/docs/consensus-mechanisms/pow/mining/), que competem para criar novos blocos cheios de transações processadas. O ganhador compartilha o novo bloco com o restante da rede e ganha alguns ETH recentemente nomeados. A corrida é vencida pelo computador que puder resolver de forma mais rápida um quebra-cabeça matemático, e isso produz a ligação criptografada entre o bloco atual e o bloco que venceu anteriormente. Resolver o quebra-cabeça é o trabalho na "prova de trabalho".
+Validadores criam blocos. Um validador é selecionado aleatoriamente em cada espaço para ser o proponente do bloco. Seu cliente de consenso solicita um pacote de transações como uma "carga de execução" de seu cliente de execução emparelhado. Eles envolvem isso em dados de consenso para formar um bloco, o qual eles enviam para outros nós na rede Ethereum. Essa produção de blocos é recompensada em ETH. Em casos raros, quando existem múltiplos blocos possíveis para um único espaço, ou os nós ouvem sobre blocos em tempos diferentes, o algoritmo de escolha da bufurcação escolhe o bloco que forma a cadeia com o maior peso de atestações (em que o peso é o número de validadores que atestam o escalado pelo seu saldo ETH).
#### Segurança {#pow-security}
-A rede é mantida segura pelo fato de que você precisaria de 51% da capacidade dos computadores da rede para defraudar a corrente. Isso exigiria investimentos tão grandes em equipamentos e energia que bastante provável que você teria mais prejuízos do que lucros.
+A rede é mantida segura pelo fato de que você precisaria de 51% da capacidade dos computadores da rede para defraudar a cadeia. Isso exigiria investimentos tão grandes em equipamentos e energia que é bastante provável que você teria mais prejuízos do que lucros.
-Mais sobre [ prova de trabalho (PoW)](/developers/docs/consensus-mechanisms/pow/)
+Mais sobre [prova de trabalho](/developers/docs/consensus-mechanisms/pow/)
-### Prova de participação {#proof-of-stake}
+### Baseado em prova de participação {#proof-of-stake}
-Ethereum, como Bitcoin, atualmente usa um protocolo de consenso denominado ** prova de trabalho (PoW) **.
+O Ethereum agora usa um protocolo de consenso baseado em **prova de participação (PoS)**.
#### Criação de blocos {#pos-block-creation}
-A prova de participação (PoS) é feita por validadores que tiverem comprometido ETH para participar do sistema. Um validador é escolhido aleatoriamente para criar novos blocos, compartilhá-los com a rede e ganhar recompensas. Em vez de precisar fazer um intenso trabalho computacional, você simplesmente precisa ter apostado seus ETH na rede. É isto que incentiva o comportamento saudável da rede.
+A prova de participação é feita por validadores que tiverem comprometido o ETH para participar do sistema. Um validador é escolhido aleatoriamente para criar novos blocos, compartilhá-los com a rede e ganhar recompensas. Em vez de precisar fazer um intenso trabalho computacional, você só precisa ter apostado seus ETH na rede. É isso que incentiva o comportamento saudável da rede.
#### Segurança {#pos-security}
-O sistema de prova de participação é mantido seguro pelo falo de que seriam necessários 51% do total de ETH acumulados (staked) para defraudar a corrente. Além disso, seus ETH apostados poderiam se ver comprometidos por comportamentos maliciosos.
+Um sistema de prova de participação é cripto-economicamente seguro porque um invasor que tentar assumir o controle da cadeia deverá destruir uma enorme quantidade de ETH. Um sistema de recompensas incentiva os participantes individuais a se comportarem honestamente, e as penalidades desincentivam os participantes de agirem modo malicioso.
-Mais sobre [ prova de participação (PoS)](/developers/docs/consensus-mechanisms/pos/)
+Mais sobre [prova de participação](/developers/docs/consensus-mechanisms/pos/)
### Um guia visual {#types-of-consensus-video}
@@ -67,15 +66,13 @@ Saiba mais sobre os diferentes tipos de mecanismos de consenso utilizados no Eth
### Resistência a ataques Sybil e seleção de cadeia {#sybil-chain}
-Agora, tecnicamente falando, a prova de trabalho e a prova de participação não são protocolos de consenso por si só, mas são frequentemente referidos como tal para simplificar o entendimento. Na verdade, são mecanismos de resistência a ataques Sybil e bloqueiam os seletores de autores; são uma maneira de decidir quem é o autor do bloco mais recente. É este mecanismo de resistência a ataques Sybil combinado com uma regra de seleção de cadeia que constitui um verdadeiro mecanismo de consenso.
-
-**A resistência a ataques Sybil** mede como um protocolo varia contra um [ataque Sybil](https://wikipedia.org/wiki/Sybil_attack). Ataques Sybil são quando um usuário ou grupo finge ser muitos usuários. A resistência a esse tipo de ataque é essencial para uma blockchain descentralizada e permite que os mineradores e validadores sejam recompensados igualmente com base nos recursos colocados. A prova de trabalho e a prova de participação protegem contra isso fazendo os usuários gastarem muita energia ou colocarem muitas garantias. Estas protecções são um elemento econômico dissuasor dos ataques Sybil.
+Prova de trabalho e prova de participação por si só não são protocolos de consenso, mas são frequentemente referidos como tal por simplicidade. Na verdade, são mecanismos de resistência a ataques Sybil e bloqueiam os seletores de autores; eles são uma maneira de decidir quem é o autor do bloco mais recente. Outro componente importante é o algoritmo de seleção de cadeia (também conhecido como escolha da bifurcação), o qual permite que os nós escolham um único bloco correto no início da cadeia em cenários em que existem vários blocos na mesma posição.
-Uma regra de seleção de cadeia de \*\*\*\* é usada para decidir qual é a cadeia "correta". Ethereum e Bitcoin usam atualmente a regra "cadeia mais longa", o que quer dizer que qualquer que seja a blockchain mais longa vai ser aquela a qual o resto dos nós aceitem como válida e trabalhem com ela. Para as cadeias de prova de trabalho, a cadeia mais longa é determinada pela dificuldade cumulativa total da prova de trabalho.
+**A resistência a ataques Sybil** mede como um protocolo varia contra um [ataque Sybil](https://wikipedia.org/wiki/Sybil_attack). Ataques Sybil são quando um usuário ou grupo finge ser muitos usuários. A resistência a esse tipo de ataque é essencial para uma cadeia de blocos descentralizada e permite que os mineradores e validadores sejam recompensados igualmente com base nos recursos colocados. A prova de trabalho e a prova de participação protegem contra isso fazendo os usuários gastarem muita energia ou colocarem muitas garantias. Essas proteções são um elemento econômico de dissuasão dos ataques Sybil.
-A combinação da prova de trabalho e da regra da cadeia mais longa é conhecida como "Consenso de Nakamoto"
+Uma **regra de seleção de cadeia** é usada para decidir qual é a cadeia "correta". O Bitcoin usa a regra da "cadeia mais longa", o que significa que qualquer cadeia de blocos mais longa será aquela que o resto dos nós aceitam como válida e com a qual trabalha. Para as cadeias de prova de trabalho, a cadeia mais longa é determinada pela dificuldade cumulativa total da prova de trabalho. O Ethereum costumava usar a regra da cadeia mais longa também; no entanto, agora que o Ethereum é executado em prova de participação, ele adotou um algoritmo atualizado de escolha da bifurcação que mede o "peso" da cadeia. O peso é a soma acumulada dos votos do validador, ponderada pelos saldos de ether envolvidos do validador.
-A [Beacon Chain](/upgrades/beacon-chain/) usa um mecanismo de consenso chamado [Casper the Friendly Finality Gadget](https://arxiv.org/abs/1710.09437), baseado na prova de participação.
+O Ethereum usa um mecanismo de consenso conhecido como [Gasper](/developers/docs/consensus-mechanisms/pos/gasper/) que combina a [prova de participação do Casper FFG](https://arxiv.org/abs/1710.09437) com a [regra de escolha de bifurcação GHOST](https://arxiv.org/abs/2003.03052).
## Leitura adicional {#further-reading}
@@ -83,8 +80,9 @@ A [Beacon Chain](/upgrades/beacon-chain/) usa um mecanismo de consenso chamado [
- [O que é Consenso de Nakamoto? Guia completo do principiante](https://blockonomi.com/nakamoto-consensus/)
- [Como o Casper funciona?](https://medium.com/unitychain/intro-to-casper-ffg-9ed944d98b2d)
- [Sobre a segurança e o desempenho das blockchains de prova de trabalho](https://eprint.iacr.org/2016/555.pdf)
+- [Falha bizantina](https://en.wikipedia.org/wiki/Byzantine_fault)
-_Conhece algum recurso da comunidade que o ajudou? Edite essa página e adicione!_
+_Conhece algum recurso da comunidade que o ajudou? Edite essa página e adicione-o!_
## Tópicos relacionados {#related-topics}
diff --git a/src/content/translations/pt-br/developers/docs/consensus-mechanisms/pos/index.md b/src/content/translations/pt-br/developers/docs/consensus-mechanisms/pos/index.md
index b6ce439910d..75b3581f2aa 100644
--- a/src/content/translations/pt-br/developers/docs/consensus-mechanisms/pos/index.md
+++ b/src/content/translations/pt-br/developers/docs/consensus-mechanisms/pos/index.md
@@ -2,10 +2,9 @@
title: Prova de participação (PoS)
description: Explicação do protocolo de consenso "Prova de participação" e seu papel no Ethereum.
lang: pt-br
-incomplete: true
---
-Ethereum está mudando do mecanismo de consenso de prova de trabalho (PoW) [prova de participação (PoP)](/developers/docs/consensus-mechanisms/pow/). Este sempre foi o plano, pois tal mudança forma parte da estratégia essencial da comunidade para expandir o Ethereum via [implementações](/upgrades/). No entanto, acertar na implementação da prova de participação é um grande desafio técnico e não é tão simples quanto usar PdT para atingir consenso na rede.
+A prova de participação (PoS) é a base do [mecanismo de consenso](/developers/docs/consensus-mechanisms/) do Ethereum. O Ethereum ativou seu mecanismo de prova de participação em 2022 porque é mais seguro, consome menos energia e é melhor para implementar novas soluções de escalabilidade em comparação com a arquitetura de [prova de trabalho](/developers/docs/consensus-mechanisms/pow) anterior.
## Pré-requisitos {#prerequisites}
@@ -13,83 +12,65 @@ Para entender melhor esta página, recomendamos que você primeiro leia [mecanis
## O que é prova de participação (PoS)? {#what-is-pos}
-Prova de participação é um tipo de [mecanismo de consenso](/developers/docs/consensus-mechanisms/) usado pelas redes de blockchain para alcançar o consenso distribuído.
+A prova de participação está subjacente a certos [mecanismos de consenso](/developers/docs/consensus-mechanisms/) usados por cadeias de blocos para obter consenso distribuído. Na prova de trabalho, os mineradores provam que têm capital em risco gastando energia. O Ethereum usa prova de participação, em que os validadores participam explicitamente do capital na forma de ETH em um contrato inteligente no Ethereum. Esse ETH colocado atua como garantia, que pode ser destruída se o validador se comportar de forma desonesta ou preguiçosa. O validador é então responsável por verificar se os novos blocos propagados pela rede são válidos e se, ocasionalmente, criam e propagam novos blocos por conta própria.
-Ela requer que os usuários façam staking de seus ETH para se tornarem um validador na rede. Os validadores são responsáveis pela mesma coisa que os mineradores na [prova de trabalho](/developers/docs/consensus-mechanisms/pow/): ordenar as transações e criar novos blocos para que todos os nós possam concordar com o estado da rede.
+A prova de participação vem com uma série de melhorias no sistema de prova de trabalho agora obsoleto:
-A prova de participação vem com várias melhorias referente ao sistema de prova de trabalho:
+- melhor eficiência energética – não há necessidade de usar muita energia em cálculos de prova de trabalho
+- barreiras de entrada mais baixas, requisitos de hardware reduzidos — não há necessidade de hardware de elite para ter a possibilidade de criar novos blocos
+- risco de centralização reduzido — a prova de participação deve levar a mais nós protegendo a rede
+- devido à baixa necessidade de energia, é necessário emitir menos ETH para incentivar a participação
+- penalidades econômicas por mau comportamento tornam os ataques de estilo 51% exponencialmente mais caros para um invasor comparado à prova de trabalho
+- a comunidade pode recorrer à recuperação social de uma cadeia honesta se um ataque de 51% tiver que superar as defesas criptoeconômicas.
-- melhor eficiência energética: você não precisa usar muita energia minerando blocos
-- menores barreiras à entrada, redução dos requisitos de hardware — você não precisa de um hardware potente para ter a chance de criar novos blocos
-- maior imunidade à centralização: a prova de participação deve gerar mais nós na rede
-- suporte mais forte para as [cadeias de fragmentos](/upgrades/sharding/) – uma atualização chave para dimensionamento da rede Ethereum
+## Validadores {#validators}
-## Prova de participação, participação (staking) e validadores {#pos-staking-validators}
+Para participar como validador, um usuário deve depositar 32 ETH no contrato de depósito e executar três softwares separados: um cliente de execução, um cliente de consenso e um validador. Ao depositar seu ETH, o usuário entra em uma fila de ativação que limita a taxa de novos validadores que entram na rede. Uma vez ativados, os validadores recebem novos blocos de pares na rede Ethereum. As transações entregues no bloco são reexecutadas e a assinatura do bloco é verificada para garantir que o bloco seja válido. O validador então envia um voto (chamado de atestação) a favor desse bloco para toda a rede.
-A prova de participação é o mecanismo fundamental que ativa os validadores após receber uma quantidade suficiente de stake. Para o Ethereum, os usuários precisarão fazer staking de 32 ETH para se tornar um validador. Os validadores são escolhidos aleatoriamente para criar blocos e são responsáveis por verificar e confirmar blocos que eles não criaram. A participação (stake) de um usuário também é utilizada como uma forma de incentivar o bom comportamento do validador. Por exemplo, um usuário pode perder uma porção de sua participação por coisas como ficar offline (falhando na validação), ou toda a sua participação por conspiração deliberada.
+Enquanto na prova de trabalho, o tempo dos blocos é determinado pela dificuldade de mineração, na prova de participação o tempo é fixo. O tempo na prova de participação do Ethereum é dividido em espaços (12 segundos) e épocas (32 espaços). Um validador é selecionado aleatoriamente para ser um proponente de bloco em cada espaço. Esse validador é responsável por criar um novo bloco e enviá-lo para outros nós da rede. Também em cada slot, um comitê de validadores é escolhido aleatoriamente, cujos votos são utilizados para determinar a validade do bloco proposto.
-## Como funciona a prova de participação do Ethereum? {#how-does-pos-work}
+## Finalidade {#finality}
-Ao contrário da prova de trabalho (PoW), os validadores não precisam usar grandes quantidades de poder computacional, porque eles são selecionados aleatoriamente e não competem entre si. Eles não precisam minerar blocos, só precisam criar blocos quando escolhidos e validar blocos propostos quando não são. Esta validação é conhecida como atestante ou certificadora. Você pode pensar no atestante como aquele que diz "este bloco parece estar bem". Os validadores recebem recompensas por propor novos blocos e por atestar os que viram.
+Uma transação tem "finalidade" em redes distribuídas quando é parte de um bloco que não pode mudar sem que uma quantidade significativa de ETH seja queimada. Na prova de participação do Ethereum, isto é gerenciado usando blocos de pontos de verificação. O primeiro bloco em cada época é um ponto de verificação. Os validadores votam nos pares de pontos de verificação que eles consideram válidos. Se um par de pontos de verificação atrair votos que representem pelo menos dois terços do total de ETH envolvido, os checkpoints serão atualizados. O mais recente dos dois (alvo) torna-se "justificado". O primeiro dos dois já é justificado porque era o "alvo" na época anterior. Agora ele é atualizado para "finalizado". Para reverter um bloco finalizado, um invasor se comprometeria a perder pelo menos um terço do fornecimento total de ETH envolvido. A razão exata para isso é explicada nesta [postagem do blog da Ethereum Foundation](https://blog.ethereum.org/2016/05/09/on-settlement-finality/). Uma vez que a finalidade exige a maioria de dois terços, um invasor poderia impedir que a rede chegue à finalidade votando com um terço da participação total. Existe um mecanismo de defesa contra isso: o [vazamento de inatividade](https://arxiv.org/pdf/2003.03052.pdf). Isso é ativado sempre que a cadeia falha em finalizar por mais de quatro épocas. O vazamento de inatividade afasta o ETH envolvido dos validadores que votam contra a maioria, permitindo que a maioria recupere uma maioria de dois terços e finalize a cadeia.
-Se você atesta/certifica blocos maliciosos, perde sua participação (stake).
+## Segurança criptoeconômica {#crypto-economic-security}
-### A Beacon Chain {#the-beacon-chain}
+A execução de um validador é um compromisso. É esperado que o validador mantenha hardware e conectividade suficientes para participar da validação e proposta de bloco. Em troca, o validador é pago em ETH (seu saldo colocado aumenta). Por outro lado, participar como validador também abre novos caminhos para os usuários atacarem a rede para ganho pessoal ou sabotagem. Para evitar isso, os validadores perdem as recompensas de ETH se não participarem quando chamados, e sua participação existente pode ser destruída ao se comportarem desonestamente. Existem dois comportamentos primários que podem ser considerados desonestos: propor vários blocos em um único espaço (equívoco) e enviar atestações contraditórias. A quantidade de ETH reduzida depende de quantos validadores também estão sendo removidos ao mesmo tempo. Isso é conhecido como ["penalidade de correlação"](https://arxiv.org/pdf/2003.03052.pdf) e pode ser menor (em torno de ~1% de participação para um único validador reduzido por si só) ou pode resultar na destruição de 100% da participação do validador (evento de remoção em massa). Ela é imposta na metade de um período de saída forçada que começa com uma penalidade imediata (até 0,5 ETH) no dia 1, a penalidade de correlação no dia 18, e finalmente, a expulsão da rede no dia 36. Os validadores recebem todos os dias pequenas penalidades de atestações porque estão presentes na rede, mas não enviam votos. Tudo isso significa que um ataque coordenado seria muito caro para o invasor.
-Quando o Ethereum substituir a prova de trabalho para a prova de participação, existirá uma complexidade adicional devido às [cadeias de fragmentos](/upgrades/sharding/). Estas são blockchains separadas que vão precisar de validadores para processar transações e criar novos blocos. O plano é ter 64 cadeias de fragmentos e todas elas precisam de uma compreensão compartilhada do estado da rede. Como resultado, uma coordenação extra é necessária, e será feita pela chamada cadeia de referência ou [Beacon Chain](/upgrades/beacon-chain/).
+## Escolha da bifurcação {#fork-choice}
-A Beacon Chain recebe informações de estado de fragmentos (shards) e as disponibiliza para outros fragmentos para que a rede possa permanecer em sincronia. A Beacon Chain também gerenciará os validadores, do registro de depósito de suas participações (stakes) até a emissão de suas recompensas e penalidades.
+Quando a rede funciona de maneira otimizada e honesta, há apenas um novo bloco no início da cadeia, e todos os validadores o atestam. No entanto, é possível que os validadores tenham visões diferentes do cabeçalho da cadeia devido à latência de rede ou porque um proponente de bloco se equivocou. Portanto, os clientes de consenso exigem um algoritmo para decidir qual deles favorecer. O algoritmo usado na prova de participação do Ethereum se chama [LMD-GHOST](https://arxiv.org/pdf/2003.03052.pdf) e funciona identificando a bifurcação que tem o maior peso de atestações em seu histórico.
-Eis como esse processo funciona.
-
-### Como a validação funciona {#how-does-validation-work}
-
-Quando enviar uma transação em um fragmento, um validador será responsável por adicionar sua transação a um bloco. Os validadores são escolhidos algoritmicamente pela Beacon Chain para propor novos blocos.
-
-#### Certificação {#attestation}
-
-Se um validador não for escolhido para propor um novo bloco de fragmentos, ele terá que atestar a proposta de outro validador e confirmar que tudo parece estar como deveria. É o certificado (attestation) que é registrado na Beacon Chain e não a transação em si.
-
-Pelo menos 128 validadores são obrigados a atestar cada bloco de fragmentos – isto é conhecido como "comitê".
-
-O comitê tem um prazo no qual deve propor e validar o bloco de fragmentos. Isto é conhecido como "slot". Apenas um bloco válido é criado por slot, e há 32 slots em um "epoch". Depois de cada "epoch", o comitê é dissolvido e reformulado com participantes diferentes e aleatórios. Isso ajuda a manter os fragmentos a salvo dos comitês de maus agentes.
-
-#### Links cruzados {#rewards-and-penalties}
-
-Quando uma nova proposta de bloco de fragmentos tiver "certificações" suficientes, um "link cruzado" será criado para confirmar a inclusão do bloco e sua transação na Beacon Chain.
-
-Quando houver um "link cruzado", o validador que sugeriu o bloco receberá sua recompensa.
-
-#### Finalidade {#finality}
+## Prova de participação e segurança {#pos-and-security}
-Em redes distribuídas, uma transação tem "finalidade" quando é parte de um bloco que não pode mudar.
+A ameaça de um [ataque de 51%](https://www.investopedia.com/terms/1/51-attack.asp) ainda existe na prova de participação, como na prova de trabalho, mas ainda é mais arriscada para os invasores. Um invasor precisaria de 51% do ETH colocado. Eles poderiam então usar suas próprias atestações para garantir que sua bifurcação preferida fosse aquela com o maior número de atestações acumuladas. O "peso" das atestações acumuladas é o que os clientes de consenso usam para determinar a cadeia correta, de modo que esse invasor seria capaz de tornar sua bifurcação a cadeia canônica. No entanto, um ponto forte da prova de participação sobre a prova de trabalho é que a comunidade tem flexibilidade para montar um contra-ataque. Por exemplo, os validadores honestos podem decidir continuar construindo a cadeia minoritária e ignorar a bifurcação do invasor enquanto encorajam aplicativos, exchanges e pools a fazerem o mesmo. Eles também podem decidir remover forçadamente o invasor da rede e destruir o ETH colocado. Estas são defesas econômicas fortes contra um ataque de 51%.
-Para fazer isso na prova de participação, Casper, um protocolo de finalidade, leva os validadores a concordarem com o estado de um bloco em certos pontos de verificação. O bloco será finalizado sempre e quando 2/3 dos validadores concordem. Os validadores perderão toda sua participação (stake) se tentarem reverter isso mais tarde através de um ataque de 51%.
+51% dos ataques são apenas um tipo de atividade maliciosa. Os maus atores podem tentar ataques de longo alcance (embora a finalidade do dispositivo neutralize esse vetor de ataque), "reorganizações" de curto alcance (embora os prazos de reforço e atestações do proponente atenuem isso), ataques de devolução e de saldo (também atenuados pelo reforço do proponente, e mesmo assim, esses ataques só foram demonstrados sob condições de rede idealizadas) ou ataques de avalanche (neutralizados pela regra dos algoritmos de escolha de fork, considerarando apenas, a mensagem mais recente).
-Como disse Vlad Zamfir, isto é como um minerador participando de um ataque de 51%, fazendo com que seu equipamento de mineração colapse imediatamente.
+No geral, a prova de participação, conforme implementada no Ethereum, demonstrou ser economicamente mais segura do que a prova de participação.
-## Prova de participação e segurança {#pos-and-security}
-
-A ameaça de um ataque de [51%](https://www.investopedia.com/terms/1/51-attack.asp) ainda existe na prova de participação, mas é ainda mais arriscado para os atacantes. Para fazer isso, você precisaria controlar 51% dos ETH envolvidos na participação. Não só isso é muito dinheiro, como provavelmente faria com que o valor dos ETHs caísse. Não há muito incentivo para destruir o valor de uma moeda na qual você tem uma participação majoritária. Existem incentivos mais fortes para manter a rede segura e íntegra.
+## Prós e contras {#pros-and-cons}
-Cortes de stake, ejeções e outras penalidades coordenadas pela Beacon Chain existirão para prevenir outros atos de mau comportamento. Os validadores também serão responsáveis por denunciar esses incidentes.
+| Prós | Contras |
+| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
+| O staking facilita a participação dos indivíduos na segurança da rede, promovendo a descentralização. o nó validador pode ser executado em um laptop normal. Os pools de participação permitem que os usuários participem sem ter 32 ETH. | A prova de participação é mais recente e menos testada na prática em comparação com a prova de trabalho |
+| A participação é mais descentralizada, As economias de escala não se aplicam da mesma forma que para a mineração de PoW. | A prova de participação é mais complexa de implementar do que a prova de trabalho |
+| A prova de participação oferece maior segurança criptoeconômica do que a prova de trabalho | Os usuários precisam executar três softwares para participar da prova de participação do Ethereum. |
+| É necessário emitir uma quantidade menor de novos ETH para incentivar os participantes da rede | |
-## Prós e contras {#pros-and-cons}
+## Você é o tipo de pessoa que aprende mais com recursos visuais? {#visual-learner}
-| Prós | Contras |
-| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
-| A participação torna mais fácil para você executar um nó. Não requer enormes investimentos em hardware ou energia, e se você não tem ETH suficiente para participar, pode se unir a um pool de participação. | A prova de participação ainda está dando seus primeiros passos, e foi menos testada na prática do que a prova de trabalho |
-| A participação é mais descentralizada, pois permite maior participação, e uma quantidade maior de nós não significa um aumento do retorno em %, como na mineração. | |
-| A participação permite uma fragmentação segura. As cadeias de fragmentos permitem que o Ethereum crie vários blocos ao mesmo tempo, aumentando a taxa de transação. A fragmentação da rede em um sistema de prova de trabalho simplesmente reduziria o poder necessário para comprometer uma parte da rede. | |
+
## Leitura adicional {#further-reading}
- [Perguntas frequentes sobre prova de participação](https://vitalik.ca/general/2017/12/31/pos_faq.html) _Vitalik Buterin_
- [O que é prova de participação](https://consensys.net/blog/blockchain-explained/what-is-proof-of-stake/) _ConsenSys_
- [O que prova de participação é por que é importante](https://bitcoinmagazine.com/culture/what-proof-of-stake-is-and-why-it-matters-1377531463) _Vitalik Buterin_
-- [A explicação sobre Beacon Chain Ethereum 2.0 que você precisa ler primeiro](https://ethos.dev/beacon-chain/) _Ethos.dev_
+- [A explicação sobre Beacon Chain Ethereum 2.0 que você precisa ler primeiro](https://ethos.dev/beacon-chain) _Ethos.dev_
- [Por que a prova de participação (nov. de 2020)](https://vitalik.ca/general/2020/11/06/pos2020.html) _Vitalik Buterin_
- [Prova da participação: como aprendi a amar a pouca subjetividade](https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity/) _Vitalik Buterin_
+- [Ataque e defesa da prova de participação do Ethereum](https://mirror.xyz/jmcook.eth/YqHargbVWVNRQqQpVpzrqEQ8IqwNUJDIpwRP7SS5FXs)
- [A filosofia por trás do design da prova de participação](https://medium.com/@VitalikButerin/a-proof-of-stake-design-philosophy-506585978d51) _Vitalik Buterin_
## Tópicos relacionados {#related-topics}
diff --git a/src/content/translations/pt-br/developers/docs/consensus-mechanisms/pow/index.md b/src/content/translations/pt-br/developers/docs/consensus-mechanisms/pow/index.md
index 9f8ed815d67..52ac0066739 100644
--- a/src/content/translations/pt-br/developers/docs/consensus-mechanisms/pow/index.md
+++ b/src/content/translations/pt-br/developers/docs/consensus-mechanisms/pow/index.md
@@ -2,12 +2,13 @@
title: Prova de trabalho (PoW)
description: Uma explicação do protocolo de consenso de prova de trabalho e seu papel no Ethereum.
lang: pt-br
-incomplete: true
---
-Ethereum, assim como o Bitcoin, usa atualmente um protocolo de consenso chamado **[prova de trabalho (PoW)](https://wikipedia.org/wiki/Proof_of_work)**. Isto permite que a rede Ethereum verifique o estado de todas as informações gravadas no blockchain Ethereum, e previne certos tipos de ataques econômicos.
+A rede Ethereum começou usando um mecanismo de consenso que envolvia **[Prova de trabalho (PoW)](/developers/docs/consensus-mechanisms/pow)**. Isso permitiu que os nós da rede Ethereum concordassem com o estado de todas as informações registradas na cadeia de blocos Ethereum e impediu certos tipos de ataques econômicos. No entanto, o Ethereum desativou a prova de trabalho em 2022 e começou a usar a [prova de participação](/developers/docs/consensus-mechanisms/pos).
-Ao longo do próximo ano, a prova de trabalho será gradualmente eliminada em favor da **[prova de participação (PoS)](/developers/docs/consensus-mechanisms/pos)**. A transição para a prova de participação também irá eliminar gradualmente a mineração do Ethereum. [Mais sobre a fusão.](/upgrades/merge/)
+
+ A prova de trabalho agora está obsoleta. O Ethereum não usa mais a prova de trabalho como parte de seu mecanismo de consenso. Em vez disso, ele usa a prova de participação. Leia mais sobre prova de participação e participação.
+
## Pré-requisitos {#prerequisites}
@@ -15,63 +16,59 @@ Para entender melhor esta página, recomendamos ler primeiro sobre [transações
## O que é prova de trabalho (PoW)? {#what-is-pow}
-Prova de trabalho (PoW) é o mecanismo que permite que a rede descentralizada Ethereum chegue ao consenso, ou aceite registros, como saldos de conta e a ordem das transações. Isso impede os usuários de "gastar duas vezes" suas moedas e garante que a cadeia Ethereum seja incrivelmente difícil de atacar ou manipular.
+O consenso de Nakamoto, que utiliza prova de trabalho, é o mecanismo que uma vez permitiu que a rede descentralizada Ethereum chegasse a um consenso (ou seja, todos os nós concordam) em coisas como saldos de contas e a ordem das transações. Isso impediu os usuários de "gastar duas vezes" suas moedas e garantiu que a cadeia Ethereum se tornasse tremendamente difícil de atacar ou manipular. Essas propriedades de segurança agora vêm da prova de participação usando o mecanismo de consenso conhecido como [Gasper](/developers/docs/consensus-mechanisms/pos/gasper/).
## Prova de trabalho e mineração {#pow-and-mining}
-Prova de trabalho é o algoritmo subjacente que define a dificuldade e as regras para o trabalho que os mineradores fazem. Minerar é o "trabalho" em si. É o ato de adicionar blocos válidos à cadeia. Isso é importante porque o tamanho da cadeia ajuda a identificar a cadeia Ethereum válida e a entender o estado atual do Ethereum. Quanto mais "trabalho" feito, mais longa a cadeia, e maior o número do bloco, e mais segura a rede pode ser do estado atual das coisas.
+A prova de trabalho é o algoritmo subjacente que define a dificuldade e as regras para os mineiros trabalharem em cadeias de blocos de prova de trabalho. Minerar é o "trabalho" em si. É o ato de adicionar blocos válidos à cadeia. Isso é importante porque o comprimento da cadeia ajuda a rede a seguir a bifurcação correta da blockchain. Quanto mais "trabalho" feito, mais longa é a cadeia, e quanto maior o número do bloco, mais a rede pode ter certeza do estado atual das coisas.
[Mais sobre mineração](/developers/docs/consensus-mechanisms/pow/mining/)
-## Como funciona a prova de trabalho do Ethereum? {#how-it-works}
+## Como funcionou a prova de trabalho do Ethereum? {#how-it-works}
-As transações Ethereum são processadas em blocos. Cada bloco tem:
+As transações Ethereum são processadas em blocos. Na agora obsoleta prova de trabalho do Ethereum, cada bloco continha:
- dificuldade de bloco - por exemplo: 3,324,092,183,262,715
- mixHash – por exemplo: `0x44bca881b07a6a09f83b130798072441705d9a665c5ac8bdf2f39a3cdf3bee29`
- nonce – por exemplo: `0xd3ee432b4fb3d26b`
-Estes dados do bloco estão diretamente relacionados à prova de trabalho.
+Esses dados de bloco estavam diretamente relacionados à prova de trabalho.
### O trabalho em prova-de-trabalho {#the-work}
-O protocolo de prova de trabalho, conhecido como Ethash, exige que os mineradores se esforcem muito usando um método de tentativa e erro para encontrar o nonce de um bloco. Apenas blocos com um nonce válido podem ser adicionados à cadeia.
+O protocolo de prova de trabalho, Ethash, exigia que os mineradores passassem por uma intensa corrida de tentativa e erro para encontrar o nonce para um bloco. Apenas blocos com um nonce válido podem ser adicionados à cadeia.
-Quando estiver no processo de criar um bloco, um minerador colocará repetidamente um conjunto de dados, que você só pode conseguir baixando e executando a cadeia completa (como faz um minerador), através de uma função matemática. O conjunto de dados é usado para gerar um mixHash que esteja sob o nonce de destino, conforme ditado pela dificuldade do bloco. A melhor maneira de fazer isso é através de tentativa e erro.
+Ao correr para criar um bloco, um minerador repetidamente coloca um conjunto de dados, que só poderia ser obtido baixando e executando a cadeia completa (como um minerador faz), por meio de uma função matemática. O conjunto de dados foi usado para gerar um mixHash abaixo de um alvo que é ditado pela dificuldade do bloco. A melhor maneira de fazer isso é através de tentativa e erro.
-A dificuldade determina o alvo para o hash. Quanto menor o alvo, menor será o conjunto de hashes válidos. Uma vez gerado, isso é incrivelmente fácil para outros mineradores e clientes verificarem. Mesmo que uma transação mudasse, o hash seria completamente diferente, sinalizando fraude.
+A dificuldade determinou o alvo para o hash. Quanto menor o alvo, menor será o conjunto de hashes válidos. Uma vez gerado, isso foi incrivelmente fácil para outros mineradores e clientes verificarem. Mesmo que uma transação mudasse, o hash seria completamente diferente, sinalizando fraude.
-O hashing facilita a detecção de fraude. Mas o prova de trabalho como um processo também é um grande impeditivo para atacar a cadeia.
+O hashing facilita a detecção de fraude. Mas a prova de trabalho como um processo também foi um grande impedimento para atacar a cadeia.
### Prova de trabalho e segurança {#security}
-Os mineradores são incentivados a fazer esse trabalho na cadeia principal do Ethereum. Há pouco incentivo para que um subconjunto de mineradores inicie a sua própria cadeia – isso enfraquece o sistema. As blockchains dependem de uma única fonte de verdade. E os utilizadores escolherão sempre a cadeia mais longa ou mais "pesada".
+Os mineradores foram incentivados a fazer esse trabalho na cadeia principal do Ethereum. Havia pouco incentivo para um subconjunto de mineradores iniciar sua própria cadeia – isso prejudica o sistema. As cadeias de blocos dependem de ter uma única fonte de verdade.
-O objetivo da prova de trabalho é aumentar a cadeia. A maior cadeia é aceita como válida pois ela teve o maior trabalho computacional realizado. Dentro do sistema de prova de trabalho do Ethereum é quase impossível criar novos blocos que apaguem transações, criem transações falsas ou mantenham uma segunda cadeia. Isso porque um minerador malicioso precisaria estar sempre resolvendo o bloco nonce mais rápido que todos os demais mineradores.
+O objetivo da prova de trabalho era estender a cadeia. A cadeia mais longa era mais aceita como válida porque teve o maior trabalho computacional feito para gerá-la. No sistema PoW do Ethereum, era quase impossível criar novos blocos que apagassem transações, criassem transações falsas ou mantivessem uma segunda cadeia. Isso porque um minerador malicioso precisaria sempre resolver o bloco nonce mais rápido do que todos os outros.
-Para criar blocos maliciosos, ainda que válidos, você precisaria de mais de 51% do poder de mineração da rede para superar todos os demais mineradores. Você precisaria de muito poder de computação para poder fazer essa quantidade de "trabalho". E o gasto de energia pode até superar os ganhos que você faria em um ataque.
+Para criar consistentemente blocos maliciosos, ainda que válidos, um minerador mal-intencionado precisaria de mais de 51% do poder de mineração da rede para superar todos os demais. Essa quantidade de "trabalho" requer muito poder de computação caro e a energia gasta pode até ter superado os ganhos obtidos em um ataque.
### Aspectos econômicos da prova de trabalho {#economics}
-A prova de trabalho também é responsável pela emissão de novas moedas no sistema e pelo incentivo ao trabalho dos mineradores.
+A prova de trabalho também foi responsável por emitir novas moedas no sistema e incentivar os mineradores a fazer o trabalho.
-Miners who successfully create a block get rewarded with two freshly minted ETH but no longer receive all the transaction fees, as the base fee gets burned, while the tip and block reward goes to the miner. Um minerador também pode receber 1,75 ETH por um bloco do tipo «uncle» (um bloco que foi minerado, mas que ainda não foi adicionado à blockchain). Blocos do tipo "uncle" são blocos válidos criados por um minerador praticamente ao mesmo tempo que outro minerador minerou o bloco de maneira satisfatória. Os blocos do tipo "uncle" costumam existir devido à latência da rede.
+Desde a [atualização de Constantinopla](/history/#constantinople), os mineradores que criaram com sucesso um bloco foram recompensados com dois ETH recém-cunhados e parte das taxas de transação. Os blocos Omner também compensaram 1,75 ETH. Os blocos Ommer eram blocos válidos criados por um minerador praticamente ao mesmo tempo que outro minerador criava o bloco canônico, o que foi determinado em última instância por qual cadeia foi construída em cima da primeira. Os blocos Ommer geralmente aconteciam devido à latência da rede.
## Finalidade {#finality}
Uma transação tem "finalidade" no Ethereum quando ela faz parte de um bloco que não pode mudar.
-Como os mineradores trabalham de forma descentralizada, é possível que dois blocos válidos sejam minerados ao mesmo tempo. Isso cria um "fork" (bifurcação) temporário. Eventualmente, uma dessas cadeias se tornará a cadeia aceita depois de um bloco subsequente ter sido minerado e adicionado, tornando-a mais longa.
+Como os mineradores trabalhavam de maneira descentralizada, dois blocos válidos poderiam ser minerados ao mesmo tempo. Isso cria uma bifurcação temporária. Por fim, uma dessas cadeias se tornou a cadeia aceita depois que os blocos subsequentes foram minerados e adicionados a ela, tornando-a mais longa.
-Mas para complicar ainda mais as coisas, as transações que foram rejeitadas no fork temporário podem ter sido incluídas na cadeia aceita. Isto significa que pode ser revertido. Portanto, "finalidade" se refere ao tempo que você deve esperar antes de considerar uma transação irreversível. Para o Ethereum, o tempo recomendado é de 6 blocos, ou um pouco mais de 1 minuto. Depois disso, você pode dizer com relativa confiança que a transação foi um sucesso. É claro que se pode esperar ainda mais tempo por uma garantia ainda maior.
-
-A finalidade é algo a ter em mente ao desenhar dapps. Seria uma má experiência do usuário representar mal as informações de transação para seus usuários, especialmente se a transação for de alto valor.
-
-Lembre-se, esse tempo não inclui os tempos de espera até que a transação seja selecionada por um minerador.
+Para complicar ainda mais, as transações rejeitadas na bifurcação temporária podem não ter sido incluídas na cadeia aceita. Ou seja, isso poderia ser revertido. Portanto, a finalização se refere ao tempo que você deve esperar antes de considerar uma transação irreversível. Na prova de trabalho Ethereum anterior, quanto mais blocos foram extraídos em cima de um bloco `N` específico, maior a confiança de que as transações em `N` foram bem-sucedidas e não seriam revertidas. Agora, com a prova de participação, a finalização é uma propriedade explícita, e não probabilística, de um bloco.
## Uso de energia na prova de trabalho {#energy}
-Uma importante crítica à prova de trabalho é a quantidade de energia necessária para manter a rede segura. Para manter a segurança e a descentralização, o Ethereum na prova de trabalho consome 73,2 TWh anualmente, o equivalente energético de um país de média dimensão como a Áustria.
+Uma importante crítica à prova de trabalho é a quantidade de energia necessária para manter a rede segura. Para manter a segurança e a descentralização, o Ethereum na prova de trabalho consumia grandes quantidades de energia. Pouco antes de mudar para a prova de participação, os mineradores do Ethereum consumiam coletivamente cerca de 70 TWh/ano (aproximadamente o mesmo que a República Tcheca – de acordo com [digiconomist](digiconomist.net) em 18 de julho de 2022).
## Prós e contras {#pros-and-cons}
diff --git a/src/content/translations/pt-br/developers/docs/consensus-mechanisms/pow/mining/index.md b/src/content/translations/pt-br/developers/docs/consensus-mechanisms/pow/mining/index.md
index 2a8e220f41e..427cb6bacda 100644
--- a/src/content/translations/pt-br/developers/docs/consensus-mechanisms/pow/mining/index.md
+++ b/src/content/translations/pt-br/developers/docs/consensus-mechanisms/pow/mining/index.md
@@ -1,44 +1,45 @@
---
title: Mineração
-description: Uma explicação de como a mineração funciona no Ethereum e como ajuda a manter o Ethereum seguro e descentralizado.
+description: Uma explicação de como a mineração funcionava no Ethereum.
lang: pt-br
-incomplete: true
---
+
+A prova de trabalho não está mais subjacente ao mecanismo de consenso do Ethereum, o que significa que a mineração foi desativada. Em vez disso, o Ethereum é garantido por validadores que apostam em ETH. Você pode começar a participar com o seu ETH hoje. Leia mais sobre A Fusão, prova de participação e participação. Esta página é apenas para interesse histórico.
+
+
## Pré-requisitos {#prerequisites}
Para melhor entender esta página, recomendamos que você leia primeiro [transações](/developers/docs/transactions/), [blocos](/developers/docs/blocks/) e [prova de trabalho](/developers/docs/consensus-mechanisms/pow/).
## O que é mineração de Ethereum? {#what-is-ethereum-mining}
-Mineração é o processo de criação de um bloco de transações a ser adicionado à blockchain do Ethereum.
+A mineração é o processo de criação de um bloco de transações a ser adicionado à cadeia de blocos do Ethereum na arquitetura de prova de trabalho agora obsoleta do Ethereum.
-Ethereum, como Bitcoin, atualmente usa um mecanismo de consenso denominada [prova de trabalho (PoW)](/developers/docs/consensus-mechanisms/pow/). A mineração é a força vital da prova de trabalho. Minerador de Ethereum – computadores rodando software – usando o tempo e o poder de computação deles para processar transações e produzir blocos.
+A palavra mineração se origina no contexto da analogia do ouro para criptomoedas. Ouro ou metais preciosos são escassos, assim como tokens digitais, e a única maneira de aumentar o volume total em um sistema de prova de trabalho é por meio da mineração. Na prova de trabalho do Ethereum, o único modo de emissão foi por meio da mineração. Ao contrário de ouro ou metais preciosos, no entanto, a mineração Ethereum também foi a maneira de proteger a rede criando, verificando, publicando e propagando blocos na cadeia de blocos.
-
- A prova de participação substituirá a mineração e a prova de trabalho ao longo do próximo ano. Você pode começar a fazer o staking do seu ETH hoje. Mais sobre staking
-
+Ether de mineração = Protegendo a rede
-## Por que existem mineradores? {#why-do-miners-exist}
+A mineração é a força vital de qualquer cadeia de blocos de prova de trabalho. Os mineradores do Ethereum — computadores executando software — usaram seu tempo e poder de computação para processar transações e produzir blocos antes da transição para a prova de participação.
-Em sistemas descentralizados como o Ethereum, precisamos garantir que todos concordem com a ordem das transações. Os mineradores ajudam a resolver isso, solucionando quebra-cabeças computacionalmente difíceis para produzir blocos, que servem como uma forma de proteger a rede contra ataques.
+## Por que existem mineradores? {#why-do-miners-exist}
-[Mais sobre proof of work](/developers/docs/consensus-mechanisms/pow/)
+Em sistemas descentralizados como o Ethereum, precisamos garantir que todos concordem com a ordem das transações. Os mineradores ajudaram isso a acontecer resolvendo quebra-cabeças computacionalmente difíceis para produzir blocos, protegendo a rede contra-ataques.
-## Quem pode se tornar um minerador no Ethereum? {#who-can-become-a-miner}
+[Mais sobre prova de trabalho](/developers/docs/consensus-mechanisms/pow/)
-Tecnicamente, qualquer um pode minerar na rede Ethereum usando seu computador. No entanto, nem todos podem minerar ether (ETH) de forma rentável. Na maioria dos casos, os mineradores devem comprar hardware de computador dedicado para minerar de forma rentável. Embora seja verdade que qualquer pessoa pode executar o software de mineração em seu computador, é improvável que o computador médio ganhe recompensas de bloco suficientes para cobrir os custos associados à mineração.
+Anteriormente, qualquer era capaz de minerar na rede Ethereum usando seu computador. No entanto, nem todos podem minerar ether (ETH) de forma lucrativa. Na maioria dos casos, os mineradores tiveram que comprar hardware de computador dedicado e ter acesso a fontes de energia barata. Um computador médio provavelmente não ganhava recompensas de bloco suficientes para cobrir os custos associados à mineração.
### Custo da mineração {#cost-of-mining}
- Custos potenciais do hardware necessário para construir e manter uma plataforma de mineração
- Custo elétrico para alimentar a plataforma de mineração
-- Se você estiver minerando em uma pool, as pools de mineração normalmente cobram uma taxa fixa de % de cada bloco gerado pela pool
+- Se você estivesse minerando em um pool, esses pools normalmente cobravam uma taxa percentual fixa de cada bloco gerado pelo pool
- Custo potencial do equipamento para apoiar a plataforma de mineração (ventilação, monitoramento de energia, fiação elétrica, etc.)
Para conhecer ainda mais a rentabilidade da mineração, use uma calculadora de mineração, como a fornecida pela [Etherscan](https://etherscan.io/ether-mining-calculator).
-## Como as transações Ethereum são mineradas {#how-ethereum-transactions-are-mined}
+## Como as transações do Ethereum eram mineradas {#how-ethereum-transactions-were-mined}
1. Um usuário escreve e assina uma solicitação de [transação](/developers/docs/transactions/) com a chave privada de alguma [conta](/developers/docs/accounts/).
2. O usuário transmite a solicitação de transação para toda a rede Ethereum de algum [nó](/developers/docs/nodes-and-clients/).
@@ -51,14 +52,20 @@ Para conhecer ainda mais a rentabilidade da mineração, use uma calculadora de
7. Cada nó remove todas as transações do novo bloco de suas memórias locais de pedidos de transações não atendidos.
8. Novos nós que se juntam à rede baixam todos os blocos em sequência, incluindo o bloco que contém nossa transação de interesse. Eles inicializam uma cópia local de EVM (que começa como uma EVM em branco) e, em seguida, passa pelo processo de execução de cada transação em cada bloco em cima de sua cópia de EVM local, verificando as somas de verificação de estado em cada bloco ao longo do caminho.
-Cada transação é extraída (incluída em um novo bloco e propagada pela primeira vez) uma vez, mas executada e verificada por cada participante no processo de avanço do estado EVM canônico. Isso destaca um dos mantras centrais do blockchain: ** Não confie, verifique **.
+Cada transação é extraída (incluída em um novo bloco e propagada pela primeira vez) uma vez, mas executada e verificada por cada participante no processo de avanço do estado EVM canônico. Isso destaca um dos mantras centrais da cadeia de blocos: ** Não confie, verifique **.
## Uma demonstração visual {#a-visual-demo}
-Acompanhe o Austin enquanto ele explica como funciona o processo de mineração e o conceito de prova de trabalho da blockchain.
+Acompanhe o Austin enquanto ele explica como funciona o processo de mineração e o conceito de prova de trabalho da cadeia de blocos.
+## O algoritmo de mineração {#mining-algorithm}
+
+A Rede principal do Ethereum usou apenas um algoritmo de mineração - ['Ethash'](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash). Ethhash foi o sucessor de um algoritmo de P&D original conhecido como ['Dagger-Hashimoto'](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto).
+
+[Mais sobre algoritmos de mineração](/developers/docs/consensus-mechanisms/pow/mining-algorithms/).
+
## Leitura adicional {#further-reading}
- [O que significa minerar Ethereum?](https://docs.ethhub.io/using-ethereum/mining/) _EthHub_
@@ -67,7 +74,7 @@ Acompanhe o Austin enquanto ele explica como funciona o processo de mineração
- [Principais mineradores de Ethereum](https://etherscan.io/stat/miner?range=7&blocktype=blocks)
- [Calculadora de mineração da Etherscan](https://etherscan.io/ether-mining-calculator)
-- [Calculadora de mineração do Minerstat](https://minerstat.com/coin/ETH)
+- [Calculadora de mineração Minerstat](https://minerstat.com/coin/ETH)
## Tópicos relacionados {#related-topics}
diff --git a/src/content/translations/pt-br/developers/docs/dapps/index.md b/src/content/translations/pt-br/developers/docs/dapps/index.md
index 6f72e30a8f0..862c03be3fa 100644
--- a/src/content/translations/pt-br/developers/docs/dapps/index.md
+++ b/src/content/translations/pt-br/developers/docs/dapps/index.md
@@ -33,12 +33,12 @@ Um contrato inteligente é um código presente na blockchain Ethereum e funciona
- **Privacidade**: você não precisa fornecer identidade real para implantar ou interagir com um dapp.
- **Resistância à censura**: nenhuma entidade na rede pode impedir que os usuários enviem transações, implantem dapps ou leiam dados da blockchain.
- **Completar a integridade dos dados**: os dados armazenados na blockchain são imutáveis e indiscutíveis, graças aos primitivos criptográficos. Atores mal-intencionados não podem forjar transações ou outros dados que já foram tornados públicos.
-- **Computação insegura/comportamento verificável**: os contratos inteligentes podem ser analisados e garantidos para execução de formas previsíveis, sem a necessidade de confiar em uma autoridade central. Isso não é verdade nos modelos tradicionais; por exemplo, quando usamos sistemas bancários on-line, temos que confiar que as instituições financeiras não usarão indevidamente nossos dados financeiros, adulterarão registros ou serão hackeadas.
+- **Computação sem confiança/comportamento verificável** – Contratos inteligentes podem ser analisados e têm garantia de execução de maneiras previsíveis, sem a necessidade de confiar em uma autoridade central. Isso não é verdade nos modelos tradicionais; por exemplo, quando usamos sistemas bancários on-line, temos que confiar que as instituições financeiras não usarão indevidamente nossos dados financeiros, adulterarão registros ou serão hackeadas.
## Benefícios do desenvolvimento de dapps {#drawbacks-of-dapp-development}
-- **Manutenção**: os dapps podem ser mais difíceis de manter, porque o código e os dados publicados na blockchain são mais difíceis de modificar. É difícil para os desenvolvedores fazerem atualizações em seus dapps (ou nos dados subjacentes armazenados por um dapp) quando eles são implantados, mesmo que bugs ou riscos de segurança sejam identificados em uma versão antiga.
-- **Impactos no desempenho**: há um grande impacto no desempenho, e o dimensionamento é realmente difícil. Para alcançar o nível de segurança, integridade, transparência e confiabilidade que o Ethereum aspira, cada nó executa e armazena cada transação. Além disso, a prova de trabalho também leva tempo. Um cálculo rápido permite estimar a sobrecarga em torno de 1.000.000 vezes o cálculo padrão atual.
+- **Manutenção**: os dapps podem ser mais difíceis de manter, porque o código e os dados publicados na blockchain são mais difíceis de modificar. É difícil para os desenvolvedores fazerem atualizações em seus dapps (ou nos dados armazenados sob um dapp) uma vez que eles foram implantados, mesmo se bugs ou riscos de segurança forem identificados em uma versão antiga.
+- **Impactos no desempenho**: há um grande impacto no desempenho, e o dimensionamento é realmente difícil. Para alcançar o nível de segurança, integridade, transparência e confiabilidade que o Ethereum aspira, cada nó executa e armazena cada transação. Além disso, o consenso de prova de participação também leva tempo.
- **Congestionamento da rede **: pelo menos no modelo atual, se um dapp estiver usando muitos recursos computacionais, toda a rede é apoiada. Atualmente, a rede só é capaz de processar cerca de 10 transações por segundo; se as transações estiverem sendo enviadas mais rápido do que isso, o pool de transações não confirmadas poderá aumentar rapidamente.
- **Experiência do usuário**: pode ser mais difícil projetar experiências amigáveis ao usuário porque o usuário final pode achar muito difícil configurar uma pilha de ferramentas necessária para interagir com a blockchain de uma forma verdadeiramente segura.
- **Centralização**: soluções amigáveis para o usuário e amigáveis ao desenvolvedor construídas sobre a camada base do Ethereum podem acabar parecendo serviços centralizados. Por exemplo, tais serviços podem armazenar chaves ou outros pontos sensíveis do servidor de informações, servir um front-end usando um servidor centralizado ou executar uma lógica de negócios importante em um servidor centralizado antes de escrever na blockchain. A centralização elimina muitas (se não todas) das vantagens da blockchain sobre o modelo tradicional.
@@ -47,7 +47,7 @@ Um contrato inteligente é um código presente na blockchain Ethereum e funciona
-## Ferramentas para os dapps {#dapp-tools}
+## Ferramentas para criar dapps {#dapp-tools}
**Scaffold-ETH _: experimente rápido com Solidity usando um front-end que se adapta ao seu contrato inteligente._**
diff --git a/src/content/translations/pt-br/developers/docs/evm/index.md b/src/content/translations/pt-br/developers/docs/evm/index.md
index e08c4bae8c3..75918f03ec7 100644
--- a/src/content/translations/pt-br/developers/docs/evm/index.md
+++ b/src/content/translations/pt-br/developers/docs/evm/index.md
@@ -6,15 +6,15 @@ lang: pt-br
O contexto físico da Máquina Virtual do Ethereum (EVM, na sigla em inglês) não pode ser descrito da mesma maneira que é descrita uma nuvem no céu ou uma onda no meio do oceano, se não que deve ser _entendido_ como uma entidade singular mantida por milhares de computadores conectados operando um cliente de Ethereum.
-O protocolo do Ethereum existe única e exclusivamente para manter a operação contínua, ininterrupta e imutável desta máquina de estado especial; é o ambiente onde residem todas as contas de Ethereum e os contratos inteligentes. Para qualquer bloco da cadeia, o Ethereum tem um estado "canônico", e a EVM é a responsável por definir as regras para registrar um novo estado válido de um bloco para o seguinte.
+O próprio protocolo Ethereum existe apenas com o propósito de manter a operação contínua, ininterrupta e imutável dessa máquina de estado especial. É o ambiente em que todas as contas Ethereum e contratos inteligentes vivem. Para qualquer bloco na cadeia, o Ethereum tem um estado "canônico", e a EVM é a responsável por definir as regras para registrar um novo estado válido de um bloco para o seguinte.
## Pré-requisitos {#prerequisites}
-Alguma familiaridade básica com a terminologia comum em ciência da computação, como [bytes](https://wikipedia.org/wiki/Byte), [memória](https://wikipedia.org/wiki/Computer_memory) e [pilha]() é necessária para entender a EVM. Também seria ótimo estar familiarizado com conceitos de criptografia/blockchain como [funções hash](https://wikipedia.org/wiki/Cryptographic_hash_function), [prova de trabalho](https://wikipedia.org/wiki/Proof_of_work) e [árvore de Merkle](https://wikipedia.org/wiki/Merkle_tree).
+Alguma familiaridade básica com a terminologia comum em ciência da computação, como [bytes](https://wikipedia.org/wiki/Byte), [memória](https://wikipedia.org/wiki/Computer_memory) e [pilha]() é necessária para entender a EVM. Também recomendamos se familiarizar com conceitos de criptografia/cadeia de blocos, como [funções hash](https://wikipedia.org/wiki/Cryptographic_hash_function) e a [árvore Merkle](https://wikipedia.org/wiki/Merkle_tree).
## Do livro-razão para a máquina de estado {#from-ledger-to-state-machine}
-A analogia de um 'livro-razão distribuído' é muitas vezes usada para descrever blockchains como o Bitcoin, que permite uma moeda descentralizada usando ferramentas fundamentais de criptografia. Uma criptomoeda comporta-se como uma moeda "normal" devido às regras que regem o que pode e não pode se fazer para modificar o livro-razão. Por exemplo, um endereço de Bitcoin não pode gastar mais Bitcoin do que o recebido previamente. Essas regras sustentam todas as transações em Bitcoin e em muitas outras blockchains.
+A analogia de um 'livro-razão distribuído' é muitas vezes usada para descrever blockchains como o Bitcoin, que permite uma moeda descentralizada usando ferramentas fundamentais de criptografia. O livro-razão mantém um registro de atividades que deve aderir a um conjunto de regras que regem o que alguém pode e não pode fazer para modificar o livro-razão. Por exemplo, um endereço de Bitcoin não pode gastar mais Bitcoin do que o recebido previamente. Essas regras sustentam todas as transações em Bitcoin e em muitas outras blockchains.
Embora Ethereum tenha sua própria criptomoeda nativa (Ether), que segue quase exatamente as mesmas regras intuitivas, ele também permite dispor de uma função muito mais poderosa: [os contratos inteligentes](/developers/docs/smart-contracts/). Para este recurso mais complexo, uma analogia mais sofisticada é necessária. Em vez de um livro-razão distribuído, Ethereum é uma [máquina de estado distribuída](https://wikipedia.org/wiki/Finite-state_machine). O estado do Ethereum é uma grande estrutura de dados que contém não apenas todas as contas e saldos, mas também um _estado da máquina_, que pode mudar de bloco para bloco de acordo com um conjunto predefinido de regras, as quais podem executar código de máquina arbitrário. As regras específicas para mudar o estado de bloco em bloco são definidas pela EVM.
@@ -32,7 +32,7 @@ Dado um antigo estado `(S)` e um novo conjunto de transações válidas `(T)`, a
### Estado {#state}
-No contexto do Ethereum, o estado é uma enorme estrutura de dados chamada [Merkle Patricia Trie](https://eth.wiki/en/fundamentals/patricia-tree)modificada, que mantém todas as [contas](/developers/docs/accounts/) vinculadas por hashes e redutíveis a um único hash raiz armazenado na blockchain.
+No contexto do Ethereum, o estado é uma enorme estrutura de dados chamada [árvore de Merkle Patricia modificada](/developers/docs/data-structures-and-encoding/patricia-merkle-trie/), que mantém todas as [contas](/developers/docs/accounts/) vinculadas por hashes e redutíveis a um único hash raiz armazenado na cadeia de blocos.
### Transações {#transactions}
@@ -56,7 +56,7 @@ O bytecode compilado do contrato inteligente executa como um número de [opcodes
Todas as implementações da EVM devem aderir à especificação descrita no Ethereum Yellowpaper.
-Durante o histórico de 5 anos do Ethereum, a EVM passou por várias revisões e existem várias implementações da EVM em várias linguagens de programação.
+Durante o histórico de 7 anos do Ethereum, a EVM passou por várias revisões e existem várias implementações da EVM em várias linguagens de programação.
Todos os [clientes Ethereum](/developers/docs/nodes-and-clients/#execution-clients) incluem uma implementação de EVM. Além disso, existem várias implementações independentes, incluindo:
diff --git a/src/content/translations/pt-br/developers/docs/gas/index.md b/src/content/translations/pt-br/developers/docs/gas/index.md
index 45148e134a8..27289369321 100644
--- a/src/content/translations/pt-br/developers/docs/gas/index.md
+++ b/src/content/translations/pt-br/developers/docs/gas/index.md
@@ -28,39 +28,29 @@ Digamos que Alice tenha que pagar a Roberto 1 ETH. Na transação, o limite de g
A taxa total fica sendo:: `Gas units (limit) * Gas price per unit`, ou seja, `21,000 * 200 = 4,200,000 gwei` ou 0,0042 ETH
-Quando Alice enviasse o dinheiro, 1,0042 ETH seriam deduzidos da conta dela. Roberto receberia um crédito de 1.0000 ETH. O minerador receberia 0,0042 ETH.
-
-Este vídeo oferece uma visão concisa do gás e por que ele existe:
-
-
-
## Depois da atualização de Londres {#post-london}
-[A atualização de Londres](/history/#london) foi implementada em 5 de agosto de 2021 para tornar as transações no Ethereum mais previsíveis para os usuários por meio de uma revisão no mecanismo de taxas de transação do Ethereum. Os benefícios introduzidos por meio dessa alteração incluem uma melhor estimativa na taxa de transação, geralmente fazendo uma inclusão mais rápida da transação e a compensação na emissão de ETH através da queima de um percentual das taxas de transação.
-
-Começando com a atualização de Londres da rede, cada bloco tem uma taxa base, o preço mínimo por unidade de gás para inclusão neste bloco, calculado pela rede com base na demanda por espaço em bloco. Como a taxa base da taxa da transação é queimada, espera-se que os usuários também definam uma gorjeta (taxa de prioridade) nas suas transações. A gorjeta compensa os mineradores por executar e propagar as transações de usuário em blocos e espera-se que seja definida automaticamente pela maioria das carteiras.
+Digamos que João tenha que pagar a Tomé 1 ETH. Na transação, o limite de gás é de 21.000 unidades e a taxa base é de 10 gwei. João inclui uma gorjeta de 2 gwei.
-O cálculo da taxa total de transação funciona da seguinte forma: `Gas units (limit) * (Base fee + Tip)`
+A taxa total agora seria: `unidades de gás usadas * (taxa base + taxa de prioridade)` em que a `taxa base` é um valor definido pelo protocolo e a `prioridade taxa` é um valor definido pelo usuário como uma gorjeta para o validador.
-Digamos que João tenha que pagar a Tomé 1 ETH. Na transação, o limite de gás é de 21.000 unidades e a taxa base é de 100 gwei. João inclui uma gorjeta de 10 gwei.
+ou seja, `21.000 * (10 + 2) = 252.000 gwei` ou 0,000252 ETH.
-Usando a fórmula acima podemos calcular isso como `21,000 * (100 + 10) = 2,310,000 gwei` ou 0,00231 ETH.
+Quando João enviar o dinheiro, 1,000252 ETH serão deduzidos da conta de João. Tomé receberá 1,0000 ETH. O validador recebe a gorjeta de 0,000042 ETH. A taxa base de 0,00021 ETH é queimada.
-Quando João enviar o dinheiro, serão deduzidos 1,00231 ETH da sua conta. Tomé receberá 1,0000 ETH. O minerador recebe a gorjeta de 0,00021 ETH. A taxa base de 0,0021 ETH é queimada.
-
-Além disso, João também pode definir uma taxa máxima (`maxFeePerGas`) para a transação. A diferença entre a taxa máxima e a taxa real é reembolsada a João, isto é, `refund = max fee - (base fee + priority fee)`. João pode definir um valor máximo a pagar para a transação ser executada e não se preocupar em pagar "além" da taxa base quando a transação for executada.
+Além disso, João também pode definir uma taxa máxima (`maxFeePerGas`) para a transação. A diferença entre a taxa máxima e a taxa real é reembolsada a João, ou seja, `reembolso = taxa máxima - (taxa base + taxa de prioridade)`. João pode definir um valor máximo a pagar pela execução da transação e não se preocupar em pagar "além" da taxa base quando a transação for executada.
### Tamanho do bloco {#block-size}
-Antes da atualização de Londres, o Ethereum tinha blocos de tamanho fixo. Em tempos de alta demanda de rede, esses blocos operavam com capacidade total. Como resultado, os usuários muitas vezes tinham que esperar pela redução dessa alta demanda para serem incluídos em um bloco, o que levava a uma experiência de usuário ruim.
+Antes da atualização London, o Ethereum tinha blocos de tamanho fixo. Em tempos de alta demanda de rede, esses blocos operavam em capacidade total. Como resultado, os usuários geralmente precisavam esperar que a alta demanda fosse reduzida para serem incluídos em um bloco, o que levava a uma experiência ruim do usuário.
-A atualização de Londres introduziu blocos de tamanho variável no Ethereum. Cada bloco tem um tamanho alvo de 15 milhões de gás, mas o tamanho dos blocos vai aumentar ou diminuir de acordo com a demanda da rede, até o limite de bloco de 30 milhões de gás (2 vezes o tamanho do bloco-alvo). O protocolo alcança um tamanho de bloco de equilíbrio de 15 milhões em média através do processo de _tâtonnement_. Isso significa que se o tamanho do bloco for maior que o tamanho do bloco-alvo, o protocolo aumentará a taxa base para o bloco seguinte. Da mesma forma, o protocolo irá diminuir a taxa base se o tamanho do bloco for menor que o tamanho do bloco de destino. A quantidade pela qual a taxa base é ajustada é proporcional à distância do tamanho do bloco atual do alvo. [Mais sobre blocos](/developers/docs/blocks/).
+A atualização London introduziu blocos de tamanho variável no Ethereum. Cada bloco tem um tamanho alvo de 15 milhões de gás, mas o tamanho dos blocos aumentará ou diminuirá de acordo com a demanda da rede, até o limite do bloco de 30 milhões de gás (2x o tamanho do bloco alvo). O protocolo atinge um tamanho de bloco de equilíbrio de 15 milhões em média através do processo de _tentativa e erro_. Isso significa que se o tamanho do bloco for maior que o tamanho do bloco alvo, o protocolo aumentará a taxa base para o bloco a seguir. Da mesma forma, o protocolo diminuirá a taxa base se o tamanho do bloco for menor que o tamanho do bloco de destino. A quantidade pela qual a taxa base é ajustada é proporcional ao quão longe o tamanho do bloco atual está do alvo. [Mais sobre blocos](/developers/docs/blocks/).
### Taxa de base {#base-fee}
-Cada bloco tem uma taxa base que atua como um preço de reserva. Para ser elegível para inclusão em um bloco, o preço oferecido por gás tem que ser, pelo menos, igual à taxa base. A taxa base é calculada independentemente do bloco atual e, em vez disso, é determinada pelos blocos anteriores – tornando as taxas de transação mais previsíveis para os usuários. Quando o bloco é minerado essa taxa base é "queimada", removendo-a de circulação.
+Cada bloco tem uma taxa base que funciona como um preço de reserva. Para ser elegível para inclusão em um bloco, o preço oferecido por gás deve ser pelo menos igual à taxa base. A taxa base é calculada independentemente do bloco atual e, em vez disso, é determinada pelos blocos anteriores, tornando as taxas de transação mais previsíveis para os usuários. Quando o bloco é minerado, essa taxa base é “queimada”, retirando-o de circulação.
-A taxa base é calculada por uma fórmula que compara o tamanho do bloco anterior (a quantidade de gas usado para todas as transações) com o tamanho do alvo. A taxa base aumentará em um máximo de 12,5% por bloco se o tamanho do bloco de destino for excedido. Este crescimento exponencial torna economicamente inviável que o tamanho do bloco permaneça elevado indefinidamente.
+A taxa base é calculada por uma fórmula que compara o tamanho do bloco anterior (a quantidade de gás utilizada para todas as transações) com o tamanho do alvo. A taxa base aumentará em um máximo de 12,5% por bloco se o tamanho do bloco de destino for excedido. Esse crescimento exponencial torna economicamente inviável que o tamanho do bloco permaneça elevado indefinidamente.
| Número do bloco | Gás incluído | Aumento de taxa | Taxa base atual |
| --------------- | -----------: | --------------: | --------------: |
@@ -73,9 +63,9 @@ A taxa base é calculada por uma fórmula que compara o tamanho do bloco anterio
| 7 | 30M | 12,5% | 180,2 gwei |
| 8 | 30M | 12,5% | 202,7 gwei |
-Relativo ao mercado de leilão de gás antes da atualização de Londres, esta mudança no mecanismo de taxa de transação faz com que a previsão de taxas seja mais confiável. De acordo com a tabela acima, para criar uma transação no bloco número 9, uma carteira informará o usuário que a **maximum base fee** a ser adicionada ao próximo bloco é `current base fee * 112.5%` ou `202.8 gwei * 112.5% = 228.1 gwei`.
+Em relação ao mercado de leilão de gás antes da atualização London, essa mudança no mecanismo de taxa de transação faz com que a previsão de taxa seja mais confiável. Segundo a tabela acima, para criar uma transação no bloco número 9, uma carteira informará ao usuário com certeza que a **taxa base máxima** a ser adicionada ao próximo bloco é `taxa base atual * 112,5%` ou `202,8 gwei * 112,5% = 228,1 gwei`.
-Também é importante notar que não é provável que vejamos picos prolongados de blocos completos devido à velocidade com que a taxa base aumenta precedendo um bloco completo.
+Também é importante notar que é improvável que vejamos picos prolongados de blocos cheios devido à velocidade com que a taxa base aumenta após um bloco cheio.
| Número do bloco | Gás incluído | Aumento da taxa | Taxa base atual |
| --------------- | -----------: | --------------: | --------------: |
@@ -87,76 +77,71 @@ Também é importante notar que não é provável que vejamos picos prolongados
### Taxa de prioridade (gorjetas) {#priority-fee}
-Antes da atualização de Londres, os mineradores receberiam a taxa total de gás de qualquer transação incluída em um bloco.
+Antes da atualização London, os mineradores receberiam a taxa total de gás de qualquer transação incluída em um bloco.
-Com a nova taxa base sendo queimada, a atualização de Londres introduziu uma taxa de prioridade (gorjeta) para incentivar os mineradores a incluírem uma transação no bloco. Sem gorjetas, os mineradores considerariam economicamente viável minerar blocos vazios, uma vez que receberiam a mesma recompensa por bloco. Em condições normais, uma pequena gorjeta fornece um incentivo mínimo para incluir uma transação. Para transações que precisam ser executadas preferencialmente antes de outras transações no mesmo bloco, será necessária uma gorjeta mais alta para tentar superar as transações concorrentes.
+Com a nova taxa básica sendo queimada, a atualização London introduziu uma taxa prioritária (gorjeta) para incentivar os mineradores a incluir uma transação no bloco. Sem gorjetas, os mineradores achariam economicamente viável minerar blocos vazios, pois receberiam a mesma recompensa de bloco. Em condições normais, uma pequena gorjeta fornece aos mineradores um incentivo mínimo para incluir uma transação. Para transações que precisam ser executadas preferencialmente antes de outras transações no mesmo bloco, uma gorjeta mais alta será necessária para tentar superar transações concorrentes.
### Taxa máxima {#maxfee}
-Para executar uma transação na rede, os usuários podem especificar um limite que eles estão dispostos a pagar para que sua transação seja executada. Este parâmetro opcional é conhecido como `maxFeePerGas`. Para que uma transação seja executada, a taxa máxima deve exceder a soma da taxa base e a gorjeta. O remetente da transação é reembolsado com a diferença entre a taxa máxima e a soma da taxa base com a gorjeta.
+Para executar uma transação na rede, os usuários podem especificar um limite máximo que estão dispostos a pagar para que a sua transação seja executada. Este parâmetro opcional é conhecido como `maxFeePerGas`. Para que uma transação seja executada, a taxa máxima deve exceder a soma da taxa base e da gorjeta. O remetente da transação é reembolsado pela diferença entre a taxa máxima e a soma da taxa base e da gorjeta.
### Calculando as taxas {#calculating-fees}
-Um dos principais benefícios alcançados com a atualização de Londres é a melhora na experiência do usuário ao definir taxas de transação. Para carteiras que suportam a atualização, em vez de explicitamente dizer quanto você está disposto a pagar para fazer passar sua transação, os provedores de carteira definirão automaticamente uma taxa de transação recomendada (taxa base + taxa de prioridade recomendada) para reduzir a quantidade de complexidade que pesa sobre os usuários.
+Um dos principais benefícios da atualização London é melhorar a experiência do usuário ao definir as taxas de transação. Para carteiras que suportam a atualização, em vez de declarar explicitamente quanto você está disposto a pagar para realizar sua transação, os provedores de carteira definirão automaticamente uma taxa de transação recomendada (taxa base + taxa de prioridade recomendada) para reduzir a quantidade de complexidade imposta a seus usuários.
## EIP-1559 {#eip-1559}
-A implementação de [EIP-1559](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1559.md) na atualização de Londres tornou o mecanismo de taxa de transação mais complexo do que o anterior leilão de preço de gás, mas tem a vantagem de tornar as taxas de gás mais previsíveis, resultando em um mercado de taxas de transação mais eficiente. Os usuários podem enviar transações com um `maxFeePerGas` que corresponde a quanto estão dispostos a pagar para que a transação seja executada, sabendo que não vão pagar mais do que o preço de mercado do gás (`baseFeePerGas`), e receber um reembolso do adicional menos a gorjeta.
+A implementação de [EIP-1559](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1559.md) na atualização London tornou o mecanismo de taxa de transação mais complexo do que o leilão de preço de gás anterior, mas tem a vantagem de tornar as taxas de gás mais previsíveis, resultando em um mercado de taxas de transação mais eficiente. Os usuários podem enviar transações com um `maxFeePerGas` que corresponde ao quanto estão dispostos a pagar pela transação a ser executada, sabendo que não pagarão mais do que o preço de mercado do gás (`baseFeePerGas`) e receber o reembolso por qualquer extra, menos a gorjeta.
Este vídeo explica o EIP-1559 e os benefícios que ele traz:
-Se estiver interessado, leia as [especificações exatas da EIP-1559](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1559.md).
+Se você estiver interessado, você pode ler as [especificações EIP-1559](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1559.md).
-Continue se aprofundizando com estes [recursos da EIP-1559](https://hackmd.io/@timbeiko/1559-resources).
+Continue seguindo o coelho pela toca com estes [Recursos EIP-1559](https://hackmd.io/@timbeiko/1559-resources).
## Porque as taxas de gás existem? {#why-do-gas-fees-exist}
-Em resumo, as taxas de gás ajudam a manter a rede Ethereum segura. Ao exigir uma taxa para cada cálculo executado na rede, evitamos que os agentes mal-intencionados façam spam na rede. Para prevenir a geração de laços infinitos acidentais ou hostis ou outro desperdício computacional no código, cada transação deve definir um limite do número de etapas computacionais de execução de código que ela pode usar. A unidade fundamental do cálculo é "gás".
+Em resumo, as taxas de gás ajudam a manter a rede Ethereum segura. Ao exigir uma taxa para cada cálculo executado na rede, evitamos que os maus atores enviem spam para a rede. Para evitar loops infinitos acidentais ou hostis ou outro desperdício de cálculo no código, cada transação deve definir um limite para quantas etapas de cálculo de execução de código ela pode usar. A unidade fundamental de cálculo é "gás".
-Embora uma transação inclua um limite, qualquer gás não usado em uma transação é retornado ao usuário (por exemplo: `max fee - (base fee + tip)` é devolvida).
+Embora uma transação inclua um limite, qualquer gás não usado em uma transação é devolvido ao usuário (ou seja, `taxa máxima - (taxa base + gorjeta)` é retornada).
-![Diagrama que mostra como o gás não utilizado é reembolsado](../transactions/gas-tx.png) _Diagrama adaptado do [Ethereum EVM ilustrado](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
+![Diagrama mostrando como o gás não utilizado é reembolsado](../transactions/gas-tx.png) _Diagrama adaptado do [Ethereum EVM ilustrado](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
## Qual é o limite de gás? {#what-is-gas-limit}
-Limite de gás refere-se à quantidade máxima de gás que você está disposto a consumir em uma transação. Transações mais complicadas envolvendo [contratos inteligentes](/developers/docs/smart-contracts/) requerem mais trabalho computacional e, portanto, precisam de um limite de gás maior do que um simples pagamento. Uma transferência padrão de ETH requer um limite de gás de 21.000 unidades de gás.
+O limite de gás refere-se à quantidade máxima de gás que você está disposto a consumir em uma transação. Transações mais complicadas envolvendo [contratos inteligentes](/developers/docs/smart-contracts/) exigem mais trabalho de cálculo, portanto, exigem um limite de gás mais alto do que um simples pagamento. Uma transferência ETH padrão requer um limite de gás de 21.000 unidades de gás.
-Por exemplo, se você colocasse um limite de gás de 50.000 para uma transferência simples de ETH, a EVM consumiria 21.000 e você recuperaria os restantes 29.000. No entanto, se muito pouco gás for especificado, por exemplo, um limite de gás de 20.000 para uma simples transferência de ETH, a EVM consumirá esses 20.000 de gás, tentando completar a transação, mas esta não será completada. Nesse caso, a EVM reverte qualquer alteração, mas devido a que o minerador já gastou essas 20 mil unidades de gás nesse trabalho, esse gás é consumido.
+Por exemplo, se você colocar um limite de gás de 50.000 para uma simples transferência de ETH, a EVM consumirá 21.000 e você receberá de volta os 29.000 restantes. No entanto, se você especificar muito pouco gás, por exemplo, um limite de gás de 20.000 para uma simples transferência de ETH, a EVM consumirá suas 20.000 unidades de gás tentando cumprir a transação, mas não será concluída. A EVM então reverte quaisquer alterações, mas como o minerador já fez 20 mil unidades de gás de trabalho, esse gás é consumido.
## Por que as taxas de gás são tão altas? {#why-can-gas-fees-get-so-high}
-Se as taxas de gás são elevadas é porque a rede de Ethereum é popular. É importante entender que para realizar qualquer operação no Ethereum é necessário consumir gás, e o espaço onde se encaixam essas transações é limitado em cada bloco. Essas taxas incluem cálculos, armazenamento ou manipulação de dados, ou ainda transferência de tokens, consumindo assim diferentes quantidades de unidades de gás. À medida que a funcionalidade dos dapps se torna mais complexa, o número de operações que um contrato inteligente executa também cresce. Isso quer dizer que cada transação ocupa mais espaço dentro de cada bloco de tamanho limitado. Se há muita demanda, os usuários devem oferecer uma gorjeta maior para tentar superar as transações de outros usuários. Uma taxa maior aumenta as chances de sua transação ser confirmada no próximo bloco.
+As altas taxas de gás são devidas à popularidade do Ethereum. A execução de qualquer operação no Ethereum requer o consumo de gás e o espaço de gás é limitado por bloco. As taxas incluem cálculos, armazenamento ou manipulação de dados ou transferência de tokens, consumindo diferentes quantidades de unidades de "gás". À medida que a funcionalidade do dapp se torna mais complexa, o número de operações que um contrato inteligente realiza também cresce, o que significa que cada transação ocupa mais espaço de um bloco de tamanho limitado. Se houver muita demanda, os usuários devem oferecer um valor de gorjeta mais alto para tentar superar as transações de outros usuários. Uma gorjeta mais alta pode aumentar a probabilidade de sua transação entrar no próximo bloco.
-O preço do gás por si só não determina realmente quanto temos de pagar por uma determinada transação. Para calcular a taxa de transação, temos que multiplicar o gás usado pela taxa do gás, que é medida em Gwei.
+O preço do gás por si só não determina realmente quanto temos de pagar por uma determinada transação. Para calcular a taxa de transação, temos que multiplicar o gás usado pela taxa de gás base, que é medida em gwei.
## Iniciativas para reduzir os custos do gás {#initiatives-to-reduce-gas-costs}
-As [melhorias de dimensionamento](/upgrades/) do Ethereum deverão finalmente abordar algumas dos problemas relacionados ao custo do gás, o que, por sua vez, irá habilitar a plataforma para processar milhares de transações por segundo e assim dimensionar globalmente.
-
-A ampliação da rede Ethereum para sua segunda camada é uma iniciativa fundamental para melhorar consideravelmente os custos do gás, a experiência do usuário e o dimensionamento. [Mais sobre o dimensionamento da camada 2.](/developers/docs/scaling/#layer-2-scaling).
-
-O novo modelo de prova de participação, introduzido pela Beacon Chain, deve reduzir o alto consumo de energia e a dependência de hardware especializado. Essa cadeia permitirá que a rede descentralizada de Ethereum atinja consensos e mantenha a rede segura, enquanto limita o consumo de energia, exigindo, no seu lugar, um compromisso financeiro.
+As [atualizações de escalabilidade](/upgrades/) do Ethereum deverão em última análise resolver algumas das questões de taxas de gás, o que, por sua vez, permitirá que a plataforma processe milhares de transações por segundo e escale globalmente.
-Qualquer usuário com pelo menos 32 ETH pode depositá-los e tornar-se um validador responsável pelo processamento de transações, validando blocos e propondo que novos blocos se adicionem à blockchain. O resto dos usuários com menos de 32 ETH também podem investir em pools de depósito.
+A escalabilidade da camada 2 é uma iniciativa primária para melhorar significativamente os custos do gás, a experiência do usuário e a escalabilidade. [Mais sobre a escalabilidade de camada 2](/developers/docs/scaling/#layer-2-scaling).
## Estratégias para pagar menos gás {#strategies-for-you-to-reduce-gas-costs}
-Para reduzir os custos de gás, você pode ajustar a gorjeta dependendo do nível de prioridade de sua transação. De fato, os mineradores "trabalharão" e executarão transações que ofereçam uma gorjeta superior por gás. Desta maneira, aceitarão sua proposta e estarão menos inclinados a executar transações com gorjetas menores.
+Se você deseja reduzir os custos de gás para seu ETH, pode definir uma gorjeta para indicar o nível de prioridade de sua transação. Os mineradores "trabalham" e executam transações que oferecem uma gorjeta mais alta por gás, pois eles mantêm as gorjetas que você paga e estarão menos inclinados a executar transações com gorjetas mais baixas definidas.
-Se quiser monitorar os preços do gás para poder enviar o seu ETH a um menor custo, você pode usar muitas ferramentas diferentes, tais como:
+Se você deseja monitorar os preços do gás, para poder enviar seu ETH por menos, pode usar muitas ferramentas diferentes, como:
- [Etherscan Gas Tracker](https://etherscan.io/gastracker): _calculadora do preço do gas de uma transação_
- [Blocknative ETH Gas Estimator](https://chrome.google.com/webstore/detail/blocknative-eth-gas-estim/ablbagjepecncofimgjmdpnhnfjiecfm): _uma extensão do Chrome para estimar o preço do gás e que suporta transações do tipo 0 e do tipo 2 EIP-1559._
- [ ETH Gas StationH](https://ethgasstation.info/): _métricas orientadas ao consumidor no mercado de gás de Ethereum_
-- [Cryptoneur Gas Fees Calculator](https://www.cryptoneur.xyz/gas-fees-calculator) _Calculate gas fees in your local currency for different transaction types on Mainnet, Arbitrum, and Polygon._
+- [Calculadora de taxas de gás Cryptoneur](https://www.cryptoneur.xyz/gas-fees-calculator) _Calcule as taxas de gás em sua moeda local para diferentes tipos de transação na Rede principal, no Arbitrum e Polygon._
## Ferramentas relacionadas {#related-tools}
-- [Bloxy Gas Analytics](https://stat.bloxy.info/superset/dashboard/gas/?standalone=true): _estatísticas da gás na rede Ethereum_
-- [Gas Platform da Blocknative](https://www.blocknative.com/gas): _API para estimativas do gás desenvolvida pela plataforma global de dados de mempool da Blocknative_
+- [Gas Platform da Blocknative](https://www.blocknative.com/gas): _API para estimativas do gás desenvolvida pela plataforma global de dados mempool da Blocknative_
## Leitura adicional {#further-reading}
diff --git a/src/content/translations/pt-br/developers/docs/index.md b/src/content/translations/pt-br/developers/docs/index.md
index 1963fa8983e..f2a2066354c 100644
--- a/src/content/translations/pt-br/developers/docs/index.md
+++ b/src/content/translations/pt-br/developers/docs/index.md
@@ -1,22 +1,22 @@
---
-title: "Ethereum: Documentação de desenvolvimento"
-description: Introduzindo a documentação de desenvolvimento da rede Ethereum.
+title: Documentação sobre o desenvolvimento do Ethereum
+description: Introduzindo a documentação sobre o desenvolvimento da rede Ethereum.
lang: pt-br
---
-O objetivo dessa documentação é ajudá-lo a criar utilizando o Ethereum. Ela cobre o Ethereum como um conceito, explica a tecnologia de pilha do Ethereum e documenta tópicos avançados para aplicativos e casos de uso mais complexos.
+O objetivo dessa documentação é ajudar você a criar utilizando o Ethereum. Ela cobre o Ethereum como um conceito, explica a tecnologia de pilha do Ethereum e documenta tópicos avançados para aplicativos e casos de uso mais complexos.
-Este é um empenho da comunidade open-source, então sinta-se à vontade para sugerir novos tópicos, adicionar novo conteúdo e fornecer exemplos onde você achar que pode ser útil. Toda a documentação é editável através do GitHub. Se não souber como, [siga estas instruções](https://github.com/ethereum/ethereum-org-website/tree/dev/docs/editing-markdown.md).
+Este é um esforço da comunidade de código aberto, então, não hesite em sugerir novos tópicos, adicionar novo conteúdo e fornecer exemplos sempre que você julgar ser útil. Toda a documentação é editável através do GitHub. Se não souber como, [siga estas instruções](https://github.com/ethereum/ethereum-org-website/blob/dev/docs/editing-markdown.md).
## Módulos de desenvolvimento {#development-modules}
-Se esta é sua primeira tentativa de desenvolvimento com o Ethereum, recomendamos começar do início e ir avançando, como se fosse um livro.
+Se esta é sua primeira tentativa de desenvolvimento com o Ethereum, recomendamos começar do início e ir avançando como se fosse um livro.
### Tópicos fundamentais {#foundational-topics}
-### Pilha de Ethereum {#ethereum-stack}
+### Pilha Ethereum {#ethereum-stack}
diff --git a/src/content/translations/pt-br/developers/docs/intro-to-ether/index.md b/src/content/translations/pt-br/developers/docs/intro-to-ether/index.md
index bf20d27de98..ace732d1cb8 100644
--- a/src/content/translations/pt-br/developers/docs/intro-to-ether/index.md
+++ b/src/content/translations/pt-br/developers/docs/intro-to-ether/index.md
@@ -18,7 +18,7 @@ A primeira criptomoeda foi o Bitcoin, criado por Satoshi Nakamoto. Desde o lanç
## O que é ether? {#what-is-ether}
-**Ether (ETH)** é a criptomoeda usada para muitas coisas na rede Ethereum. Fundamentally, it is the only acceptable form of payment for transaction fees, and after [The Merge](/upgrades/merge), ether will be required to validate and propose blocks on Mainnet. O ether também é usado como uma forma primária de garantia nos mercados de crédito de [DeFi](/defi) como unidade de conta nos mercados NFT, como o pagamento ganho pela realização de serviços ou a venda de produtos do mundo real, entre outros.
+**Ether (ETH)** é a criptomoeda usada para muitas coisas na rede Ethereum. Fundamentalmente, é a única forma de pagamento aceitável para taxas de transação, e após [A Fusão](/upgrades/merge), o ether será necessário para validar e propor bloqueios na Rede principal. O ether também é usado como uma forma primária de garantia nos mercados de crédito de [DeFi](/defi) como unidade de conta nos mercados NFT, como o pagamento ganho pela realização de serviços ou a venda de produtos do mundo real, entre outros.
Ethereum permite que os desenvolvedores criem [**aplicativos descentralizados (dapps)**](/developers/docs/dapps), que compartilham um conjunto de capacidades de computação. Este pool compartilhado é finito, portanto Ethereum precisa de um mecanismo para determinar quem vai usá-lo. Caso contrário, um dapp poderia acidental ou maliciosamente consumir todos os recursos de rede, o que bloquearia o acesso de outros.
@@ -32,19 +32,19 @@ Portanto, mesmo que um aplicativo malicioso tenha enviado um ciclo infinito, a t
A cunhagem é o processo no qual o novo ether é criado no livro-razão do Ethereum. O protocolo Ethereum subjacente cria o novo ether. Não é possível que um usuário crie ether.
-O ether é cunhado quando um minerador cria um bloco na blockchain Ethereum. Como um incentivo aos mineradores, o protocolo concede uma recompensa em cada bloco, incrementando o equilíbrio de um endereço definido pelo mineiro do bloco. A recompensa por bloco mudou ao longo do tempo, e hoje é de 2 ETH por bloco.
+O Ether é cunhado como recompensa para cada bloco proposto e em cada ponto de verificação da época para outras atividades de validação relacionadas à obtenção de consenso. O valor total emitido depende do número de validadores e do quanto de ether eles têm colocado. Essa emissão total é dividida igualmente entre os validadores no caso ideal de que todos os validadores são honestos e estão online, mas, na realidade, ele varia com base no desempenho do validador. Cerca de 1/8 da emissão total vai para o proponente do bloco; o restante é distribuído entre os outros validadores. Os proponentes do bloco também recebem gorjetas das taxas de transação e receitas relacionadas ao MEV, mas estas vêm de ether reciclado, não de novas emissões.
## Como "queimar" ether {#burning-ether}
Além de criar ether através de recompensas de bloco, o ether pode ser destruído por um processo chamado "queima'. Quando o ether é queimado, ele é removido de circulação permanentemente.
-A queima de ether ocorre em todas as transações no Ethereum. When users pay for their transactions, a base gas fee, set by the network according to transactional demand, gets destroyed. This, coupled with variable block sizes and a maximum gas fee, simplifies transaction fee estimation on Ethereum. When network demand is high, [blocks](https://etherscan.io/block/12965263) can burn more ether than they mint, effectively offsetting ether issuance.
+A queima de ether ocorre em todas as transações no Ethereum. Quando os usuários pagam por suas transações, uma taxa base de gás, definida pela rede de acordo com a demanda transacional, é destruída. Isso, juntamente com tamanhos de blocos variáveis e uma taxa máxima de gás, simplifica a estimativa da taxa de transação no Ethereum. Quando a demanda da rede é alta, os [blocos](https://etherscan.io/block/12965263) podem queimar mais ether do que gerar, compensando efetivamente a emissão de ether.
-Burning the base fee prevents various ways the miners could manipulate it otherwise. For example, if miners got the base fee, they could include their own transactions for free and raise the base fee for everyone else. Alternatively, they could refund the base fee to some users off-chain, leading to a more opaque and complex transaction fee market.
+Queimar a taxa base previne várias maneiras pelas quais os produtores de blocos poderiam manipulá-la de outra forma. Por exemplo, se os produtores de blocos recebessem a taxa base, eles poderiam incluir suas próprias transações gratuitamente e aumentar a taxa base para todos os demais. Como alternativa, eles poderiam reembolsar a taxa base para alguns usuários fora da cadeia, gerando um mercado de taxas de transação mais opaco e complexo.
## Denominações do ether {#denominations}
-Uma vez que muitas transações no Ethereum são pequenas, o ether tem várias denominações que podem ser referenciadas por quantidades menores. Destas denominações, Wei e gwei são particularmente importantes.
+Uma vez que muitas transações no Ethereum são pequenas, o ether tem várias denominações que podem ser referenciadas por quantidades menores. Dessas denominações, Wei e gwei são particularmente importantes.
Wei é a menor quantidade possível de ether, e, como resultado, muitas implementações técnicas, como o [Ethereum Yellowpaper](https://ethereum.github.io/yellowpaper/paper.pdf), irão basear todos os cálculos em Wei.
@@ -57,7 +57,7 @@ Gwei, abreviado de giga-wei, é frequentemente usado para descrever os custos de
## Como transferir ether {#transferring-ether}
-Cada transação no Ethereum contém um campo de `value` que especifica a quantidade de ether a ser transferido, denominado em wei, para enviar do endereço do remetente para o endereço do destinatário.
+Cada transação no Ethereum contém um campo `valor` que especifica a quantidade de ether a ser transferido, denominado em wei, para enviar do endereço do remetente para o endereço do destinatário.
Quando o endereço do destinatário é um [contrato inteligente](/developers/docs/smart-contracts/), o ether transferido pode ser usado para pagar gás quando o contrato inteligente executa seu código.
@@ -65,13 +65,14 @@ Quando o endereço do destinatário é um [contrato inteligente](/developers/doc
## Como consultar saldos de ether {#querying-ether}
-Os usuários podem consultar o saldo do ether de qualquer conta [](/developers/docs/accounts/) inspecionando o campo `balance` da conta que mostra participações do ether denominadas em wei.
+Os usuários podem consultar o saldo de ether de qualquer conta [](/developers/docs/accounts/) inspecionando o campo `saldo` da conta que mostra participações de ether denominadas em wei.
-[Etherscan](https://etherscan.io) é uma ferramenta popular para consultar saldos de endereços através de um aplicativo baseado na web. Por exemplo, [esta página Etherscan](https://etherscan.io/address/0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae) mostra o saldo para a Fundação Ethereum.
+[Etherscan](https://etherscan.io) é uma ferramenta popular para consultar saldos de endereços através de um aplicativo baseado na Web. Por exemplo, [esta página Etherscan](https://etherscan.io/address/0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae) mostra o saldo da Fundação Ethereum. Os saldos das contas também podem ser consultados usando carteiras ou diretamente fazendo solicitações aos nós.
## Leitura adicional {#further-reading}
- [Definindo Ether e Ethereum](https://www.cmegroup.com/education/courses/introduction-to-ether/defining-ether-and-ethereum.html): _CME Group_
- [Ethereum Whitepaper](/whitepaper/): a proposta original para o Ethereum. Este documento inclui uma descrição do ether e os motivos subjacentes à sua criação.
+- [Calculadora Gwei](https://www.alchemy.com/gwei-calculator): use esta calculadora gwei para converter facilmente wei, gwei e ether. Basta conectar qualquer quantidade de wei, gwei ou ETH e calcular automaticamente a conversão.
_Conhece algum recurso da comunidade que o ajudou? Edite esta página e adicione-o!_
diff --git a/src/content/translations/pt-br/developers/docs/intro-to-ethereum/index.md b/src/content/translations/pt-br/developers/docs/intro-to-ethereum/index.md
index 70cd6d679d8..ebdb6fd0ed9 100644
--- a/src/content/translations/pt-br/developers/docs/intro-to-ethereum/index.md
+++ b/src/content/translations/pt-br/developers/docs/intro-to-ethereum/index.md
@@ -14,45 +14,41 @@ Uma blockchain é melhor descrita como um banco de dados público atualizado e c
Todos os computadores da rede têm de chegar a um acordo sobre cada novo bloco e sobre a cadeia como um todo. Estes computadores são conhecidos como "nós". Os nós garantem que todos interagindo com a blockchain tenham os mesmos dados. Para cumprir este acordo distribuído, as blockchains precisam de um mecanismo de consenso.
-Ethereum usa atualmente um mecanismo de consenso chamado [prova de trabalho](/developers/docs/consensus-mechanisms/pow/). Isso significa que qualquer pessoa que queira adicionar novos blocos à cadeia deve resolver um desafio difícil que exige muito poder de computação. Resolver o desafio "prova" que você gastou os recursos computacionais. Essa ação conhecida como [mineração](/developers/docs/consensus-mechanisms/pow/mining/). A mineração é comumente um processo de tentativa e erro, mas se um bloco é adicionado de maneira satisfatória, isso é recompensado com ETH.
+O Ethereum utiliza um mecanismo de consenso baseado em [prova de participação](/developers/docs/consensus-mechanisms/pos/). Qualquer um que queira adicionar novos blocos à rede deve colocar pelo menos 32 ETH no contrato de depósito e executar um software do validador. Então, eles podem ser selecionados aleatoriamente para propor blocos que outros validadores verificam e adicionam à cadeia de blocos. Nesse modelo, normalmente há apenas uma rede, porém latência de rede e comportamento desonesto podem fazer com que diversos blocos sejam inseridos em uma mesma posição. Para resolver esse problema, um algoritmo de escolha bifurcada seleciona um conjunto de blocos válidos. Os blocos selecionados são os que formam a cadeia mais pesada quanto possível, sendo que "pesada" refere-se ao número de validadores que aprovaram os blocos (balanceado de acordo com a quantidade de ETH colocada em participação por eles). Há um sistema de recompensas e punições que fortemente incentiva os participantes a serem honestos e ativos o máximo possível.
-Os novos blocos são transmitidos para os nós da rede, marcados e verificados, atualizando o estado para todos.
+Se você quiser ver como a cadeia de blocos faz hash dos dados e como o bloco anterior referencia todos os blocos anteriores, confira [esta demonstração](https://andersbrownworth.com/blockchain/blockchain) de Anders Brownworth e assista ao vídeo correspondente abaixo.
-Então, para resumir, quando você envia ETH para alguém, a transação deve ser minerada e incluída em um novo bloco. O estado atualizado é então compartilhado com toda a rede.
-
-Assista a Austin guiá-lo pelas blockchains:
-
-
-
-Se você quiser ver como a blockchain faz hash dos dados e como o bloco anterior faz referência a todos os blocos anteriores, confira [esta demonstração](https://andersbrownworth.com/blockchain/blockchain) de Anders Brownworth e assista ao vídeo correspondente abaixo.
-
-Assista a Anders explicando hashes em blockchains:
+Assista a Anders explicando hashes em cadeias de blocos:
## O que é o Ethereum? {#what-is-ethereum}
-No universo Ethereum, existe um único computador canônico (chamado de Máquina virtual Ethereum, ou EVM) cujo estado todos na rede Ethereum concordam. Todos os que participam da rede Ethereum (todos os nós do Ethereum) mantêm uma cópia do estado deste computador. Além disso, qualquer participante pode transmitir uma solicitação para que esse computador execute um cálculo arbitrária. Sempre que tal solicitação é transmitida, outros participantes da rede verificam, validam e realizam ("executam") o cálculo. Isto provoca uma mudança de estado na EVM, que é incorporado e propagado em toda a rede.
+O Ethereum é uma cadeia de blocos com um computador embutido nela. Ele é a base para criar aplicativos e organizações de maneira descentralizada, sem permissão e resistente à censura.
+
+No universo Ethereum, existe um único computador canônico (chamado de Máquina virtual Ethereum, ou EVM) cujo estado todos na rede Ethereum concordam. Todos os que participam da rede Ethereum (todos os nós do Ethereum) mantêm uma cópia do estado deste computador. Além disso, qualquer participante pode transmitir uma solicitação para que esse computador execute um cálculo arbitrário. Sempre que tal solicitação é transmitida, outros participantes da rede verificam, validam e realizam ("executam") o cálculo. Isso provoca uma mudança de estado na EVM, que é incorporada e propagada em toda a rede.
-Os pedidos de cálculo são chamados de solicitações de transação; o registro de todas as transações, bem como o estado atual da EVM, é armazenado na blockchain, que, por sua vez, é armazenada e aceita por todos os nós.
+Os pedidos de cálculo são chamados de solicitações de transação; o registro de todas as transações, bem como o estado atual da EVM, é armazenado na cadeia de blocos que, por sua vez, é armazenada e aceita por todos os nós.
-Os mecanismos criptográficos garantem que uma vez que as transações são verificadas como válidas e adicionadas à blockchain, elas não podem ser manipuladas mais tarde. Os mesmos mecanismos também garantem que todas as transações sejam assinadas e executadas com "permissões" apropriadas (ninguém mais além de Alice pode enviar ativos digitais da conta dela).
+Os mecanismos criptográficos garantem que, uma vez que as transações são verificadas como válidas e adicionadas à cadeia de blocos, elas não podem ser manipuladas mais tarde. Os mesmos mecanismos também garantem que todas as transações sejam assinadas e executadas com "permissões" apropriadas (ninguém mais além de Alice pode enviar ativos digitais da conta dela).
## O que é ether? {#what-is-ether}
-**Ether (ETH)** é a criptomoeda nativa do Ethereum. O propósito da ether é permitir a existência de um mercado para a computação. Tal mercado fornece um incentivo econômico para os participantes verificarem ou executarem solicitações de transação e fornecerem recursos computacionais para a rede.
+**Ether (ETH)** é a criptomoeda nativa do Ethereum. O objetivo do ETH é possibilitar um mercado para cálculo. Tal mercado fornece um incentivo econômico para os participantes verificarem ou executarem solicitações de transação e fornecerem recursos computacionais para a rede.
+
+Qualquer participante que transmita uma solicitação de transação também deve oferecer alguma quantidade de ETH à rede como recompensa. A rede concederá essa recompensa a quem eventualmente fizer o trabalho de verificar a transação, executando-a, confirmando-a na cadeia de blocos e transmitindo-a para a rede.
-Qualquer participante que transmita um pedido de transação também deve oferecer uma quantidade de espaço para a rede como recompensa. Essa recompensa será concedida a quem eventualmente realizar o trabalho de verificação da transação, executanda-o, comprometendo-a à blockchain e transmitindo-a para a rede.
+O valor de ETH pago corresponde aos recursos necessários para fazer o cálculo. Essas recompensas também impedem que participantes mal-intencionados entupam intencionalmente a rede, ao solicitar a execução de computação infinita ou outros scripts com uso intensivo de recursos, pois esses participantes devem pagar pelos recursos de cálculo.
-A quantidade de ether pago corresponde ao tempo necessário para fazer o cálculo. Estas recompensas também evitam que participantes maliciosos congestionem a rede intencionalmente ao solicitar a execução de cálculos infinitos ou otros scripts que consomem muitos recursos, já que esses participantes deverão pagar também pelo tempo necessário para completar os cálculos.
+O ETH também é usado para fornecer segurança criptoeconômica à rede de três maneiras principais: 1) é usado como meio de recompensar validadores que propõem bloqueios ou denunciam comportamento desonesto de outros validadores; 2) é envolvido pelos validadores, atuando como garantia contra comportamento desonesto – se os validadores tentarem se comportar mal, seu ETH pode ser destruído; 3) é usado para ponderar o peso dos "votos" para novos blocos propostos, alimentando a parte de escolha da bifurcação do mecanismo de consenso.
## O que são contratos inteligentes? {#what-are-smart-contracts}
-Na prática, os participantes não escrevem um novo código toda vez que solicitam um cálculo da EVM. Em vez disso, os desenvolvedores de aplicativos carregam os programas (trechos de código reutilizáveis) para serem armazenados na EVM, para que os usuários solicitem a execução desses trechos de código com parâmetros variáveis. Precisamente, chamamos de contratos inteligentes a todos esses programas que são enviados e executados na rede.
+Na prática, os participantes não escrevem um novo código toda vez que querem solicitar um cálculo da EVM. Em vez disso, os desenvolvedores de aplicativos carregam os programas (trechos de código reutilizáveis) para serem armazenados na EVM, para que os usuários solicitem a execução desses trechos de código com parâmetros variáveis. Precisamente, chamamos de contratos inteligentes a todos esses programas que são enviados e executados na rede.
-Em termos gerais, você pode pensar em um contrato inteligente como uma espécie de máquina de venda automática: um script que, quando chamado com determinados parâmetros, executa algumas ações ou cálculos se certas condições forem satisfeitas. Por exemplo, um simples contrato inteligente do fornecedor poderia criar e atribuir a propriedade de um ativo digital se o requerente enviar ether para um destinatário específico.
+Em um nível muito básico, você pode pensar em um contrato inteligente como uma espécie de máquina de venda automática: um script que, quando chamado com determinados parâmetros, executa algumas ações ou cálculos se certas condições forem satisfeitas. Por exemplo, um simples contrato inteligente do fornecedor poderia criar e atribuir a propriedade de um ativo digital se o chamador enviar ETH para um destinatário específico.
-Qualquer desenvolvedor pode criar um contrato inteligente e torná-lo público na rede, usar a blockchain como sua camada de dados, por uma taxa paga à rede. Qualquer usuário pode chamar um contrato inteligente para executar seu código, sendo necessário pagar uma nova taxa à rede.
+Qualquer desenvolvedor pode criar um contrato inteligente e torná-lo público na rede, usando a cadeia de blocos como sua camada de dados, por uma taxa paga à rede. Qualquer usuário pode chamar um contrato inteligente para executar seu código, sendo necessário pagar uma nova taxa à rede.
Assim, com contratos inteligentes, os desenvolvedores podem criar e implantar arbitrariamente aplicativos e serviços voltados para usuários: mercados, instrumentos financeiros, jogos, etc.
@@ -60,11 +56,11 @@ Assim, com contratos inteligentes, os desenvolvedores podem criar e implantar ar
### Blockchain {#blockchain}
-A sequência de todos os blocos que foram registrados na rede Ethereum no histórico da rede. Nome dado porque cada bloco contém uma referência ao bloco anterior, o que nos ajuda a manter uma ordem sobre todos os blocos (e, portanto, um histórico preciso).
+A sequência de todos os blocos que foram registrados na rede Ethereum no histórico da rede. Assim chamado porque cada bloco contém uma referência ao bloco anterior, o que nos ajuda a manter uma ordenação sobre todos os blocos (e, portanto, sobre o histórico preciso).
### ETH {#eth}
-A criptomoeda nativa do Ethereum. Os usuários pagam ehter para que outros usuários atendam as solicitações de execução de seu código.
+**Ether (ETH)** é a criptomoeda nativa do Ethereum. Os usuários pagam ETH a outros usuários para que suas solicitações de execução de código sejam atendidas.
[Mais sobre ETH](/developers/docs/intro-to-ether/)
@@ -76,21 +72,21 @@ A Máquina Virtual Ethereum é o computador virtual global em que o estado de ca
### Nós {#nodes}
-Máquinas da vida real que estão armazenando o estado da EVM. Os nós se comunicam entre eles para propagar informações sobre o estado da EVM e novas mudanças de estado. Qualquer usuário também pode solicitar execução do código através da solicitação de execução do código de um nó. A própria rede Ethereum é a agregada de todos os nós do Ethereum e suas comunicações.
+Máquinas da vida real que estão armazenando o estado da EVM. Os nós se comunicam entre eles para propagar informações sobre o estado da EVM e novas mudanças de estado. Qualquer usuário também pode solicitar execução do código através da solicitação de execução do código de um nó. A própria rede Ethereum é a agregação de todos os nós do Ethereum e suas comunicações.
[Mais sobre nós](/developers/docs/nodes-and-clients/)
### Contas {#accounts}
-Onde o ether é armazenado. Os usuários podem abrir contas, depositar ether nas contas e transferir ether de suas contas para outros usuários. Contas e saldos de conta são armazenados em uma tabela grande na EVM, fazendo parte do estado geral da EVM.
+Onde o ETH é armazenado. Os usuários podem inicializar contas, depositar ETH nas contas e transferir ETH de suas contas para outros usuários. Contas e saldos de conta são armazenados em uma tabela grande na EVM, fazendo parte do estado geral da EVM.
[Mais sobre contas](/developers/docs/accounts/)
### Transações {#transactions}
-Um "pedido de transação" é o termo formal para um pedido de execução de código na EVM, e uma "transação" é uma solicitação de transação cumprida e a mudança associada no estado da EVM. Qualquer usuário pode transmitir um pedido de transação para a rede a partir de um nó. Para que a solicitação de transação afete realmente o estado da EVM acordado, ela deve ser validada, executada e "comprometida à rede" por algum outro nó. A execução de qualquer código causa uma mudança de estado na EVM; após a aprovação, essa alteração de estado é transmitida para todos os nós da rede. Alguns exemplos de transações:
+Um "pedido de transação" é o termo formal para um pedido de execução de código na EVM, e uma "transação" é uma solicitação de transação cumprida e a mudança associada no estado da EVM. Qualquer usuário pode transmitir um pedido de transação para a rede a partir de um nó. Para que a solicitação de transação afete realmente o estado da EVM acordado, ela deve ser validada, executada e "comprometida com a rede" por algum outro nó. A execução de qualquer código causa uma mudança de estado na EVM; após a aprovação, essa alteração de estado é transmitida para todos os nós da rede. Alguns exemplos de transações:
-- Enviar uma quantidade "X" de ether da minha conta para a conta de Alice.
+- Envie X ETH da minha conta para a conta da Alice.
- Publicar algum código de contrato inteligente no estado da EVM.
- Executar o código do contrato inteligente no endereço X da EVM, com argumentos Y.
@@ -98,13 +94,13 @@ Um "pedido de transação" é o termo formal para um pedido de execução de có
### Blocos {#blocks}
-O volume de transações é muito alto, portanto as transações são "autorizadas" em lotes ou blocos. Os blocos geralmente contêm dezenas de centenas de transações.
+O volume de transações é muito alto, portanto, as transações são "autorizadas" em lotes ou blocos. Os blocos geralmente contêm dezenas de centenas de transações.
[Mais sobre blocos](/developers/docs/blocks/)
### Smart Contracts {#smart-contracts}
-Um trecho de código reutilizável (um programa) que um desenvolvedor publica no estado da EVM. Qualquer um pode solicitar que o código de contrato inteligente seja executado fazendo uma solicitação de transação. Como desenvolvedores podem escrever aplicativos executáveis arbitrários na EVM (jogos, mercados, instrumentos financeiros, etc) ao publicar contratos inteligentes, esses geralmente também são chamados de [dapps, ou apps descentralizados](/developers/docs/dapps/).
+Um trecho de código reutilizável (um programa) que um desenvolvedor publica no estado da EVM. Qualquer um pode solicitar que o código de contrato inteligente seja executado fazendo uma solicitação de transação. Como desenvolvedores podem escrever aplicativos executáveis arbitrários na EVM (jogos, mercados, instrumentos financeiros, etc.) ao publicar contratos inteligentes, esses geralmente também são chamados de [dapps, ou apps descentralizados](/developers/docs/dapps/).
[Mais sobre contratos inteligentes](/developers/docs/smart-contracts/)
@@ -113,8 +109,8 @@ Um trecho de código reutilizável (um programa) que um desenvolvedor publica no
- [Whitepaper do Ethereum](/whitepaper/)
- [Como o Ethereum funciona realmente?](https://www.preethikasireddy.com/post/how-does-ethereum-work-anyway) - _Preethi Kasireddy_
-_Conhece algum recurso da comunidade que o ajudou? Edite esta página e adicione-o!_
+_Conhece um recurso da comunidade que ajudou você? Edite essa página e adicione-o!_
## Tutoriais relacionados {#related-tutorials}
-- [Um guia do desenvolvedor para Ethereum, parte 1](/developers/tutorials/a-developers-guide-to-ethereum-part-one/) _: uma exploração muito amigável para iniciantes do Ethereum usando Python e web3.py_
+- [Um guia do desenvolvedor para Ethereum, parte 1](/developers/tutorials/a-developers-guide-to-ethereum-part-one/) _– uma exploração muito simples para iniciantes do Ethereum usando Python e web3.py_
diff --git a/src/content/translations/pt-br/developers/docs/networks/index.md b/src/content/translations/pt-br/developers/docs/networks/index.md
index 311277bb0df..91096103011 100644
--- a/src/content/translations/pt-br/developers/docs/networks/index.md
+++ b/src/content/translations/pt-br/developers/docs/networks/index.md
@@ -4,111 +4,129 @@ description: Uma visão geral das redes Ethereum e onde obter ether (ETH) da red
lang: pt-br
---
-Como o Ethereum é um protocolo, isso significa que pode haver várias "redes" independentes em conformidade com este protocolo que não interajam entre si.
+Redes são ambientes diferentes do Ethereum que você pode acessar para desenvolvimento, teste ou produção. Como o Ethereum é um protocolo, podem existir várias "redes" independentes em conformidade com o protocolo sem interagir umas com as outras.
-Redes são ambientes de Ethereum diferentes que você pode acessar para desenvolvimento, teste ou produção. Sua conta de Ethereum funcionará em diferentes redes, mas o saldo da conta e o histórico de transações não serão transferidos desde a rede principal de Ethereum. Para fins de teste, é útil saber quais redes estão disponíveis e como obter ETH para a rede de testes, para que você possa começar a testá-lo.
+Sua conta Ethereum funcionará nas diferentes redes, mas o saldo da sua conta e o histórico de transações não serão transferidos da rede Ethereum principal. Para fins de teste, é útil saber quais redes estão disponíveis e como obter a rede de testes ETH para brincar.
## Pré-requisitos {#prerequisites}
-Você deveria entender os fundamentos básicos do Ethereum antes de ler sobre as diferentes redes, pois as redes de teste oferecem uma versão econômica e segura do Ethereum para começar a testar. Veja nossa [introdução ao Ethereum](/developers/docs/intro-to-ethereum/).
+Você deveria entender as [noções básicas do Ethereum](/developers/docs/intro-to-ethereum/) antes de ler sobre as diferentes redes, pois as redes de teste lhe darão uma versão barata e segura do Ethereum para brincar.
## Redes públicas {#public-networks}
-As redes públicas são acessíveis a qualquer pessoa no mundo com uma conexão à Internet. Qualquer um pode ler ou criar transações em uma blockchain pública e validar as transações que estão sendo executadas. O acordo sobre as transações e o estado da rede é decidido por um consenso entre pares.
+As redes públicas são acessíveis a qualquer pessoa no mundo com uma conexão à Internet. Qualquer um pode ler ou criar transações em uma blockchain pública e validar as transações que estão sendo executadas. O consenso entre os pares decide sobre a inclusão de transações e o estado da rede.
-### Rede principal {#mainnet}
+### Rede Principal Ethereum {#ethereum-mainnet}
A rede principal é a blockchain de produção Ethereum pública primária, onde as transações de valor real ocorrem no livro-razão distribuído.
Quando as pessoas e as exchanges discutem os preços do ETH, eles estão falando sobre a rede principal ETH.
-### Redes de teste {#testnets}
+### Redes de Testes Ethereum {#ethereum-testnets}
Além da rede principal, existem redes de teste públicas. Essas são redes usadas por desenvolvedores de protocolo ou desenvolvedores de contrato inteligente para testar as atualizações de protocolo e também os contratos inteligentes em potencial em um ambiente de produção antes da implantação na rede principal. Pense nisso como um análogo a servidores de produção versus servidores de teste.
-Geralmente, é importante testar qualquer código de contrato que você escreve em uma rede de teste antes de implantar na rede principal. Se você estiver criando um dapp que se integra a contratos inteligentes existentes, a maioria dos projetos tem cópias implantadas em redes de teste com as quais você pode interagir.
+Você deve testar qualquer código de contrato que você escrever em uma rede de testes antes de publicar na Rede principal. Entre os dapps que se integram com contratos inteligentes existentes, a maioria dos projetos tem cópias publicadas em redes de teste.
-A maioria das redes de teste usa um mecanismo de consenso de prova de autoridade. Isso significa que um pequeno número de nós é escolhido para validar as transações e criar novos blocos, incluindo sua identidade no processo. É difícil incentivar a mineração em uma rede de teste de prova de trabalho que pode deixá-la vulnerável.
+A maioria das redes de teste começou usando um mecanismo de consenso de prova de autoridade. Isso significa que um pequeno número de nós é escolhido para validar as transações e criar novos blocos, incluindo sua identidade no processo. Alternativamente, algumas redes de teste começaram usando um mecanismo de consenso de prova de trabalho com apenas alguns mineradores autorizados. No entanto, em preparação para [A Fusão](/upgrades/merge), essas redes de teste passaram por suas próprias transições para a prova de participação, oferecendo a oportunidade de realizar vários "ensaios gerais" antes que os desenvolvedores fundissem a rede principal do Ethereum. As redes de teste do Ethereum agora são prova de participação, assim como a rede principal do Ethereum.
-O ETH em redes de teste não tem valor real; portanto, não há mercados para ETH de redes de teste. Como você precisa do ETH para interagir de fato com o Ethereum, a maioria das pessoas obtém o ETH via "faucets". A maioria dos faucets são aplicativos web onde você pode inserir um endereço para o qual deseja que o ETH seja enviado.
+O ETH em redes de teste não tem valor real; portanto, não há mercados para ETH de redes de teste. Como você precisa do ETH para interagir de fato com o Ethereum, a maioria das pessoas obtém o ETH via "torneiras". A maioria das torneiras são aplicativos Web em que você pode inserir um endereço para o qual deseja que o ETH seja enviado.
-#### Arbitrum Rinkeby {#arbitrum-rinkeby}
+#### Goerli {#goerli}
-Uma rede de teste para [Arbitrum](https://arbitrum.io/).
+Goerli é uma rede de testes de prova de participação. É esperado que ela seja mantida a longo prazo como uma rede de testes estável para desenvolvedores de aplicativos. Antes da fusão com a rede de testes, Goerli era uma rede de testes de prova de autoridade.
-##### Faucets Arbitrum Rinkeby
+- [Website](https://goerli.net/)
+- [GitHub](https://github.com/goerli/testnet)
+- [Etherscan](https://goerli.etherscan.io)
-- [FaucETH](https://fauceth.komputing.org)(Faucet multicadeia sem a necessidade de uma conta social)
-- [Faucet Chainlink](https://faucets.chain.link/)
-- [Faucet Paradigm](https://faucet.paradigm.xyz/)
+##### Torneiras Goerli
-#### Görli {#goerli}
+- [Torneira Goerli](https://faucet.goerli.mudit.blog/)
+- [Torneira Chainlink](https://faucets.chain.link/)
+- [Torneira Alchemy Goerli](https://goerlifaucet.com/)
-Uma rede de teste baseada em prova de autoridade que funciona em todos os clientes.
+#### Sepolia {#sepolia}
-##### Faucets Görli
+Sepolia é uma rede de teste de prova de participação. Embora a Sepolia ainda esteja funcionando, no momento não está planejado que ela seja mantida a longo prazo. Antes de passar pela Fusão em junho de 2022, a Sepolia era uma rede de testes de prova de trabalho.
-- [Faucet Görli](https://faucet.goerli.mudit.blog/)
-- [Faucet Chainlink](https://faucets.chain.link/)
-- [Alchemy Goerli Faucet](https://goerlifaucet.com/)
+- [Website](https://sepolia.dev/)
+- [GitHub](https://github.com/goerli/sepolia)
+- [Otterscan](https://sepolia.otterscan.io/)
+- [Etherscan](https://sepolia.etherscan.io)
+
+##### Torneiras Sepolia
-#### Kintsugi {#kintsugi}
+- [Torneira Sepolia](https://faucet.sepolia.dev/)
+- [FaucETH](https://fauceth.komputing.org)
-Uma rede de teste para fusão do Ethereum.
+#### Ropsten _(obsoleta)_ {#ropsten}
-##### Faucets Kintsugi
+_Observe que [a rede de testes Ropsten está obsoleta](https://github.com/ethereum/pm/issues/460) e não receberá mais atualizações de protocolo. Considere migrar seus aplicativos para Sepolia or Goerli._
-- [FaucETH](https://fauceth.komputing.org)(Faucet multicadeia sem a necessidade de uma conta social)
-- [Faucets Kintsugi](https://faucet.kintsugi.themerge.dev/)
+Ropsten é uma rede de testes de prova de participação. Ropsten será descontinuada no final de 2022. Antes de passar pela Fusão em maio de 2022, a Ropsten era uma rede de testes de prova de trabalho.
-#### Kovan {#kovan}
+##### Torneira Ropsten
-Uma rede de teste baseada em prova de autoridade para aqueles que executam clientes OpenEthereum.
+- [FaucETH](https://fauceth.komputing.org) (torneira multi-cadeia sem a necessidade de conta social)
+- [Faucet Paradigm](https://faucet.paradigm.xyz/)
-##### Faucet Kovan
+#### Rinkeby _(descontinuada)_ {#rinkeby}
-- [FaucETH](https://fauceth.komputing.org)(Faucet multicadeia sem a necessidade de uma conta social)
-- [Faucet Kovan](https://faucet.kovan.network/)
+_Observação: [a rede de testes Rinkeby foi descontinuada](https://github.com/ethereum/pm/issues/460) e não receberá mais atualizações de protocolo. Por favor, considere migrar seus aplicativos para Sepolia ou Goerli._
+
+Uma rede de testes de prova de autoridade para aqueles que executam versões antigas do cliente Geth.
+
+##### Torneira Rinkeby
+
+- [FaucETH](https://fauceth.komputing.org) (torneira multi-cadeia sem a necessidade de conta social)
+- [Faucet Alchemy](https://RinkebyFaucet.com)
- [Faucet Chainlink](https://faucets.chain.link/)
- [Faucet Paradigm](https://faucet.paradigm.xyz/)
+- [Faucet Rinkeby](https://faucet.rinkeby.io/)
-#### Optimistic Kovan {#optimistic-kovan}
+#### Kovan _(descontinuada)_ {#kovan}
-Uma rede de teste para [Optimism](https://www.optimism.io/).
+_Observação: [a rede de teste Kovan foi descontinuada](https://github.com/ethereum/pm/issues/460) e não receberá mais atualizações de protocolo. Considere migrar seus aplicativos para Sepolia ou Goerli._
-##### Faucets Optimistic Kovan
+Uma rede de testes de prova de autoridade muito antiga para aqueles que ainda executam clientes da OpenEthereum.
-- [FaucETH](https://fauceth.komputing.org)(Faucet multicadeia sem a necessidade de uma conta social)
-- [Faucet Paradigm](https://faucet.paradigm.xyz/)
+##### Troneira Kovan
-#### Rinkeby {#rinkeby}
+- [FaucETH](https://fauceth.komputing.org) (torneira multi-cadeia sem a necessidade de conta social)
+- [Torneira Chainlink](https://faucets.chain.link/)
+- [Torneira Paradigm](https://faucet.paradigm.xyz/)
-Uma rede de teste baseada em prova de autoridade para aqueles que executam o cliente Geth.
+### Redes de testes de camada 2 {#layer-2-testnets}
-##### Faucet Rinkeby
+[Camada 2 (L2)](/layer-2/) é um termo coletivo para descrever um conjunto específico de soluções de escalabilidade Ethereum. Uma camada 2 é uma cadeia de blocos separada que estende o Ethereum e herda as garantias de segurança do Ethereum. As redes de teste de camada 2 geralmente são fortemente acopladas às redes de testes públicas do Ethereum.
-- [FaucETH](https://fauceth.komputing.org)(Faucet multicadeia sem a necessidade de uma conta social)
-- [Faucet Alchemy](https://RinkebyFaucet.com)
-- [Faucet Chainlink](https://faucets.chain.link/)
-- [Faucet Paradigm](https://faucet.paradigm.xyz/)
-- [Faucet Rinkeby](https://faucet.rinkeby.io/)
+#### Arbitrum Rinkeby {#arbitrum-rinkeby}
-#### Ropsten {#ropsten}
+Uma rede de testes para [Arbitrum](https://arbitrum.io/).
-Uma rede de teste baseada em prova de trabalho. Portanto, esta é rede de teste mais semelhante ao Ethereum.
+Torneiras Arbitrum Rinkeby:
-##### Faucet Ropsten
+- [FaucETH](https://fauceth.komputing.org) (torneira multi-cadeia sem a necessidade de conta social)
+- [Torneira Chainlink](https://faucets.chain.link/)
+- [Torneira Paradigm](https://faucet.paradigm.xyz/)
-- [FaucETH](https://fauceth.komputing.org)(Faucet multicadeia sem a necessidade de uma conta social)
-- [Faucet Paradigm](https://faucet.paradigm.xyz/)
+#### Kovan Otimista {#optimistic-kovan}
+
+Uma rede de testes para [Optimism](https://www.optimism.io/).
+
+Torneiras Optimistic Kovan:
+
+- [FaucETH](https://fauceth.komputing.org) (torneira multi-cadeia sem a necessidade de conta social)
+- [Torneira Paradigm](https://faucet.paradigm.xyz/)
## Redes privadas {#private-networks}
-Uma rede Ethereum é uma rede privada se seus nós não estiverem conectados a uma rede pública (ex: rede principal ou uma rede de testes). Neste contexto, privado significa apenas reservado ou isolado, em vez de protegido ou seguro.
+Uma rede Ethereum é uma rede privada se seus nós não estiverem conectados a uma rede pública (ex: Rede principal e rede de testes). Neste contexto, privado significa apenas reservado ou isolado, em vez de protegido ou seguro.
### Redes de desenvolvimento {#development-networks}
-Para desenvolver um aplicativo Ethereum, você deve executá-lo em uma rede privada para ver como funciona antes de implantá-lo. Semelhante a como você cria um servidor local em seu computador para desenvolvimento web, você pode criar uma instância local de blockchain para testar seu dapp. Isso permite uma iteração muito mais rápida do que uma rede de teste pública.
+Para desenvolver um aplicativo Ethereum, você deve executá-lo em uma rede privada para ver como funciona antes de implantá-lo. Tal como você pode cria um servidor local em seu computador para desenvolvimento Web, você pode criar uma instância local de cadeia de blocos para testar seu dapp. Isso permite uma iteração muito mais rápida do que uma rede de testes pública.
Existem projetos e ferramentas dedicadas a ajudá-lo com isso. Saiba mais sobre [redes de desenvolvimento](/developers/docs/development-networks/).
@@ -116,13 +134,13 @@ Existem projetos e ferramentas dedicadas a ajudá-lo com isso. Saiba mais sobre
O processo de consenso é controlado por um conjunto predefinido de nós confiáveis. Por exemplo, uma rede privada de instituições acadêmicas conhecidas, cada uma administrando um único nó, e os blocos são validados por um limite de signatários dentro da rede.
-Se uma rede Ethereum pública é como a Internet pública, você pode pensar ver a rede de consórcio como uma intranet privada.
+Se uma rede pública Ethereum é como a internet pública, uma rede de consórcio é como uma intranet privada.
## Ferramentas relacionadas {#related-tools}
-- [Chainlist](https://chainlist.org/) _: lista de redes EVM para conectar carteiras e fornecedores aos identificadores de cadeia e rede apropriados_
-- [EVM-based Chains](https://github.com/ethereum-lists/chains) _: repositório de GitHub com metadatos de cadeias que alimenta a Chainlist_
+- [Chainlist](https://chainlist.org/) _Lista de redes EVM para conectar carteiras e fornecedores aos identificadores de cadeia e rede apropriados_
+- [/Cadeias baseadas na EVM](https://github.com/ethereum-lists/chains) _repositório do GitHub com metadatos de cadeias que alimenta a Chainlist_
## Leitura adicional {#further-reading}
-_Conhece algum recurso da comunidade que o ajudou? Edite esta página e adicione-o!_
+- [A evolução das redes de testes Ethereum](https://etherworld.co/2022/08/19/the-evolution-of-ethereum-testnet/)
diff --git a/src/content/translations/pt-br/developers/docs/nodes-and-clients/client-diversity/index.md b/src/content/translations/pt-br/developers/docs/nodes-and-clients/client-diversity/index.md
new file mode 100644
index 00000000000..7c08ab07666
--- /dev/null
+++ b/src/content/translations/pt-br/developers/docs/nodes-and-clients/client-diversity/index.md
@@ -0,0 +1,112 @@
+---
+title: Diversidade dos clientes
+description: Uma explicação de alto nível sobre a importância da diversidade de clientes do Ethereum.
+lang: pt-br
+sidebarDepth: 2
+---
+
+O comportamento de um nó Ethereum é controlado pelo software do cliente que ele executa. Existem vários clientes Ethereum em nível de produção, cada um desenvolvido e mantido em diferentes idiomas por equipes separadas. Os clientes são construídos para uma especificação comum que garante que os clientes se comuniquem perfeitamente entre si e tenham a mesma funcionalidade e forneçam uma experiência de usuário equivalente. No entanto, no momento, a distribuição de clientes entre os nós não é igual o suficiente para realizar essa fortificação de rede em todo o seu potencial. O ideal é que os usuários se dividam de forma aproximadamente igualitária entre os vários clientes para trazer o máximo de diversidade de clientes possível para a rede.
+
+## Pré-requisitos {#prerequisites}
+
+Se você ainda não entende o que são nós e clientes, confira [nós e clientes](/developers/docs/nodes-and-clients/). As camadas de [execução](/glossary/#execution-layer) e [consenso](/glossary/#consensus-layer) estão definidas no glossário.
+
+## Por que existem vários clientes? {#why-multiple-clients}
+
+Vários clientes desenvolvidos e mantidos de forma independente existem porque a diversidade do cliente torna a rede mais resiliente a ataques e bugs. Vários clientes são uma força única para o Ethereum – outras cadeias de blocos dependem da infalibilidade de um único cliente. No entanto, não basta simplesmente ter vários clientes disponíveis, eles têm que ser adotados pela comunidade e o total de nós ativos distribuídos de forma relativamente uniforme entre eles.
+
+## Por que a diversidade de clientes é importante? {#client-diversity-importance}
+
+Ter muitos clientes desenvolvidos e mantidos de forma independente é vital para a saúde de uma rede descentralizada. Vamos explorar as razões do porquê.
+
+### Bugs {#bugs}
+
+Um bug em um cliente individual é um risco menor para a rede ao representar uma minoria de nós Ethereum. Com uma distribuição aproximadamente uniforme de nós entre muitos clientes, a probabilidade de a maioria dos clientes sofrer de um problema compartilhado é pequena e, como resultado, a rede é mais robusta.
+
+### Resiliência a ataques {#resilience}
+
+A diversidade de clientes também oferece resiliência a ataques. Por exemplo, um ataque que [engana um determinado cliente](https://twitter.com/vdWijden/status/1437712249926393858) em um determinado ramo da cadeia, provavelmente não será bem-sucedido porque é improvável que outros clientes sejam explorados da mesma forma e a cadeia canônica permanece incorruptível. A baixa diversidade de clientes aumenta o risco associado a um hack no cliente dominante. A diversidade de clientes já provou ser uma defesa importante contra ataques maliciosos na rede, por exemplo, o ataque de negação de serviço do Shanghai em 2016 foi possível porque os invasores foram capazes de enganar o cliente dominante (Geth) para executar uma operação lenta de E/S de disco dezenas de milhares de vezes por bloco. Como clientes alternativos também estavam online e não compartilharam a vulnerabilidade, o Ethereum foi capaz de resistir ao ataque e continuar operando enquanto a vulnerabilidade no Geth foi corrigida.
+
+### Finalidade da prova de participação {#finality}
+
+Um bug em um cliente de consenso com mais de 33% dos nós Ethereum poderia impedir a finalização da Beacon Chain, o que significa que os usuários não podem confiar que as transações não sejam revertidas ou alteradas em algum momento. Isso seria muito problemático para muitos dos aplicativos construídos em cima do Ethereum, particularmente o DeFi.
+
+ Pior ainda, um bug crítico em um cliente com uma maioria de dois terços poderia fazer com que a cadeia se dividisse e finalizasse incorretamente, gerando um grande conjunto de validadores que ficam presos em uma cadeia inválida. Se quiserem voltar a integrar à cadeia correta, esses validadores enfrentam cortes ou uma lenta e cara retirada e reativação voluntária. A magnitude de uma escala de remoção com o número de nós culpáveis com uma maioria de dois terços reduzido ao máximo (32 ETH).
+
+Embora estes sejam cenários improváveis, o ecossistema Ethereum pode mitigar seus riscos nivelando a distribuição de clientes entre os nós ativos. Idealmente, nenhum cliente de consenso chegaria a uma participação de 33% dos nós totais.
+
+### Responsabilidade compartilhada {#responsibility}
+
+Há também um custo humano para ter a maioria dos clientes. Isso coloca excesso de tensão e responsabilidade em uma pequena equipe de desenvolvimento. Quanto menor a diversidade de clientes, maior a carga de responsabilidade para os desenvolvedores que mantêm a maioria dos clientes. Promover essa responsabilidade em várias equipes é bom tanto para a saúde da rede de nós do Ethereum quanto para sua rede de pessoas.
+
+## Diversidade do cliente atual {#current-client-diversity}
+
+![Gráfico de pizza mostrando a diversidade do cliente](./client-diversity.png) _Dados do diagrama de [ethernodes.org](https://ethernodes.org) e [clientdiversity.org](https://clientdiversity.org/)_
+
+Os dois gráficos de pizza acima mostram imagens da diversidade atual do cliente para as camadas de execução e consenso (no momento da escrita em janeiro de 2022). A camada de execução é dominada esmagadoramente por [Geth](https://geth.ethereum.org/), com [Open Ethereum](https://openethereum.github.io/) a um segundo de distância, [Erigon](https://github.com/ledgerwatch/erigon) em terceiro e [Nethermind](https://nethermind.io/) em quarto, com outros clientes compostos por menos de 1% da rede. O cliente mais comumente usado na camada de consenso – [Prysm](https://prysmaticlabs.com/#projects) – não é tão dominante quanto o Geth, mas ainda representa mais de 60% da rede. [Lighthouse](https://lighthouse.sigmaprime.io/) e [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) compõem ~20% e ~14% respectivamente, e outros clientes são raramente usados.
+
+Os dados da camada de execução foram obtidos da [Ethernodes](https://ethernodes.org) em 23/01/22. Os dados para clientes de consenso foram obtidos de [Michael Sproul](https://github.com/sigp/blockprint). Os dados do cliente de consenso são mais difíceis de obter porque os clientes da Beacon Chain nem sempre têm vestígios claros que podem ser usados para identificá-los. Os dados foram gerados usando um algoritmo de classificação que confunde às vezes alguns dos clientes minoritários (consulte [aqui](https://twitter.com/sproulM_/status/1440512518242197516) para obter mais detalhes). No diagrama acima, essas classificações ambíguas são tratadas com um rótulo (por exemplo, Nimbus/Teku). No entanto, é claro que a maior parte da rede está executando o Prysm. Os dados são um retrato sobre um conjunto fixo de blocos (neste caso, blocos Beacon nos espaços 2048001 a 2164916) e o domínio do Prysm às vezes foi maior, excedendo 68%. Apesar de serem apenas capturas, os valores no diagrama fornecem uma boa noção geral do estado atual da diversidade do cliente.
+
+Os dados da diversidade do cliente atualizados para a camada de consenso agora estão disponíveis em [clientdiversity.org](https://clientdiversity.org/).
+
+## Camada de execução {#execution-layer}
+
+Até agora, a conversação em torno da diversidade do cliente tem se concentrado principalmente na camada de consenso. No entanto, o cliente de execução [Geth](https://geth.ethereum.org) atualmente representa cerca de 85% de todos os nós. Essa porcentagem é problemática pelos mesmos motivos dos clientes de consenso. Por exemplo, um bug no Geth afetando a manipulação de transações ou a construção de cargas de execução pode fazer com que clientes de consenso finalizem transações problemáticas ou com bugs. Portanto, o Ethereum seria mais saudável com uma distribuição mais uniforme dos clientes de execução, idealmente sem nenhum cliente representando mais de 33% da rede.
+
+## Use um cliente minoritário {#use-minority-client}
+
+Endereçar a diversidade do cliente requer mais do que usuários individuais para escolher clientes minoritários – requer pools de mineração/validadores e instituições como os principais dapps e exchanges para mudar também os clientes. No entanto, todos os usuários podem fazer sua parte para reparar o desequilíbrio atual e normalizar o uso de todo o software Ethereum disponível. Após A Fusão, todos os operadores de nó serão obrigados a executar um cliente de execução e um cliente de consenso. Escolher combinações dos clientes sugeridos abaixo ajudará a aumentar a diversidade do cliente.
+
+### Clientes de execução {#execution-clients}
+
+[Besu](https://www.hyperledger.org/use/besu)
+
+[Nethermind](https://downloads.nethermind.io/)
+
+[Erigon](https://github.com/ledgerwatch/erigon)
+
+[Akula](https://akula.app)
+
+[Go-Ethereum](https://geth.ethereum.org/)
+
+### Clientes de consenso {#consensus-clients}
+
+[Nimbus](https://nimbus.team/)
+
+[Lighthouse](https://github.com/sigp/lighthouse)
+
+[Teku](https://consensys.net/knowledge-base/ethereum-2/teku/)
+
+[Lodestar](https://github.com/ChainSafe/lodestar) – _em análise e auditoria_
+
+Os usuários técnicos podem ajudar a acelerar esse processo escrevendo mais tutoriais e documentações para clientes minoritários e encorajando seus pares operacionais de nó a migrar para longe dos clientes dominantes. Guias para mudar para um cliente de consenso minoritário estão disponíveis em [clientdiversity.org](https://clientdiversity.org/).
+
+## Painéis de diversidade de clientes {#client-diversity-dashboards}
+
+Vários painéis fornecem estatísticas de diversidade de cliente em tempo real para a camada de execução e consenso.
+
+**Camada de consenso:**
+
+- [Rated.network](https://www.rated.network/)
+- [clientdiversity.org](https://clientdiversity.org/)
+- [pools.invis.cloud](https://pools.invis.cloud/)
+- [slashed.info](https://www.slashed.info/)
+
+**Camada de execução:**
+
+- [Ethernodes](https://ethernodes.org/)
+
+## Leitura adicional {#further-reading}
+
+- [Diversidade de clientes na camada de consenso do Ethereum](https://mirror.xyz/jmcook.eth/S7ONEka_0RgtKTZ3-dakPmAHQNPvuj15nh0YGKPFriA)
+- [A Fusão do Ethereume: execute o cliente majoritário por sua conta e risco!](https://dankradfeist.de/ethereum/2022/03/24/run-the-majority-client-at-your-own-peril.html) – _Dankrad Fest, 24 de março de 2022_
+- [Importância da diversidade de cliente](https://our.status.im/the-importance-of-client-diversity/)
+- [Lista dos serviços de nós Ethereum](https://ethereumnodes.com/)
+- ["Cinco porquês" do problema da diversidade de clientes](https://notes.ethereum.org/@afhGjrKfTKmksTOtqhB9RQ/BJGj7uh08)
+- [Diversidade Ethereum e como resolvê-la (Youtube)](https://www.youtube.com/watch?v=1hZgCaiqwfU)
+- [clientdiversity.org](https://clientdiversity.org/)
+
+## Tópicos relacionados {#related-topics}
+
+- [Executando um nó Ethereum](/run-a-node/)
+- [Nós e clientes](/developers/docs/nodes-and-clients/)
diff --git a/src/content/translations/pt-br/developers/docs/nodes-and-clients/index.md b/src/content/translations/pt-br/developers/docs/nodes-and-clients/index.md
index 655327b9625..2b804fab045 100644
--- a/src/content/translations/pt-br/developers/docs/nodes-and-clients/index.md
+++ b/src/content/translations/pt-br/developers/docs/nodes-and-clients/index.md
@@ -5,70 +5,110 @@ lang: pt-br
sidebarDepth: 2
---
-O Ethereum é uma rede distribuída de computadores executando software (conhecidos como nós) que pode verificar blocos e dados de transação. Você precisa de um aplicativo, conhecido como cliente, no seu dispositivo para "executar" um nó.
+O Ethereum é uma rede distribuída de computadores (conhecidos como nós) executando softwares que podem verificar blocos e dados de transação. O aplicativo de software, conhecido como cliente, deve ser executado no seu computador para transformá-lo em um nó Ethereum.
+
+**Nota: não é mais possível executar um cliente de execução por conta própria. Após [A Fusão](/upgrades/merge), ambos os clientes de execução e consenso devem ser executados juntos para que um usuário obtenha acesso à rede Ethereum.**
## Pré-requisitos {#prerequisites}
-Você deve entender o conceito de uma rede peer-to-peer e os conceitos básicos [do EVM](/developers/docs/evm/) antes de mergulhar mais fundo e executar a sua própria instância de um cliente Ethereum. Veja nossa [introdução ao Ethereum](/developers/docs/intro-to-ethereum/).
+Você deve entender o conceito de uma rede peer-to-peer e os [conceitos básicos da EVM](/developers/docs/evm/) antes de mergulhar mais fundo e executar a sua própria instância de um cliente Ethereum. Veja nossa [introdução ao Ethereum](/developers/docs/intro-to-ethereum/).
-If you're new to the topic of nodes, we recommend first checking out our user-friendly introduction on [running an Ethereum node](/run-a-node).
+Se você é novo no tema dos nós, recomendamos primeiro verificar nossa introdução simplificada no [rodando um nó Ethereum](/run-a-node).
## O que são nós e clientes? {#what-are-nodes-and-clients}
-"Nó" refere-se a um software conhecido como cliente. Um cliente é uma implementação do Ethereum que verifica todas as transações em cada bloco, mantendo a rede segura e os dados precisos.
+Um "nó" é qualquer instância de software do cliente Ethereum que esteja conectado a outros computadores também executando o software Ethereum, formando uma rede. Um cliente é uma implementação do Ethereum que verifica os dados em relação às regras do protocolo e mantém a rede segura.
+
+O Ethereum pós Fusão consiste em duas partes: a camada de execução e a camada de consenso. Ambas as camadas são executadas por software cliente diferente. Nesta página, vamos nos referir a eles como cliente de execução e cliente de consenso.
+
+- O cliente de execução (também conhecido como Execution Engine, cliente EL ou anteriormente cliente Eth1) ouve novas transações transmitidas na rede, executa-as na EVM e mantém o estado mais recente e o banco de dados de todos os dados atuais do Ethereum.
+- O cliente de consenso (também conhecido como Beacon Node, cliente CL ou anteriormente cliente Eth2) implementa o algoritmo de consenso de prova de participação, o qual permite que a rede realize um acordo com base nos dados validados do cliente de execução.
+
+Antes da [Fusão](/upgrades/merge/), a camada de consenso e execução eram redes separadas, com todas as transações e atividades do usuário no Ethereum acontecendo, no que é agora a camada de execução. Um software do cliente forneceu ambiente de execução e verificação de consenso de blocos produzidos por mineradores. A camada de consenso, [a Beacon Chain](/upgrades/beacon-chain/), está sendo executada separadamente desde dezembro de 2020. Ela introduziu a prova de participação e coordenou a rede de validadores com base nos dados da rede Ethereum.
+
+Com a Fusão, o Ethereum transita para a prova de participação conectando essas redes. Os clientes de execução e consenso trabalham juntos para verificar o estado do Ethereum.
+
+O design modular com várias peças de software trabalhando em conjunto é chamado de [complexidade encapsulada](https://vitalik.ca/general/2022/02/28/complexity.html). Essa abordagem facilita executar A Fusão sem problemas e permite a reutilização de clientes individuais, por exemplo, no [ecossistema de camada 2](/layer-2/).
+
+![Execução de acoplamento e clientes de consenso](./eth1eth2client.png) Diagrama simplificado de uma execução associada e de um cliente de consenso.
+
+### Diversidade dos clientes {#client-diversity}
+
+Tanto [clientes de execução](/developers/docs/nodes-and-clients/#execution-clients) quanto [clientes de consenso](/developers/docs/nodes-and-clients/#consensus-clients) existem em uma variedade de linguagens de programação desenvolvidas por diferentes equipes.
+
+As implementações de vários clientes podem tornar a rede mais forte, reduzindo sua dependência de uma única base de código. O objetivo ideal é alcançar a diversidade sem que nenhum cliente domine a rede, eliminando assim um ponto único de falha potencial. A variedade de idiomas também convida uma comunidade de desenvolvedores mais ampla e permite que eles criem integrações em seu idioma preferido.
+
+Saiba mais sobre a [diversidade do cliente](/developers/docs/nodes-and-clients/client-diversity/).
-Você pode ter uma visão em tempo real da rede Ethereum olhando este [mapa dos nós](https://etherscan.io/nodetracker).
+O que essas implementações têm em comum é que todas seguem uma única especificação. As especificações ditam como a rede Ethereum e a cadeia de blocos funcionam. Cada detalhe técnico é definido e as especificações podem ser encontradas como:
-Existem muitos [clientes de Ethereum](/developers/docs/nodes-and-clients/#execution-clients) em uma variedade de linguagens de programação, como Go, Rust, JavaScript, Python, C# .NET e Java. O que essas implementações têm em comum é que todas elas seguem uma especificação formal (originalmente o [Ethereum Yellowpaper](https://ethereum.github.io/yellowpaper/paper.pdf)). Esta especificação determina como funciona a rede Ethereum e a blockchain.
+- Originalmente, o [Ethereum Yellow Paper](https://ethereum.github.io/yellowpaper/paper.pdf)
+- [Especificações de execução](https://github.com/ethereum/execution-specs/)
+- [Especificações de consenso](https://github.com/ethereum/consensus-specs)
+- [EIPs](https://eips.ethereum.org/) implementados em várias [atualizações de rede](/history/)
-![Cliente de execução](./client-diagram.png) Diagrama simplificado sobre as características do cliente Ethereum.
+### Rastreamento de nós na rede {#network-overview}
+
+Vários rastreadores oferecem uma visão geral em tempo real dos nós na rede Ethereum. Observe que, devido à natureza das redes descentralizadas, esses rastreadores podem fornecer apenas uma visão limitada da rede e podem relatar resultados diferentes.
+
+- Mapa de nós pela Etherscan
+- Ethernodes da Bitfly
+- [Rastreador de nós Ethereum](https://crawler.ethereum.org/)
+- [Nodewatch](https://www.nodewatch.io/) por Chainsafe, rastreando nós de consenso
## Tipos de nó {#node-types}
-Se você quer [executar o seu próprio nó](/developers/docs/nodes-and-clients/run-a-node/), você deve entender que existem diferentes tipos de nós que consomem dados diferentemente. Na verdade, os clientes podem executar 3 tipos diferentes de nó: light, full e archive. Existem também opções de diferentes estratégias de sincronização que permitem uma sincronização mais rápida. A sincronização se refere ao quão rápido ele pode obter as informações mais atualizadas sobre o estado do Ethereum.
+Se você quer [executar o seu próprio nó](/developers/docs/nodes-and-clients/run-a-node/), você deve entender que existem diferentes tipos de nós que consomem dados de modo diferente. Na verdade, os clientes podem executar 3 tipos diferentes de nó: leve, completo e arquivo. Existem também opções de diferentes estratégias de sincronização que permitem um tempo de sincronização mais rápida. A sincronização se refere ao quão rápido ele pode obter as informações mais atualizadas sobre o estado do Ethereum.
-### Nó Full {#full-node}
+### Nó completo {#full-node}
-- Armazena dados completos da blockchain.
+- Armazena os dados completos da cadeia de blocos (embora isso seja periodicamente reduzido para que um nó completo não armazene todos os dados de estado de volta à origem)
- Participa na validação de bloco, verifica todos os blocos e estados.
-- Todos os estados podem ser derivados de um nó completo.
+- Todos os estados podem ser derivados de um nó completo (embora estados muito antigos sejam reconstruídos a partir de solicitações feitas a nós de arquivo).
- Serve a rede e fornece dados mediante solicitação.
-### Nó Light {#light-node}
+### Nó leve {#light-node}
+
+Em vez de baixar cada bloco, nós leves baixam os cabeçalhos dos blocos. Esses cabeçalhos contêm apenas informações resumidas sobre o conteúdo dos blocos. Qualquer outra informação pelo nó leve é solicitada de um nó completo. O nó leve pode então verificar de modo independente os dados que ele recebe em relação às raízes de estado nos cabeçalhos de bloco. Os nós leves permitem que os usuários participem da rede Ethereum sem o hardware poderoso ou a alta largura de banda necessária para executar nós completos. Por fim, os nós leves podem ser executados em telefones celulares ou dispositivos embutidos. Os nós leves não participam do consenso (ou seja, eles não podem ser mineradores/validadores), mas podem acessar a cadeia de blocos Ethereum com a mesma funcionalidade de um nó completo.
+
+O cliente de execução Geth inclui uma opção [sincronização leve](https://github.com/ethereum/devp2p/blob/master/caps/les.md). No entanto, um nó Geth leve depende de nós completos que atendem a dados de nós leves. Poucos nós completos optam por servir dados de nós leves, o que significa que nós leves muitas vezes não conseguem encontrar pares. Atualmente, não há clientes leves prontos para produção na camada de consenso; no entanto, vários estão em desenvolvimento.
+
+Também existem rotas potenciais para fornecer dados de clientes leves pela [rede gossip](https://www.ethportal.net/). Isso é vantajoso porque a rede gossip pode suportar uma rede de nós leves sem exigir nós completos para atender às solicitações.
-- Armazena a cadeia do cabeçalho e solicita todo o resto.
-- Pode verificar a validade dos dados contra os state roots nos cabeçalhos do bloco.
-- Útil para dispositivos de baixa capacidade, como dispositivos integrados ou celulares, que não possuem recursos para armazenar gigabytes de dados blockchain.
+O Ethereum ainda não suporta uma grande população de nós leves, mas o suporte a nós leves é uma área que deve se desenvolver rapidamente em um futuro próximo.
-### Nó Archive {#archive-node}
+### Nó de arquivo {#archive-node}
-- Armazena tudo no nó inteiro e cria um arquivo de estados históricos. Necessário se você quiser consultar algo como um saldo de conta no bloco #4.000.000 ou simplesmente [testar de maneira simples e confiável suas próprias transações definidas sem minerá-las usando OpenEthereum](https://openethereum.github.io/Jsonrpc-trace-module#trace_callmany).
-- Esses dados representam unidades de terabytes que tornam os nós de arquivo menos atrativos para usuários médios, mas podem ser úteis para serviços como exploradores de blocos, fornecedores de carteiras e análises de cadeia.
+- Armazena tudo o que é mantido no nó completo e constrói um arquivo de estados históricos. Ele é necessário se você quiser consultar algo como um saldo de conta no bloco #4.000.000, ou testar de forma simples e confiável seu próprio conjunto de transações sem minerá-las usando rastreamento.
+- Esses dados representam unidades de terabytes, o que torna os nós de arquivo menos atraentes para usuários comuns, mas pode ser útil para serviços como exploradores de blocos, fornecedores de carteiras e análises da cadeia.
-Sincronizar clientes em qualquer modo que não seja o de arquivo resultará na remoção de dados da blockchain. Isso significa que não há arquivo de todo o estado histórico, mas o nó completo é capaz de criá-lo sob demanda.
+Sincronizar clientes em qualquer modo que não seja o de arquivo resultará na remoção de dados da cadeia de blocos. Isso significa que não há arquivo de todo o estado histórico, mas o nó completo é capaz de criá-lo sob demanda.
## Por que devo executar um nó Ethereum? {#why-should-i-run-an-ethereum-node}
-A execução de um nó permite que você use o Ethereum de forma confiável e privada, ao mesmo tempo que apoia o ecossistema.
+A execução de um nó permite que você use o Ethereum de forma direta, confiável e privada, enquanto dá suporte à rede, mantendo-a mais robusta e descentralizada.
### Vantagens para você {#benefits-to-you}
-A execução do seu próprio nó permite que você use o Ethereum de forma verdadeiramente privada, autossuficiente e confiável. Você não precisa confiar na rede porque você pode verificar os dados por conta própria com seu cliente. "Não confie, verifique" é um mantra popular da blockchain.
+A execução de seu próprio nó permite que você use o Ethereum de maneira privada, autossuficiente e confiável. Você não precisa confiar na rede porque você pode verificar os dados por conta própria com seu cliente. "Não confie, verifique" é um mantra popular da cadeia de blocos.
- Seu nó verifica todas as transações e blocos contra as regras de consenso por si só. Isso significa que você não precisa confiar em nenhum outro nó da rede nem confiar totalmente neles.
-- Você não terá que transmitir seus endereços e saldos para nós aleatórios. Tudo pode ser verificado com seu próprio cliente.
-- Seu dapp pode ser mais seguro e privado se você usar seu próprio nó. [MetaMask](https://metamask.io), [MyEtherWallet](https://myetherwallet.com) and some other wallets can be easily pointed to your own local node.
-- Você pode programar seus próprios endpoints de RPC personalizados.
-- Você pode se conectar ao seu nó usando **Inter-process Communications (IPC)** ou reescrever o nó para carregar seu programa como um plugin. Isto concede baixa latência, que é necessária para substituir suas transações o mais rápido possível (por exemplo, frontrunning).
+- Você pode usar uma carteira Ethereum com seu próprio nó. Você pode usar dapps com mais segurança e privacidade porque não precisará vazar seus endereços e saldos para nós aleatórios. Tudo pode ser verificado com seu próprio cliente. [MetaMask](https://metamask.io), [Frame](https://frame.sh/) e [muitas outras carteiras](/wallets/find-wallet/) oferecem importação de RPC, permitindo que elas usem seu nó.
+- Você pode executar e auto-hospedar outros serviços que dependem de dados do Ethereum. Por exemplo, isso pode ser um validador Beacon Chain, software como camada 2, infraestrutura, exploradores de bloco, processadores de pagamento etc.
+- Você pode fornecer seus próprios [pontos de extremidade RPC](https://ethereum.org/en/developers/docs/apis/json-rpc/) personalizados. O ponto de extremidade Ethereum hospedado publicamente pela comunidade ou de modo privado, permite que as pessoas usem seu nó e evitem grandes provedores centralizados.
+- Você pode se conectar ao seu nó usando **Comunicações entre processos (IPC)** ou reescrever o nó para carregar seu programa como um plugin. Isso garante baixa latência, o que ajuda muito, por exemplo, ao processar muitos dados usando bibliotecas Web3 ou quando você precisa substituir suas transações o mais rápido possível (isto é, de forma acelerada).
+- Você pode colocar ETH diretamente para proteger a rede e ganhar recompensas. Veja [participação solo](https://ethereum.org/en/staking/solo/) para começar.
-![Como você acessr Ethereum através do seu aplicativo e nós](./nodes.png)
+![Como você acessr o Ethereum através do seu aplicativo e nós](./nodes.png)
### Benefícios da rede {#network-benefits}
Um conjunto diversificado de nós é importante para a integridade, segurança e resiliência operacional do Ethereum.
-- Eles fornecem acesso a dados blockchain para clientes leves que dependem disso. Em picos altos de uso, é necessário que haja nós cheios suficientes para ajudar na sincronização dos nós. Os nós leves não armazenam toda a blockchain. Em vez disso, eles verificam dados através das [raízes do estado nos cabeçalhos de blocos](/developers/docs/blocks/#block-anatomy). Eles podem solicitar mais informações a partir dos blocos, se precisarem.
-- Nós completos impõem regras de consenso de prova de trabalho para que não possam ser enganados a aceitar blocos que não os seguem. Isto fornece segurança extra na rede porque se todos os nós fossem nós leves, que não fazem verificação completa, os minderadores poderiam atacar a rede e, por exemplo, criar blocos com recompensas maiores.
+- Os nós completos impõem as regras de consenso para que não possam ser induzidos a aceitar blocos que não as seguem. Isso fornece segurança extra na rede, pois se todos os nós fossem nós leves, que não fazem a verificação completa, os validadores poderiam atacar a rede.
+- No caso de um ataque que supere as defesas criptoeconômicas de [prova de participação](/developers/docs/consensus-mechanisms/pos/#what-is-pos), uma recuperação social pode ser realizada por nós completos escolhendo seguir a cadeia honesta.
+- Mais nós na rede resultam em uma rede mais diversificada e robusta, o objetivo final da descentralização, que permite um sistema confiável e resistente à censura.
+- Eles fornecem acesso a dados da cadeia de blocos para clientes leves que dependem disso. Em picos altos de uso, é necessário que haja nós completos suficientes para ajudar na sincronização dos nós. Os nós leves não armazenam toda a cadeia de blocos. Em vez disso, eles verificam dados por meio das [raízes do estado nos cabeçalhos de blocos](/developers/docs/blocks/#block-anatomy). Eles podem solicitar mais informações a partir dos blocos, se precisarem.
Se você executa um nó completo, toda a rede Ethereum se beneficia disso.
@@ -76,32 +116,13 @@ Se você executa um nó completo, toda a rede Ethereum se beneficia disso.
Interessado em executar o seu próprio cliente Ethereum?
-For a beginner-friendly introduction visit our [run a node](/run-a-node) page to learn more.
-
-If you're more of a technical user, learn how to [spin up your own node](/developers/docs/nodes-and-clients/run-a-node/) with the command line!
-
-### Projetos {#projects}
-
-[**Selecione um cliente e siga suas instruções**](#clients)
-
-**ethnode -** **_Execute um nó Ethereum (Geth ou Parity) para desenvolvimento local._**
-
-- [GitHub](https://github.com/vrde/ethnode)
+Para ver uma introdução simplificada para iniciantes, visite a nossa página [Executar um nó](/run-a-node) para saber mais.
-**DAppNode -** **_Um sistema operacional para executar nós Web3, incluindo Ethereum, em uma máquina dedicada._**
-
-- [dappnode.io](https://dappnode.io)
-
-### Recursos {#resources}
-
-- [Executando nós completos do Ethereum: um guia completo](https://medium.com/coinmonks/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _ - Justin Leroux, 7 de novembro de 2019_
-- [Resumo sobre configuração de nós](https://dev.to/5chdn/ethereum-node-configuration-modes-cheat-sheet-25l8) _ - Afri Schoeden, 5 de janeiro de 2019_
-- [Como instalar e executar um nó Geth](https://www.quiknode.io/guides/infrastructure/how-to-install-and-run-a-geth-node) _ - Sahil Sen, 4 de outubro de 2020_
-- [Como instalar e executar um nó OpenEthereum (também conhecido com. Parity)](https://www.quiknode.io/guides/infrastructure/how-to-run-a-openethereum-ex-parity-client-node) _ - Sahil Sen, 22 de setembro de 2020_
+Se você é mais que um usuário técnico, mergulhe em mais detalhes e opções sobre como [executar o seu próprio nó](/developers/docs/nodes-and-clients/run-a-node/).
## Alternativas {#alternatives}
-Executar seu próprio nó pode ser difícil e você não precisa sempre executar sua própria instância. Neste caso, você pode usar um provedor de API de terceiros como [Infura](https://infura.io), [Alquemy](https://alchemyapi.io) ou [QuikNode](https://www.quiknode.io). Alternativamente [ArchiveNode](https://archivenode.io/) é um nó de arquivo financiado pela comunidade que espera trazer dados de arquivos na blockchain Ethereum para desenvolvedores independentes que, de outro modo, não poderiam pagar por isso. For an overview of using these services, check out [nodes as a service](/developers/docs/nodes-and-clients/nodes-as-a-service/).
+Configurar seu próprio nó pode custar tempo e recursos, mas nem sempre você precisa executar sua própria instância. Nesse caso, você pode usar um provedor de API de terceiros como [Infura](https://infura.io), [Alchemy](https://alchemyapi.io), [Chainstack](https://chainstack.com) ou [QuikNode](https://www.quiknode.io). Como alternativa, [ArchiveNode](https://archivenode.io/) é um nó de arquivo financiado pela comunidade que espera trazer dados de arquivo na cadia de blocos Ethereum, para desenvolvedores independentes que de outra forma não poderiam pagar. Para obter uma visão geral do uso desses serviços, confira [nós como serviço](/developers/docs/nodes-and-clients/nodes-as-a-service/).
Se alguém executa um nó Ethereum com uma API pública em sua comunidade, você pode apontar suas carteiras ligeiras (como MetaMask) para um nó da comunidade [via RPC personalizado](https://metamask.zendesk.com/hc/en-us/articles/360015290012-Using-a-Local-Node) e ganhar mais privacidade do que com alguns terceiros aleatórios de confiança.
@@ -109,208 +130,170 @@ Por outro lado, se você executar um cliente, você pode compartilhá-lo com que
## Clientes de execução (antigos clientes 'Eth1') {#execution-clients}
-A comunidade de Ethereum mantém vários clientes de execução (previamente conhecidos como clientes 'Eth1', ou apenas 'clientes de Ethereum') de código aberto, desenvolvidos por diferentes equipes usando diferentes linguagens de programação. Isto torna a rede mais forte e mais diversificada. O objectivo ideal é alcançar a diversidade sem que qualquer cliente domine para reduzir quaisquer pontos de fracasso.
+A comunidade do Ethereum mantém vários clientes de execução (previamente conhecidos como clientes "Eth1", ou apenas "clientes Ethereum") de código aberto, desenvolvidos por diferentes equipes usando diferentes linguagens de programação. Isso torna a rede mais forte e [diversificada](/developers/docs/nodes-and-clients/client-diversity/). O objetivo ideal é alcançar a diversidade sem que nenhum cliente predomine, a fim de reduzir os pontos únicos de falha.
-Esta tabela resume os diferentes clientes. Todos eles passam em [testes de cliente](https://github.com/ethereum/tests) e são ativamente mantidos para ficarem atualizados com as atualizações da rede.
+Essa tabela resume os diferentes clientes. Todos eles passam em [testes de cliente](https://github.com/ethereum/tests) e são mantidos ativamente para se manterem atualizados com atualizações de rede.
-| Client | Linguagem de programação | Sistemas operacionais | Redes | Estratégias de sincronização | Limpeza de estado |
-| ------------------------------------------------------------------------- | ------------------------ | --------------------- | ------------------------------------------------ | ---------------------------- | ----------------- |
-| [Geth](https://geth.ethereum.org/) | Go | Linux, Windows, macOS | Rede principal, Görli, Rinkeby, Ropsten | Snap, Full | Archive, Pruned |
-| [Nethermind](http://nethermind.io/) | C#, .NET | Linux, Windows, macOS | Rede principal, Görli, Ropsten, Rinkeby e outras | Fast, Beam, Archive | Archive, Pruned |
-| [Besu](https://besu.hyperledger.org/en/stable/) | Java | Linux, Windows, macOS | Mainnet, Rinkeby, Ropsten, Görli, and more | Fast, Full | Archive, Pruned |
-| [Erigon](https://github.com/ledgerwatch/erigon) | Go | Linux, Windows, macOS | Rede principal, Görli, Rinkeby, Ropsten | Full | Archive, Pruned |
-| [OpenEthereum (Deprecated)](https://github.com/openethereum/openethereum) | Rust | Linux, Windows, macOS | Rede principal, Kovan, Ropsten e outros | Warp, completo | Archive, Pruned |
+| Client | Linguagem de programação | Sistemas operacionais | Redes | Estratégias de sincronização | Limpeza de estado |
+| ----------------------------------------------- | ------------------------ | --------------------- | --------------------------------------------------- | -------------------------------------------- | ----------------- |
+| [Geth](https://geth.ethereum.org/) | Go | Linux, Windows, macOS | Mainnet, Sepolia, Görli, Ropsten, Rinkeby | Instantâneo, Completo | Arquivo, Removido |
+| [Nethermind](http://nethermind.io/) | C#, .NET | Linux, Windows, macOS | Mainnet, Sepolia, Görli, Ropsten, Rinkeby e mais | Instantâneo (sem servidor), Rápido, Completo | Arquivo, Removido |
+| [Besu](https://besu.hyperledger.org/en/stable/) | Java | Linux, Windows, macOS | Mainnet, Sepolia, Görli, Ropsten, Rinkeby e mais | Rápido, Completo | Arquivo, Removido |
+| [Erigon](https://github.com/ledgerwatch/erigon) | Go | Linux, Windows, macOS | Mainnet, Sepolia, Görli, Rinkeby, Ropsten, and more | Completo | Arquivo, Removido |
+| [Akula](https://akula.app) | Rust | Linux | Mainnet, Sepolia, Görli, Rinkeby, Ropsten | Completo | Arquivo, Removido |
-**Note que o OpenEthereum [foi descontinuado](https://medium.com/openethereum/gnosis-joins-erigon-formerly-turbo-geth-to-release-next-gen-ethereum-client-c6708dd06dd) e não está mais sendo mantido.** Use-o com cuidado e de preferência mude para outra implementação do cliente.
+**Observe que o OpenEthereum [foi depreciado](https://medium.com/openethereum/gnosis-joins-erigon-form-turbo-geth-to-release-next-gen-ethereum-client-c6708dd06dd) e não está mais sendo mantido.** Use-o com cuidado e, de preferência, mude para outra implementação de cliente.
-Para mais informações sobre as redes suportadas, leia[redes Ethereum](/developers/docs/networks/).
+Para saber mais sobre redes suportadas, leia sobre as [redes Ethereum](/developers/docs/networks/).
-### Vantagens de diferentes implementações {#advantages-of-different-implementations}
+Cada cliente tem casos de uso e vantagens exclusivas, então você deve escolher um com base nas suas próprias preferências. A diversidade permite que as implementações sejam focadas em diferentes recursos e públicos de usuários. Você pode escolher um cliente baseado em recursos, suporte, linguagem de programação ou licenças.
-Cada cliente tem casos de uso únicos e vantagens exclusivas, o que permite você escolher um com base nas suas próprias preferências. A diversidade permite que as implementações sejam focadas em diferentes recursos e públicos de usuários. Você pode escolher um cliente baseado em recursos, suporte, linguagem de programação ou licenças.
+### Besu {#besu}
-#### Go Ethereum {#geth}
+Hyperledger Besu é um cliente Ethereum de nível empresarial para redes públicas e autorizadas. Ele executa todos os recursos da Rede principal do Ethereum, do rastreamento ao GraphQL, possui monitoramento extensivo e é suportado pela ConsenSys, tanto em canais comunitários abertos, quanto por meio de SLAs (contratos) comerciais para empresas. Ele é escrito em Java e é licenciado pelo Apache 2.0.
-Go Ethereum (Geth for short) é uma das implementações originais do protocolo Ethereum. Atualmente, é o cliente mais difundido com a maior base de usuários e a maior variedade de ferramentas para usuários e desenvolvedores. É escrito em Go, totalmente aberto e licenciado sob a GNU LGPL v3.
+A extensa [documentação](https://besu.hyperledger.org/en/stable/) do Besu guiará você por todos os detalhes sobre seus recursos e configurações.
-#### OpenEthereum {#openethereum}
+### Erigon {#erigon}
-O OpenEthereum é um cliente de Ethereum rápido, rico em recursos e avançado. Criado para fornecer a infraestrutura essencial para serviços rápidos e confiáveis, que requerem sincronização rápida e tempo máximo. O objetivo do OpenEthereum é ser o cliente Ethereum mais rápido, mais leve e mais seguro. Ele fornece uma base de código limpa e modular para:
+Erigon, anteriormente conhecido como Turbo-Geth, começou como uma bifurcação do Go Ethereum orientado para velocidade e eficiência de espaço em disco. Erigon é uma implementação completamente rearquitetada do Ethereum, atualmente escrita em Go, mas com implementações em outras linguagens em desenvolvimento, por exemplo. [Acula](https://medium.com/@vorot93/meet-akula-the-fastest-ethereum-implementation-ever-built-58eaca244c39). O objetivo da Erigon é fornecer uma implementação mais rápida, modular e otimizada do Ethereum. Ele pode realizar uma sincronização completa do nó de arquivamento usando cerca de 2TB de espaço em disco, em menos de 3 dias.
-- fácil personalização.
-- integração leve a serviços ou produtos.
-- suporte mínimo de memória e armazenamento.
+### Go Ethereum {#geth}
-O OpenEthereum é desenvolvido utilizando a linguagem de programação Rust de ponta e licenciado sob a GPLv3.
+Go Ethereum (Geth para abreviar) é uma das implementações originais do protocolo Ethereum. Atualmente, é o cliente mais difundido com a maior base de usuários e variedade de ferramentas para usuários e desenvolvedores. Ele está escrito em Go, é totalmente de código aberto e é licenciado sob a licença GNU LGPL v3.
-**Note que o OpenEthereum [foi descontinuado](https://medium.com/openethereum/gnosis-joins-erigon-formerly-turbo-geth-to-release-next-gen-ethereum-client-c6708dd06dd) e não está mais sendo mantido.** Use-o com cuidado e de preferência mude para outra implementação do cliente.
+Saiba mais sobre Geth em sua [documentação](https://geth.ethereum.org/docs/).
-#### Nethermind {#nethermind}
+### Nethermind {#nethermind}
-Nethermind é uma implementação Ethereum criada com a pilha tecnológica C# .NET, em execução em todas as principais plataformas, incluindo a ARM. Ele oferece grande desempenho com:
+Nethermind é uma implementação do Ethereum criada com a pilha de tecnologia C# .NET, licenciada com LGPL-3.0, rodando em todas as principais plataformas, incluindo ARM. Ele oferece grande desempenho com:
- uma máquina virtual otimizada
- acesso ao estado
- rede e recursos ricos como painéis Prometheus/Graphana, suporte ao registro empresarial seq, rastreamento JSON RPC e plugins de análise.
-Nethermind também tem [documentação detalhada](https://docs.nethermind.io), forte suporte a desenvolvedores, uma comunidade online e suporte 24/7 disponível para usuários premium.
-
-#### Besu {#besu}
-
-Hyperledger Besu é um cliente Ethereum de nível empresarial para redes públicas e autorizadas. Ele executa todos os recursos do mainnet da Ethereum, do rastreamento ao GraphQL, tem um extenso monitoramento e é suportado pelo ConsenSys, tanto em canais comunitários abertos como através de SLAs comerciais para as empresas. Ele é escrito em Java e é licenciado pelo Apache 2.0.
-
-#### Erigon {#erigon}
-
-Erigon, outrora conhecida como Turbo├Geth, é uma bifurcação da Go Ethereum orientada para velocidade e eficiência de espaço em disco. A Erigon é uma implementação completamente re-arquitetada da Ethereum, atualmente escrita em Go mas com implementações de outras línguas planejadas. O objetivo da Erigon é fornecer um mais rápido, mais módulo e uma implementação mais otimizada do Ethereum. Ele pode executar uma sincronização completa do nó de arquivo usando menos de 2TB de espaço em disco, em menos de 3 dias
-
-### Modos de sincronização {#sync-modes}
-
-Para acompanhar e verificar os dados atuais na rede, o cliente Ethereum precisa sincronizar com o estado da rede mais recente. Isso é feito baixando dados de pares, verificando criptograficamente sua integridade e construindo um banco de dados de blockchain local.
-
-Os modos de sincronização representam diferentes abordagens para este processo com vários trade-offs. Os clientes também variam na implementação dos algoritmos de sincronização. Sempre consulte a documentação oficial do cliente escolhido para obter detalhes sobre a implementação.
-
-#### Visão geral das estratégias {#overview-of-strategies}
+A Nethermind também tem uma [documentação detalhada](https://docs.nethermind.io), um suporte eficaz ao desenvolvedor, uma comunidade online e suporte 24/7 disponível para usuários premium.
-Visão geral das abordagens de sincronização usadas nos clientes preparados para o Mainnet:
-
-##### Sincronização completa
-
-A sincronização completa baixa todos os blocos (incluindo cabeçalhos, transações e recibos) e gera o estado da blockchain de maneira incremental ao executar todos os blocos a partir da gênesis.
-
-- Minimiza a confiança e oferece a maior segurança, verificando todas as transações.
-- Com um número crescente de transações, pode levar dias a semanas para processar todas as transações.
-
-##### Sincronização rápida
-
-Rápido (Padrão) - baixa todos os blocos (incluindo cabeçalhos, transações e recibos), verifica todos os cabeçalhos e baixa o estado e verifica-os contra os cabeçalhos.
+## Clientes de consenso (antigos clientes 'Eth2') {#consensus-clients}
-- Se baseia na segurança do mecanismo de consenso.
-- A sincronização demora apenas algumas horas.
+Existem vários clientes de consenso (anteriormente conhecidos como clientes "Eth2") para oferecer suporte às [atualizações de consenso](/upgrades/beacon-chain/). Eles estão executando a Beacon Chain e fornecerão um mecanismo de consenso de prova de participação para clientes de execução após [A Fusão](/upgrades/merge/).
-##### Sincronização leve
+[Visualizar clientes de consenso](/upgrades/get-involved/#clients).
-Modo cliente leve baixa todos os cabeçalhos de bloco, bloqueia dados e verifica alguns aleatoriamente. Somente sincroniza a ponta da cadeia no ponto de verificação confiável.
+| Cliente | Linguagem de programação | Sistemas operacionais | Redes |
+| ------------------------------------------------------------- | ------------------------ | --------------------- | -------------------------------------------------------------- |
+| [Lighthouse](https://lighthouse.sigmaprime.io/) | Rust | Linux, Windows, macOS | Beacon Chain, Goerli, Pyrmont, Sepolia, Ropsten e mais |
+| [Lodestar](https://lodestar.chainsafe.io/) | TypeScript | Linux, Windows, macOS | Beacon Chain, Goerli, Sepolia, Ropsten e mais |
+| [Nimbus](https://nimbus.team/) | Nim | Linux, Windows, macOS | Beacon Chain, Goerli, Sepolia, Ropsten e mais |
+| [Prysm](https://docs.prylabs.network/docs/getting-started/) | Go | Linux, Windows, macOS | Beacon Chain, Gnosis, Goerli, Pyrmont, Sepolia, Ropsten e mais |
+| [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) | Java | Linux, Windows, macOS | Beacon Chain, Gnosis, Goerli, Sepolia, Ropsten e mais |
-- Obtém apenas o estado mais recente enquanto confia em desenvolvedores e no mecanismo de consenso.
-- Cliente pronto para usar com o estado atual da rede em alguns minutos.
+### Lighthouse {#lighthouse}
-[Mais sobre clientes Light](https://www.parity.io/blog/what-is-a-light-client/)
+Lighthouse é uma implementação de cliente de consenso escrita em Rust sob a licença Apache-2.0. Ela é mantida pela Sigma Prime e tem se mantido estável e pronto para produção desde a origem da Beacon Chain. Várias empresas confiam nela, apostando em pools e indivíduos. Ela visa ser segura, eficiente e interoperável em uma ampla variedade de ambientes, de PCs de mesa a implantações automatizadas sofisticadas.
-##### Sincronização instantânea
+A documentação pode ser encontrada no [Livro da Lighthouse](https://lighthouse-book.sigmaprime.io/)
-Implementado por Geth. Usar snapshots dinâmicos servidos por pares, recupera toda a conta e dados de armazenamento sem baixar nós de trie intermediários e depois reconstrui o Trie Merkle localmente.
+### Lodestar {#lodestar}
-- Estratégia de sincronização mais rápida desenvolvida pela Geth, atualmente o padrão dela
-- Economiza muito uso de disco e largura de banda de rede sem sacrificar a segurança.
+Lodestar é uma implementação de cliente de consenso pronta para produção escrita em Typescript sob a licença LGPL-3.0. Ela é mantida pela ChainSafe Systems e é a mais recente dos clientes de consenso para participantes solo, desenvolvedores e pesquisadores. A Lodestar consiste em um nó beacon e um cliente validador alimentado por implementações JavaScript de protocolos Ethereum. A Lodestar visa melhorar a usabilidade do Ethereum com clientes leves, expandir a acessibilidade a um grupo maior de desenvolvedores e contribuir ainda mais para a diversidade do ecossistema.
-[Mais no Snap](https://github.com/ethereum/devp2p/blob/master/caps/snap.md)
+Mais informações podem ser encontradas em nosso [site da Lodestar](https://lodestar.chainsafe.io/)
-##### Sincronização Warp
+### Nimbus {#nimbus}
-Implementado por OpenEthereum. Os nós geram regularmente um instantâneo de estado crítico do consenso e qualquer ponto pode buscar essas capturas instantâneas pela rede, permitindo uma sincronização rápida a partir deste ponto.
+Nimbus é uma implementação de cliente de consenso escrita em Nim sob a licença Apache-2.0. Ela é um cliente pronto para produção usada por participantes solo e pools de participação. A Nimbus foi projetada para eficiência de recursos, facilitando a execução em dispositivos com recursos restritos e infraestrutura corporativa com a mesma facilidade, sem comprometer a estabilidade ou o desempenho da recompensa. Uma memória de recursos mais leve significa que o cliente tem uma maior margem de segurança quando a rede está sob estresse.
-- O modo de sincronização mais rápido e padrão do OpenEthereum depende de snapshots estáticos disponibilizados por pares.
-- Estratégia similar à sincronização instantânea, mas sem certas vantagens de segurança.
+Implementado pela Trinity. Funciona como sincronização rápida, mas também baixa os dados necessários para executar os blocos mais recentes, o que permite consultar a cadeia nos primeiros minutos desde o início.
-[Beam sync](https://openethereum.github.io/Beginner-Introduction#warping---no-warp)
+- Sincroniza o estado primeiro e permite que você consulte RPC em poucos minutos.
+- Ainda em desenvolvimento e não totalmente confiável, a sincronização em segundo plano é desacelerada e as respostas do RPC podem falhar.
-##### Sincronização Beam
+Saiba mais na [documentação do Nimbus](https://nimbus.guide/)
-Implementado por Nethermind e Trinity. Funciona como sincronização rápida, mas também baixa os dados necessários para executar os blocos mais recentes, o que te permite consultar a cadeia dentro dos primeiros minutos desde o início.
+### Prysm {#prysm}
-- Sincroniza o estado primeiro e permite que você consulte RPC em alguns minutos.
-- Ainda em desenvolvimento e não totalmente confiável, a sincronização em segundo plano é desacelerada e as respostas do RPC podem falhar.
+O Prysm é um cliente de consenso de código aberto completo, escrito em Go sob a licença GPL-3.0. Ele apresenta uma interface de usuário de aplicativo Web opcional e prioriza a experiência do usuário, a documentação e a configurabilidade para usuários institucionais e de participação em casa.
-[Mais em Beam](https://medium.com/@jason.carver/intro-to-beam-sync-a0fd168be14a)
+Visite a [documentação do Prysm](https://docs.prylabs.network/docs/getting-started/) para saber mais.
-#### Configuração no cliente {#client-setup}
+### Teku {#teku}
-Os clientes oferecem opções de configuração ricas para atender às suas necessidades. Escolha o que melhor lhe convier com base no nível de segurança, dados disponíveis e custo. Além do algoritmo de sincronização, você pode também definir a limpeza de diferentes tipos de dados antigos. A limpeza habilita a exclusão de dados desatualizados, por exemplo, remover nós de trie do estado que são inacessíveis de blocos recentes.
+Teku é um dos clientes originais da origem da Beacon Chain. Juntamente com os objetivos habituais (segurança, robustez, estabilidade, usabilidade, desempenho), o Teku visa especificamente cumprir integralmente todos os vários padrões de cliente de consenso.
-Preste atenção à documentação do cliente ou página de ajuda para descobrir qual modo de sincronização é o padrão. Você define o tipo de sincronização quando você está configurado, assim:
+O Teku oferece opções de implantação muito flexíveis. O nó beacon e o cliente validador podem ser executados juntos como um único processo, o que é extremamente conveniente para participantes solo, ou os nós podem ser executados separadamente para operações de participação sofisticadas. Além disso, o Teku é totalmente interoperável com o [Web3Signer](https://github.com/ConsenSys/web3signer/) para assinar a segurança da chave e a proteção contra golpes.
-**Configurando sincronização de luz em [GETH](https://geth.ethereum.org/) ou [ERIGON](https://github.com/ledgerwatch/erigon)**
+Teku é escrito em Java e tem licença Apache 2.0. Ele é desenvolvido pela equipe de Protocolos da ConsenSys que também é responsável pelo Besu e Web3Signer. Saiba mais na [documentação do Teku](https://docs.teku.consensys.net/en/latest/).
-`geth --syncmode "light"`
+## Modos de sincronização {#sync-modes}
-Para mais detalhes, confira o tutorial em [rodando Geth light node](/developers/tutorials/run-light-node-geth/).
+Para acompanhar e verificar os dados atuais na rede, o cliente Ethereum precisa sincronizar com o estado da rede mais recente. Isso é feito baixando dados de pares, verificando criptograficamente sua integridade e construindo um banco de dados local da cadeia de blocos.
-**Configuração de sincronização completa com arquivo no [Besu](https://besu.hyperledger.org/)**
+Os modos de sincronização representam diferentes abordagens para este processo com vários trade-offs. Os clientes também variam em sua implementação de algoritmos de sincronização. Sempre consulte a documentação oficial do cliente escolhido para obter detalhes sobre a implementação.
-`besu --sync-mode=FULL`
+### Modos de sincronização na camada de execução {#execution-layer-sync-modes}
-Como qualquer outra configuração, pode ser definida com a bandeira de inicialização ou no arquivo de configuração. Outro exemplo é o [Nethermind](https://docs.nethermind.io/nethermind/) que pede que você escolha uma configuração durante a primeira inicialização e cria um arquivo de configuração.
-
-## Clientes de consenso (antigos clientes 'Eth2') {#consensus-clients}
+#### Sincronização completa {#full-sync}
-Existem vários clientes de consenso (anteriormente conhecidos como clientes 'Eth2') para dar suporte às [implementações de consenso](/upgrades/beacon-chain/). They are running the Beacon Chain and will provide proof-of-stake consensus mechanism to execution clients after [The Merge](/upgrades/merge/).
+A sincronização completa baixa todos os blocos (incluindo cabeçalhos, transações e recibos) e gera o estado da cadeia de blocos de forma incremental, executando cada bloco a partir da origem.
-[Ver os clientes de consenso](/upgrades/get-involved/#clients).
+- Minimiza a confiança e oferece a mais alta segurança, verificando cada transação.
+- Com um número crescente de transações, pode levar dias ou semanas para processar todas as transações.
-| Cliente | Linguagem de programação | Sistemas operacionais | Redes |
-| ----------------------------------------------------------- | ------------------------ | --------------------- | ------------------------------------- |
-| [Teku](https://pegasys.tech/teku) | Java | Linux, Windows, macOS | Beacon Chain, Prater |
-| [Nimbus](https://nimbus.team/) | Nim | Linux, Windows, macOS | Beacon Chain, Prater |
-| [Lighthouse](https://lighthouse-book.sigmaprime.io/) | Rust | Linux, Windows, macOS | Beacon Chain, Prater, Pyrmont |
-| [Lodestar](https://lodestar.chainsafe.io/) | TypeScript | Linux, Windows, macOS | Beacon Chain, Prater |
-| [Prysm](https://docs.prylabs.network/docs/getting-started/) | Vamos | Linux, Windows, macOS | Beacon Chain, Gnosis, Prater, Pyrmont |
+#### Sincronização rápida {#fast-sync}
-## Hardware {#hardware}
+A sincronização rápida baixa todos os blocos (incluindo cabeçalhos, transações e recibos), verifica todos os cabeçalhos, baixa o estado e verifica-os em relação aos cabeçalhos.
-Requisitos de hardware diferem pelo cliente mas geralmente não são tão altos, já que o nó só precisa ser sincronizado. Não confunda isso com mineração, o que requer muito mais poder de computação. Sincronize tempo e desempenho no entanto melhore com hardware mais poderoso. Dependendo das suas necessidades e desejos, a Ethereum pode ser executada em seu computador, servidor doméstico, computadores de placa única ou servidores virtuais privados na nuvem.
+- Depende da segurança do mecanismo de consenso.
+- A sincronização leva apenas algumas horas.
-Uma maneira fácil de executar o seu próprio nó é usando caixas 'plug and play' como [DAppNode](https://dappnode.io/). Ele fornece hardware para rodar clientes e aplicativos que dependem deles com uma interface simples de usuário.
+#### Sincronização leve {#light-sync}
-### Requisitos {#requirements}
+O modo de cliente leve baixa todos os cabeçalhos de bloco, dados de bloco e verifica alguns aleatoriamente. Somente sincroniza a ponta da cadeia do ponto de verificação confiável.
-Antes de instalar qualquer cliente, por favor certifique-se de que seu computador tem recursos suficientes para executá-lo. Requisitos mínimos e recomendados podem ser encontrados abaixo, no entanto a parte chave é o espaço em disco. Sincronizar a blockchain Ethereum é muito de entrada/saída intensiva. É melhor ter um drive de estado sólido (SSD). Para executar um cliente Ethereum no HDD, você precisará de pelo menos 8GB de RAM para usar como cache.
+- Obtém apenas o estado mais recente, enquanto conta com a confiança dos desenvolvedores e o mecanismo de consenso.
+- Cliente pronto para uso com o estado atual da rede em poucos minutos.
-#### Requisitos mínimos {#recommended-specifications}
+[Mais sobre clientes leves](https://www.parity.io/blog/what-is-a-light-client/)
-- CPU com mais de 2 núcleos
-- Mínimo de 4 GB de RAM com SSD, 8 GB ou mais se você tiver um HDD
-- 8+ MBit/s de largura de banda
+#### Sincronização instantânea {#snap-sync}
-#### Especificações recomendadas {#recommended-specifications}
+A sincronização instantânea é a abordagem mais recente para sincronizar um cliente, iniciada pela equipe Geth. O uso de instantâneos dinâmicos servidos por pares recupera todos os dados de conta e armazenamento sem baixar nós de árvores intermediárias e, em seguida, reconstrói a árvore Merkle localmente.
-- CPU rápida com mais de 4 núcleos
-- - de 16 GB de RAM
-- SSD rápido com pelo menos 500 GB de espaço livre
-- - de 25 MBit/s de largura de banda
+- Estratégia de sincronização mais rápida, atualmente padrão na rede principal do Ethereum
+- Economiza muito uso de disco e largura de banda de rede sem sacrificar a segurança
-O modo de sincronização que você escolher afetará os requisitos de espaço, mas estimamos o espaço em disco que você precisará para cada cliente abaixo.
+[Mais sobre sincronização instantânea](https://github.com/ethereum/devp2p/blob/master/caps/snap.md)
| Cliente | Tamanho do disco (sincronização rápida) | Tamanho do disco (arquivo completo) |
| ------------ | --------------------------------------- | ----------------------------------- |
-| Geth | 400GB+ | 6TB+ |
-| OpenEthereum | 280GB+ | 6TB+ |
-| Nethermind | 200GB+ | 5TB+ |
-| Besu | 750GB+ | 5TB+ |
-| Erigon | N/A | 1TB+ |
+| Geth | + de 400 GB | + de 6 TB |
+| OpenEthereum | + de 280 GB | + de 6 TB |
+| Nethermind | + de 500 GB | + de 12 TB |
+| Besu | + de 750 GB | + de 5 TB |
+| Erigon | N/D | + de 1 TB |
-- Observação: Erigon não faz sincronização rápida, mas a limpeza completa é possível (~500GB)
+#### Sincronização otimista {#optimistic-sync}
-![Um gráfico que mostra que o GB necessário para uma sincronização completa está em alta](./full-sync.png)
+A sincronização otimista é uma estratégia de sincronização pós-fusão projetada para ser compatível e retrocompatível com versões anteriores, permitindo que os nós de execução sincronizem por meio de métodos estabelecidos. O mecanismo de execução pode, de modo _otimista_ importar blocos beacon sem verificá-los completamente, encontrar o cabeçalho mais recente e começar a sincronizar a cadeia com os métodos acima. Então, após o cliente de execução ter alcançado, ele informará ao cliente de consenso sobre a validade das transações na Beacon Chain.
-![Um gráfico que mostra que o GB necessário para uma sincronização completa está em alta](./archive-sync.png)
+[Mais sobre sincronização otimista](https://github.com/ethereum/consensus-specs/blob/dev/sync/optimistic.md)
-Estes gráficos mostram como os requisitos de armazenamento estão sempre mudando. Para os dados mais atualizados para Geth e Parity, consulte [a sincronização completa dos dados](https://etherscan.io/chartsync/chaindefault) e [arquivos sincronizados](https://etherscan.io/chartsync/chainarchive).
+#### Sincronização de ponto de verificação {#checkpoint-sync}
-### Ethereum em um computador de placa única {#ethereum-on-a-single-board-computer}
+A sincronização do ponto de verificação, também conhecida como sincronização de subjetividade fraca, cria uma experiência de usuário superior para sincronizar a Beacon Node. É baseado em suposições de [subjetividade fraca](/developers/docs/consensus-mechanisms/pos/weak-subjectivity/) que permite sincronizar a Beacon Chain de um ponto de verificação de subjetividade fraca recente em vez da origem. A sincronização do ponto de verificação torna o tempo de sincronização inicial significativamente mais rápido com suposições de confiança semelhantes às da sincronização da [origem](/glossary/#genesis-block).
-A maneira mais conveniente e barata de executar o nó Ethereum é usar um único computador de mesa com arquitetura ARM como o Raspberry Pi. [Ethereum em ARM](https://twitter.com/EthereumOnARM) fornece imagens de clientes Geth, Parity, Nethermind e Besu. Aqui está um tutorial simples sobre [como criar e configurar um cliente ARM](/developers/tutorials/run-node-raspberry-pi/).
+Na prática, isso significa que seu nó se conecta a um serviço remoto para baixar os estados finalizados recentes e continua verificando os dados a partir desse ponto. A terceira parte que fornece os dados é confiável e deve ser escolhida com cuidado.
-Dispositivos pequenos, acessíveis e eficientes como estes são ideais para executar um nó em casa.
+Mais sobre [sincronização de ponto de verificação](https://notes.ethereum.org/@djrtwo/ws-sync-in-practice)
## Leitura adicional {#further-reading}
-Há muitas informações sobre os clientes Ethereum na Internet. Aqui estão alguns recursos que podem ser úteis.
+Há muitas informações sobre clientes Ethereum na internet. Aqui estão alguns recursos que podem ser úteis.
-- [Fundamentos do Ethereum - Parte 2: Entendendo os nós](https://kauri.io/ethereum-101-part-2-understanding-nodes/48d5098292fd4f11b251d1b1814f0bba/a) _– Wil Barnes, 13 de fevereiro de 2019_
-- [Executando nós completos do Ethereum: um guia completo](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _ - Justin Leroux, 7 de novembro de 2019_
-- [Executando um nó Ethereum](https://docs.ethhub.io/using-ethereum/running-an-ethereum-node/) _– ETHHub, atualizado frequentemente_
-- [Analisando os requisitos de hardware para um nó validado completo do Ethereum](https://medium.com/coinmonks/analyzing-the-hardware-requirements-to-be-an-ethereum-full-validated-node-dc064f167902) _– Albert Palau, 24 de setembro de 2018_
-- [Executando um nó Hyperledger Besu na rede principal de Ethereum: benefícios, requisitos e configuração](https://pegasys.tech/running-a-hyperledger-besu-node-on-the-ethereum-mainnet-benefits-requirements-and-setup/) _– Felipe Faraggi, 7 de maio de 2020_
+- [Ethereum 101 – Parte 2 – Entendendo os nós](https://kauri.io/ethereum-101-part-2-understanding-nodes/48d5098292fd4f11b251d1b1814f0bba/a) _–Wil Barnes, 13 de fevereiro de 2019_
+- [Executando nós completos do Ethereum: um guia para os pouco motivados](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _– Justin Leroux, 7 de novembro de 2019_
+- [Executando um nó Ethereum](https://docs.ethhub.io/using-ethereum/running-an-ethereum-node/) _– ETHHub, atualizado com frequência_
## Tópicos relacionados {#related-topics}
@@ -319,5 +302,5 @@ Há muitas informações sobre os clientes Ethereum na Internet. Aqui estão alg
## Tutoriais relacionados {#related-tutorials}
-- [Executando um nó com Geth](/developers/tutorials/run-light-node-geth/) _: como baixar, instalar e executar o Geth. Covering syncmodes, the JavaScript console, and more._
-- [Transforme sua Raspberry Pi em um nó de validação apenas instalando a configuração em um cartão MicroSD: guia de instalação](/developers/tutorials/run-node-raspberry-pi/) _- Formate sua Raspberry Pi 4, conecte o disco SSD e ligue o dispositivo para transformar sua Raspberry Pi 4 em um full node de Ethereum para executar a camada de execução (rede principal) e/ou a camada de consenso (Beacon Chain/validador)._
+- [Executando um nó com Geth](/developers/tutorials/run-light-node-geth/) _– Como baixar, instalar e executar o Geth. Cobrindo os modos de sincronização, o console JavaScript e muito mais._
+- [Transforme seu Raspberry Pi 4 em um nó validador apenas instalando o cartão MicroSD – Guia de instalação](/developers/tutorials/run-node-raspberry-pi/) _– Ligue seu Raspberry Pi 4, conecte um cabo Ethernet, conecte o disco SSD e ligue o dispositivo para transformar o Raspberry Pi 4 em um nó Ethereum completo executando a camada de execução (Rede principal) e/ou a camada de consenso (Beacon Chain / validador)._
diff --git a/src/content/translations/pt-br/developers/docs/nodes-and-clients/nodes-as-a-service/index.md b/src/content/translations/pt-br/developers/docs/nodes-and-clients/nodes-as-a-service/index.md
index ab4375369d1..549b10143c7 100644
--- a/src/content/translations/pt-br/developers/docs/nodes-and-clients/nodes-as-a-service/index.md
+++ b/src/content/translations/pt-br/developers/docs/nodes-and-clients/nodes-as-a-service/index.md
@@ -11,19 +11,27 @@ Executar o seu próprio [nó Ethereum](/developers/docs/nodes-and-clients/#what-
## Pré-requisitos {#prerequisites}
-Se você ainda não sabe o que são os nós e os clientes e como eles funcinam, veja em: [Nós e clientes](/developers/docs/nodes-and-clients/).
+Se você ainda não sabe o que são os nós e os clientes e como eles funcionam, confira [Nós e clientes](/developers/docs/nodes-and-clients/).
+
+## Participantes {#stakoooooooooooooors}
+
+Os participantes individuais devem executar sua própria infraestrutura, em vez de depender de provedores de terceiros. Isso significa executar um cliente de execução acoplado a um cliente de consenso. Antes da [Fusão](/upgrades/merge), era possível executar apenas um cliente de consenso e usar um provedor centralizado para dados de execução; isso não é mais possível: um participante solo deve executar ambos os clientes. No entanto, há serviços disponíveis para facilitar este processo.
+
+[Leia mais sobre execução de um nó](/developers/docs/nodes-and-clients/run-a-node/).
+
+Os serviços descritos nesta página são para nós não participantes.
## Como funcionam os serviços de nós? {#how-do-node-services-work}
Os provedores de nós disponibilizam sua infraestrutura para você não precisar de uma.
-Esses serviços são tipicamente disponibilizados via uma chave API que você pode usar para escrever e ler as informações dentro da cadeia de blocos. Muitas vezes, incluindo acesso a [redes de testes Ethereum](/developers/docs/networks/#ethereum-testnets) além da rede principal.
+Esses serviços são geralmente fornecem uma chave API que você pode usar para gravar e ler as informações dentro da cadeia de blocos. Muitas vezes, incluindo acesso a [redes de testes Ethereum](/developers/docs/networks/#ethereum-testnets) além da rede principal.
Alguns serviços oferecem a você o seu próprio nó dedicado que eles gerenciam para você, enquanto outros usam os balanceadores de carga para distribuir atividade entre nós.
Quase todos os serviços de nó são extremamente fáceis de integrar, envolvendo uma alteração de linha no seu código para trocar seu nó hospedado, ou até mesmo alternar entre os próprios serviços.
-Muitas vezes os serviços de nó executam uma variedade de [clientes de nó](/developers/docs/nodes-and-clients/#execution-clients) e [tipos](/developers/docs/nodes-and-clients/#node-types), permitindo que você acesse nós completos e arquive, além dos métodos específicos do cliente, em uma API.
+Muitas vezes os serviços de nó executam uma variedade de [clientes de nó](/developers/docs/nodes-and-clients/#execution-clients) e [tipos](/developers/docs/nodes-and-clients/#node-types), permitindo que você acesse nós completos e arquive, além dos métodos específicos do cliente em uma API.
É importante notar que os serviços de nós não armazenam nem devem armazenar suas chaves ou informações privadas.
@@ -31,11 +39,11 @@ Muitas vezes os serviços de nó executam uma variedade de [clientes de nó](/de
O principal benefício para usar um serviço de nós é não ter de gastar tempo de engenharia mantendo e gerenciando nós você mesmo. Isso permite que você se concentre na construção do seu produto em vez de se preocupar com a manutenção da infraestrutura.
-Executar seus próprios nós pode ser muito caro, quer seja de armazenamento, largura de banda, quer de tempo de engenharia. Things like spinning up more nodes when scaling, upgrading nodes to the latest versions, and ensuring state consistency, can distract from building and spending resources on your desired web3 product.
+Executar seus próprios nós pode ser muito caro, quer seja de armazenamento, largura de banda, quer de tempo de engenharia. Dispor de mais nós ao dimensionar, atualizar nós para as versões mais recentes e garantir a consistência dos estados pode roubar tempo para criar e usar recursos no seu produto web3 desejado.
## Quais são os benefícios do uso do serviço de nós? {#cons-of-using-a-node-service}
-Usando um serviço nó você está centralizando o aspecto da infraestrutura do seu produto. Por este motivo, os projetos que possuem a descentralização a maior importância podem preferir nós de auto-hospedagem a terceirizar de terceiros.
+Usando um serviço nó você está centralizando o aspecto da infraestrutura do seu produto. Por esse motivo, os projetos que dão à descentralização a maior importância podem preferir nós de auto-hospedagem a terceirizar o serviço a terceiros.
Leia mais sobre os [benefícios de executar o seu próprio nó](/developers/docs/nodes-and-clients/#benefits-to-you).
@@ -43,17 +51,18 @@ Leia mais sobre os [benefícios de executar o seu próprio nó](/developers/docs
Segue uma lista de alguns dos fornecedores de nós para Ethereum mais populares. Sinta-se à vontade para adicionar qualquer um que estiver faltando! Cada nó de serviço oferece diferentes benefícios e recursos, além de níveis gratuitos ou pagos. Você deve analisar quais deles melhor se adaptam às suas necessidades antes de tomar uma decisão.
-- [**Alchemy**](https://www.alchemy.com/)
+- [**Alchemy**](https://alchemy.com/)
- [Documentos](https://docs.alchemyapi.io/)
- Recursos
- - Opção de nível livre
- - Escale conforme a demanda
- - Dados de arquivo grátis
- - Ferramentas de análise
- - Painel de controle
- - Terminais de API únicos
- - Webhooks
- - Suporte direto
+ - Maior camada gratuita com 300M unidades de computação por mês (aproximadamente 30M solicitações getLatestBlock)
+ - Suporte multicadeia para Polygon, Starknet, Otimizm, Arbitrum
+ - Atingindo cerca de 70% do maior volume de transações DeFi e dapps Ethereum
+ - Webhooks em tempo real via Alchemy Notify
+ - O melhor suporte e confiabilidade / estabilidade
+ - API NFT da Alchemy
+ - Painel com Request Explorer, Mempool Watcher e Composer
+ - Acesso à torneira para testes integrados
+ - Comunidade ativa de construtores do Discord com 18 mil usuários
- [**Ankr**](https://www.ankr.com/)
- [Documentos](https://docs.ankr.com/)
- Funcionalidades
@@ -84,124 +93,168 @@ Segue uma lista de alguns dos fornecedores de nós para Ethereum mais populares.
- Traga sua própria nuvem
- Valor do pagamento por hora
- Suporte direto 24/7
+- [**DataHub**](https://datahub.figment.io)
+ - [Documentação](https://docs.figment.io/)
+ - Recursos
+ - Opção de camada gratuita com 3.000.000 qs/mês
+ - Pontos de extremidade RPC e WSS
+ - Nós dedicados e arquivados
+ - Escalonamento auromático (Descontos de volume)
+ - Dados de arquivamento grátis
+ - Análise do Serviço
+ - Painel
+ - Suporte Direto 24/7
+ - Pague em Crypto (Enterprise)
- [**GetBlock**](https://getblock.io/)
- [Documentação](https://getblock.io/docs/get-started/authentication-with-api-key/)
- Recursos
- Acesso a mais de 40 nós da blockchain
- - 40.000 solicitações diárias gratuitas
+ - 40K solicitações diárias grátis
- Número ilimitado de chaves de API
- Alta velocidade de conexão em 1GB/seg
- - Rastrear+Arquivar
+ - Rastreamento+Arquivar
- Análises avançadas
- Atualizações automatizadas
- Suporte técnico
- [**InfStones**](https://infstones.com/)
- Recursos
- - Opção de nível gratuito
- - Adapte conforme suas necessidades
+ - Opção de nível livre
+ - Escale conforme a demanda
- Estatísticas
- - Painel Administrativo
- - Terminais de API únicos
+ - Painel
+ - Pontos de extremidade de API únicos
- Nós completos dedicados
- Tempo de sincronização rápido para implantações dedicadas
- Suporte direto 24/7
- - Acesso a mais de 50 nós da blockchain
+ - Acesso a mais de 50 nós da cadeia de blocos
- [**Infura**](https://infura.io/)
- [Documentação](https://infura.io/docs)
- Recursos
- - Opção de nível gratuito
- - Adapte conforme suas necessidades
+ - Opção de nível livre
+ - Escale conforme a demanda
- Dados de arquivos pagos
- Suporte direto
- Painel
- [**Kaleido**](https://kaleido.io/)
- [Documentação](https://docs.kaleido.io/)
- Recursos
- - Free startier tier
- - One-click Ethereum node deployment
- - Customizable clients and algorithms (Geth, Quorum & Besu || PoA, IBFT & Raft)
- - 500+ administrative and service APIs
- - RESTful interface for Ethereum transaction submission (Apache Kafka backed)
- - Outbound streams for event delivery (Apache Kafka backed)
- - Deep collection of "off-chain" and ancillary services (e.g. bilateral encrypted messaging transport)
- - Straightforward network onboarding with governance and role-based access control
- - Sophisticated user management for both administrators and end users
- - Highly scalable, resilient, enterprise-grade infrastructure
- - Cloud HSM private key management
- - Ethereum Mainnet Tethering
- - ISO 27k and SOC 2, Type 2 certifications
- - Dynamic runtime configuration (e.g. adding cloud integrations, altering node ingresses, etc.)
- - Support for multi-cloud, multi-region and hybrid deployment orchestrations
- - Simple hourly SaaS-based pricing
- - SLAs and 24x7 support
+ - Nível inicial gratuito
+ - Implementação de nó Ethereum um clique
+ - Clientes e algoritmos personalizáveis (Geth, Quorum & Besu ├PoA, IBFT & Raft)
+ - Mais de 500 APIs administrativas e de serviço
+ - Interface RESTful para envio de transação Ethereum (suporte Apache Kafka)
+ - Fluxos de saída para entrega de eventos (suporte Apache Kafka)
+ - Profunda coleção de serviços "fora da cadeia" e auxiliares (por exemplo, transporte de mensagens criptografadas bilaterais)
+ - Encaminhamento de rede com controle de governança e acesso baseado em papéis
+ - Sofisticado gerenciamento de usuários para ambos administradores e usuários finais
+ - Infraestrutura altamente escalonável, resiliente, de nível empresarial
+ - Gerenciamento de chaves privadas HSM
+ - Tethering de rede principal Ethereum
+ - Certificações de tipo 2, ISO 27k e SOC 2
+ - Configuração dinâmica de execução (por exemplo, adicionar integrações na nuvem, alterar entradas do nó, etc.)
+ - Suporte para orquestrações multi-nuvem, multi-região e de implantação híbrida
+ - Preços simples por hora do SaaS
+ - SLAs e suporte 24x7
- [**Moralis**](https://moralis.io/)
- [Documentação](https://docs.moralis.io/)
- Recursos
- Nós compartilhados gratuitos
- Nós de arquivos compartilhados gratuitos
- - A privacidade focada (sem política de registros)
+ - Privacidade focada (sem política de registros)
- Suporte a cadeia cruzada
- Escale conforme a demanda
- - Painel de controle
- - SDK único de Ethereum
+ - Painel
+ - SDK único do Ethereum
- Terminais de API únicos
- Suporte técnico direto
+- [**NOWNodes**](https://nownodes.io/)
+ - [Documentação](https://documenter.getpostman.com/view/13630829/TVmFkLwy)
+ - Recursos
+ - Acesso a mais de 50 nós da cadeia de blocos
+ - Chave de API Gratuita
+ - Exploradores de Bloco
+ - Tempo de Resposta da API ⩽1 seg
+ - Equipe de suporte 24/7
+ - Gerente de Conta Pessoal
+ - Nós compartilhados, arquivo, cópia de segurança e dedicados
- [**Rede Pocket**](https://www.pokt.network/)
- [Documentação](https://docs.pokt.network/home/)
- Recursos
- - Protocolo RPC e Mercado Descentralizados
- - 1M Solicitações por Nível Gratuito (por ponto de extremidade, max 2)
- - [Terminais Públicos](https://docs.pokt.network/home/resources/public-rpc-endpoints)
- - Programa Pre-Stake+ (se você precisar de mais de 1M pedidos por dia)
- - Mais de 15 Blockchains suportados
- - Mais de 6400 ganha o POKT por servir aplicativos
- - Nó de arquivamento, nó de arquivamento com rastreamento, & Suporte a Nó de Testnet
- - Diversidade do nó principal Ethereum
- - Nenhum Ponto Único de Falha
- - Zero Downtime
- - Cost-Eficaz Near-Zero Tokenomics (stake POKT uma vez para largura de banda da rede)
- - Sem custos afundados mensais, transforme sua infraestrutura em um ativo
- - Balanceamento de Carga incorporado no Protocolo
- - Escala infinitamente o número de solicitações por dia e nós por hora à medida que você avança
+ - Protocolo RPC e mercado descentralizados
+ - 1 milhão de solicitações gratuitas por dia (por ponto de extremidade, máx. 2)
+ - [Pontos de extremidade públicos](https://docs.pokt.network/home/resources/public-rpc-endpoints)
+ - Programa Pre-Stake+ (se você precisar de mais de 1 milhão de solicitações por dia)
+ - Mais de 15 cadeias de blocos suportadas
+ - Mais de 6.400 nós com ganhos de POKT por atender a aplicativos
+ - Nó de arquivamento, nó de arquivamento com rastreamento e suporte a nó de rede de testes
+ - Diversidade do nó da rede principal Ethereum
+ - Nenhum ponto único de falha
+ - Sem tempo de inatividade
+ - Tokenomics rentáveis e perto de zero (aposta de POKT uma vez para a largura de banda da rede)
+ - Sem custos irrecuperáveis mensais. Transforme sua infraestrutura em um ativo
+ - Balanceamento de carga incorporado ao protocolo
+ - Adapta infinitamente o número de solicitações por dia e nós por hora à medida que você avança
- A opção mais privada e resistente à censura
- - Suporte ao desenvolvedor manual
- - [Portal de bolso](https://bit.ly/ETHorg_POKTportal) painel e análise
-- [**QuikNode**](https://www.quiknode.io/)
- - Recursos
- - Teste por 7 dias de graça
- - Suporte variado
- - Webhooks
- - Painel de controle
- - Estatísticas
+ - Suporte prático para os desenvolvedores
+ - Painel e ferramentas de análise [Pocket Portal](https://bit.ly/ETHorg_POKTportal)
+- [**QuickNode**](https://www.quicknode.com)
+ - [Documentação](https://www.quicknode.com/docs/)
+ - Recursos
+ - Desempenho e confiabilidade líder do setor
+ - Suporte técnico 24/7& Comunidade Discord de desenvolvedores
+ - Balanceado geograficamente, multi-nuvem/metal, rede de baixa latência
+ - Suporte de múltiplas cadeias (Optimism, Arbitrum, Polygon + 11 outros)
+ - Camadas intermediárias para velocidade e estabilidade (roteamento de chamadas, cache, indexação)
+ - Monitoramento de contratos inteligentes via Webhooks
+ - Painel intuitivo, conjunto de análises, compositor RPC
+ - Funcionalidades avançadas de segurança (JWT, mascaramento, lista de permissões)
+ - Dados e API de análise da NFT
+ - [Certificado SOC2](https://www.quicknode.com/security)
+ - Adequado para desenvolvedores e empresas
- [**Rivet**](https://rivet.cloud/)
- [Documentação](https://rivet.readthedocs.io/en/latest/)
- Recursos
- - Opção de nível livre
- - Adapte conforme suas necessidades
+ - Opção de nível gratuito
+ - Redimensione conforme suas necessidades
+- [**SenseiNode**](https://senseinode.com)
+ - [Documentação](https://docs.senseinode.com/)
+ - Recursos
+ - Nós dedicados e compartilhados
+ - Painel
+ - Hospedagem fora da AWS em vários provedores de hospedagem em diferentes locais da América Latina
+ - Clientes Prysm e Lighthouse
- [**SettleMint**](https://console.settlemint.com/)
- [Documentação](https://docs.settlemint.com/)
- Recursos
- Avaliação gratuita
- - Escale conforme a demanda
+ - Redimensione conforme suas necessidades
- Suporte a GraphQL
- Pontos de extremidade RPC e WSS
- Nós completos dedicados
- - Traga sua nuvem
+ - Traga sua própria nuvem
- Ferramentas de análise
- - Painel de controle
- - Preços dos salários por hora
+ - Painel
+ - Valor do pagamento por hora
- Suporte direto
- [**Watchdata**](https://watchdata.io/)
- [Documentação](https://docs.watchdata.io/)
- Recursos
- - Data reliability
- - Uninterrupted connection with no downtime
- - Process automation
- - Free tariffs
- - High limits that suit any user
- - Support for various nodes
- - Resource scaling
- - High processing speeds
+ - Confiabilidade de dados
+ - Conexão ininterrupta sem tempo de inatividade
+ - Automação do processo
+ - Tarifas gratuitas
+ - Altos limites que se adaptam a qualquer usuário
+ - Suporte para vários nós
+ - Escala de recursos
+ - Alta velocidade de processamento
+- [**ZMOK**](https://zmok.io/)
+ - [Documentação](https://docs.zmok.io/)
+ - Recursos
+ - Executando como serviço Front-running
+ - Banco de transações global com métodos de pesquisa/filtragem
+ - Taxa TX ilimitada e Gás infinita para envio de transações
+ - O máximo de velocidade na obtenção do novo bloco e leitura da cadeia de blocos
+ - O melhor preço por garantia de chamada de API
## Leitura adicional {#further-reading}
diff --git a/src/content/translations/pt-br/developers/docs/nodes-and-clients/run-a-node/index.md b/src/content/translations/pt-br/developers/docs/nodes-and-clients/run-a-node/index.md
index 1d4a84e11c9..9878af5b5f2 100644
--- a/src/content/translations/pt-br/developers/docs/nodes-and-clients/run-a-node/index.md
+++ b/src/content/translations/pt-br/developers/docs/nodes-and-clients/run-a-node/index.md
@@ -7,157 +7,465 @@ sidebarDepth: 2
Exdcutar um nó próprio proporciona vários benefícios, abre novas possibilidades e ajuda a dar suporte ao ecossistema. Esta página vai ajudar você a iniciar seu próprio nó, para assim participar na validação das transações de Ethereum.
+Observe que após [A Fusão](/upgrades/merge), dois clientes são necessários para executar um nó Ethereum; um cliente da **camada de execução (EL)** e um cliente da **camada de consenso (CL)**. Esta página mostrará como instalar, configurar e conectar esses dois clientes para executar um nó Ethereum.
+
## Pré-requisitos {#prerequisites}
-Você deve entender o que é um nó de Ethereum e por que é importante executar um cliente. Isso é abordado em [Nós e clientes](/developers/docs/nodes-and-clients/).
+Você deve entender o que é um nó Ethereum e por que é importante executar um cliente. Isso é abordado em [Nós e clientes](/developers/docs/nodes-and-clients/).
-If you're new to the topic of running a node, or looking for a less technical path, we recommend first checking out our user-friendly introduction on [running an Ethereum node](/run-a-node).
+Se você é novo no tópico de executar um nó ou está procurando um caminho menos técnico, recomendamos primeiro verificar nossa introdução simplificada sobre como [executar um nó Ethereum](/run-a-node).
## Escolhendo um método {#choosing-approach}
-O primeiro passo para iniciar um nó é escolher o método. Você precisa escolher um cliente (o software), o ambiente e os parâmetros com os quais você deseja começar. Veja todos os [clientes da rede principal](/developers/docs/nodes-and-clients/#advantages-of-different-implementations) disponíveis.
+O primeiro passo para iniciar um nó é escolher sua abordagem. Com base nos requisitos e várias possibilidades, você deve selecionar a implementação do cliente (de ambos os clientes de execução e consenso), o ambiente (hardware, sistema) e os parâmetros para as configurações do cliente.
+
+Esta página guiará você por essas decisões e ajudará você a encontrar a maneira mais adequada para executar sua instância do Ethereum.
+
+Para escolher entre as implementações de cliente, veja todos os [clientes de execução](/developers/docs/nodes-and-clients/#execution-clients) prontos para a Rede principal disponíveis, [clientes de consenso](/developers/docs/nodes-and-clients/#consensus-clients) e saiba mais sobre a [diversidade de clientes](/developers/docs/nodes-and-clients/client-diversity).
+
+Decida se deseja executar o software em seu próprio [hardware ou na nuvem](#local-vs-cloud), considerando os [requisitos](#requirements) dos clientes.
-#### Configurações do cliente {#client-settings}
+Após preparar o ambiente, instale os clientes escolhidos com [interface simples para iniciantes](#automatized-setup) ou [manualmente](#manual-setup) usando um terminal com opções avançadas.
-As implementações do cliente habilitam diferentes modos de sincronização e várias outras opções. [Os modos de sincronização](/developers/docs/nodes-and-clients/#sync-modes) representam diferentes métodos de download e validação de dados da blockchain. Antes de iniciar o nó, você deve decidir que rede e modo de sincronização deve ser usado. As coisas mais importantes a considerar são o espaço em disco e o tempo necessário de sincronização do cliente.
+Quando o nó estiver em execução e sincronização, você estará pronto para [usá-lo](#using-the-node), mas certifique-se de ficar de olho em sua [manutenção](#operating-the-node).
-Todos os recursos e opções podem ser encontrados na documentação do cliente. Várias configurações do cliente podem ser definidas executando o próprio cliente com as flags correspondentes. Você pode obter mais informações sobre flags do [EthHub](https://docs.ethhub.io/using-ethereum/running-an-ethereum-node/#client-settings) ou da documentação do cliente. Para fins de teste, você pode preferir executar o cliente em uma das redes de teste. [Veja a visão geral das redes suportadas](/developers/docs/nodes-and-clients/#execution-clients).
+![Configuração do cliente](./diagram.png)
### Ambiente e hardware {#environment-and-hardware}
#### Local ou nuvem {#local-vs-cloud}
-Os clientes Ethereum podem ser executados em computadores pessoais e não exigem hardware específico, ao contrário da mineração. Portanto, existem várias opções de implantação em base as suas necessidades. Para simplificar, vamos analisar como executar um nó em uma máquina física local e um servidor na nuvem:
+Os clientes Ethereum são capazes de executar em computadores de grau de consumo e não exigem nenhum hardware especial, como máquinas de mineração, por exemplo. Portanto, você tem várias opções para implantar o nó de acordo com suas necessidades. Para simplificar, vamos analisar como executar um nó em uma máquina física local e um servidor na nuvem:
- Nuvem
- - Os servidores oferecem alto tempo de atividade e endereços IP públicos estáticos
+ - Os provedores oferecem alto tempo de atividade do servidor e endereços IP públicos estáticos
- Obter um servidor dedicado ou virtual pode ser mais cômodo que desenvolver o seu próprio
- A desvantagem está em ter que confiar em um terceiro: o servidor
- - Por causa do tamanho do armazenamento necessário para executara um nó completo, alugar um servidor pode ser caro
+ - Por causa do tamanho do armazenamento necessário para o nó completo, o preço de um servidor alugado pode ficar alto
- Hardware próprio
- Um método mais confiável e soberano
- Investimento único
- Existe a opção para comprar máquinas pré-configuradas
- - Você tem que se preparar mentalmente para manter e solucionar os problemas potenciais que surgirem
+ - Você tem que fisicamente preparar, manter e solucionar os problemas potenciais que surgirem
Ambas as opções têm vantagens e desvantagens, as quais foram resumidas acima. Caso estiver procurando uma solução para a nuvem, além de muitos provedores tradicionais de computação na nuvem, também existem serviços focados em executar nós. Por exemplo:
- [QuikNode](https://www.quiknode.io/)
- [Blockdaemon](https://blockdaemon.com)
-- [LunaNode](https://www.lunanode.com/)
- [Alchemy](https://www.alchemy.com/)
+Confira também [nós como serviço](/developers/docs/nodes-and-clients/nodes-as-a-service/) para obter mais opções de nós hospedados.
+
#### Hardware {#hardware}
-No entanto, uma rede descentralizada que resistente à censura não deve depender de provedores na nuvem. É, portanto, melhor para o ecossistema se você mesmo executa seu próprio nó usando seu próprio hardware. As opções mais simples são máquinas pré-configuradas como:
+No entanto, uma rede descentralizada que resiste à censura não deve depender de provedores na nuvem. Em vez disso, executar seu nó em seu próprio hardware local é mais saudável para o ecossistema. As [estimativas](https://www.ethernodes.org/networkType/Hosting) mostram uma grande parte dos nós executados na nuvem, o que pode se tornar um único ponto de falha.
+
+Os clientes Ethereum podem ser executados no seu computador, laptop, servidor ou até mesmo em um computador de placa única. Enquanto executar clientes em seu computador pessoal é possível. Ter uma máquina dedicada apenas para seu nó pode melhorar significativamente seu desempenho e segurança enquanto minimiza o impacto em seu computador principal.
+
+O uso de seu próprio hardware pode ser muito fácil. Existem muitas opções simples, bem como configurações avançadas para pessoas mais técnicas. Então, vamos analisar os requisitos e meios para executar clientes Ethereum em sua máquina.
+
+#### Requisitos {#requirements}
+
+Os requisitos de hardware diferem de acordo com o cliente, mas geralmente não são tão altos, já que o nó só precisa ser sincronizado. Não confunda isso com mineração, que requer muito mais poder de computação. Os tempos de sincronização e desempenho, no entanto, melhoram com hardware mais potente.
+
+Antes de instalar qualquer cliente, certifique-se de que seu computador tem recursos suficientes para executá-lo. Você pode encontrar os requisitos mínimos e recomendados abaixo.
+
+O gargalo para seu hardware é, em sua maioria, o espaço em disco. Sincronizar a cadeia de blocos Ethereum é muito intensivo em entrada/saída e requer muito espaço. É melhor ter uma **unidade de estado sólido (SSD)** com centenas de GBs de espaço livre para economizar, mesmo após a sincronização.
+
+O tamanho do banco de dados e a velocidade da sincronização inicial dependem do cliente escolhido, sua configuração e [estratégia de sincronização](/developers/docs/nodes-and-clients/#sync-modes).
+
+Verifique também que sua conexão de Internet não seja limitada devido a um [limite de largura de banda](https://wikipedia.org/wiki/Data_cap). É recomendado usar uma conexão ilimitada para que a sincronização inicial e os dados transmitidos à rede possam exceder seu limite.
+
+##### Sistema operacional {#operating-system}
+
+Todos os clientes suportam os principais sistemas operacionais: Linux, MacOS e Windows. Isso significa que você pode executar seu nó em computadores ou servidores regulares com o sistema operacional (SO) que melhor atenda às suas necessidades. Certifique-se, porém, de que seu sistema operacional está atualizado para evitar possíveis problemas e vulnerabilidades de segurança.
+
+##### Requisitos mínimos {#minimum-requirements}
+
+- CPU com mais de 2 núcleos
+- 8 GB RAM
+- 700 GB de espaço livre em disco
+- - de 10 MBit/s de largura de banda
+
+##### Especificações recomendadas {#recommended-hardware}
+
+- CPU rápida com mais de 4 núcleos
+- - de 16 GB de RAM
+- SSD rápido com + de 1 TB
+- - de 25 MBit/s de largura de banda
+
+O modo de sincronização e o cliente que você escolher afetará os requisitos de espaço, mas estimamos o espaço em disco necessário para cada cliente abaixo.
+
+| Cliente | Tamanho do disco (sincronização rápida) | Tamanho do disco (arquivo completo) |
+| ---------- | --------------------------------------- | ----------------------------------- |
+| Geth | + de 500 GB | + de 12 TB |
+| Nethermind | + de 500 GB | + 12 TB |
+| Besu | + de 800 GB | + de 12 TB |
+| Erigon | N/D | + de 2,5 TB |
+
+- Nota: Erigon não oferece sincronização rápida, mas a limpeza completa é possível (~ 500 Gb)
+
+Para clientes de consenso, o requisito de espaço também depende da implementação do cliente e dos recursos habilitados (por exemplo, validador slasher), mas geralmente contam com outros 200 Gb necessários para dados de beacon. Com um grande número de validadores, a carga de largura de banda também cresce. Você pode encontrar [detalhes sobre os requisitos do cliente de consenso nesta análise](https://medium.com/@migalabs/analysis-of-ethereum-2-consensus-clients-dfede8e0145e).
+
+#### Soluções "Plug-and-play" {#plug-and-play}
+
+A opção mais fácil para executar um nó com seu próprio hardware é usando ferramentas plug-and-play. Máquinas pré-configuradas de fornecedores oferecem a experiência mais direta: pedir, conectar, executar. Tudo é pré-configurado e roda automaticamente com um guia intuitivo e painel de controle para monitorar e controlar o software.
- [DappNode](https://dappnode.io/)
- [Avado](https://ava.do/)
-Verifique os requisitos mínimos e recomendados de espaço em disco [para cada cliente e para cada modo de sincronização](/developers/docs/nodes-and-clients/#requirements). Geralmente, um computador modesto deveria ser suficiente. O problema geralmente é a velocidade da unidade. Durante a sincronização inicial, os clientes de Ethereum realizam muitas operações de leitura/gravação. Portanto, é fortemente recomendado usar um SSD. Um cliente poderia nem mesmo [ser capaz de sincronizar completamente o estado atual da rede principal no HDD](https://github.com/ethereum/go-ethereum/issues/16796#issuecomment-391649278), ficando preso alguns blocos atrás na rede. Você pode executar a maioria dos clientes até mesmo em um [único computador do tipo ARM](/developers/docs/nodes-and-clients/#ethereum-on-a-single-board-computer/). De fato, é possível usar o [sistema operacional Ethbian](https://ethbian.org/index.html) para Raspberry Pi 4. This lets you [run a client by flashing the SD card](/developers/tutorials/run-node-raspberry-pi/). Com base no seu software e nas opções de hardware, o tempo de sincronização inicial e os requisitos de armazenamento podem variar. Certifique-se de [verificar os tempos de sincronização e os requisitos de armazenamento](/developers/docs/nodes-and-clients/#recommended-specifications). Verifique também que sua conexão de Internet não seja limitada devido a um [limite de largura de banda](https://wikipedia.org/wiki/Data_cap). É recomendado usar uma conexão ilimitada para que a sincronização inicial e os dados transmitidos à rede possam exceder seu limite.
+#### Ethereum em um computador de placa única {#ethereum-on-a-single-board-computer}
-#### Sistema operacional {#operating-system}
+Uma maneira fácil e barata de executar um nó Ethereum é usar um computador de placa única, mesmo com uma arquitetura ARM como o Raspberry Pi. [Ethereum no ARM](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/) fornece imagens fáceis de executar de múltipla execução e cliente de consenso para Raspberry Pi e outras placas ARM.
-Todos os clientes suportam os principais sistemas operacionais: Linux, MacOS e Windows. Isso significa que você pode executar seu nó em computadores ou servidores regulares com o sistema operacional (SO) que melhor atenda às suas necessidades. Certifique-se, porém, de que seu sistema operacional está atualizado para evitar possíveis problemas e vulnerabilidades de segurança.
+Dispositivos pequenos, acessíveis e eficientes como esses são ideais para executar um nó em casa, mas tenha em mente o seu desempenho limitado.
## Executando seu nó {#spinning-up-node}
-### Obtendo o software do cliente {#getting-the-client}
+A configuração real do cliente pode ser feita com programas automatizados ou manualmente, configurando o software do cliente diretamente.
+
+Para usuários menos avançados, a abordagem recomendada é usar um programa, software que o orienta na instalação e automatiza o processo de configuração do cliente. No entanto, se você tiver alguma experiência de usar um terminal, as etapas para configuração manual devem ser simples de seguir.
+
+### Guia de configuração {#automatized-setup}
-Em primeiro lugar, baixe seu [software de cliente preferido](/developers/docs/nodes-and-clients/#execution-clients)
+Vários projetos de fácil utilização visam melhorar a experiência de configuração de um cliente. Esses programas fornecem instalação e configuração automática de cliente, com alguns até oferecendo uma interface gráfica para configuração guiada e monitoramento de clientes.
-Você pode simplesmente baixar um aplicativo ou pacote de instalação executável que se adeque ao seu sistema operacional e a seu hardware. Verifique sempre as assinaturas e os checksums dos pacotes baixados. Alguns clientes também oferecem repositórios para facilitar a instalação e as atualizações. Se preferir, pode criar a partir da fonte. Todos os clientes são de código aberto para que você possa criá-los a partir do código fonte com o compilador adequado.
+Abaixo estão alguns projetos que podem ajudá-lo a instalar e controlar clientes apenas com alguns cliques:
-Os binários executáveis para implementações do cliente estável na rede principal podem ser baixados dos website deles:
+- [DappNode](https://docs.dappnode.io/get-started/installation/custom-hardware/installation/overview/) – O DappNode não vem apenas com uma máquina de um fornecedor. O software, o programa atual e o centro de controle com muitos recursos podem ser usados em hardware arbitrário.
+- [eth-docker](https://eth-docker.net/docs/About/Overview/) – Configuração automatizada usando Docker focada em participação fácil e segura, requer conhecimento básico de terminal e Docker, recomendado para usuários um pouco mais avançados.
+- [Stereum](https://stereum.net/ethereum-node-setup/) – Inicialização para instalar clientes em um servidor remoto via conexão SSH com um guia de configuração GUI, centro de controle e muitas outras funcionalidades.
+- [NiceNode](https://www.nicenode.xyz/) – Programa com uma experiência de usuário simples para executar um nó em seu computador. Basta escolher os clientes e iniciá-los com alguns cliques. Ainda em desenvolvimento.
+### Configuração manual do cliente {#manual-setup}
+
+A outra opção é baixar, verificar e configurar o software cliente manualmente. Mesmo que alguns clientes ofereçam uma interface gráfica, uma configuração manual ainda requer habilidades básicas com o terminal, mas oferece muito mais versatilidade.
+
+Conforme explicado anteriormente, configurar seu próprio nó Ethereum exigirá executar um par de clientes de consenso e execução. Alguns clientes podem incluir um cliente leve de outro tipo e sincronizar sem a necessidade de qualquer outro software. No entanto, a verificação sem confiança completa requer ambas as implementações.
+
+#### Obtendo o software do cliente {#getting-the-client}
+
+Primeiro, você precisa obter o software de [cliente de execução](/developers/docs/nodes-and-clients/#execution-clients) e de [cliente de consenso](/developers/docs/nodes-and-clients/#consensus-clients) de sua preferência.
+
+Você pode simplesmente baixar um aplicativo executável ou um pacote de instalação que se adapte ao seu sistema operacional e arquitetura. Sempre verifique as assinaturas e as somas de verificação dos pacotes baixados. Alguns clientes também oferecem repositórios ou imagens do Docker para instalação e atualizações mais fáceis. Todos os clientes são de código aberto, portanto, você também pode construí-los a partir do código-fonte. Isso é um método mais avançado, mas em alguns casos pode ser necessário.
+
+Instruções para instalar cada cliente são fornecidas na documentação associada nas listas de clientes acima.
+
+Aqui estão as páginas de lançamento dos clientes, nas quais você pode encontrar seus binários pré-construídos ou instruções sobre instalação:
+
+##### Clientes de execução {#execution-clients}
+
+- [Besu](https://github.com/hyperledger/besu/releases)
+- [Erigon](https://github.com/ledgerwatch/erigon#usage) (não fornece um binário pré-construído, precisa ser compilado)
- [Geth](https://geth.ethereum.org/downloads/)
-- [OpenEthereum,](https://github.com/openethereum/openethereum/releases)
- [Nethermind](https://downloads.nethermind.io/)
-- [Besu](https://besu.hyperledger.org/en/stable/)
-- [Erigon](https://github.com/ledgerwatch/erigon)
-**Note que o OpenEthereum [foi descontinuado](https://medium.com/openethereum/gnosis-joins-erigon-formerly-turbo-geth-to-release-next-gen-ethereum-client-c6708dd06dd) e não está mais sendo mantido.** Use-o com cuidado e de preferência mude para outra implementação do cliente.
+Também vale a pena notar que a diversidade de clientes é um [problema na camada de execução](/developers/docs/nodes-and-clients/client-diversity/#execution-layer). Recomenda-se que os leitores considerem a execução de um cliente de execução minoritário.
+
+##### Clientes de consenso {#consensus-clients}
+
+- [Lighthouse](https://github.com/sigp/lighthouse/releases/latest)
+- [Lodestar](https://chainsafe.github.io/lodestar/install/source/) (não fornece um binário pré-construído, apenas uma imagem do Docker ou para ser construído a partir da fonte)
+- [Nimbus](https://github.com/status-im/nimbus-eth2/releases/latest)
+- [Prysm](https://github.com/prysmaticlabs/prysm/releases/latest)
+- [Teku](https://github.com/ConsenSys/teku/releases)
+
+A [diversidade de cliente](/developers/docs/nodes-and-clients/client-diversity/) é fundamental para nós de consenso executando validadores. Se a maioria dos validadores está executando a implementação de um único cliente, a segurança da rede está em risco. Portanto, é recomendável considerar a escolha de um cliente minoritário.
+
+[Veja o uso mais recente do cliente de rede](https://clientdiversity.org/) e saiba mais sobre a [diversidade do cliente](/developers/docs/nodes-and-clients/client-diversity).
+
+##### Verificando o software {#verifying-the-software}
-### Iniciando o cliente {#starting-the-client}
+Ao baixar o software da Internet, é recomendável verificar sua integridade. Esta etapa é opcional, mas especialmente com uma peça de infraestrutura crucial como o cliente Ethereum. É importante estar ciente dos possíveis vetores de ataque e evitá-los. Se você baixou um binário pré-construído, você precisa confiar nele e arriscar que um invasor possa trocar o executável por um malicioso.
-Antes de iniciar o software de cliente do Ethereum, verifique por última vez que seu ambiente está pronto. Por exemplo, certifique-se de que:
+Os desenvolvedores assinam binários liberados com suas chaves PGP para que você possa verificar criptograficamente que está executando exatamente o software que eles criaram. Você só precisa obter as chaves públicas usadas pelos desenvolvedores, que podem ser encontradas nas páginas de lançamento do cliente ou na documentação. Após baixar a versão do cliente e sua assinatura, você pode usar uma implementação PGP, por exemplo. [GnuPG](https://gnupg.org/download/index.html) para verificá-los facilmente. Confira um tutorial sobre como verificar software de código aberto usando `gpg` em [linux](https://www.tecmint.com/verify-pgp-signature-downloaded-software/) ou [Windows/MacOS](https://freedom.press/training/verifying-open-source-software/).
+
+Outra forma de verificação é garantir que o hash, uma impressão digital criptográfica exclusiva, do software que você baixou corresponde ao fornecido pelos desenvolvedores. Isso é ainda mais fácil do que usar o PGP, e alguns clientes oferecem apenas essa opção. Basta executar a função de hash no software baixado e compará-lo com o da página de lançamento. Por exemplo:
+
+```
+sha256sum teku-22.6.1.tar.gz
+
+9b2f8c1f8d4dab0404ce70ea314ff4b3c77e9d27aff9d1e4c1933a5439767dde
+```
+
+#### Configuração do cliente {#client-setup}
+
+Depois de instalar, baixar ou compilar o software cliente, você estará pronto para executá-lo. Isso só significa que ele tem de ser executado com a configuração adequada. Os clientes oferecem opções de configuração variadas, que podem habilitar vários recursos.
+
+Vamos começar com opções que podem influenciar significativamente o desempenho do cliente e o uso de dados. [Os modos de sincronização](/developers/docs/nodes-and-clients/#sync-modes) representam diferentes métodos de download e validação de dados da cadeia de blocos. Antes de iniciar o nó, você deve decidir que rede e modo de sincronização deve ser usado. As coisas mais importantes a considerar são o espaço em disco e o tempo de sincronização que o cliente precisará. Preste atenção aos documentos do cliente para determinar qual modo de sincronização é o padrão. Se isso não lhe convêm, escolha outro com base no nível de segurança, nos dados disponíveis e no custo. Além do algoritmo de sincronização, você pode também definir a limpeza de diferentes tipos de dados antigos. A limpeza habilita a exclusão de dados desatualizados, por exemplo, remoção de nós de árvore do estado que são inacessíveis de blocos recentes.
+
+Outras opções básicas de configuração são, por exemplo, escolher uma rede – Rede principal ou redes de teste, habilitando o ponto de extremidade HTTP para RPC ou WebSockets, etc. Você pode encontrar todos os recursos e opções na documentação do cliente. Várias configurações de cliente podem ser definidas executando o cliente com os marcadores correspondentes diretamente na CLI ou no arquivo de configuração. Cada cliente é um pouco diferente; consulte sempre sua documentação oficial ou a página de ajuda para obter detalhes sobre opções de configuração.
+
+Para fins de teste, você pode preferir executar um cliente em uma das redes de testes. [Veja a visão geral das redes suportadas](/developers/docs/nodes-and-clients/#execution-clients).
+
+Exemplos de execução de clientes de execução com configuração básica podem ser encontrados na próxima seção.
+
+#### Iniciando a execução do cliente {#starting-the-execution-client}
+
+Antes de iniciar o software cliente do Ethereum, faça uma última verificação de que seu ambiente está pronto. Por exemplo, verifique se:
- Há espaço em disco suficiente, considerando a rede escolhida e o modo de sincronização.
- A memória e a CPU não são interrompidas por outros programas.
-- O sistema operacional está atualizado com a versão mais recente.
-- O sistema tem data e hora corretas.
+- O sistema operacional é atualizado para a versão mais recente.
+- O sistema tem a hora e a data corretas.
- Seu roteador e seu firewall aceitam conexões nas portas de escuta. Por padrão, os clientes do Ethereum usam uma porta de escuta (TCP) e uma porta de descoberta (UDP), ambas na porta 30303 por padrão.
-Execute seu cliente primeiro em uma rede de teste para garantir que tudo esteja funcionando corretamente. [Executar um nó ligeiro Geth](/developers/tutorials/run-light-node-geth/) deve ajudar. Você precisa declarar no início alguma configuração de cliente que não seja a padrão. Você pode usar flags ou o arquivo de configuração para declarar sua configuração preferida. Confira a documentação do seu cliente, já que as especificações de execução do cliente irá iniciar suas funções principais, uma vez escolhidos os endpoints, e começar a procurar pares. Depois de conseguir descobrir os pares, o cliente começará a sincronização. Os dados atuais da blockchain estarão disponíveis assim que o cliente conseguir sincronizar com o estado atual.
+Execute seu cliente primeiro em uma rede de testes para garantir que tudo esteja funcionando corretamente.
+
+Você precisa declarar no início alguma configuração de cliente que não seja a padrão. Você pode usar sinalizadores ou o arquivo de configuração para declarar sua configuração preferida. O conjunto de recursos e a sintaxe de configuração de cada cliente diferem. Confira a documentação do seu cliente para ver as especificações.
+
+Os clientes de execução e consenso se comunicam por meio de um terminal autenticado especificado na [API Engine](https://github.com/ethereum/execution-apis/tree/main/src/engine). Para se conectar a um cliente de consenso, o cliente de execução deve gerar um [`jwtsecret`](https://jwt.io/) em um caminho conhecido. Por razões de segurança e estabilidade, os clientes devem ser executados na mesma máquina e ambos os clientes devem conhecer esse caminho, pois ele é usado para autenticar uma conexão RPC local entre eles. O cliente de execução também deve definir uma porta de escuta para APIs autenticadas.
+
+Esse token é gerado automaticamente pelo software cliente, mas, em alguns casos, você pode precisar fazer isso sozinho. Você pode gerá-lo usando [OpenSSL](https://www.openssl.org/):
-### Utilizando o cliente {#using-the-client}
+```
+openssl rand -hex 32 > jwtsecret
+```
-Os clientes oferecem endpoints de API RPC, que podem ser usados para controlar o próprio cliente e interagir com a rede de Ethereum de várias maneiras:
+#### Iniciando a execução do cliente {#running-an-execution-client}
-- Chamando-os manualmente com um protocolo adequado: por exemplo, usando `curl`
+Esta seção guiará você na inicialização dos clientes de execução. Serve apenas como exemplo de configuração básica, que iniciará o cliente com estas configurações:
+
+- Especifica a rede para conectar, rede principal nos nossos exemplos
+ - Em vez disso, você pode escolher [uma das redes de teste](/developers/docs/networks/) para testes preliminares de sua configuração
+- Define o diretório de dados, no qual todos os dados, incluindo a cadeia de blocos, serão armazenados
+ - Certifique-se de substituir o caminho por um real, por exemplo, apontando para sua unidade externa
+- Habilita interfaces para comunicação com o cliente
+ - Incluindo JSON RPC e API Engine para comunicação com o cliente de consenso
+- Define o caminho para `jwtsecret` para a API autenticada
+ - Certifique-se de substituir o caminho de exemplo por um real que possa ser acessado pelos clientes, por exemplo, `/tmp/jwtsecret`
+
+Por favor, tenha em mente que este é apenas um exemplo básico, que todas as outras configurações serão definidas como padrão. Preste atenção na documentação de cada cliente para aprender sobre valores padrão, configurações e funcionalidades. Para mais funcionalidades, por exemplo, para executar validadores, monitoramento, etc., consulte a documentação do cliente específico.
+
+> Observe que as barras invertidas `\` nos exemplos são apenas para fins de formatação; marcadores de configuração podem ser definidos em uma única linha.
+
+##### Executando o Besu
+
+Este exemplo inicia o Besu na rede priincipal, armazena dados da cadeia de blocos no formato padrão em `/data/ethereum`, habilita o JSON RPC e a Engine RPC para conectar ao cliente de consenso. A API Engine é autenticada com o token `jwtsecret` e somente chamadas de `localhost` são permitidas.
+
+```
+besu --network=mainnet \
+ --data-path=/data/ethereum \
+ --rpc-http-enabled=true \
+ --engine-rpc-enabled=true \
+ --engine-host-allowlist="*" \
+ --engine-jwt-enabled=true \
+ --engine-jwt-secret=/path/to/jwtsecret
+```
+
+O Besu também vem com uma opção de lançador o qual fará uma série de perguntas e gerará o arquivo de configuração. Execute o inicializador interativo usando:
+
+```
+besu --Xlauncher
+```
+
+A [documentação do Besu](https://besu.hyperledger.org/en/latest/HowTo/Get-Started/Starting-node/) contém opções adicionais e detalhes de configuração.
+
+##### Executando o Erigon
+
+Este exemplo inicia o Erigon na rede principal, armazena dados da cadeia de blocos em `/data/ethereum`, habilita o JSON RPC, define quais namespaces são permitidos e habilita a autenticação, para conectar o cliente de consenso, definido pelo caminho `jwtsecret`.
+
+```
+erigon --chain mainnet \
+ --datadir /data/ethereum \
+ --http --http.api=engine,eth,web3,net \
+ --authrpc.jwtsecret=/path/to/jwtsecret
+```
+
+Erigon, por padrão, executa uma sincronização completa com um HDD de 8 GB, o que resultará em mais de 2TB de dados de arquivo. Verifique se o `datadir` está apontando para o disco com espaço livre suficiente ou olha para o parâmetro `--prune` que pode ajustar diferentes tipos de dados. Verifique o `--help` do Erigon para saber mais.
+
+##### Executando o Geth
+
+Este exemplo inicia o Geth na rede principal, armazena os dados da cadeia de blocos em `/data/ethereum`, habilita o JSON RPC e define quais namespaces são permitidos. Ele também habilita a autenticação para conectar o cliente de consenso, que requer o caminho para `jwtsecret` e também a opção que define quais conexões são permitidas, em nosso exemplo apenas de `localhost`.
+
+```
+geth --mainnet \
+ --datadir "/data/ethereum" \
+ --http --http.api="eth,web3,net" \
+ --authrpc.vhosts="localhost" \
+ --authrpc.jwtsecret=/path/to/jwtsecret
+```
+
+Verifique a [documentação para todas as opções de configuração](https://geth.ethereum.org/docs/interface/command-line-options) e, saiba mais sobre [Geth executando um cliente de consenso](https://geth.ethereum.org/docs/interface/consensus-clients).
+
+##### Executando o Nethermind
+
+O Nethermind oferece várias [opções de instalação](https://docs.nethermind.io/nethermind/first-steps-with-nethermind/getting-started). O pacote vem com vários binários, incluindo um Inicializador com configuração guiada, que ajudará você a criar a configuração interativamente. Como alternativa, você encontra o Executor, que é o próprio executável e pode executá-lo com os sinalizadores de configuração. JSON RPC é habilidado por padrão.
+
+```
+Nethermind.Runner --config mainnet \
+ --datadir /data/ethereum \
+ --JsonRpc.JwtSecretFile=/path/to/jwtsecret
+```
+
+Os documentos do Nethermind oferecem um [guia completo](https://docs.nethermind.io/nethermind/first-steps-with-nethermind/running-nethermind-post-merge) sobre como executar o Nethermind com o cliente de consenso.
+
+Um cliente de execução iniciará suas funções principais, pontos de extremidade escolhidos e começará a procurar por pares. Depois de conseguir descobrir os pares, o cliente inicia a sincronização. O cliente de execução vai aguardar uma conexão do cliente de consenso. Os dados atuais da cadeia de blocos estarão disponíveis assim que o cliente for sincronizado com sucesso com o estado atual.
+
+#### Iniciando um cliente de consenso {#starting-the-consensus-client}
+
+O cliente de consenso deve ser iniciado com a configuração de porta correta para estabelecer uma conexão RPC local para o cliente de execução. Os clientes de consenso têm de ser executados com a porta do cliente de execução exposta como argumento de configuração.
+
+O cliente de consenso também precisa do caminho para o `jwt-secret` do cliente de execução para autenticar a conexão RPC entre eles. Semelhante aos exemplos de execução acima, cada cliente de consenso tem um parâmetro de configuração que usa o caminho do arquivo do token jwt como argumento. Isso deve ser consistente com o caminho `jwtsecret` fornecido ao cliente de execução.
+
+Se você planeja executar um validador, certifique-se de adicionar um marcador de configuração especificando o endereço Ethereum do destinatário da taxa. Aqui é que as recompensas do ether para o validador se acumulam. Cada cliente de consenso tem uma opção, por exemplo. `--suggested-fee-recipient=0xabcd1`, que recebe um endereço Ethereum como argumento.
+
+Ao iniciar um Beacon Node em uma rede de testes, você pode economizar um tempo de sincronização significativo usando um ponto de extremidade público para [sincronização de ponto de verificação](https://notes.ethereum.org/@launchpad/checkpoint-sync).
+
+#### Executando um cliente de consenso
+
+##### Executando o Lighthouse
+
+Antes de executar o Lighthouse, saiba mais sobre como instalá-lo e configurá-lo no [Livro do Lighthouse](https://lighthouse-book.sigmaprime.io/installation.html).
+
+```
+lighthouse beacon_node
+ --network mainnet \
+ --datadir /data/ethereum \
+ --http \
+ --execution-endpoint http://127.0.0.1:8551 \
+ --execution-jwt /path/to/jwtsecret \
+```
+
+##### Executando o Lodestar
+
+Instale o software Lodestar compilando-o ou baixando a imagem do Docker. Saiba mais na [documentação](https://chainsafe.github.io/lodestar/) e no [guia de configuração](https://hackmd.io/@philknows/rk5cDvKmK) mais abrangente.
+
+```
+lodestar beacon \
+ --rootDir="/data/ethereum" \
+ --network=mainnet \
+ --eth1.enabled=true \
+ --execution.urls="http://127.0.1:8551" \
+ --jwt-secret="/path/to/jwtsecret"
+```
+
+##### Executando o Nimbus
+
+Nimbus vem com ambos os clientes de consenso e de execução. Ele pode ser executado em vários dispositivos, até mesmo com poder de computação muito modesto. Após [instalar as dependências e o próprio Nimbus](https://nimbus.guide/quick-start.html), você pode executar seu cliente de consenso:
+
+```
+nimbus_beacon_node \
+ --network=mainnet \
+ --web3-url=http://127.0.0.1:8551 \
+ --rest \
+ --jwt-secret="/path/to/jwtsecret"
+```
+
+##### Executando o Prysm
+
+O Prysm vem com um script que permite uma fácil instalação automática. Os detalhes podem ser encontrados nos [documentos do Prysm](https://docs.prylabs.network/docs/install/install-with-script).
+
+```
+./prysm.sh beacon-chain \
+ --mainnet
+ --datadir /data/ethereum \
+ --execution-endpoint=http://localhost:8551 \
+ --jwt-secret=/path/to/jwtsecret
+```
+
+##### Executando o Teku
+
+```
+teku --network mainnet \
+ --data-path "/data/ethereum" \
+ --ee-endpoint http://localhost:8551 \
+ --ee-jwt-secret-file "/path/to/jwtsecret" \
+```
+
+Quando um cliente de consenso se conecta ao cliente de execução para ler o contrato de depósito e identificar validadores, ele também se conecta a outros pares do Beacon Node e começa a sincronizar os espaços de consenso do gênesis. Quando o Beacon Node atinge a época atual, a API do Beacon se torna utilizável para seus validadores. Saiba mais sobre [APIs do Beacon Node](https://eth2docs.vercel.app/).
+
+### Adicionando validadores {#adding-validators}
+
+Um cliente de consenso serve como um Beacon Node para os validadores se conectarem. Cada cliente de consenso tem seu próprio software de validador descrito em detalhes em sua respectiva documentação.
+
+Executar seu próprio validador permite a [participação individual](https://ethereum.org/en/staking/solo/), o método mais impactante e confiável para dar suporte à rede Ethereum. No entanto, isso requer um depósito de 32 ETH. Para executar um validador em seu próprio nó com uma quantidade menor, um pool descentralizado com operadores de nós sem permissão, como [Rocket Pool](https://rocketpool.net/node-operators), poderá lhe interessar.
+
+A maneira mais fácil de começar com a participação e a geração de chaves de validação é usar a [Plataforma de lançamento de participação da rede de testes Goerli](https://goerli.launchpad.ethereum.org/), que permite testar sua configuração [executando nós no Goerli](https://notes.ethereum.org/@launchpad/goerli). Quando você estiver pronto para a Rede principal, você poderá repetir essas etapas usando a [Plataforma de lançamento de participação da rede de testes Goerli](https://launchpad.ethereum.org/).
+
+Consulte a [página de participação](/staking) para obter uma visão geral sobre as opções de participação.
+
+### Usando o nó {#using-the-node}
+
+Os clientes de execução oferecem [pontos de extremidade da API RPC](/developers/docs/apis/json-rpc/) que você pode usar para enviar transações, interagir ou implantar contratos inteligentes na rede Ethereum de várias maneiras:
+
+- Chamando-os manualmente com um protocolo adequado (por exemplo, usando `curl`)
- Anexando um console (exemplo `geth attach`)
-- Implementando-os nos aplicativos
+- Implementá-los em aplicações usando bibliotecas do Web3, por exemplo, [web3.py](https://web3py.readthedocs.io/en/stable/overview.html#overview), [ethers](https://github.com/ethers-io/ethers.js/)
-Diferentes clientes possuem diferentes implementações dos endpoints RPC. Mas existe um JSON-RPC padrão, que pode ser usado com cada cliente. Para uma visão geral [leia a documentação sobre o JSON-RPC](https://eth.wiki/json-rpc/API). Os aplicativos que precisam de informações da rede Ethereum podem usar este RPC. Por exemplo, a carteira popular MetaMask permite [executar uma instância local de blockchain e conectar-se a ela](https://metamask.zendesk.com/hc/en-us/articles/360015290012-Using-a-Local-Node).
+Diferentes clientes têm diferentes implementações dos pontos de extremidade RPC. Mas existe um JSON-RPC padrão que você pode usar com cada cliente. Para uma visão geral [leia os documentos JSON-RPC](/developers/docs/apis/json-rpc/). Aplicativos que precisam de informações da rede Ethereum podem usar esse RPC. Por exemplo, a popular carteira MetaMask permite você [conectar-se ao seu próprio endpoint RPC](https://metamask.zendesk.com/hc/en-us/articles/360015290012-Using-a-Local-Node), que tem fortes benefícios de privacidade e segurança.
+
+Todos os clientes de consenso expõem uma [API Beacon](https://ethereum.github.io/beacon-APIs), que pode ser usada para verificar o status do cliente de consenso ou baixar blocos e dados de consenso enviando solicitações usando ferramentas como [Curl](https://curl.se). Mais informações sobre isso podem ser encontradas na documentação de cada cliente de consenso.
#### Comunicação com o RPC {#reaching-rpc}
-A porta padrão do JSON-RPC é a `8545`, mas você pode modificar as portas dos endpoints locais no arquivo de configuração. Por padrão, a interface RPC só é acessível no localhost do seu computador. Para torná-lo remotamente acessível, você pode expô-lo ao público alterando o endereço para `0.0.0.0`. Isto o tornará acessível através de endereços IP locais e públicos. Na maioria dos casos, você também precisará configurar o encaminhamento de porta no seu roteador.
+A porta padrão para o cliente de execução JSON-RPC é `8545`, mas você pode modificar as portas dos pontos de extremidade locais na configuração. Por padrão, a interface RPC só pode ser acessada no host local do seu computador. Para torná-lo acessível remotamente, você pode expô-lo ao público alterando o endereço para `0.0.0.0`. Isso o tornará acessível pela rede local e endereços IP públicos. Na maioria dos casos, você também precisará configurar o encaminhamento de porta no seu roteador.
-Você deve fazer isso com cuidado, pois esse processo permitirá que qualquer pessoa controle seu servidor de Internet. De fato, atores maliciosos podem acessar seu nó para derrubar seu sistema ou roubar seus fundos se você estiver usando seu cliente como carteira.
+Aborde a exposição de portas à Internet com cuidado, pois isso permitirá que qualquer pessoa na Internet controle seu nó. Atores maliciosos podem acessar seu nó para derrubar seu sistema ou roubar seus fundos, se você estiver usando seu cliente como uma carteira.
-Uma forma de contornar esta situação seria impedir que os métodos potencialmente nocivos do RPC sejam modificáveis. Por exemplo, com `geth`, você pode declarar métodos modificáveis com uma flag: `--http.api web3,eth,txpool`.
+Uma forma de contornar isso é evitar que métodos RPC potencialmente nocivos sejam modificáveis. Por exemplo, com Geth, você pode declarar métodos modificáveis com uma configuração: `--http.api web3,eth,txpool`.
-Você também pode hospedar o acesso a sua interface RPC apontando o serviço do servidor web, como Nginx, para o endereço e porta locais do seu cliente.
+O acesso à interface RPC pode ser estendido por meio do desenvolvimento de APIs da camada de fronteira ou aplicativos de servidor Web, como o Nginx, e conectando-os ao endereço e porta local do seu cliente. O aproveitamento de uma camada intermediária também pode permitir que os desenvolvedores configurem um certificado para conexões seguras `https` para a interface RPC.
-A maneira mais simples e privada de configurar um endpoint acessível publicamente é hospedá-lo no seu próprio serviço "onion" de [Tor](https://www.torproject.org/). Isto permitirá que você se comunique com o RPC fora da sua rede local sem um endereço estático público IP ou portas abertas. Para fazer isso:
+Configurar um servidor Web, um proxy ou face a uma API Rest externa não é a única maneira de fornecer acesso ao ponto de extremidade RPC do seu nó. Outra maneira de preservar a privacidade para configurar um ponto de extremidade publicamente acessível é hospedar o nó em seu próprio serviço onion [Tor](https://www.torproject.org/). Isso permitirá que você se comunique com o RPC fora da sua rede local sem um endereço público estático de IP ou portas abertas. No entanto, usar esta configuração só pode permitir que o ponto de extremidade RPC seja acessível através da rede Tor, que não é suportada por todos os aplicativos e pode resultar em problemas de conexão.
-- Instale o `tor`
-- Edite a configuração `torrc` para habilitar o serviço oculto com o endereço de RPC e porta do seu cliente
-- Reinicie o serviço `tor`
+Para fazer isso, você precisa criar seu próprio [serviço onion](https://community.torproject.org/onion-services/). Confira [a documentação](https://community.torproject.org/onion-services/setup/) sobre a configuração do serviço onion para hospedar o seu próprio. Você pode apontá-lo para um servidor Web com proxy para a porta RPC ou apenas diretamente para o RPC.
-Depois de reiniciar o Tor, você obterá as chaves de serviço ocultas e um nome de host no diretório desejado. A partir daí, seu RPC estará acessível em um nome de host `.onion`.
+Por fim, e uma das formas mais populares de fornecer acesso a redes internas é através de uma conexão VPN. Dependendo do seu caso de uso e da quantidade de usuários que precisam de acesso ao seu nó, uma conexão VPN segura pode ser uma opção. [OpenVPN](https://openvpn.net/) é uma VPN SSL completa que implementa a extensão de rede segura da camada OSI 2 ou 3 usando o protocolo SSL/TLS padrão da indústria, suporta métodos flexíveis de autenticação de cliente com base em certificados, cartões inteligentes e/ou credenciais de usuário/senha e permite políticas de controle de acesso específicas de usuário ou grupo usando regras de firewall aplicadas à interface virtual VPN.
### Operando o nó {#operating-the-node}
-Você deve monitorar o seu nó regularmente para ter certeza de que ele está funcionando corretamente. Ocasionalmente, você poderia precisar fazer alguma manutenção.
+Você deve monitorar regularmente seu nó para garantir que ele esteja funcionando corretamente. Você pode precisar fazer manutenção ocasional.
#### Mantendo o nó online {#keeping-node-online}
-Seu nó não precisa estar on-line o tempo todo, mas você deve mantê-lo on-line tanto quanto for possível para deixá-lo em sincronia com a rede. Você pode desligá-lo para reiniciá-lo, mas tenha em mente que:
+Seu nó não precisa estar online o tempo todo, mas você deve mantê-lo online o máximo possível para mantê-lo sincronizado com a rede. Você pode desligar ele para reiniciá-lo, mas lembre-se de que:
+
+- O encerramento pode levar alguns minutos se o estado recente ainda estiver sendo gravado no disco.
+- Encerramentos forçados podem danificar o banco de dados, exigindo que você ressincronize todo o nó.
+- Seu cliente ficará dessincronizado com a rede e precisará ser ressincronizado quando você o reiniciar. Embora o nó possa começar a sincronizar de onde foi o último encerramento, o processo pode demorar dependendo de quanto tempo ele esteve offline.
-- O desligamento pode demorar alguns minutos se o estado recente ainda estiver sendo gravado no disco.
-- Desligamentos forçados podem danificar o banco de dados.
-- Seu cliente ficará dessincronizado com a rede e precisará ser ressincronizado quando você o reiniciar.
+_Isso não se aplica a nós validadores da camada de consenso._ Colocar seu nó offline afetará todos os serviços dependentes dele. Se você estiver rodando um nó para fins de _participação_, então você deve tentar minimizar o tempo de inatividade tanto quanto for possível.
-_Isso não se aplica a nós validadores na camada de consenso._ Deixar seu nó offline afetará a todos os serviços dependentes dele. Se você estiver rodando um nó para fins de _participação_, então você deve tentar minimizar o tempo de inatividade tanto quanto for possível.
+#### Criando serviços de clientes {#creating-client-services}
-#### Criando um serviço de cliente {#creating-client-service}
+Considere criar um serviço para executar seus clientes automaticamente na inicialização. Por exemplo, em servidores Linux, uma boa prática seria criar um serviço, por exemplo, com `systemd`, que executa o cliente com a configuração adequada, sob um usuário com privilégios limitados e reinicia automaticamente.
-Considere criar um serviço para executar seu cliente automaticamente ao iniciar. Por exemplo, em servidores Linux, uma boa prática seria criar um serviço que executa o cliente com a configuração adequada, sob a administração do usuário, com privilégios limitados e o reiniciar automaticamente.
+#### Atualizando clientes {#updating-clients}
-#### Atualizando o cliente {#updating-client}
+Você precisa manter seu software cliente atualizado com os mais recentes patches de segurança, recursos e [EIPs](/eips/). Especialmente antes de [bifurcações permanentes](/history/), verifique se você está executando as versões corretas do cliente.
-Você precisa manter o seu software atualizado com os patches de segurança, recursos e [EIPs](/eips/) mais recentes. Especialmente antes dos [hard forks](/history/), certifique-se de estar executando a versão correta do cliente.
+> Antes de atualizações importantes da rede, a EF publica uma postagem em seu [blog](https://blog.ethereum.org). Você pode [assinar esses anúncios](https://groups.google.com/a/ethereum.org/g/announcements) para receber uma notificação no seu e-mail quando o seu nó precisar de uma atualização.
+
+Atualizar clientes é muito simples. Cada cliente tem instruções específicas em sua documentação, mas o processo geralmente é apenas baixar a versão mais recente e reiniciar o cliente com o novo executável. O cliente deve continuar de onde parou, mas com as atualizações aplicadas.
+
+Cada implementação de cliente tem uma cadeia de caracteres de versão legível por humanos usada no protocolo ponto a ponto, mas também é acessível a partir da linha de comando. Essa cadeia de caracteres de versão permite que os usuários verifiquem se estão executando a versão correta e possibilita exploradores de blocos e outras ferramentas analíticas interessadas em quantificar a distribuição de clientes específicos na rede. Consulte a documentação do cliente individual para obter mais informações sobre cadeias de caracteres de versão.
#### Executando serviços adicionais {#running-additional-services}
-Executar seu próprio nó permite que você use serviços que requerem acesso direto ao RPC do cliente de Ethereum. Estes são serviços criados sobre Ethereum como [soluções de camada 2](/developers/docs/scaling/#layer-2-scaling), [clientes de consenso](/upgrades/get-involved/#clients)ou outras infraestruturas de Ethereum.
+Executar seu próprio nó permite que você use serviços que exigem acesso direto ao cliente RPC do Ethereum. Estes são serviços construídos em cima do Ethereum, como [soluções de camada 2](/developers/docs/scaling/#layer-2-scaling), back-end para carteiras, exploradores de blocos, ferramentas de desenvolvimento e outras infraestruturas Ethereum.
#### Monitorando o nó {#monitoring-the-node}
-Para monitorar corretamente seu nó, considere coletar algumas métricas. Os clientes fornecem endpoints métricos para que você possa obter dados detalhados sobre o seu nó. Use ferramentas como [InfluxDB](https://www.influxdata.com/get-influxdb/) ou [Prometheus](https://prometheus.io/) para criar bancos de dados que podem ser transformados em visualizações e gráficos através de software como [Grafana](https://grafana.com/). Existem muitas configurações para usar este software e diferentes painéis Grafana para que você possa visualizar seu nó e a rede como um todo. Como parte de seu monitoramento, fique bem atento ao desempenho da sua máquina. Durante a sincronização inicial do seu nó, o software do cliente pode resultar muito pesado para a CPU e para a RAM. Além do Grafana, você pode usar as ferramentas próprias que seu sistema operacional oferece como `htop` ou `uptime` para fazer isso.
+Para monitorar adequadamente seu nó, considere coletar métricas. Os clientes fornecem pontos de extremidade de métricas para que você possa obter dados abrangentes sobre seu nó. Use ferramentas como [InfluxDB](https://www.influxdata.com/get-influxdb/) ou [Prometheus](https://prometheus.io/) para criar bancos de dados que você pode transformar em visualizações e gráficos em softwares como [Grafana](https://grafana.com/). Existem muitas configurações para usar este software e diferentes painéis do Grafana para você visualizar seu nó e a rede como um todo. Por exemplo, confira [tutorial sobre como monitorar o Geth](/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/).
+
+Como parte de seu monitoramento, certifique-se de ficar de olho no desempenho de sua máquina. Durante a sincronização inicial do seu nó, o software cliente pode sobrecarregar muito a CPU e a RAM. Além do Grafana, você pode usar as ferramentas que seu sistema operacional oferece, como `htop` ou `uptime` para fazer isso.
## Leitura adicional {#further-reading}
-- [Analisando os requisitos de hardware para um nó validado completo no Ethereum](https://medium.com/coinmonks/analyzing-the-hardware-requirements-to-be-an-ethereum-full-validated-node-dc064f167902) _– Albert Palau, 24 de setembro de 2018_
-- [Executando nós completos do Ethereum: um guia completo](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _ – Justin Leroux, 7 de novembro de 2019_
-- [Executando um nó Ethereum](https://docs.ethhub.io/using-ethereum/running-an-ethereum-node/) _: ETHHub, atualizado frequentemente_
-- [Executando um nó Hyperledger Besu na rede principal de Ethereum: benefícios, requisitos e configuração](https://pegasys.tech/running-a-hyperledger-besu-node-on-the-ethereum-mainnet-benefits-requirements-and-setup/) _– Felipe Faraggi, 7 de maio de 2020_
-- [Implementando um cliente Nethermind em Ethereum com uma pilha de monitoramento](https://medium.com/nethermind-eth/deploying-nethermind-ethereum-client-with-monitoring-stack-55ce1622edbd) _– Nethermind.eth, 8 de julho de 2020_
+- [Guias de participação do Ethereum](https://github.com/SomerEsat/ethereum-staking-guides) - _Somer Esat, atualizado com frequência_
+- [Guia | Como configurar um validador para participação do Ethereum na rede principal](https://www.coincashew.com/coins/overview-eth/guide-or-how-to-setup-a-validator-on-eth2-mainnet) _– CoinCashew, atualizado regularmente_
+- [Guias do ETHStaker sobre como executar validadores em redes de teste](https://github.com/remyroy/ethstaker#guides) – _ETHStaker, atualizado regularmente_
+- [Guias de Participação do Ethereum](https://github.com/SomerEsat/ethereum-staking-guides) _– Somer Esat, atualizado regularmente_
+- [FAQ sobre A Fusão para operadores de nós](https://notes.ethereum.org/@launchpad/node-faq-merge) - _julho de 2022_
+- [Analisando os requisitos de hardware para ser um nó totalmente validado no Ethereum](https://medium.com/coinmonks/analyzing-the-hardware-requirements-to-be-an-ethereum-full-validated-node-dc064f167902) _ – Albert Palau, 24 de setembro de 2018_
+- [Executando nós completos Ethereum: Um guia para os pouco motivados](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _ – Justin Leroux, 7 de novembro de 2019_
+- [Executando um nó Ethereum](https://docs.ethhub.io/using-ethereum/running-an-ethereum-node/) _ – ETHHub, atualizado com frequência_
+- [Executando um nó Hyperledger Besu na Rede principal do Ethereum: benefícios, requisitos e configurações](https://pegasys.tech/running-a-hyperledger-besu-node-on-the-ethereum-mainnet-benefits-requirements-and-setup/) _– Felipe Faraggi, 7 de maio de 2020_
+- [Implantando o cliente Nethermind do Ethereum com uma pilha de monitoramento](https://medium.com/nethermind-eth/deploying-nethermind-ethereum-client-with-monitoring-stack-55ce1622edbd) _– Nethermind.eth, 8 de julho de 2020_
## Tópicos relacionados {#related-topics}
-- [ Nós e clientes](/developers/docs/nodes-and-clients/)
+- [Nós e clientes](/developers/docs/nodes-and-clients/)
- [Blocos](/developers/docs/blocks/)
- [Redes](/developers/docs/networks/)
diff --git a/src/content/translations/pt-br/developers/docs/transactions/index.md b/src/content/translations/pt-br/developers/docs/transactions/index.md
index 4a2a7620d56..874b1292342 100644
--- a/src/content/translations/pt-br/developers/docs/transactions/index.md
+++ b/src/content/translations/pt-br/developers/docs/transactions/index.md
@@ -8,7 +8,7 @@ Transações são instruções assinadas criptograficamente de contas. Uma conta
## Pré-Requisitos {#prerequisites}
-Mas para ajudá-lo a entender melhor esta página, recomendamos que você primeiro leia [Contas](/developers/docs/accounts/), [Transações](/developers/docs/transactions/)e nossa [introdução ao Ethereum](/developers/docs/intro-to-ethereum/).
+Mas para ajudá-lo a entender melhor esta página, recomendamos que você primeiro leia [Contas](/developers/docs/accounts/), [Transações](/en/developers/docs/transactions/)e nossa [introdução ao Ethereum](/developers/docs/intro-to-ethereum/).
## O que é uma transação? {#whats-a-transaction}
@@ -16,21 +16,22 @@ Uma transação Ethereum refere-se a uma ação iniciada por uma conta de propri
![Diagrama mostrando uma transação que causa mudança de estado](./tx.png) _Diagrama adaptado de [Ethereum EVM ilustrado](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
-Transações que alteram o estado da EVM precisam ser transmitidas para toda a rede. Qualquer nó pode transmitir uma solicitação para que uma transação seja executada na EVM. Depois que isso acontece, um minerador executará a transação e propagará a mudança de estado resultante para o resto da rede.
+Transações que alteram o estado da EVM precisam ser transmitidas para toda a rede. Qualquer nó pode transmitir uma solicitação para que uma transação seja executada na EVM; depois que isso acontecer, um validador executará a transação e propagará a mudança de estado resultante para o restante da rede.
-As transações requerem uma taxa e devem ser extraídas para se tornarem válidas. Para simplificar a visão geral, cobriremos as taxas de gás e a mineração em outro lugar.
+As transações exigem uma taxa e devem ser incluídas em um bloco validado. Para tornar esta visão geral mais simples, cobriremos as taxas de gás e validação em outro lugar.
Uma transação enviada inclui as seguintes informações:
- `recipient`: o endereço de recebimento (se uma conta de propriedade externa, a transação transferirá o valor. Se uma conta de contrato, a transação executará o código do contrato)
- `signature`: o identificador do remetente. Isto é gerado quando a chave privada do remetente assina a transação e confirma que o remetente autorizou esta transação
+- `nonce`: um contador de incremento sequencial que indica o número da transação da conta
- `value`: quantidade de ETH para transferir do remetente para o destinatário (em WEI, uma denominação de ETH)
- `data`: campo opcional para incluir dados arbitrários
-- `gasLimit`: a quantidade máxima de gás que pode ser consumida pela transação. As unidades de gás representam etapas computacionais
-- `maxPriorityFeePerGas`: a quantidade máxima de gás a ser incluída como dica para o minerador
+- `gasLimit`: a quantidade máxima de gás que pode ser consumida pela transação. As unidades de gás representam etapas de cálculo
+- `maxPriorityFeePerGas` – a quantidade máxima de gás a ser incluída como gorjeta para o validador
- `maxFeePerGas`: a quantidade máxima de gás disposta a ser paga pela transação (inclusive de `baseFeePerGas` e `maxPriorityFeePerGas`)
-Gás é uma referência ao cálculo necessário para processar a transação por um minerador. Os usuários têm que pagar uma taxa por este cálculo. O `gasLimit` e `gasPrice` determinam a taxa máxima de transação paga ao minerador. [Mais sobre gás](/developers/docs/gas/).
+Gás é uma referência ao cálculo necessário para processar a transação por um validador. Os usuários têm que pagar uma taxa por este cálculo. O `gasLimit` e o `maxPriorityFeePerGas` determinam a taxa máxima de transação paga ao validador. [Mais sobre gás](/developers/docs/gas/).
O objeto da transação ficará um pouco assim:
@@ -102,82 +103,79 @@ Exemplo de resposta:
Com o hash da assinatura, a transação pode ser provada criptograficamente de que veio do remetente e enviada para a rede.
-### The data field {#the-data-field}
+### O campo de dados {#the-data-field}
-The vast majority of transactions access a contract from an externally-owned account. Most contracts are written in Solidity and interpret their data field in accordance with the [application binary interface (ABI)](/glossary/#abi/).
+A grande maioria das transações acessa um contrato de uma conta de propriedade externa. A maioria dos contratos é escrita em Solidity e interpreta seus campos de dados de acordo com a [interface binária do aplicativo (ABI)](/glossary/#abi).
-The first four bytes specify which function to call, using the hash of the function's name and arguments. You can sometimes identify the function from the selector using [this database](https://www.4byte.directory/signatures/).
+Os primeiros quatro bytes especificam qual função chamar, usando o hash do nome e dos argumentos da função. Às vezes, você pode identificar a função do seletor usando [este banco de dados](https://www.4byte.directory/signatures/).
-The rest of the calldata is the arguments, [encoded as specified in the ABI specs](https://docs.soliditylang.org/en/latest/abi-spec.html#formal-specification-of-the-encoding).
+O restante dos dados da chamada são os argumentos, [codificado conforme especificado nas especificações ABI](https://docs.soliditylang.org/en/latest/abi-spec.html#formal-specification-of-the-encoding).
-For example, lets look at [this transaction](https://etherscan.io/tx/0xd0dcbe007569fcfa1902dae0ab8b4e078efe42e231786312289b1eee5590f6a1). Use **Click to see More** to see the calldata.
+Por exemplo, vejamos [esta transação](https://etherscan.io/tx/0xd0dcbe007569fcfa1902dae0ab8b4e078efe42e231786312289b1eee5590f6a1). Use **Clique para ver mais** para conferir os dados de chamada.
-The function selector is `0xa9059cbb`. There are several [known functions with this signature](https://www.4byte.directory/signatures/?bytes4_signature=0xa9059cbb). In this case [the contract source code](https://etherscan.io/address/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48#code) has been uploaded to Etherscan, so we know the function is `transfer(address,uint256)`.
+O seletor de função é `0xa9059cbb`. Existem várias [funções conhecidas com esta assinatura](https://www.4byte.directory/signatures/?bytes4_signature=0xa9059cbb). Nesse caso, [o código-fonte do contrato](https://etherscan.io/address/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48#code) foi carregado para o Etherscan, então sabemos que a função é `transfer(address, uint256)`.
-The rest of the data is:
+O resto dos dados é:
```
0000000000000000000000004f6742badb049791cd9a37ea913f2bac38d01279
000000000000000000000000000000000000000000000000000000003b0559f4
```
-According to the ABI specifications, integer values (such as addresses, which are 20-byte integers) appear in the ABI as 32-byte words, padded with zeros in the front. So we know that the `to` address is [`4f6742badb049791cd9a37ea913f2bac38d01279`](https://etherscan.io/address/0x4f6742badb049791cd9a37ea913f2bac38d01279). The `value` is 0x3b0559f4 = 990206452.
+De acordo com as especificações da ABI, valores inteiros (como endereços, que são inteiros de 20 bytes) aparecem na ABI como palavras de 32 bytes, preenchidos com zeros na frente. Portanto, sabemos que o endereço `para` é [`4f6742badb049791cd9a37ea913f2bac38d01279`](https://etherscan.io/address/0x4f6742badb049791cd9a37ea913f2bac38d01279). O `valor` é 0x3b0559f4 = 990206452.
## Tipos de transações {#types-of-transactions}
-Na Ethereum existem alguns tipos diferentes de transações:
+No Ethereum existem alguns tipos diferentes de transações:
-- Transações regulares: uma transação de uma carteira para outra.
+- Transações regulares: uma transação de uma conta para outra.
- Transações de implantação do contrato: uma transação sem um endereço 'para', onde o campo de dados é usado para o código do contrato.
-- Execution of a contract: a transaction that interacts with a deployed smart contract. In this case, 'to' address is the smart contract address.
+- Execução de um contrato: uma transação que interage com um contrato inteligente implantado. Nesse caso, o endereço "para" é o endereço do contrato inteligente.
### Sobre gás {#on-gas}
Como mencionado, as transações custam [gás](/developers/docs/gas/) para serem executadas. Transações de transferência simples requerem 21.000 unidades de gás.
-Então para Bob enviar Alice 1 ETH para `baseFeePerGas` de 190 gwei e `maxPriorityFeePerGas` de 10 gwei, Bob precisará pagar a seguinte taxa:
+Então para Bob enviar a Alice 1 ETH para `baseFeePerGas` de 190 gwei e `maxPriorityFeePerGas` de 10 gwei, Bob precisará pagar a seguinte taxa:
```
-(190 + 10) * 21000 = 4,200,000 gwei
---or--
-0.0042 ETH
+(190 + 10) * 21000 = 4.200.000 gwei
+--ou--
+0,0042 ETH
```
-A conta de Bob será debitada **-1.0042 ETH**
+A conta de Bob será debitada **-1,0042 ETH** (1 ETH para Alice + 0,0042 ETH em taxas de gás)
A conta de Alice será creditada **+1,0 ETH**
-A taxa base será queimada **-0.00399 ETH**
+A taxa base queimará **-0,00399 ETH**
-Minerador mantém a dica **+0.000210 ETH**
+O validador mantém a gorjeta de **+0,000210 ETH**
É necessário gás para qualquer interação de contrato inteligente também.
-![Diagrama que mostra como gás não utilizado é reembolsado](./gas-tx.png) _Diagrama adaptado do [Ethereum EVM ilustrado](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
+![Diagrama que mostra como o gás não utilizado é reembolsado](./gas-tx.png) _Diagrama adaptado do [Ethereum EVM ilustrado](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
Qualquer gás não usado em uma transação é reembolsado para a conta do usuário.
## Ciclo de vida de transação {#transaction-lifecycle}
-Uma vez que foi enviada a transação, acontece o seguinte:
+Quando uma transação é enviada, acontece o seguinte:
1. Depois de enviar uma transação, a criptografia gera um hash de transação: `0x97d99bc77292111a21b12c933c949d4f31684f1d6954ff477d0477538ff017`
2. A transação é então transmitida para a rede e incluída em um pool com muitas outras transações.
-3. Um minerador deve escolher sua transação e incluí-la em um bloco para verificar a transação e considerá-la "bem-sucedida".
- - Você pode acabar esperando nesta fase se a rede estiver ocupada e os mineradores não conseguirem acompanhar o ritmo.
-4. Sua transação receberá "confirmações". O número de confirmações é o número de blocos criados desde o bloco que incluiu sua transação. Quanto maior o número, maior a certeza de que a transação foi processada e reconhecida pela rede.
- - Blocos recentes podem ser reorganizados, dando a impressão de que a transação não foi bem-sucedida. No entanto, a transação ainda pode ser válida, mas incluída em um bloco diferente.
- - A probabilidade de uma reorganização diminui a cada bloco subsequente minerado, ou seja, quanto maior for o número de confirmações, mais imutável será a transação.
+3. Um validador deve escolher sua transação e incluí-la em um bloco para verificar a transação e considerá-la "bem-sucedida".
+4. Com o passar do tempo, o bloco que contém sua transação será atualizado para "justificado" e depois "finalizado". Essas atualizações tornam muito mais certo de que sua transação foi bem-sucedida e nunca será alterada. Uma vez que um bloco é "finalizado", ele só pode ser alterado por um ataque que custaria muitos bilhões de dólares.
## Uma demonstração visual {#a-visual-demo}
-Assista Austin te acompanhar através de transações, gás e mineração.
+Assista Austin mostrar as transações, gás e mineração.
## Envelope de transação digitado {#typed-transaction-envelope}
-O Ethereum originalmente tinha um formato para transações. Cada transação possuia um emissor, custo de "queima", parâmetro de "queima", endereçamentos, valores, dados, v, r, e s. Estas categorias são encriptadas em RLP - Provedor de Liquidez para o Varejo, para parecer com algo como isto:
+O Ethereum originalmente tinha um formato para transações. Cada transação possuía um emissor, custo de "queima", parâmetro de "queima", endereçamentos, valores, dados, v, r, e s. Estas categorias são encriptadas em RLP para se parecer com algo assim:
`RLP ([emissor, taxa de "queima", parâmetros de "queima", destino, valor, dados, v, r, s])`
@@ -198,11 +196,10 @@ Onde os campos são definidos como:
- [EIP-2718: Typed Transaction Envelope](https://eips.ethereum.org/EIPS/eip-2718)
-_Conhece algum recurso da comunidade que o ajudou? Edite essa página e adicione!_
+_Conhece algum recurso da comunidade que o ajudou? Edite essa página e adicione-o!_
## Tópicos relacionados {#related-topics}
- [Contas](/developers/docs/accounts/)
- [Máquina virtual de Ethereum (EVM)](/developers/docs/evm/)
- [Gás](/developers/docs/gas/)
-- [Mineração](/developers/docs/consensus-mechanisms/pow/mining/)
diff --git a/src/content/translations/pt-br/developers/docs/web2-vs-web3/index.md b/src/content/translations/pt-br/developers/docs/web2-vs-web3/index.md
index d83ffefd112..15e5e20e0d5 100644
--- a/src/content/translations/pt-br/developers/docs/web2-vs-web3/index.md
+++ b/src/content/translations/pt-br/developers/docs/web2-vs-web3/index.md
@@ -6,14 +6,16 @@ lang: pt-br
Web2 refere-se à versão da internet que a maioria de nós conhecemos hoje. Uma internet dominada por empresas que prestam serviços em troca de seus dados pessoais. Web3, no contexto da Ethereum, refere-se a aplicativos descentralizados que são executados na cadeia de blocos. Estes são aplicativos que permitem a qualquer pessoa participar sem monetizar seus dados pessoais.
+Procurando por uma explicação mais adaptada para iniciantes? Veja nossa [introdução ao Web3](/web3/).
+
## Benefícios da Web3 {#web3-benefits}
-Muitos desenvolvedores da Web3 optaram por criar dapps devido à descentralização inerente à Ethereum:
+Muitos desenvolvedores Web3 optaram por criar dapps devido à descentralização inerente à Ethereum:
- Qualquer pessoa que esteja em rede tem permissão para usar o serviço – ou em outras palavras, a permissão não é necessária.
- Ninguém pode bloquear você ou recusar o acesso ao serviço.
- Pagamentos são feitos através do token nativo, ether (ETH).
-- A Ethereum está completa, o que significa que você pode programar praticamente qualquer coisa.
+- Ethereum é "turing-completo", o que significa que você pode programar praticamente qualquer coisa.
## Comparações práticas {#practical-comparisons}
@@ -23,13 +25,13 @@ Muitos desenvolvedores da Web3 optaram por criar dapps devido à descentralizaç
| O serviço de pagamento pode decidir não permitir pagamentos para certos tipos de trabalho | Os aplicativos de pagamento Web3 não requerem dados pessoais e não podem impedir pagamentos |
| Os servidores para aplicativos gig-economy poderiam ficar inoperantes e afetar a renda dos trabalhadores | Os servidores Web3 não podem ficar inoperantes – eles usam a Ethereum, uma rede descentralizada de 1000s de computadores como seu backend |
-Isto não significa que todos os serviços precisam ser transformados em um dapp. Estes exemplos são ilustrativos das principais diferenças entre os serviços da Web 2 e da Web3.
+Isto não significa que todos os serviços precisam ser transformados em um dapp. Estes exemplos são ilustrativos das principais diferenças entre os serviços Web 2 e Web3.
## Limitações da Web3 {#web3-limitations}
-Web3 tem alguns limites neste momento:
+O Web3 tem alguns limites neste momento:
-- Escalabilidade - as transações são mais lentas na web3 porque são descentralizadas. Mudanças no estado, como um pagamento, precisam ser processadas por um minerador e propagadas em toda a rede.
+- Escalabilidade - as transações são mais lentas na web3 porque são descentralizadas. Mudanças de estado, como um pagamento, precisam ser processadas por um nó e propagadas por toda a rede.
- UX – interagir com ações do aplicativo web 3 pode exigir etapas, software e educação extras. Isto pode ser um obstáculo à adopção.
- Acessibilidade – A falta de integração em navegadores de internet modernos torna a web3 menos acessível à maioria dos usuários.
- Custo – os dapps mais bem sucedidos colocam pequenas partes do seu código na blockchain, pois é caro.
@@ -48,12 +50,13 @@ Na tabela abaixo, listamos algumas das vantagens e desvantagens das redes digita
| A autoridade central pode censurar dados, impedindo potencialmente partes da rede de interagir com o resto da rede. | A censura é muito mais difícil, pois a informação tem muitas maneiras de se propagar através da rede. |
| A participação na rede é controlada pela autoridade central. | Qualquer um pode participar da rede; não há “guardiões”. O ideal é que o custo da participação seja muito baixo. |
-Note que estes são padrões gerais que podem não se aplicar em todas as redes. Além disso, na realidade, o grau em que uma rede é centralizada/descentralizada reside em um espectro; nenhuma rede é inteiramente centralizada ou inteiramente descentralizada.
+Observe que estes são padrões gerais que podem não se aplicar em todas as redes. Além disso, na realidade, o grau em que uma rede é centralizada/descentralizada reside em um espectro; nenhuma rede é inteiramente centralizada ou inteiramente descentralizada.
## Leia mais {#further-reading}
-- [What is Web3?](/web3/) - _ethereum.org_
-- [A Arquitetura de uma aplicação Web 3.0](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application) - _Preethi Kasireddy_
-- [O Significado da Descentralização](https://medium.com/@VitalikButerin/the-meaning-of-decentralization-a0c92b76a274) _Fev, 6, 2017 - Vitalik Buterin_
-- [Por que a descentralização é importante para](https://medium.com/s/story/why-decentralization-matters-5e3f79f7638e) _Feb-18, 2018 - Chris Dixon_
-- [O que é a Web 3.0 & Por que ela importa](https://medium.com/fabric-ventures/what-is-web-3-0-why-it-matters-934eb07f3d2b) _31 de dezembro de 2019 - Max Mersch e Richard Muirhead_
+- [O que é Web3?](/web3/) - _ethereum.org_
+- [A Arquitetura de um aplicativo Web 3.0](https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application) - _Preethi Kasireddy_
+- [O Significado da Descentralização](https://medium.com/@VitalikButerin/the-meaning-of-decentralization-a0c92b76a274) _6 de fevereiro de 2017 – Vitalik Buterin_
+- [Por que a descentralização é importante](https://medium.com/s/story/why-decentralization-matters-5e3f79f7638e) _18 de fevereiro de 2018 – Chris Dixon_
+- [O que é o Web 3.0 e por que ele é importante](https://medium.com/fabric-ventures/what-is-web-3-0-why-it-matters-934eb07f3d2b) _31 de dezembro de 2019 – Max Mersch e Richard Muirhead_
+- [Por que precisamos do Web 3.0](https://medium.com/@gavofyork/why-we-need-web-3-0-5da4f2bf95ab) _12 de setembro de 2018 - Gavin Wood_
diff --git a/src/content/translations/pt-br/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md b/src/content/translations/pt-br/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md
index cffa7ae91fe..7ec24528b40 100644
--- a/src/content/translations/pt-br/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md
+++ b/src/content/translations/pt-br/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md
@@ -6,7 +6,6 @@ lang: pt-br
tags:
- "primeiros passos"
- "python"
- - "blockchain"
- "web3.py"
skill: iniciante
published: 2020-09-08
diff --git a/src/content/translations/pt-br/eips/index.md b/src/content/translations/pt-br/eips/index.md
index a7b959786ac..91269e236e6 100644
--- a/src/content/translations/pt-br/eips/index.md
+++ b/src/content/translations/pt-br/eips/index.md
@@ -1,61 +1,66 @@
---
title: Propostas de Melhorias do Ethereum (EIPs)
-description: As informações básicas que você precisa entender nas Propostas de Melhorias do Ethereum (EIPs).
+description: As informações básicas de que você precisa para entender as EIPs
lang: pt-br
---
-# Introdução às Propostas de Melhorias do Ethereum (EIPs) {#introduction-to-ethereum-improvement-proposals-eips}
+# Introdução às Propostas de Melhorias do Ethereum (EIPs) {#introduction-to-ethereum-improvement-proposals}
## O que são EIPs? {#what-are-eips}
[Propostas de Melhorias do Ethereum (EIPs)](https://eips.ethereum.org/) são padrões especificando novos recursos ou processos potenciais para o Ethereum. As EIPs contêm especificações técnicas para as mudanças propostas e agem como a "fonte da verdade" para a comunidade. Atualizações de rede e padrões de aplicativos para Ethereum são discutidos e desenvolvidos através do processo EIP.
-Qualquer um da comunidade Ethereum tem a capacidade de criar uma EIP. Diretrizes para escrever EIPs estão incluídas na [EIP 1](https://eips.ethereum.org/EIPS/eip-1). A EIP deve fornecer uma especificação técnica concisa do recurso que propõe. O autor da EIP é responsável por criar consenso dentro da comunidade e documentar opiniões discordantes. Dada as altas exigências técnicas para o envio de uma EIP bem-elaborada, a maioria dos autores de EIP são desenvolvedores de aplicativos ou protocolos.
+Qualquer um da comunidade Ethereum tem a capacidade de criar uma EIP. Diretrizes para escrever EIPs estão incluídas na [EIP 1](https://eips.ethereum.org/EIPS/eip-1). Uma EIP deve fornecer principalmente uma especificação técnica concisa com um pouco de motivação. O autor da EIP é responsável por obter consenso dentro da comunidade e documentar opiniões alternativas. Dada a alta barreira técnica para enviar uma EIP bem-elaborada, historicamente, a maioria dos autores de EIP são geralmente desenvolvedores de aplicativos ou protocolos.
## Por que as EIPs são importantes? {#why-do-eips-matter}
-As EIPs desempenham um papel central na forma como as mudanças acontecem e são documentadas no Ethereum. São a forma de as pessoas proporem, debaterem e adoptarem alterações. Existem [diferentes tipos de EIPs](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1.md#eip-types), incluindo as principais EIPs para alterações de protocolo de baixo nível que afetam o consenso e exigem um upgrade de rede, bem como os ERCs para os padrões de aplicativo. Por exemplo, os padrões para criar tokens, como [ERC20](https://eips.ethereum.org/EIPS/eip-20) ou [ERC721](https://eips.ethereum.org/EIPS/eip-721) permitem que os aplicativos que interagem com esses tokens tratem todos os tokens usando as mesmas regras, o que facilita a criação de aplicativos interoperáveis.
+As EIPs desempenham um papel central em como as mudanças acontecem e são documentadas no Ethereum. São a forma de as pessoas proporem, debaterem e adoptarem alterações. Existem [diferentes tipos de EIPs](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1.md#eip-types), incluindo EIPs centrais para alterações de protocolo de baixo nível, que afetam o consenso e exigem uma atualização de rede como [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) e ERCs para padrões de aplicativos como [EIP-20](https://eips.ethereum.org/EIPS/eip-20) e [EIP-721](https://eips.ethereum.org/EIPS/eip-721).
-Cada atualização de rede consiste em um conjunto de EIPs que precisam ser implementadas por cada [cliente Ethereum](/learn/#clients-and-nodes) na rede. Isso significa que para entrar em consenso com outros clientes na rede principal do Ethereum, os desenvolvedores do cliente precisam se certificar de que todos implementaram as EIPs necessárias.
+Cada atualização de rede consiste em um conjunto de EIPs que precisam ser implementadas por cada [cliente Ethereum](/learn/#clients-and-nodes) na rede. Isso significa que para estar em consenso com outros clientes na rede principal do Ethereum, os desenvolvedores do cliente precisam ter certeza de que todos implementaram as EIPs necessárias.
-Além de fornecer uma especificação técnica para mudanças, as EIPs são a unidade em torno da qual a governança acontece no Ethereum: qualquer um pode propor uma EIP e, em seguida, vários stakeholders da comunidade discutirão para determinar se ela deve ser adotada como padrão ou incluída em uma melhoria da rede. Como as EIPs não centrais não precisam ser adotadas por todos os aplicativos (por exemplo, você pode criar um token diferente de[ERC20](https://eips.ethereum.org/EIPS/eip-20)), mas as EIPs centrais devem ser amplamente adotadas (porque todos os nós devem atualizar para se manter parte da mesma rede), as EIPs nativas requerem um consenso mais amplo dentro da comunidade do que as EIPs não centrais.
+Além de fornecer uma especificação técnica para mudanças, as EIPs são a unidade em torno da qual a governança acontece no Ethereum: qualquer um pode propor uma EIP e, em seguida, vários stakeholders da comunidade discutirão para determinar se ela deve ser adotada como padrão ou incluída em uma melhoria da rede. Como as EIPs não centrais não precisam ser adotadas por todos os aplicativos (por exemplo, é possível criar um token diferente do ERC20), embora as EIPs centrais devam ser amplamente adotadas (porque todos os nós devem ser atualizados para se manterem parte da mesma rede), as EIPs centrais exigem um consenso mais amplo dentro da comunidade do que as EIPs não centrais.
## Histórico de EIPs {#history-of-eips}
-O repositório GitHub [Propostas de Melhorias do Ethereum (EIPs)](https://github.com/ethereum/EIPs) foi criado em outubro de 2015. O processo EIP é baseado no processo de [Propostas de Melhorias do Bitcoin (BIPs)](https://github.com/bitcoin/bips) que, por sua vez, é baseado no processo [Propostas de Melhorias do Python (PEPs)](https://www.python.org/dev/peps/).
+O repositório Github [Propostas de Melhorias do Ethereum (EIPs)](https://github.com/ethereum/EIPs) foi criado em outubro de 2015. O processo EIP é baseado no processo de [Propostas de Melhorias do Bitcoin (BIPs)](https://github.com/bitcoin/bips) que, por sua vez, é baseado no processo [Propostas de Melhorias do Python (PEPs)](https://www.python.org/dev/peps/).
-Os editores da EIP têm a tarefa de analisar EIPs por coerência técnica, ortografia/gramática corretas e estilo de código. Martin Becze, Vitalik Buterin, Gavin Wood e alguns outros foram os editores originais de EIP de 2015 até o final de 2016. Os editores atuais de EIP são:
+Os editores de EIP têm a tarefa de revisar os processos das EIPs quanto a coerência técnica, problemas de formatação e correção de ortografia, gramática e estilo de código. Martin Becze, Vitalik Buterin, Gavin Wood e alguns outros foram os editores originais de EIP de 2015 até o final de 2016.
-- Alex Beregszaszi (EWASM/Fundação Ethereum)
-- Greg Colvin (Comunidade)
-- Casey Detrio (EWASM/Fundação Ethereum)
-- Matt Garnett (Quilt)
-- Hudson James (Fundação Ethereum)
-- Nick Johnson (ENS)
-- Nick Savers (Comunidade)
-- Micah Zoltu (Comunidade)
+Os editores atuais de EIP são
-Editores da EIP juntamente com membros da comunidade de [Ethereum Cat Herders](https://ethereumcatherders.com/) e [Ethererum Magicians](https://ethereum-magicians.org/) estão decidindo quais EIP serão implementadas e quais serão responsáveis pela facilitação das EIPs e pela transferência delas para os estágios "Final" ou "Retirada".
+- Alex Beregszaszi (@axic)
+- Gavin John (@Pandapip1)
+- Greg Colvin (@gcolvin)
+- Matt Garnett (@lightclient)
+- Sam Wilson (@SamWilsn)
-O processo completo de padronização juntamente com o gráfico é descrito em [EIP-1](https://eips.ethereum.org/EIPS/eip-1)
+Os editores eméritos da EIP são
-## Saiba mais {#learn-more}
+- Casey Detrio (@cdetrio)
+- Hudson Jameson (@Souptacular)
+- Martin Becze (@wanderer)
+- Micah Zoltu (@MicahZoltu)
+- Nick Johnson (@arachnid)
+- Nick Savers (@nicksavers)
+- Vitalik Buterin (@vbuterin)
-Se estiver interessado em ler mais sobre EIPs, confira o [site das EIPs](https://eips.ethereum.org/) onde você pode encontrar informações adicionais, incluindo:
+Se você deseja se tornar um editor de EIP, confira [EIP-5069](https://eips.ethereum.org/EIPS/eip-5069).
-- [Os diferentes tipos de EIPs](https://eips.ethereum.org/)
-- [Uma lista de todas as EIP criadas](https://eips.ethereum.org/all)
-- [Status da EIP e o que eles significam](https://eips.ethereum.org/)
+Os editores de EIP decidem quando uma proposta está pronta para se tornar uma EIP e ajudam os autores da EIP a avançar com suas propostas. [Ethereum Cat Herders](https://ethereumcatherders.com/) ajuda a organizar reuniões entre os editores de EIP e a comunidade (confira [EIPIP](https://github.com/ethereum-cat-herders/EIPIP)).
-## Participar {#participate}
+O processo completo de padronização, juntamente com o gráfico, é descrito em [EIP-1](https://eips.ethereum.org/EIPS/eip-1)
-Qualquer pessoa pode criar EIP ou ERC, embora você deva ler [EIP-1](https://eips.ethereum.org/EIPS/eip-1), que descreve o processo EIP, o que é EIP, tipos de EIPs, o que o documento EIP deve conter, formato EIP e modelo, lista de editores EIP e tudo o que você precisa saber sobre EIPs antes de criar uma. Sua nova EIP deve definir uma nova funcionalidade que não seja muito complexa nem muito específica, e que possa ser usada por projetos no ecossistema Ethereum. A parte mais difícil é a facilitação. Como autor, você precisa ajudar as pessoas a entender sua EIP, coletar feedback, escrever artigos descrevendo problemas que sua EIP resolve e colaborar com projetos para implementá-la.
+## Saiba mais {#learn-more}
-Se estiver interessado em acompanhar ou compartilhar sua opinião sobre EIPs, confira o [fórum do Ethereum Magicians](https://ethereum-magicians.org/), onde as EIPs são discutidas com a comunidade.
+Se você estiver interessado em ler mais sobre EIPs, confira o [site sobre EIPs](https://eips.ethereum.org/) e [EIP-1](https://eips.ethereum.org/EIPS/eip-1). Aqui estão alguns links úteis:
-Veja também:
+- [Uma lista de cada EIP](https://eips.ethereum.org/all)
+- [Uma descrição de todos os tipos de EIP](https://eips.ethereum.org/EIPS/eip-1#eip-types)
+- [Uma descrição de todos os status de EIP](https://eips.ethereum.org/EIPS/eip-1#eip-process)
+
+## Participar {#participate}
-- [Como criar uma EIP](https://eips.ethereum.org/EIPS/eip-1)
+Qualquer pessoa pode criar uma EIP. Antes de enviar uma proposta, é necessário ler a [EIP-1](https://eips.ethereum.org/EIPS/eip-1), que descreve o processo de EIP, como escrever uma EIP e solicitar feedback sobre no fórum [Ethereum Magicians](https://ethereum-magicians.org/), no qual as propostas são discutidas primeiro com a comunidade antes de um plano ser enviado.
## Referências {#references}
diff --git a/src/content/translations/pt-br/energy-consumption/index.md b/src/content/translations/pt-br/energy-consumption/index.md
index 83d07391714..5beb1585193 100644
--- a/src/content/translations/pt-br/energy-consumption/index.md
+++ b/src/content/translations/pt-br/energy-consumption/index.md
@@ -6,47 +6,53 @@ lang: pt-br
# Consumo de energia do Ethereum {#introduction}
-Ethereum é um blockchain verde. Usa um mecanismo de consenso [prova de participação](/developers/docs/consensus-mechanisms/pos) (proof of stake) que pode ser executado em dispositivos de baixa potência e não requer computação pesada para participar. O mecanismo de prova de participação do Ethereum protege a rede usando ETH envolvidos em vez de energia gasta, como em [prova de trabalho](/developers/docs/consensus-mechanisms/pos) (proof of work). A mudança para a prova de participação significa que a energia gasta pela rede Ethereum é relativamente pequena – na ordem de 0,01 TWh/ano.
+Ethereum é uma cadeia de blocos verde. Usa um mecanismo de consenso [prova de participação](/developers/docs/consensus-mechanisms/pos) (proof of stake) que pode ser executado em dispositivos de baixa potência e não requer computação pesada para participar. O mecanismo de prova de participação do Ethereum protege a rede usando ETH de participação em vez de energia gasta, como na [prova de trabalho](/developers/docs/consensus-mechanisms/pow). A mudança para a prova de participação significa que a energia gasta pela rede Ethereum é relativamente pequena – na ordem de 0,01 TWh/ano.
## Consumo energético da prova de participação {#proof-of-stake-energy}
O gasto de energia do Ethereum é aproximadamente igual ao custo de funcionamento de um laptop modesto para cada nó na rede.
-Muitos artigos estimam o gasto de energia "por transação" para comparar blockchain com outros setores. A vantagem disso é que é fácil de entender. Entretanto, estimativas baseadas em transações podem induzir ao erro porque a energia necessária para propor e validar um bloco é independente do número de transações dentro dele. Uma unidade de gasto de energia por transação implica que menos transações levaria a menor gasto de energia e vice-versa, o que não é o caso. Uma estimativa por transação é altamente dependente de como a taxa de transferência de uma transação blockchain é definida, e ajustar esta definição pode ser levado a fazer com que o valor pareça maior ou menor.
+Muitos artigos estimam o gasto de energia "por transação" para comparar cadeias de blocos com outros setores. A vantagem disso é que é fácil de entender. Entretanto, estimativas baseadas em transações podem induzir ao erro porque a energia necessária para propor e validar um bloco é independente do número de transações dentro dele. Uma unidade de gasto de energia por transação implica que menos transações levaria a menor gasto de energia e vice-versa, o que não é o caso. Uma estimativa por transação é altamente dependente de como a taxa de transferência de uma transação de cadeia de blocos é definida, e ajustar esta definição pode ser levado a fazer com que o valor pareça maior ou menor.
Por exemplo, no Ethereum, a taxa de transferência da transação não é apenas a da camada base – é também a soma da taxa de transferência da transação de todos os seus rollups da "[camada 2](/layer-2/)", que geralmente não são incluídos nos cálculos e os reduziriam drasticamente. Essa é uma das razões pelas quais as ferramentas que comparam o consumo de energia por transação entre plataformas são enganosas.
Mais relevante é o consumo total de energia e o rastro de carbono da rede como um todo. A partir desses valores, podemos examinar o que essa rede oferece aos seus usuários e à sociedade em geral, e fazer uma avaliação mais holística se esse gasto de energia é justificado ou não. As medições por transação, por outro lado, implicam que o valor da rede vem apenas de seu papel na transferência criptográfica entre contas e proíbe uma análise honesta de custo-benefício.
-[Digiconomist fornece o consumo de energia de toda a rede e sinais de carbono para Bitcoin e Ethereum](https://digiconomist.net/ethereum-energy-consumption). No momento da redação deste artigo, o Bitcoin gasta cerca de 200 TWh/ano de energia e emite cerca de 100 MT (megatons) de carbono por ano, enquanto gera cerca de 32.000 T de resíduos elétricos de hardware obsoleto anualmente. Em comparação, o gasto total de energia para proteger o Ethereum está mais próximo de **0.01 TWh/ano**.
+O [CCRI](https://carbon-ratings.com) (Crypto Carbon Ratings Institute) analisou extensivamente o consumo de eletricidade e a emissão de carbono da rede Ethereum (consulte o relatório [_A Fusão — Implicações no Consumo de Eletricidade e Emissão de Carbono da Rede Ethereum_](https://carbon-ratings.com/eth-report-2022)). O CCRI mediu o consumo de eletricidade de diferentes nós com várias configurações de hardware e software cliente. Isso resultou em uma estimativa de **2,601 MWh** (0,0026 TWh) para o consumo anual de eletricidade da rede no momento da análise (setembro de 2022), o que corresponde a emissões anuais de carbono de **870 toneladas de CO2e**, aplicando a fatores regionais específicos de intensidade de carbono.
-![Comparação das despesas de energia entre setores](./energy.png)
+[A Digiconomist fornece as pegadas de carbono e de consumo de energia de toda a rede para Bitcoin e Ethereum](https://digiconomist.net/ethereum-energy-consumption). No momento da redação deste artigo, o Bitcoin gasta cerca de 200 TWh/ano de energia e emite cerca de 100 MT (megatons) de carbono por ano, enquanto gera cerca de 32.000 T de resíduos elétricos de hardware obsoleto anualmente. Em comparação, o gasto total de energia para proteger o Ethereum está mais próximo de **0,01 TWh/ano**.
-A figura acima mostra o consumo anual de energia estimado em TWh/ano para vários setores (recuperado em Junho de 2022). _Observe que as estimativas apresentadas no gráfico são de fontes publicamente disponíveis vinculadas no texto abaixo. São ilustrativas e não representam uma estimativa, promessa nem previsão oficial._
+
-Para colocar o consumo de energia do Ethereum no contexto, podemos comparar estimativas anualizadas para outros setores. Considerando o Ethereum uma plataforma para manter com segurança ativos digitais como investimentos, talvez possamos comparar com a mineração de ouro, o qual estima-se gastar cerca de [240 TWh/ano](https://www.kitco.com/news/2021-05-17/Gold-s-energy-consumption-doubles-that-of-bitcoin-Galaxy-Digital.html). Como uma plataforma de pagamentos digitais, talvez possamos comparar com o PayPal (estima-se um consumo de cerca de [0,26 TWh/ano](https://app.impaakt.com/analyses/paypal-consumed-264100-mwh-of-energy-in-2020-24-from-non-renewable-sources-27261)). Como plataforma de entretenimento, talvez possamos comparar com o setor de jogos, que estima gastar cerca de [34 TW/ano](https://www.researchgate.net/publication/336909520_Toward_Greener_Gaming_Estimating_National_Energy_Use_and_Energy_Efficiency_Potential). As estimativas de consumo energético da Netflix variam drasticamente entre [cerca de 0,45TWhr/ano](https://s22.q4cdn.com/959853165/files/doc_downloads/2020/02/0220_Netflix_EnvironmentalSocialGovernanceReport_FINAL.pdf) (estimativas próprias relatadas em 2019) até cerca de 94 TWh/ano (estimado pelo [Shift Project](https://theshiftproject.org/en/article/unsustainable-use-online-video/)) - há alguma discussão sobre as suposições subjacentes a essas estimativas disponíveis em [Carbon Brief](https://www.carbonbrief.org/factcheck-what-is-the-carbon-footprint-of-streaming-video-on-netflix). Como alternativa, o Ethereum pode ser comparado ao YouTube, que estima gastar cerca de [244 TWh/ano](https://thefactsource.com/how-much-electricity-does-youtube-use/), embora esses valores dependam muito do tipo de dispositivo em que os vídeos transmitidos e da eficiência energética da infraestrutura subjacente, nos centros de dados. As estimativas do gasto de energia do YouTube foram divididas por canais e vídeos individuais. [Essas estimativas](https://thefactsource.com/how-much-electricity-does-youtube-use/) implicam que as pessoas consumiram 45 vezes mais energia assistindo Gangnam Style em 2019 do que provas de participação Ethereum usam em um ano.
+A figura acima mostra o consumo anual de energia estimado em TWh/ano para vários setores (recuperado em junho de 2022). _Observe que as estimativas apresentadas no gráfico são de fontes publicamente disponíveis vinculadas no texto abaixo. Elas são ilustrativas e não representam uma estimativa, promessa nem previsão oficial._
+
+Para colocar o consumo de energia do Ethereum no contexto, podemos comparar estimativas anualizadas para outros setores. Considerando que o Ethereum é uma plataforma que visa manter com segurança ativos digitais como investimentos, talvez possamos compará-la com mineração de ouro, cujo gasto é estimado em cerca de [240 TWh/ano](https://www.kitco.com/news/2021-05-17/Gold-s-energy-consumption-doubles-that-of-bitcoin-Galaxy-Digital.html). Como uma plataforma de pagamentos digitais, talvez possamos compará-la com o PayPal (cujo consumo é estimado em de cerca de [0,26 TWh/ano](https://app.impaakt.com/analyses/paypal-consumed-264100-mwh-of-energy-in-2020-24-from-non-renewable-sources-27261)). Como plataforma de entretenimento, talvez possamos comparar com a indústria de jogos, cujo gasto é estimado em cerca de [34 TW/ano](https://www.researchgate.net/publication/336909520_Toward_Greener_Gaming_Estimating_National_Energy_Use_and_Energy_Efficiency_Potential) _somente nos Estados Unidos_. As estimativas de consumo energético da Netflix variam drasticamente entre [cerca de 0,45 TWhr/ano](https://s22.q4cdn.com/959853165/files/doc_downloads/2020/02/0220_Netflix_EnvironmentalSocialGovernanceReport_FINAL.pdf) (estimativas próprias reportadas em 2019) até cerca de 94 TWh/ano (estimado pelo [Shift Project](https://theshiftproject.org/en/article/unsustainable-use-online-video/)) — há alguma discussão sobre as suposições subjacentes a essas estimativas disponíveis em [Carbon Brief](https://www.carbonbrief.org/factcheck-what-is-the-carbon-footprint-of-streaming-video-on-netflix). Como alternativa, o Ethereum pode ser comparado ao Youtube, que estima gastar cerca de [244 TWh/ano](https://thefactsource.com/how-much-electricity-does-youtube-use/), embora esses valores dependam muito do tipo de dispositivo em que os vídeos são transmitidos e da eficiência energética da infraestrutura subjacente, como os centros de dados. As estimativas do gasto de energia do YouTube foram divididas por canais e vídeos individuais. [Essas estimativas](https://thefactsource.com/how-much-electricity-does-youtube-use/) implicam que as pessoas consumiram 45 vezes mais energia assistindo Gangnam Style em 2019 do que as provas de participação Ethereum usam em um ano.
## Uma camada de aplicação verde {#green-applications}
-Embora o consumo de energia do Ethereum seja muito baixo, há também uma comunidade sobre **finanças regenerativas (ReFi)** substancial, crescente e altamente ativa construída no Ethereum. Os aplicativos ReFi usam componentes DeFi para construir aplicativos financeiros que têm externalidades positivas que beneficiam o meio ambiente. O ReFi faz parte de um movimento ["solarpunk"](https://en.wikipedia.org/wiki/Solarpunk) mais amplo que está intimamente alinhado com o Ethereum e visa unir o avanço tecnológico e a gestão ambiental. A natureza descentralizada, sem permissão e combinável do Ethereum faz dele a camada base ideal para as comunidades ReFi e solarpunk. Por meio do desenvolvimento destes (e outros, por exemplo, [DeSci](/desci/)), o Ethereum está se tornando uma tecnologia ambiental e socialmente positiva.
+Embora o consumo de energia do Ethereum seja muito baixo, há também uma comunidade sobre **finanças regenerativas (ReFi)** substancial, crescente e altamente ativa construída no Ethereum. Os aplicativos ReFi usam componentes DeFi para construir aplicativos financeiros que têm externalidades positivas que beneficiam o ambiente. O ReFi faz parte de um movimento ["solarpunk"](https://en.wikipedia.org/wiki/Solarpunk) mais amplo que está intimamente alinhado com o Ethereum e visa unir o avanço tecnológico e a gestão ambiental. A natureza descentralizada, sem permissão e composta do Ethereum faz dele a camada base ideal para as comunidades ReFi e solarpunk. Por meio do desenvolvimento destes (e outros, por exemplo, [DeSci](/desci/)), o Ethereum está se tornando uma tecnologia ambiental e socialmente positiva.
## Déficit de carbono do Ethereum {#carbon-debt}
-O gasto atual de energia do Ethereum é muito baixo, mas nem sempre foi assim. O Ethereum mudou seu mecanismo de consenso de prova de participação (proof of stake) no 3.º trimestre de 2022. Entretanto, o Ethereum usou um mecanismo de prova de trabalho (proof of work) de 2014-2022, que teve um custo ambiental muito maior.
+O gasto atual de energia do Ethereum é muito baixo, mas nem sempre foi assim. O Ethereum mudou seu mecanismo de consenso de prova de participação no 3.º trimestre de 2022. No entanto, o Ethereum usou um mecanismo de prova de trabalho de 2014 a 2022, que teve um custo ambiental muito maior.
+
+Desde seu início, o Ethereum pretendia implementar um mecanismo de consenso de prova de participação, mas fazê-lo sem sacrificar a segurança e a descentralização levou anos de pesquisa e desenvolvimento focalizados. Portanto, um mecanismo de prova de trabalho foi usado para iniciar a rede. O consenso de prova de trabalho exige que os mineradores usem seu hardware de computação para resolver um enigma, gastando energia no processo. A solução para o enigma prova que a energia foi gasta pelo minerador, demonstrando que eles investiram valor no mundo real pelo direito de adicionar à cadeia de blocos. O consumo total de energia do Ethereum atingiu seu pico durante o ápice do mercado em alta de criptomoedas em fevereiro de 2022, com pouco menos de 94 TWh/ano. No verão anterior à mudança para a prova de participação, o consumo de energia estava próximo de 60 TWh/ano, comparável ao do Uzbequistão, com uma emissão de carbono equivalente à do Azerbaijão (33 MT/ano).
+
+O [CCRI](https://carbon-ratings.com) examinou o impacto da fusão do Ethereum, da prova de trabalho para a prova de participação; os resultados sublinharam o impacto significativo da mudança do protocolo de consenso: o consumo anual de eletricidade foi reduzido de 22.900.320 MWh para 2.601 MWh e, portanto, mais de **99,988%**. Da mesma forma, a emissão de carbono do Ethereum foi reduzida em aproximadamente **99,992%** (de 11.016.000 para 870 toneladas de CO2e). Representado metaforicamente, isso corresponde a uma redução nas emissões da altura da Torre Eiffel para uma pequena figura de brinquedo de plástico, como mostra a figura abaixo.
-Desde seu início, o Ethereum pretendia implementar um mecanismo de consenso de prova de participação, mas fazê-lo sem sacrificar a segurança e a descentralização levou anos de pesquisa e desenvolvimento focados. Portanto, um mecanismo de prova de trabalho foi usado para iniciar a rede. O consenso de prova de trabalho exige que os mineradores usem seu hardware de computação para resolver um enigma, gastando energia no processo. A solução para o enigma prova que a energia foi gasta pelo minerador, demonstrando que eles investiram valor no mundo real pelo direito de adicionar à blockchain. O consumo total de energia do Ethereum atingiu seu pico durante o ápice do mercado em alta de criptomoedas em fevereiro de 2022, a pouco menos de 94 TWh/ano. No verão anterior à mudança para a prova de participação, o consumo de energia estava próximo de 60 TWh/ano, comparável ao do Uzbequistão, com uma emissão de carbono equivalente à do Azerbaijão (33 MT/ano).
+![Comparação do consumo de energia do Ethereum antes e depois da Fusão. Exibe, à esquerda, a torre Eiffel com 330 metros de altura e, à direita, uma figura de brinquedo de plástico com 4 cm de altura dentro de uma lupa.](energy_consumption_pre_post_merge.png)
-Tanto a prova de trabalho quanto a prova de participação são apenas mecanismos para decidir quem adiciona o próximo bloco. Trocar a prova de trabalho por prova de participação, em que o valor real investido vem do ETH colocado em stake diretamente em um contrato inteligente, elimina a necessidade de queima de energia pelos mineradores para adicionar à blockchain. Portanto, o custo ambiental de proteção da rede é drasticamente reduzido.
+Tanto a prova de trabalho quanto a prova de participação são apenas mecanismos para decidir quem adiciona o próximo bloco. Trocar a prova de trabalho por prova de participação, em que o valor real investido vem do ETH colocado em participação diretamente em um contrato inteligente, elimina a necessidade de queima de energia pelos mineradores para adicionar à cadeia de blocos. Portanto, o custo ambiental de proteção da rede é drasticamente reduzido.
## Por que a prova de participação é mais ecológica do que a prova de trabalho? {#why-pos-is-greener-than-pow}
-A prova de trabalho é uma forma robusta de proteger a rede. As transações no blockchain Ethereum sob o sistema de prova de trabalho anterior foram validadas por [mineradores](/developers/docs/consensus-mechanisms/pow/mining). Os mineradores empacotam as transações em blocos ordenados e os adicionaram ao blockchain Ethereum. Os novos blocos foram transmitidos para todos os outros operadores de nós que executam as transações de forma independente e verificam se são válidas. Qualquer desonestidade apareceu como uma inconsistência entre diferentes nós. Blocos honestos foram adicionados ao blockchain e se tornaram uma parte imutável da história. A capacidade de qualquer minerador para adicionar novos blocos só funciona se houver um custo associado à mineração e uma imprevisibilidade sobre qual será o nó específico que enviará o próximo bloco. Essas condições são atendidas pela imposição da prova de trabalho. Para ser elegível ao envio de um bloco de transações, um minerador deve ser o primeiro a enviar a solução para um enigma computacionalmente caro. Para assumir com sucesso o controle do blockchain, um minerador desonesto teria que vencer consistentemente a corrida de prova de trabalho, investindo em hardware e energia suficientes para superar a maioria dos outros mineradores.
+A prova de trabalho é uma maneira sólida de proteger a rede. As transações na cadeia de blocos Ethereum no sistema de prova de trabalho anterior foram validadas por [mineradores](/developers/docs/consensus-mechanisms/pow/mining). Os mineradores empacotaram as transações em blocos ordenados e as adicionaram à cadeia de blocos Ethereum. Os novos blocos foram transmitidos para todos os outros operadores de nós que executam as transações de forma independente e verificam se são válidas. Qualquer desonestidade apareceu como uma inconsistência entre diferentes nós. Blocos honestos foram adicionados à blockchain e se tornaram uma parte imutável da história. A capacidade de qualquer minerador de adicionar novos blocos só funciona se houver um custo associado à mineração e uma imprevisibilidade sobre qual será o nó específico que enviará o próximo bloco. Essas condições são atendidas pela imposição da prova de trabalho. Para ser elegível ao envio de um bloco de transações, um minerador deve ser o primeiro a enviar a solução para um enigma computacionalmente caro. Para assumir com sucesso o controle da cadeia de blocos, um minerador desonesto teria que vencer consistentemente a corrida da prova de trabalho, investindo em hardware e energia suficientes para superar a maioria dos outros mineradores.
-Este mecanismo de segurança da rede é problemático por várias razões. Primeiro, os mineradores aumentariam suas chances de sucesso investindo em hardwares mais poderosos, criando condições para uma disputa acirrada com os mineradores adquirindo equipamentos de mineração cada vez mais famintos por energia. Isso aumentou o consumo de energia da rede e gerou desperdício de hardware. Em segundo lugar, o protocolo de prova de trabalho do Ethereum (antes da transição para prova de participação) tinha um consumo total anual de energia aproximadamente igual ao da Finlândia [^1] e um rastro de carbono semelhante à Suíça [^1].
+Este mecanismo de segurança da rede é problemático por várias razões. Primeiro, os mineradores aumentariam suas chances de sucesso investindo em hardwares mais poderosos, criando condições para uma disputa acirrada com os mineradores, que adquirem equipamentos de mineração cada vez mais famintos por energia. Isso aumentou o consumo de energia da rede e gerou desperdício de hardware. Em segundo lugar, o protocolo de prova de trabalho do Ethereum (antes da transição para prova de participação) tinha um consumo total anual de energia aproximadamente igual ao da Finlândia [^1] e uma pegada de carbono semelhante à da Suíça [^1].
-A prova de participação usa validadores em vez de mineradores. Os validadores desempenham a mesma função que os mineradores, exceto que, em vez de gastar seus ativos antecipadamente como gasto de energia, eles fazem staking do ETH como garantia contra comportamentos desonestos. Este ETH em staking pode ser destruído se o validador agir de forma desonesta, com penalidades mais severas para ações mais nefastas. Isso incentiva fortemente a participação ativa e honesta na segurança da rede sem exigir grandes gastos de energia. Como quase toda a energia gasta para proteger a rede de prova de trabalho veio do algoritmo de mineração, a mudança para prova de participação reduziu drasticamente o gasto de energia. Além disso, não há benefício em investir em hardware mais poderoso sob prova de participação, portanto, não há condição de dipustas acirradas e menos desperdício eletrônico. Os validadores Ethereum podem ser executados em laptops ou dispositivos de baixo consumo de energia, como um [Raspberry Pi](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/user-guide/ethereum2.0.html).
+A prova de participação usa validadores em vez de mineradores. Os validadores desempenham a mesma função que os mineradores, exceto que, em vez de gastar seus ativos antecipadamente como gasto de energia, eles participam com o ETH como garantia contra comportamentos desonestos. Este ETH de participação pode ser destruído se o validador agir de forma desonesta, com penalidades mais severas para ações mais nefastas. Isso incentiva fortemente a participação ativa e honesta na segurança da rede sem exigir grandes gastos de energia. Como quase toda a energia gasta para proteger a rede de prova de trabalho veio do algoritmo de mineração, a mudança para prova de participação reduziu drasticamente o gasto de energia. Além disso, não há vantagens em investir em hardware mais poderoso na prova de participação, portanto, não há condição de disputas acirradas e menos desperdício eletrônico. Os validadores Ethereum podem ser executados em laptops típicos ou dispositivos de baixo consumo de energia, como um [Raspberry Pi](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/index.html).
-Leia mais sobre [como o Ethereum implementa o proof-of-stake](/developers/docs/consensus-mechanisms/pos) e como ele se compara à proof-of-work.
+Leia mais sobre [como o Ethereum implementa a prova de participação](/developers/docs/consensus-mechanisms/pos) e como ele se compara à prova de trabalho.
Se você acha que essas estatísticas estão incorretas ou podem ser mais precisas, abra um problema ou PR. Estas são estimativas da equipe da ethereum.org feitas usando informações acessíveis ao público e o atual roadmap do Ethereum. Essas afirmações não representam uma promessa oficial da Fundação Ethereum.
@@ -59,6 +65,7 @@ Leia mais sobre [como o Ethereum implementa o proof-of-stake](/developers/docs/c
- [Emissões do Ethereum: uma estimativa minuciosa](https://kylemcdonald.github.io/ethereum-emissions/) _ Kyle McDonald_
- [Índice de consumo de energia do Ethereum](https://digiconomist.net/ethereum-energy-consumption/) – _Digiconomist_
- [ETHMerge.com](https://ethmerge.com/) — _[@InsideTheSim](https://twitter.com/InsideTheSim)_
+- [A Fusão — As Implicações no Consumo de Eletricidade e Emissão de Carbono da Rede Ethereum](https://carbon-ratings.com/eth-report-2022) - _CCRI_
## Tópicos relacionados {#related-topics}
diff --git a/src/content/translations/pt-br/security/index.md b/src/content/translations/pt-br/security/index.md
index 410638a96c3..7f089b9afe7 100644
--- a/src/content/translations/pt-br/security/index.md
+++ b/src/content/translations/pt-br/security/index.md
@@ -158,6 +158,8 @@ Ao interagir com contratos inteligentes, não permita limites de gastos ilimitad
Muitas carteiras Ethereum oferecem proteção de limites para evitar que as contas sejam drenadas.
+[Veja as carteiras com proteção de limites](/wallets/find-wallet/?filters=has_limits_protection)
+
## Fraudes comuns {#common-scams}
diff --git a/src/content/translations/pt-br/upgrades/beacon-chain/index.md b/src/content/translations/pt-br/upgrades/beacon-chain/index.md
index 87b883f76ea..673b3a82f60 100644
--- a/src/content/translations/pt-br/upgrades/beacon-chain/index.md
+++ b/src/content/translations/pt-br/upgrades/beacon-chain/index.md
@@ -4,64 +4,72 @@ description: Saiba mais sobre a Beacon Chain — a melhoria que introduziu a pro
lang: pt-br
template: upgrade
image: ../../../../../assets/upgrades/core.png
-summaryPoint1: A Beacon Chain não muda nada sobre o Ethereum que usamos hoje.
-summaryPoint2: Coordenará a rede, servindo de camada de consenso.
-summaryPoint3: Introduziu a prova de participação para o ecossistema Ethereum.
-summaryPoint4: Talvez você tenha visto isso sendo mencionado como "Fase 0" nos roadmaps técnicos.
+summaryPoint1: A Beacon Chain introduziu a prova de participação no ecossistema Ethereum.
+summaryPoint2: Ela foi integrada à cadeia de prova de trabalho da Ethereum original em setembro de 2022.
+summaryPoint3: A Beacon Chain introduziu a lógica de consenso e o protocolo de propagação de boatos de bloco que agora protege a Ethereum.
---
- A Beacon Chain foi lançada em 1 de dezembro de 2020 ao meio-dia (UTC). Para saber mais, conheça os dados. Se você quiser ajudar a validar a cadeia, participe com seus ETH.
+ A Beacon Chain foi lançada em 1º de Dezembro de 2020 e formalizou a prova de participação como mecanismo de consenso da Ethereum, com a atualização da Fusão em 15 de setembro de 2022.
-## O que a Beacon Chain faz? {#what-does-the-beacon-chain-do}
+## O que era a Beacon Chain? {#what-is-the-beacon-chain}
-A Beacon Chain conduzirá ou coordenará a rede estendida de [shards](/upgrades/sharding/) ("fragmentos") e [stakers](/staking/) ("participantes"). Mas não será como a [rede principal da Ethereum](/glossary/#mainnet) de hoje. Ela não será capaz de gerenciar contas ou contratos inteligentes.
+Beacon Chain foi o nome original dado a cadeia de blocos de prova de participação lançada em 2020. Ela foi criada para garantir que a lógica de consenso de prova de participação era sólida e sustentável antes de implementá-la na rede principal do Ethereum. Portanto, ela existia paralelamente à prova de trabalho do Ethereum. Desligar a prova de trabalho e mudar para a prova de participação no Ethereum exigiu instruir a Beacon Chain a aceitar transações da cadeia original do Ethereum, juntá-las em blocos e então organizá-las em uma cadeia de blocos usando um mecanismo de consenso baseado em prova de participação. Ao mesmo tempo, os nós da rede original do Ethereum desligaram sua lógica de consenso, propagação de blocos e mineração, passando essas funções para a Beacon Chain. Este evento ficou conhecido como [A Fusão](/upgrades/merge/). Assim que A Fusão aconteceu, não haviam mais duas cadeias de blocos, mas apenas uma cadeia de prova de participação do Ethereum.
-O papel da Beacon Chain mudará com o tempo, mas é um componente fundamental para [o Ethereum seguro, sustentável e dimensionável rumo ao qual estamos trabalhando](/upgrades/vision/).
+## O que a Beacon Chain fazia? {#what-does-the-beacon-chain-do}
-## Características da Beacon Chain {#beacon-chain-features}
+Beacon Chain foi o nome dado a um livro de contas que conduziu e coordenou a rede [participantes](/staking/) do Ethereum antes desses participantes começarem a validar transações reais do Ethereum. Ela não processou transações nem manipulou interações de contratos inteligentes.
+
+Ela introduziu o mecanismo de consenso (ou "camada de consenso") que substituiu a mineração de prova de trabalho no Ethereum e trouxe melhorias significativas em relação ao antigo modelo.
+
+A Beacon Chain foi um componente fundamental para [o Ethereum seguro, amigo do ambiente e escalável que temos agora](/upgrades/vision/).
+
+## O impacto da Beacon Chain {#beacon-chain-features}
### Participação (staking) {#introducing-staking}
-A Beacon Chain iniciará a "prova de participação" ([proof-of-stake](/developers/docs/consensus-mechanisms/pos/)) do Ethereum. Essa é uma nova maneira de você ajudar a manter a rede Ethereum segura. Pense nisso como um bem público que melhorará a integridade do Ethereum e renderá a você mais ETH no processo. Na prática, você precisará participar com seus ETH para ativar o software de validador. Como validador, você processará transações e criará novos blocos na Beacon Chain.
+A Beacon Chain introduziu a [prova de participação](/developers/docs/consensus-mechanisms/pos/) no Ethereum. Isso mantém o Ethereum seguro e recompensa os validadores com mais ETH no processo. Na prática, você precisará participar com seus ETH para ativar o software de validador. Como participante, você executa o software que cria e valida novos blocos na cadeia.
-Participar e se tornar um validador é mais fácil do que [minerar](/developers/docs/mining/) (forma como a rede é mantida segura hoje). E espera-se que isso ajude a tornar a rede Ethereum ainda mais segura em longo prazo. Quanto mais pessoas participarem da rede, mais descentralizada e segura contra ataques ela se tornará.
+O processo de participação serve a um propósito similar ao da [mineração](/developers/docs/mining/), mas é diferente de muitas maneiras. A mineração exigia grandes despesas iniciais na forma de um potente consumo de hardware e energia, resultando em economias de escala e promovendo a centralização. A mineração também não conta com nenhum requisito de bloqueio de ativos como garantia, limitando a capacidade do protocolo de punir os maus atores após um ataque.
+
+A transição para a prova de participação tornou o Ethereum significativamente mais seguro e descentralizado em comparação com a prova de trabalho. Quanto mais pessoas participarem da rede, mais descentralizada e segura contra ataques ela se tornará.
-Se você estiver interessado em se tornar um validador e ajudar a manter a Beacon Chain segura, veja mais informações sobre como participar.
+ Se você estiver interessado em se tornar um validador e ajudar a manter o Ethereum seguro, saiba mais sobre o conceito de participação.
-Essa também é uma mudança importante para outra melhoria do Ethereum: [as cadeias de fragmentos (shard chains)](/upgrades/sharding/).
+### Preparação para a fragmentação {#setting-up-for-sharding}
+
+Desde que o Beacon Chain se fundiu à rede principal do Ethereum, a comunidade começou a procurar escalar a rede.
-### Preparação para as cadeias de fragmentos {#setting-up-for-shard-chains}
+A prova de participação tem a vantagem de manter um registro de todos os produtores de blocos aprovados a qualquer momento, cada um com ETH em jogo. Este registro prepara o cenário para a capacidade de dividir e conquistar, mas divide de forma confiável as responsabilidades específicas da rede.
-Depois da integração da Rede principal com a Beacon Chain, a próxima melhoria apresentará as cadeias de fragmentos à rede de provas de participação (proof-of-stake). Esses "fragmentos" aumentarão a capacidade da rede e melhorarão a velocidade de transação, estendendo a rede para 64 blockchains. A Beacon Chain é um importante primeiro passo para a introdução das cadeias de fragmentos (shard chains), uma vez que é necessário que a participação (staking) aconteça de forma segura.
+Essa responsabilidade contrasta com a prova de trabalho, na qual os mineradores não têm obrigação para com a rede e poderiam parar de minerar e desligar permanentemente seus nós num instante, sem repercussões. Também não existe nenhum registo de autores de blocos conhecidos, nem uma forma confiável de dividir as responsabilidades da rede de forma segura.
-A Beacon Chain também será responsável por designar aleatoriamente participantes (stakers) para que validem as cadeias de fragmentos (shard chains). Isso é importante para dificultar que participantes (stakers) conspirem entre si e assumam controle de um fragmento (shard). Isso significa que eles têm uma chance [menor que 1 em um trilhão](https://medium.com/@chihchengliang/minimum-committee-size-explained-67047111fa20).
+[Mais sobre fragmentação](/upgrades/sharding/)
## Relação entre as melhorias {#relationship-between-upgrades}
-Todas as melhorias do Ethereum estão, de alguma forma, interrelacionadas. Vejamos como a Beacon Chain afeta as outras melhorias.
+Todas as melhorias do Ethereum estão, de alguma forma, inter-relacionadas. Vejamos como a Beacon Chain afeta as outras melhorias.
-### Rede principal e a Beacon Chain {#mainnet-and-beacon-chain}
+### Beacon Chain e A Fusão {#merge-and-beacon-chain}
-A Beacon Chain existirá, a princípio, separada da rede principal Ethereum que utilizamos hoje. No entanto, elas serão conectadas no futuro. O plano é "integrar" a rede principal ao sistema de prova de participação (proof-of-stake) que é controlado e coordenado pela Beacon Chain.
+No começo, a Beacon Chain existia separadamente da rede principal do Ethereum, mas elas foram fundidas em 2022.
- A integração
+ A integração
-### Fragmentos (shards) e a Beacon Chain {#shards-and-beacon-chain}
+### Fragmentos e a Beacon Chain {#shards-and-beacon-chain}
-As cadeias de fragmentos (shard chains) somente podem ser introduzidas ao ecossistema Ethereum com um mecanismo de consenso de prova de participação em vigor. A Beacon Chain introduzirá a participação (staking), preparando assim o caminho para a implementação das cadeias de fragmentos na próxima atualização.
+As cadeias de fragmentos somente podem ser introduzidas ao ecossistema Ethereum com um mecanismo de consenso de prova de participação em vigor. A Beacon Chain introduziu a participação, que após a fusão com a Rede principal, pavimenta o caminho para a fragmentação, ajudando a ampliar ainda mais o Ethereum.
- Cadeias de fragmentos
+ Cadeias de fragmentos
-
-
-## Interação com a Beacon Chain {#interact-with-beacon-chain}
+## Leituras adicionais
-
+- [Mais informações sobre as futuras atualizações do Ethereum](/upgrades/vision)
+- [Mais sobre prova de participação](/developers/docs/consensus-mechanisms/pos)
diff --git a/src/content/translations/pt-br/upgrades/merge/index.md b/src/content/translations/pt-br/upgrades/merge/index.md
index 406bd5853e7..53c89a2561c 100644
--- a/src/content/translations/pt-br/upgrades/merge/index.md
+++ b/src/content/translations/pt-br/upgrades/merge/index.md
@@ -1,67 +1,222 @@
---
-title: A integração
-description: Saiba mais sobre a integração que ocorrerá quando a rede principal do Ethereum se unir ao sistema de prova de participação (proof-of-stake) coordenado pela Beacon Chain.
+title: A Fusão
+description: Aprenda sobre A Fusão — quando a Rede principal do Ethereum adotou a prova de participação.
lang: pt-br
template: upgrade
image: ../../../../../assets/upgrades/merge.png
-summaryPoint1: Eventualmente, a principal rede atual do Ethereum se "integrará" ao sistema de prova de participação.
-summaryPoint2: Isso marcará o fim da prova de trabalho para Ethereum e a transição completa para a prova de participação.
-summaryPoint3: Essa mudança está prevista para depois da implementação das cadeias de fragmentos.
-summaryPoint4: Antes, era chamada de "atracagem".
+summaryPoint1: A Rede principal do Ethereum usa prova de participação, mas nem sempre foi esse o caso.
+summaryPoint2: A melhoria do mecanismo original de prova de trabalho para prova de participação foi chamada de The Merge, ou seja, A Fusão.
+summaryPoint3: A Fusão se refere à fusão original da Rede Principal do Ethereum, com uma cadeia de blocos de prova de participação separada chamada Beacon Chain, agora existente como uma cadeia.
+summaryPoint4: A Fusão reduziu o consumo de energia do Ethereum em ~99,95%.
---
-
- Essa melhoria representa a mudança oficial para o consenso da prova de participação. Ela elimina a necessidade de minerar com intenso consumo de energia e protege a rede usando o ether aplicado. Um passo realmente empolgante na realização da visão do Ethereum – mais dimensionamento, segurança e sustentabilidade.
+
+ A Fusão foi executada em 15 de setembro de 2022. Isto completou a transição do Ethereum para o consenso de prova de participação, depreciando oficialmente a prova de trabalho, e reduzindo o consumo de energia em ~99,95%.
-## De que se trata a integração? {#what-is-the-docking}
+## O que foi A Fusão? {#what-is-the-merge}
-É importante lembrar que, inicialmente, a [Beacon Chain](/upgrades/beacon-chain/) é implementada separadamente da [rede principal](/glossary/#mainnet), a cadeia que usamos hoje. A rede principal do Ethereum continua a ser protegida pela [prova de trabalho](/developers/docs/consensus-mechanisms/pow/), mesmo enquanto a Beacon Chain funciona em paralelo usando [prova de participação](/developers/docs/consensus-mechanisms/pos/). A integração é quando estes dois sistemas finalmente se unem.
+A Fusão foi a junção da camada de execução original do Ethereum (a Rede principal que existe desde a [origem](/history/#frontier)) com a sua nova camada de consenso de prova de participação, a Beacon Chain. Ele eliminou a necessidade de mineração que faz uso intensivo de energia e, em vez disso, permitiu que a rede fosse protegida usando participação de ETH. Foi uma etapa realmente emocionante para a realização da visão do Ethereum — mais escalabilidade, segurança e sustentabilidade.
-Imagine que Ethereum é uma espaçonave que ainda não está pronta para uma viagem interestelar. Com a Beacon Chain, a comunidade desenvolveu um novo mecanismo muito mais sólido. Quando for a hora, ocorrerá a integração desses dois sistemas, dando surgimento a um novo sistema que estará totalmente preparado para o futuro.
+
-## Integração com a rede principal {#docking-mainnet}
+Inicialmente, a [Beacon Chain](/upgrades/beacon-chain/) foi enviada separadamente da [Rede principal](/glossary/#mainnet). A Rede principal do Ethereum — com todas as suas contas, saldos, contratos inteligentes e estado da cadeia de blocos — continuou a ser protegida pela [prova de trabalho](/developers/docs/consensus-mechanisms/pow/), mesmo enquanto a Beacon Chain era executada em paralelo usando a [prova de participação](/developers/docs/consensus-mechanisms/pos/). A Fusão foi quando esses dois sistemas finalmente se uniram, e a prova de trabalho foi permanentemente substituída pela prova de participação.
-Quando for o momento, a Rede principal Ethereum se "integrará" com a Beacon Chain, tornando-se seu próprio fragmento que usa prova de participação (proof-of-stake) em vez de [ prova de trabalho (proof-of-work)](/developers/docs/consensus-mechanisms/pow/).
+Imagine que o Ethereum é uma espaçonave que foi lançada antes que estivesse pronta para uma viagem interestelar. Com a Beacon Chain, a comunidade construiu um novo motor e um casco reforçado. Após muitos testes, chegou a hora de trocar o novo motor a quente pelo antigo em pleno voo. Isso integrou o novo e mais eficiente motor à nave existente, o que lhe permitiu cruzar anos-luz e conquistar o universo.
-A rede principal trará, além da capacidade de executar contratos inteligentes no sistema de prova de participação (proof-of-stake), o histórico completo e o estado atual do Ethereum, para garantir que a transição seja fácil para todos os detentores e usuários de ETH.
+## Fusão com a Rede principal {#merging-with-mainnet}
-## Depois da integração {#after-the-merge}
+A prova de trabalho protegeu a rede principal do Ethereum desde sua origem até A Fusão. Isso permitiu que a cadeia de blocos do Ethereum com a qual todos estamos acostumados surgisse em julho de 2015 com todos os seus recursos familiares — transações, contratos inteligentes, contas, etc.
-Isto sinalizará o fim da prova de trabalho para o Ethereum e iniciará a era de um Ethereum mais sustentável e amigável com o meio ambiente. Neste ponto, o Ethereum estará mais perto de alcançar a escala, segurança e sustentabilidade descritas em sua [visão Ethereum](/upgrades/vision/).
+Ao longo da história do Ethereum, os desenvolvedores se prepararam para uma eventual transição da prova de trabalho para a prova de participação. Em 1 de dezembro de 2020, a Beacon Chain foi criada como uma cadeia de blocos separada da Rede principal, rodando em paralelo.
-É importante salientar que a simplicidade é um dos objetivos de implementação da fusão, para acelerar a transição da prova de trabalho para a prova de participação. Os desenvolvedores estão focando seus esforços nesta transição e minimizando recursos adicionais que poderiam atrasar esse objetivo.
+A Beacon Chain não estava processando originalmente as transações da Rede principal. Em vez disso, ela estava chegando ao consenso sobre seu próprio estado ao concordar com validadores ativos e seus saldos de conta. Após extensos testes, chegou a hora da Beacon Chain chegar a um consenso sobre os dados do mundo real. Após A Fusão, a Beacon Chain tornou-se o mecanismo de consenso para todos os dados da rede, incluindo transações da camada de execução e saldos de contas.
-**Isso significa que alguns recursos, como a capacidade de retirar ETHs aplicados, terão que esperar um pouco após a conclusão da fusão.** Os planos incluem um processo de "limpeza" depois das melhorias para lidar com esses recursos, o que é esperado ocorrer logo após a conclusão da fusão.
+A integração representou a mudança oficial para o uso da Beacon Chain como o motor de produção de blocos. A mineração não é mais o meio de produzir blocos válidos. Em vez disso, os validadores da prova de participação adotaram esse papel e agora são responsáveis por processar a validade de todas as transações e propor blocos.
+
+Nenhuma história foi perdida na Fusão. À medida que a Rede principal se uniu com a Beacon Chain, ela também integrou todo o histórico transacional do Ethereum.
+
+
+Essa transição para a prova de participação mudou o modo como o ether é emitido. Saiba mais sobre Emissão de ether antes de depois da Fusão.
+
+
+### Usuários e titulares {#users-holders}
+
+**A Fusão não mudou nada para titulares/usuários.**
+
+_Vale a pena repetir_: como usuário ou titular de ETH, ou qualquer outro ativo digital no Ethereum, bem como participantes não operantes dos nós, **você não precisa fazer nada com seus fundos ou carteira para dar conta da Fusão.** ETH é apenas ETH. Não existe algo como "ETH antigo"/"ETH novo" ou "ETH1"/"ETH2" e as carteiras funcionam exatamente da mesma forma após A Fusão como antes — pessoas dizendo a você o contrário provavelmente são golpistas.
+
+Apesar de trocar a prova de trabalho, toda a história do Ethereum desde a origem permaneceu intacta e inalterada com a transição para a prova de participação. Quaisquer fundos mantidos em sua carteira antes da Fusão ainda estarão acessíveis após A Fusão. **Nenhuma ação é necessária da sua parte para fazer parte dessa atualização revolucionária.**
+
+[Mais sobre segurança no Ethereum](/security/#eth2-token-scam)
+
+### Operadores de nós e desenvolvedores de dapps {#node-operators-dapp-developers}
+
+
+
+As principais ações incluem:
+
+1. Execute ao mesmo tempo um cliente de consenso e um cliente de execução; pontos de extremidade de terceiros para obter dados de execução não funcionam mais desde A Fusão.
+2. Autentique os clientes de execução e de consenso com um segredo JWT compartilhado para que eles possam se comunicar com segurança.
+3. Defina um endereço de "destinatário das taxas" para receber dicas sobre suas taxas de transação ganhas / MEV.
+
+Não completar os dois primeiros itens acima fará com que seu nó seja visto como "offline" até que ambas as camadas sejam sincronizadas e autenticadas.
+
+Não definir um "destinatário de taxa" ainda permitirá que seu validador se comporte como de costume, mas você perderá comissões de taxas não queimadas e qualquer MEV que você teria ganhado em blocos que seu validador propõe.
+
+
+
+
+Até a integração, um cliente de execução (como Geth, Erigon, Besu ou Nethermind) era suficiente para receber, validar devidamente e propagar blocos sendo transmitidos pela rede. _Após A Fusão_, a validade das transações contidas em uma carga de execução agora também depende da validade do "bloco de consenso" que ele contém.
+
+Como resultado, um nó completo do Ethereum agora requer um cliente de execução e um cliente de consenso. Esses dois clientes trabalham juntos usando uma nova API do mecanismo. A API do mecanismo requer autenticação usando um segredo JTW, que é fornecido a ambos os clientes, permitindo uma comunicação segura.
+
+Os principais itens de ação incluem:
+
+- Instalar um cliente de consenso além de um cliente de execução
+- Autenticar clientes de execução e de consenso com um segredo JWT compartilhado para que eles possam se comunicar com segurança uns com os outros.
+
+Não completar os itens acima resultará com que seu nó pareça estar "offline" até que ambas as camadas sejam sincronizadas e autenticadas.
+
+
+
+
+
+A Fusão veio com mudanças no consenso, que também inclui mudanças relacionadas a:
+
+- estrutura de blocos
+- temporização de espaço/bloco
+- alterações de opcode
+- fontes de aleatoriedade na cadeia
+- conceito de _cabeça segura_ e _blocos finalizados_
+
+Para obter mais informações, confira esta postagem no blog de Tim Beiko sobre [Como A Fusão impacta a camada de aplicativo do Ethereum] (https://blog.ethereum.org/2021/11/29/how-the-merge-impacts-app-layer /).
+
+
+## A Fusão e o consumo de energia {#merge-and-energy}
+
+A Fusão marcou o fim da prova de trabalho para o Ethereum e iniciou a era do Ethereum mais sustentável e ecológico. O consumo de energia do Ethereum reduziu cerca de 99,95%, tornando o Ethereum uma blockchain verde. Descubra mais sobre [Consumo de energia na rede Ethereum](/energy-consumption/).
+
+## A Fusão e a escalabilidade {#merge-and-scaling}
+
+A Fusão também preparou o terreno para futuras atualizações de escalabilidade que não eram possíveis na prova de trabalho, deixando o Ethereum mais próximo de alcançar a escalabilidade, segurança e sustentabilidade descritas na [Visão do Ethereum](/upgrades/vision/).
+
+## Concepções erradas sobre A Fusão {#misconceptions}
+
+
+Existem dois tipos de nós no Ethereum: nós que podem propor blocos e nós que não podem.
+
+Os nós que propõem blocos são apenas um pequeno número dos nós totais no Ethereum. Esta categoria inclui nós de mineração sob a prova de trabalho (PoW) e nós validadores sobre a prova de participação (PoS). Esta categoria requer comprometer recursos econômicos (como o poder de hash da GPU em prova de trabalho ou ETH em prova de participação) em troca da capacidade de propor, ocasionalmente, o próximo bloco e ganhar recompensas de protocolo.
+
+Os outros nós na rede (por exemplo, a maioria) não é obrigada a comprometer quaisquer recursos econômicos para além de um computador com 1 a 2 TB de armazenamento disponível e uma conexão com a internet. Esses nós não propõem blocos, mas eles ainda desempenham um papel crítico na segurança da rede, mantendo todos os proponentes de bloco responsáveis, ouvindo novos blocos e verificando sua validade na chegada de acordo com as regras de consenso da rede. Se o bloco for válido, o nó continua a propagá-lo pela rede. Se o bloco é inválido por qualquer motivo, o software do nó irá ignorá-lo como inválido e irá parar sua propagação.
+
+Executar um nó não produtor de blocos é possível para qualquer um sob qualquer mecanismo de consenso (prova de trabalho ou prova de participação); isso é _fortemente recomendado_ a todos os usuários se eles tiverem os meios. A execução de um nó é imensamente valiosa para o Ethereum e oferece benefícios adicionais a qualquer indivíduo executando um, como maior segurança, privacidade e resistência à censura.
+
+A capacidade de qualquer um de executar seu próprio nó é _essencial_ para manter a descentralização da rede Ethereum.
+
+[Mais sobre como executar seu próprio nó](/run-a-node/)
+
+
+
+
+Taxas de gás são um produto da demanda de rede relativa à capacidade da rede. A Fusão depreciou o uso da prova de trabalho, passando para a prova de participação por consenso, mas não alterou significativamente nenhum parâmetro que influencie diretamente a capacidade da rede ou a taxa de transferência.
+
+Com um [planejamento centrado por rollup](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698), os esforços se concentram em escalar a atividade do usuário na [camada 2](/layer-2/), enquanto habilita a Rede principal da camada 1 como uma camada de liquidação descentralizada otimizada para o armazenamento de dados rollup para ajudar a tornar as transações rollup exponencialmente mais baratas. A transição para a prova de participação é um precursor crítico para a realização desse objetivo. [Mais sobre gas e tarifas.](/developers/docs/gas/)
+
+
+
+A "velocidade" da transação pode ser medida de poucas maneiras, incluindo o tempo para ser incluída em um bloco e o tempo para finalização. Esses dois fatores mudam ligeiramente, mas não de uma forma que os usuários perceberão.
+
+Historicamente, na prova de trabalho, o objetivo era ter um bloco novo a cada ~13,3 segundos. Já na prova de participação, os espaços ocorrem precisamente a cada 12 segundos, e cada um deles é uma oportunidade para um validador publicar um bloco. A maioria dos espaços tem blocos, mas não necessariamente todos (isto é, um validador está offline). Na prova de participação, os blocos são produzidos ~10% mais frequentemente do que na prova de trabalho. Essa foi uma mudança bastante insignificante e é pouco provável que seja notada pelos usuários.
+
+A prova de participação introduziu o conceito de finalidade da transação que não existia anteriormente. Na prova de trabalho, a capacidade de reverter um bloco fica exponencialmente mais difícil com cada bloco de passagem minerado em cima de uma transação, mas nunca chega a zero. Sob a prova de participação, os blocos são agrupados em épocas (períodos de tempo de 6,4 minutos contendo 32 chances de blocos) que os validadores votam. Quando uma época termina, os validadores votam se devem considerar a época "justificada". Se os validadores concordarem em justificar a época, ela será finalizada na próxima época. Desfazer transações finalizadas é economicamente inviável, pois exigiria obter e queimar mais de um terço do total de ETH colocado.
+
+
+
+
+O ETH colocado em e as recompensas de participação continuam bloqueadas sem a capacidade de saque. Os saques são planejados para a próxima atualização do Shanghai.
+
+
+
+Isso pode parecer contra-intuitivo em relação à nota acima, uma vez que os saques não são permitidos até a atualização do Shanghai, mas os validadores têm acesso imediato às recompensas de taxa/MEV ganhos durante as propostas em bloco.
+
+O protocolo emite ETH como recompensa aos validadores por contribuir para o consenso. A camada de consenso é responsável pelo ETH recém-emitido, no qual um validador tem um endereço único que detém seu ETH envolvido e recompensas de protocolo. Este ETH está bloqueado até o Shanghai.
+
+O ETH na camada de execução é contabilizado separadamente da camada de consenso. Quando os usuários executam transações na Rede principal do Ethereum, o ETH deve ser pago para cobrir o gás, incluindo uma gorjeta ao validador. Esse ETH já está na camada de execução, NÃO está sendo emitido recentemente pelo protocolo e está disponível para o validador imediatamente (dado um endereço do "destinatário de taxa" apropriado é fornecido ao software cliente).
+
+
+
+Após a atualização do Shanghai permitir saques, todos os validadores serão incentivados a retirar seu saldo de participação acima de 32 ETH, uma vez que estes fundos não contribuem para o rendimento e, de outro modo, ficam bloqueados. Dependendo da APR (determinado pelo ETH total colocado), eles podem ser incentivados a sair de seus validadores para recuperar todo o saldo ou potencialmente colocar ainda mais usando suas recompensas para obter mais rendimento.
+
+Uma ressalva importante aqui: as saídas completas do validador são limitadas pelo protocolo, portanto, apenas seis validadores podem sair por época (a cada 6,4 minutos, por isso, 1.350 por dia ou apenas ~43.200 ETH por dia de mais de 10 milhões de ETH colocados). Esse limite de taxa se ajusta dependendo do total de ETH colocado e evita um êxodo em massa de fundos. Além disso, ele impede que um atacante em potencial use a sua aposta para cometer um delito severo e saia com todo o saldo colocado na mesma época antes que o protocolo possa aplicar a penalidade de remoção.
+
+A APR é intencionalmente dinâmica, permitindo que um mercado de participantes equilibre o quanto eles estão dispostos a serem pagos para ajudar a proteger a rede. Quando as retiradas são habilitadas, se a taxa for muito baixa, os validadores sairão com uma taxa limitada pelo protocolo. Gradualmente, isto criará a APR para todos os que permanecem, atraindo novos ou antigos participantes novamente.
+
+
+## O que aconteceu com o "Eth2"? {#eth2}
+
+O termo "Eth2" foi descontinuado. Após unir "Eth1" e "Eth2" em uma única cadeia, não há mais necessidade de distinguir entre duas redes Ethereum; agora existe apenas o Ethereum.
+
+Para diminuir a confusão, a comunidade atualizou estes termos:
+
+- O "Eth1" agora é a "camada de execução", que lida com transações e execução.
+- O "Eth2" é agora a "camada de consenso", que lida com o consenso da prova de participação.
+
+Estas atualizações de terminologia apenas alteram as convenções de nomenclatura; isso não altera os objetivos ou o roteiro do Ethereum.
+
+[Saiba mais sobre a renomeação "Eth2"](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/)
## Relação entre as melhorias {#relationship-between-upgrades}
-Todas as melhorias do Ethereum estão, de alguma forma, interrelacionadas. Então vamos recapitular como a fusão se relaciona com as outras melhorias.
+Todas as melhorias do Ethereum estão, de alguma forma, interrelacionadas. Vamos então recapitular como a fusão se relaciona com as outras melhorias.
+
+### A Fusão e a Beacon Chain {#merge-and-beacon-chain}
-### A fusão e a Beacon Chain {#docking-and-beacon-chain}
+A Fusão representa a adoção formal do Beacon Chain como a nova camada de consenso para a camada de execução da Rede principal original. Desde A Fusão, os validadores são designados a proteger a Rede principal do Ethereum, e a mineração na [prova de trabalho](/developers/docs/consensus-mechanisms/pow/) não é mais um meio válido de produção em bloco.
-Depois da fusão, será feita a atribuição de participantes (stakers) para validar a rede principal do Ethereum. A [mineração](/developers/docs/consensus-mechanisms/pow/mining/) não será mais necessária e, portanto, os mineradores provavelmente investirão seus ganhos em participações no novo sistema de prova de participação (proof-of-stake).
+Em vez disso, os blocos são propostos validando nós que colocaram o ETH em troca do direito de participar do consenso. Essas atualizações preparam o cenário para futuras atualizações de escalabilidade, incluindo fragmentação.
A Beacon Chain
-### A fusão e a limpeza depois dela {#merge-and-post-merge-cleanup}
+### A Fusão e a atualização do Shanghai {#merge-and-shanghai}
-Alguns recursos, como a retirada de ETHs aplicados, ainda não serão suportados imediatamente após a integração. Estes recursos serão tratados em uma outra melhoria, que acontecerá pouco tempo depois da fusão.
+Para simplificar e maximizar o foco em uma transição bem-sucedida para a prova de participação, a atualização da Fusão não incluiu certos recursos previstos, como a possibilidade de retirar o ETH colocado. A atualização do Shanghai está planejada para acompanhar A Fusão, o que permitirá aos participantes fazer um saque.
-Mantenha-se atualizado com o [Blog de pesquisa e desenvolvimento da Fundação Ethereum](https://blog.ethereum.org/category/research-and-development/). Para aqueles que querem saber mais, assista ao vídeo [What Happens After the Merge](https://youtu.be/7ggwLccuN5s?t=101), apresentado por Vitalik no evento ETHGlobal de abril de 2021.
+Mantenha-se atualizado com o [Problema do planejamento de melhoria do Shangai no GitHub](https://github.com/ethereum/pm/issues/450), ou o [Blog de Pesquisa e Desenvolvimento EF](https://blog.ethereum.org/category/research-and-development/). Se tiver curiosidade, assista ao vídeo [What Happens After The Merge](https://youtu.be/7ggwLccuN5s?t=101), apresentado por Vitalik no evento ETHGlobal de abril de 2021.
-### A fusão e as cadeias de fragmentos {#docking-and-shard-chains}
+### A Fusão e a fragmentação {#merge-and-data-sharding}
-No início, o plano era trabalhar em cadeias de fragmentos antes da fusão – para atender a questões de dimensionamento. No entanto, com o boom das [soluções de dimensionamento da camada 2](/developers/docs/scaling/#layer-2-scaling), a prioridade passou a ser a troca da prova de trabalho pela prova de participação por meio da fusão.
+Originalmente, o plano era trabalhar na fragmentação antes da Fusão para atender a escalabilidade. No entanto, com a expansão das [soluções de escalabilidade da camada 2](/layer-2/), a prioridade passou a ser a troca da prova de trabalho pela prova de participação.
-Essa será uma avaliação contínua da comunidade quanto à necessidade de rodadas potencialmente múltiplas de cadeias de fragmentos para permitir dimensionamento sem limites.
+Os planos para fragmentação estão evoluindo rapidamente, mas dado o surgimento e o sucesso das tecnologias de camada 2 para escalar a execução de transação, os planos de fragmentação mudaram para encontrar a maneira mais otimizada de distribuir a carga de armazenamento dos dados de chamadas compactadas em contratos rollup, permitindo um crescimento exponencial da capacidade da rede. Isso não seria possível sem uma primeira transição para a prova de participação.
- Cadeias de fragmentos
+ Fragmentação
-## Leia mais {#read-more}
+## Leitura adicional {#further-reading}
diff --git a/src/content/translations/pt-br/upgrades/sharding/index.md b/src/content/translations/pt-br/upgrades/sharding/index.md
index 54c5cf4031c..2fe54a8477f 100644
--- a/src/content/translations/pt-br/upgrades/sharding/index.md
+++ b/src/content/translations/pt-br/upgrades/sharding/index.md
@@ -1,22 +1,22 @@
---
-title: Cadeias de fragmentos
-description: "Aprenda sobre as cadeias de fragmentos: partições da rede que aumentam a capacidade de transações de Ethereum e facilitam o seu funcionamento."
+title: Fragmentação
+description: Saiba mais sobre como fragmentar e distribuir a carga de dados necessária para dar ao Ethereum mais capacidade de transação e facilitar a execução.
lang: pt-br
template: upgrade
image: ../../../../../assets/upgrades/newrings.png
summaryPoint1: A fragmentação é uma atualização para melhorar o dimensionamento e a capacidade do Ethereum.
-summaryPoint2: As cadeias de fragmentos distribuem a carga da rede por 64 novas cadeias.
-summaryPoint3: Elas facilitam a execução de um nó mantendo os requisitos de hardware baixos.
-summaryPoint4: Esta atualização está planejada para logo depois da integração da rede principal com a Beacon Chain.
+summaryPoint2: A fragmentação fornece distribuição segura dos requisitos de armazenamento de dados, permitindo que os rollups sejam ainda mais baratos, e tornando os nós mais fáceis de operar.
+summaryPoint3: Eles permitem soluções de camada 2 para oferecer taxas de transação baixas, ao mesmo tempo que aproveitam a segurança do Ethereum.
+summaryPoint4: Essa atualização se tornou mais um foco desde que a Ethereum mudou para a prova de participação.
---
- As cadeias de fragmentos devem ser introduzidas em algum momento de 2022, dependendo do andamento do trabalho depois da a fusão. Esses fragmentos darão ao Ethereum mais capacidade de armazenamento e acesso aos dados, mas eles não serão usados para execução de código. Os detalhes disso ainda estão sendo avaliados.
+ A fragmentação poderá ser feita em 2023. Os fragmentos darão ao Ethereum mais capacidade para armazenar e acessar dados, mas não serão usados para executar código.
## O que é a fragmentação (sharding)? {#what-is-sharding}
-A fragmentação é o processo de dividir um banco de dados horizontalmente para distribuir a carga; é um conceito comum em ciências da computação. Em um contexto Ethereum, a fragmentação reduzirá o congestionamento da rede e aumentará as transações por segundo criando novas cadeias conhecidas como "shards/fragmentos".
+A fragmentação é o processo de dividir um banco de dados horizontalmente para distribuir a carga; é um conceito comum em ciências da computação. No contexto do Ethereum, a fragmentação funcionará sinergicamente com os [rollups de camada 2](/layer-2/), dividindo o ônus de lidar com o excesso de dados necessários para rollups em toda a rede. Isso continuará a reduzir o congestionamento da rede e aumentar as transações por segundo.
Isso é importante por outras razões além do dimensionamento.
@@ -24,39 +24,40 @@ Isso é importante por outras razões além do dimensionamento.
### Todos podem executar um nó {#everyone-can-run-a-node}
-A fragmentação é uma boa maneira de escalar se você quiser manter as coisas descentralizadas, pois a alternativa é escalar aumentando o tamanho do banco de dados existente. Isso tornaria o Ethereum menos acessível para os validadores de rede, pois eles precisariam de computadores potentes e caros. Com as cadeias de fragmentos, os validadores só precisam armazenar/executar dados para o fragmento que estão validando e não para toda a rede (como acontece hoje). Isso acelera as coisas e reduz drasticamente os requisitos de hardware.
+A fragmentação é uma boa maneira de escalar se você quiser manter as coisas descentralizadas, pois a alternativa é escalar aumentando o tamanho do banco de dados existente. Isso tornaria o Ethereum menos acessível para os validadores de rede, pois eles precisariam de computadores potentes e caros. Com a fragmentação, os validadores não precisarão mais armazenar todos esses dados, mas poderão usar técnicas de dados para confirmar que as informações foram disponibilizadas para a rede como um todo. Isso reduz drasticamente os custos com o armazenamento de dados na camada 1, reduzindo os requisitos de hardware.
### Mais participação na rede {#more-network-participation}
A fragmentação eventualmente permitirá você executar o Ethereum em um laptop ou smartphone. Portanto, mais pessoas devem poder participar ou executar os [clientes](/developers/docs/nodes-and-clients/) em um Ethereum com fragmentação. Isso aumentará a segurança pois quanto mais descentralizada for a rede, menor será a área de ataque.
-Com requisitos de hardware mais baixos, a fragmentação tornará mais fácil a execução dos [clientes](/developers/docs/nodes-and-clients/) por conta própria, sem depender de nenhum serviço intermediário. E, se puder, considere a execução de vários clientes. Isso pode ajudar a melhorar a integridade da rede reduzindo ainda mais os pontos de falha. [Execute um cliente da Beacon Chain](/upgrades/get-involved/)
+Com requisitos de hardware mais baixos, a fragmentação tornará mais fácil a execução dos [clientes](/developers/docs/nodes-and-clients/) por conta própria, sem depender de nenhum serviço intermediário. E, se puder, considere a execução de vários clientes. Isso pode ajudar a melhorar a integridade da rede reduzindo ainda mais os pontos de falha.
-
- Inicialmente, você precisará executar um cliente da rede principal de forma simultânea com um cliente da Beacon Chain. O launchpad o guiará através dos requisitos e processos de hardware. Como alternativa, você pode usar uma API de back-end.
+
+ Você precisará executar um cliente de execução ao mesmo tempo que seu cliente de consenso. O launchpad o guiará através dos requisitos e processos de hardware.
## Cadeias de fragmentos versão 1: disponibilidade de dados {#data-availability}
+
+ Nota: os planos de fragmentação evoluíram à medida que caminhos mais eficientes para escalar foram desenvolvidos. "Danksharding" é uma nova abordagem de fragmentação, que não utiliza o conceito de "cadeias" de fragmentos, mas usa "blobs" de fragmentos para dividir os dados, juntamente com "amostragem de disponibilidade de dados" para confirmar que todos os dados foram disponibilizados. Essa mudança de plano resolve o mesmo problema original.
+ Os detalhes abaixo podem estar desatualizados com os últimos planos de desenvolvimento. Enquanto atualizamos, confira O Guia do Mochileiro para o Ethereum para uma excelente descrição do planejamento do Ethereum.
+
+
Quando as primeiras cadeias de fragmentos forem enviadas, elas apenas fornecerão dados extras para a rede. Elas não lidarão com transações ou contratos inteligentes. Mas ainda oferecerão melhorias incríveis às transações por segundo quando combinadas com rollups.
Os rollups são uma tecnologia de "camada 2" que existe hoje. Eles permitem que os dapps organizem ou façam um "rollup" das transações em uma única transação fora da cadeia, gerem uma prova criptográfica e a enviem para a cadeia. Isso reduz o volume dos dados necessários para uma transação. Combine isso com toda a disponibilidade de dados extra fornecida pelos fragmentos e obterá 100.000 transações por segundo.
-
- Dado os avanços recentes em termos de pesquisa e desenvolvimento da solução de dimensionamento da camada 2, isso nos levou a priorizar a melhoria da integração, e não as cadeias de fragmentos. Estas serão priorizadas logo após a transição da rede principal para o sistema de prova de participação.
-
-[Mais sobre rollups](/developers/docs/scaling/layer-2-rollups/)
-
-
## Cadeias de fragmentos versão 2: código de execução {#code-execution}
-O plano sempre foi adicionar funcionalidades extras aos fragmentos para torná-los mais parecidos com a [rede principal de Ethereum](/glossary/#mainnet) de hoje. Isso permitiria que esses fragmentos armazenassem e executassem contratos inteligentes e gerenciassem contas. Mas, considerando o aumento das transações por segundo que os fragmentos na versão 1 oferecem, isso ainda precisa ser feito? Esta questão ainda está sendo discutida na comunidade e parece que existem várias opções.
+O plano sempre foi adicionar funcionalidades extras aos fragmentos para torná-los mais parecidos com a [rede principal de Ethereum](/glossary/#mainnet) de hoje. Isso permitiria a eles armazenar e executar o código e lidar com transações, já que cada fragmento conteria seu conjunto único de contratos inteligentes e saldos das contas. A comunicação entre fragmentos permitiria transações entre fragmentos.
+
+Mas, considerando o aumento das transações por segundo que os fragmentos na versão 1 oferecem, isso ainda precisa ser feito? Esta questão ainda está sendo debatida na comunidade e parece que existem várias opções.
### Os fragmentos precisam de código de execução? {#do-shards-need-code-execution}
-Vitalik Buterin, em uma conversa no podcast Bankless, apresentou 3 opções possíveis que merecem ser discutidas.
+Vitalik Buterin, numa conversa com o podcast Bankless, apresentou 3 opções possíveis que merecem ser discutidas.
@@ -66,11 +67,11 @@ Isso significaria não darmos aos fragmentos a capacidade de lidar com contratos
#### 2. Tenha alguns fragmentos de execução {#some-execution-shards}
-Talvez haja um compromisso no qual não necessitemos de todos os fragmentos (64 estão planejados neste momento) para ser mais inteligentes. Poderíamos simplesmente adicionar essa funcionalidade a alguns e deixar de lado os demais. Isso poderá acelerar o processo de entrega.
+Talvez haja um compromisso em que não precisemos que todos os fragmentos sejam mais inteligentes. Poderíamos simplesmente adicionar essa funcionalidade a alguns e deixar de lado os demais. Isso poderá acelerar o processo de entrega.
#### 3. Esperar até que possamos fazer snarks de Conhecimento Zero (CZ) {#wait-for-zk-snarks}
-Finalmente, talvez devamos reabrir este debate quando os snarks (prova de validade da informação) ZK estiverem concretizados. Essa é uma tecnologia que pode ajudar a trazer transações verdadeiramente privadas para a rede. Provavelmente serão necessários fragmentos mais inteligentes, mas eles ainda estão em fase de pesquisa e desenvolvimento.
+Finalmente, talvez devamos reabrir este debate quando os snarks ZK estiverem concretizados. Essa é uma tecnologia que pode ajudar a trazer transações verdadeiramente privadas para a rede. Provavelmente, serão necessários fragmentos mais inteligentes, mas eles ainda estão em fase de pesquisa e desenvolvimento.
#### Outras fontes {#other-sources}
@@ -84,25 +85,9 @@ Esse continua a ser um ponto de discussão ativo. Assim que soubermos mais, atua
Todas as melhorias do Ethereum estão, de alguma forma, interrelacionadas. Vamos recapitular como as cadeias de fragmentos se relacionam às outras melhorias.
-### Fragmentos e a beacon chain {#shards-and-beacon-chain}
-
-A Beacon Chain contém toda a lógica para manter os fragmentos seguros e sincronizados. A Beacon Chain coordenará os participantes na rede, atribuindo-os aos fragmentos nos quais eles precisam trabalhar. E também facilitará a comunicação entre fragmentos recebendo e armazenando dados de transações de fragmentos acessíveis por outros fragmentos. Isso dará aos fragmentos uma fotografia do estado de Ethereum para manter tudo atualizado.
-
-
- A Beacon Chain
-
-
-### Fragmentos e integração {#shards-and-docking}
-
-Quando for feita a adição de fragmentos extras, a rede principal de Ethereum já estará segura pela Beacon Chain usando uma prova de participação. Isso permite que uma rede principal produtiva crie cadeias de fragmentos com base em soluções de camada 2 que aumentam o dimensionamento.
-
-Resta saber se a rede principal existirá como o único fragmento "inteligente" que poderá lidar com a execução de código. No entanto, a decisão de expandir fragmentos pode ser revista, se necessário.
-
-
- A fusão
-
+### Fragmentos e a cadeia de blocos do Ethereum {#shards-and-blockchain}
-
+A lógica para manter fragmentos seguros e sincronizados é integrada aos clientes do Ethereum que constroem a cadeia de blocos. Os participantes na rede serão atribuídos a fragmentos para trabalhar. Os fragmentos terão acesso a registros de outros fragmentos para poder criar uma visão do estado do Ethereum com a finalidade de manter tudo atualizado.
### Leia mais {#read-more}
diff --git a/src/content/translations/ro/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md b/src/content/translations/ro/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md
index 85a8129c046..77d3aa073e9 100644
--- a/src/content/translations/ro/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md
+++ b/src/content/translations/ro/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md
@@ -6,7 +6,6 @@ lang: ro
tags:
- "noțiuni de bază"
- "python"
- - "blockchain"
- "web3.py"
skill: beginner
published: 2020-09-08
diff --git a/src/content/translations/zh-tw/nft/index.md b/src/content/translations/zh-tw/nft/index.md
index 247c49a61fd..0de94756b94 100644
--- a/src/content/translations/zh-tw/nft/index.md
+++ b/src/content/translations/zh-tw/nft/index.md
@@ -331,7 +331,7 @@ summaryPoint3: 由以太坊區塊鏈的智能合約提供支援。
## 延伸閱讀 {#further-reading}
-- [藝術資料加密貨幣](https://cryptoart.io/data) – Richard Chen,自動更新
+- [藝術資料加密貨幣](https://cryptoart.io/data) – _Richard Chen,自動更新_
- [OpenSea:非同質化代幣聖經](https://opensea.io/blog/guides/non-fungible-tokens/) – _Devin Fizner,2020 年 1 月 10 日_
- [初學者的非同質化代幣指南](https://linda.mirror.xyz/df649d61efb92c910464a4e74ae213c4cab150b9cbcc4b7fb6090fc77881a95d) – _Linda Xie,2020 年 1 月_
- [關於元宇宙,你所需要知道的一切](https://foundation.app/blog/enter-the-metaverse) – _Foundation 團隊,foundation.app_
diff --git a/src/content/translations/zh/bridges/index.md b/src/content/translations/zh/bridges/index.md
index 52fc4d30da4..ab7aa3ce2b4 100644
--- a/src/content/translations/zh/bridges/index.md
+++ b/src/content/translations/zh/bridges/index.md
@@ -1,24 +1,24 @@
---
-title: 区块链桥梁简介
+title: 区块链桥简介
description: 桥梁使用户能够跨不同的区块链转移他们的资金
lang: zh
---
-# 区块链桥梁 {#prerequisites}
+# 区块链桥 {#prerequisites}
-_Web3 已经发展成为一个由一层网络区块链和二层网络扩展解决方案组成的生态系统,每个解决方案都具有独特的功能和权衡。 随着区块链协议数量的增加,[跨链移动资产的需求也随之增加]()。 为了满足这一需求,我们需要桥梁。_
+_Web3 已经发展成为一个由一层网络区块链和二层网络扩展解决方案组成的生态系统,每个解决方案都具有独特的功能和权衡。 随着区块链协议数量的增加,[跨链移动资产的需求也随之增加]()。 为了满足这一需求,我们需要桥接。_
## 什么是桥梁? {#what-are-bridges}
-区块链桥梁就像我们在真实世界所知道的桥梁一样。 就像真实桥梁连结两个物理位置一样,区块链桥梁连接两个区块链生态系统。 桥梁通过传递信息和资产,促进区块链之间的通信。
+区块链桥就像我们在真实世界所知道的桥梁一样。 就像真实桥梁连结两个物理位置一样,区块链桥梁连接两个区块链生态系统。 桥梁通过传递信息和资产,促进区块链之间的通信。
我们来看一个例子:
你来自美国,正计划去欧洲旅行。 你有美元,但你需要欧元来消费。 要将你的美元兑换成欧元,你可以使用货币兑换并支付少量费用。
-但是,如果你想使用不同的区块链进行类似的兑换,您会怎么做? 假设你想用以太坊主网的以太币兑换 [Arbitrum](https://arbitrum.io/) 上的以太币。 就像我们为欧元进行的货币兑换一样,我们需要一种机制将我们的 ETH 从以太坊转移到 Arbitrum。 桥梁使这种交易成为可能。 在本例中,[Arbitrum 有一个原生桥梁](https://bridge.arbitrum.io/),可以将以太币从主网转移到 Arbitrum。
+但是,如果你想使用不同的区块链进行类似的兑换,您会怎么做? 假设你想用以太坊主网的以太币兑换 [Arbitrum](https://arbitrum.io/) 上的以太币。 就像我们为欧元进行的货币兑换一样,我们需要一种机制将我们的以太币从以太坊转移到 Arbitrum。 桥梁使这种交易成为可能。 在本例中,[Arbitrum 有一个原生桥梁](https://bridge.arbitrum.io/),可以将以太币从主网转移到 Arbitrum。
## 我们为什么需要桥梁? {#why-do-we-need-bridges}
@@ -113,17 +113,20 @@ _Web3 已经发展成为一个由一层网络区块链和二层网络扩展解
- 桥梁运营商对需信任桥梁有恶意
- 桥梁被非法侵入
-最近的一次黑客攻击是 Solana 的虫洞桥,[在黑客攻击期间被窃取了 12 万 wETH(3.25 亿美元)](https://rekt.news/wormhole-rekt/)。
+最近的一次黑客攻击是 Solana 的虫洞桥,[在黑客攻击期间被窃取了 12 万 wETH(3.25 亿美元)](https://rekt.news/wormhole-rekt/)。 [区块链中的许多顶级黑客攻击都涉及到桥梁](https://rekt.news/leaderboard/)。
-桥梁对于让用户加入以太坊二层网络至关重要,甚至对于想要探索不同生态系统的用户也至关重要。 然而,鉴于与桥梁交互所涉及的风险,用户必须了解桥梁正在做出的权衡取舍。
+桥梁对于让用户加入以太坊二层网络至关重要,甚至对于想要探索不同生态系统的用户也至关重要。 然而,鉴于与桥梁交互所涉及的风险,用户必须了解桥梁正在做出的权衡取舍。 这些是一些确保[跨链安全的策略](https://blog.debridge.finance/10-strategies-for-cross-chain-security-8ed5f5879946)。
## 延伸阅读 {#further-reading}
+- [EIP-5164:跨链执行](https://ethereum-magicians.org/t/eip-5164-cross-chain-execution/9658)_2022 年 6 月 18 日 - Brendan Asselstine_
+- [二层网络桥梁风险框架](https://gov.l2beat.com/t/l2bridge-risk-framework/31) _2022 年 7 月 5 日 - Bartek Kiepuszewski_
+- [“为什么未来将出现多链,而不会是跨链。”](https://old.reddit.com/r/ethereum/comments/rwojtk/ama_we_are_the_efs_research_team_pt_7_07_january/hrngyk8/) _2022 年 1 月 8 日 - Vitalik Buterin_
- [什么是区块链桥以及我们如何对其进行分类?](https://blog.li.finance/what-are-blockchain-bridges-and-how-can-we-classify-them-560dc6ec05fa) _2021 年 2 月 18 日 - Arjun Chand_
-- [什么是跨链桥梁?](https://www.alchemy.com/overviews/cross-chain-bridges) _2022 年 5 月 10 日 - Alchemy_
-- [区块链桥:构建加密网络的网络](https://medium.com/1kxnetwork/blockchain-bridges-5db6afac44f8) _2021 年 9 月 8 日 - Dmitriy Berenzon _
+- [什么是跨链桥接?](https://www.alchemy.com/overviews/cross-chain-bridges) _2022 年 5 月 10 日 - Alchemy_
+- [区块链桥:构建加密网络的网络](https://medium.com/1kxnetwork/blockchain-bridges-5db6afac44f8) _2021 年 9 月 8 日 - Dmitriy Berenzon_
- [加密空间中的桥梁](https://medium.com/chainsafe-systems/bridges-in-crypto-space-12e158f5fd1e) _2021 年 8 月 23 日 - Ben Adar Hyman_
- [互操作性三难困境](https://medium.com/connext/the-interoperability-trilemma-657c2cf69f17) _2021 年 10 月 1 日 - Arjun Bhuptani_
- [保护桥梁:正确完成跨链通信](https://medium.com/dragonfly-research/secure-the-bridge-cross-chain-communication-done-right-part-i-993f76ffed5d) _2021 年 8 月 23 日 - Celia Wan_
diff --git a/src/content/translations/zh/community/events/index.md b/src/content/translations/zh/community/events/index.md
index 68d75f32013..180ef44b748 100644
--- a/src/content/translations/zh/community/events/index.md
+++ b/src/content/translations/zh/community/events/index.md
@@ -2,6 +2,7 @@
title: 以太坊活动
description: 如何加入以太坊社区。
lang: zh
+hideEditButton: true
---
## 活动预告 {#events}
diff --git a/src/content/translations/zh/community/get-involved/index.md b/src/content/translations/zh/community/get-involved/index.md
index 5bce472fc9a..d4a31f9d464 100644
--- a/src/content/translations/zh/community/get-involved/index.md
+++ b/src/content/translations/zh/community/get-involved/index.md
@@ -61,7 +61,7 @@ lang: zh
通过质押以太币,你不但可以获得奖励,还能够帮助保护以太坊网络。
-- [关于权益质押的更多信息](/staking/)
+- [有关质押的更多信息](/staking/)
### 资助项目 {#support-projects}
diff --git a/src/content/translations/zh/community/grants/index.md b/src/content/translations/zh/community/grants/index.md
index eb820e461c1..d69cdf9a6da 100644
--- a/src/content/translations/zh/community/grants/index.md
+++ b/src/content/translations/zh/community/grants/index.md
@@ -35,10 +35,11 @@ lang: zh
- [mStable 资助方案](https://docs.mstable.org/advanced/grants-program) - _[mStable](https://mstable.org/) 社区_
- [The Graph](https://airtable.com/shrdfvnFvVch3IOVm) – _[The Graph](https://thegraph.com/) 生态系统_
- [Uniswap 资助计划](https://www.unigrants.org/) – _[Uniswap](https://uniswap.org/) 社区_
+- [Web3 Grants](https://web3grants.net) - _Web3/加密货币相关资助方案详尽列表_
## 二次方融资 {#quadratic-funding}
-以太坊的开源属性催生了一种有趣的新型募资模式:二次方融资。 这有可能改善我们在未来为各种公共产品募资的方式。 二次方募资确保获得最多资金的项目是那些具有最独特需求的项目。 换句话说,就是那些能够改善大多数人生活的项目。 [关于二次方融资的更多信息。](/defi/#quadratic-funding)
+以太坊的开源属性催生了一种有趣的新型募资模式:二次方融资。 这有可能改进我们在未来为各种公共产品募资的方式。 二次方募资确保获得最多资金的项目是那些具有最独特需求的项目。 换句话说,就是那些能够改善大多数人生活的项目。 [关于二次方融资的更多信息。](/defi/#quadratic-funding)
- [Gitcoin](https://gitcoin.co/grants)
- [clr.fund](https://clr.fund/)
diff --git a/src/content/translations/zh/community/language-resources/index.md b/src/content/translations/zh/community/language-resources/index.md
index b59ed4507a0..3044ff81d1d 100644
--- a/src/content/translations/zh/community/language-resources/index.md
+++ b/src/content/translations/zh/community/language-resources/index.md
@@ -26,8 +26,8 @@ Ethereum.org 被地道地翻译成 40 多种语言,请参阅我们的[语言
**新闻**
-- [BeinCrypto](http://www.beincrypto.com.br) - 提供有关加密货币的新闻和文章,包括一个巴西交易所列表
-- [Cointegraph](http://cointelegraph.com.br/category/analysis) - 巴西版 Cointelegraph,一个主要的加密货币新闻机构
+- [BeInCrypto](http://www.beincrypto.com.br) - 提供有关加密货币的新闻和文章,包括一个巴西交易所列表
+- [Cointelegraph](http://cointelegraph.com.br/category/analysis) - 巴西版 Cointelegraph,一个主要的加密货币新闻机构
- [Livecoins](http://www.livecoins.com.br/ethereum) - 提供有关加密货币的新闻和工具
- [Seudinheiro](http://www.seudinheiro.com/criptomoedas/) - 提供有关加密货币的新闻和报告
@@ -99,7 +99,7 @@ Ethereum.org 被地道地翻译成 40 多种语言,请参阅我们的[语言
### 西班牙语 {#es}
- [Ethereum Madrid](https://ethereummadrid.com/) - 区块链、去中心化金融与治理课程、活动和博客
-- [Cointegraph](https://es.cointelegraph.com/ethereum-for-beginners) - 以太坊初学者指南(西班牙语)
+- [Cointelegraph](https://es.cointelegraph.com/ethereum-for-beginners) - 以太坊初学者指南(西班牙语)
- [在线教程](https://tutoriales.online/curso/solidity) - 在以太坊上学习 Solidity 和编程
- [以太坊开发课程介绍](https://youtube.com/playlist?list=PLTqiwJDd_R8y9pfUBjhkVa1IDMwyQz-fU) - Solidity 基础知识以及测试和部署你的首个智能合约
- [Curso Introducción a Seguridad y Hacking en Ethereum](https://youtube.com/playlist?list=PLTqiwJDd_R8yHOvteko_DmUxUTMHnlfci) - 了解真实智能合约中常见的漏洞和安全问题
diff --git a/src/content/translations/zh/community/online/index.md b/src/content/translations/zh/community/online/index.md
index 815f2a2bfd9..c558a168a30 100644
--- a/src/content/translations/zh/community/online/index.md
+++ b/src/content/translations/zh/community/online/index.md
@@ -4,7 +4,7 @@ description: 以太坊生态系统的资助方案清单。
lang: zh
---
-# 线上社区 {#online-communities}
+# 在线社区 {#online-communities}
数十万以太坊爱好者齐聚这些在线论坛,分享消息、谈论近来的发展、热烈讨论技术问题并畅想未来。
@@ -27,6 +27,7 @@ lang: zh
EthStaker Discord - 专注于为以太坊开发提供项目管理支持的社区
Ethereum.org 网站团队 - 拜访社区中的团队和成员并与他们讨论 ethereum.org 的网络开发和设计
Web3 University - 专注于学习 web3 开发的社区
+Matos Discord - web3 创作者社区,构建者、业界人士和以太坊爱好者在这里聚会。 我们热衷于 Web3 的开发、设计和文化。 来和我们一起构建。
Solidity Gitter - Solidity 开发相关聊天 (Gitter)
Solidity Matrix - Solidity 开发相关聊天 (Matrix)
@@ -35,7 +36,7 @@ lang: zh
以太坊基金会 - 及时了解以太坊基金会的最新动态
@ethereum - 以太坊基金会官方帐户
@ethdotorg - 为我们不断发展的全球社区构建的以太坊门户网站
-有影响力的以太坊 Twitter 帐户清单
+有影响力的以太坊 Twitter 帐户清单
diff --git a/src/content/translations/zh/community/support/index.md b/src/content/translations/zh/community/support/index.md
index 858861497d3..a58ea5ca7b2 100644
--- a/src/content/translations/zh/community/support/index.md
+++ b/src/content/translations/zh/community/support/index.md
@@ -13,7 +13,7 @@ lang: zh
了解以太坊的去中心化性质至关重要,因为任何自称是以太坊官方支持人员的人都可能在试图诈骗您! 预防诈骗的最好办法就是自学并认真对待安全问题。
- 以太坊安全和预防诈骗措施
+ 以太坊安全和预防欺诈措施
diff --git a/src/content/translations/zh/contributing/adding-layer-2s/index.md b/src/content/translations/zh/contributing/adding-layer-2s/index.md
index 4a5a1e2f922..57a9fd435a7 100644
--- a/src/content/translations/zh/contributing/adding-layer-2s/index.md
+++ b/src/content/translations/zh/contributing/adding-layer-2s/index.md
@@ -44,7 +44,7 @@ _我们认为,其他不使用以太坊来实现数据可用性或安全性的
- 数据可用性是其他扩容方案与二层网络方案之间的重要区分因素。 一个项目**必须**使用以太坊主网来实现数据可用性,才考虑让它上架。
-**桥梁**
+**链桥**
- 用户如何才能登临二层网络?
diff --git a/src/content/translations/zh/contributing/adding-staking-products/index.md b/src/content/translations/zh/contributing/adding-staking-products/index.md
index ba992dce055..bb34354430f 100644
--- a/src/content/translations/zh/contributing/adding-staking-products/index.md
+++ b/src/content/translations/zh/contributing/adding-staking-products/index.md
@@ -146,7 +146,7 @@ lang: zh
**支持哪些用户界面?**
-- 例如: 浏览器应用程序、桌面应用程序、移动应用程序、CLI
+- 例如 浏览器应用程序、桌面应用程序、移动应用程序、CLI
**对于节点工具,软件是否提供了在客户端之间轻松切换的方法?**
diff --git a/src/content/translations/zh/contributing/index.md b/src/content/translations/zh/contributing/index.md
index 5ee43f4ac0d..eb8a3c55a4e 100644
--- a/src/content/translations/zh/contributing/index.md
+++ b/src/content/translations/zh/contributing/index.md
@@ -10,7 +10,7 @@ Ethereum.org 网站,像开放的以太坊一样,也是一个开源项目。
领取您的 POAP 代币! 如果您在 2022 年为 ethereum.org 做出了贡献,我们会给您发放一个独特的 POAP 徽章。{" "}
-有关 POAP 徽章的更多信息
+关于 POAP 徽章的更多信息
## 如何做出贡献 {#ways-to-contribute}
diff --git a/src/content/translations/zh/contributing/translation-program/index.md b/src/content/translations/zh/contributing/translation-program/index.md
index 031fbf70c42..9601467ac18 100644
--- a/src/content/translations/zh/contributing/translation-program/index.md
+++ b/src/content/translations/zh/contributing/translation-program/index.md
@@ -2,7 +2,6 @@
title: 翻译计划
lang: zh
description: 关于 ethereum.org 翻译计划的信息
-sidebarDepth: 3
---
# 翻译计划 {#translation-program}
@@ -35,28 +34,37 @@ Ethereum.org 翻译计划旨在通过将 Ethereum.org 和其他以太坊内容
### 我们迄今取得的进展 {#our-progress}
-- [超过 **3,800** 名翻译人员参与](/contributing/translation-program/contributors/)
-- [网站支持 **48** 种语言](/languages/)
-- [2021 年翻译了超过 **290** 万字](/contributing/translation-program/acknowledgements/)
-- [2022 年迄今为止已翻译 **190 万**字](/contributing/translation-program/acknowledgements/)
+- [超过 **4,100** 名翻译人员参与](/contributing/translation-program/contributors/)
+- [网站支持 **50** 种语言](/languages/)
+- [2022 年,截止目前我们已翻译 **250 万**个字词](/contributing/translation-program/acknowledgements/)
-如果你想参与其中并通过将网站翻译成你的语言来帮助我们发展全球以太坊社区,请遵循下面的步骤!
+
-
- 查看我们的致谢翻译人员页面,{" "}
-然后领取您的 POAP 代币。 如果您在 2022 年翻译了 ethereum.org,我们会给您发放一枚独特的 POAP 徽章。{" "}
-有关 POAP 徽章的详细信息
-
+### 致谢 {#acknowledgements}
-### 我们的工作内容 {#our-projects}
+成千上万社区成员参与 Ethereum.org 的翻译,他们是翻译计划的关键组成部分。 我们要感谢我们的翻译人员,并在他们的职业生涯中给予支持。 以下是我们对翻译人员的一些致谢方式:
-我们的贡献者社区正在为全球以太坊社区积极翻译多个具有强大影响力的网站和资源。
+#### 证书 {#certificate}
+
+如果你为翻译计划做出了贡献,并且你翻译的字词至少有 5000 个获得批准,你就有资格获得 ethereum.org 翻译证书。 [更多关于证书的信息](/contributing/translation-program/acknowledgements/#certificate)
+
+#### POAP 徽章 {#poaps}
+
+我们所有的翻译人员都有资格获得 POAP(出席证明协议)徽章 — 一种证明他们对 ethereum.org 翻译计划做出贡献的非同质化代币。 [关于 POAP 徽章的更多信息](/contributing/translation-program/acknowledgements/#poap)
+
+#### 致谢翻译人员 {#translator-acknowledgements}
+
+通过发布[排行榜](/contributing/translation-program/acknowledgements/)和[翻译计划全体贡献者名单](/contributing/translation-program/contributors/),对我们的优秀翻译人员致以公开感谢。
+
+### 我们当前的工作内容 {#our-projects}
+
+我们的贡献者社区正在积极地为全球以太坊社区翻译多个具有强大影响力的网站和资源。
#### Ethereum.org(以太坊官网) {#ethereumorg}
![](./ethereum-org-screenshot.png)
-[Ethereum.org](/) 是以太坊社区的重要教育资源,也是翻译计划的主要关注点。 鉴于网站的规模、范围和覆盖面,它是需要翻译的最具影响力的网站,我们建议从这里开始!
+[Ethereum.org](/) 是以太坊社区的重要教育资源,也是翻译计划的主要关注点。 鉴于其规模、范围和覆盖面,该网站是需要翻译的最具影响力的网站,我们建议从这里开始!
参与方式:
@@ -66,7 +74,7 @@ Ethereum.org 翻译计划旨在通过将 Ethereum.org 和其他以太坊内容
![](./launchpad-screenshot.png)
-[质押启动板](https://launchpad.ethereum.org/en/)使以太坊用户能够成为验证者,并通过质押以太币来帮助保护以太坊的未来。
+[质押启动板](https://launchpad.ethereum.org/en/)使以太坊用户能够通过质押以太币成为验证者,并帮助保护以太坊的未来。
参与方式:
@@ -86,14 +94,14 @@ Ethereum.org 翻译计划旨在通过将 Ethereum.org 和其他以太坊内容
### 指南和资源 {#guides-and-resources}
-如果你正在为翻译计划做贡献或考虑参与其中,你应该查看以下翻译指南:
+如果你正在为翻译计划做贡献或考虑参与其中,应该查看以下翻译指南:
- [翻译风格指南](/contributing/translation-program/translators-guide/) _– 适用于 ethereum.org 翻译者的说明和技巧_
- [翻译常见问题](/contributing/translation-program/faq/) _– 有关 ethereum.org 翻译计划的一些常见问题_
- [Crowdin 在线编辑指南](https://support.crowdin.com/online-editor/) _- 使用 Crowdin 在线编辑器和 Crowdin 一些高级功能的深入指南_
- [内容存储桶](/contributing/translation-program/content-buckets/) _– ethereum.org 的每个内容存储桶中包含哪些页面_
-有关其他有用的翻译工具、翻译社区和翻译计划博客文章,请访问[资源页面](/contributing/translation-program/resources/)。
+有关其他有用的翻译工具、翻译人员社区和翻译计划博客文章,请访问[资源页面](/contributing/translation-program/resources/)。
## 联系我们 {#get-in-touch}
diff --git a/src/content/translations/zh/contributing/translation-program/translators-guide/index.md b/src/content/translations/zh/contributing/translation-program/translators-guide/index.md
index 34c6f743f53..077168422ee 100644
--- a/src/content/translations/zh/contributing/translation-program/translators-guide/index.md
+++ b/src/content/translations/zh/contributing/translation-program/translators-guide/index.md
@@ -284,7 +284,7 @@ Ethereum.org 的访问者来自世界各地和不同的背景。 因此,网站
- 作为一般规则,请根据来源保留计量单位。 如果您所在的国家/地区使用不同的系统,您可以将转换包括在括号中。
- 除了度量单位的本地化之外,注意语言处理这些单位的方式的差异也很重要。 主要区别在于数字和单位之间的间距,可以根据语言而有所不同。 这方面的示例包括 100kB 与 100 kB 或 50ºF 与 50ºF。
-### 结论 {#conclusion}
+### 总结 {#conclusion}
翻译 ethereum.org 是了解以太坊不同方面的绝佳机会。
diff --git a/src/content/translations/zh/dao/index.md b/src/content/translations/zh/dao/index.md
index beccf5fa5b9..a6c12af9909 100644
--- a/src/content/translations/zh/dao/index.md
+++ b/src/content/translations/zh/dao/index.md
@@ -6,19 +6,19 @@ template: use-cases
emoji: ":handshake:"
sidebarDepth: 2
image: ../../../../assets/use-cases/dao-2.png
-alt: 去中心化自治组织代表在对提案投票。
-summaryPoint1: 没有集中领导的成员制社区。
-summaryPoint2: 与网上陌生人合作的安全方式。
-summaryPoint3: 为特定事业投入资金的安全场所。
+alt: 表示去中心化自治组织在对提案投票。
+summaryPoint1: 没有集中领导的、成员共同拥有的社区。
+summaryPoint2: 一种与互联网上的陌生人合作的安全方式。
+summaryPoint3: 一个为特定事业投入资金的安全场所。
---
## 什么是去中心化自治组织? {#what-are-daos}
-去中心化自治组织是与全球志同道合之士共同工作的安全有效的方式。
+去中心化自治组织是指集体所有且由区块链监管的组织,为一个共同的使命而奋斗。
-可以将去中心化自治组织视作由成员集体所有和共同管理的互联网原生企业。 去中心化自治组织拥有内置资产,未经该组织批准,任何人都无权动用。 去中心化自治组织通过提案和投票来决策,以确保组织内的每个人都有发言权。
+去中心化自治组织让全世界志同道合之士开展合作,而无需信赖一位宅心仁厚的领导来管理资金和运营。 没有可以随意花钱的首席执行官,也没有能够做假账的首席财务官。 取而代之的是,融入代码的基于区块链的规则规定组织如何运作以及资金如何使用。
-不会有仅凭心血来潮就随意授权支出的首席执行官,也不会有徇私枉法操纵账簿的首席财务官。 一切行为公开,有关开支的规则都会通过代码编入去中心化自治组织。
+去中心化自治组织拥有内部资产,未经该组织批准,任何人都无权动用。 决策通过提案和投票监管,确保组织中的每位成员都有发言权,一切都发生在链上,公开透明。
## 我们为什么需要去中心化自治组织? {#why-dao}
@@ -40,62 +40,94 @@ summaryPoint3: 为特定事业投入资金的安全场所。
为了帮助您更好地理解,这里有一些去中心化自治组织的应用示例:
-- 捐赠 - 您可以接受来自世界上任何人的成员资格和捐赠,组织可以决定如何使用捐款。
-- 自由职业者网络 - 您可以创建承包商网络,为办公室和软件订阅募集资金。
+- 慈善机构 – 可以接受全世界任何人的捐赠,并投票决定要资助的项目。
+- 集体所有权 – 可以购买实体或数字资产,组织成员可以投票决定如何使用它们。
- 风险投资和赠款 - 您可以成立一个风险基金,汇集投资资本并投票进行商业投资。 后续收益可以分配给相应 DAO 成员。
-## DAO 成员资格 {#dao-membership}
+## 去中心化自治组织如何运作? {#how-daos-work}
-去中心化自治组织成员资格分为多种模式。 成员资格可以决定投票方式和其他去中心化自治组织关键事项。
+智能合约是去中心化自治组织的基础,它定义了组织的规则并持有组织的资产。 合约在以太坊上生效后,除非表决通过,否则任何人都不能修改规则。 任何人都无法超越合约定义的规则和逻辑行事。 由于资产也由智能合约定义,这也意味着未经组织批准任何人都不能使用资金。 所以去中心化组织也不需要中央权威。 相反,组织集体作出决定,而付款会在表决通过后自动获批。
-### 基于代币的成员资格 {#token-based-membership}
+之所以能够做到这一点,是因为智能合约在以太坊上生效后,就无法被篡改。 一切都是公开的,你不可能在其他人一无所知的情况下修改代码(去中心化组织定义的规则)。
-通常无需许可,取决于使用的代币。 这些治理型代币大部分可以在去中心化交易所进行无限制交易。 其余部分要通过提供流动性或者进行工作量证明才能赚取。 无论何种方式,只要持有代币就可以参与投票。
+
+ 更多关于智能合约的信息
+
-_通常用来管理广泛去中心化协议和/或代币本身。_
+## 以太坊与去中心化自治组织 {#ethereum-and-daos}
-#### 知名案例 {#token-example}
+以太坊为去中心化自治组织提供了坚实基础,原因如下:
-[MakerDAO](https://makerdao.com) - 可在各大去中心化交易所找到 MakerDAO 的代币 MKR。 因此,任何人都可以购买对 Maker 协议未来的投票权。
+- 以太坊本身已经建立足够的共识,足以让各类组织信任以太坊网络。
+- 智能合约一旦生效就无法更改,即便是其所有者也是如此。 这使得去中心化自治组织能够按照编程规则运行。
+- 智能合约可以发送/接收资金。 没有这点,您就需要可信的中间人来管理组织资金。
+- 比起竞争,以太坊社区更趋向于合作,这使得各类应用程序和服务系统蓬勃发展。
-### 基于份额的成员资格 {#share-based-membership}
+## 去中心化自治组织的治理 {#dao-governance}
-基于份额的去中心化自治组织通常拥有更多权限,但仍然相当公开透明。 任何潜在的成员都可以提交加入去中心化自治组织的建议,通常以代币或工作的形式提供有价贡献。 份额直接代表投票权和所有权。 成员可以随时带着资金库份额退出。
+治理去中心化自治组织时要考虑很多因素,比如投票和提案如何运作。
-_通常用于联系更紧密、以人为中心的组织,例如慈善机构、工人团体和投资俱乐部等。 也可以管理协议和代币。_
+### 委托 {#governance-delegation}
-#### 知名案例 {#share-example}
+委托就像是去中心化自治组织的代议制民主。 代币持有者将投票委托给那些自提名并承诺管理协议和随时了解动态的用户。
-[MolochDAO](http://molochdao.com/) - MolochDAO 致力于为以太坊项目募集资金。 他们需要成员资格提案,以便小组可以评估您是否具有必要的专业知识和资本来对潜在资助方做出明智判断。 您无法通过直接购买代币来加入去中心化自治组织。
+#### 知名案例 {#governance-example}
-### 基于信誉的成员资格 {#reputation-based-membership}
+[以太坊域名服务](https://claim.ens.domains/delegate-ranking) - 以太坊域名服务持有者可以将他们的选票委托给参与的社区成员来代表他们。
-信誉代表参加选举的证明,并授予去中心化自治组织中的选举权。 不同于代币或共享成员资格,基于信誉体系的去中心化自治组织不会将所有权转让给贡献者。 信誉积分不能被购买、转移或授权;去中心化自治组织成员必须通过参与获得信誉积分。 链上投票是没有许可的,未来的成员可以自由提交加入去中心化自治组织的建议书,并要求获得信誉积分和代币,作为奖励换取他们的贡献。
+### 自动交易治理 {#governance-example}
-_通常用于协议和去中心化应用程序的去中心化开发和治理,但同时非常适合各类组织,例如慈善机构、工人团体、投资俱乐部等。_
+在很多去中心化自治组织中,如果达到法定人数的成员投票赞成,交易将自动执行。
-#### 知名案例 {#reputation-example}
+#### 知名案例 {#governance-example}
-[DXdao](https://DXdao.eth.link) -- DXdao 是一个全球主权集体,自 2019 年以来致力于构建和管理去中心化协议和应用。 它利用以信誉为基础的治理和全息共识来协调和管理资金,这意味着任何人都不能对它的未来施加影响。
+[Nouns](https://nouns.wtf) — 在 Nouns 去中心化自治组织中,只要创始人不否决,如果投票达到法定票数并且多数票赞成,那么交易将自动执行。
-## 去中心化自治组织如何运作? {#how-daos-work}
+### 多重签名治理 {#governance-example}
-智能合约是去中心化自治组织的核心。 合约界定了组织的规则,并持有组织资金库。 一旦在以太坊上启用合约,除非表决通过,否则任何人都不能修改规则。 任何违背代码规则和逻辑的行为都将失败。 由于资金库由智能合约定义,任何人都不能未经组织批准而挪用资金。 这意味着去中心化自治组织不需要集中管理机构。 相反,组织集体作出决定,而付款会在表决通过后自动获批。
+虽然去中心化自治组织可能有数千名有投票权的成员,但资金一般会放在一个由 5 到 20 名活跃社区成员共同管理的钱包中,这些成员受组织信任并接受监督(社区知道他们的公开身份)。 投票后,执行多重签名的签名者将执行社区的意志。
-之所以能够做到这一点,是因为智能合约一旦在以太坊中生效,就无法被篡改。 一切都是公开的,只要修改代码(去中心化自治组织的规则)就会被发现。
+## 去中心化自治组织相关法律 {#dao-laws}
-
- 了解更多关于智能合约的信息
-
+1977 年,怀俄明州发明了有限责任公司制度,保护企业家并对他们的责任范围做出限制。 最近,他们率先制定了《去中心化自治组织法》,确定了去中心化自治组织的法律地位。 目前,怀俄明州、佛蒙特州和维尔京群岛都制定了各自的去中心化自治组织法律。
-## 以太坊与去中心化自治组织 {#ethereum-and-daos}
+#### 知名案例 {#law-example}
-以太坊为去中心化自治组织提供了良好基础,原因如下:
+[CityDAO](https://citydao.io) — 依照怀俄明州的去中心化自治组织相关法律,CityDAO 购买了黄石国家公园附近的 40 英亩土地。
-- 以太坊本身已经建立足够的共识,足以让各类组织信任以太坊网络。
-- 智能合约一旦生效就无法更改,即便是其所有者也是如此。 这使得去中心化自治组织能够按照编程规则运行。
-- 智能合约可以发送/接收资金。 没有这点,您就需要可信的中间人来管理组织资金。
-- 比起竞争,以太坊社区更趋向于合作,这使得各类应用程序和服务系统蓬勃发展。
+## 去中心化自治组织的成员资格 {#dao-membership}
+
+去中心化自治组织成员资格分为多种模式。 成员资格可以决定投票方式和去中心化自治组织的其他关键事项。
+
+### 基于代币的成员资格 {#token-based-membership}
+
+通常无需许可,取决于其使用的代币。 通常,这些治理代币在去中心化交易所无需许可即可易, 其余代币要通过提供流动性或“工作量证明”才能赚取。 无论何种方式,只要持有代币就可以参与投票。
+
+_通常用来管理各种去中心化协议和/或代币本身。_
+
+#### 知名案例 {#token-example}
+
+[MakerDAO](https://makerdao.com) — 去中心化交易所普遍提供 MakerDAO 的代币 MKR,任何人都可以买入,从而获得对 Maker 协议未来的投票权。
+
+### 基于份额的成员资格 {#share-based-membership}
+
+基于份额的去中心化自治组织通常拥有更多权限,但仍然相当公开透明。 任何潜在成员都可以提交加入去中心化自治组织的提案,并且通常以代币或工作的形式提供有价值的贡献。 份额代表直接投票权和所有权。 成员可以随时退出组织并带走属于他们的资金份额。
+
+_通常用于联系更紧密、以人为中心的组织,例如慈善机构、工人团体和投资俱乐部等。 也可以管理协议和代币。_
+
+#### 知名案例 {#share-example}
+
+[MolochDAO](http://molochdao.com/) – MolochDAO 致力于为以太坊项目募集资金。 他们需要成员资格提案,以便组织可以评估您是否具有必要的专业知识和资本来对潜在受资助者做出明智判断。 您无法通过在公开市场上购买代币来加入这类去中心化自治组织。
+
+### 基于信誉的成员资格 {#reputation-based-membership}
+
+信誉代表参加投票的证明,并授予去中心化自治组织中的投票权。 不同于基于代币或份额的成员资格,基于信誉的去中心化自治组织不会将所有权转让给贡献者。 信誉积分不能够购买、转让或委托;去中心化自治组织成员必须通过参与获得信誉积分。 链上投票无需许可,潜在成员可以自由提交加入去中心化自治组织的提案,并要求获得信誉积分和代币,作为他们所做贡献的奖励。
+
+_通常用于协议和去中心化应用程序的去中心化开发和管理,但同时非常适合各类组织,例如慈善机构、工人团体、投资俱乐部等。_
+
+#### 知名案例 {#reputation-example}
+
+[DXdao](https://DXdao.eth.link) -- DXdao 是一个全球性的主权团体,自 2019 年以来一直致力于构建和管理去中心化协议和应用。 该组织利用基于信誉积分的治理和全息共识来协调和管理资金,这意味着任何人都不能对它的未来施加影响。
## 加入/创立去中心化自治组织 {#join-start-a-dao}
@@ -103,25 +135,31 @@ _通常用于协议和去中心化应用程序的去中心化开发和治理,
- [以太坊社区中的去中心化自治组织](/community/get-involved/#decentralized-autonomous-organizations-daos)
- [DAOHaus 的去中心化自治组织列表](https://app.daohaus.club/explore)
+- [Tally.xyz 的去中心化自治组织列表](https://www.tally.xyz)
### 创立去中心化自治组织 {#start-a-dao}
- [使用 DAOHaus 创立去中心化自治组织](https://app.daohaus.club/summon)
-- [创立 Aragon 支持的去中心化自治组织](https://aragon.org/product)
+- [从 Tally 开创治理去中心化自治组织](https://www.tally.xyz/add-a-dao)
+- [创立由 Aragon 支持的去中心化自治组织](https://aragon.org/product)
- [创立 colony](https://colony.io/)
-- [使用 DAOstack 全息共识创建去中心化自治组织](https://alchemy.daostack.io/daos/create)
+- [使用 DAOstack 的全息共识机制创建去中心化自治组织](https://alchemy.daostack.io/daos/create)
## 延伸阅读 {#further-reading}
### 去中心化自治组织相关文章 {#dao-articles}
- [什么是去中心化自治组织?](https://aragon.org/dao)– [Aragon](https://aragon.org/)
-- [去中心化自治组织之家](https://wiki.metagame.wtf/docs/great-houses/house-of-daos)– [Metagame](https://wiki.metagame.wtf/)
-- [去中心化自治组织及其目的分别是什么?](https://daohaus.substack.com/p/-what-is-a-dao-and-what-is-it-for)– [DAOhaus](https://daohaus.club/)
+- [《去中心化自治组织手册》](https://daohandbook.xyz)
+- [去中心化自治组织之家](https://wiki.metagame.wtf/docs/great-houses/house-of-daos) – [Metagame](https://wiki.metagame.wtf/)
+- [什么是去中心化自治组织,其宗旨是什么?](https://daohaus.substack.com/p/-what-is-a-dao-and-what-is-it-for) – [DAOhaus](https://daohaus.club/)
- [如何创立由去中心化自治组织提供支持的数字社区](https://daohaus.substack.com/p/four-and-a-half-steps-to-start-a) – [DAOhaus](https://daohaus.club/)
-- [什么是去中心化自治组织?](https://coinmarketcap.com/alexandria/article/what-is-a-dao)– [Coinmarketcap](https://coinmarketcap.com)
-- [什么是全息共识?](https://medium.com/daostack/holographic-consensus-part-1-116a73ba1e1c)- [DAOstack](https://daostack.io/)
+- [什么是去中心化自治组织?](https://coinmarketcap.com/alexandria/article/what-is-a-dao) – [Coinmarketcap](https://coinmarketcap.com)
+- [什么是全息共识?](https://medium.com/daostack/holographic-consensus-part-1-116a73ba1e1c) - [DAOstack](https://daostack.io/)
+- [《去中心化自治组织不是公司:去中心化在自治组织中很重要》,作者 Vitalik](https://vitalik.ca/general/2022/09/20/daos.html)
+- [去中心化自治组织、数据可用性委员会、数据可用性等等:不完整术语指南](https://blog.ethereum.org/2014/05/06/daos-dacs-das-and-more-an-incomplete-terminology-guide) - [以太坊博客](https://blog.ethereum.org)
### 视频 {#videos}
- [什么是加密货币中的去中心化自治组织?](https://youtu.be/KHm0uUPqmVE)
+- [去中心化自治组织能构建一座城市吗?](https://www.ted.com/talks/scott_fitsimones_could_a_dao_build_the_next_great_city) – [TED](https://www.ted.com/)
diff --git a/src/content/translations/zh/decentralized-identity/index.md b/src/content/translations/zh/decentralized-identity/index.md
index 002b5eeff68..0ee5023ac2a 100644
--- a/src/content/translations/zh/decentralized-identity/index.md
+++ b/src/content/translations/zh/decentralized-identity/index.md
@@ -141,7 +141,7 @@ summaryPoint3: 多亏了加密技术,用户现在拥有了再次发布、持
去中心化身份使公司能够跳过传统的[了解你的客户 (KYC)](https://en.wikipedia.org/wiki/Know_your_customer) 流程,通过可验证凭据验证用户身份。 这降低了身份管理的成本,并防止使用伪造证件。
-### 3. 投票和线上社区 {#voting-and-online-communities}
+### 3. 投票和在线社区 {#voting-and-online-communities}
在线投票和社交媒体是去中心化身份的两个新应用。 在线投票方案容易受到操控,尤其当恶意行为者创建虚假身份进行投票时。 要求个人提供链上身份证明可以提高在线投票流程的公平性。
@@ -181,4 +181,4 @@ summaryPoint3: 多亏了加密技术,用户现在拥有了再次发布、持
- [GitHub 上的 ERC-725 联盟](https://github.com/erc725alliance) — _支持 ERC725 标准管理以太坊区块链上的身份_
- [SpruceID Discord 服务器](https://discord.com/invite/Sf9tSFzrnt) — _使用以太坊登录的爱好者和开发者社区_
-- [Veramo Labs](https://discord.gg/sYBUXpACh4) - _开发者社区,致力于为应用构建可验证数据框架_
+- [Veramo Labs](https://discord.gg/sYBUXpACh4) - _开发者社区,帮助为应用程序构建可验证数据框架_
diff --git a/src/content/translations/zh/defi/index.md b/src/content/translations/zh/defi/index.md
index 25703e224ca..69c10884497 100644
--- a/src/content/translations/zh/defi/index.md
+++ b/src/content/translations/zh/defi/index.md
@@ -5,11 +5,11 @@ lang: zh
template: use-cases
emoji: ":money_with_wings:"
image: ../../../../assets/use-cases/defi.png
-alt: 由乐高积木拼成的以太币徽标。
+alt: 由乐高积木拼成的以太坊徽标。
sidebarDepth: 2
summaryPoint1: 当前金融体系的全球性、开放性替代方案。
-summaryPoint2: 允许您借贷、储蓄、投资、交易等等的产品。
-summaryPoint3: 基于任何人都可以用来编程的开源技术。
+summaryPoint2: 允许用户进行借贷、储蓄、投资、交易等等的产品。
+summaryPoint3: 基于开源技术,任何人都可以来编程。
---
去中心化金融是专为互联网时代构建的开放式全球金融系统,可替代不透明、控制严格并由几十年前的基础设施和流程支撑的系统。 让您可以控制和了解自己的资金。 让您有机会接触全球市场,并可以替代当地货币或银行业务。 去中心化金融产品向任何有互联网连接的人开放金融服务,产品主要由用户创造和维护。 迄今为止,价值数百亿美元的加密货币已经通过去中心化金融应用程序流动,而且每天都在增长。
@@ -322,7 +322,7 @@ Dai 或 USDC 等代币的价值和美元的差距通常保持在几美分以内
## 构建去中心化金融 {#build-defi}
-去中心化金融是一场开源行动。 去中心化金融协议和应用都是开放的,您可以自行检查、分叉和创新。 由于这个分层堆栈(他们都共享相同的基础区块链和资产),协议可以混合和匹配以解锁独特的组合机会。
+去中心化金融是一场开源行动。 去中心化金融协议和应用都是开放的,您可以自行检查、分叉和创新。 由于这个分层堆栈(他们都共享相同的基础区块链和资产),协议可以混合和匹配以解锁独特的组合机会。
关于构建去中心化应用程序的更多信息
@@ -335,6 +335,7 @@ Dai 或 USDC 等代币的价值和美元的差距通常保持在几美分以内
- [去中心化金融 Pulse](https://defipulse.com/)
- [去中心化金融 Prime](https://defiprime.com/)
- [去中心化金融 Llama](https://defillama.com/)
+- [DeFi Rate](https://defirate.com/)
### 去中心化金融相关文章 {#defi-articles}
diff --git a/src/content/translations/zh/developers/docs/accounts/index.md b/src/content/translations/zh/developers/docs/accounts/index.md
index 5cfee4b66d0..563429e30ba 100644
--- a/src/content/translations/zh/developers/docs/accounts/index.md
+++ b/src/content/translations/zh/developers/docs/accounts/index.md
@@ -6,7 +6,7 @@ lang: zh
一个以太坊帐户是一个具有以太币 (ETH) 余额的实体,可以在以太坊上发送交易。 帐户可以由用户控制,也可以作为智能合约部署。
-## 前置要求 {#prerequisites}
+## 前提条件 {#prerequisites}
帐户是一个很适合初学者的主题。 但为了帮助您更好地理解这个页面,我们建议您首先阅读我们的[以太坊简介](/developers/docs/intro-to-ethereum/)。
@@ -14,8 +14,8 @@ lang: zh
以太坊有两种帐户类型:
-- 外部持有 – 私钥的所有者控制
-- 合约 – 一种由代码控制,部署在网络上的智能合约。 了解[智能合约](/developers/docs/smart-contracts/)。
+- 外部所有的帐户 (EOA) – 由任何拥有私钥的人控制
+- 合约帐户 — 部署到网络上的智能合约,由代码控制。 了解[智能合约](/developers/docs/smart-contracts/)。
这两种帐户类型都能:
@@ -28,13 +28,15 @@ lang: zh
- 创建帐户是免费的
- 可以发起交易
-- 外部所有的帐户之间只能进行 ETH 和代币交易
+- 外部所有的帐户之间只能进行以太币和代币交易
+- 由一对加密密钥组成:控制帐户活动的公钥和私钥
**合约**
- 创建合约存在成本,因为需要使用网络存储空间
- 只能在收到交易时发送交易
- 从外部帐户向合约帐户发起的交易能触发可执行多种操作的代码,例如转移代币甚至创建新合约
+- 合约帐户没有私钥。 相反,它们由智能合约代码逻辑控制
## 理解帐户 {#an-account-examined}
@@ -115,7 +117,7 @@ Repeat passphrase:
## 延伸阅读 {#further-reading}
-_还有哪些社区资源对你有所帮助? 请编辑本页面以添加!_
+_还有哪些社区资源对你有所帮助? 请编辑本页面并添加!_
## 相关主题 {#related-topics}
diff --git a/src/content/translations/zh/developers/docs/blocks/index.md b/src/content/translations/zh/developers/docs/blocks/index.md
index 68ee659a7e4..dfe7498b2b1 100644
--- a/src/content/translations/zh/developers/docs/blocks/index.md
+++ b/src/content/translations/zh/developers/docs/blocks/index.md
@@ -6,7 +6,7 @@ lang: zh
区块是指一批交易的组合,并且包含链中上一个区块的哈希。 这将区块连接在一起(成为一个链),因为哈希是从区块数据中加密得出的。 这可以防止欺诈,因为以前的任何区块中的任何改变都会使后续所有区块无效,而且所有哈希都会改变,所有运行区块链的人都会注意到。
-## 前置要求 {#prerequisites}
+## 前提条件 {#prerequisites}
区块是一个对初学者非常友好的主题。 为了帮助您更好地理解这个页面,我们建议您先阅读[帐户](/developers/docs/accounts/)、[交易](/developers/docs/transactions/)和我们的[以太坊简介](/developers/docs/intro-to-ethereum/)。
@@ -14,7 +14,7 @@ lang: zh
为了确保以太坊网络上的所有参与者保持同步状态并就交易的确切历史达成共识,我们将交易分为多个区块。 这意味着同时有数十个(甚至数百个)交易被提交、达成一致并同步。
-![区块中的交易导致状态变化的图表](./tx-block.png) _图表来自 [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
+![区块中的交易导致状态变化的图表](./tx-block.png) _示意图节选自[以太坊虚拟机图解](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
通过间隔提交,所有网络参与者有足够时间达成共识:即使交易请求每秒发生数十次,但以太坊上的区块仅仅大约每十二秒创建并提交一次。
@@ -86,38 +86,38 @@ target:最新的时段边界区块
```
parent_hash:父块的哈希
-fee_recipient:向其中支付交易费的帐户地址
-state_root:在此区块中应用更改后全局状态的根哈希
+fee_recipient:接收交易费的帐户地址
+state_root:应用此区块中的变化后全局状态的根哈希
receipts_root:交易收据树的哈希
logs_bloom:包含事件日志的数据结构
prev_randao:随机选择验证者时使用的值
block_number:当前区块的编号
-gas_limit:此区块中允许使用的最大燃料量
-gas_used:此区块中实际使用的燃料量
-timestamp::出块时间
+gas_limit:此区块允许使用的最大燃料量
+gas_used:此区块实际使用的燃料量
+timestamp:出块时间
extra_data:作为原始字节的任意附加数据
-base_fee_per_gas:基础费值
+base_fee_per_gas:基础费的值
block_hash:执行区块的哈希
transactions_root:有效载荷中交易的根哈希
```
-`execution_payload` 本身包含以下内容(请注意这与区块头相同,只是它包含实际的交易列表而不是交易的根哈希):
+`execution_payload` 本身包含以下字段(这些与 header 字段相同,只是它包含的不是交易的根哈希,而是实际的交易列表):
```
parent_hash:父块的哈希
-fee_recipient:向其中支付交易费的帐户地址
-state_root:在此区块中应用更改后全局状态的根哈希
+fee_recipient:接收交易费的帐户地址
+state_root:应用此区块中的变化后全局状态的根哈希
receipts_root:交易收据树的哈希
logs_bloom:包含事件日志的数据结构
prev_randao:随机选择验证者时使用的值
block_number:当前区块的编号
-gas_limit:此区块中允许使用的最大燃料量
-gas_used:此区块中实际使用的燃料量
+gas_limit:此区块允许使用的最大燃料量
+gas_used:此区块实际使用的燃料量
timestamp:出块时间
extra_data:作为原始字节的任意附加数据
-base_fee_per_gas:基础费值
+base_fee_per_gas:基础费的值
block_hash:执行区块的哈希
-transactions:要执行的交易的列表
+transactions:要执行交易的列表
```
## 出块时间 {#block-time}
@@ -130,7 +130,7 @@ transactions:要执行的交易的列表
## 延伸阅读 {#further-reading}
-_还有哪些社区资源对你有所帮助? 请编辑本页面以添加!_
+_还有哪些社区资源对你有所帮助? 请编辑本页面并添加!_
## 相关主题 {#related-topics}
diff --git a/src/content/translations/zh/developers/docs/consensus-mechanisms/index.md b/src/content/translations/zh/developers/docs/consensus-mechanisms/index.md
index 2e873d1d9c7..9feff83d135 100644
--- a/src/content/translations/zh/developers/docs/consensus-mechanisms/index.md
+++ b/src/content/translations/zh/developers/docs/consensus-mechanisms/index.md
@@ -6,7 +6,7 @@ lang: zh
“共识机制”一词常常泛指“权益证明”、“工作量证明”或“权威证明”协议。 但是,它们只是共识机制中用于防御“女巫攻击”的部分。 共识机制是由一整套想法、协议和激励构成的体系,使得一系列分布式节点能够就区块链状态达成一致。
-## 前置要求 {#prerequisites}
+## 前提条件 {#prerequisites}
为了更好地理解此页面,我们建议你先阅读[以太坊简介](/developers/docs/intro-to-ethereum/)。
@@ -34,7 +34,7 @@ lang: zh
和比特币类似,以太坊也曾经使用基于**工作量证明 (PoW)** 的共识协议。
-#### 创建区块 {#pow-block-creation}
+#### 区块创建 {#pow-block-creation}
验证者创建区块。 每个时隙中都会随机选择一个验证者成为区块提议者。 区块提议者的共识客户端请求配对执行客户端对交易打包,作为“执行负载”。 然后它们将“执行负载”包装成共识数据并形成一个区块,再把这个区块发送给以太坊网络上的其他节点。 这样的区块生产会得到以太币奖励。 在极少数情况下,一个时隙中产生了多个可能的区块,或节点在不同时间收到区块,分叉选择算法就会选择使形成的链具有最大认证权重的那个区块(认证权重是指为该区块提供认证的验证者数量,并根据验证者质押的以太币余额调整)。
@@ -70,7 +70,7 @@ lang: zh
**女巫攻击防御**衡量一种协议如何抗衡[女巫攻击](https://wikipedia.org/wiki/Sybil_attack)。 女巫攻击是指一个用户或用户群体假装成许多用户。 防御这种攻击对去中心化区块链至关重要,并使矿工和验证者能够在资源投入的基础上获得平等奖励。 通过让用户消耗大量能源或提供大量抵押品,工作量证明和权益证明可以防止这种情况。 这些保护措施通过经济手段对女巫攻击形成威慑。
-**链选择规则**用于决定哪条链才是“正确”的。 比特币使用“最长链”规则。这意味着,任何最长的区块链,都会被其他节点作为有效链接受并与之协作。 对于工作量证明链,最长链由链上累积的工作量证明总难度决定。 以太坊曾经也使用过最长链规则,但现在运行在权益证明机制下的以太坊采用了一种最新的分叉选择算法,以此衡量链的“权重”。 权重是验证者投票的累积总数,并以验证者质押的以太币余额加权。
+**链选择规则**用于决定哪条链才是“正确”的。 比特币使用“最长链”规则。这意味着,任何最长的区块链,都会被其他节点作为有效链接受并与之协作。 对于工作量证明链,最长链由链上累积的工作量证明总难度决定。 以太坊曾经也使用过最长链规则;然而权益证明机制下运行的以太坊采用了经过更新的分叉选择算法,衡量链的“权重”。 权重是验证者投票的累积总数,并以验证者质押的以太币余额加权。
以太坊使用被称为 [Gasper](/developers/docs/consensus-mechanisms/pos/gasper/) 的共识机制,该机制结合了 [Casper 友好的最终确定性工具权益证明](https://arxiv.org/abs/1710.09437)和 [GHOST 分叉选择规则](https://arxiv.org/abs/2003.03052)。
@@ -82,7 +82,7 @@ lang: zh
- [关于工作量证明区块链的安全性和性能](https://eprint.iacr.org/2016/555.pdf)
- [拜占庭问题](https://en.wikipedia.org/wiki/Byzantine_fault)
-_还有哪些社区资源对你有所帮助? 请编辑本页面以添加!_
+_还有哪些社区资源对你有所帮助? 请编辑本页面并添加!_
## 相关主题 {#related-topics}
diff --git a/src/content/translations/zh/developers/docs/consensus-mechanisms/pos/index.md b/src/content/translations/zh/developers/docs/consensus-mechanisms/pos/index.md
index 892e55960da..62f4122dfb8 100644
--- a/src/content/translations/zh/developers/docs/consensus-mechanisms/pos/index.md
+++ b/src/content/translations/zh/developers/docs/consensus-mechanisms/pos/index.md
@@ -43,7 +43,7 @@ lang: zh
## 权益证明和安全性 {#pos-and-security}
-正如在工作量证明中一样,权益证明中仍然存在 [51% 攻击](https://www.investopedia.com/terms/1/51-attack.asp)的威胁,但对于攻击者来说风险却更大。 攻击者需要 51% 的质押以太币。 然后他们可以通过自己的认证确保他们首选的分叉拥有最多累积认证。 共识客户端使用累积认证的“权重”确定正确的链,所以攻击者能够使他们的分叉成为规范区块。 然而与工作量证明相比,权益证明的优势在于,社区能够灵活地发动反击。 例如,诚实的验证者可以决定继续在非主流链上构建并忽略攻击者的分叉,同时鼓励应用程序、交易所和池也这样做。 他们还可以决定强行将攻击者从网络中移除并销毁攻击者质押的以太币。 这些都是对 51% 攻击的强有力的经济防御措施。
+正如在工作量证明中一样,权益证明中仍然存在 [51% 攻击](https://www.investopedia.com/terms/1/51-attack.asp)的威胁,但对于攻击者来说风险却更大。 攻击者需要获得 51% 的质押以太币。 然后他们可以通过自己的认证确保他们首选的分叉拥有最多累积认证。 共识客户端使用累积认证的“权重”确定正确的链,所以攻击者能够使他们的分叉成为规范区块。 然而与工作量证明相比,权益证明的优势在于,社区能够灵活地发动反击。 例如,诚实的验证者可以决定继续在非主流链上构建并忽略攻击者的分叉,同时鼓励应用程序、交易所和池也这样做。 他们还可以决定强行将攻击者从网络中移除并销毁攻击者质押的以太币。 这些都是对 51% 攻击的强有力的经济防御措施。
51% 攻击只是其中一种恶意行为。 不良行为者可能会尝试远程攻击(尽管最终确定性小工具抵消了这种攻击向量)、短程“重组”(尽管提议者权重提升和认证期限可以缓解这种情况)、弹跳攻击和平衡攻击(也可以通过提议者权重提升来缓解,并且这些攻击只能在理想化的网络条件下演示)或雪崩攻击(被只考虑最新消息的分叉选择算法规则抵消)。
@@ -58,12 +58,16 @@ lang: zh
| 权益证明的加密经济安全性高于工作量证明 | 用户需要运行三种软件才能参与以太坊的权益证明。 |
| 需要发行较少的新以太币就可以激励网络参与者 | |
+## 更愿意通过视频学习? {#visual-learner}
+
+
+
## 延伸阅读 {#further-reading}
- [Proof of Stake FAQ](https://vitalik.ca/general/2017/12/31/pos_faq.html) _Vitalik Buterin_
- [What is Proof of Stake](https://consensys.net/blog/blockchain-explained/what-is-proof-of-stake/) _ConsenSys_
- [What Proof of Stake Is And Why It Matters](https://bitcoinmagazine.com/culture/what-proof-of-stake-is-and-why-it-matters-1377531463) _Vitalik Buterin_
-- [The Beacon Chain Ethereum 2.0 explainer you need to read first](https://ethos.dev/beacon-chain/) _Ethos.dev_
+- [以太坊 2.0 信标链:一篇需要优先阅读的解读文章](https://ethos.dev/beacon-chain) _Ethos.dev_
- [Why Proof of Stake (Nov 2020)](https://vitalik.ca/general/2020/11/06/pos2020.html) _Vitalik Buterin_
- [Proof of Stake: How I Learned to Love Weak Subjectivity](https://blog.ethereum.org/2014/11/25/proof-stake-learned-love-weak-subjectivity/) _Vitalik Buterin_
- [权益证明以太坊的攻击和防御](https://mirror.xyz/jmcook.eth/YqHargbVWVNRQqQpVpzrqEQ8IqwNUJDIpwRP7SS5FXs)
diff --git a/src/content/translations/zh/developers/docs/consensus-mechanisms/pow/index.md b/src/content/translations/zh/developers/docs/consensus-mechanisms/pow/index.md
index e0724ccc36f..6ee08834f9e 100644
--- a/src/content/translations/zh/developers/docs/consensus-mechanisms/pow/index.md
+++ b/src/content/translations/zh/developers/docs/consensus-mechanisms/pow/index.md
@@ -7,10 +7,10 @@ lang: zh
以太坊网络最初采用一种称为**[工作量证明 (PoW)](/developers/docs/consensus-mechanisms/pow)** 的共识机制。 这种机制允许以太坊网络的节点就以太坊区块链上记录的所有信息的状态达成共识,并防止某些产生经济影响的攻击。 然而,以太坊在 2022 年终结了工作量证明并开始采用[权益证明](/developers/docs/consensus-mechanisms/pos)。
- 工作量证明现已弃用。 以太坊不再使用工作量证明作为其部分共识机制。 它改用权益证明。 阅读有关权益证明和质押的更多信息。
+ 工作量证明现已弃用。 以太坊不再使用工作量证明作为其部分共识机制。 它改用权益证明。 阅读有关权益证明和质押的更多信息。
-## 前置要求 {#prerequisites}
+## 前提条件 {#prerequisites}
为了更好地理解此页面,建议提前阅读[交易](/developers/docs/transactions/)、[区块](/developers/docs/blocks/)和[共识机制](/developers/docs/consensus-mechanisms/)。
@@ -58,7 +58,7 @@ lang: zh
自[君士坦丁堡升级](/history/#constantinople)以来,成功创建区块的矿工将获得两个新铸造的以太币及部分交易费作为奖励。 叔块也会获得 1.75 个以太币的补偿。 叔块是由一个矿工创建的有效区块,几乎与此同时另一个矿工创建了规范区块。要确定规范区块,最终取决于哪条链构建于第一个区块之上。 叔块通常是由于网络延迟而出现。
-## 终局性 {#finality}
+## 最终确定性 {#finality}
如果交易属于一个无法更改的区块时,它就在以太坊上具有“最终确定性”。
@@ -89,7 +89,7 @@ lang: zh
[有关权益证明的更多信息](/developers/docs/consensus-mechanisms/pos/)
-## 更偏向视频学习者? {#visual-learner}
+## 更愿意通过视频学习? {#visual-learner}
diff --git a/src/content/translations/zh/developers/docs/consensus-mechanisms/pow/mining/index.md b/src/content/translations/zh/developers/docs/consensus-mechanisms/pow/mining/index.md
index 4738c0f7aae..d739efeca8a 100644
--- a/src/content/translations/zh/developers/docs/consensus-mechanisms/pow/mining/index.md
+++ b/src/content/translations/zh/developers/docs/consensus-mechanisms/pow/mining/index.md
@@ -10,7 +10,7 @@ lang: zh
-## 前置要求 {#prerequisites}
+## 前提条件 {#prerequisites}
为了更好地了解此页面,推荐先阅读[交易](/developers/docs/transactions/)、[区块](/developers/docs/blocks/)和[工作量证明](/developers/docs/consensus-mechanisms/pow/)。
@@ -64,7 +64,7 @@ lang: zh
## 挖矿算法 {#mining-algorithm}
-以太坊主网只使用过一种挖矿算法 - [“Ethash”](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash)。 Ethhash 是称为[“Dagger-Hashimoto”](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto)的最初研发挖矿算法的继承者。
+以太坊主网只使用过一种挖矿算法 - [“Ethash”](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash)。 Ethhash 是一种称为[“Dagger-Hashimoto”](/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/dagger-hashimoto)的最初研发挖矿算法的后续版本。
[有关挖矿算法的更多信息](/developers/docs/consensus-mechanisms/pow/mining-algorithms/)。
diff --git a/src/content/translations/zh/developers/docs/dapps/index.md b/src/content/translations/zh/developers/docs/dapps/index.md
index ec63a358b32..e6f14d6da2c 100644
--- a/src/content/translations/zh/developers/docs/dapps/index.md
+++ b/src/content/translations/zh/developers/docs/dapps/index.md
@@ -6,7 +6,7 @@ lang: zh
去中心化应用 (dapp) 是在去中心化网络上构建的应用程序,结合了[智能合约](/developers/docs/smart-contracts/)和前端用户界面。 请注意,以太坊智能合约具有可访问性和透明性——就像开放 API 一样 ——所以你的 dapp 里甚至可以包含其他人写过的智能合约。
-## 基本要求 {#prerequisites}
+## 前提条件 {#prerequisites}
在学习 dapp 之前,您应该了解[区块链基础知识](/developers/docs/intro-to-ethereum/),并了解以太坊网络及其去中心化方式。
@@ -39,11 +39,11 @@ dapp 可以用任何语言编写(就像是一个 app)。它有前端代码
- **维护** – dapp 可能更难维护,因为发布到区块链的代码和数据更难修改。 在部署后,开发人员很难对去中心化应用程序(或其存储的底层数据)进行更新,即使在旧版本中发现了漏洞或安全风险。
- **性能开销** – 巨大的性能开销,而且难以扩展更多性能。 为了达到以太坊所追求的安全、完整、透明和可靠的水平,每个节点都会运行和存储每一笔交易。 除此之外,达成权益证明共识也需要时间。
-- **网络拥塞** – 至少在当前模型中,如果一个 dapp 使用了太多的计算资源,整个网络都会承担影响。 目前,该网络每秒只能处理约 10 笔交易;如果交易发送的速度超过这个速度,未确认的交易池会迅速膨胀。
+- **网络拥塞** – 至少在当前模型中,如果一个 dapp 使用了太多的计算资源,整个网络都会承担影响。 目前,该网络每秒只能处理约 10-15 笔交易;如果交易发送的速度超过这个速度,未确认的交易池会迅速膨胀。
- **用户体验** – 设计用户友好的体验可能更难。普通终端用户可能会发现,很难以真正安全的方式设置与区块链互动所需的工具堆栈。
- **集中化** — 无论如何,建立在以太坊基础层之上的用户友好型和开发人员友好型解决方案最终看起来都像集中式服务。 例如,这种服务可以在服务器端存储密钥或其他敏感信息,使用中心化服务器为前端服务,或在写到区块链之前在中心化服务器上运行重要的业务逻辑。 这消除了区块链与传统模式相比的许多(并不是全部)优势。
-## 更偏向视频学习者? {#visual-learner}
+## 更愿意通过视频学习? {#visual-learner}
@@ -74,7 +74,7 @@ dapp 可以用任何语言编写(就像是一个 app)。它有前端代码
- [A 2021 guide to decentralized applications](https://limechain.tech/blog/what-are-dapps-the-2021-guide/) - _LimeChain_
- [What Are Decentralized Apps?](https://www.gemini.com/cryptopedia/decentralized-applications-defi-dapps) - _Gemini_
-_还有哪些社区资源对您有所帮助? 请编辑本页面并添加!_
+_还有哪些社区资源对你有所帮助? 请编辑本页面并添加!_
## 相关主题 {#related-topics}
diff --git a/src/content/translations/zh/developers/docs/evm/index.md b/src/content/translations/zh/developers/docs/evm/index.md
index 8836a551da4..716aa1bdf2f 100644
--- a/src/content/translations/zh/developers/docs/evm/index.md
+++ b/src/content/translations/zh/developers/docs/evm/index.md
@@ -8,7 +8,7 @@ EVM 的物理实例不能像人们指向云或海浪那样描述,它是真实*
以太坊协议本身的存在仅仅是为了让这个特殊状态机保持连续、不间断和不可变的运行。 以太坊虚拟机是所有以太坊帐户和智能合约依存的环境。 在链上任何给定的区块处,以太坊有且只有一个“规范”状态,而以太坊虚拟机定义从一个区块到另一个区块计算新的有效状态的规则。
-## 前置要求 {#prerequisites}
+## 前提条件 {#prerequisites}
对计算机科学中常见术语的基本了解,如[字节](https://wikipedia.org/wiki/Byte)、[内存](https://wikipedia.org/wiki/Computer_memory)和[堆栈]()是理解 EVM 的前提。 熟悉[哈希函数](https://wikipedia.org/wiki/Cryptographic_hash_function)和[默克尔树](https://wikipedia.org/wiki/Merkle_tree)等密码学/区块链概念也会很有帮助。
@@ -18,7 +18,7 @@ EVM 的物理实例不能像人们指向云或海浪那样描述,它是真实*
虽然以太坊有自己的本机加密货币 (ETH),遵循几乎完全相同的直观规则,但它也支持更强大的功能:[智能合约](/developers/docs/smart-contracts/)。 对于此更复杂的功能,需要一个更复杂的类比。 以太坊不是分布式账本,而是分布式[状态机器](https://wikipedia.org/wiki/Finite-state_machine)。 以太坊的状态是一个大型数据结构,它不仅保存所有帐户和余额,而且还保存一个*机器状态*,它可以根据预定义的一组规则在不同的区块之间进行更改,并且可以执行任意的机器代码。 在区块中更改状态的具体规则由 EVM 定义。
-![EVM 组成结构图](./evm.png) _图表来自 [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
+![EVM 组成结构图](./evm.png) _示意图节选自[以太坊虚拟机图解](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
## 以太坊状态转换函数 {#the-ethereum-state-transition-function}
diff --git a/src/content/translations/zh/developers/docs/gas/index.md b/src/content/translations/zh/developers/docs/gas/index.md
index 2a3544904ad..17e20779150 100644
--- a/src/content/translations/zh/developers/docs/gas/index.md
+++ b/src/content/translations/zh/developers/docs/gas/index.md
@@ -6,7 +6,7 @@ lang: zh
Gas 对以太坊网络至关重要。 正是这种燃料使它能够运行,正如车辆需要汽油一样。
-## 前置要求 {#prerequisites}
+## 前提条件 {#prerequisites}
为了更好地理解此页面,推荐先阅读[交易](/developers/docs/transactions/)和 [EVM](/developers/docs/evm/)。
@@ -16,7 +16,7 @@ Gas 是指在以太坊网络上执行特定操作所需的计算工作量。
由于每笔以太坊交易都需要计算资源才能执行,每笔交易都需要付费。 在这个方面上,Gas 是指在以太坊成功进行交易所需的费用。
-![显示 EVM 操作所需 Gas 的图表](./gas.png) _图表来自 [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
+![显示 EVM 操作所需 Gas 的图表](./gas.png) _示意图节选自[以太坊虚拟机图解](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
本质上,Gas 费用是以太坊的货币以太 (ETH) 支付的。 Gas 价格以 Gwei 标明,Gwei 本身就是 ETH 的一个单位――每个 Gwei 等于 0.000000001 ETH (10-9 ETH)。 例如,您可以说您的 Gas 成本为 1 Gwei,而不是说您的 Gas 成本为 0.000000001 以太。 “gwei”一词本身表示“giga-wei”,等于 1,000,000,000 wei。 Wei 本身(以 [b-money](https://www.investopedia.com/terms/b/bmoney.asp) 的发明者 [Wei Dai](https://wikipedia.org/wiki/Wei_Dai) 命名)是 ETH 中最小的单位。
@@ -28,29 +28,31 @@ Gas 是指在以太坊网络上执行特定操作所需的计算工作量。
总费用为:`燃料单位(限额) * 燃料单价` 例如 `21,000 * 200 = 4,200,000 gwei` 或者 0.0042 ETH
+## 伦敦升级之后 {#post-london}
+
假设 Jordan 需要向 Taylor 支付 1 个以太币。 在交易中,燃料限额为 21,000 单位,基础费是 10 gwei。 Jordan 支付了 2 gwei 作为小费。
-## 伦敦升级之后 {#post-london}
+现在,总费用为:`units of gas used * (base fee + priority fee)`,其中 `base fee` 是协议设置的值,`priority fee` 是用户设置的值,即给验证者的小费。
-`21,000 * (10 + 2) = 252,000 gwei` 或 0.000252 个以太币。
+即,`21,000 * (10 + 2) = 252,000 gwei` 或 0.000252 个以太币。
当 Jordan 转账时,将从 Jordan 帐户中扣除 1.000252 个以太币。 Taylor 的帐户增加 1.0000 个以太币。 验证者收到 0.000042 个以太币的小费。 0.00021 个以太币的基础费被销毁。
-此外,Jordan 还可以为交易设定最高费用 (`maxFeePerGas`)。 最高费用与实际费用之间的差额将退还 Jordan。即 `refund = max fee - (base fee + priority fee)`。 Jordan 可以为执行交易费用设定一个最高金额,而不必担心在执行交易时“超额”支付基础费。
+此外,Jordan 还可以为交易设定最高费用 (`maxFeePerGas`)。 最高费用与实际费用之间的差额将退还 Jordan。即 `refund = max fee - (base fee + priority fee)`。 Jordan 可以为要执行的交易设置一个最高支付金额,而不用担心在执行交易时“超额”支付基础费。
### 区块大小 {#block-size}
-在伦敦升级之前,以太坊有固定大小的区块。 在网络需求高峰期,这些区块满负荷运行。 因此,用户常常不得不等到大需求量降低后才能将交易列入区块,导致用户体验很差。
+在伦敦升级之前,以太坊具有固定大小的区块。 在网络需求高峰期,这些区块满负荷运行。 因此,用户常常不得不等到需求量从高峰降低后才能将交易添加到区块中,这导致用户体验很糟糕。
-伦敦升级在以太坊中引入了大小可变区块。 每个区块的目标大小为 1500 万单位燃料,但区块的大小将根据网络需求增减,但不得超过 3000 万单位燃料的区块大小限制(目标区块大小的 2 倍)。 协议通过 _tâtonnement_ 过程使均衡区块大小平均达到 1,500 万单位燃料。 这意味着如果区块大小超出目标区块大小,协议将增加下一个区块的基础费。 同样,如果区块大小小于目标区块大小,协议将减少基础费。 基础费的调整金额与当前区块大小和目标区块大小的差距成比例。 [有关区块的更多信息](/developers/docs/blocks/)。
+伦敦升级为以太坊引入了大小可变的区块。 每个区块的目标大小为 1500 万单位燃料,但区块的大小将根据网络需求增减,但不得超过 3000 万单位燃料的区块大小限制(目标区块大小的 2 倍)。 协议通过 _tâtonnement_ 过程使均衡区块大小平均达到 1,500 万单位燃料。 这意味着如果区块大小超出目标区块大小,协议将增加下一个区块的基础费。 同样,如果区块大小小于目标区块大小,协议将减少基础费。 基础费的调整金额与当前区块大小和目标区块大小的差距成比例。 [更多关于区块的信息](/developers/docs/blocks/)。
### 基础费 {#base-fee}
-每个区块都有作为底价的基础费。 要想有资格被列入区块,燃料费用报价必须至少等于基础费。 基础费独立于当前区块计算,是由当前区块之前的区块决定的,这使得用户更容易预测交易费。 当区块被开采时,其基础费将被“销毁”并退出流通。
+每个区块都有一个基础费作为底价。 要想有资格添加到区块中,燃料费用报价必须至少等于基础费。 基础费独立于当前区块计算,是由当前区块之前的区块决定的,这使得用户更容易预测交易费。 当区块被开采时,其基础费将被“销毁”并退出流通。
-基础费是用一个公式计算的,该公式将上一个区块的大小(所有交易中使用的燃料数量)与目标大小进行比较。 如果超过目标区块大小,每个区块的基础费将最多增加 12.5%。 这种指数级增长使得区块大小无限期保持高位在经济上不可行。
+基础费是用一个公式计算的,该公式将前一个区块的大小(所有交易中使用的燃料数量)与目标大小进行比较。 如果超过目标区块大小,每个区块的基础费将最多增加 12.5%。 这种指数级增长使得区块大小无限期保持高位在经济上不可行。
-| 区块编号 | 已包含 Gas | 费用增加 | 当前基本费用 |
+| 区块编号 | 已包含燃料 | 费用增加 | 当前基本费用 |
| -------- | ---------: | -------: | -----------: |
| 1 | 15M | 0% | 100 gwei |
| 2 | 30M | 0% | 100 gwei |
@@ -61,9 +63,9 @@ Gas 是指在以太坊网络上执行特定操作所需的计算工作量。
| 7 | 30M | 12.5% | 180.2 gwei |
| 8 | 30M | 12.5% | 202.7 gwei |
-相对于伦敦升级之前的燃料拍卖市场,这种交易费机制的变化使费用更容易预测。 根据以上表格,在 9 号区块创建交易,钱包会让用户确切了解,要添加到下一个区块的**最大基础费**等于 `current base fee * 112.5%` 或 `202.8 gwei * 112.5% = 228.1 gwei`。
+相对于伦敦升级之前的燃料拍卖市场,这种交易费机制的变化使费用更容易预测。 根据以上表格,要在 9 号区块创建交易,钱包会让用户明确知晓,要将交易添加到下一个区块的**最大基础费**等于 `current base fee * 112.5%` 或 `202.8 gwei * 112.5% = 228.1 gwei`。
-还请注意,由于在处理完整块时基础费增加的速度,我们不太可能看到长时间出现完整块高峰。
+还请注意,由于在处理完整区块时基础费增加的速度,我们不太可能看到长时间出现完整区块高峰。
| 区块编号 | 已包含燃料 | 费用增加 | 当前基本费用 |
| -------- | ---------: | -------: | --------------: |
@@ -75,13 +77,13 @@ Gas 是指在以太坊网络上执行特定操作所需的计算工作量。
### 优先费(小费) {#priority-fee}
-在伦敦升级之前,矿工将获得区块中所含全部交易的总燃料费用。
+在伦敦升级之前,矿工获得区块中所含全部交易的总燃料费。
-由于新的基础费被销毁,伦敦升级引入了优先费(小费),激励矿工将交易列入区块。 如果没有小费,矿工会发现开采空区块在经济上可行,因为他们会获得相同的区块奖励。 在正常情况下,一笔金额不大的小费给矿工提供了将交易列入区块的最小激励。 对于需要在同一区块中优先执行的交易,需要提供更高的小费,力争使出价高于竞争交易。
+由于新的基础费被销毁,伦敦升级引入了优先费(小费),激励矿工将交易添加到区块中。 如果没有小费,矿工会发现开采空区块在经济上可行,因为他们会获得相同的区块奖励。 在正常情况下,一笔金额不大的小费为矿工添加交易提供了极小的激励。 对于需要在同一区块中优先执行的交易,需要提供更高的小费,力争使出价高于竞争交易。
### 最高费用 {#maxfee}
-要在网络上执行交易,用户可以为他们愿意支付的交易执行费用指定最高限额。 此可选参数称为 `maxFeePerGas`。 为了执行交易,最高费用必须超过基础费和小费的总和。 会为交易发送人退还最高费用与基础费和小费总和之间的差额。
+要在网络上执行交易,用户可以为他们愿意支付的交易执行费用指定最高限额。 此可选参数称为 `maxFeePerGas`。 为了执行交易,最高费用必须超过基础费和小费的总和。 交易完成后,会退还给交易发送人最高费用与基础费和小费总和之间的差额。
### 计算费用 {#calculating-fees}
@@ -89,7 +91,7 @@ Gas 是指在以太坊网络上执行特定操作所需的计算工作量。
## EIP-1559 {#eip-1559}
-在伦敦升级中实现的 [EIP-1559](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1559.md) 使得交易费机制比以前的燃料价格竞拍更加复杂,但优点是提高燃料费用的可预测性,从而使交易费市场更加高效。 用户可以在提交交易时设定 `maxFeePerGas`(对应于他们愿意为执行交易支付多少费用),他们清楚支付金额将不会超过燃料的市场价格 (`baseFeePerGas`),并且将获得减去小费后的剩余退款。
+在伦敦升级中实现的 [EIP-1559](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1559.md) 使得交易费机制比以前的燃料价格竞拍更加复杂,但优点是提高了燃料费用的可预测性,使交易费市场更加高效。 用户可以在提交交易时设定 `maxFeePerGas`(对应于他们愿意为执行交易支付多少费用),他们清楚支付金额将不会超过燃料的市场价格 (`baseFeePerGas`),并且多支付的金额将在减去小费后退还。
下面的视频解释了 EIP-1559 及其带来的好处:
@@ -97,39 +99,39 @@ Gas 是指在以太坊网络上执行特定操作所需的计算工作量。
如果感兴趣,你可以阅读 [EIP-1559 规范](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1559.md)。
-更深层次的见解请参见 [EIP-1559 资源](https://hackmd.io/@timbeiko/1559-resources)。
+如欲进一步深入,请参考 [EIP-1559 资源](https://hackmd.io/@timbeiko/1559-resources)。
## 为什么存在燃料费用? {#why-do-gas-fees-exist}
-简而言之,燃料费用有助于确保以太坊网络的安全。 在网络上执行的每次计算都需要收费,这样可以防止不良参与者对网络造成垃圾信息。 为了防止代码中出现无意或恶意的无限循环或其他计算浪费,要求每个交易对代码可以执行的计算步骤设置一个限制。 基本计算单位是“燃料”。
+简而言之,燃料费用有助于确保以太坊网络的安全。 在网络上执行的每次计算都需要收费,这样可以防止不良行为者给网络带来垃圾信息。 为了防止代码中出现无意或恶意的无限循环或其他计算浪费,要求每个交易对可以采用的代码执行计算步骤设置一个限制。 基本计算单位是“燃料”。
-尽管交易中包含费用限制,但交易中未使用的燃料将退还给用户(即退还 `max fee - (base fee + tip)`)。
+尽管交易中包含费用限制,但交易中未使用的所有燃料将退还给用户(即退还 `max fee - (base fee + tip)`)。
-![未使用燃料退款示意图](../transactions/gas-tx.png) _示意图节选自[以太坊虚拟机图解](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
+![未使用燃料退还示意图](../transactions/gas-tx.png) _示意图节选自[以太坊虚拟机图解](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
## 什么是燃料限额? {#what-is-gas-limit}
-燃料限额是指你愿意在交易中消耗的最大燃料数量。 涉及[智能合约](/developers/docs/smart-contracts/)的更复杂交易需要进行更多的计算工作,因此相比较简单的支付,它们需要更高的燃料限额。 标准以太币转账要求燃料限额为 21,000 单位燃料。
+燃料限额是指你愿意在交易中消耗的最大燃料数量。 涉及[智能合约](/developers/docs/smart-contracts/)的更复杂交易需要进行更多的计算工作,因此相比简单的支付,它们需要更高的燃料限额。 标准以太币转账要求燃料限额为 21,000 单位燃料。
-例如,如果你对简单的以太币转账设置 50,000 单位燃料限额,以太坊虚拟机将消耗 21,000 单位,你将收到剩余的 29,000 单位。 然而,如果你设置的燃料太少,比如说,对于简单的以太币转账,设置燃料限额为 20,000 单位,以太坊虚拟机将消耗 20,000 单位燃料并试图完成交易,但不会完成。 然后,以太坊虚拟机回滚所有变化,但由于矿工已经完成了价值 20k 单位燃料的工作,这些燃料就被消耗了。
+例如,如果你对简单的以太币转账设置 50,000 单位燃料限额,以太坊虚拟机将消耗 21,000 单位,你将收到剩余的 29,000 单位。 然而,如果你设置的燃料太少,比如说,对于简单的以太币转账,设置燃料限额为 20,000 单位,以太坊虚拟机将消耗 20,000 单位燃料并尝试完成交易,但不会完成。 然后,以太坊虚拟机回滚所有变化,但由于矿工已经完成了价值 20k 单位燃料的工作,这些燃料就被消耗了。
## 为什么燃料费会变得如此高? {#why-can-gas-fees-get-so-high}
-燃料费高是由于以太坊广受欢迎。 在以太坊进行任何操作都需要消耗燃料,并且每个区块的燃料空间有限。 费用括计算费用、存储或操作数据费用或转移代币费用,这些操作消耗不同数量的“燃料”单位。 随着去中心化应用程序的功能变得更加复杂,智能合约执行的操作数量也会增加,即每个交易在有限大小的区块内占用更多空间。 如果需求太大,用户必须提供更高的小费来尝试高出其他用户的出价。 小费更高便更有可能让你的交易进入下一区块。
+燃料费高是由于以太坊广受欢迎。 在以太坊进行任何操作都需要消耗燃料,并且每个区块的燃料空间有限。 费用括计算费用、存储或操作数据费用或转移代币费用,这些操作消耗不同数量的“燃料”单位。 随着去中心化应用程序的功能变得更加复杂,智能合约执行的操作数量也会增加,即每笔交易在有限大小的区块内占用更多空间。 如果需求量太大,用户必须提供更高的小费,力争使出价高于其他用户的交易。 小费越高,交易进入下一个区块的可能性就越大。
-光靠燃料价格并不能实际决定我们必须对特定交易支付的金额。 为了计算交易费,我们必须将使用的燃料乘以交易费,后者以 gwei 为单位。
+光靠燃料价格并不能实际决定我们必须为特定交易支付的金额。 为了计算交易费,我们必须将使用的燃料乘以基础燃料费,后者以 Gwei 为单位。
## 减少燃料成本的举措 {#initiatives-to-reduce-gas-costs}
-以太坊[可扩展性升级](/upgrades/)应该最终解决部分燃料费用问题,并让以太坊平台能够每秒处理数千个交易并全面扩容。
+以太坊[可扩展性升级](/upgrades/)应该最终解决部分燃料费用问题,并让以太坊平台能够每秒处理数千个交易,从而全面扩容。
-二层网络扩容是一项主要举措,可大大优化燃料成本、用户体验和可扩展性。 [有关二层网络扩容的更多信息](/developers/docs/scaling/#layer-2-scaling)。
+二层网络扩容是一项主要举措,可大大优化燃料成本、用户体验和可扩展性。 [更多关于二层网络扩容的信息](/developers/docs/scaling/#layer-2-scaling)。
## 降低燃料成本的策略 {#strategies-for-you-to-reduce-gas-costs}
-如果你希望降低以太币的燃料费用,可以设置小费来表明交易的优先级。 矿工将“处理”并执行每单位燃料小费更高的交易,因为他们可以保留你支付的小费,矿工不太愿意执行小费较低的交易。
+如果你希望降低以太币的燃料成本,可以设置小费来表明交易的优先级。 矿工将“处理”并执行每单位燃料小费更高的交易,因为他们可以保留你支付的小费;矿工不太愿意执行小费较低的交易。
-如果想要监控燃料价格,从而以较少的费用发送以太币,你可以使用多种不同的工具,例如:
+如果想要监控燃料价格,用较少的费用发送以太币,你可以使用多种不同的工具,例如:
- [Etherscan](https://etherscan.io/gastracker) _交易 gas 价格估算器_
- [Blocknative ETH Gas Estimator](https://chrome.google.com/webstore/detail/blocknative-eth-gas-estim/ablbagjepecncofimgjmdpnhnfjiecfm) _支持类型 0 传统交易和类型 2 EIP-1559 交易的 gas 估算 Chrome 插件。_
diff --git a/src/content/translations/zh/developers/docs/intro-to-ether/index.md b/src/content/translations/zh/developers/docs/intro-to-ether/index.md
index 9de96f4600b..5cbaea4874c 100644
--- a/src/content/translations/zh/developers/docs/intro-to-ether/index.md
+++ b/src/content/translations/zh/developers/docs/intro-to-ether/index.md
@@ -61,7 +61,7 @@ Gwei(giga-wei 的缩写),常用于描述以太坊上的燃料费用。
当接收者地址是[智能合约](/developers/docs/smart-contracts/)时,在智能合约执行其代码后,这些转账的以太币可用于支付燃料费用。
-[关于交易的更多信息](/developers/docs/transactions/)
+[有关交易的更多信息](/developers/docs/transactions/)
## 查询 ETH {#querying-ether}
@@ -75,4 +75,4 @@ Gwei(giga-wei 的缩写),常用于描述以太坊上的燃料费用。
- [以太坊白皮书](/whitepaper/):以太坊原始提案 这份资料包括了对 ETH 及其创建动机的整体描述。
- [Gwei 计算器](https://www.alchemy.com/gwei-calculator):使用这个 Gwei 计算器可以轻松地换算 wei、Gwei 和 ETH。 只需输入任何数量的 wei、Gwei 或 ETH,就能够自动换算。
-_还有哪些社区资源对您有所帮助? 请编辑本页面并添加!_
+_还有哪些社区资源对你有所帮助? 请编辑本页面并添加!_
diff --git a/src/content/translations/zh/developers/docs/intro-to-ethereum/index.md b/src/content/translations/zh/developers/docs/intro-to-ethereum/index.md
index 426f7fa66ff..63d5a90fde5 100644
--- a/src/content/translations/zh/developers/docs/intro-to-ethereum/index.md
+++ b/src/content/translations/zh/developers/docs/intro-to-ethereum/index.md
@@ -38,7 +38,7 @@ lang: zh
任何广播交易请求的参与者还必须向网络提供一定数量的以太币作为奖金。 网络将把这种奖金奖励给最终验证交易、执行交易、将其提交到区块链并广播到网络的任何人。
-支付的以太币数量对应于进行计算所需的时间。 这类奖励也可以防止恶意参与者通过请求执行无穷计算或资源密集型脚本来故意堵塞网络,因为这些参与者必须为自己的计算时间付费。
+支付的以太币数量对应于进行计算所需的资源。 这类奖励也可以阻止恶意参与者通过请求执行无穷计算或其他资源密集型脚本来故意堵塞网络,因为这些参与者必须为计算资源付费。
以太币还用于通过以下三种主要方式为网络提供加密经济安全性:1) 作为一种奖励方式,奖励提议区块或指出其他验证者不诚实行为的验证者;2) 由验证者抵押,作为遏制不诚实行为的抵押品 — 如果验证者试图行为不端,它们的以太币可能会被销毁;3) 用于对新提议的区块的“投票”进行加权,并影响共识机制的分叉选择部分。
@@ -109,7 +109,7 @@ lang: zh
- [以太坊白皮书](/whitepaper/)
- [所以以太坊到底如何工作?](https://www.preethikasireddy.com/post/how-does-ethereum-work-anyway)- _Preethi Kasireddy_
-_还有哪些社区资源对你有所帮助? 请编辑本页面以添加!_
+_还有哪些社区资源对你有所帮助? 请编辑本页面并添加!_
## 相关教程 {#related-tutorials}
diff --git a/src/content/translations/zh/developers/docs/mev/index.md b/src/content/translations/zh/developers/docs/mev/index.md
index d39e58384b0..0b510ff6ccc 100644
--- a/src/content/translations/zh/developers/docs/mev/index.md
+++ b/src/content/translations/zh/developers/docs/mev/index.md
@@ -6,57 +6,57 @@ lang: zh
最大可提取价值 (MEV) 是指通过在区块中添加和排除交易并更改区块中的交易顺序,可以从区块生产中提取的超过标准区块奖励和燃料费用的最大值。
-### 矿工可提取价值
+### 矿工可提取价值 {#miner-extractable-value}
-这一概念最先应用在[工作量证明](/developers/docs/consensus-mechanisms/pow/)的背景下,最初被称为“矿工可提取价值”。 这是因为在工作量证明中,矿工掌握了交易的包含、排除和顺序。 然而,在通过[合并](/upgrades/merge)过渡为权益证明后,验证者将负责这些角色,而挖矿将不再适用。 此处介绍的价值提取方法在这次过渡后仍将保留,因此需要更改名称。 为了继续使用相同的首字母缩写词以便确保延续性,同时保持相同基本含义,现在使用“最大可提取价值”作为更具包容性的替代词。
+最大可提取价值首先应用于[工作量证明](/developers/docs/consensus-mechanisms/pow/)背景下,最初称为“矿工可提取价值”。 这是因为在工作量证明中,矿工掌握了交易的包含、排除和顺序。 然而,自从通过[合并](/upgrades/merge)过渡到权益证明以来,验证者一直负责这些角色,并且挖矿不再是以太坊协议的一部分。 但是,价值提取方法仍然存在,因此现在使用的是术语“最大可提取价值”。
-## 先决条件 {#prerequisites}
+## 前提条件 {#prerequisites}
-请确保您熟悉 [交易](/developers/docs/transactions/), [区块](/developers/docs/blocks/), [gas](/developers/docs/gas/), 和 [挖矿](/developers/docs/consensus-mechanisms/pow/mining/) 熟悉 [dapps](/dapps/) 和 [DeFi](/defi/) 也很有帮助。
+确保你已熟悉[交易](/developers/docs/transactions/)、[区块](/developers/docs/blocks/)、[权益证明](/developers/docs/consensus-mechanisms/pos)和[燃料](/developers/docs/gas/)。 熟悉 [dapps](/dapps/) 和 [DeFi](/defi/) 也很有帮助。
## MEV 提取 {#mev-extraction}
-理论上讲,矿工可提取价值的累积完全取决于矿工,因为矿工是唯一能保证可获利的挖矿行为得到执行的一方(至少是在当前的工作量证明链中是这样 — 这将在[合并](/upgrades/merge/)后发生改变)。 但实际上,大部分 MEV 是由称为“搜索人”的独立网络参与者提取的。 搜索人在区块链数据上运行复杂的算法来检测盈利的 MEV 机会,并且有机器人自动将这些盈利交易提交到网络。
+从理论上讲,最大可提取价值完全属于验证者,因为他们是唯一可以保证执行有利可图的最大可提取价值机会的一方。 但实际上,大部分 MEV 是由称为“搜索人”的独立网络参与者提取的。 搜索人在区块链数据上运行复杂的算法来检测盈利的 MEV 机会,并且有机器人自动将这些盈利交易提交到网络。
-矿工确实能够获得全额 MEV 的一部分,因为搜索人愿意支付高昂的 gas 费用(向矿工支付),以换取将他们的盈利交易纳入区块的更高机会。 假定搜索人在经济上是合理的。 搜索人愿意支付的 gas 费将是 MEV 的 100% 的金额(因为如果 gas 费更高, 搜索人将亏钱)。
+无论如何,验证者确实会获得全部最大可提取价值金额的一部分,因为搜索者愿意支付高昂的燃料费用(这些费用将归验证者所有),以换取将其有利可图的交易纳入一个区块的更高可能性。 假定搜索人在经济上是合理的。搜索人愿意支付的燃料费将是 MEV 的 100% 的金额(因为如果燃料费更高,搜索人将亏钱)。
-在这种情况下,对于一些高度竞争的 MEV 机会,例如 [DEX arbitrage](#mev-examples-dex-arbitrage), 搜索者可能必须向矿工支付 90% 甚至更多的 MEV 总收入,因为很多人同时想运行同样的套利交易。 这是因为,确保套利交易运行的唯一方法是提交最高 gas 费用的交易。
+这样一来,对于一些竞争激烈的最大可提取价值机会,例如[去中心化交易所套利](#mev-examples-dex-arbitrage),搜索者可能不得不将其最大可提取价值总收入的 90% 甚至更多作为燃料费用支付向验证者,因为很多人都想进行同样有利可图的套利交易。 这是因为,确保套利交易运行的唯一方法是提交最高 gas 费用的交易。
### 燃料高尔夫 {#mev-extraction-gas-golfing}
-这种动态使得 “gas 高尔夫”——编程交易——能够使用最少数量的 gas——这成为一种竞争优势。 因为它允许搜索人设置较高的 gas 价格,同时保持总 gas 费不变(因为使用 gas 费 = gas 价格\* gas 用量)。
+这种动态使得“燃料高尔夫”——编程交易——能够使用最少数量的燃料——这成为一种竞争优势。因为它允许搜索人设置较高的燃料价格,同时保持总燃料费不变(因为使用燃料费 = 燃料价格\* 燃料用量)。
-一些著名的 gas 高尔夫技术包括:使用用长串零开头的地址(如: [0x000000000000C521824EaFf97Eac7B73B084ef9306](https://etherscan.io/address/0x0000000000c521824eaff97eac7b73b084ef9306)),因为他们的需要的存储空间较少 (因而 gas 也减少); 并留下很小 [ERC-20](/developers/docs/standards/tokens/erc-20/) 令牌余额在合约中, 因为相比于更新储存插槽,初始化存储槽需要更多的 gas (余额为 0 时)。 寻找如何更多的减少 gas 使用是搜索人在积极研究的一个领域。
+一些著名的燃料高尔夫技术包括:使用用长串零开头的地址(如:[0x0000000000C521824EaFf97Eac7B73B084ef9306](https://etherscan.io/address/0x0000000000c521824eaff97eac7b73b084ef9306)),因为他们的需要的存储空间较少(因而燃料也减少);并留下很小 [ERC-20](/developers/docs/standards/tokens/erc-20/) 令牌余额在合约中,因为相比于更新储存插槽,初始化存储插槽需要更多的燃料(余额为 0 时)。 寻找如何更多的减少 gas 使用是搜索人在积极研究的一个领域。
### 通用领跑者 {#mev-extraction-generalized-frontrunners}
-一些搜索人并没有编写复杂的算法来检测盈利的 MEV 机会,而是运行通用的领跑者。 通用的领跑者是监控内存池以检测盈利交易的机器人。 领跑者将复制潜在的盈利交易代码,用领跑者的地址替换其地址。然后在本地执行交易,重复检查修改后的交易是否给领跑者地址带来利润。 如果交易确实有利可图,领跑者将以更替地址和更高的 gas 价格提交修改后的交易。 “领跑”原始交易并获取原始搜索人的 MEV。
+一些搜索人并没有编写复杂的算法来检测盈利的 MEV 机会,而是运行通用的领跑者。 通用的领跑者是监控内存池以检测盈利交易的机器人。 领跑者将复制潜在的盈利交易代码,用领跑者的地址替换其地址。然后在本地执行交易,重复检查修改后的交易是否给领跑者地址带来利润。 如果交易确实有利可图,领跑者将以更替地址和更高的燃料价格提交修改后的交易。“领跑”原始交易并获取原始搜索人的 MEV。
### Flashbots {#mev-extraction-flashbots}
-Flashbots 是一个独立的项目,它将 go-ethereum 客户端扩展,提供的服务使搜索人能够向矿工提交 MEV 交易,而不向公共内存池披露。 这就防止了交易被通用领跑者领跑。
-
-截至本文撰写时,MEV 交易的很大一部分是通过 Flashbots 来进行的,这意味着通用的领跑人不如过去那样有效。
+Flashbots 是一个独立项目,它通过一项服务扩展执行客户端,该服务允许搜索者将最大可提取价值交易提交给验证者,而无需将它们透露给公共内存池。 这就防止了交易被通用领跑者领跑。
## MEV 相关案例 {#mev-examples}
-MEV 以几种方式出现在区块链上。
+最大可提取价值以几种方式出现在区块链上。
### 去中心化交易所 (DEX) 套利 {#mev-examples-dex-arbitrage}
-[去中心化交易所](/glossary/#dex) (DEX) 套利是最简单和最著名的 MEV 机会。 因此,它也是最具竞争性的。
+[去中心化交易所](/glossary/#dex) (DEX) 套利是最简单和最著名的最大可提取价值机会。 因此,它也是竞争最激烈的。
-它的作用就像这样:如果两种 DEXes 以两种不同的价格提供一个通证。 有人可以在较低价格的 DEX 上购买通证,然后在交易中以较高价格的 DEX 出售它。 多亏了区块链的机制,这是真实的,无风险的套利。
+它的作用原理就像这样:如果有两个去中心化交易所以两种不同的价格提供一种代币,有人可以通过一笔原子交易,在价格较低的去中心化交易所购买此代币,并在价格较高的去中心化交易所将其出售。 得益于区块链的机制,这是真实的无风险套利。
-[这是一个有利可图的套利交易的示例](https://etherscan.io/tx/0x5e1657ef0e9be9bc72efefe59a2528d0d730d478cfc9e6cdd09af9f997bb3ef4), 在这个交易中,一个搜索人将 1, 000 ETH 变成了 1,045 ETH,它利用 ETH/DAI 交易对在 Uniswap 和 Sushiswap 的不同价格。
+[这是一个有利可图的套利交易示例](https://etherscan.io/tx/0x5e1657ef0e9be9bc72efefe59a2528d0d730d478cfc9e6cdd09af9f997bb3ef4),在此交易中,一名搜索者利用以太币/DAI 对在 Uniswap 和 Sushiswap 的不同价格,将 1, 000 个以太币变成了 1,045 个以太币。
### 清算 {#mev-examples-liquidations}
-贷款协议的清算提供了另一个众所周知的 MEV 机会。
+借贷协议清算提供了另一个众所周知的最大可提取价值机会。
+
+Maker 和 Aave 等借贷协议要求用户存入一些抵押品(例如以太币)。 然后将这些存入的抵押品借出给其他用户。
-通过要求用户存放某种抵押品 (如 ETH) 的方式出借协议,如 Maker 和 Aave 的功能。 然后,用户可以根据需要从其他人处借入不同的资产和通证(例如,如果他们想对 MakerDAO 治理方案进行投票,他们可以借入 MKR,如果他们想在 Sushis Swap 上赚取一部分交易费用,他们可以借入 SUSHI),最高可借入其存放抵押品的一定金额-例如,30%(准确的借用功率百分比由协议确定)。 在这种情况下,他们从其他通证借出的用户充当出借人。
+然后,用户可以根据他们的需要从其他人那里借入资产和代币(例如,如果你想在 MakerDAO 治理提案中投票,你可以借用 MKR),最高可达他们所存抵押品的一定比例。 例如,如果借款金额不超过 30%,则将 100 DAI 存入协议的用户最多可以借入价值 30 DAI 的另一种资产。 该协议确定了确切的借款能力百分比。
-随着借款人抵押品价值的波动,他们的借款能力也会波动。 如果由于市场波动,借入资产的价值超过其抵押品价值的 30%(同样,准确的百分比由协议确定,协议通常允许任何人清算抵押品,立即偿还贷款人(这类似于传统金融中的 [追加保证金通知](https://www.investopedia.com/terms/m/margincall.asp))。 如果清算,借款人通常必须支付大笔清算费, 其中有些是流向变现人的——这是多 MEV 机会出现的地方。
+随着借款人抵押品价值的波动,他们的借款能力也会波动。 如果由于市场波动,借入资产的价值超过其抵押品价值的 30%(同样,准确的百分比由协议确定,协议通常允许任何人清算抵押品,立即偿还贷款人(这类似于传统金融中的 [追加保证金通知](https://www.investopedia.com/terms/m/margincall.asp))。 如果清算,借款人通常必须支付大笔清算费,其中有些是流向变现人的——这是多 MEV 机会出现的地方。
搜索人竞相以最快的速度解析区块链数据,以确定哪些借款人可以被清算,并成为第一个提交清算交易并自行收取清算费的人。
@@ -84,7 +84,7 @@ NFT MEV 的一个显著例子发生在一个搜寻者花费 700 万美元来[购
DEX 套利、清算和三明治交易都是非常知名的 MEV 机会,对于新的搜寻者来说不太可能获利。 然而,还有一长串鲜为人知的 MEV 机会(NFT MEV 可以说是这样一个机会)。
-刚刚起步的搜索者可能会通过在这个长尾搜索 MEV 而找到更多的成功。 Flashbot 的[MEV 招聘板](https://github.com/flashbots/mev-job-board)列出了一些新兴的机会。
+刚刚起步的搜索者可能会通过在这个长尾搜索 MEV 而找到更多的成功。 Flashbots 的[MEV 招聘板](https://github.com/flashbots/mev-job-board)列出了一些新兴的机会。
## MEV 的影响 {#effects-of-mev}
@@ -102,7 +102,7 @@ MEV 并不都是坏事 - 以太坊的 MEV 既有积极的作用,也有消极
在网络层,一般的抢跑者和他们经常参与的矿工费拍卖(当两个或更多的先行者通过逐步提高自己交易的矿工费,从而使他们的交易被打包到下一个区块),导致网络拥堵和试图运行正常交易的其他人的高矿工费。
-除了区块*内*发生的,MEV 也可能会在区块*间*产生有害的影响。 如果一个区块中可用的 MEV 大大超过了标准区块的奖励,矿工可能会被激励重新开采区块并为自己捕获 MEV,导致区块链的重新组织和共识的不稳定。
+除了区块*内*发生的,MEV 也可能会在区块*间*产生有害的影响。 如果区块中可用的最大可提取价值大幅超过标准区块奖励,验证者可能会被激励重组区块并为自己捕获最大可提取价值,从而导致区块链重组和共识不稳定。
这种区块链重新组织的可能性已经[在以前的比特币区块链上探索过](https://dl.acm.org/doi/10.1145/2976749.2978408)。 随着比特币的区块奖励减半,交易费用占区块奖励的比例越来越大,于是出现了这样的情况:矿工放弃下一个区块的奖励,而用更高的费用重新开采过去的区块,这在经济上变得很合理。 随着 MEV 的发展,以太坊也可能出现同样的情况,威胁到区块链的完整性。
@@ -110,14 +110,15 @@ MEV 并不都是坏事 - 以太坊的 MEV 既有积极的作用,也有消极
2021 年初,MEV 开采量剧增,导致今年前几个月的矿工费价格极高。 Flashbots 的 MEV 中继的出现,降低了普通抢跑者的效力,并将矿工费价格拍卖带出链外,降低了普通用户的矿工费。
-虽然许多搜寻者仍在从 MEV 中赚取丰厚的利润,但随着机会变得更加知名,越来越多的搜寻者竞争相同的机会,矿工将捕获越来越多的 MEV 总收入(因为上文最初描述的那种矿工费拍卖也发生在 Flashbots 中,尽管是私下的,矿工将捕获由此产生的矿工费)。 MEV 也不是以太坊独有的,随着以太坊上的机会变得越来越有竞争力,搜索者正在转移到其他区块链,如 Binance Smart Chain,那里存在与以太坊上类似的 MEV 机会,但竞争更少。
+虽然许多搜索者仍然从最大可提取价值赚到了很多钱,但随着机会变得越来越广为人知,越来越多的搜索者争夺相同的机会,验证者将获得越来越多的最大可提取价值总收入(因为如最初描述的相同类型的燃料拍卖也在 Flashbots 中发生,尽管是私下进行的,验证者将获得由此产生的燃料收入)。 MEV 也不是以太坊独有的,随着以太坊上的机会变得越来越有竞争力,搜索者正在转移到其他区块链,如 Binance Smart Chain,那里存在与以太坊上类似的 MEV 机会,但竞争更少。
-随着 DeFi 的发展和普及,MEV 可能很快就会大大超过以太坊区块的基础奖励。 随之而来的是,自私的区块链和共识不稳定的可能性越来越大。 一些人认为这是对以太坊的生存威胁,而抑制自私挖矿是以太坊协议理论的一个积极研究领域。 目前正在探索的一个解决方案是 [MEV 奖励平滑](https://ethresear.ch/t/committee-driven-mev-smoothing/10408)。
+另一方面,从工作量证明到权益证明的过渡以及当前利用卷叠和分片持续进行以太坊扩容的努力,都在给最大可提取价值的竞争格局带来目前尚不明朗的改变。 与工作量证明中的概率模型相比,预先知道有保证的区块提议者会如何改变最大可提取价值提取的发展变化,以及当[单一秘密领导人选举](https://ethresear.ch/t/secret-non-single-leader-election/11789)和[分布式验证者技术](https://github.com/ethereum/distributed-validator-specs)得到实现后会如何颠覆当前格局,目前尚未可知。 同样,当大多数用户活动迁离以太坊并转移至其二层网络卷叠和分片时,存在哪些最大可提取价值机会还有待观察。
## 相关资源 {#related-resources}
+- [Flashbots 文档](https://docs.flashbots.net/)
- [Flashbots GitHub](https://github.com/flashbots/pm)
-- [MEV-Explore](https://explore.flashbots.net/) _MEV 交易的仪表板和实时交易浏览器_
+- [MEV-Explore](https://explore.flashbots.net/) _最大可提取价值交易的仪表板和实时交易浏览器_
## 延伸阅读 {#further-reading}
@@ -127,3 +128,4 @@ MEV 并不都是坏事 - 以太坊的 MEV 既有积极的作用,也有消极
- [逃离黑暗森林](https://samczsun.com/escaping-the-dark-forest/)
- [Flashbos:在 MEV 危机中抢跑](https://medium.com/flashbots/frontrunning-the-mev-crisis-40629a613752)
- [@bertcmiller's MEV 评论](https://twitter.com/bertcmiller/status/1402665992422047747)
+- [以太坊漫游指南](https://members.delphidigital.io/reports/the-hitchhikers-guide-to-ethereum)
diff --git a/src/content/translations/zh/developers/docs/nodes-and-clients/client-diversity/index.md b/src/content/translations/zh/developers/docs/nodes-and-clients/client-diversity/index.md
index 36a129891ca..18c28fb9499 100644
--- a/src/content/translations/zh/developers/docs/nodes-and-clients/client-diversity/index.md
+++ b/src/content/translations/zh/developers/docs/nodes-and-clients/client-diversity/index.md
@@ -43,11 +43,11 @@ sidebarDepth: 2
![显示客户端多样性的饼状图](./client-diversity.png) _图表数据来自 [ethernodes.org](https://ethernodes.org) 和 [ clientdiversity.org](https://clientdiversity.org/)_
-上面的两个饼图显示了执行层和共识层客户端多样性现状的快照(在 2022 年 1 月撰写本文时)。 在执行层,[Geth](https://geth.ethereum.org/) 占据绝对主导地位,[Open Ethereum ](https://openethereum.github.io/) 以极大的差距位居第二,[Erigon](https://github.com/ledgerwatch/erigon) 和 [Nethermind](https://nethermind.io/) 分别占据第三和第四,其他客户端加起来占网络的比例不到 1%。 共识层最常用的客户端 [Prysm](https://prysmaticlabs.com/#projects) 不像 Geth 那样占据绝对主导地位,但仍占有网络的 60% 以上。 [Lighthouse](https://lighthouse.sigmaprime.io/) 和 [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) 分别占据约 20% 和 约 14%,其他客户端很少使用。
+上面的两个饼图显示了执行层和共识层客户端多样性现状的快照(在 2022 年 1 月撰写本文时)。 在执行层,[Geth](https://geth.ethereum.org/) 占据绝对主导地位,[Open Ethereum ](https://openethereum.github.io/) 以极大的差距位居第二,[Erigon](https://github.com/ledgerwatch/erigon) 和 [Nethermind](https://nethermind.io/) 分别占据第三和第四,其他客户端加起来占网络的比例不到 1%。 共识层最常用的客户端 [Prysm](https://prysmaticlabs.com/#projects) 不像 Geth 那样占据绝对主导地位,但仍占有网络的 60% 以上。 [Lighthouse](https://lighthouse.sigmaprime.io/) 和 [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) 分别占据约 20% 和约 14%,其他客户端很少使用。
执行层数据于 2022 年 1 月 23 日从 [Ethernodes](https://ethernodes.org) 获得。 共识客户端的数据来自 [Michael Sproul](https://github.com/sigp/blockprint)。 共识客户端数据更难获取,因为信标链客户端并不总是具有明确痕迹来加以识别。 这些数据是使用分类算法生成的,该算法有时会混淆一些非主流客户端(点击[此处](https://twitter.com/sproulM_/status/1440512518242197516)了解更多详细信息)。 在上图中,这些含糊的分类使用了“/”符号进行处理(例如 Nimbus/Teku)。 尽管如此,很明显大部分网络都在运行 Prysm。 这些数据是一组固定区块的快照(在本例中为时隙 2048001 与 2164916 之间的信标区块),Prysm 的主导地位曾经一度更高,超过 68%。 尽管只是快照,但上图中的数值让您对客户端多样性现状有了一个清晰的全局认识。
-共识层客户端多样性的最新数据现在可在 https://clientdiversity.org/ 查阅。
+现在,可以在 [clientdiversity.org](https://clientdiversity.org/) 查阅最新的共识层客户端多样性数据。
## 执行层 {#execution-layer}
@@ -103,7 +103,7 @@ sidebarDepth: 2
- [客户端多样性的重要性](https://our.status.im/the-importance-of-client-diversity/)
- [以太坊节点服务列表](https://ethereumnodes.com/)
- [客户端多样性问题的“五个原因”](https://notes.ethereum.org/@afhGjrKfTKmksTOtqhB9RQ/BJGj7uh08)
-- [以太坊多样性及其解决方法 (YouTube)](https://www.youtube.com/watch?v=1hZgCaiqwfU)
+- [以太坊多样性及其解决方法 (Youtube)](https://www.youtube.com/watch?v=1hZgCaiqwfU)
- [clientdiversity.org](https://clientdiversity.org/)
## 相关主题 {#related-topics}
diff --git a/src/content/translations/zh/developers/docs/nodes-and-clients/index.md b/src/content/translations/zh/developers/docs/nodes-and-clients/index.md
index 9f3b2a6f6d5..ffb79467a2f 100644
--- a/src/content/translations/zh/developers/docs/nodes-and-clients/index.md
+++ b/src/content/translations/zh/developers/docs/nodes-and-clients/index.md
@@ -7,7 +7,7 @@ sidebarDepth: 2
以太坊是一个由计算机组成的分布式网络,这些计算机运行可验证区块和交易数据的软件,称为节点。 软件应用程序(客户端)必须在电脑上运行,将你的电脑变成一个以太坊节点。
-**注意:仍然可以仅运行执行客户端。 然而,在[合并](/upgrades/merge)之后,将不再可以继续这样做。 合并后,执行客户端和共识客户端必须一起运行,以使用户能够访问以太坊网络。 一些测试网(例如 Kiln、Ropsten)已经完成了它们自己的合并,这意味着仅运行执行客户端已经不足以访问这些网络,除非执行客户端与可以跟踪链头的共识客户端连接在一起。**
+**注意:现在再也不能仅运行执行客户端了。 [合并](/upgrades/merge)后,执行客户端和共识客户端必须一起运行,用户才能够访问以太坊网络。**
## 前提条件 {#prerequisites}
@@ -108,7 +108,7 @@ sidebarDepth: 2
- 全节点强制执行共识规则,因此无法欺骗它们接受不遵循规则的区块。 这在网络中提供了额外的安全性,因为如果所有节点都是轻节点,不进行完整验证,验证者可能会攻击网络。
- 如果遇到攻击并且攻破了[权益证明](/developers/docs/consensus-mechanisms/pos/#what-is-pos)加密经济防御,全节点可以执行社交恢复以选择跟随最诚实的链。
- 网络中的节点越多,网络就更加多样化和更加健壮,这是去中心化的最终目标,可实现一个抗审查的可靠系统。
-- 这些节点让依赖它们的轻量级客户端能够访问区块链数据。 在使用高峰期,需要有足够多的全节点帮助轻节点同步。 轻节点不存储整条区块链,而是通过[区块头中的状态根](/developers/docs/blocks/#block-anatomy)验证数据。 如果需要,它们可以请求区块提供更多信息。
+- 这些节点让依赖它们的轻客户端能够访问区块链数据。 在使用高峰期,需要有足够多的全节点帮助轻节点同步。 轻节点不存储整条区块链,而是通过[区块头中的状态根](/developers/docs/blocks/#block-anatomy)验证数据。 如果需要,它们可以请求区块提供更多信息。
如果你运行一个全节点,整个以太坊网络将从中受益。
@@ -122,7 +122,7 @@ sidebarDepth: 2
## 替代方法 {#alternatives}
-设置自己的节点会耗费你的时间和资源,而且你并非总是需要运行自己的实例。 在这种情况下,可以使用第三方应用程序接口提供商,如 [Infura](https://infura.io)、[Alchemy](https://alchemyapi.io) 或 [QuikNode](https://www.quiknode.io)。 另外,[ArchiveNode](https://archivenode.io/) 是一个社区资助的归档节点,旨在将以太坊区块链上的存档数据提供给无法负担它的独立开发者。 有关使用这些服务的概述,请查看[节点即服务](/developers/docs/nodes-and-clients/nodes-as-a-service/)。
+设置自己的节点会耗费你的时间和资源,而且你并非总是需要运行自己的实例。 在这种情况下,可以使用第三方应用程序接口提供商,比如 [Infura](https://infura.io)、[Alchemy](https://alchemyapi.io)、[Chainstack](https://chainstack.com) 或 [QuikNode](https://www.quiknode.io)。 另外,[ArchiveNode](https://archivenode.io/) 是一个社区资助的归档节点,旨在将以太坊区块链上的存档数据提供给无法负担它的独立开发者。 有关使用这些服务的概述,请查看[节点即服务](/developers/docs/nodes-and-clients/nodes-as-a-service/)。
如果有人在社区运行一个具有公共应用程序接口的以太坊节点,你可以[通过自定义远程过程调用](https://metamask.zendesk.com/hc/en-us/articles/360015290012-Using-a-Local-Node)将轻量级钱包(如 Metamask)指向社区节点,并获得比一些随机受信任的第三方更强的隐私性。
@@ -130,41 +130,43 @@ sidebarDepth: 2
## 执行客户端(原“Eth1 客户端”) {#execution-clients}
-以太坊社区维护着多种开放源代码的执行客户端(以前称为“以太坊 1 客户端”,或仅称为“以太坊客户端”),它们由不同的团队使用不同的编程语言开发。 这使得网络更加强大并且更加多样性。 理想的目标是实现多样性,即没有任何客户端占据主导地位,从而减少任何单点故障。
+以太坊社区维护着多种开放源代码的执行客户端(以前称为“以太坊 1 客户端”,或仅称为“以太坊客户端”),它们由不同的团队使用不同的编程语言开发。 这使得网络更加健壮,更加[多样化](/developers/docs/nodes-and-clients/client-diversity/)。 理想的目标是实现多样性,即没有任何客户端占据主导地位,从而减少任何单点故障。
-下表按字母顺序汇总了不同的客户端。 所有这些客户端都得到积极维护,以便与网络升级保持同步、遵循当前规范并通过[客户端测试](https://github.com/ethereum/tests)。
+下表汇总了不同的客户端。 这些客户端均通过[客户端测试](https://github.com/ethereum/tests),并得到积极维护以保持与网络升级同步。
-| 客户端 | 语言 | 操作系统: | 网络 | 同步策略 | 状态缓冲 |
-| -------------------------------------------------------- | -------- | --------------------- | ----------------------------------- | ------------------------ | --------------- |
-| [Akula](https://akula.app) | Rust | Linux | 主网、Görli、Rinkeby、Ropsten 等 | 完全 | Archive、Pruned |
-| [Besu](https://pegasys.tech/solutions/hyperledger-besu/) | Java | Linux、Windows、macOS | Mainnet、Rinkeby、Ropsten、Görli 等 | 快速、完整、快照、检查点 | Archive、Pruned |
-| [Erigon](https://github.com/ledgerwatch/erigon) | Go | Linux、Windows、macOS | Mainnet、Görli、Rinkeby、Ropsten | 完全、快照 | Archive、Pruned |
-| [Geth](https://geth.ethereum.org/) | Go | Linux、Windows、macOS | Mainnet、Görli、Rinkeby、Ropsten | 快照、完全 | Archive、Pruned |
-| [Nethermind](http://nethermind.io/) | C#、.NET | Linux、Windows、macOS | Mainnet、Görli、Ropsten、Rinkeby 等 | 快照,快速 | Archive、Pruned |
+| 客户端 | 语言 | 操作系统: | 网络 | 同步策略 | 状态缓冲 |
+| ----------------------------------------------- | -------- | --------------------- | ----------------------------------------- | ------------------------------ | --------------- |
+| [Geth](https://geth.ethereum.org/) | Go | Linux、Windows、macOS | 主网、Sepolia、Görli、Ropsten、Rinkeby | 快照、完全 | Archive、Pruned |
+| [Nethermind](http://nethermind.io/) | C#、.NET | Linux、Windows、macOS | 主网、Sepolia、Görli、Ropsten、Rinkeby 等 | 快照(不提供服务)、快速、完全 | Archive、Pruned |
+| [Besu](https://besu.hyperledger.org/en/stable/) | Java | Linux、Windows、macOS | 主网、Sepolia、Görli、Ropsten、Rinkeby 等 | 快速、完全 | Archive、Pruned |
+| [Erigon](https://github.com/ledgerwatch/erigon) | Go | Linux、Windows、macOS | 主网、Sepolia、Görli、Rinkeby、Ropsten 等 | 完全 | Archive、Pruned |
+| [Akula](https://akula.app) | Rust | Linux | 主网、Sepolia、Görli、Rinkeby、Ropsten | 完全 | Archive、Pruned |
-有关支持网络的更多信息,请阅读[以太坊网络](/developers/docs/networks/)。
+**注意,OpenEthereum [已废弃](https://medium.com/openethereum/gnosis-joins-erigon-formerly-turbo-geth-to-release-next-gen-ethereum-client-c6708dd06dd)并已停止维护。**请谨慎使用,最好改用其他客户端实现。
-每种客户端都有独特的用例和优势,所以你应该根据自己的偏好来选择。 多样性使得实现方式能够侧重于不同的功能和用户群。 你可能想根据功能、支持、编程语言或许可证选择一种客户端。
+有关受支持网络的更多信息,请仔细阅读[以太坊网络](/developers/docs/networks/)。
+
+每种客户端都有独特的用例和优势,所以你应该根据自己的偏好来选择。 多样性使得实现能够侧重于不同的功能和用户群。 你可能想根据功能、支持、编程语言或许可证选择一种客户端。
### Besu {#besu}
-Hyperledger Besu 是一种企业级以太坊客户端,面向公共和许可网络。 它运行包括追踪到 GraphQL 在内的所有以太坊主网功能,可进行广泛的监控,并通过开放的社区渠道以及面向企业的商业服务等级协议获得 ConsenSys 支持。 Besu 用 Java 语言编写,并依照 Apache 2.0 获得许可。
+Hyperledger Besu 是一种企业级以太坊客户端,面向公共网络和许可网络。 它运行包括追踪到 GraphQL 在内的所有以太坊主网功能,可进行广泛的监控,并通过开放的社区渠道以及面向企业的商业服务等级协议获得 ConsenSys 支持。 Besu 用 Java 语言编写,并依照 Apache 2.0 获得许可。
-Besu 广泛的[文档](https://besu.hyperledger.org/en/stable/)将指导你了解有关其功能和设置的所有详细信息。
+Besu 提供大量[相关文档](https://besu.hyperledger.org/en/stable/),将指导你了解有关其功能和设置的所有详细信息。
### Erigon {#erigon}
-Erigon 以前称为 Turbo‐Geth,最初是 Go Ethereum 的一个分叉,注重速度和磁盘空间效率。 Erigon 是以太坊的一个完全重新架构的实现,目前用 Go 编写,但正在开发其他语言的实现,例如 [Akula](https://medium.com/@vorot93/meet-akula-the-fastest-ethereum-implementation-ever-built-58eaca244c39)。 Erigon 的目标是成为更快、模块化程度更高和更优化的以太坊实现。 它可以在 3 天内使用大约 2TB 的磁盘空间执行完整的存档节点同步。
+Erigon 以前称为 Turbo‐Geth,最初是 Go Ethereum 的一个分叉,注重速度和磁盘空间效率。 Erigon 是一个完全重新架构的以太坊实现,目前用 Go 语言编写,但正在开发其他语言的实现,例如 [Akula](https://medium.com/@vorot93/meet-akula-the-fastest-ethereum-implementation-ever-built-58eaca244c39)。 Erigon 的目标是成为更快、模块化程度更高和更优化的以太坊实现。 它可以在 3 天内使用大约 2TB 的磁盘空间执行完整的存档节点同步。
### Go Ethereum {#geth}
Go Ethereum(简称 Geth)是最早实现的以太坊协议之一。 目前,它是使用最为广泛的客户端,拥有最大的用户群,为用户和开发者提供各种工具。 它用 Go 语言编写,完全开源,并依照 GNU LGPL v3 获得许可。
-在其[相差文档](https://geth.ethereum.org/docs/)中了解有关 Geth 的更多信息。
+在[相关文档](https://geth.ethereum.org/docs/)中了解有关 Geth 的更多信息。
### Nethermind {#nethermind}
-Nethermind 是使用 C# .NET 技术栈创建的以太坊实现,获得 LGPL-3.0 许可,可在包括 ARM 在内的所有主要平台上运行。 它在以下方面表现出了优越性能:
+Nethermind 是使用 C# .NET 技术栈创建的以太坊实现,依照 LGPL-3.0 获得许可,可在包括 ARM 在内的所有主要平台上运行。 它在以下方面表现出了优越性能:
- 优化虚拟机
- 状态访问
@@ -174,53 +176,58 @@ Nethermind 也有[详细的相关文档](https://docs.nethermind.io)、强大的
## 共识客户端(原“Eth2”客户端) {#consensus-clients}
-有多种共识客户端(以前称为“以太坊 2”客户端)支持[共识升级](/upgrades/beacon-chain/)。 在[合并](/upgrades/merge/)之后,它们运行信标链并向执行客户端提供权益证明共识机制。
+有多种共识客户端(以前称为“以太坊 2”客户端)支持[共识升级](/upgrades/beacon-chain/)。 它们运行信标链,并且将在[合并](/upgrades/merge/)后向执行客户端提供权益证明共识机制。
[查看共识客户端](/upgrades/get-involved/#clients)。
-| 客户端 | 语言 | 操作系统: | 网络 |
-| ------------------------------------------------------------- | ---------- | --------------------- | ------------------------------------- |
-| [Lighthouse](https://lighthouse.sigmaprime.io/) | Rust | Linux、Windows、macOS | Beacon Chain、Goerli、Pyrmont |
-| [Lodestar](https://lodestar.chainsafe.io/) | TypeScript | Linux、Windows、macOS | Beacon Chain、Goerli |
-| [Nimbus](https://nimbus.team/) | Nim | Linux、Windows、macOS | Beacon Chain、Goerli |
-| [Prysm](https://docs.prylabs.network/docs/getting-started/) | Go | Linux、Windows、macOS | Beacon Chain、Gnosis、Goerli、Pyrmont |
-| [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) | Java | Linux、Windows、macOS | Beacon Chain、Gnosis、Goerli、Sepolia |
+| 客户端 | 语言 | 操作系统: | 网络 |
+| ------------------------------------------------------------- | ---------- | --------------------- | ---------------------------------------------------- |
+| [Lighthouse](https://lighthouse.sigmaprime.io/) | Rust | Linux、Windows、macOS | 信标链、Goerli、Pyrmont、Sepolia、Ropsten 等 |
+| [Lodestar](https://lodestar.chainsafe.io/) | TypeScript | Linux、Windows、macOS | 信标链、Goerli、Sepolia、Ropsten 等 |
+| [Nimbus](https://nimbus.team/) | Nim | Linux、Windows、macOS | 信标链、Goerli、Sepolia、Ropsten 等 |
+| [Prysm](https://docs.prylabs.network/docs/getting-started/) | Go | Linux、Windows、macOS | 信标链、Gnosis、Goerli、Pyrmont、Sepolia、Ropsten 等 |
+| [Teku](https://consensys.net/knowledge-base/ethereum-2/teku/) | Java | Linux、Windows、macOS | 信标链、Gnosis、Goerli、Sepolia、Ropsten 等 |
### Lighthouse {#lighthouse}
-Lighthouse 是依据 Apache-2.0 许可协议用 Rust 语言编写的共识客户端实现。 它由 Sigma Prime 维护,自信标链创世以来一直保持稳定且可投入生产。 各种企业、质押池和个人都依赖它。 从台式电脑到复杂的自动化部署,它的目标是在各种环境中实现安全、高性能和互操作性。
+Lighthouse 是一种共识客户端实现,它用 Rust 语言编写,并依照 Apache-2.0 获得许可。 它由 Sigma Prime 维护,自信标链创世以来一直保持稳定且可直接投入生产。 各类企业、质押池和个人都依赖它。 从台式电脑到复杂的自动化部署,Lighthouse 的目标是在各种环境中实现安全、高性能和互操作性。
-相关文档可以在 [Lighthouse Book](https://lighthouse-book.sigmaprime.io/) 中找到。
+相关文档可以在 [Lighthouse 手册](https://lighthouse-book.sigmaprime.io/)中找到。
### Lodestar {#lodestar}
-Lodestar 是依据 LGPL-3.0 许可协议用 Typescript 语言编写的生产就绪共识客户端实现。 它由 ChainSafe Systems 维护,是面向独立质押人、开发者和研究人员的最新共识客户端。 Lodestar 由信标节点和验证者客户端组成,由以太坊协议的 JavaScript 实现提供支持。 Lodestar 旨在通过轻量级客户端提高以太坊的可用性,让更多开发者获得可访问性,并进一步促进生态系统多样性。
+Lodestar 是一种生产就绪共识客户端实现,它用 Typescript 语言编写,并依照 LGPL-3.0 获得许可。 它由 ChainSafe Systems 维护,是面向单独质押人、开发者和研究人员的最新共识客户端。 Lodestar 由信标节点和验证者客户端组成,由以太坊协议的 JavaScript 实现提供支持。 Lodestar 旨在通过轻客户端提高以太坊的可用性,让更多开发者获得可访问性,并进一步促进生态系统多样性。
-更多信息可以在我们的 [Lodestar 网站](https://lodestar.chainsafe.io/)上找到。
+更多信息可以在 [Lodestar 网站](https://lodestar.chainsafe.io/)找到。
### Nimbus {#nimbus}
-Nimbus 是依据 Apache-2.0 许可协议用 Nim 语言编写的共识客户端实现。 它是一种可供独立质押人和质押池使用的生产就绪客户端。 Nimbus 专为提高资源效率而设计,可同样轻松地在资源有限的设备和企业级基础设施上运行,而不会影响稳定性或奖励性能。 更少的资源占用意味着客户端在网络处于压力下时具有更大的安全边际。
+Nimbus 是一种共识客户端实现,它用 Nim 语言编写,并依照 Apache-2.0 获得许可。 它是一种供单独质押人和质押池使用的生产就绪客户端。 Nimbus 专为提高资源效率而设计,可同样轻松地在资源有限的设备和企业级基础设施上运行,并且不会影响稳定性或奖励性能。 更少的资源占用意味着客户端在网络处于压力下时具有更大的安全边际。
+
+它由 Trinity 实现。 其原理类似于快速同步,但是还会下载执行最新区块所需的数据,这样用户可以在开始后的最初几分钟内查询链上信息。
+
+- 首先同步状态,并让你可以在几分钟内查询远程过程调用。
+- 仍处于开发阶段,所以并不完全可靠,后台同步速度较慢,远程过程调用响应可能失败。
-相关文档可以在 [Nimbus 指南](https://nimbus.guide/)中找到。
+在 [Nimbus 相关文档中了解更多信息](https://nimbus.guide/)
### Prysm {#prysm}
-Prysm 是一种功能齐全的开源共识客户端,它依据 GPL-3.0 许可协议用 Go 语言编写。 它具有可选的 Web 应用程序用户界面,并将家庭用户和机构用户的用户体验、相关文档和可配置性放在首位。
+Prysm 是一种功能齐全的开源共识客户端,它用 Go 语言编写,并依照 GPL-3.0 获得许可。 它具有可选的 Web 应用程序用户界面,并将个人用户和机构用户的用户体验、相关文档和可配置性放在首位。
访问 [Prysm 相关文档](https://docs.prylabs.network/docs/getting-started/)了解更多信息。
### Teku {#teku}
-Teku 是最初的信标链初始客户端之一。 除了常规目标(安全性、稳健性、稳定性、可用性、性能)外,Teku 还特别致力于恪守全部各类共识客户端标准。
+Teku 是最早的信标链初始客户端之一。 除了常规目标(安全性、稳健性、稳定性、可用性、性能)外,Teku 还特别致力于恪守全部各类共识客户端标准。
-Teku 提供了非常灵活的部署选项。 信标节点和验证者客户端可以作为单个进程一起运行,这对于独立质押人来说非常方便,或者可以单独运行节点以进行复杂的质押操作。 此外,Teku 与 [Web3Signer](https://github.com/ConsenSys/web3signer/) 完全可互操作,用于为密钥安全性签名并提供罚没防范措施。
+Teku 提供了非常灵活的部署选项。 信标节点和验证者客户端可以作为单个进程一起运行,这对于单独质押人来说非常方便,或者在处理复杂的质押操作时节点可以各自运行。 此外,Teku 实现了与 [Web3Signer](https://github.com/ConsenSys/web3signer/) 的完全互操作性,用于为密钥安全性签名并提供罚没防范措施。
-Teku 是用 Java 语言编写的,并获得 Apache 2.0 许可。 它由 ConsenSys 的 Protocols 团队开发,该团队还负责 Besu 和 Web3Signer。 在 [Teku 相关文档](https://docs.teku.consensys.net/en/latest/)中了解更多信息。
+Teku 用 Java 语言编写,并依照 Apache 2.0 获得许可。 它由 ConsenSys 的 Protocols 团队开发,该团队还负责 Besu 和 Web3Signer。 在 [Teku 相关文档](https://docs.teku.consensys.net/en/latest/)中了解更多信息。
## 同步模式 {#sync-modes}
-为了关注和验证网络中的最新数据,以太坊客户端需要与最新的网络状态同步。 同步方法如下:从对等节点下载数据,用加密方法验证其完整性,并构建一个本地区块链数据库。
+为了关注和验证网络中的最新数据,以太坊客户端需要与最新网络状态同步。 同步方法如下:从对等节点下载数据,用加密方法验证其完整性,并构建一个本地区块链数据库。
同步模式代表了这个过程的不同方法,并进行了不同的折衷。 客户端在实现同步算法方面也各不相同。 有关部署的具体细节,请参考你所选客户端的官方文档。
@@ -238,33 +245,39 @@ Teku 是用 Java 语言编写的,并获得 Apache 2.0 许可。 它由 ConsenS
快速同步下载所有区块(包括区块头、交易和收据),验证所有区块头,下载区块状态并对照区块头进行验证。
- 依赖共识机制的安全性。
-- 同步只需要几个小时。
+- 完成同步只需要几个小时。
#### 轻量同步 {#light-sync}
-轻客户端同步模式下载所有区块头、区块数据并对其中一些进行随机验证。 仅从信任的检查点开始同步区块链信息。
+轻客户端同步模式下载所有区块头和区块数据,并对其中一些进行随机验证。 仅从信任的检查点开始同步区块链信息。
- 仅获取最新状态,同时依赖于对开发者和共识机制的信任。
-- 客户端在几分钟内便可以使用当前网络状态。
+- 几分钟内客户端便可以使用并且具有当前网络状态。
-[有关轻客户端的更多信息](https://www.parity.io/blog/what-is-a-light-client/)
+[更多关于轻客户端的信息](https://www.parity.io/blog/what-is-a-light-client/)
#### 快照同步 {#snap-sync}
-快照同步是同步客户端的最新方法,由 Geth 团队首创。 使用对等节点提供的动态快照,检索所有帐户和存储数据但不下载中间字典树节点,然后在本地重建默克尔树。
+快照同步是最新的客户端同步方法,由 Geth 团队首创。 使用对等节点提供的动态快照,可以检索所有帐户和存储数据但不下载中间前缀树节点,然后在本地重建默克尔树。
-- 最快同步策略,目前是以太坊主网默认设置
+- 最快的同步策略,目前是以太坊主网默认设置
- 节省大量磁盘使用和网络带宽,同时不影响安全
-[有关快照同步的更多信息](https://github.com/ethereum/devp2p/blob/master/caps/snap.md)
+[更多关于快照同步的信息](https://github.com/ethereum/devp2p/blob/master/caps/snap.md)
-### 共识层同步模式 {#consensus-layer-sync-modes}
+| 客户端 | 磁盘大小(快速同步) | 磁盘大小(完整存档) |
+| ------------ | -------------------- | -------------------- |
+| Geth | 400GB+ | 6TB+ |
+| OpenEthereum | 280GB+ | 6TB+ |
+| Nethermind | 500GB+ | 12TB+ |
+| Besu | 750GB+ | 5TB+ |
+| Erigon | 未提供 | 1TB+ |
#### 乐观同步 {#optimistic-sync}
-乐观同步是一种合并后同步策略,旨在选择加入和向后兼容,允许执行节点通过已建立的方法进行同步。 执行引擎可以在不进行完全验证的情况下*乐观地*导入信标区块,找到最新的区块头,然后使用上述方法开始同步链。 然后,在执行客户端更新之后,它将通知共识客户端信标链中交易的有效性。
+乐观同步是一种合并后同步策略,旨在选择加入和向后兼容,允许执行节点通过已建立的方法进行同步。 执行引擎可以在不进行完全验证的情况下*乐观地*导入信标区块,找到最新区块头,然后使用上述方法开始同步链。 然后,在执行客户端更新之后,它将通知共识客户端信标链中交易的有效性。
-[有关乐观同步的更多信息](https://github.com/ethereum/consensus-specs/blob/dev/sync/optimistic.md)
+[更多关于乐观同步的信息](https://github.com/ethereum/consensus-specs/blob/dev/sync/optimistic.md)
#### 检查点同步 {#checkpoint-sync}
@@ -272,15 +285,15 @@ Teku 是用 Java 语言编写的,并获得 Apache 2.0 许可。 它由 ConsenS
实际上,这意味着你的节点连接到远程服务,以下载最近的最终确定状态并从该点继续验证数据。 提供数据的第三方要受到信任,应谨慎选择。
-有关[检查点同步](https://notes.ethereum.org/@djrtwo/ws-sync-in-practice)的更多信息
+更多关于[检查点同步](https://notes.ethereum.org/@djrtwo/ws-sync-in-practice)的信息
## 延伸阅读 {#further-reading}
-互联网上有许多关于以太坊客户端的信息。 以下是一些可能有用的资源。
+互联网上充斥着大量关于以太坊客户端的信息。 以下是一些可能有用的资源。
-- [以太坊 101 - 第二部分 - 了解节点](https://kauri.io/ethereum-101-part-2-understanding-nodes/48d5098292fd4f11b251d1b1814f0bba/a) _- Wil Barnes,2019 年 2 月 13 日_
-- [运行以太坊全节点:勉励者指南](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _- Justin Leroux,2019 年 11 月 7 日_
-- [运行以太坊节点](https://docs.ethhub.io/using-ethereum/running-an-ethereum-node/) _- ETHHub,经常更新_
+- [以太坊 101 - 第二部分 - 了解节点](https://kauri.io/ethereum-101-part-2-understanding-nodes/48d5098292fd4f11b251d1b1814f0bba/a) _– Wil Barnes,2019 年 2 月 13 日_
+- [运行以太坊全节点:勉励者指南](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _– Justin Leroux,2019 年 11 月 7 日_
+- [运行以太坊节点](https://docs.ethhub.io/using-ethereum/running-an-ethereum-node/) _– ETHHub,定期更新_
## 相关主题 {#related-topics}
@@ -290,4 +303,4 @@ Teku 是用 Java 语言编写的,并获得 Apache 2.0 许可。 它由 ConsenS
## 相关教程 {#related-tutorials}
- [运行 Geth 节点](/developers/tutorials/run-light-node-geth/) _– 如何下载、安装和运行 Geth。 涵盖同步模式、JavaScript 控制台等等。_
-- [通过写入 MicroSD 卡将 Raspberry Pi 4 变成验证者节点 - 安装指南](/developers/tutorials/run-node-raspberry-pi/) _- 写入你的 Raspberry Pi 4,插入网线,连接固态磁盘并给设备供电,将 Raspberry Pi 4 变成运行执行层(主网)和/或共识层(信标链/验证者)的以太坊全节点。_
+- [通过写入 MicroSD 卡将树莓派 4 变成验证者节点 – 安装指南](/developers/tutorials/run-node-raspberry-pi/) _– 写入你的树莓派 4,插入网线,连接固态硬盘并给设备供电,将树莓派 4 变成运行执行层(主网)和/或共识层(信标链/验证者)的以太坊全节点。_
diff --git a/src/content/translations/zh/developers/docs/nodes-and-clients/nodes-as-a-service/index.md b/src/content/translations/zh/developers/docs/nodes-and-clients/nodes-as-a-service/index.md
index 90b73028ac7..0183d21a419 100644
--- a/src/content/translations/zh/developers/docs/nodes-and-clients/nodes-as-a-service/index.md
+++ b/src/content/translations/zh/developers/docs/nodes-and-clients/nodes-as-a-service/index.md
@@ -5,11 +5,11 @@ lang: zh
sidebarDepth: 2
---
-## 介绍 {#Introduction}
+## 简介 {#Introduction}
运行自己的以太坊节点可能会比较困难,特别是在刚开始时或在快速扩展时。 许多服务都可以为你运行优化的节点基础设施,藉此,你可以专注于开发你的应用程序或产品。 我们将解释节点服务运行的原理以及它们的优缺点,如果有兴趣着手开始,我们将为你列出供应商。
-## 前置要求 {#prerequisites}
+## 前提条件 {#prerequisites}
如果你还不了解什么是节点和客户端,请查看[节点和客户端](/developers/docs/nodes-and-clients/)。
@@ -221,7 +221,7 @@ sidebarDepth: 2
- 功能
- 专用和共享节点
- 仪表板
- - 在拉丁美洲不同地区的多个托管服务提供商上托管 AWS
+ - 在拉丁美洲不同地区的多个托管服务提供商上托管亚马逊网络服务
- Prysm 和 Lighthouse 客户端
- [**SettleMint**](https://console.settlemint.com/)
- [相关文档](https://docs.settlemint.com/)
diff --git a/src/content/translations/zh/developers/docs/nodes-and-clients/run-a-node/index.md b/src/content/translations/zh/developers/docs/nodes-and-clients/run-a-node/index.md
index 37eb8b532da..19677a3224d 100644
--- a/src/content/translations/zh/developers/docs/nodes-and-clients/run-a-node/index.md
+++ b/src/content/translations/zh/developers/docs/nodes-and-clients/run-a-node/index.md
@@ -1,5 +1,5 @@
---
-title: 启动您自己的以太坊节点
+title: 启动自己的以太坊节点
description: 如何运行自己的以太坊客户端简介
lang: zh
sidebarDepth: 2
@@ -21,7 +21,7 @@ sidebarDepth: 2
本页面将指导你做出这些决定,并帮助你找到运行以太坊实例的最合适方式。
-要选择客户端实现,请查看所有可用的主网就绪[执行客户端](/developers/docs/nodes-and-clients/#execution-clients)和[共识客户端](/developers/docs/nodes-and-clients/#consensus-clients),并了解[客户端多样性](/developers/docs/client-diversity)。
+要选择客户端实现,请查看所有可用的主网就绪[执行客户端](/developers/docs/nodes-and-clients/#execution-clients)和[共识客户端](/developers/docs/nodes-and-clients/#consensus-clients),并了解[客户端多样性](/developers/docs/nodes-and-clients/client-diversity)。
决定是在自己的[硬件还是云端](#local-vs-cloud)运行软件,同时考虑客户端的[要求](#requirements)。
@@ -98,8 +98,8 @@ sidebarDepth: 2
| 客户端 | 磁盘大小(快照同步) | 磁盘大小(完整存档) |
| ---------- | -------------------- | -------------------- |
-| Geth | 400GB 以上 | 12TB 以上 |
-| Nethermind | 400GB 以上 | 12TB 以上 |
+| Geth | 500GB+ | 12TB 以上 |
+| Nethermind | 500GB+ | 12TB 以上 |
| Besu | 800GB 以上 | 12TB 以上 |
| Erigon | 未提供 | 2.5TB 以上 |
@@ -133,7 +133,7 @@ sidebarDepth: 2
以下是一些可以帮助你安装和控制客户端的项目,只需单击几下即可:
- [DappNode](https://docs.dappnode.io/get-started/installation/custom-hardware/installation/overview/) - DappNode 不仅仅可以在供应商提供的机器上安装。 该软件、实际的节点启动器和具有许多功能的控制中心可以在任意硬件上使用。
-- [eth-docker](https://eth-docker.net/) - 使用 Docker 进行的自动化设置,专注于简便和安全的质押,需要基本的终端和 Docker 知识,向更高级的用户推荐。
+- [eth-docker](https://eth-docker.net/docs/About/Overview/) - 使用 Docker 进行的自动化设置,专注于简便和安全的质押,需要基本的终端和 Docker 知识,向更高级的用户推荐。
- [Stereum](https://stereum.net/ethereum-node-setup/) - 通过 SSH 连接在远程服务器上安装客户端的启动器,配备 GUI 设置指南、控制中心和许多其他特征。
- [NiceNode](https://www.nicenode.xyz/) - 提供简便用户体验的启动器,可在你的计算机上运行节点。 只需选择客户端并单击几下即可启动它们。 仍在开发中。
@@ -145,7 +145,7 @@ sidebarDepth: 2
#### 获取客户端软件 {#getting-the-client}
-首先,你需要获取你喜欢的[执行客户端](/developers/docs/nodes-and-clients/#execution-clients)和[共识客户端](developers/docs/nodes-and-clients/#consensus-clients)软件。
+首先,你需要获取自己喜欢的[执行客户端](/developers/docs/nodes-and-clients/#execution-clients)和[共识客户端](/developers/docs/nodes-and-clients/#consensus-clients)软件。
可以只下载适合你的操作系统和架构的可执行应用程序或安装包。 始终验证下载安装包的签名和校验和。 一些客户端还提供存储库或 Docker 镜像,以便于安装和更新。 所有客户端都是开源的,因此你也可以从源代码构建它们。 这是一种更高级的方法,但在某些情况下,它可能是必需的。
@@ -160,7 +160,7 @@ sidebarDepth: 2
- [Geth](https://geth.ethereum.org/downloads/)
- [Nethermind](https://downloads.nethermind.io/)
-还值得注意的是,客户端多样性是[执行层的问题](/developers/docs/client-diversity/#execution-layer)。 建议读者考虑运行非主流执行客户端。
+还值得注意的是,客户端多样性是[执行层上的问题](/developers/docs/nodes-and-clients/client-diversity/#execution-layer)。 建议读者考虑运行非主流执行客户端。
##### 共识客户端 {#consensus-clients}
@@ -172,7 +172,7 @@ sidebarDepth: 2
[客户端多样性](/developers/docs/nodes-and-clients/client-diversity/)对于运行验证者的共识节点至关重要。 如果大多数验证者都在运行单一客户端实现,那么网络安全就会面临风险。 因此,建议考虑选择非主流客户端。
-[查看最新的网络客户端使用情况](https://clientdiversity.org/)并了解有关[客户端多样性](/developers/docs/client-diversity)的更多信息。
+[查看最新的网络客户端使用情况](https://clientdiversity.org/),并了解关于[客户端多样性](/developers/docs/nodes-and-clients/client-diversity)的更多信息。
##### 验证软件 {#verifying-the-software}
@@ -210,23 +210,21 @@ sha256sum teku-22.6.1.tar.gz
- 系统有正确的时间和日期。
- 路由器和防火墙接受监听端口上的连接。 默认情况下,以太坊客户端使用监听 (TCP) 端口和探测端口 (UDP),两者均默认为 30303。
-首先在测试网上运行客户端,这有助于确保一切正常工作。 [运行 Geth 轻节点](/developers/tutorials/run-light-node-geth/)应该会有所帮助。
+首先在测试网上运行客户端,这有助于确保一切正常工作。
你需要在一开始就声明所有非默认的客户端配置。 可以使用标记或配置文件声明你的首选配置。 每种客户端的功能集和配置语法都不同。 请查看你的客户端相关文档,了解具体细节。
执行客户端和共识客户端通过[引擎应用程序接口](https://github.com/ethereum/execution-apis/tree/main/src/engine)中指定的经过身份验证的端点进行通信。 为了连接到共识客户端,执行客户端必须在已知路径上生成 [`jwtsecret`](https://jwt.io/)。 出于安全和稳定性的原因,客户端应该在同一台机器上运行,并且两种客户端都必须知道该路径,因为该路径用于验证它们之间的本地远程过程调用连接。 执行客户端还必须为经过身份验证的应用程序接口定义一个监听端口。
-此令牌由客户端软件自动生成,但在某些情况下,例如在合并前测试期间,你可能需要自己生成该令牌。 你可以通过运行以下命令生成它:
+此令牌由客户端软件自动生成,但在某些情况下,你可能需要自己生成它。 可以使用 [OpenSSL](https://www.openssl.org/) 生成该令牌:
```
openssl rand -hex 32 > jwtsecret
```
-**请注意,建议目前仅在测试网(例如 Kiln、Ropsten、Sepolia、Goerli)上连接执行客户端和共识客户端,并等待合并就绪的客户端版本,然后在主网上重复进行此过程。**
-
#### 运行执行客户端 {#running-an-execution-client}
-本节将指导你启动执行客户端。 它仅提供基本配置的示例,该配置将使用以下设置启动客户端:
+本节将指导你启动执行客户端。 它仅提供基本配置示例,该配置将使用以下设置启动客户端:
- 指定要连接的网络,在我们的示例中为主网
- 然而,你可以选择[一种测试网](/developers/docs/networks/),对你的设置进行初步测试
@@ -237,7 +235,7 @@ openssl rand -hex 32 > jwtsecret
- 为经过身份验证的应用程序接口定义 `jwtsecret` 的路径
- 确保将示例路径替换为客户端可以访问的真实路径,例如 `/tmp/jwtsecret`
-请记住,这只是一个基本示例,所有其他设置都将设置为默认值。 请关注每种客户端的相关文档以了解默认值、设置和功能。 有关更多功能的信息,例如运行验证者、监测等,请参考具体客户端的相关文档。
+请记住,这只是一个基本示例,所有其他设置都将设置为默认值。 请关注每种客户端的相关文档以了解默认的值、设置和功能。 有关更多功能的信息,例如运行验证者、监测等,请参考具体客户端的相关文档。
> 请注意,示例中的反斜杠 `\` 仅用于设置格式;配置标记可以在一行中定义。
@@ -261,11 +259,11 @@ Besu 还带有一个启动器选项,它会询问一系列问题并生成配置
besu --Xlauncher
```
-Besu [相关文档](https://besu.hyperledger.org/en/latest/HowTo/Get-Started/Starting-node/)包含其他选项和配置详细信息。
+[Besu 相关文档](https://besu.hyperledger.org/en/latest/HowTo/Get-Started/Starting-node/)包含更多选项和配置详细信息。
##### 运行 Erigon
-此示例在主网上启动 Erigon,将区块链数据存储在 `/data/ethereum`,启用 JSON RPC,定义允许的命名空间,并启用身份验证以连接由 `jwtsecret` 路径定义的共识客户端。
+本示例在主网上启动 Erigon,将区块链数据存储在 `/data/ethereum` 下,启用 JSON RPC,定义允许的命名空间,并启用身份验证以连接由 `jwtsecret` 路径定义的共识客户端。
```
erigon --chain mainnet \
@@ -274,11 +272,11 @@ erigon --chain mainnet \
--authrpc.jwtsecret=/path/to/jwtsecret
```
-默认情况下,Erigon 使用 8GB 硬盘执行完全同步,这将产生超过 2TB 的存档数据。 确保 `datadir` 指向有足够可用空间的磁盘,或者查看可以修剪不同类型数据的 `--prune` 标记。 查看 Erigon 的 `--help` 了解更多信息。
+默认情况下,对于内存为 8GB 及机械硬盘设置,Erigon 执行完全同步,这将产生超过 2TB 存档数据。 确保 `datadir` 指向有足够可用空间的磁盘,或者考虑可以修剪不同类型数据的 `--prune` 标记。 查看 Erigon 的 `--help` 了解更多信息。
##### 运行 Geth
-此示例在主网上启动 Geth,将区块链数据存储在 `/data/ethereum`,启用 JSON RPC 并定义允许的命名空间。 它还启用了身份验证,以便连接需要使用 `jwtsecret` 路径的共识客户端,并启用了定义允许哪些连接的选项,在我们的示例中仅允许来自 `localhost` 的连接。
+本示例在主网上启动 Geth,将区块链数据存储在 `/data/ethereum` 下,启用 JSON RPC 并定义允许的命名空间。 它还启用了身份验证以便连接需要使用 `jwtsecret` 路径的共识客户端,并启用了定义允许哪些连接的选项,在我们的示例中仅允许来自 `localhost` 的连接。
```
geth --mainnet \
@@ -288,11 +286,11 @@ geth --mainnet \
--authrpc.jwtsecret=/path/to/jwtsecret
```
-查看[相关文档了解所有配置选项](https://geth.ethereum.org/docs/interface/command-line-options)并了解有关[运行 Geth 和共识客户端](https://geth.ethereum.org/docs/interface/consensus-clients)的更多信息。
+查看[相关文档了解所有配置选项](https://geth.ethereum.org/docs/interface/command-line-options)并了解关于[运行 Geth 和共识客户端](https://geth.ethereum.org/docs/interface/consensus-clients)的更多信息。
##### 运行 Nethermind
-Nethermind 提供各种[安装选项](https://docs.nethermind.io/nethermind/first-steps-with-nethermind/getting-started)。 该软件包附带各种二进制文件,包括一个带有引导式设置的启动器,它将帮助您以交互方式创建配置。 或者,你会找到可执行文件 Runner,可以使用配置标记运行它。 默认情况下启用 JSON RPC。
+Nethermind 提供各种[安装选项](https://docs.nethermind.io/nethermind/first-steps-with-nethermind/getting-started)。 该软件包附带各种二进制文件,包括一个带有引导式设置的启动器,它将帮助你以交互方式创建配置。 或者,你会找到可执行文件 Runner,并且可以使用配置标记运行它。 默认情况下启用 JSON RPC。
```
Nethermind.Runner --config mainnet \
@@ -302,19 +300,17 @@ Nethermind.Runner --config mainnet \
Nethermind 相关文档提供了有关运行 Nethermind 和共识客户端的[完整指南](https://docs.nethermind.io/nethermind/first-steps-with-nethermind/running-nethermind-post-merge)。
-执行客户端将启动其核心功能及所选端点,并开始寻找对等节点。 在成功发现对等节点后,客户端开始同步。 合并后,执行客户端等待来自共识客户端的连接。 当客户端成功同步到最新状态时,最新的区块链数据将可用。
+执行客户端将启动其核心功能及所选端点,并开始寻找对等节点。 成功发现对等节点后,该客户端开始同步。 执行客户端将等待来自共识客户端的连接。 当客户端成功同步到最新状态时,最新的区块链数据将可用。
#### 启动共识客户端 {#starting-the-consensus-client}
共识客户端必须以正确的端口配置启动,才能与执行客户端建立本地远程过程调用连接。 共识客户端必须使用公开的执行客户端端口作为配置参数运行。
-共识客户端也需要执行客户端的 `jwt-secret` 的路径,以便对它们之间的远程过程调用连接进行身份验证。 与上面的执行示例类似,每种共识客户端都有一个配置标记,它将 jwt 令牌文件路径作为参数。 此路径必须与提供给执行客户端的 `jwtsecret` 路径一致。
-
-如果你打算运行验证者,确保添加一个配置标记,指定费用接收者的以太坊地址。 这是积攒你的验证者以太币奖励的地址。 每种共识客户端都有一个选项,例如 `--suggested-fee-recipient=0xabcd1` 将以太坊地址作为参数。
+共识客户端还需要执行客户端的 `jwt-secret` 的路径,以便对它们之间的远程过程调用连接进行身份验证。 与上面的执行示例类似,每种共识客户端都有一个配置标记,它将 jwt 令牌文件的路径作为参数。 此路径必须与提供给执行客户端的 `jwt-secret` 路径一致。
-**请注意,我们建议先等待合并就绪的客户端版本,再在以太坊主网上执行此操作 - 目前只需在 Kiln、Ropsten、Sepolia 或 Goerli 等测试网上练习**
+如果你打算运行验证者,确保添加一个配置标记以指定接收费用的以太坊地址。 这是为你的验证者积攒以太币奖励的地址。 每种共识客户端都有一个将以太坊地址作为参数的选项,例如 `--suggested-fee-recipient=0xabcd1`。
-在测试网上启动信标节点时,你可以使用公共端点进行[检查点同步](https://notes.ethereum.org/@launchpad/checkpoint-sync),大大节省同步时间。
+在测试网上启动信标节点时,可以使用公共端点进行[检查点同步](https://notes.ethereum.org/@launchpad/checkpoint-sync),从而大大节省同步时间。
#### 运行共识客户端
@@ -327,8 +323,8 @@ lighthouse beacon_node
--network mainnet \
--datadir /data/ethereum \
--http \
- --execution.urls http://127.0.0.1:8551 \
- --jwt-secret="/path/to/jwtsecret" \
+ --execution-endpoint http://127.0.0.1:8551 \
+ --execution-jwt /path/to/jwtsecret \
```
##### 运行 Lodestar
@@ -346,7 +342,7 @@ lodestar beacon \
##### 运行 Nimbus
-Nimbus 带有共识客户端和执行客户端。 它也可以在各种设备上运行,甚至可以在算力很一般的设备上运行。 [安装依赖项和 Nimbus](https://nimbus.guide/quick-start.html) 之后,你可以运行它的共识客户端:
+Nimbus 包括共识客户端和执行客户端。 它也可以在各种设备上运行,甚至可以在算力很一般的设备上运行。 [安装依赖项和 Nimbus](https://nimbus.guide/quick-start.html) 后,你可以运行它的共识客户端:
```
nimbus_beacon_node \
@@ -364,7 +360,7 @@ Prysm 带有脚本,可实现轻松自动安装。 详细信息可以在 [Prysm
./prysm.sh beacon-chain \
--mainnet
--datadir /data/ethereum \
- --http-web3provider=http://localhost:8551 \
+ --execution-endpoint=http://localhost:8551 \
--jwt-secret=/path/to/jwtsecret
```
@@ -377,71 +373,73 @@ teku --network mainnet \
--ee-jwt-secret-file "/path/to/jwtsecret" \
```
-在 Teku [相关文档](https://docs.teku.consensys.net/en/22.8.0/HowTo/Prepare-for-The-Merge/)中了解有关运行合并就绪 Teku 设置的更多信息。
-
-共识客户端连接到执行客户端以读取存款合约并识别验证者。 它还连接到其他对等信标节点,并从创世块开始同步共识时隙。 当它到达当前时段时,信标应用程序接口将可供你的验证者使用。 详细了解[信标节点应用程序接口](https://eth2docs.vercel.app/)。
+当共识客户端连接到执行客户端读取存款合约并识别验证者时,它也连接到其他对等信标节点并开始从创世块同步共识时隙。 信标节点达到当前时段后,信标应用程序接口将可供验证者使用。 了解更多关于[信标节点应用程序接口](https://eth2docs.vercel.app/)的信息。
### 添加验证者 {#adding-validators}
-共识客户端充当验证者客户端连接的信标节点。 每种共识客户端都有自己的验证者软件,后者在各客户端文档中都有详细描述。
+共识客户端充当信标节点,让验证者来连接。 每种共识客户端都有自己的验证者软件,后者在各自的相关文档中都有详细描述。
+
+运行自己的验证者便可以进行[单独质押](https://ethereum.org/en/staking/solo/),这是支持以太坊网络的最有影响和去信任的方法。 然而,单独质押需要存入 32 个以太币。 若想在自己的节点上运行验证者并质押较少数量的以太币,您可能会对由无需许可的节点运营商组成的去中心化池感兴趣,例如 [Rocket Pool](https://rocketpool.net/node-operators)。
-运行你自己的验证者便可以进行[单独质押](https://ethereum.org/en/staking/solo/),这是最有影响力和免信任的方式。 单独质押需要存入 32 个以太币。 为了在自己的节点上运行验证者并质押较少数量的以太币,由无需许可的节点运营商组成的去中心化池可能会你引起你的兴趣,例如 [Rocket Pool](https://rocketpool.net/node-operators)。
+开始质押和生成验证者密钥的最简单方法是使用 [Goerli 测试网质押启动板](https://goerli.launchpad.ethereum.org/),它允许你通过[在 Goerli 上运行节点](https://notes.ethereum.org/@launchpad/goerli)来测试你的设置。 当准备好使用主网时,你可以使用[主网质押启动板](https://launchpad.ethereum.org/)重复这些步骤。
-开始质押和验证者密钥生成的最简单方法是使用 [Prater 测试网质押启动板](https://prater.launchpad.ethereum.org/),它允许你通过 [在 Goerli 上运行节点](https://notes.ethereum.org/@launchpad/goerli)来测试你的设置。 当准备好使用主网时,你可以使用[主网质押启动板](https://launchpad.ethereum.org/)重复这些步骤。 确保核查[主网准备情况检查清单](https://launchpad.ethereum.org/en/merge-readiness),以便在合并期间顺利运行你的验证者。
+研读[质押页面](/staking)了解质押选项概述。
### 使用节点 {#using-the-node}
-执行客户端提供[远程过程调用应用程序接口端点](/developers/docs/apis/json-rpc/),在以太坊网络上,可以使用这些端点以各种方式提交交易、与智能合约交互或部署智能合约:
+执行客户端提供[远程过程调用应用程序接口端点](/developers/docs/apis/json-rpc/),在以太坊网络上,可以通过多种方式使用这些端点提交交易、与智能合约交互或部署智能合约:
- 使用合适的协议(例如,`curl`)手动调用端点
- 附加提供的控制台(例如 `geth attache`)
- 使用 web3 库在应用程序中实现端点,例如 [web3.py](https://web3py.readthedocs.io/en/stable/overview.html#overview) 和 [ethers](https://github.com/ethers-io/ethers.js/)
-不同的客户端对远程过程调用端点有不同的实现方式。 但是有一个标准 JSON-RPC,每种客户端都可以使用。 想要了解概况,[请阅读 JSON-RPC 文档](/developers/docs/apis/json-rpc/)。 需要从以太坊网络中获取信息的应用程序,可以使用此远程过程调用。 例如,受欢迎的钱包 MetaMask 可让你[连接到你自己的远程过程调用端点](https://metamask.zendesk.com/hc/en-us/articles/360015290012-Using-a-Local-Node),该端点具有卓越的隐私和安全优势。
+不同的客户端有不同的远程过程调用端点实现。 但是有一个标准 JSON-RPC 可用于每种客户端。 想要了解概况,[请阅读 JSON-RPC 文档](/developers/docs/apis/json-rpc/)。 需要从以太坊网络中获取信息的应用程序,可以使用此远程过程调用。 例如,受欢迎的钱包 MetaMask 可让你[连接到自己的远程过程调用端点](https://metamask.zendesk.com/hc/en-us/articles/360015290012-Using-a-Local-Node),该端点具有卓越的隐私和安全优势。
-共识客户端都公开了一个[信标应用程序接口](https://ethereum.github.io/beacon-APIs),可用于检查共识客户端的状态或通过使用 [Curl](https://curl.se) 等工具发送请求来下载区块和共识数据。 更多相关信息可以在每种共识客户端的相关文档中找到。
+共识客户端都公开一个[信标应用程序接口](https://ethereum.github.io/beacon-APIs),可用于检查共识客户端的状态,或者通过使用 [Curl](https://curl.se) 等工具发送请求来下载区块和共识数据。 更多相关信息可在每种共识客户端的相关文档中找到。
#### 访问远程过程调用 {#reaching-rpc}
-执行客户端 JSON-RPC 的默认端口是 `8545`,但你可以在配置中修改本地端点的端口。 默认情况下,远程过程调用接口只能在计算机的本地主机上访问。 为了让该端口可以被远程访问,可以通过将地址改为 `0.0.0.0` 公开它。 这样就可以通过本地网络或公共 IP 地址访问该端口。 大多数情况下,还需要在路由器上设置端口转发。
+执行客户端 JSON-RPC 的默认端口是 `8545`,但可以在配置中修改本地端点的端口。 默认情况下,远程过程调用接口只能在计算机的本地主机上访问。 为了让该端口可被远程访问,可以通过将地址改为 `0.0.0.0` 公开它。 这样就可以通过本地网络或公共 IP 地址访问该端口。 大多数情况下,还需要在路由器上设置端口转发。
-设置远程访问时应该保持谨慎,因为这会让互联网上的任何人都可以控制你的节点。 不怀好意者可以访问你的节点让你的系统下线,或者如果你将客户端作为钱包,他们会窃取你的资金。
+在互联网上公开端口时应保持谨慎,因为这会让互联网上的任何人都可以控制你的节点。 恶意行为者可以访问你的节点让你的系统下线,或者如果你将客户端作为钱包,他们会窃取你的资金。
-解决该问题的办法是,防止可能有危害的远程过程调用访问方法可以被修改。 例如,使用 Geth 时,可使用标记 `—http.api web3,eth,txpool` 设置修改方法。
+解决该问题的办法是,防止可能有危害的远程过程调用方法可以被修改。 例如,使用 Geth 时,可使用标记 `—http.api web3,eth,txpool` 声明可修改的方法。
-你还可以通过将 Web 服务器(如 Nginx)的服务指向客户端的本地地址和端口,以此托管对远程过程调用接口的访问。 这也使你能够设置证书,以便安全地连接到你自己的远程过程调用的 `https`。
+可以通过开发边缘层应用程序接口或 Web 服务器应用程序(如 Nginx)并将它们连接到客户端的本地地址和端口,扩展对远程过程调用接口的访问。 利用中间层还让开发者能够设置远程过程调用接口的安全 `https` 连接证书。
-设置公共可访问端点的最隐私保护也是非常简单的方法,你可以将其托管在你自己的 [Tor](https://www.torproject.org/) onion 服务上。 这将让你在本地网络外部无需静态公共 IP 地址或开放的端口也能访问此远程过程调用端口。 但是,请记住,远程过程调用只能通过 Tor 网络访问,并非所有应用程序都支持该网络,并且可能会导致连接问题。
+设置 Web 服务器、代理或外部表现层状态转换应用程序接口,并不是访问节点的远程过程调用端点的唯一方法。 另一种设置可公开访问端点且保护隐私的方法是,将节点托管在自己的 [Tor](https://www.torproject.org/) 洋葱服务上。 这将让你在本地网络外部无需静态公共 IP 地址或开放的端口也能访问此远程过程调用端口。 然而,使用此配置可能只允许通过 Tor 网络访问远程过程调用端点,然而不是所有应用程序都支持 Tor 网络,这可能会导致连接问题。
-为此,你必须创建自己的 [onion 服务](https://community.torproject.org/onion-services/)。 查看有关 onion 服务设置的[相关文档](https://community.torproject.org/onion-services/setup/)以托管你自己的服务。 你可以将其指向具有远程过程调用端口代理的 Web 服务器,或者直接指向远程过程调用。
+为此,你必须创建自己的[洋葱服务](https://community.torproject.org/onion-services/)。 查看有关洋葱服务设置的[相关文档](https://community.torproject.org/onion-services/setup/)以托管你自己的节点。 你可以将其指向 Web 服务器并通过代理指向远程过程调用端口,或者直接指向远程过程调用端口。
+
+最后,访问内部网络最流行的方式之一是通过虚拟专用网连接。 根据您的用例和需要访问节点的用户数,也许可以选择安全的虚拟专用网连接。 [OpenVPN](https://openvpn.net/) 是一种功能完善的安全套接层虚拟专用网,它使用行业标准安全套接字层/传输层安全协议实现了开放式系统互联二层或三层安全网络扩展,支持基于证书、智能卡和/或用户名/密码凭据的灵活客户端身份验证方法,并允许用户或群组特定的访问控制策略(使用应用于虚拟专用网虚拟接口的防火墙规则)。
### 运行节点 {#operating-the-node}
-应该定期监控节点,确保它正常运行。 偶尔也可能需要维护。
+你应该定期监控你的节点,确保它正常运行。 偶尔也可能需要维护。
#### 保持节点在线 {#keeping-node-online}
-你的节点不必不间断地在线,但你应该尽可能保持其在线以使其与网络保持同步。 你可以将其关闭以重新启动它,但请记住:
+你的节点不必一直在线,但你应该尽可能让节点保持在线,使其与网络保持同步。 你可以将其关闭以重新启动,但请记住:
- 如果正在向磁盘写入最近的网络状态,关闭节点可能需要花费几分钟。
-- 强制关闭会导致数据库损坏。
-- 客户端将无法与网络同步,重启后,客户端需要重新同步。 这取决于它离线的时间长短。
+- 强制关闭会破坏数据库,这可能需要你重新同步整个节点。
+- 客户端将无法与网络同步,重启后,客户端需要重新同步。 虽然节点可以从它最近一次关闭的时间开始同步,但此过程需要的时间取决于它离线的时间。
*但是,共识层的验证者节点就需要一直在线。*验证者节点离线将影响所有依赖它的服务。 如果你是为了*质押*而运行节点,应该尽可能地减少停机时间。
#### 创建客户端服务 {#creating-client-services}
-如果需要在启动时自动运行客户端,可以考虑创建客户端服务。 例如,在 Linux 服务器上,最佳做法是创建一种服务,例如使用 `systemd`,为有限权限的用户执行配置正确的客户端并自动重启。
+考虑创建一个在启动时自动运行客户端的服务。 例如,在 Linux 服务器上,最佳做法是创建一种服务,例如使用 `systemd`,为有限权限的用户执行配置正确的客户端并自动重启。
#### 更新客户端 {#updating-clients}
必须通过安装最新的安全补丁、功能和[以太坊改进提案](/eips/),让客户端软件更新到最新版本。 特别是在[硬分叉](/history/)之前,确保运行正确的客户端版本。
-> 在重要的网络更新之前,以太坊基金会在其[博客](blog.ethereum.org)上发布相关文章。 你可以[订阅这些公告](https://groups.google.com/a/ethereum.org/g/announcements),以便在你的节点需要更新时收到邮件通知。
+> 在重要的网络更新之前,以太坊基金会在其[博客](https://blog.ethereum.org)上发布相关文章。 你可以[订阅这些公告](https://groups.google.com/a/ethereum.org/g/announcements),以便在你的节点需要更新时收到邮件通知。
-更新客户端非常简单。 每种客户端在其相关文档中都有具体说明,但通常更新过程仅包括下载最新版本并使用正确的可执行文件重启。 客户端应该从上次版本开始更新,并且需要应用所有更新。
+更新客户端非常简单。 每种客户端在其相关文档中都有具体说明,但通常更新过程仅包括下载最新版本并使用正确的可执行文件重启而已。 客户端应该从上次版本开始更新,但请应用所有更新。
-每种客户端实现都有一个人类可读的版本字符串,该字符串在点对点协议中使用但也可以从命令行访问。 该版本字符串允许用户检查他们运行的客户端版本是否正确,并允许区块浏览器和用来量化网络上特定客户端的分布的其他分析工具。 有关版本字符串的更多信息,请参阅各客户端相关文档。
+每种客户端实现都有一个人类可读的版本字符串,该字符串在点对点协议中使用但也可以从命令行访问。 该版本字符串让用户可以检查他们运行的客户端版本是否正确,并允许区块浏览器和用来量化网络上特定客户端分布的其他分析工具。 更多关于版本字符串的信息,请参阅各客户端相关文档。
#### 运行额外服务 {#running-additional-services}
@@ -455,13 +453,14 @@ teku --network mainnet \
## 延伸阅读 {#further-reading}
+- [以太坊质押指南](https://github.com/SomerEsat/ethereum-staking-guides) _ – Somer Esat,定期更新_
- [指南 | 如何设置以太坊质押者以便在主网上质押](https://www.coincashew.com/coins/overview-eth/guide-or-how-to-setup-a-validator-on-eth2-mainnet) _– CoinCashew,定期更新_
- [有关在测试网上运行验证者的 ETHStaker 指南](https://github.com/remyroy/ethstaker#guides) – _ETHStaker,定期更新_
-- [以太坊质押指南](https://github.com/SomerEsat/ethereum-staking-guides) _ – Somer Esat,定期更新_
+- [以太坊质押指南](https://github.com/SomerEsat/ethereum-staking-guides)_ – Somer Esat,定期更新_
- [针对节点运营商的合并常见问题解答](https://notes.ethereum.org/@launchpad/node-faq-merge) - _2022 年 7 月_
- [分析成为已验证以太坊全节点的硬件要求](https://medium.com/coinmonks/analyzing-the-hardware-requirements-to-be-an-ethereum-full-validated-node-dc064f167902)_ - Albert Palau,2018 年 9 月 24 日_
-- [运行以太坊全节点:勉励者指南](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _- Justin Leroux,2019 年 11 月 7 日_
-- [运行以太坊节点](https://docs.ethhub.io/using-ethereum/running-an-ethereum-node/) _- ETHHub,经常更新_
+- [运行以太坊全节点:勉励者指南](https://medium.com/@JustinMLeroux/running-ethereum-full-nodes-a-guide-for-the-barely-motivated-a8a13e7a0d31) _– Justin Leroux,2019 年 11 月 7 日_
+- [运行以太坊节点](https://docs.ethhub.io/using-ethereum/running-an-ethereum-node/) _– ETHHub,定期更新_
- [在以太坊主网上运行 Hyperledger Besu 节点:优点、要求和设置](https://pegasys.tech/running-a-hyperledger-besu-node-on-the-ethereum-mainnet-benefits-requirements-and-setup/) _– Felipe Faraggi,2020 年 5 月 7 日_
- [部署具有监测堆栈的 Nethermind 以太坊客户端](https://medium.com/nethermind-eth/deploying-nethermind-ethereum-client-with-monitoring-stack-55ce1622edbd) _– Nethermind.eth,2020 年 7 月 8 日_
diff --git a/src/content/translations/zh/developers/docs/oracles/index.md b/src/content/translations/zh/developers/docs/oracles/index.md
index 85451c5f9f5..b3786d06f55 100644
--- a/src/content/translations/zh/developers/docs/oracles/index.md
+++ b/src/content/translations/zh/developers/docs/oracles/index.md
@@ -5,17 +5,11 @@ lang: zh
incomplete: true
---
-预言机是一个数据输入应用程序,它从区块链外部(链外)的数据源获取数据,并输入到区块链(链上),以供智能合约使用。预言机之所以需要,是由于在以太坊上运行的智能合约无法访问存储在区块链网络之外的信息。
+预言机是将以太坊连接到链外、真实世界信息的数据源,以便您可以在智能合约中查询数据。 例如,预测市场的去中心化应用程序使用预言机来根据事件进行结算。 预测市场可能要求您使用以太币来打赌下一任美国总统是谁。 他们将使用一个预言机来确认结果并向获胜者付款。
-赋予智能合约使用链外数据输入的能力,扩展了去中心化应用程序的价值。例如,去中心化市场预测依靠预言机来提供有关结果的信息,从而可以验证用户的预测。假设 Alice 下注 20ETH 押注谁将成为下一任美国总统,市场预测去中心化应用 dapp 需要一个预言机来确认选举结果并决定 Alice 是否有资格获得付款。
+## 前提条件 {#prerequisites}
-## 先决条件 {#prerequisites}
-
-This page assumes the reader is familiar with Ethereum fundamentals, including nodes, consensus mechanisms, and the EVM. You should also have a good grasp of smart contracts and smart contract anatomy, especially events.
-
-本页假设读者熟悉以太坊基础知识,包括节点、共识机制和 EVM。 您还应该很好地掌握智能合约和智能合约解剖结构,尤其是事件。
-
-本页假设读者熟悉以太坊基础知识,包括[节点](/developers/docs/nodes-and-clients/)、[共识机制](/developers/docs/consensus-mechanisms/)和[以太虚拟机 EVM](/developers/docs/evm/)。您还应该很好地掌握[智能合约](/developers/docs/smart-contracts/)和[智能合约结构](/developers/docs/smart-contracts/anatomy/),尤其是[事件](/glossary/#events)。
+请确保您熟悉[节点](/developers/docs/nodes-and-clients/)、[共识机制](/developers/docs/consensus-mechanisms/)和[智能合约解析](/developers/docs/smart-contracts/anatomy/),尤其是事件。
## 什么是预言机 {#what-is-an-oracle}
@@ -431,19 +425,23 @@ _我们希望有更多关于构建预言机智能合约的文档。 如果您能
**文章**
-- [什么是区块链 Oracle?](https://chain.link/education/blockchain-oracles) - _Chainlink_
+- [什么是区块链 Oracle?](https://chain.link/education/blockchain-oracles)- _Chainlink_
- [预言机](https://docs.ethhub.io/built-on-ethereum/oracles/what-are-oracles/) – _EthHub_
-- [什么是区块链预言机?](https://betterprogramming.pub/what-is-a-blockchain-oracle-f5ccab8dbd72) - _Patrick Collins_
-- [去中心化预言机:综述](https://medium.com/fabric-ventures/decentralised-oracles-a-comprehensive-overview-d3168b9a8841) – _Julien Thevenard_
-- [在以太坊部署区块链预言机](https://medium.com/@pedrodc/implementing-a-blockchain-oracle-on-ethereum-cedc7e26b49e) – _Pedro Costa_
-- [为什么智能合约无法调用应用程序接口?](https://ethereum.stackexchange.com/questions/301/why-cant-contracts-make-api-calls) - _StackExchange_
-- [我们为什么需要去中心化预言机](https://newsletter.banklesshq.com/p/why-we-need-decentralized-oracles) - _Bankless_
-- [因此您想要使用价格预言机](https://samczsun.com/so-you-want-to-use-a-price-oracle/) - _samczsun_
+- [什么是区块链预言机?](https://betterprogramming.pub/what-is-a-blockchain-oracle-f5ccab8dbd72)- _Patrick Collins_
+- [去中心化预言机:综述](https://medium.com/fabric-ventures/decentralised-oracles-a-comprehensive-overview-d3168b9a8841)– _Julien Thevenard_
+- [在以太坊部署区块链预言机](https://medium.com/@pedrodc/implementing-a-blockchain-oracle-on-ethereum-cedc7e26b49e)– _Pedro Costa_
+- [为什么智能合约无法调用应用程序接口?](https://ethereum.stackexchange.com/questions/301/why-cant-contracts-make-api-calls)- _StackExchange_
+- [我们为什么需要去中心化预言机](https://newsletter.banklesshq.com/p/why-we-need-decentralized-oracles)- _Bankless_
+- [因此您想要使用价格预言机](https://samczsun.com/so-you-want-to-use-a-price-oracle/)- _samczsun_
-**相关视频**
+**视频**
-- [预言机和区块链实用程序拓展](https://youtu.be/BVUZpWa8vpw) - _Real Vision Finance_
+- [预言机和区块链实用程序拓展](https://youtu.be/BVUZpWa8vpw)- _Real Vision Finance_
**教程**
-- [如何在 Solidity 中获取以太坊的当前价格](https://blog.chain.link/fetch-current-crypto-price-data-solidity/) - _Chainlink_
+- [如何在 Solidity 中获取以太坊的当前价格](https://blog.chain.link/fetch-current-crypto-price-data-solidity/)- _ Chainlink _
+
+**示例项目**
+
+- [采用 Solidity 为以太坊编写的完整的 Chainlink 启动项目](https://github.com/hackbg/chainlink-fullstack)-_HackBG_
diff --git a/src/content/translations/zh/developers/docs/scaling/index.md b/src/content/translations/zh/developers/docs/scaling/index.md
index c98256aee61..1dd418b795b 100644
--- a/src/content/translations/zh/developers/docs/scaling/index.md
+++ b/src/content/translations/zh/developers/docs/scaling/index.md
@@ -15,7 +15,7 @@ sidebarDepth: 3
从概念上说,我们首先将扩容分为链上扩容和链外扩容两类。
-## 前体条件 {#prerequisites}
+## 前提条件 {#prerequisites}
你应对所有基础性课题有很好的了解。 实施扩容解决方案是一项先进的任务,因为该技术没有经过多少实践检验,还在进一步研发中。
@@ -23,15 +23,15 @@ sidebarDepth: 3
这种扩容方法需要变更以太坊协议(第一层[主网](/glossary/#mainnet))。 区块分片目前是这种扩容方法的重点。
-### 区块分片 {#sharding}
+### 分片 {#sharding}
区块分片是一个横向分割数据库以扩展网络承载能力的过程。 在以太坊中,区块分片将通过创建新链(称为“分片”)来减少网络拥塞和增加每秒交易量。 这还可以减轻每位验证者的负担,因为他们不再需要处理整个网络的所有交易。
-详细了解[区块分片](/upgrades/sharding/)。
+了解更多关于[区块分片](/upgrades/sharding/)的信息。
## 链下扩容 {#off-chain-scaling}
-链下解决方案与第一层主网分开实施,无需更改现有以太坊协议。 部分解决方案称为“第二层”解决方案,直接从第一层以太坊共识中获得安全性,例如[乐观卷叠](/developers/docs/scaling/optimistic-rollups/)、[零知识卷叠](/developers/docs/scaling/zk-rollups/)或[状态通道](/developers/docs/scaling/state-channels/)。 其他解决方案包括建立不同形式的新链,这些新链单独从主网获得安全性,例如[侧链](#sidechains)或 [plasma](#plasma) 链。 这些解决方案与主网进行通信,但为了实现各种不同的目标,它们获得安全性的方式也有所不同。
+链下解决方案与第一层主网分开实施,无需更改现有以太坊协议。 部分解决方案称为“第二层”解决方案,直接从第一层以太坊共识中获得安全性,例如[乐观卷叠](/developers/docs/scaling/optimistic-rollups/)、[零知识卷叠](/developers/docs/scaling/zk-rollups/)或[状态通道](/developers/docs/scaling/state-channels/)。 其他解决方案涉及创建独立于主网获取安全性的各种形式的新链,例如[侧链](#sidechains)、[Validium](#validium) 和 [Plasma](#plasma)。 这些解决方案与主网进行通信,但为了实现各种不同的目标,它们获得安全性的方式也有所不同。
### 二层扩容 {#layer-2-scaling}
@@ -39,7 +39,7 @@ sidebarDepth: 3
第二层是解决方案的一个集体术语,用于通过处理以太坊主网(第一层)的交易,同时利用主网的强大分散安全模式,帮助扩展您的应用程序。 当网络繁忙时,交易速度会受到影响,这可能使某些类型的去中心化应用程序的用户体验变差。 而且,随着网络越来越繁忙,由于交易发送者的目标是超越对方的出价,燃料价格也随之上升。 这可能会让以太坊的使用成本非常高。
-大多数第二层解决方案均围绕着一个服务器或服务器群集,可以将它们称之为节点、验证者、操作者、排序器、区块生产者或类似术语。 根据实施情况,这些第二层节点可由使用它们的个人、企业或实体运行,或者由第三方运营商或一大群个人(与主网相似)运行。 一般而言,交易会提交给第二层节点,而非直接提交给第一层(主网)。 对于部分解决方案, 第二层实例会将它们分组,,然后锚定到第一层,之后受第一层保护且不能更改。 对于不同的第二层技术和实施而言,如何做到这一点的细节差异很大。
+大多数第二层解决方案均围绕着一个服务器或服务器群集,可以将它们称之为节点、验证者、运营商、排序者、区块生产者或类似术语。 根据实施情况,这些第二层节点可由使用它们的个人、企业或实体运行,或者由第三方运营商或一大群个人(与主网相似)运行。 一般而言,交易会提交给第二层节点,而非直接提交给第一层(主网)。 对于部分解决方案,二层网络实例会将它们分组,然后锚定到一层网络,之后受一层网络保护且不能更改。 对于不同的第二层技术和实施而言,如何做到这一点的细节差异很大。
某个特定的第二层实例可能是开放的,由许多应用程序共享,也可能由一个项目部署,专供支持该项目的应用程序。
@@ -50,38 +50,40 @@ sidebarDepth: 3
- 关于可扩容性的任何更新都不应以分散安全性为代价 - 第二层建立在以太坊的基础上。
- 有一些特定应用的第二层网络,在大规模处理资产时有它们自己的效率。
+[关于二层网络的更多信息](/layer-2/)。
+
#### 卷叠 {#rollups}
-卷叠在第一层之外执行交易执行任务,并在达成共识时,在第一层公开数据。 由于交易数据包含在第一层区块中,因此可以通过原生的以太坊安全性来保证卷叠的安全性。
+卷叠在一层网络之外执行交易,然后将数据发布到一层网络并在其中达成共识。 由于交易数据包含在一层网络区块中,因而可以通过原生的以太坊安全性来保证卷叠的安全性。
-有两种不同安全模式的卷叠:
+有两种使用了不同安全模式的卷叠:
- **乐观卷叠**:假设交易在默认情况下有效,并且在遇到挑战的情况下只通过[**欺诈证明**](/glossary/#fraud-proof)运行计算。 [关于乐观卷叠的更多信息](/developers/docs/scaling/optimistic-rollups/)。
- **零知识卷叠**:在链下运行计算并向链上提交[**有效性证明**](/glossary/#validity-proof)。 [关于零知识卷叠的更多信息](/developers/docs/scaling/zk-rollups/)。
#### 状态通道 {#channels}
-状态通道采用多签合约,使参与者能够在链下快速自由地进行交易,然后再与主网结算。 这将最大限度地减少网络拥塞、费用和延迟。 现在有两种通道:状态通道和支付通道。
+状态通道采用多重签名合约,使参与者能够在链下快速自由地进行交易,然后再与主网结算确定性。 这将最大限度减少网络拥塞、费用和延迟。 目前有两种通道:状态通道和支付通道。
了解更多关于[状态通道](/developers/docs/scaling/state-channels/)的信息。
### 侧链 {#sidechains}
-侧链是与主网并行运行且兼容以太坊虚拟机的独立区块链。 它们通过双向桥接与以太坊兼容,按照自行选择的共识规则和区块参数运行。
+侧链是与主网并行运行且兼容以太坊虚拟机的独立区块链。 它们通过双向桥接与以太坊兼容,并按照自行选择的共识规则和区块参数运行。
-了解更多有关[侧链](/developers/docs/scaling/sidechains/)的信息。
+了解更多关于[侧链](/developers/docs/scaling/sidechains/)的信息。
### 以太坊 Plasma 扩容解决方案 {#plasma}
Plasma 是一条独立的区块链,锚定至以太坊主链,并使用欺诈证明(如[乐观卷叠](/developers/docs/scaling/optimistic-rollups/))来仲裁争议。
-了解更多关于[以太坊 Plasma 扩容解决方案](/developers/docs/scaling/plasma/)的信息。
+了解更多关于 [Plasma](/developers/docs/scaling/plasma/) 的信息。
### Validium {#validium}
-Validium 链使用诸如零知识卷叠之类的有效性证明,但数据未存储在第一层以太坊链上。 这会导致每条 Validium 链每秒处理 10000 笔交易,并且可以并行运行多条链。
+Validium 链使用诸如零知识卷叠之类的有效性证明,但数据并未存储在一层以太坊链上。 这让每条 Validium 链每秒可以处理 10,000 笔交易,并且可以并行运行多条链。
-了解关于 [Validium](/developers/docs/scaling/validium/) 的更多信息。
+了解更多关于 [Validium](/developers/docs/scaling/validium/) 的信息。
## 为何需要如此多扩容解决方案? {#why-do-we-need-these}
@@ -94,13 +96,13 @@ Validium 链使用诸如零知识卷叠之类的有效性证明,但数据未
-_请注意,视频中的解释使用“第二层”这一术语指代所有链下扩容解决方案,而我们通常所说的“第二层”是指通过第一层主网共识获得安全性的链下解决方案。_
+_请注意,视频中的说明使用“二层网络”术语指代所有链下扩容解决方案,而我们通常所说的“第二层”是指通过第一层主网共识获得安全性的链下解决方案。_
## 延伸阅读 {#further-reading}
-- [以 rollup 为中心的以太坊路线图](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698) _Vitalik Buterin_
+- [以卷叠为中心的以太坊路线图](https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698) _Vitalik Buterin_
- [有关以太坊第二层扩容解决方案的最新分析](https://www.l2beat.com/)
- [评估以太坊第二层扩容解决方案:一个比较框架](https://medium.com/matter-labs/evaluating-ethereum-l2-scaling-solutions-a-comparison-framework-b6b2f410f955)
- [卷叠不完全指南](https://vitalik.ca/general/2021/01/05/rollup.html)
@@ -109,4 +111,4 @@ _请注意,视频中的解释使用“第二层”这一术语指代所有链
- [零知识区块链的可扩展性](https://ethworks.io/assets/download/zero-knowledge-blockchain-scaling-ethworks.pdf)
- [为什么卷叠 + 数据分片是高可扩展性的唯一可持续的解决办法](https://polynya.medium.com/why-rollups-data-shards-are-the-only-sustainable-solution-for-high-scalability-c9aabd6fbb48)
-_您还知道哪些社区资源对您有帮助? 请编辑本页面并进行添加!_
+_还有哪些社区资源对你有所帮助? 请编辑本页面并添加!_
diff --git a/src/content/translations/zh/developers/docs/scaling/optimistic-rollups/index.md b/src/content/translations/zh/developers/docs/scaling/optimistic-rollups/index.md
index 9162b551b54..6608b06fd55 100644
--- a/src/content/translations/zh/developers/docs/scaling/optimistic-rollups/index.md
+++ b/src/content/translations/zh/developers/docs/scaling/optimistic-rollups/index.md
@@ -1,58 +1,267 @@
---
-title: Optimistic Rollup
-description: 乐观卷叠介绍
+title: 乐观卷叠
+description: 乐观卷叠简介 — 以太坊社区使用的一种扩容解决方案
lang: zh
---
-## 先决条件 {#prerequisites}
+乐观卷叠是二层网络 (L2) 协议,该协议旨在扩展以太坊基础层的吞吐量。 它们通过在链下处理交易来减少以太坊主链上的计算量,从而显著提高处理速度。 与其他扩容解决方案(例如[侧链](/developers/docs/scaling/sidechains/))不同,乐观卷叠从主网(通过在链上发布交易结果)或从 [Plasma 链](/developers/docs/scaling/plasma/)(该链还使用欺诈证明验证以太坊上的交易,但将交易数据存储在其他地方)获取安全性。
-您应对所有基础性课题有很好的了解,并且对[以太坊扩容](/developers/docs/scaling/)有深入的了解。 实现诸如 rollup 之类的扩容解决方案是一个高阶主题,因为该技术没有经过多少实战测试,还在继续研发。
+由于计算是使用以太坊时缓慢而昂贵的部分,因此乐观卷叠可以提供高达 10-100 倍的可扩展性改进。 乐观卷叠还将交易以 `calldata` 的形式写入以太坊,从而降低用户的燃料成本。
-在寻找更适合初学者的资源? 请参阅我们的[第二层简介](/layer-2/)。
+## 前提条件 {#prerequisites}
-## 乐观卷叠 {#optimistic-rollups}
+你应该已经阅读并理解关于[以太坊扩容](/developers/docs/scaling/)和[二层网络](/layer-2/)的页面。
-乐观卷叠与第二层的以太坊主链同步进行。 它们能够实现可扩展性改进,因为它们默认不执行任何计算。 相反,它们会在一笔交易之后向主网提议新的状态或公证 (notarise) 交易。
+## 什么是乐观卷叠? {#what-is-an-optimistic-rollup}
-通过乐观卷叠,交易以 `calldata` 的形式写入以太坊主链,并通过减少燃料费用进一步优化。
+乐观卷叠是一种扩容以太坊的方法,涉及将计算和状态存储移至链下。 乐观卷叠在以太坊之外执行交易,但将交易数据作为 `calldata` 发布到主网。
-由于计算是使用以太坊缓慢而昂贵的部分,乐观卷叠可以改进高达 10-100 倍的可扩容性,具体取决于交易。 在引入[分片链](/upgrades/sharding)后,这个数字还会大大增加,因为如果交易有争议,将会产生更多的数据。
+乐观卷叠运营商将多个链下交易大批量捆绑在一起,然后再提交到以太坊。 这种方法可以将固定成本分散到每批中的多笔交易中,从而降低最终用户的费用。 乐观卷叠还使用压缩技术来减少发布在以太坊上的数据量。
-### 对交易提出异议 {#disputing-transactions}
+乐观卷叠被认为是“乐观的”,因为它们假设链下交易是有效的,并且不发布推送到链上的交易批次的有效性证明。 这一点将乐观卷叠与[零知识卷叠](/developers/docs/scaling/zk-rollups)区分开来,后者会发布链下交易的加密[有效性证明](/glossary/#validity-proof)。
-乐观卷叠并不实际计算交易,因此需要有一个机制来确保交易是合法而不是欺诈性的。 这正是欺诈证明的用武之地。 如果有人发现欺诈性交易,乐观卷叠将借助可用的状态数据,执行欺诈证明并运行交易的计算。 这意味着交易确认等待时间可能比零知识卷叠更长,因为交易可能受到质疑。
+相反,乐观卷叠依赖于欺诈证明方案来检测交易计算不正确的情况。 在以太坊上提交卷叠批次后,有一个时间窗口(称为挑战期),在此期间任何人都可以通过计算[欺诈证明](/glossary/#fraud-proof)来挑战卷叠交易的结果。
-![显示以太坊中的乐观卷叠中发生欺诈性交易时的图表](./optimistic-rollups.png)
+如果欺诈证明成功,则卷叠协议重新执行交易并相应地更新卷叠的状态。 成功的欺诈证明的另一个影响是,负责将错误执行的交易纳入区块的排序者会受到惩罚。
-运行欺诈证明计算所需的燃料甚至可以报销。 来自 Optimism 的 Ben Jones 介绍了现有的保证金制度。
+如果在挑战期过后卷叠批次仍未受到挑战(即所有交易均已正确执行),则将其视为有效并在以太坊上接受。 其他人可以继续扩建未经确认的卷叠区块,但需要注意:交易结果如果基于先前发布的错误执行交易,则将被逆转。
-"_任何可能能够采取行动帮助您证明欺诈以保护您的资金的人士,都要求您缴纳保证金。 您大概会拿出一些以太币并将它们锁定,然后说"嘿,我保证说实话"... 如果我不说实话,而且欺诈得到证实,这笔钱将会被没收。 这笔钱不仅有一部分会被没收,而且还有一部分将支付人们执行欺诈证明所消耗的燃料_“
+## 乐观卷叠如何与以太坊交互? {#optimistic-rollups-and-Ethereum}
-您可以看到,激励机制就是参与者会因欺诈而受到惩罚,也会因提供欺诈证明而获得补偿。
+乐观卷叠是为了在以太坊上运行而构建的[链下扩容解决方案](/developers/docs/scaling/#off-chain-scaling)。 每个乐观卷叠都由部署在以太坊网络上的一组智能合约管理。 乐观卷叠在以太坊主链之外处理交易,但将链下交易(批量)发布到链上的卷叠合约。 和以太坊区块链一样,此交易记录是不可变的,并形成了“乐观卷叠链”。
-### 优点和缺点 {#optimistic-pros-and-cons}
+乐观卷叠的架构包括以下部分:
-| 优点 | 缺点 |
-| ------------------------------------------------------------------------------ | ---------------------------------------------------- |
-| 您能在以太坊第一层做的任何事情,都能用乐观卷叠做,因为它兼容 EVM 和 Solidity。 | 由于可能存在对欺诈的质疑,链上交易的等待时间会很长。 |
-| 所有交易数据都存储在第一层链上,这意味着它是安全和分散的。 | 运营者可以影响交易顺序。 |
+**链上合约**:乐观卷叠的操作由在以太坊上运行的智能合约控制。 这包括存储卷叠区块、监控卷叠状态更新以及跟踪用户存款的合约。 在这个意义上,以太坊充当乐观卷叠的基础层或“一层网络”。
+
+**链下虚拟机 (VM)**:虽然管理乐观卷叠协议的合约在以太坊上运行,但卷叠协议在[以太坊虚拟机](/developers/docs/evm/)之外的另一个虚拟机上执行计算和状态存储。 链下虚拟机是应用程序所在和执行状态更改的地方;它作为乐观卷叠的上层或“第 2 层”。
+
+由于乐观卷叠旨在运行为以太坊虚拟机编写或编译的程序,因此链下虚拟机包含许多以太坊虚拟机设计规范。 此外,链上计算的欺诈证明允许以太坊网络强制执行在链下虚拟机中计算的状态更改的有效性。
+
+乐观卷叠被描述为“混合扩容解决方案”,因为虽然它们作为单独的协议存在,但它们的安全属性源自以太坊。 除了其他方面,以太坊还能保证卷叠的链下计算的正确性以及计算所依据的数据的可用性。 这使得乐观卷叠比不依赖以太坊获取安全性的纯链下扩容协议(例如,[侧链](/developers/docs/scaling/sidechains/))更安全。
+
+乐观卷叠在以下方面依赖于以太坊的主要协议:
+
+### 数据可用性 {#data-availability}
+
+如前所述,乐观卷叠将交易数据作为 `calldata` 发布到以太坊。 由于卷叠链的执行基于提交的交易,任何人都可以使用此信息(锚定在以太坊的基础层)来执行卷叠的状态并验证状态转换的正确性。
+
+数据可用性至关重要,因为如果无法访问状态数据,挑战者就无法构建欺诈证明来对无效的卷叠操作提出异议。 有了以太坊提供的数据可用性,就降低了卷叠运营商逃脱恶意行为(例如,提交无效区块)的风险。
+
+### 抗审查 {#censorship-resistance}
+
+乐观卷叠也依赖以太坊来抵抗审查。 在乐观卷叠中,中心化实体(运营商)负责处理交易并将卷叠区块提交给以太坊。 这其中有一些含义:
+
+- 卷叠运营商可以通过完全离线或拒绝生成包含某些交易的区块来审查用户。
+
+- 卷叠运营商可以通过保留 Merkle 所有权证明所需的状态数据来阻止用户提取存放在卷叠合约中的资金。 保留状态数据还可以向用户隐藏卷叠的状态,并阻止他们与卷叠进行交互。
+
+乐观卷叠通过强制运营商在以太坊上发布与状态更新相关的数据来解决这个问题。 在链上发布卷叠数据有以下好处:
+
+- 如果乐观卷叠运营商下线或停止生成交易批次,另一个节点可以使用可用数据来重现卷叠的最后状态并继续区块生产。
+
+- 用户可以使用交易数据来创建 Merkle 证明来证明资金的所有权,并从卷叠中提取他们的资产。
+
+- 用户也可以在 L1 提交他们的交易,而不是提交给排序者,在这种情况下,排序者必须在一定的时间限制内纳入交易,才能继续生产有效的区块。
+
+### 结算 {#settlement}
+
+以太坊在乐观卷叠中扮演的另一个角色是结算层。 结算层锚定整个区块链生态系统,建立安全性,并在需要仲裁的另一条链(在这种情况下为乐观卷叠)上发生争议时提供客观的确定性。
+
+以太坊主网为乐观卷叠提供了一个中心,以验证欺诈证明并解决争议。 此外,在卷叠上进行的交易只有当卷叠区块在以太坊上被接受*之后*才是最终的。 一旦卷叠交易被提交到以太坊的基础层,它就不能回滚(除非在极不可能的情况下发生链重组)。
+
+## 乐观卷叠如何工作? {#how-optimistic-rollups-work}
+
+### 交易执行和聚合 {#transaction-execution-and-aggregation}
+
+用户向“运营商”提交交易,“运营商”则是乐观卷叠上负责处理交易的节点。 运营商也称为“验证者”或“聚合者”,负责聚合交易、压缩底层数据,并在以太坊上发布区块。
+
+尽管任何人都可以成为验证者,但乐观卷叠验证者就像[权益证明系统](/developers/docs/consensus-mechanisms/pos/)一样,必须在生成区块之前提供保证金。 如果验证者发布了无效的区块或扩建了原有但无效的区块(即使他们的区块是有效的),此保证金可能被罚没。 通过这种方式,乐观卷叠利用加密经济激励措施来确保验证者诚实行事。
+
+乐观卷叠链上的其他验证者应该使用他们的卷叠状态副本来执行提交的交易。 如果验证者的最终状态与运营商提议的状态不同,他们可以发起挑战并计算欺诈证明。
+
+一些乐观卷叠可能会放弃无需许可的验证者系统并使用单个“排序者”来执行链。 与验证者一样,排序者会处理交易,生成卷叠区块,并将卷叠交易提交到 L1 链(以太坊)。
+
+排序者与常规卷叠运营商不同,因为他们对交易的排序有更大的控制力。 此外,排序者具有卷叠链的优先访问权,并且是唯一被授权向链上合约提交交易的实体。 来自非排序者节点或普通用户的交易只是在一个单独的收件箱中排队,直到排序者将它们纳入一个新批次中。
+
+#### 提交卷叠区块到以太坊 {#submitting-blocks-to-ethereum}
+
+如前所述,乐观卷叠的运营商将链下交易捆绑成一个批次,并将其发送到以太坊进行公证。 此过程涉及压缩交易相关数据并将其作为 `calldata` 发布到以太坊上。
+
+`calldata` 是智能合约中不可修改、非持久的区域,其行为与[内存](/developers/docs/smart-contracts/anatomy/#memory)非常相似。 而 `calldata` 作为区块链的[历史日志](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html?highlight=memory#logs)部分,不会存储为以太坊状态的一部分。 因为 `calldata` 不涉及以太坊状态的任何部分,所以在链上存储数据更便宜。
+
+`calldata` 关键字也在 Solidity 中用于在执行时将参数传递给智能合约函数。 `calldata` 识别在交易期间被调用的函数,并以任意字节序列的形式保存函数的输入。
+
+在乐观卷叠的上下文中,`calldata` 用于将压缩的交易数据发送到链上合约。 卷叠运营商通过调用卷叠合约中所需的函数并将压缩数据作为函数参数传递来添加新批次。 使用 `calldata` 可以降低用户费用,因为卷叠产生的大部分成本来自链上存储数据。
+
+以下是一个卷叠批量提交的[示例](https://etherscan.io/tx/0x9102bfce17c58b5fc1c974c24b6bb7a924fb5fbd7c4cd2f675911c27422a5591),以展示此概念的工作原理。 排序者调用 `appendSequencerBatch()` 方法并使用 `calldata` 将压缩的交易数据作为输入传递。
+
+### 状态承诺 {#state-commitments}
+
+在任何时间点,乐观卷叠状态(帐户、余额、合约代码等)都被组织为 [Merkle 树](/whitepaper/#merkle-trees),也称为“状态树”。 此 Merkle 树的根(状态根)引用卷叠的最新状态,经过哈希处理并存储在卷叠合约中。 链上的每个状态转换都会产生一个新的卷叠状态,运营商通过计算新的状态根来提交该状态。
+
+运营商在发布批次时需要同时提交旧状态根和新状态根。 如果旧状态根与链上合约中的现有状态根匹配,则后者被丢弃并替换为新状态根。
+
+卷叠运营商还需要为交易批次本身提交 Merkle 根。 这允许任何人通过提供 [Merkle 证明](/developers/tutorials/merkle-proofs-for-offline-data-integrity/)来证明交易包含在批次中(在 L1 上)。
+
+状态承诺,尤其是状态根,对于证明乐观卷叠中的状态变化的正确性是必要的。 卷叠合约在发布后立即接受来自运营商的新状态根,但稍后可以删除无效的状态根以将卷叠恢复到正确的状态。
+
+### 欺诈证明 {#fraud-proving}
+
+如前所述,乐观卷叠允许任何人在不提供有效性证明的情况下发布区块。 然而,为了确保链保持安全,乐观卷叠指定了一个时间窗口,在此期间任何人都可以对状态转换提出异议。 因此,卷叠块被称为“断言”,因为任何人都可以挑战它们的有效性。
+
+如果有人对断言提出异议,则卷叠协议将启动欺诈证明计算。 每种类型的欺诈证明都是交互式的 — 必须有人发布断言,然后其他人才能对其提出挑战。 不同之处在于计算欺诈证明需要多少轮交互。
+
+单轮交互式证明方案在 L1 重放有争议的交易以检测无效断言。 卷叠协议使用验证者合约模拟在 L1(以太坊)上重新执行有争议的交易,利用计算出的状态根决定谁赢得挑战。 如果挑战者关于卷叠的正确状态的声明是正确的,则运营商会受到惩罚,他们的保证金将被罚没。
+
+但是,在 L1 重新执行交易以检测欺诈需要发布单独交易的状态承诺,并增加必须在链上发布的数据卷叠。 重放交易还会产生巨大的燃料成本。 由于这些原因,乐观卷叠正在转向多轮交互式证明,以更高的效率实现相同的目标(即检测无效卷叠操作)。
+
+#### 多轮交互式证明 {#multi-round-interactive-proving}
+
+多轮交互式证明涉及断言者与挑战者之间的来回协议,由 L1 验证者合约监督,最终决定说谎方。 L2 节点对断言提出挑战后,要求断言者将有争议的断言分成相等的两半。 在这种情况下,每个单独的断言都将包含与另一个断言一样多的计算步骤。
+
+然后挑战者将选择它想要挑战的断言。 分割过程(称为“二等分协议”)一直持续到双方就*单个*执行步骤的断言发生争执。 此时,L1 合约将通过评估指令(及其结果)来解决争议,以抓住欺诈方。
+
+断言者需要提供“一步证明”来验证有争议的单步计算的有效性。 如果断言者未能提供一步证明,或者 L1 验证者认为证明无效,他们的挑战便会失败。
+
+关于此类欺诈证明的一些注意事项:
+
+1. 多轮交互式欺诈证明被认为是有效的,因为它最大限度地减少了 L1 链在争议仲裁中必须做的工作。 L1 链无需重播整个交易,而只需重新执行卷叠执行过程中的一个步骤。
+
+2. 二等分协议减少了发布在链上的数据量(无需为每笔交易发布状态提交)。 此外,乐观卷叠交易不受以太坊燃料限制的约束。 相反,乐观卷叠重新执行交易必须确保 L2 交易具有较低的燃料限制,以模拟其在单个以太坊交易中的执行。
+
+3. 恶意断言者的保证金的一部分被奖励给挑战者,而另一部分则被销毁。 销毁可以防止验证者之间的勾结;如果两个验证者串通起来发起虚假挑战,他们仍然会丧失全部质押的相当大一部分。
+
+4. 多轮交互证明需要双方(断言者和挑战者)在指定的时间窗口内执行动作。 未能在截止日期到期前采取行动会导致违约方放弃挑战。
+
+#### 为什么欺诈证明对乐观卷叠很重要 {#fraud-proof-benefits}
+
+欺诈证明很重要,因为它们促进了乐观卷叠中的*去信任确定性*。 去信任确定性是乐观卷叠的一项特性,它保证交易只要是有效的,最终将被确认。
+
+恶意节点可以尝试通过启动虚假挑战来延迟对有效卷叠区块的确认。 但是,欺诈证明最终将证明卷叠区块的有效性并使其得到确认。
+
+这也与乐观卷叠的另一个安全属性有关:链的有效性依赖于*一个*诚实节点的存在。 诚实节点可以通过发布有效断言或对无效断言提出异议来正确推进链。 无论如何,与诚实节点发生纠纷的恶意节点将在欺诈证明过程中失去其质押品。
+
+### L1/L2 互操作性 {#l1-l2-interoperability}
+
+乐观卷叠旨在与以太坊主网互操作,并允许用户在 L1 和 L2 之间传递消息和任意数据。 它们还与以太坊虚拟机兼容,因此你可以将现有的[去中心化应用程序](/developers/docs/dapps/)移植到乐观卷叠或使用以太坊开发工具创建新的去中心化应用程序。
+
+#### 1. 资产转移 {#asset-movement}
+
+##### 进入卷叠
+
+为了使用乐观卷叠,用户将以太币、ERC-20 代币和其他可接受的资产存入 L1 上卷叠的[链桥](/developers/docs/bridges/)合约中。 链桥合约会将交易中继到 L2,在那里铸造等量的资产并发送到用户在乐观卷叠中选择的地址。
+
+用户生成的交易(如 L1 > L2 存款)通常会排队,直到排序者将它们重新提交到卷叠合约。 但是,为了保持抗审查能力,如果交易延迟超过允许的最大时间,乐观卷叠允许用户直接向链上卷叠合约提交交易。
+
+一些乐观卷叠采用更直接的方法来防止排序者审查用户。 在这里,一个区块由自前一个区块以来提交给 L1 合约的所有交易(例如存款)以及卷叠链上已处理的交易共同定义。 如果排序者忽略 L1 交易,它将发布(可证明)错误的状态根;因此,一旦用户生成的消息被发布在 L1 上,排序者就不能将其延迟。
+
+##### 退出卷叠
+
+由于欺诈证明方案,从乐观卷叠中取款到以太坊更加困难。 如果用户发起一个 L2 > L1 交易以提取在 L1 上托管的资金,他们必须等到挑战期(大约持续 7 天)过去。 然而,退出过程本身相当简单。
+
+在 L2 卷叠上发起取款请求后,该交易被纳入下一批,同时用户在卷叠上的资产被销毁。 一旦批次在以太坊上发布,用户就可以计算一个 Merkle 证明来验证他们的退出交易是否包含在区块中。 然后便是等待延迟期过后完成 L1 上的交易并将资金提取到主网的问题了。
+
+为了避免在向以太坊取款前等待一周,乐观卷叠用户可以聘请**流动性提供者** (LP)。 流动性提供者承担待处理的 L2 取款的所有权,并在 L1 上向用户付款(以换取费用)。
+
+流动性提供者可以在释放资金之前检查用户取款请求的有效性(通过自行执行链)。 这样他们就可以保证交易最终会得到确认(即,去信任确定性)。
+
+#### 2. 以太坊虚拟机兼容性 {#evm-compatibility}
+
+对于开发者而言,乐观卷叠的优势在于它们与[以太坊虚拟机 (EVM)](/developers/docs/evm/) 的兼容性(或者更好的是,等效性)。 与以太坊虚拟机兼容的卷叠符合[以太坊黄皮书](https://ethereum.github.io/yellowpaper/paper.pdf)中的规范,并在字节码级别支持以太坊虚拟机。
+
+乐观卷叠中的以太坊虚拟机兼容性具有以下好处:
+
+i. 开发者可以将以太坊上的现有智能合约迁移到乐观卷叠链,而无需大量修改代码库。 这可以节省开发团队在 L2 上部署以太坊智能合约的时间。
+
+ii. 使用乐观卷叠的开发者和项目团队可以利用以太坊的基础设施。 这包括编程语言、代码库、测试工具、客户端软件、部署基础设施等。
+
+使用现有工具很重要,因为这些工具多年来已经过广泛的审核、调试和改进。 它还让以太坊开发者无需学习如何使用全新的开发堆栈构建应用程序。
+
+#### 3. 跨链合约调用 {#cross-chain-contract-calls}
+
+用户(外部拥有的账户)通过向卷叠合约提交交易或让排序者或验证者为他们执行交易来与 L2 合约进行交互。 乐观卷叠还允许以太坊上的合约帐户与 L2 合约交互,使用桥梁合约来中继消息并在 L1 和 L2 之间传递数据。 这意味着你可以在以太坊主网上编写 L1 合约,以调用属于 L2 乐观卷叠合约的函数。
+
+跨链合约调用是异步发生的 — 这意味着调用首先启动,然后再稍后执行。 这与以太坊上两个合约之间的调用不同,即调用会立即产生结果。
+
+一个跨链合约调用的例子是前文所述的代币存款。 L1 上的合约托管用户的代币,并向配对的 L2 合约发送消息,以在卷叠中铸造等量的代币。
+
+由于跨链消息调用会导致合约执行,因此发送者通常需要支付用于计算的[燃料成本](/developers/docs/gas/)。 建议设置较高的燃料限制,以防止交易在目标链上失败。 代币桥梁场景就是一个很好的例子;如果交易的 L1 端(存入代币)有效,但 L2 端(铸造新代币)由于燃料不足而失败,则存款将无法收回。
+
+最后,我们应该注意到,合约之间的 L2 > L1 消息调用需要考虑延迟(L1 > L2 调用通常在几分钟后执行)。 这是因为从乐观卷叠发送到主网的消息在挑战窗口到期之前无法执行。
+
+## 乐观卷叠费用如何运作? {#how-do-optimistic-rollup-fees-work}
+
+乐观卷叠使用类似于以太坊的燃料费方案来表示用户为每笔交易支付的费用。 乐观卷叠收取的费用取决于以下组成部分:
+
+1. **状态写入**:乐观卷叠将交易数据和区块头(由前一个区块头哈希、状态根、批处理根组成)作为 `calldata` 发布到以太坊。 以太坊交易的最低成本是 21,000 燃料。 乐观卷叠可以通过在单个区块中批量处理多笔交易(将 21k 燃料摊销到多个用户交易)来降低将交易写入 L1 的成本。
+
+2. **`calldata`**:除了基本交易费用之外,每个状态写入的成本取决于发布到 L1 的 `calldata` 大小。 `calldata` 费用目前由 [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) 监管,它规定对于 `calldata` 的非零字节和零字节费用分别为 16 单位和 4 单位燃料。 为了降低用户费用,卷叠运营商压缩交易以减少在以太坊上发布的 `calldata` 字节数。
+
+3. **L2 运营商费用**:这是支付给卷叠节点的金额,作为处理交易时产生的计算成本的补偿,就像以太坊上的矿工费一样。 卷叠节点收取的交易费用较低,因为 L2 具有更高的处理能力,并且不会面临网络拥塞,而网络拥塞会迫使以太坊上的矿工优先处理费用较高的交易。
+
+乐观卷叠应用了多种机制来降低用户的费用,包括批量交易和压缩 `calldata` 以降低数据发布成本。 你可以查看 [L2 费用跟踪器](https://l2fees.info/),实时了解使用基于以太坊的乐观卷叠的成本。
+
+## 乐观卷叠如何扩容以太坊? {#scaling-ethereum-with-optimistic-rollups}
+
+如前所述,乐观卷叠在以太坊上发布压缩的交易数据以保证数据可用性。 压缩链上发布的数据的能力对于通过乐观卷叠扩容以太坊的吞吐量至关重要。
+
+以太坊主链限制了区块可以容纳的数据量,以燃料单位计量([平均区块大小](/developers/docs/blocks/#block-size)为 1500 万燃料)。 虽然这限制了每笔交易可以使用多少燃料,但也意味着我们可以通过减少与交易相关的数据来增加每个区块处理的交易,直接提高了可扩展性。
+
+乐观卷叠使用多种技术来实现交易数据压缩并提高每秒交易量速率。 例如,这篇[文章](https://vitalik.ca/general/2021/01/05/rollup.html)将基本用户交易(发送以太币)在主网上生成的数据量与同一交易在卷叠上生成的数据量进行了比较:
+
+| 参数 | 以太坊 (L1) | 卷叠 (L2) |
+| --------- | ----------------- | ------------ |
+| Nonce | ~3 | 0 |
+| Gasprice | ~8 | 0-0.5 |
+| Gas | 3 | 0-0.5 |
+| To | 21 | 4 |
+| Value | 9 | ~3 |
+| Signature | ~68 (2 + 33 + 33) | ~0.5 |
+| From | 0(从签名中恢复) | 4 |
+| **总计** | **~112 字节** | **~12 字节** |
+
+对这些数字进行一些粗略的计算有助于显示乐观卷叠提供的可扩展性改进:
+
+1. 每个区块的目标大小是 1500 万燃料,验证一个字节的数据需要 16 个燃料。 将平均区块大小除以 16 燃料(15,000,000/16),表明一般区块可以容纳 **937,500 字节的数据**。
+2. 如果一个基本卷叠交易使用 12 个字节,那么以太坊区块平均可以处理 **78,125 个卷叠交易** (937,5000/12) 或 **39 个卷叠批次**(如果每个批次平均包含 2,000 个交易)。
+3. 如果每 15 秒在以太坊上产生一个新区块,那么卷叠的处理速度将大致达到**每秒 5,208 次交易**。 这是通过将以太坊区块可以容纳的基本卷叠交易数量 (**78,125**) 除以平均区块时间 (**15 秒**) 得出的。
+
+这是一个比较乐观的估计,因为乐观卷叠交易不可能包含以太坊上的整个区块。 但是,它可以大致了解乐观卷叠可以为以太坊用户提供多少可扩展性收益(当前实现可提供高达 2,000 交易每秒的速率)。
+
+在以太坊上引入[数据分片](/upgrades/shard-chains/)有望提高乐观卷叠的可扩展性。 由于卷叠交易必须与其他非卷叠交易共享区块空间,因此它们的处理能力受到以太坊主链上的数据吞吐量的限制。 分片将增加可供 L2 链发布每个区块的数据的空间,进一步提高卷叠的吞吐量。
+
+### 乐观卷叠的优缺点 {#optimistic-rollups-pros-and-cons}
+
+| 优点 | 缺点 |
+| -------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
+| 在不牺牲安全性或去信任的情况下提供可扩展性的巨大改进。 | 由于潜在的欺诈挑战导致交易确定性的延迟。 |
+| 交易数据存储在第 1 层链上,提高了透明度、安全性、抗审查性和去中心化性。 | 中心化卷叠运营商(排序者)可以影响交易排序。 |
+| 欺诈证明保证了去信任的确定性,并允许少数诚实节点保护链安全。 | 如果没有诚实节点,恶意运营商可以通过发布无效区块和状态承诺来窃取资金。 |
+| 计算欺诈证明对常规 L2 节点是开放的,这与需要特殊硬件的有效性证明(用于零知识卷叠中)不同。 | 安全模式依赖于至少一个诚实节点执行卷叠交易并提交欺诈证明来挑战无效的状态转换。 |
+| 卷叠受益于“去信任的活性”(任何人都可以通过执行交易和发布断言来强制链前进) | 用户必须等待一周的挑战期到期,然后才能将资金取回以太坊。 |
+| 乐观卷叠依赖于精心设计的加密经济激励措施来提高链上的安全性。 | 卷叠必须在链上发布所有交易数据,这会增加成本。 |
+| 与以太坊虚拟机和 Solidity 的兼容性允许开发者将以太坊原生智能合约移植到卷叠或使用现有工具来创建新的去中心化应用程序。 | |
### 乐观卷叠的直观解释 {#optimistic-video}
-观看 Finematics 解说乐观卷叠:
+更愿意通过视频学习? 观看 Finematics 解说乐观卷叠:
### 使用乐观卷叠 {#use-optimistic-rollups}
-乐观重叠有多种实现方式,您可以将其整合到您的去中心化应用程序中。
+乐观重叠有多种实现,你可以将其整合到你的去中心化应用程序中:
-**乐观卷叠相关阅读**
+## 阅读关于乐观卷叠的更多信息
-- [关于 Optimistic Rollup,你所需要知道的一切](https://research.paradigm.xyz/rollups)
+- [乐观卷叠如何工作(完整指南)](https://www.alchemy.com/overviews/optimistic-rollups)
+- [乐观卷叠知识大全](https://research.paradigm.xyz/rollups)
- [EthHub 上关于乐观卷叠的介绍](https://docs.ethhub.io/ethereum-roadmap/layer-2-scaling/optimistic_rollups/)
- [Arbitrum 基本指南](https://newsletter.banklesshq.com/p/the-essential-guide-to-arbitrum)
- [乐观卷叠究竟如何工作?](https://research.paradigm.xyz/optimism)
- [深入研究乐观虚拟机](https://medium.com/ethereum-optimism/ovm-deep-dive-a300d1085f52)
+- [什么是乐观虚拟机?](https://www.alchemy.com/overviews/optimistic-virtual-machine)
+- [乐观卷叠如何工作? (完整指南)](https://www.alchemy.com/overviews/optimistic-rollups)
diff --git a/src/content/translations/zh/developers/docs/scaling/plasma/index.md b/src/content/translations/zh/developers/docs/scaling/plasma/index.md
index 4d21fd2bc3a..21c2792ccbb 100644
--- a/src/content/translations/zh/developers/docs/scaling/plasma/index.md
+++ b/src/content/translations/zh/developers/docs/scaling/plasma/index.md
@@ -1,29 +1,164 @@
---
-title: Plasma 扩容解决方案
+title: Plasma链
description: 这是一篇来源于以太坊社区的关于使用 plasma 来实现扩容解决方案的介绍文章
lang: zh
incomplete: true
sidebarDepth: 3
---
-Plasma 是一条独立的区块链,锚定至以太坊主链,并使用欺诈证明(如[乐观卷叠](/developers/docs/scaling/optimistic-rollups/))来仲裁争议。 这些链有时被称为 "子"链,因为它们本质上是父链以太坊区块链的较小复制。 Merkle 树能够创建这些链的无限堆栈,可以从父链(包括主网)上分流带宽。 它们通过[欺诈证明](/glossary/#fraud-proof)来确保安全性,每条子链都有自己的区块验证机制。
+Plasma 链是一个锚定到以太坊主网的独立区块链,但却在链下执行交易,有自己的区块验证机制。 Plasma 链有时被称作“子”链,其本质是以太坊主网的较小副本。 Plasma 链使用[欺诈证明](/glossary/#fraud-proof)(如[乐观卷叠](/developers/docs/scaling/optimistic-rollups/))来仲裁争议。
-## 先决条件 {#prerequisites}
+利用 Merkle 树可以创建这些链的无限堆栈,可以从父链(包括以太坊主网)分流带宽。 然而,虽然这些链从以太坊获取一些安全性(通过欺诈证明),但其安全性和效率受到若干设计限制的影响。
-您应对所有基础性课题有很好的了解,并且对[以太坊扩容](/developers/docs/scaling/)有深入的了解。 实现诸如 Plasma 之类的扩展解决方案是一个高阶主题,因为该技术没有经过多少实战测试,而且还在继续研究和开发。
+## 前提条件 {#prerequisites}
-## 优点和缺点 {#pros-and-cons}
+你应该对所有基础主题有很好的了解,并对[以太坊扩容](/developers/docs/scaling/)有较高层次的理解。
-| 优点 | 缺点 |
-| -------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
-| 高吞吐量,每笔交易成本较低。 | 不支持通用计算。 只支持特定逻辑的基本通证转账、兑换和几种其他交易类型。 |
-| 适用于任意用户之间的交易(如果两者都建立在 Plasma 链上,则每对用户都没有开销)。 | 需要定期监视(有效性要求)或者委托其他人监视网络,从而确保你的资金安全。 |
-| | 依靠一个或多个运营者来存储数据,并根据其需求提供数据。 |
-| | 为了等待挑战期,提款会延迟几天。 对于可替换的资产,这可以由流动性提供者来缓解,但需要支付相关的资本成本。 |
+## 什么是 Plasma?
+
+Plasma 是一个用于改善以太坊这类公共区块链的可扩展性的框架。 正如原 [Plasma 白皮书](http://plasma.io/plasma.pdf)中所述,Plasma 链是在另一个区块链之上构建的,该区块链被称为“根链”。 每个“子链”都从根链延伸而来,通常由部署在母链上的智能合约进行管理。
+
+Plasma 合约除了其他功能之外,还有一项功能是作为[链梁](/developers/docs/bridges/),让用户可以在以太坊主网和 plasma 链之间转移资产。 虽然这使它们类似于[侧链](/developers/docs/scaling/sidechains/),但 plasma 链至少在某种程度上受益于以太坊主网的安全性。 这一点不同于单独负责其安全性的侧链。
+
+## Plasma 如何工作?
+
+Plasma 框架的基本组成部分包括:
+
+### 链下计算 {#off-chain-computation}
+
+以太坊的当前处理速度限制为每秒 ~15-20 个交易,降低了短期内处理更多用户的扩容可能性。 这个问题之所以存在,主要是因为以太坊的[共识机制](/developers/docs/consensus-mechanisms/) 需要许多对等节点来验证对区块链状态的每次更新。
+
+尽管以太坊的共识机制对于安全性来说是必要的,但它可能并不适用于所有用例。 例如,由于双方之间存在某种信任,Alice 可能不需要每天向 Bob 支付一杯由整个以太坊网络验证的咖啡。
+
+Plasma 假设以太坊主网不需要验证所有交易。 相反,我们可以在主网外处理交易,使节点不必验证每笔交易。
+
+链下计算是必要的,因为 Plasma 链可以优化速度和成本。 例如,一个 Plasma 链可能,而且大多数情况下都使用单个“运营商”来管理交易的排序和执行。 由于只有一个实体验证交易,plasma 链上的处理速度比以太坊主网更快。
+
+### 状态承诺 {#state-commitments}
+
+虽然 Plasma 在链下执行交易,但它们是在以太坊主执行层上结算的,否则,Plasma 链无法从以太坊的安全保证中受益。 但是在不知道 Plasma 链状态的情况下完成链下交易会破坏安全模型并让无效交易扩散。 这就是为什么运营商,即负责在 Plasma 链上生产区块的实体,需要定期在以太坊上发布“状态承诺”。
+
+[承诺方案](https://en.wikipedia.org/wiki/Commitment_scheme)是一种加密技术,用于承诺价值或声明而不向另一方透露。 承诺是“有约束力的”,因为一旦你承诺了,就不能改变价值或声明。 Plasma 中的状态承诺采用“Merkle 根”的形式(源自 [Merkle 树](/whitepaper/#merkle-trees)),运营商每隔一段时间将其发送到以太坊链上的 Plasma 合约。
+
+Merkle 根是能够压缩大量信息的密码原语。 Merkle 根(在此情况下也称为“区块根”)可以代表区块中的所有交易。 Merkle 根还可以更容易地验证一小部分数据是否是较大数据集的一部分。 例如,用户可以生成 [Merkle 证明](/developers/tutorials/merkle-proofs-for-offline-data-integrity/#main-content)来证明交易包含在特定的区块中。
+
+Merkle 根对于向以太坊提供有关链下状态的信息非常重要。 你可以将 Merkle 根视为“保存点”:运营商表示,“这是 Plasma 链在 x 时间点的状态,这是 Merkle 根作为证明。” 运营商使用 Merkle 根对 Plasma 链的*当前状态*进行承诺,这就是为什么它被称为“状态承诺”。
+
+### 入口和出口 {#entries-and-exits}
+
+为了让以太坊用户利用 Plasma,需要有一种机制在主网和 Plasma 链之间转移资金。 但是,我们不能随意将以太币发送到 Plasma 链上的地址 — 这些链是不兼容的,因此交易要么失败,要么导致资金损失。
+
+Plasma 使用在以太坊上运行的主合约来处理用户的入口和出口。 该主合约还负责跟踪状态承诺(前面已解释)并通过欺诈证明惩罚不诚实行为(稍后将详细介绍)。
+
+#### 进入 plasma 链 {#entering-the-plasma-chain}
+
+要进入 Plasma 链,Alice(用户)必须在 Plasma 合约中存入以太币或任何 ERC-20 代币。 监视合约存款的 Plasma 运营商重新创建与 Alice 的初始存款相等的金额,并将其释放到她在 Plasma 链上的地址。 Alice 需要证明在子链上收到资金,然后才能使用这些资金进行交易。
+
+#### 退出 plasma 链 {#exiting-the-plasma-chain}
+
+由于几个原因,退出 plasma 链比进入它更复杂。 最大的问题是,虽然以太坊有关于 Plasma 链状态的信息,但它无法验证信息是否真实。 恶意用户可能会做出不正确的断言(“我有 1000 个以太币”)并提供虚假证据来支持该声明而侥幸逃脱。
+
+为防止恶意取款,引入了“挑战期”的概念。 在挑战期内(通常为一周),任何人都可以使用欺诈证明来挑战取款请求。 如果挑战成功,则取款请求被拒绝。
+
+但是,通常情况下,用户是诚实的,并对他们拥有的资金做出正确的声明。 在这种情况下,Alice 将通过向 Plasma 合约提交交易,在根链(以太坊)上发起取款请求。
+
+她还必须提供 Merkle 证明,验证在 Plasma 链上创建她的资金的交易是否包含在区块中。 这对于 Plasma 的迭代是必要的,例如[最小可行 Plasma](https://www.learnplasma.org/en/learn/mvp.html) 使用[未花费的交易输出 (UTXO)](https://en.wikipedia.org/wiki/Unspent_transaction_output) 模型。
+
+其他的,如 [Plasma Cash](https://www.learnplasma.org/en/learn/cash.html),将资金表示为[非同质化代币](/developers/docs/standards/tokens/erc-721/),而不是未花费的交易输出。 在这种情况下,取款需要证明 Plasma 链上代币的所有权。 这是通过提交涉及代币的两个最新交易并提供 Merkle 证明来验证这些交易是否包含在区块中来完成的。
+
+用户还必须在取款请求中添加保证金,作为诚实行为的保证。 如果挑战者证明 Alice 的取款请求无效,她的保证金将被罚没,其中一部分作为奖励交给挑战者。
+
+如果在没有任何人提供欺诈证明的情况下经过挑战期,Alice 的取款请求被认为是有效的,允许她从以太坊上的 Plasma 合约中取回存款。
+
+### 争议仲裁 {#dispute-arbitration}
+
+与任何区块链一样,plasma 链需要一种机制来确保交易的完整性,以防参与者开始恶意行为(例如,两倍支出资金)。 为此,plasma 链使用欺诈证明来仲裁有关状态转换有效性的争议并惩罚不良行为。
+
+欺诈证明只是声称特定状态转换无效。 例如,如果用户 (Alice) 尝试两次花费相同的资金。 也许她在与 Bob 的交易中花费了未花费的交易输出,并希望在另一笔交易中花费相同的未花费的交易输出(现在是 Bob 的)。
+
+为了防止取款,Bob 将通过提供 Alice 在之前的交易中花费上述未花费的交易输出的证据以及交易包含在区块中的 Merkle 证明来构建欺诈证明。 在 Plasma Cash 中使用同样的流程 — Bob 需要提供证据,证明 Alice 先前已经转让她尝试提取的代币。
+
+如果 Bob 挑战成功,Alice 的取款请求将被取消。 但是,这种方法依赖于 Bob 监视链中取款请求的能力。 如果 Bob 离线,那么一旦挑战期过去,Alice 就可以处理恶意取款。
+
+## plasma 中的大规模退出问题 {#the-mass-exit-problem-in-plasma}
+
+当大量用户试图同时退出 Plasma 链时,就会出现大规模退出问题。 为什么会出现这个问题与 Plasma 的最大问题之一有关:**数据不可用**。
+
+数据可用性是验证提议区块的信息是否实际发布在区块链网络上的能力。 如果生产者自己发布区块但保留用于创建区块的数据,则该区块是“不可用的”。
+
+如果节点要能够下载区块并验证交易的有效性,区块必须是可用的。 区块链通过强制区块生产者在链上发布所有交易数据来确保数据可用性。
+
+数据可用性还有助于保护建立在以太坊基础层之上的链下扩容协议。 通过强制这些链上的运营商在以太坊上发布交易数据,任何人都可以通过构建引用正确链状态的欺诈证明来挑战无效区块。
+
+Plasma 链主要存储与运营商的交易数据,**不在主网上发布任何数据**(即,除了定期状态承诺之外)。 这意味着如果用户需要创建欺诈证明来挑战无效交易,他们必须依靠运营商提供区块数据。 如果该系统有效,则用户始终可以使用欺诈证明来保护资金。
+
+当运营商(而不仅仅是任何用户)是恶意行为的一方时,问题就开始了。 由于运营商完全控制区块链,他们更有动力更大规模地推进无效状态转换,例如窃取 Plasma 链上属于用户的资金。
+
+在这种情况下,使用经典的欺诈证明系统是行不通的。 运营商可以轻松地进行无效交易,将 Alice 和 Bob 的资金转移到他们的钱包中,并隐藏创建欺诈证明所需的数据。 这是可能的,因为运营商不需要向用户或主网提供数据。
+
+因此,最乐观的解决方案是尝试从 Plasma 链上“大规模退出”用户。 大规模退出减缓了恶意运营商窃取资金的计划,并为用户提供了一定程度的保护。 取款请求根据每个未花费的交易输出(或代币)的创建时间排序,防止恶意运营商抢先运行诚实用户。
+
+尽管如此,我们仍然需要一种方法来验证大规模退出期间取款请求的有效性,以防止机会主义个人在处理无效退出的混乱中获利。 解决方案很简单:要求用户发布**链的最后一个有效状态**,以退出他们的资金。
+
+但是这种方法仍然存在问题。 例如,如果 plasma 链上的所有用户都需要退出(在恶意运营商的情况下是可能的),那么 plasma 链的整个有效状态必须立即转储到以太坊的基础层。 由于 Plasma 链的任意大小(高吞吐量 = 更多数据)和以太坊处理速度的限制,这不是一个理想的解决方案。
+
+尽管退出游戏在理论上听起来不错,但现实生活中的大规模退出可能会引发以太坊本身的全网拥塞。 除了损害以太坊的功能外,协调不善的大规模退出意味着用户可能无法在运营商耗尽 Plasma 链上的每个帐户之前提取资金。
+
+## Plasma 的优缺点 {#pros-and-cons-of-plasma}
+
+| 优点 | 缺点 |
+| ---------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
+| 提供高吞吐量和较低的每笔交易成本。 | 不支持通用计算(无法运行智能合约)。 只支持特定逻辑的基本通证转账、兑换和几种其他交易类型。 |
+| 适合任意用户之间的交易(如果双方的交易都建立在 Plasma 链上,则这个交易几乎没有成本)。 | 需要定期监视网络(活性要求)或委托其他人监视网络,以确保你的资金安全。 |
+| Plasma 链可以适应与主链无关的特定用例。 包括企业在内的任何人都可以定制 Plasma 智能合约,以提供可在不同环境中工作的可扩展基础设施。 | 依靠一个或多个运营者来存储数据,并根据其需求提供数据。 |
+| 通过将计算和存储转移到链下来减少以太坊主网的负载。 | 为了等待挑战期,提款会延迟几天。 对于同质化资产,流动性提供者可以缓解这种情况,但存在相关的资本成本。 |
+| | 如果太多用户同时尝试退出,可能会导致以太坊主网堵塞。 |
+
+## Plasma 与第 2 层网络扩容协议 {#plasma-vs-layer-2}
+
+虽然 Plasma 曾被视为对以太坊有用的扩容解决方案,但后来它被弃用,取而代之的是[二层网络 (L2) 扩容协议](/layer-2/)。 二层网络扩容解决方案解决了 Plasma 的几个问题:
+
+### 效率 {#efficiency}
+
+[零知识卷叠](/developers/docs/scaling/zk-rollups)为在链下处理的每批交易的有效性生成加密证明。 这样可以防止用户(和运营商)推进的无效状态转换,因而不再需要挑战期和退出游戏。 这也意味着用户不必通过定期关注链来保护其资金安全。
+
+### 支持智能合约 {#support-for-smart-contracts}
+
+Plasma 框架的另一个问题是[无法支持以太坊智能合约的执行](https://ethresear.ch/t/why-smart-contracts-are-not-feasible-on-plasma/2598/4)。 因此,Plasma 的大多数实现主要是用于简单的支付或 ERC-20 代币交换。
+
+相反,乐观卷叠与[以太坊虚拟机](/developers/docs/evm/)兼容,并且可以运行以太坊原生[智能合约](/developers/docs/smart-contracts/),使其成为扩展[去中心化应用程序](/developers/docs/dapps/)的有用且*安全*的解决方案。 同样,正在计划[创建以太坊虚拟机的零知识实现 (zkEVM)](https://ethresear.ch/t/a-zk-evm-specification/11549),让零知识卷叠能够处理任意逻辑并执行智能合约。
+
+### 数据不可用 {#data-unavailability}
+
+如前所述,Plasma 存在数据可用性问题。 如果恶意运营商在 Plasma 链上推进了无效转换,用户将无法挑战它,因为运营商可以扣留创建欺诈证明所需的数据。 卷叠强制运营商在以太坊上发布交易数据,允许任何人验证链的状态并在必要时创建欺诈证明,从而解决了这个问题。
+
+### 大规模退出问题 {#mass-exit-problem}
+
+零知识卷叠和乐观卷叠均以不同方式解决了 Plasma 的大规模退出问题。 例如,零知识卷叠依靠加密机制来确保运营商在任何情况下都无法窃取用户的资金。
+
+同样,乐观卷叠对提款实施了延迟期,在延迟期任何人都可以提出挑战并阻止恶意提款请求。 虽然这类似于 Plasma,但不同之处在于验证者可以访问创建欺诈证明所需的数据。 因此,卷叠用户无需在慌乱中“争先恐后”地迁移到以太坊主网。
+
+## Plasma、侧链、分片技术之间有什么区别? {#plasma-sidechains-sharding}
+
+Plasma、侧链、分片技术有一定的相似度,因为它们都以某种方式连接到以太坊主网。 然而,连接到以太坊主网的级别和强度有所不同,这影响了这些扩容方案的安全属性。
+
+### Plasma 与侧链 {#plasma-vs-sidechains}
+
+[侧链](/developers/docs/scaling/sidechains/)是一条独立运行的区块链,通过双向桥梁连接到以太坊主网。 [桥梁](/bridges/)允许用户在两条区块链之间兑换代币以便在侧链进行交易,这缓解了以太坊主网上的拥塞并提升了可扩展性。 侧链采用独立的共识机制,它们通常比以太坊主网小得多。 因此,将资产桥接到这些区块链会增加风险;由于侧链模型中缺少从以太坊主网继承的安全保障,在侧链受到攻击时用户会面临资金损失的风险。
+
+相反,Plasma 链的安全性源自以太坊主网。 这让它们明显比侧链更安全。 侧链和 Plasma 链都可以采用不同的共识协议。但区别是 Plasma 链在以太坊主网上发布每个区块的默克尔根。 区块根是小段信息,可用来验证在 Plasma 链上进行的交易相关信息。 如果 Plasma 链遭到攻击,用户可以用适当的证据安全地将资金撤回到主网。
+
+### Plasma 与分片 {#plasma-vs-sharding}
+
+Plasma 链和[分片链](/upgrades/sharding/)都会定期向以太坊主网发布加密证明。 但是,两者具有不同的安全属性。
+
+分片链向主网提交“汇总头”,其中包含有关每个数据分片的详细信息。 主网上的节点验证和执行数据分片的有效性,减少无效分片转换的可能性并防止网络上出现恶意活动。
+
+Plasma 不同于此,因为主网只接收最少量的子链状态信息。 这意味着主网无法有效验证子链上进行的交易,降低了交易的安全性。
### 使用 Plasma {#use-plasma}
-多个项目使用了 Plasma 技术,你可以将其整合到你的去中心化应用程序中。
+许多项目提供 Plasma 实现,你可以将它们集成到自己的去中心化应用程序中:
- [OMG 网络](https://omg.network/)
- [ Polygon](https://polygon.technology/)(原 Matic 网络)
@@ -34,5 +169,9 @@ Plasma 是一条独立的区块链,锚定至以太坊主链,并使用欺诈
- [Plasma 上的 EthHub](https://docs.ethhub.io/ethereum-roadmap/layer-2-scaling/plasma/)
- [学习 Plasma](https://www.learnplasma.org/en/)
+- [关于何为“共享安全”以及它为何如此重要的简单提示](https://old.reddit.com/r/ethereum/comments/sgd3zt/a_quick_reminder_of_what_shared_security_means/)
+- [侧链、Plasma 与分片](https://vitalik.ca/general/2019/06/12/plasma_vs_sharding.html)
+- [了解 Plasma,第一部分:基本概念](https://www.theblockcrypto.com/amp/post/10793/understanding-plasma-part-1-the-basics)
+- [Plasma 的生与死](https://medium.com/dragonfly-research/the-life-and-death-of-plasma-b72c6a59c5ad#)
-_您知道有什么社区资源帮助过您吗? 编辑并添加本页面!_
+_还有哪些社区资源对你有所帮助? 请编辑本页面并添加!_
diff --git a/src/content/translations/zh/developers/docs/scaling/sidechains/index.md b/src/content/translations/zh/developers/docs/scaling/sidechains/index.md
index e20da5d2e6d..fa9d6c1ead1 100644
--- a/src/content/translations/zh/developers/docs/scaling/sidechains/index.md
+++ b/src/content/translations/zh/developers/docs/scaling/sidechains/index.md
@@ -1,38 +1,73 @@
---
title: 侧链
-description: 这是一篇来源于以太坊社区的关于使用侧链来实现扩容解决方案的介绍文章
+description: 介绍侧链 —— 以太坊社区目前正在使用的一种扩容方案。
lang: zh
-incomplete: true
sidebarDepth: 3
---
-侧链是一个独立的区块链,与以太坊主网并行且独立地运行。 它有自己的[共识算法](/developers/docs/consensus-mechanisms/)(例如[权威证明](https://wikipedia.org/wiki/Proof_of_authority)、[委托权益证明](https://en.bitcoinwiki.org/wiki/DPoS)、[拜占庭容错](https://decrypt.co/resources/byzantine-fault-tolerance-what-is-it-explained))。 它通过双向主网来实现链接。
+侧链是独立于以太坊运行的独立区块链,通过双向桥梁与以太坊主网连接。 侧链可以有单独的区块参数和[共识算法](/developers/docs/consensus-mechanisms/),它们通常是为高效处理交易而设计的。 但是,使用侧链需要权衡取舍,因为它们未继承以太坊的安全属性。 与[二层网络扩容解决方案](/layer-2/)不同,侧链不会将状态变化和交易数据发布到以太坊主网。
-让人们对侧链感兴趣的是,它的工作环境和主链相同,因为同样基于 [EVM(以太坊虚拟机)](/developers/docs/evm/)。 它不使用以太坊,它自己就是以太坊。 这意味着如果想要在侧链上使用 [dapp](/developers/docs/dapps/) ,只需将它部署在侧链上。 它的外观、给人的感受和行为与主链相似,仍然通过 Solidity 写合约,并提供 Web3 API 完成互动。
+侧链还在一定程度上牺牲了去中心化或安全性来实现高吞吐量([可扩展性三难困境](https://vitalik.ca/general/2021/05/23/scaling.html))。 然而,以太坊致力于在不影响去中心化和安全性的情况下扩容,正如其关于升级的[愿景声明](/upgrades/vision/)中所述。
-## 先决条件 {#prerequisites}
+## 侧链如何运作? {#how-do-sidechains-work}
-您应该对所有基础有很好的理解,并对“[以太坊扩容](/developers/docs/scaling/). 有着一定的理解。
+侧链是独立的区块链,具有不同的历史记录、开发路线图和设计考虑。 虽然和以太坊在表面上可能有一些相似之处,但侧链有几个独特的特征。
-## 优点和缺点 {#pros-and-cons}
+### 共识算法 {#consensus-algorithms}
-| 优点 | 缺点 |
-| ------------------------ | ----------------------------------------------------------------------- |
-| 既有的技术。 | 不够去中心化。 |
-| 支持通用计算,EVM 兼容。 | 采用单独的共识机制。 未受一层保护(因此,从技术上而言,它不是第二层)。 |
-| | 侧链验证者达到一定数量可以进行欺诈。 |
+使侧链独一无二(即不同于以太坊)的特点之一是使用了共识算法。 侧链不依赖以太坊达成共识,并可以选择适合其需求的替代共识协议。 侧链上使用的共识算法的一些示例包括:
+
+- [权威证明](https://wikipedia.org/wiki/Proof_of_authority)
+- [委托权益证明](https://en.bitcoinwiki.org/wiki/DPoS)
+- [拜占庭容错算法](https://decrypt.co/resources/byzantine-fault-tolerance-what-is-it-explained)。
+
+与以太坊一样,侧链也有验证并处理交易、生成区块以及存储区块链状态的验证节点。 验证者还负责维护整个网络的共识,并保护网络免受恶意攻击。
+
+#### 区块参数 {#block-parameters}
+
+以太坊对[出块时间](/developers/docs/blocks/#block-time)(即产生新区块所需的时间)和[区块大小](/developers/docs/blocks/#block-size)(即以燃料为计量单位的每个区块包含的数据量)设置了限制。 相反,侧链通常采用不同的参数,例如更快的出块时间和更高的燃料限制,以实现高吞吐量、快速交易和低费用。
+
+虽然这样做有一些好处,但会对网络去中心化和安全性产生严重影响。 较快的出区块时间和较大的区块大小这样的区块参数,增加了运行全节点的难度,让一些“超级节点”负责保护区块链的安全。 在这种情况下,验证者串通或恶意接管区块链的可能性增加。
+
+为了使区块链在不损害去中心化的情况下扩容,必须所有人都可以运行节点,而不一定限于拥有专用硬件的各方。 这就是我们一直都在努力确保每个人都能在以太坊网络上[运行全节点](/developers/docs/nodes-and-clients/#why-should-i-run-an-ethereum-node)的原因。
+
+### 以太坊虚拟机兼容性 {#evm-compatibility}
+
+一些侧链与以太坊虚拟机兼容,并且能够执行为[以太坊虚拟机 (EVM) ](/developers/docs/evm/)开发的合约。 兼容以太坊虚拟机的侧链支持用 [Solidity 编写](/developers/docs/smart-contracts/languages/)的智能合约,也支持其他以太坊虚拟机智能合约语言,这意味着为以太坊主网编写的智能合约也将在兼容以太坊虚拟机的侧链上有效。
+
+这意味着,如果想在侧链上使用你的[去中心化应用程序](/developers/docs/dapps/),只需将你的[智能合约](/developers/docs/smart-contracts/)部署到该侧链即可。 侧链的外观、给人的感受和行为与主链相似,你仍然用 Solidity 编写合约,并通过侧链远程过程调用与侧链交互。
+
+由于侧链与以太坊虚拟机兼容,因而被视为对以太坊原生去中心化应用程序有效的[扩容解决方案](/developers/docs/scaling/)。 去中心化应用程序部署到侧链上后,用户可以获得更低的燃料费用和更快的交易速度,尤其是在主网拥塞的情况下。
+
+然而,正如前文所述,使用侧链需认真权衡其利弊。 每个侧链负责其自身安全性,没有继承以太坊的安全属性。 这增加了发生恶意行为的可能性,可能会影响到你的用户或使他们的资金面临风险。
+
+### 资产转移 {#asset-movement}
+
+为了使一条独立区块链成为以太坊主网的侧链,区块链必须能支持资产在它与以太坊主网之间转移。 这种与以太坊的互操作性是使用区块链桥梁实现的。 [桥梁](/bridges/)使用部署在以太坊主网和侧链上的智能合约控制两者之间的资金桥接。
+
+虽然桥梁可以帮助用户在以太坊和侧链之间转移资金,但实体资产不会在两条链之间移动。 而是采用通常与铸币和销毁相关的机制跨链转移价值。 更多关于[桥梁如何运作](/developers/docs/bridges/#how-do-bridges-work)的信息。
+
+## 侧链的优缺点 {#pros-and-cons-of-sidechains}
+
+| 优点 | 缺点 |
+| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------ |
+| 支撑侧链的技术是成熟的,并得益于广泛的研究和设计的改进。 | 侧链在一定程度上牺牲了去中心化和免信任以换取可扩展性。 |
+| 侧链支持通用计算并提供以太坊虚拟机兼容性(它们可以运行以太坊原生去中心化应用程序)。 | 侧链使用单独的共识机制,并且没有从以太坊的安全保障中受益。 |
+| 侧链使用不同的共识模型,为用户高效处理交易并降低交易费。 | 侧链需要更高的信任假设(例如,恶意侧链验证者达到一定人数可以进行欺诈)。 |
+| 与以太坊虚拟机兼容的侧链允许去中心化应用程序扩展其生态系统。 | |
### 使用侧链 {#use-sidechains}
-多个项目提供侧链的实施,以便您集成至 dApp:
+许多项目提供侧链实现,你可以将它们集成到自己的去中心化应用程序中:
- [Polygon PoS](https://polygon.technology/solutions/polygon-pos)
- [Skale](https://skale.network/)
-- [Gnosis Chain(原 xDai)](https://www.xdaichain.com/)
+- [Gnosis Chain(原 xDai)](https://www.gnosischain.com/)
+- [Loom Network](https://loomx.io/)
## 延伸阅读 {#further-reading}
- [侧链上的 EthHub](https://docs.ethhub.io/ethereum-roadmap/layer-2-scaling/sidechains/)
-- [Scaling Ethereum Dapps through Sidechains(通过侧链扩容以太坊 Dapp)](https://medium.com/loom-network/dappchains-scaling-ethereum-dapps-through-sidechains-f99e51fff447) _Feb 8, 2018 - Georgios Konstantopoulos_
+- [通过侧链扩展以太坊去中心化应用程序](https://medium.com/loom-network/dappchains-scaling-ethereum-dapps-through-sidechains-f99e51fff447) _2018 年 2 月 8 日 - Georgios Konstantopoulos_
-_你知道有什么社区资源帮助过你吗? 编辑并添加本页面!_
+_还有哪些社区资源对你有所帮助? 请编辑本页面并添加!_
diff --git a/src/content/translations/zh/developers/docs/scaling/state-channels/index.md b/src/content/translations/zh/developers/docs/scaling/state-channels/index.md
index dfc16778e0a..93649c829c4 100644
--- a/src/content/translations/zh/developers/docs/scaling/state-channels/index.md
+++ b/src/content/translations/zh/developers/docs/scaling/state-channels/index.md
@@ -2,56 +2,244 @@
title: 状态通道
description: 介绍了状态通道和付款渠道,作为以太坊社区目前使用的扩容解决方案。
lang: zh
-incomplete: true
sidebarDepth: 3
---
-通道允许参与者在链下进行`x`次交易,而在链上只能向网络提交两次交易。 这允许极高的交易吞吐量.
+状态通道让参与者可以安全地进行链下交易,同时最大限度地减少和以太坊主网的交互。 通道对等节点可以进行任意数量的链下交易,并且只需提交两个链上交易以打开和关闭通道。 这样便实现了极高的交易吞吐量,并为用户降低了成本。
-## 先决条件 {#prerequisites}
+## 前提条件 {#prerequisites}
-您应对所有基础性课题有很好的了解,并且对[以太坊扩容](/developers/docs/scaling/)有深入的了解。 实现诸如渠道之类的扩展解决方案是一个高级主题,因为该技术没有经过多少实战测试,而且还在继续研究和开发。
+你应该已经阅读并理解关于[以太坊扩容](/developers/docs/scaling/)和[二层网络](/layer-2/)的页面。
-## 通道 {#channels}
+## 什么是通道? {#what-are-channels}
-参与者必须将以太坊的一部分状态,如 ETH 存款,锁定在一个多签合约中。 多签合约是一种需要多个私钥的签名(从而达成一致)才能执行的合约。
+公共区块链,如以太坊,由于其分布式架构而面临可扩展性挑战:链上交易必须由所有节点执行。 节点必须能够使用普通硬件来处理区块中的交易量,为了保持网络去中心化而限制了交易吞吐量。 区块链通道通过允许用户在主链下交互,解决了这个问题。
-以这种方式锁定状态是第一个交易,并打开了通道。 然后参与者可以在链下快速自由地进行交易。 当互动结束后,提交最后一笔链上交易,解锁状态。
+通道是简单的对等协议,允许双方进行多笔交易,然后只将最终结果发布到区块链。 渠道使用加密算法证明产生的摘要数据确实是一组有效中间交易的结果。 [“多签”](developers/docs/smart-contracts/#multisig)智能合约确保交易由正确的相关方签署。
-**适用于**:
+相关方通过通道执行和验证状态变化,最大限度减少以太坊执行层上的计算。 这就减少了以太坊拥塞,也提高了用户的交易处理速度。
-- 需要大量状态更新
-- 当参与者数量为公开时
-- 当参与者始终在线时
+每条通道都由以太坊上运行的[多签智能合约](/developers/docs/smart-contracts/#multisig)管理。 要打开一条通道,参与者在链上部署通道合约并将资金存入其中。 双方共同签署一个状态更新来初始化通道的状态,之后他们就可以快速且自由地进行链下交易。
-现在有两种通道:状态通道和支付通道。
+要关闭通道,参与者需要将各方一致同意的通道最终状态提交到链上。 然后,智能合约根据通道最终状态下每个参与者的余额分配锁定资金。
+
+对等通道在一些情况下非常有用,比如,某些预先确定的参与者希望频繁进行交易,并且不会产生明显的费用。 区块链通道分为两类:**支付通道**和**状态通道**。
+
+## 支付通道 {#payment-channels}
+
+将支付通道描述成由两个用户共同维护的“双向账本”最为恰当。 账本的初始余额是通道打开期间锁定在链上合约中的存款总和。
+
+账本余额的更新(即支付渠道的状态)需要渠道中所有各方的批准。 通道更新在所有通道参与者签署后被视为最终确定,这和以太坊上的交易非常相似。
+
+支付通道是最早的扩容解决方案之一,旨在最大限度地减少简单用户交易中的费用高昂的链上活动(例如,以太币转账、原子交换、小额支付等)。 通道参与者彼此之间可以进行不限次数的即时、无费用交易,只要他们的转账总净额不超过存入的代币。
## 状态通道 {#state-channels}
-状态通道或许最好通过示例进行解释,比如井字棋:
+除了支持链下支付外,尚未证实支付通道可用于处理通用状态转换逻辑。 创建状态通道是为了解决这个问题,并使通道可用于扩展通用计算。
-1. 在以太坊主链上创建一个井字游戏智能合约 "法官",它了解井字游戏的规则,并能识别爱丽丝和鲍勃是我们游戏中的两个玩家。 该合约持有 1 个 ETH 的奖励。
+状态通道与支付通道仍有很多共同点。 例如,用户通过交换加密签名的信息(交易)交互,对方也必须签署这些信息。 如果提出的状态更新没有得到所有参与者的签名,则它是无效的。
-2. 然后,Alice 和 Bob 开始玩游戏,打开状态通道。 每一个动作都会创建一个包含“nonce”的链下交易,nonce 代表这些动作发生的顺序。
+但是,除了保存用户的余额外,通道还跟踪合约存储的当前状态(即合约变量的值)。
-3. 当有赢家时,他们通过向审判合约提交最终状态(如交易清单)来关闭通道,这时候只需要支付一笔交易费用。 审判者确保双方签署这一“最后状态”,并等待一段时间以确保没有人合法地对结果提出质疑,然后向 Alice 支付 1 ETH 的奖励。
+这使得两个用户之间可以在链下执行智能合约。 在这种情况下,智能合约内部状态的更新只需由创建通道的另一方批准即可。
-## 支付通道 {#payment-channels}
+虽然这解决了前文描述的可扩展性问题,但它对安全性有影响。 在以太坊上,以太坊状态转换的有效性由网络的共识协议强制执行。 因此,不可能对智能合约的状态提出无效更新或者修改智能合约的执行。
+
+状态通道没有同样的安全保障。 在某种程度上,状态通道是主网的缩影。 由于执行规则的参与者有限,发生恶意行为(例如,提出无效状态更新)的可能性增加。 状态通道的安全性来自基于[欺诈证明](/glossary/#fraud-proof)的争议仲裁系统。
+
+## 状态通道如何运作 {#how-state-channels-work}
+
+状态通道中的活动基本上都是一系列涉及用户和区块链系统的交互。 用户大多数情况下在链下相互交流,只是在打开通道、关闭通道或解决参与者之间的潜在争议时才与底层区块链交互。
+
+以下部分概述了状态通道的基本工作流程:
+
+### 打开通道 {#opening-the-channel}
+
+打开通道需要参与者将资金存入主网上的智能合约。 存款还可以用作虚拟标签,因此参与者可以自由交易,而无需立即结算付款。 只有当通道在链上最终确定时,各方才能相互结算并提取标签的余额。
+
+这笔存款还可以作为一个协定,保证每个参与者实施诚实的行为。 如果在争议解决阶段判定存款人有恶意行为,合约将罚没他们的存款。
+
+通道对等方必须签署一个他们一致同意的初始状态。 该初始状态表示状态通道的开通,之后用户可以开始交易。
+
+### 使用通道 {#using-the-channel}
+
+在初始化通道的状态后,对等方进行交互,他们签署交易并相互发送交易进行批准。 参与者使用这些交易发起状态更新,并签署来自其他人的状态更新。 每笔交易包括以下内容:
+
+- **随机数**,作为交易的唯一 ID 并防止重放攻击。 它还标识状态更新发生的顺序(这对于解决争议很重要)
+
+- 通道的原有状态
+
+- 通道的新状态
+
+- 触发状态转换的交易(例如,Alice 向 Bob 发送 5 个以太币)
+
+通道中的状态更新不会像用户在主网上交互时那样在链上广播,这与状态通道最大限度减少链上足迹的目标一致。 只要参与者一致同意状态更新,它们就与以太坊交易一样最终确定。 如果出现争议,参与者只需依赖主网的共识。
+
+### 关闭通道 {#closing-the-channel}
+
+要关闭状态通道,需要将通道的各方一致同意的最终状态提交给链上智能合约。 状态更新中引用的详细信息包括每个参与者所实施行为的次数和获批准交易的列表。
+
+在验证状态更新有效(即由各方签署)后,智能合约最终确定通道状态并根据通道的结果分配锁定资金。 链下支付应用到以太坊状态,每个参与者都会收到其剩余的锁定资金。
+
+上述场景代表了成功用例下的情况。 有时,用户可能无法达成一致并最终确定通道状态(失败用例)。 以下任何一种情况都可能是失败用例:
+
+- 参与者离线并且未能提出状态转换
+
+- 参与者拒绝共同签署有效的状态更新
+
+- 参与者试图通过向链上合约提出旧的状态更新来最终确定通道
+
+- 参与者提出无效的状态转换供其他人签署
+
+每当通道中的参与者之间无法达成共识时,最后的选择是依靠主网的共识来执行通道的最终有效状态。 在这种情况下,要关闭状态通道,就需要在链上解决争议。
+
+### 解决争议 {#settling-disputes}
+
+通常,通道中的各方事先同意关闭通道并共同签署最新的状态转换,然后将其提交给智能合约。 一旦更新在链上获得批准,链下智能合约的执行就会结束,参与者会带着他们的钱退出通道。
+
+但是,一方可以提交链上请求以结束智能合约的执行并最终确定通道状态 — 而无需等待对方的批准。 如果出现上述任何破坏共识的情况,任何一方都可以触发链上合约以关闭通道并分配资金。 这样就实现了**去信任**,确保诚实的参与方可以随时提取他们的存款,而不管另一方的行为如何。
+
+要处理通道退出,用户必须将应用的最后一次有效状态更新提交给链上合约。 如果状态更新得到证实(即,带有所有参与方的签名),那么资金会按照有利于他们的方式重新分配。
+
+但是,执行单用户退出请求会有延迟。 如果关闭通道请求获得一致批准,则立即执行链上退出交易。
+
+由于存在欺诈行为的可能性,延迟在单用户退出中有了用武之地。 例如,通道参与者可能尝试通过在链上提交较早的状态更新来最终确定以太坊上的通道。
+
+作为一种对策,状态通道允许诚实用户通过在链上提交最新、有效的通道状态来挑战无效状态更新。 状态通道的设计使得较新的、一致同意的状态更新优先于较早的状态更新。
+
+一旦一个对等方触发了链上争议解决系统,另一方需要在一个时限内(称为挑战窗口)做出响应。 这样用户就可以挑战退出交易,尤其是在另一方应用过时更新的情况下。
+
+不管是哪种情况,通道用户总是拥有可靠的最终确定性保障:如果他们拥有的状态转换由所有成员签署并且是最新的更新,那么它与常规链上交易具有相同的最终确定性。 他们仍然必须在链上挑战另一方,但唯一可能的结果是最终确定他们拥有的最新有效状态。
+
+### 状态通道如何与以太坊交互? {#how-do-state-channels-interact-with-ethereum}
+
+尽管状态通道作为链下协议存在,但它们具有链上部分:打开通道时部署在以太坊上的智能合约。 该合约控制存入通道的资产,验证状态更新,并仲裁参与者之间的争议。
+
+与[二层网络](/layer-2/)扩容解决方案不同,状态通道不会向主网发布交易数据或状态承诺。 但是,它们与主网的连接比[侧链](/developers/docs/scaling/sidechains/)等更加紧密,这使得它们更加安全。
+
+状态通道依赖于以太坊的主要协议,实现:
+
+#### 1. 可用性 {#liveness}
+
+打开通道时部署的链上合约负责通道的功能。 如果合约在以太坊上运行,则通道始终可用。 相反,即使主网正常运行,侧链也会随时失败,使用户资金面临风险。
+
+#### 2. 安全性 {#security}
+
+在某种程度上,状态通道依靠以太坊来提供安全性并保护用户免受恶意用户的侵害。 正如后面部分所讨论的,通道使用欺诈证明机制,允许用户挑战用无效或过时更新最终确定通道状态的企图。
+
+在这种情况下,诚实参与方将通道的最新有效状态作为欺诈证明提供给链上合约进行验证。 欺诈证明使互不信任的各方能够进行链下交易,而不会让他们的资金在交易过程中面临风险。
+
+#### 3. 最终确定性 {#finality}
+
+由通道用户共同签署的状态更新被认为与链上交易一样有效。 尽管如此,所有通道内活动只有在以太坊上关闭通道时才能获得真正的最终确定性。
+
+在乐观情况下,双方可以合作、签署最终状态更新并在链上提交以关闭通道,然后根据通道的最终状态分配资金。 在悲观情况下,有人试图通过在链上发布不正确的状态更新来欺骗,双方的交易在挑战窗口结束之前不会最终确定。
+
+## 虚拟状态通道 {#virtual-state-channels}
+
+状态通道的简单实现是在两个用户希望在链下执行应用程序时部署新合约。 这不仅不可行,而且还否定了状态通道的成本效益(链上交易成本会迅速增加)。
+
+为了解决这个问题,创建了“虚拟通道”。 与需要链上交易才能打开和终止的常规通道不同,虚拟通道可以在不与主链交互的情况下打开、执行和最终确定。 甚至可以使用这种方法在链下解决争议。
+
+该系统依赖于所谓的“账本通道”(已在链上获得资金)的存在。 双方之间的虚拟通道可以建立在现有账本通道之上,账本通道的所有者作为中间人。
+
+每条虚拟通道中的用户通过一个新的合约实例交互,账本通道能够支持多个合约实例。 账本通道的状态还包含多个合约存储状态,允许在不同用户之间在链下并行执行应用程序。
+
+就像常规频道一样,用户交换状态更新以推进状态机。 除非出现争议,否则仅在打开或终止通道时才需要联系中间人。
+
+### 虚拟支付通道 {#virtual-payment-channels}
+
+虚拟支付通道的运作原理与虚拟状态通道相同:连接到同一网络的参与者可以传递消息,而无需在链上打开新通道。 在虚拟支付渠道中,价值转移通过一个或多个中间人进行,并保证只有预期的接收者才能收到转移的资金。
+
+## 状态通道的应用 {#applications-of-state-channels}
+
+### 支付 {#payments}
+
+早期的区块链通道是简单的协议,允许两个参与者在链下进行快速、低费用的转账,而无需在主网上支付高额交易费。 如今,支付通道仍然适用于专为兑换和存入以太币和代币而设计的应用程序。
+
+基于通道的支付具有以下优势:
+
+1. **吞吐量**:每条通道的链下交易数量与以太坊的吞吐量无关,而是受各种因素的影响,尤其是区块大小和出块时间。 通过在链下执行交易,区块链通道可以实现更高的吞吐量。
+
+2. **隐私**:因为通道存在于链下,参与者之间的交互细节不会记录在以太坊的公共区块链上。 通道用户只需在向通道中存入资金和关闭通道或者解决争议时才进行链上交互。 因此,通道适用于希望进行更多私密交易的个人。
+
+3. **延迟**:如果双方合作,通道参与者之间进行的链下交易可以即时结算,这就减少了延迟。 相比之下在主网上,需要等待节点处理交易,产生包含该交易的一个新区块,并达成共识后才能发送交易。 用户可能还需要等待进行更多的区块确认后,交易才能视为最终确定。
+
+在二层网络解决方案(例如[卷叠](/developers/docs/scaling/#rollups))上实施状态通道,可以使它们对支付更具吸引力。 虽然通道可以提供低廉的支付服务,但在通道打开阶段在主网上建立链上合约的成本可能会变得很昂贵 — 尤其是当燃料费飙升时。 基于以太坊的卷叠提供[较低的交易费](https://l2fees.info/),并且可以通过降低设置费用来减少通道参与者的开销。
+
+### 微交易 {#microtransactions}
+
+微交易是低价值的支付(例如,不足一美元),商家无法在不产生损失的情况下处理它。 这些实体必须向支付服务提供商付款,然而,如果客户支付的利润太低而无法盈利,支付服务提供商就无法处理支付。
+
+支付通道通过减少与微交易相关的开销来解决这个问题。 例如,互联网服务提供商 (ISP) 可以为客户打开支付通道,允许他们在每次使用该服务时逐一进行小额支付。
+
+除了打开和关闭通道的成本外,参与者不会在微交易上产生更多费用(无燃料费用)。 这是一种双赢局面,因为客户在为服务支付多少费用方面拥有更大的灵活性,而且商家也不会失去有利可图的微交易。
+
+### 去中心化应用程序 {#decentralized-applications}
+
+与支付通道一样,状态通道可以根据状态机的最终状态进行有条件的支付。 状态通道还可以支持任意状态转换逻辑,使其可用于执行链下通用应用程序。
+
+状态通道通常仅限于简单的基于回合的应用程序,因为这样可以更轻松地管理提交到链上合约的资金。 此外,由于定期更新链下应用程序状态的参与方数量有限,对不诚实行为实施惩罚相对简单。
+
+状态通道应用程序的效率还取决于其设计。 例如,开发者或许可以在链上部署一次应用程序通道合约,并允许其他玩家重复使用该应用程序而无需上链。 在这种情况下,初始应用程序通道作为支持多条虚拟通道的账本通道,每条虚拟通道在链下运行应用程序智能合约的新实例。
+
+状态通道应用程序的一个潜在用例是简单的两人游戏,在游戏中根据游戏结果分配资金。 其中的好处是玩家不必相互信任(去信任),链上合约而不是玩家控制资金分配和争议解决(去中心化)。
+
+状态通道应用程序的其他可能用例包括以太坊域名服务名称所有权、非同质化代币账本等等。
+
+### 原子转账 {#atomic-transfers}
+
+早期的支付通道局限于双方之间的转账,限制了它们的实用性。 然而,虚拟通道的引入允许个人通过中间人(即多条对等通道)进行转账,而无需在链上打开新通道。
+
+这种路由支付通常被描述为“多跳转账”,属于原子转账(即,交易的所有部分或者全部成功或或者全部失败)。 原子转账使用[哈希时间锁定合约 (HTLC)](https://en.bitcoin.it/wiki/Hash_Time_Locked_Contracts) 确保只有在满足特定条件时才发放付款,从而降低另一交易方的风险。
+
+## 使用状态通道的缺点 {#drawbacks-of-state-channels}
+
+### 可用性假设 {#liveness-assumptions}
+
+为了确保效率,状态通道对通道参与者的争议响应能力设置了时限。 此规则假定对等方将始终在线,以监控通道活动并在必要时应对挑战。
+
+实际上,用户可能会因为无法控制的原因(例如,网络连接差、机械故障等)离线。 如果诚实用户下线,恶意对等方就可以利用这种情况,他们将旧的中间状态提供给裁决者合约并窃取提交的资金。
+
+一些通道使用“瞭望塔”,这类实体负责代表他人监控链上争议事件并采取必要行动,例如提醒相关方。 但是,这可能会增加使用状态通道的成本。
+
+### 数据不可用 {#data-unavailability}
+
+如前所述,挑战无效的争议需要提供状态通道的最新、有效状态。 这是另一个基于假设的规则,即用户可以访问通道的最新状态。
+
+尽管期望通道用户存储链下应用程序状态的副本是合理的,但这些数据可能由于错误或机械故障而丢失。 如果用户没有备份数据,就只能希望另一方不要使用其拥有的旧状态转换最终确定无效的退出请求。
+
+以太坊用户不必处理这个问题,因为网络强制执行数据可用性规则。 交易数据由所有节点存储和传播,并在必要时供用户下载。
+
+### 流动性问题 {#liquidity-issues}
+
+要建立区块链通道,参与者需要在通道的整个生命周期将资金锁定在链上智能合约中。 这降低了通道用户的流动性,也会限制通道只能由那些有财力将资金一直锁定在主网上的用户使用。
+
+然而,链下服务提供商 (OSP) 运营的账本通道可以减少用户的流动性问题。 连接到账本通道的两个对等方可以创建一条虚拟通道,他们可以随时且完完全全在链下打开和最终确定该通道。
+
+链下服务提供商还可以打开包括多个对等方的通道,让通道可用于路由支付。 当然,用户必须为使用了服务而向链下服务提供商支付费用,这对某些人来说可能是不情愿的。
+
+### 悲伤攻击 {#griefing-attacks}
+
+悲伤攻击是基于欺诈证明的系统的共同特征。 悲伤攻击不会直接让攻击者受益,但会给受害者带来悲伤(即伤害),因此得名。
+
+欺诈证明容易受到悲伤攻击,因为诚实的一方必须对每一个争议做出响应,即使是无效的争议,否则会面临失去资金的风险。 恶意参与者可以决定在链上重复发布过时的状态转换,迫使诚实方以有效状态进行响应。 这类链上交易的成本会迅速增加,导致诚实方在此过程中受损。
+
+### 预定义的参与者集 {#predefined-participant-sets}
+
+根据设计,组成状态通道的参与者数量在通道整个生命周期中固定不变。 这是因为更新参与者集会使通道的运营复杂化,尤其是在向通道存入资金或解决争议时。 添加或移除参与者还需要进行额外的链上活动,这会增加用户的开销。
+
+虽然这使得状态通道更容易推断,但它将通道设计的实用性局限于应用程序开发者。 这在一定程度上解释了为什么状态通道已被其他扩容解决方案所取代,例如卷叠。
-仅处理支付的简化状态通道(例如 ETH 转账)。 允许两个参与者之间的链下转账,只要他们的转账总额不超过存入的代币数量。
+### 并行交易处理 {#parallel-transaction-processing}
-## 优点和缺点 {#channels-pros-and-cons}
+状态通道中的参与者轮流发送状态更新,这就是状态通道为何最适合“基于回合的应用程序”(例如,两人棋类游戏)的原因。 这样就无需处理同时出现的状态更新,并减少了链上合约为惩罚提出过时更新的发布者而必须完成的工作。 然而,这种设计的副作用是交易相互依赖,这增加了延迟并减弱了整体用户体验。
-| 优点 | 缺点 |
-| --------------------------------------------- | -------------------------------------------------------------------------------- |
-| 在主网上即时提款/结算(如果通道的双方合作)。 | 对于偶尔转账给对方的用户来说,创建和结算通道的时间和经济成本都比较高,不太友好。 |
-| 可能出现极高的吞吐量 | 需要定期监视(有效性要求)或者委托其他人监视网络,从而确保你的资金安全。 |
-| 每笔交易成本最低 - 适合主流的小额支付 | 必须在开启的支付通道中锁定资金 |
-| | 不支持开放式参与 |
+一些状态通道通过采用“全双工”设计解决这个问题,该设计将链下状态分成两个单向“单工”状态,允许并发状态更新。 这种设计提高了链下吞吐量并减少了交易延迟。
## 使用状态通道 {#use-state-channels}
-多个项目提供了您可以整合到您的 dapp 的状态频道的实现方式:
+许多项目提供状态通道实现,你可以将它们集成到自己的去中心化应用程序中:
- [Connext](https://connext.network/)
- [Kchannels](https://www.kchannels.io/)
@@ -64,12 +252,13 @@ sidebarDepth: 3
**状态通道**
- [状态通道上的 EthHub](https://docs.ethhub.io/ethereum-roadmap/layer-2-scaling/state-channels/)
-- [Making Sense of Ethereum’s Layer 2 Scaling Solutions: State Channels, Plasma, and Truebit(理解以太坊的第二层扩容解决方案:状态通道、Plasma 和 Truebit)](https://medium.com/l4-media/making-sense-of-ethereums-layer-2-scaling-solutions-state-channels-plasma-and-truebit-22cb40dcc2f4) _– Josh Stark, Feb 12 2018_
-- [State Channels - an explanation(状态通道)- 解释](https://www.jeffcoleman.ca/state-channels/) _Nov 6, 2015 - Jeff Coleman_
-- [状态通道的基础知识](https://education.district0x.io/general-topics/understanding-ethereum/basics-state-channels/) _District0x_
+- [理解以太坊的二层网络扩容解决方案:状态通道、Plasma 和 Truebit](https://medium.com/l4-media/making-sense-of-ethereums-layer-2-scaling-solutions-state-channels-plasma-and-truebit-22cb40dcc2f4) _– Josh Stark,2018 年 2 月 12 日_
+- [状态通道 - 解释](https://www.jeffcoleman.ca/state-channels/) _ 2015 年 11 月 6 日 - Jeff Coleman_
+- [状态通道基础知识](https://education.district0x.io/general-topics/understanding-ethereum/basics-state-channels/) _ District0x_
+- [区块链状态通道:最先进的技术](https://ieeexplore.ieee.org/document/9627997)
**支付通道**
-- [支付通道的 EthHub](https://docs.ethhub.io/ethereum-roadmap/layer-2-scaling/payment-channels/)
+- [支付通道上的 EthHub](https://docs.ethhub.io/ethereum-roadmap/layer-2-scaling/payment-channels/)
-_还有哪些社区资源对您有所帮助? 请编辑本页面并添加!_
+_还有哪些社区资源对你有所帮助? 请编辑本页面并添加!_
diff --git a/src/content/translations/zh/developers/docs/scaling/validium/index.md b/src/content/translations/zh/developers/docs/scaling/validium/index.md
index 668c7ec0f59..eaf360bbbde 100644
--- a/src/content/translations/zh/developers/docs/scaling/validium/index.md
+++ b/src/content/translations/zh/developers/docs/scaling/validium/index.md
@@ -2,34 +2,163 @@
title: Validium
description: 介绍 Validium - 以太坊社区目前使用的一种扩容解决方案。
lang: zh
-incomplete: true
sidebarDepth: 3
---
-使用 [zk-rollups](/developers/docs/scaling/zk-rollups/)等有效性证明,但数据不存储在第一层以太坊主链上。 这可能导致每个 validium 链每秒有 1 万次易,并且多个链可并行运行。
+Validium 是一种[扩容解决方案](/developers/docs/scaling/),使用[零知识卷叠](/developers/docs/scaling/zk-rollups/)等有效性证明来执行交易的完整性,但它不在以太坊主网上存储交易数据。 虽然链下数据可用性是一种折衷方案,但它可以显著提升可扩展性(Validium 每秒可以处理[约 9000 笔交易,甚至更多](https://blog.matter-labs.io/zkrollup-vs-validium-starkex-5614e38bc263))。
-## 先决条件 {#prerequisites}
+## 前提条件 {#prerequisites}
-您应对所有基础性课题有很好的了解,并且对[以太坊扩容](/developers/docs/scaling/)有深入的了解。 实施 Validium 等扩容解决方案是一个先进的课题,因为这种技术没有经过充分的实践检验,仍将继续进行研发。
+你应该已经阅读并理解关于[以太坊扩容](/developers/docs/scaling/)和[二层网络](/layer-2)的页面。
-## 优点和缺点 {#pros-and-cons}
+## 什么是 Validium? {#what-is-validium}
-| 优点 | 缺点 |
-| ---------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
-| 没有提款延迟(链上/跨链转账没有延迟);因此,资本效益更高。 | 对一般计算/智能合约的支持有限;需要专用语言。 |
-| 在高价值应用程序中,不容易受到可防欺诈系统所面临的某些经济攻击。 | 生成 ZK 证明需要很高的计算能力;对于低吞吐量的应用程序来说不具成本效益。 |
-| | 主观终结时间较慢(生成 ZK 证明的时间为 10-30 分钟)(但由于没有争议时间延迟,所以到完全终结的时间较快)。 |
-| | 生成证明需要链下数据在任何时候都可用。 |
+Validium 是使用链下数据可用性和计算的扩展解决方案,旨在通过在以太坊主网外处理交易来提高吞吐量。 与零知识卷叠(ZK 卷叠)一样,Validium 发布[零知识证明](/glossary/#zk-proof)以便在以太坊上验证链下交易。 这样可以防止无效的状态转换并增强 Validium 链的安全保障。
-### 使用 Validium {#use-validium}
+这些“有效性证明”可以有 ZK-SNARK(零知识简洁非交互式知识论证)或 ZK-STARK(零知识可扩展透明知识论证)等形式。 更多关于[零知识证明](https://consensys.net/blog/blockchain-explained/zero-knowledge-proofs-starks-vs-snarks/)的信息。
-多个项目提供 Validium 的部署,您可以整合到您的去中心化应用中:
+属于 Validium 用户的资金由以太坊上的智能合约控制。 恰如零知识卷叠一样,Validium 几乎可以提供即时提款;在主网上验证提款请求的有效性证明后,用户可以通过提供[默克尔证明](/developers/tutorials/merkle-proofs-for-offline-data-integrity/)提取资金。 默克尔证明验证用户的提款交易是否包含在经过验证的交易批次中,从而允许链上合约处理提款。
-- [Starkware](https://starkware.co/)
-- [Matter Labs zkPorter](https://matter-labs.io/)
+但是,Validium 用户可以冻结他们的资金并限制提款。 如果 Validium 链上的数据可用性管理器不给用户提供链下状态数据,就会发生这种情况。 如果无法访问交易数据,用户将无法计算证明资金所有权和执行提款所需的默克尔证明。
-## 延伸阅读 {#further-reading}
+这是 Validium 和零知识卷叠之间的主要区别,它们在数据可用性范围内的位置不同。 两种解决方案处理数据存储的方式不同,这会对安全性和去信任产生影响。
+
+## Validium 如何与以太坊交互? {#how-do-validiums-interact-with-ethereum}
+
+Validium 是建立在现有以太坊链上的扩容协议。 虽然它在链下执行交易,但 Validium 链由部署在主网上的一系列智能合约管理,包括:
+
+1. **验证者合约**:验证者合约验证 Validium 运营商在进行状态更新时所提交证明的有效性。 该合约包括证明链下交易正确性的有效性证明和验证链下交易数据存在的数据可用性证明。
+
+2. **主合约**:主合约存储区块生产者提交的状态承诺(默克尔根),并在链上验证有效性证明后更新 Validium 的状态。 该合约还处理 Validium 链上的存款和提款。
+
+Validium 还依赖以太坊主链实现:
+
+### 结算 {#settlement}
+
+在父链验证其有效性之前,无法完全确认在 Validium 上执行的交易。 所有在 Validium 上进行的业务最终都必须在主网上结算。 以太坊区块链还为 Validium 用户提供了“结算保障”,这意味着一旦提交到链上,链下交易就不能逆转或改变。
+
+### 安全性 {#security}
+
+作为结算层的以太坊也保证 Validium 上状态转换的有效性。 在 Validium 链上执行的链下交易通过以太坊基础层上的智能合约进行验证。
+
+如果链上验证者合约断定证明无效,则交易被拒绝。 这意味着运营商必须满足以太坊协议执行的有效性条件,然后才能更新 Validium 的状态。
+
+## Validium 如何运作? {#how-does-validium-work}
+
+### 交易 {#transactions}
+
+用户向运营商提交交易,运营商是负责在 Validium 链上执行交易的节点。 一些 Validium 可能采用单个运营商来执行链,或者依靠[权益证明 (PoS)](/developers/docs/consensus-mechanisms/pos/) 机制轮换运营商。
+
+运营商将交易聚合成一个批次并发送到证明线路进行证明。 证明线路接受交易批次(及其他相关数据)作为输入,并输出验证操作正确执行的有效性证明。
+
+### 状态承诺 {#state-commitments}
+
+Validium 的状态被哈希处理成默克尔树,其根存储在以太坊的主合约中。 默克尔根又称为状态根,作为对 Validium 上当前帐户状态和余额的加密承诺。
+
+要执行状态更新,运营商必须(在执行交易后)计算一个新的状态根并将提交给链上合约。 如果有效性证明得到证实,提出的状态被接受,Validium 切换到新的状态根。
+
+### 存款和提款 {#deposits-and-withdrawals}
+
+用户通过在链上合约中存入以太币(或任何与以太坊意见征求兼容的代币),将资金从以太坊转移到 Validium。 该合约将存款事件转发到链下 Validium,并向用户在 Validium 上的地址存入与其存款相同的金额。 运营商还将此存款交易添加到新批次中。
+
+要将资金转移回主网,Validium 用户发起提款交易并将其提交给运营商,后者验证提款请求并将其包含在批次中。 在用户能够退出系统前,他们在 Validium 链上的资产也被销毁。 一旦与该批次相关的有效性证明得到验证,用户就可以调用主合约来提取剩余的初始存款。
+
+作为一种抗审查机制,Validium 协议允许用户直接退出 Validium 合约,无需通过运营商。 在这种情况下,用户需要向验证者合约提供默克尔证明,证明帐户包含在状态根中。 如果证明被接受,用户可以调用主合约的提款函数,从 Validium 中提取他们的资金。
+
+### 批量提交 {#batch-submission}
+
+执行一批交易后,运营商向验证者合约提交相关有效性证明,并向主合约提出新的状态根。 如果证明是有效的,则主合约更新 Validium 的状态并最终确定批次中交易的结果。
+
+与零知识卷叠不同,Validium 上的区块生产者不需要发布交易批次的交易数据(仅发布区块头)。 这使得 Validium 成为一个纯粹的链下扩容协议,而不是在以太坊主链(例如 `calldata`)上发布状态数据的“混合”扩容协议(即[二层网络](/layer-2/))。
+
+### 数据可用性 {#data-availability}
+
+如上所述,Validium 利用一个链下数据可用性模型,运营商通过该模型将所有交易数据存储在以太坊主网之外。 Validium 的低链上数据足迹提升了可扩展性(吞吐量不受以太坊数据处理能力的限制),并降低了用户费用(发布 `calldata` 的成本降低)。
+
+然而,链下数据可用性带来了一个问题:创建或验证默克尔证明所需的数据可能不可用。 这意味着如果运营商采取恶意行为,用户可能无法从链上合约中提取资金。
+
+各种 Validium 解决方案试图通过以去中心化的方式存储状态数据来解决这个问题。 即,强制区块生产者将底层数据发送给“数据可用性管理器”,这些管理器负责存储链下数据并在用户请求时提供给用户。
+
+Validium 中的数据可用性管理器通过签署每个 Validium 批次来证明链下交易数据的可用性。 这些签名构成了一种“可用性证明”,链上验证者合约在批准状态更新之前对其进行检查。
+
+Validium 的数据可用性管理方法不同。 一些依赖受信任方存储状态数据,而另一些则使用随机指定的验证者。
+
+#### 数据可用性委员会 (DAC) {#data-availability-committee)
-- [Validium 和二层 2 x 2 矩阵,第 99 期](https://www.buildblockchain.tech/newsletter/issues/no-99-validium-and-the-layer-2-two-by-two)
+为了保证链下数据的可用性,一些 Validium 解决方案指定了一组受信任的实体(统称为数据可用性委员会 (DAC))来存储状态副本并提供数据可用性证明。 由于成员较少,数据可用性委员会更容易实施并且需要较少的协调。
+
+但是,用户必须信任数据可用性委员会,才能在需要时(例如用于生成默克尔证明)获得数据。 数据可用性委员会的成员有可能[被恶意行为者入侵](https://notes.ethereum.org/DD7GyItYQ02d0ax_X-UbWg?view),然后会扣留链下数据。
+
+[更多关于 Validium 中数据可用性委员会的信息](https://medium.com/starkware/data-availability-e5564c416424)。
+
+#### 绑定数据可用性 {#bonded-data-availability}
+
+其他 Validium 要求负责存储离线数据的参与者在承担其角色之前在智能合约中质押(即锁定)代币。 这种质押作为“保证金”,保证数据可用性管理者之间采取的诚实行为并减少信任假设。 如果这些参与者不能证明数据的可用性,那么保证金就会被惩没。
+
+在绑定数据可用性方案中,任何人在提供要求的质押后,都可以指定其保存链下数据。 这扩大了合格数据可用性管理者池,削弱了对数据可用性委员会 (DAC) 造成影响的中心化。 更重要的是,这种方法依赖于加密经济激励措施防止恶意活动,这比指定受信任方在 Validium 中保护离线数据要安全得多。
+
+[更多关于 Validium 中绑定数据可用性的信息](https://blog.matter-labs.io/zkporter-a-breakthrough-in-l2-scaling-ed5e48842fbf)。
+
+## Volitions 和 Validium {#volitions-and-validium}
+
+Validium 提供了诸多好处,但也进行了折衷(最值得注意的是数据可用性)。 但是,与许多扩容解决方案一样,Validium 适合特定的用例,这就是 Volitions 方案出现的原因。
+
+Volitions 结合了零知识卷叠和 Validium 链,它允许用户在两种扩容解决方案之间切换。 使用 Volitions,用户可以利用 Validium 的链下数据可用性进行某些交易,同时可以在需要时自由地切换到链上数据可用性解决方案(零知识卷叠)。 这实质上使用户可以根据他们的独特情况自由地进行权衡取舍。
+
+去中心化交易所 (DEX) 可能更喜欢使用 Validium 的可扩展和私有基础设施进行大额交易。 它还可以为需要零知识卷叠更高安全性保证和去信任性的用户使用零知识卷叠。
+
+## Validium 和以太坊虚拟机的兼容性 {#validiums-and-evm-compatibility}
+
+与零知识卷叠一样,Validium 最适合简单的应用,例如代币交换和支付。 鉴于在零知识证明线路中证明[以太坊虚拟机](/developers/docs/evm/)指令的开销很大,因此在 Validium 之间很难为通用计算和智能合约执行提供支持。
+
+一些 Validium 项目试图通过编译与以太坊虚拟机兼容的语言(例如 Solidity、Vyper)来生成针对高效证明而优化的自定义字节码,从而回避这个问题。 这种方法的一个缺点是零知识证明友好的新的虚拟机可能不支持重要的以太坊虚拟机操作码,而且开发者必须直接用高级语言编写才能获得最佳体验。 这带来了更多问题:它迫使开发者使用全新的开发堆栈构建去中心化应用程序,并破坏了与当前以太坊基础设施的兼容性。
+
+然而,一些团队正在尝试针对零知识证明线路优化现有以太坊虚拟机操作码。 这将导致零知识以太坊虚拟机 (zkEVM) 的开发,这是一种与以太坊虚拟机兼容的虚拟机,可生成验证程序是否正确执行的证明。 使用零知识以太坊虚拟机,Validium 链可以在链下执行智能合约并提交有效性证明,以便在以太坊上验证链下计算(无需重新执行)。
+
+[更多关于零知识以太坊虚拟机的信息](https://www.alchemy.com/overviews/zkevm)。
+
+## Validium 如何扩展以太坊? {#scaling-ethereum-with-validiums}
+
+### 1. 链下数据存储 {#off-chain-data-storage}
+
+二层网络扩容项目(例如乐观卷叠和零知识卷叠)通过将部分交易数据发布到一层网络,牺牲了纯链下扩容协议(例如 [Plasma](/developers/docs/scaling/plasma/))的无限可扩展性来换取安全性。 然而,这意味着卷叠的可扩展性属性受到以太坊主网上的数据带宽的限制(为此,[数据分片](/upgrades/sharding/)提议是要提高以太坊的数据存储容量)。
+
+Validium 实现了可扩展性,它将所有交易数据保存在链下并且在将状态更新传送到以太坊主链时仅发布状态承诺(和有效性证明)。 然而,有效性证明的存在为 Validium 提供了比其他纯链下扩容解决方案(包括 Plasma 和[侧链](/developers/docs/scaling/sidechains/))更高的安全保障。 通过减少以太坊在验证链下交易之前必须处理的数据量,Validium 设计极大地提升了主网上的吞吐量。
+
+### 2. 递归证明 {#recursive-proofs}
+
+递归证明是一种有效性证明,它验证其他证明的有效性。 这些“证明的证明”的生成方式如下:通过以递归方式聚合多个证明直到创建一个可验证所有先前证明的最终证明,即递归证明。 递归证明通过增加每个有效性证明可以验证的交易数量来提升区块链处理速度。
+
+通常,Validium 运营商提交到以太坊作验证用途的每个有效性证明都会验证单个区块的完整性。 而一个递归证明可用来同时确认几个 Validium 区块的有效性 — 这是可能的,因为证明线路能够以递归方式将几个区块证明聚合成一个最终证明。 如果链上验证者合约接受递归证明,则所有底层区块都会立即最终确定。
+
+## Validium 的优缺点 {#pros-and-cons-of-validium}
+
+| 优点 | 缺点 |
+| -------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
+| 有效性证明强制验证链下交易的完整性,并阻止运营商最终定无效状态更新。 | 生成有效性证明需要使用专用硬件,这会带来中心化风险。 |
+| 提高用户的资本效率(将资金提取回以太坊时不会出现延迟) | 对通用计算/智能合约的支持有限;开发需要专门语言。 |
+| 在高价值应用中,不容易受到基于欺诈证明的系统所面临的某些经济攻击。 | 生成零知识证明需要强大的算力;对于低吞吐量的应用不具有成本效益。 |
+| 通过不将调用数据发布到以太坊主网来降低用户的燃料费用。 | 较慢的主观最终确定性时间(生成零知识证明需要 10-30 分钟),但完全最终确定性要快一些,因为没有争议时间延迟。 |
+| 适用于特定用例,例如优先考虑交易隐私和可扩展性的交易或区块链游戏。 | 可以防止用户提取资金,因为生成所有权的默克尔证明需要链下数据始终可用。 |
+| 链下数据可用性提升了吞吐量并增强了可扩展性。 | 安全模型依赖于信任假设和加密经济激励措施,与完全依赖加密安全机制的零知识卷叠不同。 |
+
+### 使用 Validium/Volitions {#use-validium-and-volitions}
+
+许多项目提供 Validium 和 Volitions 实现,你可以将它们集成到自己的去中心化应用程序中:
+
+**StarkWare StarkEx** - _StarkEx 是基于有效性证明的以太坊二层网络 (L2) 可扩展性解决方案。 它可以在零知识卷叠或 Validium 数据可用性模式下运行。_
+
+- [相关文档](https://docs.starkware.co/starkex-v4/starkex-deep-dive/data-availability-modes#validium)
+- [网站](https://starkware.co/starkex/)
+
+**Matter Labs zkPorter**- _zkPorter 是一个二层扩容协议,它用一种结合了零知识卷叠和分片观点的混合方法来处理数据可用性。 它支持任意多个分片,每个分片都有自己的数据可用性策略。_
+
+- [相关文档](https://docs.zksync.io/zkevm/#what-is-zkporter)
+- [网站](https://zksync.io/)
+
+## 延伸阅读 {#further-reading}
-_您知道有什么社区资源帮助过您吗? 编辑并添加本页面!_
+- [Validium 和二层 2 x 2 矩阵 — 第 99 期](https://www.buildblockchain.tech/newsletter/issues/no-99-validium-and-the-layer-2-two-by-two)
+- [零知识卷叠与 Validium](https://blog.matter-labs.io/zkrollup-vs-validium-starkex-5614e38bc263)
+- [Volition 与新兴数据可用性范围](https://medium.com/starkware/volition-and-the-emerging-data-availability-spectrum-87e8bfa09bb)
+- [Rollups、Validium 和 Volitions:了解最热门的以太坊扩容解决方案](https://www.defipulse.com/blog/rollups-validiums-and-volitions-learn-about-the-hottest-ethereum-scaling-solutions)
diff --git a/src/content/translations/zh/developers/docs/scaling/zk-rollups/index.md b/src/content/translations/zh/developers/docs/scaling/zk-rollups/index.md
index 09e752d203c..77281b8167e 100644
--- a/src/content/translations/zh/developers/docs/scaling/zk-rollups/index.md
+++ b/src/content/translations/zh/developers/docs/scaling/zk-rollups/index.md
@@ -1,32 +1,220 @@
---
title: 零知识卷叠
-description: 零知识卷叠介绍
+description: 零知识卷叠简介 — 以太坊社区使用的一种扩容解决方案。
lang: zh
---
-## 先决条件 {#prerequisites}
+零知识卷叠(ZK 卷叠)是二层网络[扩容解决方案](/developers/docs/scaling/),通过将计算和状态存储转移到链下进行提高了以太坊主网吞吐量。 零知识卷叠可以处理一个批次中的数千笔交易,但仅将一部分最少量的摘要数据发布到主网。 这些摘要数据确定了应对以太坊状态进行的变化以及一些证明这些变化正确性的加密证明。
-您应对所有基础性课题有很好的了解,并且对[以太坊扩容](/developers/docs/scaling/)有深入的了解。 实现诸如 rollup 之类的扩容解决方案是一个高阶主题,因为该技术没有经过多少实战测试,还在继续研发。
+## 前提条件 {#prerequisites}
-在寻找更适合初学者的资源? 请参阅我们的[第二层简介](/layer-2/)。
+你应该已经阅读并理解关于[以太坊扩容](/developers/docs/scaling/)和[二层网络](/layer-2)的页面。
-## 零知识卷叠 {#zk-rollups}
+## 什么是零知识卷叠? {#what-are-zk-rollups}
-**零知识卷叠**将打包数百个链下交易(或“卷叠”)并生成加密证明。 这些证明可以采用 SNARK(简洁的非交互式知识论证)或 STARK(可扩展的透明知识论证)的形式。 SNARK 和 STARK 均称为有效性证明并会发布到第一层。
+**零知识卷叠(ZK 卷叠)**将在链下执行的交易打包(或“卷叠”)成批。 链下计算减少了必须发布到区块链的数据量。 零知识卷叠运营商提交用于表示批次中所有交易的变化摘要,而不是单独发送每笔交易。 他们还生成[有效性证明](/glossary/#validity-proof)来证明状态变化的正确性。 该有效性证明能以加密方式自证,确保提出的以太坊状态变化确实是该批次中所有交易执行后的最终结果。
-零知识卷叠智能合约会在第二层维护所有转账的状态,而且这个状态只能用有效性证明来更新。 这意味着零知识卷叠只需要有效性证明,而不是所有交易数据。 使用零知识卷叠验证区块会更快、更便宜,原因在于其包含的数据更少。
+零知识卷叠的状态由部署在以太坊网络上的智能合约维护。 为了更新这个状态,零知识卷叠节点必须提交一个有效性证明进行验证。 如前所述,有效性证明是一种加密保证,即卷叠提出的状态变化确实是执行给定批次交易的结果。 这意味着零知识卷叠只需提供有效性证明即可在以太坊上最终确定交易,而不是像[乐观卷叠](/developers/docs/scaling/optimistic-rollups/)那样将所有交易数据发布到链上。
-使用零知识卷叠,当资金从第二层转移到第一层时不会有任何延迟,因为零知识卷叠智能合约接受的有效性证明已经验证了资金。
+将资金从零知识卷叠转移到以太坊时不会出现延迟,因为一旦零知识卷叠合约验证了有效性证明后,就会执行退出交易。 相反,从乐观卷叠中提取资金会产生延迟,让任何人都可以使用[欺诈证明](/glossary/#fraud-proof)来挑战退出交易。
-零知识卷叠处于第二层,可以优化以进一步减小交易的大小。 例如,帐户用索引而不是地址表示,这就把交易从 32 个字节减少到只有 4 个字节。 此外,交易也会以 `calldata` 形式写入以太坊,进而减少燃料消耗。
+零知识卷叠将交易作为 `calldata` 写入以太坊。 对智能合约函数进行的外部调用中包含的数据就存储在 `calldata` 中。 `calldata` 中的信息发布在区块链上,让任何人都可以独立重建该卷叠的状态。 零知识卷叠使用压缩技术减少交易数据 — 例如,帐户用索引而不是地址表示,这样可以节省 28 字节的数据。 链上数据发布占据卷叠的大部分成本,因此数据压缩可以降低用户的费用。
-### 优点和缺点 {#zk-pros-and-cons}
+## 零知识卷叠如何与以太坊交互? {#zk-rollups-and-ethereum}
-| 优点 | 缺点 |
-| ---------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
-| 完成时间更快,因为一旦证据被送到主链上,状态即时验证。 | 一些没有 EVM 支持。 |
-| 不太容易受到 [Optimistic rollup](#optimistic-pros-and-cons) 可能会受到的经济攻击。 | 有效性证明的计算量很大 -- 对于链上活动很少的应用来说,不值得这样做。 |
-| 安全和去中心化,因为恢复状态所需的数据储存在第一层。 | 运营者可以影响交易顺序 |
+零知识卷叠链是一种在以太坊区块链上运行并由链上以太坊智能合约管理的链下协议。 零知识卷叠在主网之外执行交易,但会定期将链下交易批次提交到链上卷叠合约。 与以太坊区块链非常相像,这种交易记录是不可更改的并形成了零知识卷叠链。
+
+零知识卷叠的核心架构由以下组件构成:
+
+1. **链上合约**:如前所述,零知识卷叠协议由运行在以太坊上的智能合约控制。 其中包括存储卷叠区块、跟踪存款并监控状态更新的主合约。 另一个上链上合约(验证者合约),它验证区块生产者提交的零知识证明。 因此,以太坊充当零知识卷叠的基础层或“一层网络”。
+
+2. **链下虚拟机 (VM)**:虽然零知识卷叠协议存在于以太坊上,但交易执行和状态存储却在独立于[以太坊虚拟机](/developers/docs/evm/)的单独虚拟机中进行。 这种链下虚拟机是零知识卷叠上交易的执行环境,并作为零知识卷叠协议的第二层或“二层网络”。 在以太坊主网上验证的有效性证明保证链下虚拟机中状态转换的正确性。
+
+零知识卷叠是“混合扩容解决方案” — 独立运行但从以太坊获得安全性的链下协议。 具体来说,以太坊网络强制执行零知识卷叠上状态更新的有效性,并保证每次更新卷叠状态时后台数据的可用性。 因此,零知识卷叠比纯链下扩容解决方案安全得多,例如负责其安全属性的[侧链](/developers/docs/scaling/sidechains/),或 [Validium](/developers/docs/scaling/validiums/),它也使用有效性证明在以太坊上验证交易但将交易数据存储在别处。
+
+零知识卷叠依赖以太坊主协议获得:
+
+### 数据可用性 {#data-availability}
+
+零知识卷叠将链下处理的每笔交易的状态数据发布到以太坊。 通过这些数据,个人或企业就可以复制卷叠的状态并自行验证链。 以太坊将这些数据作为 `calldata` 提供给网络的所有参与者。
+
+零知识卷叠不需要在链上发布过多交易数据,因为有效性证明已经验证了状态转换的真实性。 尽管如此,在链上存储数据仍然很重要,因为这样便可以无需许可对二层网络链的状态进行独立验证,从而让任何人可以提交批量交易并阻止恶意运营商审查或冻结链。
+
+用户需要在链上与卷叠交互。 如果无法访问状态数据,用户将无法查询帐户余额或发起依赖状态信息的交易(例如提款)。
+
+### 交易确定性 {#transaction-finality}
+
+以太坊充当零知识卷叠的结算层:只有当一层网络合约接受有效性证明时,二层网络交易才会最终确定。 这就化解了恶意运营商破坏链的风险(例如,窃取卷叠资金),因为每笔交易都必须在主网上得到批准。 此外,以太坊保证一旦在一层网络上最终确定后,用户操作就不能被逆转。
+
+### 抗审查 {#censorship-resistance}
+
+大多数零知识卷叠使用“超级节点”(运营商)来执行交易、生产批次并将区块提交到一层网络。 尽管这样做保证了效率,但也增加了审查风险:恶意零知识卷叠运营商可以通过拒绝将用户的交易添加到批次中来审查用户。
+
+作为一项安全措施,零知识卷叠允许用户在认为自己受到运营商审查时直接向主网上的卷叠合约提交交易。 这允许用户强制从零知识卷叠退出到以太坊,而无需依赖运营商的许可。
+
+## 零知识卷叠如何运作? {#how-do-zk-rollups-work}
+
+### 交易 {#transactions}
+
+零知识卷叠中的用户签署交易,提交给二层网络运营商进行处理并添加到下一批次中。 在某些情况下,运营商是一个中心化实体(即排序者),它执行交易,将交易聚合成批次,然后提交到一层网络。 该系统中的排序者是唯一获得允许可生成二层网络区块并将卷叠交易添加到零知识卷叠合约的实体。
+
+其他零知识卷叠可以通过一组[权益证明](/developers/docs/consensus-mechanisms/pos/)验证者轮换运营商角色。 潜在的运营商将资金存入卷叠合约,每份质押的额度会影响质押者被选中生产下一批次卷叠的机会。 如果运营商实施恶意行为,他们的质押会被罚没,这会激励他们发布有效的区块。
+
+#### 零知识卷叠如何在以太坊上发布交易数据 {#how-zk-rollups-publish-transaction-data-on-ethereum}
+
+如前所述,交易数据作为 `calldata` 发布到以太坊上。 `calldata` 是智能合约中的数据区,用于将参数传递给函数,其行为类似于[内存](/developers/docs/smart-contracts/anatomy/#memory)。 虽然 `calldata` 不存储到以太坊状态中,但它作为以太坊链[历史日志](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html?highlight=memory#logs)的一部分一直存在于链上。 `calldata` 不会影响以太坊的状态,使其成为一种在链上存储数据的实惠方式。
+
+`calldata` 关键字通常标识交易调用的智能合约方法,并以任意字节序列的形式保存该方法的输入。 零知识卷叠使用 `calldata` 将压缩的交易数据发布到链上;卷叠运营商只需通过调用卷叠合约中所需的函数来添加一个新批次,并将压缩数据作为函数参数传递。 这有助于降低用户的成本,因为大部分卷叠费用用于在链上存储交易数据。
+
+### 状态承诺 {#state-commitments}
+
+零知识卷叠的状态包括二层网络帐户和余额,用[默克尔树](/whitepaper/#merkle-trees)表示。 默克尔树根(默克尔根)的加密哈希存储在链上合约中,让卷叠协议可以跟踪零知识卷叠状态的变化。
+
+在执行一组新交易后,卷叠交易转换到新状态。 发起状态转换的运营商需要计算一个新的状态根并提交到链上合约。 如果与批次相关的有效性证明通过验证者合约的身份验证,则新默克尔根将成为零知识卷叠的规范状态根。
+
+除了计算状态根之外,零知识卷叠运营商还创建了一个批处理根 — 包含批处理中所有交易的默克尔树的根。 当提交新批次时,卷叠合约存储批次根,允许用户证明交易(例如,提款请求)包含在批次中。 用户必须提供交易详情、批次根和显示包含路径的 [Merkle 证明](/developers/tutorials/merkle-proofs-for-offline-data-integrity/)。
+
+### 有效性证明 {#validity-proofs}
+
+零知识卷叠运营商提交到一层网络合约的新状态根是卷叠状态更新的结果。 假设 Alice 向 Bob 发送了 10 个代币,运营商只需将 Alice 的余额减少 10 并将 Bob 的余额增加 10。 然后运营商对更新后的帐户数据进行哈希处理,重建卷叠的默克尔树,并将新默克尔根提交到链上合约。
+
+但是,在运营商证明新默克尔根是由卷叠状态的正确更新产生之前,卷叠合约不会自动接受提出的状态承诺。 零知识卷叠运营商通过生成有效性证明来做到这一点,有效性证明是一种简单的加密承诺,用于验证批量交易的正确性。
+
+有效性证明允许参与方在不透露陈述本身的情况下证明陈述的正确性 — 因此,它们又称为零知识证明。 零知识卷叠使用有效性证明确认链下状态转换的正确性,而无需在以太坊上重新执行交易。 这些证明可以有 [ZK-SNARK](https://arxiv.org/abs/2202.06877)(零知识简洁非交互式知识论证)或 [ZK-STARK](https://eprint.iacr.org/2018/046)(零知识可扩容透明知识论证)两种形式。
+
+SNARK 和 STARK 都有助于证明零知识卷叠中链下计算的完整性,尽管每种证明类型都有不同的特征。
+
+**零知识简洁非交互式知识论证 (ZK-SNARK)**
+
+为了让 ZK-SNARK 协议起作用,必须创建公共参考字符串 (CRS),公共参考字符串提供公共参数来证明和验证有效性证明。 证明系统的安全性取决于公共参考字符串设置;如果用于创建公共参数的信息落入恶意行为者手中,他们可能会生成虚假的有效性证明。
+
+一些零知识卷叠尝试通过采用[多方计算仪式 (MPC)](https://zkproof.org/2021/06/30/setup-ceremonies/amp/) 解决这一问题,即让受信任个人为 ZK-SNARK 线路生成公共参数。 每一方都提供一些随机性(称为“有毒废物”)来构建公共参考字符串,而且必须立即将其销毁。
+
+使用受信任的设置,因为它们提高了公共参考字符串设置的安全性。 只要诚实参与者销毁其输入,ZK-SNARK 系统的安全性就得到了保证。 尽管如此,这种方法仍然需要信任相关人员删除他们的抽样随机性,并且不会破坏系统的安全保障。
+
+撇开信任假设不谈,ZK-SNARK 因其更小的证明大小和恒定时间验证而广受欢迎。 由于运行零知识卷叠的较大一部分成本用于一层网络上的证明验证,因此二层网络使用 ZK-SNARK 生成可在主网上快速、经济实惠地验证的证明。
+
+**零知识可扩容透明知识论证 (ZK-STARK)**
+
+与 ZK-SNARK 一样,ZK-STARK 证明链下计算的有效性而不会透露输入。 然而,ZK-STARK 被认为是对 ZK-SNARK 的改进,因为前者具有可扩展性和透明性。
+
+ZK-STARK 是“透明的”,因为无需受信任的公共参考字符串 (CRS) 设置,它们就可以工作。 然而,ZK-STARK 依靠可公开验证的随机性来设置用于生成和验证证明的参数。
+
+ZK-STARK 还提供了更强的可扩展性,因为证明和验证有效性证明所需的时间相对于底层计算的复杂性呈*准线性*增加。 对于 ZK-SNARK,证明和验证时间相对于底层计算的规模呈*线性*增加。 这意味着在涉及大型数据集时,ZK-STARK 比 ZK-SNARK 的证明和验证时间更少,这使得前者适用于大批量应用。
+
+ZK-STARK 对于量子计算机也是安全的,而 ZK-SNARK 中使用的椭圆曲线密码学 (ECC) 被广泛认为容易受到量子计算攻击。 ZK-STARK 的缺点是它们产生的证明尺寸更大,在以太坊上验证的成本更高。 此外,它们不支持递归,而递归是使用零知识证明扩展链下计算的关键。
+
+#### 有效性证明如何在零知识卷叠中运作? {#validity-proofs-in-zk-rollups}
+
+##### 证明生成
+
+在接受交易之前,运营商将进行常规检查。 包括确认:
+
+- 发送者和接收者帐户是状态树的一部分。
+- 发送者有足够的资金处理交易。
+- 交易是正确的并与卷叠中发送者的公钥匹配。
+- 发送者的随机数是正确的,等等。
+
+在零知识卷叠节点有足够的交易后,该节点将这些交易聚合成一个批次,并为证明线路编译输入以编译成简单的零知识证明。 其中包括:
+
+- 包含批次中所有交易的默克尔树。
+- 用于证明交易包含在批次中的默克尔交易证明。
+- 交易中每个发送者-接收者对的默克尔证明,用于证明这些帐户是卷叠状态树的一部分。
+- 一组中间状态根,通过在应用每笔交易的状态更新(即减少发送方帐户并增加接收方帐户)之后更新状态根获得。
+
+证明线路通过“遍历”每笔交易并执行和运营商执行的相同检查来计算有效性证明,之后再处理交易。 首先,它使用提供的默克尔证明来验证发送者的帐户是现有状态根的一部分。 然后它减少发送者的余额,增加他们的随机数,对更新的帐户数据进行哈希处理,并将其与默克尔证明结合以生成一个新的默克尔根。
+
+这个默克尔根反映出零知识卷叠状态的唯一变化:发送者余额和随机数的变化。 这是可能出现的,因为用来证明帐户存在的默克尔证明用于产生新的状态根。
+
+证明线路对接收者帐户执行相同过程。 它(使用默克尔证明)检查接收者帐户是否存在于中间状态根下,增加他们的余额,对帐户数据重新进行哈希处理,并将其与默克尔证明结合以生成新的状态根。
+
+该过程对每笔交易重复;每次“循环”均会通过更新发送者帐户创建一个新的状态根,并通过更新接收者帐户随后创建一个新状态根。 如前所述,状态根的每次更新都代表卷叠状态树变化的一部分。
+
+零知识证明线路迭代整个交易批次,并在执行最后一个交易后验证导致最终状态根的更新顺序。 最后计算的默克尔根成为零知识卷叠的最新规范状态根。
+
+##### 证明验证
+
+在证明线路验证状态更新的正确性后,二层网络运营商将计算出的有效性证明提交给一层网络上的验证者合约。 合约的验证线路验证证明的有效性,并检查证明中包含的公共输入:
+
+- **前状态根**:零知识卷叠的旧状态根(在执行交易批次之前),表示二层网络链的前一个已知有效状态。
+
+- **后状态根**:零知识卷叠的新状态根(执行交易批次之后),表示二层网络链的最新状态。 后状态根是在证明线路中应用状态更新后产生的最终根。
+
+- **批处理根**:批次的默克尔根,通过*默克尔化*批次中的交易并对树根进行哈希处理得到。
+
+- **交易输入**:与在已提交批次中执行的交易相关的数据。
+
+如果证明符合线路条件(即证明是有效的),则意味着存在一系列有效交易,这些交易将卷叠从先前状态(由前状态根提供加密指纹)转换到新状态(由后状态根提供加密指纹)。 如果前状态根与存储在卷叠合约中的根匹配,并且证明是有效的,则卷叠合约从证明中获取后状态根并更新其状态树以反映卷叠的状态变化。
+
+### 进入和退出 {#entries-and-exits}
+
+用户通过向部署在一层网络链上的卷叠合约中存入代币来进入零知识卷叠。 此交易已排队,因为只有运营商才能将交易提交到卷叠合约。
+
+如果待处理的存款队列开始填满,零知识卷叠运营商将接受存款交易并将其提交到卷叠合约。 一旦用户的资金存入卷叠后,他们就可以通过将交易发送给运营商进行处理来开始交易。 用户可以验证他们在卷叠上的余额,方法是对其帐户进行哈希处理,将哈希值发送到卷叠合约,并提供对照当前状态根进行验证的默克尔证明。
+
+从零知识卷叠撤回到一层网络很简单。 用户通过将其卷叠上的资产发送到指定帐户进行销毁来发起退出交易。 如果运营商将该交易添加到下一批次中,用户可以向链上合约提交提款请求。 该提款请求将包括以下内容:
+
+- 默克尔证明,证明用户的交易添加到交易批次中的销毁账户
+
+- 交易数据
+
+- 批处理根
+
+- 一层网络地址,用于接收存入资金
+
+卷叠合约对交易数据进行哈希处理,检查批处理根是否存在,并使用默克尔证明检查交易哈希是否是批处理根的一部分。 之后,合约执行退出交易并将资金发送到用户选择的一层网络上的地址。
+
+## 零知识卷叠和以太坊虚拟机的兼容性 {#zk-rollups-and-evm-compatibility}
+
+与乐观卷叠不同,零知识卷叠不直接与[以太坊虚拟机 (EVM)](/developers/docs/evm/) 兼容。 在线路中证明通用以太坊虚拟机计算比证明简单计算(如前面描述的代币转账),更加困难且更加耗费资源。
+
+然而,[零知识技术的进步](https://hackmd.io/@yezhang/S1_KMMbGt#Why-possible-now)重新点燃了将以太坊虚拟机计算封装在零知识证明中的兴趣。 这些努力旨在创建一个零知识以太坊虚拟机 (zkEVM) 实现,它可以高效验证程序执行的正确性。 零知识以太坊虚拟机重新创建在线路中进行证明/验证的现有以太坊虚拟机操作码,从而允许执行智能合约。
+
+与以太坊虚拟机一样,零知识以太坊虚拟机在对某些输入执行计算之后在状态之间转换。 差别在于零知识以太坊虚拟机还创建了零知识证明,验证程序执行中每一步的正确性。 有效性证明可以验证影响虚拟机状态(内存、堆栈、存储)和计算本身的操作的正确性(即,操作是否调用了正确的操作码并正确执行它们?)。
+
+与以太坊虚拟机兼容的零知识卷叠的引入,有望帮助开发者利用零知识证明的可扩展性和安全保障。 更重要的是,与原生以太坊基础设施的兼容性意味着,开发者可以使用熟悉(且经过实战考验)的工具和语言构建零知识友好的去中心化应用程序。
+
+## 零知识卷叠的费用如何运作? {#how-do-zk-rollup-fees-work}
+
+用户为零知识卷叠上的交易支付多少费用取决于燃料费用,就像在以太坊主网上一样。 但是,燃料费用在二层网络上的运作方式不同,并受以下费用影响:
+
+1. **状态写入**:写入以太坊状态(即在以太坊区块链上提交交易)有固定费用。 零知识卷叠通过批量处理交易并将固定费用分摊给多名用户来降低该费用。
+
+2. **数据发布**:零知识卷叠将每笔交易的状态数据作为 `calldata` 发布到以太坊。 `calldata` 费用目前由 [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) 监管,它规定对于 `calldata` 的非零字节和零字节费用分别为 16 单位和 4 单位燃料。 每笔交易支付的费用受需要在链上为其发布多少 `calldata` 的影响。
+
+3. **二层网络运营商费用**:这是支付给卷叠运营商的金额,用于补偿处理交易产生的计算费用,很像以太坊上的矿工费用一样。
+
+4. **证明生成和验证**:零知识卷叠运营商必须为交易批次生成有效性证明,该操作耗费大量资源。 在主网上验证零知识证明也需要花费燃料(约 500,000 单位燃料)。
+
+除了批量处理交易之外,零知识卷叠通过压缩交易数据降低用户的费用。 你可以[查看实时概览](https://l2fees.info/),了解使用以太坊零知识卷叠的费用。
+
+## 零知识卷叠如何扩展以太坊? {#scaling-ethereum-with-zk-rollups}
+
+### 交易数据压缩 {#transaction-data-compression}
+
+零知识卷叠通过在链下计算来提升以太坊基础层的吞吐量,但真正提升扩容的是压缩交易数据。 以太坊的[区块大小](/developers/docs/blocks/#block-size)限制了每个区块可以保存的数据,进而限制了每个区块处理的交易数量。 通过压缩交易相关数据,零知识卷叠显著增加了每个区块处理的交易数量。
+
+零知识卷叠能够比乐观卷叠更好地压缩交易数据,因为它们不必发布验证每笔交易所需的所有数据。 它们只需要发布在卷叠上重建帐户和余额的最新状态所需的最少量数据。
+
+### 递归证明 {#recursive-proofs}
+
+零知识证明的一个优点是证明可以验证其他证明。 例如,单个 ZK-SNARK 可以验证其他 ZK-SNARK。 这种“证明的证明”被称为递归证明,它们显著提高了零知识卷叠的吞吐量。
+
+目前,有效性证明是逐块生成的,并提交给一层网络合约进行验证。 然而,验证单个区块证明限制了零知识卷叠可以实现的吞吐量,因为当运营商提交证明时只能最终确定一个区块。
+
+然而,递归证明可以用一个有效性证明最终确定多个区块。 这是因为证明线路以递归方式聚合多个区块证明,直到创建一个最终证明。 二层网络运营商提交该递归证明,如果合约接受它,所有相关区块将立即最终确定。 使用递归证明,可以在以太坊上每隔一段时间最终确定的零知识卷叠交易的数量会增加。
+
+### 零知识卷叠的优缺点 {#zk-rollups-pros-and-cons}
+
+| 优点 | 缺点 |
+| ----------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
+| 有效性证明确保链下交易的正确性,并阻止运营商执行无效的状态转换。 | 与计算和验证有效性证明相关的成本很高,并且可能会增加卷叠用户的费用。 |
+| 一旦在一层网络上验证了有效性证明,在批准状态更新后,交易的最终确定更快。 | 由于零知识技术的复杂性,构建与以太坊虚拟机兼容的零知识卷叠很困难。 |
+| 依靠去信任加密机制来保证安全性,而不是像[乐观卷叠](/developers/docs/scaling/optimistic-rollups/#optimistic-pros-and-cons)那样依靠受激励参与者的诚信。 | 生成有效性证明需要专用硬件,这可能会鼓励一些参与方对链进行集中控制。 |
+| 将恢复链下状态所需的数据存储在一层网络上,从而保证安全性、抗审查性和去中心化。 | 中心化运营商(排序者)可以影响交易的顺序。 |
+| 用户可以从更高的资本效率中受益,并且可以毫无拖延地从二层网络中提取资金。 | 硬件要求可能会减少能够强制推进链状态的参与者数量,从而增加恶意运营商冻结卷叠状态和审查用户的风险。 |
+| 不依赖于可用性假设,用户不必验证链来保护他们的资金。 | 一些证明系统(例如 ZK-SNARK)需要受信任的设置,如果处理不当,可能会危及零知识卷叠的安全模型。 |
+| 更好的数据压缩有助于降低在以太坊上发布 `calldata` 的成本,并最大限度地减少用户的卷叠费用。 | |
### 零知识卷叠的直观解释 {#zk-video}
@@ -36,12 +224,30 @@ lang: zh
### 使用零知识卷叠 {#use-zk-rollups}
-零知识卷叠有多种实现方式,您可以将其整合到您的去中心化应用程序中。
+零知识卷叠有多种实现方式,你可以将其整合到自己的去中心化应用程序中:
-**零知识卷叠相关阅读**
+## 零知识以太坊虚拟机上有哪些项目? {#zkevm-projects}
+
+零知识以太坊虚拟机上运行的项目包括:
+
+- **[ZKSync](https://docs.zksync.io/zkevm/)** - _ZkSync 2.0 是由 Matter Labs 构建的与以太坊虚拟机兼容的零知识卷叠,由其自己的零知识以太坊虚拟机提供支持。_
+
+- **[Applied ZKP](https://github.com/privacy-scaling-explorations/zkevm-specs)** - _Applied ZKP 是由以太坊基金会资助的项目,旨在开发与以太坊虚拟机兼容的零知识卷叠以及为以太坊区块生成有效性证明的机制。_
+
+- **[Scroll](https://scroll.io/blog/zkEVM)** - _Scroll 是 一家致力于为以太坊构建原生零知识以太坊虚拟机二层解决方案的技术驱动型公司。_
+
+- **[Polygon Hermez](https://docs.hermez.io/zkEVM/architecture/introduction/)** - _Hermez 2.0 是以太坊主网上的去中心化零知识卷叠,它在零知识以太坊虚拟机 (zkEVM) 上运行,以透明的方式执行以太坊交易,包括具有零知识证明验证的智能合约。_
+
+## 进一步阅读 ZK-rollups 阅读 {#further-reading-on-zk-rollups}
-- [什么是零知识 Rollup?](https://coinmarketcap.com/alexandria/glossary/zero-knowledge-rollups)
+- [什么是零知识卷叠?](https://coinmarketcap.com/alexandria/glossary/zero-knowledge-rollups)
+- [什么是零知识卷叠?](https://alchemy.com/blog/zero-knowledge-rollups)
- [EthHub 上关于零知识卷叠的介绍](https://docs.ethhub.io/ethereum-roadmap/layer-2-scaling/zk-rollups/)
-- [简洁的非交互式知识论证”对比“可扩展的透明知识论证](https://consensys.net/blog/blockchain-explained/zero-knowledge-proofs-starks-vs-snarks/)
+- [STARKs 和 SNARKs](https://consensys.net/blog/blockchain-explained/zero-knowledge-proofs-starks-vs-snarks/)
+- [什么是 zkEVM?](https://www.alchemy.com/overviews/zkevm)
+- [zkEVM 简介](https://hackmd.io/@yezhang/S1_KMMbGt)
+- [Awesome-zkEVM 资源](https://github.com/LuozhuZhang/awesome-zkevm)
+- [ZK-SNARKS 底层技术](https://vitalik.ca/general/2017/02/01/zk_snarks.html)
+- [SNARK,怎么可能?](https://vitalik.ca/general/2021/01/26/snarks.html)
diff --git a/src/content/translations/zh/developers/docs/standards/index.md b/src/content/translations/zh/developers/docs/standards/index.md
index 4fcc997883f..2a98779ef16 100644
--- a/src/content/translations/zh/developers/docs/standards/index.md
+++ b/src/content/translations/zh/developers/docs/standards/index.md
@@ -7,34 +7,48 @@ incomplete: true
## 标准概述 {#standards-overview}
-以太坊社区已经采用了许多标准,这有助于在项目的不同实现中保持统一的兼容性(例如[以太坊客户](/developers/docs/nodes-and-clients/)和钱包),并确保智能合约和 dapps 仍保持兼容。
+以太坊社区已经采用了许多标准,这有助于在项目的不同实现中保持统一的兼容性(例如[以太坊客户](/developers/docs/nodes-and-clients/)和钱包),并确保智能合约和 dapps 仍保持兼容。
通常,标准作为[以太坊改进提议](/eips/) (EIP) 提出,由社区成员通过[标准流程](https://eips.ethereum.org/EIPS/eip-1)讨论确定。
-- [EIPS 简介](/eips/)
+- [以太坊改进提案介绍](/eips/)
- [EIP 列表](https://eips.ethereum.org/)
- [EIP GitHub 存储库](https://github.com/ethereum/EIPs)
- [EIP 讨论板](https://ethereum-magicians.org/c/eips)
- [以太坊治理简介](/governance/)
- [以太坊治理概述](https://web.archive.org/web/20201107234050/https://blog.bmannconsulting.com/ethereum-governance/) _2019 年 3 月 31 日 - Boris Mann_
- [以太坊协议开发治理和网络升级协调](https://hudsonjameson.com/2020-03-23-ethereum-protocol-development-governance-and-network-upgrade-coordination/) _2020 年 3 月 23 日 - Hudson Jameson_
-- [以太坊核心开发者会议播放列表](https://www.youtube.com/playlist?list=PLaM7G4Llrb7zfMXCZVEXEABT8OSnd4-7w) _(YouTube 播放列表)_
+- [以太坊核心开发者会议播放列表](https://www.youtube.com/playlist?list=PLaM7G4Llrb7zfMXCZVEXEABT8OSnd4-7w)_(YouTube 播放列表)_
## 标准的类型 {#types-of-standards}
-某些 EIP 与应用层规范相关(例如智能合约标准格式),这类规范被称为[以太坊意见征求 (ERC)](https://eips.ethereum.org/erc)。 许多 ERC 是以太坊生态系统中被广泛使用的关键标准。
+EIP 有 3 种类型:
-- [ERC 列表](https://eips.ethereum.org/erc)
+- 标准方向:描述影响大多数或所有以太坊实现的任何更改
+- [元方向](https://eips.ethereum.org/meta):描述围绕以太坊的流程或提议对流程的更改
+- [信息方向](https://eips.ethereum.org/informational):描述以太坊设计问题或向以太坊社区提供一般指南或信息
+
+此外,标准跟踪细分为 4 类:
+
+- [核心](https://eips.ethereum.org/core):需要共识分叉的改进
+- [网络](https://eips.ethereum.org/networking):围绕 devp2p 和轻量级以太坊 Subprotocol 的改进,以及对 Whisper 和 Swarm 的网络协议规范提议的改进。
+- [接口](https://eips.ethereum.org/interface):围绕客户端应用程序接口/远程过程调用规范和标准以及某些语言级标准(如方法名称和合约应用程序二进制接口)的改进。
+- [以太坊意见征求](https://eips.ethereum.org/erc):应用程序级标准和约定
+
+关于这些不同类型和类别的更多详细信息,请参见 [EIP-1](https://eips.ethereum.org/EIPS/eip-1#eip-types)
### 代币标准 {#token-standards}
- [ERC-20](/developers/docs/standards/tokens/erc-20/) - 同质化(可互换)代币的标准接口,比如投票代币、质押代币或虚拟货币。
- [ERC-721](/developers/docs/standards/tokens/erc-721/) - 非同质化代币的标准接口,比如艺术作品或歌曲的契约。
-- [ERC-777](/developers/docs/standards/tokens/erc-777/) - 关于 ERC-20 的代币标准改进。
-- [ERC-1155](/developers/docs/standards/tokens/erc-1155/) - 一个能包括同质化和非同质化资产的代币标准。
+- [ERC-777](/developers/docs/standards/tokens/erc-777/) - 针对 ERC-20 改进的代币标准。
+- [ERC-1155](/developers/docs/standards/tokens/erc-1155/) - 可包含同质化和非同质化资产的代币标准。
+- [ERC-4626](/developers/docs/standards/tokens/erc-4626/) - 一个代币化的资金库标准,旨在优化和统一收益资金库的技术参数。
-了解更多关于 [代币标准](/developers/docs/standards/tokens/)的信息。
+了解更多关于[代币标准](/developers/docs/standards/tokens/)的信息。
## 延伸阅读 {#further-reading}
-_你知道有什么社区资源帮助过你吗? 编辑并添加本页面!_
+- [以太坊改进提议 (EIP)](/eips/)
+
+_还有哪些社区资源对你有所帮助? 请编辑本页面并添加!_
diff --git a/src/content/translations/zh/developers/docs/standards/tokens/erc-1155/index.md b/src/content/translations/zh/developers/docs/standards/tokens/erc-1155/index.md
index cd30e35f658..df24b5f6d43 100644
--- a/src/content/translations/zh/developers/docs/standards/tokens/erc-1155/index.md
+++ b/src/content/translations/zh/developers/docs/standards/tokens/erc-1155/index.md
@@ -14,7 +14,7 @@ lang: zh
[EIP-1155](https://eips.ethereum.org/EIPS/eip-1155) 中对 ERC-1155 代币进行了全面的描述。
-## 前体条件 {#prerequisites}
+## 前提条件 {#prerequisites}
为了更好地理解这一页面的内容,我们建议您先阅读[代币标准](/developers/docs/standards/tokens/)、[ERC-20](/developers/docs/standards/tokens/erc-20/) 和 [ERC-721](/developers/docs/standards/tokens/erc-721/)。
@@ -95,9 +95,9 @@ function isApprovedForAll(
) external view returns (bool);
```
-审批过程与 ERC-20 略有不同。 这里不是批准特定金额,而是通过 `setApprovalForall` 函数设置操作帐户为已批准或未批准。
+审批过程与 ERC-20 略有不同。 这里不是批准特定金额,而是通过 `setApprovalForAll` 函数设置操作帐户为已批准或未批准。
-查看当前的审批状态可以通过 `isApprovedForall` 完成。 如您所见,要么全部批准,要么不批准。 不能定义要批准代币的数量,甚至代币类型。
+查看当前的审批状态可以通过 `isApprovedForAll` 完成。 如您所见,要么全部批准,要么不批准。 不能定义要批准代币的数量,甚至代币类型。
这是考虑到简洁性而故意设计的。 您只能批准一个地址的所有代币。
@@ -141,6 +141,6 @@ _注意_:包括钩子在内的所有批处理函数也均作为非批处理的
## 延伸阅读 {#further-reading}
- [EIP-1155:多代币标准](https://eips.ethereum.org/EIPS/eip-1155)
-- [ERC-1155:Openzepelin 文档](https://docs.openzeppelin.com/contracts/3.x/erc1155)
-- [ERC-1155:GitHub 代码库](https://github.com/enjin/erc-1155)
+- [ERC-1155:OpenZeppelin 文档](https://docs.openzeppelin.com/contracts/3.x/erc1155)
+- [ERC-1155: GitHub Repo](https://github.com/enjin/erc-1155)
- [Alchemy NFT API](https://docs.alchemy.com/alchemy/enhanced-apis/nft-api)
diff --git a/src/content/translations/zh/developers/docs/standards/tokens/erc-20/index.md b/src/content/translations/zh/developers/docs/standards/tokens/erc-20/index.md
index 4d276dc4dae..b2c06b82adb 100644
--- a/src/content/translations/zh/developers/docs/standards/tokens/erc-20/index.md
+++ b/src/content/translations/zh/developers/docs/standards/tokens/erc-20/index.md
@@ -22,9 +22,9 @@ lang: zh
**什么是 ERC-20?**
-ERC-20 提供了一个同质化代币的标准,换句话说,每个代币与另一个代币(在类型和价值上)完全相同。 例如,一个 ERC-20 代币就像以太币一样,意味着一个代币会并永远会与其他代币一样。
+ERC-20 提出了一个同质化代币的标准,换句话说,它们具有一种属性,使得每个代币都与另一个代币(在类型和价值上)完全相同。 例如,一个 ERC-20 代币就像以太币一样,意味着一个代币会并永远会与其他代币一样。
-## 前体条件 {#prerequisites}
+## 前提条件 {#prerequisites}
- [帐户](/developers/docs/accounts)
- [智能合约](/developers/docs/smart-contracts/)
@@ -41,7 +41,7 @@ ERC-20 的功能示例包括:
- 获取网络上可用代币的总供应量
- 批准一个帐户中一定的代币金额由第三方帐户使用
-如果智能合约实施了下列方法和事件,它可以被称为 ERC-20 代币合约, 一旦部署,将负责跟踪以太坊上创建的代币。
+如果智能合约实施了下列方法和事件,它可以被称为 ERC-20 代币合约,一旦部署,将负责跟踪以太坊上创建的代币。
来自 [EIP-20](https://eips.ethereum.org/EIPS/eip-20):
@@ -68,11 +68,11 @@ event Approval(address indexed _owner, address indexed _spender, uint256 _value)
### 示例 {#web3py-example}
-让我们看看如此重要的一个标准是如何使我们能够简单地检查以太坊上的任何 ERC-20 代币合约。 我们只需要合约的应用程序二进制接口 (ABI) 来创造一个 ERC-20 代币界面。 下面我们将使用一个简化的应用程序二进制接口,使其成为一个简单易用的例子。
+让我们看看如此重要的一个标准是如何使我们能够简单地检查以太坊上的任何 ERC-20 代币合约。 我们只需要合约的应用程序二进制接口 (ABI) 来创造一个 ERC-20 代币界面。 下面我们将使用一个简化的应用程序二进制接口,让例子变得更为简单。
#### Web3.py 示例 {#web3py-example}
-首先,确认已经安装了 [Web3.py](https://web3py.readthedocs.io/en/stable/quickstart.html#installation)Python 库。
+首先,请确保您已安装 [Web3.py](https://web3py.readthedocs.io/en/stable/quickstart.html#installation) Python 库:
```
$ pip install web3
@@ -144,5 +144,5 @@ print("Addr Balance:", addr_balance)
## 延伸阅读 {#further-reading}
- [EIP-20:ERC-20 代币标准](https://eips.ethereum.org/EIPS/eip-20)
-- [OpenZepelin - 代币](https://docs.openzeppelin.com/contracts/3.x/tokens#ERC20)
-- [OpenZepelin - ERC-20 实施](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol)
+- [OpenZeppelin - 代币](https://docs.openzeppelin.com/contracts/3.x/tokens#ERC20)
+- [OpenZeppelin - ERC-20 实施](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol)
diff --git a/src/content/translations/zh/developers/docs/standards/tokens/erc-4626/index.md b/src/content/translations/zh/developers/docs/standards/tokens/erc-4626/index.md
new file mode 100644
index 00000000000..e97bb084849
--- /dev/null
+++ b/src/content/translations/zh/developers/docs/standards/tokens/erc-4626/index.md
@@ -0,0 +1,207 @@
+---
+title: ERC-4626 代币化资金库标准
+description: 收益资金库的标准
+lang: zh
+---
+
+## 介绍 {#introduction}
+
+ERC-4626 是优化和统一收益资金库技术参数的标准。 它为表示单个底层 ERC-20 代币的份额的代币化收益资金库提供标准应用程序接口。 ERC-4626 还概述了使用 ERC-20 的代币化资金库的可选扩展,提供存款、提取代币和读取余额的基本功能。
+
+**ERC-4626 在收益资金库中的作用**
+
+借贷市场、聚合器和本质上计息的代币可以帮助用户通过执行不同的策略来找到他们的加密代币的最佳收益。 这些策略的完成方式略有不同,这可能容易出错或浪费开发资源。
+
+收益资金库的 ERC-4626 标准通过创建更加一致和健壮的实现模式,无需开发者提供专门的工作,就能减少集成工作量并解锁在各种应用程序中获取收益的途径。
+
+[EIP-4626](https://eips.ethereum.org/EIPS/eip-4626) 中对 ERC-4626 代币进行了全面的描述。
+
+## 前提条件 {#prerequisites}
+
+为了更好地理解这个页面,我们建议您首先阅读[代币标准](/developers/docs/standards/tokens/)和 [ERC-20](/developers/docs/standards/tokens/erc-20/)。
+
+## ERC-4626 的函数和功能: {#body}
+
+### 方法 {#methods}
+
+#### asset {#asset}
+
+```solidity
+function asset() public view returns (address)
+```
+
+此函数返回用于资金库记帐、存款和取款的标的代币的地址。
+
+#### totalAssets {#totalassets}
+
+```solidity
+function totalAssets() public view returns (uint256)
+```
+
+此函数返回资金库持有的标的资产总量。
+
+#### convertToShares {#convertoshares}
+
+```solidity
+function convertToShares(uint256 assets) public view returns (uint256 shares)
+```
+
+此函数返回 `shares` 的数量,该数量将由资金库兑换为提供的 `assets` 数量。
+
+#### convertToAssets {#convertoassets}
+
+```solidity
+function convertToAssets(uint256 shares) public view returns (uint256 assets)
+```
+
+此函数返回 `assets` 的数量,该数量将由资金库兑换为提供的 `shares` 数量。
+
+#### maxDeposit {#maxdeposit}
+
+```solidity
+function maxDeposit(address receiver) public view returns (uint256)
+```
+
+此函数返回 `receiver` 的一次 [`deposit`](#deposit) 调用中可以存入的最大标的资产数量。
+
+#### previewDeposit {#previewdeposit}
+
+```solidity
+function previewDeposit(uint256 assets) public view returns (uint256)
+```
+
+此函数允许用户模拟他们在当前区块的存款效果。
+
+#### deposit {#deposit}
+
+```solidity
+function deposit(uint256 assets, address receiver) public returns (uint256 shares)
+```
+
+此函数将标的代币的 `assets` 存入资金库,并将 `shares` 的所有权授予 `receiver`。
+
+#### maxMint {#maxmint}
+
+```solidity
+function maxMint(address receiver) public view returns (uint256)
+```
+
+此函数返回 `receiver` 在单次 [`mint`](#mint) 调用中可以铸造的最大份额。
+
+#### previewMint {#previewmint}
+
+```solidity
+function previewMint(uint256 shares) public view returns (uint256)
+```
+
+此函数允许用户在当前区块模拟他们的铸币效果。
+
+#### mint {#mint}
+
+```solidity
+function mint(uint256 shares, address receiver) public returns (uint256 assets)
+```
+
+此函数通过存入标的代币的 `assets`,将 `shares` 资金库份额准确铸造到 `receiver`。
+
+#### maxWithdraw {#maxwithdraw}
+
+```solidity
+function maxWithdraw(address owner) public view returns (uint256)
+```
+
+此函数返回可以通过单次 [`withdraw`](#withdraw) 调用从 `owner` 余额中提取的最大标的资产数量。
+
+#### previewWithdraw {#previewwithdraw}
+
+```solidity
+function previewWithdraw(uint256 assets) public view returns (uint256)
+```
+
+此函数允许用户模拟他们在当前区块取款的效果。
+
+#### withdraw {#withdraw}
+
+```solidity
+function withdraw(uint256 assets, address receiver, address owner) public returns (uint256 shares)
+```
+
+此函数从 `owner` 烧录 `shares`,并将 `assets` 代币从资金库准确发送到 `receiver`。
+
+#### maxRedeem {#maxredeem}
+
+```solidity
+function maxRedeem(address owner) public view returns (uint256)
+```
+
+此函数返回可以通过 [`redeem`](#redeem) 调用从 `owner` 余额中赎回的最大份额数量。
+
+#### previewRedeem {#previewredeem}
+
+```solidity
+function previewRedeem(uint256 shares) public view returns (uint256)
+```
+
+此函数允许用户在当前区块模拟他们的赎回效果。
+
+#### redeem {#redeem}
+
+```solidity
+function redeem(uint256 shares, address receiver, address owner) public returns (uint256 assets)
+```
+
+此函数从 `owner` 赎回特定数量的 `shares` 并将标的代币的 `assets` 从资金库发送到 `receiver`。
+
+#### totalSupply {#totalsupply}
+
+```solidity
+function totalSupply() public view returns (uint256)
+```
+
+返回流通中未赎回的资金库份额总数。
+
+#### balanceOf {#balanceof}
+
+```solidity
+function balanceOf(address owner) public view returns (uint256)
+```
+
+返回 `owner` 当前拥有的资金库份额总量。
+
+### 事件 {#events}
+
+#### Deposit 事件
+
+**必须**在通过 [`mint`](#mint) 和 [`deposit`](#deposit) 方法将代币存入资金库之前发出
+
+```solidity
+event Deposit(
+ address indexed sender,
+ address indexed owner,
+ uint256 assets,
+ uint256 shares
+)
+```
+
+其中 `sender` 是用 `assets` 兑换 `shares`,并将这些 `shares` 转移给 `owner` 的用户。
+
+#### Widthdraw 事件
+
+**必须**在存款人用 [`redeem`](#redeem) 或 [`withdraw`](#withdraw) 方法从资金库中取出份额时发出。
+
+```solidity
+event Withdraw(
+ address indexed sender,
+ address indexed receiver,
+ address indexed owner,
+ uint256 assets,
+ uint256 share
+)
+```
+
+其中 `sender` 是触发取款并将 `owner` 拥有的 `shares` 兑换为 `assets` 的用户。 `receiver` 是收到提取的 `assets` 的用户。
+
+## 延伸阅读 {#further-reading}
+
+- [EIP-4626:代币化资金库标准](https://eips.ethereum.org/EIPS/eip-4626)
+- [ERC-4626: GitHub Repo](https://github.com/Rari-Capital/solmate/blob/main/src/mixins/ERC4626.sol)
diff --git a/src/content/translations/zh/developers/docs/standards/tokens/erc-721/index.md b/src/content/translations/zh/developers/docs/standards/tokens/erc-721/index.md
index dd0843b681e..ca802501535 100644
--- a/src/content/translations/zh/developers/docs/standards/tokens/erc-721/index.md
+++ b/src/content/translations/zh/developers/docs/standards/tokens/erc-721/index.md
@@ -4,7 +4,7 @@ description:
lang: zh
---
-## 简介 {#introduction}
+## 介绍 {#introduction}
**什么是非同质化代币?**
@@ -12,11 +12,11 @@ lang: zh
**ERC-721 是什么?**
-ERC-721 为 NFT 引入了一个标准,换言之, 这种类型的代币是独一无二的,并且可能与来自同一智能合约的另一代币有不同的价值,也许是因为它的年份、稀有性、甚至是它的观感。 稍等,看起来怎么样呢?
+ERC-721 为 NFT 引入了一个标准,换言之,这种类型的代币是独一无二的,并且可能与来自同一智能合约的另一代币有不同的价值,也许是因为它的年份、稀有性、甚至是它的观感。 稍等,看起来怎么样呢?
-是的。 所有 NFTs 都有一个 `uint256` 变量,名为 `tokenId`,所以对于任何 ERC-721 合约,这对值`contract address, tokenId` 必须是全局唯一的。 也就是说,dApp 可以有一个“转换器”,该转换器使用 `tokenId` 输入和输出一些非常有趣的事物的图像, 例如僵尸、武器、技能或非常可爱的猫咪!
+是的。 所有 NFTs 都有一个 `uint256` 变量,名为 `tokenId`,所以对于任何 ERC-721 合约,这对值`contract address, tokenId` 必须是全局唯一的。 也就是说,去中心化应用程序可以有一个“转换器”, 使用 `tokenId` 作为输入并输出一些很酷的事物图像,例如僵尸、武器、技能或神奇的小猫咪!
-## 前体条件 {#prerequisites}
+## 前提条件 {#prerequisites}
- [帐户](/developers/docs/accounts/)
- [智能合约](/developers/docs/smart-contracts/)
@@ -30,7 +30,7 @@ ERC-721(Ethereum Request for Comments 721),由 William Entriken、Dieter S
如果一个智能合约实现了下列方法和事件,它就可以被称为 ERC-721 非同质化代币合约。 一旦被部署,它将负责跟踪在以太坊上创建的代币。
-来自 [EIP-721](https://eips.ethereum.org/EIPS/eip-721):
+来自[ EIP-721 ](https://eips.ethereum.org/EIPS/eip-721):
#### 方法 {#methods}
@@ -56,11 +56,11 @@ ERC-721(Ethereum Request for Comments 721),由 William Entriken、Dieter S
### 示例 {#web3py-example}
-让我们看看一个标准是多么重要,它使我们能够简单地在以太坊上检查任何 ERC-721 代币合约。 我们只需要合约的应用程序二进制接口(ABI)就可以创造任何 ERC-721 代币的接口。 下面我们将使用一个简化的应用程序二进制接口,使其成为一个简单易用的例子。
+让我们看看一个标准是多么重要,它使我们能够简单地在以太坊上检查任何 ERC-721 代币合约。 我们只需要合约的应用程序二进制接口(ABI)就可以创造任何 ERC-721 代币的接口。 下面我们将使用一个简化的应用程序二进制接口,让例子变得更为简单。
#### Web3.py 示例 {#web3py-example}
-首先,确认已经安装了 [Web3.py](https://web3py.readthedocs.io/en/stable/quickstart.html#installation)Python 库。
+首先,请确保您已安装 [Web3.py](https://web3py.readthedocs.io/en/stable/quickstart.html#installation) Python 库:
```
$ pip install web3
@@ -231,9 +231,10 @@ recent_births = [get_event_data(w3.codec, ck_extra_events_abi[1], log)["args"] f
- [CryptoKitties](https://www.cryptokitties.co/) 是一个围绕着我们称之为加密猫的可繁殖、可收藏和可爱的生物游戏。
- [Sorare](https://sorare.com/) 是一场全球迷幻足球赛,您可以在这里收集有限版本的收藏品,管理您的球队,参加比赛以获得奖品。
- [以太坊域名服务 (ENS)](https://ens.domains/) 提供了一种安全和去中心化的方式,用人类可读的名字来处理链上和链下的资源。
-- [Unstoppable Domains](https://unstoppabledomains.com/) 是一个坐落在旧金山,在区块链上创建域名的公司。 区块链域名用人类可读的名字替换加密货币地址,并且可用于支撑抗审查的网站。
-- [Gods Unchained Cards](https://godsunchained.com/) 是以太坊区块链上的 TCG(集换式卡牌游戏), 它使用 NFT 来给游戏中的资产带来实际所有权。
-- [无聊猿游艇俱乐部](https://boredapeyachtclub.com)是一个由 10,000 个独特 NFT 组成的系列收藏品,这些收藏品不仅仅是非常罕见的艺术品,还是俱乐部入会的标志,可为成员提供多种特权和福利。在社区的努力下,这些特权和福利还会随着时间的推移不断增加。
+- [POAP](https://poap.xyz) 向参加事件或完成特定行动的人免费提供非同质化代币。 POAP 的创建和分发是免费的。
+- [Unstoppable Domains](https://unstoppabledomains.com/) 总部设在旧金山,是一家在区块链上创建域的公司。 区块链域将加密货币地址替换为人类可读的名称,并且可用于支持抗审查的网站。
+- [Gods Unchained Cards](https://godsunchained.com/) 是以太坊区块链上的一款集换式卡牌游戏,它使用非同质化代币来为游戏中的资产提供真实所有权。
+- [无聊猿游艇俱乐部](https://boredapeyachtclub.com)是一件由 10,000 个独一无二的非同质化代币构成的收藏品,也是一件非常罕见的艺术品,它作为俱乐部会员资格代币,可为成员提供多种特权和福利,而且在社区的努力下,这些特权和福利还会随着时间的推移不断增加。
## 延伸阅读 {#further-reading}
diff --git a/src/content/translations/zh/developers/docs/standards/tokens/erc-777/index.md b/src/content/translations/zh/developers/docs/standards/tokens/erc-777/index.md
index 5243fba4c9f..9829f7f4a62 100644
--- a/src/content/translations/zh/developers/docs/standards/tokens/erc-777/index.md
+++ b/src/content/translations/zh/developers/docs/standards/tokens/erc-777/index.md
@@ -8,7 +8,7 @@ lang: zh
ERC-777 是一个易于交易的通证标准,可改进现有的 [ERC-20](/developers/docs/standards/tokens/erc-20/) 标准。
-## 前体条件 {#prerequisites}
+## 前提条件 {#prerequisites}
为了更好地理解本文,我们建议你首先阅读以下内容 [ERC-20](/developers/docs/standards/tokens/erc-20/)。
@@ -24,7 +24,7 @@ ERC-777 是一个易于交易的通证标准,可改进现有的 [ERC-20](/deve
#### 为什么钩子很棒? {#why-are-hooks-great}
-1. 钩子允许向合同发送代币并在单笔交易中通知合约,不像 [ERC-20](https://eips.ethereum.org/EIPS/eip-20), 需要双重呼叫(`同意`/`转账自`) 才能实现这一点。
+1. 钩子允许向合同发送代币并在单笔交易中通知合约,不像 [ERC-20](https://eips.ethereum.org/EIPS/eip-20),需要双重呼叫(`同意`/`转账自`)才能实现这一点。
2. 未登记钩子的合约与 ERC-777 不相容。 接收合约没有注册钩子时,发送合约会中止交易。 这可以防止意外向非 ERC-777 智能合约转账。
3. 钩子可以拒绝交易。
@@ -34,8 +34,8 @@ ERC-777 是一个易于交易的通证标准,可改进现有的 [ERC-20](/deve
### 后向兼容 ERC-20 {#backwards-compatibility-with-erc-20}
-EC-777 合同可以与类似于 ERC-20 合同的合同进行互动。
+ERC-777 合同可以与类似于 ERC-20 合同的合同进行互动。
-## 进一步阅读 {#further-reading}
+## 延伸阅读 {#further-reading}
-[ERC-777 代币标准](https://eips.ethereum.org/EIPS/eip-777)
+[EIP-777:代币标准](https://eips.ethereum.org/EIPS/eip-777)
diff --git a/src/content/translations/zh/developers/docs/standards/tokens/index.md b/src/content/translations/zh/developers/docs/standards/tokens/index.md
index 4603fa37dab..4448c206855 100644
--- a/src/content/translations/zh/developers/docs/standards/tokens/index.md
+++ b/src/content/translations/zh/developers/docs/standards/tokens/index.md
@@ -5,11 +5,11 @@ lang: zh
incomplete: true
---
-## 简介 {#introduction}
+## 介绍 {#introduction}
-许多以太坊开发标准之一侧重于代币接口。 这些标准有助于确保智能合约仍然可以被撰写,例如,当新项目签发代币时,它与现有分散化的交易是兼容的。
+许多以太坊开发标准都集中在代币接口上。 这些标准有助于确保智能合约仍然可以被撰写,例如,当新项目签发代币时,它与现有分散化的交易是兼容的。
-## 前体条件 {#prerequisites}
+## 前提条件 {#prerequisites}
- [以太坊开发标准](/developers/docs/standards/)
- [智能合约](/developers/docs/smart-contracts/)
@@ -22,10 +22,11 @@ incomplete: true
- [ERC-721](/developers/docs/standards/tokens/erc-721/) - 非同质化代币的标准接口,比如艺术作品或歌曲的契约。
- [ERC-777](/developers/docs/standards/tokens/erc-777/) - ERC-777 使人们能够通过代币上创建额外的功能,例如用于改善交易私密性的混合合约,或是在您不慎丢失私钥时的紧急恢复功能。
- [ERC-1155](/developers/docs/standards/tokens/erc-1155/) - ERC-1155 允许更有效的交易和打包交易,从而节省燃料成本。 此代币标准允许创建实用代币(例如 $BNB 或 $BAT)和加密朋克之类的非同质化代币。
+- [ERC-4626](/developers/docs/standards/tokens/erc-4626/) - 一个代币化的资金库标准,旨在优化和统一收益资金库的技术参数。
## 延伸阅读 {#further-reading}
-_你知道有什么社区资源帮助过你吗? 编辑并添加本页面!_
+_还有哪些社区资源对你有所帮助? 请编辑本页面并添加!_
## 相关教程 {#related-tutorials}
diff --git a/src/content/translations/zh/developers/docs/transactions/index.md b/src/content/translations/zh/developers/docs/transactions/index.md
index 5e938a4ec43..c19a5b6fdbb 100644
--- a/src/content/translations/zh/developers/docs/transactions/index.md
+++ b/src/content/translations/zh/developers/docs/transactions/index.md
@@ -6,13 +6,13 @@ lang: zh
交易是由帐户发出,带密码学签名的指令。 帐户将发起交易以更新以太坊网络的状态。 最简单的交易是将 ETH 从一个账户转到另一个帐户。
-## 前置要求 {#prerequisites}
+## 前提条件 {#prerequisites}
为了帮助您更好地理解这个页面,我们建议您先阅读[账户](/developers/docs/accounts/)和我们的[以太坊简介](/developers/docs/intro-to-ethereum/)。
## 什么是交易? {#whats-a-transaction}
-以太坊交易是指由外部持有账户发起的行动,换句话说,是指由人管理而不是智能合约管理的账户。 例如,如果 Bob 发送 Alice 1 ETH,则 Bob 的帐户必须减少 1 ETH,而 Alice 的账户必须增加 1 ETH。 此项操作发生在交易中,会变更状态。
+以太坊交易是指由外部持有账户发起的行动,换句话说,是指由人管理而不是智能合约管理的账户。 例如,如果 Bob 向 Alice 发送 1 ETH,则 Bob 的帐户必须减少 1 ETH,而 Alice 的账户必须增加 1 ETH。 交易会造成状态的改变。
![显示交易导致状态更改的图表](./tx.png) _示意图节选自[以太坊虚拟机图解](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
@@ -24,7 +24,7 @@ lang: zh
- `recipient` – 接收地址(如果为一个外部持有的帐户,交易将传输值。 如果为合约帐户,交易将执行合约代码)
- `signature` – 发送者的标识符。 当通过发送者的私钥签名交易来确保发送者已授权此交易时,生成此签名。
-- `nonce` - 一个连续的递增计数器,表示帐户中的交易编号。
+- `随机数` - 一个连续的递增计数器,表示帐户中的交易编号。
- `value` – 发送人向接收人转移的以太币金额(以以太币的一种面值 WEI 为单位)
- `data` – 可包括任意数据的可选字段
- `gasLimit` – 交易可以消耗的最大数量的燃料单位。 燃料单位代表计算步骤
@@ -105,7 +105,7 @@ Geth 这样的以太坊客户端将处理此签名过程。
### `data`字段 {#the-data-field}
-绝大多数交易从外部所有的帐户访问合约。 大多数合约用 Solidity 语言编写,并根据[应用程序二进制接口 (ABI)](/glossary/#abi) 解释其`data`字段。
+绝大多数交易都是从外部所有的帐户访问合约。 大多数合约用 Solidity 语言编写,并根据[应用程序二进制接口 (ABI)](/glossary/#abi) 解释其`data`字段。
前四个字节使用函数名称和参数的哈希指定要调用的函数。 有时可以使用[本数据库](https://www.4byte.directory/signatures/)根据选择器识别函数。
@@ -144,7 +144,7 @@ Geth 这样的以太坊客户端将处理此签名过程。
0.0042 ETH
```
-Bob 的帐户将会减少 **-1.0042 ETH**
+Bob 的帐户将会扣除 **1.0042 个以太币**(1 个以太币给 Alice,0.0042 个以太币作为燃料费用)
Alice 的帐户将会增加 **+1.0 ETH**
@@ -154,7 +154,7 @@ Alice 的帐户将会增加 **+1.0 ETH**
任何智能合约交互也需要燃料。
-![未使用燃料退款情况图](./gas-tx.png) _示意图节选自[以太坊虚拟机图解](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
+![未使用燃料退还示意图](./gas-tx.png) _示意图节选自[以太坊虚拟机图解](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_
任何未用于交易的燃料都会退还给用户帐户。
@@ -167,7 +167,7 @@ Alice 的帐户将会增加 **+1.0 ETH**
3. 验证者必须选择你的交易并将它包含在一个区块中,以便验证交易并认为它“成功”。
4. 随着时间的流逝,包含你的交易的区块将升级成“合理”状态,然后变成“最后确定”状态。 通过这些升级,可以进一步确定 你的交易已经成功并将无法更改。 区块一旦“最终确定”,只能通过耗费数十亿美元 的攻击来更改。
-## 直观演示 {#a-visual-demo}
+## 视频演示 {#a-visual-demo}
跟随 Austin 了解交易、燃料和挖矿。
@@ -196,7 +196,7 @@ EIP-2718 是用于类型化交易的新通用封套。 在新标准中,交易
- [EIP-2718:Typed Transaction Envelope](https://eips.ethereum.org/EIPS/eip-2718)
-_还有哪些社区资源对您有所帮助? 请编辑本页面并添加!_
+_还有哪些社区资源对你有所帮助? 请编辑本页面并添加!_
## 相关主题 {#related-topics}
diff --git a/src/content/translations/zh/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md b/src/content/translations/zh/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md
index cacb11e64b5..d93f5ee1692 100644
--- a/src/content/translations/zh/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md
+++ b/src/content/translations/zh/developers/tutorials/a-developers-guide-to-ethereum-part-one/index.md
@@ -14,7 +14,7 @@ source: Snake charmers
sourceUrl: https://snakecharmers.ethereum.org/a-developers-guide-to-ethereum-pt-1/
---
-想必您已经听说过以太坊,那么,您准备好投身于这个领域了吗? 本篇文章将快速介绍一些区块链基础知识,然后让您与模拟的以太坊节点进行互动, 比如读取区块数据、检查账户余额和发送交易。 在这个过程中,我们会着重强调用传统方式构建应用与这种新的去中心化范式之间的差异。
+想必您已经听说过以太坊,那么,您准备好投身于这个领域了吗? 本篇文章将快速介绍一些区块链基础知识,然后让您与模拟的以太坊节点进行互动,比如读取区块数据、检查账户余额和发送交易。 在这个过程中,我们会着重强调用传统方式构建应用与这种新的去中心化范式之间的差异。
## (软)前提条件 {#soft-prerequisites}
@@ -36,7 +36,6 @@ sourceUrl: https://snakecharmers.ethereum.org/a-developers-guide-to-ethereum-pt-
"number": 1234567,
"hash": "0xabc123...",
"parentHash": "0xdef456...",
- "miner": "0xa1b2c3...",
...,
"transactions": [...]
}
@@ -50,7 +49,7 @@ sourceUrl: https://snakecharmers.ethereum.org/a-developers-guide-to-ethereum-pt-
_区块链本质上是一个链表;每个区块都有一个对前一个区块的引用。_
-这种数据结构并不新颖,但治理网络的规则(即点对点协议)却很新颖。 区块链没有中央机构;网络中的对等节点必需协作以维持网络,并且通过竞争决定将哪些交易纳入下一个区块。 因此,当您想给朋友转账时,您需要将这笔交易广播到网络上, 然后等待它被纳入即将产生的区块。
+这种数据结构并不新颖,但治理网络的规则(即点对点协议)却很新颖。 区块链没有中央机构;网络中的对等节点必需协作以维持网络,并且通过竞争决定将哪些交易纳入下一个区块。 因此,当您想给朋友转账时,您需要将这笔交易广播到网络上,然后等待它被纳入即将产生的区块。
区块链验证资金确实从一个用户发送给另一个用户的唯一方法是使用该区块链原生货币(即,由该区块链创建和管理的货币)。 在以太坊,这种货币被称为 ETH,以太坊区块链是账户余额的唯一正式记录。
@@ -60,7 +59,7 @@ _区块链本质上是一个链表;每个区块都有一个对前一个区块
想要与以太坊进行互动的 Python 开发人员可能会接触到 [Web3.py](https://web3py.readthedocs.io/)。 Web3.py 是一个库,可以帮助我们简化连接以太坊节点,以及发送和接收数据。
-注:“以太坊节点”和“以太坊客户端”可互换使用。 这两种说法都是指以太坊网络中参与者所运行的软件。 该软件可以读取区块数据,在新区块被添加到链上(“挖矿”)时接收更新、广播新交易等。
+注:“以太坊节点”和“以太坊客户端”可互换使用。 这两种说法都是指以太坊网络中参与者所运行的软件。 该软件可以读取区块数据,在新区块添加到链中时接收更新,广播新交易等等。 从技术角度讲,客户端是软件,节点是运行软件的计算机。
[以太坊客户端](/developers/docs/nodes-and-clients/)可以配置为通过[进程间通信 (IPC)](https://wikipedia.org/wiki/Inter-process_communication)、超文本传输协议 (HTTP) 或网络套接字 (Websockets) 进行访问,因此 Web3.py 也需要完成这个配置。 Web3.py 将这些连接选项称为**提供者**。 您需要从三个提供者中选择一个来连接 Web3.py 实例和您的节点。
@@ -82,7 +81,7 @@ w3.eth.send_transaction({'from': ..., 'to': ..., 'value': ...})
在这个演练中,我们仅在 Python 解释器中进行。 我们不会创建任何目录、文件、类或函数。
-注:在下面的例子中,以“$”开头的命令是要在终端中运行的。 (不要输入 `$`,它只是表示行的开始。)
+注:在下面的例子中,以“$”开头的命令是要在终端中运行的。 (不要输入 `$`,它只是表示行的开始。)
首先,安装 [IPython](https://ipython.org/),以方便用户在其中进行探索。 IPython 提供了 tab 补全等功能,使得我们更容易看到 Web3.py 中有哪些可用方法。
@@ -96,7 +95,7 @@ Web3.py 以 `web3` 的名称发布。 安装方式如下:
$ pip install web3
```
-另外, 我们后面要模拟一个区块链,这就需要更多依赖项。 可以通过下面的命令安装这些依赖项:
+另外,我们后面要模拟一个区块链,这就需要更多依赖项。 可以通过下面的命令安装这些依赖项:
```bash
$ pip install 'web3[tester]'
@@ -135,9 +134,9 @@ In [1]: from web3 import Web3
在以 ETH 处理交易时,也使用了类似的模式。 但是,ETH 不是只有两个小数位,而是有 18 位。 ether 的最小单位是 wei,所以发送交易时指定的就是这个值。
-1 ETH = 1000000000000000 wei
+1 ETH = 1000000000000000000 wei
-1 wei = 0.0000000000000001 ETH
+1 wei = 0.000000000000000001 ETH
@@ -151,7 +150,7 @@ In [3]: Web3.fromWei(500000000, 'gwei')
Out[3]: Decimal('0.5')
```
-Web3 模块上的其他实用方法包括数据格式转换器(例如 [`toHex`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.toHex)), 地址助手,(例如 [`is address`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.isAddress)),以及哈希函数(例如 [`keccak`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.keccak))。 其中许多内容将在后面的系列文章中介绍。 要查看所有可用的方法和属性,可以利用 IPython 的自动补全功能,输入 `Web3`., 然后在点号后面按两次 tab 键。
+Web3 模块上的其他实用方法包括数据格式转换器(例如 [`toHex`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.toHex)),地址助手,(例如 [`is address`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.isAddress)),以及哈希函数(例如 [`keccak`](https://web3py.readthedocs.io/en/stable/web3.main.html#web3.Web3.keccak))。 其中许多内容将在后面的系列文章中介绍。 要查看所有可用的方法和属性,可以利用 IPython 的自动补全功能,输入 `Web3`。 然后在点号后面按两次 tab 键。
## 与链交互 {#talk-to-the-chain}
@@ -218,7 +217,7 @@ In [8]: w3.fromWei(1000000000000000000000000, 'ether')
Out[8]: Decimal('1000000')
```
-100 万测试 ETH , 也不算太寒酸。
+100 万测试以太币,也不算太寒酸。
## 第二站:区块数据 {#tour-stop-2-block-data}
@@ -237,13 +236,13 @@ Out[9]: AttributeDict({
这里返回了大量关于区块的信息,但这里只介绍以下几点:
-- 该区块编号是零 - 无论您在多久以前配置了测试器提供者 。 与真实的以太坊网络不同,真实的以太坊网络大概每隔 15 秒就会挖掘一个新的区块,而模拟链则则需要您给它一些工作才增加区块。
+- 该区块编号是零 —无论您在多久以前配置了测试器提供者。 与每 12 秒添加一个新区块的真实以太坊网络不同,此模拟区块链则需要你给它一些工作去做才添加区块。
- `transactions` 是一个空列表,原因相同:我们还没有做任何事情。 第一个区块是一个**空区块**,只是为了开个头。
- 注意,`parentHash` 只是一堆空的字节。 这标志着它是链条上的第一个区块,也就是所谓的**创世区块**。
-## 第三站:[交易](/developers/docs/transactions/) {#tour-stop-3-transactions}
+## 第三站:[ 交易 ](/developers/docs/transactions/) {#tour-stop-3-transactions}
-在没有交易之前,我们停留在零区块,所以我们给它一个交易。 从一个账户向另一个账户发送一些测试 ETH:
+在没有待处理交易之前,我们停留在零区块处,所以我们给它一个交易。 从一个账户向另一个账户发送一些测试 ETH:
```python
In [10]: tx_hash = w3.eth.send_transaction({
@@ -254,10 +253,10 @@ In [10]: tx_hash = w3.eth.send_transaction({
})
```
-这时通常会等上几秒钟,等待交易挖到一个新的区块。 完整的流程是这样的:
+这时你通常会等上几秒钟,等待交易添加到新区块中。 完整的流程是这样的:
-1. 提交交易并持有交易哈希。 在没有被挖出来之前,交易是“等待中”的。 `tx_hash = w3.eth.send_transaction({ … })`
-2. 等待交易被开采: `w3.eth.wait_for_transaction_receipt(tx_hash)`
+1. 提交交易并持有交易哈希。 在包含交易的区块被创建并广播之前,交易一直处于“待处理”状态。 `tx_hash = w3.eth.send_transaction({ … })`
+2. 等待交易添加到区块中: `w3.eth.wait_for_transaction_receipt(tx_hash)`
3. 继续应用逻辑。 查看成功的交易:`w3.eth.get_transaction(tx_hash)`
我们的模拟环境会在一个新的区块中即时添加交易,所以我们可以立即查看交易:
@@ -287,7 +286,7 @@ In [13]: w3.eth.get_balance(w3.eth.accounts[1])
Out[13]: 1000003000000000000000000
```
-后者看起来不错! 余额从 1000000 增加到 100003 个 ETH。 但第一个账户发生了什么情况? 它减少的数量看起来略大于三个 ETH? 是的,没有免费的午餐,使用以太坊公网需要支付矿工手续费, 一笔小额交易费从进行交易的帐户中扣除,金额为 31000 wei。
+后者看起来不错! 余额从 1000000 增加到 1000003 个 ETH。 但第一个账户发生了什么情况? 它减少的数量看起来略大于三个 ETH? 是的,没有免费的午餐,使用以太坊公网需要支付矿工手续费, 一笔小额交易费从进行交易的帐户中扣除,金额为 31000 wei。
注:在公共网络上,交易费用根据网络需求和您希望交易处理的速度而变化。 如果您对费用的计算方式感兴趣,请查看我之前关于如何将交易包含在一个区块中的文章。
diff --git a/src/content/translations/zh/developers/tutorials/create-and-deploy-a-defi-app/index.md b/src/content/translations/zh/developers/tutorials/create-and-deploy-a-defi-app/index.md
index 823b53fb196..b79eb460766 100644
--- a/src/content/translations/zh/developers/tutorials/create-and-deploy-a-defi-app/index.md
+++ b/src/content/translations/zh/developers/tutorials/create-and-deploy-a-defi-app/index.md
@@ -22,7 +22,7 @@ sourceUrl: https://github.com/strykerin/DeFi-Token-Farm
如果这是您第一次编写智能合约,您需要搭建您的环境。 我们将使用两个工具:[Truffle](https://www.trufflesuite.com/) 和 [Ganache](https://www.trufflesuite.com/ganache)。
-Truffle 是用于开发以太坊智能合约的开发环境和测试框架。 使用 Truffle 可以很容易地在区块链中创建和部署智能合约。 Ganach 可以帮助我们创建一个本地以太坊区块链,用以测试智能合约。 它模拟真实的网络功能,前 10 个帐户存入了 100 个测试以太币,如此可以随意部署和测试智能合约。 Ganache 可提供桌面应用程序和命令行工具。 在本文中,我们将使用有图形界面的桌面应用程序。
+Truffle 是用于开发以太坊智能合约的开发环境和测试框架。 使用 Truffle 可以很容易地在区块链中创建和部署智能合约。 Ganache 可以帮助我们创建一个本地以太坊区块链,用以测试智能合约。 它模拟真实的网络功能,前 10 个帐户存入了 100 个测试以太币,如此可以随意部署和测试智能合约。 Ganache 可提供桌面应用程序和命令行工具。 在本文中,我们将使用有图形界面的桌面应用程序。
![Ganache 图形界面桌面应用程序](https://cdn-images-1.medium.com/max/2360/1*V1iQ5onbLbT5Ib2QaiOSyg.png)_Ganache UI desktop application_
@@ -74,7 +74,7 @@ contract MyToken is ERC20 {
- 第 6 行:我们要调用 ERC20.sol 构造函数,并将名称和符号参数分别设为 `"MyToken"` 和 `"MTKN"`。
-- 第 7 行:我们为正在部署智能合约的账户铸造和转移 100 万代币(我们默认为 ERC20 代币使用 18 位小数)。这意味着,如果我们想要铸造 1 个代币,则需将其表示为 100000000000000,即 1 和 18 个零)。
+- 第 7 行:我们为正在部署智能合约的账户铸造和转移 100 万代币(我们默认为 ERC20 代币使用 18 位小数)。这意味着,如果我们想要铸造 1 个代币,则需将其表示为 1000000000000000000,即 1 和 18 个零)。
我们可以看到,ERC20.sol 构造函数实现下方,`_decimals` 字段设置为 18:
@@ -127,7 +127,7 @@ truffle compile
编译后,我们现在便可以部署代币了。
-在 `migrations` 文件夹中,创建一个名为 `2_depu_Tokens.js` 的文件。 我们将在该文件中部署 ERC20 代币和 FarmToken 智能合约。 以下代码用于部署我们的 MyToken.sol 合约:
+在 `migrations` 文件夹中,创建一个名为 `2_deploy_Tokens.js` 的文件。 我们将在该文件中部署 ERC20 代币和 FarmToken 智能合约。 以下代码用于部署我们的 MyToken.sol 合约:
```javascript
const MyToken = artifacts.require("MyToken")
@@ -167,7 +167,7 @@ truffle console
- 获取第一个帐户的余额:`balance = await myToken.balance Of(accounts[0])`
-- 格式化具有 18 位小数的余额:`web3.utils.fromWei(Balance.toString())`
+- 格式化具有 18 位小数的余额:`web3.utils.fromWei(balance.toString())`
通过运行上述命令,我们会看到第一个地址实际上有 100 万 MyToken:
@@ -251,7 +251,7 @@ function withdraw(uint256 _amount) public {
}
```
-现在我们将部署我们的智能合约。 为此,我们将返回文件 `2_depu_Tokens.js` 并添加要部署的新合约:
+现在我们将部署我们的智能合约。 为此,我们将返回文件 `2_deploy_Tokens.js` 并添加要部署的新合约:
```javascript
const MyToken = artifacts.require("MyToken")
@@ -462,7 +462,7 @@ module.exports = async function (callback) {
}
```
-要运行此脚本:`truffle exec .\script\transferMyTokenToFarmToken.js`。 正如我们在下面的输出中所看到的,我们已经成功地取回了 MyToken,并消耗掉了 FarmToken:
+要运行此脚本:`truffle exec .\scripts\withdrawMyTokenFromTokenFarm.js`。 正如我们在下面的输出中所看到的,我们已经成功地取回了 MyToken,并消耗掉了 FarmToken:
![withdrawMyTokenFromTokenFarm.js 的输出](https://cdn-images-1.medium.com/max/2000/1*jHYlTFg0NgGbhASpsRvc0w.png)
diff --git a/src/content/translations/zh/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/index.md b/src/content/translations/zh/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/index.md
index 2be289d53d4..2f5ea42febc 100644
--- a/src/content/translations/zh/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/index.md
+++ b/src/content/translations/zh/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/index.md
@@ -16,17 +16,17 @@ sourceUrl: https://soliditydeveloper.com/max-contract-size
## 为什么会有限制? {#why-is-there-a-limit}
-在 2016 年 [11 月 22 日](https://blog.ethereum.org/2016/11/18/hard-fork-no-4-spurious-dragon/), Spilious Dragon 硬分叉引入了 [EIP-170](https://eips.ethereum.org/EIPS/eip-170),增加了 24.576 kb 的智能合约大小限制。 对于作为 Solidity 开发者的您来说,这意味着当您向合约中添加越来越多的功能时,在某个时候您会达到极限,并且在部署时会看到错误:
+在 [2016 年 11 月 22 日](https://blog.ethereum.org/2016/11/18/hard-fork-no-4-spurious-dragon/),伪龙硬分叉引入了 [EIP-170](https://eips.ethereum.org/EIPS/eip-170),将智能合约的大小限制在 24.576 kb。 对于作为 Solidity 开发者的您来说,这意味着当您向合约中添加越来越多的功能时,在某个时候您会达到极限,并且在部署时会看到错误:
-`警告:合约代码大小超过 24576 字节(Spurious Dragon 分叉中引入的限制)。 这个合约可能无法在主网上部署。 请考虑启用优化器(其“运行”值较低!),关闭 revert 字符串,或使用库。`
+`警告:合约代码大小超过 24576 字节(Spurious Dragon 分叉中引入的限制)。 该合约可能无法在主网上部署。 请考虑启用优化器(其“运行”值较低!),关闭 revert 字符串,或使用库。`
引入这一限制是为了防止拒绝服务 (DOS) 攻击。 任何对合约的调用从矿工费上来说都是相对便宜的。 然而,根据被调用合约代码的大小(从磁盘读取代码、预处理代码、将数据添加到 Merkle 证明),合约调用对以太坊节点的影响会不成比例地增加。 每当您出现这样的情况,攻击者只需要很少的资源就能给别人造成大量的工作,您就有可能遭受 DOS 攻击。
-最初,这不是什么大问题,因为一个自然合约大小限制是区块 Gas 限制。 很明显,一个合约需要被部署在一个交易中,这个交易持有合约的所有字节码。 如果您只将一个交易纳入一个区块,您可以用完所有的 Gas,但 gas 不是无限的。 但这种情况下的问题是,区块 Gas 限制随时间发生变化,理论上是无限制的。 在引入 EIP-170 的时候,区块 Gas 的限制仅为 470 万。 现在区块 gas 上限在上个月[再次提高](https://etherscan.io/chart/gaslimit)至 1,190 万。
+最初,这不是什么大问题,因为一个自然合约大小限制是区块燃料限制。 显然,合约必须和其所有字节码一起部署在交易内。 如果只将单个交易添加到区块中,可能会用完所有燃料,而燃料并非无限。 [伦敦升级](/history/#london)后,区块燃料限制已能够根据网络需求在 15M 和 30M 单位之间变动。
## 开始战斗吧! {#taking-on-the-fight}
-不幸的是,没有简单的方法来获得合约的字节码大小。 如果您使用 Truffle ,有一个很好的工具可以帮助您:那就是 [truffle-contract-size](https://github.com/IoBuilders/truffle-contract-size) 插件。
+不幸的是,没有简单的方法来获得合约的字节码大小。 如果您使用 Truffle,有一个很好的工具可以帮助您:那就是 [truffle-contract-size](https://github.com/IoBuilders/truffle-contract-size) 插件。
1. `npm install truffle-contract-size`
2. 将插件添加到 _truffle-config.js_:`plugins: ["truffle-contract-size"]`
@@ -149,9 +149,3 @@ function doSomething() { checkStuff(); }
```
这些提示应有助您大幅度减少合约的大小。 我要再次强调的是,如果可能的话,务必将重点放在拆分合约上,以获得最大的效果。
-
-## 合约大小限制的未来 {#the-future-for-the-contract-size-limits}
-
-有一个[公开提议](https://github.com/ethereum/EIPs/issues/1662),要取消合约大小限制。 这个设想实际上是为了让大型合约的调用更加昂贵。 这个实现起来不会太困难,具有简单的向后兼容性(将所有以前部署的合约都归入最便宜的类别),但是[并不是每个人都认同这个提议](https://ethereum-magicians.org/t/removing-or-increasing-the-contract-size-limit/3045/24)。
-
-只有时间才能证明这些限制将来是否会改变,大家的反应(见右图)无疑表明了对我们开发人员的明确要求。 不幸的是,这不是您可以指望很快会发生的事情。
diff --git a/src/content/translations/zh/developers/tutorials/erc-721-vyper-annotated-code/index.md b/src/content/translations/zh/developers/tutorials/erc-721-vyper-annotated-code/index.md
new file mode 100644
index 00000000000..81966033642
--- /dev/null
+++ b/src/content/translations/zh/developers/tutorials/erc-721-vyper-annotated-code/index.md
@@ -0,0 +1,632 @@
+---
+title: "Vyper ERC-721 合约概览"
+description: Ryuya Nakamura 编写的 ERC-721 合约及其原理
+author: Ori Pomerantz
+lang: zh
+tags:
+ - "vyper"
+ - "erc-721"
+ - "python"
+skill: beginner
+published: 2021-04-01
+---
+
+## 简介 {#introduction}
+
+[ERC-721](/developers/docs/standards/tokens/erc-721/) 标准的作用是持有非同质化代币 (NFT) 的所有权。 [ERC-20](/developers/docs/standards/tokens/erc-20/) 代币如同商品一样,因为每个代币之间没有任何区别。 相比之下,ERC-721 代币专门用来代表类似但又不同的资产,例如表示不同的[卡通猫咪](https://www.cryptokitties.co/) 或各种房地产的所有权。
+
+在本文中,我们将分析 [Ryuya Nakamura 编写的 ERC-721 合约](https://github.com/vyperlang/vyper/blob/master/examples/tokens/ERC721.vy)。 该合约是用 [Vyper](https://vyper.readthedocs.io/en/latest/index.html) 语言编写的,Vyper 是一种类似 Python 的合约语言,与使用 Solidity 相比,编写不安全的代码变得更加困难。
+
+## 合约 {#contract}
+
+```python
+# @dev Implementation of ERC-721 non-fungible token standard.
+# @author Ryuya Nakamura (@nrryuya)
+# Modified from: https://github.com/vyperlang/vyper/blob/de74722bf2d8718cca46902be165f9fe0e3641dd/examples/tokens/ERC721.vy
+```
+
+Vyper 中的注释与 Python 中一样,以哈希 (`#`) 开头并且持续一整行。 [NatSpec](https://vyper.readthedocs.io/en/latest/natspec.html) 使用包含 `@` 的注释生成方便人阅读的文档。
+
+```python
+from vyper.interfaces import ERC721
+
+implements: ERC721
+```
+
+ERC-721 接口内置在 Vyper 语言中。 [您可以点击此处查看代码定义。](https://github.com/vyperlang/vyper/blob/master/vyper/builtin_interfaces/ERC721.py) 接口定义是用 Python 而不是 Vyper 编写的,因为接口不仅在区块链内使用, 而且在外部客户端向区块链发送交易时也使用,而客户端可能 是用 Python 编写的。
+
+第一行导入接口,第二行指定我们在这里执行它。
+
+### ERC721 接收者接口 {#receiver-interface}
+
+```python
+# Interface for the contract called by safeTransferFrom()
+interface ERC721Receiver:
+ def onERC721Received(
+```
+
+ERC-721 支持两类转账:
+
+- `transferFrom`,让发送者指定任何目的地地址并让发送者 承担转账责任。 这意味着您可以转账到一个无效的地址,在这种情况下,NFT 将永远丢失。
+- `safeTransferFrom`,检查目的地址是否是合约。 如果是,ERC-721 合约 将会询问接收合约是否要接收这笔 NFT 转账。
+
+接收合约必须执行 `ERC721Receiver` 才能回应 `safeTransferFrom` 请求。
+
+```python
+ _operator: address,
+ _from: address,
+```
+
+`_from` 地址是代币的当前所有者。 `_operator` 地址是请求转账的 地址(由于限额,这两个地址可能不同)。
+
+```python
+ _tokenId: uint256,
+```
+
+ERC-721 代币 ID 是 256 位的。 通常,这些 ID 是通过对代币所代表的 任何东西进行哈希运算创建的。
+
+```python
+ _data: Bytes[1024]
+```
+
+请求最多可以有 1024 字节的用户数据。
+
+```python
+ ) -> bytes32: view
+```
+
+为了防止发生合约意外接受转账的情况,返回值不是布尔值, 而是一个具有特定值的 256 位数字串。
+
+此函数是 `view`,这意味着它可以读取区块链的状态,但不能修改。
+
+### 事件 {#events}
+
+[事件](https://media.consensys.net/technical-introduction-to-events-and-logs-in-ethereum-a074d65dd61e) 的触发是为了向区块链外部的用户和服务器通知事件。 请注意,事件 的内容不向区块链上的合约提供。
+
+```python
+# @dev Emits when ownership of any NFT changes by any mechanism. This event emits when NFTs are
+# created (`from` == 0) and destroyed (`to` == 0). Exception: during contract creation, any
+# number of NFTs may be created and assigned without emitting Transfer. At the time of any
+# transfer, the approved address for that NFT (if any) is reset to none.
+# @param _from Sender of NFT (if address is zero address it indicates token creation).
+# @param _to Receiver of NFT (if address is zero address it indicates token destruction).
+# @param _tokenId The NFT that got transfered.
+event Transfer:
+ sender: indexed(address)
+ receiver: indexed(address)
+ tokenId: indexed(uint256)
+```
+
+这类似于 ERC-20 转账事件,不同之处在于我们报告的是 `tokenId` 而不是金额。 没有人拥有零地址,所以根据惯例我们用它来报告代币的创建和销毁。
+
+```python
+# @dev This emits when the approved address for an NFT is changed or reaffirmed. The zero
+# address indicates there is no approved address. When a Transfer event emits, this also
+# indicates that the approved address for that NFT (if any) is reset to none.
+# @param _owner Owner of NFT.
+# @param _approved Address that we are approving.
+# @param _tokenId NFT which we are approving.
+event Approval:
+ owner: indexed(address)
+ approved: indexed(address)
+ tokenId: indexed(uint256)
+```
+
+ERC-721 批准与 ERC-20 限额类似。 特定地址只允许转移特定 代币。 这就形成了一种合约在接受代币时作出回应的机制。 合约不能侦听 事件,所以如果您只是把代币转移给合约,它们不会“知道”这笔转账。 因此,代币所有者 首先提交批准,然后向合约发送请求:“我批准你转移 代币 X,请执行......”。
+
+这是一种设计选择,使 ERC-721 标准与 ERC-20 标准类似。 由于 ERC-721 代币 为非同质化代币,合约还可以通过查看代币的所有权来确定 它得到了一个特定代币。
+
+```python
+# @dev This emits when an operator is enabled or disabled for an owner. The operator can manage
+# all NFTs of the owner.
+# @param _owner Owner of NFT.
+# @param _operator Address to which we are setting operator rights.
+# @param _approved Status of operator rights(true if operator rights are given and false if
+# revoked).
+event ApprovalForAll:
+ owner: indexed(address)
+ operator: indexed(address)
+ approved: bool
+```
+
+有时候,拥有一个能够管理某个帐户所有特定类型代币(由一个特定合约 管理的所有代币)的*运营者*是很有用的,这类似于委托书。 例如,我可能想把这样一种权力赋予一个合约,即 检查我是否已经 6 个月没有联系它了,如果属实,就会把我的资产分配给我的继承者(如果他们中一人要求这样做,合约在没有 被交易调用时什么都做不了)。 在 ERC-20 中,我们只需给继承合约提供一个高限额即可。 但这对 ERC-721 不起作用,因为代币是非同质化的。 这是对应的。
+
+`approved` 值表示事件是等待批准,还是等待撤回批准。
+
+### 状态变量 {#state-vars}
+
+这些变量包含代币的当前状态:哪些是可用的以及谁拥有它们。 其中大多数 是 `HashMap` 对象,即[存在于两个类型之间的单向映射](https://vyper.readthedocs.io/en/latest/types.html#mappings)。
+
+```python
+# @dev Mapping from NFT ID to the address that owns it.
+idToOwner: HashMap[uint256, address]
+
+# @dev Mapping from NFT ID to approved address.
+idToApprovals: HashMap[uint256, address]
+```
+
+以太坊中的用户和合约标识用 160 位地址表示。 这两个变量从代币 ID 映射 到代币所有者及批准的转让者(一次最多 1 个映射)。 在以太坊中,未初始化 数据始终为零,因此如果没有所有者或批准的转让者,该代币的值 为零。
+
+```python
+# @dev Mapping from owner address to count of his tokens.
+ownerToNFTokenCount: HashMap[address, uint256]
+```
+
+此变量保存每个所有者的代币数量。 没有从所有者到代币的映射,因此 识别特定所有者所拥有代币的唯一方法是在区块链的事件历史记录 中回溯并查看相应的 `Transfer` 事件。 我们可以使用此变量了解我们拥有全部非同质化代币的 时间,而无需进一步回溯。
+
+注意,此算法只适用于用户接口和外部服务器。 在区块链自身运行的代码无法 读取过去的事件。
+
+```python
+# @dev Mapping from owner address to mapping of operator addresses.
+ownerToOperators: HashMap[address, HashMap[address, bool]]
+```
+
+一个帐户可能有多个运营者。 仅有 `HashMap` 不足以跟踪它们,因为每个键都会生成单一值。 然而,可以将 `HashMap[address, bool]` 作为值。 默认情况下,每个地址的都值是 `False`,这意味着它 不是运营者。 您可以根据需要将值设置为 `True`。
+
+```python
+# @dev Address of minter, who can mint a token
+minter: address
+```
+
+必须以某种方式创建新代币。 在此合约中,只允许一个实体创建 代币,即 `minter`。 例如,这可能足以满足游戏的需要。 但对于其他用途,可能需要创建一个 更复杂的业务逻辑。
+
+```python
+# @dev Mapping of interface id to bool about whether or not it's supported
+supportedInterfaces: HashMap[bytes32, bool]
+
+# @dev ERC165 interface ID of ERC165
+ERC165_INTERFACE_ID: constant(bytes32) = 0x0000000000000000000000000000000000000000000000000000000001ffc9a7
+
+# @dev ERC165 interface ID of ERC721
+ERC721_INTERFACE_ID: constant(bytes32) = 0x0000000000000000000000000000000000000000000000000000000080ac58cd
+```
+
+[ERC-165](https://eips.ethereum.org/EIPS/eip-165) 为合约规定了一种机制,用来表明应用程序 如何与合约通信以及合约符合哪些 ERC。 在这种情况下,合约符合 ERC-165 和 ERC-721。
+
+### 函数 {#functions}
+
+以下函数确实实现了 ERC-721。
+
+#### 构造函数 {#constructor}
+
+```python
+@external
+def __init__():
+```
+
+和 Python 中一样,在 Vyper 中,构造函数也被称为 `__init__`。
+
+```python
+ """
+ @dev Contract constructor.
+ """
+```
+
+在 Python 和 Vyper 中,通过指定多行字符串(以 `"""` 起始和结束),您还可以创建注释,但不能以任何方式使用它。 这些注释也可以包括 [NatSpec](https://vyper.readthedocs.io/en/latest/natspec.html) 注释。
+
+```python
+ self.supportedInterfaces[ERC165_INTERFACE_ID] = True
+ self.supportedInterfaces[ERC721_INTERFACE_ID] = True
+ self.minter = msg.sender
+```
+
+要访问状态变量,可以使用 `self.`(也是与 Python 中的相同)。
+
+#### 视图函数 {#views}
+
+这些函数不修改区块链状态,因此在外部调用时它们可以 免费执行。 如果视图函数是合约调用的,它们仍然必须在每个节点 上执行,因此需要消耗燃料。
+
+```python
+@view
+@external
+```
+
+函数定义前面以 (`@`) 开头的这些关键词称为*修饰符*。 它们 规定能够调用函数的环境。
+
+- `@view` 指定此函数为 view 函数。
+- `@external` 指定该特定函数可以由交易及其它合约调用。
+
+```python
+def supportsInterface(_interfaceID: bytes32) -> bool:
+```
+
+与 Python 相比,Vyper 是一种[静态类型语言](https://wikipedia.org/wiki/Type_system#Static_type_checking)。 如果没有先确定[数据类型](https://vyper.readthedocs.io/en/latest/types.html),就无法声明变量或函数参数。 因此在上例中,输入参数是一个 256 位的 `bytes32` 值 (256 位是[以太坊虚拟机](/developers/docs/evm/)的原生字长宽度)。 输出是一个 布尔值。 按照惯例,函数参数的名称以下划线 (`_`) 开头。
+
+```python
+ """
+ @dev Interface identification is specified in ERC-165.
+ @param _interfaceID Id of the interface
+ """
+ return self.supportedInterfaces[_interfaceID]
+```
+
+返回 HashMap `self.supportedInterfaces` 中的值,该 HashMap 在构造函数 (`__init__`) 中设置。
+
+```python
+### VIEW FUNCTIONS ###
+```
+
+下面这些视图函数让用户和其它合约可以获得代币相关信息。
+
+```python
+@view
+@external
+def balanceOf(_owner: address) -> uint256:
+ """
+ @dev Returns the number of NFTs owned by `_owner`.
+ Throws if `_owner` is the zero address. NFTs assigned to the zero address are considered invalid.
+ @param _owner Address for whom to query the balance.
+ """
+ assert _owner != ZERO_ADDRESS
+```
+
+此行[宣称](https://vyper.readthedocs.io/en/latest/statements.html#assert) `_owner` 不 为 0。 如果为 0,就会出现错误,操作会被回滚。
+
+```python
+ return self.ownerToNFTokenCount[_owner]
+
+@view
+@external
+def ownerOf(_tokenId: uint256) -> address:
+ """
+ @dev Returns the address of the owner of the NFT.
+ Throws if `_tokenId` is not a valid NFT.
+ @param _tokenId The identifier for an NFT.
+ """
+ owner: address = self.idToOwner[_tokenId]
+ # Throws if `_tokenId` is not a valid NFT
+ assert owner != ZERO_ADDRESS
+ return owner
+```
+
+在以太坊虚拟机 (evm) 中,任何没有存储值的存储都为零。 如果 `_tokenId` 处没有代币,那么 `self.idToOwner[_tokenId]` 的值为 0。 在这种情况下,该函数 会回滚操作。
+
+```python
+@view
+@external
+def getApproved(_tokenId: uint256) -> address:
+ """
+ @dev Get the approved address for a single NFT.
+ Throws if `_tokenId` is not a valid NFT.
+ @param _tokenId ID of the NFT to query the approval of.
+ """
+ # Throws if `_tokenId` is not a valid NFT
+ assert self.idToOwner[_tokenId] != ZERO_ADDRESS
+ return self.idToApprovals[_tokenId]
+```
+
+注意,`getApproved` *可以*返回零。 如果代币有效,则返回 `self.idToApprovals[_tokenId]`。 如果没有批准者,该值为 0。
+
+```python
+@view
+@external
+def isApprovedForAll(_owner: address, _operator: address) -> bool:
+ """
+ @dev Checks if `_operator` is an approved operator for `_owner`.
+ @param _owner The address that owns the NFTs.
+ @param _operator The address that acts on behalf of the owner.
+ """
+ return (self.ownerToOperators[_owner])[_operator]
+```
+
+此函数检查是否允许 `_operator` 管理 `_owner` 在此合约中的所有代币。 因为可以有多个运营者,所以这是一个两级 HashMap。
+
+#### 转账帮助函数 {#transfer-helpers}
+
+这些函数执行代币转账或管理过程中的一些操作。
+
+```python
+
+### TRANSFER FUNCTION HELPERS ###
+
+@view
+@internal
+```
+
+修饰符 `@internal` 表示该函数只能由 同一合约内的其他函数访问。 按照惯例,这些函数名称也以下划线 (`_`) 开头。
+
+```python
+def _isApprovedOrOwner(_spender: address, _tokenId: uint256) -> bool:
+ """
+ @dev Returns whether the given spender can transfer a given token ID
+ @param spender address of the spender to query
+ @param tokenId uint256 ID of the token to be transferred
+ @return bool whether the msg.sender is approved for the given token ID,
+ is an operator of the owner, or is the owner of the token
+ """
+ owner: address = self.idToOwner[_tokenId]
+ spenderIsOwner: bool = owner == _spender
+ spenderIsApproved: bool = _spender == self.idToApprovals[_tokenId]
+ spenderIsApprovedForAll: bool = (self.ownerToOperators[owner])[_spender]
+ return (spenderIsOwner or spenderIsApproved) or spenderIsApprovedForAll
+```
+
+有三种方式可以允许地址转移代币:
+
+1. 该地址是代币的所有者
+2. 该地址经批准可以使用该代币
+3. 该地址是代表代币所有者的运营者
+
+上面的函数可以是一个视图函数,因为它并不改变状态。 为了降低运营成本,任何*可以* 成为视图函数的函数都*应该*成为视图函数。
+
+```python
+@internal
+def _addTokenTo(_to: address, _tokenId: uint256):
+ """
+ @dev Add a NFT to a given address
+ Throws if `_tokenId` is owned by someone.
+ """
+ # Throws if `_tokenId` is owned by someone
+ assert self.idToOwner[_tokenId] == ZERO_ADDRESS
+ # Change the owner
+ self.idToOwner[_tokenId] = _to
+ # Change count tracking
+ self.ownerToNFTokenCount[_to] += 1
+
+
+@internal
+def _removeTokenFrom(_from: address, _tokenId: uint256):
+ """
+ @dev Remove a NFT from a given address
+ Throws if `_from` is not the current owner.
+ """
+ # Throws if `_from` is not the current owner
+ assert self.idToOwner[_tokenId] == _from
+ # Change the owner
+ self.idToOwner[_tokenId] = ZERO_ADDRESS
+ # Change count tracking
+ self.ownerToNFTokenCount[_from] -= 1
+```
+
+当转账出现问题时,我们会撤销调用。
+
+```python
+@internal
+def _clearApproval(_owner: address, _tokenId: uint256):
+ """
+ @dev Clear an approval of a given address
+ Throws if `_owner` is not the current owner.
+ """
+ # Throws if `_owner` is not the current owner
+ assert self.idToOwner[_tokenId] == _owner
+ if self.idToApprovals[_tokenId] != ZERO_ADDRESS:
+ # Reset approvals
+ self.idToApprovals[_tokenId] = ZERO_ADDRESS
+```
+
+仅在必要时更改值。 状态变量位于存储中。 写入存储是 EVM(以太坊虚拟机)执行的最昂贵的操作之一(就 [燃料](/developers/docs/gas/)而言)。 因此,尽量减少写入操作,即使是写入现有值, 成本也很高。
+
+```python
+@internal
+def _transferFrom(_from: address, _to: address, _tokenId: uint256, _sender: address):
+ """
+ @dev Exeute transfer of a NFT.
+ Throws unless `msg.sender` is the current owner, an authorized operator, or the approved
+ address for this NFT. (NOTE: `msg.sender` not allowed in private function so pass `_sender`.)
+ Throws if `_to` is the zero address.
+ Throws if `_from` is not the current owner.
+ Throws if `_tokenId` is not a valid NFT.
+ """
+```
+
+我们使用此内部函数是因为有两种代币转账方式(常规和安全方式),但 我们希望代码中只有一个位置进行此操作,以使审计更容易。
+
+```python
+ # Check requirements
+ assert self._isApprovedOrOwner(_sender, _tokenId)
+ # Throws if `_to` is the zero address
+ assert _to != ZERO_ADDRESS
+ # Clear approval. Throws if `_from` is not the current owner
+ self._clearApproval(_from, _tokenId)
+ # Remove NFT. Throws if `_tokenId` is not a valid NFT
+ self._removeTokenFrom(_from, _tokenId)
+ # Add NFT
+ self._addTokenTo(_to, _tokenId)
+ # Log the transfer
+ log Transfer(_from, _to, _tokenId)
+```
+
+要在 Vyper 中触发一个事件,可以使用 `log` 语句([请点击此处了解更多详情](https://vyper.readthedocs.io/en/latest/event-logging.html#event-logging))。
+
+#### 转账函数 {#transfer-funs}
+
+```python
+
+### TRANSFER FUNCTIONS ###
+
+@external
+def transferFrom(_from: address, _to: address, _tokenId: uint256):
+ """
+ @dev Throws unless `msg.sender` is the current owner, an authorized operator, or the approved
+ address for this NFT.
+ Throws if `_from` is not the current owner.
+ Throws if `_to` is the zero address.
+ Throws if `_tokenId` is not a valid NFT.
+ @notice The caller is responsible to confirm that `_to` is capable of receiving NFTs or else
+ they maybe be permanently lost.
+ @param _from The current owner of the NFT.
+ @param _to The new owner.
+ @param _tokenId The NFT to transfer.
+ """
+ self._transferFrom(_from, _to, _tokenId, msg.sender)
+```
+
+此函数允许您向任意地址转账。 除非该地址是用户或是知道如何转移代币的 合约,否则您转移的任何代币都将卡在该地址中变得毫无用处。
+
+```python
+@external
+def safeTransferFrom(
+ _from: address,
+ _to: address,
+ _tokenId: uint256,
+ _data: Bytes[1024]=b""
+ ):
+ """
+ @dev Transfers the ownership of an NFT from one address to another address.
+ Throws unless `msg.sender` is the current owner, an authorized operator, or the
+ approved address for this NFT.
+ Throws if `_from` is not the current owner.
+ Throws if `_to` is the zero address.
+ Throws if `_tokenId` is not a valid NFT.
+ If `_to` is a smart contract, it calls `onERC721Received` on `_to` and throws if
+ the return value is not `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`.
+ NOTE: bytes4 is represented by bytes32 with padding
+ @param _from The current owner of the NFT.
+ @param _to The new owner.
+ @param _tokenId The NFT to transfer.
+ @param _data Additional data with no specified format, sent in call to `_to`.
+ """
+ self._transferFrom(_from, _to, _tokenId, msg.sender)
+```
+
+可以先进行转账,因为如果出现问题,我们无论如何都会回滚该操作,因此 调用中的一切操作都会被取消。
+
+```python
+ if _to.is_contract: # check if `_to` is a contract address
+```
+
+首先检查地址是否为合约(如果有代码)。 如果不是,假定它是一个用户 地址,并且该用户能够使用或转移代币。 但不要让该地址 给您一种虚假的安全感。 如果您将代币转移到一个没有人知道私钥的地址,即使使用了 `safeTransferFrom`,也可能损失代币。
+
+```python
+ returnValue: bytes32 = ERC721Receiver(_to).onERC721Received(msg.sender, _from, _tokenId, _data)
+```
+
+调用目标合约,看它是否可以接收 ERC-721 代币。
+
+```python
+ # Throws if transfer destination is a contract which does not implement 'onERC721Received'
+ assert returnValue == method_id("onERC721Received(address,address,uint256,bytes)", output_type=bytes32)
+```
+
+如果目的地是一个合约,但它不接受 ERC-721 代币(或者决定不接受这笔特定转账),则回滚。
+
+```python
+@external
+def approve(_approved: address, _tokenId: uint256):
+ """
+ @dev Set or reaffirm the approved address for an NFT. The zero address indicates there is no approved address.
+ Throws unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.
+ Throws if `_tokenId` is not a valid NFT. (NOTE: This is not written the EIP)
+ Throws if `_approved` is the current owner. (NOTE: This is not written the EIP)
+ @param _approved Address to be approved for the given NFT ID.
+ @param _tokenId ID of the token to be approved.
+ """
+ owner: address = self.idToOwner[_tokenId]
+ # Throws if `_tokenId` is not a valid NFT
+ assert owner != ZERO_ADDRESS
+ # Throws if `_approved` is the current owner
+ assert _approved != owner
+```
+
+根据惯例,如果您不想要批准者,可以指定零地址而不是您自己。
+
+```python
+ # Check requirements
+ senderIsOwner: bool = self.idToOwner[_tokenId] == msg.sender
+ senderIsApprovedForAll: bool = (self.ownerToOperators[owner])[msg.sender]
+ assert (senderIsOwner or senderIsApprovedForAll)
+```
+
+要设置批准,您可以是所有者,也可以是所有者授权的运营者。
+
+```python
+ # Set the approval
+ self.idToApprovals[_tokenId] = _approved
+ log Approval(owner, _approved, _tokenId)
+
+
+@external
+def setApprovalForAll(_operator: address, _approved: bool):
+ """
+ @dev Enables or disables approval for a third party ("operator") to manage all of
+ `msg.sender`'s assets. It also emits the ApprovalForAll event.
+ Throws if `_operator` is the `msg.sender`. (NOTE: This is not written the EIP)
+ @notice This works even if sender doesn't own any tokens at the time.
+ @param _operator Address to add to the set of authorized operators.
+ @param _approved True if the operators is approved, false to revoke approval.
+ """
+ # Throws if `_operator` is the `msg.sender`
+ assert _operator != msg.sender
+ self.ownerToOperators[msg.sender][_operator] = _approved
+ log ApprovalForAll(msg.sender, _operator, _approved)
+```
+
+#### 铸造新代币和销毁现有代币 {#mint-burn}
+
+创建合约的帐户就是 `minter`,是获得授权可以铸造 新非同质化代币的超级用户。 然而,即使是铸币者,也不允许其销毁现有代币。 只有所有者或所有者授权的实体 才能那样做。
+
+```python
+### MINT & BURN FUNCTIONS ###
+
+@external
+def mint(_to: address, _tokenId: uint256) -> bool:
+```
+
+此函数始终返回 `True`,因为如果操作失败,它将被回滚。
+
+```python
+ """
+ @dev Function to mint tokens
+ Throws if `msg.sender` is not the minter.
+ Throws if `_to` is zero address.
+ Throws if `_tokenId` is owned by someone.
+ @param _to The address that will receive the minted tokens.
+ @param _tokenId The token id to mint.
+ @return A boolean that indicates if the operation was successful.
+ """
+ # Throws if `msg.sender` is not the minter
+ assert msg.sender == self.minter
+```
+
+只有铸币者(创建 ERC-721 合约的帐户)可以铸造新代币。 如果我们将来想改变铸币者的 身份,这可能会成为一个问题。 在生产合约 中,您可能需要一个函数,允许 铸币者将铸币者特权转让给其他人。
+
+```python
+ # Throws if `_to` is zero address
+ assert _to != ZERO_ADDRESS
+ # Add NFT. Throws if `_tokenId` is owned by someone
+ self._addTokenTo(_to, _tokenId)
+ log Transfer(ZERO_ADDRESS, _to, _tokenId)
+ return True
+```
+
+根据惯例,新代币铸造视作来自零地址的转账。
+
+```python
+
+@external
+def burn(_tokenId: uint256):
+ """
+ @dev Burns a specific ERC721 token.
+ Throws unless `msg.sender` is the current owner, an authorized operator, or the approved
+ address for this NFT.
+ Throws if `_tokenId` is not a valid NFT.
+ @param _tokenId uint256 id of the ERC721 token to be burned.
+ """
+ # Check requirements
+ assert self._isApprovedOrOwner(msg.sender, _tokenId)
+ owner: address = self.idToOwner[_tokenId]
+ # Throws if `_tokenId` is not a valid NFT
+ assert owner != ZERO_ADDRESS
+ self._clearApproval(owner, _tokenId)
+ self._removeTokenFrom(owner, _tokenId)
+ log Transfer(owner, ZERO_ADDRESS, _tokenId)
+```
+
+任何可以转移代币的人都可以销毁它。 虽然销毁代币看起来等同于 转移到零地址,但零地址实际上并没有接收到代币。 这样我们可以释放所有用于代币的 存储,因而可以降低交易的燃料成本。
+
+# 使用此合约 {#using-contract}
+
+与 Solidity 相比,Vyper 中没有继承。 这种有意而为之的设计选择,是为了使代码 更清晰,从而更容易受保护。 因此,要创建您自己的 Vyper ERC-721 合约,您可以 利用[此合约](https://github.com/vyperlang/vyper/blob/master/examples/tokens/ERC721.vy),并修改 它以实现想要的业务逻辑。
+
+# 总结 {#conclusion}
+
+回顾一下,下面是此合约中最重要的几点:
+
+- 要通过安全转账方式接收 ERC-721 代币,合约必须实现 `ERC721Receiver` 接口。
+- 即使使用了安全转账方式,如果您将代币发送到私钥未知 的地址,代币仍然会被卡住。
+- 当操作出现问题时,最好 `revert` 该调用,而不是只返回 失败值。
+- 有了所有者,ERC-721 代币才存在。
+- 有三种经过授权的 NFT 转账方式。 您可以是所有者,可以针对特定代币获得批准, 或者可以是所有者全部代币的运营者。
+- 过去的事件只在区块链之外可见。 区块链中运行的代码无法看到它们。
+
+现在去实现安全的 Vyper 合约吧。
diff --git a/src/content/translations/zh/developers/tutorials/erc20-annotated-code/index.md b/src/content/translations/zh/developers/tutorials/erc20-annotated-code/index.md
index 93c5a3344e9..4c736456db1 100644
--- a/src/content/translations/zh/developers/tutorials/erc20-annotated-code/index.md
+++ b/src/content/translations/zh/developers/tutorials/erc20-annotated-code/index.md
@@ -1,6 +1,6 @@
---
title: "ERC-20 合约概览"
-description: OpenZepelin 的 ERC-20 合约内容和解读
+description: OpenZeppelin 的 ERC-20 合约内容和解读
author: Ori Pomerantz
lang: zh
tags:
@@ -12,7 +12,7 @@ published: 2021-03-09
## 简介 {#introduction}
-以太坊最常见的用途之一是由一个团队来打造一种可以交易的代币,在某种意义上是他们自己的货币。 这些代币通常遵循一个标准, [ERC-20](/developers/docs/standards/tokens/erc-20/)。 此标准使得人们能够以此来开发可以用于所有 ERC-20 代币的工具,如流动资金池和钱包。 在这篇文章中,我们将带领大家分析 [OpenZepelin Solidity ERC20 实现](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol)以及 [ ERC20 接口定义](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol)。
+以太坊最常见的用途之一是由一个团队来打造一种可以交易的代币,在某种意义上是他们自己的货币。 这些代币通常遵循一个标准, [ERC-20](/developers/docs/standards/tokens/erc-20/)。 此标准使得人们能够以此来开发可以用于所有 ERC-20 代币的工具,如流动资金池和钱包。 在这篇文章中,我们将带领大家分析 [OpenZeppelin Solidity ERC20 实现](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol)以及 [ ERC20 接口定义](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol)。
这里使用的是附加说明的源代码。 如果想要实现 ERC-20, [请阅读此教程](https://docs.openzeppelin.com/contracts/2.x/erc20-supply)。
@@ -24,12 +24,12 @@ published: 2021-03-09
如果您是一位经验丰富的程序员,您可能记得在 [Java](https://www.w3schools.com/java/java_interface.asp) 中,甚至在 [C 头文件](https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html) 中看到过类似的构造。
-这是来自 OpenZepelin 的 [ERC-20 接口](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol) 的定义。 这是将[人类可读标准](https://eips.ethereum.org/EIPS/eip-20)转换为 Solidity 代码。 当然, 接口本身并不定义*如何*做事。 这一点在下文合约的源代码中作了解释。
+这是来自 OpenZeppelin 的 [ERC-20 接口](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol) 的定义。 这是将[人类可读标准](https://eips.ethereum.org/EIPS/eip-20)转换为 Solidity 代码。 当然, 接口本身并不定义*如何*做事。 这一点在下文合约的源代码中作了解释。
```solidity
-/ SPDX-许可标识符: MIT
+// SPDX-License-Identifier: MIT
```
Solidity 文件中一般需要标识软件许可证。 [您可以在这里看到许可证列表](https://spdx.org/licenses/)。 如果需要不同的 许可证,只需在注释中加以说明。
@@ -430,7 +430,7 @@ contract ERC20 is Context, IERC20 {
### 许可额度函数 {#allowance-functions}
-这些是实现许可额度功能的函数:`allowance`、`approve`、`transferFrom` 和 `_approve`。 此外,除基本标准外,OpenZepelin 实现还包含了一些能够提高 安全性的功能:`increaseallance` 和 `decreaseAllowance`。
+这些是实现许可额度功能的函数:`allowance`、`approve`、`transferFrom` 和 `_approve`。 此外,除基本标准外,OpenZeppelin 实现还包含了一些能够提高 安全性的功能:`increaseAllowance` 和 `decreaseAllowance`。
#### 许可额度函数 {#allowance}
@@ -460,7 +460,7 @@ contract ERC20 is Context, IERC20 {
调用此函数以创建许可额度。 它与上述 `transfer` 函数相似:
-- 该函数仅调用一个完成真正工作的内部函数(本例中为 `_approval`)。
+- 该函数仅调用一个完成真正工作的内部函数(本例中为 `_approve`)。
- 函数要么返回 `true`(如果成功),要么撤销(如果失败)。
@@ -507,7 +507,7 @@ contract ERC20 is Context, IERC20 {
}
```
-#### OpenZepelin 安全加法 {#openzeppelin-safety-additions}
+#### OpenZeppelin 安全加法 {#openzeppelin-safety-additions}
将许可额度从一个非零值设定为另一个非零值是有危险的, 因为您只能控制自己的交易顺序,而无法控制其他人的交易顺序。 假设现在有两个用户,天真的 Alice 和不诚实的 Bill。 Alice 想要从 Bill 处获取一些服务, 她认为值五个代币,所以她给了 Bill 五个代币的许可额度。
@@ -585,7 +585,7 @@ B:
### 修改代币信息的函数 {#functions-that-modify-token-information}
-这些是完成实际工作的四个函数:`_transfer`、`_mint`、`_burn` 和 `_approval`。
+这些是完成实际工作的四个函数:`_transfer`、`_mint`、`_burn` 和 `_approve`。
#### \_transfer 函数 {#\_transfer}
@@ -630,7 +630,7 @@ B:
1. 将其作为模板,编写自己的代码
1. [从它继承](https://www.bitdegree.org/learn/solidity-inheritance)一个合约,并且重写您需要修改的函数
-第二种方法要好得多,因为 OpenZepelin ERC-20 代码已经过审核,其安全性也已得到证实。 当您的合约继承它时, 可以清楚地表明修改了哪些函数,只需要审核这些特定的函数,人们就会信任您的合约。
+第二种方法要好得多,因为 OpenZeppelin ERC-20 代码已经过审核,其安全性也已得到证实。 当您的合约继承它时, 可以清楚地表明修改了哪些函数,只需要审核这些特定的函数,人们就会信任您的合约。
代币每次易手时,通常都需要调用一个函数。 然而,`_transfer` 是一个非常重要的函数, 重新编写可能会不安全(见下文),所以最好不要重写。 解决方案是重写 `_beforeTokenTransfer` 函数,这是一个[挂钩函数](https://wikipedia.org/wiki/Hooking)。 您可以重写此函数,之后每次转账都会调用它。
@@ -784,14 +784,14 @@ B:
这是转账过程中要调用的挂钩函数。 该函数是空的,但如果你需要 它做一些事情,只需覆盖它即可。
-# 结论 {#conclusion}
+# 总结 {#conclusion}
复习一下,这些是我认为此合约中最重要的概念(你们的看法可能与我不同)
- _区块链上没有秘密_ 智能合约可以访问的任何信息 都可以提供给全世界。
- 您可以控制自己交易的订单,但在其他人的交易发生时, 则不能控制。 这就是为什么更改许可额度时会有风险,因为它 允许消费者花掉这两个许可额度的总和。
- `uint256` 类型值的溢出。 换言之,_0-1=2^256-1_。 如果这不是预期的 行为,您必须自行检查(或使用 SafeMath 库执行该服务)。 请注意, [Solidity 0.8.0](https://docs.soliditylang.org/en/breaking/080-breaking-changes.html) 中对此进行了更改。
-- 将特定类型变量的状态改变放在一个特定的地方,这样可以使审核更容易。 这就是我们使用以下等函数的原因,例如 `_approval` 函数,它可以被`approve`、`transferFrom`、 `increaseAllowance` 和 `decreaseAllowance` 调用。
+- 将特定类型变量的状态改变放在一个特定的地方,这样可以使审核更容易。 这就是我们使用以下等函数的原因,例如 `_approve` 函数,它可以被`approve`、`transferFrom`、 `increaseAllowance` 和 `decreaseAllowance` 调用。
- 状态更改应为最小操作单元,其中没有任何其他动作 (如在 `_transfer` 中所见)。 这是因为在状态更改期间,会出现不一致的情况。 例如, 在减少发送人的余额,和增加接收人的余额之间, 代币总量会小于应有总量。 如果在这两个时刻之间有任何操作, 特别是调用不同的合约,则可能出现滥用。
现在您已经了解了 OpenZeppelin ERC-20 合约是怎么编写的, 尤其是如何使之更加安全,您即可编写自己的安全合约和应用程序。
diff --git a/src/content/translations/zh/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md b/src/content/translations/zh/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md
index 5cfdffd6d56..e4e2207eb13 100644
--- a/src/content/translations/zh/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md
+++ b/src/content/translations/zh/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md
@@ -1,6 +1,6 @@
---
title: 以太坊开发入门
-description: "这是一份关于以太坊开发的初学者指南。 我们将带领您从启动一个 API 终端节点开始,到提出一个命令行请求,再到编写您的第一个 web3 脚本。 无需区块链开发经验!"
+description: "这是一份针对以太坊开发入门的初学者指南。 我们将带领您从启动一个 API 终端节点开始,到提出一个命令行请求,再到编写您的第一个 web3 脚本。 无需区块链的开发经验!"
author: "Elan Halpern"
tags:
- "入门指南"
@@ -16,15 +16,15 @@ source: Medium
sourceUrl: https://medium.com/alchemy-api/getting-started-with-ethereum-development-using-alchemy-c3d6a45c567f
---
-![以太坊和Alchemy徽标](../../../../../developers/tutorials/getting-started-with-ethereum-development-using-alchemy/ethereum-alchemy.png)
+![以太坊和Alchemy徽标](./ethereum-alchemy.png)
-这是一份关于以太坊开发的初学者指南。 在本教程中,我们将使用 [Alchemy](https://alchemyapi.io/),这是一个领先的区块链开发者平台,为 70% 的顶级区块链应用程序(包括 Maker、0x、MyEtherWallet、Dharma 和 Kyber)的数百万用户提供支持。 Alchemy 使我们能够访问以太坊链上的 API 端点,这样我们就可以读写交易。
+这是一份关于以太坊开发的初学者指南。 在本教程中,我们将使用[ Alchemy](https://alchemyapi.io/),这是一个领先的区块链开发者平台,为 70% 的顶级区块链应用程序(包括 Maker、0x、MyEtherWallet、Dharma 和 Kyber)的数百万用户提供支持。 Alchemy 使我们能够访问以太坊链上的 API 端点,这样我们就可以读写交易。
我们将带您注册 Alchemy 来编写您的第一个 web3 脚本! 无需区块链的开发经验!
## 1. 注册免费 Alchemy 帐户 {#sign-up-for-a-free-alchemy-account}
-创建一个 Alchemy 帐户很容易。[在此免费注册](https://auth.alchemyapi.io/signup)。
+创建 Alchemy 帐户很容易,[点击此处免费注册](https://auth.alchemyapi.io/signup)。
## 2. 创建一个 Alchemy 应用程序 {#create-an-alchemy-app}
@@ -32,17 +32,17 @@ sourceUrl: https://medium.com/alchemy-api/getting-started-with-ethereum-developm
您可以通过[仪表板](http://dashboard.alchemyapi.io/)创建 API 密钥。 要创建一个新密钥,导航到如下所示的“Create App”:
-特别感谢[ShapeShift](https://shapeshift.com/)_让我们展示他们的仪表板!_
+特别感谢[_ShapeShift_](https://shapeshift.com/)_让我们展示他们的仪表板!_
-![Alchemy仪表板](../../../../../developers/tutorials/getting-started-with-ethereum-development-using-alchemy/alchemy-dashboard.png)
+![Alchemy仪表板](./alchemy-dashboard.png)
填写“Create App”下的详细信息以获取您的新密钥。 在此处还可以看到您以前创建的应用以及您的团队创建的应用。 通过点击任何应用的“View Key”来查看现有密钥。
-![使用Alchemy创建应用程序的截图](../../../../../developers/tutorials/getting-started-with-ethereum-development-using-alchemy/create-app.png)
+![使用Alchemy创建应用程序的截图](./create-app.png)
-您也可以通过将鼠标悬停在““Apps”上并选择一个来获取现有 API 密钥。 您可以在这里“查看密钥”,以及“编辑应用程序”来特定域名加入白名单、查看几个开发者工具,并查看分析。
+您也可以通过将鼠标悬停在“Apps”上并选择一个来获取现有 API 密钥。 您可以在这里“查看密钥”,以及“编辑应用程序”来特定域名加入白名单、查看几个开发者工具,并查看分析。
-![显示用户如何获取API密钥的GIF图](../../../../../developers/tutorials/getting-started-with-ethereum-development-using-alchemy/pull-api-keys.gif)
+![显示用户如何获取API密钥的GIF图](./pull-api-keys.gif)
## 3. 在命令行中发送请求 {#make-a-request-from-the-command-line}
@@ -64,7 +64,7 @@ curl https://eth-mainnet.alchemyapi.io/v2/demo \
-d '{"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":73}'
```
-_**注:**将 [https://eth-mainnet.alchemyapi.io/v2/demo](https://eth-mainnet.alchemyapi.io/jsonrpc/demo) 替换为您自己的 API 密钥 https://eth-mainnet.alchemyapi.io/v2/**your-api-key**。_
+_**注意:**将 [https://eth-mainnet.alchemyapi.io/v2/demo](https://eth-mainnet.alchemyapi.io/jsonrpc/demo) 替换成你自己的应用程序接口密钥 `https://eth-mainnet.alchemyapi.io/v2/**your-api-key`。_
**结果:**
@@ -76,9 +76,9 @@ _**注:**将 [https://eth-mainnet.alchemyapi.io/v2/demo](https://eth-mainnet.a
**如果您已有客户端,** 将您当前的节点提供商的 URL 更改为您的 API 密钥的 Alchemy URL: `“https://eth-mainnet.alchemyapi.io/v2/your-api-key”`
-**_注意:_**下面的脚本需要在一个**节点环境**中运行或**保存到一个文件运行**,而不是通过命令行运行。 如果您尚未安装节点或 npm ,请查看此[适用于 mac 的快速设置指南](https://app.gitbook.com/@alchemyapi/s/alchemy/guides/alchemy-for-macs)。
+**_注意:_**下面的脚本需要在一个**节点环境**中运行或**保存到一个文件运行**,而不是通过命令行运行。 如果您尚未安装节点或 npm ,请查看此适用于 mac 的快速设置指南。
-有大量可与与 Alchemy 集成的[Web3 库](https://docs.alchemyapi.io/guides/getting-started#other-web3-libraries)。但是,我们建议使用[Alchemy Web3](https://docs.alchemy.com/reference/api-overview),它是 web3.js 的替代插件,可以与 Alchemy 无缝配合工作。 这个库有很多优点,例如自动重试和可靠的 WebSocket 支持。
+许多 [Web3 库](https://docs.alchemyapi.io/guides/getting-started#other-web3-libraries)都可以和 Alchemy 集成。但是,我们建议使用 [Alchemy Web3](https://docs.alchemy.com/reference/api-overview),它是 web3.js 的替代插件,可与 Alchemy 无缝协作。 这个库有很多优点,例如自动重试和可靠的 WebSocket 支持。
要安装 AlchemyWeb3.js,请**导航到项目目录**并运行:
@@ -114,13 +114,13 @@ mkdir web3-example
cd web3-example
```
-**2. 在项目中安装 Alchemy web3(或任何 web3)依赖项(如果尚未这样做):**
+**2. 在项目中安装 Alchemy Web3(或任何 Web3)依赖项(如果尚未这样做):**
```
npm install @alch/alchemy-web3
```
-**3. 创建一个名为`index.js` **的文件并添加以下内容:\*\*
+**3. 创建一个名为 `index.js` 的文件并添加以下内容:**
> 最终应将`demo`替换为您的 Alchemy HTTP API 密钥 。
@@ -134,22 +134,22 @@ async function main() {
main()
```
-不熟悉 async stuff? 来看看这篇[Medium 文章](https://medium.com/better-programming/understanding-async-await-in-javascript-1d81bb079b2c)。
+不熟悉 async 函数? 来看看这篇 [Medium 文章](https://medium.com/better-programming/understanding-async-await-in-javascript-1d81bb079b2c)。
-**4. 使用 node 在终端中运行程序**
+**4. 使用节点在终端中运行该脚本**
```
node index.js
```
-**5. 现在应该会在控制台中看到最新的区块数量输出结果!**
+**5. 现在应该会在控制台中看到最新的区块编号输出结果!**
```
The latest block number is 11043912
```
-**哇! 恭喜! 您刚刚使用 Alchemy 编写了您的第一个 web3 脚本 🎉**
+**哇! 恭喜! 您刚刚使用 Alchemy 编写了您的第一个 Web3 脚本 🎉**
-不知道下一步怎么办? 尝试部署您的第一个智能合约,并在我们的 [Hello World 智能合约指南](https://docs.alchemyapi.io/tutorials/hello-world-smart-contract)中用 solidity 编程,或者用 [Dashboard Demo App](https://docs.alchemyapi.io/tutorials/demo-app) 测试您的仪表盘知识!
+不知道下一步该怎么做? 尝试部署您的第一个智能合约,开始练习 Solidity 编程同时参阅我们的 [Hello World 智能合约指南](https://docs.alchemyapi.io/tutorials/hello-world-smart-contract),或使用 [Dashboard Demo App](https://docs.alchemyapi.io/tutorials/demo-app) 测试您的仪表板知识!
-[免费注册 Alchemy](https://auth.alchemyapi.io/signup),查看我们的[文档](https://docs.alchemyapi.io/),关注我们的[Twitter](https://twitter.com/AlchemyPlatform)获取最新消息。
+免费*[注册 Alchemy](https://auth.alchemyapi.io/signup),查看我们的[相关文档](https://docs.alchemyapi.io/),并关注我们的 [Twitter](https://twitter.com/AlchemyPlatform)* 了解最新消息。
diff --git a/src/content/translations/zh/developers/tutorials/guide-to-smart-contract-security-tools/index.md b/src/content/translations/zh/developers/tutorials/guide-to-smart-contract-security-tools/index.md
index 5558a086fe2..66b046fcae0 100644
--- a/src/content/translations/zh/developers/tutorials/guide-to-smart-contract-security-tools/index.md
+++ b/src/content/translations/zh/developers/tutorials/guide-to-smart-contract-security-tools/index.md
@@ -9,7 +9,7 @@ tags:
- "安全性"
skill: intermediate
published: 2020-09-07
-source: 构建安全合约
+source: 构建安全的合约
sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis
---
@@ -53,8 +53,8 @@ sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/progr
- [快速风险评估](https://infosec.mozilla.org/guidelines/risk/rapid_risk_assessment.html)(时间紧迫时我们的首选方法)
- [数据中心系统威胁建模指南](https://csrc.nist.gov/publications/detail/sp/800-154/draft) (aka NIST 800-154)
- [Shostack 线程建模](https://www.amazon.com/Threat-Modeling-Designing-Adam-Shostack/dp/1118809998)
-- [STRIDE]() / [DREAD]()
-- [PASTA](https://en.wikipedia.org/wiki/Threat_model#P.A.S.T.A.)
+- [STRIDE]() / [DREAD]()
+- [PASTA](https://wikipedia.org/wiki/Threat_model#P.A.S.T.A.)
- [使用断言](https://blog.regehr.org/archives/1091)
### 组件 {#components}
@@ -67,7 +67,7 @@ sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/progr
- Echidna 和 Manticore 是测试状态机规范的首选工具。
-- **访问控制**。如果您的系统有特权用户(例如负责人、控制人等),您必须确保:(1) 每个用户只能执行授权操作,并且 (2) 没有用户可以阻止拥有更多特权的用户的操作。
+- **访问控制。**如果您的系统有特权用户(例如所有者、监管者等),您必须确保 (1) 每个用户只能执行授权操作,并且 (2) 没有用户可以阻止权限更大的用户的操作。
- Slither、Echidna 和 Manticore 都可以检查访问控制正确与否。 例如,Slither 可以检查是否只有白名单上的函数缺少 onlyOwner 修饰符。 Echidna 和 Manticore 可用于更复杂的访问控制,例如仅当合约达到给定状态时才授予权限。
@@ -84,18 +84,18 @@ sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/progr
- Manticore 和 Echidna 是测试您的合约外部互动的最佳选择。 Manticore 有一个内置机制来存留外部合约。
- **标准一致性**。 以太坊标准(例如 ERC20)记录了他们在设计上的缺陷。 请注意您正在构建的标准的局限性。
- - Slider、Echidna 和 Manticore 可以帮助您发现偏离特定标准的情况。
+ - Slither、Echidna 和 Manticore 可以帮助您发现偏离特定标准的情况。
### 工具选择备忘清单 {#tool-selection-cheatsheet}
-| 组件 | 工具 | 示例 |
-| ------------ | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| 状态机 | Echidna、Manticore | |
-| 访问控制 | Slither、Echidna、Manticore | [Slither 练习 2](https://github.com/trailofbits/building-secure-contracts/blob/master/program-analysis/slither/exercise2.md)、[Echidna 练习 2](https://github.com/trailofbits/building-secure-contracts/blob/master/program-analysis/echidna/Exercise-2.md) |
-| 算术运算 | Manticore、Echidna | [Echidna 练习 1](https://github.com/trailofbits/building-secure-contracts/blob/master/program-analysis/echidna/Exercise-1.md)、[Manticore 练习 1 - 3](https://github.com/trailofbits/building-secure-contracts/tree/master/program-analysis/manticore/exercises) |
-| 继承的正确性 | Slither | [Slither 练习 1](https://github.com/trailofbits/building-secure-contracts/blob/master/program-analysis/slither/exercise1.md) |
-| 外部交互 | Manticore、Echidna | |
-| 标准一致性 | Slither、Echidna、Manticore | [`slither-erc`](https://github.com/crytic/slither/wiki/ERC-Conformance) |
+| 组件 | 工具 | 示例 |
+| ------------ | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| 状态机 | Echidna、Manticore | |
+| 访问控制 | Slither、Echidna、Manticore | [Slither 练习 2](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/slither/exercise2.md)、[Echidna 练习 2](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/Exercise-2.md) |
+| 算术运算 | Manticore、Echidna | [Echidna 练习 1](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/echidna/Exercise-1.md)、[Manticore 练习 1 - 3](https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/manticore/exercises) |
+| 继承的正确性 | Slither | [Slither 练习 1](https://github.com/crytic/building-secure-contracts/blob/master/program-analysis/slither/exercise1.md) |
+| 外部交互 | Manticore、Echidna | |
+| 标准一致性 | Slither、Echidna、Manticore | [`slither-erc`](https://github.com/crytic/slither/wiki/ERC-Conformance) |
其他领域需要根据您的目标进行检查, 但以上囊括的大致重点领域对于所有智能合约系统来说都是一个良好的开端。
diff --git a/src/content/translations/zh/developers/tutorials/hello-world-smart-contract/index.md b/src/content/translations/zh/developers/tutorials/hello-world-smart-contract/index.md
index 428566ee79f..429303878b9 100644
--- a/src/content/translations/zh/developers/tutorials/hello-world-smart-contract/index.md
+++ b/src/content/translations/zh/developers/tutorials/hello-world-smart-contract/index.md
@@ -26,7 +26,7 @@ published: 2021-03-31
## 步骤 2:创建应用程序(和应用程序接口密钥) {#step-2}
-创建了 Alchemy 账户后,您可以通过创建应用程序来生成应用程序接口密钥。 我们可以用它向 Ropsten 测试网络发起请求。 如果您不熟悉测试网络,请查看[此页面](/developers/docs/networks/)。
+创建 Alchemy 帐户后,您可以通过创建应用程序来生成应用程序接口密钥。 我们可以用它向 Ropsten 测试网发出请求。 如果您不熟悉测试网络,请查看[此页面](/developers/docs/networks/)。
1. 在 Alchemy 仪表板中,将鼠标悬停在导航栏中的“应用程序”上,单击“创建应用程序”并前往此页面。
@@ -36,31 +36,31 @@ published: 2021-03-31
![创建应用程序视图 hello world](./create-app-view-hello-world.png)
-3. 点击"创建应用程序",完成! 您的应用程序应该会出现在下面的表格中。
+3. 点击“Create app”,完成! 您的应用程序应该就会出现在下面的表格中。
## 步骤 3:创建一个以太坊账户(地址) {#step-3}
-我们需要一个以太坊帐户来发送和接收交易。 在本教程中,我们将使用 MetaMask——浏览器中的虚拟钱包,用来管理您的以太坊账户地址。 关于[交易](/developers/docs/transactions/)的详细信息。
+我们需要一个以太坊帐户来发送和接收交易。 在本教程中,我们将使用 MetaMask,它是浏览器中的虚拟钱包,用来管理您的以太坊账户地址。 关于[交易](/developers/docs/transactions/)的详细信息。
-您可以[在这里](https://metamask.io/download.html)免费下载并创建一个 MetaMask 账户。 创建账户时,或者如果您已经有一个账户时,确保切换到右上方的“Ropsten 测试网络”(这样我们就不会用实际货币进行交易)。
+您可以点击[此处](https://metamask.io/download.html)免费下载并创建一个 MetaMask 账户。 创建账户时,或者如果您已经有一个账户时,确保切换到右上方的“Ropsten 测试网络”(这样我们就不会用实际货币进行交易)。
![metask ropsten 示例](./metamask-ropsten-example.png)
## 步骤 4:从水龙头添加以太币 {#step-4}
-为了将我们的智能合约部署到测试网络,我们需要一些虚拟以太币。 要获得以太币,您可以访问 [Ropsten 水龙头](https://faucet.dimensions.network/),输入您的 Ropsten 帐户地址,然后点击“发送 Ropsten 以太币”。 由于网络原因,您接收虚拟以太币可能需要一些时间。 您应该会很快在您的 MetaMask 帐户中看到以太币!
+为了将我们的智能合约部署到测试网络,我们需要一些虚拟以太币。 要获取以太币,您可以转到 [Ropsten 水龙头](https://faucet.dimensions.network/)并输入您的 Ropsten 帐户地址,然后点击“Send Ropsten Eth”。 由于网络原因,您接收虚拟以太币可能需要一些时间。 您应该会很快在您的 MetaMask 帐户中看到以太币!
## 步骤 5:查看账户余额 {#step-5}
-为了核实我们的余额,可以使用 [Alchemy 的创作者工具](https://composer.alchemyapi.io?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22eth_getBalance%22%2C%22paramValues%22%3A%5B%22%22%2C%22latest%22%5D%7D)发出 [eth_getBalance](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_getbalance) 请求。 这将返回我们钱包中的以太币金额。 输入您的 MetaMask 帐户地址并单击“发送请求”后,您应该会看到这样的响应:
+为了核查我们账户中有余额,我们使用 [Alchemy composer 工具](https://composer.alchemyapi.io?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22eth_getBalance%22%2C%22paramValues%22%3A%5B%22%22%2C%22latest%22%5D%7D)发出 [eth_getBalance](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_getbalance) 请求。 这将返回我们钱包中的以太币数量。 输入您的 MetaMask 帐户地址并点击“Send Request”后,您应该会看到这样的响应:
```json
{ "jsonrpc": "2.0", "id": 0, "result": "0x2B5E3AF16B1880000" }
```
-> **注意:**结果以 wei 为单位,而非 ETH。 Wei 是以太坊最小的面额。 将 wei 转换为 ETH 的公式为:1 eth = 1018 wei。 因此,如果我们将 0x2B5E3AF16B1880000 转换为十进制,我们会得到 5\*10¹⁸,即 5 ETH。
+> **注意:**结果以 wei 为单位,而非 ETH。 Wei 是以太币的最小计量单位。 将 wei 转换为 ETH 的公式为:1 eth = 1018 wei。 因此,如果我们将 0x2B5E3AF16B1880000 转换为十进制,我们会得到 5\*10¹⁸,即 5 ETH。
>
-> 呼! 我们的虚拟货币到账了 。
+> 哦! 我们的虚拟货币到账了 。
## 步骤 6:初始化我们的项目 {#step-6}
@@ -108,9 +108,9 @@ About to write to /Users/.../.../.../hello-world/package.json:
## 步骤 7:[Hardhat](https://hardhat.org/getting-started/#overview){#step-7}
-安全帽是一个用于编译、部署、测试和调试以太坊软件的开发环境。 在部署到实时链上之前,它帮助开发者在本地构建智能合约和去中心化应用程序。
+安全帽是一个用于编译、部署、测试和调试以太坊软件的开发环境。 它帮助开发者在本地构建智能合约和去中心化应用程序并部署到实时链上。
-在我们的 `Hello-world` 项目中运行:
+在我们的 `hello-world` 项目中运行:
```
npm install --save-dev hardhat
@@ -140,7 +140,7 @@ npx hardhat
👷 Welcome to Hardhat v2.0.11 👷?
-您想做什么? …
+What do you want to do? …
Create a sample project
❯ Create an empty hardhat.config.js
Quit
@@ -157,7 +157,7 @@ mkdir contracts
mkdir scripts
```
-- `contracts/` 是保存我们的 Hello world 智能合约代码文件的位置
+- `contracts/` 是保存我们的 hello world 智能合约代码文件的位置
- `scripts/` 是我们存放脚本的位置,用于部署我们的合约和与之交互。
## 步骤 10:编写合约 {#step-10}
@@ -175,23 +175,22 @@ mkdir scripts
pragma solidity ^0.7.0;
// Defines a contract named `HelloWorld`.
-// 一个合约是函数和数据(其状态)的集合。 // 一旦部署,合约就会留在以太坊区块链的一个特定地址上。 Learn more: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html
+// 一个合约是函数和数据(其状态)的集合。 Once deployed, a contract resides at a specific address on the Ethereum blockchain. Learn more: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html
contract HelloWorld {
// Declares a state variable `message` of type `string`.
- // 状态变量是其值永久存储在合约存储中的变量。 // 关键字 `public` 使得可以从合约外部访问。 // 并创建了一个其它合约或客户端可以调用访问该值的函数。
+ // 状态变量是其值永久存储在合约存储中的变量。 The keyword `public` makes variables accessible from outside a contract and creates a function that other contracts or clients can call to access the value.
string public message;
- // 类似于很多基于类的面向对象语言,
- // 构造函数是仅在合约创建时执行的特殊函数。
- // 构造器用于初始化合约的数据。 // 了解更多:https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constructors
- constructor(string memory initMessage) public {
- // 接受一个字符变量 `initMessage`
- // 并为合约的存储变量`message` 赋值
+ // Similar to many class-based object-oriented languages, a constructor is a special function that is only executed upon contract creation.
+ // 构造器用于初始化合约的数据。 Learn more:https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constructors
+ constructor(string memory initMessage) {
+
+ // Accepts a string argument `initMessage` and sets the value into the contract's `message` storage variable).
message = initMessage;
- }
+ }
- // 一个 public 函数接受字符参数并更新存储变量 `message`
+ // A public function that accepts a string argument and updates the `message` storage variable.
function update(string memory newMessage) public {
message = newMessage;
}
@@ -214,7 +213,7 @@ contract HelloWorld {
npm install dotenv --save
```
-然后,在项目的根目录中创建 `.env` 文件,并将您的 MetaMask 私钥和超文本传输协议 Alchemy 应用程序接口网址添加到其中。
+然后在我们的项目根目录中创建 `.env` 文件,并将您的 MetaMask 私钥和超文本传输协议 Alchemy 应用程序接口网址加入其中。
- 遵循[这些说明](https://metamask.zendesk.com/hc/en-us/articles/360015289632-How-to-Export-an-Account-Private-Key)导出您的私钥
- 请从下方获取超文本传输协议 Alchemy 应用程序接口网址
@@ -294,7 +293,7 @@ npx hardhat compile
合约已经写完,配置文件也准备妥当,现在是写合约部署脚本的时候了。
-转到 `scripts/` 文件夹,创建一个名为 `deplos.js` 的新文件,在其中添加以下内容:
+转到 `scripts/` 文件夹,创建一个名为 `deploy.js` 的新文件,在其中添加以下内容:
```
async function main() {
@@ -340,7 +339,7 @@ npx hardhat run scripts/deploy.js --network ropsten
Contract deployed to address: 0x6cd7d44516a20882cEa2DE9f205bF401c0d23570
```
-如果我们访问 [Ropsten etherscan](https://ropsten.etherscan.io/) 并搜索我们的合约地址,应该能够看到它已经成功部署。 交易将类似以下︰
+如果我们访问 [Ropsten etherscan](https://ropsten.etherscan.io/) 并搜索我们的合约地址,应该能够看到它已经成功部署。 交易将类似以下:
![etherscan 合约](./etherscan-contract.png)
@@ -352,8 +351,8 @@ Contract deployed to address: 0x6cd7d44516a20882cEa2DE9f205bF401c0d23570
为了更深入了解到底发生了什么,我们转到 [Alchemy 仪表板](https://dashboard.alchemyapi.io/explorer)中的 Explorer 选项卡。 如果您有多个 Alchemy 应用程序,请确保按应用程序筛选,然后选择“Hello World”。 ![hello world 浏览器](./hello-world-explorer.png)
-在这里您会看到一系列的 JSON-RPC 调用,都是在我们调用 `.deploy()` 函数时,Hardhat/Ethers 替我们在后端完成的。 这里有两项重要调用,一个是 [`eth_sendRawTransaction`](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_sendrawtransaction),这是实际将我们的合约写入 Ropsten 链的请求, 另一个是 [`eth_getTransactionByHash`](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_gettransactionbyhash),此为读取有关我们交易给定哈希值的请求(即 交易时的典型模式)。 如需了解更多关于发送交易的信息,请查看关于[使用 Web3 发送交易](/developers/tutorials/sending-transactions-using-web3-and-alchemy/)的本教程
+在这里您会看到一系列的 JSON-RPC 调用,都是在我们调用 `.deploy()` 函数时,Hardhat/Ethers 替我们在后端完成的。 这里有两项重要调用,一个是 [`eth_sendRawTransaction`](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_sendrawtransaction),这是实际将我们的合约写入 Ropsten 链的请求,另一个是 [`eth_getTransactionByHash`](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_gettransactionbyhash),此为读取有关我们交易给定哈希值的请求(即 交易时的典型模式)。 如需了解更多关于发送交易的信息,请查看关于[使用 Web3 发送交易](/developers/tutorials/sending-transactions-using-web3-and-alchemy/)的本教程
-这是本教程第 1 部分的全部内容, 在第 2 部分中,我们将更新我们的初始信息,从而[与我们的智能合约交互](https://docs.alchemyapi.io/alchemy/tutorials/hello-world-smart-contract#part-2-interact-with-your-smart-contract);在第 3 部分,我们将[在 Etherscan 上发布我们的智能合约](https://docs.alchemyapi.io/alchemy/tutorials/hello-world-smart-contract#optional-part-3-publish-your-smart-contract-to-etherscan),使得每个人都会知道如何与之交互。
+这是本教程第 1 部分的全部内容,在第 2 部分中,我们将更新我们的初始信息,从而[与我们的智能合约交互](https://docs.alchemyapi.io/alchemy/tutorials/hello-world-smart-contract#part-2-interact-with-your-smart-contract);在第 3 部分,我们将[在 Etherscan 上发布我们的智能合约](https://docs.alchemyapi.io/alchemy/tutorials/hello-world-smart-contract#optional-part-3-publish-your-smart-contract-to-etherscan),使得每个人都会知道如何与之交互。
**想了解更多有关 Alchemy 的信息吗? 查看我们的[网站](https://alchemyapi.io/eth)。 不想错过更新? [在这里](https://www.alchemyapi.io/newsletter)订阅我们的新闻通讯! 请务必关注我们的 [Twitter](https://twitter.com/alchemyplatform) 并加入我们的 [Discord](https://discord.com/invite/u72VCg3)**。
diff --git a/src/content/translations/zh/developers/tutorials/how-to-implement-an-erc721-market/index.md b/src/content/translations/zh/developers/tutorials/how-to-implement-an-erc721-market/index.md
index cd84bf71b74..c022ed575c7 100644
--- a/src/content/translations/zh/developers/tutorials/how-to-implement-an-erc721-market/index.md
+++ b/src/content/translations/zh/developers/tutorials/how-to-implement-an-erc721-market/index.md
@@ -67,7 +67,9 @@ mapping(uint256 => Trade) public trades;
接下来的问题是我们需要处理哪些物品,以及用于支付交易的货币是什么。
-对于物品,我们只是要求它们实现[ERC-721](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/IERC721.sol?ref=hackernoon.com)的接口。这实际上只是一种在区块链中表示现实世界物品的方式,[尽管它最适合数字资产](https://hackernoon.com/tokenization-of-digital-assets-g0ffk3v8s?ref=hackernoon.com)。 我们将在构造函数中定制化我们自己的 ERC721 合约,这意味着我们分类信息板中的任何资产都需要事先被代币化。
+对于物品,我们只是要求它们实现[ERC-721](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC721/IERC721.sol?ref=hackernoon.com)的接口。这实际上只是一种在区块链中表示现实世界物品的方式,
+
+尽管它最适合数字资产。 我们将在构造函数中定制化我们自己的 ERC721 合约,这意味着我们分类信息板中的任何资产都需要事先被代币化。
对于付款,我们将做类似的事情。 大多数区块链项目定义了自己的[ERC-20](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol?ref=hackernoon.com)加密货币。 其他一些人更喜欢使用像 DAI 这样的主流技术。 在这个分类信息板的应用中,您只需要在构造函数里决定您构建的货币是什么。 很容易。
@@ -138,7 +140,7 @@ function cancelTrade(uint256 _trade)
就是这样。 您已经浏览到了该代码实现的末尾。 令人惊讶的是,一些业务概念在用代码表达时是多么紧凑,这就是其中一个例子。 请在[我们的代码库中](https://github.com/HQ20/contracts/blob/master/contracts/classifieds/Classifieds.sol)查看完整的合约代码。
-## 结论 {#conclusion}
+## 总结 {#conclusion}
分类信息板是一种易于在互联网技术的帮助下大规模扩张的常见市场结构,也是一种容易形成少数垄断赢家的非常流行的商业模式。
diff --git a/src/content/translations/zh/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md b/src/content/translations/zh/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md
new file mode 100644
index 00000000000..17fd9711caa
--- /dev/null
+++ b/src/content/translations/zh/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md
@@ -0,0 +1,106 @@
+---
+title: 如何在测试中模拟 Solidity 智能合约
+description: 为什么应该在测试时模拟合约
+author: Markus Waas
+lang: zh
+tags:
+ - "solidity"
+ - "智能合约"
+ - "测试"
+ - "模拟"
+skill: intermediate
+published: 2020-05-02
+source: soliditydeveloper.com
+sourceUrl: https://soliditydeveloper.com/mocking-contracts
+---
+
+[模拟对象](https://en.wikipedia.org/wiki/Mock_object)是面向对象编程中的一种常见设计模式。 Mock 一词来源于古法语词“mocquer”,意为“嘲笑,取笑”,但它渐渐拥有了“模拟真实事物”的含义,这实际上也是我们在编程时所做的事情。 不要随意拿你的智能合约开玩笑,但一定要尽可能多地模拟它们。 这将使你的工作更轻松。
+
+## 使用模拟合约对合约进行单元测试 {#unit-testing-contracts-with-mocks}
+
+对合约进行模拟,本质上是创建一个与该合约行为类似的副本,但开发者可以轻易控制这个副本。 通常你会拥有复杂的合约,而[你只想对合约其中一小部分进行单元测试](/developers/docs/smart-contracts/testing/)。 问题在于,如果测试这一小部分需要合约进入一个非常特别但又难以进入的状态,会怎样?
+
+可以每次都编写将合约带入所需状态的复杂测试设置逻辑,也可以写一个模拟合约。 利用继承,对合约进行模拟比较容易。 只需创建继承原始合约的另一个模拟合约即可。 这时,你就可以重写模拟合约中的函数。 让我们通过一个例子来理解它。
+
+## 示例:私密 ERC20 合约 {#example-private-erc20}
+
+本文使用一个在开始时提供私密时间的示例 ERC-20 合约。 合约所有者可以管理私密用户,而且只有这些用户才能在开始时接收代币。 经过特定一段时间后,所有人就都可以使用代币了。 如果你感到好奇,我们使用新 OpenZeppelin 合约(第三版)中的 [`_beforeTokenTransfer`](https://docs.openzeppelin.com/contracts/3.x/extending-contracts#using-hooks) 钩子进一步阐释。
+
+```solidity
+pragma solidity ^0.6.0;
+
+import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
+import "@openzeppelin/contracts/access/Ownable.sol";
+
+contract PrivateERC20 is ERC20, Ownable {
+ mapping (address => bool) public isPrivateUser;
+ uint256 private publicAfterTime;
+
+ constructor(uint256 privateERC20timeInSec) ERC20("PrivateERC20", "PRIV") public {
+ publicAfterTime = now + privateERC20timeInSec;
+ }
+
+ function addUser(address user) external onlyOwner {
+ isPrivateUser[user] = true;
+ }
+
+ function isPublic() public view returns (bool) {
+ return now >= publicAfterTime;
+ }
+
+ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual override {
+ super._beforeTokenTransfer(from, to, amount);
+
+ require(_validRecipient(to), "PrivateERC20: invalid recipient");
+ }
+
+ function _validRecipient(address to) private view returns (bool) {
+ if (isPublic()) {
+ return true;
+ }
+
+ return isPrivateUser[to];
+ }
+}
+```
+
+现在我们对此合约进行模拟。
+
+```solidity
+pragma solidity ^0.6.0;
+import "../PrivateERC20.sol";
+
+contract PrivateERC20Mock is PrivateERC20 {
+ bool isPublicConfig;
+
+ constructor() public PrivateERC20(0) {}
+
+ function setIsPublic(bool isPublic) external {
+ isPublicConfig = isPublic;
+ }
+
+ function isPublic() public view returns (bool) {
+ return isPublicConfig;
+ }
+}
+```
+
+你将得到以下错误消息之一:
+
+- `PrivateERC20Mock.sol: 类型错误:重写函数缺少"override"修饰符。(TypeError: Overriding function is missing "override" specifier.)`
+- `PrivateERC20.sol:类型错误:尝试重写非virtual函数。 您是否忘记了添加“virtual”关键字?(TypeError: Trying to override non-virtual function. Did you forget to add "virtual"?.)`
+
+由于使用的是新的 Solidity 0.6 版本,所以必须为可被重写的函数添加 `virtual` 关键字,为执行重写的函数添加 override。 因此,我们为两个 `isPublic` 函数添加这些关键字。
+
+现在,在单元测试中,你就可以使用 `PrivateERC20Mock` 了。 想要在私密使用期间测试合约的行为时,请使用 `setIsPublic(false)`;同样,可以使用 `setIsPublic(true)` 在公共使用期间测试。 当然,在本例中,我们也可以只使用[时间帮助器](https://docs.openzeppelin.com/test-helpers/0.5/api#increase)相应地修改时间。 但至此,模拟合约的概念应该已经清楚了,并且你也可以想象一下不仅仅需要修改时间的复杂场景。
+
+## 对多个合约进行模拟 {#mocking-many-contracts}
+
+如果每进行一次模拟都要创建另一个合约,那将是一件很麻烦的事。 如果你被这种情况困扰,可以考虑 [MockContract](https://github.com/gnosis/mock-contract) 库。 它允许用户实时重写和更改合约的行为。 但是,该库只能用来模拟对另一个合约的调用,因此对于上面的示例并不适用。
+
+## 模拟技术还可以更强大 {#mocking-can-be-even-more-powerful}
+
+模拟技术的强大之处远不仅于此。
+
+- 增加函数:不只是重写某个特定函数的功能很有用,额外增加函数的功能也有其用武之地。 对于代币来说,一个很好的示例是增加 `mint` 函数,让任何用户都可以免费获得新代币。
+- 在测试网上使用:当你在测试网上部署和测试你的合约以及去中心化应用程序时,请考虑使用模拟合约。 如非必须,请尽量避免重写函数。 毕竟你想要测试真实的逻辑。 然而,举例来说,添加重置函数是有用的,它只是将合约状态重置为初始状态,而无需再部署一个新合约。 显然,你不想在主网合约中添加这样的函数。
diff --git a/src/content/translations/zh/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md b/src/content/translations/zh/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md
index d1e0e8930a3..683c88abb74 100644
--- a/src/content/translations/zh/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md
+++ b/src/content/translations/zh/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md
@@ -15,8 +15,6 @@ source: 构建安全的合约
sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/echidna
---
-
-
## 安装 {#installation}
Echidna 可以通过 docker 或使用预编译的二进制程序安装。
@@ -39,7 +37,7 @@ cd /home/training
### 通过二进制程序安装 {#binary}
-[https://github.com/crytic/echidna/releases/tag/1.4.0.0](https://github.com/crytic/echidna/releases/tag/1.4.0.0)
+[https://github.com/crytic/echidna/releases/tag/v1.4.0.0](https://github.com/crytic/echidna/releases/tag/v1.4.0.0)
## 基于属性的模糊测试简介 {#introduction-to-property-based-fuzzing}
@@ -47,7 +45,7 @@ Echidna 是一个模糊测试工具,我们在之前的博客中描述过([1]
### 模糊测试 {#fuzzing}
-[模糊测试](https://en.wikipedia.org/wiki/Fuzzing)是一个在安全技术领域广为人知的技术。 它依靠生成或多或少数量的随机输入值来测试程序中的错误。 传统软件中的模糊测试工具(例如 [AFL](http://lcamtuf.coredump.cx/afl/) 或 [LibFuzzer](https://llvm.org/docs/LibFuzzer.html))是发现错误的有效工具。
+[模糊测试](https://wikipedia.org/wiki/Fuzzing)是一项在安全技术领域广为人知的技术。 它依靠生成或多或少数量的随机输入值来测试程序中的错误。 传统软件中的模糊测试工具(例如 [AFL](http://lcamtuf.coredump.cx/afl/) 或 [LibFuzzer](https://llvm.org/docs/LibFuzzer.html))是发现错误的有效工具。
除了完全随机生成输入值外,还有很多其他的技巧和策略来生成足够好的输入,包括:
@@ -57,7 +55,7 @@ Echidna 是一个模糊测试工具,我们在之前的博客中描述过([1]
### 基于属性的模糊测试 {#property-based-fuzzing}
-Echidna 属于一个特定的模糊测试工具系列:基于属性的模糊测试,很大程度上受到了 [QuickCheck](https://en.wikipedia.org/wiki/QuickCheck) 的启发。 与尝试查找崩溃的经典模糊测试工具不同,Echedna 会视图去改变用户定义的不变量。
+Echidna 属于一种特定的模糊测试工具系列:基于属性的模糊测试,很大程度上受到了 [QuickCheck](https://wikipedia.org/wiki/QuickCheck) 的启发。 与尝试查找崩溃的经典模糊测试工具不同,Echedna 会试图去改变用户定义的不变量。
在智能合约中,不变量是 Solidity 函数,可以表示合约可能达到的任何错误或无效状态,包括:
@@ -131,7 +129,7 @@ Echidna 需要一个无参 [构造函数](/developers/docs/smart-contracts/anato
Echidna 中有一些特定的地址:
- `0x00a329c0648769A73afAc7F9381E08FB43dBEA72` 用于调用构造函数。
-- `0x10000`、`0x2000` 和 `0x00a329C0648769a73afAC7F9381e08fb43DBEA70` 用于随机调用其他函数。
+- `0x10000`、`0x20000` 和 `0x00a329C0648769a73afAC7F9381e08fb43DBEA70` 用于随机调用其他函数。
在当前的示例中,我们不需要进行任何特定的初始化,因为我们的构造函数是空的。
@@ -151,7 +149,7 @@ $ echidna-test contract.sol --contract MyContract
### 总结:测试属性 {#summary-testing-a-property}
-下面总结了在我们的示例中运行 Echidna 的情况:
+下面总结了我们示例中 Echidna 的运行情况:
```solidity
contract TestToken is Token{
@@ -229,7 +227,7 @@ contract C {
}
```
-这个小例子迫使 Echidna 找到特定的交易序列来改变一个状态变量。 这对一个模糊测试工具来说很困难(建议使用符号执行工具,比如 [Manticore](https://github.com/trailofbits/manticore))。 我们可以运行 Echidna 来验证:
+这个小例子迫使 Echidna 找到特定的交易序列来改变一个状态变量。 这对一个模糊测试工具来说很困难(建议使用符号执行工具,比如 [Manticore](https://github.com/trailofbits/manticore))。 我们可以运行 Echidna 对此进行验证:
```bash
$ echidna-test multi.sol
@@ -352,7 +350,7 @@ Seed: 1806480648350826486
### 使用断言的时机和方式 {#when-and-how-use-assertions}
-断言可以用作显示属性的替代项,特别是如果要检查的条件与某些操作 `f` 的正确使用直接相关。 在某些代码之后添加断言,将强制在代码执行后立即执行检查:
+断言可以用作显示属性的替代项,特别是如果要检查的条件与某些操作 `f` 的正确使用直接相关。 在某些代码之后添加断言将强制在代码执行后立即进行检查:
```solidity
function f(..) public {
@@ -377,14 +375,14 @@ function echidna_assert_after_f() public returns (bool) {
- 如果 `f` 被声明为 `internal` 或 `external` 则失败.
- 不清楚应该使用哪些参数来调用 `f`。
-- 如果 `f` 恢复,属性将会失败。
+- 如果 `f` 回滚,属性将会失败。
一般来说,我们建议遵循 [John Regehr 关于如何使用断言的建议](https://blog.regehr.org/archives/1091):
- 在进行断言检查时不要强制任何负面影响。 例如: `assert(ChangeStateAndReturn() == 1)`
- 不要断言明显的语句。 例如, 在 `assert(var >= 0)` 中,`var` 被声明为 `uint`。
-最后,请**不要使用** `require` 代替 `assert`,因为 Echidna 将无法检测到它(但合约仍将恢复)。
+最后,请**不要使用** `require` 代替 `assert`,因为 Echidna 将无法检测到它(但合约仍将回滚)。
### 总结:断言检查 {#summary-assertion-checking}
@@ -439,7 +437,7 @@ contract C {
}
```
-这个小例子迫使 Echidna 找到一系列交易来改变一个状态变量。 这对一个模糊测试工具来说很困难(建议使用一个符号执行工具,比如 [Manticore](https://github.com/trailofbits/manticore))。 我们可以运行 Echidna 对此进行验证:
+这个小例子迫使 Echidna 找到一系列交易来改变一个状态变量。 这对一个模糊测试工具来说很困难(建议使用符号执行工具,比如 [Manticore](https://github.com/trailofbits/manticore))。 我们可以运行 Echidna 对此进行验证:
```bash
$ echidna-test magic.sol
@@ -544,11 +542,11 @@ Seed: -7293830866560616537
```
-这一次,我们立刻就能发现该属性发生了冲突。
+这一次,它立即发现与该属性发生了冲突。
## 查找消耗大量 gas 的交易 {#finding-transactions-with-high-gas-consumption}
-我们来了解如何用 Echidna 查找有 gas 消耗的交易。 目标是以下智能合约:
+我们来看看如何使用 Echidna 查找燃料消耗大的交易。 目标是以下智能合约:
```solidity
contract C {
@@ -587,7 +585,7 @@ Seed: 2320549945714142710
### 测量 gas 消耗 {#measuring-gas-consumption}
-要使用 Echidna 计算 gas 消耗,请创建一个配置文件 `config.yaml`:
+要使用 Echidna 测量燃料消耗,请创建配置文件 `config.yaml`:
```yaml
estimateGas: true
@@ -664,7 +662,7 @@ clear used a maximum of 35916 gas
push used a maximum of 40839 gas
```
-这是因为成本取决于 `addrers` 的大小,而随机调用往往会使数组几乎为空。 将 `pop` 和 `clear` 加入黑名单却给我们带来了更好的结果:
+这是因为成本取决于 `addrs` 的大小,而随机调用往往会使数组几乎为空。 将 `pop` 和 `clear` 加入黑名单却给我们带来了更好的结果:
```yaml
filterBlacklist: true
diff --git a/src/content/translations/zh/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md b/src/content/translations/zh/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md
index efb38377b5e..014c16e362c 100644
--- a/src/content/translations/zh/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md
+++ b/src/content/translations/zh/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md
@@ -4,14 +4,14 @@ description: 如何使用Manticore来自动发现智能合约漏洞
author: Trailofbits
lang: zh
tags:
- - "solidity"
+ - "固态"
- "智能合约"
- "安全性"
- "测试"
- "形式化验证"
skill: advanced
published: 2020-01-13
-source: 构建安全合约
+source: 构建安全的合约
sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/manticore
---
@@ -19,7 +19,7 @@ sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/progr
## 安装 {#installation}
-Manticore 需要使用 python 3.6。 它可以通过 pip 安装或使用 docker。
+Manticore 需要使用 python 3.6。 它可以通过 pip 或使用 docker 来安装。
### 使用 docker 的 Manticore {#manticore-through-docker}
@@ -33,6 +33,7 @@ _最后一个命令在一个可访问您当前目录的 docker 中运行 eth-sec
在 docker 中,运行:
```bash
+solc-select 0.5.11
cd /home/trufflecon/
```
@@ -68,11 +69,11 @@ python3 script.py
为了了解 DSE 如何工作,请考虑以下示例:
```solidity
-function f(uint a){
+f(uint a).
+
+ if (aa== 65) }
+ // bug 存在
- if (a == 65) {
- // A bug is present
- }
}
```
@@ -82,7 +83,7 @@ function f(uint a){
- 路径 1: `a == 65`
- 路径 2: `Not (a == 65)`
-每条路径预测都是一个数学公式,可以传递给给所谓的[SMT 求解器](https://wikipedia.org/wiki/Satisfiability_modulo_theories),它将尝试解方程式。 对于`路径1`,求解器会说,可以用`a=65`探索路径。 对于`路径2`,求解器可以给`a`指定一个 65 以外的任何值,例如`a=0`。
+每个路径预测都是一个数学公式,可以传递给所谓的 [SMT 求解器](https://wikipedia.org/wiki/Satisfiability_modulo_theories),求解器将尝试解方程式。 对于`路径1`,求解器会说,可以用`a=65`探索路径。 对于`路径2`,求解器可以给`a`指定一个 65 以外的任何值,例如`a=0`。
### 验证属性 {#verifying-properties}
@@ -91,9 +92,9 @@ Manticore 允许完全控制每个路径的所有执行情况。 因此,它允
请考虑下面的示例:
```solidity
-function unsafe_add(uint a, uint b) returns(uint c){
- c = a + b; // no overflow protection
- return c;
+function unsafe_add(uint a, uint b) returns(uint c)。
+ c = a + b;// no overflow protection
+ return c;
}
```
@@ -112,8 +113,8 @@ function unsafe_add(uint a, uint b) returns(uint c){
```solidity
function safe_add(uint a, uint b) returns(uint c){
c = a + b;
- require(c>=a);
- require(c>=b);
+ require(c->=a);
+ require(c)>=b);
return c;
}
```
@@ -189,7 +190,7 @@ _检索摘要 f(!=65)表示使用不同于 65 的任何值调用的调用的 f
正如您可以注意到的那样,Manticore 为每个成功或撤销的交易生成一个独特的测试案例。
-如果您想要快速的代码检查,请使用`--Quickmode`标志(它禁用 bug 检测器、gas 计算...)
+如果您想要快速的代码检查,请使用`--quick-mode`标志(它禁用 bug 检测器、gas 计算...)
### 通过 API 操纵智能合约 {#manipulate-a-smart-contract-through-the-api}
@@ -200,18 +201,18 @@ _检索摘要 f(!=65)表示使用不同于 65 的任何值调用的调用的 f
首先,您要通过以下命令启动一个新的区块链:
```python
-from manticore.ethereum importer MantocoreEVM
+from manticore.ethereum import ManticoreEVM
-m = MantocoreEVM()
+m = ManticoreEVM()
```
-使用[m.create_account](https://manticore.readthedocs.io/en/latest/evm.html?highlight=create_account#manticore.ethereum.ManticoreEVM.create_account)创建一个非合约帐户:
+使用 [m.create_account](https://manticore.readthedocs.io/en/latest/evm.html?highlight=create_account#manticore.ethereum.ManticoreEVM.create_account) 创建一个非合约账号:
```python
user_account = m.create_account(balance=1000)
```
-可以使用[m.solidity_create_contract](https://manticore.readthedocs.io/en/latest/evm.html?highlight=solidity_create#manticore.ethereum.ManticoreEVM.create_contract)来部署一个 Solidity 合约:
+可以使用 [m.solidity_create_contract](https://manticore.readthedocs.io/en/latest/evm.html?highlight=solidity_create#manticore.ethereum.ManticoreEVM.create_contract) 部署一个 Solidity 合约:
```solidity
source_code = '''
@@ -230,7 +231,7 @@ contract_account = m.solidity_create_contract(source_code, owner=user_account)
#### 概览 {#summary}
-- 您可以通过[m.create_account](https://manticore.readthedocs.io/en/latest/evm.html?highlight=create_account#manticore.ethereum.ManticoreEVM.create_account)和[m.solidity_create_contract](https://manticore.readthedocs.io/enura/api.html#manticore.ethereum.ManticoreEVM.solidity_create_contract)创建用户和合约帐户。
+- 可以使用 [m.create_account](https://manticore.readthedocs.io/en/latest/evm.html?highlight=create_account#manticore.ethereum.ManticoreEVM.create_account) 和 [m.solidity_create_contract](https://manticore.readthedocs.io/en/latest/evm.html?highlight=solidity_create#manticore.ethereum.ManticoreEVM.create_contract) 创建用户账户和合约账户。
### 执行交易 {#executing-transactions}
@@ -241,7 +242,7 @@ Manticore 支持两种类型的交易:
#### 原始交易 {#raw-transaction}
-使用[m.transaction](https://manticore.readthedocs.io/en/latest/evm.html?highlight=transaction#manticore.ethereum.ManticoreEVM.transaction)执行原始交易:
+使用 [m.transaction](https://manticore.readthedocs.io/en/latest/evm.html?highlight=transaction#manticore.ethereum.ManticoreEVM.transaction) 执行原始交易:
```python
m.transaction(caller=user_account,
@@ -252,10 +253,10 @@ m.transaction(caller=user_account,
调用者、地址、数据或交易的值可以是具体的或抽象的:
-- [mmmake_symbolic_value](https://manticore.readthedocs.io/en/latest/evm.html?highlight=make_symbolic_value#manticore.ethereum.ManticoreEVM.make_symbolic_value)创建一个抽象值。
-- [mmmake_symbolic_buffer(size)](https://manticore.readthedocs.io/en/latest/evm.html?highlight=make_symbolic_buffer#manticore.ethereum.ManticoreEVM.make_symbolic_buffer)创建一个符号字节数组。
+- [m.make_symbolic_value](https://manticore.readthedocs.io/en/latest/evm.html?highlight=make_symbolic_value#manticore.ethereum.ManticoreEVM.make_symbolic_value) 创建一个符号值。
+- [mmmake_symbolic_buffer(size)](https://manticore.readthedocs.io/en/latest/evm.html?highlight=make_symbolic_buffer#manticore.ethereum.ManticoreEVM.make_symbolic_buffer) 创建一个符号字节数组。
-例如
+例如:
```python
symbolic_value = m.make_symbolic_value()
@@ -295,7 +296,7 @@ print("Results are in {}".format(m.workspace))
### 终止探索 {#terminate-the-exploration}
-要停止探索,请使用[m.finalize()](https://manticore.readthedocs.io/en/latest/evm.html?highlight=finalize#manticore.ethereum.ManticoreEVM.finalize)。 一旦这个方法被调用,就不应该再发送任何交易,而且 Manticore 会针对所探索的每一条路径生成测试案例。
+要停止探索,请使用 [m.finalize()](https://manticore.readthedocs.io/en/latest/evm.html?highlight=finalize#manticore.ethereum.ManticoreEVM.finalize)。 一旦这个方法被调用,就不应该再发送任何交易,而且 Manticore 会针对所探索的每一条路径生成测试案例。
### 总结:在 Manticore 下运行 {#summary-running-under-manticore}
@@ -364,7 +365,7 @@ data = ABI.deserialize("uint", data)
### 如何生成测试案例 {#how-to-generate-testcase}
-使用[m.generate_testcase(state, name)](https://manticore.readthedocs.io/en/latest/evm.html?highlight=generate_testcase#manticore.ethereum.ManticoreEVM.generate_testcase)生成测试案例:
+使用 [m.generate_testcase(state, name)](https://manticore.readthedocs.io/en/latest/evm.html?highlight=generate_testcase#manticore.ethereum.ManticoreEVM.generate_testcase) 生成测试案例:
```python
m. generate_testcase(state, 'BugFound')
@@ -450,7 +451,7 @@ last_return = operators.CONCAT(256,*last_return)
#### 全局约束 {#state-constraint}
-使用`m.constraint(constraint)`来添加一个全局约束。 例如,您可以从一个符号地址调用合约,并将这个地址约束为特定的值:
+使用 `m.constrain(constraint)` 添加全局约束。 例如,您可以从一个符号地址调用合约,并将这个地址约束为特定的值:
```python
symbolic_address = m.make_symbolic_value()
@@ -463,7 +464,7 @@ m.transaction(caller=user_account,
#### 状态约束 {#state-constraint}
-使用[state.constrain(constraint)](https://manticore.readthedocs.io/en/latest/states.html?highlight=StateBase#manticore.core.state.StateBase.constrain)为一个特定的状态添加一个约束。它可以用来在状态检索后对其进行约束,以检查其上的某些属性。
+使用 [state.constrain(constraint)](https://manticore.readthedocs.io/en/latest/states.html?highlight=StateBase#manticore.core.state.StateBase.constrain) 为一个特定状态添加约束。 该约束可用来在探索状态后对其进行约束,以检查状态上的某些属性。
### 检查约束 {#checking-constraint}
diff --git a/src/content/translations/zh/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md b/src/content/translations/zh/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md
index e5f3d55e336..4a13c7dbfd0 100644
--- a/src/content/translations/zh/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md
+++ b/src/content/translations/zh/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md
@@ -26,7 +26,7 @@ sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/progr
## 安装 {#installation}
-Slither 需要 Python3.6 及以上版本。 它可以通过 pip 或使用 docker 来安装。
+Slither 需要 Python3.6 及以上版本。 它可以通过 pip 安装或使用 docker。
通过 pip 安装 Slither:
@@ -68,7 +68,7 @@ slither project_paths
除了检测器之外,Slither 还通过其[打印机](https://github.com/crytic/slither#printers)和[工具](https://github.com/crytic/slither#tools)提供代码审查功能。
-使用[crytic.io](https://crytic.io)以获得对私有探测器和 GitHub 集成功能的访问权限。
+使用 [crytic.io](https://github.com/crytic) 以获得对私有探测器和 GitHub 集成功能的访问权限。
## 静态分析 {#static-analysis}
@@ -103,7 +103,7 @@ function safeAdd(uint a, uint b) pure internal returns(uint){
相应的 AST 如图所示:
-![抽象语法树(AST)](../../../../../developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/ast.png)
+![抽象语法树(AST)](./ast.png)
Slither 使用由 solc 工具导出的 AST。
@@ -132,7 +132,7 @@ print(f'The expression {expression} has a addition: {visitor.result()}')
第二种最常见的代码表示是控制流图(CFG)。 顾名思义,它是一种基于图的表示方法,展现了所有的代码执行路径。 每个节点包含一条或多条指令。 图中的边代表控制流操作(if/then/else,循环,等等)。 我们上一个例子的 CFG 是:
-![控制流图(CFG)](../../../../../developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/cfg.png)
+![控制流图(CFG)](./cfg.png)
大多数的代码分析技术都是建立在 CFG 的基础表示之上。
@@ -185,7 +185,7 @@ for(uint i; i < range; ++){
您的分析将需要知道何时停止。 这里有两种主要策略:1)在每个节点上迭代有限次数,2)通过计算所谓的*定点*。 一个定点基本上意味着分析此节点不会提供任何有意义的信息。
-在代码可重入检测器中可以找到使用的定点的示例:Slither 探索这些节点,寻找外部调用、写入和读取存储。 一旦到达某个定点 ([reentrancy.py#L125-L131](https://github.com/crytic/slither/blob/master/slither/detectors/reentrancy/reentrancy.py#L125-L131)),分析器就会停止代码遍历,并通过不同的重入模式来分析结果,了解是否存在代码重入现象。([reentrancy_benign.py](https://github.com/crytic/slither/blob/b275bcc824b1b932310cf03b6bfb1a1fef0ebae1/slither/detectors/reentrancy/reentrancy_benign.py)、[reentrancy_read_before_write.py](https://github.com/crytic/slither/blob/b275bcc824b1b932310cf03b6bfb1a1fef0ebae1/slither/detectors/reentrancy/reentrancy_read_before_write.py)、[reentrancy_eth.py](https://github.com/crytic/slither/blob/b275bcc824b1b932310cf03b6bfb1a1fef0ebae1/slither/detectors/reentrancy/reentrancy_eth.py))。
+在代码可重入检测器中可以找到使用的定点的示例:Slither 探索这些节点,寻找外部调用、写入和读取存储。 一旦到达某个定点 ([reentrancy.py#L125-L131](https://github.com/crytic/slither/blob/master/slither/detectors/reentrancy/reentrancy.py#L125-L131)),分析器就会停止代码遍历,并通过不同的重入模式来分析结果,了解是否存在代码重入现象。([reentrancy_benign.py](https://github.com/crytic/slither/blob/b275bcc824b1b932310cf03b6bfb1a1fef0ebae1/slither/detectors/reentrancy/reentrancy_benign.py)、[reentrancy_read_before_write.py](https://github.com/crytic/slither/blob/b275bcc824b1b932310cf03b6bfb1a1fef0ebae1/slither/detectors/reentrancy/reentrancy_read_before_write.py)、[reentrancy_eth.py](https://github.com/crytic/slither/blob/b275bcc824b1b932310cf03b6bfb1a1fef0ebae1/slither/detectors/reentrancy/reentrancy_eth.py))。
使用高效的定点计算方法编写分析,需要很好地理解分析是如何传播其信息的。
diff --git a/src/content/translations/zh/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md b/src/content/translations/zh/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md
new file mode 100644
index 00000000000..404bb1c77f9
--- /dev/null
+++ b/src/content/translations/zh/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md
@@ -0,0 +1,100 @@
+---
+title: 如何将 Tellor 设置为您的预言机
+description: 将 Tellor 预言机集成到协议中的指南
+author: "Tellor"
+lang: zh
+tags:
+ - "solidity"
+ - "智能合约"
+ - "价格馈送"
+ - "预言机"
+skill: beginner
+published: 2021-06-29
+source: Tellor Docs
+sourceUrl: https://docs.tellor.io/tellor/
+---
+
+小测验:您的协议即将完成,但它需要一个预言机来访问链下数据......您该怎么做?
+
+## (软)前提条件 {#soft-prerequisites}
+
+这篇文章旨在解释如何让访问预言机数据馈送变得简单易行。 这就是说,我们假定您具备一定的编码技能水平,下文侧重于讲述预言机方面。
+
+本文假定:
+
+- 您能够使用终端
+- 您安装了 npm
+- 您知道如何使用 npm 管理依赖项
+
+Tellor 是一种可供直接实现的开源预言机。 本初学者教程旨在展示如何简单地运行 Tellor,为您的项目提供一个完全去中心化的、抗审查的预言机。
+
+## 概述 {#overview}
+
+Tellor 是一种预言机系统,参与者可以在该系统中请求链下数据点(例如 BTC/USD)的值,提供者相互竞争将该值添加到链上数据库中,使得所有以太坊智能合约都可以访问该值。 该数据库的输入由质押提供者网络提供保护。 Tellor 利用加密经济激励机制,奖励提供者诚实的数据提交行为,并通过发行 Tellor 的代币、Tribute (TRB) 和争议机制来惩罚不良行为者。
+
+在本教程中,我们将介绍:
+
+- 设置您需要运行的初始工具包。
+- 讲解一个简单示例。
+- 列出目前可以测试 Tellor 的网络的测试网地址。
+
+## 使用 Tellor {#usingtellor}
+
+首先安装一些基本工具,以便将 Tellor 作为预言机。 使用[此软件包](https://github.com/tellor-io/usingtellor)安装 Tellor 用户合约:
+
+`npm install usingtellor`
+
+安装完成后,将允许您的合约继承“UsingTellor”合约的函数。
+
+很好! 既然您已经准备好工具了,我们来完成一个简单的练习来获取比特币价格:
+
+### BTC/USD 示例 {#btcusd-example}
+
+继承 UsingTellor 合约,将 Tellor 的地址作为构造函数的参数:
+
+下面是一个示例:
+
+```solidity
+import "usingtellor/contracts/UsingTellor.sol";
+
+contract BtcPriceContract is UsingTellor {
+
+ //This Contract now has access to all functions in UsingTellor
+
+ bytes btcPrice;
+ bytes32 btcQueryId = 0x0000000000000000000000000000000000000000000000000000000000000002;
+
+ constructor(address payable _tellorAddress) UsingTellor(_tellorAddress) public {}
+
+ function setBtcPrice() public {
+ bool _didGet;
+ uint256 _timestamp;
+
+ (_didGet, btcPrice, _timestamp) = getCurrentValue(btcQueryId);
+ }
+}
+```
+
+**想尝试不同的数据馈送? 请点击此处查看支持的数据馈送列表: [当前数据馈送](https://docs.tellor.io/tellor/integration/data-feed-ids)**
+
+## 地址 {#addresses}
+
+主网:[`0x88df592f8eb5d7bd38bfef7deb0fbc02cf3778a0`](https://etherscan.io/address/0x88df592f8eb5d7bd38bfef7deb0fbc02cf3778a0#code)
+
+#### 要先进行一些测试吗? 请参阅以下活跃的测试网地址列表: {#looking-to-do-some-testing-first-see-the-list-below-for-our-active-testnet-addresses}
+
+Rinkeby:[`0x88df592f8eb5d7bd38bfef7deb0fbc02cf3778a0`](https://rinkeby.etherscan.io/address/0x88df592f8eb5d7bd38bfef7deb0fbc02cf3778a0#code)
+
+Kovan:[`0x3477EB82263dabb59AC0CAcE47a61292f28A2eA7`](https://kovan.etherscan.io/address/0x3477EB82263dabb59AC0CAcE47a61292f28A2eA7#code)
+
+Ropsten:[`0x3477EB82263dabb59AC0CAcE47a61292f28A2eA7`](https://ropsten.etherscan.io/address/0x3477EB82263dabb59AC0CAcE47a61292f28A2eA7#code)
+
+Goerli:[`0x3477EB82263dabb59AC0CAcE47a61292f28A2eA7`](https://goerli.etherscan.io/address/0x3477EB82263dabb59AC0CAcE47a61292f28A2eA7#code)
+
+BSC Testnet:[`0x3477EB82263dabb59AC0CAcE47a61292f28A2eA7`](https://testnet.bscscan.com/address/0x3477EB82263dabb59AC0CAcE47a61292f28A2eA7#code)
+
+Polygon Mumbai Testnet:[`0x3477EB82263dabb59AC0CAcE47a61292f28A2eA7`](https://mumbai.polygonscan.com/address/0x3477EB82263dabb59AC0CAcE47a61292f28A2eA7/contracts#code)
+
+Arbitrum Testnet:[`0x3477EB82263dabb59AC0CAcE47a61292f28A2eA7`](https://rinkeby-explorer.arbitrum.io/address/0x3477EB82263dabb59AC0CAcE47a61292f28A2eA7)
+
+#### 要更加可靠地实现 Tellor 预言机,请点击[此处](https://github.com/tellor-io/usingtellor/blob/master/README.md)查看可用函数的完整列表。 {#for-a-more-robust-implementation-of-the-tellor-oracle-check-out-the-full-list-of-available-functions-here}
diff --git a/src/content/translations/zh/developers/tutorials/kickstart-your-dapp-frontend-development-wth-create-eth-app/index.md b/src/content/translations/zh/developers/tutorials/kickstart-your-dapp-frontend-development-wth-create-eth-app/index.md
index dbd25d63347..a9f8e3a4b8d 100644
--- a/src/content/translations/zh/developers/tutorials/kickstart-your-dapp-frontend-development-wth-create-eth-app/index.md
+++ b/src/content/translations/zh/developers/tutorials/kickstart-your-dapp-frontend-development-wth-create-eth-app/index.md
@@ -1,6 +1,6 @@
---
-title: 使用 Create-eth-app 启动您的 dapp 前端开发
-description: 如何使用 Create-eth-app 及其功能的概述
+title: 使用 create-eth-app 启动去中心化应用程序前端开发
+description: 如何使用 create-eth-app 及其功能的概述
author: "Markus Waas"
tags:
- "create-eth-app"
@@ -19,7 +19,7 @@ source: soliditydeveloper.com
sourceUrl: https://soliditydeveloper.com/create-eth-app
---
-上一次,我们了解 [Solidity](https://soliditydeveloper.com/solidity-overview-2020) 大的框架时,已经提到了 [create-eth-app](https://github.com/PaulRBerg/create-eth-app) 。 现在,您将了解如何使用它,它集成了哪些功能以及如何对其进行扩展等内容。 这个应用程序由 [Sablier](http://sablier.finance/)创始人 Paul Razvan Berg 启动,它将启动您的前端开发,并且具有多个可选集成供您选择。
+上一次,我们了解 [Solidity](https://soliditydeveloper.com/solidity-overview-2020) 大的框架时,已经提到了 [create-eth-app](https://github.com/PaulRBerg/create-eth-app)。 现在,您将了解如何使用它,它集成了哪些功能以及如何对其进行扩展等内容。 这个应用程序由 [Sablier](http://sablier.finance/)创始人 Paul Razvan Berg 启动,它将启动您的前端开发,并且具有多个可选集成供您选择。
## 安装 {#installation}
@@ -54,21 +54,21 @@ yarn react-app:start
### ethers.js {#ethersjs}
-虽然 [Web3](https://web3js.readthedocs.io/en/v1.2.7/) 仍被广泛使用,但 [ethers.js](https://docs.ethers.io/) 作为一种替代方案,在过去一年中获得了更多的关注,并且已集成到 _create-eth-app_ 中。 您可以使用这个操作,将它更改为 Web3,或者考虑升级为 [ethers.js v5](https://docs-beta.ethers.io/) ,该版本即将完成测试阶段。
+虽然 [Web3](https://web3js.readthedocs.io/en/v1.2.7/) 仍被广泛使用,但 [ethers.js](https://docs.ethers.io/) 作为一种替代方案,在过去一年中获得了更多的关注,并且已集成到 _create-eth-app_ 中。 您可以使用这个操作,将它更改为 Web3,或者考虑升级为 [ethers.js v5](https://docs-beta.ethers.io/),该版本即将完成测试阶段。
### 图表 {#the-graph}
-与 [Restful API](https://restfulapi.net/) 相比,[GraphQL](https://graphql.org/) 是处理数据的另一种方式。 与 Resful Api 相比 它们有几个优势,特别是对于去中心化的区块链数据来说更是如此。 如果您对这背后的原因感兴趣,可以看看 [GraphQL 将为去中心化网络提供动力](https://medium.com/graphprotocol/graphql-will-power-the-decentralized-web-d7443a69c69a)。
+与 [Restful API](https://restfulapi.net/) 相比,[GraphQL](https://graphql.org/) 是处理数据的另一种方式。 与 Restful Api 相比,它们有几个优势,特别是对于去中心化的区块链数据来说更是如此。 如果您对这背后的原因感兴趣,可以看看 [GraphQL 将为去中心化网络提供动力](https://medium.com/graphprotocol/graphql-will-power-the-decentralized-web-d7443a69c69a)。
-通常您会直接从您的智能合约中获取数据。 想要读取上次交易的时间吗? 只需调用 `MyContract.methods.latestTradeTime().call()`,它可以从以太坊的节点获取数据到您的 Dapp 中。 但如果您需要数百个不同的数据点,该怎么办? 这将导致数百次从节点提取数据这样的操作,每次都需要 [往返时间](https://wikipedia.org/wiki/Round-trip_delay_time),使您的去中心化应用程序缓慢而低效。 一个变通的办法是在您的合约中设置一个取数器调用函数,一次性返回多个数据。 但这并不总是理想的。
+通常您会直接从您的智能合约中获取数据。 想要读取上次交易的时间吗? 只需调用 `MyContract.methods.latestTradeTime().call()`,它将数据从以太坊节点(如 Infura)提取到你的去中心化应用程序。 但如果您需要数百个不同的数据点,该怎么办? 这将导致在节点上进行数百次数据提取操作,每次都有[往返延时](https://wikipedia.org/wiki/Round-trip_delay_time),使你的去中心化应用程序缓慢且效率低下。 一个变通的办法是在您的合约中设置一个取数器调用函数,一次性返回多个数据。 但这并不总是理想的。
然后您可能对历史数据也感兴趣。 您不仅想知道上次交易的时间,还想知道自己做过的所有交易的时间。 使用 _create-eth-app_ 子图包,阅读[文档](https://thegraph.com/docs/define-a-subgraph)并使其适合您自己的合约。 如果您正在寻找受欢迎的智能合约,甚至可能已经有了一个子图。 可以查看[子图浏览器](https://thegraph.com/explorer/)。
-您有了一个子图后,您可以在 Dapp 中编写一个简单的查询来检索所有重要的区块链数据,包括您需要的历史数据,只需获取一次即可。
+有了子图后,你可以在去中心化应用程序中编写一个简单的查询来检索所有重要的区块链数据,包括你需要的历史数据,并且只需一次提取操作即可。
### Apollo {#apollo}
-由于 [Apollo Boost](https://www.apollographql.com/docs/react/get-started/) 集成,您可以轻松将图集成到您的 React Dapp 中。 特别是在使用 [React hooks 和 Apollo](https://www.apollographql.com/blog/apollo-client-now-with-react-hooks-676d116eeae2) 时,获取数据就像在您的组件中写一个 GraphQl 查询一样简单:
+由于 [Apollo Boost](https://www.apollographql.com/docs/react/get-started/) 集成,你可以轻松将图集成到 React 去中心化应用程序中。 特别是在使用 [React hooks 和 Apollo](https://www.apollographql.com/blog/apollo-client-now-with-react-hooks-676d116eeae2) 时,获取数据就像在您的组件中写一个 GraphQl 查询一样简单:
```js
const { loading, error, data } = useQuery(myGraphQlQuery)
@@ -82,7 +82,7 @@ React.useEffect(() => {
## 模板 {#templates}
-在顶部,您可以从几个不同的模板中进行选择。 到目前为止,您可以使用 Aave、Comp、Unifap 或 sablier 集成。 它们都增加了重要的服务智能合约地址以及预先制作的子图集成。 只需将模板添加到创建命令,例如 `yarn create eth-app my-eth-app --with-template aave`。
+在顶部,您可以从几个不同的模板中进行选择。 到目前为止,您可以使用 Aave、Comp、UniSwap 或 sablier 集成。 它们都增加了重要的服务智能合约地址以及预先制作的子图集成。 只需将模板添加到创建命令,例如 `yarn create eth-app my-eth-app --with-template aave`。
### Aave {#aave}
@@ -100,7 +100,7 @@ React.useEffect(() => {
### Uniswap {#uniswap}
-[Uniswap](https://uniswap.exchange/) 是一个去中心化的交易所 (DEX)。 流动性供应商可以通过为交易双方提供所需的代币或 ETH 来赚取费用。 它正在被广泛使用,因此对于非常多的各种代币来说,它的流动性是最高的当中的一个。 您可以轻松地将其集成到您的 Dapp 中,例如允许用户将其 ETH 换成 DAI 。
+[Uniswap](https://uniswap.exchange/) 是一个去中心化的交易所 (DEX)。 流动性供应商可以通过为交易双方提供所需的代币或以太币来赚取费用。 它正在被广泛使用,因此对于非常多的各种代币来说,它的流动性是最高的当中的一个。 例如,你可以轻松地将其集成到你的去中心化应用程序中,让用户可以将他们的以太币换成 DAI 币。
遗憾的是,在撰写本文时,集成仅针对 Uniswap v1,而不是 [刚刚发布的 v2](https://uniswap.org/blog/uniswap-v2/)。
diff --git a/src/content/translations/zh/developers/tutorials/learn-foundational-ethereum-topics-with-sql/index.md b/src/content/translations/zh/developers/tutorials/learn-foundational-ethereum-topics-with-sql/index.md
new file mode 100644
index 00000000000..13be98681e7
--- /dev/null
+++ b/src/content/translations/zh/developers/tutorials/learn-foundational-ethereum-topics-with-sql/index.md
@@ -0,0 +1,277 @@
+---
+title: 通过 SQL 学习以太坊基础主题
+description: 本教程帮助读者通过使用结构化查询语言 (SQL) 查询链上数据,了解以太坊的基本概念,包括交易、区块和燃料。
+author: "Paul Apivat"
+tags:
+ - "SQL"
+ - "查询"
+ - "分析"
+ - "入门指南"
+ - "Dune Analytics"
+ - "区块"
+ - "交易"
+ - "燃料"
+skill: beginner
+lang: zh
+published: 2021-05-11
+source: paulapivat.com
+sourceUrl: https://paulapivat.com/post/query_ethereum/
+---
+
+针对开发者的以太坊教程很多,但对于数据分析师或希望不运行客户端或节点就能查看链上数据的人员,教育资源却稀缺。
+
+本教程帮助读者通过 [Dune Analytics](https://dune.xyz/home) 提供的接口,使用结构化查询语言 (SQL) 查询链上数据,从而了解以太坊的基本概念,包括交易、区块和燃料。
+
+链上数据可以帮助我们理解网络和算力经济 — 以太坊,并且帮助我们理解以太坊当前所面临的挑战(例如不断上涨的燃料),更重要的是,了解一些围绕扩容解决方案的讨论。
+
+### 交易 {#transactions}
+
+用户以太坊之旅的第一步是初始化具有以太币余额的用户控制帐户或实体。 账户类型分为两种 — 用户控制账户或智能合约(参阅 [ethereum.org](/developers/docs/accounts/))。
+
+可以在诸如 [Etherscan](https://etherscan.io/) 等区块浏览器上查看任何账户。 区块浏览器是您访问以太坊数据的门户。 它们实时显示区块上的数据、交易、矿工、帐户和其他链上活动(参阅[此处](/developers/docs/data-and-analytics/block-explorers/))。
+
+然而,用户可能希望直接查询数据,以核对外部区块浏览器提供的信息。 [Dune Analytics](https://duneanalytics.com/) 为任何对 SQL 有一定了解的人提供了这种功能。
+
+作为参考,以太坊基金会 (EF) 的智能合约账户可以在 [Etherscan](https://etherscan.io/address/0xde0b295669a9fd93d5f28d9ec85e40f4cb697bae) 上查看。
+
+值得注意的是,包括以太坊基金会账户在内的所有账户都有一个公共地址,可用来发送和接收交易。
+
+Etherscan 上的账户余额由常规交易和内部交易构成。 尽管使用了这一名称,但内部交易并不是改变链状态的*真正*交易。 它们是通过执行合约发起的价值转移([原文](https://ethereum.stackexchange.com/questions/3417/how-to-get-contract-internal-transactions))。 因为内部交易没有签名,它们**没有**包含在区块上,并且不能通过 Dune Analytics 查询。
+
+因此,本教程将侧重于常规交易。 可以这样查询:
+
+```sql
+WITH temp_table AS (
+SELECT
+ hash,
+ block_number,
+ block_time,
+ "from",
+ "to",
+ value / 1e18 AS ether,
+ gas_used,
+ gas_price / 1e9 AS gas_price_gwei
+FROM ethereum."transactions"
+WHERE "to" = '\xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
+ORDER BY block_time DESC
+)
+SELECT
+ hash,
+ block_number,
+ block_time,
+ "from",
+ "to",
+ ether,
+ (gas_used * gas_price_gwei) / 1e9 AS txn_fee
+FROM temp_table
+```
+
+产生的信息与 Etherscan 交易页面提供的信息相同。 为了比较起见,下面是两种来源的信息:
+
+#### Etherscan {#etherscan}
+
+![](./etherscan_view.png)
+
+[Etherscan 上以太坊基金会的合约页面。](https://etherscan.io/address/0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe)
+
+#### Dune Analytics {#dune-analytics}
+
+![](./dune_view.png)
+
+可以在[此处](https://duneanalytics.com/paulapivat/Learn-Ethereum)找到仪表板。 点击表格查看查询(另请参阅上文)。
+
+### 交易明细 {#breaking_down_transactions}
+
+提交的交易包含几条信息,包括[(原文)](/developers/docs/transactions/):
+
+- **接收者**:接收地址(通过“to”查询)
+- **签名**:虽然由发送者的私钥签署交易,但我们可以通过 SQL 查询的是发送者的公共地址(“from”)。
+- **价值**:指的是转移的以太币数量(参阅 `ether` 列)。
+- **数据**:指的是经过哈希运算的任意数据(参阅 `data` 列)
+- **gasLimit** – 交易可以消耗的最大数量的燃料单位。 燃料单位代表计算步骤
+- **maxPriorityFeePerGas** - 作为矿工小费包含的最大燃料数量
+- **maxFeePerGas** - 愿意为交易支付的最大燃料数量(包括 baseFeePerGas 和 maxPriorityFeePerGas)
+
+我们可以向以太坊基金会公共地址查询这些具体的交易信息:
+
+```sql
+SELECT
+ "to",
+ "from",
+ value / 1e18 AS ether,
+ data,
+ gas_limit,
+ gas_price / 1e9 AS gas_price_gwei,
+ gas_used,
+ ROUND(((gas_used / gas_limit) * 100),2) AS gas_used_pct
+FROM ethereum."transactions"
+WHERE "to" = '\xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
+ORDER BY block_time DESC
+```
+
+### 区块 {#blocks}
+
+每笔交易都会改变以太坊虚拟机 ([EVM](/developers/docs/evm/)) 的状态([原文](/developers/docs/transactions/))。 交易广播到网络上进行验证并被记录在一个区块中。 每笔交易都与一个区块编号相关联。 要查看数据,我们可以查询一个具体的区块编码:12396854(截至本文撰写日期 2021 年 11 月 5 日,以太坊基金会交易中最新的区块)。
+
+此外,当我们查询下两个区块时,我们可以看到每个区块包含上一个区块的哈希值(即父哈希值),以此来说明区块链是如何形成的。
+
+每个区块都包含对其父块的引用。 如下面的 `hash` 和 `parent_hash` 列所示([原文](/developers/docs/blocks/)):
+
+![父_哈希值](./parent_hash.png)
+
+下面是 Dune Analytics 上的[查询](https://duneanalytics.com/queries/44856/88292):
+
+```sql
+SELECT
+ time,
+ number,
+ hash,
+ parent_hash,
+ nonce
+FROM ethereum."blocks"
+WHERE "number" = 12396854 OR "number" = 12396855 OR "number" = 12396856
+LIMIT 10
+```
+
+我们可以通过查询时间、区块编号、难度、哈希值、父哈希值及随机数来检查一个区块。
+
+此查询唯一不包含的内容是*交易列表*,需要通过下面的单独查询和*状态根*来查看它。 完整或归档节点将存储所有交易和状态转换,允许客户端随时查询链的状态。 因为这需要非常大的存储空间,我们可以将链数据与状态数据分开:
+
+- 链数据(区块列表、交易)
+- 状态数据(每次交易状态转换的结果)
+
+状态根属于状态数据,是*隐式*数据(未存储在链上),而链数据是显式数据并存储在链上([原文](https://ethereum.stackexchange.com/questions/359/where-is-the-state-data-stored))。
+
+在本教程中,我们将侧重于*可以*在 Dune Analytics 上使用 SQL 查询的链上数据。
+
+如上所述,每个区块都包含一个交易列表,我们可以通过筛选一个特定区块来查询它。 我们将尝试最新的区块 12396854:
+
+```sql
+SELECT * FROM ethereum."transactions"
+WHERE block_number = 12396854
+ORDER BY block_time DESC`
+```
+
+下面是 Dune 上的 SQL 输出:
+
+![](./list_of_txn.png)
+
+添加到链中的这个单独区块改变了以太坊虚拟机 ([EVM](/developers/docs/evm/)) 的状态。 几十笔,有时数百笔交易会同时进行验证。 在本例中,记录了 222 笔交易。
+
+要查看实际有多少笔成功交易,我们将添加另一个筛选器来计算成功的交易:
+
+```sql
+WITH temp_table AS (
+ SELECT * FROM ethereum."transactions"
+ WHERE block_number = 12396854 AND success = true
+ ORDER BY block_time DESC
+)
+SELECT
+ COUNT(success) AS num_successful_txn
+FROM temp_table
+```
+
+对于区块 12396854,在 222 笔交易中,有 204 笔成功验证:
+
+![](./successful_txn.png)
+
+交易请求每秒发生数十次,但区块大约每 15 秒提交一次([原文](/developers/docs/blocks/))。
+
+要了解大约每 15 秒产生一个区块,我们可以用一天的总秒数 (86400) 除以 15,得到估算的每日平均区块数量(大约 5760 个)。
+
+每天产生的以太坊区块数量图表(2016 年至今)如下所示:
+
+![](./daily_blocks.png)
+
+这段时间内每天生产的平均区块数量大约 5,874 个:
+
+![](./avg_daily_blocks.png)
+
+查询如下所示:
+
+```sql
+# query to visualize number of blocks produced daily since 2016
+
+SELECT
+ DATE_TRUNC('day', time) AS dt,
+ COUNT(*) AS block_count
+FROM ethereum."blocks"
+GROUP BY dt
+OFFSET 1
+
+# average number of blocks produced per day
+
+WITH temp_table AS (
+SELECT
+ DATE_TRUNC('day', time) AS dt,
+ COUNT(*) AS block_count
+FROM ethereum."blocks"
+GROUP BY dt
+OFFSET 1
+)
+SELECT
+ AVG(block_count) AS avg_block_count
+FROM temp_table
+```
+
+2016 年以来每天产生的平均区块数量略高于 5,874 个。 或者,将 86400 秒除以平均区块数量 5874 应得到 14.7 秒,或大约每 15 秒一个区块。
+
+### 燃料 {#gas}
+
+区块的大小是有限的。 最大区块大小是动态的,根据网络需求在 12,500,000 到 25,000,000 个单位之间变化。 需要设置大小限制,防止任意大的区块大小给全节点造成磁盘空间和速度要求方面的压力([出处](/developers/docs/blocks/))。
+
+了解区块燃料限额的一种方法是将其视为区块空间(可在其中批量处理交易)的**供应**。 可以查询并显示从 2016 年至今的区块燃料限额:
+
+![](./avg_gas_limit.png)
+
+```sql
+SELECT
+ DATE_TRUNC('day', time) AS dt,
+ AVG(gas_limit) AS avg_block_gas_limit
+FROM ethereum."blocks"
+GROUP BY dt
+OFFSET 1
+```
+
+每天都有实际的燃料使用量,用于支付在以太坊链上完成的计算(例如,发送交易、调用智能合同、铸造非同质化代币)。 这是对以太坊可用区块空间的**需求**:
+
+![](./daily_gas_used.png)
+
+```sql
+SELECT
+ DATE_TRUNC('day', time) AS dt,
+ AVG(gas_used) AS avg_block_gas_used
+FROM ethereum."blocks"
+GROUP BY dt
+OFFSET 1
+```
+
+我们还可以将这两个图表合并在一起,看看**需求和供应**如何契合:
+
+![燃料_需求_供应](./gas_demand_supply.png)
+
+因此,考虑到现有的供应情况,我们可以理解燃料价格是以太坊区块空间需求量的函数。
+
+最后,我们可能想查询以太坊链的日均燃料价格,但种查询会造成特别长的查询时间,所以我们将进行筛选,查询以太坊基金会对每笔交易支付的平均燃料数额。
+
+![](./ef_daily_gas.png)
+
+我们可以看到多年来为以太坊基金会地址上进行的全部交易而支付的燃料价格。 查询如下:
+
+```sql
+SELECT
+ block_time,
+ gas_price / 1e9 AS gas_price_gwei,
+ value / 1e18 AS eth_sent
+FROM ethereum."transactions"
+WHERE "to" = '\xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
+ORDER BY block_time DESC
+```
+
+### 总结 {#summary}
+
+在本教程中,我们经过查询和感受链上数据,了解了以太坊基础概念以及以太坊区块链工作原理。
+
+包含本教程中所用全部代码的仪表板可以在[此处](https://duneanalytics.com/paulapivat/Learn-Ethereum)找到。
+
+若要更多地使用数据来探索 Web3,[请在推特上找到我](https://twitter.com/paulapivat)。
diff --git a/src/content/translations/zh/developers/tutorials/logging-events-smart-contracts/index.md b/src/content/translations/zh/developers/tutorials/logging-events-smart-contracts/index.md
index f2315dc2581..e47c608f3ab 100644
--- a/src/content/translations/zh/developers/tutorials/logging-events-smart-contracts/index.md
+++ b/src/content/translations/zh/developers/tutorials/logging-events-smart-contracts/index.md
@@ -10,22 +10,24 @@ tags:
skill: intermediate
lang: zh
published: 2020-04-03
-source: 以太坊开发团队
+source: EthereumDev
sourceUrl: https://ethereumdev.io/logging-data-with-events/
address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE"
---
-在 solidity 中,[事件](/developers/docs/smart-contracts/anatomy/#events-and-logs)是智能合约可触发的调度信号。 去中心化应用或其他任何连接到以太坊 JSON-PRC API 的程序,都可以监听这些事件,并执行相应操作。 可以建立事件的索引,以便稍后可以搜索到事件历史记录。
+在 solidity 中,[事件](/developers/docs/smart-contracts/anatomy/#events-and-logs)是智能合约可触发的调度信号。 去中心化应用程序或其他任何连接到以太坊 JSON-PRC 应用程序接口的程序,都可以监听这些事件并执行相应操作。 还可以为事件编制索引,便于以后可以搜索事件历史。
-在撰写这篇文章之时,以太坊区块链上最常见的事件是由 ERC20 代币转账时触发的 Transfer 事件。
+## 事件 {#events}
+
+在撰写本文时,以太坊区块链上最常见的事件是当有人转移代币时由 ERC20 代币触发的转账事件。
```solidity
event Transfer(address indexed from, address indexed to, uint256 value);
```
-事件签名在合约代码内声明,并且可以使用 emit 关键字来触发。 例如,transfer 事件记录了谁发起了转账(_from_),转账给谁(_to_),以及转账的代币数转账(_value_)。
+事件签名在合约代码中声明,可以使用 emit 关键字触发。 例如,转账事件记录谁发送了转账 (_from_)、发送给谁 (_to_) 以及转移了多少代币 (_value_)。
-我们再次回到 Counter 智能合约,决定在每次值发生变化时进行记录。 由于这个合约不是为了部署,而是作为基础,通过扩展来构建另一个合约:因此它被称为抽象合约。 在我们 counter 示例中,它将类似于如下:
+如果我们回到我们的 Counter 智能合约并决定在每次价值变化时记录。 由于这个合约不是为了部署,而是作为基础,通过扩展来构建另一个合约:因此它被称为抽象合约。 在我们的计数器示例中,此合约如下所示:
```solidity
pragma solidity 0.5.17;
@@ -59,6 +61,6 @@ contract Counter {
如果我们现在部署合约并调用 increment 函数,如果您在名为 logs 的数组内单击新交易,我们将看到 Remix 会自动显示它。
-![Remix截屏](../../../../../developers/tutorials/logging-events-smart-contracts/remix-screenshot.png)
+![Remix截屏](./remix-screenshot.png)
-日志在调试智能合约时非常有用,另一方面,如果您构建一个不同人使用的应用,并且使分析更容易跟踪和了解您的智能合约的使用情况,那么日志也是非常重要的手段。 交易生成的日志会显示常见的区块浏览器中,并且,举例来说,您也可以使用它们来创建链外脚本,用于侦听特定的事件,并且这些事件发生时采取相应操作。
+日志在调试智能合约时非常有用,另一方面,如果您构建一个不同人使用的应用,并且使分析更容易跟踪和了解您的智能合约的使用情况,那么日志也是非常重要的手段。 交易生成的日志显示在常见区块浏览器中,例如,您还可以使用日志创建链下脚本,以便监听特定事件并在事件发生时采取行动。
diff --git a/src/content/translations/zh/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md b/src/content/translations/zh/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md
index 0f08fa568b4..64b9bb27f35 100644
--- a/src/content/translations/zh/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md
+++ b/src/content/translations/zh/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md
@@ -11,7 +11,7 @@ lang: zh
published: 2021-12-30
---
-## 介绍 {#introduction}
+## 简介 {#introduction}
理想的情况下,我们想要将所有东西存储在以太坊存储器中。这些数据存储于数以千计的计算机中 且有极高的可用性(数据不会被审查)和完整性(不能在未经授权的情况下修改数据), 但存储一个 32 字节的词一般需要花费 20,000 燃料。 在撰写此教程时,该费用 等于 6.60 美元。 每字节 21 美分对许多应用程序来说都过于昂贵。
@@ -69,21 +69,30 @@ const hashArray = dataArray
在此例中,我们的数据开始就是 256 位,因此不需要处理。 如果我们使用更复杂的数据结构,如字符串,我们需要确保先取数据的哈希值并获取哈希数组。 请注意,还有一个原因是我们不关心用户是否知道其他用户的信息。 否则,我们将不得不进行散列计算,使用户 1 不知道用户 0 的值,用户 2 不知道用户 3 的值,等等。
```javascript
-const pairHash = (a, b) =>
- BigInt(ethers.utils.keccak256("0x" + (a ^ b).toString(16).padStart(64, 0)))
+// Convert between the string the hash function expects and the
+// BigInt we use everywhere else.
+const hash = (x) =>
+ BigInt(ethers.utils.keccak256("0x" + x.toString(16).padStart(64, 0)))
```
以太币哈希函数的预期结果是一个带十六进制数字的 JavaScript 字符串,如 `0x60A7`,并用另一个相同结构的字符串响应。 然而,对于代码的其他部分,使用 `BigInt` 类型更为容易,所以我们将转换为一个十六进制字符串,然后再转回 BigInt。
+```javascript
+// Symetrical hash of a pair so we won't care if the order is reversed.
+const pairHash = (a, b) => hash(hash(a) ^ hash(b))
+```
+
此函数是对称的(a [xor](https://en.wikipedia.org/wiki/Exclusive_or) b 的哈希值)。 这意味着在检查默克尔证明时,我们不必烦恼是将证明中的值放在计算值之前还是之后。 默克尔证明在链上进行检查,所以链上的步骤越少越好。
+警告: 密码学没有表面看起来那么容易。 本文的初始版本提供了哈希函数 `hash(a^b)`。 那是一个**糟糕的**想法,因为这意味着如果知道 `a` 和 `b` 的合法值,则可以使用 `b' = a^b^a'` 证明任何所需的 `a'` 值。 使用此函数,就必须计算 `b'`,令 `hash(a') ^ hash(b')` 等于一个已知值(通往根的下一个分支),这要困难得多。
+
```javascript
// The value to denote that a certain branch is empty, doesn't
// have a value
const empty = 0n
```
-如果证明值的数量不是 2 的整数次方,我们需要处理空白分支。 该程序的处理方式是将 0 作为占位符。
+如果值的数量不是 2 的整数次方,我们需要处理空分支。 该程序的处理方式是将 0 作为占位符。
![缺少分支的默克尔树](merkle-empty-hash.png)
@@ -92,10 +101,8 @@ const empty = 0n
// each pair in sequence
const oneLevelUp = (inputArray) => {
var result = []
- var inp = [...inputArray] // To avoid over writing the input
+ var inp = [...inputArray] // To avoid over writing the input // Add an empty value if necessary (we need all the leaves to be // paired)
- // Add an empty value if necessary (we need all the leaves to be
- // paired)
if (inp.length % 2 === 1) inp.push(empty)
for (var i = 0; i < inp.length; i += 2)
@@ -105,32 +112,25 @@ const oneLevelUp = (inputArray) => {
} // oneLevelUp
```
-这个函数在默克尔树中通过对当前层级的数值进行散列计算来上升一个层级。 请注意,这不是最有效的代码。我们本来可以避免重复输入并在循环中适当地加上 `hashEmpty`,但此代码是针对可读性的优化。
+此函数通过对默克尔树中当前层级的值对进行哈希处理来上升一个层级。 请注意,这不是最高效的实现。我们本来可以避免重复输入,并且只需在循环中适当地加上 `hashEmpty`,但此代码为了提高可读性进行过优化。
```javascript
const getMerkleRoot = (inputArray) => {
var result
- result = [...inputArray]
+ result = [...inputArray] // Climb up the tree until there is only one value, that is the // root. // // If a layer has an odd number of entries the // code in oneLevelUp adds an empty value, so if we have, for example, // 10 leaves we'll have 5 branches in the second layer, 3 // branches in the third, 2 in the fourth and the root is the fifth
- // Climb up the tree until there is only one value, that is the
- // root.
- //
- // If a layer has an odd number of entries the
- // code in oneLevelUp adds an empty value, so if we have, for example,
- // 10 leaves we'll have 5 branches in the second layer, 3
- // branches in the third, 2 in the fourth and the root is the fifth
while (result.length > 1) result = oneLevelUp(result)
return result[0]
}
```
-要获得根,向上升到只有一个剩余值。
+要到达根,一直上升到只剩下一个值的层级。
#### 创建一个默克尔证明 {#creating-a-merkle-proof}
-默克尔证明是将证明可返回默克尔根的值一起进行散列计算。 要证明的数值往往来自其他数据,因此这里更愿意单独提供,而不是作为代码的一部分。
+默克尔证明是与要证明的值一起哈希处理以便返回默克尔根的值。 要证明的值往往来自其他数据,因此这里更愿意单独提供,而不是作为代码的一部分。
```javascript
// A merkle proof consists of the value of the list of entries to
@@ -153,10 +153,10 @@ const getMerkleProof = (inputArray, n) => {
```
-我们对 `(v[0],v[1])`、`(v[2],v[3])` 等进行散列计算。 因此,对于偶数值,我们需要下一个值,而奇数值则需要上一个值。
+我们对 `(v[0],v[1])`、`(v[2],v[3])` 等进行哈希处理。 因此,对于偶数值,我们需要下一个值,而奇数值则需要上一个值。
```javascript
- // Move to the next layer up
+ // Move to the next layer up
currentN = Math.floor(currentN/2)
currentLayer = oneLevelUp(currentLayer)
} // while currentLayer.length > 1
@@ -165,9 +165,9 @@ const getMerkleProof = (inputArray, n) => {
} // getMerkleProof
```
-### 链上代码 {#off-chain-code}
+### 链上代码 {#on-chain-code}
-最后,我们有核查证明的代码。 链上代码用 [Solidity](https://docs.soliditylang.org/en/v0.8.11/) 编写而成。 优化在这里更为重要,因为燃料相对昂贵。
+最后,我们有核查证明的代码。 链上代码用 [Solidity](https://docs.soliditylang.org/en/v0.8.11/) 语言编写。 优化在这里更为重要,因为燃料费相对昂贵。
```solidity
//SPDX-License-Identifier: Public Domain
@@ -195,20 +195,24 @@ contract MerkleProof {
} // setRoot
```
-为默克尔根设置和获取函数。 在生产系统中,让每个人都更新默克尔根是一个*非常糟糕的主意*。 这里这样做是为了简化示例代码。 **不要在一个数据完整性非常重要的系统上执行**。
+为默克尔根设置和获取函数。 在生产系统中,让每个人都更新默克尔根是一个*非常糟糕的主意*。 这里这样做是为了简化示例代码。 **不要在数据完整性非常重要的系统上执行**。
```solidity
+ function hash(uint _a) internal pure returns(uint) {
+ return uint(keccak256(abi.encode(_a)));
+ }
+
function pairHash(uint _a, uint _b) internal pure returns(uint) {
- return uint(keccak256(abi.encode(_a ^ _b)));
+ return hash(hash(_a) ^ hash(_b));
}
```
-此函数会生成一个配对哈希值。 它只是 Solidity 中 `pairHash` 函数的 JavaScript 代码。
+此函数生成一个配对哈希值。 它只是将 `hash` 和 `pairHash` 函数的 JavaScript 代码变成 Solidity。
-**注意:**这是另一个优化可读性的情况。 基于[函数定义](https://www.tutorialspoint.com/solidity/solidity_cryptographic_functions.htm),也许可以将数据存储为 [`bytes32`](https://docs.soliditylang.org/en/v0.5.3/types.html#fixed-size-byte-arrays) 类型值并避免转换。
+**注意:**这是又一次对可读性的优化。 根据[函数定义](https://www.tutorialspoint.com/solidity/solidity_cryptographic_functions.htm),也许可以将数据存储为 [`bytes32`](https://docs.soliditylang.org/en/v0.5.3/types.html#fixed-size-byte-arrays) 类型值并避免转换。
```solidity
- // Verify a Merkle proof
+ // Verify a Merkle proof
function verifyProof(uint _value, uint[] calldata _proof)
public view returns (bool) {
uint temp = _value;
@@ -224,16 +228,16 @@ contract MerkleProof {
} // MarkleProof
```
-在数学符号中,默克尔验证看起来像这样:`H(proof_n, H(proof_n-1, H(proof_n-2, proof_n-2, ... H(proof_1, H(proof_0, value))...)))`。 此代码实现了默克尔证明。
+用数学符号表示,默克尔证明的验证看起来像这样:`H(proof_n, H(proof_n-1, H(proof_n-2, ... H(proof_1, H(proof_0, value))...)))`。 此代码实现了默克尔证明。
## 默克尔证明和卷叠很难混淆 {#merkle-proofs-and-rollups}
-默克尔证明与[卷叠](/developers/docs/scaling/#rollups)的配合差强人意。 原因在于,卷叠会将所有交易数据写于 L1 上,但在 L2 进行处理。 发送交易默克尔证明的成本平均达 638 个燃料/层(目前,调用数据中一字节花费 16 个燃料(若不为零),如果为零,则需花费 4 个燃料)。 如果我们的数据包含 1024 个字,默克尔证明需要 10 层,或者总共 6380 个燃料。
+默克尔证明对[卷叠](/developers/docs/scaling/#rollups)的作用不大。 原因在于,卷叠将所有交易数据写入一层网络,但在二层网络进行处理。 发送交易的默克尔证明的成本平均达到每个层级 638 个燃料(目前,如果字节不为零,调用数据中一个字节花费 16 个燃料,如果为零,则花费 4 个燃料)。 如果我们的数据包含 1024 个字,默克尔证明需要 10 个层级,或者总共 6380 个燃料。
-例如在 [Optimism](https://public-grafana.optimism.io/d/9hkhMxn7z/public-dashboard?orgId=1&refresh=5m) 中,写入 L1 的燃料成本约为 100 gwei,写入 L2 的成本为 0.001 gwei(这里按正常价格计,可能因为网络拥挤而提高)。 所以对于 L1 上 1 个燃料的成本,我们可能需要在 L2 上花费 10 万个燃料的处理费用。 假定我们不用重写存储器,这意味着我们可以用一个 L1 燃料的价格将五个字写入 L2 上的存储器中。 对于单个默克尔证明,我们可以将全部 1024 个字写入存储器(假定可以在链上计算出来,而非在交易中提供),并且还剩下大部分燃料。
+举一个[乐观卷叠](https://public-grafana.optimism.io/d/9hkhMxn7z/public-dashboard?orgId=1&refresh=5m)的示例,写入一层网络的燃料成本约为 100 gwei,写入二层网络的成本为 0.001 gwei(这里按正常价格计,成本可能因为网络拥塞而增加)。 所以对于一层网络上 1 个燃料的成本,我们可能需要在二层网络上花费 10 万个燃料的处理费用。 假定我们不用重写存储,这意味着我们可以用一个一层网络燃料的价格将大约五个字写入二层网络的存储中。 对于单个默克尔证明,我们可以将全部 1024 个字写入存储(假定它们可以在链上计算出来,而不是在交易中提供),并且还剩下大部分燃料。
## 总结 {#conclusion}
-在实际工作中,您可能永远不能独立实现默克尔树。 有很多广为人知并经过审核的软件库可供使用,一般来说,最好不要自己独立实现密码原语。 但我希望你们现在能够更好地理解默克尔证明,并能够决定何时值得使用。
+在现实中,你可能永远不会独立实现默克尔树。 有很多广为人知并经过审核的程序库可供使用,一般来说,最好不要自己独立实现加密基元。 但我希望你们现在能够更好地理解默克尔证明,并能够决定何时值得使用。
-请注意,虽然默克尔证明能维持*完整性*,但并不维持*可用性*。 虽然任何人都不能拿走您的资产可以让您安心,但如果数据存储方决定禁止您访问数据资产,您也不能构建一个默克尔树来访问它们。 所以默克尔树最好和某种去中心化存储器一起使用,例如星际文件系统。
+请注意,虽然默克尔证明能维持*完整性*,但并不维持*可用性*。 如果数据存储方决定禁止访问,而且你不能构建默克尔树来访问你的资产,那么知道没有人可以拿走你的资产也只能作为一种小小的慰藉而已。 所以默克尔树最好和某种去中心化存储一起使用,例如星际文件系统。
diff --git a/src/content/translations/zh/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/index.md b/src/content/translations/zh/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/index.md
new file mode 100644
index 00000000000..3530d7353b8
--- /dev/null
+++ b/src/content/translations/zh/developers/tutorials/monitoring-geth-with-influxdb-and-grafana/index.md
@@ -0,0 +1,148 @@
+---
+title: 使用 InfluxDB 和 Grafana 监测 Geth
+description:
+author: "Mario Havel"
+tags:
+ - "客户端"
+ - "geth"
+ - "节点"
+skill: intermediate
+lang: zh
+published: 2021-01-13
+---
+
+本教程将帮助您设置 Geth 节点的监测方法,以便更好地了解其性能并发现潜在问题。
+
+## 前提条件 {#prerequisites}
+
+- 您应该已经运行一个 Geth 实例。
+- 大部分步骤和示例都针对 linux 环境,基础的终端知识会有所帮助。
+- 请观看这段关于 Geth 指标集的概览视频:[监测以太坊基础设施(作者 Péter Szilágyi)](https://www.youtube.com/watch?v=cOBab8IJMYI)
+
+## 监测堆栈 {#monitoring-stack}
+
+以太坊客户端收集大量数据,可以通过时序数据库读取这些数据。 为了便于监测,您可以将数据输入数据可视化软件。 下面提供了多种选项供您选择:
+
+- [Prometheus](https://prometheus.io/)(拉取模式)
+- [InfluxDB](https://www.influxdata.com/get-influxdb/)(推送模式)
+- [Telegraf](https://www.influxdata.com/get-influxdb/)
+- [Grafana](https://www.grafana.com/)
+- [Datadog](https://www.datadoghq.com/)
+- [Chronograf](https://www.influxdata.com/time-series-platform/chronograf/)
+
+还可以选择 [Geth Prometheus Exporter](https://github.com/hunterlong/gethexporter),它是一个用 InfluxDB 和 Grafana 预先配置的选项。 您可以使用 docker 和适用于树莓派 4 的 [Ethbian 操作系统](https://ethbian.org/index.html) 轻松设置它。
+
+在本教程中,我们将设置您的 Geth 客户端,将数据推送到 InfluxDB 以创建数据库,并设置 Grafana 来对数据进行图形可视化。 手动操作将帮助您更好地理解这一过程,您可以加以改动,并在不同的环境中部署。
+
+## 设置 InfluxDB {#setting-up-influxdb}
+
+首先,下载并安装 InfluxDB。 [Influxdata 下载页面](https://portal.influxdata.com/downloads/)提供了多种下载选项。 选择适合您安装环境的下载选项。 您还可以通过[资源库](https://repos.influxdata.com/)安装它。 例如,在基于 Debian 的发行版中:
+
+```
+curl -tlsv1.3 --proto =https -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add
+source /etc/lsb-release
+echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
+sudo apt update
+sudo apt install influxdb -y
+sudo systemctl enable influxdb
+sudo systemctl start influxdb
+sudo apt install influxdb-client
+```
+
+在成功安装 InfluxDB 后,确保它在后台运行。 默认情况下,可以通过 `localhost:8086` 访问它。 在使用 `influx` 客户端前,您必须创建具有管理员权限的新用户。 该用户将进行高级管理,创建数据库和用户。
+
+```
+curl -XPOST "http://localhost:8086/query" --data-urlencode "q=CREATE USER username WITH PASSWORD 'password' WITH ALL PRIVILEGES"
+```
+
+现在,您可以用此用户的身份通过 influx 客户端进入 [InfluxDB 命令行](https://docs.influxdata.com/influxdb/v1.8/tools/shell/)。
+
+```
+influx -username 'username' -password 'password'
+```
+
+您可以通过其命令行直接与 InfluxDB 通信,为 geth 指标创建数据库和用户。
+
+```
+create database geth
+create user geth with password choosepassword
+```
+
+如下验证已创建的条目:
+
+```
+show databases
+show users
+```
+
+退出 InfluxDB 命令行。
+
+```
+exit
+```
+
+InfluxDB 正在运作,将其配置为存储来自 Geth 的指标。
+
+## 准备 Geth {#preparing-geth}
+
+设置好数据库后,我们需要在 Geth 中启用指标收集。 留意 `geth - help` 中的 `METRICS AND STATS OPTIONS`。 此处可以找到多个选项,在此例中,我们希望 Geth 将数据推送到 InfluxDB。 基本设置指定了端点,可以通过它访问 InfluxDB 并进行数据库身份验证。
+
+```
+geth --metrics --metrics.influxdb --metrics.influxdb.endpoint "http://0.0.0.0:8086" --metrics.influxdb.username "geth" --metrics.influxdb.password "chosenpassword"
+```
+
+此标记可以附加到启动客户端的命令或保存到配置文件中。
+
+您可以通过在数据库中列出指标来验证 Geth 是否成功推送了数据。 在 InfluxDB 命令行中:
+
+```
+use geth
+show measurements
+```
+
+## 设置 Grafana {#setting-up-grafana}
+
+下一步是安装 Grafana,后者通过图形解释数据。 按照 Grafana 文档中针对您安装环境的安装过程操作。 如果不想安装其他版本,确保安装 OSS 版本。 下面是通过资源库安装 发行版本的示例安装步骤:
+
+```
+curl -tlsv1.3 --proto =https -sL https://packages.grafana.com/gpg.key | sudo apt-key add -
+echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
+sudo apt update
+sudo apt install grafana
+sudo systemctl enable grafana-server
+sudo systemctl start grafana-server
+```
+
+在 Grafana 开始运行后,应该能够在 `localhost:3000` 访问它。 使用您喜欢的浏览器访问此路径,然后用默认凭据登录(用户:`admin` 和密码:`admin`)。 当提示时,更改默认密码并保存。
+
+![](./grafana1.png)
+
+您将被重定向到 Grafana 主页。 首先,设置您的源数据。 点击左边栏中的配置图标并选择“Data sources”。
+
+![](./grafana2.png)
+
+现在尚未创建任何数据源,点击“Add data source”定义一个数据源。
+
+![](./grafana3.png)
+
+在本次设置中,请选择“InfluxDB”并继续操作。
+
+![](./grafana4.png)
+
+如果您在同台一机器上运行工具,数据源配置就相当简单。 您需要设置 InfluxDB 地址和详细信息,以便访问数据库。 请参考下图。
+
+![](./grafana5.png)
+
+如果所有操作都已完成并且 InfluxDB 可以访问,请点击“Save and test”,等待确认信息弹出。
+
+![](./grafana6.png)
+
+现在 Grafana 设置为读取 InfluxDB 中的数据。 此时,您需要创建一个解释和显示数据的仪表板。 仪表板属性是在 JSON 文件中编码的,可让任何人创建并轻松导入。 在左侧栏上,点击“Create and Import”。
+
+![](./grafana7.png)
+
+要创建 Geth 监测仪表板,复制[此仪表板](https://grafana.com/grafana/dashboards/13877/)的 ID 并粘贴到 Grafana 的“导入页面”中。 保存仪表板后,其外观应该如下所示:
+
+![](./grafana8.png)
+
+您可以修改您的仪表板。 每个面板都可以编辑、移动、删除或添加。 您可以更改您的配置。 一切由您决定! 要了解有关仪表板工作原理的更多信息,请参阅 [Grafana 文档](https://grafana.com/docs/grafana/latest/dashboards/)。 您也可能对[警报](https://grafana.com/docs/grafana/latest/alerting/)感兴趣。 这可以让您设置在指标达到特定值时的提醒通知。 支持各种交流渠道。
diff --git a/src/content/translations/zh/developers/tutorials/nft-minter/index.md b/src/content/translations/zh/developers/tutorials/nft-minter/index.md
new file mode 100644
index 00000000000..419e1a3ebb1
--- /dev/null
+++ b/src/content/translations/zh/developers/tutorials/nft-minter/index.md
@@ -0,0 +1,877 @@
+---
+title: 非同质化代币铸币机教程
+description: 在本教程中,你将构建一个非同质化代币铸币机,并学习如何通过使用 MetaMask 和 Web3 工具将智能合约连接到 React 前端来创建全栈去中心化应用程序。
+author: "smudgil"
+tags:
+ - "solidity"
+ - "非同质化代币"
+ - "铸币机"
+ - "Alchemy"
+ - "智能合约"
+ - "前端"
+ - "用户界面"
+ - "钱包"
+ - "Pinata"
+skill: intermediate
+lang: zh
+published: 2021-10-06
+---
+
+对于具有 Web2 背景的开发者来说,最大的挑战之一是弄清楚如何将智能合约连接到前端项目并与之交互。
+
+通过构建非同质化代币铸币机 — 一个可以用来输入数字资产链接、名称与描述的简单用户界面 — 您将学会如何:
+
+- 通过您的前端项目连接到 MetaMask
+- 在前端调用智能合约的方法
+- 使用 MetaMask 签署交易
+
+在本教程中,我们将使用 [React](https://reactjs.org/) 作为前端框架。 由于本教程主要侧重于 Web3 开发,我们不会花太多时间来细讲 React 基础知识。 相反,我们将专注于为项目添加功能。
+
+作为先决条件,您应该对 React 有入门水平的认识 — 了解组件、属性、useState/useEffect 和基本函数调用是如何工作的。 如果您以前从未听过这些术语,您可能想参阅这个 [React 入门教程](https://reactjs.org/tutorial/tutorial.html)。 对于视觉型学习者,我们强烈推荐 Net Ninja 推出的[现代 React 开发完整教程](https://www.youtube.com/playlist?list=PL4cUxeGkcC9gZD-Tvwfod2gaISzfRiP9d)精彩视频系列。
+
+如果您还没有 Alchemy 帐户,您肯定需要一个来完成本教程以及在区块链上完成任何构建。 点击[此处](https://alchemy.com/)注册一个免费帐户。
+
+事不宜迟,让我们开始吧!
+
+## 制作非同质化代币 101 {#making-nfts-101}
+
+在我们开始考虑任何代码之前,了解非同质化代币的工作原理非常重要。 它包括两个步骤:
+
+### 在以太坊区块链上发布非同质化代币智能合约 {#publish-nft}
+
+两种非同质化代币智能合约标准的最大区别在于,ERC-1155 是多代币标准且包含批量功能,而 ERC-721 是单代币标准,因此仅支持一次转账一个代币。
+
+### 调用铸币函数 {#minting-function}
+
+通常,此铸币函数需要您传入两个变量作为参数,第一个是 `recipient`,它指定将要接收您的新铸造非同质化代币的地址,第二个是非同质化代币的 `tokenURI`,它是一个字符串,解析为描述非同质化代币元数据的 JSON 文档。
+
+非同质化代币的元数据是其核心所在,使它拥有多种属性,例如名称、描述、图像(或不同的数字资产)及其他特性。 这是 [tokenURI 示例](https://gateway.pinata.cloud/ipfs/QmSvBcb4tjdFpajGJhbFAWeK3JAxCdNQLQtr6ZdiSi42V2),其中包含非同质化代币的元数据。
+
+在本教程中,我们将重点关注第 2 部分,使用我们的 React UI 调用现有的非同质化代币智能合约铸币函数。
+
+在本教程中,我们将要调用的 ERC-721 非同质化代币智能合约的[链接在此处](https://ropsten.etherscan.io/address/0x4C4a07F737Bf57F6632B6CAB089B78f62385aCaE)。 如果您想了解我们如何创建该合约,强烈建议您参阅我们另一个教程[“如何创建非同质化代币”](https://docs.alchemyapi.io/alchemy/tutorials/how-to-create-an-nft)。
+
+太好了,现在我们已经了解了非同质化代币的工作原理,我们来克隆我们的启动文件!
+
+## 克隆启动文件 {#clone-the-starter-files}
+
+首先,浏览到 [nft-minter-tutorial GitHub 资源库](https://github.com/alchemyplatform/nft-minter-tutorial),获取此项目的启动文件。 将此资源库克隆到您的本地环境中。
+
+打开这个克隆的 `nft-minter-tutorial` 资源库后,您会注意到它包含两个文件夹:`minter-starter-files` 和 `nft-minter`。
+
+- `minter-starter-files` 包含此项目的启动文件(基本上是 React UI)。 在本教程中,**我们将在此目录中操作**,您将学习如何通过将其连接到您的以太坊钱包和非同质化代币智能合约来实现此用户界面。
+- `nft-minter` 包含已完成的完整教程,**如果您遇到困难**,可以作为**参考**。
+
+接下来,在代码编辑器中打开 `minter-starter-files` 副本,然后浏览到 `src` 文件夹。
+
+我们编写的所有代码都将保存在 `src` 文件夹下。 我们将编辑 `Minter.js` 组件并编写额外的 javascript 文件来为我们的项目提供 Web3 功能。
+
+## 第 2 步:查看我们的启动文件 {#step-2-check-out-our-starter-files}
+
+在我们开始编码之前,必须检查起始文件中已经为我们提供了什么。
+
+### 让您的 react 项目运行起来 {#get-your-react-project-running}
+
+首先在浏览器中运行 React 项目。 React 的美妙之处在于,一旦我们的项目在浏览器中运行,保存的任何更改都会在浏览器中实时更新。
+
+要让项目运行,浏览到 `minter-starter-files` 文件夹的根目录,然后在终端运行 `npm install` 以安装项目的依赖项:
+
+```bash
+cd minter-starter-files
+npm install
+```
+
+依赖项安装完成后,在终端运行 `npm start`:
+
+```bash
+npm start
+```
+
+运行后,http://localhost:3000/ 应该在浏览器中打开,您可以在其中看到项目前端。 其中应该包括 3 个字段:一个用于输入非同质化代币资产的链接、一个用于输入非同质化代币的名称,一个提供描述。
+
+如果您尝试点击“Connect Wallet”或“Mint NFT”按钮,您会发现它们不起作用 — 那是因为我们仍然需要对它们的功能进行编程! :\)
+
+### Minter.js 组件 {#minter-js}
+
+**注:**确保您位于 `minter-starter-files` 文件夹而不是 `nft-minter` 文件夹!
+
+我们在编辑器中返回 `src` 文件夹并打开 `Minter.js` 文件。 理解该文件中的所有内容非常重要,因为它是我们将要处理的主要 React 组件。
+
+在该文件的顶部,有我们将在特定事件后更新的状态变量。
+
+```javascript
+//State variables
+const [walletAddress, setWallet] = useState("")
+const [status, setStatus] = useState("")
+const [name, setName] = useState("")
+const [description, setDescription] = useState("")
+const [url, setURL] = useState("")
+```
+
+从未听过 React 状态变量或状态挂钩? 参阅[这些](https://reactjs.org/docs/hooks-state.html)文档。
+
+以下是每个变量的含义:
+
+- `walletAddress` — 存储用户钱包地址的字符串
+- `status` — 包含要在用户界面底部显示的消息的字符串
+- `name` — 存储非同质化代币名称的字符串
+- `description` — 存储非同质化代币描述的字符串
+- `url` — 字符串,表示指向非同质化代币数字资产的链接
+
+在状态变量之后,您会看到三个未实现的函数:`useEffect`、`connectWalletPressed` 和 `onMintPressed`。 您会注意到所有这些函数都是 `async` 函数,这是因为我们将在其中进行异步 API 调用! 它们的名称与功能同名:
+
+```javascript
+useEffect(async () => {
+ //TODO: implement
+}, [])
+
+const connectWalletPressed = async () => {
+ //TODO: implement
+}
+
+const onMintPressed = async () => {
+ //TODO: implement
+}
+```
+
+- [`useEffect`](https://reactjs.org/docs/hooks-effect.html) — 这是一个 React 挂钩,在渲染组件后调用。 因为向它传入了一个空的数组 `[]` 属性(见第 3 行),只会在组件的*第一次*渲染时调用它。 在这里,我们将调用钱包监听器和另一个钱包函数,来更新我们的用户界面以指示钱包是否已经连接。
+- `connectWalletPressed` - 将调用此函数,将用户的 MetaMask 钱包连接到我们的去中心化应用程序。
+- `onMintPressed` — 将调用此函数来铸造用户的非同质化代币。
+
+在接近该文件末尾处,我们获得我们组件的用户界面。 如果您仔细查看此代码,您会注意到,当相应文本字段的输入发生变化时,我们更新了 `url`、`name` 和 `description` 状态变量。
+
+您还将看到,在分别单击 ID 为 `mintButton` 和 `walletButton` 的按钮时,会调用 `connectWalletPressed` 和 `onMintPressed`。
+
+```javascript
+//the UI of our component
+return (
+
+
+
+
+ 🧙♂️ Alchemy NFT Minter
+
+ Simply add your asset's link, name, and description, then press "Mint."
+
+
+
+ {status}
+
+)
+```
+
+最后,我们来看看这个铸币机组件是在哪里添加的。
+
+如果您打开 `App.js` 文件,将会看到我们的铸币机组件是在第 7 行添加的。此文件是 React 中的主要组件,作为所有其他组件的容器。
+
+**在本教程中,我们将只编辑 `Minter.js file` 并在我们的 `src` 文件夹中添加文件。**
+
+我们已经了解了我们正在进行的操作,现在我们来设置我们的以太坊钱包!
+
+## : 设置您的以太坊钱包 {#set-up-your-ethereum-wallet}
+
+为了让用户能够与你的智能合约交互,他们需要将其以太坊钱包连接到你的去中心化应用程序。
+
+### 下载 MetaMask {#download-metamask}
+
+在本教程中,我们将使用 MetaMask,它是浏览器中的虚拟钱包,用来管理您的以太坊账户地址。 如果您想了解更多关于以太坊交易如何运作的信息,请参阅[此页面](/developers/docs/transactions/)。
+
+您可以点击[此处](https://metamask.io/download.html)免费下载并创建一个 MetaMask 账户。 在创建账户时,或者如果您已经有一个账户,确保切换到右上角的“Ropsten 测试网络”\(这样我们就不会交易真正的钱币\)。
+
+### 通过水龙头中添加以太币 {#add-ether-from-faucet}
+
+为了铸造我们的非同质化代币(或在以太坊区块链上签署任何交易),我们需要一些虚拟以太币。 要获取以太币,您可以转到 [Ropsten 水龙头](https://faucet.ropsten.be/)并输入您的 Ropsten 帐户地址,然后点击“Send Ropsten Eth”。 您应该会很快在您的 MetaMask 帐户中看到以太币!
+
+### 检查您的余额 {#check-your-balance}
+
+为了核查我们账户中有余额,我们使用 [Alchemy composer 工具](https://composer.alchemyapi.io/?composer_state=%7B%22network%22%3A0%2C%22methodName%22%3A%22eth_getBalance%22%2C%22paramValues%22%3A%5B%22%22%2C%22latest%22%5D%7D)发出 [eth_getBalance](https://docs.alchemyapi.io/alchemy/documentation/alchemy-api-reference/json-rpc#eth_getbalance) 请求。 这将返回我们钱包中的以太币数量。 输入您的 MetaMask 帐户地址并点击“Send Request”后,您应该会看到这样的响应:
+
+```text
+{"jsonrpc": "2.0", "id": 0, "result": "0xde0b6b3a7640000"}
+```
+
+**注意:**结果以 wei 为单位,而非 ETH。 Wei 是以太币的最小计量单位。 从 wei 到 eth 的转换是:1 eth = 10¹⁸ wei。 因此,如果我们将 0xde0b6b3a7640000 转换为十进制,我们会得到 1\*10¹⁸,它等于 1 eth。
+
+哦! 我们的虚拟以太币都在那里了!
+
+## 将 MetaMask 连接到您的用户界面 {#connect-metamask-to-your-UI}
+
+既然我们的 MetaMask 钱包已经设置好了,我们将我们的去中心化应用程序与之连接!
+
+因为我们建议采用 [MVC](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller) 规范,所以我们要创建一个单独的文件,其中包含用来管理我们的去中心化应用程序的逻辑、数据和规则的函数,然后将这些函数传递给我们的前端(Minter.js 组件)。
+
+### `connectWallet` 函数 {#connect-wallet-function}
+
+为此,我们在 `src` 目录中创建一个名为 `utils` 的新文件夹,并在其中添加一个名为 `interact.js` 的文件,其中将包含我们所有的钱包和智能合约交互函数。
+
+在我们的 `interact.js` 文件中,我们将编写一个 `connectWallet` 函数,然后我们将在 `Minter.js` 组件中导入并调用该函数。
+
+在您的 `interact.js` 文件中,添加以下内容
+
+```javascript
+export const connectWallet = async () => {
+ if (window.ethereum) {
+ try {
+ const addressArray = await window.ethereum.request({
+ method: "eth_requestAccounts",
+ })
+ const obj = {
+ status: "👆🏽 Write a message in the text-field above.",
+ address: addressArray[0],
+ }
+ return obj
+ } catch (err) {
+ return {
+ address: "",
+ status: "😥 " + err.message,
+ }
+ }
+ } else {
+ return {
+ address: "",
+ status: (
+
+
+ {" "}
+ 🦊
+ You must install MetaMask, a virtual Ethereum wallet, in your
+ browser.
+
+
+
+ ),
+ }
+ }
+}
+```
+
+我们详细讲解一下这段代码的作用:
+
+首先,我们的函数会检查您的浏览器是否启用了 `window.ethereum`。
+
+`window.ethereum` 是一个由 MetaMask 和其他钱包提供商注入的全局应用程序接口,它允许网站请求用户的以太坊账户。 如果获得批准,它可以从用户连接的区块链中读取数据,并建议用户签署消息和交易。 参阅 [MetaMask 文档](https://docs.metamask.io/guide/ethereum-provider.html#table-of-contents)了解更多信息!
+
+如果 `window.ethereum` _ 不存在_,则表示未安装 MetaMask。 这会导致返回一个 JSON 对象,其中返回的 `address` 是一个空字符串,而 `status` JSX 对象指示用户必须安装 MetaMask。
+
+**我们编写的大多数函数都将返回 JSON 对象,我们可以使用这些对象更新我们的状态变量和用户界面。**
+
+现在如果 `window.ethereum` _存在_,那么事情就会变得有趣。
+
+使用 try/catch 循环,我们将尝试通过调用 `[window.ethereum.request({ method: "eth_requestAccounts" });](https://docs.metamask.io/guide/rpc-api.html#eth-requestaccounts)` 连接到 MetaMask。 调用此函数将在浏览器中打开 MetaMask,提示用户将他们的钱包连接到你的去中心化应用程序。
+
+- 如果用户选择连接,`method: "eth_requestAccounts"` 将返回一个数组,其中包含连接到去中心化应用程序的用户的所有帐户地址。 总之,我们的 `connectWallet` 函数将返回一个 JSON 对象,其中包含此数组中的*第一个 * `address` \(见第 9 行\),并返回一条 `status` 信息,提示用户向智能合约写入信息。
+- 如果用户拒绝连接,则 JSON 对象将包含返回的 `address` 的空字符串和反映用户拒绝连接的 `status` 信息。
+
+### 将 connectWallet 函数添加到您的 Minter.js 用户界面组件 {#add-connect-wallet}
+
+我们已经编写了 `connectWallet` 函数,现在我们将它连接到我们的 `Minter.js.` 组件。
+
+首先,我们必须通过将 `import { connectWallet } from "./utils/interact.js";` 添加到 `Minter.js` 文件顶部,将我们的函数导入 `Minter.js` 文件。 `Minter.js` 的前 11 行现在应该如下所示:
+
+```javascript
+import { useEffect, useState } from "react";
+import { connectWallet } from "./utils/interact.js";
+
+const Minter = (props) => {
+
+ //State variables
+ const [walletAddress, setWallet] = useState("");
+ const [status, setStatus] = useState("");
+ const [name, setName] = useState("");
+ const [description, setDescription] = useState("");
+ const [url, setURL] = useState("");
+```
+
+然后,在我们的 `connectWalletPressed` 函数中,我们将调用导入的 `connectWallet` 函数,如下所示:
+
+```javascript
+const connectWalletPressed = async () => {
+ const walletResponse = await connectWallet()
+ setStatus(walletResponse.status)
+ setWallet(walletResponse.address)
+}
+```
+
+请注意我们的大部分功能是如何从 `interact.js` 文件中的 `Minter.js` 组件中抽取出来的? 这就是我们遵守 M-V-C 规范的原因!
+
+在 `connectWalletPressed` 中,我们只需对导入的 `connectWallet` 函数进行 await 调用,并使用其响应,通过变量的状态挂钩更新我们的 `status` 和 `walletAddress ` 变量。
+
+现在,我们保存 `Minter.js` 和 `interact.js` 这两个文件并测试我们目前为止获得的用户界面。
+
+在 localhost:3000 地址打开浏览器,然后按页面右上角的“连接钱包”按钮。
+
+如果你安装了 MetaMask,系统会提示你将钱包连接到去中心化应用程序。 接受邀请并连接。
+
+您应该会看到钱包按钮现在显示您的地址已连接。
+
+接下来,尝试刷新页面......有点儿奇怪。 我们的钱包按钮提示我们连接 MetaMask,尽管它已经连接......
+
+不过不用担心! 我们可以通过实现一个名为 `getCurrentWalletConnected` 的函数轻松解决这个问题,该函数将检查地址是否已连接到我们的去中心化应用程序并相应地更新我们的用户界面!
+
+### getCurrentWalletConnected 函数 {#get-current-wallet}
+
+在您的 `interact.js` 文件中,添加以下 `getCurrentWalletConnected` 函数:
+
+```javascript
+export const getCurrentWalletConnected = async () => {
+ if (window.ethereum) {
+ try {
+ const addressArray = await window.ethereum.request({
+ method: "eth_accounts",
+ })
+ if (addressArray.length > 0) {
+ return {
+ address: addressArray[0],
+ status: "👆🏽 Write a message in the text-field above.",
+ }
+ } else {
+ return {
+ address: "",
+ status: "🦊 Connect to MetaMask using the top right button.",
+ }
+ }
+ } catch (err) {
+ return {
+ address: "",
+ status: "😥 " + err.message,
+ }
+ }
+ } else {
+ return {
+ address: "",
+ status: (
+
+
+ {" "}
+ 🦊
+ You must install MetaMask, a virtual Ethereum wallet, in your
+ browser.
+
+
+
+ ),
+ }
+ }
+}
+```
+
+这段代码*非常*类似于我们之前写的 `connectWallet` 函数。
+
+主要区别在于,这里我们调用了 `eth_accounts` 方法,它只是返回一个数组,其中包含当前连接到我们的去中心化应用程序的 MetaMask 地址,而不是调用 `eth_requestAccounts` 方法来打开 MetaMask 以供用户连接他们的钱包。
+
+要查看这个函数的实际作用,我们在 `Minter.js` 组件的 `useEffect` 函数中调用它。
+
+就像我们对 `connectWallet` 的操作一样,我们必须将此函数从 `interact.js` 文件导入到 `Minter.js` 文件,如下所示:
+
+```javascript
+import { useEffect, useState } from "react"
+import {
+ connectWallet,
+ getCurrentWalletConnected, //import here
+} from "./utils/interact.js"
+```
+
+现在,我们只需在 `useEffect` 函数中调用它:
+
+```javascript
+useEffect(async () => {
+ const { address, status } = await getCurrentWalletConnected()
+ setWallet(address)
+ setStatus(status)
+}, [])
+```
+
+请注意,我们使用调用 `getCurrentWalletConnected` 的响应来更新我们的 `walletAddress` 和 `status` 状态变量。
+
+添加这段代码后,请尝试刷新我们的浏览器窗口。 按钮应显示您已连接,并显示已连接钱包地址的预览 — 即使在您刷新后也是如此!
+
+### 实现 addWalletListener {#implement-add-wallet-listener}
+
+我们的去中心化应用程序钱包设置的最后一步是实现钱包监听器,以便我们的用户界面在钱包状态发生变化时更新,例如当用户断开或切换帐户时。
+
+在您的 `Minter.js` 文件中,添加如下所示的函数 `addWalletListener`:
+
+```javascript
+function addWalletListener() {
+ if (window.ethereum) {
+ window.ethereum.on("accountsChanged", (accounts) => {
+ if (accounts.length > 0) {
+ setWallet(accounts[0])
+ setStatus("👆🏽 Write a message in the text-field above.")
+ } else {
+ setWallet("")
+ setStatus("🦊 Connect to MetaMask using the top right button.")
+ }
+ })
+ } else {
+ setStatus(
+
+ {" "}
+ 🦊
+ You must install MetaMask, a virtual Ethereum wallet, in your browser.
+
+
+ )
+ }
+}
+```
+
+我们快速分板一下这段代码的运行情况:
+
+- 首先,我们的函数检查是否启用了 `window.ethereum` \(即 MetaMask 已安装\)。
+ - 如果未启用,我们只需将 `status` 状态变量设置为提示用户安装 MetaMask 的 JSX 字符串。
+ - 如果启用,我们会在第 3 行设置监听器 `window.ethereum.on("accountsChanged")` 监听 MetaMask 钱包中的状态变化,变化包括用户将其他帐户连接到去中心化应用程序、切换帐户或断开帐户。 如果至少连接了一个账户,`walletAddress` 状态变量将更新为监听器返回的 `accounts` 数组中的第一个账户。 否则,`walletAddress` 设置为空字符串。
+
+最后,我们必须在 `useEffect` 函数中调用它:
+
+```javascript
+useEffect(async () => {
+ const { address, status } = await getCurrentWalletConnected()
+ setWallet(address)
+ setStatus(status)
+
+ addWalletListener()
+}, [])
+```
+
+瞧! 我们已经完成了所有钱包功能的编程! 我们的钱包已经设置好了,现在让我们弄清楚如何铸造非同质化代币!
+
+## 非同质化代币元数据 101 {#nft-metadata-101}
+
+所以,请记住我们刚刚在本教程的第 0 步讨论过的非同质化代币元数据,它是非同质化代币的核心,让非同质化代币具有属性,例如数字资产、名称、描述及其他特性。
+
+我们需要将此元数据配置为 JSON 对象并存储它,以便在调用智能合约的 `mintNFT` 函数时将其作为 `tokenURI` 参数传入。
+
+“资产链接”、“名称”、“描述”字段中的文本将包含我们非同质化代币元数据的不同属性。 我们将此元数据格式化为 JSON 对象,但是对于这个 JSON 对象的存储位置,有几个选项可以选择:
+
+- 我们可以将其存储在以太坊区块链上;但这样做会非常昂贵。
+- 我们可以将其存储在中心化服务器上,例如 AWS 或 Firebase。 但这会违背我们的去中心化核心理念。
+- 我们可以使用去中心化协议和对等网络星际文件系统,在分布式文件系统中存储和共享数据。 由于该协议是去中心化且免费的,因此它是我们的最佳选择!
+
+要将我们的元数据存储在星际文件系统上,我们将使用 [Pinata](https://pinata.cloud/),这是一种方便的星际文件系统应用程序接口和工具包。 下一步,我们将准确解释如何操作!
+
+## 使用 Pintata 将元数据固定到星际文件系统 {#use-pinata-to-pin-your-metadata-to-IPFS}
+
+如果您没有 [Pinata](https://pinata.cloud/) 帐户,请点击[此处](https://pinata.cloud/signup)注册一个免费帐户完成您的电子邮件和帐户验证步骤。
+
+### 创建您的 Pinata 应用程序接口密钥 {#create-pinata-api-key}
+
+导航到 [https://pinata.cloud/keys](https://pinata.cloud/keys) 页面,然后选择顶部的“新建密钥”按钮并将“管理”小组件设置为启用,然后给您的密钥命名。
+
+然后,将显示一个包含您的应用程序接口信息的弹出窗口。 确保把它放在安全的地方。
+
+我们的密钥已经设置好了,我们现在将它添加到项目中以便可以使用它。
+
+### 创建 .env 文件 {#create-a-env}
+
+我们可以将 Pinata 密钥和私钥安全地存储在环境文件中。 我们在您的项目目录中安装 [dotenv 软件包](https://www.npmjs.com/package/dotenv)。
+
+在您的终端\(与运行本地主机的终端分开\)中打开一个新选项卡,并确保您位于 `minter-starter-files` 文件夹中,然后在终端运行以下命令:
+
+```text
+npm install dotenv --save
+```
+
+接下来,通过在命令行输入以下内容,在 `minter-starter-files` 的根目录中创建一个 `.env` 文件:
+
+```javascript
+vim.env
+```
+
+这将在 vim \(一种文本编辑器)中弹出并打开您的 `.env` 文件。 要保存它,依次在键盘上按“esc” + “:” + “q”。
+
+接下来,在 VSCode 中,导航到您的 `.env` 文件并向其中添加您的 Pinata 应用程序接口密钥和应用程序接口私钥,如下所示:
+
+```text
+REACT_APP_PINATA_KEY =
+REACT_APP_PINATA_SECRET =
+```
+
+保存该文件,然后您就可以开始编写函数将您的 JSON 元数据上传到星际文件系统!
+
+### 实现 pinJSONToIPFS {#pin-json-to-ipfs}
+
+对我们来说幸运的是,Pinata 提供了一个[专门用于将 JSON 数据上传到星际文件系统的应用程序接口](https://pinata.cloud/documentation#PinJSONToIPFS)和一个方便的使用 axios 示例的 JavaScript,我们做一些轻微修改后就可以使用它。
+
+在您的 `utils` 文件夹中,我们创建另一个名为 `pinata.js` 的文件,然后从 .env 文件中导入我们的 Pinata 私钥和密钥,如下所示:
+
+```javascript
+require("dotenv").config()
+const key = process.env.REACT_APP_PINATA_KEY
+const secret = process.env.REACT_APP_PINATA_SECRET
+```
+
+接下来,将下面的代码粘贴到您的 `pinata.js` 文件中。 别担心,我们将详细讲解每一行的含义!
+
+```javascript
+require("dotenv").config()
+const key = process.env.REACT_APP_PINATA_KEY
+const secret = process.env.REACT_APP_PINATA_SECRET
+
+const axios = require("axios")
+
+export const pinJSONToIPFS = async (JSONBody) => {
+ const url = `https://api.pinata.cloud/pinning/pinJSONToIPFS`
+ //making axios POST request to Pinata ⬇️
+ return axios
+ .post(url, JSONBody, {
+ headers: {
+ pinata_api_key: key,
+ pinata_secret_api_key: secret,
+ },
+ })
+ .then(function (response) {
+ return {
+ success: true,
+ pinataUrl:
+ "https://gateway.pinata.cloud/ipfs/" + response.data.IpfsHash,
+ }
+ })
+ .catch(function (error) {
+ console.log(error)
+ return {
+ success: false,
+ message: error.message,
+ }
+ })
+}
+```
+
+那么这段代码到底是做什么的呢?
+
+首先,它导入 [axios](https://www.npmjs.com/package/axios),axios 是一个基于 Promise 的超文本传输协议客户端,可用于浏览器和 node.js,我们将使用它创建一个发送到 Pinata 的请求。
+
+然后,我们使用异步函数 `pinJSONToIPFS`,它以 `JSONBody` 作为输入参数,并在其报头中使用 Pinata 应用程序接口密钥和私钥,这些都是为了向其 `pinJSONToIPFS` 应用程序接口发出 POST 请求。
+
+- 如果此 POST 请求成功,我们的函数返回一个 `success` 布尔值为 true 的 JSON 对象以及固定我们元数据的 `pinataUrl`。 我们将使用返回的 `pinataUrl` 作为我们智能合约的 mint 函数的 `tokenURI` 输入。
+- 如果此 post 请求失败,我们的函数返回一个 `success` 布尔值为 false 的 JSON 对象和一个指示我们错误的 `message` 字符串。
+
+与 `connectWallet` 函数返回类型一样,会返回 JSON 对象,因此我们可以使用它们的参数更新状态变量和用户界面。
+
+## 加载您的智能合约 {#load-your-smart-contract}
+
+我们有办法通过 `pinJSONToIPFS` 函数将非同质化代币元数据上传到星际文件系统,现在我们需要一种办法来加载我们智能合约的实例,以便我们可以调用其 `mintNFT ` 函数。
+
+正如我们之前提到的,在本教程中,我们将使用[这个现有的非同质化代币智能合约](https://ropsten.etherscan.io/address/0x4C4a07F737Bf57F6632B6CAB089B78f62385aCaE);但是,如果您想了解我们如何创建或者想自己创建一个,我们强烈建议您参阅我们的另一个教程[“如何创建非同质化代币。”](https://docs.alchemyapi.io/alchemy/tutorials/how-to-create-an-nft)。
+
+### 智能合约应用程序二进制接口 {#contract-abi}
+
+如果您仔细研究我们的文件,您会注意到我们的 `src` 目录中有一个 `contract-abi.json` 文件。 在指定合约将要调用的函数以及确保函数以您期望的格式返回数据时,应用程序二进制接口必不可少。
+
+我们还需要一个 Alchemy 应用程序接口密钥和 Alchemy Web3 应用程序接口,用来连接到以太坊区块链并加载我们的智能合约。
+
+### 创建您的 Alchemy API 密钥 {#create-alchemy-api}
+
+如果您还没有 Alchemy 帐户,请[在此处免费注册。](https://alchemy.com/?a=eth-org-nft-minter)
+
+创建 Alchemy 帐户后,您可以通过创建应用程序来生成应用程序接口密钥。 我们可以用它向 Ropsten 测试网发出请求。
+
+通过将鼠标悬停在导航栏中的“Apps”上方并点击“Create App”,导航到您的 Alchemy 仪表板中的“Create App”页面。
+
+给您的应用程序命名,我们选择“My First NFT!”(我的第一个非同质化代币!),提供简短描述,对于您的应用程序簿记环境选择“Staging”,对于网络选择“Ropsten”。
+
+点击“Create app”,完成! 您的应用程序应该就会出现在下面的表格中。
+
+太棒了,我们已经创建了我们的 HTTP Alchemy 应用程序接口网址,现在请将其复制到剪贴板......
+
+…...然后让我们将它添加到我们的 `.env` 文件中。 总之,您的 .env 文件应如下所示:
+
+```text
+REACT_APP_PINATA_KEY =
+REACT_APP_PINATA_SECRET =
+REACT_APP_ALCHEMY_KEY = https://eth-ropsten.alchemyapi.io/v2/
+```
+
+既然我们已经有合约应用程序二进制接口和 Alchemy 应用程序接口密钥了,现在我们可以使用 [Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3) 加载我们的智能合约。
+
+### 设置您的 Alchemy Web3 端点和合约 {#setup-alchemy-endpoint}
+
+首先,如果您还没有 [Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3),您需要通过在终端导航到主目录 `nft-minter-tutorial` 来安装它:
+
+```text
+cd ..
+npm install @alch/alchemy-web3
+```
+
+接下来,我们返回 `interact.js` 文件。 在该文件顶部添加以下代码,以便从您的 .env 文件中导入 Alchemy 密钥并设置您的 Alchemy Web3 端点:
+
+```javascript
+require("dotenv").config()
+const alchemyKey = process.env.REACT_APP_ALCHEMY_KEY
+const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
+const web3 = createAlchemyWeb3(alchemyKey)
+```
+
+[Alchemy Web3](https://github.com/alchemyplatform/alchemy-web3) 是 [Web3.js](https://web3js.readthedocs.io/en/v1.2.9/) 的包装类,提供增强的应用程序接口方法和其他重要优势,让 Web3 开发者的工作更轻松。 它设计成只需经过最少的配置即可使用,因此您可以直接在您的应用程序中开始使用它!
+
+接下来,我们将合约应用程序二进制接口和合约地址添加到我们的文件中。
+
+```javascript
+require("dotenv").config()
+const alchemyKey = process.env.REACT_APP_ALCHEMY_KEY
+const { createAlchemyWeb3 } = require("@alch/alchemy-web3")
+const web3 = createAlchemyWeb3(alchemyKey)
+
+const contractABI = require("../contract-abi.json")
+const contractAddress = "0x4C4a07F737Bf57F6632B6CAB089B78f62385aCaE"
+```
+
+在有了这两项后,我们就可以开始编写我们的铸币函数了!
+
+## 实现 mintNFT 函数 {#implement-the-mintnft-function}
+
+在 `interact.js` 文件中,我们定义的函数 `mintNFT`,它将用相同的名称铸造非同质化代币。
+
+因为我们将进行大量异步调用\(调用 Pinata 将我们的元数据固定到星际文件系统,调用 Alchemy Web3 加载我们的智能合约,并且调用 MetaMask 签署我们的交易\),我们的函数也将是异步的。
+
+我们函数的三个输入将是我们数字资产的 `url`、`name` 和 `description`。 在 `connectWallet` 函数下方添加以下函数签名:
+
+```javascript
+export const mintNFT = async (url, name, description) => {}
+```
+
+### 输入错误处理 {#input-error-handling}
+
+当然,在函数开始运行时进行某种输入错误处理是合理的,这样,如果输入参数不正确,我们将退出该函数。 在我们的函数中,我们添加以下代码:
+
+```javascript
+export const mintNFT = async (url, name, description) => {
+ //error handling
+ if (url.trim() == "" || name.trim() == "" || description.trim() == "") {
+ return {
+ success: false,
+ status: "❗Please make sure all fields are completed before minting.",
+ }
+ }
+}
+```
+
+本质上,如果有任何输入参数是空字符串,我们返回一个 JSON 对象,其中 `success` 布尔值为 false,并且 `status` 字符串指示我们用户界面中的所有字段必须完整。
+
+### 将元数据上传到星际文件系统 {#upload-metadata-to-ipfs}
+
+在知道我们的元数据格式正确后,下一步是将其包装到 JSON 对象中,并通过我们编写的 `pinJSONToIPFS` 将其上传到星际文件系统!
+
+为此,我们首先需要将 `pinJSONToIPFS` 函数导入到 `interact.js` 文件中。 在 `interact.js` 文件最顶部,我们添加:
+
+```javascript
+import { pinJSONToIPFS } from "./pinata.js"
+```
+
+回想一下 `pinJSONToIPFS` 接受 JSON 主体。 因此,在调用它之前,我们需要将 `url`、`name` 和 `description` 参数格式化为 JSON 对象。
+
+我们更新代码以创建一个名为 `metadata` 的 JSON 对象,然后使用此 `metadata` 参数调用 `pinJSONToIPFS`:
+
+```javascript
+export const mintNFT = async (url, name, description) => {
+ //error handling
+ if (url.trim() == "" || name.trim() == "" || description.trim() == "") {
+ return {
+ success: false,
+ status: "❗Please make sure all fields are completed before minting.",
+ }
+ }
+
+ //make metadata
+ const metadata = new Object()
+ metadata.name = name
+ metadata.image = url
+ metadata.description = description
+
+ //make pinata call
+ const pinataResponse = await pinJSONToIPFS(metadata)
+ if (!pinataResponse.success) {
+ return {
+ success: false,
+ status: "😢 Something went wrong while uploading your tokenURI.",
+ }
+ }
+ const tokenURI = pinataResponse.pinataUrl
+}
+```
+
+请注意,我们将 `pinJSONToIPFS(metadata)` 调用的响应存储在 `pinataResponse` 对象中。 然后,我们解析该对象是否有任何错误。
+
+如果有错误,我们返回一个 JSON 对象,其中 `success` 布尔值为 false,并且我们的 `status` 字符串指示我们的调用失败。 否则,我们从 `pinataResponse` 中提取 `pinataURL` 并将其存储为我们的 `tokenURI` 变量。
+
+现在是时候使用我们在文件顶部初始化的 Alchemy Web3 应用程序接口加载我们的智能合约了。 将以下代码行添加到 `mintNFT` 函数的底部,以便在 `window.contract` 全局变量处设置合约:
+
+```javascript
+window.contract = await new web3.eth.Contract(contractABI, contractAddress)
+```
+
+最后,在 `mintNFT` 函数中添加我们的以太坊交易:
+
+```javascript
+//set up your Ethereum transaction
+const transactionParameters = {
+ to: contractAddress, // Required except during contract publications.
+ from: window.ethereum.selectedAddress, // must match user's active address.
+ data: window.contract.methods
+ .mintNFT(window.ethereum.selectedAddress, tokenURI)
+ .encodeABI(), //make call to NFT smart contract
+}
+
+//sign the transaction via MetaMask
+try {
+ const txHash = await window.ethereum.request({
+ method: "eth_sendTransaction",
+ params: [transactionParameters],
+ })
+ return {
+ success: true,
+ status:
+ "✅ Check out your transaction on Etherscan: https://ropsten.etherscan.io/tx/" +
+ txHash,
+ }
+} catch (error) {
+ return {
+ success: false,
+ status: "😥 Something went wrong: " + error.message,
+ }
+}
+```
+
+如果您已经熟悉以太坊交易,您会注意到其结构与您以前看到的非常相似。
+
+- 首先,我们设置交易参数。
+ - `to` 指定接收者地址\(我们的智能合约\)
+ - `from` 指定交易的签名者\(用户连接到 MetaMask 的地址:`window.ethereum.selectedAddress`\)
+ - `data` 包含对智能合约 `mintNFT` 方法的调用,该方法接收 `tokenURI` 和用户的钱包地址 `window.ethereum.selectedAddress ` 作为输入
+- 然后,我们发出一个 await 调用 `window.ethereum.request`,我们通过它要求 MetaMask 签署交易。 注意,在该请求中,我们指定了我们的以太币方法 \(eth_SentTransaction\) 并传入了 `transactionParameters`。 此时,MetaMask 将在浏览器中打开,并提示用户签署或拒绝交易。
+ - 如果交易成功,该函数将返回一个 JSON 对象,其中布尔值 `success` 设置为 true,并且 `status` 字符串提示用户查看 Etherscan 区块浏览器以获取有关其交易的更多信息。
+ - 如果交易失败,该函数将返回一个 JSON 对象,其中 `success` 布尔值设置为 false,并且 `status` 字符串指示错误信息。
+
+总之,我们的 `mintNFT` 函数应该如下所示:
+
+```javascript
+export const mintNFT = async (url, name, description) => {
+ //error handling
+ if (url.trim() == "" || name.trim() == "" || description.trim() == "") {
+ return {
+ success: false,
+ status: "❗Please make sure all fields are completed before minting.",
+ }
+ }
+
+ //make metadata
+ const metadata = new Object()
+ metadata.name = name
+ metadata.image = url
+ metadata.description = description
+
+ //pinata pin request
+ const pinataResponse = await pinJSONToIPFS(metadata)
+ if (!pinataResponse.success) {
+ return {
+ success: false,
+ status: "😢 Something went wrong while uploading your tokenURI.",
+ }
+ }
+ const tokenURI = pinataResponse.pinataUrl
+
+ //load smart contract
+ window.contract = await new web3.eth.Contract(contractABI, contractAddress) //loadContract();
+
+ //set up your Ethereum transaction
+ const transactionParameters = {
+ to: contractAddress, // Required except during contract publications.
+ from: window.ethereum.selectedAddress, // must match user's active address.
+ data: window.contract.methods
+ .mintNFT(window.ethereum.selectedAddress, tokenURI)
+ .encodeABI(), //make call to NFT smart contract
+ }
+
+ //sign transaction via MetaMask
+ try {
+ const txHash = await window.ethereum.request({
+ method: "eth_sendTransaction",
+ params: [transactionParameters],
+ })
+ return {
+ success: true,
+ status:
+ "✅ Check out your transaction on Etherscan: https://ropsten.etherscan.io/tx/" +
+ txHash,
+ }
+ } catch (error) {
+ return {
+ success: false,
+ status: "😥 Something went wrong: " + error.message,
+ }
+ }
+}
+```
+
+这是一个大型函数! 现在,我们只需要将 `mintNFT` 函数连接到我们的 `Minter.js` 组件......
+
+## 将 mintNFT 连接到我们的 Minter.js 前端 {#connect-our-frontend}
+
+打开您的 `Minter.js` 文件,并将顶部的 `import { connectWallet, getCurrentWalletConnected } from "./utils/interact.js";` 行更新为:
+
+```javascript
+import {
+ connectWallet,
+ getCurrentWalletConnected,
+ mintNFT,
+} from "./utils/interact.js"
+```
+
+最后,实现 `onMintPressed` 函数对导入的 `mintNFT` 函数进行 await 调用,并更新 `status` 状态变量以表示我们的交易是成功还是失败:
+
+```javascript
+const onMintPressed = async () => {
+ const { status } = await mintNFT(url, name, description)
+ setStatus(status)
+}
+```
+
+## 将您的非同质化代币部署到在线网站 {#deploy-your-NFT}
+
+准备好让您的项目上线和用户互动了吗? 查看[本教程](https://docs.alchemy.com/alchemy/tutorials/nft-minter/how-do-i-deploy-nfts-online),将您的铸币机部署到在线网站。
+
+最后一步......
+
+## 掀起区块链世界的风暴 {#take-the-blockchain-world-by-storm}
+
+开个玩笑,您已经完成了本教程!
+
+概括一下,通过构建非同质化代币铸币机,您成功学会了如何:
+
+- 通过您的前端项目连接到 MetaMask
+- 在前端调用智能合约的方法
+- 使用 MetaMask 签署交易
+
+大概,你想要在钱包中炫耀通过你的去中心化应用程序铸造的非同质化代币 — 所以请务必参阅我们的快速教程:[如何查看钱包中的非同质化代币](https://docs.alchemyapi.io/alchemy/tutorials/how-to-write-and-deploy-a-nft-smart-contract/how-to-view-your-nft-in-your-wallet)!
+
+一如既往,如果您有任何问题,我们会在 [Alchemy Discord](https://discord.gg/gWuC7zB) 中随时为您提供帮助。 我们迫不及待地想看看您如何在将来的项目中应用本教程中的概念!
diff --git a/src/content/translations/zh/developers/tutorials/optimism-std-bridge-annotated-code/index.md b/src/content/translations/zh/developers/tutorials/optimism-std-bridge-annotated-code/index.md
new file mode 100644
index 00000000000..409922d0f25
--- /dev/null
+++ b/src/content/translations/zh/developers/tutorials/optimism-std-bridge-annotated-code/index.md
@@ -0,0 +1,1278 @@
+---
+title: "乐观解决方案标准链桥合约演示"
+description: 乐观解决方案标准链桥如何运作? 为什么它会这样工作?
+author: Ori Pomerantz
+tags:
+ - "solidity"
+ - "乐观解决方案"
+ - "链桥"
+ - "二层网络"
+skill: intermediate
+published: 2022-03-30
+lang: zh
+---
+
+[乐观解决方案](https://www.optimism.io/)采用[乐观卷叠](/developers/docs/scaling/optimistic-rollups/)技术。 乐观卷叠能够以比以太坊主网(也称“第一层”)低得多的价格处理交易,因为交易只是由几个节点而非网络上的所有节点处理。 同时所有数据都已写入第一层,因此一切都能够得到证明并重建,并且具有主网的所有完整性和可用性保证。
+
+要在乐观解决方案(或任何其他第二层)上使用第一层资产,需要[桥接](/bridges/#prerequisites)该资产。 实现这一点的一种方法是,用户在第一层上锁定资产(以太币和 [ERC-20 代币](https://ethereum.org/en/developers/docs/standards/tokens/erc-20/)是最常见的资产)并收到相应资产,供在第二层上使用。 最后,拥有这些资产的任何人可能想把它们桥接回第一层。 在桥接过程中,资产会在第二层销毁,然后在第一层上发放给用户。
+
+这就是[乐观解决方案标准链桥](https://community.optimism.io/docs/developers/bridge/standard-bridge)的工作方式。 在本文中,我们将学习链桥的源代码,看看它如何工作,并将它作为精心编写的 Solidity 代码示例加以研究。
+
+## 控制流通 {#control-flows}
+
+链桥有两种主要流通方式:
+
+- 存款(从第一层到第二层)
+- 提款(从第二层到第一层)
+
+### 存款流通 {#deposit-flow}
+
+#### 第一层 {#deposit-flow-layer-1}
+
+1. 如果存入 ERC-20,存款人会给链桥一笔费用,这笔费用从所存入的金额中抽取
+2. 存款人调用第一层链桥(`depositERC20`、`depositERC20To`、`depositETH` 或 `depositETHTo`)
+3. 第一层链桥拥有桥接的资产
+ - 以太币:资产由存款人在调用过程中转移
+ - ERC-20:资产被链桥转移给链桥自身,使用的是存款人提供的费用
+4. 第一层链桥使用跨域信息机制调用第二层链桥上的 `finalizeDeposit`
+
+#### 二层网络 {#deposit-flow-layer-2}
+
+5. 第二层链桥验证调用 `finalizeDeposit` 是否合法:
+ - 来自交叉域信息合约
+ - 最初来自第一层链桥
+6. 第二层链桥检查第二层上的 ERC-20 代币合约是否正确:
+ - 第二层合约报告,对应的第一层合约与第一层上提供代币的合约相同
+ - 第二层合约报告它支持正确的接口([使用 ERC-165](https://eips.ethereum.org/EIPS/eip-165))。
+7. 如果第二层合约正确,请调用它以便在适当地址铸造相应数量的代币。 如果不正确,请启动提款过程让用户可以在第一层上认领代币。
+
+### 提款流程 {#withdrawal-flow}
+
+#### 二层网络 {#withdrawl-flow-layer-2}
+
+1. 提款人调用第二层链桥(`withdraw` 或 `withdrawTo`)
+2. 第二层链桥销毁属于 `msg.sender` 的适当数量代币
+3. 第二层链桥使用跨域信息机制调用第一层链桥上的 `finalizeETHWithdrawal` 或 `finalizeERC20Withdrawal`
+
+#### 第一层 {#withdrawl-flow-layer-1}
+
+4. 第一层链桥验证调用 `finalizeETHWithdrawal` 或 `finalizeERC20Withdrawal` 是否合法:
+ - 来自交叉域信息机制
+ - 最初来自第二层上的链桥
+5. 第一层链桥将适当资产(以太币或 ERC-20)转账到适当地址
+
+## 一层网络代码 {#layer-1-code}
+
+以下代码在第一层即以太坊主网上运行。
+
+### IL1ERC20Bridge {#IL1ERC20Bridge}
+
+[此接口在此处定义](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/IL1ERC20Bridge.sol)。 其中包括桥接 ERC-20 代币所需的函数和定义。
+
+```solidity
+/ SPDX-许可标识符: MIT
+```
+
+[大多数乐观解决方案代码都是依据 MIT 许可证发布的](https://help.optimism.io/hc/en-us/articles/4411908707995-What-software-license-does-Optimism-use-)。
+
+```solidity
+实用性 >0.5.0 <0.9.0;
+```
+
+编写代码时,Solidity 最新版本为 0.8.12。 在 0.9.0 版发布之前,我们不知道这段代码是否与它兼容。
+
+```solidity
+/**
+ * @title IL1ERC20Bridge
+ */
+接口 IL1ERC20Bridge 然后
+ /**************
+ * 事件 *
+ **********/
+
+ 事件 ERC20DepositInitiated(
+```
+
+在乐观解决方案链桥术语中,*存款*是指从第一层转账到第二层,*提款*是指从第二层转账到第一层。
+
+```solidity
+ 地址索引_l1Token,
+ 地址索引_l2Token,
+```
+
+大多数情况下,第一层上的 ERC-20 地址与第二层上对应的 ERC-20 地址不同。 [可以在此处参阅代币地址列表](https://static.optimism.io/optimism.tokenlist.json)。 带有 `chainId` 1 的地址在第一层(主网),带有 `chainId` 10 的地址在第二层(乐观解决方案)上。 另两个 `chainId` 值用于 Kovan 测试网络 (42) 和乐观 Kovan 测试网络 (69)。
+
+```solidity
+ 地址索引_from
+ 地址到
+ uint256 _amounty,
+ bytes _data
+;
+```
+
+可以为转账添加注解,在这种情况下,注解将被添加到报告它们的事件中。
+
+```solidity
+ 事件ERC20提款已完成(
+ 地址索引_l1Token,
+ 地址索引_l2Token,
+ 地址索引_from
+ 地址_to
+ uint256 _amount,
+ bytes _data
+);
+```
+
+同一链桥合约处理双向转账。 就第一层链桥而言,这意味着存款的初始化和提款的终局化。
+
+```solidity
+
+ ****************************
+ * 公共函数 *
+ **********************/
+
+ /**
+ * @dev 获得相应的L2 桥合同的地址。
+ * 对应的L2桥合同的@return 地址。
+ */
+ 函数 l2TokenBridge() 外部返回 (地址);
+```
+
+并不是真需要此函数,因为在第二层上它是一个预部署的合约,所以它总是位于地址 `0x4200000000000000000000000000000000000010` 处。 使用此函数是为了与第二层链桥对称,因为知道第一层桥的地址*并非*不重要。
+
+```solidity
+ /**
+ * @dev 将ERC20的金额存入L2上来电者的余额。
+ * @param _l1Token Address of the L1 ERC20 we being sording
+ * @param _l2Token Address of the L1 respective L2 ERC20
+ * @param _amount Amount of the ERC20 to entorize
+ * @param _l2Gas Gas limit required to complete on L2
+ * @param _data 可选数据转发到 L2。 This data is provided
+ * solely as a convenience for external contracts. Aside from enforcing a maximum
+ * length, these contracts provide no guarantees about its content.
+ */
+ function depositERC20(
+ address _l1Token,
+ address _l2Token,
+ uint256 _amount,
+ uint32 _l2Gas,
+ bytes calldata _data
+ ) external;
+```
+
+`_l2Gas` 参数是指允许交易花费的第二层燃料的数量。 [达到某个(上限)额度前,交易是免费的](https://community.optimism.io/docs/developers/bridge/messaging/#for-l1-%E2%87%92-l2-transactions-2),所以除非 ERC-20 合约在铸币时行为确实怪异,否则这应该不是问题。 此函数处理常见场景,即用户将资产桥接到不同区块链上的相同地址。
+
+```solidity
+ /**
+ * @dev deposit an amount of ERC20 to a recipient's balance on L2.
+ * @param _l1Token Address of the L1 ERC20 we are depositing
+ * @param _l2Token Address of the L1 respective L2 ERC20
+ * @param _to L2 address to credit the withdrawal to.
+ * @param _amount Amount of the ERC20 to deposit.
+ * @param _l2Gas Gas limit required to complete the deposit on L2.
+ * @param _data Optional data to forward to L2. This data is provided
+ * solely as a convenience for external contracts. Aside from enforcing a maximum
+ * length, these contracts provide no guarantees about its content.
+ */
+ function depositERC20To(
+ address _l1Token,
+ address _l2Token,
+ address _to,
+ uint256 _amount,
+ uint32 _l2Gas,
+ bytes calldata _data
+ ) external;
+```
+
+此函数基本上与 `depositERC20` 相同,但它允许您将 ERC-20 发送到不同的地址。
+
+```solidity
+ /*************************
+ * Cross-chain Functions *
+ *************************/
+
+ /**
+ * @dev Complete a withdrawal from L2 to L1, and credit funds to the recipient's balance of the
+ * L1 ERC20 token.
+ * This call will fail if the initialized withdrawal from L2 has not been finalized.
+ *
+ * @param _l1Token Address of L1 token to finalizeWithdrawal for.
+ * @param _l2Token Address of L2 token where withdrawal was initiated.
+ * @param _from L2 address initiating the transfer.
+ * @param _to L1 address to credit the withdrawal to.
+ * @param _amount Amount of the ERC20 to deposit.
+ * @param _data Data provided by the sender on L2. This data is provided
+ * solely as a convenience for external contracts. Aside from enforcing a maximum
+ * length, these contracts provide no guarantees about its content.
+ */
+ function finalizeERC20Withdrawal(
+ address _l1Token,
+ address _l2Token,
+ address _from,
+ address _to,
+ uint256 _amount,
+ bytes calldata _data
+ ) external;
+}
+```
+
+乐观解决方案中的提款(以及从第二层到第一层的其他信息)是一个包含两个步骤的过程:
+
+1. 在第二层上的启动交易。
+2. 在第一层上完成或声明交易。 在第二层交易的[缺陷质询期](https://community.optimism.io/docs/how-optimism-works/#fault-proofs)结束后此交易才可以进行。
+
+### IL1StandardBridge {#il1standardbridge}
+
+[此接口在此处定义](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/IL1StandardBridge.sol)。 该文件包含以太币的事件和函数定义。 这些定义与上述 `IL1ERC20Bridge` 中为 ERC-20 定义的定义非常相似。
+
+链桥接口分为两个文件,因为某些 ERC-20 代币需要自定义处理,标准链桥接无法处理它们。 这样,处理此类代币的自定义链桥可以实现 `IL1ERC20Bridge`,而不必再桥接以太币。
+
+```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity >0.5.0 <0.9.0;
+
+import "./IL1ERC20Bridge.sol";
+
+/**
+ * @title IL1StandardBridge
+ */
+interface IL1StandardBridge is IL1ERC20Bridge {
+ /**********
+ * Events *
+ **********/
+ event ETHDepositInitiated(
+ address indexed _from,
+ address indexed _to,
+ uint256 _amount,
+ bytes _data
+ );
+```
+
+此事件与 ERC-20 版本 (`ERC20DepositInitiated`) 几乎相同,只是没有第一层和第二层代币的地址。 其他事件和函数也是如此。
+
+```solidity
+ event ETHWithdrawalFinalized(
+ .
+ .
+ .
+ );
+
+ /********************
+ * Public Functions *
+ ********************/
+
+ /**
+ * @dev Deposit an amount of the ETH to the caller's balance on L2.
+ .
+ .
+ .
+ */
+ function depositETH(uint32 _l2Gas, bytes calldata _data) external payable;
+
+ /**
+ * @dev Deposit an amount of ETH to a recipient's balance on L2.
+ .
+ .
+ .
+ */
+ function depositETHTo(
+ address _to,
+ uint32 _l2Gas,
+ bytes calldata _data
+ ) external payable;
+
+ /*************************
+ * Cross-chain Functions *
+ *************************/
+
+ /**
+ * @dev Complete a withdrawal from L2 to L1, and credit funds to the recipient's balance of the
+ * L1 ETH token. Since only the xDomainMessenger can call this function, it will never be called
+ * before the withdrawal is finalized.
+ .
+ .
+ .
+ */
+ function finalizeETHWithdrawal(
+ address _from,
+ address _to,
+ uint256 _amount,
+ bytes calldata _data
+ ) external;
+}
+```
+
+### CrossDomainEnabled {#crossdomainenabled}
+
+[此合约](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/libraries/bridge/CrossDomainEnabled.sol)由两个链桥([一层网络](#the-l1-bridge-contract)和[二层网络](#the-l2-bridge-contract))继承,以便向其他层发送信息。
+
+```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity >0.5.0 <0.9.0;
+
+/* Interface Imports */
+import { ICrossDomainMessenger } from "./ICrossDomainMessenger.sol";
+```
+
+[这个接口](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/libraries/bridge/ICrossDomainMessenger.sol)告诉合约如何发送使用跨域信使向另一层发送信息。 跨域信使完全是另一种系统,值得单独写一篇文章来介绍,我希望将来能写出来。
+
+```solidity
+/**
+ * @title CrossDomainEnabled
+ * @dev Helper contract for contracts performing cross-domain communications
+ *
+ * Compiler used: defined by inheriting contract
+ */
+contract CrossDomainEnabled {
+ /*************
+ * Variables *
+ *************/
+
+ // Messenger contract used to send and receive messages from the other domain.
+ address public messenger;
+
+ /***************
+ * Constructor *
+ ***************/
+
+ /**
+ * @param _messenger Address of the CrossDomainMessenger on the current layer.
+ */
+ constructor(address _messenger) {
+ messenger = _messenger;
+ }
+```
+
+合约需要知道的一个参数就是跨域信使在这一层的地址。 此参数在构造函数中设置一次,并且永远不会更改。
+
+```solidity
+
+ /**********************
+ * Function Modifiers *
+ **********************/
+
+ /**
+ * Enforces that the modified function is only callable by a specific cross-domain account.
+ * @param _sourceDomainAccount The only account on the originating domain which is
+ * authenticated to call this function.
+ */
+ modifier onlyFromCrossDomainAccount(address _sourceDomainAccount) {
+```
+
+跨域消息传递可以由运行在区块链(以太坊主网或乐观解决方案)上的任何合约使用。 但是每一层都需要链桥。如果信息来自于另一边的链桥,将*只*信任特定信息。
+
+```solidity
+ require(
+ msg.sender == address(getCrossDomainMessenger()),
+ "OVM_XCHAIN: messenger contract unauthenticated"
+ );
+```
+
+只能信任来自适当跨域信使(`messenger`,如下所示)的信息。
+
+```solidity
+
+ require(
+ getCrossDomainMessenger().xDomainMessageSender() == _sourceDomainAccount,
+ "OVM_XCHAIN: wrong sender of cross-domain message"
+ );
+```
+
+跨域信使要提供另一层发送信息的地址,就需要用到 [`.xDomainMessageSender()` 函数](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1CrossDomainMessenger.sol#L122-L128)。 只要在信息发起的交易中调用它,它就可以提供此信息。
+
+我们需要确保我们收到的信息来自另一个链桥。
+
+```solidity
+
+ _;
+ }
+
+ /**********************
+ * Internal Functions *
+ **********************/
+
+ /**
+ * Gets the messenger, usually from storage. This function is exposed in case a child contract
+ * needs to override.
+ * @return The address of the cross-domain messenger contract which should be used.
+ */
+ function getCrossDomainMessenger() internal virtual returns (ICrossDomainMessenger) {
+ return ICrossDomainMessenger(messenger);
+ }
+```
+
+该函数返回跨域信使。 我们使用函数而不是变量 `messenger`,以允许从该函数继承的合约使用一种算法来指定要使用的跨域信使。
+
+```solidity
+
+ /**
+ * Sends a message to an account on another domain
+ * @param _crossDomainTarget The intended recipient on the destination domain
+ * @param _message The data to send to the target (usually calldata to a function with
+ * `onlyFromCrossDomainAccount()`)
+ * @param _gasLimit The gasLimit for the receipt of the message on the target domain.
+ */
+ function sendCrossDomainMessage(
+ address _crossDomainTarget,
+ uint32 _gasLimit,
+ bytes memory _message
+```
+
+最后是向另一层发送信息的函数。
+
+```solidity
+ ) internal {
+ // slither-disable-next-line reentrancy-events, reentrancy-benign
+```
+
+[Slither](https://github.com/crytic/slither) 是一个静态分析器,乐观解决方案在每个合约上运行它以查找漏洞和其他潜在问题。 在本例中,下面一行会触发两个漏洞:
+
+1. [重入事件](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3)
+2. [良性重入](https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-2)
+
+```solidity
+ getCrossDomainMessenger().sendMessage(_crossDomainTarget, _message, _gasLimit);
+ }
+}
+```
+
+在这种情况下,我们不担心重入漏洞,我们知道 `getCrossDomainMessenger()` 返回一个可信地址,即使 Slither 无法知道这一点。
+
+### 第一层链桥合约 {#the-l1-bridge-contract}
+
+[此合约的源代码在此处](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L1/messaging/L1StandardBridge.sol)。
+
+```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.9;
+```
+
+接口可以来自其他合约,因此它们必须支持各种 Solidity 版本。 但是链桥本身属于我们的合约,我们可以严格限制它使用的 Solidity 版本。
+
+```solidity
+/* Interface Imports */
+import { IL1StandardBridge } from "./IL1StandardBridge.sol";
+import { IL1ERC20Bridge } from "./IL1ERC20Bridge.sol";
+```
+
+[IL1ERC20Bridge](#IL1ERC20Bridge) 和 [IL1StandardBridge](#IL1StandardBridge) 已在上面进行了说明。
+
+```solidity
+import { IL2ERC20Bridge } from "../../L2/messaging/IL2ERC20Bridge.sol";
+```
+
+[此接口](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L2/messaging/IL2ERC20Bridge.sol)让我们创建信息来控制第二层上的标准链桥。
+
+```solidity
+import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
+```
+
+[此接口](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol)让我们控制 ERC-20 合约。 [您可以在此处阅读更多信息](/developers/tutorials/erc20-annotated-code/#the-interface)。
+
+```solidity
+/* Library Imports */
+import { CrossDomainEnabled } from "../../libraries/bridge/CrossDomainEnabled.sol";
+```
+
+[如上所述](#crossdomainenabled),此合约用于层间信息传递。
+
+```solidity
+import { Lib_PredeployAddresses } from "../../libraries/constants/Lib_PredeployAddresses.sol";
+```
+
+[`Lib_PredeployAddresses`](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol) 为第二层合约提供地址,这些合约始终使用相同的地址。 其中包括第二层上的标准链桥。
+
+```solidity
+import { Address } from "@openzeppelin/contracts/utils/Address.sol";
+```
+
+[OpenZeppelin 的地址工具](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Address.sol)。 它用于区分合约地址和属于外部账户 (EOA) 的地址。
+
+请注意,这不是一个理想的解决方案,因为无法区分直接调用和合约构造函数的调用,但至少这让我们能够识别和防止一些常见的用户错误。
+
+```solidity
+import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
+```
+
+[ERC-20 标准](https://eips.ethereum.org/EIPS/eip-20)支持两种合约报告失败的方式:
+
+1. 回滚
+2. 返回 `false`
+
+处理这两种情况会使我们的代码更加复杂,因此我们使用 [OpenZeppelin 的 `SafeERC20`](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/utils/SafeERC20.sol),确保[所有失败都导致回滚](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/utils/SafeERC20.sol#L96)。
+
+```solidity
+/**
+ * @title L1StandardBridge
+ * @dev The L1 ETH and ERC20 Bridge is a contract which stores deposited L1 funds and standard
+ * tokens that are in use on L2. It synchronizes a corresponding L2 Bridge, informing it of deposits
+ * and listening to it for newly finalized withdrawals.
+ *
+ */
+contract L1StandardBridge is IL1StandardBridge, CrossDomainEnabled {
+ using SafeERC20 for IERC20;
+```
+
+此行表示我们如何指定在每次使用 `IERC20` 接口时使用 `SafeERC20` 包装器。
+
+```solidity
+
+ /********************************
+ * External Contract References *
+ ********************************/
+
+ address public l2TokenBridge;
+```
+
+[L2StandardBridge](#the-l2-bridge-contract) 的地址。
+
+```solidity
+
+ // Maps L1 token to L2 token to balance of the L1 token deposited
+ mapping(address => mapping(address => uint256)) public deposits;
+```
+
+像这样的双重[映射](https://www.tutorialspoint.com/solidity/solidity_mappings.htm)是定义[二维稀疏数组](https://en.wikipedia.org/wiki/Sparse_matrix)的方式。 此数据结构中的值被标识为 `deposit[L1 token addr][L2 token addr]`。 默认值为零。 只有设置为不同值的单元才会写入存储。
+
+```solidity
+
+ /***************
+ * Constructor *
+ ***************/
+
+ // This contract lives behind a proxy, so the constructor parameters will go unused.
+ constructor() CrossDomainEnabled(address(0)) {}
+```
+
+希望能够升级此合约而无需复制存储中的所有变量。 为此,我们使用 [`Proxy`](https://docs.openzeppelin.com/contracts/3.x/api/proxy),此合约使用 [`delegatecall`](https://solidity-by-example.org/delegatecall/) 将呼叫转移到地址由代理合约存储的单独联系人(当您升级时,您告诉代理更改该地址)。 当您使用 `delegatecall` 时,存储仍然是*调用*合约的存储,因此合约所有状态变量的值不受影响。
+
+这种模式的结果是不使用 `delegatecall` *调用*的合约的存储,因此传递给它的构造函数值无关紧要。 这就是我们可以为 `CrossDomainEnabled` 构造函数提供一个无意义值的原因。 这也是下面的初始化与构造函数分开的原因。
+
+```solidity
+ /******************
+ * Initialization *
+ ******************/
+
+ /**
+ * @param _l1messenger L1 Messenger address being used for cross-chain communications.
+ * @param _l2TokenBridge L2 standard bridge address.
+ */
+ // slither-disable-next-line external-function
+```
+
+此 [Slither 测试](https://github.com/crytic/slither/wiki/Detector-Documentation#public-function-that-could-be-declared-external)可识别不是从合约代码调用且因此可以声明为 `external` 而不是 `public` 的函数。 `external` 函数的燃料成本可以更低,因为可以在 calldata 中为它们提供参数。 声明为 `public` 的函数必须可以在合约内部访问。 合约不能修改自己的 calldata,所以参数必须位于内存中。 当外部调用这类函数时,需要将 calldata 复制到内存中,这就会消耗燃料。 在本例中,函数只被调用一次,因此效率低下对我们来说无关紧要。
+
+```solidity
+ function initialize(address _l1messenger, address _l2TokenBridge) public {
+ require(messenger == address(0), "Contract has already been initialized.");
+```
+
+`initialize` 函数只应调用一次。 如果第一层跨域信使或第二层代币链桥的地址发生变化,我们将创建新代理和新链桥来调用它。 这种情况不太可能发生,除非升级整个系统,这非常罕见。
+
+请注意,此函数没有任何机制限制*谁*可以调用它。 这意味着理论上,攻击者可以等到我们部署代理和第一版链桥后,抢在合法用户之前在[前台运行](https://solidity-by-example.org/hacks/front-running/)以使用 `initialize` 函数。 但是有两种方法可以防止这种情况:
+
+1. 如果合约不是由外部账户直接部署,而是[在有另一个合约创建它们的交易中](https://medium.com/upstate-interactive/creating-a-contract-with-a-smart-contract-bdb67c5c8595)部署,那么整个过程可以成为最小操作单元,并且能够在执行任何其他交易之前完成。
+2. 如果对 `initialize` 的合法调用失败,总是可以忽略新创建的代理和链桥并创建新的。
+
+```solidity
+ messenger = _l1messenger;
+ l2TokenBridge = _l2TokenBridge;
+ }
+```
+
+这些是链桥需要知道的两个参数。
+
+```solidity
+
+ /**************
+ * Depositing *
+ **************/
+
+ /** @dev Modifier requiring sender to be EOA. This check could be bypassed by a malicious
+ * contract via initcode, but it takes care of the user error we want to avoid.
+ */
+ modifier onlyEOA() {
+ // Used to stop deposits from contracts (avoid accidentally lost tokens)
+ require(!Address.isContract(msg.sender), "Account not EOA");
+ _;
+ }
+```
+
+这就是我们需要 OpenZeppelin 的 `Address` 工具的原因。
+
+```solidity
+ /**
+ * @dev This function can be called with no data
+ * to deposit an amount of ETH to the caller's balance on L2.
+ * Since the receive function doesn't take data, a conservative
+ * default amount is forwarded to L2.
+ */
+ receive() external payable onlyEOA {
+ _initiateETHDeposit(msg.sender, msg.sender, 200_000, bytes(""));
+ }
+```
+
+此函数存在的目的是测试。 请注意,它没有出现在接口定义中 — 它不适合正常使用。
+
+```solidity
+ /**
+ * @inheritdoc IL1StandardBridge
+ */
+ function depositETH(uint32 _l2Gas, bytes calldata _data) external payable onlyEOA {
+ _initiateETHDeposit(msg.sender, msg.sender, _l2Gas, _data);
+ }
+
+ /**
+ * @inheritdoc IL1StandardBridge
+ */
+ function depositETHTo(
+ address _to,
+ uint32 _l2Gas,
+ bytes calldata _data
+ ) external payable {
+ _initiateETHDeposit(msg.sender, _to, _l2Gas, _data);
+ }
+```
+
+这两个函数是 `_initiateETHDeposit` 的包装器,\_initiateETHDeposit 处理实际的以太币存款。
+
+```solidity
+ /**
+ * @dev Performs the logic for deposits by storing the ETH and informing the L2 ETH Gateway of
+ * the deposit.
+ * @param _from Account to pull the deposit from on L1.
+ * @param _to Account to give the deposit to on L2.
+ * @param _l2Gas Gas limit required to complete the deposit on L2.
+ * @param _data Optional data to forward to L2. This data is provided
+ * solely as a convenience for external contracts. Aside from enforcing a maximum
+ * length, these contracts provide no guarantees about its content.
+ */
+ function _initiateETHDeposit(
+ address _from,
+ address _to,
+ uint32 _l2Gas,
+ bytes memory _data
+ ) internal {
+ // Construct calldata for finalizeDeposit call
+ bytes memory message = abi.encodeWithSelector(
+```
+
+跨域信息的工作方式是将信息作为其 calldata 来调用目的地合约。 Solidity 合约总是解释它们的 calldata 符合 [应用程序二进制接口规范](https://docs.soliditylang.org/en/v0.8.12/abi-spec.html)。 Solidity 函数 [`abi. encodeWithSelector`](https://docs.soliditylang.org/en/v0.8.12/units-and-global-variables.html#abi-encoding-and-decoding-functions) 可创建该 calldata。
+
+```solidity
+ IL2ERC20Bridge.finalizeDeposit.selector,
+ address(0),
+ Lib_PredeployAddresses.OVM_ETH,
+ _from,
+ _to,
+ msg.value,
+ _data
+ );
+```
+
+此处的信息用来使用下面的参数调用 [`finalizeDeposit` 函数](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L2/messaging/L2StandardBridge.sol#L141-L148):
+
+| 参数 | 值 | 意义 |
+| --------- | ------------------------------ | ------------------------------------------------------------------------------------------------------------------- |
+| \_l1Token | address(0) | 在第一层上代表以太币(不是 ERC-20 代币)的特殊值 |
+| \_l2Token | Lib_PredeployAddresses.OVM_ETH | 乐观解决方案上管理以太币的第二层合约 `0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000`(此合约仅供乐观解决方案内部使用) |
+| \_from | \_from | 第一层上发送以太币的地址 |
+| \_to | \_to | 第二层上接收以太币的地址 |
+| amount | 值 | 已发送的 wei 数量(已经发送到链桥的 wei) |
+| \_data | \_data | 附加到存款的额外日期 |
+
+```solidity
+ // Send calldata into L2
+ // slither-disable-next-line reentrancy-events
+ sendCrossDomainMessage(l2TokenBridge, _l2Gas, message);
+```
+
+通过跨域信使发送信息。
+
+```solidity
+ // slither-disable-next-line reentrancy-events
+ emit ETHDepositInitiated(_from, _to, msg.value, _data);
+ }
+```
+
+触发一个事件来通知监听这笔转账的所有去中心化应用程序。
+
+```solidity
+ /**
+ * @inheritdoc IL1ERC20Bridge
+ */
+ function depositERC20(
+ .
+ .
+ .
+ ) external virtual onlyEOA {
+ _initiateERC20Deposit(_l1Token, _l2Token, msg.sender, msg.sender, _amount, _l2Gas, _data);
+ }
+
+ /**
+ * @inheritdoc IL1ERC20Bridge
+ */
+ function depositERC20To(
+ .
+ .
+ .
+ ) external virtual {
+ _initiateERC20Deposit(_l1Token, _l2Token, msg.sender, _to, _amount, _l2Gas, _data);
+ }
+```
+
+这两个函数是 `_initiateERC20Deposit` 的包装器,该函数处理实际的 ERC-20 存款。
+
+```solidity
+ /**
+ * @dev Performs the logic for deposits by informing the L2 Deposited Token
+ * contract of the deposit and calling a handler to lock the L1 funds. (e.g. transferFrom)
+ *
+ * @param _l1Token Address of the L1 ERC20 we are depositing
+ * @param _l2Token Address of the L1 respective L2 ERC20
+ * @param _from Account to pull the deposit from on L1
+ * @param _to Account to give the deposit to on L2
+ * @param _amount Amount of the ERC20 to deposit.
+ * @param _l2Gas Gas limit required to complete the deposit on L2.
+ * @param _data Optional data to forward to L2. This data is provided
+ * solely as a convenience for external contracts. Aside from enforcing a maximum
+ * length, these contracts provide no guarantees about its content.
+ */
+ function _initiateERC20Deposit(
+ address _l1Token,
+ address _l2Token,
+ address _from,
+ address _to,
+ uint256 _amount,
+ uint32 _l2Gas,
+ bytes calldata _data
+ ) internal {
+```
+
+此函数类似于上面的 `_initiateETHDeposit`,但有一些重要区别。 第一个区别是此函数接收代币地址和转账金额作为参数。 对于以太币,对链桥的调用已经包括将资产转账到链桥帐户 (`msg.value`)。
+
+```solidity
+ // When a deposit is initiated on L1, the L1 Bridge transfers the funds to itself for future
+ // withdrawals. safeTransferFrom also checks if the contract has code, so this will fail if
+ // _from is an EOA or address(0).
+ // slither-disable-next-line reentrancy-events, reentrancy-benign
+ IERC20(_l1Token).safeTransferFrom(_from, address(this), _amount);
+```
+
+ERC-20 代币的转账过程不同以太币:
+
+1. 用户 (`_from`) 提供费用让链桥转移适当的代币。
+2. 用户使用代币合约的地址、金额等调用链桥。
+3. 在存款过程中,链桥转移代币(给自己)。
+
+第一步可能和最后两步发生在不同的交易中。 但是,前台运行不是问题,因为调用 `_initiateERC20Deposit` 的两个函数(`depositERC20` 和 `depositERC20To`)只将 `msg.sender` 作为 `_from` 参数调用该函数。
+
+```solidity
+ // Construct calldata for _l2Token.finalizeDeposit(_to, _amount)
+ bytes memory message = abi.encodeWithSelector(
+ IL2ERC20Bridge.finalizeDeposit.selector,
+ _l1Token,
+ _l2Token,
+ _from,
+ _to,
+ _amount,
+ _data
+ );
+
+ // Send calldata into L2
+ // slither-disable-next-line reentrancy-events, reentrancy-benign
+ sendCrossDomainMessage(l2TokenBridge, _l2Gas, message);
+
+ // slither-disable-next-line reentrancy-benign
+ deposits[_l1Token][_l2Token] = deposits[_l1Token][_l2Token] + _amount;
+```
+
+将存入的代币数量添加到 `deposits` 数据结构中。 第二层上可能有多个地址对应于同一个第一层 ERC-20 代币,因此仅使用链桥的第一层 ERC-20 代币余额来跟踪存款是不够的。
+
+```solidity
+
+ // slither-disable-next-line reentrancy-events
+ emit ERC20DepositInitiated(_l1Token, _l2Token, _from, _to, _amount, _data);
+ }
+
+ /*************************
+ * Cross-chain Functions *
+ *************************/
+
+ /**
+ * @inheritdoc IL1StandardBridge
+ */
+ function finalizeETHWithdrawal(
+ address _from,
+ address _to,
+ uint256 _amount,
+ bytes calldata _data
+```
+
+第二层链桥向第二层跨域信使发送信息,使得第一层跨域信使调用此函数(当然是在[完成信息的交易](https://community.optimism.io/docs/developers/bridge/messaging/#fees-for-l2-%E2%87%92-l1-transactions)在第一层上提交以后)。
+
+```solidity
+ ) external onlyFromCrossDomainAccount(l2TokenBridge) {
+```
+
+确保这是一个*合法*信息,来自跨域信使并源自第二层代币链桥。 此函数用于从链桥中提取以太币,因此我们必须确保它仅由授权调用者调用。
+
+```solidity
+ // slither-disable-next-line reentrancy-events
+ (bool success, ) = _to.call{ value: _amount }(new bytes(0));
+```
+
+转移以太币的方式是用 `msg.value` 中 wei 的数量调用接收者。
+
+```solidity
+ require(success, "TransferHelper::safeTransferETH: ETH transfer failed");
+
+ // slither-disable-next-line reentrancy-events
+ emit ETHWithdrawalFinalized(_from, _to, _amount, _data);
+```
+
+触发一个关于提款的事件。
+
+```solidity
+ }
+
+ /**
+ * @inheritdoc IL1ERC20Bridge
+ */
+ function finalizeERC20Withdrawal(
+ address _l1Token,
+ address _l2Token,
+ address _from,
+ address _to,
+ uint256 _amount,
+ bytes calldata _data
+ ) external onlyFromCrossDomainAccount(l2TokenBridge) {
+```
+
+此函数类似于上面的 `finalizeETHWithdrawal`,但对 ERC-20 代币进行了必要的更改。
+
+```solidity
+ deposits[_l1Token][_l2Token] = deposits[_l1Token][_l2Token] - _amount;
+```
+
+更新 `deposits` 数据结构。
+
+```solidity
+
+ // When a withdrawal is finalized on L1, the L1 Bridge transfers the funds to the withdrawer
+ // slither-disable-next-line reentrancy-events
+ IERC20(_l1Token).safeTransfer(_to, _amount);
+
+ // slither-disable-next-line reentrancy-events
+ emit ERC20WithdrawalFinalized(_l1Token, _l2Token, _from, _to, _amount, _data);
+ }
+
+
+ /*****************************
+ * Temporary - Migrating ETH *
+ *****************************/
+
+ /**
+ * @dev Adds ETH balance to the account. This is meant to allow for ETH
+ * to be migrated from an old gateway to a new gateway.
+ * NOTE: This is left for one upgrade only so we are able to receive the migrated ETH from the
+ * old contract
+ */
+ function donateETH() external payable {}
+}
+```
+
+对于早期实现的链桥, 当我们从该实现转移到当前实现时,我们必须转移所有资产。 ERC-20 代币可以转移。 但是,要将以太币转账到合约,您需要得到该合约的批准,`donateETH` 就起到这一作用。
+
+## 第二层上的 ERC-20 代币 {#erc-20-tokens-on-l2}
+
+为了使 ERC-20 代币适合标准链桥,它需要允许标准链桥并且*只*允许标准链桥铸造代币。 这是必要的,因为链桥需要确保在乐观解决方案上流通的代币数量和锁定在第一层链桥合约内的代币数量相同。 如果第二层上的代币太多,一些用户将无法将他们的资产桥接到第一层。 我们实际上将重新建立[部分准备金银行制度](https://www.investopedia.com/terms/f/fractionalreservebanking.asp),而不是一个受信任的链桥。 如果第一层上的代币太多,其中一些代币将永远锁定在链桥合约中,因为不销毁第二层代币就无法释放它们。
+
+### IL2StandardERC20 {#il2standarderc20}
+
+第二层上使用标准链桥的每个 ERC-20 代币都需要提供[此接口](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/standards/IL2StandardERC20.sol),它具有标准链桥需要的函数和事件。
+
+```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.9;
+
+import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
+```
+
+[标准 ERC-20 接口](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol)不包含 `mint` 和 `burn` 函数。 [ERC-20 标准](https://eips.ethereum.org/EIPS/eip-20)不需要这些方法,它未指定创建和销毁代币的机制。
+
+```solidity
+import { IERC165 } from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
+```
+
+[ERC-165 接口](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/introspection/IERC165.sol)用于指定一个合约提供哪些函数。 [您可以在此处参阅该标准](https://eips.ethereum.org/EIPS/eip-165)。
+
+```solidity
+interface IL2StandardERC20 is IERC20, IERC165 {
+ function l1Token() external returns (address);
+```
+
+此函数提供桥接到此合约的第一层代币的地址。 请注意,我们在相反方向没有类似函数。 我们需要能够桥接任何第一层代币,无论第二层支持是否在实施计划。
+
+```solidity
+
+ function mint(address _to, uint256 _amount) external;
+
+ function burn(address _from, uint256 _amount) external;
+
+ event Mint(address indexed _account, uint256 _amount);
+ event Burn(address indexed _account, uint256 _amount);
+}
+```
+
+铸造(创建)和燃烧(销毁)代币的函数和事件。 链桥应该是唯一可以运行这些函数的实体,以确保代币数量正确(等于锁定在第一层上的代币数量)。
+
+### L2StandardERC20 {#L2StandardERC20}
+
+[这是我们对 `IL2StandardERC20` 接口的实现](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/standards/L2StandardERC20.sol)。 除非您需要某种自定义逻辑,否则您应该使用它。
+
+```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.9;
+
+import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
+```
+
+[OpenZeppelin ERC-20 合约](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol)。 乐观解决方案不相信重新编写合约,尤其是合约经过严格审计并且需要足够的信任来持有资产时。
+
+```solidity
+import "./IL2StandardERC20.sol";
+
+contract L2StandardERC20 is IL2StandardERC20, ERC20 {
+ address public l1Token;
+ address public l2Bridge;
+```
+
+上面是两个额外的配置参数,我们需要它们但 ERC-20 通常不需要。
+
+```solidity
+
+ /**
+ * @param _l2Bridge Address of the L2 standard bridge.
+ * @param _l1Token Address of the corresponding L1 token.
+ * @param _name ERC20 name.
+ * @param _symbol ERC20 symbol.
+ */
+ constructor(
+ address _l2Bridge,
+ address _l1Token,
+ string memory _name,
+ string memory _symbol
+ ) ERC20(_name, _symbol) {
+ l1Token = _l1Token;
+ l2Bridge = _l2Bridge;
+ }
+```
+
+首先调用从 (`ERC20(_name, _symbol)`) 继承的合约的构造函数,然后设置我们自己的变量。
+
+```solidity
+
+ modifier onlyL2Bridge() {
+ require(msg.sender == l2Bridge, "Only L2 Bridge can mint and burn");
+ _;
+ }
+
+
+ // slither-disable-next-line external-function
+ function supportsInterface(bytes4 _interfaceId) public pure returns (bool) {
+ bytes4 firstSupportedInterface = bytes4(keccak256("supportsInterface(bytes4)")); // ERC165
+ bytes4 secondSupportedInterface = IL2StandardERC20.l1Token.selector ^
+ IL2StandardERC20.mint.selector ^
+ IL2StandardERC20.burn.selector;
+ return _interfaceId == firstSupportedInterface || _interfaceId == secondSupportedInterface;
+ }
+```
+
+这是 [ERC-165](https://eips.ethereum.org/EIPS/eip-165) 的工作方式。 每个接口都是许多受支持的函数,并被标识为这些函数的[应用程序二进制接口函数选择器](https://docs.soliditylang.org/en/v0.8.12/abi-spec.html#function-selector)的[异或](https://en.wikipedia.org/wiki/Exclusive_or)。
+
+第二层链桥使用 ERC-165 作为完整性检查机制,确保它发送资产的 ERC-20 合约是 `IL2StandardERC20`。
+
+**注:**没有任何东西可以阻止流氓合约为 `supportsInterface` 提供虚假应答,所以这是一种完整性检查机制*而不是*安全机制。
+
+```solidity
+ // slither-disable-next-line external-function
+ function mint(address _to, uint256 _amount) public virtual onlyL2Bridge {
+ _mint(_to, _amount);
+
+ emit Mint(_to, _amount);
+ }
+
+ // slither-disable-next-line external-function
+ function burn(address _from, uint256 _amount) public virtual onlyL2Bridge {
+ _burn(_from, _amount);
+
+ emit Burn(_from, _amount);
+ }
+}
+```
+
+只允许第二层链桥铸造和销毁资产。
+
+`_mint` 和 `_burn` 实际上是在 [OpenZeppelin ERC-20 合约](https://ethereum.org/en/developers/tutorials/erc20-annotated-code/#the-_mint-and-_burn-functions-_mint-and-_burn)中定义的。 该合约只是没有将它们暴露在外部,因为铸造和销毁代币的条件与 ERC-20 使用方式的数量一样多变。
+
+## 第二层链桥代码 {#l2-bridge-code}
+
+这是在乐观解决方案上运行链桥的代码。 [此合约源自此处](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L2/messaging/L2StandardBridge.sol)。
+
+```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.9;
+
+/* Interface Imports */
+import { IL1StandardBridge } from "../../L1/messaging/IL1StandardBridge.sol";
+import { IL1ERC20Bridge } from "../../L1/messaging/IL1ERC20Bridge.sol";
+import { IL2ERC20Bridge } from "./IL2ERC20Bridge.sol";
+```
+
+[IL2ERC20Bridge](https://github.com/ethereum-optimism/optimism/blob/develop/packages/contracts/contracts/L2/messaging/IL2ERC20Bridge.sol) 接口与我们上面看到的[第一层等效](#IL1ERC20Bridge)接口非常相似。 有两个明显区别:
+
+1. 在第一层上您发起存款并完成提款。 在此处您发起提款并完成存款。
+2. 在第一层上,有必要区分以太币和 ERC-20 代币。 在第二层上,我们可以对两者使用相同的函数,因为在乐观解决方案上的以太币余额会作为地址为 [0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000](https://optimistic.etherscan.io/address/0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000) 的 ERC-20 代币在内部处理。
+
+```solidity
+/* Library Imports */
+import { ERC165Checker } from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol";
+import { CrossDomainEnabled } from "../../libraries/bridge/CrossDomainEnabled.sol";
+import { Lib_PredeployAddresses } from "../../libraries/constants/Lib_PredeployAddresses.sol";
+
+/* Contract Imports */
+import { IL2StandardERC20 } from "../../standards/IL2StandardERC20.sol";
+
+/**
+ * @title L2StandardBridge
+ * @dev The L2 Standard bridge is a contract which works together with the L1 Standard bridge to
+ * enable ETH and ERC20 transitions between L1 and L2.
+ * This contract acts as a minter for new tokens when it hears about deposits into the L1 Standard
+ * bridge.
+ * This contract also acts as a burner of the tokens intended for withdrawal, informing the L1
+ * bridge to release L1 funds.
+ */
+contract L2StandardBridge is IL2ERC20Bridge, CrossDomainEnabled {
+ /********************************
+ * External Contract References *
+ ********************************/
+
+ address public l1TokenBridge;
+```
+
+跟踪第一层链桥的地址。 请注意,与第一层对应项相比,此处我们*需要*该变量。 第一层链桥的地址事先不为人知。
+
+```solidity
+
+ /***************
+ * Constructor *
+ ***************/
+
+ /**
+ * @param _l2CrossDomainMessenger Cross-domain messenger used by this contract.
+ * @param _l1TokenBridge Address of the L1 bridge deployed to the main chain.
+ */
+ constructor(address _l2CrossDomainMessenger, address _l1TokenBridge)
+ CrossDomainEnabled(_l2CrossDomainMessenger)
+ {
+ l1TokenBridge = _l1TokenBridge;
+ }
+
+ /***************
+ * Withdrawing *
+ ***************/
+
+ /**
+ * @inheritdoc IL2ERC20Bridge
+ */
+ function withdraw(
+ address _l2Token,
+ uint256 _amount,
+ uint32 _l1Gas,
+ bytes calldata _data
+ ) external virtual {
+ _initiateWithdrawal(_l2Token, msg.sender, msg.sender, _amount, _l1Gas, _data);
+ }
+
+ /**
+ * @inheritdoc IL2ERC20Bridge
+ */
+ function withdrawTo(
+ address _l2Token,
+ address _to,
+ uint256 _amount,
+ uint32 _l1Gas,
+ bytes calldata _data
+ ) external virtual {
+ _initiateWithdrawal(_l2Token, msg.sender, _to, _amount, _l1Gas, _data);
+ }
+```
+
+这两个函数发起提款。 请注意,无需指定第一层代币地址。 第二层代币需要告诉我们第一层代币的地址。
+
+```solidity
+
+ /**
+ * @dev Performs the logic for withdrawals by burning the token and informing
+ * the L1 token Gateway of the withdrawal.
+ * @param _l2Token Address of L2 token where withdrawal is initiated.
+ * @param _from Account to pull the withdrawal from on L2.
+ * @param _to Account to give the withdrawal to on L1.
+ * @param _amount Amount of the token to withdraw.
+ * @param _l1Gas Unused, but included for potential forward compatibility considerations.
+ * @param _data Optional data to forward to L1. This data is provided
+ * solely as a convenience for external contracts. Aside from enforcing a maximum
+ * length, these contracts provide no guarantees about its content.
+ */
+ function _initiateWithdrawal(
+ address _l2Token,
+ address _from,
+ address _to,
+ uint256 _amount,
+ uint32 _l1Gas,
+ bytes calldata _data
+ ) internal {
+ // When a withdrawal is initiated, we burn the withdrawer's funds to prevent subsequent L2
+ // usage
+ // slither-disable-next-line reentrancy-events
+ IL2StandardERC20(_l2Token).burn(msg.sender, _amount);
+```
+
+请注意,我们*不*依赖 `_from` 参数,而是依赖更难伪造的 `msg.sender`(据我所知它无法伪造)。
+
+```solidity
+
+ // Construct calldata for l1TokenBridge.finalizeERC20Withdrawal(_to, _amount)
+ // slither-disable-next-line reentrancy-events
+ address l1Token = IL2StandardERC20(_l2Token).l1Token();
+ bytes memory message;
+
+ if (_l2Token == Lib_PredeployAddresses.OVM_ETH) {
+```
+
+在第一层上,有必要区分以太币和 ERC-20。
+
+```solidity
+ message = abi.encodeWithSelector(
+ IL1StandardBridge.finalizeETHWithdrawal.selector,
+ _from,
+ _to,
+ _amount,
+ _data
+ );
+ } else {
+ message = abi.encodeWithSelector(
+ IL1ERC20Bridge.finalizeERC20Withdrawal.selector,
+ l1Token,
+ _l2Token,
+ _from,
+ _to,
+ _amount,
+ _data
+ );
+ }
+
+ // Send message up to L1 bridge
+ // slither-disable-next-line reentrancy-events
+ sendCrossDomainMessage(l1TokenBridge, _l1Gas, message);
+
+ // slither-disable-next-line reentrancy-events
+ emit WithdrawalInitiated(l1Token, _l2Token, msg.sender, _to, _amount, _data);
+ }
+
+ /************************************
+ * Cross-chain Function: Depositing *
+ ************************************/
+
+ /**
+ * @inheritdoc IL2ERC20Bridge
+ */
+ function finalizeDeposit(
+ address _l1Token,
+ address _l2Token,
+ address _from,
+ address _to,
+ uint256 _amount,
+ bytes calldata _data
+```
+
+此函数由 `L1StandardBridge` 调用。
+
+```solidity
+ ) external virtual onlyFromCrossDomainAccount(l1TokenBridge) {
+```
+
+确保信息来源是合法的。 这很重要,因为此函数调用 `_mint` 并且可用于提供链桥在第一层所拥有代币范围外的代币。
+
+```solidity
+ // Check the target token is compliant and
+ // verify the deposited token on L1 matches the L2 deposited token representation here
+ if (
+ // slither-disable-next-line reentrancy-events
+ ERC165Checker.supportsInterface(_l2Token, 0x1d1d8b63) &&
+ _l1Token == IL2StandardERC20(_l2Token).l1Token()
+```
+
+完整性检查:
+
+1. 支持正确的接口
+2. 第二层 ERC-20 合约的第一层地址与第一层的代币来源相符
+
+```solidity
+ ) {
+ // When a deposit is finalized, we credit the account on L2 with the same amount of
+ // tokens.
+ // slither-disable-next-line reentrancy-events
+ IL2StandardERC20(_l2Token).mint(_to, _amount);
+ // slither-disable-next-line reentrancy-events
+ emit DepositFinalized(_l1Token, _l2Token, _from, _to, _amount, _data);
+```
+
+如果完整性检查通过,则完成存款:
+
+1. 铸造代币
+2. 触发恰当的事件
+
+```solidity
+ } else {
+ // Either the L2 token which is being deposited-into disagrees about the correct address
+ // of its L1 token, or does not support the correct interface.
+ // This should only happen if there is a malicious L2 token, or if a user somehow
+ // specified the wrong L2 token address to deposit into.
+ // In either case, we stop the process here and construct a withdrawal
+ // message so that users can get their funds out in some cases.
+ // There is no way to prevent malicious token contracts altogether, but this does limit
+ // user error and mitigate some forms of malicious contract behavior.
+```
+
+如果用户由于使用错误的第二层代币地址犯了可检测到的错误,我们希望取消存款并在第一层上返还代币。 在第二层我们可以做到这一点的唯一方法是等到缺陷质询期到来后发送一条信息,但对用户来说这要比永久失去代币好得多。
+
+```solidity
+ bytes memory message = abi.encodeWithSelector(
+ IL1ERC20Bridge.finalizeERC20Withdrawal.selector,
+ _l1Token,
+ _l2Token,
+ _to, // switched the _to and _from here to bounce back the deposit to the sender
+ _from,
+ _amount,
+ _data
+ );
+
+ // Send message up to L1 bridge
+ // slither-disable-next-line reentrancy-events
+ sendCrossDomainMessage(l1TokenBridge, 0, message);
+ // slither-disable-next-line reentrancy-events
+ emit DepositFailed(_l1Token, _l2Token, _from, _to, _amount, _data);
+ }
+ }
+}
+```
+
+## 总结 {#conclusion}
+
+标准链桥是最灵活的资产转移机制。 然而,由于它非常笼统,因而并非总是可供使用的最简便机制。 特别是对于提款,大多数用户喜欢使用[第三方链桥](https://www.optimism.io/apps/bridges),这些链桥不用等待质询期并且不需要进行默克尔证明就能完成提款。
+
+通常,这些链桥的工作方式是在第一层上拥有资产,而且它们会立即为这些资产提供一小笔费用(通常少于标准链桥提款的燃料费用)。 当链桥(或运行链桥的人)预计第一层资产短缺时,它将从第二层转移足够的资产。 由于这些提款的数额非常庞大,大笔的提款费用经分期摊销后,所占百分比要小得多。
+
+希望本文能帮助您更多地了解二层网络如何工作以及如何编写清晰安全的 Solidity 代码。
diff --git a/src/content/translations/zh/developers/tutorials/reverse-engineering-a-contract/index.md b/src/content/translations/zh/developers/tutorials/reverse-engineering-a-contract/index.md
new file mode 100644
index 00000000000..fe624e41be3
--- /dev/null
+++ b/src/content/translations/zh/developers/tutorials/reverse-engineering-a-contract/index.md
@@ -0,0 +1,746 @@
+---
+title: "对合约进行逆向工程"
+description: 没有源代码时如何理解合约
+author: Ori Pomerantz
+lang: zh
+tags:
+ - "以太坊虚拟机"
+ - "操作码"
+ - "逆向工程"
+ - "反编译器"
+skill: advanced
+published: 2021-12-30
+---
+
+## 简介 {#introduction}
+
+_区块链上没有秘密_,发生的一切都是持续的、可验证的、公开的。 理想情况下,[应将智能合约的源代码发布到 Etherscan 上进行验证](https://etherscan.io/address/0xb8901acb165ed027e32754e0ffe830802919727f#code)。 然而,[情况并非总是如此](https://etherscan.io/address/0x2510c039cc3b061d79e564b38836da87e31b342f#code)。 在本文中,你将研究一份没有源代码的合约 [`0x2510c039cc3b061d79e564b38836da87e31b342f`](https://etherscan.io/address/0x2510c039cc3b061d79e564b38836da87e31b342f),从而学习如何对合约进行逆向工程。
+
+有一些反编译器,但它们不一定能提供[有用的结果](https://etherscan.io/bytecode-decompiler?a=0x2510c039cc3b061d79e564b38836da87e31b342f)。 在本文中,你将从[操作码](https://github.com/wolflo/evm-opcodes)入手,学习如何对合约手动进行逆向工程并理解合约,以及如何解读反编译器生成的结果。
+
+为了能够理解本文,你应当已经了解以太坊虚拟机基础知识,并至少对以太坊虚拟机汇编器有几分熟悉。 [点击此处了解这些主题](https://medium.com/mycrypto/the-ethereum-virtual-machine-how-does-it-work-9abac2b7c9e)。
+
+## 准备可执行代码 {#prepare-the-executable-code}
+
+你可以在 Etherscan 上获得合约的操作码,操作如下:点击 **Contract** 选项卡,然后**切换至 Opcodes 视图**。 你将看到每行有一条操作码。
+
+![Etherscan 上的 Opcode 视图](opcode-view.png)
+
+但是,为了能够理解跳转,你需要知道每条操作码在代码中的位置。 为此,一种方式是打开 Google Spreadsheet 并把操作码粘贴到 C 列。[你可以创建这个已制作好的电子表格的副本,从而跳过以下步骤](https://docs.google.com/spreadsheets/d/1tKmTJiNjUwHbW64wCKOSJxHjmh0bAUapt6btUYE7kDA/edit?usp=sharing)。
+
+下一步是获得正确的操作码位置,以便我们能够理解跳转。 我们将操作码大小放入 B 列,操作码位置(十六进制形式)放入 A 列。在单元格 `B1` 中输入下面的函数,然后复制并粘贴到 B 列其余单元格中,直到代码结束。 完成后,你就可以隐藏 B 列。
+
+```
+=1+IF(REGEXMATCH(C1,"PUSH"),REGEXEXTRACT(C1,"PUSH(\d+)"),0)
+```
+
+首先该函数给操作码增加一个字节,然后查找 `PUSH` 操作码。 Push 操作码比较特殊,因为它们需要额外的字节表示压入的值。 如果操作码是 `PUSH`,我们提取该字节的数值并在函数中增加相应的值。
+
+在 `A1` 单元格中输入第一个偏移量 0。 然后在 `A2` 单元格中,输入下面的函数,并再次将它复制粘贴到 A 列其余他单元格中:
+
+```
+=dec2hex(hex2dec(A1)+B1)
+```
+
+我们需要此函数提供十六进制值,因为跳转(`JUMP` 和 `JUMPI`)之前压入的值也是十六进制的。
+
+## 入口点 (0x00) {#the-entry-point-0x00}
+
+智能合约总会从第一个字节开始执行。 下面是代码的开始部分:
+
+| 偏移量 | 操作码 | 堆栈(在操作码之后) |
+| -----: | ------------ | -------------------- |
+| 0 | PUSH1 0x80 | 0x80 |
+| 2 | PUSH1 0x40 | 0x40, 0x80 |
+| 4 | MSTORE | 空 |
+| 5 | PUSH1 0x04 | 0x04 |
+| 7 | CALLDATASIZE | CALLDATASIZE 0x04 |
+| 8 | LT | CALLDATASIZE<4 |
+| 9 | PUSH2 0x005e | 0x5E CALLDATASIZE<4 |
+| C | JUMPI | 空 |
+
+这段代码执行了两项操作:
+
+1. 将 0x80 作为一个 32 字节的值写入内存地址 0x40-0x5F(0x80 存储在 0x5F,而 0x40-0x5E 全部都是零)。
+2. 读取 calldata 长度。 通常,以太坊合约的调用数据遵循[应用程序二进制接口](https://docs.soliditylang.org/en/v0.8.10/abi-spec.html),该接口至少需要四个字节用于函数选择器。 如果调用数据长度小于四个字节,将跳转至 0x5E。
+
+![这部分代码的流程图](flowchart-entry.png)
+
+### 0x5E 处的处理程序(用于非应用程序二进制接口数据调用) {#the-handler-at-0x5e-for-non-abi-call-data}
+
+| 偏移量 | 操作码 |
+| -----: | ------------ |
+| 5E | JUMPDEST |
+| 5F | CALLDATASIZE |
+| 60 | PUSH2 0x007c |
+| 63 | JUMPI |
+
+此代码片段以 `JUMPDEST` 开头。 如果跳转到的操作码不是 `JUMPDEST`,以太坊虚拟机程序会抛出异常。 然后它查看 CALLDATASIZE,如果为“true”(即非零),则跳转到 0x7C。 我们将在下面讨论。
+
+| 偏移量 | 操作码 | 堆栈(在操作码之后) |
+| -----: | ---------- | ---------------------------------------------------------------------------------------- |
+| 64 | CALLVALUE | 调用提供的 [Wei](https://ethereum.org/en/glossary/#wei)。 在 Solidity 中称为 `msg.value` |
+| 65 | PUSH1 0x06 | 6 CALLVALUE |
+| 67 | PUSH1 0x00 | 0 6 CALLVALUE |
+| 69 | DUP3 | CALLVALUE 0 6 CALLVALUE |
+| 6A | DUP3 | 6 CALLVALUE 0 6 CALLVALUE |
+| 6B | SLOAD | Storage[6] CALLVALUE 0 6 CALLVALUE |
+
+因此,当没有调用数据时,我们读取 Storage [6] 中的值。 我们还不知道这个值是什么,但我们可以查找合约收到的没有调用数据的交易。 仅转账以太币而没有任何调用数据(因此没有方法)的交易在 Etherscan 中具有方法 `Transfer`。 事实上,[合约收到的第一笔交易](https://etherscan.io/tx/0xeec75287a583c36bcc7ca87685ab41603494516a0f5986d18de96c8e630762e7)就是转账。
+
+如果我们查看该交易并点击 **Click to see More**,我们会看到调用数据(称为输入数据)实际上是空的 (`0x`)。 另请注意,值为 1.559 ETH,稍后将介绍。
+
+![调用数据是空的](calldata-empty.png)
+
+接下来,点击 **State** 选项卡并展开我们正在进行逆向工程的合约 (0x2510...)。 可以看到在交易过程中 `Storage[6]` 确实发生了变化,如果你将十六进制更改为**数值**,就会看到该值变成了 1,559,000,000,000,000,000(为了清楚起见,这里添加了逗号),即转账数额(以 wei 为单位),对应于下一个合约价值。
+
+![Storage[6] 中的变化](storage6.png)
+
+如果我们查看同一段时间内[其他 `Transfer` 交易](https://etherscan.io/tx/0xf708d306de39c422472f43cb975d97b66fd5d6a6863db627067167cbf93d84d1#statechange)引起的状态变化,就会发现 `Storage[6]` 跟踪一段时间内的合约价值。 现在,我们将其称为 `Value*`。 星号 (`*`) 提醒我们,我们还不*知道*这个变量的作用,但它不会只是跟踪合约价值,因为当你可以使用 `ADDRESS BALANCE` 获取帐户余额时,无需使用非常昂贵的存储。 第一个操作码压入合约地址。 第二个操作码读取堆栈顶部的地址并将其替换为该地址的余额。
+
+| 偏移量 | 操作码 | 堆栈 |
+| -----: | ------------ | ------------------------------------------- |
+| 6C | PUSH2 0x0075 | 0x75 Value\* CALLVALUE 0 6 CALLVALUE |
+| 6F | SWAP2 | CALLVALUE Value\* 0x75 0 6 CALLVALUE |
+| 70 | SWAP1 | Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 71 | PUSH2 0x01a7 | 0x01A7 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 74 | JUMP | |
+
+我们将继续在跳转目标处跟踪此代码。
+
+| 偏移量 | 操作码 | 堆栈 |
+| -----: | ---------- | ----------------------------------------------------------- |
+| 1A7 | JUMPDEST | Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1A8 | PUSH1 0x00 | 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1AA | DUP3 | CALLVALUE 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1AB | NOT | 2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+
+`NOT` 是按位运算符,因此它反转调用值中每一位的值。
+
+| 偏移量 | 操作码 | 堆栈 |
+| -----: | ------------ | --------------------------------------------------------------------------- |
+| 1AC | DUP3 | Value\* 2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1AD | GT | Value\*>2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1AE | ISZERO | Value\*<=2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1AF | PUSH2 0x01df | 0x01DF Value\*<=2^256-CALLVALUE-1 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1B2 | JUMPI | |
+
+如果 `Value*` 小于 2^256-CALLVALUE-1 或等于它,则跳转。 这看起来像是防止溢出的逻辑。 事实上,我们看到在偏移量 0x01DE 处进行了一些无意义的操作(例如,写入内存后马上删除)后,如果检测到溢出,合约将回滚,这是正常行为。
+
+请注意,这种溢出极不可能发生,因为它需要调用值加上 `Value*`,与 2^256 wei 相当,大约 10^59 个以太币。 [在撰写本文时,以太币的总供应量不到两亿个](https://etherscan.io/stat/supply)。
+
+| 偏移量 | 操作码 | 堆栈 |
+| -----: | -------- | ----------------------------------------- |
+| 1DF | JUMPDEST | 0x00 Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1E0 | POP | Value\* CALLVALUE 0x75 0 6 CALLVALUE |
+| 1E1 | ADD | Value\*+CALLVALUE 0x75 0 6 CALLVALUE |
+| 1E2 | SWAP1 | 0x75 Value\*+CALLVALUE 0 6 CALLVALUE |
+| 1E3 | JUMP | |
+
+如果执行到此处,获取 `Value* + CALLVALUE` 并跳转到偏移量 0x75 处。
+
+| 偏移量 | 操作码 | 堆栈 |
+| -----: | -------- | ------------------------------- |
+| 75 | JUMPDEST | Value\*+CALLVALUE 0 6 CALLVALUE |
+| 76 | SWAP1 | 0 Value\*+CALLVALUE 6 CALLVALUE |
+| 77 | SWAP2 | 6 Value\*+CALLVALUE 0 CALLVALUE |
+| 78 | SSTORE | 0 CALLVALUE |
+
+如果执行到此处(要求调用数据为空),我们将调用值添加到 `Value*`。 这与我们所说的 `Transfer` 交易的操作是一致的。
+
+| 偏移量 | 操作码 |
+| -----: | ------ |
+| 79 | POP |
+| 7A | POP |
+| 7B | STOP |
+
+最后,清除堆栈(并非必需)并表明交易成功结束。
+
+综上所述,初始代码的流程图如下所示。
+
+![入口点流程图](flowchart-entry.png)
+
+## 0x7C 的处理程序 {#the-handler-at-0x7c}
+
+我特意没有将此处理程序的作用写入标题中。 重点不是教你这个特定的合约如何运作,而是如何对合约进行逆向工程。 你和我一样,都通过观察代码了解该合约的作用。
+
+我们从多个位置执行到此处:
+
+- 如果调用数据包含 1、2 或 3 个字节(从偏移量 0x63 处开始)
+- 如果方法签名未知(从偏移量 0x42 和 0x5D 处开始)
+
+| 偏移量 | 操作码 | 堆栈 |
+| -----: | ------------ | -------------------- |
+| 7C | JUMPDEST | |
+| 7D | PUSH1 0x00 | 0x00 |
+| 7F | PUSH2 0x009d | 0x9D 0x00 |
+| 82 | PUSH1 0x03 | 0x03 0x9D 0x00 |
+| 84 | SLOAD | Storage[3] 0x9D 0x00 |
+
+这是另一个存储单元,我在任何交易中都找不到它,所以很难知道它的含义。 下面的代码将使其更明确。
+
+| 偏移量 | 操作码 | 堆栈 |
+| -----: | ------------------------------------------------- | ------------------------------- |
+| 85 | PUSH20 0xffffffffffffffffffffffffffffffffffffffff | 0xff....ff Storage[3] 0x9D 0x00 |
+| 9A | AND | Storage[3]-as-address 0x9D 0x00 |
+
+上面的操作码将我们从 Storage[3] 读取的值截断为 160 位,即以太坊地址的长度。
+
+| 偏移量 | 操作码 | 堆栈 |
+| -----: | ------ | ------------------------------- |
+| 9B | SWAP1 | 0x9D Storage[3]-as-address 0x00 |
+| 9C | JUMP | Storage[3]-as-address 0x00 |
+
+上面的跳转是多余的,因为我们要执行下一个操作码。 这个代码远不如它本应该的那样具有燃料效率。
+
+| 偏移量 | 操作码 | 堆栈 |
+| -----: | ---------- | ------------------------------- |
+| 9D | JUMPDEST | Storage[3]-as-address 0x00 |
+| 9E | SWAP1 | 0x00 Storage[3]-as-address |
+| 9F | POP | Storage[3]-as-address |
+| A0 | PUSH1 0x40 | 0x40 Storage[3]-as-address |
+| A2 | MLOAD | Mem[0x40] Storage[3]-as-address |
+
+在代码的最开始,我们将 Mem[0x40] 设置为 0x80。 如果我们在后面部分查找 0x40,会发现我们没有更改它 - 所以我们可以假设它是 0x80。
+
+| 偏移量 | 操作码 | 堆栈 |
+| -----: | ------------ | ------------------------------------------------- |
+| A3 | CALLDATASIZE | CALLDATASIZE 0x80 Storage[3]-as-address |
+| A4 | PUSH1 0x00 | 0x00 CALLDATASIZE 0x80 Storage[3]-as-address |
+| A6 | DUP3 | 0x80 0x00 CALLDATASIZE 0x80 Storage[3]-as-address |
+| A7 | CALLDATACOPY | 0x80 Storage[3]-as-address |
+
+将所有调用数据复制到内存,从 0x80 处开始。
+
+| 偏移量 | 操作码 | 堆栈 |
+| -----: | ------------- | -------------------------------------------------------------------------------- |
+| A8 | PUSH1 0x00 | 0x00 0x80 Storage[3]-as-address |
+| AA | DUP1 | 0x00 0x00 0x80 Storage[3]-as-address |
+| AB | CALLDATASIZE | CALLDATASIZE 0x00 0x00 0x80 Storage[3]-as-address |
+| AC | DUP4 | 0x80 CALLDATASIZE 0x00 0x00 0x80 Storage[3]-as-address |
+| AD | DUP6 | Storage[3]-as-address 0x80 CALLDATASIZE 0x00 0x00 0x80 Storage[3]-as-address |
+| AE | GAS | GAS Storage[3]-as-address 0x80 CALLDATASIZE 0x00 0x00 0x80 Storage[3]-as-address |
+| AF | DELEGATE_CALL | |
+
+现在事情清楚了很多。 此合约可以作为[代理](https://blog.openzeppelin.com/proxy-patterns/),调用 Storage[3] 中的地址来完成真实的工作。 `DELEGATE_CALL` 调用另一个合约,但它保存在同一个存储中。 这意味着我们代理的受委托合约访问相同的存储空间。 调用的参数如下:
+
+- _燃料_:所有剩余的燃料
+- _调用地址_:Storage[3] 做为地址
+- _调用数据_:从 0x80 开始的 CALLDATASIZE 字节数,0x80 是我们存入初始调用数据的位置
+- _返回数据_:None (0x00 - 0x00) 我们将通过其他方式获取返回数据(见下文)
+
+| 偏移量 | 操作码 | 堆栈 |
+| -----: | -------------- | --------------------------------------------------------------------------------------------- |
+| B0 | RETURNDATASIZE | RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B1 | DUP1 | RETURNDATASIZE RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B2 | PUSH1 0x00 | 0x00 RETURNDATASIZE RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B4 | DUP5 | 0x80 0x00 RETURNDATASIZE RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B5 | RETURNDATACOPY | RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+
+此处,我们将所有返回数据复制到从 0x80 开始的内存缓冲区。
+
+| 偏移量 | 操作码 | 堆栈 |
+| -----: | ------------ | ---------------------------------------------------------------------------------------------------------------------------- |
+| B6 | DUP2 | (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B7 | DUP1 | (((call success/failure))) (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B8 | ISZERO | (((did the call fail))) (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| B9 | PUSH2 0x00c0 | 0xC0 (((did the call fail))) (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| BC | JUMPI | (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| BD | DUP2 | RETURNDATASIZE (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| BE | DUP5 | 0x80 RETURNDATASIZE (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| BF | RETURN | |
+
+因此在调用之后,我们将返回数据复制到缓冲区 0x80 - 0x80+RETURNDATASIZE,如果调用成功,我们将准确地 `RETURN` 该缓冲区。
+
+### DELEGATECALL 失败 {#delegatecall-failed}
+
+如果执行到此处,即到达 0xC0,意味着我们调用的合约已回滚。 由于我们只是该合约的代理,我们希望返回相同的数据并且也回滚。
+
+| 偏移量 | 操作码 | 堆栈 |
+| -----: | -------- | ------------------------------------------------------------------------------------------------------------------- |
+| C0 | JUMPDEST | (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| C1 | DUP2 | RETURNDATASIZE (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| C2 | DUP5 | 0x80 RETURNDATASIZE (((call success/failure))) RETURNDATASIZE (((call success/failure))) 0x80 Storage[3]-as-address |
+| C3 | REVERT | |
+
+所以我们 `REVERT` 至我们之前用于 `RETURN` 的相同缓冲区:0x80 - 0x80+RETURNDATASIZE
+
+![调用代理流程图](flowchart-proxy.png)
+
+## 应用程序二进制接口调用 {#abi-calls}
+
+如果调用数据长度为四个字节或更多,这可能是一个有效的应用程序二进制接口调用。
+
+| 偏移量 | 操作码 | 堆栈 |
+| -----: | ------------ | ------------------------------------------------- |
+| D | PUSH1 0x00 | 0x00 |
+| F | CALLDATALOAD | (((First word (256 bits) of the call data))) |
+| 10 | PUSH1 0xe0 | 0xE0 (((First word (256 bits) of the call data))) |
+| 12 | SHR | (((first 32 bits (4 bytes) of the call data))) |
+
+Etherscan 指出 `1C` 是一个未知操作码,因为[它是在 Etherscan 编写此功能后添加的](https://eips.ethereum.org/EIPS/eip-145)并且还没有更新。 [最新操作码表](https://github.com/wolflo/evm-opcodes)告诉我们这是右移操作。
+
+| 偏移量 | 操作码 | 堆栈 |
+| -----: | ---------------- | -------------------------------------------------------------------------------------------------------- |
+| 13 | DUP1 | (((呼叫数据的前 32 位(4 字节))))(((呼叫数据的前 32 位(4 字节)))) |
+| 14 | PUSH4 0x3cd8045e | 0x3CD8045E (((first 32 bits (4 bytes) of the call data))) (((first 32 bits (4 bytes) of the call data))) |
+| 19 | GT | 0x3CD8045E>first-32-bits-of-the-call-data (((first 32 bits (4 bytes) of the call data))) |
+| 1A | PUSH2 0x0043 | 0x43 0x3CD8045E>first-32-bits-of-the-call-data (((first 32 bits (4 bytes) of the call data))) |
+| 1D | JUMPI | (((first 32 bits (4 bytes) of the call data))) |
+
+通过像这样将方法签名匹配测试一分为二,平均可以省去一半的测试。 紧随其后的代码和 0x43 处的代码遵循相同的模式:`DUP1` 调用数据的前 32 位,`PUSH4 (((method signature> `,运行 `EQ` 检查是否相等,然后如果方法签名匹配,`JUMPI`。 以下是方法签名、它们的地址以及[相应的方法定义](https://www.4byte.directory/)(如果已知):
+
+| 方法 | 方法签名 | 跳转到的偏移量 |
+| -------------------------------------------------------------------------------------- | ---------- | -------------- |
+| [splitter()](https://www.4byte.directory/signatures/?bytes4_signature=0x3cd8045e) | 0x3cd8045e | 0x0103 |
+| ??? | 0x81e580d3 | 0x0138 |
+| [currentWindow()](https://www.4byte.directory/signatures/?bytes4_signature=0xba0bafb4) | 0xba0bafb4 | 0x0158 |
+| ??? | 0x1f135823 | 0x00C4 |
+| [merkleRoot()](https://www.4byte.directory/signatures/?bytes4_signature=0x2eb4a7ab) | 0x2eb4a7ab | 0x00ED |
+
+如果没有找到匹配项,代码跳转到 [0x7C 处的代理处理程序](#the-handler-at-0x7c),指望我们作为代理的合约有匹配项。
+
+![应用程序二进制接口调用流程图](flowchart-abi.png)
+
+## splitter() {#splitter}
+
+| 偏移量 | 操作码 | 堆栈 |
+| -----: | ------------ | ----------------------------- |
+| 103 | JUMPDEST | |
+| 104 | CALLVALUE | CALLVALUE |
+| 105 | DUP1 | CALLVALUE CALLVALUE |
+| 106 | ISZERO | CALLVALUE 0 CALLVALUE |
+| 107 | PUSH2 0x01df | 0x010F CALLVALUE==0 CALLVALUE |
+| 10A | JUMPI | CALLVALUE |
+| 10B | PUSH1 0x00 | 0x00 CALLVALUE |
+| 10D | DUP1 | 0x00 0x00 CALLValUE |
+| 10E | REVERT | |
+
+此函数首先检查调用没有发送任何以太币。 此函数不是 [`payable`](https://solidity-by-example.org/payable/)。 如果有人向我们发送了以太币,而那肯定是误发,我们希望 `REVERT` 以避免将此以太币放入他们无法取回的位置。
+
+| 偏移量 | 操作码 | 堆栈 |
+| -----: | ------------------------------------------------- | --------------------------------------------------------------------------- |
+| 10F | JUMPDEST | |
+| 110 | POP | |
+| 111 | PUSH1 0x03 | 0x03 |
+| 113 | SLOAD | (((Storage[3] a.k.a the contract for which we are a proxy))) |
+| 114 | PUSH1 0x40 | 0x40 (((Storage[3] a.k.a the contract for which we are a proxy))) |
+| 116 | MLOAD | 0x80 (((Storage[3] a.k.a the contract for which we are a proxy))) |
+| 117 | PUSH20 0xffffffffffffffffffffffffffffffffffffffff | 0xFF...FF 0x80 (((Storage[3] a.k.a the contract for which we are a proxy))) |
+| 12C | SWAP1 | 0x80 0xFF...FF (((Storage[3] a.k.a the contract for which we are a proxy))) |
+| 12D | SWAP2 | (((Storage[3] a.k.a the contract for which we are a proxy))) 0xFF...FF 0x80 |
+| 12E | AND | ProxyAddr 0x80 |
+| 12F | DUP2 | 0x80 ProxyAddr 0x80 |
+| 130 | MSTORE | 0x80 |
+
+0x80 现在包含代理地址
+
+| 偏移量 | 操作码 | 堆栈 |
+| -----: | ------------ | --------- |
+| 131 | PUSH1 0x20 | 0x20 0x80 |
+| 133 | ADD | 0xA0 |
+| 134 | PUSH2 0x00e4 | 0xE4 0xA0 |
+| 137 | JUMP | 0xA0 |
+
+### E4 代码 {#the-e4-code}
+
+这是我们第一次看到这些行,但它们与其他方法是共享的(见下文)。 所以我们将调用堆栈 X 中的值,记住在 `splitter()` 中此 X 的值是 0xA0。
+
+| 偏移量 | 操作码 | 堆栈 |
+| -----: | ---------- | ----------- |
+| E4 | JUMPDEST | X |
+| E5 | PUSH1 0x40 | 0x40 X |
+| E7 | MLOAD | 0x80 X |
+| E8 | DUP1 | 0x80 0x80 X |
+| E9 | SWAP2 | X 0x80 0x80 |
+| EA | SUB | X-0x80 0x80 |
+| EB | SWAP1 | 0x80 X-0x80 |
+| EC | RETURN | |
+
+因此,此代码接收堆栈 (X) 中一个内存指针,并导致合约 `RETURN` 缓冲区 0x80 - X。
+
+对于 `splitter()` 方法,将返回我们作为代理的地址。 `RETURN` 返回 0x80-0x9F 之间的缓冲区,这是我们写入此数据的位置(上面的偏移量 0x130)。
+
+## currentWindow() {#currentwindow}
+
+偏移量 0x158-0x163 中的代码与我们在 `splitter()` 中看到的 0x103-0x10E 中的代码相同(除 `JUMPI` 目标地址外),因此我们知道 `currentWindow ()` 也不是 `payable`。
+
+| 偏移量 | 操作码 | 堆栈 |
+| -----: | ------------ | -------------------- |
+| 164 | JUMPDEST | |
+| 165 | POP | |
+| 166 | PUSH2 0x00da | 0xDA |
+| 169 | PUSH1 0x01 | 0x01 0xDA |
+| 16B | SLOAD | Storage[1] 0xDA |
+| 16C | DUP2 | 0xDA Storage[1] 0xDA |
+| 16D | JUMP | Storage[1] 0xDA |
+
+### DA 代码 {#the-da-code}
+
+此代码也与其他方法共享。 所以我们将调用堆栈 Y 中的值,并且记住在 `currentWindow()` 中这个 Y 的值是 Storage[1]。
+
+| 偏移量 | 操作码 | 堆栈 |
+| -----: | ---------- | ---------------- |
+| DA | JUMPDEST | Y 0xDA |
+| DB | PUSH1 0x40 | 0x40 Y 0xDA |
+| DD | MLOAD | 0x80 Y 0xDA |
+| DE | SWAP1 | Y 0x80 0xDA |
+| DF | DUP2 | 0x80 Y 0x80 0xDA |
+| E0 | MSTORE | 0x80 Y 0xDA |
+
+将 Y 写入 0x80-0x9F。
+
+| 偏移量 | 操作码 | 堆栈 |
+| -----: | ---------- | -------------- |
+| E1 | PUSH1 0x20 | 0x20 0x80 0xDA |
+| E3 | ADD | 0xA0 0xDA |
+
+其余部分已在[上面](#the-e4-code)解释过。 所以跳转到 0xDA,将栈顶 (Y) 的值写入 0x80-0x9F,并返回该值。 对于 `currentWindow()` 方法,返回 Storage[1]。
+
+## merkleRoot() {#merkleroot}
+
+偏移量 0xED-0xF8 中的代码与我们在 `splitter()` 中看到的 0x103-0x10E 中的代码相同(除 `JUMPI` 目标地址外),因此我们知道 `merkleRoot ()` 也不是 `payable`。
+
+| 偏移量 | 操作码 | 堆栈 |
+| -----: | ------------ | -------------------- |
+| F9 | JUMPDEST | |
+| FA | POP | |
+| FB | PUSH2 0x00da | 0xDA |
+| FE | PUSH1 0x00 | 0x00 0xDA |
+| 100 | SLOAD | Storage[0] 0xDA |
+| 101 | DUP2 | 0xDA Storage[0] 0xDA |
+| 102 | JUMP | Storage[0] 0xDA |
+
+[我们已经弄清楚了](#the-da-code)跳转后会发生什么。 嗯,`merkleRoot()` 返回 Storage[0]。
+
+## 0x81e580d3 {#0x81e580d3}
+
+偏移量 0x138-0x143 中的代码与我们在 `splitter()` 中看到的 0x103-0x10E 中的代码相同(除 `JUMPI` 目标地址外),因此我们知道此函数也不是 `payable`。
+
+| 偏移量 | 操作码 | 堆栈 |
+| -----: | ------------ | ------------------------------------------------------------ |
+| 144 | JUMPDEST | |
+| 145 | POP | |
+| 146 | PUSH2 0x00da | 0xDA |
+| 149 | PUSH2 0x0153 | 0x0153 0xDA |
+| 14C | CALLDATASIZE | CALLDATASIZE 0x0153 0xDA |
+| 14D | PUSH1 0x04 | 0x04 CALLDATASIZE 0x0153 0xDA |
+| 14F | PUSH2 0x018f | 0x018F 0x04 CALLDATASIZE 0x0153 0xDA |
+| 152 | JUMP | 0x04 CALLDATASIZE 0x0153 0xDA |
+| 18F | JUMPDEST | 0x04 CALLDATASIZE 0x0153 0xDA |
+| 190 | PUSH1 0x00 | 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 192 | PUSH1 0x20 | 0x20 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 194 | DUP3 | 0x04 0x20 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 195 | DUP5 | CALLDATASIZE 0x04 0x20 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 196 | SUB | CALLDATASIZE-4 0x20 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 197 | SLT | CALLDATASIZE-4<32 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 198 | ISZERO | CALLDATASIZE-4>=32 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 199 | PUSH2 0x01a0 | 0x01A0 CALLDATASIZE-4>=32 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 19C | JUMPI | 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+
+看起来此函数至少使用调用数据的 32 个字节(一个字)。
+
+| 偏移量 | 操作码 | 堆栈 |
+| -----: | ------ | -------------------------------------------- |
+| 19D | DUP1 | 0x00 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 19E | DUP2 | 0x00 0x00 0x00 0x04 CALLDATASIZE 0x0153 0xDA |
+| 19F | REVERT | |
+
+如果此函数没有获得调用数据,则交易将回滚且不会任何返回数据。
+
+我们来看看,如果此函数*确实*获得了它需要的调用数据,会出现什么情况。
+
+| 偏移量 | 操作码 | 堆栈 |
+| -----: | ------------ | ---------------------------------------- |
+| 1A0 | JUMPDEST | 0x00 0x04 CALLDATASIZE 0x0153 0xD |
+| 1A1 | POP | 0x04 CALLDATASIZE 0x0153 0xDA |
+| 1A2 | CALLDATALOAD | calldataload(4) CALLDATASIZE 0x0153 0xDA |
+
+`calldataload(4)` 是在方法签名*之后*调用数据的第一个字
+
+| 偏移量 | 操作码 | 堆栈 |
+| -----: | ------------ | ---------------------------------------------------------------------------- |
+| 1A3 | SWAP2 | 0x0153 CALLDATASIZE calldataload(4) 0xDA |
+| 1A4 | SWAP1 | CALLDATASIZE 0x0153 calldataload(4) 0xDA |
+| 1A5 | POP | 0x0153 calldataload(4) 0xDA |
+| 1A6 | JUMP | calldataload(4) 0xDA |
+| 153 | JUMPDEST | calldataload(4) 0xDA |
+| 154 | PUSH2 0x016e | 0x016E calldataload(4) 0xDA |
+| 157 | JUMP | calldataload(4) 0xDA |
+| 16E | JUMPDEST | calldataload(4) 0xDA |
+| 16F | PUSH1 0x04 | 0x04 calldataload(4) 0xDA |
+| 171 | DUP2 | calldataload(4) 0x04 calldataload(4) 0xDA |
+| 172 | DUP2 | 0x04 calldataload(4) 0x04 calldataload(4) 0xDA |
+| 173 | SLOAD | Storage[4] calldataload(4) 0x04 calldataload(4) 0xDA |
+| 174 | DUP2 | calldataload(4) Storage[4] calldataload(4) 0x04 calldataload(4) 0xDA |
+| 175 | LT | calldataload(4))`,另一个是`isClaimed()`,所以此合约看起来像一个空投合约。 我们可以[尝试使用反编译器](https://etherscan.io/bytecode-decompiler?a=0x2f81e57ff4f4d83b40a9f719fd892d8e806e0761),而不是逐个操作码查看其余代码,反编译器会为此合约中的以下三个函数生成有用的结果。 其他合约的逆向工程留给读者作为练习。
+
+### scaleAmountByPercentage {#scaleamountbypercentage}
+
+这是反编译器为此函数提供的结果:
+
+```python
+def unknown8ffb5c97(uint256 _param1, uint256 _param2) payable:
+ require calldata.size - 4 >=′ 64
+ if _param1 and _param2 > -1 / _param1:
+ revert with 0, 17
+ return (_param1 * _param2 / 100 * 10^6)
+```
+
+第一个 `require` 测试调用数据除了有函数签名的 4 个字节外,至少还要有 64 个字节,方可容纳两个参数。 如果不是,那么显然有问题。
+
+`if` 语句似乎检查 `_param1` 不为零,并且 `_param1 * _param2` 不是负数。 这可能是为了防止发生回绕的情况。
+
+最后,此函数返回一个调整后的值。
+
+### claim {#claim}
+
+反编译器创建的代码很复杂,并不是所有代码都与我们相关。 这里将跳过其中一些内容,专注于我认为提供有用信息的行
+
+```python
+def unknown2e7ba6ef(uint256 _param1, uint256 _param2, uint256 _param3, array _param4) payable:
+ ...
+ require _param2 == addr(_param2)
+ ...
+ if currentWindow <= _param1:
+ revert with 0, 'cannot claim for a future window'
+```
+
+我们在这里看到两件重要的事情:
+
+- `_param2`,虽然被声明为 `uint256`,但实际上是一个地址
+- `_param1` 是被声明的窗口,它必须是 `currentWindow` 或更早。
+
+```python
+ ...
+ if stor5[_claimWindow][addr(_claimFor)]:
+ revert with 0, 'Account already claimed the given window'
+```
+
+所以现在我们知道 Storage[5] 是一个窗口和地址数组,并知道该地址是否申领了此窗口内奖励。
+
+```python
+ ...
+ idx = 0
+ s = 0
+ while idx < _param4.length:
+ ...
+ if s + sha3(mem[(32 * _param4.length) + 328 len mem[(32 * _param4.length) + 296]]) > mem[(32 * idx) + 296]:
+ mem[mem[64] + 32] = mem[(32 * idx) + 296]
+ ...
+ s = sha3(mem[_62 + 32 len mem[_62]])
+ continue
+ ...
+ s = sha3(mem[_66 + 32 len mem[_66]])
+ continue
+ if unknown2eb4a7ab != s:
+ revert with 0, 'Invalid proof'
+```
+
+我们知道 `unknown2eb4a7ab` 实际上是函数 `merkleRoot()`,所以此代码看起来像是在验证一个[默克尔证明](https://medium.com/crypto-0-nite/merkle-proofs-explained-6dd429623dc5)。 这意味着 `_param4` 是默克尔证明。
+
+```python
+ call addr(_param2) with:
+ value unknown81e580d3[_param1] * _param3 / 100 * 10^6 wei
+ gas 30000 wei
+```
+
+这就是合约将自己的以太币转账到另一个地址(合约地址或外部地址)的方式。 它使用一个值来调用该函数,该值是要转账的金额。 因此,该合约看起来像是一次以太币空投。
+
+```python
+ if not return_data.size:
+ if not ext_call.success:
+ require ext_code.size(stor2)
+ call stor2.deposit() with:
+ value unknown81e580d3[_param1] * _param3 / 100 * 10^6 wei
+```
+
+下面两行表明 Storage[2] 也是我们调用的合约。 如果我们[查阅构造函数交易](https://etherscan.io/tx/0xa1ea0549fb349eb7d3aff90e1d6ce7469fdfdcd59a2fd9b8d1f5e420c0d05b58#statechange),就会看到此合约是 [0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2](https://etherscan.io/address/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2),即一个封装的以太币合约,[其源代码已经上传到 Etherscan](https://etherscan.io/address/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2#code)。
+
+是的,看起来这些合约试图将以太币发送到 `_param2`。 如果它可以做到,那就太好了。 如果做不到,它会尝试发送 [WETH](https://weth.io/)。 如果 `_param2` 是外部帐户(EOA),那么它总是可以收到以太币,但合约帐户可以拒绝接收以太币。 但是,WETH 是 ERC-20,合约不能拒绝接受。
+
+```python
+ ...
+ log 0xdbd5389f: addr(_param2), unknown81e580d3[_param1] * _param3 / 100 * 10^6, bool(ext_call.success)
+```
+
+在此函数结束时,我们看到正在生成一个日志项。 [查看生成的日志项](https://etherscan.io/address/0x2510c039cc3b061d79e564b38836da87e31b342f#events)并筛选以 `0xdbd5...` 开头的主题。 如果[点击生成此类项的其中一个交易](https://etherscan.io/tx/0xe7d3b7e00f645af17dfbbd010478ef4af235896c65b6548def1fe95b3b7d2274),我们会看到它确实看起来像一个声明 - 该帐户向我们进行逆向工程的合约发送一条消息并获得了以太币。
+
+![声明交易](claim-tx.png)
+
+### 1e7df9d3 {#1e7df9d3}
+
+此函数和上面的 [`claim`](#claim) 非常相似。 它也检查默克尔证明,尝试将以太币转账到第一个参数,并生成相同类型的日志项。
+
+```python
+def unknown1e7df9d3(uint256 _param1, uint256 _param2, array _param3) payable:
+ ...
+ idx = 0
+ s = 0
+ while idx < _param3.length:
+ if idx >= mem[96]:
+ revert with 0, 50
+ _55 = mem[(32 * idx) + 128]
+ if s + sha3(mem[(32 * _param3.length) + 160 len mem[(32 * _param3.length) + 128]]) > mem[(32 * idx) + 128]:
+ ...
+ s = sha3(mem[_58 + 32 len mem[_58]])
+ continue
+ mem[mem[64] + 32] = s + sha3(mem[(32 * _param3.length) + 160 len mem[(32 * _param3.length) + 128]])
+ ...
+ if unknown2eb4a7ab != s:
+ revert with 0, 'Invalid proof'
+ ...
+ call addr(_param1) with:
+ value s wei
+ gas 30000 wei
+ if not return_data.size:
+ if not ext_call.success:
+ require ext_code.size(stor2)
+ call stor2.deposit() with:
+ value s wei
+ gas gas_remaining wei
+ ...
+ log 0xdbd5389f: addr(_param1), s, bool(ext_call.success)
+```
+
+主要区别在于第一个参数,即要提款的窗口,不存在。 相反,所有可以声明的窗口都有一个循环。
+
+```python
+ idx = 0
+ s = 0
+ while idx < currentWindow:
+ ...
+ if stor5[mem[0]]:
+ if idx == -1:
+ revert with 0, 17
+ idx = idx + 1
+ s = s
+ continue
+ ...
+ stor5[idx][addr(_param1)] = 1
+ if idx >= unknown81e580d3.length:
+ revert with 0, 50
+ mem[0] = 4
+ if unknown81e580d3[idx] and _param2 > -1 / unknown81e580d3[idx]:
+ revert with 0, 17
+ if s > !(unknown81e580d3[idx] * _param2 / 100 * 10^6):
+ revert with 0, 17
+ if idx == -1:
+ revert with 0, 17
+ idx = idx + 1
+ s = s + (unknown81e580d3[idx] * _param2 / 100 * 10^6)
+ continue
+```
+
+所以它看起来像一个声明所有窗口的 `claim` 变体。
+
+## 总结 {#conclusion}
+
+现在,你应该知道如何通过操作码或反编译器(当它有效时)理解没有源代码的智能合约。 从本文的篇幅明显可以看出,对合约进行逆向工程并非易事,但在安全性至关重要的系统中,能够验证合约是否按承诺运作是一项重要技能。
diff --git a/src/content/translations/zh/developers/tutorials/run-node-raspberry-pi/index.md b/src/content/translations/zh/developers/tutorials/run-node-raspberry-pi/index.md
index e76e726dba7..d5e3dccd60a 100644
--- a/src/content/translations/zh/developers/tutorials/run-node-raspberry-pi/index.md
+++ b/src/content/translations/zh/developers/tutorials/run-node-raspberry-pi/index.md
@@ -1,6 +1,6 @@
---
title: 如何通过刷写MicroSD卡将您的Raspberry Pi 4变为一个节点
-description: 刷写您的树莓派 4,插入以太网电缆,连接固态硬盘并打开设备电源,将树莓派 4 转变为运行执行层或共识层的完整以太坊节点(信标链/验证者)
+description: 刷写树莓派 4,插入以太网电缆,连接固态硬盘并打开设备电源,将树莓派 4 变为以太坊全节点 + 验证者。
author: "EthereumOnArm"
tags:
- "客户端"
@@ -8,260 +8,159 @@ tags:
- "共识层"
- "节点"
lang: zh
-skill: intermediate
-published: 2020-05-07
-source: r/ethereum
-sourceUrl: https://www.reddit.com/r/ethereum/comments/gf3nhg/ethereum_on_arm_raspberry_pi_4_images_release/
+skill: advanced
+published: 2022-06-10
+source: Ethereum on ARM
+sourceUrl: https://ethereum-on-arm-documentation.readthedocs.io/en/latest/kiln/kiln-testnet.html
+postMergeBannerTranslation: page-upgrades-post-merge-banner-tutorial-ood
---
-**TL;DR**:刷写您的树莓派 4,插入以太网电缆,连接固态硬盘并打开设备电源,将树莓派 4 转变为运行执行层或共识层的完整以太坊节点(信标链/验证者)
+**Ethereum on Arm 是一个定制 Linux 映像,它可以将树莓派转变成以太坊节点。**
-[了解有关以太坊升级的信息](/upgrades/)
+为了使用 Ethereum on Arm 将树莓派转变成以太坊节点,推荐使用以下硬件:
-首先是一些背景。 如您所知,运行 Raspberry Pi 4 镜像时,我们已经遇到了一些内存问题[[1]](/developers/tutorials/run-node-raspberry-pi/#references),因为 Raspbian 操作系统仍然是 32 位操作系统[[2]](/developers/tutorials/run-node-raspberry-pi/#references)(至少用户区是如此)。 虽然我们更愿意坚持使用官方操作系统,但我们得出的结论是,为了解决这些问题,我们需要迁移原生的 64 位操作系统。
-
-此外,[共识客户端](/upgrades/get-involved/#clients)不支持 32 位二进制文件,因此使用 Raspbian 会阻止树莓派 4 运行共识层节点(以及质押的可能性)。
-
-因此,几经测试,我们现将发布基于 64 位 Ubuntu 20.04 [[3]](/developers/tutorials/run-node-raspberry-pi/#references) 的两个不同映像:执行层版和共识层版。
-
-基本上,两者都是相同的映像,并且包含基于 Raspbian 的映像的相同功能。 但它们被设置为默认运行执行层或共识层软件。
-
-**程序负责所有必要的步骤**,从设置环境和格式化 SSD 磁盘到安装和运行以太坊软件,以及启动区块链同步。
-
-## 主要特性 {#main-features}
-
-- 基于 Ubuntu 20.04 64 位
-- 自动完成 USB 磁盘分区和格式化
-- 在 Armbian 工作的基础上增加了交换内存(ZRAM 内核模块 + 一个交换文件)[[7]](/developers/tutorials/run-node-raspberry-pi/#references)。
-- 根据 MAC 哈希值将主机名改为像“ethnode-e2a3e6fe”这样的名称。
-- 将软件作为 systemd 服务运行并开始同步区块链
-- 包括一个用于安装和升级以太坊软件的 APT 存储库
-- 包括一个基于 Grafana/Prometheus 的监控仪表板
-
-## 包含的软件 {#software-included}
-
-两个映像都包含相同的软件包,它们之间唯一的区别是执行版默认运行 Geth,而共识版则默认运行 Prysm 信标链。
-
-### 执行客户端 {#execution-clients}
-
-- Geth[[8]](/developers/tutorials/run-node-raspberry-pi/#references):1.9.13 (官方二进制文件)
-- Parity[[9]](/developers/tutorials/run-node-raspberry-pi/#references):2.7.2(交叉编译)。
-- Nethermind [[10]](/developers/tutorials/run-node-raspberry-pi/#references):1.8.28(交叉编译)。
-- Hyperledger Besu[[11]](/developers/tutorials/run-node-raspberry-pi/#references):1.4.4(已编译)。
-
-### 共识客户端 {#consensus-clients}
-
-- Prysm[[12]](/developers/tutorials/run-node-raspberry-pi/#references):1.0.0-alpha6(官方二进制文件)。
-- Lighthouse[[13]](/developers/tutorials/run-node-raspberry-pi/#references):0.1.1(已编译)。
-
-### 以太坊框架 {#ethereum-framework}
-
-- Swarm[[14]](/developers/tutorials/run-node-raspberry-pi/#references):0.5.7(官方二进制文件)。
-- Raiden Network[[15]](/developers/tutorials/run-node-raspberry-pi/#references):0.200.0~rc1(官方二进制文件)。
-- IPFS[[16]](/developers/tutorials/run-node-raspberry-pi/#references):0.5.0(官方二进制文件)。
-- Statusd[[17]](/developers/tutorials/run-node-raspberry-pi/#references):0.52.3(已编译)。
-- Vipnode[[18]](/developers/tutorials/run-node-raspberry-pi/#references):2.3.3(官方二进制文件)。
-
-## 安装指南和使用方法 {#installation-guide-and-usage}
-
-### 推荐的硬件和设置 {#recommended-hardware-and-setup}
-
-- Raspberry 4(B 型)- 4GB
-- MicroSD 卡(最小 16 GB,10 级)
-- SSD USB 3.0 磁盘(见存储部分)
+- 树莓派 4(B 型,8 GB)
+- MicroSD 卡(最小 16 GB,Class 10)
+- 最小 2TB 的 USB3.0 固态硬盘或使用 USB3.0 转 SATA 转接盒的固态硬盘
- 电源
- 以太网电缆
-- 30303 端口转发(执行层)和 13000 端口转发(共识层)[[4]](/developers/tutorials/run-node-raspberry-pi/#references)
-- 带散热片和风扇的机箱(可选,但强烈推荐)
-- USB 键盘、显示器和 HDMI 电缆(微型 HDMI)(可选)。
+- 端口转发(详情请查看客户端)
+- 带散热片和风扇的外壳
+- USB 键盘、显示器和 HDMI 数据线(微型 HDMI)(可选)
-## 存储 {#storage}
+## 为什么要在 ARM 上运行以太坊? {#why-run-ethereum-on-arm}
-你将需要一个固态硬盘来运行以太坊客户端(没有固态硬盘,就绝对没有机会同步以太坊区块链)。 有两种选择:
+ARM 单板机是一种便宜、灵活的小型计算机。 它们价格低廉、效率高、可配置成将全部资源专用于节点、能耗低、体积小,可以很顺利地安装在任何家庭中,因此成为运行以太坊节点的不二之选。 启动节点也非常容易,因为树莓派的 MicroSD 卡可以简单地使用预建映像刷写,无需下载或构建软件。
-- 使用 USB 便携式 SSD 磁盘,如三星 T5 便携式 SSD。
-- 使用带有 SSD 磁盘的 USB3.0 外置硬盘盒。 在我们的例子中,我们使用了 Inateck 2.5 硬盘盒 FE2011。 请确保购买带有 UAS 兼容芯片的机箱,特别是这些芯片之一:JMicron(JMS567 或 JMS578)或 ASMedia(ASM1153E)。
+## 工作原理 {#how-does-it-work}
-在两种情况下,都需避免使用劣质 SSD 磁盘,因为它是节点的关键组成部分,可能会极大地影响性能(及同步时间)。
+使用预先构建的映像刷写树莓派的内存卡。 此映像包含了运行以太坊节点所需的一切。 在刷写完内存卡后,用户只需要启动树莓派即可。 运行节点所需的所有进程自动启动。 这是可行的,因为内存卡中有基于 Linux 的操作系统,系统级进程在此操作系统上自动运行,将树莓派转变成以太坊节点。
-请记住,需要将磁盘插入 USB 3.0 端口(蓝色)
+以太坊不能在流行的树莓派 Linux 操作系统“Raspbian”下运行,因为 Raspbian 还在使用 32 位指令集架构,这会给以太坊用户带来内存问题,而且共识客户端也不支持 32 位二进制文件。 为了解决这一问题,Ethereum on Arm 团队迁移到原生 64 位操作系统“Armbian”。
-## 映像下载和安装 {#image-download-and-installation}
+**映像负责处理所有必要的步骤**,包括从设置环境和格式化固态磁盘,到安装和运行以太坊软件,以及启动区块链同步。
-### 1. 下载执行层和共识层映像 {#1-download-execution-or-consensus-images}
+## 执行客户端和共识客户端说明 {#note-on-execution-and-consensus-clients}
-
- 下载执行层映像
-
+Ethereum on Arm 相关文档解释了如何设置执行客户端*或*共识客户端,两个以太坊测试网(Kiln 和 Ropsten)除外。 这种可选性只有在以太坊从工作量证明过渡到权益证明(称为[合并](/upgrades/merge))之前才有可能。
-sha256 7fa9370d13857dd6abcc8fde637c7a9a7e3a66b307d5c28b0c0d29a09c73c55c
+
+合并后,将无法单独运行执行客户端和共识客户端 — 它们必须成对运行。 因此,在本教程中,我们将在以太坊测试网 (Kiln) 上运行一对执行客户端和共识客户端。
+
-
- 下载共识层映像
-
+## Kiln 树莓派 4 映像 {#the-kiln-raspberry-pi-4-image}
-sha256 74c0c15b708720e5ae5cac324f1afded6316537fb17166109326755232cd316e
+Kiln 是一个专门用于测试合并的公共测试网。 Ethereum on Arm 团队开发了一个映像,让用户可以在这个合并测试网上快速启动一对以太坊客户端。 Kiln 合并已经发生,但该网络仍在运行,因此可用于本教程。 Kiln 上的以太币没有实际价值。
-### 2. 刷写映像 {#2-flash-the-image}
+Kiln 树莓派 4 映像是一种“即插即用”映像,它会自动安装和设置执行客户端与共识客户端,配置它们相互通信并连接到 Kiln 网络。 用户需要做的就是使用一个简单的命令启动他们的进程。 该映像包含四种执行客户端(Geth、Nethermind、Besu 和 Erigon)和四种共识客户端(Lighthouse、Prysm、Nimbus、Teku),可供用户选择。
-在您的台式机/笔记本电脑中插入 microSD,然后下载文件(例如执行层)。
+从 [Ethereum on Arm](https://ethereumonarm-my.sharepoint.com/:u:/p/dlosada/ES56R_SuvaVFkiMO1Tgnf6kB7lEbBfla5c2c18E3WQRJzA?download=1) 下载树莓派映像并验证 SHA256 哈希:
-```bash
-wget https://ethraspbian.com/downloads/ubuntu-20.04-preinstalled-server-arm64+raspi-eth1.img.zip
+```sh
+# From directory containing the downloaded image
+shasum -a 256 ethonarm_kiln_22.03.01.img.zip
+# Hash should output: 485cf36128ca60a41b5de82b5fee3ee46b7c479d0fc5dfa5b9341764414c4c57
```
-注意:如果您不习惯使用命令行,或者运行的是 Windows,则可以使用[Etcher](https://etcher.io)。
+请注意,对于没有树莓派但有 AWS 帐户的用户,提供的 ARM 实例可以运行相同的映像。 说明和 AWS 映像可从 Ethereum on Arm (https://ethereum-on-arm-documentation.readthedocs.io/en/latest/kiln/kiln-testnet.html) 下载。
-打开终端并检查您的 MicroSD 设备名称是否正在运行:
+## 刷写 MicroSD 卡 {#flashing-the-microsd}
-```bash
-sudo fdisk -l
-```
+首先,应将用于树莓派的 MicroSD 卡插入台式机或笔记本电脑中,以便可以刷写。 接着,在终端执行以下命令,将下载的映像刷写到 SD 卡中:
-您应会看到一个名为 mcblk0 或 sdd 的设备。 解压缩并刷写镜像:
+```shell
+# 检查 Micro SD 卡名
+sudo fdisk -I
-```bash
-unzip ubuntu-20.04-preinstalled-server-arm64+raspi-eth1.img.zip
-sudo dd bs=1M if=ubuntu-20.04-preinstalled-server-arm64+raspi-eth1.img of=/dev/mmcblk0 && sync
+>> sdxxx
```
-### 3. 将 MicroSD 插入 Raspberry Pi 4。 连接以太网电缆并插入 USB SSD 硬盘(确保您使用的是蓝色端口)。 {#3-insert-the-microsd-into-the-raspberry-pi-4-connect-an-ethernet-cable-and-attach-the-usb-ssd-disk-make-sure-you-are-using-a-blue-port}
-
-### 4. 打开设备电源 {#4-power-on-the-device}
+正确的 SD 卡名称非常重要,因为下一条命令中的指令 `dd` 会在写入映像前彻底清除 SD 卡上的全部已有内容。 接下来,导航到包含压缩映像文件的目录:
-Ubuntu 操作系统将在一分钟内启动,但**您将需要等待大约 10 分钟**,以便让脚本执行必要的任务,来将设备变成以太坊节点并重新启动 Raspberry。
+```shell
+# 解压并烧录镜像
+unzip ethonarm_kiln_22.03.01.img.zip
+sudo dd bs=1M if=ethonarm_kiln_22.03.01.img of=/dev/mmcblk0 conv=fdatasync status=progress
+```
-根据镜像,您将运行:
+现在 SD 卡已刷写完成,可以将其插入树莓派中了。
-- 执行客户端:Geth 作为同步区块链的默认客户端
-- 共识客户端:Prysm 作为同步信标链的默认客户端(Prater 测试网)。
+## 启动节点 {#start-the-node}
-### 5. 登录 {#5-log-in}
+将 SD 卡插入树莓派后,连接以太网电缆和固态硬盘,然后打开电源。 操作系统将启动并自动执行预先配置好的任务,包括安装和构建客户端软件,从而将树莓派转变成以太坊节点。 此过程大约需要 10-15 分钟。
-您可以通过 SSH 或使用控制台登录(如果连接了显示器和键盘)。
+所有安装和配置完成后,通过安全外壳连接登录设备,或者如果单板机已经连接了键盘和显示器,也可以直接使用终端。 使用 `ethereum` 帐户登录,因为此帐户有启动节点所需的权限。
-```bash
+```shell
User: ethereum
Password: ethereum
```
-第一次登录时会提示您更改密码,因此需要登录两次。
-
-### 6. 为 Geth 打开 30303 端口,如果您正在运行 Prysm 信标链,则打开 13000 端口。 如果不知道如何执行此操作,请搜索 "端口转发",后跟您的路由器型号。 {#6-open-30303-port-for-geth-and-13000-if-you-are-running-prysm-beacon-chain-if-you-dont-know-how-to-do-this-google-port-forwarding-followed-by-your-router-model}
+然后,用户可以选择他们希望运行的执行客户端和共识客户端组合,并按如下方式启动他们的 systemctl 进程(示例中运行 Geth 和 Lighthouse):
-### 7. 获取控制台输出 {#7-get-console-output}
-
-您可以通过输入以下命令查看后台发生了什么:
-
-```bash
-sudo tail -f /var/log/syslog
+```shell
+sudo systemctl start geth-lh
+sudo systemctl start lh-geth-beacon
```
-**恭喜! 您现在正在您的 Raspberry Pi 4 上运行一个完整的以太坊节点。**
-
-## 同步区块链 {#syncing-the-blockchain}
-
-现在您需要等待区块链同步。 对于执行层,这将需要几天的时间,具体取决于若干因素,但预计最多需要约 5-7 天。
-
-如果运行的是共识层 Prater 测试网,则可以预期约 1-2 天的信标链同步时间。 请记住,您需要稍后设置验证器才能启动权益质押过程。 [如何运行共识层验证器](/developers/tutorials/run-node-raspberry-pi/#validator)
-
-## 监测仪表板 {#monitoring-dashboards}
+可以使用以下指令检查日志
-在这第一个版本中,包括了 3 个基于 Prometheus 的监测仪表板[[5]](/developers/tutorials/run-node-raspberry-pi/#references) / Grafana[[6]](/developers/tutorials/run-node-raspberry-pi/#references),以便监测节点和客户端的数据(Geth 和 Besu)。 您可以通过您的 Web 浏览器访问:
-
-```bash
-URL: http://your_raspberrypi_IP:3000
-User: admin
-Password: ethereum
+```shell
+# logs for Geth
+sudo journalctl -u geth-lh -f
+#logs for lighthouse
+sudo journalctl -u lh-geth-beacon -f
```
-## 切换客户端 {#switching-clients}
+[Ethereum on Arm 相关文档](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/kiln/kiln-testnet.html#id2)中提供有每一对客户端组合的特定服务名称。 它们可用于更新此处提供的命令,以用于任何客户端组合。
-所有客户端都作为 systemd 服务运行。 这一点很重要,因为如果出现问题,系统将自动重启进程。
+## 验证者 {#validators}
-Geth 和 Prysm 信标链会默认运行(具体取决于您所同步的内容、执行层或共识层),因此如果您想切换到其他客户端(例如从 Geth 切换到 Nethermind),您需要先停止并禁用 Geth,然后启用并启动另一个客户端:
+为了运行验证者,必须首先访问 32 个测试网以太币,它们必须存入 Kiln 存款合约。 这可以按照 [Kiln 启动板](https://kiln.launchpad.ethereum.org/en/)上的分步指南来完成。 在台式机/笔记本电脑上执行此操作,但不要生成密钥 — 密钥生成可以直接在树莓派上完成。
-```bash
-sudo systemctl stop geth && sudo systemctl disable geth
-```
+在树莓派上打开一个终端并运行以下命令来生成存款密钥:
-启用和运行执行客户端的命令:
-
-```bash
-sudo systemctl enable besu && sudo systemctl start besu
-sudo systemctl enable nethermind && sudo systemctl start nethermind
-sudo systemctl enable parity && sudo systemctl start parity
```
-
-共识客户端:
-
-```bash
-sudo systemctl stop prysm-beacon && sudo systemctl disable prysm-beacon
-sudo systemctl start lighthouse && sudo systemctl enable lighthouse
+cd && deposit new-mnemonic --num_validators 1 --chain kiln
```
-## 更改参数 {#changing-parameters}
-
-客户端的配置文件位于/etc/ethereum/目录中。 您可以编辑这些文件,并重启 systemd 服务,以使更改生效。 唯一的例外是 Nethermind,它还有一个在以下位置的主网配置文件:
+保持助记词安全! 上面的命令在节点的密钥库中生成了两个文件:验证者密钥和存款数据文件。 存款数据需要上传到启动板,因此必须要从树莓派复制到台式机/笔记本电脑。 这可以使用安全外壳连接或任何其他复制/粘贴方法来完成。
-```bash
-/etc/nethermind/configs/mainnet.cfg
-```
+在存款数据文件在运行启动板的计算机上可用后,就可以将其拖放到启动板界面上的 `+` 上。 按照屏幕上的说明将交易发送到存款合约。
-区块链客户端的数据存储在以太坊主帐户上,如下所示(注意目录名称前的点)。
+返回树莓派,可以启动验证者。 这需要导入验证者密钥,设置领取奖励的地址,然后启动预先配置好的验证者进程。 以下示例适用于 Lighthouse — 其他共识客户端的说明见 [Ethereum on Arm 相关文档](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/kiln/kiln-testnet.html#lighthouse):
-### 执行层 {#execution-layer}
-
-```bash
-/home/ethereum/.geth
-/home/ethereum/.parity
-/home/ethereum/.besu
-/home/ethereum/.nethermind
-```
+```shell
+#导入验证器密钥
+lighthouse-kl account validator import --directory=/home/ethereum/validator_keys --datadir=/home/ethereum/.lh-geth/kiln/testnet-lh
-### 共识层 {#consensus-layer}
+#设置收款地址地址
+sudo sed -i ‘’ /etc/ethereum/kiln/lh-geth-validator.conf
-```bash
-/home/ethereum/.eth2
-/home/ethereum/.eth2validators
-/home/ethereum/.lighthouse
+#启动验证器
+sudo systemctl start lh-geth-validator
```
-## Nethermind 和 Hyperledger Besu {#nethermind-and-hyperledger-besu}
-
-这两个出色的执行层客户端已经成为 Geth 和 Parity 的绝佳替代方案。 网络的多样性越多越好,所以您可以试一试,为网络健康作出贡献。
-
-两者都需要进一步的测试,所以请随时使用它们并报告您的反馈。
-
-## 如何运行共识验证器(质押) {#validator}
-
-Prater 测试网信标链同步后,您便可以在同一设备中运行验证器。 您需要遵循[这些参与步骤](https://prylabs.net/participate)。
-
-第一次,您需要通过运行 "验证器 "二进制文件手动创建一个帐户,并设置一个密码。 一旦您完成了这一步,就可以将密码添加到`/etc/ethereum/prysm-validator.conf`,并将验证器作为一个 systemd 服务启动。
+恭喜,你现在拥有运行在树莓派上的以太坊全节点和验证者!
## 感谢反馈 {#feedback-appreciated}
-我们投入了大量的工作,试图将 Raspberry Pi 4 设置为一个完整的以太坊节点,因为我们知道这个设备的庞大用户群可能对网络产生非常积极的影响。
-
-请考虑到这是基于 Ubuntu 20.04 的第一个映像,所以可能会有一些错误。 如果确实出现了错误,请在 [GitHub](https://github.com/diglos/ethereumonarm) 上开一个 issue 或在 [Twitter](https://twitter.com/EthereumOnARM) 上联系我们。
-
-## 参考: {#references}
-
-1. [Geth 反复出现 SIGSEGV 崩溃](https://github.com/ethereum/go-ethereum/issues/20190)
-2. [https://github.com/diglos/ethereumonarm](https://github.com/diglos/ethereumonarm)
-3. https://ubuntu.com/download/raspberry-pi
-4. https://wikipedia.org/wiki/Port_forwarding
-5. https://prometheus.io
-6. https://grafana.com
-7. https://forum.armbian.com/topic/5565-zram-vs-swap/
-8. https://geth.ethereum.org
-9. https://github.com/openethereum/openethereum \* **注意,OpenEthereum [已经废弃](https://medium.com/openethereum/gnosis-joins-erigon-formerly-turbo-geth-to-release-next-gen-ethereum-client-c6708dd06dd)并停止维护。**请谨慎使用,最好切换至其他客户端实现。
-10. https://nethermind.io
-11. https://www.hyperledger.org/projects/besu
-12. https://github.com/prysmaticlabs/prysm
-13. https://lighthouse.sigmaprime.io
-14. https://ethersphere.github.io/swarm-home
-15. https://raiden.network
-16. https://ipfs.io
-17. https://status.im
-18. https://vipnode.org
+我们知道树莓派拥有庞大的用户群体,能对以太坊网络的健康产生非常积极的影响。 请深入了解本教程中的详细信息,尝试在其他测试网甚至以太坊主网上运行,查看 Ethereum on Arm GitHub,提供反馈,提出问题并拉取请求,并帮助改进技术和相关文档!
+
+## 参考文献 {#references}
+
+1. https://ubuntu.com/download/raspberry-pi
+2. https://wikipedia.org/wiki/Port_forwarding
+3. https://prometheus.io
+4. https://grafana.com
+5. https://forum.armbian.com/topic/5565-zram-vs-swap/
+6. https://geth.ethereum.org
+7. https://nethermind.io
+8. https://www.hyperledger.org/projects/besu
+9. https://github.com/prysmaticlabs/prysm
+10. https://lighthouse.sigmaprime.io
+11. https://ethersphere.github.io/swarm-home
+12. https://raiden.network
+13. https://ipfs.io
+14. https://status.im
+15. https://vipnode.org
diff --git a/src/content/translations/zh/developers/tutorials/secure-development-workflow/index.md b/src/content/translations/zh/developers/tutorials/secure-development-workflow/index.md
index 06b693c5c33..0ecc39f28d4 100644
--- a/src/content/translations/zh/developers/tutorials/secure-development-workflow/index.md
+++ b/src/content/translations/zh/developers/tutorials/secure-development-workflow/index.md
@@ -27,7 +27,7 @@ sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/devel
- 您的合约是否可以升级? 使用 [`slither-check-upgradeability`](https://github.com/crytic/slither/wiki/Upgradeability-Checks) 或 [Crytic](https://blog.trailofbits.com/2020/06/12/upgradeable-contracts-made-safer-with-crytic/) 检查您的可升级代码是否有缺陷。 我们记录了 17 种升级可能出现的问题。
- 您的合约是否声明符合 ERC 的要求? 使用 [`slither-check-erc`](https://github.com/crytic/slither/wiki/ERC-Conformance) 对它们进行审核。 这个工具能立即识别出六个常见规范的偏差。
- 您在 Truffle 中设有单元测试吗? 将它们添加到 [`slither-prop`](https://github.com/crytic/slither/wiki/Property-generation)。 它可以根据您的具体代码自动生成一套强大的安全属性,用于 ERC20 功能。
-- 您是否与第三方代币集成? 在依赖外部合约之前,请先查看我们的 [代币集成清单](/developers/tutorials/token-integration-checklist/)。
+- 您是否与第三方代币集成? 在依赖外部合约之前,请先查看我们的[代币集成清单](/developers/tutorials/token-integration-checklist/)。
目视检查代码的关键安全功能。
diff --git a/src/content/translations/zh/developers/tutorials/send-token-etherjs/index.md b/src/content/translations/zh/developers/tutorials/send-token-etherjs/index.md
index ea2483b1371..649ce0790f5 100644
--- a/src/content/translations/zh/developers/tutorials/send-token-etherjs/index.md
+++ b/src/content/translations/zh/developers/tutorials/send-token-etherjs/index.md
@@ -97,7 +97,7 @@ window.ethersProvider.getGasPrice() // gasPrice
1. **`send_accoun`**:代币发送人的地址
2. **`to_address`**:代币接收人的地址
-3. **`send_token_amount`**:您想要发送给接收人的金额
+3. **`send_token_amount`**:您想要发送的代币数量
4. **`gas_limit`**:燃料限制
5. **`gas_price`**:燃料价格
diff --git a/src/content/translations/zh/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md b/src/content/translations/zh/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md
index 5178076a1d8..eca421aa292 100644
--- a/src/content/translations/zh/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md
+++ b/src/content/translations/zh/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md
@@ -1,6 +1,6 @@
---
title: 使用 Web3 发送交易
-description: "本文为初学者提供易于理解的使用 Web3 发送以太坊交易的指南。 要向以太坊区块链发送交易,主要有三个步骤:创建、签署和广播。 我们将对三个方面进行讨论。"
+description: "本文是面向初学者的指南,介绍如何用 Web3 发送以太坊交易。 向以太坊区块链发送交易主要有三个步骤:创建、签署和广播。 我们将对三个方面进行讨论。"
author: "Elan Halpern"
tags:
- "交易"
@@ -13,9 +13,9 @@ source: Alchemy 文档
sourceUrl: https://docs.alchemy.com/alchemy/tutorials/sending-txs
---
-本文为初学者提供易于理解的使用 Web3 发送以太坊交易的指南。 要向以太坊区块链发送交易,主要有三个步骤:创建、签署和广播。 我们将对这三个方面进行讨论,希望能回答您可能遇到的所有问题! 在本教程中,我们将使用 [Alchemy](https://www.alchemy.com/) 将我们的交易发送到以太坊链。 您可以[在此处创建一个免费 Alchemy 帐户](https://auth.alchemyapi.io/signup)。
+本文是面向初学者的指南,介绍如何用 Web3 发送以太坊交易。 向以太坊区块链发送交易主要有三个步骤:创建、签署和广播。 我们将对这三个方面进行讨论,希望能回答您可能遇到的所有问题! 在本教程中,我们将使用 [Alchemy](https://www.alchemy.com/) 将我们的交易发送到以太坊链。 可以[点击此处创建一个免费 Alchemy 帐户](https://auth.alchemyapi.io/signup)。
-**注意:**本指南适用于在应用程序*后端*签署交易。 如果您想将交易签署集成到前端,请查看将 [Web3 与浏览器提供程序](https://docs.alchemy.com/reference/api-overview#with-a-browser-provider)集成。
+**注意:**本指南适用于在应用程序*后端*签署交易。 如果想在前端集成交易签署,请查看将 [Web3 与浏览器提供程序集成](https://docs.alchemy.com/reference/api-overview#with-a-browser-provider)。
## 基本概念 {#the-basics}
@@ -29,7 +29,7 @@ sourceUrl: https://docs.alchemy.com/alchemy/tutorials/sending-txs
### 2. 什么是 "签名者"? {#what-is-a-signer}
- 签名者将使用您的私钥为您签署交易。 在本教程中,我们将使用 [Alchemy Web3](https://docs.alchemyapi.io/alchemy/documentation/alchemy-web3) 签署我们的交易,但您也可以使用任何其他 Web3 库。
-- 在前端,[MetaMask](https://metamask.io/) 就是一个签名者的好例子,它将代表您签署和发送交易。
+- 在前端,一个很好的签名者示例是 [MetaMask](https://metamask.io/),它将代表你签署和发送交易。
### 3. 为什么我需要在我的交易上签名? {#why-do-i-need-to-sign-my-transactions}
@@ -38,14 +38,14 @@ sourceUrl: https://docs.alchemy.com/alchemy/tutorials/sending-txs
### 4. 如何保护我的私钥? {#how-do-i-protect-my-private-key}
-- 有许多方法来保护您的私钥,并使用它来发送交易。 在本教程中,我们将使用一个`.env` 文件。 然而,你也可以使用一个单独的存储私钥的服务提供器,使用一个密钥库文件,或其他选项。
+- 有许多方法来保护您的私钥,并使用它来发送交易。 在本教程中,我们将使用 `.env` 文件。 然而,你也可以使用一个单独的存储私钥的服务提供器,使用一个密钥库文件,或其他选项。
### 5. `eth_sendTransaction` 和 `eth_sendRawTransaction` 之间有什么区别? {#difference-between-send-and-send-raw}
`eth_sendTransaction` 和 `eth_sendRawTransaction` 都是 Ethereum API 函数,用于将交易广播到 Ethereum 网络,以便将其添加到未来的区块中。 它们在处理交易签名的方式上有所不同。
- [`eth_sendTransaction`](https://web3js.readthedocs.io/en/v1.2.0/web3-eth.html#eth-sendtransaction) 用于发送*未签名的*交易,这意味着您发送到的节点必须管理您的私钥,以便它能够在将交易广播到链中之前对交易进行签名。 由于 Alchemy 没有用户私钥,因此他们不支持这种方法。
-- [`eth_sendRawTransactions`](https://docs.alchemyapi.io/documentation/alchemy-api-reference/json-rpc#eth_sendrawtransaction) 用于广播已经签名的交易。 这意味着您首先必须使用 [`signTransaction(tx, private_key)`](https://web3js.readthedocs.io/en/v1.2.0/web3-eth.html#signtransaction),然后将结果发送到 `eth_sendRawTransaction`。
+- [`eth_sendRawTransaction`](https://docs.alchemyapi.io/documentation/alchemy-api-reference/json-rpc#eth_sendrawtransaction) 用于广播已经签名的交易。 这意味着您首先必须使用 [`signTransaction(tx, private_key)`](https://web3js.readthedocs.io/en/v1.2.0/web3-eth.html#signtransaction),然后将结果发送到 `eth_sendRawTransaction`。
当使用 web3 时,通过调用函数 [web3.eth.sendSignedTransaction](https://web3js.readthedocs.io/en/v1.2.0/web3-eth.html#sendsignedtransaction) 来访问`eth_sendRawTransaction`。
@@ -54,7 +54,7 @@ sourceUrl: https://docs.alchemy.com/alchemy/tutorials/sending-txs
### 6. Web3 库是什么? {#what-is-the-web3-library}
- Web3.js 是一个围绕标准 JSON-RPC 调用的封装库,在以太坊开发中使用相当普遍。
-- 有许多针对不同语言的 web3 库。 在本教程中,我们将使用 [Alchemy Web3](https://docs.alchemy.com/reference/api-overview),它是用 JavaScript 编写的。 您可以在[这里](https://docs.alchemyapi.io/guides/getting-started#other-web3-libraries)查看其他选项 。
+- 有许多针对不同语言的 web3 库。 在本教程中,我们将使用 [Alchemy Web3](https://docs.alchemy.com/reference/api-overview),它用 JavaScript 编写。 您可以在[这里](https://docs.alchemyapi.io/guides/getting-started#other-web3-libraries)查看其他选项。
好了,现在我们把这些问题都解决了,让我们继续学习教程。 请随时在 Alchemy [discord](https://discord.gg/gWuC7zB) 中提问!
@@ -85,7 +85,7 @@ cd sendtx-example
### 4. 安装 Alchemy Web3(或任何 web3 库)。 {#install-alchemy-web3}
-在您的项目目录中运行以下命令,以安装 [Alchemy Web3](https://docs.alchemy.com/reference/api-overview)。
+在你的项目目录中运行以下命令,以安装 [Alchemy Web3](https://docs.alchemy.com/reference/api-overview):
```
npm install @alch/alchemy-web3
@@ -93,7 +93,7 @@ npm install @alch/alchemy-web3
### 5. 安装 dotenv {#install-dotenv}
-我们将使用一个 `.env` 文件来安全存储我们的 API 密钥和私钥。
+我们将使用 `.env` 文件安全地存储我们的应用程序接口密钥和私钥。
```
npm install dotenv --save
@@ -117,7 +117,7 @@ PRIVATE_KEY = "your-private-key"
### 7. 创建 `sendTx.js` 文件 {#create-sendtx-js}
-很好,我们在 `.env` 文件中保护了我们的敏感数据,让我们现在开始编码吧。 对于我们的发送交易示例,我们将把 ETH 发送回 Rinkeby faucet。
+太好了,既然我们已经在 `.env` 文件中保护了敏感数据,我们开始编码吧。 对于我们的发送交易示例,我们将把 ETH 发送回 Rinkeby faucet。
创建一个 `sendTx.js` 文件,这是我们将配置和发送我们的示例交易的地方,并在文件中添加以下几行代码:
@@ -159,8 +159,8 @@ main();
- `nonce` : nonce 规范用于跟踪从您的地址发送的交易数量。 为了安全起见,我们需要这样做,以防止[重放攻击](https://docs.alchemyapi.io/resources/blockchain-glossary#account-nonce)。 要获得从您的地址发送的交易数量,我们使用 [getTransactionCount](https://docs.alchemyapi.io/documentation/alchemy-api-reference/json-rpc#eth_gettransactioncount)。
- `transaction`:交易对象有几个方面需要我们指定
- - `to`: 这是我们要发送 ETH 的地址。 在此用例中,我们将以太币发送回我们最初请求的 [Rinkeby 水龙头](https://faucet.rinkeby.io/)。
- - `value`: 这是我们希望发送的金额,以 Wei 为单位,10^18 Wei = 1 ETH。
+ - `to`:这是我们要发送以太币的地址。 在此用例中,我们将以太币发送回我们最初请求的 [Rinkeby 水龙头](https://faucet.rinkeby.io/)。
+ - `value`:这是我们希望发送的金额,以 Wei 为单位,其中 10^18 Wei = 1 个以太币
- `gas`:有多种方法用来确定要包括在您的交易中的正确燃料数量。 Alchemy 甚至提供了一个[燃料价格 Web 钩子](https://docs.alchemyapi.io/guides/alchemy-notify#address-activity-1),用于当燃料价落在某个阈值范围内时通知您。 对于主网交易,最好查看[以太币燃料站](https://ethgasstation.info/)一类的燃料估算器,以确定要包括的正确燃料数量。 21000 是以太坊操作所使用的最小燃料数量,所以为了确保我们的交易得以执行,我们在这里输入 30000。
- `nonce`:参见上面的 nonce 定义。 Nonce 从零开始计数。
- [OPTIONAL] 数据:用于在您的转账中发送附加信息或调用智能合约,余额转账不需要,请查看下面的注释。
@@ -170,7 +170,7 @@ main();
**关于数据的注释** 有两种主要类型的交易可以在以太坊中发送。
- 余额转账:将以太币从一个地址发送到另一个地址。 不需要数据字段,但是,如果您想在交易中发送附加信息,可以在此字段中包含 HEX 格式的信息。
- - 例如,假设我们想将星际文件系统文档的哈希写入以太坊链,以便为其提供不可变的时间戳。 我们的数据字段应该看起来像 data: `web3.utils.toHex('IPFS hash')`。 现在任何人都可以查询该链并查看该文档的添加时间。
+ - 例如,假设我们想将星际文件系统文档的哈希写入以太坊链,以便为其提供不可变的时间戳。 我们的数据字段应该看起来像该数据:`web3.utils.toHex('IPFS hash')`。 现在任何人都可以查询该链并查看该文档的添加时间。
- 智能合约交易:在链上执行一些智能合约代码。 在这种情况下,数据字段应包含您希望执行的智能函数及任何参数。
- 有关实际示例,请查看此 [Hello World 教程](https://docs.alchemyapi.io/alchemy/tutorials/hello-world-smart-contract#step-8-create-the-transaction)中的第 8 步。
@@ -184,7 +184,7 @@ node index.js
### 9. 在内存池中查看您的交易 {#see-your-transaction-in-the-mempool}
-在您的 Alchemy 仪表板上打开[内存池页面](https://dashboard.alchemyapi.io/mempool),并通过您创建的应用程序筛选,以找到您的交易。 我们可以在这里观看交易从待处理状态转换到已开采状态(如果成功),或者从待处理状态转换到被丢弃状态(如果失败)。 确保页面保持在“全部”视图下,这样您就能捕捉到“已开采”、“待处理”和“被丢弃”的交易。 您还可以通过查找发送到地址 `0x31b98d14007bdee6372980898a0bbd31184523` 的交易来搜索您的交易。
+在您的 Alchemy 仪表板上打开[内存池页面](https://dashboard.alchemyapi.io/mempool),并通过您创建的应用程序筛选,以找到您的交易。 我们可以在这里观看交易从待处理状态转换到已开采状态(如果成功),或者从待处理状态转换到被丢弃状态(如果失败)。 确保页面保持在“全部”视图下,这样您就能捕捉到“已开采”、“待处理”和“被丢弃”的交易。 您还可以通过查找发送到地址 `0x31b98d14007bdee637298086988a0bbd31184523` 的交易来搜索您的交易。
要在找到交易后查看交易的详细信息,请选择交易哈希值,您将看到这样的视图:
diff --git a/src/content/translations/zh/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md b/src/content/translations/zh/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md
index ed8c076de93..9e1464f228a 100644
--- a/src/content/translations/zh/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md
+++ b/src/content/translations/zh/developers/tutorials/set-up-web3js-to-use-ethereum-in-javascript/index.md
@@ -8,7 +8,7 @@ tags:
skill: beginner
lang: zh
published: 2020-04-11
-source: EthereumDev
+source: 以太坊開發團隊
sourceUrl: https://ethereumdev.io/setup-web3js-to-use-the-ethereum-blockchain-in-javascript/
address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE"
---
@@ -27,25 +27,25 @@ address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE"
npm install web3 --save
```
-然后将 Web3.js 导入到 Node.js 脚本或 Browserify 前端项目,您可以使用下面的 JavaScript 代码行:
+接下来,要将 Web3.js 导入 Node.js 脚本或 Browserify 前端项目,您可以使用以下 JavaScript 代码行:
```js
const Web3 = require("web3")
```
-现在我们在项目中加入了库,我们需要对其进行初始化。 如果您的项目需要能够与区块链通信。 大部分以太坊库通过 RPC 的调用与[节点](/developers/docs/nodes-and-clients/)进行通信。 为了启动我们的 web3 服务提供器,我们会实例化一个 Web3 实例,将服务提供器的 URL 作为构造函数传递。 如果您有一个节点或 [ganache 实例在您的计算机上运行](https://ethereumdev.io/testing-your-smart-contract-with-existing-protocols-ganache-fork/),它看起来将是这样:
+现在我们在项目中加入了库,我们需要对其进行初始化。 您的项目需要能够与区块链通信。 大部分以太坊库通过 RPC 的调用与[节点](/developers/docs/nodes-and-clients/)进行通信。 要启动我们的 Web3 提供程序,我们将实例化一个 Web3 实例,并将该提供程序的 URL 作为构造函数传递。 如果您有一个节点或 [ganache 实例在您的计算机上运行](https://ethereumdev.io/testing-your-smart-contract-with-existing-protocols-ganache-fork/),它看起来将是这样:
```js
const web3 = new Web3("http://localhost:8545")
```
-如果您想直接访问托管节点,您可以使用 Infura 或 [Cloudfare](https://cloudflare-eth.com/) 提供的免费节点:
+如果您想直接访问托管节点,可以使用 Infura 或 [Cloudflare](https://cloudflare-eth.com/) 提供的免费节点:
```js
const web3 = new Web3("https://cloudflare-eth.com")
```
-为了测试我们是否正确配置了 web3 实例,我们将尝试使用 `getBlockNumber` 函数检索最新的区块编号。 此函数接受回调作为参数,并以整数形式返回区块编号。
+为了测试我们是否正确配置了 Web3 实例,我们将尝试使用 `getBlockNumber` 函数检索最新的区块编号。 该函数接受回调作为参数,并以整数形式返回区块编号。
```js
var Web3 = require("web3")
@@ -56,7 +56,7 @@ web3.eth.getBlockNumber(function (error, result) {
})
```
-如果您执行这个程序,它只会打印最新的区块编号:区块链的顶部。 您还可以使用 await/async 函数调用来避免在代码中的嵌套回调:
+如果您执行这个程序,它只会打印最新的区块编号:区块链的顶部。 您还可以使用 `await/async` 函数调用来避免在代码中嵌套回调:
```js
async function getBlockNumber() {
@@ -68,15 +68,15 @@ async function getBlockNumber() {
getBlockNumber()
```
-您可以在[官方 web3 文档](https://web3js.readthedocs.io/en/v1.2.6/web3-eth.html#)中查看 web3 实例上可用的所有函数。
+您可以在[官方 web3.js 文档](https://web3js.readthedocs.io/en/v1.2.6/web3-eth.html#)中查看该 Web3 实例上可用的所有函数。
大多数 Web3 库都是异步的,因为在后台,该库对返回结果的节点进行 JSON RPC 调用。
-如果您在浏览器中运行, 一些钱包直接注入一个 web3 实例,并且您应该尽可能地尝试使用它,特别是如果您计划与用户的以太坊地址交互以进行交易。
+如果您在浏览器中操作,一些钱包会直接注入 Web3 实例,您应该尽可能尝试使用它,特别是在您打算与用户的以太坊地址交互以进行交易时。
-下面是检测 MetaMask 钱包是否可用的代码段,如果可用,请尝试启用它。 稍后它将允许您读取用户的余额,并使它们能够验证您想让它们在以太坊区块链上进行的交易:
+下面的代码片段用来检测 MetaMask 钱包是否可用,如果可用,则尝试启用它。 稍后它将允许您读取用户的余额,并使它们能够验证您想让它们在以太坊区块链上进行的交易:
```js
if (window.ethereum != null) {
@@ -91,4 +91,4 @@ if (window.ethereum != null) {
}
```
-像 [Ethers.js](https://docs.ethers.io/ethers.js/html/) 这样的 web3.js 的替代品确实存在,但我们将把所有 JavaScript 教程都集中在 web3.js 上,因为它是在浏览器中与以太坊交互的官方库。 在下一个教程中,我们将了解[如何轻松监听区块链上的新传入区块并查看它们包含的内容](https://ethereumdev.io/listening-to-new-transactions-happening-on-the-blockchain/)。
+诸如 [Ethers.js](https://docs.ethers.io/) 这样的 web3.js 替代者确实存在,但我们的 JavaScript 教程将侧重于 web3.js,因为它是在浏览器中与以太坊交互的官方库。 在下一个教程中,我们将了解[如何轻松监听区块链上的新传入区块并查看它们包含的内容](https://ethereumdev.io/listening-to-new-transactions-happening-on-the-blockchain/)。
diff --git a/src/content/translations/zh/developers/tutorials/short-abi/index.md b/src/content/translations/zh/developers/tutorials/short-abi/index.md
new file mode 100644
index 00000000000..ec67a84a1b9
--- /dev/null
+++ b/src/content/translations/zh/developers/tutorials/short-abi/index.md
@@ -0,0 +1,552 @@
+---
+title: "实现 Calldata 优化的精简 ABI"
+description: 面向乐观卷叠优化智能合约
+author: Ori Pomerantz
+lang: zh
+tags:
+ - "二层网络"
+ - "乐观解决方案"
+ - "燃料"
+skill: intermediate
+published: 2022-04-01
+---
+
+## 引言 {#introduction}
+
+在本文中,你将了解[乐观卷叠](/developers/docs/scaling/optimistic-rollups)、乐观卷叠上的交易成本,以及不同的成本结构如何要求我们针对不同于以太坊主网上的因素进行优化。 您还将学习如何实现这种优化。
+
+### 充分披露 {#full-disclosure}
+
+我是 [Optimism](https://www.optimism.io/) 组织的一名全职员工,因此本文中的示例将在乐观卷叠上运行。 但是,本文解释的技术应该同样适用于其他卷叠。
+
+### 术语 {#terminology}
+
+讨论卷叠时,术语“一层网络” (L1) 是指主网,即以太坊生产网络。 术语“二层网络” (L2) 是指卷叠及任何其他系统,它们依赖一层网络获得安全性且大部分处理都在链下进行。
+
+## 如何能够进一步降低二层网络交易的费用? {#how-can-we-further-reduce-the-cost-of-L2-transactions}
+
+[乐观卷叠](/developers/docs/scaling/optimistic-rollups)必须保留每笔历史交易的记录,以便任何人都能够检查这些交易并验证当前状态是否正确。 将数据输入以太坊主网的最便宜方法是将其写为 calldata。 该解决方案获得 [Optimism](https://help.optimism.io/hc/en-us/articles/4413163242779-What-is-a-rollup-) 和 [Arbitrum](https://developer.offchainlabs.com/docs/rollup_basics#intro-to-rollups) 的采纳。
+
+### 二层网络的交易费用 {#cost-of-l2-transactions}
+
+二层网络的交易费用包括两部分:
+
+1. 二层网络处理费用,通常非常便宜
+2. 一层网络存储费用,与主网燃料费用相关
+
+撰写本文时,在乐观卷叠上,二层网络燃料费用是 0.001 [Gwei](https://ethereum.org/en/developers/docs/gas/#pre-london)。 另一方面,一层网络的燃料费用约为 40 gwei。 [点击此处可以查看当前价格](https://public-grafana.optimism.io/d/9hkhMxn7z/public-dashboard?orgId=1&refresh=5m)。
+
+calldata 一个字节的费用为 4 个燃料单位(如果值为零)或 16 个燃料单位(如果值是任何其他值)。 以太坊虚拟机上最昂贵的操作之一是写入存储。 将 32 字节的字写入二层网络存储的最高费用为 22100 个燃料单位。 目前,该费用是 22.1 gwei。 因此,如果我们可以仅保存 calldata 零字节,就能够将大约 200 个字节写入存储,并且仍然可以获利。
+
+### 应用程序二进制接口 {#the-abi}
+
+绝大多数交易都是从外部所有的帐户访问合约。 大多数合约都是用 Solidity 编写的,并根据[应用程序二进制接口](https://docs.soliditylang.org/en/latest/abi-spec.html#formal-specification-of-the-encoding)解释其数据字段。
+
+但是,应用程序二进制接口是为一层网络设计的,在一层网络上,calldata 一个字节的费用大约与四次算术运算相同,而在二层网络上,calldata 一个字节的费用超过一千次算术运算的费用。 例如,[此处提供一个 ERC-20 转账交易](https://kovan-optimistic.etherscan.io/tx/0x7ce4c144ebfce157b4de99d8ad53a352ae91b57b3fa06d8a1c79439df6bfa998)。 calldata 包括以下部分:
+
+| 部分 | 长度 | 字节 | 浪费的字节 | 浪费的燃料 | 所需字节 | 所需燃料 |
+| ---------- | ---: | ----: | ---------: | ---------: | -------: | -------: |
+| 函数选择器 | 4 | 0-3 | 3 | 48 | 1 | 16 |
+| 零值 | 12 | 4-15 | 12 | 48 | 0 | 0 |
+| 目标地址 | 20 | 16-35 | 0 | 0 | 20 | 320 |
+| 金额 | 32 | 36-67 | 17 | 64 | 15 | 240 |
+| 总计 | 68 | | | 160 | | 576 |
+
+注释:
+
+- **函数选择器**:合约有不到 256 个函数,所以可以用一个字节区分它们。 这些字节通常为非零字节,因此[花费 16 个 燃料单位](https://eips.ethereum.org/EIPS/eip-2028)。
+- **零值**:这些字节始终为零,因为 20 字节的地址不需要 32 字节的字来保存它。 保存零值的字节费用为 4 个燃料单位([见黄皮书](https://ethereum.github.io/yellowpaper/paper.pdf),附录 G 第 27 页的 `G``txdatazero` 的值)。
+- **金额**:如果我们假设在这个合约中 `decimals` 为 18(正常值)且我们转账的最大代币数量为 1018,我们得到的最大金额是 1036。 25615 > 1036,所以 15 个字节就足够了。
+
+一层网络上,160 个燃料单位的浪费通常可以忽略不计。 一笔交易至少要花费 [21,000 个燃料单位](https://yakkomajuri.medium.com/blockchain-definition-of-the-week-ethereum-gas-2f976af774ed),所以多出 0.8% 关系不大。 然而在二层网络上,情况有所不同。 几乎全部交易费用都用于写入一层网络。 除了交易 calldata 外,还有 109 字节的交易头(目的地址、签名等)。 因此,总费用为 `109*16+576+160=2480`,我们大约浪费了其中 6.5%。
+
+## 在你无法控制目标地址时降低费用 {#reducing-costs-when-you-dont-control-the-destination}
+
+假设你无法控制目标地址合约,你仍然可以使用与[此解决方案](https://github.com/qbzzt/ethereum.org-20220330-shortABI)类似的解决方案。 我们来学习一下相关文件。
+
+### Token.sol {#token.sol}
+
+[这是目标地址合约](https://github.com/qbzzt/ethereum.org-20220330-shortABI/blob/master/contracts/Token.sol)。 它是一个标准 ERC-20 合约,包括一个附加功能。 此 `faucet` 函数可以让任何用户获得一些代币来使用。 该函数会使 ERC-20 生产合约变得无用,但当 ERC-20 合约只是为了方便测试时,它会让工作变得更轻松。
+
+```solidity
+ /**
+ * @dev Gives the caller 1000 tokens to play with
+ */
+ function faucet() external {
+ _mint(msg.sender, 1000);
+ } // function faucet
+```
+
+[可以点击此处查看部署此合约的示例](https://kovan-optimistic.etherscan.io/address/0x950c753c0edbde44a74d3793db738a318e9c8ce8)。
+
+### CalldataInterpreter.sol {#calldatainterpreter.sol}
+
+[这是指示应使用较短的 calldata 调用交易的合约](https://github.com/qbzzt/ethereum.org-20220330-shortABI/blob/master/contracts/CalldataInterpreter.sol)。 我们逐行学习它。
+
+```solidity
+//SPDX-License-Identifier: Unlicense
+pragma solidity ^0.8.0;
+
+
+import { OrisUselessToken } from "./Token.sol";
+```
+
+我们需要代币函数以便知道如何调用它。
+
+```solidity
+contract CalldataInterpreter {
+
+ OrisUselessToken public immutable token;
+```
+
+我们作为代理的代币的地址。
+
+```solidity
+
+ /**
+ * @dev Specify the token address
+ * @param tokenAddr_ ERC-20 contract address
+ */
+ constructor(
+ address tokenAddr_
+ ) {
+ token = OrisUselessToken(tokenAddr_);
+ } // constructor
+```
+
+代币地址是我们需要指定的唯一参数。
+
+```solidity
+ function calldataVal(uint startByte, uint length)
+ private please return (uint)
+```
+
+从 calldata 中读取一个值。
+
+```solidity
+ uint _retVal;
+
+ require(length < 0x21,
+ "calldataVal length limit is 32 bytes");
+
+ require(length + startByte <= msg.data.length,
+ "calldataVal trying to read beyond calldatasize");
+```
+
+我们将一个 32 字节(256 位)的字加载到内存中,并删除不属于我们所需字段的字节。 该算法不适用于长度超过 32 个字节的值,当然我们不能读取 calldata 末尾以后。 在一层网络上,可能有必要忽略这些测试以节省燃料,但在二层网络上,燃料非常便宜,可以进行我们能想到的任何完整性检查。
+
+```solidity
+ assembly {
+ _retVal := calldataload(startByte)
+ }
+```
+
+我们本可以将调用中的数据复制到 `fallback()`(见下文),但使用以太坊虚拟机汇编语言 [Yul](https://docs.soliditylang.org/en/v0.8.12/yul.html) 更加简便。
+
+此处,我们使用 [CALLDATALOAD 操作码](https://www.evm.codes/#35)将字节 `startByte` 到 `startByte+31` 读取入栈。 一般来说,Yul 语言中操作码的语法是 `(,...)`。
+
+```solidity
+
+ _retVal = _retVal >> (256-length*8);
+```
+
+只有最重要的 `length` 字节是该字段的一部分,所以我们进行[右移](https://en.wikipedia.org/wiki/Logical_shift)操作,去除其他值。 带来的额外好处是将值移动到字段右边,因此它是值本身而不是值乘以 256x。
+
+```solidity
+
+ return _retVal;
+ }
+
+
+ fallback() external {
+```
+
+当对 Solidity 合约的调用不匹配任何函数签名时,它会调用 [`fallback()` 函数](https://docs.soliditylang.org/en/v0.8.12/contracts.html#fallback-function)(假设有此函数)。 在 `CalldataInterpreter` 的情况下,*任何*调用都会调用该函数,因为没有其他 `external` 或 `public` 函数。
+
+```solidity
+ uint _func;
+
+ _func = calldataVal(0, 1);
+```
+
+读取 calldata 的第一个字节,它显示函数。 此处可能没有函数,原因有两个:
+
+1. `pure` 或 `view` 函数不会改变状态,也不会消耗燃料(在链下调用时)。 尝试降低它们的燃料费用没有意义。
+2. 依赖 [`msg.sender`](https://docs.soliditylang.org/en/v0.8.12/units-and-global-variables.html#block-and-transaction-properties) 的函数。 `msg.sender` 的值将成为 `CalldataInterpreter` 而不是调用者的地址。
+
+遗憾的是,[考虑到 ERC-20 规范](https://eips.ethereum.org/EIPS/eip-20),这样就只剩下一个函数 `transfer`。 我们只能使用两个函数:`transfer`(因为我们可以调用 `transferFrom`)和 `faucet`(因为我们可以将代币转账回任何调用者)。
+
+```solidity
+
+ // Call the state changing methods of token using
+ // information from the calldata
+
+ // faucet
+ if (_func == 1) {
+```
+
+对 `faucet()` 的调用,它没有参数。
+
+```solidity
+ token.faucet();
+ token.transfer(msg.sender,
+ token.balanceOf(address(this)));
+ }
+```
+
+在调用 `token.faucet()` 后,我们得到了代币。 但是,作为代理合约,我们并不**需要**代币。 调用我们的外部所有的帐户 (EOA) 或合约需要代币。 因此,我们将全部代币转账给任何调用者。
+
+```solidity
+ // transfer (assume we have an allowance for it)
+ if (_func == 2) {
+```
+
+转账代币需要两个参数:目的地址和金额。
+
+```solidity
+ token.transferFrom(
+ msg.sender,
+```
+
+我们只允许调用者转账他们拥有的代币
+
+```solidity
+ address(uint160(calldataVal(1, 20))),
+```
+
+目标地址从字节 #1 开始(字节 #0 是函数)。 作为地址,其长为 20 个字节。
+
+```solidity
+ calldataVal(21, 2)
+```
+
+对于此特定合约,假设任何人想要转账的最大代币数量可存入两个字节(小于 65536)。
+
+```solidity
+ );
+ }
+```
+
+总的来说,一次转账需要使用 calldata 的 35 个字节:
+
+| 部分 | 长度 | 字节 |
+| ---------- | ---: | ----: |
+| 函数选择器 | 1 | 0 |
+| 目标地址 | 32 | 1-32 |
+| 金额 | 2 | 33-34 |
+
+```solidity
+ } // fallback
+
+} // contract CalldataInterpreter
+```
+
+### test.js {#test.js}
+
+[此 JavaScript 单元测试](https://github.com/qbzzt/ethereum.org-20220330-shortABI/blob/master/test/test.js)展示了如何使用此机制(以及如何验证它是否正常运作)。 本文假设你了解 [chai](https://www.chaijs.com/) 和 [ethers](https://docs.ethers.io/v5/) 并且只解释专门适用于此合约的部分。
+
+```js
+const { expect } = require("chai");
+
+describe("CalldataInterpreter", function () {
+ it("Should let us use tokens", async function () {
+ const Token = await ethers.getContractFactory("OrisUselessToken")
+ const token = await Token.deploy()
+ await token.deployed()
+ console.log("Token addr:", token.address)
+
+ const Cdi = await ethers.getContractFactory("CalldataInterpreter")
+ const cdi = await Cdi.deploy(token.address)
+ await cdi.deployed()
+ console.log("CalldataInterpreter addr:", cdi.address)
+
+ const signer = await ethers.getSigner()
+```
+
+我们首先部署两个合约。
+
+```javascript
+ // Get tokens to play with
+ const faucetTx = {
+```
+
+我们不能使用经常使用的高级函数(例如 `token.faucet()`)来创建交易,因为我们没有遵循应用程序二进制接口。 相反,我们必须自己构建交易然后发送它。
+
+```javascript
+ to: cdi.address,
+ data: "0x01"
+```
+
+我们需要为交易提供两个参数:
+
+1. `to`,目标地址。 这是 calldata 解释器合约。
+2. `data`,要发送的 calldata。 在水龙头调用的情况下,数据是单字节 `0x01`。
+
+```javascript
+
+ }
+ await (await signer.sendTransaction(faucetTx)).wait()
+```
+
+我们调用[签名者的 `sendTransaction` 方法](https://docs.ethers.io/v5/api/signer/#Signer-sendTransaction),因为我们已经指定了目标地址 (`faucetTx.to`),我们需要对交易进行签名。
+
+```javascript
+// Check the faucet provides the tokens correctly
+expect(await token.balanceOf(signer.address)).to.equal(1000)
+```
+
+在此处,我们验证余额。 `view` 函数不需要节省燃料,我们只需正常运行它们即可。
+
+```javascript
+// Give the CDI an allowance (approvals cannot be proxied)
+const approveTX = await token.approve(cdi.address, 10000)
+await approveTX.wait()
+expect(await token.allowance(signer.address, cdi.address)).to.equal(10000)
+```
+
+给 calldata 解释器提供一个能够转账的限额。
+
+```javascript
+// Transfer tokens
+const destAddr = "0xf5a6ead936fb47f342bb63e676479bddf26ebe1d"
+const transferTx = {
+ to: cdi.address,
+ data: "0x02" + destAddr.slice(2, 42) + "0100",
+}
+```
+
+创建一个转账交易。 第一个字节是“0x02”,后面是目标地址,最后是金额(0x0100,十进制表示为 256)。
+
+```javascript
+ await (await signer.sendTransaction(transferTx)).wait()
+
+ // Check that we have 256 tokens less
+ expect (await token.balanceOf(signer.address)).to.equal(1000-256)
+
+ // And that our destination got them
+ expect (await token.balanceOf(destAddr)).to.equal(256)
+ }) // it
+}) // describe
+```
+
+### 示例 {#example}
+
+如果不想自己运行,要查看这些文件的运行情况,请点击以下链接:
+
+1. [将 `OrisUselessToken`](https://kovan-optimistic.etherscan.io/tx/1410744) 部署到[地址 `0x950c753c0edbde44a74d3793db738a318e9c8ce8`](https://kovan-optimistic.etherscan.io/address/0x950c753c0edbde44a74d3793db738a318e9c8ce8)。
+2. [将 `CalldataInterpreter`](https://kovan-optimistic.etherscan.io/tx/1410745) 部署到[地址 `0x16617fea670aefe3b9051096c0eb4aeb4b3a5f55`](https://kovan-optimistic.etherscan.io/address/0x16617fea670aefe3b9051096c0eb4aeb4b3a5f55)。
+3. [调用 `faucet()`](https://kovan-optimistic.etherscan.io/tx/1410746)。
+4. [调用 `OrisUselessToken.approve()`](https://kovan-optimistic.etherscan.io/tx/1410747)。 此调用必须直接转到代币合约,因为处理依赖于 `msg.sender`。
+5. [调用 `transfer()`](https://kovan-optimistic.etherscan.io/tx/1410748)。
+
+## 在你控制目标合约时降低费用 {#reducing-the-cost-when-you-do-control-the-destination-contract}
+
+如果你确实在控制目标合约,则可以创建绕过 `msg.sender` 检查的函数,因为它们信任 calldata 解释器。 [可以点击此处在 `control-contract` 分支中查看运作原理的示例](https://github.com/qbzzt/ethereum.org-20220330-shortABI/tree/control-contract)。
+
+如果合约只响应外部交易,我们可以通过只拥有一份合约来解决。 但是,这会破坏[可组合性](/developers/docs/smart-contracts/composability/)。 一个合约响应正常 ERC-20 调用,另一个合约使用短调用数据响应交易,这样要好得多。
+
+### Token.sol {#token.sol-2}
+
+在本示例中,我们可以修改 `Token.sol`。 这让我们拥有许多只有代理才可能调用的函数。 以下是新的部分:
+
+```solidity
+ // The only address allowed to specify the CalldataInterpreter address
+ address owner;
+
+ // The CalldataInterpreter address
+ address proxy = address(0);
+```
+
+ERC-20 合约需要知道授权代理的身份。 但是,我们不能在构造函数中设置该变量,因为我们还不知道它的值。 该合约首先被实例化,因为代理期望在其构造函数中得到代币的地址。
+
+```solidity
+ /**
+ * @dev Calls the ERC20 constructor.
+ */
+ constructor(
+ ) ERC20("Oris useless token-2", "OUT-2") {
+ owner = msg.sender;
+ }
+```
+
+创建者的地址(称为 `owner`)存储在此处,因为它是唯一允许设置代理的地址。
+
+```solidity
+ /**
+ * @dev set the address for the proxy (the CalldataInterpreter).
+ * Can only be called once by the owner
+ */
+ function setProxy(address _proxy) external {
+ require(msg.sender == owner, "Can only be called by owner");
+ require(proxy == address(0), "Proxy is already set");
+
+ proxy = _proxy;
+ } // function setProxy
+```
+
+代理具有特权访问权限,因为它可以绕过安全检查。 为了确保我们可以信任代理,我们只让 `owner` 调用此函数,而且只调用一次。 一旦 `proxy` 有一个真实的值(非零值),这个值就不能改变,所以即使所有者决定耍无赖,或者它的助记符被泄露,我们仍然是安全的。
+
+```solidity
+ /**
+ * @dev Some functions may only be called by the proxy.
+ */
+ modifier onlyProxy {
+```
+
+这是一个 [`modifier` 函数](https://www.tutorialspoint.com/solidity/solidity_function_modifiers.htm),它修改其他函数的工作方式。
+
+```solidity
+ require(msg.sender == proxy);
+```
+
+首先,核实我们被代理而非任何其他调用者调用。 如果不是,`revert`。
+
+```solidity
+ _;
+ }
+```
+
+如果是这样,运行我们修改的函数。
+
+```solidity
+ /* Functions that allow the proxy to actually proxy for accounts */
+
+ function transferProxy(address from, address to, uint256 amount)
+ public virtual onlyProxy() returns (bool)
+ {
+ _transfer(from, to, amount);
+ return true;
+ }
+
+ function approveProxy(address from, address spender, uint256 amount)
+ public virtual onlyProxy() returns (bool)
+ {
+ _approve(from, spender, amount);
+ return true;
+ }
+
+ function transferFromProxy(
+ address spender,
+ address from,
+ address to,
+ uint256 amount
+ ) public virtual onlyProxy() returns (bool)
+ {
+ _spendAllowance(from, spender, amount);
+ _transfer(from, to, amount);
+ return true;
+ }
+```
+
+这三项操作通常要求信息直接来自转移代币或批准限额的实体。 此处,我们有一个代理版本执行这些操作,此代理:
+
+1. 由 `onlyProxy()` 修改,因此没有任何其他方可以控制它们。
+2. 获取通常为 `msg.sender` 的地址作为额外参数。
+
+### CalldataInterpreter.sol {#calldatainterpreter.sol-2}
+
+此 calldata 解释器几乎与上面的解释器相同,只是被代理的函数接收 `msg.sender` 参数并且 `transfer` 不需要限额。
+
+```solidity
+ // transfer (no need for allowance)
+ if (_func == 2) {
+ token.transferProxy(
+ msg.sender,
+ address(uint160(calldataVal(1, 20))),
+ calldataVal(21, 2)
+ );
+ }
+
+ // approve
+ if (_func == 3) {
+ token.approveProxy(
+ msg.sender,
+ address(uint160(calldataVal(1, 20))),
+ calldataVal(21, 2)
+ );
+ }
+
+ // transferFrom
+ if (_func == 4) {
+ token.transferFromProxy(
+ msg.sender,
+ address(uint160(calldataVal( 1, 20))),
+ address(uint160(calldataVal(21, 20))),
+ calldataVal(41, 2)
+ );
+ }
+```
+
+### Test.js {#test.js-2}
+
+前面的测试代码和这段代码之间有一些变化。
+
+```js
+const Cdi = await ethers.getContractFactory("CalldataInterpreter")
+const cdi = await Cdi.deploy(token.address)
+await cdi.deployed()
+await token.setProxy(cdi.address)
+```
+
+我们需要告诉 ERC-20 合约信任哪个代理
+
+```js
+console.log("CalldataInterpreter addr:", cdi.address)
+
+// Need two signers to verify allowances
+const signers = await ethers.getSigners()
+const signer = signers[0]
+const poorSigner = signers[1]
+```
+
+要检查 `approve()` 和 `transferFrom()`,我们需要第二个签名者。 我们称它为 `poorSigner`,因为它没有获得我们的任何代币(当然它确实需要以太币)。
+
+```js
+// Transfer tokens
+const destAddr = "0xf5a6ead936fb47f342bb63e676479bddf26ebe1d"
+const transferTx = {
+ to: cdi.address,
+ data: "0x02" + destAddr.slice(2, 42) + "0100",
+}
+await (await signer.sendTransaction(transferTx)).wait()
+```
+
+因为此 ERC-20 合约信任代理 (`cdi`),所以我们不需要设置传送转账的限额。
+
+```js
+// approval and transferFrom
+const approveTx = {
+ to: cdi.address,
+ data: "0x03" + poorSigner.address.slice(2, 42) + "00FF",
+}
+await (await signer.sendTransaction(approveTx)).wait()
+
+const destAddr2 = "0xE1165C689C0c3e9642cA7606F5287e708d846206"
+
+const transferFromTx = {
+ to: cdi.address,
+ data: "0x04" + signer.address.slice(2, 42) + destAddr2.slice(2, 42) + "00FF",
+}
+await (await poorSigner.sendTransaction(transferFromTx)).wait()
+
+// Check the approve / transeferFrom combo was done correctly
+expect(await token.balanceOf(destAddr2)).to.equal(255)
+```
+
+测试两个新函数。 请注意,`transeferFromTx` 需要两个地址参数:限额的提供者和接收者。
+
+### 示例 {#example-2}
+
+如果你不想自己运行,要查看这些文件的运行情况,请点击以下链接:
+
+1. [将 `OrisUselessToken-2`](https://kovan-optimistic.etherscan.io/tx/1475397) 部署到地址 [`0xb47c1f550d8af70b339970c673bbdb2594011696`](https://kovan-optimistic.etherscan.io/address/0xb47c1f550d8af70b339970c673bbdb2594011696)。
+2. [将 `CalldataInterpreter`](https://kovan-optimistic.etherscan.io/tx/1475400) 部署到地址 [`0x0dccfd03e3aaba2f8c4ea4008487fd0380815892`](https://kovan-optimistic.etherscan.io/address/0x0dccfd03e3aaba2f8c4ea4008487fd0380815892)。
+3. [调用 `setProxy()`](https://kovan-optimistic.etherscan.io/tx/1475402)。
+4. [调用 `faucet()`](https://kovan-optimistic.etherscan.io/tx/1475409)。
+5. [调用 `transferProxy()`](https://kovan-optimistic.etherscan.io/tx/1475416)。
+6. [调用 `approveProxy()`](https://kovan-optimistic.etherscan.io/tx/1475419)。
+7. [调用 `transferFromProxy()`](https://kovan-optimistic.etherscan.io/tx/1475421)。 请注意,此调用的地址不同于其他调用,即由 `poorSigner` 而不是 `signer` 调用。
+
+## 总结 {#conclusion}
+
+[Optimism](https://medium.com/ethereum-optimism/the-road-to-sub-dollar-transactions-part-2-compression-edition-6bb2890e3e92) 和 [Arbitrum](https://developer.offchainlabs.com/docs/special_features) 组织都在不断寻找方法,以期减小写入一层网络的 calldata 的长度并且因而降低交易费用。 然而,作为寻求通用解决方案的基础设施提供商,我们的能力有限。 你是去中心化应用程序开发者,具备特定的应用程序知识,因此你可以在通用解决方案中比我们更好地优化 calldata。 希望本文能帮助你找到满足你需求的理想解决方案。
diff --git a/src/content/translations/zh/developers/tutorials/smart-contract-security-guidelines/index.md b/src/content/translations/zh/developers/tutorials/smart-contract-security-guidelines/index.md
index a8502dc208a..fc7f80e90ce 100644
--- a/src/content/translations/zh/developers/tutorials/smart-contract-security-guidelines/index.md
+++ b/src/content/translations/zh/developers/tutorials/smart-contract-security-guidelines/index.md
@@ -76,7 +76,7 @@ sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/devel
- **编写详尽的单元测试。**全面的测试套件对于构建高质量的软件至关重要。
- **编写[Slither](https://github.com/crytic/slither)、[Echidna](https://github.com/crytic/echidna)和[Manticore](https://github.com/trailofbits/manticore)自定义检查和属性。**自动化工具将帮助确保您的合约安全。 查看本指南的其余部分,了解如何编写高效的检查和属性。
-- **使用[crytic.io](https://crytic.io/)。**Crytic 与 GitHub 集成,提供对私有 Slither 探测器的访问,并从 Echidna 运行自定义属性检查。
+- **使用[crytic.io](https://crytic.io/)。**Crytic 与 Github 集成,提供对私有 Slither 探测器的访问,并从 Echidna 运行自定义属性检查。
### Solidity {#solidity}
diff --git a/src/content/translations/zh/developers/tutorials/solidity-and-truffle-continuous-integration-setup/index.md b/src/content/translations/zh/developers/tutorials/solidity-and-truffle-continuous-integration-setup/index.md
index 9e1571582e8..95894649d63 100644
--- a/src/content/translations/zh/developers/tutorials/solidity-and-truffle-continuous-integration-setup/index.md
+++ b/src/content/translations/zh/developers/tutorials/solidity-and-truffle-continuous-integration-setup/index.md
@@ -102,7 +102,7 @@ workflows:
Eth-gas-reporter 插件对于记录您的智能合约函数的 gas 成本相当有用。 在您的 CI 中使用它,将进一步有助于在添加拉取请求时显示差异。
-### 第 1 步:安装 eth-gas-reporter 插件和 Codechecks {#step-1-install-the-eth-gas-reporter-plugin-and-codechecks}
+### 第 1 步:安装 eth-gas-reporter 插件和 {#step-1-install-the-eth-gas-reporter-plugin-and-codechecks}
```bash
$ npm install --save-dev eth-gas-reporter
@@ -142,13 +142,13 @@ checks:
### 第 5 步:创建一个 Codechecks 帐户 {#step-5-create-a-codechecks-account}
- 使用 [Codechecks](http://codechecks.io/) 创建一个帐户。
-- 将 GitHub repo 添加到其中。
+- 将 GitHub 存储库添加到其中。
- 复制密钥并将 `CC_SECRET=COPIED SECRET` 添加到您的 CI( [Travis](https://docs.travis-ci.com/user/environment-variables/) 参见这里,[CircleCi](https://circleci.com/docs/2.0/env-vars/#setting-an-environment-variable-in-a-project) 参见这里)。
- 现在继续创建拉取请求。
这就完成了。 现在,您将看到一份关于您的拉取请求的 gas 成本变化的报告。
-![Gas 成本报告示例](../../../../../developers/tutorials/solidity-and-truffle-continuous-integration-setup/gas-reports.png)
+![Gas 成本报告示例](./gas-reports.png)
## 添加 solidity-coverage 插件 {#adding-the-solidity-coverage-plugin}
@@ -183,15 +183,15 @@ Solidity coverage 启动了它自己的 ganache-cli,所以我们不必担心
### 第 4 步:将 repository 添加到 Coveralls {#step-4-add-repository-to-coveralls}
- 使用 [Coveralls](https://coveralls.io/) 创建一个帐户
-- 添加 GitHub repo 到 Coverall
-- 创建拉取请求
+- 将 GitHub 存储库添加到其中。
+- 现在继续创建拉取请求。
-![Coverall 示例](../../../../../developers/tutorials/solidity-and-truffle-continuous-integration-setup/coverall.png)
+![Coverall 示例](./coverall.png)
## 进一步的想法 {#further-ideas}
- [MythX](https://mythx.io/):使用 MythX,您可以自动分析智能合约的安全性。 因此, [将其添加到您的 CI](https://blog.mythx.io/howto/mythx-and-continuous-integration-part-1-circleci/) 是非常有意义的。
-- [检查](https://wikipedia.org/wiki/Lint_%28software%29):好的代码在某种程度上可以通过检查工具来实现。 [Eslint](https://eslint.org/) 对于 JavaScript 来说非常有用,[很容易设置](https://eslint.org/docs/user-guide/getting-started),[Solhint](https://protofire.github.io/solhint/) 可以用于 Solidity。
+- [Linting](https://wikipedia.org/wiki/Lint_%28software%29):好代码可以在一定程度上通过 linting 工具强制执行。 [Eslint](https://eslint.org/) 非常适合 JavaScript 并且[便于设置](https://eslint.org/docs/user-guide/getting-started),而 [Solhint](https://protofire.github.io/solhint/) 可用于 Solidity。
- 长测试:有时您可能想要添加极端测试,例如使用数百名用户测试一个合约。 这需要很长时间。 不要在每次测试运行中都运行它们,而是将它们添加到 CI 中。
这是全部内容了。 持续集成是您开发中非常有用的战略。 您可以在 [Truffle-CI-example](https://github.com/gorgos/Truffle-CI-Example) 查看完整的示例。 请务必移除 Circle-CI 或 Travis,只使用一个就够了!
diff --git a/src/content/translations/zh/developers/tutorials/testing-erc-20-tokens-with-waffle/index.md b/src/content/translations/zh/developers/tutorials/testing-erc-20-tokens-with-waffle/index.md
new file mode 100644
index 00000000000..6df0b28772d
--- /dev/null
+++ b/src/content/translations/zh/developers/tutorials/testing-erc-20-tokens-with-waffle/index.md
@@ -0,0 +1,1136 @@
+---
+title: 使用 Waffle 测试 ERC-20 代币
+description: 学习如何测试 Solidity 智能合约,以及如何将智能合约匹配器与 Waffle 配合使用
+author: Vladislav Starostenko
+tags:
+ - "waffle"
+ - "智能合约"
+ - "solidity"
+ - "测试"
+ - "erc-20"
+skill: intermediate
+lang: zh
+published: 2020-10-16
+---
+
+在本教程中,您将学习如何:
+
+- 使用 Waffle 编写智能合约测试
+- 使用一些流行的匹配器,配合 Waffle 来测试智能合约
+
+本文假定:
+
+- 您熟悉终端操作,
+- 您能够创建一个新的 `JavaScript` 项目,
+- 您写过一些 `Solidity` 代码,
+- 您使用 `JavaScript` 写过一些测试,
+- 您使用过 JavaScripts 的包安装程序,`yarn` 或 `npm`。
+
+再次强调,如果您不符合其中任何一条,或者您不打算敲本文中的代码,您照着学仍然可以学得很好。
+
+## 关于 Waffle 的几句话 {#a-few-words-about-waffle}
+
+[Waffle](https://getwaffle.io) 是用于编写和测试智能合约的最先进的库。
+
+使用 [JavaScript API](/developers/docs/apis/javascript/) ethers-js。
+
+您可以在 [Waffle 文档](https://ethereum-waffle.readthedocs.io/en/latest/#waffle-documentation)中阅读更多详细信息!
+
+## 快速教程 {#the-quick-tutorial}
+
+首先,创建新的 `JavaScript` 或 `TypeScript` 项目(我将使用 `TS`,但如果您使用 `JS`,问题也不大 ):
+
+有点像这样:
+
+
+package.json
+
+ {
+ "name": "tutorial",
+ "version": "1.0.0",
+ "main": "index.js",
+ "license": "MIT",
+ "scripts": {
+ "test": "export NODE_ENV=test && mocha",
+ "lint": "eslint '{src,test}/**/*.ts'",
+ "lint:fix": "eslint --fix '{src,test}/**/*.ts'",
+ "build": "waffle"
+ },
+ "devDependencies": {
+ "@types/mocha": "^5.2.7",
+ "@typescript-eslint/eslint-plugin": "^2.30.0",
+ "@typescript-eslint/parser": "^2.30.0",
+ "eslint": "^6.8.0",
+ "eslint-plugin-import": "^2.20.2",
+ "ethers": "^5.0.17",
+ "mocha": "^7.1.2",
+ "ts-node": "^8.9.1",
+ "typescript": "^3.8.3"
+ }
+ }
+
+
+
+
+tsconfig.json
+
+ {
+ "compilerOptions": {
+ "declaration": true,
+ "esModuleInterop": true,
+ "lib": [
+ "ES2018"
+ ],
+ "module": "CommonJS",
+ "moduleResolution": "node",
+ "outDir": "dist",
+ "resolveJsonModule": true,
+ "skipLibCheck": true,
+ "strict": true,
+ "target": "ES2018"
+ }
+ }
+
+
+
+
+.gitignore
+
+ node_modules
+ build
+
+
+
+
+.eslintrc.js
+
+ module.exports = {
+ "env": {
+ "es6": true
+ },
+ "extends": [
+ "plugin:@typescript-eslint/recommended",
+ "plugin:import/errors",
+ "plugin:import/warnings",
+ "plugin:import/typescript"
+ ],
+ "parser": "@typescript-eslint/parser",
+ "parserOptions": {
+ "project": "./tsconfig.json",
+ "sourceType": "module"
+ },
+ "rules": {
+ "@typescript-eslint/camelcase": "off",
+ "@typescript-eslint/explicit-function-return-type": "off",
+ "@typescript-eslint/explicit-member-accessibility": [
+ "error",
+ {
+ "accessibility": "no-public",
+ "overrides": {
+ "parameterProperties": "off"
+ }
+ }
+ ],
+ "@typescript-eslint/indent": [
+ "error",
+ 2,
+ {
+ "ArrayExpression": 1,
+ "CallExpression": {
+ "arguments": 1
+ },
+ "FunctionDeclaration": {
+ "body": 1,
+ "parameters": 1
+ },
+ "FunctionExpression": {
+ "body": 1,
+ "parameters": 1
+ },
+ "ImportDeclaration": 1,
+ "MemberExpression": 1,
+ "ObjectExpression": 1,
+ "SwitchCase": 1,
+ "VariableDeclarator": 1,
+ "flatTernaryExpressions": false,
+ "ignoreComments": false,
+ "outerIIFEBody": 1
+ }
+ ],
+ "@typescript-eslint/interface-name-prefix": "off",
+ "@typescript-eslint/member-delimiter-style": [
+ "error",
+ {
+ "multiline": {
+ "delimiter": "semi",
+ "requireLast": true
+ },
+ "singleline": {
+ "delimiter": "semi",
+ "requireLast": false
+ }
+ }
+ ],
+ "@typescript-eslint/no-explicit-any": "off",
+ "@typescript-eslint/no-parameter-properties": "off",
+ "@typescript-eslint/no-unused-vars": [
+ "error",
+ {
+ "args": "none",
+ "ignoreRestSiblings": true,
+ "vars": "all"
+ }
+ ],
+ "@typescript-eslint/no-use-before-define": "off",
+ "@typescript-eslint/no-useless-constructor": "error",
+ "@typescript-eslint/no-var-requires": "warn",
+ "accessor-pairs": "error",
+ "array-bracket-spacing": [
+ "error",
+ "never"
+ ],
+ "arrow-spacing": [
+ "error",
+ {
+ "after": true,
+ "before": true
+ }
+ ],
+ "block-spacing": [
+ "error",
+ "always"
+ ],
+ "brace-style": [
+ "error",
+ "1tbs",
+ {
+ "allowSingleLine": true
+ }
+ ],
+ "camelcase": "off",
+ "comma-dangle": [
+ "error",
+ {
+ "arrays": "never",
+ "exports": "never",
+ "functions": "never",
+ "imports": "never",
+ "objects": "never"
+ }
+ ],
+ "comma-spacing": [
+ "error",
+ {
+ "after": true,
+ "before": false
+ }
+ ],
+ "comma-style": [
+ "error",
+ "last"
+ ],
+ "computed-property-spacing": [
+ "error",
+ "never"
+ ],
+ "constructor-super": "error",
+ "curly": [
+ "error",
+ "multi-line"
+ ],
+ "dot-location": [
+ "error",
+ "property"
+ ],
+ "eol-last": "error",
+ "eqeqeq": [
+ "error",
+ "always",
+ {
+ "null": "ignore"
+ }
+ ],
+ "func-call-spacing": [
+ "error",
+ "never"
+ ],
+ "generator-star-spacing": [
+ "error",
+ {
+ "after": true,
+ "before": true
+ }
+ ],
+ "handle-callback-err": [
+ "error",
+ "^(err|error)$"
+ ],
+ "import/default": "off",
+ "import/named": "off",
+ "import/no-extraneous-dependencies": [
+ "error",
+ {
+ "devDependencies": false
+ }
+ ],
+ "import/no-unresolved": "off",
+ "indent": "off",
+ "key-spacing": [
+ "error",
+ {
+ "afterColon": true,
+ "beforeColon": false
+ }
+ ],
+ "keyword-spacing": [
+ "error",
+ {
+ "after": true,
+ "before": true
+ }
+ ],
+ "linebreak-style": [
+ "error",
+ "unix"
+ ],
+ "lines-between-class-members": [
+ "error",
+ "always",
+ {
+ "exceptAfterSingleLine": true
+ }
+ ],
+ "max-len": [
+ "error",
+ {
+ "code": 120
+ }
+ ],
+ "new-cap": [
+ "error",
+ {
+ "capIsNew": false,
+ "newIsCap": true
+ }
+ ],
+ "new-parens": "error",
+ "no-array-constructor": "error",
+ "no-async-promise-executor": "error",
+ "no-caller": "error",
+ "no-class-assign": "error",
+ "no-compare-neg-zero": "error",
+ "no-cond-assign": "error",
+ "no-const-assign": "error",
+ "no-constant-condition": [
+ "error",
+ {
+ "checkLoops": false
+ }
+ ],
+ "no-control-regex": "error",
+ "no-debugger": "error",
+ "no-delete-var": "error",
+ "no-dupe-args": "error",
+ "no-dupe-keys": "error",
+ "no-duplicate-case": "error",
+ "no-empty-character-class": "error",
+ "no-empty-pattern": "error",
+ "no-eval": "error",
+ "no-ex-assign": "error",
+ "no-extend-native": "error",
+ "no-extra-bind": "error",
+ "no-extra-boolean-cast": "error",
+ "no-extra-parens": [
+ "error",
+ "functions"
+ ],
+ "no-fallthrough": "error",
+ "no-floating-decimal": "error",
+ "no-func-assign": "error",
+ "no-global-assign": "error",
+ "no-implied-eval": "error",
+ "no-inner-declarations": [
+ "error",
+ "functions"
+ ],
+ "no-invalid-regexp": "error",
+ "no-irregular-whitespace": "error",
+ "no-iterator": "error",
+ "no-label-var": "error",
+ "no-labels": [
+ "error",
+ {
+ "allowLoop": false,
+ "allowSwitch": false
+ }
+ ],
+ "no-lone-blocks": "error",
+ "no-misleading-character-class": "error",
+ "no-mixed-operators": [
+ "error",
+ {
+ "allowSamePrecedence": true,
+ "groups": [
+ [
+ "==",
+ "!=",
+ "===",
+ "!==",
+ ">",
+ ">=",
+ "<",
+ "<="
+ ],
+ [
+ "&&",
+ "||"
+ ],
+ [
+ "in",
+ "instanceof"
+ ]
+ ]
+ }
+ ],
+ "no-mixed-spaces-and-tabs": "error",
+ "no-multi-spaces": "error",
+ "no-multi-str": "error",
+ "no-multiple-empty-lines": [
+ "error",
+ {
+ "max": 1,
+ "maxEOF": 0
+ }
+ ],
+ "no-negated-in-lhs": "error",
+ "no-new": "error",
+ "no-new-func": "error",
+ "no-new-object": "error",
+ "no-new-require": "error",
+ "no-new-symbol": "error",
+ "no-new-wrappers": "error",
+ "no-obj-calls": "error",
+ "no-octal": "error",
+ "no-octal-escape": "error",
+ "no-path-concat": "error",
+ "no-proto": "error",
+ "no-prototype-builtins": "error",
+ "no-redeclare": [
+ "error",
+ {
+ "builtinGlobals": false
+ }
+ ],
+ "no-regex-spaces": "error",
+ "no-return-assign": [
+ "error",
+ "except-parens"
+ ],
+ "no-return-await": "error",
+ "no-self-assign": "error",
+ "no-self-compare": "error",
+ "no-sequences": "error",
+ "no-shadow-restricted-names": "error",
+ "no-sparse-arrays": "error",
+ "no-tabs": "error",
+ "no-template-curly-in-string": "error",
+ "no-this-before-super": "error",
+ "no-throw-literal": "error",
+ "no-trailing-spaces": "error",
+ "no-unexpected-multiline": "error",
+ "no-unmodified-loop-condition": "error",
+ "no-unneeded-ternary": [
+ "error",
+ {
+ "defaultAssignment": false
+ }
+ ],
+ "no-unreachable": "error",
+ "no-unsafe-finally": "error",
+ "no-unsafe-negation": "error",
+ "no-use-before-define": [
+ "error",
+ {
+ "classes": false,
+ "functions": false,
+ "variables": false
+ }
+ ],
+ "no-useless-call": "error",
+ "no-useless-catch": "error",
+ "no-useless-computed-key": "error",
+ "no-useless-escape": "error",
+ "no-useless-rename": "error",
+ "no-useless-return": "error",
+ "no-whitespace-before-property": "error",
+ "no-with": "error",
+ "object-curly-spacing": [
+ "error",
+ "never"
+ ],
+ "object-property-newline": [
+ "error",
+ {
+ "allowMultiplePropertiesPerLine": true
+ }
+ ],
+ "one-var": [
+ "error",
+ {
+ "initialized": "never"
+ }
+ ],
+ "operator-linebreak": [
+ "error",
+ "after",
+ {
+ "overrides": {
+ ":": "before",
+ "?": "before"
+ }
+ }
+ ],
+ "padded-blocks": [
+ "error",
+ {
+ "blocks": "never",
+ "classes": "never",
+ "switches": "never"
+ }
+ ],
+ "prefer-const": [
+ "error",
+ {
+ "destructuring": "all"
+ }
+ ],
+ "prefer-promise-reject-errors": "error",
+ "quote-props": [
+ "error",
+ "as-needed"
+ ],
+ "quotes": [
+ "error",
+ "single"
+ ],
+ "rest-spread-spacing": [
+ "error",
+ "never"
+ ],
+ "semi": [
+ "error",
+ "always"
+ ],
+ "semi-spacing": [
+ "error",
+ {
+ "after": true,
+ "before": false
+ }
+ ],
+ "space-before-blocks": [
+ "error",
+ "always"
+ ],
+ "space-before-function-paren": [
+ "error",
+ {
+ "anonymous": "always",
+ "named": "never",
+ "asyncArrow": "always"
+ }
+ ],
+ "space-in-parens": [
+ "error",
+ "never"
+ ],
+ "space-infix-ops": "error",
+ "space-unary-ops": [
+ "error",
+ {
+ "nonwords": false,
+ "words": true
+ }
+ ],
+ "spaced-comment": [
+ "error",
+ "always",
+ {
+ "block": {
+ "balanced": true,
+ "exceptions": [
+ "*"
+ ],
+ "markers": [
+ "*package",
+ "!",
+ ",",
+ ":",
+ "::",
+ "flow-include"
+ ]
+ },
+ "line": {
+ "markers": [
+ "*package",
+ "!",
+ "/",
+ ",",
+ "="
+ ]
+ }
+ }
+ ],
+ "symbol-description": "error",
+ "template-curly-spacing": [
+ "error",
+ "never"
+ ],
+ "template-tag-spacing": [
+ "error",
+ "never"
+ ],
+ "unicode-bom": [
+ "error",
+ "never"
+ ],
+ "use-isnan": "error",
+ "valid-typeof": [
+ "error",
+ {
+ "requireStringLiterals": true
+ }
+ ],
+ "wrap-iife": [
+ "error",
+ "any",
+ {
+ "functionPrototypeMethods": true
+ }
+ ],
+ "yield-star-spacing": [
+ "error",
+ "both"
+ ],
+ "yoda": [
+ "error",
+ "never"
+ ]
+ },
+ "overrides": [
+ {
+ "files": [
+ "test/**/*.ts"
+ ],
+ "rules": {
+ "@typescript-eslint/no-explicit-any": "off",
+ "@typescript-eslint/no-non-null-assertion": "off",
+ "@typescript-eslint/no-var-requires": "off",
+ "no-unused-expressions": "off",
+ "prefer-promise-reject-errors": "off",
+ "import/no-extraneous-dependencies": [
+ "error",
+ {
+ "devDependencies": true
+ }
+ ]
+ }
+ }
+ ]
+ }
+
+
+
+## 第 1 步:在项目中安装 waffle [文档链接](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#installation) {#step-1-install-waffle-in-your-project}
+
+准备开始,请安装 `ethereum-waffle`。 在本教程中,我会使用 `yarn`,因此,要安装 `ethereum-waffle`,请运行:
+
+```bash
+ yarn add --dev ethereum-waffle
+```
+
+## 第 2 步:编写智能合约 [文档链接](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-a-contract) {#step-2-write-a-smart-contract}
+
+在本教程中,我会使用 [ERC20](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/ded2b0a55c9c13731963ab7b85a70c8e73504bab/contracts/token/ERC20/ERC20.sol) 代币,它们来自 [OpenZepelin](https://openzeppelin.com)。
+
+因此,通过使用 `yarn` 安装 `OpenZepelin` 来添加它:
+
+```bash
+ yarn add @openzeppelin/contracts -D
+```
+
+然后在 `src` 目录中创建 `BasicToken.sol` 合约:
+
+```solidity
+pragma solidity ^0.6.0;
+
+import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
+
+// Example class - a mock class using delivering from ERC20
+contract BasicToken is ERC20 {
+ constructor(uint256 initialBalance) ERC20("Basic", "BSC") public {
+ _mint(msg.sender, initialBalance);
+ }
+}
+
+```
+
+## 第 3 步:编译智能合约 [文档链接](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#compiling-the-contract) {#step-3-compile-your-smart-contract}
+
+要编译智能合约,在您项目的 `package.json` 中添加以下条目:
+
+```json
+{
+ "scripts": {
+ "build": "waffle"
+ }
+}
+```
+
+并且在项目的根目录中添加 `waffle.json` 文件。
+
+一个 `waffle.json` 配置实例:
+
+```json
+{
+ "compilerType": "solcjs",
+ "compilerVersion": "0.6.2",
+ "sourceDirectory": "./src",
+ "outputDirectory": "./build"
+}
+```
+
+您可以在[这里](https://ethereum-waffle.readthedocs.io/en/latest/configuration.html#configuration)阅读更多关于 Waffle 配置的信息。
+
+然后只需运行 `yarn build` 来编译智能合约。
+
+您应该看到 Waffle 编译了您的合约,并将由此产生的 JSON 输出放置在 `build` 目录内。
+
+
+BasicToken.json
+
+ {
+ "abi": [
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "initialBalance",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "constructor"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "Approval",
+ "type": "event"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "from",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "to",
+ "type": "address"
+ },
+ {
+ "indexed": false,
+ "internalType": "uint256",
+ "name": "value",
+ "type": "uint256"
+ }
+ ],
+ "name": "Transfer",
+ "type": "event"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "owner",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ }
+ ],
+ "name": "allowance",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "approve",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "account",
+ "type": "address"
+ }
+ ],
+ "name": "balanceOf",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "decimals",
+ "outputs": [
+ {
+ "internalType": "uint8",
+ "name": "",
+ "type": "uint8"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "subtractedValue",
+ "type": "uint256"
+ }
+ ],
+ "name": "decreaseAllowance",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "spender",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "addedValue",
+ "type": "uint256"
+ }
+ ],
+ "name": "increaseAllowance",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "name",
+ "outputs": [
+ {
+ "internalType": "string",
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "symbol",
+ "outputs": [
+ {
+ "internalType": "string",
+ "name": "",
+ "type": "string"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "totalSupply",
+ "outputs": [
+ {
+ "internalType": "uint256",
+ "name": "",
+ "type": "uint256"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "recipient",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "transfer",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "sender",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "recipient",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "amount",
+ "type": "uint256"
+ }
+ ],
+ "name": "transferFrom",
+ "outputs": [
+ {
+ "internalType": "bool",
+ "name": "",
+ "type": "bool"
+ }
+ ],
+ "stateMutability": "nonpayable",
+ "type": "function"
+ }
+ ],
+ "evm": {
+ "bytecode": {
+ "linkReferences": {},
+ "object": "60806040523480156200001157600080fd5b506040516200153938038062001539833981810160405260208110156200003757600080fd5b81019080805190602001909291905050506040518060400160405280600581526020017f42617369630000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f42534300000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000cc92919062000389565b508060049080519060200190620000e592919062000389565b506012600560006101000a81548160ff021916908360ff16021790555050506200011633826200011d60201b60201c565b5062000438565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620001c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b620001d560008383620002fb60201b60201c565b620001f1816002546200030060201b62000f2d1790919060201c565b6002819055506200024f816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200030060201b62000f2d1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b505050565b6000808284019050838110156200037f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003cc57805160ff1916838001178555620003fd565b82800160010185558215620003fd579182015b82811115620003fc578251825591602001919060010190620003df565b5b5090506200040c919062000410565b5090565b6200043591905b808211156200043157600081600090555060010162000417565b5090565b90565b6110f180620004486000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461025f57806370a08231146102c557806395d89b411461031d578063a457c2d7146103a0578063a9059cbb14610406578063dd62ed3e1461046c576100a9565b806306fdde03146100ae578063095ea7b31461013157806318160ddd1461019757806323b872dd146101b5578063313ce5671461023b575b600080fd5b6100b66104e4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f65780820151818401526020810190506100db565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610586565b604051808215151515815260200191505060405180910390f35b61019f6105a4565b6040518082815260200191505060405180910390f35b610221600480360360608110156101cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ae565b604051808215151515815260200191505060405180910390f35b610243610687565b604051808260ff1660ff16815260200191505060405180910390f35b6102ab6004803603604081101561027557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061069e565b604051808215151515815260200191505060405180910390f35b610307600480360360208110156102db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610751565b6040518082815260200191505060405180910390f35b610325610799565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561036557808201518184015260208101905061034a565b50505050905090810190601f1680156103925780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ec600480360360408110156103b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061083b565b604051808215151515815260200191505060405180910390f35b6104526004803603604081101561041c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610908565b604051808215151515815260200191505060405180910390f35b6104ce6004803603604081101561048257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610926565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561057c5780601f106105515761010080835404028352916020019161057c565b820191906000526020600020905b81548152906001019060200180831161055f57829003601f168201915b5050505050905090565b600061059a6105936109ad565b84846109b5565b6001905092915050565b6000600254905090565b60006105bb848484610bac565b61067c846105c76109ad565b6106778560405180606001604052806028815260200161102660289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061062d6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6109b5565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107476106ab6109ad565b8461074285600160006106bc6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2d90919063ffffffff16565b6109b5565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108315780601f1061080657610100808354040283529160200191610831565b820191906000526020600020905b81548152906001019060200180831161081457829003601f168201915b5050505050905090565b60006108fe6108486109ad565b846108f98560405180606001604052806025815260200161109760259139600160006108726109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6109b5565b6001905092915050565b600061091c6109156109ad565b8484610bac565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110736024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610fde6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061104e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610fbb6023913960400191505060405180910390fd5b610cc3838383610fb5565b610d2e81604051806060016040528060268152602001611000602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610dc1816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f1a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610edf578082015181840152602081019050610ec4565b50505050905090810190601f168015610f0c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015610fab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122081c840f087cef92feccb03fadc678b2708c331896ec5432b5d4c675f27b6d3e664736f6c63430006020033",
+ "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1539 CODESIZE SUB DUP1 PUSH3 0x1539 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4261736963000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4253430000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 PUSH1 0x3 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0xCC SWAP3 SWAP2 SWAP1 PUSH3 0x389 JUMP JUMPDEST POP DUP1 PUSH1 0x4 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0xE5 SWAP3 SWAP2 SWAP1 PUSH3 0x389 JUMP JUMPDEST POP PUSH1 0x12 PUSH1 0x5 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP POP POP PUSH3 0x116 CALLER DUP3 PUSH3 0x11D PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP PUSH3 0x438 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH3 0x1C1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x1D5 PUSH1 0x0 DUP4 DUP4 PUSH3 0x2FB PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x1F1 DUP2 PUSH1 0x2 SLOAD PUSH3 0x300 PUSH1 0x20 SHL PUSH3 0xF2D OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP PUSH3 0x24F DUP2 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH3 0x300 PUSH1 0x20 SHL PUSH3 0xF2D OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH3 0x37F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x3CC JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x3FD JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x3FD JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x3FC JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x3DF JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH3 0x40C SWAP2 SWAP1 PUSH3 0x410 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH3 0x435 SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x431 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0x417 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x10F1 DUP1 PUSH3 0x448 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x25F JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2C5 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x31D JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x3A0 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x406 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x46C JUMPI PUSH2 0xA9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x197 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B5 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x23B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB6 PUSH2 0x4E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF6 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xDB JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x123 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x147 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x586 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x19F PUSH2 0x5A4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x221 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x5AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x243 PUSH2 0x687 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2AB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x275 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x69E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x307 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x325 PUSH2 0x799 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x365 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x34A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x392 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3EC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x83B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x452 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x41C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x908 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4CE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x926 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x57C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x551 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x57C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x55F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x59A PUSH2 0x593 PUSH2 0x9AD JUMP JUMPDEST DUP5 DUP5 PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5BB DUP5 DUP5 DUP5 PUSH2 0xBAC JUMP JUMPDEST PUSH2 0x67C DUP5 PUSH2 0x5C7 PUSH2 0x9AD JUMP JUMPDEST PUSH2 0x677 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1026 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x62D PUSH2 0x9AD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xE6D SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x747 PUSH2 0x6AB PUSH2 0x9AD JUMP JUMPDEST DUP5 PUSH2 0x742 DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x6BC PUSH2 0x9AD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xF2D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x831 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x806 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x831 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x814 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8FE PUSH2 0x848 PUSH2 0x9AD JUMP JUMPDEST DUP5 PUSH2 0x8F9 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1097 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x872 PUSH2 0x9AD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xE6D SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x91C PUSH2 0x915 PUSH2 0x9AD JUMP JUMPDEST DUP5 DUP5 PUSH2 0xBAC JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xA3B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1073 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xAC1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xFDE PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xC32 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x104E PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xCB8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xFBB PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xCC3 DUP4 DUP4 DUP4 PUSH2 0xFB5 JUMP JUMPDEST PUSH2 0xD2E DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1000 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xE6D SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0xDC1 DUP2 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xF2D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 GT ISZERO DUP3 SWAP1 PUSH2 0xF1A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xEDF JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xEC4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF0C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 SUB SWAP1 POP DUP1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0xFAB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F766520746F20746865207A65726F20616464 PUSH19 0x65737345524332303A207472616E7366657220 PUSH2 0x6D6F PUSH22 0x6E7420657863656564732062616C616E636545524332 ADDRESS GASPRICE KECCAK256 PUSH21 0x72616E7366657220616D6F756E7420657863656564 PUSH20 0x20616C6C6F77616E636545524332303A20747261 PUSH15 0x736665722066726F6D20746865207A PUSH6 0x726F20616464 PUSH19 0x65737345524332303A20617070726F76652066 PUSH19 0x6F6D20746865207A65726F2061646472657373 GASLIMIT MSTORE NUMBER ORIGIN ADDRESS GASPRICE KECCAK256 PUSH5 0x6563726561 PUSH20 0x656420616C6C6F77616E63652062656C6F77207A PUSH6 0x726FA2646970 PUSH7 0x735822122081C8 BLOCKHASH CREATE DUP8 0xCE 0xF9 0x2F 0xEC 0xCB SUB STATICCALL 0xDC PUSH8 0x8B2708C331896EC5 NUMBER 0x2B 0x5D 0x4C PUSH8 0x5F27B6D3E664736F PUSH13 0x63430006020033000000000000 ",
+ "sourceMap": "142:152:5:-:0;;;177:115;8:9:-1;5:2;;;30:1;27;20:12;5:2;177:115:5;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;177:115:5;;;;;;;;;;;;;;;;2013:141:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2093:4;2085:5;:12;;;;;;;;;;;;:::i;:::-;;2117:6;2107:7;:16;;;;;;;;;;;;:::i;:::-;;2145:2;2133:9;;:14;;;;;;;;;;;;;;;;;;2013:141;;252:33:5::1;258:10;270:14;252:5;;;:33;;:::i;:::-;177:115:::0;142:152;;7835:370:2;7937:1;7918:21;;:7;:21;;;;7910:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7986:49;8015:1;8019:7;8028:6;7986:20;;;:49;;:::i;:::-;8061:24;8078:6;8061:12;;:16;;;;;;:24;;;;:::i;:::-;8046:12;:39;;;;8116:30;8139:6;8116:9;:18;8126:7;8116:18;;;;;;;;;;;;;;;;:22;;;;;;:30;;;;:::i;:::-;8095:9;:18;8105:7;8095:18;;;;;;;;;;;;;;;:51;;;;8182:7;8161:37;;8178:1;8161:37;;;8191:6;8161:37;;;;;;;;;;;;;;;;;;7835:370;;:::o;10695:92::-;;;;:::o;874:176:1:-;932:7;951:9;967:1;963;:5;951:17;;991:1;986;:6;;978:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1042:1;1035:8;;;874:176;;;;:::o;142:152:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;"
+ },
+ "deployedBytecode": {
+ "linkReferences": {},
+ "object": "608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461025f57806370a08231146102c557806395d89b411461031d578063a457c2d7146103a0578063a9059cbb14610406578063dd62ed3e1461046c576100a9565b806306fdde03146100ae578063095ea7b31461013157806318160ddd1461019757806323b872dd146101b5578063313ce5671461023b575b600080fd5b6100b66104e4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100f65780820151818401526020810190506100db565b50505050905090810190601f1680156101235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610586565b604051808215151515815260200191505060405180910390f35b61019f6105a4565b6040518082815260200191505060405180910390f35b610221600480360360608110156101cb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506105ae565b604051808215151515815260200191505060405180910390f35b610243610687565b604051808260ff1660ff16815260200191505060405180910390f35b6102ab6004803603604081101561027557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061069e565b604051808215151515815260200191505060405180910390f35b610307600480360360208110156102db57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610751565b6040518082815260200191505060405180910390f35b610325610799565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561036557808201518184015260208101905061034a565b50505050905090810190601f1680156103925780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ec600480360360408110156103b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061083b565b604051808215151515815260200191505060405180910390f35b6104526004803603604081101561041c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610908565b604051808215151515815260200191505060405180910390f35b6104ce6004803603604081101561048257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610926565b6040518082815260200191505060405180910390f35b606060038054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561057c5780601f106105515761010080835404028352916020019161057c565b820191906000526020600020905b81548152906001019060200180831161055f57829003601f168201915b5050505050905090565b600061059a6105936109ad565b84846109b5565b6001905092915050565b6000600254905090565b60006105bb848484610bac565b61067c846105c76109ad565b6106778560405180606001604052806028815260200161102660289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061062d6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6109b5565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60006107476106ab6109ad565b8461074285600160006106bc6109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2d90919063ffffffff16565b6109b5565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108315780601f1061080657610100808354040283529160200191610831565b820191906000526020600020905b81548152906001019060200180831161081457829003601f168201915b5050505050905090565b60006108fe6108486109ad565b846108f98560405180606001604052806025815260200161109760259139600160006108726109ad565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6109b5565b6001905092915050565b600061091c6109156109ad565b8484610bac565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a3b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806110736024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610fde6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061104e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610fbb6023913960400191505060405180910390fd5b610cc3838383610fb5565b610d2e81604051806060016040528060268152602001611000602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610dc1816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f2d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290610f1a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610edf578082015181840152602081019050610ec4565b50505050905090810190601f168015610f0c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015610fab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122081c840f087cef92feccb03fadc678b2708c331896ec5432b5d4c675f27b6d3e664736f6c63430006020033",
+ "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x25F JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2C5 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x31D JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x3A0 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x406 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x46C JUMPI PUSH2 0xA9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x131 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x197 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B5 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x23B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB6 PUSH2 0x4E4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF6 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xDB JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x123 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x147 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x586 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x19F PUSH2 0x5A4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x221 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x5AE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x243 PUSH2 0x687 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2AB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x275 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x69E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x307 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x751 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x325 PUSH2 0x799 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x365 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x34A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x392 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3EC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x83B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x452 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x41C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x908 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4CE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x926 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x57C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x551 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x57C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x55F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x59A PUSH2 0x593 PUSH2 0x9AD JUMP JUMPDEST DUP5 DUP5 PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5BB DUP5 DUP5 DUP5 PUSH2 0xBAC JUMP JUMPDEST PUSH2 0x67C DUP5 PUSH2 0x5C7 PUSH2 0x9AD JUMP JUMPDEST PUSH2 0x677 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1026 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x62D PUSH2 0x9AD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xE6D SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x747 PUSH2 0x6AB PUSH2 0x9AD JUMP JUMPDEST DUP5 PUSH2 0x742 DUP6 PUSH1 0x1 PUSH1 0x0 PUSH2 0x6BC PUSH2 0x9AD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xF2D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x831 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x806 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x831 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x814 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8FE PUSH2 0x848 PUSH2 0x9AD JUMP JUMPDEST DUP5 PUSH2 0x8F9 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1097 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 PUSH2 0x872 PUSH2 0x9AD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xE6D SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x91C PUSH2 0x915 PUSH2 0x9AD JUMP JUMPDEST DUP5 DUP5 PUSH2 0xBAC JUMP JUMPDEST PUSH1 0x1 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xA3B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1073 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xAC1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xFDE PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xC32 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x104E PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xCB8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xFBB PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xCC3 DUP4 DUP4 DUP4 PUSH2 0xFB5 JUMP JUMPDEST PUSH2 0xD2E DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1000 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xE6D SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0xDC1 DUP2 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xF2D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 GT ISZERO DUP3 SWAP1 PUSH2 0xF1A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xEDF JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0xEC4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF0C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 SUB SWAP1 P
+
+
+
+## 第 4 步:测试智能合约 [文档链接](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests) {#step-4-test-your-smart-contract}
+
+### 第 4.1 步:安装必要依赖项 [文档链接](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests) {#step-4-1}
+
+我们成功编写智能合同后,就可以对其进行测试。 我们将使用 `Waffle` 来进行测试。
+
+`Waffle` 的测试是使用 `Mocha` 和 `Chai` 一起编写的。 我们可以使用不同的测试环境,但 `Waffle` 匹配器只适用于 `Chai`。
+
+因此,我们需要将 `Chai` 添加到我们的依赖关系中:
+
+```bash
+ yarn add --dev mocha chai
+```
+
+### 第 4.2 步:创建测试文件 [文档链接](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests) {#step-4-2}
+
+要编写测试,我们需要在测试目录中创建 `BasicToken.test.ts` 文件。
+
+```ts
+import { expect, use } from "chai"
+import { Contract } from "ethers"
+import { deployContract, MockProvider, solidity } from "ethereum-waffle"
+import BasicToken from "../build/BasicToken.json"
+
+use(solidity)
+
+describe("BasicToken", () => {
+ const [wallet, walletTo] = new MockProvider().getWallets()
+ let token: Contract
+
+ beforeEach(async () => {
+ token = await deployContract(wallet, BasicToken, [1000])
+ })
+})
+```
+
+因此,我们使用 `Waffle` 的 `deployContract` 方法来部署我们的代币。 对于参数来说,我们应该传递 `wallet`、我们合约的已编译 json 文件和默认余额。
+
+`Waffle` 也允许我们创建一个 `wallet`,这使得部署合约变得很容易。
+
+您可以在[这里](https://ethereum-waffle.readthedocs.io/en/latest/basic-testing.html?highlight=wallet#getting-wallets)阅读更多关于 `wallet` 的信息,并且您可以在[这里](https://ethereum-waffle.readthedocs.io/en/latest/basic-testing.html?highlight=wallet#deploying-contracts)阅读更多关于部署功能的信息。
+
+让我们写一个简单的测试来检查钱包的余额。 由于我们在部署合约期间提交了 1000 的价值,所以钱包余额必须是 1000 个代币,我们可以在第一次测试中检查。
+
+```ts
+it("Assigns initial balance", async () => {
+ expect(await token.balanceOf(wallet.address)).to.equal(1000)
+})
+```
+
+要运行测试,请使用 `yarn test`
+
+### 第 4.3 步:触发事件 [文档链接](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html?highlight=changeBalance#emitting-events) {#step-4-3}
+
+在本教程中,我想向您展示 `Waffle` 最有用的匹配器,所以让我们从第一个开始。
+
+`Waffle` 允许我们测试在哪里发出了哪些事件。
+
+在本教程中,我将测试我们合约的 `transfer` 方法。
+
+在这个测试中,我会用一个钱包向另一个钱包转账,然后检查 `Transfer` 事件是否被调用。
+
+```ts
+it("Transfer emits event", async () => {
+ await expect(token.transfer(walletTo.address, 7))
+ .to.emit(token, "Transfer")
+ .withArgs(wallet.address, walletTo.address, 7)
+})
+```
+
+另外,这个匹配器的一大优点是,通过将 `withArgs` 添加到我们的测试中,我们可以检查调用该事件时使用了哪些参数。
+
+这将可以确保我们的函数被正确地调用!
+
+### 第 4.4 步:回滚时显示消息 [文档链接](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html?highlight=changeBalance#revert-with-message) {#step-4-4}
+
+`Waffle` 允许我们测试回滚时显示哪些消息。
+
+我们在测试中将使用 `revertedWith` 匹配器来对它进行检查。
+
+我们可以编写一个测试,我们将在测试中进行一笔大于我们钱包金额的转帐。 然后,我们将检查交易回滚时显示确切的消息!
+
+```ts
+it("Can not transfer above the amount", async () => {
+ await expect(token.transfer(walletTo.address, 1007)).to.be.revertedWith(
+ "VM Exception while processing transaction: revert ERC20: transfer amount exceeds balance"
+ )
+})
+```
+
+### 第 4.5 步:改变代币余额 [文档链接](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html?highlight=changeBalance#change-balance) {#step-4-5}
+
+`Waffle` 允许我们检查钱包余额的变化!
+
+我们可以使用 `changeTokenBalance` 匹配器来检查余额变化或使用 `changeTokenBalances` 检查多个帐户。
+
+匹配器可以接受 `numbers`、`strings` 和 `BigNumbers` 作为余额变化,但是地址应该指定为钱包或合约。
+
+我们来编写下一个测试:
+
+```ts
+it("Send transaction changes receiver balance", async () => {
+ await expect(() =>
+ wallet.sendTransaction({ to: walletTo.address, gasPrice: 0, value: 200 })
+ ).to.changeBalance(walletTo, 200)
+})
+```
+
+以上是对单个钱包的测试。
+
+下一个测试针对多个钱包。
+
+```ts
+it("Send transaction changes sender and receiver balances", async () => {
+ await expect(() =>
+ wallet.sendTransaction({ to: walletTo.address, gasPrice: 0, value: 200 })
+ ).to.changeBalances([wallet, walletTo], [-200, 200])
+})
+```
+
+该交易应作为回调(我们需要在调用之前检查余额)或作为交易响应传递。
+
+## 恭喜您 {#congratulations}
+
+**恭喜您! 您通过这个教程,成功完成了测试。 您已经迈出了使用 Waffle 测试智能合约的第一大步。**
+
+**您可以在[这里](https://github.com/VladStarostenko/tutorial-for-ethereum-org-website)找到本教程的代码。**
diff --git a/src/content/translations/zh/developers/tutorials/testing-smart-contract-with-waffle/index.md b/src/content/translations/zh/developers/tutorials/testing-smart-contract-with-waffle/index.md
index 05876df1188..ebd8f0085c6 100644
--- a/src/content/translations/zh/developers/tutorials/testing-smart-contract-with-waffle/index.md
+++ b/src/content/translations/zh/developers/tutorials/testing-smart-contract-with-waffle/index.md
@@ -1,12 +1,13 @@
---
-title: 使用 Waffle 测试智能合约
-description: 学习如何测试 Solidity 智能合约,以及如何将智能合约匹配器与 Waffle 配合使用
+title: 使用 Waffle 测试 ERC-20 代币
+description: 学习如何测试 Solidity 智能合约,以及如何将智能合约匹配器与 Waffle 配合使用。
author: Vladislav Starostenko
tags:
- "waffle"
- "智能合约"
- "solidity"
- "测试"
+ - "erc-20"
skill: intermediate
lang: zh
published: 2020-10-16
@@ -33,7 +34,7 @@ published: 2020-10-16
使用 [JavaScript API](/developers/docs/apis/javascript/) ethers-js。
-您可以在 [Waffle 文档](https://ethereum-waffle.readthedocs.io/en/latest/#waffle-documentation) 中阅读更多详细信息!
+您可以在 [Waffle 文档](https://ethereum-waffle.readthedocs.io/en/latest/#waffle-documentation)中阅读更多详细信息!
## 快速教程 {#the-quick-tutorial}
@@ -686,7 +687,7 @@ contract BasicToken is ERC20 {
}
```
-在项目的根目录添加一个 `waffle.json` 文件:
+并且在项目的根目录中添加 `waffle.json` 文件。
一个 `waffle.json` 配置实例:
@@ -701,7 +702,7 @@ contract BasicToken is ERC20 {
您可以在[这里](https://ethereum-waffle.readthedocs.io/en/latest/configuration.html#configuration)阅读更多关于 Waffle 配置的信息。
-然后运行 `yarn build` 来编译智能合约。
+然后只需运行 `yarn build` 来编译智能合约。
您应该看到 Waffle 编译了您的合约,并将由此产生的 JSON 输出放置在 `build` 目录内。
@@ -1006,7 +1007,7 @@ contract BasicToken is ERC20 {
-## 第 4 步:编译智能合约 [文档链接](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests) {#step-4-test-your-smart-contract}
+## 第 4 步:测试智能合约 [文档链接](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests) {#step-4-test-your-smart-contract}
### 第 4.1 步:安装必要依赖项 [文档链接](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests) {#step-4-1}
@@ -1042,11 +1043,11 @@ describe("BasicToken", () => {
})
```
-因此,我们使用 `Waffle` 的 `deployContract` 方法来部署我们的代币。 对于参数来说,我们应该传递 `wallet`、我们合约的编译的 json 文件和默认余额。
+因此,我们使用 `Waffle` 的 `deployContract` 方法来部署我们的代币。 对于参数来说,我们应该传递 `wallet`、我们合约的已编译 json 文件和默认余额。
`Waffle` 也允许我们创建一个 `wallet`,这使得部署合约变得很容易。
-您可以在[这里](https://ethereum-waffle.readthedocs.io/en/latest/basic-testing.html?highlight=wallet#getting-wallets)阅读更多关于 `wallet`的信息,并且您可以在[这里](https://ethereum-waffle.readthedocs.io/en/latest/basic-testing.html?highlight=wallet#deploying-contracts)阅读更多关于部署功能的信息。
+您可以在[这里](https://ethereum-waffle.readthedocs.io/en/latest/basic-testing.html?highlight=wallet#getting-wallets)阅读更多关于 `wallet` 的信息,并且您可以在[这里](https://ethereum-waffle.readthedocs.io/en/latest/basic-testing.html?highlight=wallet#deploying-contracts)阅读更多关于部署功能的信息。
让我们写一个简单的测试来检查钱包的余额。 由于我们在部署合约期间提交了 1000 的价值,所以钱包余额必须是 1000 个代币,我们可以在第一次测试中检查。
@@ -1058,11 +1059,11 @@ it("Assigns initial balance", async () => {
要运行测试,请使用 `yarn test`
-### 第 4.3 步:发出事件 [文档链接](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html?highlight=changeBalance#emitting-events) {#step-4-3}
+### 第 4.3 步:触发事件 [文档链接](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html?highlight=changeBalance#emitting-events) {#step-4-3}
在本教程中,我想向您展示 `Waffle` 最有用的匹配器,所以让我们从第一个开始。
-`Waffle` 允许我们测试在哪里发出了哪些事件。
+`Waffle` 允许我们测试在哪里触发了哪些事件。
在本教程中,我将测试我们合约的 `transfer` 方法。
@@ -1076,17 +1077,17 @@ it("Transfer emits event", async () => {
})
```
-另外,这个匹配器的一大优点是,通过将 `with Args` 添加到我们的测试中,我们可以检查调用该事件时使用了哪些参数。
+另外,这个匹配器的一大优点是,通过将 `withArgs` 添加到我们的测试中,我们可以检查调用该事件时使用了哪些参数。
这将可以确保我们的函数被正确地调用!
-### 第 4.4 步:使用消息回滚 [文档链接](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html?highlight=changeBalance#revert-with-message) {#step-4-4}
+### 第 4.4 步:回滚时显示消息 [文档链接](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html?highlight=changeBalance#revert-with-message) {#step-4-4}
-`Waffle` 允许我们测试使用了哪些消息对其进行回滚。
+`Waffle` 允许我们测试回滚时显示哪些消息。
-我们将使用 ` revertWith` 匹配器来对它进行检查。
+我们在测试中将使用 `revertedWith` 匹配器来对它进行检查。
-我们可以编写一个测试,我们将在测试中进行一笔大于我们钱包金额的转帐。 然后,我们将检查是否有交易回滚所使用的确切消息!
+我们可以编写一个测试,我们将在测试中进行一笔大于我们钱包金额的转帐。 然后,我们将检查交易回滚时显示确切的消息!
```ts
it("Can not transfer above the amount", async () => {
@@ -1102,7 +1103,7 @@ it("Can not transfer above the amount", async () => {
我们可以使用 `changeTokenBalance` 匹配器来检查余额变化或使用 `changeTokenBalances` 检查多个帐户。
-匹配器可以接受`数字`、`字符串` 和 `BigNumbers` 作为余额变化,但是地址应该指定为钱包或合约。
+匹配器可以接受 `numbers`、`strings` 和 `BigNumbers` 作为余额变化,但是地址应该指定为钱包或合约。
我们来编写下一个测试:
@@ -1128,10 +1129,10 @@ it("Send transaction changes sender and receiver balances", async () => {
该交易应作为回调(我们需要在调用之前检查余额)或作为交易响应传递。
-## 恭喜您! {#congratulations}
+## 恭喜您 {#congratulations}
**恭喜您! 您通过这个教程,成功完成了测试。 您已经迈出了使用 Waffle 测试智能合约的第一大步。**
**您可以在[这里](https://github.com/VladStarostenko/tutorial-for-ethereum-org-website)找到本教程的代码。**
-**更多关于 `Waffle` 的文档可在[这里获取](https://getwaffle.io) 。**
+**更多关于 `Waffle` 的文档可在[这里](https://getwaffle.io)获取 。**
diff --git a/src/content/translations/zh/developers/tutorials/the-graph-fixing-web3-data-querying/index.md b/src/content/translations/zh/developers/tutorials/the-graph-fixing-web3-data-querying/index.md
index 94cec683639..661a65460c4 100644
--- a/src/content/translations/zh/developers/tutorials/the-graph-fixing-web3-data-querying/index.md
+++ b/src/content/translations/zh/developers/tutorials/the-graph-fixing-web3-data-querying/index.md
@@ -6,7 +6,7 @@ lang: zh
tags:
- "solidity"
- "智能合约"
- - "查询"
+ - "查询中"
- "The Graph"
- "create-eth-app"
- "react"
@@ -16,7 +16,7 @@ source: soliditydeveloper.com
sourceUrl: https://soliditydeveloper.com/thegraph
---
-这一次,我们将更仔细地看一下 The Graph,它在去年基本上成为了开发去中心化应用的标准堆栈的一部分。 让我们先看看我们会如何用传统的方式做事…
+这次我们将仔细研究 The Graph,它在去年基本上成为了开发去中心化应用程序的标准堆栈的一部分。 让我们先看看我们会如何用传统的方式做事…
## 没有 The Graph... {#without-the-graph}
@@ -46,7 +46,7 @@ contract Game {
}
```
-现在假设在我们的去中心化应用中,我们想要显示总输/赢游戏数,并在有人再次玩游戏时对其进行更新。 该方法将是:
+现在假设在我们的去中心化应用程序中,我们想要显示总投注、输/赢的游戏总数,并且每当有人再次玩游戏时更新它。 该方法将是:
1. 获取`totalGamesPlayerWon`。
2. 获取`totalGamesPlayerLost`。
@@ -69,9 +69,9 @@ GameContract.events.BetPlaced({
});
```
-现在,对于我们的简单示例来说,这在某种程度上还是不错的。 但是假设我们现在只想显示当前玩家输/赢的赌注金额。 嗯,我们运气不好,您最好部署一份新的合约来存储这些值,并将它们提取出来。 现在想象一下一个更复杂的智能合约和去中心化应用,事情可能很快就会变得一团糟。
+现在,对于我们的简单示例来说,这在某种程度上还是不错的。 但是假设我们现在只想显示当前玩家输/赢的赌注金额。 嗯,我们运气不好,您最好部署一份新的合约来存储这些值,并将它们提取出来。 现在想象一个更复杂的智能合约和去中心化应用程序,事情可能很快就会变得一团糟。
-![一个不简单的查询](../../../../../developers/tutorials/the-graph-fixing-web3-data-querying/one-does-not-simply-query.jpg)
+![一个不简单的查询](./one-does-not-simply-query.jpg)
您可以看到这并不是最优的:
@@ -79,7 +79,7 @@ GameContract.events.BetPlaced({
- 存储这些值需要额外的 gas 成本。
- 需要另一个调用来获取以太坊节点的数据。
-![是不够好的](../../../../../developers/tutorials/the-graph-fixing-web3-data-querying/not-good-enough.jpg)
+![是不够好的](./not-good-enough.jpg)
现在让我们看看更好的解决方案。
@@ -87,7 +87,7 @@ GameContract.events.BetPlaced({
首先我们来谈谈 GraphQL,它最初是由 Facebook 设计和实现的。 您可能熟悉传统的 Rest API 模型。 现在设想一下,您可以编写一个查询来精确查找您想要的数据:
-![GraphQL API与REST API](../../../../../developers/tutorials/the-graph-fixing-web3-data-querying/graphql.jpg)
+![GraphQL API与REST API](./graphql.jpg)
@@ -97,22 +97,34 @@ GameContract.events.BetPlaced({
## 什么是 The Graph? {#what-is-the-graph}
-![The Graph](../../../../../developers/tutorials/the-graph-fixing-web3-data-querying/thegraph.png)
+区块链是一个去中心化的数据库,但与通常情况不同的是,我们没有适用于这个数据库的查询语言。 检索数据的解决方案是痛苦的,或者是完全不可能的。 The Graph 是一种用于为区块链数据建立索引并进行查询的去中心化协议。 您可能已经猜到了,它使用 GraphQL 作为查询语言。
+
+![The Graph](./thegraph.png)
+
+示例总是最容易理解的,所以让我们使用 The Graph 作为 GameContract 示例。
## 如何创建子图 {#how-to-create-a-subgraph}
-1. 清单(subgraph.yaml)
-2. 模式(schema.graphql)
-3. 映射(mapping.ts)
+有关如何建立数据索引的定义称为子图. 它需要三个组件:
+
+1. 清单 (`subgraph.yaml`)
+2. 模式 (`schema.graphql`)
+3. 映射 (`mapping.ts`)
-### 清单(subgraph.yaml) {#manifest}
+### 清单 (`subgraph.yaml`) {#manifest}
+
+清单是我们的配置文件,定义了:
- 要为哪些智能合约建立索引(地址、网络、ABI...)
- 侦听哪些事件
- 其他要侦听的东西,如函数调用或区块
-- 所调用的映射函数(参见下面的 mapping.ts)
+- 被调用的映射函数(参见下面的 `mapping.ts`)
+
+您可以在此处定义多个智能合约和处理程序。 典型的设置在 Truffle/Hardhat 项目中会有一个子图文件夹,它有自己的存储库。 然后您可以轻松引用 ABI。
-为方便起见,您可能还想使用像 mustache 这样的模板工具。 然后您可以创建一个 subgraph.template.yaml,并根据最新的部署插入相应的地址。 有关更高级的示例设置,请参阅这个 [Aave subgraph repo](https://github.com/aave/aave-protocol/tree/master/thegraph) 示例。
+为方便起见,您可能还想使用像 mustache 这样的模板工具。 然后创建一个 `subgraph.template.yaml` 并根据最新部署插入地址。 有关更高级的示例设置,请参阅这个 [Aave subgraph repo](https://github.com/aave/aave-protocol/tree/master/thegraph) 示例。
+
+完整的文档可以在这里看到:https://thegraph.com/docs/define-a-subgraph#the-subgraph-manifest。
```yaml
specVersion: 0.0.1
@@ -143,9 +155,9 @@ dataSources:
file: ./src/mapping.ts
```
-### 模式(schema.graphql) {#schema}
+### 模式 (`schema.graphql`) {#schema}
-您还可以使用实体作为类型来定义关系。 在我们的示例中,我们定义了从玩家到投注的一对多关系。 感叹号(!)
+模式是 GraphQL 数据定义。 它将允许您定义存在哪些实体及其类型。 The Graph 支持的类型包括:
- 字节
- ID
@@ -155,7 +167,7 @@ dataSources:
- 大整数
- 大十进制数
-The Graph 中的映射文件定义了将传入事件转换为实体的函数。 它是用 AssemblyScript(TypeScript 的子集)编写的。 这意味着它可以编译成 WASM (WebAssembly),以更高效和可移植的方式执行映射。
+您还可以使用实体作为类型来定义关系。 在我们的示例中,我们定义了从玩家到投注的一对多关系。 感叹号(!) 表示值不能为空。 完整的文档可以在这里看到:https://thegraph.com/docs/define-a-subgraph#the-graphql-schema。
```graphql
type Bet @entity {
@@ -174,17 +186,17 @@ type Player @entity {
}
```
-### 映射(mapping.ts) {#mapping}
+### 映射 (`mapping.ts`) {#mapping}
-您需要定义 subgraph.yaml 文件中命名的每个函数,因此在我们的例子中,我们只需要一个:handleNewBet。 我们首先尝试将发送者地址中的 Player 实体加载为 id。 如果它不存在,我们创建一个新实体并用起始值填充它。
+The Graph 中的映射文件定义了将传入事件转换为实体的函数。 它是用 AssemblyScript(TypeScript 的子集)编写的。 这意味着它可以编译成 WASM (WebAssembly),以更高效和可移植的方式执行映射。
-然后我们创建一个新的 Bet 实体。 它的 id 将是 event.transaction.hash.toHex()+“-”+event.logIndex.toString(),确保值始终唯一。 仅使用哈希是不够的,因为有人可能会通过智能合约在一笔交易中多次调用 placeBet 函数。
+您需要定义 `subgraph.yaml` 文件中命名的每个函数,因此在我们的例子中,我们只需要一个:`handleNewBet`。 我们首先尝试将发送者地址中的 Player 实体加载为 id。 如果它不存在,我们创建一个新实体并用起始值填充它。
-最后,我们可以更新 Player 实体的所有数据。 数组不能直接推送,需要按如下所示进行更新。 我们使用 id 来引用投注。
+然后我们创建一个新的 Bet 实体。 该实体的 id 将是 `event.transaction.hash.toHex() + "-" + event.logIndex.toString()`,确保始终是唯一值。 仅使用哈希是不够的,因为有人可能会通过智能合约在一笔交易中多次调用 placeBet 函数。
-完整的文档可以在这里看到:https://thegraph.com/docs/define-a-subgraph#writing-mappings。 您还可以将日志输出添加到映射文件,请参阅[此处](https://thegraph.com/docs/assemblyscript-api#api-reference)。
+最后,我们可以使用所有数据更新 Player 实体。 数组不能直接推送,需要按如下所示进行更新。 我们使用 id 来引用投注。 最后需要 `.save()` 来存储实体。
-使用 Apollo Boost 之类的工具,您可以轻松地将 The Graph 集成到您的 React 去中心化应用(或 Apollo-Vue)中。 特别是当使用 React hooks 和 Apollo 这样的工具时,获取数据与在组件中写入单个 GraphQl 查询一样简单。
+完整的文档可以在这里看到:https://thegraph.com/docs/define-a-subgraph#writing-mappings。 您还可以将日志输出添加到映射文件,请参阅[此处](https://thegraph.com/docs/assemblyscript-api#api-reference)。
```typescript
import { Bet, Player } from "../generated/schema"
@@ -228,7 +240,7 @@ export function handleNewBet(event: PlacedBet): void {
## 在前端使用它 {#using-it-in-the-frontend}
-现在我们可以编写一个像这样的查询。 这个查询将帮助我们获取如下数据:
+使用 Apollo Boost 之类的工具,你可以轻松将 The Graph 集成到你的 React 去中心化应用程序(或 Apollo-Vue)中。 特别是当使用 React hooks 和 Apollo 这样的工具时,获取数据与在组件中写入单个 GraphQl 查询一样简单。 一个典型的设置可能如下所示:
```javascript
// See all subgraphs: https://thegraph.com/explorer/
@@ -244,10 +256,14 @@ ReactDOM.render(
)
```
+现在我们可以编写一个像这样的查询。 这个查询将帮助我们获取如下数据:
+
- 当前用户已经赢得游戏多少次
- 当前用户已经输了游戏多少次
- 他之前所有赌注的时间戳清单
+所有这些都在一个向 GraphQL 服务器发出的请求中。
+
```javascript
const myGraphQlQuery = gql`
players(where: { id: $currentUser }) {
@@ -269,26 +285,32 @@ React.useEffect(() => {
}, [loading, error, data])
```
-![Magic](../../../../../developers/tutorials/the-graph-fixing-web3-data-querying/magic.jpg)
+![Magic](./magic.jpg)
-最简单的方法是使用托管服务。 按照[此处](https://thegraph.com/docs/deploy-a-subgraph)的说明来部署子图。
+但我们缺少了这个拼图的最后一块,那就是服务器。 您可以自行运行一个服务器或使用托管服务。
## The Graph 服务器 {#the-graph-server}
### Graph Explorer:托管服务 {#graph-explorer-the-hosted-service}
-![The Graph-Explorer](../../../../../developers/tutorials/the-graph-fixing-web3-data-querying/thegraph-explorer.png)
+最简单的方法是使用托管服务。 按照[此处](https://thegraph.com/docs/deploy-a-subgraph)的说明来部署子图。 许多项目,您实际上可以在浏览器中找到现有的子图:https://thegraph.com/explorer/。
+
+![The Graph 浏览器](./thegraph-explorer.png)
### 运行您自己的节点 {#running-your-own-node}
-GraphQL 也支持新传入事件的流。 The Graph 还没有完全支持这一点,但很快就会发布。
+或者,您可以运行自己的节点:https://github.com/graphprotocol/graph-node#quick-start。 这样做的一个原因可能是使用托管服务不支持的网络。 目前支持的有主网、Kovan、Rinkeby、Ropsten、Goerli、PoA-Core、xDAI 和 Sokol。
## 去中心化的未来 {#the-decentralized-future}
-然而,一个缺失的方面仍然是去中心化。 The Graph 计划最终成为一个完全去中心化的协议。
+GraphQL 也支持新传入事件的流。 The Graph 还没有完全支持这一点,但很快就会发布。
+
+然而,一个缺失的方面仍然是去中心化。 The Graph 计划最终成为一个完全去中心化的协议。 这两篇文章更详细地解释了这个计划:
- https://thegraph.com/blog/the-graph-network-in-depth-part-1
- https://thegraph.com/blog/the-graph-network-in-depth-part-2
+以下有两个关键的方面:
+
1. 用户将为查询支持索引器费用。
2. 索引器将权益质押图形通证(GRT)。
diff --git a/src/content/translations/zh/developers/tutorials/token-integration-checklist/index.md b/src/content/translations/zh/developers/tutorials/token-integration-checklist/index.md
index 4ef85e49eb5..7eac73e6547 100644
--- a/src/content/translations/zh/developers/tutorials/token-integration-checklist/index.md
+++ b/src/content/translations/zh/developers/tutorials/token-integration-checklist/index.md
@@ -62,7 +62,7 @@ Slither 包括一个实用程序[slither-prop](https://github.com/crytic/slither
- **合约避免了不必要的复杂性。**通证应该是一个简单的合约;一个具有复杂代码的通证需要更高的审查标准。 使用 Slither 的[human-summary printer](https://github.com/crytic/slither/wiki/Printer-documentation#human-summary)来识别复杂的代码。
- **合约使用了 SafeMath。**不使用 SafeMath 的合约需要更高的审查标准。 手动检查合约是否使用了 SafeMath。
-- **合约中只有几个与通证无关的函数。**与通证无关的函数增加了合约中出现问题的可能性。 使用 Slither 的[human-summary printer](https://github.com/crytic/slither/wiki/Printer-documentation#contract-summary)来广泛审查合约中使用的代码。
+- **合约中只有几个与通证无关的函数。**与通证无关的函数增加了合约中出现问题的可能性。 使用 Slither 的[contract-summary printer](https://github.com/crytic/slither/wiki/Printer-documentation#contract-summary)来广泛审查合约中使用的代码。
- **该通证只有一个地址。**具有多个余额更新入口点的通证可能会破坏基于地址的内部记账(例如,`balances[token_address][msg.sender]`可能不反映实际余额)。
## 用户特权 {#owner-privileges}
diff --git a/src/content/translations/zh/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/index.md b/src/content/translations/zh/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/index.md
index 5d13bd9fd21..af2e8e5c389 100644
--- a/src/content/translations/zh/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/index.md
+++ b/src/content/translations/zh/developers/tutorials/transfers-and-approval-of-erc-20-tokens-from-a-solidity-smart-contract/index.md
@@ -4,10 +4,10 @@ description: 如何使用智能合约与使用 Solidity 语言的代币进行交
author: "jdourlens"
tags:
- "智能合约"
- - "通证"
+ - "代币"
- "solidity"
- "入门指南"
- - "erc-20"
+ - "erc-20 (一种以太坊代币)"
skill: intermediate
lang: zh
published: 2020-04-07
@@ -46,63 +46,6 @@ interface IERC20 {
}
-contract ERC20Basic is IERC20 {
-
- string public constant name = "ERC20Basic";
- string public constant symbol = "ERC";
- uint8 public constant decimals = 18;
-
-
- mapping(address => uint256) balances;
-
- mapping(address => mapping (address => uint256)) allowed;
-
- uint256 totalSupply_ = 10 ether;
-
-
- constructor() {
- balances[msg.sender] = totalSupply_;
- }
-
- function totalSupply() public override view returns (uint256) {
- return totalSupply_;
- }
-
- function balanceOf(address tokenOwner) public override view returns (uint256) {
- return balances[tokenOwner];
- }
-
- function transfer(address receiver, uint256 numTokens) public override returns (bool) {
- require(numTokens <= balances[msg.sender]);
- balances[msg.sender] = balances[msg.sender]-numTokens;
- balances[receiver] = balances[receiver]+numTokens;
- emit Transfer(msg.sender, receiver, numTokens);
- return true;
- }
-
- function approve(address delegate, uint256 numTokens) public override returns (bool) {
- allowed[msg.sender][delegate] = numTokens;
- emit Approval(msg.sender, delegate, numTokens);
- return true;
- }
-
- function allowance(address owner, address delegate) public override view returns (uint) {
- return allowed[owner][delegate];
- }
-
- function transferFrom(address owner, address buyer, uint256 numTokens) public override returns (bool) {
- require(numTokens <= balances[owner]);
- require(numTokens <= allowed[owner][msg.sender]);
-
- balances[owner] = balances[owner]-numTokens;
- allowed[owner][msg.sender] = allowed[owner][msg.sender]+numTokens;
- balances[buyer] = balances[buyer]+numTokens;
- emit Transfer(owner, buyer, numTokens);
- return true;
- }
-}
-
-
```
我们新的 DEX 智能合约将部署 ERC-20 并生成总量供应:
@@ -281,7 +224,7 @@ contract ERC20Basic is IERC20 {
require(numTokens <= allowed[owner][msg.sender]);
balances[owner] = balances[owner]-numTokens;
- allowed[owner][msg.sender] = allowed[owner][msg.sender]+numTokens;
+ allowed[owner][msg.sender] = allowed[owner][msg.sender]-numTokens;
balances[buyer] = balances[buyer]+numTokens;
emit Transfer(owner, buyer, numTokens);
return true;
diff --git a/src/content/translations/zh/developers/tutorials/using-websockets/index.md b/src/content/translations/zh/developers/tutorials/using-websockets/index.md
index 770161563b6..02ce0e83bc3 100644
--- a/src/content/translations/zh/developers/tutorials/using-websockets/index.md
+++ b/src/content/translations/zh/developers/tutorials/using-websockets/index.md
@@ -11,7 +11,7 @@ tags:
- "订阅"
- "javascript"
skill: beginner
-source: Alchemy文档
+source: Alchemy 文档
sourceUrl: https://docs.alchemyapi.io/guides/using-websockets
published: 2020-12-01
---
@@ -24,13 +24,13 @@ published: 2020-12-01
与任何网络连接一样,您不应该假设 WebSocket 将永远保持打开状态而不会中断,但是正确地手动处理丢弃的连接和重新连接可能很难做到正确。 WebSocket 的另一个缺点是,您在响应中不会得到 HTTP 状态码,而只会得到错误消息。
-[Alchemy Web3](https://docs.alchemy.com/reference/api-overview)自动添加对 WebSocket 失败的处理并重试,而无需进行配置。
+[Alchemy Web3](https://docs.alchemy.com/reference/api-overview) 自动添加对 WebSocket 连接失败的处理并重试,无需进行配置。
## 试试看 {#try-it-out}
测试 WebSocket 最简单的方式是安装命令行工具来进行 WebSocket 请求,例如[wscat](https://github.com/websockets/wscat)。 使用 wscat,您可以发送如下请求:
-_注意:如果您有 Alchemy 帐户,则可以将`demo`替换成自己的 API 密钥。 [在此处注册免费的 Alchemy 帐户!](https://auth.alchemyapi.io/signup)_
+_注意:如果您有 Alchemy 帐户,则可以将`demo`替换成自己的 API 密钥。 [点击此处注册免费 Alchemy 帐户!](https://auth.alchemyapi.io/signup)_
```
$ wscat -c wss://eth-mainnet.ws.alchemyapi.io/ws/demo
@@ -43,9 +43,9 @@ $ wscat -c wss://eth-mainnet.ws.alchemyapi.io/ws/demo
## 如何使用 WebSocket {#how-to-use-websockets}
-首先,使用应用的 WebSocket URL 打开 WebSocket 您可以在[您的仪表板](https://dashboard.alchemyapi.io/)中打开应用的页面并点击“查看密钥”来找到您的应用的 WebSocket URL。 请注意,您的应用的 WebSocket URL 与其 HTTP 请求的 URL 不同,但两者都可以通过点击“查看密钥” 找到。
+首先,使用应用的 WebSocket URL 打开 WebSocket 您可以在[您的仪表板](https://dashboard.alchemyapi.io/)中打开应用的页面并点击“View Key”来找到您的应用的 WebSocket URL。 请注意,您的应用的 WebSocket URL 与其 HTTP 请求的 URL 不同,但两者都可以通过点击“View Key”找到。
-![在您的Alchemy仪表板中的何处可找到您的WebSocket URL](../../../../../developers/tutorials/using-websockets/use-websockets.gif)
+![在您的Alchemy仪表板中的何处可找到您的WebSocket URL](./use-websockets.gif)
[Alchemy API 参考](https://docs.alchemyapi.io/documentation/alchemy-api-reference/)中列出的的任何 API 都可以通过 WebSocket 使用。 为此,请使用与 HTTP POST 请求正文相同的有效载荷,而不是通过 WebSocket 发送该有效负载。
@@ -92,7 +92,7 @@ web3.eth.getBlockNumber().then(console.log) // -> 7946893
1. `alchemy_newFullPendingTransactions`
-返回被添加到待定状态的所有交易的交易信息。 此订阅类型订阅待处理交易,类似于标准 Web3 调用<`web3.eth.subscribe("pendingTransactions")`,但不同之处是它发出*完整的交易信息*,而不只是交易哈希。
+返回被添加到待定状态的所有交易的交易信息。 此订阅类型订阅待处理交易,类似于标准 Web3 调用`web3.eth.subscribe("pendingTransactions")`,但不同之处是它触发*完整的交易信息*,而不只是交易哈希。
示例:
@@ -127,9 +127,9 @@ web3.eth.getBlockNumber().then(console.log) // -> 7946893
2. `newHeads`
-每当向链中添加新标头时(包括在链重组期间)都会发出事件。
+每当向链中添加新标头时(包括在链重组期间)都会触发事件。
-发生链重组时,此订阅将发出一个事件,其中包含新链的所有新标头。 具体地说,这意味着您可能会看到多个高度相同的标头,当发生这种情况时,应该将后一个标头视为重组后的正确标头。
+发生链重组时,此订阅将触发一个事件,其中包含新链的所有新标头。 具体地说,这意味着您可能会看到多个高度相同的标头,当发生这种情况时,应该将后一个标头视为重组后的正确标头。
示例:
@@ -142,13 +142,11 @@ web3.eth.getBlockNumber().then(console.log) // -> 7946893
"method": "eth_subscription",
"params": {
"result": {
- "difficulty": "0x15d9223a23aa",
"extraData": "0xd983010305844765746887676f312e342e328777696e646f7773",
"gasLimit": "0x47e7c4",
"gasUsed": "0x38658",
"logsBloom":
"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
- "miner": "0xf8b483dba2c3b7176a3da549ad41a48bb3121069",
"nonce": "0x084149998194cc5f",
"number": "0x1348c9",
"parentHash": "0x7736fab79e05dc611604d22470dadad26f56fe494421b5b333de816ce1f25701",
@@ -166,18 +164,18 @@ web3.eth.getBlockNumber().then(console.log) // -> 7946893
3. `logs`
-发出日志,这些日志是符合指定筛选条件的新添加区块的一部分。
+触发日志,这些日志是符合指定筛选条件的新添加区块的一部分。
-当发生链重组时,作为旧链上区块的一部分的日志将再次发出,并将属性`removed`设置为`true`。 此外,作为新链上区块的一部分的日志被发出,这意味着在重组的情况下可以多次看到同一交易的日志。
+当发生链重组时,作为旧链上区块的一部分的日志将再次触发,并将属性`removed`设置为`true`。 此外,作为新链上区块的一部分的日志被触发,这意味着在重组的情况下可以多次看到同一交易的日志。
参数
1. 具有以下字段的对象:
- - `adddress` (可选):表示地址的字符串或此类字符串数组。
- - 只会发出从这些地址之一创建的日志。
+ - `address`(可选):表示地址的字符串或此类字符串的数组。
+ - 只会触发从这些地址之一创建的日志。
- `topics`:主题说明符的数组。
- 每个主题说明符都是`null`、表示主题的字符串或字符串数组。
- - 数组中非`null`的每个位置将发出的日志仅限制为在该位置具有给定主题之一的那些位置。
+ - 数组中非`null`的每个位置将触发的日志仅限制为在该位置具有给定主题之一的那些位置。
主题规范的一些示例:
@@ -250,4 +248,4 @@ curl https://eth-mainnet.alchemyapi.io/v2/your-api-key
---
-免费[注册 Alchemy](https://auth.alchemyapi.io/signup),查看[我们的文档](https://docs.alchemyapi.io/),如需了解最新消息,请在[Twitter](https://twitter.com/AlchemyPlatform)上关注我们。
+免费[注册 Alchemy](https://auth.alchemyapi.io/signup),查看我们的[相关文档](https://docs.alchemyapi.io/),并关注我们的 [Twitter](https://twitter.com/AlchemyPlatform) 了解最新消息。
diff --git a/src/content/translations/zh/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md b/src/content/translations/zh/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
index 58ba9da4fd0..80953677f15 100644
--- a/src/content/translations/zh/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
+++ b/src/content/translations/zh/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md
@@ -1,6 +1,6 @@
---
title: "Waffle:动态模拟和测试合约调用"
-description: 使用动态模拟和测试合约调用的高级 Waffle 教程
+description: 有关使用动态模拟和测试合约调用的高级Waffle教程
author: "Daniel Izdebski"
tags:
- "waffle"
@@ -22,13 +22,13 @@ published: 2020-11-14
本文假定:
-- 您已经知道如何使用 `Solidity` 编写一个简单的智能合约
-- 您熟悉 `JavaScript` 和 `TypeScript`
-- 您已经完成其他 `Waffle` 教程或对其略知一二。
+- 您已经知道如何在`Solidity`中编写一个简单的智能合约
+- 您熟悉`JavaScript`和`TypeScript`
+- 您已经完成其他`Waffle`教程或对其略知一二。
## 动态模拟 {#dynamic-mocking}
-为什么动态模拟很有用? 它允许我们编写单元测试,而不是集成测试。 这是什么意思呢? 这意味着我们不必担心智能合约的依赖项,因此我们可以完全孤立地测试所有合约。 让我演示一下如何才能实现。
+为什么动态模拟有用? 它允许我们编写单元测试,而不是集成测试。 这是什么意思呢? 这意味着我们不必担心智能合约的依赖性,因此我们可以完全孤立地测试所有合约。 让我演示一下如何才能实现。
### **1. 项目** {#1-project}
@@ -44,7 +44,7 @@ $ yarn init
$ npm init
```
-让我们从添加 typescript 和测试依赖项开始 -mocha & chai:
+让我们从添加类型脚本和测试依赖项开始-mocha & chai:
```bash
$ yarn add --dev @types/chai @types/mocha chai mocha ts-node typescript
@@ -52,7 +52,7 @@ $ yarn add --dev @types/chai @types/mocha chai mocha ts-node typescript
$ npm install @types/chai @types/mocha chai mocha ts-node typescript --save-dev
```
-现在让我们添加 `Waffle` 和 `Ethers`:
+现在让我们添加`Waffle`和`Ethers`:
```bash
$ yarn add --dev ethereum-waffle ethers
@@ -71,9 +71,9 @@ $ npm install ethereum-waffle ethers --save-dev
### **2. 智能合约** {#2-smart-contract}
-要开始动态模拟,我们需要一个包含依赖项的智能合约。 别担心,我会帮助您的!
+要开始动态模拟,我们需要一个包含依赖项的智能合约。 别担心,我会掩护您的!
-这是一个用 `Solidity` 编写的简单智能合约,其唯一目的是检查我们是否有很多钱。 它使用 ERC20 代币来检查我们是否有足够的代币。 将其放在 `./contracts/AmIRichAlready.sol` 中。
+这是一个用`Solidity`编写的简单智能合约,其唯一目的是检查我们是否富有。 它使用 ERC20 通证来检查我们是否有足够的通证。 将其放在`./contracts/AmIRichAlready.sol`中。
```solidity
pragma solidity ^0.6.2;
@@ -99,7 +99,7 @@ contract AmIRichAlready {
因为我们想使用动态模拟,所以我们不需要整个 ERC20,这就是为什么我们使用只有一个函数的 IERC20 接口的原因。
-现在是构建这个合约的时候了! 为此,我们将使用 `Waffle`。 首先,我们将创建一个简单的 `waffle.json` 配置文件,它指定了编译选项。
+现在是构建这个合约的时候了! 为此,我们将使用`Waffle`。 首先,我们将创建一个简单的`waffle.json`配置文件,它指定了编译选项。
```json
{
@@ -116,11 +116,11 @@ contract AmIRichAlready {
$ npx waffle
```
-很简单,对吗? 在 `build/` 文件夹中,出现了与合约和接口相对应的两个文件。 我们稍后将使用它们进行测试。
+很简单,对吗? 在`build/`文件夹中,出现了与合约和接口相对应的两个文件。 我们稍后将使用它们进行测试。
### **3. 测试** {#3-testing}
-让我们创建一个名为 `AmIRichAlready.test.ts` 的文件来进行实际测试。 首先,我们必须处理导入。 我们稍后将需要它们:
+让我们创建一个名为`AmIRichAlready.test.ts`的文件来进行实际测试。 首先,我们必须处理导入。 我们稍后将需要它们:
```typescript
import { expect, use } from "chai"
@@ -133,20 +133,20 @@ import {
} from "ethereum-waffle"
```
-除了 JS 依赖项之外,我们需要导入我们创建的合约和接口。
+除了 JS 依赖项,我们需要导入我们创建的合约和接口。
```typescript
import IERC20 from "../build/IERC20.json"
import AmIRichAlready from "../build/AmIRichAlready.json"
```
-Waffle 使用 `chai` 进行测试。 但是,在我们使用它之前,我们必须将 Waffle 的匹配器注入到 chai 本身:
+Waffle 使用`chai`进行测试。 然而,在我们使用它之前,我们必须将 Waffle 的匹配器注入到 chai 本身:
```typescript
use(solidity)
```
-我们需要实现 `beforeEach()` 函数,它将在每次测试前重置合约的状态。 让我们先想想我们需要什么。 要部署一个合约,我们需要两样东西:一个钱包和一个已部署的 ERC20 合约,以便将其作为 `AmIRichAlready` 合约的参数传递。
+我们需要实现`beforeEach()`函数,它将在每次测试前重置合约的状态。 让我们先想想我们在那里需要什么。 为了部署一个合约,我们需要两样东西:一个钱包和一个已部署的 ERC20 合约,以便将其作为`AmIRichAlready`合约的参数传递。
首先,我们创建一个钱包:
@@ -154,13 +154,13 @@ use(solidity)
const [wallet] = new MockProvider().getWallets()
```
-然后我们需要部署一个 ERC20 合约。 这里是棘手的部分 -- 我们只有一个接口。 这就是使用 Waffle 来帮助我们的部分。 Waffle 有一个神奇的 `deployMockContract()` 函数,它只使用接口的 _abi_ 来创建合约。
+然后我们需要部署一个 ERC20 合约。 这里是棘手的部分 -- 我们只有一个接口。 这就是 Waffle 来拯救我们的部分。 Waffle 有一个神奇的`deployMockContract()`函数,它只使用接口的*abi*来创建合约。
```typescript
const mockERC20 = await deployMockContract(wallet, IERC20.abi)
```
-现在有了钱包和部署的 ERC20,我们就可以继续部署 `AmIRichAlready` 合约。
+现在有了钱包和部署的 ERC20,我们可以继续部署`AmIRichAlready`合约。
```typescript
const contract = await deployContract(wallet, AmIRichAlready, [
@@ -168,7 +168,7 @@ const contract = await deployContract(wallet, AmIRichAlready, [
])
```
-做完这些,我们的 `beforeEach()` 函数就完成了。 到目前为止,您的 `AmIRichAlready.test.ts` 文件看起来应如下所示:
+做完这些,我们的`beforeEach()`函数就完成了。 到目前为止,您的`AmIRichAlready.test.ts`文件看起来应如下所示:
```typescript
import { expect, use } from "chai"
@@ -198,16 +198,16 @@ describe("Am I Rich Already", () => {
})
```
-让我们为 `AmIRichAlready` 合约编写第一个测试。 您认为我们的测试应该是关于什么的? 没错,您是对的! 我们应该检查我们是否有很多钱:)
+让我们为`AmIRichAlready`合约编写第一个测试。 您认为我们的测试应该是关于什么的? 没错,您是对的! 我们应该检查我们是否有很多钱:)
-但是等一下。 我们的模拟合约怎么知道要返回哪些值呢? 我们还没有实现 `balanceOf()` 函数的任何逻辑。 同样,Waffle 在这里也可以提供帮助。 我们的模拟合约现在有了一些新花招:
+但是等一下。 我们的模拟合约怎么知道要返回什么值呢? 我们还没有实现`balanceOf()`函数的任何逻辑。 同样,Waffle 在这里可以提供帮助。 我们的模拟合约现在有了一些新花招。
```typescript
await mockERC20.mock..returns()
await mockERC20.mock..withArgs().returns()
```
-有了这些知识,我们终于可以编写出我们的第一个测试啦:
+有了这些知识,我们终于可以写出我们的第一个测试啦:
```typescript
it("returns false if the wallet has less than 1000000 tokens", async () => {
@@ -218,14 +218,14 @@ it("returns false if the wallet has less than 1000000 tokens", async () => {
让我们把这个测试分解成几个部分:
-1. 将我们的模拟 ERC20 合约设置为始终返回 99999 个代币的余额。
-2. 检查 `contract.check()` 方法是否返回 `false`。
+1. 将我们的模拟 ERC20 合约设置为始终返回 99999 个通证的余额。
+2. 检查`contract.check()`方法是否返回`false`。
-我们已经准备好启动这个家伙了:
+我们已经准备好启动这个野兽了:
-![一次测试通过](../../../../../developers/tutorials/waffle-dynamic-mocking-and-testing-calls/test-one.png)
+![一次测试通过](test-one.png)
-所以这个测试是有效的,但是,还是有一些改进的余地。 `balanceOf()` 函数将始终返回 99999。 我们可以通过指定一个钱包来改进它,该函数应该为它返回一些东西 -- 就像一个真正的合约。
+所以这个测试是有效的,但是......还是有一些改进的余地。 `balanceOf()`函数将始终返回 99999。 我们可以通过指定一个钱包来改进它,该函数应该为它返回一些东西 -- 就像一个真正的合约。
```typescript
it("returns false if the wallet has less than 1000001 tokens", async () => {
@@ -236,7 +236,7 @@ it("returns false if the wallet has less than 1000001 tokens", async () => {
})
```
-到目前为止,我们只测试了我们不够有钱的情况。 让我们来测试一下相反的情况:
+到目前为止,我们只测试了我们不够有钱的情况。 让我们来测试一下相反的情况。
```typescript
it("returns true if the wallet has at least 1000001 tokens", async () => {
@@ -249,13 +249,13 @@ it("returns true if the wallet has at least 1000001 tokens", async () => {
您运行测试...
-![两次测试通过](../../../../../developers/tutorials/waffle-dynamic-mocking-and-testing-calls/test-two.png)
+![两次测试通过](test-two.png)
...您已经到这儿啦! 我们的合约似乎按计划进行 :)
## 测试合约调用 {#testing-contract-calls}
-让我们总结一下到目前为止所做的事情。 我们已经测试了我们的 `AmIRichAlready` 合约的功能,它似乎正常工作。 这意味着我们已经完成了,对吧? 并非如此! Waffle 允许我们进一步测试合约。 但是具体怎么做呢? 那么,在 Waffle 的武器库中,有一个 `calledOnContract()` 和 `calledOnContractWith()` 匹配器。 他们允许我们检查,我们的合约是否调用了 ERC20 模拟合约。 下面是使用其中一个匹配器的基本测试:
+让我们总结一下到目前为止所做的事情。 我们已经测试了我们的`AmIRichAlready`合约的功能,它似乎正常工作。 这意味着我们已经完成了,对吧? 并非如此! Waffle 允许我们进一步测试合约。 但是具体怎么做呢? 那么,在 Waffle 的武器库中,有一个`calledOnContract()`和`calledOnContractWith()`匹配器。 他们允许我们检查,我们的合约是否调用了 ERC20 模拟合约。 下面是对其中一个匹配器的基本测试:
```typescript
it("checks if contract called balanceOf on the ERC20 token", async () => {
@@ -279,11 +279,11 @@ it("checks if contract called balanceOf with certain wallet on the ERC20 token",
让我们检查测试是否正确:
-![三次测试通过](../../../../../developers/tutorials/waffle-dynamic-mocking-and-testing-calls/test-three.png)
+![三次测试通过](test-three.png)
太好了,所有测试都通过了。
-用 Waffle 测试智能合约调用非常容易。 而这是最精彩的部分。 这些匹配器对正常合约和模拟合约都有效! 这是因为 Waffle 记录并过滤 EVM 调用,而不是像其他技术的流行测试库那样注入代码。
+用 Waffle 测试智能合约调用非常容易。 而这是最精彩的部分。 这些匹配器对正常合约和模拟合约都有效! 这是因为 Waffle 记录和过滤 EVM 调用,而不是像其他技术的流行测试库那样注入代码。
## 最后 {#the-finish-line}
@@ -293,6 +293,6 @@ Waffle 的文档可在[此处](https://ethereum-waffle.readthedocs.io/)获得。
本教程的源代码可以在[此处](https://github.com/EthWorks/Waffle/tree/master/examples/dynamic-mocking-and-testing-calls)找到。
-您可能还对这些教程感兴趣:
+您可能还感兴趣的教程:
- [使用 Waffle 测试智能合约](/developers/tutorials/testing-smart-contract-with-waffle/)
diff --git a/src/content/translations/zh/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers/index.md b/src/content/translations/zh/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers/index.md
new file mode 100644
index 00000000000..be7a9702170
--- /dev/null
+++ b/src/content/translations/zh/developers/tutorials/waffle-say-hello-world-with-hardhat-and-ethers/index.md
@@ -0,0 +1,208 @@
+---
+title: "Waffle使用hardhat和ethers设置hello world的教程"
+description: 使用hardhat和ethers.js制作您的第一个Waffle项目
+author: "MiZiet"
+tags:
+ - "waffle"
+ - "智能合约"
+ - "solidity"
+ - "测试"
+ - "hardhat"
+ - "ethers.js"
+skill: beginner
+lang: zh
+published: 2020-10-16
+---
+
+在这个 [Waffle](https://ethereum-waffle.readthedocs.io) 教程中,我们将学习如何使用 [hardhat](https://hardhat.org/) 和 [ethers.js](https://docs.ethers.io/v5/) 设置一个简单的“Hello world”智能合约项目。 然后我们将学习如何向我们的智能合约中添加一个新功能,以及如何使用 Waffle 测试它。
+
+让我们从创建新项目开始:
+
+```bash
+yarn init
+```
+
+或
+
+```bash
+npm init
+```
+
+并安装所需的软件包:
+
+```bash
+yarn add -D hardhat
+@nomiclabs/hardhat-ethers ethers
+@nomiclabs/hardhat-waffle ethereum-waffle chai
+```
+
+或
+
+```bash
+npm install -D hardhat
+@nomiclabs/hardhat-ethers ethers
+@nomiclabs/hardhat-waffle ethereum-waffle chai
+```
+
+下一步是通过运行 `npx hardhat` 创建一个示例 hardhat 项目。
+
+```bash
+888 888 888 888 888
+888 888 888 888 888
+888 888 888 888 888
+8888888888 8888b. 888d888 .d88888 88888b. 8888b. 888888
+888 888 "88b 888P" d88" 888 888 "88b "88b 888
+888 888 .d888888 888 888 888 888 888 .d888888 888
+888 888 888 888 888 Y88b 888 888 888 888 888 Y88b.
+888 888 "Y888888 888 "Y88888 888 888 "Y888888 "Y888
+
+👷 Welcome to Hardhat v2.0.3 👷
+
+? What do you want to do? …
+Bachan
+Mise en contexte. Est ce des lignes de code, dans ce cas ce n'est pas traduisible
+❯ Create a sample project
+Create an empty hardhat.config.js
+Quit
+```
+
+选择 `Create a sample project`(创建示例项目)
+
+我们的项目结构应如下所示:
+
+```
+MyWaffleProject
+├── contracts
+│ └── Greeter.sol
+├── node_modules
+├── scripts
+│ └── sample-script.js
+├── test
+│ └── sample-test.js
+├── .gitattributs
+├── .gitignore
+├── hardhat.config.js
+└── package.json
+```
+
+### 现在让我们来谈谈其中一些文件: {#now-lets-talk}
+
+- Greeter.sol - 我们的智能合约是用 solidity 编写的;
+
+```solidity
+contract Greeter {
+string greeting;
+
+constructor(string memory _greeting) public {
+console.log("Deploying a Greeter with greeting:", _greeting);
+greeting = _greeting;
+}
+
+function greet() public view returns (string memory) {
+return greeting;
+}
+
+function setGreeting(string memory _greeting) public {
+console.log("Changing greeting from '%s' to '%s'", greeting, _greeting);
+greeting = _greeting;
+}
+}
+```
+
+我们的智能合约可以分为三个部分:
+
+1. 构造函数 - 我们在其中声明一个字符串类型变量,名为`greeting`,
+2. 函数 greet - 调用时返回`greeting`的函数,
+3. 函数 setGreeting - 允许我们更改`greeting`值的函数。
+
+- sample-test.js - 我们的测试文件
+
+```js
+describe("Greeter", function () {
+ it("Should return the new greeting once it's changed", async function () {
+ const Greeter = await ethers.getContractFactory("Greeter")
+ const greeter = await Greeter.deploy("Hello, world!")
+
+ await greeter.deployed()
+ expect(await greeter.greet()).to.equal("Hello, world!")
+
+ await greeter.setGreeting("Hola, mundo!")
+ expect(await greeter.greet()).to.equal("Hola, mundo!")
+ })
+})
+```
+
+### 下一步是编译我们的合约并运行测试: {#compiling-and-testing}
+
+Waffle 测试使用 Mocha(测试框架)与 Chai(一个断言库)。 您只需运行 `npx hardhat test` 并等待以下消息出现。
+
+```bash
+✓ Should return the new greeting once it's changed
+```
+
+### 到目前为止,一切看起来都很好,让我们为我们的项目增加一些复杂性吧 {#adding-complexity}
+
+想象一下这种情况,有人添加了一个空字符串作为问候语。 这不是一种热情的问候,对吗?
+让我们确保这一点不会发生:
+
+当有人传递空字符串时,我们想使用 solidity 的 `revert`。 一件好事是,我们可以使用 Waffle 的 chai 匹配器 `to.be.revertedWith()` 轻松测试此功能。
+
+```js
+it("Should revert when passing an empty string", async () => {
+ const Greeter = await ethers.getContractFactory("Greeter")
+ const greeter = await Greeter.deploy("Hello, world!")
+
+ await greeter.deployed()
+ await expect(greeter.setGreeting("")).to.be.revertedWith(
+ "Greeting should not be empty"
+ )
+})
+```
+
+看起来我们的新测试没通过:
+
+```bash
+Deploying a Greeter with greeting: Hello, world!
+Changing greeting from 'Hello, world!' to 'Hola, mundo!'
+ ✓ Should return the new greeting once it's changed (1514ms)
+Deploying a Greeter with greeting: Hello, world!
+Changing greeting from 'Hello, world!' to ''
+ 1) Should revert when passing an empty string
+
+
+ 1 passing (2s)
+ 1 failing
+```
+
+让我们在智能合约中实现这个功能:
+
+```solidity
+require(bytes(_greeting).length > 0, "Greeting should not be empty");
+```
+
+现在,我们的 setGreeting 函数如下所示:
+
+```solidity
+function setGreeting(string memory _greeting) public {
+require(bytes(_greeting).length > 0, "Greeting should not be empty");
+console.log("Changing greeting from '%s' to '%s'", greeting, _greeting);
+greeting = _greeting;
+}
+```
+
+让我们再次运行测试:
+
+```bash
+✓ Should return the new greeting once it's changed (1467ms)
+✓ Should revert when passing an empty string (276ms)
+
+2 passing (2s)
+```
+
+恭喜! 您做到了:)
+
+### 总结 {#conclusion}
+
+我们使用 Waffle、Hardhat 和 ethers.js 制作了一个简单的项目。 我们学习了如何设置项目、添加测试和实现新功能。
+
+欲了解更多用于测试您的智能合约的优秀 chai 匹配器,请查看[官方 Waffle 文档](https://ethereum-waffle.readthedocs.io/en/latest/matchers.html)。
diff --git a/src/content/translations/zh/eips/index.md b/src/content/translations/zh/eips/index.md
index 4c2e4c41090..806767bbed0 100644
--- a/src/content/translations/zh/eips/index.md
+++ b/src/content/translations/zh/eips/index.md
@@ -1,30 +1,30 @@
---
title: 以太坊改进提议 (EIP)
-description: 了解以太坊改进提议 (EIP) 的基本信息。
+description: 了解以太坊改进提案所需的基本信息
lang: zh
---
-# 隆重介绍以太坊改进提议(EIPs) {#introduction-to-ethereum-improvement-proposals-eips}
+# 以太坊改进提案 (EIP) 介绍 {#introduction-to-ethereum-improvement-proposals}
## 什么是 EIP? {#what-are-eips}
[以太坊改进提议 (EIP)](https://eips.ethereum.org/)是为以太坊潜在新功能或流程提出建议的标准。 EIP 包含提议改进的技术规范,并作为社区的“真相来源”。 在 EIP 的过程中,将会讨论和制定以太坊的网络升级和应用标准。
-以太坊社区中的任何人都可以创造一个 EIP。 关于如何编写 EIP,你可以在 [EIP 1](https://eips.ethereum.org/EIPS/eip-1) 中找到。 EIP 应提供功能及其原理的简明技术细节和提出的理由。 EIP 作者负责在社区内建立共识并记录反对意见。 提交一个高水平的 EIP 需要很强的技术能力,历史上,大多数 EIP 作者都是应用程序或者协议开发者。
+以太坊社区中的任何人都可以创造一个 EIP。 以太坊改进提案编写准则在 [EIP 1](https://eips.ethereum.org/EIPS/eip-1) 中提供。 以太坊改进提案应主要包括简明技术规范,并提供一些激励措施。 以太坊改进提案的创作者负责在社区内建立共识并记录不同意见。 从历史上看,大多数以太坊改进提案的创作者通常是应用程序或协议开发者,因为提交高水平的以太坊改进提案需要很强的技术能力。
## 为什么 EIP 很重要? {#why-do-eips-matter}
-EIP 作为一个中心角色,记载以太坊的变化并且记载在以太坊中。 它们是人们提议、辩论和适应变化的途径。 有[各种不同类型的 EIP](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1.md#eip-types),其中包括会影响共识并需要网络升级的用于底层协议更改的核心 EIP,以及用于应用程序标准的 ERC。 例如,创建 token 的标准,[ERC20](https://eips.ethereum.org/EIPS/eip-20) 或 [ERC721](https://eips.ethereum.org/EIPS/eip-721) 允许应用程序使用相同的规则处理所有 token,使得创建互操作应用程序更加容易。
+EIP 作为一个中心角色,记载以太坊的变化并且记载在以太坊中。 它们是人们提议、辩论和适应变化的途径。 有[各种不同种类的以太坊改进提案](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1.md#eip-types),其中包括涉及底层协议更改,影响共识并需要网络升级的核心以太坊改进提案,例如 [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559),还有应用程序标准相关的以太坊意见征求,例如 [EIP-20](https://eips.ethereum.org/EIPS/eip-20) 和 [EIP-721](https://eips.ethereum.org/EIPS/eip-721)。
-每个网络升级都包含一组 EIP,需要网络上每个 [以太坊客户端](/learn/#clients-and-nodes)来执行。 这意味着要在以太坊主网上与其他客户达成共识, 客户端开发者需要确保他们都实现了所需的 EIP。
+每个网络升级都包含一组 EIP,需要网络上每个 [以太坊客户端](/learn/#clients-and-nodes)来执行。 这就意味着要想在以太坊主网上与其他客户端保持共识,客户端开发者需要确保他们已经全部实现了必需的以太坊改进提案。
-在提供变更技术规格的同时,EIP 是以太坊社区治理的基本单位。任何人都可以自由提议,然后由社区不同的参与者讨论,决定是否将其发展为通用标准或者加入到网络升级中。 因为非核心 EIP 不必被所有应用程序采纳(例如,您可以创建一个非 [ERC20 代币](https://eips.ethereum.org/EIPS/eip-20)),但核心 EIP 必须被广泛采用(因为所有节点都必须升级,才能保证其属于同一网络的一部分),与非核心 EIP 相比,核心 EIP 需要在社区内达成更广泛的共识。
+在提供变更技术规格的同时,EIP 是以太坊社区治理的基本单位。任何人都可以自由提议,然后由社区不同的参与者讨论,决定是否将其发展为通用标准或者加入到网络升级中。 因为非核心以太坊改进提案不必被所有应用程序采用(例如,可以创建未实现 EIP-20 的同质化代币),而核心以太坊改进提案必须要广泛采用(因为所有节点都必须升级才能一直属于同一网络),因此与非核心以太坊改进提案相比,核心以太坊改进提案需要在社区内达成更广泛的共识。
## EIP 历史 {#history-of-eips}
-[Ethereum Improvement Proposals (EIP) Github 存储库](https://github.com/ethereum/EIPs) 于 2015 年 10 月创建。 EIP 进程基于[比特币改进提议 (BIP)](https://github.com/bitcoin/bips) 进程。它本身基于 [Python 增强提议 (PEP)](https://www.python.org/dev/peps/) 进程。
+[Ethereum Improvement Proposals (EIP) GitHub 存储库](https://github.com/ethereum/EIPs) 于 2015 年 10 月创建。 EIP 进程基于[比特币改进提议 (BIP)](https://github.com/bitcoin/bips) 进程。它本身基于 [Python 增强提议 (PEP)](https://www.python.org/dev/peps/) 进程。
-EIP 编辑人员的任务是审查 EIP 的技术可靠性、正确的拼写/语法和代码风格。 Martin Becze、Vitalik Buterin、Gavin Wood 和其他一些人是 2015 年至 2016 年末最初的 EIP 编辑者。
+以太坊改进提案编辑人员的任务是审查以太坊改进提案的技术可靠性、格式问题,并校正拼写、语法和代码风格。 Martin Becze、Vitalik Buterin、Gavin Wood 和其他一些人是 2015 年至 2016 年末最初的 EIP 编辑者。
现有以太坊改进提案编辑人员有
@@ -46,32 +46,26 @@ EIP 编辑人员的任务是审查 EIP 的技术可靠性、正确的拼写/语
如果你想成为以太坊改进提案编辑人员,请查看 [EIP-5069](https://eips.ethereum.org/EIPS/eip-5069)。
-以太坊改进提案编辑人员与[以太坊牧猫人组织](https://ethereumcatherders.com/)及 [Ethererum Magicians](https://ethereum-magicians.org/) 社区的成员共同决定要实施的以太坊改进提案,共同负责以太坊改进提案的推广以及推动以太坊改进提案进入“定稿”或“已撤销”阶段。
+以太坊改进提案编辑人员决定一个提议何时可以成为以太坊改进提案,并帮助以太坊改进提案创作者们推进他们的提议。 以太坊改进提案编辑人员和社区之间的会议由[以太坊牧猫人组织](https://ethereumcatherders.com/)协助组织(请参阅 [EIPIP](https://github.com/ethereum-cat-herders/EIPIP))。
完整的标准化流程和图表在 [EIP-1](https://eips.ethereum.org/EIPS/eip-1) 中描述
-## 查看更多 {#learn-more}
+## 了解更多 {#learn-more}
-如果你有兴趣阅读更多关于以太坊改进提案的信息,请查看[以太坊改进提案网站](https://eips.ethereum.org/),该网站提供了更多信息,包括:
+如果您有兴趣详细了解以太坊改进提案,请查看[以太坊改进提案网站](https://eips.ethereum.org/)和[ EIP-1](https://eips.ethereum.org/EIPS/eip-1)。 下面是一些有用的链接:
-- [各种不同类型的以太坊改进提案](https://eips.ethereum.org/)
-- [已编制以太坊改进提案清单](https://eips.ethereum.org/all)
-- [以太坊改进提案的状态和含义](https://eips.ethereum.org/)
+- [以太坊改进提案完整列表](https://eips.ethereum.org/all)
+- [所以太坊改进提案类型说明](https://eips.ethereum.org/EIPS/eip-1#eip-types)
+- [所有以太坊改进提案状态说明](https://eips.ethereum.org/EIPS/eip-1#eip-process)
## 参与 {#participate}
-任何人都可以编制以太坊改进提案或以太坊意见征求,但编制前应该先阅读 [EIP-1](https://eips.ethereum.org/EIPS/eip-1),其中概述了以太坊改进提案流程、什么是以太坊改进提案、以太坊改进提案类型、以太坊改进提案文件内容、以太坊改进提案的格式和模板、以太坊改进提案编辑人员名单以及在编制以太坊改进提案之前你需要了解的所有以太坊改进提案相关内容。 你新编制的以太坊改进提案应该定义新功能,新功能不太复杂,但也不太小众,可以在以太坊生态系统的项目中使用。 最难的部分是推广,作为创作者,需要促使人们关注你的以太坊改进提案,收集反馈,撰写文章描述你的以太坊改进提案解决的问题,并与项目合作实施你的以太坊改进提案。
-
-如果你有兴趣关注讨论过程或分享你对以太坊改进提案的看法意见,请查看 [Ethereum Magicans 论坛](https://ethereum-magicians.org/),在那里与社区讨论以太坊改进提案。
-
-另请参见:
-
-- [如何编制以太坊改进提案](https://eips.ethereum.org/EIPS/eip-1)
+任何人都可以创建以太坊改进提案。 提交提议之前,请务必阅读[ EIP-1](https://eips.ethereum.org/EIPS/eip-1),其中概述了以太坊改进提案流程以及如何编写以太坊改进提案,而且在[以太坊魔术师](https://ethereum-magicians.org/)论坛上征求反馈意见并首先与社区讨论提议,然后再提交提议草案。
## 引用 {#references}
-网页内容部分来自 Hudson Jameson [以太坊协议开发治理和网络升级协调](https://hudsonjameson.com/2020-03-23-thero-protocol-development-governance-and-network-upde-coordination/)
+网页内容部分来自 Hudson Jameson [以太坊协议开发治理和网络升级协调] (https://hudsonjameson.com/2020-03-23-ethereum-protocol-development-governance-and-network-upgrade-coordination/)
diff --git a/src/content/translations/zh/energy-consumption/index.md b/src/content/translations/zh/energy-consumption/index.md
index 4ba871b6bcb..e29b39e4b18 100644
--- a/src/content/translations/zh/energy-consumption/index.md
+++ b/src/content/translations/zh/energy-consumption/index.md
@@ -6,47 +6,53 @@ lang: zh
# 以太坊能源消耗 {#introduction}
-以太坊是一个绿色区块链。 它使用[权益证明](/developers/docs/consensus-mechanisms/pos)共识机制,可以在低功率设备上运行,并且不需要大量计算即可参与。 以太坊的权益证明机制通过使用质押的 ETH 来保护网络,而不是像[工作量证明](/developers/docs/consensus-mechanisms/pos)那样消耗能量。 切换到权益证明意味着以太坊网络消耗的能量相对较小 - 大约为 0.01 TWh/年。
+以太坊是一个绿色区块链。 它使用[权益证明](/developers/docs/consensus-mechanisms/pos)共识机制,可以在低功率设备上运行,并且不需要大量计算即可参与。 以太坊的权益证明机制通过使用质押的以太币保护网络安全,而不是像[工作量证明](/developers/docs/consensus-mechanisms/pow)机制下以消耗能源的方式实现。 过渡到权益证明意味着以太坊网络消耗的能源相对较小 - 大约为 0.01 亿千瓦时/年。
## 权益证明能源消耗 {#proof-of-stake-energy}
以太坊的能源消耗大致等于为网络上的每个节点运行一台普通笔记本电脑的成本。
-许多文章估算了“每笔交易”的能源消耗,以便将区块链与其他行业进行比较。 这样做的好处是易于理解。 然而,基于交易的估算可能会产生误导,因为提议和验证一个区块所需的能量与其中的交易数量无关。 如果按每个交易单位的能源消耗计算,意味着交易越少能源消耗越少,反之亦然,但事实并非如此。 每笔交易估算值高度依赖于区块链的交易吞吐量是如何定义的,并且可以通过调整这个定义来使值看起来更大或更小。
+许多文章估算了“每笔交易”的能源消耗,以便将区块链与其他行业进行比较。 这样做的好处是易于理解。 然而,基于交易的估算可能会产生误导,因为提出和验证一个区块所需的能源与其中的交易数量无关。 如果按每个交易单位的能源消耗计算,意味着交易越少能源消耗越少,反之亦然,但事实并非如此。 每笔交易估算值高度依赖于区块链的交易吞吐量是如何定义的,并且可以通过调整这个定义来使值看起来更大或更小。
例如,在以太坊,交易吞吐量不仅是基础层的交易吞吐量,还有所有“[二层网络](/layer-2/)”卷叠的交易吞吐量总和。但二层网络卷叠的交易吞吐量通常不包含在计算中,因此计算出来的值会大幅减少。 这就是为什么跨平台比较每笔交易能源消耗的工具具有误导性的原因之一。
更重要的是整个网络的整体能源消耗和碳足迹。 通过这些值,我们可以检查网络为其用户和整个社会提供了什么,并更全面地评估该能源消耗是否合理。 另外,如果按照每笔交易去衡量,意味着网络的价值仅来自其在帐户之间传输加密货币中所发挥的作用,并且忽略了诚实的成本效益分析。
-[Digiconomist 为比特币和以太坊提供全网能源消耗和碳足迹](https://digiconomist.net/ethereum-energy-consumption)。 在撰写本文时,比特币每年消耗约 200 TWh 的能量并排放约 100 MT(百万吨)的碳,同时每年废弃的硬件大约产生 32,000 吨电器废物。 相比之下,保护以太坊的总能源消耗更接近 **0.01 TWh/年**。
+[CCRI](https://carbon-ratings.com)(加密碳评级机构)已对以太坊网络的电力消耗和碳足迹进行了广泛分析(见报告[_合并 - 对以太坊网络电力消耗和碳足迹的影响_](https://carbon-ratings.com/eth-report-2022))。 加密碳评级机构测量了各种不同节点的耗电量,这些节点具有各种硬件和客户端软件配置。 得出的结果是,在进行分析时(2022 年 9 月),网络的年耗电量估算值为 **2.601 兆瓦时**(0.0026 亿千瓦时),这相当于 **870 吨二氧化碳当量**的年碳排放量(应用了地区特定碳强度因子)。
-![各行业能源消耗比较](./energy.png)
+[Digiconomist 为比特币和以太坊提供全网的能源消耗和碳足迹](https://digiconomist.net/ethereum-energy-consumption)。 撰写本文时,比特币每年消耗约 200 亿千瓦时能量并排放大约 1 亿吨碳,同时每年废弃的硬件大约产生 32,000 吨电子废弃物。 相比之下,用以保护以太坊的总能源消耗更接近 **0.01 亿千瓦时/年**。
-上图显示了以 TWh/年为单位的各个行业的估计年能源消耗(检索于 2022 年 6 月)。 _请注意,图中显示的估算值来自下文链接指向的公开来源。 这些估算值 仅作例证,不代表官方估算、承诺或预测。_
+
-为了解以太坊能源消耗的实际情况,我们可以比较其他行业的年度估算值。 如果我们把以太坊看作一个将数字资产作为投资安全持有的平台,或许我们可以将其比作开采黄金,估计花费大约为 [240 TWh/年](https://www.kitco.com/news/2021-05-17/Gold-s-energy-consumption-doubles-that-of-bitcoin-Galaxy-Digital.html)。 作为一个数字支付平台,我们或许可以与 PayPal 相提并论(估计消耗大约 [0.26 TWh/年](https://app.impaakt.com/analyses/paypal-consumed-264100-mwh-of-energy-in-2020-24-from-non-renewable-sources-27261))。 作为一个娱乐平台,我们或许可以将其与游戏行业进行比较,估计花费约为 [34 TW/年](https://www.researchgate.net/publication/336909520_Toward_Greener_Gaming_Estimating_National_Energy_Use_and_Energy_Efficiency_Potential)。 Netflix 的能源消耗估计值在[约 0.45TWhr/年](https://s22.q4cdn.com/959853165/files/doc_downloads/2020/02/0220_Netflix_EnvironmentalSocialGovernanceReport_FINAL.pdf)(他们在 2019 年自己报告的估计值)和高达约 94 TWh/年([Shift Project](https://theshiftproject.org/en/article/unsustainable-use-online-video/) 估计值)之间巨大变化- 在 [Carbon Brief](https://www.carbonbrief.org/factcheck-what-is-the-carbon-footprint-of-streaming-video-on-netflix) 上有一些关于这些估计值的假设的讨论。 或者,可以将以太坊与 YouTube 进行比较,后者估计花费约为 [244 TWh/年](https://thefactsource.com/how-much-electricity-does-youtube-use/),尽管这些值在很大程度上取决于流式传输视频的设备类型以及数据中心等底层基础设施的能源效率。 YouTube 的能源消耗估算值已按频道和单个视频进行细分。 [这些估计](https://thefactsource.com/how-much-electricity-does-youtube-use/)表明,人们在 2019 年观看《江南 Style》时消耗的能量要比以太坊一年内使用的权益证明所消耗的能量多 45 倍。
+上图显示了各个行业的估算年能源消耗,以亿千瓦时/年为单位(检索于 2022 年 6 月)。 _请注意,图中显示的估算值来自下文链接指向的公开来源。 这些估算值 仅作说明用途,不代表官方估算值、承诺或预测。_
+
+为了解以太坊能源消耗的实际情况,我们可以比较其他行业的年化估算值。 如果把以太坊看作一个平台,可让我们安全地持有数字资产并作为投资,或许我们可以将其比作开采黄金,估算能耗大约为 [240 亿千瓦时/年](https://www.kitco.com/news/2021-05-17/Gold-s-energy-consumption-doubles-that-of-bitcoin-Galaxy-Digital.html)。 作为数字支付平台,我们或许可以与 PayPal 相提并论(估算消耗大约为 [0.26 亿千瓦时/年](https://app.impaakt.com/analyses/paypal-consumed-264100-mwh-of-energy-in-2020-24-from-non-renewable-sources-27261))。 作为娱乐平台,我们也许可以与游戏行业进行比较,仅在美国,游戏行业的估算能耗大约为 [34 亿千瓦时/年](https://www.researchgate.net/publication/336909520_Toward_Greener_Gaming_Estimating_National_Energy_Use_and_Energy_Efficiency_Potential)_。_ Netflix 的能源消耗估算值在[约 0.45 亿千瓦时/年](https://s22.q4cdn.com/959853165/files/doc_downloads/2020/02/0220_Netflix_EnvironmentalSocialGovernanceReport_FINAL.pdf)(Netflix 2019 年报告的估算值)到约 94 亿千瓦时/年([Shift Project](https://theshiftproject.org/en/article/unsustainable-use-online-video/) 的估算值)范围内大幅变化 - 在 [Carbon Brief](https://www.carbonbrief.org/factcheck-what-is-the-carbon-footprint-of-streaming-video-on-netflix) 上有一些关于支撑这些估算值的假设的讨论。 另外,可以将以太坊与 Youtube 进行比较,后者估算能耗约为 [244 亿千瓦时/年](https://thefactsource.com/how-much-electricity-does-youtube-use/),尽管这些值在很大程度上取决于流式传输视频的设备类型以及数据中心等底层基础设施的能源效率。 YouTube 的能源消耗估算值已按频道和单个视频进行细分。 [这些估算值](https://thefactsource.com/how-much-electricity-does-youtube-use/)表明,人们在 2019 年观看《江南 Style》时消耗的能源要比权益证明以太坊一年内使用能量多 45 倍。
## 绿色应用层 {#green-applications}
-虽然以太坊的能源消耗非常低,但在以太坊上也有大量、不断增长且高度活跃的**再生金融 (ReFi)** 社区。 再生金融应用使用去中心化金融组件来构建具有积极外部影响,从而使环境受益的金融应用。 再生金融是更广泛的 [“solarpunk”](https://en.wikipedia.org/wiki/Solarpunk) 运动的一部分,该运动与以太坊紧密结合,旨在将技术进步和环境管理结合起来。 以太坊去中心化、无需许可和可组合的特性使其成为再生金融和 solarpunk 社区的理想基础层。 通过这些(以及其他,例如 [DeSci](/desci/))的发展,以太坊正在成为一种对环境和社会有益的技术。
+虽然以太坊的能源消耗非常低,但在以太坊上也出现了大量、不断增长且高度活跃的**再生金融 (ReFi)** 社区。 再生金融应用程序使用去中心化金融组件来构建具有积极外部影响,从而使环境受益的金融应用程序。 再生金融是更广泛的[“solarpunk”](https://en.wikipedia.org/wiki/Solarpunk)运动的一部分,该运动与以太坊高度契合,旨在将技术进步和环境管理结合起来。 以太坊具有中心化、无需许可和可组合的特性,这使其成为再生金融和 solarpunk 社区的理想基础层。 通过这些(以及其他,例如 [去中心化科学](/desci/))应用程序的开发,以太坊正在成为一项对环境和社会有益的技术。
## 以太坊的碳债务 {#carbon-debt}
-以太坊目前的能源消耗非常低,但并非总是如此。 以太坊在 2022 年第三季度开启了其权益证明共识机制。 然而,以太坊在 2014-2022 年间使用了工作量证明机制,这带来了更大的环境成本。
+以太坊目前的能源消耗非常低,但并非总是如此。 以太坊在 2022 年第三季度启动了其权益证明共识机制。 然而,以太坊在 2014-2022 年间采用工作量证明机制,其环境成本要高出许多。
+
+自创立以来,以太坊一直致力于实施权益证明共识机制,但要实施这种共识机制而不牺牲安全性和去中心化,需要多年的重点研究和开发。 因此,使用了工作量证明机制来启动网络。 工作量证明共识要求矿工使用计算硬件解决难题,这个过程中会消耗能源。 难题的解决证明矿工已消耗了能源,表明他们投入了现实世界的价值来换取往区块链添加内容的权利。 以太坊的总能源消耗在 2022 年 2 月加密牛市的顶峰期间达到峰值,略低于 94 亿千瓦时/年。 在过渡到权益证明之前的夏天,以太坊能源消耗接近 60 亿千瓦时/年,与乌兹别克斯坦相当,碳排放量和阿塞拜疆不相上下(33 兆吨/年)。
+
+[加密碳评级机构](https://carbon-ratings.com)研究了以太坊合并(从工作量证明过渡到权益证明)产生的影响;结果凸显了共识协议变更带来的重大影响:年化耗电量从 22,900,320 兆瓦时减少到 2,601 兆瓦时,减少了 **99.988 %** 以上。 同样,以太坊的碳足迹减少了大约 **99.992 %**(从 11,016,000 吨减少到 870 吨二氧化碳当量)。 打个比方,这相当于排放量从埃菲尔铁塔的高度减少到一个小塑料玩具人偶,如下图所示。
-自成立以来,以太坊一直致力于实施权益证明共识机制,但在不牺牲安全性和去中心化的情况下做到这一点需要多年的重点研究和开发。 因此,使用了工作量证明机制来启动网络。 工作量证明共识要求矿工使用他们的计算硬件来解决难题,在这个过程中会消耗能量。 难题的解决证明矿工已消耗了能量,表明他们为添加到区块链的权利投入了现实世界的价值。 以太坊的总能耗在 2022 年 2 月加密牛市的顶峰期间达到峰值,略低于 94 TWh/年。 在转换为权益证明之前的夏天,能源消耗接近 60 TWh/年,与乌兹别克斯坦相当,碳排放量相当于阿塞拜疆(33 MT/年)。
+![以太坊合并前后的能源消耗比较。 左边是 330 米高的埃菲尔铁塔,右边是放大镜下 4 厘米高的塑料玩具人偶。](energy_consumption_pre_post_merge.png)
-工作量证明和权益证明都只是决定谁可以添加下一个区块的机制。 将工作量证明换成权益证明,其中投资的实际价值来自直接在智能合约中质押的 ETH,因此矿工无需消耗能量即可添加到区块链。 因此,保护网络的环境成本大大降低。
+工作量证明和权益证明都只是决定谁可以添加下一个区块的机制。 将工作量证明转换成权益证明后,投入的真实世界价值来自直接在智能合约中质押的以太币,因此矿工无需消耗能量即可添加到区块链。 因此,保护网络的环境成本大大降低。
## 为什么权益证明比工作量证明更环保 {#why-pos-is-greener-than-pow}
-工作量证明是保护网络的一种可靠方法。 在之前的工作量证明系统下,以太坊区块链上的交易由[矿工](/developers/docs/consensus-mechanisms/pow/mining)验证。 矿工将交易捆绑成有序的区块,并将它们添加到以太坊区块链中。 新区块会传播到所有其他独立运行交易的节点操作者,并验证它们是否有效。 任何不诚实都表现为不同节点之间的不一致。 诚实的区块被添加到区块链中,成为历史不可改变的一部分。 只有存在与采矿相关的成本,以及无法预测哪个特定节点将提交下个区块时,才允许任何矿工添加新区块。 通过实施工作量证明来满足这些条件。 为了有资格提交一个交易块,矿工必须第一个为计算成本高的难题提交解决方案。 为了成功控制区块链,不诚实的矿工必须通过投资足够的硬件和能源来超越大多数其他矿工,从而不断赢得工作量证明竞赛。
+工作量证明是保护网络的一种可靠方法。 在之前的工作量证明系统下,以太坊区块链上的交易由[矿工](/developers/docs/consensus-mechanisms/pow/mining)验证。 矿工将交易捆绑成有序的区块,并将它们添加到以太坊区块链中。 新区块会传播到所有其他节点运营商,他们独立运行交易并验证它们是否有效。 任何不诚实都表现为不同节点之间的不一致。 诚实的区块被添加到区块链中,成为历史不可改变的一部分。 只有存在与采矿相关的成本,并且无法预测哪个特定节点将提交下一个区块时,才允许任何矿工添加新区块。 这些条件是通过工作量证明来满足的。 矿工必须率先求解出一个高计算成本的问题,才有资格提交一个交易区块。 为了成功控制区块链,不诚实的矿工必须通过投资足够的硬件和能源来超越大多数其他矿工,从而不断赢得工作量证明竞赛。
-出于一些原因,这种网络保护机制存在一定问题。 首先,矿工将通过投资更强大的硬件来增加成功的几率,通过购买越来越耗电的挖矿设备为硬件装备竞赛创造条件。 这增加了网络的能源消耗并产生了硬件浪费。 其次,以太坊的工作量证明协议(在过渡到权益证明之前)的年总耗电量约等于芬兰的[^1],碳足迹与瑞士[^1]相似。
+这种网络保护机制存在一定问题,原因如下。 首先,矿工通过投资更强大的硬件才可以增加成功的几率,这为硬件装备竞赛创造了条件,矿工们父需要购买越来越耗电的挖矿设备。 这增加了网络的能源消耗并产生了硬件资源的浪费。 其次,以太坊工作量证明协议(在过渡到权益证明之前)的年总耗电量大约相当于芬兰的年总耗电量[^1],碳足迹与瑞士[^1]相当。
-权益证明使用验证者替代矿工。 验证者执行的功能与矿工相同,不同之处在于他们没有将资产以能源消耗的形式支出,而是将以太币作为抵押品以防止不诚实行为。 如果验证者行为不端,质押的以太币可能会被销毁,而更恶意的行为会受到更严厉的惩罚。 这强烈激励了积极和诚实的参与来保护网络,而不需要大量的能源消耗。 由于保护工作量证明网络所消耗的几乎所有能量都来自挖矿算法,因此切换到权益证明可以显著降低能源消耗。 在权益证明下投资更强大的硬件也没有任何好处,因此不存在装备竞赛条件,电子废物也更少。 以太坊验证者[可以在典型的笔记本电脑或低功耗设备上运行,例如<0>树莓派](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/user-guide/ethereum2.0.html)。
+权益证明使用验证者替代矿工。 验证者执行的功能与矿工相同,不同之处在于他们没有将资产以能源消耗的形式预先支出,而是质押以太币作为抵押品以防止不诚实行为。 如果验证者行为不端,质押的以太币可能会被销毁,而更恶意的行为会受到更严厉的惩罚。 这种机制强烈激励用户通过积极和诚实的参与来保护网络,而不需要大量的能源消耗。 由于保护工作量证明网络所消耗的几乎所有能源都是挖矿算法造成的,因此转换到权益证明可以显著降低能源消耗。 在权益证明下投资更强大的硬件也没有任何好处,因此不存在装备竞赛的条件,电子废弃物也更少。 以太坊验证者可以在普通笔记本电脑或低功耗设备上运行,例如[树莓派](https://ethereum-on-arm-documentation.readthedocs.io/en/latest/index.html)。
-详细了解[以太坊如何实现权益证明](/developers/docs/consensus-mechanisms/pos)及其与工作量证明的比较。
+详细了解[以太坊如何实现权益证明](/developers/docs/consensus-mechanisms/pos)和其与工作量证明的比较。
如果您认为这些数据不正确或可以更加精确,请提出问题或拉取请求。 这些是 ethereum.org 团队使用可公开访问的信息和当前以太坊路线图做出的估计。 这些说法并不代表以太坊基金会的正式承诺。
@@ -59,6 +65,7 @@ lang: zh
- [以太坊的排放:自下而上的估算](https://kylemcdonald.github.io/ethereum-emissions/) _ Kyle McDonald_
- [以太坊能源消耗指标](https://digiconomist.net/ethereum-energy-consumption/) – _Digiconomist_
- [ETHMerge.com](https://ethmerge.com/) — _[@InsideTheSim](https://twitter.com/InsideTheSim)_
+- [合并 - 对以太坊网络电力消耗和碳足迹的影响](https://carbon-ratings.com/eth-report-2022) - _CCRI_。
## 相关主题 {#related-topics}
diff --git a/src/content/translations/zh/governance/index.md b/src/content/translations/zh/governance/index.md
index a2e7edf80a8..4950ac88a21 100644
--- a/src/content/translations/zh/governance/index.md
+++ b/src/content/translations/zh/governance/index.md
@@ -2,6 +2,7 @@
title: 以太坊治理
description: 简介:如何做出关于以太坊的决策。
lang: zh
+postMergeBannerTranslation: page-upgrades-post-merge-banner-governance-ood
---
# 以太坊治理简介 {#introduction}
@@ -160,7 +161,7 @@ _注:任何个人都可以属于多个组(如:协议开发者可以支持
-## 如何参与其中? {#get-involved}
+## 如何加入? {#get-involved}
- [提出以太坊改进提议](/eips/#participate)
- [讨论目前的提案](https://ethereum-magicians.org/)
diff --git a/src/content/translations/zh/nft/index.md b/src/content/translations/zh/nft/index.md
index cc0f8b219c0..d23bed404cf 100644
--- a/src/content/translations/zh/nft/index.md
+++ b/src/content/translations/zh/nft/index.md
@@ -7,8 +7,8 @@ emoji: ":frame_with_picture:"
sidebarDepth: 2
image: ../../../../assets/infrastructure_transparent.png
alt: 通过全息图显示的以太币徽标。
-summaryPoint1: 一种可以用以太坊资产表示任何独特事物的方法。
-summaryPoint2: 非同质化代币相比较以往,更能赋予内容创作者更多的权利。
+summaryPoint1: 一种用以太坊资产表示任何独特事物的方法。
+summaryPoint2: 非同质化代币正在前所未有地向内容创作人赋予更多权利。
summaryPoint3: 由以太坊区块链上的智能合约提供支持
---
@@ -18,7 +18,7 @@ summaryPoint3: 由以太坊区块链上的智能合约提供支持
## 什么是非同质化代币? {#what-are-nfts}
-非同质化代币是我们用以代表独特物品所有权的代币。 它们让我们把诸如艺术品、收藏品甚至房地产等物品代币化。 资产所有权由以太坊区块链保护 - 任何人都不能修改所有权记录或复制/粘贴新的 NFT。
+非同质化代币是我们用以代表独特物品所有权的代币。 它们让我们把诸如艺术品、收藏品甚至房地产等物品代币化。 资产所有权由以太坊区块链保护 - 任何人都不能修改所有权记录或复制/粘贴新的非同质化代币。
NFT 代表非同质化代币。 非同质化是一个经济术语,您可以用它来描述家具、歌曲文件或您的电脑等物品。 这些东西不能与其他物品互换,因为它们具有独特属性。
@@ -302,7 +302,7 @@ Decentraland 是一款虚拟现实游戏,甚至允许玩家购买代表虚拟
安全意味着任何人都不能复制/粘贴或偷窃您的非同质化代币。
-得益于以太坊的这些特性,现在可以通过数字方式拥有独特的物品并为您的物品获得合理价格。 以太坊使用涉及[“权益证明”](/developers/docs/consensus-mechanisms/pos)的去中心化共识机制来保护资产。 这是一种确定谁可以将交易块添加到链中的低碳方法,并且被认为比能源密集型替代方案[“工作量证明”](/developers/docs/consensus-mechanisms/pow)更安全。 非同质化代币一直都是一种高能量消耗,因为以往使用工作量证明来保护以太坊。 这已不再是事实。
+得益于以太坊的这些特性,现在可以通过数字方式拥有独特的物品并为您的物品获得合理价格。 以太坊使用包括[“权益证明”](/developers/docs/consensus-mechanisms/pos)在内的去中心化共识机制来保护资产。 这是一种确定谁可以将交易块添加到链中的低碳方法,并且被认为比能源密集型替代方案[“工作量证明”](/developers/docs/consensus-mechanisms/pow)更安全。 非同质化代币一直都和高能耗关联,因为以往使用工作量证明来保护以太坊。 这已不再是事实。
#### 铸造非同质化代币 {#minting-nfts}
@@ -313,21 +313,21 @@ Decentraland 是一款虚拟现实游戏,甚至允许玩家购买代表虚拟
- 确认上述内容的交易需要被添加到一个区块中,并在链上“永存”。
- 该区块需要由网络中的所有人确认为“正确”。 这种共识消除了对中介机构的需求,因为网络同意您的非同质化代币存在并属于您。 这是在链上的,任何人都可以检查。 这是以太坊帮助非同质化代币创造者最大化收益的方式之一。
-所有这些任务都由区块生产者和验证者完成。 区块提议者将您的非同质化代币交易添加到区块中并将其广播到网络的其余部分。 验证者检查交易是否有效,然后将其添加到他们的数据库中。 有很多加密经济激励措施来确保验证者诚实行事。 否则,任何人都可以声称他们拥有你刚刚铸造的非同质化代币并以欺诈方式转移所有权。
+所有这些任务都由区块生产者和验证者完成。 区块提议者将你的非同质化代币交易添加到区块中并将其广播到网络的其余部分。 验证者检查交易是否有效,然后将其添加到他们的数据库中。 有很多加密经济激励措施来确保验证者诚实行事。 否则,任何人都可以声称他们拥有你刚刚铸造的非同质化代币并以欺诈方式转移所有权。
#### 非同质化代币安全性 {#nft-security}
-以太坊的安全性来自权益证明。 该系统旨在经济地抑制恶意行为,使以太坊防篡改。 这使得非同质化代币成为可能。 一旦包含您的非同质化代币交易的区块完成后,将需要攻击者花费数百万 ETH 来更改它。 任何运行以太坊软件的人都能立即检测到对非同质化代币的不诚实篡改,而不良行为者将受到经济处罚并被驱逐出网络。
+以太坊的安全性来自权益证明。 该系统旨在通过经济手段遏制恶意行为,使以太坊防篡改。 这使得非同质化代币成为可能。 一旦包含你的非同质化代币交易的区块完成后,将需要攻击者花费数百万个以太币来更改它。 任何运行以太坊软件的人都能立即检测到对非同质化代币的不诚实篡改,而不良行为者将受到经济处罚并被驱逐出网络。
与非同质化代币相关的安全问题通常与网络钓鱼诈骗、智能合约漏洞或用户错误(例如无意中暴露私钥)有关,因此良好的钱包安全性对于非同质化代币所有者至关重要。
- 更多关于安全的信息
+ 有关安全性的更多信息
## 开发非同质化代币 {#build-with-nfts}
-大多数非同质化代币都使用一个统一标准创建,即 [ERC-721](/developers/docs/standards/tokens/erc-721/)。 然而,您可能也想了解其他标准。 [ERC-1155](https://blog.enjincoin.io/erc-1155-the-crypto-item-standard-ac9cf1c5a226) 标准涵盖半同质化代币,这种代币在游戏领域特别有用。 最近提出的 [EIP-2309](https://eips.ethereum.org/EIPS/eip-2309) 标准使得铸造非同质化代币更高效。 这个标准允许您在一次交易中随意铸币!
+大多数非同质化代币都使用一个统一标准创建,即 [ERC-721](/developers/docs/standards/tokens/erc-721/)。 然而,你可能也想了解其他标准。 [ERC-1155](https://blog.enjincoin.io/erc-1155-the-crypto-item-standard-ac9cf1c5a226) 标准涵盖半同质化代币,这种代币在游戏领域特别有用。 最近提出的 [EIP-2309](https://eips.ethereum.org/EIPS/eip-2309) 标准使得铸造非同质化代币更高效。 这个标准允许你在一次交易中随意铸币!
## 延伸阅读 {#further-reading}
diff --git a/src/content/translations/zh/security/index.md b/src/content/translations/zh/security/index.md
index 3905b253a53..a1bc0eb715c 100644
--- a/src/content/translations/zh/security/index.md
+++ b/src/content/translations/zh/security/index.md
@@ -111,7 +111,7 @@ Chrome 扩展程序或 Firefox 插件等浏览器扩展程序可以增强浏览
人们在网络中被骗的主要原因之一通常是缺乏了解。 例如,如果您不了解以太坊网络是去中心化的,不为任何人所拥有,您就很容易上当受骗。有人假装成客户服务人员,承诺用您的私钥找回您丢失的以太币。 了解以太坊如何运作是一项值得的投资。
- 以太坊简介
+ 什么是以太坊?
@@ -212,11 +212,11 @@ Chrome 扩展程序或 Firefox 插件等浏览器扩展程序可以增强浏览
-### Eth2 代币骗局 {#eth2-token-scam}
+### “以太坊 2”代币骗局 {#eth2-token-scam}
-在[合并](/upgrades/merge/)的准备阶段,骗子利用“Eth2”这一术语的混淆,试图让用户将他们的 ETH 兑换成“ETH2”代币。 实际上合并并没有产生任何“ETH2”,或者任何其它合法代币。 你在合并之前拥有的 ETH 与现在是同一个 ETH。 **从工作量证明切换到权益证明,无需采取任何与你的 ETH 相关的操作**。
+在[合并](/upgrades/merge/)的准备阶段,骗子利用“以太坊 2”这一术语的混淆,试图让用户将他们的以太币兑换成“以太坊 2”代币。 实际上合并并没有产生任何“以太坊 2”代币,或者任何其它合法代币。 你在合并之前拥有的以太币与现在是同一个以太币。 **从工作量证明切换到权益证明,无需采取任何与你的以太币相关的操作**。
-骗子可能会以“技术支持”的面貌出现,告诉你如果存入 ETH,你将收到“ETH2”。 实际上,并没有[官方的以太坊技术支持](/community/support/),也没有新代币。 永远不要与陌生人分享你的钱包助记词。
+骗子可能会以“技术支持”的面貌出现,告诉你如果存入以太币,你将收到“ETH2”代币。 实际上,并没有[官方的以太坊技术支持](/community/support/),也没有新代币。 永远不要与陌生人分享你的钱包助记词。
_注意:有一些衍生的代币/票据可能代表了被质押的以太币(比如:Rocket Pool 的 rETH,Lido 的 stETH,Coinbase 的 ETH2),但这些都不需要“迁移过去”。_
@@ -224,7 +224,7 @@ _注意:有一些衍生的代币/票据可能代表了被质押的以太币(
网络钓鱼诈骗是另一种越来越常见的诈骗手段,他们试图窃取你钱包中的资金。
-一些网络钓鱼电子邮件要求用户点击链接,将其重新定向到仿冒网站,并要求他们输入助记词、重置密码或发送 ETH。 还有一些可能会让你在不知情的情况下安装恶意软件来感染你的电脑,并让骗子访问你的电脑文件。
+一些网络钓鱼电子邮件要求用户点击链接,将其重新定向到仿冒网站,并要求他们输入助记词、重置密码或发送以太币。 还有一些可能会让你在不知情的情况下安装恶意软件来感染你的电脑,并让骗子访问你的电脑文件。
如果你收到一封来历不明的电子邮件,请记住:
@@ -246,7 +246,7 @@ _注意:有一些衍生的代币/票据可能代表了被质押的以太币(
### 加密货币矿池骗局 {#mining-pool-scams}
-自 2022 年 9 月起,在以太坊上挖矿已不再可能。 但是,矿池骗局仍然存在。 在矿池骗局中会有人主动联系你,并声称你可以通过加入以太坊矿池获得丰厚回报。 骗子会提出要求,并一直与你保持联系。 基本上,骗子会试图让你相信,当你加入一个以太坊矿池时,您的加密货币将被用来创建 ETH,您将以 ETH 的形式获得红利。 最终你会发现你的加密货币只能获得微薄的回报。 这只是为了引诱你投入更多的资金。 最终,你的所有资金将被发送到一个未知地址,骗子要么消失,要么在某些情况下会继续保持联系,就像最近发生的一个案例一样。
+自 2022 年 9 月起,在以太坊上挖矿已不再可能。 但是,矿池骗局仍然存在。 在矿池骗局中会有人主动联系你,并声称你可以通过加入以太坊矿池获得丰厚回报。 骗子会提出要求,并一直与你保持联系。 基本上,骗子会试图让你相信,当你加入一个以太坊矿池时,你的加密货币将被用来创建以太币,你将以以太币的形式获得红利。 最终你会发现你的加密货币只能获得微薄的回报。 这只是为了引诱你投入更多的资金。 最终,你的所有资金将被发送到一个未知地址,骗子要么消失,要么在某些情况下会继续保持联系,就像最近发生的一个案例一样。
总之,要提防那些在社交媒体上与你联系并要求你加入矿池的人。 一旦你失去你的加密货币,它就永远回不来了。
diff --git a/src/content/translations/zh/smart-contracts/index.md b/src/content/translations/zh/smart-contracts/index.md
index 30eac8db46e..b35eb743f0f 100644
--- a/src/content/translations/zh/smart-contracts/index.md
+++ b/src/content/translations/zh/smart-contracts/index.md
@@ -6,7 +6,7 @@ lang: zh
# 智能合约简介 {#introduction-to-smart-contracts}
-智能合约是[以太坊应用程序](/dapps/)的基石。 它们是存储在区块链上的计算机程序,让我们能够将传统合约转换成对应的数字化合约。 智能合约完全符合逻辑 — 遵循 IFTTT 逻辑结构。 这意味着它们完全按照程序设定执行并且不能更改。
+智能合约是[以太坊应用程序](/dapps/)的基石。 它们是存储在区块链上的计算机程序,让我们能够将传统合约转换成数字化合约。 智能合约完全符合逻辑 — 遵循 IFTTT (if this then that)逻辑结构。 这意味着它们完全按照程序设定执行并且不能更改。
Nick Szabo 创造了“智能合约”这一术语。 1994 年,他撰写了[概念简介](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart.contracts.html),1996 年又撰写了[探索智能合约的功能](https://www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/LOTwinterschool2006/szabo.best.vwh.net/smart_contracts_2.html)。
diff --git a/src/content/translations/zh/social-networks/index.md b/src/content/translations/zh/social-networks/index.md
index ab458e1c655..542f11e6856 100644
--- a/src/content/translations/zh/social-networks/index.md
+++ b/src/content/translations/zh/social-networks/index.md
@@ -37,11 +37,11 @@ summaryPoint3: 代币和非同质化代币创造了一种将内容货币化的
2. 去中心化社交网络建立在开源理念的基础上,并使应用程序的源代码可供公众查看。 通过去除传统社交媒体中常见的不透明算法,基于区块链的社交网络可以使用户和平台创建者的利益保持一致。
-3. 去中心化社交网络取消了“中间人”。 内容创建者对其内容拥有直接所有权,他们直接与关注者、粉丝、买家和其他各方互动,双方之间仅有智能合约。
+3. 去中心化社交网络淘汰了“中间人”。 内容创建者对其内容拥有直接所有权,他们直接与关注者、粉丝、买家和其他各方互动,双方之间仅有智能合约。
4. 由于去中心化应用程序在由全球节点对等网络提供支持的以太坊网络上运行,去中心化社交网络受服务器停机和中断的影响较小。
-5. 去中心化社交平台通过非同质化代币 (NFT)、应用内加密支付等为内容创建人提供改进的货币化框架。
+5. 去中心化社交平台通过非同质化代币 (NFT)、应用程序内加密支付等为内容创建人提供改进的货币化框架。
6. 去中心化的社交网络为用户提供了高度的隐私和匿名性。 例如,个人可以使用以太坊域名服务的配置文件或钱包登录基于以太坊的社交网络,而无需共享可识别个人信息 (PII),例如姓名、电子邮件地址等。
@@ -75,11 +75,11 @@ summaryPoint3: 代币和非同质化代币创造了一种将内容货币化的
### Reddit {#reddit}
-Reddit 有[回赠式社区积分](https://cointelegraph.com/news/reddit-to-reportedly-tokenize-karma-points-and-onboard-500m-new-users),这是 [ERC-20 代币](/developers/docs/standards/tokens/erc-20/),用户可以通过发布优质内容和为在线社区 (subreddit) 做出贡献来赚取。 你可以在 subreddit 中兑换这些代币以[获得独有的特权和福利](https://www.reddit.com/community-points/)。 对于这个项目,Reddit 正在与 Arbitrum 合作,后者是旨在扩展以太坊交易的[第 2 层](/layer-2/)汇总。
+Reddit 提供[回赠式社区积分](https://cointelegraph.com/news/reddit-to-reportedly-tokenize-karma-points-and-onboard-500m-new-users),即 [ERC-20 代币](/developers/docs/standards/tokens/erc-20/),用户可以通过发布优质内容和为在线社区 (subreddit) 做出贡献来赚取。 你可以在 subreddit 中兑换这些代币以[获得独有的特权和福利](https://www.reddit.com/community-points/)。 对于这个项目,Reddit 正在与 Arbitrum 合作,后者是旨在扩展以太坊交易的[第 2 层](/layer-2/)汇总。
-该程序已经上线,r/加密货币 subreddit [运行其名为“Moons”的社区积分版本](https://www.reddit.com/r/CryptoCurrency/wiki/moons_wiki)。 根据官方描述,Moons“奖励发布者、评论者和版主对 subreddit 的贡献。” 因为这些代币在区块链上进行交易(代币会直接进入用户钱包),代币与 Reddit 无关,因此其他人无法获取用户的代币。
+该程序已经上线,r/CryptoCurrency subreddit [运行其名为“Moons”的社区积分版本](https://www.reddit.com/r/CryptoCurrency/wiki/moons_wiki)。 根据官方描述,Moons“奖励发布者、评论者和版主对 subreddit 的贡献。” 因为这些代币在区块链上进行交易(代币会直接进入用户钱包),代币与 Reddit 无关,因此其他人无法获取用户的代币。
-在 Rinkeby 测试网上结束测试阶段后,Reddit 社区积分现在在 [Arbitrum Nova](https://nova.arbitrum.io/) 上,这是一个结合了 [validium](/developers/docs/scaling/validium/) 和 [乐观卷叠](/developers/docs/scaling/optimistic-rollups/)属性的区块链。 除了使用社区积分来解锁特殊功能外,用户还可以在交易所用它们换取法币。 此外,用户拥有的社区积分决定了他们对社区内决策过程的影响。
+在 Rinkeby 测试网上结束测试阶段后,Reddit 社区积分现在在 [Arbitrum Nova](https://nova.arbitrum.io/) 上,这是一条结合了 [validium](/developers/docs/scaling/validium/) 和 [乐观卷叠](/developers/docs/scaling/optimistic-rollups/)属性的区块链。 除了使用社区积分来解锁特殊功能外,用户还可以在交易所用它们换取法币。 此外,用户拥有的社区积分决定了他们对社区内决策过程的影响。
### Twitter {#twitter}
diff --git a/src/content/translations/zh/staking/pools/index.md b/src/content/translations/zh/staking/pools/index.md
index 2dfc9892d32..56b0c0acb22 100644
--- a/src/content/translations/zh/staking/pools/index.md
+++ b/src/content/translations/zh/staking/pools/index.md
@@ -57,7 +57,7 @@ summaryPoints:
-想要推荐其他未提到的质押工具吗? 可以查看我们的[产品清单政策](/contributing/adding-staking-products/),思考你想要推荐的工具是否合适,合适的话,请提交以供审核。
+想要推荐其他未提到的质押工具吗? 可以查看我们的[产品清单政策](/contributing/adding-staking-products/),思考你想要推荐的内容是否合适,合适的话,请提交以供审核。
## 常见问题 {#faq}
@@ -67,9 +67,9 @@ summaryPoints:
-目前,无法从以太坊验证者中提取资金,这限制了你实际兑换流动池代币以获得锁定在共识层中的 ETH 奖励的能力。
+目前,无法从以太坊验证者中提取资金,这限制了你实际上用流动性代币兑换锁定在共识层中的以太币奖励的能力。
-或者,使用 ERC-20 流动池代币的资金池允许用户在公开市场上交易该代币,允许你出售你的质押店铺位置,有效地“取款”,而无需实际从质押合约中移除 ETH。
+或者,使用 ERC-20 流动性代币的资金池允许用户在公开市场上交易该代币,允许你出售你的质押店铺位置,有效地“取款”,而无需实际从质押合约中移除以太币。
@@ -77,7 +77,7 @@ summaryPoints:
与中心化交易所不同,许多其他联合质押方案使用智能合约和/或流动性代币,通常是可以保存在你自己的钱包中并像其他任何代币一样买卖的 ERC-20 代币。 这样你就可以控制自己的代币,从而获得了一定的自主权和安全性,但仍旧你还是无法直接控制在后台代表你进行验证的验证者客户端。
-涉及到支持它们的节点时,一些联合质押方案比其他方案更加分散。 为了促进网络健康和去中心化,我们始终鼓励质押人选择一种无需许可即可实现节点运营商去中心化的联合服务。
+涉及到支持它们的节点时,一些联合质押方案比其他方案更加分散。 为了加强网络的健康和去中心化程度,我们始终鼓励质押人选择一种无需许可即可实现节点运营商去中心化的联合服务。
## 延伸阅读 {#further-reading}
diff --git a/src/content/translations/zh/staking/saas/index.md b/src/content/translations/zh/staking/saas/index.md
index efe0bffe9ba..c0257636247 100644
--- a/src/content/translations/zh/staking/saas/index.md
+++ b/src/content/translations/zh/staking/saas/index.md
@@ -60,7 +60,7 @@ summaryPoints:
-想要推荐其他未提到的质押即服务提供商吗? 可以查看我们的[产品清单政策](/contributing/adding-staking-products/),思考你想要推荐的提供商是否合适,合适的话,请提交以供审核。
+想要推荐其他未提到的质押即服务提供商吗? 可以查看我们的[产品清单政策](/contributing/adding-staking-products/),思考你想要推荐的内容是否合适,合适的话,请提交以供审核。
## 常见问题 {#faq}
diff --git a/src/content/translations/zh/staking/solo/index.md b/src/content/translations/zh/staking/solo/index.md
index e112790e084..3e1785e7714 100644
--- a/src/content/translations/zh/staking/solo/index.md
+++ b/src/content/translations/zh/staking/solo/index.md
@@ -114,7 +114,7 @@ Staking Launchpad 是一个开源应用程序,可帮助你成为质押人。
-想要推荐其他未提到的质押工具吗? 可以查看我们的[产品清单政策](/contributing/adding-staking-products/),思考你想要推荐的工具是否合适,合适的话,请提交以供审核。
+想要推荐其他未提到的质押工具吗? 可以查看我们的[产品清单政策](/contributing/adding-staking-products/),思考你想要推荐的内容是否合适,合适的话,请提交以供审核。
## 探索单独质押指南 {#staking-guides}
diff --git a/src/content/translations/zh/upgrades/beacon-chain/index.md b/src/content/translations/zh/upgrades/beacon-chain/index.md
index 627a8b1a7c2..60b5b62fbfb 100644
--- a/src/content/translations/zh/upgrades/beacon-chain/index.md
+++ b/src/content/translations/zh/upgrades/beacon-chain/index.md
@@ -4,14 +4,13 @@ description: 了解信标链 - 引入权益证明的以太坊升级。
lang: zh
template: upgrade
image: ../../../../../assets/upgrades/core.png
-summaryPoint1: 信标链对我们今天使用的以太坊没有造成任何变化。
-summaryPoint2: 信标链以太坊生态系统引入了权益证明。
-summaryPoint3: 信标链于 2022 年与原有的以太坊工作量证明链合并。
-summaryPoint4: 信标链引入的共识逻辑和区块广播协议现在保护着以太坊。
+summaryPoint1: 信标链为以太坊生态系统引入了权益证明。
+summaryPoint2: 信标链于 2022 年 9 月与原有的以太坊工作量证明链合并。
+summaryPoint3: 信标链引入的共识逻辑和区块广播协议目前保护着以太坊。
---
- 信标链于 2020 年 12 月 1 日上线。 在当时,它是独立于以太坊主网的一条单独链。 信标链运行权益证明,但不处理任何交易。 2022 年,信标链与原有的以太坊主网合并,取代了以太坊之前的共识逻辑和区块传播方式。 合并后,就只有一条以太坊链。
+ 信标链于 2020 年 12 月 1 日上线,并且在 2022 年 9 月 15 日完成合并升级,将权益证明正式确定为太坊的共识机制。
## 什么是信标链? {#what-is-the-beacon-chain}
@@ -72,4 +71,5 @@ summaryPoint4: 信标链引入的共识逻辑和区块广播协议现在保护
## 延伸阅读
-[有关以太坊未来升级的更多信息](/upgrades/vision) [更多关于权益证明的信息](/develoeprs/docs/consensus-mechanisms/pos)
+- [有关以太坊未来升级的更多信息](/upgrades/vision)
+- [有关权益证明的更多信息](/developers/docs/consensus-mechanisms/pos)
diff --git a/src/content/translations/zh/upgrades/merge/index.md b/src/content/translations/zh/upgrades/merge/index.md
index 283d8672952..6ad1dee2b8b 100644
--- a/src/content/translations/zh/upgrades/merge/index.md
+++ b/src/content/translations/zh/upgrades/merge/index.md
@@ -5,14 +5,18 @@ lang: zh
template: upgrade
image: ../../../../../assets/upgrades/merge.png
summaryPoint1: 以太坊主网采用权益证明机制,但情况并非一直如此。
-summaryPoint2: 从原有的工作量证明过渡到权益证明称为合并。
-summaryPoint3: 合并是指原有的以太坊主网成为权益证明区块链即信标链的一部分,现已成为一条链。
+summaryPoint2: 从原有的工作量证明机制过渡到权益证明机制的升级称为合并。
+summaryPoint3: 合并是指原有的以太坊主网与单独的权益证明区块链即信标链合并,现已成为一条链。
summaryPoint4: 合并将使以太坊的能源消耗减少大约 99.95%。
---
+
+ 合并于 2022 年 9 月 15 日执行, 它完成了以太坊向权益证明共识的过渡,以太坊正式弃用了工作量证明并将能源消耗减少了约 99.95%。
+
+
## 什么是合并? {#what-is-the-merge}
-合并是指以太坊的原有执行层(从[创世块](/history/#frontier)开始就一直存在的主网)加入其新的权益证明共识层,即信标链。 它消除了对能源密集型挖矿的需求,而是使用质押以太币来保证网络的安全。 这是实现以太坊愿景 — 可扩展性、安全性和可持续性更强 — 这一过程中真正激动人心的一步。
+合并是指以太坊的原有执行层(从[创世块](/history/#frontier)开始就一直存在的主网)加入其新的权益证明共识层,即信标链。 合并摒弃了消耗大量能源的挖矿,而是通过质押以太币来保护网络的安全。 这是实现以太坊愿景 — 可扩展性、安全性和可持续性更强 — 这一过程中真正激动人心的一步。
@@ -42,7 +46,7 @@ summaryPoint4: 合并将使以太坊的能源消耗减少大约 99.95%。
*再次提醒:*作为以太币或以太坊上任何其他数字资产的用户或持有者,以及非节点运营的质押人,**不需要在合并之前对你的资金或钱包做任何事情以加入合并。**以太币还是以太币。 没有像“旧以太币”/“新以太币”或“以太坊 1”/“以太坊 2”这样说法,钱包在合并前后的工作方式一样 — 告诉你其他说法人很可能是骗子。
-虽然权益证明替代了工作量证明,但是以太坊自创世块以来的全部历史记录都完整保留且没有改变。 合并前你钱包里的任何资金在合并后仍可使用。 **你不需要采取任何行动来升级。**
+虽然权益证明替代了工作量证明,但是以太坊自创世块以来的全部历史记录都完整保留且没有改变。 合并前你钱包里的所有资金在合并后仍可使用。 **你不需要采取任何行动来升级。**
[有关以太坊安全的更多内容](/security/#eth2-token-scam)
@@ -59,7 +63,7 @@ id="staking-node-operators">
2. 使用共享 JWT 密钥对执行层和共识层客户端进行身份验证,以便它们能够安全地通信。
3. 设置“费用接收人”地址,以接收你赚取的交易费的小费/矿工可提取价值。
-如果没有完成上述前两项,在合并之后你的节点会被视为“离线”,直到两层都同步并通过身份验证。
+如果没有完成上述操作的前两项,会导致你的节点被视为“离线”,直到这两层都完成同步和身份验证。
不设置“费用接收人”将仍然允许验证者像往常一样运行,但你将无法获得交易费小费和矿工可提取价值,这些你原本可以在你的验证者提出的区块中赢得。
@@ -95,7 +99,7 @@ id="developers">
- 链上随机性的来源
- _安全头_ 和 _最终区块_ 的概念
-更多信息,请查看 Tim Beiko 的这篇博客:[合并如何影响以太坊的应用层](https://blog.ethereum.org/2021/11/29/how-the-merge-impacts-app-layer)。
+更多信息,请查看 Tim Beiko 的这篇博客:【合并如何影响以太坊的应用层】(https://blog.ethereum.org/2021/11/29/how-the-merge-impacts-app-layer/)。
## 合并和能源消耗 {#merge-and-energy}
@@ -151,7 +155,7 @@ contentPreview="False. Staking withdrawals are not yet enabled with The Merge. T
这似乎与上面提到的在上海升级之前不启用提款功能的做法冲突,但验证者将立即在区块提出过程中获得费用奖励/矿工可提取价值。
@@ -161,7 +165,7 @@ contentPreview="False. Fee tips/MEV are credited to a non-staking account contro
上海升级启用提款功能后,会激励所有验证者将其质押余额提取到超过 32 个以太币即可,因为这些资金不会增加收益并且不提取还会被锁定。 取决于年化利率(由质押的以太币总量决定),激励可能会导致验证者退出,以收回他们的全部余额,或者验证者也可能会把他们的奖励进行再质押,以赚取更多收益。
@@ -176,14 +180,14 @@ contentPreview="False. Validator exits are rate limited for security reasons.">
为了减少混乱,社区更新了这些条款:
-- “以太坊 1”现在是执行层,它处理交易和执行。
-- “以太坊 2”现在是共识层,它处理权益证明共识。
+- “以太坊 1”现在是处理交易和执行的“执行层”。
+- “以太坊 2”现在是处理权益证明共识的“共识层”。
这些术语的更新仅会改变命名约定;不会改变以太坊的目标及路线图。
[了解有关“以太坊 2”重命名的更多信息](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/)
-## 升级之间的关系 {#relationship-between-upgrades}
+## 升级间的关系 {#relationship-between-upgrades}
以太坊所有升级都存在一些关联。 因此,让我们回顾一下合并与其他升级的关系。
diff --git a/src/content/translations/zh/upgrades/sharding/index.md b/src/content/translations/zh/upgrades/sharding/index.md
index a4104853bff..734c9c657b3 100644
--- a/src/content/translations/zh/upgrades/sharding/index.md
+++ b/src/content/translations/zh/upgrades/sharding/index.md
@@ -4,10 +4,10 @@ description: 了解分片 - 分解和分配必需的数据负载,增强以太
lang: zh
template: upgrade
image: ../../../../../assets/upgrades/newrings.png
-summaryPoint1: 分片是一个多阶段升级,以提高以太坊的可扩容性和容量。
+summaryPoint1: 分片是一个多阶段升级,旨在提升以太坊的可扩展性和容量。
summaryPoint2: 分片实现了数据存储要求的安全分配,使卷叠更经济实惠,让节点更易于操作。
-summaryPoint3: 它们使第二层解决方案能够提供更低的交易费,同时利用以太坊的安全性。
-summaryPoint4: 在以太坊过渡到权益证明后,这种升级日益成为焦点。
+summaryPoint3: 分片使二层网络解决方案能够提供交低的交易费,同时可以利用以太坊的安全性。
+summaryPoint4: 在以太坊过渡到权益证明后,该升级日益成为焦点。
---
@@ -30,7 +30,7 @@ summaryPoint4: 在以太坊过渡到权益证明后,这种升级日益成为
将最终让您在个人笔记本电脑或手机上运行以太坊。 因此,更多的人应该能够在中参与或运行[客户端](/developers/docs/nodes-and-clients/)。 这将提高安全性,因为网络越分散,攻击面越小。
-由于硬件需求较低,区块分片将使您更容易单独运行 [客户端](/developers/docs/nodes-and-clients/) ,而根本不依赖任何中间服务。 如果您可以,请考虑运行多个客户端。 这可以通过进一步减少故障点来帮助网络健康。
+由于硬件需求较低,区块分片将使您更容易单独运行 [客户端](/developers/docs/nodes-and-clients/),而根本不依赖任何中间服务。 如果您可以,请考虑运行多个客户端。 这可以通过进一步减少故障点来帮助网络健康。
@@ -42,7 +42,7 @@ summaryPoint4: 在以太坊过渡到权益证明后,这种升级日益成为
注意:随着更高效扩容路径的开发,分片计划也在不断发展。 “Danksharding”是一种新的分片方法,它不使用分片“链”的概念,而是使用分片“blob”来分割数据,同时使用“数据可用性采样”来确认所有数据是否可用。 这个计划改变解决了原来的问题。
- 以下详细信息可能与最新的开发计划不符。在我们更新内容时,请参阅以太坊漫游指南,了解太坊计路线图划详解。
+ 以下详细信息可能与最新的开发计划不符。在我们更新内容时,请参阅以太坊漫游指南,了解太坊计路线图划详解。
当第一个分片链发布时,它们只会向网络提供额外的数据。 他们不会处理交易或智能合约。 但当它们与卷叠相结合时,仍然会对每秒交易数提供令人难以置信的改进。
@@ -83,7 +83,7 @@ Vitalik Buterin 在接受 Bankless 播客采访时提出了 3 个值得讨论的
## 升级间的关系 {#relationship-between-upgrades}
-以太坊所有升级都是有点关联的。 所以让我们回顾一下分批链如何与其他升级相关联。
+以太坊所有升级都存在一些关联。 所以让我们回顾一下分批链如何与其他升级相关联。
### 分片和以太坊区块链 {#shards-and-blockchain}
diff --git a/src/content/translations/zh/web3/index.md b/src/content/translations/zh/web3/index.md
index 1771b1cff6b..3171c12f690 100644
--- a/src/content/translations/zh/web3/index.md
+++ b/src/content/translations/zh/web3/index.md
@@ -87,7 +87,7 @@ Web 2.0 需要内容创作者信任平台不会更改规则,但抗审查则是
然而,许多 Web3 社区都被定义为去中心化自治组织。 这些社区都通过代码实现了不同程度的去中心化和自动化。 目前,我们仍在探索去中心化自治组织是什么以及它们在未来会如何发展。
- 详细了解去中心化自治组织
+ 了解更多有关去中心化自治组织的信息
关于去中心化自治组织的更多信息
@@ -108,7 +108,7 @@ Web3 允许你使用以太坊地址和以太坊域名服务配置文件控制你
Web2 的支付基础设施依赖于银行和第三方支付机构,这就把没有银行账户或碰巧生活在某些“不好”国家/地区的人排除在外。 Web3 使用诸如[以太币](/eth/)之类的代币直接在浏览器中汇款,不需要受信任的第三方。
- 以太币的更多信息
+ 有关以太币的更多信息
## Web3 的局限性 {#web3-limitations}
diff --git a/src/data/externalTutorials.json b/src/data/externalTutorials.json
index f1c8d1d1d91..987ce9adf5c 100644
--- a/src/data/externalTutorials.json
+++ b/src/data/externalTutorials.json
@@ -12,7 +12,6 @@
"smart contracts",
"openzeppelin",
"alchemy",
- "blockchain",
"video",
"NFT",
"ERC-721",
@@ -38,13 +37,11 @@
"smart contracts",
"react",
"nextjs",
- "blockchain",
"video",
"IPFS",
"oracles",
"NFT",
"ERC-20",
- "upgrades",
"javascript",
"mocking",
"testing",
@@ -52,7 +49,6 @@
"chainlink",
"openzeppelin",
"slither",
- "echidna",
"filecoin",
"moralis",
"alchemy",
@@ -78,13 +74,11 @@
"web3.py",
"smart contracts",
"react",
- "blockchain",
"video",
"IPFS",
"oracles",
"NFT",
"ERC-20",
- "upgrades",
"python",
"mocking",
"testing",
@@ -121,9 +115,7 @@
"hardhat",
"metamask",
"nextjs",
- "reactjs",
"moralis",
- "web3-react",
"ethersjs",
"video"
],
@@ -138,15 +130,7 @@
"description": "Using Compound and Openzeppelin as a basis, we build a 100% on-chain DAO using an ERC20 governance token for votes.",
"author": "Patrick Collins",
"authorGithub": "https://github.com/PatrickAlphaC",
- "tags": [
- "solidity",
- "typescript",
- "hardhat",
- "compound",
- "dao",
- "governance",
- "video"
- ],
+ "tags": ["solidity", "typescript", "hardhat", "compound", "dao", "video"],
"skillLevel": "beginner",
"timeToRead": "86",
"lang": "en",
@@ -158,14 +142,7 @@
"description": "Using Compound and Openzeppelin as a basis, we build a 100% on-chain DAO using an ERC20 governance token for votes.",
"author": "Patrick Collins",
"authorGithub": "https://github.com/PatrickAlphaC",
- "tags": [
- "solidity",
- "typescript",
- "hardhat",
- "compound",
- "dao",
- "governance"
- ],
+ "tags": ["solidity", "typescript", "hardhat", "compound", "dao"],
"skillLevel": "beginner",
"timeToRead": "6",
"lang": "en",
@@ -183,10 +160,8 @@
"hardhat",
"metamask",
"nextjs",
- "reactjs",
"moralis",
"web3modal",
- "web3-react",
"ethersjs"
],
"skillLevel": "beginner",
@@ -200,7 +175,7 @@
"description": "We explore the steps one needs to take to enter the world as a blockchain developer and engineer. We talk about how to get there.",
"author": "Patrick Collins",
"authorGithub": "https://github.com/PatrickAlphaC",
- "tags": ["career", "solidity"],
+ "tags": ["solidity"],
"skillLevel": "beginner",
"timeToRead": "12",
"lang": "en",
@@ -232,7 +207,7 @@
"description": "Learn how to make multiple API calls to a blockchain node with a single API call to a multicall contract.",
"author": "Patrick Collins",
"authorGithub": "https://github.com/PatrickAlphaC",
- "tags": ["brownie", "web3.py", "video", "python", "multicall"],
+ "tags": ["brownie", "web3.py", "video", "python"],
"skillLevel": "intermediate",
"timeToRead": "15",
"lang": "en",
@@ -310,7 +285,6 @@
"solidity",
"web3.py",
"brownie",
- "upgrades",
"smart contracts",
"python",
"openzeppelin",
@@ -332,7 +306,6 @@
"solidity",
"web3.py",
"brownie",
- "upgrades",
"smart contracts",
"python",
"openzeppelin",
@@ -371,7 +344,7 @@
"description": "Hardhat's beginners guide to Ethereum contracts and dapp development",
"author": "Hardhat",
"authorGithub": "https://https://hardhat.org/",
- "tags": ["hardhat", "solidity", "testing", "smart-contracts"],
+ "tags": ["hardhat", "solidity", "testing", "smart contracts"],
"skillLevel": "beginner",
"lang": "en",
"publishDate": "06/22/2021"
@@ -382,7 +355,7 @@
"description": "Building Full Stack dapps with React, Ethers.js, Solidity, and Hardhat",
"author": "Nader Dabit",
"authorGithub": "https://github.com/dabit3",
- "tags": ["solidity", "hardhat", "ethers.js", "smart-contracts", "react"],
+ "tags": ["solidity", "hardhat", "ethers.js", "smart contracts", "react"],
"skillLevel": "beginner",
"timeToRead": "18",
"lang": "en",
@@ -394,7 +367,7 @@
"description": "Build, mint, and send around your own ERC721!",
"author": "Austin Griffith",
"authorGithub": "https://github.com/austintgriffith",
- "tags": ["solidity", "smart-contracts", "react"],
+ "tags": ["solidity", "smart contracts", "react"],
"skillLevel": "beginner",
"lang": "en",
"publishDate": "08/03/2021"
@@ -405,7 +378,7 @@
"description": "Build, test and ship your own decentralized staking app!",
"author": "Austin Griffith",
"authorGithub": "https://github.com/austintgriffith",
- "tags": ["solidity", "smart-contracts", "react", "testing"],
+ "tags": ["solidity", "smart contracts", "react", "testing"],
"skillLevel": "beginner",
"lang": "en",
"publishDate": "08/15/2021"
diff --git a/src/intl/en/page-staking.json b/src/intl/en/page-staking.json
index 9fac1442227..a5b0804e98c 100644
--- a/src/intl/en/page-staking.json
+++ b/src/intl/en/page-staking.json
@@ -171,7 +171,11 @@
"page-staking-faq-3-answer-p2": "There are derivative tokens/tickers that may represent staked ETH (ie. rETH from Rocket Pool, stETH from Lido, ETH2 from Coinbase). Learn more about staking pools",
"page-staking-faq-4-question": "Is staking already live?",
"page-staking-faq-4-answer-p1": "Yes. Staking has been live since December 1, 2020",
- "page-staking-faq-4-answer-p2": "This means that staking is currently live for users to deposit their ETH, run a validator client, and start earning rewards. After the Shanghai update, stakers will then be able to withdraw rewards and funds from their validator balance.",
+ "page-staking-faq-4-answer-p2": "This means that staking is currently live for users to deposit their ETH, run a validator client, and start earning rewards.",
+ "page-staking-faq-4-answer-p3": "The Merge also took place on September 15, 2022, and Ethereum has been fully secured by staked ETH ever since.",
+ "page-staking-faq-5-question": "When can I withdraw my staked ETH?",
+ "page-staking-faq-5-answer-p1": "Withdraw functionality is expected to be included in the next network upgrade, named Shanghai. This network upgrade is estimated for the first half of 2023, subject to change until completed. After the Shanghai update, stakers will then be able to withdraw their rewards and/or principle deposit from their validator balance if they choose.",
+ "page-staking-faq-5-answer-p2": "In the meantime, stakers will still earn rewards in the form of fees and MEV when proposing blocks, which are made available immediately via the set fee recipient address.",
"page-staking-further-reading-1-link": "Why Proof of Stake (Nov 2020)",
"page-staking-further-reading-author-vitalik-buterin": "Vitalik Buterin",
"page-staking-further-reading-2-link": "Serenity Design Rationale",
@@ -184,6 +188,7 @@
"page-staking-further-reading-7-link": "Beaconcha.in Knowledge Base",
"page-staking-further-reading-8-link": "Beaconcha.in Community-Contributed Educational Materials",
"page-staking-further-reading-9-link": "Ethereum Staking Launchpad FAQ",
+ "page-staking-further-reading-10-link": "EthStaker knowledge base",
"page-staking-toc-how-to-stake-your-eth": "How to stake your ETH",
"page-staking-toc-comparison-of-options": "Comparison of staking options",
"page-staking-toc-faq": "FAQ",
diff --git a/src/intl/es/page-developers-learning-tools.json b/src/intl/es/page-developers-learning-tools.json
index af30aab9b20..7d73757ffd6 100644
--- a/src/intl/es/page-developers-learning-tools.json
+++ b/src/intl/es/page-developers-learning-tools.json
@@ -35,7 +35,7 @@
"page-learning-tools-remix-logo-alt": "Logo de Remix",
"page-learning-tools-sandbox": "Procesos aislados de código",
"page-learning-tools-sandbox-desc": "Estos procesos aislados le darán un espacio para experimentar con contratos inteligentes escritos y entender Ethereum.",
- "page-learning-tools-speed-run-ethereum-description": "Speed Run Ethereum es una serie de retos para evaluar sus conocimientos sobre Solidity usando Scaffold-ETH",
+ "page-learning-tools-speed-run-ethereum-description": "Speed Run Ethereum es un conjunto de desafíos para probar tu conocimiento de Solidity usando Scaffold-ETH",
"page-learning-tools-speed-run-ethereum-logo-alt": "Logo de Speed Run Ethereum",
"page-learning-tools-studio-description": "Un entorno de desarrollo integrado (IDE) basado en la Web donde puede encontrar tutoriales para crear y probar contratos inteligentes, y construir para ellos una interfaz gráfica (front-end).",
"page-learning-tools-vyperfun-description": "Conozca Vyper mediante la creación de su propio juego de Pokémon.",
diff --git a/src/intl/es/page-layer-2.json b/src/intl/es/page-layer-2.json
index 02b19acb0e2..b54c2182915 100644
--- a/src/intl/es/page-layer-2.json
+++ b/src/intl/es/page-layer-2.json
@@ -14,7 +14,7 @@
"layer-2-statsbox-2": "Comision media de transferencia de ETH a capa 2 (USD)",
"layer-2-statsbox-3": "Cambio de TVL a la capa 2 (30 días)",
"layer-2-what-is-layer-2-title": "¿Qué es la capa 2?",
- "layer-2-what-is-layer-2-1": "La capa 2 (L2) es un término colectivo utilizado para describir un conjunto específico de soluciones de escalabilidad de Ethereum. Una capa 2 es una cadena de bloques independiente que amplía Ethereum y hereda las garantías de seguridad de Ethereum.",
+ "layer-2-what-is-layer-2-1": "Capa 2 (L2) es un término colectivo para describir un conjunto específico de soluciones de escalado de Ethereum. La capa 2 es una cadena de bloques independiente que amplía Ethereum y hereda las garantías de seguridad de Ethereum.",
"layer-2-what-is-layer-2-2": "Profundicemos a continuación en este concepto un un poco más, y para ello tenemos que explicar qué es la capa 1 (L1).",
"layer-2-what-is-layer-1-title": "¿Qué es la capa 1?",
"layer-2-what-is-layer-1-1": "La capa 1 es la cadena de bloques base. Ethereum y Bitcoin son ambos cadenas de bloque de capa 1 porque son la base subyacente en la que se han construido varias redes de capa 2. Ejemplos de proyectos de capa 2 incluyen agrupaciones en Ethereum y la Lightning Network sobre Bitcoin. Toda la actividad de transacción de usuario en estos proyectos de capa 2 puede establecerse en última instancia en la cadena de bloques de la capa 1.",
diff --git a/src/intl/es/page-run-a-node.json b/src/intl/es/page-run-a-node.json
index f9cc011a3e1..a59fbb5ac81 100644
--- a/src/intl/es/page-run-a-node.json
+++ b/src/intl/es/page-run-a-node.json
@@ -120,7 +120,7 @@
"page-run-a-node-voice-your-choice-title": "Hágase oír",
"page-run-a-node-voice-your-choice-preview": "No ceda el control en caso de bifurcación.",
"page-run-a-node-voice-your-choice-1": "En el caso de una bifurcación de cadena, donde emergen dos cadenas con dos conjuntos diferentes de reglas, ejecutar su propio nodo garantiza su capacidad de elegir qué conjunto de reglas soporta. Depende de usted actualizar a nuevas reglas y apoyar los cambios propuestos, o no.",
- "page-run-a-node-voice-your-choice-2": "Si está apostando ETH, ejecutar su propio nodo le permite elegir su propio cliente, para minimizar el riesgo de «recortar» y reaccionar a las demandas fluctuantes de la red a través del tiempo. Apostar con un tercero pierde su voto sobre qué cliente cree que es la mejor opción.",
+ "page-run-a-node-voice-your-choice-2": "Si está apostando ETH, ejecutar su propio nodo le permite elegir su propio cliente, para minimizar el riesgo de «recortar» y reaccionar a las demandas fluctuantes de la red a través del tiempo. Apostar con un tercero anula su voto sobre qué cliente cree que es la mejor opción.",
"page-run-a-node-what-title": "¿Qué significa «ejecutar un nodo»?",
"page-run-a-node-what-1-subtitle": "Ejecutar software.",
"page-run-a-node-what-1-text": "Conocido como «cliente», este software descarga una copia de la cadena de bloques de Ethereum y verifica la validez de cada bloque, lo mantiene actualizado con nuevos bloques y transacciones, y ayuda a otros a descargar y actualizar sus propias copias.",
@@ -129,9 +129,9 @@
"page-run-a-node-what-3-subtitle": "Mientras está en línea.",
"page-run-a-node-what-3-text": "Ejecutar un nodo Ethereum puede sonar complicado al principio, pero es simplemente el acto de ejecutar continuamente software cliente en un ordenador mientras está conectado a Internet. Mientras esté fuera de línea, su nodo simplemente estará inactivo hasta que vuelva a estar en línea y se ponga al día con los últimos cambios.",
"page-run-a-node-who-title": "¿Quién debería ejecutar un nodo?",
- "page-run-a-node-who-preview": "¡Todos! Los nodos no son solo para mineros y validadores. Cualquiera puede ejecutar un nodo: ni siquiera necesita ETH.",
- "page-run-a-node-who-copy-1": "No necesita apostar ETH o ser un minero para ejecutar un nodo. De hecho, todos los demás nodos en Ethereum son los que responsabilizan a los mineros y validadores.",
- "page-run-a-node-who-copy-2": "Puede que no obtenga las recompensas financieras que los validadores y mineros ganan, pero hay muchos otros beneficios a considerar por ejecutar un nodo para cualquier usuario de Ethereum, incluyendo privacidad, seguridad, reducción de la dependencia de los servidores de terceros, resistencia a la censura y mejora del bienestar y descentralización de la red.",
+ "page-run-a-node-who-preview": "¡Todos! Los nodos no son solo para validadores de prueba de participación. Cualquiera puede ejecutar un nodo, ni siquiera necesita tener ETH.",
+ "page-run-a-node-who-copy-1": "No necesita apostar ETH para ejecutar un nodo. De hecho, cada segundo nodo en Ethereum responsabiliza a los validadores.",
+ "page-run-a-node-who-copy-2": "Puede que no obtenga las recompensas financieras que los validadores ganan, pero ejecutar un nodo para cualquier usuario de Ethereum presenta muchos otros beneficios, como por ejemplo, la privacidad, la seguridad, la reducción de la dependencia de los servidores de terceros, la resistencia a la censura y la mejora del bienestar y de la descentralización de la red.",
"page-run-a-node-who-copy-3": "Tener su propio nodo significa que no necesita confiar en la información sobre el estado de la red proporcionada por un tercero.",
"page-run-a-node-who-copy-bold": "No confíe. Verifique.",
"page-run-a-node-why-title": "¿Por qué ejecutar un nodo?"
diff --git a/src/intl/it/common.json b/src/intl/it/common.json
index 1d6285221e4..15ce5deeade 100644
--- a/src/intl/it/common.json
+++ b/src/intl/it/common.json
@@ -139,6 +139,7 @@
"language-ja": "Giapponese",
"language-ka": "Georgiano",
"language-kk": "Kazako",
+ "language-km": "Khmer",
"language-ko": "Coreano",
"language-lt": "Lituano",
"language-ml": "Malayalam",
@@ -162,6 +163,7 @@
"language-support": "Supporto linguistico",
"language-tr": "Turco",
"language-uk": "Ucraino",
+ "language-uz": "Uzbeco",
"language-vi": "Vietnamita",
"language-zh": "Cinese Semplificato",
"language-zh-tw": "Cinese tradizionale",
diff --git a/src/intl/it/page-contributing-translation-program-acknowledgements.json b/src/intl/it/page-contributing-translation-program-acknowledgements.json
index b5b656bc3ba..d3b4a5e06b8 100644
--- a/src/intl/it/page-contributing-translation-program-acknowledgements.json
+++ b/src/intl/it/page-contributing-translation-program-acknowledgements.json
@@ -9,7 +9,7 @@
"page-contributing-translation-program-acknowledgements-cert-title": "Certificato",
"page-contributing-translation-program-acknowledgements-cert-1": "Vogliamo riconoscere i nostri traduttori e sostenerli nei loro percorsi di carriera. Con questo obiettivo, abbiamo progettato il certificato di traduttore di ethereum.org.",
"page-contributing-translation-program-acknowledgements-cert-2": "Il certificato è destinato a traduttori professionali e futuri che vogliono utilizzarlo come riferimento, dimostrare la loro competenza nella traduzione di contenuti tecnici o semplicemente mostrare la loro dedizione a Ethereum.",
- "page-contributing-translation-program-acknowledgements-cert-3": "Se hai contribuito al Programma di traduzione e almeno 5.000 delle tue parole tradotte sono state approvate, puoi richiedere un certificato di traduttore scrivendoci a translations@ethereum.org. Il tuo messaggio dovrebbe includere il link al tuo account Crowdin e il tuo nome completo (o alias, se preferisci), che aggiungeremo al certificato.",
+ "page-contributing-translation-program-acknowledgements-cert-3": "Se hai contribuito al Programma di Traduzione e almeno 5.000 delle tue parole tradotte sono state approvate, puoi richiedere il tuo certificato da traduttore, contattandoci a translations@ethereum.org. Il tuo messaggio dovrebbe includere il link al tuo profilo di Crowdin e il tuo nome e cognome (o alias, se preferisci), che aggiungeremo al certificato.",
"page-contributing-translation-program-acknowledgements-hero-image-alt": "Immagine hero shiba del Programma di Traduzione",
"page-contributing-translation-program-acknowledgements-meta-description": "Riconoscimento di tutto il grande lavoro che fanno i nostri traduttori",
"page-contributing-translation-program-acknowledgements-meta-title": "Riconoscimento dei Traduttori",
@@ -38,5 +38,5 @@
"page-contributing-translation-program-acknowledgements-how-to-claim-2": "Incolla un link al tuo profilo di Crowdin nel canale # | poaps.",
"page-contributing-translation-program-acknowledgements-how-to-claim-3": "Attendi che un membro del nostro team ti invii un link al tuo POAP.",
"page-contributing-translation-program-acknowledgements-how-to-claim-4": "Richiedi il tuo POAP!",
- "page-contributing-translation-program-acknowledgements-4": "Dovresti utilizzare solo i portafogli di auto-custodia per rivendicare i POAP. Non utilizzare account della piattaforma di scambio o altri account di cui non detieni le chiavi private, poiché questi non ti consentiranno di accedere e gestire i tuoi POAP."
+ "page-contributing-translation-program-acknowledgements-4": "Dovresti utilizzaare solo portafogli di auto-custodia per rivendicare i POAP. Non utilizzare conti di borse o altri conti di cui non detieni le chiavi private, poiché non ti consentiranno di accedere a e gestire i tuoi POAP."
}
diff --git a/src/intl/it/page-dapps.json b/src/intl/it/page-dapps.json
index 613f8480bfa..ab968e08cd2 100644
--- a/src/intl/it/page-dapps.json
+++ b/src/intl/it/page-dapps.json
@@ -54,7 +54,6 @@
"page-dapps-dapp-description-cryptovoxels": "Crea gallerie d'arte, costruisci negozi e compra terreni. Un mondo virtuale Ethereum.",
"page-dapps-dapp-description-dark-forest": "Conquista pianeti in un universo infinito, generato proceduralmente e con specifiche crittografiche.",
"page-dapps-dapp-description-decentraland": "Colleziona, vendi e acquista terre virtuali in un mondo virtuale che puoi esplorare.",
- "page-dapps-dapp-description-dydx": "Apri posizioni corte o con effetto leva fino a 10x. Possibili erogazione e assunzione di prestiti.",
"page-dapps-dapp-description-ens": "Nomi facili da usare per gli indirizzi Ethereum e siti decentralizzati.",
"page-dapps-dapp-description-foundation": "Investi in edizioni uniche di opere d'arte digitali e scambiale con altri acquirenti.",
"page-dapps-dapp-description-gitcoin": "Guadagna criptovalute lavorando con software open-source.",
@@ -73,11 +72,12 @@
"page-dapps-dapp-description-polymarket": "Scommetti sui risultati. Effettua negoziazioni sui mercati dell'informazione.",
"page-dapps-dapp-description-pooltogether": "Una lotteria dove non puoi perdere. Premi ogni settimana.",
"page-dapps-dapp-description-index-coop": "Un fondo indicizzato sulle criptovalute che espone il tuo portafoglio ai migliori token DeFi.",
- "page-dapps-dapp-description-nexus-mutual": "Copertura senza una compagnia di assicurazione. Proteggiti da bug e attacchi relativi agli smart contract.",
+ "page-dapps-dapp-description-nexus-mutual": "Copertura senza l'agenzia d'assicurazione. Proteggiti dai bug e le hack dei contratti intelligenti.",
"page-dapps-dapp-description-etherisc": "Un modello di assicurazione decentralizzata utilizzabile da chiunque per creare la propria copertura assicurativa.",
"page-dapps-dapp-description-zapper": "Monitora il tuo portafoglio e usa una gamma di prodotti DeFi da un'interfaccia.",
"page-dapps-dapp-description-zerion": "Gestisci il tuo portafoglio e valuta semplicemente ogni singolo asset di DeFi sul mercato.",
- "page-dapps-dapp-description-rotki": "Strumento di monitoraggio, analisi, contabilità e rendicontazione fiscale open-source del portafoglio che rispetta la tua privacy.",
+ "page-dapps-dapp-description-rotki": "Strumento di monitoraggio del portfolio open source, analisi, contabilità e rendicontazione fiscale, che rispetta la tua privacy.",
+ "page-dapps-dapp-description-krystal": "Una piattaforma unica per accedere a tutti i tuoi servizi DeFi preferiti.",
"page-dapps-dapp-description-rarible": "Crea, vendi e compra articoli da collezione tokenizzati.",
"page-dapps-dapp-description-sablier": "Trasmetti denaro in tempo reale.",
"page-dapps-dapp-description-superrare": "Acquista opere d'arte digitali direttamente dagli artisti o nei mercati secondari.",
@@ -85,7 +85,7 @@
"page-dapps-dapp-description-tornado-cash": "Invia transazioni anonime su Ethereum.",
"page-dapps-dapp-description-uniswap": "Scambia token in modo facile o fornisci token per ricompense %.",
"page-dapps-docklink-dapps": "Introduzione alle dApp",
- "page-dapps-docklink-smart-contracts": "Smart Contract",
+ "page-dapps-docklink-smart-contracts": "Contratti intelligenti",
"page-dapps-dark-forest-logo-alt": "Logo Dark Forest",
"page-dapps-decentraland-logo-alt": "Logo Decentraland",
"page-dapps-index-coop-logo-alt": "Logo di Index Coop",
@@ -94,9 +94,9 @@
"page-dapps-zapper-logo-alt": "Logo di Zapper",
"page-dapps-zerion-logo-alt": "Logo di Zerion",
"page-dapps-rotki-logo-alt": "Logo di Rotki",
+ "page-dapps-krystal-logo-alt": "Logo di Krystal",
"page-dapps-desc": "Trova un'applicazione Ethereum da provare.",
"page-dapps-doge-img-alt": "Figura di un cane che usa un computer",
- "page-dapps-dydx-logo-alt": "Logo dYdX",
"page-dapps-editors-choice-dark-forest": "Gioca contro altri utenti per conquistare pianeti e prova la tecnologia avanzatissima di scaling/privacy di Ethereum. Forse per coloro che già conoscono Ethereum.",
"page-dapps-editors-choice-description": "Alcune dapps che il team di ethereum.org adora in questo momento. Esplora più dapps qui sotto.",
"page-dapps-editors-choice-foundation": "Investi nella cultura. Compra, scambia e vendi opere d'arte digitali uniche e moda da alcuni incredibili artisti, musicisti e marchi.",
@@ -108,15 +108,15 @@
"page-dapps-explore-dapps-title": "Esplora le dapp",
"page-dapps-features-1-description": "Una volta distribuito su Ethereum, il codice di una dapp non può essere rimosso. E chiunque può utilizzare le funzionalità della dapp, anche se il team che le ha sviluppate si è sciolto. Una volta su Ethereum, rimane lì.",
"page-dapps-features-1-title": "Nessun proprietario",
- "page-dapps-features-2-description": "Nessuno ti può impedire di usare una dapp o di inviare transazioni. Ad esempio, se Twitter fosse su Ethereum, nessuno potrebbe bloccare il tuo account o impedirti di twittare.",
+ "page-dapps-features-2-description": "Nessuno può impedirti di usare una dapp o di inviare le transazioni. Ad esempio, se Twitter fosse su Ethereum, nessuno potrebbe bloccare il tuo profilo o impedirti di twittare.",
"page-dapps-features-2-title": "Nessuna censura",
"page-dapps-features-3-description": "Poiché Ethereum ha ETH, i pagamenti sono nativi di Ethereum. Gli sviluppatori non devono preoccuparsi dell'integrazione con intermediari terzi.",
"page-dapps-features-3-title": "Pagamenti integrati",
"page-dapps-features-4-description": "Il codice delle dapp è spesso aperto e compatibile per natura. I team sviluppano regolarmente utilizzando il lavoro di altri. Se vuoi permettere agli utenti di scambiare token nella tua dapp, puoi semplicemente integrare il codice di un'altra dapp.",
"page-dapps-features-4-title": "Plug and play",
- "page-dapps-features-5-description": "Con la maggior parte delle dapp, non è necessario condividere la tua identità reale. Il tuo account Ethereum è il tuo login e hai solo bisogno di un portafoglio.",
+ "page-dapps-features-5-description": "Con gran parte delle dapp, non devi condividere la tua identità del mondo reale. Il tuo conto di Ethereum è il tuo accesso e necessiti soltanto di un portafoglio.",
"page-dapps-features-5-title": "Un solo login anonimo",
- "page-dapps-features-6-description": "La crittografia assicura che un hacker non possa forgiare transazioni e altre interazioni con le dapp per tuo conto. Sei tu che autorizzi azioni dapp con il tuo account Ethereum, di solito tramite il portafoglio, quindi tieni le tue credenziali al sicuro.",
+ "page-dapps-features-6-description": "La crittografia assicura che gli utenti malevoli non possano forgiare transazioni e altre interazioni della dapp per conto tuo. Autorizzi le azioni delle dapp con il tuo conto di Ethereum, solitamente tramite il tuo portafoglio, così che le tue credenziali restino al sicuro.",
"page-dapps-features-6-title": "Il potere della crittografia",
"page-dapps-features-7-description": "Una volta che la dapp è su Ethereum, risulterà non disponibile solo se anche Ethereum non sarà disponibile. Le reti delle dimensioni di Ethereum sono notoriamente difficili da attaccare.",
"page-dapps-features-7-title": "Addio ai tempi di inattività",
@@ -155,9 +155,9 @@
"page-dapps-radicle-logo-alt": "Logo di Radicle",
"page-dapps-hero-header": "Strumenti e servizi basati su Ethereum",
"page-dapps-hero-subtitle": "Le dapp sono un movimento crescente di applicazioni che usano Ethereum per interrompere modelli di business o inventarne di nuovi.",
- "page-dapps-how-dapps-work-p1": "Le dapps hanno il proprio codice di backend (Smart Contract) che viene eseguito su una rete decentralizzata e non su un server centralizzato. Usano la blockchain Ethereum per lo storage dei dati e gli Smart Contract per la logica delle app.",
- "page-dapps-how-dapps-work-p2": "Uno Smart Contract è come un insieme di regole presenti on-chain, può essere visto da tutti e funziona in base a tali regole. Immagina un distributore automatico: se inserisci abbastanza monete e selezioni il prodotto corretto, riceverai l'articolo che desideri. E come per i distributori automatici, gli Smart Contract possono contenere fondi, praticamente come il tuo account Ethereum. Questo permette al codice di mediare accordi e transazioni.",
- "page-dapps-how-dapps-work-p3": "Una volta che le app vengono distribuite sulla rete Ethereum, non è possibile modificarle. Possono essere decentralizzate perché sono controllate dalla logica presente nello Smart Contract e non da un individuo o da un'azienda.",
+ "page-dapps-how-dapps-work-p1": "Il codice di backend (contratti intelligenti) delle dapp opera su una rete decentralizzata e non su un server centralizzato. Le dapp utilizzano la blockchain per l'archiviazione dei dati e i contratti intelligenti per la logica della loro app.",
+ "page-dapps-how-dapps-work-p2": "Un contratto intelligente è come una serie di regole che risiedono sulla catena, visibile a tutti e operata esattamente secondo tali regole. Immagina un distributore automatico: se gli fornisci abbastanza fondi e la selezione corretta, otterrai l'articolo che desideri. E come i distributori, i contratti intelligenti possono contenere fondi, proprio come il tuo conto di Ethereum. Questo consente al codice di mediare accordi e transazioni.",
+ "page-dapps-how-dapps-work-p3": "Una volta distribuite le dapp sulla rete di Ethereum, non puoi modificarle. Le dapp possono esser decentralizzate perché sono controllate dalla logica scritta nel contratto, non da un individuo o un'azienda.",
"page-dapps-how-dapps-work-title": "Come funzionano le dapp",
"page-dapps-learn-callout-button": "Inizia a sviluppare",
"page-dapps-learn-callout-description": "Il nostro portale degli sviluppatori della community contiene documenti, strumenti e framework per aiutarti a costruire una dapp.",
diff --git a/src/intl/it/page-developers-docs.json b/src/intl/it/page-developers-docs.json
index 96010eb388e..8a0155adc9d 100644
--- a/src/intl/it/page-developers-docs.json
+++ b/src/intl/it/page-developers-docs.json
@@ -1,6 +1,6 @@
{
- "docs-nav-accounts": "Account",
- "docs-nav-accounts-description": "Entità nella rete in grado di mantenere un saldo e inviare transazioni",
+ "docs-nav-accounts": "Conti",
+ "docs-nav-accounts-description": "Entità nella rete che possono detenere un saldo e inviare le transazioni",
"docs-nav-advanced": "Avanzate",
"docs-nav-backend-apis": "API backend",
"docs-nav-block-explorers": "Block Explorer",
@@ -8,19 +8,20 @@
"docs-nav-blocks-description": "Il modo in cui le transazioni sono raggruppate per assicurare che lo stato sia sincronizzato per tutti gli attori",
"docs-nav-bridges": "Bridge",
"docs-nav-bridges-description": "Una panoramica del bridging per gli sviluppatori",
- "docs-nav-compiling-smart-contracts": "Compilazione di Smart Contract",
+ "docs-nav-compiling-smart-contracts": "Compilare i contratti intelligenti",
"docs-nav-composability": "Componibilità",
"docs-nav-consensus-mechanisms": "Meccanismi di consenso",
"docs-nav-consensus-mechanisms-description": "Come i singoli nodi di una rete distribuita concordano sullo stato attuale del sistema",
"docs-nav-gasper": "Gasper",
"docs-nav-weak-subjectivity": "Soggettività debole",
"docs-nav-attestations": "Attestazioni",
+ "docs-nav-keys": "Chiavi",
"docs-nav-data-and-analytics": "Dati e analisi",
"docs-nav-data-and-analytics-description": "Come i dati della blockchain sono combinati, organizzati e implementati in dApps",
"docs-nav-data-availability": "Disponibilità dei dati",
"docs-nav-dart": "Dart",
"docs-nav-delphi": "Delphi",
- "docs-nav-deploying-smart-contracts": "Distribuzione di Smart Contract",
+ "docs-nav-deploying-smart-contracts": "Distribuire i contratti intelligenti",
"docs-nav-development-frameworks": "Framework di sviluppo",
"docs-nav-development-frameworks-description": "Strumenti che rendono lo sviluppo con Ethereum più facile",
"docs-nav-development-networks": "Reti di sviluppo",
@@ -32,13 +33,13 @@
"docs-nav-erc-1155": "ERC-1155",
"docs-nav-erc-4626": "ERC-4626",
"docs-nav-ethereum-client-apis": "API client Ethereum",
- "docs-nav-ethereum-client-apis-description": "Convenience Libraries che permettono alla tua app web di interagire con Ethereum e gli Smart Contract",
+ "docs-nav-ethereum-client-apis-description": "Librerie di convenienza che consentono alla tua app web di interagire con Ethereum e i contratti intelligenti",
"docs-nav-ethereum-stack": "Stack di Ethereum",
"docs-nav-evm": "Macchina virtuale Ethereum (EVM)",
"docs-nav-evm-description": "L'EVM gestisce l'intera elaborazione sulla rete Ethereum",
"docs-nav-foundational-topics": "Argomenti fondamentali",
- "docs-nav-gas": "Carburante",
- "docs-nav-gas-description": "Potenza computazionale necessaria per elaborare le operazioni, pagata in ETH dai mittenti della transazione",
+ "docs-nav-gas": "Gas",
+ "docs-nav-gas-description": "Potenza di calcolo necessaria per elaborare le transazioni, pagata in ETH dai mittenti della transazione",
"docs-nav-golang": "Golang",
"docs-nav-integrated-development-environments-ides": "Ambienti di sviluppo integrati (IDE)",
"docs-nav-integrated-development-environments-ides-description": "Gli ambienti migliori per scrivere il codice dApp",
@@ -58,7 +59,7 @@
"docs-nav-mev-description": "Come viene estratto il valore dalla blockchain Ethereum attraverso il blocco delle ricompense",
"docs-nav-mining": "Mining",
"docs-nav-mining-algorithms": "Algoritmi di mining",
- "docs-nav-dagger-hashimoto": "Dagger-Hashimoto",
+ "docs-nav-dagger-hashamoto": "Dagger-Hashamoto",
"docs-nav-ethash": "Ethash",
"docs-nav-networks": "Reti",
"docs-nav-networks-description": "Implementazioni di Ethereum compresi test di rete",
@@ -86,24 +87,24 @@
"docs-nav-scaling-sidechains": "Sidechain",
"docs-nav-scaling-plasma": "Plasma",
"docs-nav-scaling-validium": "Validium",
- "docs-nav-smart-contract-security": "Sicurezza degli smart contract",
- "docs-nav-smart-contract-security-description": "Best practice per gestire gli attacchi e le vulnerabilità degli smart contract",
- "docs-nav-smart-contract-formal-verification": "Verifica formale dello smart contract",
- "docs-nav-smart-contract-formal-verification-description": "Un'introduzione alla verifica formale nel contesto degli smart contract di Ethereum",
- "docs-nav-smart-contract-anatomy": "Anatomia dello Smart Contract",
- "docs-nav-smart-contract-languages": "Linguaggi dello Smart Contract",
- "docs-nav-smart-contracts": "Smart contract",
- "docs-nav-smart-contracts-description": "Programmi che risiedono in un indirizzo Ethereum ed eseguono funzioni quando attivati dalle transazioni",
- "docs-nav-smart-contracts-libraries": "Librerie degli Smart Contract",
+ "docs-nav-smart-contract-security": "Sicurezza del contratto intelligente",
+ "docs-nav-smart-contract-security-description": "Buone pratiche per gestire gli attacchi ai e le vulnerabilità dei contratti intelligenti",
+ "docs-nav-smart-contract-formal-verification": "Verifica formale del contratto intelligente",
+ "docs-nav-smart-contract-formal-verification-description": "Un'introduzione alla verifica formale nel contesto dei contratti intelligenti di Ethereum",
+ "docs-nav-smart-contract-anatomy": "Anatomia del contratto intelligente",
+ "docs-nav-smart-contract-languages": "Linguaggi del contratto intelligente",
+ "docs-nav-smart-contracts": "Contratti intelligenti",
+ "docs-nav-smart-contracts-description": "Programmi che risiedono a un indirizzo di Ethereum ed eseguono funzioni quando innescati dalle transazioni",
+ "docs-nav-smart-contracts-libraries": "Librerie dei contratti intelligenti",
"docs-nav-standards": "Standard",
"docs-nav-standards-description": "Protocolli concordati per mantenere l'efficienza e l'accessibilità dei progetti per la comunità",
"docs-nav-storage": "Archiviazione",
"docs-nav-storage-description": "Strutture e dispositivi di stoccaggio decentralizzati",
- "docs-nav-testing-smart-contracts": "Testare gli Smart Contract",
+ "docs-nav-testing-smart-contracts": "Testare i contratti intelligenti",
"docs-nav-token-standards": "Standard per i token",
"docs-nav-transactions": "Transazioni",
"docs-nav-transactions-description": "Trasferimenti e altre azioni che provocano il cambiamento dello stato di Ethereum",
- "docs-nav-upgrading-smart-contracts": "Aggiornare gli smart contract",
+ "docs-nav-upgrading-smart-contracts": "Aggiornare i contratti intelligenti",
"docs-nav-verifying-smart-contracts": "Verificare gli smart contract",
"docs-nav-web2-vs-web3": "Web2 rispetto a Web3",
"docs-nav-web2-vs-web3-description": "Le differenze fondamentali delle applicazioni basate sulla blockchain",
@@ -115,6 +116,8 @@
"docs-nav-data-structures-and-encoding-rlp": "Prefisso a lunghezza ricorsiva (RLP)",
"docs-nav-data-structures-and-encoding-patricia-merkle-trie": "Patricia Merkle Trie",
"docs-nav-data-structures-and-encoding-ssz": "Serializzazione semplice (SSZ)",
+ "docs-nav-data-structures-and-encoding-web3-secret-storage": "Definizione di archiviazione segreta di Web3",
+ "docs-nav-rewards-and-penalties": "Ricompense e sanzioni del PoS",
"page-calltocontribute-desc-1": "Se conosci l'argomento e vuoi contribuire, modifica questa pagina e condividi un po' del tuo sapere.",
"page-calltocontribute-desc-2": "Il tuo nome verrà aggiunto ai crediti e aiuterai la community di Ethereum!",
"page-calltocontribute-desc-3": "Usa questo flessibile",
diff --git a/src/intl/it/page-developers-index.json b/src/intl/it/page-developers-index.json
index 5d2e00fcff1..b625cd5b64e 100644
--- a/src/intl/it/page-developers-index.json
+++ b/src/intl/it/page-developers-index.json
@@ -3,10 +3,10 @@
"page-developers-about": "Informazioni su queste risorse sviluppatore",
"page-developers-about-desc": "ethereum.org ti aiuta a sviluppare con Ethereum con documentazione sui concetti fondamentali e sullo stack di sviluppo. In più, ti offre tutorial per muovere i primi passi.",
"page-developers-about-desc-2": "Sull'onda della rete di sviluppatori Mozilla, abbiamo pensato che Ethereum avesse bisogno di un luogo in cui ospitare utili contenuti e risorse per sviluppatori. Come per Mozilla, qui è tutto open-source e disponibile per essere esteso e migliorato da voi.",
- "page-developers-account-desc": "Contratti o utenti sulla rete",
+ "page-developers-account-desc": "Contratti o persone sulla rete",
"page-developers-accounts-link": "Conti",
"page-developers-advanced": "Avanzate",
- "page-developers-api-desc": "Usare le librerie per interagire coi contratti intelligenti",
+ "page-developers-api-desc": "Usare le librerie per interagire con i contratti intelligenti",
"page-developers-api-link": "API del backend",
"page-developers-aria-label": "Menu Sviluppatori",
"page-developers-block-desc": "Batch di transazioni aggiunte alla blockchain",
@@ -66,11 +66,11 @@
"page-developers-read-docs": "Leggi i documenti",
"page-developers-scaling-desc": "Soluzioni per transazioni più rapide",
"page-developers-scaling-link": "Ampliamento",
- "page-developers-smart-contract-security-desc": "Misure di sicurezza da considerare per lo sviluppo degli smart contract",
- "page-developers-smart-contract-security-link": "Sicurezza degli smart contract",
+ "page-developers-smart-contract-security-desc": "Misure di sicurezza da considerare durante lo sviluppo dei contratti intelligenti",
+ "page-developers-smart-contract-security-link": "Sicurezza dei contratti intelligenti",
"page-developers-set-up": "Configurare l'ambiente locale",
"page-developers-setup-desc": "Preparare lo stack per lo sviluppo configurando un ambiente di sviluppo.",
- "page-developers-smart-contracts-desc": "La logica delle dapp: accordi a esecuzione automatica",
+ "page-developers-smart-contracts-desc": "La logica dietro le dapp: esecuzione automatica degli accordi",
"page-developers-smart-contracts-link": "Contratti intelligenti",
"page-developers-stack": "Lo stack",
"page-developers-start": "Inizia a sperimentare",
diff --git a/src/intl/it/page-developers-learning-tools.json b/src/intl/it/page-developers-learning-tools.json
index 588583cdaf8..2b4659bb636 100644
--- a/src/intl/it/page-developers-learning-tools.json
+++ b/src/intl/it/page-developers-learning-tools.json
@@ -29,21 +29,21 @@
"page-learning-tools-questbook-description": "Tutorial per autodidatti per imparare il Web 3.0 sviluppando",
"page-learning-tools-questbook-logo-alt": "Logo di Questbook",
"page-learning-tools-remix-description": "Sviluppa, distribuisci e amministra i contratti intelligenti per Ethereum. Segui i tutorial con il plugin di Learneth.",
- "page-learning-tools-remix-description-2": "Remix e Replit non sono semplici sandbox—gli sviluppatori possono utilizzarli scrivendo, compilando e distribuendo i loro Contratti Intelligenti.",
+ "page-learning-tools-remix-description-2": "Remix e Replit non sono semplici sandbox: gli sviluppatori possono scrivere, compilare e distribuire i propri contratti intelligenti utilizzandoli.",
"page-learning-tools-replit-description": "Un ambiente di sviluppo personalizzabile per Ethereum con ricarica immediata, controllo degli errori e supporto della rete di prova di prima classe.",
"page-learning-tools-replit-logo-alt": "Logo di Replit",
"page-learning-tools-remix-logo-alt": "Logo di Remix",
"page-learning-tools-sandbox": "Sandbox del codice",
- "page-learning-tools-sandbox-desc": "Queste sandbox ti offriranno uno spazio per sperimentare con la scrittura dei contratti intelligenti e comprendere Ethereum.",
- "page-learning-tools-speed-run-ethereum-description": "Speed Run Ethereum è una serie di sfide per testare la tua conoscenza di Solidity usando Scaffold-ETH",
+ "page-learning-tools-sandbox-desc": "Questi sandbox ti offriranno uno spazio per sperimentare con la scrittura dei contratti intelligenti e la comprensione di Ethereum.",
+ "page-learning-tools-speed-run-ethereum-description": "Speed Run Ethereum è una serie di sfide per testare la tua conoscenza di Solidity utilizzando Scaffold-ETH",
"page-learning-tools-speed-run-ethereum-logo-alt": "Logo di Speed Run Ethereum",
"page-learning-tools-studio-description": "Un IDE basato sul web in cui puoi seguire i tutorial per creare e testare i contratti intelligenti, nonché crearne un frontend.",
"page-learning-tools-vyperfun-description": "Impara a usare Vyper creando il tuo gioco Pokémon.",
"page-learning-tools-vyperfun-logo-alt": "Logo di Vyper.fun",
"page-learning-tools-nftschool-description": "Esplora cosa succede coi token non fungibili, o NFT, dal punto di vista tecnico.",
"page-learning-tools-nftschool-logo-alt": "Logo della scuola di NFT",
- "page-learning-tools-pointer-description": "Impara le compatenze degli sviluppatori web3 con tutorial interattivi e divertenti. Ottieni cripto-ricompense lungo il percorso",
+ "page-learning-tools-pointer-description": "Impara le competenze degli sviluppatori web3 con tutorial interattivi e divertenti. Ottieni cripto-ricompense lungo il percorso",
"page-learning-tools-pointer-logo-alt": "Logo di Pointer",
- "page-learning-tools-platzi-description": "Impara come creare le dapp su Web3 e padroneggia tutte le abilità necessarie per essere uno sviluppatore della blockchain.",
+ "page-learning-tools-platzi-description": "Scopri come creare le dapp su Web3 e padroneggiare tutte le abilità necessarie per essere uno sviluppatore della blockchain.",
"page-learning-tools-platzi-logo-alt": "Logo di Platzi"
}
diff --git a/src/intl/it/page-developers-local-environment.json b/src/intl/it/page-developers-local-environment.json
index 73074f58118..604c9c33aec 100644
--- a/src/intl/it/page-developers-local-environment.json
+++ b/src/intl/it/page-developers-local-environment.json
@@ -1,5 +1,5 @@
{
- "page-local-environment-brownie-desc": "108 / 5000\nUn framework di sviluppo e test basato su Python per Smart Contract per la macchina virtuale Ethereum.",
+ "page-local-environment-brownie-desc": "Un framework di test e sviluppo basato su Python per i contratti intelligenti destinati alla Macchina Virtuale di Ethereum.",
"page-local-environment-brownie-logo-alt": "Logo Brownie",
"page-local-environment-embark-desc": "La piattaforma di sviluppo all-in-one per la creazione e la distribuzione di applicazioni decentrate.",
"page-local-environment-embark-logo-alt": "Logo Embark",
@@ -10,28 +10,28 @@
"page-local-environment-foundry-desc": "Un kit di strumenti incredibilmente veloce, portatile e modulare per lo sviluppo di applicazioni di Ethereum scritto in Rust.",
"page-local-environment-foundry-logo-alt": "Logo di Foundry",
"page-local-environment-framework-feature-1": "Funzionalità per avviare un'istanza blockchain locale.",
- "page-local-environment-framework-feature-2": "Utilità per compilare e testare i tuoi Smart Contract.",
+ "page-local-environment-framework-feature-2": "Utilità per compilare e testare i tuoi contratti intelligenti.",
"page-local-environment-framework-feature-3": "Componenti aggiuntivi per lo sviluppo su client per creare un'applicazione per gli utenti all'interno dello stesso progetto/repository.",
- "page-local-environment-framework-feature-4": "Configurazione per connettersi alle reti Ethereum e distribuire gli Smart Contract, sia ad un'istanza in esecuzione localmente che ad una delle reti pubbliche di Ethereum.",
+ "page-local-environment-framework-feature-4": "Configurazione per connettersi alle reti di Ethereum e distribuire i contratti, che sia a un'istanza operata localmente o una delle reti pubbliche di Ethereum.",
"page-local-environment-framework-feature-5": "Distribuzione decentralizzata delle app. Integrazioni con opzioni di storage come IPFS.",
"page-local-environment-framework-features": "Questi framework sono dotati di molte funzionalità disponibili subito, come:",
"page-local-environment-frameworks-desc": " Ti consigliamo di scegliere un framework, soprattutto se hai appena iniziato. Costruire una dapp completa richiede diversi componenti della tecnologia. I framework includono molte delle funzionalità necessarie o forniscono semplici sistemi plug-in per scegliere gli strumenti desiderati.",
"page-local-environment-frameworks-title": "Framework e stack preimpostati",
"page-local-environment-hardhat-desc": "Hardhat è un ambiente di sviluppo Ethereum per professionisti.",
"page-local-environment-hardhat-logo-alt": "Logo Hardhat",
- "page-local-environment-openZeppelin-desc": "Risparmia tempo di sviluppo compilando, aggiornando, distribuendo Smart Contract e interagendovi con il nostro CLI.",
+ "page-local-environment-openZeppelin-desc": "Risparmia ore di sviluppo compilando, aggiornando, distribuendo e interagendo con i contratti intelligenti, con la nostra CLI.",
"page-local-environment-openZeppelin-logo-alt": "Logo OpenZeppelin",
- "page-local-environment-scaffold-eth-desc": "Ether + Hardhat + React: tutto ciò di cui hai bisogno per iniziare a costruire applicazioni decentralizzate alimentate da smart contract.",
+ "page-local-environment-scaffold-eth-desc": "Ether + Hardhat + React: tutto ciò di cui hai bisogno per iniziare a creare applicazioni decentralizzate basate sui contratti intelligenti.",
"page-local-environment-scaffold-eth-logo-alt": "logo scaffold-eth",
"page-local-environment-setup-meta-desc": "Guida su come scegliere uno stack software per lo sviluppo Ethereum.",
"page-local-environment-setup-meta-title": "Configurazione di sviluppo locale Ethereum",
"page-local-environment-setup-subtitle": "Prima di iniziare a creare, è necessario scegliere uno stack.",
"page-local-environment-setup-subtitle-2": " Ecco gli strumenti e i framework che puoi utilizzare per creare un'applicazione Ethereum.",
"page-local-environment-setup-title": "Configura il tuo ambiente di sviluppo locale",
- "page-local-environment-solidity-template-desc": "Modello GitHub per una configurazione pre-impostata degli Smart Contract Solidity. Include una rete locale Hardhat, Waffle per i test, Ethers per l'implementazione del portafoglio e altro ancora.",
+ "page-local-environment-solidity-template-desc": "Un modello di GitHub per una configurazione predefinita per i tuoi contratti intelligenti in Solidity. Include una rete locale Hardhat, Waffle per i test, Ether per l'implementazione del portafoglio, e molto altro.",
"page-local-environment-solidity-template-logo-alt": "Logo del modello Solidity",
"page-local-environment-truffle-desc": "Con la Truffle Suite, passare dall'idea alla dapp è comodissimo.",
"page-local-environment-truffle-logo-alt": "Logo Truffle",
- "page-local-environment-waffle-desc": "La libreria di test più avanzata per Smart Contract. Da utilizzare da sola o con Scaffold-eth o Hard Hat.",
+ "page-local-environment-waffle-desc": "La libreria di test più avanzata per i contratti intelligenti. Da usare da sola o con Scaffold-eth o Hardhat.",
"page-local-environment-waffle-logo-alt": "Logo Waffle"
}
diff --git a/src/intl/it/page-eth.json b/src/intl/it/page-eth.json
index 57e5e463b7f..9c1aff8ebb8 100644
--- a/src/intl/it/page-eth.json
+++ b/src/intl/it/page-eth.json
@@ -16,13 +16,13 @@
"page-eth-flexible-amounts-desc": "ETH è divisibile fino a 18 cifre decimali, in modo da non dover acquistare 1 ETH intero. Puoi acquistare frazioni alla volta, magari solo 0,000000000000000001 ETH se desideri.",
"page-eth-fuels": "ETH sta alla base di Ethereum e lo mantiene sicuro",
"page-eth-fuels-desc": "ETH è la linfa vitale di Ethereum. Quando invii ETH o usi un'applicazione di Ethereum, pagherai una commissione in ETH per usare la rete di Ethereum. Questa, è un incentivo per un produttore del blocco a elaborare e verificare ciò che stai provando a fare.",
- "page-eth-fuels-desc-2": "I validatori sono come gli archivisti di Ethereum: controllano e provano che nessuno stia barando. Sono selezionati casualmente per proporre un blocco di transazioni. I validatori che compiono tale mansione sono inoltre premiati con piccoli importi di ETH appena emessi.",
- "page-eth-fuels-desc-3": "Il lavoro compiuto dai validatori e il capitale da loro investito, mantengono Ethereum sicuro e libero dal controllo centralizzato.",
- "page-eth-fuels-staking": "Quando metti i tuoi ETH in staking, aiuti a proteggere Ethereum e guadagni ricompense. In questo sistema, la minaccia di perdere ETH scoraggia gli utenti malevoli.",
+ "page-eth-fuels-desc-2": "I validatori sono come i custodi dei registri di Ethereum: controllano e provano che nessuno stia barando. Vengono selezionati a caso per proporre un blocco di transazioni. I validatori che svolgono questo lavoro vengono anche ricompensati con piccole quantità di ETH di nuova emissione.",
+ "page-eth-fuels-desc-3": "Il lavoro svolto dai validatori e il capitale da loro investito rendono Ethereum sicuro e libero dal controllo centralizzato.",
+ "page-eth-fuels-staking": "Mettendo i propri ETH in stake, si contribuisce a proteggere Ethereum e a guadagnare ricompense. In questo sistema, la minaccia di perdere ETH scoraggia gli aggressori.",
"page-eth-fuels-more-staking": "Maggiori informazioni sullo staking",
"page-eth-get-eth-btn": "Ottieni ETH",
"page-eth-gov-tokens": "Token di governance",
- "page-eth-gov-tokens-desc": "Token rappresentanti il potere di voto nelle organizzazzioni decentralizzate.",
+ "page-eth-gov-tokens-desc": "Token che rappresentano il potere di voto in organizzazioni decentralizzate.",
"page-eth-has-value": "Perché ETH ha un valore?",
"page-eth-has-value-desc": "ETH è prezioso in modi diversi per persone diverse.",
"page-eth-has-value-desc-2": "Per gli utenti di Ethereum, ETH è prezioso perché consente di pagare le commissioni sulle transazioni.",
@@ -43,7 +43,7 @@
"page-eth-not-only-crypto-desc-2": "Ethereum ospita migliaia di token, alcuni più utili e preziosi di altri. Gli sviluppatori stanno costantemente creando nuovi token che sbloccano nuove possibilità e aprono nuovi mercati.",
"page-eth-not-only-crypto-desc-3": "Se vuoi saperne di più sui token, i nostri amici di EthHub hanno realizzato un paio di interessanti panoramiche:",
"page-eth-open": "Aperto a chiunque",
- "page-eth-open-desc": "Serve solo una connessione internet e un portafoglio per accettare ETH. Non è necessario avere accesso a un conto bancario per accettare pagamenti. ",
+ "page-eth-open-desc": "Necessiti solo di una connessione a Internet e di un portafoglio per accettare gli ETH. Non devi accedere a un conto bancario per accettare i pagamenti. ",
"page-eth-p2p-payments": "Pagamenti tra pari",
"page-eth-p2p-payments-desc": "È possibile inviare ETH senza servizi di intermediazione come le banche. È come consegnare denaro contante di persona, ma puoi farlo in modo sicuro con chiunque, ovunque, in qualsiasi momento.",
"page-eth-period": ".",
@@ -62,7 +62,7 @@
"page-eth-underpins-desc-2": "È possibile utilizzare ETH come garanzia per generare token di criptovaluta completamente diversi su Ethereum. Inoltre è possibile prendere in prestito, prestare e ottenere interessi su ETH e altri token basati su ETH.",
"page-eth-uses": "Gli impieghi degli ETH aumentano giorno dopo giorno",
"page-eth-uses-desc": "Poiché Ethereum è programmabile, gli sviluppatori possono modellarlo in innumerevoli modi.",
- "page-eth-uses-desc-2": "Nel 2015, tutto quello che si poteva fare era inviare ETH da un account Ethereum a un altro. Ecco invece solo alcune delle cose che puoi fare oggi.",
+ "page-eth-uses-desc-2": "Nel 2015, tutto quello che si poteva fare era inviare ETH da un conto di Ethereum a un altro. Ecco solo alcune delle cose che puoi fare oggi.",
"page-eth-uses-desc-3": "pagare qualcuno o ricevere fondi in tempo reale.",
"page-eth-uses-desc-4": "è possibile scambiare ETH con altri token tra cui Bitcoin.",
"page-eth-uses-desc-5": "su ETH e altri token basati su Ethereum.",
diff --git a/src/intl/it/page-get-eth.json b/src/intl/it/page-get-eth.json
index f7f3477d9e1..6da08c291b2 100644
--- a/src/intl/it/page-get-eth.json
+++ b/src/intl/it/page-get-eth.json
@@ -11,7 +11,7 @@
"page-get-eth-dex-desc": "Se vuoi più controllo, compra ETH peer-to-peer. Con una DEX puoi acquistare e vendere senza dare a un'azienda centralizzata il controllo dei tuoi fondi.",
"page-get-eth-dexs": "Borse decentralizzate (DEX)",
"page-get-eth-dexs-desc": "Le borse decentralizzate sono piazze aperte in cui scambiare ETH e altri token. Collegano direttamente acquirenti e venditori.",
- "page-get-eth-dexs-desc-2": "Anziché utilizzare una terza parte attendibile per salvaguardare i fondi nella transazione, utilizzano il codice. L'ETH del venditore verrà trasferito solo quando il pagamento sarà garantito. Questo tipo di codice è detto Smart Contract.",
+ "page-get-eth-dexs-desc-2": "Invece di sfruttare una terza parte attendibile per salvaguardare i fondi nella transazione, utilizzano il codice. L'ETH del venditore sarà trasferito solo quando il pagamento è garantito. Questo tipo di codice è noto come contratto intelligente.",
"page-get-eth-dexs-desc-3": "Tutto questo significa che ci sono meno restrizioni geografiche rispetto alle alternative centralizzate. Se qualcuno vende ciò che cerchi e accetta un metodo di pagamento fornisci, puoi procedere. Con le DEX puoi acquistare ETH con altri token, Paypal o anche contanti di persona.",
"page-get-eth-do-not-copy": "Esempio: Non copiare",
"page-get-eth-exchanges-disclaimer": "Abbiamo raccolto questa informazione manualmente. Se trovi qualcosa di sbagliato, faccelo sapere:",
diff --git a/src/intl/it/page-index.json b/src/intl/it/page-index.json
index 7c6c7289db6..4f61d9aed41 100644
--- a/src/intl/it/page-index.json
+++ b/src/intl/it/page-index.json
@@ -24,9 +24,9 @@
"page-index-what-is-ethereum-description": "Ethereum è una tecnologia che ospita denaro digitale, pagamenti globali e applicazioni. La comunità di creatori ha costruito un'economia digitale in forte espansione, modi innovativi e audaci per guadagnare online e molto altro ancora. È aperta a tutti e ovunque nel mondo, tutto ciò che serve è una connessione Internet.",
"page-index-what-is-ethereum-button": "Cos'è Ethereum?",
"page-index-what-is-ethereum-secondary-button": "Maggiori informazioni sul denaro digitale",
- "page-index-what-is-ethereum-image-alt": "Illustrazione di una persona che che sbircia in un bazar, che rappresenta Ethereum.",
+ "page-index-what-is-ethereum-image-alt": "Illustrazione di una persona che sbircia in un bazar, che rappresenta Ethereum.",
"page-index-defi": "Un sistema finanziario più equo",
- "page-index-defi-description": "Oggi miliardi di persone non hanno la possibilità di aprire conti bancari o vedono i loro pagamenti bloccati. Il sistema di finanza decentralizzata (DeFi) di Ethereum non dorme e non discrimina mai. Con una semplice connessione Internet puoi inviare, ricevere e prendere in prestito denaro, guadagnare interessi e persino trasferire fondi in qualsiasi parte del mondo.",
+ "page-index-defi-description": "Oggi, miliardi di persone non hanno la possibilità di aprire conti bancari o vedono i propri pagamenti bloccati. Il sistema di finanza decentralizzata (DeFi) di Ethereum non dorme mai, né discrimina. Semplicemente con una connessione a Internet, puoi inviare, ricevere, prestare, guadagnare interessi e persino trasmettere fondi in tutto il mondo.",
"page-index-defi-button": "Esplora la DeFi",
"page-index-defi-image-alt": "Illustrazione di mani che offrono un simbolo ETH.",
"page-index-internet": "Un internet aperto",
diff --git a/src/intl/it/page-layer-2.json b/src/intl/it/page-layer-2.json
index 40aad9b5de7..64e6200f346 100644
--- a/src/intl/it/page-layer-2.json
+++ b/src/intl/it/page-layer-2.json
@@ -14,7 +14,7 @@
"layer-2-statsbox-2": "Commissione di trasferimento media in ETH nel livello 2 (USD)",
"layer-2-statsbox-3": "Variazione TVL livello 2 (30 giorni)",
"layer-2-what-is-layer-2-title": "Cos'è il livello 2?",
- "layer-2-what-is-layer-2-1": "Il Livello 2 (Layer 2 – L2) è un termine collettivo per descrivere una serie specifica di soluzioni di scaling di Ethereum. Un livello 2 è una blockchain separata che estende Ethereum e ne eredita le garanzie di sicurezza.",
+ "layer-2-what-is-layer-2-1": "Livello 2 (L2) è un termine collettivo per descrivere una serie specifica di soluzioni di ridimensionamento di Ethereum. Un livello 2 è una blockchain separata che estende Ethereum e ne eredita le garanzie di sicurezza.",
"layer-2-what-is-layer-2-2": "Ora daremo uno sguardo più in profondità e, per farlo, dobbiamo spiegare il livello 1 (L1).",
"layer-2-what-is-layer-1-title": "Cos'è il livello 1?",
"layer-2-what-is-layer-1-1": "Il Livello 1 è la blockchain di base. Ethereum e Bitcoin sono entrambe blockchain di livello 1 perché sono le fondamenta sottostanti su cui si costruiscono varie reti di livello 2. Esempi di progetti di livello 2 includono i \"rollup\" su Ethereum e la Lightning Network su Bitcoin. Tutta l'attività delle transazioni degli utenti su questi progetti di livello 2 può infine tornare alla blockchain di livello 1.",
@@ -28,10 +28,10 @@
"layer-2-what-is-layer-1-list-link-2": "Scopri cos'è Ethereum.",
"layer-2-why-do-we-need-layer-2-title": "Perché abbiamo bisogno del livello 2?",
"layer-2-why-do-we-need-layer-2-1": "Tre proprietà desiderabili di una blockchain sono che essa è decentralizzata, sicura e scalabile. Il trilemma della blockchain afferma che un'architettura semplice della blockchain può ottenerne solo due di queste tre proprietà. Vuoi una blockchain sicura e decentralizzata? Devi sacrificare la scalabilità.",
- "layer-2-why-do-we-need-layer-2-2": "Ethereum ha raggiunto la capacità di rete corrente con oltre 1 milione di transazioni al giorno e un'elevata domanda per ognuna di queste transazioni. Il successo di Ethereum e della domanda a usarlo ha causato il sostanziale aumento dei prezzi del gas. Dunque, anche la domanda di soluzioni di scalabilità è aumentata. È qui che entrano in gioco le reti di livello 2.",
+ "layer-2-why-do-we-need-layer-2-2": "Ethereum ha raggiunto la capacità di rete corrente con oltre 1 milione di transazioni al giorno e un'elevata domanda per ognuna di queste transazioni. Il successo di Ethereum e la sua domanda, ha causato il sostanziale aumento dei prezzi del gas. Dunque, anche la necessità di delle soluzioni di ridimensionamento è aumentata in domanda. È qui che entrano in gioco le reti di livello 2.",
"layer-2-why-do-we-need-layer-2-scalability": "Scalabilità",
"layer-2-why-do-we-need-layer-2-scalability-1": "L'obiettivo principale della scalabilità è aumentare la velocità di transazione (finalità di una maggiore velocità) e il volume delle transazioni (più transazioni al secondo), senza sacrificare la decentralizzazione o la sicurezza.",
- "layer-2-why-do-we-need-layer-2-scalability-2": "La community di Ethereum ha preso una forte posizione sul non dimenticarsi della decentralizzazione o della sicurezza per poter scalare. Fino alla frammentazione, la Rete Principale di Ethereum (livello 1), può solo elaborare approssimativamente 15 transazioni al secondo. Quando la domanda a usare Ethereum è elevata la rete si congestiona, il che aumenta le commissioni di transazione ed esclude gli utenti che non possono permettersele. È qui che, oggi, entra in gioco il livello 2 per scalare Ethereum.",
+ "layer-2-why-do-we-need-layer-2-scalability-2": "La community di Ethereum ha preso una forte posizione, impegnandosi a non compromettere la decentralizzazione o la sicurezza per scalare. Fino alla frammentazione, la Rete Principale di Ethereum (livello 1) è capace di elaborare solo approssimativamente 15 transazioni al secondo. Quando la domanda di usare Ethereum è elevata, la rete si congestiona, aumentando le commissioni di transazione ed escludendo gli utenti che non possono permettersi tali commissioni. È qui che oggi entra in gioco il livello 2 per scalare Ethereum.",
"layer-2-why-do-we-need-layer-2-scalability-3": "Approfondisci la visione di Ethereum",
"layer-2-benefits-of-layer-2-title": "Benefici del livello 2",
"layer-2-lower-fees-title": "Commissioni più basse",
@@ -44,21 +44,21 @@
"layer-2-how-does-layer-2-work-1": "Come menzionato sopra, il Livello 2 è un termine collettivo per le soluzioni di scaling di Ethereum che gestiscono le transazioni al di fuori del livello 1 di Ethereum, avvantaggiandosi comunque della robusta sicurezza decentralizzata del livello 1 di Ethereum. Un livello 2 è una blockchain separata che estende Ethereum. Come funziona?",
"layer-2-how-does-layer-2-work-2": "Una blockchain di livello 2 comunica regolarmente con Ethereum (inviando pacchetti di transazioni) per garantire che abbia garanzie di sicurezza e decentralizzazione simili. Tutto ciò non richiede modifiche al protocollo di livello 1 (Ethereum). Questo consente al livello 1 di gestire la sicurezza, la disponibilità dei dati e la decentralizzazione; mentre il livello 2 gestisce lo scaling. I livelli 2 tolgono del carico transazionale al livello 1 e pubblicano poi le prove finalizzate di nuovo nel livello 1. Rimuovendo questo carico di transazione dal livello 1, il livello di base diventa meno congestionato e tutto diventa più scalabile.",
"layer-2-rollups-title": "Rollup",
- "layer-2-rollups-1": "I rollup sono attualmente la soluzione di livello 2 preferita per scalare Ethereum. Usandoli, gli utenti possono ridurre le commissioni del carburante fino a 100x rispetto al livello 1.",
+ "layer-2-rollups-1": "Correntemente, i rollup sono la soluzione di livello 2 preferita per ridimensionare Ethereum. Usando i rollup, gli utenti possono ridurre le commissioni sul gas fino a 100 volte, rispetto al livello 1.",
"layer-2-rollups-2": "I rollup impacchettano (avvolgono, \"roll up\" in inglese) centinaia di transazioni in una singola transazione sul livello 1. Questo distribuisce le commissioni di transazione del L1 tra tutti gli utenti nel rollup, rendendolo più economico per ogni utente. Le transazioni di rollup sono eseguite al di fuori del livello 1, ma i dati delle transazioni sono pubblicati nel livello 1. Pubblicando i dati delle transazioni sul livello 1, i rollup ereditano la sicurezza di Ethereum. Esistono due approcci differenti ai rollup: ottimistici e a conoscenza zero (zero-knowledge), che differiscono principalmente per il modo in cui questi dati delle transazioni sono pubblicati nel L1.",
"layer-2-optimistic-rollups-title": "Rollup ottimistici",
"layer-2-optimistic-rollups-description": "I rollup ottimistici sono tali nel senso che presumono che le transazioni siano valide, ma possono essere contestate se necessario. Se si sospetta una transazione non valida, si esegue una prova di errore per verificare se è vi è stata una frode.",
"layer-2-optimistic-rollups-childSentance": "Approfondimento più sui rollup ottimistici",
"layer-2-zk-rollups-title": "Rollup a conoscenza zero (zero-knowledge)",
"layer-2-zk-rollups-description": "I rollup a conoscenza zero usano le prove di validità in cui le transazioni vengono calcolate al di fuori della catena e forniscono poi i dati compressi alla rete principale di Ethereum come prova della loro validità.",
- "layer-2-zk-rollups-childSentance": "Di più sui rollup ZK",
+ "layer-2-zk-rollups-childSentance": "Maggiori informazioni sui rollup ZK",
"layer-2-dyor-title": "Fai delle verifiche: i rischi del livello 2",
- "layer-2-dyor-1": "Poiché le catene di livello 2 ereditano la sicurezza da Ethereum, in un mondo ideale, sono sicure quanto Ethereum di L1. Tuttavia, molti progetti sono ancora giovani e in qualche modo sperimentali. Dopo anni di ricerca e sviluppo, nel 2021 sono state lanciate molte tecnologie L2 perlo scaling di Ethereum. Molti progetti si basano ancora su presupposti di fiducia, mentre lavorano per decentralizzare le proprie reti. Fai sempre delle verifiche per decidere se accettare gli eventuali rischi connessi.",
+ "layer-2-dyor-1": "Poiché le catene di livello 2 ereditano la sicurezza da Ethereum, in un mondo ideale, sono sicure quanto Ethereum di L1. Tuttavia, molti progetti sono ancora giovani e in qualche modo sperimentali. Dopo anni di ricerca e sviluppo, nel 2021 sono state lanciate molte tecnologie L2 per lo scaling di Ethereum. Molti progetti si basano ancora su presupposti di fiducia, mentre lavorano per decentralizzare le proprie reti. Fai sempre delle verifiche per decidere se accettare gli eventuali rischi connessi.",
"layer-2-dyor-2": "Per ulteriori informazioni sulla tecnologia, i rischi e i presupposti di fiducia dei livelli 2, consigliamo di dare un'occhiata a L2BEAT, che fornisce un quadro di valutazione completo dei rischi di ogni progetto.",
"layer-2-dyor-3": "Vai a L2BEAT",
"layer-2-use-layer-2-title": "Usa il livello 2",
"layer-2-use-layer-2-1": "Adesso che hai capito perché esiste il livello 2 e come funziona, inizia ad operare!",
- "layer-2-contract-accounts": "NOTA: Collegandosi a e usando il livello 2, è importante notare che controllerai l'indirizzo per il tuo conto EOA (un conto controllato da una singola chiave privata), proprio come sulla Rete Principale di Ethereum. Tuttavia, se stai usando il conto di un contratto, come Gnosis Safe o Argent, non avrai il controllo su questo indirizzo su un livello 2, finché non ridistribuirai il conto del tuo contratto a quell'indirizzo sul livello 2. Se stai collegando o inviando fondi al conto di un contratto e non controlli questo indirizzo per il conto del contratto, i tuoi fondi potrebbero esser perduti.",
+ "layer-2-contract-accounts": "NOTA: Collegandosi e utilizzando il livello 2, è importante notare che non controllerai l'indirizzo del tuo conto EOA (un conto in cui una singola chiave privata controlla il conto), proprio come sulla Rete Principale di Ethereum. Tuttavia, se stai utilizzando il conto di un contratto, come Gnosis Safe o Argent, non avrai il controllo su questo indirizzo su un livello 2, finché non distribuirai nuovamente il conto del tuo contratto a quell'indirizzo sul livello 2. Se ti stai collegando o stai inviando fondi al conto di un contratto e non hai il controllo su questo indirizzo per il conto del contratto, i tuoi fondi potrebbero andare perduti.",
"layer-2-use-layer-2-generalized-title": "Livelli 2 generalizzati",
"layer-2-use-layer-2-generalized-1": "I livelli 2 generalizzati si comportano proprio come Ethereum, ma sono più economici. Qualsiasi cosa tu possa fare sul livello 1 di Ethereum, puoi farlo anche sul livello 2. Molte dapp hanno già iniziato a migrare verso queste reti o hanno saltato la rete principale nel complesso per distribuire direttamente su un livello 2.",
"layer-2-use-layer-2-application-specific-title": "Livelli 2 specifici dell'applicazione",
@@ -66,15 +66,15 @@
"layer-2-sidechains-title": "Una nota su catene secondarie, validium e blockchain alternative",
"layer-2-sidechains-1": "Le catene secondarie e i validium sono blockchain che consentono alle risorse provenienti da Ethereum di varcare i confini ed essere usate su un'altra blockchain. Le catene secondarie e i validium sono eseguiti in parallelo con Ethereum e interagiscono con esso tramite i ponti, ma non ne ereditano la sicurezza o la disponibilità dei dati.",
"layer-2-sidechains-2": "Entrambi scalano similmente ai livelli 2: offrono minori commissioni di transazione e maggiore volume di transazione, ma hanno presupposti di fiducia differenti.",
- "layer-2-more-on-sidechains": "Ulteriori informazioni sulle catene secondarie",
- "layer-2-more-on-validiums": "Ulteriori informazioni sui Validium",
+ "layer-2-more-on-sidechains": "Maggiori informazioni sulle catene secondarie",
+ "layer-2-more-on-validiums": "Maggiori informazioni sui validium",
"layer-2-sidechains-4": "Alcune blockchain di livello 1 hanno un volume maggiore e commissioni di transazione inferiori a Ethereum. Questi livelli 1 alternativi hanno dovuto sacrificare la sicurezza o la decentralizzazione per potere ottenere maggiori transazioni al secondo e ridurre le commissioni di transazione.",
"layer-2-sidechains-5": "L'ecosistema di Ethereum è fermamente allineato sul fatto che lo scaling al livello 2 è l'unico modo per risolvere il trilemma di scalabilità, pur rimanendo decentralizzazione e sicurezza.",
"layer-2-onboard-title": "Come arrivare a un livello 2",
- "layer-2-onboard-1": "Esistono due modi principali per portare le tue risorse su un livello 2: collegare i fondi da Ethereum tramite uno smart contract o prelevarli su una borsa, direttamente alla rete di livello 2.",
+ "layer-2-onboard-1": "Esistono due modi principali per portare le tue risorse su un livello 2: collegare i fondi da Ethereum tramite un contratto intelligente o prelevarli su una borsa, direttamente alla rete di livello 2.",
"layer-2-onboard-wallet-title": "Fondi nel tuo portafoglio?",
"layer-2-onboard-wallet-1": "Se hai già i tuoi ETH nel tuo portafoglio, dovrai usare un ponte per spostarli dalla Rete Principale di Ethereum a un livello 2.",
- "layer-2-more-on-bridges": "Di più sui ponti",
+ "layer-2-more-on-bridges": "Maggiori informazioni sui ponti",
"layer-2-onboard-wallet-input-placeholder": "Seleziona il L2 verso cui effettuare il ponte",
"layer-2-onboard-wallet-selected-1": "Puoi connetterti a",
"layer-2-onboard-wallet-selected-2": "usando questi portafogli:",
@@ -100,19 +100,19 @@
"layer-2-faq-question-2-title": "Qual è la differenza tra i rollup ottimistici e a conoscenza zero?",
"layer-2-faq-question-2-description-1": "Sia i rollup ottimistici che a conoscenza zero impacchettano (o \"avvolgono\") centinaia di transazioni in una sola transazione sul livello 1. Le transazioni di rollup sono eseguite al di fuori del livello 1, ma i dati delle transazioni sono pubblicati nel livello 1.",
"layer-2-faq-question-2-description-2": "La differenza principale consiste in quali dati sono pubblicati al livello 1 e come sono verificati i dati. Le prove di validità (usate dai rollup a conoscenza zero) eseguono i calcoli al di fuori della catena e pubblicano una prova, mentre le prove di errore (usate dai rollup ottimistici) eseguono i calcoli solo sulla catena, quando vi è un sospetto di errore che deve essere verificato.",
- "layer-2-faq-question-2-description-3": "Al momento, gran parte dei rollup ZK sono specifici per applicazioni, rispetto ai rollup ottimistici, che sono stati largamente generalizzabili.",
- "layer-2-more-info-on-optimistic-rollups": "Ulteriori informazioni sui rollup ottimistici",
- "layer-2-more-info-on-zk-rollups": "Ulteriori informazioni sui rollup a conoscenza zero",
+ "layer-2-faq-question-2-description-3": "Al momento, gran parte dei rollup ZK sono specifici per le applicazioni, rispetto ai rollup ottimistici, che sono stati largamente generalizzabili.",
+ "layer-2-more-info-on-optimistic-rollups": "Maggiori informazioni sui rollup ottimistici",
+ "layer-2-more-info-on-zk-rollups": "Maggiori informazioni sui rollup a conoscenza zero (zero-knowledge)",
"layer-2-faq-question-3-title": "Lo scaling al livello 1 è possibile?",
- "layer-2-faq-question-3-description-1": "Sì. Correntemente, nalla tabella di marcia di Ethereum, vi sono piani per le catene di frammenti. Sebbene siano nella tabella di marcia, un ulteriore ridimensionamento tramite le reti di livello 2 è ancora necessario.",
- "layer-2-more-on-sharding": "Ulteriori informazioni sulla frammentazione",
+ "layer-2-faq-question-3-description-1": "Sì. Attualmente, nella tabella di marcia di Ethereum sono in programma delle catene di frammenti. Anche se sono nella tabella di marcia, è ancora necessario un'ulteriore ridimensionamento delle reti di livello 2.",
+ "layer-2-more-on-sharding": "Maggiori informazioni sulla frammentazione",
"layer-2-faq-question-4-title": "Quali sono i rischi con il livello 2?",
"layer-2-faq-question-4-description-1": "I progetti di livello 2 presentano rischi aggiuntivi rispetto al possesso di fondi e alla conclusione di transazioni direttamente sulla rete principale di Ethereum. Ad esempio, i sequenziatori potrebbero smettere di funzionare, causando un ritardo nell'accesso ai fondi.",
"layer-2-faq-question-4-description-2": "Ti invitiamo fare delle verifiche prima di trasferire fondi significativi a un livello 2. Per ulteriori informazioni sulla tecnologia, i rischi e i presupposti di fiducia dei livelli 2, consigliamo di dare un'occhiata a L2BEAT, che fornisce un quadro di valutazione completo dei rischi di ogni progetto.",
- "layer-2-faq-question-4-description-3": "I ponti della blockchain, che facilitano i trasferimenti di risorse al livello 2, sono nelle loro fasi iniziali di sviluppo e, il design ottimale del ponte potrebbe non esser ancora stato scoperto. Si sono verificate delle recenti hack ai ponti.",
+ "layer-2-faq-question-4-description-3": "I ponti della blockchain, che facilitano i trasferimenti di risorse al livello 2, sono nelle loro fasi iniziali di sviluppo ed è possibile che il design ottimale del ponte non sia ancora stato scoperto. Si sono verificate degli attacchi recenti ai ponti.",
"layer-2-faq-question-5-title": "Perché alcuni progetti del livello 2 non sono elencati qui?",
- "layer-2-faq-question-5-description-1": "Vogliamo assicurarci di elencare le migliori risorse possibili, così che gli utenti possano navigare per lo spazio del livello 2 in modo sicuro e comodo. Manteniamo un quadro di criteri per come sono valutati i progetti, per l'inclusione.",
- "layer-2-faq-question-5-view-listing-policy": "Visualizza qui la nostra politica di elenco del livello 2.",
+ "layer-2-faq-question-5-description-1": "Vogliamo assicurarci di elencare le migliori risorse possibili, così che gli utenti possano muoversi nello spazio del livello 2 in un modo sicuro e comodo. Manteniamo un quadro di criteri di valutazione dei progetti ai fini dell'inclusione.",
+ "layer-2-faq-question-5-view-listing-policy": "Visualizza qui la nostra politica di inserzione nel livello 2.",
"layer-2-faq-question-5-description-2": "Chiunque è libero di suggerire l'aggiunta di un livello 2 su ethereum.org. Se esiste un livello 2 che ci siamo persi, ti invitiamo di suggerirlo.",
"layer-2-further-reading-title": "Lettura consigliate",
"a-rollup-centric-ethereum-roadmap": "Una tabella di marcia di Ethereum incentrata sui rollup",
@@ -122,12 +122,12 @@
"scaling-layer-1-with-shard-chains": "Scaling del livello 1 con le catene di shard",
"understanding-rollup-economics-from-first-principals": "Comprendere l'economia dei rollup dalle basi",
"arbitrum-description": "Arbitrum è un Rollup Ottimistico che punta a dare la sensazione di interagire con Ethereum, ma con transazioni che costano una frazione di quanto costano sul L1.",
- "optimism-description": "Optimism è un rollup ottimistico equivalente all'EVM veloce, semplice e sicuro. Scala la tecnologia di Ethereum, ridimensionandone anche i valori, tramite il finanziamento retroattivo dei beni pubblici.",
- "boba-description": "Boba è un Rollup Ottimistico originariamente biforcato da Optimism ed è una soluzione di scaling che mira a ridurre le commissioni del carburante, migliorare il volume delle transazioni ed estendere le capacità degli smart contract.",
+ "optimism-description": "Optimism è un rollup ottimistico equivalente all'EVM veloce, semplice e sicuro. Scala la tecnologia di Ethereum ridimensionandone anche i valori tramite il finanziamento retroattivo di beni pubblici.",
+ "boba-description": "Boba è un Rollup Ottimistico, biforcato originariamente da Optimism, una soluzione di ridimensionamento mirata a ridurre le commissioni sul gas, migliorare il volume delle transazioni ed estendere le capacità dei contratti intelligenti.",
"loopring-description": "La soluzione di L2 zkRollup di Loopring mira a offrire le stesse garanzie di sicurezza della rete principale di Ethereum, con un grande aumento di scalabilità: volume aumentato del 1000x e costo ridotto allo 0,1% di L1.",
"zksync-description": "zkSync è una piattaforma di rollup zk incentrata sull'utente prodotta da Matter Labs. È una soluzione di scalabilità per Ethereum, già live sulla rete principale di Ethereum. Supporta pagamenti, scambi di token e conio di NFT.",
"zkspace-description": "La piattaforma di ZKSpace consiste in tre parti principali: una DEX AMM di Livello 2 che usa la tecnologia di Rollup ZK detta ZKSwap, un servizio di pagamento detto ZKSquare e un mercato di NFT detto ZKSea.",
- "aztec-description": "Aztec Network è il primo rollup zk privato su Ethereum, che consente alle applicazioni decentralizzate di accedere alla privacy e di scalare.",
+ "aztec-description": "Aztec Network è il primo rollup zk privato su Ethereum, che consente alle applicazioni decentralizzate di avere accesso alla privacy e di scalare.",
"layer-2-note": "Nota:",
"layer-2-ecosystem-portal": "Portale dell'Ecosistema",
"layer-2-token-lists": "Elenchi di Token",
diff --git a/src/intl/it/page-run-a-node.json b/src/intl/it/page-run-a-node.json
index aca58c5514c..86b488b2881 100644
--- a/src/intl/it/page-run-a-node.json
+++ b/src/intl/it/page-run-a-node.json
@@ -31,7 +31,7 @@
"page-run-a-node-buy-fully-loaded-plug-and-play": "Queste soluzioni sono compatte ma provviste di tutto il necessario.",
"page-run-a-node-censorship-resistance-title": "Resistenza alla censura",
"page-run-a-node-censorship-resistance-preview": "Assicurati l'accesso quando ne hai bisogno, senza censure.",
- "page-run-a-node-censorship-resistance-1": "Un nodo di terze parti potrebbe scegliere di rifiutare le transazioni da indirizzi IP specifici o che involgono conti specifici, impedendoti potenzialmente di usare la rete quando ti serve. ",
+ "page-run-a-node-censorship-resistance-1": "Un nodo di terze parti potrebbe scegliere di rifiutare le transazioni da indirizzi IP specifici o che coinvolgono conti specifici, impedendoti potenzialmente di usare la rete quando ti serve. ",
"page-run-a-node-censorship-resistance-2": "Avere il proprio nodo a cui inviare le transazioni ti garantisce di poter trasmettere la tua transazione al resto della rete in pari in qualsiasi momento.",
"page-run-a-node-community-title": "Trova qualcuno che ti aiuti",
"page-run-a-node-community-description-1": "Le piattaforme online come Discord o Reddit, ospitano un gran numero di sviluppatori della community, desiderosi di aiutarti con qualsiasi domanda ti possa venire in mente.",
@@ -91,7 +91,7 @@
"page-run-a-node-participate-2": "Se sei un possessore, porta valore ai tuoi ETH supportando la salute e la decentralizzazione della rete e assicurati di avere voce in capitolo nel suo futuro.",
"page-run-a-node-privacy-title": "Privacy e sicurezza",
"page-run-a-node-privacy-preview": "Smettila di far trapelare le tue informazioni personali a nodi di terze parti.",
- "page-run-a-node-privacy-1": "Quando si inviano transazioni utilizzando i nodi pubblici, i dati personali possono trapelare a questi servizi di terze parti, ad esemopio il tuo indirizzo IP o gli indirizzi Ethereum che possiedi.",
+ "page-run-a-node-privacy-1": "Quando si inviano transazioni utilizzando i nodi pubblici, i dati personali possono trapelare a questi servizi di terze parti, ad esempio il tuo indirizzo IP o gli indirizzi Ethereum che possiedi.",
"page-run-a-node-privacy-2": "Puntando i portafogli compatibili al tuo nodo, puoi usare il tuo portafoglio per interagire privatamente e in sicurezza con la blockchain.",
"page-run-a-node-privacy-3": "Inoltre, se un nodo malevolo distribuisce una transazione non valida, il tuo nodo si limiterà a ignorarla. Ogni transazione è verificata localmente sulla tua macchina, quindi, non devi affidarti a nessuno.",
"page-run-a-node-rasp-pi-title": "Una nota su Raspberry Pi (processore ARM)",
@@ -120,7 +120,7 @@
"page-run-a-node-voice-your-choice-title": "Dai voce alla tua scelta",
"page-run-a-node-voice-your-choice-preview": "Non rinunciare al controllo in caso di fork.",
"page-run-a-node-voice-your-choice-1": "In caso di fork della catena, ovvero qualora emergessero due catene con due serie di regole diverse, l'esecuzione del proprio nodo garantisce la possibilità di scegliere quale set di regole supportare. Sta a te decidere se adeguarti o meno alle nuove regole e se supportare o meno i cambiamenti proposti.",
- "page-run-a-node-voice-your-choice-2": "Se stai facendo staking con ETH, l'esecuzione del tuo nodo ti consente di scegliere il tuo client, per minimizzare il rischio di slashing e reagire al fluttuare delle richieste della rete nel tempo. Lo staking con una terza parte costringe a rinunciare al voto su quale client ritieni sia la scelta migliore.",
+ "page-run-a-node-voice-your-choice-2": "Se stai facendo staking con gli ETH, l'esecuzione del tuo nodo ti consente di scegliere il tuo client, minimizzare il rischio di slashing e reagire alle richieste fluttuanti della rete nel tempo. Lo staking con una terza parte fa perdere il tuo voto su quale client ritieni sia la scelta migliore.",
"page-run-a-node-what-title": "Cosa significa \"eseguire un nodo\"?",
"page-run-a-node-what-1-subtitle": "Eseguire il software.",
"page-run-a-node-what-1-text": "Conosciuto come \"client\", questo software scarica una copia della blockchain di Ethereum e verifica la validità di ogni blocco, quindi la mantiene aggiornata con nuovi blocchi e transazioni e aiuta gli altri a scaricare e aggiornare le proprie copie.",
@@ -129,9 +129,9 @@
"page-run-a-node-what-3-subtitle": "Mentre si è online.",
"page-run-a-node-what-3-text": "Eseguire un nodo Ethereum può sembrare complicato all'inizio, ma è semplicemente l'atto di eseguire continuamente il software client su un computer mentre è connesso a Internet. Mentre è offline, il tuo nodo sarà semplicemente inattivo fino a quando non tornerà online e si metterà al passo con le ultime modifiche.",
"page-run-a-node-who-title": "Chi dovrebbe eseguire un nodo?",
- "page-run-a-node-who-preview": "Chiunque! I nodi non sono riservati a miner e validatori. Chiunque può eseguire un nodo—non occorre nemmeno disporre di ETH.",
- "page-run-a-node-who-copy-1": "Non è necessario fare stake con gli ETH o essere un miner per eseguire un nodo. Infatti, sono tutti gli altri nodi su Ethereum a considerare responsabili i miner e i validatori.",
- "page-run-a-node-who-copy-2": "Forse non otterrai le ricompense finanziarie guadagnate da validatori e miner, ma la gestione di un nodo offre agli utenti di Ethereum molti altri benefici utili, tra cui la privacy, la sicurezza, la minore dipendenza da server di terze parti, la resistenza alla censura nonché una migliore salute e decentralizzazione della rete.",
+ "page-run-a-node-who-preview": "Tutti! I nodi non sono solo per i validatori di Proof of Stake. Chiunque può eseguire un nodo—non occorre nemmeno disporre di ETH.",
+ "page-run-a-node-who-copy-1": "Non è necessario che tu metta ETH in staking per operare un nodo. Difatti, ogni altro nodo su Ethereum considera responsabili i validatori.",
+ "page-run-a-node-who-copy-2": "Forse non otterrai le ricompense finanziarie guadagnate da validatori, ma l'esecuzione di un nodo offre agli utenti di Ethereum molti altri benefici utili, tra cui la privacy, la sicurezza, la minore dipendenza da server di terze parti, la resistenza alla censura nonché una migliore salute e decentralizzazione della rete.",
"page-run-a-node-who-copy-3": "Avere il proprio nodo significa che non occorre fare affidamento sulle informazioni sullo stato della rete fornite da una terza parte.",
"page-run-a-node-who-copy-bold": "Non fidarti. Verifica.",
"page-run-a-node-why-title": "Perché eseguire un nodo?"
diff --git a/src/intl/it/page-stablecoins.json b/src/intl/it/page-stablecoins.json
index 653923e7e8e..16217da8ea5 100644
--- a/src/intl/it/page-stablecoins.json
+++ b/src/intl/it/page-stablecoins.json
@@ -19,7 +19,7 @@
"page-stablecoins-accordion-buy-exchanges-title": "Borse popolari",
"page-stablecoins-accordion-buy-requirement-1": "Borse e portafogli di criptovalute",
"page-stablecoins-accordion-buy-requirement-1-description": "Controlla quali servizi puoi usare in base al luogo in cui vivi",
- "page-stablecoins-accordion-buy-requirements-description": "Un account con una borsa o un portafoglio da cui puoi acquistare direttamente criptovalute. Potresti già averne usato uno per ottenere degli ETH. Controlla quali servizi puoi utilizzare nella località in cui vivi.",
+ "page-stablecoins-accordion-buy-requirements-description": "Un conto con una borsa o un portafoglio da cui puoi acquistare direttamente le criptovalute. Potresti averne già usato qualcuno per ottenere degli ETH. Controlla quali servizi puoi utilizzare dove vivi.",
"page-stablecoins-accordion-buy-text-preview": "Molte borse e portafogli ti permettono di acquistare direttamente stablecoin. Potrebbero essere applicate restrizioni geografiche.",
"page-stablecoins-accordion-buy-title": "Acquista",
"page-stablecoins-accordion-buy-warning": "Le borse centralizzate potrebbero quotare solo stablecoin ancorati al valore di valute nazionali come USDC, Tether o altre. Potresti non essere in grado di acquistarli direttamente, ma dovresti essere in grado di scambiarli a fronte di ETH o altre criptovalute che puoi acquistare sulla piattaforma.",
@@ -59,7 +59,7 @@
"page-stablecoins-algorithmic-pro-1": "Non servono garanzie.",
"page-stablecoins-algorithmic-pro-2": "Controllato da un algoritmo pubblico.",
"page-stablecoins-bank-apy": "0,05%",
- "page-stablecoins-bank-apy-source": "Tasso di interesse medio riconosciuto dalle banche ai titolari di conti correnti base negli USA.",
+ "page-stablecoins-bank-apy-source": "Il tasso medio pagato dalle banche sui conti di risparmio di base, federalmente iscritti, negli USA.",
"page-stablecoins-bank-apy-source-link": "Fonte",
"page-stablecoins-bitcoin-pizza": "La famigerata Pizza Bitcoin",
"page-stablecoins-bitcoin-pizza-body": "Nel 2010, qualcuno ha comprato 2 pizze pagandole 10.000 bitcoin. A quei tempi il valore era pari a circa 41 dollari. Ad oggi, equivarrebbero a milioni di dollari. Ci sono altri esempi di transazioni non proprio vantaggiose nella storia di Ethereum. Gli stablecoin risolvono questo problema, così puoi gustarti una buona pizza senza perdere ETH.",
@@ -70,7 +70,7 @@
"page-stablecoins-crypto-backed-description": "Questi stablecoin sono legati ad altre criptovalute, come ETH. Il loro prezzo dipende dal valore della risorsa sottostante (o garanzia), che può essere volatile. Siccome il valore di ETH può fluttuare, per questi stablecoin servono garanzie extra, per essere sicuri che il prezzo rimanga il più stabile possibile. Si potrebbe dire che il valore di 1$ di uno stablecoin basato su criptovaluta ha una risorsa criptovaluta sottostante del valore di almeno 2$. Quindi, se il prezzo di ETH dovesse scendere, dovranno essere utilizzati più ETH per sostenere il prezzo dello stablecoin; in caso contrario, lo stablecoin perderebbe il proprio valore.",
"page-stablecoins-crypto-backed-pro-1": "Trasparenti e completamente decentralizzati.",
"page-stablecoins-crypto-backed-pro-2": "Trasformabili rapidamente in altre criptovalute.",
- "page-stablecoins-crypto-backed-pro-3": "Nessun custode esterno; tutte le risorse sono controllate da account Ethereum.",
+ "page-stablecoins-crypto-backed-pro-3": "Nessun custode esterno: tutte le risorse sono controllate dai conti di Ethereum.",
"page-stablecoins-dai-banner-body": "Il Dai è probabilmente lo stablecoin decentralizzato più famoso. Il suo valore è circa di un dollaro ed è ampiamente accettato nelle dapp.",
"page-stablecoins-dai-banner-learn-button": "Scopri di più sul Dai",
"page-stablecoins-dai-banner-swap-button": "Scambia ETH per Dai",
@@ -116,7 +116,7 @@
"page-stablecoins-stablecoins-dapp-description-2": "Presta stablecoin e guadagna interessi e $COMP, il token proprietario di Compound.",
"page-stablecoins-stablecoins-dapp-description-3": "Piattaforma di trading dove puoi guadagnare interessi sui tuoi Dai e USDC.",
"page-stablecoins-stablecoins-dapp-description-4": "App progettata per risparmiare Dai.",
- "page-stablecoins-stablecoins-feature-1": "Gli stablecoin sono globali e possono essere inviati su internet. Una volta che hai un account Ethereum, sono semplici da ricevere o da inviare.",
+ "page-stablecoins-stablecoins-feature-1": "Gli stablecoin sono globali e possono essere inviati via Internet. Una volta ottenuto un conto di Ethereum, sono semplici da ricevere o inviare.",
"page-stablecoins-stablecoins-feature-2": "La domanda di stablecoin è alta, quindi puoi guadagnare interessi prestando i tuoi. Assicurati di essere a conoscenza dei rischi prima di procedere al prestito.",
"page-stablecoins-stablecoins-feature-3": "Gli stablecoin sono scambiabili con ETH e altri token Ethereum. Molte dapp si basano su stablecoin.",
"page-stablecoins-stablecoins-feature-4": "Gli stablecoin sono protetti dalla crittografia. Nessuno può fare transazioni per tuo conto.",
diff --git a/src/intl/it/page-staking-deposit-contract.json b/src/intl/it/page-staking-deposit-contract.json
index 14054e75f52..e28ef31a749 100644
--- a/src/intl/it/page-staking-deposit-contract.json
+++ b/src/intl/it/page-staking-deposit-contract.json
@@ -18,7 +18,7 @@
"page-staking-deposit-contract-reveal-address-btn": "Rivela indirizzo",
"page-staking-deposit-contract-staking": "Per fare staking con i tuoi ETH in Eth2 devi utilizzare il prodotto launchpad dedicato e seguire le istruzioni. L'invio di ETH all'indirizzo di questa pagina non ti renderà un staker e produrrà una transazione non riuscita.",
"page-staking-deposit-contract-staking-check": "Controlla queste fonti",
- "page-staking-deposit-contract-staking-check-desc": "È facile imbattersi in truffe e account fasulli. Per sicurezza, confronta l'indirizzo di staking Eth2 che stai utilizzando con l'indirizzo presente su questa pagina. Consigliamo inoltre di verificarlo con altre fonti affidabili.",
+ "page-staking-deposit-contract-staking-check-desc": "Immaginiamo che ci siano molti indirizzi falsi e truffe là fuori. Per sicurezza, confronta l'indirizzo del contratto di staking che stai usando rispetto all'indirizzo su questa pagina. Consigliamo di verificare anche con altre fonti affidabili.",
"page-staking-deposit-contract-staking-more-link": "Maggiori informazioni sullo staking",
"page-staking-deposit-contract-stop-reading": "Interrompi lettura",
"page-staking-deposit-contract-subtitle": "Questo è l'indirizzo del contratto per lo staking Eth2. Usa questa pagina per confermare che stai inviando fondi all'indirizzo corretto quando fai staking.",
diff --git a/src/intl/it/page-staking.json b/src/intl/it/page-staking.json
index 5221e603293..2dde6e6944c 100644
--- a/src/intl/it/page-staking.json
+++ b/src/intl/it/page-staking.json
@@ -10,7 +10,7 @@
"page-staking-check-address": "Controlla l'indirizzo del deposito",
"page-staking-deposit-address": "Controlla l'indirizzo di deposito",
"page-staking-deposit-address-desc": "Se hai già seguito le istruzioni di configurazione del launchpad, saprai che è necessario inviare una transazione al contratto di deposito di staking. Ti consigliamo di controllare l'indirizzo con molta attenzione. Puoi trovare l'indirizzo ufficiale su ethereum.org e una serie di altri siti attendibili.",
- "page-staking-description": "Per staking si intende l'atto di depositare 32 ETH per attivare il software di convalida. Come validatore sarai responsabile dell'archiviazione dei dati, dell'elaborazione delle transazioni e dell'aggiunta di nuovi blocchi alla blockchain. Questo manterrà Ethereum sicura per tutti e ti farà guadagnare ulteriori ETH. Questo processo, detto proof of stake, viene introdotto con la beacon chain.",
+ "page-staking-description": "Lo staking è l'atto di depositare 32 ETH per attivare il software del validatore. In qualità di validatore, sarai responsabile dell'archiviazione dei dati, dell'elaborazione delle transazioni e dell'aggiunta di nuovi blocchi alla blockchain. Questo proteggerà Ethereum per tutti e ti farà guadagnare nuovi ETH nel processo.",
"page-staking-hero-title": "Come fare staking con i tuoi ETH",
"page-staking-hero-header": "Ottieni ricompense proteggendo Ethereum",
"page-staking-hero-subtitle": "Lo staking è un bene pubblico per l'ecosistema di Ethereum. Qualsiasi utente con qualsiasi quantità di ETH può aiutare a proteggere la rete e ottenere ricompense nel processo.",
@@ -139,7 +139,7 @@
"page-staking-section-comparison-rewards-title": "Ricompense",
"page-staking-section-comparison-solo-rewards-li1": "Ricompense massime: ricevi ricompense complete direttamente dal protocollo",
"page-staking-section-comparison-solo-rewards-li2": "Otterrai ricompense per il batching delle transazioni in un nuovo blocco o aver verificato il lavoro di altri validatori per mantenere in sicurezza l'esecuzione della catena",
- "page-staking-section-comparison-solo-rewards-li3": "Dopo La Fusione riceverai le commissioni di transazione non bruciate per i blocchi che proponi",
+ "page-staking-section-comparison-solo-rewards-li3": "Inoltre, riceverai le commissioni di transazione non bruciate per i blocchi che proponi",
"page-staking-section-comparison-saas-rewards-li1": "Di solito prevede le ricompense complete del protocollo, meno la commissione mensile per le operazioni del nodo",
"page-staking-section-comparison-saas-rewards-li2": "I dashboard spesso consentono di tracciare facilmente il client del validatore",
"page-staking-section-comparison-pools-rewards-li1": "Gli staker in pool maturano le ricompense diversamente a seconda di quale metodo di staking in pool è stato scelto",
@@ -152,7 +152,7 @@
"page-staking-section-comparison-saas-risks-li1": "Gli stessi rischi come staking in solo, più il rischio della controparte del fornitore del servizio",
"page-staking-section-comparison-saas-risks-li2": "L'uso delle tue chiavi di firma è affidato a qualcun altro, che potrebbe agire malevolmente",
"page-staking-section-comparison-pools-risks-li1": "I rischi variano a seconda del metodo usato",
- "page-staking-section-comparison-pools-risks-li2": "In generale, i rischi consistono in una combinazione di controparti, contratti intelligenti e rischi di esecuzione",
+ "page-staking-section-comparison-pools-risks-li2": "In generale, i rischi consistono in una combinazione di controparti, contratti intelligenti e rischi d'esecuzione",
"page-staking-section-comparison-requirements-title": "Requisiti",
"page-staking-section-comparison-solo-requirements-li1": "Devi depositare 32 ETH",
"page-staking-section-comparison-solo-requirements-li2": "Mantieni l'hardware che opera sia un client di esecuzione che un client di consenso di Ethereum, mentre è connesso a Internet",
@@ -163,15 +163,27 @@
"page-staking-section-comparison-pools-requirements-li1": "Requisiti di ETH inferiori, alcuni progetti richiedono appena 0,01 ETH",
"page-staking-section-comparison-pools-requirements-li2": "Deposita direttamente dal tuo portafoglio a diverse piattaforme di staking in pool o semplicemente scambia uno dei token di liquidità di staking",
"page-staking-faq-1-question": "Cos'è un validatore?",
- "page-staking-faq-1-answer": "Un validatore è un'entità virtuale che risiede sulla Beacon Chain e partecipa al consenso del protocollo di Ethereum. I validatori sono rappresentati da un saldo, una chiave pubblica e altre proprietà. Un client del validatore è il software che agisce per conto del validatore detenendone e usandone la chiave privata. Un singolo client del validatore può detenere molte coppie di chiavi, controllando molti validatori.",
+ "page-staking-faq-1-answer": "Un validatore è un'entità virtuale che risiede su Ethereum e partecipa al consenso del protocollo di Ethereum. I validatori sono rappresentati da un saldo, una chiave pubblica e altre proprietà. Un client del validatore è il software che agisce per conto del validatore, detenendone e usandone la chiave privata. Un singolo client del validatore può detenere molte coppie di chiavi, controllando diversi validatori.",
"page-staking-faq-2-question": "Perché devo mettere a disposizione fondi?",
"page-staking-faq-2-answer": "Un validatore ha l'abilità di proporre e attestare ai blocchi per la rete. Per impedire i comportamenti disonesti, gli utenti devono avere i propri fondi in staking. Questo consente al protocollo di penalizzare gli attori malevoli. Lo staking è un mezzo per mantenerti onesto, poiché le tue azioni avranno conseguenze finanziarie.",
"page-staking-faq-3-question": "Posso acquistare \"Eth2\"?",
- "page-staking-faq-3-answer-p1": "Non esiste alcun token \"Eth2\" nativo al protocollo, poiché l'ether del token nativo (ETH) non cambierà con la transizione al proof of stake. Scopri di più su La Fusione",
+ "page-staking-faq-3-answer-p1": "Non esiste un token 'Eth2' nativo al protocollo, poiché il token nativo \"ether\" (ETH) non è cambiato quando Ethereum è passato al proof-of-stake.",
"page-staking-faq-3-answer-p2": "Esistono dei token/ticker derivati che potrebbero rappresentare gli ETH in staking (es., rETH da Rocket Pool, stETH da Lido, ETH2 da Coinbase). Scopri di più sui pool di staking",
"page-staking-faq-4-question": "Lo staking è già attivo?",
- "page-staking-faq-4-answer-p1": "Sì e no. Lo staking è attivo dall'1 dicembre 2020, ma fino alla Fusione, il consenso di proof-of-stake rimane isolato sulla propria catena, mentre la rete di Ethereum esistente come la conosciamo continua a operare usando il proof-of-work. Queste due catene nascono separate, ma con La Fusione il proof-of-work sarà completamente obsoleto e da quel momento il proof-of-stake diverrà il solo mezzo di consenso.",
- "page-staking-faq-4-answer-p2": "Questo significa che lo staking è attualmente attivo per gli utenti per depositare i propri ETH, eseguire un client del validatore e iniziare a guadagnare ricompense. Dopo La Fusione, gli staker otterranno ricompense maggiori, mentre i validatori iniziano a elaborare le transazioni e guadagnano mance sulle commissioni, oltre alle ricompense del protocollo. Dopo l'aggiornamento Shanghai (pianificato per seguire La Fusione di qualche mese), gli staker potranno poi prelevare le ricompense e i fondi dal saldo del proprio validatore.",
+ "page-staking-faq-4-answer-p1": "Sì. Lo staking è attivo dall'1 dicembre 2020",
+ "page-staking-faq-4-answer-p2": "Ciò significa che lo staking è correntemente attivo e che gli utenti possono depositare i propri ETH, operare un client del validatore e iniziare a guadagnare ricompense. Dopo l'aggiornamento Shanghai, poi, gli staker potranno prelevare le ricompense e i fondi dal saldo del loro validatore.",
+ "page-staking-further-reading-1-link": "Perché il Proof of Stake (Nov 2020)",
+ "page-staking-further-reading-author-vitalik-buterin": "Vitalik Buterin",
+ "page-staking-further-reading-2-link": "Logica progettuale di Serenity",
+ "page-staking-further-reading-3-link": "FAQ sul Proof of Stake (Dic 2017)",
+ "page-staking-further-reading-4-link": "Novità su Eth2",
+ "page-staking-further-reading-4-author": "Ben Edgington",
+ "page-staking-further-reading-5-link": "Finalizzato n. 33, il livello di consenso di Ethereum (Gen 2022)",
+ "page-staking-further-reading-5-author": "Danny Ryan",
+ "page-staking-further-reading-6-link": "Post del validatore",
+ "page-staking-further-reading-7-link": "Knowledge base di Beaconcha.in",
+ "page-staking-further-reading-8-link": "Materiale didattico fornito dalla community di Beaconcha.in",
+ "page-staking-further-reading-9-link": "FAQ sul Launchpad di Staking di Ethereum",
"page-staking-toc-how-to-stake-your-eth": "Come fare staking con i tuoi ETH",
"page-staking-toc-comparison-of-options": "Confronto delle opzioni di staking",
"page-staking-toc-faq": "Domande frequenti",
diff --git a/src/intl/it/page-upgrades-get-involved-bug-bounty.json b/src/intl/it/page-upgrades-get-involved-bug-bounty.json
index 1d34084aecc..ca120b24f68 100644
--- a/src/intl/it/page-upgrades-get-involved-bug-bounty.json
+++ b/src/intl/it/page-upgrades-get-involved-bug-bounty.json
@@ -68,7 +68,7 @@
"page-upgrades-bug-bounty-type-4": "Incongruenze di calcolo o dei parametri",
"page-upgrades-bug-bounty-types": "Tipi di bug",
"page-upgrades-bug-bounty-validity": "In ambito",
- "page-upgrades-bug-bounty-validity-desc": "Il nostro programma bug bounty si estende end-to-end: dalla solidità dei protocolli (come il modello di consenso della blockchain, i protocolli via cavo e p2p, il Poof of Work, il Poof of stake, ecc.) e la conformità del protocollo/implementazione alla sicurezza della rete e all'integrità del consenso. Fanno parte del programma anche la classica sicurezza del client nonché la sicurezza dei primitivi crittografici. In caso di dubbi, invia un'email a bounty@ethereum.org.",
+ "page-upgrades-bug-bounty-validity-desc": "Il nostro programma bug bounty si estende end-to-end: dalla solidità dei protocolli (come il modello di consenso della blockchain, i protocolli via cavo e p2p, proof-of-stake, ecc.) e la conformità del protocollo/implementazione alla sicurezza della rete e all'integrità del consenso. Fanno parte del programma anche la classica sicurezza del client nonché la sicurezza dei primitivi crittografici. In caso di dubbi, invia un'email a bounty@ethereum.org.",
"page-upgrades-bug-bounty-card-critical": "Critico",
"page-upgrades-bug-bounty-card-critical-risk": "Invia bug a rischio critico",
"page-upgrades-bug-bounty-card-h2": "Medio",
@@ -97,6 +97,6 @@
"page-upgrades-bug-bounty-card-subheader-2": "Esempio",
"page-upgrades-bug-bounty-card-text": "Un utente malintenzionato potrebbe impostare un nodo su uno stato che faccia fallire una su cento attestazioni eseguite da un validatore",
"page-upgrades-bug-bounty-card-text-1": "Un utente malintenzionato può condurre con successo attacchi eclipse su nodi con Id peer aventi byte a 4 zeri iniziali",
- "page-upgrades-bug-bounty-card-text-2": "C'è un bug di consenso tra due client, ma è difficile o poco pratico per un utente malintenzionato attivare l'evento.",
- "page-upgrades-bug-bounty-card-text-3": "C'è un'esecuzione remota del codice in un client di maggioranza ed è banale che un utente malevolo inneschi la vulnerabilità."
+ "page-upgrades-bug-bounty-card-text-2": "Gli utenti malintenzionati possono eseguire correttamente la partizione di grandi parti della rete, ed è banale che un utente malintezionato inneschi la vulnerabilità",
+ "page-upgrades-bug-bounty-card-text-3": "L'utente malintenzionato può condurre con successo l'esecuzione del codice da remoto in un client di maggioranza ed è banale che un utente malintenzionato inneschi la vulnerabilità"
}
diff --git a/src/intl/it/page-upgrades-index.json b/src/intl/it/page-upgrades-index.json
index bf314405889..ac0b59c7fcd 100644
--- a/src/intl/it/page-upgrades-index.json
+++ b/src/intl/it/page-upgrades-index.json
@@ -9,41 +9,51 @@
"consensus-client-prysm-logo-alt": "Logo Prysm",
"consensus-client-teku-logo-alt": "Logo Teku",
"consensus-client-under-review": "Revisione e controllo in corso",
- "page-upgrades-answer-1": "Pensa alle modifiche lanciate come una serie di aggiornamenti, aggiunte per migliorare l'Ethereum che usiamo oggi. Questi includevano la creazione di una nuova catena, detta Beacon Chain, che agirà presto da motore di consenso per l'intera rete.",
- "page-upgrades-answer-2": "Sebbene la Beacon Chain sia nata come una catena separata, la Rete Principale esistente sarà 'fusa' con questo nuovo livello di consenso di proof-of-stake.",
- "page-upgrades-answer-4": "In altre parole, l'Ethereum che usiamo oggi alla fine incarnerà tutte le caratteristiche a cui puntiamo nella visione di Ethereum.",
- "page-upgrade-article-title-two-point-oh": "Due Punti Oh: La Catena Del Faro",
- "page-upgrade-article-title-beacon-chain-explainer": "Devi leggere prima la spiegazione della Beacon Chain Ethereum 2.0",
- "page-upgrade-article-title-sharding-consensus": "Consenso allo sharding",
+ "page-upgrades-answer-1": "La Beacon Chain è stata utilizzata come strumento per aggiornare la Rete Principale di Ethereum alla Fusione.",
+ "page-upgrades-answer-2": "Con La Fusione, Ethereum ha avuto il suo aggiornamento più sostanziale di sempre, scambiando il proof-of-work per un nuovo livello di consenso basato sul proof-of-stake.",
+ "page-upgrades-answer-4": "La Beacon Chain è stata utilizzata per sviluppare il consenso basato sul proof-of-stake che Ethereum utilizza oggi. Era eseguita separatamente dalla Rete Principale di Ethereum, così che gli sviluppatori potessero osservare il meccanismo di consenso in isolamento prima di utilizzarlo per coordinare le attività reali.",
+ "page-upgrade-article-author-ethmerge": "Ethmerge",
+ "page-upgrade-article-author-alchemy": "Alchemy",
+ "page-upgrade-article-author-consensys": "Consensys",
+ "page-upgrade-article-author-delphi-digital": "Delphi Digital",
"page-upgrade-article-author-ethereum-foundation": "Ethereum Foundation",
"page-upgrade-article-author-vitalik-buterin": "Vitalik Buterin",
"page-upgrade-article-author-ethos-dev": "Ethos.dev",
- "page-upgrade-article-author-delphi-digital": "Delphi Digital",
+ "page-upgrade-article-title-two-point-oh": "Due Punti Oh: La Catena Del Faro",
+ "page-upgrade-article-title-beacon-chain-explainer": "Devi leggere prima la spiegazione della Beacon Chain Ethereum 2.0",
+ "page-upgrade-article-title-sharding-consensus": "Consenso allo sharding",
"page-upgrade-article-title-sharding-is-great": "Perché lo sharding è fantastico: demistificare le proprietà tecniche",
"page-upgrade-article-title-rollup-roadmap": "Una roadmap centrata sul rollup",
"page-upgrade-article-title-hitchhikers-guide-to-ethereum": "La Guida per Autostoppisti A Ethereum",
+ "page-upgrade-article-title-ethmerge": "Ethmerge",
+ "page-upgrade-article-title-merge-is-coming": "La Fusione sta arrivando",
+ "page-upgrade-article-title-state-of-the-merge": "Lo stato della Fusione: un aggiornamento sulla Fusione di Ethereum al Proof of Stake nel 2022",
+ "page-upgrade-article-title-ropsten-merge-testnet": "Annuncio della rete di prova Ropsten per la Fusione",
+ "page-upgrade-article-title-execution-layer-specs": "Specifiche del livello di esecuzione",
+ "page-upgrade-article-title-consensus-layer-specs": "Specifiche del livello di consenso",
+ "page-upgrade-article-title-engine-api-specs": "Specifiche dell'Engine API",
"page-upgrades-beacon-chain-btn": "Maggiori informazioni sulla beacon chain",
- "page-upgrades-beacon-chain-date": "La beacon chain è live a partire dal 1 dicembre 2020.",
- "page-upgrades-beacon-chain-desc": "La Beacon Chain ha portato lo staking su Ethereum, gettato le fondamenta per gli aggiornamenti futuri e coordinerà presto il nuovo sistema.",
+ "page-upgrades-beacon-chain-date": "La Beacon Chain è disponibile dall'1 dicembre 2020",
+ "page-upgrades-beacon-chain-desc": "La Beacon Chain ha portato lo staking su Ethereum e ha gettato le fondamenta per gli aggiornamenti futuri. Coordina il nuovo Ethereum di proof-of-stake.",
"page-upgrades-beacon-chain-estimate": "La beacon chain è live",
"page-upgrades-beacon-chain-title": "La Beacon Chain",
"page-upgrades-bug-bounty": "Visualizza il programma bug bounty",
"page-upgrades-clients": "Controlla i client di consenso (precedentemente noti come client 'Eth2')",
"page-staking-deposit-contract-title": "Controlla l'indirizzo del contratto di deposito",
"page-upgrades-dive": "Dettagli sulla vision",
- "page-upgrades-dive-desc": "Come faremo a rendere Ethereum più scalabile, sicura e sostenibile, mantenendo il concetto fondamentale di decentralizzazione?",
+ "page-upgrades-dive-desc": "Come stiamo rendendo Ethereum più scalabile, sicura e sostenibile, mantenendo il concetto fondamentale di decentralizzazione?",
"page-upgrades-docking": "La fusione",
- "page-upgrades-merge-answer-1": "La Fusione è quando la Rete Principale inizierà a usare la Beacon Chain per il consenso e il proof-of-work sarà disattivato; e arriverà presto.",
+ "page-upgrades-merge-answer-1": "La Fusione ha avuto luogo quando la Rete Principale ha disattivato il proof-of-work e attivato il proof-of-stake, il 15 settembre 2022.",
"page-upgrades-merge-btn": "Maggiori informazioni sulla fusione",
- "page-upgrades-merge-desc": "La Rete Principale di Ethereum si 'fonderà' presto con la Beacon Chain di proof-of-stake, segnando la fine del mining ad elevato consumo energetico.",
- "page-upgrades-merge-estimate": "Stima: 2022",
+ "page-upgrades-merge-desc": "La Rete Principale di Ethereum si è fusa con la Beacon Chain di proof-of-stake, segnando la fine del mining ad alto consumo energetico.",
+ "page-upgrades-merge-estimate": "La Fusione è arrivata",
"page-upgrades-merge-mainnet": "Cos'è la rete principale?",
"page-upgrades-merge-mainnet-eth2": "Fondere la rete principale e la beacon chain",
"page-upgrades-eth-blog": "blog ethereum.org",
"page-upgrades-explore-btn": "Esplora gli aggiornamenti",
"page-upgrades-get-involved": "Partecipa all'aggiornamento di Ethereum",
"page-upgrades-get-involved-2": "Partecipa",
- "page-upgrades-head-to-ethresearch": "Vai a ethresear.ch",
+ "page-upgrades-head-to": "Vai a",
"page-upgrades-help": "Vuoi aiutare con gli aggiornamenti di Ethereum?",
"page-upgrades-help-desc": "Ci sono molte opportunità per collaborare agli aggiornamenti di Ethereum, aiutare nei test e anche guadagnare ricompense.",
"page-upgrades-index-staking": "Lo staking è realtà",
@@ -65,8 +75,8 @@
"page-upgrades-question-1-title": "Quando saranno disponibili gli aggiornamenti?",
"page-upgrades-question-1-desc": "Ethereum viene aggiornato progressivamente; gli aggiornamenti sono distinti e con date di arrivo differenti.",
"page-upgrades-question-2-title": "La Beacon Chain è una blockchain separata?",
- "page-upgrades-question-2-desc": "Non è accurato pensare a questo aggiornamento come una blockchain separata.",
- "page-upgrades-question-3-answer-2a": "Le specifiche de La Fusione sono state finalizzate ed è progettata per avere un impatto minimo sugli sviluppatori di dapp.",
+ "page-upgrades-question-2-desc": "Sì, la Beacon Chain era il nome dato a una blockchain di proof-of-stake parallela usata per aggiornare la Rete Principale di Ethereum. Ora esiste solo una blockchain, formata dalla fusione della blockchain originale di Ethereum e della Beacon Chain.",
+ "page-upgrades-question-3-answer-2a": "La Fusione ha avuto un impatto minimo sugli sviluppatori di dApp, che interagiscono ancora con Ethereum nello stesso modo.",
"page-upgrades-question-3-answer-2a-link": "La Fusione e gli sviluppatori di dapp",
"page-upgrades-question-3-answer-2b": "I piani di frammentazione sono ancora in fase di sviluppo, ma saranno progettati tenendo a mente i rollup del livello 2.",
"page-upgrades-layer-2-rollups": "Di più sui rollup di livello 2",
@@ -74,24 +84,22 @@
"page-upgrades-question-3-desc": "Non è necessario fare nulla in questo momento per prepararsi agli aggiornamenti.",
"page-upgrades-question-3-title": "Come posso prepararmi per gli aggiornamenti?",
"page-upgrades-question-4-answer-1": "Ogni volta che invii una transazione o usi una dapp oggi, stai usando il livello d'esecuzione, anche noto come Rete Principale.",
- "page-upgrades-question-4-answer-2": "Mainnet continuerà a funzionare normalmente fino al merge.",
- "page-upgrades-question-4-answer-3": "Dopo il Merge, i validatori proteggeranno l'intera rete tramite il proof-of-stake.",
+ "page-upgrades-question-4-answer-3": "Dalla Fusione, i validatori proteggono l'intera rete tramite il proof-of-stake.",
"page-upgrades-question-4-answer-6": "Chiunque può diventare validatore facendo staking con i propri ETH.",
"page-upgrades-question-4-answer-7": "Maggiori informazioni sullo staking",
- "page-upgrades-question-4-answer-8": "Gli aggiornamenti della Beacon Chain e della frammentazione non disturberanno il livello d'esecuzione (Rete Principale), essendo costruiti separatamente.",
"page-upgrades-question-4-title": "Cos'è il livello di esecuzione?",
- "page-upgrades-question-4-desc": "L'Ethereum Mainnet su cui effettui transazioni oggi è stato precedentemente definito 'Eth1'. Questo termine è stato gradualmente eliminato a favore di 'livello di esecuzione'.",
- "page-upgrades-question-5-answer-1": "Per diventare validatore sulla rete a tutti gli effetti, è necessario fare staking con 32 ETH. Se non ne hai così tanti o non vuoi fare staking con una cifra così alta, puoi unirti ai pool di staking, che ti permetteranno di utilizzare una cifra inferiore per lo staking e guadagnare frazioni delle ricompense totali.",
+ "page-upgrades-question-4-desc": "Prima della Fusione, la blockchain di Ethereum era talvolta definita \"Eth1\". Questo termine è stato gradualmente eliminato in favore del 'livello di esecuzione\".",
+ "page-upgrades-question-5-answer-1": "Per diventare un validatore sulla rete dovrai mettere in staking 32 ETH. Se non ne hai così tanti, o non vorresti mettere in staking una cifra così alta, puoi unirti ai pool di staking, che ti permetteranno di mettere in staking una cifra inferiore e di guadagnare frazioni delle ricompense totali.",
"page-upgrades-question-5-desc": "Dovrai usare il launchpad per lo staking o unirti a una staking pool.",
"page-upgrades-question-5-title": "Come si fa staking?",
"page-upgrades-question-6-answer-3": "Danny Ryan della Ethereum Foundation tiene la community regolarmente aggiornata:",
"page-upgrades-question-6-answer-4": "Ben Edgington di ConsenSys ha una newsletter settimanale sugli aggiornamenti di Ethereum:",
"page-upgrades-question-6-answer-5": "È inoltre possibile partecipare alla discussione sulla ricerca e lo sviluppo di Ethereum su ethresearch.ch.",
"page-upgrades-question-6-title": "Che cosa devo fare con la mia dapp?",
- "page-upgrades-question-6-desc": "La Fusione è stata progettata con l'obiettivo di minimizzare l'impatto sugli sviluppatori di dapp, sebbene ci siano alcune cose che vale la pena notare.",
- "page-upgrades-question-6-answer-1": "Alcune modifiche con La Fusione possono avere un impatto su certi tipi di applicazioni. Queste modifiche includono la struttura del blocco e i tempi, alcune modifiche all'opcode, sorgenti di casualità su catena e il concetto di finalizzazione dell'epoca.",
- "page-upgrades-question-6-answer-1-link": "Come La Fusione Influisce sul Livello di Applicazione di Ethereum",
- "page-upgrades-question-6-answer-2": "Gran parte delle applicazioni non sarà coinvolta, ma consigliamo agli sviluppatori di rimanere aggiornati sulle ultime novità sulla Fusione.",
+ "page-upgrades-question-6-desc": "La Fusione è stata progettata per avere un impatto minimo sugli sviluppatori di dapp, sebbene vi siano state alcune piccole modifiche che vale la pena notare.",
+ "page-upgrades-question-6-answer-1": "Gli sviluppatori di dapp che hanno familiarità con l'Ethereum precedente alla Fusione dovrebbero esser consapevoli di alcune modifiche. Queste includono la struttura e le tempistiche del blocco, alcune modifiche all'opcode, sorgenti di casualità sulla catena e il concetto di finalizzazione dell'epoca.",
+ "page-upgrades-question-6-answer-1-link": "Come la fusione ha influito sul livello applicativo di Ethereum",
+ "page-upgrades-question-6-answer-2": "Le applicazioni sono rimaste pressoché inalterate.",
"page-upgrades-question-7-desc": "Molti team da tutta la community stanno lavorando sui vari aggiornamenti di Ethereum.",
"page-upgrades-question-7-lighthouse": "Lighthouse",
"page-upgrades-question-7-lighthouse-lang": "(Implementazione rust)",
@@ -108,7 +116,7 @@
"page-upgrades-question-7-clients": "Scopri di più sui client Ethereum",
"page-upgrades-question-8-answer-1": "Gli aggiornamenti di Ethereum aiuteranno la scalabilità di Ethereum in modo decentralizzato, mantenendo la sicurezza e aumentando la sostenibilità.",
"page-upgrades-question-8-answer-2": "Forse il problema più evidente è che Ethereum deve essere in grado di gestire più di 15-45 transazioni al secondo. Ma gli aggiornamenti oggi si occupano anche di altri problemi con Ethereum.",
- "page-upgrades-question-8-answer-3": "La domanda sulla rete è così elevata che sta rendendo costoso l'uso di Ethereum. I nodi nella rete faticano per via delle dimensioni di Ethereum e della quantità di dati che i computer devono elaborare. L'algoritmo originale alla base della sicurezza e della decentralizzazione di Ethereum è ad alta intensità energetica e deve essere più ecosostenibile.",
+ "page-upgrades-question-8-answer-3": "Nei momenti di elevata domanda della rete, Ethereum è costoso da usare. I nodi nella rete faticano per via delle dimensioni di Ethereum e della quantità di dati che i computer devono elaborare. L'algoritmo originale alla base della sicurezza e della decentralizzazione di Ethereum era ad alta intensità energetica e doveva essere più ecosostenibile.",
"page-upgrades-question-8-answer-4": "Molti dei cambiamenti attuali sono sempre stati nella tabella di marcia di Ethereum, sin dal 2015. Ma le condizioni odierne stanno rendendo gli aggiornamenti ancora più necessari.",
"page-upgrades-question-8-answer-6": "Esplora la visione di Ethereum",
"page-upgrades-question-8-desc": "La rete Ethereum che utilizziamo oggi deve offrire una migliore esperienza agli utenti finali e ai partecipanti.",
@@ -128,14 +136,14 @@
"page-upgrades-question-10-answer-1-link": "Visualizza gli aggiornamenti",
"page-upgrades-question-10-answer-2": "Ma se hai seguito le discussioni, ecco come gli aggiornamenti si inseriscono nelle tabelle di marcia tecniche e un po' su come stanno cambiando.",
"page-upgrades-question-10-answer-3": "Fase 0 ha descritto il lavoro per portare live la Beacon Chain.",
- "page-upgrades-question-10-answer-5": "Fase 1 si concentrava originariamente sull'implementazione delle catene di frammenti, ma la priorità si è spostata 'alla fusione', il prossimo aggiornamento pianificato.",
- "page-upgrades-question-10-answer-6": "La fase 1.5 doveva inizialmente seguire l'implementazione delle shard, quando la Rete principale sarebbe stata aggiunta come ultimo frammento alla Beacon Chain. Tuttavia, con il progredire della tecnologia di rollup, la community di Ethereum ha accelerato l'abbandono del Proof of Work. La Rete principale sarà invece 'fusa' nella Beacon Chain e rimarrà come livello di esecuzione di Ethereum. Questo processo sarà un passo significativo verso un'Ethereum più sostenibile.",
- "page-upgrades-question-10-answer-7": "I piani riguardanti la Fase 2 sono stati un punto di intensa ricerca e discussione. Con La Fusione pianificata prima dello sharding e gli avanzamenti nelle soluzioni di livello 2, gli obiettivi sono passati a fornire una forma di frammentazione dei dati più semplificata per massimizzare l'efficienza dei rollup. I livelli 2 correnti consentono di scalare l'esecuzione delle transazioni e lo sharding consentirà l'archiviazione di prove per questi dati sul livello 1 in modo economico e scalabile.",
+ "page-upgrades-question-10-answer-5": "La Fase 1 si concentrava originariamente sull'implementazione delle catene di frammenti, ma la priorità si è spostata alla Fusione, avvenuta il 15 settembre 2022.",
+ "page-upgrades-question-10-answer-6": "La Fase 1.5 era originalmente pianificata per seguire le implementazioni dei frammenti quando la Rete Principale sarebbe stata aggiunta come ultimo frammento alla Beacon Chain. Tuttavia, al progredire della tecnologia dei rollup, la community di Ethereum ha invece accelerato l'abbandono del proof-of-work.",
+ "page-upgrades-question-10-answer-7": "I piani riguardanti la Fase 2 sono stati un punto di intensa ricerca e discussione. Con La Fusione alle spalle, e i progressi nelle soluzioni di livello 2, gli obiettivi sono passati a fornire una forma di frammentazione dei dati più semplificata per massimizzare l'efficienza dei rollup. Gli attuali livelli 2 consentono di ridimensionare l'esecuzione delle transazioni, e la frammentazione consentirà l'archiviazione di prove per questi dati sul livello 1 in modo economico e scalabile.",
"page-upgrades-question-10-answer-8": "Ulteriori informazioni su una tabella di marcia incentrata sul rollup",
"page-upgrades-question-11-title": "Posso acquistare Eth2?",
"page-upgrades-question-11-desc": "No. Non esiste alcun token Eth2 e i tuoi ETH non cambieranno dopo La Fusione.",
- "page-upgrades-question-11-answer-1": "Una delle forze trainanti dietro il rebrand di Eth2 era il comune equivoco secondo cui i titolari di ETH avrebbero dovuto migrarli dopo 'Ethereum 2.0'. Questo non è vero e non lo è mai stato. È ",
- "page-upgrades-question-11-answer-2": "una tecnica comune usata dai truffatori.",
+ "page-upgrades-question-11-answer-1": "Una delle forze trainanti del rebranding di Eth2 era il comune equivoco che i titolari di ETH dovessero migrare i propri ETH in 'ETH 2.0' dopo La Fusione o qualsiasi altro aggiornamento. Ciò non è vero e non lo è mai stato.",
+ "page-upgrades-question-11-answer-2": "Questa confusione è comunemente sfruttata dai truffatori.",
"page-upgrades-question-title": "Domande frequenti",
"page-upgrades-question3-answer-1": "I titolari di ETH non devono fare nulla. Gli ETH non dovranno esser cambiati o aggiornati. Ci sono più che certamente delle truffe che dicono altrimenti, quindi, fate attenione.",
"page-upgrades-scalable": "Più scalabile",
@@ -150,11 +158,11 @@
"page-upgrades-shard-title": "Sharding",
"page-upgrades-stay-up-to-date": "Segui gli aggiornamenti",
"page-upgrades-stay-up-to-date-desc": "Ricevi le ultime notizie dai ricercatori e sviluppatori che lavorano agli aggiornamenti di Ethereum.",
- "page-upgrades-sustainable-desc": "Ethereum deve essere migliore per l'ambiente; oggi la tecnologia richiede troppa potenza di calcolo ed energia.",
+ "page-upgrades-sustainable-desc": "Ethereum è stata ad alta intensità energetica fino a poco tempo fa. La transizione al proof-of-stake ha portato a una riduzione dell'energia della rete di oltre il 99,9%.",
"page-upgrades-take-part": "Partecipa alla ricerca",
"page-upgrades-take-part-desc": "I ricercatori e appassionati di Ethereum si incontrano qui per discutere degli sforzi di ricerca, inclusa qualsiasi cosa a riguardo degli aggiornamenti di Ethereum.",
"page-upgrades-the-upgrades": "Gli aggiornamenti di Ethereum",
- "page-upgrades-the-upgrades-desc": "Ethereum consiste in una serie di aggiornamenti che migliorano la scalabilità, sicurezza e sostenibilità della rete. Sebbene su ognuna si stia lavorando in parallelo, hanno certe dipendenze che determinano quando saranno distribuite.",
+ "page-upgrades-the-upgrades-desc": "Gli aggiornamenti di Ethereum mirano a migliorare la scalabilità, la sicurezza e la sostenibilità della rete. Ethereum ha recentemente subito alcuni importanti aggiornamenti di sicurezza e sostenibilità, e in futuro ne arriveranno degli altri, specialmente correlati alla scalabilità.",
"page-upgrades-unofficial-roadmap": "Questa non è una tabella di marcia ufficiale. Questa è come visualizziamo quanto sta succedendo in base alle informazioni là fuori. Ma questa è tecnologia, le cose possono cambiare in un istante. Quindi siete pregati di non leggere queste informazioni come cosa certa.",
"page-upgrades-upgrade-desc": "La rete Ethereum che tutti conosciamo e amiamo, solo più scalabile, più sicura e più sostenibile.",
"page-upgrades-upgrades": "Gli aggiornamenti di Ethereum",
@@ -170,9 +178,9 @@
"page-upgrades-vision-desc": "Per portare Ethereum nella rete principale e servire tutta l'umanità, dobbiamo rendere Ethereum più scalabile, sicura e sostenibile.",
"page-upgrades-vision-upper": "Visione di Ethereum",
"page-upgrades-what-happened-to-eth2-title": "Che è successo a 'Eth2?'",
- "page-upgrades-what-happened-to-eth2-1": "Il termine 'Eth2' sta venendo eliminato in preparazione alla fusione.",
+ "page-upgrades-what-happened-to-eth2-1": "Il termine 'Eth2' era comunemente usato prima della Fusione, ma è in fase di graduale eliminazione in favore di una terminologia più precisa.",
"page-upgrades-what-happened-to-eth2-1-more": "Maggiori informazioni sulla fusione.",
- "page-upgrades-what-happened-to-eth2-2": "Dopo aver fuso 'Eth1' ed 'Eth2' in una catena singola, non ci saranno più due reti di Ethereum distinte; ci sarà solo Ethereum.",
+ "page-upgrades-what-happened-to-eth2-2": "Dalla fusione di 'Eth1' ed 'Eth2', non esistono più due blockchain distinte di Ethereum; esiste solo Ethereum.",
"page-upgrades-what-happened-to-eth2-3": "Per limitare la confusione, la community ha aggiornato questi termini:",
"page-upgrades-what-happened-to-eth2-3-1": "'Eth1' è ora il 'livello d'esecuzione' che gestisce le transazioni e l'esecuzione.",
"page-upgrades-what-happened-to-eth2-3-2": "'Eth2' è ora il 'livello di consenso', che gestisce il consenso di proof-of-stake.",
diff --git a/src/intl/it/page-wallets.json b/src/intl/it/page-wallets.json
index d03e37e0d92..f4c728c716a 100644
--- a/src/intl/it/page-wallets.json
+++ b/src/intl/it/page-wallets.json
@@ -1,23 +1,23 @@
{
- "page-wallets-accounts-addresses": "Portafogli, account e indirizzi",
- "page-wallets-accounts-addresses-desc": "Vale la pena capire le differenze tra alcuni termini chiave.",
- "page-wallets-accounts-ethereum-addresses": "Un conto Ethereum è associato a un indirizzo Ethereum, proprio come una casella di posta è associata a un indirizzo e-mail. Puoi usarlo per inviare fondi a un conto.",
+ "page-wallets-accounts-addresses": "Portafogli, conti e indirizzi",
+ "page-wallets-accounts-addresses-desc": "Vale la pena di comprendere le differenze tra alcuni termini chiave.",
+ "page-wallets-accounts-ethereum-addresses": "Un conto Ethereum ha un indirizzo di Ethereum, come una casella di posta ha un indirizzo email. Puoi usarlo per inviare fondi a un conto.",
"page-wallets-alt": "Figura di un robot con una cassaforte come corpo che rappresenta un portafoglio Ethereum",
- "page-wallets-ethereum-account": "Un conto Ethereum è un'entità che può inviare transazioni e ha un saldo.",
+ "page-wallets-ethereum-account": "Un conto di Ethereum è un'entità che può inviare transazioni e ha un saldo.",
"page-wallets-blog": "Blog di Coinbase",
"page-wallets-bookmarking": "Salva il tuo portafoglio tra i preferiti",
"page-wallets-bookmarking-desc": "Se usi un portafoglio web, mettere il sito tra i preferiti ti aiuta a proteggerti da truffe e phishing.",
- "page-wallets-cd": "I portafogli hardware fisici sono dispositivi che ti consentono di conservare offline le tue criptovalute e sono molto sicuri",
+ "page-wallets-cd": "I portafogli hardware fisici sono dispositivi che consentono di conservare le criptovalute offline - molto sicuri",
"page-wallets-desc-2": "Serve un portafoglio per inviare fondi e gestire i tuoi ETH.",
"page-wallets-desc-2-link": "Scopri di più su ETH",
- "page-wallets-desc-3": "Il tuo portafoglio è solo uno strumento per gestire il tuo account Ethereum. Questo significa che puoi cambiare provider di portafoglio in qualsiasi momento. Molti portafogli permettono anche di gestire diversi account Ethereum da una sola applicazione.",
+ "page-wallets-desc-3": "Il tuo portafoglio è solo uno strumento per gestire il tuo conto di Ethereum. Ciò significa che puoi cambiare fornitore del portafoglio in qualsiasi momento. Molti portafogli, inoltre, ti consentono di gestire diversi conti di Ethereum da un'applicazione.",
"page-wallets-desc-4": "Questo perché non hanno custodia dei tuoi fondi, quella spetta a te. I portafogli sono solo uno strumento per gestire quello che è tuo.",
- "page-wallets-description": "I portafogli Ethereum sono applicazioni che ti permettono di interagire con il tuo account Ethereum. Considerali una sorta di app di internet banking, ma senza la banca. Il tuo portafoglio ti permette di controllare il saldo, inviare transazioni e connetterti ad applicazioni.",
+ "page-wallets-description": "I portafogli di Ethereum sono applicazioni che ti consentono di interagire con il tuo conto di Ethereum. Immaginali come un'app bancaria su internet, senza la banca. Il tuo portafoglio ti consente di leggere il tuo saldo, inviare transazioni e connetterti alle applicazioni.",
"page-wallets-desktop": "Applicazioni desktop, se preferisci gestire i tuoi fondi via macOS, Windows o Linux",
- "page-wallets-ethereum-wallet": "Un portafoglio è un prodotto che consente di gestire il proprio conto Ethereum, visualizzare il saldo, inviare transazioni e molto altro.",
+ "page-wallets-ethereum-wallet": "Un portafoglio è un prodotto che ti consente di gestire il tuo conto di Ethereum. Ti consente di visualizzare ils aldo del tuo conto, inviare transazioni e altro.",
"page-wallets-explore": "Esplora Ethereum",
"page-wallets-features-desc": "Possiamo aiutarti a scegliere il tuo portafoglio in base alle caratteristiche che ti interessano.",
- "page-wallets-features-title": "Confronta i portafogli a seconda delle funzionalità",
+ "page-wallets-features-title": "Confronta i portafogli in base alle funzionalità",
"page-wallets-find-wallet-btn": "Trova un portafoglio",
"page-wallets-find-wallet-link": "Trova un portafoglio",
"page-wallets-get-some": "Ottieni ETH",
@@ -31,8 +31,8 @@
"page-wallets-meta-description": "Cosa devi sapere per utilizzare portafogli Ethereum.",
"page-wallets-meta-title": "Portafogli Ethereum",
"page-wallets-mobile": "Applicazioni mobili che rendono i tuoi fondi accessibili ovunque",
- "page-wallets-more-on-dapps-btn": "Di più sulle dapp",
- "page-wallets-most-wallets": "La maggior parte dei portafogli ti permette di generare un account Ethereum, quindi non ti serve averne uno prima di scaricare un portafoglio.",
+ "page-wallets-more-on-dapps-btn": "Maggiori informazioni sulle dapp",
+ "page-wallets-most-wallets": "Gran parte dei portafogli ti consentiranno di generare un conto di Ethereum. Quindi, non ne necessiti uno, prima di scaricare un portafoglio.",
"page-wallets-protecting-yourself": "Proteggi te e i tuoi fondi",
"page-wallets-seed-phrase": "Prendi nota della tua seed phrase",
"page-wallets-seed-phrase-desc": "I portafogli spesso ti forniscono una seed phrase che devi scrivere e conservare in un luogo sicuro. Sarà l'unico modo per recuperare il tuo portafoglio.",
@@ -54,12 +54,12 @@
"page-wallets-try-dapps-alt": "Figura dei membri della community Ethereum che lavorano insieme",
"page-wallets-try-dapps-desc": "Le dapp sono applicazioni costruite su Ethereum. Sono più economiche, eque e attente ai tuoi dati rispetto alla maggior parte delle applicazioni tradizionali.",
"page-wallets-types": "Tipi di portafogli",
- "page-wallets-types-desc": "Esistono alcuni modi per interfacciarsi e interagire col tuo conto:",
+ "page-wallets-types-desc": "Esistono alcuni modi per interfacciarsi e interagire con il tuo conto:",
"page-wallets-web-browser": "I portafogli del browser sono applicazioni web che ti consentono di interagire con il tuo conto direttamente nel browser",
- "page-wallets-web-browser-extension": "I portafogli del browser sono estensioni scaricate che ti consentono di interagire col tuo conto e le tue applicazioni tramite il browser",
+ "page-wallets-web-browser-extension": "I portafogli browser sono estensioni che scarichi e ti consentono di interagire con il tuo conto e le applicazioni tramite il browser",
"page-wallets-whats-a-wallet": "Cos'è un portafoglio Ethereum?",
- "page-wallets-your-ethereum-account": "Il tuo account Ethereum",
- "page-wallets-your-ethereum-account-desc": "Il tuo portafoglio è la tua finestra sull'account Ethereum: il saldo, la cronologia delle transazioni e altro. Ma potrai cambiare fornitore del portafoglio ogni volta che vorrai.",
+ "page-wallets-your-ethereum-account": "Il tuo conto di Ethereum",
+ "page-wallets-your-ethereum-account-desc": "Il tuo portafoglio è la tua finestra al tuo conto di Ethereum: il tuo saldo, lo storico delle transazioni e altro. Ma puoi cambiare fornitore dele portafoglio in qualsiasi momento.",
"page-wallets-your-login": "Il tuo login per le applicazioni Ethereum",
- "page-wallets-your-login-desc": "Il tuo portafoglio ti permette di connetterti a ogni app decentralizzata usando il tuo account Ethereum. È come un login che puoi utilizzare per molte dapp."
+ "page-wallets-your-login-desc": "Il tuo portafoglio ti consente di connetterti a qualsiasi applicazioni decentralizzata usando il tuo conto di Ethereum. È come un login, utilizzabile su molte dapp."
}
diff --git a/src/intl/it/page-what-is-ethereum.json b/src/intl/it/page-what-is-ethereum.json
index 15e19061e3b..d98d12c4d72 100644
--- a/src/intl/it/page-what-is-ethereum.json
+++ b/src/intl/it/page-what-is-ethereum.json
@@ -1,5 +1,5 @@
{
- "page-what-is-ethereum-alt-img-bazaar": "Figura di una persona che che sbircia in un bazar, che rappresenta Ethereum",
+ "page-what-is-ethereum-alt-img-bazaar": "Figura di una persona che sbircia in un bazar, che rappresenta Ethereum",
"page-what-is-ethereum-alt-img-comm": "Figura dei membri della community di Ethereum che lavorano insieme",
"page-what-is-ethereum-alt-img-lego": "Figura di una mano che crea il logo ETH formato da mattoncini di Lego",
"page-what-is-ethereum-banking-card": "Attività bancarie per tutti",
@@ -10,9 +10,9 @@
"page-what-is-ethereum-censorless-card-desc": "Nessun governo o azienda ha il controllo su Ethereum. Questa decentralizzazione rende praticamente impossibile per chiunque impedire di ricevere pagamenti o di utilizzare i servizi basati su Ethereum.",
"page-what-is-ethereum-comm-desc": "La nostra community include persone con ogni tipo di background, inclusi artisti, cripto-anarchici, aziende Fortune 500 e ora anche te. Scopri come poter partecipare fin da subito.",
"page-what-is-ethereum-commerce-card": "Garanzie commerciali",
- "page-what-is-ethereum-commerce-card-desc": "I clienti hanno una garanzia sicura e integrata che i fondi cambieranno mani solo se fornirai quanto accordato. Similmente, gli sviluppatori possono avere la certezza che le regole non cambieranno per loro.",
+ "page-what-is-ethereum-commerce-card-desc": "I clienti hanno una garanzia sicura e integrata che i fondi saranno trasferiti se fornirete quanto concordato. Analogamente, gli sviluppatori possono avere la certezza che le regole non cambieranno per loro.",
"page-what-is-ethereum-composable-card": "Tutti i prodotti sono componibili",
- "page-what-is-ethereum-composable-card-desc": "Poiché tutte le app sono create sulla blockchain stessa con uno stato globale condiviso, possono basarsi l'una sull'altra (come i lego). Questo consente la creazione nel tempo di prodotti ed esperienze migliori.",
+ "page-what-is-ethereum-composable-card-desc": "Poiché tutte le app sono create sulla stessa blockchain con uno stato globale condiviso, possono costruirsi basandosi le une sulle altre (come i lego). Questo consente la costruzione di prodotti ed esperienze sempre migliori.",
"page-what-is-ethereum-community": "La community Ethereum",
"page-what-is-ethereum-desc": "La base per il nostro futuro digitale",
"page-what-is-ethereum-explore": "Esplora Ethereum",
@@ -25,70 +25,71 @@
"page-what-is-ethereum-p2p-card-desc": "Ethereum ti permette di spostare denaro, o stringere accordi, direttamente con altri. Non è necessario ricorrere a intermediari.",
"page-what-is-ethereum-start-building-btn": "Inizia a sviluppare",
"page-what-is-ethereum-title": "Cos'è Ethereum?",
- "page-what-is-ethereum-subtitle": "Una guida completa per principianti a come funziona Ethereum, ai benefici che comporta e a come è usato da milioni di persone in tutto il mondo.",
+ "page-what-is-ethereum-subtitle": "Una guida completa per principianti a come funziona Ethereum, i benefici che comporta e come è usata da milioni di persone in tutto il mondo.",
"page-what-is-ethereum-button-lets-start": "Iniziamo",
"page-what-is-ethereum-blockchain-tab-title": "Cos'è una blockchain?",
- "page-what-is-ethereum-blockchain-tab-content": "Una blockchain è un database di transazioni, aggiornato e condiviso tra molti computer in una rete. Ogni volta che è aggiunta una nuova serie di transazioni, essa è detta \"blocco\", da cui il nome blockchain. Gran parte delle blockchain sono pubbliche e puoi solo aggiungervi dati, non rimuoverli. Se qualcuno volesse alterare qualsiasi informazione o truffare il sistema, dovrebbe farlo sulla maggioranza dei computer sulla rete. E sono molti! Questo consolida che le blockchain come Ethereum sono altamente sicure.",
- "page-what-is-ethereum-cryptocurrency-tab-title": "Perché si chiama criptovaluta?",
- "page-what-is-ethereum-cryptocurrency-tab-content": "Le blockchain usano tecniche crittografiche per assicurare che i tuoi fondi siano al sicuro. Simili tecniche sono state usate nelle industrie bancarie per assicurare la sicurezza delle transazioni monetarie per anni. Quindi, potresti dire che le criptovalute abbiano un livello di sicurezza bancario.",
+ "page-what-is-ethereum-blockchain-tab-content": "Una blockchain è un database di transazioni che viene aggiornato e condiviso tra molti computer in una rete. Ogni volta viene aggiunta una nuova serie di transazioni, chiamata \"blocco\", da cui il nome blockchain. Gran parte delle blockchain sono pubbliche ed è possibile solo aggiungere dati, non rimuoverli. Se qualcuno volesse alterare alcune delle informazioni o truffare il sistema, dovrebbe farlo sulla maggioranza dei computer sulla rete. E sono molti! Questo rende le blockchain esistenti come Ethereum altamente sicure.",
+ "page-what-is-ethereum-cryptocurrency-tab-title": "Perché la chiamano criptovaluta?",
+ "page-what-is-ethereum-cryptocurrency-tab-content": "Le blockchain usano tecniche crittografiche per garantire che i tuoi fondi siano al sicuro. Tecniche simili sono usate da anni nel settore bancario per assicurare la sicurezza delle transazioni monetarie. Quindi si potrebbe dire che le criptovalute hanno un livello di sicurezza paragonabile a quello di una banca.",
"page-what-is-ethereum-summary-title": "Riepilogo",
- "page-what-is-ethereum-summary-desc-1": "Ethereum è una tecnologia per creare app e organizzazioni, detenere risorse, effettuare transazioni e comunicare senza esser controllati da un'autorità centrale. Non è necessario fornire tutti i tuoi dettagli personali per usare Ethereum: sei tu a mantenere il controllo dei tuoi dati e di ciò che viene condiviso. Ethereum ha la propria criptovaluta, Ether, usata per pagare certe attività sulla rete di Ethereum.",
- "page-what-is-ethereum-summary-desc-2": "Sei ancora confuso? Spieghiamo tutto, passo dopo passo.",
+ "page-what-is-ethereum-summary-desc-1": "Ethereum è una tecnologia per creare app e organizzazioni, detenere risorse, effettuare transazioni e comunicare senza essere controllati da un'autorità centrale. Non devi comunicare tutti i tuoi dati personali per usare Ethereum, sei tu a mantenere il controllo sui tuoi dati e su cosa è condiviso. Ethereum ha la propria criptovaluta, Ether, usata per pagare per certe attività sulla rete di Ethereum.",
+ "page-what-is-ethereum-summary-desc-2": "Sei ancora confuso? Spieghiamo tutto passo dopo passo.",
"page-what-is-ethereum-what-is-crypto-title": "Cos'è una criptovaluta?",
- "page-what-is-ethereum-what-is-crypto-desc-1": "Le cripto (abbreviazione di criptovalute) sono una nuova forma di denaro digitale, basata sulla crittografia.",
- "page-what-is-ethereum-what-is-crypto-desc-2": "Tutto è iniziato nel 2008 con Bitcoin. Potresti usarle per inviare fondi a chiunque, in tutto il mondo. Ciò che rende le criptovalute differenti dai normali trasferimenti bancari o da altri servizi finanziari come PayPal o Alipay, è che, per la prima volta, non vi è alcun mediatore.",
- "page-what-is-ethereum-what-is-crypto-desc-3": "Aspetta, cos'è un mediatore?",
- "page-what-is-ethereum-what-is-crypto-desc-4": "Un mediatore è un'autorità centrale come una banca o un governo che interviene in una transazione tra il mittente e il destinatario. Ha potere di sorvegliare, censurare o annullare le transazioni e può condividere i dati sensibili che raccoglie su di te con terze parti. Spesso, può anche dettare a quali servizi finanziari hai accesso.",
- "page-what-is-ethereum-what-is-crypto-desc-5": "Le cose sono diverse con le criptovalute. Le transazioni connettono direttamente il mittente e il destinatario, senza dover avere a che fare con alcuna autorità centrale. Nessun altro avrà accesso ai tuoi fondi e nessuno potrà dirti quali servizi puoi usare. Ciò è possibile grazie alla tecnologia della blockchain su cui operano le criptovalute.",
+ "page-what-is-ethereum-what-is-crypto-desc-1": "La cripto (abbreviazione per criptovaluta) è una nuova forma di denaro digitale basata sulla crittografia.",
+ "page-what-is-ethereum-what-is-crypto-desc-2": "Tutto è iniziato nel 2008 con Bitcoin. Puoi usarla per inviare fondi a chiunque, in qualsiasi luogo del mondo. Ciò che ha reso differente le cripto dai normali trasferimenti bancari o da altri servizi finanziari come PayPal o Alipay è che, per la prima volta, non vi è alcun intermediario.",
+ "page-what-is-ethereum-what-is-crypto-desc-3": "Aspetta, cos'è un intermediario?",
+ "page-what-is-ethereum-what-is-crypto-desc-4": "Un intermediario è un'autorità centrale, come una banca o un governo, che interviene in una transazione tra il mittente e il destinatario. Ha il potere di sorvegliare, censurare e fermare le transazioni e può condividere i dati sensibili che raccoglie su di te con terze parti. Spesso, inoltre, stabilisce a quali servizi finanziari hai accesso.",
+ "page-what-is-ethereum-what-is-crypto-desc-5": "Le cose vanno diversamente con le cripto. Le transazioni connettono direttamente mittente e destinatario senza dover avere a che fare con alcuna autorità centrale. Nessun altro avrà accesso ai tuoi fondi e nessuno può dirti che servizi puoi usare. Questo è possibile grazie alla tecnologia della blockchain su cui operano le criptovalute.",
"page-what-is-ethereum-btc-eth-diff-title": "Qual è la differenza tra Ethereum e Bitcoin?",
- "page-what-is-ethereum-btc-eth-diff-1": "Lanciato nel 2015, Ethereum si fonda sull'innovazione di Bitcoin, con alcune grandi differenze.",
- "page-what-is-ethereum-btc-eth-diff-2": "Entrambi ti consentono di usare il denaro digitale senza fornitori di pagamento o banche. Ma Ethereum è programmabile, cioè puoi anche costruire e distribuire applicazioni decentralizzate sulla sua rete.",
- "page-what-is-ethereum-btc-eth-diff-3": "Ethereum è programmabile nel senso che puoi creare app che usino la blockchain per memorizzare i dati o controllare cosa può fare la tua app. Ciò risulta in una blockchain a scopo generale, programmabile per fare di tutto. Non essendovi limite a ciò che Ethereum possa fare, consente che si verifichi una grande innovazione sulla rete di Ethereum.",
- "page-what-is-ethereum-btc-eth-diff-4": "Mentre Bitcoin è solo una rete di pagamento, Ethereum è piuttosto un mercato di servizi finanziari, giochi, social network e altre app che rispettano la tua privacy e non possono censurarti.",
+ "page-what-is-ethereum-btc-eth-diff-1": "Lanciato nel 2015, Ethereum si basa sull'innovazione di Bitcoin, con alcune grandi differenze.",
+ "page-what-is-ethereum-btc-eth-diff-2": "Entrambi ti consentono di usare il denaro digitale senza fornitori di pagamento o banche. Ma Ethereum è programmabile, così puoi anche creare e distribuire delle applicazioni decentralizzate sulla sua rete.",
+ "page-what-is-ethereum-btc-eth-diff-3": "Ethereum è programmabile nel senso che puoi creare delle app che usano la blockchain per memorizzare i dati o controllare cosa può fare la tua app. Questo genera una blockchain \"a tutto campo\", programmabile per fare tutto. Poiché non c'è limite a cosa Ethereum può fare, rende possibile una grande innovazione sulla rete di Ethereum.",
+ "page-what-is-ethereum-btc-eth-diff-4": "Mentre Bitcoin è solo una rete di pagamento, Ethereum è più come un mercato di servizi finanziari, giochi, social e altre app che rispettano la tua privacy e non possono censurarti.",
"page-what-is-ethereum-what-can-eth-do-title": "Cosa può fare Ethereum?",
"page-what-is-ethereum-why-would-i-use-ethereum-title": "Perché dovrei usare Ethereum?",
- "page-what-is-ethereum-why-would-i-use-ethereum-1": "Se hai mai inviato (o vorresti inviare) denaro all'estero, o ti sei dovuto preoccupare del futuro delle tue risorse a causa di forze esterne al di fuori del tuo controllo dove vivi, o ti sono state date numerose limitazioni e commissioni, imposte dalle istituzioni finanziarie tradizionali per le transazioni quotidiane, potresti esser interessato in cosa le criptovalute hanno da offrire.",
- "page-what-is-ethereum-why-would-i-use-ethereum-2": "Tieni a mente che Ethereum è una storia ancora in corso di scrittura e che molti altri motivi per usarlo sono svelati al suo evolversi e svilupparsi nel tempo.",
- "page-what-is-ethereum-slide-1-title": "Pagamenti Transfrontalieri Più Economici e Veloci",
- "page-what-is-ethereum-slide-1-desc-1": "Gli stablecoin sono un nuovo tipo di criptovaluta che si affida su una risorsa più stabile come base del proprio valore. Gran parte di essi sono collegati al dollaro statunitense e, dunque, mantengono il valore di tale valuta. Questi consentono un sistema di pagamento globale molto economico e stabile. Molti stablecoin correnti sono basati sulla rete di Ethereum.",
- "page-what-is-ethereum-slide-1-desc-2": "Ethereum e gli stablecoin semplificano il processo di invio di denaro all'estero. Spesso, inviare fondi nel resto del globo, richiede solo qualche minuto, invece che diversi giorni lavorativi, o persino settimane, che potrebbero esser necessari alla tua banca media e per una frazione del prezzo. Inoltre, non vi è alcuna commissione aggiuntiva per aver effettuato una transazione dal valore elvato e non esistono limitazioni su dove o perché stai inviando il tuo denaro.",
- "page-what-is-ethereum-slide-2-title": "L'Aiuto Più Rapido nei Momenti di Crisi",
- "page-what-is-ethereum-slide-2-desc-1": "Se sei abbastanza fortunato da avere diverse opzioni bancarie tramite le istituzioni affidabili di dove vivi, potresti dare per scontata la libertà finanziaria, la sicurezza e la stabilità che offrono. Ma per molte persone in tutto il mondo, che affrontano repressione politica o disagi economici, le istituzioni finanziarie potrebbero non fornire la protezione o i servizi necessari.",
- "page-what-is-ethereum-slide-2-desc-2": "Quando la guerra, le catastrofi economiche o le repressioni delle libertà civili hanno colpito i residenti del Venezuela, Cuba, Afghanistan, Nigeria, Bielorussia e Ucraina, le criptovalute hanno costituito la più rapida e, spesso, la sola opzione per mantenere l'agenzia finanziaria.1 Come visto in questi esempi, le criptovalute come Ethereum possono fornire un accesso libero all'economia globale, quando le persone sono tagliate fuori dal resto del mondo. Inoltre, gli stablecoin, offrono una riserva di valore quando le valute locali stanno collassando, a causa della superinflazione.",
- "page-what-is-ethereum-slide-3-title": "Rafforzare i Creatori",
- "page-what-is-ethereum-slide-3-desc-1": "Nel solo 2021, artisti, musicisti, scrittori e altri creatori hanno usato Ethereum per guadagnare, collettivamente, $3,5 miliardi. Questo rende Ethereum una delle più grande piattaforme globali per creatori, insieme a Spotify, YouTube ed Etsy. Scopri di più.",
- "page-what-is-ethereum-slide-4-title": "Rafforzare i Giocatori",
- "page-what-is-ethereum-slide-4-desc-1": "I giochi play to earn (in cui i giocatori sono effettivamente ricompensati per aver giocato ai giochi), sono emersi di recente e stanno trasformando l'industria videoludica. Tradizionalmente, è spesso proibito scambiare o trasferire risorse di gioco ad altri giocatori per denaro reale. Questo forza i giocatori a usare siti web del mercato nero, che presentano spesso rischi sulla sicurezza. Il gaming sulla blockchain accoglie l'economia di gioco e promuove un simile comportamento in un modo affidabile.",
- "page-what-is-ethereum-slide-4-desc-2": "Peraltro, i giocatori, sono incentivati dall'esser capaci di scambiare token di gioco per denaro reale e, dunque, dall'esser veramente premiati per il loro tempo di gioco.",
+ "page-what-is-ethereum-why-would-i-use-ethereum-1": "Se hai mai inviato denaro all'estero (o prevedi di farlo) o ti sei dovuto preoccupare del futuro delle tue risorse a causa di forze esterne al di fuori del tuo controllo dove vivi o ti sono state date diverse limitazioni e commissioni imposte dalle istituzioni finanziarie tradizionali per le transazioni quotidiane, potresti essere interessato a cosa le criptovalute hanno da offrire.",
+ "page-what-is-ethereum-why-would-i-use-ethereum-2": "Tieni a mente che Ethereum è una storia che stiamo ancora scrivendo e che emergeranno molti altri motivi per usarlo man mano che si evolve e sviluppa nel tempo.",
+ "page-what-is-ethereum-slide-1-title": "Pagamenti transfrontalieri più economici e veloci",
+ "page-what-is-ethereum-slide-1-desc-1": "Gli Stablecoin sono un nuovo tipo di criptovaluta che si affida a una risorsa più stabile come base per il suo valore. Gran parte di essi sono collegati al dollaro americano e dunque mantengono il valore di quella valuta. Rendono possibile un sistema di pagamento globale molto economico e stabile. Molti stablecoin correnti sono basati sulla rete di Ethereum.",
+ "page-what-is-ethereum-slide-1-desc-2": "Ethereum e gli stablecoin semplificano il processo di invio di denaro all'estero. Spesso bastano solo alcuni minuti spostare i fondi in qualunque parte del mondo, rispetto ad alcuni giorni lavorativi o persino settimane che potrebbe impiegare una banca media, e a una frazione del costo. Inoltre, non vi è alcuna commissione aggiuntiva per aver effettuato transazioni di alto valore e non ci sono limitazioni su dove o perché stai inviando il tuo denaro.",
+ "page-what-is-ethereum-slide-2-title": "L'aiuto più rapido nei momenti di crisi",
+ "page-what-is-ethereum-slide-2-desc-1": "Se sei abbastanza fortunato da avere diverse opzioni bancarie tramite le istituzioni fidate dove vivi, potresti dare per scontata la libertà finanziaria, la sicurezza e la stabilità che offrono. Ma per molte persone in tutto il mondo, che affrontano repressione politica o disagio economico, le istituzioni finanziarie potrebbero non fornire la protezione o i servizi che necessitano.",
+ "page-what-is-ethereum-slide-2-desc-2": "Quando la guerra, le catastrofi economiche o le repressioni sulle libertà civili hanno colpito i residenti di Venezuela, Cuba, Afghanistan, Nigeria, Bielorussia e Ucraina, le criptovalute hanno costituito la più rapida e spesso la sola opzione per mantenere l'agenzia finanziaria.1 Come visto in questi esempi, le criptovalute come Ethereum possono fornire un accesso libero all'economia globale quando le persone sono tagliate fuori dal resto del mondo. Inoltre, gli stablecoin offrono una riserva di valore quando le valute locali stanno collassando a causa della superinflazione.",
+ "page-what-is-ethereum-slide-3-title": "Dare potere a creatori",
+ "page-what-is-ethereum-slide-3-desc-1": "Nel solo 2021, artisti, musicisti, scrittori e altri creatori hanno usato Ethereum per guadagnare complessivamente circa $3,5 miliardi. Questo rende Ethereum una delle più grandi piattaforme globali per creatori, insieme a Spotify, YouTube ed Etsy. Scopri di più.",
+ "page-what-is-ethereum-slide-4-title": "Dare potere ai giocatori",
+ "page-what-is-ethereum-slide-4-desc-1": "Recentemente sono emersi i giochi play to earn (in cui i giocatori sono effettivamente premiati per giocare ai giochi) e stanno trasformando l'industria videoludica. Tradizionalmente, spesso è vietato scambiare o trasferire risorse di gioco ad altri giocatori con scambio di denaro reale. Questo forza i giocatori a usare siti web del mercato nero, che sono spesso un rischio di sicurezza. Il gaming nella blockchain abbraccia l'economia di gioco e promuove questo comportamento in modo affidabile.",
+ "page-what-is-ethereum-slide-4-desc-2": "Inoltre, i giocatori sono incentivati perché possono scambiare token di gioco con denaro reale e dunque essere realmente premiati per il loro tempo di gioco.",
"page-what-is-ethereum-meet-ether-title": "Incontra ether, la criptovaluta di Ethereum",
- "page-what-is-ethereum-meet-ether-desc-1": "Ethereum ha una criptovaluta nativa, detta ether (ETH). È puramente digitale e puoi inviarla a chiunque, in tutto il mondo, istantaneamente. L'offerta di ETH non è controllata da alcun governo o azienda; è decentralizzata e completamente trasparente. Le nuove monete (spesso anche dette token), sono create solo da miner e staker, che mantengono la rete.",
- "page-what-is-ethereum-meet-ether-desc-2": "Ogni azione sulla rete di Ethereum richiede una certa quantità di potenza di calcolo. Questa commissione è pagata nella forma di ether; ciò significa che necessiti di almeno un minimo importo di ETH per usare la rete.",
+ "page-what-is-ethereum-meet-ether-desc-1": "Ethereum ha una criptovaluta nativa, detta ether (ETH). È puramente digitale e puoi inviarla a chiunque, in tutto il mondo, istantaneamente. L'offerta di ETH non è controllata da alcun governo o azienda; è decentralizzata e completamente trasparente. Le nuove monete (spesso anche dette token) sono emesse solo dagli staker, che proteggono la rete.",
+ "page-what-is-ethereum-meet-ether-desc-2": "Ogni azione sulla rete di Ethereum richiede una certa quantità di potenza di calcolo. Questa commissione è pagata sotto forma di ether. Questo significa che serve almeno una piccola quantità di ETH per usare la rete.",
"page-what-is-ethereum-what-is-ether": "Cos'è un ether?",
"page-what-is-ethereum-get-eth": "Ottieni ETH",
"page-what-is-ethereum-what-can-i-do-title": "Cosa posso fare con le monete ETH?",
- "page-what-is-ethereum-what-can-i-do-desc-1": "A quanto pare: un sacco di cose! Uno degli usi più importanti della tecnologia di Ethereum è la finanza decentralizzata (DeFi), che apre intere aree di servizi bancari a chiunque abbia una connessione a Internet. Puoi usare i tuoi ether come garanzia per ottenere dei prestiti o fornire liquidità per guadagnare interessi sui tuoi fondi.",
+ "page-what-is-ethereum-what-can-i-do-desc-1": "A quanto pare un sacco di cose! Uno degli usi più importanti della tecnologia di Ethereum è la finanza decentralizzata (DeFi) che apre intere aree dei servizi bancari a chiunque abbia una connessione a Internet. Puoi usare il tuo ether come una garanzia per accendere un prestito o fornire liquidità per ricevere interessi sui tuoi fondi.",
"page-what-is-ethereum-explore-applications": "Esplora le applicazioni",
- "page-what-is-ethereum-learn-defi": "Impara sulla DeFi",
+ "page-what-is-ethereum-learn-defi": "Scopri di più sulla DeFi",
"page-what-is-ethereum-who-runs-ethereum-title": "Chi controlla Ethereum?",
- "page-what-is-ethereum-who-runs-ethereum-desc-1": "Ethereum non è controllato da alcuna entità. Esiste solamente tramite la partecipazione e cooperazione decentralizzate della community. Ethereum utilizza i nodi (computer con una copia dei dati della blockchain di Ethereum), operati da volontari, per sostituire il singolo server e i sistemi su cloud, posseduti dai principali fornitori e servizi di Internet.",
- "page-what-is-ethereum-who-runs-ethereum-desc-2": "Questi nodi distribuiti, operati dai singoli individui e dalle aziende di tutto il mondo, forniscono resilienza all'infrastruttura della rete di Ethereum. Dunque, è molto meno vulnerabile ad hack o arresti. Dal suo lancio nel 2015, Ethereum non ha mai sofferto di tempi di inattività. Esistono migliaia di nodi individuali che operano la rete di Ethereum; ciò rende Ethereum una delle criptovalute più decentralizzate esistenti, seconda solo a Bitcoin.",
- "page-what-is-ethereum-run-a-node": "Esegui un nodo",
+ "page-what-is-ethereum-who-runs-ethereum-desc-1": "Ethereum non è controllato da nessuno. Esiste solamente tramite la partecipazione e cooperazione decentralizzate della community. Ethereum fa uso dei nodi (un computer con una copia dei dati della blockchain di Ethereum), gestiti da volontari, in sostituzione di singoli sistemi server e cloud posseduti dai grandi provider di Internet e servizi.",
+ "page-what-is-ethereum-who-runs-ethereum-desc-2": "Questi nodi distribuiti, operati da individui e aziende in tutto il mondo, rendono resiliente l'infrastruttura della rete di Ethereum. È dunque molto meno vulnerabile ad attacchi o blocchi. Dal suo lancio nel 2015, Ethereum non hai mai subito momenti di inattività. Ci sono migliaia di nodi individuali che eseguono la rete di Ethereum. Questo rende Ethereum una delle criptovalute più decentralizzate che esistono, seconda solo a Bitcoin.",
+ "page-what-is-ethereum-run-a-node": "Gestire un nodo",
"page-what-is-ethereum-smart-contract-title": "Cosa sono i contratti intelligenti?",
- "page-what-is-ethereum-smart-contract-desc-1": "I contratti intelligenti sono, semplicemente, dei programmi informatici che risiedono sulla blockchain di Ethereum. Essi sono eseguiti soltanto quando innescati da una transazione da un utente (o da un altro contratto). Rendono Ethereum molto flessibile in ciò che può fare e lo distinguono dalle altre criptovalute. Questi programmi sono ciò che, ora, chiamiamo app decentralizzate, o dapp.",
- "page-what-is-ethereum-smart-contract-desc-2": "Hai mai utilizzato un prodotto che aveva modificato i suoi termini di servizio? O che aveva rimosso una funzionalità che trovavi utile? Una volta che un contratto intelligente è pubblicato su Ethereum, sarà online e operativo finché esisterà Ethereum. Nemmeno l'autore potrà rimuoverlo. Poiché i contratti intelligenti sono automatizzati, non discriminano alcun utente e sono sempre pronti all'uso.",
- "page-what-is-ethereum-smart-contract-desc-3": "Esempi popolari di contratti intelligenti sono le app di prestito, le borse di trading decentralizzate, le assicurazioni, le app di crowdfunding... fondamentalmente, qualsiasi cosa a cui tu possa pensare.",
+ "page-what-is-ethereum-smart-contract-desc-1": "I contratti intelligenti sono semplicemente dei programmi informatici che risiedono sulla blockchain di Ethereum. Sono esclusivamente eseguiti quando innescati da una transazione da un utente (o da un altro contratto). Rendono Ethereum molto flessibile in ciò che può fare e lo distinguono dalle altre criptovalute. Questi programmi sono ciò che ora chiamiamo app decentralizzate, o dapp.",
+ "page-what-is-ethereum-smart-contract-desc-2": "Hai mai utilizzato un prodotto che ha modificato i propri termini di servizio? O che ha rimosso una funzionalità che trovavi utile? Una volta che un contratto intelligente è pubblicato su Ethereum, sarà online e operativo per tutta l'esistenza di Ethereum. Nemmeno l'autore può disattivarlo. Poiché i contratti intelligenti sono automatizzati, non discriminano alcun utente e sono sempre pronti all'uso.",
+ "page-what-is-ethereum-smart-contract-desc-3": "Esempi popolari di contratti intelligenti sono le app di prestito, le borse di trading decentralizzate, le assicurazioni, le app di crowdfunding; fondamentalmente, qualsiasi cosa a cui potresti pensare.",
"page-what-is-ethereum-more-on-smart-contracts": "Di più sui Contratti Intelligenti",
"page-what-is-ethereum-explore-dapps": "Esplora le dapp",
- "page-what-is-ethereum-criminal-activity-title": "Ho sentito che le criptovalute sono usate come strumenti per le attività criminali. È vero?",
- "page-what-is-ethereum-criminal-activity-desc-1": "Come ogni forma di denaro, una parte sarà usata erroneamente. Tuttavia, poiché tutte le transazioni di Ethereum avvengono su una blockchain aperta, è spesso più facile per le autorità tracciare le attività illecite di quanto lo sarebbe nel sistema finanziario tradizionale, rendendo probabilmente Ethereum una scelta meno attraente per coloro che preferirebbero non esser identificati.",
- "page-what-is-ethereum-criminal-activity-desc-2": "Le criptovalute sono molto meno usate delle valute legali per scopi criminali, secondo i risultati chiave di un recente rapporto dell'Europol, l'Agenzia dell'Unione Europea per la Cooperazione delle Forze dell'Ordine:",
- "page-what-is-ethereum-criminal-activity-desc-3": "\"L'uso delle criptovalute per attività illecite sembra comprendere solo una piccola parte dell'economia generale delle criptovalute e sembra esser comparativamente inferiore alla quantità di fondi illeciti coinvolti nella finanza tradizionale.\"",
- "page-what-is-ethereum-energy-title": "Che mi dici del consumo energetico di Ethereum?",
- "page-what-is-ethereum-energy-desc-1": "Ethereum utilizza correntemente il meccanismo di proof-of-work che consuma una grande quantità di energia. Nei mesi a venire (T3/T4 del 2022), Ethereum affronterà il suo più grande aggiornamento di sempre e passerà al meccanismo di proof-of-stake, che ridurrà enormemente il suo impatto ambientale.",
- "page-what-is-ethereum-energy-desc-2": "Questo aggiornamento ridurrà l'energia necessaria a proteggere Ethereum di circa il 99,95%, creando una rete più sicura per un costo carbonico molto minore. Ciò renderà Ethereum una blockchain davvero a basso consumo carbonico, potenziandone la sicurezza e la scalabilità.",
- "page-what-is-ethereum-more-on-energy-consumption": "Di più sul consumo energetico",
- "page-what-is-ethereum-the-merge-update": "L'aggiornamento de La Fusione",
- "page-what-is-ethereum-additional-reading": "Letture aggiuntive",
+ "page-what-is-ethereum-criminal-activity-title": "Ho sentito dire che le cripto sono usate come strumenti per le attività criminali. È vero?",
+ "page-what-is-ethereum-criminal-activity-desc-1": "Come ogni forma di denaro, una parte di esso sarà usato impropriamente. Tuttavia, poiché tutte le transazioni di Ethereum si verificano su una blockchain aperta, è spesso più facile per le autorità tracciare attività illecite rispetto al sistema finanziario tradizionale, rendendo probabilmente Ethereum una scelta meno attraente per coloro che preferiscono non essere identificati.",
+ "page-what-is-ethereum-criminal-activity-desc-2": "Secondo i risultati chiave di un rapporto recente dell'Europol, l'Agenzia dell'Unione europea per la Cooperazione delle Forze dell'Ordine, le cripto sono usate molto meno delle valute legali per scopi criminali:",
+ "page-what-is-ethereum-criminal-activity-desc-3": "\"L'uso delle criptovalute per attività illecite sembra interessare solo una piccola parte dell'economia complessiva della criptovaluta e sembra essere comparativamente inferiore alla quantità di fondi illeciti coinvolti nella finanza tradizionale.\"",
+ "page-what-is-ethereum-energy-title": "E il consumo energetico di Ethereum invece?",
+ "page-what-is-ethereum-energy-desc-1": "Ethereum usa attualmente il meccanismo di proof-of-work, che consuma una grande quantità di energia. Nei mesi a venire (Q3/Q4 2022), Ethereum affronterà il suo più grande aggiornamento finora e passerà al meccanismo di proof-of-stake, che ridurrà molto il suo impatto ambientale.",
+ "page-what-is-ethereum-energy-desc-2": "Questo aggiornamento ridurrà l'energia richiesta per proteggere Ethereum di circa il 99,95%, creando una rete più sicura per un costo inferiore in termini di emissioni. Questo renderà Ethereum una blockchain davvero a basse emissioni, potenziandone la sicurezza e la scalabilità.",
+ "page-what-is-ethereum-more-on-energy-consumption": "Maggiori informazioni sul consumo energetico",
+ "page-what-is-ethereum-energy-consumption-chart-legend": "Consumo energetico annuo in TW/anno",
+ "page-what-is-ethereum-the-merge-update": "L'aggiornamento della Fusione",
+ "page-what-is-ethereum-additional-reading": "Letture di approfondimento",
"page-what-is-ethereum-week-in-ethereum": "Settimana in Ethereum News",
"page-what-is-ethereum-week-in-ethereum-desc": "- Una newsletter settimanale che copre gli sviluppi chiave nell'intero ecosistema.",
"page-what-is-ethereum-the-year-in-ethereum-2021": "L'Anno in Ethereum 2021",
diff --git a/src/intl/ja/page-developers-docs.json b/src/intl/ja/page-developers-docs.json
index 68f48642a39..6203e58d3e2 100644
--- a/src/intl/ja/page-developers-docs.json
+++ b/src/intl/ja/page-developers-docs.json
@@ -1,64 +1,129 @@
{
"docs-nav-accounts": "アカウント",
+ "docs-nav-accounts-description": "残高を保持してトランザクションを送信できるネットワーク内のエンティティ",
"docs-nav-advanced": "詳細",
"docs-nav-backend-apis": "バックエンドAPI",
"docs-nav-block-explorers": "ブロックエクスプローラー",
"docs-nav-blocks": "ブロック",
+ "docs-nav-blocks-description": "トランザクションがバッチ処理され、すべての実行者間で状態が同期される方法",
+ "docs-nav-bridges": "ブリッジ",
+ "docs-nav-bridges-description": "デベロッパー向けのブリッジ概要",
"docs-nav-compiling-smart-contracts": "スマートコントラクトのコンパイル",
"docs-nav-composability": "コンポーザビリティ",
- "docs-nav-consensus-mechanisms": "コンセンサスメカニズム",
+ "docs-nav-consensus-mechanisms": "合意メカニズム",
+ "docs-nav-consensus-mechanisms-description": "分散型ネットワークの個々のノードがシステムの現在の状態に合意する方法",
+ "docs-nav-gasper": "Gasper",
+ "docs-nav-weak-subjectivity": "弱い主観性",
+ "docs-nav-attestations": "アテステーション",
+ "docs-nav-keys": "鍵",
"docs-nav-data-and-analytics": "データと分析",
+ "docs-nav-data-and-analytics-description": "ブロックチェーンデータがどのように集約され、整理され、分散型アプリ(Dapp)に実装されるか",
+ "docs-nav-data-availability": "データの可用性",
+ "docs-nav-dart": "Dart",
"docs-nav-delphi": "Delphi",
"docs-nav-deploying-smart-contracts": "スマートコントラクトの導入",
"docs-nav-development-frameworks": "開発フレームワーク",
+ "docs-nav-development-frameworks-description": "イーサリアムでの開発を容易にするツール",
"docs-nav-development-networks": "開発フレームワーク",
+ "docs-nav-development-networks-description": "デプロイ前の分散型アプリ(Dapp)テストに使用されるローカルブロックチェーン環境",
"docs-nav-dot-net": ".NET",
- "docs-nav-erc-20": "ERC-20",
- "docs-nav-erc-721": "ERC-721",
+ "docs-nav-erc-20": "ERC-20: 代替可能トークン",
+ "docs-nav-erc-721": "ERC-721: NFT",
"docs-nav-erc-777": "ERC-777",
"docs-nav-erc-1155": "ERC-1155",
+ "docs-nav-erc-4626": "ERC-4626",
"docs-nav-ethereum-client-apis": "イーサリアムクライアントAPI",
+ "docs-nav-ethereum-client-apis-description": "Webアプリがイーサリアムやスマートコントラクトと連携させるための便利なライブラリ",
"docs-nav-ethereum-stack": "イーサリアムスタック",
"docs-nav-evm": "イーサリアム仮想マシン(EVM)",
+ "docs-nav-evm-description": "EVMがイーサリアムネットワーク上のすべての計算を処理",
"docs-nav-foundational-topics": "基礎的なトピック",
"docs-nav-gas": "Gas",
+ "docs-nav-gas-description": "トランザクションの処理に必要な計算能力で、トランザクションの送信者がETHで支払う",
"docs-nav-golang": "Golang",
"docs-nav-integrated-development-environments-ides": "統合開発環境 (IDE)",
+ "docs-nav-integrated-development-environments-ides-description": "分散型アプリ(Dapp)コード開発のベストな環境",
"docs-nav-intro-to-dapps": "dapps入門",
+ "docs-nav-intro-to-dapps-description": "分散型アプリケーション(Dapp)入門",
+ "docs-nav-intro-to-ether": "イーサ入門",
+ "docs-nav-intro-to-ether-description": "イーサの簡単な概要",
"docs-nav-intro-to-ethereum": "イーサリアム入門",
+ "docs-nav-intro-to-ethereum-description": "イーサリアムの簡単な概要",
"docs-nav-intro-to-the-stack": "スタック入門",
+ "docs-nav-intro-to-the-stack-description": "イーサリアム/Web3スタックの概要",
"docs-nav-java": "Java",
"docs-nav-java-script-apis": "JavaScript APIs",
"docs-nav-javascript": "JavaScript",
+ "docs-nav-json-rpc": "JSON-RPC",
+ "docs-nav-mev": "最大抽出可能価値(MEV)",
+ "docs-nav-mev-description": "ブロック報酬以外でイーサリアムブロックチェーンから価値が抽出される方法",
"docs-nav-mining": "マイニング",
+ "docs-nav-mining-algorithms": "マイニングアルゴリズム",
+ "docs-nav-dagger-hashamoto": "Dagger-Hashamoto",
+ "docs-nav-ethash": "Ethash",
"docs-nav-networks": "ネットワーク",
+ "docs-nav-networks-description": "テストネットワークを含むイーサリアムの実装",
"docs-nav-nodes-and-clients": "ノードとクライアント",
+ "docs-nav-nodes-and-clients-description": "ネットワークに参加している個人、およびトランザクションを検証するために実行されるソフトウェア",
+ "docs-nav-opcodes": "オペコード",
+ "docs-nav-run-a-node": "ノードの運用",
+ "docs-nav-client-diversity": "クライアントの多様性",
"docs-nav-nodes-as-a-service": "サービスとしてのノード",
"docs-nav-oracles": "オラクル",
+ "docs-nav-oracles-description": "イーサリアムブロックチェーンに情報がどのように組み込まれるか",
"docs-nav-programming-languages": "プログラミング言語",
+ "docs-nav-programming-languages-description": "既に知っている言語でイーサリアムを使い始める方法",
"docs-nav-proof-of-stake": "プルーフオブステーク",
"docs-nav-proof-of-work": "プルーフ・オブ・ワーク",
"docs-nav-python": "Python",
- "docs-nav-readme": "README",
+ "docs-nav-readme": "概要",
+ "docs-nav-ruby": "Ruby",
"docs-nav-rust": "Rust",
- "docs-nav-scaling": "拡大縮小",
- "docs-nav-smart-contract-security": "セキュリティ",
+ "docs-nav-scaling": "スケーリング",
+ "docs-nav-scaling-description": "イーサリアムの規模拡大にあわせて、分散化とセキュリティを維持する方法",
+ "docs-nav-scaling-optimistic-rollups": "オプティミスティック・ロールアップ",
+ "docs-nav-scaling-zk-rollups": "ゼロ知識ロールアップ",
+ "docs-nav-scaling-channels": "ステートチャンネル",
+ "docs-nav-scaling-sidechains": "サイドチェーン",
+ "docs-nav-scaling-plasma": "プラズマ",
+ "docs-nav-scaling-validium": "Validium",
+ "docs-nav-smart-contract-security": "スマートコントラクトのセキュリティ",
+ "docs-nav-smart-contract-security-description": "スマートコントラクトへの攻撃と脆弱性を管理する最善の方法",
+ "docs-nav-smart-contract-formal-verification": "スマートコントラクト形式検証",
+ "docs-nav-smart-contract-formal-verification-description": "イーサリアムのスマートコントラクトにおける形式検証入門",
"docs-nav-smart-contract-anatomy": "スマートコントラクト機構",
"docs-nav-smart-contract-languages": "スマートコントラクト言語",
"docs-nav-smart-contracts": "スマートコントラクト",
+ "docs-nav-smart-contracts-description": "トランザクションによりトリガーされ、機能を実行するイーサリアムアドレスに存在するプログラム",
"docs-nav-smart-contracts-libraries": "スマートコントラクトライブラリ",
"docs-nav-standards": "スタンダード",
+ "docs-nav-standards-description": "プロジェクトの効率性とコミュニティへのアクセス性を維持する合意されたプロトコル",
"docs-nav-storage": "ストレージ",
+ "docs-nav-storage-description": "分散型ストレージ構造とメカニズム",
"docs-nav-testing-smart-contracts": "スマートコントラクトのテスト",
- "docs-nav-token-standards": "トークンの基準",
+ "docs-nav-token-standards": "トークン標準",
"docs-nav-transactions": "トランザクション",
- "docs-nav-web2-vs-web3": "Web2 vs Web3",
+ "docs-nav-transactions-description": "イーサリアムの状態を変化させる送金やその他のアクション",
+ "docs-nav-upgrading-smart-contracts": "スマートコントラクトのアップグレード",
+ "docs-nav-verifying-smart-contracts": "スマートコントラクトの検証",
+ "docs-nav-web2-vs-web3": "Web2とWeb3の比較",
+ "docs-nav-web2-vs-web3-description": "ブロックチェーンベースのアプリケーションの根本的な違い",
+ "docs-nav-networking-layer": "ネットワークレイヤー",
+ "docs-nav-networking-layer-description": "イーサリアムのネットワークレイヤーの説明",
+ "docs-nav-networking-layer-network-addresses": "ネットワークアドレス",
+ "docs-nav-data-structures-and-encoding": "データ構造とエンコード",
+ "docs-nav-data-structures-and-encoding-description": "イーサリアムスタックで使用されるデータ構造とエンコーディングスキーマの紹介",
+ "docs-nav-data-structures-and-encoding-rlp": "再帰長さプレフィックス(RLP)",
+ "docs-nav-data-structures-and-encoding-patricia-merkle-trie": "パトリシア・マークル・ツリー",
+ "docs-nav-data-structures-and-encoding-ssz": "シンプル・シリアライズ(SSZ)",
+ "docs-nav-data-structures-and-encoding-web3-secret-storage": "Web3シークレットストレージの定義",
+ "docs-nav-rewards-and-penalties": "PoS報酬とペナルティー",
"page-calltocontribute-desc-1": "あなたがトピックの専門家であり、貢献したい場合は、知識を使ってこのページを編集してください。",
- "page-calltocontribute-desc-2": "貢献者として名前が記載され、イーサリウムコミュニティを助けることになります!",
+ "page-calltocontribute-desc-2": "貢献者として名前が記載され、イーサリアムコミュニティを助けることになります!",
"page-calltocontribute-desc-3": "この柔軟性を使用する",
"page-calltocontribute-desc-4": "質問がありますか?こちらの #content チャンネルでお問い合わせください",
"page-calltocontribute-link": "ドキュメントテンプレート",
- "page-calltocontribute-link-2": "Discord サーバー",
+ "page-calltocontribute-link-2": "Discord サーバ",
"page-calltocontribute-span": "ページを編集",
"page-calltocontribute-title": "このページについてご協力ください。"
}
diff --git a/src/intl/nl/page-staking.json b/src/intl/nl/page-staking.json
index 83d311a8d1d..3a156ba3737 100644
--- a/src/intl/nl/page-staking.json
+++ b/src/intl/nl/page-staking.json
@@ -1,63 +1,196 @@
{
- "page-staking-just-staking": "Staking",
"page-staking-image-alt": "Afbeelding van de Rhino-mascotte voor het staking launchpad.",
- "page-staking-51-desc-1": "Staking maakt het deelnemen aan het netwerk als validator toegankelijker zodat er waarschijnlijk meer validators in het netwerk zullen zijn dan nu het geval is. Dit zal dit soort aanvallen nog moeilijker maken, aangezien de kosten van een aanval zullen toenemen.",
- "page-staking-accessibility": "Meer toegankelijk",
- "page-staking-accessibility-desc": "Met eenvoudigere hardwarevereisten en de mogelijkheid om te poolen als u geen 32 ETH heeft, kunnen meer mensen deelnemen aan het netwerk. Dit zal Ethereum gedecentraliseerder en veiliger maken door het aanvalsoppervlak te verminderen.",
- "page-staking-at-stake": "Uw ETH staat op het spel",
- "page-staking-at-stake-desc": "Omdat u uw ETH moet staken om transacties te valideren en nieuwe blokken te creëren, kunt u het verliezen als u besluit om te proberen het systeem te bedriegen.",
- "page-staking-benefits": "Voordelen van staking op Ethereum",
+ "page-staking-benefits-1-title": "Verdien beloningen",
+ "page-staking-benefits-1-description": "Beloningen worden gegeven voor acties die het netwerk helpen consensus te bereiken. U krijgt beloningen voor het uitvoeren van software die transacties samenvoegt in nieuwe blokken en het werk van andere validators controleert, omdat dat de chain veilig laat werken.",
+ "page-staking-benefits-2-title": "Betere beveiliging",
+ "page-staking-benefits-2-description": "Het netwerk wordt sterker tegen aanvallen naarmate meer ETH wordt gestaked, omdat er dan meer ETH nodig is om de meerderheid van het netwerk te controleren. Om een bedreiging te worden moet u de meerderheid van de validators bezitten, wat betekent dat u de meerderheid van ETH in het systeem moet controleren - dat is heel veel!",
+ "page-staking-benefits-3-title": "Duurzamer",
+ "page-staking-benefits-3-description": "Stakers hebben geen energie-intensieve computers nodig om deel te nemen aan een proof-of-stake-systeem: een thuiscomputer of smartphone voldoet. Dit maakt Ethereum ook beter voor het milieu.",
+ "page-staking-benefits-3-link": "Meer over Ethereums energieverbruik",
"page-staking-check-address": "Controleer stortingsadres",
- "page-staking-consensus": "Meer over consensusmechanismen",
"page-staking-deposit-address": "Controleer het stortingsadres",
"page-staking-deposit-address-desc": "Als u de instellingsinstructies op de launchpad al heeft gevolgd, weet u dat u een transactie moet verzenden naar het staking-stortingscontract. We raden u aan om het adres zeer zorgvuldig te controleren. U kunt het officiële adres op ethereum.org en een aantal andere vertrouwde websites vinden.",
- "page-staking-desc-1": "Beloningen worden gegeven voor acties die het netwerk helpen consensus te bereiken. U krijgt beloningen voor het batchen van transacties in een nieuw blok of het controleren van het werk van andere validators, omdat dat de keten veilig laat draaien.",
- "page-staking-desc-2": "Hoewel u beloningen kunt verdienen voor het doen van werk dat goed is voor het netwerk, kunt u ETH verliezen als gevolg van kwaadaardige acties, offline gaan en niet valideren.",
- "page-staking-desc-3": "U heeft 32 ETH nodig om een volledige validator van ETH te worden of om deel te nemen aan een staking-pool. U zult ook een executie-client (voorheen 'Eth1 client') moeten uitvoeren. Het launchpad zal u de proces- en hardwarevereisten laten doorlopen. Of u kunt een backend-API gebruiken.",
- "page-staking-description": "Staking is de daad van het storten van 32 ETH om validatorsoftware te activeren. Als validator bent u verantwoordelijk voor het opslaan van gegevens, het verwerken van transacties en het toevoegen van nieuwe blokken aan de blockchain. Dit houdt Ethereum veilig voor iedereen en u verdient nieuwe ETH tijdens het proces. Dit proces, bekend als proof-of-stake, wordt geïntroduceerd door de Beacon Chain.",
- "page-staking-docked": "Meer over de merge",
- "page-staking-dyor": "Doe uw eigen onderzoek",
- "page-staking-dyor-desc": "Geen van de vermelde staking-diensten zijn officiële goedkeuringen. Zorg ervoor dat u wat onderzoek doet om uit te zoeken welke dienst het beste voor u kan zijn.",
- "page-staking-header-1": "Stake uw ETH om een Ethereum-validator te worden",
- "page-staking-how-much": "Hoeveel bent u bereid om te staken?",
- "page-staking-how-to-stake": "Hoe te staken",
- "page-staking-how-to-stake-desc": "Het hangt allemaal af van hoeveel u bereid bent om te staken. U heeft 32 nodig om een volledige validator te worden, maar het is mogelijk om minder te staken.",
- "page-staking-join": "Doe mee",
+ "page-staking-description": "Staking is de daad van het storten van 32 ETH om validatorsoftware te activeren. Als validator bent u verantwoordelijk voor het opslaan van gegevens, het verwerken van transacties en het toevoegen van nieuwe blokken aan de blockchain. Dit houdt Ethereum veilig voor iedereen en u verdient nieuwe ETH tijdens het proces.",
+ "page-staking-hero-title": "Zo staket u uw ETH",
+ "page-staking-hero-header": "Verdien beloningen terwijl u Ethereum beveiligt",
+ "page-staking-hero-subtitle": "Staking is een publiek goed voor het Ethereum-ecosysteem. Elke gebruiker met een willekeurige hoeveelheid ETH kan het netwerk helpen beveiligen en beloningen verdienen tijdens het proces.",
+ "page-staking-dropdown-text": "Staking-opties",
+ "page-staking-dropdown-aria": "Vervolgkeuzemenu van staking-opties",
+ "page-staking-dropdown-home": "Staking-startpagina",
+ "page-staking-dropdown-solo": "Solo staking",
+ "page-staking-more-on-solo": "Meer over solo staking",
+ "page-staking-learn-more-solo": "Meer informatie over solo staking",
+ "page-staking-dropdown-saas": "Staking-as-a-service",
+ "page-staking-saas-with-abbrev": "Staking-as-a-service (SaaS)",
+ "page-staking-more-on-saas": "Meer over staking-as-a-service",
+ "page-staking-learn-more-saas": "Meer informatie over staking-as-a-service",
+ "page-staking-dropdown-pools": "Gepoolde staking",
+ "page-staking-more-on-pools": "Meer over gepoolde staking",
+ "page-staking-learn-more-pools": "Meer informatie over gepoolde staking",
+ "page-staking-section-what-title": "Wat is staking?",
+ "page-staking-section-what-p": "Staking is de actie van vergrendeling van ETH om u het recht te geven om deel te nemen aan blokvoorstellen op het netwerk. Wie zelfs maar een kleine hoeveelheid ETH in bezit heeft, kan overwegen om te staken.",
+ "page-staking-section-what-link": "Leer hoe u ETH kunt krijgen",
+ "page-staking-section-why-title": "Waarom uw ETH staken?",
+ "page-staking-section-why-p1": "Het hangt af van de mate waarin u bereid bent om te staken. U heeft 32 ETH nodig om een volledige validator te worden, maar u kunt ook met minder staken.",
+ "page-staking-section-why-p2": "Bekijk de onderstaande opties en kies de optie die het beste is voor u en voor het netwerk.",
+ "page-staking-hierarchy-solo-h2": "Solo thuisstaking",
+ "page-staking-hierarchy-solo-pill-1": "Meest impactvol",
+ "page-staking-hierarchy-solo-pill-2": "Volledige controle",
+ "page-staking-hierarchy-solo-pill-3": "Volledige beloningen",
+ "page-staking-hierarchy-solo-pill-4": "Vertrouwensloos",
+ "page-staking-hierarchy-solo-p1": "Solo staking op Ethereum is de gouden standaard voor staking. Het biedt volledige deelnamebeloningen, verbetert de decentralisatie van het netwerk en u hoeft nooit iemand anders te vertrouwen met uw geld.",
+ "page-staking-hierarchy-solo-p2": "Degenen die denken aan solo staking moeten ten minste 32 ETH hebben en een speciale computer die ~24/7 is aangesloten op internet. Ietwat technische know-how is nuttig, maar er bestaan nu eenvoudig te gebruiken tools om dit proces te helpen vereenvoudigen.",
+ "page-staking-hierarchy-saas-pill-1": "Uw 32 ETH",
+ "page-staking-hierarchy-saas-pill-2": "Uw validatorsleutels",
+ "page-staking-hierarchy-saas-pill-3": "Toevertrouwde node-bewerking",
+ "page-staking-hierarchy-saas-p1": "Als u geen gebruik wilt maken van hardware of zich daarmee niet op uw gemak voelt, maar toch uw 32 ETH wilt staken, dan maken staking-as-a-service-opties het mogelijk om het moeilijke deel te delegeren terwijl u native blokbeloningen ontvangt.",
+ "page-staking-hierarchy-saas-p2": "Deze opties helpen u meestal met het maken van een set validatorgegevens, het uploaden van uw ondertekeningssleutels en het storten van uw 32 ETH. Hierdoor kan de service valideren in uw naam.",
+ "page-staking-hierarchy-saas-p3": "Deze methode van staking vereist een zeker vertrouwen in de provider. Om risico's van tegenpartijen te beperken, worden de sleutels om uw ETH in te trekken meestal in uw bezit gehouden.",
+ "page-staking-hierarchy-pools-pill-1": "Stake een willekeurige hoeveelheid",
+ "page-staking-hierarchy-pools-pill-2": "Verdien beloningen",
+ "page-staking-hierarchy-pools-pill-3": "Houd het simpel",
+ "page-staking-hierarchy-pools-pill-4": "Populair",
+ "page-staking-hierarchy-pools-p1": "Verschillende pooling-oplossingen bestaan nu om gebruikers te helpen die geen 32 ETH hebben om te staken of die zich daarbij niet op hun gemak voelen.",
+ "page-staking-hierarchy-pools-p2": "Veel van deze opties staan bekend als \"liquide staking\" waarbij een ERC-20-liquiditeitstoken betrokken is dat uw gestakete ETH vertegenwoordigt.",
+ "page-staking-hierarchy-pools-p3": "Liquide staking maakt het makkelijk en mogelijk om op elk moment een stake af te sluiten, en maakt daarom staken zo eenvoudig als een token swap. Deze optie stelt gebruikers ook in staat om hun middelen in hun eigen Ethereum-portemonnee te bewaren.",
+ "page-staking-hierarchy-pools-p4": "Gepoolde staking zit niet origineel in het Ethereum-netwerk. Derde partijen bouwen deze oplossingen en deze dragen hun eige risico's.",
+ "page-staking-hierarchy-cex-h2": "Gecentraliseerde exchanges",
+ "page-staking-hierarchy-cex-pill-1": "Minst impactvol",
+ "page-staking-hierarchy-cex-pill-2": "Hoogste vertrouwensaannames",
+ "page-staking-hierarchy-cex-p1": "Veel gecentraliseerde exchanges bieden stakingdiensten aan, voor als u ETH nog niet in uw eigen portemonnee wilt houden. Ze kunnen een noodoplossing zijn en stellen u in staat om wat opbrengsten te verdienen met uw ETH, met minimale toezicht of inspanning.",
+ "page-staking-hierarchy-cex-p2": "De afweging hier is dat gecentraliseerde aanbieders grote pools van ETH consolideren om grote aantallen validators uit te voeren. Dit kan gevaarlijk zijn voor het netwerk en zijn gebruikers, omdat het een groot gecentraliseerd doel en punt van mislukking creëert, waardoor het netwerk kwetsbaarder wordt voor aanvallen of bugs.",
+ "page-staking-hierarchy-cex-p3": "Als u zich niet op uw gemak voelt om uw eigen sleutels te bewaren, is dat oké. Deze opties zijn er voor u. Bekijk in de tussentijd onze portemonneepagina, waar u kunt beginnen te leren hoe u echt eigenaar wordt van uw fondsen. Als u gereed bent, kunt u terugkomen en uw staking naar een hoger niveau tillen door een van de gepoolde stakingdiensten met zelfbewaring uit te proberen.",
+ "page-staking-hierarchy-subtext": "Zoals u wellicht heeft opgemerkt, zijn er veel manieren om deel te nemen aan het staken van Ethereum. Deze paden zijn gericht op een breed scala aan gebruikers en zijn uiteindelijk uniek en verschillend in termen van risico's, beloningen en vertrouwensaannames. Sommige zijn gedecentraliseerder, grondiger getest en/of riskanter dan andere. Wij bieden wat informatie over populaire projecten in deze ruimte, maar doe altijd uw eigen onderzoek voordat u uw ETH naar een ander adres stuurt.",
+ "page-staking-comparison-solo-saas": "Met SaaS-providers bent u nog steeds verplicht om 32 ETH te storten, maar hoeft u geen hardware te draaien. U behoudt meestal de toegang tot uw validatorsleutels, maar moet ook uw ondertekeningssleutels delen, zodat de beheerder kan optreden namens uw validator. Dit introduceert een laag van vertrouwen dat niet aanwezig is bij het draaien van uw eigen hardware, en in tegenstelling tot solo staking thuis, helpt SaaS niet zo veel bij de geografische verdeling van nodes. Als u zich niet op uw gemak voelt om hardware te gebruiken, maar toch nog steeds 32 ETH wilt staken, kan het gebruik van een SaaS-provider een goede optie voor u zijn.",
+ "page-staking-comparison-solo-pools": "Solo staking is beduidend meer werk dan staking met een pooling-service, maar het biedt volledige toegang tot ETH-beloningen en volledige controle over de installatie en beveiliging van uw validator. Gepoolde staking heeft een aanzienlijk lagere toegangsdrempel. Gebruikers kunnen kleine hoeveelheden ETH storten, zijn niet verplicht om validatorsleutels te genereren en hebben geen hardwarevereisten buiten een standaard internetverbinding. Liquiditeitstokens maken het mogelijk om staking af te sluiten voordat dit op protocolniveau wordt ingeschakeld. Als u geïnteresseerd bent in deze functies, is gepoolde staking misschien een goede fit.",
+ "page-staking-comparison-saas-solo": "Gelijkenissen omvatten het hebben van uw eigen validatorsleutels zonder fondsen te hoeven poolen, maar met SaaS moet u een derde partij vertrouwen, die mogelijk kwaadwillig optreedt of zelf het doelwit wordt van aanvallen of regelgeving. Als deze vertrouwensaannames of centralisatierisico's u zorgen baren, is de gouden standaard van zelf-soeverein staken het solo staken.",
+ "page-staking-comparison-saas-pools": "Deze zijn vergelijkbaar wat betreft het feit dat u meestal op iemand anders vertrouwt voor het uitvoeren van de validator-client, maar in tegenstelling tot SaaS kunt u met gepoolde staking deelnemen met kleinere hoeveelheden ETH. Als u wilt staken met minder dan 32 ETH, overweeg dan om deze opties te bekijken.",
+ "page-staking-comparison-pools-solo": "Gepoolde staking heeft een aanzienlijk lagere toegangsdrempel in vergelijking met solo staking, maar brengt extra risico's met zich mee door alle node-activiteiten te delegeren naar een derde partij, en met een vergoeding. Solo staking geeft volledige soevereiniteit en controle over de keuzes die worden gemaakt bij het kiezen van een staking-instelling. Stakers hoeven nooit hun sleutels over te dragen, en ze verdienen volledige beloningen zonder dat tussenpersonen een deel krijgen.",
+ "page-staking-comparison-pools-saas": "Deze zijn vergelijkbaar wat betreft het feit dat stakers de validatorsoftware zelf niet uitvoeren, maar in tegenstelling tot de pooling-opties vereist SaaS een storting van de volledige 32 ETH om een validator te activeren. De staker accumuleert de beloningen, waarbij meestal een maandelijkse vergoeding of een andere stake nodig is om de service te kunnen gebruiken. Als u liever uw eigen validatorsleutels heeft en op z'n minst 32 ETH wilt storten, is het gebruik van een SaaS-provider misschien een goede optie voor u.",
+ "page-staking-considerations-solo-1-title": "Open source",
+ "page-staking-considerations-solo-1-description": "Essentiële code is 100% open source en beschikbaar voor het publiek om te forken en te gebruiken",
+ "page-staking-considerations-solo-1-warning": "Gesloten source",
+ "page-staking-considerations-solo-2-title": "Geaudit",
+ "page-staking-considerations-solo-2-description": "Essentiële code heeft een formele controle ondergaan waarvan de resultaten gepubliceerd en openbaar beschikbaar zijn",
+ "page-staking-considerations-solo-2-warning": "Geen",
+ "page-staking-considerations-solo-3-title": "Bug bounty",
+ "page-staking-considerations-solo-3-description": "Een publieke bug bounty is uitgevoerd op alle essentiële code om gebruikers te belonen voor het veilig rapporteren en/of oplossen van kwetsbaarheden",
+ "page-staking-considerations-solo-3-valid": "Momenteel actief",
+ "page-staking-considerations-solo-3-caution": "Voltooid",
+ "page-staking-considerations-solo-4-title": "Grondig getest",
+ "page-staking-considerations-solo-4-description": "Software is beschikbaar geweest en werd door het publiek gebruikt gedurende de aangegeven periode",
+ "page-staking-considerations-solo-4-valid": "Live > 1 jaar",
+ "page-staking-considerations-solo-4-caution": "Live > 6 maanden",
+ "page-staking-considerations-solo-4-warning": "Nieuw uitgebracht",
+ "page-staking-considerations-solo-5-title": "Vertrouwensloos",
+ "page-staking-considerations-solo-5-description": "Validatorsleutels worden op geen enkel moment in de validatorlevenscyclus aan een ander mens toevertrouwd. Alle smart contracts die hierbij betrokken zijn, zijn vrij van achterdeuren, zonder afhankelijkheid van bevoorrechte toestemmingen voor de uitvoering.",
+ "page-staking-considerations-solo-5-warning": "Vertrouwd",
+ "page-staking-considerations-solo-6-title": "Permissieloos",
+ "page-staking-considerations-solo-6-description": "Gebruikers hebben geen speciale toestemming nodig om een validator te beheren met behulp van de software of service",
+ "page-staking-considerations-solo-6-valid": "Geen toestemming",
+ "page-staking-considerations-solo-6-warning": "Toestemming vereist",
+ "page-staking-considerations-solo-7-title": "Multi-client",
+ "page-staking-considerations-solo-7-description": "Software stelt gebruikers in staat om te kiezen uit ten minste twee of meer consensuslaag-clients en daartussen te wisselen",
+ "page-staking-considerations-solo-7-valid": "Eenvoudig wisselen van client",
+ "page-staking-considerations-solo-7-warning": "Beperkt tot meerderheid-client",
+ "page-staking-considerations-solo-8-title": "Zelfbewaring",
+ "page-staking-considerations-solo-8-description": "De gebruiker bewaart alle validatorgegevens, inclusief ondertekenings- en opnamesleutels",
+ "page-staking-considerations-solo-8-warning": "Derde-bewaarder",
+ "page-staking-considerations-solo-9-title": "Economisch",
+ "page-staking-considerations-solo-9-description": "Gebruikers kunnen een validator behren door minder dan 32 ETH te staken, gebruik makend van gepoolde fondsen van anderen",
+ "page-staking-considerations-solo-9-valid": "< 32 ETH",
+ "page-staking-considerations-solo-9-warning": "32 ETH",
+ "page-staking-considerations-saas-4-description": "De service is beschikbaar geweest en is gebruikt door het publiek gedurende de aangegeven periode",
+ "page-staking-considerations-saas-6-description": "Gebruikers hebben geen speciale toestemming, accountaanmelding of KYC nodig om deel te nemen aan de service",
+ "page-staking-considerations-saas-6-valid": "Iedereen kan deelnemen",
+ "page-staking-considerations-saas-6-warning": "Toestemming vereist",
+ "page-staking-considerations-saas-7-title": "Diverse clients",
+ "page-staking-considerations-saas-7-description": "De service zou niet meer dan 50% van zijn geaggregeerde validators met een meerderheidsvalidator-client moeten draaien",
+ "page-staking-considerations-saas-7-valid": "Minder dan 50%",
+ "page-staking-considerations-saas-7-caution": "Momenteel onbekend",
+ "page-staking-considerations-saas-7-warning": "Meer dan 50%",
+ "page-staking-considerations-pools-5-description": "Voor deze service is het niet nodig om mensen te vertrouwen om uw sleutels te bewaren of beloningen te distribueren",
+ "page-staking-considerations-pools-6-title": "Permissieloze nodes",
+ "page-staking-considerations-pools-6-description": "Deze service laat iedereen deelnemen als nodebeheerder voor de pool, zonder dat er toestemming nodig is",
+ "page-staking-considerations-pools-7-description": "De service zou niet meer dan 50% van zijn geaggregeerde validators met een supermeerderheidsvalidator-client moeten draaien",
+ "page-staking-considerations-pools-8-title": "Liquiditeitstoken",
+ "page-staking-considerations-pools-8-description": "Biedt verhandelbare liquiditeitstoken aan die uw gestakete ETH vertegenwoordigt, bewaard in uw eigen portemonnee",
+ "page-staking-considerations-pools-8-valid": "Liquiditeitstoken(s)",
+ "page-staking-considerations-pools-8-warning": "Geen liquiditeitstoken",
+ "page-staking-how-solo-works-item-1": "Verkrijg enige hardware: u moet een node uitvoeren om te kunnen staken.",
+ "page-staking-how-solo-works-item-2": "Synchroniseer een uitvoeringslaag-client",
+ "page-staking-how-solo-works-item-3": "Synchroniseer een consensuslaag-client",
+ "page-staking-how-solo-works-item-4": "Genereer uw sleutels en laad ze in uw validator-client",
+ "page-staking-how-solo-works-item-5": "Monitor en onderhoud uw node",
+ "page-staking-launchpad-widget-testnet-label": "Goerli/Prater-testnet",
+ "page-staking-launchpad-widget-testnet-start": "Start met staken op het Goerli/Prater-testnet",
+ "page-staking-launchpad-widget-mainnet-label": "Hoofdnet",
+ "page-staking-launchpad-widget-mainnet-start": "Start met staken op het hoofdnet",
+ "page-staking-launchpad-widget-span": "Kies een netwerk",
+ "page-staking-launchpad-widget-p1": "Van solo validators wordt verwacht dat ze hun instellingen en operationele vaardigheden op het Goerli/Prater-testnet testen voordat ze fondsen riskeren. Vergeet niet dat het belangrijk is om een minoriteit-client te kiezen, omdat dit de veiligheid van het netwerk verbetert en uw risico beperkt.",
+ "page-staking-launchpad-widget-p2": "Als u er zich mee op uw gemak voelt, kunt u alles instellen wat nodig is vanuit de opdrachtregel met behulp van alleen het Staking Launchpad.",
+ "page-staking-launchpad-widget-p3": "Om dingen makkelijker te maken, staan hieronder enkele tools en handleidingen die u kunnen helpen om samen met het Staking Launchpad uw clients eenvoudig in te stellen.",
+ "page-staking-launchpad-widget-link": "Softwaretools en -handleiding",
+ "page-staking-products-get-started": "Aan de slag",
+ "page-staking-stats-box-metric-1": "Totaal gestakete ETH",
+ "page-staking-stats-box-metric-2": "Totaal aantal validators",
+ "page-staking-stats-box-metric-3": "Huidige APR",
+ "page-staking-section-comparison-subtitle": "Er is geen uniforme oplossing voor staking, elke oplossing is uniek. Hier zullen we enkele van de risico's, beloningen en vereisten vergelijken van de verschillende manieren waarop u kunt staken.",
+ "page-staking-section-comparison-rewards-title": "Beloningen",
+ "page-staking-section-comparison-solo-rewards-li1": "Maximale beloningen - ontvang volledige beloningen direct via het protocol",
+ "page-staking-section-comparison-solo-rewards-li2": "U krijgt beloningen voor het batchen van transacties in een nieuw blok of het controleren van het werk van andere validators om de chain veilig te doen draaien",
+ "page-staking-section-comparison-solo-rewards-li3": "U ontvangt ook onverbrande transactievergoedingen voor blokken die u voorstelt",
+ "page-staking-section-comparison-saas-rewards-li1": "Meestal gaat het om volledige protocolbeloningen min de maandelijkse kosten voor de node-activiteiten",
+ "page-staking-section-comparison-saas-rewards-li2": "Dashboards zijn vaak beschikbaar om uw validator-client gemakkelijk te volgen",
+ "page-staking-section-comparison-pools-rewards-li1": "Gepoolde stakers krijgen beloningen op verschillende wijze, afhankelijk van de gekozen methode van gepoolde staking",
+ "page-staking-section-comparison-pools-rewards-li2": "Veel gepoolde stakingdiensten bieden één of meer liquiditeitstokens aan die uw gestakete ETH plus uw aandeel van de validatorbeloningen vertegenwoordigen",
+ "page-staking-section-comparison-pools-rewards-li3": "Liquiditeitstokens kunnen worden bewaard in uw eigen portemonnee, gebruikt worden in Defi en verkocht worden als u besluit om te stoppen",
+ "page-staking-section-comparison-risks-title": "Risico's",
+ "page-staking-section-comparison-solo-risks-li1": "Jouw ETH staat op het spel",
+ "page-staking-section-comparison-solo-risks-li2": "Er zijn boetes, die ETH kosten, voor het offline gaan",
+ "page-staking-section-comparison-solo-risks-li3": "Kwaadwillig gedrag kan resulteren in het 'slashen' van grotere hoeveelheden ETH en gedwongen verwijdering uit het netwerk",
+ "page-staking-section-comparison-saas-risks-li1": "Dezelfde risico's als bij solo staking, plus tegenpartijrisico van de serviceprovider",
+ "page-staking-section-comparison-saas-risks-li2": "Gebruik van uw ondertekeningssleutels is toevertrouwd aan iemand anders, die zich kwaadwillig zou kunnen gedragen",
+ "page-staking-section-comparison-pools-risks-li1": "Risico's verschillen afhankelijk van de gebruikte methode",
+ "page-staking-section-comparison-pools-risks-li2": "Risico's bestaan in het algemeen uit een combinatie van risico qua tegenpartijen, smart contracts en uitvoering",
+ "page-staking-section-comparison-requirements-title": "Vereisten",
+ "page-staking-section-comparison-solo-requirements-li1": "U moet 32 ETH storten",
+ "page-staking-section-comparison-solo-requirements-li2": "Onderhoud hardware die zowel een uitvoering-client als consensus-client van Ethereum draait, terwijl u verbonden bent met internet",
+ "page-staking-section-comparison-solo-requirements-li3": "Het Staking Launchpad zal u het proces en de hardwarevereisten laten doorlopen",
+ "page-staking-section-comparison-saas-requirements-li1": "Stort 32 ETH en genereer uw sleutels met hulp",
+ "page-staking-section-comparison-saas-requirements-li2": "Sla uw sleutels veilig op",
+ "page-staking-section-comparison-saas-requirements-li3": "Wij zorgen voor de rest, maar specifieke services kunnen variëren",
+ "page-staking-section-comparison-pools-requirements-li1": "Laagste ETH-vereisten, sommige projecten vereisen niet meer dan maar 0,01 ETH",
+ "page-staking-section-comparison-pools-requirements-li2": "Stort direct vanuit uw portemonnee naar verschillende gepoolde staking-platformen of verhandel simpelweg voor een van de staking-liquiditeitstokens",
+ "page-staking-faq-1-question": "Wat is een validator?",
+ "page-staking-faq-1-answer": "Een validator is een virtuele entiteit die op Ethereum bestaat en deelneemt aan de consensus van het Ethereum-protocol. Validators worden vertegenwoordigd door een saldo, een publieke sleutel en enkele andere eigenschappen. Een validator-client is de software die namens de validator handelt door zijn privé-sleutel te bewaren en te gebruiken. Een enkele validator-client kan veel sleutelparen bezitten, die veel validators kunnen controleren.",
+ "page-staking-faq-2-question": "Waarom moet ik fondsen op het spel zetten?",
+ "page-staking-faq-2-answer": "Een validator heeft de mogelijkheid om blokken voor te stellen en te attesteren voor het netwerk. Om oneerlijk gedrag te voorkomen moeten gebruikers hun geld op het spel zetten. Hierdoor kan het protocol kwaadwillige gebruikers straffen. Staking is een middel om u eerlijk te houden, aangezien uw acties financiële gevolgen zullen hebben.",
+ "page-staking-faq-3-question": "Kan ik 'Eth2' kopen?",
+ "page-staking-faq-3-answer-p1": "Er is geen 'Eth2'-token dat bij het protocol hoort, aangezien de oorspronkelijke token ether (ETH) niet is veranderd met de overgang van Ethereum naar proof-of-stake.",
+ "page-staking-faq-3-answer-p2": "Er zijn afgeleide tokens/tickers die gestakete ETH kunnen vertegenwoordigen (d.w.z. rETH van RocketPool, stETH van Lido, ETH2 van Coinbase). Meer informatie over staking pools",
+ "page-staking-faq-4-question": "Is staking al live?",
+ "page-staking-faq-4-answer-p1": "Ja. Staking is mogelijk sinds 1 december 2020",
+ "page-staking-faq-4-answer-p2": "Dit betekent dat staking momenteel live is voor gebruikers om hun ETH te storten, een validator-client te draaien en te beginnen met het verdienen van beloningen. Na de Shanghai update kunnen stakers vervolgens beloningen en fondsen opnemen van hun validatorsaldo.",
+ "page-staking-further-reading-1-link": "Waarom Proof-of-Stake (nov. 2020)",
+ "page-staking-further-reading-author-vitalik-buterin": "Vitalik Buterin",
+ "page-staking-further-reading-2-link": "Serenity Design Rationale",
+ "page-staking-further-reading-3-link": "FAQ Proof-of-Stake (dec. 2017)",
+ "page-staking-further-reading-4-link": "Eth2-nieuws",
+ "page-staking-further-reading-4-author": "Ben Edgington",
+ "page-staking-further-reading-5-link": "Nr. 33 voltooid, de Ethereum-consensuslaag (jan. 2022)",
+ "page-staking-further-reading-5-author": "Danny Ryan",
+ "page-staking-further-reading-6-link": "Posts van attestants",
+ "page-staking-further-reading-7-link": "Beaconcha.in kennisbasis",
+ "page-staking-further-reading-8-link": "Door de Beaconcha.in community bijgedragen voorlichtingsmateriaal",
+ "page-staking-further-reading-9-link": "FAQ van Ethereum Staking Launchpad",
+ "page-staking-toc-how-to-stake-your-eth": "Zo staket u uw ETH ",
+ "page-staking-toc-comparison-of-options": "Vergelijking van staking-opties",
+ "page-staking-toc-faq": "Veelgestelde vragen",
+ "page-staking-toc-further": "Verder lezen",
+ "page-staking-dom-info-title": "Staking met Ethereum",
"page-staking-join-community": "Word lid van de staker-gemeenschap",
- "page-staking-join-community-desc": "EthStaker is a community for everyone to discuss and learn about staking on Ethereum. Join tens of thousands of members from around the globe for advice, support, and to talk all thing staking.",
- "page-staking-less-than": "Minder dan",
- "page-staking-link-1": "Bekijk backend-API's",
+ "page-staking-join-community-desc": "EthStaker is een gemeenschap waar iedereen kan discussiëren en meer informatie kan krijgen over staking op Ethereum. Sluit u aan bij tienduizenden leden van over de hele wereld voor advies, steun en om over alle andere staking-onderwerpen te praten.",
"page-staking-meta-description": "Een overzicht van staking op Ethereum: de risico's, beloningen, vereisten en waar u het kunt doen.",
- "page-staking-meta-title": "Staking op Ethereum",
- "page-staking-more-sharding": "Meer over sharding",
- "page-staking-pool": "Stake in een pool",
- "page-staking-pool-desc": "Als u minder dan 32 ETH heeft, dan heeft u de mogelijkheid om een kleinere stake toe te voegen aan een pool. Sommige bedrijven kunnen alles in uw naam doen, zodat u niet online hoeft te blijven. Hier zijn enkele bedrijven om onder de loep te nemen.",
- "page-staking-rocket-pool": "U kunt op de Rocket Pool staken door ETH om te wisselen voor het vloeibare token rETH van Rocket Pool met zo weinig als 0,01 ETH. Wilt u een node draaien? U kunt ook een staking-node draaien op Rocket Pool vanaf 16 ETH. De resterende ETH wordt toegewezen uit het Rocket Pool-protocol, waar ETH-gebruikers hebben gestort in de pool.",
- "page-staking-pos-explained": "Proof-of-stake verklaard",
- "page-staking-pos-explained-desc": "Staking is wat u moet doen om een validator te worden in een proof-of-stake-systeem. Dit is een consensusmechanisme dat het huidige proof-of-work-systeem zal vervangen. Consensusmechanismen zijn wat blockchains zoals Ethereum veilig en gedecentraliseerd houden.",
- "page-staking-pos-explained-desc-1": "Proof-of-stake helpt het netwerk beveiligen op een aantal manieren:",
- "page-staking-services": "Zie alle staking-diensten",
- "page-staking-sharding": "Ontgrendelt sharding",
- "page-staking-sharding-desc": "Sharding is alleen mogelijk met een proof-of-stake-systeem. Het sharden van een proof-of-work-systeem zou de hoeveelheid computerkracht doen afnemen die nodig is om het netwerk te beschadigen, wat het voor kwaadwillige miners gemakkelijker maakt om shards te controleren. Dit is niet het geval met willekeurig toegewezen stakers in proof-of-stake.",
- "page-staking-solo": "Stake alleen en draai een validator",
- "page-staking-solo-desc": "Om te beginnen met het staking-proces, moet u de staking-launchpad gebruiken. Hiermee doorloopt u alle instellingen. Onderdeel van staking is het draaien van een consensus-client, wat een lokale kopie van de blockchain is. Het downloaden hiervan op uw computer kan even duren.",
- "page-staking-start": "Start staking",
- "page-staking-subtitle": "Staking is een publiek goed voor het Ethereum-ecosysteem. U kunt helpen het netwerk te beveiligen en op deze manier beloningen verdienen.",
- "page-staking-sustainability": "Duurzamer",
- "page-staking-sustainability-desc": "Validators hebben geen energie-intensieve computers nodig om deel te nemen aan een proof-of-stake-systeem – slechts een laptop of smartphone. Dit zal Ethereum beter maken voor het milieu.",
- "page-staking-the-beacon-chain": "Meer over de Beacon Chain",
- "page-staking-title-1": "Beloningen",
- "page-staking-title-2": "Risico's",
- "page-staking-title-3": "Vereisten",
- "page-staking-title-4": "Hoe kunt u uw ETH staken",
- "page-staking-upgrades-li": "Proof-of-stake wordt beheerd door de Beacon Chain.",
- "page-staking-upgrades-li-2": "Ethereum zal een proof-of-stake Beacon Chain hebben en een proof-of-work hoofdnet voor de nabije toekomst. Het hoofdnet is het Ethereum dat we al jaren gebruiken.",
- "page-staking-upgrades-li-3": "Gedurende deze periode zullen stakers nieuwe blokken toevoegen aan de Beacon Chain, maar ze zullen geen hoofdnettransacties verwerken.",
- "page-staking-upgrades-li-4": "Ethereum zal volledig overschakelen op een proof-of-stake-systeem zodra het Ethereum-hoofdnet samengevoegd wordt met de Beacon Chain.",
- "page-staking-upgrades-li-5": "Een kleine upgrade zal volgen om het opnemen van gestakete fondsen mogelijk te maken.",
- "page-staking-upgrades-title": "Proof-of-stake-en consensus-upgrades",
- "page-staking-validators": "Meer validators, meer beveiliging",
- "page-staking-validators-desc": "In een blockchain als Ethereum is het mogelijk transacties te censureren en opnieuw te ordenen om het voor u geschikt te maken als u een meerderheid van het netwerk beheert. Maar om een meerderheid van het netwerk te beheren, heeft u een meerderheid van de validators nodig. En hiervoor moet u een meerderheid van de ETH in het systeem controleren - dat is veel! Deze hoeveelheid ETH groeit elke keer dat een nieuwe validator het systeem binnenkomt, waardoor de veiligheid van het netwerk wordt vergroot. Proof-of-work, het beveiligingsmodel dat door proof-of-stake vervangen zal worden, vereist van de validators (miners) dat ze beschikken over gespecialiseerde hardware en veel fysieke ruimte. Het betreden van het systeem als miner is moeilijk, dus beveiliging tegen meerderheidsaanvallen neemt niet zoveel toe. Proof-of-stake heeft deze vereisten niet, wat het netwerk (en de weerstand ervan tegen meerderheidsaanvallen) zal laten groeien tot groottes die niet mogelijk zijn met proof-of-work.",
- "page-staking-withdrawals": "Opnames zullen niet meteen live gaan",
- "page-staking-withdrawals-desc": "U kunt uw stake niet opnemen totdat toekomstige upgrades zijn geïmplementeerd. Opnames zullen beschikbaar zijn in een kleine upgrade na de merge van het hoofdnet met de Beacon Chain."
+ "page-staking-meta-title": "Staking op Ethereum"
}
diff --git a/src/intl/pl/common.json b/src/intl/pl/common.json
index b5ca3ec7be2..55cc82fce07 100644
--- a/src/intl/pl/common.json
+++ b/src/intl/pl/common.json
@@ -14,6 +14,7 @@
"beacon-chain": "Łańcuch śledzący",
"binance-logo": "Logo Binance",
"bittrex-logo": "Logo Bittrex",
+ "blog-translations": "Tłumaczenia na blogu",
"brand-assets": "Aktywa marki",
"bridges": "Mosty blockchain",
"bug-bounty": "Nagrody za bugi",
@@ -36,6 +37,7 @@
"dark-mode": "Ciemny",
"data-provided-by": "Źródło danych:",
"decentralized-applications-dapps": "Aplikacje zdecentralizowane (dapps)",
+ "decentralized-science": "Zdecentralizowana nauka (DeSci)",
"deposit-contract": "Kontrakt depozytowy",
"devcon": "Devcon",
"developers": "Deweloperzy",
@@ -106,6 +108,7 @@
"history-of-ethereum": "Historia Ethereum",
"home": "Strona główna",
"how-ethereum-works": "Jak działa Ethereum",
+ "how-to-translate": "Jak tłumaczyć",
"image": "obraz",
"in-this-section": "W tej sekcji",
"individuals": "Osoby prywatne",
@@ -135,6 +138,8 @@
"language-it": "Włoski",
"language-ja": "Japoński",
"language-ka": "Gruziński",
+ "language-kk": "kazachski",
+ "language-km": "khmerski",
"language-ko": "Koreański",
"language-lt": "Litewski",
"language-ml": "Malajski",
@@ -142,6 +147,7 @@
"language-ms": "Malajski",
"language-nb": "Norweski",
"language-nl": "Holenderski",
+ "language-ph": "filipiński",
"language-pl": "Polski",
"language-pt": "Portugalski",
"language-pt-br": "Portugalski (Brazylijski)",
@@ -157,12 +163,14 @@
"language-support": "Obsługa języków",
"language-tr": "Turecki",
"language-uk": "Ukraiński",
+ "language-uz": "uzbecki",
"language-vi": "Wietnamski",
"language-zh": "Chiński uproszczony",
"language-zh-tw": "Chiński tradycyjny",
"languages": "Języki",
"last-24-hrs": "Ostatnie 24 godziny",
"last-edit": "Ostatnia edycja",
+ "launchpad-translations": "Tłumaczenia Launchpad",
"layer-2": "Warstwa 2",
"learn": "Wiedza",
"learn-by-coding": "Nauka przez kodowanie",
@@ -184,6 +192,7 @@
"matcha-logo": "Logo Matcha",
"medalla-data-challenge": "Wyzwanie z danymi Medalla",
"merge": "Połącz",
+ "mission-and-vision": "Misja i wizja",
"more": "Więcej",
"more-info": "Więcej informacji",
"nav-beginners": "Początkujący",
@@ -206,8 +215,8 @@
"read-more": "Czytaj więcej",
"refresh": "Odśwież stronę.",
"return-home": "wróć do strony głównej",
+ "resources": "Zasoby do tłumaczenia",
"run-a-node": "Dodaj węzeł",
- "review-progress": "Przegląd postępów",
"rollup-component-website": "Strona internetowa",
"rollup-component-developer-docs": "Dokumentacja dewelopera",
"rollup-component-technology-and-risk-summary": "Technologia i podsumowanie ryzyka",
@@ -245,7 +254,6 @@
"translation-banner-title-new": "Pomóż w przetłumaczeniu tej strony",
"translation-banner-title-update": "Pomóż nam zaktualizować tę stronę",
"translation-program": "Program tłumaczeniowy",
- "translation-progress": "Postęp tłumaczenia",
"translation-banner-no-bugs-title": "Brak błędów!",
"translation-banner-no-bugs-content": "Ta strona nie jest tłumaczona. Na razie celowo zostawiliśmy tę stronę w języku angielskim.",
"translation-banner-no-bugs-dont-show-again": "Nie wyświetlaj ponownie",
@@ -269,5 +277,6 @@
"nft-page": "Tokeny niewymienialne (NFT)",
"decentralized-social-networks": "Zdecentralizowane sieci społecznościowe",
"decentralized-identity": "Zdecentralizowana tożsamość",
- "yes": "Tak"
+ "yes": "Tak",
+ "zero-knowledge-proofs": "Pakiety zbiorcze o wiedzy zerowej"
}
diff --git a/src/intl/pl/page-dapps.json b/src/intl/pl/page-dapps.json
index befc3ba9c7a..454c40c1484 100644
--- a/src/intl/pl/page-dapps.json
+++ b/src/intl/pl/page-dapps.json
@@ -19,6 +19,8 @@
"page-dapps-category-marketplaces": "Rynki",
"page-dapps-category-music": "Muzyka",
"page-dapps-category-payments": "Płatności",
+ "page-dapps-category-insurance": "Udziały",
+ "page-dapps-category-portfolios": "Portfolio",
"page-dapps-category-trading": "Rynki handlowe i prognostyczne",
"page-dapps-category-utilities": "Narzędzia",
"page-dapps-category-worlds": "Wirtualne światy",
@@ -46,6 +48,7 @@
"page-dapps-dapp-description-augur": "Obstawiaj wyniki sportowe, ekonomiczne i inne wydarzenia na świecie.",
"page-dapps-dapp-description-axie-infinity": "Handluj i walcz z istotami zwanymi Axies.\nZarabiaj podczas grania — dostępne na urządzeniach mobilnych",
"page-dapps-dapp-description-brave": "Zarabiaj tokeny za przeglądanie i wspieraj swoich ulubionych twórców.",
+ "page-dapps-dapp-description-cent": "Sieć społecznościowa, w której zarabiasz na postowanie NFT.",
"page-dapps-dapp-description-compound": "Wypożycz swoje tokeny, aby zarobić odsetki i wypłacić je w dowolnym czasie.",
"page-dapps-dapp-description-cryptopunks": "Kupuj, składaj oferty i oferuj punki na sprzedaż — jednen z pierwszych tokenów kolekcjonerskich na Ethereum.",
"page-dapps-dapp-description-cryptovoxels": "Stwórz galerię sztuki, buduj sklepy i kup ziemię — wirtualny świat Ethereum.",
@@ -57,6 +60,7 @@
"page-dapps-dapp-description-gitcoin-grants": "Finansowanie społecznościowe projektów społeczności Ethereum ze zwiększonym wkładem finansowym",
"page-dapps-dapp-description-gods-unchained": "Strategiczna handlowa gra karciana. Grając, zdobywaj karty, które możesz sprzedać w prawdziwym życiu.",
"page-dapps-dapp-description-golem": "Uzyskaj dostęp do współdzielonej mocy obliczeniowej lub wynajmuj własne zasoby.",
+ "page-dapps-dapp-description-radicle": "Bezpieczna współpraca z kodem peer-to-peer bez pośredników.",
"page-dapps-dapp-description-loopring": "Platforma transakcyjna peer-to-peer została zbudowana dla szybkości.",
"page-dapps-dapp-description-marble-cards": "Twórz unikalne karty cyfrowe oparte na adresach URL i handluj nimi.",
"page-dapps-dapp-description-matcha": "Wyszukuje wiele giełd, aby pomóc Ci znaleźć najlepsze ceny.",
@@ -64,16 +68,33 @@
"page-dapps-dapp-description-oasis": "Handluj, pożyczaj i oszczędzaj z Dai, stabilecoinem Ethereum.",
"page-dapps-dapp-description-opensea": "Kupuj, sprzedaj, odkrywaj i handluj rzeczami o limitowanej edycji.",
"page-dapps-dapp-description-opera": "Wyślij kryptowaluty ze swojej przeglądarki do sprzedawców, innych użytkowników i aplikacji.",
+ "page-dapps-dapp-description-poap": "Zbieraj NFT potwierdzające, że byłeś w różnych wirtualnych lub osobistych wydarzeniach. Użyj ich, aby dołączyć do drapieżników, głosuć, współpracować lub po prostu by zabrać.",
"page-dapps-dapp-description-polymarket": "Postaw na wyniki. Handluj na rynkach informacji.",
"page-dapps-dapp-description-pooltogether": "Loteria, której nie możesz przegapić.\nNagrody przyznawane są co tydzień.",
+ "page-dapps-dapp-description-index-coop": "Fundusz indeksu kryptowalut, który zapewnia ekspozycję portfela na najlepsze tokeny DeFi.",
+ "page-dapps-dapp-description-nexus-mutual": "Pokrycie bez towarzystwa ubezpieczeniowego. Zabezpiecz się przed błędami i hakami inteligentnych kontraktów.",
+ "page-dapps-dapp-description-etherisc": "Zdecentralizowany szablon ubezpieczeń może wykorzystać każdy, aby stworzyć własne ubezpieczenie ubezpieczeniowe.",
+ "page-dapps-dapp-description-zapper": "Śledź swoje portfolio i użyj asortymentu produktów DeFi z jednego interfejsu.",
+ "page-dapps-dapp-description-zerion": "Zarządzaj swoim portfolio i po prostu oceniaj każdy składnik DeFi na rynku.",
+ "page-dapps-dapp-description-rotki": "Narzędzie do śledzenia portfela, analizy, księgowania i raportowania podatkowego, które szanuje Twoją prywatność.",
+ "page-dapps-dapp-description-krystal": "Jednostopniowa platforma umożliwiająca dostęp do wszystkich Twoich ulubionych usług DeFi.",
"page-dapps-dapp-description-rarible": "Twórz, sprzedawaj i kupuj tokenizowane przedmioty kolekcjonerskie.",
"page-dapps-dapp-description-sablier": "Przesyłaj pieniądze w czasie rzeczywistym.",
"page-dapps-dapp-description-superrare": "Kupuj dzieła cyfrowe bezpośrednio od artystów lub na rynkach wtórnych.",
"page-dapps-dapp-description-token-sets": "Automatycznie rebalansujące strategie inwestowania kryptowalut.",
"page-dapps-dapp-description-tornado-cash": "Wyślij anonimowe transakcje na Ethereum.",
"page-dapps-dapp-description-uniswap": "Po prostu zamień tokeny lub udostępnij tokeny za % nagród.",
+ "page-dapps-docklink-dapps": "Wprowadzenie do dapps",
+ "page-dapps-docklink-smart-contracts": "Inteligentne kontrakty",
"page-dapps-dark-forest-logo-alt": "Logo Dark Forest",
"page-dapps-decentraland-logo-alt": "Logo Decentraland",
+ "page-dapps-index-coop-logo-alt": "Indeks Coop logo",
+ "page-dapps-nexus-mutual-logo-alt": "Wzajemne logo Nexus",
+ "page-dapps-etherisc-logo-alt": "Logo Ethereum",
+ "page-dapps-zapper-logo-alt": "Zapper logo",
+ "page-dapps-zerion-logo-alt": "Logo ZenGo",
+ "page-dapps-rotki-logo-alt": "Rotki logo",
+ "page-dapps-krystal-logo-alt": "Krystalowe logo",
"page-dapps-desc": "Znajdź aplikację Ethereum, aby wypróbować.",
"page-dapps-doge-img-alt": "Ilustracja pieseła siedzącego przy komputerze",
"page-dapps-editors-choice-dark-forest": "Zagraj przeciwko innym, aby zdobyć planety i wypróbować wspaniałe skalowanie/technologię prywatności Ethereum. Może dla tych, którzy znają już Ethereum.",
@@ -131,6 +152,7 @@
"page-dapps-gitcoin-logo-alt": "Logo Gitcoin",
"page-dapps-gods-unchained-logo-alt": "Logo Gods Unchained",
"page-dapps-golem-logo-alt": "Logo Golem",
+ "page-dapps-radicle-logo-alt": "Logo Rarible",
"page-dapps-hero-header": "Narzędzia i usługi oparte na Ethereum",
"page-dapps-hero-subtitle": "Aplikacje zdecentralizowane stanowią rosnący trend wśród aplikacji wykorzystujących Ethereum do przekształcania modeli biznesowych lub tworzenia nowych.",
"page-dapps-how-dapps-work-p1": "Dapps mają swój kod backendowy (inteligentne kontrakty) działający w zdecentralizowanej sieci, a nie na scentralizowanym serwerze. Używają one blockchainu Ethereum do przechowywania danych i inteligentnych kontraktów do logiki aplikacji.",
@@ -149,6 +171,7 @@
"page-dapps-magic-title-2": "za",
"page-dapps-magician-img-alt": "Ilustracja przedstawiająca magików",
"page-dapps-marble-cards-logo-alt": "Logo marble.cards",
+ "page-dapps-async-logo-alt": "Logo Asynchronic",
"page-dapps-matcha-logo-alt": "Logo Matcha",
"page-dapps-mobile-options-header": "Przeglądaj inne kategorie",
"page-dapps-nifty-gateway-logo-alt": "Logo Nifty Gateway",
@@ -156,6 +179,7 @@
"page-dapps-opensea-logo-alt": "Logo OpenSea",
"page-dapps-opera-logo-alt": "Logo Opera",
"page-dapps-polymarket-logo-alt": "Logo Polymarket",
+ "page-dapps-poap-logo-alt": "Logo protokołu potwierdzającego obecność",
"page-dapps-pooltogether-logo-alt": "Logo PoolTogether",
"page-dapps-rarible-logo-alt": "Logo Rarible",
"page-dapps-ready-button": "Przejdź",
@@ -178,5 +202,8 @@
"page-dapps-wallet-callout-title": "Wyświetl portfele",
"page-dapps-warning-header": "Zawsze przeprowadzaj własne badania",
"page-dapps-warning-message": "Ethereum to nowa technologia i większość aplikacji jest nowa. Przed wpłaceniem dużych ilości pieniędzy upewnij się, że rozumiesz ryzyko.",
- "page-dapps-what-are-dapps": "Czym są aplikacje zdecentralizowane?"
+ "page-dapps-what-are-dapps": "Czym są aplikacje zdecentralizowane?",
+ "page-dapps-more-on-defi-button": "Więcej na temat zdecentralizowanych giełd",
+ "page-dapps-more-on-nft-button": "Więcej na temat tokenów",
+ "page-dapps-more-on-nft-gaming-button": "Więcej o tokenizowanych przedmiotach w grze"
}
diff --git a/src/intl/pl/page-eth.json b/src/intl/pl/page-eth.json
index b98e325c689..acc1131621c 100644
--- a/src/intl/pl/page-eth.json
+++ b/src/intl/pl/page-eth.json
@@ -15,11 +15,11 @@
"page-eth-flexible-amounts": "Dostępne w postaci kwot elastycznych",
"page-eth-flexible-amounts-desc": "ETH jest podzielny do 18 miejsc po przecinku, więc nie musisz kupować 1 całego ETH. Możesz kupować jednorazowo części -- jeśli chcesz, to nawet 0,000000000000000001 ETH.",
"page-eth-fuels": "Paliwa ETH i zabezpieczenia Ethereum",
- "page-eth-fuels-desc": "ETH jest siłą napędową Ethereum. Kiedy wysyłasz ETH lub korzystasz z aplikacji Ethereum, wnosisz niewielką opłatę w ETH za korzystanie z sieci Ethereum. Ta opłata jest zachętą dla górnika do przetwarzania i weryfikacji tego, co próbujesz zrobić.",
- "page-eth-fuels-desc-2": "Górnicy są jak właściciele rejestrów Ethereum – sprawdzają i dowodzą, że nikt nie oszukuje. Górnicy, którzy wykonują tę pracę, są również nagradzani niewielkimi kwotami nowo wyemitowanych ETH.",
- "page-eth-fuels-desc-3": "Praca górników sprawia, że Ethereum jest bezpieczne i wolne od scentralizowanej kontroli. Innymi słowy,",
+ "page-eth-fuels-desc": "ETH jest siłą napędową Ethereum. Kiedy wysyłasz ETH lub korzystasz z aplikacji Ethereum, uiszczasz opłatę w ETH za korzystanie z sieci Ethereum. Opłata ta stanowi zachętą dla producenta bloków do przetwarzania i weryfikacji tego, co próbujesz zrobić.",
+ "page-eth-fuels-desc-2": "Walidatorzy są jak rejestratorzy Ethereum — sprawdzają i udowadniają, że nikt nie oszukuje. Są losowo wybierani do zaproponowania bloku transakcji. Walidatorzy wykonujący tę pracę są również nagradzani małymi ilościami nowo wyemitowanych ETH.",
+ "page-eth-fuels-desc-3": "Praca wykonywana przez walidatorów i stakowany przez nich kapitał zapewniają Ethereum bezpieczeństwo i wolność od scentralizowanej kontroli.",
+ "page-eth-fuels-staking": "Kiedy stakujesz ETH, pomagasz zabezpieczyć Ethereum i zarabiasz nagrody. W tym systemie groźba utraty ETH zniechęca napastników.",
"page-eth-fuels-more-staking": "Więcej o stakowaniu",
- "page-eth-fuels-staking": "ETH nabierze jeszcze większego znaczenia dzięki stakowaniu. Jeśli zestakujesz swój ETH, będziesz mógł pomóc w zabezpieczeniu Ethereum i zdobyć nagrody. W tym systemie groźba utraty ETH zniechęca do ataków.",
"page-eth-get-eth-btn": "Zdobądź ETH",
"page-eth-gov-tokens": "Tokeny zarządzania",
"page-eth-gov-tokens-desc": "Tokeny, które reprezentują siłę głosu w zdecentralizowanych organizacjach.",
@@ -33,7 +33,6 @@
"page-eth-how-to-buy-caption": "Często aktualizowane",
"page-eth-is-money": "ETH to cyfrowy, globalny pieniądz.",
"page-eth-last-updated": "Styczeń 2019",
- "page-eth-mining-link": "Więcej o wydobywaniu",
"page-eth-monetary-policy": "Polityka pieniężna Ethereum",
"page-eth-more-on-ethereum-link": "Więcej o Ethereum",
"page-eth-no-centralized": "Bez scentralizowanej kontroli ",
@@ -81,5 +80,17 @@
"page-eth-where-to-buy": "Gdzie uzyskać ETH",
"page-eth-where-to-buy-desc": "Możesz uzyskać ETH z giełdy lub portfela, ale różne kraje mają różne polityki. Sprawdź usługi, które pozwolą Ci kupić ETH.",
"page-eth-yours": "Jest naprawdę Twój",
- "page-eth-yours-desc": "ETH pozwala Ci być swoim własnym bankiem. Możesz kontrolować własne środki za pomocą portfela jako dowodu własności – nie są potrzebne strony trzecie."
+ "page-eth-yours-desc": "ETH pozwala Ci być swoim własnym bankiem. Możesz kontrolować własne środki za pomocą portfela jako dowodu własności – nie są potrzebne strony trzecie.",
+ "page-eth-more-on-tokens": "Więcej o tokenach i ich użyciu",
+ "page-eth-button-buy-eth": "Zdobądź ETH",
+ "page-eth-tokens-stablecoins": "Stablecoiny",
+ "page-eth-tokens-defi": "Zdecentralizowane finanse (DeFi)",
+ "page-eth-tokens-nft": "Tokeny niewymienialne (NFT)",
+ "page-eth-tokens-dao": "Zdecentralizowane autonomiczne organizacje (DAO)",
+ "page-eth-tokens-stablecoins-description": "Więcej o najmniej zmiennych tokenach Ethereum.",
+ "page-eth-tokens-defi-description": "System finansowy dla tokenów Ethereum.",
+ "page-eth-tokens-nft-description": "Tokeny, które reprezentują własność pozycji na Ethereum.",
+ "page-eth-tokens-dao-description": "Społeczności internetowe często zarządzane przez posiadaczy tokenów.",
+ "page-eth-whats-defi": "Więcej na temat DeFi",
+ "page-eth-whats-defi-description": "DeFi to zdecentralizowany system finansowy zbudowany na Ethereum. Ten przegląd wyjaśnia, co możesz zrobić."
}
diff --git a/src/intl/pl/page-get-eth.json b/src/intl/pl/page-get-eth.json
index bcff14d39f4..f45396e1829 100644
--- a/src/intl/pl/page-get-eth.json
+++ b/src/intl/pl/page-get-eth.json
@@ -1,7 +1,10 @@
{
+ "page-get-eth-article-keeping-crypto-safe": "Klucze do zachowania bezpieczeństwa kryptowalut",
+ "page-get-eth-article-protecting-yourself": "Chroń siebie i swoje fundusze",
+ "page-get-eth-article-store-digital-assets": "Jak przechowywać aktywa cyfrowe na Ethereum",
"page-get-eth-cex": "Giełdy scentralizowane",
"page-get-eth-cex-desc": "Giełdy to firmy, które pozwalają kupować kryptowaluty za pomocą tradycyjnych walut. Mają pieczę nad każdym zakupionym ETH, dopóki nie wyślesz go do portfela, który kontrolujesz.",
- "page-get-eth-checkout-dapps-btn": "Wyprubuj zdecentralizowane aplikacje",
+ "page-get-eth-checkout-dapps-btn": "Wypróbuj zdecentralizowane aplikacje",
"page-get-eth-community-safety": "Posty społeczności dotyczące bezpieczeństwa",
"page-get-eth-description": "Ethereum i ETH nie są kontrolowane przez żaden rząd ani firmę — są zdecentralizowane. Oznacza to, że ETH jest dostępne dla każdego.",
"page-get-eth-dex": "Giełdy zdecentralizowane (DEX)",
@@ -10,7 +13,7 @@
"page-get-eth-dexs-desc": "Zdecentralizowane giełdy to otwarte rynki dla ETH i innych tokenów. Łączą bezpośrednio kupujących i sprzedających.",
"page-get-eth-dexs-desc-2": "Zamiast korzystać z zaufanej strony trzeciej do zabezpieczenia środków w transakcji, używają kodu. ETH sprzedającego zostanie przeniesiony tylko wtedy, gdy płatność jest gwarantowana. Ten rodzaj kodu jest znany jako inteligentny kontrakt.",
"page-get-eth-dexs-desc-3": "Oznacza to, że istnieje mniej ograniczeń geograficznych niż w przypadku scentralizowanych alternatyw. Jeśli ktoś sprzedaje to, co chcesz, i akceptuje metodę płatności, którą możesz zapewnić, możesz działać. DEX pozwalają kupować ETH za pomocą innych tokenów, PayPala, a nawet osobiście dostarczać gotówkę.",
- "page-get-eth-do-not-copy": "PRZYKŁAD: NIE KOPIUJ",
+ "page-get-eth-do-not-copy": "Przykład: Nie kopiuj",
"page-get-eth-exchanges-disclaimer": "Zebraliśmy te informacje ręcznie. Jeśli zauważysz, że coś jest nie tak, daj nam znać",
"page-get-eth-exchanges-empty-state-text": "Wprowadź swój kraj zamieszkania, aby zobaczyć listę portfeli i giełd, których możesz użyć do zakupu ETH",
"page-get-eth-exchanges-except": "Z wyjątkiem",
@@ -21,6 +24,7 @@
"page-get-eth-exchanges-no-exchanges": "Przepraszamy, nie znamy żadnej giełdy, która pozwoli Ci kupić ETH w tym kraju. Jeśli zrobisz, powiedz nam na",
"page-get-eth-exchanges-no-exchanges-or-wallets": "Przepraszamy, nie znamy żadnych giełd ani portfeli, które pozwalają Ci kupić ETH w tym kraju. Jeśli to zrobisz, powiedz nam na",
"page-get-eth-exchanges-no-wallets": "Przepraszamy, nie znamy żadnych portfeli, które pozwolą Ci kupić ETH w tym kraju. Jeśli to zrobisz, powiedz nam na",
+ "page-get-eth-exchanges-search": "Wpisz miejsce zamieszkania...",
"page-get-eth-exchanges-success-exchange": "Rejestracja na giełdzie może potrwać kilka dni ze względu na ich prawne kontrole.",
"page-get-eth-exchanges-success-wallet-link": "portfele",
"page-get-eth-exchanges-success-wallet-paragraph": "Tam, gdzie mieszkasz, możesz kupić ETH bezpośrednio z tych portfeli. Dowiedz się więcej o",
@@ -41,7 +45,7 @@
"page-get-eth-swapping": "Zamień swoje tokeny na ETH innych osób. I wzajemnie.",
"page-get-eth-traditional-currencies": "Kup za pomocą tradycyjnych walut",
"page-get-eth-traditional-payments": "Kupuj ETH za pomocą tradycyjnych typów płatności bezpośrednio od sprzedawców.",
- "page-get-eth-try-dex": "Wypróbuj Dex",
+ "page-get-eth-try-dex": "Wypróbuj DEX",
"page-get-eth-use-your-eth": "Użyj swojego ETH",
"page-get-eth-use-your-eth-dapps": "Teraz, gdy jesteś właścicielem ETH, sprawdź niektóre aplikacje Ethereum (aplikacje zdecentralizowane). Istnieją aplikacje dla finansów, mediów społecznościowych, gier i wielu innych kategorii.",
"page-get-eth-wallet-instructions": "Postępuj zgodnie z instrukcją portfela",
diff --git a/src/intl/pl/page-index.json b/src/intl/pl/page-index.json
index f1cb52e59a8..f9484b50f9f 100644
--- a/src/intl/pl/page-index.json
+++ b/src/intl/pl/page-index.json
@@ -3,7 +3,7 @@
"page-index-meta-description": "Ethereum jest globalną, zdecentralizowaną platformą łączącą waluty i nowe aplikacje. Na Ethereum możesz napisać kod, który zarządza działaniem pieniądza, i tworzyć aplikacje, do których dostęp można uzyskać na całym świecie.",
"page-index-meta-title": "Strona główna",
"page-index-title": "Witamy w Ethereum",
- "page-index-description": "Ethereum is the community-run technology powering the cryptocurrency ether (ETH) and thousands of decentralized applications.",
+ "page-index-description": "Ethereum jest prowadzoną przez społeczność technologią, zasilającą kryptowalutę ether (ETH) i tysiące zdecentralizowanych aplikacji.",
"page-index-title-button": "Odkryj Ethereum",
"page-index-get-started": "Rozpocznij",
"page-index-get-started-description": "ethereum.org jest Twoim portalem do świata Ethereum. Nowa, ciągle ewoluująca technologia – warto mieć poradnik. Oto, co polecamy, aby zagłębić się w temat.",
diff --git a/src/intl/pl/page-stablecoins.json b/src/intl/pl/page-stablecoins.json
index 958a97626c3..4d438310ab0 100644
--- a/src/intl/pl/page-stablecoins.json
+++ b/src/intl/pl/page-stablecoins.json
@@ -27,7 +27,7 @@
"page-stablecoins-accordion-earn-project-2-description": "Technologia, treść i inne prace dla społeczności MakerDao (zespół, który przyniósł Ci Dai).",
"page-stablecoins-accordion-earn-project-3-description": "Jeśli naprawdę znasz się na rzeczy, znajdź błędy, aby zarobić Dai.",
"page-stablecoins-accordion-earn-project-bounties": "Nagrody Gitcoin",
- "page-stablecoins-accordion-earn-project-bug-bounties": "Nagrody za błędy Eth2",
+ "page-stablecoins-accordion-earn-project-bug-bounties": "Consensus layer bug bounties",
"page-stablecoins-accordion-earn-project-community": "Społeczność MakerDao",
"page-stablecoins-accordion-earn-projects-copy": "Są to platformy, które za Twoją pracę zapłacą Ci w stablecoinach.",
"page-stablecoins-accordion-earn-projects-title": "Gdzie zarabiać stablecoiny",
@@ -134,12 +134,15 @@
"page-stablecoins-top-coins-intro": "Kapitalizacja rynkowa to",
"page-stablecoins-top-coins-intro-code": "łączna liczba istniejących tokenów pomnożona przez wartość na token. Ta lista jest dynamiczna, a wymienione tutaj projekty niekoniecznie są wspierane przez zespół ethereum.org.",
"page-stablecoins-types-of-stablecoin": "Jak działają: rodzaje stablecoin",
- "page-stablecoins-usdc-banner-body": "Dai jest prawdopodobnie najbardziej znanym zdecentralizowanym stablecoinem. Jego wartość wynosi około dolara i jest powszechnie akceptowana w różnych zdecentralizowanych aplikacjach.",
+ "page-stablecoins-usdc-banner-body": "USDC is probably the most famous fiat-backed stablecoin. Its value is roughly a dollar and it’s backed by Circle and Coinbase.",
"page-stablecoins-usdc-banner-learn-button": "Dowiedz się więcej o USDC",
"page-stablecoins-usdc-banner-swap-button": "Zamień ETH na USDC",
"page-stablecoins-usdc-banner-title": "USDC",
"page-stablecoins-usdc-logo": "Logo USDC",
"page-stablecoins-why-stablecoins": "Dlaczego stablecoiny?",
"page-stablecoins-how-they-work-button": "Jak one działają",
- "page-stablecoins-why-stablecoins-body": "ETH, podobnie jak Bitcoin, ma zmienną cenę, ponieważ jest to nowa technologia. Możesz więc nie chcieć wydawać go regularnie. Stablecoiny odzwierciedlają wartość tradycyjnych walut, dając Ci dostęp do stabilnych pieniędzy, których możesz używać na Ethereum."
+ "page-stablecoins-why-stablecoins-body": "ETH, podobnie jak Bitcoin, ma zmienną cenę, ponieważ jest to nowa technologia. Możesz więc nie chcieć wydawać go regularnie. Stablecoiny odzwierciedlają wartość tradycyjnych walut, dając Ci dostęp do stabilnych pieniędzy, których możesz używać na Ethereum.",
+ "page-stablecoins-more-defi-button": "More on decentralized finance (DeFi)",
+ "page-stablecoins-tools-title": "Learn more about stablecoins",
+ "page-stablecoins-tools-stablecoinswtf-description": "Stablecoins.wtf offers a dashboard with historical market data, statistics, and educational content for the most prominent stablecoins."
}
diff --git a/src/intl/pl/page-wallets-find-wallet.json b/src/intl/pl/page-wallets-find-wallet.json
index 81101a61b8a..e4e7c1c2746 100644
--- a/src/intl/pl/page-wallets-find-wallet.json
+++ b/src/intl/pl/page-wallets-find-wallet.json
@@ -1,54 +1,99 @@
{
"page-find-wallet-add-wallet": ". Jeśli chcesz, abyśmy dodali portfel,",
+ "page-find-wallet-airgap-logo-alt": "Logo AirGap",
"page-find-wallet-alpha-logo-alt": "Logo AlphaWallet",
"page-find-wallet-ambo-logo-alt": "Logo Ambo",
"page-find-wallet-argent-logo-alt": "Logo Argent",
- "page-find-wallet-authereum-logo-alt": "Logo Autherum",
"page-find-wallet-buy-card": "Kup kryptowaluty za pomocą karty",
"page-find-wallet-buy-card-desc": "Kup ETH bezpośrednio z portfela za pomocą karty bankowej. Mogą obowiązywać ograniczenia geograficzne.",
+ "page-find-wallet-card-yes": "Tak",
+ "page-find-wallet-card-no": "Nie",
+ "page-find-wallet-card-go": "Przejdź",
+ "page-find-wallet-card-hardware": "Sprzęt",
+ "page-find-wallet-card-mobile": "Mobilny",
+ "page-find-wallet-card-desktop": "Komputer stacjonarny",
+ "page-find-wallet-card-web": "Sieć",
+ "page-find-wallet-card-more-info": "Więcej informacji",
+ "page-find-wallet-card-features": "Funkcje",
+ "page-find-wallet-card-has-bank-withdraws": "Wypłata na konto bankowe",
+ "page-find-wallet-card-has-card-deposits": "Kup ETH za pomocą karty",
+ "page-find-wallet-card-has-defi-integration": "Dostęp do DeFi",
+ "page-find-wallet-card-has-explore-dapps": "Przeglądaj aplikacje",
+ "page-find-wallet-card-has-dex-integrations": "Zamiana tokenów",
+ "page-find-wallet-card-has-high-volume-purchases": "Kup w dużym wolumenie",
+ "page-find-wallet-card-has-limits-protection": "Limity transakcji",
+ "page-find-wallet-card-has-multisig": "Ochrona wielopoziomowa",
"page-find-wallet-checkout-dapps": "Wypróbuj zdecentralizowane aplikacje",
"page-find-wallet-clear": "Wyczyść filtry",
"page-find-wallet-coinbase-logo-alt": "Logo Coinbase",
+ "page-find-wallet-coinomi-logo-alt": "Logo Coinmama",
+ "page-find-wallet-coin98-logo-alt": "Logo Coinmama",
+ "page-find-wallet-dcent-logo-alt": "Logo D'CENT",
"page-find-wallet-desc-2": "Wybierz więc portfel w oparciu o żądane funkcje.",
"page-find-wallet-description": "Portfele mają wiele opcjonalnych funkcji, które mogą Ci się spodobać.",
+ "page-find-wallet-description-airgap": "Sign transactions completely offline on a device without any network connectivity using AirGap Vault. Then you can broadcast them with your every-day smartphone with the AirGap Wallet app.",
"page-find-wallet-description-alpha": "W pełni otwarty portfel Ethereum, który wykorzystuje bezpieczną enklawę na urządzeniach mobilnych, oferuje pełną obsługę sieci testowej i obsługuje standard TokenScript.",
"page-find-wallet-description-ambo": "Przejdź od razu do inwestowania i uzyskaj pierwszą inwestycję w ciągu kilku minut od pobrania aplikacji",
"page-find-wallet-description-argent": "Jedno dotknięcie, aby zarabiać odsetki i inwestować; pożyczać, przechowywać i wysyłać. Posiadać.",
- "page-find-wallet-description-authereum": "Bez pobierania, bez fraz seedów. Dowolna przeglądarka, o każdej porze, mobilna lub stacjonarna",
+ "page-find-wallet-description-bitcoindotcom": "Portfel Bitcoin.com obsługuje teraz Ethereum! Kupuj, trzymaj i wysyłaj oraz handluj ETH używając w pełni bezkarnego portfela, któremu zaufały miliony.",
"page-find-wallet-description-coinbase": "Bezpieczna aplikacja do przechowywania kryptowalut",
+ "page-find-wallet-description-coinomi": "Coinomi to najstarszy wielołańcuchowy, nieskazitelny, wieloplatformowy portfel dla bitcoinów, altcoinów i tokenów - nigdy nie zhakowany, z milionami użytkowników.",
+ "page-find-wallet-description-coin98": "Brama Portfel NieIndywidualny, Wielołańcuchowy i DeFi",
+ "page-find-wallet-description-dcent": "D'CENT Wallet is the über convenient multi-cryptocurrency wallet with built-in dapp browser for easy access to DeFi, NFT, and variety of services.",
"page-find-wallet-description-enjin": "Nieprzenikniony, pełen funkcji i wygodny — zbudowany dla traderów, graczy i deweloperów",
+ "page-find-wallet-description-fortmatic": "Uzyskaj dostęp do aplikacji Ethereum z dowolnego miejsca za pomocą tylko adresu e-mail lub numeru telefonu. Brak rozszerzeń przeglądarki i frazy ziaren.",
"page-find-wallet-description-gnosis": "Najbardziej zaufana platforma do przechowywania zasobów cyfrowych w Ethereum",
+ "page-find-wallet-description-guarda": "Zabezpieczenie, zapakowane funkcje, nienotowany portfel kryptowalutowy ze wsparciem dla ponad 50 blockchain. Łatwe stawki, wymiana i zakup kryptowalut.",
+ "page-find-wallet-description-hyperpay": "HyperPay is a multi-platform universal crypto wallet that supports 50+ blockchains and 2000+ dapps.",
"page-find-wallet-description-imtoken": "imToken to łatwy i bezpieczny portfel cyfrowy, któremu zaufały miliony",
+ "page-find-wallet-description-keystone": "The Keystone wallet is a 100% air-gapped hardware wallet with open-source firmware and uses a QR code protocol.",
"page-find-wallet-description-ledger": "Dbaj o bezpieczeństwo swoich aktywów z zachowaniem najwyższych standardów bezpieczeństwa",
- "page-find-wallet-description-metamask": "Zacznij eksplorować aplikacje blockchain w kilka sekund. Zaufało nam ponad 1 milion użytkowników na całym świecie.",
+ "page-find-wallet-description-linen": "Mobilny portfel inteligentnych kontraktów: zarabiaj zysk, kup kryptowaluty i weź udział w DeFi. Zdobywaj nagrody i tokeny zarządzania.",
+ "page-find-wallet-description-loopring": "The first ever Ethereum smart contract wallet with zkRollup-based trading, transfers, and AMM. Gas-free, secure, and simple.",
+ "page-find-wallet-description-mathwallet": "MathWallet is a multi-platform (mobile/extension/web) universal crypto wallet that supports 50+ blockchains and 2000+ dapps.",
+ "page-find-wallet-description-metamask": "Zacznij eksplorować aplikacje blockchain w kilka sekund. Zaufało nam ponad 21 milion użytkowników na całym świecie.",
"page-find-wallet-description-monolith": "Jedyny na świecie samopowierniczy portfel połączony z kartą debetową Visa. Dostępne w Wielkiej Brytanii i UE i używane na całym świecie.",
"page-find-wallet-description-multis": "Multis to konto kryptowalutowe przeznaczone dla firm. Dzięki Multis firmy mogą przechowywać z kontrolą dostępu, uzyskiwać odsetki od swoich oszczędności oraz usprawniać płatności i księgowość.",
"page-find-wallet-description-mycrypto": "MyCrypto to interfejs do zarządzania wszystkimi Twoimi kontami. Zamieniaj, wysyłaj i kupuj kryptowaluty za pomocą portfeli takich jak MetaMask, Ledger, Trezor i innych.",
"page-find-wallet-description-myetherwallet": "Darmowy interfejs po stronie klienta pomagający w interakcji z blockchainem Ethereum",
+ "page-find-wallet-description-numio": "Numio is a non-custodial, Layer 2 Ethereum wallet, powered by zkRollups for fast and cheap ERC-20 transactions and token swaps. Numio is available on Android and iOS.",
+ "page-find-wallet-description-opera": "Wbudowany portfel kryptowalutowy w Opera Touch na iOS i Opera na Androida. Pierwsza główna przeglądarka integrująca portfel kryptowalut, umożliwiająca płynny dostęp do pojawiającej się w przyszłości sieci (Web 3).",
"page-find-wallet-description-pillar": "Portfel niepowierniczy, należący do społeczności z własną siecią płatności L2.",
"page-find-wallet-description-portis": "Niestandardowy portfel blockchain, który sprawia, że aplikacje są proste dla wszystkich",
"page-find-wallet-description-rainbow": "Lepszy dom dla Twoich zasobów Ethereum",
+ "page-find-wallet-description-samsung": "Bądź bezpieczny i bezpieczny dzięki technologii Samsung Blockchain.",
"page-find-wallet-description-status": "Bezpieczna aplikacja do przesyłania wiadomości, portfel kryptograficzny i przeglądarka Web3 zbudowane w oparciu o najnowocześniejszą technologię",
- "page-find-wallet-description-tokenpocket": "TokenPocket: Bezpieczny i wygodny, wiodący na świecie portfel walut cyfrowych oraz portal do zdecentralizowanych aplikacji z obsługą wielu łańcuchów.",
+ "page-find-wallet-description-tokenpocket": "TokenPocket:A secure and convenient world-leading digital currency wallet and a portal to dapps, with Multi-chain supported.",
+ "page-find-wallet-description-bitkeep": "BitKeep to zdecentralizowany wielołańcuchowy portfel cyfrowy, którego zadaniem jest zapewnienie użytkownikom na całym świecie bezpiecznych i wygodnych usług zarządzania zasobami cyfrowymi.",
"page-find-wallet-description-torus": "Logowanie jednym kliknięciem do Web 3.0",
"page-find-wallet-description-trezor": "Pierwszy i oryginalny portfel sprzętowy",
"page-find-wallet-description-trust": "Trust Wallet to zdecentralizowany portfel kryptowalut na wiele monet. Kupuj kryptowaluty, eksploruj aplikacje, wymieniaj zasoby i nie tylko, zachowując kontrolę nad kluczami.",
+ "page-find-wallet-description-unstoppable": "Portfel niepowstrzymany jest otwartym i niestandardowym rozwiązaniem do przechowywania znanym z jego intuicyjnego projektu i beztarciowych doświadczeń. Nierzadko integruje zdecentralizowane możliwości handlowe/wymiany.",
"page-find-wallet-description-zengo": "ZenGo to pierwszy bezkluczowy portfel kryptograficzny. W ZenGo nie ma kluczy prywatnych, haseł ani fraz początkowych, którymi można by zarządzać lub je stracić. Kupuj, handluj, zarabiaj i przechowuj Ethereum z niespotykaną prostotą i bezpieczeństwem",
+ "page-find-wallet-description-walleth": "100% open source (GPLv3) i natywny portfel Ethereum dla Twojej usługi od 2017 roku. Połącz się ze swoim ulubionym dapp za pomocą WalletConnect i użyj go bezpośrednio z portfelem sprzętowym.",
+ "page-find-wallet-description-safepal": "Portfel SafePala jest bezpieczną, zdecentralizowaną, łatwą w użyciu i darmową aplikacją do zarządzania ponad 10 000 kryptowalut.",
"page-find-wallet-enjin-logo-alt": "Logo Enjin",
"page-find-wallet-Ethereum-wallets": "Portfele Ethereum",
"page-find-wallet-explore-dapps": "Przeglądaj zdecentralizowane aplikacje",
"page-find-wallet-explore-dapps-desc": "Portfele te są zaprojektowane tak, aby pomóc Ci połączyć się z decentralizowanymi aplikacjami Ethereum.",
"page-find-wallet-feature-h2": "Wybierz funkcje portfela, na których Ci zależy",
- "page-find-wallet-fi-tools": "Dostęp do instrumentów finansowych",
+ "page-find-wallet-fi-tools": "Dostęp do DeFi",
"page-find-wallet-fi-tools-desc": "Wypożycz, pożyczaj i zarabiaj odsetki bezpośrednio z portfela.",
"page-find-wallet-following-features": "o następujących cechach:",
+ "page-find-wallet-fortmatic-logo-alt": "Logo Fortmatyczne",
"page-find-wallet-gnosis-logo-alt": "Logo Gnosis Safe",
+ "page-find-wallet-guarda-logo-alt": "Logo Dharma",
+ "page-find-wallet-hyperpay-logo-alt": "Logo HyperPay",
"page-find-wallet-imtoken-logo-alt": "logo imToken",
+ "page-find-wallet-keystone-logo-alt": "Logo Keystone",
"page-find-wallet-last-updated": "Ostatnia aktualizacja",
"page-find-wallet-ledger-logo-alt": "Logo Ledger",
"page-find-wallet-limits": "Ochrona przed ograniczeniami",
"page-find-wallet-limits-desc": "Chroń swoje aktywa, ustalając limity, które zapobiegają wyczerpaniu konta.",
+ "page-find-wallet-linen-logo-alt": "Lniana tkanina",
"page-find-wallet-listing-policy": "polityka wyświetlania",
+ "page-find-wallet-loopring-logo-alt": "Logo Loopring",
+ "page-find-wallet-mathwallet-logo-alt": "Logo MyEtherWallet",
"page-find-wallet-meta-description": "Znajdź i porównaj portfele Ethereum w oparciu o pożądane funkcje.",
"page-find-wallet-meta-title": "Znajdź portfel Ethereum",
"page-find-wallet-metamask-logo-alt": "Logo MetaMask",
@@ -60,24 +105,30 @@
"page-find-wallet-myetherwallet-logo-alt": "Logo MyEtherWallet",
"page-find-wallet-new-to-wallets": "Nowy w portfelach? Oto przegląd na początek.",
"page-find-wallet-new-to-wallets-link": "Portfele Ethereum",
- "page-find-wallet-not-all-features": "Żaden portfel nie ma tych wszystkich funkcji jeszcze",
- "page-find-wallet-not-endorsements": "Portfele wymienione na tej stronie nie są oficjalnymi rekomendacjami i służą wyłącznie celom informacyjnym. Ich opisy zostały dostarczone przez same firmy zajmujące się portfelami. Dodajemy produkty do tej strony na podstawie kryteriów w naszym",
+ "page-find-wallet-not-all-features": "Żaden portfel nie ma tych wszystkich funkcji",
+ "page-find-wallet-not-endorsements": "Wallets listed on this page are not official endorsements, and are provided for informational purposes only. Their descriptions have been provided by the wallet projects themselves. We add products to this page based on criteria in our",
+ "page-find-wallet-numio-logo-alt": "Logo Numio",
"page-find-wallet-overwhelmed": "Portfele Ethereum poniżej. Przytłoczony? Spróbuj filtrować według funkcji.",
+ "page-find-wallet-opera-logo-alt": "Logo Opera",
"page-find-wallet-pillar-logo-alt": "Logo filaru",
"page-find-wallet-portis-logo-alt": "Logo Portis",
"page-find-wallet-rainbow-logo-alt": "Logo Rainbow",
"page-find-wallet-raise-an-issue": "zgłoś problem na GitHubie",
"page-find-wallet-search-btn": "Szukaj wybranych funkcji",
"page-find-wallet-showing": "Pokazuje ",
+ "page-find-wallet-samsung-logo-alt": "Logo Samsung Blockchain Wallet",
"page-find-wallet-status-logo-alt": "Logo statusu",
"page-find-wallet-swaps": "Zdecentralizowane wymiany tokenu",
"page-find-wallet-swaps-desc": "Wymiana pomiędzy ETH i innymi tokenami bezpośrednio z Twojego portfela.",
"page-find-wallet-title": "Znajdź portfel",
"page-find-wallet-tokenpocket-logo-alt": "Logo TokenPocket",
+ "page-find-wallet-bitkeep-logo-alt": "Logo Bittrex",
"page-find-wallet-torus-logo-alt": "Logo Torus",
"page-find-wallet-trezor-logo-alt": "Logo Trezor",
"page-find-wallet-trust-logo-alt": "Logo Trust",
+ "page-find-wallet-safepal-logo-alt": "Logo SafePal",
"page-find-wallet-try-removing": "Spróbuj usunąć jedną lub dwie funkcje",
+ "page-find-wallet-unstoppable-logo-alt": "Niepowstrzymana Siła",
"page-find-wallet-use-wallet-desc": "Teraz, gdy masz portfel, sprawdź niektóre aplikacje Ethereum (dapps). Istnieją zdecentralizowane Aplikacje do finansów, mediów społecznościowych, gier i wielu innych kategorii.",
"page-find-wallet-use-your-wallet": "Użyj swojego portfela",
"page-find-wallet-voluem-desc": "Jeśli chcesz przechowywać dużo ETH, wybierz portfel, który pozwala na jednorazowy zakup ponad 2000 USD w ETH.",
@@ -86,5 +137,6 @@
"page-find-wallet-withdraw": "Wypłata na konto bankowe",
"page-find-wallet-withdraw-desc": "Możesz wypłacić swój ETH bezpośrednio na swoje konto bankowe bez przechodzenia przez giełdę.",
"page-find-wallet-zengo-logo-alt": "Logo ZenGo",
+ "page-find-wallet-walleth-logo-alt": "Logo WallETH",
"page-stake-eth": "Stakuj ETH"
}
diff --git a/src/intl/pl/page-wallets.json b/src/intl/pl/page-wallets.json
index fc48aa44aab..2c015321628 100644
--- a/src/intl/pl/page-wallets.json
+++ b/src/intl/pl/page-wallets.json
@@ -1,41 +1,29 @@
{
"page-wallets-accounts-addresses": "Portfele, konta i adresy",
"page-wallets-accounts-addresses-desc": "Warto rozumieć różnice między niektórymi kluczowymi terminami.",
- "page-wallets-accounts-addresses-desc-2": "jest podmiotem, który może wysyłać transakcje i ma saldo.",
- "page-wallets-accounts-has": "Konto Ethereum ma",
+ "page-wallets-accounts-ethereum-addresses": "Konto Ethereum ma adres Ethereum, podobnie jak skrzynka pocztowa ma adres e-mail. Możesz go użyć, aby wysłać środki na konto.",
"page-wallets-alt": "Ilustracja robota ze skarbcem w charakterze ciała, przedstawiająca portfel Ethereum",
- "page-wallets-an": "An",
+ "page-wallets-ethereum-account": "Konto Ethereum jest podmiotem, który może wysyłać transakcje i ma saldo.",
"page-wallets-blog": "Blog Coinbase",
"page-wallets-bookmarking": "Dodaj swój portfel do zakładek",
"page-wallets-bookmarking-desc": "Jeśli korzystasz z portfela internetowego, dodaj witrynę do zakładek, aby chronić się przed oszustwami typu phishing.",
- "page-wallets-cd": "Fizyczne portfele sprzętowe, które pozwalają Ci na przechowywanie kryptowalut w trybie offline – bardzo bezpieczne",
- "page-wallets-converted": "Kryptowaluta przekonwertowana?",
- "page-wallets-converted-desc": "Jeśli chcesz utrzymać poważną wartość, zalecamy portfel sprzętowy, ponieważ są one najbezpieczniejsze. Lub portfel z alertami o oszustwach i limitami wypłat.",
- "page-wallets-curious": "Ciekawy kryptowalut?",
- "page-wallets-curious-desc": "Jeśli dopiero zaczynasz przygodę z kryptowalutą i po prostu chcesz to poczuć, polecamy coś, co da Ci możliwość zapoznania się z aplikacjami Ethereum lub kupienia pierwszego ETH bezpośrednio z portfela.",
+ "page-wallets-cd": "Fizyczne portfele sprzętowe to urządzenia, które pozwalają Ci na przechowywanie kryptowalut w trybie offline – są bardzo bezpieczne",
"page-wallets-desc-2": "Potrzebujesz portfela, aby wysyłać środki i zarządzać ETH.",
"page-wallets-desc-2-link": "Więcej na temat ETH",
"page-wallets-desc-3": "Twój portfel to tylko narzędzie do zarządzania kontem Ethereum. Oznacza to, że w każdej chwili możesz zmieniać dostawców portfeli. Wiele portfeli umożliwia również zarządzanie kilkoma kontami Ethereum z jednej aplikacji.",
"page-wallets-desc-4": "Dzieje się tak dlatego, że portfele nie przechowują twoich funduszy. Są tylko narzędziem do zarządzania tym, co naprawdę należy do Ciebie.",
"page-wallets-description": "Portfele Ethereum to aplikacje, które umożliwiają interakcję z kontem Ethereum. Pomyśl o tym jak o aplikacji do bankowości internetowej - bez banku. Twój portfel umożliwia odczytywanie salda, wysyłanie transakcji i łączenie się z aplikacjami.",
"page-wallets-desktop": "Aplikacje stacjonarne, jeśli wolisz zarządzać środkami za pośrednictwem MacOS, Windows lub linux",
- "page-wallets-ethereum-account": "Konto Ethereum",
- "page-wallets-ethereum-addresses": "Adres Ethereum",
- "page-wallets-ethereum-addresses-2": ", podobnie jak skrzynka odbiorcza ma adres e-mail. Możesz użyć tego do wysyłania środków na konto.",
- "page-wallets-ethereum-wallet": "Portfel",
- "page-wallets-ethereum-wallet-2": "to produkt, który umożliwia zarządzanie kontem Ethereum, na przykład przeglądanie salda konta, wysyłanie transakcji i nie tylko.",
+ "page-wallets-ethereum-wallet": "Portfel to produkt, który pozwala Ci zarządzać Twoim kontem Ethereum. Umożliwia on wyświetlanie salda konta, wysyłanie transakcji i wiele innych.",
"page-wallets-explore": "Odkryj Ethereum",
"page-wallets-features-desc": "Możemy pomóc Ci wybrać Twój portfel w oparciu o funkcje, których potrzebujesz.",
- "page-wallets-features-title": "Wolisz wybierać na podstawie funkcji?",
+ "page-wallets-features-title": "Porównaj portfele na podstawie funkcji",
"page-wallets-find-wallet-btn": "Znajdź portfel",
"page-wallets-find-wallet-link": "Znajdź portfel",
"page-wallets-get-some": "Weź trochę ETH",
"page-wallets-get-some-alt": "Ilustracja przedstawiająca dłoń tworzącą logo ETH z klocków lego",
"page-wallets-get-some-btn": "Weź trochę ETH",
"page-wallets-get-some-desc": "ETH to natywna kryptowaluta Ethereum. Aby korzystać z aplikacji Ethereum, będziesz potrzebować trochę ETH w portfelu.",
- "page-wallets-get-wallet": "Wybierz portfel",
- "page-wallets-get-wallet-desc": "Do wyboru jest wiele różnych portfeli. Chcemy pomóc Ci wybrać najlepszy dla Ciebie.",
- "page-wallets-get-wallet-desc-2": "Pamiętaj: ta decyzja nie jest na zawsze - Twoje konto Ethereum nie jest powiązane z dostawcą portfela.",
"page-wallets-how-to-store": "Jak przechowywać aktywa cyfrowe na Ethereum",
"page-wallets-keys-to-safety": "Klucze do zachowania bezpieczeństwa kryptowalut",
"page-wallets-manage-funds": "Aplikacja do zarządzania Twoimi środkami",
@@ -66,7 +54,9 @@
"page-wallets-try-dapps-alt": "Ilustracja przedstawiająca współpracujących ze sobą członków społeczności Ethereum",
"page-wallets-try-dapps-desc": "Aplikacje zdecentralizowane (dapps) są aplikacjami zbudowanymi na Ethereum. Są tańsze, bardziej sprawiedliwe i bardziej przyjazne dla Twoich danych niż większość tradycyjnych aplikacji.",
"page-wallets-types": "Typy portfeli",
- "page-wallets-web-browser": "Portfele internetowe, które pozwalają na interakcję z kontem za pośrednictwem przeglądarki internetowej",
+ "page-wallets-types-desc": "Istnieje kilka sposobów na interfejs i interakcję z kontem:",
+ "page-wallets-web-browser": "Portfele przeglądarki to aplikacje internetowe, które pozwalają na interakcję z kontem bezpośrednio w przeglądarce",
+ "page-wallets-web-browser-extension": "Portfele rozszerzeń przeglądarki to pobierane rozszerzenia, które pozwalają na interakcję z kontem i aplikacjami przez przeglądarkę",
"page-wallets-whats-a-wallet": "Czym jest portfel Ethereum?",
"page-wallets-your-ethereum-account": "Twoje konto Ethereum",
"page-wallets-your-ethereum-account-desc": "Twój portfel to okno na konto Ethereum - Twoje saldo konta, historia transakcji i inne. Możesz jednak zmienić dostawców portfela w dowolnym momencie.",
diff --git a/src/intl/pl/page-what-is-ethereum.json b/src/intl/pl/page-what-is-ethereum.json
index 13e032fbaf3..2982dca1684 100644
--- a/src/intl/pl/page-what-is-ethereum.json
+++ b/src/intl/pl/page-what-is-ethereum.json
@@ -1,17 +1,7 @@
{
- "page-what-is-ethereum-101": "Ethereum 101",
- "page-what-is-ethereum-101-desc": "Ethereum to technologia, która pozwala wysyłać kryptowalutę do każdego, za niewielką opłatą. Napędza ona także aplikacje, z których każdy może korzystać i których nikt nie może zlikwidować.",
- "page-what-is-ethereum-101-desc-2": "Ethereum opiera się na innowacjach Bitcoina, z kilkoma dużymi różnicami.",
- "page-what-is-ethereum-101-desc-3": "Oba sposoby pozwalają na korzystanie z pieniądza cyfrowego bez dostawców płatności lub banków. Ethereum jest jednak programowalne, więc możesz użyć go również do wielu innych zasobów cyfrowych – nawet do bitcoinów!",
- "page-what-is-ethereum-101-desc-4": "Oznacza to również, że Ethereum to więcej niż tylko płatności. Jest to rynek usług finansowych, gier i aplikacji, które nie mogą kraść Twoich danych ani Cię cenzurować.",
- "page-what-is-ethereum-101-italic": "globalny programowalny blockchain.",
- "page-what-is-ethereum-101-strong": "To jest ",
- "page-what-is-ethereum-accessibility": "Ethereum jest otwarte dla wszystkich.",
- "page-what-is-ethereum-adventure": "Wybierz swoją przygodę!",
"page-what-is-ethereum-alt-img-bazaar": "Ilustracja osoby przyglądającej się bazarowi ma reprezentować Ethereum",
"page-what-is-ethereum-alt-img-comm": "Ilustracja współdziałających członków społeczności Ethereum",
"page-what-is-ethereum-alt-img-lego": "Ilustracja ręki układającej logo Ethereum wykonane z klocków lego",
- "page-what-is-ethereum-alt-img-social": "Ilustracja postaci w przestrzeni publicznej poświęconej Ethereum z dużym logo ETH",
"page-what-is-ethereum-banking-card": "Bankowość dla wszystkich",
"page-what-is-ethereum-banking-card-desc": "Nie każdy ma dostęp do usług finansowych. Jedyne, czego potrzebujesz by zyskać dostęp do Ethereum, jego produktów kredytowych i oszczędnościowych, to połączenie internetowe.",
"page-what-is-ethereum-build": "Stwórz coś z Ethereum",
@@ -20,38 +10,91 @@
"page-what-is-ethereum-censorless-card-desc": "Żaden rząd ani przedsiębiorstwo nie ma kontroli nad Ethereum. Ta decentralizacja sprawia, że nikt nie może powstrzymać Cię od otrzymywania płatności lub korzystania z usług na Ethereum.",
"page-what-is-ethereum-comm-desc": "Nasza społeczność obejmuje ludzi ze wszystkich środowisk, w tym artystów, kryptoanarchistów, firmy notowane na Fortune 500, a teraz także i Ciebie. Dowiedz się jak możesz zaangażować się już dziś.",
"page-what-is-ethereum-commerce-card": "Gwarancje handlowe",
- "page-what-is-ethereum-commerce-card-desc": "Ethereum tworzy bardziej równe reguły gry. Klienci mają bezpieczną, wbudowaną gwarancję, że środki zmienią posiadacza tylko wtedy, gdy spełni się to, co zostało uzgodnione. Nie potrzebujesz prestiżu dużej firmy, aby prowadzić działalność.",
+ "page-what-is-ethereum-commerce-card-desc": "Klienci otrzymują bezpieczne rozwiązanie i wbudowaną gwarancję, że środki przechodzą bezpośrednio z rąk do rąk, jeśli wszystkie warunki zostały spełnione. Podobnie deweloperzy mogą być pewni, że zasady nie zostaną zmienione.",
+ "page-what-is-ethereum-composable-card": "Wszystkie produkty są komponowalne",
+ "page-what-is-ethereum-composable-card-desc": "Ponieważ wszystkie aplikacje są zbudowane na tym samym blockchain ze wspódzielonym globalnym stanem, mogą się wzajemnie budować (jak klocki Lego). Umożliwia to tworzenie lepszych produktów i doświadczeń przez cały czas.",
"page-what-is-ethereum-community": "Społeczność Ethereum",
- "page-what-is-ethereum-compatibility-card": "Przez kompatybilność do zwycięstwa",
- "page-what-is-ethereum-compatibility-card-desc": "Lepsze produkty i doświadczenia są budowane przez cały czas, ponieważ produkty Ethereum są domyślnie kompatybilne. Firmy mogą budować na swoich wzajemnych osiągnięciach.",
- "page-what-is-ethereum-dapps-desc": "Produkty i usługi działające na Ethereum. Istnieją aplikacje dla finansów, pracy, mediów społecznościowych, gier i innych – poznaj aplikacje naszej cyfrowej przyszłości.",
- "page-what-is-ethereum-dapps-img-alt": "Ilustracja pieseła korzystającego z aplikacji Ethereum na komputerze",
- "page-what-is-ethereum-dapps-title": "Zdecentralizowane aplikacje Ethereum (dappy)",
"page-what-is-ethereum-desc": "Fundament naszej cyfrowej przyszłości",
"page-what-is-ethereum-explore": "Odkryj Ethereum",
- "page-what-is-ethereum-get-started": "Najlepszym sposobem, aby dowiedzieć się więcej jest pobranie portfela, pozyskanie ETH i wypróbowanie aplikacji zdecentralizowanych Ethereum.",
- "page-what-is-ethereum-in-depth-description": "Ethereum to otwarty dostęp do cyfrowych pieniędzy i przyjaznych dla danych usług dla wszystkich – niezależnie od zaplecza czy lokalizacji. To technologia zbudowana przez społeczność na eterze (ETH) oraz tysiące aplikacji, z których możesz dziś korzystać.",
"page-what-is-ethereum-internet-card": "Bardziej prywatny Internet",
"page-what-is-ethereum-internet-card-desc": "Nie musisz podawać wszystkich swoich danych osobowych, aby używać aplikacji Ethereum. Ethereum buduje gospodarkę opartą na wartości, a nie na nadzorze.",
"page-what-is-ethereum-meet-comm": "Poznaj społeczność",
"page-what-is-ethereum-meta-description": "Poznaj Ethereum, dowiedz się co robi i jak wypróbować je dla siebie.",
"page-what-is-ethereum-meta-title": "Czym jest Ethereum?",
- "page-what-is-ethereum-native-alt": "Symbol eteru (ETH)",
- "page-what-is-ethereum-native-crypto": "Natywna kryptowaluta Ethereum i odpowiednik bitcoina. Możesz używać ETH w aplikacjach Ethereum lub do przesyłania wartości do znajomych i rodziny.",
- "page-what-is-ethereum-native-img-alt": "Ilustracja robota z sejfem jako tułowiem używana do reprezentowania portfeli Ethereum",
- "page-what-is-ethereum-native-title": "ETH",
"page-what-is-ethereum-p2p-card": "Sieć typu peer-to-peer",
"page-what-is-ethereum-p2p-card-desc": "Ethereum pozwala na przesyłanie pieniędzy lub zawieranie umów bezpośrednio z innymi. Nie musisz korzystać z firm pośredniczących.",
- "page-what-is-ethereum-singlecard-desc": "Jeśli interesuje Cię blockchain i techniczna strona Ethereum, to mamy coś dla Ciebie.",
- "page-what-is-ethereum-singlecard-link": "Jak działa Ethereum",
- "page-what-is-ethereum-singlecard-title": "Jak działa Ethereum",
"page-what-is-ethereum-start-building-btn": "Zacznij tworzenie",
"page-what-is-ethereum-title": "Co to jest Ethereum?",
- "page-what-is-ethereum-tools-needed": "Wszystko, czego potrzebujesz, aby zacząć to portfel.",
- "page-what-is-ethereum-try": "Wypróbuj Ethereum",
- "page-what-is-ethereum-tryit": "A więc przejdź do bazaru i spróbuj...",
- "page-what-is-ethereum-wallets": "Portfele",
- "page-what-is-ethereum-wallets-desc": "Sposób zarządzania posiadanym ETH i Twoim kontem Ethereum. Będziesz potrzebował portfela, aby rozpocząć – pomożemy Ci wybrać jeden.",
- "page-what-is-ethereum-welcome": "Witamy w Ethereum",
- "page-what-is-ethereum-welcome-2": "Mamy nadzieję, że zostaniesz."
+ "page-what-is-ethereum-subtitle": "Kompleksowy przewodnik dla początkujących, jak działa Ethereum, jakie przynosi korzyści i jak jest wykorzystywany przez miliony ludzi na całym świecie.",
+ "page-what-is-ethereum-button-lets-start": "Zaczynamy",
+ "page-what-is-ethereum-blockchain-tab-title": "Czym jest blockchain?",
+ "page-what-is-ethereum-blockchain-tab-content": "Blockchain to baza danych transakcji, która jest aktualizowana i udostępniana przez wiele komputerów w sieci. Nowy dodawany zestaw transakcji nazywamy „blokiem” – stąd nazwa blockchain. Większość blockchainów jest publiczna i można tylko dodawać dane, a nie je usuwać. Jeśli ktoś chciałby zmienić jakąkolwiek informację lub oszukać system, musi to zrobić na większości komputerów w sieci. A to, jak możesz sobie wyobrazić, bardzo dużo komputerów! To sprawia, że założone sieci blockchainów takie jak Ethereum są bardzo bezpieczne.",
+ "page-what-is-ethereum-cryptocurrency-tab-title": "Dlaczego jest ona nazywana kryptowalutą?",
+ "page-what-is-ethereum-cryptocurrency-tab-content": "Blockchain używają technik kryptograficznych, aby upewnić się, że Twoje środki są bezpieczne. Podobne techniki stosowane są w sektorze bankowym od wielu lat w celu zapewnienia bezpieczeństwa transakcji pieniężnych. Można więc powiedzieć, że kryptowaluty mają poziom bezpieczeństwa banku.",
+ "page-what-is-ethereum-summary-title": "Podsumowanie",
+ "page-what-is-ethereum-summary-desc-1": "Ethereum to technologia budowania aplikacji i organizacji, przechowywania aktywów, zawierania transakcji i komunikowania się bez kontroli centralnego organu. Nie ma potrzeby przekazywania wszystkich Twoich danych osobowych do korzystania z Ethereum — kontrolujesz swoje własne dane i to, co jest udostępniane. Ethereum ma własną kryptowalutę, Ether, która jest używana do płacenia za określone działania w sieci Ethereum.",
+ "page-what-is-ethereum-summary-desc-2": "Nadal nie do końca rozumiesz? Wyjaśnijmy wszystko krok po kroku.",
+ "page-what-is-ethereum-what-is-crypto-title": "Czym jest kryptowaluta?",
+ "page-what-is-ethereum-what-is-crypto-desc-1": "Krypto (skrót od kryptowaluty) to nowa forma cyfrowego pieniądza zasilanego kryptografią.",
+ "page-what-is-ethereum-what-is-crypto-desc-2": "Wszystko rozpoczęło się w 2008 roku od Bitcoina. Możesz użyć go do wysyłania środków do każdego na całym świecie. Kryptowaluty różnią się od zwykłych przelewów bankowych lub innych usług finansowych, takich jak Paypal czy Alipay, tym, że po raz pierwszy nie ma w nich pośrednika.",
+ "page-what-is-ethereum-what-is-crypto-desc-3": "Czekaj, kim jest pośrednik?",
+ "page-what-is-ethereum-what-is-crypto-desc-4": "Pośrednik jest organem centralnym, takim jak bank lub rząd, który interweniuje w transakcję między nadawcą a odbiorcą. Mają oni uprawnienia do przeglądania, cenzurowania lub odwracania transakcji i mogą dzielić się zgromadzonymi o Tobie wrażliwymi danymi z osobami trzecimi. Często również dyktują, do których usług finansowych masz dostęp.",
+ "page-what-is-ethereum-what-is-crypto-desc-5": "Inaczej jest w przypadku kryptowalut. Transakcje bezpośrednio łączą nadawcę i odbiorcę bez konieczności kontaktowania się z jakimkolwiek organem centralnym. Nikt inny nie będzie miał dostępu do Twoich środków i nikt nie będzie w stanie Ci powiedzieć, z jakich usług możesz korzystać. Jest to możliwe ze względu na technologię blockchain, na której działają kryptowaluty.",
+ "page-what-is-ethereum-btc-eth-diff-title": "Jaka jest różnica pomiędzy Ethereum a Bitcoinem?",
+ "page-what-is-ethereum-btc-eth-diff-1": "Założony w 2015 r. Ethereum opiera się na innowacjach Bitcoina, z kilkoma dużymi różnicami.",
+ "page-what-is-ethereum-btc-eth-diff-2": "Obie kryptowaluty pozwalają na korzystanie z pieniądza cyfrowego bez dostawców płatności lub banków. Ethereum jest programowalne, więc możesz również budować i wdrażać zdecentralizowane aplikacje w jego sieci.",
+ "page-what-is-ethereum-btc-eth-diff-3": "To, że Ethereum jest programowalne, oznacza, że możesz budować aplikacje, które używają blockchain do przechowywania danych lub kontrolowania tego, co może zrobić Twoja aplikacja. Prowadzi to do tworzenia łańcucha bloków (blockchain) o ogólnym przeznaczeniu, który może być zaprogramowany, aby zrobić wszystko. Nie mając ograniczeń, Ethereum pozwala na wielką innowacyjność.",
+ "page-what-is-ethereum-btc-eth-diff-4": "Podczas gdy Bitcoin jest tylko siecią płatniczą, Ethereum przypomina rynek usług finansowych, gamingowych, społecznościowych i innych aplikacji, które szanują Twoją prywatność i nie mogą Cię ocenzurować.",
+ "page-what-is-ethereum-what-can-eth-do-title": "Co może zrobić Ethereum?",
+ "page-what-is-ethereum-why-would-i-use-ethereum-title": "Dlaczego warto używać Ethereum?",
+ "page-what-is-ethereum-why-would-i-use-ethereum-1": "Jeśli kiedykolwiek wysłałeś(-aś) pieniądze za granicę (lub planujesz) lub musiałeś(-aś) się martwić o przyszłość Twoich aktywów z powodu sił zewnętrznych poza Twoją kontrolą w Twoim kraju albo zostały wprowadzone liczne ograniczenia i opłaty nakładane przez tradycyjne instytucje finansowe w odniesieniu do codziennych transakcji, powinieneś(-aś) być zainteresowany(-a) tym, co kryptowaluty mają do zaoferowania.",
+ "page-what-is-ethereum-why-would-i-use-ethereum-2": "Pamiętajmy, że Ethereum jest powieścią, która jest wciąż pisana, i wiele innych powodów, aby z niego korzystać, odkryto w miarę jego rozwoju z upływem czasu.",
+ "page-what-is-ethereum-slide-1-title": "Tańsze i szybsze płatności transgraniczne",
+ "page-what-is-ethereum-slide-1-desc-1": "Stablecoiny to nowatorski rodzaj kryptowaluty, który opiera się o stabilniejsze aktywa u podstaw swojej wartości. Większość z nich powiązane jest z dolarem amerykańskim, który utrzymuje ich wartość. Pozwala to na stworzenie taniego i szybkiego, globalnego systemu płatności. Większość stablecoinów została stworzona w sieci Ethereum.",
+ "page-what-is-ethereum-slide-1-desc-2": "Ethereum i stablecoiny znacznie ułatwiają przesyłanie pieniędzy za granicę. Zwykle trwa to zaledwie kilka minut, by pieniądze znalazły się na drugim końcu globu. W przeciwieństwie do kilku jak nie kilkunastu dni roboczych, które potrzebuje Twój bank na zrealizowanie takiej transakcji o znacznie większej prowizji. Ponadto nie ma dodatkowych opłat, zależnych od wysokości transakcji, oraz ograniczeń co do tego, gdzie i dlaczego wysyłasz pieniądze.",
+ "page-what-is-ethereum-slide-2-title": "Najszybsza pomoc w czasach kryzysu",
+ "page-what-is-ethereum-slide-2-desc-1": "Jeśli masz szczęście mieć wiele opcji bankowych w zaufanych instytucjach w swoim miejscu zamieszkania, możesz uznać za pewnik wolność finansową, bezpieczeństwo i stabilność, które one oferują. Jednak dla wielu ludzi na całym świecie, którzy stoją w obliczu represji politycznych lub trudności ekonomicznych, instytucje finansowe mogą nie zapewnić ochrony lub usług, których potrzebują.",
+ "page-what-is-ethereum-slide-2-desc-2": "Kiedy wojna, kryzys ekonomiczny lub ograniczenie swobód obywatelskich dotknęły mieszkańców Wenezueli, Kuby, Afganistanu, Nigerii Białorusii Ukrainy, kryptowaluty stanowiły najszybszą i często jedyną możliwą instytucję finansową.1 Jak widać w tych przykładach, kryptowaluty takie jak Ethereum mogą zapewnić niezakłócony dostęp do światowych rynków w sytuacji, gdy ludzie są odcięci od świata. Ponadto stablecoiny to doskonały sposób na przechowywanie wartości w czasie inflacji, gdy wartość lokalnych walut spada.",
+ "page-what-is-ethereum-slide-3-title": "Wzmocnienie pozycji twórców",
+ "page-what-is-ethereum-slide-3-desc-1": "Tylko w 2021 r. artyści, muzycy, pisarze i inni twórcy skorzystali z sieci Ethereum. Ich dochód to około 3,5 miliarda dolarów. Dzięki temu Ethereum jest jedną z największych globalnych platform dla twórców, obok Spotify, YouTube i Etsy. Dowiedz się więcej.",
+ "page-what-is-ethereum-slide-4-title": "Wzmocnienie pozycji graczy",
+ "page-what-is-ethereum-slide-4-desc-1": "Gry typu play-to-earn (gdzie gracze faktycznie zarabiają) od niedawna przekształcają całą branżę. Zwykle w grach zakazuje się graczom handlu czy przesyłania np. przedmiotów innym za prawdziwe pieniądze. To często prowadzi do czarnorynkowych rozwiązań w postaci stron internetowych, gdzie owe rzeczy można spieniężyć. Strony te często stanowią zagrożenie dla bezpieczeństwa. Gry oparte na blockchainie posiadają swoją ekonomię, która dopuszcza takie praktyki, jednak w bezpiecznym i zaufanym środowisku.",
+ "page-what-is-ethereum-slide-4-desc-2": "Ponadto gracze są zachęcani do handlu swoimi tokenami za prawdziwe pieniądze, co sprawia, że zarabiają w czasie gry.",
+ "page-what-is-ethereum-meet-ether-title": "Poznaj ether, kryptowalutę Ethereum",
+ "page-what-is-ethereum-meet-ether-desc-1": "Ethereum ma natywną kryptowalutę zwaną ether (ETH). Jest to czysto cyfrowy twór, który błyskawicznie możesz wysłać każdemu, w każde miejsce na świecie. Podaż ETH nie jest kontrolowana przez żaden rząd ani firmę – jest zdecentralizowana i całkowicie transparentna. Nowe monety (nazywane także tokenami) są emitowane tylko dla stakerów, którzy zabezpieczają sieć.",
+ "page-what-is-ethereum-meet-ether-desc-2": "Każde działanie w sieci Ethereum wymaga pewnej ilości mocy obliczeniowej. Ta opłata jest płacona w formie etheru. Oznacza to, że potrzebujesz małej ilości ETH do korzystania z sieci.",
+ "page-what-is-ethereum-what-is-ether": "Czym jest ether?",
+ "page-what-is-ethereum-get-eth": "Zdobądź ETH",
+ "page-what-is-ethereum-what-can-i-do-title": "Co moge zrobić z monetami ETH?",
+ "page-what-is-ethereum-what-can-i-do-desc-1": "Okazuje się, że wiele rzeczy! Jednym z najistotniejszych zastosowań technologii Ethereum są zdecentralizowane finanse (DeFi), które otwierają przed Tobą wiele obszarów usług bankowych, z których może korzystać każdym, kto ma Internet. Możesz użyć monet ether, by wziąć pożyczkę lub zapewnić płynność finansową, aby zarabiać na odsetkach.",
+ "page-what-is-ethereum-explore-applications": "Odkrywaj aplikacje",
+ "page-what-is-ethereum-learn-defi": "Dowiedz się więcej o DeFi",
+ "page-what-is-ethereum-who-runs-ethereum-title": "Kto prowadzi Ethereum?",
+ "page-what-is-ethereum-who-runs-ethereum-desc-1": "Ethereum nie jest kontrolowane przez żadną jednostkę. Istnieje wyłącznie poprzez zdecentralizowane uczestnictwo i współpracę społeczności. Ethereum korzysta z wielu węzłów (komputerów z kopią danych blockchaina Ethereum) utrzymywanych przez wolontariuszy w celu zastąpienia poszczególnych serwerów i systemów chmurowych należących do głównych dostawców i usług internetowych.",
+ "page-what-is-ethereum-who-runs-ethereum-desc-2": "Te rozproszone węzły, obsługiwane zarówno przez osoby indywidualne, jak i przedsiębiorstwa, rozsiane są po całym świecie, co zapewnia odporność infrastruktury sieci Ethereum. Przez to jest ona mniej podatna na ataki hakerskie i wyłączenie. Od 2015 roku, czyli powstania sieci, jej działanie nigdy nie zostało przerwane. Ethereum składa się z tysięcy pojedynczych węzłów, to czyni ją najbardziej zdecentralizowaną zaraz po sieci bitcoin.",
+ "page-what-is-ethereum-run-a-node": "Dodaj węzeł",
+ "page-what-is-ethereum-smart-contract-title": "Czym są inteligentne kontrakty?",
+ "page-what-is-ethereum-smart-contract-desc-1": "Inteligentne kontrakty to proste programy komputerowe usytuowane na blockchainie Ethereum. Działają one tylko w momencie aktywowania transakcji przez użytkownika lub inny kontrakt. Czyni to Ethereum bardziej elastyczną, co szczególnie odróżnia ją od innych kryptowalut. Te programy są tym, co obecnie nazywamy zdecentralizowanymi aplikacjami, czyli dapps.",
+ "page-what-is-ethereum-smart-contract-desc-2": "Czy kiedykolwiek korzystałeś(-aś) z produktu lub usługi, która zmieniła warunki użytkowania lub usunęła cechy, które były dla Ciebie przydatne? Inteligentny kontrakt raz umieszczony w sieci Ethereum istnieje na niej tak długo, jak działać będzie sama sieć. Nawet ten, kto umieścił tam inteligentny kontrakt, nie jest w stanie go usunąć. Inteligentne kontrakty są zautomatyzowane, dlatego żaden użytkownik nie jest dyskryminowany, a one same zawsze są gotowe do użytku.",
+ "page-what-is-ethereum-smart-contract-desc-3": "Popularnymi przykładami inteligentnych kontraktów są aplikacje, zdecentralizowane giełdy handlowe, ubezpieczenia, aplikacje crowdfoundingowe — zasadniczo wszystko, o czym pomyślisz.",
+ "page-what-is-ethereum-more-on-smart-contracts": "Więcej na temat inteligentnych kontraktów",
+ "page-what-is-ethereum-explore-dapps": "Przeglądaj zdecentralizowane aplikacje",
+ "page-what-is-ethereum-criminal-activity-title": "Ponoć kryptowaluty są wykorzystywane jako narzędzie działalności przestępczej. Czy to prawda?",
+ "page-what-is-ethereum-criminal-activity-desc-1": "Podobnie jak każda forma pieniądza, ta również może być wykorzystana w niewłaściwy sposób. Jednak wszystkie transakcje w sieci Ethereum są zawierane na otwartym blockchainie. Dzięki temu organom ścigania łatwiej jest je śledzić niż te w tradycyjnym systemie finansowym. Przez to sieć Ethereum może być mniej atrakcyjną opcją dla tych, którzy nie chcieliby zostać wykryci.",
+ "page-what-is-ethereum-criminal-activity-desc-2": "Kryptowaluty w znacznie mniejszym stopniu używane są do działalności przestępczej niż pieniądz fiducjarny. Wynika to z raportu Eropolu, Agencji Unii Europejskiej ds. Współpracy Organów Ścigania:",
+ "page-what-is-ethereum-criminal-activity-desc-3": "„Wykorzystanie kryptowalut do nielegalnych działań wydaje się obejmować jedynie niewielką część ogólnej gospodarki kryptowalutowej i wydaje się, że jest ona stosunkowo mniejsza niż kwota nielegalnych środków finansowych pochodzących z systemów tradycyjnych”.",
+ "page-what-is-ethereum-energy-title": "A co ze zużyciem energii przez Ethereum?",
+ "page-what-is-ethereum-energy-desc-1": "Obecnie Ethereum używa mechanizmu dowodu pracy, który pochłania dużą ilość energii. W nadchodzących miesiącach (III/IV kwartał 2022 roku) Ethereum przejdzie największą dotychczas aktualizację i przejdzie na mechanizm dowodu stawki, który znacznie zmniejszy jego wpływ na środowisko.",
+ "page-what-is-ethereum-energy-desc-2": "Ta aktualizacja zmniejszy pobór energii wymaganej do zabezpieczenia Ethereum o około 99,95%, tworząc bezpieczniejszą sieć o znacznie mniejszej emisji dwutlenku węgla. Dzięki temu Ethereum stanie się prawdziwie niskoemisyjnym blockchainem, zwiększając jednocześnie swoje bezpieczeństwo i skalowalność.",
+ "page-what-is-ethereum-more-on-energy-consumption": "Więcej o zużyciu energii",
+ "page-what-is-ethereum-energy-consumption-chart-legend": "Roczne zużycie energii w TW/rok",
+ "page-what-is-ethereum-the-merge-update": "Aktualizacja połączenia",
+ "page-what-is-ethereum-additional-reading": "Przypisy",
+ "page-what-is-ethereum-week-in-ethereum": "Cotygodniowe wiadomości Ethereum",
+ "page-what-is-ethereum-week-in-ethereum-desc": "– Cotygodniowy newsletter zawierający kluczowe zmiany w ekosystemie.",
+ "page-what-is-ethereum-the-year-in-ethereum-2021": "Rok 2021 w Ethereum",
+ "page-what-is-ethereum-the-year-in-ethereum-2021-desc": "17 stycznia 2022 r. – Josh Stark i Evan Van Ness",
+ "page-what-is-ethereum-atoms-institutions-blockchains": "Atom, instytucje, blockchainy",
+ "page-what-is-ethereum-atoms-institutions-blockchains-desc": "– Dlaczego blockchainy mają znaczenie?",
+ "page-what-is-ethereum-ethereum-in-numbers-title": "Ethereum w liczbach"
}
diff --git a/src/intl/pl/template-usecase.json b/src/intl/pl/template-usecase.json
new file mode 100644
index 00000000000..7a8a9283891
--- /dev/null
+++ b/src/intl/pl/template-usecase.json
@@ -0,0 +1,11 @@
+{
+ "template-usecase-dropdown-defi": "Zdecentralizowane finanse (DeFi)",
+ "template-usecase-dropdown-nft": "Tokeny niewymienialne (NFT)",
+ "template-usecase-dropdown-dao": "Zdecentralizowane autonomiczne organizacje (DAO)",
+ "template-usecase-dropdown-social-networks": "Zdecentralizowane sieci społecznościowe",
+ "template-usecase-dropdown-identity": "Zdecentralizowana tożsamość",
+ "template-usecase-dropdown": "Przykłady użycia Ethereum",
+ "template-usecase-banner": "Zastosowanie Ethereum stale się rozwija i ewoluuje. Dodaj wszelkie informacje, które Twoim zdaniem sprawią, że wszystko będzie bardziej przejrzyste a aktualne.",
+ "template-usecase-edit-link": "Edytuj stronę",
+ "template-usecase-dropdown-aria": "Użyj rozwijanego menu"
+}
diff --git a/src/intl/pt-br/page-community.json b/src/intl/pt-br/page-community.json
index dff825918e6..2dcbd4b1a54 100644
--- a/src/intl/pt-br/page-community.json
+++ b/src/intl/pt-br/page-community.json
@@ -43,6 +43,7 @@
"page-community-support-description": "Precisa de suporte? Não há um suporte oficial na Ethereum, mas centenas de comunidades de apoio estão disponíveis para ajudar à você prosperar no Ethereum.",
"page-community-try-ethereum": "Experimente o Ethereum por conta própria",
"page-community-upcoming-events-no-events": "Não estamos cientes de nenhum evento que esteja por vir. Sabe de algum?",
+ "page-community-upcoming-events-load-more": "Carregar mais",
"page-community-why-get-involved-title": "Por que se envolver?",
"page-community-why-get-involved-card-1-title": "Encontre a sua tribo",
"page-community-why-get-involved-card-1-description": "Há uma tribo para todos. Encontre e conecte-se com pessoas de mesma mentalidade, avaliem e celebrem o Ethereum juntos.",
diff --git a/src/intl/pt-br/page-developers-docs.json b/src/intl/pt-br/page-developers-docs.json
index afa17ffc10e..0ec91247269 100644
--- a/src/intl/pt-br/page-developers-docs.json
+++ b/src/intl/pt-br/page-developers-docs.json
@@ -6,12 +6,19 @@
"docs-nav-block-explorers": "Exploradores de bloco",
"docs-nav-blocks": "Blocos",
"docs-nav-blocks-description": "A forma como as transações são processadas para garantir que o estado seja sincronizado entre todos os atores",
+ "docs-nav-bridges": "Pontes",
+ "docs-nav-bridges-description": "Uma visão geral da ponte para desenvolvedores",
"docs-nav-compiling-smart-contracts": "Compilação de contratos inteligentes",
"docs-nav-composability": "Componibilidade",
"docs-nav-consensus-mechanisms": "Mecanismos de consenso",
"docs-nav-consensus-mechanisms-description": "Como os nós individuais de uma rede distribuída concordam com o estado atual do sistema",
+ "docs-nav-gasper": "Gasper",
+ "docs-nav-weak-subjectivity": "Subjetividade fraca",
+ "docs-nav-attestations": "Atestações",
+ "docs-nav-keys": "Chaves",
"docs-nav-data-and-analytics": "Dados e Estatísticas",
"docs-nav-data-and-analytics-description": "Como os dados da blockchain são agregados, organizados e implementados em dapps",
+ "docs-nav-data-availability": "Disponibilidade de dados",
"docs-nav-dart": "Dart",
"docs-nav-delphi": "Delphi",
"docs-nav-deploying-smart-contracts": "Implantação de contratos inteligentes",
@@ -24,6 +31,7 @@
"docs-nav-erc-721": "ERC-721: NFTs",
"docs-nav-erc-777": "ERC-777",
"docs-nav-erc-1155": "ERC-1155",
+ "docs-nav-erc-4626": "ERC-4626",
"docs-nav-ethereum-client-apis": "APIs de cliente Ethereum",
"docs-nav-ethereum-client-apis-description": "Bibliotecas de conveniência que permitem ao seu aplicativo web interagir com Ethereum e contratos inteligentes",
"docs-nav-ethereum-stack": "Pilha de Ethereum",
@@ -47,9 +55,12 @@
"docs-nav-java-script-apis": "APIs JavaScript",
"docs-nav-javascript": "JavaScript",
"docs-nav-json-rpc": "JSON-RPC",
- "docs-nav-mev": "Valor extraível da Mineração (MEV)",
+ "docs-nav-mev": "Valor máximo extraível (MEV)",
"docs-nav-mev-description": "Como o valor é extraído da cadeia de blocos Ethereum para além da recompensa por bloco",
"docs-nav-mining": "Mineração",
+ "docs-nav-mining-algorithms": "Algoritmos de mineração",
+ "docs-nav-dagger-hashamoto": "Dagger-Hashamoto",
+ "docs-nav-ethash": "Ethash",
"docs-nav-networks": "Redes",
"docs-nav-networks-description": "Implementações da Ethereum, incluindo as redes de teste",
"docs-nav-nodes-and-clients": "Nós e clientes",
@@ -78,6 +89,8 @@
"docs-nav-scaling-validium": "Valido",
"docs-nav-smart-contract-security": "Segurança do contrato inteligente",
"docs-nav-smart-contract-security-description": "Melhores práticas para gerenciar ataques e vulnerabilidades de contratos inteligentes",
+ "docs-nav-smart-contract-formal-verification": "Verificação formal do contrato inteligente",
+ "docs-nav-smart-contract-formal-verification-description": "Uma introdução contextual formal a verificação de contratos inteligentes do Ethereum",
"docs-nav-smart-contract-anatomy": "Anatomia do contrato inteligente",
"docs-nav-smart-contract-languages": "Linguagens de contratos inteligentes",
"docs-nav-smart-contracts": "Smart Contracts",
@@ -91,8 +104,20 @@
"docs-nav-token-standards": "Padrões de token",
"docs-nav-transactions": "Transações",
"docs-nav-transactions-description": "Transferências e outras ações que fazem com que o estado da Ethereum altere",
+ "docs-nav-upgrading-smart-contracts": "Atualizando contratos inteligentes",
+ "docs-nav-verifying-smart-contracts": "Verificando contratos inteligentes",
"docs-nav-web2-vs-web3": "Web2 vs Web3",
"docs-nav-web2-vs-web3-description": "As diferenças fundamentais que as aplicações baseadas em blockchain oferecem",
+ "docs-nav-networking-layer": "Camada de rede",
+ "docs-nav-networking-layer-description": "Explicação da camada de rede do Ethereum",
+ "docs-nav-networking-layer-network-addresses": "Endereços de rede",
+ "docs-nav-data-structures-and-encoding": "Codificação e estruturas de dados",
+ "docs-nav-data-structures-and-encoding-description": "Introdução às estruturas de dados e esquema de codificação utilizado na pilha Ethereum",
+ "docs-nav-data-structures-and-encoding-rlp": "Prefixo de comprimento recursivo (RLP)",
+ "docs-nav-data-structures-and-encoding-patricia-merkle-trie": "Patricia Merkle Trie",
+ "docs-nav-data-structures-and-encoding-ssz": "Serialização simples (SSZ)",
+ "docs-nav-data-structures-and-encoding-web3-secret-storage": "Definição de armazenamento secreto Web3",
+ "docs-nav-rewards-and-penalties": "Recompensas e penalidades da PoS",
"page-calltocontribute-desc-1": "Se você for um especialista sobre o tema e quiser contribuir, edite esta página e preencha-a com sua sabedoria.",
"page-calltocontribute-desc-2": "Você será creditado e estará ajudando a comunidade Ethereum!",
"page-calltocontribute-desc-3": "Use este",
diff --git a/src/intl/pt-br/page-upgrades-get-involved-bug-bounty.json b/src/intl/pt-br/page-upgrades-get-involved-bug-bounty.json
index 88f76f6c910..7913cb22661 100644
--- a/src/intl/pt-br/page-upgrades-get-involved-bug-bounty.json
+++ b/src/intl/pt-br/page-upgrades-get-involved-bug-bounty.json
@@ -1,34 +1,41 @@
{
"page-upgrades-bug-bounty-annotated-specs": "especificação anotada",
"page-upgrades-bug-bounty-annotations": "Pode ser útil conferir as seguintes anotações:",
- "page-upgrades-bug-bounty-client-bugs": "Bugs nos clientes da camada de consenso",
- "page-upgrades-bug-bounty-client-bugs-desc": "Os clientes executarão a Beacon Chain quando o upgrade for implantado. Os clientes terão de seguir a lógica estabelecida na especificação e estar protegidos contra potenciais ataques. Os bugs que buscamos estão relacionados com as implementações do protocolo.",
- "page-upgrades-bug-bounty-client-bugs-desc-2": "Somente bugs da Lighthouse, Nimbus, Prysm e Teku estão atualmente elegíveis para esta recompensa. Mais clientes serão adicionados à medida que completarem auditorias e ficarem prontos para entrar em produção.",
+ "page-upgrades-bug-bounty-client-bugs": "Bugs do cliente",
+ "page-upgrades-bug-bounty-client-bugs-desc": "Os clientes executam a rede Ethereum e precisam seguir a lógica estabelecida na especificação e estar seguros contra possíveis ataques. Os bugs que queremos encontrar estão relacionados à implementação do protocolo.",
+ "page-upgrades-bug-bounty-client-bugs-desc-2": "Atualmente, clientes da camada de execução (Besu, Erigon, Geth e Nethermind) e clientes da camada de consenso (Lighthouse, Lodestar, Nimbus, Teku e Prysm) estão incluídos no programa Bug Bounty. Mais clientes podem ser adicionados à medida que completam as auditorias e ficam prontos para a produção.",
"page-upgrades-bug-bounty-clients": "Clientes em destaque nas recompensas",
"page-upgrades-bug-bounty-clients-type-1": "Problemas de não conformidade de especificação",
- "page-upgrades-bug-bounty-clients-type-2": "Falhas inesperadas ou vulnerabilidades de negação de serviço (DOS)",
+ "page-upgrades-bug-bounty-clients-type-2": "Falhas inesperadas, vulnerabilidades RCE ou de negação de serviço (DOS)",
"page-upgrades-bug-bounty-clients-type-3": "Quaisquer questões que provoquem divisões irreparáveis de consenso do resto da rede",
+ "page-upgrades-bug-bounty-misc-bugs": "Bugs do Solidity",
+ "page-upgrades-bug-bounty-misc-bugs-desc": "Consulte o Solidity SECURITY.MD para obter mais detalhes sobre o que está incluído neste escopo.",
+ "page-upgrades-bug-bounty-misc-bugs-desc-2": "O Solidity não possui garantias de segurança sobre a compilação de entradas não confiáveis – e nós não emitimos recompensas por travamentos do compilador solc em dados gerados de forma maliciosa.",
+ "page-upgrades-bug-bounty-deposit-bugs": "Falhas no contrato de depósito",
+ "page-upgrades-bug-bounty-deposit-bugs-desc": "As especificações e o código-fonte do Contrato de Depósito da Beacon Chain fazem parte do programa de recompensas por bugs.",
"page-upgrades-bug-bounty-docking": "fusão",
"page-upgrades-bug-bounty-email-us": "Envie-nos um e-mail:",
"page-upgrades-bug-bounty-help-links": "Links úteis",
"page-upgrades-bug-bounty-hunting": "Regras de caça a bugs",
- "page-upgrades-bug-bounty-hunting-desc": "O programa de recompensas pela detecção de bugs é um programa de recompensas experimental e discricionário para a nossa comunidade ativa no Ethereum, para incentivar e recompensar aqueles que estão ajudando a melhorar a plataforma. Não se trata de uma competição. Você deve saber que podemos cancelar o programa a qualquer momento e que os prêmios ficam exclusivamente a critério do painel de caça a bugs da Fundação Ethereum. Além disso, não podemos conceder prêmios a indivíduos que se encontram em listas de sanções ou que se encontram em países em listas de sanções (por exemplo, Coreia do Norte, Irã etc). Você é responsável por todos os impostos. Todos os prêmios estão sujeitos à lei aplicável. Finalmente, o seu teste não deve violar nenhuma lei ou comprometer quaisquer dados que não sejam seus.",
- "page-upgrades-bug-bounty-hunting-leaderboard": "Placar de caça a bugs",
+ "page-upgrades-bug-bounty-hunting-desc": "O programa bug bounty é um programa de recompensas experimental e discricionário destinado à ativa comunidade do Ethereum, visando incentivar e recompensar aqueles que estão ajudando a melhorar a plataforma. Isso não é uma competição. É importante saber que podemos cancelar o programa a qualquer momento, e os prêmios ficam a critério exclusivo do painel de recompensa por bugs da Ethereum Foundation. Além disso, não podemos conceder prêmios a indivíduos que estejam nas listas de sanções ou que estejam em países nas listas de sanções (por exemplo, Coreia do Norte, Irã etc.). As leis locais exigem que solicitemos prova de sua identidade. Você é responsável por todos os impostos. Todos os prêmios estão sujeitos à lei aplicável. Por fim, seu teste não deve violar nenhuma lei ou comprometer quaisquer dados que não sejam seus e deve ocorrer em redes de teste locais em execução.",
+ "page-upgrades-bug-bounty-hunting-leaderboard": "Tabela de classificação de recompensas por bugs da camada de consenso",
+ "page-upgrades-bug-bounty-hunting-execution-leaderboard": "Tabela de classificação de recompensas por bugs da camada de execução",
"page-upgrades-bug-bounty-hunting-leaderboard-subtitle": "Encontre bugs na camada de consenso para serem adicionados a esta tabela de classificação",
- "page-upgrades-bug-bounty-hunting-li-1": "Problemas que já foram enviados por outro usuário ou que já são conhecidos por mantenedores de especificações e de clientes não são elegíveis para o programa de recompensas.",
+ "page-upgrades-bug-bounty-hunting-execution-leaderboard-subtitle": "Encontre bugs da camada de execução para ser adicionado a esta tabela de classificação",
+ "page-upgrades-bug-bounty-hunting-li-1": "Tickets sem um POC que já tenham sido submetidos por outro usuário ou que já sejam conhecidos por mantenedores de especificações e clientes não são elegíveis para o programa de recompensas.",
"page-upgrades-bug-bounty-hunting-li-2": "A divulgação pública de uma vulnerabilidade a torna inelegível para uma recompensa.",
- "page-upgrades-bug-bounty-hunting-li-3": "Os pesquisadores da Fundação Ethereum e os funcionários das equipes dos clientes da camada de consenso não são elegíveis para recompensas.",
+ "page-upgrades-bug-bounty-hunting-li-3": "Funcionários e contratados da Ethereum Foundation ou equipes de clientes no escopo do programa de recompensas podem participar do programa apenas no acúmulo de pontos e não receberão recompensas monetárias.",
"page-upgrades-bug-bounty-hunting-li-4": "O programa de recompensas de Ethereum considera um número de variáveis na determinação de recompensas. Determinações de elegibilidade, pontuação e todos os termos relacionados a um prêmio são a critério único e final do painel de recompensas da Fundação Ethereum.",
- "page-upgrades-bug-bounty-leaderboard": "Veja o placar completo",
+ "page-upgrades-bug-bounty-leaderboard": "Ver a tabela de classificação completa",
"page-upgrades-bug-bounty-leaderboard-points": "pontos",
- "page-upgrades-bug-bounty-ledger-desc": "A especificação da Beacon Chain detalha a lógica por trás do design e sugeriu mudanças para o Ethereum através de um upgrade dela.",
- "page-upgrades-bug-bounty-ledger-title": "Bugs na especificação da Beacon Chain",
- "page-upgrades-bug-bounty-meta-description": "Uma visão geral do programa de recompensas para bugs na camada de consenso: como participar e recompensar a informação.",
- "page-upgrades-bug-bounty-meta-title": "Programa de recompensas para caçar bugs na camada de consenso",
- "page-upgrades-bug-bounty-not-included": "Não incluído",
- "page-upgrades-bug-bounty-not-included-desc": "A fusão e as melhorias na cadeia de fragmentos estão ainda em processo de desenvolvimento e não fazem parte do programa de recompensas.",
+ "page-upgrades-bug-bounty-ledger-desc": "As especificações do Ethereum detalham a lógica do design para a Camada de Execução e a Camada de Consenso.",
+ "page-upgrades-bug-bounty-ledger-title": "Especificação de bugs",
+ "page-upgrades-bug-bounty-meta-description": "Uma visão geral do programa de recompensas de bugs do Ethereum: como se envolver e recompensar informações.",
+ "page-upgrades-bug-bounty-meta-title": "Programa de Recompensas por Bugs Ethereum",
+ "page-upgrades-bug-bounty-not-included": "Fora do escopo",
+ "page-upgrades-bug-bounty-not-included-desc": "Apenas os alvos listados no escopo fazem parte do programa de Recompensa por Bugs. Isso significa que, por exemplo, nossa infraestrutura; como páginas Web, DNS, e-mail etc., não fazem parte do escopo da recompensa. Bugs do contrato ERC20 normalmente não são incluídos no escopo de recompensa. No entanto, podemos ajudar a alcançar as partes afetadas, como autores ou trocas nesses casos. O ENS é mantido pela fundação ENS e não faz parte do escopo de recompensa.",
"page-upgrades-bug-bounty-owasp": "Visualizar método OWASP",
- "page-upgrades-bug-bounty-points": "A FE também atribuirá pontos com base em:",
+ "page-upgrades-bug-bounty-points": "O EF também fornecerá recompensas com base em:",
"page-upgrades-bug-bounty-points-error": "Erro ao carregar dados... atualize.",
"page-upgrades-bug-bounty-points-exchange": "Troca de pontos",
"page-upgrades-bug-bounty-points-loading": "Carregando dados...",
@@ -40,16 +47,16 @@
"page-upgrades-bug-bounty-quality-desc": ": recompensas maiores são pagas para envios claros e bem-escritos.",
"page-upgrades-bug-bounty-quality-fix": "Qualidade da correção, se incluída: recompensas maiores são pagas por envios que contenham uma descrição clara de como corrigir o problema.",
"page-upgrades-bug-bounty-quality-repro": "Qualidade da reprodutibilidade",
- "page-upgrades-bug-bounty-quality-repro-desc": ": inclua código de teste, scripts e instruções detalhadas. Quanto mais fácil for para nós reproduzir e verificar a vulnerabilidade, maior será a recompensa.",
+ "page-upgrades-bug-bounty-quality-repro-desc": ": Uma Prova de Conceito (POC) deve ser incluída para ser elegível para recompensas. Inclua código de teste, scripts e instruções detalhadas. Quanto mais fácil for para nós reproduzirmos e verificarmos a vulnerabilidade, maior será a recompensa.",
"page-upgrades-bug-bounty-questions": "Perguntas?",
"page-upgrades-bug-bounty-rules": "Leia as regras",
- "page-upgrades-bug-bounty-shard-chains": "cadeias de fragmentos (shard chains)",
- "page-upgrades-bug-bounty-slogan": "Recompensas por bugs encontrados na camada de consenso",
- "page-upgrades-bug-bounty-specs": "Leia a especificação completa",
+ "page-upgrades-bug-bounty-slogan": "Programa de Recompensa por Bugs",
+ "page-upgrades-bug-bounty-specs": "Especificações da Camada de Consenso",
+ "page-upgrades-bug-bounty-execution-specs": "Especificações da Camada de Execução",
"page-upgrades-bug-bounty-specs-docs": "Documentos da especificação",
"page-upgrades-bug-bounty-submit": "Enviar um bug",
- "page-upgrades-bug-bounty-submit-desc": "Você será recompensado com pontos por cada bug que encontrar. Os pontos que você ganhar dependem da gravidade do problema. A Fundação Ethereum (EF) determina a gravidade usando o método OWASP.",
- "page-upgrades-bug-bounty-subtitle": "Ganhe até US$ 50.000 e um lugar na tabela de classificação encontrando bugs no protocolo da camada de consenso e dos clientes.",
+ "page-upgrades-bug-bounty-submit-desc": "Para cada bug válido que você encontrar você receberá recompensas. A quantidade de recompensas concedidas variará conforme a severidade. A severidade é calculada de acordo com o modelo de classificação de risco da OWASP com base no impacto na Rede Ethereum e na Probabilidade.",
+ "page-upgrades-bug-bounty-subtitle": "Ganhe até US$250.000 e um lugar na tabela de classificação ao encontrar bugs no protocolo, cliente e Solidity que afete a rede Ethereum.",
"page-upgrades-bug-bounty-title": "Aberto para inscrições",
"page-upgrades-bug-bounty-title-1": "Beacon Chain",
"page-upgrades-bug-bounty-title-2": "Escolha do fork",
@@ -60,21 +67,21 @@
"page-upgrades-bug-bounty-type-3": "Inconsistências em suposições, como situações em que validadores honestos podem ser eliminados",
"page-upgrades-bug-bounty-type-4": "Inconsistências de cálculo ou de parâmetros",
"page-upgrades-bug-bounty-types": "Tipos de bugs",
- "page-upgrades-bug-bounty-validity": "Bugs válidos",
- "page-upgrades-bug-bounty-validity-desc": "Este programa de recompensa por encontrar bugs visa achar erros na especificação do núcleo da camada de consenso da Beacon Chain e nas implementações dos clientes Lighthouse, Nimbus, Teku e Prysm.",
+ "page-upgrades-bug-bounty-validity": "No escopo",
+ "page-upgrades-bug-bounty-validity-desc": "Nosso programa de recompensas por bugs abrange de ponta a ponta: desde a solidez dos protocolos (como o modelo de consenso da cadeia de blocos, os protocolos p2p e wire, prova de participação, etc.) até a conformidade de protocolo/implementação para segurança da rede e a integridade de consenso. A segurança clássica do cliente, bem como a segurança das primitivas criptográficas, também fazem parte do programa. Em caso de dúvida, envie sua pergunta por e-mail para bounty@ethereum.org.",
"page-upgrades-bug-bounty-card-critical": "Crítico",
"page-upgrades-bug-bounty-card-critical-risk": "Envie um bug de risco crítico",
"page-upgrades-bug-bounty-card-h2": "Médio",
"page-upgrades-bug-bounty-card-high": "Alto",
"page-upgrades-bug-bounty-card-high-risk": "Envie um bug de risco alto",
"page-upgrades-bug-bounty-card-label-1": "Até 1.000 pontos",
- "page-upgrades-bug-bounty-card-label-2": "Até 2.000 DAI",
+ "page-upgrades-bug-bounty-card-label-2": "Até 2.000 dólares",
"page-upgrades-bug-bounty-card-label-3": "Até 5.000 pontos",
- "page-upgrades-bug-bounty-card-label-4": "Até 10.000 DAI",
+ "page-upgrades-bug-bounty-card-label-4": "Até 10.000 dólares",
"page-upgrades-bug-bounty-card-label-5": "Até 10.000 pontos",
- "page-upgrades-bug-bounty-card-label-6": "Até 20.000 DAI",
+ "page-upgrades-bug-bounty-card-label-6": "Até 50.000 dólares",
"page-upgrades-bug-bounty-card-label-7": "Até 25.000 pontos",
- "page-upgrades-bug-bounty-card-label-8": "Até 50.000 DAI",
+ "page-upgrades-bug-bounty-card-label-8": "Até 250.000 dólares",
"page-upgrades-bug-bounty-card-li-1": "Impacto baixo, probabilidade media",
"page-upgrades-bug-bounty-card-li-2": "Impacto médio, probabilidade baixa",
"page-upgrades-bug-bounty-card-li-3": "Impacto alto, probabilidade baixa",
@@ -90,6 +97,6 @@
"page-upgrades-bug-bounty-card-subheader-2": "Exemplo",
"page-upgrades-bug-bounty-card-text": "O invasor pode, às vezes, colocar um nó em um estado que faz com que ele exclua uma em cada cem comprovações feitas por um validador",
"page-upgrades-bug-bounty-card-text-1": "O invasor pode conduzir ataques de eclipse em nós com pares de ids com 4 bytes com zeros à esquerda",
- "page-upgrades-bug-bounty-card-text-2": "Há um bug de consenso entre dois clientes, mas é difícil ou impraticável para o invasor desencadear o evento.",
- "page-upgrades-bug-bounty-card-text-3": "Há um bug de consenso entre dois clientes e é simples para um invasor desencadear o evento."
+ "page-upgrades-bug-bounty-card-text-2": "O invasor pode particionar com êxito grandes partes da rede. Para um invasor, ativar a vulnerabilidade é algo banal",
+ "page-upgrades-bug-bounty-card-text-3": "O invasor pode conduzir a execução de código remoto com êxito em um cliente maioritário. Para um invasor, ativar a vulnerabilidade é algo banal"
}
diff --git a/src/intl/pt-br/page-upgrades-get-involved.json b/src/intl/pt-br/page-upgrades-get-involved.json
index ae3a36532de..53c5483e7df 100644
--- a/src/intl/pt-br/page-upgrades-get-involved.json
+++ b/src/intl/pt-br/page-upgrades-get-involved.json
@@ -25,10 +25,13 @@
"page-upgrades-get-involved-join-desc": "Como a maioria das coisas no Ethereum, grande parte da pesquisa é pública. Isso significa que você pode participar das discussões ou apenas ler o que os pesquisadores do Ethereum têm a dizer. O site ethsear.ch abrange uma série de tópicos, incluindo atualizações de consenso, fragmentação, rollups e muito mais.",
"page-upgrades-get-involved-meta-description": "Como participar dos upgrades no Ethereum: execute nós, faça staking de ETH, cace bugs e muito mais.",
"page-upgrades-get-involved-more": "Mais informações",
- "page-upgrades-get-involved-run-clients": "Executar clientes de consenso",
- "page-upgrades-get-involved-run-clients-desc": "A chave para a segurança de longo prazo do Ethereum é uma forte distribuição de clientes. Um cliente é um software que executa o blockchain, verificando as transações e a criação de novos blocos. Cada cliente tem seus próprios recursos, portanto escolha um com base em seus conhecimentos.",
- "page-upgrades-get-involved-run-clients-desc-2": "Estes clientes eram anteriormente chamados de clientes \"Eth2\", mas este termo deixará de ser usado em favor de \"clientes da camada de consenso\".",
- "page-upgrades-get-involved-run-clients-production": "Clientes de consenso de produção",
+ "page-upgrades-get-involved-run-clients": "Executar um par de clientes",
+ "page-upgrades-get-involved-run-clients-desc": "Um \"cliente\" é um software que executa a cadeia de blocos e, no caso do Ethereum, um nó completo requer a execução de um par desses clientes: um cliente de camada de execução e um cliente de camada de consenso. Um nó completo pode checar as transações e, se também colocar ETH em participação, pode criar novos blocos. Cada cliente tem seus próprios recursos, mas desempenha a mesma função em geral, por isso recomendamos que você escolha um cliente minoritário sempre que possível para manter o grupo de clientes diversificado e seguro.",
+ "page-upgrades-get-involved-run-clients-desc-link": "Mais sobre a diversidade de clientes.",
+ "page-upgrades-get-involved-run-clients-execution": "Clientes da camada de execução",
+ "page-upgrades-get-involved-run-clients-execution-desc": "Esses clientes eram anteriormente chamados de clientes \"Eth1\", mas esse termo está sendo descontinuado e substituído por clientes da \"camada de execução\".",
+ "page-upgrades-get-involved-run-clients-consensus": "Clientes da camada de consenso",
+ "page-upgrades-get-involved-run-clients-consensus-desc": "Esses clientes eram anteriormente referenciados como clientes \"Eth2\", mas esse termo está sendo descontinuado e substituído por clientes da \"camada de execução\".",
"page-upgrades-get-involved-run-clients-experimental": "Clientes de consenso experimentais",
"page-upgrades-get-involved-stake": "Faça staking de seus ETH",
"page-upgrades-get-involved-stake-desc": "Agora você pode fazer staking de seus ETH para ajudar a proteger a Beacon Chain.",
@@ -37,6 +40,7 @@
"page-upgrades-get-involved-title-1": "Executar um cliente",
"page-upgrades-get-involved-title-2": "Faça staking de seus ETH",
"page-upgrades-get-involved-title-3": "Encontre bugs",
+ "page-upgrades-get-involved-written-c-sharp": "Escrito em C#",
"page-upgrades-get-involved-written-go": "Escrito em Go",
"page-upgrades-get-involved-written-java": "Escrito em Java",
"page-upgrades-get-involved-written-javascript": "Escrito em JavaScript",
diff --git a/src/intl/pt-br/page-upgrades-index.json b/src/intl/pt-br/page-upgrades-index.json
index 8402a4be081..2bcbd1b68d6 100644
--- a/src/intl/pt-br/page-upgrades-index.json
+++ b/src/intl/pt-br/page-upgrades-index.json
@@ -1,67 +1,65 @@
{
- "consensus-client-cortex-logo-alt": "Logotipo da Cortex",
+ "consensus-client-besu-logo-alt": "Logotipo da Besu",
+ "consensus-client-erigon-logo-alt": "Logotipo da Erigon",
+ "consensus-client-geth-logo-alt": "Logotipo da Geth",
"consensus-client-lighthouse-logo-alt": "Logotipo da Lighthouse",
"consensus-client-lodestar-logo-alt": "Logotipo da Lodestar",
+ "consensus-client-nethermind-logo-alt": "Logotipo da Nethermind",
"consensus-client-nimbus-logo-alt": "Logotipo do Nimbus",
"consensus-client-prysm-logo-alt": "Logotipo da Prysm",
"consensus-client-teku-logo-alt": "Logotipo da Teku",
- "page-upgrades-answer-1": "Pense nas mudanças que estão sendo lançadas como um conjunto de melhorias adicionadas para aprimorar o Ethereum que utilizamos hoje. Essas melhorias incluíram a criação de uma nova cadeia chamada Beacon Chain e introduzirá novas cadeias conhecidas como \"fragmentos\" no futuro.",
- "page-upgrades-answer-2": "Algumas melhorias estão separadas da rede principal do Ethereum que utilizamos hoje, mas não as substituirá. Em vez disso, a rede principal se \"mesclará\" com este sistema paralelo que está sendo adicionado ao longo do tempo.",
- "page-upgrades-answer-4": "Em outras palavras, o Ethereum que utilizamos hoje eventualmente incorporará todos os recursos que buscamos.",
+ "consensus-client-under-review": "Revisão e auditoria em andamento",
+ "page-upgrades-answer-1": "A Beacon Chain foi usada como uma ferramenta para atualizar a Rede principal do Ethereum na Fusão.",
+ "page-upgrades-answer-2": "Com A Fusão, o Ethereum teve a sua atualização mais substancial de todos os tempos, trocando a prova de trabalho por uma nova camada de consenso baseada em prova de participação.",
+ "page-upgrades-answer-4": "A Beacon Chain foi usada para desenvolver o consenso baseado na prova de participação que o Ethereum usa atualmente. Ele foi executado separadamente na Rede principal do Ethereum para que os desenvolvedores pudessem observar o mecanismo de consenso isoladamente antes de usá-lo para coordenar a atividade real.",
+ "page-upgrade-article-author-ethmerge": "Ethmerge",
+ "page-upgrade-article-author-alchemy": "Alchemy",
+ "page-upgrade-article-author-consensys": "Consensys",
+ "page-upgrade-article-author-delphi-digital": "Delphi Digital",
+ "page-upgrade-article-author-ethereum-foundation": "Fundação Ethereum",
+ "page-upgrade-article-author-vitalik-buterin": "Vitalik Buterin",
+ "page-upgrade-article-author-ethos-dev": "Ethos.dev",
"page-upgrade-article-title-two-point-oh": "Melhoria: a Beacon Chain",
"page-upgrade-article-title-beacon-chain-explainer": "A explicação sobre Beacon Chain Ethereum 2.0 que você deve ler primeiro",
"page-upgrade-article-title-sharding-consensus": "Consenso de fragmentação (sharding)",
- "page-upgrade-article-author-ethereum-foundation": "Fundação Ethereum",
"page-upgrade-article-title-sharding-is-great": "Por que o particionamento é ótimo: desmistificando as propriedades técnicas",
"page-upgrade-article-title-rollup-roadmap": "Um roadmap centrado em rollup",
+ "page-upgrade-article-title-hitchhikers-guide-to-ethereum": "O Guia do Mochileiro sobre o Ethereum",
+ "page-upgrade-article-title-ethmerge": "Ethmerge",
+ "page-upgrade-article-title-merge-is-coming": "A Fusão está chegando",
+ "page-upgrade-article-title-state-of-the-merge": "O Estado da Fusão: uma atualização sobre A Fusão do Ethereum para a prova de participação em 2022",
+ "page-upgrade-article-title-ropsten-merge-testnet": "Anunciando a Rede de testes da Fusão do Ropsten",
+ "page-upgrade-article-title-execution-layer-specs": "Especificações da camada de execução",
+ "page-upgrade-article-title-consensus-layer-specs": "Especificações da camada de consenso",
+ "page-upgrade-article-title-engine-api-specs": "Especificações da Engine API",
"page-upgrades-beacon-chain-btn": "Mais sobre a Beacon Chain",
- "page-upgrades-beacon-chain-date": "A Beacon Chain foi lançada em 01 de dezembro de 2020.",
- "page-upgrades-beacon-chain-desc": "Além de ter introduzido a participação (staking) ao Ethereum, a Beacon Chain estabeleceu as bases para futuras melhorias e, eventualmente, coordenará o novo sistema.",
+ "page-upgrades-beacon-chain-date": "A Beacon Chain foi lançada em 01 de dezembro de 2020",
+ "page-upgrades-beacon-chain-desc": "A Beacon Chain trouxe a participação para o Ethereum e lançou as bases para futuras atualizações. Ela coordena a nova prova de participação do Ethereum.",
"page-upgrades-beacon-chain-estimate": "A Beacon Chain está ativa",
"page-upgrades-beacon-chain-title": "A Beacon Chain",
"page-upgrades-bug-bounty": "Veja o programa de recompensas por caça aos bugs",
"page-upgrades-clients": "Confira os clientes de consenso (anteriormente conhecidos como clientes 'Eth2')",
"page-staking-deposit-contract-title": "Verifique o endereço do contrato de depósito",
- "page-upgrades-diagram-ethereum-mainnet": "Rede principal do Ethereum",
- "page-upgrades-diagram-h2": "Como as melhorias se encaixam",
- "page-upgrades-diagram-link-1": "Mais sobre a prova de trabalho",
- "page-upgrades-diagram-link-2": "Mais sobre cadeias de fragmentos",
- "page-upgrades-diagram-mainnet": "Rede principal",
- "page-upgrades-diagram-p": "A rede principal do Ethereum continuará a existir na sua forma atual por algum tempo. Isso significa que as melhorias da Beacon Chain e a introdução de fragmentos não afetarão a rede.",
- "page-upgrades-diagram-p-1": "A rede principal será eventualmente mesclada com o novo sistema introduzido pelas melhorias da Beacon Chain.",
- "page-upgrades-diagram-p-2": "A Beacon Chain se tornará o condutor do Ethereum, coordenando validadores e definindo o ritmo para a criação de blocos.",
- "page-upgrades-diagram-p-3": "No começo, existirá separadamente da rede principal e gerenciará os validadores – não terá nada a ver com contratos inteligentes, transações ou contas.",
- "page-upgrades-diagram-p-4": "Os fragmentos fornecerão muitos dados extras para ajudar a aumentar a quantidade de transações com que a rede principal pode lidar. Eles serão coordenados pela Beacon Chain.",
- "page-upgrades-diagram-p-5": "Mas todas as transações continuarão dependendo da rede principal, que continuará a existir tal como a conhecemos hoje - assegurada por provas de trabalho e mineradores.",
- "page-upgrades-diagram-p-6": "A rede principal será combinada com o sistema de prova de participação, coordenado pela Beacon Chain.",
- "page-upgrades-diagram-p-8": "Isto transformará a rede principal em um fragmento dentro do novo sistema. Os mineradores não serão mais necessários, pois todo o Ethereum será protegido pelos validadores.",
- "page-upgrades-diagram-p10": "O dimensionamento do Ethereum não é uma migração ou uma única coisa. Ele descreve um conjunto de melhorias que estão sendo trabalhadas para desbloquear o verdadeiro potencial do Ethereum. Assim é como tudo se encaixa.",
- "page-upgrades-diagram-scroll": "Role para ver – clique para obter mais informações.",
- "page-upgrades-diagram-shard": "Fragmento (1)",
- "page-upgrades-diagram-shard-1": "Fragmento (...)",
- "page-upgrades-diagram-shard-2": "Fragmento (2)",
- "page-upgrades-diagram-shard-3": "Fragmento (...)",
- "page-upgrades-diagram-validators": "Mais sobre validadores",
"page-upgrades-dive": "Aprofundando a visão",
- "page-upgrades-dive-desc": "Como vamos tornar o Ethereum mais dimensionável, seguro e sustentável sem interferir no ethos principal da descentralização dele?",
+ "page-upgrades-dive-desc": "Como podemos tornar o Ethereum mais escalável, seguro e sustentável? Mantendo a ética fundamental de descentralização do Ethereum.",
"page-upgrades-docking": "A fusão",
- "page-upgrades-merge-answer-1": "A fusão acontecerá quando a rede principal começar a usar a Beacon Chain para consenso e a prova de trabalho for desativada, em algum momento de 2022.",
+ "page-upgrades-merge-answer-1": "A Fusão ocorreu quando a Rede principal desativou a prova de trabalho e ativou a prova de participação em 15 de setembro de 2022.",
"page-upgrades-merge-btn": "Mais sobre a fusão",
- "page-upgrades-merge-desc": "A rede principal do Ethereum se integrará com a Beacon Chain em algum momento. Isso habilitará o staking (participação) de toda rede e marcará o fim da mineração com alto consumo de energia.",
- "page-upgrades-merge-estimate": "Estimativa: 2022",
+ "page-upgrades-merge-desc": "A Rede principal do Ethereum se fundiu com a prova de participação da Beacon Chain, marcando o fim da mineração de alto consumo energético.",
+ "page-upgrades-merge-estimate": "A Fusão chegou",
"page-upgrades-merge-mainnet": "O que é rede principal?",
"page-upgrades-merge-mainnet-eth2": "Integração da rede principal com a Cadeia Beacon",
"page-upgrades-eth-blog": "Blog ethereum.org",
"page-upgrades-explore-btn": "Veja as melhorias",
"page-upgrades-get-involved": "Participe das melhorias no Ethereum",
"page-upgrades-get-involved-2": "Participe",
- "page-upgrades-head-to-ethresearch": "Ir para ethresear.ch",
+ "page-upgrades-head-to": "Ir para",
"page-upgrades-help": "Quer fazer parte das melhorias no Ethereum?",
"page-upgrades-help-desc": "Há muitas oportunidades para contribuir com as melhorias do Ethereum, ajudar com testes e até ganhar recompensas.",
"page-upgrades-index-staking": "A participação está aqui",
"page-upgrades-index-staking-desc": "A chave para as melhorias do Ethereum é a introdução do staking. Se você quiser usar o seu ETH para ajudar a proteger a rede Ethereum, certifique-se de seguir estas etapas.",
"page-upgrades-index-staking-learn": "Saiba mais sobre participação",
- "page-upgrades-index-staking-learn-desc": "A Beacon Chain trará a oportunidade de participação (staking) para o Ethereum. Isto significa que se você tem ETH, pode fazer um bem público protegendo a rede e ganhando mais ETH no processo.",
+ "page-upgrades-index-staking-learn-desc": "A Beacon Chain trouxe participação para o Ethereum. Se você tiver ETH, pode contribuir para um bem coletivo protegendo a rede e recebendo mais ETH por isso.",
"page-upgrades-index-staking-step-1": "1. Configuração com o launchpad",
"page-upgrades-index-staking-step-1-btn": "Acesse a plataforma Staking Launchpad",
"page-upgrades-index-staking-step-1-desc": "Para fazer staking no Ethereum, você precisará usar a plataforma launchpad, que o guiará pelo processo.",
@@ -69,42 +67,39 @@
"page-upgrades-index-staking-step-2-btn": "Confirme o endereço do contrato de depósito",
"page-upgrades-index-staking-step-2-desc": "Antes de depositar seus ETH, certifique-se de que o endereço seja o correto. Você precisa ter acessado a plataforma Launchpad antes de fazer isso.",
"page-upgrades-index-staking-sustainability": "Mais sustentável",
- "page-upgrades-just-docking": "Mais sobre a fusão",
"page-upgrades-meta-desc": "Uma visão geral das melhorias no Ethereum e a visão que pretendem tornar realidade.",
"page-upgrades-meta-title": "Melhorias no Ethereum (anteriormente 'Eth2')",
- "page-upgrades-miners": "Mais sobre mineradores",
- "page-upgrades-more-on-upgrades": "Mais sobre as melhorias no Ethereum",
"page-upgrades-proof-of-stake": "prova de participação",
"page-upgrades-proof-of-work": "prova de trabalho",
"page-upgrades-proof-stake-link": "Mais sobre a prova de participação",
"page-upgrades-question-1-title": "Quando as melhorias serão lançadas?",
"page-upgrades-question-1-desc": "O Ethereum está sendo atualizado progressivamente; as melhorias são distintas e têm diferentes datas de lançamento.",
"page-upgrades-question-2-title": "A Beacon Chain é uma blockchain separada?",
- "page-upgrades-question-2-desc": "Não é preciso pensar nessas melhorias como uma blockchain separada.",
- "page-upgrades-question-3-answer-2": "A fusão e as melhorias da cadeia de fragmentos podem afetar os desenvolvedores de dapps. Mas como as especificações ainda não foram finalizadas, nenhuma ação é necessária no momento.",
- "page-upgrades-question-3-answer-3": "Converse com a equipe de pesquisa e desenvolvimento do Ethereum em ethresear.ch.",
+ "page-upgrades-question-2-desc": "Sim. A Beacon Chain foi o nome dado a uma cadeia de blocos de prova de participação paralela usada para atualizar a Rede principal do Ethereum. Agora existe apenas uma cadeia de blocos, formada pela fusão da cadeia de blocos original do Ethereum e da Beacon Chain juntas.",
+ "page-upgrades-question-3-answer-2a": "A Fusão teve um impacto mínimo sobre os desenvolvedores de dapp — eles ainda interagem com o Ethereum da mesma maneira.",
+ "page-upgrades-question-3-answer-2a-link": "A Fusão e os desenvolvedores de dapp",
+ "page-upgrades-question-3-answer-2b": "Os planos de fragmentação ainda estão sendo desenvolvidos, mas serão projetados tendo em mente os rollups de camada 2.",
+ "page-upgrades-layer-2-rollups": "Mais sobre rollups de camada 2",
"page-upgrades-question-3-answer-3-link": "Acesse ethresear.ch",
"page-upgrades-question-3-desc": "Você não precisa fazer nada neste momento para se preparar para as melhorias.",
"page-upgrades-question-3-title": "Como eu me preparo para as melhorias?",
- "page-upgrades-question-4-answer-1": "Sempre que você enviar uma transação ou usar um dapp hoje, você estará usando a camada de execução ou a rede principal. Este é o Ethereum que é protegido pelos mineradores.",
- "page-upgrades-question-4-answer-2": "A rede principal continuará funcionando como sempre, até a fusão.",
- "page-upgrades-question-4-answer-3": "Depois da fusão, os validadores protegerão toda a rede por meio da prova de participação.",
+ "page-upgrades-question-4-answer-1": "Hoje em dia, sempre que você envia uma transação ou usa um dapp, está usando a camada de execução, também conhecida como Rede principal.",
+ "page-upgrades-question-4-answer-3": "Depois da Fusão, validadores protegerão toda a rede por meio da prova de participação.",
"page-upgrades-question-4-answer-6": "Qualquer pessoa pode se tornar um validador através da participação (staking) dos respectivos ETH.",
"page-upgrades-question-4-answer-7": "Mais sobre participação",
- "page-upgrades-question-4-answer-8": "As melhorias da Beacon Chain e das cadeias de fragmentos não perturbarão a camada de excução (rede principal), pois estão sendo desenvolvidas separadamente.",
"page-upgrades-question-4-title": "O que é a camada de execução?",
- "page-upgrades-question-4-desc": "A rede principal do Ethereum na qual você efetua transações hoje já foi anteriormente referida como \"Eth1\". Este termo está sendo gradualmente substituído por \"camada de execução\".",
- "page-upgrades-question-5-answer-1": "Para se tornar um validador completo na rede, você precisará participar com 32 ETH. Se você não tem tanto ou não está disposto a participar com tanto, pode ingressar em pools de participação. Esses pools permitirão que você participe com menos e ganhe frações do total de prêmios.",
+ "page-upgrades-question-4-desc": "Antes da Fusão, a cadeia de blocos do Ethereum era algumas vezes chamada de \"Eth1\". Este termo foi eliminado e substituído por \"camada de execução\".",
+ "page-upgrades-question-5-answer-1": "Para se tornar um validador na rede, você precisará participar com 32 ETH. Se você não tem tanto, ou não está disposto a apostar essa quantia, você pode participar de participações compartilhadas. Esses compartilhamentos permitirão que você participe com menos e ganhe frações do total de recompensas.",
"page-upgrades-question-5-desc": "Você precisará usar a plataforma Staking Launchpad ou entrar em um pool de participação.",
"page-upgrades-question-5-title": "Como faço staking?",
- "page-upgrades-question-6-answer-1": "Por enquanto, não é necessário fazer nada. Mas recomendamos que você esteja por dentro do andamento das melhorias trazidas pela fusão e pela cadeia de fragmentos.",
"page-upgrades-question-6-answer-3": "Danny Ryan, da Fundação Ethereum, atualiza regularmente a comunidade:",
"page-upgrades-question-6-answer-4": "Ben Edgington da ConsenSys tem uma newsletter semanal sobre as melhorias do Ethereum:",
"page-upgrades-question-6-answer-5": "Você também pode participar da discussão sobre pesquisa e desenvolvimento no Ethereum em ethresear.ch.",
- "page-upgrades-question-6-desc": "Seu dapp não será afetado por nenhuma melhoria iminente. No entanto, futuras melhorias podem exigir algumas alterações.",
"page-upgrades-question-6-title": "O que eu preciso fazer com meu dapp?",
- "page-upgrades-question-7-cortex": "Cortex",
- "page-upgrades-question-7-cortex-lang": "(Implementação .NET)",
+ "page-upgrades-question-6-desc": "A Fusão foi projetada para ter um impacto mínimo nos desenvolvedores de dapp, embora houvesse algumas pequenas mudanças que valem a pena apontar.",
+ "page-upgrades-question-6-answer-1": "Os desenvolvedores de dapp familiarizados com o Ethereum antes da fusão devem estar cientes de algumas mudanças. Essas mudanças incluem estrutura e tempo de bloco, algumas mudanças de opcode, fontes de aleatoriedade na cadeia e o conceito de finalização de época.",
+ "page-upgrades-question-6-answer-1-link": "Como A Fusão afeta a camada de aplicativos do Ethereum",
+ "page-upgrades-question-6-answer-2": "As aplicações praticamente não foram afetadas.",
"page-upgrades-question-7-desc": "Muitas equipes diferentes de toda a comunidade estão trabalhando nas distantas melhorias do Ethereum.",
"page-upgrades-question-7-lighthouse": "Lighthouse",
"page-upgrades-question-7-lighthouse-lang": "(Implementação Rust)",
@@ -121,7 +116,7 @@
"page-upgrades-question-7-clients": "Saiba mais sobre clientes de Ethereum",
"page-upgrades-question-8-answer-1": "As melhorias do Ethereum ajudarão a dimensionar o Ethereum de forma descentralizada, mantendo a segurança e aumentando a sustentabilidade.",
"page-upgrades-question-8-answer-2": "Talvez o problema mais óbvio seja que o Ethereum precisa ser capaz de lidar com mais de 15-45 transações por segundo. Mas as melhorias também abordam alguns outros problemas atuais do Ethereum.",
- "page-upgrades-question-8-answer-3": "A rede está em uma demanda tão alta que torna o Ethereum caro de usar. Nós na rede estão tendo dificuldades com o tamanho do Ethereum e a quantidade de dados que computadores deles estão tendo que processar. E o algoritmo subjacente que mantém o Ethereum seguro e descentralizado consome muita energia e precisa ser melhorado.",
+ "page-upgrades-question-8-answer-3": "A rede está com uma demanda tão alta que está tornando o uso do Ethereum caro. Os nós da rede estão lutando com o tamanho da Ethereum e a quantidade de dados que seus computadores estão tendo que processar. O algoritmo original que sustentava a segurança e descentralização do Ethereum consome muita energia e precisa ser mais ecológico.",
"page-upgrades-question-8-answer-4": "Muito do que está mudando sempre esteve nos planos do Ethereum desde 2015. Mas as condições atuais estão tornando essas melhorias cada vez mais necessárias.",
"page-upgrades-question-8-answer-6": "Conheça a visão do Ethereum",
"page-upgrades-question-8-desc": "O Ethereum que utilizamos hoje precisa oferecer uma melhor experiência para usuários finais e participantes da rede.",
@@ -141,10 +136,14 @@
"page-upgrades-question-10-answer-1-link": "Veja as melhorias",
"page-upgrades-question-10-answer-2": "Mas se você seguiu as discussões, esta é a maneira como as melhorias se encaixam nos roadmaps técnicos.",
"page-upgrades-question-10-answer-3": "A Fase 0 descreve o que é feito para manter a Beacon Chain funcionando.",
- "page-upgrades-question-10-answer-5": "A primeira fase incidiu originalmente na implementação das cadeias de fragmentos, mas a priorização foi transferida para a \"fusão\", a próxima melhoria planejada.",
- "page-upgrades-question-10-answer-6": "Inicialmente, a Fase 1.5 deveria suceder às implementações da cadeia de fragmentos, quando a rede principal fosse adicionada como o último fragmento da Beacon Chain. Mas para acelerar a transição da prova de trabalho, a rede principal representará o primeiro fragmento que se conectará à Beacon Chain. Isso é conhecido como \"fusão\" e será um passo significativo para um Ethereum mais verde.",
- "page-upgrades-question-10-answer-7": "Embora os planos em torno da Fase 3 tenham sido intensos em termos de pesquisa e discussão, com a fusão planejada antes das cadeias de fragmentos, isto permitirá a contínua reavaliação conforme as necessidades de desenvolvimento do Ethereum avancem. Devido a um roadmap de desenvolvimento centrado em rollups, a imediata necessidade das cadeias de fragmentos é discutível.",
+ "page-upgrades-question-10-answer-5": "A fase 1 originalmente se concentrou na implementação das cadeias de fragmentos, mas a priorização mudou para A Fusão, lançada em 15 de setembro de 2022.",
+ "page-upgrades-question-10-answer-6": "A fase 1.5 foi originalmente planejada para seguir as implementações de fragmentos quando a Rede principal fosse adicionada como o último fragmento à Beacon Chain. No entanto, à medida que a tecnologia de rollup progrediu, a comunidade do Ethereum acelerou a transição, afastando-se da prova de trabalho.",
+ "page-upgrades-question-10-answer-7": "Os planos em torno da Fase 2 têm sido um ponto de intensa pesquisa e discussão. Com A Fusão por trás de nós e os avanços nas soluções de camada 2, os objetivos mudaram para fornecer uma forma mais simplificada de fragmentação de dados para maximizar a eficiência do rollup. A camada 2 atual permite a capacidade de dimensionar a execução da transação, e a fragmentação permitirá o armazenamento de provas para esses dados na camada 1 de maneira barata e escalável.",
"page-upgrades-question-10-answer-8": "Mais sobre o roadmap voltado a rollups",
+ "page-upgrades-question-11-title": "Posso comprar Eth2?",
+ "page-upgrades-question-11-desc": "Não. Não há nenhum token Eth2 e seu ETH não mudou após A Fusão.",
+ "page-upgrades-question-11-answer-1": "Um dos principais motivos por trás da alteração do termo Eth2 era o equívoco comum de que os detentores de ETH eram obrigados a migrar seu ETH para \"ETH 2.0\" após A Fusão ou qualquer outra atualização. Isso não é verdade e nunca foi.",
+ "page-upgrades-question-11-answer-2": " Essa confusão geralmente é explorada por golpistas.",
"page-upgrades-question-title": "Perguntas frequentes",
"page-upgrades-question3-answer-1": "Os detentores de ETH certamente não necessitarão fazer nada. Seus ETH não precisarão de mudanças ou atualizações. Com certeza existirão fraudadores dizendo o contrário, então tenha cuidado.",
"page-upgrades-scalable": "Mais dimensionável",
@@ -152,38 +151,50 @@
"page-upgrades-secure": "Mais seguro",
"page-upgrades-secure-desc": "O Ethereum precisa ser mais seguro. À medida que a adoção do Ethereum aumenta, o protocolo precisa ficar mais seguro contra todas as formas de ataque.",
"page-upgrades-shard-button": "Mais sobre cadeias de fragmentos",
- "page-upgrades-shard-date": "As cadeias de fragmentos devem seguir a fusão em algum momento de 2023.",
- "page-upgrades-shard-desc": "As cadeias de fragmentos expandirão a capacidade do Ethereum para processar transações e armazenar dados. Os fragmentos ganharão mais recursos ao longo do tempo e serão implementados em várias fases.",
- "page-upgrades-shard-estimate": "Estimativa: 2023",
- "page-upgrades-shard-lower": "Mais sobre cadeias de fragmentos",
- "page-upgrades-shard-title": "Cadeias de fragmentos",
+ "page-upgrades-shard-date": "A fragmentação acompanhará A Fusão em várias fases, entre 2023 e 2024.",
+ "page-upgrades-shard-desc": "A fragmentação expandirá a capacidade do Ethereum de armazenar dados e trabalhará harmoniosamente com a camada 2 para dimensionar a taxa de transferência e reduzir as taxas de rede. A fragmentação será lançada em várias etapas.",
+ "page-upgrades-shard-estimate": "Estimativa: 2023-2024",
+ "page-upgrades-shard-lower": "Mais sobre fragmentação",
+ "page-upgrades-shard-title": "Fragmentação",
"page-upgrades-stay-up-to-date": "Mantenha-se atualizado",
"page-upgrades-stay-up-to-date-desc": "Fique por dentro das últimas notícias dos pesquisadores e desenvolvedores que trabalham nas atualizações do Ethereum.",
- "page-upgrades-sustainable-desc": "O Ethereum precisa ser melhor para o ambiente. A tecnologia atual requer muita capacidade de computação e energia.",
+ "page-upgrades-sustainable-desc": "O consumo de energia do Ethereum era intenso até recentemente. A transição para a prova de participação trouxe uma redução de energia para a rede de mais de 99,9%.",
"page-upgrades-take-part": "Participe da pesquisa",
"page-upgrades-take-part-desc": "Os pesquisadores e entusiastas do Ethereum se encontram aqui para discutir os esforços de pesquisa, incluindo tudo sobre as melhorias do Ethereum.",
"page-upgrades-the-upgrades": "As melhorias do Ethereum",
- "page-upgrades-the-upgrades-desc": "O Ethereum consiste em um conjunto de atualizações que melhoram o dimensionamento, a segurança e a sustentabilidade da rede. Embora cada uma esteja sendo trabalhada em paralelo, há determinadas dependências que determinam a data da implantação delas.",
+ "page-upgrades-the-upgrades-desc": "As atualizações do Ethereum visam melhorar a escalabilidade, segurança e sustentabilidade da rede. O Ethereum passou recentemente por algumas grandes melhorias na segurança e sustentabilidade, e outras estão por vir, especialmente em relação à escalabilidade.",
"page-upgrades-unofficial-roadmap": "Não se trata de um roteiro oficial. É assim que vemos o que está acontecendo com base nas informações disponíveis. Mas como isso é tecnologia, as coisas podem mudar rapidamente. Pedimos, então, que não veja isso como um processo imutável.",
"page-upgrades-upgrade-desc": "O Ethereum que conhecemos e amamos, agora mais dimensionável, seguro e sustentável...",
"page-upgrades-upgrades": "As melhorias do Ethereum",
"page-upgrades-upgrades-aria-label": "Menu de melhorias do Ethereum",
"page-upgrades-upgrades-beacon-chain": "A Beacon Chain",
- "page-upgrades-upgrades-docking": "A fusão",
"page-upgrades-upgrades-guide": "Guia para as melhorias no Ethereum",
+ "page-upgrades-upgrades-docking": "A fusão",
+ "page-upgrades-energy-consumption": "Mais sobre o consumo energético do Ethereum",
+ "page-upgrades-upgrades-shard-chains": "As cadeias de fragmentos",
"page-upgrades-upgrading": "Melhorias do Ethereum para níveis mais avançados",
"page-upgrades-vision": "A visão",
"page-upgrades-vision-btn": "Mais sobre a visão do Ethereum",
"page-upgrades-vision-desc": "Para integrar o Ethereum e atender a toda a humanidade, precisamos torná-lo mais dimensionável, seguro e sustentável.",
"page-upgrades-vision-upper": "Visão do Ethereum",
"page-upgrades-what-happened-to-eth2-title": "O que aconteceu com \"Eth2?\"",
- "page-upgrades-what-happened-to-eth2-1": "Como parte da preparação à fusão, o termo Eth2 está sendo progressivamente eliminado.",
+ "page-upgrades-what-happened-to-eth2-1": "O termo \"Eth2\" era comumente usado antes da Fusão, mas está sendo descontinuado e substituído por uma terminologia mais precisa.",
"page-upgrades-what-happened-to-eth2-1-more": "Mais sobre a fusão.",
- "page-upgrades-what-happened-to-eth2-2": "Depois de fazer a fusão de 'Eth1' e da 'Eth2' em uma única cadeia, não haverá mais duas redes Ethereum distintas; haverá apenas Ethereum.",
+ "page-upgrades-what-happened-to-eth2-2": "Desde a fusão de \"Eth1\" e \"Eth2\", não há mais duas cadeias de blocos Ethereum distintas; existe apenas um Ethereum.",
"page-upgrades-what-happened-to-eth2-3": "Para diminuir a confusão, a comunidade atualizou estes termos:",
- "page-upgrades-what-happened-to-eth2-3-1": "O \"Eth1\" é agora a \"camada de execução\", que lida com transações e dados.",
+ "page-upgrades-what-happened-to-eth2-3-1": "O \"Eth1\" é agora a \"camada de execução\", que lida com transações e execução.",
"page-upgrades-what-happened-to-eth2-3-2": "O \"Eth2\" é agora a \"camada de consenso\", que lida com o consenso da prova de participação.",
"page-upgrades-what-happened-to-eth2-4": "Estas atualizações de terminologia apenas alteram as convenções de nomenclatura; isso não altera os objetivos ou o roadmap do Ethereum.",
+ "page-upgrades-what-happened-to-eth2-5": "Saiba mais sobre a renomeação 'Eth2'",
+ "page-upgrades-why-cant-we-just-use-eth2-title": "Por que não podemos simplesmente usar Eth2?",
+ "page-upgrades-why-cant-we-just-use-eth2-mental-models-title": "Modelos mentais",
+ "page-upgrades-why-cant-we-just-use-eth2-mental-models-description": "Um dos principais problemas com a marca Eth2 é que ela cria um modelo mental errado para novos usuários do Ethereum. Acreditam intuitivamente que Eth1 vem primeiro e Eth2 vem depois. Ou que a Eth1 deixa de existir uma vez que a Eth2 existe, nenhum deles é verdadeiro. Removendo a terminologia Eth2, evitamos que todos os futuros usuários naveguem por este modelo mental confuso.",
+ "page-upgrades-why-cant-we-just-use-eth2-inclusivity-title": "Inclusividade",
+ "page-upgrades-why-cant-we-just-use-eth2-inclusivity-description": "À medida que o roteiro para o Ethereum evoluiu, o Ethereum 2.0 tornou-se uma representação imprecisa do roteiro do Ethereum. Sendo cuidadosos e precisos em nossa escolha de palavras permite que o conteúdo do Ethereum seja entendido pelo público mais amplo possível.",
+ "page-upgrades-why-cant-we-just-use-eth2-scam-prevention-title": "Prevenção contra golpes",
+ "page-upgrades-why-cant-we-just-use-eth2-scam-prevention-description": "Infelizmente, atores maliciosos tentaram usar o temo impróprio Eth2 para enganar usuários, dizendo a eles para trocar seus ETH por tokens \"ETH2\" ou que eles deveriam de alguma forma migrar seus ETH antes da atualização do Eth2. Esperamos que essa terminologia atualizada traga clareza para eliminar este vetor de fraude e ajudar a tornar o ecossistema mais seguro.",
+ "page-upgrades-why-cant-we-just-use-eth2-staking-clarity-title": "Transparência na participação",
+ "page-upgrades-why-cant-we-just-use-eth2-staking-clarity-description": "Alguns operadores de participação também representaram ETH em participação na Beacon Chain com o rótulo de \"ETH2\". Isso gera uma potencial confusão, uma vez que os utilizadores desses serviços não recebem realmente um token \"ETH2\". Não existe um token \"ETH2\"; ele simplesmente representa a sua parte na participação de um provedor específico.",
"page-upgrades-what-to-do": "O que você precisa fazer?",
"page-upgrades-what-to-do-desc": "Se você é um usuário de dapps ou um detentor de ETH, não precisa fazer nada. Se você é um desenvolvedor ou quer começar a participar, existem formas de fazer isso hoje mesmo.",
"page-upgrades-whats-next": "Quais são as melhorias do Ethereum?",
diff --git a/src/intl/pt-br/page-upgrades-vision.json b/src/intl/pt-br/page-upgrades-vision.json
index efb09af8d72..0e34f5dc84a 100644
--- a/src/intl/pt-br/page-upgrades-vision.json
+++ b/src/intl/pt-br/page-upgrades-vision.json
@@ -1,17 +1,11 @@
{
"page-upgrades-vision-2014": "Veja aqui uma publicação do blog de 2014, detalhando a prova de participação (proof of stake)",
"page-upgrades-vision-2021": "Veja uma publicação de blog de 2021 sobre a evolução do roadmap do Ethereum",
+ "page-upgrades-vision-2022": "Veja uma postagem no blog de 2022: Guia dos Mochileiros para o Ethereum",
"page-upgrades-vision-2021-updates": "Ver uma publicação de 2021 do blog sobre as melhorias no roadmap do Ethereum",
- "page-upgrades-vision-beacon-chain": "A Beacon Chain",
- "page-upgrades-vision-beacon-chain-btn": "Mais sobre a Beacon Chain",
- "page-upgrades-vision-beacon-chain-date": "A Beacon Chain está ativa",
- "page-upgrades-vision-beacon-chain-desc": "A Beacon Chain trouxe participação (staking) para o Ethereum, estabeleceu as bases para futuras melhorias e, eventualmente, coordenará o novo sistema.",
- "page-upgrades-vision-beacon-chain-upper": "Beacon Chain",
"page-upgrades-vision-desc-1": "Ethereum precisa reduzir o congestionamento da rede e aumentar a velocidade para melhor atender a uma base de usuários global.",
"page-upgrades-vision-desc-2": "Executar um nó fica cada vez mais difícil conforme a rede cresce. E ficará ainda mais com o esforço para dimensionar a rede.",
"page-upgrades-vision-desc-3": "Ethereum usa muita eletricidade. A tecnologia que mantém a rede segura precisa ser mais sustentável.",
- "page-upgrades-vision-merge-date": "Estimativa: 2022",
- "page-upgrades-vision-merge-desc": "A rede principal Ethereum se integrará com a Beacon Chain em algum momento. Isso habilitará a participação de toda rede e marcará o fim da mineração com alto consumo de energia.",
"page-upgrades-vision-ethereum-node": "Mais sobre nós",
"page-upgrades-vision-explore-upgrades": "Veja as melhorias",
"page-upgrades-vision-future": "Um futuro digital global",
@@ -21,34 +15,31 @@
"page-upgrades-vision-problems": "Problemas de hoje",
"page-upgrades-vision-scalability": "Dimensionamento",
"page-upgrades-vision-scalability-desc": "O Ethereum precisa ser capaz de lidar com mais transações por segundo sem aumentar o tamanho dos nós na rede. Os nós são participantes vitais da rede que armazenam e executam a blockchain. Aumentar o tamanho do nó não é prático porque apenas aqueles com computadores poderosos e caros poderiam fazê-lo. Para dimensionar, o Ethereum precisa de mais transações por segundo, juntamente com mais nós. Mais nós significa mais segurança.",
- "page-upgrades-vision-scalability-desc-3": "A melhoria nas cadeias de fragmentos distribuirá a carga da rede a 64 novas cadeias. Isso aliviará o Ethereum ao reduzir o congestionamento e melhorar a velocidade, para superar o limite atual de 15 a 45 transações por segundo.",
- "page-upgrades-vision-scalability-desc-4": "E mesmo que haja mais cadeias, isso exigirá, na verdade, menos trabalho por parte dos validadores — os mantenedores da rede. Os validadores só precisarão \"executar\" seus fragmentos e não toda a cadeia Ethereum. Isso torna os nós mais leves e permite que Ethereum seja dimensionado e permaneça descentralizado.",
+ "page-upgrades-vision-scalability-desc-3": "As melhorias na fragmentação espalharão os requisitos de armazenamento de dados por toda a rede, não exigindo mais que cada nó mantenha 100% dos dados. Embora isso não aborde diretamente o dimensionamento da execução de transações, esse problema está sendo tratado diretamente pelas soluções de rollup da camada 2.",
+ "page-upgrades-vision-scalability-desc-4": "Os rollups precisam de armazenamento barato na camada 1 para serem mais eficazes. A fragmentação dará espaço à Ethereum para respirar, maximizando a eficiência nos rollups, permitindo melhorias exponenciais além do limite atual de 15 a 45 transações por segundo.",
"page-upgrades-vision-security": "Segurança",
- "page-upgrades-vision-security-desc": "As melhorias planejadas aumentam a segurança do Ethereum contra ataques coordenados, como um ataque de 51%. Este é um tipo de ataque no qual se alguém controla a maioria da rede, pode forçar mudanças fraudulentas.",
- "page-upgrades-vision-security-desc-3": "A transição para a prova de participação significa que o protocolo Ethereum dificulta ainda mais os ataques, pois na prova de participação os validadores que protegem a rede devem atribuir quantidades significativas de seus ETHs ao protocolo. Se eles tentarem atacar a rede, o protocolo poderá destruir automaticamente seus ETHs.",
- "page-upgrades-vision-security-desc-5": "Isso não é possível no sistema de prova de trabalho, onde o melhor que o protocolo pode fazer é forçar as entidades que protegem a rede (os mineradores) a perder as recompensas de mineração que, de outro modo, teriam ganhado. Para alcançar o efeito equivalente no sistema de prova de trabalho, o protocolo teria de ser capaz de destruir todo o equipamento de um minerador que tentasse cometer um engano.",
- "page-upgrades-vision-security-desc-5-link": "Mais sobre a prova de trabalho",
- "page-upgrades-vision-security-desc-8": "O modelo de segurança do Ethereum também precisa mudar, devido à introdução das cadeias de fragmentos. A Beacon Chain selecionará aleatoriamente validadores à diferentes fragmentos. Isto fará praticamente impossível que validadores conspirem para atacar um fragmento específico. Mas a fragmentação não é tão segura em uma blockchain de prova de trabalho, pois os mineradores não podem ser controlados pelo protocolo dessa maneira.",
- "page-upgrades-vision-security-desc-10": "A participação também significa que você não precisa investir em hardware avançado para \"executar\"' um nó do Ethereum. Isso deve incentivar mais pessoas a se tornarem validadores, aumentando a descentralização da rede e diminuindo a superfície de ataque.",
+ "page-upgrades-vision-security-desc": "As atualizações planejadas melhoram a segurança do Ethereum contra ataques coordenados.",
+ "page-upgrades-vision-security-desc-3": "Na prova de participação, a segurança adicional vem de maiores fatores de dissuasão criptoeconômicos contra ataques. Isso ocorre porque, na prova de participação, os validadores que protegem a rede devem apostar quantidades significativas de ETH no protocolo. Se eles tentarem atacar a rede, o protocolo pode destruir automaticamente sua ETH.",
+ "page-upgrades-vision-security-desc-5": "No entanto, também é importante que as melhorias que protegem os validadores contra ataques de negação de serviço melhorem seu anonimato e que a criação de blocos separados e a propagação de blocos sejam implementadas em breve. Essas melhorias protegem os validadores individuais e a rede na totalidade contra ataques de vivacidade e censura.",
+ "page-upgrades-vision-security-desc-5-link": "Mais sobre prova de participação",
+ "page-upgrades-vision-security-desc-8": "O modelo de segurança do Ethereum também permite fragmentação. Os validadores serão responsáveis por garantir que todos os dados foram disponibilizados, mas os nós individuais não serão mais necessários para manter todo o histórico da cadeia. Também está prevista uma nova função, conhecida como construtor de blocos dedicado, que trabalhará ao lado de proponentes de blocos (validadores) para uma produção de blocos eficiente e segura",
+ "page-upgrades-vision-security-desc-10": "Participação também significa que você não precisa investir em hardware de elite para participar diretamente do consenso. Isso deve incentivar mais pessoas a se tornarem validadores, aumentando a descentralização da rede e diminuindo a área de superfície de ataque.",
"page-upgrades-vision-security-staking": "Participe com ETH",
"page-upgrades-vision-security-validator": "Você pode se tornar um validador depositando seus ETH.",
- "page-upgrades-vision-shard-chains": "cadeia de fragmentos",
- "page-upgrades-vision-shard-date": "Estimativa: 2023",
- "page-upgrades-vision-shard-desc-4": "As cadeias de fragmentos distribuirão a carga da rede a 64 novas blockchains. Os fragmentos têm o potencial de melhorar consideravelmente a velocidade das transações — até 100.000 por segundo.",
- "page-upgrades-vision-shard-upgrade": "Mais sobre cadeias de fragmentos",
+ "page-upgrades-vision-shard-upgrade": "Mais sobre fragmentação",
"page-upgrades-vision-staking-lower": "Mais sobre participação",
"page-upgrades-vision-subtitle": "Faça o Ethereum crescer até que seja poderoso o suficiente para ajudar toda a humanidade.",
"page-upgrades-vision-sustainability": "Sustentabilidade",
- "page-upgrades-vision-sustainability-desc-1": "Não é nenhum segredo que Ethereum e outros blockchains como Bitcoin consomem muita energia por causa da mineração.",
- "page-upgrades-vision-sustainability-desc-2": "Mas Ethereum está a caminho de ser protegido por ETH. Não pelo poder da computação, e sim pela participação.",
- "page-upgrades-vision-sustainability-desc-3": "Embora o staking já tenha sido introduzido pela Beacon Chain, o Ethereum que utilizamos hoje será executado em paralelo por um período de tempo. Um sistema protegido por ETH, o outro pelo poder de computação, até que haja a fusão.",
- "page-upgrades-vision-sustainability-desc-8": "Com a Beacon Chain em funcionamento, deu-se início ao processo de fusão da rede principal com o novo sistema. Com isso, a rede principal passará a ser um fragmento, para que seja protegida pelo ETH e consuma muito menos energia.",
- "page-upgrades-vision-sustainability-subtitle": "O Ethereum precisa ser mais ecológico.",
+ "page-upgrades-vision-sustainability-desc-1": "O Ethereum agora é uma cadeia de blocos ecológica. O consumo de energia foi reduzido em ~99,95% quando a prova de trabalho foi substituída pela prova de participação.",
+ "page-upgrades-vision-sustainability-desc-2": "O Ethereum agora é protegido por participação e não por potência computacional.",
+ "page-upgrades-vision-sustainability-desc-3": "Esse aumento da sustentabilidade também traz benefícios de segurança — o ether colocado torna muito mais caro atacar a cadeia do que a prova de trabalho, mas menos caro protegê-lo, pois é preciso emitir menos ETH novos para pagar os validadores do que os mineradores.",
+ "page-upgrades-vision-sustainability-desc-8": "A mudança para a prova de participação tornou o Ethereum mais ecológico e seguro. É uma plataforma com emissão de carbono reduzida para criar aplicativos e organizações.",
+ "page-upgrades-vision-sustainability-subtitle": "Ethereum é uma blockchain ecológica com uma forte segurança criptoeconômica.",
"page-upgrades-vision-title": "Visão do Ethereum",
"page-upgrades-vision-title-1": "Rede congestionada",
"page-upgrades-vision-title-2": "Espaço em disco",
"page-upgrades-vision-title-3": "Muita energia",
- "page-upgrades-vision-trilemma-cardtext-1": "As melhorias tornarão o Ethereum dimensionável, seguro e descentralizado. A fragmentação tornará o Ethereum mais dimensionável ao aumentar as transações por segundo e, ao mesmo tempo, diminuir a energia necessária para executar um nó e validar a cadeia. A Beacon Chain tornará o Ethereum seguro ao coordenar os validadores entre fragmentos. E a participação reduzirá a barreira de entrada, criando uma rede maior e mais descentralizada.",
+ "page-upgrades-vision-trilemma-cardtext-1": "As melhorias no Ethereum tornarão o Ethereum escalável, seguro e descentralizado. A fragmentação tornará o Ethereum mais escalável aumentando as transações por segundo, diminuindo a potência necessária para executar um nó e validar a cadeia. A Beacon Chain tornará o Ethereum seguro com a coordenação de validadores por meio de um conjunto fragmentado de dados. Além disso, a fragmentação diminuirá a barreira à participação e limitará as economias de escala, criando uma rede maior e mais descentralizada.",
"page-upgrades-vision-trilemma-cardtext-2": "Redes de blockchain seguras e descentralizadas exigem que cada nó verifique todas as transações processadas pela cadeia. Essa quantidade de trabalho limita o número de transações que podem acontecer a qualquer momento. Descentralizada e segura: está é a cadeia Ethereum hoje.",
"page-upgrades-vision-trilemma-cardtext-3": "As redes descentralizadas funcionam enviando informações sobre transações entre nós – toda a rede precisa saber sobre qualquer mudança de estado. O dimensionamento das transações por segundo em uma rede descentralizada apresenta riscos de segurança porque quanto mais transações, maior o atraso e maior a probabilidade de ataque enquanto as informações estão em trânsito.",
"page-upgrades-vision-trilemma-cardtext-4": "Aumentar o tamanho e o poder dos nós do Ethereum poderia aumentar as transações por segundo de uma forma segura, mas os requisitos de hardware restringiriam quem poderia fazer isso — e isso ameaça a descentralização. Espera-se que a fragmentação e a prova de participação permitam que o Ethereum possa ser dimensionado, aumentando a quantidade de nós e não o tamanho deles.",
diff --git a/src/intl/pt-br/page-upgrades.json b/src/intl/pt-br/page-upgrades.json
index ab004ab643d..01c044ff9fb 100644
--- a/src/intl/pt-br/page-upgrades.json
+++ b/src/intl/pt-br/page-upgrades.json
@@ -1,5 +1,13 @@
{
+ "page-upgrades-merge-infographic-el": "Estado do Ethereum: transações, aplicativos, contratos e saldos",
+ "page-upgrades-merge-infographic-alt-text": "Infográfico ilustrando como a Beacon Chain se funde na camada de execução do Ethereum durante a transição da prova de trabalho para a prova de participação.",
"page-upgrades-beacon-date": "Enviado!",
"page-upgrades-merge-date": "Setembro de 2022",
- "page-upgrades-shards-date": "Cerca de 2023"
+ "page-upgrades-shards-date": "Cerca de 2023",
+ "page-upgrades-merge-banner-intro": "A Fusão está chegando e vem com alterações no Ethereum.",
+ "page-upgrades-merge-banner-content-outdated": "Alguns conteúdos nesta página referentes a essas alterações estão desatualizados. As atualizações estão chegando em breve.",
+ "page-upgrades-merge-banner-developers-landing": "Alguns documentos têm um banner indicando que estão desatualizados. Atualizações em breve.",
+ "page-upgrades-post-merge-banner-tutorial-ood": "Este tutorial está desatualizado após a fusão e pode não funcionar. Por favor, faça um PR se você quiser contribuir.",
+ "page-upgrades-post-merge-banner-tutorial-light-node-ood": "Este tutorial está desatualizado após a fusão. No momento, os nós simplificados atualmente não funcionam na prova de participação, mas devem ser restituídos em breve.",
+ "page-upgrades-post-merge-banner-governance-ood": "Alguns conteúdos nesta página estão desatualizados após a fusão. Por favor, faça um PR se você deseja contribuir."
}
diff --git a/src/intl/zh-tw/common.json b/src/intl/zh-tw/common.json
index 3c2221daee0..fb2f9990994 100644
--- a/src/intl/zh-tw/common.json
+++ b/src/intl/zh-tw/common.json
@@ -139,6 +139,7 @@
"language-ja": "日文",
"language-ka": "喬治亞語",
"language-kk": "哈薩克文",
+ "language-km": "高棉文",
"language-ko": "韓文",
"language-lt": "立陶宛語",
"language-ml": "馬拉雅拉姆語",
@@ -162,6 +163,7 @@
"language-support": "語言支援",
"language-tr": "土耳其文",
"language-uk": "烏克蘭語",
+ "language-uz": "烏茲別克文",
"language-vi": "越南文",
"language-zh": "簡體中文",
"language-zh-tw": "繁體中文",
diff --git a/src/intl/zh-tw/page-dapps.json b/src/intl/zh-tw/page-dapps.json
index 053015bedcd..3ac5a8f094b 100644
--- a/src/intl/zh-tw/page-dapps.json
+++ b/src/intl/zh-tw/page-dapps.json
@@ -77,6 +77,7 @@
"page-dapps-dapp-description-zapper": "使用單一介面追蹤您的投資組合及去中心化金融產品。",
"page-dapps-dapp-description-zerion": "管理您的投資組合,並簡單評估各個市場上的去中心化金融資產。",
"page-dapps-dapp-description-rotki": "尊重您隱私的開源投資組合追蹤、分析、管理,及稅金報告工具。",
+ "page-dapps-dapp-description-krystal": "一個能夠存取所有您最喜愛的去中心化金融服務的一站式平台。",
"page-dapps-dapp-description-rarible": "創作、販賣及購買代幣化收藏品。",
"page-dapps-dapp-description-sablier": "即時流通資金。",
"page-dapps-dapp-description-superrare": "直接從藝術家或二級市場購買數位藝術品。",
@@ -93,6 +94,7 @@
"page-dapps-zapper-logo-alt": "Zapper 標誌",
"page-dapps-zerion-logo-alt": "Zerion 標誌",
"page-dapps-rotki-logo-alt": "Rotki 標誌",
+ "page-dapps-krystal-logo-alt": "Krystal 標誌",
"page-dapps-desc": "找個以太坊應用程式試一試。",
"page-dapps-doge-img-alt": "插圖:狗狗使用電腦",
"page-dapps-editors-choice-dark-forest": "對抗其他玩家、征服星球,並嘗試以太坊最新擴張/隱私技術。也許您的對手已經對以太坊很熟悉。",
diff --git a/src/intl/zh-tw/page-what-is-ethereum.json b/src/intl/zh-tw/page-what-is-ethereum.json
index 1a438394c76..6aeaaff06b2 100644
--- a/src/intl/zh-tw/page-what-is-ethereum.json
+++ b/src/intl/zh-tw/page-what-is-ethereum.json
@@ -61,7 +61,7 @@
"page-what-is-ethereum-slide-4-desc-1": "最近興起了邊玩邊賺遊戲(玩家實際上會因為玩遊戲而獲得獎勵),並且這種遊戲正在改變遊戲產業。傳統上,通常禁止將游戲內資產交易或轉移給其他玩家以換取真錢。這迫使玩家使用通常存在安全風險的黑市網站。區塊鏈遊戲樂意採納遊戲內經濟,並以可信賴的方式促進此類行為。",
"page-what-is-ethereum-slide-4-desc-2": "此外,玩家可以透過將游戲中的代幣換成真錢來獲得激勵,從而讓所付出的遊戲時間能真正有所回報。",
"page-what-is-ethereum-meet-ether-title": "認識以太幣,以太坊的加密貨幣",
- "page-what-is-ethereum-meet-ether-desc-1": "以太坊有一種名為以太幣 (ETH) 的原生加密貨幣。它是純數位的,您可以立即將它發送給世界上任何地方的任何人。以太幣的供應不受任何政府或公司控制 - 它是去中心化且完全透明的。新幣(通常也稱為代幣)僅由維護網路的礦工和質押者鑄造。",
+ "page-what-is-ethereum-meet-ether-desc-1": "以太坊具一種名為以太幣 (ETH) 的原生加密貨幣。它是純數位的,且您可以即時將它發送給世界上任何地方的任何人。以太幣的供應不受任何政府或公司控制 - 它去中心化且完全透明。新幣(通常也稱為代幣)則僅分發給保障網路安全的質押者。",
"page-what-is-ethereum-meet-ether-desc-2": "以太坊網路上的每一個動作都需要一定的計算能力。該費用以以太幣的形式支付。這意味著您至少需要少量的以太幣才能使用網路。",
"page-what-is-ethereum-what-is-ether": "甚麼是以太幣?",
"page-what-is-ethereum-get-eth": "取得以太幣",
@@ -87,6 +87,7 @@
"page-what-is-ethereum-energy-desc-1": "以太坊目前正在使用消耗大量能源的工作量證明機制。在接下來的幾個月(2022 年第三季度/第四季度),以太坊將進行迄今為止最大的更新,並切換到權益證明機制,這將大幅減少對環境的影響。",
"page-what-is-ethereum-energy-desc-2": "此更新將使保護以太坊所需的能源減少約 99.95%,從而建立一個更安全的網路,同時降低碳成本。這將使以太坊成為真正的低碳區塊鏈,同時提高安全性和可擴展性。",
"page-what-is-ethereum-more-on-energy-consumption": "更多關於能源消耗的資訊",
+ "page-what-is-ethereum-energy-consumption-chart-legend": "台灣年度能源消耗/年",
"page-what-is-ethereum-the-merge-update": "合併更新",
"page-what-is-ethereum-additional-reading": "延伸閱讀",
"page-what-is-ethereum-week-in-ethereum": "以太坊每週新聞",
diff --git a/src/intl/zh/page-community.json b/src/intl/zh/page-community.json
index 23993ef2c19..e736fccd956 100644
--- a/src/intl/zh/page-community.json
+++ b/src/intl/zh/page-community.json
@@ -16,7 +16,7 @@
"page-community-explore-dapps": "探索去中心化应用程序",
"page-community-explore-dapps-alt": "探索去中心化应用程序",
"page-community-explore-dapps-description": "去中心化应用程序是在以太坊上构建的应用程序。这些应用程序正在打破传统,构建新的商业模式。",
- "page-community-explore-dapps-title": "体验一些去中心化应用",
+ "page-community-explore-dapps-title": "尝试使用一些去中心化应用",
"page-community-explore-grants": "深入了解资助",
"page-community-find-a-job": "查找工作",
"page-community-get-eth": "获取以太币",
@@ -25,7 +25,7 @@
"page-community-get-eth-title": "获取一些以太币",
"page-community-get-involved-title": "如何加入?",
"page-community-get-involved-description": "有很多方法可以参与快速发展的以太坊社区:您可以加入一个热门在线社区、参加一个活动、加入一个聚会小组、为一个项目做贡献,或者参加一个关于以太坊的在线论坛。",
- "page-community-get-involved-image-alt": "参与",
+ "page-community-get-involved-image-alt": "参与其中",
"page-community-hero-alt": "以太坊社区中心",
"page-community-hero-header": "欢迎来到以太坊社区中心",
"page-community-hero-subtitle": "以太坊社区是成百上千的以太坊开发者、技术专家、设计师、用户、加密货币忠实持有者和爱好者的共同家园。",
diff --git a/src/intl/zh/page-dapps.json b/src/intl/zh/page-dapps.json
index 4155c7638d0..d0ffe7d7712 100644
--- a/src/intl/zh/page-dapps.json
+++ b/src/intl/zh/page-dapps.json
@@ -77,6 +77,7 @@
"page-dapps-dapp-description-zapper": "追踪您的投资组合,从同一个界面使用一系列 DeFi 产品。",
"page-dapps-dapp-description-zerion": "管理您的投资组合,简单地评估市场上的每一项 DeFi 资产。",
"page-dapps-dapp-description-rotki": "开源投资组合跟踪、分析、会计和税务报告工具,会尊重您的隐私。",
+ "page-dapps-dapp-description-krystal": "一个可访问所有你最欢的去中心化金融服务的一站式平台。",
"page-dapps-dapp-description-rarible": "创建、出售和购买通证化的收藏品。",
"page-dapps-dapp-description-sablier": "实时流转资金。",
"page-dapps-dapp-description-superrare": "直接从艺术家或在二级市场购买数字艺术作品。",
@@ -93,6 +94,7 @@
"page-dapps-zapper-logo-alt": "Zapper 徽标",
"page-dapps-zerion-logo-alt": "Zerion 徽标",
"page-dapps-rotki-logo-alt": "Rotki 徽标",
+ "page-dapps-krystal-logo-alt": "Krystal 徽标",
"page-dapps-desc": "找一个以太坊应用试试。",
"page-dapps-doge-img-alt": "用电脑设计一只狗",
"page-dapps-editors-choice-dark-forest": "与他人对弈,征服星球,尝试最前沿的以太坊扩展/隐私技术。也许是对于那些已经熟悉以太坊的人来说。",
@@ -103,7 +105,7 @@
"page-dapps-editors-choice-uniswap": "轻松交换您的代币。一个社区的宠儿,让您可以和全网的人交换代币。",
"page-dapps-ens-logo-alt": "以太坊名称服务徽标",
"page-dapps-explore-dapps-description": "很多去中心化应用还在实验中,测试去中心化网络的可能性。但在科技、金融、游戏和收藏品类中,已经有一些成功的先行者。",
- "page-dapps-explore-dapps-title": "探索一些去中心化应用",
+ "page-dapps-explore-dapps-title": "探索去中心化应用程序",
"page-dapps-features-1-description": "一旦部署到以太坊上,去中心化应用代码就无法删除。而且任何人都可以使用去中心化应用的功能。即使去中心化应用背后的团队解散了,您仍然可以使用它。一旦在以太坊上,它就会留在那里。",
"page-dapps-features-1-title": "没有所有者",
"page-dapps-features-2-description": "您不能被阻止使用去中心化应用或提交交易。例如,如果Twitter是在以太坊上,没有人可以屏蔽您的帐户或阻止您发推特。",
@@ -169,7 +171,7 @@
"page-dapps-magic-title-2": "背后",
"page-dapps-magician-img-alt": "魔法师插图",
"page-dapps-marble-cards-logo-alt": "marble.cards徽标",
- "page-dapps-async-logo-alt": "异步徽标",
+ "page-dapps-async-logo-alt": "Async 徽标",
"page-dapps-matcha-logo-alt": "Matcha徽标",
"page-dapps-mobile-options-header": "浏览另一个类别",
"page-dapps-nifty-gateway-logo-alt": "Nifty Gateway徽标",
@@ -178,7 +180,7 @@
"page-dapps-opera-logo-alt": "Opera徽标",
"page-dapps-polymarket-logo-alt": "Polymarket徽标",
"page-dapps-poap-logo-alt": "Proof of Attendance Protocol 徽标",
- "page-dapps-pooltogether-logo-alt": "PoolOnlogo徽标",
+ "page-dapps-pooltogether-logo-alt": "PoolTogether徽标",
"page-dapps-rarible-logo-alt": "Rarible徽标",
"page-dapps-ready-button": "出发",
"page-dapps-ready-description": "选择一个去中心化应用来尝试",
diff --git a/src/intl/zh/page-developers-docs.json b/src/intl/zh/page-developers-docs.json
index a13c351b74f..59a21d2641d 100644
--- a/src/intl/zh/page-developers-docs.json
+++ b/src/intl/zh/page-developers-docs.json
@@ -15,6 +15,7 @@
"docs-nav-gasper": "Gasper",
"docs-nav-weak-subjectivity": "弱主观性",
"docs-nav-attestations": "认证",
+ "docs-nav-keys": "密钥",
"docs-nav-data-and-analytics": "数据和分析",
"docs-nav-data-and-analytics-description": "区块链数据如何汇总、组织并实施到 dapp 中",
"docs-nav-data-availability": "数据可用性",
@@ -34,7 +35,7 @@
"docs-nav-ethereum-client-apis": "以太坊客户端API",
"docs-nav-ethereum-client-apis-description": "便利库,允许您的 web 应用程序与以太坊和智能合同交互",
"docs-nav-ethereum-stack": "以太坊堆栈",
- "docs-nav-evm": "以太坊虚拟机(EVM)",
+ "docs-nav-evm": "以太坊虚拟机 (EVM)",
"docs-nav-evm-description": "EVM 处理以太坊网络上的所有计算",
"docs-nav-foundational-topics": "基础主题",
"docs-nav-gas": "Gas费用",
@@ -58,7 +59,7 @@
"docs-nav-mev-description": "从除了区块奖励之外的以太坊区块链中提取价值",
"docs-nav-mining": "矿工",
"docs-nav-mining-algorithms": "挖矿算法",
- "docs-nav-dagger-hashimoto": "Dagger-Hashimoto 算法",
+ "docs-nav-dagger-hashamoto": "Dagger-Hashamoto 算法",
"docs-nav-ethash": "Ethash",
"docs-nav-networks": "网络",
"docs-nav-networks-description": "部署以太坊,包括测试网络",
@@ -105,7 +106,7 @@
"docs-nav-transactions-description": "转账和其他导致以太坊状态变化的行为",
"docs-nav-upgrading-smart-contracts": "升级智能合约",
"docs-nav-verifying-smart-contracts": "验证智能合约",
- "docs-nav-web2-vs-web3": "Web2与Web3对比",
+ "docs-nav-web2-vs-web3": "Web2 与 Web3 的对比",
"docs-nav-web2-vs-web3-description": "基于区块链的应用程序提供的基本差异",
"docs-nav-networking-layer": "网络层",
"docs-nav-networking-layer-description": "以太坊网络层的解释",
@@ -115,6 +116,8 @@
"docs-nav-data-structures-and-encoding-rlp": "递归长度前缀编码 (RLP)",
"docs-nav-data-structures-and-encoding-patricia-merkle-trie": "默克尔前缀树",
"docs-nav-data-structures-and-encoding-ssz": "简单序列化 (SSZ)",
+ "docs-nav-data-structures-and-encoding-web3-secret-storage": "Web3 密钥存储定义",
+ "docs-nav-rewards-and-penalties": "权益证明机制的奖励和惩罚",
"page-calltocontribute-desc-1": "如果您是这方面的专家,并想发表意见,那么编辑此页分享您的智慧。",
"page-calltocontribute-desc-2": "您将获得褒奖并会为以太坊社区提供帮助!",
"page-calltocontribute-desc-3": "自由发挥",
diff --git a/src/intl/zh/page-developers-learning-tools.json b/src/intl/zh/page-developers-learning-tools.json
index 96ec219d291..c87adc60dd6 100644
--- a/src/intl/zh/page-developers-learning-tools.json
+++ b/src/intl/zh/page-developers-learning-tools.json
@@ -8,7 +8,7 @@
"page-learning-tools-capture-the-ether-logo-alt": "Capture the Ether 徽标",
"page-learning-tools-chainshot-description": "有教师指导的远程以太坊开发者训练营和其他课程。",
"page-learning-tools-chainshot-logo-alt": "ChainShot徽标",
- "page-learning-tools-coding": "通过编程来学习",
+ "page-learning-tools-coding": "通过编码来学习",
"page-learning-tools-coding-subtitle": "如果您更喜欢在互动中学习,这些工具会帮您实践理解以太坊。",
"page-learning-tools-consensys-academy-description": "线上以太坊开发者训练营。",
"page-learning-tools-consensys-academy-logo-alt": "ConsenSys Academy徽标",
@@ -35,7 +35,7 @@
"page-learning-tools-remix-logo-alt": "Remix徽标",
"page-learning-tools-sandbox": "代码沙箱",
"page-learning-tools-sandbox-desc": "代码沙箱提供您一个尝试写智能合约和理解以太坊的空间。",
- "page-learning-tools-speed-run-ethereum-description": "Speed Run Ethereum 是一系列使用 Scaffold-ETH 测试你的 Solidity 知识的挑战",
+ "page-learning-tools-speed-run-ethereum-description": "Speed Run Ethereum 提供一系列挑战,通过使用 Scaffold-ETH 测试你的 Solidity 知识",
"page-learning-tools-speed-run-ethereum-logo-alt": "Speed Run 以太坊徽标",
"page-learning-tools-studio-description": "一个基于网络的IDE,您可以在这里关注教程来创建和测试智能合约,并为它们建立一个前端。",
"page-learning-tools-vyperfun-description": "通过学习 Vyper 来构建您自己的 Pokémon 游戏。",
diff --git a/src/intl/zh/page-developers-local-environment.json b/src/intl/zh/page-developers-local-environment.json
index 0fa4cf4e0f6..2a781cc0f72 100644
--- a/src/intl/zh/page-developers-local-environment.json
+++ b/src/intl/zh/page-developers-local-environment.json
@@ -15,18 +15,18 @@
"page-local-environment-framework-feature-4": "连接到以太坊网络并部署合同的配置,无论是本地运行的实例还是以太坊的公共网络之一。",
"page-local-environment-framework-feature-5": "去中心化的应用分发 - 与诸如IPFS之类的存储选项集成。",
"page-local-environment-framework-features": "这些框架带有许多开箱即用功能,比如:",
- "page-local-environment-frameworks-desc": " 我们建议选择一个框架,特别是如果您刚刚开始使用。建立一个完整的去中心化应用需要不同的技术。框架包括许多所需的功能或提供简单的插件系统来选择您想要的工具。",
+ "page-local-environment-frameworks-desc": "我们建议选择一个框架,特别是如果您刚刚开始使用。建立一个完整的去中心化应用需要不同的技术。框架包括许多所需的功能或提供简单的插件系统来选择您想要的工具。",
"page-local-environment-frameworks-title": "框架和预先制作的堆栈",
"page-local-environment-hardhat-desc": "“安全帽”是针对专业人员的以太坊开发环境。",
"page-local-environment-hardhat-logo-alt": "安全帽徽标",
"page-local-environment-openZeppelin-desc": "通过编译、升级、部署和与我们的CLI智能合同互动来节省开发时间。",
- "page-local-environment-openZeppelin-logo-alt": "OpenZepelin徽标",
+ "page-local-environment-openZeppelin-logo-alt": "OpenZeppelin 徽标",
"page-local-environment-scaffold-eth-desc": "ETH + Hardhat + React:这些是开始构建由智能合约驱动的去中心化应用所需的一切。",
"page-local-environment-scaffold-eth-logo-alt": "scaffold-eth徽标",
"page-local-environment-setup-meta-desc": "关于如何选择您的软件堆栈用于以太坊开发的指南。",
"page-local-environment-setup-meta-title": "以太坊本地开发设置",
"page-local-environment-setup-subtitle": "如果您准备好开始建造,就选择您的堆栈。",
- "page-local-environment-setup-subtitle-2": " 这里是您可以用来帮助您构建您的以太坊应用的工具和框架。",
+ "page-local-environment-setup-subtitle-2": "这里是您可以用来帮助您构建您的以太坊应用的工具和框架。",
"page-local-environment-setup-title": "设置您的本地开发环境",
"page-local-environment-solidity-template-desc": "一个GitHub模板,用于为Solidity智能合约预构建设置。包括一个安全帽本地网络,用于测试的华夫饼,用于钱包实现的以太等等。",
"page-local-environment-solidity-template-logo-alt": "Solidity template徽标",
diff --git a/src/intl/zh/page-languages.json b/src/intl/zh/page-languages.json
index a11e62f7c7a..fd7c05e8a6f 100644
--- a/src/intl/zh/page-languages.json
+++ b/src/intl/zh/page-languages.json
@@ -4,7 +4,7 @@
"page-languages-learn-more": "了解更多关于我们翻译计划的信息",
"page-languages-meta-desc": "以太坊支持的所有语言的资源,以及参与翻译的方式。",
"page-languages-meta-title": "ethereum.org 各国语言翻译",
- "page-languages-p1": "以太坊是一个全球性项目,每个人,不论其国籍或语言,都可以访问ethereum.org。 我们社区一直在努力使这一愿景成为现实。",
+ "page-languages-p1": "以太坊是一个全球性项目,每个人,不论其国籍或语言,都可以访问ethereum.org。我们社区一直在努力使这一愿景成为现实。",
"page-languages-translations-available": "ethereum.org有以下语言版本",
"page-languages-resources-paragraph": "除了翻译 ethereum.org 的内容外,我们还维护",
"page-languages-resources-link": "和管理以多种语言提供的以太坊资源列表",
diff --git a/src/intl/zh/page-layer-2.json b/src/intl/zh/page-layer-2.json
index e79629deb7b..22fbd9a6c65 100644
--- a/src/intl/zh/page-layer-2.json
+++ b/src/intl/zh/page-layer-2.json
@@ -14,7 +14,7 @@
"layer-2-statsbox-2": "二层网络平均 ETH 转账费用 (USD)",
"layer-2-statsbox-3": "二层网络价值总量变化(30 天)",
"layer-2-what-is-layer-2-title": "什么是二层网络?",
- "layer-2-what-is-layer-2-1": "二层网络 (L2) 是一个集体术语,用以描述一套具体的以太坊扩容解决方案。二层网络是单独的区块链,其扩展了以太坊并继承了太坊的安全保证。",
+ "layer-2-what-is-layer-2-1": "二层网络 (L2) 是一个集体术语,用于描述一系列具体的以太坊扩容解决方案。二层网络是一条独立的区块链,它扩展了以太坊并继承了以太坊的安全保证。",
"layer-2-what-is-layer-2-2": "现在让我们来深入地了解一下它,为此,我们需要解释一层网络 (L1)。",
"layer-2-what-is-layer-1-title": "什么是一层网络?",
"layer-2-what-is-layer-1-1": "一层网络是底层区块链。以太坊和比特币都是一层网络区块链,因为它们是基石,各种二层网络都构建于其上。二层网络项目的示例包括以太坊上的“卷叠”和基于比特币的闪电网络。所有这些二层网络项目上的用户交易活动最终都可以回到一层网络区块链。",
@@ -116,7 +116,7 @@
"layer-2-faq-question-5-description-2": "任何人都可以自由地提议在 ethereum.org 上添加一个二层网络。如果有我们未收录的二层网络,请提供建议。",
"layer-2-further-reading-title": "延伸阅读",
"a-rollup-centric-ethereum-roadmap": "以卷叠为中心的以太坊路线图",
- "an-incomplete-guide-to-rollups": "不完全卷叠指南",
+ "an-incomplete-guide-to-rollups": "卷叠不完全指南",
"polygon-sidechain-vs-ethereum-rollups": "多变聚合侧链对比以太坊卷叠:二层网络扩容方案 | Vitalik Buterin 与 Lex Fridman",
"rollups-the-ultimate-ethereum-scaling-strategy": "卷叠 - 以太坊终极扩容策略?解释 Arbitrum 和乐观",
"scaling-layer-1-with-shard-chains": "分片链扩容一层网络",
diff --git a/src/intl/zh/page-run-a-node.json b/src/intl/zh/page-run-a-node.json
index c869f874d43..17f3b501473 100644
--- a/src/intl/zh/page-run-a-node.json
+++ b/src/intl/zh/page-run-a-node.json
@@ -37,7 +37,7 @@
"page-run-a-node-community-description-1": "Discord 或 Reddit 等在线平台是众多社区建设者的家园,他们愿意帮助您处理您可能遇到的任何问题。",
"page-run-a-node-community-description-2": "如果您有疑问,不用自行处理,这里或许有人可以帮您解决。",
"page-run-a-node-community-link-1": "加入 DAppNode Discord",
- "page-run-a-node-community-link-2": "寻找线上社区",
+ "page-run-a-node-community-link-2": "寻找在线社区",
"page-run-a-node-choose-your-adventure-title": "开始您的旅程",
"page-run-a-node-choose-your-adventure-1": "您需要一些硬件才能开始。虽然您可以在个人电脑上运行节点软件,但是拥有专用计算机可以极大地提高节点的性能,同时最大限度地减少它对您主计算机的影响。",
"page-run-a-node-choose-your-adventure-2": "在选择硬件时,需要考虑到链会不断扩大,并且需要维护。提升硬件规格可以有效推迟节点维护的需求。",
@@ -56,7 +56,7 @@
"page-run-a-node-further-reading-1-author": "安德里亚斯·安东尼奥普洛斯",
"page-run-a-node-further-reading-2-link": "ARM 设备上的以太坊 - 快速启动指南",
"page-run-a-node-further-reading-3-link": "区块链可扩展性的局限性",
- "page-run-a-node-further-reading-3-author": "维塔利克·布特林",
+ "page-run-a-node-further-reading-3-author": "Vitalik Buterin",
"page-run-a-node-getting-started-title": "入门指南",
"page-run-a-node-getting-started-software-section-1": "在使用网络的最初几天中,用户需要有与命令行接口的能力才能运行以太坊节点。",
"page-run-a-node-getting-started-software-section-1-alert": "如果这是您的喜好,而且您已经掌握了技能,请随时查看我们的技术性文件。",
@@ -120,7 +120,7 @@
"page-run-a-node-voice-your-choice-title": "说出您的选择",
"page-run-a-node-voice-your-choice-preview": "在发生分叉的情况下,不要放弃控制。",
"page-run-a-node-voice-your-choice-1": "在链分叉的情况下(即两条链出现了两套不同的规则),运行您自己的节点可确保您能选择支持哪套规则。是否升级到新规则并支持提出的更改,由您决定。",
- "page-run-a-node-voice-your-choice-2": "如果您即将质押以太币,运行您自己的节点使您可以选择自己的客户端,从而尽可能地减少您被惩罚的风险,并能对随着时间的推移产生的网络需求波动作出反应。与第三方合作进行质押,会让您失去对最佳客户端选择的投票权。",
+ "page-run-a-node-voice-your-choice-2": "如果你要质押以太币,运行自己的节点后,你可以选择自己的客户端,尽可能减少受到惩罚的风险,并能对一段时间内网络需求的波动作出响应。与第三方合作进行质押,会让你失去对最佳客户端选择的投票权。",
"page-run-a-node-what-title": "“运行节点”意味着什么?",
"page-run-a-node-what-1-subtitle": "运行软件。",
"page-run-a-node-what-1-text": "这种软件被称为“客户端”,它可以下载以太坊区块链的副本,验证每个区块的有效性,使区块链的区块和交易保持最新,并帮助他人下载和更新他们自己的副本。",
@@ -129,9 +129,9 @@
"page-run-a-node-what-3-subtitle": "在线运行。",
"page-run-a-node-what-3-text": "运行以太坊节点一开始听起来很复杂,但它只是一种计算机在连接互联网后持续运行客户端软件的行为。离线时,您的节点将处于非活动状态,直到它重新上线时,才根据最新变化进行更新。",
"page-run-a-node-who-title": "应该由谁来运行节点?",
- "page-run-a-node-who-preview": "所有人!节点不仅仅适用于矿工和验证者。任何人都可以运行一个节点 — 你甚至不需要以太币。",
- "page-run-a-node-who-copy-1": "要运行一个节点,您不需要质押以太币,也不需要成为矿工。事实上,要矿工和验证者负责的是以太坊上的其他各个节点。",
- "page-run-a-node-who-copy-2": "您可能无法获得验证者和矿工所获得的经济奖励,但对于任何以太坊用户来说,应考虑运行节点带来的许多其他好处,包括隐私、安全、减少对第三方服务器的依赖、抗审查以及改善网络的健康和去中心化程度。",
+ "page-run-a-node-who-preview": "所有人!节点不只是权益证明验证者的专属。任何人都可以运行节点 — 甚至都不需要以太币。",
+ "page-run-a-node-who-copy-1": "无需质押以太币就可以运行节点。事实上,验证者负责的是以太坊上的其他各个节点。",
+ "page-run-a-node-who-copy-2": "你可能无法获得验证者所获得的经济奖励,但对于任何以太坊用户来说,应考虑运行节点带来的许多其他好处,包括隐私、安全、减少对第三方服务器的依赖、抗审查以及改善网络的健康和去中心化程度。",
"page-run-a-node-who-copy-3": "拥有自己的节点意味着您不需要相信由第三方提供的关于网络状态的信息。",
"page-run-a-node-who-copy-bold": "不要信!亲自去验证。",
"page-run-a-node-why-title": "为什么要运行节点?"
diff --git a/src/intl/zh/page-stablecoins.json b/src/intl/zh/page-stablecoins.json
index 76f36eb16dc..be502d1f392 100644
--- a/src/intl/zh/page-stablecoins.json
+++ b/src/intl/zh/page-stablecoins.json
@@ -1,10 +1,10 @@
{
"page-stablecoins-accordion-borrow-crypto-collateral": "加密抵押品",
- "page-stablecoins-accordion-borrow-crypto-collateral-copy": "使用以太坊,您可以直接从其他用户借贷,而无需交易您的 ETH。这可以为您实现杠杆作用 - 一些人这样做来尝试积累更多 ETH。",
- "page-stablecoins-accordion-borrow-crypto-collateral-copy-p2": "但由于 ETH 的价格波动,您将需要超额担保。这意味着如果您想借 100 个稳定币,您可能需要至少 150 美元价值的 ETH。这将保护系统和贷方。",
+ "page-stablecoins-accordion-borrow-crypto-collateral-copy": "使用以太坊,你可以直接从其他用户借贷,而无需交易你的以太币。这可以为你实现杠杆作用 - 一些人这样做来尝试积累更多以太币。",
+ "page-stablecoins-accordion-borrow-crypto-collateral-copy-p2": "但由于以太币的价格波动,你将需要超额抵押。这意味着如果你想借 100 个稳定币,你可能需要至少价值 $150 的以太币。这将保护系统和贷方。",
"page-stablecoins-accordion-borrow-crypto-collateral-link": "有关加密支持的稳定币的更多内容",
"page-stablecoins-accordion-borrow-pill": "高级",
- "page-stablecoins-accordion-borrow-places-intro": "这些去中心化应用允许您借入以加密货币作为抵押品的稳定币。有些接受 ETH 和其它代币。",
+ "page-stablecoins-accordion-borrow-places-intro": "这些去中心化应用程序允许你将加密货币作为抵押品借入稳定币。有些接受以太币和其它代币。",
"page-stablecoins-accordion-borrow-places-title": "借入稳定币的地方",
"page-stablecoins-accordion-borrow-requirement-1": "以太坊钱包",
"page-stablecoins-accordion-borrow-requirement-1-description": "您需要钱包才能使用去中心化应用",
@@ -78,7 +78,7 @@
"page-stablecoins-dai-logo": "Dai 徽标",
"page-stablecoins-editors-choice": "主编推荐",
"page-stablecoins-editors-choice-intro": "这些是当前最知名的稳定币,并被去中心化应用广泛使用。",
- "page-stablecoins-explore-dapps": "探索去中心化应用",
+ "page-stablecoins-explore-dapps": "探索去中心化应用程序",
"page-stablecoins-fiat-backed": "法币抵押",
"page-stablecoins-fiat-backed-con-1": "中心化 - 必须有人签发代币。",
"page-stablecoins-fiat-backed-con-2": "需要审计确保这些公司拥有足够的资产储备。",
@@ -105,7 +105,7 @@
"page-stablecoins-prices-definition": "稳定币是不具有波动性的加密货币。它们具有很多和ETH相同的能力,同时它们的价值稳定,更像传统货币。因此您可以在以太坊上像使用传统货币一样使用它们。",
"page-stablecoins-prices-definition-how": "稳定币如何维持稳定价值",
"page-stablecoins-research-warning": "以太坊是一种新技术,同时绝大部分应用也是新鲜出炉。请确保您了解这些风险。",
- "page-stablecoins-research-warning-title": "不要道听途说",
+ "page-stablecoins-research-warning-title": "坚持独立思考和研究",
"page-stablecoins-save-stablecoins": "储蓄稳定币",
"page-stablecoins-save-stablecoins-body": "由于有大量借入需求,稳定币通常拥有高于平均的收益率。有些去中心化应用能够让您通过将稳定币放入借贷池赚取即时收益。就像在金融界一样,您出借稳定币,且可以随时撤回,获取收益。",
"page-stablecoins-saving": "妥善利用您的稳定币储蓄以赚取利息。就像加密世界中的任何东西,预期的收益率曲线(APY)总是根据供需每天实时变化。",
diff --git a/src/intl/zh/page-staking.json b/src/intl/zh/page-staking.json
index 7d63671dbfc..1234050021a 100644
--- a/src/intl/zh/page-staking.json
+++ b/src/intl/zh/page-staking.json
@@ -10,7 +10,7 @@
"page-staking-check-address": "检查存款地址",
"page-staking-deposit-address": "检查存款地址",
"page-staking-deposit-address-desc": "如果您已经完成了启动板中的指示操作,您将需要向质押协议发送一个交易。我们建议您非常小心地确认接收地址。您可以在 ethereum.org 上找到官方地址和一系列其它受信站点。",
- "page-staking-description": "质押是存入 32 ETH 以激活验证者软件的行为。作为验证者,你将负责存储数据、处理交易以及向区块链添加新区块。这将保持每个人以太坊的安全,并在此过程中为你赚取新的 ETH。",
+ "page-staking-description": "质押是指存入 32 个以太币以激活验证者软件的行为。作为验证者,你将负责存储数据、处理交易以及向区块链添加新区块。这将每个人保证以太坊的安全,并在此过程中为你赚取新的以太币。",
"page-staking-hero-title": "如何质押以太币",
"page-staking-hero-header": "保护以太坊的同时赚取奖励",
"page-staking-hero-subtitle": "质押对于以太坊的生态属于公益行为。拥有任意数量以太币的任何用户都有助于让网络更加安全,同时也会在此过程中获得奖励。",
@@ -139,7 +139,7 @@
"page-staking-section-comparison-rewards-title": "奖励",
"page-staking-section-comparison-solo-rewards-li1": "最大奖励 - 直接从协议获取完整奖励",
"page-staking-section-comparison-solo-rewards-li2": "通过将交易打包至新区块,或检查其他验证者的工作,以保持区块链安全运行,你将获得相应的奖励",
- "page-staking-section-comparison-solo-rewards-li3": "你还将收到你提议的区块的未消耗的交易费",
+ "page-staking-section-comparison-solo-rewards-li3": "你还将收到你提出的区块的未消耗的交易费",
"page-staking-section-comparison-saas-rewards-li1": "通常为全部协议奖励减去节点运营的月费用",
"page-staking-section-comparison-saas-rewards-li2": "仪表板通常可用来轻松跟踪你的验证者客户端",
"page-staking-section-comparison-pools-rewards-li1": "联合质押者将获得不同的奖励,具体取决于所选择的联合质押方法",
@@ -156,7 +156,7 @@
"page-staking-section-comparison-requirements-title": "要求",
"page-staking-section-comparison-solo-requirements-li1": "你必须存入 32 个以太币",
"page-staking-section-comparison-solo-requirements-li2": "在连接到互联网时维护运行以太坊执行客户端和共识客户端的硬件",
- "page-staking-section-comparison-solo-requirements-li3": "Staking Launchpad 将引导你完成流程和硬件要求",
+ "page-staking-section-comparison-solo-requirements-li3": "质押启动板将引导你了解流程和硬件要求",
"page-staking-section-comparison-saas-requirements-li1": "存入 32 个以太币并在帮助下生成你的密钥",
"page-staking-section-comparison-saas-requirements-li2": "安全地保存你的密钥",
"page-staking-section-comparison-saas-requirements-li3": "其他服务已妥善处理,但特定服务将有所变化",
@@ -167,11 +167,23 @@
"page-staking-faq-2-question": "为什么我需要质押资金?",
"page-staking-faq-2-answer": "验证者能为网络提交和证明区块。为了防止不诚实行为,用户必须将他们的资金进行质押。这让协议可以惩罚恶意行为者。质押是让你保持诚实的一种方式,因为你的行为会产生财务后果。",
"page-staking-faq-3-question": "我可以购买“以太坊 2”吗?",
- "page-staking-faq-3-answer-p1": "该协议没有原生的“Eth2”代币,因为当以太坊切换到权益证明时,原生代币以太币 (ETH) 没有改变。",
+ "page-staking-faq-3-answer-p1": "该协议没有原生的“以太坊 2”代币,因为当以太坊过渡到权益证明时,原生代币以太币 (ETH) 没有改变。",
"page-staking-faq-3-answer-p2": "有一些衍生代币/代码可以代表质押的以太币(即来自 Rocket Pool 的 rETH、来自 Lido 的 stETH、来自 Coinbase 的 ETH2)。详细了解质押池",
"page-staking-faq-4-question": "质押已经上线了吗?",
- "page-staking-faq-4-answer-p1": "是的。质押自 2020 年 12 月 1 日起生效。",
- "page-staking-faq-4-answer-p2": "这意味着目前用户可以进行质押以存入他们的 ETH,运行验证者客户端并开始赚取奖励。上海更新后,质押人将能够从他们的验证者余额中提取奖励和资金。",
+ "page-staking-faq-4-answer-p1": "是的。质押自 2020 年 12 月 1 日起上线。",
+ "page-staking-faq-4-answer-p2": "这意味着目前用户可以进行质押以存入他们的以太币,运行验证者客户端并开始赚取奖励。上海更新后,质押人将能够从他们的验证者余额中提取奖励和资金。",
+ "page-staking-further-reading-1-link": "为什么采用权益证明(2020 年 11 月)",
+ "page-staking-further-reading-author-vitalik-buterin": "Vitalik Buterin",
+ "page-staking-further-reading-2-link": "“宁静”升级的设计原理",
+ "page-staking-further-reading-3-link": "权益证明常见问题(2017 年 12 月)",
+ "page-staking-further-reading-4-link": "以太坊 2 新闻",
+ "page-staking-further-reading-4-author": "Ben Edgington",
+ "page-staking-further-reading-5-link": "33 号最终公告,以太坊共识层(2022 年 1 月)",
+ "page-staking-further-reading-5-author": "Danny Ryan",
+ "page-staking-further-reading-6-link": "Attestant 帖子",
+ "page-staking-further-reading-7-link": "Beaconcha.in 知识库",
+ "page-staking-further-reading-8-link": "Beaconcha.in 社区提供的教学材料",
+ "page-staking-further-reading-9-link": "以太坊质押启动板常见问题",
"page-staking-toc-how-to-stake-your-eth": "如何质押以太币",
"page-staking-toc-comparison-of-options": "质押方案对比",
"page-staking-toc-faq": "常见问题",
diff --git a/src/intl/zh/page-upgrades-get-involved-bug-bounty.json b/src/intl/zh/page-upgrades-get-involved-bug-bounty.json
index ae57711b6af..91c51c284b9 100644
--- a/src/intl/zh/page-upgrades-get-involved-bug-bounty.json
+++ b/src/intl/zh/page-upgrades-get-involved-bug-bounty.json
@@ -33,7 +33,7 @@
"page-upgrades-bug-bounty-meta-description": "以太坊漏洞悬赏计划概览:如何参与以及了解奖励信息",
"page-upgrades-bug-bounty-meta-title": "以太坊漏洞悬赏计划",
"page-upgrades-bug-bounty-not-included": "超出范围",
- "page-upgrades-bug-bounty-not-included-desc": "漏洞悬赏计划仅包括悬赏范围中列出的目标漏洞。这意味着我们的基础设置,例如网页、域名系统 (DNS)、邮箱等并不在悬赏范围内。REC20 合约漏洞通常不属于悬赏范围。然而我们可以帮助联系受影响的各方,例如合约作者或交易方。以太坊名称服务 (ENS) 由以太坊名称服务基金会维护,不在悬赏范围内。",
+ "page-upgrades-bug-bounty-not-included-desc": "漏洞悬赏计划仅包括悬赏范围中列出的目标漏洞。这意味着我们的基础设置,例如网页、域名系统 (DNS)、邮箱等并不在悬赏范围内。ERC20 合约漏洞通常不属于悬赏范围。然而我们可以帮助联系受影响的各方,例如合约作者或交易方。以太坊名称服务 (ENS) 由以太坊名称服务基金会维护,不在悬赏范围内。",
"page-upgrades-bug-bounty-owasp": "查看开放式网络应用程序安全项目方法",
"page-upgrades-bug-bounty-points": "以太坊基金会将基于以下因素授予奖励:",
"page-upgrades-bug-bounty-points-error": "加载数据发生错误,请刷新页面。",
@@ -68,7 +68,7 @@
"page-upgrades-bug-bounty-type-4": "计算或参数的不一致性",
"page-upgrades-bug-bounty-types": "漏洞类型",
"page-upgrades-bug-bounty-validity": "适用范围",
- "page-upgrades-bug-bounty-validity-desc": "我们的漏洞悬赏计划涵盖所有环节:从协议的可靠性(如区块链共识模型、线路协议和对等网络协议、工作量证明、权益证明等)及协议/实施是否符合规到网络安全和共识完整性。传统的客户端安全性以及加密加基元的安全性也是该计划的一部分。如有疑问请发送电子邮件至 bounty@eysum.org 向我们询问。",
+ "page-upgrades-bug-bounty-validity-desc": "我们的漏洞悬赏计划涵盖所有环节:从协议的可靠性(如区块链共识模型、线路协议和对等网络协议、权益证明等)及协议/实现是否符合规到网络安全和共识完整性。传统的客户端安全性以及加密加基元的安全性也是该计划的一部分。如有疑问,请发送电子邮件至 bounty@ethereum.org 向我们询问。",
"page-upgrades-bug-bounty-card-critical": "高危",
"page-upgrades-bug-bounty-card-critical-risk": "提交高危风险漏洞",
"page-upgrades-bug-bounty-card-h2": "中",
@@ -97,6 +97,6 @@
"page-upgrades-bug-bounty-card-subheader-2": "示例",
"page-upgrades-bug-bounty-card-text": "攻击者有时可以促使一个节点进入一种非正常的状态:以 1/100 的概率丢失验证者发来的证明信息。",
"page-upgrades-bug-bounty-card-text-1": "攻击者可以成功针对一类节点(对等点 ID 以 4 个 0 字节开头)发动日蚀攻击",
- "page-upgrades-bug-bounty-card-text-2": "两个客户端之间存在共识漏洞,但是它们并不容易成为攻击者的目标或这样做并不切实际。",
- "page-upgrades-bug-bounty-card-text-3": "一种主流客户端中存在远程代码执行漏洞,并且攻击者很容易触发该漏洞。"
+ "page-upgrades-bug-bounty-card-text-2": "攻击者可以成功地对大部分网络进行分区,而对攻击者来说触发该漏洞是很容易的",
+ "page-upgrades-bug-bounty-card-text-3": "攻击者可以成功地在一种主流客户端进行远程代码执行,而对攻击者来说触发该漏洞是很容易的"
}
diff --git a/src/intl/zh/page-upgrades-get-involved.json b/src/intl/zh/page-upgrades-get-involved.json
index 7bf1d5a025c..147a56b4840 100644
--- a/src/intl/zh/page-upgrades-get-involved.json
+++ b/src/intl/zh/page-upgrades-get-involved.json
@@ -1,6 +1,6 @@
{
"page-upgrades-get-involved-btn-1": "查看客户端",
- "page-upgrades-get-involved-btn-2": "有关质押的更多信息",
+ "page-upgrades-get-involved-btn-2": "关于质押的更多信息",
"page-upgrades-get-involved-btn-3": "查找漏洞",
"page-upgrades-get-involved-bug": "漏洞可能是:",
"page-upgrades-get-involved-bug-hunting": "定位程序漏洞",
@@ -8,16 +8,16 @@
"page-upgrades-get-involved-bug-li": "规范的兼容性问题",
"page-upgrades-get-involved-bug-li-2": "确定会触发程序崩溃的问题",
"page-upgrades-get-involved-bug-li-3": "拒绝服务 (DOS) 的潜在漏洞",
- "page-upgrades-get-involved-bug-li-4": "以及更多...",
+ "page-upgrades-get-involved-bug-li-4": "及更多...",
"page-upgrades-get-involved-date": "结束日期:2020 年 12 月 23 日",
"page-upgrades-get-involved-desc-1": "运行客户端意味着您将成为以太坊的积极参与者。您的客户端将帮助跟踪交易并检查新的区块。",
"page-upgrades-get-involved-desc-2": "如果您持有以太币,可以通过质押以太币成为验证者,帮助确保网络的安全。作为验证者,您可以获得以太币作为奖励。",
"page-upgrades-get-involved-desc-3": "加入社区的测试工作!在上线前帮助测试以太坊升级,查找漏洞并获得奖励。",
- "page-upgrades-get-involved-ethresearch-1": "区块分片",
+ "page-upgrades-get-involved-ethresearch-1": "分片",
"page-upgrades-get-involved-ethresearch-2": "合并",
"page-upgrades-get-involved-ethresearch-3": "分片执行",
"page-upgrades-get-involved-ethresearch-4": "所有研究专题",
- "page-upgrades-get-involved-grants": "权益质押社区赠予",
+ "page-upgrades-get-involved-grants": "权益质押社区资助",
"page-upgrades-get-involved-grants-desc": "帮助为质押人社区创建工具和宣导内容",
"page-upgrades-get-involved-how": "我应该如何参与?",
"page-upgrades-get-involved-how-desc": "以太坊社区将始终受益于有更多人运行客户端、质押和查找漏洞。",
@@ -26,7 +26,7 @@
"page-upgrades-get-involved-meta-description": "如何参与以太坊升级:运行节点、质押、查找漏洞等等。",
"page-upgrades-get-involved-more": "更多信息",
"page-upgrades-get-involved-run-clients": "运行客户端对",
- "page-upgrades-get-involved-run-clients-desc": "“客户端“是指运行区块链的软件。对于以太坊,全节点需要运行一对客户端:执行层客户端和共识层客户端。全节点可以验证交易,当然,如果还质押了以太币,全节点可以产生新区块。每一种客户端都有自己的特性,但大体上都执行相同功能。所以我们提倡尽可能选择非主流客户端,保持客户端池的多样性和安全性。",
+ "page-upgrades-get-involved-run-clients-desc": "“客户端”是指运行区块链的软件。对于以太坊,全节点需要运行一对客户端:执行层客户端和共识层客户端。全节点可以验证交易,当然,如果还质押了以太币,全节点可以产生新区块。每一种客户端都有自己的特性,但大体上都执行相同功能。所以我们提倡尽可能选择非主流客户端,保持客户端池的多样性和安全性。",
"page-upgrades-get-involved-run-clients-desc-link": "有关客户端多样性的更多信息。",
"page-upgrades-get-involved-run-clients-execution": "执行层客户端",
"page-upgrades-get-involved-run-clients-execution-desc": "这些客户端曾称为“以太坊 1”客户端,但这个词正在被弃用,代之以“执行层客户端”。",
diff --git a/src/intl/zh/page-upgrades-index.json b/src/intl/zh/page-upgrades-index.json
index 674b3a1ae3d..ad8de49106b 100644
--- a/src/intl/zh/page-upgrades-index.json
+++ b/src/intl/zh/page-upgrades-index.json
@@ -9,41 +9,51 @@
"consensus-client-prysm-logo-alt": "Prysm 徽标",
"consensus-client-teku-logo-alt": "Teku 徽标",
"consensus-client-under-review": "正在进行的审查和审计",
- "page-upgrades-answer-1": "将提出的改进想象成一系列改进我们今天所用以太坊的升级。这些升级包括创建一条名为信标链的新链,信标链很快将作为整个网络的共识引擎。",
- "page-upgrades-answer-2": "尽管信标链最初是一条独立的链,但现有的主网将与这一新的权益证明共识层“合并”。",
- "page-upgrades-answer-4": "换种说法,我们今天所使用的以太坊,最终将整合我们在以太坊愿景中所追求的所有功能。",
- "page-upgrade-article-title-two-point-oh": "以太坊 2.0:信标链",
- "page-upgrade-article-title-beacon-chain-explainer": "以太坊 2.0 信标链:一篇您需要优先阅读的解读文章",
- "page-upgrade-article-title-sharding-consensus": "分片共识",
+ "page-upgrades-answer-1": "在合并时,信标链作为一种工具来升级以太坊主网。",
+ "page-upgrades-answer-2": "合并后,以太坊完成了自身最重要的升级,从工作量证明转换为基于共识层的新型权益证明。",
+ "page-upgrades-answer-4": "信标链用于开发以太坊目前采用的基于权益证明的共识。信标链以前独立于以太坊主网单独运行,因此开发者可以观察单独运行的共识机制,然后再使用它协调实际活动。",
+ "page-upgrade-article-author-ethmerge": "以太坊合并",
+ "page-upgrade-article-author-alchemy": "Alchemy",
+ "page-upgrade-article-author-consensys": "Consensys",
+ "page-upgrade-article-author-delphi-digital": "特尔斐数据",
"page-upgrade-article-author-ethereum-foundation": "以太坊基金会",
"page-upgrade-article-author-vitalik-buterin": "Vitalik Buterin",
"page-upgrade-article-author-ethos-dev": "Ethos.dev",
- "page-upgrade-article-author-delphi-digital": "特尔斐数据",
+ "page-upgrade-article-title-two-point-oh": "以太坊 2.0:信标链",
+ "page-upgrade-article-title-beacon-chain-explainer": "以太坊 2.0 信标链:一篇您需要优先阅读的解读文章",
+ "page-upgrade-article-title-sharding-consensus": "分片共识",
"page-upgrade-article-title-sharding-is-great": "为什么分片技术很重要:从技术角度揭秘",
"page-upgrade-article-title-rollup-roadmap": "以卷叠为中心的路线图",
"page-upgrade-article-title-hitchhikers-guide-to-ethereum": "以太坊漫游指南",
+ "page-upgrade-article-title-ethmerge": "以太坊合并",
+ "page-upgrade-article-title-merge-is-coming": "合并即将到来",
+ "page-upgrade-article-title-state-of-the-merge": "合并动态:2022 年以太坊合并为权益证明机制的最新情况",
+ "page-upgrade-article-title-ropsten-merge-testnet": "Ropsten 测试网合并公告",
+ "page-upgrade-article-title-execution-layer-specs": "执行层规范",
+ "page-upgrade-article-title-consensus-layer-specs": "共识层规范",
+ "page-upgrade-article-title-engine-api-specs": "应用程序接口规范",
"page-upgrades-beacon-chain-btn": "关于信标链的更多信息",
- "page-upgrades-beacon-chain-date": "信标链在 2020 年 12 月 1 日正式上线。",
- "page-upgrades-beacon-chain-desc": "信标链为以太坊引入了质押,为未来的升级奠定了基础,并将很快协调新系统。",
+ "page-upgrades-beacon-chain-date": "信标链在 2020 年 12 月 1 日上线。",
+ "page-upgrades-beacon-chain-desc": "信标链为以太坊带来了质押,并为未来的升级奠定了基础。信标链为新生的权益证明以太坊进行协调。",
"page-upgrades-beacon-chain-estimate": "信标链已经上线",
"page-upgrades-beacon-chain-title": "信标链",
"page-upgrades-bug-bounty": "查看漏洞悬赏计划",
"page-upgrades-clients": "查看共识客户端(以前称为以太坊 2.0 客户端)",
"page-staking-deposit-contract-title": "确认存款合约地址",
"page-upgrades-dive": "深入了解愿景",
- "page-upgrades-dive-desc": "在保证以太坊去中心化核心理念的同时,我们将如何使得以太坊变得更可扩展、更安全、更可持续?",
+ "page-upgrades-dive-desc": "如何提升以太坊的可扩展性、安全性和可持续性?同时秉持以太坊的核心精神去中心化。",
"page-upgrades-docking": "合并",
- "page-upgrades-merge-answer-1": "合并是指主网开始使用信标链达成共识并且弃用工作量证明机制之时,合并即将开始。",
+ "page-upgrades-merge-answer-1": "合并是指主网在 2022 年 9 月 15 日关闭工作量证明并启用权益证明。",
"page-upgrades-merge-btn": "关于合并的更多信息",
- "page-upgrades-merge-desc": "以太坊主网很快将与权益证明信标链“合并”,标志着高能耗挖矿的终结。",
- "page-upgrades-merge-estimate": "预计上线时间:2022 年",
+ "page-upgrades-merge-desc": "以太坊主网与权益证明信标链合并,标志着高能耗挖矿的终结。",
+ "page-upgrades-merge-estimate": "合并正在进行",
"page-upgrades-merge-mainnet": "什么是主网?",
"page-upgrades-merge-mainnet-eth2": "合并主网和信标链",
"page-upgrades-eth-blog": "ethereum.org 博客",
"page-upgrades-explore-btn": "探索升级",
"page-upgrades-get-involved": "参与升级以太坊",
- "page-upgrades-get-involved-2": "参与",
- "page-upgrades-head-to-ethresearch": "前往 ethresear.ch",
+ "page-upgrades-get-involved-2": "参与其中",
+ "page-upgrades-head-to": "前往",
"page-upgrades-help": "想要帮助以太坊升级吗?",
"page-upgrades-help-desc": "有很多机会可以参与以太坊的升级,帮助测试或者获得奖励。",
"page-upgrades-index-staking": "质押来了",
@@ -65,8 +75,8 @@
"page-upgrades-question-1-title": "升级什么时候上线?",
"page-upgrades-question-1-desc": "以太坊正在逐步升级;这些升级项目有不同的上线日期。",
"page-upgrades-question-2-title": "信标链是一个独立的区块链吗?",
- "page-upgrades-question-2-desc": "将这次升级视为一条单独的区块链并不准确。",
- "page-upgrades-question-3-answer-2a": "合并规范已经最终确定,旨在对去中心化应用程序开发者带来最小的影响。",
+ "page-upgrades-question-2-desc": "是的。用来升级以太坊主网的并行权益证明区块链称为信标链。现在只有一条区块链,由最初的以太坊区块链和信标链合并而成。",
+ "page-upgrades-question-3-answer-2a": "合并对去中心化应用程序开发者的影响甚微 — 他们仍以相同的方式与以太坊交互。",
"page-upgrades-question-3-answer-2a-link": "合并与去中心化应用程序开发者",
"page-upgrades-question-3-answer-2b": "分片计划仍在开发中,但在设计时将考虑二层网络卷叠。",
"page-upgrades-layer-2-rollups": "更多关于二层网络卷叠的信息",
@@ -74,24 +84,22 @@
"page-upgrades-question-3-desc": "您现在不需要为这些升级做任何准备。",
"page-upgrades-question-3-title": "针对这些升级,我需要做什么准备?",
"page-upgrades-question-4-answer-1": "目前,在你发送交易或使用去中心化应用程序时,使用的是执行层,也称为主网。",
- "page-upgrades-question-4-answer-2": "主网在合并前都将正常运行。",
- "page-upgrades-question-4-answer-3": "合并后,验证者将会通过权益证明的方式保证整个网络的安全。",
+ "page-upgrades-question-4-answer-3": "合并后,验证者通过权益证明机制保护整个网络的安全。",
"page-upgrades-question-4-answer-6": "任何人都可以通过质押他们的以太币成为一个验证者。",
"page-upgrades-question-4-answer-7": "关于质押的更多信息",
- "page-upgrades-question-4-answer-8": "信标链和分片升级不会干扰执行层(主网),因为它们是单独构建的。",
"page-upgrades-question-4-title": "什么是执行层?",
- "page-upgrades-question-4-desc": "您现在交易所使用的以太坊主网,以前称为“以太坊 1.0”。但这一词将被淘汰,取而代之的是“执行层”。",
- "page-upgrades-question-5-answer-1": "要想成为该网络的一个全功能验证者,您需要质押 32 个以太币。如果您没有那么多以太币,或不想质押那么多,您可以参与质押池。这些质押池能帮助您进行少量质押并获得相应份额的奖励。",
+ "page-upgrades-question-4-desc": "合并前,以太坊区块链有时称为“以太坊 1”。此术语逐渐被“执行层”所取代。",
+ "page-upgrades-question-5-answer-1": "要想成为网络上的验证者,需要质押 32 个以太币。如果你没有 32 个以太币,或者不想质押那么多,可以加入质押池。质押池允许你进行少量质押并获得相应份额的奖励。",
"page-upgrades-question-5-desc": "您需要使用质押启动板或者加入一个质押池。",
"page-upgrades-question-5-title": "如何质押?",
"page-upgrades-question-6-answer-3": "以太坊基金会的 Danny Ryan 负责定期更新社区信息:",
"page-upgrades-question-6-answer-4": "ConsenSys 的 Ben Edgington 每周会提供一份关于以太坊升级的简报:",
"page-upgrades-question-6-answer-5": "您也可以访问 ethresear.ch,参与以太坊研发的讨论。",
"page-upgrades-question-6-title": "我需要对我的去中心化应用程序做什么?",
- "page-upgrades-question-6-desc": "合并在设计时,有一个目标是尽量减少对去中心化应用程序开发者的影响,但有几件事需要注意。",
- "page-upgrades-question-6-answer-1": "合并带来的一些变化可能会影响某些类型的应用程序。这些变化包括区块结构和时间、一些操作码的变化、链上随机性的来源和时段最终确定性的概念。",
+ "page-upgrades-question-6-desc": "合并旨在对去中心化应用程序开发者产生最小的影响,便仍有一些细微变化值得注意。",
+ "page-upgrades-question-6-answer-1": "熟悉合并前以太坊的去中心化应用程序开发者应该注意到一些变化。这些变化包括区块结构和时序、一些操作码的变化,链上随机性的来源和时段最终确定的概念。",
"page-upgrades-question-6-answer-1-link": "合并如何影响以太坊的应用层",
- "page-upgrades-question-6-answer-2": "大多数应用程序不会受到影响,但我们建议开发者随时了解合并的最新消息。",
+ "page-upgrades-question-6-answer-2": "应用程序几乎完全未受影响。",
"page-upgrades-question-7-desc": "社区中很多不同的团队都在为以太坊的升级而努力。",
"page-upgrades-question-7-lighthouse": "Lighthouse",
"page-upgrades-question-7-lighthouse-lang": "(Rust 语言实现)",
@@ -108,7 +116,7 @@
"page-upgrades-question-7-clients": "了解关于以太坊客户端的更多信息",
"page-upgrades-question-8-answer-1": "以太坊升级将帮助以太坊以去中心化的方式进行扩容,同时保证安全性,并提升可持续发展的能力。",
"page-upgrades-question-8-answer-2": "可能最显著的问题是,以太坊需要具有每秒处理超过 15-45 笔交易的能力。但是以太坊升级同时还能解决以太坊当前面临的一些其它问题。",
- "page-upgrades-question-8-answer-3": "对以太坊网络的需求如此之高,以至于以太坊的使用成本高昂,让用户无法使用。面对以太坊的规模以及他们的计算机必须处理的海量数据,网络上的节点苦苦挣扎。支撑以太坊安全性和去中心化的原有算法消耗大量能源,必须要更环保。",
+ "page-upgrades-question-8-answer-3": "高需求时期的网络使得以太坊的使用成本高昂。面对以太坊的规模和它们的计算机必须处理的大量数据,网络中的节点苦苦挣扎。支撑以太坊安全和去中心化的原始算法消耗大量能源,该算法需要更加环保。",
"page-upgrades-question-8-answer-4": "以太坊的路线图上呈现了从 2015 年起正在发生的大量变化。但是当前环境使得升级变得更加紧迫。",
"page-upgrades-question-8-answer-6": "探索以太坊的愿景",
"page-upgrades-question-8-desc": "我们当前正在使用的以太坊需要为终端用户和网络参与者提供更好的体验。",
@@ -128,14 +136,14 @@
"page-upgrades-question-10-answer-1-link": "查看相关升级",
"page-upgrades-question-10-answer-2": "如果您已经关注了相关讨论,这里呈现了相关升级将如何符合技术路线图以及它们如何变化的一些情况。",
"page-upgrades-question-10-answer-3": "阶段 0 描述了如何上线信标链的相关工作。",
- "page-upgrades-question-10-answer-5": "阶段 1 最初的重点是实施分片链,但优先顺序已转向“合并”,也就是计划中的下一个升级。",
- "page-upgrades-question-10-answer-6": "第 1.5 阶段最初计划在分片实施完成后进行,届时主网将作为最后一个分片添加到信标链上。然而,随着卷叠技术的进步,以太坊社区加快了工作量证明向权益证明的过渡。主网将“合并”到信标链上并继续作为以太坊的执行层。这将是向更环保的以太坊迈出的重要一步。",
- "page-upgrades-question-10-answer-7": "第 2 阶段的计划一直聚集于深入的研究和讨论。由于合并计划在分片之前进行以及二层网络解决方案的进步,目标已经转变为提供更简化的数据分片,以最大限度地提高卷叠效率。当前,二层网络实现了扩展交易扩行的能力,而分片将允许以低廉和可扩展的方式存储一层网络上这类数据的证明。",
+ "page-upgrades-question-10-answer-5": "第一阶段最初侧重于实现分片链,但后来首要任务改为 2022 年 9 月 15 日启动的合并。",
+ "page-upgrades-question-10-answer-6": "阶段 1.5 最初计划在主网作为最后一个分片链添加到信标链后继续跟进分片实施。然而,随着卷叠技术发展,以太坊社区加快了从工作量证明向权益证明的过渡。",
+ "page-upgrades-question-10-answer-7": "第二阶段的计划一直是深入研究和讨论的焦点。随着合并的完成以及二层网络解决方案的进步,目标已经变成提供一种更简洁的数据分片形式,从而最大限度地提高卷叠效率。目前二层网络支持扩展交易执行的能力,而分片将允许以低廉和可扩展的方式在一层网络存储这些数据的证明。",
"page-upgrades-question-10-answer-8": "关于以卷叠为中心的路线图的更多信息",
"page-upgrades-question-11-title": "我可以购买以太坊 2 吗?",
- "page-upgrades-question-11-desc": "不行,没有以太坊 2 代币,并且你的以太币在合并后不会有变化。",
- "page-upgrades-question-11-answer-1": "推动以太坊 2 重命名背后的因素之一是一种普遍的误解,即以太币持有者在“以太坊 2.0”之后必须迁移他们的以太币。这从来都不是真的。这是",
- "page-upgrades-question-11-answer-2": "骗子惯用的伎俩。",
+ "page-upgrades-question-11-desc": "不能,没有以太坊 2 代币,合并后你的以太币没有改变。",
+ "page-upgrades-question-11-answer-1": "推动以太坊 2 重命名背后的因素之一是一种普遍的误解,即以太币持有者需要在合并或任何其他升级后将他们的以太币迁移到“以太坊 2.0”。这不是真的,从来都不是真的。",
+ "page-upgrades-question-11-answer-2": "这种混乱通常被骗子利用。",
"page-upgrades-question-title": "常见问题",
"page-upgrades-question3-answer-1": "以太币持有者不需要做任何事情。您的以太币不需要进行兑换或者升级。但可以预料的是,会有一些骗子告诉您需要这么做,请千万小心。",
"page-upgrades-scalable": "更可扩展",
@@ -146,15 +154,15 @@
"page-upgrades-shard-date": "分片将在合并完成后于 2023 年至 2024 年的某个时间分多个阶段进行。",
"page-upgrades-shard-desc": "分片将扩展以太坊的数据存储能力,并与二层网络协调工作以扩展吞吐量并降低网络费用。分片将分多个阶段推出。",
"page-upgrades-shard-estimate": "预计上线时间:2023-2024",
- "page-upgrades-shard-lower": "更多关于分片的信息",
+ "page-upgrades-shard-lower": "有关分片的更多信息",
"page-upgrades-shard-title": "分片",
"page-upgrades-stay-up-to-date": "新闻",
"page-upgrades-stay-up-to-date-desc": "获得研究员和开发者关于以太坊升级工作的最新信息。",
- "page-upgrades-sustainable-desc": "以太坊需要为保护环境变得更好。现在使用的技术消耗了太多的计算能力和能源。",
+ "page-upgrades-sustainable-desc": "不久之前以太坊还是能源密集型。过渡到权益证明让以太网能源消耗减少了 99.9% 以上。",
"page-upgrades-take-part": "参与研究",
"page-upgrades-take-part-desc": "以太坊的研究者和爱好者聚在这里讨论研究成果,包括和升级相关的任何问题。",
"page-upgrades-the-upgrades": "以太坊升级",
- "page-upgrades-the-upgrades-desc": "以太坊包括一系列提升以太坊可扩展性、安全性和可持续发展能力的升级。虽然每一项升级都是并行开发的,但是它们之间存在着依赖关系,从而决定了它们的部署顺序。",
+ "page-upgrades-the-upgrades-desc": "以太坊的升级旨在提高网络的可扩展性、安全性和可持续性。以太坊最近在安全性和可持续性方面进行了一些重大升级,未来还会有更多升级,特别是在可扩展性方面。",
"page-upgrades-unofficial-roadmap": "这不是官方的路线图。这是我们从正在发生的视角汇总的信息。但是技术无时无刻不在变化。因此请不要把它看做一份承诺。",
"page-upgrades-upgrade-desc": "依然是那个我们熟悉和深爱的以太坊,只是更可扩展、更安全、更可持续。",
"page-upgrades-upgrades": "以太坊升级",
@@ -170,14 +178,14 @@
"page-upgrades-vision-desc": "为了将以太坊带入人们的主流视野以造福全人类,我们需要让以太坊变得更可扩展、更安全和更可持续。",
"page-upgrades-vision-upper": "以太坊愿景",
"page-upgrades-what-happened-to-eth2-title": "“以太坊 2”发生了什么?",
- "page-upgrades-what-happened-to-eth2-1": "为了准备合并,正在逐步取消“以太坊 2”一词。",
+ "page-upgrades-what-happened-to-eth2-1": "“合并”前,术语“以太坊 2”经常使用,但现在它正在逐步被更精确的术语取代。",
"page-upgrades-what-happened-to-eth2-1-more": "关于合并的更多信息。",
- "page-upgrades-what-happened-to-eth2-2": "在将“以太坊 1”和“以太坊 2”合并为一个链之后,将不再有两个不同的以太坊网络;只有以太坊。",
+ "page-upgrades-what-happened-to-eth2-2": "在合并了“以太坊 1”和“以太坊 2”后,不再有两条不同的以太坊区块链,而是只有一个以太坊。",
"page-upgrades-what-happened-to-eth2-3": "为了减少混乱,社区更新了这些条款:",
"page-upgrades-what-happened-to-eth2-3-1": "“以太坊 1”现在是处理交易和执行的“执行层”。",
"page-upgrades-what-happened-to-eth2-3-2": "“以太坊 2”现在是处理权益证明共识的“共识层”。",
- "page-upgrades-what-happened-to-eth2-4": "这些术语更新只是改变了命名惯例;这并没有改变以太坊的目标或路线图。",
- "page-upgrades-what-happened-to-eth2-5": "了解更多关于“以太坊 2”重命名的信息",
+ "page-upgrades-what-happened-to-eth2-4": "这些术语的更新仅会改变命名约定;不会改变以太坊的目标及路线图。",
+ "page-upgrades-what-happened-to-eth2-5": "了解关于“以太坊 2”重命名的更多信息",
"page-upgrades-why-cant-we-just-use-eth2-title": "为什么我们不就使用以太坊 2?",
"page-upgrades-why-cant-we-just-use-eth2-mental-models-title": "心理模型",
"page-upgrades-why-cant-we-just-use-eth2-mental-models-description": "以太坊 2 品牌的一个主要问题是为以太坊新用户创造了一种破碎的心理模型。他们会凭直觉认为以太坊 1 在前,以太坊 2 在后。或者以太坊 2 问世后,以太坊 1 就不复存在了。但这两种想法都不对。弃用术语“以太坊 2”,将来的用户就不会有这种心理模型的困扰。",
diff --git a/src/intl/zh/page-upgrades-vision.json b/src/intl/zh/page-upgrades-vision.json
index 4ecabba93b4..8776c81cae5 100644
--- a/src/intl/zh/page-upgrades-vision.json
+++ b/src/intl/zh/page-upgrades-vision.json
@@ -26,7 +26,7 @@
"page-upgrades-vision-security-desc-10": "质押还意味着你无需投资购买高性能硬件即可直接参与共识。这样,应该会促使更多的人成为验证者,提升网络的去中心化并减少攻击面。",
"page-upgrades-vision-security-staking": "质押以太币",
"page-upgrades-vision-security-validator": "您可以通过质押您的以太币成为一个验证者。",
- "page-upgrades-vision-shard-upgrade": "更多关于分片的信息",
+ "page-upgrades-vision-shard-upgrade": "有关分片的更多信息",
"page-upgrades-vision-staking-lower": "关于质押的更多信息",
"page-upgrades-vision-subtitle": "以太坊将持续增长,直到造福全人类。",
"page-upgrades-vision-sustainability": "可持续发展",
diff --git a/src/intl/zh/page-upgrades.json b/src/intl/zh/page-upgrades.json
index 2eaab3f0264..fb923260a9b 100644
--- a/src/intl/zh/page-upgrades.json
+++ b/src/intl/zh/page-upgrades.json
@@ -2,7 +2,7 @@
"page-upgrades-merge-infographic-el": "以太坊状态:交易、应用程序、合约、余额",
"page-upgrades-merge-infographic-alt-text": "信息图说明了在工作量证明到权益证明过渡期间,信标链如何合并到以太坊执行层。",
"page-upgrades-beacon-date": "已上线!",
- "page-upgrades-merge-date": "~2022 年第三季度/第四季度",
+ "page-upgrades-merge-date": "2022 年 9 月",
"page-upgrades-shards-date": "~2023",
"page-upgrades-merge-banner-intro": "合并即将到来,以太坊亦随之变化。",
"page-upgrades-merge-banner-content-outdated": "本页面上与这些变化相关的部分内容已经过时,更新即将进行。",
diff --git a/src/intl/zh/template-usecase.json b/src/intl/zh/template-usecase.json
index 0852a972df7..2b82a92717b 100644
--- a/src/intl/zh/template-usecase.json
+++ b/src/intl/zh/template-usecase.json
@@ -1,7 +1,7 @@
{
"template-usecase-dropdown-defi": "去中心化金融 (DeFi)",
"template-usecase-dropdown-nft": "非同质化代币 (NFT)",
- "template-usecase-dropdown-dao": "去中心化自治组织",
+ "template-usecase-dropdown-dao": "去中心化自治组织 (DAO)",
"template-usecase-dropdown-social-networks": "去中心化社交网络",
"template-usecase-dropdown-identity": "去中心化身份",
"template-usecase-dropdown": "以太坊使用案例",
diff --git a/src/pages/staking/index.tsx b/src/pages/staking/index.tsx
index a8287d4ca85..9fbf8b4ed84 100644
--- a/src/pages/staking/index.tsx
+++ b/src/pages/staking/index.tsx
@@ -620,10 +620,23 @@ const StakingPage = ({
+
+
+
+
+
+
+
+
+
+
+
@@ -713,6 +726,11 @@ const StakingPage = ({
+
+
+
+
+
diff --git a/src/scripts/crowdin-import.ts b/src/scripts/crowdin-import.ts
index e7c666469c6..c8b10310ea2 100644
--- a/src/scripts/crowdin-import.ts
+++ b/src/scripts/crowdin-import.ts
@@ -80,7 +80,7 @@ const USER_SELECTION: UserSelectionObject = {
uk: [],
uz: [],
vi: [],
- zh: [],
+ zh: [3, 4, 5, 6, 7, 8, 9, 10, 13, 16, 18, 19],
"zh-tw": [],
}