区块链的发展历史一共分为3分里程碑意义:2009年比特币点对点支付系统诞生—数字通证的区块链化,2015年以太坊智能合约带来的DeFi运动—智能合约的区块链化,2021年Dfinity无限区块链—所有的所有都在链上,本期文章带各位小伙伴一起探讨一条无限区块链是如何运作的。

IC网络与传统区块链网络最大的不同在于网络架构,传统区块链网络采用阶梯式架构,而IC网络采用的是积木式架构:底部是专用硬件节点的独立数据中心,这些被托管的节点机器组成子网分片链,子网上承载着Canisters,这些Canisters是组成IC Dapp关键计算单元,IC网络中的一切都遵循区块链计算机ICP协议工作, 使IC网络独一无二的是由ID为tbd26子网上32个Canisters组成的一套算法治理系统(NNS)。

NNS主要负责控制、配置、和管理网络:引入新的数据中心需要向NNS申请加入IC网络,NNS不仅是开放式治理系统,它还监督参与网络的权限,从某种意义上来说,它在IC网络上相当于是ICANN的角色。NNS不仅为那些想要运行BGP路由器的人分配自治编号,NNS还履行广泛的网络管理角色职责,包括监视节点机器和查找IC网络上的统计偏差。

NNS在网络的代币经济学中也发挥着关键作用:NNS生成新的ICP通证来奖励运行的节点和在NNS内投票的神经元,NNS在IC网络中的主要作用是开放式Dao治理,和传统区块链网络治理架构(治理权只在少部分人受理,普通用户几乎没有参加治理的权限)最大的不同就是NNS向所有持有ICP代币神经元用户开放。

要了解Dfinity,必须先了解子网的概念:子网是整个IC网络的基本构建区块基础部分,子网负责托管Canisters的不同子集,子网是通过将来自不同数据中心的节点机器以NNS控制的方式组合在一起创建,这些点机器遵循ICP协议协作,以便对称的复制与它们托管的软件Canisters相关的数据和计算。IC网络拥有多个子网分片链,每一个子网相当于一条链。

NNS在构建子网时结合了独立数据中心的节点,ICP协议中的DFINITY开发的拜占庭容错技术和密码术来确保子网是防篡改和不可阻挡的。子网对用户和Canisters是透明的,用户和Canisters只需要知道Canisters的身份即可共享调用(更新调用和查询调用)。

这些透明度是互联网基本设计原则的延伸,在传统互联网上如果用户想要连接到某些软件,他们需要运行该软件机器的IP地址和侦听的TCP端口。而在IC链上,一个用户想要调用一个函数,他们只需要Canisters的身份(ID)和公开函数签名。与传统互联网创建无缝连接的方式相同,DFINITY为Dapp创建了一个无缝的世界,任何获得许可的Dapp都可以直接调用IC链上的其他Dapp(IC链的多元可组合性,无需繁琐的工程),这所有的一切皆发生在链上。

子网不仅对用户是透明的对Canisters来说也是透明的:NNS可以拆分和合并子网来保证整个网络的均衡负载(所有子网集)。在以下实例中虚拟子网ABC其中包含了11个Canisters,NNS提出拆分:子网ABC继续托管1-6 Canisters,生成新子网XYZ托管Canisters7-11,在拆分的过程中所有Canisters都不会出现中断服务。

拆分子网示例

每个子网类型都为Canisters提供特定的属性和功能,如果Canisters托管在数据子网上,它可以处理调用,但不能调用其他Canisters,完成跨Canisters调用需要一个系统子网,如果你希望你的Canisters能够持有ICP代币余额发送到其他Canisters,你需要一个受托子网,处于某些原因,治理Canisters只能托管在受托子网上。

子网调用详情

不同子网容错能力

在IC上运行的Dapp由形形色色的Canisters组成,它们各有不同:数据Canisters、计算Canisters等。它们在专用管理程序中运行,并通过公开指定的API相互交互,Canisters内部是WebAssembiy字节码,它可以在WebAssembly虚拟机和内存页面上运行,通常WebAssembly是通过编译Rust和Motoko语言来创建的。该字节码包含一个运行时,开发人员可以轻松的与API交互。

注意:示例代码是伪代码

在IC链上,Canisters的共享调用分为两种:Canisters可以作为更新调用或者查询调用来调用,本质在于当函数被作为更新调用的时,更新调用对Canisters内存中的数据所做的任何更改都将被持久化,而如果将函数作为查询调用时,则它对内存所做的任何更改都将被丢弃。

更新调用会进行持久化更改,并且是防篡改的,ICP协议会将该子网中的每一个节点运行更新调用,调用会在全局调用顺序中运行,并且允许在完全确定性执行环境中并发执行(更新调用会在两秒完成),在以下实例中,是用户像Canisters中的DEX提交购买订单的更新调用请求。

