draft-irtf-cfrg-fiat-shamir
Fiat-Shamir Transformation
This document describes how to construct a non-interactive proof via
the Fiat–Shamir transformation, using a generic procedure that
compiles an interactive proof into a non-interactive one by relying
on a stateful duplex sponge object.
The duplex sponge interface requires two methods: absorb and squeeze,
which respectively read and write elements of a specified base type.
The absorb operation incrementally updates the duplex sponge's
internal state, while the squeeze operation produces variable-length,
unpredictable outputs. This interface can be instantiated with
different constructions based on permutation or compression
functions.
This specification also defines codecs to securely map prover
messages into the duplex sponge domain, from the duplex sponge domain
into verifier messages. It also establishes how the non-interactive
argument string should be serialized.