目录

1 名词介绍

2 矿工投票方法

3 委员会确定投票流程

​ 3.1 关键概念描述

​ 3.1.1 Epoch & checkpointInterval

​ 3.1.2 Snapshot

​ 3.2 投票方法

1.名词介绍

节点:普通的以太坊节点,没有区块生成的权利。

矿工:具有区块生成权利的以太坊节点

委员会:所有矿工的集合

2.矿工投票方法

  • 用户通过RPC接口,调用Propose(address common.Address, auth bool)方法(consensus/clique/api.go),进行投票,address表示要投票的节点的地址,auth表示要从将该地址加入委员会,还是从委员会中删除。
  • Propose方法将address和auth两个输入参数写入到clique.proposals集合中。
  • 任何一个委员会的委员,可以在任意时刻进行投票,投票包括两种,即加入委员会和从委员会中删除。

3.委员会确定投票流程

3.1 关键概念描述

3.1.1 Epoch & checkpointInterval

  • CheckpointInterval:为常量1024(consensus/clique/clique.go中定义),即每当区块链的高度为1024的整数倍时,到达checkpointInterval时间点。
  • Epoch:默认为30000(cmd/puppet/wizard_genesis.go中makeGenesis方法中定义),即每当区块链的高度为30000的整数倍时,到达Epoch时间点。

3.1.2 Snapshot

Snapshot是一个快照,矿工程序在区块链高度为CheckpointInterval的整数倍时,会对当前相关数据和状态形成快照,并存储到数据库中。

snapshot结构体(consensus/clique/snapshot.go)关键成员:

  • Number:生成快照时的区块链高度
  • Signers:生成快照时的委员会地址
  • Votes:生成快照时所有的投票集合
  • Tally:被投票的节点集合,其中的Tally是该节点被投票的次数

3.2投票方法

所有投票都是在委员生成新区块的过程中完成,具体流程如下:

1)委员生成新区块时,先为该区块初始化一个header。

prepare方法,consensus/clique/clique.go)

2)从proposals中随机获取一个投票,将被投票的节点地址写入header.coinbase,将提名是添加还是删除写入header.Nonce(添加:0xffffffffffffffff 删除:0),若该委员生成的这个区块最终被写入区块链,则header中的投票也被写入区块链。

prepare方法,consensus/clique/clique.go)

3)委员在生成新区块时,会创建新的snapshot,新的snapshot是由上一checkponitinterval时间点存储到数据库中的快照加入当前时间点和checkpointinterval时间点之间所有的headers数据组成。添加header过程中,若该header的number是Epoch时间点,则会将snap中的Votes和Tally两个集合清零。

apply方法,consensus/clique/snapshot.go)

4)新的snapshot添加header过程中,会检查每一个header中存储的投票,若该投票snap.Votes中已经存在,则将snap.Votes和snap.Tally两个集合的该投票删除。

apply方法,consensus/clique/snapshot.go)

将每一个header中有效的提名写入新snapshot的snap.Votes和snap.Tally集合。

apply方法,consensus/clique/snapshot.go

5)判断snap.Tally集合中某个被提名的节点,提名的次数是否大于snap.Signers的1/2,即是否有超过一半的委员对该节点进行投票,若超过,则投票成功,该节点会被添加到委员会或者从委员会中删除。

apply方法,consensus/clique/snapshot.go)

注释:snapshot快照中的记录的委员会,即Signers集合,初始化时来源于创世块header中的Extra。

