
區(qū)塊鏈技術(shù)入門詳解
區(qū)塊鏈?zhǔn)悄壳耙粋€比較熱門的新概念,蘊含了技術(shù)與金融兩層概念。從技術(shù)角度來看,這是一個犧牲一致性效率且保證最終一致性的的分布式的數(shù)據(jù)庫,當(dāng)然這是比較片面的。從經(jīng)濟(jì)學(xué)的角度來看,這種容錯能力很強的點對點網(wǎng)絡(luò),恰恰滿足了共享經(jīng)濟(jì)的一個必須要求——低成本的可信環(huán)境。
1. 技術(shù)人員看待區(qū)塊鏈的正確姿勢
區(qū)塊鏈雖然是一個新興的概念,但它依賴的技術(shù)一點也不新,如非對稱加密技術(shù)、P2P網(wǎng)絡(luò)協(xié)議等。好比樂高積木,積木塊是有限的,但是不同組合卻能產(chǎn)生非常有意思的事物。
我接觸過一些工程師,初次接觸區(qū)塊鏈時,不約而同的表達(dá)了:都是成熟的技術(shù),不就是分布式存儲嘛。站在工程師的角度,第一反應(yīng)將這種新概念映射到自己的知識框架中,是非常自然的。但是細(xì)究之下發(fā)現(xiàn),這種片面的理解可能將對區(qū)塊鏈的理解帶入一個誤區(qū),那就是作為一個技術(shù)人員,忽略了區(qū)塊鏈的經(jīng)濟(jì)學(xué)特性——一個權(quán)力分散且完全自治的系統(tǒng)。
區(qū)塊鏈本質(zhì)上是一個基于P2P的價值傳輸協(xié)議,我們不能只看到了P2P,而看不到價值傳輸。同樣的,也不能只看到了價值傳輸,而看不到區(qū)塊鏈的底層技術(shù)。
可以這么說,區(qū)塊鏈更像是一門交叉學(xué)科,結(jié)合了P2P網(wǎng)絡(luò)技術(shù)、非對稱加密技術(shù)、宏觀經(jīng)濟(jì)學(xué)、經(jīng)濟(jì)學(xué)博弈等等知識,構(gòu)建的一個新領(lǐng)域——針對價值互聯(lián)網(wǎng)的探索。
那什么是價值互聯(lián)網(wǎng) ?
價值互聯(lián)網(wǎng)可以是當(dāng)下如日中天的電子商務(wù)所衍生的支付業(yè)務(wù)。但,真的只是支付領(lǐng)域嗎?很顯然這是不夠的,一級資本市場,實體資產(chǎn)確權(quán)與轉(zhuǎn)移,證券登記交割、征信與反欺詐。我們再仔細(xì)想想,我們的各大電商平臺的專業(yè)差評師,惡意刷單還少嗎?
如今的金融領(lǐng)域,除了支付比較便利之外,在其他絕大部分的業(yè)務(wù)中,我們就像是被套著鎖鏈走路一樣,我們反復(fù)確認(rèn),反復(fù)審核,反復(fù)監(jiān)督,我們反復(fù)構(gòu)建一個又一個的大大小小的高可用集群,保證線上服務(wù)的可靠性與連續(xù)性,我們雇傭一個又一個的安全工程師,交付一個又一個的滲透測試項目。為什么?因為作弊的成本太低了,低到只要改數(shù)據(jù)庫的一行記錄就可以提取上百萬的資金。
強大的互聯(lián)網(wǎng)給了我們成本幾乎為零的高速信息傳輸通道,卻沒有一個成本低廉可靠的高速價值傳輸通道,那么這也就是區(qū)塊鏈即將帶來的。
區(qū)塊鏈?zhǔn)且粋€公共的分布式總賬,下面從技術(shù)角度簡單介紹一下:
想象一個100臺的分布式數(shù)據(jù)庫集群,現(xiàn)在的情況是這100個節(jié)點實際上的擁有者是一個機構(gòu),并且所有節(jié)點處在該機構(gòu)的內(nèi)網(wǎng)當(dāng)中,所以這個機構(gòu)想讓這100個數(shù)據(jù)庫節(jié)點干嘛就干嘛,換句話說這100個節(jié)點之間是處于一個可信任的環(huán)境,并且受控于一個實體,這個實體具有絕對仲裁分配權(quán)。
另外的情況是這樣的,想象這100個節(jié)點分別歸不同的人所有,且每個人的節(jié)點數(shù)據(jù)都是一樣的,即完全冗余,并且所有的節(jié)點是處在廣域網(wǎng)當(dāng)中,換句話說就是這100個節(jié)點之間是不信任的,且不存在一個實體,它擁有絕對仲裁權(quán)。
現(xiàn)在考慮第二種情況,采用什么樣的算法(共識模型)能夠提供一個可信任的環(huán)境,使:
每個節(jié)點交換數(shù)據(jù)過程不被篡改;交換歷史記錄不可被篡改;
每個節(jié)點的數(shù)據(jù)會同步到最新數(shù)據(jù),且承認(rèn)經(jīng)過共識的最新數(shù)據(jù);
基于少數(shù)服從多數(shù)的原則,整體節(jié)點維護(hù)的數(shù)據(jù)本身客觀反映了交換歷史。
區(qū)塊鏈本質(zhì)上就是要解決以上第二種情況的一種技術(shù)方案,更確切的說應(yīng)該叫分布式的冗余的鏈?zhǔn)娇値け痉桨?。有關(guān)區(qū)塊鏈的一些要素,在我以往的文章里有總結(jié)過一些:
包含一個分布式數(shù)據(jù)庫
分布式數(shù)據(jù)庫是區(qū)塊鏈的物理載體,區(qū)塊鏈?zhǔn)墙灰椎倪壿嬢d體,所有核心節(jié)點都應(yīng)包含該條區(qū)塊鏈數(shù)據(jù)的全副本
區(qū)塊鏈按時間序列化區(qū)塊,且區(qū)塊鏈?zhǔn)钦麄€網(wǎng)絡(luò)交易數(shù)據(jù)的唯一主體
區(qū)塊鏈只對添加有效,對其他操作無效
基于非對稱加密的公私鑰驗證
記賬節(jié)點要求拜占庭將軍問題可解/避免
共識過程(consensus progress)是演化穩(wěn)定的,即面對一定量的不同節(jié)點的矛盾數(shù)據(jù)不會崩潰。
共識過程能夠解決double-spending問題
所以作為一個技術(shù)人員,不應(yīng)當(dāng)只看到了區(qū)塊鏈所依賴的技術(shù),更應(yīng)該關(guān)注區(qū)塊鏈以外的點和面,綜合來看,區(qū)塊鏈將會有趣得多。
2. 區(qū)塊鏈的一般性架構(gòu)介紹
有關(guān)區(qū)塊鏈本身的發(fā)展史,網(wǎng)絡(luò)上資料比較多,本文不再贅述。
而有關(guān)區(qū)塊鏈技術(shù)的介紹,在各個區(qū)塊鏈平臺的社區(qū)是有詳細(xì)資料的,但是針對這些資料的總結(jié),以及抽象出一共通概念的介紹,還是鳳毛麟角,本文嘗試總結(jié)一下。
在介紹之前,我想稍微介紹一下公有鏈,聯(lián)盟鏈的概念,這些概念是以太坊創(chuàng)始人Vitalik提出的,我在這些概念的基礎(chǔ)上做了一些研究。
其實區(qū)分公有鏈、聯(lián)盟鏈很簡單,只要看這個區(qū)塊鏈的訪問權(quán)限就可以了,如果訪問該區(qū)塊鏈需要獲得鏈上節(jié)點的許可,那么這是一個聯(lián)盟鏈,否則是公有鏈。
根據(jù)名稱,我們也可以”望文生義“,公有表示一個完全開放的網(wǎng)絡(luò),聯(lián)盟表示一個半開放的網(wǎng)絡(luò),成員之間是共享的,非成員身份是沒有自由訪問權(quán)限的,所以我們也稱聯(lián)盟鏈為許可鏈。
下面我們來看幾個比較主流的區(qū)塊鏈平臺(公有鏈,皆開源):
比特幣 Bitcoin
以太坊 Ethereum/經(jīng)典以太坊 Ethereum Classic
比特股 Bitshares
我一般戲稱為”三巨頭“,從生態(tài)上來看,比特幣是最為成熟穩(wěn)定的,以太坊更像是一個沖在前面的勇士,比特股相比前兩位生態(tài)要小很多,但是從創(chuàng)新的角度,也不亞于前兩位。
其他的很多項目,是從這三個區(qū)塊鏈上衍生出來的,所以以這三個為基礎(chǔ),基本上可以吃透區(qū)塊鏈了。
不得不提的還有Linux基金會項目——HyperLedger項目(主打聯(lián)盟鏈,開源),也是旨在打造一個通用的區(qū)塊鏈技術(shù),不過我認(rèn)為目前尚在開發(fā)迭代當(dāng)中,還沒有具體的應(yīng)用案例,按下不講。
另外還有一些銀行寡頭間的聯(lián)盟鏈項目——R3 CEV項目(聯(lián)盟鏈,閉源),以及中國的R3項目——ChinaLedger(聯(lián)盟鏈,閉源),當(dāng)然這些不是源的,我無法獲得有用的資料進(jìn)行分析,所以就不展開了。
從技術(shù)上來看,針對不同的業(yè)務(wù)場景,對區(qū)塊鏈有不同需求,比如實時結(jié)算業(yè)務(wù),要求區(qū)塊鏈提供秒級的交割,相對應(yīng)的就是出塊速度的要求,而出塊速度過快往往會導(dǎo)致區(qū)塊鏈分叉(fork),形成孤兒鏈,孤兒鏈?zhǔn)菬o效的,那么交易也就作廢了,影響了區(qū)塊鏈的最終一致性。
如果頻繁產(chǎn)生分叉造成相當(dāng)比例的用戶交易失效,那么可以認(rèn)為系統(tǒng)是不可靠的。
如果我們將這種實時性要求比較高的業(yè)務(wù)安插到聯(lián)盟鏈中,就可以控制風(fēng)險,通過調(diào)整共識算法,利用快速一致共識模型(Consensus Model)來避免上述問題,雖然不如公有鏈那么健壯,但對某些特殊場景足夠了。
所以架構(gòu)層面,對公有鏈和聯(lián)盟鏈的技術(shù)也要差異化對待。
不過客戶端整體的設(shè)計還是有一些通用的概念的,如下圖:
一個區(qū)塊鏈至少分為三層,最底層是一些通用的基礎(chǔ)模塊,比如基礎(chǔ)加密算法,網(wǎng)絡(luò)通訊庫,流處理,線程封裝,消息封裝與解碼,系統(tǒng)時間等;
中間一層是區(qū)塊鏈的核心模塊,一般包含了區(qū)塊鏈的主要邏輯,如P2P網(wǎng)絡(luò)協(xié)議,共識模塊,交易處理模塊,交易池模塊,簡單合約或者智能合約模塊,嵌入式數(shù)據(jù)庫處理模塊,錢包模塊等等;
最上面一層,往往都是基于Json Standard RPC的交互模塊,基于Json-RPC,我們還可以做出更好的UI界面,也可以是一個web-service。
如果區(qū)塊鏈 支持智能合約,可能還要分更多的層,比如增加BaaS層,區(qū)塊鏈上的智能合約提供自治的服務(wù),比如下面這張以太坊的架構(gòu)圖(來自Google,僅作參考):
這種分層更加關(guān)注的是區(qū)塊鏈本身的分層,即業(yè)務(wù)上的視角,而不完全是技術(shù)的。
我們再轉(zhuǎn)向比特幣的設(shè)計:
比特幣幾個模塊之間的耦合度其實比較高,而且有不少歷史包袱,比特幣的發(fā)明者——中本聰在開發(fā)比特幣的時候,使用VC++開發(fā),而VC++的標(biāo)準(zhǔn)庫中的sstream流處理性能非常感人,不得不放棄,自行實現(xiàn)了了基于vector 的流處理容器。而隨著c++11的推出以及標(biāo)準(zhǔn)庫的更新迭代,性能不可同日而語。
從整張圖我們可以看出,比特幣的模塊比較少,也比較簡單。chain-paramters描述了整個區(qū)塊鏈的參數(shù)設(shè)置,wallet是與地址/加密還有存儲相關(guān)的,mem-pool是未確認(rèn)的交易池。得益于比特幣核心開發(fā)者的不朽貢獻(xiàn),相比中本聰時代的比特幣代碼,現(xiàn)在的比特幣代碼質(zhì)量已經(jīng)相當(dāng)不錯了。
以上無論哪種設(shè)計,一般都要從P2P網(wǎng)絡(luò)協(xié)議作為切入,作為一個P2P錢包,既要提供Service也要提供Client,作為Service依賴P2P網(wǎng)絡(luò)協(xié)議,作為Client依賴Json-RPC。
需要指出的是,目前”三巨頭”所使用的賬戶模型是不同的(所謂賬戶模型是指賬戶記賬方法),比特幣使用UXTO模型,以太坊和比特股使用賬戶余額模型。
UXTO模型(Unspent Transaction Outputs (UTXOs) ):此模型表達(dá)了一種轉(zhuǎn)移的概念,即任何產(chǎn)生的新幣,在以后的生命周期中,只有轉(zhuǎn)移,沒有消亡,轉(zhuǎn)移實質(zhì)上是由加密算法的簽名與驗證控制的:
賬戶余額模型:賬戶余額模型摒棄了這種強驗證的賬戶模型,即賬戶余額回歸到數(shù)字加減,這樣做提升了交易的效率。
3. 共識算法與分布式
終于來到重點了,本文每節(jié)其實都可以展開成為獨立的文章,內(nèi)容所限,簡單講。
所謂區(qū)塊鏈共識過程,在上文有所提及,是指如何將全網(wǎng)交易數(shù)據(jù)客觀記錄并且不可篡改的過程。目前"三巨頭"分別使用不同的共識算法(Consensus Algorithm), 比特幣使用工作量證明PoW(Proof of Work),以太坊即將轉(zhuǎn)換為權(quán)益證明PoS(Proof of Stake),比特股使用授權(quán)權(quán)益證明DPoS(Delegated Proof of Stake)。
以上這些算法我稱之為“經(jīng)濟(jì)學(xué)”的算法,所謂經(jīng)濟(jì)學(xué)的算法,是指讓作弊成本可計算,且讓作弊成本往往遠(yuǎn)大于作弊帶來的收益,即作弊無利可圖,通過這種思想構(gòu)造一個用于節(jié)點之間博弈的算法,并使之趨向一個穩(wěn)定的平衡。
相對應(yīng)的我們還有計算機領(lǐng)域的分布式一致性算法,例如Paxos、Raft,我也稱之為傳統(tǒng)分布式一致性算法。
他們之間的最大區(qū)別是:系統(tǒng)在拜占庭將軍(Byzantine Generals Problem)情景下的可靠性,即拜占庭容錯(PBFT算法支持拜占庭容錯)。然而無論是Paxos還是Raft算法,理論上都可能會進(jìn)入無法表決通過的死循環(huán)(盡管這個概率其實是非常非常低的),但是他們都是滿足safety的,只是放松了liveness的要求, PBFT也是這樣。
下面是一些傳統(tǒng)分布式一致性算法和區(qū)塊鏈共識過程的異同點。先來看相同點:
Append only
強調(diào)序列化
少數(shù)服從多數(shù)原則
分離覆蓋的問題:即長鏈覆蓋短鏈區(qū)塊,多節(jié)點覆蓋少數(shù)節(jié)點日志
這是不同點:
傳統(tǒng)分布式一致性算法大多不考慮拜占庭容錯(Byzanetine Paxos除外),即假設(shè)所有節(jié)點只發(fā)生宕機、網(wǎng)絡(luò)故障等非人為問題,并不考慮惡意節(jié)點篡改數(shù)據(jù)的問題;
傳統(tǒng)分布式一致性算法是面向日志(數(shù)據(jù)庫)的,即更通用的情況,而區(qū)塊鏈共識模型面向交易的,所以嚴(yán)格來說,傳統(tǒng)分布式一致性算法應(yīng)該處于區(qū)塊鏈共識模型的下面一層。
考慮上面的不同點,結(jié)合公有鏈和聯(lián)盟鏈的特征,我們有:
聯(lián)盟鏈:半封閉生態(tài)的價值網(wǎng)絡(luò),存在對等的不信任節(jié)點,如某某協(xié)會成員之間。
公有鏈:開放生態(tài)的價值網(wǎng)絡(luò),這層主要是為行業(yè)鏈和私有鏈提供全球交易網(wǎng)絡(luò)。
由于聯(lián)盟行業(yè)鏈其半封閉半開放特性,使用Delegated Proof of XXX 是可行的,可以考慮以傳統(tǒng)一致性算法作為基礎(chǔ)加入拜占庭容錯/安全防護(hù)機制進(jìn)行改進(jìn)也是可以的。
而針對公有鏈,PoW/Pos/DPos等“經(jīng)濟(jì)學(xué)”的算法可能是最優(yōu)算法。
技術(shù)上,以上不同的共識算法,我們很多新開發(fā)區(qū)塊鏈都相應(yīng)的支持一個特性:共識模塊可插拔,以應(yīng)對不同場景下的要求。
下圖是一張未來區(qū)塊鏈生態(tài)示意圖:
公有鏈提供可信可靠的價值傳輸網(wǎng)絡(luò),上面可以繼續(xù)組建去中心化應(yīng)用(DAPP)或者部署聯(lián)盟鏈,甚至傳統(tǒng)數(shù)據(jù)庫都行,在上層搭建C端應(yīng)用。
4. 數(shù)字資產(chǎn)與價值流通網(wǎng)絡(luò)
這里有張未來區(qū)塊鏈發(fā)展的示意圖:
Metaverse元界白皮書-CN(概要)
“三巨頭”中,比特幣在“數(shù)字貨幣”處,比特股在“去中心化交易所”附近,以太坊在“去中心化組織”處。而實際上,區(qū)塊鏈和現(xiàn)實的接觸點,還在圖示位置。
所以區(qū)塊鏈仍是一個正在成長的事物,結(jié)合圖5,我們希望構(gòu)建一個基礎(chǔ)設(shè)施完善的價值傳輸網(wǎng)絡(luò),上層應(yīng)用豐富的區(qū)塊鏈生態(tài),仍然需要付出巨大的努力。
下一步目標(biāo),是將資產(chǎn)數(shù)字化(類比資產(chǎn)證券化),例如我們可以將珍稀物品(藝術(shù)品/古董)數(shù)字化、知識產(chǎn)權(quán)數(shù)字化、票據(jù)基金等收益權(quán)數(shù)字化,將極大的提升市場運作效率,配備智能合約,甚至人工智能,可編程社會不再是夢想。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動決策的時代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計的實用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實施重大更新。 此次更新旨在確保認(rèn) ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預(yù)測分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢預(yù)判? ? 在數(shù)據(jù)驅(qū)動決策的時代,預(yù)測分析作為挖掘數(shù)據(jù)潛在價值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點,而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報考到取證的全攻略? 在數(shù)字經(jīng)濟(jì)蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗:捕捉數(shù)據(jù)背后的時間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準(zhǔn) ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認(rèn)證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗:數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認(rèn)證作為國內(nèi)權(quán)威的數(shù)據(jù)分析能力認(rèn)證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對策略? 長短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨特的門控機制,在 ...
2025-07-07統(tǒng)計學(xué)方法在市場調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場調(diào)研是企業(yè)洞察市場動態(tài)、了解消費者需求的重要途徑,而統(tǒng)計學(xué)方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準(zhǔn)確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03