Smart Contracts: ¿Qué son? – Adrian Rodriguez
Son programas informáticos cuya principal diferencia con el resto es que se desarrollan sobre una blockchain. Esto implica que el código incluido en ellos debe ejecutarse de una manera determinista, es decir, siempre deben llegar al mismo resultado sin importar cuantas veces sean utilizados. ¿Por qué? Porque estos programas deberán ejecutarse en todos los nodos de la red y obtener siempre el mismo resultado, así los nodos podrán llegar a un consenso.
Una de las principales ventajas de este tipo de software es su transparencia en cuanto al código fuente y ejecución, ya que ambas pueden ser consultadas por cualquier usuario que quiera hacerlo. Además, una vez ejecutada alguna operación contenida en el código, al quedar guardada en blockchain, estaremos seguros que podremos localizarla en cualquier momento y que ningún tercero podrá modificarla ni revertirla.
No podemos decir lo mismo en cuanto a la descentralización propia del código. Hay métodos y patrones que un desarrollador puede implementar para mantener el control de ciertas partes del mismo, por ejemplo, ser el único que puede destruirlo, modificar ciertos valores maestros, etc. Dejo aquí un pequeño código a modo de ejemplo:
contract Ejemplo function modifActivar(bool nuevoEstado)function sumar(uint a, uint b) returns (uint)function destruir()}
Como vemos en el ejemplo, el desarrollador que despliega el contrato puede activar o desactivar la función sumar, destruir el contrato cuando quiera y nadie puede evitarlo. Por tanto, aunque el código se ejecute en un entorno descentralizado, este programa en concreto está centralizado.
A lo que hay que añadir que estos desarrollos pueden necesitar de los llamados Oráculos para poder conectarse con el mundo fuera de blockchain. ¿Cuál es el problema? Los oráculos son terceros de confianza, por tanto, estamos ejecutando un código en un entorno en el que no se requiere confianza, pero tenemos que confiar en un tercero para poder conectar blockchain y el mundo real. En consecuencia, caemos en la centralización, cuando estamos intentando huir de ella.
Hagamos una pequeña pausa. ¿Te has dado cuenta que no he necesitado las palabras smart y contract para explicarlo? Esto es porque los Smart Contracts no tienen nada de smart ni de contracts.
¿Por qué digo esto?
Empecemos por smart. Por el momento, no son códigos que puedan manejar la ambigüedad o casos que el programador no haya previsto. Es decir, se limitan a ejecutar el código que contienen sin ningún tipo de consideración adicional. Se podría decir que lo que tienen de “smart”, si los comparamos con los contratos tradicionales, es que pueden ejecutar las condiciones en él grabadas sin la ayuda de un tercero o de la otra parte involucrada. Por tanto, estamos hablando de un programa como los que ya conocemos, con la única diferencia que se ejecutan sobre una blockchain.
Tampoco son contracts. En primer lugar, no recoge la intención ni el acuerdo de las partes, se da por hecho por el uso del mismo, podemos hablar de un consentimiento tácito por uso. En segundo lugar, hay que tener en cuenta que es prácticamente imposible prever todos los posibles eventos que pueden surgir de una relación contractual. Los contratos tradicionales no tienen dicha necesidad, ya que si algún suceso no previsto ocurriera, las partes podrían resolverlo fuera del contrato, introducir una modificación al mismo o ir ante un juez para resolverlo. Si lo mismo ocurriera en un “smart contract” podría llevarnos a resultados perversos en los que ambas partes saldrían perjudicadas, por ejemplo, el caso de la DAO.
Entonces si no son contratos, ¿por qué los llamamos así?
El concepto fue acuñado por Nick Zsabo en el año 1994. Propuso, a grandes rasgos, transformar los contratos tradicionales de tal forma que los ordenadores pudieran entenderlos. De esta forma, las cláusulas del contrato se activarían automáticamente cuando ciertas condiciones se reunieran. Así eliminaríamos la necesidad de un tercero de confianza para la ejecución de las transacciones, porque éstas se ejecutarían por sí mismas.
Veámoslo con un ejemplo sencillo la propuesta de Nick Zsabo:
Quieres contratar mis servicios como desarrollador, por tanto, utilizamos un smart contract estableciendo las condiciones.
De esta forma, en lugar de pagarme por adelantado o con posterioridad al trabajo hecho, aportarías los fondos al contrato. Yo podría comprobar que el dinero está pero no podría acceder a él.
Una vez terminado mi trabajo y estando tú de acuerdo con lo recibido, el smart contract liberaría los fondos para que yo pudiera acceder a ellos.
Ventajas
- Las condiciones son claras y no están sujetas a interpretaciones, como puede estarlo el lenguaje que usamos en nuestro día a día.
- Ambas partes pueden consultar en todo momento el código y los resultados de la ejecución.
Inconvenientes
- El lenguaje en el que se escriben los smart contract no es de uso común. Requiere de un conocimiento específico para entender lo que se ha escrito en ellos
- Se habla de que quita la necesidad de un tercero. Este punto es relativo, ya que, es verdad que no necesitaríamos un intermediario de confianza para la transferencia como un banco o alguna plataforma. Sin embargo, necesitaríamos de un desarrollador de smart contract para crear el contrato e, incluso, confiar en que lo ha hecho de forma correcta.
- Si surge una discrepancia, ambas partes dependen de la voluntad de la otra, ya que, por el momento, no se consideran contratos legales por parte de las jurisdicciones existentes.
Por tanto, podemos decir que son códigos que permiten la ejecución de transacciones sin necesidad de un tercero, ya que una vez que un usuario lanza una transacción no depende de un servidor central ni de otro usuario para su ejecución ni tampoco puede pararse una vez iniciada.
¿De dónde viene entonces tanta emoción por estos programas?
A pesar de que sea difícil que lleguen a sustituir los contratos tal y como los conocemos, esto no les quita valor. El verdadero potencial de los smart contracts reside en su combinación con blockchain. Gracias a estas dos herramientas se pueden desarrollar proyectos que son resistentes a la censura y estarán disponibles para cualquiera que quiera utilizarlos. Se ha abierto la posibilidad de que cualquier desarrollo salga a la luz sin que nadie pueda censurarlo. Las oportunidades de innovación y disrupción que nacen a partir de esto son las que generan tanta expectación.
Es esta combinación la que tiene un gran potencial y aplicaciones muy variadas, desde construir un mercado de valores a un simple juego. Por tanto, la palabra smart contract hace referencia a uno de las posibles campos donde puede aplicarse. Por lo que podemos hacer una distinción:
· Smart Contract: programa que se almacena y ejecuta en una blockchain.
· Smart Legal Contracts: código igual que el anterior, con la única diferencia de que puede ser utilizado para complementar o sustituir un contrato legal.
Incluso podríamos utilizar el nombre dado en el ethereum white paper para el primero de los casos, “autonomous agents” (agentes autónomos). Parece un nombre más apropiado, ya que no necesariamente, como hemos dicho, representan un contrato. Con estos agentes autónomos podemos controlar otros agentes, contratos, fondos, desarrollar juegos, sistemas de identidad, transferencias de información, etc.
Por resumir, listemos lo que caracteriza a estos agentes autónomos o smart contracts:
- Transparencia: cualquiera puede ver el código y las transacciones que el contrato ha ejecutado.
- Ahorro de costes: la aplicación de los smart contract en ciertos procesos puede reducir no solo costes económicos, sino también temporales. Por ejemplo, en el proceso de compra-venta de acciones o inmuebles.
- Resistencia a la censura: al ejecutarse sobre una blockchain las transacciones que se lancen desde un smart contract no pueden ser bloqueadas por ningún gobierno o empresa, aunque hay que ser conscientes que los desarrolladores pueden implementar ciertos patrones para mantener cierto control sobre ellos.
¿Por qué deberían importarte?
Estos programas aumentarán la autonomía de las personas. Correctamente implementados reducirán o, incluso, eliminarán la dependencia de terceras partes para la realización de ciertas transacciones. Esto se debe a que eliminan la necesidad de confiar en otros, ya que dicha confianza vendrá del propio código que podrá ser consultado por cualquiera, así como sus ejecuciones.
Estos desarrollos podrían aplicarse a varios campos de nuestra vida cotidiana:
- Sistemas de votación: se podría crear un sistema de referéndum, el cual reduciría los costes de consulta a la ciudadanía por parte de los gobiernos. Como también las elecciones podrían celebrarse de forma totalmente descentralizada, aumentando la transparencia del proceso y la auditabilidad del mismo.
- Sector bancario: se reducirían los costes de la concesión de préstamos como otras transacciones con la consiguiente reducción de comisiones sobre sus clientes.
- Cadenas de suministros: permitiría a las empresas tener más control sobre los diferentes pasos de sus cadenas de suministros y evitar la manipulación de las materias primas y/o productos.
- Mercado inmobiliario: eliminaría intermediarios en el proceso, aumentaría la velocidad en la que estas operaciones son ejecutadas y simplificaría el proceso en general. Todo ello redundaría en reducción de costes y tiempo para las partes interesadas.
- Sector energético: podría ayudar a reducir los costes de las transacciones entre los operadores e, incluso, abrir el mercado a pequeños productores, reduciendo los precios.
- Sector seguros: aquí dejo que un ejemplo de uso real hable por sí solo
Fuentes:
Blockgeekscom. 2016. Blockgeeks. [Online]. [31 July 2019]. Available from: https://blockgeeks.com/guides/smart-contracts/
Coindeskcom. 2019. CoinDesk. [Online]. [31 July 2019]. Available from: https://www.coindesk.com/information/ethereum-smart-contracts-work
Blockgeekscom. 2016. Blockgeeks. [Online]. [31 July 2019]. Available from: https://blockgeeks.com/guides/smart-contracts/
Ezio rojas. 2019. Cointelegraph. [Online]. [31 July 2019]. Available from: https://es.cointelegraph.com/explained/what-is-a-smart-contract
Coindeskcom. 2016. CoinDesk. [Online]. [31 July 2019]. Available from: https://www.coindesk.com/making-sense-smart-contracts
David, B. 2019. Forbes. [Online]. [31 July 2019]. Available from: https://www.forbes.com/sites/davidblack/2019/02/04/blockchain-smart-contracts-arent-smart-and-arent-contracts/
Theblockboxio. 2019. The Block Box — Building Great Ideas On Blockchain. [Online]. [31 July 2019]. Available from: https://www.theblockbox.io/what-is-smart-contract/
Michael kern. 2019. Medium. [Online]. [31 July 2019]. Available from: https://medium.com/@m.kern/what-are-smart-contracts-and-should-you-care-7dd1f2e8f0b9
Bitdegreeorg. 2018. BitDegree Tutorials. [Online]. [31 July 2019]. Available from: https://www.bitdegree.org/tutorials/what-is-a-smart-contract/
Published at Sat, 17 Aug 2019 05:22:08 +0000
Bitcoin Pic Of The Moment
Republic Of Conscience, discussing BITCOIN
www.RepublicOfConscience.com
Watch the VIDEO: v.youku.com/v_show/id_XNjk0NTM3ODky.html
By Philip McMaster PeacePlusOne_!/ on 2014-04-04 13:35:30
