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 部分找到过去的剧集。

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

726

社区成员

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

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