Molt bones. L’entrada d’avui està dedicada a l’explorador de blockchain Etherscan, un dels més coneguts dins de l’ecosistema Ethereum.
Moltes de vosaltres segurament ja esteu familiaritzades amb l’ús general d’un explorador de blockchain, sobretot de cara a confirmar si una determinada transacció s’ha introduït a la blockchain.
Amb tot això, a l’entrada d’avui explorarem alguns casos i funcionalitats més avançades, i no tan evidents a primera vista, de l’explorador Etherscan.
Etherscan. Visió General
Per accedir a l’explorador d’Etherscan, pots navegar a través de la següent ruta:
En aquest cas, estarem explorant la blockchain principal d’Ethereum, la mainnet, pero també podem explorar les diferents xarxes de test que existeixen, col·locant simplement el nom davant del domini principal. Així mateix, per explorar la xarxa Rinkeby, una de les testnet més conegudes, ho faríem així:
Dins d’Etherscan, en el cercador principal, podem buscar per adreces, que seria el cas més típic, pero també per Transaction Hash, que seria el hash d’una transacció concreta, o per Token.
Si busquem per un token o smart contract concret, com per exemple ENS (Ethereum Name Service), veurem que la URL és d’aquest estil:
https://etherscan.io/token/0xc18360217d8f7ab5e7c516566761ea12ce7f9d72
Com pots veure, també es troba dins d’una determinada adreça, però en aquest cas, davant de l’adreça tenim el directori /token, fet que fa que Etherscan mostri informació centrada en el propi token, i no tant en l’adreça. Així, aqui veurem coses com el símbol del token, estadístiques dels holders, etc.
Com hem vist, un token resideix dins d’una determinada adreça. Això fa que, de la URL anterior, podem substituir el terme /token per /address. En aquest cas, la informació que mostra Etherscan està més centrada en la pròpia adreça i en les transaccions en les que ha estat implicada, sense tenir rellevancia el fet que sigui l’adreça d’un smart contract. Als teus ulls, veuràs la mateixa informació que si es tractés de l’adreça d’una cartera normal.
https://etherscan.io/address/0xc18360217d8f7ab5e7c516566761ea12ce7f9d72
Un cop conegut això, passem a centrar-nos en com podem interactuar amb un contracte intel·ligent, prenent com exemple ENS.
Interacció amb un Smart Contract
Si analitzem la URL del token que hem vist en l’exemple anterior, si mirem sota les dades principals, veurem un apartat amb diverses pestanyes. Aquí ens centrarem en la pestanya de Contract.
El primer que veuràs en aquesta pestanya són dues pestanyes secundaries: Read Contract y Write Contract. Això posa de rellevancia les dues maneres que tens per interactuar amb un smart contract, que son les de llegir informació, o escriure informació.
A la pestanya de Read Contract veuràs un llistat amb totes les funcions que permeten llegir informació d’aquest smart contract. En aquest cas, executant qualsevol d’aquestes funcions, el smart contract únicament retornarà un resultat, pero no escriu res a la cadena de blocs.
Algunes d’aquests funcions es poden executar tal qual, i d’altres demanen que l’usuari introdueixi un o varis paràmetres d’entrada. A continuació tens alguns exemples, de les funcions que pots executar en aquest smart contract:
- symbol: retorna el símbol del token, en aquest cas “ENS”.
- totalSuply: retorna l’oferta total de moneda del token.
- balanceOf: requereix indicar una adreça com a parametre d’entrada i indica el seu balanç.
Com hem dit, també tenim informacions d’escriptura. Per analitzar-les, pots dirigir-te a la pestanya de Write Contract.
El que veuràs aquí és un llistat de totes les funcions que accepta aquest smart contract i que la seva execució implica escriure dades a la blockchain, com realitzar transaccions.
Aquí és important fer un parèntesi, i és que, per executar aquests tipus de funcions, necessitem establir una conexió amb el contracte. Per establir aquesta conexió, caldrà que connectem Metamask per interactuar amb el contracte a través d’una de les nostres adreçes.
Un cop Etherscan detecti que estem connectats a través d’una de les nostres adreçes, ja podrem executar algunes de les funcions que trobem aquí.
Com a petit incís, és important que l’adreça des de la que interectuis disposi de fons, ja sigui per si vols fer una transferencia a una altra direcció, o pel propi cost del gas que impliquen les funcions d’escriptura.
Algunes de les funcions que trobem aquí son:
- transfer: permet transferir una determinada quantitat de tokens a una adreça determinada. Com a paràmetres cal que indiquem l’adreça i la quantitat de tokens, en aquest cas ENS, que volem transferir.
- mint: permet mintejar nous tokens i distribuir-los cap a una determinada adreça. Aquesta funció només pot ser executada pel propietari del smart contract.
Veure el Codi d’un Contracte
Si volem veure el codi del contracte que estem analitzant, únicament cal que cambiem el terme .io de la URL anterior, per deth.net.
https://etherscan.deth.net/token/0xc18360217d8f7ab5e7c516566761ea12ce7f9d72
Aquí veurem el codi complet del contracte, escrit en Solidity.
Analitzar el codi et permetra veure com estàn escrites les diferents funcions que es poden executar, entre les quals trobaràs les que hem posat com exemple en l’apartat anterior, així com altres funcions internes, que no es poden executar des de fora del contracte.
Entre altres detalls adicionals, també veurem les dependencies de que fa us el contracte, com OpenZeppelin.
Decodificar Dades d’Input
Si tornem a la vista anterior per veure la informació del token, ara ens centrarem en com descodificar les dades d’input d’una determinada transacció.
Per això cal que retornis a la URL principal del token, i et dirigerixis a la pestanya de Transfers.
https://etherscan.io/token/0xc18360217d8f7ab5e7c516566761ea12ce7f9d72
Aquí veuràs un llistat amb totes les transaccions que han tingut lloc en aquest contracte. Si cliquem sobre una transacció qualsevol, se’ns obrira una nova finestra on podrem veure informació mes concreta, com el seu hash, l’estat, o el número de bloc on ha estat escrita.
Si seguim baixant, veurem un camp anomenat Input Data. Si cliquem sobre Decode Input veurem la informació que conté en un format més entendible a l’ull humà.
A continuació et deixò l’enllaç amb l’exemple que he utilitzat jo:
https://etherscan.io/tx/0x28ee311e626315bbd60a681d9edec28ef9bf6b51263fca4a327358a2ab7b5367
Cerca de Contractes
Fins ara ens hem centrar en l’analisi d’un contracte concret, pero ara ens centrarem en veure algunes formes de cerca de contractes.
Per començar, pots dirigir-te a la pestanya More del menú superior de Etherscan. Aquí, a la columna de Developers, veuràs una opció que posa Smart Contract Search.
Si marques aquesta opció, t’apareixerà una caixa de cerca des d’on podràs teclejar qualsevol cadena de text, i el sistema t’entregarà totes les coincidencies, no només relatives al nom del contracte, sinó també a noms de funcions de qualsevol contracte, etc.
Aquesta caixa de cerca, a diferència de la caixa de cerca principal que apareix a la pàgina principal d’Etherscan, és exclusiva per Smart Contracts, amb la qual soca, si ens volem centrar amb la cerca de contractes, podrem obtenir resultats molt mes acurats.
Addicionalment, un cop feta una primera cerca, a la dreta dels resultats veuràs algunes opcions per acotar mes la cerca, com la versió de Solidity amb que estàn escrits els contractes que vols buscar, la llicència amb la que estàn publicats, etc.
Diff de Contractes
Dins de la pestanya More del menú principal, també a la columna Developers, podràs trobar una altre funcionalitat anomenada Contract Diff Checker.
El que et permet aquesta funcionalitat és, un cop indicades dues adreçes de contracte, trobar les diferències. Això és útil sobretot de cara a comparar dues versions diferents d’un mateix contracte.
A continuació tens l’enllaç amb l’exemple que he utilitzat jo, comparant dues versions diferents del contracte Uniswap:
En el cas d’Uniswap, una de les primeres diferències que ja veiem és la versió de Solidity utilitzada, però si fas un anàlisi més exhausitiu, podràs veure moltes més diferències.
Xat Entre Adreçes
L’última de les opcions que explorarem en aquesta guia és la de xat entre adreçes. Aquesta funcionalitat la podràs veure des de la pàgina d’una adreça concreta. A continuació et copio un exemple, corresponent a l’adreça del hacker involucrat amb el hack de Ronin network.
https://etherscan.io/address/0x098b716b8aaf21512996dc57eb0615e2383e2f96
Un cop estant a la pàgina, al costat del titol de la pàgina on es mostra el nom de l’adreça, veuràs un icona amb el símbol de missatge. Si cliques sobre ell, aniràs a parar a una pàgina de xat, on podràs enviar missatges de text a aquesta adreça concreta.
Aquesta adreça, al ser coneguda, pot ser un bon exemple per veure els missatges que van tenir lloc, pero si vols fer la prova d’enviar un missatge, et recomano que ho facis amb una altre adreça que també sigui teva.
Despedida
Si has arribat fins al final, espero que hagis disfrutat de veure la quantitat d’opcions que ofereix Etherscan. En aquesta guia m’he centrat en les que he considerat més interessants, però si fas una petita exploració per tu mateixa segur que en trobes moltes més.
En aquest cas, et convido a compartir la teva experiència en els comentaris, i ens veiem aviat!