这是一个关于矿工挖矿的故事

上次故事说到由区块与链组成的区块链,这次要来聊聊执行这浩大工程背后辛苦挥汗(缴电费)的矿工们。

区块链技术博大精深,本文会尽量以深入浅出的方式,带领大家逐步认识区块链技术从浅到深的原理。

矿工究竟是谁?其实矿工就存在你我之中!还记得区块链是将资料存在分散的节点上吗?每个节点可代表一台电脑或伺服器,而这电脑前都有一个宅宅…不!是志向伟大的网民在操作,这些网民就是我们的矿工!矿工的主要任务有三项:(1)打包交易纪录造区块、(2)将区块传给其他节点验证、(3)节点们确认该区块无误,将区块上链。

上篇故事已经说明打包交易纪录造区块的步骤,但在继续解释矿工的任务前,我们需要先了解造区块之前发生的事,才能解释为何矿工在区块链扮演这么重要的角色。

甘道夫(左)的电子帐户地址A要汇1000枚比特币给勒苟拉斯(右)的电子帐户地址B 

当灰袍巫师甘道夫要汇1000枚比特币给精灵勒苟拉斯时,他在电子帐户地址(由数字与英文字母组成的一组随机序号)输入这笔交易,电子帐户地址会产生一对公钥(Public Key)和私钥(Private Key),公钥如同你的Email帐号,大家都可以在公开网路找到你的Email,但私钥就是你的Email登入密码,只能自己知道。私钥的功能就像帮这笔交易上锁和签上专属的数位签章,公钥则是解锁。甘道夫把他汇钱的交易用私钥上锁并封上自己的数位签章,接着在区块链上广播这个交易的消息,此时,该笔交易会先进入区块链上的「待确认交易区」,等待矿工取走验证。通常附上的手续费越高,越快被矿工挑走打包。

换个角度看,私钥代表资产的「支配」权,而公钥则是资产所有权的「确认」。拥有私钥的主人可以支配这个帐户下的钱要转去哪里,公钥则无法,只能确认这个帐户的主人是谁,但是区块链只认私钥不认人,因此私钥务必保管好!

矿工通常会希望一个区块装进越多笔交易越好,因为打造一块区块和上链要价不斐,耗时又耗电,不过在比特币区块链上,一个区块的容量上限是1MB,而且矿工不是每笔都会挑进他的区块,会优先挑出手续费较高的交易,因为可以赚进比较多钱。矿工也有自己的挑选程式来找寻报酬率较高的交易,但挑选交易并不是先抢先赢,每位矿工都可以挑同一笔交易进他的区块,真正先抢先赢的时机在后面上链的时候。

假设矿工矮人金雳挑了甘道夫这笔交易,他会用甘道夫的公钥去核对交易,验证是否真的来自甘道夫本人的指令,而不是骇客半兽人的假讯息。私钥上锁加密的交易内容,可用公钥来还原,但你可能会有疑问,如果我交易内容都被人看光光了,不就没有隐匿性?这就要提到区块链的特性之一:匿名性,后来也成为监管机构担忧之处。在比特币区块链上的交易都是匿名的,有的只有汇出的电子帐户位址A和汇入的电子帐户位址B,所以甘道夫与勒苟拉斯的交易在区块链上只看的到A转帐给B,A和B背后的藏镜人是谁,除了本人以外,大家都不会知道。

由于一对私钥和公钥是由数学式算出相对应的钥匙,公钥A只能打开私钥A上锁的文件,如此一来,矿工就可以确认这笔资料是来自电子帐户A(甘道夫)。接着,矿工确认甘道夫过去的交易纪录,他的帐户结余是否足够支付要汇出的1000枚比特币。

矿工收到交易广播后会确认:

1. 该笔交易是否来自帐号A本人传输的

2. 帐号A的余额是否有足够的钱

矿工验证该笔交易是否来自帐号A本人传输的,还是来自黑客半兽人的攻击

两道步骤确认完后,矿工便把这笔交易放入准备打包的区块内,下一步开始造区块,也就是开始挖矿啰!挖矿过程类似解数学谜题,还记得上一篇区块与链的故事里,有一块黑的令人看不透的Nonce和游戏规则Difficulty吗?就是Hash Function加密步骤,矿工拿区块链上最后一个区块的Hash值加上新交易资料,然后要猜Nonce是什么,让产生出来的新Hash值小于/等于Difficulty,因此所谓「挖矿」 ,就是挖出这个Nonce到底是多少的过程。

新Hash值(新区块)5 =前Hash值(上一个区块)1 +新交易资料2 + Nonce(加密)3 ≤ Difficulty(游戏规则)4 

Nonce是一个不断改变的随机数,加入密码学SHA-256运算,最后算出以0为开头(又称为前导零)的Hash值,如果这个Hash值符合Difficulty,就代表成功解出Nonce。如果不符合Difficulty要求,则通过递增Nonce的值,重新运算。一个符合Difficulty的Hash值是由N个前导零构成的,而几个零就取决于当时区块链网络中的Difficulty,前导零的数目越多,就代表越难。

