主页 > 安卓版下载imtoken官网 > 3分钟快速了解以太坊交易原理

3分钟快速了解以太坊交易原理

安卓版下载imtoken官网 2023-01-17 12:20:16

以太坊交易详情

看完什么是以太坊? 我们再来看看以太坊交易。 交易可以简单定义为发送方(Sender)和接收方(Receiver)之间的一种交互行为。 区块链中的交易是一种使用加密构造的行为。 以太坊中的交易不仅仅是转账的行为,更是与智能合约的交互和计算。 因为交易对象在区块链中是匿名的,所以交易行为实际上是在两个账户之间进行的。 以太坊账户的交互可以参考之前的文章。 首先我们来看一下以太坊中的交易内容:

交易中的gas代表EVM计算机运行交易时该账户需要支付的手续费。 可以想象,以太坊是一台虚拟的大型计算机,这台计算机负责执行和计算网络中的所有交易。 工坊里设计的gas是一种限制交易计算量的机制。 当有人发送一笔计算量很大的交易时,需要支付更多的gas,这笔交易消耗的交易手续费也会更高。 gas对应手续费的方式是通过gasPrice获取的,通常以Gwei为单位计算(注:1Ether = 10^9 Gwei,Gwei = 0.000000001 Eth)。 手续费的公式可以写成:

Tx Fee = 实际使用的 Gas * 每一步的 GasPrice

例如,如果gasPrice = 10 Gwei, Actual Gas Used = 21000 gas,您可以得到交易费用:

以太坊可以实时交易吗_以太经典是以太坊的分叉币吗_以太坊的交易可以看成是

这意味着发送方将在这笔交易中支付0.00021 Ether的手续费,但是如果交易中的计算量过高(死循环...等)手续费过高怎么办? 此时如果交易手续费超过gasLimit,交易就会失败,但注意当交易超过gasLimit时,所消耗的gas不会返还到发送方账户。

以太坊可以实时交易吗_以太坊的交易可以看成是_以太经典是以太坊的分叉币吗

以太坊气体追踪器

gasPrice 的数量取决于交易的等待时间。 在 Ethereum Gas Tracker 中可以看到最近 1000 个区块中不同 gasPrices 的等待时间。 通常,如果您支付更高的费用,交易将得到更快的验证。 一般情况下以太坊的交易可以看成是,钱包(ex. Metamask)通常会自动为我们安排三种交易的速度,方便用户选择。 当然你也可以设置不同的gasPrice来调整这个比例的验证速度。

以太经典是以太坊的分叉币吗_以太坊的交易可以看成是_以太坊可以实时交易吗

以太坊钱包中的交易速度选项

我们再来看一下交易的形式,因为在以太坊中,无论是创建智能合约还是调用已经发布在网络上的合约,或者只是将以太币转账到另一个账户,都被称为交易以太坊的交易可以看成是,所以归类为分为两种不同类型的交易形式:

以太坊两种交易形式比较

信息调用主要有两种,分别是与外部所有者账户的交互和与合约账户的交互。 其中,与外部账户的交互就是一般的转账。 从下图可以看到账户1转了3个以太币到账户2,通过Etherscan验证后可以看到信息,在Value栏可以看到本次交易转了3个以太币,但是这次转账没有涉及到智能合约的调用,所以Input Data中没有任何信息。

以太坊可以实时交易吗_以太坊的交易可以看成是_以太经典是以太坊的分叉币吗

汇款交易内容

另一种是调用已经发布在区块链上的智能合约中的函数,因此交易中的Input Data存储输入数据。 值得注意的是,交易的对象是调用智能合约的地址。 创建智能合约时,会生成一个合约账户,通过与这个合约账户的交易调用合约中的函数。

以太经典是以太坊的分叉币吗_以太坊可以实时交易吗_以太坊的交易可以看成是

调用智能合约的交易

创建智能合约也是一种交易,这种交易是没有对象的,所以在这个交易中会创建一个属于这个合约的账户。 可以看到这个合约的地址是:0x63e34d23447ce66048a3ab142843651dd5e4ddef,而这个地址是从交易中的nonce和发送方(Sender)的账户地址中衍生出来的,大家可以用Blockchain工具来试试看。

以太坊的交易可以看成是_以太坊可以实时交易吗_以太经典是以太坊的分叉币吗

创建合约的交易

算法:

contractAddress = "0x" + keccak256(rlp.encode([sender, nonce])).toString('hex').slice(-40)

合约账户的地址在发送方的账户地址和交易中的nonce之后经过RLP编码,然后取keccak256的hash值,再取右边20字节的值。 其中,RLP编码的完整定义可以在这里找到。 通过这种算法,可以在创建下一个智能合约时预测发送者账户的地址。

简单来说,这两种不同的交易类型最大的区别就是交易是否有对象(to in the transaction has a value),如果没有,说明交易是合约创建(contract-creation),否则就是消息调用(message-call)。

郑重声明:本文版权归原作者所有,转载文章仅出于传播更多信息之目的。 如作者信息标注有误,请第一时间联系我们修改或删除,谢谢。