守护进程¶
该章节介绍 GAChain 节点如何从技术角度相互交互。
关于服务端守护进程¶
GAChain 服务端为 go-gachain,它需在每个网络节点上运行。服务端守护进程执行服务端各个功能并支持 GAChain 区块链协议。守护进程在区块链网络中分发区块和交易、生成新区块、验证接收到的区块和交易。守护进程可以防止区块链分叉问题。
验证节点守护进程¶
验证节点 (有权生成新区块和发送交易)运行以下服务端守护进程:
生成新区块。
从其他节点下载新区块。
确认节点上存在的区块也存在于大多数其他节点上。
将交易和区块分发给其他主节点。
QueueParserBlocks 守护进程
处理区块队列中的区块,区块队列包含来自其他节点的区块。
区块处理逻辑和 BlockCollection守护进程 相同。
QueueParserTx 守护进程
验证交易队列中的交易。
Scheduler 守护进程
按任务计划运行合约。
全节点守护进程¶
全节点 (只发送交易的节点)运行以下服务端守护进程:
- BlockCollection守护进程
- Confirmations守护进程
- Disseminator守护进程
- QueueParserTx
- Scheduler
BlockCollection守护进程¶
BlocksCollection守护进程下载区块并将区块链与其他网络节点同步。
BlockGenerator守护进程¶
BlockGenerator守护进程生成新区块。
预验证¶
BlockGenerator守护进程通过分析区块链中的最新区块来计划新的区块生成。
如果满足以下条件,则可以生成新区块:
- 生成最新区块的节点位于验证节点列表中守护进程节点。
- 自最新未验证区块生成以来经过的最短时间。
区块生成¶
该守护进程生成新区块后,新区块包含所有新交易。这些交易可以从其他节点的 Disseminator守护进程 接收,也可以由该守护进程的节点生成。生成的区块保存在该节点数据库中。
数据表¶
BlockGenerator守护程序使用以下表:
- block_chain (saves new blocks)
- transactions
- transactions_status
- info_block
请求¶
BlockGenerator守护进程不向其他守护进程发出任何请求。
Confirmations守护进程¶
Confirmations守护进程检查其节点中的所有区块是否存在于大多数其他节点上。
区块确认¶
当网络中的多个节点已确认区块时,将认为该区块已被确认。
该守护进程从数据库中当前未确认的第一个区块开始逐个确认所有区块。
每个区块都以这种方式确认:
- 向所有验证节点发送请求,该请求包含了正在确认的区块ID。
- 所有验证节点对该区块的哈希进行响应。
- 如果响应的哈希值与守护进程节点上的区块的哈希值匹配,则会增加确认计数器。如果哈希不匹配,取消确认计数器将增加。
TCP服务协议¶
TCP服务协议在验证节点和全节点上工作,TCP服务协议使用TCP上的二进制协议来处理来自BlocksCollection、Disseminator和Confirmation守护进程的请求。
请求类型¶
每个请求都有一个由请求的前两个字节定义的类型。
Type 7¶
请求发送者¶
BlockCollection守护进程 发送该请求。