快速理解區塊鏈技術的三步指南。
自從過了年後,小編已經被N個小夥伴問過“什麼是區塊鏈。”了。對於這個問題,不同的人可能有不同的答案。
在肖風博士的最新演講中,他從區塊鏈的層次分解、技術發展進程、經濟意義等角度解釋了何謂區塊鏈。(點這裡查看肖博士最新演講:萬向區塊鏈肖風:當討論加密經濟學時我們在談論什麼。)
本篇文章翻譯自外文部落格,用通俗易懂的語言,分三步,解釋了區塊鏈的三個主要組成部分:區塊鏈本身,點對點網路和共識機制,有助於我們逐步理解區塊鏈的底層技術。結合肖風博士的演講,你將從機制、經濟和技術層面,對區塊鏈技術有更深入更透徹的理解。
本文即使是非技術人員,也能輕易理解。現將其分享給各位,供大家參考。
下文翻譯自Thijs Maas發表在Hackernoon上的博文《The Quick, 3-Step Guide to Blockchain Technology》,僅代表作者觀點,不代表萬向區塊鏈的立場,內容僅供參考。
第一步 理解區塊鏈技術本身
簡單來講,區塊鏈其實就是一種構建資料的方式。它是一個賬本:一個儲存會計記錄的檔案。
這個檔案就像一本永遠也不會完結的書一樣。
書的每一頁都有內容並且在書頁底部都有一個頁碼,有了頁碼,你就能立刻知道這頁書所屬的位置,如第49頁是在第48頁和第50頁之間。
就像書頁一樣,每一個區塊上面都寫滿了內容。雖然區塊沒有明確的編號,但它們有時間戳記,時間戳記的功能和頁碼的功能完全一樣,算是每個區塊的“編號”。一個新的區塊總是添加在具有最近時間戳記的區塊之後。如此,鏈條就形成了。
區塊鏈最酷的地方在於,它使用加密技術來確保當“書頁”上的任何資訊發生變化時,我們能夠立即注意到它。這個屬性使得區塊鏈成為一個很好的,用於儲存和跟蹤有價值的紀錄的資料結構。
在比特幣區塊鏈中,區塊裡包含了比特幣的交易資訊,如張三把這個比特幣發送給李四了。
由於比特幣區塊鏈記錄了自比特幣存在以來的所有交易情況,因此我們可以通過檢查賬本,確定李四是在何時擁有這個比特幣的。“誰在某時擁有某物”就是我們所說的區塊鏈的“狀態”。
當一筆交易被記錄在區塊中並添加到鏈上時,這筆交易才算真正地發生。因此,當一個區塊被添加到鏈上時,區塊鏈就被更新了。這意味著,如果我想驗證某人是否真的給我轉了一個比特幣,我必須能夠檢查區塊鏈的狀態。為了能夠做到這一點,賬本必須是公開可利用的。這裡就是點對點網路起作用的地方。
第二步 理解點對點網路的作用
如果區塊鏈僅僅被儲存在一台電腦上,並且恰好這台電腦被關閉的話,那就很煩人了。因為我無法隨時隨地驗證對方是否給我轉了賬。因此,區塊鏈是分散儲存在世界各個地區的數台電腦上的。
這些電腦被稱為“節點”,它們在點對點網路中一起工作,以確保區塊鏈的安全性和狀態的最新性。每個節點都儲存著區塊鏈的完整版本,每當有新塊添加時,每個節點也都會更新區塊鏈。使用點對點網路有下面這些優勢:
☞我可以隨時隨地的使用區塊鏈檢查交易狀態;
☞我不用依靠某一方來瞭解交易的最新狀態;
☞當發生駭客攻擊時,對方必須同時攻擊成千上萬台電腦,而不只是一台伺服器;
☞不必擔心區塊鏈裡的資訊會被刪除或篡改,要實現這一點就必須修改所有電腦裡的資訊。
但上述情況並不意味著區塊鏈就是100%安全的。例如,我怎麼知道區塊鏈裡記錄的資訊是正確的。怎麼驗證區塊裡有沒有包含無效交易。如果有不同版本的區塊鏈,那我怎麼知道哪一個區塊鏈裡的才是真實紀錄。
區塊鏈巧妙的地方在於,這些問題,可以用共識機制來解決。
第三步 理解共識機制
共識機制神奇之處在於,它允許點對點網路中的所有節點一起工作,而彼此之間卻不必相互瞭解和信任。
共識機制就是一組簡單的規則:網路中的節點通過運行網路軟體達成一致。這些規則確保區塊鏈網路按預期工作並保持同步。
共識協議規定了:
☞如何將區塊添加到鏈上
☞區塊什麼時候被認為是有效
☞如何解決真相衝突
【將區塊添加到鏈上】
不同的區塊鏈有不同的添加區塊的方式。
最有名的共識機制是比特幣PoW機制(工作量證明)。PoW的第一個規則是:平均每十分鐘,一個區塊會被添加在區塊鏈中。
這個過程叫做“挖礦”,添加新塊的節點叫做“礦工”。在PoW機制下,系統會出一道密碼謎題,礦工運用電腦的算力解決系統中的密碼謎題來添加新塊。共識機制規定:只有成功解決出密碼謎題後,才能添加一個新塊。成功添加新塊的礦工能夠獲得預埋在系統中的新幣作為獎勵。隨後,所有礦工開始挖掘下一個區塊。
PoS(權益證明)也是常見的共識機制之一。這種機制通過計算你的權益,包括你持有的幣的數量和持有幣的時間,來決定記賬的權利。誰的權益大,誰就獲得添加新區塊的權利。
【區塊的有效性】
當礦工解出謎題“挖出”區塊後,網路中的所有節點將檢查該區塊是否有效,並將它添加到各自的區塊鏈副本中。
節點們首先需要就塊的合法性達成共識,只有這樣網路才會達成同步並更新區塊鏈的狀態。只有遵循共識機制設定的規則的新塊,才會被節點們承認並添加到鏈上。沒有遵循規則的塊將會被拒絕添加。
通常情況下,只有包含交易資訊的塊才有效。以比特幣區塊鏈為例,協議規則規定:如果沒有從別人那裡接收到比特幣或者挖出比特幣,就不可以發送比特幣。換句話說,如果寄件者已經接收到了足夠的比特幣來做交易,節點們將運行軟體檢查區塊中的所有交易資訊,以此來檢查網路狀態。
現在,假設我已經收到1比特幣,我後來將其發送給張三,然後我嘗試將相同的比特幣發送給李四。只要我的第一筆交易被添加到鏈中,所有節點都會更新區塊鏈,以證明我現在沒有該比特幣了,那麼任何包含我和李四的交易資訊的塊都會被拒絕。節點們的軟體發現該塊沒有遵循規則,因此它們不會將這個塊添加到鏈上。
規則還規定,只有具有比特幣持有人數位簽章的交易才是有效交易。只有控制發送比特幣錢包或地址的人才可以在交易上籤字。因此,只有你可以花你的比特幣。
【如何解決真相衝突】
在偶然的情況下,會出現兩名礦工同時向鏈條添加有效塊,一部分節點接受了一個礦工的有效塊,另一部分接受了另一個礦工的有效塊。第一個塊包含我和張三交易的資訊,第二個塊包含我和李四交易的資訊。現在,我突然同時擁有兩種不同狀態的區塊鏈。
我們將這種情況稱為“分叉”。張三或李四是否擁有我發送的比特幣。兩條鏈中的哪一條才是'真正的'區塊鏈。
通常情況下,所有的共識協議都有一條簡單的規則來解決這個問題:最長的鏈獲勝。
當分叉發生時,一些礦工會在這條鏈上挖礦,另一些礦工將在另一條鏈上挖礦。不可避免的是,一條鏈上的礦工肯定會比另一條鏈上的礦工多,因此,礦工多的那條鏈將會增長的更快。
另一條鏈上的礦工將會遷移至較長的那條鏈上,分叉出去的鏈就會消失。這樣對主鏈沒有任何損害。
因為礦工是以自我利益行事的經濟行為者。一個礦工如果知道這條分叉的鏈會消亡,那麼就不會有興趣在分叉鏈上採礦。所有在分叉鏈上的交易絕不會發生在主鏈上,這意味著在分叉鏈上挖礦的礦工將得不到獎勵。
上述這種情況,我們稱之為軟分叉。
在少數情況下,分叉鏈可能會產生大量的採礦能力。在這種情況下,可能需要一段時間才能確定哪條鏈是主鏈。傳統觀點認為,等待6個區塊方可真正確認一個交易。
譯者補充:這種情況稱為硬分叉,在原鏈上工作的節點無法驗證分叉鏈上的節點生產的區塊,這樣就會分出兩條鏈。這兩條鏈將會並存運行下去。