1.0.0
Hello!
A new, production-ready HL Iroha v 1.0 is here!
Following the repository squash, some of the PRs were left in the archives and some were merged after the squash but please do not worry - all of the awesome features and fixes are there and ready 👍
Here is the list of what was achieved:
New features
Added functionality of reconnection to storage_impl: #42
Introduced a feature that provides you with an option of adding a peer list (will be used instead of peers in genesis and other blocks): #47
Will be especially useful in cases when many peers in a current network state are malicious.
Documentation:
Fixed optional parameters description: hyperledger-iroha/iroha-dco#2194
Created GitHub issue template: #14, #20
Reworked Getting Started documentation: hyperledger-iroha/iroha-dco#2187, #40
Added readthedocs.org build status: hyperledger-iroha/iroha-dco#2171
This pull request contains additional contribution docs on how to submit discovered vulnerabilities.: hyperledger-iroha/iroha-dco#2159
DevOps:
Refactored Ansible role: #24
Updated the CI: hyperledger-iroha/iroha-dco#2205
Allowed to archive binaries (located in build/bin folder) and upload it to Nexus artifact server with coredumps: hyperledger-iroha/iroha-dco#2168
Fixed Mac build agents: hyperledger-iroha/iroha-dco#2214
Switched from Oracle JDK to OpenJRE for SonarQube: #38
Tests:
YAC network became testable: hyperledger-iroha/iroha-dco#2060
Fixed ITF fake peers on demand ordering test: hyperledger-iroha/iroha-dco#2067
Extended network testing facilities in ITF: hyperledger-iroha/iroha-dco#2032
Integrated a database into Locust load tests: hyperledger-iroha/iroha-dco#2119
To allow more complex analysis of test results
Fixed consensus transport and its fuzzing test: #15
Added add_peer_test: #16
Fixed several tsan issues in tests: #21
No random segfaults and locks in fake_peer_example_test: hyperledger-iroha/iroha-dco#2218
Added tests for batch pipeline: #44
Added tests for font case sensitivity of hex keys: #46
Added tests for batch validator: #45
MST Components
Fixed other peers' states cleanup in MstStorage. Refactored erasure methods & Completer: hyperledger-iroha/iroha-dco#2204
MstState gets a limit of transactions it can store. The value is configured through iroha config file: hyperledger-iroha/iroha-dco#2202
MstState: fixed issues: hyperledger-iroha/iroha-dco#2208
Fixed MstState::eraseByTime and storage cleanup.
New interface to access all batches and transactions of MST State: hyperledger-iroha/iroha-dco#2203, hyperledger-iroha/iroha-dco#2217
Let Torii know about batch_handle result for MST batches: hyperledger-iroha/iroha-dco#2220
Synchronization
Synchronizer: observable passthrough to ChainValidator: hyperledger-iroha/iroha-dco#2163
Synchronizer is now able to download missing blocks even when reject is happened in consensus: hyperledger-iroha/iroha-dco#2210
Another step towards removing in memory blocks accumulation during synchronization: hyperledger-iroha/iroha-dco#2165
SynchronizationEvent: removed blocks observable: hyperledger-iroha/iroha-dco#2212
Made it possible to synchronize a large blockstore: #48
Ordering Components
Batches propagation for (reject, commit) case: hyperledger-iroha/iroha-dco#2197
Recently it was discovered that round transition case is not handled by our ordering service - when there is a reject followed by a commit. This change brings this transition equal to others.
Transactions are not lost when received in reject rounds: hyperledger-iroha/iroha-dco#2199
Transactions received during reject rounds are not lost and queued for processing. Now Iroha clients do not have to resend transactions in case of "reject-commit".
Reduce lock scopes in ordering components: hyperledger-iroha/iroha-dco#2166
No more node hangs in ordering components
Ordering Service will not produce proposal bigger than max_proposal_size: hyperledger-iroha/iroha-dco#2198
And we also added configurable validators and max batch size validation: hyperledger-iroha/iroha-dco#2196
Fixed ordering event scheduling: #57
Storage
Made it possible to restore WSV without using additional storage: #52
Updated SOCI version in order to use failover for database reconnection: #35
Redirected Postgres log messages to Spdlog: hyperledger-iroha/iroha-dco#2182
Made StorageImpl respect the failure of new block insertion in Ametsuchi: hyperledger-iroha/iroha-dco#2213
Other Improvements:
Replaced TransportBuilder with ProtoBlocksQueryFactory in QueryService (Remove legacy code.) hyperledger-iroha/iroha-dco#2188
PR bringing fixes in shared_model initialization to fix potential race: hyperledger-iroha/iroha-dco#2189
Fixed coverage generation on macOS: hyperledger-iroha/iroha-dco#2153
CommandServiceImpl: fixed observer lifetime problem: hyperledger-iroha/iroha-dco#2195
Another step to reduce the number of queries to the database: hyperledger-iroha/iroha-dco#2066
Worked on event loop for pipeline processing: hyperledger-iroha/iroha-dco#2209
Consensus can now process messages from the network while the pipeline is running.
Updated Jinja version: hyperledger-iroha/iroha-dco#2221
Reordered validation rules in Postgres executor: hyperledger-iroha/iroha-dco#2228
Before the change, TransferAsset to non-existing account might lead to misleading error message "account does not have a permission". A correct error message will be produced now: account does not exist or account does not have permission for each case correspondingly.
YAC Gate now behaves when a commit message “from the future” arrives: #5
The case when a node is not voted yet but has received votes for a round is possible. Not YAC gate will behave properly in that case.
Fixed an issue for soci::use: #10
Fix batch validator for use in block loader: #27
Fixed an issue with uncaught exception in logger: #43
Refactored Result class for simpler usage: #39
Added missing validation for Key and Writer fields for GetAccountDetail: #50
Reworked Iroha Startup: #49
Updated Rxcpp version: #51
Fixed Windows build with MSVC: #55
Fixed bugs in ConfigLoader: #60