banner
leaf

leaf

It is better to manage the army than to manage the people. And the enemy.
follow
substack
tg_channel

區塊鏈發展的三個階段

對未來 3~5 年區塊鏈的落地應用場景探索發現。大致可以分為三個階段:

● 資訊 “區塊鏈化”;

● 價值 “區塊鏈化”;

● 場景 “區塊鏈化”。

23.1 資訊 “區塊鏈化”,解決資訊割裂問題 區塊鏈技術能維護驗證一個公共的交易帳本。一般而言,每個技術的應用,一般會從最能改善績效、提高效率的節點開始。平時大家也有自己的支付寶、銀行卡的交易帳本。一般情況下,支付寶之間的轉帳、同行轉帳基本能即時到帳,只需要支付寶公司、某家銀行驗證記錄即可;而跨行轉帳、甚至跨境轉帳支付,需要很長一段時間來確認交易,主要原因是各個銀行、出入境登記機關,需要反覆驗證和核對,耗費大量人力、物力。而據 IBM 全球企業諮詢服務部、大中華區銀行業總經理范斌介紹,現在很多銀行業務已經籌備或實現交易數據的 “區塊鏈化”,很大程度上提高了跨境跨行匯款效率、去掉冗餘工作等問題,一般以聯盟鏈的形式存在。本質上而言,區塊鏈化的公共帳本,能讓各個國家、各個銀行體系的數據互通互聯,實時同步更新,對每個用戶而言,能簡化開戶流程,便捷服務,對各個銀行而言,對各個用戶的信用數據能有全面了解,降低業務風險,提供精準信貸服務等。

除了銀行體系裡的票據、支付等環節能夠運用區塊鏈技術很好地改善。在其他實際生活中的場景,由於資訊割裂而導致的各種各樣的社會問題,都可以通過資訊 “區塊鏈化” 來解決。

可以預見的價值 “區塊鏈化” 的應用場景有很多,一般需要具備以下幾個特徵:

● 雙方交換的產品或服務可數字化;

● 服務 \ 產品標準化,評估體系清晰可查;

● 由個體提供服務,個體消費服務;

● 隨著個體的逐步加入,網絡價值越大。

舉一個簡單的例子,共享出行行業,服務的提供方主要是司機(車主),服務的消費方是乘客,司機將乘客從 A 點送到 B 點,乘客給司機一定的報酬,整個交易結束。司機將 A 點送到 B 點,可以通過 GPS 地理導航來計算行駛路程,時間戳來記錄行駛時間,按照一個全網公示的計算方式自動生成路費,然後司機把乘客送到目的地後,確認,乘客帳戶自動將錢轉到司機帳戶。隨著乘客和司機加入區塊鏈化的網絡越多,司機越容易接到更多合適的訂單,乘客也更容易搭到車。

本階段的主要創業機會在於 “去中介化” 的應用場景,比如區塊鏈化的滴滴、美團、淘寶等。由於這些中心化的公司並不存在太大的技術壁壘,例如滴滴和美團的訂單分配算法並不複雜且容易複製重現,需要克服的問題在於用戶的獲取,以及解決鏈上交易吞吐量的問題,問題的解決有賴於大眾區塊鏈知識的教育以及技術的發展,還有其他具有類似特徵的產業,例如 P2P 保險行業、信貸行業、博彩、預測、遊戲等,滿足上述四個特徵的應用場景,都可以通過價值 “區塊鏈化”,實現交易的 “去中介化”,解決交易信任的問題。

從鏈的承載能力和資訊的特徵角度分析,上鏈、大量節點分佈式驗證記錄的資訊一般需要具備以下幾個特徵:

● 資訊價值較高,例如比特幣的轉帳;

● 每條資訊之間相互獨立,互不干擾;

第一條是保證更多節點參與驗證的經濟動力,如果海量價值較低的數據,放在集中式的伺服器裡也未嘗不可;第二條是對資訊有一定程度的篩選,打包區塊 + 鏈式串聯在相互獨立的資訊流裡有很好的作用。若在資訊相互依賴的情境下,區塊 + 鏈式結構不一定起到很好的作用。

未來的發展,可能會出現資訊的信任等級,依照分佈式存儲和驗證的隨機性節點多或少來進行定量化評估。可以預見,在未來更多的應用場景中,只有少數待確權、交易記錄等資訊會需要大量甚至全網的節點去驗證,各種應用場景下 app 的文章、圖片、視頻、音樂等只是鏈上字符串映射到現實生活的投影。

,資產上鏈的對象包括資產的所有權、使用權以及收益權。表 27-3 比較了不同資產的所有權、使用權以及收益權的上鏈優先級分佈。人們發現:

(1)同一資產上鏈的內容不同,優先級會有所差異。以土地、房屋及建築物為例,當上鏈的資產是使用權(租賃)和未來收益權時,會成為最優先上鏈的資產(第 1 類資產),而如果上鏈的資產是所有權,其對去信任的需求低,資產的流通率低,因而是第 11 類資產。

(2)資產的收益權上鏈優先級相對較高。收益權因其對去信任的需求高,本身流通性高,可操作性強,是非常適合上鏈的資產類型。因此,對資產權益化後(Token)的上鏈應給予重視。

