主页 > imtoken钱包下载安卓 > 1.1 获取以太坊交易信息

1.1 获取以太坊交易信息

imtoken钱包下载安卓 2023-06-02 08:09:58

以太坊交易主要是指外部账户向区块链上的另一个账户发送签名数据包。该数据包包含发送者的签名、接收者的地址以及从发送者转移到接收者的以太币数量。等等。以太坊上的每笔交易都需要支付费用来支付执行交易所需的计算开销。计算开销的成本不直接由 Ether 计算,而是引入 gas 作为执行成本的基本单位,通过 Gas Price 转换为 Ether。

手续费

为了防止用户在区块链公链上发送过多无意义的交易,浪费矿工的计算资源,比如转账金额为 0 的转账交易,以太坊采用了交易手续费策略,要求发送方交易以支付交易费用。一定的价格。具体来说,对于每笔交易,交易的发送方需要支付一定的交易费用;这笔费用最终由将交易打包到主链的矿工收取。

由于比特币中只有转账交易,每笔交易所需的计算开销大致相同,因此每笔交易的发送者都会以比特币的形式支付固定费用。以太坊引入了智能合约,涉及智能创建和调用的交易的计算消耗有很大不同。因此,引入了相对复杂的 Gas 和 Gas Price 来对交易费用进行定价。

1、气体

Gas 是衡量一笔交易所消耗的计算资源的基本单位。以太坊中的交易可能涉及许多计算步骤,如图 1 所示。常见的操作需要消耗气体。交易所需的计算步骤和复杂性越多,交易消耗的 Gas 就越多。普通转账交易会消耗 21,000 Gas,而创建智能合约的交易可能会消耗数万甚至数百万 Gas。

2、汽油价格

Gas Price 是一单位 Gas 所需的手续费(以太币)。目前,以太坊钱包客户端的默认 Gas Price 为 0.000000001 Ether/Gas (1Gwei)。也就是说,如果一笔交易需要消耗21000Gas,那么交易费用为0.000021Ether。

Gas Price 不固定,可根据需求自由调整。一般来说,矿工会根据 Gas Price 或 Gas * Gas​​ Price 从大到小对收到的交易进行排序,以决定哪个交易先入块。当以太坊公链上的交易量在一段时间内激增时,为了让矿工尽快接受一笔交易,交易发送方可以提高交易的 Gas Price 来激励矿工。

以太坊哈希值进度查询

3、气体限制

Gas Limit 是对 Gas 的限制。

对于单笔交易,Gas Limit 表示交易发送方愿意为执行该交易支付的最大 Gas 量。Gas Limit 保护用户免受消耗过多交易费用的代码错误的影响。另外如果没有Gas Limit,一些恶意用户可能会发送一个数十亿步的交易,并且没有人可以处理它,因为处理这个交易需要的时间甚至比区块间隔还要长,但矿工不知道,因此会导致拒绝服务攻击。

对于一个区块,Gas Limit 是单个区块中允许的最大 Gas 量,由矿工决定。一般Gas Limit越大,矿工可以获得的交易费用越多以太坊哈希值进度查询,但同时叔块出块的频率也会增加,使得挖出的块无法形成最长的交易链。因此,矿工不能随意更改区块的 Gas Limit。根据以太坊协议,当前区块的 Gas Limit 只能在前一个区块的 Gas Limit 基础上波动 1/1024。

交易内容

一般来说,一笔交易可能包括以下内容:

根据场景,交易可以分为三种

1)转移交易。转账是最简单的交易类型,将以太币从一个账户发送到另一个账户。

网络3.eth.sendTransaction({

从:

以太坊哈希值进度查询

到:

价值:

})

2)创建一个智能合约交易。

网络3.eth.sendTransaction({

从:

价值:

})

创建合约是指将合约部署在区块链上,也是通过发送交易来实现的。在创建合约的交易中,“to”字段为空字符串,“data”字段指定初始化合约的二进制代码。合约调用后,代码的执行结果将作为合约代码。

3)执行智能合约交易。

以太坊哈希值进度查询

