回顾 7/14Sui AMA:Mysten 开发团队的Move 编程语言

Mysten Labs 开发团队与我们一起参加了关于Move 编程语言的 AMA。

回顾 7/14Sui AMA:Mysten 开发团队的Move 编程语言

欢迎大家,今天的 AMA 让我非常激动!我很高兴为大家介绍我们可爱的 MystenMove 编程团队。

亚当

嘿,我是团队中的初级成员。今年一月,我加入了 Mysten Labs 公司。

我在实施和优化编程语言方面拥有相当丰富的经验。我对Move 的 VS Code 插件进行了相当合理的改进,现在它有了更多的功能,为我们可爱的开发人员提供了更方便的编程工具。

达米尔

我是Move Book 的作者 Damir,从今天起,我也是Move Syntax 软件包的作者。我是在违背自己意愿的情况下进入Move 的,因为我的首席技术官说这将是我们要使用的语言。所以我学了它,然后,当然,我爱上了它。那是三年前的 2019 年,我还在这里。

艾玛

我叫艾玛。我第一次开始在Move 工作是在 2019 年,当时我在Move 团队和 Facebook 实习。从那时起,我就开始全职为Move 工作。我还在 Diem 框架中指定并验证了很多Move 代码。现在,我正在继续改编Move ,以改进Sui 上的Move 。我最喜欢Move 编程语言的一点是,我们是如何在字节码层面而不是源代码层面实现安全性的。我认为这确实有助于增加另一层保护。

托德

大家好,我是托德,我从 2018 年开始加入Move 。我是这个项目的第三或第四个人。最近我一直在 Mysten 做集成工作。说到趣事,Move 最初是一种带有类的面向对象语言,但我们摆脱了这些模块。我们又回到了对象,这总是让我觉得很有趣。不过,我们现在的对象与第一版的Move 有很大不同。

山姆

我是萨姆。我是Move 的创建者,自 2018 年春季以来一直致力于该语言的开发。我在Move 的多个领域开展工作,例如领导设计和实现的形式化,阅读有关证明器和分析的研究论文,以及研究如何使语言跨平台。我的趣事是,原型的原名是郁金香,但这个名字被琰领导层非常明智地否决了。

. . .

问题 1:Move 语言与其他编程语言有何不同,有哪些特点使其与众不同?

艾玛

我们的语言在构建时确实考虑到了可验证性。我认为这一点将我们与其他语言区分开来,在其他语言中,通常是先有语言存在,然后当语言变得更流行时,人们才开始正式对其进行验证。

亚当

我认为Move 的独特之处在于,它从 Solidity 之外的智能合约语言世界中带来了一些有趣的东西(已完成的)。此外,它还从更传统的编程语言中引入了一些非常有趣的概念。例如,据我所知,在Move 中对资产进行编码的方式与传统方式不同。每次在Move 中进行创建时,您基本上都会创建一个 NFT,其中包含所有可以修改的丰富属性。Move 就是围绕能够轻松共享代码这一概念而设计的,这也是我们集成包和模块概念的原因。这样,你就可以编写并发布源代码,让人们知道他们在链上看到了什么,而不必复制粘贴。我们的语言既要有足够的表现力,又要足够简约,这样才有助于查找错误和编写工具。

达米尔

表现力是该语言最大的特点之一,也是其真正的亮点。无需编写太多代码,只需直接进入模块应用程序的业务逻辑,就能获得一切,这实在是太疯狂了。

. . .

问题 2:为什么不能使用 Rust,而要另创新的编程语言?为什么业界不能为了更大的利益而统一标准?

山姆

对这个问题的简短回答是:我们尝试过。如果我们能将 Rust 作为一个优秀的工具和生态系统,与优秀的开发人员一起使用,那就再好不过了。但是,Rust 是一种源语言,而在这些区块链平台中,在区块链上运行的不是源代码,而是字节码。

  • 你不可能每次在链上发布代码时都运行 Rust 编译器。这是一个庞大而昂贵的软件,运行起来需要很长时间。
  • 您不能直接在区块链上发布机器代码,因为一些攻击者可能会直接发布机器代码,而机器代码没有源语言提供的保证,可能会对您的代码进行恶意修改。

我们深受 Rust 的启发。最初,我们有使用 Rust 的想法,但后来我们意识到,由于可执行文件格式的限制,我们不能这样做。除此以外,还有很多其他方面,语言在本质上都具有一定的应用特殊性。否则,我们就只能用一种编程语言来做所有事情。Move ,我们会借鉴很多好的想法,再加上我们自己的智能合约。

