Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/indifs/indifs
Individual Distributed Peer-to-Peer Filesystem for the Decentralized Web
https://github.com/indifs/indifs
crdt decentralized distributed filesystem ipfs libp2p merkle-crdt merkle-proof merkle-tree p2p peer-to-peer
Last synced: 1 day ago
JSON representation
Individual Distributed Peer-to-Peer Filesystem for the Decentralized Web
- Host: GitHub
- URL: https://github.com/indifs/indifs
- Owner: indifs
- License: mit
- Created: 2024-10-31T10:09:45.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2025-01-05T04:41:38.000Z (6 days ago)
- Last Synced: 2025-01-05T05:24:33.736Z (6 days ago)
- Topics: crdt, decentralized, distributed, filesystem, ipfs, libp2p, merkle-crdt, merkle-proof, merkle-tree, p2p, peer-to-peer
- Language: Go
- Homepage:
- Size: 69.3 KB
- Stars: 102
- Watchers: 1
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# indiFS
[![Go Report Card](https://goreportcard.com/badge/github.com/indifs/indifs)](https://goreportcard.com/report/github.com/indifs/indifs)
[![GoDoc](https://godoc.org/github.com/indifs/indifs?status.svg)](https://godoc.org/github.com/indifs/indifs)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](Individual Distributed Peer-to-Peer Filesystem for the Decentralized Web
## Overview
IndiFS is a virtual file system designed for decentralized web applications. It provides a peer-to-peer distributed filesystem with features such as file versioning, merkle proofs, and efficient file part handling.
## Features
- **Distributed File System**: Store and retrieve files across a decentralized network.
- **File Versioning**: Keep track of file versions and changes.
- **Merkle Proofs**: Verify file integrity using merkle proofs.
- **Efficient File Handling**: Handle large files by splitting them into parts.## Installation
To install the project dependencies, run:
```sh
go get github.com/indifs/indifs
```## Usage
```go
package mainimport (
"github.com/indifs/indifs"
"github.com/indifs/indifs/crypto"
"github.com/indifs/indifs/database/memdb"
"log"
"os"
"time"
)func main() {
prv := crypto.NewPrivateKeyFromSeed("Alice-secret")
pub := prv.PublicKey()
src := os.DirFS(os.Getenv("HOME") + "/Alice-Files/")
ifs, _ := indifs.OpenFS(pub, memdb.New())
ts := time.Now()commit, err := indifs.MakeCommit(ifs, prv, src, ts)
if err != nil {
log.Panic(err)
}
if err = ifs.Commit(commit); err != nil {
log.Panic(err)
}
return
}```