深度对话:从底层看Sui设计理念及网络规模扩展

近日,我们采访了George Danezis以了解Sui的交易处理系统如何促成高性能网络。他是Mysten Labs的联合创始人和首席科学家(Sui的最初贡献者),也是伦敦大学学院(University College London,UCL)安全与隐私工程领域的教授。

您来自学术领域,能介绍一下您的研究重点吗?

我是UCL的教授,研究重点从广义上说叫安全和隐私。在20世纪早期,我在点对点系统和匿名系统方面进行了相当多的研究,这些系统许多都是以存储为重点的大型分布式系统。当整个区块链变得更加注重执行,尤其是以以太坊为代表的,我对分布式账本和区块链以及如何执行智能合约产生了兴趣。其中无需许可的特性,我在早期点对点系统的工作中就非常熟悉。于是,我在UCL的研究小组开始着手研究如何构建更高性能的系统。我们创办了Chainspace公司,将我们的一些想法商业化,后来团队被Facebook收购。然后,我们帮助Facebook提出了扩展区块链Libra/Diem的解决方案。但当方案没有取得进展时,我离开了,继续寻求其他机会来实现高性能区块链的理念。

你还是一个教授,那您觉得应用和研究之间有什么区别?

实际上并没有太大的区别。当我们进行研究时,我们会考虑实现特定目标的所有可能性,比如构建一个高性能的区块链或特定的功能。当然,在构建区块链或选择要在实际系统中使用的特定功能时,我们必须选择其中一个可能。我们必须不断地做出判断,在所有这些好的想法中,哪一个实际上对人们最有用?哪个是人们正在寻求的?区块链的采用存在哪些瓶颈?是什么阻止了人们实现他们想要做的事情?在构建系统时,您仍然会考虑所有可能性,并试图从学术文献中了解可能的情况,然后选择最相关的内容。这不仅仅是知识兴趣,而是为用户创造价值。

从理论到实际应用时,您是如何确定要解决哪些问题的?

我在研究中解决的主要问题是如何扩展区块链的不同功能。我专注于区块链的系统方面,比如,如何增加交易吞吐量并降低延迟。这方面的问题是显而易见的,每当我们看到以太坊上的某个合约变得非常流行时,以太坊平台就无法承受如此大的交易量,发生交易拥堵,费用暴涨。每当区块链取得成功的时候,我们都看到它可处理的交易量都超过了现有的能力。因此,很明显,问题在于没有足够的能力来满足人们在这些区块链上想要做的事情。这不仅仅是出于我们的想法,我们一次又一次地看到这种情况发生。在一段时间内,这被认为是一项有价值的挑战,不仅仅在我的团队,实际上整个学术界都在研究区块链,大家都在用不同的方式解决这个问题。现在,已经有相当多的技术被开发出来扩展区块链的能力,以解决这些挑战。但在当时,众所周知,很多人用不同的方式来解决它。

L2网络是人们提出的解决扩展问题的一种方式,这与建立像Sui这样的新型L1网络,有什么区别和好处呢?

L2是以太坊生态系统中的扩展解决方案。但是对于应用程序开发者来说,使用L2网络有点棘手。当一个L2网络尝试与以太坊进行交互时,必须进行桥接活动,虽然对于任何L2/L1的关系都是如此。在L1中代表coin、资产或其他内容的状态必须在L2中得到镜像,反之亦然。除此之外,L2还必须有一些机制,以便L1可以验证在其中发生的一切。但这仅仅是第一部分,即存在于L1上的任何资产需要转移到L2上,L2上必须发生一些活动,然后以某种方式将资产转回L1。这是很麻烦的。

