Torii Points de référence
Torii est le HTTP, SSE, et WebSocket porte d'entrée pour Iroha 3. Il sert à la fois face au registre APIs et les points d'arrêt de l'opérateur.
Les règles actuelles du protocole sont les suivantes:
- Le format binaire canonique est Norito
- de nombreux endpoints prennent également en charge JSON lorsque vous envoyez
Accept: application/json - Les mesures sont exposées au format Prometheus.
Pour des détails sur le format, la négociation du contenu, les drapeaux de mise en page, les hachages de schéma et les lignes directrices Norito RPC, voir la référence Norito.
Les points de fin communs
| Le point final | Le format | Le but |
|---|---|---|
POST /transaction | Norito | Soumettre une transaction signée |
POST /query | Norito | Soumettre une requête signée |
GET /events | WebSocket | Abonnez-vous aux flux d' événements |
GET /block/stream | WebSocket | Flux de blocs engagés |
GET /peers | JSON | Liste des pairs exposés par Torii |
GET /health | JSON | Endpoint de vie légère |
GET /api_version | JSON | La version par défaut API |
GET /status | JSON | Résumé du statut des opérateurs de haut niveau |
GET /metrics | Prométhée | L' endpoint de grattage Prometheus |
GET /schema | JSON | Une capture instantanée du schéma de modèle de données desservie par le nœud |
GET /openapi ou GET /openapi.json | JSON | document OpenAPI pour les lignes actives Torii HTTP |
GET /v1/parameters | JSON | Récapitulatif des paramètres du nœud |
GET /v1/node/capabilities | JSON | Capacité des nœuds et métadonnées du modèle de données |
GET /v1/api/versions | JSON | Les versions Torii API prises en charge |
GET /v1/events/sse | SSE | Flux d' événements pour les clients de longue durée |
GET /v1/time/now | JSON | Résumé de l' horloge du nœud |
GET /v1/time/status | JSON | Statut de synchronisation du temps |
/openapi est la liste d'endpoints autorisés pour un nœud en cours de fonctionnement. construire des fonctionnalités et la configuration de l'exécution, donc les clients générés devraient préférer le live OpenAPI document sur une liste de itinéraires copiée à la main. Torii API console pour charger ce document en direct, test JSON Route, copie curl les requêtes, et générer le code client à partir du schéma actuel.
Essayez les itinéraires en direct Taira
Le réseau de test public Taira expose la même surface Torii JSON que les clients d'application utilisent pour l'exploration en lecture seulement.
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}'Essayez de lire la ressource contre l'état actuel du monde:
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 un itinéraire de testnet public renvoie 502, s'éteint ou rapporte une file d'attente saturée, traitez-le comme un problème de disponibilité des terminaux et réessayez plus tard avant de déboguer votre code client.
Consensus et points d'arrêt du temps de fonctionnement
| Le point final | Le format | Le but |
|---|---|---|
GET /v1/sumeragi/commit-certificates | JSON | Résumés récents des certificats d' engagement |
GET /v1/sumeragi/validator-sets | JSON | L' historique de réglage du validateur |
GET /v1/sumeragi/validator-sets/{height} | JSON | Le validateur est réglé à une hauteur de bloc |
GET /v1/sumeragi/status | Norito ou JSON | Résumé détaillé de l' état du consensus |
GET /v1/sumeragi/status/sse | SSE | flux continu d' état de consensus |
GET /v1/sumeragi/leader | JSON | Informations actuelles sur les dirigeants |
GET /v1/sumeragi/qc | Norito ou JSON | Le dernier résumé du certificat de quorum |
GET /v1/sumeragi/checkpoints | JSON | Résumé des points de contrôle du consensus |
GET /v1/sumeragi/consensus-keys | JSON | Les clés de consensus actives |
GET /v1/sumeragi/bls_keys | JSON | Les clés de consensus actives BLS |
GET /v1/sumeragi/phases | JSON | Le dernier échantillon de latence par phase |
GET /v1/sumeragi/rbc | JSON | RBC métriques de la session et du débit |
GET /v1/sumeragi/rbc/sessions | JSON | Une capture d'écran de session active RBC |
GET /v1/sumeragi/pacemaker | JSON | L' état du pacemaker |
GET /v1/sumeragi/params | JSON | Paramètres de courant en chaîne Sumeragi |
GET /v1/sumeragi/collectors | JSON | Résumé du plan collecteur déterministe |
GET /v1/sumeragi/key-lifecycle | JSON | Statut du cycle de vie clé de consensus |
GET /v1/sumeragi/telemetry | JSON | Télémétrie instantanée de consensus |
GET /v1/sumeragi/evidence | JSON | Enregistrement des preuves, optionnellement filtré par chaîne de requête |
GET /v1/sumeragi/evidence/count | JSON | Le nombre des preuves . |
POST /v1/sumeragi/evidence/submit | JSON | Soumettre des preuves de consensus |
GET /v1/sumeragi/commit_qc/{hash} | Norito ou JSON | Commit QC enregistrement pour un hash de bloc |
GET /v1/runtime/abi/active | JSON | Décripteur de l'exécution active ABI |
GET /v1/runtime/abi/hash | JSON | Hachage de l'exécution active ABI |
GET /v1/runtime/metrics | JSON | Résumé des métriques d' exécution |
GET /v1/runtime/upgrades | JSON | Liste des mises à jour en cours d' exécution |
POST /v1/runtime/upgrades/propose | JSON | Proposer une mise à niveau de l' heure d' exécution |
POST /v1/runtime/upgrades/activate/{id} | JSON | L' activation d' une mise à niveau de temps d' exécution proposée |
POST /v1/runtime/upgrades/cancel/{id} | JSON | Annuler une mise à niveau de l' heure d' exécution proposée |
App et SORA Familles de route
Lorsque Torii est construit avec le jeu de fonctionnalités face à l'application, il expose des familles supplémentaires JSON pour les explorateurs, SORA services, débit de ponts, preuves et stockage. Ces familles ne sont pas toutes activées sur chaque profil réseau.
| La famille des routes | Le but |
|---|---|
/v1/accounts/*, /v1/domains/*, /v1/assets/* | JSON les lecteurs, les aides à la requête, les aides d'intégration et les vues du portefeuille ou du titulaire |
/v1/nfts/*, /v1/rwas/*, /v1/confidential/* | NFT, actifs du monde réel et vues confidentielles d'actifs |
/v1/aliases/*, /v1/assets/aliases/*, /v1/sns/*, /v1/identifiers/* | Nom, prénom et résolution de l'identifiant |
/v1/explorer/* | Compte, actif, bloc, transaction, instruction, métriques et flux orientés vers l'explorateur |
/v1/transactions/*, /v1/pipeline/*, /v1/iso20022/* | L'historique des transactions, le rétablissement ou l'état du pipeline et les aides ISO 20022 |
/v1/contracts/* | Code de contrat, déploiement, paquet, appel, affichage, événement, activité, mise en œuvre et routes d'état |
/v1/multisig/*, /v1/controls/* | Propositions, approbations et aides à la gestion des transferts |
/v1/bridge/*, /v1/ledger/*, /v1/proofs/* | Finalité, preuve d'état, preuve de blocage, retenue des preuves et routes de requête des preuves |
/v1/da/* | Intégration de la disponibilité des données, manifestes, politiques de preuve, engagements et intentions précises |
/v1/zk/* | ZK racines, vérification des preuves, vérification de IVM, dénombrement des voix, clés de vérification, dossiers et pièces jointes |
/v1/gov/*, /v1/ministry/* | Propositions de gouvernance, bulletins de vote, état des conseils, espaces protégés, propositions d'ordre du jour, promulgation et finalisation |
/v1/nexus/*, /v1/sccp/* | Nexus la voie, l'espace de données, et les aides à l'épreuve croisée chaîne |
/v1/musubi/* | Musubi lecteurs de registre des paquets et constructeurs d'instructions |
/v1/subscriptions/* | Les plans d'abonnement, le cycle de vie des abonnements, l'utilisation et les aides à la charge |
/v1/sorafs/*, /sorafs/*, /.well-known/sorafs/* | SoraFS Découverte du fournisseur, preuve de capacité, pinning, récupération de stockage et service public de contenu |
/v1/soracloud/*, /v1/soradns/*, /soradns/*, /api/* | SoraCloud cycle de vie des services, flux informatiques / modèles privés, découverte publique et routage d'applications hébergées |
/v1/connect/*, /v1/vpn/* | Iroha Connecter les séances, WebSocket le transport, VPN les sessions, les profils et les reçus |
/v1/app-api/*, /v1/api/*, /v1/content/* | App API liaisons et bundle/routage de contenu soutenu par CID |
/v1/operator/*, /v1/mcp | L'authentification de l'opérateur et le pont natif MCP JSON-RPC |
/v1/offline/*, /v1/repo/*, /v1/space-directory/*, /v1/ram-lfe/* | Préparation en ligne, accords de référentiel, manifestes d'espace de données et aides RAM-LFE |
/v1/kaigi/*, /v1/webhooks/*, /v1/notify/*, /v1/telemetry/* | Collaboration, connexion web, notifications push et intégration en direct de télémétrie |
ISO pont 20022
Torii dévoile les ISO 20022 pont sous /v1/iso20022/* lorsque l'application est tournée vers API Le pont est délibérément ciblé: il ne s'agit pas d'un objet général. ISO 20022 passerelle de compensation, mais un sous-ensemble pris en charge pour transformer des messages de paiement sélectionnés en signatures Iroha les transferts et pour le suivi de leur statut dans le registre.
Torii ISO 20022 Points d'arrêt
| Méthode et point final | Le but |
|---|---|
POST /v1/iso20022/pacs008 | soumettre un transfert de crédit client FI à FI et effectuer le transfert d'actifs correspondant Iroha |
POST /v1/iso20022/pacs009 | Soumettre un transfert de crédit FI vers FI utilisé pour PvP ou des fonds en espèces liés à des valeurs mobilières |
POST /v1/iso20022/pacs002 | Soumettre un rapport sur l' état des paiements |
POST /v1/iso20022/pacs004 | Soumettre une déclaration de paiement |
POST /v1/iso20022/camt056 | Soumettre une demande d' annulation de paiement |
POST /v1/iso20022/sese023 | Soumettre une instruction de règlement des titres |
POST /v1/iso20022/sese024 | Soumettre un message sur l' état du règlement des titres |
POST /v1/iso20022/sese025 | Présentation d' une confirmation de règlement des titres |
POST /v1/iso20022/colr012 | Envoyer un message de remplacement des garanties |
GET /v1/iso20022/messages/{msg_id} | Lisez le record canonique du pont pour un message |
GET /v1/iso20022/audit/messages | Lisez le manifeste de vérification des messages falsifiés . |
GET /v1/iso20022/messages/{msg_id}/pacs002 | Retourner l'état actuel du paiement en pacs.002 XML |
GET /v1/iso20022/messages/{msg_id}/pacs004 | Retourner la déclaration de paiement en cours comme pacs.004 XML |
GET /v1/iso20022/messages/{msg_id}/camt029 | Retourner la résolution d'annulation actuelle comme camt.029 XML |
GET /v1/iso20022/messages/{msg_id}/sese024 | Rendre l'état actuel du règlement sese.024 XML |
GET /v1/iso20022/messages/{msg_id}/sese025 | Retourner la confirmation du règlement en cours comme sese.025 XML |
Les déclarations pacs.008 doivent contenir le message ID, le montant du règlement interbancaire, la devise, la date de règlement, le débiteur et le créancier IBANs, et le débiteurs et le créant BICs. Lorsque les données de référence sont configurées, le pont vérifie également les intersections de devises BIC, IBAN et ISO 4217 avant que la transaction générée n'entre dans l'oléoduc.
Les déclarations pacs.009 doivent contenir le message d'affaires ID, la définition du message ID, l'heure de création, le montant du règlement interbancaire, la devise, la date du règlement; l'agent chargé BICs, le débiteur et le créancier IBANs. Si le message comprend Purp, le pont n'accepte actuellement que des fonds destinés aux valeurs mobilières: Purp=SECU.
Les points finaux de soumission pacs.008 et pacs.009 acceptent les enveloppes XML ISO ou le format de champ plat utilisé dans les essais de pont. Les champs optionnels SplmtryData peuvent saisir le registre cible Iroha compte source et cible IDs ou adresses, ainsi que la définition d'actif ID. La réponse est 202 Accepted avec message_id, transaction_hash, status, pacs002_code et le contexte de registre/compte/actif résolu.
Appui supplémentaire aux analyses et cartographies
L'assistant IVM ISO valide et matérialise également les familles de messages suivantes pour la validation des enveloppes, la cartographie des établissements ou la reconciliation en aval. Ils n'ont pas de routes autonomes Torii.
| La famille des messages | Soutien actuel |
|---|---|
head.001 | Validation de l'en-tête des demandes d'entreprise pour ISO enveloppes, y compris BizMsgIdr, MsgDefIdr, le temps de création et l'expéditeur/récepteur optionnel BIC champs |
pacs.007, pacs.028, pacs.029 | Reversation du paiement, demande d'état et résolution/analyse de l'état de l'enquête |
pain.001, pain.002 | Initiation du paiement par le client et validation du rapport d' état de paiement |
camt.052, camt.053, camt.054 | Rapport de compte, relevé et validation des notifications |
Kaigi Sessions
Kaigi fournit des salles audio/vidéo payantes en temps réel sur SORA Nexus. Utilisez-le lorsqu'une application a besoin de la création de sessions protégées par un registre, de changements de liste, de manifestes de relais, de signalisation cryptée et de mesure de l'utilisation au lieu de garder toutes les conférences hors chaîne.
Le cycle de vie en fonction du registre est le suivant:
CreateKaigi: créer un appel sous un domaine et stocker sa politique, son calendrier, ses métadonnées et le manifeste de relais optionnel.JoinKaigietLeaveKaigi: mise à jour de la liste d'appels. En mode privé, les participants utilisent des engagements, des annulateurs et des preuves de liste au lieu d'exposer directement le compte du participant IDs.RecordKaigiUsage: ajouter la durée mesurée et les totaux des gaz.EndKaigi: clôture de la session et enregistrement du timestamp final.
Torii détecte la télémétrie du relais sous /v1/kaigi/relays, /v1/kaigi/relays/{relay_id}, /v1/kaigi/relays/health, et /v1/kaigi/relays/events lorsque l'application API l'état de la session est reflété par le Kaigi événements de domaine tels que KaigiRosterSummary, KaigiRelayManifestUpdated, KaigiRelayHealthUpdated, et KaigiUsageSummary.
CLI Épreuve de fumée
Commencez par le iroha kaigi CLI lorsque vous souhaitez vérifier qu'un point d'extrémité Torii accepte les transactions Kaigi avant de connecter un UI. La commande de démarrage rapide crée une pièce temporaire contre le point d'extrémité actif Torii et imprime un résumé avec l'identifiant d'appel, la commande de rejoindre et l'indice de bobine SoraNet:
iroha kaigi quickstart --auto-join-host --summary-out kaigi-summary.jsonPour les flux scriptés, gérer explicitement le cycle de vie de la pièce:
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 dailyUtilisation --room-policy public pour les salles qui peuvent être exposées par des relais sans billets d'audience, ou --room-policy authenticated Lorsque les sorties doivent nécessiter une authentification du spectateur. --privacy-mode zk-roster-v1 seulement après que le réseau ait Kaigi les clés de vérification du répertoire et de l'utilisation configurées; autrement, joints, feuilles, et les enregistrements d'utilisation privés échouent lors de la vérification déterministique.
Test avec le démonstrateur JavaScript
Utilisez la démonstration de bureau soramitsu/iroha-demo-javascript pour un test de portefeuille de bout en bout. La démonstration est une application Electron et Vue qui parle directement à Torii via le lien local @iroha/iroha-js et comprend une route /kaigi pour les médias natifs du navigateur un à un.
Utilisez la démo avec @iroha/iroha-js à partir du Iroha le référentiel de la source. SDK à travers file:../iroha/javascript/iroha_js, Alors gardez les deux caisses dans cette mise en page fraternelle:
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 devUtilisez Node.js 20 ou plus récents et une chaîne d'outils Rust pour que le module natif iroha_js_host puisse être construit. Reconstruisez le SDK dans la caisse sœur Iroha après avoir changé sa source; la mise en page de l'emballage propre ne contient pas l'espace de travail Cargo nécessaire à npm run build:native.
Pour un test contrôlé, appuyez la démonstration sur un point d'extrémité Kaigi capable de Torii:
Démarrez un nœud Iroha avec l'application SORA/Kaigi orientée vers APIs activée, ou utilisez un point d'extrémité public qui expose les surfaces Kaigi dont vous avez besoin.
Vérifiez la facilité d'accès de base avec
/health, puis vérifiez la surface du trajet en direct avec/openapiou/openapi.json. Certains déploiements exposent également/v1/health, mais/healthest le contrôle portable de la durée de vie.Pour TAIRA, vérifiez les itinéraires de télémétrie du relais avant d'essayer une réunion en direct:
bashTAIRA=https://taira.sora.org curl -fsS "$TAIRA/health" curl -fsS "$TAIRA/v1/kaigi/relays" curl -fsS "$TAIRA/v1/kaigi/relays/health"
Ces vérifications prouvent que la télémétrie de relais Torii et Kaigi est accessible. Elles ne créent pas une réunion; CreateKaigi et JoinKaigi ont encore besoin de portefeuilles financés et de soumission signée de transactions. 4. Ouvrez la démo, allez à Paramètres, définissez Torii URL, et laissez l'application charger la chaîne ID et le préfixe réseau depuis le point final. 5. Créer ou restaurer deux portefeuilles locaux dans la démo. Utilisez des fenêtres d'applications, des profils ou des machines séparés afin que l'hôte et l'invité aient un état de portefeuille séparé.
Pour l'essai du Kaigi UI:
- Dans la fenêtre hôte, ouvrez Kaigi, sélectionnez Démarrer une réunion, définissez un titre et choisissez invitation privée ou invitation transparente.
- Sélectionnez allumez l'appareil photo et le microphone afin que WebRTC ait des médias locaux.
- Sélectionnez Créer un lien de réunion. Un portefeuille en direct soumet
CreateKaigi; l'application affiche ensuite une invitationiroha://kaigi/join?call=...&secret=...et un itinéraire de retour#/kaigi?.... - Gardez la fenêtre d'accueil ouverte et partagez l'invitation avec l'invite.
- Dans la fenêtre invité, ouvrez l'invitation ou collez-la dans réunion rejoindre, activez les médias locaux et sélectionnez réunion rejoindre. Un portefeuille en direct récupère l'offre d'hôte cryptée de Torii et envoie
JoinKaigiavec des métadonnées de réponse cryptées. - L'hôte doit appliquer automatiquement la première réponse en diffusant ou en sondant les signaux d'appel Kaigi. Les deux fenêtres doivent afficher des supports connectés et des détails de connexion actualisés.
- Terminer la session à partir de l'hôte ou utiliser la commande CLI
iroha kaigi endpour le même appel ID.
Propriété Kaigi besoins protégés XOR Si le démonstrateur rapporte que l'entrée privée Kaigi besoins protégés XOR, Utilisez l'interrupteur de protection automatique intégré à l'application et réessayez l'action Créer ou Joindre. Si la génération de preuves, le financement privé ou la signalisation en direct ne sont pas disponibles, la démonstration peut revenir à un flux transparent / manuel. Dans ce cas, ouvrez la signalisation avancée, copiez l'offre brute ou le paquet de réponse, et collez-le dans l'autre fenêtre.
Pour les vérifications automatisées dans le repo de démonstration, exécuter:
npm test -- tests/kaigiView.spec.ts tests/preloadKaigiBridge.spec.ts
npm run e2e:ui
npm run verifyLa couverture des suites Vitest concentrée Kaigi Création de liens de réunion, chargement d'invitations compactes, création/joint/finition privée des appels de ponts, des rappels d'auto-défense, des retombées manuelles et des sondages. UI l'essai de fumée comprend le /kaigi Les médias en direct entre deux portefeuilles nécessitent toujours un test manuel à deux fenêtres car le navigateur Les autorisations de caméra/microphone et les flux multimédias partagés sont spécifiques à l'environnement.
Pour le code d'intégration de l'échantillon, voir Embedded Kaigi dans une application JavaScript .
Statut et indicateurs
Les points d'extrémité de l'état et des métriques sont les premières choses à intégrer dans les tableaux de bord:
/statusexpose les champs de partage, de blocage, de file d'attente et de consensus de premier niveau/metricsexpose les compteurs Prometheus, les gauges et les histogrammes
Sur les nœuds activés Nexus, la sortie d'état comprend également des sections relatives à la voie et aux espaces de données. Lorsque nexus.enabled = false, ces sections sont omises.
JSON par rapport à Norito
Plusieurs terminaux de l'opérateur retournent Norito par défaut. Lorsque le terminal prend en charge JSON, envoyez:
Accept: application/jsonCeci est particulièrement utile pour:
/v1/sumeragi/statusIl est nécessaire d'effectuer une vérification./v1/sumeragi/qcIl est nécessaire d'effectuer une vérification./v1/sumeragi/commit_qc/{hash}Il est nécessaire d'effectuer une vérification.
Lorsqu'un point d'extrémité accepte ou retourne typé Norito directement, utilisation application/x-norito en tant que type de contenu ou préféré Accept la valeur. Voir Norito pour les détails du transport.
Profiles de télémétrie
La visibilité des points de terminaison dépend du paramètre telemetry.profile du nœud. La configuration actuelle expose cinq niveaux de profil :
| Le profil | /status | /metrics | Routes de développement |
|---|---|---|---|
disabled | non | non | non |
operator | oui | non | non |
extended | oui | oui | non |
developer | oui | non | oui |
full | oui | oui | oui |
CLI Des raccourcis
Le iroha CLI couvre déjà bon nombre de ces points d'expiration:
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