CRISP (Collusion-Resistant Impartial Selection Protocol) is an integral part of the Enclave protocol, designed to redefine the landscape of privacy and security in digital decision-making. Incorporating cutting-edge technologies such as Fully Homomorphic Encryption (FHE), threshold cryptography, and zero-knowledge proofs (ZKPs), CRISP enables secure and anonymous voting mechanisms. Our protocol upholds the sanctity of each individual vote while safeguarding voter anonymity, establishing a new standard for governance and decision-making platforms.
In our increasingly digitalized world, privacy, security, and information integrity are of paramount concern. CRISP is a pivotal innovation, crafted to counteract collusion, address governance vulnerabilities, and ensure data confidentiality. By establishing a secure, unbiased decision-making forum, CRISP empowers individuals and entities to engage in governance and other sensitive activities with confidence. This approach nurtures fairness, transparency, and trust within digital infrastructures.
CRISP/packages
├── /client/
│ ├── /libs/wasm/pkg/ - WebAssembly library package
│ ├── /public/ - Static files
│ ├── /src/ - React components and source code
│ └── [configuration files and README]
├── /evm/ - Ethereum Virtual Machine related code
├── /rust/ - Rust server-side logic
└── /web-rust/ - Rust to WebAssembly logic
To set up the CRISP dApp in your local environment, follow these steps:
- Clone the repository:
git clone https://github.com/gnosisguild/CRISP.git
- Navigate to the
client
directory:cd CRISP/packages/client
- Install dependencies:
yarn install
- Start the development server:
yarn dev
Before running the Enclave server, you must have Rust installed on your machine along with the necessary environment variables set. Follow these steps to set up your environment:
-
Install Rust:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
This will install
rustup
, Rust's toolchain installer. Follow the on-screen instructions to complete the installation. -
Add the Rust toolchain to your system's PATH:
source $HOME/.cargo/env
Navigate to the enclave_server
directory and run the server with:
cargo run --bin enclave_server
Open 4 separate terminal windows for the various components.
-
In two terminals, start the cipher clients by running:
cargo run --bin start_cipher_client
Wait for the
enclave_server
to be up and running before executing this command in each terminal. -
In the last terminal, run the CLI client:
cargo run --bin cli
Once the CLI client is running, you can interact with the CRISP voting protocol as follows:
-
Select the option
CRISP: Voting Protocol (ETH)
. -
To start a new CRISP round, select the option
Initialize new CRISP round
.
Ensure all components are running and communicating with each other properly before initializing a new round.
Remember to provide exact paths if the enclave_server
, start_cipher_client
, and cli
binaries are located in specific directories. If any specific configuration is needed in the environment files, make sure to outline what changes need to be made and where the files are located. It's also crucial to include any ports that need to be open or additional services that are required for the application to run correctly.
We welcome contributions from the community. Please read our contributing guide and code of conduct before submitting any pull requests or issues.