如何解决数组上的 Solidity 迭代,不写算作 gas 成本吗?
function withdraw() public {
User storage user = users[msg.sender];
uint256 userPercentRate = getUserPerc(msg.sender);
uint256 totalAmount;
uint256 dividends;
for (uint256 i = 0; i < user.deposits.length; i++) {
if (user.deposits[i].withdrawn < user.deposits[i].amount.mul(185).div(100)) {
//this write stuff
}
//no writing if 85% paid of the initial deposit
}
require(totalAmount > 0,"User has no dividends");
//writing here
}
我想知道的是这个。如果用户提取了原始存款的85%以上,则在迭代中不考虑存款。这是否意味着假设我存入了 10000 笔存款,但根据这种情况只有 10 笔处于活动状态,即使 user.deposits[] 变大,它也永远不会达到 gas 限制或花费更多 gas 限制?
我知道在存储中写入迭代的成本很高,但如果排除堆栈的条件部分,它会解决这个问题吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。