- PVSM.RU - https://www.pvsm.ru -
InterPlanetary File System — это новая децентрализованная сеть обмена файлами (HTTP-сервер, Content Delivery Network [1]). О ней я рассказывал в статье "Межпланетная файловая система IPFS" [2].
Всем хороша идея IPFS но вот только был один недостаток у неё. Данные загружаемые в сеть копировались в хранилище блоков удваивая занимаемое ими место. Более того файл резался на блоки которые мало пригодны для повторного использования.
Появилась экспериментальная опция --nocopy
, которая избавляет от этого недостатка. Для того чтобы пользоваться ей необходимо выполнить несколько условий.
Также появился новый тип идентификаторов. Его мы тоже разберём.
Это опция заставляет IPFS использовать как источник блоков исходные файлы. Тем самым файлы не копируются в хранилище блоков и не занимают в 2 раза больше места.
Для использования этой опции выполним следующие действия:
необходимо включить Filestore
ipfs config --json Experimental.FilestoreEnabled true
в каталог ".ipfs"(он в каталоге пользователя) нужно сделать ссылку на каталог или файл который надо загрузить в сеть
Файл можно связать hardlink'ом:
fsutil hardlink ".ipfs[имя файла]" "[путь к файлу][имя файла]"
или
mklink /h ".ipfs[имя файла]" "[путь к файлу][имя файла]"
Каталог можно связать символьной ссылкой:
linkd ".ipfs[имя каталога]" "[путь к каталогу][имя каталога]"
или
mklink /j ".ipfs[имя каталога]" "[путь к каталогу][имя каталога]"
И теперь добавляем
ipfs add -w --nocopy ".ipfs[имя каталога или файла]"
Ключ -w
оборачивает цель в каталог тем самым сохраняя её имя.
Результатом будут идентификаторы CIDv1 и CIDv0 (мультихеш)
Теперь в магнит [4] или торрент [5] можно будет добавить WebSeed [6].
Для файла:
http://127.0.0.1:8080/ipfs/[идентификатор]/[имя файла]
http://ipfs.io/ipfs/[идентификатор]/[имя файла]
Для каталога:
http://127.0.0.1:8080/ipfs/[идентификатор]/
http://ipfs.io/ipfs/[идентификатор]/
Пример магнита c WebSeed
magnet:?xt=urn:btih:2F825A27112B0E5C89D20B656045920F1C10830C28&ws=https://ipfs.io/ipfs/QmPbs8syAxac39bcNuMLpHXnqjKUguqakCM8LN8sZVPD9R/Magnet-ссылка.txt
В связи с этими изменениями в IPFS появились RAW блоки. Ключ --nocopy
автоматически включает использование RAW блоков. Но можно включить этот режим и ключом --raw-leaves
. В связи с этим появился новый CID (Content IDentifier) или по русски "идентификатор контента".
Называется CIDv0 и обычно имеет постоянный префикс "Qm".
CIDv0 это просто мультихеш [7] в Base58
[varint ID хеша][varint длинна хеша][хеш]
Пример CIDv0: QmPbs8syAxac39bcNuMLpHXnqjKUguqakCM8LN8sZVPD9R
У RAW блоков свой CID. Его можно отличить по постоянному префиксу "zb2rh".
CIDv1 содержит в себе больше информации.
[префикс основания][varint версия CID][varint тип контента][varint ID хеша][varint длинна хеша][хеш]
Пример CIDv1: zb2rhe143L6sgu2Nba4TZgFMdPidGMA6hmWhK9wLUoVGWYsR7
Разберём его на части
z
— base58 Bitcoin [8] [префикс основания [9]]
base58: b2rhe143L6sgu2Nba4TZgFMdPidGMA6hmWhK9wLUoVGWYsR7
переводим в
HEX: 01 55 12 20 6D542257CBD1BE7FD0AE8914F42066BCBF1E79487EF67B959A86DBEE4670B386
01
— v1 [varint [10] версия CID [11]]55
— raw binary [varint тип контента [12]]12
— sha2-256 [13] [varint ID хеша [7]]20
— 32 байта [varint длинна хеша]6D542257CBD1BE7FD0AE8914F42066BCBF1E79487EF67B959A86DBEE4670B386
— sha2-256 digest [хеш]Опция --nocopy
очень помогает когда вы хотите поделиться с миром например дампом Википедии [14]. Или другими полезными но очень большими по объёму массивами информации.
Ссылки в Windows, символьные и не только [15]
ipfs command reference [16]
List of experimental IPFS features [17]
Автор: ivan386
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/detsentralizovanny-e-seti/257988
Ссылки в тексте:
[1] Content Delivery Network: https://ru.wikipedia.org/wiki/Content_Delivery_Network
[2] "Межпланетная файловая система IPFS": https://habrahabr.ru/post/314768/
[3] Image: https://habrahabr.ru/post/331010/
[4] магнит: https://ru.wikipedia.org/wiki/Magnet-%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B0
[5] торрент: https://ru.wikipedia.org/wiki/.torrent
[6] WebSeed: https://ru.wikipedia.org/wiki/BitTorrent_(%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB)#Web-.D1.81.D0.B8.D0.B4.D1.8B
[7] мультихеш: https://github.com/multiformats/multihash
[8] base58 Bitcoin: https://ru.wikipedia.org/wiki/Base58
[9] префикс основания: https://github.com/multiformats/multibase
[10] varint: https://github.com/multiformats/unsigned-varint
[11] CID: https://github.com/ipld/cid
[12] тип контента: https://github.com/multiformats/multicodec/
[13] sha2-256: https://ru.wikipedia.org/wiki/SHA-2
[14] дампом Википедии: https://dumps.wikimedia.org/ruwiki/
[15] Ссылки в Windows, символьные и не только: https://geektimes.ru/post/50878/
[16] ipfs command reference: https://ipfs.io/docs/commands/
[17] List of experimental IPFS features: https://github.com/ipfs/go-ipfs/issues/3397
[18] Публикуем сайт в межпланетной файловой системе IPFS: https://habrahabr.ru/post/316468/
[19] Хостим сайт в межпланетной файловой системе IPFS под Windows: https://habrahabr.ru/post/325176/
Нажмите здесь для печати.