# Argument-0009: Retention at Rank III | | | | ---------------- | -------------------------------------------- | | **Report Date** | 2026/10/13 | | **Submitted by** | Davide Galassi | | **Sponsored by** | N/A | ## Member details - Matrix username: @davxy:matrix.org - Polkadot address: 16Q4qkRcWd4r8196dVGNLYVfy7H86MJYJBMockPaMigFXCyv - Current rank: 3 - Date of initial induction: 2024/01/08 - Date of last report: 2026/04/09 - Link to last report: [Argument-0008](0008-davxy-2026.md) ([Referendum 514](https://collectives.subsquare.io/fellowship/referenda/514)) - [Subsystems](../../subsystems.md) developed/maintained: Cryptography (Applied) (assignee), JAM (Polkajam) ## Reporting period - Start date: 2026/04/09 - End date: 2026/10/13 ## Argument 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. ### Cryptography I maintain the [Bandersnatch VRF specification](https://github.com/davxy/bandersnatch-vrf-spec), [`ark-vrf`](https://github.com/davxy/ark-vrf) and [`verifiable`](https://github.com/paritytech/verifiable), the ring VRF layer of Individuality. I also contribute to [`ring-proof`](https://github.com/paritytech/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](https://github.com/davxy/ark-vrf/pull/105), [ring-proof#97](https://github.com/paritytech/ring-proof/pull/97), [verifiable#65](https://github.com/paritytech/verifiable/pull/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](https://github.com/davxy/ark-vrf/blob/main/benches/SUMMARY.md)). Proofs from different rings can now be verified together in one batch ([ark-vrf#92](https://github.com/davxy/ark-vrf/pull/92), [verifiable#61](https://github.com/paritytech/verifiable/pull/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](https://github.com/davxy/ark-vrf/pull/109)) and opened the upstream fix ([arkworks-rs/algebra#1140](https://github.com/arkworks-rs/algebra/pull/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](https://github.com/gavofyork/graypaper/pull/550)). **EC host functions (RFC-163).** Some inputs could make the Bandersnatch host functions panic. I wrote the RFC amendment ([RFCs#168](https://github.com/polkadot-fellows/RFCs/pull/168)) and the polkadot-sdk fix ([#12125](https://github.com/paritytech/polkadot-sdk/pull/12125)). The Individuality runtime can now run its Bandersnatch operations natively through these host functions ([individuality#934](https://github.com/paritytech/individuality/pull/934), private). ### JAM **PolkaJam** ([62 PRs](https://github.com/paritytech/polkajam/pulls?q=is:pr+author:davxy+created:2026-04-09..2026-10-13), private repository). I drove the Gray Paper 0.8.0 update ([#1024](https://github.com/paritytech/polkajam/pull/1024)), where the largest change was support for smaller validator sets ([#1184](https://github.com/paritytech/polkajam/pull/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](https://github.com/paritytech/polkajam/pull/983)) and reworked the fuzzer's block mutation engine ([#1288](https://github.com/paritytech/polkajam/pull/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](https://github.com/gavofyork/graypaper/pull/543)). Three more proposals are in review: two close overflows that colluding guarantors or large preimages can trigger ([#563](https://github.com/gavofyork/graypaper/pull/563), [#564](https://github.com/gavofyork/graypaper/pull/564)), and one restores a role handover that an earlier change of mine removed ([#558](https://github.com/gavofyork/graypaper/pull/558)). **Test vectors and M1.** I released the [JAM test vectors for Gray Paper 0.8.0](https://github.com/davxy/jam-test-vectors/releases/tag/v0.8.0) and defined the conformance criteria that the fuzzer applies for M1 ([jam-conformance#194](https://github.com/davxy/jam-conformance/pull/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. ### Reviews and knowledge sharing - PolkaJam (45): [list](https://github.com/paritytech/polkajam/pulls?q=is:pr+reviewed-by:davxy+-author:davxy+created:2026-04-09..2026-10-13) - Gray Paper (15): [list](https://github.com/gavofyork/graypaper/pulls?q=is:pr+reviewed-by:davxy+-author:davxy+created:2026-04-09..2026-10-13) - JAM conformance (13): [list](https://github.com/davxy/jam-conformance/pulls?q=is:pr+reviewed-by:davxy+-author:davxy+created:2026-04-09..2026-10-13) - polkadot-sdk (6): [list](https://github.com/paritytech/polkadot-sdk/pulls?q=is:pr+reviewed-by:davxy+-author:davxy+created:2026-04-09..2026-10-13) - Support for JAM teams in the [#jam-conformance](https://matrix.to/#/#jam-conformance:matrix.org) Matrix room. Next, I plan to release `ark-vrf` 0.6.0 and complete Gray Paper 0.8.1 in PolkaJam and the test vectors. ## Voting record | 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. | ## Misc - [ ] Question(s): - [ ] Concern(s): - [ ] Comment(s):