示例:更新调用

而查询调用不会保留更改,并且运行此调用几乎不需要多少Cycles(几毫秒内完成),这是因为查询调用不会在子网上的所有节点运行。

示例:查询调用

IC链上最便捷的事情就是开发人员保存数据的方式,开发人员不必考虑持久化:他们只需编写代码,持久化就会自动发生,那因为互联网计算机保留了代码运行所在的内存页——正交持久化的发生在于Motoko语言中特定机制stable关键字变量值实现的自动持久化, 而在传统开发中普通变量需要通过SQL持久化到数据库。

尽管Canisters中只要一个执行线程,但是默认情况下跨Canisters可以交错进行异步调用,(跨Canisters更新调用另外一个Canisters时可以不用等待返回结果,可在此期间继续发起更新调用请求)。

相比之下,查询调用不会对内存进行持久更改,这允许任何特定的时间在Canisters有人任意数量的并发线程处理查询调用,这些查询调用针对记录在最后一个状态根中的内存快照运行。

注意:在Canisters通过指定的WebAssembly字节码来创建新的Canisters时,新的Canisters的内存页面是空白的,而当Canisters分叉自身时,会创建一个新生成的副本,该副本与内存的内存页面是相同的。

目前因为WebAssembly限制,每个Canisters容量内存只能存储4GB的内存,基于用户数量承载,Dfinity采用的是多Canisters架构。每个额外的Cannisters都会增加整体更新和查询调用的吞吐量,但是却无法针对特定用户的内容拓展查询调用请求,所以还需要前端Canisters和后端Canisters。

互联网计算机还提供一些有趣的功能:当用户连接到前端Canisters时,通过NNS允许将域名映射到多个前端Canisters,当用户希望解析域名时,互联网计算机会查看托管前端Canisters的所有子网中的副本节点总数,并返回最接近副本节点的IP地址,这导致用户在附近的副本节点上执行查询调用,这种边缘计算的好处包括减少固有的网络延迟并改善用户体验和无需内容分发网络。

以下是利用以上功能构建一个前端Canisters和后端数据Canisters通过Web浏览器加载数据Canisters个人资料图片实例过程:

1、首先Web浏览器映射到一个前端Canisters,该Canisters在具有附近节点的子网上运行,然后Web浏览器将提交查询调用请求将图片检索到附近的节点。

2、前端Canisters会向保存照片的数据Canisters发出跨Canisters查询调用请求。

3、如果数据Canisters返回的查询调用涉及照片等静态内容,则可以将数据存储在缓存中,在这种情况下,运行前端Canisters查询调用的副本节点可以将查询调用返回结果输入到查询缓存中。

4、当然查询调用缓存机制对前端Canisters代码是完全透明的,一旦用户调用的前端Canisters收集了有必要的信息,它就可以通过查询调用响应或HTTP端点返回内容。

5、随着时间的推移,节点的查询缓存会累积静态内容并生成附近用户感兴趣的数据,从而为他们提供更快、更好的用户体验。通过这种方式,互联网计算机的边缘架构提供了内容分发网络的好处。

对于更新调用来说:用户的内容和数据会进行序列化更新,以防止更新丢失等问题通常会通过散列用户名将用户名映射到特定前端Canisters来实现。

1、一旦在Web浏览器或智能手机上运行的UX/UI确定哪个前端Canisters负责协作对某些内容和数据的更改,调用请求就可以通过向标准接口提交更新调用来修改该内容或数据。

2、以上前端Canisters通常会进行更多的跨Canisters更新调用以实现所需的更改(一个Dapp实现功能的时候可能需要跨多个Canisters完成更新调用,因为Dapp组成部分是由各多个Canisters组成)

IC网络对比传统区块链上的区别在于五大层次体现:在结构层次来说IC没有采用与传统区块链网络单链的设计,而是采用分片链设计实现网络的高效运行:不同子网运行托管不同的类型的Canisters,它们通过公开指定的API进行交互实现Dapp的多元可组合性。在开发层次上的友好——正交持久化:开发者在Canisters的编程会自动在底层存储,并且可以直接调用,读写都是在Canisters中完成。在治理层次的去中心化:对所有用户开放治理权。在Dapp层次的完全去中心化:通过构建经典架构的前端Canisters和后端Canisters实现端对端的去中心化Dapp。在智能合约层次的扩容:Canisters通过分叉自身或者创建新的Canisters增加Dapp的吞吐量以及内存。

Dfinity深圳社区,专注于Dfinity生态技术发展交流与优质项目挖掘分析。

