- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業務經營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯網協會理事單位
- 安全聯盟認證網站身份V標記
- 域名注冊服務機構許可:滇D3-20230001
- 代理域名注冊服務機構:新網數碼
1.區塊鏈的基本架構
區塊鏈本質上是一串由數據塊(區塊)相互關聯形成的網絡系統,類似于一本賬簿,則每個區塊相當于一張帳頁。如圖1所示,一個區塊主要分為兩部分:區塊頭和交易數據。區塊頭里記錄的是這個區塊的元數據,包括區塊的高度(即在鏈上的位置編號)、版本號、創建的時間戳(timestamp)、前后兩個區塊鏈的哈希(hash)值、用于計算工作量證明的Nonce值和難度目標、梅克爾(Merkle)樹的根哈希值。交易數據部分用梅克爾樹的方式記錄了一定時間(比特幣是10分鐘)內產生的所有交易的信息,每個區塊可以記錄數百或上千條交易信息。在一個區塊鏈中,最早被構建的第一個區塊稱為“創世塊”,只包括自身的哈希值。后面每個區塊都包含兩個哈希值,分別是驗證上一個區塊(父區塊)和該區塊信息有效性的識別碼。這樣通過兩個哈希值之間的前后指向關系,所有區塊依次相連就構成了區塊鏈(圖1)。 梅克爾樹(Merkle tree)相當于區塊鏈信息的數字指紋或DNA,可以驗證交易數據在鏈上各節點傳遞過程中是否已經被篡改。從創建過程來看,是自下而上分層的哈希二叉樹。首先,在最底層利用SHA256算法求出每筆交易的哈希值。然后,以此作為“葉子節點”兩兩相連再次代入SHA256算法,得到上一層32個字節的哈希值。如果“葉子節點”只有奇數個,則需要復制最后一個節點。如此循環歸結到最上層單個節點,得到梅克爾根的哈希值。這個值又相當于每個區塊的數字指紋,詳細記錄其中包含的所有交易數據。即便對交易數據稍作修改都會引起梅克爾根值發生很大變化、進而改變整個區塊的的哈希值。任意變動父區塊的數據也會導致子區塊和后面所有區塊的數據(哈希值)發生變動。因此,要修改任意一個區塊鏈的數據只能將后續所有區塊都重新生成。但是,重新生成區塊面臨著巨大的工作量。當后面存在6個以上區塊時,巨大的工作量和時間、資源消耗造成實際上不可能全部篡改這些區塊的數據。正是這種歷史數據不可更改的特性,確保區塊鏈具有較高可信度和安全性。 2.區塊鏈的運作流程 在區塊鏈網絡中,每個參與者(peer)控制的計算機終端構成一個節點(node),他們彼此平等、各自獨立擁有全網數據的副本,稱為分布式存儲(distributed storage)。區塊鏈本質上是分布式賬本技術,各個節點構成一個對等網絡(peer to peer network),又稱P2P網絡。每個節點通過唯一對應的密碼(即私鑰)和地址(即經哈希運算得到的公鑰,相當于用戶名)來管理自己的“錢包”。如圖2所示,在區塊鏈上完成交易的過程包括以下幾個步驟: (1)創立交易。交易雙方經過協商達成協議,買方使用存儲在“錢包”中的地址和私鑰進行數字簽名,證明自己對數字貨幣的所有權并且不能被其他人更改。 (2)鏈內廣播。由買賣的某一方在區塊鏈上發出申請,并通過P2P網絡的泛洪(flooding)路由協議等廣播通知鏈上所有節點的參與方。如果后續被任一節點驗證無效,則停止在區塊鏈上的廣播。 (3)檢查確認。各個節點在區塊鏈的本地副本上分析數字簽名、驗證買方身份合法性,以及是否有足夠多的貨幣余額,即區塊鏈上所有指向該節點的未完成交易輸出(UTXO)。所有節點驗證通過后,交易信息被記入各節點副本中。 (4)封裝區塊。在10分鐘內產生的所有交易通過各節點驗證后,被分別集中打包構成一個候用區塊。每個參與者都可以對未記入區塊鏈的交易內容進行記錄。為了避免多節點同時記賬帶來的信息混亂,每次只有一個參與者能夠將自己記錄的內容寫入區塊鏈,并獲得相應的收益。以比特幣為例,2009年1月創立之初每個區塊獎勵獲勝節點50個比特幣,此后每4年減少一半,直到大約2140年約2100萬個比特幣全部發行完畢。此外,交易方還要支付給記賬節點一定的交易費用。 (5)競爭記賬權。區塊鏈會根據某種資源占有率來決定記賬權歸屬,經各節點普遍認可的決定機制稱為分布式共識(distributed consensus)。其中,最常用的工作量證明(proof of work,PoW)依據的資源是計算能力。其他的共識機制中,權益證明(proof of stake, PoS)依據各節點持有的加密貨幣數量,委托權益證明(delegated proof of stake, DPoS)則是指用戶將自己持有的加密貨幣換成股票,從而競爭記賬并獲得獎勵的權利。 其中,PoW的具體過程如下:①生成用于給記賬權節點發放獎勵和手續費的交易創幣(coinbase)交易,并與其他所有將要寫入區塊的交易組成列表,通過梅克爾樹算法生成梅克爾樹根哈希值,②將其和區塊版本、父區塊哈希值、時間戳、難度目標和Nonce值等字段打包組裝成80字節的區塊頭,采用SHA256等運算求出區塊頭的哈希值。③其中,難度值決定產生一個合法區塊所需要的哈希運算次數。例如,比特幣系統為了保證平均10分鐘產生一個區塊,每產生2016個區塊(2周時間)會根據全網算力的變化所有節點自動統一調整難度值。調整公式:新難度值=舊難度值×(過去2016個區塊花費時長/20160分鐘)。難度目標值是最大目標值與當前難度值的比率,其中最大目標值為恒定值。④參與競爭的節點不斷修改區塊頭中的Nonce字段值(通常是遞增1),對每次變更后的的區塊頭做雙重SHA256運算。當結果值小于當前網絡的目標值時則解題成功,工作量證明完成。競爭記賬權的行為和參與者又分別稱為“挖礦”和“礦工”。 (6)記賬上傳。首先完成工作量證明的參與者在鏈上廣播解題答案。經多數節點驗證后得到記賬權,把新區塊記入已存在的區塊鏈中,每個節點都更新本地副本。 (7)交割轉賬。數字貨幣從買方轉移到買方的“錢包”,記賬的“礦工”賬戶轉入相應收益,以補償其“挖礦”所進行的高強度運算和設備、電力等資源付出。 3.區塊鏈的主要特征 區塊鏈的基本架構和交易運行流程說明,它依靠加密算法、分布式記賬和共識機制等技術,在鏈上各節點間構建起了一種新的信任體系、實現了安全、可驗證、平等的價值傳輸,打破了傳統的中心化機構對授信的壟斷以及由此帶來的低效率、信息不對稱等問題。總體而言,區塊鏈具有以下五個方面的特征。 (1)分布式結構。此處英文為“decentralized”,可以直接翻譯成“去中心化”。但是,軟件系統的網架結構包括單中心、多中心和分布式3種,區塊鏈的“點對點”(P2P)模式指的是第3種,第2種雖然存在多個中心也屬于“去中心化”結構。這是區塊鏈顛覆性特點和核心優勢。所有數據的存儲、傳輸、驗證和交易都通過各節點的電腦或手機等終端上的應用程序完成,不依賴于任何中心化的硬件或機構。實現點對點達成共識基礎上的直接交互,可以實現實時交易結算,使交易更加自主、簡單和節約資源。所有節點具有同等的權利和義務,排除了被銀行、信用卡公司和征信機構等中心化代理的風險,加速了資金和資產的流通、提升了價值的流動性。分布式結構還意味著系統中的數據塊由所有具備記賬功能的節點共同維護,任一節點數據的損壞或滅失都不會影響整個系統的運作,也降低了節點參與人故意作惡的道德風險。 (2)防篡改性。采用分布式記賬技術,鏈上每個節點都可以復制持有一份完整的數據。任何人要改變區塊鏈里面的信息,至少要有能夠控制鏈上51%節點的算力,這顯然幾乎無法做到。每個新區塊保留時間戳、嚴格按照時間先后順序被上傳到鏈上。區塊鏈采取不可逆的單向哈希算法,將父區塊身份識別哈希值和所有交易信息壓縮換算成新的唯一的身份密碼。內部數據信息的任意改動都會導致哈希值徹底改變,從而被后續的節點所察覺和排斥。借助分布式系統各節點的工作量證明等共識算法,可以用強大的算力消耗或代幣數量等增加破壞系統難度。所有這些都使得篡改區塊內的數據成本極高,擁有足夠強算力的節點可以通過競爭記賬權獲取更多的獎勵和收益。 (3)可追溯性。分布式記賬、時間和哈希換算上的不可逆性,使得每個節點的行為數據都被所有節點清晰無誤地記錄下來,參與各方只能自動化依規處理,避免欺詐、偽造等失信行為。此外,也便于監管機構實時監控、追蹤和還原鏈上活動,提高監管透明度和工作效率。 (4)保密性。各節點之間基于正確的地址和算法即可進行彼此識別和數據交換,無需獲取對方的真實身份,也不需要傳統的通過第三方認證中心(certificate authority, CA)頒發數字證明進行實名認證。采用公鑰公布地址、私鑰進行簽名和身份認證相配合的方法,使鏈上交易具有高度的匿名性,解決了中心化機構數據存儲不安全的問題。 (5)開放性。區塊鏈技術通常是開源的,除了交易各方的私有信息被加密外,公共鏈的代碼高度透明、對所有人開放,任何人都可以通過公開接口查詢鏈上數據。以太坊(ethereum)等區塊鏈平臺還具有圖靈完備性(即代替計算機解決所有問題)和高度靈活的腳本代碼系統,支持用戶創建高級貨幣、精確定義智能合約(smart contract)、開發應用終端。
提交成功!非常感謝您的反饋,我們會繼續努力做到更好!
這條文檔是否有幫助解決問題?
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP