本文是关于智能合约部署生命周期的实用指南。首先介绍部署交易的本质(to = null,init code -> runtime code)以及合约地址的推导方式,然后深入探讨实际生产中常见的模式:CREATE2实现确定性地址,工厂模式和克隆(EIP-1167)实现低成本大规模部署,以及由delegatecall驱动的可升级代理(Transparent/UUPS)。
to = null
delegatecall
本文深入探讨了以太坊节点的不同类型(全节点、存档节点、轻节点)及其对数据访问和调试的影响。重点介绍了eth_call和debug_traceCall这两个重要的RPC方法,分析了它们的功能、使用场景、常见问题以及如何根据实际需求选择合适的工具。此外,还讨论了不同以太坊客户端的差异以及运行自有节点的考虑因素和成本。
eth_call
debug_traceCall
本文介绍了以太坊开发中的一些实用技巧,包括理解和使用事件(logs)、实时流式传输链上活动、无需事件捕获ETH转移以及使用Multicall进行批量调用,旨在帮助开发者更有效地进行以太坊开发和调试。
本文深入探讨了以太坊交易的未来发展方向,包括信标链(Beacon Chain)、EIP-4844 Blob交易、EIP-7702 Set Code交易和EIP-712 Typed Structured Data Signing。
本文详细介绍了以太坊中的交易类型和消息,包括交易(Legacy Transaction、EIP-2930 Access List Transaction和EIP-1559 Dynamic Fee Transaction)和消息(EIP-191 Signed Data)。
本文是EVM内部原理系列文章的第三部分,主要讲解了区块链开发者应该如何利用EVM的debug工具来调试智能合约,包括如何使用Foundry、Hardhat、Tenderly等工具进行交易的追踪和调试,如何理解debug_traceCall,以及如何通过Foundry脚本来调试交易。通过学习EVM的trace,开发者可以更好地理解合约的执行过程,从而更高效地进行bug查找、gas优化和开发流程管理。
本文深入探讨了EVM兼容链上智能合约的Gas优化技术。首先介绍了Gas的基本概念和费用构成,然后详细讲解了预估和测量Gas消耗的各种方法,包括使用Foundry进行离线测试、预执行测量和后执行测量。最后,文章总结了常见的Gas优化模式和高级技巧,旨在帮助开发者编写更高效、更经济的智能合约,提升用户体验并降低网络拥堵。
本文是EVM内部原理系列文章的第二部分,深入探讨了Solidity中的payable、fallback和receive函数,详细解释了calldata如何到达EVM,以及EVM如何解析calldata并分发函数调用。此外,文章还介绍了CALL、DELEGATECALL、STATICCALL和CALLCODE等底层操作码的区别,以及内部调用和外部调用的差异,并深入探讨了ABI编码和Revert机制。
本文是 “每个区块链开发者都应该了解的 EVM 内部原理” 系列的第一篇文章。本文深入探讨了以太坊虚拟机(EVM)的架构和执行环境,包括 Gas 的概念、智能合约的本质,以及对 EVM 的堆栈、内存、存储和 Calldata 进行了详细解释,还提供了从源代码到字节码的示例。