(3)資產的所有權上鏈優先級相對較低。除了傳統的股票、證券和應收款項等金融資產,其他資產的所有權較收益權和使用權的上鏈優先級會偏低,這主要是由於資產流通低,以及去信任需求低造成的。

(4)二手交易、租賃市場是資產上鏈可能的增長點。無論是二手交易市場,還是租賃市場,對交易內容的去信任化需求很高,特別是租賃市場,因為資產使用權的流通率高,使得其位於資產上鏈優先級的第一位。

表 27-3 資產上鏈優先級分佈

image

image

區塊鏈技術作為一種分佈式記帳的技術,能有效地實現資產流通過程中公開透明、去中心化、隱私保護等需求。隨著區塊鏈技術 “熱潮” 的掀起,一些人出於推廣或炒作、融資等目的,對區塊鏈技術盲目 “吹捧”,認為一切資產都需要上鏈。實際上,不是所有資產都適合上鏈。要判斷資產是否適合上鏈,需要清楚兩個方面的問題:

(1)上鏈的內容是資產的使用權、所有權還是收益權。同一資產上鏈的內容不同,優先級會有所差異,資產的收益權上鏈優先級相對較高,而資產的所有權上鏈優先級相對較低。

(2)在判斷資產上鏈的優先級時,需要綜合供給層、操作層和需求層三個層次的因素。本文列舉了去信任的需求、資產價值和資產流通以及可操作性四個可量化的指標,作為 “區塊鏈技術 + 資產管理” 可行性判斷的標準。其中:

● 去信任的需求是資產上鏈的原動力。不是所有資產都需要上鏈。區塊鏈技術是必須能解決當前資產經營過程的 “痛點”。如果當前的資產交易過程中,買、賣方信任關係可以得到保證,資產能實現快速流通,那麼這類資產就不需要應用區塊鏈技術了。

● 資產價值和資產流通是資產上鏈的基礎。首先,資產上鏈對資產價值和流通性是有要求的。如果對於低價值的或者顧客對其價格敏感的資產,交易頻率較低的或者一次性交易的資產,應用區塊鏈技術的可行性較低。

● 可操作性是資產上鏈的催化劑。可操作性不資產上鏈的決定因素,但是它會影響資產上鏈的快與慢除此之外,本文也得出了以下兩個觀點:

(3)最適合優先上鏈的資產包括:土地的使用權和收益權,房屋及建築物的使用權和收益權,專用設備的使用權和收益權,機械設備的使用權和收益權,貴重金屬、珠寶的使用權和收益權,煤炭、石油、天然氣的收益權,社交、社區、娛樂平台虛擬財產的所有權,股票、債券的所有權,應收款項的所有權,古玩字畫的收益權,專利權、商標權的使用權。

(4)二手交易、租賃市場是資產上鏈可能的增長點。原因包括兩個方面:一是這兩類資產的使用權對去信任的需求,

從面向對象、代幣結構、共識機制與發行方式、分配方式幾個維度探討通證的發展現狀,得到以下結論:

(1)從數量上來看,支付貨幣類、通用平台類和行業應用類分佈相對均衡,呈現 “三足鼎立” 的態勢。

(2)從代幣結構上看,以一層代幣為主,多層代幣並行發展。其中,支付貨幣類通證均為一層代幣,二層代幣包括五種代幣,三層代幣有一種。

(3)共識機制和發行方式更加靈活。在共識機制上,從比特幣最早採用的工作證明機制 POW 逐漸發展到權益證明機制 POS 和拜占庭容錯機制 BFT,到委託權利證明機制 DPoS 和委託拜占庭容錯機制 DBFT,到將各共識機制組合的混合共識機制。在初始發行方式上,根據項目特點、社區經營和技術推廣的需要,除了經典的挖礦釋放外,其他手段被引入到推動通證初期的發展,包括預挖礦、ICO 眾籌、風投、空投、打賞等。

(4)激勵方式多元化。挖礦獎勵和交易費用節點獎勵依然在當前通證經濟體系中扮演重要的角色,特別是支付貨幣類通證以及通用平台類通證。對於應用類平台通證,在激勵方式上一般會根據通證項目的內容做個性化的調整。

(5)社區治理融入通證經濟體系的建設。特別是對於通用平台類和應用類通證,社區治理機制在推動通證經濟可持續發展中扮演著重要角色。

其次,本文梳理總結了目前通證經濟發展模式。對以比特幣為代表的通證經濟體系的發展路徑分為三類:一是從技術角度出發,解決資訊隱匿性、交易效率、能耗大等問題;二是從拓展應用場景出發,將通證經濟落實到更多的項目中;三是從減少市場擾動角度出發,即減少市場因素(如價格波動)對區塊鏈社區的影響。具體來說,由一層代幣結構發展為多層代幣,將通證的價值屬性和管理屬性剝離,從而使得通證的價值波動不會影響區塊鏈網絡的正常運作。

同時,討論了通證經濟體系的未來發展方向:

(1)對於從技術完善角度設計的通證,專注於解決區塊鏈網絡的技術難點,強調技術創新和應用場景的普適性,因此,這類通證往往會選擇一層代幣結構,並且以一層代幣結構為特點的支付貨幣類和底層技術開發平台類通證仍會作為主流發展的通證經濟體系。

(2)對於服務於應用場景的通證,旨在追求區塊鏈技術的應用能力,因而會根據場景內容的不同做個性化的調整,這類通證既可能選擇一層代幣結構,也可能選擇多層代幣結構。

(3)當通證經濟體系要求區塊鏈社區穩定,減少市場投機行為、價格波動等影響時,一般會選擇多層代幣結構。多層代幣結構包括兩部分內容:管理代幣和價值代幣。以社區經營為場景的通證經濟體系都適用多層代幣結構,目前,多層代幣結構的應用場景還比較少,但可以預期其在未來通證經濟體系設計中的巨大潛力。

最後,本文指出通證經濟在發展和應用過程中的 “痛點”:

(1)區塊鏈技術的發展尚不成熟,表現為區塊鏈底層技術尚不完善和區塊鏈技術的運營管理模式不成熟。

(2)通證項目落地進程艱難。從市值上比較,支付貨幣類通證的總市值佔比 63%,通用平台類佔比 27%,而應用類通證佔比不到 10%。除內容、娛樂及廣告和物聯網技術以外,非金融類的通證僅為 1%。

(3)通證經濟發展環境混亂,落地不確定性大。表現為兩個方面,1)通證創始人僅把通證經濟作為籌集資金的手段,而不思考通證經濟的落地問題。2)通證經濟能否落地以及多久能落地都存在很多不確定性。

image

去中心化存儲#

另一個比較火的創新是去中心化存儲,是一種利用分佈式存儲技術,將文件分塊存儲在不同存儲節點的應用型創新。相較於中心化存儲,它擁有更高級別的隱私保護,存儲成本也更低,且具備更冗餘的數據備份副本,能有效避免單點故障。

其實去中心化存儲跟區塊鏈的關聯並沒有那麼密切,區塊鏈在其中的主要作用是作為存儲層之上的一種激勵計費機制。擁有空閒硬碟設備的 “礦工” 將空間貢獻出來,通過特殊設計的存儲證明機制在區塊鏈中記錄貢獻度,主要考察維度集中在貢獻時長、空間大小以及有效空間利用率等等,貢獻度可用於獲得等額代幣回報;而有存儲需求的用戶需要支付代幣,用於獲取更多的數據存儲空間。

不過,去中心化存儲的發展目前也面臨著一些問題,主要有這樣三方面。

  • 其一,對其幣價的炒作幾乎從未停止,真實有存儲需求的用戶幾乎無法忍受因幣價波動而導致的成本不確定性。

  • 其二,不同礦工貢獻的空間是極度分散的,雖然在全世界各地都可以搭建,但受制於當地網絡環境以及硬碟本身的機械素質,整個去中心化網絡的存儲性能不高,遠不如中心化存儲,因此只適合冷數據以及個人數據存儲。

  • 最後,隨著礦工的湧入,大部分項目的存儲空間供應規模遠遠大於真正的需求,已經處於供大於求的局面,數據來源是當前急需解決的問題,怎樣解決數據來源是當前重點,否則難有更大的發展。

跨鏈#

前面所列舉的 2 類創新都屬於應用創新,相較而言,跨鏈則屬於技術創新。不同的區塊鏈網絡是獨立的,是一個個的數據孤島,跨鏈技術就是在這些島之間構建互通的橋樑,提供不同鏈之間數據互通的可能性。

最初的跨鏈是兩個鏈之間的直連,而現階段的跨鏈更像是一個中樞,鏈與鏈之間的交互不再直接,而是通過中繼鏈進行資訊的中轉,可以說,跨鏈技術的發展是其他創新的基礎。就比如下圖是一張波卡跨鏈協議的跨鏈網絡示意圖,通過中繼鏈把其他的公鏈嫁接在同一生態系統中。

image

通過上面對兩大類公鏈圈技術應用創新的簡單分析,我們不難看出投資激勵對於公有鏈的推動作用,這也無可厚非,天下沒有免費的午餐。沒有創新,就沒有投機的爆點,也就不可能有生態的繁榮。相較於前一階段的野蠻生長,

純投機的項目逐漸消失,DeFi 是傳統金融的衍生,而去中心化存儲則是共享經濟的一次探索,新概念的提出讓它更貼近大眾生活。

  • 聯盟鏈圈的發展 了解完最近公鏈圈的創新,我們再來看看聯盟鏈圈的發展。在聯盟鏈圈的這幾年,我見證了區塊鏈技術在企業商業活動中的實踐,如何使傳統業務在區塊鏈技術的加持下降本增效,如何降低企業間合作門檻,當然也碰到了區塊鏈技術現有的發展壁壘。個人對區塊鏈技術在企業的發展,我總結了三個階段。

數據存證#

區塊鏈技術具有時間連續,不可篡改,可回溯等特性,因此非常適合需要留存證據的數據存儲。現階段,像產品溯源、互聯網法院、電子證照等應用都屬於這一階段的產物,大多數應用在區塊鏈上存儲的也只是數據證明,而非原始數據。

