WARNING: The master branch is currently unstable, as it is in development phase. If you are starting new work with this repository, use gopkg.in/dedis/cothority.v1 instead. The source code for this stable branch is here.
The collective authority (cothority) project provides a framework for development, analysis, and deployment of decentralized, distributed (cryptographic) protocols. A given set of servers running these protocols is referred to as a collective authority or cothority. Individual servers are called cothority servers or conodes. The code in this repository allows you to access the services of a cothority and/or run your own conode. The cothority project is developed and maintained by the DEDIS lab at EPFL.
The software in this repository is highly experimental and under heavy development. Do not use it for anything security-critical yet.
All usage is at your own risk!
In addition to our cothority main page that holds links to all our documentation, you can directly jump in to one of our three wikis to get the information about using the cothority, extending it, or helping in development:
- The cothority wiki provides an overview on supported protocols, services, and applications.
- The cothority template wiki shows how you can develop your own protocols, services, and applications such that they can be integrated into the cothority project.
- The cothority network library wiki presents details on the inner workings of the cothority framework.
Very short overview for two steps: one to show the status of the nodes in the DEDIS-cothority, one for signing and verifying a file using all of these nodes.
To get the status of the conodes in the cothority, first install the status binary:
go get github.com/dedis/cothority/status
export DEDIS_GROUP=$(go env GOPATH)/src/github.com/dedis/cothority/dedis-cothority.toml
Now you can run it by giving the definition of the dedis-cothority on the command line:
status --group $DEDIS_GROUP
Another service available is collective signing, or CoSi, that asks a set of conodes to create a collective signature on an input data. For installation, type:
go get github.com/dedis/cothority/cosi
export DEDIS_GROUP=$(go env GOPATH)/src/github.com/dedis/cothority/dedis-cothority.toml
Now you can create a file and have it signed by the cothority:
date > /tmp/my_file
cosi sign --group $DEDIS_GROUP /tmp/my_file | tee sig.json
And later somebody can verify the signature is correct by running the following command:
cosi verify --group $DEDIS_GROUP --signature sig.json /tmp/my_file
If everything is correct, it should print
[+] OK: Signature is valid
Name | Description |
---|---|
cisc |
Manage identity skipchains |
conode |
The cothority server |
cosi |
Request and verify collective signatures |
pop |
Proof of Personhood parties |
scmgr |
Skipchain Manager to inspect a running skipchain |
status |
Query status of a cothority server |
If you are interested in contributing to the cothority project, please check our guidlines found at , , and . Make also sure to have a look at our coding guidelines.
The software in this repository is put under a dual-licensing scheme: In general all of the provided code is open source via GNU/AGPL 3.0, please see the LICENSE file for more details. If you intend to use the cothority code for commercial purposes, please contact us to get a commercial license.
We are always happy to hear about your experiences with the cothority project. Feel free to contact us on our mailing list or by email.