作者讨论了智能合约开发中编程语言特性的重要性,以期提升安全性和效率。通过回顾OpenZeppelin Contracts的开发经验, 强调了安全抽象和防错设计的重要性,同时指出手写汇编来优化性能,有可能导致安全隐患。最后,提出了一个新EVM语言的构想,旨在结合功能语言的优势,推动编程语言设计的创新
文章介绍了Solidity中的ABI编码和解码,包括abi.encode、abi.decode和abi.encodeWithSignature的使用,并通过实例演示了如何在智能合约中处理函数调用和数据传递。
abi.encode
abi.decode
abi.encodeWithSignature
在一般语境下,OpenZepplin 指代的其实是:OpenZepplin Contract,一组合约开发的可重用包。同时,由于合约升级相对特殊,它还专门提供了用于编写可升级合约的包。
本文详细介绍了Solidity中的数组和字符串数据结构,包括它们的声明、使用方式以及一些重要的概念如calldata和memory。还提供了多个代码示例来帮助理解这些概念。
calldata
memory
本文介绍了在Solidity中使用block.timestamp和block.number来跟踪时间和区块的编程方法,并提供了相关代码示例和最佳实践。
block.timestamp
block.number
本文介绍了如何使用 Ethers.js 库在以太坊区块链上铸造 NFT。文章通过OpenZeppelin库和Ethers.js库,创建Solidity合约、Hardhat 任务、helper,并进行测试,搭建了一个经过充分测试的 NFT 基础设施。此外,还介绍了使用 Pinata 和 IPFS 等工具来简化 NFT 的铸造过程。
本文介绍了智能合约之间的相互调用,并通过代码示例展示了如何实现合约间的通信,解释了 call 函数的使用、ABI编码、以及函数返回值的处理。
call
本文介绍了如何使用 Foundry 设置和部署 NFT 合约到 Sepolia 测试网络,并在 Etherscan 上进行验证。文章详细说明了如何安装 OpenZeppelin、使用 remappings、生成 remappings.txt 文件、设置环境变量以及部署和验证 NFT 合约的过程。
该文章讲述了作者如何通过学习Solidity和开发Solodit工具,从而成为一名优秀的智能合约审计师的故事。Solodit成为了一个汇聚众多审计报告的平台,帮助更多审计师提升技能与效率,推动Web3安全的进步。
本文介绍了区块链开发的学习资源,针对不同水平的开发者推荐了Alchemy University、Road to Web3、CryptoZombies等入门课程,以及Solidity、NFT和Solana等特定领域的进阶课程。 同时还介绍了每个课程的特点、价格和创建者等信息 。
文章讨论了如何在Solidity智能合约中实现ERC20标准的事件记录,强调了事件记录在状态变化时的重要性,并通过代码示例详细展示了如何在ERC20合约中添加Transfer和Approval事件。
本文深入分析了 Uniswap v4 智能合约的核心与外围合约,包括工作流、各个合约的功能及其相互关系。通过介绍核心合约 PoolManager 及各种库合约,以及外围合约 PositionManager 和 V4Router,详细讲解了流动性管理和交易操作的实现原理。
本文详细探讨了跨链安全中的一种重入攻击向量,指出在构建跨链NFT合约时可能面临的安全风险。通过对危险外部调用的分析,作者提出了如何可能利用这一漏洞进行攻击的策略,并提供了针对性的解决方案。
本文介绍了如何构建和遍历Solidity调用图,用于静态分析、漏洞检测和更智能的合约开发。通过示例代码和详细的解释,展示了如何使用Router解析内部函数调用,并提出了在调用图中进行深度优先或广度优先遍历的策略,提高代码分析的准确性,并以Aderyn工具的实现为例,展示了如何应对函数调用解析中可能出现的二义性情况。
本文讨论了2019年在Solidity编译器中发现的一个内存管理漏洞,导致动态数组的长度计算溢出,并可能导致内存损坏。文章深入分析了该漏洞的原理、示例代码及其潜在影响,还探讨了如何避免及检测此类漏洞的方法。最后,作者提到应用形式化方法来提高编译器的正确性和区块链智能合约的安全性。