-
Notifications
You must be signed in to change notification settings - Fork 106
Home
A collective authority (cothority) is a set of servers, called conodes, that collectively execute decentralized protocols, e.g., for collective signing, threshold signing, Byzantine agreement, or generation of public-randomness. The software in this repository allows you to access the services of a cothority through different client applications and/or run your own cothority server.
If you have questions or remarks on the cothority project, feel free to reach out to us through our mailing list or by email.
The conode is a server application from which collective authorities are built that in turn run decentralized protocols and provide services to clients.
The following client applications are available:
- CoSi - Request and verify collective signatures
- Cisc - Manage Cisc identity skipchains, permissioned blockchain-based key/value storages for organizing idenities (e.g., SSH-keys)
- PoP - Create proof-of-personhood tokens
- Guard - Store passwords using threshold cryptography
- Status - Query conode status
Most of the apps rely on a service. You can find more information in the api.go
of those services:
- Service_CoSi - Collective Signing, where you can submit a hash of a document and get a collective signature on it
- Service_Guard - framework to allow distributed encryption and decryption of passwords without a useless central database, if hacked
- Service_Identity - Cisc Identity Skipchain, a distributed key/value storage handled by a permissioned, personal blockchain with an SSH-plugin
- Service_SkipChain - a permissioned blockchain for storing arbitrary data if a consensus of a group of nodes is found
- Service_Status - returns the status of a conode
This is a list of available protocols in the conode-repo:
- Protocol_CoSi - Collective Signing. Creates an aggregate Schnorr signature in a tree over 1'000s of nodes
- Protocol_Example - example-protocols demonstrating the use of handlers and channels when writing protocols
- Protocol_ByzCoin - inspired by Bitcoin-NG. Uses BFTCoSi to add microblocks
- Protocol_RandHound - generate verifiable random numbers
- BFTCoSi - Byzantine Fault Tolerant Collective Signing - implements PBFT by having first a commit-round, followed by a signing-round
- JVSS - Joint Verifiable Secret Sharing - distribute a secret between different nodes, then sign and verify signatures in a distributed way
- Messaging - used by other services or protocols when messages need to be sent to other nodes
- Ntree - naive tree signing schemes to compare with CoSi
In some of the directories you can find simulations that are used to verify the correctness of the protocols when run across 100s or 1000s of nodes. To run the simulations, see Simulation.
Be sure also to check out the following documentation of the other parts of the project:
- To start a new project by developing and integrating a new protocol, have a look at the Cothority Template
- To participate as a core-developer, go to Cothority Network Library
All repositories in https://github.com/cothority are double-licensed under a GNU/AGPL 3.0 and a commercial license. If you want to have more information, contact us at bryan.ford@epfl.ch or linus.gassser@epfl.ch.
If you want to contribute to Cothority-ONet, please have a look at CONTRIBUTION for licensing details. Once you are OK with those, you can have a look at our coding-guidelines in Coding. In short, we use the github-issues to communicate and pull-requests to do code-review. Travis makes sure that everything goes smoothly. And we'd like to have good code-coverage.
You can contact us at https://groups.google.com/forum/#!forum/cothority