为了回答问题的第二部分,我们设计了Move ,使其不会过度适应任何类型的区块链实施细节。它不知道账户、交易或密码学补助金等事情。目前有五种不同的区块链正在使用Move ,它们在如何设置交易、如何进行存储、如何构建账户结构以及如何达成共识等方面都有很大不同。

亚当

有两件事让我相信,在区块链上使用传统编程语言并不容易:

  • 它们在实施时并没有考虑到燃气计量。
  • 如果需要确定性地重放计算,这些语言就不适用了。

. . .

问题 3:为什么Move 基于 Rust?

山姆

我认为 "基于 "这个词有点过了,但我认为它确实受到了 Rust 的强烈影响,尤其是被称为 "借用检查器 "的所有权类型系统。我认为未来的任何语言,无论是在智能合约领域内还是之外,都应该仔细研究一下借用检查器。在语法方面,我们的语法在很多情况下与 Rust 类似。

我们非常关注如何让 Rust 程序员、缺乏经验的程序员或来自现有智能合约背景的人都能轻松学习。我们让它至少在语法上和设计上与 Rust 有许多相似之处。

. . .

问题 4:人们普遍认为Move 不如 Solidity 灵活,那么为什么我们的区块链选择Move ?

达米尔

Move 的目标是静态可验证,并防止编译阶段可能出现的所有错误,因此您不能依赖于稍后将在区块链上发布的内容。从设计上讲,这是不可能灵活的,因为一切都发生在编译阶段。如果你编译代码并推送,它也会像字节码验证一样运行。因此,当你发布代码时,它的安全性是有保证的。从这个意义上讲,它的灵活性较低,但响应更安全。

山姆

我可能会在术语上吹毛求疵,但我认为表现力是好的。我不认为语言的灵活性一定是好的。灵活性会为漏洞和攻击打开方便之门。因此,在Move 中,我们的目标是与 EVM Solidity 一样具有表现力,甚至表现力更强,但灵活性可能较低,因为只有一种方法而不是多种方法。这一种方法是安全的,而不是潜在的可怕和引入漏洞的。

. . .

问题 5:基于Move 的项目如何与基于 EVM 的项目合作?

艾玛

目前,我们正在与基于 EVM 的区块链 Celo 合作,将Move 引入他们的渠道。这个项目的目标是在 Celo 区块链上同时支持Move 和 EVM,这样你就可以编写 Solidity 合约或Move 合约,或者同时编写这两种合约,并将它们发布到 Celo 上进行交互。我们还希望在两个虚拟机之间实现某种通信。敬请关注该项目!

我想提一下Move 到 EVM 的编译器。您可以提供Move 代码,它就会为您编译成 EVM 字节码。你甚至可以对两种语言的两种合约使用同一套测试用例。我觉得该产品在帮助Move 和 EVM 之间的交流方面具有相当大的潜力。

. . .

问题 6:Sui 和万通的优缺点是什么?

山姆

Move 是一种嵌入式语言,它的核心语言是一种非常独立的语言。通常,创建账户很简单。例如,如果他们想向用户大量投放 NFT 作为增长黑客,你可以拥有一个地址而无需账户,这样 NFT 就可以投放给你。你可以在资源管理器上看到它是你的,然后玩游戏。之后,您可以在方便的时候创建一个账户。

这种情况在Move 的 Diem 式集成中是不可能发生的,因为需要先明确创建账户,然后选择接收特定类型的资产。在Sui 上,我们开始围绕具有全局唯一 ID 的对象组织工作,这意味着你可以直接向任何人传输对象。我们认为这种东西是无权限的,有点像可扩展游戏,很多人都可以合作构建同样的东西。我们从技术语言方面深入探讨了为什么我们要这样做,以及启用的用例,以及为什么这些用例很难或不可能在老式的琰式Move 中实现。

对我们来说,作为一个团队,我们集中精力,公司之间相互尊重。因此,对于社区而言,请始终尊重我们的竞争对手,因为你会发现组织内部的每个人都在竭尽全力,他们真的相信自己正在建设的一切。

. . .

问题 7:你对闭源智能合约有什么看法?Sui 会允许发布的软件包是闭源的吗?

亚当

我认为,闭源有点违背区块链平台想要实现的精神。Sui 也是一样,作为区块链的用户,你真的愿意把钱交给一个你不知道它是做什么的智能合约来处理吗?

