以太坊GAS如何计算?

以太坊GAS如何计算?

《以太坊GAS如何计算?》

前文提到 gas 的价格由市场决定,类似于比特币的交易费用,一般来说,在 Ethereum 上计算和存储比在传统环境中计算和存储更贵,但是 Ethereum 为您的代码提供了好的属性同样重要。

用户存储 Ether 时存储的是什么?从某种意义上说,他们存储的是在以太坊网络上执行计算的能力。下面是对 GAS 概念更深入的概述。

截止到目前(2018.6.23)这一天,gas 价格中位数为3 Gwei,并长期处于10 Gwei 以内范围。这是大于 EthGasStation.info 上公布的的标准gas价格(Gas Price Std)和安全的最低价(Gas Price SafeLow Transfer)(分别为1 Gwei 和 0.01 Gwei)的。中位数如此之高,是因为许多钱包中存在严重的gas价格违约行为。尽管现在的价格已经比 2017 年的中位数低了约9成。我们还是建议使用 EthGasStation.info 上面公布的的 gas 平均价格或更低的价格,以免支付高额费用并且能够帮助降低 gas 的市场价格。

用户存储以太币时存储的是什么?从某种意义上说,他们存储的是在以太坊网络上执行计算的能力。这种计算是以分散到计算机节点的方式来进行:

矿工执行与块中包含的每个交易相关联的计算,并更新结果状态。在成功开采到块后,矿工将该块广播给网络。在该块被认证为有效之前,其他矿工和非采矿节点要验证交易计算的正确性和更改结果状态的有效性,将该块合并到区块链的副本中,并继续转移到下一块。

你可能已经注意到区块链上的每一点计算都有非常多的冗余。例如,每个节点都会验证交易的结果,读取每个节点运行所有的计算。

一旦你了解了更多技术方面的东西,它就是区块链系统的一个明显特征。这难道不比仅仅在服务器上运行计算要昂贵的多么?当然,根据协议的性质,它必须要贵的多。以下可能是经济学或计算或两者兼有的基本原理:

运行代码的机器越多相当于花费在运行代码上的钱越多

我们必须要明白的是在以太坊上执行代码和更新状态与在简单的服务器上执行代码和更新状态有很大区别。在以太坊中产生的状态变化具有不同于服务器的属性 – 即不可变性和公开可验证性。我们先来看看网络上实际花费的计算量,然后我们可以确定它是否值得。

01 交易花费是如何计算的?

gas

EVM(以太坊虚拟机)中可用的每个低级操作称为 OPCODE。

这些操作包括例如:

  • ADD – 将两个整数相加
  • MUL – 将两个证书相乘
  • BALANCE – 获得账户余额
  • CREATE – 用提供的代码创建一个新的合约

这些 OPCODE 中的每一种都有自己的 gas 价格.gas是一个抽象的数字,表示操作的相对复杂性。例如, ADD(两个整数相加)使用3个gas,而 MUL(两个整数相乘)使用5个 gas,所以 MUL 比 ADD 更复杂。

需要注意的是,所有的交易都以21000 gas 为一个基础。所以如果你只是转移资金而不与合约交易,你的交易需要21000 gas。如果你正在与合约交互,你的交易需要21000 gas 以及与其他操作产生的gas 费用。

Gas Price

虽然每次操作花费的 gas 都是固定的,但用户支付的 gas 的金额却是动态的,并由市场条件决定。gas 价格是代表用户愿意为每 gas 支付多少以太币。当用户发起交易时,他们指定Gwei / Gas 中的 gas 价格(1 Gwei等于0.000000001 以太币),并且他们支付的总费用等于gas_price * gas_used。矿工支付这笔费用,因此他们优先考虑 gas 更高的交易。你愿意支付 gas 的价格越高,你的交易处理的越快。

网站 EthGasStation.info 是了解当前 gas 市场状况的重要渠道。“建议的 gas 价格(Recommended Gas Prices)”显示你可能支付的 gas 价格范围以及预计的交易时间。

02 常规计算需要花费多少gas?

