「區塊鏈之技術進階」扒一扒某乎上面對於區塊鏈的理解(二)

摘要: 在上一篇文章中,咱們扒了扒某乎上關於區塊鏈技術的諸神的回答,並且從中選取了來自COO妹子的側重於金融角度的理解,看了這麼多,你是不是對於區塊鏈技術壓抑不住內心的洪荒之力了呢?急於學習區塊鏈,出任CEO呢?但是,技術呢?莫慌,本文就為你分享來自程序員妹子的區塊鏈理解。

在前面的一篇文章裡,咱們通過鎂鋁COO妹紙的(據說萌萌噠)從金融的角度(當然也帶了有些技術角度)為大家分享了對於區塊鏈的理解,人家妹紙寫的文章自帶賣萌屬性,以故事開頭,並且以故事結尾,加上那張關於“看上去屌炸了の工作原理”的大圖(這張圖上基本涵蓋了區塊鏈技術的所有技術要點,不知道大家有木有仔細看)介紹了創始塊,區塊,挖礦數學以及目標數,隨機數等等這些概念,當然妹紙也以區塊鏈行業從業者的角度告訴我們,區塊鏈的研究目前還在瓶頸區,還有很多東西需要探索。

本文選取的是來自一個程序員妹紙的回答(又是自帶賣萌屬性的),文章中還用到了“岳母”的類比礦工的“挖礦”工作,真實對於單身汪造成一萬點傷害。而且妹子會以圖的形式為大家介紹什麼是“區塊分叉”,對了,還聊了“共識攻擊”的概念,我理解的意思這基本就和公司股份的原理一樣,超過“51%(相當於公司控股)就可以篡改數據了,但是隨著區塊鏈上的結點越來越多(這裡涉及極限的思想),你總不能讓大多數人都幫你撒謊吧(這就是區塊鏈信任大多數人的原則)。

本文技術要點:

「區塊鏈之技術進階」扒一扒某乎上面對於區塊鏈的理解(二)

最近在研究區塊鏈和比特幣的相關技術,看到這道題就想著寫點東西供大家參考。如果哪裡有說的不對的地方還希望前輩們多多指教。

前方多圖多圖多圖!

通俗一點地說,區塊鏈是一個收錄所有歷史交易的總帳,每個區塊中包含若干筆交易記錄。

如果說區塊鏈是賬本,那麼區塊就是賬本的每一頁。交易的細節都被記錄在一個網絡裡任何人都可以看得到的公開賬簿上。區塊就是很多交易數據的集合,它被標記上時間戳和之前一個區塊的獨特標記。有效的區塊獲得全網絡的共識認可以後會被追加到主區塊鏈中。

區塊鏈是有包含交易信息的區塊從後向前有序鏈接起來的數據結構。

「區塊鏈之技術進階」扒一扒某乎上面對於區塊鏈的理解(二)

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

在比特幣領域中,存在“礦工”這樣一個概念。

礦工是指通過不斷重複哈希運算來產生工作量的各個網絡節點。(每個節點都是路由,區塊鏈數據庫,挖礦,錢包服務的功能集合)礦工們需要競爭完成一種基於加密哈希算法的數學難題,答案存在於新的區塊中,誰優先解出這個答案,誰就能在p2p網絡中廣播聲明自己已經獲得這個區塊,其他的礦工就會意識到在這局裡已經輸了,就會立馬開始下一個區塊的挖掘工作。

每個礦工在他的區塊中都有一筆特殊的交易,他們會將新生成的比特幣作為報酬,然後支付到自己的比特幣地址中。一旦這個區塊被認可被驗證,也就是被添加到區塊鏈中,他的這筆報酬就可以變為可用可消費的狀態。

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

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

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

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

我來擬人化地解釋一下。

單身汪們要找女票,國民岳母說我有好多女兒,這樣吧我給你們出點題目,解出一個就給其中一個姑娘的微信號。單身汪們瘋狂競爭,想破腦袋去解題。只要其中一隻汪解出一道題,就立馬得意洋洋地昭告天下,示威全部單身汪,這個姑娘是我的啦,你們放棄吧。其他單身汪們即使不服也沒有辦法,惆悵懊惱也不是個事兒啊,還是麻溜地立馬去解下一道題目吧。這隻喜贏姑娘的幸運小汪被岳母認可後還能得到25個貨幣單位的彩禮,簡直人生贏家。岳母會通過解題的速率去調整題目的難度,有時候吧,出的太難了,好久沒小夥子有能力來上門提親,她一尋思,這可不行,這女兒不能砸手裡啊,得把題目難度降一點。有時候難度太簡單,不到10個時間單位就嫁出去一個,這更不行,趕緊使用難度提升技能。

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

上面所描述的其實就是“挖礦”的概念,所謂挖到礦就是要猜到一個nonce值讓該區塊的摘要值小於一個會根據難度而線性調整的目標值,這也是所謂的工作量證明。

簡單一點說,就是重複計算去塊頭額哈希值,不斷地改變參數,直到與哈希值匹配的一個過程。當節點創建一個候選區塊的時候,那礦工就準備開始進行挖礦。礦機開始超高速運行SHA256算法,這些硬件會通過USB鏈接到存在於電腦上的挖礦節點上,然後挖礦節點會將區塊頭信息傳給這些硬件,讓他們進行非常高頻的nonce測試。

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

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

下圖是我在http://blockchain.info網站上隨機截取的一個區塊。

「區塊鏈之技術進階」扒一扒某乎上面對於區塊鏈的理解(二)

一般來說,個體礦工自己一個人獨立進行挖礦在這樣一個競爭的大環境中是幾乎沒有可以盈利的可能的。因為他們的算力讓他們很難靠一己之力可以挖到區塊去平衡他所付出的硬件設備費用及相關的電力費用。

所以在這樣的時候,他們會選擇加入礦池。眾多礦工組合成礦池,匯聚大家的算力,然後一起分享獎勵。所以不出意外的話最後一行中間那個大的綠箭頭後面的一串字符就是一個礦池的地址而非個人礦工的,該礦池獲得了25個比特幣的獎勵,多的後面的零頭是參與挖礦所得的礦工費。

你也可以打開終端,運行

$curl https://blockchain.info/unspent?active=1CK6KHY6MHgYvmRQ4PAafKYDrg1ejbH1cE

也可以進行查詢,像這樣:

「區塊鏈之技術進階」扒一扒某乎上面對於區塊鏈的理解(二)

小彩蛋——我們可以認識一下比特幣領域的創世區塊。

「區塊鏈之技術進階」扒一扒某乎上面對於區塊鏈的理解(二)

右邊是比特幣創始人中本聰留下的一句話。“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%的算力的攻擊幾乎我們就可以判定它一定會成功。

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

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

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

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

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

區塊鏈系統之所以能降低傳統網絡安全風險,一大原因就是它解除了對中間人的需求。

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

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

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

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

有國內互聯網金融長期觀察者說,

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

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

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


分享到:


相關文章: