IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 区块链 -> 《区块链技术与应用》读书笔记6——BTC挖矿 -> 正文阅读

[区块链]《区块链技术与应用》读书笔记6——BTC挖矿

1.为什么要调整挖矿难度

挖矿的本质是不断调整block header中的nonce值,使得整个block header的哈希值小于等于给定的目标阈值。H(block header)<=target.
1)出块时间越来越短是好事吗?
???????出块时间缩短,那么交易可以很快被写入区块链,并且提高了系统响应时间,增加了区块链系统效率。但是,出块时间并不是越短越好。首先,区块在网络上传播具有时延,假如出块时间为一秒,但网络传播需要十秒,则会使系统中节点经常性处于不一致的状态,增加了系统的不稳定性,且系统经常性位于分叉状态。分叉如果太多,则不利于系统达成共识,造成算力分散,使得黑客攻击成本大大降低。
2)10min的出块间隔是最优吗?
???????并不是,但是系统出块时间需要维持在一个定值附近。
以太坊中平均出块时间仅为15秒左右,但同样在以太坊中也有相应调整算法维持其平均出块时间,以太坊设置了共识协议Ghost。

2.BTC系统如何调整挖矿难度

每隔2016个区块需要调整一次难度,根据10min产生一个新区块可以得到,大概需要14天的时间。如果实际比较大,target会比较大,相应的挖矿难度会降低;如果实际比较短,target会比较小,相应的挖矿难度会增大。 ??上调和下调都有四倍的限制。
在这里插入图片描述
????如果有恶意节点故意不调,其所产生的区块不会被大多数诚实的节点承认。在block header中有一个nbits的域,它是对target的编码存储,其他节点在合法性验证时候会yanznbits域是否合法,不合法则对该区块不予以承认。

3.全节点和轻节点

全节点轻节点
一直在线不是一直在线
在本地硬盘上维护完整区块链信息不保存整个区块链,只需要保存每个区块块头
在内存中维护UTXO集合,以便于快速检验交易合法性不保存全部交易,只保存和自己有关的交易
监听比特币网络中交易内容,验证每个交易合法性无法验证大多数交易合法性,只能检验和自己相关的交易合法性
决定哪些交易会打包到区块中无法检测网上发布的区块正确性
监听其他矿工挖出的区块,验证其合法性可以验证挖矿难度
挖矿:1.决定沿着哪条链挖下去 2.当出现等长分叉,选择哪一个分叉只能检测哪个是最长链,不知道哪个是最长合法链

在比特币网络中,大多数节点都是轻节点。如果只是想进行转账操作,不需要挖矿,就无需运行一个全节点。在挖矿过程中,如果监听到别人已经挖出区块延申了最长合法链,此时应该立刻放弃当前区块,在本地重新组装一个指向最后这个新合法区块的候选区块,重新开始挖矿。

4.比特币系统的安全性

  • 一是密码学的保证:别人没有自己的私钥,就无法伪造其合法签名,从而无法将账户上的BTC转走
  • 二是共识机制:保证了恶意交易不被系统承认。

5.大矿池

????目前,挖矿设备逐渐趋于专业化,其经历了三个过程,总体趋势从通用到越来越专用。
????普通CPU -> GPU ->ASIC芯片(挖矿专用矿机)
????对于单个矿工来说,即使使用了ASIC矿机,其算力在整个系统中仍然只占据很少一部分,即使从平均收益看有利可图,但收入很不稳定。
此外,单个矿工除挖矿还要承担全节点其他责任,造成了算力的消耗。
????矿池的概念:一个全节点驱动多台矿机。矿工只需要不停计算哈希值,而全节点其他职责由矿主来承担。ASIC芯片只能计算哈希值,不能实现全节点其他功能。
在这里插入图片描述

6.矿池利益分配方法

  • 思路一:平均分配,所有人平分出块奖励
  • 思路二:降低挖矿难度
    假设原本挖矿难度要求,计算所得126位的哈希值前70位都必须为0,现在降低要求,只需要前60位为0,这样挖矿会更容易挖到。当然,这个哈希是不会被区块链所承认的,我们将其称为一个share,或almost valid share。矿工每挖到一个share,将其提交给矿主,矿主对其进行记录,作为矿工工作量的证明。等到某个矿工真正挖到符合要求的的区块后,根据所有矿工提交的share数量进行分配。
    因为每个矿工尝试的nonce越多,挖到矿的可能性越大,所能得到的share也会越多,所以这种方案作为工作量证明方案是可行的。

7. 51%算力矿池可以发动哪些攻击

1)分叉攻击
对已经经过6次确认的交易分叉,利用51%算力将交易记录回滚
2)封锁交易
假如攻击者不喜欢某个账户A,不想让A的交易上区块链,在监听到有其他人将A的交易发布到区块链上时,立刻发动分叉攻击,使A所在链无法成为”最长合法链“。这样,便实现了对A账户的封锁。
3)盗币(将他人账户BTC转走)
这个是不可能的,因为其并没有他人账户私钥。如果依仗算力强,强行将没有签名的转账发布到区块链,正常节点不会认为其合法,这样,即使这条链再长,其他人也不会认为其是最长合法链。

8. 矿池出现的优劣

  • 优点:解决了矿工收入不稳定的问题,减轻了矿工的负担
  • 威胁到了区块链系统的安全,使得51%攻击变得容易起来。
  区块链 最新文章
盘点具备盈利潜力的几大加密板块,以及潜在
阅读笔记|让区块空间成为商品,打造Web3云
区块链1.0-比特币的数据结构
Team Finance被黑分析|黑客自建Token“瞒天
区块链≠绿色?波卡或成 Web3“生态环保”标
期货从入门到高深之手动交易系列D1课
以太坊基础---区块验证
进入以太坊合并的五个数字
经典同态加密算法Paillier解读 - 原理、实现
IPFS/Filecoin学习知识科普(四)
上一篇文章      下一篇文章      查看所有文章
加:2021-09-29 10:19:40  更:2021-09-29 10:21:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 21:53:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码