Georg Wiese (Powdr Labs), 2025

Adapts Twist and Shout to work with hash-based commitment schemes, using the pushforward machinery from logup*.

Motivation: Twist and Shout rely on efficient commitments to sparse polynomials, which is natural for elliptic-curve-based schemes but expensive for hash-based schemes. Logup* provides a way around this.

One-hot matrix commitment scheme

Logup* implicitly contains a commitment scheme for matrices with one-hot rows . Instead of committing to the full matrix, commit to its dense encoding (the column index of the 1 in each row).

To evaluate :

  1. The prover commits to .
  2. Prover proves well-formedness via GKR, as in Logup*.
  3. The key identity is .

Derivation of (3):

The third step expands the pushforward definition, the fourth uses the product structure of , and the last step is the definition of the multilinear extension of a matrix with one-hot rows (only nonzero terms).

Batching

Naively, opening one-hot matrices requires pushforward commitments. Batching reduces this to one. Given dense encodings of one-hot matrices :

  1. Concatenate: .
    • This does not require new commitments: .
  2. Use to translate claims to to claims about .
  3. Reduce claims to one via Reducing Multiple Evaluations to One.
  4. Open via a single pushforward .

Twist and Shout via logup*

Shout via logup*

Directly applies the one-hot commitment scheme with batching. With decomposition parameter (as in original Shout):

  • Given dense address vectors
  • Given memory content
  • Commit to one batched pushforward

For , this is equivalent to using logup* directly. For large memories, reduces the pushforward cost from to extension field elements.

Twist via logup*

Same idea applied to the read/write case:

  • Given read address vectors
  • Given write address vectors
  • Given Increment vector (dense; position determined by write address)
  • One batched pushforward (shared across all address matrices)