Interactuar con su contrato
Procedamos a generar transacciones y recuperar información del contrato que hemos desplegado.
Consultas
Las consultas leen de la cadena de bloques. No modifican nada almacenado en la cadena, por lo que no incurren en gastos de gas.
Hay varios tipos de consultas que podemos realizar, pero un tipo común que nos interesa es el estado del contrato, que llamaremos en modo inteligente. Esto nos permite realizar consultas con argumentos, en lugar de volcar todos los datos o metadatos del contrato.
Si consultamos el count antes de modificar ningún estado, obtendremos el valor que establecimos durante la instanciación:
Un ejemplo básico para nuestro contrato de incremento sería:
Outputs:
¿Por qué el argumento de consulta {"get_count": {}}?
Si abrimos src/contract.rs e inspeccionamos la función pub fn query, veremos la sentencia case matching que coincide con nuestra consulta JSON:
Transacciones
Para incrementar el valor de nuestro contador, ejecutaremos una transacción que llama a la función pub fn try_increment en src/contract.rs. Esta función ya es pública, pero la ejecución de la transacción es manejada por la función pub fn execute en src/contract.rs, que hace la concordancia de patrones para llamar a try_increment.
Enviando una transacción de Incremento, usando el CLI de archway:
Enviando una transacción de Incremento, usando archwayd:
Ejemplo output:
¿Por qué el argumento {"increment": {}}?
Si abrimos src/contract.rs e inspeccionamos la función pub fn execute, veremos una sentencia de concordancia de patrones que coincide con nuestro argumento JSON:
Como puede ver, los atributos enum se convierten de nuevo. ExecuteMsg::Increment {} se convierte en {"increment": {}} en la CLI.
Si nuestra transacción {"increment": {}} la transacción ha tenido éxito y volvemos a consultar el count, éste se habrá incrementado en 1*:
Ahora outputs:
Last updated