区块链:POA委员会选举机制相关推荐

  1. 以太坊源码(03):POA委员会选举机制

    目录 1       名词介绍 2       矿工投票方法 3       委员会确定投票流程 3.1        关键概念描述 3.1.1       Epoch & checkpoin ...

  2. POA委员会选举机制

    目录 1 名词介绍 2 矿工投票方法 3 委员会确定投票流程 ​ 3.1 关键概念描述 ​ 3.1.1 Epoch & checkpointInterval ​ 3.1.2 Snapshot ...

  3. 万向副董肖风:区块链的六大治理机制

    雷锋网(公众号:雷锋网)4月28日报道,今日2017全球区块链金融峰会在杭州举行.大会宣布了全国首个区块链产业园区落户杭州,此外还邀请了多位重量级嘉宾演讲,据雷锋网了解包括以太坊创始人 Vitalik ...

  4. 一文读懂区块链共识及其容错机制

    翻译 | shawn 编辑 | 波波 区块链是一个分布式和去中心化的系统,这意味着它需要一种可以追踪当前系统官方状态的方法.由于区块链可以包括金融交易和商业协议,因此所有相关方必须在协议条款上保持一致 ...

  5. 塞拉利昂首次秘密进行基于区块链的总统选举

    点击上方 "蓝色字" 可关注我们! 暴走时评: 塞拉利昂利用瑞士区块链选举初创企业的许可型分布式账本技术,完成了首轮基于新技术的投票流程.然而计票还是手动完成,只是将结果记录在区块 ...

  6. 区块链中的共识机制以及共识算法

    什么是共识 共识,从字面上来看,是在某方面达成一致.打个比方,一个部门最近来了几位新同事,部门主管为了欢迎新同事的加入,以能让新同事融入到新环境,提议下班后聚个餐,对于聚餐了,大伙对此举双手赞成,毕竟 ...

  7. pbft共识机制 java实现_区块链开发:共识机制PBFT #C09

    拜占庭将军问题是指系统中除了网络延迟.系统宕机等问题外还存在恶意节点,会进行"精神分裂式"投票. BFT(Byzantine Fault Tolerance)系统是指能够容忍拜占庭 ...

  8. 区块链 重塑不良资产互信机制

    数据显示,2021年一季度末,银行业不良贷款余额3.6万亿,不良贷款率1.89%,较年初下降0.02个百分点:四季度末商业银行不良资产余额2.8万亿,较上季度末增加135亿元,商业银行不良贷款率1.7 ...

  9. 区块链技术之共识机制

    "共识机制"一词通常通俗地用于指代"股权证明"."工作证明"或"权威证明"协议.然而,这些只是防止女巫攻击的共识机制的组 ...

  10. HPB芯链 -- 共识算法选举机制描述

    1 简介 为了适应BOE技术的要求,同时尽可能的提升安全TPS, HPB共识算法采用了高效的双层选举机制,即外层选举和内层选举. 外层选举:由具有BOE板卡的所有用户中选取出.选取周期为3个月.选取方 ...

最新文章

  1. hive 时间转字符串_2. HIVE 基本操作
  2. Method-Swizzling实战-实现iOS原生网络请求性能采集
  3. 蓝桥杯 单点最短路径问题
  4. python创建和控制的实体称为_Python eds包_程序模块 - PyPI - Python中文网
  5. android返回页面代码实现,Intent携带信息返回上一个界面实现基本信息的设置
  6. 【完全开源】博客园客户端UWP版(上篇)
  7. [转载] sklearn FutureWarning: numpy not_equal will not check..., The comparison did not return the sam
  8. php二级垂直导航栏,垂直(纵向)二级导航菜单
  9. 数据合并concat
  10. 【资源篇】在线下载B站视频(免安装)
  11. Python CSV模块
  12. 前端必读:浏览器工作原理
  13. Justinmind恢复30天试用 For Mac
  14. java中isolate时间_Flutter 92: 图解 Dart 单线程实现异步处理之 Isolate (一)
  15. TCP 与 CPU 架构发展史
  16. 易基因|m5C RNA甲基化测序技术---从mRNA到全转录组(mRNA+lncRNA+tRNA)m5C单碱基分辨检测|技术解读
  17. 前端CDN资源库,解决HTML大屏首次加载慢的问题了,大屏项目必备cdn加速
  18. Visio用UML2.2模板包
  19. mvn 命令打包项目
  20. Java java.lang.ArithmeticException: Rounding necessary问题解决

热门文章

  1. 批量爬取微信公众号下的音频
  2. 怎么用PS替换图片背景色?这个方法你需要知道
  3. 关于改进邮政编码的建议 2018-03-08
  4. 科研项目研究的基本步骤
  5. 开启win10电池方案卓越性能
  6. 小米商城静态页面制做
  7. 究竟云计算就业前景好不好 零基础如何学云计算
  8. C# 如何插入、删除Excel分页符
  9. win10解决IE浏览器安装不上的问题
  10. 将bilibili缓存文件转换为MP4格式