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 :
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 :
- Concatenate: .
- This does not require new commitments: .
- Use to translate claims to to claims about .
- Reduce claims to one via Reducing Multiple Evaluations to One.
- 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)