diff --git a/public/content/translations/it/bridges/index.md b/public/content/translations/it/bridges/index.md index 2bfc863783d..4a25cd173a7 100644 --- a/public/content/translations/it/bridges/index.md +++ b/public/content/translations/it/bridges/index.md @@ -63,7 +63,7 @@ Diciamo che vuoi possedere Bitcoin (BTC) nativi, ma hai fondi soltanto sulla Ret - Inoltre, puoi fare tutto quanto descritto sopra, usando una [borsa centralizzata](/get-eth/). Tuttavia, a meno che i tuoi fondi non siano già su una borsa, comporterebbe diversi passaggi, e sarebbe più conveniente usare un ponte. + Inoltre, puoi fare tutto quanto descritto sopra, usando una [borsa centralizzata](/get-eth). Tuttavia, a meno che i tuoi fondi non siano già su una borsa, comporterebbe diversi passaggi, e sarebbe più conveniente usare un ponte. diff --git a/public/content/translations/it/community/grants/index.md b/public/content/translations/it/community/grants/index.md index 1312d04005a..2d6d26e7ac0 100644 --- a/public/content/translations/it/community/grants/index.md +++ b/public/content/translations/it/community/grants/index.md @@ -20,7 +20,7 @@ Questi programmi supportano il grande ecosistema di Ethereum offrendo sovvenzion - [Sovvenzioni accademiche](https://esp.ethereum.foundation/academic-grants) - _Sovvenzioni per sostenere il lavoro accademico correlato a Ethereum_ - [Grantfarm di Blockworks](https://blockworks.co/grants/programs) - _Blockworks ha compilato una directory esaustiva di tutte le sovvenzioni, RDP e bug bounty._ -## Programmi per progetti specifici {#project-specific} +## Programmi per progetti specifici {#grant-list-aggregators} Questi progetti hanno creato le proprie sovvenzioni per progetti volti a sviluppare e sperimentare la propria tecnologia. @@ -35,13 +35,13 @@ Questi progetti hanno creato le proprie sovvenzioni per progetti volti a svilupp - [The Graph](https://thegraph.com/ecosystem/grants/): _Ecosistema di [The Graph](https://thegraph.com/)_ - [Programma di sovvenzioni di Uniswap](https://www.uniswapfoundation.org/approach): _community di [Uniswap](https://uniswap.org/)_ -## Finanziamento quadratico {#quadratic-funding} +## Finanziamento quadratico {#comprehensive-directories} Le radici dell'open source di Ethereum hanno portato alla crescita di un nuovo modello interessante di raccolta fondi: il finanziamento quadratico. Questo finanziamento ha il potenziale di migliorare il modo in cui finanzieremo tutti i tipi di beni pubblici in futuro. Il finanziamento quadratico assicura che i progetti che riceveranno più finanziamenti siano quelli con la domanda più esclusiva. In sintesi, i progetti che cercano di migliorare la vita del maggior numero di persone. [Maggiori informazioni sul finanziamento quadratico.](/defi/#quadratic-funding) - [Gitcoin](https://gitcoin.co/grants) - [clr.fund](https://clr.fund/) -## Lavora su Ethereum {#work-in-ethereum} +## Lavora su Ethereum {#for-developers-and-builders} Non sei pronto per iniziare il tuo progetto? Ci sono centinaia di aziende che cercano attivamente persone appassionate con cui lavorare e contribuire all'ecosistema Ethereum. Cerchi maggiori informazioni? [Dai un'occhiata ai lavori relativi a Ethereum](/community/get-involved/#ethereum-jobs) diff --git a/public/content/translations/it/community/online/index.md b/public/content/translations/it/community/online/index.md index 6f38b657f11..8a75d8f69e7 100644 --- a/public/content/translations/it/community/online/index.md +++ b/public/content/translations/it/community/online/index.md @@ -71,5 +71,5 @@ Se credi che una community dovrebbe essere aggiunta o rimossa secondo queste lin Maggiori informazioni sulle DAO - + diff --git a/public/content/translations/it/community/research/index.md b/public/content/translations/it/community/research/index.md index 61e2c88901e..ce50934e2d4 100644 --- a/public/content/translations/it/community/research/index.md +++ b/public/content/translations/it/community/research/index.md @@ -242,7 +242,7 @@ I mercati degli spazi di blocco governano l'inclusione delle transazioni dell'ut - [Progettazione del meccanismo delle commissioni sulle transazioni per la blockchain di Ethereum: un'analisi economica di EIP-1559 (Tim Roughgarden, 2020)](https://timroughgarden.org/papers/eip1559.pdf) - [Simulazioni di EIP-1559 (Gruppo di incentivi robusti)](https://ethereum.github.io/abm1559) - [Economia dei rollup dai primi principi](https://barnabe.substack.com/p/understanding-rollup-economics-from?utm_source=url) -- [Flash Boys 2.0: frontrunning, riordinamento delle transazioni e instabilità del consenso nelle borse decentralizzate] (https://arxiv.org/abs/1904.05234) +- [Flash Boys 2.0: frontrunning, riordinamento delle transazioni e instabilità del consenso nelle borse decentralizzate](https://arxiv.org/abs/1904.05234) #### Ricerca recente {#recent-research-10} diff --git a/public/content/translations/it/contributing/design/adding-design-resources/index.md b/public/content/translations/it/contributing/design/adding-design-resources/index.md index f696b61a581..e5cf27c42f7 100644 --- a/public/content/translations/it/contributing/design/adding-design-resources/index.md +++ b/public/content/translations/it/contributing/design/adding-design-resources/index.md @@ -1,6 +1,6 @@ --- title: Aggiungere risorse di progettazione -description: Linee guida e requisiti per assicurare la qualità dei materiali di progettazione su ethereum.org +description: "Linee guida e requisiti per assicurare la qualità dei materiali di progettazione su ethereum.org" lang: it --- diff --git a/public/content/translations/it/contributing/index.md b/public/content/translations/it/contributing/index.md index bc5f4e1f2b4..e38f0602fb1 100644 --- a/public/content/translations/it/contributing/index.md +++ b/public/content/translations/it/contributing/index.md @@ -4,7 +4,7 @@ description: Scopri i vari modi in cui puoi contribuire a ethereum.org lang: it --- -# Contribuire a ethereum.org {#contributing-to-ethereumorg} +# Contribuire a ethereum.org {#contributing-to-ethereumorg} Ethereum.org è un progetto open source con oltre **12000** collaboratori che aiutano a tradurre, scrivere, progettare e mantenere il sito web. @@ -90,6 +90,7 @@ Se il tuo contributo viene aggiunto a ethereum.org, avrai una possibilità di ri [Maggiori informazioni sui OAT](https://help.galxe.com/en/articles/9645630-create-quest-rewards#h_1c5d63ba03) ### Come reclamare + 1. Unisciti al nostro [server Discord](https://discord.gg/ethereum-org). 2. Incolla un link ai tuoi contributi nel canale `#🥇 | proof-of-contribution`. 3. Attendi che un membro del nostro team ti invii un collegamento al tuo OAT. diff --git a/public/content/translations/it/dao/index.md b/public/content/translations/it/dao/index.md index 4c3071f0bf0..77019dfb643 100644 --- a/public/content/translations/it/dao/index.md +++ b/public/content/translations/it/dao/index.md @@ -1,11 +1,11 @@ --- -title: Cos'è una DAO? -metaTitle: Cos'è una DAO? | Organizzazione autonoma decentralizzata +title: "Cos'è una DAO?" +metaTitle: "Cos'è una DAO? | Organizzazione autonoma decentralizzata" description: Una panoramica delle DAO su Ethereum lang: it template: use-cases emoji: ":handshake:" -sidebarDepth: 3 +sidebarDepth: 2 image: /images/use-cases/dao-2.png alt: Rappresentazione di una votazione DAO su una proposta. summaryPoint1: Community posseduta dai membri, prive di leadership centralizzata. @@ -19,7 +19,7 @@ Una DAO è un'organizzazione posseduta collettivamente che opera per realizzare Le DAO ci consentono di lavorare con persone con la stessa mentalità provenienti da tutto il mondo, senza doversi fidare di un capo benevolo, per la gestione di fondi od operazioni. Non esiste alcun CEO che possa spendere i fondi secondo i propri capricci, o 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. -Contengono delle tesoriere integrate, a cui nessuno ha l'autorità di accedere senza l'approvazione del gruppo. Le decisioni sono governate da proposte e votazioni, per assicurarsi che tutti nell'organizzazione abbiano voce in capitolo, e che tutto si verifichi in modo trasparente [sulla catena](/glossary/#on-chain). +Contengono delle tesoriere integrate, a cui nessuno ha l'autorità di accedere senza l'approvazione del gruppo. Le decisioni sono governate da proposte e votazioni, per assicurarsi che tutti nell'organizzazione abbiano voce in capitolo, e che tutto si verifichi in modo trasparente [sulla catena](/glossary/#onchain). ## Perché abbiamo bisogno delle DAO? {#why-dao} @@ -70,9 +70,7 @@ Ci sono molte considerazioni da fare governando una DAO, ad esempio, come funzio 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. -#### Un celebre esempio {#governance-example} - -[ENS](https://claim.ens.domains/delegate-ranking) – I titolari di ENS possono delegare i propri voti a membri impegnati della community perché li rappresentino. +#### Un celebre esempio {#governance-example}[ENS](https://claim.ens.domains/delegate-ranking) – I titolari di ENS possono delegare i propri voti a membri impegnati della community perché li rappresentino. ### Governance automatica delle transazioni {#governance-example} diff --git a/public/content/translations/it/decentralized-identity/index.md b/public/content/translations/it/decentralized-identity/index.md index 75457fe89fd..e57da4d582a 100644 --- a/public/content/translations/it/decentralized-identity/index.md +++ b/public/content/translations/it/decentralized-identity/index.md @@ -1,13 +1,13 @@ --- -title: Identità decentralizzata -description: Cos'è l'identità decentralizzata e perché è importante? +title: "Identità decentralizzata" +description: "Cos'è l'identità decentralizzata e perché è importante?" lang: it template: use-cases emoji: ":id:" sidebarDepth: 2 image: /images/eth-gif-cat.png -summaryPoint1: I sistemi di identità tradizionali hanno centralizzato l'emissione, manutenzione e controllo dei tuoi identificativi. -summaryPoint2: L'identità decentralizzata rimuove la dipendenza da terze parti centralizzate. +summaryPoint1: "I sistemi di identità tradizionali hanno centralizzato l'emissione, manutenzione e controllo dei tuoi identificativi." +summaryPoint2: "L'identità decentralizzata rimuove la dipendenza da terze parti centralizzate." summaryPoint3: Grazie alle cripto, gli utenti, ora, hanno nuovamente gli strumenti per emettere, detenere e controllare i propri identificativi e attestazioni. --- @@ -75,13 +75,13 @@ L'identità decentralizzata può aiutare a creare delle community online prive d Le applicazioni di concessione di sovvenzioni che utilizzano il [voto quadratico](/glossary/#quadratic-voting) sono vulnerabili agli [attacchi Sybil](/glossary/#sybil-attack) poiché il valore di una sovvenzione viene incrementato all'aumentare delle persone che votano, incentivando gli utenti a dividere i propri contributi tra più identità. Le identità decentralizzate aiutano a prevenirli, incrementando l'onere su ogni partecipante, per dimostrare che siano realmente umani, sebbene spesso senza dover rilevare informazioni private specifiche. -## Cosa sono le attestazioni? {#what-are-attestations} +## Cosa sono le attestazioni? {#national-and-government-id} Un'attestazione, è una dichiarazione effettuata da un'entità, in merito a un'altra entità. Se vivi in Italia, la patente di guida rilasciata dal Dipartimento dei Trasporti Terrestri (un'entità), attesta che tu (un'altra entità), sei legalmente autorizzato a guidare un'auto. Le attestazioni sono differenti dagli identificativi. Un'attestazione _contiene_ degli identificativi, riferiti a un'identità in particolare, ed effettua una dichiarazione su di un attributo, relativo a tale identità. Quindi, la tua patente di guida contiene degli identificativi (nome, data di nascita, indirizzo), ma è anche l'attestazione sul tuo diritto legale alla guida. -### Cosa sono gli identificativi decentralizzati? {#what-are-decentralized-identifiers} +### Cosa sono gli identificativi decentralizzati? {#case-study-bhutan-ndi} Gli identificativi tradizionali, come il tuo nome legale o l'indirizzo email, si affidano a terze parti: governi e fornitori di email. Gli identificativi decentralizzati (DID), sono differenti: non sono emessi, gestiti o controllati da alcuna entità centrale. @@ -89,21 +89,21 @@ Gli identificativi decentralizzati sono emessi, detenuti e controllati dagli ind Gli identificativi decentralizzati sono memorizzati su libri mastri distribuiti ([blockchain](/glossary/#blockchain)) o su [reti peer-to-peer](/glossary/#peer-to-peer-network). Ciò rende i DID [unici a livello globale, risolvibili con elevata disponibilità e crittograficamente verificabili](https://w3c-ccg.github.io/did-primer/). Un identificativo decentralizzato può essere associato a diverse entità, tra cui persone, organizzazioni, o istituzioni governative. -## Cosa rende possibili gli identificativi decentralizzati? {#what-makes-decentralized-identifiers-possible} +## Cosa rende possibili gli identificativi decentralizzati? {#case-study-buenos-aires-quarkid} -### 1. Crittografia a chiave pubblica {#public-key-cryptography} +### 1. Crittografia a chiave pubblica {#what-are-attestations} La crittografia a chiave pubblica è una misura di sicurezza informatica che genera una [chiave pubblica](/glossary/#public-key) e una [chiave privata](/glossary/#private-key) per un'entità. La [crittografia](/glossary/#cryptography) a chiave pubblica è utilizzata nelle reti blockchain per autenticare le identità degli utenti e dimostrare la proprietà delle risorse digitali. Alcuni identificativi decentralizzati, come un conto di Ethereum, includono chiavi pubbliche e private. La chiave pubblica identifica chi controlla il conto, mentre le chiavi private possono firmare e decrittografare i messaggi per tale conto. La crittografia a chiave pubblica fornisce le prove necessarie per autenticare le entità, oltre a prevenire i furti d'identità e l'utilizzo di false identità, utilizzando le [firme crittografiche](https://andersbrownworth.com/blockchain/public-private-keys/) per verificare tutte le dichiarazioni. -### 2. Datastore decentralizzati {#decentralized-datastores} +### 2. Datastore decentralizzati {#what-are-decentralized-identifiers} Una blockchain funge da registro di dati verificabili: una repository di informazioni aperta, affidabile e decentralizzata. L'esistenza delle blockchain pubbliche elimina l'esigenza di memorizzare gli identificativi nei registri centralizzati. Se qualcuno deve confermare la validità di un identificativo decentralizzato, può consultare la chiave pubblica associata sulla blockchain. Ciò differisce dagli identificativi tradizionali, che richiedono l'autenticazione da parte di terzi. -## Come fanno le attestazioni e gli identificativi decentralizzati a consentire l'identità decentralizzata? {#how-decentralized-identifiers-and-attestations-enable-decentralized-identity} +## Come fanno le attestazioni e gli identificativi decentralizzati a consentire l'identità decentralizzata? {#what-makes-decentralized-identifiers-possible} L'identità decentralizzata è l'idea che le informazioni sull'identità dovrebbero essere controllate dall'individuo, private e portatili, con attestazioni e identificativi decentralizzati come blocchi di costruzione principali. @@ -115,11 +115,11 @@ Gli identificativi decentralizzati sono il motivo per cui le attestazioni sono c Inoltre, gli identificativi decentralizzati sono fondamentali per la protezione della privacy delle informazioni personali, tramite l'identità decentralizzata. Ad esempio, se un individuo invia la prova di un'attestazione (una patente di guida), la parte che verifica non necessita di controllare la validità delle informazioni nella prova. Invece, chi verifica necessita soltanto delle garanzie crittografiche dell'autenticità dell'attestazione, e dell'identità dell'organizzazione emittente, per determinare se la prova sia valida. -## Tipi di attestazioni nell'identità decentralizzata {#types-of-attestations-in-decentralized-identity} +## Tipi di attestazioni nell'identità decentralizzata {#public-key-cryptography} Le modalità di memorizzazione e recupero delle informazioni sull'attestazione, nell'ecosistema delle identità basato su Ethereum, differiscono dalla gestione tradizionale delle identità. Ecco una panoramica dei vari approcci all'emissione, memorizzazione e verifica delle attestazioni, nei sistemi di identità decentralizzati: -### Attestazioni esterne alla catena {#off-chain-attestations} +### Attestazioni esterne alla catena {#decentralized-datastores} Un timore per la memorizzazione su catena è che potrebbero contenere informazioni che gli individui desiderano mantenere private. La natura pubblica della blockchain di Ethereum, rende poco attraente la memorizzazione di tali attestazioni. @@ -131,13 +131,13 @@ Ecco uno scenario ipotetico per spiegare le attestazioni esterne alla catena: 2. Bob si candida per un lavoro e desidera dimostrare le proprie qualifiche accademiche a un datore di lavoro, quindi, condivide l'attestazione dal proprio portafoglio mobile. L'azienda (verificatore), può quindi confermare la validità dell'attestazione, verificando il DID dell'emittente (cioè, la sua chiave pubblica su Ethereum). -### Attestazioni esterne alla catena con accesso persistente {#offchain-attestations-with-persistent-access} +### Attestazioni esterne alla catena con accesso persistente {#how-decentralized-identifiers-and-attestations-enable-decentralized-identity} In questo modo, le attestazioni sono trasformate in file JSON e memorizzate all'esterno della catena (idealmente, su una piattaforma di [archiviazione decentralizzata su cloud](/developers/docs/storage/), come IPFS o Swarm). Tuttavia, un [hash](/glossary/#hash) del file JSON è memorizzato sulla catena e collegato a un DID, tramite il registro sulla catena. Il DID associato potrebbe essere quello dell'emittente dell'attestazione, o del destinatario. Tale approccio consente alle attestazioni di ottenere persistenza basata sulla blockchain, mantenendo le informazioni delle dichiarazioni, crittografate e verificabili. Inoltre, consente la divulgazione selettiva, poiché il titolare della chiave privata può decrittografare le informazioni. -### Attestazioni sulla catena {#onchain-attestations} +### Attestazioni sulla catena {#types-of-attestations-in-decentralized-identity} Le attestazioni sulla catena sono conservate nei [contratti intelligenti](/glossary/#smart-contract) sulla blockchain di Ethereum. Il contratto intelligente (che agisce da registro), mapperà un'attestazione a un identificativo decentralizzato corrispondente sulla catena (una chiave pubblica). @@ -149,11 +149,11 @@ Ecco un esempio per dimostrare il funzionamento in pratica delle attestazioni su 3. Il contratto intelligente che vende le quote, può verificare il contratto del registro per le identità degli acquirenti verificati, rendendo possibile la determinazione di chi possa acquistare le quote e chi no. -### Token vincolati e identità {#soulbound} +### Token vincolati e identità {#offchain-attestations} I [token vincolati](https://vitalik.eth.limo/general/2022/01/26/soulbound.html) ([NFT non trasferibili](/glossary/#nft)) potrebbero essere utilizzati per raccogliere informazioni univoche per un portafoglio specifico. Ciò, effettivamente, crea un'identità univoca sulla catena, vincolata a un indirizzo di Ethereum in particolare, che potrebbe includere i token rappresentanti obiettivi (ad esempio, concludere un certo corso online o superare una soglia di punteggio in un gioco), o la partecipazione della community. -## Utilizzare l'identità decentralizzata {#use-decentralized-identity} +## Utilizzare l'identità decentralizzata {#offchain-attestations-with-persistent-access} Esistono molti progetti ambiziosi che utilizzano Ethereum come base per le soluzioni di identità decentralizzata: @@ -165,9 +165,9 @@ Esistono molti progetti ambiziosi che utilizzano Ethereum come base per le soluz - **[walt.id](https://walt.id)**: _Infrastruttura open source di identità decentralizzata e portafoglio che consente a sviluppatori e organizzazioni di sfruttare l'identità auto-sovrana e gli NFT/SBT._ - **[Veramo](https://veramo.io/)**: _Un framework di JavaScript che facilita per tutti l'utilizzo di dati verificabili crittograficamente nelle proprie applicazioni._ -## Lettura consigliate {#further-reading} +## Lettura consigliate {#onchain-attestations} -### Articoli {#articles} +### Articoli {#soulbound} - [Casi d'Uso della Blockchain: La Blockchain nell'Identità Digitale](https://consensys.net/blockchain-use-cases/digital-identity/) — _ConsenSys_ - [Cos'è l'ERC-725 di Ethereum? Gestione dell'Identità Sovrana Personale sulla Blockchain](https://cryptoslate.com/what-is-erc725-self-sovereign-identity-management-on-the-blockchain/) — _Sam Town_ @@ -175,7 +175,7 @@ Esistono molti progetti ambiziosi che utilizzano Ethereum come base per le soluz - [Cos'è l'Identità Decentralizzata e Perché Dovrebbe Interessarti?](https://web3.hashnode.com/what-is-decentralized-identity) — _Emmanuel Awosika_ - [Introduzione all'Identità decentralizzata](https://walt.id/white-paper/digital-identity) - _Dominik Beron_ -### Video {#videos} +### Video {#use-decentralized-identity} - [Identità Decentralizzata (Sessione Live Bonus)](https://www.youtube.com/watch?v=ySHNB1za_SE&t=539s) — _Un ottimo video esplicativo sull'identità decentralizzata, di Andreas Antonopolous_ - [Accedi con Ethereum e l'Identità Decentralizzata con Ceramic, IDX, React e 3ID Connect](https://www.youtube.com/watch?v=t9gWZYJxk7c) — _Tutorial di YouTube sulla creazione di un sistema di gestione dell'identità, per creare, leggere e aggiornare il profilo di un utente, utilizzandone il portafoglio di Ethereum; di Nader Dabit_ @@ -183,7 +183,7 @@ Esistono molti progetti ambiziosi che utilizzano Ethereum come base per le soluz - [L'Internet esterno alla Catena: Identità Decentralizzata e Credenziali Verificabili](https://www.youtube.com/watch?v=EZ_Bb6j87mg) — Presentazione dell'EthDenver del 2022, di Evin McMullen - [Credenziali verificabili spiegate](https://www.youtube.com/watch?v=ce1IdSr-Kig): Video esplicativo su YouTube con dimostrazione di Tamino Baumann -### Community {#communities} +### Community {#further-reading} - [ERC-725 Alliance su GitHub](https://github.com/erc725alliance) — _Sostenitori dello standard ERC-725 per la gestione dell'identità sulla blockchain di Ethereum_ - [Server Discord di EthID](https://discord.com/invite/ZUyG3mSXFD) — _Community per appassionati e sviluppatori, al lavoro su "Accedi con Ethereum"_ diff --git a/public/content/translations/it/defi/index.md b/public/content/translations/it/defi/index.md index 9d2ae0086cd..5e48954491e 100644 --- a/public/content/translations/it/defi/index.md +++ b/public/content/translations/it/defi/index.md @@ -1,16 +1,16 @@ --- title: Finanza decentralizzata (DeFi) -metaTitle: Cos'è la DeFi? | Benefici e utilizzi della finanza decentralizzata +metaTitle: "Cos'è la DeFi? | Benefici e utilizzi della finanza decentralizzata" description: Una panoramica sulla DeFi su Ethereum lang: it template: use-cases emoji: ":money_with_wings:" image: /images/use-cases/defi.png alt: Logo di Eth, composto da mattoncini Lego. -sidebarDepth: 3 +sidebarDepth: 2 summaryPoint1: Un'alternativa globale e aperta al sistema finanziario odierno. summaryPoint2: Prodotti che ti consentono di prendere in prestito, risparmiare, investire, scambiare, e molto altro. -summaryPoint3: Basata sulla tecnologia open source, con cui chiunque può programmare. +summaryPoint3: "Basata sulla tecnologia open source, con cui chiunque può programmare." --- La 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 il controllo e la visibilità sul proprio denaro. Fornisce esposizione ai mercati globali e alternative alla tua valuta o alle opzioni bancarie locali. I prodotti della DeFi aprono i servizi finanziari a chiunque abbia una connessione a Internet, e sono prevalentemente posseduti e mantenuti dai loro utenti. Finora, decine di miliardi di dollari in criptovalute, sono confluiti per le applicazioni della DeFi, e crescono ogni giorno. diff --git a/public/content/translations/it/developers/docs/apis/json-rpc/index.md b/public/content/translations/it/developers/docs/apis/json-rpc/index.md index 9f2295b0800..3620b4aa658 100644 --- a/public/content/translations/it/developers/docs/apis/json-rpc/index.md +++ b/public/content/translations/it/developers/docs/apis/json-rpc/index.md @@ -58,7 +58,7 @@ Ecco alcuni esempi: - ERRATO: 0xf0f0f (dev'essere un numero di cifre pari) - ERRATO: 004200 (deve avere il prefisso 0x) -### Il parametro del blocco predefinito {#default-block} +### Il parametro del blocco predefinito {#block-parameter} I seguenti metodi hanno un parametro del blocco predefinito aggiuntivo: @@ -566,7 +566,7 @@ Restituisce il saldo del conto del dato indirizzo. **Parametri** 1. `DATA`, 20 byte - indirizzo per controllare il saldo. -2. `QUANTITY|TAG` - intero del numero di blocco, o la stringa `"latest"`, `"earliest"`, `"pending"`, `"safe"` o `"finalized"`, vedi il [parametro del blocco predefinito](/developers/docs/apis/json-rpc/#default-block) +2. `QUANTITY|TAG` - intero del numero di blocco, o la stringa `"latest"`, `"earliest"`, `"pending"`, `"safe"` o `"finalized"`, vedi il [parametro del blocco predefinito](/developers/docs/apis/json-rpc/#block-parameter) ```js params: ["0x407d73d8a49eeb85d32cf465507dd71d507100c1", "latest"] @@ -597,7 +597,7 @@ Restituisce il valore da una posizione di archiviazione a un dato indirizzo. 1. `DATA`, 20 byte - Indirizzo di archiviazione. 2. `QUANTITY` - intero della posizione di archiviazione. -3. `QUANTITY|TAG` - intero del numero di blocco, o la stringa `"latest"`, `"earliest"`, `"pending"`, `"safe"`, `"finalized"`, vedi il [parametro del blocco predefinito](/developers/docs/apis/json-rpc/#default-block) +3. `QUANTITY|TAG` - intero del numero di blocco, o la stringa `"latest"`, `"earliest"`, `"pending"`, `"safe"`, `"finalized"`, vedi il [parametro del blocco predefinito](/developers/docs/apis/json-rpc/#block-parameter) **Restituisce** @@ -663,7 +663,7 @@ Restituisce il numero di transazioni _inviate_da un indirizzo. **Parametri** 1. `DATA`, 20 byte - indirizzo. -2. `QUANTITY|TAG` - intero del numero di blocco, o la stringa `"latest"`, `"earliest"`, `"pending"`, `"safe"` o `"finalized"`, vedi il [parametro del blocco predefinito](/developers/docs/apis/json-rpc/#default-block) +2. `QUANTITY|TAG` - intero del numero di blocco, o la stringa `"latest"`, `"earliest"`, `"pending"`, `"safe"` o `"finalized"`, vedi il [parametro del blocco predefinito](/developers/docs/apis/json-rpc/#block-parameter) ```js params: [ @@ -724,7 +724,7 @@ Restituisce il numero di transazioni in un blocco corrispondente al numero di bl **Parametri** -1. `QUANTITY|TAG` - intero del numero di un blocco, o la stringa `"earliest"`, `"latest"`, `"pending"`, `"safe"` o `"finalized"`, come nel [parametro del blocco predefinito](/developers/docs/apis/json-rpc/#default-block). +1. `QUANTITY|TAG` - intero del numero di un blocco, o la stringa `"earliest"`, `"latest"`, `"pending"`, `"safe"` o `"finalized"`, come nel [parametro del blocco predefinito](/developers/docs/apis/json-rpc/#block-parameter). ```js params: [ @@ -784,7 +784,7 @@ Restituisce il numero di ommer in un blocco da un blocco che corrisponde all'has **Parametri** -1. `QUANTITY|TAG` - intero del numero di un blocco, o la stringa `"latest"`, `"earliest"`, `"pending"`, `"safe"` o `"finalized"`, vedi il [parametro del blocco predefinito](/developers/docs/apis/json-rpc/#default-block) +1. `QUANTITY|TAG` - intero del numero di un blocco, o la stringa `"latest"`, `"earliest"`, `"pending"`, `"safe"` o `"finalized"`, vedi il [parametro del blocco predefinito](/developers/docs/apis/json-rpc/#block-parameter) ```js params: [ @@ -816,7 +816,7 @@ Restituisce il codice ad un dato indirizzo. **Parametri** 1. `DATA`, 20 byte - indirizzo -2. `QUANTITY|TAG` - intero del numero di blocco, o la stringa `"latest"`, `"earliest"`, `"pending"`, `"safe"` o `"finalized"`, vedi il [parametro del blocco predefinito](/developers/docs/apis/json-rpc/#default-block) +2. `QUANTITY|TAG` - intero del numero di blocco, o la stringa `"latest"`, `"earliest"`, `"pending"`, `"safe"` o `"finalized"`, vedi il [parametro del blocco predefinito](/developers/docs/apis/json-rpc/#block-parameter) ```js params: [ @@ -1003,7 +1003,7 @@ Esegue immediatamente una nuova chiamata di messaggio senza creare una transazio - `value`: `QUANTITY` - (facoltativo) Intero del valore inviato con questa transazione - `input`: `DATA` - (facoltativo) Hash della firma del metodo e dei parametri codificati. Per i dettagli, consulta [ABI del Contratto di Ethereum nella documentazione di Solidity](https://docs.soliditylang.org/en/latest/abi-spec.html). -2. `QUANTITY|TAG` - intero del numero di blocco, o la stringa `"latest"`, `"earliest"`, `"pending"`, `"safe"` o `"finalized"`, vedi il [parametro del blocco predefinito](/developers/docs/apis/json-rpc/#default-block) +2. `QUANTITY|TAG` - intero del numero di blocco, o la stringa `"latest"`, `"earliest"`, `"pending"`, `"safe"` o `"finalized"`, vedi il [parametro del blocco predefinito](/developers/docs/apis/json-rpc/#block-parameter) **Restituisce** @@ -1130,7 +1130,7 @@ Restituisce informazioni su un blocco per numero di blocco. **Parametri** -1. `QUANTITY|TAG` - intero del numero di un blocco, o la stringa `"earliest"`, `"latest"`, `"pending"`, `"safe"` o `"finalized"`, come nel [parametro del blocco predefinito](/developers/docs/apis/json-rpc/#default-block). +1. `QUANTITY|TAG` - intero del numero di un blocco, o la stringa `"earliest"`, `"latest"`, `"pending"`, `"safe"` o `"finalized"`, come nel [parametro del blocco predefinito](/developers/docs/apis/json-rpc/#block-parameter). 2. `Boolean` - Se `true` restituisce gli oggetti di transazione completi, se `falso` solo gli hash delle transazioni. ```js @@ -1243,7 +1243,7 @@ Restituisce informazioni su una transazione per hash del blocco e posizione dell **Parametri** -1. `QUANTITY|TAG`: il numero di un blocco, o la stringa `"earliest"`, `"latest"`, `"pending"`, `"safe"` o `"finalized"`, come nel [parametro del blocco predefinito](/developers/docs/apis/json-rpc/#default-block). +1. `QUANTITY|TAG`: il numero di un blocco, o la stringa `"earliest"`, `"latest"`, `"pending"`, `"safe"` o `"finalized"`, come nel [parametro del blocco predefinito](/developers/docs/apis/json-rpc/#block-parameter). 2. `QUANTITY` - la posizione dell'indice della transazione. ```js @@ -1366,7 +1366,7 @@ Restituisce informazioni su un ommer di un blocco in base al numero e alla posiz **Parametri** -1. `QUANTITY|TAG` - il numero di un blocco, o la stringa `"earliest"`, `"latest"`, `"pending"`, `"safe"`, `"finalized"`, come nel [parametro predefinito del blocco](/developers/docs/apis/json-rpc/#default-block). +1. `QUANTITY|TAG` - il numero di un blocco, o la stringa `"earliest"`, `"latest"`, `"pending"`, `"safe"`, `"finalized"`, come nel [parametro predefinito del blocco](/developers/docs/apis/json-rpc/#block-parameter). 2. `QUANTITY` - la posizione dell'indice dell'ommer. ```js diff --git a/public/content/translations/it/developers/docs/blocks/index.md b/public/content/translations/it/developers/docs/blocks/index.md index ff09aa44f91..2492628c912 100644 --- a/public/content/translations/it/developers/docs/blocks/index.md +++ b/public/content/translations/it/developers/docs/blocks/index.md @@ -24,7 +24,7 @@ Per preservare la cronologia delle transazioni, i blocchi sono ordinati in modo Dopo essere stato realizzato da un validatore della rete selezionato casualmente, un blocco viene propagato al resto della rete; tutti i nodi vengono aggiunti al blocco alla fine della relativa blockchain e un nuovo validatore viene selezionato per creare il successivo. Il processo esatto di costruzione dei blocchi e il processo di invio/consenso è attualmente specificato nel protocollo "Proof of Stake" di Ethereum. -## Protocollo Proof of Stake {#proof-of-work-protocol} +## Protocollo Proof of Stake {#proof-of-stake-protocol} Proof of Stake significa quanto segue: diff --git a/public/content/translations/it/developers/docs/consensus-mechanisms/poa/index.md b/public/content/translations/it/developers/docs/consensus-mechanisms/poa/index.md index aa10661a7cb..744486b8bdc 100644 --- a/public/content/translations/it/developers/docs/consensus-mechanisms/poa/index.md +++ b/public/content/translations/it/developers/docs/consensus-mechanisms/poa/index.md @@ -1,6 +1,6 @@ --- -title: Prova di autorità (PoA) -description: Una spiegazione del protocollo di consenso a prova di autorità e del suo ruolo nell'ecosistema della blockchain. +title: "Prova di autorità (PoA)" +description: "Una spiegazione del protocollo di consenso a prova di autorità e del suo ruolo nell'ecosistema della blockchain." lang: it --- diff --git a/public/content/translations/it/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md b/public/content/translations/it/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md index 4e939b15a83..9017d3116b8 100644 --- a/public/content/translations/it/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md +++ b/public/content/translations/it/developers/docs/consensus-mechanisms/pos/attack-and-defense/index.md @@ -1,6 +1,6 @@ --- title: "Proof-of-stake Ethereum: attacchi e meccanismi di difesa" -description: Scopri di più sui vettori di attacco noti sul proof-of-stake di Ethereum e come è possibile difendersi da essi. +description: "Scopri di più sui vettori di attacco noti sul proof-of-stake di Ethereum e come è possibile difendersi da essi." lang: it --- diff --git a/public/content/translations/it/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md b/public/content/translations/it/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md index f4bac577534..5dabb469e8a 100644 --- a/public/content/translations/it/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md +++ b/public/content/translations/it/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/index.md @@ -1,6 +1,6 @@ --- title: Ricompense e sanzioni del proof-of-stake -description: Scopri di più sugli incentivi del protocollo nel proof-of-stake di Ethereum. +description: "Scopri di più sugli incentivi del protocollo nel proof-of-stake di Ethereum." lang: it --- diff --git a/public/content/translations/it/developers/docs/consensus-mechanisms/pos/weak-subjectivity/index.md b/public/content/translations/it/developers/docs/consensus-mechanisms/pos/weak-subjectivity/index.md index 4c1b5628951..5c34d9ab106 100644 --- a/public/content/translations/it/developers/docs/consensus-mechanisms/pos/weak-subjectivity/index.md +++ b/public/content/translations/it/developers/docs/consensus-mechanisms/pos/weak-subjectivity/index.md @@ -1,6 +1,6 @@ --- -title: Soggettività debole -description: Una spiegazione della soggettività debole e del suo ruolo nell'Ethereum PoS. +title: "Soggettività debole" +description: "Una spiegazione della soggettività debole e del suo ruolo nell'Ethereum PoS." lang: it --- diff --git a/public/content/translations/it/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md b/public/content/translations/it/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md index cee1f041f73..6b7c5c89975 100644 --- a/public/content/translations/it/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md +++ b/public/content/translations/it/developers/docs/consensus-mechanisms/pow/mining/mining-algorithms/ethash/index.md @@ -8,7 +8,7 @@ lang: it - Ethash era l'algoritmo di mining di proof-of-work di Ethereum. Il proof-of-work è ora stato **disattivato interamente** e, invece, Ethereum è ora protetto utilizzando il [proof-of-stake](/developers/docs/consensus-mechanisms/pos/). Leggi di più su [La Fusione](/roadmap/merge/), sul [proof-of-stake](/developers/docs/consensus-mechanisms/pos/) e sullo [staking](/staking/). Questa pagina è per interesse storico! + Ethash era l'algoritmo di mining di proof-of-work di Ethereum. Il proof-of-work è ora stato **disattivato interamente** e, invece, Ethereum è ora protetto utilizzando il [proof-of-stake](/developers/docs/consensus-mechanisms/pos/). Leggi di più su [La Fusione](/roadmap/merge/), sul [proof-of-stake](/developers/docs/consensus-mechanisms/pos/) e sullo [staking](/staking/). Questa pagina è per interesse storico! diff --git a/public/content/translations/it/developers/docs/data-and-analytics/index.md b/public/content/translations/it/developers/docs/data-and-analytics/index.md index 326c2658b65..2a913ee8348 100644 --- a/public/content/translations/it/developers/docs/data-and-analytics/index.md +++ b/public/content/translations/it/developers/docs/data-and-analytics/index.md @@ -32,20 +32,21 @@ Usando [GraphQL](https://graphql.org/), gli sviluppatori possono interrogare una La [diversità dei client](/developers/docs/nodes-and-clients/client-diversity/) è importante per la salute complessiva della rete di Ethereum, poiché fornisce resilienza a bug ed exploit. Attualmente esistono vari pannelli di controllo della diversità del client, tra cui [clientdiversity.org](https://clientdiversity.org/), [rated.network](https://www.rated.network), [supermajority.info](https://supermajority.info//) ed [Ethernodes](https://ethernodes.org/). -## Dune Analytics {#dune-analytics} +## Dune Analytics {#client-diversity} [Dune Analytics](https://dune.com/) pre-elabora i dati della blockchain nelle tabelle del database relazionale (DuneSQL), consente agli utenti di richiedere i dati della blockchain utilizzando SQL e crea pannelli di controllo basati sui risultati della richiesta. I dati sulla catena sono organizzati in 4 tabelle grezze: `blocks`, `transactions`, `logs` (di eventi) e `traces` (di chiamate). I contratti e protocolli popolari sono stati decodificati e ognuno ha la propria serie di tabelle di eventi e chiamate. Queste tabelle di eventi e chiamate sono ulteriormente elaborate e organizzate in tabelle di astrazione secondo il tipo di protocolli, ad esempio dex, lending, stablecoins, ecc. -## Rete di SubQuery {#subquery-network} +## Rete di SubQuery {#dune-analytics} [SubQuery](https://subquery.network/) è un indicizzatore di dati leader del settore, che fornisce agli sviluppatori API veloci, affidabili, decentralizzate e personalizzate per i loro progetti in Web3. SubQuery emancipa gli sviluppatori da oltre 165 ecosistemi (incluso Ethereum) con dati indicizzati ricchi, per creare esperienze intuitive e immersive per i propri utenti. La Rete di SubQuery alimenta le tue inarrestabili app con una rete resiliente e un'infrastruttura decentralizzata. Utilizza gli strumenti per sviluppatori di blockchain di SubQuery per creare le applicazioni Web3 del futuro, senza dover dedicare tempo a sviluppare un backend personalizzato per le attività di elaborazione dei dati. Per iniziare, visita la [guida rapida per principianti di Ethereum](https://academy.subquery.network/quickstart/quickstart_chains/ethereum-gravatar.html) per iniziare a indicizzare i dati della blockchain di Ethereum in pochi minuti in un ambiente locale di Docker per i test prima di distribuire il tuo progetto su un [servizio gestito da SubQuery](https://managedservice.subquery.network/) o su una [rete decentralizzata di SubQuery](https://app.subquery.network/dashboard). -## Ethernow - Programma dei dati del Mempool {#ethernow} +## Ethernow - Programma dei dati del Mempool {#sqd} + [Blocknative](https://www.blocknative.com/) fornisce l'accesso aperto al suo [archivio dei dati del mempool](https://www.ethernow.xyz/mempool-data-archive) storico di Ethereum. Questo consente ai ricercatori e ai progetti della community di esplorare il livello pre-catena della Rete Principale di Ethereum. La serie di dati è mantenuta attivamente e rappresenta il registro storico più completo degli eventi di transazione del mempool nell'ecosistema di Ethereum. Maggiori informazioni su [Ethernow](https://www.ethernow.xyz/). -## Letture consigliate {#further-reading} +## Letture consigliate {#subquery-network} - [Panoramica della rete Graph](https://thegraph.com/docs/en/about/) - [GraphQL Playground](https://thegraph.com/explorer/subgraph/graphprotocol/graph-network-mainnet?version=current) diff --git a/public/content/translations/it/developers/docs/data-availability/index.md b/public/content/translations/it/developers/docs/data-availability/index.md index 7b1bb070581..369d6d81788 100644 --- a/public/content/translations/it/developers/docs/data-availability/index.md +++ b/public/content/translations/it/developers/docs/data-availability/index.md @@ -1,6 +1,6 @@ --- -title: Disponibilità dei dati -description: Una panoramica dei problemi e delle soluzioni relative alla disponibilità dei dati in Ethereum +title: "Disponibilità dei dati" +description: "Una panoramica dei problemi e delle soluzioni relative alla disponibilità dei dati in Ethereum" lang: it --- diff --git a/public/content/translations/it/developers/docs/design-and-ux/heuristics-for-web3/index.md b/public/content/translations/it/developers/docs/design-and-ux/heuristics-for-web3/index.md index 2f0aaa2df51..f89f227fde2 100644 --- a/public/content/translations/it/developers/docs/design-and-ux/heuristics-for-web3/index.md +++ b/public/content/translations/it/developers/docs/design-and-ux/heuristics-for-web3/index.md @@ -1,6 +1,6 @@ --- title: 7 euristiche per la progettazione di interfacce Web3 -description: Principi per migliorare l'usabilità del Web3 +description: "Principi per migliorare l'usabilità del Web3" lang: it --- diff --git a/public/content/translations/it/developers/docs/design-and-ux/index.md b/public/content/translations/it/developers/docs/design-and-ux/index.md index 40ba1cd7f16..aa157d71d20 100644 --- a/public/content/translations/it/developers/docs/design-and-ux/index.md +++ b/public/content/translations/it/developers/docs/design-and-ux/index.md @@ -78,7 +78,7 @@ Partecipate ad organizzazioni professionali guidate dalla community o unitevi a - [We3.co](https://we3.co/) - [Openux.xyz](https://openux.xyz/) -## Sistemi di progettazione {#design-systems} +## Sistemi di progettazione {#design-systems-and-resources} - [Progettazione di Optimism](https://www.figma.com/@optimism) (Figma) - [Sistema di progettazione di Ethereum.org](https://www.figma.com/@ethdotorg) (Figma) diff --git a/public/content/translations/it/developers/docs/evm/index.md b/public/content/translations/it/developers/docs/evm/index.md index c1ae60e919f..a216d1b7a35 100644 --- a/public/content/translations/it/developers/docs/evm/index.md +++ b/public/content/translations/it/developers/docs/evm/index.md @@ -4,7 +4,7 @@ description: Un'introduzione alla Macchina Virtuale di Ethereum e a come si rela lang: it --- -La Macchina Virtuale di Ethereum (EVM) è un ambiente virtuale decentralizzato che esegue il codice con coerenza e sicurezza su tutti i nodi di Ethereum. I nodi eseguono l'EVM per eseguire i contratti intelligenti, utilizzando il "[gas](/gas/)" per misurare lo sforzo di calcolo necessario per le [operazioni](/developers/docs/evm/opcodes/), assicurando un'efficace allocazione delle risorse e la sicurezza della rete. +La Macchina Virtuale di Ethereum (EVM) è un ambiente virtuale decentralizzato che esegue il codice con coerenza e sicurezza su tutti i nodi di Ethereum. I nodi eseguono l'EVM per eseguire i contratti intelligenti, utilizzando il "[gas](/developers/docs/gas/)" per misurare lo sforzo di calcolo necessario per le [operazioni](/developers/docs/evm/opcodes/), assicurando un'efficace allocazione delle risorse e la sicurezza della rete. ## Prerequisiti {#prerequisites} @@ -16,7 +16,7 @@ Per descrivere blockchain come Bitcoin, viene spesso utilizzata l'analogia con u 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)_ +![Diagramma che mostra la composizione dell'EVM](./evm.png) _Diagramma adattato da [Ethereum EVM illustrated](https://takenobu-hs.github.io/downloads/ethereum_evm_illustrated.pdf)_ ## La funzione di transizione di stato di Ethereum {#the-ethereum-state-transition-function} diff --git a/public/content/translations/it/developers/docs/intro-to-ethereum/index.md b/public/content/translations/it/developers/docs/intro-to-ethereum/index.md index 26d4c9ffb8e..da74e7a90f2 100644 --- a/public/content/translations/it/developers/docs/intro-to-ethereum/index.md +++ b/public/content/translations/it/developers/docs/intro-to-ethereum/index.md @@ -111,6 +111,6 @@ Uno snippet di codice riutilizzabile (programma) che uno sviluppatore pubblica n _Conosci una risorsa della community che ti è stata utile? Modifica questa pagina e aggiungila!_ -## Tutorial correlati {#related-tutorials} +## Tutorial correlati {#visual-learner} - [Una guida per sviluppatori a Ethereum, parte 1](/developers/tutorials/a-developers-guide-to-ethereum-part-one/) _– Un'esplorazione di Ethereum pensata per i principianti usando Python e web3.py_ diff --git a/public/content/translations/it/developers/docs/networking-layer/portal-network/index.md b/public/content/translations/it/developers/docs/networking-layer/portal-network/index.md index 114400531ff..0fce61908eb 100644 --- a/public/content/translations/it/developers/docs/networking-layer/portal-network/index.md +++ b/public/content/translations/it/developers/docs/networking-layer/portal-network/index.md @@ -82,7 +82,7 @@ La presenza di più implementazioni client indipendenti aumenta la resilienza e Se un client presenta problemi o vulnerabilità, gli altri client possono continuare a funzionare senza problemi, evitando un punto di errore singolo. Inoltre, le diverse implementazioni dei clienti favoriscono l'innovazione e la concorrenza, promuovendo miglioramenti e riducendo il rischio di monopolio all'interno dell'ecosistema. -## Letture consigliate {#futher-reading} +## Letture consigliate {#further-reading} - [La Rete Portal (Piper Merriam al Devcon di Bogotà)](https://www.youtube.com/watch?v=0stc9jnQLXA). - [Discord della Rete Portal](https://discord.gg/CFFnmE7Hbs) diff --git a/public/content/translations/it/developers/docs/networks/index.md b/public/content/translations/it/developers/docs/networks/index.md index 08b89ae21e4..e2f09ac32c0 100644 --- a/public/content/translations/it/developers/docs/networks/index.md +++ b/public/content/translations/it/developers/docs/networks/index.md @@ -84,11 +84,11 @@ Hoodi è una rete di prova per testare la convalida e lo staking. La rete Hoodi Per lanciare un Validatore sulla rete di prova Hoodi, usa il [launchpad di Hoodi](https://hoodi.launchpad.ethereum.org/en/). -### Rete di prova del livello 2 {#layer-2-testnets} +### Rete di prova del livello 2 {#ephemery} [Livello 2 (L2)](/layer-2/) è un termine collettivo per descrivere un insieme specifico di soluzioni di ridimensionamento di Ethereum. Un livello 2 è una blockchain separata che estende Ethereum ed eredita le garanzie di sicurezza di Ethereum. Solitamente le reti di prova di Livello 2 sono strettamente accoppiate alle reti di prova pubbliche di Ethereum. -#### Arbitrum Sepolia {#arbitrum-sepolia} +#### Arbitrum Sepolia {#holesky} Una rete di prova per [Arbitrum](https://arbitrum.io/). @@ -97,7 +97,7 @@ Una rete di prova per [Arbitrum](https://arbitrum.io/). - [Faucet Chainlink](https://faucets.chain.link/arbitrum-sepolia) - [Faucet Alchemy](https://www.alchemy.com/faucets/arbitrum-sepolia) -#### Optimistic Sepolia {#optimistic-sepolia} +#### Optimistic Sepolia {#layer-2-testnets} Una rete di prova per [Optimism](https://www.optimism.io/). @@ -106,7 +106,7 @@ Una rete di prova per [Optimism](https://www.optimism.io/). - [Faucet Chainlink](https://faucets.chain.link/optimism-sepolia) - [Faucet Alchemy](https://www.alchemy.com/faucets/optimism-sepolia) -#### Starknet Sepolia {#starknet-sepolia} +#### Starknet Sepolia {#arbitrum-sepolia} Una rete di prova per [Starknet](https://www.starknet.io). @@ -114,28 +114,28 @@ Una rete di prova per [Starknet](https://www.starknet.io). - [Faucet Alchemy](https://www.alchemy.com/faucets/starknet-sepolia) -## Reti private {#private-networks} +## Reti private {#optimistic-sepolia} Una rete Ethereum è una rete privata se i relativi nodi non sono connessi a una rete pubblica (ossia Rete principale o una rete di prova). In questo contesto, privato significa solo riservato o isolato, e non protetto o sicuro. -### Reti di sviluppo {#development-networks} +### Reti di sviluppo {#starknet-sepolia} Per sviluppare un'applicazione Ethereum, è consigliabile eseguirla prima su una rete privata per vedere come funziona prima di distribuirla. Come quando si crea un server locale sul computer per lo sviluppo web, è possibile creare un'istanza locale della blockchain per testare una dapp. Questo offre un'iterazione molto più veloce rispetto a una rete di prova pubblica. Ci sono progetti e strumenti dedicati a questo scopo. Scopri di più sulle [reti di sviluppo](/developers/docs/development-networks/). -### Reti di consorzio {#consortium-networks} +### Reti di consorzio {#private-networks} Il processo di consenso è controllato da una serie predefinita di nodi considerati attendibili. Un esempio può essere una rete privata di istituti accademici noti, dove ogni istituto controlla un singolo nodo e i blocchi vengono convalidati da una soglia di firmatari all'interno della rete. Se una rete Ethereum pubblica è come la rete Internet pubblica, una rete di consorzio è come una Intranet privata. -## Strumenti correlati {#related-tools} +## Strumenti correlati {#development-networks} - [Chainlist](https://chainlist.org/) _Elenco di reti EVM per connettere portafogli e fornitori all'ID della Catena e ID di Rete appropriati._ - [Catene basate su EVM](https://github.com/ethereum-lists/chains) _Repository di GitHub di metadati della catena che alimentano Chainlist._ -## Letture consigliate {#further-reading} +## Letture consigliate {#consortium-networks} - [Proposta: ciclo di vita prevedibile delle reti di prova di Ethereum](https://ethereum-magicians.org/t/proposal-predictable-ethereum-testnet-lifecycle/11575/17) - [L'evoluzione delle reti di prova di Ethereum](https://etherworld.co/2022/08/19/the-evolution-of-ethereum-testnet/) diff --git a/public/content/translations/it/developers/docs/nodes-and-clients/client-diversity/index.md b/public/content/translations/it/developers/docs/nodes-and-clients/client-diversity/index.md index 06dc895256d..63192bb54f0 100644 --- a/public/content/translations/it/developers/docs/nodes-and-clients/client-diversity/index.md +++ b/public/content/translations/it/developers/docs/nodes-and-clients/client-diversity/index.md @@ -1,6 +1,6 @@ --- -title: Diversità dei client -description: Una spiegazione generica dell'importanza della diversità di client di Ethereum. +title: "Diversità dei client" +description: "Una spiegazione generica dell'importanza della diversità di client di Ethereum." lang: it sidebarDepth: 2 --- @@ -49,15 +49,15 @@ I dati del livello di esecuzione sono stati ottenuti da [Ethernodes](https://eth 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} +## Livello di esecuzione {#execution-clients-breakdown} 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} +## Usare un client di minoranza {#consensus-clients-breakdown} Per "indirizzare" la diversità dei client non basta che i singoli utenti scelgano i client di minoranza, richiede che anche i pool di mining/validatori e le istituzioni come le dApp principali e gli scambi cambino client. Tuttavia, tutti gli utenti possono fare la propria parte nel correggere l'attuale disequilibrio e normalizzare l'uso di tutti i software di Ethereum disponibili. Dopo La Fusione, tutti gli operatori di nodi dovranno eseguire un client d'esecuzione e un client di consenso. Scegliere le combinazioni dei client suggerite di seguito aiuterà ad aumentare la diversità dei client. -### Client di esecuzione {#execution-clients} +### Client di esecuzione {#execution-layer} [Besu](https://www.hyperledger.org/use/besu) @@ -67,7 +67,7 @@ Per "indirizzare" la diversità dei client non basta che i singoli utenti scelga [Go-Ethereum](https://geth.ethereum.org/) -### Client di consenso {#consensus-clients} +### Client di consenso {#use-minority-client} [Nimbus](https://nimbus.team/) @@ -83,7 +83,7 @@ Per "indirizzare" la diversità dei client non basta che i singoli utenti scelga Gli utenti tecnici possono aiutare ad accelerare questo processo scrivendo più tutorial e documentazioni per i client di minoranza e incoraggiando i propri peer che eseguono dei nodi a migrare dai client dominanti. Le guide per passare a un client di consenso di minoranza sono disponibili su [clientdiversity.org](https://clientdiversity.org/). -## Pannelli di controllo sulla diversità dei client {#client-diversity-dashboards} +## Pannelli di controllo sulla diversità dei client {#execution-clients} Diversi pannelli di controllo forniscono statistiche sulla diversità dei client in tempo reale per il livello d'esecuzione e di consenso. @@ -95,7 +95,7 @@ Diversi pannelli di controllo forniscono statistiche sulla diversità dei client - [supermajority.info](https://supermajority.info//) - [Ethernodes](https://ethernodes.org/) -## Letture consigliate {#further-reading} +## Letture consigliate {#consensus-clients} - [Diversità dei client sul livello di consenso di Ethereum](https://mirror.xyz/jmcook.eth/S7ONEka_0RgtKTZ3-dakPmAHQNPvuj15nh0YGKPFriA) - [Fusione di Ethereum: esegui il client di maggioranza a tuo rischio!](https://dankradfeist.de/ethereum/2022/03/24/run-the-majority-client-at-your-own-peril.html) – _Dankrad Fiest, 24 marzo 2022_ @@ -105,7 +105,7 @@ Diversi pannelli di controllo forniscono statistiche sulla diversità dei client - [Diversità di Ethereum e come risolverla (YouTube)](https://www.youtube.com/watch?v=1hZgCaiqwfU) - [clientdiversity.org](https://clientdiversity.org/) -## Argomenti correlati {#related-topics} +## Argomenti correlati {#client-diversity-dashboards} - [Eseguire un nodo di Ethereum](/run-a-node/) - [Nodi e client](/developers/docs/nodes-and-clients/) diff --git a/public/content/translations/it/developers/docs/nodes-and-clients/index.md b/public/content/translations/it/developers/docs/nodes-and-clients/index.md index 98eb12ebed7..74f6e768d3f 100644 --- a/public/content/translations/it/developers/docs/nodes-and-clients/index.md +++ b/public/content/translations/it/developers/docs/nodes-and-clients/index.md @@ -1,6 +1,6 @@ --- title: Nodi e client -description: Panoramica dei nodi Ethereum e del software client, come configurare un nodo e perché farlo. +description: "Panoramica dei nodi Ethereum e del software client, come configurare un nodo e perché farlo." lang: it sidebarDepth: 2 --- diff --git a/public/content/translations/it/developers/docs/nodes-and-clients/nodes-as-a-service/index.md b/public/content/translations/it/developers/docs/nodes-and-clients/nodes-as-a-service/index.md index 8a29e3a51a0..e83c721403d 100644 --- a/public/content/translations/it/developers/docs/nodes-and-clients/nodes-as-a-service/index.md +++ b/public/content/translations/it/developers/docs/nodes-and-clients/nodes-as-a-service/index.md @@ -1,6 +1,6 @@ --- title: Nodi come servizio -description: Panoramica entry-level dei servizi dei nodi, dei pro e dei contro, e dei fornitori più diffusi. +description: "Panoramica entry-level dei servizi dei nodi, dei pro e dei contro, e dei fornitori più diffusi." lang: it sidebarDepth: 2 --- diff --git a/public/content/translations/it/developers/docs/nodes-and-clients/run-a-node/index.md b/public/content/translations/it/developers/docs/nodes-and-clients/run-a-node/index.md index e3d8b368210..eda86442bcb 100644 --- a/public/content/translations/it/developers/docs/nodes-and-clients/run-a-node/index.md +++ b/public/content/translations/it/developers/docs/nodes-and-clients/run-a-node/index.md @@ -234,7 +234,7 @@ Questa sezione ti guiderà nell'avvio dei client di esecuzione. Serve solo da es Ricordati che questo è solo un esempio di base, tutte le altre impostazioni saranno predefinite. Presta attenzione alla documentazione di ogni client per conoscere i valori predefiniti, le impostazioni e le funzionalità. Per ulteriori funzionalità, ad esempio per eseguire i validatori, per il monitoraggio, ecc., fai riferimento alla documentazione del client specifico. -> Nota che i backslash `\` negli esempi servono solo a scopi di formattazione; i flag di configurazione sono definibili in una singola riga. +> Nota che i backslash `` negli esempi servono solo a scopi di formattazione; i flag di configurazione sono definibili in una singola riga. ##### Eseguire Besu diff --git a/public/content/translations/it/developers/docs/oracles/index.md b/public/content/translations/it/developers/docs/oracles/index.md index 3232aa07b4c..bac34bad496 100644 --- a/public/content/translations/it/developers/docs/oracles/index.md +++ b/public/content/translations/it/developers/docs/oracles/index.md @@ -1,6 +1,6 @@ --- title: Oracoli -description: Gli oracoli forniscono ai contratti intelligenti di Ethereum l'accesso ai dati del mondo reale, sbloccando più casi d'uso e maggiore valore per gli utenti. +description: "Gli oracoli forniscono ai contratti intelligenti di Ethereum l'accesso ai dati del mondo reale, sbloccando più casi d'uso e maggiore valore per gli utenti." lang: it --- diff --git a/public/content/translations/it/developers/docs/programming-languages/dart/index.md b/public/content/translations/it/developers/docs/programming-languages/dart/index.md index ba1069144fa..b3eb1bbe1a5 100644 --- a/public/content/translations/it/developers/docs/programming-languages/dart/index.md +++ b/public/content/translations/it/developers/docs/programming-languages/dart/index.md @@ -5,24 +5,27 @@ lang: it incomplete: true --- -## Primi passi con i contratti intelligenti e il linguaggio Solidity {#getting-started-with-smart-contracts-and-solidity} +## Iniziare con i contratti intelligenti e il linguaggio Solidity {#getting-started-with-smart-contracts-and-solidity} -## Tutorial {#tutorials} +## Guide {#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. Scrivere un contratto intelligente in [Solidity](https://soliditylang.org/) - 2. 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), lungo all'incirca un'ora -- Se sei impaziente, questo potrebbe fare al caso tuo [Building a Blockchain Decentralized-app with Flutter and Dart on Ethereum](https://www.youtube.com/watch?v=jaMFEOCq_1s) (Creare un'app decentralizzata sulla Blockchain con Flutter e Dart su Ethereum), che dura solo circa venti minuti -- [Integrating MetaMask in Flutter application with Web3Modal by WalletConnect](https://www.youtube.com/watch?v=v_M2buHCpc4) - questo breve video ti guida nei passaggi dell'integrazione di MetaMask nelle tue applicazioni di Flutter con la libreria [Web3Modal](https://pub.dev/packages/web3modal_flutter) di WalletConnect -- [Mobile Blockchain Developer Bootcamp Course With Solidity & Flutter](https://youtube.com/playlist?list=PL4V4Unlk5luhQ26ERO6hWEbcUwHDSSmVH) - playlist del corso per sviluppatori di blockchain mobili full stack +- [Flutter and Blockchain – Hello World Dapp](https://www.geeksforgeeks.org/flutter-and-blockchain-hello-world-dapp/) ti guida attraverso tutti i passaggi per iniziare: + 1. Scrivere un contratto intelligente in [Solidity](https://soliditylang.org/) + 2. Scrivere un'interfaccia utente su Dart +- [Building a Mobile dapp with Flutter](https://medium.com/dash-community/building-a-mobile-dapp-with-flutter-be945c80315a) è molto più breve, il che potrebbe essere 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), che dura circa un'ora +- Se sei impaziente, potresti preferire [Building a Blockchain Decentralized-app with Flutter and Dart on Ethereum](https://www.youtube.com/watch?v=jaMFEOCq_1s), che dura solo circa venti minuti +- [Integrating MetaMask in Flutter application with Web3Modal by WalletConnect](https://www.youtube.com/watch?v=v_M2buHCpc4) - questo breve video ti guida attraverso i passaggi per l'integrazione di MetaMask nelle tue applicazioni Flutter con la libreria [Web3Modal](https://pub.dev/packages/web3modal_flutter) di WalletConnect +- [Mobile Blockchain Developer Bootcamp Course With Solidity & Flutter](https://youtube.com/playlist?list=PL4V4Unlk5luhQ26ERO6hWEbcUwHDSSmVH) - playlist del corso per sviluppatori blockchain mobili full-stack ## Lavorare con i client di Ethereum {#working-with-ethereum-clients} -Puoi usare Ethereum per creare applicazioni decentralizzate (o "dapp") che utilizzano i benefici delle criptovalute e la tecnologia della blockchain. Esistono almeno due librerie attualmente mantenute per Dart per utilizzare l'[API di JSON-RPC](/developers/docs/apis/json-rpc/) per Ethereum. +Puoi usare Ethereum per creare applicazioni decentralizzate (o "dapp") che utilizzano i benefici delle criptovalute e la tecnologia della blockchain. +Esistono almeno due librerie attualmente mantenute per Dart per utilizzare l'[API JSON-RPC](/developers/docs/apis/json-rpc/) per Ethereum. -1. [Web3dart da simonbutler.eu](https://pub.dev/packages/web3dart) -1. [Ethereum 5.0.0 da darticulate.com](https://pub.dev/packages/ethereum) +1. [Web3dart da pwa.ir](https://pub.dev/packages/web3dart) +2. [Ethereum 5.0.0 da darticulate.com](https://pub.dev/packages/ethereum) -Esistono anche librerie aggiuntive che ti consentono di manipolare indirizzi specifici di Ethereum o che ti consentono di recuperare i prezzi di varie criptovalute. [Qui puoi visualizzare l'elenco completo](https://pub.dev/dart/packages?q=ethereum). +Esistono anche librerie aggiuntive che ti consentono di manipolare indirizzi specifici di Ethereum o che ti consentono di recuperare i prezzi di varie criptovalute. +[Puoi vedere l'elenco completo qui](https://pub.dev/dart/packages?q=ethereum). diff --git a/public/content/translations/it/developers/docs/programming-languages/delphi/index.md b/public/content/translations/it/developers/docs/programming-languages/delphi/index.md index 69ddee82a10..8a14db91f79 100644 --- a/public/content/translations/it/developers/docs/programming-languages/delphi/index.md +++ b/public/content/translations/it/developers/docs/programming-languages/delphi/index.md @@ -11,46 +11,46 @@ 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. +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, pertanto nessuna entità singola o individuo le controlla e sono quasi impossibili da censurare. Creare applicazioni decentralizzate su Ethereum e interagire con i contratti intelligenti usando il linguaggio di programmazione Delphi! -## Primi passi con i contratti intelligenti e il linguaggio Solidity {#getting-started-with-smart-contracts-and-the-solidity-language} +## Iniziare 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/). +Ti servono prima le nozioni di base? Consulta [ethereum.org/learn](/learn/) o [ethereum.org/developers](/developers/). -- [Blockchain Explained](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) -- [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) +- [Blockchain spiegate](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) +- [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 a compilare e distribuire Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) ## Riferimenti e link per principianti {#beginner-references-and-links} **Introduzione alla libreria Delphereum** -- [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) +- [Cos'è Delphereum?](https://github.com/svanas/delphereum/blob/master/README.md) +- [Connettere Delphi a una blockchain locale (in-memory)](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) - [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?** +**Vuoi lasciar stare temporaneamente la configurazione e passare direttamente agli esempi?** -- [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) +- [Un Contratto Intelligente e Delphi in 3 minuti - Parte 1](https://medium.com/@svanas/a-3-minute-smart-contract-and-delphi-61d998571d) +- [Un Contratto Intelligente e Delphi in 3 minuti - Parte 2](https://medium.com/@svanas/a-3-minute-smart-contract-and-delphi-part-2-446925faa47b) -## Articoli di livello intermedio {#intermediate-articles} +## Articoli intermedi {#intermediate-articles} -- [Generating an Ethereum-signed message signature in Delphi](https://medium.com/@svanas/generating-an-ethereum-signed-message-signature-in-delphi-75661ce5031b) -- [Transferring ether with Delphi](https://medium.com/@svanas/transferring-ether-with-delphi-b5f24b1a98a4) -- [Transferring ERC-20 tokens with Delphi](https://medium.com/@svanas/transferring-erc-20-tokens-with-delphi-bb44c05b295d) +- [Generare la firma di un messaggio firmato da Ethereum in Delphi](https://medium.com/@svanas/generating-an-ethereum-signed-message-signature-in-delphi-75661ce5031b) +- [Trasferire ether con Delphi](https://medium.com/@svanas/transferring-ether-with-delphi-b5f24b1a98a4) +- [Trasferire token ERC-20 con Delphi](https://medium.com/@svanas/transferring-erc-20-tokens-with-delphi-bb44c05b295d) -## Modelli d'uso avanzati {#advanced-use-patterns} +## Modelli di utilizzo avanzati {#advanced-use-patterns} -- [Delphi and Ethereum Name Service (ENS)](https://medium.com/@svanas/delphi-and-ethereum-name-service-ens-4443cd278af7) -- [QuikNode, Ethereum and Delphi](https://medium.com/@svanas/quiknode-ethereum-and-delphi-f7bfc9671c23) -- [Delphi e la Dark Forest di Ethereum](https://svanas.medium.com/delphi-and-the-ethereum-dark-forest-5b430da3ad93) -- [Scambia un token per un altro su Delphi](https://svanas.medium.com/swap-one-token-for-another-in-delphi-bcb999c47f7) +- [Delphi e il Servizio del Nome di Ethereum (ENS)](https://medium.com/@svanas/delphi-and-ethereum-name-service-ens-4443cd278af7) +- [QuikNode, Ethereum e Delphi](https://medium.com/@svanas/quiknode-ethereum-and-delphi-f7bfc9671c23) +- [Delphi e la Foresta Oscura di Ethereum](https://svanas.medium.com/delphi-and-the-ethereum-dark-forest-5b430da3ad93) +- [Scambiare un token con un altro in Delphi](https://svanas.medium.com/swap-one-token-for-another-in-delphi-bcb999c47f7) Cerchi altre risorse? Dai un'occhiata a [ethereum.org/developers](/developers/). diff --git a/public/content/translations/it/developers/docs/programming-languages/dot-net/index.md b/public/content/translations/it/developers/docs/programming-languages/dot-net/index.md index 5e6db2a11f0..b733fedc037 100644 --- a/public/content/translations/it/developers/docs/programming-languages/dot-net/index.md +++ b/public/content/translations/it/developers/docs/programming-languages/dot-net/index.md @@ -5,82 +5,82 @@ lang: it incomplete: true --- -Impara a sviluppare per Ethereum usando progetti e strumenti basati su .NET +Scopri come sviluppare per Ethereum utilizzando progetti e strumenti basati su .NET -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. +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, pertanto nessuna entità singola o individuo le controlla e sono quasi impossibili da censurare. 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 i contratti intelligenti e il linguaggio Solidity {#getting-started-with-smart-contracts-and-the-solidity-language} +## Iniziare 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/). +Ti servono prima le nozioni di base? Consulta [ethereum.org/learn](/learn/) o [ethereum.org/developers](/developers/). -- [Blockchain Explained](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) -- [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) +- [Blockchain spiegate](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) +- [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 a compilare e distribuire Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) ## Riferimenti e link per principianti {#beginner-references-and-links} **Introduzione alla libreria Nethereum e VS Code Solidity** -- [Nethereum, Getting Started](https://docs.nethereum.com/en/latest/getting-started/) -- [Installing VS Code Solidity](https://marketplace.visualstudio.com/items?itemName=JuanBlanco.solidity) -- [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) -- [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) +- [Nethereum, Per iniziare](https://docs.nethereum.com/en/latest/getting-started/) +- [Installazione di VS Code Solidity](https://marketplace.visualstudio.com/items?itemName=JuanBlanco.solidity) +- [Un flusso di lavoro per sviluppatori .NET per creare e richiamare contratti intelligenti Ethereum](https://medium.com/coinmonks/a-net-developers-workflow-for-creating-and-calling-ethereum-smart-contracts-44714f191db2) +- [Integrazione di contratti intelligenti con Nethereum](https://kauri.io/#collections/Getting%20Started/smart-contracts-integration-with-nethereum/#smart-contracts-integration-with-nethereumm) +- [Interfacciamento tra .NET e 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 - Una libreria di integrazione .NET open source per blockchain](https://kauri.io/#collections/a%20hackathon%20survival%20guide/nethereum-an-open-source-.net-integration-library/) +- [Scrittura di transazioni Ethereum in un database SQL utilizzando Nethereum](https://medium.com/coinmonks/writing-ethereum-transactions-to-sql-database-using-nethereum-fd94e0e4fa36) +- [Vedi come distribuire facilmente i contratti intelligenti 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 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) +- [Playground](http://playground.nethereum.com/) - Interagisci con Ethereum e scopri come usare Nethereum tramite browser. + - Query saldo del conto [C#](http://playground.nethereum.com/csharp/id/1001) [VB.NET](http://playground.nethereum.com/vb/id/2001) + - Query saldo del contratto intelligente ERC20 [C#](http://playground.nethereum.com/csharp/id/1005) [VB.NET](http://playground.nethereum.com/vb/id/2004) + - Trasferisci ether a 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} +## Articoli intermedi {#intermediate-articles} -- [Nethereum Workbook/Sample List](http://docs.nethereum.com/en/latest/Nethereum.Workbooks/docs/) -- [Deploy Your Own Development Testchains](https://github.com/Nethereum/Testchains) -- [VSCode Codegen Plugin for Solidity](https://docs.nethereum.com/en/latest/nethereum-codegen-vscodesolidity/) -- [Unity and Ethereum: Why and How](https://www.raywenderlich.com/5509-unity-and-ethereum-why-and-how) -- [Create ASP.NET Core Web API for Ethereum dapps](https://tech-mint.com/blockchain/create-asp-net-core-web-api-for-ethereum-dapps/) -- [Using Nethereum Web3 to Implement a Supply Chain Tracking System](http://blog.pomiager.com/post/using-nethereum-web3-to-implement-a-supply-chain-traking-system4) -- [Nethereum Block Processing](https://nethereum.readthedocs.io/en/latest/nethereum-block-processing-detail/), with [C# Playground sample](http://playground.nethereum.com/csharp/id/1025) -- [Nethereum Websocket Streaming](https://nethereum.readthedocs.io/en/latest/nethereum-subscriptions-streaming/) -- [Kaleido and Nethereum](https://kaleido.io/kaleido-and-nethereum/) -- [Quorum and Nethereum](https://github.com/Nethereum/Nethereum/blob/master/src/Nethereum.Quorum/README.md) +- [Cartella di lavoro/Elenco di esempi Nethereum](http://docs.nethereum.com/en/latest/Nethereum.Workbooks/docs/) +- [Distribuisci le tue testchain di sviluppo](https://github.com/Nethereum/Testchains) +- [Plugin Codegen di VSCode per Solidity](https://docs.nethereum.com/en/latest/nethereum-codegen-vscodesolidity/) +- [Unity e Ethereum: perché e come](https://www.raywenderlich.com/5509-unity-and-ethereum-why-and-how) +- [Crea API Web di ASP.NET Core per dApp Ethereum](https://tech-mint.com/blockchain/create-asp-net-core-web-api-for-ethereum-dapps/) +- [Uso di Nethereum Web3 per implementare un sistema di tracciamento della catena di fornitura](http://blog.pomiager.com/post/using-nethereum-web3-to-implement-a-supply-chain-traking-system4) +- [Elaborazione dei blocchi di Nethereum](https://nethereum.readthedocs.io/en/latest/nethereum-block-processing-detail/), con [esempio di Playground C#](http://playground.nethereum.com/csharp/id/1025) +- [Streaming Websocket di Nethereum](https://nethereum.readthedocs.io/en/latest/nethereum-subscriptions-streaming/) +- [Kaleido e Nethereum](https://kaleido.io/kaleido-and-nethereum/) +- [Quorum e Nethereum](https://github.com/Nethereum/Nethereum/blob/master/src/Nethereum.Quorum/README.md) -## Modelli d'uso avanzati {#advanced-use-patterns} +## Modelli di utilizzo avanzati {#advanced-use-patterns} -- [Azure Key Vault And Nethereum](https://github.com/Azure-Samples/bc-community-samples/tree/master/akv-nethereum) +- [Azure Key Vault e Nethereum](https://github.com/Azure-Samples/bc-community-samples/tree/master/akv-nethereum) - [Nethereum.DappHybrid](https://github.com/Nethereum/Nethereum.DappHybrid) -- [Ujo Nethereum backend reference architecture](https://docs.nethereum.com/en/latest/nethereum-ujo-backend-sample/) +- [Architettura di riferimento del backend di Ujo Nethereum](https://docs.nethereum.com/en/latest/nethereum-ujo-backend-sample/) -## Progetti .NET, strumenti e altre risorse interessanti {#dot-net-projects-tools-and-other-fun-stuff} +## Progetti .NET, strumenti e altre cose divertenti {#dot-net-projects-tools-and-other-fun-stuff} -- [Playground Nethereum](http://playground.nethereum.com/) - _Compila, crea ed esegui frammenti di codice Nethereum nel browser_ -- [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): _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)_ +- [Nethereum Playground](http://playground.nethereum.com/) - _Compila, crea ed esegui frammenti di codice Nethereum nel browser_ +- [Nethereum Codegen Blazor](https://github.com/Nethereum/Nethereum.CodeGen.Blazor) - _Codegen di Nethereum con interfaccia utente in Blazor_ +- [Nethereum Blazor](https://github.com/Nethereum/NethereumBlazor) - _Un esploratore blockchain leggero in .NET Wasm SPA e un portafoglio semplice_ +- [Wonka Business Rules Engine](https://docs.nethereum.com/en/latest/wonka/) - _Un motore di regole di business (sia per la piattaforma .NET che per la piattaforma Ethereum) che è intrinsecamente guidato da metadati_ +- [Nethermind](https://github.com/NethermindEth/nethermind) - _Un client Ethereum in .NET Core per Linux, Windows, MacOS_ +- [eth-utils](https://github.com/ethereum/eth-utils/) - _funzioni di utilità per lavorare con le basi di codice di Ethereum_ +- [TestChains](https://github.com/Nethereum/TestChains) - _Devchain .NET preconfigurate per una risposta rapida (PoA)_ 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. 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)! +Noi di Nethereum ci troviamo per lo più su [Gitter](https://gitter.im/Nethereum/Nethereum) dove tutti possono fare/rispondere a domande, ricevere aiuto o semplicemente rilassarsi. Sentiti libero di fare una PR o aprire una segnalazione sul [repository GitHub di Nethereum](https://github.com/Nethereum), o semplicemente sfogliare i numerosi progetti secondari/di esempio che abbiamo. Puoi trovarci 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). +Se sei nuovo su Nethermind e hai bisogno di 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 problema sul [repository GitHub di Nethermind](https://github.com/NethermindEth/nethermind). ## Altri elenchi aggregati {#other-aggregated-lists} -[Official Nethereum Site](https://nethereum.com/) -[Official Nethermind Site](https://nethermind.io/) +[Sito ufficiale di Nethereum](https://nethereum.com/) +[Sito ufficiale di Nethermind](https://nethermind.io/) diff --git a/public/content/translations/it/developers/docs/programming-languages/elixir/index.md b/public/content/translations/it/developers/docs/programming-languages/elixir/index.md index cac80dd116e..76f8a20fc0a 100644 --- a/public/content/translations/it/developers/docs/programming-languages/elixir/index.md +++ b/public/content/translations/it/developers/docs/programming-languages/elixir/index.md @@ -7,13 +7,13 @@ incomplete: false Scopri come sviluppare per Ethereum utilizzando progetti e strumenti basati su Elixir. -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, il che significa che nessuna singola entità o persona le controlla e sono quasi impossibile da censurare. +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. ## Iniziare con i contratti intelligenti e il linguaggio Solidity {#getting-started-with-smart-contracts-and-solidity} **Fai i tuoi primi passi per integrare Elixir con Ethereum** -Hai prima bisogno di nozioni di base? Consulta [ethereum.org/learn](/learn/) o [ethereum.org/developers](/developers/). +Ti servono prima le nozioni di base? Consulta [ethereum.org/learn](/learn/) o [ethereum.org/developers](/developers/). - [Blockchain spiegate](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) - [Comprendere i contratti intelligenti](https://kauri.io/article/e4f66c6079e74a4a9b532148d3158188/ethereum-101-part-5-the-smart-contract) diff --git a/public/content/translations/it/developers/docs/programming-languages/golang/index.md b/public/content/translations/it/developers/docs/programming-languages/golang/index.md index 87694a4fc17..d606edf761e 100644 --- a/public/content/translations/it/developers/docs/programming-languages/golang/index.md +++ b/public/content/translations/it/developers/docs/programming-languages/golang/index.md @@ -5,80 +5,80 @@ lang: it incomplete: true --- -Scopri come sviluppare per Ethereum usando progetti e strumenti basati su Go +Scopri come sviluppare per Ethereum utilizzando progetti e strumenti basati su Go 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 i contratti intelligenti e il linguaggio Solidity {#getting-started-with-smart-contracts-and-solidity} +## Iniziare 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/). +Ti servono prima le nozioni di base? Consulta [ethereum.org/learn](/learn/) o [ethereum.org/developers](/developers/). -- [Blockchain Explained](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) -- [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) +- [Blockchain spiegate](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) +- [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 a compilare e distribuire Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) +- [Tutorial sui contratti](https://github.com/ethereum/go-ethereum/wiki/Contract-Tutorial) ## Articoli e libri per principianti {#beginner-articles-and-books} -- [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) -- [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_ +- [Introduzione a Geth](https://medium.com/@tzhenghao/getting-started-with-geth-c1a30b8d6458) +- [Usa Golang per connetterti a Ethereum](https://www.youtube.com/watch?v=-7uChuO_VzM) +- [Distribuire contratti intelligenti di Ethereum usando Golang](https://www.youtube.com/watch?v=pytGqQmDslE) +- [Una guida passo passo per testare e distribuire 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: Sviluppo di Ethereum con Go](https://goethereumbook.org/) - _Sviluppa applicazioni Ethereum con Go_ -## Articoli e documentazione di livello intermedio {#intermediate-articles-and-docs} +## Articoli e documenti intermedi {#intermediate-articles-and-docs} -- [Go Ethereum Documentation](https://geth.ethereum.org/docs/) - _La documentazione per il Golang ufficiale di Ethereum_ -- [Guida per Programmatori a Erigon](https://github.com/ledgerwatch/erigon/blob/devel/docs/programmers_guide/guide.md) - _Guida illustrata con l'albero di stato, prove multiple ed elaborazione delle transazioni_ -- [Erigon ed Ethereum senza Stato](https://youtu.be/3-Mn7OckSus?t=394) - _Conferenza della Community di Ethereum 2020 (EthCC 3)_ -- [Erigon: ottimizzare i client di Ethereum](https://www.youtube.com/watch?v=CSpc1vZQW2Q) - _2018 Devcon 4_ +- [Documentazione di Go Ethereum](https://geth.ethereum.org/docs/) - _La documentazione per il Golang ufficiale di Ethereum_ +- [Guida del programmatore di Erigon](https://github.com/ledgerwatch/erigon/blob/devel/docs/programmers_guide/guide.md) - _Guida illustrata che include l'albero di stato, le multi-prove e l'elaborazione delle transazioni_ +- [Erigon e Ethereum senza stato](https://youtu.be/3-Mn7OckSus?t=394) - _Conferenza della Community di Ethereum 2020 (EthCC 3)_ +- [Erigon: ottimizzare i client di Ethereum](https://www.youtube.com/watch?v=CSpc1vZQW2Q) - _Devcon 4 del 2018_ - [Go Ethereum GoDoc](https://godoc.org/github.com/ethereum/go-ethereum) -- [Creare una dapp in Go con Geth](https://kauri.io/#collections/A%20Hackathon%20Survival%20Guide/creating-a-dapp-in-go-with-geth/) -- [Work with Ethereum Private Network with Golang and Geth](https://myhsts.org/tutorial-learn-how-to-work-with-ethereum-private-network-with-golang-with-geth.php) -- [Unit testing Solidity contracts on Ethereum with Go](https://medium.com/coinmonks/unit-testing-solidity-contracts-on-ethereum-with-go-3cc924091281) -- [Quick reference for using Geth as a library](https://medium.com/coinmonks/web3-go-part-1-31c68c68e20e) +- [Creare una dApp in Go con Geth](https://kauri.io/#collections/A%20Hackathon%20Survival%20Guide/creating-a-dapp-in-go-with-geth/) +- [Lavorare con una rete privata di Ethereum con Golang e Geth](https://myhsts.org/tutorial-learn-how-to-work-with-ethereum-private-network-with-golang-with-geth.php) +- [Test unitari di contratti Solidity su Ethereum con Go](https://medium.com/coinmonks/unit-testing-solidity-contracts-on-ethereum-with-go-3cc924091281) +- [Guida di riferimento rapida per l'uso di Geth come libreria](https://medium.com/coinmonks/web3-go-part-1-31c68c68e20e) -## Modelli d'uso avanzati {#advanced-use-patterns} +## Modelli di utilizzo avanzati {#advanced-use-patterns} -- [The GETH Simulated Backend](https://kauri.io/#collections/An%20ethereum%20test%20toolkit%20in%20Go/the-geth-simulated-backend/#_top) -- [Blockchain-as-a-Service Apps Using Ethereum and Quorum](https://blockchain.dcwebmakers.com/blockchain-as-a-service-apps-using-ethereum-and-quorum.html) -- [Distributed Storage IPFS and Swarm in Ethereum Blockchain Applications](https://blockchain.dcwebmakers.com/work-with-distributed-storage-ipfs-and-swarm-in-ethereum.html) -- [Mobile Clients: Libraries and Inproc Ethereum Nodes](https://github.com/ethereum/go-ethereum/wiki/Mobile-Clients:-Libraries-and-Inproc-Ethereum-Nodes) -- [Dapp native: Collegamenti di Go ai contratti di Ethereum](https://github.com/ethereum/go-ethereum/wiki/Native-DApps:-Go-bindings-to-Ethereum-contracts) +- [Il Backend simulato di GETH](https://kauri.io/#collections/An%20ethereum%20test%20toolkit%20in%20Go/the-geth-simulated-backend/#_top) +- [App Blockchain-as-a-Service con Ethereum e Quorum](https://blockchain.dcwebmakers.com/blockchain-as-a-service-apps-using-ethereum-and-quorum.html) +- [Archiviazione distribuita IPFS e Swarm nelle applicazioni Blockchain di Ethereum](https://blockchain.dcwebmakers.com/work-with-distributed-storage-ipfs-and-swarm-in-ethereum.html) +- [Client mobili: Librerie e Nodi Ethereum Inproc](https://github.com/ethereum/go-ethereum/wiki/Mobile-Clients:-Libraries-and-Inproc-Ethereum-Nodes) +- [dApp native: binding di Go a contratti Ethereum](https://github.com/ethereum/go-ethereum/wiki/Native-DApps:-Go-bindings-to-Ethereum-contracts) -## Progetti e strumenti di Go {#go-projects-and-tools} +## Progetti e strumenti Go {#go-projects-and-tools} -- [Geth / Go Ethereum](https://github.com/ethereum/go-ethereum) - _Implementazione ufficiale di Go del protocollo di Ethereum_ -- [Go Ethereum Code Analysis](https://github.com/ZtesoftCS/go-ethereum-code-analysis) - _Controllo e analisi del codice sorgente di Go Ethereum_ -- [Erigon](https://github.com/ledgerwatch/erigon) - _Derivato più veloce di Go Ethereum, incentrato sull'archiviazione dei nodi_ +- [Geth / Go Ethereum](https://github.com/ethereum/go-ethereum) - _Implementazione ufficiale Go del protocollo Ethereum_ +- [Analisi del codice di Go Ethereum](https://github.com/ZtesoftCS/go-ethereum-code-analysis) - _Revisione e analisi del codice sorgente di Go Ethereum_ +- [Erigon](https://github.com/ledgerwatch/erigon) - _Derivato più veloce di Go Ethereum, con un focus sui nodi di archivio_ - [Golem](https://github.com/golemfactory/golem) - _Golem sta creando un mercato globale per la potenza di calcolo_ -- [Quorum](https://github.com/jpmorganchase/quorum) - _Implementazione con permessi di Ethereum a supporto della privacy dei dati_ -- [Prysm](https://github.com/prysmaticlabs/prysm) - _Implementazione Go di 'Serenity' 2.0 per Ethereum_ -- [Eth Tweet](https://github.com/yep/eth-tweet) - _Twitter decentralizzato: un servizio di microblogging sulla blockchain di Ethereum_ -- [Plasma MVP Golang](https://github.com/kyokan/plasma) - _Implementazione di Golang ed estensione della specifica Minimum Viable Plasma_- -- [Open Ethereum Mining Pool](https://github.com/sammy007/open-ethereum-pool) - _Pool di mining open source di Ethereum_ -- [Ethereum HD Wallet](https://github.com/miguelmota/go-ethereum-hdwallet) - _Derivazioni del portafoglio HD di Ethereum in Go_ +- [Quorum](https://github.com/jpmorganchase/quorum) - _Un'implementazione con permessi di Ethereum a supporto della privacy dei dati_ +- [Prysm](https://github.com/prysmaticlabs/prysm) - _Implementazione Go di Ethereum 'Serenity' 2.0_ +- [Eth Tweet](https://github.com/yep/eth-tweet) - _Twitter decentralizzato: un servizio di microblogging in esecuzione sulla blockchain di Ethereum_ +- [Plasma MVP Golang](https://github.com/kyokan/plasma) — _Implementazione ed estensione Golang della specifica Minimum Viable Plasma_ +- [Open Ethereum Mining Pool](https://github.com/sammy007/open-ethereum-pool) - _Una mining pool di Ethereum open source_ +- [Portafoglio HD di Ethereum](https://github.com/miguelmota/go-ethereum-hdwallet) - _Derivazioni del portafoglio HD di Ethereum in Go_ - [Multi Geth](https://github.com/multi-geth/multi-geth) - _Supporto per molti tipi di reti Ethereum_ -- [Geth Light Client](https://github.com/zsfelfoldi/go-ethereum/wiki/Geth-Light-Client) - _Implementazione Geth del protocollo secondario Ethereum leggero_ -- [Ethereum Golang SDK](https://github.com/everFinance/goether) - _Una semplice implementazione del portafoglio e utilità in Golang_ -- [Covalent Golang SDK](https://github.com/covalenthq/covalent-api-sdk-go) - _Accesso efficiente ai dati della blockchain tramite la SDK di Go per oltre 200 blockchain_ +- [Client leggero di Geth](https://github.com/zsfelfoldi/go-ethereum/wiki/Geth-Light-Client) - _Implementazione di Geth del Light Ethereum Subprotocol_ +- [SDK Golang di Ethereum](https://github.com/everFinance/goether) - _Una semplice implementazione del portafoglio Ethereum e utilità in Golang_ +- [SDK Golang di Covalent](https://github.com/covalenthq/covalent-api-sdk-go) - _Accesso efficiente ai dati della blockchain tramite SDK Go per oltre 200 blockchain_ Cerchi altre risorse? Dai un'occhiata a [ethereum.org/developers](/developers/) ## Collaboratori della community di Go {#go-community-contributors} -- [Geth Discord](https://discordapp.com/invite/nthXNEv) -- [Geth Sgist](https://gitter.im/ethereum/go-ethereum) -- [Gophers Slack](https://invite.slack.golangbridge.org/) - [Canale #ethereum](https://gophers.slack.com/messages/C9HP1S9V2) +- [Discord di Geth](https://discordapp.com/invite/nthXNEv) +- [Gitter di Geth](https://gitter.im/ethereum/go-ethereum) +- [Slack di Gophers](https://invite.slack.golangbridge.org/) - [canale #ethereum](https://gophers.slack.com/messages/C9HP1S9V2) - [StackExchange - Ethereum](https://ethereum.stackexchange.com/) -- [Multi Geth Gitter](https://gitter.im/ethoxy/multi-geth) -- [Ethereum Gitter](https://gitter.im/ethereum/home) -- [Geth light Client Gitter](https://gitter.im/ethereum/light-client) +- [Gitter di Multi Geth](https://gitter.im/ethoxy/multi-geth) +- [Gitter di Ethereum](https://gitter.im/ethereum/home) +- [Gitter del client leggero di Geth](https://gitter.im/ethereum/light-client) ## Altri elenchi aggregati {#other-aggregated-lists} - [Awesome Ethereum](https://github.com/btomashvili/awesome-ethereum) -- [Consensys: A Definitive List of Ethereum Developer Tools](https://media.consensys.net/an-definitive-list-of-ethereum-developer-tools-2159ce865974) | [Fonte GitHub](https://github.com/ConsenSys/ethereum-developer-tools-list) +- [Consensys: un elenco definitivo degli strumenti per sviluppatori di Ethereum](https://media.consensys.net/an-definitive-list-of-ethereum-developer-tools-2159ce865974) | [Sorgente su GitHub](https://github.com/ConsenSys/ethereum-developer-tools-list) diff --git a/public/content/translations/it/developers/docs/programming-languages/index.md b/public/content/translations/it/developers/docs/programming-languages/index.md index 957682e4bb3..9ce8634ea2f 100644 --- a/public/content/translations/it/developers/docs/programming-languages/index.md +++ b/public/content/translations/it/developers/docs/programming-languages/index.md @@ -1,21 +1,22 @@ --- title: Linguaggi di programmazione -description: +description: Scopri le risorse di sviluppo per Ethereum per vari linguaggi di programmazione, tra cui JavaScript, Python, Go, Rust e altri. lang: it --- -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. +Un'idea sbagliata comune è che gli sviluppatori debbano scrivere [contratti intelligenti](/developers/docs/smart-contracts/) per poter sviluppare su Ethereum. Non è vero. +Uno degli aspetti positivi della rete e della community di 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. -## Scegli il linguaggio che preferisci {#data} +## Scegli il tuo linguaggio {#data} Seleziona il linguaggio di programmazione che preferisci per trovare progetti, risorse e community virtuali: - [Ethereum per sviluppatori Dart](/developers/docs/programming-languages/dart/) - [Ethereum per sviluppatori Delphi](/developers/docs/programming-languages/delphi/) - [Ethereum per sviluppatori .NET](/developers/docs/programming-languages/dot-net/) -- [Ethereum per gli sviluppatori Elixir](/developers/docs/programming-languages/elixir/) +- [Ethereum per sviluppatori Elixir](/developers/docs/programming-languages/elixir/) - [Ethereum per sviluppatori Go](/developers/docs/programming-languages/golang/) - [Ethereum per sviluppatori Java](/developers/docs/programming-languages/java/) - [Ethereum per sviluppatori JavaScript](/developers/docs/programming-languages/javascript/) @@ -25,6 +26,7 @@ Seleziona il linguaggio di programmazione che preferisci per trovare progetti, r ### Cosa succede se il mio linguaggio non è supportato {#other-lang} -Se vuoi collegarti alle risorse o puntare a una community virtuale per un linguaggio di programmazione aggiuntivo, puoi richiedere una nuova pagina [aprendo una segnalazione](https://github.com/ethereum/ethereum-org-website/issues/new/choose). +Se vuoi collegarti a risorse o indicare una community virtuale per un linguaggio di programmazione aggiuntivo, puoi richiedere una nuova pagina [aprendo una segnalazione](https://github.com/ethereum/ethereum-org-website/issues/new/choose). -Se vuoi solo scrivere il codice sull'interfaccia con la blockchain usando un linguaggio attualmente non supportato, puoi usare l'[interfaccia JSON-RPC](/developers/docs/apis/json-rpc/) per connetterti alla rete di Ethereum. Ogni linguaggio di programmazione che può usare TCP/IP può usare quest'interfaccia. +Se vuoi solo scrivere codice per interfacciarti con la blockchain usando un linguaggio attualmente non supportato +puoi usare l'[interfaccia JSON-RPC](/developers/docs/apis/json-rpc/) per connetterti alla rete di Ethereum. Ogni linguaggio di programmazione che può usare TCP/IP può usare quest'interfaccia. diff --git a/public/content/translations/it/developers/docs/programming-languages/java/index.md b/public/content/translations/it/developers/docs/programming-languages/java/index.md index c8e79bc762f..788e440e839 100644 --- a/public/content/translations/it/developers/docs/programming-languages/java/index.md +++ b/public/content/translations/it/developers/docs/programming-languages/java/index.md @@ -5,59 +5,60 @@ lang: it incomplete: true --- -Scopri come sviluppare per Ethereum usando progetti e strumenti basati su Java +Scopri come sviluppare per Ethereum utilizzando progetti e strumenti basati su Java -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. +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, pertanto nessuna entità singola o individuo le controlla e sono quasi impossibili da censurare. -## Primi passi con i contratti intelligenti e il linguaggio Solidity {#getting-started-with-smart-contracts-and-solidity} +## Iniziare 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/) +Ti servono prima le nozioni di base? Consulta [ethereum.org/learn](/learn/) o [ethereum.org/developers.](/developers/) -- [Blockchain Explained](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) -- [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) +- [Blockchain spiegate](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) +- [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 a compilare e distribuire Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) -## Lavorare con client Ethereum {#working-with-ethereum-clients} +## Lavorare con i client di Ethereum {#working-with-ethereum-clients} 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) -- [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](https://kauri.io/web3j-cheat-sheet-(java-ethereum)/5dfa1ea941ac3d0001ce1d90/c) +- [Connessione a un client Ethereum con Java, Eclipse e Web3J](https://kauri.io/article/b9eb647c47a546bc95693acc0be72546/connecting-to-an-ethereum-client-with-java-eclipse-and-web3j) +- [Gestire un account Ethereum con Java e Web3j](https://kauri.io/article/925d923e12c543da9a0a3e617be963b4/manage-an-ethereum-account-with-java-and-web3j) +- [Generare un wrapper Java 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 gli eventi dei contratti intelligenti di Ethereum](https://kauri.io/article/760f495423db42f988d17b8c145b0874/listening-for-ethereum-smart-contract-events-in-java) +- [Usare Besu (Pantheon), il client Ethereum Java con Linux](https://kauri.io/article/276dd27f1458443295eea58403fd6965/using-pantheon-the-java-ethereum-client-with-linux) +- [Eseguire un nodo Hyperledger Besu (Pantheon) nei test di integrazione Java](https://kauri.io/article/7dc3ecc391e54f7b8cbf4e5fa0caf780/running-a-pantheon-node-in-java-integration-tests) +- [Web3j Cheat Sheet](https://kauri.io/web3j-cheat-sheet-\(java-ethereum\)/5dfa1ea941ac3d0001ce1d90/c) -Scopri come utilizzare [ethers-kt](https://github.com/Kr1ptal/ethers-kt), una libreria Kotlin asincrona e ad alte prestazioni per interagire con le blockchain basate sull'EVM. Si occupando delle piattaforme JVM e Android. -- [Transfer ERC20 tokens](https://github.com/Kr1ptal/ethers-kt/blob/master/examples/src/main/kotlin/io/ethers/examples/abi/TransferERC20.kt) -- [UniswapV2 swap with event listening](https://github.com/Kr1ptal/ethers-kt/blob/master/examples/src/main/kotlin/io/ethers/examples/tokenswapwitheventlistening/TokenSwapWithEventListening.kt) -- [ETH / ERC20 balance tracker](https://github.com/Kr1ptal/ethers-kt/blob/master/examples/src/main/kotlin/io/ethers/examples/balancetracker/BalanceTracker.kt) +Scopri come usare [ethers-kt](https://github.com/Kr1ptal/ethers-kt), una libreria Kotlin asincrona e ad alte prestazioni per interagire con le blockchain basate sull'EVM. Si occupando delle piattaforme JVM e Android. -## Articoli di livello intermedio {#intermediate-articles} +- [Trasferire token ERC20](https://github.com/Kr1ptal/ethers-kt/blob/master/examples/src/main/kotlin/io/ethers/examples/abi/TransferERC20.kt) +- [Scambio UniswapV2 con ascolto degli eventi](https://github.com/Kr1ptal/ethers-kt/blob/master/examples/src/main/kotlin/io/ethers/examples/tokenswapwitheventlistening/TokenSwapWithEventListening.kt) +- [Tracker del saldo ETH / ERC20](https://github.com/Kr1ptal/ethers-kt/blob/master/examples/src/main/kotlin/io/ethers/examples/balancetracker/BalanceTracker.kt) -- [Managing storage in a Java application with IPFS](https://kauri.io/article/3e8494f4f56f48c4bb77f1f925c6d926/managing-storage-in-a-java-application-with-ipfs) -- [Manage ERC20 tokens in Java with Web3j](https://kauri.io/article/d13e911bbf624108b1d5718175a5e0a0/manage-erc20-tokens-in-java-with-web3j) -- [Web3j Transaction Managers](https://kauri.io/article/4cb780bb4d0846438d11885a25b6d7e7/web3j-transaction-managers) +## Articoli intermedi {#intermediate-articles} -## Modelli d'uso avanzati {#advanced-use-patterns} +- [Gestione dell'archiviazione in un'applicazione Java con IPFS](https://kauri.io/article/3e8494f4f56f48c4bb77f1f925c6d926/managing-storage-in-a-java-application-with-ipfs) +- [Gestire i token ERC20 in Java con Web3j](https://kauri.io/article/d13e911bbf624108b1d5718175a5e0a0/manage-erc20-tokens-in-java-with-web3j) +- [Manager delle transazioni Web3j](https://kauri.io/article/4cb780bb4d0846438d11885a25b6d7e7/web3j-transaction-managers) -- [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) +## Modelli di utilizzo avanzati {#advanced-use-patterns} -## Progetti e strumenti di Java {#java-projects-and-tools} +- [Utilizzo di Eventeum per creare una cache di dati di un contratto intelligente Java](https://kauri.io/article/fe81ee9612eb4e5a9ab72790ef24283d/using-eventeum-to-build-a-java-smart-contract-data-cache) -- [Web3J (Library for Interacting with Ethereum Clients)](https://github.com/web3j/web3j) -- [ethers-kt (Async, high-performance Kotlin/Java/Android library for EVM-based blockchains.)](https://github.com/Kr1ptal/ethers-kt) -- [Eventeum (Event Listener)](https://github.com/ConsenSys/eventeum) -- [Mahuta (IPFS Dev Tools)](https://github.com/ConsenSys/mahuta) +## Progetti e strumenti Java {#java-projects-and-tools} + +- [Web3J (Libreria per interagire con i client Ethereum)](https://github.com/web3j/web3j) +- [ethers-kt (Libreria asincrona ad alte prestazioni per Kotlin/Java/Android per blockchain basate su EVM.)](https://github.com/Kr1ptal/ethers-kt) +- [Eventeum (Listener di eventi)](https://github.com/ConsenSys/eventeum) +- [Mahuta (Strumenti di sviluppo IPFS)](https://github.com/ConsenSys/mahuta) Cerchi altre risorse? Dai un'occhiata a [ethereum.org/developers.](/developers/) -## Collaboratori della community di Java {#java-community-contributors} +## Collaboratori della community Java {#java-community-contributors} - [IO Builders](https://io.builders) - [Kauri](https://kauri.io) diff --git a/public/content/translations/it/developers/docs/programming-languages/javascript/index.md b/public/content/translations/it/developers/docs/programming-languages/javascript/index.md index e6e69f0248c..aec4d10ef6d 100644 --- a/public/content/translations/it/developers/docs/programming-languages/javascript/index.md +++ b/public/content/translations/it/developers/docs/programming-languages/javascript/index.md @@ -4,35 +4,36 @@ description: Impara a sviluppare per Ethereum usando progetti e strumenti basati lang: it --- -JavaScript è tra i linguaggi più popolari nell'ecosistema Ethereum. C'è persino un [team](https://github.com/ethereumjs) che si occupa di trasferire Ethereum il più possibile in JavaScript. +JavaScript è tra i linguaggi più popolari nell'ecosistema Ethereum. Infatti, c'è un [team](https://github.com/ethereumjs) dedicato a portare quanto più Ethereum possibile in JavaScript. -Esistono opportunità per scrivere in JavaScript (o simile) a [tutti i livelli dello stack](/developers/docs/ethereum-stack/). +Esistono opportunità per scrivere in JavaScript (o qualcosa di simile) a [tutti i livelli dello stack](/developers/docs/ethereum-stack/). ## Interagire con Ethereum {#interact-with-ethereum} ### Librerie API JavaScript {#javascript-api-libraries} -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/). +Se desideri 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/). 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:** +**Dai un'occhiata** -- [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._ -- [viem](https://viem.sh): un'interfaccia TypeScript per Ethereum che fornisce primitivi con assenza di stato di basso livello per interagire con Ethereum. +- [Web3.js](https://web3js.readthedocs.io) +- [Ethers.js](https://ethers.org) – _Contiene l'implementazione del portafoglio di Ethereum e le utility in JavaScript e TypeScript._ +- [viem](https://viem.sh) – _un'interfaccia TypeScript per Ethereum che fornisce primitive stateless di basso livello per interagire con Ethereum._ +- [Drift](https://ryangoree.github.io/drift/) – _una meta-libreria TypeScript con caching, hook e mock di test integrati per uno sviluppo Ethereum agevole tra le librerie web3._ ### Contratti intelligenti {#smart-contracts} -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. +Se sei uno sviluppatore JavaScript e desideri scrivere il tuo contratto intelligente, ti 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. -Di più sui [contratti intelligenti](/developers/docs/smart-contracts/). +Maggiori informazioni sui [contratti intelligenti](/developers/docs/smart-contracts/). ## Comprendere il protocollo {#understand-the-protocol} -### La macchina virtuale Ethereum {#the-ethereum-virtual-machine} +### La macchina virtuale di Ethereum {#the-ethereum-virtual-machine} -Esiste un'implementazione JavaScript della [macchina virtuale di Ethereum](/en/developers/docs/evm/), che supporta le regole più recenti relative alle diramazioni della rete. Le regole relative alle diramazioni si riferiscono alle modifiche apportate alla macchina virtuale di Ethereum (EVM) a seguito di upgrade pianificati. +Esiste un'implementazione JavaScript della [macchina virtuale di Ethereum](/developers/docs/evm/). che supporta le regole più recenti relative alle diramazioni della rete. Le regole relative alle diramazioni si riferiscono alle modifiche apportate alla macchina virtuale di Ethereum (EVM) a seguito di upgrade pianificati. È suddivisa in vari pacchetti JavaScript che puoi leggere per comprendere meglio: @@ -46,17 +47,15 @@ Ciò ti aiuterà a comprendere cose come "cos'è la struttura dei dati di un con Se preferisci invece leggere codice, questo codice JavaScript può essere un'alternativa interessante alla lettura della nostra documentazione. -**Guarda il monorepo** -[`ethereumjs`](https://github.com/ethereumjs/ethereumjs-vm) +**Consulta l'EVM** +[`@ethereumjs/evm`](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/evm) ### Nodi e client {#nodes-and-clients} Un client di Ethereumjs è in sviluppo attivo e ti consentirà di approfondire il funzionamento dei client di Ethereum in un linguaggio che comprendi: JavaScript! -Era ospitato in una [`repository`](https://github.com/ethereumjs/ethereumjs-client) indipendente, tuttavia, è stato in seguito unito nella repository singola di EthereumVM come pacchetto. - -**Guarda il client** -[`ethereumjs-client`](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/client) +**Consulta il client** +[`@ethereumjs/client`](https://github.com/ethereumjs/ethereumjs-monorepo/tree/master/packages/client) ## Altri progetti {#other-projects} @@ -64,9 +63,9 @@ Ci sono molte altre novità nel mondo di JavaScript per Ethereum, tra cui: - librerie di utilità per i portafogli. - strumenti per generare, importare ed esportare chiavi Ethereum. -- un'implementazione di `merkle-patricia-tree`, una struttura di dati delineata nel yellow paper di Ethereum. +- un'implementazione di `merkle-patricia-tree` – una struttura dati descritta nello Yellow Paper di Ethereum. -Approfondisci ciò che ti interessa maggiormente sulla [repository EthereumJS](https://github.com/ethereumjs) +Approfondisci ciò che ti interessa di più nel [repository EthereumJS](https://github.com/ethereumjs) ## Letture consigliate {#further-reading} diff --git a/public/content/translations/it/developers/docs/programming-languages/python/index.md b/public/content/translations/it/developers/docs/programming-languages/python/index.md index 8f7dab77ec9..b96efe9a75c 100644 --- a/public/content/translations/it/developers/docs/programming-languages/python/index.md +++ b/public/content/translations/it/developers/docs/programming-languages/python/index.md @@ -5,86 +5,95 @@ lang: it incomplete: true --- -Impara a sviluppare per Ehereum, utilizzando progetti e strumenti basati su Python +Scopri come sviluppare per Ethereum utilizzando progetti e strumenti basati su Python -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. +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, pertanto nessuna entità singola o individuo le controlla e sono quasi impossibili da censurare. -## Primi passi con i contratti intelligenti e il linguaggio Solidity {#getting-started-with-smart-contracts-and-solidity} +## Iniziare 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/). +Ti servono prima le nozioni di base? Consulta [ethereum.org/learn](/learn/) o [ethereum.org/developers](/developers/). -- [Blockchain Explained](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) -- [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) +- [Blockchain spiegate](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) +- [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 a compilare e distribuire Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) +- [Rapporto sullo stato di Python nella blockchain nel 2023](https://tradingstrategy.ai/blog/the-state-of-python-in-blockchain-in-2023) -## Articoli per chi inizia ora {#beginner-articles} +## Articoli per principianti {#beginner-articles} -- [Guida di uno sviluppatore (Python) a Ethereum](https://snakecharmers.ethereum.org/a-developers-guide-to-ethereum-pt-1/) -- [Report 2023 sullo stato di Python in blockchain](https://tradingstrategy.ai/blog/the-state-of-python-in-blockchain-in-2023) -- [Introduzione agli Smart Contract con Vyper (in inglese)](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 usando Python Flask (in inglese)](https://medium.com/coinmonks/how-to-develop-ethereum-contract-using-python-flask-9758fe65976e) -- [Introduzione a Web3.py · Ethereum per sviluppatori Python (in inglese)](https://www.dappuniversity.com/articles/web3-py-intro) -- [Come chiamare la funzione di uno Smart Contract usando Python e web3.py (in inglese)](https://stackoverflow.com/questions/57580702/how-to-call-a-smart-contract-function-using-python-and-web3-py) +- [Panoramica di web3.py](https://web3py.readthedocs.io/en/latest/overview.html) +- [Tour dell'ecosistema Python di Ethereum](https://snakecharmers.ethereum.org/python-ecosystem/) +- [Guida a Ethereum per sviluppatori (Python)](https://snakecharmers.ethereum.org/a-developers-guide-to-ethereum-pt-1/) +- [Prize-Worthy: una guida all'hackathon Python di Ethereum](https://snakecharmers.ethereum.org/prize-worthy/) +- [Introduzione ai contratti intelligenti con Vyper](https://kauri.io/#collections/Getting%20Started/an-introduction-to-smart-contracts-with-vyper/) +- [Come sviluppare un contratto Ethereum usando Python e Flask?](https://medium.com/coinmonks/how-to-develop-ethereum-contract-using-python-flask-9758fe65976e) +- [Introduzione a Web3.py · Ethereum per sviluppatori Python](https://www.dappuniversity.com/articles/web3-py-intro) +- [Come chiamare una 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} +## Articoli intermedi {#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) -- [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/) +- [Amici di web3.py: introduzione ad Ape](https://snakecharmers.ethereum.org/intro-to-ape/) +- [Sviluppo di dApp per programmatori Python](https://levelup.gitconnected.com/dapps-development-for-python-developers-f52b32b54f28) +- [Creare un'interfaccia Ethereum in Python: parte 1](https://hackernoon.com/creating-a-python-ethereum-interface-part-1-4d2e47ea0f4d) +- [Contratti intelligenti di Ethereum in Python: una guida (quasi) completa](https://hackernoon.com/ethereum-smart-contracts-in-python-a-comprehensive-ish-guide-771b03990988) + +## Modelli di utilizzo avanzati {#advanced-use-patterns} -## Modelli d'uso avanzati {#advanced-use-patterns} +- [Modelli di web3.py: sottoscrizioni agli eventi in tempo reale](https://snakecharmers.ethereum.org/subscriptions/) +- [Modelli di web3.py: WebSocketProvider](https://snakecharmers.ethereum.org/websocketprovider/) +- [Compilare, distribuire e chiamare un 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 Solidity con Slither](https://kauri.io/#collections/DevOps/analyze-solidity-smart-contracts-with-slither/#analyze-solidity-smart-contracts-with-slither) +- [Guida Fintech su blockchain: prestito e richiesta di prestiti con Python](https://blog.chain.link/blockchain-fintech-defi-tutorial-lending-borrowing-python/) -- [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/) +## Articoli archiviati + +- [Distribuire il proprio token ERC20 con Python e Brownie](https://betterprogramming.pub/python-blockchain-token-deployment-tutorial-create-an-erc20-77a5fd2e1a58) +- [Usare Brownie e Python per distribuire 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/) -## Progetti e strumenti di Python {#python-projects-and-tools} +## Progetti e strumenti Python {#python-projects-and-tools} ### Attivi: {#active} - [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_ -- [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_ -- [py-solc-x](https://pypi.org/project/py-solc-x/) - _Wrapper Python per il compilatore Solidity solc con supporto per 0.5.x_ +- [Vyper](https://github.com/ethereum/vyper/) - _Linguaggio di contratti intelligenti Pythonic per l'EVM_ +- [Ape](https://github.com/ApeWorX/ape) - _Lo strumento di sviluppo di contratti intelligenti per Pythonisti, Data Scientist e professionisti della sicurezza_ +- [py-evm](https://github.com/ethereum/py-evm) - _implementazione della macchina virtuale di 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 di Ethereum_ +- [py-solc-x](https://pypi.org/project/py-solc-x/) - _Wrapper Python per il compilatore Solidity solc con supporto 0.5.x_ - [pymaker](https://github.com/makerdao/pymaker) - _API Python per i contratti Maker_ -- [siwe](https://github.com/signinwithethereum/siwe-py) - _Accesso con Ethereum (siwe) per Python_ -- [DeFi di Web3 per le integrazioni di Ethereum](https://github.com/tradingstrategy-ai/web3-ethereum-defi) - _Un pacchetto di Python con integrazioni pronte per l'ERC-20, Uniswap e altri progetti popolari_ -- [Wake](https://getwake.io) - _Assetto completo di Python per testare i contratti, fuzzing, distribuzione, scansione delle vulnerabilità e navigazione del codice (server del linguaggio: [Tools for Solidity](https://marketplace.visualstudio.com/items?itemName=AckeeBlockchain.tools-for-solidity))_ +- [siwe](https://github.com/signinwithethereum/siwe-py) - _Sign in with Ethereum (siwe) per Python_ +- [Web3 DeFi per integrazioni Ethereum](https://github.com/tradingstrategy-ai/web3-ethereum-defi) - _Un pacchetto Python con integrazioni pronte per ERC-20, Uniswap e altri progetti popolari_ +- [Wake](https://getwake.io) - _Framework Python tutto-in-uno per test di contratti, fuzzing, distribuzione, scansione delle vulnerabilità e navigazione del codice (language server - [Strumenti per Solidity](https://marketplace.visualstudio.com/items?itemName=AckeeBlockchain.tools-for-solidity))_ -### Archiviato / Non più mantenuto: {#archived--no-longer-maintained} +### Archiviati / Non più mantenuti: {#archived--no-longer-maintained} -- [Trinity](https://github.com/ethereum/trinity) - _Il client Python di Ethereum_ +- [Trinity](https://github.com/ethereum/trinity) - _Client Python di Ethereum_ - [Mamba](https://github.com/arjunaskykok/mamba) - _Framework per scrivere, compilare e distribuire contratti intelligenti scritti nel linguaggio Vyper_ -- [Brownie](https://github.com/eth-brownie/brownie) - _Framework di Python per distribuire, testare e interagire con i contratti intelligenti di Ethereum_ -- [pydevp2p](https://github.com/ethereum/pydevp2p) - _implementazione dello stack di Ethereum P2P_ -- [py-wasm](https://github.com/ethereum/py-wasm) - _Implementazione Python dell'interprete di web assembly_ +- [Brownie](https://github.com/eth-brownie/brownie) - _Framework Python per distribuire, testare e interagire con i contratti intelligenti di Ethereum_ +- [pydevp2p](https://github.com/ethereum/pydevp2p) - _implementazione dello stack P2P di Ethereum_ +- [py-wasm](https://github.com/ethereum/py-wasm) - _implementazione Python dell'interprete di web assembly_ Cerchi altre risorse? Dai un'occhiata a [ethereum.org/developers](/developers/). -## Progetti che utilizzano gli strumenti Python {#projects-using-python-tooling} +## Progetti che utilizzano strumenti Python {#projects-using-python-tooling} 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 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 i contratti intelligenti](https://github.com/AlphaFinanceLab/alpha-staking-contract) +- [Yearn Finance](https://yearn.finance/) e [repository dei contratti dei vault di Yearn](https://github.com/yearn/yearn-vaults) +- [Curve](https://www.curve.finance/) e [repository dei contratti intelligenti di Curve](https://github.com/curvefi/curve-contract) +- [BadgerDAO](https://badger.com/) e [contratti intelligenti che utilizzano la toolchain Brownie](https://github.com/Badger-Finance/badger-system) +- [Sushi](https://sushi.com/) usa [Python per gestire e distribuire i suoi contratti di vesting](https://github.com/sushiswap/sushi-vesting-protocols) +- [Alpha Finance](https://alphafinance.io/), noto per 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} +## Discussione della community di Python {#python-community-contributors} -- [Discor dell'Ethereum Python Community](https://discord.gg/9zk7snTfWe) per Web3.py e altre discussioni del quadro di Python +- [Discord della community Python di Ethereum](https://discord.gg/9zk7snTfWe) per la discussione su Web3.py e altri framework Python - [Discord di Vyper](https://discord.gg/SdvKC79cJk) per la discussione sulla programmazione dei contratti intelligenti in Vyper ## Altri elenchi aggregati {#other-aggregated-lists} -La wiki di Vyper contiene un [incredibile elenco di risorse per Vyper](https://github.com/vyperlang/vyper/wiki/Vyper-tools-and-resources) \ No newline at end of file +La wiki di Vyper ha un [incredibile elenco di risorse per Vyper](https://github.com/vyperlang/vyper/wiki/Vyper-tools-and-resources) \ No newline at end of file diff --git a/public/content/translations/it/developers/docs/programming-languages/ruby/index.md b/public/content/translations/it/developers/docs/programming-languages/ruby/index.md index 78b485b302f..d338e734adb 100644 --- a/public/content/translations/it/developers/docs/programming-languages/ruby/index.md +++ b/public/content/translations/it/developers/docs/programming-languages/ruby/index.md @@ -5,56 +5,56 @@ lang: it incomplete: false --- -Impara a sviluppare per Ethereum usando progetti e strumenti basati su Ruby. +Scopri come sviluppare per Ethereum utilizzando progetti e strumenti basati su Ruby. 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 i contratti intelligenti e il linguaggio Solidity {#getting-started-with-smart-contracts-and-solidity} +## Iniziare 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/). +Ti servono prima le nozioni di base? Consulta [ethereum.org/learn](/learn/) o [ethereum.org/developers](/developers/). -- [Blockchain Explained](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) -- [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) +- [Blockchain spiegate](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) +- [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 a compilare e distribuire Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) -## Articoli per chi inizia ora {#beginner-articles} +## Articoli per principianti {#beginner-articles} -- [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) -- [Come connettersi alla rete di Ethereum usando Ruby](https://www.quicknode.com/guides/web3-sdks/how-to-connect-to-the-ethereum-network-using-ruby) -- [Come generare un nuovo indirizzo di Ethereum in Ruby](https://www.quicknode.com/guides/web3-sdks/how-to-generate-a-new-ethereum-address-in-ruby) +- [Comprendere finalmente i conti di Ethereum](https://dev.to/q9/finally-understanding-ethereum-accounts-1kpe) +- [Finalmente l'autenticazione degli utenti Rails con MetaMask](https://dev.to/q9/finally-authenticating-rails-users-with-metamask-3fj) +- [Come connettersi alla rete Ethereum usando Ruby](https://www.quicknode.com/guides/web3-sdks/how-to-connect-to-the-ethereum-network-using-ruby) +- [Come generare un nuovo indirizzo Ethereum in Ruby](https://www.quicknode.com/guides/web3-sdks/how-to-generate-a-new-ethereum-address-in-ruby) -## Articoli di livello intermedio {#intermediate-articles} +## Articoli intermedi {#intermediate-articles} -- [App della Blockchain con Ruby](https://www.nopio.com/blog/blockchain-app-ruby/) -- [Usa Ruby, connesso a Ethereum, per eseguire il Contratto Intelligente](https://titanwolf.org/Network/Articles/Article?AID=87285822-9b25-49d5-ba2a-7ad95fff7ef9) +- [App blockchain con Ruby](https://www.nopio.com/blog/blockchain-app-ruby/) +- [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} +## Progetti e strumenti di Ruby {#ruby-projects-and-tools} ### Attivi {#active} -- [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/signinwithethereum/siwe-ruby) - _Implementazione in Ruby dell'Accesso con Ethereum_ -- [siwe-rails](https://github.com/signinwithethereum/siwe-rails) - _Gemma di Rails che aggiunge la firma locale SIWE nei percorsi_ -- [siwe-rails-examples](https://github.com/signinwithethereum/siwe-rails-examples) - _Esempio di SIWE usando Ruby on Rails con un controller personalizzato_ -- [omniauth-siwe](https://github.com/signinwithethereum/omniauth-siwe) - _Strategia di OmniAuth per l’Accesso con Ethereum (SIWE)_ -- [omniauth-nft](https://github.com/valthon/omniauth-nft) - _Strategia di OmniAuth per autenticarsi tramite il possesso di NFT_ +- [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 Keccak (SHA3) usato da Ethereum_ +- [siwe-ruby](https://github.com/signinwithethereum/siwe-ruby) - _Implementazione in Ruby di Sign-In with Ethereum_ +- [siwe-rails](https://github.com/signinwithethereum/siwe-rails) - _Gem di Rails che aggiunge i percorsi di accesso locale SIWE_ +- [siwe-rails-examples](https://github.com/signinwithethereum/siwe-rails-examples) - _Esempio di SIWE con Ruby on Rails e controller personalizzato_ +- [omniauth-siwe](https://github.com/signinwithethereum/omniauth-siwe) - _Strategia OmniAuth per Sign In With Ethereum (SIWE)_ +- [omniauth-nft](https://github.com/valthon/omniauth-nft) - _Strategia OmniAuth per l'autenticazione tramite la proprietà di NFT_ - [ethereum-on-rails](https://github.com/q9f/ethereum-on-rails) - _Modello di Ethereum on Rails che consente di connettere MetaMask a Ruby on Rails_ -### Archiviato / Non più mantenuto {#archived--no-longer-maintained} +### Archiviati / Non più mantenuti {#archived--no-longer-maintained} -- [web3-eth](https://github.com/spikewilliams/vtada-ethereum) - _Metodi di chiamata RPC del nodo di Ethereum con Ruby_ -- [ethereum_tree](https://github.com/longhoangwkm/ethereum_tree) - _Libreria di Ruby per generare indirizzi ETH da un portafoglio Deterministico Gerarchico secondo lo standard BIP32_ +- [web3-eth](https://github.com/spikewilliams/vtada-ethereum) - _Chiamata di metodi RPC di un nodo Ethereum con Ruby_ +- [ethereum_tree](https://github.com/longhoangwkm/ethereum_tree) - _Libreria Ruby per generare indirizzi ETH da un portafoglio gerarchico deterministico secondo lo standard BIP32_ - [etherlite](https://github.com/budacom/etherlite) - _Integrazione di Ethereum per Ruby on Rails_ -- [ethereum.rb](https://github.com/EthWorks/ethereum.rb) - _Client di Ethereum in Ruby che usa l'interfaccia JSON-RPC per inviare transazioni, creare e interagire coi contratti, nonché utili toolkit per lavorare coi nodi di Ethereum_ +- [ethereum.rb](https://github.com/EthWorks/ethereum.rb) - _Client Ethereum in Ruby che utilizza l'interfaccia JSON-RPC per l'invio di transazioni, la creazione e l'interazione con i contratti, nonché un utile toolkit per lavorare con i nodi Ethereum_ - [omniauth-ethereum.rb](https://github.com/q9f/omniauth-ethereum.rb) - _Implementa la strategia del provider Ethereum per OmniAuth_ -Cerchi altre risorse? Dai un'occhiata alla [nostra home dello Sviluppatore](/developers/). +Cerchi altre risorse? Consulta la nostra [home degli Sviluppatori](/developers/). -## Collaboratori della community Ruby {#ruby-community-contributors} +## Collaboratori della community di Ruby {#ruby-community-contributors} -Il [Gruppo Ethereum Ruby Telegram](https://t.me/ruby_eth) ospita una community in rapida crescita ed è la risorsa dedicata alle discussioni su ognuno dei suddetti progetti e argomenti correlati. +Il [gruppo Telegram di Ethereum Ruby](https://t.me/ruby_eth) ospita una community in rapida crescita ed è la risorsa dedicata per le discussioni su uno qualsiasi dei suddetti progetti e argomenti correlati. diff --git a/public/content/translations/it/developers/docs/programming-languages/rust/index.md b/public/content/translations/it/developers/docs/programming-languages/rust/index.md index 15a16b6bfa9..e3be30ce7ff 100644 --- a/public/content/translations/it/developers/docs/programming-languages/rust/index.md +++ b/public/content/translations/it/developers/docs/programming-languages/rust/index.md @@ -5,53 +5,55 @@ lang: it incomplete: true --- -Impara a sviluppare per Ehereum, utilizzando progetti e strumenti basati su Rust +Impara a sviluppare per Ethereum usando progetti e strumenti basati su Rust -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. +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, pertanto nessuna entità singola o individuo le controlla e sono quasi impossibili da censurare. -## Primi passi con i contratti intelligenti e il linguaggio Solidity {#getting-started-with-smart-contracts-and-solidity} +## Iniziare 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/). +Ti servono prima le nozioni di base? Consulta [ethereum.org/learn](/learn/) o [ethereum.org/developers](/developers/). -- [Blockchain Explained](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) -- [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) +- [Blockchain spiegate](https://kauri.io/article/d55684513211466da7f8cc03987607d5/blockchain-explained) +- [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 a compilare e distribuire Solidity](https://kauri.io/article/973c5f54c4434bb1b0160cff8c695369/understanding-smart-contract-compilation-and-deployment) -## Articoli per chi inizia ora {#beginner-articles} +## Articoli per principianti {#beginner-articles} -- [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/) -- [Tutorial passo-passo per scrivere contratti in rust Wasm per Kovan (in inglese)](https://github.com/paritytech/pwasm-tutorial) +- [Il client Rust di Ethereum](https://openethereum.github.io/) \* **Nota che OpenEthereum [è stato deprecato](https://medium.com/openethereum/gnosis-joins-erigon-formerly-turbo-geth-to-release-next-gen-ethereum-client-c6708dd06dd) e non è più mantenuto.** Usalo con cautela e preferibilmente passa a un'altra implementazione di client. +- [Inviare transazioni a Ethereum usando Rust](https://kauri.io/#collections/A%20Hackathon%20Survival%20Guide/sending-ethereum-transactions-with-rust/) +- [Una guida passo-passo su come scrivere contratti in rust Wasm per Kovan](https://github.com/paritytech/pwasm-tutorial) -## Articoli di livello intermedio {#intermediate-articles} +## Articoli intermedi {#intermediate-articles} -## Modelli d'uso avanzati {#advanced-use-patterns} +## Modelli di utilizzo avanzati {#advanced-use-patterns} -- [Libreria pwasm_ethereum esterna per interagire con reti di tipo Ethereum (in inglese)](https://github.com/openethereum/pwasm-ethereum) -- [Creare una chat decentralizzata usando JavaScript e Rust (in inglese)](https://medium.com/perlin-network/build-a-decentralized-chat-using-javascript-rust-webassembly-c775f8484b52) -- [Creare un'app decentralizzata Todo usando Vue.js e Rust (in inglese)](https://medium.com/@jjmace01/build-a-decentralized-todo-app-using-vue-js-rust-webassembly-5381a1895beb) +- [libreria di esterni pwasm_ethereum per interagire con reti simili a Ethereum](https://github.com/openethereum/pwasm-ethereum) -- [Costruisci una blockchain in Rust](https://blog.logrocket.com/how-to-build-a-blockchain-in-rust/) +- [Creare una chat decentralizzata usando JavaScript e Rust](https://medium.com/perlin-network/build-a-decentralized-chat-using-javascript-rust-webassembly-c775f8484b52) + +- [Creare un'app per elenchi di cose da fare decentralizzata usando Vue.js & Rust](https://medium.com/@jjmace01/build-a-decentralized-todo-app-using-vue-js-rust-webassembly-5381a1895beb) + +- [Creare una blockchain in Rust](https://blog.logrocket.com/how-to-build-a-blockchain-in-rust/) ## Progetti e strumenti di Rust {#rust-projects-and-tools} -- [pwasm-ethereum](https://github.com/paritytech/pwasm-ethereum) - _Raccolta di esterni per interagire con reti simili a Ethereum_ -- [Lighthouse](https://github.com/sigp/lighthouse) - _Client veloce del livello di consenso di Ethereum_ +- [pwasm-ethereum](https://github.com/paritytech/pwasm-ethereum) - _Collezione di esterni per interagire con reti simili a Ethereum_ +- [Lighthouse](https://github.com/sigp/lighthouse) - _Client veloce per il livello del consenso di Ethereum_ - [Ethereum WebAssembly](https://ewasm.readthedocs.io/en/mkdocs/) - _Rivisitazione proposta del livello di esecuzione del contratto intelligente di Ethereum, utilizzando un sottoinsieme deterministico di WebAssembly_ - [oasis_std](https://docs.rs/oasis-std/latest/oasis_std/index.html) - _Riferimento API di OASIS_ -- [Solaris](https://github.com/paritytech/sol-rs) - _Test unitario dei contratti intelligenti in Solidity che sfrutta l'utilizzo dell'EVM nativa del Client di Parity._ -- [SputnikVM](https://github.com/rust-blockchain/evm) - _Implementazione della Macchina Virtuale di Ethereum in Rust_ -- [Wavelet](https://wavelet.perlin.net/docs/smart-contracts) - _Smart Contract Wavelet in Rust_ -- [Foundry](https://github.com/foundry-rs/foundry) - _Kit di strumenti per lo sviluppo di applicazioni Ethereum_ +- [Solaris](https://github.com/paritytech/sol-rs) - _Strumento per test unitari di contratti intelligenti in Solidity che usa l'EVM nativa del client Parity._ +- [SputnikVM](https://github.com/rust-blockchain/evm) - _Implementazione in Rust della Macchina Virtuale di Ethereum_ +- [Wavelet](https://wavelet.perlin.net/docs/smart-contracts) - _Contratto intelligente Wavelet in Rust_ +- [Foundry](https://github.com/foundry-rs/foundry) - _Toolkit per lo sviluppo di applicazioni Ethereum_ - [Alloy](https://alloy.rs) - _Librerie ad alte prestazioni, ben testate e documentate per interagire con Ethereum e altre catene basate su EVM._ -- [Ethers_rs](https://github.com/gakonst/ethers-rs) - _Libreria di Ethereum e implementazione di portafogli_ -- [SewUp](https://github.com/second-state/SewUp) - _Una libreria per aiutarti a creare il tuo contratto webassembly di Ethereum con Rust e sviluppare in un backend comune_ -- [Substreams](https://github.com/streamingfast/substreams): _tecnologia d'indicizzazione parallelizzata dei dati della blockchain_ -- [Reth](https://github.com/paradigmxyz/reth) Reth (abbreviazione di Rust Ethereum) è una nuova implementazione a nodo completo su Ethereum -- [Awesome Ethereum Rust](https://github.com/Vid201/awesome-ethereum-rust): _Una raccolta curata di progetti nell'ecosistema di Ethereum, scritta in Rust_ +- [Ethers_rs](https://github.com/gakonst/ethers-rs) - _Implementazione di libreria e portafoglio Ethereum_ +- [SewUp](https://github.com/second-state/SewUp) - _Una libreria che ti aiuta a creare il tuo contratto webassembly di Ethereum con Rust e a sviluppare come in un backend comune_ +- [Substreams](https://github.com/streamingfast/substreams) - _Tecnologia di indicizzazione parallelizzata dei dati della blockchain_ +- [Reth](https://github.com/paradigmxyz/reth) Reth (abbreviazione di Rust Ethereum) è una nuova implementazione di nodo completo Ethereum +- [Awesome Ethereum Rust](https://github.com/Vid201/awesome-ethereum-rust) - _Una raccolta curata di progetti scritti in Rust nell'ecosistema Ethereum_ Cerchi altre risorse? Dai un'occhiata a [ethereum.org/developers.](/developers/) diff --git a/public/content/translations/it/developers/docs/scaling/index.md b/public/content/translations/it/developers/docs/scaling/index.md index 6fd3b842b9b..97da0bd92d5 100644 --- a/public/content/translations/it/developers/docs/scaling/index.md +++ b/public/content/translations/it/developers/docs/scaling/index.md @@ -1,6 +1,6 @@ --- -title: Scalabilità -description: Introduzione alle diverse opzioni di scalabilità attualmente in fase di sviluppo da parte della community Ethereum. +title: "Scalabilità" +description: "Introduzione alle diverse opzioni di scalabilità attualmente in fase di sviluppo da parte della community Ethereum." lang: it sidebarDepth: 3 --- @@ -19,7 +19,7 @@ A livello concettuale, per prima cosa occorre distinguere tra scalabilità on-ch Dovresti avere una buona conoscenza di tutti gli argomenti fondamentali. L'implementazione di soluzioni di scalabilità è un argomento avanzato, in quanto la tecnologia è meno testata sul campo e continua ad essere oggetto di ricerca e sviluppo. -## Scalabilità on-chain {#on-chain-scaling} +## Scalabilità on-chain {#onchain-scaling} La scalabilità on-chain richiede modifiche al protocollo Ethereum ([rete principale](/glossary/#mainnet) di livello 1). Per molto tempo si è pensato che lo sharding della blockchain avrebbe ridimensionato Ethereum. Questo avrebbe coinvolto la divisione della blockchain in pezzi discreti (shard), che sarebbero stati verificati da sottoinsiemi dei validatori. Tuttavia, il ridimensionamento dai rollup di livello 2 ha preso il controllo come la tecnica di ridimensionamento principale. Questa è supportata dall'aggiunta di una nuova e più economica forma di dati connessi ai blocchi di Ethereum, progettati specificamente per rendere i rollup economici per gli utenti. @@ -27,7 +27,7 @@ La scalabilità on-chain richiede modifiche al protocollo Ethereum ([rete princi Lo sharding è il processo di frammentazione di un database. Sottoinsiemi di validatori sarebbero responsabili dei singoli shard invece di tenere traccia di tutta la rete Ethereum. Un tempo destinato a essere trasferito verso il proof-of-stake prima della Fusione, lo sharding è stato per molto tempo sulla [tabella di marcia](/roadmap/) di Ethereum. Tuttavia, il rapido sviluppo dei [rollup di livello 2](#layer-2-scaling) e l'invenzione del [Dansharding](/roadmap/danksharding) (aggiunta di blob di dati di rollup ai blocchi di Ethereum che possono essere verificati in modo molto efficiente dai validatori), ha portato la community di Ethereum a preferire il ridimensionamento incentrato sui rollup piuttosto che sullo sharding. Ciò aiuterà anche a mantenere più semplice la logica del consenso di Ethereum. -## Scalabilità off-chain {#off-chain-scaling} +## Scalabilità off-chain {#offchain-scaling} Le soluzioni off-chain sono implementate separatamente dalla Rete principale di livello 1, e 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. diff --git a/public/content/translations/it/developers/docs/scaling/optimistic-rollups/index.md b/public/content/translations/it/developers/docs/scaling/optimistic-rollups/index.md index 65fc1e05800..ea335814158 100644 --- a/public/content/translations/it/developers/docs/scaling/optimistic-rollups/index.md +++ b/public/content/translations/it/developers/docs/scaling/optimistic-rollups/index.md @@ -28,7 +28,7 @@ Se il batch del rollup non viene contestata (cioè, tutte le transazioni sono es ## 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". +I rollup ottimistici sono [soluzioni di ridimensionamento off-chain](/developers/docs/scaling/#offchain-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 optimistic rollup comprende le seguenti parti: diff --git a/public/content/translations/it/developers/docs/scaling/plasma/index.md b/public/content/translations/it/developers/docs/scaling/plasma/index.md index 67acee07f30..b89cffbde83 100644 --- a/public/content/translations/it/developers/docs/scaling/plasma/index.md +++ b/public/content/translations/it/developers/docs/scaling/plasma/index.md @@ -1,6 +1,6 @@ --- title: Catene plasma -description: Un'introduzione alle catene plasma come soluzione di scalabilità, attualmente utilizzata dalla comunità Ethereum. +description: "Un'introduzione alle catene plasma come soluzione di scalabilità, attualmente utilizzata dalla comunità Ethereum." lang: it incomplete: true sidebarDepth: 3 @@ -24,7 +24,7 @@ Le funzioni del contratto Plasma, tra le altre cose, fungono da [ponte](/develop I componenti di base del quadro Plasma sono: -### Calcolo off-chain {#off-chain-computation} +### Calcolo off-chain {#offchain-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. diff --git a/public/content/translations/it/developers/docs/scaling/validium/index.md b/public/content/translations/it/developers/docs/scaling/validium/index.md index ea548046013..e5e2f46d99c 100644 --- a/public/content/translations/it/developers/docs/scaling/validium/index.md +++ b/public/content/translations/it/developers/docs/scaling/validium/index.md @@ -1,6 +1,6 @@ --- title: Validium -description: Un'introduzione a Validium come soluzione di scalabilità, attualmente utilizzata dalla comunità Ethereum. +description: "Un'introduzione a Validium come soluzione di scalabilità, attualmente utilizzata dalla comunità Ethereum." lang: it sidebarDepth: 3 --- @@ -119,7 +119,7 @@ Alcuni team, tuttavia, stanno cercando di ottimizzare gli opcode EVM esistenti p ## Come fanno i validium a ridimensionare Ethereum? {#scaling-ethereum-with-validiums} -### 1. Archiviazione dei dati off-chain {#off-chain-data-storage} +### 1. Archiviazione dei dati off-chain {#offchain-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](/roadmap/danksharding/) propone di migliorare la capacità di archiviazione dei dati di Ethereum per questo motivo). diff --git a/public/content/translations/it/developers/docs/scaling/zk-rollups/index.md b/public/content/translations/it/developers/docs/scaling/zk-rollups/index.md index c80610d5c15..9894b038d2b 100644 --- a/public/content/translations/it/developers/docs/scaling/zk-rollups/index.md +++ b/public/content/translations/it/developers/docs/scaling/zk-rollups/index.md @@ -18,7 +18,7 @@ Lo stato del rollup ZK è mantenuto da un contratto intelligente distribuito sul 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. +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 indice, 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} @@ -30,7 +30,7 @@ L'architettura principale del rollup ZK si compone dei seguenti componenti: 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 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/validium/), 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: @@ -40,7 +40,7 @@ I rollup ZK pubblicano dati di stato per ogni transazione elaborata al di fuori 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. +Sulla catena è necessario che gli utenti interagiscano col rollup. Senza l'accesso ai dati di stato, gli utenti non possono richiedere il saldo del proprio conto né avviare transazioni (es., prelievi), che si affidino alle informazioni di stato. ### Finalità della transazione {#transaction-finality} diff --git a/public/content/translations/it/developers/docs/smart-contracts/anatomy/index.md b/public/content/translations/it/developers/docs/smart-contracts/anatomy/index.md index a202d6d9ffd..5b2996c82fa 100644 --- a/public/content/translations/it/developers/docs/smart-contracts/anatomy/index.md +++ b/public/content/translations/it/developers/docs/smart-contracts/anatomy/index.md @@ -1,6 +1,6 @@ --- title: Anatomia dei contratti intelligenti -description: 'Uno sguardo approfondito all''anatomia di un contratto intelligente: le funzioni, i dati e le variabili.' +description: "Uno sguardo approfondito all'anatomia di un contratto intelligente: le funzioni, i dati e le variabili." lang: it --- @@ -8,18 +8,18 @@ Un contratto intelligente è un programma eseguito a un indirizzo su Ethereum. ## Prerequisiti {#prerequisites} -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. +Assicurati di aver letto prima i [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 l'archiviazione in un contratto intelligente è dispendioso, devi quindi considerare dove dovrebbero risiedere i tuoi dati. +Qualsiasi dato di contratto deve essere assegnato a una posizione: `storage` o `memory`. Modificare l'archiviazione in un contratto intelligente è dispendioso, devi quindi considerare dove dovrebbero risiedere i tuoi dati. -### Storage {#storage} +### Archivio {#storage} I dati persistenti sono detti storage (o spazio di archiviazione) e sono rappresentati da variabili di stato. Questi valori sono memorizzati permanentemente nella blockchain. È necessario dichiarare il tipo così che il contratto possa tenere traccia di quanto storage è necessario sulla blockchain quando viene compilato. ```solidity -// Esempio in Solidity +// Esempio in Solidity contract SimpleStorage { uint storedData; // Variabile di stato // ... @@ -31,7 +31,7 @@ contract SimpleStorage { storedData: int128 ``` -Se hai già programmato con linguaggi orientati agli oggetti, è probabile che tu abbia famigliarità con la maggior parte dei tipi, ma `address` potrebbe non essere noto se non hai mai sviluppato per Ethereum. +Se hai già programmato con linguaggi orientati agli oggetti, è probabile che tu abbia famigliarità con la maggior parte dei tipi, Tuttavia, il tipo `address` potrebbe esserti nuovo se hai appena iniziato a sviluppare su Ethereum. Un tipo `address` può contenere un indirizzo Ethereum che equivale a 20 byte o 160 bit. Restituisce una notazione esadecimale preceduta da 0x. @@ -41,32 +41,32 @@ Altri tipi includono: - numero intero - numeri a virgola fissa - array di byte a dimensione fissa -- array di byte di dimensioni dinamiche -- letterali interi e razionali -- stringhe +- array di byte a dimensione dinamica +- letterali razionali e interi +- letterali stringa - letterali esadecimali -- enumerazioni +- enum Per ulteriori spiegazioni, consulta la documentazione: -- [Vedi Vyper types](https://vyper.readthedocs.io/en/v0.1.0-beta.6/types.html#value-types) -- [Vedi Solidity types](https://solidity.readthedocs.io/en/latest/types.html#value-types) +- [Vedi i tipi Vyper](https://docs.vyperlang.org/en/v0.1.0-beta.6/types.html#value-types) +- [Vedi i tipi Solidity](https://docs.soliditylang.org/en/latest/types.html#value-types) ### Memoria {#memory} 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 (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). +Scopri di più su come l'EVM archivia i dati (Archiviazione, Memoria e Stack) nei [documenti di Solidity](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html#storage-memory-and-the-stack). -### Variabili ambientali {#environment-variables} +### Variabili d'ambiente {#environment-variables} Oltre alle variabili che vengono definite nel contratto, sono presenti alcune variabili globali speciali. Vengono utilizzate principalmente per fornire informazioni sulla blockchain o sulla transazione corrente. Esempi: -| **Proprietà** | **Variabile di stato** | **Descrizione** | -| ----------------- | ---------------------- | ------------------------------------------ | -| `block.timestamp` | uint256 | Data/ora dell'epoca del blocco corrente | +| **Proprietà** | **Variabile di stato** | **Descrizione** | +| ----------------- | ---------------------- | ------------------------------------------------------------- | +| `block.timestamp` | uint256 | Data/ora dell'epoca del blocco corrente | | `msg.sender` | address | Mittente del messaggio (chiamata corrente) | ## Funzioni {#functions} @@ -76,14 +76,14 @@ In termini estremamente semplici, le funzioni possono ottenere informazioni o im Ci sono due tipi di chiamata di funzione: - `internal` – non creano una chiamata all'EVM - - Le funzioni interne e le variabili di stato sono accessibili solo internamente (ovvero dall'interno del contratto corrente o dei contratti derivanti da esso). + - Le funzioni interne e le variabili di stato sono accessibili solo internamente (cioè, dall'interno del contratto corrente o dei contratti derivanti da esso) - `external` – creano una chiamata all'EVM - - Le funzioni esterne fanno parte dell'interfaccia del contratto, quindi possono essere chiamate da altri contratti e tramite transazioni. Una funzione esterna `f` non può essere chiamata internamente (quindi `f()` non funziona, ma `this.f()` funziona). + - Le funzioni esterne fanno parte dell'interfaccia del contratto, quindi possono essere chiamate da altri contratti e tramite transazioni. Una funzione esterna `f` non può essere chiamata internamente (cioè `f()` non funziona, ma `this.f()` funziona). Possono anche essere `public` o `private` -- Le funzioni `public` possono essere chiamate direttamente dall'interno del contratto o dall'esterno tramite messaggi -- Le funzioni `private` sono visibili solo per il contratto in cui sono definite e non da contratti derivati +- Le funzioni `public` possono essere chiamate internamente dal contratto o esternamente tramite messaggi +- Le funzioni `private` sono visibili solo per il contratto in cui sono definite e non nei contratti derivati Sia le funzioni che le variabili di stato possono essere rese pubbliche o private @@ -96,11 +96,11 @@ function update_name(string value) public { } ``` -- Il parametro `value` di tipo `string` viene passato alla funzione: `update_name` -- È dichiarato `public` e quindi chiunque può accedervi +- Il parametro `value` di tipo `string` è passato alla funzione: `update_name` +- È dichiarato `public`, il che significa che chiunque può accedervi - Non è dichiarato `view`, quindi può modificare lo stato del contratto -### Funzioni 'view' {#view-functions} +### Funzioni View {#view-functions} Queste funzioni promettono di non modificare lo stato dei dati del contratto. Tra gli esempi più comuni vi sono le funzioni "getter": puoi usarle ad esempio per ricevere un saldo dell'utente. @@ -123,27 +123,27 @@ def readName() -> string: Ecco cosa è considerato modifica dello stato: 1. Scrittura su variabili di stato. -2. [Emissione di eventi](https://solidity.readthedocs.io/en/v0.7.0/contracts.html#events). -3. [Creazione di altri contratti](https://solidity.readthedocs.io/en/v0.7.0/control-structures.html#creating-contracts). -4. Uso di `selfdestruct`. +2. [Emettere eventi](https://docs.soliditylang.org/en/v0.7.0/contracts.html#events). +3. [Creare altri contratti](https://docs.soliditylang.org/en/v0.7.0/control-structures.html#creating-contracts). +4. Uso di `selfdestruct`. 5. Invio di ether tramite chiamate. -6. Chiamata di qualsiasi funzione non contrassegnata con `view` o `pure`. +6. Chiamare qualsiasi funzione non contrassegnata come `view` o `pure`. 7. Utilizzo di chiamate di basso livello. 8. Utilizzo di assembly inline contenente determinati opcode. ### Funzioni del costruttore {#constructor-functions} -Quando il contratto viene distribuito per la prima volta, le funzioni `constructor` sono eseguite solo una volta. Come accade per `constructor` in molti linguaggi di programmazione basati su classi, queste funzioni spesso inizializzano le variabili di stato ai valori specificati. +Le funzioni `constructor` vengono eseguite una sola volta quando il contratto viene distribuito per la prima volta. Come il `constructor` in molti linguaggi di programmazione basati su classi, queste funzioni spesso inizializzano le variabili di stato ai loro valori specificati. ```solidity -// Esempi in Solidity -// Inizializza i dati del contratto, impostando `owner` +// Esempio di Solidity +// Inizializza i dati del contratto, impostando il `owner` // sull'indirizzo del creatore del contratto. constructor() public { - // Tutti gli Smart Contract si basano su transazioni esterne per attivare le proprie funzioni. - // `msg` è una variabile globale che include dati sulla transazione specificata, - // come indirizzo del mittente e valore degli ETH inclusi nella transazione. - // Per saperne di più: https://solidity.readthedocs.io/en/v0.5.10/units-and-global-variables.html#block-and-transaction-properties + // Tutti i contratti intelligenti si basano su transazioni esterne per attivare le sue funzioni. + // `msg` è una variabile globale che include i dati rilevanti sulla transazione data, + // come l'indirizzo del mittente e il valore ETH incluso nella transazione. + // Scopri di più: https://solidity.readthedocs.io/en/v0.5.10/units-and-global-variables.html#block-and-transaction-properties owner = msg.sender; } ``` @@ -167,7 +167,7 @@ Oltre alle variabili che vengono definite nel contratto, sono presenti alcune fu Queste, consentono ai contratti di inviare ETH agli altri conti. -## Scrittura delle funzioni {#writing-functions} +## Scrivere funzioni {#writing-functions} Una funzione ha bisogno di: @@ -180,19 +180,19 @@ Una funzione ha bisogno di: pragma solidity >=0.4.0 <=0.6.0; contract ExampleDapp { - string dapp_name; // state variable + string dapp_name; // variabile di stato - // Called when the contract is deployed and initializes the value + // Chiamato quando il contratto viene distribuito e inizializza il valore constructor() public { - dapp_name = "My Example dapp"; + dapp_name = "La mia dApp di esempio"; } - // Get Function + // Ottieni Funzione function read_name() public view returns(string) { return dapp_name; } - // Set Function + // Imposta Funzione function update_name(string value) public { dapp_name = value; } @@ -207,38 +207,38 @@ Gli eventi consentono al tuo contratto intelligente di comunicare con il tuo fro ## Esempi annotati {#annotated-examples} -Questi sono alcuni esempi scritti in Solidity. Se vuoi sperimentare con il codice, puoi interagire con questi esempi in [Remix](http://remix.ethereum.org). +Questi sono alcuni esempi scritti in Solidity. Se desideri fare pratica con il codice, puoi interagire con questi esempi in [Remix](http://remix.ethereum.org). -### Ciao mondo {#hello-world} +### Hello world {#hello-world} ```solidity -// Specifica la versione di Solidity, utilizzando il controllo delle versioni semantico. -// Per saperne di più: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#pragma +// Specifica la versione di Solidity, usando il versioning semantico. +// Scopri di più: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#pragma pragma solidity ^0.5.10; // Definisce un contratto chiamato `HelloWorld`. // Un contratto è una raccolta di funzioni e dati (il suo stato). -// Una volta distribuito, un contratto risiede in un indirizzo specifico della blockchain Ethereum. -// Per saperne di più: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html +// Una volta distribuito, un contratto risiede a un indirizzo specifico sulla blockchain di Ethereum. +// Scopri di più: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html contract HelloWorld { // Dichiara una variabile di stato `message` di tipo `string`. - // Le variabili di stato sono variabili con valori memorizzati in modo permanente nello spazio di archiviazione (storage) del contratto. + // Le variabili di stato sono variabili i cui valori sono permanentemente memorizzati nell'archiviazione del contratto. // La parola chiave `public` rende le variabili accessibili dall'esterno di un contratto // e crea una funzione che altri contratti o client possono chiamare per accedere al valore. string public message; - // Analogamente a molti linguaggi di programmazione basati su classi, un costruttore è - // una funzione speciale che viene eseguita solo al momento della creazione del contratto. + // Similmente a molti linguaggi orientati agli oggetti basati su classi, un costruttore è + // una funzione speciale eseguita solo al momento della creazione del contratto. // I costruttori sono utilizzati per inizializzare i dati del contratto. - // Maggiori informazioni: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constructors + // Scopri di più: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constructors constructor(string memory initMessage) public { - // Accetta un argomento di tipo string `initMessage` e imposta il valore - // nella variabile di archiviazione `message` del contratto). + // Accetta un argomento stringa `initMessage` e imposta il valore + // nella variabile di archiviazione `message` del contratto. message = initMessage; } - // Funzione pubblica che accetta un argomento string + // Una funzione pubblica che accetta un argomento stringa // e aggiorna la variabile di archiviazione `message`. function update(string memory newMessage) public { message = newMessage; @@ -252,54 +252,54 @@ contract HelloWorld { pragma solidity ^0.5.10; contract Token { - // Un 'address' è paragonabile a un indirizzo email. Viene usato per identificare un account su Ethereum. - // Gli indirizzi possono rappresentare uno Smart Contract o un account esterno (utente). - // Per saperne di più: https://solidity.readthedocs.io/en/v0.5.10/types.html#address + // Un `address` è paragonabile a un indirizzo e-mail - è usato per identificare un account su Ethereum. + // Gli indirizzi possono rappresentare un contratto intelligente o un account esterno (utente). + // Scopri di più: https://solidity.readthedocs.io/en/v0.5.10/types.html#address address public owner; - // Un `mapping` è essenzialmente una struttura dati di tipo tabella hash. - // Questo `mapping` assegna un numero intero senza segno (il saldo del token) a un indirizzo (il proprietario del token). - // Per saperne di più: https://solidity.readthedocs.io/en/v0.5.10/types.html#mapping-types + // Un `mapping` è essenzialmente una struttura dati di tabella hash. + // Questo `mapping` assegna un intero senza segno (il saldo del token) a un indirizzo (il detentore del token). + // Scopri di più: https://solidity.readthedocs.io/en/v0.5.10/types.html#mapping-types mapping (address => uint) public balances; - // Gli eventi consentono di registrare le attività sulla blockchain. - // I client Ethereum possono attendere gli eventi per reagire alle modifiche di stato del contratto. - // Ulteriori informazioni: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#events + // Gli eventi consentono la registrazione delle attività sulla blockchain. + // I client di Ethereum possono ascoltare gli eventi per reagire ai cambiamenti di stato del contratto. + // Scopri di più: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#events event Transfer(address from, address to, uint amount); - // Inizializza i dati del contratto, impostando `owner` + // Inizializza i dati del contratto, impostando il `owner` // sull'indirizzo del creatore del contratto. constructor() public { - // Tutti gli Smart Contract si basano su transazioni esterne per attivare le proprie funzioni. - // `msg` è una variabile globale che include dati relativi alla transazione specificata, - // come l'indirizzo del mittente e il valore in ETH incluso nella transazione. - // Per saperne di più: https://solidity.readthedocs.io/en/v0.5.10/units-and-global-variables.html#block-and-transaction-properties + // Tutti i contratti intelligenti si basano su transazioni esterne per attivare le sue funzioni. + // `msg` è una variabile globale che include i dati rilevanti sulla transazione data, + // come l'indirizzo del mittente e il valore ETH incluso nella transazione. + // Scopri di più: https://solidity.readthedocs.io/en/v0.5.10/units-and-global-variables.html#block-and-transaction-properties owner = msg.sender; } // Crea una quantità di nuovi token e li invia a un indirizzo. function mint(address receiver, uint amount) public { - // `require` è una struttura di controllo utilizzata per implementare determinate condizioni. + // `require` è una struttura di controllo usata per imporre determinate condizioni. // Se un'istruzione `require` restituisce `false`, viene attivata un'eccezione, - // che ripristina tutte le modifiche apportate allo stato durante la chiamata corrente. - // Learn more: https://solidity.readthedocs.io/en/v0.5.10/control-structures.html#error-handling-assert-require-revert-and-exceptions + // che annulla tutte le modifiche apportate allo stato durante la chiamata corrente. + // Scopri di più: 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."); + // Solo il proprietario del contratto può chiamare questa funzione + require(msg.sender == owner, "Non sei il proprietario."); - // Enforces a maximum amount of tokens - require(amount < 1e60, "Maximum issuance exceeded"); + // Impone una quantità massima di token + require(amount < 1e60, "Emissione massima superata"); - // Increases the balance of `receiver` by `amount` + // Aumenta il saldo di `receiver` di `amount` balances[receiver] += amount; } - // Sends an amount of existing tokens from any caller to an address. + // Invia una quantità di token esistenti da qualsiasi chiamante a un indirizzo. function transfer(address receiver, uint amount) public { // Il mittente deve avere abbastanza token da inviare - require(amount <= balances[msg.sender], "Insufficient balance."); + require(amount <= balances[msg.sender], "Saldo insufficiente."); - // Modifica i saldi di token dei due indirizzi + // Regola i saldi dei token dei due indirizzi balances[msg.sender] -= amount; balances[receiver] += amount; @@ -309,14 +309,14 @@ contract Token { } ``` -### Risorsa digitale univoca {#unique-digital-asset} +### Asset digitale unico {#unique-digital-asset} ```solidity pragma solidity ^0.5.10; -// Importa simboli da altri file nel contratto corrente. +// Importa i simboli da altri file nel contratto corrente. // In questo caso, una serie di contratti di supporto da OpenZeppelin. -// Per saperne di più: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#importing-other-source-files +// Scopri di più: 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"; @@ -325,27 +325,27 @@ import "../node_modules/@openzeppelin/contracts/math/SafeMath.sol"; // La parola chiave `is` viene utilizzata per ereditare funzioni e parole chiave da contratti esterni. // In questo caso, `CryptoPizza` eredita dai contratti `IERC721` e `ERC165`. -// Per saperne di più: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#inheritance +// Scopri di più: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#inheritance contract CryptoPizza is IERC721, ERC165 { - // Utilizza la libreria SafeMath di OpenZeppelin per eseguire operazioni aritmetiche in modo sicuro. - // Ulteriori informazioni: https://docs.openzeppelin.com/contracts/2. /api/math#SafeMath + // Usa la libreria SafeMath di OpenZeppelin per eseguire operazioni aritmetiche in sicurezza. + // Scopri di più: https://docs.openzeppelin.com/contracts/2.x/api/math#SafeMath using SafeMath for uint256; // Le variabili di stato costanti in Solidity sono simili ad altri linguaggi - // ma devono essere assegnate da un'espressione che è costante al momento della compilazione. + // ma è necessario assegnare da un'espressione che sia costante in fase di compilazione. // Scopri di più: 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; - // I tipi di struttura ti fanno definire il tuo tipo + // I tipi Struct ti consentono di definire il tuo tipo // Scopri di più: https://solidity.readthedocs.io/en/v0.5.10/types.html#structs struct Pizza { string name; uint256 dna; } - // Crea un insieme vuoto di strutture di Pizza + // Crea un array vuoto di struct Pizza Pizza[] public pizzas; // Mappatura dall'ID della pizza all'indirizzo del suo proprietario @@ -357,27 +357,27 @@ contract CryptoPizza is IERC721, ERC165 { // Mappatura dall'ID del token all'indirizzo approvato mapping(uint256 => address) pizzaApprovals; - // Puoi nidificare le mappature, questo esempio mappa le approvazioni da proprietario a operatore + // È possibile annidare le mappature, questo esempio mappa il proprietario alle approvazioni dell'operatore mapping(address => mapping(address => bool)) private operatorApprovals; - // Funzione interna per creare una Pizza casuale dalla stringa (nome) e dal DNA + // Funzione interna per creare una Pizza casuale da una stringa (nome) e DNA function _createPizza(string memory _name, uint256 _dna) // La parola chiave `internal` significa che questa funzione è visibile solo - // tra questo contratto e i contratti derivati da esso + // all'interno di questo contratto e dei contratti che derivano da questo contratto // Scopri di più: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#visibility-and-getters internal - // `isUnique` è un modificatore della funzione che verifica se la pizza esiste già + // `isUnique` è un modificatore di funzione che controlla se la pizza esiste già // Scopri di più: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html#function-modifiers isUnique(_name, _dna) { - // Aggiunge la Pizza all'insieme di Pizze e ottiene l'id + // Aggiunge la Pizza all'array di Pizze e ottiene l'id uint256 id = SafeMath.sub(pizzas.push(Pizza(_name, _dna)), 1); - // Verifica che il proprietario della Pizza sia l'utente corrente + // Controlla che il proprietario della Pizza sia lo stesso dell'utente corrente // Scopri di più: https://solidity.readthedocs.io/en/v0.5.10/control-structures.html#error-handling-assert-require-revert-and-exceptions // nota che address(0) è l'indirizzo zero, - // indicando che pizza[id] non è ancora allocato a un utente in particolare. + // a indicare che pizza[id] non è ancora assegnata a un utente particolare. assert(pizzaToOwner[id] == address(0)); @@ -389,28 +389,28 @@ contract CryptoPizza is IERC721, ERC165 { ); } - // Crea una Pizza casuale dalla stringa (nome) + // Crea una Pizza casuale da una stringa (nome) function createRandomPizza(string memory _name) public { uint256 randDna = generateRandomDna(_name, msg.sender); _createPizza(_name, randDna); } - // Genera DNA casuale dalla stringa (nome) e dall'indirizzo del proprietario (creatore) + // Genera un DNA casuale da una stringa (nome) e dall'indirizzo del proprietario (creatore) function generateRandomDna(string memory _str, address _owner) public - // Le funzioni contrassegnate come `pure` promettono di non modificare lo stato o non leggere da esso + // Le funzioni contrassegnate come `pure` promettono di non leggere o modificare lo stato // Scopri di più: https://solidity.readthedocs.io/en/v0.5.10/contracts.html#pure-functions pure returns (uint256) { - // Genera uint casuale dalla stringa (nome) + indirizzo (proprietario) + // Genera un uint casuale da una stringa (nome) + indirizzo (proprietario) uint256 rand = uint256(keccak256(abi.encodePacked(_str))) + uint256(_owner); rand = rand % dnaModulus; return rand; } - // Restituisce l'insieme di Pizze trovate dal proprietario + // Restituisce un array di Pizze trovate per proprietario function getPizzasByOwner(address _owner) public // Le funzioni contrassegnate come `view` promettono di non modificare lo stato @@ -418,9 +418,9 @@ contract CryptoPizza is IERC721, ERC165 { view returns (uint256[] memory) { - // Usa la posizione d'archiviazione `memory` per memorizzare i valori solo per la durata - // di questa chiamata alla funzione. - // Learn more: https://solidity.readthedocs.io/en/v0.5.10/introduction-to-smart-contracts.html#storage-memory-and-the-stack + // Utilizza la posizione di archiviazione `memory` per memorizzare i valori solo per il + // ciclo di vita di questa chiamata di funzione. + // Scopri di più: 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++) { @@ -432,28 +432,28 @@ contract CryptoPizza is IERC721, ERC165 { return result; } - // Transfers Pizza and ownership to other address + // Trasferisce la Pizza e la proprietà a un altro indirizzo 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."); + require(_from != address(0) && _to != address(0), "Indirizzo non valido."); + require(_exists(_pizzaId), "La pizza non esiste."); + require(_from != _to, "Impossibile trasferire allo stesso indirizzo."); + require(_isApprovedOrOwner(msg.sender, _pizzaId), "L'indirizzo non è approvato."); 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 + // Emette l'evento definito nel contratto IERC721 importato 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 + * Trasferisce in modo sicuro la proprietà di un determinato ID di token a un altro indirizzo + * Se l'indirizzo di destinazione è un contratto, deve implementare `onERC721Received`, + * che viene chiamato al momento di un trasferimento sicuro e restituisce il valore magico * `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`; - * otherwise, the transfer is reverted. + * altrimenti, il trasferimento viene annullato. */ function safeTransferFrom(address from, address to, uint256 pizzaId) public @@ -463,11 +463,11 @@ contract CryptoPizza is IERC721, ERC165 { } /** - * 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 + * Trasferisce in modo sicuro la proprietà di un determinato ID di token a un altro indirizzo + * Se l'indirizzo di destinazione è un contratto, deve implementare `onERC721Received`, + * che viene chiamato al momento di un trasferimento sicuro e restituisce il valore magico * `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)"))`; - * otherwise, the transfer is reverted. + * altrimenti, il trasferimento viene annullato. */ function safeTransferFrom( address from, @@ -476,12 +476,12 @@ contract CryptoPizza is IERC721, ERC165 { bytes memory _data ) public { this.transferFrom(from, to, pizzaId); - require(_checkOnERC721Received(from, to, pizzaId, _data), "Must implement onERC721Received."); + require(_checkOnERC721Received(from, to, pizzaId, _data), "È necessario implementare onERC721Received."); } /** - * Funzione interna per invocare `onERC721Received` su un dato indirizzo - * La chiamata non è eseguita se l'indirizzo di destinazione non è un contratto + * Funzione interna per richiamare `onERC721Received` su un indirizzo di destinazione + * La chiamata non viene eseguita se l'indirizzo di destinazione non è un contratto */ function _checkOnERC721Received( address from, @@ -503,12 +503,12 @@ contract CryptoPizza is IERC721, ERC165 { } // Brucia una Pizza - distrugge completamente il Token - // Il modificatore della funzione `external` significa che questa funzione fa - // parte dell'interfaccia del contratto e che gli altri contratti possono chiamarla + // Il modificatore di funzione `external` significa che questa funzione è + // parte dell'interfaccia del contratto e altri contratti possono chiamarla function burn(uint256 _pizzaId) external { require(msg.sender != address(0), "Indirizzo non valido."); - require(_exists(_pizzaId), "La Pizza non esiste."); - require(_isApprovedOrOwner(msg.sender, _pizzaId), "Indirizzo non approvato."); + require(_exists(_pizzaId), "La pizza non esiste."); + require(_isApprovedOrOwner(msg.sender, _pizzaId), "L'indirizzo non è approvato."); ownerPizzaCount[msg.sender] = SafeMath.sub( ownerPizzaCount[msg.sender], @@ -517,7 +517,7 @@ contract CryptoPizza is IERC721, ERC165 { pizzaToOwner[_pizzaId] = address(0); } - // Restituisce il numero di Pizze per indirizzo + // Restituisce il conteggio delle Pizze per indirizzo function balanceOf(address _owner) public view returns (uint256 _balance) { return ownerPizzaCount[_owner]; } @@ -525,42 +525,42 @@ contract CryptoPizza is IERC721, ERC165 { // Restituisce il proprietario della Pizza trovato per id function ownerOf(uint256 _pizzaId) public view returns (address _owner) { address owner = pizzaToOwner[_pizzaId]; - require(owner != address(0), "ID della Pizza non valido."); + require(owner != address(0), "ID pizza non valido."); return owner; } - // Approva altri indirizzi per trasferire la proprietà della Pizza + // Approva un altro indirizzo a trasferire la proprietà della Pizza function approve(address _to, uint256 _pizzaId) public { - require(msg.sender == pizzaToOwner[_pizzaId], "Dev'essere il proprietario della Pizza."); + require(msg.sender == pizzaToOwner[_pizzaId], "Deve essere il proprietario della Pizza."); pizzaApprovals[_pizzaId] = _to; emit Approval(msg.sender, _to, _pizzaId); } - // Restituisce l'indirizzo approvato per la Pizza specifica + // Restituisce l'indirizzo approvato per una Pizza specifica function getApproved(uint256 _pizzaId) public view returns (address operator) { - require(_exists(_pizzaId), "La Pizza non esiste."); + require(_exists(_pizzaId), "La pizza non esiste."); return pizzaApprovals[_pizzaId]; } /** - * La funzione privata per cancellare l'approvazione corrente dell'ID di un dato token - * Si ripristina se l'indirizzo dato non è il proprietario del token + * Funzione privata per cancellare l'approvazione corrente di un dato ID di token + * Annulla se l'indirizzo dato non è effettivamente il proprietario del token */ function _clearApproval(address owner, uint256 _pizzaId) private { - require(pizzaToOwner[_pizzaId] == owner, "Dev'essere il proprietario della pizza."); - require(_exists(_pizzaId), "La Pizza non esiste."); + require(pizzaToOwner[_pizzaId] == owner, "Deve essere il proprietario della pizza."); + require(_exists(_pizzaId), "La pizza non esiste."); if (pizzaApprovals[_pizzaId] != address(0)) { pizzaApprovals[_pizzaId] = address(0); } } /* - * Imposta o rimuove l'approvazione di un dato operatore - * Un operatore può trasferire tutti i token del mittente per conto suo + * Imposta o annulla l'impostazione dell'approvazione di un dato operatore + * Un operatore è autorizzato a trasferire tutti i token del mittente per suo conto */ function setApprovalForAll(address to, bool approved) public { require(to != msg.sender, "Impossibile approvare il proprio indirizzo"); @@ -568,7 +568,7 @@ contract CryptoPizza is IERC721, ERC165 { emit ApprovalForAll(msg.sender, to, approved); } - // Dice se un operatore è approvato da un dato proprietario + // Indica se un operatore è approvato da un dato proprietario function isApprovedForAll(address owner, address operator) public view @@ -577,27 +577,27 @@ contract CryptoPizza is IERC721, ERC165 { return operatorApprovals[owner][operator]; } - // Prende proprietà della Pizza - solo per gli utenti approvati + // Prende la proprietà della Pizza - solo per gli utenti approvati function takeOwnership(uint256 _pizzaId) public { require(_isApprovedOrOwner(msg.sender, _pizzaId), "L'indirizzo non è approvato."); address owner = this.ownerOf(_pizzaId); this.transferFrom(owner, msg.sender, _pizzaId); } - // Verifica se la Pizza esiste + // Controlla se la Pizza esiste function _exists(uint256 pizzaId) internal view returns (bool) { address owner = pizzaToOwner[pizzaId]; return owner != address(0); } - // Verifica se l'indirizzo è il proprietario o è approvato per trasferire la Pizza + // Controlla se l'indirizzo è proprietario o è approvato per trasferire la Pizza function _isApprovedOrOwner(address spender, uint256 pizzaId) internal view returns (bool) { address owner = pizzaToOwner[pizzaId]; - // Disabilita il controllo di solium a causa di + // Disabilita il controllo solium a causa di // https://github.com/duaraghav8/Solium/issues/175 // solium-disable-next-line operator-whitespace return (spender == owner || @@ -605,7 +605,7 @@ contract CryptoPizza is IERC721, ERC165 { this.isApprovedForAll(owner, spender)); } - // Verifica se la Pizza è univoca e non esiste ancora + // Controlla se la Pizza è unica e non esiste ancora modifier isUnique(string memory _name, uint256 _dna) { bool result = true; for (uint256 i = 0; i < pizzas.length; i++) { @@ -617,19 +617,19 @@ contract CryptoPizza is IERC721, ERC165 { result = false; } } - require(result, "Una Pizza con quel nome esiste già."); + require(result, "Esiste già una pizza con questo nome."); _; } // Restituisce se l'indirizzo di destinazione è un contratto function isContract(address account) internal view returns (bool) { uint256 size; - // Correntemente non c'è modo migliore di verificare se esiste un contratto in un indirizzo - // se non controllare la dimensione del codice a quell'indirizzo. - // Visita https://ethereum.stackexchange.com/a/14016/36603 - // per maggiori dettagli sul funzionamento. - // TODO Controllare questo codice nuovamente prima del rilascio di Serenity, perché a quel punto - // tutti gli indirizzi saranno contratti. + // Attualmente non c'è modo migliore per controllare se c'è un contratto in un indirizzo + // che controllare la dimensione del codice a quell'indirizzo. + // Vedi https://ethereum.stackexchange.com/a/14016/36603 + // per maggiori dettagli su come funziona. + // TODO Controllare di nuovo prima del rilascio di Serenity, perché tutti gli indirizzi saranno + // contratti allora. // solium-disable-next-line security/no-inline-assembly assembly { size := extcodesize(account) @@ -643,16 +643,16 @@ contract CryptoPizza is IERC721, ERC165 { 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/) +- [Solidity](https://docs.soliditylang.org/) +- [Vyper](https://docs.vyperlang.org/en/stable/) ## Argomenti correlati {#related-topics} - [Contratti intelligenti](/developers/docs/smart-contracts/) -- [Macchina virtuale Ethereum](/developers/docs/evm/) +- [Macchina virtuale di Ethereum](/developers/docs/evm/) -## Tutorial correlati {#related-tutorials} +## Guide correlate {#related-tutorials} -- [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._ +- [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 altri contratti da Solidity](/developers/tutorials/interact-with-other-contracts-from-solidity/) _– Come distribuire un contratto intelligente da un contratto esistente e interagire con esso._ diff --git a/public/content/translations/it/developers/docs/smart-contracts/compiling/index.md b/public/content/translations/it/developers/docs/smart-contracts/compiling/index.md index d811e9e935d..23fda9e7043 100644 --- a/public/content/translations/it/developers/docs/smart-contracts/compiling/index.md +++ b/public/content/translations/it/developers/docs/smart-contracts/compiling/index.md @@ -1,6 +1,6 @@ --- title: Compilazione dei contratti intelligenti -description: Una spiegazione del perché devi compilare i contratti intelligenti e di cosa succede effettivamente durante la compilazione. +description: "Una spiegazione del perché devi compilare i contratti intelligenti e di cosa succede effettivamente durante la compilazione." lang: it incomplete: true --- @@ -9,18 +9,18 @@ incomplete: true ## Prerequisiti {#prerequisites} -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. +Potresti trovare utile leggere la nostra introduzione ai [contratti intelligenti](/developers/docs/smart-contracts/) e alla [macchina virtuale di Ethereum](/developers/docs/evm/) prima di passare alla compilazione. -## L'EVM {#the-evm} +## La EVM {#the-evm} -Affinché l'[EVM](/developers/docs/evm/) sia in grado di eseguire il contratto, questo deve essere in **bytecode**. La compilazione trasforma questo: +Affinché l'[EVM](/developers/docs/evm/) sia in grado di eseguire il tuo contratto, questo deve essere in **bytecode**. La compilazione trasforma questo: ```solidity pragma solidity 0.4.24; contract Greeter { - function greet() public constant returns (string) { + function greet() public view returns (string memory) { return "Hello"; } @@ -33,17 +33,17 @@ contract Greeter { 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 ``` -Questi sono detti **opcode**, o codici operativi. Gli opcode dell'EVM sono le istruzioni di basso livello eseguibili dalla Macchina Virtuale di Ethereum (EVM). Ogni opcode rappresenta un'operazione specifica, come operazioni aritmetiche, operazioni logiche, manipolazione dei dati, flusso di controllo, ecc. +Questi sono chiamati **codici operativi**. Gli opcode dell'EVM sono le istruzioni di basso livello eseguibili dalla Macchina Virtuale di Ethereum (EVM). Ogni opcode rappresenta un'operazione specifica, come operazioni aritmetiche, operazioni logiche, manipolazione dei dati, flusso di controllo, ecc. -[Maggiori informazioni sugli opcode](/developers/docs/evm/opcodes/) +[Maggiori informazioni sui codici operativi](/developers/docs/evm/opcodes/) -## Applicazioni Web {#web-applications} +## Applicazioni web {#web-applications} -Il compilatore produce anche l'**Application Binary Interface (ABI)** che serve all'applicazione per capire il contratto e per chiamarne le funzioni. +Il compilatore produce anche l'**Application Binary Interface (ABI)**, necessaria affinché la tua applicazione possa comprendere il contratto e chiamarne le funzioni. 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 del client JavaScript](/developers/docs/apis/javascript/) leggerà l'**ABI** per poter chiamare il tuo contratto intelligente nell'interfaccia della tua app web. +Una [libreria client JavaScript](/developers/docs/apis/javascript/) leggerà l'**ABI** per consentirti di chiamare il tuo contratto intelligente nell'interfaccia della tua applicazione web. Di seguito è riportato l'ABI per il contratto token ERC-20. Un ERC-20 è un token che puoi scambiare su Ethereum. @@ -274,9 +274,9 @@ Di seguito è riportato l'ABI per il contratto token ERC-20. Un ERC-20 è un tok ## Letture consigliate {#further-reading} -- [ABI spec](https://solidity.readthedocs.io/en/v0.7.0/abi-spec.html) _– Solidity_ +- [Specifiche ABI](https://solidity.readthedocs.io/en/v0.7.0/abi-spec.html) _– Solidity_ ## Argomenti correlati {#related-topics} - [Librerie client JavaScript](/developers/docs/apis/javascript/) -- [Macchina virtuale Ethereum](/developers/docs/evm/) +- [Macchina Virtuale di Ethereum](/developers/docs/evm/) diff --git a/public/content/translations/it/developers/docs/smart-contracts/composability/index.md b/public/content/translations/it/developers/docs/smart-contracts/composability/index.md index 794afad7d10..fcc13291551 100644 --- a/public/content/translations/it/developers/docs/smart-contracts/composability/index.md +++ b/public/content/translations/it/developers/docs/smart-contracts/composability/index.md @@ -1,13 +1,13 @@ --- -title: Componibilità dei contratti intelligenti -description: +title: "Componibilità dei contratti intelligenti" +description: Scopri come i contratti intelligenti possono essere combinati come mattoncini Lego per creare dApp complesse riutilizzando componenti esistenti. lang: it incomplete: true --- -## Breve introduzione {#a-brief-introduction} +## Una breve introduzione {#a-brief-introduction} -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). +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), un exchange decentralizzato, per gestire tutta la logica di scambio di token nella tua app: non devi iniziare da zero. Dai un'occhiata ad alcuni dei 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} @@ -23,13 +23,13 @@ I contratti intelligenti di Ethereum sono come API pubbliche, quindi, chiunque p **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 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. +**3. Rintracciabilità**: 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} ### Ciclo di sviluppo più breve {#shorter-development-cycle} -La componibilità riduce il lavoro degli sviluppatori per la creazione delle [dapp](/apps/#what-are-dapps). [Come dice Naval Ravikant:](https://twitter.com/naval/status/1444366754650656770) "Open source significa che ogni problema va risolto una sola volta." +La componibilità riduce il lavoro che gli sviluppatori devono fare durante la creazione di [dApp](/apps/#what-are-dapps). [Come dice Naval Ravikant:](https://twitter.com/naval/status/1444366754650656770) "L'open source significa che ogni problema deve essere risolto una sola volta." 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. @@ -43,34 +43,34 @@ L'interoperabilità tra i componenti dell'ecosistema di Ethereum migliora l'espe Useremo un esempio dal trading d'arbitraggio per illustrare i benefici dell'interoperabilità: -Se un token ha un valore maggiore sull'`exchange A` rispetto all'`exchange B`, puoi sfruttare la differenza di prezzo per ottenere un profitto. Tuttavia, puoi farlo solo se hai abbastanza capitale per finanziare la transazione (ovvero acquistando il token dall'`exchange B` e vendendolo sull'`exchange A`). +Se un token è scambiato a un prezzo più alto sull'`exchange A` rispetto all'`exchange B`, puoi sfruttare la differenza di prezzo per ottenere un profitto. Tuttavia, puoi farlo solo se hai abbastanza capitale per finanziare la transazione (ovvero acquistando il token dall'`exchange B` e vendendolo sull'`exchange A`). -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. +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 molto tecnici, ma l'idea di base è che puoi prendere in prestito asset (senza garanzie collaterali) e restituirli all'interno di _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, che sarebbe impossibile se i contratti intelligenti mancassero di interoperabilità. +Tornando al nostro esempio iniziale, un trader d'arbitraggio può contrarre un grosso prestito flash, acquistare token dall'`exchange B`, venderli sull'`exchange A`, rimborsare il capitale + gli interessi e trattenere il profitto, il tutto all'interno della 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} +## Esempi di componibilità in Ethereum {#composability-in-ethereum} -### Scambio di token {#token-swaps} +### Scambi di token {#token-swaps} Se crei una dapp che richiede il pagamento delle transazioni in ETH, puoi consentire agli utenti di pagare in altri token ERC-20 integrando la logica di scambio dei token. Il codice convertirà automaticamente il token dell'utente in ETH prima che il contratto esegua la funzione chiamata. ### Governance {#governance} -Creare sistemi di governance su misura per una [DAO](/dao/) può essere costoso e richiedere tempo. Invece, potresti usare un kit di strumenti di governance open source, come [Aragon Client](https://client.aragon.org/), per spingere la tua DAO a creare rapidamente un quadro di governance. +Creare sistemi di governance su misura per una [DAO](/dao/) può essere costoso e richiedere tempo. In alternativa, potresti usare un toolkit di governance open-source, come [Aragon Client](https://client.aragon.org/), per avviare la tua DAO e creare rapidamente un framework di governance. ### Gestione dell'identità {#identity-management} -Invece di creare un sistema di autenticazione personalizzato o affidarti a fornitori centralizzati, puoi integrare strumenti di identità decentralizzata (DID) per gestire l'autenticazione per gli utenti. Un esempio è [SpruceID](https://www.spruceid.com/), un kit di strumenti open source che offre una funzionalità "Accedi con Ethereum" che consente agli utenti di autenticare le identità con un portafoglio di Ethereum. +Invece di creare un sistema di autenticazione personalizzato o affidarti a fornitori centralizzati, puoi integrare strumenti di identità decentralizzata (DID) per gestire l'autenticazione per gli utenti. Un esempio è [SpruceID](https://www.spruceid.com/), un toolkit open-source che offre una funzionalità "Accedi con Ethereum" che permette agli utenti di autenticare le proprie identità con un portafoglio Ethereum. -## Tutorial correlati {#related-tutorials} +## Guide correlate {#related-tutorials} -- [Avvia lo sviluppo del frontend della tua dapp con create-eth-app](/developers/tutorials/kickstart-your-dapp-frontend-development-with-create-eth-app/)_: una panoramica di come utilizzare create-eth-app per creare app con popolari contratti intelligenti, pronti all'uso._ +- [Avvia lo sviluppo del frontend della tua dApp con create-eth-app](/developers/tutorials/kickstart-your-dapp-frontend-development-with-create-eth-app/) _– Una panoramica su come usare create-eth-app per creare app con contratti intelligenti popolari pronti all'uso._ -## Lettura consigliate {#further-reading} +## Letture consigliate {#further-reading} -_Conosci una risorsa pubblica che ti è stata utile? Modifica questa pagina e aggiungila!_ +_Conosci una risorsa della comunità che ti è stata utile? Modifica questa pagina e aggiungila!_ -- [Componibilità è Innovazione](https://future.a16z.com/how-composability-unlocks-crypto-and-everything-else/) -- [Perché la componibilità conta per Web3](https://hackernoon.com/why-composability-matters-for-web3) +- [La componibilità è innovazione](https://a16zcrypto.com/posts/article/how-composability-unlocks-crypto-and-everything-else/) +- [Perché la componibilità è importante per il Web3](https://hackernoon.com/why-composability-matters-for-web3) - [Cos'è la componibilità?](https://blog.aragon.org/what-is-composability/#:~:text=Aragon,connect%20to%20every%20other%20piece.) diff --git a/public/content/translations/it/developers/docs/smart-contracts/deploying/index.md b/public/content/translations/it/developers/docs/smart-contracts/deploying/index.md index ca0bcaab34a..2b5de1f66da 100644 --- a/public/content/translations/it/developers/docs/smart-contracts/deploying/index.md +++ b/public/content/translations/it/developers/docs/smart-contracts/deploying/index.md @@ -1,6 +1,6 @@ --- title: Distribuire i contratti intelligenti -description: +description: Impara a distribuire contratti intelligenti sulle reti Ethereum, inclusi prerequisiti, strumenti e passaggi di distribuzione. lang: it --- @@ -10,72 +10,72 @@ Per distribuire un contratto intelligente, invii una transazione di Ethereum con ## Prerequisiti {#prerequisites} -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. +Dovresti comprendere le [reti 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, inoltre, costa ether (ETH), poiché questi sono memorizzati sulla blockchain, quindi dovresti avere familiarità con [carburante e commissioni](/developers/docs/gas/) su Ethereum. +Anche la distribuzione di un contratto ha un costo in ether (ETH), poiché viene archiviato sulla blockchain, perciò dovresti avere familiarità con [gas e commissioni](/developers/docs/gas/) su Ethereum. -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/). +Infine, dovrai compilare il tuo contratto prima di distribuirlo, quindi assicurati di aver letto la documentazione sulla [compilazione dei contratti intelligenti](/developers/docs/smart-contracts/compiling/). ## Come distribuire un contratto intelligente {#how-to-deploy-a-smart-contract} -### Cosa ti serve {#what-youll-need} +### Cosa ti servirà {#what-youll-need} -- Il bytecode del tuo contratto: è generato tramite la [compilazione](/developers/docs/smart-contracts/compiling/) +- Il bytecode del tuo contratto – questo è generato attraverso 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. -- accesso a un [nodo Ethereum](/developers/docs/nodes-and-clients/) tramite esecuzione di un nodo personalizzato, connessione a un nodo pubblico o utilizzando una chiave API con un [servizio di nodi](/developers/docs/nodes-and-clients/nodes-as-a-service/) +- accesso a un [nodo Ethereum](/developers/docs/nodes-and-clients/), eseguendone uno proprio, connettendosi a un nodo pubblico, o tramite una chiave API utilizzando un [servizio di nodi](/developers/docs/nodes-and-clients/nodes-as-a-service/) ### Passaggi per distribuire un contratto intelligente {#steps-to-deploy} -I passaggi specifici richiesti dipenderanno dal quadro di sviluppo in questione. Ad esempio, puoi consultare la [documentazione di Hardhat sulla distribuzione dei tuoi contratti](https://hardhat.org/docs/tutorial/deploying) o la [documentazione di Foundry sulla distribuzione e verifica di un contratto intelligente](https://book.getfoundry.sh/forge/deploying). Una volta distribuito, il tuo contratto avrà un indirizzo di Ethereum, come gli altri [conti](/developers/docs/accounts/), e potrà essere verificato utilizzando gli [strumenti di verifica del codice sorgente](/developers/docs/smart-contracts/verifying/#source-code-verification-tools). +I passaggi specifici richiesti dipenderanno dal quadro di sviluppo in questione. Ad esempio, puoi consultare la [documentazione di Hardhat sulla distribuzione dei tuoi contratti](https://hardhat.org/docs/tutorial/deploying) o la [documentazione di Foundry sulla distribuzione e la verifica di un contratto intelligente](https://book.getfoundry.sh/forge/deploying). Una volta distribuito, il contratto avrà un indirizzo Ethereum come gli altri [conti](/developers/docs/accounts/) e potrà essere verificato utilizzando gli [strumenti di verifica del codice sorgente](/developers/docs/smart-contracts/verifying/#source-code-verification-tools). ## Strumenti correlati {#related-tools} -**Remix - _Remix IDE consente di sviluppare, distribuire e amministrare i contratti intelligenti per Ethereum, come le blockchain_** +**Remix - _Remix IDE consente di sviluppare, distribuire e amministrare contratti intelligenti per blockchain come Ethereum_** - [Remix](https://remix.ethereum.org) -**Tenderly: _Piattaforma di sviluppo in Web3 che fornisce debug, osservabilità e blocchi di costruzione dell'infrastruttura per sviluppare, testare, monitorare e gestire i contratti intelligenti_** +**Tenderly - _Piattaforma di sviluppo Web3 che fornisce debugging, osservabilità e componenti di base dell'infrastruttura per sviluppare, testare, monitorare e gestire i contratti intelligenti_** - [tenderly.co](https://tenderly.co/) -- [Documenti](https://docs.tenderly.co/) +- [Docs](https://docs.tenderly.co/) - [GitHub](https://github.com/Tenderly) - [Discord](https://discord.gg/eCWjuvt) -**Hardhat - _Un ambiente di sviluppo per compilare, distribuire, testare ed effettuare il debug del tuo software di Ethereum_** +**Hardhat - _Un ambiente di sviluppo per compilare, distribuire, testare ed eseguire il debug del tuo software Ethereum_** - [hardhat.org](https://hardhat.org/getting-started/) - [Documentazione sulla distribuzione dei tuoi contratti](https://hardhat.org/docs/tutorial/deploying) - [GitHub](https://github.com/nomiclabs/hardhat) - [Discord](https://discord.com/invite/TETZs2KK4k) -**thirdweb - _Distribuisci con facilità qualsiasi contratto a qualsiasi catena che sia compatibile con EVM, utilizzando un singolo comando_** +**thirdweb - _Distribuisci con facilità qualsiasi contratto su qualsiasi catena compatibile con EVM, usando un singolo comando_** - [Documentazione](https://portal.thirdweb.com/deploy/) -**Crossmint - _Piattaforma di sviluppo Web3 per imprese per distribuire contratti intelligenti, consentire i pagamenti con carte di credito e tra catene, e utilizzare le API per creare, distribuire, vendere, memorizzare e modificare i NFT._** +**Crossmint - _Piattaforma di sviluppo Web3 di livello enterprise per distribuire contratti intelligenti, abilitare pagamenti con carta di credito e cross-chain, e usare le API per creare, distribuire, vendere, memorizzare e modificare NFT._** - [crossmint.com](https://www.crossmint.com) - [Documentazione](https://docs.crossmint.com) - [Discord](https://discord.com/invite/crossmint) - [Blog](https://blog.crossmint.com) -## Tutorial correlati {#related-tutorials} +## Guide correlate {#related-tutorials} -- [Deploying your first smart contract](/developers/tutorials/deploying-your-first-smart-contract/): _Un'introduzione alla distribuzione del primo contratto su una rete di prova di Ethereum._ -- [Hello World | smart contract tutorial](/developers/tutorials/hello-world-smart-contract/): _Un tutorial facile da seguire per creare e distribuire un contratto intelligente di base su Ethereum._ -- [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._ -- [How to downsize your contract size](/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/): _Come ridurre le dimensioni del tuo contratto per mantenerlo sotto il limite e risparmiare carburante_ +- [Distribuzione del tuo primo contratto intelligente](/developers/tutorials/deploying-your-first-smart-contract/) _– Un'introduzione alla distribuzione del tuo primo contratto intelligente su una rete di test di Ethereum._ +- [Hello World | Guida sui contratti intelligenti](/developers/tutorials/hello-world-smart-contract/) _– Una guida facile da seguire per creare e distribuire un contratto intelligente di base su 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 interagire con esso._ +- [Come ridurre le dimensioni del contratto](/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/) _- Come ridurre le dimensioni del tuo contratto per mantenerlo al di sotto del limite e risparmiare sul gas_ ## Letture consigliate {#further-reading} - [https://docs.openzeppelin.com/learn/deploying-and-interacting](https://docs.openzeppelin.com/learn/deploying-and-interacting) - _OpenZeppelin_ -- [Distribuire i tuoi contratti Hardhat](https://hardhat.org/docs/tutorial/deploying) - _Nomic Labs_ +- [Distribuire i tuoi contratti con Hardhat](https://hardhat.org/docs/tutorial/deploying) - _Nomic Labs_ _Conosci una risorsa della comunità che ti è stata utile? Modifica questa pagina e aggiungila!_ ## Argomenti correlati {#related-topics} -- [Quadri di sviluppo](/developers/docs/frameworks/) -- [Eseguire un nodo di Ethereum](/developers/docs/nodes-and-clients/run-a-node/) -- [Nodes-as-a-service](/developers/docs/nodes-and-clients/nodes-as-a-service) +- [Framework di sviluppo](/developers/docs/frameworks/) +- [Eseguire un nodo Ethereum](/developers/docs/nodes-and-clients/run-a-node/) +- [Nodi come servizio](/developers/docs/nodes-and-clients/nodes-as-a-service) diff --git a/public/content/translations/it/developers/docs/smart-contracts/formal-verification/index.md b/public/content/translations/it/developers/docs/smart-contracts/formal-verification/index.md index 98898c96b87..d1fac319633 100644 --- a/public/content/translations/it/developers/docs/smart-contracts/formal-verification/index.md +++ b/public/content/translations/it/developers/docs/smart-contracts/formal-verification/index.md @@ -4,9 +4,9 @@ description: Una panoramica della verifica formale per i contratti intelligenti lang: it --- -I [contratti intelligenti](/developers/docs/smart-contracts/) consentono di creare applicazioni decentralizzate, affidabili e robuste che introducono nuovi casi d'uso e creano valore per gli utenti. Poiché i contratti intelligenti gestiscono grandi quantità di valore, la sicurezza è una considerazione fondamentale per gli sviluppatori. +I [contratti intelligenti](/developers/docs/smart-contracts/) consentono di creare applicazioni decentralizzate, trustless e robuste che introducono nuovi casi d'uso e sbloccano valore per gli utenti. Poiché i contratti intelligenti gestiscono grandi quantità di valore, la sicurezza è una considerazione fondamentale per gli sviluppatori. -La verifica formale è una delle tecniche consigliate per migliorare la [sicurezza dei contratti intelligenti](/developers/docs/smart-contracts/security/). La verifica formale, che utilizza i [metodi formali](https://www.brookings.edu/techstream/formal-methods-as-a-path-toward-better-cybersecurity/) per specificare, progettare e verificare i programmi, è stata utilizzata per anni per assicurare la correttezza di sistemi hardware e software fondamentali. +La verifica formale è una delle tecniche consigliate per migliorare la [sicurezza dei contratti intelligenti](/developers/docs/smart-contracts/security/). La verifica formale, che utilizza [metodi formali](https://www.brookings.edu/techstream/formal-methods-as-a-path-toward-better-cybersecurity/) per specificare, progettare e verificare i programmi, è stata utilizzata per anni per assicurare la correttezza di sistemi hardware e software critici. Quando implementata nei contratti intelligenti, la verifica formale può dimostrare che la logica aziendale di un contratto soddisfa una specifica predefinita. Rispetto ad altri metodi di valutazione della correttezza del codice di un contratto, come i test, la verifica formale fornisce maggiori garanzie che un contratto intelligente sia funzionalmente corretto. @@ -18,7 +18,7 @@ I comportamenti previsti del sistema (un contratto intelligente, in questo caso) ### Cosa è un modello formale? {#what-is-a-formal-model} -In informatica, un [modello formale](https://en.wikipedia.org/wiki/Model_of_computation) è una descrizione matematica di un processo di calcolo. I programmi sono astratti in funzioni matematiche (equazioni) e il modello descrive come, dato un input, vengono calcolati i risultati delle funzioni. +In informatica, un [modello formale](https://en.wikipedia.org/wiki/Model_of_computation) è una descrizione matematica di un processo computazionale. I programmi sono astratti in funzioni matematiche (equazioni) e il modello descrive come, dato un input, vengono calcolati i risultati delle funzioni. I modelli formali forniscono un livello di astrazione su cui è valutabile l'analisi del comportamento di un programma. L'esistenza di modelli formali consente la creazione di una _specifica formale_, che descrive le proprietà desiderate del modello in questione. @@ -26,53 +26,53 @@ Sono utilizzate diverse tecniche per modellizzare i contratti intelligenti per l I modelli di alto livello si concentrano sulla relazione tra contratti intelligenti e agenti esterni, come conti posseduti esternamente (EOA), conti di contratti e l'ambiente della blockchain. Tali modelli sono utili per definire le proprietà che specificano come un contratto dovrebbe comportarsi in risposta a determinate interazioni degli utenti. -Al contrario, altri modelli formali si concentrano sul comportamento di basso livello di un contratto intelligente. Sebbene i modelli di alto livello possano aiutare a ragionare sulla funzionalità di un contratto, potrebbero non riuscire a catturare i dettagli sui meccanismi interni dell'implementazione. I modelli di basso livello applicano una visualizzazione a scatola bianca per analizzare il programma e si affidano a rappresentazioni di basso livello delle applicazioni del contratto intelligente, quali tracce del programma e [grafici del flusso di controllo](https://en.wikipedia.org/wiki/Control-flow_graph), per ragionare sulle proprietà rilevanti alla sua esecuzione. +Al contrario, altri modelli formali si concentrano sul comportamento di basso livello di un contratto intelligente. Sebbene i modelli di alto livello possano aiutare a ragionare sulla funzionalità di un contratto, potrebbero non riuscire a catturare i dettagli sui meccanismi interni dell'implementazione. I modelli di basso livello applicano una visione white-box all'analisi del programma e si basano su rappresentazioni di basso livello delle applicazioni di contratti intelligenti, come le tracce del programma e i [grafici del flusso di controllo](https://en.wikipedia.org/wiki/Control-flow_graph), per ragionare sulle proprietà rilevanti per l'esecuzione di un contratto. -I modelli di basso livello sono considerati ideali perché rappresentano l'effettiva esecuzione di un contratto intelligente nell'ambiente di esecuzione di Ethereum (cioè, l'[EVM](/developers/docs/evm/)). Le tecniche di modellizzazione di basso livello sono particolarmente utili nello stabilire le proprietà di sicurezza essenziali nei contratti intelligenti e nel rilevare le potenziali vulnerabilità. +I modelli di basso livello sono considerati ideali poiché rappresentano l'esecuzione effettiva di un contratto intelligente nell'ambiente di esecuzione di Ethereum (cioè, l'[EVM](/developers/docs/evm/)). Le tecniche di modellizzazione di basso livello sono particolarmente utili nello stabilire le proprietà di sicurezza essenziali nei contratti intelligenti e nel rilevare le potenziali vulnerabilità. ### Cosa è una specifica formale? {#what-is-a-formal-specification} Una specifica è semplicemente un requisito tecnico che uno specifico sistema deve soddisfare. Nella programmazione, le specifiche rappresentano delle idee generali sull'esecuzione di un programma (cioè, cosa il programma dovrebbe fare). -Nel contesto dei contratti intelligenti, le specifiche formali si riferiscono alle _proprietà_: descrizioni formali dei requisiti che un contratto deve soddisfare. Tali proprietà sono descritte come "invarianti" e rappresentano asserzioni logiche sull'esecuzione di un contratto che devono rimanere vere in ogni circostanza possibile, senza eccezione alcuna. +Nel contesto dei contratti intelligenti, le specifiche formali si riferiscono a _proprietà_—descrizioni formali dei requisiti che un contratto deve soddisfare. Tali proprietà sono descritte come "invarianti" e rappresentano asserzioni logiche sull'esecuzione di un contratto che devono rimanere vere in ogni circostanza possibile, senza eccezione alcuna. Dunque, possiamo pensare a una specifica formale come una raccolta di dichiarazioni scritte in un linguaggio formale che descrivono l'esecuzione prevista di un contratto intelligente. Le specifiche coprono le proprietà di un contratto e definiscono come questo dovrebbe comportarsi in circostanze diverse. Lo scopo della verifica formale è determinare se un contratto intelligente possiede tali proprietà (invarianti) e che queste non siano violate durante l'esecuzione. Le specifiche formali sono essenziali per sviluppare implementazioni sicure dei contratti intelligenti. I contratti che non riescono a implementare le invarianti o le cui proprietà sono violate durante l'esecuzione, sono soggetti a vulnerabilità che possono danneggiare la funzionalità o causare sfruttamenti malevoli. -## Tipi di specifiche formali per contratti intelligenti {#formal-specifications-for-smart-contracts} +## Tipi di specifiche formali per i contratti intelligenti {#formal-specifications-for-smart-contracts} Le specifiche formali consentono il ragionamento matematico sulla correttezza dell'esecuzione del programma. Come i modelli formali, le specifiche formali possono catturare le proprietà di alto livello o i comportamenti di basso livello dell'implementazione di un contratto. -Le specifiche formali sono derivate utilizzando elementi della [logica del programma](https://en.wikipedia.org/wiki/Logic_programming), che consentono il ragionamento formale sulle proprietà di un programma. La logica di un programma contiene le regole formali che esprimono (in linguaggio matematico) il comportamento previsto di un programma. Varie logiche del programma sono utilizzate nella creazione di specifiche formali, tra cui la [logica di raggiungibilità](https://en.wikipedia.org/wiki/Reachability_problem), la [logica temporale](https://en.wikipedia.org/wiki/Temporal_logic) e la [logica di Hoare](https://en.wikipedia.org/wiki/Hoare_logic). +Le specifiche formali sono derivate utilizzando elementi della [logica di programmazione](https://en.wikipedia.org/wiki/Logic_programming), che consentono il ragionamento formale sulle proprietà di un programma. La logica di un programma contiene le regole formali che esprimono (in linguaggio matematico) il comportamento previsto di un programma. Varie logiche di programmazione sono utilizzate nella creazione di specifiche formali, tra cui la [logica di raggiungibilità](https://en.wikipedia.org/wiki/Reachability_problem), la [logica temporale](https://en.wikipedia.org/wiki/Temporal_logic) e la [logica di Hoare](https://en.wikipedia.org/wiki/Hoare_logic). -Le specifiche formali per i contratti intelligenti sono classificabili ampiamente come specifiche di **alto livello** o di **basso livello**. Indipendentemente dalla categoria cui appartiene una specifica, deve descrivere adeguatamente e inequivocabilmente la proprietà del sistema analizzato. +Le specifiche formali per i contratti intelligenti possono essere classificate in linea di massima come specifiche di **alto livello** o di **basso livello**. Indipendentemente dalla categoria cui appartiene una specifica, deve descrivere adeguatamente e inequivocabilmente la proprietà del sistema analizzato. ### Specifiche di alto livello {#high-level-specifications} -Come suggerisce il nome, una specifica di alto livello (anche detta "specifica orientata al modello") descrive il comportamento di alto livello di un programma. Le specifiche di alto livello modellizzano un contratto intelligente come una [macchina a stato finito](https://en.wikipedia.org/wiki/Finite-state_machine) (FSM), che può passare tra stati eseguendo operazioni, utilizzando la logica temporale per definire le proprietà formali per il modello FSM. +Come suggerisce il nome, una specifica di alto livello (anche detta "specifica orientata al modello") descrive il comportamento di alto livello di un programma. Le specifiche di alto livello modellano un contratto intelligente come una [macchina a stati finiti](https://en.wikipedia.org/wiki/Finite-state_machine) (FSM), che può passare da uno stato all'altro eseguendo operazioni, con la logica temporale utilizzata per definire le proprietà formali per il modello FSM. -Le [logiche temporali](https://en.wikipedia.org/wiki/Temporal_logic) sono "regole per ragionare sulle proposizioni qualificate in termini di tempo (es. "Ho _sempre_ fame" o "_Prima o poi_ avrò fame")." Quando applicate alla verifica formale, le logiche temporali sono utilizzate per dichiarare le asserzioni sul comportamento corretto dei sistemi modellizzati come macchine di stato. Nello specifico, una logica temporale descrive gli stati futuri in cui un contratto intelligente può trovarsi e come passa tra gli stati. +Le [logiche temporali](https://en.wikipedia.org/wiki/Temporal_logic) sono "regole per ragionare su proposizioni qualificate in termini di tempo (ad es. "Ho _sempre_ fame" o "_Prima o poi_ avrò fame")." Quando applicate alla verifica formale, le logiche temporali sono utilizzate per dichiarare le asserzioni sul comportamento corretto dei sistemi modellizzati come macchine di stato. Nello specifico, una logica temporale descrive gli stati futuri in cui un contratto intelligente può trovarsi e come passa tra gli stati. -Le specifiche di alto livello catturano generalmente due proprietà temporali essenziali per i contratti intelligenti: **sicurezza** e **vitalità**. Le proprietà di sicurezza rappresentano l'idea che "non si verifica mai nulla di male" e solitamente esprimono invarianza. Una proprietà di sicurezza potrebbe definire i requisiti software generali, quali la libertà da [stallo](https://www.techtarget.com/whatis/definition/deadlock), o esprimere proprietà specifiche del dominio per i contratti (es., le invarianti sul controllo dell'accesso per le funzioni, i valori ammissibili delle variabili di stato o le condizioni per i trasferimenti di token). +Le specifiche di alto livello generalmente acquisiscono due proprietà temporali critiche per i contratti intelligenti: **sicurezza** e **vitalità**. Le proprietà di sicurezza rappresentano l'idea che "non si verifica mai nulla di male" e solitamente esprimono invarianza. Una proprietà di sicurezza può definire requisiti software generali, come l'assenza di [deadlock](https://www.techtarget.com/whatis/definition/deadlock), o esprimere proprietà specifiche del dominio per i contratti (ad es. invarianti sul controllo degli accessi per le funzioni, valori ammissibili delle variabili di stato o condizioni per i trasferimenti di token). -Prendiamo ad esempio questo requisito di sicurezza che copre le condizioni per l'utilizzo del `transfer()` o `transferFrom()` nei contratti di token ERC-20: _“Il saldo di un mittente non è mai inferiore alla quantità richiesta di token da inviare._ Questa descrizione in linguaggio naturale dell'invariante di un contratto è traducibile in una specifica (matematica) formale, rigorosamente verificabile per la validità. +Si prenda ad esempio questo requisito di sicurezza, che copre le condizioni per l'utilizzo di `transfer()` o `transferFrom()` nei contratti di token ERC-20: _"Il saldo di un mittente non è mai inferiore all'importo richiesto di token da inviare."_. Questa descrizione in linguaggio naturale dell'invariante di un contratto è traducibile in una specifica (matematica) formale, rigorosamente verificabile per la validità. -Le proprietà di vitalità asseriscono che "prima o poi si verifica qualcosa di buono" e riguardano la capacità di un contratto di progredire tra diversi stati. Un esempio di proprietà di vitalità è la "liquidità", che si riferisce alla capacità di un contratto di trasferire i propri saldi agli utenti su richiesta. Se questa proprietà viene violata, gli utenti non potrebbero prelevare le risorse memorizzate nel contratto, come avvenuto con l'[incidente del portafoglio Parity](https://www.cnbc.com/2017/11/08/accidental-bug-may-have-frozen-280-worth-of-ether-on-parity-wallet.html). +Le proprietà di vitalità asseriscono che "prima o poi si verifica qualcosa di buono" e riguardano la capacità di un contratto di progredire tra diversi stati. Un esempio di proprietà di vitalità è la "liquidità", che si riferisce alla capacità di un contratto di trasferire i propri saldi agli utenti su richiesta. Se questa proprietà viene violata, gli utenti non sarebbero in grado di prelevare gli asset archiviati nel contratto, come è accaduto con l'[incidente del portafoglio Parity](https://www.cnbc.com/2017/11/08/accidental-bug-may-have-frozen-280-worth-of-ether-on-parity-wallet.html). ### Specifiche di basso livello {#low-level-specifications} Le specifiche di alto livello prendono come punto di partenza un modello di stato finito di un contratto e definiscono le proprietà desiderate di questo modello. Al contrario, le specifiche di basso livello (anche dette "specifiche orientate alla proprietà") spesso modellizzano i programmi (contratti intelligenti) come sistemi che comprendono una raccolta di funzioni matematiche e descrivono il comportamento corretto di tali sistemi. -In termini più semplici, le specifiche di basso livello analizzano le _tracce del programma_ e tentano di definire le proprietà di un contratto intelligente sulla base delle stesse. Le tracce si riferiscono a sequenze delle esecuzioni della funzione che alterano lo stato di un contratto intelligente; dunque, le specifiche di basso livello aiutano a specificare i requisiti per l'esecuzione interna di un contratto. +In termini più semplici, le specifiche di basso livello analizzano le _tracce del programma_ e tentano di definire le proprietà di un contratto intelligente su queste tracce. Le tracce si riferiscono a sequenze delle esecuzioni della funzione che alterano lo stato di un contratto intelligente; dunque, le specifiche di basso livello aiutano a specificare i requisiti per l'esecuzione interna di un contratto. Le specifiche formali di basso livello possono essere date come proprietà in stile Hoare o invarianti sui percorsi d'esecuzione. ### Proprietà in stile Hoare {#hoare-style-properties} -La [logica di Hoare](https://en.wikipedia.org/wiki/Hoare_logic) fornisce una serie di regole formali per ragionare sulla correttezza dei programmi, contratti intelligenti inclusi. Una proprietà in stile Hoare è rappresentata da una tripletta di Hoare `{P}c{Q}`, dove `c` è un programma e `P` e `Q` sono predicati sullo stato della `c` (cioè, il programma), formalmente descritte rispettivamente come _precondizioni_ e _postcondizioni_. +La [Logica di Hoare](https://en.wikipedia.org/wiki/Hoare_logic) fornisce una serie di regole formali per ragionare sulla correttezza dei programmi, inclusi i contratti intelligenti. Una proprietà in stile Hoare è rappresentata da una tripletta di Hoare `{P}c{Q}`, dove `c` è un programma e `P` e `Q` sono predicati sullo stato di `c` (cioè, il programma), descritti formalmente come _precondizioni_ e _postcondizioni_, rispettivamente. -Una precondizione è un predicato che descrive le condizioni richieste per l'esecuzione corretta di una funzione; gli utenti che chiamano il contratto devono soddisfare tale requisito. Una postcondizione è un predicato che descrive la condizione che una funzione stabilisce se eseguita correttamente; gli utenti possono prevedere che questa condizione sia vera dopo aver chiamato la funzione. Un'_invariante_ nella logica di Hoare è un predicato che è preservato dall'esecuzione di una funzione (cioè, non cambia). +Una precondizione è un predicato che descrive le condizioni richieste per l'esecuzione corretta di una funzione; gli utenti che chiamano il contratto devono soddisfare tale requisito. Una postcondizione è un predicato che descrive la condizione che una funzione stabilisce se eseguita correttamente; gli utenti possono prevedere che questa condizione sia vera dopo aver chiamato la funzione. Un _invariante_ nella logica di Hoare è un predicato che viene preservato dall'esecuzione di una funzione (cioè, non cambia). Le specifiche in stile Hoare possono garantire la _correttezza parziale_ o la _correttezza totale_. L'implementazione della funzione di un contratto è "parzialmente corretta" se la precondizione resta vera prima dell'esecuzione della funzione e, se l'esecuzione termina, anche la postcondizione è vera. La prova di correttezza totale è ottenuta se una precondizione è vera prima dell'esecuzione della funzione, è garantito che l'esecuzione termini e, quando lo fa, la postcondizione resta vera. @@ -80,19 +80,19 @@ L'ottenimento della prova di correttezza totale è difficile, poiché alcune ese Le specifiche dei contratti intelligenti create utilizzando la logica di Hoare avranno precondizioni, postcondizioni e invarianti definite per l'esecuzione di funzioni e cicli in un contratto. Le precondizioni spesso includono la possibilità di input errati a una funzione, con le postcondizioni che descrivono la risposta prevista per tali input (es., generare un'eccezione specifica). In questo modo le proprietà in stile Hoare sono efficaci per garantire la correttezza delle implementazioni del contratto. -Molti quadri di verifica formale utilizzano le specifiche in stile Hoare per provare la correttezza semantica delle funzioni. Inoltre, è possibile aggiungere le proprietà in stile Hoare (come asserzioni) direttamente al codice del contratto utilizzando le istruzioni `require` e `assert` in Solidity. +Molti quadri di verifica formale utilizzano le specifiche in stile Hoare per provare la correttezza semantica delle funzioni. Inoltre, è possibile aggiungere proprietà in stile Hoare (come asserzioni) direttamente al codice del contratto utilizzando le istruzioni `require` e `assert` in Solidity. -Le dichiarazioni `require` esprimono una precondizione o invariante e sono spesso utilizzate per convalidare gli input dell'utente, mentre `assert` cattura una postcondizione necessaria per la sicurezza. Per esempio, il controllo adeguato dell'accesso per le funzioni (un esempio di proprietà di sicurezza) può essere ottenuto utilizzando `require` come controllo della precondizione sull'identità del conto chiamante. Analogamente, un'invariante sui valori di stato ammissibili delle variabili di stato in un contratto (es. numero totale di token in circolazione) può essere protetta dalla violazione utilizzando `assert` per confermare lo stato del contratto dopo l'esecuzione della funzione. +Le istruzioni `require` esprimono una precondizione o un'invariante e sono spesso utilizzate per convalidare gli input dell'utente, mentre `assert` cattura una postcondizione necessaria per la sicurezza. Ad esempio, un adeguato controllo degli accessi per le funzioni (un esempio di proprietà di sicurezza) può essere ottenuto utilizzando `require` come controllo di precondizione sull'identità dell'account chiamante. Allo stesso modo, un invariante sui valori ammissibili delle variabili di stato in un contratto (ad es. il numero totale di token in circolazione) può essere protetto dalla violazione utilizzando `assert` per confermare lo stato del contratto dopo l'esecuzione della funzione. ### Proprietà a livello di traccia {#trace-level-properties} Le specifiche basate sulla traccia descrivono le operazioni che fanno passare un contratto tra diversi stati e le relazioni tra di esse. Come spiegato in precedenza, le tracce sono sequenze di operazioni che alterano lo stato di un contratto in un certo modo. -Questo approccio si basa sul modello dei contratti intelligenti come sistemi di transizione di stato con degli stati predefiniti (descritti dalle variabili di stato), insieme a una serie di transizioni predefinite (descritte dalle funzioni del contratto). Inoltre, un [grafico del flusso di controllo](https://www.geeksforgeeks.org/software-engineering-control-flow-graph-cfg/) (CFG), che è una rappresentazione grafica del flusso d'esecuzione di un programma, è spesso utilizzato per descrivere la semantica operativa di un contratto. Qui ogni traccia è rappresentata come un percorso sul grafico del flusso di controllo. +Questo approccio si basa sul modello dei contratti intelligenti come sistemi di transizione di stato con degli stati predefiniti (descritti dalle variabili di stato), insieme a una serie di transizioni predefinite (descritte dalle funzioni del contratto). Inoltre, un [grafico del flusso di controllo](https://www.geeksforgeeks.org/software-engineering-control-flow-graph-cfg/) (CFG), che è una rappresentazione grafica del flusso di esecuzione di un programma, è spesso utilizzato per descrivere la semantica operativa di un contratto. Qui ogni traccia è rappresentata come un percorso sul grafico del flusso di controllo. In primo luogo, le specifiche a livello di traccia sono utilizzate per ragionare sui modelli d'esecuzione interna nei contratti intelligenti. Creando delle specifiche al livello di traccia, asseriamo i percorsi d'esecuzione ammissibili (cioè, le transizioni di stato) per un contratto intelligente. Utilizzando le tecniche, come l'esecuzione simbolica, possiamo verificare formalmente che l'esecuzione non segua mai un percorso non definito nel modello formale. -Utilizziamo un esempio di contratto [DAO](/dao/) avente delle funzioni accessibili pubblicamente per descrivere le proprietà a livello di traccia. Qui, supponiamo che il contratto DAO consenta agli utenti di eseguire le seguenti operazioni: +Usiamo un esempio di un contratto di [DAO](/dao/) che ha alcune funzioni accessibili pubblicamente per descrivere le proprietà a livello di traccia. Qui, supponiamo che il contratto DAO consenta agli utenti di eseguire le seguenti operazioni: - Depositare fondi @@ -100,27 +100,27 @@ Utilizziamo un esempio di contratto [DAO](/dao/) avente delle funzioni accessibi - Richiedere un rimborso se non votano una proposta -Le proprietà a livello di traccia dell'esempio potrebbero essere _"gli utenti che non depositano fondi non possono votare una proposta"_ o _"gli utenti che non votano una proposta dovrebbero sempre poter richiedere un rimborso"_. Entrambe le proprietà affermano delle sequenze preferite d'esecuzione (il voto non può verificarsi _prima_ di depositare i fondi e non si può richiedere un rimborso _dopo_ aver votato una proposta). +Esempi di proprietà a livello di traccia potrebbero essere _"gli utenti che non depositano fondi non possono votare una proposta"_ o _"gli utenti che non votano una proposta dovrebbero sempre poter richiedere un rimborso"_. Entrambe le proprietà asseriscono sequenze di esecuzione preferite (la votazione non può avvenire _prima_ di depositare fondi e la richiesta di un rimborso non può avvenire _dopo_ aver votato una proposta). -## Tecniche di verifica formale dei contratti intelligenti {#formal-verification-techniques} +## Tecniche per la verifica formale dei contratti intelligenti {#formal-verification-techniques} -### Controllo del modello {#model-checking} +### Verifica del modello {#model-checking} Il controllo del modello è una tecnica di verifica formale in cui un algoritmo controlla il modello formale di un contratto intelligente rispetto alla sua specifica. Nel controllo del modello i contratti intelligenti sono spesso rappresentati come sistemi di transizione di stato, mentre le proprietà sugli stati permissibili del contratto sono definiti utilizzando la logica temporale. -Il controllo del modello richiede la creazione di una rappresentazione matematica astratta di un sistema (ossia un contratto) e di esprimere le proprietà di tale sistema utilizzando le formule radicate nella [logica proposizionale](https://www.baeldung.com/cs/propositional-logic). Ciò semplifica il compito dell'algoritmo di controllo del modello, vale a dire dimostrare che un modello matematico soddisfi una data formula logica. +La verifica del modello richiede la creazione di una rappresentazione matematica astratta di un sistema (cioè un contratto) e l'espressione delle proprietà di questo sistema utilizzando formule basate sulla [logica proposizionale](https://www.baeldung.com/cs/propositional-logic). Ciò semplifica il compito dell'algoritmo di controllo del modello, vale a dire dimostrare che un modello matematico soddisfi una data formula logica. -Il controllo del modello nella verifica formale è utilizzato principalmente per valutare le proprietà temporali che descrivono il comportamento di un contratto nel tempo. Le proprietà temporali per i contratti intelligenti includono la _sicurezza_ e la _vitalità_, spiegate in precedenza. +Il controllo del modello nella verifica formale è utilizzato principalmente per valutare le proprietà temporali che descrivono il comportamento di un contratto nel tempo. Le proprietà temporali per i contratti intelligenti includono _sicurezza_ e _vitalità_, che abbiamo spiegato in precedenza. -Ad esempio, una proprietà di sicurezza relativa al controllo dell'accesso (es., _Solo il proprietario del contratto può chiamare `selfdestruct`_) può essere scritta in logica formale. In seguito, l'algoritmo di controllo del modello può verificare se il contratto soddisfa tale specifica formale. +Ad esempio, una proprietà di sicurezza relativa al controllo degli accessi (ad es. _Solo il proprietario del contratto può chiamare `selfdestruct`_) può essere scritta in logica formale. In seguito, l'algoritmo di controllo del modello può verificare se il contratto soddisfa tale specifica formale. Il controllo del modello utilizza l'esplorazione dello spazio di stato, che richiede la costruzione di tutti gli stati possibili di un contratto intelligente e di tentare di trovare gli stati raggiungibili risultanti in violazioni della proprietà. Tuttavia, ciò può comportare un numero infinito di stati (noto come il "problema d'esplosione dello stato"), dunque i revisori del modello si affidano a tecniche di astrazione per rendere possibile l'analisi efficiente dei contratti intelligenti. -### Dimostrazione del teorema {#theorem-proving} +### Dimostrazione di teoremi {#theorem-proving} La dimostrazione del teorema è un metodo di ragionamento matematico sulla correttezza dei programmi, inclusi i contratti intelligenti. Prevede la trasformazione del modello del sistema di un contratto e delle sue specifiche in formule matematiche (dichiarazioni logiche). -L'obiettivo della dimostrazione del teorema è verificare l'equivalenza logica tra tali dichiarazioni. L'"equivalenza logica" (anche detta "bi-implicazione logica") è un tipo di relazione tra due dichiarazioni tale per cui la prima dichiarazione è vera _se e soltanto se_ la seconda è vera. +L'obiettivo della dimostrazione del teorema è verificare l'equivalenza logica tra tali dichiarazioni. L'"equivalenza logica" (chiamata anche "bi-implicazione logica") è un tipo di relazione tra due enunciati tale che il primo enunciato è vero _se e solo se_ il secondo enunciato è vero. La relazione richiesta (equivalenza logica) tra le dichiarazioni sul modello di un contratto e le sue proprietà è formulata come una dichiarazione dimostrabile (detta teorema). Utilizzando un sistema formale di deduzione, il dimostratore automatizzato del teorema può verificarne la validità. In altre parole, un dimostratore del teorema può provare in modo conclusivo che il modello di un contratto intelligente corrisponde precisamente alle sue specifiche. @@ -130,13 +130,13 @@ Di conseguenza, è spesso richiesta l'assistenza umana per guidare il dimostrato ### Esecuzione simbolica {#symbolic-execution} -L'esecuzione simbolica è un metodo per analizzare un contratto intelligente eseguendo le funzioni utilizzando dei _valori simbolici_ (es. `x > 5`) invece di _valori concreti_ (es. `x == 5`). Come tecnica formale di verifica, l'esecuzione simbolica è utilizzata per ragionare formalmente sulle proprietà a livello di traccia nel codice di un contratto. +L'esecuzione simbolica è un metodo di analisi di un contratto intelligente che esegue le funzioni utilizzando _valori simbolici_ (ad es. `x > 5`) invece di _valori concreti_ (ad es. `x == 5`). Come tecnica formale di verifica, l'esecuzione simbolica è utilizzata per ragionare formalmente sulle proprietà a livello di traccia nel codice di un contratto. -L'esecuzione simbolica rappresenta una traccia d'esecuzione come una formula matematica sui valori di input simbolici, altrimenti detta _predicato del percorso_. Un [risolutore SMT](https://en.wikipedia.org/wiki/Satisfiability_modulo_theories) è utilizzato per verificare se il predicato di un percorso sia "soddisfacibile" (cioè, esiste un valore che possa soddisfare la formula). Se un percorso vulnerabile è soddisfacibile, il risolutore SMT genererà un valore concreto che innesca la sterzata dell'esecuzione verso tale percorso. +L'esecuzione simbolica rappresenta una traccia di esecuzione come formula matematica su valori di input simbolici, altrimenti detta _predicato di percorso_. Un [risolutore SMT](https://en.wikipedia.org/wiki/Satisfiability_modulo_theories) è usato per controllare se un predicato di percorso è "soddisfacibile" (cioè, se esiste un valore che può soddisfare la formula). Se un percorso vulnerabile è soddisfacibile, il risolutore SMT genererà un valore concreto che innesca la sterzata dell'esecuzione verso tale percorso. -Ipotizziamo che la funzione di un contratto intelligente prenda come input un valore `uint` (`x`) e si ripristini quando `x` è maggiore di `5` e minore di `10`. Trovare un valore per `x` che inneschi l'errore utilizzando una normale procedura di test richiederebbe l'esecuzione di decine di casi di prova (o più) senza la garanzia di trovare effettivamente un input che causi un errore. +Si supponga che la funzione di un contratto intelligente prenda in input un valore `uint` (`x`) ed esegua il revert quando `x` è maggiore di `5` e anche minore di `10`. Trovare un valore per `x` che inneschi l'errore utilizzando una normale procedura di test richiederebbe l'esecuzione di decine di casi di test (o più) senza la certezza di trovare effettivamente un input che inneschi l'errore. -Viceversa, uno strumento d'esecuzione simbolica eseguirebbe la funzione con il valore simbolico: `X > 5 ∧ X < 10` (cioè `x` è maggiore di 5 AND `x` è minore di 10). Il predicato del percorso associato `x = X > 5 ∧ X < 10` sarebbe quindi dato a un risolutore SMT per la risoluzione. Se un valore specifico soddisfa la formula `x = X > 5 ∧ X < 10`, il risolutore SMT lo calcolerà, ad esempio producendo `7` come valore per `x`. +Al contrario, uno strumento di esecuzione simbolica eseguirebbe la funzione con il valore simbolico: `X > 5 ∧ X < 10` (cioè, `x` è maggiore di 5 E `x` è minore di 10). Il predicato di percorso associato `x = X > 5 ∧ X < 10` verrebbe quindi dato a un risolutore SMT per la risoluzione. Se un particolare valore soddisfa la formula `x = X > 5 ∧ X < 10`, il risolutore SMT lo calcolerà — ad esempio, il risolutore potrebbe produrre `7` come valore per `x`. Poiché l'esecuzione simbolica si basa sugli input di un programma e la serie di input per esplorare tutti gli stati raggiungibili è potenzialmente infinito, è comunque una forma di test. Tuttavia, come mostrato nell'esempio, l'esecuzione simbolica è più efficiente dei test regolari per trovare gli input che innescano le violazioni di proprietà. @@ -152,25 +152,26 @@ function safe_add(uint x, uint y) returns(uint z){ require(z>=y); return z; +} ``` -Una traccia di esecuzione che risulta in un sovrafflusso di interi dovrebbe soddisfare la formula: `z = x + y AND (z >= x) AND (z=>y) AND (z < x OR z < y)` Una simile formula è improbabile che sia risolta, dunque serve una prova matematica che la funzione `safe_add` non vada mai in sovrafflusso. +Una traccia di esecuzione che provoca un sovraflusso di interi dovrebbe soddisfare la formula: `z = x + y AND (z >= x) AND (z >= y) AND (z < x OR z < y)`. È improbabile che una formula di questo tipo venga risolta, quindi serve come prova matematica che la funzione `safe_add` non va mai in sovraflusso. -### Perché utilizzare la verifica formale per i contratti intelligenti? {#benefits-of-formal-verification} +### Perché utilizzare la verifica formale per i contratti intelligenti? Vantaggi della verifica formale {#benefits-of-formal-verification} #### Necessità di affidabilità {#need-for-reliability} -La verifica formale è utilizzata per valutare la correttezza dei sistemi critici per la sicurezza, i cui guasti possono avere conseguenze devastanti, quali morte, lesioni o rovina finanziaria. I contratti intelligenti sono applicazioni dal valore elevato che controllano enormi quantità di valore, e i semplici errori di progettazione possono comportare [perdite irrecuperabili per gli utenti](https://www.freecodecamp.org/news/a-hacker-stole-31m-of-ether-how-it-happened-and-what-it-means-for-ethereum-9e5dc29e33ce/amp/). Verificare formalmente un contratto prima della distribuzione, tuttavia, può aumentare le garanzie che funzionerà come previsto una volta eseguito sulla blockchain. +La verifica formale è utilizzata per valutare la correttezza dei sistemi critici per la sicurezza, i cui guasti possono avere conseguenze devastanti, quali morte, lesioni o rovina finanziaria. I contratti intelligenti sono applicazioni di alto valore che controllano enormi quantità di valore, e semplici errori di progettazione possono portare a [perdite irrecuperabili per gli utenti](https://www.freecodecamp.org/news/a-hacker-stole-31m-of-ether-how-it-happened-and-what-it-means-for-ethereum-9e5dc29e33ce/amp/). Verificare formalmente un contratto prima della distribuzione, tuttavia, può aumentare le garanzie che funzionerà come previsto una volta eseguito sulla blockchain. L'affidabilità è una qualità altamente desiderata in qualsiasi contratto intelligente, specialmente perché il codice distribuito alla Macchina Virtuale di Ethereum (EVM) è tipicamente immutabile. Con gli aggiornamenti successivi al lancio non prontamente accessibili, la necessità di garantire l'affidabilità dei contratti rende necessaria la verifica formale. La verifica formale è capace di rilevare problemi delicati, come sottoeccedenze e sovrafflussi di interi, rientranza e ottimizzazioni scadenti del carburante, che potrebbero sfuggire a revisori e tester. -#### Provare la correttezza funzionale {#prove-functional-correctness} +#### Dimostrare la correttezza funzionale {#prove-functional-correctness} I test dei programmi è il metodo più comune di provare che un contratto intelligente soddisfa dei requisiti. Ciò comporta l'esecuzione di un contratto con un campione dei dati che si prevede gestirà e l'analisi del rispettivo comportamento. Se il contratto restituisce i risultati previsti per i dati campione, allora gli sviluppatori hanno la prova obiettiva della sua correttezza. -Tuttavia, questo approccio non può provare l'esecuzione corretta per i valori di input che non fanno parte del campione. Dunque, testare un contratto potrebbe aiutare a rilevare i bug (cioè, se i percorsi del codice non riescono a restituire i risultati desiderati durante l'esecuzione), ma **non può provare in via conclusiva l'assenza di bug**. +Tuttavia, questo approccio non può provare l'esecuzione corretta per i valori di input che non fanno parte del campione. Pertanto, il test di un contratto può aiutare a rilevare i bug (cioè se alcuni percorsi del codice non riescono a restituire i risultati desiderati durante l'esecuzione), ma **non può provare in modo conclusivo l'assenza di bug**. -Viceversa, la verifica formale può provare formalmente che un contratto intelligente soddisfa i requisiti per una gamma infinita di esecuzioni _senza_ eseguire affatto il contratto. Ciò richiede la creazione di una specifica formale che descriva precisamente i comportamenti corretti del contratto e lo sviluppo di un modello (matematico) formale del sistema del contratto. Quindi possiamo seguire una procedura di prova formale per verificare la coerenza tra il modello del contratto e la sua specifica. +Al contrario, la verifica formale può dimostrare formalmente che un contratto intelligente soddisfa i requisiti per una gamma infinita di esecuzioni _senza_ eseguire affatto il contratto. Ciò richiede la creazione di una specifica formale che descriva precisamente i comportamenti corretti del contratto e lo sviluppo di un modello (matematico) formale del sistema del contratto. Quindi possiamo seguire una procedura di prova formale per verificare la coerenza tra il modello del contratto e la sua specifica. Con la verifica formale, la questione di verificare se la logica aziendale di un contratto soddisfi i requisiti è una proposizione matematica che può essere dimostrata o confutata. Dimostrando formalmente una proposizione, possiamo verificare un numero infinito di casi di prova con un numero finito di passaggi. Così, la verifica formale ha delle prospettive migliori di dimostrare che un contratto sia funzionalmente corretto rispetto a una specifica. @@ -180,9 +181,9 @@ Un obiettivo di verifica descrive il sistema da verificare formalmente. La verif I contratti intelligenti, almeno in una certa misura, soddisfano entrambi i requisiti. Ad esempio, le piccole dimensioni dei contratti di Ethereum li rendono suscettibili alla verifica formale. Analogamente, l'EVM segue delle regole semplici, che rendono più facile specificare e verificare le proprietà semantiche per i programmi in esecuzione nell'EVM. -### Ciclo di sviluppo più veloce {#faster-development-cycle} +### Ciclo di sviluppo più rapido {#faster-development-cycle} -Le tecniche di verifica formale, come il controllo dei modelli e l'esecuzione simbolica, sono generalmente più efficienti dell'analisi regolare del codice del contratto intelligente (eseguita durante i test o i controlli). Questo perché la verifica formale si basa su valori simbolici per testare le asserzioni ("che succede se un utente prova a prelevare _n_ ether?") a differenza dei test che utilizzano valori concreti ("che succede se un utente prova a prelevare 5 ether?"). +Le tecniche di verifica formale, come il controllo dei modelli e l'esecuzione simbolica, sono generalmente più efficienti dell'analisi regolare del codice del contratto intelligente (eseguita durante i test o i controlli). Questo perché la verifica formale si basa su valori simbolici per testare le asserzioni ("cosa succede se un utente cerca di prelevare _n_ ether?") a differenza dei test che utilizzano valori concreti ("che succede se un utente prova a prelevare 5 ether?"). Le variabili di input simboliche possono coprire svariate classi di valori concreti, quindi gli approcci di verifica formale promettono maggiore copertura del codice in un periodo di tempo più breve. Se usata efficacemente, la verifica formale può accelerare il ciclo di sviluppo per gli sviluppatori. @@ -190,7 +191,7 @@ La verifica formale, inoltre, migliora il processo di costruzione di applicazion ## Svantaggi della verifica formale {#drawbacks-of-formal-verification} -### Costo della manodopera {#cost-of-manual-labor} +### Costo del lavoro manuale {#cost-of-manual-labor} La verifica formale, specialmente la verifica semi-automatica in cui un umano guida il dimostratore a ricavare le prove di correttezza, richiede considerevole manodopera. Inoltre, la creazione della specifica formale è un'attività complessa che richiede un livello elevato di competenze. @@ -202,82 +203,82 @@ La verifica formale può soltanto verificare se l'esecuzione del contratto intel Se le specifiche sono scritte male, le violazioni delle proprietà – che puntano alle esecuzioni vulnerabili – non sono rilevabili dal controllo di verifica formale. In questo caso il programmatore potrebbe pensare erroneamente che il contratto sia senza bug. -### Problemi di prestazione {#performance-issues} +### Problemi di prestazioni {#performance-issues} La verifica formale comporta una serie di problemi di prestazione. Per esempio, i problemi d'esplosione di stato e di percorso incontrati durante il controllo del modello e il controllo simbolico, rispettivamente, possono influenzare le procedure di verifica. Inoltre, gli strumenti di verifica formale utilizzano spesso risolutori SMT e altri risolutori di vincolo nel proprio livello sottostante, e questi si basano su procedure ad alta intensità di calcoli. -Inoltre, non sempre per i verificatori di programmi è possibile determinare se una proprietà (descritta come una formula logica) sia soddisfacibile o no (il "[problema di decidibilità](https://en.wikipedia.org/wiki/Decision_problem)"), poiché un programma potrebbe non terminare mai. Come tale, potrebbe essere impossibile dimostrare alcune proprietà per un contratto, anche se ben specificate. +Inoltre, non è sempre possibile per i verificatori di programmi determinare se una proprietà (descritta come una formula logica) possa essere soddisfatta o meno (il "[problema della decidibilità](https://en.wikipedia.org/wiki/Decision_problem)") perché un programma potrebbe non terminare mai. Come tale, potrebbe essere impossibile dimostrare alcune proprietà per un contratto, anche se ben specificate. ## Strumenti di verifica formale per i contratti intelligenti di Ethereum {#formal-verification-tools} ### Linguaggi di specifica per la creazione di specifiche formali {#specification-languages} -**Act**: _*Act consente la specifica di aggiornamenti d'archiviazione, pre e post condizioni e invarianti del contratto. La sua suite di strumenti contiene inoltre backend di prova in grado di dimostrare molte proprietà tramite Coq, risolutori SMT o hevm.** +**Act**: _\*Act consente la specifica di aggiornamenti dello storage, pre/post condizioni e invarianti del contratto._ La sua suite di strumenti contiene inoltre backend di prova in grado di dimostrare molte proprietà tramite Coq, risolutori SMT o hevm.\*_ - [GitHub](https://github.com/ethereum/act) -- [Documentazione](https://ethereum.github.io/act/) +- [Documentazione](https://github.com/argotorg/act) -**Scribble** - _*Scribble trasforma le annotazioni di codice nel linguaggio di specifica di Scribble in asserzioni concrete che verificano la specifica.** +**Scribble** - __Scribble trasforma le annotazioni del codice nel linguaggio di specifica di Scribble in asserzioni concrete che controllano la specifica.__ - [Documentazione](https://docs.scribble.codes/) -**Dafny** - _*Dafny è un linguaggio di programmazione pronto alla verifica che si basa su annotazioni di alto livello per ragionare sulla correttezza del codice e dimostrarla.** +**Dafny** - __Dafny è un linguaggio di programmazione pronto per la verifica che si basa su annotazioni di alto livello per ragionare e dimostrare la correttezza del codice.__ - [GitHub](https://github.com/dafny-lang/dafny) -### Verificatori di programmi per verificare la correttezza {#program-verifiers} +### Verificatori di programmi per il controllo della correttezza {#program-verifiers} -**Certora Prover** - _Certora Prover è uno strumento automatico di verifica formale per verificare la correttezza del codice nei contratti intelligenti. Le specifiche sono scritte in CVL (Certora Verification Language), con le violazioni di proprietà rilevate utilizzando una combinazione di analisi statica e risoluzione del vincolo._ +**Certora Prover** - _Certora Prover è uno strumento di verifica formale automatico per controllare la correttezza del codice nei contratti intelligenti. Le specifiche sono scritte in CVL (Certora Verification Language), con violazioni delle proprietà rilevate utilizzando una combinazione di analisi statica e risoluzione dei vincoli._ - [Sito web](https://www.certora.com/) - [Documentazione](https://docs.certora.com/en/latest/index.html) -**SMTChecker di Solidity** - _*SMTChecker di Solidity è un revisore del modello integrato basato sulle SMT (Satisfiability Modulo Theories) e la risoluzione di Horn. Conferma se il codice sorgente di un contratto corrisponde alle specifiche durante la compilazione e controlla staticamente le violazioni delle proprietà di sicurezza.** +**SMTChecker di Solidity** - _\*L'SMTChecker di Solidity è un verificatore di modelli integrato basato su SMT (Satisfiability Modulo Theories) e sulla risoluzione di Horn._ Conferma se il codice sorgente di un contratto corrisponde alle specifiche durante la compilazione e controlla staticamente le violazioni delle proprietà di sicurezza.\*_ - [GitHub](https://github.com/ethereum/solidity) -**solc-verify** - _*solc-verify è una versione estesa del compilatore di Solidity che può eseguire la verifica formale automatizzata sul codice di Solidity utilizzando le annotazioni e la verifica modulare del programma.** +**solc-verify** - __solc-verify è una versione estesa del compilatore Solidity che può eseguire la verifica formale automatizzata sul codice Solidity utilizzando le annotazioni e la verifica modulare del programma.__ - [GitHub](https://github.com/SRI-CSL/solidity) -**KEVM** - _*KEVM è una semantica formale della Macchina Virtuale di Ethereum (EVM), scritta nel quadro K. KEVM è eseguibile e può dimostrare determinate asserzioni correlate alle proprietà utilizzando la logica di raggiungibilità.** +**KEVM** - _\*KEVM è una semantica formale della Macchina Virtuale di Ethereum (EVM) scritta nel framework K._ KEVM è eseguibile e può dimostrare determinate asserzioni correlate alle proprietà utilizzando la logica di raggiungibilità.\*_ - [GitHub](https://github.com/runtimeverification/evm-semantics) - [Documentazione](https://jellopaper.org/) -### Quadri logici per la dimostrazione del teorema {#theorem-provers} +### Framework logici per la dimostrazione di teoremi {#theorem-provers} -**Isabelle** - _Isabelle/HOL è un assistente di dimostrazione che consente di esprimere formule matematiche in un linguaggio formale e fornisce strumenti per dimostrarle. L'applicazione principale è la formalizzazione delle dimostrazioni matematiche e in particolare la verifica formale, che include la dimostrazione della correttezza di hardware e software e la dimostrazione delle proprietà dei linguaggi e dei protocolli informatici._ +**Isabelle** - _Isabelle/HOL è un assistente alla dimostrazione che permette di esprimere formule matematiche in un linguaggio formale e fornisce strumenti per la dimostrazione di tali formule. L'applicazione principale è la formalizzazione delle dimostrazioni matematiche e in particolare la verifica formale, che include la dimostrazione della correttezza di hardware e software e la dimostrazione delle proprietà dei linguaggi e dei protocolli informatici._ - [GitHub](https://github.com/isabelle-prover) - [Documentazione](https://isabelle.in.tum.de/documentation.html) -**Coq** - _Coq è un dimostratore interattivo del teorema che ti consente di definire i programmi che utilizzano i teoremi e generare interattivamente prove di correttezza verificate dalla macchina._ +**Rocq** - _Rocq è un dimostratore di teoremi interattivo che consente di definire programmi utilizzando teoremi e di generare interattivamente prove di correttezza verificate automaticamente._ -- [GitHub](https://github.com/coq/coq) -- [Documentazione](https://coq.github.io/doc/v8.13/refman/index.html) +- [GitHub](https://github.com/rocq-prover/rocq) +- [Documentazione](https://rocq-prover.org/docs) -### Strumenti basati sull'esecuzione simbolica per rilevare modelli vulnerabili nei contratti intelligenti {#symbolic-execution-tools} +### Strumenti basati sull'esecuzione simbolica per il rilevamento di modelli vulnerabili nei contratti intelligenti {#symbolic-execution-tools} -**Manticore** - _*Uno strumento per analizzare il bytecode dell'EVM basato sull'esecuzione simbolica*.* +**Manticore** - __Uno strumento per l'analisi del bytecode dell'EVM basato sull'esecuzione simbolica.__ - [GitHub](https://github.com/trailofbits/manticore) - [Documentazione](https://github.com/trailofbits/manticore/wiki) -**hevm** - _*hevm è un motore di esecuzione simbolica e verificatore di equivalenza per il bytecode dell'EVM.** +**hevm** - __hevm è un motore di esecuzione simbolica e un verificatore di equivalenza per il bytecode dell'EVM.__ - [GitHub](https://github.com/dapphub/dapptools/tree/master/src/hevm) -**Mythril** - _Uno strumento di esecuzione simbolica per rilevare le vulnerabilità nei contratti intelligenti di Ethereum_ +**Mythril** - _Uno strumento di esecuzione simbolica per il rilevamento di vulnerabilità nei contratti intelligenti di Ethereum_ - [GitHub](https://github.com/ConsenSys/mythril-classic) - [Documentazione](https://mythril-classic.readthedocs.io/en/develop/) -## Ulteriori letture {#further-reading} +## Letture consigliate {#further-reading} - [Come funziona la verifica formale dei contratti intelligenti](https://runtimeverification.com/blog/how-formal-verification-of-smart-contracts-works/) -- [Come la verifica formale può assicurare contratti intelligenti impeccabili](https://media.consensys.net/how-formal-verification-can-ensure-flawless-smart-contracts-cbda8ad99bd1) +- [Come la verifica formale può garantire contratti intelligenti impeccabili](https://media.consensys.net/how-formal-verification-can-ensure-flawless-smart-contracts-cbda8ad99bd1) - [Una panoramica dei progetti di verifica formale nell'ecosistema di Ethereum](https://github.com/leonardoalt/ethereum_formal_verification_overview) - [Verifica formale end-to-end del contratto intelligente di deposito di Ethereum 2.0](https://runtimeverification.com/blog/end-to-end-formal-verification-of-ethereum-2-0-deposit-smart-contract/) -- [Verificare formalmente il contratto intelligente più popolare al mondo](https://www.zellic.io/blog/formal-verification-weth) +- [Verifica formale del contratto intelligente più popolare al mondo](https://www.zellic.io/blog/formal-verification-weth) - [SMTChecker e verifica formale](https://docs.soliditylang.org/en/v0.8.15/smtchecker.html) diff --git a/public/content/translations/it/developers/docs/smart-contracts/index.md b/public/content/translations/it/developers/docs/smart-contracts/index.md index c235b47d123..5970f53ee62 100644 --- a/public/content/translations/it/developers/docs/smart-contracts/index.md +++ b/public/content/translations/it/developers/docs/smart-contracts/index.md @@ -8,19 +8,19 @@ lang: it 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. -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. +I contratti intelligenti sono un tipo di [conto 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 solo muovendo i primi passi o stai cercando un'introduzione meno tecnica, consigliamo la nostra [introduzione ai contratti intelligenti](/smart-contracts/). +Se stai solo muovendo i primi passi o cerchi un'introduzione meno tecnica, ti consigliamo la nostra [introduzione ai contratti intelligenti](/smart-contracts/). -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. +Assicurati di aver letto la documentazione su [conti](/developers/docs/accounts/), [transazioni](/developers/docs/transactions/) e la [macchina virtuale di Ethereum](/developers/docs/evm/) prima di tuffarti nel mondo dei contratti intelligenti. ## Un distributore automatico digitale {#a-digital-vending-machine} -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. +Forse la metafora migliore 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: +Per ricevere uno snack da un distributore la logica necessaria è la seguente: ``` denaro + scelta dello snack = snack erogato @@ -39,9 +39,9 @@ contract VendingMachine { address public owner; mapping (address => uint) public cupcakeBalances; - // Quando il contratto 'VendingMachine' è distribuito: + // Quando il contratto 'VendingMachine' viene distribuito: // 1. imposta l'indirizzo di distribuzione come proprietario del contratto - // 2. imposta il saldo di cupcake del contratto intelligente distribuito a 100 + // 2. imposta a 100 il saldo di cupcake del contratto intelligente distribuito constructor() { owner = msg.sender; cupcakeBalances[address(this)] = 100; @@ -53,7 +53,7 @@ contract VendingMachine { cupcakeBalances[address(this)] += amount; } - // Consenti a chiunque di comprare cupcake + // Consenti a chiunque di acquistare cupcake function purchase(uint amount) public payable { require(msg.value >= amount * 1 ether, "Devi pagare almeno 1 ETH per cupcake"); require(cupcakeBalances[address(this)] >= amount, "Non ci sono abbastanza cupcake in magazzino per completare questo acquisto"); @@ -65,38 +65,38 @@ contract VendingMachine { 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} +## Senza permessi {#permissionless} -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. Implementare un contratto intelligente è tecnicamente una transazione, per cui è necessario pagare del [gas](/developers/docs/gas/) allo stesso modo con cui è pagato per una semplice transazione 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 a programmare in un [linguaggio di contratto intelligente](/developers/docs/smart-contracts/languages/) e avere abbastanza ETH per distribuire il tuo contratto. La distribuzione di un contratto intelligente è tecnicamente una transazione, quindi devi pagare il [gas](/developers/docs/gas/) allo stesso modo in cui lo paghi per un semplice trasferimento di ETH. Tuttavia, i costi del gas per la distribuzione del contratto sono molto più elevati. Ethereum prevede dei linguaggi pratici per gli sviluppatori per scrivere i contratti intelligenti: - Solidity - Vyper -[Ulteriori informazioni sui linguaggi](/developers/docs/smart-contracts/languages/) +[Maggiori 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. [Di più 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. [Maggiori informazioni 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 contratti intelligenti nel tuo contratto, così da estendere ampiamente ciò che è possibile. I contratti possono anche distribuire altri contratti. +I contratti intelligenti sono pubblici su Ethereum e possono esser considerati come 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à dei contratti intelligenti](/developers/docs/smart-contracts/composability/). ## Limitazioni {#limitations} -I contratti intelligenti da soli non possono ottenere informazioni riguardo agli eventi nel "mondo reale" perché non possono recuperare dati da risorse esterne alla catena. Questo significa che non possono rispondere a eventi nel mondo reale. Sono stati progettati così. Basarsi su informazioni esterne potrebbe pregiudicare il consenso, importante per la sicurezza e la decentralizzazione. +Gli smart contract da soli non possono ottenere informazioni sugli eventi del “mondo reale” perché non sono in grado di recuperare dati da fonti off-chain. Questo significa che non possono rispondere a eventi nel mondo reale. Sono stati progettati così. Basarsi su informazioni esterne potrebbe pregiudicare il consenso, importante per la sicurezza e la decentralizzazione. -A ogni modo, è importante per le applicazioni blockchain essere in grado di usare dati off-chain. La soluzione sono gli [oracoli](/developers/docs/oracles/) che sono strumenti che ingeriscono dati off-chain e li rendono disponibili per i contratti intelligenti. +Tuttavia, è importante che le applicazioni blockchain possano utilizzare dati off-chain. La soluzione sono gli [oracoli](/developers/docs/oracles/), strumenti che acquisiscono dati off-chain e li rendono disponibili ai contratti intelligenti. -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). +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 può essere aggirato usando il [Diamond Pattern](https://eips.ethereum.org/EIPS/eip-2535). ## Contratti multifirma {#multisig} -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. +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. I multifirma richiedono N firme su M firme accettabili possibili (dove N ≤ M e M > 1) per essere eseguiti. `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 dei contratti intelligenti {#smart-contract-resources} +## Risorse sui contratti intelligenti {#smart-contract-resources} **OpenZeppelin Contracts -** **_Libreria per lo sviluppo sicuro di contratti intelligenti._** @@ -108,5 +108,5 @@ I contratti multifirma (a firma multipla), sono conti del contratto intelligente - [Coinbase: Cos'è un contratto intelligente?](https://www.coinbase.com/learn/crypto-basics/what-is-a-smart-contract) - [Chainlink: Cos'è un contratto intelligente?](https://chain.link/education/smart-contracts) -- [Video: Spiegato in modo semplice - Contratti intelligenti](https://youtu.be/ZE2HxTmxfrI) -- [Cyfrin Updraft: Piattaforma di apprendimento e controllo Web3](https://updraft.cyfrin.io) +- [Video: Spiegazione Semplice - Contratti Intelligenti](https://youtu.be/ZE2HxTmxfrI) +- [Cyfrin Updraft: piattaforma di apprendimento e auditing Web3](https://updraft.cyfrin.io) diff --git a/public/content/translations/it/developers/docs/smart-contracts/languages/index.md b/public/content/translations/it/developers/docs/smart-contracts/languages/index.md index 8783253b63f..29916d444a9 100644 --- a/public/content/translations/it/developers/docs/smart-contracts/languages/index.md +++ b/public/content/translations/it/developers/docs/smart-contracts/languages/index.md @@ -1,19 +1,19 @@ --- -title: Linguaggi dei contratti intelligenti -description: 'Panoramica e confronto dei due linguaggi principali dei contratti intelligenti: Solidity e Viper.' +title: Linguaggi del contratto intelligente +description: "Panoramica e confronto dei due linguaggi principali dei contratti intelligenti: Solidity e Vyper." lang: it --- -Uno degli aspetti positivi di Ethereum è che i contratti intelligenti sono programmabili usando linguaggi relativamente comodi per gli sviluppatori. Se hai esperienza con Python o altri [linguaggi a parentesi graffa](https://wikipedia.org/wiki/List_of_programming_languages_by_type#Curly-bracket_languages), troverai un linguaggio con una sintassi familiare. +Uno degli aspetti positivi di Ethereum è che i contratti intelligenti sono programmabili usando linguaggi relativamente comodi per gli sviluppatori. Se hai esperienza con Python o con un qualsiasi [linguaggio con parentesi graffe](https://wikipedia.org/wiki/List_of_programming_languages_by_type#Curly-bracket_languages), puoi trovare un linguaggio con una sintassi familiare. I due linguaggi più attivi e gestiti sono: - Solidity - Vyper -Remix IDE fornisce un ambiente di sviluppo completo per creare e testare i contratti sia in Solidity che in Vyper. [Prova Remix IDE integrato nel browser](https://remix.ethereum.org) per iniziare a programmare. +Remix IDE fornisce un ambiente di sviluppo completo per creare e testare i contratti sia in Solidity che in Vyper. [Prova l'IDE Remix nel browser](https://remix.ethereum.org) per iniziare a programmare. -Gli sviluppatori più esperti potrebbero prendere in considerazione anche Yul, un linguaggio intermedio per la [macchina virtuale Ethereum](/developers/docs/evm/), oppure Yul +, un'estensione di Yul. +Gli sviluppatori più esperti potrebbero anche voler usare Yul, un linguaggio intermedio per la [Macchina Virtuale Ethereum](/developers/docs/evm/), o Yul+, un'estensione di Yul. Se sei curioso e vorresti aiutare a testare nuovi linguaggi ancora in via di sviluppo, puoi sperimentare con Fe, un linguaggio emergente nel campo dei contratti intelligenti, correntemente ai suoi inizi. @@ -34,15 +34,15 @@ Una conoscenza pregressa dei linguaggi di programmazione, specialmente JavaScrip ### Link importanti {#important-links} - [Documentazione](https://docs.soliditylang.org/en/latest/) -- [Portale del Linguaggio di Solidity](https://soliditylang.org/) -- [Solidity per Esempio](https://docs.soliditylang.org/en/latest/solidity-by-example.html) +- [Portale del linguaggio Solidity](https://soliditylang.org/) +- [Solidity by Example](https://docs.soliditylang.org/en/latest/solidity-by-example.html) - [GitHub](https://github.com/ethereum/solidity/) -- [Solidity Gitter Chatroom](https://gitter.im/ethereum/solidity) collegato alla [Chatroom di Solidity Matrix](https://matrix.to/#/#ethereum_solidity:gitter.im) -- [Cheat Sheet](https://reference.auditless.com/cheatsheet) -- [Solidity Blog](https://blog.soliditylang.org/) +- [Chatroom Gitter di Solidity](https://gitter.im/ethereum/solidity) con ponte verso la [Chatroom Matrix di Solidity](https://matrix.to/#/#ethereum_solidity:gitter.im) +- [Contenuto riassuntivo](https://reference.auditless.com/cheatsheet) +- [Blog di Solidity](https://blog.soliditylang.org/) - [Twitter di Solidity](https://twitter.com/solidity_lang) -### Esempio di contratto {#example-contract} +### Contratto di esempio {#example-contract} ```solidity // SPDX-License-Identifier: GPL-3.0 @@ -55,7 +55,7 @@ contract Coin { mapping (address => uint) public balances; // Gli eventi consentono ai client di reagire a specifiche - // modifiche ai contratti che vengono dichiarate + // modifiche al contratto che dichiari event Sent(address from, address to, uint amount); // Il codice del costruttore viene eseguito solo quando il contratto @@ -75,7 +75,7 @@ contract Coin { // Invia una quantità di monete esistenti // da qualsiasi chiamante a un indirizzo function send(address receiver, uint amount) public { - require(amount <= balances[msg.sender], "Insufficient balance."); + require(amount <= balances[msg.sender], "Saldo insufficiente."); balances[msg.sender] -= amount; balances[receiver] += amount; emit Sent(msg.sender, receiver, amount); @@ -83,7 +83,7 @@ contract Coin { } ``` -Questo esempio dà un'idea della sintassi di un contratto in Solidity. Per una descrizione più dettagliata di funzioni e variabili, [consulta la documentazione](https://docs.soliditylang.org/en/latest/contracts.html). +Questo esempio dà un'idea della sintassi di un contratto in Solidity. Per una descrizione più dettagliata delle funzioni e delle variabili, [consulta la documentazione](https://docs.soliditylang.org/en/latest/contracts.html). ## Vyper {#vyper} @@ -91,7 +91,7 @@ Questo esempio dà un'idea della sintassi di un contratto in Solidity. Per una d - Tipizzazione forte - Codice del compilatore contenuto e comprensibile - Generazione di bytecode efficiente -- Contiene deliberatamente meno funzionalità di Solidity, mirando a rendere i contratti più sicuri e facili da xcontcontrollare. Vyper non supporta: +- Contiene deliberatamente meno funzionalità di Solidity, mirando a rendere i contratti più sicuri e facili da controllare. Vyper non supporta: - Modificatori - Ereditarietà - Assemblaggio in linea @@ -101,73 +101,89 @@ Questo esempio dà un'idea della sintassi di un contratto in Solidity. Per una d - Cicli di lunghezza infinita - Punti fissi binari -Per ulteriori informazioni, [consulta la logica di Vyper](https://vyper.readthedocs.io/en/latest/index.html). +Per maggiori informazioni, [leggi le motivazioni di Vyper](https://vyper.readthedocs.io/en/latest/index.html). ### Link importanti {#important-links-1} - [Documentazione](https://vyper.readthedocs.io) -- [Vyper per Esempio](https://vyper.readthedocs.io/en/latest/vyper-by-example.html) -- [Più Vyper per Esempio](https://vyper-by-example.org/) +- [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) - [Chat Discord della community di Vyper](https://discord.gg/SdvKC79cJk) -- [Cheat Sheet](https://reference.auditless.com/cheatsheet) -- [Quadro di sviluppo dei contratti intelligenti e strumenti per Vyper](/developers/docs/programming-languages/python/) -- [VyperPunk: impara a proteggere e hackerare i contratti intelligenti di Vyper](https://github.com/SupremacyTeam/VyperPunk) +- [Contenuto riassuntivo](https://reference.auditless.com/cheatsheet) +- [Framework di sviluppo e strumenti per contratti intelligenti per Vyper](/developers/docs/programming-languages/python/) +- [VyperPunk - impara a proteggere e ad hackerare i contratti intelligenti Vyper](https://github.com/SupremacyTeam/VyperPunk) - [Hub di Vyper per lo sviluppo](https://github.com/zcor/vyper-dev) -- [Esempi dei migliori contratti intelligenti di Vyper](https://github.com/pynchmeister/vyper-greatest-hits/tree/main/contracts) -- [Fantastiche risorse curate di Vyper](https://github.com/spadebuilders/awesome-vyper) +- [Vyper greatest hits: esempi di contratti intelligenti](https://github.com/pynchmeister/vyper-greatest-hits/tree/main/contracts) +- [Awesome Vyper: risorse curate](https://github.com/spadebuilders/awesome-vyper) ### Esempio {#example} ```python -# Apertura asta +# Asta aperta + +# Parametri asta -# Parametri d'asta # Il beneficiario riceve denaro dal miglior offerente + beneficiary: public(address) auctionStart: public(uint256) auctionEnd: public(uint256) # Stato attuale dell'asta + highestBidder: public(address) highestBid: public(uint256) -# Imposta a true alla fine per non permettere più modifiche +# Impostato su true alla fine, non consente alcuna modifica + ended: public(bool) -# Tiene traccia delle offerte rimborsate in modo da poter seguire il modello di prelievo +# Tieni traccia delle offerte rimborsate per seguire il modello di prelievo + pendingReturns: public(HashMap[address, uint256]) -# Crea una semplice asta con `_bidding_time` -# tempo di offerta in secondi per conto -# dell'indirizzo del beneficiario `_beneficiary`. +# Crea un'asta semplice con un tempo di offerta di `_bidding_time` + +# secondi per conto dell'indirizzo + +# del beneficiario `_beneficiary`. + @external def __init__(_beneficiary: address, _bidding_time: uint256): self.beneficiary = _beneficiary self.auctionStart = block.timestamp self.auctionEnd = self.auctionStart + _bidding_time -# Offerta sull'asta con il valore inviato +# Fai un'offerta all'asta con il valore inviato + # insieme a questa transazione. -# Il valore sarà rimborsato solo se l'asta -# non viene vinta. + +# Il valore sarà rimborsato solo se + +# l'asta non viene vinta. + @external @payable def bid(): - # Controlla se il periodo di offerta è finito. + # Controlla se il periodo di offerta è terminato. assert block.timestamp < self.auctionEnd - # Verifica se l'offerta è abbastanza alta + # Controlla se l'offerta è abbastanza alta assert msg.value > self.highestBid - # Tiene traccia del rimborso all'offerente più alto precedente + # Tieni traccia del rimborso per il precedente miglior offerente self.pendingReturns[self.highestBidder] += self.highestBid - # Tiene traccia della nuova offerta più alta + # Tieni traccia della nuova offerta più alta self.highestBidder = msg.sender self.highestBid = msg.value -# Preleva un'offerta precedentemente rimborsata. Il modello di prelievo è -# utilizzato qui per evitare un problema di sicurezza. Se i rimborsi venissero inviati direttamente -# come parte di bid(), un contratto di offerta malevolo potrebbe bloccarli -# e quindi bloccare le nuove offerte più alte in arrivo. +# Preleva un'offerta rimborsata in precedenza. Il modello di prelievo è + +# usato qui per evitare un problema di sicurezza. Se i rimborsi fossero inviati + +# direttamente come parte di bid(), un contratto di offerta malevolo potrebbe bloccare + +# tali rimborsi e quindi impedire l'arrivo di nuove offerte più alte. + @external def withdraw(): pending_amount: uint256 = self.pendingReturns[msg.sender] @@ -175,27 +191,29 @@ def withdraw(): send(msg.sender, pending_amount) # Termina l'asta e invia l'offerta più alta + # al beneficiario. + @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: + # È una buona linea guida strutturare le funzioni che interagiscono + # con altri contratti (ad es. chiamano funzioni o inviano ether) + # in tre fasi: # 1. controllo delle condizioni - # 2. esecuzione delle azioni (potenzialmente modificando le condizioni) + # 2. esecuzione di azioni (potenzialmente modificando le condizioni) # 3. interazione con altri contratti - # Se queste fasi sono mischiate, l'altro contratto potrebbe eseguire - # nuove chiamate al contratto corrente e modificare lo stato o causare - # effetti (pagamento di ether) da eseguire più volte. - # Se le funzioni chiamate internamente includono l'interazione con contratti esterni - # devono essere considerate anche interazioni con + # Se queste fasi sono mescolate, l'altro contratto potrebbe richiamare + # il contratto corrente e modificare lo stato o causare + # l'esecuzione di effetti (pagamento di ether) più volte. + # Se le funzioni chiamate internamente includono l'interazione con + # contratti esterni, devono essere considerate anch'esse interazioni con # contratti esterni. # 1. Condizioni - # Controlla se la fine dell'asta è stata raggiunta + # Controlla se l'ora di fine dell'asta è stata raggiunta assert block.timestamp >= self.auctionEnd - # Verifica se questa funzione è già stata chiamata - assert not self.ended + # Controlla se questa funzione è già stata chiamata + assert not self.ended # 2. Effetti self.ended = True @@ -204,7 +222,7 @@ def endAuction(): send(self.beneficiary, self.highestBid) ``` -Questo esempio dovrebbe darti un'idea della sintassi di un contratto in Vyper. Per una descrizione più dettagliata di funzioni e variabili, [consulta la documentazione](https://vyper.readthedocs.io/en/latest/vyper-by-example.html#simple-open-auction). +Questo esempio dovrebbe darti un'idea della sintassi di un contratto in Vyper. Per una descrizione più dettagliata delle funzioni e delle variabili, [consulta la documentazione](https://vyper.readthedocs.io/en/latest/vyper-by-example.html#simple-open-auction). ## Yul e Yul+ {#yul} @@ -213,22 +231,22 @@ Se non hai esperienza con Ethereum e non hai ancora programmato con alcun lingua **Yul** - Linguaggio intermedio per Ethereum. -- Supporta l'[EVM](/developers/docs/evm) ed [Ewasm](https://github.com/ewasm), un WebAssembly orientato a Ethereum, progettato per essere un denominatore comune utilizzabile di entrambe le piattaforme. +- Supporta [EVM](/developers/docs/evm) e [Ewasm](https://github.com/ewasm), un WebAssembly orientato a Ethereum, ed è progettato per essere un denominatore comune utilizzabile di entrambe le piattaforme. - Buona soluzione per le fasi di ottimizzazione di alto livello che possono essere utili per entrambe le piattaforme, EVM ed eWASM. **Yul+** - Un'estensione a Yul molto efficiente e di basso livello. -- Inizialmente progettata per il contratto di un [rollup ottimistico](/developers/docs/scaling/optimistic-rollups/). +- Progettato inizialmente per un contratto di [rollup ottimistico](/developers/docs/scaling/optimistic-rollups/). - Yul+ può essere considerato come una proposta di upgrade sperimentale a Yul che aggiunge nuove funzionalità. ### Link importanti {#important-links-2} - [Documentazione di Yul](https://docs.soliditylang.org/en/latest/yul.html) - [Documentazione di Yul+](https://github.com/fuellabs/yulp) -- [Post Introduttivo di Yul+](https://medium.com/@fuellabs/introducing-yul-a-new-low-level-language-for-ethereum-aa64ce89512f) +- [Post di introduzione a Yul+](https://medium.com/@fuellabs/introducing-yul-a-new-low-level-language-for-ethereum-aa64ce89512f) -### Esempio di contratto {#example-contract-2} +### Contratto di esempio {#example-contract-2} Il seguente semplice esempio implementa una funzione di potenza. Può essere compilato usando `solc --strict-assembly --bin input.yul`. L'esempio dovrebbe esser archiviato nel file input.yul. @@ -251,7 +269,7 @@ Il seguente semplice esempio implementa una funzione di potenza. Può essere com } ``` -Se hai già una buona esperienza coi contratti intelligenti, puoi trovare [qui](https://solidity.readthedocs.io/en/latest/yul.html#complete-erc20-example) un'implementazione completa di ERC-20 su Yul. +Se hai già molta esperienza con i contratti intelligenti, un'implementazione ERC20 completa in Yul è disponibile [qui](https://solidity.readthedocs.io/en/latest/yul.html#complete-erc20-example). ## Fe {#fe} @@ -264,11 +282,11 @@ Se hai già una buona esperienza coi contratti intelligenti, puoi trovare [qui]( - [GitHub](https://github.com/ethereum/fe) - [Annuncio di Fe](https://snakecharmers.ethereum.org/fe-a-new-language-for-the-ethereum-ecosystem/) -- [Tabella di marcia 2021 di Fe](https://notes.ethereum.org/LVhaTF30SJOpkbG1iVw1jg) +- [Roadmap 2021 di Fe](https://notes.ethereum.org/LVhaTF30SJOpkbG1iVw1jg) - [Chat Discord di Fe](https://discord.com/invite/ywpkAXFjZH) - [Twitter di Fe](https://twitter.com/official_fe) -### Esempio di contratto {#example-contract-3} +### Contratto di esempio {#example-contract-3} Il seguente è un contratto semplice implementato in Fe. @@ -299,7 +317,7 @@ Ecco alcune cose da considerare se non hai ancora provato i vari linguaggi: ### Quali vantaggi offre Solidity? {#solidity-advantages} -- Se sei un principiante, esistono molti tutorial e strumenti di apprendimento. Visualizza di più nella sezione [Impara Programmando](/developers/learning-tools/). +- Se sei un principiante, esistono molti tutorial e strumenti di apprendimento. Vedi di più a questo proposito nella sezione [Impara programmando](/developers/learning-tools/). - Buoni strumenti per sviluppatori disponibili. - Solidity ha un'ampia community di sviluppatori, quindi probabilmente troverai le risposte alle tue domande abbastanza rapidamente. @@ -314,11 +332,11 @@ Ecco alcune cose da considerare se non hai ancora provato i vari linguaggi: - Linguaggio di basso livello, semplicistico e funzionale. - Consente di avvicinarsi all'EVM grezza, aiutando a ottimizzare l'uso di gas dei tuoi contratti. -## Confronti tra linguaggi {#language-comparisons} +## Confronto tra linguaggi {#language-comparisons} -Per confrontare la sintassi di base, la durata del contratto, le interfacce, gli operatori, le strutture di dati, le funzioni, il flusso di controllo e altro, consulta questo [contenuto riassuntivo di Auditless](https://reference.auditless.com/cheatsheet/) +Per un confronto della sintassi di base, del ciclo di vita del contratto, delle interfacce, degli operatori, delle strutture dati, delle funzioni, del flusso di controllo e altro ancora, consulta questo [contenuto riassuntivo di Auditless](https://reference.auditless.com/cheatsheet/) -## Ulteriori letture {#further-reading} +## Letture consigliate {#further-reading} -- [Libreria di Contratti in Solidity di OpenZeppelin](https://docs.openzeppelin.com/contracts/5.x/) -- [Solidity per Esempio](https://solidity-by-example.org) +- [Libreria di Contratti Solidity di OpenZeppelin](https://docs.openzeppelin.com/contracts/5.x/) +- [Solidity by Example](https://solidity-by-example.org) diff --git a/public/content/translations/it/developers/docs/smart-contracts/libraries/index.md b/public/content/translations/it/developers/docs/smart-contracts/libraries/index.md index 331d258817f..4873e108318 100644 --- a/public/content/translations/it/developers/docs/smart-contracts/libraries/index.md +++ b/public/content/translations/it/developers/docs/smart-contracts/libraries/index.md @@ -1,6 +1,6 @@ --- title: Librerie dei contratti intelligenti -description: +description: Scopri le librerie di contratti intelligenti riutilizzabili e i blocchi predefiniti per accelerare i tuoi progetti di sviluppo su Ethereum. lang: it --- @@ -8,19 +8,19 @@ Non devi scrivere ogni contratto intelligente nel tuo progetto da zero. Esistono ## Prerequisiti {#prerequisites} -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. +Prima di saltare alle librerie dei contratti intelligenti, è una buona idea avere una buona comprensione della struttura di un contratto intelligente. Vai alla sezione [anatomia di un contratto intelligente](/developers/docs/smart-contracts/anatomy/) se non l'hai ancora fatto. -## Cosa contiene una libreria {#whats-in-a-library} +## Cosa c'è in una libreria {#whats-in-a-library} 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} -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. +Quando scrivi contratti intelligenti, è molto probabile che ti ritroverai a scrivere ripetutamente modelli simili, come assegnare un indirizzo _admin_ per eseguire operazioni protette in un contratto, o aggiungere un pulsante di _pausa_ di emergenza in caso di un problema imprevisto. -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. +Le librerie di contratti intelligenti di solito 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. +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 designa un indirizzo come proprietario di un contratto e fornisce un modificatore per limitare l'accesso a un metodo solo a quel proprietario. ```solidity contract Ownable { @@ -37,7 +37,7 @@ contract Ownable { } ``` -Per usare un blocco di programmazione come questo in un contratto, devi prima importarlo e poi eseguirne estensioni nei tuoi contratti. In questo modo potrai usare il modificatore fornito dal contratto di base di `Ownable` per proteggere le funzioni che utilizzi. +Per usare un blocco di programmazione come questo in un contratto, devi prima importarlo e poi eseguirne estensioni nei tuoi contratti. Ciò ti consentirà di usare il modificatore fornito dal contratto `Ownable` di base per proteggere le tue funzioni. ```solidity import ".../Ownable.sol"; // Percorso della libreria importata @@ -50,19 +50,19 @@ contract MyContract is Ownable { } ``` -Un altro esempio noto è [SafeMath](https://docs.openzeppelin.com/contracts/3.x/utilities#math) o [DsMath](https://dappsys.readthedocs.io/en/latest/ds_math.html). Sono librerie (e non contratti di base) che forniscono funzioni aritmetiche con controlli dell'overflow che non vengono offerti dal linguaggio. È buona pratica usare una di queste librerie al posto delle operazioni aritmetiche native per proteggere un contratto dagli overflow, che possono avere conseguenze disastrose. +Un altro esempio popolare è [SafeMath](https://docs.openzeppelin.com/contracts/3.x/utilities#math) o [DsMath](https://dappsys.readthedocs.io/en/latest/ds_math.html). Sono librerie (e non contratti di base) che forniscono funzioni aritmetiche con controlli dell'overflow che non vengono offerti dal linguaggio. È buona pratica usare una di queste librerie al posto delle operazioni aritmetiche native per proteggere un contratto dagli overflow, che possono avere conseguenze disastrose. ### Standard {#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/). +Per facilitare 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 [standard](/developers/docs/standards/). -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. +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 dei token fungibili ERC20](/developers/tutorials/understand-the-erc-20-token-smart-contract/) si trova 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à. +Vale la pena ricordare che alcuni ERC non sono singoli, ma sono aggiunte di altri ERC. Ad esempio, [ERC2612](https://eips.ethereum.org/EIPS/eip-2612) aggiunge un'estensione a ERC20 per migliorarne l'usabilità. ## 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 [compilare](/developers/docs/smart-contracts/compiling/) i contratti, cercherà le librerie dei contratti intelligenti nei tuoi `node_modules`, quindi puoi fare quanto segue: +Consulta sempre la documentazione della libreria che decidi di utilizzare per avere istruzioni specifiche su come includerla nel tuo progetto. Diverse librerie di contratti Solidity sono distribuite tramite `npm`, quindi puoi semplicemente installarle con `npm install`. La maggior parte degli strumenti per la [compilazione](/developers/docs/smart-contracts/compiling/) di contratti cercherà le librerie di contratti intelligenti nei tuoi `node_modules`, quindi puoi fare quanto segue: ```solidity // Questo caricherà la libreria @openzeppelin/contracts da node_modules @@ -73,13 +73,13 @@ contract MyNFT is ERC721 { } ``` -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. +Indipendentemente dal metodo utilizzato, quando includi una libreria, tieni sempre d'occhio 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. -## Quando usare una libreria {#when-to-use} +## Quando usarle {#when-to-use} 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 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 [controlli esterni](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/audits) 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. Alcune librerie vengono anche sottoposte a [verifiche esterne](https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/audits) per una maggiore sicurezza. 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. @@ -87,18 +87,18 @@ Infine, per decidere se includere una libreria, considera l'uso generale che ne ## Strumenti correlati {#related-tools} -**OpenZeppelin Contracts**: **_La libreria più popolare per lo sviluppo sicuro di contratti intelligenti._** +**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 contratti intelligenti_** +**DappSys -** **_Blocchi predefiniti sicuri, semplici e flessibili per contratti intelligenti._** - [Documentazione](https://dappsys.readthedocs.io/) - [GitHub](https://github.com/dapphub/dappsys) -**HQ20 -** **_Progetto in Solidity con contratti, librerie ed esempi per creare applicazioni complete distribuite per il mondo reale._** +**HQ20 -** **_Un progetto Solidity con contratti, librerie ed esempi per aiutarti a creare applicazioni distribuite complete per il mondo reale._** - [GitHub](https://github.com/HQ20/contracts) @@ -107,10 +107,10 @@ Infine, per decidere se includere una libreria, considera l'uso generale che ne - [Documentazione](https://portal.thirdweb.com/contracts/build/overview) - [GitHub](https://github.com/thirdweb-dev/contracts) -## Tutorial correlati {#related-tutorials} +## Guide correlate {#related-tutorials} -- [Security considerations for Ethereum developers](/developers/docs/smart-contracts/security/): _Un tutorial sulle considerazioni sulla sicurezza durante lo sviluppo dei contratti intelligenti, incluso 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/) _– Una guida sulle considerazioni sulla sicurezza durante la creazione di contratti intelligenti, compreso l'uso delle librerie._ +- [Comprendere il contratto intelligente del token ERC-20](/developers/tutorials/understand-the-erc-20-token-smart-contract/) _-Guida sullo standard ERC20, fornito da più librerie._ ## Letture consigliate {#further-reading} diff --git a/public/content/translations/it/developers/docs/smart-contracts/naming/index.md b/public/content/translations/it/developers/docs/smart-contracts/naming/index.md new file mode 100644 index 00000000000..03d5682a7a9 --- /dev/null +++ b/public/content/translations/it/developers/docs/smart-contracts/naming/index.md @@ -0,0 +1,101 @@ +--- +title: Denominare i contratti intelligenti +description: Migliori pratiche per la denominazione di contratti intelligenti Ethereum con ENS +lang: it +--- + +I contratti intelligenti sono una pietra miliare dell'infrastruttura decentralizzata di Ethereum, in quanto abilitano applicazioni e protocolli autonomi. Tuttavia, anche con l'evoluzione delle funzionalità dei contratti, utenti e sviluppatori si affidano ancora a indirizzi esadecimali grezzi per identificare e fare riferimento a questi contratti. + +Denominare i contratti intelligenti con [Ethereum Name Service (ENS)](https://ens.domains/) migliora l'esperienza utente, eliminando gli indirizzi esadecimali dei contratti e riducendo il rischio di attacchi come l'avvelenamento e lo spoofing di indirizzi. Questa guida spiega perché è importante denominare i contratti intelligenti, come implementarlo e gli strumenti disponibili come [Enscribe](https://www.enscribe.xyz) per semplificare il processo e aiutare gli sviluppatori ad adottare questa pratica. + +## Perché denominare i contratti intelligenti? {#why-name-contracts} + +### Identificatori leggibili dall'uomo {#human-readable-identifiers} + +Invece di interagire con indirizzi di contratto opachi come `0x8f8e...f9e3`, sviluppatori e utenti possono usare nomi leggibili dall'uomo come `v2.myapp.eth`. Ciò semplifica le interazioni con i contratti intelligenti. + +Questo è reso possibile da [Ethereum Name Service](https://ens.domains/) che fornisce un servizio di denominazione decentralizzato per gli indirizzi Ethereum. Questo è analogo a come il Domain Name Service (DNS) consente agli utenti di internet di accedere agli indirizzi di rete utilizzando un nome come ethereum.org invece che tramite un indirizzo IP come `104.18.176.152`. + +### Miglioramento della sicurezza e della fiducia {#improved-security-and-trust} + +I contratti con nome aiutano a ridurre le transazioni accidentali verso l'indirizzo sbagliato. Aiutano anche gli utenti a identificare i contratti legati a specifiche app o marchi. Ciò aggiunge un livello di fiducia reputazionale, soprattutto quando i nomi sono collegati a domini principali noti come `uniswap.eth`. + +Data la lunghezza di 42 caratteri di un indirizzo Ethereum, è molto difficile per gli utenti identificare piccole modifiche negli indirizzi, dove sono stati modificati un paio di caratteri. Ad esempio, un indirizzo come `0x58068646C148E313CB414E85d2Fe89dDc3426870` verrebbe normalmente troncato in `0x580...870` da applicazioni rivolte all'utente come i portafogli. È improbabile che un utente noti un indirizzo malevolo in cui sono stati alterati un paio di caratteri. + +Questo tipo di tecnica è impiegata da attacchi di spoofing e avvelenamento di indirizzi in cui gli utenti sono indotti a credere di interagire o inviare fondi all'indirizzo corretto, quando in realtà l'indirizzo assomiglia semplicemente all'indirizzo corretto, ma non è lo stesso. + +I nomi ENS per portafogli e contratti proteggono da questi tipi di attacchi. Come gli attacchi di spoofing DNS, anche gli attacchi di spoofing ENS possono essere perpetrati, tuttavia, è più probabile che un utente noti un errore di battitura in un nome ENS piuttosto che una piccola modifica a un indirizzo esadecimale. + +### Migliore UX per portafogli ed esploratori {#better-ux} + +Quando un contratto intelligente è stato configurato con un nome ENS, è possibile per app come portafogli ed esploratori di blockchain visualizzare i nomi ENS per i contratti intelligenti, invece degli indirizzi esadecimali. Questo offre un notevole miglioramento dell'esperienza utente (UX) per gli utenti. + +Ad esempio, quando interagiscono con un'app come Uniswap, gli utenti vedranno in genere che l'app con cui stanno interagendo è ospitata sul sito web `uniswap.org`, ma verrebbe loro presentato un indirizzo del contratto esadecimale se Uniswap non avesse denominato i propri contratti intelligenti con ENS. Se il contratto fosse nominato, potrebbero invece vedere `v4.contracts.uniswap.eth`, che è molto più utile. + +## Denominazione durante la distribuzione vs. dopo la distribuzione {#when-to-name} + +Ci sono due momenti in cui i contratti intelligenti possono essere denominati: + +- **Al momento della distribuzione**: assegnazione di un nome ENS al contratto mentre viene distribuito. +- **Dopo la distribuzione**: mappatura di un indirizzo di contratto esistente a un nuovo nome ENS. + +Entrambi gli approcci si basano sull'accesso come proprietario o gestore a un dominio ENS per poter creare e impostare record ENS. + +## Come funziona la denominazione ENS per i contratti {#how-ens-naming-works} + +I nomi ENS sono memorizzati sulla catena e risolvono in indirizzi Ethereum tramite i resolver ENS. Per denominare un contratto intelligente: + +1. Registra o controlla un dominio ENS principale (ad es. `myapp.eth`) +2. Crea un sottodominio (ad es. `v1.myapp.eth`) +3. Imposta il record `address` del sottodominio sull'indirizzo del contratto +4. Imposta il record inverso del contratto sull'ENS per consentire di trovare il nome tramite il suo indirizzo + +I nomi ENS sono gerarchici e supportano un numero illimitato di sotto-nomi. L'impostazione di questi record comporta in genere l'interazione con il registro ENS e i contratti del resolver pubblico. + +## Strumenti per la denominazione dei contratti {#tools} + +Esistono due approcci per denominare i contratti intelligenti. O utilizzando l'[App ENS](https://app.ens.domains) con alcuni passaggi manuali, o utilizzando [Enscribe](https://www.enscribe.xyz). Questi sono descritti di seguito. + +### Configurazione manuale di ENS {#manual-ens-setup} + +Utilizzando l'[App ENS](https://app.ens.domains), gli sviluppatori possono creare manualmente sotto-nomi e impostare record di indirizzi diretti. Tuttavia, non possono impostare un nome primario per un contratto intelligente impostando il record inverso per il nome tramite l'app ENS. È necessario eseguire dei passaggi manuali, che sono trattati nella [documentazione di ENS](https://docs.ens.domains/web/naming-contracts/). + +### Enscribe {#enscribe} + +[Enscribe](https://www.enscribe.xyz) semplifica la denominazione dei contratti intelligenti con ENS e aumenta la fiducia degli utenti nei contratti intelligenti. Fornisce: + +- **Distribuzione e denominazione atomica**: assegna un nome ENS durante la distribuzione di un nuovo contratto +- **Denominazione post-distribuzione**: associa nomi a contratti già distribuiti +- **Supporto multi-catena**: funziona su Ethereum e reti L2 dove ENS è supportato +- **Dati di verifica del contratto**: include i dati di verifica del contratto estratti da più fonti per aumentare la fiducia degli utenti + +Enscribe supporta i nomi ENS forniti dagli utenti o i propri domini se l'utente non ha un nome ENS. + +Puoi accedere all'[App Enscribe](https://app.enscribe.xyz) per iniziare a denominare e visualizzare i contratti intelligenti. + +## Migliori pratiche {#best-practices} + +- **Utilizza nomi chiari e con versione** come `v1.myapp.eth` per rendere trasparenti gli aggiornamenti dei contratti +- **Imposta i record inversi** per collegare i contratti ai nomi ENS per la visibilità in app come portafogli ed esploratori di blockchain. +- **Monitora attentamente le scadenze** se vuoi evitare cambiamenti accidentali di proprietà +- **Verifica la fonte del contratto** in modo che gli utenti possano fidarsi che il contratto denominato si comporti come previsto + +## Rischi {#risks} + +La denominazione dei contratti intelligenti offre vantaggi significativi per gli utenti di Ethereum, tuttavia, i proprietari di domini ENS devono essere vigili rispetto alla loro gestione. I rischi notevoli includono: + +- **Scadenza**: proprio come i nomi DNS, le registrazioni dei nomi ENS hanno una durata limitata. Pertanto è fondamentale che i proprietari monitorino le date di scadenza dei loro domini e li rinnovino con largo anticipo rispetto alla scadenza. Sia l'App ENS che Enscribe forniscono indicatori visivi per i proprietari dei domini quando la scadenza si avvicina. +- **Cambio di proprietà**: i record ENS sono rappresentati come NFT su Ethereum, dove il proprietario di un dominio `.eth` specifico possiede il NFT associato. Pertanto, se un account diverso dovesse assumere la proprietà di questo NFT, il nuovo proprietario potrà modificare qualsiasi record ENS a suo piacimento. + +Per mitigare tali rischi, l'account del proprietario per i domini di secondo livello (2LD) `.eth` dovrebbe essere protetto tramite un portafoglio multi-firma, con sottodomini creati per gestire la denominazione dei contratti. In questo modo, in caso di modifiche accidentali o malevole della proprietà a livello di sottodominio, queste possono essere annullate dal proprietario del 2LD. + +## Futuro della denominazione dei contratti {#future} + +La denominazione dei contratti sta diventando una migliore pratica per lo sviluppo di dApp, in modo simile a come i nomi di dominio hanno sostituito gli indirizzi IP sul web. Man mano che più infrastrutture come portafogli, esploratori e dashboard integreranno la risoluzione ENS per i contratti, i contratti con nome miglioreranno la sicurezza e ridurranno gli errori in tutto l'ecosistema. + +Rendendo i contratti intelligenti più facili da riconoscere e da comprendere, la denominazione aiuta a colmare il divario tra utenti e app su Ethereum, migliorando sia la sicurezza che l'UX per gli utenti. + +## Letture consigliate {#further-reading} + +- [Denominare i Contratti Intelligenti con ENS](https://docs.ens.domains/web/naming-contracts/) +- [Denominare i Contratti Intelligenti con Enscribe](https://www.enscribe.xyz/docs). diff --git a/public/content/translations/it/developers/docs/smart-contracts/security/index.md b/public/content/translations/it/developers/docs/smart-contracts/security/index.md index a15292c8995..7b7b979d19e 100644 --- a/public/content/translations/it/developers/docs/smart-contracts/security/index.md +++ b/public/content/translations/it/developers/docs/smart-contracts/security/index.md @@ -1,54 +1,54 @@ --- -title: Sicurezza dei contratti intelligenti +title: Sicurezza del contratto intelligente description: Una panoramica delle linee guida per costruire contratti intelligenti di Ethereum sicuri lang: it --- 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à. -Blochchain pubbliche come Ethereum 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à. +Blochchain pubbliche come Ethereum rendono ancora più complessa la questione della sicurezza dei contratti intelligenti. Il codice del contratto distribuito _di solito_ non può essere modificato per correggere le falle di sicurezza, mentre gli asset rubati dai contratti intelligenti sono estremamente difficili da tracciare e per lo più irrecuperabili a causa dell'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/markets/2017/07/19/30-million-ether-reported-stolen-due-to-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). +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. Ciò include incidenti di alto profilo, come l'[hack della DAO](https://hackingdistributed.com/2016/06/18/analysis-of-the-dao-exploit/) (3,6 milioni di ETH rubati, del valore di oltre 1 miliardo di dollari ai prezzi odierni), l'[hack del portafoglio multi-firma Parity](https://www.coindesk.com/markets/2017/07/19/30-million-ether-reported-stolen-due-to-parity-wallet-breach) (30 milioni di dollari persi a causa degli hacker) e il [problema del portafoglio Parity bloccato](https://www.theguardian.com/technology/2017/nov/08/cryptocurrency-300m-dollars-stolen-bug-ether) (oltre 300 milioni di dollari in 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} -Assicurati di avere familiarità con le [basi di programmazione di contratti intelligenti](/developers/docs/smart-contracts/) prima di affrontare la questione sicurezza. +Assicurati di avere familiarità con i [fondamenti dello sviluppo di contratti intelligenti](/developers/docs/smart-contracts/) prima di affrontare l'argomento della sicurezza. -## Linee guida per costruire contratti intelligenti di Ethereum sicuri {#smart-contract-security-guidelines} +## Linee guida per la creazione di contratti intelligenti Ethereum sicuri {#smart-contract-security-guidelines} -### 1. Progetta controlli di accesso adeguati {#design-proper-access-controls} +### 1. Progettare controlli d'accesso adeguati {#design-proper-access-controls} 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). -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: +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 **pattern Ownable** e il **controllo basato sui ruoli** sono due pattern utili per implementare il controllo degli accessi nei contratti intelligenti: -#### Modello Ownable {#ownable-pattern} +#### Pattern Ownable {#ownable-pattern} 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. -#### Controllo di accesso basato sul ruolo {#role-based-access-control} +#### Controllo degli accessi basato sui ruoli {#role-based-access-control} -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. +Registrare un unico indirizzo come `Owner` in un contratto intelligente introduce un rischio di centralizzazione e rappresenta un singolo punto di errore. 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. 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. ##### Uso dei portafogli multifirma -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. +Un altro approccio per implementare un controllo degli accessi sicuro è usare un [conto multi-firma](/developers/docs/smart-contracts/#multisig) per gestire 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. 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. -### 2. Usa le istruzioni require(), assert(), e revert() per sorvegliare le operazioni del contratto {#use-require-assert-revert} +### 2. Usare le istruzioni require(), assert() e revert() per proteggere le operazioni del contratto {#use-require-assert-revert} 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. -**`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. +**`require()`**: le istruzioni `require` sono definite all'inizio delle funzioni 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. -**`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. +**`assert()`**: `assert()` è usato per rilevare errori interni e verificare violazioni di “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. L'uso di `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: +**`revert()`**: `revert()` può essere usato in un'istruzione if-else che attiva un'eccezione se la condizione richiesta non è soddisfatta. L'esempio di contratto seguente utilizza `revert()` per proteggere l'esecuzione delle funzioni: ``` pragma solidity ^0.8.4; @@ -58,8 +58,8 @@ contract VendingMachine { error Unauthorized(); function buy(uint amount) public payable { if (amount > msg.value / 2 ether) - revert("Not enough Ether provided."); - // Perform the purchase. + revert("Ether forniti non sufficienti."); + // Esegui l'acquisto. } function withdraw() public { if (msg.sender != owner) @@ -70,40 +70,40 @@ contract VendingMachine { } ``` -### 3. Testa i contratti intelligenti e verifica la correttezza del codice {#test-smart-contracts-and-verify-code-correctness} +### 3. Testare i contratti intelligenti e verificare 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. +L'immutabilità del codice in esecuzione nella [macchina virtuale di Ethereum](/developers/docs/evm/) significa che i contratti intelligenti richiedono un livello più elevato 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. +Il metodo consueto prevede di scrivere piccole unità di prova utilizzando i dati di simulazione che il contratto dovrebbe ricevere dagli utenti. Lo [unit testing](/developers/docs/smart-contracts/testing/#unit-testing) è utile per testare la funzionalità di determinate funzioni e garantire 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 dei contratti intelligenti](https://www.cyfrin.io/blog/smart-contract-fuzzing-and-invariants-testing-foundry), eseguono il codice del contratto con valori di input casuali per rilevare le operazioni che violano le proprietà di sicurezza. +Un approccio migliore è combinare lo unit testing con il testing basato sulle proprietà, eseguito utilizzando l'[analisi statica e dinamica](/developers/docs/smart-contracts/testing/#static-dynamic-analysis). L'analisi statica si basa su rappresentazioni di basso livello, come [grafici del flusso di controllo](https://en.wikipedia.org/wiki/Control-flow_graph) e [alberi di sintassi astratta](https://deepsource.io/glossary/ast/) per analizzare gli stati del programma e i percorsi di esecuzione raggiungibili. Nel frattempo, le tecniche di analisi dinamica, come il [fuzzing dei contratti intelligenti](https://www.cyfrin.io/blog/smart-contract-fuzzing-and-invariants-testing-foundry), 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} +### 4. Chiedere una revisione indipendente del 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} +#### Audit {#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, come documentare correttamente il codice e aggiungere commenti inline, per massimizzare i benefici del controllo di un contratto intelligente. -- [Consigli e trucchi di controllo dei contratti intelligenti](https://twitter.com/tinchoabbate/status/1400170232904400897) - _@tinchoabbate_ -- [Ottieni il massimo dal tuo controllo](https://inference.ag/blog/2023-08-14-tips/) - _Inference_ +- [Suggerimenti e trucchi per l'audit dei contratti intelligenti](https://twitter.com/tinchoabbate/status/1400170232904400897) - _@tinchoabbate_ +- [Sfruttare al meglio il proprio audit](https://inference.ag/blog/2023-08-14-tips/) - _Inference_ -#### Caccia ai bug {#bug-bounties} +#### Ricompense per i 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/). +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 di vita reale è il “bug dei soldi infiniti” che avrebbe permesso a un aggressore di creare una quantità illimitata di ether su [Optimism](https://www.optimism.io/), un protocollo di [Livello 2](/layer-2/) in esecuzione su Ethereum. Fortunatamente, un hacker white hat [ha scoperto la falla](https://www.saurik.com/optimism.html) e ha notificato il team, [guadagnando una grossa ricompensa nel processo](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. +Una strategia utile è impostare la ricompensa di un programma di caccia ai bug proporzionale all'importo di fondi in staking. Descritto come la “[ricompensa per i bug di scalabilità](https://medium.com/immunefi/a-defi-security-standard-the-scaling-bug-bounty-9b83dfdc1ba7)”, questo approccio fornisce incentivi finanziari agli individui per divulgare responsabilmente le vulnerabilità invece di sfruttarle. -### 5. Segui le migliori pratiche durante lo sviluppo del contratto intelligente {#follow-smart-contract-development-best-practices} +### 5. Seguire le migliori pratiche durante lo sviluppo di contratti intelligenti {#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: @@ -113,15 +113,15 @@ L'esistenza di controlli e ricompense per la caccia ai bug non è una scusa per - 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 +- Usare 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 [Cyfrin Aderyn](https://github.com/Cyfrin/aderyn), Mythril e Slither. Idealmente, dovresti farlo prima della fusione di ogni richiesta pull e confrontare le differenze nell'output +- Eseguire il codice con strumenti di analisi di base, come, [Cyfrin Aderyn](https://github.com/Cyfrin/aderyn), 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 -- 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. +- Documentare correttamente il codice (usando [NatSpec](https://solidity.readthedocs.io/en/develop/natspec-format.html)) e descrivere i dettagli sull'architettura del contratto in un linguaggio di facile comprensione. Questo semplificherà il controllo e la revisione del tuo codice da parte di altri. -### 6. Implementa solidi piani di ripristino in caso di disastro {#implement-disaster-recovery-plans} +### 6. Implementare piani di ripristino di emergenza solidi {#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: @@ -129,30 +129,30 @@ Progettare controlli di accesso sicuri, implementare modificatori di funzioni e 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](https://www.cyfrin.io/blog/upgradeable-proxy-smart-contract-pattern) dividono la logica e lo stato 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 meccanismi di aggiornamento del contratto operano diversamente, ma lo "schema del proxy" è uno degli approcci più popolari per aggiornare i contratti intelligenti. I [proxy pattern](https://www.cyfrin.io/blog/upgradeable-proxy-smart-contract-pattern) 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. +I conti interagiscono con il contratto proxy, che invia tutte le chiamate di funzione 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 nell'archiviazione del proxy (invece che nella 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} +#### Arresti di 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. +1. Una variabile booleana globale che indica se il contratto intelligente è in uno stato d'arresto o no. Questa variabile è impostata su `false` durante la configurazione del contratto, ma si ripristinerà su `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). +3. Un'entità che ha accesso alla funzione di arresto d'emergenza, che imposta la variabile booleana su `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: +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 pattern nei contratti: ```solidity -// Questo codice non è stato controllato professionalmente e non fa promesse su sicurezza o correttezza. Usalo a tuo rischio. +// Questo codice non è stato sottoposto ad audit professionale e non fornisce alcuna garanzia sulla sicurezza o sulla correttezza. Usalo a tuo rischio e pericolo. contract EmergencyStop { @@ -169,7 +169,7 @@ contract EmergencyStop { } modifier onlyAuthorized { - // Check for authorization of msg.sender here + // Controlla qui l'autorizzazione di msg.sender _; } @@ -182,52 +182,52 @@ contract EmergencyStop { } function deposit() public payable stoppedInEmergency { - // Deposit logic happening here + // La logica di deposito avviene qui } function emergencyWithdraw() public onlyWhenStopped { - // Emergency withdraw happening here + // Il prelievo d'emergenza avviene qui } } ``` Questo esempio mostra le caratteristiche fondamentali degli arresti d'emergenza: -- `isStopped` è una variabile booleana che restituisce `false` all'inizio e `true` quando il contratto entra in modalità d'emergenza. +- `isStopped` è una variabile booleana che restituisce `false` all'inizio e `true` quando il contratto entra in modalità di emergenza. -- 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. +- I modificatori della funzione `onlyWhenStopped` e `stoppedInEmergency` controllano la variabile `isStopped`. `stoppedInEmergency` è usato per controllare le funzioni che non dovrebbero essere accessibili quando il contratto è vulnerabile (es., `deposit()`). Le chiamate a queste funzioni saranno semplicemente annullate. -`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". +`onlyWhenStopped` è usato 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". -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. +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 di emergenza, sottoponendolo a un meccanismo di voto sulla catena, a un blocco temporale o all'approvazione di un portafoglio multi-firma, sono possibili soluzioni. #### 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). +Gli [eventi](https://docs.soliditylang.org/en/v0.8.15/contracts.html#events) 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). -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. +La registrazione degli eventi e il loro monitoraggio fuori dalla catena forniscono informazioni sulle operazioni del contratto e aiutano a scoprire più velocemente le azioni malevole. 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} +### 7. Progettare 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. +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 aggressore acquisisce un enorme potere di voto (misurato in numero di token posseduti) chiedendo un [prestito flash](/defi/#flash-loans) e presentando una proposta malevola. -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. +Un modo per prevenire i problemi legati alla governance sulla catena è [usare 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/), sui [diversi meccanismi di voto nelle DAO](https://hackernoon.com/governance-is-the-holy-grail-for-daos) e sui [vettori d'attacco comuni alle DAO che sfruttano la DeFi](https://dacian.me/dao-governance-defi-attacks) nei collegamenti condivisi. +Nei link condivisi sono disponibili ulteriori informazioni sulla [progettazione di sistemi di governance sicuri](https://blog.openzeppelin.com/smart-contract-security-guidelines-4-strategies-for-safer-governance-systems/), sui [diversi meccanismi di voto nelle DAO](https://hackernoon.com/governance-is-the-holy-grail-for-daos) e sui [vettori di attacco comuni alle DAO che sfruttano la DeFi](https://dacian.me/dao-governance-defi-attacks). -### 8. Riduci al minimo la complessità nel codice {#reduce-code-complexity} +### 8. Ridurre al minimo la complessità del 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/5.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. +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 [OpenZeppelin Contracts](https://docs.openzeppelin.com/contracts/5.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} +### 9. Difendersi dalle vulnerabilità comuni dei contratti intelligenti {#mitigate-common-smart-contract-vulnerabilities} #### Rientranza {#reentrancy} @@ -235,10 +235,10 @@ L'EVM non consente la concorrenza, il che significa che due contratti coinvolti 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: +Considera un semplice contratto intelligente ("Victim") che consenta a chiunque di depositare e prelevare ether: ```solidity -// Questo contratto è vulnerabile. Non utilizzarlo in produzione +// Questo contratto è vulnerabile. Non usarlo in produzione contract Victim { mapping (address => uint256) public balances; @@ -262,9 +262,9 @@ Questo contratto espone una funzione `withdraw()` per consentire agli utenti di 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). +La funzione `withdraw()` nel contratto `Victim` segue un pattern “checks-interactions-effects” (controlli-interazioni-effetti). Esso _controlla_ 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. +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()`, l'invio di fondi utilizzando `msg.sender.call.value()` attiverà anche l'esecuzione del codice archiviato a quell'indirizzo. Immagina che questo sia il codice distribuito all'indirizzo del contratto: @@ -289,7 +289,7 @@ Questo contratto è progettato per fare tre cose: 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: +Non c'è nulla di sbagliato qui, tranne il fatto che `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 dà ad `Attacker` la possibilità di rientrare in `Victim` e prelevare altri fondi _prima_ che la prima invocazione di `withdraw` sia completata. Il ciclo somiglia al seguente: ```solidity - L'EOA dell'Attacker chiama `Attacker.beginAttack()` con 1 ETH @@ -304,13 +304,13 @@ Non c'è nulla di sbagliato qui, tranne il fatto che l'`Attacker` ha un'altra fu - `Victim` infine applica i risultati della prima transazione (e delle successive) al proprio stato, così che il saldo di `Attacker` è impostato su 0 ``` -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/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). +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 può essere utilizzato per sottrarre a un contratto intelligente i suoi fondi, come è avvenuto nell'[hack della DAO del 2016](https://www.coindesk.com/learn/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 -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. +Un approccio per affrontare la rientranza è seguire il [pattern checks-effects-interactions](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. -Lo schema di controlli-effetti-interazioni è utilizzato in una versione rivista del contratto `Victim`, mostrato di seguito: +Il pattern checks-effect-interaction è utilizzato in una versione rivista del contratto `Victim` mostrato di seguito: ```solidity contract NoLongerAVictim { @@ -325,7 +325,7 @@ contract NoLongerAVictim { 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. +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 su `true` prima dell'esecuzione della funzione e ripristinata su `false` dopo che l'invocazione è stata completata. 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; @@ -335,18 +335,18 @@ contract MutexPattern { mapping(address => uint256) public balances; modifier noReentrancy() { - require(!locked, "Blocked from reentrancy."); + require(!locked, "Rientranza bloccata."); 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 + // Questa funzione è protetta da un mutex, quindi le chiamate rientranti da `msg.sender.call` non possono chiamare `withdraw` di nuovo. + // L'istruzione `return` restituisce `true` ma valuta comunque 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}(""); + (bool success, ) = msg.sender.call{value: _amount}(""); require(success); return true; @@ -356,29 +356,29 @@ contract MutexPattern { Puoi anche utilizzare un sistema di [pagamenti pull](https://docs.openzeppelin.com/contracts/5.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). -#### Sottoeccedenze e sovraflussi di interi {#integer-underflows-and-overflows} +#### Underflow e sovraflusso di interi {#integer-underflows-and-overflows} -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). +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 valori fino a 2^8-1=255. Le operazioni aritmetiche che risultano in valori superiori a `255` andranno in sovraflusso e ripristineranno `uint` a `0`, in modo simile a come il contachilometri di un'auto si azzera una volta raggiunto il chilometraggio massimo (999999). -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`). +Gli underflow di interi si verificano per motivi simili: i risultati di un'operazione aritmetica scendono al di sotto dell'intervallo accettabile. Supponiamo di provare a decrementare `0` in un `uint8`, il risultato passerebbe semplicemente al valore massimo rappresentabile (`255`). 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: ``` pragma solidity ^0.7.6; -// 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. +// Questo contratto è progettato per fungere da deposito a tempo. +// L'utente può depositare in questo contratto ma non può prelevare per almeno una settimana. +// L'utente può anche estendere il tempo di attesa oltre il periodo di attesa di 1 settimana. /* 1. Distribuisci TimeLock 2. Distribuisci Attack con l'indirizzo di TimeLock -3. Chiama Attack.attack inviando 1 ether. Potrai immediatamente - prelevare i tuoi ether. +3. Chiama Attack.attack inviando 1 ether. Sarai in grado di + prelevare immediatamente il tuo ether. -Cos'è successo? -L'attacco ha causato il sovraflusso di TimeLock.lockTime ed è riuscito a prelevare +Cosa è successo? +L'attacco ha causato il sovraflusso di TimeLock.lockTime ed è stato in grado di prelevare prima del periodo di attesa di 1 settimana. */ @@ -397,13 +397,13 @@ contract TimeLock { function withdraw() public { require(balances[msg.sender] > 0, "Fondi insufficienti"); - require(block.timestamp > lockTime[msg.sender], "Tempo di blocco non scaduto"); + require(block.timestamp > lockTime[msg.sender], "Periodo di blocco non scaduto"); uint amount = balances[msg.sender]; balances[msg.sender] = 0; (bool sent, ) = msg.sender.call{value: amount}(""); - require(sent, "Impossibile inviare Ether"); + require(sent, "Invio di Ether non riuscito"); } } @@ -419,11 +419,11 @@ contract Attack { function attack() public payable { timeLock.deposit{value: msg.value}(); /* - if t = tempo di blocco corrente, allora dobbiamo trovare x tale che + se t = tempo di blocco corrente, allora dobbiamo trovare x tale che x + t = 2**256 = 0 - so x = -t + quindi x = -t 2**256 = type(uint).max + 1 - so x = type(uint).max + 1 - t + quindi x = type(uint).max + 1 - t */ timeLock.increaseLockTime( type(uint).max + 1 - timeLock.lockTime(address(this)) @@ -435,131 +435,131 @@ contract Attack { ##### Come prevenire sottoeccedenze e sovraflussi di interi -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. +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 coinvolgono operazioni aritmetiche o utilizzare una libreria (ad esempio, [SafeMath](https://docs.openzeppelin.com/contracts/2.x/api/math)) che controlli l'underflow/sovraflusso. #### Manipolazione degli oracoli {#oracle-manipulation} -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. +Gli [oracoli](/developers/docs/oracles/) acquisiscono informazioni fuori dalla catena e le inviano sulla catena perché possano essere usate dai contratti intelligenti. Con gli oracoli, puoi progettare contratti intelligenti che interagiscono con sistemi fuori dalla catena, come i mercati dei capitali, espandendo notevolmente la loro applicazione. 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. -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. +Un problema di sicurezza correlato è l'utilizzo di un oracolo sulla catena, come un exchange decentralizzato, per ottenere il prezzo a pronti per un asset. Le piattaforme di prestito nel settore della [finanza decentralizzata (DeFi)](/defi/) spesso lo fanno per determinare il valore della garanzia di un utente e stabilire quanto può prendere in prestito. -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). +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 degli asset sulla base degli schemi di negoziazione storici (come di solito accade). 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. ##### Come prevenire la manipolazione degli oracoli -Il requisito minimo per [evitare la manipolazione dell'oracolo](https://www.cyfrin.io/blog/price-oracle-manipultion-attacks-with-examples) è utilizzare una rete di oracoli decentralizzati per richiedere informazioni da più fonti per evitare punti di errore unici. 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. +Il requisito minimo per [evitare la manipolazione degli oracoli](https://www.cyfrin.io/blog/price-oracle-manipultion-attacks-with-examples) è utilizzare una rete di oracoli decentralizzata che richieda informazioni da più fonti 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. -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/contracts/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. +Se prevedi di interrogare un oracolo sulla catena per conoscere i prezzi degli asset, valuta di utilizzarne uno che implementi un meccanismo di prezzo medio ponderato per il tempo (TWAP). Un [oracolo TWAP](https://docs.uniswap.org/contracts/v2/concepts/core-concepts/oracles) interroga il prezzo di un asset in due momenti diversi (che puoi modificare) e calcola il prezzo a pronti in base alla 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. -## Risorse di sicurezza dei contratti intelligenti per sviluppatori {#smart-contract-security-resources-for-developers} +## Risorse sulla sicurezza dei contratti intelligenti per sviluppatori {#smart-contract-security-resources-for-developers} -### Strumenti per analizzare i contratti intelligenti e verificare la correttezza del codice {#code-analysis-tools} +### Strumenti per l'analisi dei contratti intelligenti e la verifica della correttezza del codice {#code-analysis-tools} -- **[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 e librerie di testing](/developers/docs/smart-contracts/testing/#testing-tools-and-libraries)** - _Raccolta di strumenti e librerie standard del settore per eseguire unit test, analisi statica e analisi dinamica 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._ +- **[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._ +- **[Servizi di audit dei contratti intelligenti](/developers/docs/smart-contracts/testing/#smart-contract-auditing-services)** - _Elenco di organizzazioni che forniscono servizi di audit dei contratti intelligenti per progetti di sviluppo di Ethereum._ -- **[Piattaforme di bug bounty](/developers/docs/smart-contracts/testing/#bug-bounty-platforms)**: _piattaforme per coordinare le ricompense per la segnalazione di bug e ricompensare la divulgazione responsabile delle vulnerabilità critiche nei contratti intelligenti._ +- **[Piattaforme di bug bounty](/developers/docs/smart-contracts/testing/#bug-bounty-platforms)** - _Piattaforme per coordinare le ricompense per i bug e remunerare la divulgazione responsabile delle vulnerabilità critiche nei contratti intelligenti._ -- **[Fork Checker](https://forkchecker.hashex.org/)**: _uno strumento online gratuito per verificare tutte le informazioni disponibili riguardanti un contratto diramato._ +- **[Fork Checker](https://forkchecker.hashex.org/)** - _Uno strumento online gratuito per verificare tutte le informazioni disponibili riguardanti un contratto oggetto di biforcazione._ -- **[ABI Encoder](https://abi.hashex.org/)**: _un servizio online gratuito per la codifica delle funzioni e degli argomenti del costruttore del tuo contratto in Solidity._ +- **[ABI Encoder](https://abi.hashex.org/)** - _Un servizio online gratuito per codificare le funzioni e gli argomenti del costruttore del tuo contratto Solidity._ -- **[Aderyn](https://github.com/Cyfrin/aderyn)**: _analizzatore statico di Solidity che attraversa gli alberi di sintassi astratta (AST) per individuare le vulnerabilità sospette e restituire i problemi in un formato Markdown facilmente fruibile._ +- **[Aderyn](https://github.com/Cyfrin/aderyn)** - _Analizzatore statico di Solidity, che attraversa gli alberi di sintassi astratta (AST) per individuare le vulnerabilità sospette e stampare i problemi in un formato markdown di facile fruizione._ -### Strumenti per monitorare i contratti intelligenti {#smart-contract-monitoring-tools} +### Strumenti per il monitoraggio dei contratti intelligenti {#smart-contract-monitoring-tools} -- **[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._ +- **[Tenderly Real-Time Alerting](https://tenderly.co/monitoring)** - _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} -- **[Safe](https://safe.global/)**: _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)._ +- **[Safe](https://safe.global/)** - _Portafoglio di contratti intelligenti in esecuzione 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/5.x/)**: _librerie dei contratti per implementare funzionalità amministrative, inclusa la proprietà del contratto, aggiornamenti, controlli di accesso, governance, interruzioni e altro._ +- **[OpenZeppelin Contracts](https://docs.openzeppelin.com/contracts/5.x/)** - _Librerie di contratti per implementare funzionalità amministrative, tra cui proprietà del contratto, aggiornamenti, controlli degli accessi, governance, possibilità di messa in pausa e altro._ -### Servizi di controllo dei contratti intelligenti {#smart-contract-auditing-services} +### Servizi di audit dei contratti intelligenti {#smart-contract-auditing-services} -- **[ConsenSys Diligence](https://consensys.net/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._ +- **[ConsenSys Diligence](https://diligence.consensys.io/)** - _Servizio di audit di contratti intelligenti che aiuta i progetti dell'ecosistema blockchain a garantire che i loro protocolli siano pronti per il lancio e costruiti per proteggere gli utenti._ -- **[CertiK](https://www.certik.com/)**: _società di sicurezza Blockchain pionieristica nell'uso della tecnologia di verifica formale all'avanguardia sui contratti intelligenti e sulle reti blockchain._ +- **[CertiK](https://www.certik.com/)** - _Azienda di sicurezza blockchain pioniera nell'uso della tecnologia di verifica formale all'avanguardia su contratti intelligenti e reti blockchain._ -- **[Trail of Bits](https://www.trailofbits.com/)**: _società di cybersicurezza che combina la ricerca sulla sicurezza con una mentalità da utente malevolo per ridurre i rischi e fortificare il codice._ +- **[Trail of Bits](https://www.trailofbits.com/)** - _Azienda di cybersecurity che combina la ricerca sulla sicurezza con una mentalità da aggressore per ridurre i rischi e fortificare il codice._ -- **[PeckShield](https://peckshield.com/)**: _società di sicurezza della blockchain che offre prodotti e servizi per la sicurezza, la privacy e l'usabilità dell'intero ecosistema blockchain._ +- **[PeckShield](https://peckshield.com/)** - _Azienda di sicurezza blockchain che offre prodotti e servizi per la sicurezza, la privacy e l'usabilità dell'intero ecosistema blockchain._ -- **[QuantStamp](https://quantstamp.com/)**: _servizio di controllo che facilita l'adozione mainstream della tecnologia della blockchain attraverso servizi di sicurezza e valutazione dei rischi._ +- **[QuantStamp](https://quantstamp.com/)** - _Servizio di audit che facilita l'adozione mainstream della tecnologia blockchain attraverso servizi di sicurezza e valutazione dei rischi._ -- **[OpenZeppelin](https://www.openzeppelin.com/security-audits)**: _società di sicurezza dei contratti intelligenti che fornisce controlli di sicurezza per i sistemi distribuiti_ +- **[OpenZeppelin](https://www.openzeppelin.com/security-audits)** - _Azienda di sicurezza dei contratti intelligenti che fornisce audit di sicurezza per sistemi distribuiti._ -- **[Runtime Verification](https://runtimeverification.com/)**: _società di sicurezza specializzata nella modellazione formale e nella verifica dei contratti intelligenti._ +- **[Runtime Verification](https://runtimeverification.com/)** - _Azienda di sicurezza specializzata nella modellazione formale e nella verifica dei contratti intelligenti._ -- **[Hacken](https://hacken.io)**: _Controllore della cybersicurezza in Web3 che porta un approccio a 360 gradi alla sicurezza della blockchain._ +- **[Hacken](https://hacken.io)** - _Auditor di cybersecurity per Web3 che adotta un approccio a 360 gradi alla sicurezza della blockchain._ -- **[](https://www.nethermind.io/smart-contract-audits)**: _servizi di controllo in Solidity e Carico che garantiscono l'integrità dei contratti intelligenti e la sicurezza degli utenti nell'ecosistema Ethereum e Starknet._ +- **[Nethermind](https://www.nethermind.io/smart-contract-audits)** - _Servizi di audit di Solidity e Cairo, che garantiscono l'integrità dei contratti intelligenti e la sicurezza degli utenti su Ethereum e Starknet._ -- **[HashEx](https://hashex.org/)**: _HashEx è incentrata sul controllo della blockchain e dei controlli intelligenti allo scopo di garantire la sicurezza delle criptovalute, fornendo servizi come lo sviluppo di contratti intelligenti, test di penetrazione o consulenza sulla blockchain._ +- **[HashEx](https://hashex.org/)** - _HashEx si concentra sull'audit di blockchain e contratti intelligenti per garantire la sicurezza delle criptovalute, fornendo servizi come lo sviluppo di contratti intelligenti, test di penetrazione e consulenza blockchain._ -- **[Code4rena](https://code4rena.com/)**: _piattaforma di controllo competitiva che incentiva gli esperti di sicurezza dei contratti intelligenti a trovare le vulnerabilità e ad aiutare a rendere il Web3 più sicuro._ +- **[Code4rena](https://code4rena.com/)** - _Piattaforma di audit competitiva che incentiva gli esperti di sicurezza dei contratti intelligenti a trovare vulnerabilità e a contribuire a rendere il web3 più sicuro._ -- **[CodeHawks](https://codehawks.com/)**: _piattaforma di controllo competitiva che ospita competizioni di controllo dei contratti intelligenti per ricercatori della sicurezza._ +- **[CodeHawks](https://codehawks.com/)** - _Piattaforma di audit competitiva che ospita competizioni di audit di contratti intelligenti per ricercatori di sicurezza._ -- **[Cyfrin](https://cyfrin.io)**: _motore di sicurezza per Web3, che incuba la criptosicurezza tramite prodotti e servizi di controllo dei contratti intelligenti._ +- **[Cyfrin](https://cyfrin.io)** - _Potenza della sicurezza Web3, che incuba la criptosicurezza attraverso prodotti e servizi di audit dei contratti intelligenti._ -- **[ImmuneBytes](https://immunebytes.com/smart-contract-audit/)**: _studio di sicurezza del Web3 che offre controlli di sicurezza per i sistemi della blockchain tramite un team di revisori esperti e strumenti di prim'ordine._ +- **[ImmuneBytes](https://immunebytes.com/smart-contract-audit/)** - _Azienda di sicurezza Web3 che offre audit di sicurezza per sistemi blockchain attraverso un team di auditor esperti e i migliori strumenti della categoria._ -- **[Oxorio](https://oxor.io/)**: _servizi di controllo dei contratti intelligenti e sicurezza della blockchain con esperienza nell'EVM, in Solidity, tecnologie tra catene per cripto-aziende e progetti di DeFi._ +- **[Oxorio](https://oxor.io/)** - _Audit di contratti intelligenti e servizi di sicurezza blockchain con esperienza in EVM, Solidity, ZK, tecnologia cross-chain per aziende di criptovalute e progetti DeFi._ -- **[Inference](https://inference.ag/)**: _azienda di controllo della sicurezza, specializzata nel controllo dei contratti intelligenti per le blockchain basate sull'EVM. Grazie ai suoi esperti revisori, identifica le potenziali problematiche e suggerisce le soluzioni attuabili per risoverle prima della distribuzione._ +- **[Inference](https://inference.ag/)** - _Società di audit di sicurezza, specializzata nell'audit di contratti intelligenti per blockchain basate su EVM. Grazie ai suoi esperti revisori, identifica le potenziali problematiche e suggerisce le soluzioni attuabili per risolverle prima della distribuzione._ ### Piattaforme di bug bounty {#bug-bounty-platforms} -- **[Immunefi](https://immunefi.com/)**: _piattaforma di bug bounty per contratti intelligenti e progetti di DeFi, in cui i ricercatori revisionano il codice, divulgano le vulnerabilità, vengono pagati e rendono le criptovalute più sicure._ +- **[Immunefi](https://immunefi.com/)** - _Piattaforma di bug bounty per contratti intelligenti e progetti DeFi, in cui i ricercatori di sicurezza esaminano il codice, divulgano le vulnerabilità, vengono pagati e rendono le criptovalute più sicure._ -- **[HackerOne](https://www.hackerone.com/)**: _piattaforma di coordinamento delle vulnerabilità e di bug bounty che connette le aziende ai tester di penetrazione e ai ricercatori sulla cybersicurezza._ +- **[HackerOne](https://www.hackerone.com/)** - _Piattaforma di coordinamento delle vulnerabilità e di bug bounty che mette in contatto le aziende con penetration tester e ricercatori di cybersecurity._ -- **[HackenProof](https://hackenproof.com/)**: _piattaforma esperta di bug bounty per progetti di criptovalute (DeFi, contratti intelligenti, portafogli, CEX e altro), in cui dei professionisti della sicurezza forniscono servizi di triage e i ricercatori sono pagati per segnalazioni di bug rilevanti e verificate._ +- **[HackenProof](https://hackenproof.com/)** - _Piattaforma esperta di bug bounty per progetti di criptovalute (DeFi, Contratti Intelligenti, Portafogli, CEX e altro), in cui i professionisti della sicurezza forniscono servizi di triage e i ricercatori vengono pagati per segnalazioni di bug pertinenti e verificate._ -- **[Sherlock](https://www.sherlock.xyz/)**: _sottoscrittore in Web3 per la sicurezza dei contratti intelligenti, con pagamenti per i revisori gestiti tramite contratti intelligenti per assicurarsi che i bug rilevanti siano pagati equamente._ +- **[Sherlock](https://www.sherlock.xyz/)** - _Sottoscrittore in Web3 per la sicurezza dei contratti intelligenti, con pagamenti per gli auditor gestiti tramite contratti intelligenti per garantire che i bug rilevanti siano pagati equamente._ -- **[CodeHawks](https://www.codehawks.com/)**: _piattaforma competitiva di caccia ai bug in cui i revisori prendono parte a gare e sfide di sicurezza e (presto) ai propri controlli privati._ +- **[CodeHawks](https://www.codehawks.com/)** - _Piattaforma competitiva di caccia ai bug in cui i revisori prendono parte a gare e sfide di sicurezza e (presto) ai propri audit privati._ -### Pubblicazioni di vulnerabilità e sfruttamenti noti dei contratti intelligenti {#common-smart-contract-vulnerabilities-and-exploits} +### Pubblicazioni di vulnerabilità ed exploit noti dei contratti intelligenti {#common-smart-contract-vulnerabilities-and-exploits} -- **[ConsenSys: attacchi noti ai contratti intelligenti](https://consensysdiligence.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._ +- **[ConsenSys: Attacchi noti ai contratti intelligenti](https://consensysdiligence.github.io/smart-contract-best-practices/attacks/)** - _Spiegazione per principianti delle vulnerabilità più significative dei contratti, con esempi di codice per la maggior 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._ +- **[Registro SWC](https://swcregistry.io/)** - _Elenco curato di elementi della Common Weakness Enumeration (CWE) che si applicano ai contratti intelligenti di Ethereum._ -- **[Rekt](https://rekt.news/)**: _pubblicazione aggiornata regolarmente di violazioni e sfruttamenti di alto profilo delle criptovalute, con report postumi dettagliati._ +- **[Rekt](https://rekt.news/)** - _Pubblicazione regolarmente aggiornata di hack ed exploit di criptovalute di alto profilo, insieme a rapporti post-mortem dettagliati._ -### Sfide per imparare sulla sicurezza dei contratti intelligenti {#challenges-for-learning-smart-contract-security} +### Sfide per l'apprendimento della 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._ +- **[Awesome BlockSec CTF](https://github.com/blockthreat/blocksec-ctfs)** - _Elenco curato di wargame di sicurezza blockchain, sfide, competizioni [Capture The Flag](https://www.webopedia.com/definitions/ctf-event/amp/) e soluzioni scritte._ -- **[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._ +- **[Damn Vulnerable DeFi](https://www.damnvulnerabledefi.xyz/)** - _Wargame per imparare la sicurezza offensiva dei contratti intelligenti DeFi e sviluppare competenze nella caccia ai bug e nell'audit di sicurezza._ -- **[Ethernaut](https://ethernaut.openzeppelin.com/)**: _wargame basato su Web3/Solidity in cui ogni livello è un contratto intelligente da 'violare'._ +- **[Ethernaut](https://ethernaut.openzeppelin.com/)** - _Wargame basato su Web3/Solidity in cui ogni livello è un contratto intelligente che deve essere 'hackerato'._ -- **[HackenProof x HackTheBox](https://app.hackthebox.com/tracks/HackenProof-Track)**: _sfida di violazione dei contratti intelligenti, ambientata in un'avventura fantasy. Inoltre, il completamento della sfida fornisce l'accesso a un programma privato di caccia ai bug._ +- **[HackenProof x HackTheBox](https://app.hackthebox.com/tracks/HackenProof-Track)** - _Sfida di hacking di contratti intelligenti, ambientata in un'avventura fantasy. Inoltre, il completamento della sfida fornisce l'accesso a un programma privato di caccia ai bug._ -### Migliori pratiche per proteggere i contratti intelligenti {#smart-contract-security-best-practices} +### Migliori pratiche per la messa in sicurezza dei contratti intelligenti {#smart-contract-security-best-practices} -- **[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._ +- **[ConsenSys: Migliori pratiche per la sicurezza dei contratti intelligenti di Ethereum](https://consensys.github.io/smart-contract-best-practices/)** - _Elenco completo di linee guida per la messa in sicurezza dei contratti intelligenti di Ethereum._ -- **[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._ +- **[Nascent: Semplice toolkit di sicurezza](https://github.com/nascentxyz/simple-security-toolkit)** - _Raccolta di guide pratiche incentrate sulla sicurezza e di liste di controllo per lo sviluppo di contratti intelligenti._ -- **[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._ +- **[Solidity Patterns](https://fravoll.github.io/solidity-patterns/)** - _Utile raccolta di pattern sicuri e migliori pratiche per il linguaggio di programmazione di contratti intelligenti Solidity._ -- **[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._ +- **[Documentazione di Solidity: Considerazioni sulla sicurezza](https://docs.soliditylang.org/en/v0.8.16/security-considerations.html)** - _Linee guida per scrivere contratti intelligenti sicuri con Solidity._ -- **[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._ +- **[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._ -- **[Impara sulla sicurezza e il controllo dei contratti intelligenti](https://updraft.cyfrin.io/courses/security): _corso definitivo sulla sicurezza e il controllo dei contratti intelligenti, creato per gli sviluppatori di contratti intelligenti che desiderano migliorare le proprie migliori pratiche di sicurezza e diventare ricercatori della sicurezza._ +- **[Impara la sicurezza e l'audit dei contratti intelligenti](https://updraft.cyfrin.io/courses/security)** - _Il corso definitivo sulla sicurezza e l'audit dei contratti intelligenti, creato per gli sviluppatori di contratti intelligenti che desiderano migliorare le loro migliori pratiche di sicurezza e diventare ricercatori di sicurezza._ ### Tutorial sulla sicurezza dei contratti intelligenti {#tutorials-on-smart-contract-security} @@ -569,8 +569,8 @@ Se prevedi di interrogare un oracolo sulla catena per conoscere i prezzi dei ben - [Come usare Manticore per trovare bug nei contratti intelligenti](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/) -- [Linee guida di sicurezza per i contratti intelligenti](/developers/tutorials/smart-contract-security-guidelines/) +- [Linee guida sulla sicurezza dei contratti intelligenti](/developers/tutorials/smart-contract-security-guidelines/) -- [Come integrare in sicurezza il tuo contratto dei token con token arbitrari](/developers/tutorials/token-integration-checklist/) +- [Come integrare in sicurezza il tuo contratto di token con token arbitrari](/developers/tutorials/token-integration-checklist/) -- [Cyfrin Updraft: corso completo sulla sicurezza e il controllo dei contratti intelligenti](https://updraft.cyfrin.io/courses/security) +- [Cyfrin Updraft - Corso completo sulla sicurezza e l'audit dei contratti intelligenti](https://updraft.cyfrin.io/courses/security) diff --git a/public/content/translations/it/developers/docs/smart-contracts/testing/index.md b/public/content/translations/it/developers/docs/smart-contracts/testing/index.md index c7f08300518..b350c13fc8d 100644 --- a/public/content/translations/it/developers/docs/smart-contracts/testing/index.md +++ b/public/content/translations/it/developers/docs/smart-contracts/testing/index.md @@ -4,29 +4,29 @@ description: Una panoramica delle tecniche e considerazioni per testare i contra lang: it --- -Le blockchain pubbliche come Ethereum sono immutabili, il che rende difficile modificare il codice di un contratto intelligente dopo la sua distribuzione. Esistono dei [modelli di aggiornamento dei contratti](/developers/docs/smart-contracts/upgrading/) per eseguire "aggiornamenti virtuali", ma sono difficili da implementare e richiedono il consenso sociale. Inoltre, un aggiornamento può risolvere un errore solo _dopo_ che è stato scoperto; se un utente malevolo scopre per primo la vulnerabilità, il tuo contratto intelligente rischierà di essere sfruttato. +Le blockchain pubbliche come Ethereum sono immutabili, il che rende difficile modificare il codice di un contratto intelligente dopo la sua distribuzione. Esistono [modelli di aggiornamento dei contratti](/developers/docs/smart-contracts/upgrading/) per eseguire "aggiornamenti virtuali", ma sono difficili da implementare e richiedono il consenso sociale. Inoltre, un aggiornamento può risolvere un errore solo _dopo_ che è stato scoperto; se un utente malintenzionato scopre per primo la vulnerabilità, il tuo contratto intelligente rischia di essere sfruttato. -Per questi motivi, testare i contratti intelligenti prima della [distribuzione](/developers/docs/smart-contracts/deploying/) alla Rete Principale è un requisito minimo per la [sicurezza](/developers/docs/smart-contracts/security/). Esistono molte tecniche per testare i contratti e valutare la correttezza del codice; ciò che scegli dipende dalle tue esigenze. Tuttavia, una suite di test composta da strumenti e approcci differenti è ideale per individuare le falle di sicurezza sia minori che maggiori nel codice dei contratti. +Per questi motivi, testare i contratti intelligenti prima di [distribuirli](/developers/docs/smart-contracts/deploying/) sulla Rete Principale è un requisito minimo per la [sicurezza](/developers/docs/smart-contracts/security/). Esistono molte tecniche per testare i contratti e valutare la correttezza del codice; ciò che scegli dipende dalle tue esigenze. Tuttavia, una suite di test composta da strumenti e approcci differenti è ideale per individuare le falle di sicurezza sia minori che maggiori nel codice dei contratti. ## Prerequisiti {#prerequisites} -Questa pagina spiega come testare i contratti intelligenti prima della distribuzione sulla rete di Ethereum. Parte dal presupposto che tu abbia familiarità con i [contratti intelligenti](/developers/docs/smart-contracts/). +Questa pagina spiega come testare i contratti intelligenti prima della distribuzione sulla rete di Ethereum. Si presuppone che tu abbia familiarità con i [contratti intelligenti](/developers/docs/smart-contracts/). ## In cosa consistono i test dei contratti intelligenti? {#what-is-smart-contract-testing} I test dei contratti intelligenti sono il procedimento per verificare che il codice di un contratto intelligente funzioni come previsto. I test sono utili per verificare se uno specifico contratto intelligente soddisfa i requisiti di affidabilità, utilizzabilità e sicurezza. -Sebbene gli approcci possano variare, gran parte dei metodi di test richiedono l'esecuzione di un contratto intelligente con un piccolo campione dei dati che si prevede dovrà gestire. Se il contratto produce risultati corretti per i dati del campione, si presume che funzioni correttamente. Gran parte degli strumenti di test fornisce risorse per scrivere ed eseguire i [casi d'uso](https://en.m.wikipedia.org/wiki/Test_case) per verificare se l'esecuzione dei contratti corrisponde ai risultati previsti. +Sebbene gli approcci possano variare, gran parte dei metodi di test richiedono l'esecuzione di un contratto intelligente con un piccolo campione dei dati che si prevede dovrà gestire. Se il contratto produce risultati corretti per i dati del campione, si presume che funzioni correttamente. La maggior parte degli strumenti di test fornisce risorse per scrivere ed eseguire [casi di test](https://en.m.wikipedia.org/wiki/Test_case) per verificare se l'esecuzione di un contratto corrisponde ai risultati attesi. -### Perché è importante testare i contratti intelligenti? {#importance-of-testing-smart-contracts} +### Perché è importante testare i contratti intelligenti? Importanza di testare i contratti intelligenti {#importance-of-testing-smart-contracts} -Poiché i contratti intelligenti gestiscono spesso risorse finanziarie dal valore elevato, gli errori minori di programmazione possono causare, e spesso causano, [enormi perdite per gli utenti](https://rekt.news/leaderboard/). Test rigorosi possono, tuttavia, aiutarti a scoprire i difetti e i problemi nel codice di un contratto intelligente in anticipo, e correggerli prima del lancio sulla Rete Principale. +Poiché i contratti intelligenti gestiscono spesso risorse finanziarie di alto valore, errori di programmazione minori possono causare, e spesso lo fanno, [enormi perdite per gli utenti](https://rekt.news/leaderboard/). Test rigorosi possono, tuttavia, aiutarti a scoprire i difetti e i problemi nel codice di un contratto intelligente in anticipo, e correggerli prima del lancio sulla Rete Principale. -Sebbene sia possibile aggiornare un contratto se viene scoperto un bug, gli aggiornamenti sono complessi e possono [risultare in errori](https://blog.trailofbits.com/2018/09/05/contract-upgrade-anti-patterns/) se gestiti impropriamente. L'aggiornamento di un contratto nega ulteriormente il principio di immutabilità, gravando sugli utenti con ulteriori ipotesi di fiducia. Viceversa, un piano completo per testare il tuo contratto mitiga i rischi di sicurezza del contratto intelligente, riducendo l'esigenza di eseguire complessi aggiornamenti alla logica dopo la distribuzione. +Sebbene sia possibile aggiornare un contratto se viene scoperto un bug, gli aggiornamenti sono complessi e possono [risultare in errori](https://blog.trailofbits.com/2018/09/05/contract-upgrade-anti-patterns/) se gestiti in modo improprio. L'aggiornamento di un contratto nega ulteriormente il principio di immutabilità, gravando sugli utenti con ulteriori ipotesi di fiducia. Viceversa, un piano completo per testare il tuo contratto mitiga i rischi di sicurezza del contratto intelligente, riducendo l'esigenza di eseguire complessi aggiornamenti alla logica dopo la distribuzione. ## Metodi per testare i contratti intelligenti {#methods-for-testing-smart-contracts} -I metodi per testare i contratti intelligenti di Ethereum ricadono in due ampie categorie: **test automatizzati** e **test manuali**. I test automatizzati e manuali offrono vantaggi e compromessi unici, ma puoi combinarli per creare un piano robusto di analisi dei tuoi contratti. +I metodi per testare i contratti intelligenti di Ethereum rientrano in due ampie categorie: **test automatizzati** e **test manuali**. I test automatizzati e manuali offrono vantaggi e compromessi unici, ma puoi combinarli per creare un piano robusto di analisi dei tuoi contratti. ### Test automatizzati {#automated-testing} @@ -42,9 +42,9 @@ I test manuali sono eseguibili da un singolo individuo che segue un piano testua I test manuali efficaci richiedono considerevoli risorse (abilità, tempo, denaro e sforzo) ed è possibile, a causa di errori umani, non identificare certi errori eseguendo i test. Ma i test manuali possono anche essere vantaggiosi, ad esempio un collaudatore umano (es. un revisore) potrebbe utilizzare l'intuito per rilevare i casi limite che non sarebbero identificati da uno strumento di test automatizzato. -## Test automatizzati per i contratti intelligenti {#automated-testing-for-smart-contracts} +## Test automatizzati per contratti intelligenti {#automated-testing-for-smart-contracts} -### Test unitario {#unit-testing-for-smart-contracts} +### Test unitari {#unit-testing-for-smart-contracts} Il test unitario valuta le funzioni del contratto separatamente, verificando che ogni componente funzioni correttamente. Dei buoni test unitari dovrebbero essere semplici, rapidi da eseguire e fornire un'idea chiara di cosa sia andato storto, qualora dovessero fallire. @@ -54,9 +54,9 @@ I test unitari sono utili per verificare che le funzioni restituiscano i valori ##### 1. Comprendere la logica e il flusso di lavoro dei contratti -Prima di scrivere i test unitari, è utile conoscere quali funzionalità sono offerte da un contratto intelligente, nonché come gli utenti accederanno a tali funzioni e le utilizzeranno. Ciò è particolarmente utile per eseguire i [test del percorso felice](https://en.m.wikipedia.org/wiki/Happy_path) che determinano se le funzioni in un contratto restituiscono il risultato corretto per gli input validi dell'utente. Spiegheremo questo concetto utilizzando questo esempio (accorciato) di [un contratto d'asta](https://docs.soliditylang.org/en/v0.8.17/solidity-by-example.html?highlight=Auction%20contract#simple-open-auction) +Prima di scrivere i test unitari, è utile conoscere quali funzionalità sono offerte da un contratto intelligente, nonché come gli utenti accederanno a tali funzioni e le utilizzeranno. Ciò è particolarmente utile per eseguire [test del percorso felice](https://en.m.wikipedia.org/wiki/Happy_path) che determinano se le funzioni di un contratto restituiscono l'output corretto per input utente validi. Spiegheremo questo concetto usando questo esempio (abbreviato) di [un contratto d'asta](https://docs.soliditylang.org/en/v0.8.17/solidity-by-example.html?highlight=Auction%20contract#simple-open-auction) -``` +```solidity constructor( uint biddingTime, address payable beneficiaryAddress @@ -108,11 +108,11 @@ function auctionEnd() external { } ``` -Questo è un semplice contratto d'asta, progettato per ricevere offerte durante il periodo d'offerta. Se `highestBid` aumenta, l'offerente maggiore precedente riceve il denaro; una volta terminato il periodo di offerta, il `beneficiary` chiama il contratto per ricevere il denaro. +Questo è un semplice contratto d'asta, progettato per ricevere offerte durante il periodo d'offerta. Se `highestBid` aumenta, il precedente offerente più alto riceve il suo denaro; una volta terminato il periodo di offerta, il `beneficiary` chiama il contratto per ottenere il suo denaro. -I test unitari per un contratto simile coprirebbero diverse funzioni che un utente potrebbe chiamare quando interagisce con esso. Un esempio sarebbe un test unitario che controlli se un utente può presentare un'offerta durante l'asta (cioè, le chiamate a `bid()` hanno esito positivo) o uno che controlli se un utente può presentare un'offerta maggiore dell'attuale `highestBid`. +I test unitari per un contratto simile coprirebbero diverse funzioni che un utente potrebbe chiamare quando interagisce con esso. Un esempio sarebbe un test unitario che controlli se un utente può presentare un'offerta mentre l'asta è in corso (cioè, le chiamate a `bid()` hanno esito positivo) o uno che controlli se un utente può presentare un'offerta maggiore dell'attuale `highestBid`. -Comprendere il flusso di lavoro operativo di un contratto aiuta anche a scrivere test unitari che verificano se l'esecuzione soddisfa i requisiti. Ad esempio, il contratto d'asta specifica che gli utenti non possono presentare offerte al termine dell'asta (cioè, quando `auctionEndTime` è inferiore a `block.timestamp`). Dunque, uno sviluppatore potrebbe eseguire un test unitario che verifichi se le chiamate alla funzione `bid()` hanno esito positivo o negativo al termine dell'asta (cioè, quando `auctionEndTime` > `block.timestamp`). +Comprendere il flusso di lavoro operativo di un contratto aiuta anche a scrivere test unitari che verificano se l'esecuzione soddisfa i requisiti. Ad esempio, il contratto d'asta specifica che gli utenti non possono presentare offerte al termine dell'asta (cioè quando `auctionEndTime` è inferiore a `block.timestamp`). Pertanto, uno sviluppatore potrebbe eseguire un test unitario che verifichi se le chiamate alla funzione `bid()` abbiano esito positivo o negativo quando l'asta è terminata (cioè, quando `auctionEndTime` > `block.timestamp`). ##### 2. Valutare tutte le ipotesi legate all'esecuzione del contratto @@ -126,11 +126,11 @@ Molti quadri di test unitari ti consentono di creare asserzioni – semplici dic - Agli utenti che non vincono l'asta vengono accreditati i propri fondi -**Nota**: un altro modo di testare le ipotesi è scrivere test che inneschino i [modificatori della funzione](https://docs.soliditylang.org/en/v0.8.16/contracts.html#function-modifiers) in un contratto, specialmente, le dichiarazioni `require`, `assert` e `if…else`. +**Nota**: un altro modo per testare le ipotesi è scrivere test che attivino i [modificatori di funzione](https://docs.soliditylang.org/en/v0.8.16/contracts.html#function-modifiers) in un contratto, in particolare le istruzioni `require`, `assert` e `if…else`. ##### 3. Misurare la copertura del codice -La [copertura del codice](https://en.m.wikipedia.org/wiki/Code_coverage) è un parametro di prova che traccia il numero di rami, righe e dichiarazioni nel tuo codice eseguiti durante i test. I test dovrebbero avere una buona code coverage per ridurre al minimo il rischio di vulnerabilità non testate. Senza una code coverage sufficiente potresti dare erroneamente per scontato che il tuo contratto sia sicuro; pur superando tutti i test, infatti, potrebbero comunque esistere vulnerabilità in percorsi di codice non testati. Registrare un'elevata copertura del codice, tuttavia, garantisce che tutte le dichiarazioni/funzioni di un contratto intelligente siano state testate sufficientemente per verificarne la correttezza. +[La copertura del codice](https://en.m.wikipedia.org/wiki/Code_coverage) è una metrica di test che tiene traccia del numero di rami, righe e istruzioni nel codice eseguiti durante i test. I test dovrebbero avere una buona code coverage per ridurre al minimo il rischio di vulnerabilità non testate. Senza una code coverage sufficiente potresti dare erroneamente per scontato che il tuo contratto sia sicuro; pur superando tutti i test, infatti, potrebbero comunque esistere vulnerabilità in percorsi di codice non testati. Registrare un'elevata copertura del codice, tuttavia, garantisce che tutte le dichiarazioni/funzioni di un contratto intelligente siano state testate sufficientemente per verificarne la correttezza. ##### 4. Utilizzare quadri di test ben sviluppati @@ -138,19 +138,19 @@ La qualità degli strumenti utilizzati nell'esecuzione dei test unitari per i tu I quadri di test unitari per i contratti intelligenti in Solidity esistono in diversi linguaggi (principalmente JavaScript, Python e Rust). Vedi alcune delle guide seguenti per informazioni su come iniziare a eseguire test unitari con diversi quadri di test: -- **[Eseguire test unitari con Brownie](https://eth-brownie.readthedocs.io/en/v1.0.0_a/tests.html)** -- **[Eseguire test unitari con Foundry](https://book.getfoundry.sh/forge/writing-tests)** -- **[Eseguire test unitari con Waffle](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests)** -- **[Eseguire test unitari con Remix](https://remix-ide.readthedocs.io/en/latest/unittesting.html#write-tests)** -- **[Eseguire test unitari con Ape](https://docs.apeworx.io/ape/stable/userguides/testing.html)** -- **[Eseguire test unitari con Hardhat](https://hardhat.org/hardhat-runner/docs/guides/test-contracts)** -- **[Eseguire test unitari con Wake](https://ackeeblockchain.com/wake/docs/latest/testing-framework/overview/)** +- **[Esecuzione di test unitari con Brownie](https://eth-brownie.readthedocs.io/en/v1.0.0_a/tests.html)** +- **[Esecuzione di test unitari con Foundry](https://book.getfoundry.sh/forge/writing-tests)** +- **[Esecuzione di test unitari con Waffle](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests)** +- **[Esecuzione di test unitari con Remix](https://remix-ide.readthedocs.io/en/latest/unittesting.html#write-tests)** +- **[Esecuzione di test unitari con Ape](https://docs.apeworx.io/ape/stable/userguides/testing.html)** +- **[Esecuzione di test unitari con Hardhat](https://hardhat.org/hardhat-runner/docs/guides/test-contracts)** +- **[Esecuzione di test unitari con Wake](https://ackeeblockchain.com/wake/docs/latest/testing-framework/overview/)** -### Test d'integrazione {#integration-testing-for-smart-contracts} +### Test di integrazione {#integration-testing-for-smart-contracts} -Mentre i test unitari eseguono il debug delle funzioni del contratto in isolamento, i test d'integrazione valutano i componenti di un contratto intelligente nella sua interezza. I test d'integrazione possono rilevare i problemi che sorgono da chiamate tra contratti o da interazioni tra funzioni differenti nello stesso contratto intelligente. Ad esempio, i test d'integrazione possono aiutare a verificare se aspetti come l'[eredità](https://docs.soliditylang.org/en/v0.8.12/contracts.html#inheritance) e l'iniezione di dipendenza funzionano correttamente. +Mentre i test unitari eseguono il debug delle funzioni del contratto in isolamento, i test d'integrazione valutano i componenti di un contratto intelligente nella sua interezza. I test d'integrazione possono rilevare i problemi che sorgono da chiamate tra contratti o da interazioni tra funzioni differenti nello stesso contratto intelligente. Ad esempio, i test di integrazione possono aiutare a verificare se elementi come l'[ereditarietà](https://docs.soliditylang.org/en/v0.8.12/contracts.html#inheritance) e l'iniezione di dipendenza funzionano correttamente. -I test d'integrazione sono utili se il tuo contratto adotta un'architettura modulare o si interfaccia con altri contratti su catena durante l'esecuzione. Un modo di eseguire i test d'integrazone è [biforcare la blockchain](/glossary/#fork) a un'altezza specifica (utilizzando uno strumento come [Forge](https://book.getfoundry.sh/forge/fork-testing) o [Hardhat](https://hardhat.org/hardhat-network/docs/guides/forking-other-networks) e simulare le interazioni tra il tuo contratto e i contratti distribuiti. +Il test di integrazione è utile se il contratto adotta un'architettura modulare o interagisce con altri contratti on-chain durante l'esecuzione. Un modo per eseguire i test di integrazione è [eseguire una biforcazione della blockchain](/glossary/#fork) a un'altezza specifica (usando uno strumento come [Forge](https://book.getfoundry.sh/forge/fork-testing) o [Hardhat](https://hardhat.org/hardhat-network/docs/guides/forking-other-networks)) e simulare le interazioni tra il tuo contratto e i contratti già distribuiti. La blockchain diramata si comporterà in modo simile alla Rete Principale e avrà conti con stati e saldi associati. Ma agisce soltanto come un ambiente di sviluppo locale in modalità sandbox, a significare che non avrai bisogno di ETH reali per le transazioni, ad esempio, né le tue modifiche influenzeranno il protocollo reale di Ethereum. @@ -158,44 +158,44 @@ La blockchain diramata si comporterà in modo simile alla Rete Principale e avr I test basati sulle proprietà sono il procedimento di verifica che un contratto intelligente soddisfi una data proprietà definita. Le proprietà asseriscono fatti sul comportamento di un contratto che si prevede restino veri in diversi scenari: un esempio di proprietà di un contratto intelligente potrebbe essere che "Le operazioni aritmetiche nel contratto non hanno mai sovrafflussi o sottoeccedenze." -L'**analisi statica** e l'**analisi dinamica** sono due tecniche comuni per eseguire i test basati sulle proprietà ed entrambe posso verificare che il codice di un programma (in questo caso, un contratto intelligente) soddisfi una data proprietà predefinita. Alcuni strumenti di test basati sulle proprietà comprendono delle regole predefinite sulle proprietà previste del contratto e verificano il codice rispetto a tali regole; altri ti consentono di creare proprietà personalizzate per un contratto intelligente. +**L'analisi statica** e l'**analisi dinamica** sono due tecniche comuni per l'esecuzione di test basati sulle proprietà, ed entrambe possono verificare che il codice di un programma (un contratto intelligente in questo caso) soddisfi alcune proprietà predefinite. Alcuni strumenti di test basati sulle proprietà comprendono delle regole predefinite sulle proprietà previste del contratto e verificano il codice rispetto a tali regole; altri ti consentono di creare proprietà personalizzate per un contratto intelligente. #### Analisi statica {#static-analysis} Un analizzatore statico prende come input il codice sorgente di un contratto intelligente e produce dei risultati che dichiarano se un contratto soddisfa o meno una proprietà. A differenza dell'analisi dinamica, l'analisi statica non coinvolge l'esecuzione di un contratto per analizzarne la correttezza. L'analisi statica, invece, ragiona su tutti i possibili percorsi che un contratto intelligente potrebbe intraprendere durante l'esecuzione (esaminando la struttura del codice sorgente per determinare cosa significherebbe per il funzionamento dei contratti all'esecuzione). -Il [linting](https://www.perforce.com/blog/qac/what-lint-code-and-why-linting-important) e i [test statici](https://www.techtarget.com/whatis/definition/static-analysis-static-code-analysis) sono metodi comuni per eseguire analisi statiche sui contratti. Entrambi richiedono rappresentazioni di basso livello dell'esecuzione di un contratto, come [alberi di sintassi astratta](https://en.m.wikipedia.org/wiki/Abstract_syntax_tree) e [grafici del flusso di controllo](https://www.geeksforgeeks.org/software-engineering-control-flow-graph-cfg/amp/) prodotti dal compilatore. +[Il linting](https://www.perforce.com/blog/qac/what-is-linting) e il [test statico](https://www.techtarget.com/whatis/definition/static-analysis-static-code-analysis) sono metodi comuni per eseguire l'analisi statica sui contratti. Entrambi richiedono l'analisi di rappresentazioni a basso livello dell'esecuzione di un contratto, come gli [alberi di sintassi astratta](https://en.m.wikipedia.org/wiki/Abstract_syntax_tree) e i [grafi del flusso di controllo](https://www.geeksforgeeks.org/software-engineering-control-flow-graph-cfg/amp/) generati dal compilatore. In gran parte dei casi, l'analisi statica è utile per rilevare problemi di sicurezza come l'uso di costrutti non sicuri, errori di sintassi o violazioni degli standard di scrittura nel codice di un contratto. Tuttavia, gli analizzatori statici sono noti come generalmente instabili nel rilevare le vulnerabilità più profonde e potrebbero produrre un eccesso di falsi positivi. #### Analisi dinamica {#dynamic-analysis} -L'analisi dinamica genera input simbolici (es. nell'[esecuzione simbolica](https://en.m.wikipedia.org/wiki/Symbolic_execution)) o input concreti (es. nel [fuzzing](https://owasp.org/www-community/Fuzzing)) alle funzioni di un contratto intelligente, per scoprire se qualche traccia d'esecuzione viola delle proprietà specifiche. Questa forma di test basato sulle proprietà differisce dai test unitari nel fatto che i casi di prova coprono diversi scenari e che un programma gestisce la generazione dei casi di prova. +L'analisi dinamica genera input simbolici (ad es. nell'[esecuzione simbolica](https://en.m.wikipedia.org/wiki/Symbolic_execution)) o input concreti (ad es. nel [fuzzing](https://owasp.org/www-community/Fuzzing)) per le funzioni di un contratto intelligente per vedere se qualche traccia di esecuzione viola proprietà specifiche. Questa forma di test basato sulle proprietà differisce dai test unitari nel fatto che i casi di prova coprono diversi scenari e che un programma gestisce la generazione dei casi di prova. -Il [fuzzing](https://halborn.com/what-is-fuzz-testing-fuzzing/) è un esempio di tecnica di analisi dinamica per verificare le proprietà arbitrarie nei contratti intelligenti. Un fuzzer invoca le funzioni in un contratto in questione con varianti casuali o malformate di un valore di input definito. Se il contratto intelligente entra in uno stato di errore (es., uno in cui un'asserzione fallisce), il problema è segnalato e gli input che guidano l'esecuzione verso il percorso vulnerabile sono prodotti in un report. +[Il fuzzing](https://www.halborn.com/blog/post/what-is-fuzz-testing-fuzzing) è un esempio di tecnica di analisi dinamica per la verifica di proprietà arbitrarie nei contratti intelligenti. Un fuzzer invoca le funzioni in un contratto in questione con varianti casuali o malformate di un valore di input definito. Se il contratto intelligente entra in uno stato di errore (es., uno in cui un'asserzione fallisce), il problema è segnalato e gli input che guidano l'esecuzione verso il percorso vulnerabile sono prodotti in un report. Il fuzzing è utile per valutare il meccanismo di validazione dell'input di un contratto intelligente, poiché la gestione inappropriata degli input imprevisti potrebbe risultare in un'esecuzione indesiderata, producendo effetti pericolosi. Questa forma di test basati sulle proprietà può essere ideale per molti motivi: 1. **Scrivere i casi di prova per coprire molti scenari è difficile.** Un test delle proprietà ti richiede soltanto di definire un comportamento e un intervallo di dati con cui testare il comportamento; sarà il programma a generare automaticamente i casi di prova secondo la proprietà definita. -2. **La tua suite di test potrebbe non coprire a sufficienza tutti i percorsi possibili nel programma.** Anche con una copertura del 100%, è possibile perdere alcuni casi limite. +2. \*\*La tua suite di test potrebbe non coprire a sufficienza tutti i percorsi possibili nel programma. Anche con una copertura del 100%, è possibile perdere alcuni casi limite. -3. **I test unitari provano che un contratto si esegue correttamente per i dati campione, ma se il contratto si esegua correttamente per gli input esterni al campione resta ignoto.** I test delle proprietà eseguono il contratto in questione con molte varianti di un dato valore di input per trovare le tracce d'esecuzione che causano gli errori dell'asserzione. Dunque, un test delle proprietà fornisce maggiori garanzie che un contratto sia eseguito correttamente per un'ampia classe di dati di input. +3. \*\*I test unitari provano che un contratto si esegue correttamente per i dati campione, ma se il contratto si esegua correttamente per gli input esterni al campione resta ignoto. I test delle proprietà eseguono il contratto in questione con molte varianti di un dato valore di input per trovare le tracce d'esecuzione che causano gli errori dell'asserzione. Dunque, un test delle proprietà fornisce maggiori garanzie che un contratto sia eseguito correttamente per un'ampia classe di dati di input. ### Linee guida per l'esecuzione di test basati sulle proprietà per i contratti intelligenti {#running-property-based-tests} -L'esecuzione di test basati sulle proprietà inizia solitamente con la definizione di una proprietà (es. l'assenza di [sovrafflussi di interi](https://github.com/ConsenSys/mythril/wiki/Integer-Overflow)) o la raccolta di proprietà che desideri verificare in un contratto intelligente. Inoltre, durante la scrittura dei test delle proprietà potresti dover definire un intervallo di valori entro cui il programma possa generare i dati per gli input della transazione. +L'esecuzione di test basati sulle proprietà inizia tipicamente con la definizione di una proprietà (ad esempio, l'assenza di [overflow di interi](https://github.com/ConsenSys/mythril/wiki/Integer-Overflow)) o di una raccolta di proprietà che si desidera verificare in un contratto intelligente. Inoltre, durante la scrittura dei test delle proprietà potresti dover definire un intervallo di valori entro cui il programma possa generare i dati per gli input della transazione. Una volta configurato adeguatamente, lo strumento di test delle proprietà eseguirà le funzioni dei tuoi contratti intelligenti con input generati casualmente. Se si verifica una violazione delle asserzioni, dovresti ottenere un report con i dati di input concreti che violano la proprietà valutata. Vedi alcune delle seguenti linee guida per iniziare a eseguire test basati sulle proprietà con diversi strumenti: -- **[Analisi statica dei contratti intelligenti con Slither](https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/slither#slither)** -- **[Analisi statica dei contratti intelligenti con Wake](https://ackeeblockchain.com/wake/docs/latest/static-analysis/using-detectors/)** +- **[Analisi statica di contratti intelligenti con Slither](https://github.com/crytic/slither)** +- **[Analisi statica di contratti intelligenti con Wake](https://ackeeblockchain.com/wake/docs/latest/static-analysis/using-detectors/)** - **[Test basati sulle proprietà con Brownie](https://eth-brownie.readthedocs.io/en/stable/tests-hypothesis-property.html)** -- **[Fuzzing dei contratti con Foundry](https://book.getfoundry.sh/forge/fuzz-testing)** -- **[Fuzzing dei contratti con Echidna](https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/echidna#echidna-tutorial)** -- **[Fuzzing dei contratti con Wake](https://ackeeblockchain.com/wake/docs/latest/testing-framework/fuzzing/)** -- **[Esecuzione simbolica dei contratti intelligenti con Manticore](https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/manticore#manticore-tutorial)** -- **[Esecuzione simbolica dei contratti intelligenti con Mythril](https://mythril-classic.readthedocs.io/en/master/tutorial.html)** +- **[Fuzzing di contratti con Foundry](https://book.getfoundry.sh/forge/fuzz-testing)** +- **[Fuzzing di contratti con Echidna](https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/echidna#echidna-tutorial)** +- **[Fuzzing di contratti con Wake](https://ackeeblockchain.com/wake/docs/latest/testing-framework/fuzzing/)** +- **[Esecuzione simbolica di contratti intelligenti con Manticore](https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/manticore#manticore-tutorial)** +- **[Esecuzione simbolica di contratti intelligenti con Mythril](https://mythril-classic.readthedocs.io/en/master/tutorial.html)** ## Test manuali per i contratti intelligenti {#manual-testing-for-smart-contracts} @@ -205,104 +205,106 @@ I test manuali dei contratti intelligenti sono spesso effettuati più avanti nel Mentre i test automatizzati eseguiti in un ambiente di sviluppo locale possono fornire utili informazioni di debug, vorrai sapere come il tuo contratto intelligente si comporta in un ambiente di produzione. Tuttavia, distribuire alla catena principale di Ethereum comporta delle commissioni sul carburante, per non menzionare che tu o i tuoi utenti potreste perdere denaro reale se il contratto intelligente dovesse ancora contenere dei bug. -Testare il contratto su una blockchain locale (anche nota come una [rete di sviluppo](/developers/docs/development-networks/)) è un'alternativa consigliata ai test sulla Rete principale. Una blockchain locale è una copia della blockchain di Ethereum eseguita localmente sul tuo computer che simula il comportamento del livello di esecuzione di Ethereum. Come tale, puoi programmare le transazioni affinché interagiscano con un contratto senza incorrere in significativi costi di gestione. +Testare il tuo contratto su una blockchain locale (nota anche come [rete di sviluppo](/developers/docs/development-networks/)) è un'alternativa consigliata al test sulla Rete Principale. Una blockchain locale è una copia della blockchain di Ethereum eseguita localmente sul tuo computer che simula il comportamento del livello di esecuzione di Ethereum. Come tale, puoi programmare le transazioni affinché interagiscano con un contratto senza incorrere in significativi costi di gestione. -Eseguire i contratti su una blockchain locale potrebbe essere utile come forma di test d'integrazione manuale. [I contratti intelligenti sono altamente componibili](/developers/docs/smart-contracts/composability/), il che ti consente di integrarli con i protocolli esistenti – ma dovrai assicurarti che tali interazioni complesse su catena producano i risultati corretti. +Eseguire i contratti su una blockchain locale potrebbe essere utile come forma di test d'integrazione manuale. [I contratti intelligenti sono altamente componibili](/developers/docs/smart-contracts/composability/), e consentono di integrarsi con i protocolli esistenti, ma sarà comunque necessario assicurarsi che tali complesse interazioni on-chain producano i risultati corretti. -[Maggiori informazioni sulle reti di sviluppo.](/developers/docs/development-networks/) +[Altre informazioni sulle reti di sviluppo.](/developers/docs/development-networks/) -### Testare i contratti sulle reti di prova {#testing-contracts-on-testnets} +### Testare i contratti sulle reti di test {#testing-contracts-on-testnets} -Una rete di prova funziona esattamente come la Rete Principale di Ethereum, tranne per il fatto che utilizza degli ether (ETH) privi di valore reale. Distribuire il proprio contratto su una [rete di prova](/developers/docs/networks/#ethereum-testnets) significa che chiunque può interagirvi (es. tramite il frontend della dapp) senza mettere a rischio dei fondi. +Una rete di prova funziona esattamente come la Rete Principale di Ethereum, tranne per il fatto che utilizza degli ether (ETH) privi di valore reale. La distribuzione del tuo contratto su una [rete di test](/developers/docs/networks/#ethereum-testnets) significa che chiunque può interagire con esso (ad esempio, tramite il frontend della dApp) senza mettere a rischio i fondi. Questa forma di test manuale è utile per valutare il flusso end-to-end della tua applicazione dal punto di vista di un utente. Inoltre, qui i beta tester possono eseguire prove e segnalare qualsiasi problema con la logica aziendale del contratto e le sue funzionalità complessive. Distribuire su una rete di prova dopo il test su una blockchain locale è ideale, poiché la prima è più simile al comportamento della Macchina Virtuale di Ethereum. Pertanto, è comune per molti progetti nativi di Ethereum distribuire le dapp sulle reti di prova per valutare il funzionamento dei contratti intelligenti in condizioni reali. -[Maggiori informazioni sulle reti di prova di Ethereum.](/developers/docs/development-networks/#public-beacon-testchains) +[Altre informazioni sulle reti di test di Ethereum.](/developers/docs/development-networks/#public-beacon-testchains) -## Test vs. verifica formale {#testing-vs-formal-verification} +## Test e verifica formale a confronto {#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 un contratto intelligente, dunque, non può garantire la "correttezza funzionale" (cioè, non può dimostrare che un programma si comporti come richiesto per _tutte_ le serie di valori 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, pertanto, non può garantire la "correttezza funzionale" (cioè, non può dimostrare che un programma si comporti come richiesto per _tutti_ i set di valori di input). La verifica formale è un approccio di valutazione della correttezza del software tramite la verifica del fatto che un modello formale del programma corrisponda alla specifica formale. Un modello formale è una rappresentazione matematica astratta di un programma, mentre una specifica formale definisce le proprietà di un programma (ossia le asserzioni logiche sull'esecuzione del programma). Poiché le proprietà sono scritte in termini matematici, diventa possibile verificare che un modello (matematico) formale del sistema soddisfi una specifica utilizzando le regole logiche di inferenza. Dunque, si dice che gli strumenti di verifica formale producano una 'prova matematica' della correttezza di un sistema. -A differenza dei test, la verifica formale è utilizzabile per verificare che l'esecuzione dei contratti intelligenti soddisfi una specifica formale per _tutte_ le esecuzioni (cioè che sia privo di bug) senza doverlo eseguire con dei campioni di dati. Questo non solo riduce il tempo trascorso a eseguire decine di test unitari, ma è anche più efficiente nel trovare le vulnerabilità nascoste. Detto ciò, le tecniche di verifica formale si trovano su uno spettro che dipende dalla loro difficoltà di implementazione e utilità. +A differenza dei test, la verifica formale può essere utilizzata per verificare che l'esecuzione di un contratto intelligente soddisfi una specifica formale per _tutte_ le esecuzioni (cioè che non abbia bug) senza la necessità di eseguirlo con dati di esempio. Questo non solo riduce il tempo trascorso a eseguire decine di test unitari, ma è anche più efficiente nel trovare le vulnerabilità nascoste. Detto ciò, le tecniche di verifica formale si trovano su uno spettro che dipende dalla loro difficoltà di implementazione e utilità. -[Maggiori informazioni sulla verifica formale per i contratti intelligenti.](/developers/docs/smart-contracts/formal-verification) +[Altre informazioni sulla verifica formale per i contratti intelligenti.](/developers/docs/smart-contracts/formal-verification) -## Test vs. controlli e bug bounty {#testing-vs-audits-bug-bounties} +## Test, audit e bug bounty a confronto {#testing-vs-audits-bug-bounties} Come accennato, raramente i test rigorosi possono garantire l'assenza di bug in un contratto; gli approcci di verifica formale possono fornire maggiori garanzie di correttezza ma al momento sono difficili da utilizzare e incorrono in considerevoli costi. -Tuttavia, puoi aumentare maggiormente la possibilità di identificare le vulnerabilità del contratto aggiungendo una revisione indipendente del codice. I [controlli dei contratti intelligenti](https://www.immunebytes.com/blog/what-is-a-smart-contract-audit/) e le [bug bounty](https://medium.com/immunefi/a-defi-security-standard-the-scaling-bug-bounty-9b83dfdc1ba7) sono due metodi per far analizzare ad altri i tuoi contratti. +Tuttavia, puoi aumentare maggiormente la possibilità di identificare le vulnerabilità del contratto aggiungendo una revisione indipendente del codice. [Gli audit di contratti intelligenti](https://www.immunebytes.com/blog/what-is-a-smart-contract-audit/) e i [bug bounty](https://medium.com/immunefi/a-defi-security-standard-the-scaling-bug-bounty-9b83dfdc1ba7) sono due modi per far analizzare i tuoi contratti da altri. I controlli sono eseguiti da revisori esperti nel trovare i casi di falle di sicurezza e pratiche di sviluppo inadeguate nei contratti intelligenti. Un controllo, solitamente, includerà test (e verosimilmente una verifica formale), nonché una revisione manuale dell'intera base di codice. -Viceversa, un programma di bug bounty comporta solitamente l'offerta di una ricompensa economica a una persona (comunemente descritto come [hacker whitehat](https://en.wikipedia.org/wiki/White_hat_(computer_security))) che scopre una vulnerabilità in un contratto intelligente e la comunica agli sviluppatori. Le bug bounty sono simili ai controlli poiché comportano di chiedere ad altri di aiutare a trovare difetti nei contratti intelligenti. +Viceversa, un programma di bug bounty di solito prevede l'offerta di una ricompensa finanziaria a un individuo (comunemente descritto come [hacker white-hat](https://en.wikipedia.org/wiki/White_hat_\(computer_security\))) che scopre una vulnerabilità in un contratto intelligente e la rivela agli sviluppatori. Le bug bounty sono simili ai controlli poiché comportano di chiedere ad altri di aiutare a trovare difetti nei contratti intelligenti. La differenza principale è che i programmi di bug bounty sono aperti alla più ampia community di sviluppatori/hacker e attrae un'ampia classe di hacker etici e professionisti della sicurezza indipendenti dotati di competenze uniche ed esperienza. Questo potrebbe essere un vantaggio rispetto ai controlli del contratto intelligente che si affidano principalmente ai team che potrebbero possedere esperienza limitata o minima. -## Strumenti di test e librerie {#testing-tools-and-libraries} +## Strumenti e librerie di test {#testing-tools-and-libraries} -### Strumenti per i test unitari {#unit-testing-tools} +### Strumenti di test unitario {#unit-testing-tools} - **[solidity-coverage](https://github.com/sc-forks/solidity-coverage)** - _Strumento di copertura del codice per contratti intelligenti scritti in Solidity._ -- **[Waffle](https://ethereum-waffle.readthedocs.io/en/latest/)** - _Quadro per lo sviluppo e test avanzati dei contratti intelligenti (basato su ethers.js)_. +- **[Waffle](https://ethereum-waffle.readthedocs.io/en/latest/)** - _Framework per lo sviluppo e il test avanzato di contratti intelligenti (basato su ethers.js)_. -- **[Remix Tests](https://github.com/ethereum/remix-project/tree/master/libs/remix-tests)** - _Strumento per testare contratti intelligenti in Solidity. Opera sotto il plugin "Solidity Unit Testing" di Remix IDE, usato per scrivere ed eseguire casi di prova per un contratto._ +- **[Remix Tests](https://github.com/ethereum/remix-project/tree/master/libs/remix-tests)** - _Strumento per il test di contratti intelligenti in Solidity._ Opera sotto il plugin "Solidity Unit Testing" di Remix IDE, usato per scrivere ed eseguire casi di prova per un contratto._ -- **[OpenZeppelin Test Helpers](https://github.com/OpenZeppelin/openzeppelin-test-helpers)** - _Libreria di asserzioni per i test di contratti intelligenti di Ethereum. Assicurati che i tuoi contratti si comportino come previsto!_ +- **[OpenZeppelin Test Helpers](https://github.com/OpenZeppelin/openzeppelin-test-helpers)** - _Libreria di asserzioni per il test di contratti intelligenti Ethereum._ Assicurati che i tuoi contratti si comportino come previsto!_ -- **[Quadro di test unitari di Brownie](https://eth-brownie.readthedocs.io/en/v1.0.0_a/tests.html)** - _Brownie utilizza Pytest, un quadro di test ricco di funzionalità che ti consente di scrivere piccoli test con codice minimale, si ridimensiona bene per i grandi progetti ed è altamente estendibile._ +- **[Framework di test unitari di Brownie](https://eth-brownie.readthedocs.io/en/v1.0.0_a/tests.html)** - _Brownie utilizza Pytest, un framework di test ricco di funzionalità che consente di scrivere piccoli test con codice minimo, si adatta bene a progetti di grandi dimensioni ed è altamente estensibile._ -- **[Test di Foundry](https://github.com/foundry-rs/foundry/tree/master/crates/forge)** - _Foundry offre Forge, un quadro di test di Ethereum veloci e flessibili, in grado di eseguire semplici test unitari, controlli d'ottimizzazione del carburante e fuzzing del contratto._ +- **[Test di Foundry](https://github.com/foundry-rs/foundry/tree/master/crates/forge)** - _Foundry offre Forge, un framework di test per Ethereum veloce e flessibile in grado di eseguire semplici test unitari, controlli di ottimizzazione del gas e fuzzing dei contratti._ -- **[Test di Hardhat](https://hardhat.org/hardhat-runner/docs/guides/test-contracts)** - _Quadro per testare i contratti intelligenti basato su ethers.js, Mocha e Chai._ +- **[Test di Hardhat](https://hardhat.org/hardhat-runner/docs/guides/test-contracts)** - _Framework per il test di contratti intelligenti basato su ethers.js, Mocha e Chai._ -- **[ApeWorx](https://docs.apeworx.io/ape/stable/userguides/testing.html)** - _Quadro di sviluppo e test basato su Python per i contratti intelligenti, rivolto alla Macchina Virtuale Intelligente._ +- **[ApeWorx](https://docs.apeworx.io/ape/stable/userguides/testing.html)** - _Framework di sviluppo e test basato su Python per contratti intelligenti destinati alla Macchina Virtuale di Ethereum._ -- **[Wake](https://ackeeblockchain.com/wake/docs/latest/testing-framework/overview/)** - _Assetto basato su Python per i test unitari e il fuzzing, con forti capacità di debug e supporto ai test tra catene, che utilizza pytest e Anvil per un'esperienza dell'utente e prestazioni migliori._ +- **[Wake](https://ackeeblockchain.com/wake/docs/latest/testing-framework/overview/)** - _Framework basato su Python per test unitari e fuzzing con potenti funzionalità di debug e supporto per test cross-chain, che utilizza pytest e Anvil per la migliore esperienza utente e le migliori prestazioni._ ### Strumenti di test basati sulle proprietà {#property-based-testing-tools} #### Strumenti di analisi statica {#static-analysis-tools} -- **[Slither](https://github.com/crytic/slither)** - _Quadro di analisi statica in Solidity basato su Python per trovare vulnerabilità, migliorare la comprensione del codice e scrivere analisi personalizzate per i contratti intelligenti._ +- **[Slither](https://github.com/crytic/slither)** - _Framework di analisi statica di Solidity basato su Python per trovare vulnerabilità, migliorare la comprensione del codice e scrivere analisi personalizzate per i contratti intelligenti._ + +- **[Ethlint](https://ethlint.readthedocs.io/en/latest/)** - _Linter per l'applicazione delle migliori pratiche di stile e sicurezza per il linguaggio di programmazione di contratti intelligenti Solidity._ -- **[Ethlint](https://ethlint.readthedocs.io/en/latest/)** - _Linter per l'applicazione delle migliori pratiche di stile e sicurezza per il linguaggio di programmazione dei contratti intelligenti Solidity_ +- **[Cyfrin Aderyn](https://cyfrin.io/tools/aderyn)** - _Analizzatore statico basato su Rust progettato specificamente per la sicurezza e lo sviluppo di contratti intelligenti Web3._ -- **[Cyfrin Aderyn](https://cyfrin.io/tools/aderyn)**: _Analizzatore statico basato su Rust, progettato specificamente per la sicurezza e lo sviluppo di contratti intelligenti in Web3._ +- **[Wake](https://ackeeblockchain.com/wake/docs/latest/static-analysis/using-detectors/)** - _Framework di analisi statica basato su Python con rilevatori di vulnerabilità e di qualità del codice, printer per estrarre informazioni utili dal codice e supporto per la scrittura di sottomoduli personalizzati._ -- **[Wake](https://ackeeblockchain.com/wake/docs/latest/static-analysis/using-detectors/)** - _Assetto di analisi statica basato su Python con rilevatori delle vulnerabilità e della qualità del codice, stampanti per estrarre informazioni utili dal codice e supporto alla scrittura di moduli secondari personalizzati._ +- **[Slippy](https://github.com/fvictorio/slippy)** - _Un linter semplice e potente per Solidity._ #### Strumenti di analisi dinamica {#dynamic-analysis-tools} -- **[Echidna](https://github.com/crytic/echidna/)** - _Veloce fuzzer di contratti per rilevare le vulnerabilità nei contratti intelligenti tramite i test basati sulle proprietà._ +- **[Echidna](https://github.com/crytic/echidna/)** - _Fuzzer di contratti veloce per rilevare vulnerabilità nei contratti intelligenti attraverso test basati sulle proprietà._ -- **[Diligence Fuzzing](https://consensys.net/diligence/fuzzing/)** - _Strumento automatizzato di fuzzing utile per rilevare le violazioni delle proprietà nel codice dei contratti intelligenti._ +- **[Diligence Fuzzing](https://consensys.net/diligence/fuzzing/)** - _Strumento di fuzzing automatizzato utile per rilevare violazioni di proprietà nel codice dei contratti intelligenti._ -- **[Manticore](https://manticore.readthedocs.io/en/latest/index.html)** - _Quadro di esecuzione simbolica e dinamica per analizzare il bytecode dell'EVM._ +- **[Manticore](https://manticore.readthedocs.io/en/latest/index.html)** - _Framework di esecuzione simbolica dinamica per l'analisi del bytecode EVM._ -- **[Mythril](https://github.com/ConsenSys/mythril-classic)** - _Strumento di valutazione del bytecode dell'EVM per rilevare le vulnerabilità del contratto utilizzando l'analisi a macchia, l'analisi concolica e la verifica del flusso di controllo._ +- **[Mythril](https://github.com/ConsenSys/mythril-classic)** - _Strumento di valutazione del bytecode EVM per rilevare le vulnerabilità dei contratti utilizzando l'analisi taint, l'analisi concolica e il controllo del flusso di controllo._ -- **[Diligence Scribble](https://consensys.net/diligence/scribble/)** - _Scribble è uno strumento di verifica del linguaggio della specifica e dell'esecuzione che consente di annotare i contratti intelligenti con proprietà che consentono di testare automaticamente i contratti con strumenti come Diligence Fuzzing o MythX._ +- **[Diligence Scribble](https://consensys.net/diligence/scribble/)** - _Scribble è un linguaggio di specifica e uno strumento di verifica a runtime che consente di annotare i contratti intelligenti con proprietà che permettono di testare automaticamente i contratti con strumenti come Diligence Fuzzing o MythX._ -## Tutorial correlati {#related-tutorials} +## Guide correlate {#related-tutorials} -- [Panoramica e confronto dei diversi prodotti di test](/developers/tutorials/guide-to-smart-contract-security-tools/) \_ -- [Come usare Echidna per testare gli smart contract](/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/) -- [Come utilizzare Manticore per trovare bug nei contratti intelligenti](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/) +- [Una panoramica e un confronto di diversi prodotti di test](/developers/tutorials/guide-to-smart-contract-security-tools/) \_ +- [Come usare Echidna per testare i contratti intelligenti](/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/) +- [Come usare Manticore per trovare bug nei contratti intelligenti](/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/) - [Come usare Slither per trovare bug nei contratti intelligenti](/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/) -- [Come simulare contratti in Solidity per i test](/developers/tutorials/how-to-mock-solidity-contracts-for-testing/) -- [Come eseguire i test unitari in Solidity, utilizzando Foundry](https://www.rareskills.io/post/foundry-testing-solidity) +- [Come simulare (mock) i contratti Solidity per i test](/developers/tutorials/how-to-mock-solidity-contracts-for-testing/) +- [Come eseguire test unitari in Solidity usando Foundry](https://www.rareskills.io/post/foundry-testing-solidity) ## Letture consigliate {#further-reading} -- [Una guida approfondita ai test dei contratti intelligenti di Ethereum](https://iamdefinitelyahuman.medium.com/an-in-depth-guide-to-testing-ethereum-smart-contracts-2e41b2770297) +- [Una guida approfondita al test dei contratti intelligenti di Ethereum](https://iamdefinitelyahuman.medium.com/an-in-depth-guide-to-testing-ethereum-smart-contracts-2e41b2770297) - [Come testare i contratti intelligenti di Ethereum](https://betterprogramming.pub/how-to-test-ethereum-smart-contracts-35abc8fa199d) -- [Guida ai test unitari di MolochDAO per sviluppatori](https://github.com/MolochVentures/moloch/tree/4e786db8a4aa3158287e0935dcbc7b1e43416e38/test#moloch-testing-guide) +- [La guida ai test unitari di MolochDAO per sviluppatori](https://github.com/MolochVentures/moloch/tree/4e786db8a4aa3158287e0935dcbc7b1e43416e38/test#moloch-testing-guide) - [Come testare i contratti intelligenti come una rockstar](https://forum.openzeppelin.com/t/test-smart-contracts-like-a-rockstar/1001) diff --git a/public/content/translations/it/developers/docs/smart-contracts/upgrading/index.md b/public/content/translations/it/developers/docs/smart-contracts/upgrading/index.md index 1d0658cdd34..281e894f6ed 100644 --- a/public/content/translations/it/developers/docs/smart-contracts/upgrading/index.md +++ b/public/content/translations/it/developers/docs/smart-contracts/upgrading/index.md @@ -12,7 +12,7 @@ Tuttavia, maggiori ricerche volte a migliorare i contratti intelligenti hanno po ## Prerequisiti {#prerequisites} -Dovresti avere una buona comprensione dei [contratti intelligenti](/developers/docs/smart-contracts/), dell'[anatomia dei contratti intelligenti](/developers/docs/smart-contracts/anatomy/) e della [Macchina Virtuale di Ethereum (EVM)](/developers/docs/evm/). Questa guida, inoltre, presume che i lettori comprendano la programmazione dei contratti intelligenti. +Dovresti avere una buona comprensione dei [contratti intelligenti](/developers/docs/smart-contracts/), dell'[anatomia dei contratti intelligenti](/developers/docs/smart-contracts/anatomy/) e della [macchina virtuale di Ethereum (EVM)](/developers/docs/evm/). Questa guida, inoltre, presume che i lettori comprendano la programmazione dei contratti intelligenti. ## Cos'è l'aggiornamento di un contratto intelligente? {#what-is-a-smart-contract-upgrade} @@ -42,7 +42,7 @@ L'ultimo passaggio nella migrazione del contratto è convincere gli utenti a pas La migrazione del contratto è una misura relativamente semplice e sicura per aggiornare i contratti intelligenti senza spezzare le interazioni degli utenti. Tuttavia, la migrazione manuale dell'archiviazione e dei saldi degli utenti al nuovo contratto richiede tempo e può comportare costi elevati in termini di carburante. -[Maggiori informazioni sulla migrazione del contratto.](https://blog.trailofbits.com/2018/10/29/how-contract-migration-works/) +[Maggiori informazioni sulla migrazione dei contratti.](https://blog.trailofbits.com/2018/10/29/how-contract-migration-works/) ### Meccanismo di aggiornamento n. 2: separazione dei dati {#data-separation} @@ -66,17 +66,17 @@ Questo è quanto si verifica in un modello del proxy: 1. Gli utenti interagiscono con il contratto proxy, che memorizza i dati ma non detiene la logica aziendale. -2. Il contratto proxy memorizza gli indirizzi del contratto logico e delega tutte le chiamate alle funzioni al contratto logico (che detiene la logica aziendale) utilizzando la funzione `delegatecall`. +2. Il contratto proxy memorizza l'indirizzo del contratto di logica e delega tutte le chiamate di funzione al contratto di logica (che contiene la logica di business) usando la funzione `delegatecall`. 3. Dopo l'inoltro della chiamata al contratto logico, i dati restituiti dal contratto logico sono recuperati e restituiti all'utente. -Utilizzare i modelli del proxy richiede una comprensione della funzione **delegatecall**. Fondamentalmente, `delegatecall` è un opcode che permette a un contratto di chiamarne un altro, mentre l'esecuzione effettiva del codice si verifica nel contesto del contratto chiamante. Un'implicazione dell'utilizzo di `delegatecall` nei modelli del proxy è che il contratto proxy legge e scrive alla propria archiviazione, eseguendo la logica archiviata al contratto logico come se stesse chiamando una funzione interna. +L'utilizzo dei modelli proxy richiede una comprensione della funzione **delegatecall**. Fondamentalmente, `delegatecall` è un opcode che permette a un contratto di chiamarne un altro, mentre l'esecuzione effettiva del codice si verifica nel contesto del contratto chiamante. Un'implicazione dell'utilizzo di `delegatecall` nei modelli proxy è che il contratto proxy legge e scrive nella propria memoria ed esegue la logica memorizzata nel contratto logico come se stesse chiamando una funzione interna. Dalla [documentazione di Solidity](https://docs.soliditylang.org/en/latest/introduction-to-smart-contracts.html#delegatecall-callcode-and-libraries): -> _Esiste una variante speciale di una chiamata al messaggio, detta **delegatecall**, identica a una chiamata al messaggio tranne nel fatto che il codice all'indirizzo di destinazione è eseguito nel contesto (cioè, all'indirizzo) del contratto chiamante e `msg.sender` e `msg.value` non modificano i propri valori. _ _Ciò significa che un contratto può caricare dinamicamente il codice da un indirizzo differente all'esecuzione. L'archiviazione, l'indirizzo corrente e il saldo fanno ancora riferimento al contratto chiamante, solo il codice è preso dall'indirizzo chiamato._ +> _Esiste una variante speciale di una chiamata di messaggio, chiamata **delegatecall**, che è identica a una chiamata di messaggio a parte il fatto che il codice all'indirizzo di destinazione viene eseguito nel contesto (cioè, all'indirizzo) del contratto chiamante e `msg.sender` e `msg.value` non cambiano i loro valori._ _Ciò significa che un contratto può caricare dinamicamente codice da un indirizzo diverso al tempo di esecuzione._ L'archiviazione, l'indirizzo corrente e il saldo fanno ancora riferimento al contratto chiamante, solo il codice è preso dall'indirizzo chiamato._ -Il contratto proxy sa di invocare `delegatecall` ogni volta che un utente chiama una funzione, poiché ha una funzione di `fallback` integrata. Nella programmazione in Solidity, la [funzione di fallback](https://docs.soliditylang.org/en/latest/contracts.html#fallback-function) è eseguita quando una chiamata a una funzione non corrisponde alle funzioni specificate in un contratto. +Il contratto proxy sa di invocare `delegatecall` ogni volta che un utente chiama una funzione, poiché ha una funzione `fallback` integrata. Nella programmazione in Solidity, la [funzione di fallback](https://docs.soliditylang.org/en/latest/contracts.html#fallback-function) è eseguita quando una chiamata a una funzione non corrisponde alle funzioni specificate in un contratto. Far funzionare il modello del proxy richiede la scrittura di una funzione di fallback personalizzata che specifichi come il contratto proxy dovrebbe gestire le chiamate alla funzione che non supporta. In questo caso, la funzione di fallback del proxy è programmata per avviare una delegatecall e reindirizzare la richiesta dell'utente all'implementazione del contratto logico corrente. @@ -84,13 +84,13 @@ Il contratto proxy è immutabile di default, ma possono essere creati dei nuovi Indicando il contratto proxy a un nuovo contratto logico, il codice eseguito quando gli utenti chiamano la funzione del contratto proxy cambia. Ciò ci consente di aggiornare la logica di un contratto senza chiedere agli utenti di interagire con un nuovo contratto. -I modelli del proxy sono un metodo popolare per aggiornare i contratti intelligenti poiché eliminano le difficoltà associate alla migrazione del contratto. Tuttavia, i modelli del proxy sono più complicati da utilizzare e possono introdurre falle critiche, come [conflitti del selettore di funzione](https://medium.com/nomic-foundation-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357), se usate impropriamente. +I modelli del proxy sono un metodo popolare per aggiornare i contratti intelligenti poiché eliminano le difficoltà associate alla migrazione del contratto. Tuttavia, i modelli proxy sono più complicati da usare e possono introdurre difetti critici, come i [conflitti tra selettori di funzione](https://medium.com/nomic-foundation-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357), se usati in modo improprio. -[Maggiori informazioni sui modelli del proxy](https://blog.openzeppelin.com/proxy-patterns/). +[Maggiori informazioni sui modelli proxy.](https://blog.openzeppelin.com/proxy-patterns/) ### Meccanismo di aggiornamento n. 4: modello strategico {#strategy-pattern} -Questa tecnica è influenzata dal [modello strategico](https://en.wikipedia.org/wiki/Strategy_pattern), che incoraggia la creazione di programmi software che si interfaccino con altri programmi per implementare specifiche funzionalità. Applicare il modello strategico allo sviluppo di Ethereum significherebbe costruire un contratto intelligente che chiami le funzioni da altri contratti. +Questa tecnica è influenzata dal [modello strategico](https://en.wikipedia.org/wiki/Strategy_pattern), che incoraggia la creazione di programmi software che si interfacciano con altri programmi per implementare funzionalità specifiche. Applicare il modello strategico allo sviluppo di Ethereum significherebbe costruire un contratto intelligente che chiami le funzioni da altri contratti. Il contratto principale in questo caso contiene la logica aziendale principale, ma si interfaccia con altri contratti intelligenti ("contratti satellite") per eseguire certe funzioni. Questo contratto principale, inoltre, memorizza l'indirizzo per ogni contratto satellite e può passare tra diverse implementazioni del contratto satellite. @@ -104,9 +104,9 @@ Lo svantaggio principale è che questo modello è per lo più utile per implemen Il modello a diamante può essere considerato un miglioramento del modello del proxy. I modelli a diamante differiscono dai modelli del proxy perché il contratto proxy a diamante può delegare le chiamate alle funzioni a più di un contratto logico. -I contratti logici nel modello a diamante sono noti come _sfaccettature_. Per far funzionare il modello a diamante, devi creare una mappatura nel contratto proxy che mappi i [selettori della funzione](https://docs.soliditylang.org/en/latest/abi-spec.html#function-selector) a diversi indirizzi di sfaccettatura. +I contratti di logica nel modello a diamante sono noti come _sfaccettature_. Per far funzionare il modello a diamante, devi creare una mappatura nel contratto proxy che mappi i [selettori di funzione](https://docs.soliditylang.org/en/latest/abi-spec.html#function-selector) a diversi indirizzi di sfaccettature. -Quando un utente effettua una chiamata a una funzione, il contratto proxy controlla la mappatura per trovare la sfaccettatura responsabile dell'esecuzione di tale funzione. Quindi invoca `delegatecall` (utilizzando la funzione di fallback) e reindirizza la chiamata al contratto logico appropriato. +Quando un utente effettua una chiamata a una funzione, il contratto proxy controlla la mappatura per trovare la sfaccettatura responsabile dell'esecuzione di tale funzione. Quindi invoca `delegatecall` (utilizzando la funzione di fallback) e reindirizza la chiamata al contratto di logica appropriato. Il modello di aggiornamento a diamante presenta dei vantaggi rispetto ai tradizionali modelli di aggiornamento del proxy: @@ -116,17 +116,17 @@ Il modello di aggiornamento a diamante presenta dei vantaggi rispetto ai tradizi 3. I modelli del proxy adottano un approccio omnicomprensivo per i controlli dell'accesso. Un'entità con accesso alle funzioni di aggiornamento può modificare l'_intero_ contratto. Ma il modello a diamante consente un approccio modulare ai permessi, in cui puoi fare in modo che le entità possano aggiornare solo determinate funzioni in un contratto intelligente. -[Maggiori informazioni sui modelli a diamante](https://eip2535diamonds.substack.com/p/introduction-to-the-diamond-standard?s=w). +[Maggiori informazioni sul modello a diamante](https://eip2535diamonds.substack.com/p/introduction-to-the-diamond-standard?s=w). ## Pro e contro dell'aggiornamento dei contratti intelligenti {#pros-and-cons-of-upgrading-smart-contracts} -| Pro | Contro | -| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Pro | Contro | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | L'aggiornamento di un contratto intelligente può semplificare la correzione delle vulnerabilità scoperte nella fase post-distribuzione. | L'aggiornamento dei contratti intelligenti nega l'idea dell'immutabilità del codice, il che ha implicazioni per la decentralizzazione e la sicurezza. | | Gli sviluppatori possono utilizzare gli aggiornamenti logici per aggiungere nuove funzionalità alle applicazioni decentralizzate. | Gli utenti devono fidarsi del fatto che gli sviluppatori non modifichino arbitrariamente i contratti intelligenti. | | Gli aggiornamenti dei contratti intelligenti possono migliorare la sicurezza per gli utenti finali grazie a una rapida correzione dei bug. | La programmazione di funzionalità di aggiornamento nei contratti intelligenti aggiunge un ulteriore livello di complessità, incrementando la possibilità di falle critiche. | | Gli aggiornamenti dei contratti danno più spazio agli sviluppatori per sperimentare con varie funzionalità e migliorare le dapp nel corso del tempo. | L'opportunità di aggiornare i contratti intelligenti potrebbe incoraggiare gli sviluppatori a lanciare i progetti più velocemente senza la dovuta diligenza durante la fase di sviluppo. | -| | Un controllo dell'accesso non sicuro o la centralizzazione nei contratti intelligenti possono semplificare l'esecuzione di aggiornamenti non autorizzati da parte di utenti malevoli. | +| | Un controllo dell'accesso non sicuro o la centralizzazione nei contratti intelligenti possono semplificare l'esecuzione di aggiornamenti non autorizzati da parte di utenti malevoli. | ## Considerazioni sull'aggiornamento dei contratti intelligenti {#considerations-for-upgrading-smart-contracts} @@ -134,7 +134,7 @@ Il modello di aggiornamento a diamante presenta dei vantaggi rispetto ai tradizi 2. L'aggiornamento dei contratti intelligenti è un'attività complessa e richiede un elevato livello di diligenza per prevenire l'introduzione di vulnerabilità. -3. Ridurre le ipotesi di fiducia decentralizzando il processo di implementazione degli aggiornamenti. Le possibili strategie includono l'utilizzo di un [contratto del portafoglio multifirma](/developers/docs/smart-contracts/#multisig) per controllare gli aggiornamenti, o la richiesta ai [membri di una DAO](/dao/) di votare sull'approvazione dell'aggiornamento. +3. Ridurre le ipotesi di fiducia decentralizzando il processo di implementazione degli aggiornamenti. Le possibili strategie includono l'uso di un [contratto di portafoglio multi-firma](/developers/docs/smart-contracts/#multisig) per controllare gli aggiornamenti, o richiedere ai [membri di una DAO](/dao/) di votare per approvare l'aggiornamento. 4. Essere consapevoli dei costi comportati dall'aggiornamento dei contratti. Ad esempio, copiare lo stato (es. i saldi degli utenti) da un contratto vecchio a uno nuovo durante la sua migrazione potrebbe richiedere più di una transazione, il che significa maggiori commissioni sul carburante. @@ -144,22 +144,22 @@ I blocchi temporali danno del tempo agli utenti per uscire dal sistema se sono i ## Risorse {#resources} -**OpenZeppelin Upgrades Plugins - _Una suite di strumenti per distribuire e proteggere contratti intelligenti aggiornabili._** +**OpenZeppelin Upgrades Plugins - _Una suite di strumenti per distribuire e proteggere i contratti intelligenti aggiornabili._** - [GitHub](https://github.com/OpenZeppelin/openzeppelin-upgrades) - [Documentazione](https://docs.openzeppelin.com/upgrades) -## Tutorial {#tutorials} +## Guide {#tutorials} -- [Aggiornare i tuoi contratti intelligenti | Tutorial YouTube](https://www.youtube.com/watch?v=bdXJmWajZRY) di Patrick Collins -- [Tutorial di migrazione dei contratti intelligenti di Ethereum](https://medium.com/coinmonks/ethereum-smart-contract-migration-13f6f12539bd) di Austin Griffith -- [Utilizzare il modello proxy UUPS per aggiornare i contratti intelligenti](https://blog.logrocket.com/author/praneshas/) di Pranesh A.S -- [Tutorial Web3: scrivere contratti intelligenti aggiornabili (proxy) utilizzando OpenZeppelin](https://dev.to/yakult/tutorial-write-upgradeable-smart-contract-proxy-contract-with-openzeppelin-1916) di fangjun.eth +- [Aggiornare i tuoi contratti intelligenti | Guida di YouTube](https://www.youtube.com/watch?v=bdXJmWajZRY) di Patrick Collins +- [Guida sulla migrazione dei contratti intelligenti di Ethereum](https://medium.com/coinmonks/ethereum-smart-contract-migration-13f6f12539bd) di Austin Griffith +- [Utilizzo del modello proxy UUPS per aggiornare i contratti intelligenti](https://blog.logrocket.com/author/praneshas/) di Pranesh A.S +- [Guida Web3: scrivere un contratto intelligente aggiornabile (proxy) con OpenZeppelin](https://dev.to/yakult/tutorial-write-upgradeable-smart-contract-proxy-contract-with-openzeppelin-1916) di fangjun.eth ## Letture consigliate {#further-reading} - [Lo stato degli aggiornamenti dei contratti intelligenti](https://blog.openzeppelin.com/the-state-of-smart-contract-upgrades/) di Santiago Palladino -- [Svariati metodi per aggiornare un contratto intelligente in Solidity](https://cryptomarketpool.com/multiple-ways-to-upgrade-a-solidity-smart-contract/) - Blog Crypto Market Pool -- [Impara: aggiornare i contratti intelligenti](https://docs.openzeppelin.com/learn/upgrading-smart-contracts) - Documentazione di OpenZeppelin -- [Modelli proxy per l'aggiornabilità dei contratti in Solidity: proxy trasparenti vs. UUPS](https://mirror.xyz/0xB38709B8198d147cc9Ff9C133838a044d78B064B/M7oTptQkBGXxox-tk9VJjL66E1V8BUF0GF79MMK4YG0) di Naveen Sahu -- [Come funzionano gli aggiornamenti a diamante](https://dev.to/mudgen/how-diamond-upgrades-work-417j) di Nick Mudge +- [Molteplici modi per aggiornare un contratto intelligente Solidity](https://cryptomarketpool.com/multiple-ways-to-upgrade-a-solidity-smart-contract/) - blog di Crypto Market Pool +- [Apprendimento: aggiornamento dei contratti intelligenti](https://docs.openzeppelin.com/learn/upgrading-smart-contracts) - Documentazione di OpenZeppelin +- [Modelli proxy per l'aggiornabilità dei contratti Solidity: confronto tra proxy Transparent e UUPS](https://mirror.xyz/0xB38709B8198d147cc9Ff9C133838a044d78B064B/M7oTptQkBGXxox-tk9VJjL66E1V8BUF0GF79MMK4YG0) di Naveen Sahu +- [Come funzionano gli aggiornamenti Diamond](https://dev.to/mudgen/how-diamond-upgrades-work-417j) di Nick Mudge diff --git a/public/content/translations/it/developers/docs/smart-contracts/verifying/index.md b/public/content/translations/it/developers/docs/smart-contracts/verifying/index.md index f46d2fbc5f8..9b00b6be738 100644 --- a/public/content/translations/it/developers/docs/smart-contracts/verifying/index.md +++ b/public/content/translations/it/developers/docs/smart-contracts/verifying/index.md @@ -10,7 +10,7 @@ I [contratti intelligenti](/developers/docs/smart-contracts/) sono progettati pe ## Cos'è la verifica del codice sorgente? {#what-is-source-code-verification} -Prima di distribuire un contratto intelligente nella [Macchina Virtuale di Ethereum (EVM)](/developers/docs/evm/), gli sviluppatori [compilano](/developers/docs/smart-contracts/compiling/) il codice sorgente del contratto – le istruzioni [scritte in Solidity](/developers/docs/smart-contracts/languages/) o in un altro linguaggio di programmazione di alto livello – al bytecode. Poiché l'EVM non può interpretare le istruzioni di alto livello, compilare il codice sorgente al bytecode (cioè, al basso livello, le istruzioni macchina) è necessario per eseguire la logica del contratto nell'EVM. +Prima di distribuire un contratto intelligente nella [Macchina virtuale di Ethereum (EVM)](/developers/docs/evm/), gli sviluppatori [compilano](/developers/docs/smart-contracts/compiling/) il codice sorgente del contratto, ovvero le istruzioni [scritte in Solidity](/developers/docs/smart-contracts/languages/) o in un altro linguaggio di programmazione di alto livello, in bytecode. Poiché l'EVM non può interpretare le istruzioni di alto livello, compilare il codice sorgente al bytecode (cioè, al basso livello, le istruzioni macchina) è necessario per eseguire la logica del contratto nell'EVM. La verifica del codice sorgente consiste nel confrontare il codice sorgente di un contratto intelligente e il bytecode compilato utilizzato durante la creazione del contratto per rilevare eventuali differenze. La verifica dei contratti intelligenti è importante perché il codice del contratto pubblicizzato potrebbe avere una forma differente da quello eseguito sulla blockchain. @@ -20,17 +20,17 @@ La verifica del contratto intelligente consente di studiare cosa faccia un contr Esistono delle parti del codice sorgente che non influenzano il bytecode compilato, quali commenti o nomi delle variabili. Ciò significa che due codici sorgente con nomi delle variabili e commenti differenti sarebbero entrambi capaci di verificare lo stesso contratto. Così, un utente malevolo può aggiungere commenti ingannevoli o dare nomi di variabili fuorvianti nel codice sorgente e far verificare il contratto con un codice sorgente differente da quello originale. -È possibile evitarlo aggiungendo ulteriori dati al bytecode, che servano da _garanzia crittografica_ per l'esattezza del codice sorgente, e da _impronta digitale_ delle informazioni di compilazione. Le informazioni necessarie si trovano nei [metadati del contratto di Solidity](https://docs.soliditylang.org/en/v0.8.15/metadata.html), e l'hash di questo file è aggiunto al bytecode di un contratto. Puoi vederlo in azione nel [playground dei metadati](https://playground.sourcify.dev) +È possibile evitarlo aggiungendo ulteriori dati al bytecode, che servano da _garanzia crittografica_ per l'esattezza del codice sorgente, e da _impronta digitale_ delle informazioni di compilazione. Le informazioni necessarie si trovano nei [metadati del contratto di Solidity](https://docs.soliditylang.org/en/v0.8.15/metadata.html), e l'hash di questo file è aggiunto al bytecode di un contratto. È possibile vederlo in azione nel [playground dei metadati](https://playground.sourcify.dev) Il file dei metadati contiene le informazioni sulla compilazione del contratto, inclusi i file sorgente e i loro hash. Ciò significa che, se una delle impostazioni di compilazione o persino un byte in uno dei file sorgente cambiano, il file dei metadati cambia. Di conseguenza, anche l'hash del file dei metadati, aggiunto al bytecode, cambia. Ciò significa che se il bytecode di un contratto + l'hash dei metadati aggiunto corrisponde al codice sorgente e alle impostazioni di compilazione indicati, possiamo essere certi che sia esattamente lo stesso codice sorgente utilizzato nella compilazione originale e che nemmeno un singolo byte sia differente. -Questo tipo di verifica che sfrutta l'hash dei metadati è noto come **"[verifica completa](https://docs.sourcify.dev/docs/full-vs-partial-match/)"** (o "verifica perfetta"). Se gli hash dei metadati non corrispondono o non sono considerati nella verifica, sarebbe una "corrispondenza parziale", attualmente il metodo più comune per verificare i contratti. È possibile [inserire del codice malevolo](https://samczsun.com/hiding-in-plain-sight/) che non sarebbe riflesso nel codice sorgente verificato senza la verifica completa. Gran parte degli sviluppatori non è a conoscenza della verifica completa e non conserva il file dei metadati della propria compilazione, per cui finora la verifica parziale è stata il metodo utilizzato di fatto per la verifica dei contratti. +Questo tipo di verifica, che sfrutta l'hash dei metadati, è definito **"[verifica completa](https://docs.sourcify.dev/docs/full-vs-partial-match/)"** (o "verifica perfetta"). Se gli hash dei metadati non corrispondono o non sono considerati nella verifica, sarebbe una "corrispondenza parziale", attualmente il metodo più comune per verificare i contratti. È possibile [inserire codice malevolo](https://samczsun.com/hiding-in-plain-sight/) che non verrebbe riflesso nel codice sorgente verificato senza una verifica completa. Gran parte degli sviluppatori non è a conoscenza della verifica completa e non conserva il file dei metadati della propria compilazione, per cui finora la verifica parziale è stata il metodo utilizzato di fatto per la verifica dei contratti. ## Perché la verifica del codice sorgente è importante? {#importance-of-source-code-verification} ### Mancanza di fiducia {#trustlessness} -La mancanza di fiducia è senza dubbio la più grande premessa per i contratti intelligenti e le [applicazioni decentralizzate (dapp)](/developers/docs/dapps/). I contratti intelligenti sono "immutabili" e inalterabili; un contratto eseguirà la logica aziendale definita nel codice soltanto al momento della distribuzione. Ciò significa che sviluppatori e imprese non possono manomettere il codice di un contratto dopo la distribuzione su Ethereum. +La mancanza di fiducia è senza dubbio la più grande premessa per i contratti intelligenti e le [applicazioni decentralizzate (dApp)](/developers/docs/dapps/). I contratti intelligenti sono "immutabili" e inalterabili; un contratto eseguirà la logica aziendale definita nel codice soltanto al momento della distribuzione. Ciò significa che sviluppatori e imprese non possono manomettere il codice di un contratto dopo la distribuzione su Ethereum. Perché un contratto intelligente sia senza fiducia, il suo codice dovrebbe essere disponibile per la verifica indipendente. Mentre il bytecode compilato per ogni contratto intelligente è pubblicamente disponibile sulla blockchain, il linguaggio di basso livello è difficile da comprendere, sia per gli sviluppatori che per gli utenti. @@ -38,15 +38,15 @@ I progetti riducono le ipotesi di fiducia pubblicando il codice sorgente dei pro Gli strumenti di verifica del codice sorgente forniscono garanzie che i file del codice sorgente di un contratto intelligente corrispondano al codice assembly. Il risultato è un ecosistema senza fiducia, in cui gli utenti non si fidano ciecamente di terze parti e verificano piuttosto il codice prima di depositare fondi in un contratto. -### Sicurezza degli utenti {#user-safety} +### Sicurezza dell'utente {#user-safety} -Con i contratti intelligenti, solitamente è in gioco molto denaro. Questo richiede maggiori garanzie di sicurezza e la verifica della logica di un contratto intelligente prima del suo utilizzo. Il problema è che gli sviluppatori disonesti possono ingannare gli utenti inserendo del codice malevolo in un contratto intelligente. Senza verifiche, i contratti intelligenti malevoli possono contenere delle [backdoor](https://www.trustnodes.com/2018/11/10/concerns-rise-over-backdoored-smart-contracts), meccanismi di controllo dell'accesso controversi, vulnerabilità sfruttabili e altri aspetti che mettono a repentaglio la sicurezza dell'utente, che passerebbero inosservati. +Con i contratti intelligenti, solitamente è in gioco molto denaro. Questo richiede maggiori garanzie di sicurezza e la verifica della logica di un contratto intelligente prima del suo utilizzo. Il problema è che gli sviluppatori disonesti possono ingannare gli utenti inserendo del codice malevolo in un contratto intelligente. Senza verifica, i contratti intelligenti malevoli possono avere [backdoor](https://www.trustnodes.com/2018/11/10/concerns-rise-over-backdoored-smart-contracts), meccanismi di controllo degli accessi controversi, vulnerabilità sfruttabili e altri elementi che mettono a repentaglio la sicurezza dell'utente e che non verrebbero rilevati. Pubblicare i file del codice sorgente di un contratto intelligente rende più semplice per coloro che sono interessati, come i revisori, valutare il contratto per individuare potenziali vettori d'attacco. Con molte parti che verificano indipendentemente un contratto intelligente, gli utenti hanno maggiori garanzie della sua sicurezza. -## Come verificare il codice sorgente per i contratti intelligenti di Ethereum {#source-code-verification-for-ethereum-smart-contracts} +## Come verificare il codice sorgente dei contratti intelligenti di Ethereum {#source-code-verification-for-ethereum-smart-contracts} -La [distribuzione di un contratto intelligente su Ethereum](/developers/docs/smart-contracts/deploying/) richiede l'invio di una transazione con il un payload di dati (bytecode compilato) a un indirizzo specifico. Il payload di dati è generato compilando il codice sorgente, più gli [argomenti del costruttore](https://docs.soliditylang.org/en/v0.8.14/contracts.html#constructor) dell'istanza del contratto aggiunti al payload di dati nella transazione. La compilazione è deterministica, il che significa che produce sempre lo stesso risultato (cioè, il bytecode del contratto) se sono utilizzati gli stessi file sorgente e le stesse impostazioni di compilazione (es. versione del compilatore, ottimizzatore). +La [distribuzione di un contratto intelligente su Ethereum](/developers/docs/smart-contracts/deploying/) richiede l'invio di una transazione con un payload di dati (bytecode compilato) a un indirizzo speciale. Il payload di dati è generato compilando il codice sorgente, più gli [argomenti del costruttore](https://docs.soliditylang.org/en/v0.8.14/contracts.html#constructor) dell'istanza del contratto aggiunti al payload dei dati nella transazione. La compilazione è deterministica, il che significa che produce sempre lo stesso risultato (cioè, il bytecode del contratto) se sono utilizzati gli stessi file sorgente e le stesse impostazioni di compilazione (es. versione del compilatore, ottimizzatore). ![Un diagramma che mostra la verifica del codice sorgente del contratto intelligente](./source-code-verification.png) @@ -62,41 +62,47 @@ La verifica di un contratto intelligente comporta fondamentalmente i seguenti pa 5. Inoltre, se gli hash dei metadati alla fine del bytecode corrispondono, sarà una corrispondenza completa. -Nota che questa è una descrizione semplicistica della verifica e che esistono molte eccezioni che non funzionerebbero, come avere delle [variabili immutabili](https://docs.sourcify.dev/docs/immutables/). +Nota che questa è una descrizione semplicistica della verifica e che esistono molte eccezioni che non funzionerebbero in questo caso, come avere [variabili immutabili](https://docs.sourcify.dev/docs/immutables/). -## Strumenti di verifica del codice sorgente {#source-code-verification-tools} +## Strumenti per la verifica del codice sorgente {#source-code-verification-tools} Il tradizionale processo di verifica dei contratti può essere complesso. Per questo abbiamo strumenti per la verifica del codice sorgente per i contratti intelligenti distribuiti su Ethereum. Questi automatizzano buona parte della verifica del codice sorgente, oltre a curare i contratti verificati per i benefici degli utenti. ### Etherscan {#etherscan} -Sebbene per lo più conosciuto come un [esploratore della blockchain di Ethereum](/developers/docs/data-and-analytics/block-explorers/), Etherscan offre anche un [servizio di verifica del codice sorgente](https://etherscan.io/verifyContract) per sviluppatori e utenti dei contratti intelligenti. +Sebbene sia conosciuto principalmente come [esploratore della blockchain di Ethereum](/developers/docs/data-and-analytics/block-explorers/), Etherscan offre anche un [servizio di verifica del codice sorgente](https://etherscan.io/verifyContract) per gli sviluppatori e gli utenti di contratti intelligenti. -Etherscan ti consente di ricompilare il bytecode del contratto dal payload di dati originale (codice sorgente, indirizzo della libreria, impostazioni del compilatore, indirizzo del contratto, ecc.) Se il bytecode ricompilato è associato al bytecode (e ai parametri del costruttore) del contratto su catena, allora [il contratto è verificato](https://info.etherscan.com/types-of-contract-verification/). +Etherscan ti consente di ricompilare il bytecode del contratto dal payload di dati originale (codice sorgente, indirizzo della libreria, impostazioni del compilatore, indirizzo del contratto, ecc.) Se il bytecode ricompilato è associato al bytecode (e ai parametri del costruttore) del contratto sulla catena, allora [il contratto è verificato](https://info.etherscan.com/types-of-contract-verification/). -Una volta verificato, il codice sorgente del tuo contratto riceve un'etichetta "verificato" ed è pubblicato su Etherscan per essere revisionato da altri. Inoltre, viene aggiunto alla sezione [Contratti verificati](https://etherscan.io/contractsVerified/), una repository dei contratti intelligenti con codici sorgente verificati. +Una volta verificato, il codice sorgente del tuo contratto riceve un'etichetta "verificato" ed è pubblicato su Etherscan per essere revisionato da altri. Viene anche aggiunto alla sezione [Contratti Verificati](https://etherscan.io/contractsVerified/), un repository di contratti intelligenti con codici sorgente verificati. -Etherscan è lo strumento più utilizzato per verificare i contratti. Tuttavia, la verifica dei contratti di Etherscan presenta uno svantaggio: non riesce a confrontare l'**hash dei metadati** del bytecode su catena e del bytecode ricompilato. Dunque, le corrispondenze su Etherscan sono parziali. +Etherscan è lo strumento più utilizzato per verificare i contratti. Tuttavia, la verifica dei contratti di Etherscan ha uno svantaggio: non riesce a confrontare l'**hash dei metadati** del bytecode sulla catena e del bytecode ricompilato. Dunque, le corrispondenze su Etherscan sono parziali. [Maggiori informazioni sulla verifica dei contratti su Etherscan](https://medium.com/etherscan-blog/verifying-contracts-on-etherscan-f995ab772327). +### Blockscout {#blockscout} + +[Blockscout](https://blockscout.com/) è un esploratore blockchain open-source che fornisce anche un [servizio di verifica dei contratti](https://eth.blockscout.com/contract-verification) per sviluppatori e utenti di contratti intelligenti. In quanto alternativa open-source, Blockscout offre trasparenza su come viene eseguita la verifica e permette i contributi della community per migliorare il processo di verifica. + +Similmente ad altri servizi di verifica, Blockscout permette di verificare il codice sorgente del contratto ricompilando il bytecode e confrontandolo con il contratto distribuito. Una volta verificato, il contratto riceve uno stato di verifica e il codice sorgente diventa disponibile pubblicamente per il controllo e l'interazione. I contratti verificati sono anche elencati nel [repository dei contratti verificati](https://eth.blockscout.com/verified-contracts) di Blockscout per facilitarne la consultazione e la ricerca. + ### Sourcify {#sourcify} -[Sourcify](https://sourcify.dev/#/verifier) è un altro strumento, open source e decentralizzato, per verificare i contratti. Non è un esploratore di blocchi e verifica i contratti soltanto su [diverse reti basate sull'EVM](https://docs.sourcify.dev/docs/chains). Agisce da infrastruttura pubblica per la costruzione di altri strumenti e mira a consentire interazioni con i contratti più intuitive, utilizzando i commenti [ABI](/developers/docs/smart-contracts/compiling/#web-applications) e [NatSpc](https://docs.soliditylang.org/en/v0.8.15/natspec-format.html) che si trovano nel file dei metadati. +[Sourcify](https://sourcify.dev/#/verifier) è un altro strumento per la verifica dei contratti, open-source e decentralizzato. Non è un esploratore di blocchi e verifica i contratti soltanto su [diverse reti basate su EVM](https://docs.sourcify.dev/docs/chains). Funziona come un'infrastruttura pubblica su cui altri strumenti possono basarsi e mira a consentire interazioni con i contratti più semplici per l'utente, utilizzando i commenti [ABI](/developers/docs/smart-contracts/compiling/#web-applications) e [NatSpec](https://docs.soliditylang.org/en/v0.8.15/natspec-format.html) che si trovano nel file dei metadati. -A differenza di Etherscan, Sourcify supporta le corrispondenze complete con l'hash dei metadati. I contratti verificati sono serviti nella sua [repository pubblica](https://docs.sourcify.dev/docs/repository/) su HTTP e [IPFS](https://docs.ipfs.io/concepts/what-is-ipfs/#what-is-ipfs), un'archiviazione [indirizzata ai contenuti](https://web3.storage/docs/concepts/content-addressing/) e decentralizzata. Questo consente il recupero dei file dei metadati di un contratto via IPFS, poiché l'hash dei metadati aggiunto è un hash IPFS. +A differenza di Etherscan, Sourcify supporta le corrispondenze complete con l'hash dei metadati. I contratti verificati sono serviti nel suo [repository pubblico](https://docs.sourcify.dev/docs/repository/) su HTTP e [IPFS](https://docs.ipfs.io/concepts/what-is-ipfs/#what-is-ipfs), che è un'archiviazione decentralizzata e a [indirizzamento tramite contenuto](https://docs.storacha.network/concepts/content-addressing/). Questo consente il recupero dei file dei metadati di un contratto via IPFS, poiché l'hash dei metadati aggiunto è un hash IPFS. -Inoltre, è anche possibile recuperare i file del codice sorgente via IPFS, poiché anche gli hash IPFS di questi file si trovano nei metadati. Un contratto è verificabile fornendo il file dei metadati e i file sorgente tramite la sua API o tramite l'[UI](https://sourcify.dev/#/verifier), o utilizzando i plugin. Lo strumento di monitoraggio di Sourcify ascolta anche le creazioni dei contratti su nuovi blocchi e prova a verificare i contratti se i loro metadati e file sorgente sono pubblicati su IPFS. +Inoltre, è anche possibile recuperare i file del codice sorgente via IPFS, poiché anche gli hash IPFS di questi file si trovano nei metadati. Un contratto può essere verificato fornendo il file dei metadati e i file sorgente tramite la sua API o l'[UI](https://sourcify.dev/#/verifier), oppure utilizzando i plugin. Lo strumento di monitoraggio di Sourcify ascolta anche le creazioni dei contratti su nuovi blocchi e prova a verificare i contratti se i loro metadati e file sorgente sono pubblicati su IPFS. -[Maggiori informazioni sulla verifica dei contratti su Sourcify](https://blog.soliditylang.org/2020/06/25/sourcify-faq/). +[Maggiori informazioni sulla verifica dei contratti su Sourcify](https://soliditylang.org/blog/2020/06/25/sourcify-faq/). ### Tenderly {#tenderly} -La [piattaforma Tenderly](https://tenderly.co/) consente agli sviluppatori in Web3 di creare, testare, monitorare e gestire i contratti intelligenti. Combinando strumenti di debug con osservabilità e blocchi di costruzione dell'infrastruttura, Tenderly aiuta gli sviluppatori ad accelerare lo sviluppo dei contratti intelligenti. Per abilitare appieno le funzionalità di Tenderly, gli sviluppatori devono [eseguire la verifica del codice sorgente](https://docs.tenderly.co/monitoring/contract-verification) utilizzando svariati metodi. +La [piattaforma Tenderly](https://tenderly.co/) consente agli sviluppatori Web3 di creare, testare, monitorare e gestire contratti intelligenti. Combinando strumenti di debug con osservabilità e blocchi di costruzione dell'infrastruttura, Tenderly aiuta gli sviluppatori ad accelerare lo sviluppo dei contratti intelligenti. Per abilitare appieno le funzionalità di Tenderly, gli sviluppatori devono [eseguire la verifica del codice sorgente](https://docs.tenderly.co/monitoring/contract-verification) utilizzando diversi metodi. È possibile verificare un contratto sia privatamente che pubblicamente. Se verificato privatamente, il contratto intelligente è visibile soltanto a te (e agli altri membri del tuo progetto). Verificarlo pubblicamente lo rende visibile a chiunque utilizzi la piattaforma Tenderly. -Puoi verificare i tuoi contratti utilizzando il [Pannello di controllo](https://docs.tenderly.co/monitoring/smart-contract-verification/verifying-a-smart-contract), il [plugin Hardhat di Tenderly](https://docs.tenderly.co/monitoring/smart-contract-verification/verifying-contracts-using-the-tenderly-hardhat-plugin) o la [CLI](https://docs.tenderly.co/monitoring/smart-contract-verification/verifying-contracts-using-cli). +È possibile verificare i contratti usando la [Dashboard](https://docs.tenderly.co/contract-verification), il [plugin Tenderly per Hardhat](https://docs.tenderly.co/contract-verification/hardhat), o la [CLI](https://docs.tenderly.co/monitoring/smart-contract-verification/verifying-contracts-using-cli). Verificando i contratti tramite il Pannello di controllo, devi importare il file sorgente o il file dei metadati generati dal compilatore in Solidity, l'indirizzo/rete e le impostazioni del compilatore. @@ -104,4 +110,4 @@ L'utilizzo del plugin Hardhat di Tenderly consente di avere maggiore controllo s ## Letture consigliate {#further-reading} -- [Verificare il codice sorgente del contratto](https://programtheblockchain.com/posts/2018/01/16/verifying-contract-source-code/) +- [Verifica del codice sorgente del contratto](https://programtheblockchain.com/posts/2018/01/16/verifying-contract-source-code/) diff --git a/public/content/translations/it/developers/docs/storage/index.md b/public/content/translations/it/developers/docs/storage/index.md index ef3bd169125..b67c1ceffaf 100644 --- a/public/content/translations/it/developers/docs/storage/index.md +++ b/public/content/translations/it/developers/docs/storage/index.md @@ -1,6 +1,6 @@ --- title: Archiviazione Decentralizzata -description: Panoramica di cos'è l'archiviazione decentralizzata e degli strumenti disponibili per integrarla in una dapp. +description: "Panoramica di cos'è l'archiviazione decentralizzata e degli strumenti disponibili per integrarla in una dapp." lang: it --- diff --git a/public/content/translations/it/developers/docs/transactions/index.md b/public/content/translations/it/developers/docs/transactions/index.md index 0a3ede82e33..f2d5d47562b 100644 --- a/public/content/translations/it/developers/docs/transactions/index.md +++ b/public/content/translations/it/developers/docs/transactions/index.md @@ -106,7 +106,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 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/). +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/). diff --git a/public/content/translations/it/developers/docs/wrapped-eth/index.md b/public/content/translations/it/developers/docs/wrapped-eth/index.md index f6633c6df9d..93a7afd5584 100644 --- a/public/content/translations/it/developers/docs/wrapped-eth/index.md +++ b/public/content/translations/it/developers/docs/wrapped-eth/index.md @@ -1,6 +1,6 @@ --- -title: Che cos'è il Wrapped Ether (WETH) -description: Un'introduzione al Wrapped ether (WETH)—un wrapper per ether (ETH) compatibile con ERC20. +title: "Che cos'è il Wrapped Ether (WETH)" +description: "Un'introduzione al Wrapped ether (WETH)—un wrapper per ether (ETH) compatibile con ERC20." lang: it --- @@ -35,19 +35,16 @@ Puoi "scartare" (ovvero unwrap) WETH per ETH utilizzando il contratto intelligen Devi pagare delle commissioni del gas per avvolgere o scartare ETH utilizzando il contratto WETH. - WETH è generalmente considerato sicuro perché si basa su un contratto intelligente semplice e testato sul campo. Anche il contratto WETH è stato formalmente verificato, che è lo standard di sicurezza più elevato per i contratti intelligenti su Ethereum. - Oltre all'[implementazione canonica di WETH](https://etherscan.io/token/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2) descritta in questa pagina, ci sono altre varianti in giro. Queste possono essere token personalizzati creati dagli sviluppatori di applicazioni o versioni emesse su altre blockchain, e potrebbero comportarsi diversamente o avere proprietà di sicurezza diverse. **Ricontrolla sempre le informazioni sui token per sapere con quale implementazione di WETH stai interagendo.** - @@ -55,7 +52,6 @@ Oltre all'[implementazione canonica di WETH](https://etherscan.io/token/0xc02aaa - [Rete Principale di Ethereum](https://etherscan.io/token/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2) - [Arbitrum](https://arbiscan.io/token/0x82af49447d8a07e3bd95bd0d56f35241523fbab1) - [Optimism](https://optimistic.etherscan.io/token/0x4200000000000000000000000000000000000006) - ## Letture consigliate {#further-reading} diff --git a/public/content/translations/it/developers/tutorials/all-you-can-cache/index.md b/public/content/translations/it/developers/tutorials/all-you-can-cache/index.md index 57c7b8c3940..f6ff02e95b8 100644 --- a/public/content/translations/it/developers/tutorials/all-you-can-cache/index.md +++ b/public/content/translations/it/developers/tutorials/all-you-can-cache/index.md @@ -1,6 +1,6 @@ --- title: "Salva nella cache quanto vuoi" -description: Scopri come creare e utilizzare un contratto di memorizzazione nella cache per transazioni rollup più economiche +description: "Scopri come creare e utilizzare un contratto di memorizzazione nella cache per transazioni rollup più economiche" author: Ori Pomerantz tags: - "livello 2" diff --git a/public/content/translations/it/developers/tutorials/erc-721-vyper-annotated-code/index.md b/public/content/translations/it/developers/tutorials/erc-721-vyper-annotated-code/index.md index 1aa4513316d..ae81072d902 100644 --- a/public/content/translations/it/developers/tutorials/erc-721-vyper-annotated-code/index.md +++ b/public/content/translations/it/developers/tutorials/erc-721-vyper-annotated-code/index.md @@ -244,6 +244,7 @@ Restituisce il valore dall'HashMap `self-supportedInterfaces`, che è impostata ```python ### VIEW FUNCTIONS ### + ``` Queste sono le funzioni di visualizzazione che rendono le informazioni sui token disponibili a utenti e altri contratti. diff --git a/public/content/translations/it/developers/tutorials/erc20-annotated-code/index.md b/public/content/translations/it/developers/tutorials/erc20-annotated-code/index.md index 77d28e8c2a6..685a839b550 100644 --- a/public/content/translations/it/developers/tutorials/erc20-annotated-code/index.md +++ b/public/content/translations/it/developers/tutorials/erc20-annotated-code/index.md @@ -1,6 +1,6 @@ --- title: "Guida dettagliata al contratto ERC-20" -description: Cosa c'è nel contratto ERC-20 di OpenZeppelin e a cosa serve? +description: "Cosa c'è nel contratto ERC-20 di OpenZeppelin e a cosa serve?" author: Ori Pomerantz lang: it tags: diff --git a/public/content/translations/it/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md b/public/content/translations/it/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md index 4530e734b93..5a4ee39d1a3 100644 --- a/public/content/translations/it/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md +++ b/public/content/translations/it/developers/tutorials/getting-started-with-ethereum-development-using-alchemy/index.md @@ -11,7 +11,7 @@ tags: skill: beginner lang: it published: 2020-10-30 -source: Medio +source: Medium sourceUrl: https://medium.com/alchemy-api/getting-started-with-ethereum-development-using-alchemy-c3d6a45c567f --- diff --git a/public/content/translations/it/developers/tutorials/guide-to-smart-contract-security-tools/index.md b/public/content/translations/it/developers/tutorials/guide-to-smart-contract-security-tools/index.md index cbc0ab8e3a8..91b5bb0c29e 100644 --- a/public/content/translations/it/developers/tutorials/guide-to-smart-contract-security-tools/index.md +++ b/public/content/translations/it/developers/tutorials/guide-to-smart-contract-security-tools/index.md @@ -9,7 +9,7 @@ tags: - "sicurezza" skill: intermediate published: 2020-09-07 -source: Creare contratti sicuri +source: Building secure contracts sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis --- diff --git a/public/content/translations/it/developers/tutorials/hello-world-smart-contract-fullstack/index.md b/public/content/translations/it/developers/tutorials/hello-world-smart-contract-fullstack/index.md index 0a417e53d75..9bc76177f55 100644 --- a/public/content/translations/it/developers/tutorials/hello-world-smart-contract-fullstack/index.md +++ b/public/content/translations/it/developers/tutorials/hello-world-smart-contract-fullstack/index.md @@ -628,8 +628,6 @@ ETHERSCAN_API_KEY = "your-etherscan-key" ### Contratti intelligenti distribuiti su Hardhat {#hardhat-deployed-smart-contracts} - - #### Installa hardhat-etherscan {#install-hardhat-etherscan} Pubblicare i tuoi contratti su Ethereum usando Hardhat è semplice. Per iniziare è necessario installare il plugin `hardhat-etherscan`. `hardhat-etherscan` verificherà automaticamente il codice sorgente e la ABI del contratto intelligente su Etherscan. Per aggiungerlo, esegui dalla cartella `hello-world`: @@ -903,8 +901,9 @@ return ( - - + + + ) ``` diff --git a/public/content/translations/it/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md b/public/content/translations/it/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md index cec6a7b6dab..0f10e0f3195 100644 --- a/public/content/translations/it/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md +++ b/public/content/translations/it/developers/tutorials/how-to-mock-solidity-contracts-for-testing/index.md @@ -1,6 +1,6 @@ --- title: Come simulare i contratti intelligenti in Solidity per testarli -description: Perché è importante prendersi gioco dei propri contratti in fase di test +description: "Perché è importante prendersi gioco dei propri contratti in fase di test" author: Markus Waas lang: it tags: diff --git a/public/content/translations/it/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md b/public/content/translations/it/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md index bc374533d9a..91f6087b864 100644 --- a/public/content/translations/it/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md +++ b/public/content/translations/it/developers/tutorials/how-to-use-echidna-to-test-smart-contracts/index.md @@ -11,7 +11,7 @@ tags: - "fuzzing" skill: advanced published: 2020-04-10 -source: Creare contratti sicuri +source: Building secure contracts sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/echidna --- diff --git a/public/content/translations/it/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md b/public/content/translations/it/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md index 7d97bd4a966..88e70637953 100644 --- a/public/content/translations/it/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md +++ b/public/content/translations/it/developers/tutorials/how-to-use-manticore-to-find-smart-contract-bugs/index.md @@ -11,7 +11,7 @@ tags: - "verifica formale" skill: advanced published: 2020-01-13 -source: Creare contratti sicuri +source: Building secure contracts sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/manticore --- @@ -396,6 +396,7 @@ symbolic_var = m.make_symbolic_value() contract_account.f(symbolic_var) ## Controlla se l'esecuzione termina con REVERT o INVALID + for state in m.terminated_states: last_tx = state.platform.transactions[-1] if last_tx.result in ['REVERT', 'INVALID']: @@ -500,6 +501,7 @@ contract_account.f(symbolic_var) no_bug_found = True ## Controlla se l'esecuzione termina con REVERT o INVALID + for state in m.terminated_states: last_tx = state.platform.transactions[-1] if last_tx.result in ['REVERT', 'INVALID']: diff --git a/public/content/translations/it/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md b/public/content/translations/it/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md index 28111da448b..f4487b0edde 100644 --- a/public/content/translations/it/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md +++ b/public/content/translations/it/developers/tutorials/how-to-use-slither-to-find-smart-contract-bugs/index.md @@ -11,7 +11,7 @@ tags: - "analisi statica" skill: advanced published: 2020-06-09 -source: Creare contratti sicuri +source: Building secure contracts sourceUrl: https://github.com/crytic/building-secure-contracts/tree/master/program-analysis/slither --- diff --git a/public/content/translations/it/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md b/public/content/translations/it/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md index 8a4d38bb867..c442b02686e 100644 --- a/public/content/translations/it/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md +++ b/public/content/translations/it/developers/tutorials/how-to-use-tellor-as-your-oracle/index.md @@ -9,7 +9,7 @@ tags: - "oracoli" skill: beginner published: 2021-06-29 -source: Documentazione di Tellor +source: Tellor Docs sourceUrl: https://docs.tellor.io/tellor/ --- diff --git a/public/content/translations/it/developers/tutorials/how-to-write-and-deploy-an-nft/index.md b/public/content/translations/it/developers/tutorials/how-to-write-and-deploy-an-nft/index.md index c7995522e44..b0b68e38c75 100644 --- a/public/content/translations/it/developers/tutorials/how-to-write-and-deploy-an-nft/index.md +++ b/public/content/translations/it/developers/tutorials/how-to-write-and-deploy-an-nft/index.md @@ -1,6 +1,6 @@ --- title: Come Scrivere e Distribuire un NFT (Parte 1/3 della Serie di tutorial sugli NFT) -description: Questo tutorial è la Parte 1 di una serie sui NFT che ti guiderà passo dopo passo alla scrittura e distribuzione del contratto intelligente di un Token Non Fungibile (token ERC-721) usando Ethereum e l'InterPlanetary File System (IPFS). +description: "Questo tutorial è la Parte 1 di una serie sui NFT che ti guiderà passo dopo passo alla scrittura e distribuzione del contratto intelligente di un Token Non Fungibile (token ERC-721) usando Ethereum e l'InterPlanetary File System (IPFS)." author: "Sumi Mudgil" tags: - "ERC-721" diff --git a/public/content/translations/it/developers/tutorials/kickstart-your-dapp-frontend-development-with-create-eth-app/index.md b/public/content/translations/it/developers/tutorials/kickstart-your-dapp-frontend-development-with-create-eth-app/index.md index 8d093e6360e..20ef58025ce 100644 --- a/public/content/translations/it/developers/tutorials/kickstart-your-dapp-frontend-development-with-create-eth-app/index.md +++ b/public/content/translations/it/developers/tutorials/kickstart-your-dapp-frontend-development-with-create-eth-app/index.md @@ -1,6 +1,6 @@ --- title: Avvia lo sviluppo del frontend della tua dapp con create-eth-app -description: Una panoramica su come usare create-eth-app e le sue funzionalità +description: "Una panoramica su come usare create-eth-app e le sue funzionalità" author: "Markus Waas" tags: - "create-eth-app" diff --git a/public/content/translations/it/developers/tutorials/kickstart-your-dapp-frontend-development-wth-create-eth-app/index.md b/public/content/translations/it/developers/tutorials/kickstart-your-dapp-frontend-development-wth-create-eth-app/index.md index 8d093e6360e..20ef58025ce 100644 --- a/public/content/translations/it/developers/tutorials/kickstart-your-dapp-frontend-development-wth-create-eth-app/index.md +++ b/public/content/translations/it/developers/tutorials/kickstart-your-dapp-frontend-development-wth-create-eth-app/index.md @@ -1,6 +1,6 @@ --- title: Avvia lo sviluppo del frontend della tua dapp con create-eth-app -description: Una panoramica su come usare create-eth-app e le sue funzionalità +description: "Una panoramica su come usare create-eth-app e le sue funzionalità" author: "Markus Waas" tags: - "create-eth-app" diff --git a/public/content/translations/it/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md b/public/content/translations/it/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md index eb020f647c1..ac53cd738cf 100644 --- a/public/content/translations/it/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md +++ b/public/content/translations/it/developers/tutorials/merkle-proofs-for-offline-data-integrity/index.md @@ -1,6 +1,6 @@ --- -title: Prove di Merkle per l'integrità dei dati offline -description: Garantire l'integrità dei dati sulla catena per i dati memorizzati principalmente al di fuori di essa +title: "Prove di Merkle per l'integrità dei dati offline" +description: "Garantire l'integrità dei dati sulla catena per i dati memorizzati principalmente al di fuori di essa" author: Ori Pomerantz tags: - "archiviazione" @@ -33,7 +33,7 @@ L'hash principale è l'unica parte che deve essere memorizzata sulla catena. Per [Il campione di codice è disponibile qui](https://github.com/qbzzt/merkle-proofs-for-offline-data-integrity). -### Codice esterno alla catena {#off-chain-code} +### Codice esterno alla catena {#offchain-code} In questo articolo usiamo JavaScript per i calcoli al di fuori della catena. Gran parte delle app decentralizzate hanno i propri componenti esterni alla catena su JavaScript. @@ -163,7 +163,7 @@ Eseguiamo l'hashing di `(v[0],v[1])`, `(v[2],v[3])`, ecc. Quindi per i valori pa }   // getMerkleProof ``` -### Codice on-chain {#on-chain-code} +### Codice on-chain {#onchain-code} Finalmente abbiamo il codice che verifica la prova. Il codice on-chain è scritto in [Solidity](https://docs.soliditylang.org/en/v0.8.11/). L'ottimizzazione è molto più importante qui, perché il gas è relativamente costoso. diff --git a/public/content/translations/it/developers/tutorials/nft-minter/index.md b/public/content/translations/it/developers/tutorials/nft-minter/index.md index 5029f29175f..6f777a22037 100644 --- a/public/content/translations/it/developers/tutorials/nft-minter/index.md +++ b/public/content/translations/it/developers/tutorials/nft-minter/index.md @@ -183,7 +183,7 @@ return ( Mint NFT

{status}

- + ) ``` diff --git a/public/content/translations/it/developers/tutorials/optimism-std-bridge-annotated-code/index.md b/public/content/translations/it/developers/tutorials/optimism-std-bridge-annotated-code/index.md index 623a368b33e..20ffd103981 100644 --- a/public/content/translations/it/developers/tutorials/optimism-std-bridge-annotated-code/index.md +++ b/public/content/translations/it/developers/tutorials/optimism-std-bridge-annotated-code/index.md @@ -1,6 +1,6 @@ --- title: "Guida del ponte standard di Optimism per contratti" -description: Come funziona il ponte standard per Optimism? Perché funziona così? +description: "Come funziona il ponte standard per Optimism? Perché funziona così?" author: Ori Pomerantz tags: - "solidity" diff --git a/public/content/translations/it/developers/tutorials/run-node-raspberry-pi/index.md b/public/content/translations/it/developers/tutorials/run-node-raspberry-pi/index.md index 0b7f03a7701..a5d4e6b6795 100644 --- a/public/content/translations/it/developers/tutorials/run-node-raspberry-pi/index.md +++ b/public/content/translations/it/developers/tutorials/run-node-raspberry-pi/index.md @@ -10,7 +10,7 @@ tags: lang: it skill: intermediate published: 2022-06-10 -source: Ethereum su ARM +source: Ethereum on ARM sourceUrl: https://ethereum-on-arm-documentation.readthedocs.io/en/latest/ --- diff --git a/public/content/translations/it/developers/tutorials/secure-development-workflow/index.md b/public/content/translations/it/developers/tutorials/secure-development-workflow/index.md index 124522bb671..4d961ea14a3 100644 --- a/public/content/translations/it/developers/tutorials/secure-development-workflow/index.md +++ b/public/content/translations/it/developers/tutorials/secure-development-workflow/index.md @@ -9,7 +9,7 @@ tags: skill: intermediate lang: it published: 2020-09-07 -source: Creare contratti sicuri +source: Building secure contracts sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/development-guidelines/workflow.md --- diff --git a/public/content/translations/it/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md b/public/content/translations/it/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md index ac548d8aaa8..4db85d9821c 100644 --- a/public/content/translations/it/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md +++ b/public/content/translations/it/developers/tutorials/sending-transactions-using-web3-and-alchemy/index.md @@ -9,7 +9,7 @@ tags: skill: beginner lang: it published: 2020-11-04 -source: documentazione Alchemy +source: Alchemy docs sourceUrl: https://www.alchemy.com/docs/how-to-send-transactions-on-ethereum --- diff --git a/public/content/translations/it/developers/tutorials/short-abi/index.md b/public/content/translations/it/developers/tutorials/short-abi/index.md index 15b2ff853f5..0ebe8f089b4 100644 --- a/public/content/translations/it/developers/tutorials/short-abi/index.md +++ b/public/content/translations/it/developers/tutorials/short-abi/index.md @@ -327,7 +327,7 @@ Crea una transazione di trasferimento. Il primo byte è "0x02", seguito dall'ind }) // describe ``` -### Esempio {#example} +### Esempio {#reducing-the-cost-when-you-do-control-the-destination-contract} Se desideri vedere questi file in azione senza eseguirli tu stesso, segui questi link: @@ -337,13 +337,13 @@ Se desideri vedere questi file in azione senza eseguirli tu stesso, segui questi 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} +## Ridurre il costo quando hai il controllo del contratto di destinazione {#token-sol-2} 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} +### Token.sol {#calldatainterpreter-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: @@ -441,7 +441,7 @@ Queste sono tre operazioni che normalmente richiedono che il messaggio provenga 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} +### CalldataInterpreter.sol {#test-js-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`. @@ -475,7 +475,7 @@ L'interprete dei dati della chiamata è praticamente identico a quello precedent } ``` -### Test.js {#test-js-2} +### Test.js {#conclusion} Ci sono alcune modifiche tra il codice di test precedente e questo. diff --git a/public/content/translations/it/developers/tutorials/smart-contract-security-guidelines/index.md b/public/content/translations/it/developers/tutorials/smart-contract-security-guidelines/index.md index d58a2b840ee..72c04d2ac1e 100644 --- a/public/content/translations/it/developers/tutorials/smart-contract-security-guidelines/index.md +++ b/public/content/translations/it/developers/tutorials/smart-contract-security-guidelines/index.md @@ -9,7 +9,7 @@ tags: skill: intermediate lang: it published: 2020-09-06 -source: Creare contratti sicuri +source: Building secure contracts sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/development-guidelines/guidelines.md --- @@ -27,7 +27,7 @@ La documentazione può essere scritta su diversi livelli e deve essere aggiornat - **Schema e diagrammi architettonici**, incluse le interazioni del contratto e la macchina a stati del sistema. Le [stampanti Slither](https://github.com/crytic/slither/wiki/Printer-documentation) possono aiutare a generare questi schemi. - **Documentazione approfondita sul codice**, il [formato Natspec](https://solidity.readthedocs.io/en/develop/natspec-format.html) si può usare per Solidity. -### Calcolo sulla catena ed esterno alla catena {#on-chain-vs-off-chain-computation} +### Calcolo sulla catena ed esterno alla catena {#onchain-vs-offchain-computation} - **Mantieni quanto più codice possibile al di fuori della catena.** Il livello sulla catena deve essere il più ridotto possibile. Elabora anticipatamente i dati con il codice esternamente alla catena così che la verifica su di essa sia semplice. Ti serve un elenco ordinato? Ordina l'elenco esternamente alla catena, poi controlla solo l'ordine sulla catena. diff --git a/public/content/translations/it/developers/tutorials/the-graph-fixing-web3-data-querying/index.md b/public/content/translations/it/developers/tutorials/the-graph-fixing-web3-data-querying/index.md index 1adc5485c36..74a030740b1 100644 --- a/public/content/translations/it/developers/tutorials/the-graph-fixing-web3-data-querying/index.md +++ b/public/content/translations/it/developers/tutorials/the-graph-fixing-web3-data-querying/index.md @@ -1,6 +1,6 @@ --- title: "The Graph: query di dati in Web3" -description: La blockchain è come un database ma senza SQL. Contiene tutti i dati, ma non c'è modo di accedervi. Vediamo come risolvere la situazione con The Graph e GraphQL. +description: "La blockchain è come un database ma senza SQL. Contiene tutti i dati, ma non c'è modo di accedervi. Vediamo come risolvere la situazione con The Graph e GraphQL." author: Markus Waas lang: it tags: diff --git a/public/content/translations/it/developers/tutorials/token-integration-checklist/index.md b/public/content/translations/it/developers/tutorials/token-integration-checklist/index.md index 50630419398..d6579c04b63 100644 --- a/public/content/translations/it/developers/tutorials/token-integration-checklist/index.md +++ b/public/content/translations/it/developers/tutorials/token-integration-checklist/index.md @@ -10,7 +10,7 @@ tags: - "token" skill: intermediate published: 2020-08-13 -source: Creare contratti sicuri +source: Building secure contracts sourceUrl: https://github.com/crytic/building-secure-contracts/blob/master/development-guidelines/token_integration.md --- diff --git a/public/content/translations/it/developers/tutorials/uniswap-v2-annotated-code/index.md b/public/content/translations/it/developers/tutorials/uniswap-v2-annotated-code/index.md index 23ed18a2053..82e24f12a55 100644 --- a/public/content/translations/it/developers/tutorials/uniswap-v2-annotated-code/index.md +++ b/public/content/translations/it/developers/tutorials/uniswap-v2-annotated-code/index.md @@ -1,6 +1,6 @@ --- title: "Guida dettagliata al contratto Uniswap-v2" -description: Come funziona il contratto Uniswap-v2? Perché è scritto così? +description: "Come funziona il contratto Uniswap-v2? Perché è scritto così?" author: Ori Pomerantz tags: - "solidity" @@ -55,9 +55,8 @@ Questo è il flusso più comune, usato dai trader: 3. Identifica l'importo necessario da scambiare su ogni scambio lungo il percorso. 4. Itera sul percorso. Per ogni scambio lungo il percorso, invia il token di input e poi chiama la funzione di `swap` dello scambio. In gran parte dei casi, l'indirizzo di destinazione per i token è lo scambio in pari successivo nel percorso. Nello scambio finale è presente l'indirizzo fornito dal trader. -#### Nel contratto principale (UniswapV2Pair.sol) {#in-the-core-contract-uniswapv2pairsol-2} +#### Nel contratto principale (UniswapV2Pair.sol) {#in-the-core-contract-uniswapv2pairsol-2}5. Verifica che il contratto principale non raggiri il sistema e possa mantenere liquidità sufficiente dopo lo scambio. -5. Verifica che il contratto principale non raggiri il sistema e possa mantenere liquidità sufficiente dopo lo scambio. 6. Vede quanti token aggiuntivi abbiamo, in aggiunta alle riserve note. Quell'importo è il numero di token di input ricevuti da scambiare. 7. Invia i token d'output alla destinazione. 8. Chiama `_update` per aggiornare gli importi della riserva @@ -743,7 +742,7 @@ Questa è la funzione principale della factory, per creare uno scambio in pari t (address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA); ``` -Vogliamo che l'indirizzo del nuovo scambio sia deterministico, quindi calcolabile in anticipo al di fuori della catena (questo può essere utile per le [transazioni di livello 2](/developers/docs/layer-2-scaling/)). Per farlo, dobbiamo avere un ordine coerente degli indirizzi del token, indipendentemente dall'ordine in cui li abbiamo ricevuti, quindi li ordiniamo qui. +Vogliamo che l'indirizzo del nuovo scambio sia deterministico, quindi calcolabile in anticipo al di fuori della catena (questo può essere utile per le [transazioni di livello 2](/developers/docs/scaling/)). Per farlo, dobbiamo avere un ordine coerente degli indirizzi del token, indipendentemente dall'ordine in cui li abbiamo ricevuti, quindi li ordiniamo qui. ```solidity require(token0 != address(0), 'UniswapV2: ZERO_ADDRESS'); diff --git a/public/content/translations/it/developers/tutorials/using-websockets/index.md b/public/content/translations/it/developers/tutorials/using-websockets/index.md index 892853e0405..f96fc83dfca 100644 --- a/public/content/translations/it/developers/tutorials/using-websockets/index.md +++ b/public/content/translations/it/developers/tutorials/using-websockets/index.md @@ -9,8 +9,8 @@ tags: - "query" - "javascript" skill: beginner -source: documentazione Alchemy -sourceUrl: https://docs.alchemyapi.io/guides/using-websockets +source: Alchemy docs +sourceUrl: https://www.alchemy.com/docs/reference/best-practices-for-using-websockets-in-web3 published: 2020-12-01 --- diff --git a/public/content/translations/it/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md b/public/content/translations/it/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md index bec9d55112b..676f647e349 100644 --- a/public/content/translations/it/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md +++ b/public/content/translations/it/developers/tutorials/waffle-dynamic-mocking-and-testing-calls/index.md @@ -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/waffle-test-simple-smart-contract/) diff --git a/public/content/translations/it/developers/tutorials/waffle-test-simple-smart-contract/index.md b/public/content/translations/it/developers/tutorials/waffle-test-simple-smart-contract/index.md index d440693878a..6b30dec8150 100644 --- a/public/content/translations/it/developers/tutorials/waffle-test-simple-smart-contract/index.md +++ b/public/content/translations/it/developers/tutorials/waffle-test-simple-smart-contract/index.md @@ -30,7 +30,6 @@ published: 2021-02-26 Il tutorial dimostra la configurazione di prova e opera utilizzando yarn, ma non ci sono problemi se preferisci npm: fornirò gli adeguati riferimenti alla [documentazione](https://ethereum-waffle.readthedocs.io/en/latest/index.html) ufficiale di Waffle. ### Installa dipendenze {#install-dependencies} - [Aggiungi](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#installation) ethereum-waffle e le dipendenze di TypeScript alle dipendenze di sviluppo del tuo progetto. ```bash @@ -38,7 +37,6 @@ yarn add --dev ethereum-waffle ts-node typescript @types/jest ``` ### Esempio di contratto intelligente {#example-smart-contract} - Durante il tutorial lavoreremo a un esempio di contratto intelligente semplice: EtherSplitter. Non fa molto, tranne che consentire a chiunque di inviare wei e dividerli uniformemente tra due destinatari predefiniti. La funzione di divisione richiede che il numero di wei sia pari, altrimenti si ripristinerà. Per entrambi i destinatari esegue un trasferimento di wei, seguito dall'emissione dell'evento Trasferimento. Posiziona il frammento del codice di EtherSplitter in `src/EtherSplitter.sol`. @@ -68,7 +66,6 @@ contract EtherSplitter { ``` ### Compila il contratto {#compile-the-contract} - Per [compilare](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#compiling-the-contract) il contratto, aggiungi il seguente elemento al file package.json: ```json @@ -91,7 +88,6 @@ Poi, crea un file di configurazione di Waffle nella cartella di root del progett Esegui `yarn build`. Di conseguenza, la cartella `build` apparirà con il contratto compilato di EtherSplitter nel formato JSON. ### Testare la configurazione {#test-setup} - Testare con Waffle richiede l'utilizzo di abbinatori Chai e Mocha, quindi, devi [aggiungerli](https://ethereum-waffle.readthedocs.io/en/latest/getting-started.html#writing-tests) al tuo progetto. Aggiorna il tuo file package.json e aggiungi l'elemento `test` nella parte degli script: ```json @@ -135,7 +131,6 @@ Solo due parole prima di iniziare. `MockProvider` offre una versione fittizia de Quindi, dichiariamo una variabile detta "splitter" (divisore), che è il nostro contratto fittizio EtherSplitter. È creato prima di ogni esecuzione di un singolo test dal metodo `deployContract`. Questo metodo simula la distribuzione di un contratto dal portafoglio passato come primo parametro (nel nostro caso, il portafoglio del mittente). Il secondo parametro è l'ABI e il bytecode del contratto testato; qui, passiamo il file json del contratto compilato EtherSplitter dalla cartella `build`. Il terzo parametro è un insieme con gli argomenti del costruttore del contratto che, nel nostro caso, sono gli indirizzi dei due destinatari. ### changeBalances {#changebalances} - Prima controlleremo se il metodo di divisione modifica effettivamente i saldi dei portafogli dei destinatari. Se dividiamo 50 wei dall'account del mittente, i saldi di entrambi i destinatari dovrebbero aumentare di 25 wei. Utilizzeremo l'abbinatore di Waffle "`changeBalances`: ```ts @@ -163,7 +158,6 @@ Nota che in entrambi i casi di `changeBalance` e `changeBalances`, passiamo la f Poi, testeremo se l'evento Trasferimento è stato emesso dopo ogni trasferimento di wei. Ci rivolgeremo a un altro abbinatore da Waffle: ### Emetti {#emit} - ```ts it("Emits event on the transfer to the first receiver", async () => { await expect(splitter.split({ value: 50 })) @@ -181,7 +175,6 @@ it("Emits event on the transfer to the second receiver", async () => { L'abbinatore `emit` ci consente di verificare se un contratto ha emesso un evento alla chiamata di un metodo. Come parametri all'abbinatore `emit`, forniamo il contratto fittizio che prevediamo emetterà l'evento, insieme al nome di tale evento. Nel nostro caso, il contratto fittizio è `splitter` e il nome dell'evento è `Trasferimento`. Inoltre, possiamo verificare i valori precisi degli argomenti con cui è stato emesso l'evento; passiamo altrettanti argomenti all'abbinatore `withArgs`, come previsto dalla dichiarazione del nostro evento. Nel caso del contratto EtherSplitter, passiamo gli indirizzi del mittente e del destinatario insieme all'importo trasferito di wei. ### revertedWith {#revertedwith} - Come ultimo esempio verificheremo se la transazione è stata ripristinata, nel caso di un numero dispari di wei. Utilizzeremo l'abbinatore `revertedWith`: ```ts diff --git a/public/content/translations/it/ethereum-forks/index.md b/public/content/translations/it/ethereum-forks/index.md index d5f6252e37c..b3a41fd3001 100644 --- a/public/content/translations/it/ethereum-forks/index.md +++ b/public/content/translations/it/ethereum-forks/index.md @@ -16,7 +16,6 @@ Le diramazioni si verificano quando è necessario apportare importanti aggiornam Quando sono necessari aggiornamenti in software tradizionali controllati centralmente, l'azienda pubblica una nuova versione per l'utente finale. Le blockchain funzionano diversamente perché non esiste una proprietà centrale. I [client di Ethereum](/developers/docs/nodes-and-clients/) devono aggiornare il proprio software e implementare le regole della nuova diramazione. Inoltre i creatori dei blocchi (miner in contesto Proof of Work e validatori in contesto Proof of Stake) e i nodi devono creare blocchi e convalidarli in base alle nuove regole. [Maggiori informazioni sui meccanismi di consenso](/developers/docs/consensus-mechanisms/) Queste modifiche alle regole potrebbero creare una divisione temporanea nella rete. I nuovi blocchi potrebbero essere creati in base alle nuove regole o a quelle vecchie. Le diramazioni di solito sono concordate in anticipo in modo che i client adottino le modifiche all'unisono e la diramazione legata agli upgrade diventi la catena principale. Tuttavia, in rari casi, disaccordi sulle diramazioni possono causare una divisione permanente della rete, come è successo con la creazione di Ethereum Classic con la diramazione DAO. - @@ -59,7 +58,6 @@ Gli aggiornamenti dei livelli di esecuzione e di consenso erano inizialmente dis | ----------------- | ----------------- | ---------- | | Shanghai | Capella | "Shapella" | | Cancun | Deneb | "Dencun" | - Salta direttamente alle informazioni su alcuni degli ultimi aggiornamenti particolarmente importanti: [La Beacon Chain](/roadmap/beacon-chain/); [La Fusione](/roadmap/merge/) ed [EIP-1559](#london) @@ -68,13 +66,13 @@ Stai cercando i prossimi aggiornamenti di protocollo? [Scopri di più sui prossi -## 2024 {#2024} +## 2024 {#2025} -### Cancun-Deneb ("Dencun") {#dencun} +### Cancun-Deneb ("Dencun") {#fusaka} -#### Riepilogo di Cancun {#cancun-summary} +#### Riepilogo di Cancun {#pectra} L'aggiornamento di Cancun contiene una serie di miglioramenti all'_esecuzione_ di Ethereum, mirati a migliorarne la scalabilità, in tandem con gli aggiornamenti al consenso di Deneb. @@ -90,7 +88,6 @@ Notevolmente, include l'EIP-4844, nota come **Proto-Danksharding**, che riduce s
  • EIP-6780: SELFDESTRUCT soltanto nella stessa transazione
  • EIP-7516: Codice operativo BLOBBASEFEE
  • - - [Rollup del Livello 2](/layer-2/) @@ -98,7 +95,7 @@ Notevolmente, include l'EIP-4844, nota come **Proto-Danksharding**, che riduce s - [Danksharding](/roadmap/danksharding/) - [Leggi le specifiche dell'aggiornamento di Cancun](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/cancun.md) -#### Riepilogo di Deneb {#deneb-summary} +#### Riepilogo di Deneb {#2024} L'aggiornamento di Deneb contiene una serie di miglioramenti al _consenso_ di Ethereum, mirati a migliorarne la scalabilità. Questo aggiornamento è in tandem con gli aggiornamenti del livello di esecuzione Cancun per consentire il Proto-Danksharding (EIP-4844), insieme ad altri miglioramenti alla Beacon Chain. @@ -115,7 +112,6 @@ EIP-7514 comporta un rafforzamento dell'emissione di ETH, limitando il tasso di
  • EIP-7045: Aumento degli slot massimi di inclusione dell'attestazione
  • EIP-7514: Aggiunta del limite massimo di churn per epoca
  • - - [Leggi le specifiche dell'aggiornamento di Deneb](https://github.com/ethereum/consensus-specs/blob/dev/specs/deneb/) @@ -123,13 +119,13 @@ EIP-7514 comporta un rafforzamento dell'emissione di ETH, limitando il tasso di -## 2023 {#2023} +## 2023 {#dencun} -### Shanghai-Capella ("Shapella") {#shapella} +### Shanghai-Capella ("Shapella") {#cancun-summary} -#### Riepilogo di Shanghai {#shanghai-summary} +#### Riepilogo di Shanghai {#deneb-summary} L'aggiornamento di Shanghai ha portato i prelievi di staking al livello d'esecuzione. Insieme all'aggiornamento Capella, questo abiliterà i blocchi ad accettare le operazioni di prelievo, che consentono agli staker di prelevare i propri ETH dalla Beacon Chain al livello d'esecuzione. @@ -142,12 +138,11 @@ L'aggiornamento di Shanghai ha portato i prelievi di staking al livello d'esecuz
  • EIP-4895La Beacon Chain lancia i prelievi come operazioni
  • EIP-6049 - Depreca SELFDESTRUCT
  • - - [Leggi le specifiche dell'aggiornamento Shanghai](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/shanghai.md) -#### Riepilogo di Capella {#capella-summary} +#### Riepilogo di Capella {#2023} L'aggiornamento di Capella è il terzo aggiornamento principale al livello del consenso (Beacon Chain) e ha abilitato i prelievi di staking. Capella è avvenuto contemporaneamente all'aggiornamento del livello di esecuzione di Shanghai, e ha reso disponibili le funzioni di prelievo da staking. @@ -160,13 +155,13 @@ L'aggiornamento, inoltre, ha fornito la funzionalità di pulizia automatica dei -## 2022 {#2022} +## 2022 {#shapella} -### Paris (la Fusione) {#paris} +### Paris (la Fusione) {#shanghai-summary} -#### Riepilogo {#paris-summary} +#### Riepilogo {#capella-summary} L'aggiornamento Paris è stato attivato dal passaggio da una blockchain proof-of-work di una [difficoltà totale terminale](/glossary/#terminal-total-difficulty) di 58750000000000000000000. Questo è avvenuto al blocco 15537393 il 15 settembre 2022, innescando l'aggiornamento Paris dal blocco successivo. Paris è stata la transizione [alla Fusione](/roadmap/merge/): la sua caratteristica principale è lo spegnimento dell'algoritmo di mining [proof-of-work](/developers/docs/consensus-mechanisms/pow) e della relativa logica di consenso, e l'attivazione della [proof-of-stake](/developers/docs/consensus-mechanisms/pos). Paris è stata un aggiornamento ai [client di esecuzione](/developers/docs/nodes-and-clients/#execution-clients) (equivalente a Bellatrix a livello di consenso) che ha permesso loro di ricevere istruzioni dai loro [client di consenso](/developers/docs/nodes-and-clients/#consensus-clients) collegati. Questo ha richiesto l'attivazione di una nuova serie di metodi API interni, collettivamente noti come l'[API Engine](https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md). Questo è stato probabilmente l'aggiornamento più significativo nella storia di Ethereum dopo [Homestead](#homestead)! @@ -178,16 +173,15 @@ L'aggiornamento Paris è stato attivato dal passaggio da una blockchain proof-of
  • EIP-3675Aggiorna il consenso al Proof-of-Stake
  • EIP-4399Sostituisce l'opcode DIFFICULTY con PREVRANDAO
  • - --- -### Bellatrix {#bellatrix} +### Bellatrix {#2022} -#### Riepilogo {#bellatrix-summary} +#### Riepilogo {#paris} L'aggiornamento Bellatrix è stato il secondo aggiornamento programmato per la [Beacon Chain](/roadmap/beacon-chain), preparando la catena per [la Fusione](/roadmap/merge/). Porta le penalità dei validatori al valore pieno per inattività e azioni sanzionabili (slashing). Bellatrix include anche un aggiornamento alle regole di scelta della diramazione per preparare la catena per la Fusione e la transizione dall'ultimo blocco di proof-of-work al primo blocco proof-of-stake. A tale scopo occorre far sì che i client di consenso siano consapevoli della [difficoltà terminale totale](/glossary/#terminal-total-difficulty) di 58750000000000000000000. @@ -195,11 +189,11 @@ L'aggiornamento Bellatrix è stato il secondo aggiornamento programmato per la [ --- -### Gray Glacier {#gray-glacier} +### Gray Glacier {#paris-summary} -#### Riepilogo {#gray-glacier-summary} +#### Riepilogo {#bellatrix} L'aggiornamento della rete di Gray Glacier ha rimandato di tre mesi la [bomba di difficoltà](/glossary/#difficulty-bomb). Questa è l'unica modifica introdotta in questo aggiornamento ed è simile per natura agli aggiornamenti di [Arrow Glacier](#arrow-glacier) e [Muir Glacier](#muir-glacier). Modifiche simili sono state effettuate sugli aggiornamenti di rete [Byzantium](#byzantium), [Constantinople](#constantinople) e [London](#london). @@ -210,18 +204,17 @@ L'aggiornamento della rete di Gray Glacier ha rimandato di tre mesi la [bomba di
    • EIP-5133ritarda la bomba di difficoltà fino a settembre 2022
    - -## 2021 {#2021} +## 2021 {#bellatrix-summary} -### Arrow Glacier {#arrow-glacier} +### Arrow Glacier {#gray-glacier} -#### Riepilogo {#arrow-glacier-summary} +#### Riepilogo {#gray-glacier-summary} L'aggiornamento di rete Arrow Glacier ha rimandato la [bomba di difficoltà](/glossary/#difficulty-bomb) di diversi mesi. Questo è l'unico cambiamento introdotto in questo aggiornamento, ed è simile nella sostanza all'aggiornamento [Muir Glacier](#muir-glacier). Modifiche simili sono state effettuate sugli aggiornamenti di rete [Byzantium](#byzantium), [Constantinople](#constantinople) e [London](#london). @@ -233,22 +226,21 @@ L'aggiornamento di rete Arrow Glacier ha rimandato la [bomba di difficoltà](/gl
    • EIP-4345ritarda la bomba di difficoltà fino a giugno 2022
    - --- -### Altair {#altair} +### Altair {#2021} -#### Riepilogo {#altair-summary} +#### Riepilogo {#arrow-glacier} L'aggiornamento Altair è stato il primo aggiornamento pianificato per la [Beacon Chain](/roadmap/beacon-chain). Ha aggiunto il supporto per le "commissioni di sincronizzazione", abilitando i "client leggeri", aumentando le penalità per inattività e slashing per i validatori man mano che lo sviluppo procedeva verso la Fusione. - [Leggi le specifiche dell'aggiornamento di Altair](https://github.com/ethereum/consensus-specs/tree/dev/specs/altair) -#### Curiosità! {#altair-fun-fact} +#### Curiosità! {#arrow-glacier-summary} Altair è stato il primo importante aggiornamento di rete che ha avuto un tempo di rollout esatto. Tutti gli aggiornamenti precedenti erano basati su un numero di blocco dichiarato su una catena proof-of-work, dove i tempi del blocco variavano. La Beacon Chain non richiede la risoluzione del proof-of-work e funziona invece su un sistema di epoche basato sul tempo che consiste in 32 "slot" di dodici secondi in cui i validatori possono proporre dei blocchi. Questo è il motivo per cui sapevamo esattamente quando avremmo raggiunto l'epoca 74.240 e Altair sarebbe diventato operativo! @@ -256,15 +248,15 @@ Altair è stato il primo importante aggiornamento di rete che ha avuto un tempo --- -### London {#london} +### London {#altair} -#### Riepilogo {#london-summary} +#### Riepilogo {#altair-summary} L'aggiornamento London ha introdotto l'[EIP-1559](https://eips.ethereum.org/EIPS/eip-1559), che ha riformato il mercato delle commissioni sulle transazioni, oltre a modificare come sono gestiti i rimborsi di carburante e la pianificazione di [Ice Age](/glossary/#ice-age). -#### Cos'è l'Aggiornamento di Londra / EIP-1559? {#eip-1559} +#### Cos'è l'Aggiornamento di Londra / EIP-1559? {#altair-fun-fact} Prima dell'Aggiornamento di Londra, Ethereum disponeva di blocchi di dimensioni fisse. Nei momenti di elevata domanda di rete, questi blocchi operavano a piena capacità. Di conseguenza, gli utenti devono spesso attendere che la domanda si riduca per essere inclusi in un blocco, il che ha portato a una scadente esperienza degli utenti. L'Aggiornamento di Londra ha introdotto blocchi di dimensioni variabili a Ethereum. @@ -291,16 +283,15 @@ Questo video spiega l'EIP-1559 e i benefici che comporta: [EIP-1559 Explained](h
  • EIP-3541 - impedisce la distribuzione dei contratti che iniziano con 0xEF
  • EIP-3554ritarda l'Era Glaciale fino a dicembre 2021
  • - --- -### Berlin {#berlin} +### Berlin {#london} -#### Riepilogo {#berlin-summary} +#### Riepilogo {#london-summary} L'aggiornamento Berlin ha ottimizzato i costi del carburante per certe azioni dell'EVM e ha aumentato il supporto per vari tipi di transazioni. @@ -315,18 +306,17 @@ L'aggiornamento Berlin ha ottimizzato i costi del carburante per certe azioni de
  • EIP-2929il costo del carburante aumenta per gli opcode d'accesso allo stato
  • EIP-2930aggiunge elenchi d'accesso facoltativi
  • - -## 2020 {#2020} +## 2020 {#eip-1559} -### Genesi della Beacon Chain {#beacon-chain-genesis} +### Genesi della Beacon Chain {#berlin} -#### Riepilogo {#beacon-chain-genesis-summary} +#### Riepilogo {#berlin-summary} La [Beacon Chain](/roadmap/beacon-chain/) necessita di 16384 depositi da 32 ETH di staking per poter funzionare in sicurezza. Questo è successo il 27 novembre, quindi la Beacon Chain ha iniziato a produrre blocchi il 1° dicembre 2020. Questa è una prima fase importante nel percorso per raggiungere la [visione di Ethereum](/roadmap/vision/). @@ -338,11 +328,11 @@ La [Beacon Chain](/roadmap/beacon-chain/) necessita di 16384 depositi da 32 ETH --- -### Distribuzione del contratto di deposito in staking {#staking-deposit-contract} +### Distribuzione del contratto di deposito in staking {#2020} -#### Riepilogo {#deposit-contract-summary} +#### Riepilogo {#beacon-chain-genesis} Il contratto di deposito in staking ha introdotto lo [staking](/glossary/#staking) all'ecosistema di Ethereum. Nonostante fosse un contratto della [Rete principale](/glossary/#mainnet), ha avuto un impatto diretto sulla linea temporale per il lancio della [Beacon Chain](/roadmap/beacon-chain/), un importante [aggiornamento di Ethereum](/roadmap/). @@ -354,11 +344,11 @@ Il contratto di deposito in staking ha introdotto lo [staking](/glossary/#stakin --- -### Muir Glacier {#muir-glacier} +### Muir Glacier {#beacon-chain-genesis-summary} -#### Riepilogo {#muir-glacier-summary} +#### Riepilogo {#staking-deposit-contract} La diramazione Muir Glacier ha introdotto un ritardo nella [bomba di difficoltà](/glossary/#difficulty-bomb). Aumenta la difficoltà del blocco del meccanismo di consenso [Proof-of-Work](/developers/docs/consensus-mechanisms/pow/), che rischiava di peggiorare l'utilizzabilità di Ethereum, aumentando i tempi d'attesa per l'invio delle transazioni e l'uso delle dapp. @@ -370,18 +360,17 @@ La diramazione Muir Glacier ha introdotto un ritardo nella [bomba di difficoltà
    • EIP-2384ritarda la bomba di difficoltà per altri 4.000.000 blocchi, o circa 611 giorni.
    - -## 2019 {#2019} +## 2019 {#deposit-contract-summary} -### Istanbul {#istanbul} +### Istanbul {#muir-glacier} -#### Riepilogo {#istanbul-summary} +#### Riepilogo {#muir-glacier-summary} La diramazione Instanbul: @@ -403,16 +392,15 @@ La diramazione Instanbul:
  • EIP-2028riduce il costo di CallData per consentire più dati nei blocchi, buono per il [ridimensionamento del Livello 2](/developers/docs/scaling/#layer-2-scaling).
  • EIP-2200altre alterazioni del prezzo del carburante dell'opcode.
  • - --- -### Constantinople {#constantinople} +### Constantinople {#2019} -#### Riepilogo {#constantinople-summary} +#### Riepilogo {#istanbul} La diramazione Constantinople: @@ -431,18 +419,17 @@ La diramazione Constantinople:
  • EIP-1052: Introduce l'istruzione EXTCODEHASH per recuperare l'hash del codice di un altro contratto.
  • EIP-1234assicura che la blockchain non si congeli prima del proof-of-stake e riduce la ricompensa per blocco da 3 a 2 ETH.
  • - -## 2017 {#2017} +## 2017 {#istanbul-summary} -### Byzantium {#byzantium} +### Byzantium {#constantinople} -#### Riepilogo {#byzantium-summary} +#### Riepilogo {#constantinople-summary} La diramazione Byzantium: @@ -466,18 +453,17 @@ La diramazione Byzantium:
  • EIP-100modifica la formula di regolazione della difficoltà.
  • EIP-649ritarda la [bomba di difficoltà](/glossary/#difficulty-bomb) di 1 anno e riduce la ricompensa del blocco da 5 a 3 ETH.
  • - -## 2016 {#2016} +## 2016 {#2017} -### Spurious Dragon {#spurious-dragon} +### Spurious Dragon {#byzantium} -#### Riepilogo {#spurious-dragon-summary} +#### Riepilogo {#byzantium-summary} La diramazione Spurious Dragon è stata la seconda risposta agli attacchi denial of service (DoS) sulla rete (settembre/ottobre 2016) e ha reso possibile, tra l'altro: @@ -495,16 +481,15 @@ La diramazione Spurious Dragon è stata la seconda risposta agli attacchi denial
  • EIP-161consente la rimozione dei conti vuoti aggiunti tramite attacchi DoS.
  • EIP-170modifica la dimensione massima del codice che un contratto sulla blockchain può avere, a 24576 byte.
  • - --- -### Tangerine Whistle {#tangerine-whistle} +### Tangerine Whistle {#2016} -#### Riepilogo {#tangerine-whistle-summary} +#### Riepilogo {#spurious-dragon} La diramazione Tangerine Whistle è stata la prima risposta agli attacchi di denial of service (DoS) alla rete (settembre/ottobre 2016) e ha incluso: @@ -518,16 +503,15 @@ La diramazione Tangerine Whistle è stata la prima risposta agli attacchi di den
  • EIP-150aumenta i costi del carburante degli opcode utilizzabili negli attacchi di spam.
  • EIP-158riduce le dimensioni di stato rimuovendo un gran numero di conti vuoti messi nello stato a costo bassissimo a causa di bug nelle versioni precedenti del protocollo di Ethereum.
  • - --- -### Diramazione OAD {#dao-fork} +### Diramazione OAD {#spurious-dragon-summary} -#### Riepilogo {#dao-fork-summary} +#### Riepilogo {#tangerine-whistle} La diramazione OAD è stata pensata come risposta all'[attacco OAD del 2016](https://www.coindesk.com/learn/understanding-the-dao-attack/), durante il quale un contratto [OAD](/glossary/#dao) non protetto è stato privato di oltre 3,6 milioni di ETH in un solo attacco. La diramazione ha spostato i fondi dal contratto difettoso a un [nuovo contratto](https://etherscan.io/address/0xbf4ed7b27f1d666546e30d74d50d173d20bca754) con una sola funzione: il prelievo. Chi aveva perso fondi ha potuto prelevare 1 ETH per ogni 100 token OAD nel proprio portafoglio. @@ -539,11 +523,11 @@ Alcuni miner rifiutarono di creare la diramazione perché l'incidente DAO non er --- -### Homestead {#homestead} +### Homestead {#tangerine-whistle-summary} -#### Riepilogo {#homestead-summary} +#### Riepilogo {#dao-fork} La diramazione Homestead guardava al futuro. Includeva diverse modifiche al protocollo e un cambiamento che ha dato a Ethereum la possibilità di eseguire ulteriori aggiornamenti della rete. @@ -556,18 +540,17 @@ La diramazione Homestead guardava al futuro. Includeva diverse modifiche al prot
  • EIP-7aggiunge il nuovo opcode: DELEGATECALL
  • EIP-8introduce i requisiti di compatibilità progressiva a devp2p
  • - -## 2015 {#2015} +## 2015 {#dao-fork-summary} -### Frontier thawing {#frontier-thawing} +### Frontier thawing {#homestead} -#### Riepilogo {#frontier-thawing-summary} +#### Riepilogo {#homestead-summary} La diramazione Frontier Thawing ha innalzato il limite di 5.000 [gas](/glossary/#gas) per [blocco](/glossary/#block) e ha impostato il prezzo predefinito del gas a 51 [gwei](/glossary/#gwei). Ciò ha reso possibili le transazioni, che richiedono 21.000 gas. La [bomba di difficoltà](/glossary/#difficulty-bomb) è stata introdotta per assicurare una hard-fork futura verso il [proof-of-stake](/glossary/#pos). @@ -576,11 +559,11 @@ La diramazione Frontier Thawing ha innalzato il limite di 5.000 [gas](/glossary/ --- -### Frontier {#frontier} +### Frontier {#2015} -#### Riepilogo {#frontier-summary} +#### Riepilogo {#frontier-thawing} Frontier è stata un'implementazione operativa ma rudimentale del progetto Ethereum. È seguita alla positiva fase di test Olympic. Era destinata agli utenti tecnici, in particolare gli sviluppatori. I [blocchi](/glossary/#block) avevano un limite di 5.000 [gas](/glossary/#gas). Questo periodo di "disgelo" (dall'inglese thawing) ha consentito ai miner di iniziare la propria operatività e ai primi utilizzatori di installare i client senza fretta. @@ -588,9 +571,9 @@ Frontier è stata un'implementazione operativa ma rudimentale del progetto Ether -## 2014 {#2014} +## 2014 {#frontier-thawing-summary} -### Vendita di Ether {#ether-sale} +### Vendita di Ether {#frontier} @@ -600,7 +583,7 @@ Ether fu ufficialmente messo in vendita per 42 giorni. Lo potresti acquistare in --- -### Pubblicazione dello yellowpaper {#yellowpaper} +### Pubblicazione dello yellowpaper {#frontier-summary} @@ -610,9 +593,9 @@ Lo Yellow Paper, redatto dal dott. Gavin Wood, è una definizione tecnica del pr -## 2013 {#2013} +## 2013 {#2014} -### Pubblicazione del whitepaper {#whitepaper} +### Pubblicazione del whitepaper {#ether-sale} diff --git a/public/content/translations/it/foundation/index.md b/public/content/translations/it/foundation/index.md index c742def2847..d1560ff071c 100644 --- a/public/content/translations/it/foundation/index.md +++ b/public/content/translations/it/foundation/index.md @@ -1,11 +1,11 @@ --- title: Ethereum Foundation -description: Scopri di più sulla Ethereum Foundation (EF), un'organizzazione no-profit dedita al supporto di Ethereum e delle tecnologie correlate. +description: "Scopri di più sulla Ethereum Foundation (EF), un'organizzazione no-profit dedita al supporto di Ethereum e delle tecnologie correlate." hideEditButton: true lang: it --- -# Informazioni sulla Ethereum Foundation {#about-the-ethereum-foundation} +# Informazioni sulla Ethereum Foundation {#ethereum-foundation} @@ -13,16 +13,14 @@ La [Ethereum Foundation](http://ethereum.foundation/) (EF) è un'organizzazione Non è un'azienda, né una no-profit tradizionale. Il suo ruolo non è quello di controllare o guidare Ethereum, e non è l'unica organizzazione che finanzia lo sviluppo critico delle tecnologie correlate a Ethereum. L'EF fa parte di un [ecosistema](/community/) molto più ampio. -## Iniziative dell'Ethereum Foundation {#ethereum-foundation-initiatives} - -### Programma di supporto dell'ecosistema {#ecosystem-support-program} +## Iniziative dell'Ethereum Foundation {#what-the-ef-does} +### Programma di supporto dell'ecosistema {#programs-and-initiatives} Il [programma di supporto dell'ecosistema](https://esp.ethereum.foundation/) esiste per dare sostegno sia finanziario che non a progetti ed entità all'interno di tutta la community Ethereum, con lo scopo di accelerare la crescita dell'ecosistema. È un'espansione dell'originario Ethereum Grants Program, che si concentrava soprattutto sul supporto finanziario. Scopri di più sul programma di supporto dell'ecosistema, sui destinatari delle sovvenzioni passati e sul processo di candidatura per le sovvenzioni su [esp.ethereum.foundation](https://esp.ethereum.foundation/). Puoi anche consultare l'[Ecosystem Support Program Blog](https://blog.ethereum.org/category/ecosystem-support-program/) o seguire [@EF_ESP](https://twitter.com/EF_ESP) per rimanere al passo con gli ultimi annunci e le notizie più recenti. -### Devcon {#devcon} - +### Devcon {#learn-more} Fin dal 2014, Ethereum Foundation ha organizzato Devcon, la conferenza annuale per tutti gli sviluppatori Ethereum, i ricercatori, i creatori e i pensatori. Puoi accedere ai contenuti video o alle conferenze di ogni anno, a partire da quello di creazione, su [archive.devcon.org](https://archive.devcon.org/). diff --git a/public/content/translations/it/governance/index.md b/public/content/translations/it/governance/index.md index 21a0a339cf5..fc1dff16672 100644 --- a/public/content/translations/it/governance/index.md +++ b/public/content/translations/it/governance/index.md @@ -22,7 +22,7 @@ Nessuna persona possiede o controlla il protocollo Ethereum, ma è comunque nece 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} +### Governance on-chain e off-chain {#onchain-vs-offchain} La tecnologia blockchain rende possibili nuove modalità di governance, conosciute come governance on-chain. Per governance on-chain si intende che le proposte di modifica al protocollo sono decise tramite il voto degli stakeholder, che in genere detengono un governance token, e la votazione avviene sulla blockchain. In alcune forme di governance on-chain, le modifiche proposte al protocollo sono già scritte nel codice e vengono implementate automaticamente nel caso in cui vengano approvate dagli stakeholder tramite la sottoscrizione di una transazione. diff --git a/public/content/translations/it/guides/how-to-create-an-ethereum-account/index.md b/public/content/translations/it/guides/how-to-create-an-ethereum-account/index.md index b171b3ceb04..245478be491 100644 --- a/public/content/translations/it/guides/how-to-create-an-ethereum-account/index.md +++ b/public/content/translations/it/guides/how-to-create-an-ethereum-account/index.md @@ -47,7 +47,7 @@ Alcune applicazioni chiederanno di salvare una "frase di recupero" segreta (a vo Come utilizzare un portafoglio - + diff --git a/public/content/translations/it/guides/how-to-id-scam-tokens/index.md b/public/content/translations/it/guides/how-to-id-scam-tokens/index.md index 3af9b81af23..ad4b9dc7072 100644 --- a/public/content/translations/it/guides/how-to-id-scam-tokens/index.md +++ b/public/content/translations/it/guides/how-to-id-scam-tokens/index.md @@ -20,7 +20,6 @@ title="Cosa è ARB?" contentPreview=''> Arbitrum è un'organizzazione che sviluppa e gestisce [rollup ottimistici](/developers/docs/scaling/optimistic-rollups/). Inizialmente Arbitrum era organizzata come società a scopo di lucro, ma poi ha preso provvedimenti per decentralizzarsi. Nell'ambito di questo processo, hanno emesso un [token di governance](/dao/#token-based-membership) negoziabile. - In Ethereum esiste una convenzione per cui, quando una risorsa non è conforme a ERC-20, ne viene creata una versione "wrapped" con il nome che inizia con "w". Quindi, ad esempio, abbiamo wBTC per bitcoin e wETH per ether. Non ha senso creare una versione wrapped di un token ERC-20 già presente su Ethereum, ma i truffatori si basano sull'apparenza di legittimità piuttosto che sulla realtà sottostante. - ## Come funzionano i token truffa? {#how-do-scam-tokens-work} @@ -42,7 +40,6 @@ title="Cosa sono i contratti intelligenti?" contentPreview=''> [I contratti intelligenti](/developers/docs/smart-contracts/) sono i programmi che vengono eseguiti sulla blockchain di Ethereum. Ogni token ERC-20, ad esempio, è implementato come un contratto intelligente. - In particolare, Arbitrum ha distribuito un contratto che utilizza il simbolo `ARB`. Ma questo non impedisce ad altre persone di distribuire un contratto che utilizza lo stesso simbolo o uno simile. Chiunque scriva il contratto può stabilire ciò che il contratto farà. diff --git a/public/content/translations/it/nft/index.md b/public/content/translations/it/nft/index.md index 3279ce0720f..a9ad889f49d 100644 --- a/public/content/translations/it/nft/index.md +++ b/public/content/translations/it/nft/index.md @@ -5,11 +5,11 @@ description: Una panoramica dei NFT su Ethereum lang: it template: use-cases emoji: ":frame_with_picture:" -sidebarDepth: 3 +sidebarDepth: 2 image: /images/infrastructure_transparent.png alt: Un logo Eth visualizzato tramite ologramma. summaryPoint1: Un modo pe rappresentare qualsiasi cosa sia univoca, come una risorsa basata su Ethereum. -summaryPoint2: I NFT stanno dando ai creatori di contenuti più potere che mai. +summaryPoint2: "I NFT stanno dando ai creatori di contenuti più potere che mai." summaryPoint3: Basati sui contratti intelligenti, sulla blockchain di Ethereum. --- diff --git a/public/content/translations/it/roadmap/account-abstraction/index.md b/public/content/translations/it/roadmap/account-abstraction/index.md index 8695d3cd058..11786ab121e 100644 --- a/public/content/translations/it/roadmap/account-abstraction/index.md +++ b/public/content/translations/it/roadmap/account-abstraction/index.md @@ -1,6 +1,6 @@ --- title: Astrazione account -description: Una panoramica dei piani di Ethereum per rendere i conti degli utenti più semplici e sicuri +description: "Una panoramica dei piani di Ethereum per rendere i conti degli utenti più semplici e sicuri" lang: it summaryPoints: - L'astrazione del conto semplifica molto la creazione di portafogli di contratti intelligenti @@ -61,7 +61,6 @@ La gestione del gas, inoltre, è di molto migliorata con l'astrazione del conto. La gestione del gas è una delle frizioni principali per gli utenti di Ethereum, principalmente perché gli ETH sono la sola risorsa utilizzabile per pagare le transazioni. Immagina di avere un portafoglio con un saldo di USDC, ma nessun ETH. Non puoi spostare o scambiare quei token USDC, poiché non puoi pagare il gas. Non puoi nemmeno scambiare gli USDC per ETH, poiché anche questo costa del gas. Dovresti inviare altri ETH al tuo conto da una piattaforma di scambio o da un altro indirizzo per risolvere il problema. Con i portafogli di contratti intelligenti, invece, puoi semplicemente pagare il gas in USDC, liberando il tuo conto. Non devi più mantenere un saldo di ETH in tutti i tuoi conti. L'astrazione del conto, inoltre, consente agli sviluppatori di dapp di essere creativi con la gestione del gas. Ad esempio, potresti riuscire a iniziare a pagare una commissione fissa mensile alla tua DEX preferita, per delle transazioni illimitate. Le Dapp potrebbero offrire di pagare tutte le tue commissioni di gas per conto tuo, come ricompensa per aver utilizzato la loro piattaforma, o come offerta di inserimento. Per gli sviluppatori, sarebbe molto più facile innovare sul gas, quando i portafogli di contratti intelligenti sono supportati al livello del protocollo. - Le sessioni fidate, inoltre, sono potenzialmente trasformative per le esperienze degli utenti, specialmente per applicazioni come il gaming, in cui grandi numeri di piccole transazioni, potrebbero necessitare dell'approvazione in un breve tempo. Approvare individualmente ogni transazione spezzerebbe l'esperienza di gioco, ma l'approvazione permanente non è sicura. Il portafoglio di un contratto intelligente potrebbe approvare certe transazioni per un dato tempo, fino a un valore specifico o solo per certi indirizzi. @@ -77,7 +76,6 @@ I portafogli di contratti intelligenti, ad oggi, esistono, ma implementarli è i EIP-2771 introduce il concetto delle meta-transazioni, che consentono a terze parti di pagare i costi del gas degli utenti senza apportare modifiche al protocollo di Ethereum. L'idea è che le transazioni firmate da un utente sono inviate a un contratto `Corriere`. Il corriere è un'entità fidata che verifica che le transazioni siano valide, prima di inviarle a un ripetitore di gas. Ciò avviene all'esterno della catena, evitando il bisogno di pagare il gas. Il ripetitore di gas passa la transazione a un contratto `Destinatario`, pagando il gas necessario per rendere la transazione eseguibile su Ethereum. La transazione è eseguita se il `Corriere` è noto ed è ritenuto attendibile dal `Destinatario`. Questo modello semplifica, per gli sviluppatori, l'implementazione di transazioni a gas zero per gli utenti. - @@ -87,7 +85,6 @@ L'EIP-4337 è il primo passo verso il supporto dei portafogli di contratti intel Anche il funzionamento dei portafogli cambierà sotto EIP-4337. Invece di far reimplementare da ogni portafoglio una logica di sicurezza complessa ma comune, queste funzioni saranno affidate a un contratto del portafoglio globale, noto come "punto d'accesso". Questo, gestirebbe le operazioni come il pagamento delle commissioni e l'esecuzione del codice dell'EVM, così che gli sviluppatori di portafogli possano concentrarsi sul fornire eccellenti esperienze agli utenti. Nota: il contratto del punto d'accesso dell'EIP-4337, è stato distribuito alla Rete Principale di Ethereum l'1 marzo 2023. Puoi visualizzare il contratto su Etherscan. - @@ -95,7 +92,6 @@ Anche il funzionamento dei portafogli cambierà sotto EIP-4337. Invece di far re L'EIP-2938 mira ad aggiornare il protocollo di Ethereum introducendo un nuovo tipo di transazione, AA_TX_TYPE che include tre campi: nonce, target e data, dove nonce è un contatore di transazioni, target è l'indirizzo del contratto del punto d'accesso, e data è il bytecode dell'EVM. Per eseguire queste transazioni, devono essere aggiunte due nuove istruzioni (note come codici operativi) all'EVM: NONCE e PAYGAS. Il codice operativo NONCE traccia la sequenza della transazione e PAYGAS calcola e preleva il gas necessario per eseguire la transazione dal saldo del contratto. Queste nuove funzionalità consentono a Ethereum di supportare nativamente i portafogli di contratti intelligenti, poiché l'infrastruttura necessaria è integrata nel protocollo di Ethereum. Nota che l'EIP-2938 non è correntemente attiva. La community, al momento, preferisce EIP-4337 poiché non richiede modifiche al protocollo. - @@ -103,7 +99,6 @@ Nota che l'EIP-2938 non è correntemente attiva. La community, al momento, prefe L'EIP-3074 mira ad aggiornare i conti posseduti esternamente di Ethereum, consentendo loro di delegare il controllo a un contratto intelligente. Ciò significa che la logica dei contratti intelligenti potrebbe approvare le transazioni originate da un EOA. Questo consentirebbe funzionalità come la sponsorizzazione del gas e le transazioni raggruppate. Perché funzioni, devono essere aggiunti due nuovi codici operativi all'EVM: AUTH e AUTHCALL. Con l'EIP-3074, i benefici del portafoglio di un contratto intelligente sono resi disponibili senza la necessità di un contratto, invece un tipo specifico di contratto privo di stato, privo di fiducia e non ggiornabile, noto come "invocatore", gestisce le transazioni. Nota che EIP-3074 non è correntemente attivo. La community, al momento, preferisce EIP-4337 poiché non richiede modifiche al protocollo. - ## Stato attuale {#current-progress} diff --git a/public/content/translations/it/roadmap/beacon-chain/index.md b/public/content/translations/it/roadmap/beacon-chain/index.md index fdfafae0a45..d4529c6a841 100644 --- a/public/content/translations/it/roadmap/beacon-chain/index.md +++ b/public/content/translations/it/roadmap/beacon-chain/index.md @@ -6,7 +6,7 @@ template: upgrade image: /images/upgrades/core.png alt: summaryPoint1: La Beacon Chain ha introdotto il proof-of-stake all'ecosistema di Ethereum. -summaryPoint2: Si è unita alla catena di proof-of-work originale di Ethereum a settembre 2022. +summaryPoint2: "Si è unita alla catena di proof-of-work originale di Ethereum a settembre 2022." summaryPoint3: La Beacon Chain ha introdotto la logica del consenso e il protocollo di gossip dei blocchi, che ora protegge Ethereum. --- @@ -32,7 +32,7 @@ Lo staking ha un ruolo simile a quello che aveva il [mining](/developers/docs/co La transizione al proof of stake ha reso Ethereum significativamente più sicura e decentralizzata rispetto al proof of work. Più persone parteciperanno alla rete, più questa diventerà decentralizzata e protetta dagli attacchi. -E l'utilizzo del proof of stake come meccanismo di consenso è un componente fondamentale per [l'Ethereum sicuro, ecosostenibile e scalabile che conosciamo ora](/roadmap/vision/). +E l'utilizzo del proof of stake come meccanismo di consenso è un componente fondamentale per [l'Ethereum sicuro, ecosostenibile e scalabile che conosciamo ora](/staking/). diff --git a/public/content/translations/it/roadmap/danksharding/index.md b/public/content/translations/it/roadmap/danksharding/index.md index 59099359eac..6a853f4f77e 100644 --- a/public/content/translations/it/roadmap/danksharding/index.md +++ b/public/content/translations/it/roadmap/danksharding/index.md @@ -22,13 +22,11 @@ Ciò è costoso perché elaborato da tutti i nodi di Ethereum e risiede per semp I rollup sono un metodo per scalare Ethereum raggruppando le transazioni all'esterno della catena e, in seguito, pubblicando i risultati su Ethereum. Un rollup, essenzialmente, si compone di due parti: dati e controllo dell'esecuzione. I dati sono la sequenza completa delle transazioni elaborate da un rollup per produrre il cambiamento di stato pubblicato su Ethereum. Il controllo d'esecuzione è la ri-esecuzione di tali transazioni da un utente onesto (dimostratore) per aassicurarsi che il cambiamento di stato proposto sia corretto. Per effettuare il controllo d'esecuzione, i dati della transazione devono essere disponibili per un tempo sufficiente perché chiunque possa scaricarli e controllarli. Ciò significa che qualsiasi comportamento disonesto dal sequenziatore del rollup puà essere identificato e sfidato dal dimostratore. Tuttavia, non è necessario che sia disponibile per sempre. - I rollup pubblicano gli impegni ai dati delle proprie transazioni on chain e, inoltre, rendono disponibili i dati effettivi nei blob di dati. Ciò significa che i dimostratori possono verificare che gli impegni siano validi o sfidare i dati che ritengono siano errati. Al livello del nodo, i blob di dati sono conservati nel client del consenso. I client del consenso attestano di aver visto i dati e che sono stati propagati per la rete. Se i dati fossero conservati per sempre, tali client si allargherebberò, determinando grandi requisiti hardware per l'esecuzione di nodi. Invece, i dati sono eliminati automaticamente dal nodo ogni 18 giorni. Le attestazioni del client del consenso dimostrano che vi è stata un'opportunità sufficiente, affinché i dimostratori potessero verificare i dati. I dati effettivi possono essere memorizzati off-chain dagli operatori di rollup, dagli utenti o da terzi. - ### Come sono verificati i dati dei blob? {#how-are-blobs-verified} @@ -48,13 +46,11 @@ La cerimonia KZG dell'EIP-4844 era aperta al pubblico e decine di migliaia di pe Quando un rollup pubblica dati in un blob, fornisce un "impegno" che viene pubblicato sulla catena. Questo, è il risultato della valutazione di un adattamento polinomiale ai dati, in certi punti. Questi punti sono definiti dai numeri casuali generati nella cerimonia KZG. I dimostratori, quindi, possono valutare la polinomiale agli stessi punti, per poter verificare i dati; se arrivano agli stessi valori, allora i dati sono corretti. - Se qualcuno conoscesse le posizioni casuali utilizzate per l'impegno, sarebbe facile, per loro, generare una nuova polinomiaale che si adatti a quei punti specifici (cioè, una "collisione"). Ciò significa che potrebbero aggiungere o rimuovere i dati dal blob e, comunque, fornire una prova valida. Per impedirlo, invece di dare ai dimostratori le posizioni segrete effettive, ricevono in realtà le posizioni, avvolte in una "scatola nera" crittografica, utilizzando le curve ellittiche. Questi, infatti, rimescolano i valori in modo tale che i valori originali non siano decodificabili, ma con dimostratori e verificatori capaci in algebra, le polinomiali sono ancora valutabili ai punti rappresentati. - @@ -70,13 +66,11 @@ Funziona espandendo i blob collegati ai blocchi da sei (6) nel proto-dankshardin La separazione di propositori e costruttori è necessaria per impedire ai singoli validatori di dover generare costosi impegni e prove, per 32 MB di dati del blob. Questo metterebbe a dura prova gli staker domestici e richiederebbe loro di investire in hardware più potenti, danneggiando la decentralizzazione. Invece, i costruttori di blocchi specializzati si prendono la responsabilità di questo costoso lavoro di calcolo. Poi, mettono a disposizione i propri blocchi ai propositori di blocchi per la trasmissione. Il propositore di blocchi, semplicemente, sceglie il blocco più redditizio. Chiunque può verificare i blob in modo economico e rapido, a significare che ogni normale validatore può verificare che i costruttori di blocchi si stiano comportando onestamente. Questo permette di elaborare i blob di grandi dimensioni senza sacrificare la decentralizzazione. I costruttori di blocchi malevoli potrebbero semplicemente essere esplusi dalla rete e tagliati; altri arriverebbero al loro posto, poiché la costruzione di blocchi è un'attività redditizia. - Il campionamento della disponibilità dei dati è necessario perché i validatori verifichino in modo rapido ed efficace i dati dei blob. Utilizzando il campionmento della disponibilità dei dati, i validatori possono essere davvero certi che i blob di dati fossero disponibili e che siano stati inviati correttamente. Ogni validatore può campionare casualmente alcuni punti di dati e creare una prova, a significare che nessun validatore deve verificare l'intero blob. Se mancano dei dati, saranno identificati rapidamente e il blob sarà respinto. - ### Stato attuale {#current-progress} diff --git a/public/content/translations/it/roadmap/future-proofing/index.md b/public/content/translations/it/roadmap/future-proofing/index.md index 9166a97866d..6047829e3d4 100644 --- a/public/content/translations/it/roadmap/future-proofing/index.md +++ b/public/content/translations/it/roadmap/future-proofing/index.md @@ -1,6 +1,6 @@ --- title: Rendere Ethereum a prova di futuro -description: Questi aggiornamenti cementano Ethereum come lo strato fondamentale, resiliente e decentralizzato per il futuro, indipendentemente da ciò che conterrà. +description: "Questi aggiornamenti cementano Ethereum come lo strato fondamentale, resiliente e decentralizzato per il futuro, indipendentemente da ciò che conterrà." lang: it image: /images/roadmap/roadmap-future.png alt: "Roadmap di Ethereum" diff --git a/public/content/translations/it/roadmap/merge/index.md b/public/content/translations/it/roadmap/merge/index.md index 06cded798a0..eed70dddc1f 100644 --- a/public/content/translations/it/roadmap/merge/index.md +++ b/public/content/translations/it/roadmap/merge/index.md @@ -5,8 +5,8 @@ lang: it template: upgrade image: /images/upgrades/merge.png alt: -summaryPoint1: La Rete Principale di Ethereum utilizza il proof-of-stake, ma non è sempre stato così. -summaryPoint2: L'aggiornamento dal meccanismo originale di proof-of-work al proof-of-stake, è stato detto La Fusione. +summaryPoint1: "La Rete Principale di Ethereum utilizza il proof-of-stake, ma non è sempre stato così." +summaryPoint2: "L'aggiornamento dal meccanismo originale di proof-of-work al proof-of-stake, è stato detto La Fusione." summaryPoint3: La Fusione si riferisce all'unione della Rete Principale di Ethereum con una blockchain di proof-of-stake separata, detta Beacon Chain, ora coesistenti come un'unica catena. summaryPoint4: La Fusione ha ridotto il consumo energetico di Ethereum di circa il 99,95%. --- @@ -88,7 +88,6 @@ Gli elementi d'azione chiave includono: - Autenticare i client di esecuzione e di consenso con un segreto JWT condiviso, così che possano comunicare in sicurezza tra loro. Non completare i suddetti elementi farà sì che il tuo nodo risulti "offline", finché entrambi i livelli non saranno sincronizzati e autenticati. - Per ulteriori informazioni, consulta questo post del blog di Tim Beiko su Come La Fusione Influenza il Livello d'Applicazione di Ethereum. - ## La Fusione e il consumo energetico {#merge-and-energy} @@ -116,7 +114,7 @@ La Fusione ha segnato la fine del proof-of-work per Ethereum e ha dato inizio al ## La Fusione e il ridimensionamento {#merge-and-scaling} -La Fusione ha inoltre gettato le basi per ulteriori aggiornamenti di scalabilità, impossibili sotto il Poof of Work, portando Ethereum un po' più vicina al raggiungimento della completa scalabilità, sicurezza e sostenibilità delinate nella [visione di Ethereum](/roadmap/vision/). +La Fusione ha inoltre gettato le basi per ulteriori aggiornamenti di scalabilità, impossibili sotto il Poof of Work, portando Ethereum un po' più vicina al raggiungimento della completa scalabilità, sicurezza e sostenibilità delinate nella [visione di Ethereum](/energy-consumption/). ## Equivoci su La Fusione {#misconceptions} @@ -135,7 +133,6 @@ Eseguire un nodo che non produce blocchi è possibile per chiunque, in entrambi L'abilità per chiunque di gestire il proprio nodo è assolutamente essenziale per mantenere la decentralizzazione della rete di Ethereum. [Ulteriori informazioni sull'esecuzione di un proprio nodo](/run-a-node/) - tabella di marcia incentrata sui rollup, gli sforzi si concentrano sul ridimensionamento delle attività degli utenti al [livello 2](/layer-2/), consentendo alla Rete Principale di Livello 1 di essere un livello di accordo decentralizzato e sicuro, ottimizzato per l'archiviazione dei dati dei rollup, per aiutare a rendere esponenzialmente più economiche le transazioni dei rollup. La transizione al Proof of stake è un precursore essenziale per realizzarlo. [Ulteriori informazioni su gas e commissioni.](/developers/docs/gas/) - indirizzo di prelievo per iniziare a ricevere pagamenti automatici di qualsiasi saldo di staking in eccesso (ETH superiori a 32, da ricompense del protocollo). Questo aggiornamento, inoltre, ha consentito la capacità di un validatore di sbloccare e rivendicare l'intero saldo all'uscita dalla rete. [Maggiori informazioni sui prelievi in staking](/staking/withdrawals/) - - L'emissione di staking esatta fluttua a seconda dell'importo totale di ETH in staking - **Da La Fusione, restano approssimativamnte soltanto 1.700 ETH/giorno, riducendo la nuova emissione totale di ETH di circa l'88%** - La bruciatura: questa, fluttua secondo la domanda di rete. _Se_ per un dato giorno si osserva un prezzo di gas medio di almeno 16 gwei, questo compensa effettivamente i circa 1.700 ETH emessi ai validatori e porta l'inflazione netta di ETH a zero, o meno, per quel giorno. - ## Pre-Fusione (storico) {#pre-merge} @@ -63,7 +62,9 @@ Offerta totale di ETH: **circa 120.520.000 ETH** (al momento della Fusione a set **Circa l'11,3%** era emesso agli staker sul livello del consenso (0,52 / 4,61 * 100) + + ## Post-Fusione (oggi) {#post-merge} @@ -97,7 +98,9 @@ Tasso di emissione annualizzato totale: **circa 0,52%** Riduzione netta nell'emissione annuale di ETH: **circa 88,7%** ((4,61%-0,52%) / 4,61% * 100) + + ## La bruciatura {#the-burn} @@ -109,7 +112,9 @@ La forza opposta all'emissione di ETH è il tasso a cui gli ETH sono bruciati. P La bruciatura delle commissioni è divenuta attiva con l'[aggiornamento di Londra](/ethereum-forks/#london) ad agosto 2021 e resta immutata da La Fusione. + + Oltre alla bruciatura della commissione, implementata dall'aggiornamento di Londra, i validatori, inoltre, possono incorrere in sanzioni per essere online o, peggio, possono ricevere tagli per l'infrazione di regole specifiche che minacciano la sicurezza della rete. Queste, risultano in una riduzione degli ETH dal saldo di quel validatore, che non è ricompensato direttamente a nessun altro conto, bruciandoli/rimuovendoli effettivamente dalla circolazione. diff --git a/public/content/translations/it/roadmap/pbs/index.md b/public/content/translations/it/roadmap/pbs/index.md index 4b0b292c707..be168336e77 100644 --- a/public/content/translations/it/roadmap/pbs/index.md +++ b/public/content/translations/it/roadmap/pbs/index.md @@ -1,6 +1,6 @@ --- title: Separazione proponente-sviluppatore -description: Scopri come e perché i validatori di Ethereum divideranno le proprie responsabilità di costruzione e trasmissione dei blocchi. +description: "Scopri come e perché i validatori di Ethereum divideranno le proprie responsabilità di costruzione e trasmissione dei blocchi." lang: it --- @@ -21,7 +21,6 @@ I [mempool crittografati](https://www.youtube.com/watch?v=fHDjgFcha0M&list=PLpkt Potenti organizzazioni possono spingere i validatori a censurare le transazioni da o verso certi indirizzi. I validatori si conformano a tale pressione rilevando gli indirizzi nella lista nera del proprio gruppo di transazioni e omettendoli dai blocchi che propongono. Dopo la PBS, non sarà più possibile poiché i propositori di blocchi non sapranno quali transazioni stanno trasmettendo nei propri blocchi. Potrebbe essere importante, per certi individui o app, conformarsi alle regole di censura, ad esempio, quando è emanata una legge nella loro regione. In tali casi, la conformità si verifica a livello di applicazione, mentre il protocolo rimane privo di permessi e di censura. - ## PBS e MEV {#pbs-and-mev} diff --git a/public/content/translations/it/roadmap/scaling/index.md b/public/content/translations/it/roadmap/scaling/index.md index 54d6c3f2ac9..2d511aa85e6 100644 --- a/public/content/translations/it/roadmap/scaling/index.md +++ b/public/content/translations/it/roadmap/scaling/index.md @@ -1,6 +1,6 @@ --- title: Ridimensionare Ethereum -description: I rollup raggruppano le transazioni al di fuori della catena, riducendo i costi per l'utente. Tuttavia, il modo in cui i rollup utilizzano i dati al momento è troppo costoso, il che limita l'economicità delle transazioni. Il Proto-Danksharding lo corregge. +description: "I rollup raggruppano le transazioni al di fuori della catena, riducendo i costi per l'utente. Tuttavia, il modo in cui i rollup utilizzano i dati al momento è troppo costoso, il che limita l'economicità delle transazioni. Il Proto-Danksharding lo corregge." lang: it image: /images/roadmap/roadmap-transactions.png alt: "Roadmap di Ethereum" diff --git a/public/content/translations/it/roadmap/security/index.md b/public/content/translations/it/roadmap/security/index.md index 11dfbd8b335..8526aae04e7 100644 --- a/public/content/translations/it/roadmap/security/index.md +++ b/public/content/translations/it/roadmap/security/index.md @@ -1,6 +1,6 @@ --- -title: Un Ethereum più sicuro -description: Ethereum è la piattaforma di contratti intelligenti più sicura e decentralizzata che esista. Tuttavia, restano ancora da implementare alcuni miglioramenti in modo che Ethereum resti resiliente a qualsiasi livello di attacco anche in un futuro lontano. +title: "Un Ethereum più sicuro" +description: "Ethereum è la piattaforma di contratti intelligenti più sicura e decentralizzata che esista. Tuttavia, restano ancora da implementare alcuni miglioramenti in modo che Ethereum resti resiliente a qualsiasi livello di attacco anche in un futuro lontano." lang: it image: /images/roadmap/roadmap-security.png alt: "Roadmap di Ethereum" diff --git a/public/content/translations/it/roadmap/single-slot-finality/index.md b/public/content/translations/it/roadmap/single-slot-finality/index.md index d8e0bc0c4a6..02ba9bcc682 100644 --- a/public/content/translations/it/roadmap/single-slot-finality/index.md +++ b/public/content/translations/it/roadmap/single-slot-finality/index.md @@ -1,6 +1,6 @@ --- -title: Finalità dello spazio singolo -description: Spiegazione della finalità dello spazio singolo +title: "Finalità dello spazio singolo" +description: "Spiegazione della finalità dello spazio singolo" lang: it --- diff --git a/public/content/translations/it/roadmap/user-experience/index.md b/public/content/translations/it/roadmap/user-experience/index.md index 2748d708027..3713de6141f 100644 --- a/public/content/translations/it/roadmap/user-experience/index.md +++ b/public/content/translations/it/roadmap/user-experience/index.md @@ -1,6 +1,6 @@ --- title: Migliorare l'esperienza degli utenti -description: Per molti, è ancora troppo complesso utilizzare Ethereum. Per incoraggiare l'adozione di massa, Ethereum deve ridurre drasticamente le proprie barriere d'accesso; gli utenti devono ricevere i benefici dell'accesso decentralizzato, privo di permessi e resistente alla censura a Ethereum, ma dev'essere privo di frizione, tanto quanto utilizzare una tradizionale app del web2. +description: "Per molti, è ancora troppo complesso utilizzare Ethereum. Per incoraggiare l'adozione di massa, Ethereum deve ridurre drasticamente le proprie barriere d'accesso; gli utenti devono ricevere i benefici dell'accesso decentralizzato, privo di permessi e resistente alla censura a Ethereum, ma dev'essere privo di frizione, tanto quanto utilizzare una tradizionale app del web2." lang: it image: /images/roadmap/roadmap-ux.png alt: "Roadmap di Ethereum" diff --git a/public/content/translations/it/roadmap/verkle-trees/index.md b/public/content/translations/it/roadmap/verkle-trees/index.md index 59cae3a2e7c..02bb4b09d23 100644 --- a/public/content/translations/it/roadmap/verkle-trees/index.md +++ b/public/content/translations/it/roadmap/verkle-trees/index.md @@ -18,7 +18,6 @@ Gli alberi di Verkle sono un passaggio fondamentale sul percorso per i client di I client di Ethereum, al momento, utilizzano una struttura di dati nota come Albero di Patricia di Merkle per memorizzarne i dati di stato. Le informazioni sui singoli conti sono memorizzati come foglie su un albero e, le coppie di foglie, ricevono ripetutamente un hash finché non ne resta soltanto uno. Questo hash finale è noto come la "radice". Per verficare i blocchi, i client di Ethereum eseguono tutte le transazioni in un blocco e aggiornano il proprio albero di stato locale. Il blocco è considerato valido se la radice dell'albero locale è identica a quella fornita dal propositore di blocchi, poiché qualsiasi differenza nel calcolo effettuato dal propositore del blocco e dal nodo di convalida, formerebbe un hash di radice completamente differente. Il problema è che la verifica della blockchain richiede che ogni client memorizzi l'intero albero di stato per il blocco di testa e per diversi blocchi storici (di default, su Geth, sono mantenuti i dati di stato per 128 blocchi oltre la testa). Ciò richiede che i client abbiano accesso a una grande quantità di spazio su disco, limitando l'esecuzione dei nodi completi su hardware economici e poco potenti. Una soluzione è aggiornare l'albero di stato a una struttura più efficiente (l'albero di Verkle), riepilogabile utilizzando un piccolo "testimone" ai dati, condivisibile invece dei dati di stato completi. Riformattare i dati di stato in un albero di Verkle è una pietra miliare per spostarsi verso i client privi di stato. - ## Cos'è un testimone e perché è necessario? {#what-is-a-witness} @@ -34,7 +33,6 @@ Sotto lo schema di impegno polinomiale, i testimoni hanno dimensioni gestibili, Le dimensioni dei testimoni variano a seconda del numero di foglie che include. Supponendo che il testimone copra 1000 foglie, un testimone per un albero di Merkle occuperebbe all'incirca 3,5 MB (ipotizzando 7 livelli all'albero). Un testimone per gli stessi dati in un albero di Verkle (ipotizzando 4 livelli all'albero) occuperebbe circa 150 kB; **circa 23 volte più piccolo**. Questa riduzione delle dimensioni del testimone consentirà ai testimoni del client di essere accettabilmente piccoli. I testimoni polinomiali variano da 0,128 a 1 kB a seconda dello specifico impegno polinomiale utilizzato. - ## Qual è la struttura di un albero di Verkle? {#what-is-the-structure-of-a-verkle-tree} diff --git a/public/content/translations/it/social-networks/index.md b/public/content/translations/it/social-networks/index.md index 47d7099ccb2..2c62d2f1d3f 100644 --- a/public/content/translations/it/social-networks/index.md +++ b/public/content/translations/it/social-networks/index.md @@ -65,18 +65,18 @@ I post pubblicati su Mirror sono memorizzati permanentemente su Arweave, una pia Gli utenti utilizzano il token [ERC-20](/glossary/#erc-20) nativo della piattaforma $MIND per pagare gli articoli. Inoltre, gli utenti, possono anche guadagnare token $MIND, pubblicando contenuti popolari, contribuendo all'ecosistema e riferendo altri alla piattaforma. -## Utilizzare i social decentralizzati {#use-decentralized-social-networks} +## Utilizzare i social decentralizzati {#farcaster} - **[Status.im](https://status.im/)**: _Status è un'app di messaggistica sicura che utilizza un protocollo open source e tra pari, nonché la crittografia end-to-end per proteggere i tuoi messaggi dalle terze parti._ - **[Mirror.xyz](https://mirror.xyz/)**: _Mirror è una piattaforma di pubblicazione decentralizzata e posseduta dagli utenti basata su Ethereum, per il crowdfunding delle idee, la monetizzazione dei contenuti e la creazione di community dal valore elevato._ - **[Lens Protocol](https://lens.xyz/)**: _Lens Protocol è un grafico sociale componibile e decentralizzato che aiuta i creatori a prendere possesso dei propri contenuti, ovunque vadano nel proprio giardino digitale dell'Intenet decentralizzato._ - **[Farcaster](https://farcaster.xyz/)**: _Farcaster è un social sufficientemente decentralizzato. È un protocollo aperto che supporta molti client, proprio come l'email._ -## Social network Web2 su Ethereum {#web2-social-networks-and-ethereum} +## Social network Web2 su Ethereum {#use-decentralized-social-networks} Le piattaforme social native del [Web3](/glossary/#web3) non sono le sole che stanno tentando di incorporare la tecnologia della blockchain nei social. Anche molte piattaforme centralizzate stanno pianificando di integrare Ethereum nella propria infrastruttura: -### Reddit {#reddit} +### Reddit {#web2-social-networks-and-ethereum} Reddit ha [pubblicizzato i Punti della Community](https://cointelegraph.com/news/reddit-to-reportedly-tokenize-karma-points-and-onboard-500m-new-users): token ERC-20 che gli utenti possono guadagnare pubblicando contenuti di qualità e contribuendo alle community online (subreddit). Puoi riscattare tali token in una subreddit per ottenere privilegi e vantaggi esclusivi. Per questo progetto, Reddit sta lavorando con Arbitrum, una rete di [livello 2](/glossary/#layer-2) progettata per ridimensionare le transazioni di Ethereum. @@ -84,9 +84,9 @@ Il programma è già attivo: la subreddit r/CryptoCurrency [adopera la propria v Oltre a utilizzare i Punti della Community per sbloccare funzionalità speciali, gli utenti possono anche scambiarli per valuta legale nelle piattaforme di scambio. Inoltre, l'importo di Punti della Community posseduto da un utente ne determina l'influenza sul processo decisionale all'interno della community. -## Lettura consigliate {#further-reading} +## Lettura consigliate {#brave} -### Articoli {#articles} +### Articoli {#audius} - [Decentralizzare i social: una guida allo stack dei social di Web3](https://www.coinbase.com/blog/decentralizing-social-media-a-guide-to-the-web3-social-stack) - _Coinbase Ventures_ - [I social sono la prossima grande opportunità per la decentralizzazione](https://www.coindesk.com/tech/2021/01/22/social-networks-are-the-next-big-decentralization-opportunity/) - _Ben Goertzel_ @@ -95,12 +95,12 @@ Oltre a utilizzare i Punti della Community per sbloccare funzionalità speciali, - [In che modo la blockchain può risolvere la privacy dei social](https://www.investopedia.com/news/ethereum-blockchain-social-media-privacy-problem-linkedin-indorse/) - _Prableen Bajpai_ - [Decentralizzazione sufficiente per i social](https://www.varunsrinivasan.com/2022/01/11/sufficient-decentralization-for-social-networks) - _Varun Srinivasan_ -### Video {#videos} +### Video {#sorare} - [Social decentralizzati spiegati](https://www.youtube.com/watch?v=UdT2lpcGvcQ) - _Coinmarketcap_ - [La blockchain DeSo vuole decentralizzare i social](https://www.youtube.com/watch?v=SG2HUiVp0rE) - _Bloomberg Technology_ - [Il futuro dei social decentralizzati, con Balaji Srinivasan, Vitalik Buterin e Juan Benet](https://www.youtube.com/watch?v=DTxE9KV3YrE) - _ETHGlobal_ -### Community {#communities} +### Community {#twitter} - [Subreddit r/CryptoCurrency](https://www.reddit.com/r/CryptoCurrency/) diff --git a/public/content/translations/it/staking/dvt/index.md b/public/content/translations/it/staking/dvt/index.md index d2f9a11efe2..b719b9c0de7 100644 --- a/public/content/translations/it/staking/dvt/index.md +++ b/public/content/translations/it/staking/dvt/index.md @@ -1,6 +1,6 @@ --- title: Tecnologia del validatore distribuito -description: La tecnologia del validatore distribuito consente l'operazione distribuita di un validatore di Ethereum da più parti. +description: "La tecnologia del validatore distribuito consente l'operazione distribuita di un validatore di Ethereum da più parti." lang: it --- diff --git a/public/content/translations/it/staking/solo/index.md b/public/content/translations/it/staking/solo/index.md index d1460e62efc..629e55fc205 100644 --- a/public/content/translations/it/staking/solo/index.md +++ b/public/content/translations/it/staking/solo/index.md @@ -71,6 +71,7 @@ Differente dalle sanzioni di inattività per esser offline, il taglio Ulteriori informazioni sullo slashing e sul ciclo di vita dei validatori + @@ -130,7 +131,6 @@ Esistono alcune domande molto comuni sullo staking che meritano di essere affron 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. - diff --git a/public/content/translations/it/staking/withdrawals/index.md b/public/content/translations/it/staking/withdrawals/index.md index da48375cdc0..e0317c01898 100644 --- a/public/content/translations/it/staking/withdrawals/index.md +++ b/public/content/translations/it/staking/withdrawals/index.md @@ -166,7 +166,6 @@ eventName="read more"> Se fai parte di un [pool di staking](/staking/pools/) o detieni token di staking, dovresti chiedere al tuo fornitore ulteriori dettagli su come vengono gestiti i prelievi dallo staking, poiché ogni servizio opera in modo diverso. In generale, gli utenti dovrebbero essere liberi di rivendicare i propri ETH in staking sottostanti, o di modificare il fornitore di staking che utilizzano. Se un pool in particolare sta diventando troppo grande, è possibile uscire, riscattare i fondi e rimetterli in staking con un fornitore di dimensioni minori. O, se hai accumulato abbastanza ETH, potresti [fare staking da casa](/staking/solo/). - No, se il tuo validatore è ancora attivo sulla rete, un prelievo completo non si verificherà automaticamente. Questo richiede l'avvio manuale di un'uscita volontaria. Una volta che un validatore ha completato il procedimento di uscita e supponendo che il conto abbia le credenziali di prelievo, il saldo rimanente sarà then prelevato durante la successivapulizia del validatore. - Gli operatori del validatore dovrebbero visitare la pagina dei Prelievi del Launchpad di Staking, dove troveranno ulteriori dettagli su come preparare il proprio validatore ai prelievi, le tempistiche degli eventi e ulteriori dettagli sul funzionamento dei prelievi. Per testare la tua configurazione su una rete di prova, visita il Launchpad di Staking della rete di prova di Holesky per iniziare. -