Capitolo 9 di 9
Mettiamo tutto online sulla rete di prova
Finora hai lavorato in locale. Pubblicare (deploy) significa mandare il codice compilato alla rete: il contratto riceve un indirizzo e da quel momento è visibile a tutti. Lo si fa con Hardhat, un ambiente di sviluppo per contratti.
// hardhat.config.ts (extract)
networks: {
amoy: {
url: "https://polygon-amoy-bor-rpc.publicnode.com",
chainId: 80002,
accounts: [process.env.DEPLOYER_PRIVATE_KEY],
},
},
// scripts/deploy.ts (extract)
const oracle = await ethers.deployContract("FuelPriceOracle", [deployer.address]);
await oracle.waitForDeployment();
const token = await ethers.deployContract("FuelToken", [await oracle.getAddress()]);
await token.waitForDeployment();
await oracle.grantRole(await oracle.UPDATER_ROLE(), UPDATER_ADDRESS);
networks.amoydice a Hardhat dove pubblicare: indirizzo RPC e Chain ID 80002.accountsusa la chiave del deployer presa dall'ambiente: una chiave di prova nuova, mai una chiave reale.deployContractpubblica prima l'oracolo, poi il token, passandogli l'indirizzo dell'oracolo.- L'ultima riga dà all'indirizzo dell'updater (il programma del capitolo 7) il ruolo che gli permette di scrivere i prezzi.
Lista di controllo
- Crea due chiavi di prova: una per pubblicare, una per aggiornare i prezzi. Mai riutilizzare chiavi vere.
- Procura POL di prova a entrambe con i faucet del capitolo 3.
- Scrivi le variabili nel file
.env(che non va mai condiviso né caricato su GitHub): la chiave del deployer, l'indirizzo dell'updater, e una chiave API di Polygonscan per il passo 6. - Pubblica con
npx hardhat run scripts/deploy.ts --network amoye annota i due indirizzi. - Configura il programma del capitolo 7 con l'indirizzo dell'oracolo e la chiave dell'updater, poi eseguilo una volta.
- Verifica su Polygonscan (
amoy.polygonscan.com): la verifica pubblica il codice sorgente accanto al contratto, così chiunque può leggere ciò che gira davvero. - Controlla: l'oracolo mostra prezzi e data di oggi,
isFresh(259200)risponde vero (259.200 secondi sono 3 giorni). - Prova un acquisto con 0,1 POL dalla pagina web e guarda la transazione nell'esploratore.
Se un acquisto fallisce con «prezzo vecchio», l'oracolo non è fresco: lancia di nuovo il programma del capitolo 7.
Un consiglio finale: fai prima un giro completo sulla rete locale di Hardhat (npx hardhat node), dove gli errori costano zero e tutto è veloce.
Cosa abbiamo costruito
FuelPriceOracle.solsu Polygon Amoy (Chain ID 80002):0xf30D07696476e97103730BE0dFb55045945409D8FuelToken.solsu Polygon Amoy (Chain ID 80002):0x87eAE9eF4A2dD56D04b4798bA9Bc7B777E70c9ac
Il programma del capitolo 7 è il backend del progetto e la pagina del capitolo 8 il suo frontend. Sono contratti di una rete di prova: i token e le monete non hanno valore.
Codice sorgente. Il codice completo è disponibile su richiesta.
Prova tu
Pubblica solo l'oracolo su Amoy, apri il suo indirizzo su Polygonscan e individua la scheda «Contract». Poi chiama da Remix o dall'esploratore la funzione isFresh: prima del primo aggiornamento deve rispondere falso.
Cosa hai imparato
- Pubblicare significa dare ai contratti un indirizzo pubblico sulla rete.
- Le chiavi di prova stanno in un file
.envche non si condivide. - Verificare su Polygonscan rende leggibile a tutti il codice che gira.