
节点与客户端:运行实例和协议实现
理解“区块链在节点涉及哪些技术概念”,可以从节点如何连接、获取、验证和保存数据入手。节点是网络中的运行实例,客户端是实现协议规则的软件。区分两者,有助于理解同一种客户端可以运行在不同计算机上,形成多个节点。
以太坊开发文档介绍了执行客户端与共识客户端的分工:前者执行交易、维护状态,后者处理权益证明共识。这个结构适用于以太坊,不能直接推广为所有区块链的统一架构。
点对点网络:发现节点与交换消息
比特币开发指南描述了通过DNS种子、已知节点记录及节点间地址交换发现其他节点的方式。建立连接后,节点通过协议消息交换区块和交易。
发现地址只解决“向谁请求数据”,并不证明对方提供的数据有效。网络通信和规则验证承担不同职责:通信让信息到达,验证决定信息能否被接受。
同步与验证:获取数据后还要检查规则
比特币的初始区块下载涉及获取并验证历史区块;离线后重新追赶链上进度,也会遇到同步问题。区块引用前一区块,因此验证还涉及数据之间的依赖关系。
同步进度反映本地掌握的数据范围,验证则检查数据是否符合协议。分析节点状态时,应分别关注是否落后、相关数据是否完成验证,不能仅凭网络连接正常判断节点已准备就绪。
全节点、归档节点与轻节点
以太坊文档区分了全节点、归档节点和轻节点:全节点执行完整规则验证,归档节点保留历史状态,轻节点依靠较少的数据及相关证明核验所需信息。查询历史账户状态时,归档能力尤其相关。
比特币也区分保留完整区块历史与裁剪旧区块的全节点。由此可见,验证能力和保存范围是两个维度;不同链中的“归档”还可能分别侧重历史状态或历史区块,比较时需要说明对象。
共识与常见问题
运行节点是否就会参与出块?在以太坊中,验证者软件承担额外的共识职责,运行普通节点并不自动成为验证者。执行交易所得到的状态,与共识机制对链的确认,也属于不同层面的工作。
轻节点是否适合所有用途?需要结合查询范围与验证方式判断。轻量核验、完整规则验证和历史数据查询的需求不同。理解节点类型时,应同时看它验证什么、保存什么,以及需要向其他节点请求什么。