超详细的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

相关文章

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语

SpringBoot整合liteflow的详细过程

《SpringBoot整合liteflow的详细过程》:本文主要介绍SpringBoot整合liteflow的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...  liteflow 是什么? 能做什么?总之一句话:能帮你规范写代码逻辑 ,编排并解耦业务逻辑,代码

MySQL中的表连接原理分析

《MySQL中的表连接原理分析》:本文主要介绍MySQL中的表连接原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、表连接原理【1】驱动表和被驱动表【2】内连接【3】外连接【4编程】嵌套循环连接【5】join buffer4、总结1、背景

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

python中Hash使用场景分析

《python中Hash使用场景分析》Python的hash()函数用于获取对象哈希值,常用于字典和集合,不可变类型可哈希,可变类型不可,常见算法包括除法、乘法、平方取中和随机数哈希,各有优缺点,需根... 目录python中的 Hash除法哈希算法乘法哈希算法平方取中法随机数哈希算法小结在Python中,

Java Stream的distinct去重原理分析

《JavaStream的distinct去重原理分析》Javastream中的distinct方法用于去除流中的重复元素,它返回一个包含过滤后唯一元素的新流,该方法会根据元素的hashcode和eq... 目录一、distinct 的基础用法与核心特性二、distinct 的底层实现原理1. 顺序流中的去重

HTML img标签和超链接标签详细介绍

《HTMLimg标签和超链接标签详细介绍》:本文主要介绍了HTML中img标签的使用,包括src属性(指定图片路径)、相对/绝对路径区别、alt替代文本、title提示、宽高控制及边框设置等,详细内容请阅读本文,希望能对你有所帮助... 目录img 标签src 属性alt 属性title 属性width/h