主頁 > 區塊鏈 > IC的P2P層如何實作安全可擴展性

IC的P2P層如何實作安全可擴展性

2021-10-24 07:25:46 區塊鏈

Internet Computer使開發者可以開發Canisters組成面向C端用戶的Dapp,任何開發者都可以在IC上重新構想去中心化網路服務、DeFi、社交Dapp、NFT、游戲等應用,因此在Internet Computer在最初設計時就考慮到自身承載泛平臺所需的安全、可靠、和可拓展性,

可拓展性一直是一個非常重要的因素,它主要依賴于IC網路中的訊息分發的效率,網路越大,承載的Dapp越多,分發的訊息就越多,為此Internet Computer采用分片技術將網路劃分為多個子網,每個子網都可以被視為是一個IC區塊鏈,它們通過選定節點組成子網運行組成Dapp的Canisters,IC P2P層是同一子網節點之間實作安全、可靠、可擴展通行的Layer,

Internet Computer協議有四個主要Layer組成:

  • 執行管理層用于確定性軟體訊息的安全環境;

  • 訊息路由層在子網之間的路由用戶和系統生成的訊息,管理應用程式的輸入和輸出佇列,并調度訊息以供執行;

  • 共識層選擇和排序從用戶和不同子網接收的訊息,以創建可以在竄地到訊息路由層之前進行公正和最終確定的區塊;

  • 點對點(P2P)層從用戶以及同一子網中的其他節點收集和發布訊息,P2P層將接收到的訊息廣播到子網的其他節點,以確保平臺的安全、可靠和彈性,

IC P2P層要實作的是安全性、性能和可擴展性:Internet Computer的設計是即使是存在惡意節點時也能確保安全運行,因此IC P2P層和協議皆在確保即使存在最多有三分之一惡意節點的情況下也能保持運行,IC P2P層與其他傳統區塊鏈的P2P層設計不同,IC 的P2P層增加了復雜性和性能的權衡,在以下會說到IC P2P層如何以最小的性能開銷實作安全目標,同時使子網能夠擴展,

此外IC P2P層為訊息提供了獨特的優先級機制,這樣不僅可以更快的傳送重要訊息,并通過不發送不需要的訊息來節省帶寬,

在這篇博文中,將涉及IC P2P層的以下幾個方面:

  • 要求;

  • 基本原則;

  • 與Dapp程式組件的互動;

  • 資料結構;

  • Gossip分布式協議;

  • 寬帶和記憶體注意事項,

IC P2P層負責發送上面Layer(例如共識)創建的Artifacts,并負責接受、驗證、處理和分發來自同一子網中其他節點以及來自用戶的Artifacts,IC P2P層保證,如果有正確節點想其對點節點發送Artifacts,則該Artifacts最終被子網中需要它的所有正確節點接收,這可以看作是可靠廣播的一種特殊情況,這是為IC共識演算法量身定制的,具有優先級,在某些網路假設下,它提供限時交付,

Dfinity希望IC P2P層在以下要求下提供這種保證:

  • 盡管存在拜占庭故障,但保證限時/最終交付;

  • 為不同的Dapp程式組件/對點保留資源;

  • 有界資源(包括CPU、記憶體、硬碟);

  • 不同Artifacts的優先級;

  • 高效率;

  • DOS/垃圾郵件彈性;

  • 加密、真實性和完整性;

IC P2P層使用Gossip分布式機制在子網中分發訊息,gossip協議的原理就是將收到的訊息或創建的訊息發送給子網中的對點方,P2P中的對點方由覆寫網路拓撲(組成網路之間設備的分布情況以及連接狀態)確定,一切都保證在O(diameter)hops中傳遞,如果覆寫是無向連接的,則所有節點遵循協議,并且不會丟棄任何訊息,

IC P2P層被設計為在即使在拜占庭節點存在的情況下也具有容錯能力,IC P2P層在設計時就考慮了在子網中會出現此類節點的可能性,所以IC P2P層保證即使子網中多大三分之一的節點是拜占庭節點也能正確有效的運行:如果一個節點表現出惡意(不遵守協議、試圖傷害其他節點或用戶)或者如果它表現出一些錯誤行為(不回應、不分發Artifacts,遭受嚴重的網路延遲),基于IC P2P層的容錯能力只要不超過三分之一的是拜占庭節點該子網也能正確有效運行,