這種做法既與區塊鏈本身的數據承載能力有關,也是業務本身的需求決定的。區塊鏈中的數據從網絡的維度來看,對存儲及網絡帶寬的需求會隨著數據量的增大呈指數級增長的趨勢,因此需合理控制數據的取向,關於這一點我會在技術篇的末尾為你再做一個解讀。數據存證階段的應用只是將數據存儲在區塊鏈上,只有在必要的時候才會利用其中的數據進行取證,絕大多數時候,數據是死的。區塊鏈技術只是這些應用的一種特殊的技術保障,而不是非區塊鏈技術不可。且大多數時候是各家玩各家的,並沒有涉及到多方參與。在此階段,區塊鏈的可替代性較強。現在大多數企業區塊鏈應用還停留在這一階段。

數據交換#

傳統的企業間合作都涉及到了商業數據的交換,一般情況下,數據交換的模式是數據提供方或需求方提供 API 接口的形式或拉或推的形式進行。而一旦涉及到數據的相互需求以及多於兩家企業參與的情況,問題就變得更加棘手。而通過區塊鏈技術可以很方便地解決這個問題,在各家企業內部部署區塊鏈節點,各家只需與自家運維的節點交互,區塊鏈機制自動地將數據同步至其他參與方,任一節點如有新數據上鏈,區塊鏈的事件通知機制自動通知各企業內部的應用。在此階段,企業合作強依賴區塊鏈作為數據交換的樞紐,因此區塊鏈的替代性較低。且現在已有企業應用達到了數據交換的階段,比如聯邦學習與區塊鏈技術的結合。

價值轉移#

以太坊存在的意義之一,就是提供了一個將現實價值與數字世界錨定的媒介,也讓我們看到了資訊網絡向價值網絡轉移的可能性。在企業區塊鏈領域,這種意義可被無限放大,企業對外提供的產品無非是商品 / 服務 / 解決方案等。而如果通過區塊鏈技術將企業產品轉換成價值網絡中的流通資產,在基礎價值之外,亦可延伸出多種資產應用的可能

而在這個階段,區塊鏈技術是價值網絡的基石,無可替代。當然,現階段離價值網絡還很遠,我也無法準確地描述未來的樣子。企業區塊鏈發展的時間較短,總的來說還只處於剛剛起步的階段。但國家對其未來的前景非常看好,從高維度引導區塊鏈在國民社會經濟等各個領域的發展

區塊鏈 +,雖還處在發展的第一階段,但已有更進一步的趨勢。當然,我們也應該看到,區塊鏈技術的價值在過去的十多年中雖已被逐步驗證,但終究是發展時間還較短,技術本身也還不成熟,且所帶來的思維模式的變革也足夠震撼,區塊鏈

技術全面走進我們的工作生活還需要更多時間。如果有一天,公鏈的每一個創新都能賦能實體經濟,企業間能放下曾經構築的層層商業壁壘,公鏈圈與聯盟鏈圈重新相交相融,那就是區塊鏈技術的黃金時代,價值網絡觸手可及。

這是否就能說明區塊鏈可以傳輸實體價值了呢?主要三點:錨定、確權、交易(重新確權)

看現在的互聯網大佬,華為,螞蟻,百度,騰訊就知道,都是在聯盟鏈深耕細作吧,目前幣圈的熱度褪去就是公鏈熱度褪去,鏈圈崛起,其實基本指聯盟鏈崛起是這樣的,現在聯盟鏈佔主要的大面,公鏈被打壓的厲害

數字貨幣交易平台,比如幣安、火幣等,它們屬於哪一個圈子呢?他們是屬於公鏈圈

“將企業產品轉換成價值網絡中的流通資產。” 這句話不太理解,企業提供產品或服務,為什麼需要轉換到價值網絡上去

暢想價值網絡可能的場景。可以這麼理解,現在互聯網上流轉的是資訊,但資訊是有正確與錯誤的,所以無法給資訊估價(衡量價值),而價值網絡想表達的是有價值的資訊,企業提供的產品服務本身就是有價值的,當然可以過渡到價值網絡,除此之外,或許還能產生出額外的價值,但這還未可知,只是一種猜想。

可能很多人都覺得區塊鏈是一個多麼新穎的技術,其實不然。它不過是舊瓶裝新酒,本身並沒有創造新的技術,只是將幾種已經成熟的技術進行組合,是融合性創新。而我們初步開始學習區塊鏈的時候,最重要的就是把握其技術特點,並且了解它的技術基礎。

區塊鏈的技術基礎,#

同時幫助你掌握區塊鏈技術最重要的三個特性。

區塊鏈技術發展到現在,尤其在以太坊將智能合約的概念與區塊鏈技術融合之後,區塊鏈已經變成了現實與網絡的媒介,可以說區塊鏈是價值的載體,是一種新型的社會生產關係。

怎麼理解這句話呢?我個人的理解是基於區塊鏈技術,我們可以打通現實世界與網絡世界的屏障,將物質虛擬化,將價值實體化。未來的互聯網流轉的不是資訊,而是活生生的價值。

未來可期,不過也要始於足下。我們不妨先回歸現實世界,前段時間,網上有一張圖引起了廣泛傳播,被網友戲稱為 “區塊鏈技術實體化”。拿這個例子來說明區塊鏈的技術特性,再適合不過了。 區塊鏈技術實體化 這是遼寧沈陽一小區大門,業主用多把鎖串聯在一起,形成了一套簡單的門禁系統。誰家有車誰就加鎖,每把鎖都有標識,小區車主只需拿鑰匙打開對應鎖頭,就能打開大門。這樣就防止了外來車輛佔用小區車位,不得不說,高手在民間。

