主页 > imtoken注册 > 以太坊如何交易?

以太坊如何交易?

imtoken注册 2023-06-05 07:50:57

以太坊交易分为:发起、广播、打包和执行、验证和执行

1.发起:用户在本地以太坊钱包软件中选择要发送的交易地址(From),输入目标地址(To),金额(Value),是否部署或调用合约(Data),以及手续费单价(Gasprice)等 确认发送到以太坊节点

节点和钱包可以是同一台物理服务器,也可以是分开的。 多个用户各自保存自己的钱包私钥,并通过同一个以太坊节点广播交易。

一般以太坊钱包软件会自动为用户设置Gaslimit(交易的最大gas limit)和Nonce值,最后使用私钥获取r、s、v,最后将交易序列化发送到网络. (Gaslimit和Nonce在某些客户端是自己定义的)

2. 广播:节点收到(或发起)交易后,对交易进行验证。

验证:交易签名以太坊在国内能交易吗,发起账户余额是否可以支付转账余额和手续费,Nonce是否为该账户发送的交易数。

验证合法后,将交易添加到节点的交易池中。

待打包的交易存储在交易池中,验证交易并暂存在交易池中的过程对区块链的数据结构没有影响。

3. 打包执行

具有挖矿功能的全节点开始打包下一个区块。

一般情况下,节点从自身利益出发,会根据GasPrice从交易池中的交易中取出手续费较高的交易。

根据不同的To值,交易分为以下三种:

(1) 创建合约交易。 To 是一个空事务。

创建合约交易时,EVM会根据From值和Nonce值生成合约地址,在Data中执行相应的智能合约代码(包括合约本身的代码和构造函数),最后将合约EVM代码存储在合约地址。

(2)调用合约交易。 To是合约账户的交易。

对于调用合约交易,EVM会从世界状态中获取To地址中存储的EVM代码,并执行交易Data字段中包含的代码。 通常,合约本身存储在To地址中,而Data中包含调用合约的相应函数和参数。 本质上,对合约的调用是对合约状态的修改。

(三)普通转让交易。 To是一个人控制的账户(也称为外部账户)的交易。

本次交易的执行是直接从 From 向 To 转移 Ether 的数量。

每笔以太坊交易都是对以太坊状态的一次修改,每笔交易执行后都会生成交易收据,其中包含新建的合约地址、消耗的Gas总量、交易产生的事件日志(称为事件或日志)等。 需要打包的交易全部执行完后以太坊在国内能交易吗,交易的信息、状态、收据也会被打包到区块中。 记账节点将交易打包并获得合法区块后,将区块(包括交易数据)广播给网络中的相邻节点。

4. 验证和执行

没有获得记账权的节点,也就是没有打包区块的节点,会在收到广播的区块后验证区块的有效性,并执行交易。 验证内容和执行过程同2(广播)和3(打包执行),以保证智能合约执行的去中心化。