scieee Science in your language
[es] (orig)

Búsqueda automática de contratos Ethereum en tiempo real

Abstract

En la red principal de Ethereum se despliegan continuamente nuevos contratos y su código binario está disponible públicamente, lo que proporciona una enorme colección de código real de aplicaciones reales que se puede utilizar para realizar investigaciones sobre ellos. En la red de Ethereum se almacena el código compilado del contrato, aunque en algunos casos los desarrolladores de contratos publican el código fuente en repositorios públicos, como por ejemplo Etherscan. Para realizar investigaciones sobre esta base de código, resulta de gran interés poder disponer de una herramienta que pueda cargar contratos inteligentes que estén verificados en la red de Ethereum para así buscar aquellos que cumplan condiciones de selección complejas, como, por ejemplo: tipo de licencia del código, versión del compilador, optimizaciones, así como otras condiciones complejas. En este trabajo se introducen los conceptos fundamentales de la tecnología de cadena de bloques, se describen las principales características de Ethereum, se revisa la exploración de datos en Ethereum junto a los repositorios públicos más relevantes que almacenan código fuente de contratos inteligentes desplegados en Ethereum, y se desarrolla un prototipo de aplicación para la descarga, búsqueda y compilación de contratos inteligentes de acuerdo con diversas condiciones de selección.

Read accessible full text

Búsqueda automática de contratos Ethereum en tiempo real

Author: Pérez Belizón, Manuel David
Year: 2024
Source: https://docta.ucm.es/bitstreams/6cece254-be04-42e5-80d4-9d9a4b60e751/download
BÚSQUEDA AUTOMÁTICA DE CONTRATOS
ETHEREUM EN TIEMPO REAL
REAL-TIME SEARCH OF ETHEREUM
CONTRACTS
T
RABAJO FIN DE GRADO
CURSO 2023-2024
AUTOR
MANUEL DAVID PÉREZ BELIZÓN
DIRECTORES
PABLO GORDILLO ALGUACIL Y JESÚS CORREAS FERNÁNDEZ
GRADO EN INGENIERÍA INFORMÁTICA
FACULTAD DE INFORMÁTICA
UNIVERSIDAD COMPLUTENSE DE MADRID
BÚSQUEDA AUTOMÁTICA DE CONTRATOS
ETHEREUM EN TIEMPO REAL
REAL-TIME SEARCH OF ETHEREUM
CONTRACTS
TRABAJO DE FIN DE GRADO EN INGENIERÍA INFORMÁTICA
AUTOR
MANUEL DAVID PÉREZ BELIZÓN
DIRECTOR
PABLO GORDILLO ALGUACIL Y JESÚS CORREAS FERNÁNDEZ
CONVOCATORIA: JUNIO 2024
GRADO EN INGENIERÍA INFORMÁTICA
FACULTAD DE INFORMÁTICA
UNIVERSIDAD COMPLUTENSE DE MADRID
27 DE MAYO DE 2024
III
DEDICATORIA
A mis pad es que han su ido conmigo y me han apoyado du an e oda mi
e apa uni e si a ia, a mi he mano Ra a, que pa a mí es un modelo a segui que
siemp e es á ahí pa a echa me un cable si lo necesi o, a mis lalos que espe o
que se sien an muy o gullos de mí y a odos mis amigos que han enido que
aguan a mis mejo es y peo es e apas es os años. G acias a odos.

V
AGRADECIMIENTOS
G acias a odas aquellas pe sonas que me han acompañado du an e
odo es e iempo y me han hecho se quien soy. G acias a Jesús y a Pablo, los
di ec o es de es e abajo, que me han guiado y ayudado siemp e que lo he
necesi ado.
VII
RESUMEN
Búsqueda au omá ica de con a os E he eum en iempo eal
En la ed p incipal de E he eum se despliegan con inuamen e nue os
con a os y su código bina io es á disponible públicamen e, lo que
p opo ciona una eno me colección de código eal de aplicaciones eales
que se puede u iliza pa a ealiza in es igaciones sob e ellos. En la ed de
E he eum se almacena el código compilado del con a o, aunque en algunos
casos los desa ollado es de con a os publican el código uen e en
eposi o ios públicos, como po ejemplo E he scan.
Pa a ealiza in es igaciones sob e es a base de código, esul a de g an
in e és pode dispone de una he amien a que pueda ca ga con a os
in eligen es que es én e i icados en la ed de E he eum pa a así busca
aquellos que cumplan condiciones de selección complejas, como, po
ejemplo: ipo de licencia del código, e sión del compilado , op imizaciones,
así como o as condiciones complejas.
En es e abajo se in oducen los concep os undamen ales de la
ecnología de cadena de bloques, se desc iben las p incipales ca ac e ís icas
de E he eum, se e isa la explo ación de da os en E he eum jun o a los
eposi o ios públicos más ele an es que almacenan código uen e de
con a os in eligen es desplegados en E he eum, y se desa olla un p o o ipo
de aplicación pa a la desca ga, búsqueda y compilación de con a os
in eligen es de acue do con di e sas condiciones de selección.
Palab as cla e
Cadena de bloques, E he eum, E he scan, aplicación web, aplicación de
consola, con a os in eligen es.
15
Capí ulo 1 - In oducción
1.1 Mo i ación
En la cadena de bloques de E he eum cada ansacción que modi ique
el es ado de la cadena equie e una comisión, ya sea al in e ac ua con una
unción de un con a o in eligen e o al en ia una c ip omoneda. Ac ualmen e
en la ed de E he eum se ealizan en o no a 1 millón de ansacciones dia ias1,
con una comisión media de en e 3 y 30 dóla es en el úl imo año dependiendo
de la conges ión de la ed2. Es o implica que, en un en o no de al a conges ión
se pod ían gas a en o no a 30 millones de dóla es en comisiones de ed.
Una g an pa e de odas es as comisiones ienen de la in e acción con
con a os in eligen es. Un con a o in eligen e es un p og ama que se
almacena en la cadena de bloques y que se ejecu a g acias a una máquina
i ual in eg ada en cada nodo de la ed. El cos e de las comisiones al
in e ac ua con con a os in eligen es iene dado po la can idad de
ins ucciones que haga al a ejecu a . Con es e p opósi o, se han desa ollan
nue as écnicas de op imización po pa e de la comunidad cien í ica en los
úl imos años. Fundamen almen e po la disponibilidad de g andes conjun os de
p og amas eales sob e los que se pueden ealiza es udios expe imen ales. La
cadena de bloques de E he eum es especialmen e in e esan e, pues oda la
in o mación de las ansacciones ealizadas es á disponible públicamen e.
Sin emba go, aunque el código compilado de los con a os in eligen es
desplegados es público, el código uen e no iene po qué se lo. Algunos
1 h ps://e he scan.io/cha / x
2 h ps://e he scan.io/cha /a g- x ee-usd

16
desa ollado es publican el código uen e de sus con a os en algunos
eposi o ios públicos, como po ejemplo E he scan [1], pe o no es posible hace
búsquedas con condiciones complejas de selección de con a os.
O o campo elacionado con la in es igación en E he eum es el de la
segu idad, ya que al a a de un en o no descen alizado no hay esponsables
a los que acudi en casos de b echas de segu idad y esul a de g an
impo ancia a a de asegu a en la mayo medida de lo posible la segu idad
de un con a o in eligen e. Po ello, ambién en es a á ea esul a undamen al
con a con g andes conjun os de p og amas eales pa a pode desa olla
nue as écnicas que ga an icen la segu idad de los con a os.
Po odo ello, la p incipal mo i ación de es e p oyec o es c ea una
he amien a que si a de u ilidad a es os in es igado es, una he amien a que
les pe mi a ecopila y busca con a os que cumplan condiciones complejas
sob e di e sas ca ac e ís icas y ecupe a su código uen e.
1.2 Obje i os
El obje i o de es e T abajo de Fin de G ado es la implemen ación de un
sis ema que pe mi a ca ga con a os desplegados en la ed p incipal de
E he eum, almacena los, busca aquellos que cumplan con cie os c i e ios de
búsqueda complejos, ecupe a su código uen e y las opciones de
compilación que ue on u ilizadas y pode compila los con los mismos
pa áme os o con o os.
De mane a más especí ica, es e p oyec o iene el in de diseña e
implemen a dos aplicaciones, una aplicación de consola y una aplicación
web y que ambas pe mi an al usua io:
 Busca di ecciones de con a os desplegados en la ed p incipal
según c i e ios de búsqueda especí icos.
17
 Desca ga con a os e i icados pa a almacena su código uen e
y opciones de compilación.
 Consul a odos los con a os p e iamen e ca gados y ecupe a los
con a os según c i e ios de búsqueda especí icos.
 Compila con a os in eligen es pa a ob ene sus códigos
compilados.
1.3 Plan de abajo
Pa a consegui los obje i os se ha elabo ado un plan de abajo con
euniones semanales con los di ec o es del p oyec o pa a expone ideas y
he amien as que se pudiesen se de u ilidad.
En el inicio de es e abajo se plan ea on dos al e na i as. Po una pa e,
se plan eó la ins alación de un nodo clien e de la ed de E he eum pa a
ob ene di ec amen e la in o mación en iempo eal de la cadena de bloques
de E he eum. Po o a pa e, se plan eó la u ilización de se icios disponibles de
consul a de E he eum en iempo eal y eposi o ios públicos de código uen e
de con a os.
La ins alación de un nodo clien e plan ea di e sos incon enien es,
undamen almen e la g an can idad de con a os que se suben dia iamen e
que se aduce en una can idad ab umado a de da os, así como la necesidad
de ene un ha dwa e con unos equisi os mínimos jun o con un so wa e clien e
ejecu ándose con inuamen e.
Po es os mo i os se desca ó la ins alación de un nodo clien e pa a
cen a se en eposi o ios públicos de con a os.
Se ealizó una in es igación pa a pode en ende y descub i
he amien as que uesen de po encial ayuda. Las p incipales he amien as
es udiadas son E he scan [1], Bloxy [2] y Bi que y [3].
18
El desa ollo de las aplicaciones se ha lle ado a cabo de mane a
secuencial, p ime o cen ando el oco en la uncionalidad y luego apo ando
una in e az g á ica adap ada a dicha uncionalidad.
La uncionalidad se ha ido ex endiendo y cambiando aco de a los
di ec o es de es e abajo ya que apa e de di ec o es ellos ambién ealizan un
abajo de in es igación en la ma e ia.
19
Capí ulo 2 - Tecnología blockchain y Sma
con ac s
La ecnología de cadena de bloques o ecnología blockchain ue
po p ime a ez concep ualizada po Sa oshi Nakamo o en su a ículo
llamado “Bi coin: A Pee - o-Pee Elec onic Cash Sys em” [4]. Poco
después en 2009 Bi coin ue c eado, siendo es a la p ime a cadena de
bloques en uncionamien o con a día de hoy g an acep ación.
Sa oshi Nakamo o c eó un sis ema en el que los usua ios pueden
en ia y ecibi ansacciones de la c ip omoneda Bi coin basado en
c ip og a ía y no en con ianza, lo que hace posible que uncione sin
ningún banco o e ce o que ges ione cada mo imien o inancie o.
Pe mi e que los pagos en línea se en íen di ec amen e de una pa e a
o a sin pasa po ninguna ins i ución inancie a.
No ue has a 2015 con la c eación de la cadena de bloques de
E he eum, jun o con la c ip omoneda E he (ETH), que las posibilidades y
aplicaciones de la ecnología se mul iplica on. Es o ue g acias a la
implemen ación de una máquina i ual capaz de ejecu a una se ie de
ins ucciones pa a ealiza un amplio conjun o de ope aciones, la
E he eum Vi ual Machine (EVM), que do a a la cadena de bloques de
E he eum con la capacidad de cons ui sma con ac s o con a os
in eligen es y aplicaciones descen alizadas den o de la p opia cadena
de bloques a a és de lenguajes de p og amación como Solidi y. [5]
La EVM se ejecu a como una máquina de pila, con una
p o undidad de 1024 í ems. Cada í em es una palab a de 256 bi s, que se
selecciona pa a u iliza ácilmen e con la c ip og a ía de 256 bi s.
Además, la EVM iene a ias egiones en las que almacena da os:
20
 Región memo y: es a es una egión olá il de memo ia,
usada pa a almacena in o mación de mane a empo al
pa a su uso en ejecución.
 Región s o age: es a es una egión pe sis en e de memo ia y
cada ez que se ac ualiza se debe ac ualiza el es ado de
oda la cadena de bloques.
Se puede encon a una especi icación o mal con odo de alle
sob e la EVM en su “yellowpape ” [6].
Los con a os in eligen es son p og amas que se almacenan y
ejecu an den o de la cadena de bloques, pe o además son un ipo de
cuen a de E he eum es o quie e deci que poseen un saldo y pueden
ecibi ansacciones. Los con a os in eligen es uncionan de mane a
au ónoma con o me a como es án p og amados, de o ma que o os
con a os y usua ios pueden in e ac ua con ellos u ilizando las unciones
de inidas den o del con a o in eligen e.
Y es que, al con a io que Bi coin, que solo iene ansacciones
pa a el en ío de su c ip omoneda, E he eum además iene ansacciones
pa a desplega con a os in eligen es y ansacciones pa a in e ac ua
con con a os in eligen es. Es as ansacciones equie en una a i a y
deben inclui se en un bloque álido.
De igual mane a a o os bloques de cadenas, un bloque en
E he eum es una lis a de ansacciones, es as pueden se llamadas pa a
in e ac ua con con a os, que es á encadenado al bloque an e io
median e un hash ob enido de los da os de ese bloque, de aquí el
concep o de cadena de bloques.

21
El p oceso de e i icación de bloques se ealiza a a és de un
mecanismo de consenso, una se ie de eglas que igen la mane a en que
los nodos de la ed llegan a un acue do sob e el es ado de la cadena de
bloques y la alidez de las ansacciones.
El mecanismo de consenso más u ilizado en las dis in as cadenas
de bloques se basa en una “p ueba de abajo”. En E he eum es e
mé odo se ha usado has a el 15 de sep iemb e de 2022, as es e día
E he eum pasó a u iliza un mecanismo de consenso basado en “p ueba
de pa icipación”. Es e p oceso se denominó “The me ge” [7].
Ambas ienen la misma inalidad la de ayuda a alcanza el
consenso en la cadena de bloques de o ma segu a, pe o con
di e encias no ables, la P ueba de T abajo se basa en una compe ición
en e los nodos alidado es, llamados mine os, es os a an de esol e
p oblemas que equie en una ca ga compu acional muy ele ada y el
que p ime o esuel a el p oblema consigue una ecompensa. Pa a la ed,
la cadena más la ga es la álida ya que es la que más ca ga
compu acional había necesi ado pa a c ea la. Es e es un mecanismo
muy e icaz pa a esis i a los denominados a aques Sybil de los que se
habla án un poco más adelan e.
El mecanismo de P ueba de Pa icipación ya no u iliza mine os
pa a alida bloques, aho a los nodos alidado es son aquellos que
ienen una pa icipación económica en E he eum. Pa a pode pa icipa
como alidado , un nodo iene que deposi a 32 ETH en un con a o
in eligen e, en onces es e se con ie e en un alidado y en esponsable
de e i ica y p opaga bloques. El mecanismo de consenso es el
enca gado de e i a la in il ación de nodos maliciosos en la ed. Todos
los nodos e i ican el compo amien o de los demás. Si se de ec a una
acción maliciosa en con a de la ed po pa e de un nodo alidado , es
22
expulsado y pe de a sus 32 ETH deposi ados, equi alen es en el momen o
de esc ibi es e documen o a ap oximadamen e 110000 eu os.
Un a aque Sybil [8] es aquel en el que un nodo o g upo de nodos
se hace pasa po una can idad masi a de nodos pa a pode gana
in luencia en las decisiones de la ed. Po ejemplo, si un nodo pudiese él
solo amplia la cadena, pod ía c ea nue os bloques maliciosos que
engan ansacciones alsas. Pa a que es e ipo de a aque pueda da se
en una cadena de bloques que u ilice P ueba de T abajo, se debe ía de
ene más del 51 % de oda la capacidad de cómpu o de la ed pa a
pode impone un bloque audulen e a odos los demás nodos. Esa
can idad de abajo equie e una g an can idad de ene gía de
compu ación y la ene gía gas ada pod ía incluso habe supe ado los
bene icios ob enidos en un a aque.
Algo muy simila pasa con la P ueba de Pa icipación, donde el
usua io mal ado end ía que deposi a y expone el 51% del o al de E he
deposi ado, el equi alen e a una e dade a o una.
Además de Bi coin y E he eum exis en o as muchas o as cadenas
de bloques. A día de hoy hay cien os de cadenas de bloques públicas,
algunas como la cadena de bloques de Bi coin, no Tu ing comple as, y
o as como la cadena de bloques de E he eum, Tu ing comple as.
Sin en a demasiado en de alle, la cadena de bloques de
E he eum es Tu ing comple a ya que la EVM es una máquina i ual Tu ing
comple a, es deci , puede ealiza cualquie compu ación pues pe mi e
ejecu a con a os in eligen es que con ienen bucles y condicionales.
Aunque no malmen e se de ine de es a mane a, ealmen e la EVM no es
del odo Tu ing comple a, es cuasi-Tu ing comple a, es o se debe a que
23
la compu ación que es á máquina i ual puede ealiza es á limi ada po
un pa áme o de la máquina i ual llamado gas.
El gas se puede en ende como una comisión que el usua io iene
que paga pa a pa a que los alidado es de la ed ejecu en las
ins ucciones de la EVM que o man el código del con a o.
Es a comisión si e p incipalmen e pa a añadi segu idad a la ed,
ya que al ene que paga una comisión po cada ansacción se e i an
posibles a aques de denegación de se icios basados en la ejecución de
bucles in ini os y posibles a aques pa a sa u a la ed con can idades
masi as de in o mación inú il.
2.1 P incipales p oblemas de E he eum
De ini i amen e el sis ema de E he eum ha supues o una e olución
den o de la ecnología de cadena de bloques, es o ha supues o un g an auge
en la popula idad y usa de la cadena de bloques de E he eum. Sin emba go,
odo el éxi o que ha enido ambién ha aído una se ie de p oblemas que
a ec an a las cadenas de bloques que usan es e sis ema, especialmen e la ed
p incipal de E he eum.
El p oblema p incipal desde el pun o de is a del usua io es que el gas
que se iene que paga po cada ansacción puede se bas an e ele ado.
En la igu a 2-1 se puede ap ecia un g á ico con el cos e p omedio de
ansacción en el úl imo año, que alcanzó el 5 de ma zo de 2024 un cos e de
casi 30$.
24
Figu a 2-1. Cos e p omedio de ansacción.
3
Hay que ene en cuen a que es e es el cos e p omedio, si la ansacción
equie e un es ue zo compu acional supe io al p omedio es e p ecio pod ía se
muy supe io .
El segundo g an p oblema que p esen a la cadena de bloques de
E he eum es su p oblema de escalabilidad. Es e p oblema iene dos aspec os
p incipales: el amaño de la cadena de bloques y la conges ión de la ed.
El p oblema del amaño de la cadena de bloques de E he eum su ge ya
que la ed es á en cons an e c ecimien o. El p oblema con una cadena de
bloques muy g ande es el iesgo de cen alización ya que llegados a un
amaño muy g ande los usua ios egula es deja ían de alida y solo alida ían
unos pocos nodos emp esa iales.
3
h ps://e he scan.io/cha /a g- x ee-usd
31
Figu a 3-1. Ve i icación de con a os
7
.
Es o ealmen e es un esumen simpli icado del p oceso de e i icación de
con a os, es e p oceso al comple o puede llega a se bas an e edioso, po
sue e exis en he amien as que lo ealizan. Sou ci y [11] es un ejemplo de
he amien a pa a e i icación de con a os.
E he scan [1] es un explo ado de bloques que a su ez o ece una
he amien a pa a e i icación de con a os, además de pe mi i al usua io la
desca ga de las di ecciones de los úl imos 5000 con a os e i icados. Aunque
E he scan sea una he amien a de análisis ealmen e pode osa y ú il pa a la
cadena de bloques de E he eum, cuando se a a de analiza una can idad
masi a de con a os es muy ine icien e, no iene ningún sis ema que pe mi a,
po ejemplo, il a los con a os cuyo c eado sea una di ección o los con a os
compilados en una e sión conc e a. Es o alen iza muchísimo el abajo de un
in es igado , y es po eso que su ge la necesidad de la aplicación desa ollada
en es e p oyec o. Es a aplicación a a de apo a acilidad pa a aquellos
7
h ps://e he eum.o g/es/de elope s/docs/sma -con ac s/ e i ying/

32
usua ios que quie an almacena y busca con a os que cumplan cie os
c i e ios e incluso compila los con la e sión del compilado deseada.
3.1 E he scan
E he scan es un explo ado de bloques de E he eum, es deci , pe mi e de
mane a ela i amen e sencilla explo a oda la cadena de bloques de
E he eum, desde e cada bloque con odas sus ansacciones has a e
di ecciones de usua io o de con a os.
Además, E he scan ac úa como un eposi o io de con a os e i icados,
de hecho, el p opio p oceso de e i icación se puede ealiza desde E he scan.
Aun así, la mayo ía de los con a os in eligen es que se despliegan en
E he eum, no son e i icados o bien po que no in e esa compa i el código
uen e o po que di ec amen e no es necesa io e i ica un con a o pa a pode
in e acciona con él.
Como se puede e en las igu as 3-2 y 3-3, el po cen aje de con a os
e i icados es muy pequeño: más del 90% de con a os desplegados no es án
e i icados.
33
Figu a 3-2. Con a os e i icados dia iamen e
8
Figu a 3-3. Con a os desplegados dia iamen e
9
E he scan ha esul ado se de g an u ilidad po su API de uso g a ui o,
aunque limi ado, la cual pe mi e de o ma sencilla desca ga el código uen e
y los pa áme os de compilación asociados a la di ección de un con a o
in eligen e. [12]
8
h ps://e he scan.io/cha / e i ied-con ac s
9
h ps://e he scan.io/cha /deployed-con ac s
34
3.2 O os eposi o ios
Pa a es e p oyec o se ha a ado de encon a o os eposi o ios de
con a os e i icados, aunque ninguno ha sido de an a u ilidad como
E he scan.
Bloxy [2] es una he amien a de análisis de cadena de bloques que
pa ece ene una API muy comple a. Aunque po desg acia dada la al a
demanda, es a he amien a suspendió nue os egis os.
Bi que y [3] es una pla a o ma con g an can idad de he amien as en
di e sas cadenas de bloques, algunas p ome edo as sob e odo una
he amien a pa a ealiza consul as ealmen e complejas den o de la cadena
de bloques. El incon enien e p incipal con es a he amien a es su sis ema de
uso. Funciona con un sis ema de pun os y en la e sión g a ui a esos pun os se
aducen en no más de 10 consul as complejas al mes.
Po úl imo, Bigque y [13] es una he amien a de Google Cloud que
pe mi e ealiza consul as en sus di e en es bases de da os. Se encon ó una
base de da os sob e E he eum que se ac ualiza en iempo eal, en la igu a 3-4
se mues a el diseño de es a base de da os. El p oblema con es a he amien a
es que no almacena los códigos uen e. Po es e mo i o, en es e abajo se a
a in eg a Bigque y y su API jun o con E he scan y su API, lo que da ía una
he amien a capaz de desca ga uen es y hace consul as complejas en una
base de da os que se ac ualiza en iempo eal.
35
Figu a 3-4. Diseño de la base de da os de Bigque y.10
10 h ps://medium.com/google-cloud/ ull- ela ional-diag am- o -e he eum-public-da a-
on-google-bigque y-2825 d 0 b0b

37
Capí ulo 4 - Diseño de la aplicación
En es e capí ulo se desc ibe la a qui ec u a de la aplicación y los diseños
de cada una de las pa es que la in eg an.
4.1 A qui ec u a de la aplicación
La a qui ec u a de es a aplicación se puede di idi en dis in os módulos o
sis emas que se comunican en e ellos c eando la aplicación en sí como se
mues a en la igu a 4-1.
Figu a 4-1. A qui ec u a de la aplicación
38
El módulo de ca ga de di ecciones hace uso de los an e io men e
explicados eposi o ios de con a os in eligen es como E he scan, que a a és
del usua io alimen an con di ecciones de con a os a la aplicación. Median e
dos llamadas a la API p opo cionada po E he scan y un conjun o de
di ecciones de con a os, se ob iene el código uen e de los con a os
in eligen es que es én e i icados y los pa áme os de compilación. Es e módulo
además es el enca gado de gene a y pobla las ablas de la base de da os
MySQL según el eposi o io uen e del que p oceden las di ecciones que el
usua io ca ga, gua dando los siguien es pa áme os de compilación:
 Sou ceCode: el código uen e del con a o.
 Compile Ve sion: la e sión del compilado que se usó pa a
compila el con a o.
 Op imiza ionUsed: pa áme o usado a la ho a de la compilación.
 Runs: pa áme o usado a la ho a de la compilación.
 EVMVe sion: la e sión de la EVM.
 LicenseType: el ipo de licencia que iene el con a o.
Po úl imo, se gene a el a chi o CSV en local, en el di ec o io cs _ou ,
que almacena la misma in o mación gua dada en la abla de la base de
da os.
El módulo de consul as es á in eg ado p incipalmen e po una base de
da os MySQL que nos pe mi e hace consul as de odos los con a os
gua dados en ella. Además de es a base de da os la aplicación cuen a con
una conexión al se icio de Bigque y, sob e el que se pueden ealiza consul as
di ec amen e a su eposi o io. T as ejecu a la consul a sob e la base de da os
39
local o sob e el eposi o io de Bigque y, gua da los esul ados en un iche o cs
en el di ec o io local consul as_ou .
Po úl imo, es á el módulo de compilación de con a os, que pe mi e al
usua io p opo ciona el código uen e de un con a o y la e sión del
compilado deseada pa a compila lo.
La compilación del con a o se hace g acias a dos comandos que se
ejecu an as sabe la e sión del compilado :
solc-selec use e sión --always-ins all
solc -o compilados/con a o --bin –asm --opcodes --o e w i e u a
El p ime comando u iliza el módulo de solc-selec pa a cambia la
e sión local del compilado de Solidi y a la e sión indicada po el usua io,
g acias a la opción --always-ins all si el usua io no iene ins alada la e sión
indicada del compilado , se le ins ala á.
El segundo comando compila el código uen e ubicado en la u a
indicada po el usua io y los siguien es a chi os de salida en la el di ec o io
compilados:
 A chi os bina ios .bin del con a o en hexadecimal.
 A chi os con el código en ensamblado del con a o.
 A chi os con los opcodes del con a o.
40
4.2 Diseño de da os
En es a sección se desc iben los componen es de almacenamien o de
los da os usados en la aplicación. En la p ime a subsección se explica qué se
gua da en la base de da os local, en la segunda subsección se explica qué
da os se usan como en ada pa a la aplicación y en la úl ima qué da os se
gua dan en los a chi os locales.
4.2.1 Diseño de la base de da os
Hay que des aca que las ablas de la base de da os no ienen elación
en e sí. Hay dos ipos de ablas en la base de da os: las ablas de con a os y la
abla de consul as.
Las ablas de con a os siemp e ienen los siguien es campos que son
obliga o ios:
 compile e sion: e sión con la que se compiló el con a o.
 op imiza ion: pa áme o de compilación.
 uns: pa áme o de compilación.
 e m e sion: e sión de la E he eum Vi ual Machine.
 license ype: ipo de licencia usada en la compilación.
 uen e: p ocedencia del con a o.
 con ac c ea o : di ección c eado a del con a o.
 u a: u a en la que se almacena el código uen e del con a o.
 add ess: di ección del con a o.
47
a chi o. Es e o ma o ep esen a á las columnas de la abla en la base de
da os. El único campo obliga o io en el o ma o es el de “add ess”.
A con inuación, se mues a un ejemplo de uso solo en el que solo se
mos a án las pan allas ya que an o el CSV de en ada como la ca pe a
donde se gua dan el código uen e se ía igual. Suponiendo un CSV muy simila
al an e io , “con a os_ e i icados2” p o enien e de Bigque y y con dos campos
di e en es, “Bloque” y “Time”, el usua io in oduce la uen e con los campos
adicionales y el o ma o del CSV.
Figu a 4-10.Ca ga de di ecciones de o as uen es sin CSV.
Figu a 4-11. Ca ga de di ecciones de o as uen es con CSV.

48
Como se ha mencionado an e io men e los a chi os de código uen e
desca gados se gua dan igual que an es, pe o aquí cabe des aca que se
c ea una nue a abla en la base de da os del usua io con el nomb e
“con ac s_bigque ybloque ime” y con dos columnas di e en es dadas en el
o ma o del CSV.
4.4.1.5 Página de búsqueda
Es a página pe mi e al usua io ealiza consul as a su base de da os local,
al eposi o io de Bigque y o ealiza consul as an e io men e ealizadas.
Es a página iene es menús expandibles con di e en es opciones: el
p ime o con iene las columnas a las que el usua io puede ealiza la consul a, la
segunda con iene las odas las ablas que hay en la base de da os y la e ce a
con iene las consul as an e io es jun o a dos opciones pa a c ea una consul a
p opia y hace una consul a a Bigque y, espec i amen e.
Si la opción seleccionada es la de consul a p opia, igu a 4-12, el usua io
iene que indica un nomb e de consul a y la p opia consul a SQL. Si la opción
es consul as an e io es, igu a 4-13, se mues a o a lis a desplegable que
con iene las consul as an e io men e ealizadas, las que se gua dan en la abla
consul as de la base de da os. Po úl imo, si se selecciona Bigque y, igu a 4-14,
el usua io debe p o ee un oken de Bigque y necesa io pa a usa la API de
Bigquey.
Figu a 4-12. Página de búsqueda, consul a p opia.
49
Figu a 4-13. Página de búsqueda, consul as an e io es.
Figu a 4-14. Página de búsqueda.
Pa a de alla bien es a uncionalidad se mos a án a ios ejemplos de
uso. En el p ime ejemplo de uso, el usua io a a de hace una consul a ya
hecha, pa a ello indica la columna, la abla, la consul a y la condición como se
mues a en la igu a 4-15. También puede e su consul a an es de ejecu a la
pa a e si es co ec a.
Figu a 4-15. Pan alla de consul a.
50
Una ez se ejecu a la consul a, si se ejecu a con éxi o, se gene a el
a chi o CSV co espondien e y se puede p e isualiza en la p opia pan alla
como se mues a en la igu a 4-16. Además de un mensaje donde se indica que
el CSV se gua da en la ca pe a “consul as_ou ” con el nomb e p opo cionado
a la consul a y la echa de la consul a.
Figu a 4-16. Resul ado de la consul a.
Pa a el segundo ejemplo de uso, el usua io quie e ejecu a una consul a
que ya ha ealizado en el pasado, en la abla de consul as elige la opción de
“Consul as an e io es” y si quie e la modi ica como se mues a en la igu a 4-17.
El esul ado se mues a igual que en el ejemplo de uso an e io .
Figu a 4-17. Consul as an e io es.
51
En el úl imo caso de ejemplo el usua io quie e ealiza una consul a a
a és de Bigque y. Pa a ello en la abla de consul as selecciona la opción de
Bigque y, el usua io debe p opo ciona un oken de Bigque y, la consul a a
ealiza y un nomb e pa a ella. En la igu a 4-18, una ez seleccionada la opción
de Bigque y, se e el inpu que pe mi e al usua io subi el oken de Bigque y,
más abajo el campo azul pa a da le un nomb e a la consul a, la consul a en un
componen e modi icables y po úl imo el bo ón pa a ejecu a la consul a.
Figu a 4-18. Pan alla consul a de Bigque y.
Pa a cons ui una consul a de Bigque y el usua io debe u iliza el diseño
p opo cionado en la igu a 3-4, las ablas más in e esan es son:
 Con ac s: que ecoge in o mación de con a os como
di ecciones, código compilado o el núme o de bloque en el que
se desplegó.
52
 T ansac ions: que ecoge in o mación de ansacciones como el
gas usado en la ansacción, el hash de la ansacción o el núme o
de bloque al que pe enece.
 Blocks: que ecoge in o mación de los bloques como su hash o el
hash del bloque an e io , la echa en la que se añadió a la
cadena de bloques o la can idad de ansacciones que iene.
4.4.1.6 Página de compila
Es a página pe mi e al usua io subi un a chi o .sol que debe con ene el
código uen e de un con a o, en la igu a 4-19 se puede e la pan alla sin el
a chi o seleccionado. Una ez seleccionado se isualiza en un componen e
modi icable, es deci , que el con a o se puede modi ica an es de compila lo.
La aplicación ex ae au omá icamen e las di ec i as p agma del con a o pa a
que el usua io pueda selecciona la e sión del compilado que se a a u iliza .
El usua io ambién puede elegi una e sión del compilado especí ica. En la
igu a 4-20 se puede e la pan alla una ez se selecciona el a chi o, en ella
apa ecen las di ec i as p agma ex aídas del con a o y el componen e
modi icable con el código uen e del con a o.
Figu a 4-19. Página de compila con a os sin a chi o seleccionado.

53
Figu a 4-20. Página de compila con a os con a chi o seleccionado.
4.4.2 Diseño de la aplicación de consola
La aplicación de consola ue pensada pa a un usua io más expe o ya
que es sac i ica el aspec o isual que es más desc ip i o a cambio de un
posible uso de la he amien a de mane a más e icaz.
Es a aplicación ue diseñada con un menú p incipal que pe mi e al
usua io elegi la uncionalidad deseada y se comunica con él pidiendo el inpu
necesa io como u as a un a chi o o la consul a SQL especí ica.
El menú p incipal iene seis opciones como se mues a en la igu a 4-21, el
usua io in oduce el núme o asociado a la unción que quie e usa .
54
Figu a 4-21. Menú consola.
La p ime a opción c ea la base de da os MySQL.
La segunda opción ca ga di ecciones que ienen de E he scan, ambién
desca ga los a chi os de código uen e de las di ecciones ca gadas y gua da
oda la in o mación en la abla con ac s. Po lo que el usua io debe
p opo ciona un CSV que enga el o ma o de E he scan. El usua io ambién
debe especi ica el eposi o io uen e del que ienen las di ecciones y si el CSV
p opo cionado es á p ep ocesado o no como se mues a en la igu a 4-22.
Figu a 4-22. Opción ca ga CSV de E he scan.
La e ce a opción pe mi e al usua io ca ga di ecciones igual que con la
segunda opción con la di e encia de que el CSV p opo cionado ya no iene
que segui el o ma o de E he scan como se mues a en la igu a 4-23. Además,
ya no se almacena la in o mación en la abla con ac s sino que se gua dan en
una abla que ep esen a ese mismo o ma o, es a abla se c ea con el nomb e
55
del eposi o io uen e conca enado con con ac s_, po ejemplo, si el
eposi o io del que ienen las di ecciones es Bi que y la abla se llama á
con ac s_bi que y.
Figu a 4-23. Opción ca ga CSV de o as uen es.
La cua a opción es la enca gada de ealiza consul as en la base de
da os donde el usua io puede elegi en e una se ie de consul as ya hechas en
las que iene que indica los campos que al an como las columnas o el
nomb e de la abla como se mues a en la igu a 4-24. El usua io ambién
puede p opo ciona su p opia consul a SQL.
56
Figu a 4-24. Opción consul a.
La quin a opción se enca ga de compila un con a o in eligen e, el
usua io iene que in oduci la u a donde iene el código uen e del con a o
in eligen e y iene que in oduci la e sión del compilado como se mues a en
la igu a 4-25.
Figu a 4-25. Opción compila .
La úl ima opción simplemen e e mina la ejecución de la aplicación.
El desa ollo de es a aplicación se ealizó en pa alelo jun o con la
aplicación web ya que al inal la uncionalidad es p ác icamen e la misma.
63
algún se icio de pago pa a la desca ga de di ecciones y códigos
uen e de con a os. Tan o E he scan como Bigque y ienen
e siones de pago con menos limi aciones y más uncionalidades.
 O o aspec o a mejo a se ía el de mig a ambas aplicaciones a un
