1

Тема: Пара ідей для розподіленого обчислення

1. Надійна BitTorrent-подібна файлова система (не BTFS).
Кожен учасник має надати певний об'єм для зберігання інформації в мережі; від об'єму і стабільності носія залежить рейтинг учасника. Початковий рейтинг відповідає 1/3 наданого місця.
Всі дані користувачів з високим рейтингом в системі зберігаються щонайменше на 3 носіях. Якщо носіїв стає 2, дані кимось копіюються до себе.
Дані зберігаються у вигляді (наприклад) 128KB кластерів даних. Кластери ідентифікуються за 1024-bit (128b) хешами; така довжина практично гарантує відсутність колізій. Якщо кілька людей викладають однакову інформацію (популярне відео, наприклад), то їхні рейтинги підвищуються. Якщо кластер не використовується ніким, всі 3 копії видаляються. Якщо рейтинг власника падає, його дані можуть бути видалені.
Кластери шифруються спільним відкритим ключем, причому перші 128 байт лишаються тільки у власника інформації. Решту даних без першого шматка розшифрувати неможливо. Таким чином, якщо кілька людей викладають однакову інформацію, про це відомо з хешу; але яку саме інформацію - знають лише вони, бо лише вони мають початкові байти.
Питання балансування такої мережі, обчислення рейтингу учасників, анонімності доступу і т.д. мені видаються технічними і вирішуваними.

2. Coin@home
Є купа проектів розподіленого обчислення, де можна надати ресурси свого домашнього комп'ютера для вирішення якоїсь спільної задачі, від пошуку позаземних цивілізацій до лікування раку.
З іншого боку, купа ресурсів вкладається зараз у майнінг - фактично, пошук розв'язків складних рівнянь методом перебору, який нікому, крім майнерів, не потрібен. Якби ресурси майнерів були використані на розподілені обчислення, ми б зараз, можливо, вже вилікували малярію та мали б термоядерну енергію.
Я бачу лише одну принципову проблему в коїнізації розподілених обчислень - PoW, proof-of-work. І мені здається, її можна вирішити вибірковими перевірками - якщо хтось стверджує, що розв'язав 128K задач, то достатньо перевірити рішення випадкових 16 з них, щоб прийняти це твердження. Тим більше, що різні сервери будуть перевіряти різні рішення, а одна знайдена помилка призведе до відкидання заявки та/або блокування гаманця.

Подякували: PRY, 221VOLT, leofun01, P.Y., Arete5

2

Re: Пара ідей для розподіленого обчислення

Наскільки я розумію, підрахунок рейтингів роздачі в існуючому вигляді, по-перше, потребує трекера (тобто, сервера — на DHT рейтингами не поміряєшся) і, по-друге, легко фальсифікується.

3 Востаннє редагувалося leofun01 (04.01.2019 19:18:44)

Re: Пара ідей для розподіленого обчислення

koala написав:

Кластери шифруються спільним відкритим ключем, причому перші 128 байт лишаються тільки у власника інформації. Решту даних без першого шматка розшифрувати неможливо.

Сподіваюсь ви плануєте використовувати зтискання даних до того як виділите 128 байт.
Бо якщо той перший кусок буде складатися з

Hex написав:

0D 0A 0D 0A 0D 0A ...

або ще краще з

Hex написав:

00 00 00 00 00 00 ...

то деякі дані буде дуже легко повитягувати.

koala написав:

2. Coin@home
Є купа проектів розподіленого обчислення...
... якщо хтось стверджує, що розв'язав 128K задач, то достатньо перевірити рішення випадкових 16 з них, щоб прийняти це твердження.

:o
Деякі задачі ставляться на обчислення не для того щоб підтвердити якусь гіпотезу, а щоб зформувати її. І поки гіпотеза { не підтверджена && не зпростована }, не можливо відповісти на питання чи була задача "розв'язана" правильно.
Або я щось не правильно зрозумів... *DONT_KNOW*

