Update 23-Jul-2017 -- Since #4036 experimental features are documented in docs/experimental-features.md.
IPFS currently has a few different features that are in the 'experimental' phase. This might be because we arent fully confident in releasing the code as an official feature yet, or because we don't want to make a certain change to the network yet. Whatever the case, we should have a log of all of those features and their states.
Lets use this issue to track the state of these features, and maybe think about putting this info in a doc that we commit to version control.
ipfs pubsubexperimental, default-disabled.
0.4.5
run your daemon with the --enable-pubsub-experiment flag. Then use the ipfs pubsub commands.
Allows the dht to be run in a mode that doesnt serve requests to the network, saving bandwidth.
experimental.
0.4.5
run your daemon with the --routing=dhtclient flag.
Adds support for using the go-multiplex stream muxer alongside (or instead of) yamux and spdy. This multiplexer is far simpler, and uses less memory and bandwidth than the others, but is lacking on congestion control and backpressure logic. It is available to try out and experiment with.
Experimental
0.4.5
run your daemon with --enable-mplex-experiment
To make it the default stream muxer, set the environment variable LIBP2P_MUX_PREFS as follows:
export LIBP2P_MUX_PREFS="/mplex/6.7.0 /yamux/1.0.0 /spdy/3.1.0"
To check which stream muxer is being used between any two given peers, check the json output of the ipfs swarm peers command, you'll see something like this:
$ 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"
}
]
},
{
...
Allows files to be added with no formatting in the leaf nodes of the graph.
experimental.
master, (0.4.5).
Use --raw-leaves flag when calling ipfs add.
Allows files to be added without duplicating the space they take up on disk.
experimental.
master, (0.4.7).
Modify your ipfs config:
ipfs config --json Experimental.FilestoreEnabled true
And then pass the --nocopy flag when running ipfs add
Allows ipfs to only connect to other peers who have a shared secret key.
Experimental
master, 0.4.7
Generate a pre-shared-key using ipfs-swarm-key-gen):
go get github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen
ipfs-swarm-key-gen > ~/.ipfs/swarm.key
To join a given private network, get the key file from someone in the network and save it to ~/.ipfs/swarm.key (If you are using a custom $IPFS_PATH, put it in there instead).
When using this feature, you will not be able to connect to the default bootstrap nodes (Since we arent part of your private network) so you will need to set up your own bootstrap nodes.
To prevent your node from even trying to connect to the default bootstrap nodes, run:
ipfs bootstrap rm --all
To be extra cautious, You can also set the LIBP2P_FORCE_PNET environment variable to 1 to force the usage of private networks. If no private network is configured, the daemon will fail to start.
ipfs p2p Allows to tunnel TCP connections through Libp2p sterams
Experimental
master, 0.4.10
PTP command needs to be enabled in config
ipfs config --json Experimental.Libp2pStreamMounting true
Basic usage:
ipfs p2p listener open p2p-test /ip4/127.0.0.1/tcp/10101/ip4/127.0.0.1/tcp/10101 put address of application you want to pass p2p connections toipfs p2p stream dial $NODE_A_PEERID p2p-test /ip4/127.0.0.1/tcp/10102Since #4036 experimental features are documented in docs/experimental-featuers.md
@lgierth this should be added as a top comment (edit).
right, good call
I'm gonna go ahead and close this
I'm trying one of them without experiencing problems, so far. But when I want to provide feedback, no clear method is given.
Any feedback form? Any issue?
Also, a link to each feature's own issue would be helpful in reporting problems or giving feedback.
If you have any feedback other than 'it works', you should open a new issue. ('it works' is also a valid feedback for these features, there is just no good place for it)
@whyrusleeping
Is your comment updated? https://github.com/ipfs/go-ipfs/issues/3397#issuecomment-284337564
@DaniellMesquita no. The Filestore is still unstable.
Personally, I'm hesitant to stabilize it ever as deleting files from the filestore can remove blocks from independently pinned files.
Ways forward:
ipfs add or ipfs get.
Most helpful comment
Private Networks
Allows ipfs to only connect to other peers who have a shared secret key.
State
Experimental
In Version
master, 0.4.7
How to enable
Generate a pre-shared-key using ipfs-swarm-key-gen):
To join a given private network, get the key file from someone in the network and save it to
~/.ipfs/swarm.key(If you are using a custom$IPFS_PATH, put it in there instead).When using this feature, you will not be able to connect to the default bootstrap nodes (Since we arent part of your private network) so you will need to set up your own bootstrap nodes.
To prevent your node from even trying to connect to the default bootstrap nodes, run:
To be extra cautious, You can also set the
LIBP2P_FORCE_PNETenvironment variable to1to force the usage of private networks. If no private network is configured, the daemon will fail to start.Road to being a real feature