Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Facultad de Ciencias
Departamento de Matemáticas
Smart Contract
Conceptos fundamentales y caso de uso
Resumen
En el presente informe se exponen los conceptos fundamentales relacionados con la tecnologia
de contratos inteligentes (smart contract) con el objtivo de ofrecer un primer acercamiento a esta
potencial invencion tecnológica. Luego de esto se presenta un caso de uso referido a implementación
de contrato inteligente para la gestion de un fondo de inversion de criptomoneda helio coin (HC).
Este documento describe todos los elementos necesarios para poder replicar el caso de uso con la
intencion de proporcionar las bases sobre las cuales se sustenta el concepto de Smart Contract. Este
informe ha de tomarse como la continuacion de un informe anterior titulado ’informe block chain’ (del
mismo autor de este documento) el cual presenta los conceptos basicos que hay detras de Block chain
el cual es la piedra angular que sirve de soporte para hacer posible la implementacion de los contratos
inteligentes. En relación al caso de uso que aquí se presenta se debe decir que la implementacion del
contrato corre en una blockchain local. y la interfaz de comunicación con dicha block chain se accese
mediante un navegador web cualquiera.
Índice de Contenidos
1. Smart Contract 1
1.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Definición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.4. Campos de aplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.5. Seguridad de los Smart Contracts . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.5.1. Block Chain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Un caso de uso 3
2.1. Que usaremos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2. Que es Ethereum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.3. Que es Ganache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.4. Que es MyEtherWallet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.5. Que es Solidity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.6. Implementación del contrato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.7. El proceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.7.1. Agregando una red/nodo personalizado a myetherwallet . . . . . . . . . . . 7
2.7.2. Desplegando el contrato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.7.3. Interactuando con el contrato . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Referencias 17
Índice de Figuras
1. Ethereum (ETH). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. www.trufflesuite.com/ganache. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. La billetera para ethereum. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4. Logo Solidity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
5. IDE solidity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
6. Interfaz myetherwallet para perzonalizar un nodo. . . . . . . . . . . . . . . . . . . . . 7
7. Byte code del contrato programado con solidity. . . . . . . . . . . . . . . . . . . . . . . 8
8. Byte code requerido para la obtencion del contrato programado con solidity. . . . . . . 8
9. Clave privada de aquel que desplegara el contrato en la cadena de bloques. . . . . . . . 9
10. Ingreso de clave privada de quien despliega el contrato en la red Ethereum. . . . . . . 9
11. Creación del contrato en la cadena de bloques. . . . . . . . . . . . . . . . . . . . . . . 9
12. Dirección que crea el contrato en la cadena. . . . . . . . . . . . . . . . . . . . . . . . . 10
13. Bloque minado que contiene el contrato inteligente. . . . . . . . . . . . . . . . . . . . . 10
14. Verificacion de que dicho bloque contiene un contrato inteligente. . . . . . . . . . . . . 10
15. Interfaz para interactuar con el contrato inteligente . . . . . . . . . . . . . . . . . . . . 11
16. Verificando la creación del contrato en la blockchain de ganache. . . . . . . . . . . . . 11
17. Obteniendo la dirección del contrato inteligente. . . . . . . . . . . . . . . . . . . . . . . 12
18. Chekeando la dirección del contrato inteligente. . . . . . . . . . . . . . . . . . . . . . . 12
19. Datos para la creación de la interfaz de comunicación con la block chain. Estos se
obtienen desde el editor del contrato inteligente para solidity. . . . . . . . . . . . . . . 13
20. Métodos disponibles para la interacción con el contrato. . . . . . . . . . . . . . . . . . 13
21. Compra de un HC (heliocoin). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
22. Ingresando datos para comprar HC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
23. Confirmación de la compra. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
24. Compra de HC (heliocoin). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
25. Verificación de compra en la cadena de bloques. . . . . . . . . . . . . . . . . . . . . . . 16
Índice de Códigos
1. Contrato Inteligente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1. Smart Contract
1.1. Introducción
¿Cuál es el significado y propósito de la seguridad? de alguna manera u otra la respuesta a esta
pregunta deberia incluir el concepto de relacion. Dichas relaciones son fundamentalmente inportantes
tanto entre las organizaciones, las personas y por que no decirlo, en los sistemas informáticos. Una
idea importante que surge a partir de nuestra reflexión en torno a la seguridad es que la formali-
zacion de dichas relaciones proporcionan un plan ideal para la seguridad. Una de estas formas de
formalización de relaciones es justamente el concepto de contrato.
Muchos tipos de cláusulas contractuales (como garantías, fianzas, delineación de derechos de propie-
dad, etc.) pueden integrarse en el hardware y el software con los que tratamos, de tal manera que el
incumplimiento del contrato sea costoso (si se desea, a veces prohibitivamente) para el infractor. Un
ejemplo canónico de la vida real, que podríamos considerar como el antepasado primitivo de los con-
tratos inteligentes, es la humilde máquina expendedora. Dentro de una cantidad limitada de pérdida
potencial (la cantidad en la caja debe ser menor que el costo de violar el mecanismo), la máquina
recibe monedas, y a través de un mecanismo simple, que hace que un problema de informática de
primer año en el diseño con autómatas finitos, dispense el cambio y el producto de acuerdo con el
precio mostrado. La máquina expendedora es un contrato con el portador: cualquier persona con mo-
nedas puede participar en un intercambio con el vendedor. La caja de seguridad y otros mecanismos
de seguridad protegen las monedas y el contenido almacenados de los atacantes, lo suficiente como
para permitir el despliegue rentable de máquinas expendedoras en una amplia variedad de áreas. Los
contratos inteligentes van más allá de la máquina expendedora al proponer incrustar contratos en to-
do tipo de propiedades que son valiosas y controladas por medios digitales. Los contratos inteligentes
hacen referencia a esa propiedad en una forma dinámica, a menudo aplicada de manera proactiva,
y proporcionan una observación y verificación mucho mejores cuando las medidas proactivas deben
quedarse cortas.
1.2. Definición
Un contrato inteligente (en inglés Smart contract) es un programa informático que facilita, ase-
gura, hace cumplir y ejecuta acuerdos registrados entre dos o más partes (por ejemplo personas u
organizaciones). Dicho programa ejecuta un contrato automático el cual funciona como una senten-
cia if-then (si-entonces) de cualquier otro programa de ordenador. Un programa de ordenador y un
programa de contrato inteligente se diferencian entre otras cosas en que este último interactua con
activos reales (bienes y servicios). Lo que dota de seguridad a un smart contract es que este mismo
se encuentra alogado en una blockchain.
1.3. Objetivo
Entre sus objetivos primordiales se tiene el brindar una seguridad superior a la ley de contrato
tradicional y reducir costos de transacción asociados a la contratación.Donde dichos costos son re-
cibidos por intermediarios que intervienen en dicha transacción. Por lo general este intermediario es
una organización centralizada. La transferencia de valor digital mediante un sistema que no requie-
re confianza (o sea, se cambia la confianza centralizada por aquella que es descentralizada) abre la
puerta a nuevas aplicaciones que pueden hacer uso de los contratos inteligentes.
4. Cuenta con un mecanismo de consenso entre los participantes, el cual garantiza la confia-
bilidad de la información que se encuentra grabada en la cadena de bloques. El consenso es
precisamente la clave de un sistema blockchain porque es el fundamento que permite que todos
los participantes en el mismo puedan confiar en la información que se encuentra grabada en él.
Se trata de un aspecto con un potencial increíble para transformar una infinidad de sectores
clave de la industria y no menos de la sociedad en la que vivimos, de tal modo que podría llegar
a cambiar incluso nuestra forma de entender el mundo. Desde un punto de vista técnico, ese
sistema basado en la confianza y el consenso se construye a partir de una red global de
ordenadores que gestionan una gigantesca base de datos.
Dicho de otra forma es una base de datos descentralizada que no puede ser alterada.
2. Un caso de uso
2.1. Que usaremos
A continuación presentaremos las tecnologías que haran posible la interación con un contrato
inteligente almacenado en una cadena de bloques.
1. Ethereum.
2. Truffle Suite (ganache)
3. MyetherWallet.com
4. Solidity
Figura 2: www.trufflesuite.com/ganache.
8 contract helio_coin_ico {
9 //introduciendo el numero de maximo de helio coin a la venta
10 uint public max_hc = 1000000;
11
21 mapping(address=>uint)equity_usd;
22
26 _;
27 }
28
39 //comprando tokens
40 function buy_hc(address investor, uint usd_invested)external can_buy_hc(usd_invested){
41
44 equity_hc[investor] += hc_bought;
45
46 equity_usd[investor] = equity_hc[investor]/1000;
47
48 total_hc_bought += hc_bought;
49
50 }
51
54 equity_hc[investor] -= hc_sold;
55
56 equity_usd[investor] = equity_hc[investor]/1000;
57
58 total_hc_bought -= hc_sold;
59
60 }
61 }
2.7. El proceso
2.7.1. Agregando una red/nodo personalizado a myetherwallet
Cada númeoro en la figura 6 indica la secuencia a seguir para realizar este primer paso.
Figura 8: Byte code requerido para la obtencion del contrato programado con
solidity.
Además del Byte code, es necesaria la clave privada del nodo de la red blockchain que desplegará
el contrato inteligente en la red. En la figura 9 se ve que la clave privada se puede obtener desde
ganache. La figura 10 indica en donde hay que ingresar dicha clave en myetherwallet.
Figura 10: Ingreso de clave privada de quien despliega el contrato en la red Ethe-
reum.
Ahora que la interfaz ya se encuetra definida para la direccion del contrato que se proporcionó
anteriormente, estamos en pie para realizar las consultas disponibles sobre este como se muestra en
la figura 20.
Desde la figura 21 hasta la figura hasta la figura 24 se observa el procedimiento realizado para la
compra de hc (heliocoin) haciendo uso del contrato inteligente implemnetado.
Referencias