Zero Knowledge - 本·菲什谈蓄电池 封面

本·菲什谈蓄电池

Accumulators with Ben Fisch

本集简介

本周节目中,我们与斯坦福大学Dan Boneh应用密码学团队博士生Ben Fisch畅谈。对话深入探讨了累加器、默克尔树和向量承诺技术,并解读了他与Benedikt Bünz合著的论文《面向IOP与无状态区块链的累加器批处理技术》,同时探讨了RSA累加器在区块链领域的潜在应用场景。 以下往期节目可为本次访谈提供背景知识: 默克尔树 https://www.zeroknowledge.fm/57 多方计算 https://www.zeroknowledge.fm/60 节目中提及的核心概念与链接: 《面向IOP与无状态区块链的累加器批处理技术》 https://en.wikipedia.org/wiki/RSA_(cryptosystem) https://github.com/cambrian/accumulator https://medium.com/@chia.net/chia-vdf-competition-guide-5382e1f4bd39 感谢本期赞助商StarkWare StarkWare将于9月16日在特拉维夫举办StarkWare Sessions峰会,汇聚零知识证明研究领域顶尖学者与开发者,议题包括自托管交易、Layer1的STARK方案、STARK友好型哈希函数等前沿技术。 使用优惠码Zkpodcast可享门票8折 > https://starkware.co/starkware-sessions/ 支持我们: 推特关注@zeroknowledgefm 加入Telegram社群 支持我们的Gitcoin Grant 通过ZKPatreon赞助 或直接捐赠: ETH: 0xC0FFEE1B5083230a5154F55f253B6b6ae8F29B1a BTC: 1cafekGa3podM4fBxPSQc6RCEXQNTK8Zz ZEC: t1R2bujRF3Hzte9ALHpMJvY8t5kb9ut9SpQ

双语字幕

仅展示文本字幕,不包含中文音频;想边听边看,请使用 Bayt 播客 App。

Speaker 0

欢迎收听《零知识》播客,我们将带您探索区块链技术和去中心化网络的最新动态。

Welcome to Zero Knowledge, a podcast where we explore the latest in blockchain technology and the decentralized web.

Speaker 0

本节目由我安娜主持,

The show is hosted by me, Anna

Speaker 1

以及我弗雷德里克。

and me, Frederic.

Speaker 1

在本周的节目中,我们将与Ben Fish一起探讨他在RSA累加器方面的最新研究成果。

In this week's episode, episode we sit down with Ben Fish to talk about his recent work in RSA accumulators.

Speaker 1

我们将深入探讨这些技术,包括默克尔树、向量承诺及其在无状态客户端中的应用。

We dig into those, Merkle trees, vector commitments and their applications to stateless clients.

Speaker 0

在开始之前,我们要感谢本周的赞助商StarkWare。

Before we start, we want to say thank you to this week's sponsor, StarkWare.

Speaker 0

StarkWare将于9月16日在特拉维夫举办StarkWare技术研讨会。

StarkWare will be putting on the StarkWare sessions in Tel Aviv on September 16.

Speaker 0

本次活动将汇聚零知识证明领域最杰出的思想者,涵盖学术界和应用界的顶尖人才。

The event will be bringing together the brightest minds in the field of zero knowledge proofs from both academic and application arenas.

Speaker 0

主题包括自托管交易、面向第一层的Stark技术、Stark友好型哈希函数,以及其他利用Stark证明可以实现的酷炫功能。

Topics include self custodial trading, Starks for Layer one, Stark friendly hash functions, and other cool things you can do with Stark proofs.

Speaker 0

有趣的是:我本人将主持其中一个分会场。

Fun fact: I will actually be hosting one of the stages.

Speaker 0

所以如果你对这项激动人心的尖端技术感兴趣,请务必参加Starkware会议。

So if you're interested in this exciting, cutting edge tech, do join the Starkware sessions.

Speaker 0

或者提前一天来参加Stark入门工作坊,在那里你可以从零开始构建一个Stark证明器。

Or come a day early for the Stark one zero one workshop where you could actually build a Stark prover from scratch.

Speaker 0

使用优惠码ZK PODCAST可享受任何门票八折优惠。

Use the code ZK PODCAST to get 20% off any ticket.

Speaker 0

我们仅有约50个折扣名额,请尽快获取。

We have about 50 of these available, so get it fast.

Speaker 0

一如既往,详细信息请查看节目备注。

As always, info will be in the show notes.

Speaker 0

再次感谢Starkware对本播客的支持。

So again, thank you, Starkware, for supporting this podcast.

Speaker 0

现在请听我们对本·菲什的采访。

And now here's our interview with Ben Fish.

Speaker 0

今天我们邀请到了本·菲什,他是斯坦福大学的博士生,也是丹·博内特应用密码学小组的成员。

So today we're sitting with Ben Fish, who's a PhD student at Stanford and part of Dan Bonnet's Applied Cryptography Group.

Speaker 0

你好,本。

Hi, Ben.

Speaker 2

你好,安娜。

Hi, Anna.

Speaker 0

和往常一样,弗雷德里克也在场。

And as always, we're with Fredrik.

Speaker 1

大家好。

Hello.

Speaker 0

今天我们将讨论累加器,并希望能有机会谈谈本在RSA累加器论文和项目中的工作。

Today, we're going to be talking about accumulators and hopefully get a chance to touch on Ben's work working on the RSA accumulator paper and project.

Speaker 0

我们已经录制了几期节目,一期关于默克尔树,一期关于多方计算。

We have recorded a few episodes, one on Merkle trees, one on MPCs.

Speaker 0

在收听本期节目前,或许值得先听听那些内容,因为我们会涉及相关话题。

Those might be worth listening before you listen to this episode just because we're gonna be touching on those topics.

Speaker 0

但在开始之前,我想我们应该先对你做个简单介绍,了解最初是什么让你对密码学产生兴趣的。

But I think before we start in on that, we should probably have, you know, a bit of an intro to you and find out a little bit about what got you excited about cryptography in the first place.

Speaker 2

当然。

Sure.

Speaker 2

这要追溯到很久以前了。

That goes back quite a while.

Speaker 2

那时我还在读大三,主修数学,同时也涉猎一些计算机科学。

I was a junior in college and I was studying math and dabbling a little bit in computer science as well.

Speaker 2

我在以色列魏茨曼研究所实习时,跟着密码学家Mounin Ahrb做了些应用数学方面的暑期研究。

And I did an internship at the Weitzman Institute in Israel with this cryptographer, Mounin Ahrb, just to do some kind of applied math research over the summer.

Speaker 2

他恰好是位密码学家,我们一起做了些密码学相关的工作,从此我就迷上了密码学这个研究领域。

He happened to be a cryptographer and we did some work in cryptography and I guess I was hooked on cryptography as a research topic ever since.

Speaker 2

是啊,那已经是七年前的事了。

So yeah, that was already seven years ago.

Speaker 1

你是如何从从事密码学工作并沉浸在这个领域,过渡到现在所处的区块链领域的?或者说你其实并没有完全转型?

How did you bridge from like working on cryptography and just being in this world to like being in the blockchain space which you kind of are, of not?

Speaker 2

没错,可以说我现在确实深度涉足区块链领域,因为目前我所有的研究似乎都围绕着区块链应用展开,不过这个转型过程确实经历了一段时间的反复。

Right, so yeah I would say right now I'm very much in the blockchain space because even now all of my research seems to be centered around applications to blockchain, but it did take a while going in and out.

Speaker 2

事实上,在我最初从事密码学研究的实习期间,我们就曾将比特币作为潜在研究课题进行探讨,那还是2012年,当时几乎没有研究人员真正关注比特币。

In fact, in that first internship I did doing research in cryptography, we were looking into Bitcoin as a potential research topic, this was back in 2012 when few researchers were actually looking at Bitcoin.

Speaker 2

我们当时做了一些分析,研究了比特币网络的图谱结构,但最终我却把精力集中在了实习期间的其他问题上,直到后来开始研究比特币矿池才重新关注比特币。

We did some analysis there, we were looking at doing some graph analysis of the Bitcoin network, But I really ended up focusing on on on other problems in that internship and didn't really return, to ever looking at Bitcoin again until, I started doing work on Bitcoin mining pools.

Speaker 2

那是我住在纽约的时候,与康奈尔理工学院的拉斐尔·帕斯和阿比·沙拉特合作期间。

That was when I was living in New York, was working with Rafael Pass from Cornell Tech and Abhi Shalat.

Speaker 2

我们主要试图从理论上解释什么是最优的矿池策略。

And we were looking at basically trying to explain what is the optimal mining pool.

Speaker 2

比特币中存在如此多不同的矿池策略。

There's so many different mining pool strategies in Bitcoin.

Speaker 2

在给定矿工风险偏好的前提下,我们能对矿工应该采取何种矿池策略得出什么结论?

What can you say about what, you know, given some assumptions about the risk profile of a miner, what mining pool strategy should they take?

Speaker 2

我想那是我重新进入区块链研究的契机,在斯坦福,Dan Bonnet的团队专门研究可应用于区块链领域的密码学工具,那时我开始研究可验证延迟函数,后来这成为了一个重要方向。

And I guess that was my gateway back into working on research on blockchains and here at Stanford, Dan Bonnet's group does a lot of work on specifically cryptography tools that can be applied in the blockchain space and that was when I started working on verifiable delay functions which became a big thing.

Speaker 2

我参与Filecoin是因为在研究空间证明和复制证明,特别是能实际存储有用数据的实用空间证明,这构成了Filecoin的基础。之后我持续研究更多应用于区块链的密码学课题,现在更关注如何用零知识证明在区块链中平衡隐私与透明性。

I got involved with Filecoin because I was working on proofs of space and proofs of replication, useful proofs of space, proofs of space where that you can use to actually store useful data which is the basis of Filecoin and from there I just kept on working on more topics in cryptography as applied to blockchain and right now I'm more interested in using zero knowledge to balance privacy and transparency in blockchains.

Speaker 0

在我们深入讨论这些项目之前,我还是想回到最初的问题:密码学中到底是什么让你感到兴奋?

Before we go more into these projects, I still wanna go back to that original question of, like, what is it about cryptography that got you excited?

Speaker 0

因为虽然你进入这个领域的经历很精彩,但最初吸引你的是什么?

Because I think this is a great, like, bio of how you got into it, but what was it?

Speaker 0

比如,是因为它很有挑战性吗?

Like, why was it just because it was, like, challenging?

Speaker 0

Was it

Speaker 2

这是个好问题。

It's a good question.

Speaker 2

说实话,我认为最初进入密码学领域时,更多是出于对挑战的追求,研究人员往往都是这样。

I to be brutally honest, I think that when I first got into cryptography, it was more about the challenge and then that's often the case for researchers.