在考慮拜占庭節點時,Dfinity希望避免幾個問題,第一種是所謂的eclipse攻擊,其中某個節點的所有對點方是惡意或是有故障的,惡意節點可以串通并選擇正確節點看到的Artifacts,并將該節點與網路的其余部分斷開,因為會驗證訊息的真實性,惡意節點無法用欺騙訊息欺騙誠實節點,但連接性問題仍然存在,為了避免這種情況,必須使用覆寫來保證與足夠多的對點節點的連接,一個節點可以連接子網中的所有其他節點,形成一個完整的圖,從而提供完美的eclipse攻擊保護,對于較大的子網,例如托管NNS的子網采用稀疏覆寫,

因為想保證在一定時間內所有依賴它們的節點都收到Artifacts,所以gossip分布式協議需要確保這些Artifacts被交付,盡管可能存在故障鏈接和節點問題,但是gossip分布式協議通常基于傳播模式會導致帶寬的亢余和浪費,因此減少這些開銷的方式設計此類協議非常重要,

Artifacts可能會很大,如果這些Artifacts從多個對點多次發送,則會導致嚴重的帶寬浪費,這類似于不得不從多個朋友那里一遍又一遍的聽到相同的謠言,在這個比喻中,你的朋友可以先問你是否聽說過最新訊息,而不是告訴你謠言,在背景關系中,這對應于發送廣告,廣告是小訊息,僅包含Artifacts的元資料和一些驗證它們的方法,但不包含其內容,每個節點從至少一個對點方請求它需要的Artifacts,在IC的設計中,將從詢問一個對點開始,但是如果遇到問題,可能會向另一個對點詢問相同的Artifacts,這可能會重復,直到找到一個沒有故障的誠實對點節點,

廣告包括由gossip分布式協議及其應用程式組件用于完整性驗證(完整性哈希)和用于決策(幫助組件對Artifacts進行優先級排序的屬性)的欄位,

一個節點可能會收到多個廣告,因此必須選擇首先請求哪些Artifacts,每個廣告都包含一些創建它客戶端組件提供的屬性,例如共識Artifacts包含一個height屬性,它告訴相應Artifacts的區塊高度,共識還為gossip提供了優先功能,它接受一個廣告(及其屬性)并回傳一個優先級值(最低的是 drop,這意味著不需要這個Artifacts,最高的是ftch now,這意味著最高優先級的Artifacts),如果現在共識現在處于高度10,它可能更喜歡該高度10的Artifacts而不是高度11和12的Artifacts,這取決于它們的型別以及可能的其他狀態引數(作為一般規則,它更喜歡相同高度而不是不同的高度),IC的P2P層采用這些優先級值來確定應該首先請求哪個Artifacts,

P2P商店在Artifacts中接收Artifacts,它通知共識和其他客戶端組件有關Artifacts池中的更改,然后應用程式組件確定其關于Artifacts池內容的下一步操作,Artifacts池中包含每一個應用程式組件的所有可用Artifacts,

通過將Artifacts分類為已驗證或未驗證,后一類用于尚未驗證的Artifacts,驗證意味著由客戶端組件檢查Artifacts,例如通過驗證簽名,如果需要可以將客戶端的Artifacts池持久化到非易失性存盤中,這樣做的目的是為了共識Artifacts,

在上面可以看到一個節點為gossip分布式協議保存了哪些資料結構,左側是Artifacts池,它分為已驗證和未驗證部分,未驗證部分包含那些尚未驗證的Artifacts,每個未驗證部分的大小是有界的,以防阻止惡意節點填滿Artifacts池從而導致資源泄漏和拒絕服務攻擊,但足夠大以確保協議在正常情況下正確運行,

此外對于每個對點,維護其背景關系,這有助于跟蹤了收到了哪些廣告,向誰請求了哪些廣告:

  • 廣告佇列是從該對點方接收到的所有廣告的優先佇列,它們按照優先級排序;

  • 請求的集合包含已經從該對點請求相應Artifacts的所有廣告;

  • 接收檢查快取用于阻止對最近收到的Artifacts的請求,

以下是gossip分布式協議處理的主要事件:

  • Artifacts池中的新Artifacts(由客戶端組件在本地添加);

  • 處理從對點方收到的新廣告;

  • 處理從對點方收到的新Artifacts;

  • 恢復和重新連接問題,

Artifact池中的新工件(由客戶端組件在本地添加):

當一個節點從客戶端組件接收到一個新的Artifacts時,它會為它創建一個廣告,并將這個廣告發送給它所有的對點方,

處理從對點方收到的新廣告:

當節點從對點節點收到廣告時,它首先檢查相應Artifacts是否已由節點本身下載或創建,如果不是,此廣告的優先級高于 drop ,則會將廣告添加到發送它的對點方的廣告佇列中,如果Artifacts池的未驗證部分中有足夠的空間供對點方使用,會專門為此對點方i呼叫一個名為 download_next(i)的函式,該函式獲取最高優先級的廣告(基于優先級函式分配的優先級別),并從該對點方請求相應的Artifacts,因此,沒有必要請求剛剛收到廣告的Artifacts,只請求具有最高優先級的Artifacts,

請求Artifacts后,相應的廣告會從廣告佇列移動到向其請求Artifacts的對點方的請求集合,

可能在多個對點方的廣告佇列中會擁有相同的廣告,因為多個對點方可能發送了相同的廣告,廣告將會保留在其他對點方的廣告佇列中,直到收到實際的Artifacts件為止,在Artifacts請求上設定超時是為了防止無回應或緩慢的對點方,這有助于保證有限的時間交付,我們將避免從我們已經提出請求的對點請求Artifacts,因為它可能行為不端,在這種情況下,我們可以看到其他對點方是否已經發布了相同的Artifacts,如果是,我們將在嘗試無回應的對點方之前嘗試從它們哪里獲取它,

處理從對點方收到的新Artifacts:

當我們從對點方收到Artifacts時,我們首先通過檢查相應的廣告是否在對點方的請求集中來確保它是被請求的,然后我們使用相應的完整性哈希驗證其完整性,如果這些檢查中的任何一項失敗,則意味著該對等方行為不端,最終,我們從所有廣告佇列和請求的集合中洗掉該廣告,我們將Artifacts添加到發送它的對點方的未驗證池中,我們將把它留在那里讓客戶端組件檢查和驗證它,我們還將工件的散列添加到稱為接收檢查的小快取中,每個對點維護,以忽略同一Artifacts的進一步廣告,這樣做是為了應用程式組件提供一些寬限期來更新它們的優先級函式,這樣即使Artifacts從Artifacts池中的未驗證部分中洗掉,它們也不會再次請求相同的廣告,如果我們在未經驗證的Artifacts池中仍有空間供此對點體使用,我們將根據優先級使用 download_next(i) 函式從中請求下一個Artifacts,

傳輸和連接管理:

在 gossip 組件下方,有一個傳輸組件,用于維護對點之間的實際網路連接,傳輸組件負責保持連接穩定,對于瞬態連接問題和擁塞情況,它有自己的緩沖區,它有一個內部機制來確保連接不會掛起并檢測比平常更長的延遲,這對于提供限時交付很重要,具有自己的第 7 層標頭的傳輸幀gossip訊息,其中包含一些由傳輸組件用于維護流和報告錯誤的元資料欄位,目前,傳輸在對點之間使用多個 TCP 流,

傳輸以適應這種分布式對點網路的方式使用 TLS 1.3,沒有證書頒發機構層次結構作為信任根,相反,信任根是為節點提供自簽名證書的注冊表,以便節點可以對其對點方進行身份驗證,

如果 TCP 連接中斷,Transport 會定期嘗試重新連接(只要相應的對點方仍在節點分配的覆寫層上),當重新建立連接時,我們會清空相應的傳輸佇列并開始接收新訊息,

由于所有資料結構都有大小限制,這也適用于傳輸緩沖區,如果這樣的緩沖區已滿,或者如果我們一直在等待重新連接,傳輸最侄訓通知接收器gossip組件潛在的訊息丟失,然后接收方可以發送重傳請求,重傳請求是gossip分布式協議的訊息,它有一個過濾器來告訴接收者請求的發送者看到的最新Artifacts,可能是在發送此請求時其它對點已經成功發送了相同的廣告,因此節點可能不需要在它錯過的所有訊息上趕上相應的對點,

收到重傳請求后,發送方節點根據請求中包含過濾器發送所有相關廣告,傳輸這些廣告發送給接收者,如果在此程序中佇列再次變滿,則會將發送剩余廣告的另一個重傳請求,

總而言之,IC P2P層保證了子網中Artifacts的有限交付,它使用廣告-請求-Artifacts模式和覆寫拓撲來減少帶寬開銷,并為客戶端組件提供優先級 API,以確保首先交付最高優先級的Artifacts,該協議具有容錯性,并且考慮到了拒絕服務攻擊和其他威脅,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/333411.html

標籤:區塊鏈

上一篇:WDK第七周_基于Fabric的區塊鏈系統開發

