Skip to content

Torii Окончательные точки ​

Torii Это HTTP, SSE, и WebSocket шлюз для Iroha 3. Он служит как для учетной записи APIs и конечных пунктов оператора.

Действующие правила протокола:

  • канонический бинарный формат - Norito
  • Многие конечные точки также поддерживают JSON, когда вы отправляете Accept: application/json
  • показатели выставлены в формате Prometheus

Для получения подробностей о формате, обсуждении контента, флагах макетов, хэшах схемы и руководства Norito RPC см. ссылку Norito.

Общие цели ​

Окончательный моментФорматЦель
POST /transactionNoritoПредставьте подписанную транзакцию
POST /queryNoritoОтправить подписанный запрос
GET /eventsWebSocketПодпишитесь на потоки событий
GET /block/streamWebSocketПоток обязательных блоков
GET /peersJSONСписок сверстников, раскрытых Torii
GET /healthJSONКонечная точка легкой жизненности
GET /api_versionJSONПо умолчанию API версия
GET /statusJSONРезюме о статусе операторов на высоком уровне
GET /metricsПрометейПрометейский крап-концовый пункт
GET /schemaJSONСнимок схемы модели данных , выполненный узлом
GET /openapi или GET /openapi.jsonJSONOpenAPI документ для активного Torii HTTP маршруты
GET /v1/parametersJSONСнимок параметров узла
GET /v1/node/capabilitiesJSONСпособность узлов и метаданные модели данных
GET /v1/api/versionsJSONПоддерживаемые версии Torii API
GET /v1/events/sseSSEПоток событий для долгоживущих клиентов
GET /v1/time/nowJSONСнимок узлового стенового часа
GET /v1/time/statusJSONСостояние синхронизации времени

/openapi является авторитетным списком конечных точек для ведущего узла. создать функции и конфигурацию времени запуска, поэтому генерируемые клиенты должны предпочитать живое OpenAPI Документ по списку маршрутов, скопированный вручную. Torii API консоль чтобы загрузить этот живой документ, тестировать JSON маршруты, копия curl запросы, и генерировать клиентский код из текущей схемы.

Попробуйте просмотреть маршруты Taira ​

Общая Taira тестовая сеть раскрывает ту же поверхность Torii JSON, которую клиенты приложений используют для изучения только на чтении. Эти команды не требуют ключей:

bash
TAIRA_ROOT=https://taira.sora.org

curl -fsS "$TAIRA_ROOT/status" \
  | jq '{blocks, txs_approved, txs_rejected, queue_size, peers}'

curl -fsS "$TAIRA_ROOT/openapi.json" \
  | jq -r '.paths | keys[]' \
  | grep '^/v1/' \
  | head -n 20

curl -fsS "$TAIRA_ROOT/v1/node/capabilities" \
  | jq '{abi_version, data_model_version, query: .query.aggregate.supported_resources}'

Попробуйте ресурс читает против нынешнего состояния мира:

bash
curl -fsS "$TAIRA_ROOT/v1/domains?limit=5" \
  | jq -r '.items[].id'

curl -fsS "$TAIRA_ROOT/v1/assets/definitions?limit=5" \
  | jq -r '.items[] | [.id, .name, .total_quantity] | @tsv'

Если маршрут публичной тестируемой сети возвращает 502, выходит из строя или сообщает о насыщенной очереди, обращайтесь с ним как с проблемой доступности конечных точек и попробуйте вновь позже, прежде чем дебгурировать свой клиентский код.

Консенсус и конечные точки загрузки ​

Окончательный моментФорматЦель
GET /v1/sumeragi/commit-certificatesJSONПоследние резюме сертификатов обязательств
GET /v1/sumeragi/validator-setsJSONВалидатор устанавливает историю
GET /v1/sumeragi/validator-sets/{height}JSONВалидатор установлен на высоте блока
GET /v1/sumeragi/statusNorito или JSONПодробный снимок состояния консенсуса
GET /v1/sumeragi/status/sseSSEПостоянный поток консенсуса о состоянии
GET /v1/sumeragi/leaderJSONСовременная информация о лидерах
GET /v1/sumeragi/qcNorito или JSONПоследнее резюме кворум-сертификата
GET /v1/sumeragi/checkpointsJSONРезюме консенсусных контрольных пунктов
GET /v1/sumeragi/consensus-keysJSONАктивные ключи консенсуса
GET /v1/sumeragi/bls_keysJSONАктивные BLS ключи консенсуса
GET /v1/sumeragi/phasesJSONПоследнее образец задержки на фазу
GET /v1/sumeragi/rbcJSONRBC сеансы и показатели пропускной способности
GET /v1/sumeragi/rbc/sessionsJSONАктивный снимок сессии RBC
GET /v1/sumeragi/pacemakerJSONСтатус кардиоразвивателя
GET /v1/sumeragi/paramsJSONПараметры текущего действия в цепочке Sumeragi
GET /v1/sumeragi/collectorsJSONКраткий снимок детерминистического коллекционного плана
GET /v1/sumeragi/key-lifecycleJSONСостояние жизненного цикла ключевого консенсуса
GET /v1/sumeragi/telemetryJSONТелеметрический снимок консенсуса
GET /v1/sumeragi/evidenceJSONЗаписи доказательств, дополнительно фильтрованные по строке запросов
GET /v1/sumeragi/evidence/countJSONКоличество доказательств .
POST /v1/sumeragi/evidence/submitJSONПредставьте доказательства консенсуса
GET /v1/sumeragi/commit_qc/{hash}Norito или JSONЗавершить запись QC для хэширования блока
GET /v1/runtime/abi/activeJSONОписатель активного времени выполнения ABI
GET /v1/runtime/abi/hashJSONАктивный ход времени ABI хэш
GET /v1/runtime/metricsJSONСнимок показателей времени запуска
GET /v1/runtime/upgradesJSONСписок обновлений запускного времени
POST /v1/runtime/upgrades/proposeJSONПредложим обновление рабочего времени .
POST /v1/runtime/upgrades/activate/{id}JSONАктивировать предложенную модернизацию рабочего времени
POST /v1/runtime/upgrades/cancel/{id}JSONОтменить предлагаемое обновление рабочего времени

Семейства маршрута App и SORA ​

Когда Torii построен с набором функций, ориентированных на приложение, он раскрывает дополнительные семейства JSON для исследователей, услуги SORA, мостовые потоки, доказательства и хранилище.

Семейство маршрутовЦель
/v1/accounts/*, /v1/domains/*, /v1/assets/*JSON чтения, помощники по запросу, помощники для включения в систему и просмотр портфеля или владельца
/v1/nfts/*, /v1/rwas/*, /v1/confidential/*NFT, активы в реальном мире и конфиденциальные виды активов
/v1/aliases/*, /v1/assets/aliases/*, /v1/sns/*, /v1/identifiers/*Название, псевдонимы и разрешение идентификатора
/v1/explorer/*Ориентированные на эксплуатант учетная запись, активы, блоки, транзакции, инструкции, показатели и потоки
/v1/transactions/*, /v1/pipeline/*, /v1/iso20022/*История транзакций, восстановление или состояние трубопровода, а также ISO 20022 помощников
/v1/contracts/*Контрактный код, развертывание, объединение, вызов, просмотр, событие, деятельность, сборка и маршруты состояния
/v1/multisig/*, /v1/controls/*Многозначные предложения, одобрения и помощники по контролю переводов
/v1/bridge/*, /v1/ledger/*, /v1/proofs/*Окончательность, доказательство состояния, доказательство блокировки, сохранение доказательств и маршруты запроса доказательства
/v1/da/*Доступность данных, манифесты, политики доказательства, обязательства и конкретные намерения
/v1/zk/*ZK корни, проверка доказательств, проверка IVM, подсчет голосов, ключи от проверки, записи доказательств и приложения
/v1/gov/*, /v1/ministry/*Предложения по управлению, бюллетени голосования, состояние совета, защищенные пространства имен, предложения по повестке дня, принятие закона и завершение
/v1/nexus/*, /v1/sccp/*Nexus полоса, пространство данных, и перекрестная цепочка доказательства помощников
/v1/musubi/*Musubi чтение реестра пакетов и конструкторы инструкций
/v1/subscriptions/*Планы подписки, жизненный цикл подписки, использование и оплата помощников
/v1/sorafs/*, /sorafs/*, /.well-known/sorafs/*SoraFS обнаружение поставщиков, проверка мощности, закладка, сбор хранилищ и предоставление общественного контента
/v1/soracloud/*, /v1/soradns/*, /soradns/*, /api/*SoraCloud жизненный цикл услуг, частные вычислительные/модельные потоки, публичное открытие и хостинг приложений
/v1/connect/*, /v1/vpn/*Iroha Соединение сессий, транспорт WebSocket, сессии VPN, профили и расписки
/v1/app-api/*, /v1/api/*, /v1/content/*Приложения API связывания и пакеты/CID поддерживаемый маршрутизатор контента
/v1/operator/*, /v1/mcpАутентификация оператора и родный мост MCP JSON-RPC
/v1/offline/*, /v1/repo/*, /v1/space-directory/*, /v1/ram-lfe/*Готовность онлайн, соглашения о хранилищах данных, манифесты пространства данных и помощники RAM-LFE
/v1/kaigi/*, /v1/webhooks/*, /v1/notify/*, /v1/telemetry/*Сотрудничество, веб-связь, оповещение с толчком и интеграция телеметрии в реальном времени

ISO 20022 Мост ​

Torii раскрывает мост ISO 20022 под /v1/iso20022/* при включении приложения-направления API и время работы моста. это не общецелевой шлюз к клирингу ISO 20022 года, а поддерживаемый подмножество для преобразования выбранных платежных сообщений в подписанные переводы Iroha и для отслеживания их состояния в регистре.

Torii ISO 20022 Конечные точки ​

Метод и конечный пунктЦель
POST /v1/iso20022/pacs008Передача кредита FI к FI клиенту и составление соответствующего перечисления активов Iroha
POST /v1/iso20022/pacs009Предоставление кредитной передачи FI к FI , используемой для финансирования PvP или денежных средств, связанных с ценными бумагами
POST /v1/iso20022/pacs002Представьте отчет о состоянии платежей
POST /v1/iso20022/pacs004Представьте декларацию о платеже
POST /v1/iso20022/camt056Подача заявки на отмену платежа
POST /v1/iso20022/sese023Подача инструкции по расчету ценных бумаг
POST /v1/iso20022/sese024Отправить сообщение о состоянии расчета ценных бумаг
POST /v1/iso20022/sese025Представление подтверждения расчетов по ценным бумагам
POST /v1/iso20022/colr012Отправить сообщение о замене гарантий
GET /v1/iso20022/messages/{msg_id}Прочтите запись канонического моста для одного сообщения .
GET /v1/iso20022/audit/messagesПрочитайте манифест проверки сообщений с подделом .
GET /v1/iso20022/messages/{msg_id}/pacs002Отдать текущий платежный статус как pacs.002 XML
GET /v1/iso20022/messages/{msg_id}/pacs004Внести заявление о текущем платеже как pacs.004 XML
GET /v1/iso20022/messages/{msg_id}/camt029Отдать текущую резолюцию отмены как camt.029 XML
GET /v1/iso20022/messages/{msg_id}/sese024Внести текущий статус расчетов в sese.024 XML
GET /v1/iso20022/messages/{msg_id}/sese025Внести текущее подтверждение расчетов как sese.025 XML

В заявлении pacs.008 должно быть указано сообщение ID, сумма межбанковского расчетов, валюта, дата расчета, должник и кредитор IBANs, а также должник или кредитор BICs. При настройке справочных данных мост также проверяет переходы валют BIC, IBAN и ISO 4217, прежде чем генерируемая операция входит в трубопровод.

В заявлении pacs.009 должны содержаться бизнес-сообщение ID, определение сообщения ID, время создания, сумма межбанковского расчета, валюта, дата расчета; инструктирующий агент BICs, должник и кредитор IBANs. Если сообщение включает в себя Purp, мост в настоящее время принимает финансирование только для целей ценных бумаг: Purp=SECU.

Конечные точки подачи pacs.008 и pacs.009 принимают конверты XML ISO или формат плоского поля, используемый при испытаниях моста. Факультативные поля SplmtryData могут закрепить целевую книгу Iroha источник и целевой счет IDs или адреса, а также определение актива ID. Ответ 202 Accepted с message_id, transaction_hash, status, pacs002_code и решенной учетной книгой/счетом/активом контекстом.

Дополнительная поддержка анализа и картографирования ​

В настоящее время IVM ISO Helper также подтверждает и материализует следующие сообщения для семьи конверта подтверждение, картографирование расчетов или дальнейшее согласование. Torii Маршруты.

Семья сообщенийТекущая поддержка
head.001Подтверждение заголовка бизнес-заявки для ISO конверты, в том числе: BizMsgIdr, MsgDefIdr, время создания и опциональный отправитель/получатель BIC поля
pacs.007, pacs.028, pacs.029Отмена платежей, запрос на статус и разрешение/анализ статуса расследования
pain.001, pain.002Начало оплаты заказчиком и подтверждение отчета о состоянии платежа
camt.052, camt.053, camt.054Отчет о счете, заявление и подтверждение уведомления

Kaigi Заседания ​

Kaigi предоставляет платные аудио/видео комнаты в режиме реального времени на SORA Nexus. Используйте его, когда приложение нуждается в создании сеансов с учетной записью, изменениях списка, манифестациях реле, шифрованной сигнализации и измерении использования вместо того, чтобы держать все состояние конференций вне цепочки.

Животный цикл, ориентированный на бухгалтерский учет, составляет:

  • CreateKaigi: создать вызов под доменом и хранить его политику, график, метаданные и дополнительный релейный манифест.
  • JoinKaigi и LeaveKaigi: обновление списка вызовов. В частном режиме участники используют обязательства, аннулирующие факты и доказательства списка вместо того, чтобы непосредственно раскрывать счет участника IDs.
  • RecordKaigiUsage: дополнить измеренным длительностью и объемом газа.
  • EndKaigi: закрыть сессию и записать окончательную часовую печать.

Torii выявляет телеметрию эстафеты в /v1/kaigi/relays, /v1/kaigi/relays/{relay_id}, /v1/kaigi/relays/health, и /v1/kaigi/relays/events когда приложение API Состояние сеанса отражается в виде Kaigi Доменные события, такие как KaigiRosterSummary, KaigiRelayManifestUpdated, KaigiRelayHealthUpdated, и KaigiUsageSummary.

CLI Тестирование дыма ​

Начните с iroha kaigi CLI, когда вы хотите проверить, что конечная точка Torii принимает транзакции Kaigi до подключения UI. Команда быстрого запуска создает временную комнату против активного конечного пункта Torii и печатает резюме с идентификатором звонка, командой "соединяйтесь" и намеком на spool SoraNet:

bash
iroha kaigi quickstart --auto-join-host --summary-out kaigi-summary.json

Для сценарийных потоков, управляйте жизненным циклом комнаты явно:

bash
iroha kaigi create \
  --domain streaming \
  --call-name daily \
  --host <i105-account-id> \
  --privacy-mode transparent \
  --room-policy authenticated

iroha kaigi join --domain streaming --call-name daily --participant <i105-account-id>
iroha kaigi leave --domain streaming --call-name daily --participant <i105-account-id>

iroha kaigi record-usage \
  --domain streaming \
  --call-name daily \
  --duration-ms 120000 \
  --billed-gas 1500

iroha kaigi end --domain streaming --call-name daily

Использование --room-policy public для помещений, которые могут быть подвергнуты воздействию без просмотров билетов; или --room-policy authenticated когда выходы должны требовать аутентификации зрителя. --privacy-mode zk-roster-v1 только после того, как сеть имеет Kaigi конфигурированные ключи для проверки списка и использования; в противном случае соединения, листы, и частные записи использования не выполняются во время детерминистической проверки.

Испытания с помощью демонстрации JavaScript ​

Используйте настольную демо soramitsu/iroha-demo-javascript для тестирования конечного конечного портфеля. Демо - это приложение Electron and Vue, которое разговаривает напрямую с Torii через локальное связывание @iroha/iroha-js и включает в себя маршрут /kaigi для браузерных носителей один к одному.

Используйте демо с @iroha/iroha-js от Iroha Источник хранилища. демо-пины SDK через file:../iroha/javascript/iroha_js, Так что держите оба касса в этом сестреном расположении:

bash
mkdir iroha-wallet-workspace
cd iroha-wallet-workspace
git clone https://github.com/hyperledger-iroha/iroha.git
git clone https://github.com/soramitsu/iroha-demo-javascript.git

cd iroha/javascript/iroha_js
npm install
npm run build:native
npm run build:dist

cd ../../../iroha-demo-javascript
npm install
npm run dev

Используйте Node.js 20 или новейший и цепочку инструментов Rust, чтобы нативный модуль iroha_js_host мог создавать. Возобновить SDK в братец Iroha кассу после изменения его источника; чистый упаковка не содержит рабочее пространство Cargo, необходимое для npm run build:native.

Для контролируемого испытания укажите демонстрацию на конечную точку Kaigi-способной Torii:

  1. Запустить узел Iroha с включенным приложением SORA/Kaigi, обращающимся к приложению APIs или использовать общедоступную конечную точку, которая раскрывает необходимые поверхности Kaigi.

  2. Проверяйте базовую доступность с помощью /health, а затем проверьте поверхность прямого маршрута с помощью/openapi или /openapi.json. Некоторые развертывания также раскрывают /v1/health, но /health - это портативная проверка жизненности.

  3. Для TAIRA проверьте маршруты телеметрии эстафеты, прежде чем попробовать живую встречу:

    bash
    TAIRA=https://taira.sora.org
    curl -fsS "$TAIRA/health"
    curl -fsS "$TAIRA/v1/kaigi/relays"
    curl -fsS "$TAIRA/v1/kaigi/relays/health"

Эти проверки доказывают, что телеметрия эстафеты Torii и Kaigi доступна. Они не создают встречи; CreateKaigi и JoinKaigi все еще нуждаются в финансируемых кошельках и подписанном представлении транзакций. 4. Откройте демо, перейдите к Настройкам, нажмите Torii URL и позвольте приложению загрузить цепочку ID и сетевой префикс с конечной точки. 5. Создать или восстановить два локальных кошелька в демо. Используйте отдельные окна приложений, профили или машины, чтобы хост и гость имели отдельное состояние кошелька.

Для испытания Kaigi UI:

  1. В окне хоста откройте Kaigi, выберите Начало встречи, нажмите заголовок и выберите частное приглашение или прозрачное приглашение.
  2. Выберите включить камеру и микрофон, так что WebRTC имеет местные средства массовой информации.
  3. Выберите ссылку на встречу. Живой кошелек отправляет CreateKaigi; затем в приложении отображается приглашение iroha://kaigi/join?call=...&secret=... и обратный маршрут #/kaigi?....
  4. Оставьте окно хозяина открытым и делитесь приглашением с гостем.
  5. В окне гостей открыть приглашение или вставить его в встречу Join, включить местные средства массовой информации и выбрать Meeting Join. Живый кошелек получает зашифрованное предложение хоста из Torii и отправляет JoinKaigi с зашифренными метаданными ответа.
  6. Ведущий должен автоматически подать первый ответ путем трансляции или опроса Kaigi сигналов звонка. В обоих окнах должны отображаться подключенные средства связи и обновленные данные соединения.
  7. Завершить сессию с хоста или использовать команду CLI iroha kaigi end для того же звонка ID.

Приватные Kaigi нужды защищены XOR для оплаты частной платы входного пункта. Если демо сообщает о том, что частные Kaigi нужды защитены XOR, используйте запрос самозащиты в приложении и попробуйте снова сделать или присоединиться к действию. Если генерация доказательств, частное финансирование или живая сигнализация недоступны, демо может вернуться к прозрачному / ручному потоку. В этом случае открыть Advanced Signaling, скопируйте сырое предложение или пакет ответа и вставьте его в другое окно.

Для автоматизированных проверок в демо-репо, запустить:

bash
npm test -- tests/kaigiView.spec.ts tests/preloadKaigiBridge.spec.ts
npm run e2e:ui
npm run verify

Целенаправленные аптеки Vitest охватывают создание ссылок на встречи Kaigi, компактную загрузку приглашений, частные вызовы моста для создания / присоединения / окончания, запросы самозащиты, ручные отказы и опросы ответов. Тест на дым UI включает маршрут /kaigi на настольных и мобильных порталах зрения. Живые средства массовой информации между двумя кошельками все еще нуждаются в ручном тесте двух окон, потому что разрешения на камеру браузера / микрофон и потоки сверстников медиа специфичны для окружающей среды.

Для кода интеграции образца см. Встроенный Kaigi в приложение JavaScript.

Статус и показатели ​

Окончательные точки статуса и показателей являются первыми вещами, которые вводятся в панели управления:

  • /status раскрывает поля сверстников, блоков, очередей и консенсуса высшего уровня.
  • /metrics раскрывает счетчики, метры и гистограммы Прометея

На Nexus- включенные узлы, выход состояния также включает в себя полосы и разделы с пониманием пространства данных. nexus.enabled = false, Эти разделы выпущены.

JSON против Norito ​

Некоторые конечные точки оператора возвращаются Norito По умолчанию, когда конечная точка поддерживает JSON, отправлять:

http
Accept: application/json

Это особенно полезно для:

  • /v1/sumeragi/status
  • /v1/sumeragi/qc
  • /v1/sumeragi/commit_qc/{hash}

Когда конечный пункт принимает или возвращает напечатанное Norito непосредственно, использование application/x-norito как тип содержания или предпочтительный Accept ценность. Norito для деталей перевозки.

Профили телеметрии ​

Видимость конечных точек зависит от настройки telemetry.profile узла. Текущая конфигурация предоставляет пять уровней профиля:

Профиль/status/metricsмаршруты разработчиков
disabledнетнетнет
operatorданетнет
extendedдаданет
developerданетда
fullдадада

CLI Сорткоды ​

iroha CLI уже включает в себя многие из этих конечных пунктов:

bash
iroha --config ./localnet/client.toml --output-format text ops sumeragi status
iroha --config ./localnet/client.toml --output-format text ops sumeragi phases
iroha --config ./localnet/client.toml ops sumeragi params
iroha --config ./localnet/client.toml --output-format text ops sumeragi telemetry

Ссылки вверх ​