Ethereum 在合同内储存天然气

Ethereum 在合同内储存天然气,ethereum,solidity,Ethereum,Solidity,是否可以储存合同中未使用的气体,以便在以后使用(假设调用函数时可能需要一定量的气体) 我正试图写一份需要用户输入的合同,并在以后的某个时刻根据用户输入做一些需要汽油的事情 由于从合同所有者的口袋中支付天然气听起来不太吸引人,我正在寻找一种方法,让合同用户支付完成请求所需的天然气费用 你似乎把气体的意思弄混了一点。 天然气是开采交易所需支付的乙醚。天然气总是由调用函数(合同)的地址支付,而不是来自合同本身或合同所有者,因此天然气不会从所有者的口袋里出来。此外,天然气基本上是乙醚,所以“储存天然气”

是否可以储存合同中未使用的气体,以便在以后使用(假设调用函数时可能需要一定量的气体)

我正试图写一份需要用户输入的合同,并在以后的某个时刻根据用户输入做一些需要汽油的事情


由于从合同所有者的口袋中支付天然气听起来不太吸引人,我正在寻找一种方法,让合同用户支付完成请求所需的天然气费用

你似乎把气体的意思弄混了一点。
天然气是开采交易所需支付的乙醚。天然气总是由调用函数(合同)的地址支付,而不是来自合同本身或合同所有者,因此天然气不会从所有者的口袋里出来。此外,天然气基本上是乙醚,所以“储存天然气”是在合同中储存乙醚,但不能储存用于开采交易的天然气。如果你想储存乙醚,你必须向合同发送乙醚,或者让用户在调用某个函数时发送乙醚。

事实上,在合同中储存气体以供以后使用是完全可能的

EVM中有一些操作可以返回以前支付的一些天然气:

  • SSTORE:将存储值从非零更改为零会释放15000种气体
  • 自毁:摧毁合同释放24000气体
这意味着,例如,存储某些值需要20k气体,但从存储中删除它只需要5k气体,并释放15k气体供以后在同一事务中使用。实际上,这是清理区块链存储的奖励

您可以通过在中搜索“退款”获得更多详细信息

有一个项目利用这一特性在合同中储存廉价的天然气,并在价格昂贵时释放(和使用)



说清楚一点,我认为这根本不允许用户在不支付煤气费的情况下进行交易。

没有将两者混为一谈。我正在编写一个脚本,在将结果集发送回区块链进行进一步处理之前,对新输入的合同进行轮询并提取以供脱机使用。那么,你想让用户代替你来播放所有这些内容的gas吗?根据你在这里所描述的,似乎用户将付费将输入存储在区块链上,而你将付费将处理后的输出存储在区块链上。这是正确的。用户应该支付所有费用。需要调查它,看看它是否有助于解决我的问题,但现在我发现了一个不同的解决方案,使用存储的服务。