IPFS Home - killelder/cryptocurrency GitHub Wiki
原理
這篇底下會講解IPFS的相關操作
想知道原理的參考下面這個連結
IPFS原理
IPFS 優缺點
slow download 這篇提到ipfs的速度
下載安裝
IPFS下載設定都相當簡單, IPFS官網
就是那種點點下一步就可以完成的那種
我決定使用linux(所以windows的就不用問我嘍)
Initialize
初始化也相當簡單, (看來IPFS真的野心勃勃想讓他大眾化)
先自己開設一個目錄, 在目錄底下打上
ipfs init
用下面的cmd來確認是不是成功了
ipfs id
如果成功的話應該會看到自己的ID, PublicKey, Addresses, AgentVersion, ProtocolVersion
然後預設一下ipfs的編輯器, 這裡以vim為例
export EDITOR=/usr/bin/vim
ipfs config
這邊有著自己ipfs的設定, 適用JSON格式寫的
有剛剛的ID, publicKey
比較有可能會更動的是Datastore
但整個ipfs config決定拉到另外一篇去講 ipfs config
開始使用ipfs
連上ipfs網路
ipfs daemon &
Initializing daemon... API server listening on /ip4/127.0.0.1/tcp/5001
Gateway server listening on /ip4/127.0.0.1/tcp/8080
此時打開http://localhost:5001/webui 會看到UI介面。
(加上&是為了可以在background執行)
應該會顯示API, Gateway server, 此時ipfs應該已經連上線
可以使用來確認
ipfs swarm peers
來確認連上線的節點
節點會呈現 /ipfs/ 的形式
這時候照理來說我們就能存取該節點上面的資料了
新增檔案
先隨便創造一個檔案
echo "first file in ipfs" > test
然後加入ipfs裡面
ipfs add test
added QmZsvMqfF5Wg8STfyTKgjdNEHR5tdJg9HRzyg4QZ5bJtRe test
21 B / 21 B [=========================================================] 100.00%
嘗試cat看看
ipfs cat QmZsvMqfF5Wg8STfyTKgjdNEHR5tdJg9HRzyg4QZ5bJtRe
first file in ipfs
避免被垃圾回收
ipfs會自動做垃圾回收, 為了避免我們剛剛上傳的檔案被回收, 可以把它pin起來
ipfs pin add xxxxxxx
幾個常用指令
ipfs get 路徑 下載路徑的檔案
DHT CMD
告訴DHT我們有甚麼
ipfs dht provide Qmxxxxxx
這點我還搞不太懂的是他不會自己幫我們上傳DHT嗎??每次都還要自己push的樣子
push完以後, 我們可以查查看哪些peers有這個檔案的內容
ipfs dht findprovs Qmxxxxxx
查這個節點的ip
ipfs dht findpeer Qmxxxxxx
發佈到IPNS
因為只要改檔案, hash就會發生變化, 我們可以將網頁發佈到IPNS
在IPNS中, 允許我們的節點的域名空間引用一個IPFS hash
也就是我們可以通過節點ID對項目根目錄的IPFS hash進行綁定
當更新以後, 只要重新發布到IPNS即可
ipfs name publish obj_hash
這會花上大約30s的時間, 因為必須要把這個資訊發送給各個DHT
結束會顯示
Published to Qmxxxxxx: /ipfs/QmdRKBFyhEg99i1SAMqiHaKKYt7ybudqwmFPL2kqXsHaLM
其中第一個hash就是你的id, 表示ipfs上的檔案將以你的id作為入口
要關掉ipfs連線
ipfs shutdown
就可以了
實際測試了以後, 覺得有點空虛
而且ipfs速度很慢, 目前覺得他們把餅畫得太大
但實際上做起來沒有那麼簡單
還有一些東西想了解pubsub(訂閱者模式, 只會把東西publish給訂閱者)
pubsub教學
IPFS 源代碼下載
go-ipfs
看起來IPFS應該跟大部分區塊鏈一樣, 要使用go語言來實現
所以這邊可能要花點工夫在go語言上面
根據這篇作者的 IPFS
IPFS命令解說
IPFS 教學
IPFS 教學2
根據自己邊學邊做來做延伸