并行处理、动态扩容、灵活治理,这些能成为DFINITY的后发优势吗?

 空投币   2020-08-05  来源:互联网  0 条评论
优质活动 币圈快讯 平台公告 行情分析
最新羊毛 最新空投 链圈挖矿 活动线报
新币上市 币圈空投 国外项目 币链屋
提醒:本站内容均转自网络,仅用于开发者下载测试,请明辨风险,若涉资金安全及隐私,请谨慎!谨慎!再谨慎!一切风险自担,涉及资金交易及个人隐私务必小心并远离,切记千万别投资,勿上当受骗。《本站免责申明》

整理:Blockpunk

社区:果壳宇宙(ID:DfinityFun)

我们需要新的基础

加密世界本是一个无限加速的世界,这里永远不缺好玩的创新与绝妙的点子。但自2014年之后,我们就再也没有见过基础设施的跃升,在17年的上轮基础下的应用爆发之后,我们似乎播下了无数充满希望的种子,最后却只有 DeFi 结出了果实。

现在的 Layer1 基础是一块贫瘠的土壤,低TPS、弱最终性、高成本,我们浇上再多的水,种下再多的种子,这里也长不出烟草、葡萄与郁金香。就算是公链之王的以太坊也没法支撑起大部分的非金融应用,过度的金融化只会让系统变的越来越不安全,让我们失去刚争取到的自由,让每一个投资者、创业者、用户都感到焦虑与迷茫。

这是整个行业的荒芜,也是所有试图做应用的梦想家共同的”无家可归“。幸运的是,我们就快走到应许之地了,2020年 Layer1 基础上我们看到了许多激动人心的进展,多链的代表 Polkadot 上线,分片项目 NEAR 上线,甚至 ETH2.0 的第0阶段也有可能在年底上线。

一但新的基础完善,必然带来新一轮的应用爆发,这蕴含了真正的机会。

DFINITY 强壮的基本面

DFINITY 也在7月初上线了首个测试网,作为唯一坚持”世界计算机“理念的基础项目,DFINITY 经历了漫长的全栈开发。而在长达4个小时的发布会上,DFINITY 展示了及其丰富的内容:并行计算、链上治理的巧妙使用、无上限的动态扩容、完全去中心托管的前后端、底层支持的治理代币系统。

这些神奇的简直是”超能力“的功能,组合出了全新的应用范式,这不仅是加密世界,更是互联网世界的全新范式:我们不再需要前后端服务器、防火墙、数据库、分发网络、网关 API,甚至是账户与密码。

这是一个真正能承载社交、娱乐、生活这些日常网络应用服务的架构,DFINITY 不再是只提供合约执行的智能合约平台,它提供的是通用的计算、存储能力,你甚至不需要额外租一个服务器运行你的 DApp 的前端页面,你甚至不需要建立中间件服务器来提升用户体验,任何的阻碍已经被消除,代码一上传就能开始提供服务。

这是为去中心化的推特,去中心化的微信,去中心化的抖音、淘宝、头条,甚至大型线上游戏,所准备的技术基础。

在 DFINITY ”子网“与”网络神经元治理“两个系统巧妙的互相作用下,产出了令人感到惊艳的动态扩展方案,它是更优于 ETH2.0 的分片与 Polkadot 的多链的方案。

DFINITY 也具备世界范围里领先的技术团队与工程实力。目前团队总人数高达115人,其中工程师团队就有56人,这些工程师著名的包括原谷歌内部 WASM 的创造者 Andreas、BLS 阀值签名的创造者 Lynn,以及 Haskell 的核心开发者等等,团队成员基本都来自 Google(8位)、IBM(7位)、Intel(4位)、Coinbase(2位)、Facebook(2位)、VMwave(2位)、Uber(1位) 等科技巨头。毫不夸张的说,在整个 IT 业界,这都是最顶尖的团队。

DFINITY 整套的全栈架构由56人的工程师团队花了三年的时间开发,在短期内难以被复制的,最关键的是 DFINITY 对治理的重视与对治理代币的原生支持,甚至有机会创造新的群体涌现浪潮(如 ICO)。

为了展示 DFINITY 优雅有趣的架构与技术实现,并帮助更多的开发者认识并开始 DFINITY 上应用的开发,下面将从更高的架构的维度,介绍 DFINITY 的技术概况。

整体架构

互联网计算机是 DFINITY 的网络名称,DFINITY 试图通过一个建立在 IP 协议上层的开放协议,去中心化地调度所有运行协议的计算机的资源,利用区块链、密码学等技术,在最上层虚拟化出一个安全可信,但无需传统组件的软件运行环境。

互联网计算机由一种层次结构组成,最底层由分布在世界各地的,运行互联网计算机协议的数据中心组成。

数据中心的机房里,承载着标准化的节点硬件,一个数据中心可能运行着上千上万个节点,全网的节点数据可能达到百万,这些节点负责计算、达成共识、出块与存储。

这些节点随机地(跨多个数据中心)被治理系统结合到一起,形成一个个子网,子网也存在不同的类型,专注于处理不同的事务。子网数量也不是固定的,而是随着网络的资源使用情况动态地增加、合并。做个比喻,这就像状态分片(多种类型的子网)再加上网络分片(同类型子网可存在多个)。

这些子网可以承载“容器”,容器可以看作包含了代码与相关存储的 Docker 容器,可以把容器看作一个基本的服务单元,可以看作智能合约的升级版本。容器间不会共享状态,只会通过通讯来处理事务。

一个子网是会承载很多容器运行的,容器太多负载过高时,可以拆分子网来扩容。

这是一个公共且共享的通用云资源平台,因为 DFINITY 对数据中心与自动化存储的支持,它甚至能直接承载前端,甚至成为优化用户体验的中间件,DApp的开发者只需要简单的写好合约部署进对应的子网即可。

DFINITY 不像原生加密货币一样,需要自己研发矿机挖矿,而是选择更多的与 WEB2.0 的数据中心融合,这样的好处是较高的性能与媲美中间件的用户体验,但也会存在中心化程度的缺陷。

虽然这些数据中心可能属于不同私人企业,但整个网络的资源与权限都由去中心化的区块链协议执行,这个协议又受到一个去中心化的治理系统控制,这在一定程度上缓和了数据中心带来的中心化。

经济与治理

虽然 DFINITY 迟迟没有确定经济系统的参数,但是整体的架构已经足够清晰。

token 经济系统在互联网计算机上有着很广泛的作用。首先,现在 DFINITY 的代币叫做 ICP (为互联网计算机协议的英文缩写),ICP 的功能:

  1. 用作成为节点的抵押,固定金额抵押;
  2. 去兑换 gas 的专用代币,会直接被消耗;
  3. 抵押 ICP 成为治理神经元,参与治理投票;
  4. 在治理子网中,抵押 ICP,作为发行治理代币的凭证(有机会启动 ICO)

在互联网计算机上,在网络神经系统中,如果发起提案或参与治理,提案通过后,系统会奖励神经元新的 ICP 代币;同时出块的节点可以获得新的 ICP 代币。这是代币增发膨胀的模型。

和所有去中心化网络一样,容器在使用计算、存储等资源时都需要支付 gas,这些增发的 ICP 代币可以转化为 gas 的形式卖出,然后直接被消耗掉。同时 ICP 代币还会被用作发行治理代币的原生资产,这部分被直接集成在底层子网中,可以看作一个接收 ICP 的 DeFI 协议,能提供融资的便利。这就是代币消耗通缩的过程。

DFINITY 想提供类似于云的使用体验,对用户来说,托管应用程序的费用,需要做到稳定且明确。ETH 的 gas 费用就难以获得准确稳定的数值,很多的商业的预算与计划都无从做起,这也是当前基础较差的一个主要原因。

DFINITY 利用稳定币的逻辑产出专门的代币 Cycle 来支付 gas。容器的管理者将 ICP 代币兑换成 Cycle,然后使用 Cycle 给容器“充电“。当使用了确定的资源后,Cycle 就在运行中被“燃烧”了。

ICP 兑换 Cycle 的比例,也是有一个底层治理的 DAO(也就是网络神经元系统)共同调节的,因此 Cycle 的价格相对稳定。并且因为互联网计算机具备动态扩容能力,也不会出现资源价格大幅上涨的情况。

治理系统 NNS

互联网计算机协议有一个称为网络神经元(NNS)的开放治理系统。这个系统负责控制、配置和管理整个公共网络。

在之前也叫做区块链神经元系统(BNS),我曾经发过三篇文章专门来介绍这个系统,大家可以去阅读:《将AI技术嵌入到区块链的大脑中》、《DFINITY上的区块链神经系统是如何运行的?》、《DFINITY中的区块链神经系统如何治理邪恶的暗杀市场?》。

总的来说,用户抵押 ICP 代币成为治理神经元,可以发起提案并参与投票,参与治理会有 ICP 代币奖励。在投票过程中,NNS 使用的是介于直接投票与代理投票之间的流动民主投票,即你可以直接投票,也可以把票委托给“治理专家”(受委托者不会得到你的代币,也不会因为委托获得更多奖励),还能进行多级委托,最终形成一个分散的知识网络,做出足够明智的决策。

最创新的一点在于,NNS 的治理神经元是支持 AI 的,AI 更擅长参数的微调,这将大大提升治理效率。民主化的 AI 们之间也存在博弈,这令人遐想连篇。

NNS 的治理能力非常强大,DFINITY 把它放在非常非常非常重要的位置上,这种治理绝不是调参这种不痛不痒的治理。

举个例子,在互联网计算机的最底层 WASM 虚拟机中,就专门为 NNS 留出了回滚、修改代码、停止服务等特殊的操作码,只能通过治理系统的提案来操作。这意味着 DFINITY 上的治理,甚至能在不回滚区块链(或分叉)的情况下,直接回滚合约中的状态值,或者对合约进行升级。

要知道,这是其他区块链无法具备的能力,The DAO 的治理困境能在这种机制下被轻松的解决。因此 ICP 代币具备了巨大的治理价值。

同时 NNS 还管理着网络的准入,当拥有很多节点的数据中心加入网络时,需要得到 NNS 的投票批准,这就有点像互联网上的 ICANN(组织用于分配网络地址非盈利组织)。同样,NNS 也能踢出作恶的节点。

虽然对数据中心的关注让 DFINITY 显得有些中心化,但是被高高举起的、具备统治地位、去中心化程度很高的治理系统消解了这种顾虑。

治理代币

DFINITY 对原生代币的支持是从底层开始设计的,它附带了完整的治理投票机制,使用了专门优化的子网进行支持。

DFINITY 上治理代币即是一切,你可以把所有容器的管理,分配给一个开放的 token 化治理容器,任何的服务都将由一个分散的 DAO 来控制,这让它能有机地进化为任何的事物,这种想象空间是无限的。

治理代币需要抵押/消耗 ICP 代币作为基础,且 DFINITY 在最初的设计中,就在子网里集成了治理代币间的交换能力。你可以在早期出售一些治理代币,来筹集发展资金;也可以设计出一些方案,通过给大家奖励治理代币,来维护你的互联网服务的运行。

如此之低的融资成本,将创造下一波的应用大爆发。

子网

子网是 DFINITY 网络的基本组成部分,想要理解整体的架构,就必须搞懂子网。

数据中心中的节点,将被治理系统与随机数结合在一起,形成多个子网,这些子网负责运行一个个的容器,容器在子网间可以通过消息路由层交互,而为了保证一致性,容器间的交互时序会被 DFINITY 的共识算法固定。

动态扩容

也就是说,DFINITY 在测试网阶段,就已经处于高度可扩容(类分片)的状态。且子网的增加与合并是动态的,参与 NNS 治理系统的神经元可以根据当前的网络负载情况,发起提案,来平衡整个网络的负载。

比如现在运行了一个子网叫做 X,这个子网由上百个节点组成,现在托管着100个容器,目前因为业务较多,已经达到了一个较高的负载;这时,NNS 治理系统就可以告诉系统,需要去拆分子网 X,让子网 X 只运行第1-50的容器,然后再 Fork 一个新的子网 Y 来运行第51-100 的容器。

这些子网内部使用了拜占庭的容错机制,子网们也共享了 VRF + BLS 的共识一致性。子网间也是高度可交互的,因此子网的拆分与合并,对把程序部署在网络中的用户来说,是完全无感的。不会子网在分裂或合并的过程中,不会出现容器服务中断的情况。