对于tokens这种可替代的资产,这种桥接活动还算顺利,因为人们拥有两个帐户和一个桥接中间件。但是对于更一般的资产来说,效果并不好。要想在以太坊上实际使用L2网络开发比tokens更复杂的应用,您需要在两边都有智能合约,一个用于铸造(mint),另一个用于销毁(burn)。它们必须在两个不同的生态系统穿梭,这是每个合约的自定义活动。您不能简单地说,我会创建一个L2网络,然后把所有资产带走,然后按照自己的意愿进行操作,将它们带回来,没有这种概念。这是一个手动的过程,非常容易出错。因此,这并不是一个很好的体验。想象一下,您在多个不同的L2网络上都有资产,而且在不同的L2网络上都有这些自定义智能合约。每次您想要对位于另一个L2网络上的某个状态进行操作时,您都必须一路桥接回到L1,然后再回到L2。您不能轻松地说,我在这个区块链上刚刚做了一些事情,然后我要在另一个区块链上做另一些事情,我不需要考虑它是在哪个L1或L2上。一切都在这里,我现在就拿在手上,已经准备好在我想要访问的任何状态上进行更多交易。这就是为什么将状态分散在L2网络中的体验不好。在不同的链之间移动资产非常棘手,对用户来说也显而易见。因此,这就是为什么L2网络从未真正引起我兴趣的原因。

还有一个例子是Cosmos,它拥有一个非常有趣的生态系统,采用了另一种方法,即通过为不同的apps使用不同的区块链来扩展。我们可以在不同的链上进行不同的交易速度,当需要在不同的apps之间进行操作时,可以在链之间桥接资产,但是它也面临同样的问题。每次您想要使用不同的apps时,您首先必须进行桥接操作,这对用户来说是微妙且显而易见的,然后您可以使用该app并桥接回来。您会发现自己花费更多的时间将资产从一条链转移到另一条链,而不是做您真正想做的事情。

在Sui上,我们的方案是建立一个大型数据库,实际上,它包含了所有被验证节点复制的状态。一旦您完成一笔交易,所有在同一个数据库中的状态都可以用于进行下一笔交易,而用户不必在L1和L2上之间不断地移动资产状态。

Sui Lutris是Sui协议的基础,它的关键创新是什么,能使得Sui具有高吞吐量和低延迟的特性?

Sui Lutris由两个关键理念组成:(1)对于区块链上的许多操作,实际上不需要进行共识;(2)当您确实需要进行共识时,有一种非常高吞吐量的方法,它将这两种方法结合在一起。Sui Lutris是Sui分布式系统的核心,确保在分布式网络上进行交易时,遵循协议的两个不同验证节点永远不会处于不一致的状态。从而不会出现一个验证节点认为您花了一个coin并将其发送给了Alice,而另一个验证节点认为同一个coin实际上发给了Bob的情况。

两条不同的路径,一条不需要共识(快速路径),另一条需要共识(共识路径)。当您要操作的对象仅属于您自己,例如您自己的NFT角色和您想要组合的帽子,以便您的角色可以戴上帽子,理论上其他人不应该对它们进行操作。在这些情况下,Sui使用了快速路径,它表示您可以操作自己的对象,您可以在没有等待共识的情况下获得交易的最终性,确保交易发生,帽子戴在了您的NFT头上。

但在某些情况下,交易不仅仅只涉及属于您自己的对象,它们由许多人共享。例如,如果有一个拍卖会出售小帽子,这种类型的拍卖会在Sui中表示为一个共享对象。人们可以竞标,出价最高的人赢得帽子。这种拍卖是一种不属于单个实体的对象,每个人都必须能够竞标、共享,并更新关于最新出价的状态,这些类型的操作需要额外的共识。Sui Lutris允许您拥有共享对象并在其上执行交易,从而您可以拥有其他对象,更改共享对象的状态,或创建新的共享对象。它允许两条路径共存,并且由特定个体拥有的独享对象或由多个人共享的共享对象之间相互作用。

这两条不同的路径具有不同的优势。独享对象的快速路径的延迟极低,需要的时间少于一秒,非常快,并且可以广泛地扩展。共识路径的延迟则较高,通常超过一秒,容量也相当高,但是,与第一条路径相比,它更难扩展。在Sui上,那些真正通过每天数百万次交易来推动链上apps的通常使用第一条路径,并且在很大程度上将其app结构化为主要在独享对象上进行最多的交易,而不是共享交易。另一方面,进行复杂工作的协议(例如DeFi)通常实行第二种类型的交易,因为它们必须将许多不同人的竞标或流动性结合在一起以执行操作。

Sui上的app开发者是否可以设计他们的apps以利用快速路径?

是的,绝对可以。我认为这是一个扩展apps设计者的核心工作。智能合约开发者完全可以控制他们在合约中操作的对象在任何特定时间内是单个实体的独享对象还是共享对象。在Sui中扩展app的一个诀窍是确保大部分操作基本上是在独享对象上进行的,因为Sui可以在非常低的延迟下管理您想要的许多操作,这是一种很好的体验。对于游戏所必需的操作应该在这个类别中进行,与需要通过共享状态和共享对象进行调解的操作相比,它们的延迟非常低。一旦点击,交易就可在网络上立刻完成。

智能合约设计者对此有完全的控制权,他们基本上可以准确的指定每个类别中的交易是什么。当然,合约的第一个版本可以将所有内容都视为共享状态,而所有内容都会通过较高延迟的共识路径进行,但随着需要进行扩展,开发者需要考虑在多大程度上可以做到不需要这些部分。

可编程交易区块在这其中如何发挥作用?

可编程交易区块可以在快速路径或共识路径上发挥作用。如果一个可编程交易区块只涉及您的独享对象,这意味着您可以在一个链上操作中执行多项操作。举个例子,假设您是一个CEX,许多人在这里买卖不同的coins,您可以在链上进行一次交易,概念上对应于人们所买卖的内容。但因为您是交易所,它们都属于您,因此可以同时结算一千个交易,这是快速路径。另一方面,如果在可编程交易区块内的一些对象是共享的,那就进入了共识路径,这时延迟会稍高一些,不是不到一秒钟而是要几秒钟。

主网上线了100多天。Sui的表现有证实您假设的研究理论吗?有没有什么让您感到惊讶的?

有几件事情证实了Sui的设计,但也有一些事情令人深思。一个是在交易量特别多的日子里,甚至是在一个特别的日子里,每天的交易量甚至超过6000万笔,其中大部分交易是处于快速路径。Sui Lutris非常可扩展且具有非常低的延迟。在那之前,尚不清楚是否会有人使用这条路径,但当需要大量交易和低延迟时,它被使用了,而且非常有效!这很容易看到,就是这个方法。在那些日子里,Sui的交易量超过了所有其他区块链的总和。这是一个有趣的验证,证明了Sui的设计是合理的。

与此同时,Sui社区发现这个快速路径有点微妙。因为对象的所有者在某种程度上必须管理他们自己对象上的操作顺序,有时可能会出错。有时他们甚至可能使用无法帮助他们的库,而库本身出错,因此有时对象被锁定。通常它们会在一天结束时,即一个epoch结束时解锁,但这并不是一个很好的体验。设计智能合约的人对此可能会感到害怕,担心可能会错误地发生这种情况,这阻止了他们充分利用低延迟和可扩展性的设施。一整套技术正在被开发,允许那些被错误地锁定对象的人在几秒钟内快速解锁它们。因此,如果您尝试使用快速路径,发生错误,您的对象被锁定,那么您可以立即使用共识路径将其解锁,而无需等到一个epoch结束。

而且,奇怪的是,这不仅仅是为了避免错误。它还允许开发人员通过快速路径来表达更多的事情,存在一些潜在的技术,其中一些对象不仅仅是由一个当事方拥有。也许有一个对象是你和我共同拥有的。因为它是共享的,通常在该对象上的交易必须通过共识路径进行。然而,如果Sui有一种快速解锁对象的方法,开发人员实际上可以尝试通过快速路径进行交易。在你和我恰好在同一时间对同一对象进行交易的情况下,系统将被锁定,无法决定哪个交易发生在下一个,然后Sui可以解锁它,并使其经过共识路径,使其变为共享并解决它。但除非人们故意试图竞争,否则这种情况是不可能发生的。一旦Sui具备了允许解锁对象的功能,它应该能够让属于多个人的对象通过快速路径。这是一种试图通过快速路径尽可能多地传递交易量的游戏,这是正在开发以帮助构建者社区的一种类型的事情。

您能更详细地分享一下当前导致对象锁定的原因吗?

当一个对象属于你时,它之所以不需要通过共识来告诉Sui发生的一系列操作的顺序,是因为没有其他人可以对你的对象进行操作。Sui依赖于你告诉系统,动作A将首先发生,动作B将其次发生,动作C将最后发生。系统仍然必须检查ABC是否被所有人以相同的顺序看到。该系统通过一个分布式协议来实现,只检查我们是否都依次看到了ABC。问题是,如果你犯了一个错误,或者你的软件犯了一个错误。例如,如果你的手机控制你的资产,你的计算机控制你的资产,你的手机表示首先发生的是A,而你的计算机表示首先发生的是B。你错误地对两件不同的事情进行了排序。这是一个矛盾。在这种情况下,Sui会说:“好吧,我委托告诉我顺序的人似乎给了我两个矛盾的事情,所以我不知道该怎么做。我不知道如何解决这个问题。”因为Sui通常通过共识路径来解决这个问题。但在这里,你正试图使用快速路径。所以Sui举起了它的手说:“好吧,在这里出现了一个错误。”

最初的假设是,这种情况不会经常出现,但事实证明它经常发生,因为人们使用不同的设备,或者试图在同一时间对相同的对象进行多次交易。目前,当这些对象被锁定时,Sui会等到epoch结束才将它们解锁,这非常令人担忧。想象一下,如果你的资产在一天内无法使用,这实际上可能是一个严重的问题。

因此,现在Sui需要发展以在某物被锁定时采取正确的行动。如果被委托提供正确顺序的实体给出了一个不明确的顺序,Sui将把整个情况通过共识来解决。这将在几秒钟内发生,而不是在一个epoch结束时发生。

您的很多研究都是围绕隐私展开的。您对公链如何最好地平衡透明度、可追溯性与隐私有何看法?

在公链中,如何平衡透明度、可追溯性和隐私,这是一个非常应用相关的问题,而我在隐私方面的观点是,什么需要保持隐私在很大程度上取决于应用本身。例如,在Sui上,让应用开发者来开发合约以保护其用户的隐私是很合理的。因为有些人只想开发游戏,可能对隐私问题的关注不是那么大。有些人想在区块链上处理金融事务,隐私可能更令人担忧,但与此同时,还会涉及到其他种类的监管问题。所以Sui的态度是,我们会提供给你一个很好的平台,你需要在这个平台上构建隐私。

为了帮助人们构建隐私,Sui提供了一些加密原生支持,这些支持在设计智能合约时可能会对他们有用。其中最重要的一个是在Sui上验证零知识证明的能力。有一个本地函数可以验证最广泛使用和理解的方案之一,即由我的同事Jens Groth开发的Groth16方案。这意味着,实际上,apps的设计者可以在链下验证某些事件,而不需要透露这些事件是什么。这是构建一整类隐私友好型应用的基本构建模块,它们将一些状态保持在链外,但在链上,您可以验证链外发生的任何事情是正确的。

应用开发者决定了他们的应用需要什么样的隐私保护,并使用这些原生支持来组合链上、链下、链上加密等策略,以应对他们可能遇到的隐私问题。

在Sui上是否有更多的隐私原生支持?

社区正在思考开发者在更加隐私友好的情况下编写智能合约所需的支持,零知识证明就是其中之一,有些人可能会认为Sui需要更多通用的数学或密码学函数在链上。我们很愿意看到智能合约的设计者就缺失的部分提供反馈,还有其他一整类的技术可以用来保护隐私,比如多方计算或可信硬件。不同的区块链已经朝着这些方向发展,这些需要非常复杂的附加系统。社区中需要足够的证据表明人们想要这些技术,因为它们代表了对Sui架构的一些基本变化。但是如果社区想朝着这个方向发展,就会有一个提出添加隐私保护方式的流程。

您认为在未来6到12个月内Sui会如何发展?

这取决于人们在Sui上开发了什么样的应用,在短期内,很多改进将针对人们实际构建的应用。从非常长远的角度来看,在区块链标准下,6到12个月可以被视为非常长的时间,我们将会改进Sui Lutris协议,以实现更低的延迟,更简单的协议,使Sui能够更好地扩展。此外,还会使经济更高效,使验证节点能够在更受限的硬件上运行,并将现有的硬件用于实际执行交易,而不是进行密码学或区块链的其他开销。这是我们预期将会看到的内容。