根据https://www.blockchain.com/explorer的最新比特币区块显示(截至2018–11–20 06:54:09),目前Hash值有18个前导零,理论上需要尝试62的18次方次才能解出[注1],矿工需要投入大量的运算设备、电力,才能产生如此庞大的运算量来猜到这个Nonce。

Difficulty的目的除了确保加密的安全性外,也为了控制新区块产生的速度,目前比特币区块链是控制在每10分钟产生一块,如果新区块生成速度变快,区块链就会提高Difficulty ,增加挖矿难度,让速度趋缓,反之亦然。

这整个过程就是「工作量验证」(Proof-of-work, POW),谁工作效率最好,谁就是赢家。在比特币区块链上,需要使用CPU的运算能力[注2],不断的猜Nonce、不停的算Hash值,而算力非常依赖电力[注3]。大家可能听过学生在学校宿舍偷挖矿,让宿舍电费暴涨的新闻吧!根据数位货币网站「Digiconomist」资料,比特币每笔交易使用的电力为944千瓦小时(KWh),相当于中国小家庭三个月的用电量[注4]。

比特币区块链只有一条,如何决定谁可以接上下一块区块?此时来到紧张刺激的时刻了,要能够上链,除了猜对Nonce外,还要比谁最快解出Nonce,因此可以说是谁的算力最强,谁越有机会最快解出Nonce!这个规则衍生出矿池、矿场,以及51%算力的双花攻击等议题,我们后续再一一述说。

看完以上Nonce和Difficulty的介绍有没有觉得头很晕?看不懂也没关系,主要想让读者感受一下,挖矿真的是很耗能源的网路活动。

第一名的矿工成功解出Nonce后,假设是我们的矿工矮人金雳,他会把这个成功的区块广播给区块链上其他节点的矿工检查,确认该区块是否真的是最快的,且符合Difficulty的规则。确认无误后,多数矿工便同意和承认这个区块可以上链,这个过程就是「共识决」(Consensus),并把这个消息再次广播给其他节点,而金雳除了获得手续费外,还可以得到比特币区块链的挖矿奖励。

矿工赚什么?

1. 交易的手续费:使用者付费,由交易发起人(甘道夫的帐号A)支付,预设是฿ 0.00001/KB,但可自行加价,如同急件要付比较贵的费用。

2. 区块链的奖励:现在每一笔成功上链的区块可获得12.5枚比特币[注5]。

一「工」欢乐几「工」愁,那没抢赢上链的矿工怎么办?其实也不能怎么办,当其他也在挖矿的矿工们,收到矿工共识的新区块广播后,只能丢下原本的区块,重新回到「待确认交易区」挑选新交易打包,继续抢挖下一块区块。原本解密到一半所耗费的算力和衍生的电费也就这样付之一炬了,其实真的满浪费能源的。

最后我们再重整一下矿工在区块链的任务运作:

打包交易-->打造密码区块-->区块上链

矿工的任务看似可简单分成三个阶段,但每个阶段消耗的算力/电力是肉眼看不到的(只有看到电费帐单的当下会有深刻的感触),可是区块链技术的应用不只如此,也不应只有如此,它的去中心化乃至分散式储存的概念,反而有助于达到节省能源,将算力和储存空间的存取发挥到最大价值,我们将在下一篇故事介绍区块链文章中常被省略,因为也比较复杂,但其实很重要的默克尔树(Merkle's Tree),这棵树也是未来取代HTTP的IPFS星际档案系统中,很重要的底层技术之一。

51%的双花攻击故事也会在后面故事和大家分享!

是默克尔的树,不是德国总理梅克尔的树(照片出自:http://www.merkletrees.org/)

注1:可参考「区块链Blockchain —共识机制之工作量证明Proof-Of-Work」的公式(https://www.samsonhoi.com/360/blockchain_proof_of_work)

注2: 随着炒币热潮,矿工升级工具到GPU图形处理器/显卡、FPGA,速度更快、算力更强,更因应市场需求而有ASIC专业矿机的诞生,其组成的矿池可集结庞大的算力。比特币区块链中以中国的比特大陆(Bitmain)和澳洲的澳本聪为首,最近的币圈大事,就是两大矿主为了比特币现金(BCH)的硬分叉正式掀起算力大战。这样算力集中的状况,其实也违反了区块链去中心化的精神,演变成谁的算力大、谁说话的局面。

注4:参考出处:吃电巨兽!比特币每笔交易耗电中国家庭可用3个月

注5: 比特币总额限制为2,100万个比特币,每创造出21万个区块,矿工获得的比特币奖励就会减半。最近一次减半发生于2016年7月,此后挖出一个区块仅能获得12.5枚比特币奖励。

本文链接地址:https://www.wwsww.cn/btbkuangye/5744.html
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。