莊明仁4星評(píng)價(jià)
2020-04-26 13:40:10
1. 點(diǎn)對(duì)點(diǎn)分布式技術(shù)(P2P): 點(diǎn)對(duì)點(diǎn)技術(shù)(peer-to-peer, 簡(jiǎn)稱P2P)又稱對(duì)等互聯(lián)網(wǎng)絡(luò)技術(shù),它依賴網(wǎng)絡(luò)中參與者的計(jì)算能力和帶寬,而不是把依賴都聚集在較少的幾臺(tái)服務(wù)器上。P2P 技術(shù)優(yōu)勢(shì)很明顯。點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)分布特性通過(guò)在多節(jié)點(diǎn)上復(fù)制數(shù)據(jù),也增加了防故障的可靠性,并且在純P2P網(wǎng)絡(luò)中,節(jié)點(diǎn)不需要依靠一個(gè)中心索引服務(wù)器來(lái)發(fā)現(xiàn)數(shù)據(jù)。在后一種情況下,系統(tǒng)也不會(huì)出現(xiàn)單點(diǎn)崩潰。
2. 非對(duì)稱加密技術(shù):非對(duì)稱加密(公鑰加密)指在加密和解密兩個(gè)過(guò)程中使用不同密鑰。在這種加密技術(shù)中,每位用戶都擁有一對(duì)鑰匙:公鑰和私鑰。在加密過(guò)程中使用公鑰,在解密過(guò)程中使用私鑰。公鑰是可以向全網(wǎng)公開的,而私鑰需要用戶自己保存。這樣就解決了對(duì)稱加密中密鑰需要分享所帶來(lái)的安全隱患。非對(duì)稱加密與對(duì)稱加密相比,其安全性更好:對(duì)稱加密的通信雙方使用相同的秘鑰,如果一方的秘鑰遭泄露,那么整個(gè)通信就會(huì)被破解。而非對(duì)稱加密使用一對(duì)秘鑰,一個(gè)用來(lái)加密,一個(gè)用來(lái)解密,而且公鑰是公開的,秘鑰是自己保存的,不需要像對(duì)稱加密那樣在通信之前要先同步秘鑰。
3. 哈希算法:哈希算法又叫散列算法,是將任意長(zhǎng)度的二進(jìn)制值映射為較短的固定長(zhǎng)度的二進(jìn)制值,這個(gè)小的二進(jìn)制值稱為哈希值。它的原理其實(shí)很簡(jiǎn)單,就是把一段交易信息轉(zhuǎn)換成一個(gè)固定長(zhǎng)度的字符串。
4. 共識(shí)機(jī)制:由于加密貨幣多數(shù)采用去中心化的區(qū)塊鏈設(shè)計(jì),節(jié)點(diǎn)是各處分散且平行的,所以必須設(shè)計(jì)一套制度,來(lái)維護(hù)系統(tǒng)的運(yùn)作順序與公平性,統(tǒng)一區(qū)塊鏈的版本,并獎(jiǎng)勵(lì)提供資源維護(hù)區(qū)塊鏈的使用者,以及懲罰惡意的危害者。這樣的制度,必須依賴某種方式來(lái)證明,是由誰(shuí)取得了一個(gè)區(qū)塊鏈的打包權(quán)(或稱記帳權(quán)),并且可以獲取打包這一個(gè)區(qū)塊的獎(jiǎng)勵(lì);又或者是誰(shuí)意圖進(jìn)行危害,就會(huì)獲得一定的懲罰,這就是共識(shí)機(jī)制。通俗一點(diǎn)來(lái)講,如果中國(guó)一名微博大V、美國(guó)一名虛擬幣玩家、一名非洲留學(xué)生和一名歐洲旅行者互不相識(shí),但他們都一致認(rèn)為你是個(gè)好人,那么基本上就可以斷定你這人還不壞。
常見(jiàn)的共識(shí)機(jī)制:
工作量證明(Proof-of-Work,PoW);
權(quán)益證明(Proof-of-Stack,PoS,又譯持有量證明);
容量證明(Proof-of-space,PoSpace,又稱 Proof-of-Capacity,PoC)。
萬(wàn)葉千聲9星評(píng)價(jià)
2020-04-26 13:41:01
區(qū)塊鏈的技術(shù)定義
簡(jiǎn)單來(lái)說(shuō),區(qū)塊鏈?zhǔn)且粋€(gè)提供了拜占庭容錯(cuò)、并保證了最終一致性的分布式數(shù)據(jù)庫(kù);從數(shù)據(jù)結(jié)構(gòu)上看,它是基于時(shí)間序列的鏈?zhǔn)綌?shù)據(jù)塊結(jié)構(gòu);從節(jié)點(diǎn)拓?fù)渖峡?,它所有的?jié)點(diǎn)互為冗余備份;從操作上看,它提供了基于密碼學(xué)的公私鑰管理體系來(lái)管理賬戶。
或許以上概念過(guò)于抽象,我來(lái)舉個(gè)例子,你就好理解了。
你可以想象有 100 臺(tái)計(jì)算機(jī)分布在世界各地,這 100 臺(tái)機(jī)器之間的網(wǎng)絡(luò)是廣域網(wǎng),并且,這 100 臺(tái)機(jī)器的擁有者互相不信任。
那么,我們采用什么樣的算法(共識(shí)機(jī)制)才能夠?yàn)樗峁┮粋€(gè)可信任的環(huán)境,并且使得:
節(jié)點(diǎn)之間的數(shù)據(jù)交換過(guò)程不可篡改,并且已生成的歷史記錄不可被篡改;
每個(gè)節(jié)點(diǎn)的數(shù)據(jù)會(huì)同步到最新數(shù)據(jù),并且會(huì)驗(yàn)證最新數(shù)據(jù)的有效性;
基于少數(shù)服從多數(shù)的原則,整體節(jié)點(diǎn)維護(hù)的數(shù)據(jù)可以客觀反映交換歷史。
區(qū)塊鏈就是為了解決上述問(wèn)題而產(chǎn)生的技術(shù)方案。
我們結(jié)合以往講過(guò)的內(nèi)容,和即將要講的內(nèi)容,先提煉一下區(qū)塊鏈在技術(shù)上的 7 個(gè)特征,你先記住,我們后續(xù)會(huì)慢慢道來(lái):
區(qū)塊鏈的存儲(chǔ)基于分布式數(shù)據(jù)庫(kù);數(shù)據(jù)庫(kù)是區(qū)塊鏈的數(shù)據(jù)載體,區(qū)塊鏈?zhǔn)墙灰椎臉I(yè)務(wù)邏輯載體;區(qū)塊鏈按時(shí)間序列化區(qū)塊數(shù)據(jù),整個(gè)網(wǎng)絡(luò)有一個(gè)最終確定狀態(tài);區(qū)塊鏈只對(duì)添加有效,對(duì)其他操作無(wú)效;交易基于非對(duì)稱加密的公私鑰驗(yàn)證;區(qū)塊鏈網(wǎng)絡(luò)要求拜占庭將軍容錯(cuò);共識(shí)算法能夠“解決”雙花問(wèn)題。
區(qū)塊鏈的核心技術(shù)組成
無(wú)論是公鏈還是聯(lián)盟鏈,至少需要四個(gè)模塊組成:P2P 網(wǎng)絡(luò)協(xié)議、分布式一致性算法(共識(shí)機(jī)制)、加密簽名算法、賬戶與存儲(chǔ)模型。
1. P2P 網(wǎng)絡(luò)協(xié)議
P2P 網(wǎng)絡(luò)協(xié)議是所有區(qū)塊鏈的最底層模塊,負(fù)責(zé)交易數(shù)據(jù)的網(wǎng)絡(luò)傳輸和廣播、節(jié)點(diǎn)發(fā)現(xiàn)和維護(hù)。
通常我們所用的都是比特幣 P2P 網(wǎng)絡(luò)協(xié)議模塊,它遵循一定的交互原則。比如:初次連接到其他節(jié)點(diǎn)會(huì)被要求按照握手協(xié)議來(lái)確認(rèn)狀態(tài),在握手之后開始請(qǐng)求 Peer 節(jié)點(diǎn)的地址數(shù)據(jù)以及區(qū)塊數(shù)據(jù)。
這套 P2P 交互協(xié)議也具有自己的指令集合,指令體現(xiàn)在在消息頭(Message Header) 的 命令(command)域中,這些命令為上層提供了節(jié)點(diǎn)發(fā)現(xiàn)、節(jié)點(diǎn)獲取、區(qū)塊頭獲取、區(qū)塊獲取等功能,這些功能都是非常底層、非?;A(chǔ)的功能。如果你想要深入了解,可以參考比特幣開發(fā)者指南中的 Peer Discovery 的章節(jié)。
2. 分布式一致性算法
在經(jīng)典分布式計(jì)算領(lǐng)域,我們有 Raft 和 Paxos 算法家族代表的非拜占庭容錯(cuò)算法,以及具有拜占庭容錯(cuò)特性的 PBFT 共識(shí)算法。
如果從技術(shù)演化的角度來(lái)看,我們可以得出一個(gè)圖,其中,區(qū)塊鏈技術(shù)把原來(lái)的分布式算法進(jìn)行了經(jīng)濟(jì)學(xué)上的拓展。
在圖中我們可以看到,計(jì)算機(jī)應(yīng)用在最開始多為單點(diǎn)應(yīng)用,高可用方便采用的是冷災(zāi)備,后來(lái)發(fā)展到異地多活,這些異地多活可能采用的是負(fù)載均衡和路由技術(shù),隨著分布式系統(tǒng)技術(shù)的發(fā)展,我們過(guò)渡到了 Paxos 和 Raft 為主的分布式系統(tǒng)。
而在區(qū)塊鏈領(lǐng)域,多采用 PoW 工作量證明算法、PoS 權(quán)益證明算法,以及 DPoS 代理權(quán)益證明算法,以上三種是業(yè)界主流的共識(shí)算法,這些算法與經(jīng)典分布式一致性算法不同的是,它們?nèi)谌肓私?jīng)濟(jì)學(xué)博弈的概念,下面我分別簡(jiǎn)單介紹這三種共識(shí)算法。
PoW: 通常是指在給定的約束下,求解一個(gè)特定難度的數(shù)學(xué)問(wèn)題,誰(shuí)解的速度快,誰(shuí)就能獲得記賬權(quán)(出塊)權(quán)利。這個(gè)求解過(guò)程往往會(huì)轉(zhuǎn)換成計(jì)算問(wèn)題,所以在比拼速度的情況下,也就變成了誰(shuí)的計(jì)算方法更優(yōu),以及誰(shuí)的設(shè)備性能更好。
PoS: 這是一種股權(quán)證明機(jī)制,它的基本概念是你產(chǎn)生區(qū)塊的難度應(yīng)該與你在網(wǎng)絡(luò)里所占的股權(quán)(所有權(quán)占比)成比例,它實(shí)現(xiàn)的核心思路是:使用你所鎖定代幣的幣齡(CoinAge)以及一個(gè)小的工作量證明,去計(jì)算一個(gè)目標(biāo)值,當(dāng)滿足目標(biāo)值時(shí),你將可能獲取記賬權(quán)。
DPoS: 簡(jiǎn)單來(lái)理解就是將 PoS 共識(shí)算法中的記賬者轉(zhuǎn)換為指定節(jié)點(diǎn)數(shù)組成的小圈子,而不是所有人都可以參與記賬。這個(gè)圈子可能是 21 個(gè)節(jié)點(diǎn),也有可能是 101 個(gè)節(jié)點(diǎn),這一點(diǎn)取決于設(shè)計(jì),只有這個(gè)圈子中的節(jié)點(diǎn)才能獲得記賬權(quán)。這將會(huì)極大地提高系統(tǒng)的吞吐量,因?yàn)楦俚墓?jié)點(diǎn)也就意味著網(wǎng)絡(luò)和節(jié)點(diǎn)的可控。
3. 加密簽名算法
在區(qū)塊鏈領(lǐng)域,應(yīng)用得最多的是哈希算法。哈希算法具有抗碰撞性、原像不可逆、難題友好性等特征。
其中,難題友好性正是眾多 PoW 幣種賴以存在的基礎(chǔ),在比特幣中,SHA256 算法被用作工作量證明的計(jì)算方法,也就是我們所說(shuō)的挖礦算法。
而在萊特幣身上,我們也會(huì)看到 Scrypt 算法,該算法與 SHA256 不同的是,需要大內(nèi)存支持。而在其他一些幣種身上,我們也能看到基于 SHA3 算法的挖礦算法。以太坊使用了 Dagger-Hashimoto 算法的改良版本,并命名為 Ethash,這是一個(gè) IO 難解性的算法。
當(dāng)然,除了挖礦算法,我們還會(huì)使用到 RIPEMD160 算法,主要用于生成地址,眾多的比特幣衍生代碼中,絕大部分都采用了比特幣的地址設(shè)計(jì)。
除了地址,我們還會(huì)使用到最核心的,也是區(qū)塊鏈 Token 系統(tǒng)的基石:公私鑰密碼算法。
在比特幣大類的代碼中,基本上使用的都是 ECDSA。ECDSA 是 ECC 與 DSA 的結(jié)合,整個(gè)簽名過(guò)程與 DSA 類似,所不一樣的是簽名中采取的算法為 ECC(橢圓曲線函數(shù))。
從技術(shù)上看,我們先從生成私鑰開始,其次從私鑰生成公鑰,最后從公鑰生成地址,以上每一步都是不可逆過(guò)程,也就是說(shuō)無(wú)法從地址推導(dǎo)出公鑰,從公鑰推導(dǎo)到私鑰。
4. 賬戶與交易模型
從一開始的定義我們知道,僅從技術(shù)角度可以認(rèn)為區(qū)塊鏈?zhǔn)且环N分布式數(shù)據(jù)庫(kù),那么,多數(shù)區(qū)塊鏈到底使用了什么類型的數(shù)據(jù)庫(kù)呢?
我在設(shè)計(jì)元界區(qū)塊鏈時(shí),參考了多種數(shù)據(jù)庫(kù),有 NoSQL 的 BerkelyDB、LevelDB,也有一些幣種采用基于 SQL 的 SQLite。這些作為底層的存儲(chǔ)設(shè)施,多以輕量級(jí)嵌入式數(shù)據(jù)庫(kù)為主,由于并不涉及區(qū)塊鏈的賬本特性,這些存儲(chǔ)技術(shù)與其他場(chǎng)合下的使用并沒(méi)有什么不同。
區(qū)塊鏈的賬本特性,通常分為 UTXO 結(jié)構(gòu)以及基于 Accout-Balance 結(jié)構(gòu)的賬本結(jié)構(gòu),我們也稱為賬本模型。UTXO 是“unspent transaction input/output”的縮寫,翻譯過(guò)來(lái)就是指“未花費(fèi)的交易輸入輸出”。
這個(gè)區(qū)塊鏈中 Token 轉(zhuǎn)移的一種記賬模式,每次轉(zhuǎn)移均以輸入輸出的形式出現(xiàn);而在 Balance 結(jié)構(gòu)中,是沒(méi)有這個(gè)模式的。