门户网站的自身的特性东莞网站排名提升
概要
ETH网络是一个P2P网络,整个网络又区分为“执行层”与“共识层”。“执行层”节点负责交易交换,“共识层”节点负责区块打包、区块验证、区块同步和链同步。
执行层
执行层分为“服务发现”与“DevP2P”,两者共同并行执行。
服务发现
建立在UDP协议上,通过PING-PONG方式同步执行层节点信息,PING中包含当前发现的所有节点信息,PONG理解为PING的哈希值。当节点从PING-PONG中发现新的节点,则会与新节点之间建立新的PING-PONG交互。
DevP2P
建立在TCP协议上,与其他节点进行加密通信,在权益证明的当下,DevP2P使用有线协议进行交易交换,交易交换值对等节点之间互相同步未打包交易池的交易数据。
交易执行
在当前节点的共识客户端为区块生产者时,执行层会负责选择交易池中的交易进行执行并打包,交由共识客户端记录并广播传递。
若当前节点的共识客户端不上区块生产者,执行层会从共识客户端获取交易(从其他共识客户端同步的新区块中的交易)并进行执行与验证,将验证结果返回共识客户端。
共识层
共识层也有“服务发现“,与执行层发现类似,但是有一定细节区别。
共识层通过P2P协议与其他共识层节点进行区块同步和链同步。
连接执行客户端和共识客户端
共识客户端和执行客户端并行运行。它们需要连接起来,以便共识客户端可以向执行客户端提供指令,并且执行客户端可以将交易束传递给共识客户端以包含在 Beacon 块中。两个客户端之间的通信可以使用本地RPC连接来实现。称为“Engine-API”的 API(在新选项卡中打开)↗定义两个客户端之间发送的指令。由于两个客户端都位于单个网络身份后面,因此它们共享一个 ENR(以太坊节点记录),其中包含每个客户端的单独密钥(eth1 密钥和 eth2 密钥)。
控制流摘要如下所示,相关网络堆栈位于括号中。
当共识客户端不是区块生产者时:
共识客户端通过区块八卦协议接收区块(共识 p2p)
共识客户端预先验证该块,即确保它来自具有正确元数据的有效发送者
块中的交易作为执行负载发送到执行层(本地 RPC 连接)
执行层执行交易并验证块头中的状态(即检查哈希值匹配)
执行层将验证数据传递回共识层,块现在被视为已验证(本地 RPC 连接)
共识层将块添加到自己的区块链头部并对其进行证明,通过网络广播证明(共识 p2p)
当共识客户端是区块生产者时:
共识客户端收到通知,表明它是下一个区块生产者(共识 p2p)
共识层调用create block执行客户端中的方法(本地RPC)
执行层访问已由交易八卦协议填充的交易内存池(执行p2p)
执行客户端将交易捆绑到区块中,执行交易并生成区块哈希
共识客户端从执行客户端获取交易和块哈希并将它们添加到信标块(本地 RPC)
共识客户端通过区块八卦协议广播区块(共识 p2p)
其他客户端通过区块八卦协议接收提议的区块并如上所述进行验证(共识 p2p)
一旦该块被足够的验证者证明,它就会被添加到链的头部,经过验证并最终确定。