ipfs {ls||cat||get} <hash> 停止,而 gateway.ipfs 立即顯示文件
請注意,如果這個問題是基於
ipfs
我正在使用集成到乙太坊但以非常基本的方式進行的,我很抱歉。在以下範例中:客戶端將 ipfs 雜湊值儲存在乙太坊的合約中。伺服器將使用相同的合約訪問已儲存的 ipfs 雜湊值。在服務端獲取ipfs hash值後,服務端節點可以通過
ipfs {ls||cat||get} < hash_value >
. 但是當我使用ipfs {ls||cat||get} < hash_value >
時可能會出現停機。由於我在腳本中執行所有這些過程,因此暫停問題鎖定了我的腳本。相反,我可以使用(此過程強製網關記憶體內容,直到其垃圾收集器清除磁碟空間)從
ipfs.gateway
(使用公共網關)獲取文件。wget
$$ Q $$我應該嘗試使用它來檢索文件,
wget -r "https://ipfs.io/ipfs/< some_hash >"
因為它的連接似乎比使用更可靠ipfs {cat||ls||get} < my_hash >
嗎?我不是在質疑ipfs
,我只是想了解我造成這個問題的原因或我犯了錯誤並提出解決方案。到目前為止,使用wget
throughipfs.gateway
解決了我面臨的停機問題。 **請注意,**我的伺服器在防火牆後面執行(在大學域上,因此必須有防火牆)。就我而言,如果我的客戶端位於同一防火牆後面的同一 LAN 上,則我的客戶端和伺服器之間不會出現停機問題。但是如果客戶端在 LAN 之外,它會像我解釋的那樣停止。由於防火牆可能會出現問題,但公共網關仍然可以通過 ipfs 從我的伺服器檢索添加的數據?這個問題的解釋如下:
我有一個客戶端和伺服器節點。在兩台機器上,在後台我按照
ipfs
教程的指導執行以下命令:ipfs daemon &
在我的客戶端機器上,我已將一個文件添加到 ipfs:
[~]$ ipfs add hello.c added < my_hash > hello.c
在我的伺服器上之後,我嘗試檢索文件:
[~]$ ipfs {cat||ls||get} < my_hash > //HALTS.
以下錯誤消息多次出現。
14:18:59.986 ERROR dht: no addresses on peer being sent! [local:<peer.ID UjQJqD>] [sending:<peer.ID aYb9MJ>] [remote:<peer.ID Z86ow1>] handlers.go:75
ipfs {cat||get||ls} < my_hash >
停止,我確實等了很長時間,但什麼也沒發生,也許幾個小時後它就起作用了(系統對我的情況不可靠)。這種情況很奇怪,因為之前相同的過程沒有任何問題,但突然之間它可能會停止正常工作。另一方面,
ipfs add
完成後我可以立即在瀏覽器上看到該文件:url:https://gateway.ipfs.io/ipfs/< some_hash >
或者可以使用wget -r "https://ipfs.io/ipfs/< my_hash >"
“.請注意,如果添加到其中的文件夾
ipfs add -r folder_name
可以使用以下命令從文件夾的雜湊中檢索:wget -nH --cut-dirs=2 --no-parent -r -l 0 -nc "https://ipfs.io/ipfs/< folders_hash >"
感謝您寶貴的時間和幫助。
您可以執行
ipfs diag net
以查看是否有對等點連接。如果它說有對等點已連接但您仍然無法檢索數據,則可能是對等點資訊已過期並且節點由於防火牆而無法連接到其他對等點。