Speaker 2

我当时是数学系学生,这看起来像是数学的一个很酷的应用,仅此而已。

I was a math student and this seemed like a cool application of math and it wasn't really anything more than that.

Speaker 2

我认为我留在密码学领域的原因,是因为我享受并在我从事的项目中找到了更高层次的意义。同时我也被这样一个事实所吸引:我们在研究中开发的密码学技术与实际应用之间存在巨大差距。你知道,2012年我刚开始做研究时,那时区块链还没开始使用这么多花哨的密码学技术,零知识证明至少还没有什么知名应用案例。

I think the reason why I stayed in cryptography was because I enjoyed or found higher meaning in the projects that I was working on and I think I was also drawn to the fact that there seems to be such gap between how much of the cryptography that we have developed in research is actually used and you know, when I was working on research back in 2012, this was before blockchain started using a lot of fancy cryptography, and so there weren't really any, at least well known applications of zero knowledge.

Speaker 2

然而,这看起来就是如此强大的概念——你能在不透露任何额外信息的情况下证明任何你想证明的事情。

And yet, it just seems like such a powerful concept, the idea that you can, you know, prove anything without revealing details beyond what exactly you want to prove.

Speaker 2

所以这些非常优美且看似强大实用的概念当时却未被应用,这种反差本身就令人兴奋。我当时就预感到,在不久的将来(甚至就在我的职业生涯期间),密码学家们研究的许多东西会开始被越来越广泛地应用——这个预言后来确实成真了。

And so there are these really kind of beautiful concepts that seem to be very powerful and useful but weren't being used and there was something exciting about that being, I suspected that in short time, within, you know, my own career, a lot of the things that photographers were working on would start being used increasingly more and that actually came true.

Speaker 2

酷。

Cool.

Speaker 1

就像往常那些做很多酷炫项目的嘉宾一样,很难只聚焦一个话题来聊。

So as usual with guests that do a lot of cool stuff, it's hard to talk about one thing.

Speaker 1

我们和Benedict合作时也遇到同样问题——我每周都想请他回来讨论不同的工作项目。但现实不允许,我们必须限定讨论主题。这次节目我想深入探讨累加器,这是Anna之前组织过学习小组的内容,也是我们在往期节目中浅尝辄止的话题。或许我们可以从最简单的问题开始:什么是累加器?

We have the same problem with Benedict where I want him back every week to talk about a different thing that he's working on But we can't really do that, we have to define something to talk about and in this episode, I wanted to dig into accumulators and this is something that Anna has done a study group on before and it's something that we've touched on just barely in various previous episodes, maybe we just start out with a simple question, what is an accumulator?

Speaker 2

累加器其实就是集合的紧凑表示形式。

Well an accumulator is a compact representation of a set.

Speaker 2

最简单的理解方式是,如果你知道哈希函数是什么,那么哈希函数就像是为一个更大的文件生成指纹,也是一种对文件的承诺。它具有约束性,意味着如果我先给你哈希值再给你文件,那么我能提供的唯一匹配该哈希指纹的文件就是那个特定文件。

The easiest way to think of it is if you know what a hash function is, right, then a hash function kind of gives a fingerprint for a much larger file and it's commitment, it's also called a commitment to the file, it's binding in the sense that if I give you the file after giving you the hash, there's only one unique file that I can give you that will match that hash, that fingerprint.

Speaker 2

而累加器则更进一步,它能让你验证集合中的单个项目是否匹配你收到的小指纹。

An accumulator allows you to go further than that and be able to give you individual items in a set, and you would be able to verify that those items match that small fingerprint that you were given.

Speaker 2

你不需要一次性获取集合中的所有项目就能进行验证。

You don't have to be given all the items in a set at once in order to verify that.

Speaker 0

这大致就是累加器的定义,但它听起来很像我们许多听众熟悉的默克尔树的定义。

And that's the general sort of definition of accumulator, but it also sounds a lot like a definition that a lot of our listeners will know, which is that of a Merkle tree.

Speaker 0

确实如此。

Absolutely.

Speaker 0

那么默克尔树算是一种累加器吗?

So is a Merkle tree an accumulator?

Speaker 2

默克尔树绝对是累加器的一个实例。

A Merkle tree is definitely an example of an accumulator.

Speaker 2

不过有个吹毛求疵的定义细节:如果你与密码学家交流或查阅累加器相关文献,会发现累加器有时被定义为具有恒定大小的见证,而默克尔树的见证大小是对数级的。

There's one, you know, minor nitpicky definitional thing that if you talk to cryptographers or look at the literature on accumulators, accumulators are sometimes defined to have constant size witnesses, and Merkle trees have logarithmic size witnesses.

Speaker 2

但我认为从更灵活的角度来看,默克尔树确实是一种累加器,只是其见证(witness)规模稍大——我们可以深入讨论这些术语的具体含义——相比其他类型的累加器(如RSA累加器),它们的见证规模确实更大些。

But I would say in more flexible view of accumulators, Merkle trees are definitely an accumulator, just with slightly larger and we can get into what these different terms are called, but those have slightly larger, what's called a witness than, say other types of accumulators like RSA accumulators.

Speaker 0

所以它们属于同一家族,但当你使用'累加器'这个术语时,实际上指的是另一类东西吗?

So they're sort of like related in the same family, but when you use the term accumulators, are you actually kind of talking about something else?

Speaker 0

就像你刚才提到的,累加器是否必须具有固定大小的见证?

Like, do accumulators also have their own, like you just said, it needs to have a constant size witness?

Speaker 2

没错,回到我对累加器的基础解释:当我声称给出累加器状态承诺(对于默克尔树而言就是默克尔树根)后,我可以给你一个集合中的元素及其见证,这个见证能证明该元素与我给出的状态承诺一致。

Yeah, so the witness, going back to my very basic explanation of what an accumulator is, when I claim that after giving you what's called the accumulator state commitment, which in the case of Merkle trees is the Merkle tree root, okay, then I can give you an item which is in the set and a witness which is a proof that that item is actually consistent with the state commitment that I gave you.

Speaker 2

默克尔树会给你一个默克尔分支(Merkle branch),作为树中叶节点的见证,你可以用默克尔根来验证它。

Merkle trees will be giving you a Merkle branch, which is the witness for a leaf of the Merkle tree, and you can verify that against the Merkle root.

Speaker 2

默克尔树是累加器的实例,我们使用'累加器'这个术语是因为它能解释这类抽象概念更广泛的潜在构造空间。

Merkle trees are examples of accumulators, the only reason why we use the term accumulator is because it explains a more general potential space of constructions of this abstract concept.

Speaker 2

因此存在见证更小的累加器(即固定大小的见证),而默克尔树的见证大小是对数级的。

And so there are accumulators that have smaller witnesses, namely constant size witnesses, whereas Merkle trees have logarithmic size witnesses.

Speaker 2

默克尔树实际上不仅是累加器,还是向量承诺(vector commitments),这个我们也可以讨论。

Merkle trees are actually more than accumulators, they're vector commitments and we can talk about that too.

Speaker 1

是的,我很好奇,我们应该回到这一点,讨论像见证大小、承诺大小、存储大小等不同属性,它们有何区别,为什么你会选择使用其中一种而非另一种,因为我认为这能更清楚地说明差异所在或何时需要哪种类型。

Yeah, I'm curious, we should get back to this point of the different like properties like witness size, commitment size, storage size, like how they differ, why you would want to use one or the other cause I think that sort of clarifies what the difference is or when you would want one or the other.

Speaker 1

稍微回顾一下定义和文献,当你阅读这个话题时,会遇到动态累加器、通用累加器、批量处理、聚合证明和见证等概念。

Going back a little bit to definitions and literature, like when you read on this topic, you will come across things like dynamic accumulators, universal accumulators, batching, aggregating proofs, witnesses.

Speaker 1

我们或许可以从这里开始,比如动态累加器和通用累加器有什么区别?

Let's maybe start, like what's the difference between a dynamic and universal accumulator?

Speaker 2

嗯,动态累加器其实是通用累加器的一个子集。

Well dynamic, I mean a dynamic accumulator is subset of universal accumulators.

Speaker 2

动态性指的是能够更新累加器所承诺的集合的能力。

So dynamic refers to the ability to update the set that the accumulator commits to.

Speaker 2

这可以是向集合中添加元素,然后更新你已给出的状态承诺,对吧?

So this could be adding elements to that set and then updating the state commitment that you've given, right?

Speaker 2

所以回到具体例子总是比较容易的。

So it's always easy to go back to a concrete example.

Speaker 2

以Merkle树为例,如果你有一个Merkle树的根节点,而我向Merkle树中添加一个元素,有没有办法让你能自行更新Merkle树的根节点呢?

So in the Merkle tree example, if you have the root of a Merkle tree, and I add an element to the Merkle tree, is there a way for me to have you, you know, can I, for you to be able to update the root of the Merkle tree on your own?

Speaker 2

使累加器动态化的一种简单方法是重新计算整个根节点。

A trivial way to make an accumulated dynamic would be to just redo the entire computation of the root.

Speaker 2

这不会被视作动态累加器。

That would not be considered a dynamic accumulator.

Speaker 2

动态累加器特指仅持有累加器根节点时,存在某种方式可以高效更新,而无需从头开始重新构建整个累加器。

A dynamic accumulator specifically means that there's some way that you holding only the root of the accumulator can perform an efficient update without having to redo all the work that you did in the first place, building the accumulator from scratch.

Speaker 0

这种变更通常是修改某个叶节点的值,还是改变路径?

Is that usually, that change, is that usually like changing the value of one of the leafs or is it changing the path?

Speaker 2

修改叶节点值可视为元素的添加与删除。

Changing the value of one of the leafs could be viewed as an addition and deletion of an element.

Speaker 0

所以那

So that

Speaker 2

会是,你需要

would be, you would

Speaker 0

一个动态的,或者说它应该属于动态累加器范畴。

need a dynamic, or it would sort of fall under the dynamic accumulator.

Speaker 2

没错,在动态累加器的具体实例中,顺便说一下,Merkle树可以被动态化。

Right, in any specific example of a dynamic accumulator, Merkle trees by the way can be made dynamic.

Speaker 2

根据累加器的具体实现方式,可能存在比先添加再删除更高效的方式来更新集合中的特定元素。

Depending on your particular instantiation of the accumulator, there may be a much more efficient way to update a particular element in the set than performing an add and then a delete.

Speaker 2

但是,动态累加器的定义只是说,我们可以执行添加和删除操作,这至少在理论上也涵盖了更新的情况。

But, the definition of a dynamic accumulator is just saying that, okay, we can form adds, can perform deletes, that handles the case of updates as well, at least in a theoretical sense.

