[mnet-devel] simplifying ZNFF
Zooko
zooko at zooko.com
Wed Mar 5 23:30:42 GMT 2003
Folks:
I worked long and hard to develop a Zooko's New File Format which would allow us
to upgrade everything about it -- the FEC, the bundled metadata, even the
encryption and even the authentication -- while always having the ability to
publish a file, resulting in a single, short, mnet URI, which could be
downloaded and authenticated by both "current" and "current - 1" versions of the
client.
This would allow smooth upgrading while both old and new versions use the same
mnet URI for the same file.
The design was fiendishly complex and cryptographically questionable.
Then I decided that it just wasn't worth it. If it ever comes that we have to
change our encryption algorithm, we can either (a) just start publishing file
under the new system such that old client are unable to download them, or
(b) publish the file twice, once under the new and once under the old, and then
send both URIs so that a client of either era can download them.
So then I wrote a Zooko's New File Format which didn't allow smooth-upgrade
across encryption algorithm changes, but did across authentication algorithm,
FEC, or other "file format" changes. This was relatively simple, but still
noticeably more complex than a "simple" file format would be.
So earlier today when writing [1] I realized that this isn't really worth it
either.
So this afternoon I invented the very latest variant of Zooko's New File Format,
which doesn't allow "one mnetId points to two different versions of the file,
decodable by two different versions of the software" for *any* changes, not even
introducing a new erasure code algorithm.
I'm quite pleased with its simplicity and features, but I'm sending this in case
anyone wants to object that they really want a more complex format that allows
this kind of smooth-upgrading over certain changes such as switching erasure
codes. To re-iterate, the kind of "smooth-upgrading" that I mean is that you
can have a single mnetId which identifies a single file, but which can be used
to download and reconstruct that file in either of two different ways (the old
and the new).
--Z
[1] http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/mnet/mnet_new/doc/new_filesystem.html?rev=HEAD&content-type=text/html
-------------------------------------------------------
This SF.net email is sponsored by: Etnus, makers of TotalView, The debugger
for complex code. Debugging C/C++ programs can leave you feeling lost and
disoriented. TotalView can help you find your way. Available on major UNIX
and Linux platforms. Try it free. www.etnus.com
_______________________________________________
mnet-devel mailing list
mnet-devel at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mnet-devel
More information about the Mnet-devel
mailing list