]> Sergey Matveev's repositories - stargrave-blog.git/commit
Деревья Меркле в NNCP
authorSergey Matveev <stargrave@stargrave.org>
Wed, 30 Jun 2021 12:32:40 +0000 (15:32 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Wed, 30 Jun 2021 12:32:40 +0000 (15:32 +0300)
commit26d0fad8f0c8e523ec77c70dec244afc2c0e86e3
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904
parent96ec3a8db5f02dd84aa8d5c87396876e15d96213
Деревья Меркле в NNCP

http://www.nncpgo.org/Reliz-7_002e0_002e0.html
В новом релизе NNCP я наконец-то стал использовать деревья Меркле для
проверки целостности шифрованных пакетов. Как минимум, польза от этого
в том, что если мы докачали половинку файла, то прежде мы не могли
посчитать хэш файла без его полного чтения, хотя ведь половина файла
"прошла" через программу и данные мы видели. В NNCP реализация MTH
(Merkle Tree Hashing) имеет метод PrependFrom, который прочитает
недостающие данные до уже нам известных и увиденных.

Но текущая реализация далека от оптимальной с точки зрения расходов. В
памяти находятся все хэши всех блоков, что означает потребление памяти
под полгигабайта для проверки терабайтного файла. Плюс никакого
распараллеливания вычисления самого дерева. Но терабайты я не думаю что
многие передают, и делают это на дохлых (с малым объёмом памяти)
машинах. А BLAKE3 жутко быстрый, так что всё значительно быстрее будет в
любом случае.