En la comprensión del evento de la solidez -evento

Fuente: Comunidad Dengchain

En el artículo de hoy, analizaremos la solidezeventoSe llama en Ethereum más común y EVMRegistroEsenciaVeremos cómo usarlos, sus definiciones, cómo usar el tema del evento y la firma para filtrar el registro, y algunas sugerencias sobre cuándo.

También cubriremos la inspecciónevento-El modo de interacción, este famoso modelo se aplica tradicionalmente al ingreso de las variables de estado, pero veremos por qué este modelo también debe aplicarse a eventos desencadenantes y riesgos potenciales y vulnerabilidades de seguridad involucradas.

¿Cómo definir eventos en solidez?

Estar disponibleeventoLa palabra clave define el evento en solidez, como se muestra a continuación.

     interfaz ilight {< BR/> Evento SwitchDon ();

Puede aprobar el nombre del contrato a través de un acceso limitado completo, seguido de seguirEntonces, entoncesPara acceder al evento desde otro contrato con el nombre del evento, como se muestra a continuación:

Usuario de vestimenta de eventos)

La firma del evento es:

Usuario de vestimenta de eventos)

El tema del evento es:

bytes32 topichash = uccessfle .selector;

Tenga en cuenta que solo después de la solidez v0.8.15, el incidente.selectorLos miembros pueden usarlo.

Si verifica cualquier registro de blockchain, encontrará el índice del tema del registro0(El primero) El propósito corresponde al tema del evento.Dado que el tema es el contenido que se puede buscar a través de un registro, podemosFiltrar con el tema del evento:

  • Busque eventos específicos en el contrato inteligente de una dirección específica.

  • Busque eventos específicos en todos los contratos en blockchain.

Lo veremos más abajo,anónimoEl evento anónimo es la excepción de esta regla.anónimoLas palabras clave los hacen incapaces de buscar, así que use el término"anónimo"Esencia

Según este hecho, también podemos inferir que el evento más simple definido en la solidez no tiene parámetros, como el evento definido anteriormenteBulbreplicadooSwitchedon, Se usará en la parte inferiorLog1El código de operación desencadena el tema en el registro porque el incidente en sí se puede buscar.

Puede agregar más temas, se utilizarán otros temasLog2,Log3,Log4yLog5Mientras estos parámetros estén marcados comoindexadoEsenciaEchemos un vistazo al parámetro del índice en la siguiente sección.

Parámetros del evento y parámetros del índice

El evento puede aceptar cualquier tipo de parámetros, incluido el tipo de valor (Uintn,byteesn,bool,DIRECCIÓN...) ,,estructura,enumerY el tipo de valor definido por el usuario.

Según mi investigación en este artículo, el único tipo que no está permitido es el tipo de función interna.Se permite el tipo de función externa, pero el tipo de función interna no está permitida.Por ejemplo, el siguiente código no se compilará.

// spdx- s Identificador de licencia: sin licencia
Solidez de Pragma ^0.8.0; >

Si la declaración del evento esanónimoEn el contrato ABI, el incidente está disponible"Anónimo"El campo se marcará comoverdaderoEsencia

img https://github.com/ethereum/solidies/issues/13086

Una ventaja anónima es que hace que su contrato sea más barato y más barato, y el gas es más barato cuando se activa.

Un buen caso de evento anónimo es un contrato con solo un evento.Todos los eventos en el contrato de negociación son significativos, porque solo este incidente aparecerá en el registro de eventos.Suscríbete a su nombre es irrelevante, porque solo se define un solo evento para emitir el contrato.Por lo tanto, puede definir eventos anónimos, suscribirse a todos los registros de eventos del contrato y confirmar que son los mismos eventos.

Verifique el uso de uso anónimo en la popular biblioteca de códigos, como el contrato de DS-Note en Dappphub[7]medio.

ImgCódigo fuente[8]

Podemos ver en el fragmento de código anterior que debido a que la declaración del evento es anónima, esto puede definir el cuarto parámetro "indexado".

Tenga en cuenta que debido a que el evento anónimo no tiene el tema de Bytes32, el evento anónimo no admite.selectormiembro.

Use el código de operación de registro para activar eventos en el ensamblaje

img https://docs.solidieslang.org/en/v0.8.19/yul.html#evm-dialect

Es posible activar un evento en la asamblea, usarLognInstrucción, la instrucción corresponde al código de operación concentrado por la instrucción EVM.

Para activar un evento en la Asamblea, debe almacenar todos los datos emitidos por el incidente enmemoriaPosición específica.

Una vez que almacene los datos del evento en la memoria, y luego puede especificar los siguientes parámetros en la instrucción Logn:

  • P = Obtenga la posición de memoria de los datos de él.Básicamente, este es un puntero de memoria, o un "desplazamiento" o "índice de memoria", dependiendo de cómo lo llame.

  • S = Desea el número de bytes emitidos de P en el evento.

  • Todos los demás parámetrosT1Así comoT2Así comoT3yT4Son los parámetros del evento que desea indexar.Tenga en cuenta que hay dos cosas importantes aquí: 1) Estos parámetros deben ser los mismos que los parámetros definidos en el mismo orden que la definición de sus eventos, 2) Estos parámetros deben colocarse en la memoria para obtener datos.

El siguiente fragmento de código muestra cómo realizar esta operación en el ensamblaje.

