Si es un desarrollador de Solidity, le encantará saber que Truffle ahora admite el inicio de sesión de la consola en los contratos inteligentes de Solidity . Si bien Truffle ha sido durante mucho tiempo un líder en herramientas de desarrollo de contratos inteligentes, proporcionando un entorno fácil de usar para crear, probar y depurar contratos inteligentes, una consola integrada directamente era una característica que aún necesitaba.
¡Pero no más! Los desarrolladores ahora pueden registrar fácilmente mensajes y depurar sus contratos inteligentes, todo dentro del entorno familiar de Truffle (Ganache). Veamos cómo.
Console.log es una función muy popular en JavaScript y los desarrolladores la utilizan ampliamente para generar fácilmente mensajes de registro y extraer detalles directamente del código. En el contexto de web3 y desarrollo de contratos inteligentes, console.log desempeña un papel similar, ya que permite a los desarrolladores imprimir variables de Solidity y otra información de sus contratos inteligentes.
Por ejemplo, puede usar console.log para mostrar el valor de una variable o el resultado de una llamada de función dentro de su contrato inteligente. Esto puede ser extremadamente útil al depurar o probar su contrato inteligente.
console.log("Console Logging: The Smart Contract Developer's Best Friend");
Hacer uso de console.log es bastante sencillo. Primero, deberá asegurarse de tener una versión actualizada de Truffle ejecutándose en su computadora. Si tiene algún problema, es posible que desee desinstalar el paquete por completo y luego volver a instalarlo. Para los comandos usados en esta publicación, usaremos NPM como nuestro administrador de paquetes.
$ npm install -g truffle
Después de una instalación exitosa, le sugiero que modifique el archivo de configuración de truffle (es decir , truffle-config.js ) de la siguiente manera:
module.exports = { . . . solidityLog: { displayPrefix: ' :', // defaults to "" preventConsoleLogMigration: true, // defaults to false }
¡Ahora estás listo para probarlo! Importe el contrato contract.sol en su código de Solidity como de costumbre. Ahora está listo para usar el comando console.log() como lo haría en JavaScript.
Esto incluye el uso de sustituciones de cadenas como %s y %f .
pragma solidity ^0.8.9; import "truffle/console.sol"; contract BookStore { //... function transfer(address to, uint256 amount) external { console.log("Transferring %s tokens to %s", amount, to); require(balances[msg.sender] >= amount, "Not enough tokens"); balances[msg.sender] -= amount; balances[to] += amount; emit Transfer(amount, to, msg.sender); } }
La función de transferencia anterior muestra console.log en acción. Imagine que una llamada a la función de transferencia falla con el error " No hay suficientes tokens ". La línea console.log, en este caso, mostrará la cantidad de tokens que la llamada está tratando de transferir. Esto le permite al desarrollador ver la dirección y la cantidad de tokens que se transfieren. El mensaje se verá así.
... Transferring 10 tokens to 0x377bbcae5327695b32a1784e0e13bedc8e078c9c
Una forma aún mejor de depurar esto podría ser agregar los balances[msg.sender]
en la declaración de console.log o imprimirlo en una línea separada. De esa forma, el saldo del remitente también es visible en la consola. ¡Tú entiendes!
También puedes dejar registros en test y mainnets; de esta manera, tendrá una buena manera de observar su contrato inteligente. Y vale la pena mencionar que herramientas como Tenderly integrarán la eliminación de registros, lo que puede ser útil al depurar y probar contratos inteligentes en un entorno de producción.
Finalmente, al usar el registro de la consola, es importante seguir todas las buenas reglas de uso que ya conoce, como usar mensajes de registro claros y descriptivos. Esto facilitará la comprensión del resultado y la identificación de cualquier problema que pueda surgir.
Si bien el registro de la consola es una herramienta poderosa para depurar contratos inteligentes, tenga en cuenta que Truffle también ofrece otras herramientas de depuración. Truffle tiene una poderosa herramienta CLI de depuración incorporada que se puede usar para avanzar en la ejecución de un contrato inteligente e inspeccionar el estado de las variables en diferentes puntos de la ejecución. Además, los eventos son una buena manera de registrar mensajes y rastrear el comportamiento de un contrato inteligente.
Dicho esto, vale la pena señalar que usar el depurador para algo tan simple como la salida variable puede ser excesivo. Del mismo modo, el registro de eventos solo funciona cuando la transacción se realiza correctamente, lo que puede ser una limitación en determinadas situaciones.
La conclusión es que la función console.log, en combinación con las otras herramientas de depuración en Truffle, puede brindar una mejor experiencia para los desarrolladores, gracias a su simplicidad y facilidad de uso . Brinda a los desarrolladores la capacidad de registrar mensajes rápida y fácilmente y monitorear el comportamiento de sus contratos inteligentes, mientras que las otras herramientas de depuración se pueden usar para una depuración y resolución de problemas más avanzadas.
La nueva función de registro de la consola de Truffle es una valiosa adición al desarrollo de contratos inteligentes. Es fácil de usar y puede optimizar el proceso de depuración y prueba. La capacidad de registrar mensajes y rastrear el comportamiento de los contratos inteligentes en tiempo real puede reducir las ineficiencias y los dolores de cabeza. Es una gran herramienta para tener en su caja de herramientas.