Skip to content

Instantly share code, notes, and snippets.

@gaboesquivel
Last active January 19, 2020 05:01
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save gaboesquivel/34c5ba9ba247c723678391ddd6695b6e to your computer and use it in GitHub Desktop.
Save gaboesquivel/34c5ba9ba247c723678391ddd6695b6e to your computer and use it in GitHub Desktop.
Guía para el webinar de desarrollo de aplicaciones sobre la plataforma EOS.

Introducción al desarrollo de aplicaciones en EOS

Alt text

Descripción del Webinar

Es una gentil introducción a la programación de aplicaciones en eosio blockchains dirigida a desarrolladores de software.

  • No es indispensable conocer c++, sin embargo conocimientos de programación son requiridos para comprender los contenidos de este webinar.
  • Haremos un recorrido general por el diseño, historia y ecosistema de eosio.
  • Veremos el proceso de desarollo de contratos inteligentes.

Agenda:

  • Intro
  • Breve historia.
  • Arquitectura de las redes basadas en EOSIO Software.
  • Componentes de EOS. ( cleos, keosd, nodeos)
  • Configuración de ambiente de desarrollo.
  • Demostración del proceso de desarrollo de un contrato.
  • Preguntas y Respuestas.

Intro

Soy Gabo de EOS Costa Rica. Ingeniero de software con 10 años de experiencia desarrollando aplicaciones con tecnologías open source. Colaboro en BlockchainCR, una organización enfocada en impulsar la tecnología de cadenas de bloques en Costa Rica mediante educación y organización eventos. Formo parte de AsoBlockchain.org, la asociación de empresas e individuos del gremio de blockchain en Costa Rica.

Si pasan por Costa Rica, La Crypto Cantina es un evento abierto e informal que se realiza todos los jueves a partir de las 6pm en la San José.

https://gaboesquivel.com - @gaboesquivel

EOS Costa Rica

Alt text

Es una empresa costarricense que se enfoca en las siguientes áreas:

  • Infrastructura para redes eosio.
  • Desarrollo de soluciones empresariales.
  • Educación y comunidad.

links

¿Qué es blockchain?

Blockchain es un almacén descentralizado y distribuido de datos. Periódicamente se crea un nuevo bloque de transacciones y se conecta al bloque anterior. Se distribuye porque la cadena de bloques almacena las transacciones en muchas computadoras. Está descentralizado porque la infraestructura de blockchain no es propiedad de una sola compañía. Blockchain proporciona confianza; La criptografía y el consenso aseguran que las transacciones sean inmutables. Blockchain proporciona resistencia y transparencia; La descentralización y la distribución significan que muchas copias de la cadena de bloques están disponibles para que todos las vean.

¿Qué es un contracto inteligente ?

Qué es un contrato?

  • Acuerdo, generalmente escrito, por el que dos o más partes se comprometen recíprocamente a respetar y cumplir una serie de condiciones.
  • Documento en que figura este acuerdo, firmado por todas las partes.

Un contrato inteligente es básicamente el mismo concepto pero programado y firmado con llaves cryptográfica. La tecnología blockchain permite que una red de nodos con un copia del estado e historial sirva como testigos y validadores mediante algoritmos de concenso.

Beneficios de blockchain. ¿Por qué blockchain?

  • Es una mejor arquitectura que client server actual.
  • Mayor seguridad con firmas criptográficas.
  • Ejecución de contratos inteligentes. ( acuerdo programables )
  • Libros abiertos y trazabilidad de cambios en la data.
  • Auditabilidad y transparencia.
  • Organizaciones / Comunidades / Compañías autónomas decentralizadas.
  • Reducción de costos de infrastructura.
  • Permite representar valor por medio de tokens.
  • Dinero programable.
  • Nuevos modelos de incentivos.
  • Eficiencias en el intercambio de valor.
  • Resistencia a la censura y desastres.

Breve historia del blockchian

  • Criptografía ( 1970, firmas digitales )
  • File Sharing ( 1999/2001 link-only mp3, napster, naturaleza de resistencia a la censura )
  • BitTorrent ( 2001, protocolo libre y open source, prueba criptográfica de no modificación de los archivos )
  • Bitcoin ( 2008/2009, satoshi, cypherpunks, prueba de trabajo y suministro limitado )
  • Ethereum ( 2013/2014, prueba de trabajo y smart contracts )
  • Graphene & BitShares (2013/2014, DPOS, performant blockchain for financial services, dex and permissions )
  • Steem (2016, DAC, SMTs, Steemit)
  • EOS ( 2017/2018, real-time, no fees, scalable, 4000+ TPS -> millions TPS, gobernanza, DACs )

EOSIO software

  • EOSIO fue diseñado por Dan Larimer, quien previamente desarolló:

    • Graphene : tecnología blockchain de alto rendimiento.
    • BitShares : dac, plataforma blockchain real-time para servicios finacieros, dpos.
    • Steem: dpos, blockchain para smart media tokens (SMTs).
    • Steemit: red social de blogging que premia los usuarios por sus contribuciones.
  • Basado en un documento publicado en 2017, la plataforma EOSIO fue desarrollada por la empresa privada block.one y lanzada como software de código abierto en 2018.

  • Con el fin de garantizar una amplia distribución de la criptomoneda nativa en el lanzamiento del blockchain, mil millones de tokens se distribuyeron como tokens ERC-20 por block.one durante un año. Se recaudó más de cuatro mil millones de dólares para apoyar la cadena de bloques durante la oferta inicial de monedas. Período (ICO).

  • Block.one apoya la cadena de bloques EOS con más de mil millones de dólares en fondos destinados a impulsar aplicaciones decentralizadas en EOS, EOS VC.

  • En Junio 2018 se lanzo oficialmente el EOS Mainnet.

