成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

1分鐘了解“挖礦”的本質

企業動態
生成一個區塊,鏈入區塊鏈的過程,就是挖礦。挖礦的人,就是礦工。今天,從技術的角度出發,聊聊什么是區塊鏈里的“挖礦”。

上一篇《??1分鐘了解區塊鏈的本質??》,介紹了什么是區塊鏈,區塊鏈是一個沒有管理員,每個節點都擁有全部數據,高可用的分布式存儲系統。

文章的留言里,不少朋友會用比特幣來解釋區塊鏈。

?[[222234]]?

那區塊鏈與比特幣是什么關系?

答:區塊鏈是分布式存儲,比特幣是基于該存儲的應用,其他諸如萊特幣,以太幣都是基于區塊鏈的電子貨幣應用。理論上,使用上層應用來解釋底層存儲是不合適的。

??

如上圖,mysql是底層存儲,wechat是上層應用,用wechat來解釋mysql是不合適的。

今天,從技術的角度出發,聊聊什么是區塊鏈里的“挖礦”。

先說結論,區塊鏈挖礦的本質是啥?

答:生成一個區塊,鏈入區塊鏈的過程,就是挖礦。挖礦的人,就是礦工。

什么是區塊(block)?

答:如《??1分鐘了解區塊鏈的本質??》里所述,區塊是一塊存儲空間,可以存儲數據。

??

如上圖,區塊分為區塊頭(header)和區塊體(body)。

區塊體(body)存了些什么?

答:想存什么存什么,和上層應用有關,就像mysql里存什么依賴于上層應用。例如比特幣使用的區塊鏈,區塊體里存儲的是比特幣交易記錄。

區塊頭(header)存了些什么?

答:區塊頭里存儲了和這個區塊,以及區塊鏈相關的一些元數據。

??

如上圖,區塊頭里的三個常見屬性:

  • 前一個區塊的哈希值
  • 區塊生成的時間戳
  • 隨機數

什么是區塊鏈(blockchain)?

區塊是怎么鏈起來的?

答:

struct node{
node* prev; // 前一個節點
int time; // 時間戳
int nonce; // 隨機數
void* node_body; // 存儲數據
}node;

??

鏈表,節點指針可以作為這個節點的唯一標識,下一個節點通過存儲上一個節點的指針,將鏈表鏈起來。

??

與之類似,區塊的哈希可以作為區塊的唯一標識,下一個區塊通過存儲上一個區塊的哈希,將區塊鏈起來,這就是區塊鏈。

講完區塊與區塊鏈的概念,接下來講挖礦,也就是區塊的生成。

在此之前,先說說區塊鏈的三個特性:

  • 歷史生成的區塊是無法改變的,即“區塊鏈只能像寫日志一樣追加寫,不能像mysql一樣隨機寫”
  • 只能在***的區塊后面生成新區塊,即“必須先完成同步全網***的區塊鏈數據這項工作,才能啟動新區塊生成這項工作”
  • 新區塊的生成很難,必須滿足一定條件的新區塊才有效

假如已經同步了***的區塊鏈數據,要滿足什么條件,才算生成一個新的區塊,才算“挖礦”成功呢?

答:對***的區塊頭進行兩次SHA256計算,得到的256bit哈希結果,高位48bit必須是0x00000000FFFF,才算挖礦成功。

畫外音:這句話很重要,是這篇文章的核心。

為什么大家都說“挖礦”很難?

由符合條件的哈希值,倒推出區塊頭,填入相應的“前一塊區塊哈希值”“時間”“隨機數”不就可以了嗎?

答:額,這,,,哈希(SHA256是一個哈希算法)是不可逆的。例如MD5

md5(string) = md5_result
  • 由字符串,算出對應的md5值很容易,但由md5值反推出字符串是不可能的大家都知道:
  • 可以認為哈希的結果是完全隨機的,要得出前48bit必須是0x00000000FFFF的哈希結果,就如同連續拋48次硬幣,每次都得到我們想要的結果,其概率為(1/2)^48

可以看到,這就好比在一座山上隨手撿起一塊石頭,正好是一塊金子,我猜測,這也正是把生成新區塊叫做“挖礦”的原因。

那應該怎么找到符合條件的區塊頭呢,從而成功挖到礦呢?

答:窮舉法。

