本文深入探讨了Solidity 0.8.19版本中引入的用户定义运算符(UDO)及其与用户定义值类型(UDVT)的结合使用。UDVT允许创建更具描述性的数据类型别名,而UDO则通过using for语句将函数与运算符符号关联,简化了UDVT的算术运算,提高了代码的可读性和可维护性。文章通过代码示例详细解释了UDVT和UDO的定义、使用方式以及使用规则,并探讨了它们在数学库等场景中的应用。
using for
本文介绍了以太坊中的 ERC777 token 标准。ERC777 试图改进 ERC20 的一些缺点,例如增加了 hooks 和 operators 的概念,并利用 ERC1820 注册合约来实现更灵活的功能。尽管 ERC777 在设计上有所创新,但由于其复杂性和潜在的安全隐患,未能获得广泛应用,最终被认为设计过度。
本文分析了 Tornado Cash Governance 被攻击的事件,攻击者利用 CREATE、CREATE2 和 selfdestruct 等 Solidity 特性,通过部署包含 selfdestruct 函数的恶意提案,在提案通过后删除原合约并在相同地址部署恶意合约,从而控制了 Governance 合约,盗取了大量资金,并详细解释了攻击的步骤和技术原理,以及如何利用 CREATE 和 CREATE2 部署相同地址的合约。
Solidity 0.8.20 版本发布,引入了新的操作码 PUSH0。PUSH0 的作用是将常量 0 推送到堆栈上,可以减少合约字节码大小,降低合约部署的 Gas 成本。在以太坊主网使用该操作码时,需要注意其他链可能不支持 PUSH0 操作码,需要选择正确的 EVM 版本。
PUSH0
本文为Solidity开发者提供了一个学习以太坊虚拟机(EVM)的资源列表,文章将学习EVM的过程分为几个级别,从零基础到实际应用,并为每个级别推荐了相关的文章、视频和练习,旨在帮助开发者系统地掌握EVM知识,提高编写智能合约的能力。
本文介绍了Decipher EVM Puzzles游戏,这是一个基于Franco的EVM puzzles的扩展版本,旨在帮助Web3开发者通过解决谜题和CTF挑战来掌握EVM opcodes。该游戏提供不同难度级别和提示,覆盖多种操作码,并推荐使用EVM Codes Playground和ETHERVM's list of Opcodes等工具辅助解谜。文章还提供了EVM和操作码的学习资源链接。
本文介绍了以太坊EVM中gas refund的机制,重点讲解了伦敦分叉前后,由于清空链上存储而返还gas的规则变化。伦敦分叉前,将变量设置为默认值可获得15000 gas的退款,但退款上限为交易消耗gas的一半。伦敦分叉后,退款额降至4800 gas,上限为gas消耗的五分之一。文章还探讨了降低gas退款的原因,包括GasToken的出现和区块大小差异的增加。
本文详细介绍了以太坊虚拟机(EVM),EVM可以理解为是一种隔离环境,专门用于处理智能合约交易,以及确定每个新挖出的区块的以太坊区块链的总体状态。文章从EVM的虚拟机器、状态机器、准图灵完备机器三个角度,由浅入深地介绍了EVM的原理、架构和工作机制,为读者构建了EVM的完整知识体系。
该内容主要介绍了 Decipher Club 社区关于以太坊虚拟机(EVM)的一系列文章和学习资源,包括 EVM 的基础知识、智能合约从 Solidity 代码到字节码的转换过程,以及一个 EVM 谜题游戏,旨在帮助 Solidity 开发者更好地理解 EVM 的工作原理。
该内容是Decipher Club社区的一系列深入研究文章和指南的集合,涵盖链抽象、Solidity ABI编码、以太坊虚拟机(EVM)、智能合约大小限制和以太坊ERC标准等主题,并提供了相应的阅读链接。