那些非典型的开销导致经典的软件设计模式在合约编程语言中看起来既低效又奇怪。如果想要识别这些模式并理解他们导致效率变高/低的原因,你必须首先对以太坊虚拟机(即 EVM)有一个基本的了解。
定义事件以及如何使用事件主题哈希和签名来过滤日志,以及关于何时应该使用事件的一些建议。 你知道 检查-事件-交互 模式么? 看看本篇文章
对Solidity 存储、内存和calldata的深入研究
研究Solidity存储引用和智能合约存储布局
深入了解EVM的内存
深入了解Solidity数据位置 - Calldata
探讨 EVM 堆栈机器,以及如何在堆栈中推入和弹出数据
继续深入了解EVM , 本文探究一下智能合约的字节码
深入了解 Solidity 错误第一篇, EVM 中的错误分类。
深入了解 Solidity 错误第二篇, 了解编译器错误。
在运行时错误是最常遇到的情况,你知道 `Error` 与 `Panic` 的细微差别吗? 发生 Panic 错误真的会消耗所有的 gas 么,本文揭晓答案。
在深入理解 Solidity 错误"的第三篇, 探索处理错误,本文将揭晓这问问题的答案:asset 错误会消耗所有 gas 吗? require 提不提供错误字符有什么样的不同?外部调用的错误如何影响当前上下文?如何处理底层调用调用产生的错误?
Solidity 的try/catch 语法和常见的语言中的表现不一样,try { } 块中的代码错误是无法被catch 的,这一点要小心要非常小心。
逆向 EVM - 解析原始Calldata数据
如何调试EVM智能合约(第1篇): 理解汇编
如何调试EVM智能合约 #2 :部署智能合约
通过调试理解EVM #3 :存储布局如何工作?
通过调试理解EVM 第 4 篇,了解 结束/中止执行的5种指令
通过逆向和调试深入EVM 第 5 篇 - EVM如何处理 if/else/for/functions
通过逆向和调试深入EVM #6 - 完整的智能合约布局
通过逆向和调试深入EVM #7 - 与其他智能合约的交互
从EVM 角度探究合约创建与部署
理解 EVM 解构Solidity合约 #1 - 字节码
来自 Openzeppelin 的经典文章。
解构 Solidity 合约 #3:函数包装器
解构 Solidity 合约 #4: 函数体
EVM( ETHEREUM VIRTUAL MACHINE ) :以太坊虚拟机, 是智能合约的执行环境,现在已经超越了以太坊网络, 成为一个链上程序执行的标准。
不仅诞生了很多 EVM 兼容链,如 BNB Chain、Polygon、Gnosis Chain 、Arbitrum(Layer2)、Optimism(Layer2) 等,很多异构的区块链,如FileCoin、Solana、Near、Nervos 等公链也在与各种方式兼容 EVM。
在智能合约领域,以太坊虚拟机以及其算法和数据结构是第一性原理,不管是智能合约开发人员还是安全审计人员,理解 EVM 运行 是进阶高手的必修课。
从 scaffold-eth 开启 Web3 开发之旅