mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-01-26 06:09:21 +00:00
46 lines
1.5 KiB
Plaintext
46 lines
1.5 KiB
Plaintext
|
|
We need a new name for this intentionally-vague block of data.
|
|
|
|
This block is a bencoded dictionary. All buckets hold an identical copy. The
|
|
hash of the serialized data is kept in the URI.
|
|
|
|
The download process must obtain a valid copy of this data before any
|
|
decoding can take place. The download process must also obtain other data
|
|
before incremental validation can be performed. Full-file validation (for
|
|
clients who do not wish to do incremental validation) can be performed solely
|
|
with the data from this block.
|
|
|
|
At the moment, this data block contains the following keys:
|
|
|
|
size
|
|
segment_size
|
|
num_segments
|
|
needed_shares
|
|
total_shares
|
|
|
|
codec_name
|
|
codec_params
|
|
tail_codec_params
|
|
|
|
share_root_hash
|
|
fileid
|
|
plaintext_root_hash
|
|
verifierid
|
|
crypttext_root_hash
|
|
|
|
|
|
Some pieces are needed elsewhere (size should be visible without pulling the
|
|
block, the Tahoe3 algorithm needs total_shares to find the right peers, all
|
|
peer selection algorithms need needed_shares to ask a minimal set of peers).
|
|
Some pieces are arguably redundant but are convenient to have present
|
|
(test_encode.py makes use of num_segments).
|
|
|
|
fileid/verifierid need to be renamed 'plaintext_hash' and 'crypttext_hash'
|
|
respectively.
|
|
|
|
The rule for this data block is that it should be a constant size for all
|
|
files, regardless of file size. Therefore hash trees (which have a size that
|
|
depends linearly upon the number of segments) are stored elsewhere in the
|
|
bucket, with only the hash tree root stored in this data block.
|
|
|