智能合约的 ABI(应用程序二进制接口)用于定义与以太坊智能合约交互的标准方法。本文详细介绍了 ABI 的构成,如何生成和使用 ABI,包括具体的示例代码,帮助开发者理解如何与智能合约进行有效的交互。
Solidity 中很多Hash函数, 如:keccak256 等需要bytes作为一个参数,这个时候有时需要把uint转化为bytes 。
这篇文章介绍了Smart Contract Fiesta,一个开放源代码的高质量数据集,包含超过1.75亿行以太坊智能合约源代码,涵盖约15万独特合约。该数据集旨在支持区块链社区的研究与开发,并促进智能合约的安全性与工具开发。
本文探索了使用可迭代映射来实现排序列表。
数组与映射是如何存放在“存储槽”的?
在运行时错误是最常遇到的情况,你知道 Error 与 Panic 的细微差别吗? 发生 Panic 错误真的会消耗所有的 gas 么,本文揭晓答案。
Error
Panic
本文探讨了区块链工程师薪资的现实情况,指出许多教育者对高薪的夸大并不准确,想要获得高薪并没有快速的捷径。真正的高薪源于持续的学习和对技术的深入理解,而不仅仅是掌握一门编程语言。此外,作者还讨论了区块链行业的就业市场及其挑战,强调了对技术的兴趣与自我驱动的重要性。
本文详细介绍了以太坊中的签名机制,包括签名的原理、实现和应用。文章通过代码示例展示了如何在Solidity中验证签名,以及如何在客户端生成签名并调用验证函数。
从本章开始,我们来研究内存布局。
Solidity 是如何使用内存的?
这篇文章详细介绍了Solidity中的结构体(struct)及其用法,包括如何声明、实例化和作为函数参数传递结构体。通过示例代码,作者展示了如何利用结构体提高代码的可读性和效率,并提供了一个现实生活中的用例,如购票系统,帮助开发者理解结构体的实际应用。
在深入理解 Solidity 错误"的第三篇, 探索处理错误,本文将揭晓这问问题的答案:asset 错误会消耗所有 gas 吗? require 提不提供错误字符有什么样的不同?外部调用的错误如何影响当前上下文?如何处理底层调用调用产生的错误?
这篇文章详细介绍了Solidity中的字符串处理,包括其动态大小、UTF-8编码、字符串长度的计算、字符访问及Unicode支持等核心概念。此外,还介绍了在Solidity 0.8.12版本中新增的字符串拼接功能。文章通过代码示例清晰地展示了每个概念,使读者能更好地理解和应用这些知识。
文章详细介绍了ERC-2535钻石模式(Diamond Pattern),这是一种代理模式,代理合约可以同时使用多个实现合约。文章深入讨论了钻石模式的实现原理、优势、以及与透明可升级代理(Transparent Upgradeable Proxy)和UUPS的区别。还介绍了钻石模式的应用场景和最佳实践,包括如何实现不可变钻石和可升级钻石,并提供了相关代码示例。
本文详细介绍了如何通过内联汇编更高效地实现 Solidity 中的回滚操作,深入探讨了 mstore 和 mstore8 操作码的使用方式,并通过示例代码展示了如何在汇编中实现无消息回滚、自定义错误回滚以及带有原因字符串的回滚。
mstore
mstore8