1. 首页 > 创业 > 求职

a16z对话Move语言之父:从编程语言说起,为何Move是未来智能合约的重要方向

去年 a16z 等一众机构力捧以Sui 为代表的 Move 公链,让 Move 语言在 Meta Diem 的废墟上大热归来;与此同时,从Sui Move 出现那一刻起,不看好的声音也一直存在:

如果仅仅是因为 Move 语言有可能比 Solidity 或其它开发语言更优秀,我们就一定需要一个新的智能合约语言,并乐此不疲地从头开始搭建一个新Layer1吗?

近日,a16z Crypto团队与 MystenLabs 的联合创始人兼CTO 、Move语言之父Sam Blackshear 进行了一次主题为《Programming Languages & Crypto》的播客对话,探讨了为何 Move 是未来智能合约的重要方向。

在该次播客中,a16z Crypto 与Sam Blackshear 从传统编程语言与智能合约编程之间的差异和相似之处到辩论区块链的独特限制和机遇,展开讨论了Move语言的设计思想、面向对象和资产的编程、安全性,以及分享了形式化验证、治理和社区工具、跨平台适应性等话题。

主要分享内容包括:

1、编程语言与智能合约历史

从传统编程、到智能合约编程,再到Move编程。Move是最早的关于如何设计语言以适应类型系统、静态类型和编译时检查等问题的语言。

2、Move 智能合约的创新

EVM 过度适配了平台的实现细节,这些实现细节是为以太坊设计的。开发者最终不得不继承以太坊做出的许多设计决策,包括一些让以太坊难以扩展的错误。Move在设计时,没有将任何区块链特有的东西加入到核心语言中。源代码语言层面的创新将会相当重要,Move最终能够提供的是代码验证器和VM级别的保护,以免受其他程序员的攻击。

3、Sui Move 的设计思想

Move 是一种可执行的字节码语言,用于执行用户交易和智能合约。在Sui Move 中,验证者可以更有效地进行并行化,这使得存储、执行都变得更容易,而不必将这些东西编码到协议级别,并让用户和程序员来考虑。

4、安全性

在智能合约世界中,我们处于一个约束状态。我们编写非常少量的代码,而且必须完美无缺,安全性必须是最首先要考虑的事情。Move 安全性是既要防止程序员自我脚踏,还要尽可能为他们提供正确的原语,以便他们能够防御攻击。

5、面向对象和资产

Move 被设计为一种面向对象和资产的智能合约编程语言,之所以被设计成这样,是因为大多数 Web2 面向对象的编程语言就是这样。在Sui Move中,将事物的中心点放在对象上,高度激励能够尽可能精确地表示细粒度访问。Sui Move 全局存储的结构是一个从对象ID到对象ID的映射。

6、安全性对比

Move 通过构造消除了重入和智能合约编程中缺失的权限检查问题。Move中,对象所有权信息实际上存储在对象元数据中,这不是程序员可以控制的东西。Move Prover 就是为了防止语言编写智能合约的错误而设计,可以避免开发者犯很多基本的错误。

7、智能合约语言的治理

最初,Move是在Facebook开发的,没有真正的治理。我们非常谨慎地扩展语言。简洁性是最主要的东西,但我们会积极地扩展它。Sam Blackshear 有一个非常具体的愿望,比如Move 被设计为一种跨平台语言,其中一些链EDM 的基本功能仍应适用,并且覆盖了智能合约开发能手和Web2新人,极具灵活性。

8、给开发者的学习建议

阅读大量代码,这是了解语言的最佳方式。乐意分享和深入探讨,并找到那些真正喜欢和他人分享你的代码,一起构建开源社区的人们。任何可以让你的工作变得更轻松的工具,你都应该学习它的工作原理。以下为播客全文,全文约25000字,阅读时间约30分钟。

整理翻译:Sui World

主持人 Sonal Chokshi 介绍

欢迎来到Web 3.0,这里是a16z Crypto团队制作的关于建立下一代互联网的节目。我是您的主持人Sonal Chokshi。

本节目旨在为寻求了解和深入探讨加密和Web 3.0相关事物的任何人提供帮助,无论是开发人员、创作者、建筑师、企业领袖还是政策制定者。我们现在开始全新一季的节目。今天的节目主要讨论编程语言和加密货币,既适用于现有的智能合约程序员,也适用于其他寻求进入这个领域的开发人员。对于那些对编程语言的演变和出现感到好奇的人来说,这也是一个不错的选择。

我们今天的特别嘉宾是 MystenLabs 的联合创始人兼CTO Sam Blackshear ,该公司正在为Web 3.0的去中心化未来打下基础。Sam在编程语言方面有着资深的历史,从他的博士学位到在Facebook工作,再到创建并成为Move和开源编程语言的作者,用于构建智能合约。我们将更多地谈论这个话题。

在整个节目中,我们还邀请到 a16z Crypto的智能合约研究工程师 Noah,他和另一位伙伴最近为以太坊开发了名为 Helios 的轻量级客户端并赢得了具有挑战性的gas优化。

我们还邀请到 a16z Crypto 的工程师负责人Eddy Lazzarin ,在此之前,Eddy 在 Netflix 从事软件工程,在 Facebook 从事数据工程和数据科学。需要提醒的是,以下内容均不构成投资、商业、法律或税务建议。

1、编程与智能合约的历史

主持人 Sonal Chokshi:

我们将从传统编程的历史开始,第一个发言的是Noah,接着是Sam Blackshear 和 Eddy。

a16z Crypto Noah:我们想了解编程历史如何影响智能合约编程的历史,因为我觉得有三个东西,传统编程、智能合约编程,还有Move语言。这三件事都有它们自己的历史,对吧?

Sui CTO Sam Blackshear:没错,我喜欢这种框架。人们用语言来设计语法或让人感到开心,这是对的,但它不仅仅是这些。所以我很喜欢这种大局观的框架。

a16z Crypto Eddy Lazzarin:就在这个基础上,传统编程有着过去二三十年来的各种趋势。传统编程语言已经发生了变化,有一些热门话题来来去去。曾经有很长一段时间,动态编程语言和非常宽松的类型检查是非常受欢迎的。通常认为,跳进去,忘记类型,忘记所有技术细节,只是编写代码是更符合人体工程学的方式。

Sui CTO Sam Blackshear:但最近,人们开始更深入地思考类型系统、静态类型和编译时检查等问题,以便在程序运行之前尽可能了解程序的所有细节。这些趋势不断变化。然而,对于智能合约编程来说,由于它是如此新颖,我们还没有看到智能合约编程中这种类型的历史,这是非常不同的。我认为Move语言是我们所看到的最早的关于如何设计语言以适应这一点(类型系统、静态类型和编译时检查等问题)的证据。我很想了解我们期望会发生哪些变化,例如静态和动态类型等智能合约编程中可能出现的话题?这些话题可能还没有出现,因为目前只有一种语言,即Solidity。

主持人 Sonal Chokshi:那么,这又与转向智能合约编程有什么联系呢?再次请Sam回答?

Sui CTO Sam Blackshear:在这个智能合约空间中,随着EVM作为智能合约语言的第一批进入者,存在着不同的趋势。人们不知道想用智能合约做什么?我们如何编写它们或任何这些类型的事情因此,我认为灵活性更加重要,以尝试了解需要发现使用情况的专家的类型。我感觉现在我们已经知道了,或者至少我们对构建块有一些了解。智能合约的趋势是极其领域特定的,你为资产定义模板,定义转移资产的策略,检查访问控制和权限。

这就是基本的,你不会用智能合约语言编写编译器或操作系统或任何这些类型的事情。因此,它们非常非常好,它们与通用编程语言相比的优势。

我认为人们低估了即使ERC-20标准发生在 EVM 可以编程的很久之后, EVM 甚至被认为是编写以太坊程序的基本构建块之一。我只是没有看到任何显而易见的证据,证明最基本的东西在此之前是明确的。

所以你是对的,现在你可以把类型当作理所当然的事情。我认为类型和这些东西的绕过,是可以承受一定技术债务的。如果规模很小,你只想快速移动,而且代码可以扔掉,那么这种技术债务是完全可以接受的。但有趣的是,你把它用公司或创业公司的规模来描述,小公司在快速成长,每个人都能理解整个代码库,这种技术债务是可以容忍的。

但是,当它非常非常大时,有大量的人更改代码,他们不知道正在构建的新对象和系统的后果。将其放入类型系统中,使您以明确、直接的方式编写代码时遇到障碍,而不是意外地创建后来有人会撞上的玻璃围栏。

例如,就像你们谈到的,能够防止复制,能够设置资产的最大供应量。这些约束非常重要,无论项目的规模如何,都需要保持。它们是维护项目的健全和安全非常重要的约束条件。了解这些界限意味着您现在可以创建编程语言,以允许您强制执行它们。这就是我如何看待Move语言的方式。

随着我们了解到需要做正确的事情所需的约束类型,我们现在有能力将它们包含在语言本身中。因此,我确实认为它与类型有些相似,就像你所说的那样。

你提到类型对于程序的健全性和安全性非常重要。你们说动态类型可能适用于小型项目,但随着项目的增长,应该使用静态类型。我有点不同意,我认为完全静态的类型可能更适合。这可能是一个新颖的看法。它是为了程序员的健全性。我见过最可怕的事情是,当我按下我的快捷键“control k”时,它会告诉我函数签名是什么。当我写Python时,这让我感到恐惧。我看着函数签名,只看到参数的名称。我就像,你到底想要我做什么呢?

a16z Noah:我不敢相信人们会接受那种写出代码后就永远不会再看一眼的写法。

a16z Eddy Lazzarin:他们接受的是默认假设,即他们可以在心中记住系统的要求。

a16z Noah:但是即使是100行的程序,我也觉得无法默认这一点。

Sam Blackshear :它可以运行,但它并不完美。

a16z Eddy Lazzarin:我认为你们说的对。而且我认为这种心态已经演变了。以前,类型系统是用来保护程序员免受同事伤害的。当你的创业公司变得太大时,它就很有用了。但现在它更像是在保护我自己。

在智能合约的环境下,它是在保护我免受攻击者的攻击。这是真正的不同之处,因为在普通程序中,你不会在攻击者受到类型系统的约束时部署程序。攻击者可以使用其他语言编写机器代码。你只需要保护你自己的防火墙就行了。但在这里,我编写这个很好的类型对象,它将流入攻击者的代码并保持其完整性。类型系统必须保证我的安全。

就像你说的那样,这是一个很棒的工具,它给你带来了不同的需求,你需要强制执行它们,比如防止复制。这不是你在普通类型系统中需要考虑的问题,或者防止删除或确保你按某种方式使用或销毁某个值。这些都是因为我们正在研究智能合约并试图为这些用例提供有意义的类型系统,因此我们最终会将这些东西加入move中,也可能会加入未来的智能合约语言中。

主持人 Sonal Chokshi:

实际上,伙计们,让我们更多地谈谈传统编程和智能合约编程之间的其他差异。但在我们进一步讨论之前,你们能不能快速介绍一下智能合约程序员可以使用的语言呢?我认为我们需要了解一下大局,因为我想了解一下现状,比如Solidity、Viper等。知道哪些内容能够让我们更快地入门。

Sui CTO Sam Blackshear :是的,我想基本的情况是,如果你想编写智能合约,你几乎总是会使用solidity。除非你恰好在几个其他较小的生态系统之一。

如果你在Polkadot生态系统中,你会使用ink!( Sui World 注:ink!是由Parity开发的智能合约语言,用于在Rust中编写智能合约并编译为Wasm代码),它是一个现有的编程语言。如果你在StarkNet生态系统中,你使用Cairo (Sui World注:Cairo 是STARK 证明系统的其中一个编程语言)。

但是大部分情况下,如果我要给出建议,让你学习如何编写智能合约,我会建议你学习一些Solidity,然后学习EVM。你可能还想使用Viper,唯一的缺点是Viper是较新的,可能更容易出现漏洞。我记得几年前,在验证存款合约时,他们发现了Viper编译器中的一堆漏洞。发现这些漏洞的人现在在16z工作,他是Day June,他是一个形式验证专家。因为Day June是形式验证专家,所以现在在a16z工作。而现实情况是,你需要学习一些内容,你需要学习一些语言。

你甚至需要深入了解EVM,如果你想成为一个真正优秀的智能合约工程师,你需要了解EVM到一个荒谬的程度,以至于你可以说出每个操作的gas成本,他们能够告诉你确切的与gas成本有关的代码。这就是我们目前生活的世界。

a16z Eddy Lazzarin:也许有一点值得一提的是,作为一名软件工程师,你总可以了解你正在运行代码的机器。有很多需要了解的关于编程环境的知识。但是在智能合约编程中,环境非常丰富、非常复杂。有很多上下文需要了解,这几乎与语言本身无关。这就是在你周围发生的事情,周围有哪些对象,不同的代码如何被调用。这是一件非常奇怪的事。

主持人 Sonal Chokshi:那么,最接近学习Solidity的人是懂JavaScript的人,这是真的吗?

Sui CTO Sam Blackshear :大家都说是JavaScript,因为它使用“function”这个关键词,就像JavaScript也用到了。但不幸的是,它们并不是非常相似。

a16z Eddy Lazzarin:从语法上看,Solidity确实继承了很多JavaScript的特性。如果你眯着眼睛或情绪不好,可能会觉得相似,但实际上完全不同。虚拟机环境差异巨大,所以共同点很少。

 1/6    1 2 3 4 5 6 下一页 尾页

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:http://www.longfuchaju.com//chuangye/qiuzhi/6604.html

联系我们

在线咨询:点击这里给我发消息

微信号:wx123456