1. 程式人生 > >區塊鏈簡介

區塊鏈簡介

廣泛 caff 程序 著作權 摘要 研究 ilo 十分鐘 存在

作者:玲瓏邪僧
鏈接:https://www.zhihu.com/question/27687960/answer/84583016
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。

你們肯定想不到這種幹貨題我都能強勢卻又和諧圓潤地融入自拍!

最近在研究區塊鏈和比特幣的相關技術,看到這道題就想著寫點東西供大家參考。

如果哪裏有說的不對的地方還希望前輩們多多指教。

前方多圖多圖多圖

通俗一點地說,區塊鏈是一個收錄所有歷史交易的總帳,每個區塊中包含若幹筆交易記錄。如果說區塊鏈是賬本,那麽區塊就是賬本的每一頁。交易的細節都被記錄在一個網絡裏任何人都可以看得到的公開賬簿上。

技術分享圖片

區塊就是很多交易數據的集合,它被標記上時間戳和之前一個區塊的獨特標記。有效的區塊獲得全網絡的共識認可以後會被追加到主區塊鏈中。區塊鏈是有包含交易信息的區塊從後向前有序鏈接起來的數據結構。


在這裏,我用比特幣相關知識舉個栗子解釋一下。

在比特幣領域中,存在“礦工”這樣一個概念。礦工是指通過不斷重復哈希運算來產生工作量的各個網絡節點。(每個節點都是路由,區塊鏈數據庫,挖礦,錢包服務的功能集合)

礦工們需要競爭完成一種基於加密哈希算法的數學難題,答案存在於新的區塊中,誰優先解出這個答案,誰就能在p2p網絡中廣播聲明自己已經獲得這個區塊,其他的曠工就會意識到在這局裏已經輸了,就會立馬開始下一個區塊的挖掘工作。每個礦工在他的區塊中都有一筆特殊的交易,他們會將新生成的比特幣(當前每塊25個比特幣,2016年也就是今年減半)作為報酬,然後支付到自己的比特幣地址中。一旦這個區塊被認可被驗證,也就是被添加到區塊鏈中,他的這筆報酬就可以變為可用可消費的狀態。

在比特幣體系中,平均每十分鐘就可以發現一個新的區塊, 在完全去中心化的比特幣網絡中(即不受任何第三方控制),每個完整節點中獨立自動發生難度調整,讓新區塊的產出速率維持在平均每十分鐘一個。

一個block產生的產生時間=難度值x2的32次方/hashrate

(hashrate是每秒運算的hash數量)

難度值difficulty=最大目標值/當前目標值

我來擬人化地解釋一下。

單身汪們要找女票,國民嶽母說我有好多女兒,這樣吧我給你們出點題目,解出一個就給其中一個姑娘的微信號。

單身汪們瘋狂競爭,想破腦袋去解題。只要其中一只汪解出一道題,就立馬得意洋洋地昭告天下,示威全部單身汪,這個姑娘是我的啦,你們放棄吧。其他單身汪們即使不服也沒有辦法,惆悵懊惱也不是個事兒啊,還是麻溜地立馬去解下一道題目吧。這只喜贏姑娘的幸運小汪被嶽母認可後還能得到25個貨幣單位的彩禮,簡直人生贏家。

嶽母會通過解題的速率去調整題目的難度,有時候吧,出的太難了,好久沒小夥子有能力來上門提親,她一尋思,這可不行,這女兒不能砸手裏啊,得把題目難度降一點。有時候難度太簡單,不到10個時間單位就嫁出去一個,這更不行,趕緊使用難度提升技能。對了今年就是2016年,嶽母的禮金還會減半。。。

。。不鬧了。。回到正題。。

上面所描述的其實就是“挖礦”的概念

所謂挖到礦就是要猜到一個nonce值讓該區塊的摘要值小於一個會根據難度而線性調整的目標值,這也是所謂的工作量證明。簡單一點說,就是重復計算去塊頭額哈希值,不斷地改變參數,直到與哈希值匹配的一個過程。

當節點創建一個候選區塊的時候,那曠工就準備開始進行挖礦。礦機開始超高速運行SHA256算法,這些硬件會通過USB鏈接到存在於電腦上的挖礦節點上,然後挖礦節點會將區塊頭信息傳給這些硬件,讓他們進行非常高頻的nonce測試。

當一項交易被區塊收錄的時候,可以被認為是一次確認。在此區塊之後每產生一個區塊,此項的交易數就再加一。當確認數目到達六次以上的時候,通常就能認為此項交易比較安全並且不可逆轉。那麽現在,這筆交易已經在比特幣網絡上傳播開,但只有通過驗證且加到一個區塊中的時候,這筆交易才能成為區塊鏈的一部分。

新的交易不斷地湧入比特幣網絡,當節點們看這些交易的時候,會將這些交易臨時放到自己各自維護的一個臨時的交易池中,當曠工創建出一個區塊以後,便可以把這些交易從交易池中拿出放到這個新區塊中,然後通過解決一個難度很大的問題去證明這個區塊的合法性。

下圖是我在網站上隨機截取的一個區塊。

技術分享圖片

一般來說,個體礦工自己一個人獨立進行挖礦在這樣一個競爭的大環境中是幾乎沒有可以盈利的可能的。因為他們的算力讓他們很難靠一己之力可以挖到區塊去平衡他所付出的硬件設備費用及相關的電力費用。所以在這樣的時候,他們會選擇加入礦池。眾多礦工組合成礦池,匯聚大家的算力,然後一起分享獎勵。所以不出意外的話最後一行中間那個大的綠箭頭後面的一串字符就是一個礦池的地址而非個人礦工的,該礦池獲得了25個比特幣的獎勵,多的後面的零頭是參與挖礦所得的礦工費。

現在我們點開那個收幣地址,看一下裏面的信息。

1CK6KHY6MHgYvmRQ4PAafKYDrg1ejbH1cE (二維碼自動識別)


藍色框的31confirmation就是說明這條交易已經被驗證31次,當數目達到120次時,就證明這條交易成立。

你也可以打開終端,運行

$curl

也可以進行查詢

像這樣:

技術分享圖片

小彩蛋

我們可以認識一下比特幣領域的創世區塊

技術分享圖片

右邊是比特幣創始人中本聰留下的一句話。

“The Times 03/Jan/2009 Chancellor on brink of second bailout for banks” 這句話正是泰晤士報當天的頭版文章標題。


我們回到區塊鏈。

上面我提到過,每個區塊頭都會進行SHA256哈希加密,生成一個哈希值,通過這個值,我們可以在區塊鏈中識別出特定區塊,並且每個區塊頭都還包含它的父區塊的哈希值。

技術分享圖片

(圖片來自《精通比特幣》)


每一個子區塊都只有一個父區塊,但一個父區塊可以暫時擁有很多子區塊,這種情況被稱為區塊鏈分叉。這種只有當不同的礦工在同一時刻發現不同的區塊時才會發生。這時解決的方法就是,每一個節點總是選擇並嘗試延長擁有最大工作量證明(最長或者最大難度)的區塊鏈。

舉個例子:

技術分享圖片

(圖片來自《精通比特幣》)

我們現在有一個區塊鏈-藍

技術分享圖片

(圖片來自《精通比特幣》,可愛的小姑娘來自我)

位於X地區的曠工與位於Y地區的曠工同時發現了兩個區塊。

我們假設:

曠工熊貓君A發現區塊-紅,

礦工兔子君B發現區塊-綠。

當熊貓君A,兔子君B節點分別在比特幣網絡廣播的時候,部分節點會先收到熊貓君A的廣播,部分會先收到兔子君B的廣播,然後分為兩派陣營的節點會分別開始以他們接收到的區塊作為父區塊,進行深一步的挖礦活動。(這裏節點的地理意義指的是網絡拓撲上的位置,而非真實的地理位置。)

技術分享圖片

(圖片來自《精通比特幣》,可愛的小姑娘來自我)

