Вы находитесь на странице: 1из 5

1 Conocimiento y desarrollo de DAPS (aplicaciones

descentralizadas) en el ambiente profesional del desarrollo de


software y el público en general.
1.1 Antecedentes
Si bien el concepto de redes centralizadas, descentralizas y distribuidas ya existía desde los inicios
del internet no fue hasta la llegada de la criptomoneda bitcoin que el termino descentralizado
comienza a tener relevancia, no solo en el mundo de la informática si no también en otros muy
variados pero que se ha enfocado principalmente en el ámbito financiero.

En el año 2009 el autor anónimo Satoshi Nakamoto publica el whitepaper de bitcoin con el título de
“Bitcoin: A Peer-to-Peer Electronic Cash System” en donde plantea la creación de un sistema de
intercambio entre pares y que este no necesite de la existencia de una tercera entidad que pueda
dar certeza de la validez de las transacciones que se efectúan dentro de la red.

A lo largo de dicho artículo se describen las características del sistema para obtener esta confianza
sin necesidad de la existencia de un tercer participante, esto se logra a través de la existencia de
una base de datos de tipo distribuida a lo largo de todos los nodos que están conectados a la red, a
este sistema se le llamo “blockchain” o cadena de bloques.[11]

La cadena de bloques permite renacer el término descentralizado nuevamente ya que la blockchain


misma es similar a un libro contable pero que es distribuido a todas las computadoras que se
conectan a la red bitcoin para poder operar en ella, es decir, cada nuevo participante tiene una copia
exacta del libro contable completo lo que le brinda la seguridad, además de eso cada nueva
transacción efectuada dentro de la red es verificada por cada una de esas computadoras y solo hasta
existir consenso entre todos los nodos se agregara la nueva información a la cadena de bloques, o
en este caso, se agregara un nuevo bloque.

De esta manera la seguridad de la red depende de cada uno de los participantes de la misma y no
de una entidad central que se encarga de realizar este trabajo, es por ello que el blockchain permite
ser un sistema descentralizado.

Llevando este mismo concepto de descentralización, pero ahora a las aplicaciones de tipo web que
se desarrollan y publican en diversos servidores alrededor del mundo, podemos decir que las
aplicaciones descentralizadas son aquellas que no tiene todo su código ejecutándose dentro de un
solo servidor central si no que pueden ser ejecutadas dentro de todos los partícipes (o nodos) de la
red que la aloja, de esta manera permite desarrollar aplicaciones que no pueden ser censuradas o
detenidas. [2]

1.2 Bases teóricas


A continuación todo el marco teórico relacionado con el desarrollo de aplicaciones descentralizadas
en la actualidad, desde la tecnología que permite su desarrollo que es la “blockchain”, pasando por
conocer el sistema Ethereum y su lenguaje de programación solidity y finalmente conocer algunas
aplicaciones descentralizadas en desarrollo, etapa de prueba o con versiones estables en
funcionamiento.
1.2.1 Redes centralizadas y descentralizadas
Un sistema centralizado consiste en traspasar la información (o las órdenes) desde un único punto.
Un ejemplo clásico sería el de la televisión. La información se emite desde un único punto y los
receptores (antes se llamaban así a los aparatos de televisión) reciben la información que quieren
dar desde ese punto central.

En una red descentralizada, también llamada distribuida, cualquier receptor final puede ser a la vez
emisor. De la misma forma que todos los receptores pueden escoger cual es la fuente (emisor) que
más le conviene. No encuentro ningún ejemplo social (excepto el de la web 2.0) para ilustrarlo, pero
si en la naturaleza, la idea sería parecida a la capacidad de ramificación de las neuronas donde cada
neurona tiene unas ramificaciones que son capaces de unirse a otras neuronas mediante lo que se
conoce como sinapsis. La potencia de las redes distribuidas está en la eliminación de filtros o sesgos
en la información. Eliminar o sesgar algunos de los puntos de información no imposibilitará que el
sistema siga funcionando, porque el sistema de redes distribuidas seguirá funcionando.

1.2.2 Blockchain
La cadena de bloques o blockchain puede definirse como in libro contable descentralizado y
transparente que lleva el registro de todas las transacciones. Éste es compartido por todos los
nodos, actualizado por los mineros, verificado por todos y, finalmente, perteneciente y controlado
por nadie. [15]

