区块链/等级 X · 回到原点/10.2 路线/课程 6
第6步:创建自己的节点
校验和、索引,以及那台拒绝处理的机器
材料精简后的节点需要约20GB的可用空间,而完整节点则需要1TB的可用空间。已安装 GPG 软件,用于验证下载文件的开发者签名。诸如 Fulcrum 或 electrs 这样的本地 Electrum 兼容索引工具。
好奇
- 用户如何确认自己下载的软件未被中间人或被攻破的仓库篡改?
- 为何通过公共服务器查询余额就等同于向第三方透露自己的财务状况?本地索引器又是如何解决这个问题的?
- 通过远程权威机构验证交易与直接根据区块链规则独立检查交易之间有什么区别?
探索
- Bitcoin Core(3.1.5课)会验证从创世区块到最新区块的每一个区块,确保它们都符合共识规则。在运行任何版本之前,用户必须通过SHA256SUMS和SHA256SUMS.asc文件来检查文件的完整性。这些文件包含了由多个独立开发者签名过的加密哈希值。通过导入这些开发者的GPG公钥并验证签名,用户可以确认该二进制文件确实来自可信赖的开发者,从而避免运行可能窃取密钥或破坏数据的被篡改代码。
- 初始区块下载过程会获取并检查整个区块链数据,其大小超过600GB,根据硬件条件与网络连接状况,这一过程可能需要数小时到数天不等。全节点会将所有历史数据存储在磁盘上;而剪枝节点虽然会对每个区块进行验证,但只保留最近的区块(最小值为prune=550,单位为MiB),因此结合UTXO集后,其存储大小大约在10–20GB之间。这两种节点都会独立执行共识规则,从而让用户在无效交易进入自己的内存池之前就将其拒绝。
- 软件钱包通常会连接到远程服务器以获取余额信息并发送交易请求。这样一来,钱包的地址和余额就会暴露给该服务器的运营商。为保护隐私,用户可以在 Bitcoin Core 之外运行诸如 Fulcrum 或 electrs 这样的本地 Electrum 服务器。这些本地服务器提供与标准钱包兼容的 API,但所有操作都在用户的机器上完成。将钱包连接到这样的本地实例,就能确保地址历史记录和余额数据不会离开用户的私有网络范围。
- 直接通过 RPC 连接也是将钱包与 Bitcoin Core 相集成的另一种方式,完全无需经过中间服务器。这种方式允许高级用户直接在自己的节点上自定义交易结构及费用计算逻辑。无论使用 RPC 还是兼容 Electrum 的索引工具,关键区别在于数据源由用户自己掌控。节点会先在本地检查 UTXO 集合,确认资金未被使用且符合协议规则,之后才会对交易进行签名。
- 运行节点意味着信任从集中式的中介机构转移到了数学验证机制上。本地节点还会广播用户自己的交易记录,因此没有任何钱包服务器能够擅自拒绝或记录这些交易。当然,这也意味着用户需要承担硬件成本和维护责任:他们必须负责软件更新、磁盘扩容以及确保系统持续运行。不过,正是这种自主性保证了即便交易所、钱包提供商或服务器运营商出现故障,用户也不会失去对资金的访问权或控制权。
- 检查设置。在 Bitcoin Core 中运行 getblockchaininfo 命令,确认区块数量与公共区块链浏览器显示的当前区块高度一致,并且 initialblockdownload 的值为 false;再将 getbestblockhash 的结果与浏览器中最新区块的哈希值进行比较。在钱包的服务器设置中,要确保其指向的是您自己的节点或 Electrum 服务器,而非公共服务器。如果关闭公共服务器后余额仍能正常显示,那就说明钱包正在从您的节点获取数据。
关键事实
- SHA256SUMS.asc 文件由多个独立的构建者签名,用以验证 Bitcoin Core 二进制文件的完整性。
- 经过剪枝的节点会验证所有区块,但仅保留最近的那些,存储容量大约在10–20GB左右。
- 运行如 Fulcrum 或 Electrs 这样的本地索引器,可以防止钱包地址和余额被泄露给第三方服务器。
- 初始块下载需要检查超过600GB的块数据,耗时数小时至数天。
- 直接 RPC 连接使钱包能够无需中间服务器层即可与比特币核心进行交互。
- 本地节点会独立根据共识规则对交易进行验证,在广播之前拒绝无效数据。
练习 九、六、三、一
9收集列出在搭建和验证个人比特币全节点环境时所需的9个不同组件或步骤。
6归类根据功能将这9个项目分为6类:来源验证、存储管理、网络同步、隐私保护、软件集成或维护。
3提炼将这6个原因简化为3个核心理由,说明为何运行本地节点比依赖公共服务更具安全性。
1凝结自我验证在降低计算与存储成本的同时,也消除了对第三方信任的依赖,但这二者之间存在权衡。
事实核查
日期、数字及数据均依据下方列出的已发表资料进行核实。