Las aplicaciones descentralizadas (Dapps) se consideran innovaciones disruptivas en áreas como la banca (Di-Fi) y los juegos. Pero incluso las soluciones más innovadoras no serán reconocidas si no cumplen con las expectativas del consumidor.
Lo que los consumidores quieren es una experiencia de usuario fluida y madura, y lograr este objetivo es otro gran desafío para los desarrolladores de Ethereum Dapp.
Este artículo proporciona una descripción general de una arquitectura Dapp típica y señala algunas de las limitaciones inherentes de la pila Ethereum estándar actual que dificultan que los desarrolladores creen una experiencia de usuario convincente. Luego, presentaré algunas innovaciones en el campo de la infraestructura de Ethereum que pueden ayudar a los desarrolladores a superar estos desafíos.
Arquitectura clásica de Ethereum Dapp
En general, una Dapp en Ethereum consta de tres partes principales:
Los contratos inteligentes, generalmente escritos en Solidity, se crean utilizando marcos como Truffle Suite y se implementan en la cadena de bloques Ethereum.
Código front-end, escrito en Java.
Backend: normalmente un nodo de cadena de bloques de Ethereum estándar. La comunicación entre el front-end y el back-end generalmente usa la API JSON-RPC o GraphQL proporcionada por el nodo.
También hay varias bibliotecas que facilitan la comunicación front-end con los nodos Eth, las más populares son web3.js y ethers.js. También hay bibliotecas web3 para muchos otros lenguajes (Java, Python, Rust…).
Nodo de back-end autoconstruido
En los primeros días de Ethereum, los desarrolladores tenían que operar sus propios nodos de Ethereum. Una vez que se lanza el Dapp, también deben operar nodos de grado de producción (o grupos de nodos). Operar un nodo de blockchain es una gran carga de trabajo y también afectará la eficiencia de los desarrolladores.
Proveedor de nodo como servicio (NaaS)
Este desafío anterior ha llevado al surgimiento de plataformas de "nodo como servicio" como Infura y compañías relativamente nuevas como Nodesmith, Quiknode, Blockdaemon, Ethernode, Chainstack, Alchemy, CloudFlare y otras.
Estas plataformas proporcionan a los desarrolladores nodos de Ethereum basados en la nube, lo que les ahorra el esfuerzo de operar los nodos. Soluciones para desarrollo y producción. Estas plataformas descargan la gestión del sistema, como parches y actualizaciones, para el sistema operativo base y el propio software de nodo a los desarrolladores.
Limitaciones inherentes a los nodos de Ethereum
Incluso si el servicio de nodo puede reemplazar con éxito al desarrollador como administrador del sistema, no puede ayudar a los desarrolladores a lograr una mejor experiencia de usuario para crear una Dapp mejor, debido a la arquitectura del servicio de nodo y las limitaciones inherentes y JSON-RPC de las interfaces de GraphQL.
Musk tuiteó o se burló de la música NFT: el 30 de diciembre, Musk tuiteó o se burló de la música NFT. Se informa que la imagen es el álbum de música "Demon Days" creado por la banda virtual Gorillaz, y el texto en la imagen dice "¿Se puede convertir NFT en un álbum?" "Imposible".
Nota: "Demon Days" es un álbum de música lanzado por la banda virtual Gorillaz el 27 de mayo de 2005. Producido por Damon Albarn y Danger Mouse, el álbum contiene 15 canciones. En 2006, el productor del álbum Danger Mouse fue nominado para el 48º premio Grammy al Mejor Productor No Clásico del Año con el álbum, y la pista del álbum "Feel Good Inc." fue nominada como Mejor Disco del Año. [2021/12/30 8:14:29]
Las principales limitaciones incluyen:
1. La información del estado observado es inconsistente
Para escalar más allá de la capacidad de un solo nodo y brindar mayor confiabilidad, los nodos como plataformas de servicio brindan acceso a grupos de nodos a través de balanceadores de carga.
Dado que todos estos nodos funcionan de manera autónoma como nodos pares en la red Ethereum, cuando la información se transmite a través de la red en un momento determinado, los diferentes nodos pueden estar en diferentes alturas de bloque, o incluso en diferentes bifurcaciones. Esto significa que una Dapp puede recibir información inconsistente sobre el estado de la cadena de bloques porque sus solicitudes obtienen resultados de diferentes nodos detrás del balanceador de carga.
Las plataformas de servicio de nodo generalmente intentan resolver este problema a través de la permanencia de la sesión en el balanceador de carga, que siempre intentará enviar la consulta de la interfaz especificada al mismo nodo de backend, pero este método fallará en varias situaciones:
Cuando el front-end genera más solicitudes de las que puede manejar un solo nodo de back-end;
Cuando un problema de red hace que el frontend se desconecte del backend y deba volver a conectarse;
Las plataformas de servicio de múltiples nodos enrutarán diferentes tipos de solicitudes de front-end (por ejemplo, el envío de transacciones o el historial de la cadena de búsqueda) a diferentes conjuntos de nodos de back-end optimizados para ese tipo de consulta.
Entonces, es difícil para Dapp manejar la reorganización de la cadena porque el front-end a menudo accede a múltiples nodos de back-end, y los estados de blockchain obtenidos por estos nodos de back-end son inconsistentes entre sí. Al rastrear el historial de la cadena hacia atrás, un Dapp puede encontrar repentinamente que el bloque principal que estaba buscando ya no existe (porque ahora está interactuando con otro nodo en una bifurcación diferente). Luego, los desarrolladores de Dapp tienen que escribir código para resolver este problema (generalmente volviendo a conectarse repetidamente hasta que encuentra un nodo). Esto agrega una complejidad innecesaria a la Dapp y puede generar discrepancias en la información presentada al usuario.
2. La búsqueda de información en blockchain es lenta y limitada
Las dapps tienen una capacidad limitada para buscar transacciones o el historial en cadena, ya que los nodos Ethereum estándar no son adecuados para admitir búsquedas precisas o realizar escuchas filtradas de datos en tiempo real. Para hacer esto de una manera eficiente, necesitamos hacer mucha indexación de millones de bloques y transacciones, pero:
Los nodos de Ethereum solo indexan ciertos campos en el registro enviado por la ejecución de la transacción (los campos que se indexarán deben ser marcados por el desarrollador al implementar el contrato)
Los nodos de Ethereum no indexan datos para transacciones internas (que suceden cuando un contrato inteligente llama a un método de otro contrato)
Los desarrolladores son reacios a agregar campos de índice adicionales, porque el costo de cada transacción aumentará por cada campo de índice adicional, lo que generará costos adicionales para los usuarios contratados.
Los nodos de Ethereum realizan búsquedas utilizando filtros Bloom, por lo que siempre es una búsqueda difusa y producirá coincidencias falsas positivas. La coincidencia exacta requiere un procesamiento adicional por parte del front-end. El front-end debe obtener el bloque completo o la transacción de la coincidencia aproximada y recuperarlo nuevamente para encontrar el resultado de una coincidencia exacta. Esto no solo requiere el esfuerzo del desarrollador, sino que también desperdicia ancho de banda entre la interfaz y los nodos.
La sintaxis de búsqueda disponible es muy limitada: solo se admiten selecciones básicas y sustituciones simples.
La obtención de resultados de búsqueda es lenta: realizar búsquedas en bloques grandes puede llevar horas
JSON-RPC es una gran pérdida de ancho de banda: devuelve muchos más datos de los que realmente necesita. La interfaz de GraphQL usa menos ancho de banda, pero no proporciona capacidades de transmisión (el frontend debe sondear las actualizaciones)
3. Falta de atomicidad
En la mayoría de los entornos modernos, como las bases de datos relacionales, las transacciones son generalmente atómicas, pero en Ethereum (u otras cadenas de bloques) no lo son. Cada transacción pasará por una serie de transiciones de estado y se pueden encontrar varios problemas o fallas durante este proceso. Dapps debe llamar a múltiples API, consultando muchas fuentes de datos diferentes (bloques, mempool, estado de la red) para rastrear el ciclo de vida de una transacción hasta su finalización.
Una vez más, la carga recae en el código de front-end para sondear repetidamente para descubrir exactamente qué sucedió, mientras que los usuarios de Dapp experimentan retrasos y la necesidad de actualizar a medida que Dapp realiza todo este trabajo adicional.
4. El nodo es pasivo
Los nodos de Ethereum son pasivos, lo que significa que no pueden generar eventos o devoluciones de llamadas e invocar webhooks. Todas las operaciones deben ser iniciadas por la interfaz, que a su vez debe sondear los nodos para obtener información actualizada. Las capacidades de lectura del flujo de eventos de los nodos de Ethereum son demasiado limitadas para satisfacer las necesidades de la mayoría de las Dapps y solo están disponibles en las interfaces JSON-RPC, no en las interfaces GraphQL.
Repensar la infraestructura Dapp
Lo que proporciona dfuse es una plataforma para API de cadena de bloques de nivel superior que les permite hacer más trabajo más fácilmente que las API nativas proporcionadas por los nodos de cadena de bloques. Está diseñado sobre la base de brindar a los desarrolladores de Dapp la funcionalidad que necesitan para crear aplicaciones modernas de blockchain con una interfaz rápida y fluida que brinde una excelente experiencia de usuario.
Se espera que a través de la plataforma se puedan resolver todas las limitaciones mencionadas anteriormente y se puedan romper las limitaciones de los nodos tradicionales de Ethereum.
1. Una visión coherente
dfuse es una plataforma de datos de hiperescala integrada, no una colección de múltiples nodos Ethereum en un balanceador de carga. La plataforma dfuse proporciona información sobre el estado de la cadena en todas las conexiones y en todos los momentos. Ver un bloque (detectando tanto una bifurcación de cadena como una reorganización), o no informar el bloque en absoluto (en el caso de un bloque que experimenta una reorganización rápida y no viaja lejos).
De esta manera, Dapp nunca enfrenta una visión inconsistente del estado de la cadena y puede enfocarse en su función principal en lugar de intentar verificar los detalles de la cadena de bloques.
2. Búsqueda detallada y de alta velocidad
Permite a los desarrolladores de Dapp buscar los registros históricos de la cadena de bloques con una granularidad extremadamente fina, una velocidad y una eficiencia extraordinarias. También puede realizar filtrado en tiempo real y lectura de transmisión a través de las interfaces GraphQL, gRPC y Websocket.
Indexación completa de todos los campos del registro: todos los datos emitidos por cada transacción en el registro se aplican directamente a búsquedas de alta precisión.
Indexación completa de todas las transacciones internas (remitente, receptor, valor, método, parámetros de entrada), por lo que se realiza un seguimiento completo de la operación del contrato en la estructura de árbol de toda la llamada
La indexación no genera costos adicionales de gas para sus usuarios: la indexación de dfuse es una característica integrada de la plataforma dfuse y no aumenta el costo de recursos de la ejecución del contrato
La búsqueda encuentra coincidencias exactas, no búsquedas aproximadas. No es necesario escribir código front-end adicional para verificar dos veces los resultados de la búsqueda, y no es necesario desperdiciar ancho de banda para obtener datos innecesarios en lotes.
Proporciona un lenguaje de consulta estructurado, similar al lenguaje de consulta de Kibana o GitHub, con operaciones booleanas completas y la capacidad de profundizar directamente en la transacción o comando específico que está buscando.
Proporciona un rendimiento excelente: en menos de un segundo, de acuerdo con los criterios de búsqueda especificados, busque en todo el historial de la cadena para encontrar un conjunto de coincidencias exactas.
Lo mejor de ambos mundos con GraphQL que puede proporcionar respuestas concisas sin sacrificar las capacidades de transmisión: nuestra interfaz GraphQL proporciona una búsqueda filtrada completa en tiempo real para brindar de manera eficiente actualizaciones dinámicas a los usuarios.
El rendimiento es consistente independientemente del tráfico en la red Ethereum
3. Operaciones atómicas
Proporciona un punto final de lectura de flujo que comprende todos los estados complejos en los que puede ingresar una transacción y le notifica cuando alcanza la finalidad. En lugar de navegar por encuestas repetidas o verificar múltiples fuentes de datos para rastrear el estado de las transacciones, simplemente puede aumentar las transacciones y mantenerse conectado para recibir actualizaciones de estado en tiempo real, y así también proporcionar el estado de las transacciones en tiempo real a sus usuarios.
4. Servidor activo
Una buena plataforma le brindará un backend activo que puede iniciar eventos. Por ejemplo, se puede invocar una función lambda (o función de nube) de su elección según los criterios precisos que especifique (a través de la búsqueda mencionada anteriormente y otras funciones). Esto permite que Dapps implemente una arquitectura asíncrona donde las actualizaciones de datos se pueden enviar a los usuarios de manera fluida y en tiempo real a través de múltiples canales de comunicación.
5. Una plataforma moderna construida para Dapps de vanguardia
dfuse proporciona una capa de infraestructura moderna para su Dapp, a saber:
Rápido
Extensible
Proporciona acceso detallado y de alta precisión en tiempo real a los eventos de la cadena de bloques
Admite devoluciones de llamadas activas en forma de webhooks
Admite operaciones atómicas
La más alta confiabilidad en la industria
Por lo tanto, al desarrollar Dapps en Ethereum y encontrar los problemas anteriores, puede intentar usar diferentes herramientas para resolver los problemas Solo después de pulir el producto y capacitar al usuario, pueden surgir Dapps más refinados, prácticos y maduros.
Tags:
Como informó Cointelegraph, Monroe Research Labs (MRL) publicó Triptych en un documento el 6 de enero. Como mecanismo central de anonimato de Monero.
Anthony Pompliano, cofundador del fondo de capital de riesgo blockchain Morgan Creek, tuiteó que hay rumores de que la Reserva Federal planea anunciar un plan para digitalizar el dólar estadounidense.
OptionRoom anunció que ROOM aparecerá en Uniswap a las 21:30 el 5 de febrero: la máquina de oráculo ecológico y el protocolo de predicción de Polkadot OptionRoom tuiteó que ROOM se lanzará a las 13:30 el 5 de febrero.
Las aplicaciones descentralizadas (Dapps) se consideran innovaciones disruptivas en áreas como la banca (Di-Fi) y los juegos.
Recientemente, BSV, que se bifurcó de la comunidad BCH en noviembre de 2018, se hizo popular de repente.
Los tokens convencionales están fuera del canal. En diciembre.