当前位置: 首页 > news >正文

共识算法初探

共识机制的背景

加密货币都是去中心化的,去中心化的基础就是P2P节点众多,那么如何吸引用户加入网络成为节点,有那些激励机制?同时,开发的重点是让多个节点维护一个数据库,那么如何决定哪个节点写入?何时写入?一旦写入,又怎么保证不被其他的节点更改(不可逆)?回答这些问题的答案,就是共识机制。

容错性:目前的客户-服务商模型一般是中心化的网络形态

而区块链提倡的是无中心形态,网络中的每个节点都是平等的,因此天生具有良好的容错性,如下图:

而为了保证众多非中心节点的数据同步/安全,如何让大部分节点达成一致?

共识机制应运而生

公有链代表算法:

1.PoW

**(Proof of Work):工作量证明机制. 可以理解为按劳分配. **

- 相对公平/公正,但耗能巨大

- 51%算力风险

- 比特币 以太坊 莱特币 狗狗币

2.PoS

(Proof of Stake):股权证明机制。

- 根据币龄(持有代币+持有时间)影响共识

- 一旦权益用来进行签约区块,币龄将清零,避免规模经济影响

- 节能

- 以太坊Next Peercoin Nxt

3.PoB

焚烧证明 - 通过焚烧代币确认领导地位,相当于PoW

4.DPoW

延迟工作量证明 - 类似于PoB,挖矿获得wood,并通过收集woods影响下一次的决策

- 小矿工也有春天

5.DPoS

(Delegated Proof of Stake):授权股权证明机制

- 类似于人民代表大会制度,但区域划分是灵活/动态的

- 节能/快速/高校 出块0.5s

- EOS BitShares Lisk Ark

小结

  • POW 工作量证明机制. 类似于按劳分配
  • POS 股权证明机制. 持有股票的人, 就有对应的权利, 持有的越多, 权利越大 .
  • DPOS 授权股权证明机制. 类似于董事会. 董事会成员数量有限, 由大家选举产生. 被选中的董事会成员可以行使权利.

联盟链代表算法:

6.PBFT:拜占庭容错算法

N >= 3F + 1 N为总计算机数,F为有问题的计算机总数

拜占庭容错能够容纳将近1/3的错误节点误差,IBM创建的Hyperledger就是使用了

该算法作为共识算法(<1.0)

- 其他使用者 Ripple Stella Dispatch

SBFT: Hyperledger(>1.0)采用了SBFT算法:SBFT提出了一个使用收集器(collector)的线

性通信模式。这种模式下不再将消息发给每一个replica,而是发给collector,然后

再由collector广播给所有replicas。减少client端的信息数量,增加可管理节点数

注:Zyzzyva也使用了collector,但是将collector的职责放到了client,而SBFT将collector的职责放到了replica

RBFT:在PBFT的基础上前置了propagate阶段且client需要广播消息而不是只

给“primary”,用以保证好的replica一定能够收到请求。

DBFT: 授权BFT算法

- Neo

7.Paxos:怕诺斯算法 - 分布式一致性算法

Paxos需要一半以上的节点同意即可确认,(非容错型)

(1)Proposer:接收客户的请求,代表客户向Acceptor发起提案。

(2)Acceptor:监听来自Proposer的提案,并决定是否接受和回复。

(3)Learner:提案被接受后,提交并执行提案的内容。

关键点:

1. 每个节点均会记录最大的编号并比较;如编号小于目前节点的最大编号,拒绝,反之,处理

2. 提案者在非成功的状态下,会提交新的提案

3. 提案者接收到多条不同消息时,以编号大的为准

4. 接收者接收到多条不同消息时,拒绝编号小的请求,接受编号大的请求

8.RAFT:分布式一致性算法

非容错型,通过选举Leader的方式进行决策,其余的为follower。

是Paxos的另一种选择,与 Paxos 相比,Raft 有着基本相同运行效率,但是更容易理解,也更容易被用在系统开发上。

RAFT运行中最重要的两个活动:

1. 选主 Leader Election - 只要有超过一半的节点投支持票了,Candidate 才会被选举为 Leader

