Intercambio de bitcoins Intercambio de bitcoins
Ctrl+D Intercambio de bitcoins
ads
Casa > Huobi App > Info

Este artículo comprende los 8 estados que pueden experimentar las transacciones de Ethereum y cómo Dapp debe manejarlos

Author:

Time:

En este artículo, nos centraremos en el complejo ciclo de vida de las transacciones en Ethereum, los desafíos para los desarrolladores que intentan hacer que las dapps brinden una experiencia de usuario ideal en estas situaciones y cómo dfuse ayuda a superar estos desafíos.

Cada vez que se envía una transacción a la red Ethereum, pasa por una serie bastante compleja de estados, y no todas las transiciones de estado son hacia adelante: la transacción puede revertirse a un estado anterior, puede ser reemplazada por otros reemplazos de transacciones y posiblemente horquillas completas. (El ciclo de vida de una transacción se describe en detalle a continuación).

Seguir el progreso de una transacción en un dapp y brindar una buena experiencia a los usuarios es un desafío. Hoy en día, muchas dapps basadas en Ethereum pueden proporcionar una experiencia de usuario atractiva pero aún relativamente estática: la aplicación puede mostrar el estado de la transacción en un momento determinado, pero debe actualizarse (haga clic para actualizar o la interfaz de usuario de dapp actualiza periódicamente la página) para obtener la actualización de la información. Hay interfaces relativamente más dinámicas en el mercado, pero la granularidad de los datos proporcionados todavía no es lo suficientemente buena o, a expensas del alto tráfico de red, impone una gran carga en sus nodos de cadena de bloques subyacentes.

A continuación, analizamos por qué este es el caso y cómo las actualizaciones detalladas del estado de las transacciones de una manera eficiente en la red y el servidor pueden proporcionar una experiencia de usuario fluida en dapps que cumple con los estándares modernos.

Interfaces Dapp hoy

Cada dapp necesita mostrar al usuario la información subyacente de la cadena de bloques que está ejecutando la transacción, ya sea una transferencia de Ether, una transferencia de token o una llamada de contrato inteligente, y muchas interfaces de dapp actuales muestran esta información cuando muestran el bloque. estado de la cadena en un solo punto en el tiempo.

Los usuarios a menudo necesitan actualizar la información durante la transacción (por ejemplo, para saber cuándo se completa la transferencia), por lo que el dapp colocará un botón de "actualizar" en la interfaz (o actualizará automáticamente la página para el usuario periódicamente), o el usuario necesita hacer clic directamente en el botón Actualizar del navegador para obtener actualizaciones.

Algunas dapps con una experiencia de usuario más madura mostrarán actualizaciones en vivo de las transacciones al usuario. Sondean las solicitudes de AJAX en segundo plano, verifican dos veces sus nodos Ethereum en busca de actualizaciones y publican las actualizaciones en la interfaz. Hacerlo es complejo porque las dapps deben realizar numerosas llamadas a la API consultando muchas fuentes de datos diferentes (incluidos bloques, mempools y condiciones de red) para rastrear el ciclo de vida de una transacción de principio a fin.

Este enfoque tiene desventajas: las transacciones se actualizan con poca frecuencia y la granularidad de la información es grande, lo que hace que los usuarios quieran hacer clic en "actualizar" repetidamente para obtener actualizaciones más rápido; o el dapp debe sondear la cadena de bloques con frecuencia, lo que genera una gran cantidad de tráfico de red. , lo que impone una gran carga en los nodos de la cadena de bloques subyacentes.

Centro de Investigación de Finanzas Emergentes de la Universidad de Cambridge: la tasa de hash de Kazajstán ocupa el tercer lugar en el mundo: noticias del 15 de julio, el Centro de Investigación de Finanzas Emergentes de la Universidad de Cambridge (CCAF) enfatizó en un estudio reciente que la participación minera de China ha sido suprimida en el futuro cercano Ha habido una clara tendencia a la baja comenzado antes, y la participación minera de China se ha reducido en casi un 30% en abril, y el 90% de las operaciones mineras se han cerrado en julio. Algunas de las minas más grandes de China tuvieron que cerrar sus operaciones y trasladarse a otros países. América del Norte, Rusia y Kazajstán se han convertido cada vez más en opciones para estos mineros inmigrantes, con Kazajstán actualmente ocupando el tercer lugar en el mundo en términos de tasa de hash. (Coingape)[2021/7/15 0:54:51]

¿Por qué no usar una interfaz basada en eventos en cadena?

