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

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

以下内容为译文:

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

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

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

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

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

Move语言具有第一类资源;

Meta已支持在Facebook和Instagram上展示个人所属数字收藏品:金色财经报道,Meta宣布已支持在Facebook上展示NFT,用户可将个人数字钱包连接至App后展示个人所有的NFT。Meta最早于5月向少数创作者和收藏家开放在Instagram上分享其持有的NFT的功能,之后于8月初宣布支持CoinbaseWallet和Dapper钱包连接以展示个人所持有的的NFT。[2022/8/30 12:56:17]

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

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

一、Move语言的主要特点

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

因ChainSwap跨链桥合约漏洞,Dora Factory损失少量跨链资产:官方消息,Dora Factory因跨链资产桥ChainSwap出现合约漏洞,锁定在ChainSwap跨链桥合约中的7872个DORA被黑客取出并已通过Uniswap卖出。目前,ChainSwap已经联系Dora Factory基金会,告知情况。Dora Factory将与ChainSwap协商,在未来数日内确定解决方案,并向社区公布。

Dora Factory锁定在跨链桥中的资产总量较小,本次受影响的代币价值约5万美元,相对于Dora Factory总市值,此部分代币总市值很小,且大多为基金会为跨链Defi提供流动性所用资产,因此对Dora Factory造成的实质影响可忽略不计,也将不影响Dora Factory的任何产品、运营和发展计划。

考虑到当前跨链技术还不成熟,跨链智能合约具有很高的不稳定性,Dora Factory将暂时撤回一切跨链流动性,以及所有非一线AMM中的Defi流动性。[2021/7/11 0:43:08]

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

动态 | Facebook为Libra聘请临时的关键领导团队:据The block报道,Facebook为Libra聘请了临时的关键领导团队,其中包括任命Bertrand Perez担任临时董事总经理兼首席运营官。据悉,Perez是PayPal创始团队成员之一,在PayPal工作了七年。这些临时聘用人员的去留将由创始成员和最终由成员选举出的董事总经理决定。Facebook通讯产品主管David Marcus之前曾表示Libra需要一位固定的董事总经理,并将Facebook与Libra团队的招聘撇清关系。目前还不清楚是Facebook还是Libra成员雇佣了Perez,也不清楚Perez、Facebook还是Libra协会雇佣了其余的团队成员。目前至少有四个董事总经理所管辖的职位被临时填补,其中包括产品主管和业务发展主管,被聘人员主要来自PayPal、BitTorrent和其他传统的金融机构。[2019/7/6]

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

分析 | Facebook的Libra可能会受到监管挑战:据路透社报道,Facebook将面临前所未有的监管审查,其数字货币希望在一年内成为全球认可的法定货币。自从Facebook公布其加密货币Libra以来,路透社已经与十几位在金融监管、金融技术、支付或加密货币方面有经验的人进行了交谈。很少有人预计政府机构会轻举妄动。该公司的声明立即遭到了全球美国立法者和监管者的强烈反对,他们担心Facebook已经过于庞大,并且对用户隐私漠不关心。 负责协调20国集团(G20)金融规则的金融稳定委员会(Financial StabilityBoard)主席Randal Quarles本周警告称,在零售支付中更广泛地使用加密资产,需要监管机构进行密切的全球审查。比特币等加密货币仍是监管最少的金融领域之一。 反垄断倡导组织开放市场研究所(Open Markets Institute)执行董事Barry Lynn表示,“从监管的角度来看,这是一场彻底的灾难。这是一家在世界各地与监管机构发生冲突的公司。情况只会变得更糟。”[2019/6/29]

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

声音 | Cameron Winklevoss:在加密货币市场需要和Facebook成为朋友:据CBS News消息, Gemini联合创始人Tyler Winklevoss、Cameron Winklevoss在最近接受采访时谈到了其“宿敌”Facebook将宣布推出自己的加密货币。Winklevoss兄弟表示他们并不担心。Cameron说:“有这么大的蛋糕要做,在这一点上,我们需要成为朋友。”据此前消息,Winklevoss兄弟曾指责并起诉他们的前校友、Facebook创始人扎克伯格,称后者窃取了他们的创意。三者此后曾达成一项和解协议,Winklevoss兄弟将获得6500万美元的赔偿。但两人此后也曾表示,由于Facebook未曾披露内在价值,他们应当再获得一部分Facebook股权。[2019/6/17]

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

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

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

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

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区块链是一种新的编程环境,我们对应支持的习惯用法和模式的理解,仍在不断发展。目前,源语言还处于开发的早期阶段,我们还没有为它准备好发布时间表。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金星链

UNIIDA:IDAX开放BK充提、交易公告

亲爱的用户:?? IDAX将上线BK。开通BK/USDT交易,立即前往。充值开放时间:2019年6月22日08:00(UTC8)交易开放时间:2019年6月28日08:00(UTC8)Limit.

[0:93ms0-0:442ms