【区块链入门】区块链里挖矿的小矿工们

区块链技术广大博深,本篇文章将介绍区块链背后矿工(网民)的操作及其如何透过线上交易获利。一起来聊聊执行这浩大工程背后辛苦挥汗(缴电费)的矿工们。

矿工究竟是谁?其实矿工就存在你我之中!还记得区块链是将资料存在分散的节点上吗?每个节点可代表一台电脑或服务器,而这电脑前都有一个宅宅…不!是志向伟大的网民在操作,这些网民就是我们的矿工!

矿工的主要任务有三项

  1. 打包交易纪录造区块
  2. 将区块传给其他节点验证
  3. 节点们确认该区块无误,将区块上链

在继续解释矿工的任务前,我们需要先了解造区块之前发生的事,才能解释为何矿工在区块链扮演这么重要的角色。


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

当灰袍巫师甘道夫要汇1000 枚比特币给精灵勒苟拉斯时,他在电子帐户地址(由数字与英文字母组成的一组随机序号)输入这笔交易,电子帐户地址会产生一对公钥(Public Key)和私钥(Private Key),公钥如同你的Email 帐号,大家都可以在公开网络找到你的Email,但私钥就是你的Email 登入密码,只能自己知道。


公、私钥的区别

公钥的功能是解锁,私钥则像帮这笔交易上锁和签上专属的数位签章。甘道夫把他汇钱的交易用私钥上锁并封上自己的数位签章,接着在区块链上广播这个交易的消息,此时,该笔交易会先进入区块链上的待确认交易区,等待矿工取走验证。通常附上的手续费越高,越快被矿工挑走打包。

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

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

假设矿工矮人金雳挑了甘道夫这笔交易,他会用甘道夫的公钥去核对交易,验证是否真的来自甘道夫本人的指令,而不是骇客半兽人的假讯息。由私钥上锁的加密交易内容,可用公钥来还原,但你可能会有疑问,如果我交易内容都被人看光光了,不就没有隐匿性?这就要提到区块链的特性之一:匿名性,后来也成为监管机构担忧之处。

在比特币区块链上的交易都是匿名的,有的只有汇出的电子帐户位址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,前导零的数目越多,就代表越难。


最新比特币区块Hash值

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

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

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

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

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

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

矿工赚什么?

  1. 交易的手续费:使用者付费,由交易发起人(甘道夫的帐号A)支付,预设是฿ 0.00001/KB,但可自行加价,如同急件要付比较贵的费用。
  2. 区块链的奖励:现在每一笔成功上链的区块可获得12.5 枚比特币[注5]。

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

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

打包交易→打造密码区块→区块上链

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


默克尔树(Merkle's Tree)是未来取代HTTP的IPFS星际档案系统中,很重要的底层技术之一

总结

矿工:1.打包交易记录造区块2.将区块传给其他节点验证3.节点们确认该区块无误,将区块上链。
矿工薪水:1.交易的手续费:使用者付费,由交易发起人支付,预设是0.00001/KB。2.区块链的奖励:现在每一笔成功上链的区块可获得12.5枚比特币。
挖矿:挖出区块的Nonce是多少的过程,谁的算力最强,谁越有机会最快解出Nonce而上链赚奖金。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。