比特币并不存在一个集中存放、由某家公司维护的总数据库,它的账本分布在全球各地运行的节点中。任何一台完成同步的全节点,都会保存一份区块链数据副本,并通过点对点网络不断接收、验证和转发新区块。正是这种多节点复制机制,让比特币不依赖单一服务器,也没有所谓的总机房可以被关闭或篡改。不同节点保存的数据可能并不完全相同,但只要遵循同一套共识规则,最终都会围绕同一条有效链运行。

最容易接触到的是Bitcoin Core本地数据目录。Linux系统默认位于$HOME/.bitcoin/,macOS通常在~/Library/Application Support/Bitcoin/,Windows则默认使用%LOCALAPPDATA%\Bitcoin\,用户也能通过-datadir参数改到其他硬盘。目录里的blocks/主要保存区块文件,常见形式是blkNNNNN.dat;blocks/index/保存区块索引;chainstate/则记录当前仍未花费的交易输出,也就是系统用来快速判断余额和可花费状态的重要结构。

这里有一个容易被忽略的技术细节:比特币不是把每个地址的余额直接写成一行数字,而是通过UTXO模型计算可用资产。交易消耗旧的未花费输出,再生成新的输出,节点依据历史区块重建当前状态。chainstate更像是经过压缩后的当前账本快照,而blocks保留的是区块和交易历史。想按照交易哈希进行更高效的全链检索,还可以启用可选的txindex=1,系统会额外建立交易索引,但这并不是每个节点默认都需要开启的功能。
并非所有节点都保存完整历史。开启修剪模式后,Bitcoin Core会删除部分已经验证过的旧区块文件,只保留验证当前链所需的状态和一定范围的数据,这类节点占用空间更少,却不适合承担完整历史查询。区块浏览器、交易所和数据分析平台看到的内容,通常来自它们自行运行的节点、索引服务或云端数据仓库,页面展示只是对链上数据的整理,并不等于比特币本体存放在那里。平台停止服务,链上记录仍然由其他节点继续保存。

还需要把账本数据和钱包资产分开理解。比特币并没有把币装进某个文件夹,钱包主要管理私钥、地址和交易记录,真正决定资金能否被花费的是私钥签名,而不是某个网站账户或本地余额数字。区块链负责公开记录哪些UTXO存在、曾经如何流转;钱包负责证明谁有权使用它们。丢失钱包文件未必意味着链上数据消失,但私钥没有备份,链上那部分资产就可能再也无法移动。理解这一层关系,才能看清比特币数据库的真实形态:它不是一台服务器里的单一文件,而是由区块、状态、索引和密钥管理共同构成的分布式账本体系。