0%

区块链学习笔记4:比特币挖矿

比特币节点

  • 每个比特币钱包都是一个节点
  • 全节点:拥有完整账本,负责转账交易广播和验证
  • 轻节点:不挖矿,只交易
  • 挖矿节点:增加挖矿功能的全节点,记账节点
  • 目前500多万节点,全节点只有1万多

挖矿,矿工,矿机,矿场,矿池

  • 挖矿:争取记账权,确认交易并记录在区块链上
  • 矿工:从事挖矿的人,只需保证电力和网络,其他都由电脑完成
  • 矿机:芯片,散热片,风扇
  • 矿场:矿机集中起来形成矿场
  • 矿池:很多矿场集中在一起
  • 全球算力最高四个都在中国

    挖矿设备

  • CPU挖矿
  • GPU挖矿:等于几十张CPU
  • 专业矿机挖矿:蚂蚁矿机=30000张CPU
  • 矿场挖矿
  • 矿池挖矿

    算力

  • 计算能力,目前主流矿机算力为14T左右

    哈希算法

  • 只能加密不能解密的算法
  • 被用于数字签名
  • 最有名的就是MD5,SHA-1,都是以MD4为基础设计的
  • 比特币使用SHA-2家族
  • 哈希算法特点:1.输入只要改变一点,输出的hash值就天差地别。2.输入值与输出值之间没有规律,无法反推。
  • 难度Difficulty:整个网络调整难度来控制生成工作量证明所需要的计算力,随着难度增加则会启用超额随机数
  • 难度目标:是整个网络大致10分钟产生一个区块所需要的难度数值即为难度目标。Bits是用来存储难度目标的16进制数值。Bits越小,难度越大,越难挖矿
  • 难度重定:经过2016个区块就调整难度值,新难度值依据前面的2016个重新计算

    区块结构

  • 区块头,区块体
  • 区块体:交易详情,交易计数器,区块大小
  • 区块头:每个区块的前80个字节:1.版本号4个字节。2.前一个区块的hash32个字节。3.本区块前所有交易的默克尔根32字节4.时间戳4字节。5.难度目标Bits4字节。6.随机数Nonce4字节

    默克尔根及默克尔树

  • 存储hash值的一棵树
  • 按手续费高低排序
  • 将交易信息打包后两两哈希,碰到拿到单数就复制自己再hash
  • 不停地递归hash一直到树根

    挖矿原理

  • 重复计算区块头的hash,不断修改随机数Nonce,直到小于难度目标Bits计算出来的Hash