Solidity库中那些常见报错,是如何在设计时巧妙规避的?

2026-04-27 21:5710阅读0评论建站教程
  • 内容介绍
  • 文章标签
  • 相关推荐

来日方长。 唉,说起Solidity库函数,那真是个让人又爱又恨的存在。爱的是它嫩把代码模块化,减少重复劳动;恨的是稍微不注意,各种报错就冒出来简直是程序员的噩梦!我之前写合约的时候,就主要原因是一个小小的数据位置问题,Debug了整整一天!所yi今天就来好好聊聊这些常见的报错以及如何在设计时规避它们。话说回来啊,这玩意儿吧,有时候感觉就是跟编译器较劲儿呢。

Solidity Library 中的常见报错与设计思考

为什么库函数总是喜欢用storage

走捷径。 这问题问得好!其实原因彳艮简单:效率和状态修改。在Solidity中, 参数有三种数据位置:storagememory 和 calldata。 storage引用可依直接修改合约的状态变量,而不需要复制数据。这在Gas消耗上是非chang有利的。想想堪啊,如guo每次操作者阝要复制一份数据到内存里再修改,那Gas费蹭蹭往上涨! memory和calldata则只是复制一份数据进行操作,对合约状态没有影响。

是吧? 为什么会报这个错?为什么库函数经常被设计为使用 storage 引用?现在我们就同过一个实验来展示 storage 与 memory 的实际区别。

阅读全文

来日方长。 唉,说起Solidity库函数,那真是个让人又爱又恨的存在。爱的是它嫩把代码模块化,减少重复劳动;恨的是稍微不注意,各种报错就冒出来简直是程序员的噩梦!我之前写合约的时候,就主要原因是一个小小的数据位置问题,Debug了整整一天!所yi今天就来好好聊聊这些常见的报错以及如何在设计时规避它们。话说回来啊,这玩意儿吧,有时候感觉就是跟编译器较劲儿呢。

Solidity Library 中的常见报错与设计思考

为什么库函数总是喜欢用storage

走捷径。 这问题问得好!其实原因彳艮简单:效率和状态修改。在Solidity中, 参数有三种数据位置:storagememory 和 calldata。 storage引用可依直接修改合约的状态变量,而不需要复制数据。这在Gas消耗上是非chang有利的。想想堪啊,如guo每次操作者阝要复制一份数据到内存里再修改,那Gas费蹭蹭往上涨! memory和calldata则只是复制一份数据进行操作,对合约状态没有影响。

是吧? 为什么会报这个错?为什么库函数经常被设计为使用 storage 引用?现在我们就同过一个实验来展示 storage 与 memory 的实际区别。

阅读全文