Ipfs

Powergate 和 IPFS 一直未能達成儲存協議

  • July 30, 2021

我在 Windows 10 上使用 WSL Ubuntu 20.04。我安裝了 lotus、ipfs-go、pow 和 powd。我等待 Lotus 守護程序完成同步,然後啟動 ipfs ipfs daemon,然後在螢幕會話中啟動 pow 守護程序powd --lotustoken <mylotustokenhere>

因此,lotus 守護程序同步並執行,ipfs 守護程序正在執行,powergate 守護程序也在執行,通過 admin auth 令牌連接到 lotus 守護程序。我已經暫存了一個目錄並使用該命令獲得了一個 cid(通過 powergate),pow data stage path/to/dir並獲得了一個“bafy”的起始 IPFS 雜湊。該目錄大小約為 5GB。我通過 dd 命令創建了一個隨機數據 bin 文件。我選擇將其設置為 5GB 是因為我注意到很多礦工希望你完成 4GB 以上的工作。我執行了命令pow config apply --watch <CID> -o -c custom-072321-config.json。這是我的 custom-072321-config.json 文件。

{
 "hot":  {
   "enabled":  false,
   "allowUnfreeze":  false,
   "unfreezeMaxPrice":  "0",
   "ipfs":  {
     "addTimeout":  "900"
   }
 },
 "cold":  {
   "enabled":  true,
   "filecoin":  {
     "replicationFactor":  "1",
     "dealMinDuration":  "518400",
     "excludedMiners":  [],
     "trustedMiners":  [],
     "countryCodes":  [],
     "renew":  {
       "enabled":  false,
       "threshold":  "0"
     },
     "address":  "<my filecoin address with 400000000 attoFIL>",
     "maxPrice":  "100000000000",
     "fastRetrieval":  true,
     "dealStartOffset":  "8640",
     "verifiedDeal":  false
   }
 },
 "repairable":  false
}

但工作失敗了…… IDK 為什麼?

這是我得到的錯誤:

                JOB ID                |             STATUS             | MINER | PRICE | DEAL STATUS
---------------------------------------+--------------------------------+-------+-------+--------------
           <my job id here>           | JOB_STATUS_FAILED executing    |       |       |
                                      | cold-storage config: getting   |       |       |
                                      | cid cummulative size:          |       |       |
                                      | getting cid cummulative        |       |       |
                                      | size: calculating data size:   |       |       |
                                      | merkledag: not found           |       |       |
<myusername>@<mycompname>:~$

所以我從 IPFS 守護程序固定係統中刪除了所有文件,ipfs pin ls --type recursive | cut -d' ' -f1 | xargs -n1 ipfs pin rm然後執行ipfs repo gc以確保它們被垃圾收集。我執行ipfs add -r --pin=false path/to/dir並獲得了一個 Q 起始 CID 並使用以 Q 開頭的新 CID 再次執行該命令pow config apply --watch <CID> -o -c custom-072321-config.json,我得到了與上述相同的錯誤。所以我認為原始的 bafy 起始 CID 和 Q 起始 CID 仍在描述同一個目錄。所以我pow config apply --watch <CID> -o -c custom-072321-config.json用原來的起始 CID 執行了原來的命令,bafy在 JOB_STATUS_EXECUTING 上堅持了很長時間後,我得到了這個錯誤:

                JOB ID                |                                                              STATUS                                                              | MINER | PRICE | DEAL STATUS
---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------+-------+-------+--------------
           <my job id here>           | JOB_STATUS_FAILED automatically staging cid: adding data to ipfs: Post                                                           |       |       |    
                                      | "http://127.0.0.1:5001/api/v0/pin/add?arg=%2Fipfs%2F<bafystaringCID>&recursive=true":                                            |       |       |    
                                      | context deadline exceeded                                                                                                        |       |       |    

我究竟做錯了什麼?如何將我的文件儲存在 Filecoin 上?

就個人而言,我無法在不更改安裝的情況下糾正此錯誤。我最終做的是重新安裝powergate,但這次是通過docker而不是分別安裝lotus、ipfs和powergate並嘗試將它們連結在一起。

順便說一句,我建議screen -S newScreen在螢幕外殼中執行並執行安裝命令。這樣,當您想通過下面提到的命令檢查日誌時,docker logs mainnet_*您可以Ctrl+a, d斷開與螢幕會話的連接並在原始終端環境中執行日誌檢查命令。當需要返回安裝命令時,shell 只需執行screen -ls以查找會話名稱,然後執行screen -r <session name here>.

這就是我安裝 powergate 的方式:

  1. git clone https://github.com/textileio/powergate.git
  2. cd powergate/docker/
  3. nano docker-compose.yaml
  4. 在第 32 和 33 行之間,添加command: ["lotus", "daemon", "--import-snapshot", "https://fil-chain-snapshots-fallback.s3.amazonaws.com/mainnet/minimal_finality_stateroots_latest.car"]
  5. make up
  6. 等待區塊鏈完成下載。docker logs mainnet_lotus_1通過查找 1.54 GiB / 35.65 GiB、2.51 GiB / 35.65 GiB、3.36 GiB / 35.65 GiB 來檢查進度…
  7. 區塊鏈下載完成後,使用 ^C 終止程序並執行make down
  8. nano docker-compose.yaml
  9. 刪除您添加的行。
  10. make up
  11. 等待區塊鏈狀態同步完成。檢查進度docker logs mainnet_powergate_1並尋找
<Time And Date>        WARN    lotus-client    lotus/metrics.go:90     Louts behind in syncing with height diff 370, todo: 191
<Time And Date>        WARN    lotus-client    lotus/metrics.go:90     Louts behind in syncing with height diff 370, todo: 142
<Time And Date>        WARN    lotus-client    lotus/metrics.go:90     Louts behind in syncing with height diff 370, todo: 103
<Time And Date>        WARN    lotus-client    lotus/metrics.go:90     Louts behind in syncing with height diff 370, todo: 54
<Time And Date>        WARN    lotus-client    lotus/metrics.go:90     Louts behind in syncing with height diff 370, todo: 8
<Time And Date>        WARN    lotus-client    lotus/metrics.go:90     Louts behind in syncing with height diff 39, todo: 7
<Time And Date>        INFO    ffs-scheduler   scheduler/scheduler.go:<Number>      running scheduler gc...
<Time And Date>        INFO    ffs-scheduler   scheduler/scheduler.go:<Number>      scheduler gc ran with 0 excluded cids, unpinning 0 staged cids

同步完成後,您可以成功進行 Filecoin 交易而不會發生merkledag: not found錯誤。

Github 上的@jsign 表示無需重新安裝 docker 即可修復錯誤,只需參考“https://docs.textile.io/powergate/faq/#i-see-a-log-error-computing- commp-failed-generating-commp-blockstore-block-not-found-what-does-this-mean." 這在此處引用“https://github.com/textileio/powergate/issues/849”。

引用自:https://ethereum.stackexchange.com/questions/104010