Releases: hyperledger-iroha/iroha
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.
1.2.0-rc.2
In the second release candidate, we fixed some issues of the previous version and improved documentation, as well as some features.
Fixes and improvements
Fixed synchronisation: #556
Fixed key pair validation: #557
Ametsuchi: fixed root permission for account creation: #610
PostgreSQL: reconnect to working database after failure: #564
Ursa build dependancy fix: #629
Fixed s390x build related issues: #637
Fix ninja build in wsv_query_test: #632
Make query signature check case-insensitive: #606
Added CompareAndSetAccountDetail.need_to_check_empty for legacy compatibility: #612
Documentation fixes: #544, #522, #560, #634, #625, #658, #588, #513, #652
1.2.0-rc.1
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
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.
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
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
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.
Changes in MST
Other Improvements:
Documentation:
For this release we have restructured the documentation – clearer sections based on your needs. Information on integration with other projects was added, as ...