特殊情况1:主掉线后,剩余的将自发选主 - 如原主回来,原主会降级为follower

特殊情况2:并发情况存在多个candidate的场景上,会持续发起vote,优先原则

2. 复制日志 Log Replication -

日志存在commit - uncommit状态,

如出现多个leader的数据不一致的情况,以commit为准重新选主,保证数据的一致性

相关文章:

共识算法初探

共识机制的背景 加密货币都是去中心化的&#xff0c;去中心化的基础就是P2P节点众多&#xff0c;那么如何吸引用户加入网络成为节点&#xff0c;有那些激励机制&#xff1f;同时&#xff0c;开发的重点是让多个节点维护一个数据库&#xff0c;那么如何决定哪个节点写入&#x…...

Oracle查询表字段名并拼接

在数据库使用中&#xff0c;我们常常需要&#xff0c;获取一张表的全部字段&#xff0c;那该如何查询呢&#xff1f; 查询表字段名 SELECT column_name FROM all_tab_columns WHERE table_name table_name; 只需将引号中的table_name&#xff0c;替换为自己的表名&#xff0…...

8 张图 | 剖析 Eureka 的首次同步注册表

注册表对于注册中心尤为重要&#xff0c;所有的功能都是围绕这个注册表展开。比如服务 A 要想访问服务 B&#xff0c;就得知道服务 B 的 IP 地址和端口号吧。如下图所示&#xff0c;传统的方式就是服务 A 知道了服务 B 的地址后&#xff0c;发送 HTTP 请求到对应的 API 地址上。…...

github ssh配置

1、生成公钥 用下面的命令生成公钥 ssh-keygen -t rsa -b 4096 -C 邮箱 生成的公钥默认在文件夹 ~/.ssh/ 下的 id_rsa.pub 2、在github配置本地的公钥 先复制本地公钥文件中的内容 cat ~/.ssh/id_rsa.pub 打开github的settings > SSH and GPG keys > new SSH key …...

c51单片机串口通信(中断方式接收数据)(单片机--单片机通信)示例代码 附proteus图

单片机一般采用中断方式接受数据&#xff0c;这样便于及时处理 #include "reg51.h" #include "myheader.h" #define uchar unsigned char int szc[10]{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; int bufferc[6]{0}; int sza[6]{0x01,0x02,0x0…...

腾讯面试题算法还原【游戏安全】

本题的参考链接&#xff1a;https://share.weiyun.com/5Xg2b7v 其实拿到这个题我就感觉在哪里看过&#xff0c;后来想想是在旺仔那里看到的&#xff0c;以下是旺仔写的分析过程可以参考一下https://bbs.kanxue.com/thread-276536.htm 但是这个题要比旺仔拿到的那个要增加些许…...

vue + less 实现动态主题换肤功能

文章目录 前言一、前提条件1. 初始化vue项目2. 安装插件 二、新建文件夹主题theme1.style.less文件2.model.js文件3.theme.js文件theme文件夹最终效果 三、修改vue.config.js文件四、页面上的具体使用1. index.vue 页面2. index.vue 页面注意点说明3. index.vue 效果 五、在js中…...

matlab使用教程(15)—图论基础

1.有向图和无向图 1.1什么是图&#xff1f; 图是表示各种关系的节点和边的集合&#xff1a; • 节点 是与对象对应的顶点。 • 边 是对象之间的连接。 • 图的边有时会有权重 &#xff0c;表示节点之间的每个连接的强度&#xff08;或一些其他属性&#xff09;。 这些定…...

【量化课程】02_4.数理统计的基本概念

2.4_数理统计的基本概念 数理统计思维导图 更多详细内容见notebook 1.基本概念 总体&#xff1a;研究对象的全体&#xff0c;它是一个随机变量&#xff0c;用 X X X表示。 个体&#xff1a;组成总体的每个基本元素。 简单随机样本&#xff1a;来自总体 X X X的 n n n个相互…...

【计算机视觉|生成对抗】改进的生成对抗网络(GANs)训练技术

