本期访谈的文字稿整理借助了 OpenAI Whisper 来进行转录,并在此基础上进行了编译。
Github 链接:
https://github.com/openai/whisper
引介
我们在看各种 rollup 解决方案的愿景和路线图时就会发现,几乎所有的 rollup 都有一个最终目标,如果把这个目标浓缩成一句话就是:构建一个技术堆栈,将其提供给社区,解决区块链的扩容问题,并最终实现运营和治理这个技术堆栈的去中心化。这就引出了去中心化 rollup 这个词。
那么具体到底是去中心化什么?Rollup 系统中各个部分的分工是怎么样的?去中心化意味着最大化系统运行参与者吗?中心化排序器会带来什么影响?共享排序器以及 L2 本地共识应该如何设计?ZK-Rollup 中独有的证明者负责什么职能?一个开放的去中心化证明者网络是怎么样的?我们为什么需要 zk 硬件加速?数据可用性问题有什么方案可以解决?....
社区上围绕去中心化 Rollup 的讨论层出不穷,因此 ECN 策展了一个以“去中心化 Rollup”为主题的播客访谈系列,邀请了这个领域里的优秀创始人、研究员谈谈他们对去中心化 Rollup 的理解。
第一期邀请了来自 Arbitrum Foundation 的研究员 Patrick McCorry,这一集作为这个系列的概要,主要聊到了 Layer2 想要解决的问题、去中心化 rollup 的含义、如何理解它的安全属性以及 DAO 治理如何在去中心化 rollup 中发生作用。
本期嘉宾:Patrick McCorry, twitter @stonecoldpat0
主持人:Franci, twitter @FrancixDeng
预告
第二期: 共享排序器和 L2 共识
AltLayer Network 创始人 Yao Qi
Scroll 研究员 Toghrul Maharramov
StarkNet Exploration Lead Abdelhamid Bakhta
第三期: 证明者网络和 zk 硬件加速
Scroll 联合创始人 Ye Zhang
Cysic 联合创始人 Leo Fan
第四期: 数据可用性和去中心化存储
EthStorage 创始人 Qi Zhou
收听
点击订阅 Podcast,了解更多:
https://ecnpodcast.fireside.fm/decentralized-rollups-series-1
Youtube:
https://www.youtube.com/watch?v=KpIQaDMcEC0
小宇宙:
https://www.xiaoyuzhoufm.com/episode/647ae7c6f81d8df088519ec5
时间戳
- 01:49 Patrick McCorry 个人背景介绍
- 03:26 为什么会有 layer2,它想要解决什么?
- 11:56 它们使用什么样的武器来保证用户的安全?
- 14:40 Rollup 的安全性与活性是什么意思
- 17:47 从数据可用性、状态转换有效性和抗审查解释 rollup 的安全性
- 19:45 单一诚实实体的作用,谁充当 rollup 单一诚实实体?
- 28:47 怎么看待去中心化 rollup?当前最急迫的目标是什么?
- 37:21 DAO 治理在去中心化 rollup 中的重要性
访谈部分
Layer2 想要解决的问题
Franci: 这一集中我们将要探讨的是,去中心化 rollup 意味着什么?它为什么重要?他们要解决的问题是什么?希望能够通过这次谈话让读者和听众最终了解什么才是真正的去中心化 rollup,它们应该满足哪些目标。请本期嘉宾 Patrick McCorry 做一下自我介绍。
Patrick: 大家好。我想从经历来说,我偏向于学术研究的。从 2013 年到 2016 年,我的博士方向是比特币和以太坊相关的。然后从 2016 年开始到 2019 年左右,我是大学里的研究员,像 UCL,伦敦国王学院和 UIUC。在这期间,我一直对第二层协议非常感兴趣。包括比特币闪电网络、plasma,当然也包括 rollup。所以在 2019 年,我试图做一个创业公司。之后我离开了大学,我的朋友和我,基本上是两个人和一条狗。我们试图做一个专注于 layer2 的创业公司。但当时是熊市,之后我们被 Infura 收购了。然后我离开了 Infura,最近我加入了 Arbitrum 基金会。因此,我又回到了全职专注于 rollup 研究的工作。在这整个期间,我主要专注于教育,解释我们为什么要关心 layer2 协议。
Franci: 先从最基本的话题开始讨论。一般来说,什么是 L2 系统?当用户把钱存入 L2 系统并在那里做交易时,这意味着什么?
Patrick: 谈论这个问题,我认为我们需要再退后一步思考,区块链的意义是什么?我们试图建立的所有这些系统的意义是什么?一旦我们解释了这一点,解释 L2 会更有意义一些。像比特币或以太坊这样的区块链网络背后真正的东西只是一个数据库。是一个公共数据库,任何人都可以读取和写入。因此,它是一个账户余额的数据库,当然,在以太坊中,除了账户余额还有各种程序。所以我可以把我的代码部署到数据库中。我的程序可以有一些状态以及我可以在上面进行交易,每个人都可以看到数据库的更新情况。从根本上说,我们只是在与数据库打交道。听起来很无聊。
而区块链本身的意义,它实际上只是一个审计跟踪。所以它存储了一个交易列表,如果我给你一个区块链的副本,你可以自己重新计算这个数据库。从根本上说,我们正在构建一个公共数据库,任何人都可以读取、独立计算和写入。好了,这就是 layer1。
不管是比特币还是以太坊 layer1 面临的问题都是,需要最大限度地提高去中心化。有三种不同的方式来考虑去中心化。一个是运营者:谁在运行网络,谁在生产区块,谁在确认交易。对于许多这样的网络,我们总是想最大限度地让任何人可以参与这个过程。这样就不会有单点故障。另一方面,也需要考虑谁可以验证数据库的每一次更新,谁可以验证操作者是否在做他们的工作,数据库是否正确,以及是否有其他问题。他们的工作和数据库在任何时候都是正确和有效的。在这一点上,你会有这样的纠结。你想最大限度地让更多人参与验证网络,还想最大限度地让更多人运行网络。因此,这有点像以前的比特币区块大小之争。更新区块,你可以处理更多的交易。但随后会更加困难,因为你需要更高的硬件要求来实时验证网络,最后也变成一个网络运行者了。这便是在 layer1 层面上考虑如何去中心化的问题。第三个方面实际上是使其能够负担得起。如果让我们花 200 美元在一个网络上进行交易,那么它真的是去中心化吗?显然它不是。因此,从某种意义上说,这是历史遗留下来的三难困境问题。
在很长一段时间里,我们被这个三难问题困住了,因为如果你试图处理更多的交易,其中一方会在某种程度上受到伤害,要么费用上升、硬件要求上升,或者成为一个运营者更加困难。这是以 L1 作为背景讨论去中心化。
Franci: 正如你所说的,用户会考虑到交易的成本。那他们也许会选择将他们的钱存入一个中心化交易所中。广义来说,这是一种 L2 吗?
Patrick: 我认为从交易所考虑这个问题是一个很好的方法。中心化交易所它又像一个数据库。但问题是,它是一个私人数据库。所以基本上交易所的数据库,只有它自己能读取和写入。而像你和我这样的用户,我们不能审计这个数据库,不能检查它是否正确。不过在交易所做交易的好处就是非常便宜。而 L1 区块链系统目的是尽可能地去中心化,但费用又太高了。
因此,当我们考虑 L2 世界时,在 L2 世界中,我们并不真的想重新创建 L1。我们并不真的希望必须建立一个去中心化的网络,使参与者的数量最大化。因为我们已经知道,从历史上看,建立这类系统并使其在吞吐量方面得到很大的扩展是非常困难的。所以我们会想,能不能建立一个看起来像交易所的系统,但仍然保留区块链系统的属性,其中数据库是公开的?任何人都可以读取数据库,任何人都可以写入数据库,任何人都可以站出来保护数据库。这就是 L2 的目标。
当你深入了解把交易所和我们在 L2 中建立的东西进行比较时,就会发现归根结底我们是在对比桥接工程的东西。我所说的桥接是,在以太坊上会有一个智能合约,我把资产锁定在这个叫做 “桥接” 的智能合约中。一旦它被锁定在桥接上,它就会出现在其他的数据库中。这个数据库可能是 Coinbase,可能是 Arbitrum,可能是Optimism。然后问题是,当我想把我的资金从这个其他的数据库中取出来,然后把它带回以太坊,如何获得授权,以及如何说服桥接解锁资金?
对于 Coinbase 来说,用户信任 Coinbase 进行授权提款,智能合约会检查并说,哦,Coinbase 授权了,我就可以把资金取出来。但是对于 L2 来说,重点是在桥接上,以及如何让它相信这个链外的数据库是安全的,然后再允许解锁资金。
因此,回到你最初的问题。我认为 Coinbase 或这些交易所,它们基本上是我们想为 L2 构建的。但我们想以一种保护用户的方式来构建它。如果 Coinbase 掉线,或者如果它们作恶、被黑客攻击,用户始终是安全且有保障的。他们不必相信系统的运营者。它真正关注的是资产如何被锁定在系统的桥接中,然后从该系统中取出。
如何定义一个安全和去中心化的 Rollup
Franci: 所以 Rollup 所要做的是在这之间选择一些折衷方案。它们使用什么样的武器来保证用户的安全?
Patrick: 我认为真正的重点是桥接本身。比如说 Arbitrum 的桥接,它是一组部署在以太坊上的智能合约。该桥接当前持有约 60 亿美元左右。它实际上是以太坊上的一组智能合约持有 60 亿美元。你需要说服这个桥接,我有权把我的资金从桥接拿出来,再回到以太坊上。
那么我们有什么武器来保证用户的安全?在 L2 中有个好处就是,我们可以做一个非常好的假设。我们可以假设已经有一个 L1 了,比如比特币或以太坊,已经存在并且运行中。我们可以假设已经有了这个去中心化的平台,在此基础上建立。而且把这个平台看作是一个可信任的第三方,信任这个第三方,保证我们将永远做正确的事情。因此,这就是所有这些系统的基础。如果你有一个很好的去中心化平台,那么就可以利用和重新使用它,并在它的基础上构建。
因此,问题的陈述实际上变成了,现在我们有这个链外数据库,记录着帐户余额和程序状态。我们能否利用可信的第三方来检查该数据库的每一次更新都是正确和有效的?这就是 L2 的真正意义所在。举一个具体的例子,比如在 Arbitrum 数据库中有账户余额、程序状态,然后 Arbitrum 的智能合约是可信的第三方,它保证该桥梁将始终正确运行。运行 Arbitrum 网络的人、排序器、验证器会定期发送检查点或证据给桥接,以说服其相信应用于该数据库的更新是正确和有效的。如果桥接被说服了,它将允许用户从 Arbitrum 提取他们的资金。所以这就是我们的武器。
Franci: 你刚才说 Rollup 是构建在以太坊之上的。所以这让我想起了一个说法,社区总是说 Rollup 继承了以太坊的安全性。那么这是不是意味着 Rollup 的安全性等同于以太坊的?
Patrick: 我想这是一个很好的思考方式。答案的话,是也不是。我认为有不同的方式来思考这个问题。最简单的方法是安全性和活性。安全性的话,我们只是在数据库中考虑这个问题,意味着这个数据库的每一次更新都是有效的。不可能有一个无效的更新,因为如果有一个对数据库的更新是无效的,那么你就可以窃取这些资产。这破坏了基本的安全。这就是其中的一个重要部分。
下一个部分是活性,这表示我们能否确保人们能够对数据库进行更新?在一个数据库中,为了保证其活性,我们需要保证,我们能不能总是对其进行更新?或者存在一个诚实的一方?他们可以提议一个更新,而这个更新最终得到处理。这一点很重要,因为如果 Coinbase 或 Kraken 宕机或者作恶,你的资金就被卡住了。所以这就是它与以太坊略有不同的地方,因为在以太坊,你必须信任 PoS 和诚实的大多数,以保持系统的活性。而在 rollup 中,我们已经假设已经从以太坊上免费获得这种活性。我们只需假设有一个诚实的一方在那里。只要有一个诚实的人愿意做这个工作并向数据库提议更新,那么这个系统当然就能保持活力。这就是我们从以太坊继承安全性的意思。
因此,当我们考虑 rollup 的安全问题时,我们并没有真正考虑一个去中心化的网络。可能会有一个去中心化的 rollup 网络,但这并不重要。Rollup 的安全性真正取决于其作为桥接的智能合约,它需要从三个方面被说服。
第一个是数据可用性问题:桥接相信世界上的任何人都可以访问该数据库,任何人都可以重新计算该数据库的副本和最新的副本。所以这是你必须说服桥接的第一件事。世界上的任何人都可以访问我们所关心的数据库的副本吗?
第二个属性,你可以称之为状态转换的完整性问题 (state transition integrity problem),而这又回到了安全问题上。桥接需要相信,对数据库的每一次更新都是正确的和有效的。而这是为了确保没有人可以窃取你的资金。所以 rollup 运营者必须定期地说服桥接,他们对数据库的每一次更新是正确的。只有这样,桥接才会释放应该处理的资金或提款。
最后一个是抗审查,这个最终可以归结为活性的属性。如果整个系统宕机,有没有人来对数据库提议一个更新,然后由桥接来处理。
总结一下,当我们考虑 rollup 的安全问题时,它是真正从以太坊上的智能合约,即桥接合约的角度来考虑的,而桥接要确信对该数据库的每一次更新都是正确的。这不是真的关于一个去中心化的网络。我们真正关心的应该是这个诚实的一方,他帮助桥接保护锁定的资产安全。
Franci: 在你的一篇文章中做了一个比喻,将电影《指环王》里的甘道夫比喻成了抵抗作恶者的诚实一方。对于这个诚实的一方,你可以进一步解释一下吗?
Patrick: 甘道夫是一个很好的例子,因为在这个场景中,他是真的站在一座桥上,说的那句话是:"你不能通过。” 然后他毁掉了桥,对手就掉下去了。他是诚实的一方,挺身而出,保护了队友。这里的情况也完全一样。桥接合约最终负责保护锁定在这个链外系统的资产。诚实的一方是一个助手,甘道夫是这个团队的助手,以确保戒指能够被销毁。而诚实的一方正在帮助桥接合约。因为这些合约部署在以太坊上,不能真正与外部互动。所以它们需要有人来看看链外系统,这就是诚实的一方所做的事情。
Franci: 正如你所说,Arbitrum 使用的是一个欺诈证明系统,所以他们已经假设是有一个诚实的一方。那么,其他类型的 Rollup 有关的情况呢?zk-Rollup 使用有效性证明,这类 rollup 中的单个诚实一方是谁呢?
Patrick: 正如我们前面提到的,桥接合约负责检查每一个应用于数据库的更新。那么,诚实的一方、中继或任何人都可以向桥接提交数据库更新,但同时他们也应该提供证据,证明这个数据库更新是正确的。而这就是我们所要做的事情。我们只是想让智能合约相信,对数据库的更新是有效的、正确的,并且应该被接受和处理的。
有两种方法可以做到这一点,使用两种不同类型的证据。一个是 Arbitrum 目前使用的欺诈证明:任何人都可以来提交一个潜在的更新给桥接,也可以验证它。然后大概会有两个星期的时间,让任何人都可以来挑战它。当有人发起挑战时,桥接将协调这个欺诈证明博弈机制,来回移动,直到找到一个我们没有达成共识的非常小的状态转换。然后桥接将独立地检查,找出谁有错。这就是欺诈证明系统的工作方式。它的缺点是,有一个两周或一周的挑战期,因为需要提供足够的时间让挑战者站出来,保护这个系统。
而有效性证明系统,zk-Rollup 使用的机制,比如 Starknet、zkSync、Polygon Hermez、Scroll、Taiko 等等。当用户或运营者提交数据库更新到桥接上时,他们也提供一个有效性证明。这是一个数学证明,排除所有合理的怀疑,并表明这个数据库的更新是正确和有效的。这是一个非常强大的属性,因为任何人都可以向桥接提交一个带有证明的更新,然后桥接就可以立即相信该更新是正确和有效的并处理它。
这是两种不同的方法,各有利弊。但同样,它们只是解决了那一个问题:对数据库的更新是否正确?仅此而已。还有其他问题需要解决,如审查问题、数据可用性问题等等。
如何去中心化 Rollup 以及 DAO 治理方案的采用
Franci: Rollup 系统内仍然存在着许多需信任和需许可的各方,你如何看待去中心化 rollup 的进程?你认为最重要的目标是什么,我们最需要紧急去中心化哪一部分?
Patrick: 我们还是回到前面举的中心化交易所例子来思考这个问题。像中心化交易,它们背后其实有一个排序器。比如我登录 Coinbase 网站提交交易,它的排序器会接受我的交易,并进行排序。然后把这些交易传递给服务器端,它们便会被数据库处理和更新。这就是这些交易所目前的架构,这是非常中心化的。整个过程中,我们不知道这个黑箱里到底发生了什么。我们必须完全信任这个实体来保护数十亿美元的资金,而且基本上还是依赖于人为的程序进行。这很糟糕。
我们不想依靠人类,因为人类不善于执行规则。因此,在 rollup 方面,我们真正想做的是试图复制这种架构,但同时使其更加透明和可审计。这意味着我们每个人都可以检查它是否正常运行。我们依靠软件来执行规则,而不是人类。
那么基于这个背景,我们需要关心两个方面。首先是排序器,他们唯一的工作是有一个面向用户的网站或界面或 API,接受用户的交易并决定执行的顺序,然后把已排序的交易递给下一方。他们可以直接把交易递交给以太坊上的桥接智能合约,也可以把交椅传递给一组执行者。执行者会接受这些交易,按照顺序执行,然后创建一个数据库更新,最后向桥接提议更新。
好了,有了这三个不同的行为者,这时就真正涉及到什么是去中心化的讨论了。正如我已经提到的,对于一个rollup,我们只需要假设有一个诚实的人可以保护这个系统。那么问题是,谁充当这个诚实的一方?是一个排序者还是一个执行者?
而 rollup 中有个好处是,接受用户交易的排序器是可选的。实际上你不需要一个排序器,这只是为了提供一个很好的用户体验,让你得到即时确认的一个很好的承诺。其原因是,以太坊上的桥接合约才是最终负责敲定交易的排序。也就是说,任何用户或者任何智能合约都可以把想在系统上或链外系统上执行的交易直接发送到桥接上。桥接收到交易后,最终会排序并执行。所以很好的一点是,因为我们可以相信桥接合约总是做正确的事情,我们并不关心排序器的情况。所以,排序器是受信任的,但它们是可选的。它们的存在只是为了提供良好的用户体验,而不是真的为了保护系统。它们只是提供交易将按何种顺序执行的承诺,但没有任何保证。
然后便是下一个角色执行者的工作,他们接受并执行交易,然后向桥接提议状态更新。因此,这需要谈到最终确定性的三个层级。只有当交易被排序并按照这个顺序执行后,桥接才会采取行动,例如,允许用户提取他们的资金。
回到最开始的问题,谁充当诚实的一方?根据前面所说的,排序者并非必需要诚实的。而且,也不一定需要一大群排序者,可以是一个、三个、五个。
而负责执行交易的执行者,才是我们需要担心的去中心化的地方。但这里的去中心化与我们在 layer1 上的思考方式非常不同。我们在 rollup 中并不是真的要最大化活跃的参与者的数量。在以太坊协议层上有 50 万个质押者。而在 rollup 中并不需要那么多的人成为执行者,因为我们真正需要的是一个诚实的一方。因此,去中心化实际上是在说,这个系统能否足够开放允许一个诚实的人站出来并保护这个系统?而无需那么浪费资源。
那去中心化还有第二部分就是关于如何治理这个网络。我们如何共同参与决定系统的升级方式?包括对智能合约的软件升级和链下组件的升级。社区如何对此达成共识?这是一个完全不同的去中心化的讨论范围。这更像是一个治理问题。我们如何管理这个系统?这可能是想要最大化参与的地方。
那么总结一下,关于去中心化有两个方面。对实时系统的去中心化,只需一个诚实的一方或一个诚实的执行者。这就是我们所追求的基本假设基线。然后我们有关于系统的治理和软件升级的治理的事情,在这里就可以使用 DAO,这里是需要人类干预的部分。有时我们需要人类来决定升级,这时需要一个 DAO 或某种方式在这方面达成共识,使治理参与者最大化。
Franci: 那么在治理方面,你认为移除升级密钥是去中心化治理权的最终目标吗?
Patrick: 我们先给听众提供一下背景。比如当我们需要考虑到某个系统的实时部署时,我们将面临一个问题:如何执行升级?一是可能是会有一个管理员密钥,假设有一个管理员在那里,他们有专属权限,可以根据他们认为合适的方式升级智能合约。第二种方法更像是一个多签,相比于信任单个实体,我们可以信任 5/9 或者 9/12 的多签。然后第三种方法,对这些 rollup 系统 (Arbitrum 便使用这个方法) 来说是比较独特的,这种方法会引入一种链上治理组件。能否引入由整个代币持有人组成的 DAO,可能是成千上万的人,就如何升级系统达成共识?一旦你有一个 DAO,就可以就升级做出决定,也可以围绕不同类型的授权做出决定。例如,也许 DAO 最终负责授权对系统进行升级,但他们也可以任命一个安全委员会 (9/12 的多签),这个安全委员会可以在紧急情况时介入以升级和保护系统,并非常迅速地修复漏洞。
整个过程真正酷的地方在于它是透明的,任何人都可以查看这些授权层级,当然还有每一方的责任。所以,这回答你刚刚的问题,我并不认为我们应该移除管理员密钥本身。我认为重要的是,这个过程是透明的,而管理治理的 DAO 或最终应用的治理形式可以让社区达成共识。因为我认为,当我们把 rollup 看作是一个软件堆栈时,在 99.99999% 的时间里,软件将自主地运行、执行规则以保护网络的用户。大部分时间都是如此。那么 0.000001% 的时间里,则需要某种形式的人工干预。要么提出升级软件的建议,要么及时介入并修复漏洞。这实际上与比特币或以太坊等并无太大区别。
唯一的区别是,这个管理过程和负责的各方是明确的,它是非常透明的。我们清楚地知道谁应该在正确的时间介入,做正确的事情。而在比特币和以太坊上,他们更多地依赖于粗略的共识。他们并不真的想定义这个过程,因为他们想要抵御治理攻击。最近在以太坊上出现了部分 PoS 崩溃事件。由于 Prysm 客户端出现一些 bug,用于最终确定性的小工具 (finality gadget) 出现了故障。于是 Prysm 不得不站出来修复他们的错误,然后重新部署。因此,即便在这些实时的可分层的网络中,为了保护系统,我们有时也会遇到需要人为干预的地方。我认为对于 rollup 也仍然需要这样做。但我们需要规定一些有效的程序,以便我们知道谁是拥有权限的人并让他们对 rollup 系统负责。
推荐阅读
《你不是真正的 Rollup》
https://www.ethereum.cn/Layer2/rollups-arent-real
Tiers of Transaction Finality for Rollups
https://stonecoldpat.substack.com/p/tiers-of-transaction-finality-for?utm_source=profile&utm_medium=reader2
Deconstructing Rollups
https://stonecoldpat.substack.com/p/deconstructing-rollups?utm_source=profile&utm_medium=reader2
Where Is the One Honest Party for a Rollup?
https://stonecoldpat.substack.com/p/where-is-the-one-honest-party-for?utm_source=profile&utm_medium=reader2
What Does It Mean to Decentralise a Rollup?
https://stonecoldpat.substack.com/p/what-does-it-mean-to-decentralise?utm_source=profile&utm_medium=reader2