主页 > imtoken2.0下载 > 以太坊教程 - 交易

以太坊教程 - 交易

imtoken2.0下载 2023-01-17 00:13:00

在比特币中,交易是通过执行脚本消耗已有的UTXO并产生新的UTXO,而新旧之间的隐含差异就是矿工的手续费。

在以太坊中,交易还需要手续费,称为Gas(汽油),其计算比比特币复杂得多。

除了最基本的转账:从一个账户向另一个账户支付以太币外,以太坊还支持合约代码的执行。 合约代码是通过EVM(以太坊虚拟机)执行的图灵完备编程语言。 如果一个合约写了一个无限循环,如果所有节点都执行合约代码,它不就永远不会结束了吗?

为了保证合约代码的可靠执行,以太坊为每条虚拟机指令都标出了一个基本的Gas费用,称为gasUsed。 比如加减法的费用是3,计算SHA3的费用是30,输出日志的费用是375,写入存储的费用高达20000。 一般来说,消耗CPU比消耗存储便宜,简单计算比复杂计算便宜,读比写便宜。

除了gasUsed,用户还需要提供一个Gwei的gasPrice(1Gwei=109Wei)。 通过竞标获得矿工愿意接受的gasPrice。 如果一笔交易消耗120000 gasUsed,gasPrice为50 Gwei,则交易费用为:

120000 x 50 Gwei = 6000000 Gwei = 0.006 以太币

但是在执行代码的时候比特币合约交易教程,有条件判断、循环等语句。 同一段代码的执行结果可能不同。 因此,提前预测执行合约将花费多少 Gas 是不现实的。

因此,以太坊规定,对于一笔交易,首先给出gasPrice和gasLimit。 执行完毕后如有剩余,将退还剩余部分。 如果在执行过程中耗尽比特币合约交易教程,则交易执行失败,但执行的Gas不会返还。

是不是太复杂了? 还是举个例子吧。

假设一个账户要执行一笔交易,他给的gasPrice为50Gwei,估计gasUsed在120,000左右,设置gasLimit为150,000,那么预付的Ether为:

150000 x 50 Gwei = 7500000 Gwei = 0.0075 以太币

如果账户的 Ether 余额小于 0.0075,则交易根本无法发送。 如果账户余额等于或超过0.0075,比如余额为0.008,矿工可以打包交易。 假设实际执行消耗的gasUsed为120,000,交易手续费为0.006,剩余账户为0.002。

很少有交易能准确估算gasUsed,只有标准转账交易是21000,因此标准转账交易gasLimit可以设置为21000(即正好消耗完,没有剩余)。

Gas Price 由用户在全网竞价产生,时时刻刻都在波动。 如果交易少,Gas Price 就会下降,如果交易多,网络拥堵,Gas Price 就会上涨。 以太坊的 gas 价格可以在 Etherscan 上追踪。

交易收据

以太坊区块会为每笔交易生成一张收据(Recipt),表示交易的最终状态。 收据信息主要包括:

转账交易

转账交易是指以太币在两个外部账户之间的转账。 我们以测试网交易0xf04d...b7ba为例,我们可以看到:

合约交易

合约交易是指外部账户调用某个合约的某个公共函数。 我们以测试网交易0x2235...132e为例,我们可以看到:

可以看出,转账交易的gas费是固定的,而合约交易只能预估,具体费用以实际执行后的消耗为准。

概括

以太坊交易需要消耗Gas,Gas价格和实际消耗量决定了一笔交易实际消耗的Ether,即交易成本。

合约交易无法准确确定 Gas 的数量,只能估算并给出 Gas Limit。

访问以获取更多区块链教程