se ido pa a no ene que ejecu a las en local. Es e abajo se ha
cen ado en implemen a la uncionalidad de la aplicación, pe o
se puede adap a sin g andes cambios pa a ins ala la en un
se ido . Pa a hace dicha adap ación pod ía se necesa io añadi
un módulo de con ol de acceso de usua ios.
 Siguiendo una de las p opiedades más impo an es del pa adigma
de las cadenas de bloques, la descen alización, un abajo a
u u o pod ía se el de adap a las aplicaciones a un sis ema de
a chi os descen alizado como IPFS [26].
A pa i de aquí las suge encias de ex ensión del abajo debe ían su gi
del p opio uso de más clien es jun o con el p opio a ance de la ecnología.
Es algo indiscu ible que el ecosis ema de c ip omonedas es á en auge,
cada día hay más conocedo es de es e ecosis ema y usua ios que quie en
o ma pa e de es e ecosis ema, pe o ambién es e dad que las ba e as de
en ada son g andes pa a los usua ios. Po es e mo i o es impo an e con ibui
a una cons an e mejo a de es a ecnología, y pa a ello es necesa io la
u ilización de he amien as como la desa ollada en es e T abajo de Fin de
G ado.

65
In oduc ion
Mo i a ion
Wi hin he E he eum blockchain, e e y ansac ion ha modi ies he
blockchain s a e equi es a ee, whe he i in e ac s wi h a sma con ac
unc ion o when sending a c yp ocu ency. Cu en ly, abou 1 million11
ansac ions a e execu ed wi hin he E he eum ne wo k daily, wi h a ee
be ween 3 and 30 dolla s du ing he las yea , depending on he ne wo k
conges ion12.
A big pa o all hese ees comes om he in e ac ions wi h sma
con ac s. A sma con ac is a p og am s o ed in he blockchain and is
execu ed hanks o a i ual machine in eg a ed wi hin each node o he
ne wo k. The cos o hese ees when in e ac ing wi h sma con ac s comes
om he amoun o ins uc ions needed o be execu ed. Wi h his goal in mind,
new op imiza ion echniques ha e been de eloped by he scien i ic communi y
in he pas yea s. This was undamen ally possible due o he a ailabili y o la ge
se s o p og ams ha can be used o ca y ou expe imen al s udies. The
E he eum blockchain is especially in e es ing as all he in o ma ion on he
ansac ions execu ed is a ailable o he public.
On he o he hand, e en hough he compiled code o he deployed
sma con ac s is public, he sou ce code does no necessa ily ha e o be so.
Some de elope s publish he sou ce code o hei con ac s in ce ain public
11 h ps://e he scan.io/cha / x
12 h ps://e he scan.io/cha /a g- x ee-usd
66
eposi o ies such as E he scan [1], bu i is no possible o do sea ches wi h
complex selec condi ions o con ac s.
Ano he ield ela ed o esea ch on E he eum is secu i y, as when wo king
wi h a decen alized en i onmen he e a e no any esponsible pa ies o go o
when secu i y b eaches occu . As such, i is o ex eme impo ance o y o
ensu e he secu i y o sma con ac s as much as possible. Consequen ly, i is
also undamen al o ha e la ge se s o eal p og ams o de elop new
echniques ha gua an ee he secu i y o he sma con ac s.
The e o e, he main mo i a ion behind his p ojec is o c ea e a ool ha
is use ul o said esea che s, a ool ha allows hem o ga he and sea ch
con ac s ha ma ch he complex equi emen s o di e en cha ac e is ics and
e ie e hei sou ce code.
Goals
The objec i e o his hesis is he implemen a ion o a sys em ha allows
loading deployed con ac s displayed on he E he eum main ne , s o ing hem,
sea ching hose ha mee speci ic complex equi emen s, e ie ing hei sou ce
code and compila ion op ions ha we e used, and compiling hem wi h he
same o di e en pa ame e s.
Mo e speci ically, his p ojec aims o design and implemen wo
applica ions, a console and a web applica ion ha allow he use o:
 Sea ch con ac add esses deployed on he E he eum main ne
acco ding o speci ic sea ch c i e ia.
 Download e i ied con ac s o s o e hei sou ce code and
compila ion op ions.
67
 Que y all he p e iously loaded con ac s and e ie e hei
con ac s acco ding o speci ic sea ch c i e ia.
 Compile sma con ac s o ob ain hei compiled by ecode.
