我正在使用 Solidity ^0.8.0
我按照以下方式构建了广告系列合同:
struct Request {
address payable recipient;
string description;
uint value;
uint approvalCount;
bool complete;
mapping(address => bool) approvals;
}
mapping(uint => Request) public requests;
uint public requestsCount;
现在我有了请求长度和请求映射类型
但是我们无法像数组一样在一次调用中从映射中检索所有数据。
那么在不使用以下方法的情况下从请求中获取所有数据的最佳方法是什么:
1- 在合约中创建一个函数并遍历请求然后返回数据。
--这种方法并不理想,因为gas消耗会增加。
2- 一一调用来自我的后端服务器的请求。 我们有请求长度,我们可以遍历长度并通过索引获取数据。
-- 这种方法也不理想,因为请求的长度增加得越多
-- 遍历所有这些索引所需的时间越多。
现在我的问题是有没有更好的方法来重建我的合同
或者使用上述两种解决方案之外的其他方法来实现所需的返回调用