比特币原理(三):工作量证明(POW)与挖矿

上篇文章中,我们解释了比特币的账户系统,今天来看看记账权限的界定是如何完成的。

我们知道,传统世界中,记账权限是完全交由中央银行去处理的,哪笔交易有效,哪笔交易无效,都由它来界定。
但在比特币的世界里,记账是由很多平行节点来完成,这些节点之间并没有权限的高低之分,也没有信用一说,都是网络中的一个个体。

这种情况下,记账这一行为就会带来分歧,网络中这么多节点当中由谁负责下一个记账呢?谁来界定有效与无效呢?
我们需要一种算法,这种算法既保证了每个节点都可以参与,也可以随时验证,同时毫无捷径可走。

于是出现了工作量证明 - Proof of Work算法,中本聪将其应用到了比特币当中。

哈希-Hash

为了讲解POW,我们要弄清楚哈希的概念。

Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。
这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。

哈希的性质:

  • 不同的输入值,会通过算法出现不同的输出值。(有可能出现同样的输出值,称之为碰撞)
  • 无法根据输出值推断输入值。

我用“bitcoin”得出计算哈希值的话,我们就会看到:

假如我稍微变化“bitcoin”这段文字,比如后面加个“1”,我们就会看到:

可以看到不管输入什么值,最后的输出值为衡长的字符串。

大家可以在这个网站上试试哈希:http://www.kjson.com/encrypt/hash/?fm=map

工作量证明 - Proof of Work

一个区块里有一些什么信息呢?假如当前的区块链高度为9999,现在需要计算第10000个区块的数据,那么第10000个区块可能是这样的:

当前区块高度:10000
前一区块哈希:00001425cd88cbc87a6eee5ec70cfce3a8ab38fcabb92122a9
时间戳:2018-09-15 10:04:45
交易内容:
A -> B 转移 10 BTC
C -> D 转移 20 BTC
Nonce:待计算
当前区块哈希:待计算

从区块里我们可以看到:Nonce、当前区块哈希、时间戳是变动信息,而交易内容与前一区块哈希为固定信息。

当前区块哈希 = Hash(交易内容 + 前一区块哈希 + 当前区块高度 + 时间戳 + Nonce);
挖矿难度 = 哈希的前4位数为0;

if ( 当前区块哈希 == 挖矿难度 )
  {
    Nonce 有效;
    当前区块哈希 有效;
  }

它将 固定信息 - 交易内容 + 前一区块哈希 + 当前区块高度变动信息 - 时间戳(根据计算时间变更) + Nonce 作为整段内容进行哈希运算,得出当前区块哈希值 - CurrentHash,如果CurrentHash满足挖矿难度,即前4位数为0,我们就判断为有效的新区块。

这一计算Nonce、得出新区块哈希的过程 - 我们称之为挖矿。

挖矿的过程实际上就是代入不同的Nonce值,从1开始代入,一直到得出满足挖矿条件的Hash值为止;
当计算出满足条件的Hash值后,该节点会向网络中其他节点广播,待其他节点验证成功后,他们会根据最新区块继续计算下一区块。

当网络中同时出现两个有效的新区块时,网络中的其他节点会做出选择,到底承认 A区块还是承认 B区块;区块链网络中,最终只承认高度最高的一条链,因此经过几轮计算后,一条链会被放弃,所有节点又重新回到一条主链上。

  • 既然是工作量证明,是不是谁算过的数值多,谁就可以拿更多奖励?
  • 不,奖励只与是否最后得出有效Nonce与区块有关,一个节点为此付出了多少劳动与奖励无关。

挖矿奖励

现在我们知道了,挖矿的行为本质就是获得记账权,获得记账权后将交易写入新区块中,这些交易会率先获得承认。

有人可能会好奇,挖矿奖励来自哪里呢?

中本聪将该部分逻辑写进了区块链底层代码当中,任何新出区块的地址将获得比特币的奖励,这一奖励用于补偿它在过程中消耗的硬件与电力资源。

  • 银行为了维持它的业务顺利进行,会从客户身上收取手续费。
  • 比特币节点为了鼓励更多人参与到网络同步与记账,除了从客户身上收取手续费以外,还制定了出块激励。

良好的激励机制导致了更多人加入到了比特币的网络当中,参与了挖矿,加强了网络的安全性。

当前挖矿奖励为12.5BTC/个

很多人呼吁:区块链是区块链,虚拟币是虚拟币;区块链应当脱离虚拟币、脱离炒币存在,而真正将目光集中在解决问题上。

对于这种看法我只想说:Too young, Too naive。

这个问题的具体解释放到后面。

还有一个经常听到的问题是:挖矿能不能挣钱,我能不能也挖矿?

相信你已经明白了什么是挖矿,那么挖矿能不能挣钱呢?
在当前的算力难度以及比特币价格下,个人很难通过挖矿去获利;从经济学的角度来看,如果普通人也能在挖矿市场中获利,那么参与者会越来越多,直到所有人都没有短期利益为止。

所以我们能得到最后问题的答案:你也可以挖矿,但能不能获利得认真考究。

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

推荐阅读更多精彩内容