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 Browser Extension - Sepolia Testnet - 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ó DEPLOY, assegura't que surt SistemaVotacio.
  2. Fes clic al botó Deploy.
  3. MetaMask s'obrirà amb la finestra de confirmació de transacció.
    • Revisa les dades estimades.
    • Fes clic a Confirm.
  4. Espera la confirmació (pot trigar 15-30 segons a Sepolia). Sortirá una finestreta amb la confirmació
  5. A Remix, veuràs el contracte sota Deployed Contracts amb una adreça (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ó Automàtica a Etherscan des de Remix

Objectiu: Verificar el codi font del contracte desplegat utilitzant el plugin de Remix, permetent que quedi públic i llegible a l'explorador de blocs.

Per què fem servir el plugin? El mètode manual (copiar/enganxar codi a la web d'Etherscan) és propens a errors (espais buits, versions de compilador incorrectes, llibreries no afegides). El plugin de Remix envia les metadades exactes de la compilació directament a l'API d'Etherscan, garantint una verificació perfecta.

Pas 1: Accedir al Plugin de Verificació

  1. A Remix IDE, mira la barra lateral esquerra.
  2. Fes clic a la icona del Plugin Manager (la quadrícula de 4 quadres, a sota de tot a l'esquerra, o busca "Plugin Manager" al menú superior).
  3. Busca el plugin anomenat "Contract Verification" (sovint desenvolupat per Remix Team o Etherscan).
  4. Fes clic a Activate.
  5. Apareixerà una nova icona a la barra lateral esquerra (sovint una lupa o un escut amb un check). Fes-hi clic.

Pas 2: Configurar la Verificació

  1. Dins del panel del plugin "Contract Verification":
  • Chain: Selecciona Sepolia (assegura't que MetaMask està connectat a Sepolia).
  • Contract Address: Enganxa l'adreça del contracte que has desplegat anteriorment (ex: 0xAb5...).
  • Compiler Version: El plugin hauria de detectar automàticament la versió que vas usar per compilar (ex: v0.8.20+commit.a1b7c3d). Si no la detecta, selecciona-la manualment de la llista. Ha de coincidir exactament amb la que vas usar a la pestanya "Solidity Compiler".
  • Lic*ense Type: Selecciona MIT License (o la que hagis posat al codi, ex: None si no en tens).
  1. Fes clic al botó Verify Contract.

Pas 3: Confirmació i Resultats

  1. El plugin contactarà amb l'API de Sepolia Etherscan.
  2. Si tot és correcte, veuràs un missatge verd: "Contract verified successfully".
  3. El plugin et proporcionarà un enllaç directe a la pàgina del teu contracte a Etherscan.
  4. Fes clic a l'enllaç. Veuràs que la pestanya Code ara mostra el teu codi font original, ben formatat i llest per ser llegit.
  5. A més, apareixeran les pestanyes Read Contract i Write Contract, que permeten interactuar amb el contracte directament des de la web sense necessitat de Remix.

Pas 4: Interacció des d'Etherscan (Opcional però recomanable)

  1. A la pàgina del contracte verificat a Etherscan, ves a la pestanya Write Contract.
  2. Fes clic a Connect to Web3 i connecta la teva MetaMask.
  3. Desplega la funció afegirCandidat (si encara no ho has fet) o votar.
  4. Introdueix els valors i fes clic a Write.
  5. MetaMask s'obrirà per confirmar la transacció.
  6. Un cop confirmada, veuràs com el canvi es reflecteix immediatament a la pestanya Read Contract.

CHECKLIST DE DESPLEGAMENT

Utilitza aquesta llista de verificació per assegurar-te que has completat tot el cicle de vida d'un smart contract a la xarxa de proves Sepolia. Marca cada pas a mesura que el compleixis.

1. Preparació de l'Entorn

  • MetaMask instal·lat i configurat a la xarxa Sepolia Testnet.
  • Tens ETH de prova (SepoliaETH) al teu compte (saldo > 0).
  • Remix IDE obert i connectat a MetaMask (Environment: Injected Provider - MetaMask).

2. Desenvolupament i Compilació

  • Codi Solidity escrit correctament (sense errors de sintaxi).
  • Versió del compilador a Remix coincideix amb la declarada al codi (pragma solidity ^0.8.x;).
  • Compilació exitosa (botó "Compile" verd sense warnings crítics).

3. Desplegament (Deploy)

  • Selecció de l'entorn "Injected Provider - MetaMask" a la pestanya "Deploy & Run Transactions".
  • Selecció del contracte correcte a desplegar.
  • Confirmació de la transacció a MetaMask.
  • El contracte apareix a la llista de "Deployed Contracts" a Remix amb una adreça válida (comença per 0x...).

4. Verificació Automàtica (NO MANUAL)

  • Plugin "Contract Verification" activat a Remix.
  • Adreça del contracte copiada al plugin.
  • Versió del compilador detectada correctament pel plugin.
  • Botó "Verify Contract" premut i missatge d'èxit rebut.
  • Enllaç a Etherscan generat i funcional.

5. Validació Final

  • Visitar l'enllaç d'Etherscan proporcionat pel plugin.
  • Confirmar que la pestanya Code mostra el teu codi font llegible.
  • Confirmar que les pestanyes Read Contract i Write Contract estan disponibles i actives.

APARTAT: INTERACCIÓ AMB EL CONTRACTE VERIFICAT

Un cop el contracte està verificat, ja no necessites Remix per interactuar-hi bàsicament. Etherscan es converteix en una interfície d'usuari completa per al teu contracte.

Com provar les funcions des d'Etherscan:

  1. Lectura de Dades (Read Contract): - Ves a la pestanya Read Contract a Etherscan. - Aquí veuràs totes les funcions public o external que no modifiquen l'estat (view/pure). - Exemple: Si tens una funció getCandidat(uint id), introdueix l'ID i fes clic a "Query". Veuras el resultat immediatament sense gastar gas.

  2. Escriptura de Dades (Write Contract): - Ves a la pestanya Write Contract. - Fes clic a Connect to Web3 i autoritza MetaMask. - Busca la funció que vols executar (ex: votar). - Introdueix els paràmetres necessaris. - Fes clic a Write. MetaMask s'obrirà per confirmar la transacció. - Un cop confirmada, pots anar a la teva cartera o a la pestanya "Events" del contracte per veure el registre de la transacció.

Avantatge: Aquest mètode és ideal per fer proves ràpides o permetre que usuaris finals interactuïn amb el contracte sense haver de configurar un frontend complex.

APARTAT: BONES PRÀCTIQUES I SEGURETAT AL DESPLEGAMENT

1. Verifica Sempre el Codi Un contracte no verificat és una "caixa negra". La verificació genera confiança, ja que qualsevol pot auditar el codi. Utilitza sempre el plugin de Remix o eines com Hardhat/Foundry per automatitzar aquest procés. Evita la verificació manual tret que sigui estrictament necessari.

2. Gestiona les Claus Privades amb Cura - Mai comparteixis la teva Seed Phrase ni la clau privada. - Assegura't que estàs connectat a Sepolia (Testnet) abans de desplegar o signar cap transacció durant les pràctiques. Un error de xarxa podria costar diners reals si estàs a Mainnet.

3. Prova Abans de Desplegar a Producció - Utilitza xarxes de proves (Sepolia, Holesky) per validar la lògica del contracte. - Realitza tests exhaustius amb diferents usuaris i casos límit abans de considerar un desplegament a una xarxa principal (Mainnet).

4. Documenta les Transaccions - Guarda les adreces dels contractes desplegats i els hashos de les transaccions importants. - Etherscan et permet crear una llista de "Watch List" per seguir fàcilment l'activitat dels teus contractes.

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 (Manual) Codi font no coincideix exactament (espais, tabs) Utilitza el plugin de Remix per evitar errors de còpia.
Compiler version mismatch La versió seleccionada a Etherscan no és la mateixa que la usada per compilar Al plugin de Remix, assegura't que la versió detectada coincideix amb la de la pestanya "Solidity Compiler".
Invalid API Key El plugin necessita una clau API (de vegades) Normalment Remix gestiona això automàticament per a testnets. Si falla, prova de nou passats uns minuts o utilitza una clau API gratuïta d'Etherscan si el plugin ho demana.
Already Verified El contracte ja va ser verificat anteriorment No cal fer res. El codi ja és visible.

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.