ipfs

draft: false date: 2018-03-25 17:44:09 cover: /images/avatar.jpeg tags: - bigzhu preview:


安装很简单, 下一个 go-ipfs 编译好得运行就可以了

ipfs init

会先生成你的节点 id 和 .go-ipfs 目录, 区块信息也是存储在这个目录里

ipfs daemon

启动进程

http://localhost:5001/webui 是控制台, 可以进去看一些配置和链接数

http://localhost:8080/ipfs/hash

把 hash 替换成真实的 hash 可以访问那些资源

https://ipfs.io/ipfs 算是官方的节点

ipfs put file.jpg

可以得到这个文件的 hash

有人用 nodejs 写了一个小工具: ipfs-add-from-url 可以输入 url 来直接得到文件的 hash

还是需要本地启着 peer, 只是把繁琐的下载+上传步骤简化了一下而已.

ipfs pin ls

可以看到本地有哪些 hash, 以及 pin 的状态

这货其实和 bt 的原理是一样的, 我传了一个文件, 生成了一个 hash. 如果这个文件从未在互联网上出现过, 那么相当于此时只有我一个人在做种子上传文件.

一旦我关闭了, 这个文件就从互联网上消失了.

但是如果有人 pin 了你的这个 hash, 那么他的节点会尝试从网络上寻找这个件, 并下载到他的节点上.

如果某个server开放了http, 从网络上访问这个 hash, 应该也是会去 pin 这个文件, 取下来再返回, 能达到一样的效果.

但是有个问题

类似这样的 http 服务, 接受到请求的时候, 才去 pin 去茫茫的 peer 里寻找这个 hash 的文件, 为时已晚啊. pin 的动作是非常慢的, 根本没法及时的同步文件.

http server 只有超时无返回一个结果.

我是不太明白, 如何强迫一个远端的节点立马同步我的某个资源. 只能碰运气么? 正好我的资源那边也有, 就用共同的 hash 来访问?

这样根本无法实现无限图床的功能嘛. 某个很小的文件, 感觉倒是迅速同步过去了. 稍微大点的没戏?

找到了这篇, 说的很清楚. 要持续有个节点 pin 住你的资源, 否则 24 小时就会被垃圾回收, 消失在网络上.

自己要发布的资源用 ipfs pin add 钉住, 避免被垃圾回收.