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.