比特币(6):挖矿

比特币(1):从一个简单支付场景说起

比特币(2):私钥、公钥和地址

比特币(3):交易详解

比特币(4):网络架构

比特币(5):区块链数据结构

如果把比特币比喻为「虚拟黄金」的话,那么比特币的挖坑,你好比当年美国淘金热时,成千上万的淘金者去美国西部淘金的事迹。淘金者付出体力,获得金子;挖矿者付出算力,获得比特币。

比特币是一种总量恒定且通货紧缩的电子货币。总量恒定是指比特币总共只有2100万个,到2140后就不会再产生新的比特币。通货紧缩是指新产生的比特币的数量每4年减半,2009年1月比特币诞生的时候每个区块奖励50个比特币,然后到2012年11月减半为25个比特币,在2016年再次减半为12.5个比特币。基于这个公式,比特币挖矿奖励以指数方式递减,直到2140年为0。因此比特币在这点上和各国央行发行的法币是有本质区别的,不用担心政府滥发货币导致个人资产缩水。

比特币挖坑的过程简单说就是:矿工使用挖矿节点尝试解一道数学难题,谁先解出来谁就能获得新产生的比特币和交易费。具体过程如下:

1.整合交易至候选区块

挖矿节点不断监听比特币网络中的交易信息,并将这些交易信息暂存到自己的内存池里,挖矿节点会根据以下信息对这些交易进行排序:

1)优先选择「块龄」更大的交易,「块龄」是指自该交易被记录到区块链为止所经历过的区块数,即这个交易在区块链中的深度。简单说,就是会优先处理那些旧的交易,这样确保即使没有交易费的交易最终也能得到确认,只是要等的时间比较长一些。

2)优先选择相对交易费更高的交易,也就是说出的交易费越高,越有可能越快得到确认。因此如果你想你的交易被尽快确认,应该主动多付些交易费。

挖矿节点根据上述条件排序后生成候选区块,同时会在候选区块里加入一笔特殊的交易-「Coinbase交易」,该交易是候选区块的第一笔交易,它会把新产生的比特币(当前是12.5个)和交易费发送给矿工的地址,是给矿工挖矿的奖励。

2.求解数学难题使候选区块成为合法的新区块(PoW)

构建候选区块完毕后,矿机就要开始使用PoW(Proof of Work,工作量证明)算法来获得一个正确的nonce值,来向全网证明新区块是它挖的。

所谓的PoW算法其实并不复杂,假设你是一个矿机,你会不断的尝试改变nonce值,并计算区块头的哈希值,如果你足够幸运,算出的哈希值正好小于难度值,说明你的这个nonce值是有效的,表示你成功挖到矿了,于是你会迅速的向全网广播,告诉大家这个区块我已经挖到了,你们继续挖下一个吧。但现实更多的情况是,你尝试了成千上亿次后,还是没有猜出有效地nonce值,却收到了其它矿工发来的通知说他已经挖到了,于是你只好放弃之前的所有工作,继续尝试挖下一个区块。上述描述的整个过程大概每10分钟会重复一次,生生不息,永不停止。

看到这里,相信很多人会有以下两个疑问。

第一个疑问是「我难道只能不断尝试不同的nonce值这种暴力破解的笨办法吗?是否存在更好的办法呢?」。我可以明确的告诉你,数学家已经证明没有比暴力破解更好的办法,所以这也是很多人诟病比特币不环保、空耗大量算力的原因,但这也是比特币能够维持一个去中心化共识的根本原因。

第二个疑问是「难度值是如何确定的?」。比特币为了确保平均每10分钟出个新区块,它必须能够动态调整难度值,起初由于全网算力很小,因此难度值也比较小,但随着全网算力越来越大,难度值必须不断动态增大才行。但大家知道比特币是去中心化的,也就是说从来没有一个中心可以动态调整难度值,那比特币是怎么做到的呢?它把难度值的调整交给了每个全节点(什么是全节点可参考「比特币(4):网络架构」),具体是这样的:每2,016个区块调整一次难度值,难度的调整公式是由最新2,016个区块的真正花费时长与20,160分钟(两周,即这些区块如以10分钟速率所期望花费的时长)比较得出的,如果发现平均时长小于10分钟,说明之前的难度值过小,需要加大难度,反之亦然。

3.区块链分叉

上述描述的基于PoW算法的挖矿过程可能会产生这样一种状况:假设矿工A挖到了新区块,但由于比特币的节点分布在全球各地,网络传输需要一定的时间,所以在他向全网广播的过程中,正好又有一个矿工B挖到了新区块,他也会向全网广播他挖到的新区块,这时就会出现两个新区块互相竞争的情况,这就是区块链分叉。

那么比特币是怎么解决分叉的问题呢?答案是暂时不解决,就让分叉存在着,相信时间最终来解决。也就是说,这时候比特币网络被分成了两派,一派基于A继续挖新区块,另一派基于B继续挖新区块,随着时间的推移,一定会出现其中一个分叉成为主链,另外一个分支慢慢被放弃。注意:这里谁能成为主链,并不是简单的基于谁先挖到算谁的,而是谁后续能获得大多数节点的认可。

这样又会带来两个问题:

问题1:有可能导致已被确认的交易被取消。比如上述例子我们假设A成为了主链,B被抛弃了,那么B挖到的这个新区块,虽然已被确认是有效的,但由于不是主链,最终会被抛弃,也就是说B创建的这个新区块上的交易都失效了。这也是为什么虽然比特币平均每10分钟生成一个区块,但一个交易真正被确认需要60分钟,因为一般认为经过后续6个区块的确认后,基本就很难被取消了。

问题2:有可能受到51%的算力攻击。假设有个人或机构非常强大,他能控制比特币全网51%的算力,就可能随意强行分叉,并让他的链总是成为主链,那么比特币的共识就崩溃了。虽然理论上存在这样的可能性,但由于现在比特币全网的算力过于强大,想要控制51%的算力,几乎不可能,美国总统都做不到。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容