Por Qué Blockchain es Difícil
La emoción alrededor de blockchain es masiva. Escuchar al tren de la emoción por blockchain te dirá que blockchain podrá:
- Resolver la inequidad de ingresos
- Hacer que toda la data sea segura para siempre
- Hacer todo mucho más eficiente, sin depender de la confianza
- Salvar bebés moribundos
¿Pero qué demonios es blockchain, en todo caso? ¿Y puede realmente hacer todas estas cosas? ¿Puede blockchain traer algo increíble a industrias tan diversas como lo son la de la salud, finanzas, gerencia de cadenas de abastecimiento y derechos musicales?
¿Y ser pro Bitcoin no quiere decir ser también pro-blockchain? ¿Cómo puedes estar con Bitcoin pero decir algo malo acerca de la tecnología detrás de ello?
En este artículo, busco responder a varias de estas preguntas a través del análisis de lo que es, y no es blockchain.
¿Qué es una Blockchain?
Para examinar algunas de estas afirmaciones, debemos definir qué es blockchain y es ahí donde yace gran parte de la confusión. Muchas compañías usan la palabra “blockchain” para definir algún tipo de dispositivo mágico, por el cual todos sus datos jamás estarán equivocados. Tal dispositivo, por supuesto, no existe, al menos en lo que involucra al mundo real.
Entonces ¿Qué es una blockchain? Técnicamente hablando, una blockchain es una lista enlazada de bloques, los bloques siendo un grupo de transacciones ordenadas. Si no entendiste esta última frase, puedes pensar en una blockchain como un subset de una base de datos, con algunas propiedades adicionales.
Lo principal para distinguir una blockchain de una base de datos normal es que hay reglas específicas acerca de cómo poner la data dentro de la base de datos. Es decir, no puede entrar en conflicto con otra data que ya esté en la base de datos (consistente), su sólo-anexar (inmutable) y la data en sí misma está encadenada a un dueño (apropiable), es replicable y disponible. Finalmente, todos están de acuerdo en cuál es el estado de las cosas dentro de la base de datos (canónico), sin un sujeto central (descentralizado).
Es este último punto el santo grial de blockchain. La descentralización llama mucho la atención ya que implica que no existe un único punto de falla. Es decir, ninguna única autoridad será capaz de llevarse sus bienes o cambiar la “historia” para satisfacer sus necesidades. Esta traza de auditoría inmutable en la que no es necesario confiar en nadie, es el beneficio que todos aquellos jugando con esta tecnología buscan. Este beneficio, sin embargo, viene con un gran costo.
El Costo de las Blockchains
La traza de auditoría inmutable no controlada por ningún sujeto individual, ciertamente es útil, pero existen diversos costos asociados a la creación de este sistema. Examinemos algunos de ellos.
El desarrollo es más estricto y lento
Crear un sistema demostrablemente consistente no es tarea fácil. Una pequeña falla podría corromper la base de datos entera o causar que algunas bases de datos sean diferentes a las otras. Por supuesto, una base de datos corrupta o dividida ya no cuenta con garantías de consistencia alguna. Más allá de eso, este tipo de sistemas deben de ser diseñados desde el outset para ser consistentes. No existe la posibilidad de “moverse rápido y romper cosas” en una blockchain. Si rompes cosas, pierdes consistencia y la blockchain se vuelve corrupta y sin valor alguno.
Podrás estar pensando ¿Por qué no se puede simplemente arreglar la base de datos o empezar de nuevo y seguir adelante? Esto sería lo suficientemente fácil de hacer en un sistema centralizado, pero se vuelve sumamente complicado en uno descentralizado.
Se necesita consenso, o el acuerdo entre todos los jugadores en el sistema, para poder cambiar la base de datos. La blockchain debe de ser un recurso público que no esté bajo el control de ninguna única autoridad (descentralizado ¿recuerdas?), o sino todo este esfuerzo sería una manera muy costosa de crear una base de datos lenta y centralizada.
Las estructuras de incentivos son difíciles de diseñar
Agregar las estructuras de incentivos correctas y asegurarse que todos los actores en el sistema no pueden abusar o corromper la base de datos es, a su vez, una gran consideración. Una blockchain puede ser consistente, pero ello no es muy útil si cuenta con una gran cantidad de datos frívolos e inútiles, puesto que los costos de poner datos dentro de ella son muy bajos. Tampoco es útil una blockchain consistente si no tiene casi datos porque el costo de insertarlos en ella es muy alto.
¿Cuál es la finalidad de los datos? ¿Cómo puedes asegurarte que las recompensas estén alineadas con las metas de la red? ¿Por qué los nodos mantienen o actualizan los datos y qué les hace escoger una pieza de data por sobre otra cuando estas están en conflicto? Todas estas son preguntas en torno a los incentivos que necesitan buenas respuestas, además de ser alineadas, no sólo al principio, sino a todo punto en el futuro a medida que la tecnología y compañías cambien, de lo contrario, la blockchain no sería útil.
De nuevo, podrías estarte preguntando por qué no se puede “arreglar” algún incentivo roto. Una vez más, esto es fácil en un sistema centralizado, pero en uno descentralizado, no puedes simplemente cambiar algo sin consenso. No existe el “arreglar” nada a no ser que todos estén de acuerdo.
El mantenimiento es muy costoso
Una base de datos tradicional centralizada sólo necesita ser escrita una vez. Una blockchain necesita ser escrita miles de veces. Una base de datos centralizada sólo necesita chequear la data una vez. Una blockchain necesita chequear los datos miles de veces. Una base de datos centralizada necesita transmitir la data para almacenamiento sólo una vez. Una blockchain necesita transmitir la data miles de veces.
Los costos de mantener una blockchain son órdenes de mayor magnitud y estos necesitan ser justificados por su utilidad. La mayoría de las aplicaciones buscando algunas de las propiedades anteriormente listadas, como lo son la consistencia y la confiabilidad, pueden obtener tales cosas de manera mucho más económica usando chequeos de integridad, recibos y respaldos.
Los usuarios son soberanos
Esto puede ser realmente bueno dado que las compañías no gustan de la responsabilidad que trae consigo tener datos de usuarios en primer lugar. Esto puede ser malo, sin embargo, si el usuario se está “comportando mal”. No existe manera de expulsar al usuario que ha estado enviando spam a su blockchain con datos frívolos, o ha descubierto una manera de sacar provecho haciendo algo que cause mucha inconveniencia a los demás usuarios. Esto se relaciona a la anterior observación de que las estructuras de incentivos deben ser diseñadas realmente bien, de manera que un usuario que descubra una manera de explotarla esté menos dispuesto a renunciar a ello, especialmente si existe una ganancia para este.
Podrás pensar que puedes simplemente rehusar el servicio a los usuarios maliciosos, lo cual sería muy fácil de hacer en un servicio centralizado. Sin embargo, a diferencia de un servicio centralizado, rehusar el servicio es difícil porque no hay un único sujeto con la autoridad para expulsar a alguien. La blockchain debe de ser imparcial, haciendo cumplir las reglas definidas por el software. Si las reglas no son suficientes para detener el mal comportamiento, pues mala suerte. No existe un “espíritu” de la ley aquí. Simplemente debes lidiar con actores maliciosos o mal comportados, posiblemente durante un largo tiempo.
Todas las actualizaciones son voluntarias
Una actualización forzosa no es opción. Los otros jugadores en la red no tienen obligación de cambiarse a tu software. Si lo hicieran, tal sistema sería tan sencillo, rápido y barato de construir como un sistema centralizado. El punto de blockchain es que no esté bajo el control de ninguna entidad única y esto sería violado con una actualización forzada.
En vez de ello, todas las actualizaciones deben ser de compatibilidad retrógrada. Esto, obviamente, es bastante difícil, en especial si se quiere añadir nuevas funcionalidades y aún más difícil cuando pensamos desde una perspectiva de prueba. Cada versión del software añade mucho a la matriz de pruebas y alarga el tiempo necesario para el lanzamiento.
De nuevo, si este fuera un sistema centralizado, esto sería mucho más fácil de corregir al dejar de prestar servicio a sistemas antiguos. Sin embargo, no se puede hacer esto en un sistema descentralizado puesto que no puedes forzar a nadie a hacer nada.
La escalada es muy difícil
Finalmente, la escalada es de al menos varios órdenes de magnitud mayor que en un sistema centralizado tradicional. La razón es obvia. La misma data debe de vivir en cientos de miles de lugares, en vez de en uno solo. El recargo en la transmisión, verificación y almacenamiento es enorme, dado que cada copia de la base de datos debe de pagarles, en vez de que estos costos sean pagados sólo una vez en una base de datos centralizada tradicional.
Uno puede, por supuesto, reducir la carga al reducir el número de nodos. Pero entonces a ese punto ¿Por qué se necesita un sistema descentralizado en lo absoluto? ¿Por qué no simplemente hacer una base de datos centralizada si los costos de escalada son la preocupación principal?
La centralización es mucho más fácil
Si notas un tema en común, es que los sistemas descentralizados son muy difíciles para trabajar, caros de mantener, difíciles de actualizar y una molestia para escalar. Una base de datos centralizada es mucho más rápida, menos cara, más fácil de mantener y de actualizar que una blockchain. Entonces ¿por qué las personas siguen usando la palabra blockchain como si esta fuese la respuesta a todos sus problemas?
Primero, muchas de las industrias que están cayendo en blockchain necesitan actualizaciones en su infraestructura TI hace mucho. La industria del cuidado de la salud es notoria por su mal software. Liquidaciones financieras aún son ejecutadas en software de los años 70. El software de gerencia de cadenas de suministros es tan difícil de usar, como de instalar. La mayoría de las compañías en estas industrias se resisten a las actualizaciones por los riesgos que estas involucran. Existen montones de actualizaciones de infraestructura que cuestan cientos de millones y terminan siendo revertidas de todas formas. Blockchain es una manera de vender estas actualizaciones de infraestructura TI y hacerlas un poco más atractivas.
En segundo lugar, blockchain es una manera de hacer ver como que estás en la vanguardia de la tecnología. Te guste o no, la palabra “blockchain” ha tomado vida por sí misma. Muy poca gente en realidad entiende lo que es, pero quieren aparentar estar a la moda así que usan esas palabras para sonar más inteligentes. Así como “nube” significa la computadora de alguien más e “IA” significa un algoritmo alterado, “blockchain” en este contexto quiere decir una base de datos lenta y costosa.
Tercero, a la gente no le gusta en realidad el control gubernamental de ciertas industrias y buscan un mecanismo de adjudicación diferente al marco legal, que a menudo es lento y costoso. Para ellos “blockchain” es realmente sólo una manera de deshacerse del pesado aparato de la regulación gubernamental. Esto es exagerar lo que blockchain es capaz de hacer. Blockchain no elimina mágicamente ningún tipo de conflicto humano.
El resultado es mucha gente emocionada por las promesas, sin realmente entender las habilidades y los costos. Lo peor, es que los reales detalles y costos técnicos son a menudo obviados por muchos VCs y ejecutivos, de forma que se confunda lo que una blockchain puede y no puede hacer. Todos bajo su cargo resultan con miedo de decir que el emperador no tiene ropajes y que tenemos la situación con la que nos encontramos ahora.
Entonces ¿Para qué es bueno blockchain?
Ya hemos establecido que blockchain es un familiar muy costoso de las bases de datos centralizadas. Entonces, la única razón por la que deberías estar usando una blockchain es para descentralizar. Es decir, remover el punto único de falla o control.
Esto naturalmente significa que el software o la base de datos no debe cambiar seguido las cosas, si es que las cambia en lo absoluto. La actualización debería tener pocas ventajas y el fallar o cambiar las reglas múltiples desventajas.
La mayoría de las industrias no son así. La mayoría de las industrias requieren nuevas funcionalidades o actualizaciones y la libertad de cambiar y expandirse cuanto sea necesario. Dado que las blockchains son difíciles de actualizar, cambiar y escalar, la mayoría de las industrias no tienen mucho uso para ellas.
La única excepción que hemos encontrado a esta regla, es el dinero. A diferencia de la mayoría de los casos de uso industrial, el dinero es mejor si no cambia. La inmutabilidad y la dificultad de cambiar las reglas es algo positivo para el dinero, no una desventaja. Por esto es que blockchain es la herramienta correcta para el trabajo cuando se trata de Bitcoin.
Lo que nos queda claro es que muchas de las compañías buscando usar la blockchain, en realidad no quieren una blockchain, sino actualizaciones de TI para su industria particular. Esto está todo bien, pero usar la palabra “blockchain” para llegar ahí es deshonesto y significa exagerar sus capacidades.
Conclusión
Blockchain es un término popular por estos días y, desafortunadamente, este meme “blockchain no Bitcoin” no morirá. Si usted es un servicio centralizado, una blockchain no le da nada que no pueda obtener mil veces más barato con una base de datos centralizada. Si usted es un servicio descentralizado, entonces probablemente se está engañando a sí mismo, obviando los puntos únicos de falla que existen en su sistema. “Usted” no existiría en lo absoluto en un verdadero servicio descentralizado.
Por allá por el principio de los años 2000, hubo un empuje por parte de muchos ejecutivos en la industria tecnológica para usar Java y XML. A pesar de estas dos ser herramientas en vez de productos, muchos ejecutivos insistieron en su uso, sin importar cuán pobre fuera la real compatibilidad de estos para lo que sus ingenieros intentaban lograr. Blockchain es un caso parecido. Enfóquese en el problema que está resolviendo y las herramientas se harán aparentes pronto. Enfóquese en las herramientas que quiere utilizar y terminará haciendo máquinas Rube Goldberg que no hacen nada particularmente bien.
De cierta forma, las actuales concepciones de blockchain intentan hacer lo imposible. Quieren la seguridad de un sistema descentralizado con el control de uno centralizado. El deseo está en tener lo mejor de ambos mundos, pero lo que terminan obteniendo es lo peor de ambos mundos. Obtiene los costos y la dificultad de un sistema descentralizado sin los modos de fallo de uno centralizado.
Blockchain se usa mucho como un término de moda para vender muchas cosas inservibles. Mientras más rápido superemos la moda, mejor estaremos todos a largo plazo.
Fuente: https://medium.com/@jimmysong/why-blockchain-is-hard-60416ea4c5c