All Projects → Wondertan → go-ipfs-recovery

Wondertan / go-ipfs-recovery

Licence: MIT license
Data recovery for IPFS protocol.

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to go-ipfs-recovery

Js Ipfs
IPFS implementation in JavaScript
Stars: ✭ 6,129 (+38206.25%)
Mutual labels:  ipfs, ipld, libp2p
Ipfs
Peer-to-peer hypermedia protocol
Stars: ✭ 20,128 (+125700%)
Mutual labels:  ipfs, ipld
go-libp2p-quic-transport
An implementation of a libp2p transport using QUIC
Stars: ✭ 102 (+537.5%)
Mutual labels:  ipfs, libp2p
Js Libp2p
The JavaScript Implementation of libp2p networking stack.
Stars: ✭ 1,686 (+10437.5%)
Mutual labels:  ipfs, libp2p
go-libp2p-tor-transport
🚧 WIP: tor transport for libp2p
Stars: ✭ 41 (+156.25%)
Mutual labels:  ipfs, libp2p
hydra-booster
A DHT Indexer node & Peer Router
Stars: ✭ 56 (+250%)
Mutual labels:  ipfs, libp2p
Berty
Berty is a secure peer-to-peer messaging app that works with or without internet access, cellular data or trust in the network
Stars: ✭ 5,101 (+31781.25%)
Mutual labels:  ipfs, libp2p
borg
Client-server stack for Web3! Turn your Raspberry Pi to a BAS server in minutes and enjoy the freedom of decentralized Web with a superior user experience!
Stars: ✭ 25 (+56.25%)
Mutual labels:  ipfs, libp2p
edgevpn
⛵ The immutable, decentralized, statically built p2p VPN without any central server and automatic discovery! Create decentralized introspectable tunnels over p2p with shared tokens
Stars: ✭ 223 (+1293.75%)
Mutual labels:  ipfs, libp2p
go-libp2p-http
HTTP on top of libp2p
Stars: ✭ 49 (+206.25%)
Mutual labels:  ipfs, libp2p
peer-id-generator
Vanity public key generator for use with IPFS and IPNS
Stars: ✭ 27 (+68.75%)
Mutual labels:  ipfs, libp2p
py-multiaddr
multiaddr implementation in Python
Stars: ✭ 27 (+68.75%)
Mutual labels:  ipfs, libp2p
ipfs-crawler
A crawler for the IPFS network, code for our paper (https://arxiv.org/abs/2002.07747). Also holds scripts to evaluate the obtained data and make similar plots as in the paper.
Stars: ✭ 46 (+187.5%)
Mutual labels:  ipfs, libp2p
go-ipld-eth-import
🌐 Bring Ethereum to IPFS 🌐
Stars: ✭ 24 (+50%)
Mutual labels:  ipfs, ipld
web3.storage
⁂ The simple file storage service for IPFS & Filecoin
Stars: ✭ 417 (+2506.25%)
Mutual labels:  ipfs, libp2p
nebula-crawler
🌌 A libp2p DHT crawler, monitor, and measurement tool that exposes timely information about DHT networks.
Stars: ✭ 97 (+506.25%)
Mutual labels:  ipfs, libp2p
ipfs-companion
Browser extension that simplifies access to IPFS resources on the web
Stars: ✭ 1,745 (+10806.25%)
Mutual labels:  ipfs
go-multiverse
Decentralized Version Control System
Stars: ✭ 76 (+375%)
Mutual labels:  ipfs
likecoin-wordpress
The WordPress plugin to integrate LikeCoin - Decentralized Publishing Infrastructure.
Stars: ✭ 19 (+18.75%)
Mutual labels:  ipfs
drive
Fission Drive 🗄
Stars: ✭ 21 (+31.25%)
Mutual labels:  ipfs

Build Go Report Card License codecov

IPFS Recovery

The project was originally started as a submission for the HackFS hackathon and became Top-10 Finalist 🏆. Also check-out our presentation.

Building a way for content to persist permanently despite any damage to data and the network by
bringing data recovery algorithms into IPFS protocol.

Table of Contents

Background

The IPFS project, at its core, tries to upgrade the Internet to make it better in multiple ways. One of the goals is to make the Web permanent. This IPFS characteristic is very promising, but still not in the state of the art form and requires more RnD in that vector. On the other side, Computer Science, for many years of existence, has plenty of research related to data and the ways to make it persistent against multiple data-loss factors within mostly centralized systems. On the way to permanency, those inventions can apply to IPFS protocol taking the most out of them, and then newer innovations might take place instead after gathering all the experience. Further work in this avenue can also ensure integrity even in doomsday scenarios where large portions of the network can go down, allowing content to still be recovered. Though there are multiple discussions in the IPFS ecosystem regarding the data persevering mechanisms, like erasure codings, none of them were actually implemented.

The IPFS Recovery project brings data recovery algorithms into IPFS with the above aim. It does so by creating new IPLD data structures able to do self-recovery in case some of the nodes are lost and can't be found on the network due to node churn, network issues, or physical storage damage.

Implementation

The Recovery currently points to the main IPFS implementation in Golang and follows all its development guidelines and best practices. The Golang Recovery implementation is a fully modular library with clean API boundaries that aims to provide convenient use and excellent abstraction for all current and future implementations.

Algorithms

Reed-Solomon

For the initial version, the project started with industry-standard Reed-Solomon coding.

Alpha Entanglements

As a next step, novel Alpha Entanglements schema has been chosen. It provides better performance and higher recovery ratio comparing with the former algorithm. In particular, entanglements are interesting as they provide the ability to create self-healing networks.

Related Work

IPFS Fork

As Recovery follows IPFS ecosystem modularity best practises, its fork is integrated in a just a few small changes.

First, it covers DAG sessions with custom NodeGetter that can recover nodes on the fly if content is requested but not found. Furthermore, fork adds additional functionality to IPFS CLI extending it with recovery command group. Currently, it is only capable for encoding DAGs with Reed Solomon recoverability using encode, but later CLI will be extended with full featured management for Recovery, like re-encoding, manual recovery and algorithm choices.

Testground Plans

IPFS ecosystem recently launched new project aimed to test p2p system on large scale to simulate real world behavior. Using it for benchmarking and testing Recovery is a must, as it goals to improve IPFS protocol.

Future Work

  • Upgrade to more complex Alpha Entanglement parity lattice to reach better performance.

  • IPLD specs formalization through active discussions and feedback processing.

  • Implementations for latest go IPLD version and for js as well.

  • Extensive Testground simulation to gather real-world resiliency benchmarks and to examine various other erasure codes

Tryout

  1. Build forked IPFS
  2. Encode ANY IPFS content: ipfs recovery encode <path>
  3. List all the blocks encoded content consist of: ipfs refs <enc_cid> -r
  4. Remove any random blocks yourself from the given list: ipfs block rm ...<cid>
  5. Be amazed after seeing that it is still possible to get your content back: ipfs get <enc_cid>

Contributors

License

MIT © Hlib Kanunnikov

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].