【本課堂內容全部選編自PlatON首席密碼學家、武漢大學國家網路安全學院教授、博士生導師何德彪教授的《區塊鏈與密碼學》授課講義、教材及網際網路,版權歸屬其原作者所有,如有侵權請立即與我們聯絡,我們將及時處理。】2.0 引言在全民課堂第一單元我們詳細瞭解了比特幣與其他密碼貨幣,比特幣的故事就先告一段落啦,後續有可能會再客串一下。從今天起,我們開啟第二單元的學習,“區塊鏈”將成為重點。從2009年比特幣問世至今,區塊鏈已經走過了11年。11年間,區塊鏈逐步進入大眾視野,尤其是在單枚比特幣的價格被炒作到近2萬美元以後,整個社會對於比特幣的關注度急劇上升。一方面,亂象叢生的自媒體流傳著各種“幣圈”暴富神話,各種魚龍混雜的區塊鏈專案浮出水面,其中不乏打著區塊鏈技術創新名號,實則透過首次代幣發行融資圈錢的低質量專案。另一方面,區塊鏈技術本身吸引了越來越多的人對其進行深入研究並探索其寬廣的應用空間:各地政府對區塊鏈積極扶持,國內外科技及金融巨頭紛紛涉足區塊鏈行業。行業雖起於草莽但終會步入正軌。區塊鏈科普之國際區塊鏈發展現狀發達國家從戰略層面開展區塊鏈產業發展-美國、英國、俄羅斯、澳大利亞、日本等國紛紛設計國家區塊鏈戰略和路線圖,促進區塊鏈產業發展。跨國巨頭企業佈局區塊鏈的研發與應用-國外巨頭企業谷歌、微軟、摩根大通、Facebook、亞馬遜、IBM等紛紛佈局研究區塊鏈技術,推出了技術解決方案和應用。國外開源組織大力推進區塊鏈創新與發展-以太坊基金會、Hyperledger社羣等不斷在創新區塊鏈技術,有力促進了區塊鏈技術的迭代發展。區塊鏈生態覆蓋全球經濟與社會各個方面-全球區塊鏈迎來了爆發式發展,在金融服務、供應鏈管理、智慧製造、社會公益、醫療健康等領域開展了一系列應用。國外知名高校加強區塊鏈理論研究和人才培養-美國知名高校包括哈佛、斯坦福等均已開設區塊鏈相關課程,在共識演算法、密碼學等關鍵技術方面處於領先水平。2.0 區塊鏈的概念工信部指導釋出的《區塊鏈技術和應用發展白皮書2016》的解釋是:狹義來講,區塊鏈是一種按照時間順序將資料區塊以順序相連的方式組合成的一種鏈式資料結構,並以密碼學方式保證的不可篡改和不可偽造的分散式賬本。廣義來講,區塊鏈技術是利用塊鏈式資料結構來驗證和儲存資料、利用分散式節點共識演算法來生成和更新資料、利用密碼學的方式保證資料傳輸和訪問的安全性、利用由自動化指令碼程式碼組成的智慧合約來程式設計和運算元據的一種全新的分散式基礎架構與計算正規化。專業的解釋或許有些拗口。顧名思義,區塊鏈(blockchain)是一種資料以區塊(block)為單位產生和儲存,並按照時間順序首尾相連形成鏈式(chain)結構,同時透過密碼學保證不可篡改、不可偽造及資料傳輸訪問安全的去中心化分散式賬本。區塊鏈中所謂的賬本,其作用和現實生活中的賬本基本一致,按照一定的格式記錄流水等交易資訊。特別是在各種數字貨幣中,交易內容就是各種轉賬資訊。只是隨著區塊鏈的發展,記錄的交易內容由各種轉賬記錄擴充套件至各個領域的資料。比如,在供應鏈溯源應用中,區塊中記錄了供應鏈各個環節中物品所處的責任方、位置等資訊。要探尋區塊鏈的本質,什麼是區塊、什麼是鏈,首先需要了解區塊鏈的資料結構,即這些交易以怎樣的結構儲存在賬本中。區塊鍊形式我們從區塊鍊形式入手,看看區塊鏈究竟長什麼樣子?日常去超市購物結賬的時候,我們都會收到一張“小票”。上面清晰的記錄著買東西的明細與單價,這張小票就是組成區塊鏈的最小單元:交易單(Transaction)。交易單記錄一筆交易的具體資訊,例如付款人比特幣地址、收款人比特幣地址、付款金額、付款人簽名等。而很多這樣的小票組成的賬本就是:資料塊(Block)許多交易單組成了資料塊,每個資料塊只記錄區塊鏈全世界對應時間內的交易資訊。這裡的資料塊是單個資料塊,如果一個資料塊裡的東西記滿了呢?很簡單,將交易單放出連結產生的下一個資料塊中,繼續記載,這樣就形成了資料鏈(Blockchain)將資料塊有序聯起來的連結串列就形成了我們常說的區塊鏈。購物小票中會按格式記錄著我們買的東西、單價、總價、還有結尾的“謝謝惠顧,歡迎再來“等字樣。那麼在區塊鏈中,交易單和資料塊中,記錄著什麼呢?首先我們看看資料塊長什麼樣子:
看到這張圖是不是有點兒懵?沒事兒。我們只要知道這是資料塊的結構就OK。所有金額、交易金額來源、交易金額去向等細節都以交易單的形式被記錄在世界上唯一的資料塊系統中的每個節點都要驗證交易是否合法,如果合法將認同此次交易,並將交易固化成一個交易鏈,即資料塊。而資料塊又包括區塊頭和區塊體。
區塊的產生方式
現在,大家都知道了區塊鏈是資料塊連結的一個鏈條,這個鏈條又是如何“自動“產生的呢?這裡我們舉兩個最常見的區塊產生方式:工作量證明(POW)與權益證明(POS)
工作量證明(POW)簡單來說主要特徵是客戶端需要做一定難度的工作得出一個結果,驗證方卻很容易透過結果來檢查出客戶端是不是做了相應的工作。基於此原理產生區塊,具體如何產生我們在第一單元的課程中有詳細講解,大家可以去看看哦~
而權益證明(POS)則是目前新一代區塊鏈技術普遍應用的,POS不同於POW之處在於,在POS系統上“挖礦”是以貨幣的持有數量為基礎的.換句話說,在POS的情況下,一個人擁有虛擬貨幣的5%和在比特幣系統上擁有系統5%的算力的效果是一樣的。目前比較具有代表性的是以太坊2.0。
區塊全交易流程
這節課的最後我們還原交易單、資料塊再到區塊鏈交易全過程。
1. 所有者A利用他的私鑰對前一次交易(位元貨來源)和下一位所有者B簽署一個數字簽名,並將這個簽名附加在這枚貨幣的末尾,製作成交易單。
要點:B以公鑰作為接收方地址
2. A將交易單廣播至全網,比特幣就傳送給了B,每個節點都將收到的交易資訊納入一個區塊中。
要點:對B而言,該枚比特幣會即時顯示在比特幣錢包中,但直到區塊確認成功後才可用.目前一筆比特幣從支付到最終確認成功,得到6個區塊確認之後才能真正確認到帳。
3. 每個節點透過解一道數學難題,從而去獲得建立新區塊權利,並爭取得到比特幣的獎勵(新比特幣會在此過程中產生)。
要點:節點反覆嘗試尋找一個數值,使得將該數值、區塊鏈中最後一個區塊的Hash值以及交易單三部分送入SHA256演算法後能計算出雜湊值X(256位)滿足一定條件(比如前20位均為0),即找到數學難題的解,由此可見,答案並不唯一。
4. 當一個節點找到解時,它就向全網廣播該區塊記錄的所有蓋時間戳交易,並由全網其他節點核對。
要點:時間戳用來證實特定區塊必然於某特定時間是的確存在的。比特幣網路採取從5個以上節點獲取時間,然後取中間值的方式作為時間戳。
5. 全網其他節點核對該區塊記賬的正確性,沒有錯誤後他們將在該合法區塊之後競爭下一個區塊,這樣就形成了一個合法記賬的區塊鏈。
要點:每個區塊的建立時間大約在10分鐘.隨著全網算力的不斷變化,每個區塊的產生時間會隨算力增強而縮短、隨算力減弱而延長.其原理是根據最近產生的2016年區塊的時間差(約兩週時間),自動調整每個區塊的生成難度(比如減少或增加目標值中0的個數),使得每個區塊的生成時間是10分鐘。
今天的課程就到這裡啦,隨著全民課堂第二單元的開啟,我們的知識點濃度會越來越高,同學們可以關注PlatON公眾號,持續學習哦。