mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-02-05 10:39:54 +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.
|
||
|
|