华特东方吧 关注:36贴子:164
  • 6回复贴,共1

【普及】比特币挖矿是怎么运行的?

只看楼主收藏回复

比特币节点互相连接时,会从对方处获取自己没有的交易。但由于比特币长期积累天量的交易,两个节点逐条对照你缺了哪些交易/我缺了哪些交易,是非常困难的事情。
为解决这一难题,中本聪发明了区块链(Block chain)这一重要技术。节点借助区块(block)来同步交易,保证了所有节点数据的统一性,并通过竞争区块打包权(也就是挖矿)的方式,保证了区块链的唯一性。


1楼2019-06-13 14:15回复
    ② 以区块为单位同步交易数据
    区块从1开始编号,因此节点A连接节点B后,只要检查双方的区块编号高度,就能方便地同步交易数据。例如节点A自己的区块高度是100,发现节点B的区块高度是110,则只要向B请求同步101~110这10个区块即可。


    3楼2019-06-13 14:16
    回复
      ④ 对区块打包权的竞争
      节点打包交易只需要消耗很低成本的网络和计算资源,打包奖励的存在(目前每个区块的打包奖励25比特币约为4万元),使得有大量节点想打包交易。为保证区块链的唯一性,比特币规则规定:节点使用类似“扔硬币”的方法争夺交易打包权。节点不断地扔硬币,谁首先扔出符合规则的结果,谁就能获得这个区块的交易打包权,以及这个区块的打包奖励。


      5楼2019-06-13 14:16
      回复
        ⑤ 竞争交易打包权的方式
        “扔硬币”在实现上是计算机做一次哈希(SHA-256)运算,并检查运算结果从第一位开始是否有足够多连续的0(可以简单理解为一次扔256个硬币,然后看从第一个硬币开始是否有足够多的连续硬币正面)。“扔硬币”获胜的唯一诀窍是提高每秒扔硬币的次数,一个每秒能扔100亿次硬币(做100亿次哈希计算)的节点,抢到打包权的概率是每秒扔1亿次硬币节点的100倍。


        6楼2019-06-13 14:16
        回复
          ⑥ 获胜节点打包交易并广播
          一旦有某个节点扔出符合系统规则的硬币结果(例如区块379543的哈希值 000000000000000008bdeb575056584429ea4be876ea7ca4ce70262d3edb8c8b),他就会立即将这段时间搜集到的交易打包成一个区块,附上“扔硬币”的结果、区块序号379543、上一区块关系等附加信息广播出去,其它节点一旦收到区块379543并验证无误,就会停止“扔硬币”抢这一区块,转而在这一区块的基础上开始“扔硬币”抢下一区块379544。


          7楼2019-06-13 14:16
          回复
            ⑦ “挖矿”和“矿工”的由来
            节点大量进行哈希计算需要计算机设备,并消耗大量电力,这个过程在本质上和金矿挖矿很相似(通过挖矿设备,消耗能源换取黄金)。比特币总量恒定,产量越来越少的产生方式也和黄金很相似。
            因此人们形象地将比特币抢打包权的过程称为挖矿(mine),将抢打包权的比特币节点称为矿工(miner)。


            8楼2019-06-13 14:16
            回复
              以上内容转载自大神江卓尔希望大家都能学习


              9楼2019-06-13 14:17
              回复