所有以太坊开发者都清楚以太坊世界的一条铁律:合约一旦发布就无法修改。因此,对于合约的发布基本上都采用一种慎之又慎的态度,期望在发布前可以做到尽善尽美,力争合约能正常运行一万年。可是,智者千虑必有失,合约发布百分百不出问题几乎是不可能任务。
本文探讨以下问题:哪种智能合约语言更有优势,Solidity、Vyper、Huff 和 Yul ?最近,关于哪种是“最好的”智能合约语言存在很多争论,当然了,每一种语言都有适用的场景。这篇文章是为了最根本的问题:我应该使用哪一种智能合约语言?
本文详细介绍了Solidity中两种调用合约的方法:通过合约接口的高级调用和使用call方法的低级调用,解释了为什么低级调用不会回滚而高级调用可能会回滚,并对比了这两种方法在调用空地址时的不同行为。
call
我们应当遵循的那些 Solidity 编码规范
文章介绍了如何通过创建子合约来测试Solidity中的内部函数,并解释为什么不应将函数改为public或virtual。同时还提到了无法测试private函数的原因,并提供了相关代码示例。
本文介绍了以太坊虚拟机(EVM)及其核心组件,包括虚拟机、智能合约、操作码和 Gas。EVM 是以太坊网络的核心,它允许开发者创建智能合约,实现各种应用,如代币生成和交易。文章还探讨了 EVM 的使用案例,例如 ERC-20 和 ERC-721 代币,以及去中心化交易所。
编写我们的第一个合约。
本文详细介绍了如何使用OpenZeppelin标准创建和部署ERC-721(NFT)代币,包括NFT的基本概念、ERC-721标准的功能和事件、NFT的应用场景,以及通过IPFS存储NFT元数据和图像的具体步骤。
本文介绍了以太坊智能合约中的字节码、ABI以及如何将字节码反编译为可读的Solidity代码。
文章介绍了突变测试的概念,即通过故意在代码中引入错误来检查测试套件的质量。文章详细举例说明了突变测试的应用,包括如何在Solidity代码中实施,并介绍了自动突变测试工具及其可能的结果。此外,还讨论了突变测试的重要性和局限性,并推荐了一些相关的学习资源。
文章提供了学习Solidity后的下一步实践建议,列出了10个从易到难的项目,帮助开发者通过实践提升技能,并强调了编写单元测试和关注gas成本的重要性。
本文介绍了变异测试在自动化验证中的应用,重点介绍了一种名为Gambit的开源变异生成器,用于针对Solidity语言进行变异,并与Certora Prover集成以验证智能合约的规范。通过生成故障版本程序,Gambit能够评估现有测试套件的有效性,并帮助识别和改进潜在的规范缺陷,从而提高智能合约的安全性和可靠性。
本文介绍了以太坊智能合约的安全最佳实践,包括进行智能合约审计、测试代码、同行代码审查、降低软件复杂性、实施故障保护以及设计安全访问控制机制。此外,还介绍了四种智能合约安全工具,帮助开发者保护智能合约免受漏洞利用。
在 Solidity 中时间复杂度
本文介绍了智能合约的应用二进制接口(ABI),它使得智能合约能够与外部应用和其他智能合约进行通信和交互。ABI 充当函数选择器的角色,定义了可以调用智能合约执行的特定方法,并通过 ABI 编码将信息转换为 EVM 能够理解的格式。文章还讲解了如何生成和使用 ABI,以及 ABI 在智能合约开发中的重要性。