Como puede verse en la definición existen múltiples elementos que conforman el funcionamiento
de este sistema, los elementos son los siguientes:

 Nodo: es todo aquella computadora que ejecuta el programa para conectarse a la red y
formar parte ella, en él se aloja una copia exacta de la blockchain y que será actualizada por
los mineros. [15]
 Minero: es un nodo que además de tener un respaldo de la blockchain, además, tiene la
función de verificar las nuevas transacciones y realizar un proceso matemático para validar
la integración de nuevos bloques en la cadena de bloques, al minero se le recompensa por
la realización de este trabajo de actualizar y verificar la base de datos y esa recompensa
usualmente es a través de la criptomoneda que también está montada sobre el mismo
protocolo. [15]
 Transacciones: es un paquete de información signado para transferir, en el caso de la
blockchain de criptomonedas, para transferir cierta cantidad de criptomoneda de la cuenta
de un usuario a la cuenta de otro usuario o, en el caso de Ethereum, hacia un código de
programación. [12]

1.2.3 Ethereum
Ethereum es una plataforma, que utiliza la tecnología blockchain, para ser una plataforma
descentralizada que nos permite ejecutar aplicaciones descentralizadas en ella. Ethereum funciona
a través de la ejecución de uno o múltiples códigos llamados “Smart Contracts”, los “Smart
Contracts” o contratos inteligentes son programas que se ejecutan tal cual se han escrito y publicado
sobre Ethereum sin que exista posibilidad de apagado, censura, fraude o la intervención de un
tercero en su funcionamiento.[12]
Dentro de la plataforma Ethereum existe, la que se ha llamado, Ethereum Virtual Machine (o
máquina virtual de Ethereum) que permite la ejecución de código de programación.

Tradicionalmente los programadores se ven en la necesidad de crear una aplicación en los lenguajes
de programación usuales y después ejecutar el código dentro de un servidor centralizado [6],
mientras que las aplicaciones desarrolladas sobre Ethereum no son alojadas en un servidor central
si no sobre la red de Ethereum que está compuesta por múltiples nodos.

Los programas de computadora de Ethereum pueden ser escritos en un lenguaje de programación


que es similar a los códigos ya conocidos por los programadores. Ethereum además cuenta con una
red existente de computadoras conectadas juntas que se encargan de la ejecución de los programas.

Para la ejecución de las instrucciones de los “Smart Contracts” los métodos pueden ser invocados a
través de transacciones en la red Ethereum o a través de otros métodos. [12]

1.2.4 Lenguaje de programación Solidity


El lenguaje de Solidity es el lenguaje más popular para la creación de contratos inteligentes en la
máquina virtual de Ethereum. [9]

Como cualquier lenguaje de programación, el lenguaje solidity tiene estructura, tipos de datos y
tipos de variables, los Smart contracts tienen una estructura similar a la programación orientada a
objetos de los lenguajes C++ y Java. Es necesario destacar que los Smart Contracts son hechos en el
lenguaje Solidity pero, evidentemente, la máquina virtual de Ethereum no es capaz de interpretar
lenguajes de alto nivel si no que deberá transformarse el código del Smart contract a un lenguaje
de bajo nivel llamado bytecode.

Además de eso el lenguaje solidity es muy similar al lenguaje javascript, es la combinación entre el
lenguaje javascript y el lenguaje C. Sin embargo, a pesar de ser u lenguaje orientado a objetos, este
no tiene todas las características de un lenguaje orientado a objetos, por ejemplo es necesario que
el tipo de datos sean conocidos y definidos durante la compilación. Incluyendo otro tipo de
características que si se desea conocer el desarrollo de aplicaciones descentralizadas deberán
saberse.

1.2.5 Aplicaciones descentralizadas


Es un tipo de aplicación de internet que es ejecutada en una red peer-to-peer descentralizada y que
su código es libre. En este caso un solo nodo no tiene el absoluto control de la ejecución del
programa.[12]

Estos pares pueden ser cualquier computadora conectada al internet, sin embargo es necesario
prevenir que hagan cambios inválidos a la aplicación y que compartan información errónea a los
demás nodos. De esta manera será necesario contar con algún tipo de protocolo de consenso que
es parte de la red de ethereum.

