Salta el contingut

span

Logo esquerra


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:

  1. ✅ Diferenciar entre Mainnet, Testnet i entorns locals (Remix VM)
  2. ✅ Configurar MetaMask per interactuar amb Sepolia Testnet
  3. ✅ Obtenir ETH de prova (faucet) per pagar gas
  4. ✅ Desplegar un smart contract a una xarxa real (Sepolia)
  5. ✅ Verificar el codi font a Etherscan
  6. ✅ Interactuar amb el contracte desplegat des de MetaMask
  7. ✅ 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ó:

  1. Desplegar contracte.
  2. Copiar adreça del contracte.
  3. Anar a "Verify and Publish" a Etherscan.
  4. Pujar el codi font i configuració del compilador.
  5. 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é)

  1. Ves a https://metamask.io
  2. Descarrega l'extensió per al navegador (Chrome/Firefox/Brave).
  3. Crea una cartera nova (Guarda la Seed Phrase en un lloc segur! Mai la comparteixis).

Pas 2: Afegir Xarxa Sepolia

  1. Obre MetaMask.
  2. Fes clic al selector de xarxes (dalt a l'esquerra, on diu "Ethereum Mainnet").
  3. Fes clic a Add network.
  4. 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

Pas 3: Obtenir Sepolia ETH (Faucet)

  1. Ves a https://sepoliafaucet.com o https://www.alchemy.com/faucets/ethereum-sepolia
  2. Connecta la teva wallet o posa la teva adreça pública.
  3. Demana tokens (normalment 0.5 ETH per dia).
  4. Espera confirmació a MetaMask (pots trigar uns minuts).
  5. 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

  1. Obre Remix IDE.
  2. Carrega el fitxer 03_SistemaVotacio.sol (de la sessió anterior).
  3. Assegura't que compila correctament (✅ verd).

Pas 2: Connectar MetaMask a Remix

  1. A Remix, ves a la pestanya DEPLOY & RUN TRANSACTIONS 🚀.
  2. A ENVIRONMENT, selecciona Injected Provider - MetaMask.
  3. MetaMask s'obrirà demanant connexió. Accepta.
  4. Assegura't que MetaMask està a la xarxa Sepolia.

Pas 3: Desplegar el Contracte

  1. A la secció CONTRACT, assegura't que surt SistemaVotacio.
  2. Fes clic al botó taronja Deploy.
  3. MetaMask s'obrirà amb la finestra de confirmació de transacció. - Revisa el Gas Fee estimat. - Fes clic a Confirm.
  4. Espera la confirmació (pot trigar 15-30 segons a Sepolia).
  5. A Remix, veuràs el contracte sota Deployed Contracts amb una adreça blava (ex: 0xAb5...).

Pas 4: Interactuar amb el Contracte Desplegat

  1. Copia l'adreça del contracte desplegat.
  2. A Remix, dins del contracte desplegat: - afegirCandidat("Partit A") → Confirmar a MetaMask. - afegirCandidat("Partit B") → Confirmar a MetaMask. - iniciarVotacio() → Confirmar a MetaMask.
  3. Canvia de compte a MetaMask (Account 2) i vota: - votar(1) → Confirmar a MetaMask.
  4. Consulta resultats (no cal confirmació MetaMask): - obtenirTotsCandidats() → Veure vots.

EXERCICI 3: Verificació a Etherscan

Pas 1: Trobar el Contracte

  1. Fes clic dret sobre l'adreça del contracte a Remix → View on Etherscan.
  2. S'obrirà la pàgina del contracte a Sepolia Etherscan.
  3. Veuràs una pestanya que diu Contract amb el missatge: "Contract source code not verified".

Pas 2: Verificar el Codi

  1. Fes clic a Verify and Publish.
  2. 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
  3. A la caixa de codi, copia i enganxa tot el contingut del teu fitxer .sol.
  4. Fes clic a Verify and Publish.

Pas 3: Confirmació

  1. Si tot és correcte, veuràs: "Successfully generated ByteCode and ABI".
  2. Torna a la pàgina del contracte.
  3. Ara la pestanya Contract mostrarà el codi font llegible.
  4. 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:

  1. Pre-Desplegament:
  • Tests locals passats (Remix VM)
  • Codi revisat (no hi ha hardcoded secrets)
  • Compilador correcte seleccionat
  • Saldo suficient a la wallet (ETH)
  1. Desplegament:
  • Xarxa correcta verificada (Sepolia, no Mainnet)
  • Gas limit adequat
  • Adreça del contracte guardada en un lloc segur
  1. Post-Desplegament:
  • Verificació a Etherscan completada
  • Interacció bàsica provada (lectura i escriptura)
  • Events verificats a Etherscan
  • Propietari verificat (és la teva adreça?)
  1. 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:

QÜESTIONARI DE REPÀS

Respon abans de la propera sessió:

  1. Quina diferència hi ha entre ETH de Mainnet i ETH de Sepolia?
  2. Per què cal pagar gas encara que sigui a una testnet?
  3. Què significa "Verificar un contracte" a Etherscan?
  4. Què passa si desplegues un contracte a la xarxa incorrecta?
  5. Com pots recuperar l'accés al teu contracte si perds l'adreça?
  6. Què és el "Nonce" en una transacció?
  7. Per què és perillós connectar la wallet a llocs no coneguts?
  8. Quina informació necessites per interactuar amb un contracte des d'una DApp?
  9. Com pots veure els events emesos pel teu contracte?
  10. Què hauries de fer abans de desplegar a producció (Mainnet)?

Solucions:

Fes clic per veure la solució proposada
  1. Mainnet té valor real, Sepolia és gratuït i sense valor monetari.
  2. Perquè els validadors han de fer feina computacional real, encara que la moneda no valgui res.
  3. Publicar el codi font perquè coincideixi amb el bytecode desplegat.
  4. El contracte es desplega allí, potser no pots interactuar-hi o perds els ETH d'aquella xarxa.
  5. Mirant les transaccions de la teva wallet a Etherscan (Contract Creation).
  6. El comptador de transaccions d'una compte (evita doble despesa).
  7. Poden demanar-te signar transaccions malicioses que buidin la teva wallet.
  8. Adreça del contracte, ABI i Provider (connexió blockchain).
  9. A la pestanya "Events" d'Etherscan o escoltant-los des de la DApp.
  10. 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:

  1. 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).
  1. Connexions:
  • Desconnecta les DApps que no utilitzis (Settings > Connected Sites).
  • Revisa els permisos de signatura abans de confirmar.
  1. 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ó

  1. 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.