![](https://i.imgur.com/WeIvTiX.png =150x)
# WG Charter: SNARK-friendly Primitives
Zero-knowledge proof systems are used to prove mathematical statements while maintaining a level of privacy. In some cases, these statements, or predicates are based on larger cryptographic constructions and require proving the some primitives have been computed correctly.
Specifically, this working group was created as a way to coordinate and ensure the appropriate use of these primitives within other working groups and standardization efforts using zero-knowledge proofs.
We will aim to reuse any existing standard for the primitives in this charter, adapting them to the setting of SNARKs.
---
## Goals
We have built this working group in order to standardize the secure and interoperable description, implementation and applications of a variety of SNARK-friendly primitives to be used in different settings. These include among others:
- Hash functions
- Commitment schemes
- Pseudo-Random Functions (PRF)
- Message Authentication Codes (MAC)
- Signature schemes -- both discrete-log-based (e.g. RedDSA) and bilinear pairing-based (e.g. BLS)
- Key Derivation Functions (KDF)
- Symmetric Encryption schemes (AEADs)
- Asymmetric Encryption schemes
- Key agreement protocols.
----
## Milestones
As seen in several of the discussions during the 3rd ZKProof Workshop, the community would benefit most from an initial standard of hash functions, with a use in mind for both collision-resistant hashes and hiding commitments.
- We aim to generate a first draft by _______
----
## Initial Liaison with other WG
### Commit-and-Prove
The commit-and-prove paradigm provides a way to modularly commit to data in advance and then use different NIZK schemes to prove properties about those commitments. In essence, standardizing a commitment scheme (or more than one) would allow for
### DAPOL
### Semaphore