Stage 2 of 7 · Decide
Dropbox-Style File Sync Service: Store content once, describe versions separately
A user edits a 2 GB video, changing a small region near the end. The first version stores the whole file as one mutable object. The next version must avoid retransmitting unchanged content and must remain readable while the new one is being uploaded.
What you need to know
Split file bytes into bounded blocks and identify each block by a cryptographic hash. A version manifest stores an ordered list of block IDs plus file metadata. Immutable blocks are simple to retry and cache; mutable meaning lives in the version manifest, not inside the block store.
Check
Which representation best supports large-file edits and retries?For a large upload, the client first sends its proposed block list. The service returns which hashes are already durable; the client uploads only the missing blocks with bounded concurrency. After a disconnect, it can repeat that negotiation and resume. The server does not need to trust a remembered session to know which bytes exist: it checks the durable block index again.
Content hashes are identifiers and integrity checks, not authorization tokens. A block store still needs a policy for who may read a hash; otherwise a guessed or leaked identifier can expose data across users.