人人都说的比特币挖矿,到底是在挖什么?
编者按:随着新一代科技革命浪潮的到来,区块链(Blockchain)作为一项关键技术,在全球互联网领域内快速升温。在中国,区块链也被看作核心技术自主创新的重要突破口,各行业相继开始寻找区块链赋能本领域的方法,以求助力解决发展痛点和难点。区块链到底是什么?如何运作?它的价值又如何体现?我们将以GISer的视角,陆续推出「区块链」科普系列文章,为大家普及相关知识,分享区块链和IPFS的相关应用,后续更新敬请关注!
本文作者为中国信息通信研究院(工信部电信研究院)专家敖萌博士,雷锋网独家特约文章,雷锋网与信通院联合首发。
比特币最迷人的地方就是挖矿。为什么挖矿这么迷人?因为挖矿能获得比特币。笔者写这篇文章的时候,比特币价格是3900美元,如果能挖到一个区块,就能获得48750美元的挖矿收入和约6000美元的交易手续费收入,是不是非常迷人?
那么到底什么是挖矿?矿工又如何通过挖矿获得比特币?这需要从比特币区块链系统采用的PoW(工作量证明)共识机制说起。
PoW(工作量证明)共识机制
先讲一个故事:
有一个村子,这个村子里很多事情都需要大家一起决策。比如,某天,村长需要全体村民一起决策今天中午村里的大食堂是做包饺子还是擀面条。通常,我们能想到的方法就是投票——每个村民一票,少数服从多数。但是有些村民并不想在食堂吃饭,所以他可能就会把票送给别人,这样就有可能不公平,在食堂吃饭的大多数人可能没有实现他们的愿望。
于是村长换了一种办法,他在10点50的时候,向全体村民广播:“大家来选择食堂中午是做饺子还是做面条,想来食堂吃饭的人,就去食堂门口推巨石,11点整,石头被推到了大门东边,中午就吃饺子;推到了大门西边,中午就吃面条。”
于是想去食堂吃饭的人,都去推石头。出力多的人群最终实现了自己的愿望,出力少的人群也心甘情愿。
这个故事讲了一种实现人群共识的方式,我们可以称它为“工作量证明机制”。利用出力的多少,来证明自己的选择意愿。
区块链系统能够让所有人的账本保持一致。这种让所有节点数据保持一致的机制,我们称之为共识机制。采用不同的共识算法,能够实现不同性能的共识效果,其最终目的都是保持数据的一致性。
记录工作量证明,不可篡改
在比特币系统中,记录交易是系统工作的基础方式。在比特币区块链系统中,区块是记录交易的最基本容器。比特币(BTC)目前区块大小限制为1MB,(近期诞生的一种新的虚拟货币——比特币现金,BCC,这个区块目前大小限制是8MB)。由于区块的大小有限制,因此每个区块所能容纳的交易数量也具有一定限制。目前,比特币系统规定平均每10分钟产生一个区块,因此,矿工工作的方式实质上就是在10分钟内收集网上产生的所有交易,然后将交易填到一个区块里。这个区块大约如下表所示:
注意第一条,在任何区块里,第一条都是没有转出地址的,也就是所谓的挖矿交易(CoinBase)。没有任何人付给矿工这笔钱,矿工只是理所应当的写上自己获得了12.5比特币。所有节点都认可矿工这样写,因此矿工就得到了挖矿收入。
不同的矿工在填写区块的时候,数据一定是不一样的,因为每个矿工的第一条肯定不一样,矿工只会把挖矿收入转入自己的地址。所以矿工Michael的CoinBase是“Michael获得了12.5比特币”,矿工Nancy的CoinBase是“Nancy获得了12.5比特币”。
每一个矿工都把自己收集到的交易和自己该获得的收入填好了,那么,到底谁的记录才会被大家认可呢?比特币就采用工作量证明机制,让矿工互相间竞争求解一个数学题,谁先解出来,谁的区块就会被所有人认可。其与开篇故事中的村子一样,每个矿工都在努力地堆砌巨石,一旦石头把自己记录的那一页账目压住了,他即可大喊一声,“我的工作量证明成功了,你们快来看!”全体矿工都过来把那一页账目抄写一份,贴在自己账本的最后面,然后又开始新的记账过程。周而复始,生生不息,账本一页一页的增加,越来越厚。
“中本聪”决定采用工作量证明机制的时候,出发点是避免系统受到攻击。“中本聪”认为,如果一个攻击者想用搞乱账本的方式来进行攻击,那么他就需要足够的计算能力。也就是说,他要比大多数推石头的人的力量更大。这样,他需要付出巨大的成本,但是换回的收益并不足以抵消成本,因此攻击者是没有攻击比特币系统的经济学动力的。
与推石头的方式不同的地方在于,比特币中是大家一起通过穷举结果的方式,来求解一个数学题,并不是算力强的人每次都会赢,因为有人可能很幸运,瞬间就可以搜索到答案。而算力强的人,可能这次没那么幸运,穷举了很多次也没有碰到解。但从概率上看,求出答案的次数和自己在整个比特币网络中算力的比例是一致的,也就是说,如果一个矿工拥有了全网30%的算力,那么基本上在1000分钟(产生了100个区块)里,有30个区块都是他找到的答案,那么,他就获得了30%的挖矿收益。
但目前,由于比特币价格越来越高,推石头的人已不满足于自己去推了,而是把家里的骡子、马都派去干活。在“中本聪”最初的设计里,一个CPU一票,用算力来决定哪个矿工记的账可以成为最终的账目。随着比特币价格的增高,开始出现了GPU挖矿,后来人们又不满足于GPU的速度,开始制造专用芯片挖矿。专用芯片在计算比特币问题的能力上是普通CPU的数万倍,因此现在比特币已经不是“一个CPU一票”了,这也背离了当初“中本聪”的设计,比特币网络已基本上被几大矿池所垄断,背离了去中心化货币这一初衷。
51%算力攻击(51% force attack)
PoW共识机制是以算力作为竞争条件,因此如果有人掌握了全网51%的算力,那么他就有算力优势修改或撤销自己已经发生的付款行为。因为他的算力优势可以让他更快的计算出区块链网络中需要的随机数,从而拥有产生下一个区块的权力,又称挖矿。
那么拥有51%算力可以做哪些事情?可以修改自己的交易记录,完成前面说的双花攻击;阻止其他矿工开采到有效的区块;阻止区块确认交易。
但有些事情即使掌握51%算力也无法改变。比如:无法修改其他人的交易信息;无法阻止交易被广播,最多出现已发出交易但是确认为0而已;不能凭空产生比特币,不能把不属于自己的比特币发送给自己。
例如,某人现在拥有51%以上的算力,有A和B两个账户,现在正常的区块高度为5。首先,某人生成一笔交易,将A账户的钱都转给B账户,这笔交易放在区块高度为6的区块上,并且不向全网广播这笔交易。与此同时,某人把A账户中的比特币都兑换为美元,这笔交易记录在区块高度5中,此时他拿到了美元。这时他开始广播区块6,由于其区块链最长,因此全网络会确认他的区块链是正确的,其他的区块链则要回滚,但他的美元已提出,损失的将是整个交易市场。多次51%攻击后,会严重损害大家对该系统的的信任度。因此,该区块链已失去存在的意义了。
现在的比特币网络还会经历51%算力攻击么?基本不存在,因为付出远大于收益,那么就没有动力了。
注:本文转载自雷锋网,其中“51%算力攻击”部分出自《区块链上双花攻击、51%算力攻击是什么?》一文。
2020 GIS 软件技术大会,点击上图即刻报名!
▼
欢迎转载~