Powergate 和 IPFS 一直未能達成儲存協議
我在 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 的方式:
git clone https://github.com/textileio/powergate.git
cd powergate/docker/
nano docker-compose.yaml
- 在第 32 和 33 行之間,添加
command: ["lotus", "daemon", "--import-snapshot", "https://fil-chain-snapshots-fallback.s3.amazonaws.com/mainnet/minimal_finality_stateroots_latest.car"]
make up
- 等待區塊鏈完成下載。
docker logs mainnet_lotus_1
通過查找 1.54 GiB / 35.65 GiB、2.51 GiB / 35.65 GiB、3.36 GiB / 35.65 GiB 來檢查進度…- 區塊鏈下載完成後,使用 ^C 終止程序並執行
make down
nano docker-compose.yaml
- 刪除您添加的行。
make up
- 等待區塊鏈狀態同步完成。檢查進度
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”。