
自己跑一个节点,以及为什么多数人并不需要
钱包每次给你显示余额,都是在复述某台服务器告诉它的话。你看的不是区块链。你看的是一台计算机对「区块链上有什么」这一问题的回答,而你凭信任接受了这个回答。
自己跑一个节点,就是不再这样做的办法。它也比通常所说的更费事,而且对多数人来说确实没有必要。两者都是真的,有意思的是弄清你站在分界线的哪一边。
节点究竟是什么
节点下载区块链,并独立检查每一条规则。签名有效吗?有没有东西被花了两次?每个区块都达到难度目标了吗?coinbase 交易支付的补贴对不对?
这不是挖矿。挖矿是争夺产出新区块的竞赛。节点只做验证,而这个区别很要紧,因为验证正是决定「对你而言什么是真的」的那一部分。
要点全在这里。当你运行节点时,你不向任何人询问一笔交易是否有效。你的机器根据规则自行推断。如果某个区块违反了规则,你的节点就拒绝它——不管有多少别人接受了它,也不管任何区块浏览器怎么说。
你真正得到的三样东西
验证。 你亲自核对共识,而这恰恰在最不方便的时候最要紧:有争议的分叉、链分裂,或共识缺陷。Ravencoin 的共识故障就是那种「浏览器怎么说」与「规则怎么说」可能短暂背离的事件。节点永远不必猜该跟随哪条链。
隐私——这是被低估的一项。 当钱包向公共服务器查询余额时,它就在告诉那台服务器哪些地址是你的。更糟的是,通过扩展公钥同步的钱包,会把推导该账户将来用到的每一个地址的能力交出去——恰恰是链上隐私所依赖于避免的那种关联。问你自己的节点,就没有任何人可告诉了。你是在问你自己。
没人能拒绝的广播。 你的节点直接把交易宣告给点对点网络,而不是交给一个可能把它丢掉的服务。
代价,照实说
存储。 一个完整的、保留归档的比特币节点要占几百 GB,而且逐年增长。修剪能大幅削减这一点,但修剪过的节点丢掉了历史,这会限制重新扫描,也意味着它无法喂给索引器。
初始同步。 从创世区块起验证整条链,在好硬件上要几个小时,在配慢硬盘的树莓派上要好几天。这只做一次,而且确实乏味。
在线与维护。 关着的节点就是落后的节点。你回来时它要追赶同步,这期间钱包要么等待,要么退回去用别人的服务器。软件要更新,硬盘会写满,共识变更会发布。
没人提的那种失效方式。 疏于维护的节点比没有节点更糟。如果它落后了几周、悄无声息地卡住,或者运行着一个拒绝了别人都接受的软分叉的版本,它会信心十足地给你错误的答案。自我验证只有在做验证的那样东西本身健康时才有用。
诚实的结论
多数人不应该跑节点,这没什么丢人的。
好处随你持有多少、交易多频繁,以及你有多在意不让第三方知道哪些地址属于你而增长。对于持有一笔不大的数额、几个月才发一笔交易的人来说,节点是一种爱好——确实有趣——但并非与付出相称的安全提升。
它真正值得,是当你持有一笔丢了会很疼的数额;交易频繁到第三方能拼出你活动的真实图景;经营着一门出于监管或运营原因需要独立验证的生意;或者你本就是宁愿拥有基础设施、而不是租用它的那种人。
谁说自主保管必须有节点,是在夸大。谁说节点什么都改变不了,是在低估。它以特定的代价买到特定的东西,而这笔账每个人算出来都不一样。
SSP 实际上允许你做什么
下面这部分让这件事变得具体,而非停留在理论。
SSP 不会把你绑死在我们的基础设施上。设置里可以按链覆盖后端——node、api 和 explorer 都可以编辑,钱包会在运行时把你的覆盖值叠加在默认值之上。实现里有个巧妙的细节:如果你保存的值和出厂默认值一模一样,它会被从存储中删掉而不是存下来,于是覆盖存储里只会有真正的改动。
所以,如果你运营着自己的基础设施,就可以让 SSP 指向它,不再查询我们的。
现在说那条诚实的附注,因为它是真实存在的。对于 UTXO 链,SSP 对接的是一个Blockbook 风格的索引器,而不是一个裸节点。光跑 bitcoind 是不够的——你还需要在其上运行 Blockbook 索引,这比一个普通全节点要重:更多磁盘、更多配置、更多要维护的东西。对于 EVM 链门槛更低,因为指向你自己的 RPC 端点更接近直接替换。
「你可以用自己的节点」与「用自己的节点很容易」之间,隔着一段实实在在的距离,我们宁愿把它点明,也不愿让设置里的一个输入框暗示出比实际更平坦的道路。
还有一点值得讲清:自己跑节点改变的是链数据服务器能看到什么。它并不改变你的两台设备协调时中继所经手的内容。那是两个独立的问题,各有各的答案,解决一个并不能解决另一个。
如果你想试试
先从你最在乎的那条链开始,而不是全部。用一台不介意一直开着、配有真正 SSD 的机器——在机械硬盘上做初始同步确实痛苦。让它完全同步之后,再依赖它做任何事。然后让一个钱包指向它,看看你能否察觉出差别。
也许你察觉不到,这也是一个正当的结果。你会学到关于自己威胁模型的具体认识,这比你起步时的那种抽象概念更有价值。
即便你永远不跑一个节点,背后的那个道理也值得记住。你见过的每一个余额都来自某处,是某人的服务器产生了它。知道自己是在信任一个回答——而不是以为自己看到了链本身——就是大部分价值所在。跑节点,只是让你有了停止这样做的选择。