下一篇:Cirus質押及貢獻合同

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • JAVA使用 web3j 進行token轉賬

    最近新學習了下區塊鏈這方面的知識,所學不多,給大家分享下。 # 1. 關于web3j web3j是一個高度模塊化,反應性,型別安全的Java和Android庫,用于與智能合約配合并與以太坊網路上的客戶端(節點)集成。 # 2. 準備作業 jdk版本1.8 引入maven <dependency> < ......

    uj5u.com 2020-09-10 03:03:06 more
  • 以太坊智能合約開發框架Truffle

    前言 部署智能合約有多種方式,命令列的瀏覽器的渠道都有,但往往跟我們程式員的風格不太相符,因為我們習慣了在IDE里寫了代碼然后打包運行看效果。 雖然現在IDE中已經存在了Solidity插件,可以撰寫智能合約,但是部署智能合約卻要另走他路,沒辦法進行一個快捷的部署與測驗。 如果團隊管理的區塊節點多、 ......

    uj5u.com 2020-09-10 03:03:12 more
  • 谷歌二次驗證碼成為區塊鏈專用安全碼,你怎么看?

    前言 谷歌身份驗證器,前些年大家都比較陌生,但隨著國內互聯網安全的加強,它越來越多地出現在大家的視野中。 比較廣泛接觸的人群是國際3A游戲愛好者,游戲盜號現象嚴重+國外賬號安全應用廣泛,這類游戲一般都會要求用戶系結名為“兩步驗證”、“雙重驗證”等,平臺一般都推薦用谷歌身份驗證器。 后來區塊鏈業務風靡 ......

    uj5u.com 2020-09-10 03:03:17 more
  • 密碼學DAY1

    目錄 ##1.1 密碼學基本概念 密碼在我們的生活中有著重要的作用,那么密碼究竟來自何方,為何會產生呢? 密碼學是網路安全、資訊安全、區塊鏈等產品的基礎,常見的非對稱加密、對稱加密、散列函式等,都屬于密碼學范疇。 密碼學有數千年的歷史,從最開始的替換法到如今的非對稱加密演算法,經歷了古典密碼學,近代密 ......

    uj5u.com 2020-09-10 03:03:50 more
  • 密碼學DAY1_02

    目錄 ##1.1 ASCII編碼 ASCII(American Standard Code for Information Interchange,美國資訊交換標準代碼)是基于拉丁字母的一套電腦編碼系統,主要用于顯示現代英語和其他西歐語言。它是現今最通用的單位元組編碼系統,并等同于國際標準ISO/IE ......

    uj5u.com 2020-09-10 03:04:50 more
  • 密碼學DAY2

    ##1.1 加密模式 加密模式:https://docs.oracle.com/javase/8/docs/api/javax/crypto/Cipher.html ECB ECB : Electronic codebook, 電子密碼本. 需要加密的訊息按照塊密碼的塊大小被分為數個塊,并對每個塊進 ......

    uj5u.com 2020-09-10 03:05:42 more
  • NTP時鐘服務器的特點(京準電子)

    NTP時鐘服務器的特點(京準電子) NTP時鐘服務器的特點(京準電子) 京準電子官V——ahjzsz 首先對時間同步進行了背景介紹,然后討論了不同的時間同步網路技術,最后指出了建立全球或區域時間同步網存在的問題。 一、概 述 在通信領域,“同步”概念是指頻率的同步,即網路各個節點的時鐘頻率和相位同步 ......

    uj5u.com 2020-09-10 03:05:47 more
  • 標準化考場時鐘同步系統推進智能化校園建設

    標準化考場時鐘同步系統推進智能化校園建設 標準化考場時鐘同步系統推進智能化校園建設 安徽京準電子科技官微——ahjzsz 一、背景概述隨著教育事業的快速發展,學校建設如雨后春筍,隨之而來的學校教育、管理、安全方面的問題成了學校管理人員面臨的最大的挑戰,這些問題同時也是學生家長所擔心的。為了讓學生有更 ......

    uj5u.com 2020-09-10 03:05:51 more
  • 位元幣入門

    引言 位元幣基本結構 位元幣基礎知識 1)哈希演算法 2)非對稱加密技術 3)數字簽名 4)MerkleTree 5)哪有位元幣,有的是UTXO 6)位元幣挖礦與共識 7)區塊驗證(共識) 總結 引言 上一篇我們已經知道了什么是區塊鏈,此篇說一下區塊鏈的第一個應用——位元幣。其實先有位元幣,后有的區塊 ......

    uj5u.com 2020-09-10 03:06:15 more
  • 北斗對時服務器(北斗對時設備)電力系統應用

    北斗對時服務器(北斗對時設備)電力系統應用 北斗對時服務器(北斗對時設備)電力系統應用 京準電子科技官微(ahjzsz) 中國北斗衛星導航系統(英文名稱:BeiDou Navigation Satellite System,簡稱BDS),因為是目前世界范圍內唯一可以大面積提供免費定位服務的系統,所以 ......

    uj5u.com 2020-09-10 03:06:20 more
