Skip to content

Torii Puntos finales

Torii es el HTTP, SSE, y WebSocket puerta de entrada para Iroha 3. Se sirve tanto para el libro mayor APIs y los puntos finales del operador.

Las reglas actuales del protocolo son:

  • el formato binario canónico es Norito
  • muchos puntos finales también admiten JSON cuando envías Accept: application/json
  • Las métricas se exponen en formato Prometheus.

Para los detalles del formato, la negociación de contenido, las banderas de diseño, hashes de esquemas y Norito RPC orientación, véase el Norito referencias.

Los puntos finales comunes

Punto finalEl formatoPropósito .
POST /transactionNoritoEnviar una transacción firmada
POST /queryNoritoEnvía una consulta firmada
GET /eventsWebSocketSuscribirse a los flujos de eventos
GET /block/streamWebSocketFlujo de bloques comprometidos
GET /peersJSONLista de pares expuestos por Torii
GET /healthJSONPunto final de vida ligera
GET /api_versionJSONLa versión por defecto API
GET /statusJSONResumen del estado de alto nivel para los operadores
GET /metricsPrometeoPrometheus el punto final de raspado
GET /schemaJSONPresentación de esquema del modelo de datos servido por el nodo
GET /openapi o GET /openapi.jsonJSONDocumento OpenAPI para las rutas activas de Torii HTTP
GET /v1/parametersJSONImpresión instantánea de los parámetros del nodo
GET /v1/node/capabilitiesJSONCapacidad de nodo y metadatos del modelo de datos
GET /v1/api/versionsJSONLas versiones de Torii API apoyadas
GET /v1/events/sseSSEFlujo de eventos para clientes de larga vida
GET /v1/time/nowJSONImágenes del reloj de la pared del nodo
GET /v1/time/statusJSONEstado de sincronización del tiempo

/openapi es la lista de puntos finales autorizados para un nodo en ejecución. La superficie exacta depende de construir características y configuración de tiempo de ejecución, por lo que los clientes generados deben preferir el OpenAPI el documento sobre una lista de rutas copiada a mano. Torii API la consola para cargar ese documento en vivo, prueba JSON rutas, copia curl solicitudes, y generar código del cliente a partir del esquema actual.

Prueba las rutas en vivo Taira

La red de prueba pública Taira expone la misma superficie Torii JSON que los clientes de aplicaciones utilizan para exploración solo en lectura. Estas órdenes no requieren claves:

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}'

Prueba el recurso se lee en contra del estado mundial actual:

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'

Si una ruta de testnet pública devuelve 502, tiempo fuera, o informa una cola saturada, trate como un problema de disponibilidad del punto final y vuelva a intentarlo más tarde antes de desactivar su código cliente.

Consenso y puntos finales del tiempo de ejecución

Punto finalEl formatoPropósito .
GET /v1/sumeragi/commit-certificatesJSONResúmenes recientes de los certificados de compromiso
GET /v1/sumeragi/validator-setsJSONConfiguración de historial del validador
GET /v1/sumeragi/validator-sets/{height}JSONEl validador está configurado a una altura de bloque
GET /v1/sumeragi/statusNorito o JSONUna instantánea detallada del estado del consenso
GET /v1/sumeragi/status/sseSSEFlujo continuo de estado de consenso
GET /v1/sumeragi/leaderJSONInformación actual sobre los líderes
GET /v1/sumeragi/qcNorito o JSONÚltimo resumen del certificado de quórum
GET /v1/sumeragi/checkpointsJSONResumen de los puntos de control del consenso
GET /v1/sumeragi/consensus-keysJSONClaves de consenso activas
GET /v1/sumeragi/bls_keysJSONLas claves de consenso activas BLS
GET /v1/sumeragi/phasesJSONMás reciente muestra de latencia por fase
GET /v1/sumeragi/rbcJSONRBC métricas de sesiones y de rendimiento
GET /v1/sumeragi/rbc/sessionsJSONUna instantánea activa de la sesión RBC
GET /v1/sumeragi/pacemakerJSONEstatus del marcapasos
GET /v1/sumeragi/paramsJSONParámetros de corriente en cadena Sumeragi
GET /v1/sumeragi/collectorsJSONUna instantánea del plan de colección determinista
GET /v1/sumeragi/key-lifecycleJSONConsenso sobre el estado del ciclo de vida clave
GET /v1/sumeragi/telemetryJSONUna instantánea de telemetría del consenso
GET /v1/sumeragi/evidenceJSONRegistros de pruebas, filtrados opcionalmente por cadena de consulta
GET /v1/sumeragi/evidence/countJSONEl recuento de los registros de pruebas .
POST /v1/sumeragi/evidence/submitJSONPresentar pruebas de consenso
GET /v1/sumeragi/commit_qc/{hash}Norito o JSONComprometer QC registro para un hash de bloque
GET /v1/runtime/abi/activeJSONDescriptor de tiempo de ejecución activo ABI
GET /v1/runtime/abi/hashJSONEl tiempo de ejecución activo ABI hash
GET /v1/runtime/metricsJSONImpresión instantánea de las métricas del tiempo de ejecución
GET /v1/runtime/upgradesJSONLista de actualización del tiempo de ejecución
POST /v1/runtime/upgrades/proposeJSONProponemos una actualización del tiempo de ejecución
POST /v1/runtime/upgrades/activate/{id}JSONActivar una actualización del tiempo de ejecución propuesta
POST /v1/runtime/upgrades/cancel/{id}JSONCancelar una actualización del tiempo de ejecución propuesta