网络3.eth.sendTransaction({

从:

到:

价值:

})

该交易是为了执行已部署在区块链上的智能合约。在这个交易中,from 是合约地址,to 是调用智能合约的地址。

交易流程

在以太坊中,交易处理是一个过程,从账户发起交易请求开始,直到包含该交易的区块被共识节点同步(一般出于安全考虑,会等到区块之后再“挖矿”)一些区块,交易被确认),只有当这个过程满足时,交易才完成。

1、普通转账或合约调用的交易流程

1)发送交易请求。发送方(用户A)根据格式要求在以太坊网络中发起交易请求,请求被传送到用户A的对等节点,如图2所示。

以太坊哈希值进度查询

2)交易请求验证和广播。网络上的一个节点(用户 B)与该交易同步,以检查该交易是否有效且格式是否正确。如果满足要求,计算最大可能的交易费用,确定发送者的地址,并在本地区块链上减去相应的费用。如果账户余额不足,则会返回错误并丢弃交易。对于满足要求的交易请求,用户B将其放入交易存储池中,转发给其他节点。其他收到交易请求的节点重复用户B的处理。如图3所示。

3)会计节点打包交易并执行合约。对于转账交易,获得记账权的节点将交易和其他交易打包进区块;对于合约交易,矿工将交易和其他交易打包到区块中,在本地EVM上运行被称为合约代码,直到代码运行到最后或者gas用完。如果代码没有结束且gas已经用完,代码运行所改变的状态会回滚到代码运行之前,但已经支付的交易费无法收回,会获得交易费取得会计权的矿工。如果代码运行后还有gas剩余,矿工只会得到gas消耗x GasPrice作为手续费,并且不会收取剩余Gas对应的手续费。如图 4 所示。

4)阻止广播。用户 B 将包含用户 A 的交易请求的块发送到对等节点,并在整个网络中传播。如图 5 所示。

5)区块验证同步。其他节点收到区块后,对区块进行验证。如果区块验证通过,则节点删除内存池中原用户A的交易请求,同步区块,并将其添加到本地区块链中。对于执行智能合约的区块中的交易,其他节点将在本地EVM上运行智能合约并相互验证结果。如图 6 所示。

通过以上五个步骤,整个交易流程就结束了。但一般来说,包含交易的区块链同步到区块链后,为了安全起见,还需要再挖一些区块,才能真正确认交易。

以太坊哈希值进度查询

2、创建智能合约的交易流程

注:部分步骤与普通转账相同,不画交易图。

1)发送创建智能合约的请求。发送方(用户A)根据一定的格式要求发起交易请求,在以太坊中创建智能合约,如图7所示

2)交易请求验证和广播。网络上的一个节点(用户 B)与该交易同步,以检查该交易是否有效且格式是否正确。如果符合要求,计算可能的最高交易费用,确定发送方地址,并在本地区块链上减去相应费用。如果账户余额不足,则会返回错误并丢弃交易。对于满足要求的交易请求,用户B将其放入交易存储池中,转发给其他节点。其他收到交易请求的节点重复用户 B 的处理。

3)打包,创建合约账户,部署合约。获得记账权的节点会将交易和其他交易打包到区块中,获得记账权的节点会根据其提供的交易手续费和合约代码创建一个合约账户,并在账户中部署合约空间。智能合约账户地址由发送方地址(address)和交易随机数(nonce)输入,通过加密算法生成,交易确认后将智能合约地址返回给发送方。如图 8 所示。

4)阻止广播。用户 B 将包含用户 A 的交易请求的区块发送到对等节点,并在整个网络中传播

5)验证区块并在本地部署智能合约。共识节点接收区块并验证区块。如果区块验证通过,则节点从内存池中删除原用户A创建智能合约的交易请求,同步区块链,并将智能合约部署到各自的区域。在区块链中。如图 9 所示。

经过以上五个步骤以太坊哈希值进度查询,创建智能合约的交易就完成了。但一般来说,包含交易的区块链同步到区块链后,为了安全起见,还需要再挖一些区块,才能真正确认交易。