本文详细介绍了ERC20代币标准,它是以太坊上应用最广泛的代币标准之一。文章阐述了ERC20的核心方法和事件,并展示了如何从零开始编写一个简单的ERC20代币合约。此外,还介绍了如何使用OpenZeppelin库来简化ERC20代币的创建,并探讨了常见的扩展合约及其实现方式,如燃烧代币。
状态机模式是一种用于管理智能合约中复杂状态转换的设计模式,通过枚举定义状态,确保状态转换的合法性、操作的顺序性和业务逻辑的清晰性。本文介绍了状态机的基本实现和在投票系统、游戏角色状态、托管交易等复杂场景中的应用,并提供了使用Modifier简化状态检查、绘制状态转换图等最佳实践。
本文深入探讨了以太坊智能合约中处理ETH支付的安全模式与实践。重点介绍了提取模式(Withdrawal Pattern),它通过让用户主动提取资金而非合约主动推送,有效避免了重入攻击等安全问题。此外,还讨论了批量支付、分红合约、支付分割等实用场景,并强调了CEI模式、防重入、检查call返回值等关键安全原则。
ERC1155是一种以太坊代币标准,它允许在一个智能合约中同时管理多种类型的代币,包括同质化代币(FTs)和非同质化代币(NFTs)。ERC1155通过一个中心合约管理多种类型的代币,每种代币都有一个唯一的ID,并且可以通过URI链接访问代币的详细元数据信息。该标准提高了交易效率,降低了交易成本,并为开发者提供了更大的灵活性。
EIP-712定义了结构化数据签名的标准方法,提升了签名数据的可读性和安全性,并实现了链上验证的标准化。它通过引入域分隔符来防止跨链和跨合约的重放攻击,并允许钱包更清晰地展示签名内容,从而改善了用户体验和合约的安全性。与基础签名相比,EIP-712适用于需要签名复杂数据结构并保障用户知情权的场景。
ERC721标准为NFT的发展奠定基础,每个代币都独一无二。本文详细探讨了ERC721标准的机制,包括与ERC20的区别、关键特征(如非同质化、所有权追踪、元数据可选性),以及核心方法(如balanceOf、ownerOf、transferFrom等)和事件(如Transfer、Approval等)。此外,还展示了如何使用OpenZeppelin库实现ERC721代币合约的示例。
本文介绍了Hardhat以太坊开发框架,包括创建和配置项目、编写智能合约、使用Solidity编写/typescript测试、使用console.log调试Solidity代码,以及部署合约和代码开源验证等步骤。Hardhat提供了更快的编译和测试,支持Solidity测试,内置调试器,并提供Hardhat Network用于本地开发,方便开发者进行以太坊智能合约的开发。
Foundry是一个以Solidity为中心的以太坊开发框架,用于构建、测试、调试和部署智能合约。它提供了一整套工具链,包括forge、cast、anvil和chisel,支持快速构建和测试,并拥有强大的测试功能,如作弊码、模糊测试和主网Fork。Foundry是目前Solidity开发中使用广泛的框架。
本文详细介绍了通用可升级代理标准(UUPS)模式,该模式将升级逻辑置于实现合约中,以优化 Gas 消耗。文章对比了UUPS与透明代理的优缺点,并通过示例代码展示了UUPS的实现原理和升级流程。同时,强调了 UUPS 的风险,并介绍了如何使用 OpenZeppelin 的 UUPSUpgradeable 及 Foundry 插件进行安全部署和升级。
本文深入探讨了EVM存储机制,对比了storage、memory、calldata和transient storage等不同存储位置的Gas成本,并提供了变量打包、利用immutable和constant、删除存储变量退Gas、缓存存储变量到内存等实用优化技巧。同时讨论了mapping与array、bytes与string的选择,以及memory和calldata的优化策略,最后强调了优化的...