本文详细介绍了 Solidity 中的算术运算,包括加法、减法、乘法和除法等基本操作,并阐述了 Solidity 不支持浮点数的原因以及溢出和下溢的处理方式。此外,文章还介绍了如何使用未检查块来允许这些操作,适合希望深入理解 Solidity 算术运算的开发者。
此文详细介绍了 Uniswap v3 的智能合约,包括核心合约 UniswapV3Factory 和 UniswapV3Pool 的实现与功能,重点讲解了流动性管理、交易对创建、代币交换等操作的实现原理和代码示例,涵盖了预言机的使用及其扩展等技术细节,具有很强的实用性和参考价值。
深入了解 Solidity 错误第一篇, EVM 中的错误分类。
在这最后一节,我们将看一些 Yul 中相对较少使用的指令。
本文深入探讨了Uniswap v2智能合约的架构和关键功能,特别是core和periphery合约的设计细节以及方法实现。重点分析了流动性添加、移除和代币兑换等操作的核心代码,这为理解Uniswap v2的工作原理提供了全面的视角。
本文介绍了Solidity智能合约的概念、工作原理及其属性,详细讨论了Solidity的语法和数据类型,以帮助读者了解如何开始与Solidity智能合约进行交互。
Slang v1是一套为以太坊开发者提供的Solidity代码分析和工具的模块化编译器API。它能够支持80多种版本的Solidity,并提供高效的错误容忍解析器和符号追踪分析,旨在简化开发工具的构建。Slang的独特之处在于,它不仅是编译器,而是为开发者工具打造的API,极大提高了Soliditiy工具的开发效率。
本文详细介绍了 Uniswap V3 中 Oracle 合约的实现与作用,包含预言机观测点的结构、相关方法的实现及其逻辑流程,例如如何初始化、扩容观测点数组、写入观测点等。同时通过代码示例深入解析了如二分查找、观察单个时间的预言机数据等核心功能,具备一定的技术深度。
如何通过构建高质量的开发工具和运行时观察机制,来解决以太坊特有的挑战,如代码不可变性和计算资源稀缺性。探讨了如何通过新的运行时库EDR和Solidity工具编译器slang,以提升开发者体验并促进生态系统的创新与增长。
这篇文章通过一个实际案例研究了如何通过重构优化 Solidity 代码来实现气体节省,展示了在一个杠杆收益农场协议 Yieldoor 中,通过改进核心函数 Leverager::liquidatePosition 实现了 15.43% 的气体节约。作者详细描述了测量Gas成本的方法和重构过程,包括减少冗余存储读取、使用结构体缓存、以及启用优化器以提高代码效率。
Leverager::liquidatePosition
使用好 NatSpec 注释规范,可以帮助开发者为智能合约创建更有效的文档。
代码示例
本文详细介绍了如何在Solidity中实现和测试智能合约的不变性,通过定义有效状态、状态转移和变量转移等属性,并使用Echidna、Medusa和Foundry等工具进行模糊测试。文章分为明确的部分,讲解了不变性质的代码实现过程,并提供了丰富的示例和解释,适合对Solidity和智能合约分析有一定了解的开发者阅读。
本文为初学者提供了创建和部署Hello World智能合约的详细教程,涵盖了所需工具、初始化项目、编写合约、配置和部署合约等步骤,帮助读者了解如何在Ropsten测试网上进行智能合约的交互与部署。
本文探讨了在Solidity智能合约中缺失或不当输入验证所可能导致的安全漏洞,强调了适当输入验证的重要性,以及如何通过编写安全代码来降低风险。文章详细介绍了编译时和运行时的输入验证,影响与案例分析,提供最佳实践指导,帮助开发者提高智能合约的安全性。