| Report Date | 2026/10/13 |
| Submitted by | Davide Galassi |
| Sponsored by | N/A |
On the cryptography side, I hardened and optimized ark-vrf and the ring VRF stack around it, partly in response to the SRLabs and Cure53 audits. On the JAM side, I brought PolkaJam and the test vectors up to Gray Paper 0.8.0.
I maintain the Bandersnatch VRF specification, ark-vrf and verifiable, the ring VRF layer of Individuality. I also contribute to ring-proof.
Security. I fixed the audit findings across ark-vrf, ring-proof and verifiable, and hardened ark-vrf beyond them. The libraries now reject malformed and degenerate inputs, the ring prover no longer branches on secret data, and a build configuration can no longer turn off the zero-knowledge property of ring proofs (ark-vrf#105, ring-proof#97, verifiable#65).
Performance. Thin and Tiny VRF proofs are now about 1.5x faster to create and verify than in April, and ring proofs are faster to create (benchmarks). Proofs from different rings can now be verified together in one batch (ark-vrf#92, verifiable#61).
RFC 9380 bug in arkworks. The arkworks hash-to-curve did not follow RFC 9380 for curves like Bandersnatch, so its output differed from compliant implementations. I fixed it in ark-vrf (ark-vrf#109) and opened the upstream fix (arkworks-rs/algebra#1140).
Thin VRF in JAM. I updated the Gray Paper to the latest VRF specification and moved JAM to Thin VRF, which supports batch verification (graypaper#550).
EC host functions (RFC-163). Some inputs could make the Bandersnatch host functions panic. I wrote the RFC amendment (RFCs#168) and the polkadot-sdk fix (#12125). The Individuality runtime can now run its Bandersnatch operations natively through these host functions (individuality#934, private).
PolkaJam (62 PRs, private repository). I drove the Gray Paper 0.8.0 update (#1024), where the largest change was support for smaller validator sets (#1184). The fuzzer, tests and code review found several bugs that I fixed or reported: invalid blocks from the block author, honest peers reported for misbehaviour, and some differences between PolkaVM backends. I also made fuzzer sessions fully reproducible across machines (#983) and reworked the fuzzer's block mutation engine (#1288, in review).
Gray Paper. I fixed a flaw that let anyone forge signatures for the null key that replaces the keys of offending validators (graypaper#543). Three more proposals are in review: two close overflows that colluding guarantors or large preimages can trigger (#563, #564), and one restores a role handover that an earlier change of mine removed (#558).
Test vectors and M1. I released the JAM test vectors for Gray Paper 0.8.0 and defined the conformance criteria that the fuzzer applies for M1 (jam-conformance#194). The fuzzer target list now has 25 JAM implementations. I am also on the M1 evaluation board, where I help interview the teams that pass the fuzzer conformance test to assess their Gray Paper knowledge.
Next, I plan to release ark-vrf 0.6.0 and complete Gray Paper 0.8.1 in PolkaJam and the test vectors.
| Ranks | Activity thresholds | Agreement thresholds | Member's voting activities | Comments |
|---|---|---|---|---|
| III | 70% | 100% | 59 of 68 (86.8%). Agreement: 57 of 57 (100%) on the consensus referenda that I voted on. | I did not vote on the other 9 referenda. |
Question(s):
Concern(s):
Comment(s):
Threshold