Blockchain y Desarrollo Ethereum

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 60

Blockchain y desarrollo Ethereum

Taller
Director del Master en Blockchain y Fintech en IEBS Business School
Director del Master en Finanzas y Banca Digital en IEBS Business School
Advisor: BeCertify.io (http://www.becertify.io)

Twitter: @ruljaimemaestre
LinkedIn: https://es.linkedin.com/in/rauljaimemaestre
Web: https://www.rauljaimemaestre.com
Ethereum
¿Qué es Ethereum?

Ethereum es una Blockchain o Tecnología de Contabilidad


Distribuida (DTL) con un lenguaje de programación
Turing completo integrado, una computadora blockchain,
que permite que cualquiera pueda escribir contratos
inteligentes y aplicaciones descentralizadas simplemente
escribiendo la lógica en unas pocas líneas de código.
¿Qué es Ethereum?

El protocolo Ethereum fue concebido originalmente como


una versión mejorada de la criptomoneda Bitcoin, para
superar las limitaciones de su lenguaje de programación,
proporcionando características avanzadas tales como
custodia sobre la blockchain, límites de retiro, contratos
financieros, mercado de juegos de azar...
¿Qué es Ether?

Ether es la criptomoneda de Ethereum, el combustible que impulsa


esta plataforma de aplicaciones distribuidas. Es una criptomoneda
utilizada por los clientes de la plataforma Ethereum para realizar
pagos a otras personas o a máquinas que ejecutan operaciones
solicitadas. Es decir, Ether es el incentivo que asegura que los
desarrolladores escriban aplicaciones de calidad (la codificación
innecesaria cuesta más) y que la red permanezca saludable (la
gente es recompensada por los recursos aportados).
¿Qué es GAS?

Con el fin de evitar bucles infinitos accidentales, hostiles, u otro


desperdicio computacional en el código, cada transacción es obligada a
establecer un límite al número de pasos computacionales de ejecución de
código que ella puede utilizar. La unidad fundamental de computación es
“gas”. Por lo general, un paso computacional cuesta 1 gas, pero algunas
operaciones cuestan cantidades más altas de gas porque son más costosas
computacionalmente, o porque aumentan la cantidad de datos que deben
ser almacenados como parte del estado. También hay una tarifa de 5 gas
por cada byte en los datos de transacción.
¿Qué es GAS?

La intención del sistema de comisiones es obligar a un


atacante a pagar proporcionalmente por cada recursos
que consume, incluyendo computación, ancho de banda
y almacenamiento. Por lo tanto, cualquier operación que
conduzca a la red a consumir una mayor cantidad de
cualquiera de estos recursos debe tener una comisión de
gas más o menos proporcional al incremento.
La historia de Ethereum
La historia de Ethereum Classic

Ethereum se inició
el 30 de Julio de 13 noviembre
2015 con la de 2015
primera de sus
cuatro etapas, Startup alemana que buscaba
crear un puente entre la
llamada Frontier. tecnología Blockchain y el Internet
de las cosas (IoT).
La historia de Ethereum Classic

Como todo proyecto, necesitaba


fondos para llevarlo a cabo y Funcionaba: el que quisiera
convertir todo ese apoyo colaborar, pudiera depositar
recibido en algo real. Para una cantidad de Ether en el
lograrlo, Christoph creó un smart contract a cambio de
simple contrato inteligente de otros tokens que tendrían valor
financiación colectiva basado en propio y simbolizarían
Ethereum para todo aquel que participaciones de la empresa.
quisiera apoyar la causa
económicamente.
Manifiesto de Ethereum Classic

Ethereum Classic puso en conocimiento de todos lo


que ellos llamaron “A Crypto-Decentralist Manifesto“.
Este manifiesto expone todos los ideales de esta
comunidad que se separó de Ethereum. (Arvicco, 11 de
julio de 2016)

MANIFIESTO CRIPTO-DECENTRALISTA
https://miethereum.com/blockchain/manifiesto-cripto-decentralista/
¿Por qué se creó Ethereum Classic?
Ethereum Classic apareció como
resultado del desacuerdo de una
parte de la comunidad con la
Fundación Ethereum respecto al
“Ether Classic” Hard Fork de ‘The DAO’. Los
usuarios que estaban en contra se
(ETC), que se utiliza unieron para rechazar esta
como combustible medida por motivos filosóficos
respecto a los verdaderos valores
para que el sistema de Ethereum.
funcione.
Hard Fork lo que proponía era mover todos
los fondos del ecosistema de ‘The DAO’ a
un contrato inteligente diseñado
específicamente para retirar fondos de él.
El nacimiento de ‘The
DAO’
El nacimiento de ‘The DAO’
Una DAO es una Organización Fue creado como un contrato
Autónoma Descentralizada, esto inteligente dentro de la cadena
es, un nuevo modelo de bloques de Ethereum, cuyo
empresarial totalmente distinto código era código abierto:
a los actuales, en el que no hay cualquiera podía revisar ese
ningún ‘jefe’ o persona que lo código, realizar mejoras en sus
esté dirigiendo, sino que se rige características e incluso iniciar
por unas reglas ya predefinidas. diferentes DAOs sobre
Ethereum.

No tenía una estructura administrativa convencional ni una junta directiva, sino que esa
junta directiva estaba formada por cada participante de la DAO, llamados ‘Poseedores de
tokens DAO’ o ‘Inversores de la DAO’.
Ejemplo de ‘The DAO’
El objetivo de Aragon es ofrecer
una plataforma basada en
Ethereum que ayude a crear
DAOs de manera sencilla.
Ofrecen todo los necesarios
para administrar una empresa,
desde unos estatutos a un
sistema de contabilidad, gestión
de nómidas, recaudación de
fondos, pagos, a través de una
única interfaz.

Web de Aragon: https://aragon.org/


Bitcoin vs. Ethereum
Bitcoin vs. Ethereum

Ethereum es, de momento, la segunda moneda


criptográfica más grande del mundo detrás de Bitcoin. Ha
sufrido un crecimiento mayor y mucho más rápido que
ésta, y se está utilizando cada vez más. Mientras que
muchos comparan el aspecto como criptodivisa de
Ethereum y Bitcoin, la realidad es que son proyectos
enormemente distintos y tienen diferentes intenciones, es
decir, son compatibles, no sustitutivas.
Cuadro comparativo bitcoin vs.
Ethereum
Cuadro comparativo Bitcoin vs. Ethereum

BITCOIN ETHEREUM
18 de Agosto de 2008 (registro del
dominio ‘Bitcoin.org’) y 31 de
Nacimiento de la plataforma Octubre de 2008 fecha de su White Diciembre del 2013
Paper

Fecha 1r bloque minado 3 de Enero de 2009 30 de julio de 2014


Satoshi Nakamoto, del cual no se Vitalik Buterin; Otros co-
sabe quién es o quiénes son (en
Creador de la plataforma caso de pseudónimo de una fundadores incluidos Gavin
organización) Wood y Joseph Lubin

Función principal de la Sistema de pago descentralizado, Plataforma de ejecución de


plataforma rápido y seguro, al igual que su contratos inteligentes y
propia moneda.
aplicaciones descentralizadas
(dApps)

Tecnología usada Blockchain (Cadena de bloques)


Redes usadas Mainnet (Red principal) y Testnet (Red de prueba)
Algoritmo de seguridad SHA2, concretamente SHA256
Ethash, una mezcla de
protocolos SHA3
Cuadro comparativo Bitcoin vs.
Ethereum
BITCOIN ETHEREUM
Hardware correcto para la
minería ASIC GPU y CPU

Lenguaje de programación C++ Turing Complete


Se pueden considerar Criptomonedas descentralizadas
Tipo de criptomoneda Moneda virtual Token o ficha digital
Uso de la criptomoneda Operar dentro de la red
Ethereum: crear
Pagos. Competir con las aplicaciones
divisas y el oro. También
descentralizadas y ejecutar
como inversión.
contratos inteligentes.
También como inversión
Nombre de la criptomoneda Bitcoin (BTC) Ether (ETH)
Decimales 8 18
Cuadro comparativo Bitcoin vs.
Ethereum
BITCOIN ETHEREUM
Cantidad máxima a emitir de 21 millones de bitcoin en total, 18 millones por año, por lo
criptomoneda por lo tanto, deflacionaria tanto, inflacionaria
Creación de criptomonedas
a través de Minería

Sistema de minería Proof of Work (PoW) // Prueba de Trabajo


Cantidad de recompensa de Actualmente 12,5 bitcoin por 3 Ether por bloque desde la
la minería bloque. Cada 210.000 bloques
introducción de la etapa Metrópolis.
Anteriormente fue de 5 Ether por
decrece a la mitad bloque

Método de recompensa de Por validación de bloques, de


los mineros Por validación de bloques transacciones y por ejecución de
contratos inteligentes

Procesamiento de los
bloques Cada 10 minutos Cada 16 segundos
Cuadro comparativo Bitcoin vs.
Ethereum

BITCOIN ETHEREUM
Sin definir, pero muy
Tamaño de los bloques 1 Mb como máximo
por debajo de 1 Mb
Recálculo de la dificultad Cada 2016 bloques
de minado minados Cada bloque minado

Coste de las
transacciones Todas por igual Depende del Gas
Particularidades de
Ethereum
Particularidades de Ethereum

Detalles que le hacen destacar a Ethereum


Ethereum es una plataforma descentralizada que ejecuta
contratos inteligentes: aplicaciones que funcionan
Contratos inteligentes exactamente como están programadas sin posibilidad de
inactividad, censura, fraude o interferencia de terceros.

l La red Ethereum, sin embargo, está basada en la


comunidad y no controlada por ninguna autoridad. Esto
significa que las Ðapps no necesitan de servidores ni
otras entidades, sino que viven en la cadena de
Aplicaciones bloques, al igual que todo su contenido.
descentralizadas (ÐApps) l Ethereum y Bitcoin en sí mismas no dejan de ser
ÐApps: Bitcoin sería una ÐApp de sistema de pagos
descentralizados y Ethereum sería una ÐApp que
permite la creación de contratos inteligentes y otras
ÐApps basados en ella.
Particularidades de Ethereum

Detalles que le hacen destacar a Ethereum

l Ethereum ofrece la posibilidad de construir contratos


inteligentes, aplicaciones descentralizadas y
organizaciones autónomas descentralizadas (DAOs)
sobre su propia cadena de bloques, aprovechando así
todo su potencial y sin necesidad de crear otras
Construir sobre Ethereum
cadenas de bloques particulares.
l A través de unas cerraduras inteligentes conectadas a
Ethereum, se pueda alquilar, vender o compartir
cualquier propiedad de forma automática y sin
intermediarios, de forma descentralizada.
Solidity: código de
instrucciones de
Ethereum
Introducción al Solidity

Los contratos inteligentes son programas informáticos que


ejecutan acuerdos establecidos entre dos o más partes
cuando se da una condición programada con anterioridad.
Es decir, son contratos que se ejecutan y se hacen cumplir a
sí mismos de manera automática y autónoma.
Para que los smart contracts se ejecuten necesitan
instrucciones escritas en código denominado Solidity.
Introducción al Solidity
Requisitos previos del programador

Requisitos

l Quizá no un experto, pero comprender bien la


Blockchain antes de sumergirte en Solidity es una
buena idea. La documentación de Bitcoin es, de
momento, mejor que la que ha producido la comunidad
de Ethereum.
¿Debería ser un experto l Estudiar Bitcoin, aprenderás la misma tecnología
en criptomonedas antes (cadena de bloques, criptografía, claves
de estudiar Solidity y públicas/privadas, etc.) con recursos de desarrollo más
crear proyectos en fáciles de instalar y usar de lo que actualmente está
Ethereum? disponible para Ethereum.
l Libro Mastering Bitcoin (español):
https://bitcoinbook.info/wp-content/translations/es/book.pdf
l Luego, aprendidas ya las bases, puedes pasar a Solidity.
l Para hacer el camino más sencillo, es recomendable
también tener ciertos conocimientos previos de Javascript.
¿Qué es Solidity y para qué sirve?

Solidity es un lenguaje de programación cuya síntesis es


similar a otro de los lenguajes de programación.
Este lenguaje está diseñado y compilado en código de bytes
(bytecode) para crear y desarrollar contratos inteligentes
que se ejecuten en la Máquina Virtual Ethereum (EVM).
Solidity es un lenguaje ‘Turing
Complete’
La Ethereum Virtual Machine Turing Complete:
(EVM) es considerada una capacidad que tiene un
Máquina de Turing Universal, lenguaje informático para
término que se refiere al
resolver cualquier
software que es lo
suficientemente hábil como problema computacional
para ejecutar cualquier y para añadir reglas
código definido por el complejas como, por
desarrollador. ejemplo, los bucles.

Un bucle en informática es una instrucción de repetición que permite que los


programas puedan realizar, como su nombre indica, tareas repetitivas por
código.
Solidity es un lenguaje ‘Turing
Complete’

Ejemplo: queremos crear un contrato inteligente para pagar


el sueldo a los 50 empleados de una empresa y, a su vez,
realizar un incremento salarial del 2% a todos ellos. Las dos
variables (el sueldo y el incremento del 2%) se pondrían
dentro de un bucle que se ejecute 50 veces (una por cada
miembro de la empresa), sin necesidad de escribir el mismo
código 50 veces para realizar la misma operación.
El IDE y su máquina virtual (EVM)
IDEs pueden añadir:
Un compilador es un programa
Un IDE (Entorno de Desarrollo
l

informático cuya función es traducir


Integrado) es la aplicación lo que se ha escrito en un lenguaje
informática que proporciona las de programación y pasarlo a un
herramientas adecuadas a los lenguaje de máquina (de bajo
programadores y nivel).
Un intérprete es un programa
desarrolladores para desarrollar
l

informático capaz de analizar y


un programa. Es decir, es el ejecutar otros programas. Estos se
programa que facilita la diferencian de los compiladores en
creación de otros programas. que, mientras el compilador traduce
la totalidad de lo que se ha escrito,
el intérprete solo analiza y traduce
lo necesario, es decir, una
instrucción concreta, por ejemplo.
El IDE y su máquina virtual (EVM)

Maquina Virtual Ethereum (EVM) interpreta tanto los


entornos de desarrollo de los contratos inteligentes como el
lenguaje en el que se escriben (Solidity).
Loom Network

Loom Network es una red de herramientas de aplicación específica basadas en


Ethereum pero que funcionan de forma paralela a ésta. Su objetivo es el de que
los desarrolladores puedan crear y ejecutar sus aplicaciones descentralizadas
aumentando su escalabilidad.
Loom Network
Algunas herramientas:
l EthFiddle es el lugar más popular de la
comunidad Ethereum para compartir
Loom Network es una red de fragmentos de código de Solidity.
EthDeploy se podría decir que es como el
componentes, herramientas e l

‘Amazon Web Services’ de Ethereum. Se


idiomas que juntos hacen trata de una colección de servicios de
posible pensar en las computación que en su conjunto forman
una plataforma en sí y que ayudan a los
aplicaciones web tradicionales desarolladores de Ethereum a desplegar y
como aplicaciones administrar sus ÐApps y a aumentar su
escalabilidad.
descentralizadas. l CryptoZombies es una escuela de código
interactivo gratuita que enseña a construir
juegos en Ethereum.
l Lenguaje de programación compatible
100% con Solidity llamado, valga la
redundancia, SolidityX. Es un lenguaje
seguro por defecto, que compila de forma
actualizada con todas las soluciones de
seguridad.
Solidity: Contrato inteligente simple

La primera línea simplemente dice que el código


fuente se ha escrito en la versión 0.4.0 de Solidity o
en otra superior totalmente compatible (cualquiera
anterior a la 0.5.0). Esto es para garantizar que el
contrato no se va a comportar de una forma
diferente con una versión más nueva del
compilador. La palabra reservada pragma es
llamada de esa manera porque, en general, los
“pragmas” son instrucciones para el compilador
que indican como este debe operar con el código
fuente (p.ej.: pragma once).
Solidity: Contrato inteligente simple

Un contrato para Solidity es una colección de


código (sus funciones) y datos (su estado) que
residen en una dirección específica en la
blockchain de Ethereum. La línea uint storedData;
declara una variable de estado llamada storedData
del tipo uint (unsigned integer de 256 bits). Esta se
puede entender como una parte única en una base
de datos que puede ser consultada o modificada
llamando a funciones del código que gestiona
dicha base de datos. En el caso de Ethereum, este
es siempre el contrato propietario. Y en este caso,
las funciones set y get se pueden usar para
modificar o consultar el valor de la variable.
Solidity: Contrato inteligente simple

Para acceder a una variable de estado, no es


necesario el uso del prefijo this. como es habitual
en otros lenguajes.
Este contrato no hace mucho todavía (debido a la
infraestructura construida por Ethereum),
simplemente permite a cualquiera almacenar un
número accesible para todos sin un (factible) modo
de prevenir la posibilidad de publicar este número.
Por supuesto, cualquiera podría simplemente
hacer una llamada set de nuevo con un valor
diferente y sobreescribir el número inicial, pero
este número siempre permanecería almacenado
en la historia de la blockchain.
ÐApps: Aplicaciones
descentralizadas
¿Qué es una ÐApp?

Una ÐApp (se escribe con esta Ð extraña y pronunciado


como [Di-app]) es una aplicación descentralizada, es
decir, una app que no depende de un sistema central,
sino que depende de la comunidad de usuarios que la
utilizan.
La aplicación descentralizada puede ser una app móvil o
una aplicación web que interactúa con un contrato
inteligente para llevar a cabo su función.
Apps tradicionales vs Apps
descentralizadas (Apps vs ÐApps)
Arquitectura Arquitectura
App Web ÐApps

Front End Front End


HTML / CSS / JS HTML / CSS / JS

Backend Ethereum
Rails / Django / Backend
NodeJS Smart Contracts
Apps vs ÐApps: Ventajas de las
ÐApps frente a las Apps
APPS ÐApps
ÐApp no es necesario hacer
Webs tradicionales solemos
integraciones adicionales, ya que
encontrar pasarelas de pago o
es posible para el usuario el
Procesamiento de datos integraciones con PayPal para poder
enviar o recibir fondos - en forma
recibir pagos de los usuarios que
de Ether - de una forma directa,
navegan a través de ella.
sin la figura intermediaria.
Registrarnos en cada web de ÐApps no ocurre ya que los
Internet. El tener que crear muchas usuarios no necesitan registrarse.
cuentas de usuario con contraseñas Al crear una sola cuenta con su
Cuentas de usuario diferentes puede hacer que, con el llave pública y su llave privada
paso del tiempo, se nos olviden y (caso de las Wallets) que
tengamos que recurrir al proceso de contiene sus datos, puedes
“recuperar contraseña”. vincularla con cualquier ÐApp.
Apps vs ÐApps: Ventajas de las
ÐApps frente a las Apps
APPS ÐApps
ÐApps: el almacenar datos en
una blockchain hace que estos
datos permanezcan inmutables,
es decir, una vez que se registran
esos datos ya no se pueden
borrar. Los datos permanecen en
Sistema tradicional: los datos son
la cadena de bloques de forma
almacenados a través de discos
encriptada, es decir, son ilegibles
Base de datos duros, ya sean personales o en
para cualquier persona excepto
servidores externos, mediante
para sus propietarios. Carácter
servicios en la nube.
distribuido de la blockchain hace
que esos datos residan en cada
ordenador de la red Ethereum,
por lo que si desaparecen de un
ordenador, existen muchas otras
“copias de seguridad”.
Apps vs ÐApps: Ventajas de las
ÐApps frente a las Apps
APPS ÐApps
ÐApps: los usuarios pueden estar
tranquilos ya que pueden
Aplicación web: podemos ver el inspeccionar tanto el código del
código que se ha usado a través de frontend como el código del
las herramientas de inspección del contrato inteligente basado en
navegador. De esta forma, el usuario Ethereum, que funciona como
Confianza puede verlo desde el ‘frontend’. La backend o servidor. De esta
interacción de ese frontend con el manera se puede verificar que el
backend es algo que no podemos ver código no tiene fallo alguno por el
a simple vista. cual se puedan robar fondos o
información depositada en la
ÐApp.
Tipos de ÐApps
Aplicaciones Aplicaciones Aplicaciones
descentralizadas descentralizadas descentralizadas
tipo I tipo II tipo III
Utilizan la blockchain de una Utilizan el protocolo de una
aplicación descentralizada tipo I aplicación descentralizada de
en vez de tener ellas una propia. tipo II como las que acabamos
Tienen su propia cadena de de ver.
bloques independiente.

Estas aplicaciones, también


Este tipo de ÐApps son protocolos
funcionan con sus propios tokens
que funcionan ya sea con sus digitales o bien con los de las ÐApps
propios tokens o con los tokens de
en las que se basan, al igual que
la blockchain en la que operan. pasaba con las ÐApps de tipo II.
Etehereum sería una de
estas a ÐApps, aunque la
más conocida sea Bitcoin y ÐApps sería Omni Layer. Esta Ðapp
ÐApp de tipo III podría ser Safe
otros ‘altcoins’ como está construida sobre la cadena de
Network, que utiliza el protocolo de
bloques de Bitcoin y sirve para la
Litecoin, Dash o Monero. Omni Layer para emitir su propia
creación y el comercio de activos
digitales y criptomonedas. criptomoneda ‘Safecoin’.
State of the ÐApps: La ‘App Store’
descentralizada de Ethereum
IEBS y la certificación
de títulos con contratos
inteligentes
Necesidad de IEBS
Proceso deImplantación

FASE 1: Integración Básica con


BeCertify:
• Crear nuevo certificado
simple (id)
• Consultar validez certificado

FASE 2: BackEnd de Gestión:


• Consultar estado de creación
• Revocar certificado
• Añadir metadatos al
certificado tanto en creación
como en consulta (hasta un
máximo de 5)
Fases de desarrollo

Actividad
Definición de Arquitectura Tecnológica (Fases 1 y 2)
Diseño de API v1 (integración básica conBeCertify)
Desarrollo v1 API con datos de Mockup y desplegada en entorno IEBS
BeCertify disponible en entorno dePruebas
Integración API con el SmartContract de BeCertify
Pruebas de validación y aceptación Integración
Diseño de v2 API (BackEnd degestión)
Desarrollo Mockup v2 deAPI
Desarrollo BackEnd de Gestión
Desarrollo de pruebas integradas BackEnd de Gestión
Despliegue en entorno de Pruebas IEBS
Validación y aceptación
Despliegue en entorno productivo de BackEnd y API v2
Ejemplos de Contratos
Inteligentes a nivel
sectoriales
Provenance: mejorar la transparencia y
trazabilidad en las cadenas de suministro

Ejemplo de uso los contratos


inteligentes para aumentar la
seguridad y hacer seguimiento de
la procedencia del producto en
las cadenas de suministro de
alimentos.

Desarrollo de sistema de
trazabilidad para materiales y
productos utilizando blockchain,
con el objetivo de garantizar que
la información que se almacena
de manera segura, auditable,
inmutable y accesible.
DISCIPLINA: selección de personal

Crear cuentas verificadas según estudios e historial


laboral.

Blockchain en proyectos educativos y selección de


personal:

White Paper: https://disciplina.io/WhitePaper_esp.pdf


Blockverify: mejorar la transparencia y
trazabilidad en las cadenas de suministro

Ejemplo de sistema de
seguimiento y rastreo en
blockchain (monitorizar
productos farmacéuticos
desde fabricante al
usuario final).

Capacidades de blockchain para la trazabilidad y la autenticidad de producto


en la cadena de suministro de medicinas.
Power Ledger: eliminar las ineficiencias
del mercado (Electricidad P2P)

Ha desarrollado un mercado de energía peer-to-peer en una cadena de


bloques, para comprar y vender electricidad proveniente de la energía solar.
MAERSK: desbloquear el valor de la
logística

Transporte internacional de mercancías: objetivo mejorar la


administración y trazabilidad de contenedores marítimos mediante
la digitalización extremo a extremo de la cadena de suministro
(incrementar la transparencia y conseguir intercambio seguro y
confiable de información.

También podría gustarte