请选择 进入手机版 | 继续访问电脑版
开启辅助访问
链路首页链路财经的所有资讯均来自网络投稿,不代表本公司任何投资暗示。有侵权者请联系jubao@linksfin.com删除
2019
11/02
13:24
分享
评论
  • 曾在3轮融资中共获得1.95亿美元的公链平台Dfinity,其开发团队在今日发布了它的编程语言Motoko以及软件开发工具包Canister SDK的Alpha版本。

    据悉,Dfinity曾获得 Andreesen Horowitz、Polychain Capital 等圈内一线投机机构的青睐,曾被认为是“下一代”公链的有力竞争者,中文社区则将其称为“蒂凡尼”,而其自身的定义是成为“互联网计算机”。

    (图片来自Dfinity)

    所谓的互联网计算机是指什么?

    而在了解Dfinity这次发布的产品之前,我们还需要了解两个概念,一个就是“互联网计算机”,另一个就是“Canister”。

    那么,它们到底是指什么呢,我们先看官方给出的解释:

    “对于使用Motoko语言编写的软件服务,互联网计算机提供了托管这些服务的单个共享操作系统的抽象。每个服务都是一个Canister(容器),其由元数据、静态内容以及编译后Motoko软件的Wasm模块(也可以是来自另一种语言的Wasm模块)组成

    互联网计算机上的每个Canister(容器)实现一个微服务,该微服务通过防篡改、异步消息传递和强通信保证与其他微服务交互。

    而在底层,互联网计算机是一个由安全通信的联网计算机组成的网络,它们共同为注册用户、开发人员和其他计算机处理服务。

    与传统的公共或私有云(如AWS、谷歌云平台或微软Azure)不同,互联网计算机平台托管的程序都是分布式的,而平台本身并不是由单个私有公司拥有和运营。

    相反,它的分布式架构,使得多台计算机能够作为一个强大的虚拟机运行。此虚拟机没有单点故障,它独立于易受攻击的传统IT技术运行。因此,互联网计算机为托管Motoko微服务提供了一个独特、开放且不可阻挡的平台。”

    好吧,实际上,Dfinity的愿景与以太坊是“一毛一样”的,我们可以把它视为一个竞争品。

    Canister SDK和Motoko编程语言

    简单的说,Canister SDK 的存在目的是让你能够轻松地在DFINITY平台上构建应用和服务。

    根据DFINITY官方发布的信息来看,目前的Canister SDK还只是一个Alpha版本,其暂时只支持 macOS和Linux平台,而在发布正式版本之前,开发者会定期对其进行检查并尝试新的功能

    而Motoko,则是一种现代编程语言,其旨在让那些熟悉JavaScript、或其他现代编程语言(如Rust、Swift、TypeScript、C#或Java)的现代面向对象和函数式编程习惯用法的程序员,能够轻松使用这种语言,并为“DFINITY”平台做贡献。

    Motoko 语言允许编程者使用现代编程习惯,包括分布式应用的特殊编程抽象。每个应用都由一个actor组成,该actor与其他actor通信时不使用共享状态,而是使用(异步)消息传递。

    Motoko语言基于actor的编程抽象允许人类可读的消息传递模式,并且它们强制所有网络交互遵守某些规则并避免某些常见错误。

    具体来说, Motoko类型系统静态地检查每个motoko程序是否在所有可能的输入上安全地执行,而没有内部类型错误。因此,其排除了其他语言中常见的编程陷阱类,包括空指针错误、参数和结果类型不匹配及很多其它陷阱类型。

    Motoko语言亮点

    1、原生Canister支持

    actor Counter {var value = 0;public func inc : async Nat {value += 1;return value;};}

    Motoko语言对互联网计算机软件Canister有原生支持,这些软件Canister表示为actor、封装其状态并通过异步消息进行通信的自治对象。

    2、以直接样式顺序编码

    actor Factorial {var last = 1;public func next : async Nat {last *= (await Counter.inc);return last;}}

    在互联网计算机上,软件Canister会异步调用其它Canister,但Motoko语言能够使你以直接样式顺序编程你的系统。

    异步消息是返回future的函数调用,await结构则允许链接调用,就好像它们是同步的一样。

    3、Modern类型系统

    type Tree = {#leaf : T;#branch : {left : Tree; right : Tree};};

    func iterTree(tree : Tree, f : T -> ) {switch (tree) {case (#leaf(x)) { f(x) };case (#branch{left; right}) {iterTree(left, f);iterTree(right, f);};}}

    Motoko语言的设计对于熟悉Javascript和其他流行编程语言的人来说是非常直观的,但是它具有现代语言特征,比如完备的结构类型、泛型、变体类型以及核实模式匹配。

    4、自动生成IDL文件

    service Counter : {inc :  -> (nat);reset :  -> ;}

    SDK会导出你的接口定义,因此其它Canister、浏览器驻留代码以及具有权限的智能手机应用可调用你的函数。Motoko编译器还可读写接口定义文件,允许Motoko与使用其它编程语言编写的Canister进行无缝交互。

    5、正交持久性(Orthogonal persistence)

     import Dict = "mo:dict";

    actor Registry {type Id = Nat64;let dict = Dict;public func register(name : Text, id : Id) {dict.insert(name, id);};public func lookup(name : Text, id : Id) : async ?Id {dict.lookup(name);};}

    互联网计算机会保留Canister运行的寄存器页。因此,参与者及其所有寄存器数据结构的状态将无限期地存在,不需要显式地“保存”它们。Motoko提供了很多功能来帮助你利用这个环境,包括允许你在升级Canister软件时实现自迁移的语言功能。

    另外,Motoko还提供了很多很酷的功能,包括对WebAssembly虚拟机的深度支持,其允许你使用其它语言编写的模块链接到你的Canister中。

    想要了解Dfinity SDK更多的信息?你可以看这里:https://sdk.dfinity.org/developers-guide/quickstart.html

    关于Motoko语言的?你可以看这里:https://sdk.dfinity.org/language-guide/index.html

主题帖 5377 关注 0 粉丝 1
情感指数

链路大数据分析置信度 35.87 %

TA的主题帖
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表