首页 > 其他分享 >06 BTC-挖矿难度

06 BTC-挖矿难度

时间:2023-05-02 12:33:26浏览次数:60  
标签:出块 06 比特 调整 BTC 区块 难度 挖矿

《区块链技术与应用》课程链接:https://www.bilibili.com/video/BV1Vt411X7JF/?spm_id_from=333.337.search-card.all.click


06 BTC-挖矿难度

目录

调整目标空间占输出空间的比例,来调整计算难度值。

difficulty_1_target:难度目标为1时候的目标阈值,是一个很大的值。

必须调整挖矿难度,不然随着设备的先进,出块时间会变得越来越短。


出块时间变短,增加了系统的响应时间,提高了系统的throughput,那这不是好事吗?

这个如果是好事的话,那么我们没必要把出块时间设置成10分钟了。

出块时间太短:分叉会成为常态,不仅是二分叉,可能出现很多的分叉,比如说10个区块被同时挖出来,会出现10分叉。

分叉如果过多的话,对于系统达成共识是没有好处的,而且也危害到系统的安全。

比特币协议是假设,大部分算力是掌握在诚实的矿工手里。

系统中的总算力越强,安全性就越好,因为要发动51%攻击(51% attack)所需要的算力就越大。

如果分叉过多,系统中的总算力会被分散,这个时候,可能就不需要51%的算力去发动攻击了,可能百分之十几就够了。


比特币10分钟的出块间隔就是最优的呢?出块时间必须有一个常数的波动范围,不能无限的减少下去。

以太坊中的出块时间降低到了15s,所以,以太坊的出快速度是比特币的40倍,出块时间大幅度下降之后,以太坊就要设计一个新的共识协议,叫做GHOST,将orphan block叫做uncle block,会给一定的奖励,以太坊同样需要调整挖矿难度,使得出块时间保持稳定。

平均出块时间设置多长,都需要保持稳定,而不能无限的减少下去。


怎么调整挖矿难度?

每隔2016个区块,调整挖矿难度。大概14天。

调整难度共识如下所示:

实际代码中,上调和下调最多有4倍的限制,一次调整不能超过4倍。


如果有恶意的节点,并没有调整自己的挖矿难度,那么怎么办?

如果不调,诚实的矿工不认可恶意节点产生的矿工。

nBits(4个字节),target(32个字节),nBits是target的一个压缩编码。


以太坊的挖矿难度调整,不是每隔多少个区块进行调整,而是每隔新出的区块都有可能进行难度调整。


出块时间10分钟是不是最好的?每个块最多1M字节是不是合适?为什么2016个区块调整难度?


比特币系统中的实际情况:

比特币系统中总算力的变化情况:

挖矿难度变化情况:

最近180天的挖矿难度变化:

比特币的出块时间:

下图公式与target的公式是反的:

标签:出块,06,比特,调整,BTC,区块,难度,挖矿
From: https://www.cnblogs.com/yangyi215/p/17367546.html

相关文章

  • 04 BTC-实现
    《区块链技术与应用》课程链接:https://www.bilibili.com/video/BV1Vt411X7JF/?spm_id_from=333.337.search-card.all.click04BTC-实现目录04BTC-实现比特币系统是transaction-basedledgerUTXO:UpsentTransactionOutputUTXO中的元素需要给出它所在交易的哈希值,以及它是......
  • 01 BTC-密码学原理
    《区块链技术与应用》课程链接:https://www.bilibili.com/video/BV1Vt411X7JF/?spm_id_from=333.337.search-card.all.click01BTC-密码学原理目录01BTC-密码学原理哈希部分签名部分比特币加密货币(crypto-currency)哈希部分:哈希函数(cryptographichashfunction):抗碰......
  • 02 BTC-数据结构
    《区块链技术与应用》课程链接:https://www.bilibili.com/video/BV1Vt411X7JF/?spm_id_from=333.337.search-card.all.click02BTC-数据结构目录02BTC-数据结构hashpointerMerkletreehashpointer:不仅可以找到前区块的位置,还能防止前区块是否被篡改。Blockchainisal......
  • 03 BTC-协议
    《区块链技术与应用》课程链接:https://www.bilibili.com/video/BV1Vt411X7JF/?spm_id_from=333.337.search-card.all.click03BTC-协议目录03BTC-协议数字货币的需要解决的两个主要问题共识机制如果央行(中心化)发行数字货币,使用央行的私钥进行签名,大家交易的时候使用央行......
  • CSP2022-06
    第一题 水题,没啥好说的#include<iostream>#include<cmath>usingnamespacestd;constintN=1e6;doublea[N];intmain(){intn;cin>>n;doublesum=0;for(inti=0;i<n;i++){cin>>a[i];......
  • 7-006-(LeetCode- 152) 乘积最大子数组
    1.题目读题 考查点 2.解法思路 代码逻辑 具体实现113.总结......
  • struts2 s2-062 ONGL远程代码执行
    struts2s2-062ONGL远程代码执行一、Struts2介绍struts2是一种重量级的框架,位于MVC架构中的controller,可以分析出来,它是用于接受页面信息然后通过内部处理,将结果返回。struts2也是一个web层的MVC框架。Java中SSH框架SSH为Struts+Spring+Hibernate的一个集成框架,是目前较流行......
  • PMP-06-项目组合管理和醒目集管理
    一、项目组合是为了实现战略目标而组合在一起管理的项目,项目集、子项目组合和运营工作。二、项目集是一组相互关联且被协调管理的项目子项目集和项目集活动。三、项目组合管理的工作可以分为几个部分,包括业务战略、活动、项目组合、战略平衡、批准授权,项目监控。四、项目集管......
  • 06 虚拟化Open vSwitch环境部署
    06虚拟化OpenvSwitch环境部署本节给出部署OpenvSwitch网桥环境的部署方法,使虚拟机连接到网络。6.1安装OpenvSwitch网桥OpenvSwitch网桥,具有更便捷的自动化编排能力。部署OpenvSwitch网桥需要安装网络虚拟化组件,这里介绍总体操作。6.1.1安装OpenvSwitch组件使用Openv......
  • 面向对象程序设计题目集总结blog2-22206110-胡瑞杰
    一、前言第二次在博客园上发布面向对象程序设计题目集的总结博客。经过几周的学习,面向对象的理念更加深入。虽然已经学了些面向对象程序设计,学好这部分内容还是有较大难度。关于知识点本次的题目集所体现的知识点已经不仅限于Java的语法知识,还需要考虑设计问题,不......