月亮链 月亮链
Ctrl+D收藏月亮链

MOV:Facebook Move编程语言入门:易于开发吗?_LIBERO

作者:

时间:1900/1/1 0:00:00

Facebook区块链项目Libra的其中一个技术亮点,就是它使用了一种称为Move的新编程语言,那么这种语言是怎样的呢,今天我们就从其官方的概述资料入手,近距离了解这种新的语言。

以下内容为译文:

Move是一种新的编程语言,它为Libra区块链提供了一个安全和可编程的基础。Libra区块链中的账户是任意数量Move资源及Move模块的容器。提交至Libra区块链的每个事务,都使用以Move语言编写的事务脚本对其逻辑进行编码。

这个事务脚本可调用模块声明的过程来更新区块链的全局状态。

在本指南的第一部分内容中,我们将概括性地介绍Move语言的主要特点:

Move事务脚本启用可编程事务;

Move模块允许组合型智能合约;

Move语言具有第一类资源;

声音 | IBM高管:IBM愿意与Facebook就其数字货币业务展开合作:IBM的一位高管对CNBC表示,IBM愿意与Facebook就其数字货币业务展开合作。IBM负责区块链业务的总经理Jason Kelley称,在涉及区块链等技术时,该公司正寻求促进跨行业的“协作”。他向CNBC表示,“我们的客户已经准备好与(Facebook)合作,我们也已经准备好与他们所有人合作,共同实现这一目标。”但Jason Kelley没有透露IBM是否有兴趣加入Libra协会。(cnbc)[2019/9/23]

对于求知欲强的读者来说,Move编程语言的技术论文包含了更多关于该语言的细节信息:

在本指南的第二部分,我们将向你展示如何在Move中间代码优化的环境下编写自己的应用。初始的测试网并不支持自定义Move程序,但这些功能可供你在本地试用。

一、Move语言的主要特点

声音 | 中国市场学会理事张锐:无论Libra命运如何 Facebook都是大赢家:7月18日,中国市场学会理事、经济学教授张锐发表文章《无论Libra命运如何,Facebook都是大赢家》。文章指出,由于Libra锚定了银行存款、政府债券以及一篮子货币,完全可以量度商品的价值,同时可以充当商品交换的媒介,并作为标的进入公众财富的储藏范畴。因此,即便是Libra不能获得全球性法定货币的身份,但它完全能够以数字货币的身份像比特币那样在商品与服务流通领域长袖善舞,而且庞大的用户群体为其创造的价值空间一定比任何一种数字货币要广阔宽泛得多。不仅如此,Libra还可像微信和支付宝那样打开数字金融与数字社会的入口,从而将Facebook带入新的商业模式。[2019/7/18]

1、1Move事务脚本启用可编程事务

每个Libra事务都包含一个Move事务脚本,该脚本对验证者应代表客户端执行的逻辑进行编码;

动态 | 美国众议院金融服务委员会主席要求Facebook暂停加密货币项目:据coindesk报道,美国众议院金融服务委员会主席Maxine Waters要求Facebook暂停Libra加密货币网络的发展,直到举行听证会。此前,共和党议员Patrick McHenry曾致信Waters。McHenry写道:“我们知道,在有关该项目的范围和规模以及它如何符合全球金融监管框架方面存在许多悬而未决的问题,作为政策制定者,我们有责任了解Libra项目。需要超越谣言和猜测,并提供一个论坛以评估该项目及其对全球金融体系潜在的并且是前所未有的影响。 Waters在声明中表示,随着宣布创建加密货币的计划,Facebook正在继续其不受限制的扩张,并将其覆盖范围扩展到其用户的生活中。当涉及到加密货币时,目前没有“明确的监管框架来为投资者、消费者和经济提供强有力的保护”。[2019/6/19]

事务脚本通过调用一个或多个Move模块的过程,与Libra区块链全局存储中发布的Move资源进行交互;

分析 | Facebook的Globalcoin有潜力取代Tether:据financemagnates消息,针对Facebook的加密货币Globalcoin计划,Crypto Curry Club&Technicurries创始人Erica Stanford称,到目前为止还没有任何可靠的稳定币,Facebook有潜力做到这一点,创造一个完全稳定的法定支持的数字代币。此外,Globalcoin如果与美元,欧元和日元挂钩,将比许多国家的法定货币更稳定。[2019/5/31]

事务脚本不会存储在全局状态当中,因此其它事务脚本无法调用它,这是一个一次性程序;

我们在编写事务脚本时,提供了几个事务脚本示例;

1、2Move模块允许组合型智能合约

Move模块定义了更新Libra区块链全局状态的规则。Move模块与其它区块链中的智能合约一样都是解决相同的问题。模块声明了可在用户账户下发布的资源类型。Libra区块链中的每个账户都是任意数量资源和模块的容器。

Blockchain任命前Facebook、Google工程师为副总裁:钱包供应商Blockchain聘请了前Facebook和Google的西雅图办公室负责人彼得·威尔逊(Peter Wilson)担任其工程副总裁。威尔逊曾与微软合作,在工程领域拥有20年的经验。[2018/2/16]

模块声明结构类型以及过程;

Move模块的过程,定义了创建、访问以及销毁其声明类型的规则。

模块是可重用的。一个模块中声明的结构类型,可以使用另一个模块中声明的结构类型,并且一个模块中声明的过程可以调用另一个模块中声明的公共过程。模块可以调用在其他Move模块中声明的过程。事务脚本可以调用已发布模块的任何公共过程。

最终,Libra用户将能在自己的帐户下发布模块。

1、3Move语言具有第一类资源

Move的主要功能是定义自定义资源类型。资源类型用于编码具有丰富可编程性的安全数字资产。

资源是语言中的普通值,它们可存储为数据结构,作为参数传递给procedure,从procedure返回,等等;

Move类型系统为资源提供了特殊的安全保障。Move资源不能复制、重复使用或丢弃。资源类型只能由定义该类型的模块创建或销毁。这些保障是由Move虚拟机通过bytecode验证静态地强制执行的。Move虚拟机将拒绝运行尚未通过bytecode检验器的代码;

Libra币作为一种资源类型,其名称为LibraCoin

此事务脚本存在着一个不幸的问题:如果地址接收方没有账户,它将失败。我们将通过修改脚本来解决这个问题,为接收方创建一个账户。

//Asmallvariantofthepeer-peerpaymentexamplethatcreatesafresh//accountifonedoesnotalreadyexist

LibraAccount

让我们看一个更复杂的例子。在这个例子中,我们将使用事务脚本为多个接收方进行支付。

//Multiplepayeeexample

好了,到这里,我们就结束了事务脚本部分的展示,有关更多例子,包括初始测试网中支持的事务脚本,请参阅

libra/language/stdlib/transaction_scripts2、3编写模块

现在,我们把注意力集中到编写自己的Move模块上,而不仅仅是重用现有的LibraAccount和LibraCoin模块。考虑这样一个情况:Bob将来某个时候将在地址a创建一个帐户,Alice想要“指定”Bob一笔资金,以便他可以在账户创建后将其存入自己的帐户。但她也希望,如果Bob一直不创建一个账户,她就能收回这笔资金。

为了解决Alice的这个问题,我们将编写一个专用的EarmarkedLibraCoin模块,它会:

声明一个新的资源类型EarmarkedLibraCoin

//Allowthetransactionsendertoclaimacointhatwasearmarkedforher

//Allowthecreatoroftheearmarkedcointoreclaimit

//ExtracttheLibracoinfromitswrapperandreturnittothecaller

}

Alice可以为Bob创建一种预先安排的币,方法是创建一个事务脚本,调用Bob的地址a的create,以及她所拥有的LibraCoin.T。一旦地址a被创建,Bob就可以通过从a发送一个事务来领取这笔币,这会调用claim_for_recipient,将结果传递给unwrap,并将返回的LibraCoin存储在他希望的任何地方。如果Bob在创建a的过程中花费的时间太长,而Alice想要收回她的资金,那么Alice可以使用claim_for_creator,然后unwrap。

观察型读者可能已经注意到,本模块中的代码对LibraCoin.T的内部结构不可知。它可以很容易地使用泛型编程编写。我们目前正致力于为Move增加这种参量多态性。

2、4未来开发者体验

在不久的将来,MoveIR将稳定下来,编译和验证程序将变得更加对用户友好。此外,IR源的位置信息将被跟踪,然后传递给验证者,以使错误消息更容易排错。然而,IR将继续作为测试Movebytecode的工具。它是作为底层bytecode的一种语义透明的表示。

为了允许有效的测试,IR编译器需生成错误的代码,这些代码将被bytecode验证者拒绝,或在编译器的运行时失败。

而对用户友好的源语言则是另一种选择,它应该拒绝编译在管道的后续步骤中将失败的代码。

未来,我们将拥有更高层次的Move源语言。这种源语言将被设计成安全而容易地表达常见的Move惯用语和编程模式。由于Movebytecode是一种新语言,而Libra区块链是一种新的编程环境,我们对应支持的习惯用法和模式的理解,仍在不断发展。目前,源语言还处于开发的早期阶段,我们还没有为它准备好发布时间表。

标签:MOVMOVELIBLIBRA4MOVEMovement DAOLIBEROLibraFace

欧易okex官网热门资讯
LGO:Algorand 荷式拍卖的美妙、神奇和狡黠之处_ALGOBEAR币

Algorand基金会刚刚完成Algo代币的第一次荷兰式拍卖,最后以2.4美元的价格结束,出售了价值6000万美元的Algo代币.

1900/1/1 0:00:00
区块链:全国首个区块链政务服务平台在渝上线_区块链

以“大数据智能化”领跑全国的重庆迎来了新的科技创新。近期,全国首个区块链政务服务平台在重庆上线,注册公司的时间从过去的十几天缩短到最快只要3天,办事效率提升5倍.

1900/1/1 0:00:00
BTC:全球有20%的人拥有BTC 3个数据告诉你市场方向?_ubtc币有前景吗

一、全球22个国家有1/5的人拥有BTC卡巴斯基网络安全公司的一项新研究显示,全球有1/5的人拥有比特币和其他加密货币,更多关于大规模采用的进展......该调查于2018年10月和11月进行.

1900/1/1 0:00:00
比特币:看一个币 怎么能不看社区?_POS

这篇文章是我最近亲眼目睹了一个群,本来是聊其他东西,后来开始喜欢上一个币,并且买入不少的数量,开始有一个很高的目标价格,并且亲自开始布道。这让我想聊聊这个事情.

1900/1/1 0:00:00
COI:KuCoin已完成5月GALA的分发_COIN

亲爱的KuCoin用户KuCoin已完成5月ZPT持币用户的GALA发放,用户可通过资产中心>我的福利>其他获赠查看分发记录.

1900/1/1 0:00:00
FEX:WT开盘暴涨300%,WBFex启动四大保障计划_杭州女子花300万买比特币

6月21日10点,WBFex上线了平台通证WT与稳定币USDT的交易对,正式宣告WT的上市。过了5个小时,WT的价格已经从0.15USDT涨到了0.45USDT,涨幅达到300%,交易量达到30.

1900/1/1 0:00:00