издаване на децентрализирана файлова система (InterPlanetary File System), създаваща глобално версионирано хранилище на файлове, разгръщано под формата на P2P мрежа, образувана от системите на участниците. IPFS комбинира идеи, вече реализирани в такива системи като Git, BitTorrent, Kademlia, SFS и Web, и наподобява един „рой“ BitTorrent (пиронове, участващи в раздаването), обменящи Git-обекти. IPFS се отличава с адресиране по съдържание, а не по място на съхранение и произволни имена. Кодът на еталонната реализация е написан на език Go и под лицензите Apache 2.0 и MIT.
В новата версия е направено отключване по подразбиране на транспорта , на мястото на който в предишното издание беше предложен транспорт , на протокола и развиван в рамките на модулен мрежови стек за P2P приложения . Като резервен транспорт е оставен TLSv1.3. На администраторите на възли, използващи стари версии на IPFS (Go IPFS < 0.5 или JS IPFS < 0.47), се препоръчва да актуализират софтуера, за да избегнат намаляване на производителността.
В новата версия също така е осъществен преход към използване по подразбиране на ключове ed25519 вместо RSA. Поддръжката на старите RSA-ключове е запазена, но новите ключове сега ще бъдат генерирани с използване на алгоритъма ed25519. Използването на вградени отворени ключове ed25519 решава проблема с съхранението на отворени ключове, например, за верификация на подписани данни при използване на ed25519 е достатъчна информацията за PeerId. Имената на ключа в IPNS-пътищата сега се кодира с използване на алгоритъма base36 CIDv1 вместо base58btc.
В допълнение към промените в типа ключове по подразбиране, в IPFS 0.7 е добавена възможността за ротация на идентификационните ключове. За смяна на ключа на възела сега може да се изпълни команда «ipfs key rotate». Освен това, са добавени нови команди за импортиране и експортиране на ключове («ipfs key import» и «ipfs key export»), които могат да бъдат използвани за резервно копие, както и команда «ipfs dag stat» за извеждане на статистика за DAG (Разпределени Ациклични Графове).
Напомняме, че в IPFS линкът за достъп до файла е пряко свързан с неговото съдържание и включва криптографски хеш на съдържанието. Адресът на файла не може да се преименува произволно, той може да се промени единствено след промяна на съдържанието. Аналогично, не е възможно да се направи промяна във файла, без да се промени адресът (старата версия ще остане на предишния адрес, а новата ще бъде достъпна на друг адрес, тъй като хешът на съдържанието на файла ще се промени). С оглед на това, че идентификаторът на файла се променя при всяка промяна, за да не се предават нови линкове всеки път, се предоставят услуги за свързване на постоянни адреси, отчитат различни версии на файла (), или закрепване на псевдоним, подобно на традиционните ФС и DNS ( (Mutable File System) и ).
Подобно на BitTorrent, данните се съхраняват пряко на системите на участниците, които обменят информация в P2P режим, без привързване към централизирани възли. При необходимост за получаване на файл с определено съдържание, системата намира участници, които имат този файл и го предоставя от техните системи на части в няколко потока. След като участникът е изтеглил файла на своята система, той автоматично става една от точките за разпространение. За определяне на участниците в мрежата, на възлите които присъства интересното съдържание, разпределена хеш таблица (). За достъп до глобалната ФС IPFS може да се използва протокол HTTP или да се монтира виртуална ФС /ipfs с помощта на модула FUSE.
IPFS помага за решаване на проблеми като надеждно съхранение (ако основното хранилище спре да работи, файлът може да бъде изтеглен от системите на други потребители), противодействие на цензурирането на съдържанието (за да се блокира, е необходимо да се блокират всички системи на потребители, на които има копия на данните) и организация на достъпа в отсъствие на директна интернет връзка или при лошо качество на канала (данните могат да бъдат изтеглени чрез най-близките участници в локалната мрежа). Освен съхранението на файлове и обмена на данни, IPFS може да се използва и като основа за създаване на нови услуги, например, за организиране на работата на сайтове, не свързани със сървъри, или за създаване на разпределени .
Източник: opennet.ru
