密码学创新改变区块链

近日,我们采访了Mysten Labs的联合创始人兼首席密码学家Kostas Chalkias,讨论了加密创新技术如何成为Sui的核心,以及即将推出的新功能。

您能简要解释一下密码学家在构建区块链中的角色吗?

我在比特币的早期阶段就开始从事这个领域的工作了。实际上,我曾与Satoshi的首批开发者之一的Mike Hearn合作。我拥有密码学博士学位,在区块链时代来临之前,我的关注点主要是学术界。因为参与过这方面的工作,我可以告诉你在构建区块链基础设施公司或其他公司时,密码学家通常可以担任三个关键角色。

其中一个角色显然是研究,因为密码学通常涉及到非常先进的数学,所以你必须在这方面进行创新。工作之一就是寻找新的、有趣的算法,同时还要对破解算法进行研究。我之前在一家区块链公司的职责之一就是审查密码学的实现,并以白帽黑客的身份为它们寻找攻击漏洞。想法就是“你是数学家,你是密码学家,你要看一下这个特定的数字签名算法或者随机性信标等的实现,检查一切是否正常。”这就是研究范畴。

另一个角色是实践,也就是应用密码学。应用密码学家从产品团队那里获取需求,比如他们希望有一种更快的签名方案,或者希望为客户或社区创建新的隐私功能。这就不仅仅是设计,也要进行实践。有时候你必须是一个非常出色的软件开发者,特别是当你的团队中没有高级安全编程人员时,你必须在编码方面进行新颖的优化。

第三就是产品创新。很多时候,你不仅不会得到任何具体的需求,相反,因为你了解了一些对之前未完成事情的有用知识,你还要有能力提出新的想法。

总结一下,区块链密码学家的典型角色,不仅包括研究、实践层面,就像章鱼一样,我们的触角也伸入了产品方面,有时甚至需要提出一些创新性建议。

通常来说,是一个人同时做这三件事情呢?还是一个团队分工进行?

对于Sui来说,因为我们引入了许多创新,因此就需要多个人在多个工作流中合作。我是Mysten Labs的首席密码学家,也是Sui的创始人之一,所以我参与了大部分而不是全部的工作,一个人不可能完成所有事情。我可以肯定地告诉你,我现在仍然在从我的团队中学习。

想象一下,我们不只是使用一种编程语言在工作,比如你可能会用使用Rust语言这种功能原创的实现方式去做一个概念验证。但后来我们意识到,大多数人在Web上使用的是JavaScript或TypeScript,所以你不可能全部自己来写。但有时你也不能把工作委托给像软件工程师这样的通用型人才,因为有一些优化需要拥有数学和加密原语的高级知识。或者你可能需要与一些你不熟悉的数据库进行交互,因此你需要其他人来接手工作。

在我们的密码研究团队中,总共有10个人左右。我们每个人在日常工作中都同时进行创新和实践工作,我非常高兴能成为这个出色团队的一员,我们有很多“杰出”的思想。有时候我是提出想法的人,但在密码团队中有这么多专家,我也会听从其他人的意见,我们互相合作。我可以帮助方案落地,提供资源,或给出如何扩展和应用一个创意想法的灵感。

密码学是区块链基础设施的一个极其关键的部分,所以两只眼睛是远远不够的。如果出现问题,可能就“游戏结束”了,所以你需要更多的“眼睛”。此外,你还需要许多创新者。

来自外部的关键研究对Sui的设计产生了什么影响?内部讨论中有哪些关键创新?

在密码学方面,对我们产生影响的外部研究是零知识证明等技术的演进,以及在文献中提到的隐私保护技术。我们处于一个合作的环境中,不仅仅是区块链在进行密码学研究,全球范围内也有研究机构、大学部门在进行理论工作。我个人看到的情况是,Mysten Labs非常擅长在这个领域找到之前没有人实践过的新理论,其中一些假设可能不准确,但我们将其与现有技术结合起来,最终推动我们创建出一款新颖的产品。

扫描二维码关注公众号,回复: 15501680 查看本文章

Sui引入了一个名为零知识登录(ZK Login)的新功能,就是这样产生的。一些技术是外部提出的,但仅凭这些技术还不足以为L1区块链提供无缝衔接的身份验证机制。我们实际上是在外部研究的基础上创造了新的功能,将其应用在内部垂直领域。最终,我们提出了一个完整的解决方案。

