从零到一学懂区块链系列2

记录自己每天学习区块链的一点一滴。这个系列以概念普及、名词解释为主,帮助小白迅速入门,同时也是自己的学习笔记。可能做不到日更,但一定持续输出。

01

什么是矿工&挖矿

挖矿:Mining

我们知道,区块链实际上可以看作一个分布式的大账本,谁都可以在上面记账,但在某个时间点只能有一个人来统一记账,而在比特币网络中,大家把争夺记账权的过程形象地比喻为挖矿,而把争夺记账权的这些人或组织(节点)称之为矿工。


那么什么是争夺记账权呢:是不断重复SHA256算法(一种哈希算法)产生工作量证明,在10分钟内,找到一个值和上一个区块的哈希值以及10分钟内验证过的新交易记录合起来可以匹配出的最小的哈希值的过程。由于哈希计算结果的随机性,这个计算过程没有办法优化且无法反推,只能从零开始一直往上运算,也就是随机尝试,谁的算力强,谁就能优先找到这个最小的哈希值,获得记账权,然后将过去一段时间(比特币网络中是10分钟)发生的、尚未经过网络确认的交易信息收集、检验、确认,最后打包成一个无法被篡改的区块连接到主链上。


再简单一点,就是全网所有的节点都去做一道穷举随机数的算法题,谁先算出来谁就可以打包全网过去一段时间内所有的交易信息并成为主链的一部分,随后所有节点再在此基础上去算下一个数。

02

矿工&挖矿有什么用

我们知道,比特币是一个去中心化的电子现金系统,没有了传统的中心机构的维护,只有矿工在自愿维持系统的安全和稳定,于是就要给那些参与记账的志愿者,也就是矿工一些代币奖励,让他们能更加自觉自愿地维护系统。所以矿工的存在对于比特币网络而言,是整个系统的维护者,对使用比特币网络的用户而言,矿工又充当了官方的角色——对交易进行打包,而对矿工本身而言,自己又是比特币区块链的参与者。区块链就是这么神奇的世界,你既是参与者,又是运营者,同时还是共建者。


而挖矿有什么用呢?获得比特币的三种正常途径之一就是挖矿,比特币每10分钟出一个块,每挖到一个块会奖励矿工比特币,最初是每成功抢到一个块奖励50个比特币,比特币的规模每达到21万的整数倍(约4年)奖励会减半,2012年减少至25个,2016年减少至12.5个比特币。所以挖矿的行为可以看做是代币的分发,同时,也维持了比特币区块链的稳定运转。

未来已来,

只是尚未流行。

区块链

03

如何成为一名矿工&如何挖矿

早期参与者少,全网算力低,个人通过计算机的显卡甚至CPU(中央处理器)就可以轻易挖矿。但随着矿工越来越多,全网的算力也越来越高,你一个人在家想用一台电脑挖矿已经是不可能的事情了,所以矿工们就自己构建矿池来挖矿,由矿池统一协调和分配挖矿所得收益。因此也催生了两个相关产业的蓬勃发展:比特币矿机、矿池以及专用的挖矿芯片。

04

挖矿的意义

挖矿虽然可以发行新币、防止了作弊的产生、维护系统的支付功能、保证系统的运行安全。但挖矿这个行为本身就消耗了大量的算力和电力,浪费了那么大的算力和电力只是为了去求解SHA256算法,只能是是有利的同时也有弊,只能辩证地去看待挖矿本身的意义了。


下一节学习内容:地址

PS:关于写作的一点看法:


我爸爸吃了语文不好的大亏,所以在我上小学一年级的时候,他就要求我每天写日记,即使都认不全字,也得用拼音代替,每天写个两三句的流水账,他还要检查。当时觉得最痛苦的事情莫过于写日记了,从三年级语文课要写作文开始,我爸爸又给我买了很多作文书来看,当时没有手机电视电脑,没事干的时候我居然会一遍一遍不停地翻作文书看,因为作文也是一个一个的小故事啊。从此以后,爸爸再也没有担心过我的学习(此处应有笑声)。


其实我想说的是,每天写日记培养了我敢于写作的习惯,而不断地研读作文书锻炼了我写作的逻辑和技巧。写作开始于写,而后才是作。

想一想学英语不也是这个道理,首先你得敢于开口说,然后才去纠正语法发音。


完结撒花!!


注:本文首发于支点,同步更新于公众号(siweishushe)和我的简书(努力的可乐)。学习笔记,不设版权,如若转载,请注明作者:可乐。


©著作权归作者所有:来自51CTO博客作者mb5fe18f5282239的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 【从零到一学懂区块链】——区块
  2. 从零到一学懂区块链(4):密钥
  3. 从零到一学懂区块链(5):工作量证明
  4. 从零到一学懂区块链(3):地址
  5. 从零到一学懂区块链(6):哈希函数
  6. php构建一个区块链(含源码)
  7. 千呼万唤 HTML 5 (2) - 区块元素

随机推荐

  1. 深入分析java中的反射机制
  2. java集合系列(7)Stack
  3. Qt on Android,输入法弹出后,界面无法自适
  4. 设计模式之抽象工厂模式
  5. 深入理解java中的泛型机制
  6. 设计模式之建造者模式
  7. 设计模式之迭代器模式
  8. Android(安卓)setTag方法的key问题
  9. java关键字系列(7)instanceof
  10. Android(安卓)Handler,Looper,MessageQue