# Argument-0005: Retention at Rank 1

|                 |                                                                                             |
| --------------- | ------------------------------------------------------------------------------------------- |
| **Report Date** | 2026-01-20                                                                                  |
| **Submitted by**| Timothy Wu                                                                                  |


## Member details

- Matrix username: @timwu20:matrix.org
- Polkadot address: 1RaxuqWvyd6sdAEiansxmtget47PVcsSR38d9V2uPzKu2vo
- Current rank: 1
- Date of initial induction: Seeding
- Date of last report: 2025-10-06
- Area(s) of Expertise/Interest: Consensus protocols, Networking, Availability, Parachain consensus


## Reporting period

- Start date: 2025-07-05
- End date: 2025-01-20


## Argument

During this reporting period, I served as **Technical Team Lead** for the [Parity <> ChainSafe Q3/Q4 2025 engagement](https://polkadot.subsquare.io/referenda/1699), a treasury-funded collaboration to contribute directly to Polkadot-SDK development. In this role, I led a team of senior engineers working closely with Parity on initiatives including speculative availability, approval checking rewards, and WebRTC transport improvements.

My individual contributions during this period include:

### Polkadot SDK - Speculative Availability

Implemented speculative availability chunk requests within the Availability Distribution subsystem in [PR #10563](https://github.com/paritytech/polkadot-sdk/pull/10563) (open, awaiting review). This feature enables nodes to fetch erasure-encoded chunks from backing groups before candidates are actually backed on-chain by:

- Listening to `ActiveLeavesUpdate` events and querying Prospective Parachains for backable candidates
- Moving `request_backable_candidates` from Provisioner to `subsystem-util` for shared use
- Introducing `CoreInfo` and `CoreInfoOrigin` types to distinguish between scheduled (speculative) and occupied (on-chain backed) fetch origins
- Adding `AvailabilityStoreMessage::NoteBackableCandidate` message type to pre-store validation metadata
- Including CLI flag `--speculative-availability` for feature activation
- Adding metrics tracking with origin labels on `polkadot_parachain_fetched_chunks_total`
- Zombienet functional test validating chunk fetching for parachains supporting elastic scaling

### RFCs - Approval Checking Rewards

Authored RFC for Approval Checking Rewards in [ChainSafe/RFCs PR #1](https://github.com/ChainSafe/RFCs/pull/1) (open). This RFC proposes revisions to the Rewards RFC, specifically addressing:
- Tallies submission via signed extrinsics
- How validator points are assigned to validators based on rewards computation

Also contributed spelling and terminology fixes to the base Rewards RFC in [burdges/Polkadot-RFCs PR #2](https://github.com/burdges/Polkadot-RFCs/pull/2) (open). Waiting for this PR to be merged before creating the upstream PR to polkadot-fellows/RFCs.

### str0m - WebRTC Library Upstream Contributions

Contributed upstream to the str0m WebRTC library (dependency of litep2p):

- **[PR #711](https://github.com/algesten/str0m/pull/711)** (merged September 30, 2025): Restored the ability to disable DTLS fingerprint verification via `RtcConfig.set_fingerprint_verification` and fixed STUN username attribute decoding. This addresses [issue #549](https://github.com/algesten/str0m/issues/549) and enables litep2p's WebRTC transport to function correctly.

### litep2p - WebRTC Transport Improvements

Contributed to the litep2p networking library used by Polkadot nodes:

- **[PR #422](https://github.com/paritytech/litep2p/pull/422)** (merged August 14, 2025): Updated the str0m WebRTC library dependency and refactored code to work with its breaking API changes. This update was included in litep2p v0.11.0 release.

- **[PR #513](https://github.com/paritytech/litep2p/pull/513)** (open, 2 approvals): Implementing proper graceful shutdown for WebRTC substreams by adding support for the FIN/FIN_ACK handshake protocol per libp2p spec. Key implementation details:
  - State machine flow: `Open` → `Closing` → `FinSent` → `FinAcked`
  - 5-second timeout protection to prevent indefinite waiting (matching go-libp2p)
  - Unified message variants and fixed flag handling logic
  - Closes [issue #476](https://github.com/paritytech/litep2p/issues/476)



### Summary

My contributions demonstrate expertise in:
- **Availability subsystem** - Speculative chunk fetching to improve parachain availability
- **Networking** - WebRTC transport layer improvements for litep2p
- **Consensus economics** - RFC work on approval checking rewards


## Voting record
*Provide your voting record in relation to required thresholds for your rank.*

|  Ranks | Activity thresholds | Agreement thresholds | Member's voting activities | Comments |
|---|---|---|---|---|
|I  |90%   |N/A   | I have voted on 0 out of 0 referenda in which I was eligible to vote. | |
|II |80%   |N/A   |   |  |
|III|70%   |100%  |   |  |
|IV |60%   |90%   |   |  |
|V  |50%   |80%   |   |  |
|VI |40%   |70%   |   |  |


## Misc

- [ ] Question(s):

- [ ] Concern(s):

- [ ] Comment(s):
