主页 > 苹果怎么下载imtoken钱包 > 以太坊区块链的架构是什么

以太坊区块链的架构是什么

苹果怎么下载imtoken钱包 2023-06-03 05:48:17

描述

上一节,我们带大家了解了以区块链为核心的区块链架构全貌。 相信大家对区块链运行的机制和原理有了更深入的了解。 本篇我们将延续上一篇介绍区块链2.0以太坊——Vitalik如何升级和改变中本聪设计的比特币架构。 以太坊的运行原理大家都很清楚!

由 Vitalik Buterin 领导的区块链 2.0 - 以太坊

以太坊区块链如何运作

以太坊虚拟机(EVM——Ethereum Virtual Machine)

在介绍以太坊区块链架构之前,有必要介绍一下“EVM”。 EVM 是以太坊创建的一个计算引擎,让每个人都成为一个节点。 由于每个节点的软硬件环境可能不同,为了保证每个节能能进行相同的计算,每个节点通过EVM执行以太坊交易的状态传递和智能合约,保证每个节点都具有相同的执行环境。

前言说完,我们来一探究竟:

以太坊交易的生命周期

与比特币的 UTXO 不同,以太坊采用了 Account 的结构。

由于以太坊中的智能合约设置比较多,这里将分为AB和C三个部分进行说明。

让我们从最简单的 Ether 转账交易开始:

A. 简单的以太币转账交易

《简单以太转账交易》示意图

1. 用户(EOA)想要发起交易。

2.通过钱包(私钥管理工具)输入交易信息

To:对方收货地址;

金额:要转账的以太币数量;

有余额的以太坊私钥_如何查看以太坊余额_以太坊联盟和以太坊的关系

Gas Price:单位Gas给予的手续费; (见第 5 节)

Gas Limit:正常的Ether转账交易为21,000 Gas,无需移动;

输入数据:取决于您是否要在交易中留下短信。

3. 使用私钥签署交易。

4. 向邻近的以太坊节点广播“签名交易包”。

5. 当一个节点收到一笔新的交易时,它会首先去状态数据库检查交易发起地址是否有足够的以太币(余额)进行转账。 否则,交易将立即被丢弃。

6. 经核对确认金额充足,交易将进入交易池。

(按照Gas Price设置的数量从高到低排序)

7. 在等待区块的过程中,每个节点都会

A. 广播接收交易

B. 接收不在交易池中的交易

8、矿工节点(利用算力求出nonce值拼出区块奖励的节点)将获得手续费较高的交易,进入EVM计算并改变状态值,将计算完成的交易发送给打包成一个新的区块(计算错误的交易将被丢弃),然后使用计算机计算能力计算nonce值。

*注:此处的nonce值与前面介绍的以太坊地址的nonce值不同(以太坊有两种nonce,一种是挖矿,一种是地址的交易顺序。)

*注2:Gas将与操作同时消耗。

9. 成功找到nonce值后,生产区块的矿工将获得区块奖励和区块内所有打包交易的手续费。

10. 矿工节点将新区块广播给全球其他节点。

如何查看以太坊余额_以太坊联盟和以太坊的关系_有余额的以太坊私钥

11.其他节点同步“8660586区块高度(最新区块)”,

“State Database”、“Tx Pool”数据,继续广播和接收新的交易。

12. 矿工节点然后从 Tx 池中检索未阻塞的交易并将它们打包到新块中。

以上就是一笔以太坊交易从发送到出块要经历的过程。 那么我们来看看智能合约是如何部署的:

B. 部署智能合约

我们其实在Section 2中简单的介绍过,现在用示意图来更完整的介绍一下!

“部署智能合约”流程示意图

1.使用Remix或其他开发工具编写并完成智能合约。

2. 将源代码编译成字节码。

3. 用户(EOA)通过钱包(私钥管理工具)输入交易信息

至:0x0

金额:取决于是否将以太币放入合约中

Gas Limit:根据合约的复杂程度决定设置多少

Gas Price:取决于交易状态和出块的紧急程度

输入数据:放入合约字节码

4. 用私钥对交易进行签名,并将“签名交易包”广播给相邻的以太坊节点。

有余额的以太坊私钥_以太坊联盟和以太坊的关系_如何查看以太坊余额

