挖矿就是不断调整nouce和header中其他可变字段,使得整个block header 的hash值小于等于target,target越小,挖矿难度越大。

出块时间设置为了10分钟,可以尽可能避免同时发布区块,导致最长区块链多次分叉,总算力被分叉分散,而恶意节点算力集中在恶意节点后面抢到最长区块链的6个确认区块。其实10分钟是人为规定的,其实8分钟,5分钟原则上也可以。对于一个支付系统太长了,所以以太坊出块时间是15s,它也会调转挖矿难度,保证出块时间稳定,它的共识协议叫ghost。

挖矿难度在代码中设定为每2016个区块调整一次(以太坊是每个区块调整一次),预期时间约14天,会按照2016个实际挖出来的时间再上下调整一下难度。

系统会自动调整,如果某个恶意节点故意不调,target是2的256位取值范围,需要32个字节存储,所以它有一个压缩的编码 nBits 4个字节存储在block header中,其他诚实节点检查该nBits区,如果没有调,则不会接受。

因为这个比特币的设计师比较保守的,比如说出块时间,使用的语言,每个块最多1M字节都有争议,所有后来才发展了那么多虚拟货币。

p6.BTC-挖矿难度的更多相关文章

  1. ethereum/EIPs-100 挖矿难度计算

    https://github.com/ethereum/EIPs/blob/master/EIPS/eip-100.md 创世纪区块的难度是131,072,有一个特殊的公式用来计算之后的每个块的难度. ...

  2. Linux系统BTC挖矿傻瓜教程

    [Linux系统BTC/比特币矿池挖矿方案一]cgminer矿池挖矿程序(Linux系统 比特币(BTC) 矿池挖矿/采矿/造币)cgminer矿池挖矿程序[查看这里有没有最新版]http://ck. ...

  3. Bitcoin挖矿

    目录 为什么要挖矿? 比特币挖矿 为什么要挖矿? 增加恶意行为的成本 增加记账权力,获取相应的奖励 比特币挖矿 每开采210000个区块,挖矿奖励减半 2009年1月-2012年11月,奖励50BTC ...

  4. 黑客正在使用美国NSA泄露的工具进行挖矿

    早些年我们知道美国国家安全局囤积不少漏洞准备自己使用,结果这些漏洞以及利用工具被方程式组织获得. 随后名为影子经纪人的黑客组织获得这些漏洞和工具后又再次出售,当初的永恒之蓝漏洞就是从这里泄露的. 永恒 ...

  5. 使用Geth 构建以太坊区块链并模拟挖矿过程

    使用Geth 构建以太坊区块链并模拟挖矿过程 Go-ethereum 是以太坊官方的一个Golang 实现,我们可以使用Geth 工具来创建创世区块并启动区块链,使用Clef 实现以太坊钱包的功能,以 ...

  6. 什么是比特币(bitcoin)

    一.什么是比特币? 比特币是一种由开源的P2P软件产生的电子货币,是一种网络虚拟货币.比特币使用遍布整个P2P网络节点的分布式数据库来记录货币的交易,并使用密码学的设计来确保货币流通各个环节安全性.比 ...

  7. cpp 区块链模拟示例(四) 区块链工作量证明

    本文主要在之前的区块链原形上添加了工作量证明,并且为后继的交易功能做好准备. 上一个章节我们已经创建了区块链的基本原形,但是区块的哈希计算和加入太过于简单,如果按照这种速度添加区块那么区块链估计一个小 ...

  8. 区块链3.0 ada Cardano卡尔达诺如何获得一致好评?

    区块链3.0 ada Cardano卡尔达诺如何获得一致好评? EOS 的直接竞争对手是以太坊.文章介绍的卡尔达诺(Cardano)的目标就更加远大了,他要同时锁定比特币和以太坊.但大家去网上搜索卡尔 ...

  9. Block Chain Learning Notes

    区块链是什么 区块链技术是由比特币创造的,本文也将从比特币开始进行引导,一步一步告诉大家什么是区块链.如果你想立马知道区块链是什么,也可以直接转到文章末尾的区块链定义. 区块链,可能是当下最有前景又充 ...

随机推荐

  1. EF6中的SQL监控

    在MVC或WEBAPI中的监控 System.Action<string> action = (string message) => { Debug.WriteLine(messag ...

  2. 解决Electron安装包下载慢的问题

    问题描述 在运行官网示例的过程中,一个安装包(electron-v5.0.8-darwin-x64.zip)下载特别慢,基本下载不下来.更改npm的安装源到taobao的镜像,也没有效果. 解决方案 ...

  3. linux设置sudo不要密码

    linux下,普通用户,sudo时需要密码 改成没密码, vi /etc/sudoers 在 root ALL=(ALL) ALL后加一行 sysusr ALL=(ALL) NOPASSWD: ALL ...

  4. Linux服务器连接不上的几种解决办法

    Linux远程服务器连接不上,或连接超时解决办法:1.测试网络是否通:    ping 远程IP 2.如果能ping通则表示与服务器网络连接是正常,接下来测试端口:telnet 远程ip 端口 3.如 ...

  5. pytorch保证每次运行使用的随机数都相同的方法

    其实在代码的开头添加下面几句话即可: # 保证训练时获取的随机数都是一样的 init_seed = torch.manual_seed(init_seed) torch.cuda.manual_see ...

  6. 有相关性就有因果关系吗,教你玩转孟德尔随机化分析(mendelian randomization )

    流行病学研究常见的分析就是相关性分析了. 相关性分析某种程度上可以为我们提供一些研究思路,比如缺乏元素A与某种癌症相关,那么我们可以通过补充元素A来减少患癌率.这个结论的大前提是缺乏元素A会导致这种癌 ...

  7. HTML-头部

    HTML <head> 元素 <head> 元素是所有头部元素的容器.<head> 内的元素可包含脚本,指示浏览器在何处可以找到样式表,提供元信息,等等. 以下标签 ...

  8. Pytest单元测试框架-Pytest环境安装

    unittest是python自带的单元测试框架,它封装好了一些校验返回的结果方法和一些用例执行前的初始化操作,使得单元测试易于开展,因为它的易用性,很多同学也拿它来做功能测试和接口测试,只需简单开发 ...

  9. 容器版jenkins使用宿主机的docker命令

    参照里面的第一步里面的dockerfile: https://www.cnblogs.com/effortsing/p/10486960.html

  10. DataTable.NET的event執行順序

    var dataTable = $('#table') .on( 'processing.dt', function ( e, settings, processing ) { $('#loading ...