什麼是IPNS
IPFS學習-IPNS
參考URL: https://www.cnblogs.com/cbkj-xd/p/12059887.html
IPNS全稱是Inter-Planetary Naming Service,星際命名系統。這個系統可以把我們現在訪問互聯網使用的URL地址映射成IPFS系統中的一串哈希值。
星際名稱系統(IPNS)是一個創建個更新可變的鏈接到IPFS內容的系統,由於對象在IPFS中是內容尋址的,他們的內容變化將導致地址隨之變化。對於多變的事物是有用的。但是很難獲取某些內容的最新版本。
**在IPNS中名字是被哈希的公鑰。**它與一條記錄相關聯,該記錄包含有關其鏈接的哈希的信息,該信息由相應的私鑰簽名。新的記錄可以在任何時候被簽名與發佈。
查看IPNS地址,使用了/ipns/前綴:
/ipns/QmSrPmbaUKA3ZodhzPWZnpFgcPMFWF4QsxXbkWfEptTBJd
什麼是DNSLink
官網 https://github.com/ipfs/go-dnslink
DNSlink
https://www.cnblogs.com/cbkj-xd/p/12059685.html
DNS鏈接使用DNS TXT記錄映射域名(如ipfs.io)到一個IPFS地址。因爲你可以編輯自己的DNS記錄,可以使他們總是指向最新版本的IPFS中的對象(如果修改了IPFS中的對象則IPFS中的對象地址也會改變)。由於DNS鏈接使用DNS記錄,所以可以設計名字/路徑/(子)域/任何容易分類,閱讀和記的名字。
一個DNS鏈接地址看起來像一個IPNS地址,但是DNS鏈接使用域名代替了被哈希的公鑰:
/ipns/proofs.filecoin.io
如何使用DNSLink
參考官網 https://github.com/ipfs/go-dnslink
當一個IPFS客戶端或者節點嘗試解析一個地址,將會尋找前綴爲dnslink=的TXT記錄。剩下的可以是/ipfs/鏈接或者是/ipns/,或者是鏈接到其他的DNSLink。
dnslink=/ipfs/<具體內容的CID>
例如,_dnslink.docs.ipfs.io的DNS記錄繼續瞭解DNS鏈接實體:
$ dig +noall +answer TXT _dnslink.docs.ipfs.io
_dnslink.docs.ipfs.io. 34 IN TXT "dnslink=/ipfs/QmVMxjouRQCA2QykL5Rc77DvjfaX6m8NL6RyHXRTaZ9iya"
基於這個地址:
/ipns/docs.ipfs.io/introduction/
可以獲取這個區塊:
/ipfs/QmVMxjouRQCA2QykL5Rc77DvjfaX6m8NL6RyHXRTaZ9iya/introduction/
go-dnslink項目
官網 https://github.com/ipfs/go-dnslink
go包dnslink 實現DNS鏈接解析器。DNSLink是在DNS自身中設置可遍歷鏈路的基本標準。
dnslink是一個路徑鏈接在DNS txt 記錄中,如下所示:
DNSLink=/IPFS/QMR7TiYSN6VFHCEJBEnZYTAFAFH735PJHFEMDVYCJ9JAPY
> dig TXT ipfs.io
ipfs.io. 120 IN TXT dnslink=/ipfs/QmR7tiySn6vFHcEjBeZNtYGAFh735PJHfEMdVEycj9jAPy
這個項目可以用作庫,也可以作爲命令行工具。
安裝
go get github.com/ipfs/go-dnslink
- 作爲庫使用
import (
log
fmt
dnslink "github.com/ipfs/go-dnslink"
)
func main() {
link, err := dnslink.Resolve("ipfs.io")
if err != nil {
log.Fatal(err)
}
fmt.Println(link) // string path
}
- 作爲命令行使用
> dnslink ipfs.io
/ipfs/QmR7tiySn6vFHcEjBeZNtYGAFh735PJHfEMdVEycj9jAPy
總結: 可以使用 dnslink 解析dns txt記錄。
參考
深入瞭解IPFS(3/6):什麼是IPNS?
參考URL: https://www.jinse.com/blockchain/449574.html