Випуск глобальної децентралізованої файлової системи IPFS 0.6

Alex Alex 22 червня 2020
Випуск глобальної децентралізованої файлової системи IPFS 0.6

Опубліковано випуск децентралізованої файлової системи IPFS 0.6 (InterPlanetary File System), що утворює глобальне сховище файлів з підтримкою версій яке можна розгорнути у формі P2P-мережі, утвореної з систем учасників. IPFS комбінує ідеї, раніше реалізовані в таких системах, як Git, BitTorrent, Kademlia, SFS і Web, і нагадує єдиний "рій" BitTorrent (піри, які беруть участь в роздачі), обмінюється Git-об'єктами. IPFS відрізняється адресацією за вмістом, а не місцем розміщення і довільним іменем. Код еталонної реалізації написаний на мові Go і поширюється під ліцензією Apache 2.0 і MIT.

Нова версія примітна включенням за замовчуванням транспорту на базі протоколу QUIC, який становить собою надбудову над протоколом UDP, що підтримує мультиплексування декількох з'єднань і забезпечує методи шифрування, еквівалентні TLS/SSL. У IPFS сокет для приймання UDP-з'єднань автоматично запускається на тій же адресі й мережевому порту, що та обробнику транспорту на базі TCP. QUIC застосовується як для вхідних, так і вихідних з'єднань, при цьому при підключенні до нових вузлів в разі недоступності QUIC здійснюється відкат на використання TCP.

Другим важливим нововведенням стала підтримка захищеного транспорту NOISE, заснованого на протоколі Noise і що розвивається в рамках libp2p, модульного мережевого стека для P2P-додатків. Після початкового узгодження з'єднання весь подальший обмін даними між учасниками шифрується і захищається від підслуховування. NOISE прийшов на зміну транспорту SECIO, але  пріоритетним методом шифрування з'єднань між вузлами поки продовжує застосовуватися TLS 1.3. NOISE досить простий в реалізації й позиціюється як універсальний крос-платформний транспорт, який може бути реалізований на різних мовах програмування.

У новому випуску також надана можливість додавання власних сторінок "404 Not Found" і додана опціональна підтримка методу кодування Base36, який оптимальний для буквено-цифрових даних без відмінностей в регістрі символів, таких як імена доменів (при використанні Base32 ключі Ed25519 IPNS на два байти перевищують ліміт на розмір піддомену, а при Base36 вміщуються в ліміт). Крім того, в налаштування додана опція "peering", яка визначає список вузлів для підключення, підтримки з'єднання і перепідключення з метою визначення "липких" зв'язків між пірами що часто використовувуються.

Нагадаємо, що в IPFS посилання для доступу до файлу безпосередньо пов'язане з його вмістом та включає криптографічний хеш вмісту. Адресу файлу неможливо довільно перейменувати, він може змінитися лише після зміни вмісту. Аналогічно неможливо внести зміни у файл без зміни адреси (старий варіант залишиться на колишній адресі, а новий буде доступний через іншу адресу, оскільки хеш від вмісту файлу зміниться). Враховуючи те, що ідентифікатор файлу змінюється при кожній зміні, щоб кожен раз не передавати нові посилання надаються сервіси для прив'язки постійних адрес, що враховують різні версії файлу (IPNS), або закріплення псевдоніма за аналогією з традиційними ФС і DNS (MFS (Mutable File System) і DNSLink).

За аналогією з BitTorrent дані безпосередньо зберігаються на системах учасників, які обмінюються інформацією в режимі P2P, без прив'язки до централізованих вузлів. При необхідності отримати файл з певним вмістом система знаходить учасників, у яких є даний файл і віддає його з їх систем частинами в кілька потоків. Після завантаження файлу на свою систему учасник автоматично стає однією з точок за його роздачі. Для визначення учасників мережі на вузлах яких присутній цікавий контент використовується розподілена хеш-таблиця (DHT). Для доступу до глобальної ФС IPFS може використовуватися протокол HTTP або монтуватися віртуальна ФС /ipfs за допомогою модуля FUSE.

IPFS допомагає вирішити такі завдання як надійність зберігання (якщо вихідне сховище буде виведено з ладу, файл можна завантажити з систем інших користувачів), протистояння цензурування контенту (для блокування потрібно заблокувати всі системи користувачів, на яких є копія даних) і організація доступу при відсутності прямого з'єднання до інтернету або при поганій якості каналу зв'язку (можна завантажити дані через найближчих учасників в локальній мережі). Крім зберігання файлів і обміну даними IPFS може використовуватися як основа для створення нових сервісів, наприклад, для організації роботи сайтів, не прив'язаних до серверів, або для створення розподілених додатків.

Коментарі (0)

    Ще немає коментарів

Щоб залишити коментар необхідно авторизуватися.