/practice

В практике должен доказать человек истинность, т. е. действительность и мощь своего мышления. // Карл Маркс "Тезисы о Фейербахе"

Primary LanguageC++

Регламент по проверочным.

В практике должен доказать человек истинность, 
т. е. действительность и мощь своего мышления.  
    Карл Маркс "Тезисы о Фейербахе" 

На каждой проверочной работе есть 5-7 задач и 5-7 языков программирования (C, Java, Go, Node, Python, Rust). Каждый сдающий должен выбрать клеточку в этой матрице. Python раздаём в последнюю очередь, кстати.

Задачи на среду 25е (тема - BitTorrent и деревья хэшей):

  1. создать дерево хэшей для файла, по спеке (hashtree)
  2. создать доказательство целостности для пакета данных (proof)
  3. проверить доказательство целостности для пакета (verify)
  4. подписать файл (sign)
  5. проверить подпись (check)

Требуется сделать задачу по спеке из репозитория. На занятии по BT, спека вдоль линий RFC7574, также https://research.swtch.com/tlog, на лекции будет подробное объяснение. Также см. реализацию bin numbers.

Сданная работа - это pull request в репозиторий, с имплементацией в файле с названием формата proof-ivanov.py, формат запуска

$ python proof-ivanov.py datafile 123

где 123 - номер пакета (файл разбит на пакеты по 1KB). Читает datafile и его дерево хэшей в файле datafile.hashtree, пишет в файл datafile.123.proof. То есть, форматы файлов описаны и все реализации должны быть совместимы. Собственно, так и будет производиться проверка. Протоколы и совместимость - это основа децентрализованных систем.

Имплементации, прошедшие проверку, засчитываются в табличку. Присылать PR можно в течение 2х недель после лекции. Но проще, конечно, в тот же день, дополнительных объяснений задачи в чате даваться не будет.