Parameters 坚固性:功能参数如何';尺寸影响燃气成本?

Parameters 坚固性:功能参数如何';尺寸影响燃气成本?,parameters,queue,ethereum,solidity,Parameters,Queue,Ethereum,Solidity,在任何事情之前,这里有一些背景: 假设我正在实现一个dApp,我想减少用户调用相关智能合约的次数。为了做到这一点,所有用户的操作都在客户端堆叠起来。最终,用户必须将其操作提交到智能合约中,以便更新其链上的数据 智能合约将所有用户操作的队列作为参数,并对其进行迭代,主要进行一些检查和更新。 有点像这样: function verifyUsersActions(Queue actions) public { while(actions.length != 0) { A

在任何事情之前,这里有一些背景:

假设我正在实现一个dApp,我想减少用户调用相关智能合约的次数。为了做到这一点,所有用户的操作都在客户端堆叠起来。最终,用户必须将其操作提交到智能合约中,以便更新其链上的数据

智能合约将所有用户操作的队列作为参数,并对其进行迭代,主要进行一些检查和更新。 有点像这样:

function verifyUsersActions(Queue actions) public
{
    while(actions.length != 0)
    {
        Action currentAction = actions.pop(); 
            /* tests on currentAction, update datas, etc */
    }
}
我的问题是:actions对象的大小如何影响天然气成本? “actions.length=2”和“actions.length=3”之间的气体增量是多少


我仍然对“内存”和“存储”变量感到困惑,不知道函数调用参数属于哪一类。

我想这已经回答了您的问题。函数的参数是内存。与指令成本相比,内存的气体成本是可忽略的。这也为内存成本计算提供了示例。好的,根据第一个链接,函数参数始终在内存中,感谢您的澄清!在RemixIDE中进行测试后,似乎将数组作为参数传递非常便宜:我首先尝试仅使用内存变量添加10个整数,并将结果存储在状态变量中;耗资2.6万英镑。增加100UINT256的成本约为60k天然气,因此,它可以很好地处理结垢问题;正如您所说,传递参数几乎是免费的;天然气的成本主要是存储访问和操作,这对know@Folk这是一个伟大的发现。谢谢你的提问。