本文介绍了Multicall,一个用于优化以太坊应用数据查询效率的链上合约。它通过将多个静态调用打包成一次eth_call,显著减少了RPC请求次数、降低延迟并确保所有查询结果来自同一区块快照,解决了JSON-RPC批量调用无法保证状态一致性的问题。文章提供了一个Go语言的实现示例。
本文深入探讨了以太坊中两个关键的RPC方法 eth_call 和 debug_traceCall,它们都用于模拟交易而不改变链上状态,但服务于不同的调试目的。文章详细解释了它们的工作原理、执行上下文、常见陷阱以及何时选择使用哪个工具,以帮助开发者有效模拟和调试以太坊交易。
eth_call
debug_traceCall
这篇文章介绍了以太坊的传统交易格式(类型0x0),即EIP-2718之前的交易结构。它通过使用Go语言和go-ethereum库,详细演示了如何在Polygon Amoy测试网上创建、签名和广播一个传统以太坊交易,并解释了其中的关键字段和EIP-155兼容性。
EIP-7702 引入了一种新的交易类型,允许 EOA 账户在交易执行期间临时地表现得像智能合约,无需部署或改变长期状态。它通过授权列表和短期的委托存根实现,从而提升用户体验,支持批量交易、交易赞助和权限委托等功能。
本文深入探讨了Solidity高级特性如何映射到EVM的实际行为,详细讲解了payable、receive、fallback函数处理以太币、低级调用类型(如CALL、DELEGATECALL)的区别、内部与外部调用的机制,以及交易回滚的传播原理,帮助开发者理解智能合约的执行流程和错误处理。
payable
receive
fallback
CALL
DELEGATECALL
本文深入探讨了以太坊ABI编码机制,详细解释了Solidity函数调用和自定义结构体数据如何被编码成EVM可处理的十六进制字节。文章通过具体示例,包括函数选择器和参数的编码规则,展示了静态和动态类型数据的处理过程,并总结了ABI编码的核心原理。
本文介绍了智能合约工厂模式,它通过一个智能合约来部署、初始化和跟踪其他合约,实现标准化、可发现性、初始化安全和确定性部署。文章通过一个 Foundry 示例,展示了如何使用工厂合约部署和交互合约,并解释了为什么现代协议几乎都包含工厂模式。
本文介绍了EIP-1167最小代理(Minimal Proxy)合约,它通过部署极小的bytecode stub,将所有调用委托给单个实现合约,从而降低了大量合约实例的部署成本。与普通代理不同,最小代理不可升级,但非常小巧高效,适用于需要大量相同逻辑但独立状态的场景,例如DEX中的流动性交易对。
本文介绍了 UUPS 代理模式,它将升级逻辑从代理合约转移到实现合约中,从而减少了 bytecode 大小、部署成本和复杂性。通过将升级功能放在实现合约中,每个实现都可以定义自己的升级规则。文章还通过 Foundry 演示了 UUPS 代理的部署和升级过程。
本文详细解释了以太坊智能合约的部署过程,包括部署交易的原理、EVM如何确定合约地址,以及如何使用CREATE和CREATE2预先计算合约地址。文章通过示例展示了如何手动计算合约地址,并解释了CREATE2在预先确定合约地址方面的重要作用。