[][src]Crate synchronicity

Synchronicity

A connecting principle linked to the invisible. Almost imperceptible. Something inexpressible.

—The Police, Synchronicity I

Distributed build system providing cryptographic proofs-of-reproducibility via Byzantine Fault Tolerant (BFT) consensus.

Documentation

About

Synchronicity is a distributed build system for Rust crates which have been published to crates.io. It builds crates reproducibly inside of Docker containers managed using Rustwide, the core library behind tools like Crater and docs.rs.

Builders running Synchronicity also run a BFT consensus algorithm between each other (as part of a closed, "permissioned" group), and in doing so come to agreement on whether or not a build was successfully reproduced by a threshold of the group. Consensus is provided by Libra's HotStuff BFT.

Any builder can submit a build to be run by the rest of the group. The results of the build are then published as part of a commit-and-reveal scheme. After all builders have completed the build, or a timeout is reached, the builders reveal hashes identifying the build artifacts, and if a threshold of them match, evidence thereof is stored in an append-only Merkle log generated by the consensus group.

Once evidence of a successful build reproduction has been published in the log, clients interested in determining if they should trust a particular build can request cryptographic proof-of-inclusion that it has been successfully reproduced. So long as a threshold of the group does not collude to publish fraudulent reproducibility results, this cryptographic proof can be trusted as evidence that a build with a matching hash is reproducible from the original source code published on crates.io.

Modules

application

Synchronicity Abscissa Application

commands

Synchronicity Subcommands

config

Synchronicity Configuration

error

Error types

prelude

Application-local prelude: conveniently import types/functions/macros which are generally useful and should be available everywhere.