Para los desarrolladores de dapp, hacer páginas estáticas o sondear han sido las únicas dos opciones disponibles, lo que refleja la naturaleza de la API proporcionada por los nodos de Ethereum. Si hay una interfaz basada en eventos en cadena, que puede recibir actualizaciones de estado de transacciones enviadas a la cadena y dar retroalimentación en tiempo real a los usuarios, las dapps pueden brindar una mejor experiencia de usuario, mientras que los nodos estándar de Ethereum no brindan información detallada en tiempo real. datos de la transacción.

Los nodos de Ethereum proporcionan lectura de flujo de eventos en cadena, pero la funcionalidad es limitada y solo está disponible a través de la funcionalidad PUB/SUB usando la interfaz JSON-RPC de Ethereum (no disponible cuando se usa GraphQL). La interfaz PUB/SUB permite que las dapps reciban notificaciones para algunos tipos de eventos:

newHeads: cada vez que se agrega un nuevo encabezado de bloque a la cadena

registros: filtre los registros que coincidan con los criterios especificados para incluirlos en el fragmento recién importado

newPendingTransactions: un hash de todas las transacciones que ingresaron al estado pendiente y fueron firmadas por claves disponibles en el nodo (y esto es raro en los nodos públicos)

sincronización: indica cuándo un nodo comienza o deja de sincronizarse

La obtención de información basada en estos tipos de eventos es limitada y las dapps no pueden rastrear el ciclo de vida completo de las transacciones a través de ellas.

Ciclo de vida de las transacciones de Ethereum

Las transacciones de Ethereum tienen ciclos de vida complejos. Cada transacción pasará por múltiples estados (estados), sufrirá varios cambios de estado a lo largo del proceso y puede avanzar o retroceder.

Estado de la transacción

Desde enviar una transacción de Ethereum hasta ingresar a un bloque (con cierta probabilidad de éxito), pasará por una serie de estados de la siguiente manera:

UNKNOWN (Desconocido): Una transacción que no ha sido detectada o procesada por la red se define como en estado DESCONOCIDO.

PENDIENTE: Las transacciones están a la espera de ser seleccionadas y procesadas por los mineros en lo que llamamos mempool. Los mineros generalmente eligen primero las transacciones con precios de gas más altos, por lo que las transacciones con precios de gas más bajos pueden estar en estado PENDIENTE durante mucho tiempo. Es posible que nunca se seleccionen las transacciones con los precios de gas más bajos, lo que las dejaría en estado PENDIENTE por tiempo indefinido.

IN_BLOCK: cuando los mineros seleccionan con éxito una transacción y la procesan en un bloque, la transacción ingresará al estado IN_BLOCK. Si una transacción ingresa al estado IN_BLOCK, pero el bloque en el que estaba se bifurca, la transacción puede volver al estado PENDIENTE.

REEMPLAZADO: Una transacción puede cambiar del estado PENDIENTE al estado REEMPLAZADO en los siguientes dos casos:

Otra transacción del mismo remitente con el mismo nonce ingresa al estado IN_BLOCK, o

Otra transacción del mismo remitente con el mismo nonce pero con un precio de gasolina un 12% más alto ingresa al estado PENDIENTE

El siguiente diagrama muestra estos estados y las transiciones entre ellos.

transición de estados

Como se muestra en la figura anterior, las transiciones entre estados también se definen mediante nombres.

COMBINADO (en el grupo): Las transacciones en el estado DESCONOCIDO (desconocido) ingresan al grupo de transacciones esperando que los mineros elijan, llamado COMBINADO e ingresan al estado PENDIENTE (pendiente). Una transacción en el estado REEMPLAZADO, si la condición de reemplazo ya no es verdadera (por ejemplo: en casos excepcionales, una transacción con un precio de gas bajo en IN_BLOCK se bifurca y la reemplaza con el mismo nonce y envía Si la transacción de la anterior es todavía flotando en la red), también es posible cambiar de nuevo al estado POOLED.

MINED (mined): Una transacción minada es una transacción procesada por un minero, que crea un bloque. Una vez minada, se considera que una transacción está en el estado IN_BLOCK. Debido a la naturaleza punto a punto de la red Ethereum, desde la perspectiva de un nodo designado, una transacción puede pasar directamente del estado UNKNOWN (desconocido) al estado IN_BLOCK (bloque entrante) sin pasar explícitamente por el estado PENDING (pendiente). ) Expresar. Por la misma razón, una transacción también puede pasar directamente del estado REEMPLAZADO al estado EN_BLOQUE sin pasar por el estado PENDIENTE, según lo supervisado desde la perspectiva de un nodo determinado.

REEMPLAZADO: Una transacción que ingresa al estado REEMPLAZADO desde el estado PENDIENTE también se denomina REEMPLAZADO. Vea el estado REEMPLAZADO enumerado en Estado de transacción en el texto.

FORKED (bifurcado): Cuando una transacción minada está en un bloque que ha sido revocado por la red, es una transacción bifurcada. Todas las transacciones en ese bloque se bifurcarán una tras otra, desde el estado IN_BLOCK (bloque entrante) hasta el estado PENDING (pendiente).

CONFIRMADO: una transacción en el estado IN_BLOCK se confirmará cada vez que se extraiga su subbloque posterior.

Como se mencionó anteriormente, el ciclo de vida de las transacciones en Ethereum es muy complejo, lo que dificulta que las dapps lo rastreen con precisión y proporcionen actualizaciones fluidas y fluidas a los usuarios.

Haga un seguimiento del estado de la transacción sin esfuerzo

La plataforma dfuse proporciona una rica interfaz capaz de monitorear la transmisión, que admite el seguimiento detallado en tiempo real del ciclo de vida de las transacciones de Ethereum. La API dfuse Ethereum Transaction Status Tracker permite a los desarrolladores enviar transacciones de Ethereum y luego obtener instantáneamente actualizaciones granulares de estado en el mismo canal de datos, siguiendo la transacción a medida que avanza a lo largo de su ciclo de vida.

Con GraphQL, puede monitorear los cambios de tipos específicos de transacciones en tiempo real y, al mismo tiempo, puede especificar con precisión los datos que desea recibir cada vez que cambia una transacción. La plataforma dfuse maneja las complejidades de rastrear transacciones y transmitirlas a dapps en tiempo real a medida que ocurren.

De esta forma, no tiene que escribir ni ejecutar una lógica compleja en segundo plano y sondear repetidamente, y no desperdicia ancho de banda y ejecuta la misma consulta varias veces. Simplemente escuche las actualizaciones que necesita y luego envíe esas actualizaciones al usuario en la interfaz.

La siguiente animación muestra una transacción que atraviesa este complejo ciclo de vida: atraviesa ocho transiciones de estado antes de incluirse en un bloque y confirmarse.

Si no se usa dfuse, la dapp debe acceder a la cadena de bloques una y otra vez para capturar todas las transiciones experimentadas por la transacción y actualizarla para el usuario, y el código de back-end debe estar preparado para lidiar con cada transición de estado.

Con dfuse, dapps solo necesita obtener actualizaciones de transmisión a través de una sola conexión, y dfuse rastreará la transacción por usted a través de los diversos giros y vueltas hasta que finalice su destino.

Una plataforma moderna para Dapps avanzados

Lifecycle API es solo una parte pequeña e importante de la plataforma dfuse. dfuse proporciona una capa de infraestructura moderna completa para dapps, a saber:

Rápido,

Extensible,

Proporciona monitoreo de transmisión altamente granular de eventos de blockchain,

Admite devoluciones de llamadas activas en forma de Webhooks,

Tener la mayor confiabilidad en la industria.

Tags:

Huobi App
Video丨Detrás del pánico del mercado, ¿todavía hay una posibilidad para Bitcoin?

Datos: 82 400 ETH se comprometieron a contratos de Ethereum 2.0 la semana pasada: según los datos de OKLink, a partir de las 14:00 de hoy, la dirección del contrato de depósito de Ethereum 2.0 recibió 3 874 700 ETH.

¿Por qué no debería creer en las "cotizaciones de reducción a la mitad"?

Incluso si el concepto de "reducción a la mitad del mercado" tiene sentido para usted, hay una cosa que interferirá con él. Si podemos saber casi exactamente cuándo ocurrirá la reducción a la mitad.

Un sueño en doce años ¿El hijo de la crisis es una oportunidad para Bitcoin?

La mayor noticia de ayer fue el recorte de tipos de emergencia de la Fed. El recorte de la tasa de interés no es inesperado. Todo el mundo está recortando las tasas de interés.

Este artículo comprende los 8 estados que pueden experimentar las transacciones de Ethereum y cómo Dapp debe manejarlos

En este artículo, nos centraremos en el complejo ciclo de vida de las transacciones en Ethereum.

Se evaporaron 500 mil millones en enero, y las monedas de producción reducida colapsaron en todos los ámbitos.¿Se acerca el "momento Minsky" de Bitcoin?

La guerra del petróleo saudí "derribó" el mercado de valores de EE. UU. y "derribó" el mercado financiero mundial.Para las principales monedas como Bitcoin.

Profundidad Dorada 丨 "3.8 Día de la Mujer" El precio de Bitcoin se desplomó o ¿debido a estas tres cosas?

Yuga Labs: Cooperará plenamente con las investigaciones relacionadas con la SEC: El 12 de octubre, Yuga Labs respondió a la noticia de la investigación de la SEC: Como líder en este campo.

ads