Events

Result<Response, ContractError> es el tipo de retorno típico de las funciones de punto de entrada, con Response sirviendo como envoltorio para Events en el SDK de Cosmos.

El tipo Response debería ser devuelto como el resultado exitoso de un punto de entrada de contrato, como instantiate o execute. Puedes declararlo como mutable y añadirlo en el cuerpo de la función, pero un patrón más común es construirlo al final y devolverlo si todos los cálculos han tenido éxito. En los ejemplos que siguen, Response está envuelto por Ok ya que está siendo devuelto como parte de una función que devuelve el tipo Result, con Response representando la rama Right o éxito.

El punto de entrada Query es una excepción, ya que devolverá StdResult debido a la interfaz Cosmos SDK.

Puedes revisar el código fuente de la estructura Response aquí.

El uso más básico de Response es el siguiente:

Ok(Response::default ())

Este es un escenario típico en las funciones instantiate cuando no se devuelve ningún mensaje al cliente.

Sin embargo, en la mayoría de los casos de manejo de ejecutar, una respuesta debe ser devuelto:

let res = Response::new()
.add_attribute("action", "transfer")
.add_attribute("from", info.sender)
.add_attribute("to", recipient)
.add_attribute("amount", amount);
Ok(res)

Este fragmento de código implica varios pasos adicionales, así que analicémoslo con más detalle. Puede acceder al código fuente de este ejemplo haciendo clic aquí.

  1. Se crea una nueva Response

  2. Se le añaden varios pares clave/valor.

  3. La respuesta se devuelve envuelta en un resultado de tipo Ok

Al invocar su contrato a través de la interfaz de línea de comandos (CLI), observará que se registran como parte de la respuesta "raw_log", junto con otros eventos del SDK.

En lugar de limitarse a añadir atributos, add_event puede emplearse para añadir un evento no encapsulado con el que puedan interactuar otros clientes o contratos.

Last updated