4

Re: Пара ідей для розподіленого обчислення

P.Y. написав:

Наскільки я розумію, підрахунок рейтингів роздачі в існуючому вигляді, по-перше, потребує трекера (тобто, сервера — на DHT рейтингами не поміряєшся) і, по-друге, легко фальсифікується.

Рейтинг тут - певне співвідношення між наданим для використання місцем та використаним місцем у інших. Якщо учасник стабільно відмовляє в наданні певних даних, то надане місце буде автоматично зменшуватися (бо як це воно "надане", якщо не надане).

leofun01 написав:

Сподіваюсь ви плануєте використовувати зтискання даних до того як виділите 128 байт.

Стискання має відбуватися до внесення даних в систему. А до виділення 128 байт буде відбуватися шифрування, тобто ситуації 0A 0D 0A 0D не буде взагалі.

leofun01 написав:

Деякі задачі ставляться на обчислення не для того щоб підтвердити якусь гіпотезу, а щоб зформувати її.

Усі задачі обчислень @home ставляться як "обробити певний об'єм даних за відомими алгоритмами". Тобто вихід однозначно визначається вхідними даними; можна, хіба що, якщо в розв'язку використовується рандомізація, подвоювати задачі з різними ініціалізаторами ГПВЧ.

Подякували: leofun011

5

Re: Пара ідей для розподіленого обчислення

Давно вже розмірковую над аналогічними ідеями — розподілене сховище на основі торентів, плюс інтегрована в нього криптовалюта, яка забезпечуватиме його життєздатність.

В принципі, для підтримання торента в життєздатному стані необов'язково міряти рейтинги роздачі — потрібна лише достатньо велика кількість сідерів, що для популярних роздач не проблема. Тобто, якимось чином треба зробити кожен торент «популярним». Варіант: зробити користувачів матеріально зацікавленими в його скачуванні. Якщо для майнингу криптовалюти використовувати не просто хеш-суми попередніх хеш-сум, а включати в обчислення випадково обрані за певним алгоритмом фрагменти файлів, опублікованих на торентах, то популярність такого торента має піднятися за рахунок майнерів, що його скачують. Ну і далі слід подумати про захист від можливих зловживань майнерів маніпуляціями з такими файлами, роздачею і т.д. — наприклад, не нараховувати грошей, якщо файлу в роздачі фактично нема.

6

Re: Пара ідей для розподіленого обчислення

koala написав:

1. Надійна BitTorrent-подібна файлова система (не BTFS).
Кожен учасник має надати певний об'єм для зберігання інформації в мережі; від об'єму і стабільності носія залежить рейтинг учасника. Початковий рейтинг відповідає 1/3 наданого місця.
Всі дані користувачів з високим рейтингом в системі зберігаються щонайменше на 3 носіях. Якщо носіїв стає 2, дані кимось копіюються до себе.

Тобто віддавши 3 Гб дискового простору, я зможу зберегти лише 1 Гб? Навіть RAID 1 вигідніший, не кажучи уже про RAID 5 чи 6. Може й у вашій файловій системі можна застосувати подібні алгоритми?

7

Re: Пара ідей для розподіленого обчислення

Torbins написав:

Тобто віддавши 3 Гб дискового простору, я зможу зберегти лише 1 Гб? Навіть RAID 1 вигідніший, не кажучи уже про RAID 5 чи 6. Може й у вашій файловій системі можна застосувати подібні алгоритми?

Ні, на жаль, не вийде - в розподіленій мережі буде важко збирати порXORений файл з кількох джерел одночасно.
Зате якщо файл потрібен багатьом учасникам мережі, то співвідношення покращується: ваш файл "переводиться в мережу", тобто активно він вам не доступний, зате ті 10 комп'ютерів, які його зберігають для вас і ще 1000 людей, дають співвідношення не 10:1, а 1:100.