深入瞭解IPFS(3/6):什麼是IPNS?

買賣虛擬貨幣

在這一部分中,我們將深入探討IPFS的命名系統——星際命名系統(IPNS)。我們將探索:IPNS需要什麼?它如何與今天的DNS(域名系統)相比,有何不同?(本文由IPFS中國社羣編譯)

我們將探討IPFS中的路由如何工作以及IPNS如何工作?

最近,我們將探索IPNS。我們將使用IPFS堆疊主持和設定我的網站的路由。

希望你從這個系列中學到很多關於IPFS的知識。讓我們開始吧!

為何選擇IPNS?

為了理解我們為什麼需要IPNS,讓我們看看我們目前如何使用IPFS訪問我們的照片、影片和模因。

順便說一句,如果你想跟隨我,你可以下載我的網站:

wget --mirror --convert-links --adjust-extension --page-requisites --no-parent https://vaibhavsaini.com

當我將我的網站新增到IPFS時,我得到以下輸出:

將我的網站資料夾新增到IPFS

現在,我可以訪問我的網站了

https://gateway.pinata.cloud/ipfs/QmYVd8qstdXtTd1quwv4nJen6XprykxQRLo67Jy7WyiLMB/

但是這個連結有一些問題:

首先,它很難閱讀,更不用說記住了。

其次,這是一個不可改變的聯絡。我所說的不可變連結是指這個連結是永久性的(由於內容定址的性質)。如果我在我的網站中的任何地方新增一個逗號,根資料夾的CID將會更改,從而更改指向我的網站的連結。因此,每次我在網站上更改任何內容時,我都必須為每個想要訪問我最新網站的人提供新連結...不酷。

這是IPNS的用武之地。

透過使用IPNS,您可以生成可變連結,其中:

將是人類可讀的,易於記憶。

指向您網站的最新版本、個人資料照片、影片等。

IPNS中的名稱(/ipns/連結中的雜湊值)是公鑰的雜湊值。它與包含有關其連結的雜湊的資訊的記錄相關聯,該雜湊由相應的私鑰簽名。可以隨時簽署和釋出新記錄。

換句話說,IPNS是一個基於公鑰基礎結構(或PKI)的全域性命名系統,它允許我們構建信任鏈(因此您可以跟隨公共金鑰到其路由對等體),為我們提供加密和身份驗證,並且仍然是實際上與其他名稱服務相容。例如,我們甚至可以將DNS條目、onion或位地址等內容對映到IPNS地址。

IPNS不是在IPFS上建立可變地址的唯一方法。您還可以使用DNSLink(目前比IPNS快得多,並且使用更易讀的名稱。我們將在下面詳細瞭解它)。其他社羣成員正在探索使用區塊鏈儲存公共名稱記錄的方法。以下是對分散式Web命名系統的不同專案的一個很好的比較。

IPNS和DNS有一些相似之處。兩者都解決了各自系統中的類似問題,前者在內容定址系統中,後者在位置定址系統中。

在位置定址系統(今天的老式網際網路)中,我們使用IP:PORT組合來訪問我們的資料。因此,在位置定址系統中,我的網站地址將是:

http://18.205.129.69:80

這既不易讀也不易記。

但這總是指向此地址上託管的最新內容。

使用DNS,我們將此IP與域名相關聯,因此您可以訪問vaibhavsaini.com上的網站。

IPNS是如何工作的?

IPNS可以透過多種方式實現,但其當前實現使用分散式雜湊表(DHT)。因此,只有每個URI到其相應雜湊的最新對映可用於解析,忘記任何歷史對映。從歸檔的角度來看,這並不好,因為檔案的先前版本可能仍然存在於IPFS儲存中,但它們相應的URI對映會丟失。

讓我們使用ipns節點模組來了解IPNS記錄的釋出方式。

上面的程式碼被評論為足以自我描述......你也可以在這裡檢視完整的專案。

探索IPNS

讓我們透過IPNS釋出我們的網站。

ipfs名稱釋出QmYVd8qstdXtTd1quwv4nJen6XprykxQRLo67Jy7WyiLMB

這可能需要幾分鐘時間。你會得到這樣的輸出:

釋出到Qmb1VVr5xjpXHCTcVm3KF3i88GLFXSetjcxL7PQJRviXSy:/ ipfs / QmYVd8qstdXtTd1quwv4nJen6XprykxQRLo67Jy7WyiLMB

現在您可以在這裡獲得最新的網站:

https://gateway.pinata.cloud/ipns/Qmb1VVr5xjpXHCTcVm3KF3i88GLFXSetjcxL7PQJRviXSy

注意:IPNS在大約12小時後忘記(系統生存時間)已釋出的名稱。您可能需要執行cron作業以在12小時內重新發布。

如果我想新增更新的CID,我將使用相同的命令:

ipfs name publish

您還可以檢查連結到您的peerID的當前CID:

ipfs名稱解析Qmb1VVr5xjpXHCTcVm3KF3i88GLFXSetjcxL7PQJRviXSy

這將返回最新的CID。

為了增加靈活性,您還可以為不同的內容和/或上下文使用不同的鍵(如下面的鍵名稱vasa_blog)。例如,我可以使用一個金鑰釋出我的網站,使用另一個金鑰釋出我的部落格,使用另一個金鑰釋出我的談話影片。

ipfs key gen --type = rsa --size = 2048 vasa_blog ipfs name publish --key = vasa_blog

這解決了我們上面提到的問題之一(不可變連結的問題)。但連結仍然很難看。要建立連結,我們仍然需要使用DNS。還有其他系統更適合內容定址系統,如CCN / NDN,XIA。但這些都需要升級網際網路本身,如果沒有大量需求,這真的很難保證。即使需求量很大,IPv6還沒有完全部署:( - 如果沒有FIRST建立內容定址網路的使用,這並沒有讓我看到NDN / CCN大規模部署在核心中的希望。這意味著終端開發人員(web開發人員)必須能夠使用內容定址網路,在改善底層網路的實質性需求實現之前,非常有效地移動大量資料(影片等)。正如我們所看到的,透過使IPFS可用於終端開發人員,我們可以創造對這些架構的需求。

無論如何,現在,讓我們使用DNS來建立可讀連結。

DNSLink

DNSLink使用DNS TXT記錄將域名(如vaibhavsaini.com)對映到IPFS地址。因為您可以編輯DNS記錄,所以可以使用它們始終指向IPFS中物件的最新版本(請記住,如果修改物件,IPFS物件的地址會更改)。但我們不希望每次更新我們的網站時都更改TXT記錄。所以我們將新增ipns連結而不是ipfs連結。此外,由於DNSLink使用DNS記錄,因此它生成的名稱通常也很容易鍵入和讀取。

DNSLink地址看起來像IPNS地址,但它使用域名代替雜湊公鑰:

/ipns/vaibhavsaini.com

就像普通的IPFS地址一樣,它們可以包含指向其他檔案的連結:

/ipns/vaibhavsaini.com/assets/images

當IPFS客戶端或節點嘗試解析該地址時,它會查詢包含以下內容的TXT記錄vaibhavsaini.com:

dnslink=/ipfs/

OR

dnslink=/ipns/

例如,如果您查詢vaibhavsaini.comDNS記錄,您將看到其DNSLink條目:

dig +noall +answer TXT vaibhavsaini.comvaibhavsaini.com。1 IN TXT“dnslink=/ipns/ qmb1vvr5xjpxhctm3kf3i88glfxsetjcxl7pqjrvixsy”

基於此,這個地址:

/ipns/vaibhavsaini.com/assets/images

會得到你這個塊:

/ipns/Qmb1VVr5xjpXHCTcVm3KF3i88GLFXSetjcxL7PQJRviXSy/assets/images

超酷!

直到現在我們將地址從複雜雜湊減少為可讀名稱。

但是,我們可以做得更好。

這個(上面的連結)仍然非常混亂,坦率地說,如果我們希望今天的普通Web2使用者以最小的努力訪問我的分散Web3內容,如果不必要的話我們不希望他們必須處理閘道器和ipns / ipfs字首。分散的網路社羣的重要感受是,使用者體驗不應該發生太大的變化,轉換應該是透明的,這很容易,這就是分散的網路將如何獲勝的原因。理想情況下,我們希望得到這樣的結果:

https://profile.vaibhavsaini.com......

透過子域釋出

因此,為了使我們的地址更具可讀性,我們可以建立一條A記錄,將我們的子域指向IPFS對等點的IP地址,偵聽埠80以獲取HTTP請求(例如任何公共IPFS閘道器,或者您自己的IPFS閘道器)。

但是等等,我們可以比這更好!

因為我們不希望依賴IP地址是靜態的,所以我們可以使用CNAME記錄指向閘道器的DNS記錄。這樣,如果IP地址發生變化,我們仍然會指向正確的位置。遺憾的是,CNAME記錄不允許其他記錄(如TXT),但IPFS的優秀人員允許我們為IPFS建立DNS TXT記錄_dnslink.your.domain。

當您希望提高自動設定的安全性或將對DNSLink記錄的控制委派給第三方而不放棄對原始DNS區域的完全控制時,這也很有用。

我正在使用AWS Route53進行DNS設定,你可以使用任何提供商。

設定CNAME記錄

設定_dnslinkTXT記錄:

以下是它最終的樣子:

還有!我們使用IPFS堆疊託管和解析我們的內容,其地址可供任何Web2使用者輕鬆使用。

您可能會注意到位址列上的“不安全”警告,這是因為我沒有安裝萬用字元證書;)

您可能會注意到網站需要一些時間來解決。這是因為您網站的內容僅在一個節點上。如果您將網站固定在多個節點或其他節點上,嘗試訪問您的網站(這意味著您的內容很受歡迎),它將更快解決:

這部分就講到這裡。在下一部分中,我們將探索多格式。

作者:Vaibhav Saini

本文由IPFS中國社羣編譯,原文連結: https://hackernoon.com/understanding-ipfs-in-depth-3-6-what-is-interplanetary-naming-system-ipns-9aca71e4c13b?source=post_page

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;