gateio

GATE.IO芝麻开门

GATE.IO芝麻开门交易所(原比特儿交易所)是全球前10的交易所,新用户注册可免费领取空投,每月可得50-200U

点击注册 更多入口

更多交易所入口

一站式注册各大交易所、点击进入加密世界、永不失联,币安Binance/欧易OKX/GATE.IO芝麻开门/Bitget/抹茶MEXC/火币Huobi

点击进入 永不失联

前言

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

这些项目由若干机制提供动力,这些机制确保了运作的顺利进行和平台的安全、可靠、高效。智能合约(也就是计算机程序)是其中的关键组成部分,因为它们控制着一个合约的活动和事件。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的兴趣,但只有时间能证明他们是否会走向成功。

目录[+]