-
Notifications
You must be signed in to change notification settings - Fork 108
Link same file from diffrent block trees as solid big raw block. #42
Comments
Ivan, two questions on this:
compared to:
|
|
@ivan386 this won't solve the problem of Denial of Service that the size limit aims to solve. Let's say I have a hash, you tell me that it is very big raw blob and send me the "sub-hashes". I fetch those sub-hashes (which could be gigabytes) to just find out that they don't hash to the hash I initially asked for. Unless I am missing something? |
GT (and my translate): For sources of a large block("zb2rhR0R0R0R0...R0R0R0R0"), the peer requests the data directly. Example:
RU: У источников большого блока ("zb2rhR0R0R0R0...R0R0R0R0") данные запрашиваются напрямую. Пример:
|
At this moment ipfs can create many root and leaves hashes for same file. It's problem for big files.
We have different root and leaves hashes. At the same time entire file have only one sha256 hash
In Base58 CID will be: zb2rhWpFEmhVJ7H1myjjsuJn5h1CpQ4s2rnZ1us496ksy4kJY And i propose to use that cid for linking between different block trees and allow to get raw data from one tree for another. |
Closing due to staleness as per team agreement to clean up the issue tracker a bit (ipld/team-mgmt#28). This doesn't mean this issue is off the table entirely, it's just not on the current active stack but may be revisited in the near future. If you feel there is something pertinent here, please speak up, reopen, or open a new issue. [/boilerplate] |
GT:
Problem:
IPLD allows you to divide the file into blocks of different sizes and bind them differently. As a result, for the same file there can be a lot of variants of trees and, accordingly, hashes.
Decision:
If the file is divided into raw blocks. Into the root block, the hash of the entire file is written as if it were one large raw block. Accordingly, this hash is additionally announced to the network.
The client receiving the root block additionally searches for the source of the entire file by its hash and checks it by hash of the parts in the root block.
If the file has been fully loaded then it is rechecked by its RawLink. If RawLink does not match then the correct RawLink is written to the root block.
Original [RU]:
Проблема:
IPLD позволяет делить файл на блоки разного размера и по разному связывать их. В итоге для одного и того же файла может быть множество вариантов деревьев и соответственно хешей.
Решение:
Если файл делиться на сырые блоки в корневой блок записывается хеш всего файла как если бы это был один большой сырой блок. Соответственно этот хеш дополнительно анонсируется в сеть.
Клиент получив корневой блок дополнительно ищет источники файла целиком по его хешу и проверяет его по хешам частей в корневом блоке.
Если файл был полностью загружен то перепроверяется его RawLink. Если RawLink не совпадает то в корневой блок записывается правильный RawLink.
protocol buffers format
GT:
RawLink is CIDv1 the whole file as a raw block. It is used to find additional data sources for the file.
Original [RU]:
RawLink это CIDv1 всего файла как сырого блока. Он используется для поиска дополнительных источников данных файла.
GT:
Example:
The first participant publishes the file by selecting the block size of 131072 bytes. And gets a CIDv0 of the root block: QmAAAA...AAAA
Original [RU]:
Пример:
Первый участник публикует файл выбрав размер блока в 131072 байт. И получает CIDv0 корневого блока: QmAAAA...AAAA
GT:
The second participant publishes the file by selecting the block size of 262144 bytes. And got a CIDv0 of the root block: QmBBBB...BBBB
Original [RU]:
Второй участник публикует файл выбрав размер блока 262144 байт. И получил CIDv0 корневого блока: QmBBBB...BBBB
GT:
At both one and the same file which has a CIDv1 zb2rhR0R0R0R0...R0R0R0R0. This CIDv1 is written in RawLink.
The third participant received the QmAAAA...AAAA block and additionally searches the network for the sources of the block zb2rhR0R0R0R0...R0R0R0R0.
He finds the second participant by the CIDv1 zb2rhR0R0R0R0...R0R0R0R0 and asks him for the parts of the block zb2rhR0R0R0R0...R0R0R0R0 which are checked with hashes(CIDv1 Links) in the block QmAAAA ... AAAA.
Original [RU]:
У обоих один и тотже файл который имеет хеш zb2rhR0R0R0R0...R0R0R0R0. Этот хеш записан в RawLink.
Третий участник получил блок QmAAAA...AAAA и дополнительно ищет в сети источники блока zb2rhR0R0R0R0...R0R0R0R0.
Он находит второго участника по хешу zb2rhR0R0R0R0...R0R0R0R0 и запрашивает у него части блока zb2rhR0R0R0R0...R0R0R0R0 которые проверяет хешами(CIDv1 Links) в блоке QmAAAA...AAAA.
The text was updated successfully, but these errors were encountered: