Guida al Deploy di Contratti Solidity con Truffle su Testnet e Mainnet

by theArchitect
SHARE
Guida al Deploy di Contratti Solidity con Truffle su Testnet e Mainnet
© Guida-HTML5.it

Introduzione

Il deploy di contratti smart su blockchain è una fase cruciale nello sviluppo di applicazioni decentralizzate. In questo tutorial, esploreremo come utilizzare Truffle, un framework popolare per lo sviluppo di contratti Solidity, per eseguire il deploy dei tuoi contratti su testnet e mainnet. Imparerai a configurare l´ambiente, scrivere i tuoi contratti e gestire il deploy in modo sicuro ed efficace.

Codice completo

Iniziamo creando un semplice contratto Solidity e configurando il nostro progetto Truffle. Assicurati di avere installato Node.js e Truffle. Puoi installare Truffle usando il seguente comando:

npm install -g truffle

Successivamente, crea una nuova cartella per il tuo progetto e inizializza Truffle:

mkdir my-dapp
cd my-dapp
truffle init

Ora, creiamo un semplice contratto chiamato SimpleStorage.sol nella cartella contracts:

pragma solidity ^0.8.0;

contract SimpleStorage {
    uint256 storedData;

    function set(uint256 x) public {
        storedData = x;
    }

    function get() public view returns (uint256) {
        return storedData;
    }
}

Spiegazione

Il contratto SimpleStorage consente di memorizzare e recuperare un numero intero. La funzione set imposta il valore, mentre get restituisce il valore memorizzato. Ora che abbiamo il nostro contratto, dobbiamo configurare Truffle per eseguire il deploy su una testnet come Rinkeby o Goerli.

Per farlo, dobbiamo installare alcune dipendenze. Useremo dotenv per gestire le variabili d´ambiente e @truffle/hdwallet-provider per interagire con la blockchain:

npm install dotenv @truffle/hdwallet-provider

Crea un file .env nella radice del tuo progetto e aggiungi le seguenti variabili:

MNEMONIC="la tua frase mnemonica qui"
INFURA_URL="https://rinkeby.infura.io/v3/il_tuo_progetto_id"

Ora, apriamo il file truffle-config.js e configuriamo la rete per il deploy:

const HDWalletProvider = require(´@truffle/hdwallet-provider´);
require(´dotenv´).config();

const { MNEMONIC, INFURA_URL } = process.env;

module.exports = {
    networks: {
        rinkeby: {
            provider: () => new HDWalletProvider(MNEMONIC, INFURA_URL),
            network_id: 4,       // Rinkeby´s id
            gas: 5500000,        // Gas limit
            confirmations: 2,     // # of confirmations to wait between deployments
            timeoutBlocks: 200,   // # of blocks before a deployment times out
            skipDryRun: true      // Skip dry run before migrations? (default: false for public nets)
        },
        mainnet: {
            provider: () => new HDWalletProvider(MNEMONIC, INFURA_URL),
            network_id: 1,       // Mainnet´s id
            gas: 5500000,
            confirmations: 2,
            timeoutBlocks: 200,
            skipDryRun: true
        }
    },
    compilers: {
        solc: {
            version: "0.8.0" // Versione del compilatore Solidity
        }
    }
};

Best practice

Quando si esegue il deploy dei contratti, è fondamentale seguire alcune best practice:

  • Testare i contratti: Prima di eseguire il deploy sulla mainnet, assicurati di testare i tuoi contratti su una testnet per identificare eventuali bug.
  • Limitare il gas: Imposta un limite di gas appropriato per evitare costi eccessivi durante il deploy.
  • Utilizzare variabili d´ambiente: Non inserire mai chiavi private o frasi mnemoniche direttamente nel codice. Usa un file .env per gestirle in modo sicuro.
  • Monitorare le transazioni: Usa strumenti come Etherscan per monitorare le tue transazioni e assicurarti che siano state eseguite correttamente.

Riepilogo

In questo tutorial, abbiamo imparato come eseguire il deploy di un contratto Solidity utilizzando Truffle su testnet e mainnet. Abbiamo creato un semplice contratto, configurato l´ambiente e seguito le best practice per garantire un deploy sicuro ed efficiente. Ricorda sempre di testare i tuoi contratti su testnet prima di passarli sulla mainnet.

Approfondisci con risorse ufficiali

SHARE