实践出真知,我们不只是要理论研究,我们需要的是可以投入生产的东西。因此,我们从内部和外部的讨论中获得反馈。很多时候,甚至超过50%的时间,我们阅读科学论文、参加活动、担任评审和演讲者、接收反馈。然后,我们会将所有这些转化为在Sui上的实践。

我看到我们的一些代码随后被其他人、其他公司甚至我们行业之外的公司使用。我们为使用Sui构建了一些最快的密码原语,但最终,你会看到一些大公司获取了这些代码并将其应用在自己的基础设施中,而且还不一定是区块链的基础设施。

内部创新通常由产品团队发起,他们会来找我们,说:“目前这个是不可能实现的。我们尚未看到相关研究说明,你们能否解决这个问题?”

例如,启用可发现的区块链地址并保护隐私的有趣问题。在您创建帐户之前,我如何向您的电子邮件或电话号码发送信息?想象一下类似Venmo的功能,我向您发送资产,然后当您意识到它们存在时,您再去获取它们。要找到解决方案,我们需要内部头脑风暴,以隐私为出发点,思考如何正确实现。理论部分可以从外部获取,然后我们将所有这些融合到一套工具中。大多数情况下,我们在这方面非常成功,我们设法提出了解决上述问题的方案,而且很少有我们遇到产品问题而无法找到解决方案的情况。

Move通常是如何使您能够在密码学方面为使用Sui的开发人员构建这些创新,以及提供更安全的体验?

我曾经是一名Solidity开发者,编写以太坊智能合约,我对破解以太坊智能合约也充满热情。我最早的一份工作是审核以太坊上的彩票合约,我很成功地破坏了一些算法。当时,随机性算法可以说是不公平且不透明的。这实际上让我明白了,智能合约开发人员通常只是编写小脚本的工程师。智能合约不是大型程序,也不是具有大量管理员身份验证步骤的复杂数据库。通常,只需要几天的培训,一个人就能编写并部署智能合约。但它需要非常仔细的审计(并非每个人都在正确处理这个问题),了解这些,你可能会对我们每周看到的情况感到惊讶。此外,Web2与Web3之间的交互也可能存在隐藏的陷阱。

我们意识到在以太坊上,由于两个特定原因Solidity的一些安全性存在问题。首先,工程师们在优化压缩以减少gas费,这可能最终导致你因为没有覆盖边缘情况而错过一些东西。还有可重入攻击的问题。想象一下一个智能合约向另一个智能合约支付资金,但没有更新自己的状态,这种类型的攻击在过去曾导致大量资金损失,包括多年前的以太坊DAO遭受了这种攻击并导致以太坊的分叉。

Move没有这些问题,尤其是对于可重入性问题,因为我们一开始就从源代码上进行了保护,我们不允许大家犯此类错误。而且,我们创建了更加面向对象的Move语言,这与原始的Facebook Move有很大的区别,这在代码可重用性方面非常有帮助。你不需要像在以太坊上那样复制粘贴智能合约代码,然后做一些调整。现在,你只需要调用原始代码,就能更好地保证一致性。

与此同时,在Move中,我们将一切事物都设计成对象。在Solidity中,当你将东西从一个合约转移到另一个合约时,如果没有上下文,通常你不知道它是什么。这是一个地址吗?是一个数字吗?是一些图像URL吗?还是其他什么?而当你将所有东西都作为对象处理时,类似于Java、C++和其他面向对象的语言,你可以将现有的客户端项目转换为基于智能合约的世界,而无需关注三重优化的压缩机制。与此同时,代码更易读了,你可以清楚地看到这个对象是什么。举例来说,这是一个老虎对象,我正在转移给你一个老虎对象。

那么密码学方面呢?当你拥有这些对象时,当我从一个钱包发送东西到另一个地址时,你会看到一个弹出窗口,上面写着“你正在转移一只老虎NFT。这只老虎NFT具有X特征”。由于面向对象的设计,你可以清楚地看到你正在做什么,你正在操作的任何对象。这有助于识别交易中的任何问题。许多用户曾被恶意软件或试图说服你在其他区块链钱包中签署不明事务的应用程序所欺骗。但是,在Move中,这变得更加困难。如果你有一个良好的用户界面,因为基于对象的模型,用户可以清楚地看到正在发生的事情,这提高了终端用户的安全性。

