【区块链入门】区块链里挖矿的小矿工们
区块链技术广大博深,本篇文章将介绍区块链背后矿工(网民)的操作及其如何透过线上交易获利。一起来聊聊执行这浩大工程背后辛苦挥汗(缴电费)的矿工们。
矿工究竟是谁其实矿工就存在你我之中!还记得区块链是将资料存在分散的节点上吗每个节点可代表一台电脑或服务器,而这电脑前都有一个宅宅…不!是志向伟大的网民在操作,这些网民就是我们的矿工!
矿工的主要任务有三项
打包交易纪录造区块 将区块传给其他节点验证 节点们确认该区块无误,将区块上链
在继续解释矿工的任务前,我们需要先了解造区块之前发生的事,才能解释为何矿工在区块链扮演这么重要的角色。
甘道夫(左)的电子帐户地址A 要汇1000 枚比特币给勒苟拉斯(右)的电子帐户地址 B
当灰袍巫师甘道夫要汇1000 枚比特币给精灵勒苟拉斯时,他在电子帐户地址(由数字与英文字母组成的一组随机序号)输入这笔交易,电子帐户地址会产生一对公钥(Public Key)和私钥(Private Key),公钥如同你的Email 帐号,大家都可以在公开网络找到你的Email,但私钥就是你的Email 登入密码,只能自己知道。
公、私钥的区别
公钥的功能是解锁,私钥则像帮这笔交易上锁和签上专属的数位签章。甘道夫把他汇钱的交易用私钥上锁并封上自己的数位签章,接着在区块链上广播这个交易的消息,此时,该笔交易会先进入区块链上的待确认交易区,等待矿工取走验证。通常附上的手续费越高,越快被矿工挑走打包。
换个角度看,公钥代表资产所有权的确认,而私钥则是资产的支配权。拥有私钥的主人可以支配这个帐户下的钱要转去哪里,公钥则无法,只能确认这个帐户的主人是谁,但是区块链只认私钥不认人,因此私钥务必保管好!
矿工通常会希望一个区块装进越多笔交易越好,因为打造一块区块和上链要价不斐,耗时又耗电,不过在比特币区块链上,一个区块的容量上限是1 MB,而且矿工不是每笔都会挑进他的区块,会优先挑出手续费较高的交易,因为可以赚进比较多钱。矿工也有自己的挑选程式来找寻报酬率较高的交易,但挑选交易并不是先抢先赢,每位矿工都可以挑同一笔交易进他的区块,真正先抢先赢的时机则在后面上链的时候。
假设矿工矮人金雳挑了甘道夫这笔交易,他会用甘道夫的公钥去核对交易,验证是否真的来自甘道夫本人的指令,而不是骇客半兽人的假讯息。由私钥上锁的加密交易内容,可用公钥来还原,但你可能会有疑问,如果我交易内容都被人看光光了,不就没有隐匿性这就要提到区块链的特性之一:匿名性,后来也成为监管机构担忧之处。
在比特币区块链上的交易都是匿名的,有的只有汇出的电子帐户位址A 和汇入的电子帐户位址B,所以甘道夫与勒苟拉斯的交易在区块链上只看的到A 转帐给B,A 和B 背后的藏镜人是谁,除了本人以外,大家都不会知道。
骇客半兽人的攻击
由于一对私钥和公钥是由数学式算出相对应的钥匙,公钥A 只能打开私钥A 上锁的文件,如此一来,矿工就可以确认这笔资料是来自电子帐户A(甘道夫)。接着,矿工确认甘道夫过去的交易纪录,他的帐户结余是否足够支付要汇出的1000 枚比特币。
矿工收到交易广播后会确认:
该笔交易是否来自帐号A 本人传输的 帐号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),并把这个消息再次广播给其他节点,而金雳除了获得手续费外,还可以得到比特币区块链的挖矿奖励。
矿工赚什么
交易的手续费:使用者付费,由交易发起人(甘道夫的帐号A)支付,预设是฿ 0.00001/KB,但可自行加价,如同急件要付比较贵的费用。 区块链的奖励:现在每一笔成功上链的区块可获得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而上链赚奖金。
声明:本站所提供的资讯信息不代表任何投资暗示, 本站所发布文章仅代表个人观点,仅供参考。