Facebook区块链项目Libra的其中一个技术亮点,就是它使用了一种称为Move的新编程语言,那么这种语言是怎样的呢,今天我们就从其官方的概述资料入手,近距离了解这种新的语言。
以下内容为译文:
Move是一种新的编程语言,它为Libra区块链提供了一个安全和可编程的基础。Libra区块链中的账户是任意数量Move资源及Move模块的容器。提交至Libra区块链的每个事务,都使用以Move语言编写的事务脚本对其逻辑进行编码。
这个事务脚本可调用模块声明的过程来更新区块链的全局状态。
在本指南的第一部分内容中,我们将概括性地介绍Move语言的主要特点:
Move事务脚本启用可编程事务;
Move模块允许组合型智能合约;
Move语言具有第一类资源;
《雪崩》作者:和Facebook涉及元宇宙的任何事情没有任何关系:10月30日消息,提出元宇宙概念的科幻作品《雪崩》,其作者Neal Stephenson发推表示:我与Facebook涉及元宇宙的任何事情都没有任何关系,除了一个明显的事实,即他们使用了我在《雪崩》中创造的术语。我和Facebook之间的交流为0,没有商业关系。[2021/10/30 6:21:44]
对于求知欲强的读者来说,Move编程语言的技术论文包含了更多关于该语言的细节信息:
在本指南的第二部分,我们将向你展示如何在Move中间代码优化的环境下编写自己的应用。初始的测试网并不支持自定义Move程序,但这些功能可供你在本地试用。
一、Move语言的主要特点
1、1Move事务脚本启用可编程事务
每个Libra事务都包含一个Move事务脚本,该脚本对验证者应代表客户端执行的逻辑进行编码;
Facebook:Libra将成为支持多种单一货币的加密交易手段:据外媒报道,Facebook(FB.O)及其合作伙伴宣布,Libra加密货币项目现在将支持多种版本的数字货币,其中大部分将由美元等单一法定货币支持,这是为了安抚世界各地持怀疑态度的监管机构而做出的部分改变。此前多国金融监管机构担心,此举可能会削弱央行的权力和控制。Libra政策主管Dante表示还开始与瑞士监管机构就支付牌照进行谈判,并希望将Libra在美国金融犯罪执法网络局(FinCEN)登记为“货币服务企业”。当Facebook 10个月前推出Libra时,它打算创建一种单一的全球货币,与一篮子货币挂钩,其中包括美元和欧元等法定货币,以及美国国债等证券。(金十)[2020/4/16]
事务脚本通过调用一个或多个Move模块的过程,与Libra区块链全局存储中发布的Move资源进行交互;
事务脚本不会存储在全局状态当中,因此其它事务脚本无法调用它,这是一个一次性程序;
声音 | Gartner副总裁:Facebook、沃尔玛发币可能会对无银行账户的客户造成意想不到的后果:据Gartner官方博客消息,Gartner副总裁Christophe Uzureau发文就Facebook和沃尔玛计划发币一事评论称:普惠金融并不是Facebook和沃尔玛的主要目标,这两家公司的举措都可能对无银行账户和存款不足的客户造成意想不到的后果。 比如,出于稳定性考虑,Libra的储备资产预计不太可能包括一些新兴市场的法币,而从理论上讲,这些市场的用户本可从这种新的数字货币中获益最大。Libra也会影响货币政策,其将稀释央行量化宽松政策的影响,并增加资本外流。反过来,这将限制可用于支持地方基础设施发展的投资资金。对于没有银行账户和存款不足的客户来说,使用沃尔玛代币可能会使他们依赖于沃尔玛及其合作伙伴,这对沃尔玛是有利的。然而,对于客户来说,这可能会限制他们与其他金融提供商合作、建立信用评分和获得更多独立金融建议的能力。 普惠金融是一个崇高的目标,而代币是提供融资渠道的有力工具,可推动客户采取更好的金融行动。然而,对于两家大型跨国公司考虑使用此类工具的举动,应该持怀疑态度。[2019/8/18]
我们在编写事务脚本时,提供了几个事务脚本示例;
动态 | 币安研究院发布即时点评,称Facebook发行稳定币即将对区块链行业产生深远影响:币安研究院在Facebook发布Libra白皮书后,即刻对其进行了评估,对Libra的特性、功能和全球的影响力进行了详细分析。币安研究院认为:Facebook意图凭借其24亿全球用户群体,将这一代币应用到其生态系统,会对整个区块链行业产生深远的影响。这一行为可能推动整个数字货币体量的增长,以及推动加密货币在机构和个人用户中的普及。[2019/6/18]
1、2Move模块允许组合型智能合约
Move模块定义了更新Libra区块链全局状态的规则。Move模块与其它区块链中的智能合约一样都是解决相同的问题。模块声明了可在用户账户下发布的资源类型。Libra区块链中的每个账户都是任意数量资源和模块的容器。
模块声明结构类型以及过程;
Move模块的过程,定义了创建、访问以及销毁其声明类型的规则。
Facebook副总裁:Facebook Messenger不太可能接受加密货币付款:\t\t\t\t \t\t\t\t据外媒报道:Facebook副总裁David Marcus指出了现有加密货币的问题,他认为高交易费用和缓慢的交易时间,都是加密货币短期内无法被作为支付方法的原因。采访中,Marcus重申了Facebook 禁止与电子货币相关广告的原因:绝大多数这类广告都是局。尽管如此,Marcus表明在行业合规后,加密货币合法产品相关的内容可能会在未来回Facebook。[2018/2/6]
模块是可重用的。一个模块中声明的结构类型,可以使用另一个模块中声明的结构类型,并且一个模块中声明的过程可以调用另一个模块中声明的公共过程。模块可以调用在其他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区块链是一种新的编程环境,我们对应支持的习惯用法和模式的理解,仍在不断发展。目前,源语言还处于开发的早期阶段,我们还没有为它准备好发布时间表。
公链最不缺钱,又最缺钱。6月15日,一则“BCH开发者800个BCH都筹不到“的消息令人大跌眼镜。虽然,不久前Grin社区也曾出现过类似窘境,但这回是身为BTC大太子、市值名列前茅的BCH.
1900/1/1 0:00:00美国社交巨头Facebook宣布即将推出一种基于区块链加密技术的世界货币,一石激起千层浪,美联储主席表示这种数字货币有可能会在未来替代更传统的货币.
1900/1/1 0:00:00作者:互链脉搏编辑部编者按:Libra白皮书发布之后,各方面的解读很多。周末,互链脉搏对区块链研究者“牛顿先生”进行了专访.
1900/1/1 0:00:00每日最新大咖观点,看我就够了!本期作者:叶子、三月既望比特币市场概况分析加密货币分析师CryptoMichael:三个月前,我们在讨论比特币是否会突破4000美元.
1900/1/1 0:00:00今年以来,期货合约俨然成了加密货币交易所的“新宠”,一边是原有交易所纷纷推出期货合约板块,借助原有用户基础,扩大业务版图;另一边是新的创业者尝试从期货合约切入,试图破局,后来居上.
1900/1/1 0:00:00数字稳定币供应商TrustToken今天宣布推出首款与亚洲货币港币挂钩的稳定币据cryptoninjas报道,数字稳定币供应商TrustToken今天宣布推出首款与亚洲货币港币挂钩的稳定币.
1900/1/1 0:00:00