过去我们的思维常常被限定在固定数量的链上,从而钉死了整个网络的 TPS,而实际上 TPS 应该是按需扩展的,而只有 DFINITY 敢将如此重要的能力赋予治理系统,这种治理与底层架构的巧妙结合,产出了非常惊艳的设计。

子网类型(状态分片?)

更有趣的是,DFINITY 的子网还有不同的类型,用于处理不同的工作,相当于对系统分层了。这样的设计大大提高了性能与使用体验,甚至让互联网计算机能托管前端网站,以及那些过去写入合约中不太划算的后端逻辑。

这就是让互联网计算机上的 Dapp 彻底脱离了服务器,(因为比较强调数据中心,因此延迟足够低也就消除了中间件的必要),这让原本极端脆弱的中心化入口变得更加强壮。

DFINITY 的子网分为多个类型,比如前端型、数据桶型、系统型、委托型,以及 NNS 治理系统专用的子网。

在构建你的应用程序时,你需要考虑应用所包含的相关功能,然后对着子网的类型进行划分,然后将程序部署成多个容器,通过一个系统容器建立逻辑链,让容器间互相通讯,从而提供完整的服务。

子网的类型赋予了容器某些特别的属性和功能,比如在数据桶子网中的容器可以存储大体积的状态值(不再需要其他的去中心化存储),并处理计算,但没法调用其他容器;这时候你就需要一个在系统子网中部署一个容器负责调度容器,对数据桶的容器进行查询与修改的调用,返回结果后再与其他容器交互。

如果你的应用需要持有 ICP 代币,或者处理自己的治理代币,或者要把 Cycle 燃料发送到其他的容器里,就必须使用委托子网。委托子网就非常像现在大部分的单链公链,能转账能跑代币合约,这里也具备了最高的安全性。

还比如,你的应用需要一个友好的 UI,前端页面可以直接托管在专门的子网中,这个子网对查询调用进行了特别优化,能高效低延迟地进行内容分发。

子网互操作

不同子网上运行的容器,是高度可交互的。容器间不会共享状态,只会通过通讯来处理事务。这种基于通讯的互相调用,对用户来说是完全无感的。

每个容器部署时都会分配它的唯一 ID,只要是容器中设定为 Public 的方法,就可以直接通过容器 ID 与方法名调用。容器在不同的时间下,可能存在于不同的子网中,但是它的容器 ID 永远不会改变,因此调用的体验是无缝的,就像在一台本地计算机上运行的多个进程一样。

容器与并行运算

上文说道,容器是包含了代码与相关状态的基本运算单元。容器内部有一个 WASM 的字节码,可以在 WASM 的虚拟机上运行;容器还包含一个内存页,用于存储状态。

容器在交互时是基于 actor 模型的。容器间不会基于运行环境共享内存与数据,而是通过消息处理的方式交互,这避免了内部的并发竞争。结合上子网,也让容器间的并行处理成为可能。

每个容器最多支持 4GB,这些存储都是 RAM 级别的,DFINITY 取消了所有硬盘存储。也就是说,所有在互联网计算机上运行的软件,都处于激发状态。

这是非常有魄力的设计,虽然增加了硬件成本,但是极大的简化了整体技术架构,不再需要数据库与防火墙等组件。这里帮助开发者节省的复杂度成本,其实远远的超过了硬件的成本,因此这样的取舍是合理的。

持久化存储

开发者持久化存储状态数据的方式,是互联网计算机最酷炫的地方之一。

开发者在创造过程中,完全不用去考虑如何把数据装入数据库,只用需要把状态用一个个特定的类来处理即可。只要出现状态的改变,数据将自动持久化,这就是所谓的“正交持久性”。

这是因为在每一次状态改变后,互联网计算机都自动地保存了容器的内存页快照。开发者可以使用一个名为 BigMap 的现成库类来处理状态。BigMap 在多容器的组合下,可以存储 EB 级的数据。

容器可扩容

容器是一个基本计算单元,但容器能分叉它自己,创造新的容器,如此扩容。

当一个容器分叉时,它会创建一个新的副本,这个副本的内存页快照与分叉前完全一致。分叉之后这个容器就单独的运行,和原容器之前也是通过通讯交互。

我们可以把这些容器分散在不同的子网中,每个新增的容器副本,都会增加总体的存储大小,增加应用整体的更新和查询 TPS。

每一个容器只有 4GB 的内存,虽然足以应付大多数的应用,但是想要创建可以给数十亿用户使用的服务,就需要利用容器的这种增值扩容能力,使用多容器的架构。

并发处理

容器 Public 出来的可调用函数,只允许了两种调用方式:查询调用和更新调用。

两者的区别在于,更新调用对状态做出的任何修改,都将被持久地保留;反之,查询调用就不会。

更新调用下的状态更新,都是基于一致性共识的,即使在不同的子网中,每一个节点都会运行完整的互联网计算机协议,这些调用的顺序会在系统层面获得一致性共识。

DFINITY 甚至允许在确定性的执行环境下,并发的执行更新调用!

首先,容器基于 actor 模型,这意味着一个容器的内部,在任何时刻都只能有一个线程。但在默认情况下,在多个容器间执行更新调用时,是可以并发运行的。

当跨容器进行调用时,如果出现堵塞,在系统层面就执行一个新的线程,进入一个新的更新调用中。这就实现了一个并行处理,DFINITY 允许程序员简单地使用的 async 和 await 语句来处理并发。

比如下面一段伪代码:

let result1 = service1.computeAnswer(params);

let result2 = service2.computeAnswer(params);

finalStep(await result1, await result2)

这些更新状态的计算,并不用在网络中的每一个节点上都运行一次,因此性能与成本都更好。

而相比之下,查询调用不去修改状态值,因此它近乎是无限并发的。但考虑到终端用户在使用时的延迟,需要根据网络环境优化用户体验。

用户体验

DFINITY 非常看重对终端用户的使用体验的优化。

DFINITY 上的应用程序都会采用前端后端的经典两层架构,在使用 SDK 创建项目时,就会自动生成前后端的容器模版文件,并且无需用户处理两者的交互,开发者不再需要与 web3.js 这类的组件打交道。

为了让一般用户能在浏览器,甚至是手机上快速地访问互联网计算机的服务,DFINITY 做了许多的工作。

映射域名

互联网计算机的 NNS 可以将 WEB 2.0 的域名映射到多个前端容器(基本是一个容器的副本)上。这当然也是通过治理实现的。

一但建立映射,当终端用户希望解析域名时,互联网计算机会去查询所有承载了这些前端容器的子网,以及子网下的全部节点,并返回最近前端副本节点的 IP 地址,让终端用户直接在这个副本上执行操作。

这不仅用治理的有机形式,连接了 WEB 2.0 与互联网计算机网络,也大大间减少了用户所承受的网络延迟,对整个网络的做出了负载均衡。

边缘架构下的优化

为了进一步优化用户体验,DFINITY 更多地利用了边缘计算的优势。

举个例子,如果你想去访问一个社交网络,就需要预先加载一些数据。在互联网计算机上,首先通过 NNS 的域名映射,浏览器将被引导到一个延迟最低的前端容器中,随后浏览器会向该子网下最近的一个节点提交查询调用请求。

然后,前端容器将向保存社交网络照片等数据的后端容器发出一个跨容器的查询调用请求,后端容器将返回查询结果(例如照片等静态内容),此时运行前端容器、执行了查询调用的节点,就可以将查询的结果输入到它的缓存中。

一旦与用户通讯的那个前端容器收集了所有必要的信息,既可以返回内容,加载出完整的页面。

随着时间的推移,最近节点的查询缓存中积累了足够多的静态内容和相关数据,这就能将用户映射到这个特定的前端容器中,进而获得最优的内容分发体验。

本文地址:http://bilianwu.com/67666.html
版权声明:项目均采集于互联网, 空投币 无法审核全面,且希望大家能赚钱,请谨慎切勿上当受骗!
温馨提示:★★★天上真会掉馅饼!天道酬勤,都是机会!不错过每个空投糖果!真假难以辨认,尽量0撸!
重要提醒:本站内容均转自互联网,请明辨各个项目风险,不构成投资建议,如涉及资金交易,请谨慎操作与自担风险!
《新人必看》 《本站免责申明》

评论已关闭!