本课目标
- 理解事件(
event)的作用 - 掌握事件的声明、触发和监听方法
- 理解事件与交易日志(Transaction Logs)的关系
- 明确事件和
console.log()的区别 - 学会在前端或脚本中监听链上事件
一、事件是什么?
在 Solidity 中,事件(event)不是控制台输出,也不是日志记录函数,而是链上广播机制。
技术博客与学习记录
event)的作用console.log() 的区别在 Solidity 中,事件(event)不是控制台输出,也不是日志记录函数,而是链上广播机制。
在上一课中,我们已经完成了一个最简单的合约部署流程。这一课我们将重点学习与合约交互,包括如何调用函数、读取状态和修改变量。
forge)$ forge init hello-world
$ cd hello-world && tree -L 1
.
├── foundry.toml # 项目的配置入口
├── lib/ # 依赖库目录,用于存放外部依赖(比如 openzeppelin-contracts)
├── README.md # 项目说明文档
├── script/ # 脚本目录,部署或脚本自动化代码的位置
├── src/ # 主合约目录,所有生产环境要部署的合约都应该放在这里
└── test/ # 测试目录,所有测试合约放在这里
使用forge init 创建的项目中在 src、script和test目录下有项目的示例文件,在我们的 HelloWorld 合约中并不需要,所有需要将这些文件删除。
写 Solidity 合约 ≠ 打开浏览器写点 JS。它更像嵌入式开发,要“部署到虚拟硬件”(即 EVM)中运行。你需要一个能编译、部署、调试、测试的本地环境。
切片是Go语言中最常用的数据结构之一,具有灵活、轻量的特点。本文将介绍切片的定义、底层原理、常用操作、性能优化技巧,并配套示例代码。
在图像处理中,文字渲染是赋予图片信息价值的关键技术。github.com/golang/freetype 作为Go语言中最强大的开源字体渲染库之一,能高效实现文字与图像的完美融合。本文将深入探索其使用技巧、底层原理,并通过实战案例展示其灵活性。
在现代 Web 开发中,浏览器自动化已成为提升效率的关键技术。对于 Go 开发者而言,chromedp 是一个强大的工具,它通过 Chrome DevTools 协议直接控制 Chrome/Chromium 浏览器,无需额外依赖如 Selenium 或 WebDriver。
gggg 是由 Fogleman 开发的一个用 Go 编写的 2D 图形绘制库,灵感来源于 Python 的 Cairo 和 Processing 项目。gg 旨在提供简洁、直观的 API,以实现图像绘制、文本渲染、图形组合等操作,适用于图像处理、数据可视化、图像合成等多种用途。
YAML 因其简洁性和可读性,成为配置文件、数据序列化的热门选择。当需要处理包含换行符的长字符串(如段落文本、代码片段、日志信息等)时,YAML 提供了两种强大的标量块样式:字面块 (|) 和 折叠块 (>)。它们允许你以更自然、易读的方式在 YAML 文件中编写多行文本。
在对称加密算法中,AES-GCM 和 3DES 是两种综合性能和历史都算有代表性的算法。本文将从安全性、性能、应用场景等综合综吁解析,全面对比这两种对称加密算法。