Move提供的对象并行处理方式,是另一个有助于设计更有趣和更酷炫算法的特性。想象一下,我有一些纸币,一张10美元和一张100美元。如果我要把这些纸币分给我旁边的两个人,我可以并行操作,因为它们彼此不会影响另一个的金额。

在以太坊中,从中央账户余额那里转移资金是基本操作。因此,如果我正在发送或接收资金,我必须对这些交易进行排序。我可能会先发送100美元,然后再提交10美元的交易,在此期间,如果有人要给我发送资金,那这3个交易都必须排序后按顺序进行。这个过程费用相当昂贵,这就需要并行处理了。

这就是我们从Move语言中获得所有这些酷炫功能的方式。作为密码学家,我们的整个想法就是,利用Move提供的并行处理和面向对象的编程来创建更安全、更具创新性的算法。例如,我们创建了一种彩票方案。虽然乍一看似乎很简单,但要正确地完成通常极其困难,特别是在构建多人购买彩票时这类复杂的边缘情况时。这就是优秀的密码学家发挥作用的地方。我们需要随机性,在你购买彩票时,这些彩票应该是并行售卖的,所有人几乎都可以同时买,但你们所有人可能只花费了一分钟或两分钟。在区块链上如何做到这一点?Move及其可用的密码原语真正提供了一个更好、更安全的密码学生态系统。

您看一下我理解的对不对,像这样的彩票系统可以用于一个产品,假设有300张票可用,但有成千上万的人想要它们,并且你希望它们被随机分配。这个系统对于Sui来说是基础的,所以任何公司都可以将其添加到他们的产品中?

没错。这里的好处可以再次归功于Sui面向对象的特性,你可以从许多不同的智能合约中直接调用同一个合约。我们有组合性这个概念,它实际上甚至可以帮你同时购买两个不同的彩票。这对于创建以前不存在的新体验非常有用。

在游戏行业中,你需要随机性,Sui非常符合需求,实际上Sui是最适合它的区块链之一。对于桌面游戏,即使是看似确定性的国际象棋,你也需要知道谁先开始,谁是白方,谁是黑方(众所周知,在国际象棋中,白方具有优势)。为了正确地将不同的玩家匹配到同一场比赛中,这需要一定的透明度。还有政府的应用场景,想象一下,税务机关正在进行一些统计抽样,并选择对谁进行审计。他们能否提供统计抽样是公平和透明进行的证明,你永远不知道他们会抽到谁。

如果存在一个具有无可辩驳地透明的算法,能够提供良好的不可预测性,组织者无法篡改,那么每个彩票或随机抽样就会有一个新的公平机会。

您最近在推特上发布了一系列观点,关于存储在区块链上的NFT使其能够随时间动态变化是非常重要。能否展开讲述一下这个观点,特别是关于Sui的数据结构如何增强了NFT的实用性这一方面?

如果你看到其他区块链从业人员的回复,你应该能看出那个推文引起了广泛的争议。我试图解释不同基础设施所提供的不同NFT属性。当NFT只是一个静态图像,并且你不对该图像进行高流量处理时,其他传统区块链确实可以运作地非常好。但在某些情况下,比如在游戏中,你会希望从你的NFT中获得更多。

Sui拥有一些算法,可以实现动态的NFT,其中的字段在每次事件发生时都会更新。当你玩游戏时,你拥有一个英雄,你不断获胜并跳级,可能会获得一些新的武器或力量,这一切都可以记录在区块链上,创造出全新的体验。如果存储廉价,正如在Sui中一样,NFT可以存储在链上。这将使你可以更轻松地从不同的智能合约进行读写,并直接进行组合。

在其他链上,你会面临一个问题,即变更不在状态中。要使另一个智能合约能够读取你的合约,他们需要了解你的结构。你需要有一个链下解析器,这会增加一些用户体验的复杂性。还有一些应用中存在条件逻辑,也就是在提交交易时你不知道将要先处理哪个NFT,那么我从链下世界能提供什么,这一点是很难扩展的。

还有威胁模型的问题。我们在推特上进行了富有成效的辩论,我可以理解他们的观点。的确,某些特定的应用可能会容忍压缩和链下存储,但在实践中,当我们将某些东西存储在链下时,我们正在改变威胁模型,通常是因为中心化问题。想象一下,如果你把它存储在AWS上,然后…亚马逊瘫痪了。亚马逊是一家公司,如果它倒闭了,你将无法访问这个特定的链下数据,当然你也无法在链上使用它;即使可以,也需要数据来生成证明,证明你确实将其存储在链下,因为有时候你只需要证明即可访问/获取。为了证明,你需要从AWS获取内容,然后将它转化成哈希,并将一个非常小的数据量发送到区块链上,然后这会以某种方式进行验证。但如果你没有这些数据,你无法这样做,你甚至无法证明我的NFT内容是什么。

所以尽管有人说可以在不同的地方存储,但还是存在一些中心化的问题。我同意,如果我们能够设计一个特定的方案,将所有这些威胁模型编码到区块链中,你将不再信任验证节点。或许,你的应用可以接受Google和亚马逊控制你的数据。

但有时问题是很灵活的,灵活意味着实际上我需要立即获取内容,并且延迟要尽量最小。如果你将其存储在其他地方,延迟就会加倍。首先,我需要外部存储速度快,然后我还需要验证节点快速地处理。如果我们能够避免这样的双重依赖,我们可以做到这一点。

总而言之,有几个重要因素。当你将所有东西都存储在链上时,组合性要容易得多。另一个是可用性。存储在链下的任何东西,包括在归档节点上,都可能会妨碍这一点。归档节点并不一定有理由始终提供过去的交易记录。肯定有一些钱包和其他新的参与者需要付费来存储和访问这些链下数据。这就造成了依赖关系,我们希望通过将所有东西都存储在链上或尽可能存储在链上来避免这种情况。

我同意目前有一些部分仍然存储在链下,但如果NFT的大部分属性都在链上,你将获得完全不同的体验,比如互相查看合约。而灵活性则取决于验证节点。

如果你想使用的是静态NFT,那么压缩是合适的。但是,如果你试图对NFT的使用方式有更广泛的拓展,那么Sui处理它们的方式为你提供了更好的选择。

是的,但是要注意的是,在接下来的几周或几个月中,我们将推出一些新功能。其中一些是加密或部分加密的NFT,以及其他许多目前不存在的应用。在许多情况下,你需要将一些数据存储在链上,以便轻松验证加密内容,甚至在链上解密加密内容。

关于Sui的未来,有哪些让你最兴奋的事情?

这是我最喜欢的问题,我加入Mysten Labs的主要原因是因为我更喜欢一个以创新驱动产品发展的地方。我们正在向社区提供新的东西,我甚至给我的儿子取名为Kryptos。我对区块链和密码学的技术非常深入,以至于我实际上说服了我的妻子给孩子取名为Kryptos,这可能太疯狂了。

如果你专门问我关于Sui中的密码学创新,有一件事可以确定,那就是我们允许多种身份验证方式。通常,大多数区块链只支持一种签名算法。以太坊有自己的算法,Cardano和Solana支持另一种算法。我们试图主动采取行动,让所有的区块链都能与我们连接。这意味着我们将会使用所有现有的算法,也意味着我们将与更多的钱包兼容。现有的钱包不需要重新扩展或增加新功能。如果你喜欢基于以太坊的钱包,我们支持该算法,可以直接使用。如果你使用的是iPhone,甚至都不需要安装钱包。iPhone和更高级的Android设备内部都有安全芯片,只支持特定的算法,我们也支持这个。

此外,我们还支持原生多重签名的概念。如果你对安全性有极高的要求,可以使用系统,在每次签名时需要使用三种不同签名方案中的两种。因此,密码学的身份验证部分,我认为是Sui的一项重要特点,将创造全新的身份验证体验。

另一件我个人非常喜欢的事情是,我们从一开始就在Sui内引入了零知识证明、隐私保护技术。因此,现在有人可以创建具有所需隐私水平的KYC系统,他们可以构建新的身份验证方案。他们甚至可以在资金转账时进行保密,同时还能遵守监管和审计要求。他们现在可以拥有所有这些工具,而无需亲自实施去试错。我们为开发者提供了一切工具。

除了所有这些算法之外,我们实际上还为我们的开发者解决方案工程团队提供了非常好的支持。我们每天与不精通密码学的团队合作。他们没有密码学家,但却有一个疯狂而又很酷的想法,我们会帮助他们!如果我们收到一些反馈说某个功能不可用,或者有关如何实现某个功能的问题,我们也能以极快的速度解决。


关于 Sui Network

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

官网TwitterDiscord英文电报群中文电报群

猜你喜欢

转载自blog.csdn.net/Sui_Network/article/details/131418764