
区块链底层系统的基本组成
区块链可以理解为由多个节点共同维护的分布式账本。账本中的交易按照一定顺序被打包进区块,区块再通过密码学方式连接起来。节点各自保存并验证一份或部分网络数据,并依据统一的规则判断哪些交易和区块有效。
底层系统通常需要同时解决三类问题:如何组织和验证数据,如何让节点互相发现并交换信息,以及当不同节点接收到不同信息时如何形成一致结果。因此,区块链并不是单一技术,而是数据结构、密码学、网络协议和共识规则的组合。

区块、哈希与默克尔树
区块一般包含交易数据和区块头。区块头会记录前一个区块的哈希,使后续区块依次连接起来。如果历史区块中的交易发生变化,其相关哈希会改变,并进一步影响后续链条的校验结果。这种链式引用为发现数据篡改提供了基础。

默克尔树用于概括一个区块中的多笔交易。系统先对交易计算哈希,再将哈希两两组合并继续计算,直到得到一个根哈希,也就是默克尔根。默克尔根写入区块头后,客户端可以借助中间哈希验证某笔交易是否属于特定区块,而不必取得该区块的全部交易数据。具体树结构、编码方式和验证规则由不同协议规定。
密码学哈希具有固定长度和敏感性等特点:输入数据发生变化时,输出结果通常也会显著变化。哈希适合用于数据完整性校验和对象标识,但它本身不等同于加密,也不能单独证明某个操作获得了授权。
交易模型与状态记录
区块链需要规定资产或状态如何被创建、转移和再次使用。以UTXO模型为例,交易输入引用此前交易产生的未花费输出,交易输出则形成新的可花费记录;同一输出被再次引用时会触发重复花费检查。交易输入价值与输出价值之间的差额,可以按照协议规则处理为手续费。
另一类系统会维护账户、余额或合约存储等全局状态。此时节点需要执行交易并更新状态,同时通过状态树或其他数据结构组织账户和存储信息。两种模型在验证方式、状态同步和客户端实现上各有特点,不能仅凭一个区块浏览器页面推断其底层采用哪种模型。
交易通常还涉及数字签名。签名用于证明交易由相应私钥持有者授权,节点会依据公钥、签名和交易规则进行验证。私钥保管、签名算法以及交易格式属于钱包和协议实现的重要基础。
点对点网络与数据传播
区块链节点通常通过点对点网络通信。节点需要先发现其他节点,再建立连接并交换交易、区块或状态数据。节点发现可以依赖引导节点、分布式哈希表等机制;节点之间还会交换地址、协议能力和连接状态等信息。
数据传播常见两种形式:一种是将新交易或新区块向多个邻居转发,形成类似广播或 gossip 的扩散过程;另一种是两个节点之间针对特定数据发送请求和响应。前者有助于扩大传播范围,后者适合按需获取区块、状态或证明材料。
网络协议还要处理身份认证、加密通信、连接保活、断开通知、协议协商和异常重传等问题。以采用分层网络架构的系统为例,交易传播网络与区块传播网络可能分别由不同客户端或协议栈负责,客户端之间也可能通过本地接口交换执行结果与共识信息。
共识、分叉与最终确认
共识规则规定节点如何验证交易和区块,以及在多个候选链或候选区块之间如何选择。工作量证明通过要求区块满足目标阈值来增加创建区块的计算成本;节点会检查区块头、交易和难度等条件。采用其他共识机制的系统,则可能依据验证者、投票、权重或其他协议规则推进链条。
多个节点在相近时间提出有效区块时,网络可能暂时出现分叉。节点随后依据协议选择一条链继续扩展,另一条链上的区块可能变成不再延续的旧分支。区块高度表示区块在链上的层级,但在分叉环境中,同一高度可能出现多个区块,因此高度不一定能单独作为区块的全球唯一标识。
确认数量、最终性和可逆程度取决于具体共识协议及网络运行状态。某些系统通过持续累积后续区块提高历史修改成本,另一些系统通过明确的投票或最终性规则确认区块。阅读技术文档时,应区分暂时被多数节点接受与协议层面达到最终确认这两个概念。
适用范围与常见问题
上述概念适用于理解公有链或其他分布式账本的基础架构,但具体实现可能不同。例如,交易模型、区块大小、节点角色、网络分层、状态树格式和共识算法都由各自协议定义。分析某个具体系统时,应以其协议规范和客户端实现为准。
常见问题一:区块链是不是只靠哈希保证安全?不是。哈希主要提供完整性关联和数据摘要,系统安全还依赖数字签名、节点验证、网络传播、共识规则和密钥管理等环节。
常见问题二:节点保存的数据是否完全相同?不一定。全节点通常保存并验证较完整的链数据,轻客户端可能只请求区块头、证明或特定状态。不同节点能否被视为达成共识,取决于它们是否依据相同规则接受相同的有效链。
常见问题三:区块写入后是否绝对不能修改?区块链通过链式哈希和共识机制提高历史修改成本,但可逆程度仍取决于具体协议、网络参与情况和攻击条件。理解系统时,应同时考察数据结构与共识安全边界。