Speaker 1

那么通用累加器是什么?

And a universal one is what?

Speaker 2

对,通用累加器是动态的,但它们还同时支持成员资格和非成员资格的见证。

Right, so universal accumulators are dynamic but they also support both membership and non membership witnesses.

Speaker 2

这是另一个概念,我们一直在讨论成员资格见证,比如Merkle分支证明某个叶子元素在Merkle树中,但你可能还想证明某物不在你的集合中,不在你的Merkle树中,这就是所谓的非成员资格证明。

So this is another thing, we've been talking about membership witnesses, are like Merkel branches that prove that a leaf element is in the Merkle tree, you also might want to give a proof that something is not in your set, right, not in your Merkle tree, and that's called a non membership proof.

Speaker 2

允许同时进行非成员资格和成员资格证明且具有动态性的累加器基本上是通用的,它们无所不能,因此被称为通用累加器。

Accumulators which allow for both non membership and membership proofs and are dynamic are basically universal, they do everything, that's why they're called universal.

Speaker 1

是的。

Yeah.

Speaker 1

我最初作为区块链软件开发者的背景,让我对Merkle树世界非常熟悉。当我开始阅读和研究累加器时,发现非成员证明这种东西存在时,我简直不敢相信。

Originally my background as a developer on like blockchain software, I come very much from like the Merkle Tree world and I knew Merkle Trees intimately and then when I started reading and studying accumulators and found out that like non membership proofs are a thing, I was like, wait, really?

Speaker 1

你居然可以拥有这种东西,可以证明某物不存在,我觉得这真的很酷。

You can have that, you can have something that where you can prove like non existence and I think, I think that's pretty cool.

Speaker 2

没错,实际上用Merkle树就能实现。,典型的做法是维护一个叶子节点有序排列的Merkle树,然后通过找到两个比待证明元素大和小的相邻元素,并证明它们都在树中且相邻,来证明某物不在集合中。

Yeah, you can even do it with, basically Merkle trees, the typical way of doing it with a Merkle tree is maintaining a Merkle tree of sorted elements at the leaves then being able you can prove that something is not in the set by basically showing that you find two elements which are both greater and lesser than the elements that you're trying to prove is not in the set and you prove that both of them are in the tree and adjacent.

Speaker 2

因此只要保持叶子节点元素有序排列这个不变性,你就具备了提供非成员证明的能力。

And so that shows that as long as there's this invariant that all of the elements of the leaves are maintained in the right order, you do have the capability of giving non membership proofs.

Speaker 1

这很酷。

That's cool.

Speaker 1

你怎么证明它们是相邻的?

How do you prove that they're adjacent?

Speaker 2

嗯,Merkle树的所有叶子都有索引。

Well, all the leaves of the Merkle tree have indices and so this is the other thing that Merkle trees are actually

Speaker 1

所以你实际上是在布置路径,是的。

So you're actually laying out the paths, yeah.

Speaker 2

没错,所以这就是为什么我说默克尔树实际上比普通的累加器更强大。

Yeah, so this is why Merkle trees I said are actually more powerful than your average accumulator.

Speaker 2

它们是向量承诺,因为它们不仅绑定到集合,还绑定到集合中元素的位置。

They're vector commitments because they not only are binding to the set, they're binding to the position of elements within the set.

Speaker 2

你可以证明这是集合中特定位置的元素。

You can show that this is an element in the set at this particular position.

Speaker 2

换句话说,这是向量的第I个元素。

In other words, this is the I th element of this vector.

Speaker 0

这实际上赋予了它们在某些情境下能够定义非成员见证的特性,或者说你确实能做到,是的,这很酷。

And this actually gives them the quality of, at least in certain contexts, being able to define a non member witness, or like you were able to actually, yes, that's cool.

Speaker 2

没错,但支持非成员见证并不一定要成为向量承诺。

That's right, but it's not necessary to be a vector commitment in order to support non membership witnesses.

Speaker 2

RSA累加器就不是向量承诺,所以它们不是位置绑定的累加器。

So RSA accumulators are not vector commitments, so they're not position binding accumulators.

Speaker 2

然而,使用RSA累加器确实可以给出非成员证明和成员证明,是的。

However, it is possible to give non membership proofs and membership proofs with RSA accumulators, yeah.

Speaker 2

所以这完全取决于具体的构造方式。

So it all depends on the particulars of the construction.

Speaker 0

我们刚刚讨论了动态累加器是通用累加器的一个子集,但我猜也存在相反的情况,对吧?

So we've just talked about the dynamic accumulators being sort of like a subset of the universal, but I'm guessing there's also like the opposite, right?

Speaker 0

或者说,什么是不通用的累加器?

Or like, what's an accumulator that isn't universal?

Speaker 2

通用性应该是个包容性术语,对吧?

So universal is I guess an inclusive term, right?

Speaker 2

非通用累加器可能在某一方面特别出色,比如特别擅长成员证明或非成员证明,但不能同时支持两者;或者它们在支持添加操作的意义上是动态的,但不支持删除操作。

So accumulators which are not universal might be really good at one of these things, like really good at membership proofs or non membership proofs but don't support both, or they are dynamic in the sense that they support ads but they don't support deletes.

Speaker 2

可能有充分理由构建一个非通用累加器,它在某一方面特别出色,但不能同时完成所有功能。

There may be good reason to construct a non universal accumulator that's really good at one of these things but doesn't do all of them at once.

Speaker 1

在深入讨论具体细节前,最后我想提两点:批处理和聚合的概念,因为这与你稍后我们将讨论的论文相关,也可能属于累加器工作原理研究中较为前沿的课题。

Last two things that I just wanna touch on before we talk a little bit more specifics is the concepts of batching and aggregating because that's sort of relevant to your paper that we will talk about later and it's also a little bit maybe on the more forefront of research y topics in how accumulators work.

Speaker 1

那么什么是批处理和聚合证明呢?

So what is batching and aggregating proofs?

Speaker 2

我认为最好的解释方式可能是再次回到默克尔树的具体例子。

I think the best way to explain this is maybe to go again back to the concrete example of a Merkle tree.

Speaker 2

默克尔树既不进行批处理也不进行聚合。

So Merkle trees do not batch or aggregate.

Speaker 2

当你证明某个元素被包含在默克尔树中时,你需要提供该元素的默克尔分支或默克尔证明。如果要证明两个不同元素都在树中,就需要提供两个不同的默克尔分支作为证明,以此类推。

When you prove that a particular element is committed in the Merkle tree, you give a Merkle branch for that element or a Merkle proof, and if you want to prove that two different elements are in the Merkle tree, then you'll have to give two different Merkle branches as proofs, and so on and so forth.

Speaker 2

如果要证明100个元素都在树中,就需要提供100个不同的默克尔证明,这些证明的规模基本上是线性增长的。

If you're proving 100 elements are in the tree, then you have to give 100 different Merkle proofs, and the size of this proof, basically grows linearly.

Speaker 2

你可能会注意到,如果默克尔树中的元素彼此非常接近,那么这些证明会有部分重叠,这样能获得一些微小的节省,对吧?

Now, you might observe that if the elements in the Merkle tree are very close to each other, then some of these proofs overlap, so you may get some minor savings, right?

Speaker 2

假设要证明某个子树前100个叶节点元素的包含性,这时确实能获得某些平摊效应——最终的证明规模不会严格等于单个元素证明的100倍。

Let's say that they're proving inclusion of the elements at the leaves of some subtree, say like the first 100 elements, then you do get some amortization, effects where you're not giving a proof which is exactly 100 times the size of proving that one element is in there.

Speaker 2

但总体来说,这些默克尔证明的聚合效果并不理想。

But in general, these marker proofs you can observe do not aggregate very well.

Speaker 2

所谓聚合,本质上是指我们可以将多个特定规模的独立证明,合并成一个更紧凑的单一证明来覆盖所有原始证明。

So aggregation is basically saying that we can take a bunch of individual proofs of a given size and combine them together into a more compact single proof that covers all the original proofs.

Speaker 0

那么批处理和聚合在这里是同一个术语吗?

Are batching and aggregating the same term here then?

Speaker 2

准确来说,它们不是同一个概念。

So to be precise, they are not.

Speaker 2

批处理和聚合有不同的用途,不同研究者对何时使用批处理术语、何时使用聚合术语有各自的强烈观点。但一般来说,聚合指的是将多个现有证明合并成一个更小的证明,而批处理可以指更高效地生成大量证明、验证大量证明,甚至创建——这里我可能与其他研究者的观点有所不同——但我认为批处理可以用来指代从头创建一个单一证明来验证大量小证明的行为,这种证明不仅在生成过程中更高效(计算效率),而且最终得到的证明体积可能也更小。

There's different uses of, you know, batching and aggregation and I guess different researchers have different strong opinions on when you should use the term batching and when you should use the term aggregation, But generally, like aggregation refers to taking a bunch of existing proofs and combining them into a smaller proof, whereas a batching could refer to the action of generating a large set of proofs more efficiently or verifying a large set of proofs more efficiently or even creating, and I would say this is maybe where I would defer from other researchers, but I think that batching can be used to refer to the action of creating from scratch a single proof for proving a whole bunch of smaller proofs that is more efficient not only in the action of generating it, so the computational efficiency but also perhaps in the size of the proof that you end up with at the end.

Speaker 1

这也是我的理解,不过可能因为我主要阅读的是你的研究。

That was my understanding as well but maybe that's because I've read mostly your research.

Speaker 1

不过没错,批处理就是我想要证明这100个项目的成员资格,然后提供一个证明,就像你为那100个项目生成一个证明那样,而聚合则是你先生成100个证明

But yeah, so batching being I want to prove membership of these 100 items and here's one proof like you generate that one proof for those 100 items whereas aggregating is you generate a 100 proofs

Speaker 2

然后事后将它们合并起来。

and then after the fact you combine them.

Speaker 2

虽然,是的,虽然有些研究者会说聚合应该,批处理应该只用于指代效率,即你最终创建了100个证明,但你只是在这个过程中更高效地创建了它们,对吧。

Although, yeah, although some researchers would say that aggregation should, batching should only be used for referring to efficiency, that you create 100 proofs in the end, but you just create them more efficiently in this Right.

Speaker 2

批量生成过程。

Batch generation process.

Speaker 2

对我来说直观上,我喜欢聚合是拿现有东西进行组合这个概念,而批处理则是从一开始就能说,我要证明这100件不同的事情。

Intuitively to me, I I like the idea that aggregation is taking existing things and combining them, and batching is saying that from scratch, being able to say, I wanna prove these a 100 different things.

Speaker 2

我不需要给你100个不同的证明。

I don't need to give you a 100 different proofs.

Speaker 2

