本集简介
双语字幕
仅展示文本字幕,不包含中文音频;想边听边看,请使用 Bayt 播客 App。
在深入理解代码和加强代码方面,我们还有很多工作要做。有时需要进行侵入性修改才能提高可扩展性。这并不是说永远不要改动代码,而是要谨慎行事,避免盲目追求速度而导致问题。
There's just so much to do just in terms of understanding the code better and fortifying it. Sometimes you need to invasively change something in order to make it more scalable. So it's not don't ever change the code, you know, be be conservative and not try to move fast and break things.
你好。最近怎么样?周三快乐。欢迎收听《比特币做了什么》播客,本期由铁巨人(原名为Iris Energy)赞助播出。铁巨人正利用其新一代数据中心,以100%可再生能源推动比特币挖矿和人工智能的未来发展。
Hello there. How are doing? Happy Wednesday. Welcome to the What Bitcoin Did podcast, which is brought to you by the massive legends of iron, formerly known as Iris Energy. Iron is using their next generation data centers to power the future of bitcoin mining and AI using 100% renewable energy.
铁巨人仍是同一家企业,目标不变,只是换了名称。我是主持人Peter McCormack。今天我们有幸邀请到出色的Gloria Zhao参与节目。去年年底时,我很幸运能在非洲与Gloria共度时光,之后我们一直努力安排她上节目。
Iron remains the same business with the same goals now with just a different name. I'm your host, Peter McCormack. And today, we have the amazing Gloria Zhao on the show. Now at the end of last year, I was lucky enough to spend some time with Gloria out in Africa. And since then, we've been trying to get on the show.
Gloria是比特币核心维护者和开发者。本次访谈我们将探讨持续升级协议的重要性(而非僵化)、告别谷歌迎接比特币序数和内存池垃圾信息、以及比特币核心维护者的力量。与Laura的对话非常愉快,她令人惊叹。很高兴能深入探讨这些话题。
Now Gloria is a Bitcoin core maintainer and developer. In this interview, we get into the importance of continually upgrading the protocol as opposed to ossification, ditching Google to welcome Bitcoin ordinals and mempool spam, and the power of Bitcoin core maintainers. I really enjoyed sitting down with Laura. She's amazing. Enjoyed getting into this.
希望你们一如既往喜欢本期内容。如有问题或反馈,请联系我:hello@whatbitcoindid.com。一、二、三。
Hope you liked it as well as ever. If you have any questions or feedback, hit me up. It's hello at what bitcoin did dot com. One, two, three.
什么?哦,我该说3、4、5、6吗?
What? Oh, do I say 3 456?
没错。现在节目正式开始。这是倒计时。是的。
Yeah. That's the start of the show now. That's counting. Yeah.
我懂数字。烦死你。我知道很多数字。
I know numbers. Annoy you. I know a lot of numbers.
你应该的。你是你是比特币界最重要的极客之一。
You should do. You're you're one of the most important nerds in Bitcoin.
我的观点是我其实没那么重要。真的吗?我总是否认那种认为我拥有某种权力的说法。好像我能影响比特币似的。哇哦。
I my argument is that I'm not actually that important. Really? The thing that I always push back on is the idea that I have some kind of power. Like I have some ability to influence Bitcoin. Wow.
我们已经开始了,对吧?
We're we've gotten started already, haven't we?
是啊。我们直接进入深水区了。好吧。你个人没有那种权力,因为有制衡机制。
Yeah. We went right off the deep end. Okay. You don't have the individual power because of the checks and balances.
因为我能做的每件事都是完全公开透明的,所有人都看得见。而且除了编写代码外,我什么都做不了——那些代码可能被运行,也可能不被运行,还要经过一段时间我们才会发布新版本。总之我们会深入讨论这个的。
Well, because there's nothing that I can't do there's nothing I can do that isn't fully public that everybody can see. And there's nothing I can do, like, other than create code that may or may not be run by somebody after some amount of time after which we make a release. Anyway, we'll we'll get into this.
那那我们就来铺垫一下。给听众们解释解释你是做什么的
So so let's let's set it up. Explain explain to people listening what you do
好的。
Okay.
或者你是什么身份。
Or what you are.
好的。我直接开始自我介绍吗?
Okay. Should I just intro?
我们开始了吗?五分钟前就已经开始了。
Have we started? We started we started five minutes ago.
好的。大家好,我是格洛丽亚,从事比特币核心开发工作已有四年多。
Okay. Okay. So hi, I'm Gloria. I work on Bitcoin Core. I've been doing that for a bit more than four years.
我担任所谓的维护者已近两年,这仅意味着我有权限将代码推送到托管比特币核心的代码库。
And I've been what's called a maintainer for almost two now. And that just it means nothing other than I'm able to push code to the the repository in which Bitcoin Core is is hosted.
实时代码库。
The live repository.
是的。我们有一个GitHub仓库,里面存放着Bitcoin Core的所有源代码,它的开发方式与许多其他开源项目类似。通常开源项目只有少数人拥有写入权限,可以推送代码。除此之外,我们还设置了一个脚本,用于检查所有推送的提交和差异是否附有PGP签名。
Yes. Yes. We have a GitHub where we have a repository of all the source code in Bitcoin Core, and it's developed much like many other open source projects. And typically open source projects have a small number of people who are able to, have write access so they can push code to it. And we have, you know, in addition to kind of the GitHub permissions, we have a script that checks that there is a PGP signature on all of the commits that are pushed, all the diff that is pushed.
我记得当时跟你说这些时,你的反应是‘哦,我该怎么查证?’其实有个公开文件叫‘trusted keys’,里面列出了五位成员的PGP密钥,只有这些人的签名才能被接受用于推送到仓库的提交。
And so this is all I remember when I said this to you, you're like, oh, how do I find out? There is a public file called trusted keys, and it lists PGP keys of the five people who whose signatures are accepted for these commits that are pushed to the to repository.
所以你是这五人之一?
So you're one of the five?
是的。不过我还想说,我们有很多依赖项。人们通常只关注Bitcoin Core仓库,却很少提及libsecp的维护者——那些能向密码学库推送代码的人,而密码学库在比特币验证过程中生成和验证签名是非常关键的部分。
Yes. However, another thing that I say is there we have all these dependencies. Right? So people, they often focus on like the Bitcoin Core repository, but they don't talk about like the libsecp maintainers. So the people who can push code to the cryptography library, which is a very, very important part of how signatures are created and verified within Bitcoin validation.
以上就是全部了,但我觉得这些讨论没有意义,因为我的观点是:虽然推送代码确实带有某种特权,但我们的所有操作都是完全公开可验证的。从我们推送代码到节点运营商最终在网络上运行,再到可能被广泛采用,中间有太多环节了。这就是我的论点。
That's all but I think all this is moot because my argument is, yes, I I I recognize that there is like an amount of, I guess, privileges with being able to push code, of course. But there is nothing we can do that isn't fully publicly verifiable. And like there are so many steps between us pushing code and it being eventually run on the network by a node operator and maybe like becoming widely used thing on the network. So, like, that's my argument.
你看过新版《星球大战》里绝地议会那段吗?
Have you you know the new Star Wars where the Council of the Jedis? Have you ever seen that?
没看过,抱歉。
No. I'm sorry.
我...那个...我待会儿会给你看一张照片。我把你和维护者们想象成绝地武士团的样子。嗯。就坐在那里,守护着我们的比特币网络。
I that's that's what I I'm gonna show you a photo afterwards. I think of you and the maintainers as like the Council of Jedis Mhmm. Sat there, roarding over our Bitcoin network.
所以...好吧。我觉得我们对代码理解得很透彻。是的。我们可能花了很多时间思考安全问题,也许我们知道哪些漏洞被发现以及它们是如何被修复的。但...所有这些其实都是公开的。
So I okay. So I I think we understand the code very well. Yeah. And we are maybe we've spent a lot of time thinking about the security issues and maybe we know things that about what has what bugs have been found and how they've been patched. But but like, all this is public.
好的。但你能单独推送代码上线吗?还是需要你们五个人都同意才行?
Okay. Can but can you push something live on your own or or do all five of you have to agree?
我们不是以委员会的形式运作的。
So we it's we don't do it as like a committee style.
好的。
Okay.
是的,我可以在不征求其他人同意的情况下推送代码。不过...假设我推送了所有人都反对的内容,结果会怎样呢?它基本上会立即被回滚。而且...取决于情况有多严重,他们甚至可能撤销我的密钥。这些通常都会在软件正式发布供公众下载前很久就处理完毕。
So, yes, I can push without, like asking the other ones for permission. However, like we can play out the scenario in which I push something that everybody disagrees with. What would happen is it would be reverted pretty much immediately. And I I mean, depending on how crazy it was, like, they can also remove my key. And this would all happen usually a very long time before the software is actually released and put out in the public for people to download.
当然代码就在那里,如果有人想下载还是可以的。但过去确实发生过维护者做出非常疯狂举动的情况...很久以前加文就遇到过这种事,对吧?
Of course, it's there and if someone wants to download it, they can. But like what has happened in the past is we've had situations where a maintainer has done something very crazy and they they were it was Gavin a long time ago. Right?
是的,当然。
Yes. Of course.
没错。人们总是担心,比如,如果维护者单方面合并了一个共识变更之类的会怎样?但这并不意味着软分叉会立即在网络上线。对吧?从代码提交、发布、到网络中的个体下载,再到激活,中间有太多步骤了。
Yeah. And so like, people are always worried about like, oh, what happens if a maintainer unilaterally merges like a consensus change or something? That doesn't mean that the soft fork has gone live on the network immediately. Right? There are so many steps between code being pushed, code being released, code being downloaded by individuals in the network, then becoming active, you know.
对。所以回答你的问题,是的,我可以。但就像你说的,有制衡机制或诸多原因,这并不意味着我拥有任何单方面的权力。
And yeah. So to answer your question, yes, I can. But like there are, like you said, checks and balances or many reasons why that doesn't mean that I have any kind of unilateral power or anything.
所以,如果你偷偷摸摸地,而绝地委员会的其他成员都在睡觉,你推送了一些疯狂的东西上线
So so if you if you were being sneaky and the rest of the council of the Jedi's were all asleep and you push something crazy live
嗯。
Mhmm.
还有很多人会检查代码,验证它。通常,这只会演变成社交媒体上的闹剧:'格洛丽亚疯了,她干了这种疯狂事'。
There's plenty of other people out there who'll be checking the code and Yeah. Verifying it. And then, typically, this would just be this would become some kind of drama on social media. Gloria's gone crazy. She's done this crazy shit.
是的。然后人们就不会下载它,他们会说:'别下载这个'。
Yeah. And then people wouldn't download it. They're like, don't download it.
是的。而且这种情况过去已经发生过,对吧?所以,我不是在凭空想象什么幻想世界。你知道,我们有一个非常强大的开源社区来验证一切。
Yeah. And this has has has happened in the past. Right? So, like, I'm not just, like, theorizing, like, this fantasy world. Like, you know, we have this very robust open source kind of community that that verifies everything.
这就是我的观点。什么
So that's that's my point. What
你学过计算机科学吗?
did did you study computer science?
学过。是的,我在伯克利学的计算机科学,那段经历很棒,我非常喜欢。我认为那是个很好的基础。
I did. Yeah. I went to school for computer science in Berkeley, and it was it was great. I I loved it there. And I think it was a great foundation.
而且我就是在那儿接触到比特币的。所以我不确定
And that's where I found Bitcoin. So I don't know if
等等。你之前在一次...(口误)你告诉过我这件事。对,你跟我提过和你父母的一次对话。
Hold on. You told me about this when we were in a lie. Yeah. You told me about a conversation with your parents.
哦,对。我想想...我一直在做这个...这是什么时候的事?大概2020年左右吧,那时候资助项目还比较新,Brink都还没成立。
Oh, yeah. Yeah. I I think so I've been doing this what was this? This was in like 2020 or so, where I think kind of the grant programs were kind of new. Brink didn't exist yet.
我是Brink的第一位受资助者,Brink是一家非营利组织,它从比特币社区筹集捐款并资助比特币核心开发者。这个组织基本上是在那一年成立的。我想你采访过John对吧?关于这件事的。但基本上,当我刚开始时,开源领域的情况还比较常规。
So I was the first grantee at Brink, which is a nonprofit that that collects donations from the Bitcoin community and gives them to Bitcoin core developers. That, you know, was founded basically that year. And I think you interviewed John Yeah. For that. But basically, when I first got started, it was it was kind of more status quo what tends to happen with open source.
互联网和我们日常使用的许多东西都建立在开源软件之上,这些软件是有人免费编写后以某种开源许可证发布在网上的。他们通常会说,随便用吧。很多时候,庞大的系统建立在开源软件上,而代码作者并未获得报酬,他们可能仍在维护,也可能没有。很多时候他们确实在维护,为了支持用户需求的功能、推送安全补丁、更新依赖项以适应操作系统或编译器的变化,作为下游项目必须跟上这些更新。
So a lot of the Internet and a lot of the things that we use on a day to day basis are built on open source software, which like someone wrote for free and then put it on the internet under some open source license. They're like, yeah, you're free to use it, whatever. And, you know, often there's like huge things built on open source, software that the person who wrote like the person who wrote the code was not is not paid for. And they may or may not still be maintaining it. A lot of times they are still maintaining and they're doing all this work to kind of support the features that users have asked for to, you know, push in like security fixes, to like update for their dependencies, like, you know, with operating system changes or compiler changes or library, you know, updates, you also have to like keep up with those updates, as a downstream project.
但往往没人为此付费,我想这是因为我们的文化并不重视这一点。通常我们等待中间商介入,剥削生产者并从消费者那里榨取租金。抱歉这么说,但过去捐赠模式并不太可持续。然而对于比特币核心这样的开源协议,这几乎是唯一的方式。
And oftentimes that just like nobody pays for because, you know, I guess our culture is not really, about it's we usually, I guess this is like a social commentary thing. Like, we usually wait for an intermediary to step in and like exploit the producer and extract rent from the the consumer. And sorry to to say that. But, you know, typically, the donation model hasn't been very sustainable in the past. But that's kind of the only the only way to do it with like Bitcoin Core, like Bitcoin open source protocol stuff.
但你本可以去谷歌,拿50万美元年薪,还有股票期权,开崭新的特斯拉。
But you could have gone to Google, got a half a million dollar salary, share options, had a brand new Tesla.
是的。差不多在我接触比特币的同时,我正在申请实习。我确实去了谷歌实习,本来还打算去Facebook,但我反悔了。当时觉得挺酷的,不过...
Yeah. So around the same time I found Bitcoin, I I, you know, I was applying to internships. So, yeah, I ended up I ended up doing an internship with Google and I was gonna do one with with Facebook, but I reneged on that. And I thought it was so cool. But I yeah.
必须说明,我在谷歌度过了非常棒的时光,学到了很多——云服务、微服务架构、Kubernetes、Terraform等等。但比特币完美地平衡了两点:它试图解决我关心的世界性问题,同时技术层面也极其有趣。
I had a fantastic time at Google to be to be clear. I've learned a lot. I learned about like cloud, microservices architecture, Kubernetes, Terraform, whatever. And it was a great time. But like Bitcoin was like this perfect, like, balance between like something that was trying to solve a problem in the world that I cared about, and also very, very technologically interesting.
我记得刚开始研究比特币核心的头几周,我们在讨论线程安全问题,因为它是多线程的。我当时想,这我在课堂上学过。大概那时Peter Willett还写了个叫mini sketch的数学库,我的抽象代数课本知识居然派上了用场。
So I think like within the first few weeks that I was looking at like Bitcoin Core, I don't know. We were it was it was like, oh, there's like this, you know, we we're thinking about thread safety because it's a multi threaded, thing. And I was like, oh, I learned about that in class. Or, I think around that time, Peter, Peter Willett had written this like mini sketch library, which is like this fancy math. And I was like, oh, my abstract algebra class like textbook like comes in handy.
这就像是我自从上完那门课后第一次打开它。你知道,里面有非常酷的东西,比如密码学、分布式系统之类的。彼得·威尔就是个很好的例子,还有我共事的许多人,他们写代码的时间和我活的时间一样长,或者你知道,那些顶尖的计算机科学家和工程师,至少是我见过的在这个领域最高水平的人,他们正在研究这个很酷的开源项目——那种抗审查的货币体系,它正在解决世界上的实际问题。我个人认为这对软件工程师来说是个超级被低估的项目,应该有更多人觉得它比谷歌之类的工作更有吸引力。这是我个人的决定。
It's like the first time I opened it since like I took the class. And, you know, there's really cool, like, cryptography, distributed systems, like all these things. And and like, Peter Will is a great example and a lot of other people that I work with who have been coding for as long as I've been alive or, you know, these amazing, like, computer scientists and engineers kind of at the at least the highest level of this craft that I've seen working on this, like, cool open source, like, censorship resistant money thing that is solving a real problem for the world. I I personally think that it is a super underrated project for software engineers that that more like, more people should consider it something more attractive to work on than, like, Google. I mean, that was a personal decision of mine.
我父母...抱歉。我刚要讲我父母当时的故事,他们问‘你为什么要做这个?你说你要做这个是什么意思?你还在从人权基金会拿资助。’
And my parent yeah. Sorry. Was telling you the story where my parents were like, why why would you do this? What do you mean you're gonna work on this? You're getting a grant from Human Rights Foundation.
‘这和那个有什么关系?’你懂吗?
Like what does that have to do with that, you know?
‘教育要花这么多钱?’
Like education cost this much?
是的。但你知道,换个角度看,我特别幸运能接受这么好的计算机科学教育。我的父母支持这个决定,现在我能开发这么酷的软件,真的觉得自己非常幸运。
Yeah. Yeah. But, you know, like I'm, you know, that's another angle to it is like, I'm so I'm so privileged that I got this amazing computer science education. I have parents that were supportive of this decision, and now I get to work on this really cool piece of software, and I feel really really lucky to be able to do that.
他们现在理解了吗?
Do they understand it now?
我用过那种翻页板。有时回家看到车库里的翻页板上写着‘比特币入门’,我就觉得‘嗯,他们现在懂一点了’。我妈现在甚至会交易退休账户里的比特币ETF。挺酷的。
I've I've done like the flip chart. Sometimes when I go home and I see like the flip charts that I was in the garage where it's like intro to Bitcoin, I'm like, yeah. They they get it a bit more now. My mom, who like trades their their retirement account is like buying Bitcoin ETF. Cool.
我是说,一开始你会觉得,妈妈,你并没有真正持有资产。你可能会被坑。
I mean, to start, you're like, but mom, you're not holding the actual asset. You could be rugged.
是的。我是说,我对这事有些看法,我觉得...对吧?从意识形态上讲,我们为什么要参与这个,对吧?意识形态上,自我托管就是关键所在。对吧?
Yeah. I mean, so I have some opinions about this where I think, yeah. I think like ideologically why why we're getting into this, aren't we? Ideologically, yeah, self custody is like, that's the point. Right?
不过我认为普通人在自我托管方面可能不太擅长
I think the average person though is probably less good at self custody
如果你是指我父亲。因为我,他对比特币产生了很大兴趣,但他每天就只会查价格,然后说'涨了'、'跌了'。要是让他尝试自我托管比特币,他肯定会搞丢的。
than If you meant my dad. My dad's got so much interest in Bitcoin because of me, but all he does is check the price every day and he's like, the p is up, p is down. Yeah. If he tried to buy in self custody Bitcoin, he'd lose that. Yeah.
没戏。
No chance.
是的。所以我真的非常犹豫是否要向人们推荐那些需要相当技术素养和近乎偏执的操作。懂吗?这不是说我在支持使用那些可能靠谱也可能不靠谱的交易所。但我会保持公正。
Yeah. So I'm really I'm really hesitant to, like, make recommendations to people that require quite a bit of technological literacy and like paranoia. You know? So this is not to say that I'm endorsing like, you know, using these exchanges that are that may or may not be reliable. But like, I'll be fair.
我...我理解了吗?是的。我不想建议人们去做有风险的事,尤其是我妈妈。
I I like You get it? Yeah. I'm not like I'm not trying to advise people to do things that are risky, especially my mom.
比特币在计算机工程领域有多独特?
How unique is is Bitcoin in terms of computer engineering?
哦对。我前几天刚向一群软件工程师解释过这个,我可能会换个说法。但确实,比特币有个非常特别的安全模型。它的设计初衷就是在存在恶意攻击者的情况下仍能正常运行。
Oh, yeah. I mean, so I was just explaining this the other day to a lot of software engineers, I guess I would word it differently. But there's yeah. There's this crazy security model. So Bitcoin is kind of designed to work in the presence of adversaries.
对吧?
Right?
是的。
Yeah.
就像推特有自己的术语来描述这种状态,这是个难题。比特币网络应该能够持续产生区块、处理支付等,即使遭受攻击。我们编写的软件追求去中心化,对吧?这是意识形态层面的——网络的价值就在于它是由众多不同实体和组织共同运行的分布式网络。
Like Twitter has their own lingo to describe this nation, you know, it's a hard, you know. And and it's supposed to be able to, like, continue to produce blocks, continue to process payments, etcetera, even if people are attacking it. And the software that we write is supposed to be like, we're trying to go for decentralization. Right? That's like a ideological like, that's how the network brings the value that that it has is that it's a decentralized network that is run by lots of different entities and organizations.
对吧?但从实际编码角度来看,这意味着我写的代码要尽可能让所有人都能使用。我们支持多种平台——Windows、Mac、Linux等等。在计算复杂度方面,我们不想只编写能在AWS服务器或高性能设备上运行的代码。
Right? But what that looks like in practice from a code writing standpoint means that, like, I write code that it is hopefully usable by anybody. Right? So like we support like so many platforms, Windows, Mac, Linux, whatever. We, in terms of computational complexity, like we don't want to only write code that could be run on like AWS servers or like huge beefy thing.
它应该能作为后台任务在你的笔记本上运行。很多人就是这样运行全节点的,甚至应该在树莓派上也能运行。我认为这是个很好的基准——你可以在小小的树莓派上运行全节点:转发交易、估算手续费、为你处理所有这些事务,很多比特币用户都这么做。但这两者(性能和普适性)确实很难平衡。
Like it should be runnable as like a background task on your laptop. A lot of people run their full nodes that way. It should work on a Raspberry Pi. I think that's a very good benchmark where you can run a full node that relays transactions, can do fee estimation, can, you know, do all these like things for you on this tiny little Raspberry Pi box, which a lot of people who are Bitcoin users do. But those two things are really difficult to balance.
所以我们处于一个非常狭窄的操作空间里,理论上任何人都能运行这个系统。但当你在笔记本电脑或其他设备上启动比特币D时,它所做的就是连接到网络上的随机节点。按照设计,我们并不知道这些节点的身份。对吧?我们希望它是一个匿名或伪匿名的网络。
And so like we're in this very narrow space of operation where, yeah, anyone should be able to run this. But then when you turn on Bitcoin D on your laptop or whatever, what it's doing is it's connecting to randos on the network. We don't know what their identity is by design. Right? We want we want it to be an anonymous or pseudonymous network.
它会尝试下载数据,寻找主链,下载区块或发现新交易,以及寻找要连接的节点地址等等。这意味着我们必须防范随机攻击者连接到节点并发送垃圾数据,比如可能导致你的节点崩溃、停滞或耗尽内存。这些都属于我们认定的最高严重级别的攻击。
And it like tries to download data. It tries to find the main chain. It tries to download blocks or like find out about new transactions or addresses of nodes to connect to, etcetera. And that's that's what that means is we have to plan for like a random attacker connecting to nodes and sending you like garbage data that like, for example, can crash your node or cause your node to stall or cause your node to run out of memory. And these are all attacks that we would consider like the high one of the highest severity.
我提到这个是因为人们总是问我:还有什么需要做的?或者:你在忙什么?代码不是已经完成了吗?
And I bring this up because basically, people always ask me like, what is there still to do? Or like, what do you work on? Like, isn't the code finished?
直接伪造它就行。
Just falsify it.
是的。我试图传达这样的信息:有很多事情可能会出错。人们会说51%攻击在经济上不可行,从公钥推导私钥是不可能的。
Yeah. Yeah. And I tried to give this message of like, there's a lot of like, you know, things that can go wrong. Right? Like people are like, but 51% attacks are not economically viable and it's impossible to get a private key from a public key.
就像,格洛丽亚,你没看安德烈亚斯·安东波罗斯那个解释比特币安全性的视频吗?我说:是的我同意。但我讨论的是,在我们设想的比特币未来里——希望它能被数百万人使用——存在无数可能破坏这种愿景的因素,包括我刚才提到的网络攻击。
Like, Gloria, you didn't watch this Andrea Santonopoulos video where he explained why Bitcoin is secure. I was like, yes, I agree. I agree. Like, I'm talking about like, there are a lot of there's like a million ways that like we all envision like this future for Bitcoin where we want it to be used by like millions of people and all these things. There are a lot of things that can undermine that, including for example, the networking attacks that I was talking about.
如果有人能崩溃节点,比如矿工能让其他矿工崩溃从而在后续几个区块获得先发优势。或者考虑区块审查攻击:你生产了一个区块,如果有人能阻止其他所有人听到或下载这个区块,这就是非常严重的问题。还有日蚀攻击——整个点对点结构的核心就是每个人都能自由连接,理想情况下能找到能告知主链信息的优质节点。如果这个机制被破坏,攻击者能让你连接的所有节点都变成他们控制的,导致你听不到主链或竞争矿工的区块信息。这些攻击都不需要51%算力就能实施。
So if somebody is able to crash nodes or like for a miner, for example, is able to crash the other miners and they get head start on like the next few blocks. Or let's say we would care a lot about block censorship attacks. So like you produce a block, if somebody can prevent everybody else from hearing about that block or downloading up that block from you, that is a that is a really serious problem. Or if you've heard of Eclipse attacks where, you know, again, like the whole point is we have this peer to peer structure where everyone can talk to whoever and like hopefully find a good set of peers that is able to tell them about the main chain. If that is compromised and like somebody's able to eclipse you as in like be everyone that you're connected to and you don't hear about the main chain or you don't hear about the competing miners like blocks, these are all really like I mean, they're not the same thing as well, I mean, if a miner is able to do this, that's like, you don't need 51% hash rate in order to attack these people.
对吧?就像你直接屏蔽他们,让他们无法得知其他哈希率的信息。
Right? Like, you just block them from hearing about all the other hash rates.
但这些算是攻击吗?
But are these attacks?
这些都是理论上的攻击,只是澄清一下。
These are theoretical attacks, just just to be clear.
那么如果这是理论上的攻击,你们会尝试实施这种攻击以便知道如何防御吗?
So and so if if it's a theoretical attack, do you try and attempt to do the attack so you know how to defend against it?
实际上,我们通常做的是分析代码并编写测试。我们试图隔离区块下载逻辑,尽可能多地测试各种可能发生的场景。我们有很多监控节点,如果观察到有人试图发送变异区块,或者有人通过先发制人发送垃圾信息来阻碍区块下载,当我们要求他们提供正确信息时却故意拖延。既有理论上的攻击,也会观察到有人在做奇怪的事情。
Well, in practice, what we're often doing is we're, like, analyzing the code and we're writing tests. We're like, we're trying to isolate the block download logic to, just throw random stuff, like, just, like, test as much as possible, like all the scenarios that we can possibly happen. And, you know, we have lots of monitoring nodes where we're seeing like, you know, if we observe, oh, wow, there is actually someone trying to send us mutated blocks or there is someone trying to stall block download by like, being the first guy and then like sending us garbage. And then like when we ask them for, you know, the correct information, they just like, you know, stall. Like, there are like theoretical attacks and then there's also like, we'll observe people doing weird stuff.
这有时会促使我们去调整那些参数,或者意识到可能需要重新设计某些部分以做出更好的权衡。抱歉我有点跑题了。
And that will sometimes lead us to go and tweak those parameters or be like, oh, yeah, maybe we should, you know, we we should redesign this a little bit so that, we're making a better trade off. So for like sorry if I'm rambling by the way.
没关系。
You're good.
所以关于交易中继,我思考了很多。几年前有个案例是交易停滞问题,比如说有个交易正在广播,大多数人都知道这事。我不想多次下载那个交易,只需要下载一次就够了。
So with, I I think a lot about transaction relay. There was one a couple years ago that was, transaction stalling where, let's say, you know, there's a transaction being broadcast. Most people know about it. I don't wanna download that transaction multiple times. I only need to download it once.
对吧?所以我们有这类节省带宽的措施。重申一下,节省带宽很重要,因为不是每个人都有超高速WiFi,对吧?我们希望运行节点是容易实现的。所以通过只下载一次来节省带宽。
Right? So we have these kind of bandwidth saving things. Again, bandwidth saving is important because not everybody has extremely high WiFi speeds, right? We want it to be accessible to run a node. So we're trying to save bandwidth by only downloading once.
因此我们每次只会向一个节点请求发送该交易。但如果第一个节点——我是说第一个对等节点——没有发给我们,我们就应该重试。对吧?而且我们不应该只试两次,因为要避免出现审查漏洞——比如某个节点心想'好啊,我就当你前三次请求的交易来源',然后突然你就收不到这个交易了。
So we're only gonna ask one peer at a time to send us that transaction. However, if we try the first person, the first peer, I mean, and they don't send it to us, we should try again. Right? Or we should like and we shouldn't only try two times, for example, because we don't want there to be a censorship vector where, you know, a peer is like, okay, I'll be the three the first three people that you asked for this transaction from. And then all of a sudden you're not going to hear about this transaction.
那就会形成真正的交易审查问题。所以后来基本上是对交易请求机制进行了重新考量,通过模块化改造和修复这些问题使其更健壮、更易于理解,还添加了大量测试用例来验证——比如'在所有这类场景下我们最终都能下载到那个交易'。我们最近大量使用模糊测试,不知道你听说过没?要我详细说说吗?
That would be a transaction really censorship problem. And so, yeah, there was basically, there was kind of a TX request kind of reconsideration kind of there was like modularization plus fixing up some of those things to make it more robust and make it really easy to reason about, and then added a bunch of tests to kind of check our understanding of like, oh, all these in all these scenarios, yes, we would end up downloading that transaction. And then we have what are we've been using fuzzing a lot. I don't know if you've heard of fuzzing. Should I ramble more?
详细说说,给我讲讲模糊测试。
Ramble more. Tell me about fuzzing.
好的。通常软件工程师写测试的方式是——比如我刚描述的场景,你会搭建一个模拟节点,再连几个额外模拟节点,然后模拟攻击并断言行为是否符合预期。这种测试需要你精确设计测试用例。
So, okay. So typically the way that a software engineer might write tests is, for example, you'll write the test scenario that you that I just described. Right? Where you're like, okay, let's spin up a note, like a fake node, and then we'll spin up a few extra fake nodes to connect to it, and then we'll simulate the attack and we'll assert that, like, the correct behavior is happening. And so you have to provide exactly what the test is.
而模糊测试能自动生成测试用例。你只需要写个框架,定义一些不变量——比如每隔一段时间检查所有不变量是否成立。然后模糊测试引擎会智能地开始发送随机数据,再根据代码覆盖率等情况进行调整。
Fuzzing, automatically generates tests. So what you'll do is you'll write kind of more of a skeleton, and like, you know, it'll check invariants like, you know, after each state like after each period of time, you check that all the invariants are still true, whatever those may be. And then a fuzzing engine will kind of intelligently just like it'll it'll start by like sending random stuff. Right? And then it'll figure out based on, for example, coverage of the code.
它会查看你执行了哪些代码行。如果发现某些输入能深入到模块更内部的代码,我们就会创建更多类似的输入。这基本上类似于生成随机输入,但它具有一定智能性,随着时间的推移,它能发现你可能手动编写测试时想不到的路径。
Like it'll look at what lines of code you've hit. And if they're like, oh, these inputs like hit like a further a line of code deeper into the module. Okay. Like we're gonna create more inputs that look like that. And so it basically it's similar to like creating random inputs, but it is somewhat intelligent and it'll like over time just like find the paths that you maybe wouldn't have thought of if you were just manually writing the test.
我们现在经常使用这种方法——对所有东西进行模糊测试。过去几年里,源代码的模糊测试覆盖率大幅提升,并发现了相当严重的缺陷。
So we use this all the time. Now like we're like fuzz everything. Fuzz everything. And and like the amount of fuzz coverage over the source over the source code has increased like dramatically over the past few years. And it's found like pretty severe bugs.
在设计某些功能时它也很有帮助,比如测试计算复杂度时。我们会说'用模糊测试看看平均运行时间',或者'看看模糊器能否生成导致长时间运行的输入'。这样我们就不只是理论分析算法的最坏情况时间复杂度,而是能实际观察'我们是否遗漏了什么?真实表现如何?能否添加逻辑来捕获这些极端情况行为?'
It's helped design certain certain things as well when when you're like trying to test the computational complexity. And you're like, okay, like let's like fuzz it and see kind of what the average runtime of it is. Or we'll fuzz it and we'll see if the fuzzer can come up with an input that causes it to spin like for a really, really long time. And we're like, okay, like instead of just theoretically analyzing what's the worst case runtime of this algorithm, like maybe have we missed something or like what does that actually look like? Or like can we add, you know, an extra piece of logic in there that like catches these really like worst case behaviors?
它既能辅助设计,又能帮助测试,模糊测试真是太棒了。
Or, you know, like, it it helps design things. It helps test things. It's fuzzing's great.
我认为大多数人(尤其像我这样的)想到比特币开发时,往往只考虑扩容问题。
I I think most people, especially like me, when we think about Bitcoin development, we tend to think of just scaling.
嗯。
Mhmm.
大家总在讨论'如何扩容?有什么新功能?',但很少考虑有多少工作是在防范恶意攻击或优化效率上。嗯...这类工作是如何在核心开发者之间分配的呢?
How are gonna scale? What's the new what what are the new features come in? I don't think many of us tend to think about how much work is done, planning for adversarial attacks or efficiency. Mhmm. And and how how is that kind of work split up amongst core developers?
是否有专人负责攻击方向,专人负责效率优化?你们是不是在每个领域都有相应的专家?
Is it someone specifically is working on attacks, someone's on efficiencies? Do do you tend to have, like, specialists in each area?
其实并没有专门的协调或管理机制,但确实有各自专长的人。比如我要介绍下我在Brink的同事Nicholas,他是模糊测试专家,后来也自然成为了我们的安全工程师——毕竟他总能发现各种漏洞。他非常出色。另一位同事Michael Ford(你可能认识他叫Fanquake)专攻构建系统,这也让他自然承担了很多发布流程的工作。
So there's no kind of coordination or But management, of there are people who specialize. So I'm just going to show my colleague, Nicholas, who works with me at Brink. He he's the fuzzing guy, and he's kind of become our security engineer as well because naturally, he becomes the guy that finds all the bugs. And and he he's great. I my other colleague, Michael Ford, who I think you've met or Fanquake, he specialized in build system stuff, and that also naturally leads him to do a lot of the release process stuff.
我们也可以聊聊发布流程,我觉得这部分特别有意思。大家会叫我内存池专家——当然不止我一个人负责这块,但我确实在这个领域投入了大量时间。通常如果有人提交了内存池相关的PR让我评审,我都会处理。
And we can talk about the releases release process as well because I find it very interesting. And then people will call me like the Mempool person. I'm not the only person that works in Mempool, definitely. But like, you know, I spent a lot of time in this area. And typically, if somebody, you know, opens a Mempool PR and you ask me to review it, I will.
对吧?Ava Chow主攻钱包开发。不过我觉得大家其实都会涉猎多个领域,只专注一件事反而会很无聊。但确实会自然形成'这个人特别擅长这个'的情况。
Right? Ava Chow, she works on wallet. But I mean, everyone does a bit of everything, I think. And it would be very boring to spend all of your time doing one thing. But I think there are you know, we've we've naturally been like, okay, this person is really good at this.
而且他们拥有最专业的知识。我认为我们的工作职责之一就是要了解整个系统如何运作——这非常重要,因为所有东西都如此复杂且高度关注安全性。
And, you know, has the most expertise. And I think part of our job is to just know how stuff works. I think it's really important because everything is so complex and it's so, like, security oriented.
但最神奇的是,在没有协调的情况下所有事情都能推进。你懂我意思吗?比特币就是这样运作的:总有人在持续升级、修复漏洞、开发新功能。而这种去中心化、无协调的运作方式居然能成功。
But it's so interesting that without coordination, everything just kinda gets done. You you know what I mean? Like but but but what I'm saying is Bitcoin works. There are people constantly upgrading, fixing things, patching things, working on new ideas. The fact that it happens because in a decentralized, uncoordinated way.
因为想想看,虽然我们做的是软件业务,但谷歌绝不可能允许这种模式——'随便选个想做的项目,准备好了就直接上传代码'。他们必须进行完全协调的管控。
Because if you think of, yes, I'm working on a software business, but I'm pretty sure Google wouldn't have it there. Oh, you just just pick what you wanna work on and, you know, when you're ready, just upload it and, you know, we'll check-in. They would be entirely coordinated.
是的。是的。我想说的是,很多参与比特币核心开发的人都非常无私,想做出贡献。我同意确实存在一种现象,就是大家想做啥就做啥,结果没人愿意做代码审查,没人愿意干那些枯燥的工作。
Yeah. Yeah. I I think I I I would just say that a lot of the people that work on Bitcoin Core are so, like, altruistic and want to be useful. And, like, I agree there is a little bit of like, oh, you do whatever you want and therefore like nobody wants to review back like nobody wants to do the boring stuff.
发布那些无聊的东西。比如
Post the boring stuff. Like
发布流程。我之前提到过反向移植,不如就详细说说。作为维护工作的一部分,我们发布一个版本后,会持续维护两年左右。大概每半年——抱歉——基本上每半年我们会发布一个新的主要软件版本。
release process. Or so I guess one I I said backport, so I might as well get into it. So as part of maintenance, right, we'll release something and then that has like two years before we stop maintaining it. So every sorry. Every six months, more more or less, we'll release a new major version of the software.
新版本会包含新功能,比如v2传输协议、数据包中继之类的。然后半年后再发布新版。但之前发布的版本我们仍会推送安全更新,所以会发布次要版本更新。
And that'll have new features like v two transport or, you know, package relay or whatever. And then six months later, we'll release a new one. Right? But the one that we released before, we're still pushing security updates too. So we'll we'll push out minor minor releases.
基本上任何漏洞修复都会先合并到主分支或开发分支,然后我们将其反向移植到当前发布的版本分支,再发布次要版本。总之,这种在不同分支上审查相同内容的工作极其枯燥,大多数人都不愿意做。而且选择哪些漏洞修复需要反向移植的过程也很费功夫,因为你必须全面掌握所有正在合并的代码——面对数百个PR,你得判断'这个会影响旧版本',然后把它精选到旧分支。没人爱干这个。
And so basically anything that like usually a bug fix will get merged into master or development branch and then we'll back port that to the, the branch that contains a release that's currently out. And then we'll cut another minor release. Anyway, this this thing where you're just reviewing the same shit but on like a different branch is incredibly boring and most people don't do it. And the the process of picking that, the process of choosing which bug fixes to back port as well is like something that takes a lot of work because you basically have to have a bird's eye view of every single thing that's happening like in that's being merged to Matt. Like like these hundreds of PRs, you have to decide, oh, yeah.
最终效果就是:我们之前发布的版本依然能正常运行。
That's something that would affect like a previous release. And then, you know, all you do is like you you cherry pick it onto onto the the older branch and like nobody wants to do this. And and the end effect is like, yeah, that thing that we released before, it still works.
等等。所以每个分支代表一个版本?对。也就是说如果你不更新节点软件
Hold on. So is each branch a version? Yes. Yeah. And so if you're if you're not up updating your Node software
嗯。
Mhmm.
最终你会遇到一些不被支持的情况。
You eventually have things that aren't supported.
是的,对。
Yes. Yeah.
因为那个疯狂的罗马尼亚人是谁?他拒绝接受比特币最初版本之外的任何更新。
Because what is that crazy Romanian dude who refused to go anything beyond the original version one of Bitcoin?
所以我想我听说过类似的情况,有些人还在运行0.16之类的旧版本。这些人理论上认为,既然这是软分叉,我就不需要更新到新规则,应该还能继续使用——这对我们来说在意识形态上非常重要。但不幸的是,比特币核心的共识引擎与其他组件是紧密耦合的。你无法既要现代化的钱包界面等功能,又不想升级共识引擎。这种耦合性确实不好,为此我们多年来一直在推进一个项目,试图将所谓的'内核'或共识引擎模块化。这样你就能在不改变内核的情况下,获得新的GUI功能、钱包功能或其他非协议层面的前端更新。
So I I think I heard something like and I think there's people who run like 0.16 or whatever, and it's like people people who say like, well, let's say theoretically, right, like it's a soft fork, so I don't need to update to the new rules and I should still be able to use, you know, that's a very that's an ideologically a very important thing to us. And I would say, unfortunately, the consensus engine is intertwined with all the other pieces of of Bitcoin Core, like what it does. And so you aren't really able to be like, I want the modern version with, you know, the modern wallet UI and all those things, but I don't want to upgrade my consensus engine. I think it is not good that these are kind of intertwined and we have a project that we've been working on for years and years to kind of modularize the, what we call the kernel or the consensus engine. So that, like for example, you could get the new GUI feature, the new wallet features, or the new kind of more front facing, like not consensus, you know, not protocol changes without, you know, changing kernel.
所以我的观点是:不要运行无人维护的软件。这些软件包含已知漏洞,有些可能已公开披露。比如公开资料显示,有人可能发送特定数据导致你内存耗尽或节点崩溃。我强烈建议不要使用无人维护的软件。
So my point is don't run unmaintained software. It contains bugs that we do know about and have may or may not have been disclosed already. So, you know, there there are like it's public knowledge that there like, someone can send you x and then you might run out of memory or someone might crash your node or something. I very much do not recommend running unmaintained software.
那么整个比特币网络都依赖于核心客户端吗?作为比特币用户,你下载核心客户端后,其他软件或核心之外的东西会引用它吗?
And and so does does the entirety of Bitcoin work from in Core? Or if you're a Bitcoin user, you download Core, is it referenced in other software or things that exist outside of Core?
是的。所以我们,最近XE工具那个灾难性bug的问题就经常出现这种情况。没错,我们确实有一些依赖项,而且我们对这方面非常、非常、非常保守。其中一件事,就像迈克尔在构建系统中做的,他也非常注重减少依赖项数量。比如迈克尔长期以来发现的问题是,'哦,我们有个依赖项但没人维护它'。
Yeah. So we, this came up a lot with the recent like XE, utils, like, catastrophic bug. So yeah, we do have a few dependencies and we have we're like very, very, very conservative about it. And one of the things, again, like, like that Michael does as part of build system, he he's also very about like reducing the amount of dependencies. And so like what, for example, Michael has has found over over the time is that he's like, oh, we have a dependency and nobody's maintaining it.
或者基本上就是他们不再维护了。又或者它的代码审查标准达不到比特币核心代码应有的水平。不是所有代码都能被当作你自己写的代码来对待。
Or like, they they're just like yeah, they're not maintaining it basically. Or like it's not reviewed to the same standard that we would expect a Bitcoin core code to be reviewed to. And not all that code is like, you should treat it as the equivalent of your your code.
那个依赖项会放在哪里?
Where would that dependency sit?
会是GitHub上的另一个开源库。
It would it would be another open source library on GitHub.
嗯。那会不会形成中心化的力量?
Yeah. Would that be a centralizing force?
当我说它是开源的时候,中心化力量指的是如果他们删除了它
So, like, when I say it's an open like, centralizing force as in if they deleted it
之类的?是的。
or something? Yeah.
所以我们只是有一个它的副本,对吧?我们会使用自己的。而且我们必须
So we just have a copy of it. Right? And we would just use our own. And we have to
这么做。你想要所有东西都在核心中吗?那么有节点、外部依赖,还是那不可能?
do that. You want everything just in core? So there's node, external dependencies, or is that not possible?
抱歉。关于依赖方面,首先,我指的是构建比特币时引入的其他代码。不,当然
Sorry. I just I so dependencies wise, first of all, I was talking about, like, other code that gets pulled in when you build Bitcoin. No. Course
当它在运行时?
When when it's operating?
就像操作系统那样,你需要一个操作系统才能
It like, operating systems, like the like, you have you need an operating system in order
不,我是说,一旦你下载了核心,它要运行的话,是否需要实时引用其他系统,还是完全独立工作?
to No. I mean, like, once you've downloaded Core, does it for it to work, does it ever have to refer live to other systems, or does it work completely on its own?
哦,当你运行时会加载一个C库。但我想很难说...我们在这里讨论什么?你说的‘引用其他系统’是什么意思?
Oh, I you you load, like, a c library when when you run it. But I I guess it's hard to what are we talking about here? Like, is the what do you mean by refer to other systems?
比如,它是否依赖其他软件协议?还是所有功能都在核心模块内?
Like, are there other software protocols that it relies on? Or is everything within Core?
嗯,它需要...需要互联网。对,诸如此类的东西。
Well, it needs to it needs Internet. Yeah. Stuff like that.
我想说的是...
I'm on about like
对,抱歉。
yeah. Sorry.
可能我没表达清楚。我想问的是,你们是否需要维护另一个存放在服务器上的协议,比如AWS上的,需要引用某些功能时调用?
I'm probably explaining myself well. I'm on about, do you have to maintain like another protocol that's held on a server, AWS somewhere that has to refer to for things?
哦,我举个例子,DNS种子节点就是这种情况。当你启动节点时,怎么知道该连接谁?如何获取地址?我们不可能直接把地址...虽然源码里确实硬编码了一小部分,但这些地址通常每天都在变化。
Oh, I I'd say there is an example of that in the DNS seeds. So when you start up your node, how do you know who to connect to? How do you know addresses? We can't put that directly. Well, we have a little bit of that directly in source code, but usually that changes day to day.
对吧?所以你会连接一些DNS种子节点。大概有...我想说大概5个到10个之间,具体应该是8个,由不同的人运营。它们会告诉你:'我一直在扫描比特币网络收集地址,这里有一份非常多样化的地址列表'。
Right? So you will talk to, so some DNS seeders. There's, I wanna say, between five. I think there's eight of them, five to 10 of them, that are run by various people. And they'll be like, oh, yeah, I've been scraping the Bitcoin network for for addresses, and here's a list of addresses that are very diverse.
他们,你知道的,代表着世界上各种网络之类的。然后,这里有50个左右。你会和其中8个交流,然后就开始建立连接。这就是你正在连接的实时事物的一个例子。但我要说,相比你可能想到的大多数情况,这种情况非常少。
They're, you know, they represent various networks in the world or whatever. And then, you know, here here's 50 of them or whatever. And you'll talk to eight of these, and then, you know, you'll you'll start connecting. So that is an example of a live thing that you're connecting to. But I would say there's very little of that compared to most most things that you might think of.
好的。让我们来谈谈Iron,我们的下一代数据中心业务,利用100%可再生能源为比特币挖矿和AI的未来提供动力。非常喜欢这些家伙。Danny和我与创始人Dan和Will合作已经有一段时间了,现在超过一年了。我们对他们的价值观印象深刻,尤其是他们对当地社区和可持续计算能力的承诺,我们在各个方面都有合作。
Alright. Let's talk about Iron, who are our next generation data center business powering the future of Bitcoin mining and AI using 100% renewable energy. Love these guys. Now Danny and I have been working with the founders Dan and Will for quite some time, over a year now. We've been super impressed with their values, especially their commitment to local communities and sustainable computing power, and we've collaborated with them on everything.
我们制作了影片,录制了播客。他们甚至赞助了我的足球队Raoul Bedford,并且是我们会议cheat code的主要赞助商。Iron是为比特币挖矿、AI及其他领域提供动力的负责任方式。如果你想了解更多,请访问iren.com。
We've made films. We've done podcasts. They even sponsor my football team, Raoul Bedford, and they're the lead sponsor for our conference cheat code. Now Iron is the responsible way to power Bitcoin mining AI and beyond. And if you wanna find out more about them, please do head over to Iron, which is iren.com.
让我们谈谈比特币游戏领域的先驱BitCasino。他们成立于2013年,从那时起,BitCasino就成为游戏创新的灯塔。他们受到全球数万用户的信任,提供尖端的安全性,当然,他们支持世界上最好的货币——比特币。
Let's talk about BitCasino pioneers in Bitcoin gaming. Now they were established in 2013, and BitCasino, at that point, became the beacon of innovation in gaming and have been ever since. They are trusted by tens of thousands worldwide, and BitCasino offers cutting edge security. And, of course, they support the best money in the world. They support Bitcoin.
使用BitCasino,你可以享受闪电般的快速提款、VIP体验,以及超过4000款游戏。但他们也相信公平的游戏环境,提供零交易费用。他们提倡负责任赌博,并通过实时RTP功能让玩家识别看涨和看跌的游戏。如果你想了解更多并加入BitCasino,请访问bitcasino.io,那里顶级游戏与无与伦比的服务相遇。
Now with BitCasino, you get lightning fast withdrawals, VIP experience, and they have over 4,000 games. But they also believe in a fair gaming environment, offering no transaction fees. They promote responsible gambling, and they empower players with their live RTP feature to identify bullish and bearish games. Right. If you wanna find out more and join BitCasino, please head over to bitcasino.io, where top notch gaming meets unequaled service.
那就是bitcasino.io,也就是bitcasin0.io。同时,请记住要负责任地赌博。当你第一次拆分节点并尝试寻找其他节点交流时,是否有数量限制?比如只需要连接五六个就足够产生网络效应?还是可以连接所有节点?
That is bitcasino.io, which is bitcasin0.io. And also, please remember to gamble responsibly. When you split up your node for your first time and it's trying to find other nodes to talk to, is there a limit? It's like you only need to be connected to five or six, and once you've is that like the the that's enough to create the network effect? Or can it connect to all of them?
这类事情是如何运作的?好吧,我对你这些一无所知。
How does that kind of stuff work? Well I don't know any of this from you.
这里有几个设计目标,对吧?一个是带宽问题,对吧?首先你不可能连接到每个人,你的电脑很可能处理不过来。
So there's a couple design goals here. Right? One is like bandwidth. Right? You can't connect to every single person that just first of all, you'll probably like, your computer probably can't handle it.
而且这个确实,就是不可行。
And also this yeah. It's just not feasible.
因为他们需要维持持续的通信。
Because they're maintaining a constant communication.
哦,大概有几万个对吧?我确信你的电脑能建立的连接数量本质上是有限的。或者说抱歉...
Oh, there's like tens of thousands. Right? Yeah. I'm pretty sure you just like you have a limited number of slots essentially that you could connections that your computer could be making. Or sorry.
我试着用简单的方式解释,连接到比如说3万个节点是不可行的。但另一个设计目标是,你绝对需要首先找到诚实的节点,也就是那些一旦知道主链就会立即告诉你的节点,这样你才能找到工作量证明最多的链。我们理解工作量证明共识机制对吧?
I'm trying I'm trying to, like, make it easy to unders like, it's just not like, it's not gonna be feasible to connect to like, let's say 30,000 like nodes. Right? But the other design goal is like you definitely really, really want to find, first of all, honest peers, as in peers that are gonna tell you about the main chain as soon as they know about it so that you can find the most proof of work chain. Right? So like we understand proof of work consensus, right?
你会找到工作量证明最多的那条链,这就是你对链的定义。但你需要先得知它。所以节点通常会尝试维持8到10个出站连接,希望这些节点是多样化的、响应迅速的,并能及时告知主链信息。我们会收集所有连接节点的统计数据。
Like you find the chain that has the most proof of work on it. And that's your idea of what the chain is. But you have to hear about it. So yeah, what nodes will typically try to do is maintain, like eight to 10, yeah, let's just say eight to 10 like outbound peers that you connected to, and are hopefully diverse and hopefully very responsive and telling you about MainChain. So we'll collect statistics about everyone that we're connected to.
比如他们上次发送区块是什么时候?上次发送有效交易是什么时候?我发送ping后他们多快回复pong?所有这些指标都用来评估节点的质量。当我们管理已知节点的地址时,也会尽量追求多样性,对吧?
Be like, when's the last time they sent me a block? When's the last time they sent me a transaction that was valid? When's like, how fast do they Pong when I send them a ping? Like all of these metrics we use to assess like how good our peers are. And then when, you know, when we're managing all of the addresses of the nodes that we know about, we'll also try to go for diversity, right?
举个例子,如果有人想从某个ISP或其他地方快速生成一堆IP地址,这很容易。但要跨越多个不同的ISP这么做就困难得多。因此,我们才需要通过各种方式来确保我们连接到的是一组健康的节点。我们会定期监控,比如随机从地址簿中挑选一个节点,看看它是否会响应我们。
So it's very easy, for example, for someone to spin up a bunch of IP addresses from like one ISP or whatever. But it's much harder to do that across like a lot of different ISPs. So that's why, know, like we have all these ways of managing ways for us to make sure that we are connected to a healthy set of peers. And so, yeah, we'll like regularly monitor. Like, we'll regularly try like, okay, let's just like pick a random one from our address book and like see if that peer, is gonna respond to us.
如果某个节点连续几天都没有发送任何信息给我们——希望情况不至于那么糟——那基本上就是个糟糕的节点。我们会将其剔除并尝试连接新节点。你看,软件中涉及的远不止工作量证明链或签名验证这些内容,整个系统非常复杂且迷人,真的非常有意思。
And and like if if we have like one of our peers has not sent us anything for, you know, days, hopefully not not at that point, like, you know, is is a shitty peer. Like we'll evict them and we'll and we'll try a new one. And so, yeah, there's there's so much that goes into the software that is not just, you know, what's the most proof of work chain or like is the signature valid? And it's very complex and it's very interesting. Very, very interesting, I think.
我在大学上网络课程时完全不了解这些,现在想想确实非常...
Like, I didn't I didn't know about this when I was taking a a networking class in in college, in uni. And, yeah, it's very
很酷。那么它们之间主要共享什么信息?是让网络运作的交易数据和区块吗?
it's cool. And and what and what are they sharing with each other? Is it is the primary information being shared to make the network work transactions and blocks?
我认为主要是交易数据、区块以及节点地址。
Well well, I would say it's like primarily transactions, blocks, and addresses of nodes.
好的。
Okay.
嗯,还有...
Well, there's
因为我觉得有很多人,大多数人可能根本不知道比特币是如何运作的。是的。因为很多人甚至不会下载一个节点。只有极少数人会运行节点。
because I think there's a of people this most people probably have no idea how Bitcoin works. Yeah. Because a lot of people don't even download a node. It's very small percentage of people will operate a node.
每个人都应该运行一个节点。你会学到很多关于比特币的知识,而且非常有趣,也非常简单。运行一个节点真的非常非常简单。
Everybody run a node. You'll learn so much about Bitcoin, and it's so fun, and it's so easy. It is so so easy to run a
我们会让你大开眼界。
We make a brain blow you.
是的。你不需要,甚至不需要600GB的空间。这是个误区。人们普遍认为你需要600GB来存储区块链,这是个非常常见的误解。你只需要存储JIXFit部分。
Yeah. We you don't need like, you don't even need, like, 600 gigabytes. Everybody like this is a myth. It's like a very common myth that people think you need 600 gigabytes to to store the blockchain. You only need to store the JIXFit.
对吧?你不需要那么多空间。你可以在笔记本电脑上运行它。
Right? Like, you don't need that much. You can run it on your laptop.
但最主要的是地址、交易和区块。是的。所以当一笔交易被创建时,它会在整个网络中传播。
But the primary thing is addresses, transactions, and blocks. Yeah. And so when a transaction is created, that is relayed across the whole network.
是的。它永远不会
Yes. It's gonna never be
有时候我的节点就是无法接收到那笔交易。还是说最终它总会收到?
a time when when my node just doesn't pick up that transaction. Or will it eventually get that transaction?
所以我们讨论的是尚未被挖矿确认的交易
So we're talking about transactions that haven't been mined in
在一个区块里
a block
对吧?没错。这其实是我最喜欢讨论的话题之一。
yet. Correct? Yeah. So, yeah, this is like what I love talking about the most.
内存池。
Mempool.
是的。问题在于:你是否一定能得知交易信息?绝对可以。实际上我参与的许多项目都在不同层面上涉及交易审查规避。我刚描述的是点对点的例子,但还有内存池层面的例子。关键是要避免设计出容易被狙击或干扰的系统。
Yeah. So the question was, are you guaranteed to hear about transaction? Absolutely And some some things that I basically, the projects that I work on, a lot of them kind of censor around transaction censorship on various different levels. So I kind of described a peer to peer example, but there's also mempool examples. And there's also like, don't design your things in a way that, you know, it can get sniped or whatever.
这种情况在Mumples也可能发生。但我们的目标是建立一个抗审查的支付网络,任何人都能自由交易且无法被阻断。我认为这是比特币三大最佳特性之一,也是我们应努力维护的。所以没错,虽然不能百分百保证,但或许我该聊聊内存池相关的内容?
There it can happen in Mumples as well. But the the goal is like we're trying to build a censorship resistant payment network where anyone can pay each other and nobody can block that. I think this is like top three best things about Bitcoin or things that we should strive for in Bitcoin. And and so, yeah, you aren't guaranteed. So should I talk about, like, Mempool stuff?
是的。
Yeah.
完全没有?好吧。是的。
At all? Okay. Yeah.
所以,你看,如果我没接收到交易,那它就不那么重要。但显然,每个构建区块的矿工都能看到每笔交易。但矿工有可能看不到某笔交易吗?或者说,大家的交易池应该相同吗?每个人都应该有相同的交易池吗?
And and so, look, if if if I don't pick it up, it's not so important. But it's important, obviously, every miner who's constructing blocks sees every transaction. But it are there chances that a miner might not see a transaction? Is the or should the member be the same? Should everybody have the same member?
感谢你提出这个问题。这确实是很多人讨论的话题。显然,比特币是可以正常运行的。之前有很多讨论旨在告诉大家,并非所有人的交易池都相同。不存在所谓的'唯一交易池'。
Thank you for for asking that question. This has been a topic that a lot of people talk about. Obviously, Bitcoin could function if okay. So there was a lot that was said to kind of teach everyone that not everybody has might have the same mempool. There's no such thing as the mempool.
对吧?网络中的每个节点都有自己的交易池,它们可能相同也可能不同。我认为当系统运行良好时,希望大家的交易池是一致的。我会解释原因:因为我们有这个去中心化的交易转发网络。
Right? There's each node on the network has their own mempool and they may or may not be the same. I think when things are working really well, hopefully everyone like does. And I'll explain why. So like, we have this decentralized transaction relay network.
每个节点都有一个交易池。
Each node has a mempool.
我们需要先解释一下什么是交易池吗?
Should we should we explain what the mempool is?
好的。当然。
Okay. Sure.
是啊。因为新听众刚进来时可能会想,你们他妈的在说什么?他们能听到这里已经很不错了。他们会疑惑,你们俩在聊什么?Gloria到底在说什么?
Yeah. Because the the we've got new listeners coming in just they're like, what the fuck you wanna they're probably actually, if they've got this far, well done. They're gonna think, what are you two talking about? What's Gloria talking about?
好的。对。抱歉。如果没问题的话,我们从头开始讲吧。
Okay. Yeah. Sorry. If okay. So let's start from the beginning.
我们需要抗审查的支付系统。实现这一目标的方式是通过网络的去中心化结构。明白吗?我们不是简单地让矿工运营一个网站来接收付款,那样就毫无意义了。
We want censorship resistant payments. The way that we achieve that is through the decentralized structure of the network. Right? We don't just have, you know, the miner has like a website that you submit payments to. That would not be sense.
或者政府或银行运营的网站,对吧?显然——希望大家都明白——那行不通。所以我们采用的是去中心化网络。你连接到数万或数十万个节点中的一个,向对等节点发送交易,它们会进行传播,最终到达所有节点。这才是应有的运作方式。
Or the government has a website where or a bank, right? That's that's obviously that doesn't hopefully everybody understands that that's not how that so what we have is decentralized network instead. You connect to one of the tens of thousands or hundreds of thousands of nodes. You send your peers your transaction and they gossip it and eventually it gets to everybody. That's how it's supposed to work.
实际实现方式是:每个节点首先会接收并验证交易,将其存入内存池(mempool)。这只是未确认交易的缓存区,就是个缓存而已。
How we implement that in practice is each node, first of all, is down to hear about transactions and validate them, and we'll put them into their memory pool or mempool. And that's just a cache of unconfirmed transactions. It's just a cache.
你能用垃圾信息塞满那个缓存吗?然后...
Can you spam that cache and therefore, there you
好问题。嗯,是的。作为一个节点操作员,你为什么要这么做?一个原因是为了在区块到来时能缓存所有内容。
Good good question. And okay. Yeah. So you as a node operator why do you why do you do this? One is so that you can cache everything for when blocks come.
比如其中一个原因是为了让区块中继工作。当你收到一个区块时,如果之前没看到任何交易,可能会发生的情况是网络带宽激增,你需要下载整个区块。然后你会不停地运转、加载UTXO(未花费交易输出)从磁盘,进行验证所有签名等计算密集型操作,这非常耗费计算资源,可能需要很长时间。
Like one of the reasons is so that Block Relay works. So when you receive a block, what you what might happen if you didn't see any transaction before is you have this huge network, like bandwidth spike where you're downloading the full block. And then you're like spinning, spinning, spinning. You're like loading UTXOs, from disk and you're like like doing the computationally heavy thing of verifying all the signatures, etcetera. It's very computationally expensive and like it might take you a while to do this.
所以这是一种可能的情况。另一种可能是:是的,我已经下载并验证了所有这些交易,我有一个缓存存储了所有检查过的签名,已经把UTXO都加载到内存中完成了,然后存储到下一个区块。
So that's one possible reality. And the other possible reality is like, yep, I already downloaded all these transactions, already verified them. I have a cache where I like cached all the signatures that I checked. I already loaded all the UTXOs into memory and I'm done. And I store it onto the next block.
对吧?这对你作为节点操作员来说首先是个更健康的状态,对网络也是,因为每一跳都快得多。抱歉,区块延迟就这样大幅降低,因为每一跳都会成倍影响。明白吗?
Right? And that is a much, much healthier, first of all, situation for you as the node operator, but also for the network because every single hop is so much faster. Sorry. So block latency goes from like this to this because each hop, like multiplies at each hop. Right?
所以最健康的网络是重组最少的,因为重组很糟糕。比如你希望区块延迟非常快,因为如果两个人几乎同时发现下一个区块,最好大家都能快速获知其中一个。否则可能会出现一半网络知道这个区块,另一半知道那个区块,最终不得不解决这个重组。重组越少越好。
And so the healthiest network, the ones with the most the least reorgs where like reorgs are bad because So for example, you want block latency to be very, very fast because if two people find the next block at around the same time, hopefully everybody hears about one like quickly. Otherwise, you might end up with, you know, half the network knows about this block and the other half knows about this block. And then at some point, you have to resolve that that reorg. The fewer of those you have, the better.
对吧?这种情况多久发生一次?
Right? How often do they happen?
我想大概每周一次吧。
I think like once a week or something.
哦,所以它还是挺规律的。
Oh, so it's still quite regular.
我不确定是不是那样。大概每千个区块左右吧。嗯。对。不过以前更频繁些。
I don't know if that yeah. Every thousand blocks or something. Yeah. Yeah. But it used to be more frequent.
每次发生这种情况,比如每次有重组时,就会很混乱,意味着你确认过的支付可能不再被确认。这是个用户界面问题,影响使用体验。对吧?
And every time that happens, like every time there's a reorg, like it's it's messy, it means your confirmed payment may or may not still be confirmed. Like it's a UI issue. It's like a it's a usability issue. Yeah. Right?
是啊。
Yeah.
所以这是个安全问题,至少可能是。因此我们真的想尽可能减少这种情况。总之,我们刚才在讨论为什么内存池和交易转发对区块转发有用。另一个作用显然是为了建立一个抗审查的支付系统。
So it's a security issue. It can be at least. And so we really we really want to minimize that as much as possible. So anyway, we were talking about why Mempools and transaction relay are useful for block relay. And the other use is obviously so that we can have a nice censorship resistant payment system.
当我们参与交易转发时,不只是验证交易是否符合共识规则就扔进内存池继续。你刚才问的关于能否向安全内存池发送垃圾交易的问题——确实存在需要几分钟来验证的共识有效交易,对吧?
And when we are participating in transaction relay, this is we don't just like validate whether the transaction is consensus valid, chuck it in mempool and and continue. So your question which you asked, which was like, can you spam the secure mempool? Yeah. There are consensus valid transactions that can take you several minutes to validate. Right?
这些交易可能是有效的也可能不是。记得Rusty Russell很久前写过一篇很棒的文章,关于一个非隔离见证交易因二次缓存问题导致需要几分钟验证的例子。但你可以想象那可能是伪造交易。
And they may or may not be a valid transaction. Right? Like there's this really great post, think by Rusty Russell, which is from a long time ago, a non SegWit transaction with like a bunch of inputs due to like quadratics caching. It took like several minutes to validate. But you can imagine that being like a fake transaction.
对吧?那是在一个包含工作量证明的区块里出现的。工作量证明这种机制能轻松防止垃圾信息,因为生成一个有效的工作量证明区块比下载验证它要困难得多。而交易则不需要工作量证明,所以更像是有人随便发个交易给你,你可能花几分钟验证后才发现它是无效的。
Right? That came in a block, which had proof of work on it. And proof of work is this like really easy way to avoid spam because it's so much harder to produce a proof of work valid block than it is to like download it and validate it. Whereas transactions, you don't have a proof of work requirement. So it's much more like people who just send you this transaction, maybe you spend minutes validating it and then it turns out to be invalid.
这完全没用。甚至都不会被确认。对吧?嗯,谢谢。
It's completely useless. It's not even gonna be confirmed. Right? Yeah. Thanks.
谢谢。对吧?所以我们制定了规则,比如不接受超大额交易——这就是个很简单的共识规则。理论上可以有40万权重单位的交易。
Thanks. Right? And so we have rules where we're like, okay, we don't take really large transactions. Like that's a very simple rule. So consensus rule, you could have like a 400, 400,000 like weight unit like transaction.
但我们在交易转发时限制为10万。另一个典型例子是内存池——它就是个缓存区,对吧?我们希望通过大量激励相容指标来评估交易是否有用。
But we make that 100,000, in in transaction relay. Another really good example is, we use like we want our mempool, it's a cache. Right? We want it to be useful. And so we use a lot of incentive compatibility metrics to assess whether or not this transaction is useful.
最典型的例子是遇到两个冲突交易时,它们花费同一个UTXO形成双花。这时应该选择手续费率更高的那个,因为对矿工来说激励相容性更强。即使你不是矿工,在验证区块时也会倾向于选择更可能被打包的交易。
So the best example is if you get two transactions that conflict with each other, they spend the same UTXO, they're double spends. You you should probably pick the one that's higher fee rate. Because that is more incentive compatible for a miner to mine. Even if you're not a miner, you like, you're expecting to use this for when you're validating blocks. You're like, okay, this is more likely to be mined and therefore I'm gonna take it.
这就是我们在交易验证中的另一个实践,也是实现费用替代(RBF)的基础。通过这种方式提升手续费。抱歉。
So that's like, that's another example of like what we do in transaction validation. And that's what leads to being able to RBF, to replace by fee. Right? To fee bump that way. Sorry.
我正要回答你的问题。关于是否每个人都该...希望如此
I'm getting to your question Yeah. About should everybody have the same Like, hopefully
在一个理想的世界里。
In an ideal world.
是啊。在理想情况下,如果每个人都有相同的内存池,事情会运作得最好。当然,像我描述的所有这些规则,它们并非共识。所以你可以随心所欲,对吧?
Yeah. In an ideal world, things work best if everybody has the same mempool. Of course, like all these rules that I described, they're not consensus. So you can have whatever you want. Right?
比如假设你说,我的内存池——我是说,举个例子,我讨厌铭文。或者我的内存池不允许花费已确认的UTXO,或者我的内存池...你想怎么做都行。是的,那样是被允许的。但这是否意味着因此每个人都该有不同的内存池?其实不是。
Like let's say you're like, my mem like, I mean, the example is like, I hate inscriptions. Or like my mempool like doesn't allow spending on confirmed UTXOs or my mem Like you can do whatever you want. And that, yes, like that's allowed. But is that But like people are like, therefore everybody should have different mempools. It's like, well, no.
那不是我们的初衷。但我觉得这是对过去观念的一种过度修正——人们曾以为存在一个统一的内存池来提交交易。而现在大家突然意识到,实际上每个人都有自己的内存池,所有内存池都该不同。
That's that's not where we were going. But I think it was like kind of this overcorrection of like people used to think there was the mempool that you would submit transactions to. And then now everybody is like, oh, actually, everybody has their own mempool. All the mempool should be different.
我以前也这么认为。真的。曾以为只有一个内存池。所以我才会问是否存在外部依赖——因为我原以为存在一个统一的交易内存池。
I used to think that. I did. Used to think there was just like one mempool. That's why I asked the question, are there outside dependencies? Because I imagine there was this this mempool of transactions.
我原先没意识到交易本身是被转发和存储的。所以当我们访问Mempool网站时
I didn't realize the transactions itself were getting relayed and stored. So when we go to the Mempool website
嗯。Mempool是
Mhmm. Mempool Is
那只是他们自己的
that just their own
内存?是的。是的。是的。理论上来说,内存池空间和内存池是不同的东西。
memory? Yeah. Yeah. Yeah. That's Theoretically So Mempool space and Mempool are different things.
每个节点都有自己的内存池MEMPL。是的。然后内存池空间就形成了。
There's like MEMPL the memory pool that each node has. Yeah. Then MEMPL space happens.
是的。所以那只是理论上的。那只是它应该的样子。
Yeah. And so that's just theoretical. That's just what what it should be.
我认为不一定。
I think not necessarily.
他们是从哪里获取的?
Where did they take theirs from?
所以他们为什么不...我是说,他们运行自己的比特币节点。是的。
So they why don't so I mean, they run their own Bitcoin nodes. Yeah.
这是我的假设。但因此,理论上他们的可能与我的不同。
That's what my assumption is. But but therefore, theirs could theoretically be different from mine.
是的,是的,完全正确。首先,我认为他们运行了几个不同的节点。他们有一个包含所有交易的大型节点,还有一个默认节点,容量是300兆字节。
Yes. Yes. Absolutely. So I I I think they run a few different nodes, first of all. And so they have like a huge node that has like all the transactions and then they have like the default node, right, which is 300 megabytes.
所以当费率很高、交易量巨大时,大型内存池会保留所有交易。但比如你的300兆内存池会开始清除那些费率较低、不太可能被打包的交易。我们正利用激励相容性来评估...
And so like when fee rates are really there's like a ton of transactions, like the huge mempool will have all of them. But for example, your 300 megabyte mempool is gonna start purging the lower fee rate stuff that is less likely to get mined. We're using incentive compatibility to assess what
那当它们被清除后,会去哪里呢?
So when they get purged, where do they go to?
直接丢弃。它们就消失了。从我的节点?对你的节点来说。我们直接丢弃它们。
You just throw them away. They're gone. From my node? For your node. We'll just throw them away.
但矿工永远不会丢弃任何交易,因为说不定哪天就会打包它们?
But a miner would never throw any away because at some point they might mine them?
我猜他们的做法和Mempool Space很相似——用大型节点记录所有交易,但保留一个默认节点。因为内存池越大,所有操作的计算成本就越高。比如构建新区块模板时,你更希望基于较小的内存池操作。
I I would imagine that they do something very similar to what Mempool Space does, which is they have a huge node that just keeps track of all of them, but they have like a default node. Because the larger your mempool, the more computationally expensive everything gets. Like building a new block template, for example, you wanna do that on a smaller mempool.
所以那个巨大的存储空间就是用来存放所有后续的东西。就像,如果我们经历一个交易量很大但价值很低的密集时期,他们就把这些交易暂时存放起来,等手续费率下降后再处理?
So the huge one is just for storing all the stuff later. It's like, okay, if we go through a very intensive period where there's lots of low value transactions, they park them for later and then, you know, fee rates drop, then they bring those in?
对,正是这样。
Yeah. Exactly.
今天倒没那么多。
Not so much today.
没错没错。而且我觉得Mempool Space那个审计功能挺酷的,他们会自己构建区块模板,然后和实际挖出的区块对比,这样就能看出差异——要知道这不一定是审查,交易不同的原因可能有很多种。
Yeah. Yeah. Exactly. And and so I I think part of like, Mempool Space has this cool audit feature, right, where they like they build their own block template and they compare it to what got mined and you can see like, oh, are these, you know, it's not always censorship. Like, there's there's many reasons why the transactions might be different.
但你能大致看出原本应该是什么样子,或者差异在哪里。不过当然,你的节点可能和MemplSpace的节点不同,而矿工的节点可能又不一样,所以很难确切说明交易为何不同。
But like you can kind of see what the what it would be or like what the difference was. But of course, like your node might be different from MemplSpace's node and, you know, and that might be different from the minor node or whatever. And so it's like very difficult to it's very difficult to prescribe a reason why a transaction might be different.
有没有可能我发起的交易手续费太低...嗯...结果永远不被打包?就这么一直挂着直到天荒地老?
Could could I ever post a transaction where the fee's too low Mhmm. And it never get mined? And it just sits there and lasts forever.
这个嘛,如果所有人出的区块空间竞价都比你高,那抱歉你就只能...我能...
Well, if, like, everybody's bidding higher than you for block space, then sorry you got you got Can I does
那笔交易最终会被取消吗?我可以哦?需要我自己想办法取消吗?我要把它退回去吗?具体是怎么操作的?
that transaction eventually just get canceled? Can I Oh? Do have do to I have to somehow cancel it myself? Do I bring it back? Like, how does that work?
我认为你无法取消它。一旦你签署了交易,比如矿工可能会记录他们看到的每一笔交易。六个月后,你以为交易取消了,可能你正在给朋友或商家付款,然后你说,好吧,我再发一笔新交易给你。
So I don't think you can cancel it. I think once you've signed that transaction so for example, a miner could just be logging every single transaction that they see. And then like six months later, you thought it was canceled. And maybe you were like paying your friend or a merchant or something. And you're like, okay, I'll just send you a new transaction.
那笔可能被挖出来。所以很抱歉。
That one's canceled. Like, you might get mined. So sorry.
你怎么把它退回去?有没有办法能退回去?
How you how do you bring it back? Is there any way you can bring it back?
不,不行。抱歉,没办法。不过你可以尝试双花。
No. No. Sorry. There isn't. Well, you could double spend it.
对吧?好的。但这仍不能保证别人不会挖到它。对吧?这是一笔共识有效的交易。
Right? Okay. It's still not guaranteed that someone might not mine it. Right? It's a consensus valid transaction.
你已经广播出去了。
You've already broadcast it.
我可以提高手续费吗?
Can I increase the fee?
可以,可以,可以。就像这样。你可以像我之前描述的那样设置手续费,你可以创建一个RBF(费用替换)交易,用更高费率的交易进行双花。
Yeah. Yeah. Yeah. Like so yeah. So you could like fee like I described before, you could create an RBF where you double spend it in a higher fee rate transaction.
理论上,矿工应该会选择费率更高的那个。但同样,如果他们愿意,他们可以决定——如果他们表现得很奇怪,比如他们不知怎么没听说手续费提高了,或者在你提高手续费时,他们已经开始打包包含原交易的区块了。这些都是可能导致你的RBF交易成功或失败的原因,有很多因素会影响费用替换交易能否生效。
And theoretically, a miner should mind the higher fee rate one. But again, they could decide if they wanted to, if they're being weird, like they didn't hear about, like, you know, for some reason they didn't hear about the fee bump. Or by the time you fee bumped it, they had already started working on a block with that transaction in it, for example. These are all potential reasons why like your RBF may or may not get in, may or may not happen. There's a lot of reasons why the replace by fee transaction may or may not, work.
其中一些原因——因为我花了很多时间研究RBF的局限性——是我们的策略规则不够智能。我们再次在抗拒绝服务攻击(比如保持计算复杂度低)和激励相容性之间做出权衡。有时我们会走捷径,用不完美的启发式方法来评估激励相容性,因为精确计算的计算量太大。所以我们可能会看着两笔交易说‘哦,这笔更适合挖’,但实际上另一笔才是。
One of those like some of those reasons, because I've spent a lot of time looking at kind of the limitations of RBF, is just like our policy rules are not very smart. So we make a trade off again between comp like being resistant to denial of service, like trying to be computationally not complex, as well as incentive compatibility. Right? So, sometimes we make a trade off where we take a shortcut or we have an imperfect heuristic for assessing incentive compatibility because the actual thing would be too computationally complex to do. And so we might look at two transactions and we'll be like, oh, this one's better to mine, but actually this one is.
因此我们可能会拒绝实际上更好的替换交易,或者接受不够好的替换。我认为这是个漏洞,而且非常复杂,因为这是大量工程决策的结果,属于极端案例。确实,我花了很多时间研究这类RBF策略的局限性。我和其他人也提出了一些改进方案——当然我只代表我个人观点。
And so we might reject a replacement that's actually better or we might accept a replacement that's not better. And like this this is I consider a bug. It's a very complicated bug because it's the result of kind of a lot of engineering and the and these are very like kind of edgy edge cases. But yeah, there are I've spent a lot of time essentially working on these kinds of replace by fee policy limitations. And we have a few I have some proposals as well as other people have I don't speak on behalf of anyone other than myself.
目前有很多令人兴奋的项目正在努力修复内存池(Mempool)中的这些问题。
There there are a lot of really exciting projects that people are working on to try to fix these things in Mempool.
那么铭文(Inscriptions)是如何改变内存池规则的?显然它已经造成了影响。
So how has Inscriptions changed the Mempool game? Because clearly, it has.
我记得我们有过三轮辩论。大概就是人们因为BRC20相关的事情对高昂的手续费非常不满。
So I remember we had like a three round trip debate Yeah. Where I think it was around, like, people were really upset that the fees were so high because of all the, I think, BRC 20 stuff.
是的。
Yes.
他们当时问能不能解决这个问题。我就说,这就像你在高速公路上遇到堵车,却质问施工人员为什么让这么多车通行。但实际上,其他人当然有权发送比特币交易。交易能否被确认取决于手续费率,因为矿工有经济动力优先处理高手续费交易。他们可以利用区块空间...
And they were like, can you fix this? And I was like, you're kind of like somebody who's driving down the highway and there's traffic and you're like, road workers, why did you allow all these people? And like, it's like, yeah, other people are allowed to are allowed to send Bitcoin transactions. And the way that they're chosen for confirmation is based on fee rate because miners are, you know, economically incentivized to include those transactions. And they can use the blocks yeah.
没错。他们是在利用稀缺的区块空间应对高需求,这是经济规律。区块空间这种资源的价格会随着需求上涨,这很正常。
Yeah. I mean, they use the scarce block space to a, you know, a demand that's very high and it's using economic. Right? Like, the price goes up for a unit of block space, which is the resource that you're trying to consume.
但这些问题带有政治色彩。
But this stuff is political.
确实,这是...
Yeah. It's it's
作为开发者或维护者,你是否觉得自己有责任保持中立?只要保证软件正常运行,就不该表达个人立场?
And and do you feel like, as a developer or a maintainer, either or, do you feel like you have a duty to not be political? Not have an opinion as long as the your job is just to make sure the software works.
是的。我们讨论这个问题时,我遇到的困扰是人们在问:你能阻止垃圾信息吗?而垃圾信息在我们谈论内存池代码和交易转发代码时有非常明确的定义——就像我们刚才讨论的那样,它指的是不当占用资源(比如你电脑的计算力或内存)的行为。我们有一整套防范机制。因此,在处理这类代码时,我采用了自己对垃圾信息的定义标准。
Yeah. So the issue that I had when we were talking about this was that people are like, can you stop the spam? And spam has a very specific like we've just been talking about the definition of spam when we're talking about mempool code and transaction relay code, where, you know, it's it's using a resource, for example, your computer's, you know, computation or memory, that it shouldn't be. And and we have all kinds of ways of preventing that. And so we have a I have a definition of spam that I use when I'm work when I'm thinking about this kind of code.
但人们要求我根据具体应用场景来适用这个定义。我认为协议开发者或交易转发代码的职责并不包括判定哪些应用场景是合理的。你懂我的意思吗?
And people are asking me to apply that definition based on use case. And I don't think it's the protocol developer, the transaction relay codes place to decide what use case is legitimate or not. Like it like, you know what I'm saying?
这个决策可以由节点甚至矿工层面做出,就像Ocean所做的那样。在去中心化网络中,你确实可以自主决定。
It can happen at a node or even minor level like Ocean have done. You can that's where you can make that decision because in the decentralized network Yeah. You get to decide yourself.
没错。就像你不喜欢猫咪照片或扭扭糖(Twizzlers)是你的自由。但我不认为应该用'这不是合法交易'或'NFT糟蹋区块空间'这类说辞——这种价值判断不该出现在编写策略代码的考量中。
Yeah. Like you like if you don't like cat photos, you don't like twizzers or whatever, that's like your choice. Right? But I don't think this is not a legitimate transaction or, you know, this is a waste of blocks, you know, because NFTs are bad or whatever. I don't think that language has a play Well, I don't think that should be considered when you are talking about writing policy code.
确实,作为开发者...
Yeah. As a as a developer.
对,作为开发者,作为协议维护者...
Yeah. As a developer. As a protocol maintainer.
这个话题确实很难把握。说实话我反复思考过,现在更倾向于比特币应该只用于金融交易——毕竟比特币是货币。虽然也有人辩称这些(非金融)应用本质上还是...
Like It's been such a tricky subject to navigate. And honestly, I've gone back and forth on this. I've come to the point that my preference would be Bitcoin was just used for financial transactions Sure. Of Bitcoin being money. And and I know someone said, well, these still are.
但我也同样不喜欢审查制度的概念。我和比特币机械师进行了长时间交谈,显然他深度参与了海洋项目。我赞同他的观点——我真正关心的是货币体系的改进,特别是在马拉维、肯尼亚和加纳等地目睹的那些情况。
But I've also I don't like the idea of censorship. But had a very long conversation with Bitcoin Mechanic. Obviously, he's very much involved in Ocean. I agree with him. The like, the thing I care about, the thing I'm here for is the improvement of money, especially with the kind of things we saw out in Malawi and Kenya and Ghana.
是的,我对量子猫之类的东西毫无兴趣。我觉得其中某些内容是对比特币的攻击。但我逐渐意识到这让你陷入两难境地,因为人们希望你表达政治立场。你是否感受到这种压力?
Yeah. I have zero interest in in in quantum cats. I feel like some of that some of this stuff's an attack on Bitcoin. But I I've I've come to really appreciate that it puts you in a difficult position because people want you to have a political view. It just is that do you feel that as a pressure?
确实如此。不过与其说人们要求我表态,不如说他们是在要求我们修改软件规则。公平地说,我们已经找出了几个需要在内存池设置非共识性验证规则的政策性理由。
Yes. Yes. Well, I don't know if people are asking me to have a view so much as they're demanding that we change the software and and right? Yeah. And I I think let's to be kind of fair to this argument, we've identified a couple of reasons why you would have policy, policy as in the validation rules in Mempool that aren't consensus.
历史上确实存在一些限制措施来防止消耗网络资源的行为。比如我们设有标准输出类型和粉尘限额,这些机制旨在保护网络——包括见证折扣政策也是为了防止UTXO集合过度膨胀。
And historically, there have been, kind of things put in place to discourage things that are, bad for network resources. So for example, we have standard output types and we have a dust limit. And that's to protect try to protect or try to discourage, creating a lot of and even the witness discount as well is kind of to try to discourage bloating of the UTXO set.
什么是见证折扣?
What is a witness discount?
哦等等,我们先把这个话题讲完。我刚才说到运行完整比特币节点其实不需要存储整个区块链,
Oh, no. We're getting into it. Okay. So let me just finish that idea first. So I talked about how you can run a fully validating Bitcoin node and you don't need to store the entire blockchain.
只需要存储UTXO集合就够了——当然还需要区块头链。你说得对,确实不需要存储全部数据。
You just need to store the UTXO set, all of the UTXOs. And that is enough for you to validate whether each transaction and each block is valid. Well, you also need the headers chain. Yeah. You don't need all you're right.
你可以修剪大部分内容。因此,UTXO集的大小对于扩展性、运行节点的可访问性等方面非常重要。你刚才说什么来着?哦,见证折扣。当我们查看交易大小时,交易的某些部分权重与其他部分不同。
You can prune most of it. And so the size of the UTXO set is kind of very important to scaling and to the accessibility of running a node and all those things. And so what were you saying? Oh, witness discount. So when we are, looking at the size of a transaction, certain parts of the transaction are are weighted differently from others.
见证数据(如签名或使交易有效的脚本)可以被丢弃,这部分权重较低。这就是见证折扣的全部含义。这意味着如果你创建大量见证数据,费用不会像创建大量输出(这些输出会进入UTXO集)那样高昂。同样,我们有一系列标准输出类型,比如支付给见证公钥哈希、支付给Taproot或支付给见证脚本哈希等标准类型。
And so the witness data, which is like the signatures or the scripts that make this transaction valid, which can be discarded, like that is weighted less. That's all the witness discount is. And so that means that if you make a large witness, that does not cost that's not as that won't cost you as much in fees, for example, as if you like made a lot of outputs and outputs are what go into the UTXO set. And similarly, like we have a list of like standard output types. So that's paid to witness pubkey hash or paid to taproot or paid to witness script hash or, you know, those like standard types.
它们非常小且具有标准格式。至于粉尘限制我们就不深入讨论了,但存在各种...
And, you know, they're they're very small and and they have a standard format. And say, okay, we don't have to get into the dust limit. But these are there are like various
粉尘限制到底是什么?实际数值是多少?
What is the dust limit though? What's the actual value?
当然。这取决于输出类型。我刚描述了不同的输出类型,不确定是否需要解释具体含义。但如果你创建一个仅含1聪的输出,当你花费这个UTXO时,手续费会超过其实际价值。
Sure. Oh, it depends on the output type. So I just described the different alpha types. So I don't know if I should explain what they are. But if you create an output that has like one Satoshi in it, well, you're not like, if you are to spend that, it's going to cost you more in fees to spend that UTXO than it's worth.
你明白我的
You know what I'm
意思吗?除非你持有特殊聪币。比如第一枚聪
saying? Unless you've got a special Satoshi. The first Satoshi
哦,当然。当然。
Oh, sure. Sure.
因为这完全是胡扯,对吧?你无法识别单个聪。
Because that that's that's bullshit. Right? You can't identify individual Satoshis.
嗯,这就是Ordinals的原理,对吧?就像你有一个外部的,像是
It well, that's what Ordinals is. Right? Like, you have an external, like
但他们基本上只是编造了自己的编号系统,这些聪并不独立存在。因为UTXO本质上就像——如果我把一张20英镑的钞票放在桌上——嗯,里面并没有单独的便士。它就是一张20英镑的钞票。你无法识别其中单独的便士。确实。
But they've they're like they've just basically made up their own numbering system, but these Satoshis don't exist individually. Because a UTXO is is essentially a a like, if I put a £20 note on the table Mhmm. There aren't individual pennies in there. It's just a £20 note. You can't identify the individual pennies in the Sure.
我猜我们可以某种程度上
I I guess we can kind of
不,你不需要那么做。
No. You don't need to do that.
我...我觉得是的。就像,你可以对协议本身未内置的含义做任何解读。但Ordinal...
I I think yeah. Like, you can like do anything to to derive meaning that isn't kind of baked into the the protocol. But ordinal
理论是指比特币之外的外部协议。
theory is something that says an ex an external protocol outside of Bitcoin.
是的。这没什么好说的,当人们叫我停止搞序数时,我们根本没有
Yeah. That has nothing to like, when people tell me to stop doing ordinals, we don't have
这跟序数没关系。去你的吧。没错。所以那个粉尘限额嗯哼。
It's got nothing do. Ordinals in. Fuck yourself. Yeah. So so the dust limit Mhmm.
这个限额是否需要随着比特币价值变化而调整?还是说因为它是以聪计价就无关紧要?
Does that have to be a kind of a moving beast as Bitcoin value changes? Does or is it irrelevant because it's priced in Satoshis?
它是按聪为单位确定的。对吧?假设你总是需要每虚拟字节至少支付1聪。对。小数点后已经是三位了。
It it's priced it it's determined based on like Satoshi units. Right? So if you'd if you assume that you let's say, you're always gonna have to have at least one SAT per V byte. Yep. The decimal is already three.
但如果每笔交易都要支付1聪/虚拟字节才能花费,那你就不能创建比如5聪的输出,因为这种输出的价值还抵不上使用它的成本。
But like one SAT per V byte on any transaction in order to spend it, then you can't be making like if you make a five SAT output, then like you prob like it's it's uneconomical to create that output because it's worth less than what it would cost to use it.
好的。我们来聊聊Ledger,我最爱的硬件钱包。从2017年用到现在。Ledger是比特币安全领域的全球领导者,也是你掌控私钥的最佳方式之一。听着。
Alright. Let's talk about Ledger, my favorite hardware wallet in the world. The people I've been using since 2017. Now Ledger is a world leader in Bitcoin security, and it's one of the best ways for you to own and secure your private keys. Now listen.
如果你还在交易所或托管机构持有比特币,你在干什么?我多年来一直告诫你不要这样做。是时候更认真地对待你的资产安全了。记住,若非你的私钥,比特币就不属于你。现在通过Ledger硬件钱包搭配Ledger Live应用,你拥有了最便捷的方式来管理自己的私钥并掌控比特币。
If you are still holding your Bitcoin on an exchange or with a custodian, what are you doing? I've been telling you for years to stop doing this. It is time to take your security more seriously. Remember, if it's not your keys, it ain't your Bitcoin. Now with Ledger hardware wallets paired with the Ledger live app, you have the easiest way to start managing your own private keys and taking control of your Bitcoin.
随着价格飙升,你肯定不想把币留在交易所。我们见识过交易所的结局,对吧?现在你可以通过Ledger Live应用完全透明地发送和签署比特币交易,说实话这操作可能更简单。我强调过无数次,我至今仍在使用2017年购入的同款钱包。
And with the price booming, you don't wanna be leaving that on exchange. We've seen what happens with exchanges. Right? Now you can send and sign Bitcoin transactions with full transparency in the Ledger Live app, And, honestly, it can be easier. I've told you a million times, I'm still using the same wallet I bought back in 2017.
我的Ledger Nano S至今仍在服役。最近Ledger还推出了比特币橙色特别版,并开展了一项超酷的公益活动:每笔销售将捐赠5美元给比特币开发者社区,首期合作对象是我非常看好的Brink组织。想了解更多或购买硬件钱包,请访问Ledger官网shop.ledger.com(即sh0p.ledger.com)。
I've still got that same Ledger Nano S. Also, Ledger has recently released their Bitcoin orange nanos, and They got a very cool initiative going with it. They are giving $5 from every purchase to the Bitcoin developer community, and they're starting out with Brink, which I love to see. So if you wanna find out more, if you wanna get yourself a hardware wallet, please head over to Ledger. That is shop.ledger.com, which is sh0p.ledger.com.
现在说说Swan——他们的使命是帮助数百万人进入比特币世界,并打造了最快速便捷的入门方式。通过Swan应用只需几分钟就能注册并开始购买比特币。向亲友推荐比特币从未如此简单,而且现在Swan平台前1万美元的比特币购买完全免手续费,零成本即可起步。不过别担心,
Alright. Let's talk about Swan and their mission to help millions of people get into Bitcoin, and they've built the fastest and easiest way to get that started. It takes just a matter of minutes to sign up and start buying Bitcoin with the Swan app. So introducing friends and family to Bitcoin has never been easier, and Swan now has zero fees on the first $10,000 of Bitcoin buys, so it is free to get started. But don't worry.
若你已是Swan用户,接下来1万美元的购买同样免费。如果你热衷推荐比特币(我知道你是),选择Swan根本无需犹豫。一次简短对话就能让朋友从零接触比特币,只需让他们在应用商店搜索Swan Bitcoin(拼写为s w a n b I t c 0 I n),下载完全免费,即刻开启旅程。
If you are already a Swan client, your next $10,000 of buys are also free. If you love to recommend Bitcoin, and I know you do, Swan is an absolute no brainer, You can take a friend from zero to Bitcoin in just one quick conversation. Just tell them to search for Swan Bitcoin in the App Store. It really takes no time, and it's completely free for them to get started. Again, search for Swan Bitcoin, which is s w a n b I t c 0 I n, to download the app.
好的。现在聊聊Casa。我们来谈谈冷存储。注意听。看好了。
Okay. Let's talk about Casa. Let's talk about cold storage. Now listen. Look.
过去一年比特币价格暴涨,我知道你们中有些人见证了比特币资产的飙升。或许你还没考虑过多签存储方案,或许冷存储不在你的计划中,但你必须重视起来。我使用Casa服务已近四年,体验堪称完美。
The Bitcoin price has been booming this last year, and I know some of you will have seen your net worth in Bitcoin flying up. You may not have considered multisig storage. You may not have considered cold storage, but you need to get on to this. I have been using Casa for about four years now. Absolutely love it.
感觉舒服多了。现在我的比特币被锁定在一个多重签名方案中,而Casa是最佳选择。但我也想告诉你另一件事。他们推出了一款颠覆市场的产品,解决了我长期以来的担忧——遗产继承问题。我知道有些人通过设计谜题或与他人共享密钥来规划比特币遗产,但Casa完美解决了这个问题。
Feel a lot more comfortable. Now my Bitcoin is locked up in a multisig solution, and Casa is the very best. But I also wanna tell you about something else. They have brought a product to the market that changes everything, something that I've needed, something I've been worried about for a long time, which is inheritance. I know some of you plan your inheritance with your Bitcoin by creating some kind of puzzle or sharing keys with other people, but cars have nailed it.
他们将这一功能原生集成到应用中,你可以在应用内直接管理托管和继承事宜,确保万无一失,确保所爱之人能在你遭遇不测时继承比特币。只需指定受益人,当你离世后,你指定的接管人等待六个月即可接管比特币。Casa还会提供协助,确保比特币在此过渡期间的安全。若想了解更多,或意识到是时候选择优质冷存储方案,请访问casa.io。这就像加拿大不再铸造一分硬币,因为铸造成本超过面值。
They have built this natively into their app so you can handle custody, and you can handle inheritance directly in the app, ensuring there's no mistakes, ensuring that people you love inherit your Bitcoin should something happen to you. All you have to do is choose a recipient, and when you snuff it, when you're gone, the person you have put in charge waits six months, and they take control of your Bitcoin. Casa also provides you with a helping hand to make sure your Bitcoin stays safe during this transition. So if you wanna find out more, if you've realized it is time to get yourself a good cold storage solution, please do go and check out CASA at casa.io, which is casa.io. It's a bit like how in Canada, they they don't make the the penny anymore because it costs more than a penny to make a penny.
对。对。对。然后我们就开始讨论这个话题...
Yeah. Yeah. Yeah. Yeah. And so we started talking about oh, yeah.
我们讨论这个是因为长期以来有个不成文规定:我们在政策中设置了标准性检查,禁止某些操作。比如当我的节点内存池收到创建粉尘输出的交易时,即使共识有效也会拒绝。这原本是为了保护网络资源,阻止可能影响可扩展性的行为。现在人们质问:为什么不能对铭文也这样?毕竟政策可以禁止某些行为。
So we're talking about this because this has been like a very very long standing rule is we had these like standardness checks in policy where you can't you can't do that. Or like if I I'm running my mem, I have my mempool and I'm running my node and I receive a transaction that creates a Dust output, I'm gonna go ahead and reject it, even if it's consensus valid. And that was kind of there as I guess, the idea is to protect network resources to encourage people not to do things that are, you know, gonna hurt the scalability and whatnot. And people are like, why can't you do that for inscriptions? Because like policy can ban or like can prevent, things.
于是人们提议:为何不制定政策规则,当交易中出现类似NFT的铭文时就禁止?这个想法已通过不同形式的拉取请求提交到比特币核心代码库。你知道吗?这些已在GitHub上引发论战——那里不是推特,是讨论代码的地方。
And so people are like, why don't we have a policy rule where if we see an inscription in a transaction, like NFT like thing, then we also ban that in policy. And this this idea has been dressed up in like many different trench coats as different pull requests to the Bitcoin Core repository. Oh, do you know about this? And like they've become like flame wars on on GitHub, which is not Twitter. It's it's a place where you discuss code.
作为维护者...
It's, you know As as maintain
作为维护者,这是你们争论过的问题,还是说你们显然不该介入?这对你们而言是否属于审查行为?
as maintainers has this been something that's been debated or is it very obvious that you just don't get involved in this? This is censorship to you.
我们之前讨论过这个,因为我觉得人们对待拉取请求很认真,对吧?任何人都可以贡献,但这不意味着我们会认真对待每一个请求。当我说'我们'时,仅代表我个人观点。
So we've talked about this because I think peep like, people take poll requests seriously. Right? Like, anyone can contribute. It's not like we're like, you know, like we'll take every poll request serious. I'm when I say we, I speak on behalf of myself and not anyone else of course.
但确实,仔细想想,我其实发布过一份很长的文档,总结了这类提案的某个迭代版本。因为它收到了数百条来自不同人的评论,专业程度参差不齐。所以我非常认真地尝试索引每一条能找到的评论,归纳论点并权衡技术论据的优劣。是的,我非常认真地审阅了那个PR。
But yeah, like, you know, you think about it. And actually I published a a like really long document kind of summarizing one of the iterations of this kind of proposal, because it had like hundreds of comments from various people, being, you know, to various degrees of professionalism. Yeah. So I like tried very, seriously to like index every single comment I could find on it, like summarize the arguments and weigh kind of the the merits of the technical arguments against each other. So I I yes, I did very seriously like review that PR.
如果你需要,我可以把文档发给你。我们之前讨论的是——为什么不能对铭文做同样处理?我认为有两个原因:一是你可以在自己的节点上实现。
And I I can send you the the doc if you want. But like what we were talking oh, so the idea was like, oh, why can't you do this for inscriptions? Right? And like, I think there's there's two things. One is like, you can do this on your node.
对吧?但关键在于,'我想在自己的节点上这么做'和'希望比特币核心默认集成这个功能'是两回事。我想强调两点:一是比特币核心没有直接审查内容的能力。
Right? But like when you're asking, like there's a difference between like, I wanna do this on my node and I want Bitcoin Core to ship this as the default. Right? And so there's two things that I really just want to put out there. One is like Bitcoin Core doesn't have the ability to just censor things.
正如我所说,我们只能发布易于运行且激励兼容的软件。如果我们开发个软件然后对矿工说:'能运行这个吗?虽然你会损失30比特币手续费...'他们肯定会拒绝。
Right? We can only, like like I said, we try to publish software that is accessible to run, but also incentive compatible to run. If I publish like, sorry, not I, but like if we create a piece of software and we're like, hey miners, can you please run this? You'll lose like 30 bitcoins in fees, but like, please run this. They'd be like, no.
展开剩余字幕(还有 134 条)
顺便问下,你看到最初几个月那些手续费了吗?
By the way, did you see those fees in the first few months of the
对,我就是这个意思。
Yeah. What I mean.
大概是35个比特币吗?
Was it like 35 bitcoin?
对,对。就像,我们只是发布代码。我们不会强迫人们运行它,也不能要求人们运行它。
Yeah. Yeah. Like like, again, like we just we just publish code. We don't push like we don't force people to run it. We can't ask people to run it.
人们自愿下载软件,然后决定是否要运行。如果你发布软件时说'运行这个会损失30比特币手续费',但事实并非如此。我们刚讨论过每个人都有选择权,可以决定使用哪种内存池规则,因为这又不是共识问题。像Marathon或f2pool挖矿的案例就很明显,按照比特币核心默认的公平规则本应被拒绝。
People voluntarily download the software and then decide whether or not they want to do that. So if you publish software and you're like, well, if you run this, you lose 30 Bitcoins in fees. But like, that doesn't that's not how that works. And we just finished talking about how everyone has optionality and what kind of mempool rules that they're gonna use because it's not consensus again. And like we have so many clear examples of like Marathon or f two pool mining things that are that would be would have been rejected by the Bitcoin Core default fairness rules.
这是带外交易的事。对,对。这到底是怎么回事?他们在构建不进入内存池的交易吗?
This is the out of band stuff. Yeah. Yeah. What is that all about? Are they constructing transactions but that don't go into the mempool?
他们没有广播这些交易,只是把它们作为区块的一部分。
They're not broadcasting them. They're just putting them as part of the part of a block.
所以这些交易会在他们的内存池里,只是不发送给别人。很多时候他们这么做是因为运行了不同于比特币核心规则的补丁。
So it would be it would be in their mempool, and then they just don't send that to anybody Or like a lot of times, they do it because they've they're running some patch that is different from the Bitcoin Core like rules.
带外交易有什么风险吗?
Is there is is there any danger to out of hand transactions?
让我们回到之前讨论的区块中继延迟问题,当一切运作正常时,我的意思是,在广播区块时所有人其实已经知晓所有交易了,然后区块就能立即传播开来,对吧?
So let's go back to the block relay latency thing that we were talking about, where anytime you create a okay. So this I think when things are working right, best, I mean, like everybody already knows all the transactions by the time you broadcast that block. And then like it propagates like immediately. Right?
对。如果他们构建的是单个链外交易没问题。但如果他们构建了一整区块的链外交易再广播,就可能出现延迟问题。
Right. And if they construct so if they a single out of band transaction is fine. But if they did a whole block of them and then broadcast that, we have a potential latency issue.
所以实际上,单个交易也会造成影响
So actually, a single one makes a difference as
确实。好吧。
well. Okay.
如今区块中继通常通过紧凑区块方式实现。我们有直接的、高带宽的第一轮无往返传输,基本上我只发送交易骨架,用短ID标识区块中所有交易。如果你内存池里已有这些交易,就表示已接收。但若缺少某笔交易,就得请求补发:'嘿,Gloria,能给我这笔交易吗?'对方会回复'好的'。
So kind of the way that block relay usually happens nowadays is is with compact blocks. And we have like, like kind of direct high bandwidth, like first round, like no round trip ones as well, where basically I just send you like a skeleton of the transactions and I have like short IDs talking about all the transactions in the block. And if you already have that in your mempool, you're like, cool, I've got it. But if you're missing something, you have to be like, hey, Gloria, can I get one of those transactions? And it'll be like, yeah, sure.
给你。这就多了一次往返。所以单笔交易确实会造成影响。而一整区块的交易就更麻烦了——'我得下载并验证所有这些交易'。
Here you go. And that's an extra round trip. And so, yeah, like a single transaction can make a difference. And of course, a whole block of transactions. Then it's like, oh, I got to download all these and I'm gonna validate all of them.
然后...确实,这确实会产生影响。
And then, you know, and and so, yeah. It it does make the difference.
这是否应该成为网络是否允许出站交易的辩论点?它们能被阻止吗?不,不能。它们无法被阻止?
Is that is that a point of debate that should the network allow outbound transactions? And could they be stopped? Well, no. No. They could not be stopped?
不行。因为,你看,这就像是...我的意思是,我们知道马拉松公司提供类似服务对吧?但你们没办法强制执行,比如只能给我已经听说过的交易。这就是为什么我们有区块。对。
No. Because, like, it's an it's an like, I mean, we can, like we know about Marathon because they offer like a service to Right? Do but there's no way for you to enforce, like, you can only give me transactions that I already heard about. It's like, that's why we have blocks. Yeah.
你知道的,事情不是那样运作的。所以确实没办法...这就是为什么我们在区块中有共识机制,我们有共识规则和区块,然后我们就能确定交易的顺序。如果我们有其他方法来确定交易接收和生成的顺序之类的,那我们就不需要搞这些了,对吧?
It's, you know, it's it doesn't work that way. And so yeah, there there wouldn't be a way to like that's why we have consensus in blocks is we have consensus rules and blocks and then we're like, okay, these are the orders of the transactions. If we had a way to do that without if we had a way to be like, you know, this is this is the order in which transactions are received and created and whatnot, then this wouldn't like, we wouldn't have we wouldn't be doing all this. Right?
所以...所以铭文已经展示得很清楚了。听着,我们同意你们不应该审查它们,我们同意那不是你们在政策层面该做的事。你想说点什么吗?
So so so have inscriptions presented alright. Look. We'll agree that you shouldn't censor them, we'll agree that, you know, that's not your job at at a policy level. You wanna say something?
是的。我们不能...我不喜欢'审查'这个词。因为我们没有能力那样做。就像我刚才说的...你懂我意思吗?我们...
Yeah. We can't, like, sense I don't like the word censor Okay. Because we don't have the ability to do that. Like, I like, just like I just said, we'd like you know what I mean? Like Do we
有控制权吗?
have control?
能创造吗?不,我们没有。
Can create no, we don't.
你有那个
Do you have the
开始这期节目时我就说过。这就是为什么我一上来就强调,我没有权力决定别人的心理政策
started this episode. Like, that's why I started like right off the bat, like, I don't have the power to decide what other people's mental policy
的权力如此之大。
is. So much power.
我们做不到。而且我另一个观点是,这根本说不通。我们无法编写那种可以随意丢弃的软件,那不符合激励相容原则。
We can't do that. And and and like my other point was that, like, it it doesn't make sense. Like you can't we can't write software that's just like, yeah, like just throw away that's not incentive compatible.
但铭文是否改变了你在该领域的工作方式?它是否带来了你需要考虑的新攻击途径?
But have inscriptions changed changed the work you do in that? Has it presented new attack vectors you have to think about?
你是指铭文交易本身吗?
Like the inscription transactions itself?
我不确定。单是BRC20这类协议的存在,是否改变了你的工作方式?还是说你只关注交易本身,因此觉得无关紧要?
I don't know. Just the fact that they exist at these BRC 20 like, has that changed the way you have to work? Or do you just see transactions and therefore it doesn't matter?
我认为我们可以讨论两点。一是与极高交易量相关的一个bug,另一个更值得关注的是,我想Mono Knot称之为内存池狙击。我先谈第一个问题,这与铭文的结构无关。
I would say I think there's two things we can talk about. One is a bug related to just what happened with really high transaction volume. And the other one is kind of more attention to, I think Mono Knot calls it mempool sniping. So I'll talk about the first one. And this is not the nape like this is not the structure of inscriptions.
这与序数理论毫无关系,纯粹是交易量过高的问题。我们发现有几个交易中继数据结构效率不够理想,可能每分钟处理几百笔还行,但面对每分钟数万笔就力不从心了。
This has nothing to do with ordinals. It's just the high volume of transactions. This is just kind of like an anecdote is, like we discovered that there were a couple transaction relay data structures that were not as efficient as as they could have been. You know, probably would have worked for, you know, hundreds per minute, but it doesn't work for tens of thousands per minute for
能发现这个问题本身就是件好事。
It's a a thing to find that out.
没错,完全正确。我并不是说这有多好,但很多人都在问:出什么事了吗?
Yeah. Yeah. Exactly. And I'm not I'm not saying like, oh, this is great, you know. But like a lot of people are like, has have you has anything happened?
我觉得这件事带来了积极影响。另一个要谈的是...哦对,内存池狙击问题。我特别想在播客里讨论这个,因为它正是我长期关注的问题——固定交易(pinning)就是我们接下来要讨论的重点。
And I think this is a positive thing that that came out of that. And then the the other one, what was I gonna talk? It was oh, the mempool sniping stuff. I I really wanted to talk about this on a podcast. Yes, Because it is it is what what I have been talking about for ages, is I was always like, okay, like pin so pinning is like the thing that that we're gonna talk about.
我一直认为这非常糟糕,尤其对L2和闪电网络这类技术危害更大。简而言之,虽然安全模型相同(毕竟总能链上结算),但...
I was always like, this is really this is really bad. This is especially bad for like l twos and like lightning network kind of stuff where, I'll I'll just do a shorthand one. Basically, you have the same security model because you can always settle on chain. Right? You have like all these off chain transactions that you're not gonna broadcast.
通过这种方式获得了扩展性、隐私性和炫酷功能,但安全性不变——因为你总能链上结算。你已经列举了所有支出路径,比如约定:如果你这样做,我有两天时间响应(通过广播某笔交易来应对),否则资金赎回权就会转移给对方。对吧?
And through that, you get the scalability and the privacy and the cool features. But the security is the same because you can always settle on chain. You've already enumerated all of the spending paths and they include like, hey, if you're gonna do this, I have two days to respond or, you know, and I respond by broadcasting this transaction that spends from it. And I have two days to do that until the other spending path opens where you get to redeem the money. Right?
通常L2网络就是这样设置的,你需要在关键时间窗口内广播你的交易。所以我一直主张说,好吧,但如果在内存池里玩花样呢?比如我可以通过各种手段审查你的交易。我提到的其中一种方式就是类似'替换手续费'或BF这样的操作。有时你可能会广播一个替代交易,或者广播一个看似完全合理的交易。但由于验证代码的局限性,系统可能会表现得像傻瓜一样识别不出来。
That's usually how those L twos are kind of set up, is you have this critical period within which you need to broadcast your transactions. And so my argument was always like, okay, but what if like what about the the games you can play in Mempool where like I can try to censor your transaction through various means. So one of the things I was talking about was with like replace by fee or BF. Sometimes you might broadcast a replacement or you might broadcast a transaction that makes perfect sense. But because of the limitations and how the validation like code works, Like it'll just be like dumb and like not realize this.
总之。哦,说到NFT这些东西,基本上我会这么说,然后人们就问:'这种事真会发生吗?'我会回答:'呃,不会。但理论上有可能,而且可能导致资金损失。'但我们确实目睹了所谓的'钉住攻击'。
Anyway. Oh, so with kind of all this like NFT stuff, like basically I would say this and people like, but does this ever happen? I'd be like, well, no. But like theoretically it could and you could lose money. But we actually like saw what people call like pinning.
所以现实中确实发生过。
So it happened in the wild.
对对,确实发生过,因为ERC20标准允许任何人铸造代币。于是就演变成一场看谁先下手的竞赛,对吧?
Yeah. Yeah. It happened in the wild because what was it like ERC 20 has these like like anyone can mint anyone can like mint the coin or whatever. And then so it was like basically a race to like who can get who can do it first. Right?
或者说,我记得有个案例是利用了'后代限制'这个漏洞——其实技术细节我就不多说了。他们基本上钻了这个限制的空子,系统会说'我们只处理前N笔交易',之后就限制你广播的交易拓扑结构,因为处理能力有限。于是攻击者就把所有位置都占满,让你无法添加交易。还有个案例是利用'任意人支付'的兑换机制。
Or like, I think there was one where they exploited like like the descendant limit thing where actually, it probably doesn't make sense for me to talk about the technical details. But like they basically exploited this limitation where we're like, oh, we're only gonna consider the first this many. And then after that, like, it'll just like, we'll limit the topology of the transactions that you're broadcasting because we can't handle more than this much. And then so they're like, okay, I'm like, you know, I I took up all these slots and now you can't you can't add a transaction to this. And then there was another oh, this this is the other thing is like these like swapping things that are using Anyone Can Pay.
你听说过SIGHASH_ANYONECANPAY吗?对,就是允许别人修改你签名的交易。
Have you heard of SIGHash? Anyone can pay. Yes. Yeah. So you can sign your transaction so that other people can change it.
他们可以增减交易的输入输出。这意味着在内存池里,别人可以用自己的交易版本来替换原交易,比如抢在原始广播者之前买走NFT。这个不是内存池策略的限制,而是'任意人支付'本身的工作机制。现在越来越多人发现这类问题——用'审查'这个词可能不准确,但确实存在从广播交易到确认期间可能出错的环节。
They can add inputs and or outputs to it. And so what that mean what that meant was like in Mempool, people could replace it with their own version of the transaction where like they got to buy the NFT instead of the original person who broadcast the transaction. And that's that one is not a limitation in mempool policy. That one was you used Anyone Can Pay and that's how Anyone Can Pay works. And so there's the kind of all these like people are kind of discovering this like, I think censorship is the is the wrong word, but like things that can go wrong between the time when you broadcast your transaction and it may or may not getting confirmed.
我觉得这很棒,但有些人让我很烦,他们总是说‘曼普尔应该解决这个问题’。实际上,这里发生的是人们在买那些没有锁的愚蠢跑车,结果车被偷了,他们却质问‘这些路怎么了?为什么路况这么差?’拜托,别把东西设计得那么容易偷。就是这样。
And I think that's great that that people like I think it's I'm so annoyed when people are like, oh, Manpool should fix this. And I'm like, you know what's happening here is people are buying stupid sports cars that don't have locks on them and people are getting their cars stolen and they're like, what's wrong with these roads? Like, why are these roads so and so? Like, like stop designing your thing in a way that it can be stolen. So, yeah.
我回答你的问题了吗?
Did I answer your questions?
某种程度上算吧。我们东拉西扯了这么多。是的,我确实想问问关于固化的问题,因为它经常出现。以我极其简单的技术思维来看,这听起来总是很蠢。
Somehow. We've meanded through so much. Yeah. I do wanna ask about ossification because it comes up. To me, in my very simple technical mind, it always sounds dumb.
就像,怎么可能固化呢?我甚至不知道固化是什么意思。难道我们直接把代码锁死不让碰?这听起来太疯狂了,万一出现严重漏洞怎么办?我的基本逻辑告诉我,这他妈根本说不通。
It's like, how can you possibly ossify? I I don't even know what it means to ossify. What we we just lock the code and it can't be touched. That sounds psycho because what if there's a critical bug? My basic logic says, that doesn't make any fucking sense.
我们为什么要讨论这个?
Why are we talking about it?
我想‘固化’对不同人可能有不同含义。我同意那种‘干脆别碰代码’的说法毫无道理。
I I think probably ossification means something different to many people. I agree that the one where it's like, just stop touching the coat, that doesn't make any sense.
是啊。唯一能让我理解的固化,就是像僵局那样——因为无法达成一致,事情就永远搁置了。
Yeah. The only ossification that makes sense to me is like a stalemate of things just don't get done because we can't get agreement to get things done.
那那也很可怕。
That's that's also scary.
我不是在说那些无关紧要的。
I'm not I'm talking about big significant
比如共识。对,变更。嗯,所以有几项共识变更是必要的。对吧?
Like consensus Yeah. Changes. Well, so there are a couple consensus changes that are kind of needed. Right?
哦,真的吗?因为据说...是约翰·卡瓦略说的吗?他说不会有硬分叉。他说永远不会出现硬分叉。他说这只是比特币的一个副本?总会有人运行原始比特币。
Oh, really? Because it was said to was it John John Carvalho said, there are no hard forks. He said, there won't ever be a hard fork. It it is a just a cop did he say it's just like a copy of Bitcoin? Someone will always run the original Bitcoin.
对。是的。
Right. Yeah.
是啊。我们需要哪些?什么共识变更?你是指我们死后需要的那些吗?比如21年...40年还是什么?那里有个漏洞。
Yeah. What are the ones we need? What consensus changes? You're talking about the one that we need for like The when we're all dead in like '21 Yeah. '40 or what is There's a bug in there.
对。时间戳快不够用了。
For yeah. Running out of time for the timestamp.
是的。
Yeah.
是的。而且我认为还有几个bug修复会很有帮助。如果你听说过共识清理的事情——哦,我们可能不该讨论这个。
Yeah. And and there's I I think there's a couple bug fixes that would be nice. If you've heard of the consensus cleanup oh, we probably shouldn't talk about that.
哦,为什么?为什么我们不该谈论
Oh, why? Because why shouldn't we talk
这个?我只是不想
about that? I just I don't
人们不知道这件事吗?
The people aren't aware of it?
我非常...我尽量不在播客中说那些容易被断章取义的话。比如如果我说我们需要x软件工作,对吧?
I'm very I try not to say things on podcasts that can be taken out of context. Like if I say like we need x soft work. Right?
比特币出问题了。
Bitcoin's broken.
是的,是的。有时候我在推特上说的话反响很差,比如人们会以为我在说比特币有问题。但其实不是,如果我不相信比特币,我就不会研究它了。
Yeah. Yeah. And and sometimes things that I've said have like landed really poorly on Twitter and that, you know, like I'm like people will think like I'm trying to say Bitcoin's broken. It's like, well, no. I wouldn't be working on Bitcoin if I didn't believe in it.
不,你完全可以
No. You can just
你完全可以修复它。
you can just fix it.
我没有那个能力。
I don't have that power.
那么,比特币到底哪里出问题了?
So so how is Bitcoin broken?
好吧,我从来不是那个意思。我想说的是,正如我提到的,存在各种网络层面的攻击,以及关于可扩展性、抗审查性、隐私性等所有设想。这些都不是中本聪在原始客户端里写的一行代码就能让比特币具备的特性,对吧?
Okay. That's never what I'm trying to say. What I'm always trying to say is there are, like I said, all these network level attacks, all these like scalability like all these like ideas we have of scalability of censorship resistance, privacy, etcetera. These are not like single lines of code that Satoshi wrote in the original client and then like Bitcoin has that. Right?
它们是设计目标。我们需要随时间不断加固这些特性。就像我之前举例的高交易量情况,每次规模提升都会带来新的需求变化。没人能在第一版软件就为百万用户设计,你只能先做出概念验证。
They're design goals. And like we have to fortify them over time. And like I said with the example with the transaction traffic being really high, the requirements change each time you go from like one level to the next. And nobody ever designs our software for a million people in the first iteration. You're you can build a POC.
而且我从来不想深挖,我曾被人误会过对中本聪有敌意。中本聪很伟大。我并不是说那个概念验证不好。我只是说随着时间的推移,要求会变得更严格,而你实际上会
And I'm never trying to dig I got I've people thought I was hating on Satoshi once too. Satoshi's great. I'm not saying that like the POC is bad. I'm just saying like over time, like the requirements get more stringent and You literally come
上我的节目说比特币有问题,中本聪是个混蛋。
on my show and say Bitcoin is broken and Satoshi is a dick.
首先,我给狗取名中本聪是因为查理他喜欢
First of all, I named my dog Satoshi because Charlie he loves
希夫格纳特给他的船起名叫中本聪。
Shrevegnath named his boat Satoshi.
是啊。不过我觉得这次我占理。
Yeah. Well, I think I I have a beat on that one.
你是那条狗。好吧。但有些事终究需要有人去做。
You the dog. Okay. But so but there are some things at some point that need doing.
嗯。
Mhmm.
不过最终,那100%肯定需要硬分叉。
Ultimately though, that 100 definitely require hard fork.
我...我不太确定。是的。我觉得有些情况看起来像是需要硬分叉,但我们或许能想出办法通过软分叉来实现。对,对。
I I wouldn't I'm not convinced. Yeah. I I think it's like there are things where it's like, oh, we probably need a hard fork, but we can probably figure out a way to do it using a soft fork. Yeah. Yeah.
所以因为
So because
我们其实从未真正进行过硬分叉。等等,我们有过一次吗?像是修复漏洞的那种,通胀漏洞之类的?我好像听说过。但我们不像以太坊那样每隔几周就来一次,或者
we haven't really ever had a hard fork. We had Wait. Did did we have one like that was a bug fix, the inflation bug or something? I feel like I heard there was. But like, we're not like Ethereum that has one every like couple of weeks or
不。我认为我们没有...好吧,可能在非常非常早期的比特币史前时期有过。但没有,我们确实没有过
No. I don't think we've had like a well, I think maybe We've in like the very very early like prehistoric, you know, Bitcoin days. But no, not we we hadn't had
然后人们就分叉出去了。
like And people forked away.
我们确实。对。对。对。
We do. Yeah. Yeah. Yeah. Yeah.
人们已经分叉离开了。
And people have forked away.
但僵化就是它不仅仅是无法真正发生的,对吧?
But ossification is just it is isn't just can't really happen. Right?
我认为这又回到了定义问题。我可以谈谈我个人经历中与人们所说的‘僵化’有共通之处的地方——我觉得我们现在应该尽可能地去理解、规范化、测试、记录、隔离并测试现有的代码。我并不是说我们应该在比特币核心中添加一堆功能之类的东西(抱歉,是指比特币核心)。对于那些正在实验钱包界面和尝试新事物的人,我不是在说那些。
I think it's again, it's like what's the definition of that? I can speak to kind of my personal thing that has some things in common with what people say when they ask for ossification, which is like, I think we're at the point where it's best to seek to like understand and formalize and test and document and like isolate and test the code that we have as much as possible. And I'm not really saying like we should add a bunch of features and whatnot, at least to Bitcoin Core. I think there's sorry, to Bitcoin Core. To like all the people who are experimenting with wallet UI and like trying out new, like, the like, I'm not talking about that.
需要构建的东西太多了,你知道的,还有更多层次需要扩展。但就协议而言,我会说我倾向于保守,因为光是更好地理解代码和加固它就有太多工作要做。有时候这确实涉及协议变更,对吧?
Like there's there's there's so many things that need to be built. So many, you know, more layers to scale. But in terms of like the protocol, I would say that I'm I lean towards the conservative side because there's just so much to do that just in terms of like understanding the code better and fortifying it as I would say. And sometimes that involves a protocol change. Right?
有时候你需要对某些部分进行侵入性修改,以使其更具扩展性、更好,或者出于任何原因。所以并不是永远不修改代码,而是要保守行事,不要试图快速行动并破坏东西。我觉得这与那些主张‘僵化’的人有共通之处。但‘永远别碰代码’这种观点,我认为相当荒谬。
Like sometimes you need to kind of like invasively change something in order to make it more scalable, or or better or or for whatever, for whatever reason. So it's not don't ever change the code. It's like, you know, be be conservative and and like, you know, not try to move fast and break things. I'd I'd say that that's something I have in common with with the people who are like ossify. But like don't touch the code, I think is is is quite absurd.
你对这周发生在Samurai和Zabi身上的隐私事件怎么看?显然很令人沮丧。这是否引发了关于在协议层面为比特币引入隐私功能的兴趣或讨论?我知道这伴随着各种复杂问题,但现在这是个讨论点吗?
Do you think of this privacy stuff that's happened this week with Samurai and Zabi? You know, it's obviously depressing. Has that spiked any interest or discussion about bringing privacy to Bitcoin at the protocol level? I know that comes with all the different complications, but is it a discussion point now?
协议层面其实已经内置了很多隐私功能。你是指...
There there's a lot of privacy built in to the protocol level. Do you mean
我是说,像门罗币那样的隐私级别在So上
I mean, like Monero level privacy on So
我个人还没有与其他从事比特币核心开发的人讨论过这个问题。我们确实讨论过它,以及它有多么可怕。
I haven't personally had a conversation about this with the other with other people who work on Bitcoin Core. We did talk about it and and and how terrifying it is.
有一条推文。让我为你找出来。因为这里正是我认为特别令人沮丧的地方。我个人并不觉得沮丧,因为我在隐私方面有点懒散。但这条,Peter van Valkenberg转发了Anna Chekhnovich的推文。
There was a tweet. Let me find this one for you. Because this is this is where it I actually think it's particularly depressing. Because I didn't think it was depressing at a personal level because I'm a bit lazy with a lot of my privacy. But this one, Peter van Valkenberg, she retweeted Anna Chekhnovich Chekhnovich.
我念不准她的名字。但她在ACF(这里是反腐败基金会)说过,我们依赖Wazabi来保护捐赠者免受俄罗斯政府监视和监禁风险。美国当局在打击隐私技术时根本没有考虑这点。这特别令人沮丧。
I can't pronounce her name. But she said at the ACF, which is anti corruption here you go. The Anti Corruption Foundation, we relied on Wazabi when protecting our donors from Russian government surveillance and risk of imprisonment. That was not taken into consideration by The US authorities when they began attacking privacy talks. Mean, that's particularly depressing.
我认为这类事情...我不是监管方面的专家,也不清楚资金传输机构的历史分类。但正如我说的,这确实很严重——技术层面、监管层面、市场层面都存在大量障碍。比如每当想到网络崩溃漏洞,就觉得会引发公关灾难,或者很难让人们相信比特币是安全的。
I think that that kind of goes and I'm not an expert in in regulation and, you know, the history of what, you know, money transmitters are class how they're classified or whatever. Yeah. I think that's it's it is really serious that, like I said, like there are so many roadblocks, that, you know, are on the technical level, on the regulatory level, on the marketing level. Right? It's like whenever I think about, like a network crash bug, I feel like a lot of it is like it'll be a PR disaster or like it'll it'll be really difficult to like convince people that Bitcoin's safe if like nodes crash.
而且情况可能会很糟。但关于隐私问题,我们考虑了很多。比如最新发布的V2 Transport默认启用了节点间的加密连接,我们也支持通过Tor运行节点。新增功能时隐私往往是重要考量。
And also that it would be pretty bad. But yeah, I mean, so the question on how we think about privacy and I think there's a there's a lot of a lot of that. So with the release that just came out, like V2 Transport, which is encrypted connections between peers, that's default now. And yeah, there's you know, we support running nodes on on Tor and stuff. So yeah, like privacy is often a consideration when adding new feature.
哦,Vassal正在研究通过Tor连接广播交易,试图通过这种方式提升交易转发隐私。
Oh, and Vassal's working on like broadcasting transact your own transactions on Tor connections to try to improve transaction relay privacy that way.
比特币的内涵真是博大精深。
There is so much to Bitcoin.
是啊,太深奥了,确实。
Yeah. So much. Yeah.
你会不会觉得比特币有很多部分连你自己都不了解或不明白?
Do you do you feel like there's like large parts of Bitcoin you don't even know or understand yourself?
噢,当然。绝对是这样。即使在比特币核心代码里,那些密码学的东西就像魔法一样神奇。我经常想,天哪,我得去研究这个,因为它实在太有趣了。
Oh, yeah. Yeah. Definitely. Like even within Bitcoin Core, there's like, you know, all this cryptography stuff that like, you know, is like magic. And, you know, it's like all the time I'm like, oh, I wanna go explore this because this is really interesting.
而且你看,比特币的很多方面都酷极了。我觉得很多人最终参与核心开发就是因为——不要轻信,要验证。那些整天喊着这句话的人,有几个真的验证过代码运行方式符合他们的想象?但这正是我现在做的事,每当遇到'比特币这个功能怎么实现的',
And like, yeah. But so much of Bitcoin is so cool. And that's kind of I think how a bunch of people end up working on core is like, you know, don't trust verify. How many people who like scream that have actually like verified that the code works the way that they think it does? But that was like what I was doing where like now when I'm like, how does this work in Bitcoin?
我就会去翻代码看它的运作原理。这种感觉棒极了。不过显然,没人能通晓一切。比特币实在太丰富太有趣了。
I'll be like trying to look at the code to like see how it works. Like that's a great feeling. But like obviously, like nobody knows everything. Yeah. There's so much to Bitcoin and it's so interesting.
有太多引人入胜的问题了。
So many interesting problems.
开发人员足够吗?不够。这是资金问题还是无论你原本有多少人,答案依然是否定的?
Is there enough developers? No. And is that a funding problem or is that a whatever number you had, you still say no?
哦,不。我想我能想象这样一种场景:我会觉得,是的,我对这个感觉不错。但我之所以参加播客,归根结底是因为比特币就像一场实验,我们试图实现完全去中心化的组织或治理。最终,你、我或任何比特币持有者都肩负着同等责任——如果出现重大漏洞,或比特币未能如我们所愿成功,那不会是因为首席技术官失职,而是因为我们所有负有责任的人未能妥善行事。
Oh, no. I think I think I can imagine a like a scenario in which I'll be like, yeah, I'm feeling good about this. But the reason why a reason why I come on on on podcasts is like ultimately Bitcoin is like, we're trying this experiment of like completely decentralized organization or governance or whatever. And at the end of the day, like you or me or any other Bitcoiner has like the same level of responsibility to, you know, like if there was a really big bug or if, you know, Bitcoin didn't succeed the way that we want it to, it wouldn't be because like the CTO like, didn't do his job or whatever. It would be it would be because all of us who have this responsibility didn't, you know, do it properly.
如果比特币失败是因为所有人都认为它只会消耗能源、毫无价值且助长犯罪,那将是每个人的过错。你在比特币布道方面做了惊人工作,但这并非你的职责——比特币并未指定彼得担任首席营销官。就像所有参与核心开发的人,或许他们持有比特币,或许在大学时被招募,决定投身比特币核心开发。
And if Bitcoin fails because everybody thinks it just, you know, boils the oceans and has no has no value and, you know, helps criminals or whatever, like that would be like everybody's fault. And and, you know, you do amazing work in evangelizing Bitcoin, but that's not your job or like that's not like it's not inherently like Bitcoin said, you know, Peter's our CMO. Right? It was like you went and did that. And just like all the people who worked on Core, like, you know, maybe they held Bitcoin or maybe they got nurse sniped in college and they're like, oh, I'm gonna work on Bitcoin Core.
这不是因为比特币核心公司聘请你当首席营销官,或指定某人当首席技术官,迈克尔·塞勒当首席执行官。在这个去中心化的比特币社区里,我们都是平等的参与者。自然,我们没有人力资源部门,也没有专门负责确保基础设施有人维护的机构。
It's not because like the Bitcoin Core company hired you to be the CMO and, you know, this guy to be the CTO and like Michael Saylor's the CEO or whatever. It's like we're all equal peers in this decentralized community of Bitcoin. And so, of course, naturally, like we don't have an HR department. We don't have like a, you know, a thing that is responsible for making sure there's people working on the infrastructure. Right?
因此我们必须要做的是寻找人才。比如乔纳斯·萨琴科开展许多教育项目,还有Btrust、比特币夏令营、Kala等计划。
Like and so basically what we have to do is we have to try to like find people. And so, know, like Jonas Sachenko does a lot of educational programs. There's Btrust. There's, Summer of Bitcoin. There's Kala.
例如Brink设有培训人才的奖学金项目。这也是我参加 conferences 的原因——为了结识那些只在GitHub或IRC上偶尔出现的人,然后邀请他们共同审查代码提交。因为没有人力资源部门来做这些。
Like Brink has a fellowship program where we try to train people. And, you know, I'll go to con like this is why I go to conferences so that I can meet people who I've, you know, only seen pop up a couple times on GitHub or on IRC. And I'm like, hey, like let's review PR together. Right? Because if I don't like there's no HR department.
对吧?我们都在共同探索,每个人都肩负着同等责任。
Right? We're all trying to figure this out together. We all have an equal responsibility.
我们正在尽自己的一份力。
We're doing our part.
你在听这个播客
You listening to this podcast
不需要这样
Don't need are to
对啊对啊。你也可以通过,比如说持有一定数量的统计数据来贡献,没人会为此向你收费,但确实会产生一些成本。
all yeah. Yeah. You can also just contribute by, you know, if if you hold a certain amount of stats, like nobody's charging you to do that, but there is a cost for it to go.
缴纳你的自愿税。
Pay your voluntary tax.
是的。别等着别人来收租金。别等着,你知道,我们每个人在这件事上都有平等的参与权。就像我说的,我开了这个播客,但我并没有任何额外权力。
Yeah. Like, don't wait for somebody to charge rent. Don't wait for, you know, like we we all have like an equal part to play in this. And like I said, I started this podcast. I don't have any extra power.
你可以去GitHub提交拉取请求,为比特币核心做贡献。这对任何人都是免费的,我鼓励你这么做。
Like you can come to GitHub and open a pull request and contribute to Bitcoin Core. It's free for anybody to do so, and I would encourage you to do that.
我要把这期节目命名为《格洛丽亚说比特币已崩盘,中本聪是个混蛋》。没错。这太精彩了。好吧。我今天真是学到了很多。
I'm gonna call this episode Gloria says Bitcoin is broke broken and Satoshi is a dick. Yeah. It was brilliant. Okay. I learned so I learned so much today.
我总是这样,但很快就会忘记。
I always do, but I'll forget it.
老兄,我感觉自己绕了太多弯路了。
Man, I feel like I meandered so much.
别担心。你想推广Brink吗?
Don't worry about it. Do you wanna pimp Brink?
哦,当然。来吧。Brink是个非营利组织。你可以给它捐抵税款项,至少美国纳税人是这样。Brink用这些钱资助比特币核心开发。
Oh, absolutely. Come on. So Brink's a nonprofit. You can make a tax deductible donation to it, at least as a US taxpayer. And Brink, uses that money to fund Bitcoin Core development.
我们特别关注安全性。所以我们有像Michael Ford和我这样的维护者。还有负责模糊测试的Nicholas,如果你对这个很感兴趣的话。我们还支付运行模糊测试和测试机器的基础设施费用。我们有个很棒的办公室,大家可以聚在一起工作。
We have a special focus on security. So we have maintainers like, Michael Ford and me. We have Nicholas who works on the fuzzing, if if you found that very interesting. We also pay for the infrastructure costs to run the machines that do the fuzzing and the testing. And we have this wonderful office where people come and and work together.
我们还制作OpTech通讯和OpTech回顾。很多人不知道这也是Brink的一部分。那些钱也会用到那里。是的,如果你不写代码,这是个很好的贡献方式。你可以选择捐款给Brink。
And we also produce the OpTech newsletter and the OpTech recap. A lot of people don't know that that's part of Rank. That money, you know, goes there too. And yeah, it's it's a great way to contribute if you do not write code. You can donate to Brink instead.
太棒了。富有的比特币玩家们,慷慨解囊支持Brink吧。Gloria,这真是太棒了。我就知道会是这样。
Amazing. Rich Bitcoiners, pee hand in your pocket, support Brink. Gloria, this is this is amazing. I know it would be.
谢谢邀请我。
Thank you for having me.
不客气。随时欢迎,我们一定会再合作的。继续加油。谢谢。
No. Any time, we will we will definitely do this again. Yeah. Keep going. Thank you.
太棒了。谢谢你。好了,来吧。Gloria简直酷毙了好吗?
Amazing. Thank you. Alright. Come on. How effing cool is Gloria?
我超爱这次合作。在非洲和她共处的时光太棒了。我知道她在播客上表现惊艳。所以很高兴她能加入我们阵营,而不是留在旧金山为谷歌工作。和她一起深入研究Mempool的比特币核心代码真是段美妙经历。本周我们终于要公布澳大利亚秘籍活动的日期了,记得保持关注。
Absolutely love this. Loved hanging out with her in Africa. I knew she was smashed on the podcast. So I was very glad to have her in our corner rather than over in San Fran working at Google as it was great digging into the wheeze of Mempool's Bitcoin Core with her. Now we will finally be dropping the date for cheat code Australia this week, so keep your eyes out for that.
希望今年晚些时候能在悉尼见到你们很多人。好了,感谢收听。如果对此事或任何其他问题有疑问,请随时联系我。邮箱是hello@whatbitcoindid.com。
I hope to see a bunch of you down in Sydney later this year. Alright. Thanks for listening. You got any questions about this or anything else, please do hit me up. It's hello at what bitcoin did dot com.
关于 Bayt 播客
Bayt 提供中文+原文双语音频和字幕,帮助你打破语言障碍,轻松听懂全球优质播客。