本文介绍了如何使用Solidity编写一个简单的智能合约,该合约能够在以太坊区块链上存储和检索数据。文章通过一个SimpleStorage合约的例子,讲解了状态变量的声明、set和get函数的编写,以及如何在Remix IDE中部署和交互该合约。
SimpleStorage
set
get
本文介绍了Solidity中的变量(包括状态变量、局部变量和全局变量)、数据类型(如uint、bool、address、string等)以及函数的概念和常用修饰符(public、private、view、pure等)。并通过一个简单的MyProfile合约示例,演示了如何存储和更新名称,以及如何返回当前名称。文章还提供了一个小挑战,鼓励读者创建一个新的智能合约。
Pump.fun 创新性地使用连接曲线机制来解决流动性问题, 本文带领大家实现一个 pump.fun
本文探讨了Web3开发中常见的智能合约漏洞,并提供了防范措施。文章详细分析了重入攻击、数据溢出和下溢,以及价格预言机操纵这三种经典漏洞的原理、攻击方式和修复方法。此外,文章还介绍了Chainlink等工具在降低预言机操纵风险方面的应用,强调了安全第一的开发理念。
本文介绍了Rust中的std::mem::take函数,它允许高效地从可变引用中取出值,并用默认值替换。文章通过多个示例展示了std::mem::take在处理Vec、String、自定义结构体以及状态管理等场景中的应用,强调了其避免不必要的克隆和堆分配的优势。同时对比了未使用take时的替代方案,总结了std::mem::take的优点,并提供了一些有用的资源链接。
std::mem::take
Vec
String
take
本文深入分析了ERC-4626 Vaults中存在的通胀攻击漏洞,攻击者可以通过极少量初始存款和后续的“捐赠”操作,操纵Vault的份额计算,从而窃取后续存款人的资产。文章详细解释了攻击原理、步骤,并通过实例进行了说明,同时探讨了针对此漏洞的多种防御措施,例如使用ERC4626 Router、内部跟踪总资产、创建“死亡份额”以及在初始化时注入初始资金等。
本文介绍了星际文件系统(IPFS)的基本概念、适用场景和不适用场景。IPFS 适合存储公共、不可变的数据,如 NFT、证书和智能合约元数据。对于私有或敏感数据,应先加密再上传至 IPFS,或采用混合方案,利用后端处理访问控制和密钥管理。
本文总结了Solidity智能合约开发中常见的五个陷阱,包括存储、内存和calldata的区别,重入攻击,默认public的可见性,使用tx.origin进行授权的风险,以及无限循环/高Gas成本问题。针对每个问题,文章都给出了具体的代码示例和修复方案,旨在帮助开发者构建更安全、更智能的智能合约。
本文介绍了Instance Registry Pattern,该模式使用中心化的智能合约来管理其他已部署合约的地址。通过在注册表中注册合约,可以动态查找依赖项,更新合约地址,并实现更清晰的架构和更安全的访问。
本文深入解析了 Uniswap V2 协议的核心机制,包括流动性提供、token 交换以及闪电贷的原理与实现。文章详细阐述了交易公式、价格计算方法,以及闪电贷的实现方式。此外,还解释了 AMM 中常见的概念,如滑点、价格影响和无常损失,并提供了相应的计算公式和示例。