Escalar las lecturas y escrituras
Nota del editor: Esta publicación fue escrita en colaboración por Tushar Jain y Kyle Samani.
Una cadena de bloques es una base de datos con propiedades únicas de minimización de la confianza. Como todas las bases de datos, tiene dos tipos de operaciones: lecturas y escrituras.
La mayor parte del discurso en torno al escalamiento de las cadenas de bloques hasta la fecha tiene que ver con las escrituras. Estas suelen medirse como transacciones por segundo (TPS, por sus siglas en inglés). Por ejemplo, Ethereum admite 15 a 30 TPS, Binance Smart Chain admite hasta 160 TPS y Solana admite hasta 50.000 TPS. Los inversores han invertido miles de millones de dólares para escalar las escrituras de cadenas de bloques.
La demanda de espacio de bloques ha aumentado exponencialmente y esperamos que la demanda de lectura de datos en las cadenas de bloques aumente aún más rápidamente. Básicamente, toda aplicación importante en Internet es una aplicación de bases de datos de alguna forma. Y en la mayoría de las aplicaciones de bases de datos, la proporción entre lectura y escritura es de entre 100:1 y 10.000:1. ¿Por qué la proporción está tan sesgada? Si tienes 10.000 seguidores en Instagram y publicas una sola fotografía, y el 10 % de tus seguidores abre Instagram y ve la fotografía, entonces esa única escritura (subir la fotografía) da lugar a 1000 lecturas. Si tienes 10.000 personas que operan con un activo y haces un solo intercambio en un exchange descentralizado, entonces esas 10.000 personas deben leer ese intercambio y actualizar el precio de ese activo. Las escrituras están restringidas por la escalabilidad de las cadenas de bloques de nivel 1. A medida que se incorporan a Internet soluciones de nivel 2 como los rollups optimistas o de conocimiento cero (zk), y cuando cobren impulso las redes de alto desempeño como Solana, la cantidad de escrituras explotará, dando lugar a un incremento exponencial de la demanda de lecturas por los motivos explicados anteriormente.
Escalar las lecturas será el próximo gran desafío de escalamiento para la industria de las cadenas de bloques.
La mayoría de las aplicaciones de bases de datos tienen una estructura de datos específica, en la cual la estructura de la base de datos está adaptada a la forma en que se espera que el sistema consulte los datos del sistema. Por ejemplo, consideremos una aplicación de chat como Telegram. Se podría imaginar que todo el sistema de Telegram es una tabla gigante, con cuatro encabezados de columnas: ID de usuario, ID de hilo, marca de fecha/hora y contenido de mensaje. Aunque esto podría funcionar teóricamente, dada la cantidad de usuarios que tiene Telegram (más de 500 millones) y la cantidad de mensajes que se envían por día, es fácil ver cómo esto degradaría el desempeño. Cada vez que un usuario hace clic en un hilo, todas las consultas se dirigen a la misma tabla. Este es realmente un gran problema. Claramente, sería mejor si se pudieran localizar consultas para que no todas las consultas vayan a la misma tabla.
Se puede imaginar una estructura alternativa. Supongamos que cada hilo se guarda en una tabla separada con tres encabezados de columnas: ID de usuario, marca de fecha/hora y contenido de mensaje. Cuando un usuario hace clic en un hilo en la interfaz de usuario de Telegram, el sistema sabe qué tabla guarda todos los mensajes en ese hilo y consulta esa tabla preguntando por mensajes nuevos. Esta estructura localiza las consultas, lo que da lugar a una mejora drástica en el desempeño.
El problema con el escalamiento de lecturas en una cadena de bloques es que una cadena de bloques (por definición) no prescribe el formato de la transacción. Una cadena de bloques es solo una serie de transacciones. Cualquier persona puede enviar cualquier transacción en cualquier momento, y cualquier transacción puede tener cualquier formato y ser arbitrariamente compleja.
Todas las transacciones en una cadena de bloques van a una sola tabla. A la luz del ejemplo de Telegram anterior, se puede ver cómo esto genera un grave problema de desempeño. En el caso de una cadena de bloques, este problema es aún más pronunciado porque no hay un solo tipo de aplicación con una estructura de datos específica. Hay miles de aplicaciones, cada una de las cuales tiene estructuras de datos únicas y diferentes casos de uso.
El cliente estándar de Ethereum (Go Ethereum, GETH) tiene algunas capacidades básicas de consulta. Por ejemplo, se le puede preguntar a GETH: “¿Cuánto ETH tiene esta dirección?” Y la estructura del árbol de Merkle de Ethereum hace que sea fácil para GETH responder a esa pregunta.
Pero ahora consideremos una pregunta más compleja como: “¿Cuánto TVL hay en estas 50 agrupaciones de Uniswap y cuál es el total de TVL entre todas?” Responder esta pregunta requiere entender qué es una agrupación de Uniswap y el precio de los activos en esas agrupaciones.
De manera predeterminada, GETH no puede responder a esa pregunta, porque GETH en sí ni siquiera sabe qué es una agrupación de Uniswap.
Así que, en síntesis, hay tres problemas diferentes pero relacionados aquí:
- Escalar las lecturas
- Entender las estructuras de datos para saber qué se debe consultar
- Ofrecer resultados de consultas resistentes a la censura
Consultar datos de cadenas de bloques es difícil para los desarrolladores y para resolver estos problemas debe haber una solución sólida y escalable. The Graph, un protocolo de indexación descentralizado, es el proyecto líder que trabaja en estos problemas y, si tiene éxito, está destinado a convertirse en el "Google de la Web3".
Multicoin Capital invirtió en The Graph en 2018 con la tesis de que el nivel de consulta crecería hasta convertirse en uno de los niveles más importantes de la pila de Web3. Este ensayo vuelve a analizar The Graph porque el proyecto está en un punto de inflexión crítico, tanto en su historia como en la de la industria en general. El servicio alojado de The Graph, que ha crecido hasta convertirse en uno de los criptoproductos más populares, ha cumplido con su propósito. Ahora, The Graph está migrando a la red descentralizada y, a medida que avanza en esta transición, cada uno de los tres problemas anteriores está empezando a resolverse, creando una oportunidad para las aplicaciones completamente descentralizadas.
Habilitar la descentralización es una cosa, pero escalarla es otra. The Graph ha crecido más de 20 veces en el último año y ha procesado más de 25 mil millones de consultas solo en mayo de 2021. The Graph Foundation otorgó recientemente dos grandes subsidios para ayudar a The Graph a escalar mientras aborda los problemas de lectura. El primer subsidió se lo otorgó a StreamingFast, un equipo de ingenieros que aportarán su conocimiento especializado para ayudar a mejorar radicalmente el desempeño de la indexación. El segundo subsidio se lo otorgó a Figment, un equipo que ayudará a simplificar el hecho de que cualquier persona pueda crear un nodo en Graph y aumentar la oferta en la red.
A medida que la primera generación de subgrafos migran del servicio alojado al protocolo descentralizado, la visión completa de The Graph está empezando a divisarse y los efectos de la red están impulsando un rápido crecimiento.
Escalar infinitamente las lecturas
La base de todas las redes de criptomonedas es la codificación de incentivos (y desincentivos) en el software para facilitar la colaboración a gran escala entre las partes sin confianza sin una entidad centralizada y coordinadora. Esto es lo que hace que estos sistemas funcionen con una minimización de la confianza.
En abstracto, este encuadre presenta una forma novedosa de escalar infinitamente las lecturas: el diseño de un juego criptoeconómico para incentivar a los actores racionales focalizados en lo económico a realizar lecturas para personas que están consultando esos datos, permitiendo así que el lado de la oferta de la red se autoorganice para satisfacer la demanda.
Tradicionalmente, las compañías desarrollaban servicios centralizados y los escalaban a la antigua: contratando a muchos programadores, equipos de desarrollo de software y operadores de TI y administrando un montón de servidores. Gastaban millones de horas hombre diseñando y rediseñando el sistema para optimizar el desempeño y el costo.
The Graph es un protocolo que: 1. incentiva a actores independientes y racionales a almacenar e indexar subconjuntos de un conjunto enorme de datos (todos los datos de las cadenas de bloques compatibles) 2. ayuda a los usuarios de este servicio a averiguar qué actores guardan cada subconjunto 3. asegura que estos proveedores de consultas suministren respuestas válidas (que no suministren resultados falsos) 4. facilita el pago
¿Qué sucede si los indexadores (personas que ejecutan las consultas) no pueden dar respuesta a toda la demanda?
En caso de que la demanda supere a la oferta, los participantes del mercado (tanto los indexadores existentes como quienes operen por afuera) observarán esto en tiempo real mediante la supervisión de los flujos de pago en la cadena de bloques. Aquellos que tienen un exceso de recursos (o que pueden adquirir recursos fácilmente) descargarán y ejecutarán el software de The Graph, se registrarán en el contrato inteligente de The Graph para poder ser detectables, indexarán conjuntos de datos en demanda y comenzarán a procesar consultas para los usuarios. Este ciclo completo puede desarrollarse en el transcurso de unos minutos u horas, y puede ser 100 % automatizado.
Dicho más simplemente: a medida que aumenta la demanda de los servicios de consultas, la oferta racional motivada económicamente se autoorganizará para satisfacer esa demanda. Kyle articuló esta tesis en términos generales hace un par de años.
Escalar la estructura de datos
Hay dos maneras técnicas de resolver el problema de la estructura de datos:
1) pedirle a GETH una lista de todas las agrupaciones de Uniswap y todas las transacciones relevantes (por ej., depósitos, retiros e intercambios) y luego calcular la TVL como un programa fuera de GETH. Cada vez que alguien hace la pregunta, repetir los cálculos para obtener una cifra actualizada.
2) Tú defines una estructura de datos separada, de manera que cada vez que se agregue una nueva transacción al final de la tabla gigante que es la lista de transacciones de Ethereum, el sistema detecte si esta transacción se relaciona con un aumento o una disminución del tamaño de una agrupación de Uniswap y, si es así, actualice los campos de datos adicionales apropiados en una base de datos que se encuentra fuera de GETH.
The Graph proporciona un marco para especificar las estructuras de datos para habilitar la solución n.° 2 (se denominan manifestaciones de subgrafo), un servicio de indexación de bases de datos basado en estos archivos de manifiesto y un sistema de consultas en tiempo real que opera a través de una red de nodos descentralizada.
Además, The Graph expone las consultas a los desarrolladores utilizando GraphQL, un lenguaje de consultas inventado y ofrecido con código abierto por Facebook en 2015. GraphQL ahora se considera ampliamente el estándar de oro para las interfaces de consulta para los desarrolladores porque es muy fácil de usar. Aquí hay un poco más información técnica sobre por qué GraphQL es asombroso.
Hay otras soluciones que intentan resolver el mismo problema. Segmentamos el mercado de la siguiente manera:
Pocket Network es intelectualmente interesante porque es la única en la esquina inferior derecha. Sin embargo, el éxito de The Graph ha demostrado que los desarrolladores prefieren desarrollar usando GraphQL y subgrafos, en lugar de llamadas de RPC a los nodos de GETH, porque es mucho más rápido y fácil.
Escalar la seguridad y la resistencia a la censura
El mayor competidor de The Graph es Infura. Pero Infura es un servicio simplista. Es literalmente un equilibrador de cargas frente a miles de nodos de GETH. Ni siquiera intenta proporcionar abstracciones de mayor nivel ("optimizadas por consultas" según lo dicho en la imagen arriba). Todos los demás competidores son una pequeña fracción del tamaño de Infura.
Infura sirve como un cuello de botella centralizado para las dApps que lo utilizan. Para ofrecer servicios resistentes a la censura, una dApp debe eliminar cualquier control centralizado que pese sobre ella. Si un atacante puede usar Infura para bloquear la capacidad de los usuarios de usar una dApp, eso es un importante vector de amenaza. The Graph es una red global de personas independientes que ejecutan infraestructura para ofrecer resultados de consultas y, por lo tanto, puede ofrecer resistencia a la censura.
En el caso de que un indexador de The Graph devuelva una respuesta falsa, puede recibir una sanción grave. Siempre que alguien (cualquier persona que solicitó la consulta o un buscador externo) detecte que un indexador produjo un resultado no válido, puede reportar la respuesta no válida a la cadena de bloques, y la cadena de bloques en sí será el árbitro final que defina la verdad. Suponiendo que el indexador mintió, la cadena de bloques cortará el vínculo con el indexador (publicado en GRT) y recompensará a la persona que reportó el comportamiento malicioso.
Esto significa que el mayor ecosistema de consultas con el mayor valor invertido por los indexadores será el sistema de consultas más seguro. Este retorno a escala produce un bucle de feedback de la siguiente manera:
Conclusión
¿Por qué descentralizar? Eso posibilita unas cuantas cosas:
- Aplicaciones verdaderamente sin servidor que son resistentes a la censura y que no se pueden cerrar
- Acercar los datos al "perímetro" para reducir la latencia y aumentar el desempeño.
- Una manera mucho más eficiente de escalar de millones a billones de consultas por día.
Cuando la gente habla de la descentralización, por lo general hablan de ello solo en el contexto de la resistencia a la censura (por ejemplo, Bitcoin). El mecanismo principal para lograr esto es la mera redundancia.
En el caso de The Graph, la descentralización conduce tanto a la resistencia a la censura como al escalamiento. Cualquier persona en cualquier parte del mundo puede ejecutar un servidor de The Graph y puede ver en tiempo real cuál es la demanda de consultas por subgrafo. Así que los fanáticos de la computación/el desarrollo empresarial de todo el mundo pueden ver si un subgrafo en particular no está recibiendo suficiente servicio, y pueden crear un nodo de The Graph y comenzar a atender consultas y generar ingresos. Esta es la perspectiva clave que hace que The Graph sea infinitamente escalable, y también conduce a la resistencia a la censura.
Ese es el poder de la descentralización.
Aviso: Multicoin ha establecido, mantiene y aplica políticas y procedimientos escritos, diseñados razonablemente para identificar y gestionar de forma efectiva los conflictos de interés relacionados con sus actividades de inversión. Multicoin Capital se rige por una "política de no negociación" para los activos enumerados en este informe durante los 3 días ("período de no negociación") siguientes a su publicación. GRT pertenece a Multicoin Capital.
Disclosure: Unless otherwise indicated, the views expressed in this post are solely those of the author(s) in their individual capacity and are not the views of Multicoin Capital Management, LLC or its affiliates (together with its affiliates, “Multicoin”). Certain information contained herein may have been obtained from third-party sources, including from portfolio companies of funds managed by Multicoin. Multicoin believes that the information provided is reliable and makes no representations about the enduring accuracy of the information or its appropriateness for a given situation. This post may contain links to third-party websites (“External Websites”). The existence of any such link does not constitute an endorsement of such websites, the content of the websites, or the operators of the websites.These links are provided solely as a convenience to you and not as an endorsement by us of the content on such External Websites. The content of such External Websites is developed and provided by others and Multicoin takes no responsibility for any content therein. Charts and graphs provided within are for informational purposes solely and should not be relied upon when making any investment decision. Any projections, estimates, forecasts, targets, prospects, and/or opinions expressed in this blog are subject to change without notice and may differ or be contrary to opinions expressed by others.
The content is provided for informational purposes only, and should not be relied upon as the basis for an investment decision, and is not, and should not be assumed to be, complete. The contents herein are not to be construed as legal, business, or tax advice. You should consult your own advisors for those matters. References to any securities or digital assets are for illustrative purposes only, and do not constitute an investment recommendation or offer to provide investment advisory services. Any investments or portfolio companies mentioned, referred to, or described are not representative of all investments in vehicles managed by Multicoin, and there can be no assurance that the investments will be profitable or that other investments made in the future will have similar characteristics or results. A list of investments made by funds managed by Multicoin is available here: https://multicoin.capital/portfolio/. Excluded from this list are investments that have not yet been announced (1) for strategic reasons (e.g., undisclosed positions in publicly traded digital assets) or (2) due to coordination with the development team or issuer on the timing and nature of public disclosure.
This blog does not constitute investment advice or an offer to sell or a solicitation of an offer to purchase any limited partner interests in any investment vehicle managed by Multicoin. An offer or solicitation of an investment in any Multicoin investment vehicle will only be made pursuant to an offering memorandum, limited partnership agreement and subscription documents, and only the information in such documents should be relied upon when making a decision to invest.
Past performance does not guarantee future results. There can be no guarantee that any Multicoin investment vehicle’s investment objectives will be achieved, and the investment results may vary substantially from year to year or even from month to month. As a result, an investor could lose all or a substantial amount of its investment. Investments or products referenced in this blog may not be suitable for you or any other party.
Multicoin has established, maintains and enforces written policies and procedures reasonably designed to identify and effectively manage conflicts of interest related to its investment activities. For more important disclosures, please see the Disclosures and Terms of Use available at https://multicoin.capital/disclosures and https://multicoin.capital/terms.