Sui AMA 回顾:与Sui开发者团队讨论Move编程语言

ω
发布于 阅读 498

介绍

Jen::欢迎大家,我真的为今天的AMA感到兴奋!我很高兴向大家介绍我们可爱的Mysten Move编程团队。

Adam:嘿,我是团队中的初级成员。今年一月,我加入了Mysten实验室的公司。

我在实现和优化一般的编程语言方面有相当多的经验。我在增强我们为Move准备的VS Code插件方面做了相当合理的工作,现在它有了更多的功能,为我们可爱的开发者们提供了更方便的编程工具。

Damir:我是Damir,Move书的作者,从今天起,也是Move语法包的作者。我进入Move有点违背我的意愿,因为我的CTO说,这将是我们要使用的语言。所以我学会了它,然后,当然,我爱上了它。那是三年前的2019年,我还在这里。

Emma:我的名字是Emma。我第一次开始在Move上工作是在2019年我在Move团队和Facebook实习的时候。从那时起,我就开始全职从事Move的工作。我还在Diem框架中指定和验证了很多Move的代码。现在,我正在继续这项适应Move的工作,以改进Sui Move。我最喜欢Move编程语言的地方是,我们在字节码层面而不是源代码层面强制执行安全。我认为这确实有助于增加另一层保护。

Todd:嗨,我是 Todd,自 2018 年以来我一直在 Move。我是该项目的第三或第四人。我最近一直在 Mysten 做集成工作。就有趣的事实而言,Move 最初是一种带有类的面向对象语言,但我们摆脱了这些模块。对我来说,我们回到物体上总是很有趣。但是,我们现在的对象与 Move 的第一个版本有很大不同。

Sam:我是Sam。我是 Move 的创建者,自 2018 年春季以来一直在研究该语言。我在 Move 的多个领域工作,例如领主导设计和实现形式化,阅读有关验证器和分析的研究论文,以及研究制作语言跨平台。我的趣事是,原型的原名是Tulip(郁金香),但这个名字被Diem领导层非常明智地拒绝了。

问题1:Move语言与其他编程语言有什么不同,有什么特点使其独一无二?

Emma:我们的语言实际上是基于可验证性而构建的。我认为这真的将我们与其他语言区分开来,在其他语言中,通常是先有语言,然后当它变得更加流行时,人们开始正式验证它们。

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

Damir:表达性是该语言最大的特点之一,也是其真正突出的地方。这很疯狂,你不需要写太多的代码,你只需要直接进入你的模块的应用的业务逻辑,你就可以得到一切。

问题2:为什么不使用Rust而是开发新的编程语言?为什么这个行业不能为了更大的利益而制定标准呢?

Sam:这个问题的简单答案是我们尝试过。如果我们能将Rust作为一个优秀的工具和生态系统,与优秀的开发人员一起使用,那将是一件好事。然而,Rust是一种源语言,在这些区块链平台中,在区块链上运行的不是源代码,而是字节代码。
-当你试图在链上发布代码时,不能让Rust编译器运行。这是一个庞大而昂贵的软件,而且需要很长时间才能运行。
-你不能直接在区块链上发布机器代码,因为一些攻击者可能会直接发布机器代码。这没有源语言提供的保证,并且可以对你的代码进行恶意攻击。

我们深受 Rust 的启发。最初,我们有使用 Rust 的想法,但后来我们意识到由于可执行格式的限制,我们不能这样做。除此之外,还有很多其他的事情,语言在某种程度上是特定于应用程序的。否则,我们将只有一种编程语言可以完成所有工作。 Move 就是吸收很多好的想法,并在上面添加我们自己的智能合约。

为了回答问题的第二部分,我们设计了 Move,以便它不会过度拟合任何类型的区块链实现细节。它不知道诸如帐户或交易或加密授权之类的事情。有五个不同的区块链正在使用 Move,它们在如何设置交易、如何进行存储、如何进行账户结构以及共识如何运作方面看起来都大不相同。

Adam:我想有两件事让我相信,你真的不能轻易在区块链上使用传统的编程语言。
-它们的实施并未考虑到燃气计量。
-如果你需要能够确定性地重放计算,那么这些语言将无法工作。

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

Sam:我认为基于有点太强了,但我认为它肯定受到Rust的强烈影响,特别是被称为借款检查器的所有权类型系统。我认为任何未来的语言,不管是在智能合约领域内部还是外部,都应该仔细研究一下借款检查器。在语法方面,我们的语法在很多情况下与Rust相似。

我们非常关心让它作为一个Rust程序员、一个没有经验的程序员或来自现有智能合约背景的人容易学习。我们让它至少在语法上和在许多方面的设计上与Rust相似。

问题4:有一个普遍的假设是Move不如Solidity灵活,那么为什么我们的区块链会选择Move?

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

Sam:我可能在这里对术语吹毛求疵,但我认为表现力是好的。我不认为一种语言的灵活性一定是好的。灵活性可以为漏洞和攻击敞开大门。因此,在Move中,我们的目标是和EVM Solidity一样具有表现力,而且事实上表现力更强,但可能不那么灵活,因为只有一种方法可以做某事,而不是多种方法。这一种方式是安全的,而不是潜在的可怕的和引入漏洞的。

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

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

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

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

Sam:Move 这种嵌入式语言,其中的核心语言是非常无主见的。通常,创建帐户很简单。例如,如果他们想将 NFT 大量投放给用户作为增长黑客,你可以在没有帐户的情况下拥有一个地址,以便可以将 NFT 投放给你。你可以在 Explorer 上看到它是你的,然后开始玩游戏。稍后,你可以在方便时创建一个帐户。

这种事情在 Move 的 Diem 风格集成中是不可能的,因为你需要先明确创建一个帐户,然后选择接收特定的资产类型。在 Sui 上,我们开始围绕具有全球唯一 ID 的对象组织事物,这意味着你可以将对象转移给任何人。我们认为这种东西是无需许可的,有点像可扩展的游戏,很多人可以合作构建相同的东西。我们深入探讨了我们为什么这样做的技术语言方面以及启用的用例类型以及为什么在旧的 Diem 风格的 Move 中很难或不可能做到。

Jen:对我们来说,作为一个团队,我们专注于我们的努力,公司之间是相互尊重的。因此,对社会而言,要始终尊重我们的竞争对手,因为你会注意到组织内部的每个人都在尽力,他们真的相信他们正在建立的东西。

问题7:您对闭源智能合约有何看法? Sui 会允许已发布的包是闭源的吗?

Adam:我认为,闭源有点违背了区块链平台所要实现的精神。和Sui一样,作为一个区块链的用户,你真的愿意把钱送到一个你不知道它是做什么的智能合约上吗?

我们希望鼓励代码共享,在社区内有这些项目正在发生,这将使这种情况更容易。近源的概念可能有双重含义。无论你在链上发布什么,支持移动语言,字节码,它都不是一个封闭的源代码,因为你可以随时检查字节码。

问题8:对于Move虚拟机,未来是否有任何具体的核心变化需要解决?

Todd:我们有一个新的存储层,在Move中引入了一种与存储互动的新方式。Move虚拟机有能力增加新的本地功能,而不需要增加新的字节码操作。我们已经成功地在虚拟机为Move字节码所做的正常验证检查之上运行了我们自己的一套验证检查。

问题9:如果我没有编程经验,Move真的可以成为我学习的第一语言吗?

Damir:你可以开始用Move编码;你采取任何现有的书籍来学习Move并发布一个智能合约。但其局限性在于,你将只能与你的智能合约或像网络上的模块进行互动。很高兴看到有人在做这件事,但你总是需要第二种语言,它将像一个更通用的语言,以真正运送足够复杂的东西来引起人们的注意,例如在网站上建立一些东西(dApp)。

问题10:对于一个刚接触编程语言的人来说,有没有什么入门或变得更好的技巧?

Damir:我们将很快开始展示如何构建应用程序,如何使用少量的JavaScript知识,如何进行自动发布,或者如何从区块链之外调用移动合同,比如JavaScript。我是说,我们正慢慢朝这个方向前进。

小提示,我看到一些人在不一致的地方提到,最好的开始方式是阅读move book。这是一个循序渐进的指南,有很多词,但对一些人来说,它很有用。然后,您可以跳转到官方移动文档,也可以跳转至Sui文档:

https://docs.sui.io/

https://examples.sui.io/

这些文档算是展示了如何开始使用Sui Move,我认为它是相当丰富的。有很多解释,所以这是一个很好的开始方式。

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

Emma:在Sui Move中,10个Sui代币基本上意味着你有一个Sui币代币,其价值在你的地址中,仅此而已。在以太坊,比方说你有10个某种代币。在智能合约中,有一个你的条目,其价值为10个代币--这没有我们的模型那么直观,而且你也没有真正拥有这10个代币,它只是像别人的合约中的价值。

在Solidity中,如果你想要ERC-20代币转移,它们不能同时发生。它必须按顺序执行。因此,我认为Sui Move将有更多的潜力,因为我们的模式。

问题12:您对Sui中的模块在发布后是可变的有什么看法?

Todd:你知道,我们一直在考虑这个问题,这是一个棘手的问题。这是一把双刃剑,你可以修复bug,但也可以引入它们。我们还在考虑它,我要说的是,它有很多不同的层次。我们希望在核心语言中对模块进行版本控制,因为它将出现在Move的每个区块链实例中。在一天结束时,你总是会有一些新版本号的版本,这意味着或多或少地创建一个新包。

问题13:为什么Meta没有许可Move?

Sam:我想很多喜欢做这种事情的人,都会把它当成一种爱好,然后在业余时间去做,直到它最终成为一件事情。这是我非常喜欢编程语言的地方。它们从根本上说是免费和开放的,这就是赋予它们更多价值的原因。

问题14:目前关于Move验证的研究工作是什么?你现在在核查方面正在做哪些工作?

Emma:我们之所以必须适应新的初选,是因为证明器确实是为Diem构建的,而且我们已经过度拟合了Diem全局存储模型,这与Sui不同。我们的Sui Move-proof命令应该适用于简单的post条件和abort条件,但它不允许您指定任何有关对象存储的内容。希望很快就会到来。

问题15:是否会有关于如何在Move上编码的视频?

Jen:我们将创建不同的模块:初级、高级和中级轨道,用视觉视频给出不同类型的内容来帮助入职。

在我们结束这次盛大的AMA会议之前,还有什么最后的话要说吗?

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

衷心感谢每一位在做关于Move的内容的人;我们看到了很多资源,我们对此超级感激,因为要涵盖所有的主题真的很难。我的意思是,我们并不总是知道Move是如何表现的,我们发现新的模式,我们一直在发现新的东西,我们只是不能涵盖所有的东西。Move是一个值得探索的东西。

标签: Sui #Move#AMA#Sui
评论