時(shí)間:2021-11-30|瀏覽:450
每個(gè)區(qū)塊鏈網(wǎng)絡(luò)都有網(wǎng)絡(luò)層、共識(shí)層和應(yīng)用層的區(qū)別。每個(gè)區(qū)塊鏈網(wǎng)絡(luò)都有不同的特點(diǎn),因?yàn)椴煌瑢哟蔚脑O(shè)計(jì)思路不同。在這篇文章中,我們將整理Solana通過這些數(shù)據(jù),網(wǎng)絡(luò)的運(yùn)行邏輯可以知道為什么Solana會(huì)在以太坊2.0上線前,會(huì)比以太坊好用。
以太坊總帳在1.0鏈由礦工維護(hù),2.0里,礦工成為驗(yàn)證者,驗(yàn)證者用計(jì)算設(shè)備建立驗(yàn)證器而不是原來的礦機(jī)。Solana也是通過驗(yàn)證者保護(hù)總賬,但是驗(yàn)證者形成共識(shí)的算法不同。通過以下順序,我們可以了解共識(shí)形成的過程。
Solana集群
Solana集群是一組驗(yàn)證人,共同保持賬簿的完整性,有多個(gè)集群。
創(chuàng)建集群
在啟動(dòng)任何驗(yàn)證節(jié)點(diǎn)之前,您需要?jiǎng)?chuàng)建一個(gè)創(chuàng)建配置。創(chuàng)建配置將配置一個(gè)具有引導(dǎo)驗(yàn)證能力的節(jié)點(diǎn),第二個(gè)驗(yàn)證節(jié)點(diǎn)可以聯(lián)系引導(dǎo)驗(yàn)證節(jié)點(diǎn)注冊(cè)為驗(yàn)證節(jié)點(diǎn)。然后,其他驗(yàn)證節(jié)點(diǎn)將繼續(xù)在集群的任何注冊(cè)成員中注冊(cè)。
驗(yàn)證節(jié)點(diǎn)將收到領(lǐng)導(dǎo)的所有項(xiàng)目,并提交投票以確認(rèn)這些項(xiàng)目的有效性。投票后,驗(yàn)證節(jié)點(diǎn)需要存儲(chǔ)這些項(xiàng)目。但是一旦驗(yàn)證節(jié)點(diǎn)發(fā)現(xiàn)有足夠的副本,就會(huì)刪除自己的副本。
加入集群
驗(yàn)證節(jié)點(diǎn)通過發(fā)送到控制臺(tái)(control plane)注冊(cè)信息進(jìn)入集群??刂婆_(tái)使用八卦(gossip)協(xié)議的實(shí)現(xiàn)意味著節(jié)點(diǎn)可以向任何現(xiàn)有節(jié)點(diǎn)注冊(cè),并期望其注冊(cè)傳播到集群中的所有節(jié)點(diǎn)。一個(gè)節(jié)點(diǎn)可以確保它最終擁有與每個(gè)其他節(jié)點(diǎn)相同的信息,但沒有一個(gè)節(jié)點(diǎn)可以審查這些信息。所有節(jié)點(diǎn)同步所需的時(shí)間與參與集群節(jié)點(diǎn)的平方成正比。
將交易發(fā)送到集群
客戶端將交易發(fā)送到任何驗(yàn)證節(jié)點(diǎn)的交易處理單元(TPU)端口。如果節(jié)點(diǎn)在驗(yàn)證節(jié)點(diǎn)中扮演角色,它將交易轉(zhuǎn)發(fā)給指定的領(lǐng)導(dǎo)。如果是領(lǐng)導(dǎo)角色,節(jié)點(diǎn)將傳入的事務(wù)捆綁在一起,并給它一個(gè)時(shí)間戳來創(chuàng)建一個(gè)項(xiàng)目(entry),然后推送到集群的數(shù)據(jù)中心(dataplane)。進(jìn)入數(shù)據(jù)中心后,交易將由驗(yàn)證節(jié)點(diǎn)進(jìn)行驗(yàn)證,從而有效地將交易添加到賬簿中。
確認(rèn)交易
Solana集群可以在亞秒時(shí)間內(nèi)確認(rèn)(confirmation)最多150個(gè)節(jié)點(diǎn),并計(jì)劃擴(kuò)展到成千上萬個(gè)節(jié)點(diǎn)。一旦完全實(shí)施,確認(rèn)時(shí)間預(yù)計(jì)只會(huì)隨著驗(yàn)證節(jié)點(diǎn)數(shù)量的對(duì)數(shù)而增加,對(duì)數(shù)基數(shù)很高。網(wǎng)絡(luò)增加到一定規(guī)模后,會(huì)變得太慢,無法實(shí)現(xiàn)亞秒確認(rèn)。將消息發(fā)送到所有節(jié)點(diǎn)所花費(fèi)的時(shí)間與節(jié)點(diǎn)數(shù)量的平方成正比。如果區(qū)塊鏈想要獲得低確認(rèn)率,并嘗試使用網(wǎng)絡(luò)來實(shí)現(xiàn)這一點(diǎn),它將被迫集中在少數(shù)節(jié)點(diǎn)上。
因此,可以使用以下技術(shù)組合來確認(rèn)可擴(kuò)展性:
使用VDF樣品給交易打上時(shí)間戳并簽名。將交易分為幾批,將每筆交易發(fā)送到一個(gè)單獨(dú)的節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)與對(duì)等節(jié)點(diǎn)共享其批次。重復(fù)最后一步,直到所有節(jié)點(diǎn)都有所有批次。
Solana用固定的時(shí)間間隔(稱為插槽)輪換領(lǐng)導(dǎo)。每個(gè)領(lǐng)導(dǎo)只能在分配的時(shí)間內(nèi)生成項(xiàng)目。因此,領(lǐng)導(dǎo)在交易中加入時(shí)間戳,以便驗(yàn)證節(jié)點(diǎn)可以找到指定領(lǐng)導(dǎo)的公鑰。然后,領(lǐng)導(dǎo)簽署時(shí)間戳,驗(yàn)證節(jié)點(diǎn)驗(yàn)證簽名,證明簽名者是指定領(lǐng)導(dǎo)公鑰的所有者。
下一步,將交易分成批處理,這樣節(jié)點(diǎn)就可以在不復(fù)制的情況下將交易發(fā)送給多方。舉例來說,如果領(lǐng)導(dǎo)者需要將60筆交易發(fā)送到6個(gè)節(jié)點(diǎn),他們將60筆交易的集合分成10筆交易的批次,并將一筆交易發(fā)送到每個(gè)節(jié)點(diǎn)。這樣,領(lǐng)導(dǎo)者就可以把60筆交易放在網(wǎng)上,而不是每個(gè)節(jié)點(diǎn)60筆交易。然后,每個(gè)節(jié)點(diǎn)都與對(duì)等節(jié)點(diǎn)共享其批次。當(dāng)節(jié)點(diǎn)收集了6個(gè)批次時(shí),它將重建60個(gè)交易的原始集合。
該技術(shù)可稱為(渦輪塊傳播)Turbine Block Propogation。
同步
快速可靠的同步是Solana實(shí)現(xiàn)超高吞吐量的最大原因。Solana采用歷史證明PoH算法
區(qū)塊可以按照任何順序甚至延遲好幾年才傳到驗(yàn)證節(jié)點(diǎn)那里。通過這種可靠的同步保證,Solana能將塊分解成較小的批量交易,稱為條目(entries)。在達(dá)成任何共識(shí)之前,項(xiàng)目將實(shí)時(shí)傳輸?shù)津?yàn)證節(jié)點(diǎn)。
熱點(diǎn):以太 以太坊 以太坊2.0 區(qū)塊鏈 數(shù)據(jù)