La separación entre Moneda y Estado no es un experimento: es, en rigor, el final de un experimento –uno catastrófico y salvajemente inmoral–; no es un lujo: es una necesidad apremiante; no es una ilusión a la que nos entregamos ingenuamente: es una posibilidad cada vez más tangible.
Frente a la rarísima oportunidad que tenemos de recuperar la institución Moneda para que vuelva a ser fuente de libertad, justicia, prosperidad y estabilidad, sentarnos a esperar que los custodios de la ortodoxia cryptoleninista nos permitan acceder a la cadena de bloques –aparentemente el día en que todos y cada uno de los habitantes del cuarto mundo y sus respectivas mascotas entiendan que deben mantener sus propios nodos de una red que jamás podrán usar– nos convierte en instrumento de la aristocracia financiera, y nos hace en parte responsables de las devastadoras consecuencias del monopolio estatal de la moneda.
Pero esa actitud pasiva y sumisa no es exclusivamente señal de cobardía o corrupción; a menudo esconde una profunda ignorancia, cultivada con esmero en la mente de los devotos por los sacerdotes de la fe cryptoleninista.
Entre las innumerables falacias que dan sustento a la estructura mental del idiota útil 2.0, hay una que se destaca por ser el origen de la mayoría de sus extravíos, a saber: la falacia de los “bienes públicos”…
Por Mengerian
Durante muchos años, ha habido un argumento recurrente en contra de ampliar la capacidad on-chain (en la propia cadena de bloques) basado en la idea de que la cadena de bloques es una «base de datos que debe guardarlo todo, para siempre». Este argumento es aceptado a menudo de manera no crítica, incluso entre algunos partidarios de los bloques grandes (big-blockers) que aceptan la premisa, pero argumentan que los bloques grandes son viables incluso con todos los nodos «almacenándolo todo para siempre».
La reciente aparición de aplicaciones tales como Memo (memo.cash) [1] ha preocupado a algunos partidarios de Bitcoin Cash. Estas personas quieren que Bitcoin Cash sea la mejor forma de dinero posible, y la idea de otros usos alternativos consumiendo el limitado espacio de los bloques se ve como algo que puede tener un impacto negativo sobre el uso primario como dinero.
En este artículo, defenderé que el argumento de «guardarlo todo para siempre» está viciado, y es un ejemplo de la falacia de los bienes públicos. Esta falacia se usa para justificar la planificación central, la cual debería rechazarse en favor de una estrategia de mercado. Con tal estrategia, no necesitamos preocuparnos de que el espacio del bloque resulte insuficiente, ni de que los usos no monetarios le resten valor a Bitcoin Cash como dinero.
El espacio en el bloque como bien público
Aunque el concepto de «bien público» sea un concepto económico erróneo, es ampliamente aceptado por muchos economistas y publicaciones convencionales [2]. En este artículo no ahondaré en la teoría general de los bienes públicos; hay muchos buenos recursos en otros lugares que explican por qué el concepto es inválido [3]. En lugar de ello, este artículo se centrará sólo en el caso específico de las cadenas de bloques, y las razones técnicas y económicas por las que los argumentos de los bienes públicos no son aplicables.
La idea de que las cadenas de bloques son un tipo de bien público descansa sobre dos premisas:
• Que la cadena de bloques funciona como una base de datos en la que sólo se añade, y donde todos los nodos de la red deben almacenar todos los datos para siempre.
• Que los costes de mantener, almacenar y ofrecer datos de la cadena de bloques no recaen sobre aquellos que se benefician de tales servicios. Quienes hacen la transacción pagan una tarifa inicial a los mineros, pero después todos los nodos de la red deben cargar con los costes perpetuamente.
Este marco conceptual conduce a intentos de planificar centralmente la red mediante la implementación de medidas técnicas para limitar usos «excesivos» o no deseados de la cadena de bloques. Algunos ejemplos de tales medidas serían limitar el tamaño de OP_RETURN, el «descuento de testigo» de Segwit en la contabilidad del «peso» del bloque, y el límite al tamaño del bloque en sí mismo.
Un buen ejemplo del argumento de los bienes públicos fue expresado recientemente por Vlad Zamfir, de Ethereum, cuando dijo «Creo que es una locura que la red soporte el coste para siempre, por unos ingresos ganados una vez por una única entidad». Luego procede a defender la creación de algún tipo de «renta» de red para mitigar el problema [4].
En las dos secciones siguientes, discutiré cada una de las dos premisas del argumento de los bienes públicos en más detalle.
Estructura de datos de la cadena de bloques
Es natural conceptualizar una cadena de bloques como una base de datos en constante crecimiento. Después de todo, dado que los bloques siempre se añaden a una cadena en constante crecimiento, es difícil ver cómo podría ser de otro modo. Las implementaciones actuales de nodo completo normalmente almacenan todos los bloques, y cualquiera que haya tenido alguna vez su propio nodo sabe que el tamaño necesario para almacenar toda la cadena de bloques sigue creciendo año tras año.
También es fácil encontrar ejemplos de figuras bien conocidas en la comunidad de las criptomonedas que manifiestan varias formas de la idea de «base de datos en constante crecimiento»:
Explicar lo que es una cadena de bloques a un público profano: «Una base de datos que lo almacena todo para siempre — en otras palabras: la base de datos más ineficiente del planeta.»
– Tuur Demeester [5]
Por qué no quieres una cadena de bloques:
1. Almacenamiento: todo el mundo tiene que almacenarlo todo.
2. Ancho de banda: todo tiene que difundirse a todo el mundo.
3. CPU: todo el mundo tiene que validarlo todo.
4. Desarrollo: todo es 10 veces más difícil.
5. Control: todo el mundo tiene control colectivamente, no tú.
– Jimmy Song [6]
Para comprender el problema con estas afirmaciones, necesitamos hacer un poco de zoom y mirar en más detalle la estructura de datos de la cadena de bloques.
La cadena de bloques contiene datos relacionados criptográficamente de varias maneras: las cabeceras de bloque están conectadas en cadena lineal, las transacciones están enlazadas a las cabeceras de bloque en árboles Merkle, y las transacciones están enlazadas entre sí en un Gráfico Acíclico Dirigido (DAG) que enlaza las entradas (inputs) de las transacciones a las salidas (outputs) anteriores. Pensemos por qué la cadena de bloques está estructurada de este modo. Si fuese una base de datos gigante que requiriese que todo el mundo almacenase todos los datos, estas estructuras serían una exageración. Por ejemplo, ¿por qué construir un árbol Merkle en lugar de simplemente aplicar una función de hash a todas las transacciones juntas directamente? La razón es que un árbol Merkle nos permite demostrar cosas sobre un subconjunto de todas las transacciones: podemos demostrar que una transacción está incluida en un bloque sin conocer todas las demás transacciones de ese bloque. De hecho, esto es lo que permite que las carteras SPV (verificación de pagos simplificada) puedan funcionar sin necesidad de descargar toda la cadena de bloques.
De manera similar, la estructura de la cadena de bloques puede utilizarse para demostrar otras cosas sin necesidad de tener en posesión la cadena de bloques entera: que existe una entrada (input) de transacción, o que se ha gastado una salida (output) determinada. Demostrar otros hechos sobre datos de la cadena de bloques puede que requiera más información. Por ejemplo, demostrar que una transacción no se encuentra en un bloque actualmente requiere comprobar todas las transacciones del bloque. Sin embargo, estas pruebas podrían hacerse más eficientes en el futuro con mejoras en el protocolo, tales como el «canonical transaction ordering» [7].
Siempre y cuando un nodo guarde copia de una transacción y una prueba Merkle, podrá demostrar a todos los demás de la red que la transacción estaba en un bloque. Esto proporciona un mecanismo gracias al cual no todo el mundo necesita almacenar todos los datos para siempre; solamente quienes valoren los datos necesitan guardarlos, y podrán demostrar posteriormente su validez. De manera similar, otros tipos de información también son demostrables con subconjuntos de los datos de la cadena de bloques. Quienes valoren la demostración de ciertos hechos sobre datos de la cadena de bloques podrán, y tendrán el incentivo de, guardar los datos necesarios sin almacenar la cadena entera.
Alineación de costes y beneficios
Hemos determinado que es posible que la gente use la cadena de bloques sin almacenar toda la historia de datos (las carteras SPV lo hacen todos los días), ¿pero qué hay del problema de incentivos en relación al «free riding» sobre quienes ofrecen los datos necesarios? Actualmente vemos esto con las carteras SPV: dependen de que nodos completos guarden los datos y se los proporcionen cuando los necesitan. Esto impone sobre los nodos completos una carga por la que no obtienen remuneración. Si el número de carteras SPV crece más rápido que el número de nodos completos, este desequilibrio no puede más que aumentar.
Una salida posible a este problema es imponer restricciones al sistema de modo que el coste de mantener un nodo completo esté limitado. Estos límites pueden aplicarse al espacio del bloque, a las optimizaciones de señal (Sigops), a la creación de UTXO (Unspent Transaction Output: Salidas de transacción no gastadas), o a cualquier otro parámetro que dé lugar a costes en el funcionamiento de un nodo. Este enfoque puede verse casos tales como la propuesta de «renta» de Vlad Zamfir, o el límite al tamaño del bloque de Bitcoin Core.
Sin embargo, pronto se hace obvio que, si la demanda de uso del sistema crece y se ve constreñida por los límites impuestos, estos actúan como cuotas económicas. Como todas las cuotas de producción, generan pérdida de valor y resultados perversos.
La alternativa a las cuotas de producción son los mercados. Simplemente necesitamos pensar en modos de activar y facilitar los mercados. Este artículo no entrará en mucho detalle sobre los mecanismos de mercado, pero el principio general es diseñar mecanismos que hagan posible pagar por los servicios cuando se proporcionan. Kristov Atlas escribió recientemente un artículo que ofrece una descripción más exhaustiva de este enfoque, y anteriormente Justus Ranvier ha escrito sobre este tema [8, 9, 10].
Un aspecto importante de estas estrategias es que no buscan predecir o dictar qué recursos deberían restringirse ni cuáles deberían ser los costes relativos. Simplemente proporcionan mecanismos que permiten a los mercados desarrollarse si, y cuando, se necesitan. Actualmente los nodos proporcionan gratis los datos a las carteras SPV. Si continúan haciéndolo, no habrá necesidad de obligarlas a pagar por este servicio. Esto podría ser sostenible si servir a las carteras SPV continúa siendo una actividad de bajo coste, o si los negocios eligen proporcionar este servicio como artículo de gancho. Pero también es posible que el mercado evolucione de tal modo que las carteras paguen pequeñas tarifas por servicios de datos blockchain, por un servicio más fiable, o por suscribirse a servicios de alerta de fraude. Los diseñadores del sistema no deberían tratar de predecir la forma exacta de este mercado, simplemente deberían facilitar mecanismos que posibiliten los mercados si resultan ser necesarios.
Visión futura
Tomemos Memo como ejemplo. ¿Qué sucedería si creciese hasta el punto de tener un tamaño similar a Twitter? Hace poco se publicó un análisis de este escenario en Yours.org [11]. Este artículo fue un experimento mental muy interesante sobre qué podría suceder si una aplicación tal como Memo tuviese un éxito tremendo. La conclusión fue que, si alcanzase las proporciones de Twitter, Memo podría generar suficientes datos para llenar bloques de 1GB, o incluso de Terabytes. No es poco razonable preocuparse ante este descubrimiento. Bitcoin Cash sigue manteniendo la promesa de ser una forma ideal de dinero global, y sería una lástima que esta aspiración fuese desplazada por otros usos.
Pero no deberíamos simplemente extrapolar de la implementación actual de memo.cash a un Memo del tamaño de Twitter. Si llega a alzanzar las proporciones de Twitter, también tendrán lugar otros cambios y mejoras. Imaginemos por un minuto qué aspecto podría tener.
Imagina varias docenas de aplicaciones Memo rivales que la gente pueda usar en sus smartphones u ordenadores. Estas aplicaciones se conectarían a servidores especializados de Memo, que les proporcionarían los datos necesarios. Habría cientos o miles de estos servidores, e implementaciones de software de servidor compitiendo. Algunos de estos servidores podrían dar apoyo a las aplicaciones de Memo a cambio de pequeños micropagos. Los aficionados podrían correr servidores Memo gratis, y otros podrían financiarse con publicidad (insertando «anuncios» memo similares a Twitter). Estos servidores Memo podrían conectarse entre sí a través de una red específica Memo dedicada a transacciones memo-cash. Las carteras sin Memo podrían básicamente ignorar las transacciones memo-cash si así lo deseasen.
Para los mineros, las transacciones Memo serían tratadas igual que cualquier otra transacción sujeta a tarifas. Si la red fuese capaz de hacer sharding (Nota del traductor: El Sharding es una técnica mediante la que se hace una partición horizontal de una base de datos), los fragmentos específicos de Memo podrían tal vez validarse por separado, con pruebas de validez de las propiedades monetarias del fragmento. Los mineros podrían usar técnicas para reducir el peso de las transacciones Memo antiguas de modo que no necesitasen almacenar todo el registro Memo. Para los nuevos Memos que necesitasen validación de datos antiguos, los mineros podrían recibir los datos necesarios de servidores Memo. Quizás estas transacciones necesitarían una tarifa más elevada para compensar el esfuerzo extra necesario para validarlas.
Otras aplicaciones también podrían hacer uso de la cadena de bloques sin desplazar su uso principal como dinero. Quizás cientos o miles de diferentes aplicaciones y servicios podrían coexistir usando la cadena de bloques de Bitcoin Cash como una base segura y resistente a la censura.
El escenario que aquí planteo es tan solo una posibilidad. La forma que tome la red vendrá determinada por desarrollos económicos y técnicos futuros. Al evitar una planificación prescriptiva, y adoptar una estrategia de mercado, es probable que Bitcoin Cash desarrolle capacidades y usos que no podemos predecir, ni incluso imaginar, actualmente.
Conclusión
Aún queda por hacer mucho trabajo, pero siguiendo principios de mercado y abrazando el crecimiento, no hay un límite obvio a la capacidad. Usando principios de mercado, los costes de los distintos usos pueden recaer sobre los propios interesados. Varios usos de la cadena de bloques deberían ser capaces de coexistir en harmonía, sin desplazarse mutuamente. Bitcoin Cash puede usarse para alimentar cientos o miles de servicios útiles, y al mismo tiempo convertirse en el mejor dinero que el mundo haya visto nunca.
«Nunca toca realmente un techo de escalabilidad.»
– Satoshi Nakamoto [12]
Referencias:
[1] Memo: https://memo.cash/introducing-memo
[2] Wikipedia Public Goods article: https://en.wikipedia.org/wiki/Public_good
[3] Hans-Hermann Hoppe on the Public Goods Fallacy: https://mises.org/library/fallacies-public-goods-theory-and-production-security-1
[4] Vlad Zamfir: https://twitter.com/Cyrus/status/985908081023270913
[5] Tuur Demeester: https://twitter.com/TuurDemeester/status/954534619138920448
[6] Jimmy Song: https://twitter.com/jimmysong/status/964172100054417409
[7] Presentation on Transaction Order in Blocks: https://youtu.be/j9vlTmhyeUo
[8] Kristov Atlas. Bitcoin: Calculation Problems: https://www.kristovatlas.com/bitcoin-calculation-problems/
[9] Justus Ranvier. Economic Fallacies and the Block Size Limit, part 1: Scarcity https://archive.is/Nq4V5
[10] Justus Ranvier. Economic Fallacies and the Block Size Limit, part 2: Price Discovery https://archive.is/BE4J6
[11] Yours article on Memo as on-chain Twitter: https://www.yours.org/content/memocash-math–how-big-do-blocks-need-to-be-to-handle-twitter-on-chai-141734b43420
[12] Satoshi Quote: https://bitcointalk.org/index.php?topic=149668.msg1596879#msg1596879