我可以给你一个超级高效的证明,我可以说要么更高效地创建它,要么让它变得更小,但我从一开始就在这样做。

I can give you a super efficient proof that I can say either create more efficiently or make it smaller, but I'm doing it from scratch.

Speaker 2

这个我会称之为批处理而非聚合。

And that I would call batching rather than aggregation.

Speaker 0

我觉得你在描述默克尔树时,你提到一个术语和成员见证是同一个概念,但你在那里称它为默克尔分支。

I think you've like, in your description of Merkle trees, you just sort of mentioned you you basically used a term that is the same term as membership witness, but there you called it the Merkle branch.

Speaker 0

我们是这样称呼它吗?

Is that what we call it?

Speaker 0

默克尔分支就是成员见证吗?

Like the Merkle branch is a membership witness?

Speaker 0

在默克尔树中?

Well In a Merkle tree?

Speaker 2

有时候确实会这么称呼它,是的。

It's sometimes referred to as that, yeah.

Speaker 2

基本上,通过追踪从根节点延伸到该叶节点的分支路径,就能构建出特定叶节点项目的实际证明。

And basically the actual proof of a given leaf at the item is constructed by following the branch that extends from the root to that leaf.

Speaker 2

而且实际上,你提供的并不是从根节点到叶节点路径上的那些节点,而是这些节点各自的相邻节点,对吧?

And then also, actually you don't provide the nodes on that path from root to leaf, provide the adjacent nodes to each of those nodes, right?

Speaker 2

你提供的这组项目就可以被称为默克尔分支。

That collection of items that you give could be referred to as a Merkle branch.

Speaker 0

或者叫成员见证。

Or a membership witness.

Speaker 2

或者叫成员见证,没错。

Or a membership witness, right.

Speaker 0

在默克尔树中的。

Of a Merkle tree.

Speaker 1

所以我想讨论的最后一个定义要点,因为当我们讨论累加器时,特别是RSA累加器,这个概念也经常出现,那就是未知阶群。

So the last point of definition that I wanna cover, because this also pops up kind of everywhere when we're talking about accumulators, particularly RSA accumulators and that is groups of unknown order.

Speaker 1

什么是未知阶群?

What are groups of unknown order?

Speaker 1

听起来像是个非常神秘的术语。

Sounds like a very mystical term.

Speaker 2

它们就是阶数未知的群。

They're groups for which you do not know their order.

Speaker 2

不。

No.

Speaker 2

这里是非常字面的术语。

Very literal term here.

Speaker 2

首先,你有一个有限群,基本上,群是有数学定义的。

So so first, you have a finite group and basically, I mean groups have a mathematical definition.

Speaker 2

我们不需要深入讨论群的全部定义。

We don't need to get into the full definition of a group.

Speaker 2

我认为讨论有限群的例子更有用,对吧?

I think it's more useful to talk about examples of finite groups, right?

Speaker 2

群的一个关键性质是,你可以对群元素执行某种运算,且该运算在群内是封闭的。

So one of the key properties of a group is that you have some operation that you perform on the elements of the group and the group is closed under that operation.

Speaker 2

还有其他性质,比如可逆性。

There's other properties as well such as inversion.

Speaker 2

让我们以整数为例来具体说明。

So let's talk about a concrete example like integers.

Speaker 2

整数在加法运算下构成一个群。

The integers are a group under addition.

Speaker 2

任意两个整数相加,结果仍是整数。

You take any two integers, you can add them together, you get another integer.

Speaker 2

与之对应的逆运算是减法,整数不是有限群,而是无限大的群。

There's an inverse operation to that, which is subtraction, and the integers are not a finite group, they're an infinitely large group.

Speaker 2

整数有无限多个。

There's infinitely many integers.

Speaker 2

如果不断将整数相加,你可以得到越来越大的整数。

If you keep adding integers to each other, you're you could get ever larger integers.

Speaker 2

现在如果你观察整数模n的情况,讨论模n加法时,你就在处理一个有限群。

Now if you look at the integers modulo n, now you're talking and you talk about addition modulo n, now you're in a finite group.

Speaker 2

选择一个数n,整数模n恰好有n个元素。

Pick a number n and there's exactly n elements in the integers modulo n.

Speaker 2

我们通过构造方式大致知道这个群的阶数。

We know the order of that group kind of by construction.

Speaker 2

你可以讨论稍有不同的群,比如模n乘法群。

You can talk about slightly different groups such as multiplication modulo n, okay.

Speaker 2

现在我们不是把数字相加再取模n的余数,而是将整数相乘后再模n约简。

So now we're not looking at adding numbers together and finding the remainder mod n, we're talking about multiplying integers together and then reducing mod n.

Speaker 2

这个群的大小很大程度上取决于你选择的n值。

And the size of that group depends very much on the n that you pick.

Speaker 2

如果n是素数,那么这个群恰好有p减一个元素。

So if n is prime, then there's exactly p minus one elements, in this group.

Speaker 2

但如果选择不同的n,通常群的大小会是欧拉函数φ(n)。

But if you choose n differently, then in general the size of the group will be phi.

Speaker 2

φ(phi)是一个可以通过n的因数分解计算得出的值。

Phi is something that you can compute knowing the factorization of n.

Speaker 2

例如,如果n等于两个质数的乘积,即n=p×q,那么φ(n)就等于(p-1)×(q-1)。

So if n is equal to, for example, if n is equal to a product of two primes, if n is equal to p times q, then phi of n will be p minus one times q minus one.

Speaker 2

如果你不知道n的因数分解,计算φ(n)会非常困难,或者说至少与分解n的难度相当。

If you don't know the factorization of n it's very hard to compute phi of n, or at least it's as hard as computing the factorization of n.

Speaker 2

RSA算法之所以能在阶数未知的群中运作,是因为它工作在整数乘法模n n 的, 其中n factorial 的群中,且n的因数分解是未知的。

RSA works in groups of unknown order because it works in a group of where, you know, you're doing integer multiplication mod n and the factorization of n is not known.

Speaker 1

所以,群的阶数就是指这个群里有多少个元素,对吗?

So yeah, the order of the group is how many elements are in that group, is that right?

Speaker 2

是的,没错。

Yes, that's right.

Speaker 1

在乘法模n的情况下,这取决于这两个质数。

And in the case of multiplication modulo n, it depends on these two primes.

Speaker 1

我想任何研究过RSA RSA加密的人都会熟悉这一点,因为这是他们所谓的陷门函数的一部分。

And I think anyone who's looked into RSA crypto and is familiar with this as it's part of their like trapdoor function stuff.

Speaker 1

那么这就是为什么它们被称为RSA累加器吗?因为它们基于两个素数相乘的相同假设?

And so is this why they're called RSA accumulators because they are based on the same assumption of multiplication of two primes?

Speaker 2

是的,之所以称为RSA累加器,是因为通常它们使用RSA群作为未知阶群来实例化。

Yes, they're called RSA accumulators because typically they're instantiated using the RSA group as the group of unknown order.

Speaker 2

但我们在论文中讨论的一个观点是,你也可以使用其他未知阶群。

But one of the points that we discuss in our paper is that you could use other groups of unknown order as well.

Speaker 2

你不需要局限于RSA群,事实上在其他未知阶群中还有优势,比如不需要进行可信设置,这个我们稍后再详细讨论。

You don't need to restrict yourself to the RSA group and in fact in other groups of unknown order there's benefits such as not having to do a trusted setup, but we can get into that a little bit later.

Speaker 0

RSA代表什么?

What does RSA stand for?

Speaker 2

RSA算法的发明者。

The authors of RSA.

Speaker 2

好的。

Okay.

Speaker 2

即Ron Vest(罗恩·李维斯特)、Adi Shamir(阿迪·萨莫尔)和Leonard Adelman(伦纳德·阿德曼)。

So Ron Vest, Adi Shamir, Leonard Adelman.

Speaker 2

对。

Yeah.

Speaker 2

明白了。

Got it.

Speaker 1

这个冷知识我之前还真不知道。

This was a point of trivia that I didn't actually know.

Speaker 1

有个叫RSA实验室的机构。

There is this thing called RSA Laboratories.

Speaker 1

对吧。

Right.

Speaker 1

我其实不太清楚RSA实验室是什么或者做什么的。

I don't actually know what RSA Laboratories is or does.

Speaker 1

是他们创立的公司吗?

Is it a company that they started?

Speaker 2

我想是的,没错,曾经有家叫RSA的公司,我想他们参与了这家公司的创立,也推动了RSA加密在业界的应用。

I think so, yeah, so there was a company RSA, you know, that was I think and they were involved in the founding of this company as well that pushed forward the industry adoption of RSA encryption.

Speaker 2

RSA实验室和RSA公司是同一家机构吗?

Is RSA laboratories the same as the RSA company?

Speaker 2

我不是

I'm not

Speaker 1

确定。

sure.

Speaker 1

我也不完全确定,我不能断言,但确实是你提到的发布这些RSA群组的公司。

I'm not entirely sure either, I couldn't say but it is this company that publishes these RSA groups that you mentioned.

Speaker 1

所以,如果你在使用这些群组,某种程度上你需要信任这家公司,或者自己构建群组。

So, you kind of need to trust this company if you're using these groups or you construct your own.

Speaker 2

没错,我的意思是,我们知道有办法解决这个问题,你可以通过多方计算构建一个RSA群组,就像Zcash在他们的可信设置中采用多方计算一样,你也可以用这种方式建立RSA群组。

Right, I mean, is we know ways around this, you can construct an RSA group where using multi party computation, right, the same way that Zcash computation for their trusted setup, you could use a multi party computation to establish the RSA group.

Speaker 1

在我们深入探讨RSA累加器之前,或许我们应该先简单介绍下什么是向量承诺?

Before we dig too deep into RSA accumulators particularly, maybe we cover just slightly what are vector commitments?

Speaker 1

我们之前提到过这些,它们在这个体系中扮演什么角色?

We've mentioned these already, how do they fit into this story?

Speaker 2

向量承诺与累加器类似,但它们是位置性承诺,意味着我有一系列项目,然后可以证明该列表中的第i个项目已被向量承诺状态承诺所包含。

So vector commitments are similar to accumulators but they're positional commitments, meaning that I have list of items and then I can prove that the I th item of this list was committed to by the vector commitment state commitment.

Speaker 2

因此它非常类似于累加器,你有一个状态承诺,但我可以提供向量承诺的开放证明,证明特定项目位于向量的特定位置。

So it's very similar to an accumulator where you have state commitment but the state commitment I can give you vector commitment opening proofs, and it proves that a particular item is at a particular position of the vector.

Speaker 1

所以如果是有序的,默克尔树也可以作为向量承诺。但比如以太坊的默克尔树就仍然是累加器而非向量承诺,因为它没有排序。

