Dear Iroha Community,
We are excited to announce Iroha 2.0.0-pre-rc.21
, which is the final release before the first feature-complete release candidate, (2.0.0-rc.1
). This version introduces major API changes, as well as improvements in performance and security.
-
Expressions removed from the core API. From now on, Iroha Special Instructions (ISI) are executed directly without evaluation. This simplifies common usage significantly, and renders illegal instructions unrepresentable. In more complicated scenarios (with querying, iteration, etc.), smart contracts can be used. In the future, users will be able to define custom expression systems via the Executor to express use cases not covered by ISI.
-
Configuration Overhaul RFC mostly implemented. The previous API was clunky, but now it is much easier to get started using Iroha. TOML config files are now used instead of JSON.
-
New World State View implemented. WSV is the in-memory storage used by Iroha. Previously, WSV often had to be cloned completely – this has been replaced with a more granular copy-on-write mechanism. This made transactions much faster, and reduced both memory usage and number of allocations.
-
Filtering API simplified. This was previously a big pain point in the API.
-
Numerics simplified. We consolidated the various numeric types used in assets into a single arbitrary-precision
Numeric
type, simplifying the data model. The numeric type is backed by therust_decimal
crate. -
Queries in smart contracts are now lazy. Executing a query from a smart contract doesn't return a full response anymore. Instead, it returns a paginated response using a database cursor. This has reduced the memory usage of smart contracts drastically.
-
Profiler integrated into Iroha. Since a performance degradation of a long-running Iroha peer was noticed by our QA team, it became necessary to integrate a profiler to track this issue down. This allowed us to discover that Iroha wasted a lot of time calculating hashes and cloning the WSV (should be taken care of with the new WSV implementation).
In the meantime, we're continuing to make progress towards 2.0.0-rc.1
. A large chunk of the ongoing effort on account restructuring has been completed in #4411 – accounts are now identified by a primary key, and will be able to have aliases in the future. Support for SCALE-to-JSON and JSON-to-SCALE conversion (and vice versa) has been added in #4486, making it more convenient to work with Iroha datatypes. Queries in smart contracts can now be filtered thanks to #4544. The rest of the changes are listed below.
- feat!: authenticate personal accounts by ID (#4411)
- feat!: filtered queries in contracts (#4544)
- feat: Support JSON in
parity_scale_cli
(#4486) - refactor!: Use multihash format for private keys (#4541)
- refactor: Transactional trigger set (#4489)
- refactor: Rename
parity_scale_decoder
toparity_scale_cli
(#4486) - refactor: Move metrics related functionality into MetricsReporter (#4379)
- refactor: Deduplicate triggers with the same wasm code (#4434)
- fix: trigger set is correctly serialized (#4589)
- fix: Revoke removed
PermissionToken
s onUpgrade<Executor>
(#4503) - fix: Report if a request to check peer status in test_network fails (#4543)
- fix: Report correct view change index for current round (#4379)
- ci: New iroha2-stable images release tags (#4485)
- ci: Enforce Conventional Commits in PR titles (#4523)
You can see the work-in-progress features planned for the next milestone here.
If you haven't already, we invite you to join us on Telegram and Discord. We're interested in your feedback and will help if you have issues or questions.
Thank you for being part of the Iroha community.
Yours,
Hyperledger Iroha team