比特币区块链节点存储了哪些关键数据?
比特币节点作为网络的守护者,会存下整个区块链的历史数据,包括每个区块里的交易列表和那些scriptPubKey验证脚本,这些东西字节量确实不小,尤其交易多起来后累积的空间压力大,每个全节点都得把这些同步到本地数据库里,这样才能独立验证交易合法性,区块链本质上就是这些数据的有序链条,通过Merkle根之类的压缩技巧,让区块头小巧高效,同时保持交易数据的完整校验。

节点具体存的什么?
比特币全节点会下载并存储所有区块,从创世块开始,每个区块大约1-2 MB,现在整个链超过500 GB,这些区块里头有区块头(80字节固定)和交易列表,交易列表是主体,每笔交易大小从几百字节到几KB不等,里面输入部分有scriptSig(解锁脚本),输出有scriptPubKey(锁定脚本),scriptPubKey通常是25-34字节的P2PKH或34字节的Taproot类型,但复杂脚本能上百字节,累积起来一个区块几千笔交易,空间就占大头了。
节点用数据库如LevelDB把这些存本地,区块头、交易、UTXO集(未花费输出)分开管,UTXO集是优化,帮节点快速查余额和验证新交易,不用每次从头扫全链,每个全节点同步时,从其他节点拉数据,验证签名和规则后存盘,轻节点如SPV只存区块头(几GB),不存交易细节,靠Merkle证明查特定交易。
共同记账本
区块链就是这些本地数据的全局共识版本,每个节点存的数据库内容一致,通过哈希链连起来,防止篡改,压缩上,区块头里有Merkle根,这个根是所有交易ID的Merkle树顶点,只32字节,就能验证整个交易列表完整,不用头里塞所有交易,交易列表本身不压缩,但节点可选修剪模式,删老交易只留头和UTXO,省空间但牺牲历史查询。
假设一笔简单转账,scriptPubKey是 "OP_DUP OP_HASH160OP_EQUALVERIFY OP_CHECKSIG",字节约25,乘以链上亿笔交易,总空间上TB级,全节点必须全同步,才能跑规则校验新块,拒绝无效交易,保持网络纯净。
节点存储细节
交易列表占用
每区块交易数从几百到几千,平均500字节/笔,SegWit后witness数据分离,减小块体,但总字节不小。
scriptPubKey作用
这个脚本定义怎么花UTXO,字节虽有限,但全链累积影响存储,Taproot优化后更紧凑。
Merkle根压缩机制
区块头用Merkle根概括交易树,轻节点只需头,就能用证明路径验证单笔交易存在,不存全列表。






