本集简介
双语字幕
仅展示文本字幕,不包含中文音频;想边听边看,请使用 Bayt 播客 App。
不愿让骗子在比特币上占到半点便宜,我认为这显然是件好事。我们不想让诈骗项目利用比特币玷污其声誉。但与此同时,激进地开展这类活动确实会对网络性能及其长期可行性产生重大影响,对吧?如果你想打造全球最大的货币体系,就不能要求整个网络每年都要为众多反垃圾邮件过滤器更新一次。我认为这两个目标有些矛盾,要调和这两种观点相当困难。
Not wanting to give scammers a quarter in Bitcoin, and I think that's obviously a desirable thing. We don't want scam projects using Bitcoin and tarnishing its reputation. But at the same time, releasing this kind of activity aggressively does have big impacts on both the performance of the network and its long term viability, right? If you want to build the world's largest money, you can't require the entire network to update once a year to the numerous anti spam filters. And I think those two goals are kind of at odds, and reconciling both of these perspectives with each other is difficult.
大家好,欢迎回到Stefan Lovera的播客节目。今天我们将讨论比特币核心开发的一系列话题。当然,我们会涉及核心代码和更新说明,以及比特币核心30版的新功能,还有围绕比特币内核的一些讨论。今天和我一起的是The Charlatan。
Hi, everyone. Welcome back to Stefan Lovera podcast. Today, we're going to be discussing a range of things on Bitcoin Core development. Of course, we'll be handling some of the Core and Notes stuff as well as what's coming new that's in Bitcoin Core version 30 as well as some of the discussions around the Bitcoin kernel. So joining me today is The Charlatan.
The Charlatan,据我理解——或许你可以纠正我——你曾在比特币行业有硬件钱包相关的工作背景。如今显然你更专注于比特币核心开发。首先,欢迎来到节目。
The Charlatan, as I understand I mean, maybe you can correct me, but as I understand, you sort of had a background in the Bitcoin industry working in, like, hardware wallets. And nowadays, obviously, you're more focused on Bitcoin core development. First off, welcome to the show.
是的,嗨。关于我如何进入比特币开发领域,你的描述基本准确。
Yeah. Hi. And I think that sounded about right on how I got into Bitcoin developments.
太好了。那么,让我们从一些重大更新开始。从你的角度来看,比特币核心30版有哪些重要或有趣的更新?
Yeah. Fantastic. So, look, let's start with some of the big updates. From your perspective, what are some of the big important or interesting updates on Bitcoin Core version 30?
除了围绕政策变更的争议外,比特币核心30版有几个相当重大的更新,这些更新对我们未来功能的发布方式和项目结构规划都是重大变革。其中最重要的是新的挖矿IPC接口——这是面向普通用户(而非开发者)的全新交互界面,专为Stratum v2挖矿客户端设计。
Yeah. So I guess outside of the controversy around the policy changes, there are a few pretty big updates in Bitcoin Core 30 that are pretty major change to how we plan to ship features in the future and how we plan to structure the project in the future. And the biggest one among those is the new mining IPC interface. So this is a new interface that users, not other developers, can interact with. And it is designed specifically to be useful for I for Stratum v two mining clients.
这个接口经过过去一年左右的开发,几周前刚刚发布。现在Stratum v2软件可以通过这个挖矿接口直接与比特币核心交互。我目前甚至通过这个新接口,用核心30版运行着自己的小型家庭矿机。
And this has been developed now over the past year or so and then released a couple of weeks ago. And the Stratum v two software can now interface with Bitcoin Core directly through this mining interface. And I'm currently even running my own little home miner through this new interface with Core v 30.
没错。那么这意味着,支持SV2的矿池——我猜主要是Demand Pool完全支持SV2,而且我认为Brains Pool也具备这一功能。所以这就是其含义对吧?它让用户更容易用Pick n Call v30进行Stratum v2挖矿,主要影响是什么?
Right. And so that then means, I guess, the pools that support s v two, so I presume then mainly demand pool has full s v two support, and I believe the brains pool also has it as well. So I guess that's the implication of this. Right? What are the main implications that it's making it easier for people to do Stratum v two mining with Pick n Call v 30?
是的,完全正确。或者说它甚至以同样的方式使之成为可能。因为
Yeah. Exactly. Or it's it's even making it possible in, like, the same way. Because
你能详细说明一下吗?比如,如果没有这个功能为什么会更困难?
So can you can you elaborate a bit on that? Like, why would it have been harder without this?
是的。我们之前在比特币核心获取工作量证明任务或区块模板的方式上存在一些限制。而Stratum v2原本的要求是,每次都需要重启比特币核心节点来重新配置部分模板参数。但这个新接口实现了双向通信,可以让你实时动态调整这些设置。
Yeah. So we had some limitations in the way that well, these proof of work jobs or block templates are retrieved through Bitcoin Core. And the way that Stratum v two would have required it, you would have had to restart your Bitcoin Core node in order to reconfigure some of the template parameters every time. This new interface which allows, yeah, this kind of bidirectional communication allows you to set these settings, like, on the fly however you want to. Yeah.
明白了。能否简单解释下这与你可能运行的挖矿软件如何交互?用户需要运行比特币核心v30外加其他挖矿软件对吧?
Okay. And can you just explain for us a little bit how this interfaces with mining software that you may run? Like, so the user is gonna run Bitcoin Core v 30 plus some other kind of mining software. Right?
没错。最终形态大概就是这样。虽然不确定具体名称,但类似于运行数据作业声明器(Datum Job Declarator)。未来可能就是运行比特币核心加上你需要的额外挖矿软件。
Yeah. Exactly. That's how it's gonna look like. I mean, in in the end, it's gonna be similar to running a I'm not sure what exactly they call it, but the datum Job Declarator. And I think in the future, it's just gonna be you run Bitcoin Core and you run the extra mining software that you need.
你只需将其指向你的矿场或家庭矿机,无论具体是什么配置。
And you can just point that to your yeah, either mining farm or HomeMiner, whatever the setup is that you have.
好的。另外Core 30版本还有些其他更新。我看到有关于移除旧版钱包的讨论。你能解释下什么是旧版钱包吗?为什么要移除它?
Great. And then also some other updates in the Core 30. I think there's, some discussion there about removing the legacy wallet. So can you just explain what was the legacy wallet? Why is it being removed?
是的。旧版钱包是最初随比特币核心最早版本发布的原始钱包。它的主要缺点是本质上只是一堆密钥的集合,内部没有层级结构,不支持BIP32之类的标准。
Yeah. So the legacy wallet is the original wallet that was shipped since the earliest version of Bitcoin Core. And the big downsides of it was that it was basically just a bag of keys. So there wasn't any hierarchy with within it. No 32 duration or anything like that.
长期以来维护它都是个大麻烦。随着我们引入了描述符和BIP32等功能(未来可能还会增加对迷你脚本描述符等更好支持),把这些特性移植回旧版钱包架构非常困难。所以早在五六年前就决定最终移除这段旧代码,转而提供将旧版钱包升级为现代描述符钱包格式的方案。这个升级功能终于在v30版本发布了。
And it was over time a major pain to maintain. So because we adapted things like descriptors and BIIB 32, Well, in the future, probably also even better support for mini script descriptors and things like that. It's been really difficult to port those features back to this original wallet architecture. So it was decided, like, five, six years ago already to eventually remove this legacy wallet code and instead provides a way to upgrade these legacy wallets to the full modern descriptor wallet format. And this upgrade has now finally been shipped in v 30.
对旧版钱包用户来说升级过程应该是无缝的。你可以通过工具或图形界面的命令,将旧版钱包升级到新的描述符格式。
And it should be pretty seamless for any users of the legacy wallets. So you can with either tool or some commands in the GUI, upgrade from the legacy wallets to the new descriptor format.
那么你认为主要动机是什么?单纯是为了简化代码库、从开发者角度减少技术债务?还是觉得那是个非常老旧的钱包,需要所有人都升级到新版本?背后的考量是什么?
And so what would you say the main rationale here is? Is it just to simplify the code base or reduce the technical debt from the developer's standpoint? Is it just seen as, that's a really old school wallet. We need everyone to upgrade to the new stuff. What's the thinking there?
没错,这完全是为了减少技术债务。如果你查看GitHub上的问题追踪器搜索'legacy wallet',会发现无数与之相关的问题。大多数问题在现代钱包中已修复,但在旧架构中很难妥善解决。所以理性决定就是弃用它,专注于新架构,而不是反复打补丁。
Yeah. This is all about reducing the technical debt. So if you look at our issue tracker on GitHub and you search for the term legacy wallet, there's just an endless stream of issues that affected it. And most of these issues were fixed in the modern wallet, but were really difficult to address properly inside of the legacy wallet architecture. So, yeah, the the rational decision was just to deprecate it and focus on the new architecture instead of just trying to continuously patch mistakes over and over again.
是的。
Yeah.
我明白了。我想一个常见的讨论话题——显然你也经常遇到——就是当人们讨论提案时,他们往往会说'哦不,这个主意很糟糕,因为它可能具有没收性质'。对吧?意思是这个提案可能会让那些持有多年旧币的人无法使用,或者影响某些特定用例。
I see. And I guess a common discussion that I see, obviously, I'm sure you see this all the time, is, when people are discussing proposals for things, they're sort of saying, oh, no. That's a bad idea because that idea might be confiscatory. Right? That it might lock someone out from coins that they held from years ago or they had it in some specific use case.
那么在这种情况下,我认为它并不具有没收性质,因为你们为仍在使用旧版钱包的用户提供了升级途径。我这样理解对吗?
And so, I guess, in this case, it's not confiscatory because you're providing this upgrade pathway for people who are still sitting on the legacy wallet. Is that have I understood it correctly there?
是的。我们花了大量时间梳理所有可能的钱包拓扑结构——姑且这么称呼——就是人们在旧版钱包中可能拥有的各种形态。通过这个过程,我们甚至发现了旧版钱包中更多的漏洞。因此我们非常有信心这次迁移能覆盖旧版钱包的所有历史用例。
Yeah. And we spend a lot of time going through all the possible, like, wallet topologies, let's call them, that people might have had in the legacy wallets. And we ended up finding even more bugs in the legacy wallets through this process. So we're fairly confident that the migration will cover all past use cases of the legacy wallet.
明白了。最坏情况下用户仍可使用旧版本,但这样就会面临无法获得最新安全更新等问题。对了,我注意到你刚才提到正在为'共识大清理'做线下准备,这个工作现在进展如何?
I see. And I guess worst case, people can still use old versions, but then you're running into the issue of maybe not having all the latest security updates and things. Okay. So I noticed you're you're also tell telling me about just offline about preparation for the great consensus cleanup. So what's going on with that?
其实我们从29版本就开始着手了。核心理念是让软件在共识规则之外就提前模拟出'共识大清理'部署后的效果。比如29版本中我们就使软件无法生成利用时间扭曲漏洞的区块模板。而在30版本中,我们新增了策略规则,在交易验证阶段就对操作数量实施了更严格的限制——这些限制正是当前提议的共识清理功能的一部分。
So we started with that in version 29 already. And the idea behind that is we adapt our software outside of the consensus rules already in a way that mimics as if the consensus cleanup would already be deployed. So one of the things that was done in version 29 was we make it impossible to generate a block template that exploits the time warp bug through our software. Now in version 30, we added a policy rule that already enforces some stricter limits for the amount of operations that are allowed during transaction validation. And these director limits are part of the currently proposed consensus cleanup features.
关于这些预清理工作的重要性,我认为它们都是未来最终部署'共识大清理'的关键前提。
And I think in terms of how important these pre cleanups are, I'd say they are both key to getting the gray consensus cleanup deployed at some point in the future.
好的。对于刚接触这个话题的听众,我之前和Antoine Ponceau做过一期早期节目(不是最近那期),详细讨论过'共识大清理'。简单来说——用小白能听懂的话解释——就是存在一些历史遗留漏洞:一个是时间扭曲漏洞,还有其他与节点相关的漏洞,比如可能导致拒绝服务攻击的交易或区块。
Okay. And I guess just for listeners who are coming new and don't really know what that is, I have an early episode with Antoine Ponceau. Not the recent one, the the one back before where we talked in more detail about the great consensus cleanup. The simple, I guess, just for, you know, simple people just explain in simple terms for people who aren't deep into it is that there are these long standing bugs. One is known as a time warp bug, and I think some others relate to kind of, like, the node, like, DOS transactions or blocks that can, like, take it down.
这个伟大共识清理的理念属于软分叉方案,它能修复部分问题。据我理解,在开发者圈子里这些改动基本没有争议。多数人都认同修复这些漏洞是好事,但关键在于何时能完成所有准备工作来真正实施。
And the idea is this great consensus cleanup is a soft fork idea that would patch some of these things, and it's seen as, these are I would say, as my understanding is these are relatively uncontroversial in terms of developer circles. Most people accept that, yeah, it would be a good thing to do this to kind of patch these bugs, but it's sort of a question of when will there be kind of, you know, all the work done ready to actually do it.
显然,软分叉部署的时间表问题也始终存在。
And, obviously, there's also always the timeline question in terms of getting the soft fork deployed.
我明白了。你的意思是这些准备工作某种程度上能让节点在共识清理过程中对某些故障情况更具防御性。据我所知,部分细节属于保密范畴——毕竟没人想公开喊话‘看啊,这是瘫痪大批节点的方法’。
I see. And so then what you're saying is some of this prep work is there to, I guess, make the nodes maybe a little bit more protected against some of the, the the failure cases in the consensus cleanup. And as I understand, some of these details are, let's say, private because you obviously don't wanna broadcast out. Hey. Here's how you can, like, take down a bunch of nodes.
但与此同时,你们仍需公开运作,对吧?
But at the same time, you have to still work in public. Right?
没错。部分措施是为了保护节点免受我们在清理过程中发现并试图修补的漏洞攻击,另一些则是确保矿工未来应用规则时不会为自己生成无效的区块模板。
Yeah. Exactly. So some of them are to protect nodes against some of the exploits that we've identified and tried to patch in the cleanup. And some of them are also to ensure that if miners apply the rules in the future, that they won't end up generating invalid block templates for themselves.
懂了。这么说来,你提到的措施还能防止意外链分叉?还是说更侧重于避免他们单纯生成无效区块?
Gotcha. And so with that also I guess what you're saying there is it also helps stop, like, an accidental chain fork because if, you know, they don't or is it more just that they would generate just an invalid block?
我认为这里的主要风险不会是链分叉——那需要恶意方做更多手脚,但确实意味着该矿工将因无效区块损失补贴。
They I mean, I don't think that the danger here would be a chain fork. Like, that would probably require a bit more work on the bad side, but it would mean that that mining operation would lose the subsidy for that invalid block.
哦,我明白了。对,对。我记得大概有一两个著名案例,矿工虽然赢得了区块,但由于某些原因导致区块无效,结果他们基本上就失去了奖励。好吧。
Oh, I see. Yeah. Yeah. And I think there's, like, maybe one or two famous cases where I think a miner put out like, they won the block, but then it was invalid because of some other thing, and they they lost the the, the reward, basically. So, okay.
那么,我们稍微聊聊这个Libbitcoin内核项目吧。据我所知,你是这个项目的负责人或者说主导者?能否给我们做个概述?首先需要澄清的是——Libbitcoin原本是Eric Vosquil等人开发的比特币替代实现,但这个内核项目是独立存在的对吧?
So, yeah, let's talk a little bit about, this Libbitcoin kernel project because I think that's like a big as I understand, you're the leader for that or you're the you're the captain of that one. Can you give us a bit of an overview there? And I guess first, just disam what's the word? Disambiguate because there's Libbitcoin, which is a, like, an alternate Bitcoin implementation by, like, Eric Vosquil and stuff like that. But this is a separate project.
它叫Libbitcoin内核。能向听众们解释下这个项目吗?
It's called Libbitcoin Kernel. So can you just explain that for listeners?
是的,就像你说的,我是比特币内核的项目负责人。我现在更倾向于称它为比特币内核或比特币核心内核,以区分清楚。这两个项目没有任何关联,命名冲突也不是我造成的,具体原因我也不清楚。
Yeah. So I'm, as you said, like, the project captain for the Bitcoin kernel. And I try to call it the Bitcoin kernel now or the Bitcoin core kernel just so it biguated a bit. There is no relation between the two projects, and I am also not responsible for the naming collision, so I'm not sure how that exactly happens.
好的。那你能不能简单说明下这个项目?我的粗浅理解是,这个项目旨在将共识代码与其他部分分离,以便其他部分能独立开发?
Yeah. Okay. So can you just give us an idea what is this? Like, as my my simple understanding is the idea is to sort of separate consensus code away from some of these other things so that those other things can be developed separately?
没错。这个项目背后有两个核心理念:一是我们在比特币核心内部将共识规则与其他代码隔离——这个目标已经持续推进了十多年。早期代码就像一团乱麻,分不清哪些属于钱包逻辑、哪些是共识代码、哪些又是支持图形界面的。
Yeah. So I guess there's two big ideas behind the project. One is that we internally isolate the consensus rules within Bitcoin Core from all the rest of the project. And this has been a long standing goal for the project since more than a decade now. So Joshi's code started as this big massive blob of logic where it's like not clear what exactly belongs to the wallet, what is consensus code, which code is used for powering the GUI.
过去十年我们做了大量隔离工作。现在共识代码本身已经相当独立,我们正推进第二阶段工作:将共识逻辑作为可复用代码开放给其他项目使用,无论是用于验证交易/区块,还是读取比特币核心的内部数据结构。
Over the past decade, we've done a lot of work to isolate that properly. And I think we're at the point now where the consensus code itself is fairly isolated. And we've now moved more towards what I would call stage two of the project, which is exposing the consensus logic as a reusable piece of code for other projects that want to do something with consensus, be it validate transactions or blocks or even use it to read Bitcoin Core's internal data structures.
好的。那么你能帮我理解这意味着什么吗?这是否意味着闪电网络实现可以调用它来验证,是否符合比特币的规则?或者说,具体是如何运作的?
Okay. So can you help me understand what that would mean? Is that like a Lightning implementation could call that to understand, is this valid by Bitcoin's rules? Or, like, how would that work?
没错。例如闪电网络实现可以将交易及其消耗的输出传递给库中的某个函数,我们暂且称之为交易验证函数,然后就能完全确信该交易是按照与网络其他部分完全相同的规则进行验证的。
Yeah. Exactly. So Lightning implementation, for example, can pass it transaction and the outputs that that transaction consumes, pass it to a function in the library, let's call it transaction verify or something, and then get the full confidence that the transaction is validated against the exact same rules that the rest of the network runs on.
这可能更具争议性,但我确信你记得那个著名事件——或者可能是两起事件——我记得是BTCD相关的,当时闪电节点使用了BTCD,然后有人发送了类似998/999的多重签名这种荒谬的东西,基本上就崩溃了...你明白我在问什么吧?这类情况就能通过这种方式避免。你是这个意思吗?那么再详细说说,除了闪电网络这个例子,还有哪些软件可能会用到这个?
And maybe maybe more controversial or whatever, but I'm sure you remember there was that famous incident or maybe two incidents with, I believe, BTCD where there was, like, a lightning it was, like, of the lightning nodes were using BTCD, and then someone had sent, like I think Barack had sent, like, a 998 of 999 multisig or something ridiculous and, like, kind of falls, like, basically, you get what I'm asking? Like, this kind of thing would help stop that example. Is that what you're saying? And so okay. So tell us a little bit more about, you know, what else like, so we said Lightning is one example, but what else what other pieces of software might make use of this?
是的。另一个主要应用场景是替代性节点实现。
Yeah. So the other big one is alternative node implementations.
好的。
Okay.
现在你可以复用这个核心库,编写具有任意功能的自有全节点实现。基于我过去一年设计的实验性接口,我已经用它开发了自己的Rust玩具节点。所以除了作为核心库开发者外,我现在也算是个全节点开发者了。不过这个接口也经过Florestan的测试,那是个UtrxO实现。
So you can reuse this kernel library now and write your own full node implementation with whatever features you want to. And so far based on the experimental interface that I've authored over the past year, I've developed my own Rust toy nodes against it. So I'm also a full node developer, I guess, next to a kernel library developer. But it's also been tested out by Florestan, which is a UtrxO implementation.
它们不也是基于BTCD的吗?
And aren't they also based on BTCD?
不,那是另一个UtrxO实现。目前有两个主要的或者说完整的UtrxO实现,一个是基于内核库开发的Fluorescer,另一个我记得叫Utrxo d。
No. That's another UtrxO implementation. So there's two big UtrxO or, like, fully fleshed out Utrxo implementations. One is Fluorescer, which they plan to base on the kernel library, and the other one is, I think, Utrxo d, they call it. And that's gonna
明白了。明白了。是的,抱歉我之前搞混了。
be Gotcha. Gotcha. Yeah. Sorry. I I had confused that.
好的,明白了。Floresta也很有意思,我短暂接触过那位开发者。
Okay. Gotcha. So yeah. And Floresta is an interesting one as well. I know I've met the developer briefly.
但关键点在于,你现在想表达的是:如今创建替代性比特币实现更容易了,而且这些实现能'确信'自己仍与Bitcoin Core保持共识。
But okay. So so, basically, the point is you're getting at this idea that it's easier now for an alternate, it's easier now to, create an alternate Bitcoin implementation. And then for that implementation to have, let's say, quote, unquote, confidence that I'm still in I'm still in consensus with Bitcoin Core.
没错,这正是我们的核心目标。
Yeah. That's that's the big goal here. Exactly.
好的,这样一来就使得比特币多实现方案更具可行性——虽然目前已有Bitcoin Core、Bitcoin Nuts、LibreRelay、BTCD等实现,但重点在于让更多实现成为可能。
Okay. And so then it makes it more viable then to have what some people are asking for, which is multiple implementations in Bitcoin. Now, yes, there already are some. Obviously, Obviously, there's Bitcoin Core, Bitcoin Nuts, LibreRelay, BTCD, maybe a few other ones. But, I guess the point is making it viable for more to exist.
是的,不仅是要实现可行性,我个人目标还包括消除库中Bitcoin core特有的特性,只保留共识规则。这样你可以自定义数据模型,比如采用u3xo,或者像Bitcoin那样设计索引逻辑——最近还有个新项目正在测试这个。
Yeah. And beyond just making it viable, one of the goals that I personally have is also removing the Bitcoin core specific idiosyncrasies out of the library. So you really get only the consensus rules, and you can choose to have your own data model. Like, you can run it with u three x o, for example, or you can do some crazy indexing logic similar to what the Bitcoin is trying to do. Or and there's another project that has recently been tested out on it.
你们提出了加快节点同步的替代方案。这在SwiftSync项目中已有尝试,并且他们现在基于该库开发了一个原型节点。
You come up with alternative ways to sync up a node faster. And this has been attempted in the SwiftSync project. And they've also developed a prototype node now based on the library.
好的。我现在很好奇,因为根据与不同人的交谈和我听到的信息,有些人说这类项目可能非常难做,对吧?实际上将其分离出来可能很困难,因为比特币核心在某种程度上没有标准或规范,这就是为什么这么多人直接运行比特币核心。那么你们某种程度上是在逆流而上吗?你们正在尝试做许多人认为非常困难的事情,或者你们如何看待这个问题?能为我们解释一下吗?
Okay. Now I'm curious because from different people I've spoken to and just, I guess, things I've heard, some people have said this kind of project, it might be really hard to do, right, to actually separate it out because, there there might be very, very subtle ways in which Bitcoin Core effectively you know, that there is no standard or there is no spec for Bitcoin per se, and that people that's why so many people just run Bitcoin Core. So are you kind of going against that in a way? Like, you're trying to do something that a lot of people are saying is really hard to do, or or how are you viewing it? Can you explain for us?
是的。这显然是我在开发库时需要考虑的问题。目前我处理这个问题的方式是,尝试让任何使库可行的必要改动都流入比特币核心代码库本身,以确保库中的内容不会偏离核心实现相同逻辑的方式。如果我们坚持这种做法,我认为可以最大程度地缓解这个担忧。
Yeah. So that's obviously something that I really need to take into consideration when working on the library. And the way I've been dealing with that problem so far is that I'm trying to let any change that is required to make the library viable flow into the Bitcoin Core code base itself in order to ensure that whatever is in the library doesn't deviate from how Core does the same logic. And if we keep on doing that and really sticking to that approach, I think we can mitigate that concern as best as possible.
我明白了。那么另一方面可能是,你们是否期望其他实现同时运行它们和比特币核心?最终效果是这样吗?
I see. Now I guess the other side of that could just be, well, now are you kind of expecting other implementations to run them plus Bitcoin Core at the same time? Is that effectively what it ends up being?
我的意思是,我不期望任何人做任何事情。对吧?这仅仅是关于我们不应该独占这些逻辑,而应尽可能让其他客户端也能基于它进行构建。
I mean, I don't expect anybody to do anything. Yeah. Right? This is just about we shouldn't, you know, keep this logic just to ourselves. We should allow our other clients to build on it as far as possible.
甚至可能很有用,如果你能将内核库与你自己的共识重新实现集成,用于测试并发现你自己实现中的错误。我认为这个角度几乎可以向所有其他实现推广,因为它严格提升了它们的健壮性。
And it might even be useful, right, if you can integrate the kernel library alongside your own consensus reimplementation to test it and find bugs with your own implementation. And I think that's an angle that can be sold to pretty much every other implementation out there because it just strictly improves their robustness.
我懂了。再次说明,我不是开发者,只是个ADIQ播客主持人,但也许这也能帮助他们改进自己的测试套件和确保与比特币核心在功能上保持一致的方法。为了明确起见,正如你在博客中提到的,这不涉及p2p网络,只是共识部分对吧?
I see. So I guess again, I'm not a I'm not a developer. I'm just an ADIQ podcaster, but, maybe it's like it might also help them improve their own testing suite and their own kind of ways of making sure they're still in, let's say, meeting, meeting with Bitcoin Core in terms of how things work. And so just to be clear, this is not, I think I saw in your blog post you mentioned you're not doing p two p. So, like, this is just consensus.
这与节点之间实际如何通信无关。
It's not relating to how the nodes actually talk to each other.
不。至少在库的接口中,它也不包含内存池或策略。
No. And at least in the interface of the library, it doesn't include the mempool or policy either.
本期节目由CoinKite赞助,他们制造了我最喜欢的比特币硬件钱包Coldcard Q。有人认为自我托管太难,但这实际上是关于为你的比特币财富负责,并理解自我托管能给你真正的自由感。Coldcard Q配备全键盘和大屏幕,拥有两个安全元件和真正的气隙隔离,让你从种子生成到交易签名全程通过二维码实现完全气隙操作。设备可使用三节AAA电池供电,甚至无需插电。你可以轻松搭配PC端的Sparrow钱包或移动端的Nunchuck使用,并能根据你选择的安全级别和复杂度进行调节。
This episode is brought to you by CoinKite, the makers of my favorite Bitcoin hardware wallet, the Coldcard Q. Now some people think self custody is too hard, but it's really about taking responsibility for your Bitcoin wealth and understanding that self custody gives you a true feeling of liberty. The Coldcard Q has a full keyboard and big screen, it's got two secure elements and a true air gap allowing you to go fully air gapped using QR codes from seed generation to transaction signing. You can power the device using three AAA batteries so you don't even have to plug it into the wall for power. You can easily use it with Sparrow Wallet for PC or Nunchuck on mobile and you can dial it into the right level of security and complexity that you choose.
如果想要简单设置,只需使用12个单词和单签名。想要密码短语也很容易。如果想添加多重签名或联合签名功能,这些也都支持。访问coinkite.com,使用代码LAVERRA可享Coldcard或其他设备9折优惠,立即升级你的自我托管方案。好的,嗯。
If you want a simple setup just use 12 words and single signature. If you want passphrases easy. If you want to add multisig or cosigning features you've got those too. Go to coinkite.com, use code LAVERRA to get 10% off on your cold card or other devices and level up your self custody today. Okay, yeah.
所以我猜,嗯,就像很多关于策略、共识之类的争论,其实都高度聚焦于比特币核心在做什么,因为比特币核心是默认标准。在一个存在多种实现方案、比特币核心并不占绝对主导的世界里,如何确保所有P2P节点、不同节点之间仍能正确通信?是否存在某种标准化的实现方式?
So I guess, yeah, like a lot of the kind of even a lot of the arguments about, you know, policy and consensus and so on, I guess it's it's very focused on, you know, what what is Bitcoin Core doing because Bitcoin Core is the default. In a world where there are lots of different implementations and Bitcoin Core doesn't have, like, such high dominance, how do you how do you make sure all the p to p all the different nodes, like, still talk to each other correctly? Like, what is is there a standard way for that to happen?
我的意思是,长远来看,我们也可以用同样的方式处理点对点代码。开发一个比特币核心的点对点库来做类似的事情。不过目前离这个目标还很远。我认为我们在隔离共识代码方面做得不错,但点对点代码就是另一回事了。所以
I mean, I guess, down the roads, we could do the same with our peer to peer codes. A Bitcoin Core peer to peer library that does something similar. But yeah, we're still far away from that. I think we've done a decent job at isolating the consensus codes, but the peer to peer code is a different story. So
好的。那么这个项目目前进展如何?你大概有预计需要多长时间完成吗?
Okay. Yeah. And so where is this project at so far? And, like, what's your kind of do you have, an idea of, like, how long it's gonna take?
是的。我们正试图在下一个版本(b31版)中推出这个库的接口。它不会包含你期望的完整共识库应有的所有花哨功能。但我们的想法是先推出一个基础版本,然后逐步完善。因为在比特币核心项目中,试图一次性完成所有功能注定会失败。
Yeah. So we are trying to ship the interface for the library in the next version, so in b 31. And it won't include all the bells and whistles that you might expect from a fully featured consensus library. But the idea is to get something in and then incrementally improve it over time. Because just doing everything all at once is a recipe for failure if you're trying to get a project done in Bitcoin Core.
在这方面,代码审查周期非常严苛。你必须把事情拆分成小块来处理,这也是件好事。对吧?因为我们希望这个库成熟、经过深思熟虑,并且设计精良。
The review cycle is brutal in that respect. You have to chunk things up and take them in small pieces, which is also good. Right? Because we want the library to be mature and well thought well thought through and, yeah, well designed.
好的。那么就像你说的,希望在于——人们常说需要让更多人审查代码。理想情况下希望其他人基于它进行开发。就像我们之前谈到的,比如闪电网络实现,或者ARC、Spark等其他二层方案。也许其中一些会开始用它来验证比特币端的交易?
Okay. And so then as you're saying, the hope then is that I mean, people say you want lots of eyes on the code. You ideally want other people building on top of it. You ideally want, as as we spoke about, like, examples, like maybe Lightning implementations or, I don't know, maybe ARC or Spark or some other l two. Like, maybe some of them would start actually using this to check on the Bitcoin side?
这些交易是否与比特币核心保持一致?你是这样看的吗?
Are there transactions, you know, aligned with Bitcoin Core? Is that how you're seeing it?
没错,基本就是这样。我还想简单提一下另一个特性:如果我们能隔离逻辑,使其不依赖任何系统特定资源——比如数据库管理、文件管理、不同CPU线程切换。如果能做到这点,我们就能实现一些非常有趣的功能。
Yeah. That's pretty much exactly it. One other feature that I briefly wanted to touch on is if we manage to isolate the logic in a way where it doesn't require any system specific resources. So stuff like database management, file management, having to switch between different CPU threads. If we get it to that point where all that stuff is no longer required, then we can start doing some pretty interesting stuff.
到那时,你可以纯粹在内存中验证区块,无需任何系统要求。这样就能在嵌入式设备或严格受限的环境中使用,比如安全飞地或Intel SGX环境。我还在研究的另一个有趣方向是让它能在证明生成虚拟机中使用。现在有些技术可以对任意程序进行零知识证明,但这些证明要求程序本身有严格限制。
So at that point, you could start validating blocks just purely in memory without any system requirements. So you could do it on embedded devices or very restricted environments, like in secure enclaves or in stuff like Intel SGX environments. And the other interesting thing that I'm also looking at there is enabling its usage within proof generating virtual machines. So there are these techniques now to do zero knowledge proofs of arbitrary programs. But these proofs obviously require that the program is fairly restricted in itself.
因此我们必须避免使用任何系统资源才能实现。这之所以有趣,是因为你可以在零知识证明生成器内验证整条链的有效性,然后发布一个小型证明,表明某个特定链状态在达到比如百万区块高度时仍然有效(因为这是未来的事)。这可能催生新型节点——你不再需要下载完整历史记录,只需获取这个证明进行验证,就能确信该高度之前的链是有效的。
So we needed to be we needed to not use any system resources in order to get there. And the reason that's interesting is because you can then do proofs of the entire chain's validity inside the zero knowledge proof generator, and then publish a small proof that some specific chain state is valid up to heights by a million or something, because it's going to be in the future. And this might allow a different type of nodes where you wouldn't have to be downloading the entire history anymore. You can just take this proof and apply it, validate it, and then get assurances that up to that height, the chain is valid.
好的。这就像是与Robin Linus零同步的那种想法或相关的内容吗?
Alright. This is like a like zero sync with Robin Linus and that's this kind of idea or related?
是的,某种程度上与此相关。
Yeah. It's kind of related to that.
明白了。那么是只有你一个人在负责这个项目,还是有其他人也在参与其中?
Okay. Yeah. And so is it just you working on this, or are there other people kind of also, you know, chipping away at this?
是的。过去两年主要是我在做,但最近几个月情况变化很大。现在有很多新开发者加入了这个项目。据我观察,这个过程很自然,我并没有做太多宣传。
Yeah. So I guess it's been it's been mostly me over the past two years or something, but that has changed a lot over the past few months. So there's been a big influx of additional developers working on the project. And as far as I can tell, this happened pretty organically. Like, I didn't do a lot of publicity or anything.
看来其他人也认为这个项目很有价值,愿意投入时间参与。
So it seems like other people think that this project is a good idea and are investing their time into it.
确实。实际上,我们或许也该谈谈这个问题。从更宏观的角度看,为什么你认为这个项目很重要?
Yeah. And, actually, I mean, we should probably talk about that as well. Like, what like, if we zoom out a bit, why is it important that this is done from your perspective?
我期待看到这样一个未来:不同的竞争性客户端可以运行在共享的共识代码或内核上。我坚信节点之间应该有竞争。如果一个节点的实现不符合你使用比特币的需求,你应该能够编写或选择更适合你的替代方案。
So I kind of like the future where we have different competing clients that run on the shared consensus code or this kernel. And I really do think that we should have competition between nodes. Right? If a node implementation doesn't serve your interests for how you wanna use Bitcoin, then you should be able to either code up a decent alternative or run another alternative that serves your interest better.
好的。我认为在当前环境下,这很可能会成为一个普遍观点。另外还有一点,按照我的理解,你们的工作实际上是在为未来其他人创建竞争性的OP实现方案铺路,等项目完成后。
Yeah. Okay. And I think that's, probably that's probably gonna be a popular statement in today's in today's climate. So I guess one other thing with, like, running with yeah. I guess how I'm understanding it then is what you're the work you're doing helps make it so that someone else can create a competing opt implementation, like, in the future, like, once this is done.
现在谈到当前围绕数据载体大小等问题的争议,或许你可以给我们做个概述?能否简要分享你对此事的高层分析或看法,关于当前数据载体大小引发的争议?
Now, when it comes to, I guess, the current controversy around all this, you know, data carrier size and things. Well, may maybe you wanna just give us a bit of an overview there. Can you just give us, like, your sort of high level analysis or view of what's going on with this data carrier size thing and the controversy that's going on nowadays?
是的,由于过去几个月很多人已经详细讨论过这段历史,短时间内很难说清楚。但对我来说,关键在于不想让骗子在比特币领域有可乘之机。这显然是件好事,对吧?
Yeah. That's gonna be tough to do in a few minutes, I guess, because of all the history that, yeah, has been discussed at length by a lot of people over the past few months. But to me, it comes down to not wanting to give scammers a quarter in Bitcoin. And I think that's obviously a desirable thing. Right?
我们不希望诈骗项目利用比特币玷污其声誉。但另一方面,激进地推行这类措施又会对网络性能和长期可行性造成重大影响。如果要打造世界级货币,就不能要求整个网络每年都为大量反垃圾邮件过滤器更新。这两个目标某种程度上是矛盾的。
We don't want scam projects using Bitcoin and tarnishing its reputation. But at the same time, releasing this kind of activity aggressively does have big impacts on both the performance of the network and its long term viability. Right? If you want to build the world's largest money, you can't require the entire network to update once a year to the numerous anti spam filters. And I think those two goals are kind of at odds.
要协调这两种观点确实很困难。
And reconciling both of these perspectives with each other is, yeah, difficult.
那么在这种情况下...如果假设走快速加强垃圾邮件过滤的路线,你认为实施更多反垃圾邮件过滤器会产生威慑效果吗?
So now what about in the case okay. So what would that look like if, you know, you were to just hypothetically to walk down that filter pathway of more very rapid, let's say spam filtering, do you think that there's a deterrence effect of implementing more filters against spam?
可能会有些微威慑作用。但回顾比特币项目历史就会发现,这类项目在我们用其他机制禁止后,总会找到新的数据嵌入方式。比如当初OP_RETURN政策从0字节放宽到40字节时的情况。
I think there might be small deterrence. But if we look back at the history of the Bitcoin project, we can also see that these kind of projects will just move to new ways of embedding their data if we prohibit them with some other mechanism. So when the OprahTurn policy was initially loo loosens, well, from zero bytes to, I think, 40 bytes it was.
大概在2014年,比特币0.9版本的时候。
Back in, like, 2014 for 0.9 of Bitcoin.
是啊,很久以前了。当时人们希望那些正在讨论的元协议,比如MasterCoin和Counterparty,能迁移到这些合适的输出上。但它们对目标用例的兼容性不够,所以这些项目最终在所谓的'假密钥输出'上部署了协议。
Yeah. Very long ago. It was hoped that some of the meta protocols which were being discussed back then, so stuff like MasterCoin and counterparty, would move to these opportune outputs. But they weren't permissive enough for the use cases that they wanted to use them for. So instead those projects launched their protocols on what is commonly called a fake key output.
这种做法实质上是将他们需要的资产叠加数据嵌入到这些假输出中。这个例子让我清楚地意识到,如果这类项目没有以伤害最小化的方式嵌入数据的选项,他们就会转而采用有害的方式。这根本不会阻止他们,或者说几乎起不到阻止作用。2015年时在场的人可能还记得,我们经历了一波短暂的Counterparty牛市——或者更准确地说叫Counterparty炒作周期,就像去年BLC那二十分钟一样,当时人们疯狂在Counterparty上推出各种代币项目。没错,那些输出现在永远存在了。
And what that does is it embeds the data that they need in order to build their, let's say, asset overlay into these fake outputs. And by that example, it seems clear to me that if these kind of projects don't have the option to embed their data in, let's say, a harm minimizing way, they will do so in a harmful way instead. And it's not going to deter them at all or like minimally deter them. So in 2015, people who were around back then might remember, we had a brief, like, counter party bull run, I would call it, or counter party hype cycle is probably the correct term for it, where similarly to the BLC twenty minutes last year, there was a big hype around launching new kinds of token projects and whatever on counterparty. And, yeah, those outputs are now around forever.
而且这些输出会永远留在我们的UTXO集里。如果OpReturn的载体容量能早点放宽,我们或许本可以避免这些输出永久留存的情况。
And, yeah, to lock them around in our UTXO set forever. And we probably could have not have those outputs around forever if the OpReturn carrier size was relaxed a bit earlier.
据我理解——如果我错了请纠正——OpReturn其实从比特币早期就存在,只是当时不是标准功能。2014年它被标准化时,人们认为'好吧,这算是为数据提供了一个伤害最小化的垃圾回收机制'。但我的理解是,它从第一天起就是共识有效的。
Or And as I understand, OpReturn is actually, I mean, you correct me if I'm wrong, but my understanding is Opryturn has actually existed since, like, the early days of Bitcoin, but it wasn't standard. And then so what happened in 2014 is that it got made standard, it was seen as like, okay. Well, this is the way that you can we can have a kind of a garbage ban a garbage bin for, you know, data kind of as in the harm minimizing, context. But my understanding is it was consensus valid, like, from day one.
确实。
Yes. Yeah.
好的。围绕这个问题已经有过很多来回争论。我想我们应该探讨其中一些观点。先回到Antoine那封邮件和他的逻辑——现在这个'妖怪'就是Sotreya,对吧?
Okay. And then so there's been a lot of arguments in in and out and back and forth around this issue. I guess we should address or explore some of those. I guess walking back to Antoine's, you know, email and rationale, which was, you know, the now the the boogeyman, which is Sotreya. Right?
我认为社区里很多人把这件事看作是,哦,比特币核心团队要么是在向垃圾信息发送者低头,要么就是在为某家特定公司的利益服务——那家公司是不是叫Janeway?总之,人们觉得比特币核心只为Citrea及其背后的公司服务。你能解释一下你的观点吗?这是否真的只为某家公司或某个特定小众案例服务,并且‘为更多垃圾信息打开了大门’?
The I think a lot of people in the community are seeing this as like, oh, Bitcoin Core is just bending over for either spammers or is sort of serving this the interest of this particular company or I think the company is called is it called Janeway? Anyway, Citrea and the company behind it that Bitcoin Core is serving just only them. Can you explain your perspective on this, whether it's serving, you know, just one company or one, you know, particular niche case and, you know, quote, unquote, opening the door for more spam?
我认为这些说法连最微小的真实性都没有。我完全没有看到比特币核心调整政策来迎合某家初创公司或风投支持企业的产品。Drea无论如何都会做他们想做的事。他们那个协议——我甚至不确定目前是否已经上线,好像只是个预发布版本。
I don't think any anything about that is true in the remotest. So I have zero indication that Bitcoin Core changes policy to accommodate for the products of a certain startup or VC funded company. So Drea is going to do their thing no matter what. I think the protocol that I'm not even sure if they launched or not at the current moment. I think they had like a prelaunch thing.
但他们正在推出的协议甚至没有使用opera术语对吧?是的,他们无论如何都会按自己的方式行事,这让我想起过去那些想要嵌入数据的覆盖协议的行为模式——他们总会想方设法把数据塞进那些伪造的输出里。
But the protocol that they're rolling out is not even using the opera term. Right? So they Yes. They're doing their thing no matter what, which, yeah, to me echoes past behavior of these overlay protocols that wanna embed data, they're gonna do it anyway. They're embed data in these fakie outputs.
要阻止数据通过伪造输出上链确实非常困难。但回到四月份Antoine提出的数据载体大小提案,当时提到Sutreja只是作为又一个在输出中嵌入数据的协议案例。整个过程中与Sutraya的关联仅此而已——它不过是又一个实施这种(比其他数据嵌入方式)更有害行为的协议案例。
It's really hard to stop data and fake outputs. But then to so to to roll back to the data carrier size, let's say, proposal that Antoine made back in April. Sutreja was mentioned there because it was yet another example of a protocol embedding data in outputs. And that's all the relation there was to Sutraya throughout this entire thing. So it's just an example of another protocol or another party doing the thing that is, yeah, just more harmful than any kind of other data embedding that he could do.
是的。据我理解,Citraea应该是那个...我想是叫Clementine?不确定发音。它算是一种BitVM桥接方案,基于1/n诚实信任假设。如果我说错了请纠正,但我的理解是他们本质上会通过铭文把数据写入链上。
Yeah. And now my understanding in this case is Citraea as a I think it's called the Clementine or Clementine. I don't know how to pronounce it. I think it's a BitVM bridge, and the idea is it's a one of n honesty trust assumption. And my understanding someone correct me if I'm getting it wrong, but my understanding is they will be doing basically inscriptions to put some data into the chain.
我们现在讨论的其实是类似欺诈挑战案例的情况,有点类似于闪电网络的正义交易。理论上如果没有这个上转限制提升,他们就会使用虚假公钥——这些公钥会进入UTXO集但不会被转发。而如果协议调整后,他们就可以改用上转方案。另外我听到的批评是说他们真正想要获取的是比特币的中继网络资源,这让一些人觉得‘这是我的节点’...
And then what we're talking about here is actually like they're kind of a fraud challenge case, or it's kind of loosely analogous to a lightning justice transaction. And then the idea is they would they have this theoretical challenge case that without the upper turn limit increase, they would have done fake pub keys, which go into u t in the UTXO set and not relayed anyway. And, hypothetically, with the upper turn change, if they do change their own protocol, they could use upper turn instead. Now I think one other criticism I've heard here is this idea that, well, actually, the the real specific thing that they're getting is the relay network of Bitcoin. And I think this is another area where people felt like, oh, it's it's my node.
‘如果我不愿意就不该被迫中继别人的数据’——这是我听到的主要担忧。你想对此作出回应吗?
I shouldn't have to relay other people's stuff if I don't want to. And, you know, that that was the concern that I heard that I've seen from some people. And so do you wanna answer that or speak to that?
是的。这就是为什么比特币核心有数据载体大小选项。你可以将其设为零。我也在我的节点上设置了策略选项。我把允许承载多重签名设为零,因为我不想那么做,也不想给它任何认可。
Yeah. So that's why we have the data carrier size option of Bitcoin Core. You can set it to zero. I set policy options on my nodes too. I set permit bear multisig equals zero because I don't want to do that either, and I don't want to give it any credence.
但我们也必须现实地认识到,这主要是向网络发出一个信号,表明点对点网络中的一些参与者不喜欢这种使用方式。但如果这个策略规则没有被所有参与者采纳,它实际上并不能真正阻止实际使用。
But we also have to be realistic to ourselves that this is, yeah, mostly a signal to the network, I guess, that some participants inside the peer to peer network don't like this type of usage. But it doesn't really do much in terms of prohibiting the actual usage if that policy rule is not adapted by everyone participating.
是的,我明白了。最近有很多讨论,我在想如何正确解释这一点。至少我的理解是,网络条件发生了一些变化,某种程度上这就像是在尝试匹配这些变化,以便个体用户仍能正确操作,他们可以进行费用估算,紧凑区块仍能保持较高的重构率。
Yeah. I see. And so then there's been a lot of talk about, I guess, I think, I'm just trying to think of the right way to explain this. So I think at least my interpretation of this is that it's kind of like there's been some changes kind of on the network in the, you know, the network conditions. And in some sense, it's like just attempting to match, that so that individual users can still do the right they can have their fee estimation, compact blocks, you know, are still being able to have a a high rate for compact compact block reconstruction.
我听到的另一个论点是不鼓励直接向矿工提交交易,比如像Mara Slipstreams这样的项目。我现在理解为什么这会有争议了。他们认为这像是在为垃圾信息敞开大门。但至少根据我的ADIQ播客理解是这样的。你能从宏观角度解释一下发生了什么吗?
And the other argument I've heard is also around not encouraging direct to miner submission like the Mara slipstreams of the world. And so my interpretation now I understand for some reasons that's controversial or whatever. They see that as, like, you're you're opening up for spam, whatever. But I I guess my interpret at least that's my, you know, my ADIQ podcaster reading of the situation. Can you explain, like, if we're zooming out, what's going on?
你觉得其他那些事情...让我这样问你吧。我认为存在一些正在发生的社会、经济和技术现象,比如序数现象、LibreRelay、BitVM,现在BitVM桥接已经成为现实。我认为这些都是随时间推移而变化的事物。我的宏观理解是比特币核心正在尝试回应其中一些变化。
Do you think those other things so I guess let me put the question to you this way. I think there are some of these social and economic and technical phenomena that have been occurring. So things like the ordinals phenomenon, LibreRelay, BitVM, like the fact that BitVM bridging is a thing now. I I think these are things that have shifted over time. And I guess zooming out the way I'm interpreting it is Bitcoin Core is sort of trying to respond to some of those things.
你怎么看?你同意还是不同意?你的观点是什么?
How are you how are you seeing that? Would you agree or disagree, or how are you viewing it?
我不会说比特币核心是在回应BitVM或类似项目。但我们在项目中努力做的是提供一个性能良好的节点,为矿工提供开箱即用的区块模板,为闪电网络节点提供良好的费用估算,使他们能够执行惩罚交易或在合理时间内强制关闭。这两点对于保持比特币及其二层闪电网络稳定运行至关重要。为了对抗某些链上使用而在这两方面妥协是危险的,我认为开了个坏先例。我们不应该为了向链上交易者传递信息而损害那些依赖我们处理资金的协议和用户的性能。
I wouldn't say that Bitcoin Core is responding to, let's say, BITVM exactly or similar projects doing similar things. But what we try to do in the project is ship a node that is performance, gives miners decent block templates out of the box, and gives Lightning Network nodes good fee estimations so that they can do either penalty transactions or they force close in a reasonable amount of time. And both of these are really important things to keep Bitcoin and its L2 Lightning running in a stable way. And compromising on these two things to try to combat certain use of the chain is dangerous, and I think a bad precedent to set. Like, we don't want to compromise the performance of protocols and users that have money depending on us to send a message to other people transacting on the chain.
好的。我认为关于这些观点真实性的程度,已经有很多来回的争论。比如,他们可能会说对费用估算的影响对他们来说没那么重要,或者对于挖矿中心化究竟在多大程度上是由此驱动的存在分歧,以及这个特定的操作返回变更是否真的能节省大量原本会被创建的UTXO?
Okay. And so I think there have been a lot of arguments back and forth on, let's say, the the amount to which those things are true. Right? So for example, they may say, the impact on fee estimation, maybe it's not that big a deal for them, or, maybe there are disagreements on exactly how much mining centralization is being driven by this, and is this specific op return change really gonna result in saving a lot of these UTXOs that would have otherwise been created?
是的。我们正试图减轻应用这些策略规则带来的不良影响或副作用。因此,我们正在研究如何在实施严格过滤的同时,仍能获得良好的费用估算和区块传播。我认为如果我们能找到巧妙的方法实现这一点,或许就该重新审视这次讨论了。毕竟这样就不会存在可能危及用户操作的技术缺陷。
Yeah. So we're trying to mitigate the bad effects that come or the bad side effects that come from applying these policy rules. So we're working on ways to get good fee estimation and get decent block relay, even if you apply aggressive filtering. And I think if we can come up with neat ways to do that, then it might be time again to revisit this conversation. Again, because we don't have these technical downsides that might, jeopardize some of the operations of our users.
我明白了。所以你认为实际上降低默认值是合理的,比方说假设能通过紧凑区块等方式改进,那么降低Core默认的数据载体大小可能是有意义的。
I see. So you see it like it could actually make sense to lower the default back down, let's say. Hypothetically, if the, compact blocks, something could be done to improve that, that you you it might make sense to actually lower the data carrier size default that Core comes out with.
是的。不过我对数据载体大小本身不太确定。
Yeah. I'm not sure about the data carrier size itself.
你更多考虑的是费率策略方面?
You're thinking more about the fee rate policies?
这绝对会让人们更容易运行自己的策略,拥有所有想要的策略调节选项,而不会因糟糕的费用和传播性能受到损害。
It it would definitely make it more feasible for people to run their own policy and have all the policy knobs that they want to and not get jeopardized by bad fees and bad Relay performance.
好的。那我们再谈谈相关的费率方面,因为我认为在这方面有些进展,是关于最低费率策略的吗?你能稍微介绍一下吗?首先为不了解的听众解释一下这是什么,然后谈谈这方面的变化。
Okay. And so let's talk a little bit about the fee rate aspects of it as well because I think there's been some movement there on is it min fee rate policies? Can you tell us a little bit about that? What it well, first of all, just for listeners who don't know, what is that? And then explain a little bit about the change there.
是的。有个叫最低费率选项的东西。它基本上规定了交易必须向矿工支付的最低费用,以便交易能被接受到内存池中。长期以来这个值被设定为1聪/虚拟字节。而现在比特币核心第30版中,由于多数矿工开始接受低于1聪/v字节的交易,这个值被调低了。
Yeah. So there is something called the min fee rates option. And this basically dictates what the minimum fee that a transaction has to pay to a miner in order for the transaction to be accepted into a noise mempool. And this has been set to one Satoshi virtual bytes for a long time. And that has been lowered now in version 30 of Bitcoin Core in reaction to a majority of miners starting to include sub one Satoshiba v bytes.
俗称'SubSAT之夏',没错。我认为这算是某种社会现象,某种程度上已经发生了,我觉得这可能是对网络现状做出反应的一个例子。
Colloquially known as SubSAT summer, which Yes. I would argue is kind of one of those social phenomena that has kind of happened, and I think maybe this is an example of reacting to what's happening on the network.
确实如此。因为在此之前,节点的区块转发性能严重下降,因为它们没有转发这些低于最低费率的交易,当这些交易出现在紧凑区块中时,不得不向对等节点请求。这个改动也引发了一些争议。我不太理解争议的原因,但我很高兴现在能更高效地堆叠交易,且不用为闪电通道开启支付更高费用。
Yeah. It certainly is because before or the block relay performance of nodes degraded in a serious way because they weren't relaying these subset fee rate transactions and had to then request them from peers when they arrived within a compact block. And, yeah, this has also been a controversial change. I don't really follow along the reasoning for why this is controversial. I'm just happy that I can, stack even harder and not pay more fees for my Lightning channel opens.
对。之前大家普遍认为1聪/v字节就是最低标准。然后突然间,这个标准似乎被网络迷因推动成为了某种社会现象。
Right. Yeah. So I guess, previously, it was kind of I guess, loosely speaking, it was kind of understood. Oh, just one one sat per VByte is basically the minimum. And then all of a sudden, I think it kinda got memed into existence as a bit of a social phenomena.
哦,如果你没低于那个标准会怎样?我觉得Mononaut可能与此有关。不过无论如何,发生了几件事。就像你说的,一些矿池降低了它们接受交易的费率标准。
Oh, hey. What if you weren't below that? And I think Mononaut might have something to do with this. But, anyway, a few things went on there. And then as you said, some of the mining pools lowered the rate at which they would accept.
现在有些矿池先降了费率,又调高,再降低,可能是在尝试找到合适的平衡点。但目前看来确实有人提交低于1聪/v字节的交易了,这算是个变化吧。你对此是赞同还是反对?或许可以谈谈费率最低应该降到多少。
Now I think some of them lowered it, then brought it back up again, then brought it back down, and maybe there was a little bit of trying to find the right level or the right, the sweet spot per se. But now it seems like, yes, people are putting in transactions below one sat per Vbite, which I guess is a change. Do do you you agree or disagree with that aspect of it? And maybe you could just touch on, like, how low should it go.
所以肯定需要有个底线对吧?我们不想转发那些完全不支付费用的交易,因为那样的话...
So there definitely should be a floor somewhere. Right? Don't wanna relay transactions that don't pay anything because then
因为那样的话,基本上就轻而易举了,对吧?
because then it's, like, trivially dossible. Right?
没错。网络会变得轻而易举,因为任何人都能创建,比如说,0.001 ZAP的EBI交易。所以我们不想让费用比现在更低,我觉得。最初设置这个底线是作为DOS防护机制。但据我回忆,那还是价格在1000美元左右的时候。
Exactly. The network would just be trivially dossible because anybody can just create a, let's say, point o o o one ZAP of EBI transaction. So we don't want to go much lower from here, I feel. The floor was put in place in the first point as a DOS protection mechanism. But this, as far as I remember, was back when the price was at around a thousand dollars.
所以,嗯,也许
So, yeah, maybe
现在实时价格是10.8万美元。所以是的,显然,用比特币计价的话,实际上手续费已经降了很多,但法币价值却涨了差不多100倍。对吧?比起那时候?
a now as we speak, it's a $108,000. So Yeah. Obviously, you know, in Bitcoin terms, it's it's kinda it's come actually, the fees people are paying now has come down a lot, but the fiat value has come up, like, a 100 x. Right? From, like, that those days?
是的,完全正确。所以按法币计算,现在以最低费率提交交易的成本,仍然比当初设置这个最低费率时要高。对。
Yes. Exactly. So the the costs in fiat terms is still higher now to submit a transaction at the very floor fee rate than was when this floor fee rate was put into place in the first place. Yeah.
明白了。所以我猜,嗯,这个费率需要定期更新,就像如果我们预期数字会上升,比特币会持续上涨,那么理论上这个费率就需要定期向下调整。
I see. And so I guess, yeah, there's I guess there's some, I guess, periodically, this has to be updated just like as if we expect number go up, right, Bitcoin is gonna keep going up, then it'll have to periodically be adjusted, right, like, to go down, I guess, theoretically.
我觉得如果价格...嗯...我们可能会看到类似情况。虽然我不确定我们是否会再看到那种价格水平,但
I think we'll probably see a similar thing if the price yeah. I I don't know if we'll ever get to those kind of price levels, but
没错。那得是每枚币价值百万美元,或者千万美元,甚至更高才行。
Right. It would have to be like like a million dollars a coin or $10,000,000 a coin or something higher.
是的。我预计情况会和现在非常相似,比如某个矿工开始接受低费交易,其他人纷纷广播更低费用的交易,其他矿工被迫跟进,否则他们打包的区块就会空置。所以我认为会重现非常相似的动态。
Yeah. I I I would expect it to play out very similarly as it did now, where, like, one miner just starts accepting them, a bunch of people start broadcasting transactions with even lower fees than a bunch of other miners are forced to do the same thing in order not to lose more fees because the blocks that they are producing will end up empty otherwise. So I think we would see a very similar dynamic play out again.
目前我们讨论的都是最低费率政策。那么其他相关事项呢?比如粉尘限额,或者同领域的其他规则?
Now that's what we're talk what we've been talking about so far is min fee rate policies. What about other things that are, let's say, related? So things like dust limit or, you know, other things, like, kind of in the same area.
是的。过去几周我们在Bitcoin Core内部开始讨论,如果矿工突然开始打包更微小的粉尘交易,我们该如何应对。目前项目组对此完全没有共识。因为与单纯降低费率不同,这会实际影响系统长期资源占用,让人们更容易创建这些粉尘输出。
Yeah. We've started discussing that over the past few weeks within Bitcoin Core of, let's say, if Minus suddenly start including even dustier transactions, what we should be doing. And there's no consensus within the project at all yet on what to do there. Because unlike just lowering the fee rate, this has an actual impact on the long term system resources because it's gonna make it easier for people to create these dusty outputs.
我想这也可以视为一种潜在的拒绝服务攻击手段对吧?如果门槛设得太低,就又存在DOS隐患了,是不是?
And I guess that can also be seen as a DOS able thing. Right? Like, if you lower that too low, then again, there's like a DOS concern. Right?
没错,正是如此。
Yeah. Exactly.
所以我觉得可能需要根据法币价格随时间调整,找到一个粉尘限额的平衡点。如果比特币涨到百万或千万美元一枚,粉尘限额可能也需要相应调整。
So I guess there's kind of a sweet spot, let's say, of based on the Fiat price over time, that maybe the dust limit also has to shift. If, you know, if Bitcoin goes to, like, a million dollars a coin or $10,000,000 a coin, then maybe the dust limits will change too.
是的,我也预期它最终会改变。我不确定我们是否处于那个价格水平
Yeah. I would expect it to change too eventually. I'm not sure if we're at the price level
这根本说不通。是的。
to It just doesn't make sense. Yeah.
如此大的变动。对。对。对。但老实说,我也不太愿意降低那个,因为,嗯,可能会有危险。
By such a change. Yeah. Yeah. Yeah. But I'm I'm I'm honestly also not too keen to lower that because, yeah, it might be dangerous.
是的。我问这个只是出于好奇,而且因为这是个相关领域。我猜还有其他一些事情也在变动,比如在点对点层面上。我不确定你对这方面了解有多深,比如那些——叫什么来着?卡车交易和一p一c之类的。
Yeah. I mean, the reason I'm asking is just out of curiosity and just because it's kind of a related area. And then I guess there are some other things that have sort of shifted around, like, at a peer to peer level. I'm not sure how deep into this you are, around things like, what is it? Truck transactions and one p, one c, and things like this.
你能跟我们稍微聊聊这个吗?以及目标是怎样提升L2性能的?
Can you talk to us a little bit about that and how the aim is to improve l two performance?
是的。所以这个功能其实已经发布了
Yeah. So this is something that was already shipped in
之前的第九版?
previous nine?
对,对,我也这么认为。特别是闪电网络,它允许你在交易中添加一个所谓的锚点输出。这个锚点输出附带零金额。
Yeah. Yeah. I think so. And for lightning specifically, it allows you to attach a so called anchor output to your transaction. This anchor output has a zero amount attached to it.
所以它上面没有任何币。背后的理念是,当你向更广泛的网络广播交易时,你可以将与交易相关的手续费附加到这个锚点或零值锚点输出上。这意味着我们不必在闪电通道中预先承诺该交易的手续费,而是可以在实际需要时根据主池和网络的当前状态动态计算手续费。
So it doesn't have any coins on it. And the idea behind that is when you broadcast that when you broadcast your transaction to the wider network, you can attach the fee that is associated with that transaction to that anchor or zero value anchor output. And this means that we don't have to commit to the fee for that transaction in a Lightning channel upfront. And we can do the fee calculation dynamically when we actually need it based on what the current states of the main pool and the network is.
明白了。那么这样做的意义在于,它有助于——我想是为闪电网络这类场景设计的——人们不必在关闭通道时预估手续费,可以先设置一个很低的手续费,等到真正需要关闭通道时再调整,这是我的理解。对吗?
Yeah. I see. And so then, the idea is that it allows it helps, I guess, l twos like Lightning because then people can just, like, not have to, I guess, estimate what the fee is gonna be when they close the channel, and now they can put it in at a really low fee and then, amend later when they actually need to close the channel as an example is my understanding there. Is that right? Yeah.
对,对。
Yeah. Yeah.
好的。这让所有事情都变得简单多了。
Okay. And it it just makes everything much easier.
我懂了。据我所知,在最近的版本中——可能不是这个版本——但最近有工作成果旨在减少闪电网络中的强制关闭行为。
I see. And then as I understand, there was also in recent versions, maybe not the this version, but I think there was recent work done to help stop, like, some of the force closing in Lightning.
哦,这个我不太熟悉。
Oh, I'm not familiar with it.
好的。对。好的。所以我想是的。我觉得另一种情况回到更广泛的那种非得分类型的戏剧性内容。
Okay. Yep. Okay. So I guess yeah. I I think the other kind of back to the broader sort of not score kind of, drama stuff.
我很好奇你对挖矿中心化这一面的看法。比如,如果不加以控制,情况会有多糟糕?举个例子,如果紧凑区块的重建率没有修正,具体会有什么负面影响?对我们来说最坏的结果是什么?
I'm curious to get your take on the the mining centralization side of it. Like, how how bad do you think it would be if if left unchecked? If, as an example, compact block, reconstruction rates were not, fixed, what exactly is the downside? What's the bad outcome for us here?
是的。我们确实希望建立一个开放的中继网络,为所有人提供良好性能,让新玩家更容易进入市场。对吧?我们不希望矿工形成卡特尔,彼此制定自己的中继规则。所以核心理念是,我们不想因为性能下降而进一步巩固可能由此产生的垄断,阻碍新进入者。
Yeah. So we do want to have an open relay network that has good performance for everybody to make it easier for new players to enter the market. Right? We don't want a cartel of miners to form that have their own relay rules, with each other. So the idea is that we don't want to entrench the monopoly that might be caused by this even further by degrading performance for new entrants into the market.
你是否知道有没有某种...可能很难量化,但能否量化略微降低的区块传播紧凑区块重建的影响?
Do you know if there's any, like, kind of I guess, yeah, maybe it's hard to quantify, but is it possible to quantify, like, what is the impact of slightly reduced block prop compact block reconstruction?
目前尚不明确,我认为影响可能比大多数人认为的要小。这方面我想提到Mempool.Space团队中Orinx参与的一项研究,他观察了子集费率交易推出初期阶段产生的孤块数量。值得注意的是,尽管包含这些子集费率交易的区块在网络中传播较慢,但那些包含SubSap V Ray交易的矿工却连一个孤块都没产生。所以显然对他们完全没有影响。
It's not clear, and I'm of the opinion that it is probably lower than most people would attribute to it. And the one thing I like to point to in that case is a study that one of the Mempool. Space guys that Orinx served, he looked at the amount of orphan blocks that happens during this initial phase of subset fee rates transaction rollouts. And what he noticed was that even though the blocks containing these subsets fee rate transactions relayed slower across the network, there wasn't a single orphan block that those miners, including these SubSap V Ray transactions produced. So it didn't have an impact on them at all, apparently.
仅从数学概率来看,在他观察的时间范围内本应出现1到2个这样的孤块。所以这个小迹象表明实际影响可能比某些人认为的要小。
And just going by the math of it, we would have expected between one and two such orphans in the time frame he looked at. So it is a small indication that the effect is probably lower than some people think it is.
好的。
Okay.
但确实还有一大堆其他影响因素我们无法准确考量,因为矿工可能更倾向于彼此对等连接,甚至可能建立自己的专用网络来转发区块。所以,确实很难预估实际会产生什么效果。
But there's also a whole bunch, yeah, of other effects that we can't really account for because the miners might preferentially peer with each other, or they could even have their own network with each other just to relay the box. So, yeah, it's hard to estimate what the actual effect is gonna be.
我明白了。我想还有像Libre Relay这样的存在,对某些人来说颇具争议,而另一些人则视其为抗审查工具。你能谈谈这个吗?你对Libre Relay持什么观点?
I see. And I guess there are things like like Libre Relay, which, of course, for some people is controversial. For others, they see it as a censorship resistant thing. Can you comment on that? Like, what do you what's your view on Libre Relay?
你认为它应该存在还是不应该存在?它是在帮助还是损害网络?
Do you think it should exist or should not exist, or is it helping or hurting?
我对此其实没有明确立场。在一个开放的、对抗性的点对点网络中,人们自然可以做各种事情,所以它就这样存在了。
I don't think I really have an opinion on it. Yeah. I guess it's just a thing that happens if you have an open adversarial peer to peer network where people can just do things. So yeah.
是的。关于这个所谓的'宽容少数效应'——在政策背景下,少数节点中继更广泛的交易时,它们能比过滤方更容易将这些交易送达矿工——你有什么看法吗?
Yeah. Any comment on this, so called tolerant minority effect with, the filters in a policy context that a small number of nodes who are relaying a a broader set of transactions, they can more easily get those transactions through to a miner somewhere somehow than, you know, than than the filter side of that equation, let's say.
确实。过去几个月就能观察到这种现象。尽管当时网络上还没有比特币核心发布的默认降低费率的节点,但我从自己节点广播的交易仍能在约20分钟后被打包进区块。只要少数节点运行这些较低费率过滤器,就足以让交易传播到矿工那里。
Yeah. So this was observable over the past few months. So even though there weren't, I think, any released or Bitcoin Core released nodes yet on the network that lowered the fee rates by default, it was already possible to just broadcast a transaction from my nodes and have it show up in a block. Think it was twenty minutes later even or something. So it is enough for transactions to propagate to miners if we just have a few of the nodes running these lower, fee filters.
据我所知,即便在那段时期,Libre Relay的费率也没有低于1聪/虚拟字节。这说明并非所有人都依赖Libre Relay来实现——这更像是特定情境下宽容少数效应的例证。当时人们在不使用Libre Relay的情况下,也能通过网络中继低于1聪的交易。
And as I understand, even during that time period, Libre Relay was not even going below one SAT per V byte. So it's not that these people were all running Libre Relay to do it. So it's like it's even more of an example about this tolerant minority case in a specific context. Sure. But people were getting sub once at transactions relayed in mind without using Liber Relay just, you know, on the network.
是的,没错。所以人们不得不进入他们的比特币核心配置文件,降低主费率选项,然后运行他们的节点。是的。
Yeah. Exactly. So people had to go into their Bitcoin core configuration files, lower the main fee rate options, and then run their nodes with it. Yeah.
是的。而且可以推测,足够多的人这么做了,比如手动设置他们愿意接受并转发的费率或设置更低的值,然后这种情况就发生了。
Yeah. And presumably, enough people did that, like, just went to manually set their fee rate or their, their setting lower that they would accept that and relay that, and it happened.
是的。
Yes.
好的。总的来说,我不想被禁止,你知道的,但让我们谈谈非法内容,我希望大家都明白。显然,这里没有人支持比特币上的非法内容。但对于提高OpReturn转发限制,你有什么看法吗?
Yeah. Okay. I guess on the whole I don't wanna get, banned off, you know, whatever, but let's talk let's say illegal content, and I hope everyone understands. Like, well, obviously, no one here is in favor of, you know, illegal content on in Bitcoin. But what was your, I guess, do you have any comment on that about that raising the the OpReturn relay limit?
这是鼓励还是阻止,或者没有影响?你认为这会增加比特币上非法内容的风险,减少还是保持不变?你怎么看?
Is that encouraging or discouraging, or is it the same? Do you see it as increased risk of illegal content going on Bitcoin or less or the same? How do you see that?
我认为是一样的,因为这已经是小事一桩。已经有网站允许你将媒体上传到铭文中。是的,OpReturn的更改并没有让这变得更容易。
I think it's the same because it's already trivial. Like, there are already websites that offer you to upload media into an inscription. And, yeah, the op return change doesn't make that easier.
是的。不过,我认为一个反驳的观点是,如果你去Mara Slipstream,他们可能会在那边进行过滤。对吧?因为他们有一个网站。显然,他们是一家上市公司。
Yeah. Although, I think one counterargument would be that if you went to, let's say, Mara Slipstream, that they might filter on their side. Right? Like, because they've got a website. Obviously, they're a public listed company.
他们很可能在那边运行某种过滤器,用来阻止非法内容被写入区块链。你觉得这改变了现状吗?还是说你认为这里另有隐情?
They very likely run some kind of filter on their side to stop, you know, mining illegal content into the chain. So do you think that changes it, or do you think of it's more like do you think there's something else here?
我是说,同样的逻辑也适用于包含合法内容的OP_RETURN交易对吧?不过现在这些网站已经在提供媒体嵌入服务了。你可以直接从他们那里获取交易,正常广播到点对点网络,然后只要有一个矿工打包就成事了。
I mean, the same would apply to an op return transaction with legal content inside. Right? But, yeah, the these websites are offering these media embedding services already now. Like, you can just get the transaction from them, broadcast it normally on the peer to peer network, and then, yeah, it just takes one miner to include it anyway. Yeah.
比特币核心开发组内部讨论过这会增加非法内容风险吗?还是说大家觉得反正通过铭文之类的方式已经能实现这种操作了?所以基本上被视为同等风险?
Was there any discussion inside of Bitcoin Core that this would increase the risk about illegal content? Or, you know, was there a back and forth on this, or was it more just everyone thought, well, it's you can already do this with inscriptions or this kind of thing? Okay. So it was kinda seen as like the it's kinda it's just the same risk. Okay.
确实。我认为这正是引发大量愤怒情绪和争议的焦点——人们觉得风险被抬高了。不过这个领域的律师们——七人中有六位——都表示不认为风险会增加。他们觉得这可能是被夸大的风险,但既然有人担忧,至少值得讨论一下大家的看法。
Yeah. Yeah. I think that's probably one of the areas where there's been a lot of, you know, a lot of anger or emotion and engagement about this that it's raising the risk. Different lawyers in the space, I think six of seven polled, have said they didn't believe this increases the risk. But I I they or or I think that they said it's it's likely an overblown risk, but I guess if people have that concern and, it's worthwhile people at least discussing and talking about how they're thinking about it.
嗯...这个我还真不知道该怎么评价。
Yeah. I'm I'm not sure what to comment on that still. Yeah. Like yeah. Yeah.
我觉得这完全是被夸大了。
I feel it's completely blown out of proportion.
那么关于接下来的发展方向,你对比特币核心还有什么想补充的吗?或者换个问法——你认为比特币开发中有哪些不为人知或被低估的方面?
So in terms of where things are going from here, do you have any other comments on, things people should know about Bitcoin Core? Or, I guess, let me ask you this. What do you think is an an unknown or underappreciated thing, about Bitcoin development?
是的。这可能是我最喜欢谈论的话题,特别是比特币核心。这是我早期就对这个项目着迷的原因之一。比特币核心执着于确保发布的二进制文件尽可能纯净。因此我们不仅审计自己的依赖项,还会审计使用的一些工具链。
Yeah. This is probably my favorite thing to talk about, Bitcoin Core specifically. One of the reasons I became fascinated with the project from a very early stage on. And this is Bitcoin Core's obsession with ensuring that the binaries that are published are as pristine as possible. So we not only audit our own dependencies, we also audit some of the tool chains that we use.
我们使用可复现构建。不仅如此,我们还使用一个叫Geeks的系统来生成二进制文件。这个系统确保你用来编译代码的编译器是通过源代码链引导的,而不是某个引导编译器。我认为这非常关键。这涉及到所谓的'信任信任'问题——工具链中某个组件最终只是个你必须信任的二进制文件。
And we use reproducible builds. And even a step further than just reproducible builds, we use a system called Geeks to produce our binaries. And this system ensures that the compiler that you compiler that you are using to compile the code is bootstrapped from a chain of source codes and not from some bootstrapping compiler. And this, I think, is really key. So basically this goes into something called trusting trust, where one component in your tool chain eventually is just a binary that you need to trust.
你无法检查其源代码,必须相信这个二进制文件不会在你的引导过程中植入后门。即使你设置了可复现构建,可能在引导链的某个环节存在一个被植入后门的C编译器。对比特币而言,正确处理这个问题至关重要。
You can't inspect the source code. And you have to trust that binary not to insert a backdoor into the rest of your bootstrapping process. So you might have reproducible builds and everything set up. But somewhere down your bootstrap, you have this weird version of, let's say, a C compiler that is backdoored. And I think for Bitcoin specifically, it is really important to get this right and to solve this problem.
因为我们希望比特币能稳定运行几十年。攻击者现在就可以在引导链中植入后门,潜伏几十年。直到攻击真正发动时我们才会发现。比特币核心采用的系统通过建立可追溯到几百字节机器码的引导链来解决这个问题,这些机器码是软件工程师可以阅读理解的。
Because we want Bitcoin to be stable for decades. An attacker can create backdoor inside such a bootstrapping chain now and sit on it for the next few decades. And we won't learn about it until the attack is actually deployed. And the system that we use in Bitcoin Core solves this by having this kind of bootstrap chain that goes all the way back to a couple 100 of bytes of machine codes that can actually be read and understood by a software engineer.
我明白了。你讨论的是如何确保代码没有被人在我们不知情的情况下植入漏洞。据我理解,代码通过PR提交后被合并到主分支,经过编译生成最终用户使用的二进制文件(如.exe或.tar.gz等),而你说的就是确保这个构建过程能真实反映原始代码,让用户机器运行的确实是编写好的代码。
I see. And so I guess what you're talking about there is this idea that having stronger confidence that people haven't inserted bugs or, vulnerabilities into the code with us unknowing because so it's my understanding of it that there's you know, code is being you know, people are making pull requests. It's getting merged into the master. That code is getting that branch is getting compiled and create and because you have to create, I guess, the actual binaries, which is like, you know, whatever, the dot EXE or the dot TARGZ or whatever, these files that we, the end users, right, whether it's Windows, Mac, and Linux, we actually run and install on our PCs. But I guess what you're talking about is that process of how is it built and made ready for the user to make sure that it actually is correctly what the code was written as is what is running on your machine.
我理解得对吗?
Have I have I got you there?
没错。更关键的是你还能完整检查用于生成那些二进制文件或机器码指令的所有工具。是的。
Yeah. Exactly. And the key beyond that is that you can also fully inspect all the tools used to generate that binary or that blob of machine code instructions. Yes.
我明白了。是的。当然,如果你可能是高级用户、开发者或专业人士,你完全可以手动整合代码、编译并自行构建。但普通用户可能不会这么做,他们可能只是下载安装,或者使用像Umbral、Start nine、node my node以及node in a box这样的标准软件包,而这些软件包又依赖于比特币核心团队提供的二进制文件。
I see. Yeah. And so it is also possible, of course, that if you're, like, maybe a power user or a developer or an advanced person, you can actually just, like, manually kind of pull the code together and build it compile it and build it yourself. But, like, typical users might not do that. They might just download and install, or they might be using, like, the typical, like, Umbral and Start nine and these node my node and the node in a box packages who are in turn relying on the binaries that the Bitcoin Core team are creating.
是的。但这里需要理解的是,即使作为开发者使用自己的工具链并自行编译,你所使用的工具链可能仍然——
Yeah. But so the the thing to understand here is even if you use your own tool chain as the developer and you compiled it yourself, the tool chain that you're using might still
对。也就是说,你自己可能在某个环节已经被攻陷了。
Right. As in you could have you could yourself have been pwned somewhere along the line.
不。甚至不是你自己,而是你在某个时间点下载的编译器——
No. Not not even you yourself, but the the compiler that you are downloading at some
对。继续。
point Yeah. Go on.
从互联网上
From the Internet
是的。
Yeah.
可能是的,某种程度上被攻破了。
Might be, yeah, compromised in some way.
好的。是的。然后我想这大概算是深入到了,比如说,可重现构建的部分。你还提到了一些依赖关系。据我理解,主要思路是显然你可能依赖其他软件项目,但目标是逐步移除不必要的依赖。
Okay. Yeah. And then so that's I guess this is kind of getting that's, like, really, I guess, deep into the, let's say, the reproducible builds part of this. Now you also spoke a bit about dependencies. And so as I understand, the general idea is you want obviously, you might have some dependencies on other software projects, but the idea is you're trying to remove unnecessary dependencies over time.
我理解这是比特币核心一直在做的事情。你能详细说说目前的进展吗?
And I understand this is something that Bitcoin Core generally has been doing. Do you wanna just elaborate a bit on that and where that's at nowadays?
是的。这其实是另一个弃用原因——哦抱歉。
Yeah. So that was actually another reason to deprecate oh, sorry.
不是那个。是旧版钱包。
Not that. Legacy wallet.
移除旧版钱包是因为它使用了Berkeley DB。
Remove the remove the legacy wallet because it used Berkeley DB.
对。这就是2013年那次著名的分叉,不过确实,已经成为历史了。
Right. This is the famous 2013 fork, but yeah. Gone.
是的。那个数据库已经很久没人维护了。而且,编写针对它的代码确实非常痛苦。所以大约四五年前,描述符就转向了SQLite。但我们仍不得不将Berkeley DB保留在依赖树中并继续构建它。
Yeah. That database has been unmaintained for a long time. And, yeah, writing code against it has been really painful. So a switch was made for the descriptor wanted to SQLite, I think, four or five years ago now. But we still had to keep Berkeley DB as part of our dependency tree and still build it.
因此移除旧版钱包让我们得以摆脱对Berkeley DB的依赖。是的。
So that removing the legacy wallet allowed us to get rid of Berkeley DB as a dependency. Yeah.
明白了。说到2013年那次臭名昭著的链分叉,我记得那时候我刚接触比特币,那次大规模链分叉可是件大事。我记得Gavin不得不站出来处理,我想就是由这个Berkeley DB问题引发的,之后比特币就转向了LevelDB对吧?
I see. And, yeah, the infamous 2013, chain fork. I remember at that time, you know, I was new to Bitcoin then, and I remember there was, a big chain fork, and it was a big deal. And I think Gavin sort of had to come out and had to get but I think that was caused by this Berkeley DB thing, and I think it was, like, from then, I believe Bitcoin moved to what's called LevelDB. Right?
是LevelDB吗?
Is it LevelDB?
没错。这也是我亲身经历的比特币早期事件之一,确实是我记忆中的一部分。
Yeah. Exactly. The this is also, like, one of the first, Bitcoin incidents that I witnessed. So it's, yeah, part of my memory too.
是啊。
Yeah.
挂出来吧。
Put it up.
我记得我们之前讨论共识规则时提到过,甚至回到最初的话题。我记得几年前听过一个播客,可能是Chaincode Labs的Sippa和Peter Buller主持的,具体记不清了。当时他评论说,Berkeley DB这个东西在不知不觉中实际上已经成为了比特币共识规则的一部分。这又是一个例子,说明将共识与比特币其他组成部分分离是多么困难。
And my and I recall kind of even coming back to what we were saying at the start or earlier around consensus rules. I remember listening to a podcast, Sippa, Peter Buller, on I think it was Chaincode Labs maybe three or four years ago. I can't remember now exactly, where he was commenting that it was like the effect without knowing it, this Berkeley DB thing had effectively become part of the consensus rules of Bitcoin without us knowing it. And so I guess that's, like, another example of how difficult it can be to actually, separate consensus from the other elements of Bitcoin.
没错。这正是我们不断提醒自己的一个案例。那是个重大错误,我们在内核工作中尽量避免重蹈覆辙。是的。
Yeah. Exactly. That's like the one case we continuously remind ourselves of. That was just a big mistake and a mistake we try not to repeat for the kernel work. Yeah.
好的。那么展望未来,大家应该期待在比特币核心中看到哪些新进展呢?
Okay. So looking out ahead, what do you what are some of the things that people should look forward to seeing in Bitcoin Core, just generally?
是的。关于Stratum v2的挖矿接口,我之前没详细说明的是,我们采用了全新的cap和proto接口来构建它。这不仅是与比特币核心节点通信的新方式,还能让节点的不同组件拆分成独立二进制文件,通过这种CAP和Proto接口及序列化格式相互通信。通过这项改进,我们现在可以实现部分组件的二进制分离。
Yeah. So one of the things I didn't get into with mining interface for Stratum v two is that we built it in a way that uses this new cap and proto interface. And that's a new way to communicate with Bitcoin Core node. But it is also a way for different parts of Bitcoin Core nodes to be split into separate binaries and then communicate with each other through this CAP and Proto interface and serialization format. So with this change, we now have the possibility of splitting some of our components into separate binaries.
这会带来一系列连锁效应。独立的二进制文件可以相互通信。比如一个二进制文件运行核心节点逻辑——包括点对点网络、内存池和共识规则;另一个存放钱包,再有一个负责图形界面,还有的专门处理数据库或索引等等。
And this has a bunch of downstream effects. So having separate binaries that can communicate with each other. So let's say you have a binary that runs the core node logic. So the peer to peer stuff, the mempool, and the consensus rules. And then you have another binary that has the wallets, another binary for the GUI, another one for databases or more indexes or whatever.
这种架构让我们能更好地隔离代码组件,促使我们优化架构设计。还有个好处是,假设你只想修改数据库部分,现在只需针对这个接口编程,无需改动节点逻辑。钱包修改同理。这点很重要,因为对于仅影响小型索引功能的改动,我们的审查标准可以适当放宽,不像涉及共识或网络栈的变更那么严格。
And this allows us to have much better isolation between components in our code. So it gives us more incentives to precise our architecture. But it also has the effect that if you just wanna change something in, let's say, the database, you can now just program against this interface and don't have to change any logic in the node part. Or similarly for the wanted, if you just want to change something to wanted, you can now just do it against that interface. And, yeah, that's important because we can probably relax our review standards a tiny bit for changes that just affect a small indexing feature as opposed to a change that affects consensus or appear to be a stack or whatever.
这也让我们能更专注各自领域。现在可以专心做自己感兴趣的工作,不再需要分神管理代码库其他部分的变更了。
And it also allows us to get out of each other's way a bit. So we can now focus on the stuff that we actually like to do and like to work on and no longer require to, yeah, have to manage all the other changes going on in the rest of the code base.
明白了。所以这个想法是当你在创建代码拉取请求时,你可能会担心自己虽然主要修改某个特定区域,但这段代码实际上还会影响其他区域。你的意思是应该尽量分离这些部分,让每个人都能专注于自己负责的模块。
I see. So the idea is when you are making you know, you're trying to create a pull request to do some code, your concern might be, I'm working in this one particular area, but actually this code also touches some other area. And so what you're saying is the idea is to try to separate them so that you can each person can just focus on his own knitting per se.
是的。过去几年这方面已经改善很多了,现在这些接口基本都已到位,我们不再频繁互相干扰了。但通过拆分成独立二进制文件,能进一步巩固这种架构,确保未来也能保持稳定。没错。
Yeah. So the this has already gotten much better over the past few years. So these interfaces are already mostly in place where we're not constantly interfering with each other anymore. But doing the split into separate binaries will entrench this and ensure that the architecture will hold for the future too. Yes.
最后这也意味着,假设索引代码或WANNA代码出现漏洞导致该部分崩溃,这个崩溃不会再影响共识规则。所以即使系统某些部分可能处于异常状态,你仍能继续处理交易验证或向网络转发区块。
And the last thing that this also means is that if there's a bug in, let's say, the indexing codes or the WANNA codes, and it makes that part of the code crash, the crash doesn't affect the consensus rules anymore. So you can still keep on going with transaction validation or relaying blocks to the network, even though some other part of the stack might be in, yeah, a bad state.
确实。其实我很好奇你是否了解,因为我知道核心30版还有其他改进。不知道你关注程度如何,但我听说比特币核心30版改进了NAT穿透功能?这个传言属实吗?
Yep. Actually, I'm curious if you are familiar because I know there's some other aspects of Core v 30. I don't know how closely how closely you follow or you're into those aspects of it, but I heard something about, like, better NAT traversal in Bitcoin Core v 30. Is that true also?
哦对。比特币核心的长期贡献者之一、前维护者LanWJ用Rhodes替代了Mini UPnP库。这让我们再次减少了依赖项,摆脱了曾导致严重漏洞的外部UPnP库——有些漏洞甚至能远程使节点崩溃。新库确实带来了更好的原生功能特性。
Oh, yeah. So one of the probably longest term contributors to Bitcoin Core and previous maintainer, LanWJ, Rhodes are replacement for Mini UPnP and the Mini UPnP library. So we're back at re reducing dependencies again, because this allowed us to remove our dependence on this external UPnP library, which had produced past bugs for us. And some of them were really bad where you could remotely crash a node. And this new library gave us, yeah, some better natural features.
我们决定在最新核心版本中默认启用这些功能。
And we now decided to switch these on by defaults in the newest core version.
那么我的理解是——为听众快速解释下,NAT穿透(如果我理解有误请纠正)应该是网络地址转换穿透。当我们在家庭网络时,有自己的路由器和192.168.1.x这类内网地址,这与外部网络不同。除非进行端口转发,否则比特币节点可能无法被访问。而现在据我理解(请指正),这个改进能让节点默认更容易被其他比特币节点访问到。
So So my understanding, I guess, just quickly for listeners, NAT traversal, as I understand, you correct me if I'm wrong, I think it's network address traversal. And the idea is when we're in our home network, we've got our own, like, our own router and our own, you know, 192Dot168Dot1 dot whatever. And but that's different to the network from the outside world. And then my understanding then is unless you do port forwarding, your Bitcoin node may not be reachable. But now as I understand then you tell me if I'm getting this wrong, but my understanding then is this makes it easier for your node to just kinda default, be able to be reachable to other Bitcoin nodes.
我的理解正确吗?
Have I understood it correctly?
没错。完全正确。所以你仍然需要在路由器上进行配置或开启。我认为大多数路由器默认不会开启这个功能。但你不需要
Yeah. Exactly. So you you still need to configure it or switch it on on your router. I think most don't switch it on by default. But you don't have
Mini UPnP是需要你在路由器层面进行的设置。不过一旦开启后,你的比特币节点就更容易被连接或访问。
to Mini UPnP is a setting that you have to do at your router level. But then once you have that, then your Bitcoin node is more easily connectable or reachable.
其实我们不再支持那个特定协议了。但很多路由器在开启mini UPnP时,会同时启用其他NAT穿透协议。这些才是我们现在支持的。比如NAT PMP就是我们目前打算支持的方式。
So well, we don't we don't support that particular protocol anymore. But many many routers, when you switch on mini UPnP, they will also enable some other NAT traversal protocols. And these are what we currently support. Like, so NAT PMP is, like, the the way we intend to support this at the moment.
好的。那个协议叫什么来着?刚才没听清。
Okay. So what what was the name of it? Missed it.
P。
P.
NATP和P。明白了。抱歉,刚才我一定是听错了。
NATP and P. Okay. Gotcha. Sorry. I missed I I I must have misheard you before.
好的。据我理解,v30版本在初始区块下载(IBD)方面也有所改进。如果你熟悉的话,能否详细说明一下?
Okay. And then as I understand, there have also been some IBD, initial block download improvements in v 30. Can you maybe elaborate on that if you are familiar?
是的。这些改进是建立在过去四五个版本中已实现的一些前期优化基础上的。我记得从版本25开始,我们成功将IBD时间再次缩短了一半,这很酷,经过这么多版本后仍能看到性能的持续提升。在这个版本中,有一系列较小的改进,但据我回忆,相比版本29的增量改进并不大,大约在10%到20%左右。
Yes. So these have been building on some prior improvements that have been done over the past four or five releases now. So I think since version 25, we managed to cut the IBD time in half again, which is pretty cool to still see happening all these releases later with continuous performance improvements. In this release, there were a bunch of smaller improvements made, but the incremental improvement, as far as I recollect, isn't that big over version 29. I think it's around 10 or 20%.
不过...嗯...我现在不太确定那些具体数据了。
But I'm I'm yeah. I'm not sure anymore about those stats.
明白了。那么从更宏观的角度看,将比特币核心与其他实现甚至早期版本对比,你对如果存在不同实现的世界格局有什么看法?根据你之前的说法,我猜你对这种情况是接受的?比如,你认同比特币可以有多种实现,而比特币核心只是其中之一?
Okay. Gotcha. And I guess just zooming out a little on Bitcoin Core contrasted with other implementations or even earlier versions, do you have any thought on what the world might look like if, you know, there's different implementations? And I guess, I presume from what you were saying earlier, you're comfortable with that. Like, you're okay with that idea that there's different Bitcoin implementations and Bitcoin Core is one of multiple?
是的,我认为竞争绝对是健康的。我非常喜欢比特币核心项目,短期内至少没有打算参与其他实现的工作。但我觉得比特币核心需要一些竞争。
Yeah. I I think competition is definitely healthy here. I really like Bitcoin Core, and I really like the Bitcoin Core project. So I don't intend to work on another implementation in the near future, at least. And I think it's good if Bitcoin Core gets a bit of competition.
是的,也许这能帮助我们找到更好的优化方式,在安全功能和代码审查等方面更加精益求精。
Yeah. Maybe that can help us come up with even better ways to to optimize things to be even more pedantic on security features and review and whatever.
对。我注意到社区或网络上有一些人表达过担忧,认为比特币核心由于是主导实现而控制了默认设置。当然,Knots的支持者一直在强调其市场份额已上升到20%左右。我想问的是,如果默认实现改变了某些中继设置之类的东西,是否实质上改变了比特币?
Yeah. Yep. I think one other concern I've seen from some people in the community or online, whatever we're call it, Bitcoin, online, screenfest, people saying that, Bitcoin Core is kind of controlling the default, right, because it's such a dominant implementation. Although, of course, the Knott's, fans have been really talking a lot about how the Notts, percent has risen to, I don't know, 20 something percent, as we speak. I guess what my point I'm asking here is, is it is it effectively changing Bitcoin if the default implementation changes certain, you know, relay settings or things like that?
一方面我理解的是,你可以说,其实不必升级。对吧?比特币核心有这种长期不自动升级的机制,这是由来已久的做法。但另一方面,也存在安全更新问题。
So because I understand on one side, you you could say, well, you don't have to upgrade. Right? Bitcoin Core has this long no auto upgrade process. Like, that's a long standing thing. But at the same time, there's kind of security updates.
如果你落后超过两三个版本,就相当于进入生命周期末期。那么是否存在某种压力,使得作为默认选项的比特币核心能够强行推动某些改动,毕竟它是主导实现方案?
And you if you go more than, let's say, two or three releases out of date, now you're kind of end of life. So is there some level of pressure there that it's kind of like Bitcoin Core being the default can sort of push through certain things because it is the dominant implementation?
我认为这有一定道理。确实很多人运行它,我想这会产生线性效应。但我们也看到,人们完全有能力自行修改默认设置,发布轻微调整的核心版本,或者像KNOT那样发布深度修改版。只要我们不禁止这些行为,那就...
I think there is a bit of merit to it. Like, many people do run it, and I guess there is a linear effect to it. But at the same time, we've also seen that people are perfectly capable of changing the defaults themselves or publishing slightly tweaked versions of Core or publishing heavily tweaked versions of Core like KNOT. And as long as we don't prohibit that, then yeah. That's just
好吧,那就顺其自然吧。
Yeah. Just so be it. Okay.
赋予人们自由选择运行任何软件的权利。是的。
Gives people the freedom to choose and run whatever they want to. Yeah.
明白了。那么在软分叉方面,你现在主要专注于大规模共识清理工作?这是你当前的主要方向吗?
Okay. And then so I guess soft fork wise, you're mainly you're you're you're mainly focused on the great consensus cleanup at this point. Is that the main one that's kind of on your horizon?
没错。老实说我对那些试图为闪电网络或更疯狂的临时交易结构部署新功能的软分叉不太感兴趣。我更专注于让核心协议变得更加健壮。
Yeah. I'm honestly not too interested in the soft forks trying to deploy new features for, yeah, Lightning or some more crazy temporary transaction constructions. So I I try to focus on making the core protocol just more robust. Yeah.
好的。我认为这些就是关键点...哦抱歉,还有一点。我知道这个话题多年来已经反复讨论过几次,但我很好奇是否有人考虑过在Core中内置某些功能。比如说像Electrum地址索引这类东西。
Okay. I think those are the kind of the key oh, sorry. One other one. I know this has been kinda discussed and thrown batted back and forth a few times over the years, but I'm curious if there's been thought about having, like, certain things built in with Core. So as an example, like an Electrum address index kind of thing.
对吧?因为现在很多用户实际上是在运行比特币核心加上某种形式的Electrum服务器,可能是Electris、Fulcrum或其他Electrum服务器变种。然后他们可能还会运行Sparrow或Nunchuck这类协调软件。有没有讨论过在比特币核心内部实现地址索引,这样人们就只需要运行核心客户端加上Sparrow之类的软件?
Right? Because what a lot of users are doing today is they are basically running, you know, Bitcoin Core plus, you know, some form of Electrum server, whether that's Electris or, I forgot the some of the other Fulcrum and some of these other or Electrum, you know, these different Electrum servers. And then they might be running, let's say, Sparrow or Nunchuck or Electrum as their, you know, coordinator software on top of that. Is has there been any talk about doing an address index inside of Bitcoin Core so people could just run Bitcoin Core and, you know, Sparrow or whatever?
这个问题问得好,我个人非常支持最终实现某种风险索引或者更好的协议来从比特币核心获取地址特定信息。我们目前正在推动的一些核心代码修改正是朝着这个方向发展的,这些改动会让索引代码更健壮、更易于编程对接。另外,采用IPC和CarbonProto的整体方案也会对此很有帮助。
Yeah. I love this question because I'm in favor of us eventually having some kind of risk indexing or maybe even a better protocol to retrieve address specific information from Bitcoin Core. I think we are kind of moving into that direction with some of the changes we're currently trying to get through review in Bitcoin Core. Stuff that just makes our indexing codes more robust, easier to code against. And, yeah, again, the whole approach with using IPC and CarbonProto could really help there too.
因为一旦我们建立了可以直接对接其他程序的接口来处理索引功能,不仅编码会更简单,最终也更容易集成到我们的项目中。
Because once we have an interface that you can just connect any other program to it directly, To do this indexing stuff, it might also be easier to code up and then integrate into our project eventually.
明白了。听起来...确实如此。当然比特币核心不是铁板一块,会有支持者也会有反对者,但听起来你是支持这个想法的。因为我听到的另一种批评是说核心没有关注HODLers的需求,而很多持币者确实希望能方便地使用硬件钱包这类功能。
I see. So, yeah, it sounds like, maybe yeah. I guess, of course, Bitcoin Core is not a monolith. There'll be some people in favor and some against, but it sounds like you're in favor of that idea, because I think that's maybe another criticism I've heard is some people think, oh, Bitcoin Core is sort of not focusing on what the HODLers want. And some of the HODLers, they really want to be able to just kind of easily use their hardware wallet, this kind of thing.
另外当然也有关于钱包GUI的讨论,据我所知很少有人直接使用比特币核心自带的钱包界面——至少GUI部分是这样。多数人都是通过其他连接核心或Electrum服务器的钱包来操作。你对钱包和GUI有什么看法吗?
And, of course, there's also been discussion about, like, the wallet GUI and things like that because as I understand, very few people directly use Bitcoin Core's wallet itself or at least the GUI, to be clear. Many of them are just using some other wallet that's connecting to Bitcoin Core or to an Electrum server. So do you have any comments on the wallet and the GUI?
确实有团队正在开发新的比特币核心GUI,已经有原型设计和初期版本在测试。如果有人想了解,通过搜索引擎应该能找到相关进展。
So there is a group of people working on a new Bitcoin Core GUI. There's some mock ups and some first versions running off that. If people wanna take a look at that, they'll probably find it if they Google
我想我见过一些类似的在流传。继续说吧。
I think I've seen some of those floating around. Go on.
是的。所以,我觉得那个看起来不错。就特定功能而言,我认为钱包在过去几年确实有些发展不足。特别是在用户真正需要的功能上,比如更好的硬件钱包支持,或者更新的Taproot功能。虽然花了些时间,但我现在感觉代码库的那部分正迎来新的发展势头。
Yep. So, yeah, I think that looks nice. For the one that features specifically, I think, yeah, the wallet has been a bit underdeveloped the past few years. And especially when it comes to features that people really want, like better hardware wallet support, maybe newer Taproot features. It has taken a bit of time, but I'm also feeling some new momentum in that corner of the code at the moment.
我们终于移除了旧的WANF。MUSIC二支持上周已经合并了,我认为这是实现更高效多签设置的重要一步。显然这个项目不可能面面俱到,但我们也需要提供这类工具来保持实用性和相关性。
So we finally got the legacy WANF removed. MUSIC two support was merged, I think, last week, which is a pretty big step in allowing more efficient multisig setup. So, yeah, I think the project obviously can't do everything super well, but we should also have these kind of utilities for people to use in order to remain relevant and useful.
好的。那么最后还有什么想说的吗?在我们结束前还有什么要补充的?
Okay. So any closing thoughts? Any last things you wanna get out there before we close-up?
互联网现金,无需更新订单。
Cash on the Internet, no order update.
好的。这就像我见过有些人说的那句话。那好吧。互联网现金,无需更新订单。
Okay. Yeah. This is like a saying I've seen some people say. So alright. Cash on the Internet, no order update.
好的。感谢你的参与,Charlatan。在我们结束前,大家可以在哪里关注你或找到你的作品呢?
Yeah. Thank you for joining me, Charlatan. And I guess, just before we let you go, where can people find you or follow your work online?
是的。如果有人想在GitHub上关注我,他们可以这样做。账号就是The Charlotte。
Yeah. If people wanna follow me on GitHub, they can do that. It's just The Charlotte.
太好了。好的。非常感谢。
Great. Okay. Well, thank you.
关于 Bayt 播客
Bayt 提供中文+原文双语音频和字幕,帮助你打破语言障碍,轻松听懂全球优质播客。