本系列博文为深度学习/计算机视觉论文笔记&#xff0c;转载请注明出处 标题&#xff1a;Improved Techniques for Training GANs 链接&#xff1a;[1606.03498v1] Improved Techniques for Training GANs (arxiv.org) 摘要 本文介绍了一系列应用于生成对抗网络&#xff08;G…...

SQLyog中导入CSV文件入库到MySQL中

1.在数据库中新建一个表&#xff0c;设置列名&#xff08;与待导入文件一致&#xff09;&#xff0c;字段可以多出几个都可以 2.右键表名&#xff0c;导入- - >导入使用本地加载的CSV数据 选择使用加载本地CVS数据 3.指定好转义字符&#xff0c;将终止设置为,号(英文状态下…...

Spring Security6 最新版配置该怎么写,该如何实现动态权限管理

Spring Security 在最近几个版本中配置的写法都有一些变化&#xff0c;很多常见的方法都废弃了&#xff0c;并且将在未来的 Spring Security7 中移除&#xff0c;因此又补充了一些新的内容&#xff0c;重新发一下&#xff0c;供各位使用 Spring Security 的小伙伴们参考。 接下…...

CommandLineRunner 和 ApplicationRunner 用于Spring Boot 应用启动后执行特定逻辑

CommandLineRunner 和 ApplicationRunner 都是 Spring Boot 中用于在应用启动后执行特定逻辑的接口。它们的主要区别在于传递的参数类型和执行顺序。下面我将为您详细解释它们的用途、使用案例以及执行顺序。 CommandLineRunner CommandLineRunner 是一个接口&#xff0c;它有…...

一、Dubbo 简介与架构

一、Dubbo 简介与架构 1.1 应用架构演进过程 单体应用&#xff1a;JEE、MVC分布式应用&#xff1a;SOA、微服务化 1.2 Dubbo 简介一种分布式 RPC 框架&#xff0c;对专业知识&#xff08;序列化/反序列化、网络、多线程、设计模式、性能优化等&#xff09;进行了更高层的抽象和…...

软考:中级软件设计师:文件管理,索引文件结构,树型文件结构,位示图,数据传输方式,微内核

软考&#xff1a;中级软件设计师: 提示&#xff1a;系列被面试官问的问题&#xff0c;我自己当时不会&#xff0c;所以下来自己复盘一下&#xff0c;认真学习和总结&#xff0c;以应对未来更多的可能性 关于互联网大厂的笔试面试&#xff0c;都是需要细心准备的 &#xff08;1…...

实践-CNN卷积层

实践-CNN卷积层 1 卷积层构造2 整体流程3 BatchNormalization效果4 参数对比5 测试效果 1 卷积层构造 2 整体流程 根据网络结构来写就可以了。 池化 拉平 训练一个网络需要2-3天的时间。用经典网络来&#xff0c;一些细节没有必要去扣。 损失函数&#xff1a; fit模型&…...

【设计模式】MVC 模式

MVC 模式代表 Model-View-Controller&#xff08;模型-视图-控制器&#xff09; 模式。这种模式用于应用程序的分层开发。 Model&#xff08;模型&#xff09; - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑&#xff0c;在数据变化时更新控制器。View&#xff…...

看康师傅金桔柠檬X国漫IP跨界出圈,打开IP合作新思路

Z世代年轻群体已经成为消费主力&#xff0c;其喜好和消费观念也呈现出全新态势。抓住年轻人的心&#xff0c;就是抓住了品牌未来的战场。 那么到底什么样的营销动作才能真正撬动年轻人&#xff1f; 对于互联网时代成长起来的Z世代年轻人来说&#xff0c;人气二次元IP无疑是能最…...

ElementUI的MessageBox的按钮置灰且不可点击

// this.$confirmthis.$alert(这是一段内容, 标题名称, {confirmButtonText: 确定,confirmButtonCLass: confirmButton,beforeClose: (action,instance,done) > {if (action confirm) {return false} else {done()}});}.confirmButton {background: #ccc !important;cursor…...

pc端与flutter通信失效, Method not found

报错情况描述&#xff1a;pc端与flutter通信&#xff0c;ios端能实现通信&#xff0c;安卓端通信报错 报错通信代码&#xff1a; //app消息通知window.callbackName function (res) {window?.jsBridge && window.jsBridge?.postMessage(JSON.stringify(res), "…...

AI算法工程师如何进行模型部署?这2个工具+3个技巧,快速上线

对于软件测试从业者来说&#xff0c;模型部署并不是一个陌生的概念——随着AI功能逐渐渗透到各类应用软件中&#xff0c;测试工程师不仅需要验证模型输出的准确性&#xff0c;更需要理解部署流程对模型稳定性、响应速度和结果一致性的影响。很多测试同学会有这样的困惑&#xf…...

C语言(12) 指针的常见操作

指针的常见操作指针变量&#xff0c;有两方面的意思:一个指针指向的内容(数据值&#xff0c;一级)指针变量本身存储的数据 (地址值)#include <stdio.h>int main() {int a 10;int b 0 ;int c 50;int *p NULL;int *q NULL;p &a; // 对指针变量本身进行修改// 对指…...

终极指南:Windows 10完美安装PL2303驱动,解决老旧USB转串口芯片兼容性问题

终极指南&#xff1a;Windows 10完美安装PL2303驱动&#xff0c;解决老旧USB转串口芯片兼容性问题 【免费下载链接】pl2303-win10 Windows 10 driver for end-of-life PL-2303 chipsets. 项目地址: https://gitcode.com/gh_mirrors/pl/pl2303-win10 你是否还在为Windows…...

Nacos CVE-2021-29441漏洞深度解析:User-Agent绕过与鉴权失效

1. 这个漏洞不是“改个Header就能登录”&#xff0c;而是Nacos鉴权体系的一道裂缝CVE-2021-29441这个编号在Nacos社区里曾被轻描淡写地归为“低危”&#xff0c;直到我接手一个金融客户线上告警——他们的Nacos集群在凌晨三点被批量创建了37个高权限用户&#xff0c;所有操作日…...

仅限首批200位架构师获取:DeepSeek-DDD联合建模工作坊实录(含领域事件风暴原始会议录像+决策日志)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;DeepSeek领域驱动设计的范式演进与本质洞察 DeepSeek作为面向大规模智能体协同与复杂业务语义建模的新一代AI原生架构&#xff0c;其领域驱动设计&#xff08;DDD&#xff09;实践已突破传统分层单体范式&…...

MNE-Python 第9天学习笔记:源定位基础

一、什么是源定位&#xff1f; 1.1 通俗理解 到目前为止&#xff0c;我们分析的是"头皮上的脑电"&#xff1a;头皮电极 → 记录头皮表面的电位↓这就像在地球表面测量地震波我们想知道的是&#xff1a;震源在哪里&#xff1f;多深&#xff1f;源定位 从头皮电位反推…...

QKeyMapper终极指南:Windows上最强大的开源按键映射工具

QKeyMapper终极指南&#xff1a;Windows上最强大的开源按键映射工具 【免费下载链接】QKeyMapper [按键映射工具] QKeyMapper&#xff0c;Qt开发Win10&Win11可用&#xff0c;不修改注册表、不需重新启动系统&#xff0c;可立即生效和停止。支持游戏手柄映射到键鼠&#xff…...

模型越强,Bug越隐?DeepSeek代码生成评测:12个真实项目踩坑案例,速查避雷清单

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;模型越强&#xff0c;Bug越隐&#xff1f;DeepSeek代码生成评测&#xff1a;12个真实项目踩坑案例&#xff0c;速查避雷清单 当大模型在代码补全、函数生成和单元测试编写中表现愈发惊艳&#xff0c;一个反直觉…...

思源宋体完全免费商用指南:7种字重中文开源字体终极教程

思源宋体完全免费商用指南&#xff1a;7种字重中文开源字体终极教程 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 想要为你的中文设计项目找到一款既专业又完全免费的高质量字体吗&a…...

2023B卷,最佳植树距离

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:华为OD面试 文章目录 一、🍀前言 1.1 ☘️题目详情 1.2 ☘️参考解题答案 一、🍀前言 2023B卷,最佳植树距离。 1.1 ☘️题目详情 题目: 小明在直…...