Skip to content

Musubi Kotodama упаковки

Musubi - управляющий пакетами для исходных пакетов Kotodama. Он предоставляет разработчикам рабочий процесс, похожий на Cargo, для совместного использования совместимых функций Kotodama при сохранении идентичности пакета, связанной с именными пространствами SORA и Iroha вместо глобальной таблицы имен первого прихода.

Используйте Musubi, когда вам нужно:

  • публиковать вновь используемые исходные библиотеки Kotodama
  • точные переходные зависимости от источника в Musubi.lock
  • восстановление источника зависимости от проверенных обязательств по архиву SoraFS
  • подключить именное пространство пакета к псевдонимам контракта dapp в том же именном пространстве
  • проверять, публиковать, извлекать пакеты или прозвища через реестр в цепочке;

Названия пакетов

Использование канонических идентификаторов упаковки:

text
namespace/package

Использование точных ссылок на выпуск:

text
namespace/package@version

Перед пространством имен не существует лидера @. Разделитель @ предназначен для задокумента.

Сегмент namespace соответствует суфиксу, используемому Kotodama дapp контрактными псевдонимами:

Идентификатор упаковкиФорма связанного контракта под псевдонимом
universal/mathrouter::universal
dex.universal/swap-corerouter::dex.universal

Намеровые пространства имеют форму <dataspace> или <domain>.<dataspace>. Когда в пакете есть ссылка dapp, Musubi проверяет, использует ли каждый связанный контрактный псевдоним тот же Suffix namespace, что и на пакете.

Проявление

Пакет начинается с Musubi.toml:

toml
[package]
namespace = "dex.universal"
name = "swap-core"
version = "0.1.0"

[dependencies.math]
package = "std.universal/math"
version = "^1.0.0"

[exports]
functions = ["quote"]

[dapp]
namespace = "dex.universal"
contracts = ["router::dex.universal"]

Зависимости могут использовать точные версии, требования к опеке, требования к тильде, дикие карты, такие как 1.*, или сравнительные списки, такие как>=1.0.0,<2.0.0.

Musubi.lock записывает выбранный переходный график из реестра на цепочке. Каждый запертый узел сохраняет свой канонический пакет ref, выбранное требование, SoraFS манифест-дигест, хэш исходного архива, количество байтов, количества файлов, экспортируемые функции, детерминистический план исходных архивов и прозвища зависимостей. Краткие псевдонимы решаются до того, как они войдут в файл замка.

Местный рабочий процесс

От корня рабочего пространства Iroha вверх по течению, запустить Musubi через Cargo:

bash
cargo run -p musubi -- init --namespace dex.universal --name swap-core --dapp
cargo run -p musubi -- add std.universal/math --version '^1.0.0' --alias math
cargo run -p musubi -- install --config client.toml
cargo run -p musubi -- build src/lib.ko --manifest-out target/lib.contract.json
cargo run -p musubi -- pack \
  --car-out source.car \
  --sorafs-manifest-out manifest.norito \
  --source-plan-out source-plan.norito

Используйте install --offline для написания неразрешенного файла блокировки для зависимостей точных версий без запроса узла. Используйте install --locked в CI для отказа от устаревшего файла блокировок.

build соединяет запасные источники зависимости путем переписки вызовов, таких как math::add(), к детерминистским внутренним названиям функций Kotodama. Он отвергает вызовы к функциям, которые зависимость не экспортировала. Библиотеки Musubi v1 предназначены только для функций: источники зависимости, содержащие государственные декларации, триггеры, блоки kotoba, константы или другие нефункциональные элементы контракта, отклоняются.

Доставка источника архивов

Musubi может найти исчезающие источники зависимости при решении или позже через подкоманды кеша:

bash
cargo run -p musubi -- install --config client.toml --fetch \
  --provider-payload math.payload

cargo run -p musubi -- cache import math --source-root ../math
cargo run -p musubi -- cache fetch math --provider-payload math.payload

При живых доставках шлюзов используются одна или более спецификаций поставщика шлюзов SoraFS:

bash
cargo run -p musubi -- install --config client.toml --fetch \
  --gateway-provider 'name=hot-a,provider-id=1111111111111111111111111111111111111111111111111111111111111111,base-url=https://gw.example,stream-token=BASE64,package=math'

Файлы полезной нагрузки провайдера и провайдеры шлюзов являются взаимоисключающими для одной операции по доставке. Если отсутствует более одного заблокированного пакета, объедините каждого провайдера шлюзов с package=<dependency-alias>, package=<namespace/package@version>, package=<namespace/package> или manifest=<64-hex SoraFS manifest digest>.

Ворота . base-url и privacy-url значения должны быть использованы https:// По умолчанию. локальные тестовые шлюзы могут использовать http://localhost, http://127.0.0.1, или http://[::1] только с --gateway-allow-insecure-localhost. Токены потока являются учетными знаками для запуска и не записываются в Musubi.lock.

Издательство

pack вычисляет детерминистический BLAKE3-256 исходный архив хэш плюс исходный байт и количество файлов. Когда --car-out, --sorafs-manifest-out, или --source-plan-out Это также создает детерминистическую SoraFS CAR полезная нагрузка, SoraFS манифестации, и Musubi план исходного архива из одного и того же набора исходных файлов.

Перед публикацией используйте сухой пробег:

bash
cargo run -p musubi -- publish --config client.toml --dry-run

Без --dry-run, publish записывает дефолтные артефакты в .musubi/dist/<namespace>/<name>/<version>/, опционально загружает манифест и полезную нагрузку через Torii Это ... SoraFS конечный пункт накопительной установки с --upload, регистрирует генерируемые SoraFS Пин, и подает PublishMusubiRelease через конфигурированный Iroha Клиент.

Опубликованные публикации должны включать в себя:

  • непустый архив канонического источника
  • детерминистический план архива источника
  • по меньшей мере одна экспортированная функция Kotodama
  • записи о зависимости, которые не выбирают вытянутые выпуска
  • dapp-ссылка, при наличии которой контрактные псевдонимы совпадают с именным пространством пакета;

Вопросы по регистру и жизненный цикл

Поиск и проверка в регистре с помощью:

bash
cargo run -p musubi -- search swap --config client.toml
cargo run -p musubi -- versions dex.universal/swap-core --config client.toml
cargo run -p musubi -- alias resolve swap --config client.toml

Янкинг скрывает выпуск от нового разрешения, но поддерживает воспроизводимость существующих файлов блокировки:

bash
cargo run -p musubi -- yank dex.universal/swap-core@0.1.0 \
  --reason "bad archive" \
  --config client.toml \
  --dry-run

Musubi избегает глобального заполнения имен, сделав namespace/package каноническим именем пакета. Публикация в пространство имен должна быть разрешена той же собственностью или моделью делегированных разрешений, используемой для этого пространства имен dapp Kotodama . Курированные глобальные короткие прозвища отделены от собственности пакета: SetMusubiShortAlias требует разрешения на CanSetMusubiShortAlias, а целевой пакет должен уже иметь по крайней мере один активный выпуск.

Поверхности Iroha

Musubi использует инструкции первого класса Iroha и запросы:

Поверхность .Цель .
PublishMusubiReleaseПубликуйте неизменный пакет.
YankMusubiReleaseОтметьте существующую выпускную запись как вытянутую.
SetMusubiShortAliasПривязать выбранный глобальный короткий псевдоним к идентификатору пакета.
AssertMusubiReleaseExistsТребуется наличие конкретной пакетной версии.
FindMusubiReleaseByRefПриведите выпуск по точной упаковке.
FindMusubiPackageVersionsПеречислить версии для идентификатора пакета.
FindMusubiPackageReleasesПеречислить резюме выпуска для идентификатора пакета.
SearchMusubiPackagesПоиск резюме пакета по пространству имен и тексту.
FindMusubiShortAliasByNameРаскройте выбранный короткий псевдоним.

Torii раскрывает Musubi HTTP Семейство маршрутов /v1/musubi/. Относится к агенту MCP инструменты выявлены как iroha.musubi. псевдонимы. Torii конечные точки и ссылка на запрос для более широкого API Карта.