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