# 2 years struggling with IPFS... And how I succeed using it with ScuttleButt!

**URL:** <https://discuss.ipfs.tech/t/2-years-struggling-with-ipfs-and-how-i-succeed-using-it-with-scuttlebutt/8592>\
**Category:** Help\
**Tags:** go-ipfs\
**Created:** [July 5, 2020, 5:02pm UTC](https://discuss.ipfs.tech/t/2-years-struggling-with-ipfs-and-how-i-succeed-using-it-with-scuttlebutt/8592 "2020-07-05T17:02:53Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![zicmama](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ipfs.tech/zicmama/32/3722_2.png) [@zicmama](https://discuss.ipfs.tech/u/zicmama)\
**Post date:** [July 5, 2020, 5:02pm UTC](https://discuss.ipfs.tech/t/2-years-struggling-with-ipfs-and-how-i-succeed-using-it-with-scuttlebutt/8592/1 "2020-07-05T17:02:54Z")

</div>

First time I tried IPFS on my computer was by using “[ipfs companion](https://addons.mozilla.org/en-US/firefox/addon/ipfs-companion/)”. As a beginner, I uploaded a few files in it, and they appear in my browsing list. Everything was going right…

On a second computer, in the same LAN, I installed “[go-ipfs](https://github.com/ipfs/go-ipfs)”.  
I used **ipfs get** [CLI commands](https://docs.ipfs.io/reference/cli/) to retrieve my previously published files. And it works!! I was thinking, great!

But I realize that it was missing indexes.

- On 1st computer, every data was using **MFS** (ipfs files ls)
- On 2nd computer this structure is not maintained anymore…

This was very confusing… But I didn’t care then.

To benefit from “decentralized storage” I was willing to “pin” my data on multiple nodes.  
So I made experiments.

First, I tried “[ipfs cluster](https://github.com/ipfs/ipfs-cluster)”. It works pretty well… But as my node storage wasn’t equal on each, the smallest was limiting the whole. This configuration is good if you have nodes in different regions of earth and maintain data consistency from everyplace. It was not my personal need. I didn’t want to buy as much as same size disks to replicate data on every nodes!!

Then I tried “[textile](https://docs.textile.io/)” as cafe was promising to make a more precise **pin** management applied. This time, data replication was better… But, protocol was hard to understand and a new problem occurs. If my swarm nodes didn’t share the same `~/.ipfs/swarm.key` I get performance troubles.

It was about DHT leaking… When my network reach a certain point, `ipfs swarm peers` gets inconsistent between nodes… Nodes I didn’t know about was entering my swarm. IPNS publish was slow. In fact, nothing really works. So sharing the same swarm.key was the only mean I found to control `bootstrap list` and `swarm peers`. I used this configuration for a while. But adding a new node, sending this key and maintaining security process was a pain!!

At the end, my IPFS swarm was working, but impossible to easily extend.

But last January, I discovered [ScuttleBot](https://scuttlebot.io/) and realize it was implementing network control I was missing in IPFS. Adding “User Accounts” (as textile), but with an easier to use protocol and far more library available!!

[ScuttleButt protocol](https://ssbc.github.io/scuttlebutt-protocol-guide/) is like a light ipfs, with more options, but “blob” storage limitation up to 8MB. **So I decided to mix them**.

With some [simple bash tasks](https://git.p2p.legal/axiom-team/astroport/src/master/cron_MINUTE.sh#L114), every node is getting its SSB “friends list” and apply it to `ipfs bootstrap` and `ipfs swarm peers`. It was excellent!! Now I could remove my swarm.key as no more DHT leaking was happening… **SO GREAT!**

As I was working with **[Libre Money](https://duniter.org/)** and didn’t want to wait for Filecoin… I start making some “nano chains” into ipfs (to memorize accountings) in a mutable filesystem I called [zenTAG](https://git.p2p.legal/axiom-team/astroport/src/master/zen/zen_MAKE.sh). So I was able to create an economy for my files 😉

I am now working on a [protocol fat stack](https://thecryptoconomy.com/2018/08/29/fat-protocols-arent-new-what-blockchain-can-learn-from-p2p-file-sharing/) over Debian to normalize it. I am welcoming anyone interested in joining my experiments.

---

<div class="post-metadata">

**Author:** ![zicmama](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ipfs.tech/zicmama/32/3722_2.png) [@zicmama](https://discuss.ipfs.tech/u/zicmama)\
**Post date:** [July 11, 2020, 2:49pm UTC](https://discuss.ipfs.tech/t/2-years-struggling-with-ipfs-and-how-i-succeed-using-it-with-scuttlebutt/8592/2 "2020-07-11T14:49:29Z")

</div>

Now adding a new Node in my IPFS swarm is as simple as becoming SSB friends 😉

1. Check if node is following Pub (or bootstrap)

```auto
sbot links --dest @PUBPublicKeyBase64encoded=.ed25519 --source @PublicKeyBase64EncodedOfMyNewNode=.ed25519 --rel contact --values

```

1. Follow Pub

```auto
sbot publish --type contact --contact @PUBPublicKeyBase64encoded=.ed25519 --following

```

And reverse from “Pub/Bootstrap” Node

Now IPFS swarm DHT is kept synchronized between all my nodes automatically 😉

* * *

But adding a file to IPFS needs to be related to an “index”.  
For example, in case of music, tThis could be a json based on “mp3tags” (artists, album, song name, …).  
But it could be nicer to have an “audio” index based on audio fingerprinting

> **[Audio fingerprinting and recognition in Python](https://pythonawesome.com/audio-fingerprinting-and-recognition-in-python/)**
>
> Audio fingerprinting and recognition in Python

> **[worldveil/dejavu](https://github.com/worldveil/dejavu)**
>
> Audio fingerprinting and recognition in Python. Contribute to worldveil/dejavu development by creating an account on GitHub.

**Dejavu would allow IPFS data to be linked and found like Shazam !!!**

Anyone would like to make it with me?

---

<div class="post-metadata">

**Author:** ![Akita](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ipfs.tech/akita/32/2650_2.png) [@Akita](https://discuss.ipfs.tech/u/Akita)\
**Post date:** [July 11, 2020, 5:14pm UTC](https://discuss.ipfs.tech/t/2-years-struggling-with-ipfs-and-how-i-succeed-using-it-with-scuttlebutt/8592/3 "2020-07-11T17:14:37Z")

</div>

Amazing!  
I’m sure the [www.Audius.co](http://www.Audius.co) team will be interested.

---

<div class="post-metadata">

**Author:** ![zicmama](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ipfs.tech/zicmama/32/3722_2.png) [@zicmama](https://discuss.ipfs.tech/u/zicmama)\
**Post date:** [July 13, 2020, 9:51pm UTC](https://discuss.ipfs.tech/t/2-years-struggling-with-ipfs-and-how-i-succeed-using-it-with-scuttlebutt/8592/4 "2020-07-13T21:51:21Z")

</div>

@Akita it would be a good idea to join effort. Do you have a contact?

---

<div class="post-metadata">

**Author:** ![Akita](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ipfs.tech/akita/32/2650_2.png) [@Akita](https://discuss.ipfs.tech/u/Akita)\
**Post date:** [July 15, 2020, 12:21pm UTC](https://discuss.ipfs.tech/t/2-years-struggling-with-ipfs-and-how-i-succeed-using-it-with-scuttlebutt/8592/5 "2020-07-15T12:21:36Z")

</div>

No I don’t. You will have to go through the contact list on their website, I guess?

Here is a blog post about them, too:

> **[Introducing the IPFS Case Study Series!](https://blog.ipfs.io/2020-07-09-case-study-audius/)**
>
> A peer-to-peer hypermedia protocol to make the web faster, safer, and more open.

---

<div class="post-metadata">

**Author:** ![zicmama](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ipfs.tech/zicmama/32/3722_2.png) [@zicmama](https://discuss.ipfs.tech/u/zicmama)\
**Post date:** [March 11, 2021, 8:18pm UTC](https://discuss.ipfs.tech/t/2-years-struggling-with-ipfs-and-how-i-succeed-using-it-with-scuttlebutt/8592/6 "2021-03-11T20:18:45Z")

</div>

> **[CAP theorem](https://en.m.wikipedia.org/wiki/CAP_theorem)**
>
> In theoretical computer science, the CAP theorem, also named Brewer's theorem after computer scientist Eric Brewer, states that it is impossible for a distributed data store to simultaneously provide more than two out of the following three guarantees:
> When a network partition failure happens should we decide to
> The CAP theorem implies that in the presence of a network partition, one has to choose between consistency and availability. Note that consistency as defined in the CAP theorem is quite...

This is why ipfs cannot be interplanetary and fast dynamic.  
Using scuttlebutt protocol for network partitioning provide the freedom to choose which of the properties are prefered 😉
