我正在学习solidity/ethereum,我遇到了这种情况:
我有一个映射(地址 => 单元)来跟踪每个地址为我的合同支付了多少,并且在某些时候,我必须计算一个用户贡献了多少% 的总池。(例如,如果总池为 100 个以太,用户贡献了 10 个以太,他贡献了总池的 10%)。
为此,我需要访问总池。我的第一直觉是有一个变量 totalPool 来跟踪总价值,因此每次地址支付合同时,totalPool += msg.value; 然而,在学习 EVM 的同时,我一直在阅读在存储上运行的成本是多么昂贵。
我的问题是,就 gas 而言,跟踪总池并在每次地址支付合同时在内存上操作,或者每次我需要找出比率贡献时计算总池,什么更便宜?