Foundry 高级测试: Fuzz、Invariant与形式化证明
概述 本文以较为简单的 WETH 合约为例,介绍在 Foundry 架构中常用的几种较为高级的测试方法,如下: Fuzz Testing 基于属性的单元测试的升级版 Invariant Testing 基于随机数据整体调用的测试 Formal Verification 形式化证明 本文也会给出上述测试手段的 github ci 配置文件。 ...
概述 本文以较为简单的 WETH 合约为例,介绍在 Foundry 架构中常用的几种较为高级的测试方法,如下: Fuzz Testing 基于属性的单元测试的升级版 Invariant Testing 基于随机数据整体调用的测试 Formal Verification 形式化证明 本文也会给出上述测试手段的 github ci 配置文件。 ...
问题 如果读者熟悉我,应该会发现我经常使用 VSCode 作为主力编辑器,但随着我安装的 VSCode 的插件逐渐增加,我发现对于部分较小的任务使用 VSCode 过于笨重,比如简单的 Markdown 文件编辑工作。 ...
声明,本文译自 pandas with hundreds of millions of rows。 如果您的英语水平较好,可以阅读原文。为了译文更加流畅,译者补充了部分内容。 问题 我们希望获得国内航班平均延误最长的 5 个美国机场。 ...
概述 在之前的两篇文章中,我们讨论了对以太坊常规数据的导入和分析。文章链接如下: Clickhouse 以太坊分析:基础交易数据清洗 Clickhouse 以太坊分析:交易日志分析 如果您未阅读过以上文章并不影响您继续阅读本篇文章,本文内所有数据集均提供下载链接。 ...
概述 在上一篇中,我们介绍了如何使用 Clickhouse 进行基础的信息提取,这些信息往往依赖于以太坊底层机制,我们只能获得如 ETH 转账、 gas 等信息,这些信息并没有涵盖以太坊中最重要的智能合约的相关数据。这使我们无法获得 ERC-20 代币转账或 NFT 转移等数据。 ...
概述 本文主要介绍标准NFT实现的一个变体,即ERC721A合约实现的相关细节。ERC721A是由著名NFT系列Azuki提出,该系列NFT是著名的蓝筹NFT。本文主要聚焦于Azuki提出的ERC721A合约的代码细节分析。 与传统的ERC721实现相比,ERC721A在批量铸造(batch mint)方面具有显著的gas优势,这得益于ERC721A的惰性初始化方面的设计。关于ERC721A与普通ERC721实现的对比,我们将会在下文展开说明。 ...
概述 笔者最近遇到了许多关于数据分析的文章,大部分都使用了 Dune 等 SaaS 工具,这些工具往往提供了清洗后的区块链数据和数据库分析工具。对于大部分数据分析师而言,这些工具可以应对一系列复杂的数据分析问题,而且免去了搭建数据处理平台的苦恼。 ...
概述 由于最近笔者正在注册域名且希望域名可以长时间使用,所以我特别注意续费价格比较低的域名。 在本文的开始,我们给出最终结论以方便读者: 来自porkbun的.stream 和 .cyou 域名,域名注册费为 2.56 美元和 2.04 美元,续费费用为 4.59 美元和 4.61 美元。可使用优惠码,减免 1 美元。 ...
概述 本文主要介绍AAVE V3合约中的取款withdraw函数。在阅读本文前,请读者确保已经阅读过以下文章: AAVE交互指南,本文将大量使用此文中给出的各种数学计算公式 深入解析AAVE智能合约:存款,此篇文章内给出的部分函数和大部分数据结构在本文内页有所使用,重复部分在本文内不再解释 读者也可选读深入解析AAVE智能合约:计算和利率,此文介绍了数学计算底层实现逻辑,与代码逻辑关系不大,读者可选读此文。 本文可认为是对深入解析AAVE智能合约:存款的进一步补充,由于取款逻辑较为简单,所以此文的关键在于进一步深挖某些常用函数。这些函数在《存款》一文中虽有提及但未深入探讨的函数,如updateInterestRates等。 代码分析 在src/protocol/pool/Pool.sol合约内,我们可以找到如下函数: ...
概述 本文主要讨论AAVE V3中的数学计算模块,该模块位于src/protocol/libraries/math文件夹内,基础合约为WadRayMath。 ...