{"id":13753183,"url":"https://github.com/hyperledger-iroha/iroha","last_synced_at":"2025-05-15T03:08:26.953Z","repository":{"id":37431076,"uuid":"181739240","full_name":"hyperledger-iroha/iroha","owner":"hyperledger-iroha","description":"Iroha: A cutting-edge, enterprise-grade decentralized ledger","archived":false,"fork":false,"pushed_at":"2025-05-07T18:01:43.000Z","size":54456,"stargazers_count":457,"open_issues_count":461,"forks_count":281,"subscribers_count":34,"default_branch":"main","last_synced_at":"2025-05-07T19:19:53.564Z","etag":null,"topics":["blockchain","consensus","distributed-ledger","dlt","docker","hyperledger","iroha","transactions"],"latest_commit_sha":null,"homepage":"https://docs.iroha.tech/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hyperledger-iroha.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-04-16T17:50:11.000Z","updated_at":"2025-05-07T18:11:47.000Z","dependencies_parsed_at":"2024-03-18T14:52:03.051Z","dependency_job_id":"4ec6df9f-2ef9-4625-8a0b-623ae3bdea4e","html_url":"https://github.com/hyperledger-iroha/iroha","commit_stats":null,"previous_names":["hyperledger-iroha/iroha","hyperledger/iroha"],"tags_count":58,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperledger-iroha%2Firoha","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperledger-iroha%2Firoha/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperledger-iroha%2Firoha/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperledger-iroha%2Firoha/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hyperledger-iroha","download_url":"https://codeload.github.com/hyperledger-iroha/iroha/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254264771,"owners_count":22041794,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blockchain","consensus","distributed-ledger","dlt","docker","hyperledger","iroha","transactions"],"created_at":"2024-08-03T09:01:17.896Z","updated_at":"2025-05-15T03:08:21.937Z","avatar_url":"https://github.com/hyperledger-iroha.png","language":"Rust","readme":"# Hyperledger Iroha\n\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n\nIroha is a simple and efficient blockchain ledger based on the **distributed ledger technology (DLT)**. Its design principles are inspired by the Japanese Kaizen principle of eliminating excesses (*muri*).\n\nIroha can help you manage your accounts, assets, on-chain data storage with efficient smart contracts, while being Byzantine- and crash-fault tolerant.\n\n## Features\n\nIroha is a fully-featured blockchain ledger. With Iroha you can:\n\n* Create and manage custom fungible assets, such as currencies, gold, and others\n* Create and manage non-fungible assets\n* Manage user accounts with a domain hierarchy and multi-signature transactions\n* Use efficient portable smart contracts implemented either via WebAssembly or Iroha Special Instructions\n* Use both permissioned and permission-less blockchain deployments\n\nIroha offers:\n\n* Byzantine fault-tolerance with up to 33% fault rate\n* Efficient in-memory operations\n* Extensive telemetry support out of the box\n* Modular structure\n* Event-driven architecture with strongly-typed events\n\n## Overview\n\n- Check [system requirements](#system-requirements) and instructions on how to [build and run Iroha](#build-test-and-run-iroha)\n- Learn about the [crates](#integration) Iroha provides\n- Learn how to [configure and use Iroha](#maintenance)\n- [Read more about Iroha](#further-reading)\n\nEngage with the community:\n- [Contribute](./CONTRIBUTING.md) to the repository\n- [Contact us](./CONTRIBUTING.md#contact) to get help\n\n## System Requirements\n\nRAM and storage requirements depend on your use case: whether you need to build or deploy a network, how big it is, and so on. This table summarises the requirements:\n\n| Use case          | CPU               | RAM   | Storage[^1] |\n|-------------------|-------------------|-------|-------------|\n| Build (minimum)   | Dual-core CPU     | 4GB   | 20GB        |\n| Build (recommend) | AMD Ryzen™ 5 1600 | 16GB  | 40GB        |\n| Deploy (small)    | Dual-core CPU     | 8GB+  | 20GB+       |\n| Deploy (large)    | AMD Epyc™ 64-core | 128GB | 128GB+      |\n\n[^1]: Note that all operations are done in RAM, so in theory Iroha can work without persistent storage. However, since synchronising blocks over the network after a power failure may take a long time, we recommend adding a hard drive.\n\nRegarding RAM requirements:\n\n* On average, you need 5 KiB of RAM per account. A network with 1 000 000 accounts uses 5GiB of memory.\n* Each transfer or Mint instruction requires 1 KiB per instruction.\n* RAM usage grows linearly, as all transactions are stored in memory. You should expect to consume more RAM with a higher TPS and uptime.\n\nCPU considerations:\n\n* Rust compilation highly favours multi-core CPUs such as Apple M1™, AMD Ryzen™/Threadripper™/Epyc™, and Intel Alder Lake™.\n* On systems with restricted memory and many CPU cores, Iroha compilation may sometimes fail with `SIGKILL`. To avoid it, restrict the number of CPU cores using `cargo build -j \u003cnumber\u003e`, where `\u003cnumber\u003e` (without the angle brackets) is half of your RAM capacity rounded down.\n\n## Build, Test, and Run Iroha\n\nPrerequisites:\n\n* [Rust](https://www.rust-lang.org/learn/get-started)\n* (Optional) [Docker](https://docs.docker.com/get-docker/)\n* (Optional) [Docker Compose](https://docs.docker.com/compose/install/)\n\n### Build Iroha\n\n- Build Iroha and accompanying binaries:\n\n  ```bash\n  cargo build\n  ```\n\n- (Optional) Build the latest Iroha image:\n\n  ```bash\n  docker build . -t hyperledger/iroha:dev\n  ```\n\n  If you skip this step, the Iroha container will be built using the latest available image.\n\n### Run Iroha\n\nOnce you have built Iroha, you can instantiate the minimum viable network:\n\n```\ndocker compose up\n```\n\nWith the `docker-compose` instance running, use [Iroha Client CLI](crates/iroha_cli/README.md):\n\n```bash\ncargo run --bin iroha -- --config ./defaults/client.toml\n```\n\n## Integration\n\nIroha project mainly consists of the following crates:\n\n* [`iroha`](crates/iroha) provides a library for building clients that communicate with peers.\n* [`irohad`](crates/irohad) is the command-line application for deploying an Iroha peer. Contains the routing table and definitions of API endpoints.\n* [`iroha_cli`](crates/iroha_cli) is the command-line client, a reference application using the client SDK.\n* [`iroha_core`](crates/iroha_core) is the primary library used by all other crates, including the peer endpoint management.\n* [`iroha_config`](crates/iroha_config) handles configuration and documentation generation for options and run-time changes.\n* [`iroha_crypto`](crates/iroha_crypto) defines cryptographic aspects of Iroha.\n* [`kagami`](crates/iroha_kagami) is used to generate cryptographic keys, default genesis, configuration reference, and schema.\n* [`iroha_data_model`](crates/iroha_data_model) defines common data models in Iroha.\n* [`iroha_futures`](crates/iroha_futures) is used for `async` programming.\n* [`iroha_logger`](crates/iroha_logger) uses `tracing` to provide logging facilities.\n* [`iroha_macro`](crates/iroha_macro) provides the convenience macros.\n* [`iroha_p2p`](crates/iroha_p2p) defines peer creation and handshake logic.\n* [`iroha_default_executor`](wasm/libs/default_executor) defines runtime validation logic.\n* [`iroha_telemetry`](crates/iroha_telemetry) is used for monitoring and analysis of telemetry data.\n* [`iroha_version`](crates/iroha_version) provides message versioning for non-simultaneous system updates.\n\n## Maintenance\n\nA brief overview on how to configure and maintain an Iroha instance:\n\n- [Configuration](#configuration)\n- [Endpoints](#endpoints)\n- [Logging](#logging)\n- [Monitoring](#monitoring)\n- [Storage](#storage)\n- [Scalability](#scalability)\n\n### Configuration\n\nThere is a set of configuration parameters that could be passed either through a configuration file or environment variables.\n\n```shell\nirohad --config /path/to/config.toml\n```\n\n**Note:** detailed configuration reference is [work in progress](https://github.com/hyperledger-iroha/iroha-2-docs/issues/392).\n\n### Endpoints\n\nFor a list of all endpoints, available operations, and ways to customize them with parameters, see [Reference \u003e Torii Endpoints](https://docs.iroha.tech/reference/torii-endpoints.html)\n\n### Logging\n\nBy default, Iroha provides logs in a human-readable format and prints them out to `stdout`.\n\nThe logging level can be changed either via the `logger.level` configuration parameter or at run-time using the `configuration` endpoint.\n\n\u003cdetails\u003e\u003csummary\u003eExample: changing log level\u003c/summary\u003e\n\nFor example, if your Iroha instance is running at `127.0.0.1:8080` and you want to change the log level to `DEBUG` using `curl`, you should send a `POST` request with a JSON containing the new log level. Like this:\n```bash\ncurl -X POST \\\n    -H 'content-type: application/json' \\\n    http://127.0.0.1:8080/configuration \\\n    -d '{\"logger\": {\"level\": \"DEBUG\"}}' -i\n```\n\u003c/details\u003e\n\nThe log format might be configured via the `logger.format` configuration parameter. Possible values are: `full` (default), `compact`, `pretty`, and `json`.\n\nOutput goes to `/dev/stdout`. Piping to files or [log rotation](https://www.commandlinux.com/man-page/man5/logrotate.conf.5.html) is the responsibility of the peer administrator.\n\n### Monitoring\n\nThe details of the `Health` endpoint can be found in the [API Reference \u003e Torii Endpoints](https://docs.iroha.tech/reference/torii-endpoints.html#health).\n\nIroha can produce both JSON-formatted as well as `prometheus`-readable metrics at the `status` and `metrics` endpoints respectively.\n\nThe [`prometheus`](https://prometheus.io/docs/introduction/overview/) monitoring system is the de-factor standard for monitoring long-running services such as an Iroha peer. In order to get started, [install `prometheus`](https://prometheus.io/docs/introduction/first_steps/) and use [the configuration template](docs/source/references/prometheus.template.yml).\n\n### Storage\n\nIroha stores blocks and snapshots in the `storage` directory, which is created automatically by Iroha in the working directory of the peer. If `kura.block_store_path` is specified in the config file, it overrides the default one and is resolved relative to the config file location.\n\n**Note:** detailed configuration reference is [work in progress](https://github.com/hyperledger-iroha/iroha-2-docs/issues/392).\n\n### Scalability\n\nMultiple instances of Iroha peer and client binaries can be run on the same physical machine and in the same working directory. However, we recommend to give each instance a clean new working directory.\n\nThe provided `docker-compose` file showcases a minimum viable network and the general methods of using the `hyperledger/iroha:dev` docker image for deploying a network of peers.\n\n## Further Reading\n\nWe encourage you to check out our [Iroha 2 Tutorial](https://docs.iroha.tech) first. It is suitable for both experienced developers and prospective users of Iroha 2, and it provides language-specific guides for Bash, Python, Rust, Kotlin/Java, and Javascript/TypeScript.\n\n* [Iroha 2 Documentation](https://docs.iroha.tech)\n  * [Glossary](https://docs.iroha.tech/reference/glossary.html)\n  * [Iroha Special Instructions](https://docs.iroha.tech/blockchain/instructions.html)\n  * [API Reference](https://docs.iroha.tech/reference/torii-endpoints.html)\n\u003c!-- * [Configuration Reference](./docs/source/references/config.md) --\u003e\n* [Iroha 2 Whitepaper](./docs/source/iroha_2_whitepaper.md)\n\nIroha SDKs:\n\n* [Iroha Python](https://github.com/hyperledger-iroha/iroha-python)\n* [Iroha Java](https://github.com/hyperledger-iroha/iroha-java)\n* [Iroha Javascript](https://github.com/hyperledger-iroha/iroha-javascript)\n* [Iroha iOS Swift](https://github.com/hyperledger-iroha/iroha-ios)\n\n## How to Contribute\n\nWe welcome community contributions! Report bugs and suggest improvements via GitHub issues and pull requests.\n\nCheck out our [contributing guide](./CONTRIBUTING.md) to learn more.\n\n## Get Help\n\nCheck out the channels you could use to [get help or engage with the community](./CONTRIBUTING.md#contact).\n\n## License\n\nIroha codebase is licensed under the Apache License,\nVersion 2.0 (the \"License\"); you may not use this file except\nin compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\nIroha documentation files are made available under the Creative Commons\nAttribution 4.0 International License (CC-BY-4.0), available at\nhttp://creativecommons.org/licenses/by/4.0/\n","funding_links":[],"categories":["blockchain"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyperledger-iroha%2Firoha","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhyperledger-iroha%2Firoha","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyperledger-iroha%2Firoha/lists"}