SORA Nexus Услуги
SORA Nexus добавляет сервисные самолеты, ориентированные на приложение вокруг Iroha 3. Эти услуги не являются отдельными бухгалтерскими книгами. Они закреплены за сообщениями мирового государства Iroha, манифестами Norito, документами о управлении и семействами маршрутов Torii.
Доступность зависит от создания узла и профиля сети. Используйте /openapi на целевом узле как авторитетный список включенных маршрутов.
Карта компонентов
| Компонент | Роль | Основные поверхности |
|---|---|---|
| Soracloud | Развертывание приложений, хостинг-сервисы, частная модель / состояние рабочего времени и контроль жизненного цикла сервиса. | /v1/soracloud/, /api/, iroha app soracloud ... |
| Внутри | Soracloud разместил HTTP время выполнения сервисных пересмотров, которые требуют живого самолета HTTP. | Soracloud конфигурация запуска, объявления о возможностях хоста, реплика состояния запуска |
| SoraNet | Конфиденциальность и транспортное перекрытие для цепочек, эстафеты, VPN, сеансы подключения и маршрутов потокового вещания. | Метаданные маршрута /v1/connect/, /v1/vpn/, SoraNet |
| Доступность данных (DA) | Доказательства наличия, обязательства и слой целенаправленности для полезных нагрузок, указанные в полосах Nexus, манифестах SoraFS и потоках доказательств. | /v1/da/, FindDaPinIntent, [sumeragi.da] |
| SoraFS | Контент-адресная ткань для хранения манифестов, полезных нагрузок CAR, финированного контента, шлюзов и потоков подтверждения восстановленности. | /v1/sorafs/, /sorafs/, FindSorafsProviderOwner |
| SoraDNS | Детерминистическое наименование и уровень аттестации решений для услуг и контента, размещенных в SORA. | /v1/soradns/, /soradns/, события каталога решителей |
| Атай | Корридор фиатов и расчетов активов на уровне приложений, поддерживаемый коренными депозитарными записями, а не отдельной книжкой. | OpenAssetEscrow, FindAssetEscrow*, EscrowEventFilter, Kotodama escrow_* построенные |
Общие потоки
Хостированное приложение Split
Типичное приложение для смешанного плана использует все части вместе:
- Статические активы фронтэнда упакованы и закреплены в SoraFS.
- Общественный хозяин, например
<app>.sora, регистрируется через SoraDNS. - маршруты Soracloud
/api/v1/searchили/api/v1/streamк службе Inrou HTTP. - маршруты Soracloud
/api/authи/api/v1/userк детерминированным управляющим IVM. - Клиенты, которые нуждаются в конфиденциальности, могут получить тот же контент или маршрут API через схему SoraNet.
| Путь . | Подъемный самолет | Почему ? |
|---|---|---|
/ | SoraFS статическое содержание | Каширование коренного и шлюзового контента для воспроизводства |
/assets/* | SoraFS статическое содержание | Содержание адресованных активов и прозрачные доказательства |
/api/auth* | Soracloud IVM | Реплей-безопасный автор и слот бросает вызов состояние |
/api/v1/user* | Soracloud IVM | Мутации состояния , чувствительные к управлению |
/api/v1/search* | Soracloud Внутри | Прямой HTTP сервис, кешировка, SSE или состояние коллектора |
Публикация содержания
Публикация SoraFS производит прочные артефакты до того, как название указывает на них:
- Создайте полезную нагрузку или каталог.
- Запакируйте его в архив CAR и составьте план.
- Создать манифест Norito с информацией о политике и управлении пин.
- Подача манифеста на Torii.
- Зарегистрируйте намерение или обязательство о наличии пин DA, когда целевой профиль требует ясных доказательств.
- Привязать манифест к названию SoraDNS или к статическому маршруту переднего конца Soracloud.
Частная доставка или маршрут трансляции
SoraNet может сидеть перед SoraFS или Soracloud:
- Клиент решает имя или манифест.
- Справочник охраны или маршрутный манифест выбирают входные и выходные релеи.
- Трафик заполняется и отправляется через SoraNet схему.
- Выходный реле достигает шлюза SoraFS, потока Torii или маршрута Soracloud.
Атай
Aitai - это коридор приложений SORA для расчетов в стиле рынка, где покупатель и продавец координируют внецепочки платежи, а Iroha контролирует хранение активов на цепочке. для новых потоков хранения цифровых активов она должна использовать родную семью инструкций по эскрою вместо контрактного счета в собственности.
Нативный поручитель хранит опекунство в бухгалтерской книге. OpenAssetEscrow, покупатель принимает и отмечает платеж вне цепочки с AcceptAssetEscrow и MarkEscrowPaymentSent, и продавец выпускает с ReleaseAssetEscrow Если покупатель и продавец не согласны, любая из сторон может открыть спор и разрешить его с CanResolveEscrowDispute может разделить запертую сумму.
Для полного жизненного цикла, общих блокировок активов, анонимных поручительств, запросов, событий и примеров Rust см. Native Asset Escrow.
| Атайская поверхность | Используйте его для |
|---|---|
OpenAssetEscrow, AcceptAssetEscrow, MarkEscrowPaymentSent, ReleaseAssetEscrow, CancelAssetEscrow | Прозрачные предложения цифровых активов, включая потоки расчетов в номиналах XOR. |
OpenAnonymousAssetEscrow, AcceptAnonymousAssetEscrow, MarkAnonymousEscrowPaymentSent, ReleaseAnonymousAssetEscrow, CancelAnonymousAssetEscrow | Защищенные предложения используют доказательства приложения для финансирования и закрытия движений. |
OpenEscrowDispute, ResolveEscrowDispute, OpenAnonymousEscrowDispute, ResolveAnonymousEscrowDispute | Внесение споров и разрешение в судебном порядке. |
FindAssetEscrowById, FindAssetEscrowsBySeller, FindAssetEscrowsByBuyer, FindAssetEscrowsByStatus | Страницы о состоянии приложения, работы по согласованию и инструменты поддержки. |
EscrowEventFilter | Живые транспарентные подписки по удостоверению личности, продавцу, покупателю, статусу или виду событий. |
Kotodama escrow_open_offer, escrow_accept, escrow_mark_payment_sent, escrow_release, escrow_cancel, escrow_open_dispute, escrow_resolve_dispute | Kotodama контрактные звонки, поддерживаемые с помощью V1 депозитарных систем |
Для общественности Taira или Minamoto использование, относиться к внецепочке платежной железной дороге и любому рабочему процессу поддержки или судебного разбирательства как к политике применения. Iroha записывает состояние ухода за ребенком, события жизненного цикла, хеш доказательств и окончательное движение активов; оно не проверяет фиатное расчеты самостоятельно.
Проверяйте целевой узел
Прежде чем использовать примеры с этой страницы, подтвердите, что семья маршрутов существует на узле, который вы ориентируете:
export TORII_URL=https://taira.sora.org
curl -fsS "$TORII_URL/openapi.json" \
| jq '.paths | keys[] | select(test("^/v1/(soracloud|sorafs|soradns|connect|vpn|da)/"))'
curl -fsS "$TORII_URL/status" | jq .Если /openapi.json не подвергается воздействию профиля, попробуйте /openapi. Точная доступность маршрута зависит от функций построения и конфигурации сети.
Taira Читание только для проверки курения
Общественный конечный пункт Taira полезен для проверки страницы чтения, но не используйте его для мутирующих примеров, если вы не управляете авторизованной учетной записью и не намерены менять состояние.
export TORII_URL=https://taira.sora.org
curl -fsS "$TORII_URL/status" \
| jq '{version: .build.version, peers, blocks, lanes: (.teu_lane_commit | length)}'
curl -fsS "$TORII_URL/v1/connect/status" | jq '{enabled, sessions_active}'
curl -fsS "$TORII_URL/v1/vpn/profile" \
| jq '{available, relay_endpoint, supported_exit_classes}'
curl -fsS "$TORII_URL/v1/sorafs/storage/state" \
| jq '{bytes_capacity, bytes_used, pin_queue_depth, por_inflight}'
curl -fsS -H 'Accept: application/json' "$TORII_URL/v1/soracloud/status" \
| jq '.control_plane | {service_count, services: [.services[] | {service_name, current_version}]}'Taira может раскрывать маршруты специальных для развертывания самолетов управления, которые не перечислены в OpenAPI Карта пути. /openapi в качестве первичного генерируемого API контракт, а затем подтверждение любого маршрута непосредственно до документации его как живой.
Soracloud
Soracloud - это план управления приложениями SORA. Он отслеживает пакеты развертывания, пересмотры услуг, маршрутизацию, состояние внедрения, авторитетные записи конфигурации, зашифрованные секреты сервиса, протоколы модельного реестра, частные сеансы вывода и расписки за время выполнения.
Soracloud использует два самолета выполнения:
| Самолет исполнения | Время выполнения | Используйте его для |
|---|---|---|
DeterministicService | Ivm | Автор, состояние хранилища, сертифицированные чтения, заказанные пользователи почтовых ящиков, мутации, чувствительные к управлению |
HttpService | Inrou | Живая HTTP APIs, коллекторная работа, услуги с поддержкой кеша, SSE, потоки с помощью браузера |
Контрольная плоскость является авторитетной. Распоряжения по развертыванию, модернизации, отказу, конфигурации, секретности, модели и статусу отправляются через Torii и читают обязательное мировое состояние; они не зависят от отдельного локального зеркала CLI. Общественный маршрутизатор основан на самом длинном префиксе, поэтому один зарегистрированный хост может разделить трафик между хостинговыми маршрутами HTTP и детерминистическими маршрутами API.
Разделить приложение
В шаблоне разделенного приложения создается статический фронтэнд плюс один хостированный живой API и один детерминистический сервис хранилище/API:
iroha app soracloud app init \
--template split-app \
--app-name solswap_indexer \
--app-version 0.1.0 \
--public-host solswap-indexer.sora \
--output-dir ./apps/solswap-indexer
iroha app soracloud app local-plan \
--manifest ./apps/solswap-indexer/app_manifest.json
iroha app soracloud app doctor \
--manifest ./apps/solswap-indexer/app_manifest.jsonlocal-plan распечатывает раздел маршрута, манифесты детского обслуживания, пути сценариев рабочего пространства и ожидаемый режим публикации в фронт-энд. doctor подтверждает локальный договор выпуска до того, как вы включите Torii.
Развертывание и проверка состояния приложения
export SORACLOUD_TORII_URL=https://<soracloud-enabled-torii>
iroha app soracloud app deploy \
--manifest ./apps/solswap-indexer/app_manifest.json \
--torii-url "$SORACLOUD_TORII_URL"
iroha app soracloud app status \
--manifest ./apps/solswap-indexer/app_manifest.json \
--torii-url "$SORACLOUD_TORII_URL"Для уже развернутой службы используйте команды по охвату обслуживания:
iroha app soracloud status \
--service-name solswap_indexer_live \
--torii-url "$SORACLOUD_TORII_URL"
iroha app soracloud rollback \
--service-name solswap_indexer_live \
--target-version 0.1.0 \
--torii-url "$SORACLOUD_TORII_URL"Конфигурация и секретные материалы
Soracloud конфигурация и секретные записи являются частью авторитетного состояния развертывания. Развертывание, обновление и отказ от загрузки закрываются при отсутствии или несоответствии необходимых конфигураций или секретных связей с активными манифестами.
iroha app soracloud config-set \
--service-name solswap_indexer_live \
--config-name indexer/public_config \
--value-file ./config/public-config.json \
--torii-url "$SORACLOUD_TORII_URL"
iroha app soracloud secret-set \
--service-name solswap_indexer_live \
--secret-name indexer/api_key \
--secret-file ./secrets/api-key.envelope.json \
--torii-url "$SORACLOUD_TORII_URL"Используйте CLI для получения точных знаков, требуемых вашим профилем:
iroha app soracloud config-set --help
iroha app soracloud secret-set --helpВнутренние
Inrou - хостированное время выполнения HTTP, используемое Soracloud. Узло Iroha с встроенными проектами времени выполнения Soracloud, допущенными в состояние Soracloud План локальной материализации, запускает присвоенные копии хостинг-сервиса в качестве вертикальных сервисов и сообщает о состоянии выполнения репликации обратно в авторитетную модель.
Используйте Inrou для рабочей нагрузки, которая требует живой поверхности HTTP, такой как сборщик-тяжелый APIs, потоки SSE, обработки с поддержкой кеша или услуги с помощью браузера.
Требования к срокам эксплуатации
- Время выполнения контейнерного манифеста должно быть
Inrou. - Площадь выполнения манифеста обслуживания должна быть
HttpService. HttpService + Inrouтребует точно одногоPersistentRootLeaseVolume, установленного на/.- Воспроизведённые услуги Inrou также нуждаются в совместном обслуживании или конфиденциальном арендном хранилище, когда они сохраняют изменчивый общий состояние.
- Узлы производственного хостинга должны рекламировать реальные возможности Inrou вместо того, чтобы работать только в качестве прокси.
Явный фрагмент
Пример ниже показывает форму двух манифестаций. Это фрагмент, а не полный пакет развертывания.
// container_manifest.json
{
"schema_version": 1,
"runtime": { "runtime": "Inrou", "value": null },
"bundle_path": "/bundles/solswap-indexer.inrou",
"entrypoint": "/app/bin/launch-indexer.sh",
"args": [],
"env": {
"RUST_LOG": "info",
},
"inrou": {
"schema_version": 1,
"guest_os": { "guest_os": "DebianSlim", "value": null },
"guest_images": {
"x86_64": {
"kernel_image_path": "/inrou/x86_64/vmlinux",
"rootfs_image_path": "/inrou/x86_64/rootfs.ext4",
"initrd_image_path": null,
},
"aarch64": {
"kernel_image_path": "/inrou/aarch64/vmlinux",
"rootfs_image_path": "/inrou/aarch64/rootfs.ext4",
"initrd_image_path": null,
},
},
},
"lifecycle": {
"start_grace_secs": 60,
"stop_grace_secs": 30,
"healthcheck_path": "/api/indexer/v1/health",
},
}// service_manifest.json
{
"schema_version": 1,
"service_name": "solswap_indexer_live",
"service_version": "0.1.0",
"execution_plane": { "execution_plane": "HttpService", "value": null },
"replicas": 2,
"route": {
"host": "solswap-indexer.sora",
"path_prefix": "/api/v1/search",
"service_port": 8080,
"visibility": { "visibility": "Public", "value": null },
"tls_mode": { "tls": "Required", "value": null },
},
"lease_volumes": [
{
"volume_name": "root_disk",
"kind": {
"lease_volume": "PersistentRootLeaseVolume",
"value": null,
},
"storage_class": { "storage_class": "Warm", "value": null },
"mount_path": "/",
"max_total_bytes": 8589934592,
},
{
"volume_name": "index_state",
"kind": { "lease_volume": "ServiceLeaseVolume", "value": null },
"storage_class": { "storage_class": "Warm", "value": null },
"mount_path": "/var/lib/solswap-indexer",
"max_total_bytes": 1073741824,
},
],
}Во время эксплуатации каждый объем аренды, установленный в аренду, подвергается воздействию с помощью переменных окружающей среды, полученных от названия объема:
SORACLOUD_LEASE_VOLUME_ROOT_DISK_DIR
SORACLOUD_LEASE_VOLUME_ROOT_DISK_MOUNT_PATH
SORACLOUD_LEASE_VOLUME_INDEX_STATE_DIR
SORACLOUD_LEASE_VOLUME_INDEX_STATE_MOUNT_PATHSoraNet
SoraNet - это перекрытие конфиденциальности и транспорта. Он обеспечивает маршруты на основе реле для трафика, которые не должны напрямую подключаться к целевому шлюзу или сервису. Конструкция транспорта использует входные, средние и выходные роли реле, транспорт QUIC, гибридный рукопожатие на основе шума, переговоры о возможностях, метаданные релевого каталога и заполненные элементы фиксированного размера.
В развертывании Nexus, SoraNet может перевозить доставку контента, трафик шлюза, сессии VPN или Connect и маршруты потоковой передачи Norito. Записи каталога могут отмечать реле, которые поддерживают norito-stream, что позволяет клиентам предпочитать маршруты, подходящие для Torii RPC или потокового трафика.
Конфигурация потоковой передачи
Профиль Nexus позволяет обеспечить SoraNet для маршрутов потоковой передачи:
[streaming]
feature_bits = 0b11
[streaming.soranet]
enabled = true
exit_multiaddr = "/dns/torii/udp/9443/quic"
padding_budget_ms = 25
access_kind = "authenticated"
provision_spool_dir = "./storage/streaming/soranet_routes"
provision_spool_max_bytes = 0
provision_window_segments = 4
provision_queue_capacity = 256Используйте access_kind = "read-only" для маршрутов контента, которые не требуют аутентификации зрителей. Используйте authenticated, когда выходной эстафета должен обеспечить выдачу билетов или идентификацию зрителя перед переходом на Torii или хостинг-сервис.
SoraNet-Знание SoraFS Привезить
В настоящее время SoraFS повозка CLI может выпускать локальный прокси-манифест и spool SoraNet метаданные маршрута для расширений браузера или SDK адаптеры:
sorafs_cli fetch \
--plan artifacts/payload_plan.json \
--manifest-id 7bb2...9d31 \
--provider name=alpha,provider-id=9f5c...73aa,base-url=https://gw-alpha.example.org/,stream-token="$(cat alpha.token)" \
--output artifacts/payload.bin \
--json-out artifacts/fetch_summary.json \
--local-proxy-manifest-out artifacts/proxy_manifest.json \
--local-proxy-mode bridge \
--local-proxy-norito-spool storage/streaming/soranet_routes \
--local-proxy-kaigi-spool storage/streaming/soranet_routes \
--local-proxy-kaigi-policy authenticated \
--max-peers=2 \
--retry-budget=4Поставщик резюме сообщений, расписки на части, местные метаданные прокси и эффективные настройки маршрута, используемые для доставки.
Наличие данных (DA)
DA - это слой доказательств доступности для полезных нагрузок, которые слишком большие, слишком чувствительные к конфиденциальности или слишком специфические для обслуживания, чтобы размещать их непосредственно в мировом состоянии. Он регистрирует детерминистические обязательства и обязательства по извлечению, чтобы валидаторы, шлюзы и клиенты могли договориться о том, какие байты были обещаны, какая политика применяется и какие доказательства наблюдались.
DA не заменяет Kura или SoraFS:
- Kura сохраняет завершенный блок-поток и консенсусные данные восстановления.
- SoraFS хранит и обслуживает байты, адресованные содержанию, полезные нагрузки CAR и манифесты.
- DA записывает обязательства, политику доказательства, открытия доказательств и намерения пин, которые позволяют планировать эти байты, проводить аудит и связывать их с состоянием книги.
Использование DA при подаче заявления или Nexus Lane нуждается в главном обещании о том, что данные вне цепочки остаются доступными. Обычные примеры включают обязательства по полезной нагрузке полос для расчетных потоков, SoraFS Пин-намерения для опубликованного содержания, пакеты доказательств, которые должны быть сохранены для последующей проверки; и артефакты применения, общественное состояние которых должно быть расщеплением, а не полным полезным грузом.
жизненный цикл
| Этап . | Что записано ? |
|---|---|
| Намерение | Билет, проявленная ссылка, псевдоним, линия/эпоха/ссылка последовательности, политика хранения или цель репликации. |
| Приверженность | Переваривать материал, который связывает манифест, полезную нагрузку полосы, пакет доказательств или корень содержания с записью, видимым в регистре. |
| Доказательства | Голоса по доступности, открытия для доказательств, аттестации поставщиков или другие профильные данные, принятые целевой сетью |
| Вопрос | Проверка фиксированного намерения через FindDaPinIntentByTicket, FindDaPinIntentByManifest, FindDaPinIntentByAlias или FindDaPinIntentByLaneEpochSequence. |
Типичный поток публикаций, поддерживаемый DA, является:
- Создать или получать полезную нагрузку за пределами WSV, например файла SoraFS CAR или полезной нагрузки полосы Nexus.
- Hash и описывайте полезную нагрузку в манифесте Norito или учете обязательств по маршруту.
- Поставьте манифест, намерение или обязательство через
/v1/da/*, когда семейство маршрутов включено, или через подписанный маршрут транзакции сети. - Пусть валидаторы или провайдеры доступности собирают доказательства, требуемые политикой активного подтверждения.
- Спросите о полученном намерении или обязательстве перед продвижением псевдонима, доказательства расчетов или маршрута шлюза, который зависит от полезного груза.
Алгоритмическая модель
DA превращает полезную нагрузку в подписанный, защищенный от воспроизведения, блок-индексированный обязательство. Важные алгоритмы являются детерминистическими, так что валидаторы и шлюзы могут пересчитывать те же дигесты из тех же байтов.
- Канонизировать представленную полезную нагрузку. Torii принимает запрос по потреблению с помощью
(lane_id, epoch, sequence), байтов полезной нагрузки, метаданных сжатия, размера кусочек, профиля удаления, Политика хранения и подпись подателя. Уз разжимает gzip, deflate или Zstandard полезные нагрузки при запросе, а затем проверяет, что каноническая длина байта равнаtotal_size. - Подтвердить параметры полосы и части. полоса должна присутствовать в каталоге полос Nexus.
chunk_sizeдолжен иметь не нулевую мощность двух, по меньшей мере двух байтов. и не превышает установленного максимума. Профиль удаления должен включать фрагменты данных и по меньшей мере два фрагмента паритета. В каталоге ленты выбирается схема доказательства, либоmerkle_sha256, либоkzg_bls12_381. - Применить политику сети. Нод навязывает конфигурированную репликационную и базовую линию хранения для класса blob. Публичные метаданные должны оставаться простым текстом; метаданные, предназначенные только для управления, зашифруются с помощью ключа метаданных управления, созданного нодом, прежде чем они будут написаны в манифесте.
- Каноническая полезная нагрузка состоит из фиксированного профиля, полученного от
chunk_size. Torii вычисляет показатель полезной нагрузки, корень дерева доказательства восстановленности и обязательства в разрезе. BLAKE3 обязательства по своим байтам. - Добавьте обязательства по удалению.
data_shards. Отсутствующие клетки в финальной полосе заполнены на нуле для расчета паритета. RS(16) паритет создает рядовые/глобальные паритетные фрагменты;row_parity_stripesДобавить паритет полосы в стиле столбцов по матрице. BLAKE3 пищеварение мелких индейцевu16символы. - Создайте манифест.
DaManifestV1записывает полосу, эпоху, класс блоков, кодек, переписку полезной нагрузки, корень частицы, размер частицы, профиль удаления, политику хранения, стоимость аренды, обязательства частицы, необязательные обязательства IPA, метаданные и время выпуска. Билет хранения является детерминистическим: узел сначала хэширует шаблон манифеста с пустым билетом, а затем записывает этот отпечаток пальца обратно в качестве финальногоstorage_ticket. - Отклонить конфликты воспроизведения. Ключ воспроизведения -
(lane_id, epoch, sequence, manifest_fingerprint). Дубликат с одним и тем же отпечатком пальца не имеет возможности. Отклоняется устаревшая последовательность или та же последовательность с другим отпечатом пальца. - Выпустите подписанные артефакты. Torii вычисляет PDP обязательства, подписывает
DaIngestReceipt, создаетDaCommitmentRecord, и записывает для ясных, PDP обязательство, запись об обязательствах, график обязательств, намерение настойки, файл расписки и журнал расписки. Квитанция курсора продвигается монотонно на(lane_id, epoch).
Запись об обязательствах - это то, что содержат блоки.
- лента, эпоха и последовательность
- Блоб звонка ID и хэш канонического манифестирования
- схема прочности полосы
- кусочек корня
- необязательное обязательство KZG для полос KZG
- PDP/доказательный дигест
- класс хранения и билет на хранение
- Подпись подтверждения Torii DA
Перед тем, как блок внедрит записи DA, путь сборки блока подтверждает пакет:
(lane_id, epoch, sequence)должна быть уникальной внутри пакета.- Проявленные хэши должны быть не нулевыми и уникальными внутри пучка.
- Схема подтверждения обязательств должна соответствовать политике конфигурированной полосы.
- Меркельские полосы отказываются от обязательств KZG; полосы KZG требуют обязательства, не составляющих нулевого значения KZG.
- Интенты пин канонизируются, сортируются и фильтруются по полосе, гашированному манифесту, билету на хранение, учетной записи владельца и правилам коллизии под названием.
В заголовке блоков хранятся хэши для DA Доказательства политики, обязательств и намерений. в обязательном пакете также выявлено корне Merkle , чьи листья являются хаши канонического Norito-кодируемый DaCommitmentRecord ценности. Родительские узлы расшифруют соединение левых и правых детей; необычный лист продвигается неизменным на следующий слой.
Проверка доказательств
/v1/da/commitments/prove может представить доказательство одного обязательства в блоке. Доказательство содержит обязательство, высоту блока, индекс в пакете, хэш пакета, длина пакета, корне Merkle и родственный путь. проверки:
- Указанный хэш подтверждения совпадает с хэшем обязательств заголовка блоков DA.
- Высота блок-доказательства совпадает с заголовком указанного блока.
- Индекс находится в пределах, и обязательство равняется объему зачислений по этому индексу.
- Политика пропускной способности принимает обязательство.
- Складывая родственный путь с листья обязательства, восстанавливается поставленный корень.
- Реконструированный корень равен кусочком корня.
Это доказывает, что конкретное обязательство по доступности было включено в конкретную полезную нагрузку блоков; это не подтверждает, что все копии в настоящее время онлайн. Проверка доступности в режиме реального времени проводится отдельно с помощью проверки поставщиков SoraFS, проверок PDP/PoTR или доказательств наличия, определяемых по профилю.
Взаимодействие консенсуса
DA соединяется с Sumeragi через надежную трансляцию (RBC), но это не второй протокол окончательности. RBC распространяет и восстанавливает полезные нагрузки предложений: Предлагающий объявляет о проведении сессии для (height, view, payload_hash), переменных блоков, и сигналов READY/DELIVER отслеживает, соблюдали ли достаточное количество validators одну и ту же полезную нагрузку.
В Iroha 3 равный считает доступную ожидаемую полезную нагрузку блока, если либо:
- локальный ожидающий блок гаширует байты к ожидаемой нагрузке гаширования, или
- RBC восстановил полезную нагрузку совпадающую с хэшем блока, высотой, просмотром и хэшем полезной нагрузки.
Если ни одно из этих условий не соответствует требованиям, сообщение missing_local_data продолжает пытаться восстановить полезную нагрузку через RBC или блокировать синхронизацию, и сообщает о DA Вход в состояние и телеметрию. В текущей реализации эти сигналы DA являются рекомендательными для окончательности: блок все еще завершается из сертификата обязательства плюс соответствующая местная полезная нагрузка, не из отдельного сертификата кворума DA.
Время действия DA расширяет окна восстановления. Эффективное время выполнения кворума DA получается из настроенного блока и времени выполнения обязательств, затем умножается на sumeragi.advanced.da.quorum_timeout_multiplier. Время выполнения доступности составляет max(quorum_timeout, availability_timeout_floor_ms) * availability_timeout_multiplier. Прежде чем истечет срок доступности, узел поддерживает восстановление полезной нагрузки и избегает преждевременного перепланирования; после его окончания обычные пути восстановления и изменения просмотра могут продолжиться.
Заметки оператора
К консенсусным профилям Iroha 3 относятся распространение полезной нагрузки, поддерживаемое RBC, защитные манифестирования, проверка пакета DA и телеметрия восстановления. Типовой шаблон раскрывает пределы [sumeragi.da] для обязательств и расширенных доказательств на блок, плюс умножители задержки времени [sumeragi.advanced.da] для кворума и поведения доступности.
Для обнаружения маршрута начинайте с документа OpenAPI узла:
curl -fsS "$TORII_URL/openapi.json" \
| jq '.paths | keys[] | select(startswith("/v1/da/"))'Используйте ссылка на запрос для текущего DA названия запросов, и шаблон конфигурации сверстников для местных [sumeragi.da] Кнопки подвергнуты воздействию вашей конструкции.
SoraFS
SoraFS - это децентрализованная ткань хранения адресованного контента. Он упаковывает байты в детерминистические куски, архивы CAR и манифесты Norito, которые связывают корни контента, Провайдеры хранилищ рекламируют способность и доступность контента, в то время как шлюзы проверяют манифестации и обязательства по размещению контента.
Типичное использование SoraFS включает в себя статические активы приложений, сборки документации, зонные пакеты, ссылки на модели или артефакты и пакеты доказательств управления. Данная модель Iroha раскрывает события шлюза SoraFS и запрос FindSorafsProviderOwner для разрешения собственности поставщика.
Собрать, объявить, подписать и представить
cargo run -p sorafs_car --features cli --bin sorafs_cli -- \
car pack \
--input ./dist \
--car-out artifacts/site.car \
--plan-out artifacts/site.chunk-plan.json \
--summary-out artifacts/site.car-summary.json
cargo run -p sorafs_car --features cli --bin sorafs_cli -- \
manifest build \
--summary artifacts/site.car-summary.json \
--manifest-out artifacts/site.manifest.to \
--manifest-json-out artifacts/site.manifest.json \
--pin-min-replicas=3 \
--pin-storage-class=warm \
--pin-retention-epoch=42
SIGSTORE_ID_TOKEN=$(oidc-client fetch-token) \
cargo run -p sorafs_car --features cli --bin sorafs_cli -- \
manifest sign \
--manifest artifacts/site.manifest.to \
--bundle-out artifacts/site.manifest.bundle.json \
--signature-out artifacts/site.manifest.sig
cargo run -p sorafs_car --features cli --bin sorafs_cli -- \
manifest submit \
--manifest artifacts/site.manifest.to \
--chunk-plan artifacts/site.chunk-plan.json \
--torii-url "$TORII_URL" \
--resolve-submitted-epoch=true \
--authority=<i105-account-id> \
--private-key-file ./secrets/authority.ed25519 \
--summary-out artifacts/site.manifest.submit.json \
--response-out artifacts/site.manifest.submit.bodyЕсли /v1/sorafs/pin/register не маршрутизируется на целевом узле, CLI может вернуться к подписанному /transaction заявлению и ждать состояния трубопровода терминала.
Проверьте и приведите
cargo run -p sorafs_car --features cli --bin sorafs_cli -- \
proof verify \
--manifest artifacts/site.manifest.to \
--car artifacts/site.car \
--chunk-plan artifacts/site.chunk-plan.json \
--summary-out artifacts/site.verify.json
sorafs_cli fetch \
--plan artifacts/site.chunk-plan.json \
--manifest-id <manifest-digest-hex> \
--provider name=primary,provider-id=<provider-id-hex>,base-url=https://gateway.example.org/,stream-token="$(cat provider.token)" \
--output artifacts/site.fetch.tar \
--json-out artifacts/site.fetch.jsonПроверки доказательства восстановительности
Операторы могут осмотреть и инициировать проверки доказательств для поставщиков хранения:
sorafs_cli por status \
--torii-url "$TORII_URL" \
--manifest <manifest-digest-hex> \
--status=failed \
--limit=20
sorafs_cli por trigger \
--torii-url "$TORII_URL" \
--manifest <manifest-digest-hex> \
--provider <provider-id-hex> \
--reason=latency_probe \
--samples=48 \
--auth-token artifacts/challenge_token.toSoraDNS
SoraDNS - это определённый слой имен для услуг и контента SORA. Он нормализует имена, соединяет обновления каталога решений в Iroha, и распространяет подписанные зоны или пакеты решений через SoraFS. Резолюторы и шлюзы проверяют аттестатные документы резолютора, прежде чем доверять метаданным обнаружения.
Для доступа к браузеру SoraDNS получает хосты шлюзов из зарегистрированного FQDN. Зарегистрированный хост пустоты остается каноническим источником приложения, в то время как развернутые профили шлюзов выставляют маршруты браузера и обратных путей Torii для этого источника.
Формы хостинга
| Форма | Пример | Цель . |
|---|---|---|
| Поход тщеславия | https://<fqdn>/<path> | Каноническое приложение URL записано в манифестах и записках об освобождении |
| Taira браузерный шлюз | https://<fqdn>.mon.taira.sora.net/<path> | Публичный браузерный шлюз для активного псевдонима |
| Torii обратный путь | https://taira.sora.org/soradns/<fqdn>/<path> | Torii Дебаг и обратный маршрут для активного псевдонима |
| Canonical hash gateway | <base32(blake3(name))>.gw.sora.id | Детерминистическая идентификация шлюза и проверка GAR |
Fallback /soradns/<alias>/... не является предпочтительным общественным URL. Инструментация, манифесты приложений и конфигурация фронтэнда должны предпочитать сам хост пустоты. Если псевдоним не активен на Taira, браузерный шлюз или обратный путь могут вернуться к 404 или потерпеть неудачу в TLS до начала маршрутизации приложений.
Проводные ворота хостов
import {
deriveSoradnsGatewayHosts,
hostPatternsCoverDerivedHosts,
} from '@iroha/iroha-js'
const derived = deriveSoradnsGatewayHosts('docs.sora')
console.log(derived.canonicalHost)
console.log(derived.prettyHost)
const taira = deriveSoradnsGatewayHosts('solswap-indexer.sora', {
prettySuffix: 'mon.taira.sora.net',
})
console.log(taira.prettyHost)
const patterns = [
derived.canonicalHost,
derived.canonicalWildcard,
derived.prettyHost,
]
console.log(hostPatternsCoverDerivedHosts(patterns, derived))GAR полезные нагрузки должны охватывать канонический хэш хост, каноническая дикая карта, и выбранный красивый хост.
Принесите снимок резюме Резолютор
curl -i "$TORII_URL/v1/soradns/directory/latest"
soradns_resolver directory fetch \
--record-url "$TORII_URL/v1/soradns/directory/latest" \
--directory-url https://gateway.example.org/soradns/directory/latest.car \
--output ./state/soradns-directory
soradns_resolver rad verify \
--rad ./state/soradns-directory/rad/resolver-a.noritoGateways должны отклонить резюсеры , чьи разрешение удостоверения документа является отсутствуют, истекают срок действия, не подписываются или не закреплены в последнем каталоге Merkle root В сети, где еще не опубликован каталог решителей. /v1/soradns/directory/latest может вернуть 404 даже если маршрут включен.
Общественная DNS Делегация
SoraDNS производность хоста не заменяет обычную интернет-делегацию DNS. Если публичное имя DNS должно указывать на шлюз SoraDNS:
- для субдоменов опубликовать CNAME в выбранном красивом хостере
- для названий вершин, используйте записи ALIAS/ANAME или A/AAAA в шлюзе anycast IPs
- хранить канонический хэш-хост под доменом шлюза SoraDNS для проверки GAR;
FHE и UAID
Поверхности, относящиеся к FHE, доступные для услуг Nexus, включают:
iroha_crypto::fhe_bfvреализует детерминистическую поддержку BFV для оценки скалярного шифрового текста. Резолюция идентификатора используетBfvIdentifierPublicParametersиBfvIdentifierCiphertext, где слот 0 хранит длину входных байтов, а позднее слоты хранят один зашифрованный байт каждый.- Soracloud модели государственных и рабочих схем FHE шифровая рабочая нагрузка текста с наборами управляемых параметров управления, политиками выполнения, обязательствами в области шифрового текста, конвертами запросов и просьбами о раскрытии.
Маршрут идентификатора BFV используется для регистрации с сохранением конфиденциальности. Клиент может отправить шифрованный идентификатор в решителя Torii. Решатель оценивает он в соответствии с политикой активного идентификатора получает OpaqueAccountId и выдает квитанцию ClaimIdentifier. Затем связывает эту квитанции с UAID, прикрепленной к целевому счету.
В настоящее время UAID В данной модели, мы можем определить, что это значит. UniversalAccountId подкреплено хэшем и отображается как uaid:<hash>. Парассеры принимают либо uaid:<hash> или сырое 64-хексовое переваривание. Account и NewAccount включать в себя необязательные uaid и opaque_ids Регистрация в режиме запуска приводит к выпуску один на один UAID- к счету индекс, отклоняет двойные или столкнувшиеся непрозрачные идентификаторы и отвергает непрозрачные индикаторы без UAID. Всякий раз, когда UAID При изменении учетной записи, время запуска восстанавливает связки пространственного каталога данных для этого UAID.
Пространственный каталог манифестирует возможности прикрепления к UAID. Сборник AssetPermissionManifest названия UAID, пространство данных, эпоха активации и необязательной истечения срока действия, а также заказанные записи разрешения/отклонения по пространству данных, программе, методу, активу, и AMX Оценка - отрицание-выигрыш: первый соответствующий отказ отклоняет запрос, в противном случае последнее согласование разрешает кандидата проверяется по отношению к любому пределу суммы. Публикация, истечение срока действия и отмена этих манифестов охраняется CanPublishSpaceDirectoryManifest.
По состоянию на Soracloud FHE реализованные схемы:
| Схема | Что он контролирует? |
|---|---|
SoraStateBindingV1 с FheCiphertext | Заявляет, что значения под префиксом государственного ключа являются FHE шифровыми текстами. |
FheParamSetV1 | Название схемы, бэкэнд, цепочка модулей, степень полиномий, количество слотов, цель безопасности, жизненный цикл и переваривание параметров. |
FheExecutionPolicyV1 | Ограничает размер шифрового текста, размер простого текста, количество ввода/вывода, глубину умножения, вращения, загрузку и режим округления. |
FheGovernanceBundleV1 | Сочетает один параметр, установленный с одной политикой исполнения для проверки приема. |
FheJobSpecV1 | Описывает детерминистическую работу Add, Multiply, RotateLeft или Bootstrap над ключами и обязательствами по состоянию шифрового текста. |
CiphertextQuerySpecV1 | Запросы содержат только шифрованный текст по службе, обязательности, префиксу ключа, пределу результатов, уровню метаданных и дополнительному доказательству включения. |
DecryptionRequestV1 | Просит раскрытие для одного шифрового текста обязательства в соответствии с политикой расшифровки. |
FheJobSpecV1::validate_for_execution проверяет, согласуются ли задачи, политика выполнения и параметры перед принятием. rotate и bootstrap требуют точно одного ввода, а запрашиваемая глубина, количество ротаций, количество bootstraps, количество вводов, байты полезной нагрузки и размер детерминистического выхода должны оставаться в пределах границ политики.
UAID не является шифровым текстом и не самой политикой FHE. Это стабильная якорь возможностей учетной записи, используемая для поиска учетной записи , непрозрачных идентификационных требований и связей Space Directory, которые разрешают поток сервиса или пространства данных. Схемы FHE регулируют зашифрованное принятие и выполнение полезной нагрузки отдельно через наборы параметров, политики исполнения, обязательства по шифрованию текста и политику расшифровочного органа.
Соответствующие поверхности Torii включают в себя:
/v1/identifier-policies/v1/identifiers/resolve/v1/accounts/{account_id}/identifiers/claim-receipt/v1/identifiers/receipts/{receipt_hash}/v1/accounts/{uaid}/portfolio/v1/space-directory/uaids/{uaid}/v1/space-directory/uaids/{uaid}/manifests/v1/soracloud/model/run-private/v1/soracloud/model/run-private/finalize/v1/soracloud/model/decrypt-output
Граница публичных метаданных явно определена в схемах: UAID связывания, непрозрачные идентификационные записи, жизненный цикл манифеста, дигесты ключевого состояния, размеры шифрового текста, обязательства с шифровым текстом, названия политики, версии набора параметров, операции задач, ключи выхода состояния, Идентификационные простые тексты, расшифрованное состояние, вводы и выводы модели, а также секретные ключи FHE находятся за пределами этих публичных записей запросов.
Операционный контрольный список
- Подтверждение включенных семей услуг с
/openapiна целевом узле Torii. - Обращайтесь с манифестами развертывания Soracloud, манифестациями SoraFS, записями каталога решителей SoraDNS, записками каталога реле SoraNet и записями пин-интентов или обязательствами по доступности DA как с артефактами, чувствительными к управлению.
- Используйте один и тот же профиль SORA Nexus последовательно на всех validator в одной сети.
- Сохраняйте объемы корневого и совместного аренды Inrou в манифестах, вместо того, чтобы полагаться на ad hoc узло-местные пути.
- Используйте проверку доказательств SoraFS перед продвижением псевдонимного содержания.
- Монитор SoraNet ошибки в рукопожатии, DA кворум или сроки доступности; SoraFS отказы от входа, SoraDNS RAD свежесть, и Soracloud Развертывание здоровья.
- Для публичного использования Taira или Minamoto начните с Свяжитесь с SORA Nexus базами данных .
См. также: