什么是MOVE语言?

进阶11/30/2022, 9:36:43 AM
MOVE是由Libra(现在的Diem)开发的一种功能性字节码语言,用于解决影响区块链的问题。MOVE使智能合约可以实现并允许定制交易。

前言

区块链和加密货币行业已经彻底改变了金融行业和整个世界,也催生了一些推动行业发展的初创公司,并且使得加密货币得以广泛应用。许多项目催生出足以吸引主流用户的新平台,该行业的受众也得以进一步扩大。

这些项目由若干机制提供动力,这些机制确保了运作的顺利进行和平台的安全、可靠、高效。智能合约(也就是计算机程序)是其中的关键组成部分,因为它们控制着一个合约的活动和事件。MOVE智能合约的建立正是为了协助开发者开发适应性强的软件,以简化程序的开发进程。

本文将探讨MOVE的特点、用途、组成以及近期广受追捧的原因。

什么是MOVE?

MOVE是一种实用的编程语言,支持智能合约和可定制交易。它的开发是为了解决困扰区块链编程语言的常见困难。有了MOVE提供安全和保护,开发者能够构建适应性强的程序,轻松地管理和转移数字资产。

虽然MOVE还有其他应用,但其主要动机是开发一种编程语言,以确保数字资产的独特所有权和单一使用。

MOVE编程语言的背景简介

Facebook的Diem区块链需要一种安全且易于使用的编程语言,因此他们开发了MOVE。开发Libra的目的是开发一个简单、廉价、可以在全球范围内普遍使用的区块链。它被开发为一种低成本、灵活的基于区块链的数字资产。因此,MOVE被设计为执行区块链交易,并允许开发人员建立与Libra兼容的应用程序的手段。

在2020年底之前,Libra面临国际经济成员对该公司之前的名称和标志的批评,于是它将名称改为Diem。2022年1月,由于全球大国担心Libra的推出会导致安全和洗钱问题,因此Libra区块链的推出失败了。

MOVE是用RUST语言编写的,这是一种多范式编程语言,在2018年备受全球程序员的追捧。Rust的编程语言优先考虑内存安全和避免并发问题(数据争用)。它是由Graydon Hoare在2006年为Mozilla Research工作时开发的。

MOVE的设计目标

MOVE对Diem区块链的设计目标主要是提供一个安全且容易进行编程的平台。为了实现这一点,MOVE必须以简单、精确和可验证的方式展示Diem区块链的规则及其发行的代币。

有鉴于此,MOVE的开发者们确定了一套经过仔细考虑的设计目标,以确保该计划的持续成功和可行性。其主要的设计目标为 :

一级(First-Class)资源

MOVE允许用户声明自定义的资产作为资源类型。这些资产被称为一级资源,并被授予特殊的权限和更好的安全性。一级资源也将自动进行访问控制,只有拥有正确字节码验证的用户才能通过访问进行扩展。MOVE也有与以太坊智能合约(Solidity)类似的多种模块。这些模块是持有资源,具有不同类型和程序的代码块。

MOVE的特殊构建使得资源在模块中具有出色的透明度,而对模块的外部调用则是完全不透明的。MOVE语言的另一个重要特征是使用语义定义自定义资源类型,资源永远不能被复制或完全删除。它们只能被从一个存储位置移动到另一个存储位置。

灵活性

交易脚本(Transaction Script)将包含在每个Diem (Libra)交易中。这些交易脚本在一个模块中用来进行调用和调出。单个主程序可以由可定制的任意代码组成,单个交易脚本可以调用各种程序。

MOVE中的模块给程序员提供了建立安全代码的灵活性。由于MOVE在 “classes、methods、objects “和 “modules、procedures, and resources “之间具有相同的关系,它可以被类比为面向对象的编程语言。

可验证性

MOVE上也允许链外验证工具,尽管它已经拥有一个能够进行链上验证的系统。这是因为链上验证对高级区块链来说是不恰当的。链外验证的引入将减少链上验证的复杂程度。为了实现这一点,MOVE编程语言将专注于三个不同的设计:

不提供动态分发

这是为了避免产生复杂的调用图,并允许静态地确定调用站点。

模块化

MOVE在模块化的帮助下,能够隔离模块进行功能验证。移动模块将有助于数据抽象并本地化执行资源。

有限的可变性

这种设计对于面向利用类似于C++的引用类型的情况来说是不错的。它在一个点上最多只允许一个可变的引用。

安全性

在MOVE编程语言中,三个安全属性是必不可少的;资源,类型以及内存安全性。MOVE可以采用不同的方法来确保不遵守这些安全属性的程序不被接受。

第一种方法是让MOVE使用高级编程语言,并配备相应编译器来实现这些属性。

第二种方法是使用低级别的非类型化汇编和安全检查。MOVE并未使用这两种方法,转而采用自己的执行方式,即一个相对高级的类型化字节码。它比汇编语言更高级但比源语言更低级。

MOVE的运行原理?

MOVE采用线性逻辑开发的,它可以防止数字资产被删除或复制,并将其使用限制为仅有一次。由于编码的资源类型被视为第一类,开发者可以保护它们不被意外地覆盖或删除。

作为一种编程语言,MOVE采用了一个静态类型系统,将程序变量定义为预先确定的类别(即数字或单词)。 MOVE允许资源像任何其他非第一类资源一样使用,同时仍然确保其安全性。它们可以很容易地被存储在数据结构中或作为计算中的值传递。

这确保了MOVE的资源高度安全,又在性能上不受限制地执行。该代码增加了一层保护,但可以很容易地适应任何其他操作。通过这种组合,困扰大多数区块链的安全和可扩展性问题终于可以得到解决。

与其他类似程序相比,MOVE有什么不同?

大多数加密货币项目除了名称之外,都有一定的特点或属性,使其在所有其他平台和竞争对手脱颖而出。在这方面MOVE也不例外,它为自己配备了某些功能,使其成为现有项目的更好选择。以下是MOVE区别于其他平台的几个特点:

  • MOVE纳入了语言语义中的嵌入式访问控制策略。
  • 以太币和比特币等数字货币不受MOVE强制执行的任何类型的默认式系统的约束
  • 可以在整个语言中追踪到一个单一资产的定位。对应任何一种定制的资产来说,例如ERC20代币,创建该代币的程序员都会检查所指定的所有安全特征。
  • 与传统编程语言相比,MOVE 不存在限制的问题

MOVE的组成部分

除了上述独特功能之外,MOVE还包括几个为程序流程量身定做的组件。以下是用户可以在MOVE中找到的几个组件。

类型

在MOVE中,这指的是支持的原始数据类型。例子包括布尔运算、64位无符号整数、固定长度的字节数组和256位地址。

结构

第一种叫做Kind,指的是资源结构。第二种叫做unrestricted,指的是通用结构。

程序

程序包含公共方法和内部方法。。非周期性的模块依赖性有助于防止重入攻击。

字节码验证器(Bytecode Verifier)

这个组件的任务是在模块发布之前验证安全特性。MOVE上的程序在发布前必须经过验证器。验证被分解成不同的阶段:

  • 堆栈平衡检查以确保堆栈的大小在所有操作后未被修改
  • 类型检查
  • 控制图开发
  • 参考检查
  • 将引用链接到全局状态以检查声明及其用法之间的匹配
  • 资源检查

字节码解释器

一旦验证过程完成,所有程序必须经过解释器。MOVE程序的执行以类似以太坊的方式进行计量,因为两个平台都使用gas参数,确保无限循环执行。

MOVE虚拟机

MOVE虚拟机的吞吐量与其他区块链相同。它包括几个包含多个交易的区块,每个交易一旦执行,就会产生一个交易效应。交易效果可以帮助创建更新的全局状态。因此,它可以确保更好地区分状态转换和效果。

MOVE成功背后的原因

尽管人们期望MOVE成为一种广泛使用的编程语言,但它的发展因Diem(以前的Libra)的问题而受阻。而最近由于Aptos的出现,MOVE又一次获得了机会。

Aptos是一个使用MOVE编程语言创建的第一层区块链。它是由Meta的开发者开发的,在Meta放弃了Diem(原Libra)区块链项目后,其开发者决定创建自己的区块链。并行处理和MOVE编程语言的结合使得项目在理论上的交易吞吐量达到每秒10万次。

Aptos选择MOVE编程语言的结果是,在理论上可以实现高交易速度和可扩展性,而不影响区块链的安全性。Aptos实施的功能将使其区块链从竞争对手中脱颖而出。

MOVE和其他编程语言

MOVE并不是唯一可用的编程语言,它经常与Solidity和Clarity形成对比。在不同程度上,这三种语言是区块链生态系统的骨干。下面列出的是MOVE与其他两种语言的对比。

MOVE vs. Solidity

Solidity是一种专门为在以太坊网络上创建智能合约而构建的编程语言。因此,Ethereum项目的支持者已经使Solidity成为为Ethereum虚拟机以及EVM兼容的区块链开发平台实施智能合约的首要选择。这种高级的语言从Javascript、C++和Python等其他编程语言中获得了灵感。

solidity的设计允许开发者编写利用自我强化逻辑的应用程序。同时,Solidity利用javascript的语法作为灵感,使得Javascript很容易被开发者理解和实施。

Solidity,像MOVE一样,被设计成可以在多个网络中工作。Diem是使用MOVE编程语言的最佳网络,但它最终被关闭了。另一方面,Solidity协议是为与以太坊区块链一起使用而设计的,以太坊区块链至今仍是最广泛采用且仍然活跃的分布式账本之一。

面对重入攻击的不同安全性表现是MOVE和Solidity的一大区别。众所周知,如果用该语言构建的代码很弱,Solidity很容易受到重入攻击。而MOVE由于其资产安全特性(资源定义和控制权分离,静态类型,泛型,模块系统和形式化验证)而不会受到重入攻击。

最后,开发人员选择编程语言的一个关键因素是易用性。Solidity被称为是最灵活的语言之一,这就是为什么它至今仍被广泛使用。另一方面MOVE虽然易于使用。但使用性没有那么灵活。

MOVE vs. Clarity

Blockstack是一个致力于发展自己的互联网并提供智能合约服务和设施的平台。为了促进这一点,Blockstack引入了Clarity作为他们自己的Stacks区块链的智能合约编程语言。在Clarity编程语言的帮助下,用户可以创建他们自己独特的合同条款,而不是依赖预先编程的条款。

Clarity还消除了意外交易发生的机会,使其具有额外的安全水平。Clarity的编程语言的”可解码性”是它的关键特征,明确判定了计算机将对代码做什么。

MOVE基于Diem,这是一个高度可扩展、安全和灵活的区块链,而Clarity基于Stack 2.0,这是一个建立在Ethereum基础上的各种dApps的开源网络。

MOVE与Clarity的区别部分在于其编译功能。用MOVE编写的代码是通过编译器运行的。与使用编译器来运行代码的MOVE相比,Clarity不需要编译器。

结论

MOVE是一种特殊类型的编程语言,有望彻底改变整个区块链行业。到目前为止,它已经激起了新兴区块链如Aptos的兴趣,但只有时间能证明他们是否会走向成功。

Author: Tamilore
Translator: piper
Reviewer(s): Hugo、Edward、Ashely、Joyce
* The information is not intended to be and does not constitute financial advice or any other recommendation of any sort offered or endorsed by Gate.io.
* This article may not be reproduced, transmitted or copied without referencing Gate.io. Contravention is an infringement of Copyright Act and may be subject to legal action.

什么是MOVE语言?

进阶11/30/2022, 9:36:43 AM
MOVE是由Libra(现在的Diem)开发的一种功能性字节码语言,用于解决影响区块链的问题。MOVE使智能合约可以实现并允许定制交易。

前言

区块链和加密货币行业已经彻底改变了金融行业和整个世界,也催生了一些推动行业发展的初创公司,并且使得加密货币得以广泛应用。许多项目催生出足以吸引主流用户的新平台,该行业的受众也得以进一步扩大。

这些项目由若干机制提供动力,这些机制确保了运作的顺利进行和平台的安全、可靠、高效。智能合约(也就是计算机程序)是其中的关键组成部分,因为它们控制着一个合约的活动和事件。MOVE智能合约的建立正是为了协助开发者开发适应性强的软件,以简化程序的开发进程。

本文将探讨MOVE的特点、用途、组成以及近期广受追捧的原因。

什么是MOVE?

MOVE是一种实用的编程语言,支持智能合约和可定制交易。它的开发是为了解决困扰区块链编程语言的常见困难。有了MOVE提供安全和保护,开发者能够构建适应性强的程序,轻松地管理和转移数字资产。

虽然MOVE还有其他应用,但其主要动机是开发一种编程语言,以确保数字资产的独特所有权和单一使用。

MOVE编程语言的背景简介

Facebook的Diem区块链需要一种安全且易于使用的编程语言,因此他们开发了MOVE。开发Libra的目的是开发一个简单、廉价、可以在全球范围内普遍使用的区块链。它被开发为一种低成本、灵活的基于区块链的数字资产。因此,MOVE被设计为执行区块链交易,并允许开发人员建立与Libra兼容的应用程序的手段。

在2020年底之前,Libra面临国际经济成员对该公司之前的名称和标志的批评,于是它将名称改为Diem。2022年1月,由于全球大国担心Libra的推出会导致安全和洗钱问题,因此Libra区块链的推出失败了。

MOVE是用RUST语言编写的,这是一种多范式编程语言,在2018年备受全球程序员的追捧。Rust的编程语言优先考虑内存安全和避免并发问题(数据争用)。它是由Graydon Hoare在2006年为Mozilla Research工作时开发的。

MOVE的设计目标

MOVE对Diem区块链的设计目标主要是提供一个安全且容易进行编程的平台。为了实现这一点,MOVE必须以简单、精确和可验证的方式展示Diem区块链的规则及其发行的代币。

有鉴于此,MOVE的开发者们确定了一套经过仔细考虑的设计目标,以确保该计划的持续成功和可行性。其主要的设计目标为 :

一级(First-Class)资源

MOVE允许用户声明自定义的资产作为资源类型。这些资产被称为一级资源,并被授予特殊的权限和更好的安全性。一级资源也将自动进行访问控制,只有拥有正确字节码验证的用户才能通过访问进行扩展。MOVE也有与以太坊智能合约(Solidity)类似的多种模块。这些模块是持有资源,具有不同类型和程序的代码块。

MOVE的特殊构建使得资源在模块中具有出色的透明度,而对模块的外部调用则是完全不透明的。MOVE语言的另一个重要特征是使用语义定义自定义资源类型,资源永远不能被复制或完全删除。它们只能被从一个存储位置移动到另一个存储位置。

灵活性

交易脚本(Transaction Script)将包含在每个Diem (Libra)交易中。这些交易脚本在一个模块中用来进行调用和调出。单个主程序可以由可定制的任意代码组成,单个交易脚本可以调用各种程序。

MOVE中的模块给程序员提供了建立安全代码的灵活性。由于MOVE在 “classes、methods、objects “和 “modules、procedures, and resources “之间具有相同的关系,它可以被类比为面向对象的编程语言。

可验证性

MOVE上也允许链外验证工具,尽管它已经拥有一个能够进行链上验证的系统。这是因为链上验证对高级区块链来说是不恰当的。链外验证的引入将减少链上验证的复杂程度。为了实现这一点,MOVE编程语言将专注于三个不同的设计:

不提供动态分发

这是为了避免产生复杂的调用图,并允许静态地确定调用站点。

模块化

MOVE在模块化的帮助下,能够隔离模块进行功能验证。移动模块将有助于数据抽象并本地化执行资源。

有限的可变性

这种设计对于面向利用类似于C++的引用类型的情况来说是不错的。它在一个点上最多只允许一个可变的引用。

安全性

在MOVE编程语言中,三个安全属性是必不可少的;资源,类型以及内存安全性。MOVE可以采用不同的方法来确保不遵守这些安全属性的程序不被接受。

第一种方法是让MOVE使用高级编程语言,并配备相应编译器来实现这些属性。

第二种方法是使用低级别的非类型化汇编和安全检查。MOVE并未使用这两种方法,转而采用自己的执行方式,即一个相对高级的类型化字节码。它比汇编语言更高级但比源语言更低级。

MOVE的运行原理?

MOVE采用线性逻辑开发的,它可以防止数字资产被删除或复制,并将其使用限制为仅有一次。由于编码的资源类型被视为第一类,开发者可以保护它们不被意外地覆盖或删除。

作为一种编程语言,MOVE采用了一个静态类型系统,将程序变量定义为预先确定的类别(即数字或单词)。 MOVE允许资源像任何其他非第一类资源一样使用,同时仍然确保其安全性。它们可以很容易地被存储在数据结构中或作为计算中的值传递。

这确保了MOVE的资源高度安全,又在性能上不受限制地执行。该代码增加了一层保护,但可以很容易地适应任何其他操作。通过这种组合,困扰大多数区块链的安全和可扩展性问题终于可以得到解决。

与其他类似程序相比,MOVE有什么不同?

大多数加密货币项目除了名称之外,都有一定的特点或属性,使其在所有其他平台和竞争对手脱颖而出。在这方面MOVE也不例外,它为自己配备了某些功能,使其成为现有项目的更好选择。以下是MOVE区别于其他平台的几个特点:

  • MOVE纳入了语言语义中的嵌入式访问控制策略。
  • 以太币和比特币等数字货币不受MOVE强制执行的任何类型的默认式系统的约束
  • 可以在整个语言中追踪到一个单一资产的定位。对应任何一种定制的资产来说,例如ERC20代币,创建该代币的程序员都会检查所指定的所有安全特征。
  • 与传统编程语言相比,MOVE 不存在限制的问题

MOVE的组成部分

除了上述独特功能之外,MOVE还包括几个为程序流程量身定做的组件。以下是用户可以在MOVE中找到的几个组件。

类型

在MOVE中,这指的是支持的原始数据类型。例子包括布尔运算、64位无符号整数、固定长度的字节数组和256位地址。

结构

第一种叫做Kind,指的是资源结构。第二种叫做unrestricted,指的是通用结构。

程序

程序包含公共方法和内部方法。。非周期性的模块依赖性有助于防止重入攻击。

字节码验证器(Bytecode Verifier)

这个组件的任务是在模块发布之前验证安全特性。MOVE上的程序在发布前必须经过验证器。验证被分解成不同的阶段:

  • 堆栈平衡检查以确保堆栈的大小在所有操作后未被修改
  • 类型检查
  • 控制图开发
  • 参考检查
  • 将引用链接到全局状态以检查声明及其用法之间的匹配
  • 资源检查

字节码解释器

一旦验证过程完成,所有程序必须经过解释器。MOVE程序的执行以类似以太坊的方式进行计量,因为两个平台都使用gas参数,确保无限循环执行。

MOVE虚拟机

MOVE虚拟机的吞吐量与其他区块链相同。它包括几个包含多个交易的区块,每个交易一旦执行,就会产生一个交易效应。交易效果可以帮助创建更新的全局状态。因此,它可以确保更好地区分状态转换和效果。

MOVE成功背后的原因

尽管人们期望MOVE成为一种广泛使用的编程语言,但它的发展因Diem(以前的Libra)的问题而受阻。而最近由于Aptos的出现,MOVE又一次获得了机会。

Aptos是一个使用MOVE编程语言创建的第一层区块链。它是由Meta的开发者开发的,在Meta放弃了Diem(原Libra)区块链项目后,其开发者决定创建自己的区块链。并行处理和MOVE编程语言的结合使得项目在理论上的交易吞吐量达到每秒10万次。

Aptos选择MOVE编程语言的结果是,在理论上可以实现高交易速度和可扩展性,而不影响区块链的安全性。Aptos实施的功能将使其区块链从竞争对手中脱颖而出。

MOVE和其他编程语言

MOVE并不是唯一可用的编程语言,它经常与Solidity和Clarity形成对比。在不同程度上,这三种语言是区块链生态系统的骨干。下面列出的是MOVE与其他两种语言的对比。

MOVE vs. Solidity

Solidity是一种专门为在以太坊网络上创建智能合约而构建的编程语言。因此,Ethereum项目的支持者已经使Solidity成为为Ethereum虚拟机以及EVM兼容的区块链开发平台实施智能合约的首要选择。这种高级的语言从Javascript、C++和Python等其他编程语言中获得了灵感。

solidity的设计允许开发者编写利用自我强化逻辑的应用程序。同时,Solidity利用javascript的语法作为灵感,使得Javascript很容易被开发者理解和实施。

Solidity,像MOVE一样,被设计成可以在多个网络中工作。Diem是使用MOVE编程语言的最佳网络,但它最终被关闭了。另一方面,Solidity协议是为与以太坊区块链一起使用而设计的,以太坊区块链至今仍是最广泛采用且仍然活跃的分布式账本之一。

面对重入攻击的不同安全性表现是MOVE和Solidity的一大区别。众所周知,如果用该语言构建的代码很弱,Solidity很容易受到重入攻击。而MOVE由于其资产安全特性(资源定义和控制权分离,静态类型,泛型,模块系统和形式化验证)而不会受到重入攻击。

最后,开发人员选择编程语言的一个关键因素是易用性。Solidity被称为是最灵活的语言之一,这就是为什么它至今仍被广泛使用。另一方面MOVE虽然易于使用。但使用性没有那么灵活。

MOVE vs. Clarity

Blockstack是一个致力于发展自己的互联网并提供智能合约服务和设施的平台。为了促进这一点,Blockstack引入了Clarity作为他们自己的Stacks区块链的智能合约编程语言。在Clarity编程语言的帮助下,用户可以创建他们自己独特的合同条款,而不是依赖预先编程的条款。

Clarity还消除了意外交易发生的机会,使其具有额外的安全水平。Clarity的编程语言的”可解码性”是它的关键特征,明确判定了计算机将对代码做什么。

MOVE基于Diem,这是一个高度可扩展、安全和灵活的区块链,而Clarity基于Stack 2.0,这是一个建立在Ethereum基础上的各种dApps的开源网络。

MOVE与Clarity的区别部分在于其编译功能。用MOVE编写的代码是通过编译器运行的。与使用编译器来运行代码的MOVE相比,Clarity不需要编译器。

结论

MOVE是一种特殊类型的编程语言,有望彻底改变整个区块链行业。到目前为止,它已经激起了新兴区块链如Aptos的兴趣,但只有时间能证明他们是否会走向成功。

Author: Tamilore
Translator: piper
Reviewer(s): Hugo、Edward、Ashely、Joyce
* The information is not intended to be and does not constitute financial advice or any other recommendation of any sort offered or endorsed by Gate.io.
* This article may not be reproduced, transmitted or copied without referencing Gate.io. Contravention is an infringement of Copyright Act and may be subject to legal action.
Start Now
Sign up and get a
$100
Voucher!