本文详细介绍了如何在以太坊虚拟机(EVM)中直接编写字节码以返回"Hello World"字符串。作者通过解释每个EVM指令的功能,展示了如何在不使用Solidity的情况下创建合约,并且解释了与字节码交互的过程和注意事项。
数组与映射是如何存放在“存储槽”的?
在运行时错误是最常遇到的情况,你知道 Error 与 Panic 的细微差别吗? 发生 Panic 错误真的会消耗所有的 gas 么,本文揭晓答案。
Error
Panic
本文深入探讨了EIP-2535(Diamond标准)在区块链上创建模块化智能合约的原理与实践,介绍了其核心组件和特性,重点强调了智能合约的可升级性和模块化设计。通过一个实际操作示例,展示了如何使用Hardhat创建和部署基于Diamond标准的智能合约。
本文探讨了区块链工程师薪资的现实情况,指出许多教育者对高薪的夸大并不准确,想要获得高薪并没有快速的捷径。真正的高薪源于持续的学习和对技术的深入理解,而不仅仅是掌握一门编程语言。此外,作者还讨论了区块链行业的就业市场及其挑战,强调了对技术的兴趣与自我驱动的重要性。
本文揭示了PRBMath库中mulDivSigned函数的一个设计缺陷,该缺陷会导致在计算有符号数的乘法和除法时出现精度问题,特别是在DeFi应用中可能被利用导致资金损失。Certora团队通过形式化验证工具发现了这个存在于多个PRBMath版本中的问题,并与作者Paul Razvan Berg合作,最终通过修改函数定义为向零取整来临时解决,并计划在未来提供更全面的舍入模式支持。
本文详细介绍了以太坊中的签名机制,包括签名的原理、实现和应用。文章通过代码示例展示了如何在Solidity中验证签名,以及如何在客户端生成签名并调用验证函数。
从本章开始,我们来研究内存布局。
Solidity 是如何使用内存的?
这篇文章详细介绍了Solidity中的结构体(struct)及其用法,包括如何声明、实例化和作为函数参数传递结构体。通过示例代码,作者展示了如何利用结构体提高代码的可读性和效率,并提供了一个现实生活中的用例,如购票系统,帮助开发者理解结构体的实际应用。
在深入理解 Solidity 错误"的第三篇, 探索处理错误,本文将揭晓这问问题的答案:asset 错误会消耗所有 gas 吗? require 提不提供错误字符有什么样的不同?外部调用的错误如何影响当前上下文?如何处理底层调用调用产生的错误?
这篇文章详细介绍了Solidity中的字符串处理,包括其动态大小、UTF-8编码、字符串长度的计算、字符访问及Unicode支持等核心概念。此外,还介绍了在Solidity 0.8.12版本中新增的字符串拼接功能。文章通过代码示例清晰地展示了每个概念,使读者能更好地理解和应用这些知识。
本文详细介绍了如何通过内联汇编更高效地实现 Solidity 中的回滚操作,深入探讨了 mstore 和 mstore8 操作码的使用方式,并通过示例代码展示了如何在汇编中实现无消息回滚、自定义错误回滚以及带有原因字符串的回滚。
mstore
mstore8
Solidity 的try/catch 语法和常见的语言中的表现不一样,try { } 块中的代码错误是无法被catch 的,这一点要小心要非常小心。
本文介绍了成为智能合约审计员的途径和所需技能,阐述了这一领域的潜力和灵活性,强调了相关知识和实践的重要性。作者鼓励有经验的研究者转向智能合约审计,以应对行业需求并提高自身职业价值。