Poseidon377, our instantiation of a SNARK-friendly hash

Penumbra is building a shielded, cross-chain network for private transactions, staking, swaps, and marketmaking. We use zero-knowledge proofs (ZKP) to provide privacy. One crucial component for efficient ZKPs is a hash function that is efficient in the circuit context. In this blog post we provide an overview of the hash function Poseidon, introduce Poseidon377 - our instantiation of the Poseidon ZKP-friendly hash for the Penumbra system - and two of its dependent crates which are generic over Arkworks prime fields: poseidon-permutation, which provides an independent implementation of the Poseidon permutation, and poseidon-paramgen, which provides a fully audited (by NCC Group in Summer 2022) and independent implementation of Poseidon parameter generation.