最新发布
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:46:47 more
  • Hyperledger Fabric 使用 CouchDB 和復雜智能合約開發

    在上個實驗中,我們已經實作了簡單智能合約實作及客戶端開發,但該實驗中智能合約只有基礎的增刪改查功能,且其中的資料管理功能與傳統 MySQL 比相差甚遠。本文將在前面實驗的基礎上,將 Hyperledger Fabric 的默認資料庫支持 LevelDB 改為 CouchDB 模式,以實作更復雜的資料... ......

    uj5u.com 2023-04-16 07:28:31 more
  • .NET Core 波場鏈離線簽名、廣播交易(發送 TRX和USDT)筆記

    Get Started NuGet You can run the following command to install the Tron.Wallet.Net in your project. PM> Install-Package Tron.Wallet.Net 配置 public reco ......

    uj5u.com 2023-04-14 08:08:00 more
  • DKP 黑客分析——不正確的代幣對比率計算

    概述: 2023 年 2 月 8 日,針對 DKP 協議的閃電貸攻擊導致該協議的用戶損失了 8 萬美元,因為 execute() 函式取決于 USDT-DKP 對中兩種代幣的余額比率。 智能合約黑客概述: 攻擊者的交易:0x0c850f,0x2d31 攻擊者地址:0xF38 利用合同:0xf34ad ......

    uj5u.com 2023-04-07 07:46:09 more
  • Defi開發簡介

    Defi開發簡介 介紹 Defi是去中心化金融的縮寫, 是一項旨在利用區塊鏈技術和智能合約創建更加開放,可訪問和透明的金融體系的運動. 這與傳統金融形成鮮明對比,傳統金融通常由少數大型銀行和金融機構控制 在Defi的世界里,用戶可以直接從他們的電腦或移動設備上訪問廣泛的金融服務,而不需要像銀行或者信 ......

    uj5u.com 2023-04-05 08:01:34 more
  • solidity簡單的ERC20代幣實作

    // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <0.9.0; import "hardhat/console.sol"; //ERC20 同質化代幣,每個代幣的本質或性質都是相同 //ETH 是原生代幣,它不是ERC20代幣, ......

    uj5u.com 2023-03-21 07:56:29 more
  • solidity 參考型別修飾符memory、calldata與storage 常量修飾符C

    在solidity語言中 參考型別修飾符(參考型別為存盤空間不固定的數值型別) memory、calldata與storage,它們只能修飾參考型別變數,比如字串、陣列、位元組等... memory 適用于方法傳參、返參或在方法體內使用,使用完就會清除掉,釋放記憶體 calldata 僅適用于方法傳參 ......

    uj5u.com 2023-03-08 07:57:54 more
  • solidity注解標簽

    在solidity語言中 注釋符為// 注解符為/* 內容*/ 或者 是 ///內容 注解中含有這幾個標簽給予我們使用 @title 一個應該描述合約/介面的標題 contract, library, interface @author 作者的名字 contract, library, interf ......

    uj5u.com 2023-03-08 07:57:49 more
  • 評價指標:相似度、GAS消耗

    【代碼注釋自動生成方法綜述】 這些評測指標主要來自機器翻譯和文本總結等研究領域,可以評估候選文本(即基于代碼注釋自動方法而生成)和參考文本(即基于手工方式而生成)的相似度. BLEU指標^[^?88^^?^]^:其全稱是bilingual evaluation understudy.該指標是最早用于 ......

    uj5u.com 2023-02-23 07:27:39 more
  • 基于NOSTR協議的“公有制”版本的Twitter,去中心化社交軟體Damus

    最近,一個幽靈,Web3的幽靈,在網路游蕩,它叫Damus,這玩意詮釋了什么叫做病毒式營銷,滑稽的是,一個Web3產品卻在Web2的產品鏈上瘋狂傳銷,各方大佬紛紛為其背書,到底發生了什么?Damus的葫蘆里,賣的是什么藥? 注冊和簡單實用 很少有什么產品在用戶注冊環節會有什么噱頭,但Damus確實出 ......

    uj5u.com 2023-02-05 06:48:39 more