Hash using two hashing functions than one, to drastically decrease the chances of a hash collision.

Use simple encryption for data security: simply XOR data with a unique key specific to each owner. Will work for both encoding & decoding.

Split files into blocks of fixed sizes.

Compare blocks of new files to those of old files; if match found, increment a counter and link to available block instead of storing a duplicate block in the system.

Read function (esp. in FUSE) can use an offset to read into the middle of a file (useful in audio/video playback: when the user seeks to the middle of the file). Offset can be divided by block size to get the block number, so only blocks starting from that number need be read from the network.