# Infrastructural Components
A list of the main components and the corresponding actions needed to put the voting infrastructure in place:
* **Smart contracts**
* Deployment of the Master Voting SC
* Open source SC
* **Public Delay-Relayer**
* Set up one or more relayers (e.g. Nouns + Aztec + Aragon)
* Open source relayer implementation
* **Public Time-Lapse Cryptography Service**
* Bootstrap the consortium of trusted parties (e.g. Nouns + Aztec + Aragon + others)
* Start publishing keys
* Open source TLC service implementation
* **Front end**
* Deploy on one or more servers
* Open source frontend (including the source code of the embedded Noir program)
# Technologies Used
* For generating ZKPs, we will use Aztec’s Noir language paired with an UltraPlonk-based proving backend. Noir is a domain-specific language for writing zero-knowledge proofs.
* The tally prover will be written in Rust and Noir.
* The web interfaces will use JavaScript and Wasm.
* For the “Time-lapse cryptography service” we will, amomg others, use ideas from [tlock: practical timelock encryption from threshold BLS](https://eprint.iacr.org/2023/189)