主页 > imtoken苹果版下载官网怎样 > 以太坊如何计算交易成本

以太坊如何计算交易成本

发送比特币交易时,费用与其规模成正比。投入和产出越多,成本就越高。结合待处理交易的因素,仅基于这两个因素,交易费用可能会飙升。

对于以太坊,鉴于我们正在讨论协议中的编程语言,它对非常少的文本或代码(在 BTC 中可能非常便宜)的计算要求非常高。我们来看看这个循环,例如:

1

while (i++ < 1000) { j = j + i; }

这个循环的意思是只要 i 小于 1000,就递增 1 然后将 i 和 j 相加并将结果写入 j 并再次执行。如果 i 为 0,则此循环将执行 1000 次,如果为负数,则执行更多次。

为了以公平的方式支付这个计算成本,因为它必须立即在所有矿工的机器上执行,并且他们花费他们的资源和时间,所以这里引入了 gas 的概念。 Gas 用于支付在 EVM 内执行所谓的智能合约(以太坊项目)的费用。比如上面的i+j是一个求和运算,每次执行需要3个gas,所以执行1000次需要3000个gas,所以执行1000次需要3000个gas。

为了正确解释gas,我们首先介绍EVM。

EVM

比特币计算单位

EVM 代表以太坊虚拟机。但什么是虚拟机?

虚拟机

虚拟机是在特定计算机上运行的软件,其中包含完全封装在主机中的另一个操作系统。例如,虚拟机允许您在 Linux 中运行 Windows、在 Windows 中运行 Windows、在 macOS 上运行 Windows,如下图所示比特币计算单位,或任何其他组合。

我们使用虚拟机将我们日常使用计算机的环境与我们工作或编程的环境分开。通过这种方式,我们可以抵御病毒(它们无法破坏虚拟机并进入主操作系统),帮助防止无限循环使我们的主操作系统崩溃,并防止硬盘驱动器像臭名昭著的 WannaCry 勒索软件一样损坏。此外,VM 允许我们在 Linux 上玩 Windows 游戏,或者允许我们在同一编程语言环境的不同版本中轻松编程,而不会混淆它们。

EVM

以太坊虚拟机内置于在以太坊协议上运行的软件中。它执行智能合约——用 Solidity 语言编写的以太坊程序。 EVM 包含在以太坊网络的全节点中,由这些以太坊用户编写的程序在其中执行。

比特币计算单位

以太坊的任何矿工同时执行智能合约代码。这意味着以太坊程序(dapps - 去中心化应用程序)同时在每个人的计算机上执行(去中心化)。

但是,这些程序的实施并不是免费的。矿工们用自己的电力、时间和硬件来做到这一点。为了支付他们执行计算机指令的努力(例如“将值 5 存储到变量 X”),引入了 gas 的概念。

gas、ether、GWei

gas 是计算机需要执行的特定操作的成本单位,当我们广播包含运行 dapp 的以太坊程序的交易时,它会执行该指令。例如,两个数字相加需要 3 个气体。将它们相乘需要 5 个气体。将一个 256 位的字存储到区块链中需要 20,000 gas,这意味着存储 1kb 数据需要 640,000 gas。

就像美元有美分一样,以太币也有自己的基本单位:wei。如果我们把wei作为ether的基本单位,我们得到如下定义表:

这是以太单位之间的单位转换。

比特币计算单位

根据该信息网站,目前天然气的平均价格为10GWei(10 gigawei)。看到 1GWei 是以太网的十亿分之一,上面存储一个 1kb 字的成本是 640,000*10,即 640 万 GWei。这相当于 0.0064eth,每个 450 美元,大约是 2.88 美元。

从上表到本文中的这一点的文字大约是 1kb。因此,将这一小段文本存储到区块链中实际上需要花费 2. 88 美元。然而,这只是存储成本!我们的智能合约也可能有一些逻辑比特币计算单位,比如求和或相乘然后存储数字,或者在特定的挖掘块上激活触发器等。显然,将数据存储到区块链本身是非常昂贵的。 BigchainDB 或 IPFS 存储更好,区块链是全球处理和验证数据的更好解决方案。

为什么需要汽油?

为什么要支付gas而不是ether?

EVM 可以执行的所有可能操作的所有 gas 价格都硬编码在以太坊协议和我们连接到它的客户端(程序)中,例如 Geth、Eth、Parity 等。如果代码以 ether 列出,那么每次以太币的价值波动时,我们都必须更新代码,以使计算工作的价格保持在正常范围内并保持系统可用,这显然是不可持续的。

通过在成本之上添加这个 gas 层,并用 GWei 支付 gas 费用,我们可以选择更改交易中使用的 gas 数量和支付的金额。它完全在我们的控制之下,不会使系统失去平衡。

这将我们带到上一节。

比特币计算单位

限制/成本和价格

gas 限制是我们愿意在交易上花费的最大 gas 量。我们用于广播以太坊交易的大多数软件都能够自动估计执行一项功能所需的气体量。它通常会立即建议一个值。例如,简单的货币 A->B 交易通常只需要 21000 gas。更复杂的称为特定智能合约功能的功能可能会消耗数十万甚至数百万的气体。消耗的gas量称为gas成本。

作为用户,我们可以修改我们希望在交易上花费的 gas 量并减少它,但是如果交易在执行过程中用完 gas,我们就会丢失我们发送的 gas。它已用完,交易被拒绝。另一方面,如果我们提供的gas 超过需要,剩余的gas 将退还给我们。因此,发送比执行交易所需更多的气体总是更好。

gas 成本是每单位 gas 的 GWei 价格。

因此,以太坊交易的总成本实际上是所需的 gas 数量乘以 GWei 每 gas 单位的价格。这是我们支付的最高交易费用;任何额外的汽油都会退还,因此费用通常被高估。

让我们看一个例子。

比特币计算单位

在上图中,我们正在执行一个交易,由于其复杂性,估计需要 135963 个气体。在 25GWei,我们支付的最高交易费用为 1.$57,从我们发送的总金额来看,这是微不足道的(0.38eth = $178)。如果我们将 gas 价格提高到 250GWei,交易成本会相应增加:

更高的费用可以有效地鼓励矿工排队我们的交易在这个过程中被其他人更早地处理,从而更快地执行。如果我们不着急,我们可以将 gas 价格保持在起始值,交易确认时间不应超过 10 分钟。但是如果我们很着急并且想在几秒钟内完成(例如,如果我们正在处理拍卖),那么很容易提高 gas 价格并牺牲一些钱来保证成功。

结论

Gas 是以太坊虚拟机中每个计算操作所花费的工作单位。这就是以太币,以太坊协议的代币,每次计算操作都有不同的gas成本。 Gas 价格(GWei 或十亿分之一的以太币一)因网络拥塞和用户对快速确认的偏好而异。

对于我们想要在以太坊网络上部署的智能合约,有两个术语很重要:gas limit 和 gas price。 gas 限制是我们愿意在执行交易时花费的最大 gas 量。实际需要的 gas 量(只有在交易执行后才知道)称为 gas 成本。 Gas 价格是每单位 Gas 的价格,以 GWei 表示(或十亿分之一的以太一)。总交易成本将是 Gas 成本和 Gas 价格的乘积,最高交易费用为是gas limit减去gas价格的乘积。差额返还给交易的发送者,以保持系统公平和可用。

================================================ ============================

分享一些比特币、以太坊、EOS、Fabric等区块链相关的交互式在线编程实用教程: