go-ipfs 的实验特性
本文档包含 go-ipfs 中的实验性功能列表. 这些功能,命令和 API 并不成熟,您不应该依赖它们. 一旦它们成熟,就会在 Changelog 和 release 帖子 中提及. 如果它们无法达到成熟,则同样的,会被删除其代码.
订阅https://github.com/ipfs/go-ipfs/issues/3397获得更新.
当您为 go-ipfs 添加 新的实验性功能或 更改实验性功能时,您必须更新此文档,并在上述问题中链接 PR.
目录
- ipfs pubsub - 客户端模式 DHT 路由 - go-multiplex stream muxer - 原始 unix fs 文件 - ipfs 文件存储 - ipfs urlstore - 专用网络-Private - ipfs p2p - 线路继电 - 插件 - Badger 数据存储区 - 目录分片/ HAMT - IPNS pubsub - QUICipfs pubsub
状态
实验,默认禁用.
在版本
0.4.5
如何启用
运行你的守护进程带有--enable-pubsub-experiment
选项. 然后使用ipfs pubsub
命令.
成为真正特性的道路
- 需要更多人使用并报告其工作情况
- 需要实现的身份验证模式
- 需要进行性能分析
客户端模式 DHT 路由
允许 dht 以不向网络提供请求的模式运行,从而节省带宽.
状态
实验.
在版本
0.4.5
如何启用
运行你的守护进程带--routing=dhtclient
选项.
成为真正特性的道路
- 需要更多人使用并报告其工作情况.
- 需要分析它对整个网络的影响.
go-multiplex stream muxer
添加使用 go-multiplex 流复用器 (或代替)yamux 和 spdy 的支持. 这种多路复用器更简单,并且使用的 内存和带宽 比其他多路复用器少,但缺乏 拥塞控制和抗压逻辑. 它可以试用和试验.
状态
试验
在版本
0.4.5
如何启用
运行带--enable-mplex-experiment
要使其成为默认流复用器,请设置环境变量LIBP2P_MUX_PREFS
如下:
export LIBP2P_MUX_PREFS="/mplex/6.7.0 /yamux/1.0.0 /spdy/3.1.0"
要检查在 任何两个给定对等体之间 使用哪个流复用器,请检查该对应的 json 输出ipfs swarm peers
命令,你会看到这样的事情:
$ ipfs swarm peers -v --enc=json | jq .
{
"Peers": [
{
"Addr": "/ip4/104.131.131.82/tcp/4001",
"Peer": "QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ",
"Latency": "46.032624ms",
"Muxer": "*peerstream_multiplex.conn",
"Streams": [
{
"Protocol": "/ipfs/bitswap/1.1.0"
},
{
"Protocol": "/ipfs/kad/1.0.0"
},
{
"Protocol": "/ipfs/kad/1.0.0"
}
]
},
{
...
成为真正特性的道路
- 各种 重要实际测试和性能指标的工作负载下, 表明它运行良好.
原始 unix fs 文件
允许在 图形的叶节点 中添加 没有格式化的文件.
状态
实验.
在版本
master,0.4.5
如何启用
使用ipfs add
带--raw-leaves
.
成为真正特性的道路
- 需要更多人使用并报告其工作情况.
ipfs 文件存储
允许添加文件 而不重复它们在磁盘上占用的空间.
状态
实验.
在版本
master,0.4.7
如何启用
修改你的 ipfs 配置:
ipfs config --json Experimental.FilestoreEnabled true
然后运行ipfs add
带--nocopy
成为真正特性的道路
- 需要更多人使用并报告其工作情况.
- 需要解决错误状态和故障情况
- 需要撰写有关使用,优点和缺点的文档
- 需要合并实用程序命令以帮助维护和修复文件存储
ipfs urlstore
允许 ipfs 通过 一个 url 取回区块内容 , 而不是存储在数据存储区中
状态
experimental.
版本号
master, v0.4.17
如何启动
修改你的 ipfs config
ipfs config --json Experimental.UrlstoreEnabled true
然后使用ipfs urlstore add <url>
,添加一个指定的的 URL 文件。
成为真正特性的路线图
- 需要更多人使用并报告其工作情况。
- 需要解决错误状态和故障情况。
- 需要撰写有关使用,优点和缺点的文档。
- 需要实现缓存。
- 需要添加指标以监控性能。
专用网络-Private
允许 ipfs 仅 连接到具有共享密钥的其他对等方.
状态
试验
在版本
master,0.4.7
如何启用
使用生成 预共享密钥ipfs 群 密钥 生成 ) :
go get github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen
ipfs-swarm-key-gen > ~/.ipfs/swarm.key
要加入给定的专用网络,请从网络中的某个人处 获取密钥文件 并 将其保存到~/.ipfs/swarm.key
(如果您使用的是自定义$IPFS_PATH
,把它放在那里) .
使用此功能时,您将无法连接到 默认 引导程序节点 (因为我们不属于您的专用网络) ,因此您需要设置自己的引导程序节点.
首先,要防止您的节点甚至尝试连接到默认的引导程序节点,请运行:
ipfs bootstrap rm --all
然后添加自己的 bootstrap 对等体:
ipfs bootstrap add <multiaddr>
例如:
ipfs bootstrap add /ip4/104.236.76.40/tcp/4001/ipfs/QmSoLV4Bbm51jM9C4gDYZQ9Cy3U6aXMJDAbzgu2fzaDs64
除了它们所服务的功能之外,引导节点 与 网络中的所有其他节点没有区别.
要格外小心,你也可以设置LIBP2P_FORCE_PNET
环境变量1
强制使用私人网络. 如果未配置专用网络,则守护程序将无法启动.
成为真正特性的道路
- 需要更多人使用并报告其工作情况
- 更多文档
ipfs p2p
允许通过 Libp2p 流 流动 TCP
状态
试验
在版本
master,0.4.10
如何启用
需要在 config 中启用 P2P 命令
ipfs config --json Experimental.Libp2pStreamMounting true
如何使用
基本用法:
- 在一个节点上打开一个侦听器 (节点 A)
ipfs p2p listener open p2p-test /ip4/127.0.0.1/tcp/10101
- 把你希望传递 p2p 连接的应用程序的地址放到
/ip4/127.0.0.1/tcp/10101
- 在另一个节点上,连接到 节点 A 上的侦听器
ipfs p2p stream dial $NODE_A_PEERID p2p-test /ip4/127.0.0.1/tcp/10102
- 节点 B 现在正在 127.0.0.1:10102 上 侦听 TCP 上的连接,将您的应用程序连接到那里以完成连接
成为真正特性的道路
- 需要更多人使用并报告其工作/适合用例的情况
- 更多文档
- 支持其他协议
线路继电
当没有直接连接时,允许对等体通过 中间中继节点 连接.
对等体 == 点 == peer
状态
试验
在版本
master,0.4.11
如何启用
默认情况下启用中继传输,允许对等体通过 中继拨号,并侦听传入的中继连接. 可以通过设置Swarm.DisableRelay = true
禁用传输.
默认情况下,对等体不充当中间节点 (中继) . 这可以通过设置Swarm.EnableRelayHop = true
启动. 请注意,需要在 启动在线服务 之前设置该选项才能生效;必须重新启动已在线的节点.
基本用法:
为了通过 中继节点-QmRelay 连接 点
- 两个点 都应该连接到中继:
ipfs swarm connect /transport/address/ipfs/QmRelay
- 然后,QmA 可以使用 中继 连接到 QmB:
ipfs swarm connect /ipfs/QmRelay/p2p-circuit/ipfs/QmB
对等方还可以连接 非特定的中继地址,该地址将尝试拨打已知的中继: ipfs swarm connect /p2p-circuit/ipfs/QmB
对等体可以在输出中看到 (非特定的) 中继地址ipfs swarm addrs listen
成为真正特性的道路
- 需要更多人使用它并报告它的工作情况.
- 将中继地址 通告给 DHT,用于 NATed 或其他不可达 的对等体.
- 活跃的中继 发现特定中继地址的广播资料. 我们希望 广播了的中继地址 是用于高效响应的特定中继.
- 响应中继地址的优先级;可以说,中继地址的优先级应该 低于 直接拨号.
插件
在版本
0.4.11
状态
试验
插件允许添加功能,而无需重新编译守护程序.
基本用法:
看到插件文档
成为真正特性的道路
- 更好地支持 Linux 以外的平台
- 更多插件和插件类型
- 对稳定性的反馈
Badger 数据存储区
在版本
0.4.11
Badger-ds 是基于的新数据存储实现https://github.com/dgraph-io/badger
基本用法
$ ipfs init --profile=badgerds
要么
[BACKUP ~/.ipfs]
$ ipfs config profile apply badgerds
$ ipfs-ds-convert convert
#
成为真正特性的道路
- 需要更多测试
- 确保没有未知的主要问题
目录分片/ HAMT
在版本
0.4.8
状态
试验
允许创建具有无限数量条目的目录 - 当前 unixfs 目录的大小受 最大块大小 的限制
基本用法:
ipfs config --json Experimental.ShardingEnabled true
成为真正特性的道路
- 确保是不需要分片的对象
- 通用分片,并在 IPLD 和 IPFS 之间定义新层
IPNS pubsub
在版本
0.4.14
状态
实验,默认禁用.
利用 pubsub 实时发布 ipns 记录.
启用时:
- 除了发布到 DHT 之外,IPNS 发布者还将 记录 推送到 特定名称的 pubsub 主题.
- IPNS 解析器,在第一次解析时 订阅 特定名称的主题,并通过 pubsub 实时接收随后发布的记录. 这使得后续解决方案是即使的,因为它们通过本地缓存解析. 请注意,初始解析仍然通过 DHT,因为 pubsub 中没有消息历史记录.
发布者 和 解析器节点,都需要启用该功能才能使其有效工作.
如何启用
运行你的守护进程带--enable-namesys-pubsub
选项;启用 pubsub.
成为真正特性的道路
- 需要更多人使用并报告其工作情况
- 为订阅,添加 最后一次记录分发的机制,这样我们就不必为了初始解析而点击 DHT. 或者,我们可以定期重新发布最后一条记录.
QUIC
版本号
0.4.18
状态
Experiment, 默认禁用
如何启动
修改你的 ipfs config:
ipfs config --json Experimental.QUIC true
为了 监听 一个 QUIC 地址, 要添加像/ip4/0.0.0.0/udp/4001/quic
这样的 swarm 地址。
成为真正特性的路线图
- IETF QUIC 规范需要最终确定。
- 确保 QUIC 连接可靠地工作。
- 确保 QUIC 连接提供与现实网络上的 TCP 连接相同或更好的性能。
- 完成 libp2p-TLS 握手规范。