本文介绍了Solidity中的两种复杂数据类型:结构体(Struct)和映射(Mapping)。结构体用于创建自定义数据类型,类似于面向对象编程中的类,而映射则类似于字典,用于存储键值对。文章通过代码示例详细解释了它们的用法,并结合一个账户管理的智能合约,展示了如何在实际应用中同时使用结构体和映射,最后还简单介绍了storage, memory, calldata。
本文介绍了作者和合作者构建的一款高性能自动化Solidity智能合约Gas优化工具,该工具通过在源代码和中间表示层进行优化,从而有效地节省Gas。该工具提供了命令行界面和Web应用程序两种部署方式,支持结构体打包、存储变量缓存和调用数据优化等功能,旨在帮助开发者编写更高效的Solidity代码,并最大限度地降低智能合约在区块链上的执行成本。
本文介绍了 rollup 的经济学基础知识,在 Arbitrum 上进行一系列压缩 calldata 的实验,从而为缓解 rollup 费用瓶颈提供了一些技术解决方案
本文介绍了如何手动解码以太坊calldata以检测UI欺骗攻击。通过解析交易数据,用户可以验证交易的意图,防止恶意操作。文章详细讲解了ERC-20授权交易的解码过程,并提供了一个Python脚本来自动化calldata分析,最终能够帮助开发者在签名恶意DApp交易之前检测和预防UI欺骗攻击。
本文介绍了如何使用 Foundry 和 Python 模拟以太坊交易,并验证智能合约行为,从而保护用户免受欺骗性钱包界面的攻击。文章详细解释了如何使用 Python 验证交易 calldata,模拟 ERC-20 approve 交易的影响,并通过比较预期和实际 calldata 来检测 UI 欺骗攻击。
通过对 MEVBot 攻击事件进一步分析来理解如何利用 calldata 进行攻击
在Solidity中,引用类型(如structs、arrays和mappings)需要明确标注其存储位置。存储位置决定了数据的生命周期和可访问性。以下分了3种真实场景来介绍。
本文深入探讨了Solidity中的ABI编码机制,详细解释了函数选择器和参数编码的原理,特别是静态类型和动态类型的编码方式,并通过一个实际的调用数据解析示例展示了如何手动解码ABI编码的数据。
本文详细讲解了如何通过ABI smuggling漏洞在DamnVulnerableDefi挑战中绕过权限控制并窃取资金,利用Solidity中的calldata结构缺陷实现攻击。