Solidity 合约中,如何利用事件与日志机制实现类似printf的功能?

2026-05-29 19:334阅读0评论建站教程
  • 内容介绍
  • 文章标签
  • 相关推荐

嘿, 各位Solidity小伙伴们,你们有没有想过为什么我们在写合约时总爱用 console.log 打印日志,却又发现自己被迫跟随区块链的“黑暗规则”——不能像C++那样随便打印?别担心!今天 我就带你们走进事件与日志机制的大世界,用一份“printf”式的幽默手册,让你在合约里也能轻松打印调试信息,醉了...。

1️⃣ 事件:合约里的“幽灵打印机”

说起事件, 我常把它想象成一台古老而神秘的打印机——只要你给它输入正确格式,它就会把信息送到交易回执里让外界得以窥见内部世界。记住事件是只读的,它不会改变状态,只会产生LOG指令。

《纸上谈兵·solidity》第 9 课:Solidity 事件与日志机制 —— 合约世界的“printf”工具

1.1 语法小贴士

event DebugUint;

event DebugAddr;

在函数里调用:

1.2 indexed 的魔法

如果你想让日志更容易被筛选,就给字段加上indexed关键字吧!举个例子:

alert);

2️⃣ 用日志实现 printf 的三步曲 🎬

A.定义通用调试事件:

类型说明
string msg自定义消息内容,如“开始施行” 或 “错误码 404” 等。
阅读全文

嘿, 各位Solidity小伙伴们,你们有没有想过为什么我们在写合约时总爱用 console.log 打印日志,却又发现自己被迫跟随区块链的“黑暗规则”——不能像C++那样随便打印?别担心!今天 我就带你们走进事件与日志机制的大世界,用一份“printf”式的幽默手册,让你在合约里也能轻松打印调试信息,醉了...。

1️⃣ 事件:合约里的“幽灵打印机”

说起事件, 我常把它想象成一台古老而神秘的打印机——只要你给它输入正确格式,它就会把信息送到交易回执里让外界得以窥见内部世界。记住事件是只读的,它不会改变状态,只会产生LOG指令。

《纸上谈兵·solidity》第 9 课:Solidity 事件与日志机制 —— 合约世界的“printf”工具

1.1 语法小贴士

event DebugUint;

event DebugAddr;

在函数里调用:

1.2 indexed 的魔法

如果你想让日志更容易被筛选,就给字段加上indexed关键字吧!举个例子:

alert);

2️⃣ 用日志实现 printf 的三步曲 🎬

A.定义通用调试事件:

类型说明
string msg自定义消息内容,如“开始施行” 或 “错误码 404” 等。
阅读全文