This repository is the developing prototype of Hetu chronos, a general-propose message-passing framework which consider causality as first class citizen.
The chronos is a novel logical clock system designed for open networks with Byzantine participants, offering improved fault tolerance and performance. It introduces a customizable validator abstraction and has been successfully applied to develop decentralized applications with minimal overhead.
Chronos organization layout is as follows:
crates/
the common dependences and core functional crates folder.demos/
some use cases of applied the Chronos and proposals.docs/
design and applied documents for demonstrating thoughts.src/
the source codebase of shared definitions and some common codes.
The Chronos is a novel verifiable logical clock system that can target many problems that can't be handled by the regular logical clock.
Here are some core new features are provided by the Chronos:
- Programmable and verifiable vector logic clock
- Provides networks events causality partially order graph capability
- High-performance replication state machine with logical clock Byzantine fault tolerance
- Three verifiable warranties are provided: clock update proof, monotonicity proof, application-specific proof
- Three validation backends are supported: quorum certificate, trusted hardware (TEE), verifiable computation (ZKP)
Please refer to hetu key research for more details
Regular logical clock have been applied in many scenarios. As follows:
- Weakly consistent storage systems
- Broadcast events with causally ordered
- Deadlock detection
- Mutual exclusion of shared resources in a distributed system
- Bakery algorithm
- Distributed snapshots
- Distributed system debugging.
For sure, the verifiable logical clock is an enhanced version of a regular logical clock that can do everything a regular clock can do.
git clone https://github.com/hetu-project/chronos.git
cd chronos
cargo build
We welcome all contributions! There are many ways to contribute to the project, including but not limited to:
- Cloning code repo and opening a PR.
- Submitting feature requests or bugs.
- Improving our product or contribution documentation.
- Contributing use cases to a feature request.