【Dfinity完整概述】一文带你读懂Dfinity的链上运行相关推荐

  1. 一文带你读懂感知机的前世今生(上)

    一文带你读懂感知机的前世今生 前言 男女不分 什么是神经元 M-P神经元 全或无定律 McCulloch和Pitts 一种高度简化的模型 MP神经元和真值表 MP神经元的几何理解 后记 参考 前言 男 ...

  2. 机器学习中为什么需要梯度下降_机器学习101:一文带你读懂梯度下降

    原标题 | Machine Learning 101: An Intuitive Introduction to Gradient Descent 作者 | Thalles Silva 译者 | 汪鹏 ...

  3. 一文带你读懂HTTP协议的前世今生

    点击上方蓝字关注我们 HTTP,Hypertext Transfer Protocol,超文本协议,是在万维网上传输文件(如文本.图形图像.声音.视频和其他多媒体文件)的规则集.如果web用户打开他们 ...

  4. DNN、RNN、CNN.…..一文带你读懂这些绕晕人的名词

    DNN.RNN.CNN.-..一文带你读懂这些绕晕人的名词 https://mp.weixin.qq.com/s/-A9UVk0O0oDMavywRGIKyQ 「撞脸」一直都是娱乐圈一大笑梗. 要是买 ...

  5. 一文带您读懂FCC、CE、CCC认证的区别

    一文带您读懂FCC.CE.CCC认证的区别 参考资料:https://3g.k.sohu.com/t/n411629823 FCC认证,CE认证,CCC认证是产品认证中比较常见的几个认证,前两者经常有 ...

  6. 用程序员计算机算进制,一文带你读懂计算机进制

    hi,大家好,我是开发者FTD.在我们的学习和工作中少不了与进制打交道,从出生开始上学,最早接触的就是十进制,当大家学习和使用计算机时候,我们又接触到了二进制.八进制以及十六进制.那么大家对进制的认识 ...

  7. 一文带你读懂“经典TRIZ”

    本文承接上文<一文带第读懂TRIZ>,下面开始看第二个问题:什么是"经典TRIZ"? 很多书里都有对TRIZ的产生与发展的描述. 我个人在看了很多的书和文献以后,认为: ...

  8. 简单一文带你读懂Java变量的作用和三要素

    Java变量的作用 不只是java,在其他的编程语言中变量的作用只有一个:存储值(数据) 在java中,变量本质上是一块内存区域,数据存储在java虚拟机(JVM)内存中 变量的三要素 变量的三要素分 ...

  9. 《一文带你读懂:云原生时代业务监控》

    点击上方蓝字关注我们! 对业务来说,完备的应用健康性和数据指标的监控非常重要,通过采集准确的监控指标.配置合理的告警机制,我们能够提前或者尽早发现问题,并做出响应.解决问题,进而保证产品的稳定性,提升 ...

最新文章

  1. Intel Realsense D435 Tensorlfow-yolov3 测试摄像头识别坐标转换成实际空间坐标的准确程度
  2. 一般服务器崩了要多久能修复,阴阳师服务器崩了修复了吗?阴阳师最新4月15日更新内容...
  3. 安装jrebel热部署插件,并激活
  4. 第一阶段:前端开发_Mysql——表与表之间的关系
  5. 【树】判断给定森林中有多少棵树(简单做法)
  6. 使用Unity制作的一个望远镜特效,在狙击手游戏中非经常见
  7. simplis汉化包_Simtrix.simplis仿真_中文教程
  8. 详解ISA2006的三种客户端模式
  9. LeetCode 70.爬楼梯(动态规划)
  10. mysql考试_mysql考试总结
  11. oracle9i如何卸载,如何卸载oracle 9i
  12. 按键精灵引流脚本实操
  13. 施密特触发器HSPICE仿真【内附代码】
  14. 卡方检验的统计量推导_卡方检验的卡方检验法的基本原理和步骤
  15. 《当我们谈论爱情时,我们谈论机器》感悟一二
  16. 计算机组装防静电措施,浅谈组装电脑如何防静电与去除机箱静电的方法
  17. Linux服务器常见运维性能测试(2)内存测试mbw、stream
  18. J酒店上海中心:云端艺邸 数字典藏
  19. RaspberryPi树莓派连接Wifi
  20. Android技术知识点:什么是外边距(margin)

热门文章

  1. pango logos 双启动
  2. 作为电子攻城狮必须掌握的PADS常用快捷键(超全,记得收藏点赞,不然刷着刷着就找不到了)
  3. matlab使用匹配滤波器构建相关接收机解调BPSK信号
  4. OJ术语表: AC、WA、TLE、OLE、MLE、RE、PE、CE
  5. python淘宝秒杀_Python 实现淘宝秒杀的示例代码
  6. 工业温度控制器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  7. iOS巅峰之单利用法
  8. linux上的社交软件下载,探探交友app免费版-探探交友真实app下载v4.2.9.2-Linux公社...
  9. webqq的注册登记和聊天页面--运用jsonp跨域
  10. 【职场和发展】职业期望是指一个人对某种职业的渴求和向往