Rod
Rust Object Database.
The decentralized social networking application Iris-messenger syncs over Rod peers by default.
Use
Install Rust first.
Install & run
cargo install rod
rod start
Library
use ;
let mut db = new_with_config;
let mut sub = db.get.on;
db.get.put;
if let Text = sub.recv.await.unwrap
Status
15/5/2022:
- Basic
- CLI for running the server
- Incoming websockets
- Outgoing websockets (env PEERS=wss://some-server-url.herokuapp.com/ws)
- Multicast (currently size limited to 65KB — large photos in messages will not sync over it)
- In-memory storage
- TLS support (env CERT_PATH and KEY_PATH)
- Advanced deduplication of network messages
- Publish & subscribe (network messages only relayed to relevant peers)
- Disk storage (sled.rs)
- Hash verification for content-addressed data (
db.get('#').get(data_hash).put(data)
) - Signature verification of user data (
db.get('~' + pubkey).get('profile') ...
) - Encryption & decryption (usually not needed on the server, but used on the client side in js, like iris private messaging)
Issues
- Multicast doesn't relay large messages like Iris posts with photos
Develop
cargo install cargo-watch
RUST_LOG=debug cargo watch -x 'run -- start'
cargo test
Watch for code changes and re-run tests that contain the word "stats":
RUST_LOG=debug cargo watch -x 'test stats'
cargo bench
Run on Heroku
heroku create --buildpack emk/rust
git push heroku master
or: