Представен е новият 0.8 версия на децентрализирана файлова система IPFS (InterPlanetary File System), която създава глобално версияно хранилище на файлове, разположено в рамките на P2P мрежа, изградена от системи на участниците. IPFS съчетава идеи, които вече са внедрени в такива системи като Git, BitTorrent, Kademlia, SFS и Web, и наподобява единен „рой“ BitTorrent (пирове, участващи в разпространението), обменящи Git обекти. IPFS се отличава с адресиране на базата на съдържанието, а не на местоположението и произволни имена. Кодът на референтната реализация е написан на Go и се разпространява под лицензите Apache 2.0 и MIT.
В новата версия:
- Реализирана е възможността за създаване на външни услуги за закрепване на данни на потребителите (pinning — свързване на данни с възел, за да се гарантира, че важните данни са запазени). Закрепените към услугата данни могат да имат отделни имена, различаващи се от идентификатора на съдържанието (CID). Възможно е търсене на данни както по име, така и по CID. За обработка на заявки за закрепване на данни е предложен API на IPFS Pinning Service, който може да се използва директно в go-ipfs. В командния ред за прикрепяне е предложена командата „ipfs pin remote“: ipfs pin remote service add mysrv https://my-service.example.com/api-endpoint myAccessToken ipfs pin remote add /ipfs/bafymydata —service=mysrv —name=myfile ipfs pin remote ls —service=mysrv —name=myfile ipfs pin remote rm —service=mysrv —name=myfile
- Ускорени са операциите по закрепване (pinning) и разкрепване (unpinning) на данни на локалния възел. Увеличаването на производителността и намаляването на потреблението на памет са особено забележими при извършване на операции по извеждане или промяна на системи с голям брой закрепвания.
- При формирането на URL адреси „https://“ за шлюзовете е добавена възможността за предаване на имена DNSLink чрез поддомейни. Например, за зареждане на името „ipns://en.wikipedia-on-ipfs.org“ вече е възможно да се използват линкове „https://dweb.link/ipns/en.wikipedia-on-ipfs.org“, а не само преди поддържаните, следната структура: „https://en-wikipedia—on—ipfs-org.ipns.dweb.link“, при която точките в оригиналните имена се заменят с символа „-“, а съществуващите символи „-“ се екранират с още един подобен символ.
- Разширена е поддръжката на протокола QUIC. За повишаване на производителността е предоставена възможността за увеличаване на получаващите буфери за UDP.
Напомняме, че в IPFS линкът за достъп до файл е пряко свързан със съдържанието му и включва криптографски хаш на съдържанието. Адресът на файла не може да бъде преназначен произволно, той може да се промени само след промяна на съдържанието. По аналогичен начин е невъзможно да се направи промяна в файла без промяна на адреса (старият вариант остава на предишния адрес, а новият ще бъде достъпен на друг адрес, тъй като хашът на съдържанието на файла ще се промени). Имайки предвид, че идентификаторът на файла се променя при всяка промяна, за да не се предават нови линкове всеки път, се предлагат услуги за свързване на постоянни адреси, които отчитат различните версии на файла (IPNS) или за фиксиране на псевдоним, по аналогия с традиционните ФС и DNS (MFS (Mutable File System) и DNSLink).
По аналогия с BitTorrent данните се съхраняват директно на системите на участниците, които обменят информация в P2P режим, без привързване към централизирани възли. При необходимост от получаване на файл с определено съдържание, системата намира участници, които имат този файл и го предоставя от техните системи на части в няколко потока. След като участникът зареди файла на своята система, той автоматично става една от точките за разпространение на него. За определяне на участниците в мрежата, на възлите на които присъства интересуващият контент, се използва разпределена хеш таблица (DHT). За достъп до глобалната ФС IPFS може да се използва протокол HTTP или да се монтира виртуална ФС /ipfs с помощта на модула FUSE.
IPFS помага за решаване на проблеми, като надеждност на съхранението (ако оригиналното хранилище бъде унищожено, файлът може да бъде изтеглен от системи на други потребители), противопоставяне на цензурата на съдържанието (за блокирането е необходимо да се блокират всички системи на потребители, на които има копие на данните) и организация на достъпа при липса на пряка връзка с интернет или при лошо качество на канала за комуникация (може да се изтеглят данни чрез най-близките участници в локалната мрежа). Освен съхранение на файлове и обмен на данни, IPFS може да се използва и като основа за създаване на нови услуги, например, за организиране на работа на сайтове, които не са свързани със сървъри, или за създаване на разпределени приложения.

Източник: opennet.ru
