I've finally finished writing patches to integrate zchunk support into dnf/libsolv/librepo[1], and I'd greatly appreciate some code review. A vast majority of the code is in librepo, but libsolv has been expanded to support zchunk files and dnf has a tiny patch that passes the base cache directory to librepo to find source zchunk files to delta against.
With these patches and a zchunk-enabled repository, you will download only the differences in your primary/filelists/other metadata. Partial downloads are validated and then continued, and each chunk is validated as it's downloaded, ending the download and moving to a new mirror if any chunk is corrupt.
I would love to get these changes into Fedora 29, and the code is testable now, but with only three weeks until System-Wide change proposals are due, I'm not sure if I'm being ambitious.
On another note, I would also like to finalize zchunk's API and make a stable ABI promise, but before I take that step I'd really love some feedback on its usability.
Jonathan
[1] https://github.com/rpm-software-management/dnf/pull/1107 https://github.com/openSUSE/libsolv/pull/270 https://github.com/rpm-software-management/librepo/pull/127