Wo k plan
To achie e he objec i es, a wo k plan, consis ing o weekly mee ings wi h
he p ojec leade s o p esen ideas and ools ha migh be use ul, has been
de eloped.
A he s a o his hesis, wo al e na i es we e p oposed. On one hand,
he ins alla ion o an E he eum clien node was sugges ed o di ec ly ob ain he
in o ma ion o he E he eum blockchain in eal- ime. On he o he hand, using
he a ailable eal- ime E he eum sea ching se ices and public sou ce code
eposi o ies o con ac s was conside ed.
The ins alla ion o a clien node p esen s a ious d awbacks, he main one
being ha he la ge quan i y o sma con ac s ha a e uploaded daily
ansla es in o an o e whelming amoun o da a, as well as he need o ha e
ha dwa e wi h speci ic equi emen s and clien so wa e cons an ly being
execu ed.
Because o his, he idea o he ins alla ion o a clien node was disca ded
o ocus on he public sou ce code eposi o ies o con ac s app oach.
An in es iga ion was ca ied ou o unde s and and disco e ools ha
could help. The main ools s udied a e E he scan [1], Bloxy [2] and Bi que y [3].
68
The de elopmen o he applica ions has been ca ied ou sequen ially,
i s ly ocusing on unc ionali y and hen p o iding a g aphic in e ace o said
unc ionali y.
The unc ionali y has been expanding and changing acco ding o he
di ec o s o his hesis as a pa o being he di ec o s, hey a e also doing a
esea ch p ojec on he ma e .

69
Conclusions and u u e wo k
The main goal o his hesis comes om he need o a ool ha allows one
o download he sou ce code o sma con ac s ha ma ch complex selec ion
c i e ia o esea ch he sma con ac s deployed on he E he eum main ne .
Mo e speci ically, wo applica ions ha e been de eloped, a console one
and one wi h a web use in e ace ha allows o sea ching he add esses o
deployed con ac s using complex sea ches in Bique y as well as downloading
he sou ce code o e i ied con ac s in he eposi o y gi en by E he scan.
Fu he mo e, hese applica ions allow o do que ies abou sma con ac s
acco ding o complex and speci ic sea ch c i e ia. All he que ies done un il
now can be s o ed in he local da abase, making i possible o epea hem on
o he sma con ac s. Las ly, i allows he compila ion o downloaded con ac s
wi h di e en compila ion con igu a ions.
These applica ions ha e been de eloped and implemen ed ollowing he
speci ica ions gi en by he hesis di ec o s. Bo h he web applica ion and he
console applica ion ha e been implemen ed wi h all he planned unc ionali y
and he e o e can be said ha he objec i es o his hesis ha e been me .
E en hough he objec i es o he hesis ha e been comple ed, he e s ill
is a lo o wo k ha can be pu in o his p ojec o make i be e :
 An aspec ha was s udied and can be imp o ed was he
au oma iza ion o he loading o add esses om E he scan, an
imp o emen ha had o be disca ded due o he exis ence o a
cap cha ha equi es a manual download. The possibili y o using
paid se ices o he download o add esses and con ac sou ce
codes can be explo ed. Bo h E he scan and Bigque y ha e paid
e sions wi h ewe limi a ions and mo e unc ionali ies.
70
 Ano he aspec o imp o e would be o mig a e bo h applica ions
o a se e o a oid execu ing hem locally. This p ojec has ocused
in implemen ing he unc ionali y o he applica ion bu can be
adap ed o ins all i on a se e wi hou needing majo changes. To
do said adap a ion, i could be necessa y o add a module o
con ol use access.
 Following one o he mos impo an p ope ies o he pa adigm o
blockchain, decen aliza ion, a u u e p ojec could be o adap
he applica ions o a decen alized a chi e sys em like IPFS [24].
F om he e on, he sugges ions o he expansion o he hesis should come
om he use o he clien s and he ad ancemen s o he echnology i sel .
I is indispu able ha he c yp ocu ency ecosys em is booming, e e y day
mo e and mo e connoisseu s o he ecosys em and use s wan o be a pa o i ,
bu i is also ue ha he e a e high en y ba ie s o hem. Because o his, i is
impo an o con ibu e o a cons an imp o emen o his echnology and o
ha , he u iliza ion o ools like he one de eloped in his hesis is essen ial.
71
Bibliog a ía
[1]
E he scan, Explo ado de bloques de E he eum, «h ps://e he scan.io/».
[2]
Bloxy, «h ps://bloxy.in o/».
[3]
Bi que y, «h ps://bi que y.io/».
[4]
S. Nakamo o, «h ps://bi coin.o g/bi coin.pd ,» Bi coin: A Pee - o-
Pee
Elec onic Cash Sys em, 2008.
[5]
Solidi y, «h ps://solidi ylang.o g/».
[6]
E he eum Yellow Pape ,
«h ps://e he eum.gi hub.io/yellowpape /pape .pd ».
[7]
E he eum ounda ion, «h ps://e he eum.o g/es/ oadmap/me ge/,» La
usión, The me ge..
[8]
A aque Sybil, «h ps://en.wikipedia.o g/wiki/Sybil_a ack».
[9]
E he eum.o g, «h ps://e he eum.o g/es/de elope s/docs/e m/,» Máquina
i ual de E he eum.
[10]
GETH, «h ps://ge h.e he eum.o g/».
[11]
Sou ci y, «h ps://sou ci y.de /#/ e i ie ,» He amien a web de e i icación
de con a os.
[12]
E he scanAPI, «h ps://docs.e he scan.io/api-
endpoin s/con ac s,»
72
E he scan API con ac s endpoin .
[13]
Bigque y, «h ps://cloud.google.com/bigque y?hl=es».
[14]
E he scan CSV 5000 con a os e i icados,
«h ps://e he scan.io/expo Da a? ype=open-sou ce-con ac -codes».
[15]
Figma, «h ps://www. igma.com/».
[16]
Node.js, «h ps://nodejs.o g/en».
[17]
Nex .js, «h ps://nex js.o g/».
[18]
Py hon, «h ps://www.py hon.o g/».
[19]
MySQL, «h ps://www.mysql.com/».
[20]
Ya n, «h ps://ya npkg.com/».
[21]
TailwindCSS, «h ps:// ailwindcss.com/».
[22]
Solc-selec , «h ps://gi hub.com/c y ic/solc-selec ».
[23]
Solc, «h ps://bina ies.solidi ylang.o g/».
[24]
Flask, «h ps:// lask.palle sp ojec s.com/en/3.0.x/».
[25]
Typesc ip , «h ps://www. ypesc ip lang.o g/».
[26]
IPFS, «h ps://ip s. ech/,» Sis ema de a chi os descen alizados.