Aplicación y SORA Familias de ruta

¿Cuándo? Torii está construido con el conjunto de características orientadas a la aplicación, expone adicional JSON familias para exploradores, SORA Los servicios, los flujos de puentes, las pruebas y el almacenamiento.

La familia de rutasPropósito .
/v1/accounts/*, /v1/domains/*, /v1/assets/*JSON lee, ayuda a hacer consultas, ayuda de incorporación y visiones de cartera o titular
/v1/nfts/*, /v1/rwas/*, /v1/confidential/*NFT, activos del mundo real y puntos de vista confidenciales de los activos
/v1/aliases/*, /v1/assets/aliases/*, /v1/sns/*, /v1/identifiers/*Nombre, alias y resolución del identificador
/v1/explorer/*Cuentas orientadas al explorador, activos, bloques, transacciones, instrucciones, métricas y visualizaciones de flujo
/v1/transactions/*, /v1/pipeline/*, /v1/iso20022/*Historia de las transacciones, recuperación o estado de la tubería y ISO 20022 auxiliares
/v1/contracts/*Código de contrato, despliegue, paquete, llamada, vista, evento, actividad, movilización y rutas del estado
/v1/multisig/*, /v1/controls/*Propuestas multisig, aprobaciones y ayudantes de control de transferencias
/v1/bridge/*, /v1/ledger/*, /v1/proofs/*Finalidad, prueba de estado, prueba de bloqueo, retención de pruebas y rutas de consulta de pruebas
/v1/da/*Ingesta de datos, manifiestos, políticas de prueba, compromisos e intenciones definitivas
/v1/zk/*ZK raíces, verificación de pruebas, prueba de IVM, conteo de votos, claves de verificación, registros de pruebas y anexos
/v1/gov/*, /v1/ministry/*Propuestas de gobierno, boletas de voto, estado del consejo, espacios de nombres protegidos, propuestas de orden del día, promulgación y finalización.
/v1/nexus/*, /v1/sccp/*Nexus carril, espacio de datos y ayudantes de prueba de cadena cruzada
/v1/musubi/*Musubi lectores del registro de paquetes y constructores de instrucciones
/v1/subscriptions/*Planes de suscripción, ciclo de vida de suscripciones, uso y cobro de ayudantes
/v1/sorafs/*, /sorafs/*, /.well-known/sorafs/*SoraFS descubrimiento del proveedor, pruebas de capacidad, fijación, recogidas de almacenamiento y servicio de contenido público
/v1/soracloud/*, /v1/soradns/*, /soradns/*, /api/*SoraCloud ciclo de vida del servicio, flujos de computación privada / modelo, descubrimiento público y enrutamiento de aplicaciones alojadas
/v1/connect/*, /v1/vpn/*Iroha Conectar sesiones, WebSocket el transporte, VPN sesiones, perfiles y recibos
/v1/app-api/*, /v1/api/*, /v1/content/*Aplicación API enlaces y paquetes/enrutamiento de contenido respaldado por CID
/v1/operator/*, /v1/mcpAutenticación de operador y puente nativo MCP JSON-RPC
/v1/offline/*, /v1/repo/*, /v1/space-directory/*, /v1/ram-lfe/*Preparación fuera de línea, acuerdos de repositorios, manifiestos del espacio de datos y asistentes RAM-LFE
/v1/kaigi/*, /v1/webhooks/*, /v1/notify/*, /v1/telemetry/*Colaboración, webhook, notificación push e integraciones en vivo de telemetría

ISO Puente 20022

Torii expone el puente ISO 20022 debajo de /v1/iso20022/* cuando se habilitan la aplicación orientada a API y el tiempo de ejecución del puente. El puente tiene un alcance intencional: no es un gateway de compensación general ISO 20022 sino un subconjunto soportado para convertir los mensajes de pago seleccionados en transferencias firmadas Iroha y para rastrear su estado en el libro mayor.

Torii ISO 20022 Puntos finales

Método y punto finalPropósito .
POST /v1/iso20022/pacs008Presentar una transferencia de crédito del cliente FI a FI y construir la transferencia de activos correspondiente Iroha
POST /v1/iso20022/pacs009Presentar una transferencia de crédito FI a FI utilizada para PvP o financiación en efectivo relacionada con valores
POST /v1/iso20022/pacs002Presentar un informe sobre el estado del pago
POST /v1/iso20022/pacs004Enviar una declaración de pago
POST /v1/iso20022/camt056Enviar una solicitud de cancelación del pago
POST /v1/iso20022/sese023Presentar una instrucción de liquidación de valores
POST /v1/iso20022/sese024Enviar un mensaje sobre el estado de la liquidación de valores
POST /v1/iso20022/sese025Presentar una confirmación de liquidación de valores
POST /v1/iso20022/colr012Envíe un mensaje de sustitución colateral
GET /v1/iso20022/messages/{msg_id}Lea el registro del puente canónico para un mensaje .
GET /v1/iso20022/audit/messagesLea el manifiesto de auditoría de mensajes manipuladores .
GET /v1/iso20022/messages/{msg_id}/pacs002Enviar el estado de pago actual como pacs.002 XML
GET /v1/iso20022/messages/{msg_id}/pacs004Entregue la declaración de pago corriente como pacs.004 XML
GET /v1/iso20022/messages/{msg_id}/camt029Envía la resolución de cancelación actual en camt.029 XML
GET /v1/iso20022/messages/{msg_id}/sese024Envía el estado actual de liquidación a sese.024 XML
GET /v1/iso20022/messages/{msg_id}/sese025Enviar la confirmación de liquidación actual como sese.025 XML

pacs.008 las presentaciones deben proporcionar el mensaje ID, importe de la liquidación interbancaria, moneda, fecha de liquidación, deudor y acreedor; IBANs, el deudor y el acreedor BICs. Cuando se configuran los datos de referencia, el puente también verifica la BIC, IBAN, y ISO 4217 cruces de divisas antes de que la transacción generada entre en el oleoducto.

Los documentos pacs.009 deberán incluir el mensaje de negocio ID, la definición del mensaje ID, el tiempo de creación, el importe de la liquidación interbancaria, la moneda, la fecha de liquidación. agente encargado y encargado BICs, deudor y acreedor IBANs. Si el mensaje incluye Purp, el puente acepta actualmente únicamente fondos destinados a valores: Purp=SECU.

El Consejo pacs.008 y pacs.009 los puntos finales de presentación se aceptan XML ISO Envelopes o el formato de campo plano utilizado en los ensayos del puente. SplmtryData los campos pueden fijar el objetivo Iroha contabilidad principal, fuente y objetivo IDs o direcciones, y definición de activos ID. La respuesta es: 202 Accepted con message_id, transaction_hash, status, pacs002_code, y el contexto de contabilidad/cuenta/activos resuelto.

Apoyo adicional para el análisis y cartografía

El asistente IVM ISO también valida y materializa las siguientes familias de mensajes para la validación del sobre, el mapeo de asentamiento o la reconciliación en aguas posteriores. No tienen rutas independientes Torii.

La familia de mensajesApoyo actual
head.001Validación del encabezado de las aplicaciones empresariales para los sobres ISO, incluidos los campos BizMsgIdr, MsgDefIdr, tiempo de creación y remitente/receptor opcionales BIC
pacs.007, pacs.028, pacs.029Reversión de pagos, solicitud de estado y resolución/análisis del estado de la investigación
pain.001, pain.002Iniciación del pago de los clientes y validación del informe sobre el estado del pago
camt.052, camt.053, camt.054Reporte de cuenta, declaración y validación de la notificación

Kaigi Sesiones

Kaigi proporciona salas de audio / video en tiempo real y pagadas en SORA Nexus. Utilice cuando una aplicación necesita la creación de sesiones respaldadas por un libro mayor, cambios de lista, manifiestos de relevo, señalización cifrada y medición de uso en lugar de mantener todo el estado de conferencia fuera de cadena.

El ciclo de vida en el libro mayor es:

  • CreateKaigi: crear una llamada bajo un dominio y almacenar su política, programación, metadatos y manifiesto de retransmisión opcional.
  • JoinKaigi y LeaveKaigi: actualizar la lista de llamadas. En el modo privado, los participantes utilizan compromisos, anuladores y pruebas de lista en lugar de exponer directamente la cuenta del participante IDs.
  • RecordKaigiUsage: añadir la duración medida y el total de gases.
  • EndKaigi: cerrar la sesión y grabar el sello de tiempo final.

Torii expone la telemetría de relé en el /v1/kaigi/relays, /v1/kaigi/relays/{relay_id}, /v1/kaigi/relays/health, y /v1/kaigi/relays/events cuando la aplicación API El estado de la sesión se refleja a través del Kaigi eventos de dominio tales como KaigiRosterSummary, KaigiRelayManifestUpdated, KaigiRelayHealthUpdated, y KaigiUsageSummary.

Prueba de humo CLI

Comience con el iroha kaigi CLI cuando desee verificar que un punto final Torii acepta las transacciones Kaigi antes de conectar un UI. El comando de arranque rápido crea una habitación temporal en contra del punto final activo Torii e imprime un resumen con el identificador de llamada, el comando de unión y la pista de bobina SoraNet:

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

Para flujos scripted, gestione el ciclo de vida de la habitación explícitamente:

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

Utilización --room-policy public para habitaciones que puedan ser expuestas por los relés sin boletos de visualización, o --room-policy authenticated cuando las salidas deben requerir autenticación del espectador. --privacy-mode zk-roster-v1 sólo después de que la red tiene el Kaigi claves de verificación de lista y uso configuradas; en caso contrario, juntas, hojas, y los registros privados de uso fallan durante la verificación determinística.

Pruebas con la demostración JavaScript

Utiliza la demostración de escritorio soramitsu/iroha-demo-javascript para una prueba de billetera de extremo a extremo. La demostración es una aplicación Electron y Vue que habla directamente con Torii a través del enlace local @iroha/iroha-js e incluye una ruta /kaigi para medios nativos de un navegador uno a uno.

Utilice la demostración con @iroha/iroha-js desde el repositorio fuente de Iroha. Los pines de demostración del SDK a través de file:../iroha/javascript/iroha_js, así que mantenga ambos cheques en este diseño hermano:

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

Utilice Node.js 20 o más recientes y una cadena de herramientas Rust para que el módulo nativo iroha_js_host pueda construir. Reconstruya el SDK en la caja hermana Iroha después de cambiar su fuente; el diseño del paquete limpio no contiene el espacio de trabajo Cargo necesario por npm run build:native.

Para un ensayo controlado, apunte la demostración a un punto final Kaigi capaz de Torii:

  1. Inicie un nodo Iroha con la aplicación SORA/Kaigi orientada a APIs habilitada, o use un punto final público que exponga las superficies Kaigi que necesita.

  2. Compruebe la accesibilidad básica con /health, luego compruebe la superficie de ruta en vivo con /openapi o /openapi.json. Algunos despliegues también exponen a /v1/health, pero /health es el control de vida portátil.

  3. Para TAIRA, verifique las rutas de telemetría del relay antes de probar una reunión en vivo:

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

Estos controles demuestran que la telemetría de retransmisión Torii y Kaigi es accesible. No crean una reunión; CreateKaigi y JoinKaigi todavía necesitan carteras financiadas y presentación firmada de transacciones. 4. Abrir la demostración, ir a Configuraciones, establecer el Torii URL, y dejar que la aplicación cargue la cadena ID y prefijo de red desde el punto final. 5. Crear o restaurar dos carteras locales en la demostración. Utilice ventanas de aplicaciones, perfiles o máquinas separadas para que el anfitrión y el invitado tengan estado de cartera separado.

Para probar el Kaigi UI:

  1. En la ventana de host, abra Kaigi, seleccione Inicio de reunión, establece un título y seleccione Invitación privada o Invitación transparente.
  2. Seleccione encender la cámara y el micrófono para que WebRTC tenga medios locales.
  3. Seleccione Crear enlace de reunión. Una billetera en vivo envía CreateKaigi; la aplicación muestra luego una invitación iroha://kaigi/join?call=...&secret=... y una ruta de retroceso #/kaigi?....
  4. Mantenga abierta la ventana del anfitrión y comparta la invitación con el invitado.
  5. En la ventana de invitados, abra la invitación o pégalo en reunión de Join, activa los medios locales y seleccione Join meeting. Una billetera en vivo recoge la oferta del anfitrión cifrada desde Torii y envía JoinKaigi con metadatos de respuesta cifrados.
  6. El anfitrión debe aplicar automáticamente la primera respuesta mediante transmisión o encuesta de señales de llamada Kaigi. Ambas ventanas deben mostrar medios conectados y detalles actualizados de conexión.
  7. Terminar la sesión desde el anfitrión, o utilizar el comando CLI iroha kaigi end para la misma llamada ID.

Propiedad privada Kaigi Necesidades protegidas XOR Si la demostración informa que el Kaigi Necesidades protegidas XOR, Utilice el prompt de autoescrito en la aplicación y vuelva a intentar la acción crear o unirse. Si la generación de pruebas, la financiación privada o la señalización en vivo no están disponibles, la demostración puede volver a un flujo transparente / manual. En ese caso, abra la señalización avanzada, copia el paquete de ofertas o respuestas en bruto y pega en la otra ventana.

Para las comprobaciones automáticas en el repositorio demo, ejecuta:

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

La cubierta de las suites Vitest enfocada Kaigi Creación de enlaces para reuniones, carga de invitaciones compactas, creación/junta/finalización privada Las llamadas de puente, las instrucciones de auto-escudo, fallbacks manuales y encuestas de respuesta. UI la prueba de humo incluye el /kaigi Los medios en vivo entre dos carteras todavía necesitan una prueba manual de dos ventanas porque el navegador Los permisos de cámara/micrófono y los flujos de medios entre pares son específicos del medio ambiente.

Para el código de integración de la muestra, véase Embed Kaigi en una aplicación JavaScript .

Estatus y métricas

Los puntos finales del estado y las métricas son las primeras cosas que se incorporan a los paneles de control:

  • /status expone los campos de pares, bloques, filas y consenso de nivel superior
  • /metrics expone los contadores, medidores y histogramas Prometheus.

En los nodos habilitados para Nexus, la salida de estado también incluye las secciones de carril y conocimiento del espacio de datos. Cuando nexus.enabled = false, esas secciones se omiten.

JSON frente a Norito

Varios puntos finales del operador devuelven Norito por defecto. Cuando el punto final soporte JSON, envíe:

http
Accept: application/json

Esto es especialmente útil para:

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

Cuando un punto final acepta o devuelve el tipo Norito directamente, uso application/x-norito como tipo de contenido o preferido Accept el valor. Véase Norito para los detalles de transporte.

Perfiles de telemetría

La visibilidad de los endpoints depende de la configuración telemetry.profile del nodo. La configuración actual expone cinco niveles de perfil:

Profiles/status/metricsRutas de desarrollo
disablednonono
operatornono
extendedno
developerno
full

CLI Acortajes

El iroha CLI ya incluye muchos de estos puntos finales:

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

Referencias de aguas arriba