Академический Документы
Профессиональный Документы
Культура Документы
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]
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]
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.
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]
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.
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.
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
[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.
[12]Prusty, N. (2017). Building blockchain projects. Birmingham, UK: Packt Publishing Ltd.
[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.