Releases: hyperledger-iroha/iroha
2.0.0-pre-rc.6 (LTS)
Long term-supported release candidate. We have reached a level of feature completeness, but want to ensure that things are working properly. This is the first major development milestone and we expect a lot of feedback with the option to re-architect some bits later down the line.
What's Changed
- [refactor]: encapsulate access to data model structures by @mversic in #1984
- [feature] #2048: Add toolchain file by @Arjentix in #2049
- [feature] #1890: Introduce integration tests based on Orillion use-cases by @Arjentix in #2038
- [fix] #1917: Added easy_from_str_impl macro for use with AssetValueType by @SamHSmith in #2054
- [refactor]: Remove unnecessary
&mut
from the API. by @appetrosyan in #2057 - [feature] #2040: Add integration test with transaction execution limit by @Arjentix in #2051
- [feature] #1952: Add a TPS benchmark as a standard for optimizations by @s8sato in #1963
- [fix] #1623: Create a RawGenesisBlockBuilder by @SamHSmith in #2076
- [fix] #2005: Fix
Client::listen_for_events()
not closing WebSocket stream by @Arjentix in #2095 - DOPS-1722: CI for iroha2-longevity-load-rs by @BAStos525 in #2071
- DOPS-1722: CI for iroha2-longevity-load-rs by @BAStos525 in #2070
- [fix] #1845: Non-mintable assets can be minted once only. by @appetrosyan in #2044
- [feature] #2003: Introduce Parity Scale Decoder tool (stable implementation) by @Arjentix in #2080
- [refactor] #1982: encapsulate access to
iroha_crypto
structures by @mversic in #2077 - [refactor] #2109: Make
integration::events::pipeline
test stable by @s8sato in #2110 - [schema] #2108: Add pagination by @appetrosyan in #2107
- [schema] #2114: Sorted collections support in schemas by @mversic in #2115
- [ci]: Bump rust, mold and nightly to 1.60, 1.2.0 and 1.62 respectively. by @appetrosyan in #2129
- [documentation] Add samhsmith to codeowners file by @SamHSmith in #2131
- [fix] #2111: Remove
roles
feature by @Arjentix in #2134 - [fix] #1716: Fix consensus failure with f=0 cases by @s8sato in #2124
- [documentation]: Add QuentinI to codeowners file by @QuentinI in #2138
- [feature] #2099: Add WASM integration test based on Orillion use-case by @Arjentix in #2122
- [feature] #2121: Check keypair is valid when constructed by @mversic in #2130
- [fix] #1640: Generate
genesis.json
and consolidate generation into one tool by @appetrosyan in #2104 - [refactor] #2144: redesign client's http workflow, expose internal api by @0x009922 in #2147
- [documentation] #1991: Add readme to Kura inspector by @outoftardis in #2162
- [ci] #2153: Fix coverage by @s8sato in #2154
- [ci]: Fix deploy pipeline. by @appetrosyan in #2168
- [documentation]: Add Ekaterina to the list of codeowners by @outoftardis in #2171
- [feature]: #1572: Specialized permission tokens by @QuentinI in #2156
- [ci]: Version bump all of the crates. by @appetrosyan in #2174
- [documentation] #2177: Clean up gitchangelog output by @outoftardis in #2178
- [ci] #2153: Fix #2154 by @s8sato in #2166
- [feature] #2050: Add role-related queries. by @appetrosyan in #2126
- [feature] #2105: handle query errors in client by @0x009922 in #2160
- [feature] #2004: Forbid
isize
andusize
from becomingIntoSchema
. by @appetrosyan in #2173 - [documentation] #2113: Document features in Cargo.toml files by @outoftardis in #2180
- [feature] #1883: Remove embedded configuration files. by @appetrosyan in #2183
- [fix] #2150: Use
rustfmt
instead ofcargo fmt
inclient/build.rs
by @Arjentix in #2187 - [fix] #2159: Improve
parity_scale_decoder
tests by @Arjentix in #2184 - [documentation] #2181: Review README by @outoftardis in #2190
- [feature] #2179: Optimise trigger execution by @Arjentix in #2157
- [fix] #1990: Enable peer startup via env vars in the absence of
config.json
by @ilchu in #2188 - [documentation] #2119: Add guidance on how to hot reload Iroha in a Docker container by @outoftardis in #2196
- [feature] #2100: Add query to find all accounts with asset by @Arjentix in #2197
- I2 dco by @appetrosyan in #2209
- [feature] #2056: Add a derive proc macro crate for AssetValueType enum by @ilchu in #2213
- [fix] #2215: Make nightly optional for building Iroha. by @appetrosyan in #2217
- [documentation] #1280: Document Iroha metrics by @outoftardis in #2195
- [feature] #2186: Add transfer instructions for all asset types by @appetrosyan in #2185
- [documentation] #2192: Review contributing guidelines by @outoftardis in #2219
- [documentation] #2193: Update benchmarks documentation by @outoftardis in #2230
- [refactor] #2145: refactor client's
WebSocket
side, extract pure data logic by @0x009922 in #2146 - [documentation] #2193: Update Kagami documentation by @outoftardis in #2220
- [fix] #2170: Fixes build in docker container on M1 machines by @pesterev in #2237
- [feature] #2103: support querying for blocks and transactions by @QuentinI in #2210
- [feature] #1413: Add API version endpoint by @ilchu in #2235
- [refactor]: Move
TriggerSet
todata_model
by @Arjentix in #2229 - [ci] #2222: Split tests by whether it involves coverage or not by @s8sato in #2223
- [documentation] #2193: Update Parity Scale Decoder Tool documentation by @outoftardis in #2224
- [fix] #2232: Make Iroha print meaningful message when genesis has too many isi by @Arjentix in #2239
- [feature] #1149: Restrict block number to 1 million per dir by @SamHSmith in #2194
- [documentation] #2193: Update README for wasm crate by @outoftardis in #2240
- [documentation] #2193: Update README for macro crate by @outoftardis in #2236
- [fix] #1149: Remove nocheckin code by @SamHSmith in #2248
- [documentation] #2193: Update Iroha CLI documentation by @outoftardis in #2244
- [documentation] #2193: Update Iroha Client and Iroha CLI Client documentation by @outoftardis in #2234
- [documentation]: Flakyness report by @appetrosyan in #2246
- [feature] #2161: generate FFI functions for
data_model
by @mversic in #2211 - [documentation]: Update information on git hooks by @outoftardis in #2254
- [feature] #1926: Add signal handling and graceful shutdown by @pesterev in #2251
- [feature] #2125: Add FindAssetDefinitionById query by @pesterev in #2265
- [test] #2272: Add tests for 'FindAssetDefinitionById' query by @pesterev in #2273
- [feature] #2257: Revoke emits RoleRevoked event by @omkar-mohanty in #2264
- [ci]: Remove unnecessary coverage reporting. by @appetrosyan in #2271
- [feature] #2132: Add
endpointN
proc macro by @ilchu in #2258 - [fix] #2282: improve FFI derives from getset implementation by @mversic in #2283
- [feature] #1638:
configuration
return doc subtree by @ilchu in #2291 - [ci]: Add @ilchu to codeowners by @ilchu in https://github.com/...
1.5.0
Here are the changes compared to HL Iroha 1.4:
Features
RocksDB Storage Implementation for Burrow #2065
Removed proposal_delay timeout (now is set automatically as 2 * proposal_creation_timeout
based on the calculations of the optimal value of the proposal delay) #1847
Performance Improvement
Removed separate MST endpoint: MST module is now located in the Ordering Service module to improve the performance #1927
Proposal request optimization #1869 #1971
Documentation
Documentation on Healthcheck Endpoint, Iroha Swarm, RocksDB and Postgres comparison and an example of good migration practice #1935
Documentation build fix #2069
Infrastructure
Removed Jenkins-related files as a part of moving CI to GitHub Actions #1921
More changes in CI can be seen here
Docker image existence flag fix #1901
2.0.0-pre-rc.3
- Schema changes that fix #1969
- Schema endpoint (use curl -X GET http://127.0.0.1:8080/schema)
- WASM decode optimisations
- timed triggers
- Improved API for generating ISI (documentation pending)
- By-call triggers
2.0.0-pre-rc.2
Contains accumulated work and is the first timed public release of Iroha 2. Currently includes
- Fully functioning Sumeragi consensus
- Partial support for permissioned and permissionless deployment
- Fully functional front- and back-end, for block deployment and synchronisation.
- Prometheus metrics
- Basic trigger implementation
- Basic WASM support
- Fully functional structured logging without rotation
The tutorial describing how to get started can be found here
1.4.0
Since 1.3 the team implemented the following features and fixes:
Features
Syncing Node #1648
Adds syncing node state for Iroha.
What is a syncing node?
Node in the state can:
- send transactions
- execute queries
- synchronize with remote nodes
- apply and validate blocks
- construct WSV
It can not:
- request proposals
- send votes(votes from such a node will be skipped)
- generate events of building block
RocksDB Metrics #1692
Healthcheck #1735
Added healthcheck interfaces via:
- http
- grpc
- metrics
General Fixes
Iroha v1.4-rc.1 fixes #1785 :
- Drop wsv flag behavior
- Signatory case insensetive checks
- Transaction status description from 5 byte to 1 byte if true or 0 byte if false
- Bloom filter in RDB
- RadixTrie enumerates nodes by prefix filter
- RDB 2-layer cache for WSV
Iroha v1.4-rc.2 fixes #1824 :
- Switched from optimistic to transactions database in RocksDB
- WSV and block store are now in different column families
- WSV schema version increased to 1.4.0
GitHub Action Docker tag #1609
Fixed sample config files (from max_rounds_delay to proposal_creation_timeout and deprecated DB connection string) #1662
Docs Fixes
Fixed broken links: build status, build guide, etc. #1318
Small Fixes on Configuration and Docker Metrics #1654
Added missing dependencies: #1393
1.4.0-rc.1
Features
Syncing Node #1648
Adds syncing node state for Iroha.
What is a syncing node?
Node in the state can:
- send transactions
- execute queries
- synchronize with remote nodes
- apply and validate blocks
- construct WSV
It can not:
- request proposals
- send votes(votes from such a node will be skipped)
- generate events of building block
RocksDB Metrics #1692
Healthcheck #1735
Added healthcheck interfaces via:
- http
- grpc
- metrics
Docs Fixes
Fixed broken links: build status, build guide, etc. #1318
Small Fixes on Configuration and Docker Metrics #1654
1.3.0
Here is the list of changes that were implemented since Iroha v1.2.1:
Features:
Subscription engine #813
Subscription engine singleton #849
SE features update #914:
- thread pool
- subscribers creator
- weak connectivity between Engine and Subscribers
- engine is disposable
- switch between sync and async single-thread tasks
Additional schedulers to dispatcher
Stack-created subscriber is not allowed
Is busy fixup #1366
Atomic busy check #1370
Repeat implementation #1410
Fixed thread pool tasks balancer #1271
Metrics #943
- Add CMake files to .clang-format-ignore
- Disable prometheus-cpp logs
- Extend WSV to countDomains(), countTransactions(), countPeers()
-fno-lto
to link GCC-10 and clang with civetweb which was built with GCC-9- Tests dependant on ametsuchi are linked against sync_subscription, not async
Metrics Uptime #1471
Prometheus metrics sample #841
Documentation #1346
GitHub Actions #1028
A script to request tags of docker repository from DockerHub using curl and jq #1288
Improvements and fixes #1291, #1313, #1343, #1357, #1284, #1157, #1039
Fixed CI and automatic builds #1450, #1567, #1578, #1589
Better cathegories in CTest logs #1564
RocksDB #1084
Added rocksdb initialization and basic functionality #954
RocksDB implementation for WsvCommand and WsvQuery #976
RocksDB implementation of Indexer #983
RocksDB command executor #1013
Invalid precision
test fix for RocksDB implementation #1089
Fix: Read precision in SubstractAssetQuantity #1091
Specific query executor #1049
Block Store #1304
RocksDB cache #1335
Print current DB status on exit #1410
Memory leaks fixes #1410
Tools for Migration to RocksDB
wsv_checker
#1294
Migration-tool #1320
Adding the tools to Docker #1426
Tests for tools iroha_migrate, iroha_wsv_diff #1597
Proposal Creation Timeout #1011:
- Replace round delay with proposal creation timeout
- Send batches to current and next rounds
- Decouple Yac and OnDemandOrdering from rxcpp
- Asynchronous proposal request
Optional gRPC Parameters #1048
Additional Commands and Queries for Burrow #1326
Implemented by this year's Hyperledger intern @Ayush-Jalan with @baziorek as a mentor
Documentation on new commands #1334
Missing queries integration to Burrow #1443
Queries extension by modifing TxPaginationMeta #1092
Implemented by this year's Hyperledger intern @Pawlak00 with @baziorek as a mentor
Extending GetPendingTransactions
#1300
Other Features
Async dispatcher implementation #962
Default log manager now reports config-file issues #951
Now CanAddPeer permission also allows the user to remove peers #1362
Fixes
reinterpret_pointer_cast
fix for clang build #909
No --drop-state
flag is needed for the first run anymore #900 (+ test fix #925)
Enabled reinterpret_pointer_cast
for apple platform only to fix build #932
AmetsuchiTest: added condition for prepared block tests #952
reinterpret_pointer_cast
moved to iroha
namespace #1000
Iroha no longer freezes in GRPC when message of more than 4 MB are sent to it #1003
FlatFile: made the file close before rename #1012
Synchronization fix #1073
Postgres_options_test fix
Ordering Service batches cache + small block fixup #1327
Fixed integration tests #1347,
Fixed integration tests #1347, #1378
Query permission test fix #1380
Fixed add_peer_test #1408
RocksDBWsvQuery: fixed buffer reuse in getPeerByPublicKey #1505
Fixed MST expiration #1488, #1489, #1490, #1521, #1557
YAC logical fixes #1410
Ordering Service removing duplicated transactions #1410
Prevented Ordering Service server from creating blocks when there are not enough transactions in the pool #1581
Restoring WSV Fix #1528, #1472
GetTransactions
request fix #1410
on_demand_os_client_grpc
test freeze fix #1410
Infrastructure
Increase Windows CI disk size #918
Remove outdated usages of master branch #924
Fixed CI badge #1367
Added missing brew dep #1336
Added scripts/fix-dco.sh #1303
Refactoring
Refactored YAC #1110
Removed boost::adaptors::filter
which could be dereferenced multiple times causing performance decrease #869
Remove rxcpp #1004
Internal storage refactoring #1410
Docs
Fixed Links #912
Additional Information About Configuration + Small Documentation Build Fixes #879
PR template change #1002
Added description of metrics flags #1006
Fixed Config example in Docs #1037, #1360
Block Path Config Description #1080
Updated documentation requirements #1359, #1159
Configuration Fix #1360
Removed Doxygen build #1377
Docs: Migration Tool and WSV Checker Use #1412
Fixed Build Instructions #1503
Fixed Starting Container Instructions for RocksDB Iroha #1600
Main team preparing the release: @kuvaldini, @iceseer, @LiraLemur
Results of the Performance Testing can be found here
1.3.0-rc.1
Features:
Subscription engine #813
Subscription engine singleton #849
SE features update #914:
- thread pool
- subscribers creator
- weak connectivity between Engine and Subscribers
- engine is disposable
- switch between sync and async single-thread tasks
Additional schedulers to dispatcher
Stack-created subscriber is not allowed
Is busy fixup #1366
Atomic busy check #1370
Fixed thread pool tasks balancer #1271
Metrics #943
- Add CMake files to .clang-format-ignore
- Disable prometheus-cpp logs
- Extend WSV to countDomains(), countTransactions(), countPeers()
-fno-lto
to link GCC-10 and clang with civetweb which was built with GCC-9- Tests dependant on ametsuchi are linked against sync_subscription, not async
Prometheus metrics sample #841
Documentation #1346
GitHub Actions #1028
A script to request tags of docker repository from DockerHub using curl and jq #1288
Improvements and fixes #1291, #1313, #1343, #1357, #1284, #1157, #1039
RocksDB #1084
Added rocksdb initialization and basic functionality #954
RocksDB implementation for WsvCommand and WsvQuery #976
RocksDB implementation of Indexer #983
RocksDB command executor #1013
Invalid precision
test fix for RocksDB implementation #1089
Fix: Read precision in SubstractAssetQuantity #1091
Specific query executor #1049
Block Store #1304
RocksDB cache #1335
Tools for Migration to RocksDB
wsv_checker
#1294
Migration-tool #1320
Proposal Creation Timeout #1011:
- Replace round delay with proposal creation timeout
- Send batches to current and next rounds
- Decouple Yac and OnDemandOrdering from rxcpp
- Asynchronous proposal request
Optional gRPC Parameters #1048
Additional Commands and Queries for Burrow #1326
Implemented by this year's Hyperledger intern @Ayush-Jalan with @baziorek as a mentor
Documentation on new commands #1334
Queries extension by modifing TxPaginationMeta #1092
Implemented by this year's Hyperledger intern @Pawlak00 with @baziorek as a mentor
Extending GetPendingTransactions
#1300
Other Features
Async dispatcher implementation #962
Default log manager now reports config-file issues #951
Now CanAddPeer permission also allows the user to remove peers #1362
Fixes
reinterpret_pointer_cast
fix for clang build #909
No --drop-state
flag is needed for the first run anymore #900 (+ test fix #925)
Enabled reinterpret_pointer_cast
for apple platform only to fix build #932
AmetsuchiTest: added condition for prepared block tests #952
reinterpret_pointer_cast
moved to iroha
namespace #1000
Iroha no longer freezes in GRPC when message of more than 4 MB are sent to it #1003
FlatFile: made the file close before rename #1012
Synchronization fix #1073
Postgres_options_test fix
Ordering Service batches cache + small block fixup #1327
Fixed integration tests #1347,
Fixed integration tests #1347, #1378
Query permission test fix #1380
Infrastructure
Increase Windows CI disk size #918
Remove outdated usages of master branch #924
Fixed CI badge #1367
Added missing brew dep #1336
Added scripts/fix-dco.sh #1303
Refactoring
Refactored YAC #1110
Removed boost::adaptors::filter
which could be dereferenced multiple times causing performance decrease #869
Remove rxcpp #1004
Docs
Fixed Links #912
Additional Information About Configuration + Small Documentation Build Fixes #879
PR template change #1002
Added description of metrics flags #1006
Fixed Config example in Docs #1037, #1360
Block Path Config Description #1080
Updated documentation requirements #1359, #1159
Configuration Fix #1360
Removed Doxygen build #1377
1.2.1
For this minor release we did some pretty big improvements:
New Proposal Sending Strategy #763
From now on, Iroha's Ordering Service as well as Ordering Gate treat proposals differently. Cache is also reworked.
This new strategy will ensure stability of the consensus even on smaller networks consisting of nodes with different connection speed.
Fixes:
- Now Iroha is more stable when there are faulty and unstable nodes in the network #809
- Block synchronisation fixed by using new state parameters by default when you perform WSV reuse #812
- Fixed node crashing in cases when votes for the next round are received before actually voting #742
- Improved performance for batch database requests #791
- Fixed a segmentation fault #796
- Fixed block synchronization timeout #840
1.2.0
New Features!
HL Ursa Integration:
We introduce full HL Ursa integration – now you can connect new cryptography algorithms supported by Ursa project.
Learn more
Multihash integration
Now Iroha can use the Multihash library to encode public-key and signature data to support either cryptography backend (native Iroha algorithm and HL Ursa)
Learn more
HL Burrow integration #421
Iroha now supports Solidity smart-contracts via EVM by HL Burrow
Learn more
On request proposal strategy #95
This change will make the work of Ordering Service more consistent and make sure that all the nodes receive correct information in all cases.
Executor ITF:
We also have been working on a special integrated test facility for the executor and populating it with tests.
Learn more
- Tests already added:
- remove_signatory_test #284
- get_asset_info_test #283
- get_account_test #282
- create_role_test #281
- get_account_detail_test #236
- get_signatories_test #235
- get_account_assets_test #234
- create_account_test #229
- set_account_detail_test #228
- query permissions common test #227
- add_asset_qty_test #226
- add_signatory_test #225
- common command permission test #291
- PostgreSQL backend #222
- Common base fixture #217
- Reworked query execution functions #212
- Included domain in default group name #211
- Command validation setup #210
- Parametric backend #208
TLS support to Torii #107
Preparations for P2P TLS:
We want Iroha to be the most secure and reliable platform for your assets and data, as well as your privacy. That is why we kept working on TLS for this release and will continue doing just that – all for the sake of security of your solutions. It is not ready, yet, but we are getting closer!
Learn more
Root permission #218
This is a permission that will give the administrator all of the permissions available to maintain the system and, if needed, intervene and resolve any issues. Also useful for additional functionality, if you decide to implement it. Use it carefully!
Add settings to customize ledger #133
New genesis block settings to make Iroha fit the needs of your exact project perfectly.
Restarting: option to keep WSV data #335, #407, #704
Now, it will be possible to restart nodes quicker after failure – without the need to reload all the blocks but just based on the World State View.
Linux One architecture support #684, #638
Major Component Improvements:
Ametsuchi:
Ametsuchi is Iroha storage component, which stores blocks and a state generated from blocks, called World State View. Not only we recently added an option of restoring a state of network from WSV, but also worked on Ametsuchi itself for more efficient work.
Learn more
- Transactions query detects missing transactions #298
- Reuseable PostgresIndexer #297
- Removed ambiguous call to apply #248
- Pass dependencies for query executor creation #203
- Fixed asset quantity overflow detection #154
- PostgreSQL command executor uses prepared statements only #165
- Moved TransactionExecutor init to StorageImpl #190
- Add SpecificQueryExecutor interface #189
- Query executor creator returns result #330
- Ametsuchi: fixed root permission for account creation: #610
- Ametsuchi: remove sql dependency from VmCaller: #695
PostgeSQL:
PostgeSQL is a database that Iroha uses to write down the World State View and, optionally, as a blockstore – saving the most precious thing about blockchain – its blocks. That is why we believe that improving this component is extremely important and that is why a lot of work was done to secure its stable and reliable work.
Learn more
- PgConnectionInit::checkIfWorkingDatabaseIfExists #175
- Moved drop database DDL to PgConnectionInit #174
- PostgresCommandExecutor: fixed unconditional signatory addition #220
- PostgresCommandExecutor: removed creator id and do validation #215
- PostgresSpecificQueryExecutor: removed creator id and query hash fields #214
- PostgresBlockStorage: fixed missing blocks handling & refactor #232
- Use Postgres instead of flat files for storing blocks #132
- PostgresIndexer: bulk insert #320
- PostgreSQL: reconnect to working database after failure: #564
- PostgresSpecificQueryExecutor: case-insensitive hash checks: #651
Shared Model:
Shared model is how Iroha entities are represented in C++ code – the heart of the framework. That is why even small changes can boost system's efficiency so much.
Learn more
- Replace boost optional with std #382
- Updated blob on addSignature #325
- Simplified proto query backend #270
- Amount construction #157
- Moved AccountDetailRecordId from shared_model::interface::types to shared_model::plain #199
- Reworked copying policy #206
- Use hex for public key and signature in interface #409
MST:
Multisignature transactions are important in many use-cases, that is why we continuously improve their processing.