中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Conflux是怎樣優化帶寬的使用效率的

發布時間:2021-12-22 16:28:50 來源:億速云 閱讀:112 作者:柒染 欄目:互聯網科技

本篇文章給大家分享的是有關Conflux是怎樣優化帶寬的使用效率的,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

早期的區塊鏈系統往往吞吐量很低,相應的對帶寬要求也不高,共識協議本身才是它們性能的瓶頸。例如比特幣網絡平均每 10 分鐘只產生 1MB 大小的區塊,在如今的寬帶網絡環境下幾乎是可以忽略不計的。

近年來,隨著 Conflux 等新一代區塊鏈的發展和成熟,區塊鏈的吞吐量有了質的飛躍,網絡帶寬越來越成為限制區塊鏈性能進一步提高的瓶頸。這次,就讓我們來聊一聊 Conflux 是如何優化帶寬的使用效率的。

交易廣播是在區塊鏈上達成共識的第一步。每當用戶發起一筆交易時,這筆交易從客戶端程序出發,被發往一個或幾個全節點。之后,全節點之間通過點對點網絡將交易轉發給各自的鄰居節點,直到最終所有的全節點都收到這筆交易。

區塊鏈的吞吐量越大則每個節點需要轉發的交易數量也就越多。因此,在區塊鏈的吞吐量和網絡帶寬處于相同的數量級時,交易轉發過程的帶寬利用率將直接影響了整個區塊鏈系統最終的吞吐性能。

我們首先來看一個最簡單的方案:每當一個全節點收到一筆新的交易時,該全節點就將這筆交易發送給它的所有鄰居節點。

按照上述方案,每個節點將多次從不同的鄰居節點收到同一筆交易,這意味著無論是交易的發送還是交易的接收,都有著成倍的冗余,網絡帶寬的利用率自然也非常低。以一筆 200 字節大小的交易為例,如果每個節點有 8 個鄰居,那么這筆交易就要為每個全節點帶來約 1.6kB 的發送量和 1.6kB 的接收量——而其中大部分流量是被浪費掉的。

即使是比特幣,作為一個吞吐率只有 7 筆/秒、交易轉發的帶寬利用率完全不構成性能瓶頸的系統,也不再使用上面這種毫無優化的方案了。

比特幣的方案是,當一個比特幣節點 A 第一次收到這筆交易時,它將這筆交易的哈希值(32字節)發送給所有的鄰居節點(除了發給它交易的節點)。鄰居節點 B 收到哈希值后查看自己已經收到的交易中有沒有哈希值一樣的。如果有,就說明 B 已經收到過這筆交易,不需要再接收一次;如果沒有,B 就向 A 請求這筆交易的完整內容。

上述過程中,發送交易哈希值的環節稱為 announcement,對于交易哈希值的檢測可以保證每個節點只需要接收一次完整的交易內容,MT5避免重復傳送完整交易帶來的帶寬浪費。

但是 announcement 本身也需要使用網絡帶寬。粗略地計算可知上述方案中每個節點在announcement 環節約發送 250 字節,雖然比 1.6kB 少了很多,但仍超過了轉發一筆交易的數據量。

我們的目標,是在比特幣交易轉發方案的基礎上,將 announcement 環節產生的數據發送量壓縮至八分之一。

為了實現這一點,最簡單的方法是縮短 announcement 環節廣播的交易哈希值長度。本文中,為了將這個哈希值與應用層面(錢包/智能合約)所使用的 32 字節交易哈希值區分,我們將應用層面交易的哈希值稱為交易的 ID, 轉發中 announcement 環節用到的短哈希值稱為交易的 FID (Forwarding ID).

在比特幣的方案中,FID 與 ID 相等,長達 32 個字節。如果我們將 FID 設為 ID 值的前 4 個字節,就可以達到降低數據發送量的目標。

然而,更短的交易 FID 在節省帶寬的同時也會帶來安全性上的隱患。如果兩筆不同的交易 Tx1 和 Tx2 有相同的交易 FID ,一個節點收到第一筆交易 Tx1 后,在鄰居節點發來第二筆交易 Tx2 的 FID 時,會因為 FID 沖突誤認為自己已經收到了這筆交易,從而不再請求 Tx2 的完整內容。這樣將阻塞第二筆交易 Tx2 在網絡中的廣播。

我們可以具體來算一下交易的 FID 沖突發生的概率:

假設交易的生成速率是每秒 6000 筆交易,每個全節點收到一筆交易 FID 時,會將它和過去 5 分鐘內收到的 FID 對比,來判斷是否請求這筆交易的完整內容。這樣,一筆交易的 FID 和已經存在的交易 FID 沖突的概率是 6000 * 300 / 232,大約是 0.04 %。這意味著每秒平均有 2.4 筆交易會因為 FID 值沖突而無法廣播。

雖然 0.04% 的沖突概率看似不是很高,但這只是沒有攻擊的正常情況。利用特定的攻擊策略,一個攻擊者可以阻塞任意一筆交易的廣播,從而實現阻止特定交易的目的。

攻擊的策略也并不復雜:4 字節的 FID 一共只有 232 個可能的取值,也就是大概 42 億個。攻擊者只要為每一個 FID 取值預先構造一筆交易并存起來,然后就可以根據受害者廣播的交易的 FID 值,從自己預先存的 42 億筆交易中找到 FID 值相同的交易,并搶在受害者前面發送到盡可能多的節點,則先接收到攻擊者發送的交易的節點就會因為 FID 沖突而忽略受害者的交易。即使受害者重發了另一筆交易,攻擊者也有能力重復這個過程。

根據概率上的計算,攻擊者要挑選 42 億個 FID 不同的交易,需要嘗試構造約 1000 億筆交易。對于服務器級的 CPU 來說,構造約 1000 億筆交易只需花一個星期的時間。計算所需的存儲空間在優化后也只需要 32GB。

從整體來說,實施上述攻擊的成本并不算很高。但是在特定的情景下(如 Fomo3D 等合約),交易被阻塞可能為受害者帶來不小的損失。所以這種風險必須從一開始就被排除掉。

以上就是Conflux是怎樣優化帶寬的使用效率的,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

施秉县| 凤庆县| 堆龙德庆县| 碌曲县| 克山县| 庆云县| 城固县| 梓潼县| 来凤县| 张家界市| 保靖县| 射阳县| 大连市| 平陆县| 抚远县| 甘肃省| 绿春县| 庆城县| 喀什市| 齐河县| 海阳市| 增城市| 天柱县| 丹巴县| 巴楚县| 喀喇| 拜城县| 巴马| 宜川县| 柞水县| 名山县| 平舆县| 光泽县| 宣恩县| 卫辉市| 兰坪| 荥经县| 海门市| 集安市| 宜兰市| 桦南县|