我们希望鼓励代码共享,而社区内正在开展的这些项目将使这一切变得更加容易。封闭源代码的概念可能有双重含义。无论你在支持Move 语言的链上发布了什么,无论你发布的是字节码,它都不是闭源的,因为你可以随时检查字节码。

. . .

问题 8:Move 虚拟机今后是否需要进行任何具体的核心更改?

托德

我们有一个新的存储层,它在Move 中引入了一种与存储交互的新方式。Move 虚拟机能够添加新的本地功能,而无需添加新的字节码操作。在虚拟机对Move 字节码进行的正常验证检查之外,我们还成功运行了自己的一套验证检查。

. . .

问题 9:如果我的编程经验为零,那么Move 能否成为我学习的第一门语言?

达米尔

您可以从Move 开始编码;您可以从现有的任何书籍中学习Move 并发布智能合约。但这样做的局限性在于,你只能与你的智能合约或网络上的模块进行交互。很高兴看到有人在做这项工作,但你始终需要第二种语言,即更通用的语言,才能真正发布复杂到足以引起人们注意的东西,例如在网站上构建一些东西(dApp)。

. . .

问题 10:对于初学编程语言的人来说,有什么入门或提高的技巧吗?

达米尔

我们很快就会开始展示如何构建应用程序,如何使用少量的 JavaScript 知识进行工作,如何进行自动发布,或如何从区块链外部调用Move 合约(如 JavaScript)。我的意思是,我们正在慢慢朝这个方向发展。

小提示,我看到有人在 Discord 中提到,最好的入门方法是阅读 Move 书.这是一本循序渐进的指南,字数很多,但对有些人来说很有用。然后你可以跳转到Move 官方文档,也可以跳转到Sui 文档:

https://docs.sui.io/

https://examples.sui.io/


这些文档展示了如何在Sui 上开始使用Move ,我认为它非常丰富。其中有很多解释,因此是一种很好的入门方式。

. . .

问题 11:我们应该如何理解Move 资产?

艾玛

在Sui 中,10 个Sui 代币基本上意味着你有一个Sui 币代币,其价值在你的地址中,仅此而已。在以太坊上,假设你有 10 个某种代币。在智能合约中,你有一个价值为 10 个代币的条目--这不如我们的模型直观,而且你也并不真正拥有这 10 个代币;它就像别人合约中的价值一样。

在 Solidity 中,如果要传输 ERC-20 令牌,它们不能同时进行。必须按顺序执行。因此,我认为Move 将因我们的模式而具有更大的潜力。

. . .

问题 12:您如何看待Sui 中的模块在发布后的可变性?

托德

我们一直在思考这个问题,这是一个棘手的问题。这是一把双刃剑,你可以修复漏洞,但也可能引入漏洞。我们还在考虑这个问题,我要说的是,这个问题有很多不同的层面。我们希望在核心语言中加入一些模块的版本管理,因为它将出现在Move 的每个区块链实例中。最后,你总是会有一些新版本号,这意味着或多或少要创建一个新包。

. . .

问题 13:为什么 Meta 没有向Move 颁发许可证?

山姆

我想很多喜欢做这种事情的人,都会把它当作一种爱好,在业余时间做,直到它最终成为一件事情。这也是我非常喜欢编程语言的一点。从根本上说,编程语言是自由和开放的,而这正是它们的价值所在。

. . .

问题 15:目前有关Move 验证的研究工作有哪些?你们目前正在开展哪些与验证有关的工作?

艾玛

我们之所以要调整新的基元,是因为证明器确实是为 Diem 构建的,而我们过度适应了 Diem 全局存储模型,这与Sui 不同。我们的Move 证明命令应该可以用于简单的后置条件和终止条件,但它不允许你指定任何关于对象存储的内容。希望很快就能实现。

. . .

问题 #16:Move 上会有关于如何编码的视频吗?

我们将创建不同的模块:初级、高级和中级轨道,并通过可视化视频提供不同类型的内容,以帮助入门。

在结束这场盛大的 AMA 会议之前,您还有什么要说的吗?

达米尔

让我们留下一个愿望,希望看到更多的Move 开发者,更多的Move 开发者!

达米尔

衷心感谢为Move 提供内容的所有人;我们看到了很多资源,对此我们非常感激,因为要涵盖所有主题真的很难。我的意思是,我们并不总是知道Move 是如何表现的,我们会发现新的模式,我们会不断发现新的东西,我们不可能涵盖所有内容。Move 是一个值得探索的东西。