作者:Anatoly Yakovenko(anatoly@solana.io)
翻譯:tangenter.eth
摘要
本文提出了一種新的區(qū)塊鏈架構(gòu),其基礎(chǔ)是一種能夠驗(yàn)證鏈上事件發(fā)生的先后順序及時(shí)間間隔的新共識(shí)算法,稱作工作歷史證明(Proof of History,PoH)。PoH算法能夠?qū)⒉豢尚湃蔚臅r(shí)間間隔數(shù)據(jù)打包為區(qū)塊鏈賬本——一種只允許添加數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。與工作量證明(Proof of Work,PoW)和權(quán)益證明(Proof of Stake,PoS)這些原有的共識(shí)算法相比較,PoH可減少具備拜占庭容錯(cuò)機(jī)制(Byzantine Fault Tolerant)的復(fù)制狀態(tài)機(jī)(Replicated State Machine)在傳遞信息時(shí)的開(kāi)銷,從而使傳輸時(shí)長(zhǎng)降到秒級(jí)以下。與此同時(shí),根據(jù)PoH賬本能夠保存時(shí)間間隔數(shù)據(jù)的特點(diǎn),本文還提出了兩種算法,首先是一種可從任意大小的分區(qū)恢復(fù)數(shù)據(jù)的PoS算法,其次是一種高效的復(fù)制證明算法(Proof of Replication,PoRep)。PoRep和PoH的組合能夠抵御偽造區(qū)塊鏈賬本上時(shí)間(事件的排列順序)和存儲(chǔ)內(nèi)容的欺詐行為。本文將展示,在速度為1Gbps的網(wǎng)絡(luò)環(huán)境和當(dāng)今的硬件條件下,該協(xié)議的每秒數(shù)據(jù)吞吐量(TPS)可以達(dá)到71萬(wàn)次。
1,引言
區(qū)塊鏈技術(shù)的本質(zhì)是具備容錯(cuò)性的復(fù)制狀態(tài)機(jī)。目前可用的一系列公鏈并不依賴于時(shí)間,換句話說(shuō),它們的運(yùn)行機(jī)制不假定參與者們能夠各自維持完全相同的本地時(shí)間。區(qū)塊鏈網(wǎng)絡(luò)上的每個(gè)節(jié)點(diǎn)通常僅參考它們自己的時(shí)鐘,對(duì)網(wǎng)絡(luò)中其余參與者的時(shí)鐘毫無(wú)了解。缺乏可信的時(shí)間來(lái)源導(dǎo)致無(wú)法使用時(shí)間戳來(lái)確定是否保留某條消息,因?yàn)椴荒鼙WC網(wǎng)絡(luò)中的每個(gè)參與者都做出相同的選擇。這里介紹的PoH算法旨在創(chuàng)建具有可驗(yàn)證時(shí)間間隔數(shù)據(jù)(即消息和事件之間的間隔時(shí)長(zhǎng))的區(qū)塊鏈賬本。在預(yù)期中,網(wǎng)絡(luò)上的每個(gè)節(jié)點(diǎn)都可以依靠賬本上的時(shí)間間隔數(shù)據(jù)而不必完全信任其余節(jié)點(diǎn)。
2,內(nèi)容概述
以下是本文剩余部分的內(nèi)容:
第3節(jié)介紹本系統(tǒng)的總體設(shè)計(jì);
第4節(jié)描述工作歷史證明算法;
第5節(jié)描述摘要中提及的PoS算法;
第6節(jié)描述摘要中提及的高效PoRep算法;
第7節(jié)分析系統(tǒng)架構(gòu)和性能限制;
第7.5節(jié)將描述一種適用于高性能GPU的智能合約引擎。
3,網(wǎng)絡(luò)設(shè)計(jì)
如圖一所示,在任何給定時(shí)間都有一個(gè)被指定為L(zhǎng)eader的系統(tǒng)節(jié)點(diǎn)負(fù)責(zé)生成PoH序列,從而為整個(gè)網(wǎng)絡(luò)提供具備一致性的可驗(yàn)證時(shí)間間隔數(shù)據(jù)。Leader節(jié)點(diǎn)還負(fù)責(zé)把用戶發(fā)出的信息組織成有序序列,使系統(tǒng)中的其他節(jié)點(diǎn)可以高效處理這些信息,以最大限度地提高數(shù)據(jù)吞吐量。它對(duì)存儲(chǔ)在RAM中的當(dāng)前狀態(tài)執(zhí)行操作,然后將操作數(shù)據(jù)和終止?fàn)顟B(tài)的簽名發(fā)布到被稱作驗(yàn)證者的復(fù)制器節(jié)點(diǎn)。驗(yàn)證者在它們手中的狀態(tài)副本上執(zhí)行相同的操作,并公開(kāi)計(jì)算出的終止?fàn)顟B(tài)簽名作為確認(rèn)。每次公開(kāi)確認(rèn)都將被共識(shí)算法用作確定狀態(tài)的投票。
在未分片狀態(tài)下的任何給定時(shí)間點(diǎn),網(wǎng)絡(luò)中都有且僅有一個(gè)Leader。每個(gè)驗(yàn)證者節(jié)點(diǎn)都具有與Leader節(jié)點(diǎn)相同的硬件能力,并且能夠通過(guò)基于PoS算法的選舉來(lái)成為L(zhǎng)eader。選舉的具體過(guò)程將在5.6小節(jié)中介紹。
由于CAP定理(CAP theorem)的存在,一致性在分片中的優(yōu)先級(jí)幾乎總是高于可用性。在分片較大的情況下,本文提出了一種從任意大小的分片恢復(fù)對(duì)網(wǎng)絡(luò)的整體控制的機(jī)制。5.12小節(jié)對(duì)該機(jī)制進(jìn)行了詳細(xì)闡釋。
4,工作歷史證明
工作歷史證明是一系列計(jì)算流程,它提供了確認(rèn)兩個(gè)事件之間的時(shí)間間隔的加密方法。由于它使用加密安全函數(shù),所以無(wú)法從輸入推測(cè)輸出,必須完整執(zhí)行算法才能得到輸出。該函數(shù)在單個(gè)處理器上按順序運(yùn)行,將上一次的輸出作為這一次的輸入,并定期記錄當(dāng)前輸出值以及被調(diào)用的總次數(shù)。接下來(lái),通過(guò)在獨(dú)立處理器上檢查序列中的每個(gè)分段,輸出值可以被外部計(jì)算機(jī)并行地重新計(jì)算和驗(yàn)證。數(shù)據(jù)(或者數(shù)據(jù)的哈希值)可附加在函數(shù)的狀態(tài)上,從而將它添加到序列當(dāng)中。當(dāng)狀態(tài)、索引或數(shù)據(jù)被添加到序列中時(shí),一個(gè)時(shí)間戳將生成,它可以保證這些數(shù)據(jù)是在序列中的下一個(gè)哈希值生成之前創(chuàng)建的。該設(shè)計(jì)同時(shí)支持橫向擴(kuò)展,因?yàn)槎鄠€(gè)生成器可以通過(guò)將它們各自的狀態(tài)混合到彼此的序列中來(lái)互相同步。橫向擴(kuò)展的具體方法將在4.4小節(jié)進(jìn)行討論。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-434174.html
4.1 具體描述
該系統(tǒng)按如下方式工作:對(duì)于一個(gè)不運(yùn)行便無(wú)法預(yù)測(cè)其輸出的加密哈希函數(shù)(例如SHA256,RIPEMD等哈希函數(shù)),我們從某個(gè)隨機(jī)初始值開(kāi)始運(yùn)行此函數(shù),并將每次運(yùn)行的輸出作為輸入再次傳遞給同一函數(shù),同時(shí)記錄該函數(shù)被調(diào)用的次數(shù)和每次調(diào)用后的輸出。選擇的隨機(jī)初始值可以是任何字符串,比如當(dāng)天的《紐約時(shí)報(bào)》頭版標(biāo)題。如下所示:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-434174.html
PoH序列 | ||
---|---|---|
索引 | 操作 | 輸出哈希值 |
1 | sha256(”隨機(jī)初始值”) | hash1 |
到了這里,關(guān)于Solana白皮書(shū)中文翻譯(1)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!