Truffle 现在支持 Solidity 智能合约中 的console.log

Consensys管理小助手 2023-04-12 15:22:04

 如果您在 Solidity 之前使用的是流行的编程语言 JavaScript,那么您有可能会在调试您的 Solidity 智能合约时遇到困难。之前您可能在您的代码中遇到了一些错误,一个简单的 console.log() 就可以解决,但由于 Solidity 没有内置的方法,现在您不得不寻找其他替代方法来修复这个错误。

为了解决 Ganache 用户的这个问题,我们发布了 console.sol 库,并更新了Ganache,使其能够解析并自动记录对 console.sol的 调用,以便像 JavaScript 的 console.log 一样实现标准化输出。

要在开发和测试期间将 Ganache 的 console.sol 与 Truffle 一起使用,你必须启动一个独立的 Ganache 实例并连接 Truffle。这也意味着你的智能合约的日志输出将被发送到 Ganache 终端。

由于 Truffle 有自己的内置 Ganache 实例,您可以在运行 truffle develop 时轻松访问它。我们决定更进一步,直接在 Truffle 中实现 Ganache 对 console.log 的支持。

您不再需要手动安装任何软件包或运行一个单独的 Ganache 实例来获得日志功能。日志输出也会被发送到 Truffle 终端。

安装

要遵循本文的内容,您需要具备以下条件:

Node.js

Windows, Linux, 或 macOSIt 

建议您使用 Node 版本管理器下载 Node.js,以避免使用 sudo 下载 Truffle 造成的权限错误。按照这里的说明,为您的操作系统下载一个 Node 版本管理器。

在安装了 Node.js 后,您可以通过先全局卸载 Truffle,然后像这样安装最新版本来进行升级。

npmuninstall-gtruffle

npminstall-gtruffle

只有当您的机器上没有安装早先版本的 Truffle 时才运行 npm install -g truffle

配置

有两个配置选项可以用来调整 console.log 功能的行为,这两个选项都可以在 truffle 配置文件中设置,即 truffle-config.js。它们是:

1. solidityLog.displayPrefix: 这个选项设置了每个 console.log 行的前缀。默认是""。如果您想将 console.log 输出与额外的冗长文本输出区分开来,这是一个有用的选项。

2. solidityLog.preventConsoleLogMigration: 这个选项是一个安全措施,防止意外地将使用 console.log 的合约迁移到 MAINNET。它在默认情况下被设置为 false,所以你必须手动将其设置为 true。

使用方法

要在您的 Solidity 合约中使用 console.log,您需要导入 truffle/console.sol 库,并按照下面的代码示例来使用它。请注意,当您运行 truffle test或 truffle develop 时,这些日志将出现在您的终端。/

SampleContract 的迁移文件:

 现在,如果您运行 Truffle develop ,然后再运行 migrate,您会看到在 truffle develop 控制台中打印出以下内容:

 这也适用于当您使用 truffle test命令运行 Truffle 测试用例时,智能合约代码中的 console.log 语句的输出将在您的终端上与测试结果一起显示。

如您所见,用法与 Node.js 的 console.log 方法非常相似,它返回一个格式化的字符串,并使用第一个参数作为类似 printf 的格式字符串,其中可以包含零个或多个格式指定符。

每个指定符都被替换成相应参数的转换值。一些支持的指定符包括: 

  • %s 代表字符串

  • %d 代表数字

  • %j 代表JSON,还有更多,详见 Nodejs 的 util.format() 文档。

结论

在 Truffle,我们一直致力于通过创建开发者工具、资源和教育材料,来改善和简化 Web3 生态系统中应用程序开发者的用户体验。

要了解有关我们的开发者工具套件的更多信息,请访问 Truffle 官方网站。如果您有问题,请随时在Truffle Github Discussions上展开讨论。

我们还每周举行一次直播会议:Web3 Unleashed,在那里我们进行现场编码和构建,采访来自 web3 的领导者,并讨论生态系统的重要发展。请关注我们的Twitter,了解下一次会议的最新动态。

如果您更喜欢书面材料,您也可以在 Truffle Youtube 频道和我们网站的 unleashed 部分找到过去的剧集。

...全文
2085 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

725

社区成员

发帖
与我相关
我的任务
社区描述
ConsenSys是一家领先的以太坊和去中心化协议软件公司,我们的产品套件由Infura、Quorum、Codefi、MetaMask、Truffle、Diligence 和我们的NFT 平台组成。
区块链 企业社区
社区管理员
  • csdnsqst0035
  • Ashley0001
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