Engineering Notes

孟斌的小站

技术博客与学习记录

共 608 篇文章 标签与分类索引已启用

《纸上谈兵·solidity》第 3 课:事件(Event)机制与链上日志——不是 print,是广播!

本课目标

  • 理解事件(event)的作用
  • 掌握事件的声明、触发和监听方法
  • 理解事件与交易日志(Transaction Logs)的关系
  • 明确事件和 console.log() 的区别
  • 学会在前端或脚本中监听链上事件

一、事件是什么?

在 Solidity 中,事件(event)不是控制台输出,也不是日志记录函数,而是链上广播机制

继续阅读

《纸上谈兵·solidity》第 1 课:部署你的第一个 Solidity 合约

本节目标

  • 创建一个最小的 Solidity 合约
  • 使用 Foundry 或 Hardhat 在本地部署它
  • 调用链上函数,确认部署成功

前置条件

  • 推荐已经完成 第 0 课,搭建好开发环境
  • 已安装:
    • Node.js(用于 Hardhat)
    • 或 Foundry(用于 forge
    • 或使用 Remix(可选 Web 环境)

实操方案一:使用 Foundry 部署 HelloWorld 合约

1. 创建项目

$ 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 合约中并不需要,所有需要将这些文件删除。

继续阅读

go slice使用

切片是Go语言中最常用的数据结构之一,具有灵活、轻量的特点。本文将介绍切片的定义、底层原理、常用操作、性能优化技巧,并配套示例代码。

go
继续阅读

使用 golang 在图片上绘制文字

在图像处理中,文字渲染是赋予图片信息价值的关键技术。github.com/golang/freetype 作为Go语言中最强大的开源字体渲染库之一,能高效实现文字与图像的完美融合。本文将深入探索其使用技巧、底层原理,并通过实战案例展示其灵活性。

go
继续阅读

chromedp简介

引言:为什么选择 chromedp?

在现代 Web 开发中,浏览器自动化已成为提升效率的关键技术。对于 Go 开发者而言,chromedp 是一个强大的工具,它通过 Chrome DevTools 协议直接控制 Chrome/Chromium 浏览器,无需额外依赖如 Selenium 或 WebDriver。

go
继续阅读

Go 图形库: github.com/fogleman/gg

简介:什么是 gg

gg 是由 Fogleman 开发的一个用 Go 编写的 2D 图形绘制库,灵感来源于 Python 的 Cairo 和 Processing 项目。gg 旨在提供简洁、直观的 API,以实现图像绘制、文本渲染、图形组合等操作,适用于图像处理、数据可视化、图像合成等多种用途。

go
继续阅读

YAML 多行字符串处理

YAML 因其简洁性和可读性,成为配置文件、数据序列化的热门选择。当需要处理包含换行符的长字符串(如段落文本、代码片段、日志信息等)时,YAML 提供了两种强大的标量块样式:字面块 (|)折叠块 (>)。它们允许你以更自然、易读的方式在 YAML 文件中编写多行文本。

继续阅读

对比 AES-GCM 和 3DES

在对称加密算法中,AES-GCM 和 3DES 是两种综合性能和历史都算有代表性的算法。本文将从安全性、性能、应用场景等综合综吁解析,全面对比这两种对称加密算法。

继续阅读