关于 Sui Network

Sui是基于第一原理重新设计和构建而成的L1公有链,旨在为创作者和开发者提供能够承载Web3中下一个十亿用户的开发平台。Sui上的应用基于Move智能合约语言,并具有水平可扩展性,让开发者能够快速且低成本支持广泛的应用开发。获取更多信息:https://linktr.ee/sui_apac

官网|英文Twitter|中文Twitter|Discord|英文电报群|中文电报群

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/56800.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

849. 到最近的人的最大距离(JavaScript)849. Maximize Distance to Closest Person

给你一个数组 seats 表示一排座位,其中 seats[i] 1 代表有人坐在第 i 个座位上,seats[i] 0 代表座位 i 上是空的(下标从 0 开始)。 至少有一个空座位,且至少有一人已经坐在座位上。 亚历克斯希望坐在一个能够使他与…

Qt xml解析之QXmlStreamReader

文章目录 背景QXmlStreamReader简单介绍使用QXmlStreamReader添加头文件<QXmlStreamReader>toString()toInt()完整代码 背景 项目中遇到需要解析某个方法返回的xml字符串&#xff0c;奈何C/C中没有原生的方法可供调用&#xff0c;只能使用第三方库&#xff0c;搜了一圈资…

基于闪电连接过程算法优化的BP神经网络(预测应用) - 附代码

基于闪电连接过程算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于闪电连接过程算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.闪电连接过程优化BP神经网络2.1 BP神经网络参数设置2.2 闪电连接过程算法应用 4.测试结…

OpenCV实现摄像头图像分类(Python版)

先安装MMEdu库&#xff01; MMEdu安装&#xff1a;https://blog.csdn.net/zyl_coder/article/details/132483865 下面的代码请在Jupyter上运行&#xff0c;并自己准备数据集。若模型还未训练&#xff0c;请先在本地训练完模型后再进行模型推理。 import cv2 capture cv2.Vi…

js流式计算大文件sha256

小文件计算sha256&#xff1a; import sha256 from crypto-js/256console.log(sha256(message));大文件流式计算sha256 超大文件的sha256&#xff0c;不能直接用上面方法sha256(file)&#xff0c;这会让用户等待非常久&#xff0c;所以需要流式计算&#xff0c;原理大概就是把…

linux搭建minIO对象存储服务,springBoot整合

minIO 服务搭建 1. 创建安装目录 mkdir -p /usr/local/minio2. 进入安装目录 cd /usr/local/minio3.下载安装包 (wget 如果下载太慢,可以手动下载并上传安装包) wget https://dl.minio.io/server/minio/release/linux-amd64/minio4.创建数据存储文件夹 mkdir -p /usr/loca…

恒流电路的三种设计方案

作为硬件研发工程师相信对恒流电路不会陌生&#xff0c;本文介绍下三种恒流电路的原理图。 三极管恒流电路 三极管恒流电路 三极管的恒流电路&#xff0c;主要是利用Q2三极管的基级导通电压为0.6~0.7V这个特性&#xff1b;当Q2三极管导通&#xff0c;Q1三极管基级电压被拉低而…

大数据课程K12——Spark的MLlib概述

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解Spark的MLlib概念; ⚪ 掌握Spark的MLlib基本数据模型; ⚪ 掌握Spark的MLlib统计量基础; 一、Spark MLlib介绍 1. 概述 MLlib是Apache Spark的可迭代机器学习库。 2. 易于使用 …

LVS集群和分布式概念

LVS 一.集群和分布式概念 1.1 集群 在计算机领域&#xff0c;集群早在 1960 年就出现&#xff0c;随着互联网和计算机相关技术的发展&#xff0c;现在 集群这一技术已经在各大互联网公司普及。 1.1.1 集群概念 计算机集群指一组通过计算机网络连接的计算机&#xff0c;它们…

【优选算法】—— 二分查找

