本文,我们对话了 Mysten Labs 联合创始人兼首席密码学家 Kostas Chalkias,讨论了密码创新如何成为 Sui 设计的核心,以及即将推出的功能为何令人兴奋?
Q:您能简单解释一下密码学家在构建区块链中的作用吗?
A: 事实上,我曾经与中本聪的第一批开发人员之一(迈克·赫恩)一起工作, 我拥有密码学博士学位,在区块链时代之前,我的关注点主要集中在学术界。由于这种参与,我可以准确地告诉您加密技术为区块链基础设施公司发挥作用,通常分为三个关键角色。
首先是研究,你必须在密码学方面进行创新,因为它通常是非常高级的数学,一部分是寻找很酷的新算法,同时也需要研究破坏算法。我之前在一家区块链公司担任的角色就涉及审查密码学的实施并作为白帽黑客寻找针对他们的攻击。所做的内容“你是一名数学家,你是密码学家。去看看这个特定的数字签名算法或随机信标或其他什么的实现。检查一下是否一切正常。” 这属于研究领域。
其次是实施,即应用密码学的概念。应用密码学家确实从产品团队那里得到了要求——“嘿,我们想要一个新的更快的签名方案,或者我们想要为我们的客户或客户或社区创建一个新的隐私功能。” 然后应用密码学家不仅要设计东西、研究,还要实施它。有时应用密码学家还必须是一名非常强大的软件开发人员,需要在编码方面进行新颖的优化。
最后是创造新产品,基于密码学家了解的原语基础上,提出自己的创新想法。
总结一下,我们兼顾研究、实施与产品,这就是典型的区块链密码学家的角色。
Q: 通常是同一个人能够做这三件事吗?或者分成组去实施?
A:对于 Sui 来说,因为我们引入了许多创新,所以我们需要多人从事许多工作流程。我是 Mysten Labs 的首席密码学家,也是 Sui 的创始人之一,所以我参与了大部分工作。但是,您无法独自完成所有事情,我仍在向我的团队学习。
我们不仅仅使用一种编程语言。例如使用 Rust 语言进行概念验证,但后来我们意识到网络上的大多数人都在使用 JavaScript 或 TypeScript,密码学家不可能自己写所有的东西。但你不能委托给像软件工程师这样的通才,因为有些优化需要高级数学和加密原语知识,或者你可能需要与一些你不熟悉的库进行交互,因此你需要其他人来接手这项工作。
我们的研究团队总共约有 10 人,在日常工作中致力于创新和实施。我们拥有这些“聪明”的头脑,有时我是提出想法的人,有时我也在遵循其他加密专家的方向。我们团队可以帮助实施,或提供资源或提供有关如何扩展和应用一个很酷的想法的提示。
两只眼睛不够,因为密码学是区块链基础设施中极其关键的一部分,如果出现问题,则可能 GAME OVER,所以需要更多的眼睛。另外,需要很多创新者。
Q:Sui 设计中已应用的外部研究取得了哪些关键进展以及影响?内部对话有哪些关键创新?
A: 在密码学方面,对我们产生影响的外部信号是零知识证明等技术的演变,以及文献中提出的一般隐私保护技术。不仅仅是区块链在做密码学,世界各地也有研究机构、大学部门,在做理论工作。我个人认为 Mysten Labs 非常擅长在从未有人实施过的领域寻找新理论,其中一些假设可能不准确,但我们将其与我们现有的技术结合起来,最终推动我们创造出一种新颖的产品。
Sui有一个新功能,零知识登录(ZK Login),就是这样应运而生的。外部提出了一些技术,但不足以为 L1 区块链提供无缝的身份验证机制,我们在它之上发明了新功能,这是应用研究的内部垂直领域,最终,我们想出了一个完整的解决方案。
我们不是大学,我们不仅仅是理论,我们需要实施生产就绪的东西,因此,我们从内部和外部讨论中获得反馈。很多时候我们阅读科学论文,我们参加活动,我们是审稿人和演示者,我们收到反馈。显然,我们将所有这些转换为 Sui 上的实现。
我意识到我们的一些代码随后被其他人、其他公司甚至我们行业之外的人使用,最终会看到大公司获得这些代码并将其注入到自己的基础设施中,不一定是区块链基础设施。
内部创新通常是由产品团队触发的。他们会来找我们说:“目前这是不可能的,我们还没有看到这方面的研究。你能解决这个问题吗?”
例如,启用可发现的区块链地址但具有隐私性的有趣问题。即使在您创建帐户之前,我如何才能将某些内容发送到您的电子邮件或电话号码?想象一下 Venmo 风格的功能,我向您发送资产,然后当您意识到它们在那里时就去获取它们。解决这个问题需要内部集思广益,讨论如何以隐私心态正确地做到这一点。从外部得到理论,我们将所有这些结合到一套工具中。大多数时候我们在这方面实际上非常成功。我们设法解决上述问题,很少会遇到产品问题而没有解决方案。
Q:Move 如何帮助您创造这些密码学创新,并为使用 Sui 的开发人员提供更安全的体验?
A: 我曾经是一名 Solidity 开发人员,编写以太坊合约,我还热衷于破坏以太坊上的智能合约。我的第一份工作是审计以太坊上的彩票合约,我成功地摧毁了一些算法。当时,你几乎可以说随机性算法不公平、不透明。这实际上让我了解到智能合约开发人员通常是编写小脚本的工程师。智能合约不是大程序,也不是复杂的数据库,通常,只需接受几天培训的人就可以编写智能合约并进行部署,但这需要非常仔细的审核, web2 - web3 交互可能存在隐藏的陷阱。
我们意识到,在以太坊上,由于两个特殊因素,Solidity 的一些安全功能存在问题。首先,工程师正在优化压缩以减少GAS 费用,这可能会造成用户可能会因为没有涵盖边缘情况而错过某些内容。而且还存在重入攻击的问题。就像一个智能合约向另一个智能合约付款而不更新其状态。这种攻击向量过去曾造成大量资金损失,包括多年前的以太坊 DAO,导致以太坊分叉。
Move 不存在这些问题,特别是对于重入问题,我们从头开始保护源代码。此外,我们还通过创建一种更加以对象为中心的 Move 语言,对原始 Facebook Move 进行了很多改动,这对代码的可重用性有很大帮助。您不需要复制粘贴智能合约代码,然后可能进行一些调整,而是可以调用原始代码并获得更好的一致性保证。
同时,在 Move 中,我们为所有事物提供了对象。在 Solidity 中,当您将内容从一个合约转移到另一个合约时,如果没有上下文,通常您不知道它是什么。这是地址吗?这是一个数字吗?这是图像 URL 吗?当您将所有内容都视为对象时,类似于 Java 和 C++ 以及所有面向对象的语言,您可以首先将现有的客户端项目转换为基于智能合约的世界,而无需关注三重优化的压缩机制。因为你可以从字面上看到,这是一个「老虎」对象,我正在向你传输一个「老虎」对象。
密码学呢?当你拥有这些物品时,当我将一些东西从一个钱包发送到另一个地址时,你会看到一个弹出窗口,显示“你正在转移老虎 NFT。这只老虎 NFT 有 X 特征”。由于以对象为中心的设计,无论您触摸的是什么对象,您都可以准确地看到您正在做什么,这可以帮助您识别交易中的任何问题。许多用户受到恶意软件或应用程序的诱惑,试图说服您在其他区块链钱包中签署您不希望签署的内容。但对于 Move,这就有点困难了,用户可以清楚地看到正在发生的事情,这会增强最终用户的安全性。
另一件真正有助于设计更有趣和更酷的算法的事情是由对象实现的并行化。假设我有一些钞票,一张 10 美元的钞票和一张 100 美元的钞票。如果我向旁边的两个人提供钞票,我可以并行执行此操作。
在以太坊上,基本概念是中央账户余额,你可以从那里转移东西。因此,如果我要发送或接收资金,我必须排序这些交易,我会先发送 100 美元,然后提交 10 美元交易,同时如果有人向我发送资金,这 3 笔交易都必须被排序,这个过程是昂贵的。
这就是我们从 Move 语言中获得所有很酷的东西的方向,作为密码学家,我们可以使用 Move 提供的并行化和面向对象编程来创建更好的安全性、更酷的创新算法。这就是整个想法。例如,我们创建了一个彩票计划。虽然乍一看似乎很容易,但老实说,正确地做到这一点通常非常非常困难,特别是在构建具有复杂边缘情况的多人彩票时,这也是优秀密码学家的闪光点。我们需要一些随机性,你需要购买彩票,这些票可以被并行购买。你如何在区块链上做到这一点?Move 及其可用的加密原语帮助提供了更好、更安全的加密生态系统。
我很清楚,类似彩票系统的东西可以用在一个产品中,比如说,有 300 张票可用,但有数千人想要它们,而您希望它们被随机分配?这个系统是 Sui 的基础,任何公司都可以将其添加到他们的产品中。
这里的好处是,由于 Sui 的面向对象性质,您可以从许多不同的其他智能合约中调用相同的合约。我们有可组合性的概念,它实际上可以帮助您在两种不同的彩票中使用同一张彩票,这对于创造以前不存在的新体验非常有用。
在游戏领域,你需要随机性,而 Sui 实际上是最好的区块链之一。对于棋盘游戏,即使是看似确定性游戏的国际象棋,您也需要知道谁先下棋。谁是白子,谁是黑子(正如我们所知,在国际象棋中,白色具有优势),它需要一定的透明度才能在同一游戏中正确匹配不同的玩家。还有政府应用程序。想象一下税务局正在进行一些统计抽样并选择审计对象。他们真的能提供证据证明统计抽样是以公平和透明的方式进行的吗?
如果存在一种具有不可否认的透明度的算法,可以提供组织者无法更改的良好随机性,那么每次抽奖或随机抽样都会有一个新的公平性。
Q:您最近写了一篇推文,讨论将 NFT 存储在链上的重要性,以便它们保持动态并随着时间的推移而变化。您能否分享更多关于这一观点,特别是 Sui 的数据结构如何增强 NFT 的实用性?
A:这是一个备受争议的话题。我试图解释不同基础设施所启用的NFT 属性是不同的,当它只是一个静态图像,当你您不对该图像执行任何高流量操作时,传统结构确实非常好。但在某些情况下,比如游戏中,玩家希望可以从NFT 中获得更多的收益,那么传统结构的NFT 就不够好。
Sui 有一些允许动态 NFT 的算法,每次发生交易时,它们的字段都会更新。当你玩游戏的时候,你有一个英雄,你赢了,过了了关,你可能会得到一些新的武器或力量,这一切都可以记录在区块链的状态中,并创造出一种全新的类型。另外因为Sui 上的存储成本便宜,NFT 可以存储在链上。这使得链上可以更轻松地读取和写入不同的智能合约,并实现可组合性。
在其他链上,您将面临一个问题,因为更改不在状态中。要让另一个智能合约读取你的合约,他们需要知道你的结构,你需要一个链下解析器,这会造成一些用户体验的复杂性。在一些很酷的应用程序中也有条件逻辑,在提交交易的时候,你不知道你要接触哪个NFT,所以我能从链下世界提供什么,这并不容易扩展。
还有威胁模型的问题,事实上,一些特定的应用程序可能会容忍压缩和链外存储。但实际上,当我们在链外存储某些内容时,我们正在改变威胁模型。原因通常是中心化,想象一下,有一天,如果您将其存储在 AWS 中,然后……亚马逊就瘫痪了。亚马逊是一家单一公司,如果它出现故障并且您无法访问该特定的链下数据,您将无法在链上使用它;即使可以,您甚至需要数据来生成您确实拥有链下数据的证明,因为有时您只需要证明,对吗?为了证明,您需要从 AWS 获取内容,然后对其进行哈希处理,并将极少量的数据发送到区块链中,这在某种程度上得到了验证,但如果你没有数据,你无法证明我的NFT内容是什么。
所以存在一些中心化问题,尽管有些人说并不是,因为我们可以将它存储在不同的地方。我同意,如果我们能够设法有一个特定的设计,将所有这些威胁模型都编码到区块链中,但另一个问题是延迟,在链上实践中,我们需要以最小的延迟获得内容,如果把NFT 存储在其他链上,会造成延迟加倍,这不是我们想要的的,我们希望所有的东西存储在链上,同时降低延迟性。
Q:对于 Sui 的未来,您最兴奋的是什么?
A:这是我最喜欢的问题。我加入 Mysten Labs 的主要原因是我更喜欢创新驱动产品开发的地方。我们正在向社区提供一些新的东西。我甚至给我的儿子命名为Kryptos。
如果你特别问我关于Sui的加密创新,有一件事是肯定的,那就是我们允许很多方式进行身份验证。通常,大多数区块链只支持一种签名算法,以太坊有自己的算法,Cardano 和 Solana 支持另一种算法。我们试图能让Sui 与其他公链对话,这意味着我们允许所有现有算法,这意味着我们与更多钱包兼容。现有的钱包不需要重新发明轮子,您喜欢基于以太坊的算法,我们支持该算法,所以去使用它吧。你使用iphone,那你甚至不需要钱包, iPhone 和更先进的 Android 设备内置有这种仅支持特定算法的安全芯片,我们也支持这一点。
然后我们本身也有多重签名的概念,如果您注重安全性,密码学的身份验证部分,是 Sui 的旗舰功能之一,将创造新的身份验证体验。
我个人非常喜欢的另一件事是,我们从第一天起就在 Sui 内部引入了零知识证明、隐私保护技术。因此,人们现在可以创建一个具有尽可能多的隐私的 KYC 系统,他们甚至可以创建保密的金额转账,同时也让他们有机会遵守法律和审计师的要求,我们把一切都放在那里供开发人员使用。
除了所有这些算法之外,我们的开发人员解决方案工程团队实际上提供了非常好的支持。我们每天都和不精通密码学的团队一起工作,他们没有密码学家,但有一些非常酷的想法,如果我们得到一些反馈,我们会帮助他们实现,有些东西是不可用的或者存在问题,我们也会以极快的速度解决它们。