






















在区块链系统中,节点不仅是网络参与者,更是分布式状态机执行者。它们在运行过程中产生并维护多种类型的数据,通过共识算法确保全网状态一致。本文梳理节点存储的数据类型、存储位置及其与共识机制的关系,帮助读者全面理解节点运行原理。
节点运行前,需要生成并管理自身的身份信息和配置数据,这是节点安全与网络参与的基础。
存储位置:
主要内容:
节点私钥文件(UTC--timestamp--address)
BLS密钥文件(用于共识投票)
用户钱包账户密钥(加密私钥)
示例字段:
存储位置:
主要配置项:
网络:网络ID、Bootnode列表
共识:验证者地址、BLS密钥路径
P2P:端口、最大连接数、发现协议开关
性能:缓存大小、数据库句柄数
节点是账本和状态机的执行者,其核心存储包括区块数据、交易数据、状态数据和收据日志。
存储位置:
数据库分区示意:
区块头结构示例:
交易数据结构示例:
存储方式:
Trie + LevelDB
每个账户和合约状态通过 Merkle Patricia Trie (MPT) 管理,保证状态可验证和不可篡改。
数据类型:
账户状态
余额(Balance)
nonce
StorageRoot
CodeHash
合约存储
独立键值Trie
代码存储
合约字节码,按哈希索引
存储键构造示例:
保存交易执行结果、事件日志
支持轻客户端验证和状态回溯
节点存储的数据最终通过共识机制得到全网一致性。共识的本质是:
“确保所有节点在相同输入(交易顺序)下执行状态机,生成一致的状态根(stateRoot)。”
交易顺序确定
PoW:矿工竞争出块 → 最长链决定交易顺序
PoSA/BSC:验证者轮值出块 → 多数签名形成共识
执行交易
每个节点按交易顺序在 EVM 或状态机中执行
更新账户余额、合约存储
生成本地状态根 (stateRoot)
使用 MPT 计算新状态根
验证区块合法性
对比区块头 stateRoot
一致 → 接收区块,更新状态
不一致 → 拒绝区块
| 链/共识算法 | 核心机制 | 特点 |
|---|---|---|
| PoW(比特币) | 算力竞争出块 | 矿工通过算力竞争生成新区块,最长链原则决定交易顺序,存在短暂分叉,最终性延迟 |
| PoS(以太坊) | 验证者轮值 + 投票签名 | 验证者按持币权重轮流出块,多数签名形成最终性强的区块,几乎不存在分叉 |
| PoSA(BSC) | 验证者轮值 + 投票签名 | 21 个验证者轮流出块,出块快速,状态几乎即时一致 |
| 存储类型 | 功能 | 共识作用 |
|---|---|---|
| 区块数据 | 历史账本 | 决定有效区块 |
| 交易数据 | 执行输入 | 保证交易顺序一致 |
| 状态数据 | 账户与合约状态 | 执行交易生成状态根验证一致性 |
| 收据/日志 | 执行结果和事件 | 支持轻客户端验证与审计 |
节点存储 多层次数据:身份与密钥、区块、交易、状态、收据/日志
共识核心是 状态一致性:节点执行相同交易,生成一致 stateRoot
状态根验证是 全网一致性的关键,确保每个节点在分布式环境下保持账本一致
总结一句话:节点存储数据是基础,共识决定交易顺序,状态根验证保证全网状态一致。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。