Hyperledger Iroha is a deterministic blockchain platform for permissioned and consortium deployments. It provides account/asset management, on-chain permissions, and smart contracts through the Iroha Virtual Machine (IVM).
Workspace status and recent changes are tracked in
status.md.
This repository ships two deployment tracks from the same codebase:
- Iroha 2: self-hosted permissioned/consortium networks.
- Iroha 3 (SORA Nexus): the Nexus-oriented deployment track using the same core crates.
Both tracks share the same core components, including Norito serialization, Sumeragi consensus, and the Kotodama -> IVM toolchain.
crates/: core Rust crates (iroha,irohad,iroha_cli,iroha_core,ivm,norito, etc.).integration_tests/: cross-component network/integration tests.IrohaSwift/: Swift SDK package.java/iroha_android/: Android SDK package.docs/: user/operator/developer documentation.
- Rust stable
- Optional: Docker + Docker Compose for local multi-peer runs
cargo test
cargo build --workspace
cargo test --workspace
cargo clippy --workspace --all-targets -- -D warnings
cargo fmt --allNotes:
- Plain
cargo testfrom the repository root runs every workspace member.cargo test --workspaceis kept in examples when an explicit full-workspace command is clearer. Usecargo test -p <crate>for a focused crate suite. - Full workspace build can take about 20 minutes.
- Full workspace tests can take multiple hours.
- The workspace targets
std(WASM/no-std builds are not supported). - Heavier local UI/media helpers are explicit features in default builds:
cargo run -p mochi-ui --features guifor the egui desktop shell andcargo run -p iroha_cli --features offline-visual-codecs -- ...for Petal visual-codec commands. The SoraFS browser/SDK local QUIC proxy is available withcargo build -p sorafs_orchestrator --features local-quic-proxy.
cargo test -p <crate>
cargo test -p <crate> <test_name> -- --nocapturecd IrohaSwift
swift testcd java/iroha_android
JAVA_HOME=$(/usr/libexec/java_home -v 21) \
ANDROID_HOME=~/Library/Android/sdk \
ANDROID_SDK_ROOT=~/Library/Android/sdk \
./gradlew testStart the provided Docker Compose network:
docker compose -f defaults/docker-compose.yml upUse the CLI against the default client config:
cargo run --bin iroha -- --config ./defaults/client.toml --helpFor daemon-specific native deployment steps, see crates/irohad/README.md.
Torii exposes both Norito and JSON APIs. Common operator endpoints:
GET /statusGET /metricsGET /v1/parametersGET /v1/events/sse
See the full endpoint reference in:
For contract apps, Torii now exposes both single-contract deploy and bundle deploy surfaces. The maintained public path is:
iroha contract app build|plan|deploy|resumeforiroha.app.tomlbundlesPOST /v1/contracts/deploy-bundlefor compiled bundle deploys (?dry_run=truefor deterministic planning)GET /v1/contracts/deploy-bundles/{bundle_digest}for receipt/status lookupPOST /v1/contracts/deployfor the single-contract path, implemented through the same planner/executor as a one-contract bundlePOST /v1/contracts/view/batchfor batched read-only contract queries in one round-trip
For the public-safe Torii posture, contract deploy/call/view/status routes stay public, while higher-risk app-facing surfaces are opt-in:
torii.webhooks_enabled = falseby defaulttorii.zk_attachments_enabled = falseby defaulttorii.deploy_rate_per_origin_per_sec = 4plustorii.deploy_burst_per_origin = 8are the public deploy baseline- trader/app rollups such as
/v1/contracts/rollups/swaps/fillsand/v1/contracts/rollups/trader/accountremain app-facing surfaces rather than part of the public-safe baseline - enable them explicitly when the node is meant to expose those app features
This repo includes Codex-facing SORA live-network surfaces:
plugins/iroha/: an installable Codex app/plugin with the built-in Taira MCP preset.skills/sora-taira-testnet/: a standalone Codex skill for live Taira testnet workflows.skills/sora-minamoto-mainnet/: a standalone Codex skill for live Minamoto mainnet workflows.
Install a standalone skill from a GitHub checkout of this repo with:
python3 "${CODEX_HOME:-$HOME/.codex}"/skills/.system/skill-installer/scripts/install-skill-from-github.py \
--repo <owner>/<repo> \
--path skills/sora-taira-testnet
python3 "${CODEX_HOME:-$HOME/.codex}"/skills/.system/skill-installer/scripts/install-skill-from-github.py \
--repo <owner>/<repo> \
--path skills/sora-minamoto-mainnetRestart Codex after installation so the selected skill appears in the Skills tab.
If you are operating the public Taira deployment itself, render per-validator
configs from configs/soranexus/taira/validator_roster.example.toml plus
configs/soranexus/taira/validator_secrets.example.toml with
python3 scripts/render_taira_validator_bundle.py --roster ... --secrets ... --output-dir ...
instead of cloning the checked-in peer-1 config.toml by hand. The secrets
template now also carries the shared onboarding/faucet authority and streaming
identity material, so the checked-in Taira config remains a template rather
than a secret-bearing runtime profile.
crates/iroha: client library.crates/irohad: peer daemon binaries.crates/iroha_cli: reference CLI.crates/iroha_core: ledger/core execution engine.crates/iroha_config: typed configuration model.crates/iroha_data_model: canonical data model.crates/iroha_crypto: cryptographic primitives.crates/norito: deterministic serialization codec.crates/ivm: Iroha Virtual Machine.crates/iroha_kagami: key/genesis/config tooling.
- Main docs index:
docs/README.md - Genesis:
docs/genesis.md - Consensus (Sumeragi):
docs/source/sumeragi.md - Transaction pipeline:
docs/source/pipeline.md - P2P internals:
docs/source/p2p.md - IVM syscalls:
docs/source/ivm_syscalls.md - Kotodama grammar:
docs/source/kotodama_grammar.md - Norito wire format:
norito.md - Current work tracking:
status.md,roadmap.md
Japanese overview: README.ja.md
Other overviews:
README.he.md, README.es.md, README.pt.md, README.fr.md, README.ru.md, README.ar.md, README.ur.md
Translation workflow: docs/i18n/README.md
- Contribution guide:
CONTRIBUTING.md - Community/support channels:
CONTRIBUTING.md#contact
Iroha is licensed under Apache-2.0. See LICENSE.
Documentation is licensed under CC-BY-4.0: http://creativecommons.org/licenses/by/4.0/