上次故事说到由区块与链组成的区块链,这次要来聊聊执行这浩大工程背后辛苦挥汗(缴电费)的矿工们。
区块链技术博大精深,本文会尽量以深入浅出的方式,带领大家逐步认识区块链技术从浅到深的原理。
矿工究竟是谁?其实矿工就存在你我之中!还记得区块链是将资料存在分散的节点上吗?每个节点可代表一台电脑或伺服器,而这电脑前都有一个宅宅…不!是志向伟大的网民在操作,这些网民就是我们的矿工!矿工的主要任务有三项:(1)打包交易纪录造区块、(2)将区块传给其他节点验证、(3)节点们确认该区块无误,将区块上链。
上篇故事已经说明打包交易纪录造区块的步骤,但在继续解释矿工的任务前,我们需要先了解造区块之前发生的事,才能解释为何矿工在区块链扮演这么重要的角色。
当灰袍巫师甘道夫要汇1000枚比特币给精灵勒苟拉斯时,他在电子帐户地址(由数字与英文字母组成的一组随机序号)输入这笔交易,电子帐户地址会产生一对公钥(Public Key)和私钥(Private Key),公钥如同你的Email帐号,大家都可以在公开网路找到你的Email,但私钥就是你的Email登入密码,只能自己知道。私钥的功能就像帮这笔交易上锁和签上专属的数位签章,公钥则是解锁。甘道夫把他汇钱的交易用私钥上锁并封上自己的数位签章,接着在区块链上广播这个交易的消息,此时,该笔交易会先进入区块链上的「待确认交易区」,等待矿工取走验证。通常附上的手续费越高,越快被矿工挑走打包。
矿工通常会希望一个区块装进越多笔交易越好,因为打造一块区块和上链要价不斐,耗时又耗电,不过在比特币区块链上,一个区块的容量上限是1MB,而且矿工不是每笔都会挑进他的区块,会优先挑出手续费较高的交易,因为可以赚进比较多钱。矿工也有自己的挑选程式来找寻报酬率较高的交易,但挑选交易并不是先抢先赢,每位矿工都可以挑同一笔交易进他的区块,真正先抢先赢的时机在后面上链的时候。
假设矿工矮人金雳挑了甘道夫这笔交易,他会用甘道夫的公钥去核对交易,验证是否真的来自甘道夫本人的指令,而不是骇客半兽人的假讯息。私钥上锁加密的交易内容,可用公钥来还原,但你可能会有疑问,如果我交易内容都被人看光光了,不就没有隐匿性?这就要提到区块链的特性之一:匿名性,后来也成为监管机构担忧之处。在比特币区块链上的交易都是匿名的,有的只有汇出的电子帐户位址A和汇入的电子帐户位址B,所以甘道夫与勒苟拉斯的交易在区块链上只看的到A转帐给B,A和B背后的藏镜人是谁,除了本人以外,大家都不会知道。
由于一对私钥和公钥是由数学式算出相对应的钥匙,公钥A只能打开私钥A上锁的文件,如此一来,矿工就可以确认这笔资料是来自电子帐户A(甘道夫)。接着,矿工确认甘道夫过去的交易纪录,他的帐户结余是否足够支付要汇出的1000枚比特币。
矿工收到交易广播后会确认:
1. 该笔交易是否来自帐号A本人传输的
2. 帐号A的余额是否有足够的钱
两道步骤确认完后,矿工便把这笔交易放入准备打包的区块内,下一步开始造区块,也就是开始挖矿啰!挖矿过程类似解数学谜题,还记得上一篇区块与链的故事里,有一块黑的令人看不透的Nonce和游戏规则Difficulty吗?就是Hash Function加密步骤,矿工拿区块链上最后一个区块的Hash值加上新交易资料,然后要猜Nonce是什么,让产生出来的新Hash值小于/等于Difficulty,因此所谓「挖矿」 ,就是挖出这个Nonce到底是多少的过程。
Nonce是一个不断改变的随机数,加入密码学SHA-256运算,最后算出以0为开头(又称为前导零)的Hash值,如果这个Hash值符合Difficulty,就代表成功解出Nonce。如果不符合Difficulty要求,则通过递增Nonce的值,重新运算。一个符合Difficulty的Hash值是由N个前导零构成的,而几个零就取决于当时区块链网络中的Difficulty,前导零的数目越多,就代表越难。
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%的双花攻击故事也会在后面故事和大家分享!
注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
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。