
先理解区块链中的“网络”
区块链网络通常由许多节点组成。节点可以理解为运行区块链客户端的计算机,它们通过互联网交换交易、区块以及验证所需的信息。与由中心服务器统一处理请求的系统不同,区块链节点需要按照约定的协议相互通信,并各自验证收到的数据。节点保存或处理的数据范围,取决于具体客户端及其运行模式。
P2P是“点对点网络”的简称,表示节点之间可以直接建立通信关系。它并不等于每个节点都与所有其他节点连接,而是每个节点维护一定数量的对等节点,并通过这些连接传播信息。一个节点收到新交易或新区块后,可以转发给其他节点,使信息逐步扩散到网络中。

节点发现、UDP与TCP分别做什么
节点发现是指新加入网络的节点寻找可连接对象的过程。以太坊执行层资料中,节点可以先通过引导节点获得一批邻居信息,再与这些邻居建立联系。引导节点主要承担初始介绍作用,不等同于日常负责同步整条链的中心服务器。节点记录还可以包含身份、地址、端口和支持协议等信息,以便双方判断能否通信。

UDP和TCP是互联网传输层中常见的协议。UDP功能较少,不负责完整的重传和错误检查,因此开销较低,适合用于快速发现节点和传递初始信息。TCP则提供更完整的连接与数据传输能力,适合交换结构较复杂、需要可靠传递的信息。这里的区别是一般网络技术原则;具体区块链客户端如何组合这些协议,应以其协议规范为准。
握手、协议栈与消息传播
节点找到彼此后,还需要确认身份、建立会话并协商双方支持的功能。以太坊执行层资料将这类过程分为多个协议层:底层负责会话建立和安全通信,进一步的协议规定如何发送问候、保持连接、断开连接以及交换具体数据。双方通常要比较各自支持的子协议,只有共同支持的功能才能在本次会话中使用。
区块链资料中常见的gossip可译为“八卦式传播”或“泛洪式传播”。它表示一对多的信息扩散方式:一个节点把消息发送给若干邻居,邻居再继续转发。与之相对,一对一请求响应是特定节点之间的直接交互,例如一个节点向另一个节点请求数据,再接收对应回复。两种方式可以同时存在,前者适合传播新交易和新区块,后者适合查询或同步特定信息。
交易、区块与哈希如何关联
交易是区块链中要记录和验证的操作。交易先在节点之间传播,随后可能被收集到区块中。区块通常包含交易数据以及用于连接前后区块的元数据。比特币区块链的资料说明,每个区块会记录前一区块头的哈希,因此修改历史区块中的交易,会影响该区块及其后续区块的关联结果。
哈希函数会把输入数据转换为固定形式的摘要。输入内容哪怕发生细微变化,通常也会得到不同摘要,因此哈希可以用于识别数据变化和连接区块。不过,哈希本身不是加密保存,也不代表数据不可读取;它主要用于完整性校验、标识和构造验证关系。
默克尔树与交易验证
当一个区块包含多笔交易时,可以先分别计算交易标识,再将这些标识两两组合并继续哈希,最终得到一个默克尔根。默克尔根会写入区块头。这样,验证某笔交易是否包含在区块中时,不一定要取得全部交易,只需结合区块头中的相关信息和必要的中间哈希进行检查。
默克尔树解决的是数据组织与证明效率问题,并不单独负责判断交易是否合法。交易是否有效,还需要节点依据相应协议规则检查,例如输入是否可用、签名是否符合要求,以及是否存在重复花费等。
UTXO、重复花费与共识规则
UTXO是比特币模型中的“未花费交易输出”。比特币并不是把余额简单存放在钱包账户里,而是由后续交易引用此前交易产生的未花费输出。新的交易使用一个或多个UTXO作为输入,并生成新的输出;已经被使用的输出不能再次作为有效输入,否则就构成重复花费。
共识规则是节点用来判断区块和交易是否有效的一组共同规则。节点各自验证数据,只有符合规则的数据才会被接受。比特币资料还介绍了工作量证明:矿工需要找到满足难度条件的区块哈希,区块之间的哈希链接和持续追加的区块共同提高修改历史记录的成本。该机制的具体适用范围是采用相应共识设计的网络,不能直接套用于所有区块链。
以太坊不同网络层的适用范围
以太坊资料区分执行层和共识层网络。执行客户端负责交易传播等执行相关通信,共识客户端参与区块传播以及其他共识信息的交换;两类客户端之间还需要通过本地接口通信。由此可见,“区块链网络”不是一个单一协议,而可能由节点发现、会话安全、交易传播、区块传播和客户端内部通信等多个部分组成。
理解这些术语时应注意适用范围。P2P、TCP、UDP、哈希和默克尔树属于较通用的技术概念,但具体协议名称、客户端角色、消息格式和共识机制可能因区块链而异。看到某个术语时,最好同时确认它属于网络层、数据结构、交易模型还是共识层,避免把不同层次的概念混为一谈。
常见问题
问题一:节点越多,网络就一定越安全吗?不一定。节点数量只是网络结构和参与者分布的一个因素,安全性还与验证规则、客户端实现、通信安全、共识机制以及节点运行方式有关。
问题二:区块链中的“确认”是不是交易传播成功?不是。传播表示交易被节点转发或接收;确认通常还涉及交易被纳入有效区块,并得到网络规则认可。不同网络对确认的具体含义也可能不同。
问题三:TCP、UDP或某个协议名称能代表整条区块链吗?不能。它们只是网络通信栈中的组成部分。完整系统还包括节点发现、身份验证、数据格式、交易和区块规则,以及节点如何达成一致等内容。