This repository fork has been archived because the project is no longer under active development by the Equilibrium team.
The code remains available for reference and historical purposes, but it should be considered unmaintained. We do not currently plan to provide updates, support, issue triage, or pull request reviews for this repository.
If you would like to reopen the project, continue development, or discuss future maintenance, please contact the Equilibrium team.
A Rust implementation of ipfs-log by Haja Networks: an append-only log on IPFS.
ipfs-log-rs is an immutable conflict-free replicated data structure (CRDT) for distributed systems. It is an append-only log that can be used to model a mutable, shared state between peers in peer-to-peer applications.
Every entry in the log is stored in IPFS, and each points to a hash/hashes of the previous entry/entries, forming a graph. Logs can be forked and joined back together.
An example graph from the original implementation readme:
Log A Log B
| |
logA.append("one") logB.append("hello")
| |
v v
+-----+ +-------+
|"one"| |"hello"|
+-----+ +-------+
| |
logA.append("two") logB.append("world")
| |
v v
+-----------+ +---------------+
|"one","two"| |"hello","world"|
+-----------+ +---------------+
| |
| |
logA.join(logB) <----------+
|
v
+---------------------------+
|"one","hello","two","world"|
+---------------------------+
Basic functionality implemented (Oct 3, 2019)
- essential log and entry operations
- testing lacking
- documentation lacking to some extent
- stores entries in IPFS only as JSON at the moment, not as CBOR DAGs
- Rust 2018 edition
cargo test
MIT © 2016–2018 Protocol Labs Inc.,
2016–2019 Haja Networks Oy,
2019 Equilibrium Labs.