超详细的DFINITY底层原理分析:(一)概念解释

2023-10-14 13:40

本文主要是介绍超详细的DFINITY底层原理分析:(一)概念解释,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

概念概述:

ICP :

定义: Dfinity发行代币(非算法稳定币)。

主要职能:1.质押:客户端质押ICP才能成为会员。 2.维持数据中心运行:数据中心容器中需要cycle作为“燃料”运行软件。而cycle为ICP置换而来。

客户端与会员:

客户端 : Dfinity网络中的活跃参与者称为client(客户端),客户端具有永久匿名身份并且可以通过质押有一段锁定期的ICP成为会员。会员可以参与神经元网络治理,以及成为矿工,参与随机数灯塔进行输出并有可能被随机数灯塔选为一次区块公证流程中的委员会成员。

P.S. :会员作恶会被惩罚,惩罚代价除取消所得利益以外,还会被扣除所有质押的ICP。

随机数灯塔与委员会:

委员会为什么要存在:类似于DPOS算法,委员会的存在是因为随着网络的拓展,消息处理复杂性越来越大。 不同的是,EOS中使用的DPOS算法产生的委员几乎不变,而Dfinity中的委员会成员在每次共识都会随机改变。

委员会分为两种:公证委员会与提议委员会。两个委员会可以为同一组成员也可以是不同组成员。提议委员会成员对区块进行打包与提议,公证委员会成员对区块进行公证与传播。

随机数灯塔是Dfinity共识环节的重要一员,由本轮区块提议,公证的委员会运行,每个委员会都会运行一个随机数灯塔。(关于随机数灯塔的详细介绍将在第二节展开)

随机数灯塔职能为: 产生一个随机数组,这个随机数组用于指定下一任委员会成员(委员会之间进行接力,每个委员会均会如此进行),以及指定委员会成员各自提议区块的权重。

纪元 & 注册表区块(关键帧) :

Dfinity中将区块链上x个区块为一个纪元(x为系统参数),每个纪元的第一个区块为注册表区块,这个区块中记录了再上个纪元中新注册与撤销注册的副本。(创世区块也为一个注册表区块,注册表区块又称关键帧 key frame)

副本与罐 :

罐: Canister,是InternetComputer上运行智能合约(dapp)的容器,本质为WebAssembly。罐中包含智能合约编译后的字节码和数据的状态。
副本:每个Internet Computer(DFINITY)网络中的节点,都是其承载的罐(canister)的副本。

共识机制:

以第r轮区块公证为例:

一轮区块公证时间内 : 用户 -> 交易发生 -> 副本记录

首先:由第r-1轮区块高度的委员会共同运行随机数灯塔协议(主要是VRF函数),产生第r层区块高度的委员会(公证委员会与提议委员会)

然后: 产生委员会后,提议委员会成员开始从用户处获取交易,打包区块,将自身权重,区块(以及个人签名),提交给公证委员会成员

然后:公证委员会成员进行签名公证并在公证后进行广播

再然后:提议委员会收到公证区块 运行随机数灯塔产生下一代委员会

一次共识结束
在这里插入图片描述

随机数灯塔:

定义:

去中心化的随机数灯塔(DRB Decentralized Random Beacon)是Dfinity网络的随机性来源,其通过让委员会成员共同运行VRF函数来对Dfinity的随机性与安全性负责。

解释:

VRF(verifiable random function) 底层为TBLS算法,其输出的随机数在其被使用之前,无法被任何一个人(参与者或非参与者)得知,也不可以被预测(在知道所有之前的输出之后依然无法预测)

职能:

随机数灯塔由委员会的所有客户端一起运行,通过阈值接力机制,产生下一代委员会,并且赋予下一代委员会成员权重。

随机数灯塔使用之阈值接力:

阈值接力:一轮区块公证结束后,本轮次委员会根据随机数灯塔协议共同运行VRF函数产生新随机数组Er,根据这个随机数组决定下一届委员会成员并赋予提议委员会成员区块提议权重。这个过程成为阈值接力。

随机数灯塔底层 - 阈值签名与分布式密钥生成(DKG):

阈值签名:

在Dfinity中使用t-of-n方案作为阈值签名方案。采用的算法为BLS算法的阈值签名版本,称为TBLS。

(t,n)模型:

n个成员共同维护一个组密钥,有t个成员用各自的密钥进行签名后,第三方可以不再与剩下n-t个成员进行交互的情况下,还原组密钥签名。

因此,在公证环节,只要有t个公证委员会成员对一个区块进行公证后,即可对该区块进行组密钥签名,广播给其余副本,其余副本(客户端)可以将此区块添加至本地区块链副本。

解释:

TBLS算法加密具有唯一性:对一份明文,任意T(T >= t)个成员签名后进行还原得到的组签名是唯一的
组密钥:每个Group中的成员共同运行DKG来创造本委员会的组密钥。

委员会细节介绍:

委员会:

公证与随机数灯塔由所有副本中的x个规模为n的组来实现,这些组成为委员会,根据职能不同,分为提议区块的提议委员会与公证区块的公证委员会。两种委员会可以为同一组成员,也可以为不同组成员。设立委员会是因为随着成员拓展,消息的复杂度会越来越大,因此由部分委员会来执行这些职能。

解释:

对于委员会的个数:如果为数量比较小的一系列副本组成Dfinity网络,那么可能只有一组委员会,由所有副本共同运行。如果副本数量比较多,那么会考虑恶意节点导致的共识失败概率,结合失败概率计算的算法得到一个可抗攻击的规模x与n。

Reference

[1] DFINITY Technology Overview Series, Consensus System

这篇关于超详细的DFINITY底层原理分析:(一)概念解释的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/210878

相关文章

找不到Anaconda prompt终端的原因分析及解决方案

《找不到Anacondaprompt终端的原因分析及解决方案》因为anaconda还没有初始化,在安装anaconda的过程中,有一行是否要添加anaconda到菜单目录中,由于没有勾选,导致没有菜... 目录问题原因问http://www.chinasem.cn题解决安装了 Anaconda 却找不到 An

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

通过Docker Compose部署MySQL的详细教程

《通过DockerCompose部署MySQL的详细教程》DockerCompose作为Docker官方的容器编排工具,为MySQL数据库部署带来了显著优势,下面小编就来为大家详细介绍一... 目录一、docker Compose 部署 mysql 的优势二、环境准备与基础配置2.1 项目目录结构2.2 基

C++ 各种map特点对比分析

《C++各种map特点对比分析》文章比较了C++中不同类型的map(如std::map,std::unordered_map,std::multimap,std::unordered_multima... 目录特点比较C++ 示例代码 ​​​​​​代码解释特点比较1. std::map底层实现:基于红黑

Linux系统中配置静态IP地址的详细步骤

《Linux系统中配置静态IP地址的详细步骤》本文详细介绍了在Linux系统中配置静态IP地址的五个步骤,包括打开终端、编辑网络配置文件、配置IP地址、保存并重启网络服务,这对于系统管理员和新手都极具... 目录步骤一:打开终端步骤二:编辑网络配置文件步骤三:配置静态IP地址步骤四:保存并关闭文件步骤五:重

Centos环境下Tomcat虚拟主机配置详细教程

《Centos环境下Tomcat虚拟主机配置详细教程》这篇文章主要讲的是在CentOS系统上,如何一步步配置Tomcat的虚拟主机,内容很简单,从目录准备到配置文件修改,再到重启和测试,手把手带你搞定... 目录1. 准备虚拟主机的目录和内容创建目录添加测试文件2. 修改 Tomcat 的 server.X

Spring、Spring Boot、Spring Cloud 的区别与联系分析

《Spring、SpringBoot、SpringCloud的区别与联系分析》Spring、SpringBoot和SpringCloud是Java开发中常用的框架,分别针对企业级应用开发、快速开... 目录1. Spring 框架2. Spring Boot3. Spring Cloud总结1. Sprin

Spring 中 BeanFactoryPostProcessor 的作用和示例源码分析

《Spring中BeanFactoryPostProcessor的作用和示例源码分析》Spring的BeanFactoryPostProcessor是容器初始化的扩展接口,允许在Bean实例化前... 目录一、概览1. 核心定位2. 核心功能详解3. 关键特性二、Spring 内置的 BeanFactory

C++快速排序超详细讲解

《C++快速排序超详细讲解》快速排序是一种高效的排序算法,通过分治法将数组划分为两部分,递归排序,直到整个数组有序,通过代码解析和示例,详细解释了快速排序的工作原理和实现过程,需要的朋友可以参考下... 目录一、快速排序原理二、快速排序标准代码三、代码解析四、使用while循环的快速排序1.代码代码1.由快

Spring Boot拦截器Interceptor与过滤器Filter详细教程(示例详解)

《SpringBoot拦截器Interceptor与过滤器Filter详细教程(示例详解)》本文详细介绍了SpringBoot中的拦截器(Interceptor)和过滤器(Filter),包括它们的... 目录Spring Boot拦截器(Interceptor)与过滤器(Filter)详细教程1. 概述1