瓷家
Foundry 是以太坊生态中最流行的开发工具之一,其内置的 Cheatcodes 提供了一种独特的方式,让开发者能够在测试环境中模拟各种链上场景、操控状态,甚至超越常规 EVM 限制。这些“作弊码”不仅简化了测试用例的编写,还能帮助开发者更深入地理解智能合约的行为。
🎆此专栏知识涵盖以太坊基本知识、solidity基本知识、以太坊核心项目,为以太坊编程初学者提供一个简洁、快速的入门教程。
⭐️专栏特点
本系列文章的目标是为 DeFi 开发者和审计人员提供对现代 DeFi 实现的全面回顾,包括所使用的算法、关键数据结构和函数。与其他资源不同,我们将不深入探讨协议的经济和金融方面,这些内容可以通过项目文档进行研究。相反,我们将专注于重要的代码段并进行详细讨论。
代理模式可能是学习 Solidity 开发中最令人困惑的方面之一,因为在其他软件开发领域几乎没有类似的类比。进一步复杂化的问题是——尽管从概念上讲,delegatecall 是容易理解的——完全掌握其细微差别需要对 EVM(以太坊虚拟机)和 Solidity 编译器的工作原理有一定的背景知识。这些细微差别并不是简单的“你知道吗”的琐事,而是对智能合约的运行方式有重要影响。此外,代理模式的标准仍在发展中——截至撰写本文时,ERC-7201 到现在还不到一年的时间。
任何合格的 Solidity 开发者或审计员,都应该对 delegatecall 及其所依赖的代理模式有全面的理解。代理模式并不简单,一个错误就可能破坏可升级性,或者更糟,导致灾难性错误。
本书旨在帮助这样的读者高效且全面地掌握这一主题,同时深入探讨在其他文献中省略或忽视的细节。与此同时,我们力求范围明确;本书不是关于 EVM 的完整课程——我们仅讨论与正确理解 delegatecall 及现有模式设计相关的部分。
在这系列文章中,我们将深入探讨 Solidity 的内联汇编(Yul)。你可能会问:“我学会 Solidity 不就能写大部分合约了吗?为什么还需要学习内联汇编?”的确,大部分合约的编写完全可以通过 Solidity 完成。但内联汇编是 Solidity 的一个重要补充,它让你更深入地理解底层操作和合约优化。
起初,我也曾对内联汇编感到困惑,尽管我曾尝试过,但很快就忘记了。中文资料少且零散,这使得学习内联汇编变得更加困难。后来,找到了 Jeffrey Scholz 较为系统的讲解 Yul 的课程,此系列文章为我当时的学习笔记整理而来。学习 Yul 让我对存储、内存、栈、合约调用以及 ABI 编码有了更深入的理解。
即使你未来可能不会直接编写内联汇编代码,但掌握这些知识对编写更高效的 Solidity 合约是非常有帮助的。希望这系列文章能帮助你更好地理解内联汇编的基础及其在合约中的应用。
什么是 Web3?
Web3,或称为第三代互联网,是基于区块链技术的去中心化互联网架构。它通过智能合约和分布式账本技术,旨在解决 Web2 中的中心化问题,为用户带来更高的安全性、透明性和控制权。
Web1、Web2 与 Web3 的对比
Web3 的核心技术
Web3 的关键特性
Web3 的应用场景
Web3 的挑战和未来
尽管 Web3 带来了许多创新和优势,但仍面临一些挑战,如:
未来,随着技术的不断发展和成熟,Web3 有望成为互联网的主流架构,实现更高的安全性、隐私性和去中心化,改变我们的生活和工作方式。
欢迎大家订阅和关注我们的 Web3 专栏,了解更多关于去中心化互联网的前沿知识和最新动态!
区块链技术的兴起正在重塑着多个行业,而智能合约是构建分布式应用的核心基石。Solidity作为以太坊生态中主流的智能合约编程语言,其重要性不言而喻。
本专栏将全面分享Solidity编程的各种知识和技巧,以期帮助开发者们更高效、更安全地编写智能合约。
Openzeppelin是一个平台,它具有可用来编写、部署和管理去中心化应用程序的工具。 Openzeppelin也是一款开源工具,它通过提供的产品来提供可靠性和安全性。
本专栏将从Foundry工程化的角度详细解读Openzeppelin中的各合约库源码逻辑及对应单元测试与使用方式。
依赖版本说明
[openzeppelin]:v4.8.3,[forge-std]:v1.5.6
样例代码repo:https://github.com/RevelationOfTuring/foundry-openzeppelin-contracts