區(qū)塊鏈(blockchain)源于2008年出現(xiàn)的`比特幣`之中。比特幣需要一個公開透明`總賬(Ledger)`,來達到一種`去中心化` (Decentralized) 的、`無需信任` (trustless) 的范式。在這種范式中,任何互不了解的人可以通過加入該總賬,通過點對點的記賬、數(shù)據(jù)傳輸、認(rèn)證或是合約,而不需要借助任何一個中間方來達成信用共識。這個總賬包括了過去所有的交易記錄、歷史數(shù)據(jù)及其他相關(guān)信息,所有信息都分布式存儲并透明可查,并以密碼學(xué)協(xié)議的方式保證其不能非法篡改。
作為一種去中心化的網(wǎng)絡(luò)信息管理方式,區(qū)塊鏈技術(shù)主要有四大特點:
1. 去中心化(更準(zhǔn)確的說是分布式),區(qū)塊鏈數(shù)據(jù)庫分布式記錄、存儲,與傳統(tǒng)數(shù)據(jù)庫的中心化記錄、存儲截然相反;
2. 去信任化,區(qū)塊鏈通過數(shù)學(xué)方法,依靠非對稱加密和可靠數(shù)據(jù)庫,通過特定的算法為網(wǎng)絡(luò)中的節(jié)點制造信用、產(chǎn)生信任及達成交易共識,最終 完成去中心化;
3. 集體維護,區(qū)塊鏈中的每一個區(qū)塊都是由整個系統(tǒng)所有節(jié)點(或者部分節(jié)點,但足夠達成共識)共同維護;
4. 可靠數(shù)據(jù)庫,系統(tǒng)中的每個節(jié)點都有一份完整的區(qū)塊鏈內(nèi)容拷貝(或者多副本,但并非全節(jié)點全復(fù)制),除非同時控制整個系統(tǒng)超過半數(shù)以上的節(jié)點,否則單個節(jié)點的改寫無效。
我們剖析底層核心技術(shù),具有兩方面的意義:技術(shù)分析是為了更好的發(fā)展區(qū)塊鏈應(yīng)用!
技術(shù)核心問題歸類
區(qū)塊鏈技術(shù)的核心問題仍然屬于分布式計算領(lǐng)域的經(jīng)典問題:`拜占庭將軍問題`,`共識`算法,`加密`算法,`哈希`算法…但是比特幣第一次有效解決了大規(guī)模去中心化P2P網(wǎng)絡(luò)達成無法篡改的共識的所有障礙,并得以在“貨幣”這個需要極其嚴(yán)謹(jǐn)?shù)膽?yīng)用上第一次取得了成功。所以我們將會圍繞這些方面,進行分類, 總結(jié), 分析 各個應(yīng)用的異同點。我們將從下幾個方面,分類當(dāng)前市場的主要區(qū)塊鏈應(yīng)用和加密貨幣,來層層深入,領(lǐng)略各自的技術(shù)特點:
目前大家?guī)缀踔魂P(guān)注共識機制,還有所謂的“性能陷阱”。但實際上,作為一種分布式計算的架構(gòu),不研究底層存儲、數(shù)據(jù)同步機制,談單機的性能優(yōu)化其實是沒有“工業(yè)價值”的。所以本文會研究完整的技術(shù)棧。
PoW相關(guān)技術(shù)分析
`Proof of Work` 是比特幣系統(tǒng)里解決選擇下一個負責(zé)創(chuàng)建新區(qū)塊節(jié)點的核心思想。主要方式是讓所有想?yún)⑴c的節(jié)點全部一起競爭: 計算上一區(qū)塊的hash值 + 當(dāng)前未處理交易數(shù)據(jù) + 時間戳 + 一些可變隨機參數(shù), 目標(biāo)是得到前綴為若干個前導(dǎo)“0”的hash結(jié)果。這個計算量是很大的, 但是一旦算出來, 其它節(jié)點驗證其正確性是很簡單的。 這種機制, 解決了新區(qū)塊產(chǎn)生的公平性和信任問題, 經(jīng)濟上, 也讓參與者(`礦機`)有機會獲得一定的收益形成生態(tài)鏈, 成為BTC被廣泛接受的基礎(chǔ)。
此后的各種新加密貨幣, 對PoW算法也做了多種改進。下面分析幾個主要的使用PoW的應(yīng)用。
BitCoin (比特幣)
比特幣是一切加密貨幣的鼻祖,也是第一次應(yīng)用區(qū)塊鏈技術(shù)的創(chuàng)新應(yīng)用。
作為首個開創(chuàng)性的加密貨幣,比特幣用到了大量的加密算法:
1. 在計算散列時會計算2次。大多數(shù)情況下,使用SHA-256散列,RIPEMD-160會用于生成較短的散列(例如生成比特幣地址的時候)。
2. 使用橢圓曲線 數(shù)字簽名算法(ECDSA)對交易進行簽名
3. ECDSA 使用了 http://www.secg.org/collateral/sec2_final.pdf 中的secp256k1曲線
4. 公鑰(in scripts) 以 04 《x》 《y》的形式給出,x和y是表示曲線上點的坐標(biāo)的32字節(jié)字符串。簽名使用DER編碼 將 r 和 s 寫入一個字節(jié)流中(因為這是OpenSSL的默認(rèn)輸出)。
參考文檔:
· SHA-2安全哈希標(biāo)準(zhǔn)算法 幾乎所有加密貨幣都用到的基礎(chǔ)hash算法
· Merkle樹 基礎(chǔ)算法:數(shù)據(jù)塊完整性驗證
· Bloom Filter 基礎(chǔ)算法:快速確定存在性
· 比特幣源代碼
比特幣被詬病最多的幾個方面,也就造成了其它派生加密貨幣的誕生:
LiteCoin (萊特幣)
派生于 Tenebrix(TBX)主要目的是抵抗顯卡挖礦導(dǎo)致的不平衡。萊特幣對比特幣的改變很小, 主要是PoW證明算法改成了Scrypt。具體如下:
第一,Litecoin網(wǎng)絡(luò)每2.5分鐘(而不是10分鐘)就可以處理一個塊,因此可以提供更快的交易確認(rèn)。
第二,Litecoin網(wǎng)絡(luò)預(yù)期產(chǎn)出8400萬個Litecoin,是比特幣網(wǎng)絡(luò)發(fā)行貨幣量的四倍之多。
第三,Litecoin在其工作量證明算法中使用了由Colin Percival (著名的FreeBSD黑客) 首次提出的scrypt加密算法,這個改變導(dǎo)致了經(jīng)濟上的變化: 由于Scrypt算法需要更長的時間和更多的內(nèi)存, 使得`礦機`的難度更大, 收益率更小, 因此對參與者而言“可能更公平” (需要頻繁內(nèi)存訪問的算法, ASIC礦機相較普通CPU的優(yōu)勢減小了)。
DarkCoin
DarkCoin(Dash, 達世幣)主要目標(biāo)是“更加匿名化的虛擬貨幣”,更加難以追蹤,同時更快的交易速度和更低的費用(BTC網(wǎng)絡(luò)擁擠,同時BTC價格很高,導(dǎo)致交易費比較高了)。
達世幣(DASH)是一款支持即時交易、以保護用戶隱私為目的數(shù)字貨幣。它基于比特幣,特有的雙層網(wǎng)絡(luò)使其能夠更加全面的進行測試和更新。如同使用現(xiàn)金一樣,達世幣可以有效的保護您在交易過程中的財政隱私。當(dāng)使用比特幣時,交易都會被寫到數(shù)據(jù)塊鏈中,您可以查詢到接收和發(fā)送雙方。然而達世幣通過匿名技術(shù),使得交易無法被追蹤查詢。匿名技術(shù)極其重要——因為任何網(wǎng)絡(luò)用戶都可以進入數(shù)據(jù)塊鏈查看交易,對于那些不想暴露交易記錄和財政隱私的用戶,這無疑是硬傷。達世幣通過獨創(chuàng)的去中心化網(wǎng)絡(luò)服務(wù)器“主節(jié)點”混淆交易,實現(xiàn)匿名。無需第三方,有效的避免了因第三方介入所帶來的不穩(wěn)定性。
X11加密算法由達世幣核心開發(fā)者Evan Duffield創(chuàng)立。X11算法是由11種加密散列算法組成的工作量證明加密算法,因此其具有公平的分配機制并且與比特幣的分配機制相同。由于算法的復(fù)雜性,使得制造礦機的難度大大提高,至少需要幾年時間。由于鏈?zhǔn)郊用芩惴ǖ奶匦?,高端CPU與一些GPU的算力相似。由于此新算法的優(yōu)勢,使用GPU挖X11算法的達世幣會比挖使用Scrypt算法的幣種降低約30%的能耗以及30%-50%的發(fā)熱量。
PoS相關(guān)技術(shù)分析
PoS的目標(biāo)是取代PoW這種在分配體系中達成一致的方式。PoS引入“幣齡”的概念,幣齡=幣數(shù)*持有時間,通過幣齡來作為投票權(quán)重。出塊用一定的公司計算值,達到所需要的幣數(shù)(也叫做目標(biāo),是由網(wǎng)絡(luò)通過類似于PoW的難度調(diào)節(jié)機制來規(guī)定的),以此來確保大致恒定不變的出塊時間。
PoS需要基于一個“去中心化的、安全的數(shù)字資產(chǎn)”以及證明機制,而btc本身就是這樣的數(shù)字資產(chǎn),所以很多PoS需要基于btc構(gòu)建stack池。
傳統(tǒng)的電子貨幣體系一直都依賴一個中心化的服務(wù)來保障交易安全,如何去中心化已經(jīng)討論了幾十年了,一個主要的問題就是如何構(gòu)建一個能夠確保多點一致性同時又是去中心化的BFT(Byzantine fault tolerance)系統(tǒng)。
在比特幣(Bitcoin)提出之前,大家的研究可以達到容忍25%的節(jié)點攻擊,但這并不能解決問題。直到2008年,中本聰(Satoshi Nakamoto)提出的比特幣把這個比例提高到了50%。同時,一方面通過挖礦收益來鼓勵節(jié)點加入網(wǎng)絡(luò),從而進一步提高攻擊難度;另一方面,通過對每十分鐘產(chǎn)生的一個區(qū)塊進行鏈?zhǔn)胶灻@樣,這個鏈上每多一個區(qū)塊,之前區(qū)塊的偽造難度都會指數(shù)級上升。
比特幣解決了這個問題,并且目前一直是市值最高的電子貨幣,但大家并沒有停止研究。其中一個研究點就是比特幣采用的工作量證明機制。在中本聰?shù)恼撐睦?,工作量證明機制是被希望為每CPU擁有一個投票權(quán)(one-CPU-one-vote),并選用了兩次SHA-256算法。然而,從今天來看,這種算法決定了它和能耗、硬件投入有著直接的關(guān)系。雖然比起傳統(tǒng)貨幣體系里花費的能耗,比特幣花費的可能微不足道,但硬件上的不公平性卻越演越烈。從CPU挖礦到顯卡挖礦再到ASIC設(shè)備挖礦,硬件之間的差異越來越明顯,也開始背離了每CPU一個投票權(quán)的初衷。為了解決這個問題,著名的Litecoin和Darkcoin通過替換算法的方式一定程度降低了對能耗的要求,同時讓算法更依賴CPU來降低硬件上的不公平性,但并沒有從根本上解決。直到2011年出現(xiàn)的權(quán)益證明機制,它不依賴計算量,是目前最有效的解決辦法。之后的Peercoin和NXT便采用了這種機制并證明了其可靠性。
NXT (未來幣)
NXT主要針對PoW類加密貨幣的挖礦能源消耗問題,使用了PoS方式來達成共識。技術(shù)上,Nxt最根本的革新就是透明鍛造(Transparent Forging)。這種方式是PoS的一種技術(shù)實現(xiàn)。
在Nxt的PoS模型里,安全性是由持幣者保證的。由POS帶來的好處不會產(chǎn)生在PoW中的集權(quán)化趨勢,并且數(shù)據(jù)顯示,NXT從誕生開始保持了非常好的分布式狀態(tài)。在網(wǎng)絡(luò)中貢獻block的獨立用戶數(shù)正在非??焖俚脑鲩L并且保持了一個較大的數(shù)字,前5名top持幣者貢獻了35%的blocks。
Ethereum (以太坊)
“以太坊”是在比特幣之后,加密貨幣領(lǐng)域比較大的創(chuàng)新產(chǎn)品。事實上,以太坊的重點不在于原生貨幣–以太幣上,而是“智能合約”。
以太坊試圖提供一個自帶有完整“圖靈完備”編程語言的區(qū)塊鏈,可以讓用戶用來創(chuàng)建任意的“狀態(tài)轉(zhuǎn)移(state transition)”功能的“合約”,也就是號稱“智能合約”。允許用戶創(chuàng)建像下面這些系統(tǒng):
1. 定制化的貨幣和財產(chǎn) (“colored coins”)
2. 優(yōu)先權(quán)屬物理設(shè)施的所有權(quán)證明 (“smart property”)
3. 不可代替的資產(chǎn),比如域名 (“Namecoin”)
4. 涉及通過一段代碼來實現(xiàn)任意規(guī)則的數(shù)字資產(chǎn)直接管控的復(fù)雜應(yīng)用 (“smart contracts” 智能合約)
5. 基于區(qū)塊鏈的“去中心化自治組織” (DAOs)。
技術(shù)特色上:
1. 使用了新的“內(nèi)存消耗”算法(和Scrypt算法類似,降低礦機的優(yōu)勢)
2. 使用“GHOST blocktrees” 取代傳統(tǒng)的區(qū)塊鏈
3. 區(qū)塊內(nèi)部數(shù)據(jù)結(jié)構(gòu)使用“Patricia trees”,而不是 Merkle Tree
4. 交易數(shù)據(jù)可以包含程序代碼,也就是“合約”
DPoS技術(shù)分析
DPoS是 比特股在PoS基礎(chǔ)上提出來的,delegated的PoS,主要目的是擴大交易容量。 核心思想是,預(yù)選出后續(xù)時段的一系列代理(選舉過程還是用PoS),產(chǎn)生區(qū)塊的權(quán)利直接交給預(yù)選出來的節(jié)點。這樣保證非常高的速度去達成一致性。因為選舉還是用PoS,只是提前和其它工作并行,所以稱為DPoS。
BitShares
BitShares (比特股,BTS)最大的改進,就是針對比特幣的交易效率和確認(rèn)速度太低,而提出來的“工業(yè)級”的擴展區(qū)塊鏈技術(shù)。
密碼學(xué)貨幣和智能合約平臺若想成為當(dāng)前金融平臺的可用替代品,高性能的區(qū)塊鏈技術(shù)是不可或缺的。BitShares的設(shè)計從最底層就是為了比VISA和MasterCard加起來還多的交易處理能力?;贒PoS的設(shè)計,BitShares網(wǎng)絡(luò)能夠在平均僅1秒的時間里確認(rèn)交易,僅受光傳輸?shù)乃俣认拗?。為了實現(xiàn)這個業(yè)內(nèi)領(lǐng)先的性能,比特股借鑒了從能達到6百萬TPS的 LMAX) 交易平臺里學(xué)到的經(jīng)驗。經(jīng)驗中的關(guān)鍵點如下:
1. 將所有東西都放在內(nèi)存
2. 將核心業(yè)務(wù)邏輯保持在一個單線程里
3. 將加密算法操作(哈希和簽名)保持在核心業(yè)務(wù)邏輯外
4. 將校驗分成有狀態(tài)和無狀態(tài)兩種檢查
5. 使用面向?qū)ο蟮臄?shù)據(jù)模型
遵循這幾條簡單原則,BitShares在沒有進行任何特別優(yōu)化的情況下就能每秒處理10萬次交易。未來的優(yōu)化預(yù)計會讓BitShares的性能達到LMAX的水平。
應(yīng)當(dāng)注意的是,BitShares達到的性能很大程度上受限于一個兼容交易協(xié)議。在一個核心業(yè)務(wù)邏輯運行在一個需要執(zhí)行加密算法操作和所有對象都靠哈希索引的虛擬機上的協(xié)議里,達到同樣的性能水平是不可能的。區(qū)塊鏈本質(zhì)上是單線程的,加上CPU單個核的性能是各種資源中最受限和最不易擴展的。BitShares設(shè)計成讓這種單線程的執(zhí)行效率最高化。
PoS+PoW相關(guān)技術(shù)分析
PoS + PoW
對比PoS和PoW各自的缺點后,新的一種證明形式出現(xiàn)了。
為了減少礦池控制的風(fēng)險等原因,PoS被引入;但又要保持給礦工收益保持網(wǎng)絡(luò)規(guī)模,同時需要PoW。所以這種結(jié)合體出現(xiàn)并發(fā)展。
PeerCoin
Peercoin(PPC、點點幣)是第一個實踐了PoS的加密貨幣,也是混合模式的原創(chuàng)者。像其他加密貨幣,初始貨幣能被挖礦,但核心網(wǎng)絡(luò)還是掌握在幣的持有者里,而不是最快速的礦池。用PoS/PoW算法的網(wǎng)絡(luò),能夠減少幾個PoW的風(fēng)險:自私礦主、51%攻擊等,也能減少能源消耗。
Novacoin
Novacoin (NVC), 派生于PeerCoin,主要改變證明算法和區(qū)塊參數(shù)。
其他共識方式
因為主要目標(biāo)和加密貨幣不同, 在共識機制上, 有的應(yīng)用產(chǎn)生了不同的演化方向。并且由于共識機制的不同, 對`去中心化`的程度也不同, 比如為了成為`銀行基礎(chǔ)架構(gòu)`目標(biāo)的Ripple, 在自己的半中心化架構(gòu)上, 實現(xiàn)了金融基礎(chǔ)架構(gòu)需要的快速確認(rèn), 高吞吐量, 價值流動低成本 等核心需求。
Ripple
Ripple的目標(biāo)并不是運作一個虛擬貨幣(雖然他們有內(nèi)置原生貨幣XRP,用于撮合不同貨幣、資產(chǎn)的橋接、匯兌),而是有遠大的多的目標(biāo):“Ripple的分布式金融科技讓世界各地的銀行可以直接交易而無需中央對手方或代理銀行。Ripple可以讓銀行壓縮運營成本并且提供跨境支付服務(wù)…” 雖然筆者覺得這個目標(biāo)不切實際,難以推動區(qū)塊鏈生態(tài)的真實運轉(zhuǎn),但是它的確提供了一種新的共識方案,一個優(yōu)秀創(chuàng)新的工程項目。
從技術(shù)角度而言,Ripple的確更接近銀行類金融機構(gòu)的基礎(chǔ)架構(gòu)形態(tài)。
Stellar
Stellar(恒星幣)創(chuàng)始人Jed就是原來Ripple的聯(lián)合創(chuàng)始人和主要技術(shù)開發(fā)者,因為發(fā)展方向矛盾而另立門戶?;旧虾阈菐爬^成了Ripple早期版本的核心,但是修改了核心的共識算法。
由于用了全新的共識算法,Stellar出現(xiàn)過嚴(yán)重的fork問題(網(wǎng)絡(luò)里的參與節(jié)點產(chǎn)生了兩個區(qū)塊鏈,各有一半的節(jié)點執(zhí)行兩個鏈條),導(dǎo)致信用下滑,從而導(dǎo)致重新編寫共識機制,并理論性證明。
評論
查看更多