Java实现pow共识算法_POW+POS混合共识算法
上一章节说过,实际运用pos是需要借助其他算法才能实现的。本章节主要学习点点币的共识算法,该算法是基于POW改进的POS算法。
混合共识算法的定义
现在很多公链都是在用基于xx和xx算法的混合共识算法实现共识机制的。什么是混合共识算法呢?
有两种情况都可以认为是混合机制:
1.在某个算法的基础上,运用其他算法的技术进行改进。如点点币,它的共识机制是用pos算法对pow算法进行改进后的机制,不过大家往往认为点点币的共识机制是pos,其实严格来说是pow+pos的。
2.两个算法运算相互独立,但共同组成了一个共识机制。如初链,它的共识是pow和pbft两个算法组成的,然后自己给自己起了个新名字叫混合共识机制fpow。这种混合很明显,所以大家都会叫混合机制。
混合共识机制POW+POS
点点币是第一个基于POS发行的数字货币,所以接下来我将带大家深入学习它的共识算法,加深对POS的理解。
与PoW一样,为了抢到将区块写入区块链的权利,节点同样要进行hash计算,只不过最终的解和币龄有关,计算公式:
proofHash < coinAge * target;
coinAge是币龄,target是一个目标值,用于调整难度。coinAge * target的值越大,难度就越小,抢到区块的概率就越高。
假如你的钱包里是0个币,那么你的币龄就是0, 计算一个小于0的hash值根本不可能,因此基本上抢不到区块。
点点币的出块时间也是10分钟左右一个。币龄之前讲过,就是持币数*持币时间;proofHash也就是pow的挖矿函数,即两次sha256 hash运算。所以重点我们要学习target的值是怎么实现的,怎么调整使出块时间在10分钟左右呢?
点点币的目标值
点点币难度值是一个一直动态调整的,每隔2个区块就调整一次难度(目标值),使出块时间维持在10分钟左右。
点点币使用目标值来衡量挖矿难度,目标值与难度成反比,目标值越大、难度越小;反之亦然。当前区块的目标值与前一个区块目标值、前两个区块的时间间隔有关。
计算公式如下:
当前区块目标值 = 前一个区块目标值 * (1007 * 10 * 60 + 2 * 前两个区块时间间隔) / (1009 * 10 * 60)
由公式可见,两个区块目标间隔时间即为10分钟。
如果前两个区块时间间隔大于10分钟,目标值会提高,即当前区块难度会降低。
反之,如果前两个区块时间间隔小于10分钟,目标值会降低,即当前区块难度会提高。
点点币的挖矿难度值=创始区块目标值/当前区块目标值。网页中显示的当前块难度值就是这样算出来的。
挖矿过程和pow一样,需要比较hash值与目标值大小,广播区块,验证区块,上链等等。
Java实现pow共识算法_POW+POS混合共识算法相关推荐
- 如何使用Python+Django+Mysql开发特色美食推荐系统 个性化美食推荐网站 个性化推荐算法开发 基于用户、物品的协同过滤推荐算法 组合、混合推荐算法FoodRecommendSystem
如何使用Python+Django+Mysql开发特色美食推荐系统 个性化美食推荐网站 个性化推荐算法开发 基于用户.物品的协同过滤推荐算法 组合.混合推荐算法FoodRecommendSystem ...
- 揭秘!UBTC高级IT经理首谈POW+POS混合共识机制
原标题:Consensus Mechanisms on the Blockchain (区块链的共识机制) 原文链接:https://ubpay.io/consensus-mechanisms-on- ...
- 基于遗传算法和模拟退火算法改进的混合模拟退火算法(解决求函数极值问题,MATLAB代码已实现)
基本思想: 混合模拟退火算法时遗传算法和模拟退火算法的结合,在混合模拟退火算法中使用了大量的样本作为问题的可能解决方案而不是将单个样本作为一个问题的可能解决方案.对遗传算法中适应的概念进行相应改进. ...
- 个性化试题推荐系统 协同过滤推荐算法在在线考试系统中的运用 基于用户/项目的协同过滤推荐算法 混合协同过滤推荐算法 协同过滤混合推荐算法
个性化试题推荐系统 协同过滤推荐算法在在线考试系统中的运用 一.项目开发技术及功能介绍 1.SSH开发框架(spring+struts+hibernate) 2.js.jquery.bootstrap ...
- PoW 、PoS , DPoS 算法
PoW .PoS , DPoS 算法 在区块链领域,多采用 PoW 工作量证明算法.PoS 权益证明算法,以及 DPoS 代理权 益证明算法,以上三种是业界主流的共识算法,这些算法与经典分布式一致性算 ...
- 初链主网上线技术解读之-混合共识
背景 从2017年11月启动至今,经过历时近一年的研究.开发与测试,初链主网Beta版于新加坡时间2018年09月28日08:00正式上线,在此之前,07:56分PBFT委员会第一次共识出块和True ...
- 海伯利安系列解答之 - POH混合共识机制
编者语 海伯利安团队自创建去中心化地图经济体以来,已推出了包括泰坦地图应用.Map3服务网络在内的去中心化地图产品,以及HYN经济模型2.0和POH共识机制.一方面社群和经济架构积极鼓励新用户参与贡献 ...
- 区块链共识算法Proof-of-Stake (PoS/权益证明) 常见问题解答 (1)
Original post: https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ 什么是Proof-of-Stake 权益证明(PoS)是 ...
- 对“初链”混合共识、双链结构和抗ASIC挖矿算法的详解
前段时间写了篇博客说了说自己对"初链"白皮书和黄皮书的解读,其中一部分涉及到对"初链"混合共识和双链技术的解读,由于是从说明文档中获取的信息,难免会有误解,虽然 ...
最新文章
- [导入]郁闷`````[原]
- Rundeck crontab格式
- SpringContextHolder 静态持有SpringContext的引用
- java面试总结之一
- Objective-C ,ios,iphone开发基础:picker控件详解与使用,(实现省市的二级联动)
- 五边形lisp程序_CAD LISP 程序
- 亚马逊s3的使用方法_使用jclouds库在Amazon S3上上传
- div和div之间画横线_javascript – jQuery – 使用画布在div之间绘制线条
- update yum 到指定版本_CentOS 使用yum update 更新时保留特定版本的软件
- 数据库 设计中的英文术语
- 实践Hive的点点滴滴
- CANTest连接设备失败
- 7 款常用的 PostgreSQL GUI 工具测评
- 【190320】VC 视频捕捉与网络传输源代码
- 参数方程下的特殊图像
- 计算机组成与系统结构期末复习 第二章 2.2
- 【《Real-Time Rendering 3rd》 提炼总结】(三) 第三章 · GPU渲染管线与可编程着色器 The Graphics Processing Unit
- web day03 CSS基本概念 选择器
- 谷歌浏览器Chrome错误提示Flash过期怎么办(转)
- Linux浏览器无法访问网络解决方案
热门文章
- mysql临时表怎么显示_如何查看MySQL临时表的说明?
- MySQL(一)存储引擎
- mysql事务的管理方式_浅谈MySQL事务管理(基础)
- ffmpeg 的使用备忘
- Unity官网进不去?打不开?下载不了?
- PHP判断msg,小程序 msgSecCheck 检查内容是否违规违法,但所有内容都可通过问题...
- OpenShift - 部署MySQL主从复制
- 高级GIT教程-如何使用GIT调试代码?
- 将您的SQL Server工作负载迁移到PostgreSQL –第3部分
- 证明谷歌 Go 魅力的 10 个开源项目