So a Merkle tree could be a vector commitment as well if it's sorted, But, like, the Ethereum Merkle tree wouldn't be it would still be an accumulator, but not a vector commitment because it's not sorted.

Speaker 2

不。

No.

Speaker 2

实际上,默克尔树本身就是向量承诺,无需对叶子节点排序,因为我可以向你证明第i个叶子节点具有某个特定值。

Actually, the the Merkle tree is just, it's a vector commitment already without having the the the leaves sorted because I can prove to you that the I th leaf has this value.

Speaker 2

所以叶子节点是否按某种排序标准排列并不重要,重要的是我能证明树中任意位置的叶子节点是什么。

So it doesn't matter that the leaves are sorted according to some ordering criteria, right, it just matters that I can prove to you what is the leaf at any given position of the tree.

Speaker 2

这就使它成为向量承诺。

So that makes it a vector commitment.

Speaker 1

我明白了。

I see.

Speaker 1

其他向量承诺的例子有哪些?

What would be an example of other vector commitments?

Speaker 2

实际上我们在论文中构建了一种不同类型的向量承诺。

So we actually construct a different kind of vector commitment in our paper.

Speaker 2

其他向量承诺——我的意思是,虽然存在其他类型的向量承诺,但在播客中详细解释它们的工作原理可能有些挑战性。我认为最容易解释的可能是我们论文中实现的那种,因为它本质上是利用累加器来构建向量承诺。

There other vector I mean there's other vector commitments I think would be a little bit challenging to go into the details of how they work over the podcast but I think that actually maybe the easiest vector commitment to explain is the one that we do in our paper because it's basically using an accumulator to construct a vector command.

Speaker 2

首先想象一个所有元素仅为0或1的向量,也就是比特向量,对吧?

Think first about just a vector where all the elements are just zero or one, so like a bit vector, right?

Speaker 2

我需要能够向你证明这个比特向量的第I位是0,或者证明它是1,明白吗?

And I want to be able to prove to you that the I th bit of this bit vector is zero or I want to be able to prove to you that it's one, right?

Speaker 2

你需要对分割因子有某种状态承诺。

And you have some kind of state commitment to the split factor.

Speaker 2

我们的做法是:构建一个累加所有值为1的索引的累加器。如果能提供该累加器中的包含证明和非包含证明,那么本质上告诉你这个向量第I位是0还是1,就等同于告诉你第I个索引是否被包含在这个记录所有值为1的索引的累加器中。

So what we can do is we can say that well let's build an accumulator that accumulates all the indices that are one, then if we are able to give inclusion proofs and non inclusion proofs in that accumulator, then basically telling you whether the I th bit of this vector is either zero or one is the same as telling you whether the ith index is included in the accumulator that commits to all the indices which are one, or not included in the accumulator.

Speaker 2

如果是1,则该索引应被包含在累加器中;如果是0,则第I个索引不应被包含在累加器中。

If it's a one, then it should be included in the accumulator, and if it's a zero, then that ith index should not be included in the accumulator.

Speaker 2

如果要在每个索引值大于1的向量上构建向量承诺,这种方法实际上效率并不高。

That wouldn't really give you an efficient vector commitment if you wanted to build vector commitments on on, where the the the values at each index are larger than one.

Speaker 2

对吧?

Right?

Speaker 2

假设你需要构建一个向量承诺,其中每个索引可以存储256位的值,那么如果按位处理,我就需要为每个位单独提供256个包含性和非包含性证明。

So let's say you wanted to have, vector commitments where you could have, like, a 256 bit value at any given index, then I'd have to give you two fifty six individual inclusion and non inclusion proofs of each of those bits if I did it bitwise.

Speaker 2

我们论文中批处理和聚合技术的精妙之处——实际上也是主要理论动机——就是能够构建这种向量承诺,让你可以通过一个紧凑证明来验证这256个不同的位。

The beautiful thing about the batching and aggregation techniques of our paper, in fact the main theoretical motivation, was to be able to build this vector commitment which allows you to prove those two fifty six different bits all in one compact proof.

Speaker 2

因此我基本上会提供一个紧凑证明来展示这个256位值中所有置零的位,再提供一个紧凑证明展示所有置一的位,这样你就能通过一个恒定大小的证明来确认这是向量承诺中该索引的值。

So I give you basically a compact proof of all the bits that are set to zero in this two fifty six bit value and a compact proof of all these bits that are set to one in this two fifty six bit value and then you have a constant size proof that this is the value at this index of the vector commitment.

Speaker 1

那么谈谈RSA累加器,虽然我们没有正式定义它,但我觉得不需要深入数学定义,一般来说RSA累加器如何工作?与Merkle树相比有何优劣?在什么情况下会选择使用其中一种?

So speaking a little bit about RSA accumulators, we haven't really defined them but I don't think we have to go into the mathematical definition of it but generally how do RSA accumulators work, how do they compare to Merkle trees, why would you use one or the other?

Speaker 2

没错,RSA累加器在渐近意义上能比Merkle树生成更小的成员证明,但如果只是用RSA累加器来证明单个项目的包含性,其实并不比Merkle树累加器优越多少——除非Merkle树累加器积累的项目数量极其庞大。

Well, yes, so RSA accumulators are able to achieve smaller membership proofs asymptotically than Merkle trees can but really if you're just using an RSA accumulator for proving inclusion of a single item, it's not significantly better than the accumulator than a Merkle tree accumulator unless the Merkle tree accumulator is insanely like, the number of items that are being accumulated is insanely large.

Speaker 2

我认为我们的工作重新激发了对RSA累加器的兴趣,正是因为我们实现了成员证明的聚合与批处理。

I think why our work gives renewed interest in RSA accumulators is because we were able to achieve aggregation and batching of membership proofs.

Speaker 2

因此,能够为RSA累加器中任意数量的项目一次性提供单一固定大小的成员证明,这是Merkle树无法实现的。

So the ability to give us a single constant size membership proof for arbitrarily many items in the RSA accumulator at once, it's something that you can't do with a Merkle tree.

Speaker 1

这真的很有趣。

That's really interesting.

Speaker 1

我的意思是,以以太坊为例,它实际上同时面临这两个问题。如果我们想实现'每个人都有一个以太坊账户'的目标,那么这个Merkle树的成员数量将达到数十亿级别,这可能是难以承受的。

So I mean, if we take Ethereum as an example, it kind of suffers from both problems where on you know, if we wanna realize the goal of like every human has an Ethereum account, then there will be billions of members of this Merkle tree which is probably prohibitive.

Speaker 1

比如当我们发起客户端请求,要求提供这些合约的状态或执行某个调用并返回正确执行的证明时,我们实际上是在生成大量Merkle证明并回传。

Like when we make a like client request and say please give me, you know, the state of these contracts or like execute this call for me and give me the proofs that all these things were done correctly, we are generating a ton of Merkle proofs and sending that back.

Speaker 1

从这个角度看,使用累加器可能也会是个好方案。

So in that sense maybe accumulating them would also be good.

Speaker 2

没错,因此RSA累加器可以用于最终在交易中或向轻客户端发送更紧凑的总结性消息。

Right and so the RSA accumulators could be used to end up sending in a transaction or in a message to a Lite client, write a smaller compact message that summarizes Yeah.

Speaker 2

所证明的内容。

What is being proved.

Speaker 0

但是,我的意思是,你真的能在以太坊的架构中使用RSA累加器吗?

But, I mean, could you could you actually use the RSA accumulator in an Ethereum, setup?

Speaker 0

因为我一直是在UTXO模型的背景下理解它的。

Because I always understood it sort of in the context of, like, a UTXO model.

Speaker 0

它实际上也能用于基于账户的系统吗?

Could it actually also be used in an account based system?

Speaker 2

在基于账户的系统中,你基本上需要向量承诺。

So in an account based system, you need vector commitments, basically.

Speaker 2

实际上,是的。

Actually Yeah.

Speaker 2

实际上,你真正需要的是稀疏向量承诺或键值承诺。

Actually, what you really want is sparse vector commitment or a key value commitment.

Speaker 2

这样我就能给你这个键对应的项。

So I can be able to give you the the item at this key.

Speaker 2

对吧?

Right?

Speaker 2

而账户本质上就是键值存储,稀疏向量承诺正好提供了这种功能。

And an account is basically a key value store, and sparse vector commitments give you that.

Speaker 2

例如,稀疏Merkle树就是一种稀疏向量承诺。

So sparse Merkle trees, for example, are sparse vector commitments.

Speaker 2

我们也可以基于RSA累加器来构建稀疏向量承诺。

We can also construct sparse vector commitments from RSA accumulators as well.

Speaker 1

那么你的论文具体提出了什么创新?

So what exactly is it that your paper introduces?

Speaker 1

是新型累加器、新型向量承诺,还是对RSA累加器的改进技术或新方法?

Is it a new type of accumulator, a new type of vector commitment or modifications or new techniques on RSA accumulators?

Speaker 2

它对RSA累加器进行了改进,能够实现我之前提到的批处理和聚合功能,并直接基于RSA累加器技术构建了一种新型向量承诺,这种承诺同样具备批处理和聚合特性。

So it has improvements on the RSA accumulator to be able to achieve you know, the the batching and aggregation I was talking about, and it gives a new kind of vector commitment that's constructed directly from the RSA accumulator techniques and is is basically able to achieve the same batching and aggregation properties but for vector commitments.

Speaker 2

这样我就能用一个恒定大小的证明,向你验证多个账户状态与以太坊区块链的状态承诺是一致的。

So I could open, you know, say many I could I could prove to you that many different accounts are consistent with the state commitment to, you know, the Ethereum blockchain with a single constant size proof.

Speaker 2

使用我们的结构在计算效率方面需要权衡取舍。

There there are trade offs of using our constructions in terms of computational efficiency.

Speaker 2

细节决定成败——目前还没有人实验过这些方法是否比Merkle树或Patricia树更适合以太坊、比特币等系统中现有的应用场景。

You know, the devil's in always in the details in terms of whether this is actually going to be appropriate for for any of the systems and and nobody's quite experimented to see if if they work better than Merkle trees or Patricia trees, you know, for for the task that those are used for in in systems like Ethereum and Bitcoin.

Speaker 2

使用能够实现巨大效率提升的技术确实存在权衡,虽然能大幅减少通信数据量,但会显著增加证明生成方的计算负担。

There are trade offs with for using something which is able to achieve, you know, massive efficiency gains in terms of the size of information that's communicated, but then ends up putting much higher computational burdens on on the parties that are trying to generate the proofs in the first place.

Speaker 1

说到实验验证,这篇论文有附带代码吗?

Speaking about experimenting with this stuff, is there any code accompanied with the paper?

Speaker 1