5. 当节点收到一笔新交易时,首先会去State Database查询交易发起地址是否有足够的Ether(Balance)进行转账(在某些情况下,它会将Ether放入合约中)。 如果没有足够的数量,交易将立即被丢弃。

6. 经核对确认金额充足,交易将进入交易池。

(按照Gas Price设置的数量从高到低排序)

7. 在等待出块的过程中,各节点仍会

A. 广播接收交易

B. 接收不在交易池中的交易

8. 矿工节点提取合约部署交易,进入EVM计算。

9. 将合约代码部署到Program Code ROM中,Program Code ROM为只读存储器,部署后不可更改。

10. 同时,智能合约还可以使用内存(Memory)来存储合约需要记录的信息。 例如:发行ERC-20 Token的智能合约可以使用内存记录每个以太坊地址中的“持有的Token数量”,跟踪每个地址的ERC-20 Token Balance。

11、以上步骤完成后,将计算结果(合约地址、Gas Used)写回交易。

12、矿工节点将计算出的交易打包成新的区块(有错误或Gas不足的交易将被丢弃),然后使用计算机算力计算nonce值。

13. 成功找到nonce值后有余额的以太坊私钥,生产该区块的矿工将获得区块奖励和该区块内所有打包交易的手续费。

14. 矿工节点将新区块广播给全球其他节点。

15.其他节点同步“8660586区块高度(最新区块)”,

“状态数据库”、“交易池”、“合约代码ROM”、

“ERC-20 Token Balance”信息,持续广播和接收新的交易。

有余额的以太坊私钥_如何查看以太坊余额_以太坊联盟和以太坊的关系

16.矿工节点从Tx Pool中取出未产生的交易进行计算并打包成新的区块。

以上就是智能合约部署的一笔交易从发送到出块的过程。

最后我们来分析调用智能合约进行操作和交互:

C.调用合约进行交互

我们实际上已经在第 2 节和第 4 节中简要介绍了这部分内容。

此刻我们配上原理图,把重点放在节点部分,介绍的更完整一些!

“调用智能合约”流程示意图

1.通过DApp接口或其他方式调用智能合约进行交互

2.生成交易格式的形式:

To: 合约地址

金额:取决于是否将以太币放入合约中

Gas Limit:根据操作合约的复杂程度决定设置多少

Gas Price:取决于交易状态和出块的紧急程度

输入数据:以十六进制表示的“要调用的合约函数和参数”

3. 用私钥对交易进行签名,并将“签名交易包”广播给相邻的以太坊节点。

4. 当节点收到一笔新的交易时,会先去State Database查询交易发起地址是否有足够的Ether(Balance)进行转账(如果涉及),如果没有足够的金额,则交易立即丢弃。

以太坊联盟和以太坊的关系_有余额的以太坊私钥_如何查看以太坊余额

5. 经核对确认金额充足,交易将进入Tx Pool。

(按照Gas Price给出的数量从高到低排序)

6. 在等待区块的过程中,每个节点仍然会

A. 广播接收交易

B. 接收不在交易池中的交易

7. 矿工节点拿起这个“合约操作交易”,进入EVM计算。

8. 根据合约地址,从Program Code ROM中获取合约代码。

9.根据MethodID(Function Hash)在合约中找到对应的Function。

10.填写相关参数,进行相应操作。

以ERC-20 Token的Transfer Function为例有余额的以太坊私钥,相关地址的ERC-20 Token Balance会在运行过程中发生变化。

11. 上述步骤完成后,将计算结果(new Token Balance, Gas Used)写回交易。

12. 矿工节点将计算出的交易打包成新的区块(错误或Gas不足的交易将被丢弃),然后使用计算机算力计算nonce值。

13. 成功找到nonce值后,生产该区块的矿工将获得区块奖励和该区块内所有打包交易的手续费。

14. 矿工节点将新区块广播给全球其他节点。

15.其他节点同步“8660586区块高度(最新区块)”,

“State Database”、“Tx Pool”、“ERC-20 Token Balance”等资料持续广播,接收新的交易。

16. 矿工节点然后从 Tx 池中检索未阻塞的交易并将它们打包到新块中。

以上,我们介绍了以太坊区块链架构的核心。 虽然目前还有很多技术细节我们还没有完全解释或深入,但相信初学区块链技术的读者应该能够逐步建立起区块链架构的全貌。 以后我们会继续在此基础上分析更多面向区块链的技术知识,谢谢!