在穷鬼博主是怎么跑本地模型的一文中,我分享过我是如何用一套洋垃圾跑本地模型的。
在对本地模型祛魅了之后,我想着虽然本地模型玩过了,手上的这套玩意儿完成了自己的历史使命,但是本着能躺着就不坐着,能用起来就别浪费的原则,我又开始琢磨:这台本地服务器还能拿来干点什么?
于是一个心血来潮,我开始研究起了怎么在本地跑比特币节点。
Bitcoin Core 是比特币网络里最经典的软件。它既可以作为钱包使用,也可以运行一个完整节点,下载区块、验证交易、同步账本。简单来说,它是用来验证比特币这套规则的,不是用来挖矿的。
下载安装之后,软件会让你选择,是同步完整区块数据,还是使用节省空间的裁剪模式。
我一开始心想:同步个账本能占多大空间?于是我果断选择了完整同步。结果没过几个小时,我就感觉不对劲了。硬盘空间刷刷往下掉,已经没了 100 多个 G,进度却连三分之一都没到。
于是我开始清理硬盘。
先清缓存文件夹,再删之前提到的用于生图和视频的模型参数,然后把 ComfyUI、Stable Diffusion 里各种乱七八糟的插件也删了。删完之后一算,还是有点够呛。
没办法,只能求助人工智能。
在人工智能的指导下,我又关掉并删除了一些额外的索引数据。这里需要解释一下:我同步的仍然是完整区块数据,但索引文件是为了让节点更快地查询某些交易、地址或历史信息,这些并不是运行全节点的必要条件。于是我大手一点删除键,又腾出了将近 100 个 G 的空间,让我大大缓了一口气。
终于,当我四舍五入把那块 1TB 硬盘都快删干净的时候,我的 Bitcoin Core 终于完成了完整同步。请见下图。
Image
图中显示的区块高度是 928344。
比特币大约每 10 分钟会生成一个新区块,所以区块高度也可以粗略理解为比特币世界里的时间刻度。懂行的人看到一个区块高度,大概就能判断那是哪个时间段发生的事情。
下面还有一个验证进度,显示的是:0.999999592173629。
Bitcoin Core 的验证进度,本质上是在估算,你的节点已经验证到的区块,距离当前网络最新状态还有多远。由于新区块大约每 10 分钟就会出现,而现实时间又一直在流动,所以除非你刚好卡在最新区块生成并同步完成的那一瞬间,否则它通常显示的是一个非常接近 1 的数字,而不是一个完美的 1。
为什么要运行完整节点?
对个人来说,最大的意义是自己能够验证从创世区块以来的交易和区块,不用完全依赖第三方告诉你“你的余额没问题”。
另外,隐私性也会更好。因为如果你每次都通过公共区块浏览器或者第三方钱包服务器查询某些地址,时间长了,别人就有可能把你和这些钱包地址关联起来。而连接自己的节点之后,这类查询就可以尽量在本地完成,少一点对外暴露。
对于整个社区来说,一个个独立运行的完整节点,就是分布式网络最好的实例体现。你的节点主要是在帮你自己验证账本,但与此同时,它也在维护这套网络规则:什么样的区块是有效的,什么样的交易是有效的等等。正是因为世界各地有这么多独立节点存在,坏人想要篡改账本、说服所有人接受一条假链,难度才会接近不可能。
这也是为什么我即使清空了自己的硬盘,也想把完整节点跑起来的原因,我希望能为这个社区贡献自己力所能及的力量。
有了本地运行的 Bitcoin Core 之后,还能做什么呢?一个很自然的方向,就是把开源精神贯彻到底,尝试一下 Trezor + Sparrow 的组合。
Trezor 是一家比较知名的开源硬件钱包厂商,有兴趣的读者可以自己去了解一下。这里不是广告,我也没有收钱。只是我之前也提到过很多次,但凡有开源和闭源两种选择,只要开源方案不是差到离谱,我一般都会优先选择开源产品。多的我就不说了Image,免得又被平台说成疑似营销推广Image。
Sparrow 则是一个开源的比特币桌面钱包。稍微了解一点的朋友可能会问:Trezor 不是已经有自己的钱包软件了吗,为什么还要用 Sparrow 来管理钱包?
简单说,Sparrow 更像是一个功能更完整的比特币钱包管理工具。它可以连接硬件钱包,也可以连接你自己本地运行的 Bitcoin Core 节点。这样一来,硬件钱包负责保管私钥,Bitcoin Core 负责验证账本,Sparrow 负责把两者连接起来,让你更清楚地看到自己的地址、交易和 UTXO。
不过因为篇幅关系,而且我自己对这块的研究只是皮毛,等之后有机会再来和读者朋友们详细聊聊。当然,如果有懂这方面的读者,也欢迎在评论区分享自己的独到见解。