Solidity Gas 优化清单及其原理:存储、内存与操作符

概述 最近发现了一个 非常有意思的 PPT 介绍了大量的 gas 优化技巧,本文为此 PPT 的文字版本,但与 PPT 不同的是,本文会会介绍合约内函数 gas 的计算并尽可能介绍每种优化方案的原理。 ...

August 26, 2024 · 14 min · 6864 words · WongSSH

Cairo 实战入门:可升级合约与跨链信息发送

概述 如果读者阅读过笔者之前的文章就会发现,我在 solidity 中使用了 ERC20 代币 -> 可实升级合约的学习路径。为了保持文章的统一性,我准备在此文中介绍 cairo 的可升级合约编程。 ...

July 29, 2023 · 18 min · 8888 words · WongSSH

深入 ENS 系统

概述 ENS 是一个以太坊上的开放、可拓展的命名系统,也是目前在以太坊中最常用的命名系统。ENS 的功能是将人类较难判读的以太坊地址转化为人类可读的名字,如 vitalik.eth 。 ...

June 26, 2023 · 11 min · 5501 words · WongSSH

Foundry 高级测试: Fuzz、Invariant与形式化证明

概述 本文以较为简单的 WETH 合约为例,介绍在 Foundry 架构中常用的几种较为高级的测试方法,如下: Fuzz Testing 基于属性的单元测试的升级版 Invariant Testing 基于随机数据整体调用的测试 Formal Verification 形式化证明 本文也会给出上述测试手段的 github ci 配置文件。 ...

March 14, 2023 · 24 min · 11773 words · WongSSH

智能合约开发效率工具

概述 随着区块链的发展,智能合约的开发逐渐成为一片新的蓝海。与智能合约发展一同进步的其实还有一系列的智能合约开发工具和安全审计工具,但由于此方面很少有人介绍,导致大量新型工具并不为人所熟知。本文主要介绍智能合约开发和安全审计工具,以智能合约开发和测试为主线,依次介绍涉及以下方面的工具: ...

November 12, 2022 · 8 min · 3601 words · WongSSH

深入解析Safe多签钱包智能合约:Fallback合约

概述 在深入解析Safe多签钱包智能合约:模块中分析FallbackManager模块时,限于篇幅限制且fallback合约自成一体,所以我们没有介绍具体的fallback模块。此篇文章的主要目的是完成这一缺陷,全面介绍fallback合约。 本文涉及的代码主要位于src/handler内,读者可自行查阅此仓库。 合理性分析 此节主要关注于我们为什么需要Fallback合约这一主题,希望可以为读者在后文阅读源代码时起到提纲挈领的作用。 ...

September 22, 2022 · 12 min · 5608 words · WongSSH

深入解析Safe多签钱包智能合约:模块

概述 在上一篇博客中,我们已经讨论了safe合约的代理部署和核心的GnosisSafe合约。在此博客内,我们主要讨论在上一篇文章内没有介绍的safe合约内各个模块的概念和代码。我们会按照各模块在GnosisSafe合约内出现的顺序进行解释。 OwnerManager 在GnosisSafe.sol的setUp函数中,我们使用了此模块中的setupOwners函数。 此模块主要涉及签名者的管理等功能。 ...

September 10, 2022 · 21 min · 10399 words · WongSSH

深入解析Safe多签钱包智能合约:代理部署与核心合约

概述 Safe(或称Gnosis Safe)是目前在以太坊中使用最为广泛的多签钱包。本文主要解析此钱包的逻辑设计和代码编写。 读者可以前往Safe Contracts获得源代码。 ...

August 27, 2022 · 30 min · 14667 words · WongSSH

EVM底层探索:字节码级分析最小化代理标准EIP1167

概述 本文主要介绍最小化代理合约EIP1167的相关内容。为了实现最小化,EIP1167使用了bytecode(字节码)作为主要编码方式,即直接使EVM汇编指令进行编写。本文将在openzeppelin提供的合约基础上,为读者逐个字节码的解析EIP1167,帮助读者理解EVM底层汇编和EIP1167的实现原理。 ...

August 22, 2022 · 13 min · 6238 words · WongSSH

EIP712的扩展使用

概述 本文在上一篇文章介绍的EIP712的基础上进一步讨论了EIP712结构化哈希的进一步应用: Meta-transactions,解决用户gas费用问题 ERC20-Permit Meta-transactions meta-transactions指在交易中包含另一个实际交易。具体流程为用户签署实际交易,将交易提交给区块链运营商,此过程不需要gas费用和与区块链交互。运营商收到用户提交的交易后,由运营商较此交易提交给区块链。此过程实现了的意义在于将用户与区块链交易的gas费转移到运营商身上,有效降低了用户使用区块链的门槛。当然,运营商可以直接与矿池合作降低交易费用。 ...

August 16, 2022 · 17 min · 8221 words · WongSSH