在合同中存储天然气

时间:2018-12-08 13:38:41

标签: ethereum solidity

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

我试图写一份需要用户输入的合同,并在稍后的时间基于输入进行某些操作,这将需要加油。

由于从合同所有者的口袋中掏出天然气似乎并不具有吸引力,我正在寻找一种方法,使合同的用户为完成请求所需的天然气付费。

2 个答案:

答案 0 :(得分:2)

事实上,将天然气储存在合同中以备后用是很可能的。

EVM中有一些操作可以返回之前已支付的汽油:

  • 存储:将存储值从非零更改为零会释放15000种气体
  • SELFDESTRUCT :销毁合同释放了24000气体

这表示例如存储一些值需要20k瓦斯,但是从存储中删除它仅需要5k瓦斯并释放15k瓦斯供以后在同一交易中使用。实际上,这是清理区块链存储的奖励。

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

有一个GasToken项目使用此功能在价格便宜时将其存储在合同中,而在价格昂贵时将其释放(并使用)。


需要明确的是,我认为这不允许用户完全不用支付汽油费就能发行交易。

答案 1 :(得分:1)

似乎您已经混淆了一些气体的含义。 天然气是您必须支付以进行交易的以太币。气体总是由调用函数(合同)的地址支付,而不是从合同本身或合同所有者那里支付,因此不会从所有者口袋中掏出。另外,气体基本上是乙醚,因此“存储气体”是将以太存储在合同中,但您不能存储用于开采交易的气体。如果要存储以太币,则必须将以太币发送到合同中,或者让用户在调用函数时发送以太币。