Храните файл в XRP Ledger

Картинка вашего токена или любой другой файл записываются в тот же реестр, что и токен, а читаются с проверкой по отпечатку.

Приложение для Windows, которое записывает ваши файлы в реестр.

Кубы изображают фрагменты настоящего файла и появляются по мере чтения из реестра. Когда каждый блок проверен по отпечатку, рядом появляется сам файл.

Ссылки на метаданные умирают

Если NFT, MPT, DID или удостоверение хранит картинку и описание вне реестра, в записи есть только ссылка. Сам файл лежит в IPFS, на сервере эмитента или в корзине S3.

  • IPFS без закрепленияЗакрепление перестают оплачивать, и файл пропадает из IPFS.
  • Закрытый серверКомпания закрывается или переезжает, и по адресу приходит ошибка.
  • Закрытое хранилищеАккаунт в облаке закрывают, и файлы исчезают вместе с ним.

Эта запись остаётся в реестре, а файл по её ссылке можно потерять. С xrpl-file файл записан в тот же реестр транзакциями, которые нельзя изменить или удалить, и проверить его по отпечатку может любой, не доверяя ничьему серверу. Ссылка xrpl-file занимает 84 байта, а поле URI у NFT вмещает 256.

От файла до ссылки и обратно

  1. Слева файл, справа фрагменты, на которые он нарезан. Каждый фрагмент нарисован клеткой.

    Нарезка

    Файл режется на фрагменты по 1000 байт.

  2. Три фрагмента, каждый внутри своей транзакции.

    Запись в транзакции

    Каждый фрагмент записывается в отдельную транзакцию, в поле memo.

  3. Две группы фрагментов, каждая сведена к одному хэшу. Оба хэша ведут к одному манифесту.

    Отпечаток

    Каждые 1024 фрагмента образуют блок, а хэш блока попадает в список блоков. Последняя транзакция, манифест, хранит отпечаток всего списка. Хэш этой транзакции и есть ссылка.

  4. Сетка проверенных фрагментов, которые вместе складываются в картинку.

    Чтение и проверка

    Любой, у кого есть ссылка, получает фрагменты от узла XRP Ledger, собирает файл и сверяет каждый блок с отпечатком. Если файл не совпал с отпечатком, он не показывается. Сервер этого сайта в чтении не участвует.

Сколько это стоит

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

Таблица цен сейчас недоступна. Цифры есть и в файле данных price.json.

Навсегда и для всех

Удалить нельзя

Записанное в реестр остаётся в нём. Удалить или изменить его не может никто, ни вы, ни мы.

Читать может любой

Файл может прочесть любой. Данные реестра открыты всем, а ссылка не секрет.

Публикуйте только то, что готовы показывать всему миру навсегда: не пароли, не личные данные, не картинку, прав на которую у вас нет.

Разработчикам

Формат описан в спецификации. В репозитории лежат библиотека для .NET и модуль чтения для браузера.

Показать файл на своей странице

Добавьте скрипт и элемент. Скрипт закреплён на версии 1.2.0 и проверяется по значению integrity: если файл изменится, браузер не станет его выполнять.

Из npm, через jsDelivr

<script src="https://cdn.jsdelivr.net/npm/xrpl-file-element@1.2.0/xrpl-file-element.js"
        integrity="sha384-3Ng6D0oyDdNcgbs1hTua5zQaHdn4E/3o7gnxr0ecp2jVh2kP2KbJymnO++iWWvP+"
        crossorigin="anonymous" defer></script>
<xrpl-file src="xrpl-file://mainnet/9B1A9E33DBD9B445BFE2854D4D489DC860869D873AD36DA30A69DD19DDBC0DF5"></xrpl-file>

width и height задают размер, loading определяет, когда начнётся чтение, theme задаёт светлую или тёмную палитру, а node указывает узел, с которого читается файл. Полный список в README: Вставка файла.