你们团队已经实现了所有这些技术吗?代码是开源的么?

Like have you guys implemented all of this and is it you know, open source anywhere?

Speaker 2

我们确实在论文发表时同步实现了,不过现在有一个开源库完整实现了论文中的所有方案。

So we did it, directly along with the paper, however, there now is an open source library, that implements all the things that we do in our paper.

Speaker 2

这是由Cambrian Labs公司发布的,属于开源项目。他们在开发过程中,我们协助他们理解了论文的技术细节。

It was put out by this company Cambrian Labs, so it's an open source project and we did, help them understand the details of our paper when they were developing that.

Speaker 1

不错。

Nice.

Speaker 1

知道是用什么语言实现的吗?

Do you know what language it's written in?

Speaker 2

Rust。

Rust.

Speaker 1

太好了,我可以去试试看。

Nice and I can go play with it.

Speaker 2

你可以去试试看。

You can go play with it.

Speaker 1

关于RSA累加器的问题我们已经提到过,它们需要某种可信设置,如果我没理解错的话有办法解决这个问题,但我并不真正理解具体是什么或其中存在的问题。

A problem with RSA accumulators that we've already touched on, they need some sort of trusted setup and there's a way to solve this if I understand correctly but I don't really understand what it is or what the problem with it is.

Speaker 1

所以有这些叫做类群的东西,你已经提到过,Chia举办了一个竞赛来高效构建这些,类群是不存在吗?还没构建出来吗?还是说只是如何快速构建的问题?类群到底是怎么回事?

So there are these things called class groups, you already mentioned them, there's a competition by Chia to be able to construct construct these efficiently, do class groups not exist, are they not constructed yet or is it just a matter of like constructing them quickly or like what's the deal with class groups?

Speaker 2

没错,类群确实存在,一般来说它们是定义在任何代数数域上的群,人们认为如果按照特定参数化选择——基本上当它具有所谓的大判别式时,计算类群的阶(即类群中元素的数量)就非常困难。

Right, now class groups do exist, general they're these groups that are defined over any algebraic number field and it's believed that, you know, if chosen under some particular parameterization, basically if it has what's called a large discriminant then it's very difficult to compute the order, the number of elements in the class group.

Speaker 2

我们只是没有计算这个的高效算法,而且你可以在不先确定其阶的情况下定义类群并对类群中的元素进行操作。

We just don't have efficient algorithms for doing that and you can define the class group and operate on elements in the class group without first specifying its order.

Speaker 2

这与RSA群不同,RSA群通过构造就知道其阶,而类群则不是这样。

Unlike RSA groups which by construction know the order, that's not the case with class groups.

Speaker 2

这些竞赛更多是为了看看人们能多高效地对类群中的元素进行操作,并且大家对提高类群运算效率很感兴趣。

The competitions are more about trying to see how efficiently people can try to operate on elements within the class group and there's an interest in making class group operations more efficient.

Speaker 2

RSA群运算相当直观。

RSA group operations are like pretty straightforward.

Speaker 2

就是模n的整数乘法。

It's integer multiplication mod n.

Speaker 2

我们对这个非常熟悉,并且知道如何在硬件上优化它,相比之下对类群运算的优化了解较少。

We know that very well and if, know how to optimize it in hardware more so than we say know how to optimize class group operations.

Speaker 2

还有一个围绕我们认为是难题的竞赛,即一旦指定了类群,你能多高效地计算出它的阶数。

There's also a competition surrounding the problem that we believe is hard which is how efficiently can you figure out the order of a class group once you specify it.

Speaker 1

对,所以我们不是使用阶数未知的群,而是使用阶数极难计算的群。

Right, so instead of using a group of unknown order, we use a group where the order is extremely hard to compute.

Speaker 2

哦抱歉,那其实就是阶数未知的群。

Oh, sorry, that is a group of unknown order.

Speaker 2

我们知道这是个有限群,但很难计算它的阶数。

So we know that it's a finite group, it's hard to compute its order.

Speaker 2

不过与RSA群不同的是,RSA群的构造者知道其阶数,而其他人不知道,因为这个秘密信息没有被分享给他们。

Though the difference with RSA groups is that whoever constructed the RSA group knows its order and presumably nobody else does because that secret information wasn't shared with them.

Speaker 1

我明白了。

I see.

Speaker 2

而对于类群来说,我们可以直接定义这个群

Whereas with class groups, it's like we can specify the group

Speaker 1

而且那些秘密信息从未存在过。

and The secret stuff never existed.

Speaker 1

You

Speaker 2

不需要为了定义正确的群而计算其阶数,对吧。

don't need to compute the order of the group in order to specify Right, the right.

Speaker 2

Groups

Speaker 1

竞赛内容更多是关于群的运算,而不是群的构造。

the competition stuff is more around operations of that group, not the construction of the group.

Speaker 2

没错。

Right.

Speaker 1

我想我明白了。

I think I get it.

Speaker 1

所以这也是类群的缺点,我想人们不怎么使用它们的原因就是效率不够高。

So that's also the downside then of class groups and why I suppose people aren't using it as much is because they're not as efficient.

Speaker 2

目前还没有,是的。

Not yet, yes.

Speaker 0

那我们接下来讨论无状态客户端的问题吧。

So let's move into these questions of stateless clients.

Speaker 0

Frederick,我知道这是你非常感兴趣的一个问题。

Frederick, I know this was a question you were really excited about.

Speaker 0

那么,无状态客户端和我们讨论的这些内容之间有什么关系呢?

How how what is the relationship here between stateless clients and all of this stuff that we're talking about?

Speaker 1

嗯,我是说,我对无感觉很兴奋。

Well, I mean, I'm I'm excited about stateless clients in general.

Speaker 1

这显然是论文中的一个主题,而且Ben,你在论文演讲中很好地阐述了为什么我们需要无状态客户端的动机以及它们是什么。

It's obviously a topic in the paper and I think Ben, you presented very well in your presentations of this paper of like the motivation behind why we want stateless clients and sort of what they are.

Speaker 1

比特币的默克尔树存在这个问题,但影响范围相对局限。

We have this problem in Bitcoin's Merkle tree is pretty localized.

Speaker 1

我们主要进行简单的支付验证这类基础操作。

We're just prove like we're doing simple payment verification stuff and just kind of simple stuff.

Speaker 1

但在以太坊中,越来越多人尝试用默克尔树实现更复杂的功能。

But in Ethereum, a lot of people are trying to do more and more complex things with the Merkle tree.

Speaker 1

特别是人们试图进行链下计算,然后提交默克尔证明到链上验证——但这些证明体积庞大,单个区块已无法容纳,由此引发各种问题。我认为累加器通过将证明体积从100MB或10MB压缩为恒定大小或线性大小来解决这个问题。

Particularly, people are trying to do off chain computation and then, like, prove like, submit the Merkle proof on chain so that it's verified on chain, but these proofs are massive and so you can't actually fit the proof in one block anymore and you run into all of these sorts of problems and I think accumulators solve that by saying our proof is no longer 100 megabytes or 10 megabytes or whatever it may be, it's constant size or it's linear in size or whatever it may be.

Speaker 1

本,你能谈谈无状态客户端的定义以及累加器在其中扮演的角色吗?

So maybe Ben, can you talk a little bit about what stateless clients are and how accumulators play a role?

Speaker 2

好的,无状态客户端的基本概念——其实'无状态'这个说法有点误导性,因为你并没有真正消除任何状态。

Yeah, so the basic idea of a stateless client and unfortunately stateless is at least to me sounds slightly misleading because you're not actually getting rid of any state.

Speaker 1

只是由他人代为存储状态而已。

It's just someone else storing it.

Speaker 2

更准确地说,让我们先明确无状态客户端具体指代什么。

Well, more specifically, so let's first say what stateless clients refer to.

Speaker 2

无状态客户端本质上是指构建一种区块链节点,它只需要记住某个小型状态承诺,而无需存储全部状态——比如以太坊中所有账户的余额或所有智能合约的状态值。它们只需存储某种状态承诺,然后在收到针对该状态承诺的证明时,验证交易是否正确地引用了状态中的信息。

Stateless clients refer to basically making a a blockchain node, which is only needs to remember some small state commitment, it doesn't need to store all the, you know, the entire state which includes, say, Ethereum, the balances in all accounts or the state values in all smart contracts, right, they would just need to store some kind of state commitment and then verify transactions against that state commitment when presented with proofs against that state commitment that the transaction correctly references information in the states.

Speaker 2

基本上每笔交易都包含可以本地验证的信息,并需要正确引用某些内容——比如相对于区块链当前状态的账户余额。

Like every transaction basically has information that can be locally verified and then references something and it needs to be referencing like account balances correctly with respect to the current state of the blockchain.

Speaker 2

除此之外,这些无状态客户端还需要能在每笔交易后更新状态。

And on top of that, these stateless clients need to be able to update the state after each transaction as well.

Speaker 2

因此在处理完交易后,它们需要能更新状态承诺以获取下一个状态承诺,从而能从此验证后续交易。

So after processing a transaction they need to be able to update the state commitment to get the next state commitment so they can verify transactions from there.

Speaker 2

这并不是真正意义上的无状态系统,因为它们确实需要维护这个状态承诺。

It is not a stateless system because, you know, in the true sense of the word stateless because they do need to maintain this state commitment.

Speaker 2

它们不可能在经历断电后完全丢失所有状态承诺的记忆,然后过段时间重新上线还能继续参与网络而无需了解期间发生了什么,对吧?

They can't basically experience a power outage and completely lose all memory of the state commitment and come online a while later and be able to continue participating without trying to figure out what happened in between, right?

Speaker 2

那才是真正意义上的无状态。

That would be the true notion of stateless.

Speaker 2

但它们确实具有极低的状态存储需求,对吧?

But they do have very minimal state storage requirements, right?

Speaker 2

这基本上就归结为这种紧凑的状态承诺,而不是需要存储千兆字节或兆兆字节的数据。

It's basically down to this compact state commitment rather than, you know, gigabytes or terabytes of storage.

Speaker 0

它们与轻客户端有什么关系?

How do they relate to light clients then?

Speaker 0

轻客户端是无状态客户端吗?

Are light clients stateless clients?

Speaker 0

这两者之间有什么联系吗?

Is there any connection here?

Speaker 2

是的。

Yeah.

Speaker 2

所以,再次强调,这些术语只是被使用的词汇,有些人在区块链领域使用时可能会对这些术语产生混淆。

So, again, these I guess these are just terms that are that are used, and also some people might confuse the terms a bit when using them within the within the blockchain space.

Speaker 2

这些术语并没有学术上严格的定义。

These don't have, like, academically defined, you know, definitions.

Speaker 2

但根据我的理解,轻客户端通常指的是试图同步而非参与区块链交易验证的客户端,它们要与区块链当前状态同步,能够高效下载和同步数据,并能以可信方式查询区块链。

But from my understanding, light clients generally refer to a client that is trying to synchronize, not participate in validation of blockchain transactions but synchronize with the current state of the blockchain and be able to again download and sync efficiently and then be able to, you know, query the blockchain in authentic ways.

展开剩余字幕(还有 102 条)
Speaker 2

这更多是指能够在不参与的情况下同步或查询区块链。

It's it's more about being able to to synchronize or query the blockchain without having to participate.

Speaker 2

在那里它实际上是无需状态的。

And there it's actually stateless.

Speaker 2

你可以忘记一切或从头加入系统,并作为轻客户端高效同步,但你要相信系统运行正确。

You could forget everything or join the system from scratch and be able to sync efficiently as a light client, but you're trusting that the system operated correctly.

Speaker 2

你并没有实际参与验证过程。

You're not you're not participating in the actual validation.

Speaker 0

明白了。

Got it.

Speaker 0

而无状态客户端,就像这个总称所暗示的,意味着你仍然能够与之交互。

And a stateless client, like the sort of umbrella term suggests that you still would be able to interact with it.

Speaker 2

无状态客户端的理念基本上可以这样总结。

The stateless client idea is basically saying that, you know, could be summarized as this.

Speaker 2

就像现在的客户端需要连接到一个他们信任的全节点,而这个全节点需要是一个完整的区块链节点。

So like clients need to connect to a full node now that they trust and the full node needs to be a full blown blockchain node.

Speaker 2

它们需要存储区块链的完整状态并参与区块链验证。

They need to store the entire state of the blockchain and participate in blockchain validation.

Speaker 2

客户端需要信任这个完整节点,然后能够快速与之同步。

Like clients need to trust the full node and then be able to sync with it quickly.

Speaker 2

无状态客户端更像是无状态验证者或无状态完整节点,它能持续参与验证并确定每笔交易的正确性,而无需实际存储区块链的完整状态。

A stateless client would be more like a stateless validator or a stateless full node that can continue to participate in in validating, and determining that every transaction is correct without actually storing the entire state of the blockchain.

Speaker 1

在你的演讲中,你提出了这种状态与共识分离的概念,我很喜欢这个描述——如果我仅仅运行一个挖矿节点,实际上并不想存储任何数据,只想能够推进流程,比如选择要包含的交易并推进到下一个区块。

In your talk, you present the this sort of separation of states and consensus and I like that description of it where if I'm just running a mining node, I don't actually want to store anything, I just want to be able to progress like choose which transactions to include and progress to the next block.

Speaker 2

没错。

Exactly.

Speaker 2

而且

And

Speaker 1

我认为有趣的地方在于,对于非矿工用户来说,他们因为需要与合约交互或查看余额等操作,所以有存储状态的动机。

I think where it gets interesting then is for a user who's not like a miner but wants so they have some interest in storing the state because they have contracts they want to interact with or they want to see their balance or some other stuff.

Speaker 1

但他们并不一定需要参与共识验证,因此将这两个关注点分离是很有道理的。

But they don't necessarily need to participate in consensus, so it makes perfect sense to separate these two concerns.

Speaker 1

是的。

Yes.

Speaker 1

不过我的问题是,。如果我们正在构建一个基于状态的RSA累加器,作为一个用户,我需要存储哪些状态数据?

I think a question for me though is if we're constructing an RSA accumulator over the states, as a user what state do I need to store?

Speaker 1

我能否只存储自己的余额,同时还能在向其他地址发送东西时提供证明,表明我的操作是正确的?

Can I store just my own balance and still be able to provide proofs that I'm doing the right thing when I'm like sending something to another address?

Speaker 2

很遗憾,不行。

So unfortunately not.

Speaker 2

如果参与共识的验证者不再存储完整状态,那么他们就需要被提供证明,对吧,连同那些正确引用状态信息的交易一起。

If the validators participating in consensus no longer store the entire state, then they need to be provided with proofs, right, along with the transactions that those transactions correctly reference stateful information.

Speaker 2

所以如果这是在以太坊中,人们引用特定账户的余额时,就需要有一个基于向量承诺的证明,证明该余额在交易中被正确引用。

So if this is in Ethereum and people are referencing a balance in a particular account, there needs to be a vector commitment based, proof that the balance is, is correctly referenced in the transaction.

Speaker 2

现在要么用户需要能够存储信息来生成这些证明,要么就需要有提供这种服务的机构。

Now either the users need to be able to store information to generate those proofs, or there need to be services that do this.

Speaker 2

我认为更现实的结果是会出现一些服务——你可以称之为数据提供节点——它们的唯一业务就是创建累加器的成员证明,或者能够向用户提供他们所需的信息,以便打开其账户上的向量承诺。

I see that as a more realistic outcome that there will be services whose, you know, you could call them data provider nodes whose sole business is to basically create membership proofs for accumulators or be able to provide information to users that they need in order to open the Vector commitment on their account.

Speaker 2

这将形成一个竞争性市场。

And that can be a competitive market.

Speaker 2

不需要信任任何特定服务提供商,任何人都可以提供这项服务,这只是在区块链共识参与之外的另一类角色。

Are not trusting anyone that anybody can provide that service, just a different say role than is necessary for participating in blockchain consensus.

Speaker 1

对,就像如果你有一个默克尔树,我有余额想转账给别人,我需要能证明我自己的初始余额和对方的最终余额,这些默克尔证明就是我需要包含的凭证,以证明操作的正确性。

Yeah, like if you have a Merkle tree and I want to I have a balance, I want to send something to another person, I need to be able to prove what my own balance started at and what the other person's balance ended at and those are the Merkle proofs I need to include to convince someone that I'm doing this correctly.

Speaker 2

稍作修正:当交易提议更新时,只要交易能正确引用你和收款人账户的当前余额,该交易就能通过验证,

Well slight modification, so when the transaction is going to propose an update but the transaction can be validated as long as it correctly references the current account balances of both your account and the recipient account,

Speaker 1

对,对。

Yeah, yeah.

Speaker 2

所以你需要提供成员证明——具体到账户余额场景,就是在交易中包含你和收款人账户余额的向量承诺开启证明。

So you need to prove, you need to basically give membership proofs or I mean in this case, we're talking about account balances, vector commitment openings of your account balance and the recipient account balance inside the transaction.

Speaker 1

是的。

Yeah.

Speaker 1

那么对我来说,实际上只需要存储自己的余额和收款人余额,不需要存储其他任何状态。

So on my side, actually only need to store my own balance and the recipient's balance and I don't need to store any other states.

Speaker 2

没错,但你需要存储你需要能够生成向量承诺

That's right, but you need to store you need to be able to generate the vector commitment

Speaker 1

Yeah.

Speaker 1

证明

Proofs.

Speaker 1

所以我需要默克尔树的其他部分,但不需要叶子节点

So I need the rest of the Merkle tree sort of but not the leaves.

Speaker 1

但在RSA累加器世界里,是否存在这样的等价物,让我可以存储这些默克尔树的中间状态而不必存储所有叶子节点?

But in an RSA accumulator world, is there such an equivalent that like I can store these intermediary states of a Merkle tree without necessarily storing all of the leaves?

Speaker 2

其实我的意思是,你,你甚至不需要存储整个默克尔树的内部状态,那会相当大,你只需要存储与你的账户和收款人账户相关的几个默克尔分支

So actually, mean you don't even need to storing the whole internal state of the Merkle tree would be quite large, you just need to store a few Merkle branches that are relevant to your account and the recipient account.

Speaker 2

在RSA累加器中,你同样只需要存储成员见证

In an RSA accumulator, again, you need to just store the membership witnesses.

Speaker 2

问题是每当区块链批准新交易时,股权承诺就会发生变化,对吧?

The problem is that every time new transactions are approved by the blockchain, the stake commitment changes, right?

Speaker 2

默克尔根会发生变化,或者在RSA累加器的情况下,RSA累加器的权益承诺会发生变化。

The Merkle Root will change or the in the RSA Accumulator case, the RSA Accumulator stake commitment will change.

Speaker 2

当这种情况发生时,有时证明也需要更新。

And when that happens, sometimes the proofs also need to be updated.

Speaker 2

对吧?

Right?

Speaker 2

这意味着作为用户,如果你只是维护自己的成员见证,你需要监听区块链并在新交易被追加到账本时进行更新。

So that means that you as a user, if you're just maintaining your own membership witness, you need to be listening to the blockchain and updating it as new transactions are appended to to the to the ledger.

Speaker 2

这对用户要求很高,基本上需要保持同步并持续更新他们维护的证明,因此我认为这将演变成一项为用户提供的数据服务。

And that's a lot to ask from users to to basically remain in sync and keep updating the the proofs that they're maintaining which is why I think that that will become a data service that people will do for users.

Speaker 2

而且这完全不需要信任,只需要有人为你执行计算即可。

And it completely, it doesn't require any trust, it just requires somebody else to perform the computation for you.

Speaker 1

是的,虽然我很喜欢无状态客户端的概念,但我还没见过真正可行的提案,因为它们都在这一点上存在问题:要么需要一直保持在线,要么存在其他问题,比如需要巨大的带宽。

Yeah, I mean, as much as I love the idea of stateless clients, I have yet to see an actual practical proposal because they all sort of break down on this point that either I need to stay online all the time or you know, there's other problems such as like requiring huge bandwidth if I Right.

Speaker 1

假设我不保持在线,只在联网时与网络同步当前默克尔树的状态,即使你只维护部分分支,数据量仍然可能相当庞大。因为实际上你不仅要维护自己的余额,可能还要维护你想交互的其他内容,所以通常需要巨大的带宽。

Let's say that I don't stay online and just when I come online, I sync up with the rest of the network what the current state of the Merkle tree is, well, that can actually be pretty large still even if you're just maintaining some branches because realistically you're not just maintaining your own balance, you're probably maintaining a few things of like what you want to interact with and so forth so usually like huge bandwidth requirements.

Speaker 2

没错,就像我们论文中解释的那样,RSA累加器见证其实只需要通过查看交易序列就能更新。所以如果我监听区块链,就能持续更新我的RSA累加器见证。

Right, like in our paper where, I mean, we explain how these RSA accumulator witnesses can basically be updated just by looking at the sequence of transactions And so if I am listening to blockchain, I can continue to update my RSA accumulator witness.

Speaker 2

当然问题在于,如果我离线一段时间,就需要下载我上次监听后发生的所有交易序列。

If the problem, of course, is if if I go offline for some time, then I need to download the sequence of transactions that happened since I was last listening.

Speaker 2

