span
SESSIÓ 4 - UD2.4: DESPLEGAMENT I TESTING A TESTNET¶
Setmana 4 (11-17 maig) - 2 hores
FITXA TÈCNICA¶
| Dada | Valor |
|---|---|
| Unitat | UD2 - Smart Contracts |
| Tema | Desplegament a Sepolia, Gas i Etherscan |
| Durada | 2 hores |
| Nivell | Intermedi |
| Eines | Remix IDE, MetaMask, Sepolia Faucet1, Etherscan |
| Requisits | Sessions 1, 2 i 3 completades, MetaMask instal·lat |
OBJECTIUS D'APRENENTATGE¶
Al finalitzar aquesta sessió, l'alumnat serà capaç de:
- ✅ Diferenciar entre Mainnet, Testnet i entorns locals (Remix VM)
- ✅ Configurar MetaMask per interactuar amb Sepolia Testnet
- ✅ Obtenir ETH de prova (faucet) per pagar gas
- ✅ Desplegar un smart contract a una xarxa real (Sepolia)
- ✅ Verificar el codi font a Etherscan
- ✅ Interactuar amb el contracte desplegat des de MetaMask
- ✅ Comprendre el concepte de Gas i costos de transacció
TEMPORITZACIÓ DE LA SESSIÓ¶
| Temps | Activitat | Metodologia |
|---|---|---|
| 0-15 min | Revisió sessió anterior + Intro Testnets | Exposició + Q&A |
| 15-35 min | Teoria: Gas, Testnets i Etherscan | Exposició + diagrames |
| 35-55 min | Configuració: MetaMask i Faucet | Demostració guiada |
| 55-95 min | Pràctica: Desplegament a Sepolia | Codificació conjunta |
| 95-120 min | Verificació i Testing manual | Pràctica individual |
MATERIAL TEÒRIC¶
1. Xarxes Ethereum: Tipus i Diferències¶
| Tipus | Exemple | Ús | Cost | Moneda |
|---|---|---|---|---|
| Mainnet | Ethereum Mainnet | Producció real | Molt car (€€€) | ETH real |
| Testnet | Sepolia, Goerli | Desenvolupament i tests | Gratis (faucet) | ETH sense valor |
| Local VM | Remix VM, Hardhat Node | Tests ràpids locals | Gratis (simulat) | ETH fictici |
| L2 | Polygon, Arbitrum | Producció escalada | Barato (€) | ETH/MATIC |
Per què utilitzar Testnets?
- Permet provar el contracte en un entorn real sense risc econòmic.
- Simula la latència i costos de la Mainnet.
- Necessari per verificar el codi abans de producció.
Sepolia Testnet:
- Chain ID:
11155111 - És la testnet recomanada actualment per Ethereum.
- Requereix KYC per a alguns faucets (Alchemy), però n'hi ha de públics.
2. Gas i Costos de Transacció¶
El Gas és la unitat que mesura la quantitat de treball computacional necessari per executar una operació.
Fórmula del Cost:
Cost Total (ETH) = Gas Used × Gas Price (Gwei)
Conceptes Clau:
- Gas Limit: Màxim de gas que estàs disposat a consumir en una TX.
- Gas Price (Gwei): Preu per unitat de gas (1 Gwei = 0.000000001 ETH).
- Priority Fee: Propina als miners/validadors per prioritzar la TX.
- Max Fee: Màxim total que vols pagar (EIP-1559).
Exemple Pràctic:
Transacció simple (transferència): ~21,000 gas
Desplegament contracte petit: ~500,000 gas
Preu gas (Sepolia): ~20 Gwei
Cost = 500,000 × 20 Gwei = 10,000,000 Gwei = 0.01 ETH
Consell: A Sepolia, el gas és barat, però cal tenir saldo suficient.
3. Etherscan i Verificació de Contractes¶
Etherscan és un explorador de blocs que permet veure transaccions, saldos i codi de contractes.
Per què verificar el codi?
- Transparència: Els usuaris poden llegir el codi font.
- Confiança: Demostra que el codi desplegat correspon amb el publicat.
- Interacció: Permet interactuar amb el contracte directament des de la web d'Etherscan.
- Integració: necessària per a wallets i DApps externes.
Procés de Verificació:
- Desplegar contracte.
- Copiar adreça del contracte.
- Anar a "Verify and Publish" a Etherscan.
- Pujar el codi font i configuració del compilador.
- Si coincideix el bytecode → Verificat ✅
PRÀCTICA GUIADA PAS A PAS¶
EXERCICI 1: Configuració de MetaMask i Sepolia¶
Pas 1: Instal·lar MetaMask (si no es té)¶
- Ves a https://metamask.io
- Descarrega l'extensió per al navegador (Chrome/Firefox/Brave).
- Crea una cartera nova (Guarda la Seed Phrase en un lloc segur! Mai la comparteixis).
Pas 2: Afegir Xarxa Sepolia¶
- Obre MetaMask.
- Fes clic al selector de xarxes (dalt a l'esquerra, on diu "Ethereum Mainnet").
- Fes clic a Add network.
- Busca "Sepolia" i afegeix-la.
- Manualment si cal:
- Network Name:
Sepolia Testnet - RPC URL:
https://sepolia.infura.io/v3/(o pública) - Chain ID:
11155111 - Currency Symbol:
ETH - Block Explorer:
https://sepolia.etherscan.io
- Network Name:
Pas 3: Obtenir Sepolia ETH (Faucet)¶
- Ves a https://sepoliafaucet.com o https://www.alchemy.com/faucets/ethereum-sepolia
- Connecta la teva wallet o posa la teva adreça pública.
- Demana tokens (normalment 0.5 ETH per dia).
- Espera confirmació a MetaMask (pots trigar uns minuts).
- Verifica: El saldo ha de ser > 0 ETH a la xarxa Sepolia.
EXERCICI 2: Desplegament del Contracte de Votació¶
Objectiu: Desplegar el contracte SistemaVotacio de la Sessió 3 a Sepolia.
Pas 1: Preparar el Codi a Remix¶
- Obre Remix IDE.
- Carrega el fitxer
03_SistemaVotacio.sol(de la sessió anterior). - Assegura't que compila correctament (✅ verd).
Pas 2: Connectar MetaMask a Remix¶
- A Remix, ves a la pestanya DEPLOY & RUN TRANSACTIONS 🚀.
- A ENVIRONMENT, selecciona Injected Provider - MetaMask.
- MetaMask s'obrirà demanant connexió. Accepta.
- Assegura't que MetaMask està a la xarxa Sepolia.
Pas 3: Desplegar el Contracte¶
- A la secció CONTRACT, assegura't que surt
SistemaVotacio. - Fes clic al botó taronja Deploy.
- MetaMask s'obrirà amb la finestra de confirmació de transacció. - Revisa el Gas Fee estimat. - Fes clic a Confirm.
- Espera la confirmació (pot trigar 15-30 segons a Sepolia).
- A Remix, veuràs el contracte sota Deployed Contracts amb una adreça blava (ex:
0xAb5...).
Pas 4: Interactuar amb el Contracte Desplegat¶
- Copia l'adreça del contracte desplegat.
- A Remix, dins del contracte desplegat:
-
afegirCandidat("Partit A")→ Confirmar a MetaMask. -afegirCandidat("Partit B")→ Confirmar a MetaMask. -iniciarVotacio()→ Confirmar a MetaMask. - Canvia de compte a MetaMask (Account 2) i vota:
-
votar(1)→ Confirmar a MetaMask. - Consulta resultats (no cal confirmació MetaMask):
-
obtenirTotsCandidats()→ Veure vots.
EXERCICI 3: Verificació a Etherscan¶
Pas 1: Trobar el Contracte¶
- Fes clic dret sobre l'adreça del contracte a Remix → View on Etherscan.
- S'obrirà la pàgina del contracte a Sepolia Etherscan.
- Veuràs una pestanya que diu Contract amb el missatge: "Contract source code not verified".
Pas 2: Verificar el Codi¶
- Fes clic a Verify and Publish.
- Omple el formulari:
- Compiler Type: Solidity (Single file)
- Compiler Version: La mateixa que has usat a Remix (ex: v0.8.20+commit...)
- Contract Address: La del teu contracte.
- Contract Name:
SistemaVotacio- License: MIT - A la caixa de codi, copia i enganxa tot el contingut del teu fitxer
.sol. - Fes clic a Verify and Publish.
Pas 3: Confirmació¶
- Si tot és correcte, veuràs: "Successfully generated ByteCode and ABI".
- Torna a la pàgina del contracte.
- Ara la pestanya Contract mostrarà el codi font llegible.
- Ara pots interactuar des de la web d'Etherscan (pestaña Read Contract / Write Contract).
EXERCICI PROPOSAT: CHECKLIST DE DESPLEGAMENT¶
Enunciat:¶
Crea un document (Markdown o PDF) que sigui una Checklist de Desplegament Segur per a futurs projectes. Ha d'incloure els passos realitzats avui més mesures de seguretat bàsiques.
Requisits:
- Pre-Desplegament:
- Tests locals passats (Remix VM)
- Codi revisat (no hi ha hardcoded secrets)
- Compilador correcte seleccionat
- Saldo suficient a la wallet (ETH)
- Desplegament:
- Xarxa correcta verificada (Sepolia, no Mainnet)
- Gas limit adequat
- Adreça del contracte guardada en un lloc segur
- Post-Desplegament:
- Verificació a Etherscan completada
- Interacció bàsica provada (lectura i escriptura)
- Events verificats a Etherscan
- Propietari verificat (és la teva adreça?)
- Seguretat:
- Funcions crítiques protegides (onlyOwner)
- No hi ha funcions sensibles públiques
- S'han emès els events necessaris
Entrega:
- Pujar el checklist al Teams
- Incloure l'enllaç al contracte verificat a Sepolia com a prova.
Exemple de Checklist (Solució):¶
Fes clic per veure un exemple
# Checklist de Desplegament - Sistema Votacio
## 1. Preparació
- [x] Contracte compilat sense warnings
- [x] Tests funcionals a Remix VM passats
- [x] MetaMask connectat a Sepolia Testnet
- [x] Saldo disponible: 0.5 ETH
## 2. Desplegament
- [x] Environment: Injected Provider - MetaMask
- [x] Tx Hash: 0x1234...abcd
- [x] Adreça Contracte: 0xAb5...89f
- [x] Gas Usat: 450,000
## 3. Verificació
- [x] Codi pujat a Etherscan
- [x] Statut: Verified
- [x] Enllaç: https://sepolia.etherscan.io/address/0x...
## 4. Validació
- [x] Propietari correcte
- [x] Funcions protegides funcionen
- [x] Events visibles a Etherscan
Exemple checklist de desplegament - Sistema Votació
Checklist de Desplegament - Sistema Votació¶
1. Preparació¶
- Contracte compilat sense warnings
- Tests funcionals a Remix VM passats
- MetaMask connectat a Sepolia Testnet
- Saldo disponible: 0.5 ETH
2. Desplegament¶
- Environment: Injected Provider - MetaMask
- Tx Hash: 0x1234...abcd
- Adreça Contracte: 0xAb5...89f
- Gas Usat: 450,000
3. Verificació¶
- Codi pujat a Etherscan
- Statut: Verified
- Enllaç: https://sepolia.etherscan.io/address/0x...
4. Validació¶
- Propietari correcte
- Funcions protegides funcionen
- Events visibles a Etherscan
EXERCICI EXTRA (Opcional)¶
Script d'Interacció Remota:
- Utilitza la pestanya Write Contract d'Etherscan.
- Connecta la teva wallet des d'Etherscan (Connect to Web3).
- Realitza una votació des de la web d'Etherscan sense usar Remix.
- Fes una captura de pantalla de la transacció confirmada.
MATERIALS DE SUPORT¶
Cheat Sheet de Desplegament:¶
# DADES SEPOLIA
Chain ID: 11155111
RPC URL: https://sepolia.infura.io/v3/
Explorer: https://sepolia.etherscan.io
Faucet: https://sepoliafaucet.com
# COMANDAMENT REMIX
1. Compile (Ctrl+S)
2. Deploy & Run Transactions
3. Environment: Injected Provider
4. Account: Seleccionar compte MetaMask
5. Deploy -> Confirmar MetaMask
# VERIFICACIÓ ETHERSCAN
1. Copy Contract Address
2. View on Etherscan
3. Click "Verify and Publish"
4. Paste Source Code
5. Submit
Errors Comuns i Solucions:¶
| Error | Causa | Solució |
|---|---|---|
Wrong Network |
MetaMask en una xarxa diferent a Remix | Canvia MetaMask a Sepolia |
Insufficient Funds |
No tens ETH a Sepolia | Usa el faucet |
Nonce too low |
Transaccions pendents o cancel·lades | Reinicia MetaMask (Settings > Advanced > Reset) |
Compilation failed |
Versió compilador diferent | Assegura't que la versió a Etherscan coincideix amb Remix |
Contract not verified |
Codi font no coincideix exactament | Copia exactament el codi, incloent SPDX i pragma |
Bones Pràctiques de Desplegament:¶
✅ Fes:
- Verifica sempre el Chain ID abans de desplegar.
- Guarda l'adreça del contracte i l'ABI en un fitxer segur.
- Verifica el codi immediatament després de desplegar.
- Prova les funcions crítiques després del desplegament.
- Utilitza testnets abans de tocar Mainnet.
❌ No facis:
- No despleguis a Mainnet sense auditar.
- No comparteixis la teva Private Key mai.
- No confiïs en faucets no oficials (poden ser phishing).
- No oblidis revisar el gas estimat abans de confirmar.
Enllaços Útils:¶
- MetaMask: https://metamask.io
- Sepolia Faucet: https://sepoliafaucet.com
- Sepolia Etherscan: https://sepolia.etherscan.io
- Gas Tracker: https://etherscan.io/gastracker
- Remix Docs: https://remix-ide.readthedocs.io
QÜESTIONARI DE REPÀS¶
Respon abans de la propera sessió:
- Quina diferència hi ha entre ETH de Mainnet i ETH de Sepolia?
- Per què cal pagar gas encara que sigui a una testnet?
- Què significa "Verificar un contracte" a Etherscan?
- Què passa si desplegues un contracte a la xarxa incorrecta?
- Com pots recuperar l'accés al teu contracte si perds l'adreça?
- Què és el "Nonce" en una transacció?
- Per què és perillós connectar la wallet a llocs no coneguts?
- Quina informació necessites per interactuar amb un contracte des d'una DApp?
- Com pots veure els events emesos pel teu contracte?
- Què hauries de fer abans de desplegar a producció (Mainnet)?
Solucions:
Fes clic per veure la solució proposada
- Mainnet té valor real, Sepolia és gratuït i sense valor monetari.
- Perquè els validadors han de fer feina computacional real, encara que la moneda no valgui res.
- Publicar el codi font perquè coincideixi amb el bytecode desplegat.
- El contracte es desplega allí, potser no pots interactuar-hi o perds els ETH d'aquella xarxa.
- Mirant les transaccions de la teva wallet a Etherscan (Contract Creation).
- El comptador de transaccions d'una compte (evita doble despesa).
- Poden demanar-te signar transaccions malicioses que buidin la teva wallet.
- Adreça del contracte, ABI i Provider (connexió blockchain).
- A la pestanya "Events" d'Etherscan o escoltant-los des de la DApp.
- Auditar, provar exhaustivament a testnet, verificar codi, tenir pla de contingència.
PREPARACIÓ PER LA SESSIÓ 5 (INICI UD3)¶
Atenció: Canvi de Unitat Didàctica!
A partir de la propera sessió comencem la Implementació de DApps.
Abans de la propera classe:
- Tenir el contracte de Votació desplegat i verificat a Sepolia.
- Guardar l'Adreça del Contracte i l'ABI (es genera al compilar a Remix).
- Instal·lar Node.js (versió LTS) al teu ordinador.
- Tenir un editor de codi instal·lat (VS Code recomanat).
- Repassar conceptes bàsics de JavaScript (funcions, async/await).
Material a revisar:
- Adreça del contracte desplegat.
- ABI del contracte (JSON).
- Conceptes bàsics de JavaScript asíncron.
Pròxima sessió: Introducció a Ethers.js i connexió Frontend-Blockchain.
💡 CONSELLS PER A L'ALUMNAT¶
Seguretat amb MetaMask:¶
- Seed Phrase:
- ✅ Escriu-la en paper.
- ✅ Guarda-la en un lloc segur (caixa forta).
- ❌ Mai la guardis al núvol (Google Drive, Email).
- ❌ Mai la comparteixis amb ningú (ni suport tècnic).
- Connexions:
- Desconnecta les DApps que no utilitzis (Settings > Connected Sites).
- Revisa els permisos de signatura abans de confirmar.
- Testnets:
- Utilitza sempre testnets per aprendre.
- Si algú et promet ETH gratis a Mainnet, és estafa.
Gestió de Gas:¶
- A Sepolia, pots posar el Gas Limit alt sense por (no gastaràs diners reals).
- A Mainnet, calcula bé el gas per no quedar-te penjat.
- Si una transacció tarda molt, pots accelerar-la augmentant el gas (Replace Transaction).
Organització del Projecte:¶
Crea una carpeta al teu ordinador per al curs:
/curs-blockchain
/contracts
- 01_HolaBlockchain.sol
- 02_GestioUsuaris.sol
- 03_SistemaVotacio.sol
/desplegaments
- adreces.txt (Guarda aquí les adreces desplegades!)
- abis/ (Guarda els JSON de l'ABI)
/docs
- checklist_desplegament.md
✅ CHECKLIST FINAL DE LA SESSIÓ 4:
- Tinc MetaMask instal·lat i configurat
- Tinc ETH a Sepolia Testnet
- He desplegat el contracte de Votació a Sepolia
- He verificat el codi a Etherscan
- He provat les funcions des de Remix amb MetaMask
- He guardat l'Adreça i l'ABI del contracte
- He completat la Checklist de Desplegament
- Tinc Node.js instal·lat per la propera sessió
-
Un faucet és un servei web que et permet obtenir petites quantitats de criptomonedes de prova (com ETH de testnet) de manera gratuïta. S'utilitza principalment a les xarxes de test (com Sepolia) perquè desenvolupadors i usuaris puguin fer proves sense gastar diners reals. Normalment, només cal connectar la teva wallet o introduir la teva adreça pública, i el faucet t'enviarà una petita quantitat de monedes per fer transaccions o desplegar contractes en l'entorn de proves. ↩