在以太坊的运营成本是gas_price * gas_used,这些运营成本转换成以太币或者美元又是多少呢?我们已经编制了一份电子表格,其中包含当前中值gas价格(3Gwei)和当前美元/ 以太币汇率(¥460 / 以太币)计算的一些示例操作的成本。每一行显示一个任务,任务所需的gas成本为以太币和美元,你可以使用1个以太币和1美元执行的此任务的数量,每个块可执行的任务数以及块的数量需要执行这个任务。

数字相加运算的花费

以下的表格列出了两个数字相加所产生的成本。

《以太坊GAS如何计算?》

我们可以在这里看到,将两个数字加在一起100万次,花费0.009 以太币或4.14美元,与在本地计算机或云服务器上运行相比,这看起来非常贵。

我们在普通的服务器上 0.04 秒内就可以把两个数字相加一百万次。以阿里云最便宜的 ECS 服务器来计算,ECS 每小时收费大约是 0.14 美元。那么运行0.04秒只需要花费 0.0000016美元,与 26.55 美元相比,这大约要贵260万倍。真是难以想象!

数据存储的花费

我们可能感兴趣的另一个常见操作是存储数据,无论它是存储单个值,例如合同到期之前的天数,还是一篇文章等。

《以太坊GAS如何计算?》

从上面的表格中我们可以看到,将数据存储到区块链中非常昂贵,但是这也是有其原因的!当你将数据存储在区块链中的时候,你可以将数据存储到千万个节点的不可变数据库中。把自己最喜爱的电影上传到区块链上这样的操作肯定是不允许的,应该避免昂贵的成本,以保持区块链的增长是可控的。更直接一点的看,存储单个256 bit(32字节)需要 20000个 gas,这个花费比把两个数字相加在一起贵6000倍以上。

存储大量数据的另一个瓶颈是目前的每个块交易所能花费的的 gas 的最大数约为2100000。在每个块交易花费的 gas 的这个上限内,要将 1MB 的数据写入区块链需要312块以上的资源,这将需要1.96个以太币,折合2013美元,这比现实中的存储价格也高出了10万倍以上。这还仅仅是在你能够控制每个区块的所有 gas,并且你不需要做其他操作的基础上做的假设!

03 总结

当然了,在实际生产中计算两个数字相加 100万次是不太可能的。一个好的合约会避免算力浪费在这种复杂计算当中,而是更多地去处理合约的状态更新。将大量数据存储到区块链中也不是一项普通的任务。根据任务的不同,用户可能会在数据链上存储数据的加密引用(散列),并将其余的数据保留在链外。

也就是说,我们作为开发人员需要了解这些成本,并据此相应的设计合约。我们需要在链上和链外的复杂性之间找到平衡,同时也要更多的利用区块链的分散能力。

随着区块链成本的增加和效率的提高,我们获得了开放。区块链技术的每一步计算都会经过所有节点的验证,并且数据的安全性也是完全可以保证的。这是我们以前在互联网上从来没有过的,而且区块链技术到底能带给我们多大的财务和社会效益也是现在无法估量的。

小知识

Ethereum : 以太坊,是一个开源的有智能合约功能的公共区块链平台。

Ether:以太币,简称ETH。是在以太坊平台上用来支付或交易的一种电子货币。

gas : 交易过程中花费的工作量的计量单位,可以按一定比例兑换为以太币。

gas price : 单位gas的价格,一般以以太币计算。

以太币单位:

以太币的最小单位:wei

1个以太币 = 10的18次方wei

Kwei(Babbage)= 10的 3次方 wei

Mwei(Lovelace)= 10的 6次方 wei

Gwei(Shannon)= 10的 9次方 wei

MicroEther(Szabo)= 10的 12次方wei

MilliEther(Finney)= 10的 15次方wei

Ether = 10的 18次方 wei

 

以上就是小编分享关于”以太坊GAS如何计算?”的相关文章,感谢读者的耐心阅读,觉得不错动动小手收藏转发吧!想了解更多相关新闻敬请关注小柚财经!

小柚财经QQ专线:334026(带你加入更多行业交流群)
小柚财经微信公众号:搜索【今日币有约】关注即可

文章标题:以太坊GAS如何计算?
文章链接:http://www.zjnpse.com/index.php/2020/09/15/5258/
小编申明:本站所提供文章资讯,均由互联网整理。

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注