當前位置:編程學習大全網 - 源碼下載 - IPFS 壹個分布式系統,用於存儲和訪問文件、網站、應用程序和數據

IPFS 壹個分布式系統,用於存儲和訪問文件、網站、應用程序和數據

《開源精選》是我們分享Github、Gitee等開源社區中優質項目的欄目,包括技術、學習、實用與各種有趣的內容。本期推薦的IPFS 是壹個分布式系統,用於存儲和訪問文件、網站、應用程序和數據。

而且,當您使用 IPFS 時,您不只是從其他人那裏下載文件——您的計算機也有助於分發它們。當您在幾個街區外的朋友需要相同的 Wikipedia 頁面時,他們可能會像從您的鄰居或任何使用 IPFS 的人那裏壹樣從您那裏獲得它。

IPFS 不僅可以用於網頁,還可以用於計算機可能存儲的任何類型的文件,無論是文檔、電子郵件,甚至是數據庫記錄。

可以從不由壹個組織管理的多個位置下載文件:

最後壹點實際上是 IPFS 的全名: InterPlanetary File System 。我們正在努力建立壹個系統,該系統可以在不連貫或相隔很遠的地方工作,就像行星壹樣。雖然這是壹個理想主義的目標,但它讓我們努力工作和思考,幾乎我們為實現這壹目標而創造的壹切在家裏也很有用。

IPFS 是壹個點對點 (p2p) 存儲網絡。可以通過位於世界任何地方的對等點訪問內容,這些對等點可能會傳遞信息、存儲信息或兩者兼而有之。IPFS 知道如何使用其內容地址而不是其位置來查找您要求的內容。

理解 IPFS 的三個基本原則:

這三個原則相互依賴,以啟用 IPFS 生態系統。讓我們從 內容尋址 和內容的唯壹標識開始。

互聯網和您的計算機上都存在這個問題!現在,內容是按位置查找的,例如:

相比之下,每條使用 IPFS 協議的內容都有壹個 內容標識符 ,即 CID,即其 哈希值 。散列對於它所來自的內容來說是唯壹的,即使它與原始內容相比可能看起來很短。

有向無環圖 (DAG)

IPFS 和許多其他分布式系統利用稱為有向無環圖的數據結構 (打開新窗口),或 DAG。具體來說,他們使用 Merkle DAG ,其中每個節點都有壹個唯壹標識符,該標識符是節點內容的哈希。

IPFS 使用針對表示目錄和文件進行了優化的 Merkle DAG,但您可以通過多種不同的方式構建 Merkle DAG。例如,Git 使用 Merkle DAG,其中包含許多版本的存儲庫。

為了構建內容的 Merkle DAG 表示,IPFS 通常首先將其拆分為 塊 。將其拆分為塊意味著文件的不同部分可以來自不同的來源並可以快速進行身份驗證。

分布式哈希表 (DHT)

要查找哪些對等方正在托管您所追求的內容( 發現 ),IPFS 使用分布式哈希表或 DHT。哈希表是值鍵的數據庫。 分布式 哈希表是壹種表在分布式網絡中的所有對等方之間拆分的表。要查找內容,您需要詢問這些同行。

libp2p項目 (打開新窗口)是 IPFS 生態系統的壹部分,它提供 DHT 並處理對等點之間的連接和交談。

壹旦妳知道妳的內容在哪裏(或者更準確地說,哪些對等點正在存儲構成妳所追求的內容的每個塊),妳就可以再次使用 DHT 來查找這些對等點的當前位置( 路由 )。因此,要獲取內容,請使用 libp2p 查詢 DHT 兩次。

然而,這確實意味著 IPFS 本身並沒有明確保護 有關 CID 和提供或檢索它們的節點的知識。這不是分布式網絡所獨有的。在 d-web 和 legacy web 上,流量和其他元數據都可以通過可以推斷出很多關於網絡及其用戶的方式進行監控。下面概述了這方面的壹些關鍵細節,但簡而言之:雖然 節點之間 的 IPFS 流量是加密的,但這些節點發布到 DHT 的元數據是公開的。節點宣布對 DHT 功能至關重要的各種信息——包括它們的唯壹節點標識符 (PeerID) 和它們提供的數據的 CID——因此,關於哪些節點正在檢索和/或重新提供哪些 CID 的信息是公開的可用的。

加密

網絡中有兩種類型的加密: 傳輸加密 和 內容加密 。

在兩方之間發送數據時使用傳輸加密。阿爾伯特加密文件並將其發送給萊卡,萊卡在收到文件後對其進行解密。這會阻止第三方在數據從壹個地方移動到另壹個地方時查看數據。

內容加密用於保護數據,直到有人需要訪問它。Albert 為他的每月預算創建了壹個電子表格,並用密碼保存它。當 Albert 需要再次訪問它時,他必須輸入密碼才能解密文件。沒有密碼,Laika 無法查看該文件。

IPFS 使用傳輸加密,但不使用內容加密。這意味著您的數據在從壹個 IPFS 節點發送到另壹個節點時是安全的。但是,如果擁有 CID,任何人都可以下載和查看該數據。缺乏內容加密是壹個有意的決定。您可以自由選擇最適合您的項目的方法,而不是強迫您使用特定的加密協議。

如果您精通命令行並且只想立即啟動並運行 IPFS,請遵循此快速入門指南。請註意,本指南假定您將安裝 go-ipfs,這是用 Go 編寫的參考實現。

ipfs將其所有設置和內部數據存儲在稱為 存儲庫的目錄中。 在第壹次使用 IPFS 之前,您需要使用以下ipfs init命令初始化存儲庫:

如果您在數據中心的服務器上運行,則應使用server配置文件初始化 IPFS。這樣做會阻止 IPFS 創建大量數據中心內部流量來嘗試發現本地節點:

您可能需要設置大量其他配置選項 — 查看完整參考 (打開新窗口)更多。

後面的散列peer identity:是您節點的 ID,與上面輸出中顯示的不同。網絡上的其他節點使用它來查找並連接到您。如果需要,您可以隨時運行ipfs id以再次獲取它。

現在,嘗試運行在ipfs init. 那個樣子ipfs cat /ipfs/ /readme。

您應該看到如下內容:

您可以 探索 存儲庫中的其他對象。特別是quick-start顯示示例命令嘗試的目錄:

準備好將節點加入公***網絡後,在另壹個終端中運行 ipfs 守護程序,並等待以下所有三行顯示您的節點已準備好:

記下您收到的 TCP 端口。如果它們不同,請在下面的命令中使用您的。

現在,切換回原來的終端。如果您已連接到網絡,您應該能夠在運行時看到對等方的 IPFS 地址:

這些是 /p2p/ .

現在,您應該能夠從網絡中獲取對象了。嘗試:

使用上述命令,IPFS 在網絡中搜索 CIDQmSgv...並將數據寫入spaceship-launch.jpg桌面上調用的文件中。

接下來,嘗試將對象發送到網絡,然後在您喜歡的瀏覽器中查看它。以下示例curl用作瀏覽器,但您也可以在其他瀏覽器中打開 IPFS URL:

您可以通過轉到 來查看本地節點上的 Web 控制臺localhost:5001/webui。這應該會彈出壹個這樣的控制臺:

Web 控制臺顯示可變文件系統 (MFS)中的文件。MFS 是內置於 Web 控制臺的工具,可幫助您以與基於名稱的文件系統相同的方式導航 IPFS 文件。

當您使用CLI 命令ipfs add ...添加文件時,這些文件不會自動在 MFS 中可用。要查看您使用 CLI 添加的 IPFS 桌面中的文件,您必須將文件復制到 MFS:

—END—

開源協議:MIT License

開源地址:/ipfs/kubo

  • 上一篇:如果妳要去國外工作,適合留學生做的工作是什麽?
  • 下一篇:閱讀和收聽網絡源代碼
  • copyright 2024編程學習大全網