一个在浏览器里运行 IPFS 节点的 Demo

2021-01-30 18:25:29 +08:00
 xarthur

测试链接

因为 Bootstrap 节点可能被墙了,建议代理打开。

算是一个技术验证类型的东西,这里的过程是在你打开这个网页的时候在浏览器里启动一个 IPFS 节点。然后通过这个 IPFS 节点获取 IPLD 数据结构的对象,然后把这个对象渲染出来。

不过经过测试在浏览器里跑 JS-IPFS 的限制还是很多,比如 DHT 网络就不能用,目前看来只能和开了 Websocket 链接的服务器通讯,之后可能会好点(比如利用 WebRTC 技术来实现 DHT 网络?)。

代码在这里,非常简单,用了 React 框架

2399 次点击
所在节点    IPFS
7 条回复
mushokumunou
2021-04-02 16:54:35 +08:00
什么应用场景?没看懂。
是不是客户端只要一直打开这个网页,就能作为 ipfs 节点,中继这个网站发出的 pin 请求?
xarthur
2021-04-02 17:56:33 +08:00
@mushokumunou 你打开这个页面的时候就启动了一个本地的 IPFS 节点。
然后你就可以通过这个节点获取数据,在这里就是一个 IPLD 结果的数据(你可以理解成 JSON )。
mushokumunou
2021-04-02 23:21:50 +08:00
@xarthur 看了你的博客,介绍主要 ipfs,我正好有个问题想问问。
ipfs 文件具有唯一性,发生变更后,就会产生新的 cid,这影响我之前的 cid 分享,怎么让我的 cid 能固定呢?
用到 ipns,但 ipns 的查询相当慢,几乎不可用。官方也不建议 ipns 。
那有什么其他方案可以做这类更新内容固定 id 的活呢?
最近项目组里在弄 ipfs 玩,发现文件夹里增删改文件后,cid 也变了,之前分享的 cid 还是老版本的。
xarthur
2021-04-02 23:31:30 +08:00
@mushokumunou CID 固定不了,你可以把 CID 当作一个 hash 值。
要固定一般的解决方法是 IPNS 和用 DNSLink

IPNS 确实很慢,按照官方的说法是 IPNS-over-pubsub 会快很多,但是 pubsub 现在还不是默认开启的选项。而且具体能快多少存疑。不过 IPFS 官方最近好像正在努力让 pubsub 能默认启用。
关于这个主题有三个相关的 pr,你可以看看。

https://github.com/protocol/web3-dev-team/pull/53

https://github.com/protocol/web3-dev-team/pull/19

https://github.com/protocol/web3-dev-team/pull/66

目前比较好的解决方法就是用 DNSLink 来固定 CID 了。我的 Blog 就启用了 DNSlink,如果你装了 IPFS-companion 应该会自动跳转的。
xarthur
2021-04-02 23:37:00 +08:00
@mushokumunou 说实话,如果你需要那种高动态的系统。现在这种去中心化的网络其实都很难做到。
你可以使用一下零网,零网是目前动态性最好的了。
xarthur
2021-04-02 23:41:38 +08:00
@mushokumunou 如果你要纯粹的分布式更新,其实也可以用去中心化区块链上的 DNS,比如 ENS 之类的。但是上链成本很高(
mushokumunou
2021-04-03 01:00:45 +08:00
感谢提供思路,回头组里研究一下。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/749881

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX