Filecoin-like feature where users get credits when they share their storage space

Hello!

We are new to IPFS and we are building an app that has a feature where users can get credits when they allocate a portion of their hard drive space to us. This feature is like Filecoin’s, but it’s not the main idea of the app; the main idea is that we get to accept fairly large files and we need to store them within our own private network of users.

Creating a private network is already possible, but would you know of an open-source app like this one that we can fork, or if there is none, what pointers or steps would you recommend of how we go about building it?

We also have some questions:

  1. Can the SDK be used to install IPFS on a client computer and let it join our private network?
  2. Can users select which files to store, or will IPFS just fill it up as much as storage is available?
  3. Security: what if a user just signs up with the sole intent of hacking our private network? What security measures do you suggest in this setup?
  4. Is this setup possible cross-platform (Windows, Linux, Mac)?

Thank you in advance!

Hi,

  1. Can the SDK be used to install IPFS on a client computer and let it join our private network?

see that : https://github.com/ipfs/ipfs#project-links

  1. Can users select which files to store, or will IPFS just fill it up as much as storage is available?

that i think it’s your application need to manage that after in ipfs you store really a file if you need store use ipfs add ipfs get or pin in DHT a content. After if you need delete a content on IPFS is not possible you can just unpin in DHT the CID of file.

  1. Security: what if a user just signs up with the sole intent of hacking our private network? What security measures do you suggest in this setup?

here for user authentification your application need to implement that. For file in ipfs a system to secure exist but if you need a good system your system need to use crypt system top of IPFS ( look like tor plain in plain out so crypt your data). to implement a private network your can precise on IPFS check go-ipfs flags and config documentation.

  1. Is this setup possible cross-platform (Windows, Linux, Mac)?

you can use electron with js-ipfs or go-ipfs (install locally on machine)

some application use that :

if you need advice or help to coding don’t hesitate !

Happy hacking !

Hi @josselinchevalay, thank you for your answers! I will check them out later, as for the meantime I have a follow-up question:

Can we control on which nodes or computers where IPFS will store the data, or is this purely automatic?

In our system, users may just upload files and not share storage at all, so in this scenario we would like to store the file to the nearest nodes as possible to the uploading user.

Or maybe another case also is for black-listing nodes.

Hi,

Blockquote
Can we control on which nodes or computers where IPFS will store the data, or is this purely automatic?

sure you can controls in your application for example you can implement in your system a pubsub channel where a client after upload a file in your document post in this channel a stockageOrder (on your private networks) after that the first node ready to store can get the message and locally (on another node) run a ipfs add or the CID of client file.

in IPFS are created for the closer node has ressource respond the first (it’s decentralize)

you can in IPFS define a blacklist yes for bootstrap node and swarm peers : IPFS Documentation | IPFS Docs & IPFS Documentation | IPFS Docs

Regards

Thank you @josselinchevalay for these ideas, will definitely check these out.

@josselinchevalay I have tried creating a program with the Java SDK, but it asks for a running IPFS node. It seems that the SDKs were meant to interact with the HTTP API of IPFS, but not necessarily install an IPFS instance. Would there be a workaround or other options?

Thanks again.

hello,

You need see on “Protocol Implementations” : https://github.com/ipfs/ipfs#protocol-implementations can create a node IPFS in api-client-libraries https://github.com/ipfs/ipfs#api-client-libraries are on client api to communicate with existing node. In my know JAVA implementations not exist official or not. Do you need absolutely you use JAVA ? in cross plateform application you use for exemple electron + node js and so you can use js-ipfs impelementation and that can permit to create cross platform apps.

Regards

Hello @josselinchevalay,

It’s clear to me now, I needed to use one of the protocol implementations. I tried the IPFS 101 example and it ran a local IPFS node from scratch :slight_smile:

This is something I could build upon. I tried the Java client library because for the server side we have a Java microservices stack (based on Docker and Netflix OSS - Eureka / Zuul / Hystrix); I guess we’ll just use go-ipfs + java-ipfs-api for the server. For the desktop client app I think yes the way to go is Electron.js + js-ipfs.

Thanks :smile:

@chessequality Did you ever get this working?
How did you solve the proof of storage issues? If you don’t mind my asking.