Solidity 应该处理 Dapp 中的分页吗?

Posted

技术标签:

【中文标题】Solidity 应该处理 Dapp 中的分页吗?【英文标题】:Should Solidity handle the Paging in a Dapp? 【发布时间】:2021-12-19 22:12:18 【问题描述】:

我正在使用智能合约来存储可以增长的动态数组。我想在浏览器中呈现这个列表,通常会使用 web3 并发送 call() 从区块链中获取列表。但是,由于该数组可能包含数千个元素,由于 gas 价格高,我不想这样做。

在 Solidity 合约中实现数据分页是否合适?如果没有,还有哪些其他选择?

【问题讨论】:

【参考方案1】:

由于数组可能包含数千个元素,由于 gas 价格高,我不想这样做

.call() web3 方法调用eth_call RPC 方法,该方法是无气体的。

它不能更改合约状态(更新存储、发出事件,...),但如果您只是读取数据,这在您的用例中并不重要。建议仅将 call() 方法与标有 viewpure state mutability 修饰符的 Solidity 函数结合使用。

【讨论】:

以上是关于Solidity 应该处理 Dapp 中的分页吗?的主要内容,如果未能解决你的问题,请参考以下文章

我应该处理超过 MAX_PATH 的文件吗?

子部件是不是应该处理自己的事件?

如何处理删除基于光标的分页中的先前元素?

如何确定哪个反应视图应该处理商店事件

我应该处理 X509Certificate2 吗?

我应该处理 WSASend() 可能不会发送所有数据的事实吗?