E22·Bitcoin Core V30:沉默不是答案
曾汨: 听众朋友们大家好,欢迎收听《亿聪哲史》第 22 期,我是主播曾汨。
阿剑: 我是主播阿剑。
曾汨: 10 月 12 号,Bitcoin Core v30.0 正式发布。这个版本的 Bitcoin Core 的更新在社区里引发了广泛的争议和讨论。今天这期播客,我们想来注意一下热点,围绕这一次的版本更新来展开一些讨论。我们又一次邀请了老朋友 Jeffrey 老师来聊一聊这次的更新。嗨,Jeffrey 老师,先和大家打个招呼吧。
Jeffrey Hu: 嗨,大家好,我是 Jeffrey。非常高兴又来做客到《亿聪哲史》的播客。然后这次也是非常高兴我们来聊一下近期一个比较好玩的话题,就是 Bitcoin Core 的新的一个版本。
曾汨: 好的,那首先让我们进入今天的主题。我们想先请教一下 Jeffrey 老师,我们知道 Bitcoin Core 是比特币生态里面最重要的一个软件,但很多人对它的运作其实很陌生。在深入今天的这一次具体更新的讨论之前,你能不能先帮我们科普一下,比如说你有没有研究过它的一个开发的流程,以及说 Bitcoin Core 的版本号的命名和大致的发行周期是怎么样的呢?
Jeffrey Hu: 好呀,我先说一下我自己的一些观察吧。就 Bitcoin Core 其实开发的流程从这两年来看,它的发行的还是挺有规律的,基本上都是 4 月和 10 月会发行两个大的一个版本,比如说 29.0 就上半年,然后刚过去的这个周末是 30.0 的这个版本。然后它的开发的流程大致是这样,一般是会在社区里面去进行大家的一个讨论,就特别是在邮件组里面,很多开发者会去提出自己的想法,然后大家会讨论是不是有一些问题或者觉得这个功能还不错,然后也会做相应的一些测试,也会先部署在一些比如说测试网上面去运行。与此同时呢,就是有些开发的一个代码,也会先以这个 PR 的形式去提交到这个 Bitcoin Core 的这个软件的这个代码库上面。然后大家有很多的开发者也会一块来进行 review,如果很多的开发者都会 review 之后,再由 Bitcoin Core 这个代码库的维护者最终再合并到代码库里面,然后再根据版本的这个收集的情况发布到相应的版本的发布里面去。整体性的一个流程是这样子的。它的整个的版本的命名其实也挺有意思的,因为我们可以看到就是这次已经是 30.0 了,可能和很多朋友想象的不太一样,就是 Bitcoin Core 的这种软件其实是一直比较频繁的会有很多的迭代的,然后最近也有一些像 Newsletter 在关注 Bitcoin Core 上面的这个开发的一些进展。当然除了我们之前播客一直在推荐的 Bitcoin Optech newsletter 之外,像另外有一个 newsletter 是 Christine 去写的一个 newsletter,
然后里面也是会收集到每一周 Bitcoin Core 上面开发的一些进展,所以这个也是比较推荐大家去关注的一个 newsletter 了。对,然后 Bitcoin Core 的版本号其实也是挺有意思的话题的。就说到版本号,目前整个软件行业里面主流在用的可能会有两种版本号的命名的方式。一种是类似于像叫日历的这种版本号,另外一种是这种语义化的版本号。其实日历这个是以前用的比较多,顾名思义就是按照时间和年份来命名的版本号。像比如说每年的这个,如果玩足球游戏的话,就每年的 FIFA 都会有一个新的一个 FIFA 的游戏出来。它就是按照下一个年份来命名的。然后呢,更早一些的像比如说这个 Windows 95,98,然后红警 95,98 这种,这一说就暴露年龄了,就很早期的这种游戏,包括软件都是以这种年份来命名的,当然呢,好处就是很直观,就是能看出来这个哪一版本是哪一年发布出来的,但坏处就是这个基本上你也会卡死的,就是这一年可能就是这一个大的版本,甚至比如说 Windows 98 可能还会在后续几年可能还推出了一些这个补丁啊,或者是一个小的版本号。那就让人觉得不是特别直观,能理解到这个版本到底是哪一个版本以及第几代了。就包括可能 9598,包括 Windows 2000,其实数字上不是那么连续嘛。大家也会没有办法看到中间是不是还有一个 Windows 99 什么的或者之类的,不是那么有连续性。所以呢,现在整个行业里面用的可能会更主流的一个版本号,是这种语义化的版本号。就基本上会分三到四位的数字,然后第一位就是一个大版本号。那基本上是会有一些大的功能的更新,然后一些 API 的比较大的不兼容的变化,
都放在这个大版本号里面去更新掉。在这个第一个大的版本号之后还会有小版本号,基本上是一些小的变化。然后再到第三和第四位就是一些补丁或者是一些 bug 的一些修订了。这基本上是采用这种三到四位的这种版本号的方式来做这种语义化的这种版本。说到这个大版本号的话,具体怎么算大,怎么算小,其实也是每个软件各有各自不同的一些定义。像 Bitcoin Core 的这个版本号是从最早是 0 点几,到 0.10,0.11,然后一直到了 2021 年的 9 月份,就 Bitcoin Core 的版本号是在 0.21 之后就直接变到了 22.0。因为当时大家有一个讨论就是说,感觉现在软件已经比较稳定了,我们可以直接把这个大版本号从零点几这个命名的方式直接改成到一个整数的这种。就是以 22.0 的这种形式来进行版本号的命名。所以后面也是从 21 年之后就一直延续到了这种传统,就是基本上是大的数字,每次加一加一这种方式去更新大的版本号了。当然每次还会有不少后续的一些小版本号的一些更新。像比如说在前一个版本里面,就是 29 的这个版本里面也有非常多的一个 29.1、29.2 这种版本的不断的更新,会去微调一些功能出来。对,所以这个是一个比较有意思的一个变化吧。其实我自己个人更喜欢这种零点几的这个版本好,因为它感觉上是更谦虚一些吧,就是感觉好像一直是处于一个不完美的状态,然后是不断的去迭代。像包括以前还有很多的软件,像比如负 8 那个软件,它一直坚持不升到 1.0,就是一直都是 0 点几这种版本去不断迭代软件,所以也是我不知道是不是开发者心态上会有变化,或者是行业的这个心态上有些变化,
然后改成了一种大的数字的这种版本号的变化,但是是 0 点几的版本号算是一种历史吧。当然说到这的话,还有一些比较有意思的话题,就是前几个月当时有一个比较有名的 AI 的一个问题,就是说让 AI 去比较 0.9 和 0.11 哪一个数字更大。那其实我当时我第一反应,我也是想到,哎,那不是 0.11 比 0.9 更大吗?因为我当时一看就是感觉像这个是版本号,当然是 0.11 比 0.9 更大了。然后后来我才想它不对,应该是 0.9 更大。所以这也是一个看版本号多之后一个先入为主的一个误解吧。这是版本号这块,然后说到这个整个的发行的一个周期就是确定好这版本号之后呢,现在 Bitcoin Core 的这个发布的方式也是跟其他很多的开源软件是类似了。基本上是从去年开始都固定到每年的 4 月份,上半年 4 月份会发布一次,然后呢 10 月份会发布一次。当然基本上是这么一个流程,以往时间会相对更灵活一些,可能会三月份,六月份,然后下半年可能会九月份,十一月份,甚至十二月份都可能会做这种大版本的一个发布,但目前来看还是会跟其他很多开源软件一样,就类似于像 Ubuntu 那种开源软件一样,四月份,十月份。基本上是半年一个周期会有一个大的版本号的一个升级和迭代。主要这些。
曾汨: 好的,感谢 Jeffrey 老师的科普。那么在了解了这一系列背景之后,让我们把焦点拉回今天讨论的主角,也就是 Bitcoin Core 的 v30.0 版本。那么首先我们的第一个问题是,这一次的版本更新具体带来了哪一些改动呢?Jeffrey 老师给我们讲一下。
Jeffrey Hu: 对,这次改动的内容我看还是挺多的。我们可以先聊这次争议最大的一点,就是把 OP_RETURN 可以携带这个数据变得更大的这一点。这个是这次可能会争议最大的一个功能,就相当于是理论上是去掉了 OP_RETURN 这个能携带争议数据的这么一个限制。这是一个,然后另外一个观察到的是这个 Bitcoin Core,这次是把那个 RBF 的支持也是变得更加灵活一些了。就以往可能会需要再打一个标志位,那现在其实是没有这个 RBF 的标志位的话,那么这笔交易也是可以去通过 RBF 的这个手续费追加的方式去替换掉,更快让这个发出去的交易能够确认掉。这是第二个,然后第三个呢是这次应该也是实验性的加入了这个 TRUC 的交易,叫 TRUC 这种交易,一般会称为这种 v3 交易,就是第三版这种交易。但这一次的这个 TRUC 呢,它的英文全称叫做拓扑受限直到确认的这种交易。会增加一些限制,不像前两个功能可能是都是相当是更灵活更解除限制,然后第三个功能是相当增加了这种的限制,就是让这个交易里面的这个限制更多,然后降低这个节点处理的复杂度。这是第三个功能,其实还有很多功能,就包括一些简化了这个 Bitcoin 的二进制这个可执行文件的这个入口,然后让以往这个比较多的几个执行文件可能能合并成一个,就简化这个节点的用户运维的一个复杂度,还包括了一些有些接口的一些变更一些优化等等等等。这次其实更新的东西还是比较多的,也符合一个大版本号去做更新的这么一个内容,所以内容还蛮多的,但比较关注的应该还是在 OP_RETURN 的这个限制里面。
阿剑: Jeffrey 老师刚刚讲的这个 TRUC 的交易的这个格式,它其实主要是用在 CPFP,就子为父偿的手续费追加法上是吗?
Jeffrey Hu: 对的对的。就是以往那个 CPFP 在共识规则里面,其实倒是你可以去不断的去追加。相当是就是在 UTXO 里面,你可以去以一个后续的一个交易去提供一个更高的手续费,以此来补偿前一笔交易里面可能不够的这个手续费。这样形成一个整体,去让整个矿工去看哦。我如果打包这两个交易,如果看成一个整体的话,还是有利可图的,以此来去让前一笔交易更快的能确认起来。但这样的话其实也就会有一个问题。那么可能就是子子孙孙无穷匮,比如说我构造一个非常复杂的一个 CPFP 的交易的一个链条,甚至能够形成一种类似树状的一个结构,那么矿工在去评估这类交易的时候,它可能就会比较复杂。他首先可能会要去看第一笔交易是不是合法,然后看第二笔,然后整个一个树状的一个结构的这么一个交易是不是都是合法,然后以此呢再去计算出来整个的这个交易里面的手续费,我如果打包的话是不是比较合理,那与此同时呢可能还要再去考虑,比如说还有一些交易可能会被像类似于 RBF 啊或者其他的方式替换掉,也有可能有些交易之间还会有冲突,那这样给到节点的这个压力和计算的这个复杂度就非常高。所以 TRUC 可能就想了另外一种方式,那我们就做一些限制,就不要让链条这么长了,每次只是允许只有一笔交易可以去用 CPFP 的方式去追加,后续的话呢,相当于是在 Bitcoin Core 的软件里面,我们就不去进行计算和处理和判断了,这样的话就降低了很多节点去判断的时候的一个复杂度,所以也是让这个交易能够更快地去传播验证,这样也有助于提高整个的网络上的一个效率。所以这个是这次 TRUC 这种交易能够去带来的一些实验性的新的功能。
曾汨: 我关注到还有一个变化是那个 Bitcoin Core 的钱包的格式也发生变化了是吗?因为以前老版本的 Bitcoin Core 的钱包,大家备份钱包文件的时候都是 wallet.dat 那个文件,但是这个这次的版本更新好像是全部是基于描述符的一个钱包了。之前的那些老的格式就要重新迁移,重新调整了。
阿剑: 对,这个应该是我们的听众,如果你使用 Bitcoin Core 作为你的钱包软件的话,要特别关注的一个东西就是从很久以前开始 Bitcoin Core 的开发,就在有意识的计划,让原本的这种钱包的这个数据库的这个格式就是让它退休,然后使用新的这种我们称为基于描述符的这种格式供用户的这个使用,因为原本的这款库的钱包它的格式它甚至它都不支持 BIP-39。所以它其实跟我们现在不管是移动端还是桌面端,用的主流的、比特币的、钱包的,它的使用的体验实际上都不太一样。它备份起来也会比较麻烦。它的这个可移植性是比较差的,相当于如果你使用 Bitcoin Core 的话,你只能一直使用 Bitcoin Core 来作为一个钱包,很难迁移,很难导入其他这个软件。但是使用基于描述符的这种钱包的话,可以想象它的可迁移性会更好一些。然后如果你再使用原本的这种旧格式的这个钱包的话,Bitcoin Core 的本身的这个文档也是提供了告诉你你该怎么手动迁移的这个文档。据我所知的话,这份文档也有中文的一本,所以我们的听众可以去搜索一下。
曾汨: 好的,那么其实刚刚听了 Jeffrey 老师的介绍,可以感觉到这次更新的范围还挺广的,更新了很多内容。但是这次的版本更新,无论是在它发布前还是正式发布以后,都在社区里面引发了非常激烈的讨论。有很多人关于这次更新都提出了很激烈的意见。甚至像 5 年没有主动发过推特的尼克·萨博,都出来发一条推特,呼吁说强烈建议,大家不要升级到这次的 v30 的版本。这就不免的让人感到非常好奇了。为什么这次的版本更新能引发如此大的一个争议呢?
Jeffrey Hu: 尼克·萨博这个事儿,我也是没有预料到的。这次的争议能够把它也炸出来,这个也是挺不容易的。因为上次比较活跃,我翻了一下他的推特,应该还是在 2020, 2021 年左右,这个时间段他还是比较活跃的。但在那个之后,他一直是,基本上是没有发过什么推特了。所以这次这个争议我也没想到会有这么大。因为这个争议其实也是从今年年初开始一直断断续续,然后有时候比较火,有时候可能相对这个冷一些,但是一直大家都是有不断的在讨论的。然后这个争议呢,主要集中在对于 OP_RETURN 解除限制之后,对于整个比特币网络来说,或者对于用户来说,是不是真的是一个好事情?这个大家一直都是有非常激烈的这种观点的一个碰撞的。有一派人可能就认为这个之所以解除 OP 的这个限制,因为有这个限制其实没有什么太多的作用。比如说用户想要去发一笔用 OP 能够携带非常大数据的交易,它始终是可以发出去的,通过现在很多矿池的 API,或者是给一个非常高的手续费,然后连接到了某些没有任何过滤器的这种节点,比如说 Libre Relay 这种节点,它都是可以帮你去传播出去的。所以设置这种过滤器有点自欺欺人,反倒不如把这个限制去去掉可能会更好一些。所以这是这一派人的主要的观点。然后另外一点呢就是认为可能如果在这个 OP_RETURN 上面去写出限制之后呢,可能能引导一些原来使用铭文啊或者是其他这种方式去发携带一些数据的交易的使用者。可能去引导到使用 OP_RETURN 上面,可能能会去用一种相对来说更优雅,对网络没有压力的方式去发送一些交易。而且呢这种两种交易之间的格式呢,一种是比如说在 inscription 在铭文里面,
是在隔离见证区域里面的,相应的数据如果放在 OP_RETURN 里面,它是没有隔离见证的折扣的,那可能还会给到很多去发铭文的人更多的链上手续费,那可能是不是反而对于维护整个网络安全还是一个好事情,因为我们收的手续费更多了。我们在前几期播客也聊到整个链上手续费水平一直还是比较低的,那是不是通过这种方式能够再增加一些链上手续费呢?对矿工来说可能也是一个好事。所以大家也觉得我们就放到 OP_RETURN 里面是不是更好一点?然后呢,还有一些观点就针对比如说过滤器这种,那么如果你采用一种更激进的这种自由主义的这种方式来看的话,就是我们应该允许各种交易都发出来。如果你有过滤器的话,实际上你是另外一种审查交易的这种形式。这样也不是符合比特币的精神等等等等。这是一派人的观点。然后另外一派人的观点也是很多人从一开始就提出反对意见的一派人的观点。就是比如说用 OP 的形式其实也是一种大区块主义的一种体现,就是想要去把很多数据都放在这个链上,然后也是变相的助推了很多非比特币的这个应用啊,包括一些资产发布在比特币链上,其实是某种程度上的这种妥协或者投降主义的这种思路在这块。更不用说就是尼克·萨博可能反对的一点,主要集中在就链上。存了各种数据之后呢。可能你会存一些各种非法或者违反道德的一些数据在比特币的区块里面。虽然你可以去用各种技术手段去把这部分数据去剔除掉,让它不存在你自己的节点的这个硬盘上面,但是在比如说比特币浏览器里面或者其他地方,可能其他很多人还是能够查看到,这对比特币也不是一个好的一个事情。甚至还有一些人觉得如果解除很多限制之后,还会有一种技术滑坡的一个风险。在这块。
可能未来会把很多的这种类似于和比特币本身无关的一些信息,包括一些应用都会放在这上面。就把比特币越来越做得像一个以太坊了。因为尼克·萨博这个事实上我认为也是比较有发言权的。因为他作为最早智能合约的提出者,其实在最早的时候,他还是比较喜欢去看到以太坊的智能合约的发展的。但后来呢在经历了一些事情,包括一些行业发展之后,其实他对于以太坊的这个智能合约,也是持有了一个相对比较负面的一个观点吧。所以呢这个是尼克·萨博,可能这次会比较反对这个 Bitcoin Core v30 这个版本的一些历史的一些原因。这是我自己的一些猜测。但是总体来说,对于这次 OP_RETURN 大概主要就会集中有两派截然不同的观点。Bitcoin Core 的支持者也会比较希望大家都会去升级到这个新的一个版本里面。毕竟它还会有很多新的功能,以及可能会有一些新的安全补丁方面的一些发布。但是另外一派人可能就会推荐采用,比如说运行一下 Knots,或者其他的一些比特币的替代型的,或者是其他类型的这种比特币的一些节点在网络上面。其实有个数据也能看出来,就最近 Bitcoin Knots 从今年年初来说已经节点有了非常多的增长,因为今年年初的时候,Bitcoin Knots 的节点全网公开了,可看到的数据大概有 400 多个节点。但是在 10 月份的时候,我看了一下数据,基本上是会增加到了 4000 多个公开可见的节点。Bitcoin Core 它和年初差别不是特别大,应该能够看到公开可达的节点都还是 18000 多个。所以可以看到 Bitcoin Knots 的使用者的数量是会在非常快的增长过程中的。
可能也是能够体现出来这个会有一些很强的一个分析在这,大家也会去用脚投票去运行一些其他的一些节点。
阿剑: 其实刚刚 Jeffrey 老师提到的一个关键词,我觉得我个人是非常认可的,就是技术降级。什么意思呢?在比特币的协议本身的这个基础之上,过去几年当中出现了相当多的不同的这个协议,尝试在它的扩展性或者是在其他方面去进行一些开发和创造,包括很多人心心念念的希望能够在比特币上去发行 token,那这个事情实际上之前已经有一些很好的这个协议,它已经能够做到在原有的比特币网络的转发限制之下,能够实现非常好的效果,不管是隐私性还是说它在状态膨胀,也就是 UTXO 级膨胀上,它会有一个比较好的这个效果,甚至于比如说像最早由 Taproot Assets 协议提出来的方法,称为 Taproot,他的做法是直接在 Taproot 的脚本树里面嵌入这些数据,使得由这样的方式让比特币的输出来承诺数据的话,它是完全在链上不可见的,就你完全看不出它到底承诺什么数据,但依然能够为各方基于比特币协议,基于比特币区块链来进行一些数据的这个验证,能够提供非常好的这个效果。如果我们不看这些东西,如果我们自始至终只是粗鲁地说,因为有 OP_RETURN 这个东西,然后我们就可以无限制地加大它,允许它携带的数据的体积,不管再大的体积的数据,我们都允许它自由传播的话,我觉得这个确实就是一个技术降级的效果,因为更好的那个东西我们不去支持,然后我们反而给一些技术上更差劲的东西打开大门。我觉得在这一点上,这个论点是很能说服我自己的。那我再补充一个细节,就关于尼克·萨博,这个当然只是我们的一个猜测,就是说他在这件事情上的这个想法。我非常推荐大家阅读一份由原语里弄这个开放的这个组织,
他们之前撰写了一份报告,叫做尼克·萨博与以太坊,它的这个分歧是如何越来越大的。这样一篇报告其实现在大家在互联网上也是能搜索得到的。我认为这相当有启发,就是关于我们在技术里面我们到底要追求什么东西,什么东西是好的,能够给用户更多的帮助的,然后也是能够协调各方的更多的这个利益的。我觉得这个是非常值得阅读的材料。
曾汨: 其实刚刚我听 Jeffrey 老师讲到围绕 Bitcoin Core v30 的这些争议,里面有一些争议内容从某些角度来说确实是有道理的。那么如果我作为一个节点的运营者,我确实不喜欢这些特性,我有什么办法来回避这些特性呢?Jeffrey 老师能不能给一些建议?
Jeffrey Hu: 我目前能够想到的大概有这么几种方式吧。一种呢肯定是最简单的方式,就不去升级,这个就运行老的版本就行了。这个肯定是最简单的一个方式。这并不是一种回避的这种思路啊。其实能够看到的在网络上现在还是有非常多的节点在运行一些非常老的一些版本的。甚至我能看到的一些最老的版本可能还是集中在 14, 15 年左右的一些版本的这种节点也还是有的。甚至这些节点你可以看到它还是隔离见证的功能都没有。它一直是可以运行在这个比特币网络上面。这也是证明出来说比特币网络的这种包容性,或者是说容纳一些不同的声音存在的这么一种特性。所以这个我认为是一个非常好的一种特性了。所以你肯定是可以运行一个老的版本,而不用担心你不运行,跟着新的版本的这个发布去更新的话,你就会被踢出到网络之外。这个肯定是可以去做的一个方式,但是呢,肯定也是会有一个风险,因为 Bitcoin Core 它基本每年都会去负责任的去公开一些之前版本里面的一些 bug。甚至是比较严重的一些漏洞,相应的它在这个之前开发团队都是会有一些补丁的升级已经去发布掉,所以也是会提醒用户不断去升级,去打这个补丁,然后去跟着。在一定程度上你可以认为这种,因为在新的版本里面,发布的补丁可能会不可避免,就会捆绑到一些新的一些特性。那可能有些特性是不想要的,但是如果你不去打这些补丁的话就是。长期来看自己去运维还是存在一些技术的一些风险,所以这可能就是要去权衡。如果在安全情况下你可以运行一个老的节点,但是如果你认为可能会有一些比较大技术风险的话,那可能还是运行一个新的版本是最稳妥的。所以这是一个第一种方式吧,在安全情况下再运行一个老的版本不去升级。
那第二种方式就是可能去用到不同的版本的一种节点的实现了,比如说换用到 Bitcoin Knots,其实它也会有一些版本都不一定那些升级的,然后这也是另外一种方式,就不要去运行 Bitcoin Core 了,这个 Bitcoin Knots 还会维持到原来的这种 OP_RETURN 的这个限制上面,甚至它有些限制可能还会更严格一些,去过滤掉一些比如说像 Ordinals 或者是 BRC20 那些交易,在这个节点里面都会去有,而且除了 Bitcoin Knots 之外还会有很多其他的客户端,作为一个节点运行者,其实你完全可以去选择一个自己喜欢的节点去运行,这是第二种方式。第三种方式,对于动手能力比较强的节点运行者还可以,比如说我就进行一点魔改,其实也不用魔改很多了,就是把比如说你不想要的功能,比如说 OP_RETURN 这个限制的功能,那我再去改回去,或者是把现在的放宽这个限制,我可能再把那个数字去修改一下。那么也可以,或者是比如说再去在节点配置文件里面,在起码现在参数还可运行的情况下,你去设置一个你认为比较合理的这个 OP_RETURN 交易的大小的一个限制。那这种方式都是可以的。相当于是你自己去自定义,自己编译,或者自己做一些自己的一些修改,然后让这个节点更符合你自己的想要的一些特性,然后再去运行。这是第三种方式。然后第四种方式甚至我还设想过一种,但我自己还没有尝试过,但我觉得也是可以去考虑去试的一种方式,就是你可以去在不想改代码或者其他的这种方式的情况下。你可以运行甚至可以运行两个节点。那么一个节点是这种,比如说用 Bitcoin Knots 的这种形式去连接到外部的一个网络。
然后你可以去接收到各种你过滤掉的一个交易,然后完了之后你过滤掉这个交易之后,然后你还会再运行一个 Bitcoin Core 的一个节点在你自己内部的网络里面。就相当于是那个 Bitcoin 的对外网络承担了一个这种防火墙,或者是网闸的一个特性。把你不想要的这个交易就隔离到你自己的这个内部之外。像你自己的,比如说自己的钱包或者是其他的这种信息,你都用内部这个 Bitcoin Core 这个节点。相当于是你自己保证你自己这个交易和资产的安全,同时你也避免了比如说你去转发很多的交易。当然你 Bitcoin Core 的这个节点你可能要去做一些配置,不然你可能收到的这个区块里面,可能还会有一些你不想要的 OP_RETURN 的这个交易。这是不太可避免的。那当然在这就多说一句,可能还会有一些网上的这种工具啊,比如说像前两年这个在铭文比较火的时候,还有像 Bitcoin Purifier 这种工具,可以把你认为不想要的这种区块的数据直接去删除掉。然后当你比如说需要的时候再恢复回来,这种工具也是有的,你可以考虑去尝试,反正用各种方式还是可以去进行一点这种设计吧。在总体来说,这种方式可能会成本比较高,而且可能起到的效果也会有限,因为你的区块里面数据可能还是有的,无非是你在转发的时候你可能不去考虑转发,相当于是这个降低了一些带宽上面的一些限制吧。所以这个可能要分两个层面来看,但这种方式我还没有设置,我只是理论上我觉得这种方式也可以去考虑,就成本可能相对高一些,可能要维护两个节点。对,目前能想得到的可能是采用这几种方式,可以去进行一些这个对于新版本的一种适应吧。
阿剑: 厉害,想都没想过。
Jeffrey Hu: 但我感觉可能这种效果会有限,我还没有考虑去试过这种方式。
阿剑: 对,就是你的内网的,你得配置它的网络嘛,就你不能让它又连到外面去,对吧?
Jeffrey Hu: 对,你可能就只能配置到连到自己的这个网络里面,然后比如说你不想存数据,你可能考虑就是它不是以一个全节点的方式运行,你只连接到自己的 nodes 里面,以 nodes 为一个有区块数据,有完整的状态数据的一个节点。但是你自己的资金可能比如说你去用钱包再去连的话,你就可以连到这个 Bitcoin Core 这个节点里面。这样相对来说还是比较保证这个自己的资金的安全,可能不会因为比如说节点没有及时更新,可能会有些 bug,会有些问题。Bitcoin Core 可以相当于是做这么一道防护,Bitcoin Knots 可以相当于是做另外一道隔离。
阿剑: 很棒的想法。
Jeffrey Hu: 但还没有尝试过,这个要再去评估一下。
阿剑: 因为内网的这个 Bitcoin Core 的这个节点,你只需要做一个剪枝节点就行了,就你不需要保存全部的区块数据,你只需要保存比如说最新的 5000 个区块就行了,但是你的这个状态数据就是 UTXO 级的这个数据也是完全完整的,所以你依然可以支持这些钱包软件的这个工作。所以我觉得这个想法确实不错,确实不错。当然对于普通用户来说,比较简单的这个方法还是像 Jeffrey 老师前面提到的最开始的几种方法,比如说你可以不升级,或者是你升级之后,你根据一些网上,现在肯定有很多教程给你可以配置一下那个选项。可以把这个放宽松的这个限制在降下来,因为它有一个配置选项叫做 -datacarriersize,这个选项是可以帮助你把 OP_RETURN 的这个输出的体积的这个限制恢复到原来的限制。或者说你自己设一个你觉得比较合理的这个限制都行。当然也还可以比如说运行其他的客户端实现,不管是 Bitcoin Knots,还是 btcd,它是 Go 语言的比特币的客户端实现,这些都是可以尝试的。
Jeffrey Hu: 对,但是那个配置可能会在未来大概率会删除掉。所以也是可能是最近的一个权宜之计吧。可能先可以在最近几个版本里面再使用一下。
曾汨: OK,那么关于这一个有争议的功能我们就先讨论到这里。因为这一次更新除了这一个特性还有很多其他的特性。Jeffrey 老师在你看来有哪些其他的更新是同样值得我们关注的呢?
Jeffrey Hu: 我觉得可能值得关注的就是刚才提到 TRUC 的交易,可能会比较值得更新,因为这也是在交易池的转发策略上面会有一些新的一些实验性的一些修改吧。然后可能可以去帮助到交易可能更快传播和验证,包括能够去提高整个网络的一个效率,所以这个我觉得是可能会未来对于一些交易的一些转发,甚至可能会影响到一些上层的应用吧,包括像闪电网络,包括像一些其他的更复杂的应用里面可能会有一些更长远的一些影响。所以这次可能我认为也只是一个开始,可能未来还会有一些进一步的发现,可能在这个版本之后会引起大家更多的一些关注。所以这个我觉得也是比较值得大家再去不断去关注的,因为很多的比特币的这种修改,其实它是集中在这个交易池策略这个方面的修改和优化上面的。并不是说每次都会对这种共识协议进行修改,包括 OP_RETURN 其实也是 Bitcoin Core 自己的一种转发策略上的一种修改。那么这些是不是真的起到相当一些效果,我觉得都是有待未来进一步观察的。
阿剑: 顺着刚刚这位老师的话题往下说,的确在最近几年,Bitcoin Core 它本身的开发,其中有一个相当大的部分,就是交易池的交易转发策略。因为交易池的转发策略它不仅关系到本身在网络中交易如何传播,它还关系到基于比特币协议的上层的这些协议,不管是闪电通道也好,或者是最近几年开始展露头角的比如说 ARK 协议,或者是其他协议,它们都有可能使用一种基于时间锁的结构,使得交易及时的确认就变成一个非常重要的事情。而比特币网络的交易池的转发策略,相当于就成为这些上层的协议的一个接口,因此这部分的这个开发实际上它是对于上层的这个协议是非常重要的。那我在这里希望提醒大家的是,Bitcoin Core v30 它不仅有它有争议的部分,它也有它延续了过去几年的这一些一贯的这个努力并且有所推进的部分。Bitcoin Core 它本身作为一个开源的这个软件,它有自身的这个开发的这个过程,当然这个过程有些地方它会让人满意,那也有些地方可能会不让人满意。我觉得这些事情其实都还好,就是说都算是。可能是一个小小的插曲,我们依然还是要关注到比特币整个的我们说的这个基于平等说服的这种文化。也要相信这种开源的文化,也有它自己的韧性,有自己的这个生命力。所以如果你想使用这个 Bitcoin Core v30.0 的话,也不用因此而止步。但是从我个人的角度,我会建议你慎重的考虑改变 Bitcoin Core v30,它的 OP_RETURN 的这个默认的这个转发限制。你只需要稍微搜索一下网络的这个资料,就可以改变这个参数。大体上是这样。
曾汨: 好的,那么我们今天的播客就聊到这里。感谢 Jeffrey 老师的精彩分享,让我们对 Bitcoin Core v30.0 这个充满争议的版本有了更加深入和全面的认识。希望大家从这期播客当中有所收获。我们下期再见,拜拜。