但我们也解释了如果要同时维护多个见证的情况——比如我之前提到的数据服务商为大量客户维护成员见证时——这种模式具有摊销优势。

But we also explain how if you're trying to maintain many witnesses at once, so say, again, one of these data service providers I was talking about who maintain many membership witnesses on behalf of a whole set of clients, there are amortization benefits to that.

Speaker 2

我们称之为批量生成成员见证的方法,比单独维护和更新单个见证效率更高。

So there's ways of, we call it batch generation of membership witnesses that can be done more efficiently than just maintaining and updating an individual one.

Speaker 1

在你设想的模型中,所有证明都会包含在区块里吗?

In the model that you think about, would all of the proofs be included in the blocks?

Speaker 1

比如你会把交易及其所有证明都打包到正在生成的区块里,还是说会剔除证明并默认信任矿工验证的正确性?

So like would you include the transactions and all of the proofs for that transaction in the block that's being produced or would you, you know, get rid of the proofs and just say I trust that the miner did this correctly?

Speaker 2

这个嘛...我觉得这更多是观点问题。任何想验证交易是否被正确验证的人,显然还是需要这些证明的。

Well, think that's I mean that's more of a matter of opinion of I mean, anyone who wants to be able to verify that the transactions were were validated correctly would would need still need those proofs.

Speaker 2

是的。

Yeah.

Speaker 2

但这些证明还可以进一步聚合,甚至——这涉及到人们如何使用SNARK进行无状态验证,一个简洁的知识证明就能概括迄今为止的整个区块链历史,这与我们的研究方向不同。

But there could be further, you know, aggregation of those proofs or even I mean and this is getting into how people use SNARKs for stateless verification where a single succinct proof of knowledge could summarize, you know, all of blockchain history until now and that's a different direction of research than ours.

Speaker 1

是的,这是个值得思考的有趣问题。因为我发现无状态客户端的一个缺陷在于其默克尔树版本——默克尔路径会变得非常庞大,以至于无法将所有证明与交易一起打包进区块,否则区块会变得巨大。而如果使用RSA累加器这类技术,不仅单个证明更小,正如你提到的还能进行聚合,这完全改变了游戏规则。

Yeah, it's an interesting thing to think about because like one of the pitfalls of stateless clients that I've seen is the Merkle tree version of it, like the Merkle paths get so large that you can't actually include all the proofs with all the transactions in a block because the block would end up being huge And if you have an RSA accumulator or something like it, not only like is the individual proof smaller but your point to like you could actually aggregate them as well, it kind of changes the dynamic.

Speaker 1

确实。

Yeah.

Speaker 1

突然想到最后一个问题:这个累加器的体积有多大?因为默克尔树由于包含大量哈希值会变得非常庞大。

One final question that just pops into my mind, what is the size of the accumulator, like the Merkle tree grows pretty large because it has so many hashes like all the way up the tree.

Speaker 1

对。

Right.

Speaker 1

RSA累加器的规模会有多大?

How large does an RSA accumulator get?

Speaker 2

类似地,它是线性的,对吧?

So similarly, it's linear, right?

Speaker 2

无论是Merkle树还是RSA累加器,其存储所有累加器内部信息的大小都与累加的项目数量呈线性关系。

Both Merkle trees and RSA accumulators see storage of all the internal information of accumulators is linear in the number of items that are accumulated.

Speaker 2

当然,Merkle树的根节点大小是恒定的,同样RSA累加器的状态承诺也是恒定大小的,但为了能够从头生成成员资格见证,你需要存储整个内部状态——除非你已拥有某个特定项的成员资格见证,并且只关注更新该见证。

Of course the Merkle tree root is constant size, similarly the state commitment the RSA accumulator is constant size, but in order to be able to generate membership witnesses from scratch, you need to be storing the entire internal state unless you already have a membership witness for a particular item and are just interested in updating that.

Speaker 0

这两者中哪一个更快?

Are one of these two things faster?

Speaker 0

比如,是否存在速度上的提升?

Like, is there a speed up?

Speaker 2

一般来说,Merkle树更快,因为哈希运算速度很快。

So in general, Merkle trees are just faster because hashing is fast.

Speaker 2

对于RSA累加器,验证证明可以非常快。举个例子,如果比较验证数百个Merkle证明与验证单个RSA累加器中100个不同项的聚合包含证明,使用我们的技术后者会更快,因为你只需验证单个证明。

Our so with RSA accumulators, verifying proofs can be very fast and so and so if you, for example, compare verifying hundreds of Merkle proofs compared to verifying a single, you know, aggregate inclusion proof of a 100 different items in RSA accumulator, using our techniques you can start to get faster because you're just verifying a single proof.

Speaker 2

验证单个证明的复杂度不会随着该证明所涵盖的项数增加而增长。

The complexity of verifying a single proof doesn't grow with the number of items that proof accounts for.

Speaker 2

我们还使用了称为指数证明的技巧来加速这一过程,这与验证延迟函数的技术有关。

We also use these tricks called proofs of exponentiation that speed this up, it's related to techniques that are were actually used to verify the delay functions.

Speaker 2

有趣的是这些不同原语开始互相借鉴技术——指数证明使得验证过程变得非常迅速。

It s fun how all these different primitives start borrowing techniques, the proofs of exponentiation make the verification of the proofs very fast.

Speaker 2

Merkle树在生成证明甚至构建树的计算效率方面,速度要快得多。

Merkle trees, in terms of the computational efficiency of generating proofs or generating the tree even, they are much, much faster.

Speaker 2

这是RSA累加器的缺点。

It is the downside to RSA accumulators.

Speaker 1

关于这个话题和累加器内容的最后一点,你的论文提到了批处理技术,我们也在讨论性能问题,你认为还有哪些需要改进的重大领域或重大突破,才能让这些技术真正实用化?或者说,如果我们能解决某个关键问题,它就能毫无障碍地被广泛应用?

As a final note on this topic and the accumulator stuff, your paper is talking about batching techniques and we're talking about performance, are there other like big areas or like big improvements that you see that are necessary for all of this to become really practical or where, you know, if we just solve this one thing, it's a no brainer that it'll be used everywhere?

Speaker 2

我认为,我已经暗示了需要改进的方面,比如RSA累加器——显然在我们的工作中,RSA累加器实现了通信方面的改进,减少了无状态区块链或无状态客户端设计中需要传输的信息量,但同时也显著增加了计算负担。因此,我认为要使其真正实用化,还需要在这些方面取得进一步的发展。

I think it I mean, I think I've sort of already hinted at what needs to be improved for example with RSA accumulators and obviously RSA accumulators in our work, achieved this improvement in, communication, reducing the amount of information that would be sent in a stateless, blockchain or stateless client design, but then increases the computational burden quite significantly and so further developments there would I think be pretty necessary for making this practical.

Speaker 2

需要注意的是,由于RSA累加器与可验证延迟函数共享部分相同的技术构建模块,以太坊正在投资硬件以使RSA群组运算变得极其快速。

One thing to note is that because RSA accumulators share some of the same technical building blocks as verifiable delay functions, Ethereum is investing in hardware to make the operations in RSA groups extremely fast.

Speaker 2

因此一旦该技术开发完成,观察它是否会让RSA累加器变得极其快速将会非常有趣,这确实也会改变游戏规则。

So once that is developed it will be interesting to see if that makes RSA accumulators much, much faster, that would really change the game as well.

Speaker 2

哈希运算之所以超快,是因为它同样在硬件层面进行了优化,对吧?

Hashing is super fast because it has also been optimized in hardware, right?

Speaker 2

所以,等那套硬件准备就绪后,进行相关实验会非常有意思。

So, so that would be really interesting to experiment with once that hardware is ready.

Speaker 0

这真的很酷。

That's really cool.

Speaker 1

酷。

Cool.

Speaker 0

这次对话非常棒。

This has been a really great conversation.

Speaker 0

我觉得我们还有很多可以聊的话题。

I feel like there's probably so many more things that we could talk about.

Speaker 0

简单来说,最近有哪些让你兴奋的研究或项目?

Maybe just briefly, what are some upcoming research or projects that you're getting excited about these days?

Speaker 0

或者你正在进行的某个工作?

Or maybe something you're working on?

Speaker 2

正如我一开始提到的,我现在对零知识证明在区块链系统中平衡透明度和机密性的应用非常感兴趣。

Right, so as I said sort of at the beginning, right now I am very excited about working on sort of applications of zero knowledge to balancing transparency and the confidentiality in in blockchain systems.

Speaker 2

我认为透明度是区块链能为金融交易带来的主要优势之一,但同时我们也希望保留隐私和机密性。

I I see sort of transparency as one of the main benefits that blockchains can bring to financial transactions, and and and yet we also want to retain privacy, confidentiality.

Speaker 2

那么在私有系统中,你能证明什么?

So in a private system, what can you prove?

Speaker 2

比如我现在正在做的工作——即将发布的零知识税务系统,基本上能证明你在使用像CCash这样的匿名支付系统接收款项时仍符合税务要求。

So for example, I I have this work that I'm I'm doing right now, which will which will come out soon on zero knowledge taxes, being able to basically prove that you're tax compliant if you're receiving payments over an anonymous payment system like CCash.

Speaker 2

还有我在Fundora公司应用的一些研究技术,这家公司是我参与创立的,专注于在区块链上运行的金融服务中平衡透明性与保密性。

And also some of the techniques that I'm working on in research applying at the company that I helped found called Fundora, which is all about balancing transparency and confidentiality in financial services that could then run over a blockchain.

Speaker 2

你可以想象这样一个未来:对冲基金在区块链上以高度透明的方式运营,使得它无法实施庞氏骗局或挪用资金而不被用户发现,同时仍能保持基本的机密性——比如私密的资产负债表。

You can imagine a future where a hedge fund is running its operation over a blockchain in a very transparent way so that it can't run a Ponzi scheme or embezzle funds without users detecting that but yet it still can retain its basic confidentiality, private balance sheet.

Speaker 1

非常感谢你参加我们的节目。

Thank you so much for being on the show.

Speaker 1

这是一场引人入胜的对话。

It was a fascinating conversation.

Speaker 2

是啊。

Yeah.

Speaker 2

谢谢邀请。

Thank you for having me.

Speaker 2

真的非常愉快。

It's really a pleasure.

Speaker 2

希望有机会再来。

Hope to be back sometime.

Speaker 0

我觉得那会很棒。

I think that would be really cool.

Speaker 0

是啊。

Yeah.

Speaker 0

也感谢各位听众的收听。

And to our listeners, thanks for listening.

Speaker 1

感谢大家的收听。

Thanks for listening.

关于 Bayt 播客

Bayt 提供中文+原文双语音频和字幕,帮助你打破语言障碍,轻松听懂全球优质播客。

继续浏览更多播客