本文深入探讨了Solidity 0.8.19版本中引入的用户定义运算符(UDO)及其与用户定义值类型(UDVT)的结合使用。UDVT允许创建更具描述性的数据类型别名,而UDO则通过using for语句将函数与运算符符号关联,简化了UDVT的算术运算,提高了代码的可读性和可维护性。文章通过代码示例详细解释了UDVT和UDO的定义、使用方式以及使用规则,并探讨了它们在数学库等场景中的应用。
using for
Cyfrin发布了2025年7月的区块链安全和教育新闻通讯,内容涵盖了新的GMX交易课程、职业发展方向、Web3钱包安全课程和资格认证、Solodit更新以及CodeHawks Eagles的成功案例。此外,还包括高风险攻击事件的分析、Solana程序执行的深入探讨、以及关于使用EIP-7702从受损钱包中恢复资产的Bash脚本。
本文深入探讨了Solidity中的可见性修饰符(public, external, internal, private),分析了它们的基础知识、优化技巧(external函数比public函数更节省gas)以及安全注意事项(private并非真正私有)。同时,文章强调了访问控制和输入验证的重要性,并提供了关于函数布局和接口可见性的实用建议。
本文介绍了以太坊对象格式(EOF)及其对EVM的影响。EOF通过EIPs引入了新的验证和操作码,旨在构建更友好的EVM。EOF的特性包括改进的代码结构、静态分析、更大的堆栈空间、代码验证、JUMPDEST分析、新的合约创建方式和改进的CALL指令,从而提高了开发者的体验和合约性能。
本文档介绍了 ERC-1155 多代币标准,该标准由三个接口组成,分别定义为 IERC1155、IERC1155MetadataURI 和 IERC1155Receiver。ERC1155 实现了强制性的 IERC1155 接口和可选扩展 IERC1155MetadataURI。此外,还有多个自定义扩展,包括指定可以暂停所有用户代币转账的地址,以及销毁自有代币。
本文探讨了区块链开发中gas优化的各种策略,通过代码示例,将优化方法归为架构级优化(合约设计模式)、代码级优化(开发者控制)和部署优化三个类别。内容涉及变量类型选择与布局、存储设计、函数设计、逻辑与循环优化、事件与错误处理、工具与测试、以及汇编层面的优化技巧,旨在降低gas消耗,提高合约执行效率和用户体验。
本文深入探讨了Solidity中payable关键字的奥秘。通常payable关键字用于允许函数接收以太币。但一个有趣的现象是,给函数添加payable关键字实际上可以减少Gas消耗。这是因为非payable函数需要额外的opcode来检查是否接收了以太币,而payable函数则不需要,从而减少了Gas消耗。作者建议,gas优化重要,但不要为了节省少量gas而牺牲函数的本意。
本文介绍了智能合约bytecode大小限制的重要性,以及超过限制可能导致的DOS攻击。EIP-170将以太坊智能合约bytecode大小限制设置为24.576 KB。文章列举了多种优化bytecode大小的方法,如避免代码冗余、使用库、采用ERC-2535等,并推荐了hardhat-contract-sizer等工具来监控合约大小。
本文档提供了一份详细的指南,旨在帮助用户在Mainnet上验证proof verifier智能合约(elderberry-fork.8)的部署。主要内容包括:准备工作站环境、安装和配置circom、编译生成verifier智能合约、编译合约、下载已部署合约的字节码,并最终比对两者是否一致,以验证部署的正确性。
本文为Solidity开发者提供了一个学习以太坊虚拟机(EVM)的资源列表,文章将学习EVM的过程分为几个级别,从零基础到实际应用,并为每个级别推荐了相关的文章、视频和练习,旨在帮助开发者系统地掌握EVM知识,提高编写智能合约的能力。
本文档介绍了OpenZeppelin Contracts库中与ERC20代币标准相关的接口、合约和实用程序。核心合约实现了EIP中指定的行为,并提供了一系列自定义扩展,例如无gas token批准、销毁token、限制token供应、暂停token转移等。此外,还包括了与ERC20合约交互的多种实用程序。
Solidity 0.8.20 版本发布,引入了新的操作码 PUSH0。PUSH0 的作用是将常量 0 推送到堆栈上,可以减少合约字节码大小,降低合约部署的 Gas 成本。在以太坊主网使用该操作码时,需要注意其他链可能不支持 PUSH0 操作码,需要选择正确的 EVM 版本。
PUSH0
本文档介绍了 OpenZeppelin Contracts 库中与 ERC20 代币标准相关的接口、合约和实用程序。
本文介绍了ERC721标准,用于表示非同质化代币的所有权,每个代币都是唯一的。与ERC20相比,ERC721更为复杂,具有多个可选扩展。文章通过一个游戏道具的例子,展示了如何使用OpenZeppelin Contracts构建ERC721代币合约,并介绍了tokenURI中元数据的JSON格式。
tokenURI
Solidity 开发基础: 使用Remix、数据类型(整型、地址、合约、数组、结构体、映射)介绍;函数修改器、事件、错误处理、库的使用。