是否可以存储未在合同内使用的气体,以便可以在以后使用(假设有可能需要一定量的气体来调用函数)?
我试图写一份需要用户输入的合同,并在稍后的时间基于输入进行某些操作,这将需要加油。
由于从合同所有者的口袋中掏出天然气似乎并不具有吸引力,我正在寻找一种方法,使合同的用户为完成请求所需的天然气付费。
答案 0 :(得分:2)
事实上,将天然气储存在合同中以备后用是很可能的。
EVM中有一些操作可以返回之前已支付的汽油:
这表示例如存储一些值需要20k瓦斯,但是从存储中删除它仅需要5k瓦斯并释放15k瓦斯供以后在同一交易中使用。实际上,这是清理区块链存储的奖励。
您可以通过在Yellowpaper中搜索“退款”来获取更多详细信息。
有一个GasToken项目使用此功能在价格便宜时将其存储在合同中,而在价格昂贵时将其释放(并使用)。
需要明确的是,我认为这不允许用户完全不用支付汽油费就能发行交易。
答案 1 :(得分:1)
似乎您已经混淆了一些气体的含义。 天然气是您必须支付以进行交易的以太币。气体总是由调用函数(合同)的地址支付,而不是从合同本身或合同所有者那里支付,因此不会从所有者口袋中掏出。另外,气体基本上是乙醚,因此“存储气体”是将以太存储在合同中,但您不能存储用于开采交易的气体。如果要存储以太币,则必须将以太币发送到合同中,或者让用户在调用函数时发送以太币。