Skip to content

princeton-sns/scuba

Repository files navigation

SCUBA Client Libraries

SCUBA provides a general programming and communication model for applications that fit a client-based architecture. Fitting applications are those in which that amount of data can fit on a single device, computation over data is relatively minimal, and data is shared across a relatively small number of devices. Examples of this are: health-tracking applications (e.g. period trackers), small-scale social media, games (e.g. chess), and IoT applications (e.g. smart light switches).

This repository consists of the SCUBA core client library, SCUBA data abstraction layers (providing single-key and transactional consistency guarantees on top of a key-value store), and command-line SCUBA applications.

The SCUBA server routes and orders all encrypted operations in the system, enabling offline communication and client validation of a host of consistency models.

The core client library establishes end-to-end double ratchet encryption, server communication, and mechanisms for detecting consistency violations in a Byzantine setting. Notably, the core library is entirely application-agnostic, and applications can either communicate with it directly or through a relevant data abstraction layer.

The data abstraction layers provide various consistency, data model, and access control abstractions to applications, illustrating how SCUBA can support a variety of application needs.

Finally, the applications demonstrate how SCUBA-based applications can focus on implementing application-specific logic, since cross-device communication, consistency guarantees, access control, and encryption are all handled by the underlying libraries.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published