就在大家如火如荼地緊張解題的關鍵時刻,一個接收到兔子君B所廣播的節點的兔子君C,優先發現了下一個區塊-粉,也就是說綠色陣營的小兔子們的區塊鏈可以進行下一步延伸,就會比紅色陣營的小熊貓們的長度長,紅色陣營小熊貓遺憾出局。這樣的話分叉問題就得到了解決。

技術分享圖片

(圖片來自《精通比特幣》,可愛的小姑娘來自我)


這裏我們需要提到一個名詞,“共識攻擊”。一個很著名的場景就是“51%攻擊”。如果一群礦工擁有了全網51%的算力,那麽只要他們聯合起來就可以打擊整個比特幣網絡。他們可以認為地去制造一個分叉的區塊鏈實現雙重支付,拿我們上文的例子舉例,攻擊者在區塊-紅中進行過了交易,結果他強行制造出區塊-綠,並且區塊-綠中將原本的交易替換成另一筆交易(把原本應該給賣家的錢打入自己同夥的錢包中),然後在區塊綠的基礎上再計算一個區塊-粉,這樣包含偽造的區塊的區塊鏈就比包含真實交易的區塊紅高出一個高度,此時,包含雙重支付的惡意區塊鏈將取代真實區塊鏈,從而實現詐騙。


51%的概念並不是說攻擊者需要全網51%的算力才能進行攻擊,理論上來說不到51%也是可以實現攻擊的,我們只是說擁有超過51%的算力的攻擊幾乎我們就可以判定它一定會成功。


上面都是在比特幣場景下進行的論述

那麽在哪些領域裏也會用到區塊鏈技術呢?


1.銀行業

作為一種數字化,安全防幹擾的帳戶,區塊鏈實現了銀行業的核心功能:即價值的安全儲存和轉移中心。也就是說,在將來的幾年內,一波基於區塊鏈技術的公司或將影響到銀行業。

2.支付和轉賬

區塊鏈技術能夠避開繁雜的系統,在付款人和收款人之間創造更直接的付款流程,不管是境內轉賬還是跨境轉賬,這種方式都有著低價、迅速的特點,而且無需中間手續費。

3.網絡安全

雖然區塊鏈的系統是公開的,但其核驗、發送等數據交流過程卻采用了先進的加密技術。這種技術不僅確保了數據的正確來源,也確保了數據在中間過程不被人攔截。如果區塊鏈技術的應用更為廣泛,那麽其遭受黑客襲擊的概率也可能會下降,因此人們認為區塊鏈系統要比傳統系統更為穩妥。區塊鏈系統之所以能降低傳統網絡安全風險,一大原因就是它解除了對中間人的需求。

4.選舉

大家的投票“絕不可能被我們——即程序員,學校管理員或學生修改、刪除。”

5.智能合同

智能合同實際上是在另一個物體的行動上發揮功能的電腦程序。和普通電腦程序一樣,智能合同也是一種“如果-然後”功能,但區塊鏈技術實現了這些“合同”的自動填寫,無需人工介入。這種合同最終可能會取代法律行業的核心業務,即在商業和民事領域起草和管理合同的業務。

6.股票交易

許多年來,各個公司都在想方設法簡化股票的購買、銷售和交易過程,新興的區塊鏈技術創企認為他們能夠超越以往,實現整個流程的自動化,提高安全性和效率。

(參考來自區塊鏈技術源於比特幣 現在卻要改變這12個行業)


有國內互聯網金融長期觀察者說,“區塊鏈目前的情況類似於TCP/IP(1969年出現的技術,30年後應用才全面盛開)或者HTML剛出來的時候找不到落地的應用,除了比特幣外,缺乏殺手級應用,比特幣只是區塊鏈1.0,而智能合約是2.0,區塊鏈的較高應用是對應到物聯網,做到實時信用確權。”

我個人認為區塊鏈技術是很有前景的領域,值得有興趣的各位學習研究。

區塊鏈被真正廣泛運用還有一段很長的路要走,大家要做的,就是積累技術等待成熟時機的出現。

區塊鏈簡介