Alt text

https://dappradar.com/eos-dapps

Cómo aprender?

Arquitectura de EOSIO

Características Generales

  • Blockchain software para propósito general.
  • Respuesta en tiempo real.
  • Nombre de usuario amigables para el usuario.
  • Sistema de autenticación y permisos.
  • Sistema de gobernanza, DAC.
  • Interblockchain comunication.
  • Actualizaciones constantes.
  • Permite modelos de servicio en el que el negocio paga por infra. ( no gas fees )
  • Código fuente en C++, contratos se compilan a WASM.
  • Tablas en RAM con multi-index, historial transaciones en disco.

Componentes básicos de un blockchain

  • Red de punto a punto.
  • Libro o estado compartido ( datos ).
  • Protocolo comunicación y consenso ( dpos 2/3+ ).

Data Explorers

Delegated Proof of Stake (DPOS) en EOS

Mediante un sistema de votación contínuo se delega el poder de firmar bloques a 21 productores. Hay también nodos o block producer en una posición de stand by listo para producir si fiera necesario, block producers también exponen APIs para interactuar con la red.

https://eosauthority.com/voting

Esto tiene beneficios con respecto a la prueba de trabajo, uno de ellos es que disminuye el consumo energético, es más ecológico.

Alt text

source https://steemit.com/eos/@genereos/eos-energy-consumption-vs-bitcoin-and-ethereum

read more

Recursos de la Red - Staking

Uno de los diferenciadores que distingue a EOS de otras cadenas de bloques es su mecanismo de puesta ( staking ) de recursos: los usuarios obtienen acceso a los recursos de ancho de banda y CPU a través de la puesta de tokens de EOS.

  • CPU
  • NET ( Bandwidth )
  • RAM
  • Flotante o líquido

Se puede ver como Blockchain Real State.

Sistema de cuentas y permisos

A diferencia de otras redes en EOS las llaves de acceso y las cuentas son conceptos diferentes, las llave proveen la habilidad de realizar las firma criptográficas pero puedes utilizar nombre de usuario de 12 caracteres y configurar diferentes niveles de permisos para cada una de tus llaves.

  • Accounts / Cuentas
  • Actions / Acciones
  • Handlers / Controladores

https://github.com/EOSIO/Documentation/blob/master/TechnicalWhitePaper.md#actions--handlers

La combinación de actions y controladores es la forma en que eosio define los contratos inteligentes.

Alt text

Alt text

Alt text

https://hackernoon.com/eos-101-getting-started-with-eos-part-2-2afbce4a8a05

https://medium.com/coinmonks/eos-accounts-and-permissions-visualized-677fc9c144e4

Composición de la red

Alt text

Alt text

Alt text

https://developers.eos.io/eosio-nodeos/docs/boot-sequence

Interoperabilidad

Alt text

https://steemit.com/eos/@cicbar/eos-unlimited-scaling-possibilities

Anatomia de un bloque

  Block

    Region

      Cycles (sequential)

        Shards (parallel)

          Transactions (sequential)

            Actions (sequential)

              Receiver and Notified Accounts (parallel)

https://github.com/EOSIO/Documentation/blob/master/TechnicalWhitePaper.md#minimizing-communication-latency

Sister chains and side chains

Comparación con otras blockchains públicas

Alt text

https://steemit.com/eos/@cryptojack/why-eos-will-unmercilessly-f-k-ethereum-in-the-ausd-and

https://steemit.com/eos/@trogdor/eos-vs-ethereum-for-dummies

Componentes de EOS. ( cleos, keosd, nodeos )

  • nodeos (node ​​+ eos = nodeos): el demonio del nodo EOSIO que se puede configurar con complementos para ejecutar un nodo. Ejemplos de uso son producción de bloques, puntos finales de API dedicados y desarrollo local.
  • cleos (cli + eos = cleos): interfaz de línea de comandos para interactuar con la cadena de bloques y administrar las billeteras.
  • keosd (clave + eos = keosd): componente que almacena de forma segura las claves EOSIO en las billeteras.

Conceptos

  • onchain: data o eventos en la cadena.
  • offchain: data o eventos fuera del blockchain.
  • testnet: red de prueba.
  • cuenta: nombre de la cuenta en eos.
  • owner key: llave privada para que demuestra que eres el dueño.
  • active key: llave privada para para firma de transacciones.
  • private key: llave criptográfica para firmar.
  • wallet: software que guarda tus llaves de manera segura.
  • cliente: software que interactúa con el blockchain a travez de apis.

https://www.eoscanada.com/en/abc-eos

Configuración de ambiente de desarrollo.

Demostración del proceso de desarrollo de un contrato.

Preguntas y respuestas

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment