Facebook区块链项目Libra的其中一个技术亮点,就是它使用了一种称为Move的新编程语言,那么这种语言是怎样的呢,今天我们就从其官方的概述资料入手,近距离了解这种新的语言。
以下内容为译文:
Move是一种新的编程语言,它为Libra区块链提供了一个安全和可编程的基础。Libra区块链中的账户是任意数量Move资源及Move模块的容器。提交至Libra区块链的每个事务,都使用以Move语言编写的事务脚本对其逻辑进行编码。
这个事务脚本可调用模块声明的过程来更新区块链的全局状态。
在本指南的第一部分内容中,我们将概括性地介绍Move语言的主要特点:
Move事务脚本启用可编程事务;
Move模块允许组合型智能合约;
Move语言具有第一类资源;
欧易OKEx将上线DORA Factory(DORA):据欧易OKEx官方公告显示,欧易OKEx将于今天下午14:00(HKT)开放充值DORA Factory(DORA),下午17:00(HKT)开放DORA/USDT市场交易,将于3月24日18:00(HKT)开放提现。
据悉,Dora Factory 是基于波卡的 DAO 即服务基础设施,基于 Substrate 的开放、可编程的链上治理协议平台,为新一代去中心化组织和开发者提供二次方投票、曲线拍卖、Bounty 激励、跨链资产管理等可插拔的治理功能。同时,开发者可以向这个 DAO 即服务平台提交新的治理模块,并获得持续的激励。
欧易OKEx将与Dora Factory启动375,000美金DORA,用户可以参与官方活动限时获取15000枚免费IDO,通过交易、充值等方式,最多可分配4000枚DORA,等多详情请参加官网公告。[2021/3/23 19:10:39]
对于求知欲强的读者来说,Move编程语言的技术论文包含了更多关于该语言的细节信息:
声音 | 扎克伯格:Facebook“坚守原则”的新立场或加大Libra推出难度:Facebook首席执行官扎克伯格在犹他州盐湖城举行的2020年硅谷科技峰会上发表演讲,并提供了Facebook在2020年的指南。扎克伯格称,Facebook将坚持自己的原则,不管这是否会惹怒很多人。具体来说,扎克伯格谈到了强加密和言论自由是新方法的核心,这两个领域都引起了激烈的争论。此前,Facebook在去年12月因其广告规则而受到了极大的关注。在本届政府的大部分时间里,该公司都在激烈讨论应该如何监管广告。争论主要集中在Facebook是否应该在允许投放广告之前独立核实新闻报道。然而,扎克伯格现在有意脱离完该领域,Facebook允许广告客户在未经验证的情况下自由表达。但这一转变可能会惹怒一大堆人物。分析称,这一立场可能会危及Facebook的数字货币Libra顺利推出。扎克伯格似乎是在努力寻求国会决策者的批准。然而,目前这一远离透明度和新闻验证的新举措很可能会破坏这一过程。(BeInCrypto)[2020/2/2]
在本指南的第二部分,我们将向你展示如何在Move中间代码优化的环境下编写自己的应用。初始的测试网并不支持自定义Move程序,但这些功能可供你在本地试用。
声音 | Facebook区块链主管:Libra不会存储或分享个人财务信息:据coindesk报道,Facebook区块链主管David Marcus周一致信参议院银行委员会,称Facebook无法通过其新加密货币获取个人财务信息。Marcus表示,个人数据不会附加在Libra区块链上进行的任何交易中。类似于以太坊和比特币,在Libra区块链上发生的交易是“假名的”,这意味着用户的身份不会公开。交易中的区块链地址、时间戳和交易金额将是公开的,但任何了解你的用户(KYC)或反(AML)信息都必须由钱包提供商存储。Marcus指出,Libra将是一个开源平台,任何第三方开发者都将能够建立自己的数字钱包,这些第三方将对其Libra钱包负责。Marcus表示,由于验证器节点或钱包将处理和存储交易,Facebook和Libra都不会存储个人数据。此外,作为托管钱包,Calibra将保留一些消费者财务数据。除了有限的案例,Calibra不会在未经客户同意的情况下与Facebook或任何第三方共享帐户信息或财务数据。[2019/7/10]
一、Move语言的主要特点
声音 | 英国央行行长:对Facebook加密货币持开放的态度,但推出后可能会面临严格监管:据路透社报道,英国央行行长Mark Carney在葡萄牙欧洲中央银行组织的一次会议上表示,他对Facebook加密货币的潜在效用保持“开放的态度”,但同时警告称,其推出后可能会面临严格的监管。他表示,监管机构将不得不考虑这些货币的“运营弹性”及其反和反恐融资程序。Carney今年早些时候曾与Facebook创始人马克扎克伯格会面。[2019/6/19]
1、1Move事务脚本启用可编程事务
每个Libra事务都包含一个Move事务脚本,该脚本对验证者应代表客户端执行的逻辑进行编码;
事务脚本通过调用一个或多个Move模块的过程,与Libra区块链全局存储中发布的Move资源进行交互;
事务脚本不会存储在全局状态当中,因此其它事务脚本无法调用它,这是一个一次性程序;
动态 | 500万美元以上项目facebook活跃指数跳崖式下滑81.41%:据第三方大数据评级机构RatingToken监测数据显示,当前市值500万美元以上(不包含500万美元)项目334个。监测项目社区活跃指数同比上月下降36.52%,其中twitter活跃指数同比上月下降27.94%,facebook活跃指数同比上月下降81.41% 。twitter活跃度下降前3名AMO Coin(-96.85%),Siacoin(-90.82%)和Santiment(-86.9%),facebook活跃度下降前3名AMO Coin(-95.58%),Crypterium(-49.18%)和Verge(-49.01%)。RatingToken团队分析指出,监测项目社区活跃指数持续下滑,或与近期数字货币市场持续走低有关,从而触发投资者消极情绪。结合此前半数监测项目近30日持有人数减少,初步判断部分投资者已开始逐步清仓离场。如需要查看详情,请点击原文链接。[2018/12/11]
我们在编写事务脚本时,提供了几个事务脚本示例;
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区块链是一种新的编程环境,我们对应支持的习惯用法和模式的理解,仍在不断发展。目前,源语言还处于开发的早期阶段,我们还没有为它准备好发布时间表。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。