區塊頭里有個隨機屬性nonce,將這個屬性從0開始,遍歷到2^32,來計算區塊頭的哈希值,如果得到的哈希結果符合條件,則挖礦成功。

看上面的算法,只要程序運行時間足夠久,總能挖到礦呀?

答:錯,如果別人計算能力強,在你挖到礦之前,如果別人先生成了新區塊,廣播到了區塊鏈網絡,你本地不是***的區塊鏈,你挖到的礦就作廢啦,此時你要放棄之前所有的工作,先向網絡同步***的數據,再重新開始挖。

有什么方法可以提升挖礦的速度呢?

答:從架構的角度出發

  • “緩存”是無效的:每個區塊的哈希值都不一樣,每個時間戳都不一樣,歷史計算過的值無法通過“查表”來節省時間
  • scale up是有效的:增強單CPU的計算能力,使用GPU代替CPU,使用特殊的芯片計算SHA256D等優化都是有效的,但scale up總是有極限的,單機總會遇到瓶頸
  • scale out是有效的:單機不行,來并行,一臺機器不行,搞集群,這就是為什么會有這么多的礦場

?[[222237]]?

如上圖,這是西藏高原上的一個比特幣礦場,廉價的電力讓無數礦工趨之若鶩。

綜上,區塊鏈里,什么是挖礦?

答:在***區塊鏈的數據上,生成一個符合條件的區塊,鏈入區塊鏈的過程,就是挖礦。

關于區塊鏈與挖礦,大家或許還有不少疑問:

  • 如何保證數據的一致性
  • 這TM有病吧,挖這玩意有什么意義,不是純浪費電嗎
  • 這和比特幣有什么關系
  • 比特幣怎么保證總量有限

這些疑惑,下一個一分鐘,再和大家解釋。

希望這很短的一分鐘,大家了解了挖礦的本質。

【本文為51CTO專欄作者“58沈劍”原創稿件,轉載請聯系原作者】

??

??戳這里,看該作者更多好文??

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2018-03-12 14:37:50

區塊鏈比特幣架構

2018-03-23 11:23:14

2018-03-23 11:56:09

相似性推薦推薦算法推薦

2018-08-27 16:15:20

數據庫MyISAMInnoDB

2017-02-22 14:46:04

Leader-Foll線程

2018-03-23 11:46:49

基于內容的推薦職位推薦集群

2018-03-23 11:33:56

協同過濾程序算法

2024-06-25 12:25:12

LangChain路由鏈

2018-05-06 16:26:03

關聯規則數據分析關聯規則推薦

2009-11-05 14:53:54

Visual Stud

2021-10-19 07:27:08

HTTP代理網絡

2020-10-13 18:22:58

DevOps工具開發

2021-04-30 16:23:58

WebRTC實時音頻

2022-12-16 09:55:50

網絡架構OSI

2023-09-07 23:52:50

Flink代碼

2021-01-27 18:15:01

Docker底層宿主機

2023-07-12 16:13:01

2017-07-06 08:12:02

索引查詢SQL

2022-07-18 06:16:07

單點登錄系統

2009-11-09 12:55:43

WCF事務
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产乱码精品一区二区三区忘忧草 | 波多野吉衣在线播放 | 亚洲一区亚洲二区 | 夜夜夜操 | 欧美综合国产精品久久丁香 | 日韩性在线 | 欧美另类视频在线 | 国产激情视频网址 | 亚洲一区视频在线 | 亚洲精品久久久久久久久久吃药 | 亚洲综合国产 | 怡红院怡春院一级毛片 | 九九热免费在线观看 | 日本成人在线观看网站 | 9191成人精品久久 | 国产一区欧美 | 国产精品免费大片 | 免费成人在线网 | 久久亚洲国产精品 | 亚洲国产精品99久久久久久久久 | 久久久国产一区二区三区 | 日韩在线| 亚洲精品福利在线 | 国产真实精品久久二三区 | 国产成人网| 日韩欧美国产精品一区二区三区 | 中文字幕亚洲区一区二 | 国产色婷婷久久99精品91 | 日本不卡一区二区三区在线观看 | 日韩免费一区 | 日韩欧美不卡 | 免费a大片 | 丁香久久 | 国产精品久久久久久妇女6080 | 伊人网91| 一级片网址 | 国产99久久 | www.五月婷婷.com | 中文字幕乱码视频32 | 国产精品久久久久久久久久 | 北条麻妃av一区二区三区 |