Cada una de las DAPPs necesita de un cliente para el usuario que le permita interactuar con la
aplicación. Primero se necesita de un nodo que se conecte a la red y posteriormente conectarse
ejecutar un nodo servidor de la aplicación para que pueda interactuarse con ella.
1.2.5.1 Ventajas de las dapps
 Las aplicaciones descentralizadas tiene más tolerancia a las fallas que las aplicaciones
centralizadas ya que no existe un punto específico de falla al estar distribuidas en una red.
 Al no tener una autoridad central que las controlen estas están libres de censura.
 Los usuarios tiene plena confianza dado que esta no está siendo controlada por una
autoridad central.

1.2.5.2 Desventajas de las dapps


 La corrección de errores en este tipo de aplicaciones es más complicada, debido a que cada
nodo debe de corregir el error.
 Algunas aplicaciones requieren de la validación de identidad de usuario y en el caso de las
aplicaciones descentralizadas que no cuentan con una autoridad central que verifique la
identidad de usuarios, provoca que se deba confiar en el usuario de decir verdad.
 Difíciles de construir por el uso de protocolos complicados para funcionar.

Bibliografía
[1] Bauerle, N. (9 de Marzo de 2017). What Are the Applications and Use Cases of Blockchains?
Obtenido de Coindesk - leader in blockchain news:
https://www.coindesk.com/information/applications-use-cases-blockchains/

[2] Buterin, V. (23 de Enero de 2014). A Next-Generation Smart Contract and Decentralized
Application Platform. Obtenido de GitHub Ethereum:
https://github.com/ethereum/wiki/wiki/White-Paper

[3] Cawrey, D. (25 de Marzo de 2014). Decentralized Applications to Offer More Than Just
Bitcoin Transactions. Obtenido de Coindesk - leader in blockchain news:
https://www.coindesk.com/decentralized-applications-offer-just-bitcoin-transactions/

[4] Chronobank team. (19 de Enero de 2018). Chronobank - revolutionary platform for crypto
assets management. Obtenido de LaborX Pty Ltd.:
https://files.chronobank.io/files/Chronobank_WP.pdf

[5] Dale, B. (4 de Febrero de 2018). The Decentralized Web Just Might Need Databases, Too.
Obtenido de Coindesk - leader in blockchain news:
https://www.coindesk.com/decentralized-web-just-might-need-databases/

[6] Gates, M. (2017). Ethereum: complete guide to understanding ethereum, blockchain, smart
contracts, ICOs and decentralized apps. Estados Unidos: Wise Fox Publishing.

[7] Golem Project. (Noviembre de 2016). Golem project crowdfunding whitepaper. Obtenido de
Golem: https://golem.network/doc/Golemwhitepaper.pdf

[8] Hertig, A. (30 de Marzo de 2017). What is a Decentralized Application? Obtenido de


Coindesk - leader in blockchain news: https://www.coindesk.com/information/what-is-a-
decentralized-application-dapp/

[9] Modi, R. (2018). Solidity programming essentials. Birmingham, UK: Packt Publishing Ltd.
[10]Mukhopadhyay, M. (2018). Ethereum smart contract development. Birmingham, UK: Packt
Publishing Ltd.

[11]Nakamoto, S. (24 de Mayo de 2009). Bitcoin: A Peer-to-Peer Electronic Cash System.


Obtenido de Bitcoin.org: https://bitcoin.org/bitcoin.pdf

[12]Prusty, N. (2017). Building blockchain projects. Birmingham, UK: Packt Publishing Ltd.

[13]Shawn Wilkinson, T. B. (15 de Dicimebre de 2016). Decentralized cloud storage - Storj.


Obtenido de Storj; a Peer-to-Peer cloud storage network: https://storj.io/storj.pdf

[14]Status.im. (15 de Junio de 2017). The status network: a strategy towards mass adoption of
Ethereum. Obtenido de Status - A mobile Ethereum OS: https://status.im/whitepaper.pdf

[15]Swam, M. (2015). Blockchain: blueprint for a new economy. Sebastopol, CA: O'Reilly Media,
Inc.

[16]Wood, G. (Abril de 2014). Ethereum: a secure decentralised generalised transaction ledger


EIP-150 revision. Obtenido de Dr Gabin Wood personal site: http://gavwood.com/paper.pdf

Вам также может понравиться