& lt; -7px; ) Internet {
bytes32 topichash = Ejemploventam.selector; /> Log2 (
freememorypointer, /// `P` P` P` P` P` P` P` P` P` P` P` P` P` P` P` P` P` P` P` P` P` P` P` = Comenzando el desplazamiento en la memoria
64, // `S` = Número de bytes en la memoria de 'P` para incluir en los datos del evento
Tema para filtrar el filtro Evento de sí mismo
tokenid // 1er parámetro indexado
)
}
}

Costo de gas del evento

Todos los códigos de operación de registro (Log0Así comoLog1Así comoLog2Así comoLog3Así comoLog4) Debe consumir gas.Cuantos más parámetros (temas) tengan, más gas consumen.

Imagen-20240226195203141

Además, otros factores, como índices o datos, también pueden hacer que el evento consuma más gas.

Verificar -Event -Modo Interactivo

Modo de control-efectivo de verificación[9]También es adecuado para incidentes.

Un método para detectar estos modos es usar la herramienta de análisis estático Remix.

Este modelo también puede ser detectado por Slither.Cuando un contrato ejecuta un contrato con una llamada externa, obtendrá un descubrimiento para solicitar el "evento de reiniciación".

Por lo tanto, para DAPP, el pedido es muy importante, por lo que puede verificar correctamente qué incidente primero, a continuación y finalmente emitido.Esto es particularmente importante cuando las llamadas recursivas o reingresadas.Si el evento se activa después de llamadas externas, y esta llamada externa está hecha de una llamada repetida, entonces:

  1. El primer incidente fue la segunda vez después de que se completó la llamada.

  2. El segundo evento se emitió después de la transacción inicial.

  3. Comprender esto también permite un seguimiento claro de auditoría bajo la cadena para monitorear las llamadas de contrato.Puede ver qué funciones se llaman primero y finalmente, y el orden de ejecución de cada rutina durante la ejecución de la transacción.

    Documentación del detector de deslizamiento[10]-Stabilidad y analizadores estáticos de Vyper.

    Esta posible vulnerabilidad también está en el camino de los bits[11]Encontrado e informar en la auditoría de contratos inteligentes.

    Img

    Img

    ¿Cuándo se debe activar el incidente?

    Puede haber varios casos en su contrato que pueden ser importantes y útiles para desencadenar eventos.

    • Cuando los usuarios restringidos y la dirección ejecutan ciertas operaciones (por ejemplo, propietario o administrador de contratos).Esto incluye como los popularesPropiedad de transferencia (dirección)Función, el propietario solo puede llamar a esta función para cambiar el propietario del contrato.

    Img

    • Cambie algunas variables clave o parámetros aritméticos, que son responsables de la lógica central del contrato.Es particularmente importante en el fondo del protocolo Defi.

    Img

    Documentación del detector de deslizamiento[12]Describa más información sobre estas situaciones.

    Esto también se describe en el informe de auditoría de senderos de LooksRare.

    Img

    • Contratos de vigilancia desplegados en producción para detectar anormalidades.

    Img

    Ver 0xprotocol[13]Detalles para comprender los problemas relacionados con la seguridad relacionados con el incidente.

    referirse a

    1. El documento que falta a fines del uso del evento anónimo (sepa por qué)[14]

    2. [Ventajas del evento anónimo]

  • Related Posts

    Binance lanza puntos alfa, comprende todas las reglas

    Jessy, Bittain Vision ¡Los requisitos para participar en Binance Wallet TGE son cada vez más altos! Anteriormente, la popularidad del TGE exclusivo de Binance Wallet trajo una gran cantidad de…

    Bankless: ¿Cuáles son las plataformas de creación de contenido descentralizadas a las que vale la pena prestar atención?

    Autor: William M. Peaster, Bankless; Compilado por: Tao Zhu, Bittain Vision He estado escribiendo en el campo de la criptografía desde 2017. Desde entonces, he convertido la escritura en una…

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    You Missed

    Más allá de la motivación: cómo construir un ecosistema de defi duradero

    • Por jakiro
    • abril 25, 2025
    • 0 views
    Más allá de la motivación: cómo construir un ecosistema de defi duradero

    Binance lanza puntos alfa, comprende todas las reglas

    • Por jakiro
    • abril 25, 2025
    • 0 views
    Binance lanza puntos alfa, comprende todas las reglas

    Disponse lianchuang: Ethereum puede traer una cadena de rendimiento de alto rendimiento a través de la expansión de múltiples L2s

    • Por jakiro
    • abril 25, 2025
    • 0 views
    Disponse lianchuang: Ethereum puede traer una cadena de rendimiento de alto rendimiento a través de la expansión de múltiples L2s

    Paradigma Huang Gongyu: Detalles de la inversión temprana en Zhang Yiming, tendencias de tecnología de cifrado

    • Por jakiro
    • abril 25, 2025
    • 0 views
    Paradigma Huang Gongyu: Detalles de la inversión temprana en Zhang Yiming, tendencias de tecnología de cifrado

    Glassnode: ¿Ha cambiado completamente el sentimiento en el mercado de criptografía?¿Quién está obteniendo ganancias?

    • Por jakiro
    • abril 25, 2025
    • 1 views
    Glassnode: ¿Ha cambiado completamente el sentimiento en el mercado de criptografía?¿Quién está obteniendo ganancias?

    ¿Cuál es el fondo de Ethereum?¿Pronto el mercado alcista ETH?

    • Por jakiro
    • abril 25, 2025
    • 1 views
    ¿Cuál es el fondo de Ethereum?¿Pronto el mercado alcista ETH?
    Home
    News
    School
    Search