序言&#xff1a; 本期&#xff0c;我们将要介绍的是有关 二分查找算法 并通过题目帮组大家更好的理解&#xff01; 目录 &#xff08;一&#xff09;基本介绍 1、基本思想 2、解题流程 3、复杂度以及注意事项 &#xff08;二&#xff09;题目讲解 1、在排序数组中查找…

Sql Server导出数据库到另一个数据库

1.打开sql server数据库&#xff0c;连接到服务器后&#xff0c;找到需要导出的数据库&#xff0c;右击后选择 任务->导出数据。 2.点击 下一步。 3.身份验证可以使用SQL Server身份验证&#xff0c;就是当时建立连接时的用户名和密码&#xff0c;数据库名称使用默认的&…

大漠插件7.2336

工具名称:大漠插件7.2336 更新时间2023-08-28更新内容/v7.23361. YOLO综合工具标记逻辑优化. 更加的方便2. YOLO综合工具增加了默认类. 对于多个同类可以不用每次都进行选择.3. YOLO综合工具增加可以对模型的输入大小进行修改4. YOLO的dmx格式变更.新老版本不混用. 新的dmx格式…

C++实现YOLOP

C实现YOLOP 一、简介 使用OpenCV部署全景驾驶感知网络YOLOP&#xff0c;可同时处理交通目标检测、可驾驶区域分割、车道线检测&#xff0c;三项视觉感知任务&#xff0c;依然是包含C和Python两种版本的程序实现 onnx文件从百度云盘下载&#xff0c;链接&#xff1a;https://…

linux中复制文件的指令

可以使用以下命令将文件file1复制为file2&#xff1a; cp file1 file2 cat file1 > file2 dd iffile1 offile2 cp是Linux和Unix系统中最常用的复制命令cat命令会将file1的内容输出到终端&#xff0c;并通过重定向符号“>”将其写入file2中dd命令可以用于复制文件&#…

vue权限管理——菜单权限设置

1.前提&#xff1a;后端提供菜单对应数据 此处用mockjs模拟 const menuList [{id: 1, path:/uploadSpec,authName: "上传spec", icon: User, children:[], rights:[view,add,edit,delete]},{id: 2, path:/showSpec, authName: "Spec预览", icon: DataAn…

<C++> STL_deque

<c> STL_deque 1.deque的使用 deque(双端队列)&#xff1a;是一种双开口的"连续"空间的数据结构&#xff0c;双开口的含义是&#xff1a;可以在头尾两端进行插入和 删除操作&#xff0c;且时间复杂度为O(1)&#xff0c;与vector比较&#xff0c;头插效率高&a…

一生一芯9——ubuntu22.04安装valgrind

这里安装的valgrind版本是3.19.0 下载安装包 在选定的目录下打开终端&#xff0c;输入以下指令 wget https://sourceware.org/pub/valgrind/valgrind-3.19.0.tar.bz2直至下载完成 解压安装包 输入下面指令解压安装包 tar -xvf valgrind-3.19.0.tar.bz2.tar.bz2注&#xf…

Keepalived+Lvs(dr)调度器主备配置小实验

目录 前言 一、实验拓扑图 二、配置LVS&#xff08;dr&#xff09;模式 三、配置调配器热备 四、测试 总结 前言 Keepalived和LVS&#xff08;Linux Virtual Server&#xff09;是两个常用的开源软件&#xff0c;通常结合使用以提供高可用性和负载均衡的解决方案。 Keepalive…

栈与队列:常见的线性数据结构

栈&#xff08;Stack&#xff09;和队列&#xff08;Queue&#xff09;是计算机科学中常见的线性数据结构&#xff0c;它们在许多算法和编程场景中发挥着重要作用。它们的不同特点和用途使得它们适用于不同的问题和应用。 栈&#xff08;Stack&#xff09; 栈&#xff0c;作为…

身为程序员,你有哪些提高写代码效率的工具?

首先&#xff0c;每个程序员都是会利用工具的人&#xff0c;也有自己囊里私藏的好物。独乐乐不如众乐乐&#xff0c;今天笔者整理了3个辅助我们写代码的黑科技&#xff0c;仅供参考。如果你有更好的工具&#xff0c;欢迎评论区分享。 1、Google/Stackoverflow——搜索解决方案的…