化表達區塊鏈技術特性的呢?首先,我們需要明確區塊鏈有哪些特性,一般我們認為有 3 點,分別是:結合這個實例,我們來一一理解這幾個概念。

去中心化 可追溯性 不可篡改

去中心化 在這個小區門禁系統中,每把鎖代表著一家小區業主,他們不需要物業公司統一管理,只需要管理維護自己的鎖就能保證系統的正常運行。每一把鎖有大有小,有貴的有便宜的,業主也可能有多輛車,但在這個系統中他們沒有地位上的差別。而且,當有新的業主加入或者有業主搬走,只需要增加或去掉相應的鎖就好。 你有沒有發現,這裡面就蘊含了去中心化的概念,門禁不再由物業公司這個 “第三方機構” 統一管理,每把鎖都是管理的一部分。同樣的道理,區塊鏈存在的初衷就是去除中心化的第三方機構(可以回看第 1 講),整個網絡的數據及狀態是由網絡中所有的節點共同維護的,他們沒有地位上的差別,有的只是可支配的資源的不同,且任一節點離線也不會影響系統的運作。你可以自己試著先推演一下,想要實現去中心化,應該選取怎樣的網絡模型和存儲模型呢?沒有中心節點的系統從某種角度來講,可以說每一個節點都是中心,每一個節點都能對外提供服務,同樣也能從其他節點請求服務,而這也正是點對點網絡模型的特性,可以說,節點互為彼此的數據生產者及消費者

image

另一方面,因為節點角色對等,因此每一個節點存儲的數據應該是一致的,都獨立地維持一條完整的區塊鏈鏈式結構,即便一些節點數據丟失,但只要還有一個節點完好,歷史數據就不會丟失。這有效地避免了單點故障帶來的系統崩潰,相較於傳統的數據災備模式,其可靠性可以說是萬無一失。當然,去中心化只是一個理想化的狀態。現階段來說區塊鏈去中心化本質上是相對去中心化,我們也可以叫做多中心化。我們在理解概念的時候,不僅需要理性思維,更要學會使用感性思維去接受中間過程的漸變

image

可追溯性 在門禁系統中,每把鎖記錄了業主的相關資訊,是跟業主一一綁定的,這就可以在異常情況下對破壞規則的業主進行追責,比如忘記鎖門而導致外來車輛進入小區,這體現了該系統的可追溯性。 在實際區塊鏈運轉中,同樣是完成資訊追溯這件事兒,道理雖然相通,但是更為複雜,我來給你說一說。

對單個節點來說,區塊鏈可以被認為是一個時序數據庫。每一次對系統的操作,實質是在每個節點數據庫中存儲了相應的數據及日誌。且每一份數據都不是離散的存儲,而是按時間順序前後關聯在一起,新的數據一定是從某一組之前已存在的數據派生而來。

依照這種關聯,如果想回溯數據的狀態變更歷史是很容易的,只需要依次往前查找,一定會找到數據的初始狀態。而這一切都依賴於區塊鏈存儲技術,存儲主要關注數據結構以及數據關係,包括交易以及區塊的數據結構,交易與區塊的關聯關係,區塊狀態的存儲模式等等。

不可篡改 另一個技術特點是不可篡改,這是一個比較容易被初學者搞混的概念,所謂篡改,就是私自的不被認可的修改,而不是不能修改。 我們回顧例子,可以發現業主手中的鑰匙與鎖是一一對應的,沒有鑰匙或者用錯誤的鑰匙,車輛都是進不了小區的。 社會車輛要想進入小區,可能會採取盜用某一業主身份,多配一把鑰匙或者添加一把鎖,這就是篡改。而只要被業主委員會發現,就會及時糾正錯誤,將社會車輛清理出去,也就實現了不可篡改。

在區塊鏈中,實現不可篡改需要兩種技術來保障。前面例子裡 “鎖” 的功能由密碼學技術實現,而 “業主委員會” 的角色則是由共識算法來扮演。前面我們講過,單個區塊鏈節點中的數據是按時間的先後順序串聯存儲的,而串聯的關鍵

就利用了密碼學中的哈希算法。 哈希算法可以把一段數據變換成固定長度的數據指紋,而且只要數據有細微變化,得到的指紋也是大不一樣的。通過這個方法,我們可以將前一時間段的數據指紋與後一時間段數據整合在一起。周而復始,後一時間段內的數據永遠都會包含前一時間段的數據指紋,這樣就形成了一條由數據指紋串聯的信息鏈條。

image

如果有一個作惡者想要修改中間某一時間段的數據,那麼依照哈希算法原理,其對應的數據指紋則會改變。因此他不得不依次修改後續的每一個時間段的數據,否則數據鏈條就會在他修改的這一刻斷掉,不再具備可追溯性。

image

我們可以把困難進一步放大,想一想如果作惡者真的把本地節點的所有數據都篡改一遍,又要怎麼應對呢?這時候就要讓共識算法出馬了,它可以保證整個系統的數據不被篡改。所謂共識,就是在一個分佈式系統中保持數據的一致性,而如果出現數據不一致,大多數共識算法都遵循少數服從多數的原則。

區塊鏈網絡中的每一個節點的數據都是一致的,作惡者只是篡改了自己維護的單個節點,從整個網絡的維度來看,依舊是以大多數節點的數據為正確數據。最後,我想提醒你,看問題不能只看一面,不可篡改其實是一個辯證的特性。少數服從多數的規則意味著如果作惡者能夠控制大多數的節點資源,那麼篡改區塊鏈是可能的。在一個健壯且足夠分散的網絡中,篡改所要付出的成本是巨大的,幾乎不可能成功。而一旦成功,剩下的少數派才是妄圖破壞區塊鏈共識的作惡者,以太坊的硬分叉

區塊鏈是新一代資訊技術的重要推動力,它利用了存儲、密碼學、點對點網絡及共識算法等基礎技術的融合,提供去中心化、可追溯以及不可篡改等特性,可以用來解決互聯網中的信任及安全問題,從而推動互聯網從資訊傳遞向價值傳遞的變革。

你可能覺得剛才的解讀有點書面化,為了幫助你理解,我再給你分享一個通俗版本的:可以說存儲是磚頭,密碼學是鋼筋,點對點網絡是混凝土,而共識算法是設計圖紙,以他們為基礎,揉和在一起,就構建了區塊鏈這座精妙的上層建築。我想和你強調的是,區塊鏈技術並不是教條主義地照本宣科。比特幣是區塊鏈,以太坊也是區塊鏈,技術本身也並沒有規定實現的唯一路徑。

區塊鏈是一個分佈式存儲、篡改難度巨大的資訊存儲技術,目前主要的應用是比特幣等數字貨幣。

區塊鏈是一種去中心化、可追溯、不可篡改的資訊存儲技術,是多種技術結合的融合創新,主要解決的是互聯網中的信任和安全問題。

閱讀《區塊鏈革命:比特幣底層技術如何改變貨幣、商業和世界》,如果不太了解技術,可以閱讀《區塊鏈:新經濟藍圖及導讀》

git 就是變相的區塊鏈

  • 去中心化:每個用戶在本地都有自己的 git 倉庫,並且相互之間可以 pull 和 push

  • 可追溯性:每個 git 提交都依賴於上一次提交,可以追溯到最初的提交

  • 不可篡改:修改本地的某個歷史提交後,其之後的提交的 hash 值都會變化

直觀的角度,用 “鐵索連環” 的例子和你探討了區塊鏈技術特性,也順便引出了區塊鏈技術基礎。從今天開始,我會用幾講的時間為你解釋每一種技術在區塊鏈中的最核心應用,以點帶面,為你勾畫出區塊鏈技術體系。這一講我會帶你深入單個區塊鏈節點,讓你了解區塊鏈存儲是如何設計的。其實一說到存儲設計,我們首先想到的是區塊鏈裡如何存儲數據,以及要使用哪種數據庫這些常規定式內容。但在我看來,這些都只拘泥於存儲設計的表面。想要真正把握住區塊鏈存儲的要點,我們更需要把握的是交易、區塊還有狀態這三個基礎概念,有了這些基礎,你再去分析區塊鏈存儲設計就會駕輕就熟了

image

首先需要理解的概念就是交易(Transaction),這是區塊鏈中的最小也是最核心的知識點。因為我們最初接觸區塊鏈大多從比特幣開始,所以我們通常會把交易理解成轉帳,但其實這個理解比較片面。其實在區塊鏈中,交易的概念已經有所擴展。

從行為的角度解釋,交易等同於操作(Operation),我們向區塊鏈網絡提交一筆交易實質上是發起了一個操作,而操作的具體內容與特定區塊鏈協議有關,比如在以太坊中,一個操作可能就是執行了智能合約中的一個方法。而如果我們從計算機技術的角度分析,交易實質就是原子事物,只是翻譯的不一樣,它們的英文都是 Transaction,交易是區塊鏈網絡中數據的最小的組成部分。一筆交易提交後,它只能有兩種狀態,要麼成功要麼失敗,不可能存在成功了一半的情況。

不同區塊鏈對交易的定義雖然一致,屬性字段卻有所差異,但卻不影響我們抽象出一個通用的交易屬性模板。需要注意的是,並不是所有的區塊鏈都遵循下圖中的規則,此處只是方便你理解交易主要有哪些屬性。

image

我們可以看到,一筆交易通常有 8 個屬性(交易哈希本身也是一個屬性)。From 跟 To 分別指向交易的發起方及接收方,這個很好理解,比如一筆貨幣的轉帳當然需要有轉錢的跟收錢的。跟智能合約相關的屬性有三個,智能合約標識的是目前這筆交易要執行智能合約的名稱,隨後附帶了執行智能合約對應的方法以及執行該方法時應該附帶的參數列表,不同方法可能有著不同長度不同數據類型的參數,此處統一用參數列表表示。接下來的時間戳字段表示該交易在客戶端構建的時間。這個時間是客戶端獨立添加的,但是我們也不用擔心該時間與標準時間的差異,因為區塊鏈網絡在接收這筆交易的時候,會有交易時間的校驗,過早與過晚的交易並不會被網絡接受,這在一定程度上限制了作假的可能性。最後一個通用交易字段是簽名,一般情況下是 From 字段的帳戶進行簽發的,用於向網絡證明這筆交易確實是這個帳戶構建的,而不是其他人偽造的,主要是使用帳戶擁有者手中的私鑰對交易進行簽名,而私鑰只有帳戶擁有者持有。就像我們平常生活中使用的印章,只不過私鑰被偽造的幾率幾乎沒有,除非被盜。

有一點需要注意的是,區塊鏈中所有的交易基本上都是從區塊鏈網絡外發起的,區塊鏈網絡只接收交易而不生產交易,且不對交易做任何改動。也就是說,交易在客戶端構建出來以後就固化了。

因此我們可以使用交易內容的哈希值作為交易在區塊鏈網絡中的標識,且該標識不在交易的字段內容中,怎麼理解呢?可以這樣想,身份證可以代表你這個人,但身份證並不是你人的一部分。

另外,你可能還有這樣一個疑惑,如果每筆交易都是客戶端獨立構建的,並沒有與網絡中的其他參與方進行協商,那這個交易哈希不會重複嗎?這裡就要用到哈希算法的性質了,哈希重複意味著產生了哈希碰撞,在我們後續的密碼學章節裡,我們會講到哈希碰撞的概率跟使用的哈希算法有關,且幾乎不可能碰撞。

區塊 理解了交易,我們再討論一下,要用什麼 “容器” 來存儲這些交易數據。其實這個容器就是區塊,你可以這樣理解交易和區塊的關係,交易相當於貨物,而區塊則是能夠容納多個交易的集裝箱。 在前面我們講可追溯性時,我們提到區塊鏈是時間段的數據前後關聯依次串聯整合成,而每一時間段的數據我們就稱之為區塊(Block)。區塊是指將節點一段時間內收到的所有(有效)交易打包而形成的一種數據結構,之所以將有效擴起來,是因為有些區塊鏈的設計也包括了無效交易。直接理解概念有些抽象,我們可以參照區塊示意圖去理解區塊的數據結構。

image

塊的設計貌似還比較複雜,不過你也別擔心,其實我們只需要理清三個關鍵點就能領略區塊的精髓。 區塊結構 第一点我們需要理清的是區塊的結構,從圖中看,區塊分成了區塊頭跟區塊體。區塊頭包含該區塊的基礎屬性,重要的屬性主要有 4 個:前置區塊哈希用於區塊間的關聯,交易根哈希用於區塊與交易的關聯,區塊高度用於標記當前區塊在區塊鏈中的位置,方便定位,而時間戳記錄了區塊打包的時間。區塊體則只有交易,且交易是有先後順序的,一般是按照交易的時間戳字段進行排序。

區塊間關聯#

第二個需要關注的點就是區塊間的關聯關係,這點我們已經多次提到,每一個區塊都會包含前置區塊哈希作為邏輯關聯兩個區塊的那個錨點。區塊哈希跟交易哈希類似,是區塊的外置屬性,在區塊構建完成後才能得到。如果我們從當前區塊一步一步往前追蹤,最終會找到創世區塊,而創世區塊也是有前置區塊哈希的,只不過是一個空值。比如你可以通過以太坊瀏覽器查看創世區塊的前置哈希。

image

區塊與交易 最後一點就是區塊與交易的關聯關係。雖然我們前面用了一个形象的比喻,把區塊和交易想象成集裝箱和貨物,但我們並不明白其中的原理。從概念上理解相對複雜一些,這主要是因為引入了一個不常見的數據結構:默克爾樹,我們可以先了解一下它。

默克爾樹是一種樹狀結構,一般情況下至少有三層,分別是葉子節點,中間節點以及根節點,中間節點的層數取決於葉子節點的數量,葉子節點的數量越多,默克爾樹的深度就越高。

它的構建邏輯是這樣的:相鄰的葉子節點進行哈希運算,得到的哈希值作為這兩個葉子節點的父節點。然後同樣的邏輯依次往上,最終倒數第二層僅剩的兩個中間節點經過一次哈希運算得到他們的父節點,也就是整棵樹的根節點,這樣由哈希值構成的默克爾樹就構建完成了。

對照前面的區塊示意圖我們可以發現,區塊體中包含的交易所對應的交易哈希,可以作為默克爾樹的葉子節點,然後依次往上進行哈希計算,最後得到的根哈希就是區塊體所有交易的交易根哈希,這個數據將會記錄在區塊頭中。看到這裡,你可能還有一個疑問,為什麼要這麼麻煩地引入默克爾樹呢?為什麼不直接把所有的交易揉在一起,取一個哈希就夠了呢?我們知道,對數據進行哈希計算得到的結果是可以作為數據指紋使用的,那也就意味著,哈希可以作為一種數據校驗機制。

要是此時區塊中有一筆交易被作惡者篡改了,如果我們設計交易根哈希的時候,僅僅對所有交易取一次哈希。那在數據校驗不通過的時候,就很難找到被篡改的交易,尤其是在交易數量特別多的時候。

而如果我們使用了默克爾樹,葉子節點哈希的任何變化都會傳遞至其父節點,一層層向上直到根節點,這就意味著根節點的值其實包含了所有葉子節點的哈希,但是卻將可能被篡改的交易分開處理了,這樣一旦出現問題,我們很容易就能判斷出出錯的分支。這提高了數據校驗的靈活性,減少了很多不必要的資源浪費。通過以上對區塊邏輯上三個關鍵點的梳理,我們理清了區塊設計的脈絡。區塊鏈之所以叫區塊鏈,從字面理解,正是因為區塊這種特殊的數據結構決定的。

狀態#

說完交易以及區塊,我們再來理解一個經常被遺漏的概念就是狀態(State),可能你之前從未聽過,但它的作用卻不可忽視。

在區塊鏈中執行的每一筆交易都有一個輸出,而狀態就是交易執行後輸出的累積。怎麼理解呢?舉個簡單的例子: 2 + 3 + (4 * 7) + ( 8 - 9 / 3 ) + 23 = 61 “=” 左邊的每一個加法旁邊的表達式我們可以認為是一筆交易記錄,“=” 右邊的 61 則是交易執行後累積後的狀態。

有限狀態機#

那麼我們可以發現,即便丟失了表達式的結果,但是只要我們還記著表達式,我們就可以再重新計算出對應的值,而這就是有限狀態機的概念,即在一個封閉的系統中,如果狀態起始條件一致,狀態改變條件順序一致,最終一定會得到一致的結果。而區塊鏈就恰恰按時間順序記錄了所有的交易,因此即便丟失了狀態,我們也可以很容易地重放狀態,只要我們按照順序再執行一次交易即可。所以從某種角度來講,區塊鏈也是一種有限狀態機。

既然可以重放狀態,為什麼還要保留狀態呢?我們不妨做一個情景假設,如果你現在正在執行一筆交易需要某個輸入,而這個輸入跟之前中間某個區塊裡某筆交易的輸出有關。

如果不保留狀態,你在執行這筆交易之前,就得重新執行相關聯的交易,而那筆交易可能又與更早的另一筆交易有關,因此得一直回溯,直到找到源頭為止。 所以從理論上來說,不保留狀態是可以的,但是這就需要承擔這種設計帶來的相應後果。

與數據庫的異同 如果你還是覺得狀態這個概念不好理解,我們還可以從與數據庫對比的角度來解釋狀態。我們與數據庫進行 CRUD 交互的時候,在數據庫中插入、更新、刪除的記錄就是所謂的狀態,而你執行的每一條語句就是交易。換言之,如果你將從數據庫創建到建表,再到插入數據、更新數據、刪除數據等操作的所有 SQL 語句導出,換到其他地方,你也可以重放出一模一樣的數據庫出來。

區塊鏈跟數據庫都保存了歷史操作記錄跟狀態數據集合。只不過數據庫更看重狀態,而區塊鏈卻以記錄歷史區塊為主,狀態為輔。正所謂一個活在當下,一個懷念過去。二者的邏輯並沒有什麼本質上的區別,只是側重點不一樣。

狀態模型

了解了狀態的設計理念,那你可能要問了,狀態在區塊鏈中是如何表現的呢?根據區塊鏈的定位的不同,我們大致可以將狀態模型的設計歸納為三種模型。

一種就是以比特幣為首的專注於數字貨幣的區塊鏈使用 UTXO 模型,即未花費的交易輸出(Unspent Transaction Outputs)。在此模型中,每一筆交易都應該有 N 個交易輸入,同時產生 M 個交易輸出(N 與 M 可以不等)。其中,交易輸入是前序任意交易的未花費的交易輸出。如果當前交易成交,該前序交易的輸出也就變成了成交的交易輸入,也就失去了再次成為交易輸入的資格。UTXO 模型能夠追蹤數字貨幣的流向:未花費的交易輸入告知貨幣是從哪裡來的,未花費的交易輸出告知貨幣往哪裡去。

另一種就是以太坊區塊鏈採用的帳戶模型,通過數字的加減表示帳戶餘額的變化。每一筆交易的執行,都会實現不同帳戶間餘額的動態平衡,你我之間轉帳,你支出了 1 塊錢,你的帳戶餘額減 1,同時我的帳戶餘額加 1,這種模型更符合我們日常生活的認知。同時,帳戶模型除表示餘額以外,也支持自定義數據的存儲,可以在基礎帳戶之上衍生出智能合約數據存儲。

而最後一類通用模型在帳戶模型的基礎上更進一步,沒有內置狀態屬性,可存儲任意自定義數據,被廣泛應用在聯盟鏈中。聯盟鏈的定位是支持企業級應用的區塊鏈平台,而企業業務的種類及模式是無法預知的,因此無法在設計中內定狀態模型。既然眾口難調,所以乾脆將狀態的設計工作留給企業應用開發者,狀態可以自定義,而鏈本身只提供通用數據接口。

從三種狀態模型的設計及應用場景看,狀態模型的選型沒有唯一解,只要是能滿足應用場景的模型設計就是好的模型。

總結#

這一講我們主要深入到單個區塊鏈節點,側重了解了區塊鏈存儲的要點,主要講解交易、區塊兩個數據結構及區塊鏈狀態模型。而我也並沒有以具體的設計方案作為講解重點,因為無論多麼新穎,多麼創新的區塊鏈平台,其最基礎的設計都逃不脫這三點。

區塊鏈存儲的設計沒有定式,而只要你真正理解了交易、區塊以及狀態,你就是下一個區塊鏈存儲架構師。

於開發者來說,狀態更重要。區塊好比框架,而狀態是做具體業務時需要設計的數據結構和算法。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。