Releases: hyperledger-iroha/iroha-dco
Hyperledger Iroha v1.0 Release Candidate 5
HL Iroha team is happy to present the new Release Candidate.
Here are some changes that we implemented in this release:
Pluggable Consensus: hyperledger-iroha/iroha#2125
iroha::consensus::yac::SupermajorityChecker interface now has two implementations: a BFT and a CFT checker. Besides that all the signature-related logic was put away from that interface, and it now operates solely on numbers.
Set to BFT by default.
New logger! hyperledger-iroha/iroha#2126
Read more here: https://iroha.readthedocs.io/en/latest/guides/configuration.html#logging
Markdown to RST docs configuration: hyperledger-iroha/iroha#2146
Now Markdown files from the repository can be referenced in the ReadTheDocs documentation!
We also improved build documentation: hyperledger-iroha/iroha#2162
Updated ed25519 cryptography to 2.0.1: hyperledger-iroha/iroha#2157
YAC storage cleanup: hyperledger-iroha/iroha#1947
Old rounds are now cleaned up and that improves stability
StorageImpl: faster cleanup: hyperledger-iroha/iroha#2174
Added installation security tips to documentation
So you could make sure you use Iroha securely: hyperledger-iroha/iroha#2129
Updated configuration template for docker deployment: hyperledger-iroha/iroha#2158
and added documentation for new parameters: hyperledger-iroha/iroha#2173
Storage now only notifies subscribers of newly committed blocks after they have been actually applied to the ledger: hyperledger-iroha/iroha#2179
Before, notification could be sent prior to actual commit which is not considered as correct behaviour.
Synchroniser subscription update: hyperledger-iroha/iroha#2160
Now if the synchroniser is waiting for the block for too long, it will break the connection. Also, if the block is failed to be checked, further blocks will not be received from that peer.
Debug deb packages support: hyperledger-iroha/iroha#2144
Decrease quantity of allocated proto query objects: hyperledger-iroha/iroha#2148
Another improvement reducing memory consumption
Now Iroha version is available through --version argument and in log pattern: hyperledger-iroha/iroha#2127
Added different Cmake sanitizers: hyperledger-iroha/iroha#2131
Added a fix for direct propagation in YAC. If a peer sends a vote for the old round, Iroha will share last finalized state: https://github.com/hyperledger/iroha/pull/2139
Refactored ordering service queues: hyperledger-iroha/iroha#2150
Got rid of consensus race by changing round queue management: hyperledger-iroha/iroha#2151
Fixed race bug in command service: hyperledger-iroha/iroha#2167
Made YAC accept votes only from peers that it knows: hyperledger-iroha/iroha#2134
Created block storage dependency for mutable storage: hyperledger-iroha/iroha#1994
Added fix for status stream initialization: hyperledger-iroha/iroha#2169
If runtime cache doesn't contain any value we are going to check the persistent cache for the value.
Fixed hash set usage in OS. Fixed block leaks in YacGate and Simulator: hyperledger-iroha/iroha#2170
Made most block manipulation functions of storage take constant blocks by shared pointer: hyperledger-iroha/iroha#2178
Added implementation of BlockStorage
interface based on FlatFile
: hyperledger-iroha/iroha#2180
Hyperledger Iroha v1.0 Release Candidate 4 Hotfix 1 version
- Add rollback before TemporaryWsv creation to prevent a deadlock in reject case, if a block was prepared before voting
- Add hash index for transaction status table to prevent sequential scan on each query
Benefits
Improved performance
Possible Drawbacks
One more query in the pipeline, hash index is not WAL logged
Hyperledger Iroha v1.0 Release Candidate 4
For this release we focused on performance, memory consumption so now Iroha is faster and more efficient. There are also some new features added.
Here are new improvements that are being released with RC 4!
Fixes and updates reducing memory consumption and improving performance:
Fixed nested object copy in shared_model proto backend: hyperledger-iroha/iroha#2096
Prevented CommandValidatorVisitor objects from copying: hyperledger-iroha/iroha#2107
Unsubscribe
fix: hyperledger-iroha/iroha#2121
Reworked proposal sharing: hyperledger-iroha/iroha#2085
Fixed busy waiting in transaction status stream loop: hyperledger-iroha/iroha#2104
Removed block memory leak: hyperledger-iroha/iroha#2103
Fixed command service infinite replay: hyperledger-iroha/iroha#2102
YAC storage cleanup: hyperledger-iroha/iroha#1947
Test improvements:
Added performance test based on locust.io
Now Iroha’s performance can be tested. Read more here: hyperledger-iroha/iroha#2087
Test for new RX operator combine_latest_until_first_completed: hyperledger-iroha/iroha#2122
Documentation improvements:
Added important details about AddPeer command (public key validation): hyperledger-iroha/iroha#2098
Updated Iroha README: hyperledger-iroha/iroha#2114
Among other important updates:
We finally removed SWIG dependency from the project: hyperledger-iroha/iroha#2113
Added two more Ordering Gate configuration parameters: hyperledger-iroha/iroha#2094
Added test@test keypair into samples close to the example genesis block: hyperledger-iroha/iroha#2128
Fixed Ansible deployment scripts: hyperledger-iroha/iroha#2099
Known issues
Synchronization in networks, where more than f peers might shutdown, will fail after a node restarts since hyperledger-iroha/iroha#1947 PR was merged. This happens because synchronization between rounds relies on commit synchronization event. The issue will be fixed in further RC with the propagation of the last commit for the unsynchronized node.
You can also check the full list of updates below.
よろしくね!
Hyperledger Iroha v1.0 Release Candidate 3
Critical bugs fixed and stability improved:
Transaction status streaming fixed: hyperledger-iroha/iroha#2033
Fix saving rejected tx hashes for failed atomic batches: hyperledger-iroha/iroha#2043
When an atomic batch arrived with one stateful valid and one stateful invalid transaction, only one tx hash was saved to block as rejected (stateful invalid).
The second tx (stateful valid) was not saved as rejected too.
Fixed proposal validation and prevented resending of incomplete batches: hyperledger-iroha/iroha#2044
Fixed segfault in StatusStream: hyperledger-iroha/iroha#2053
Clients that expect immediate stream end after a final tx status receiving would not suffer from redundant delay now: hyperledger-iroha/iroha#2073
Fixed memory leaks in Irohad: hyperledger-iroha/iroha#2082, hyperledger-iroha/iroha#2086
Fixed locking in OnDemandOrderingGate. Iroha does not become unresponsive after some period of time with constant load: hyperledger-iroha/iroha#2088
Rejected status is emitted for rejected transactions in transaction processor: hyperledger-iroha/iroha#2083
Important! Configurable MST expiration time:
This is a great tool for multisig, but it is important to update your config for new Iroha version (if you are ok with default 24 hours, please enter 1440):
hyperledger-iroha/iroha#2046
Selective block streaming
Previously, clients had one way to retrieve a stream of blocks: FetchCommits
RPC call, which starts emitting blocks from the next committed one.
This PR introduces a new method to retrieve only one block using its height as an identifier:
hyperledger-iroha/iroha#2031
We are in the process of implementing a new logger!
It supports a tree configuration structure and hides spdlog library:
hyperledger-iroha/iroha#2010,
hyperledger-iroha/iroha#2037,
hyperledger-iroha/iroha#2040
hyperledger-iroha/iroha#2050
hyperledger-iroha/iroha#2051
hyperledger-iroha/iroha#2052
Updated client libraries!
Old ones are deleted:
hyperledger-iroha/iroha#2028, hyperledger-iroha/iroha#2025
You can find new libraries here:
https://github.com/hyperledger/iroha-javascript
https://github.com/hyperledger/iroha-ios
https://github.com/hyperledger/iroha-java
https://github.com/hyperledger/iroha-python
Improved signatories check
We moved signatory check for query and blocks query from query processor to Postgres query executor:
hyperledger-iroha/iroha#1874
There are new deployment scripts
They are not described in docs yet, so please see README for now): hyperledger-iroha/iroha#1986
Some news about tests
Tests for Iroha on Windows are here! You can now natively run Iroha on Windows with tests:
hyperledger-iroha/iroha#2022
ITF: Fake peer for Ordering Service tests: hyperledger-iroha/iroha#1976, hyperledger-iroha/iroha#1975, and hyperledger-iroha/iroha#1974
No need to create a true server for command client tests: hyperledger-iroha/iroha#2014
Better docs
New transaction statuses and JSONB field info: hyperledger-iroha/iroha#1978
Fixed branches in the documentation: hyperledger-iroha/iroha#2009
Stateful Validation Errors are now described in Documentation: hyperledger-iroha/iroha#2020
And many other improvements included in this release.
Please check out the full list below.
Hyperledger Iroha v1.0 Release Candidate 2
Release Candidate 2 has the same awesome features as the first one but with some very important fixes and improvements. Please make sure to check them out:
Hex format for client API
Now all keys and hashes, and basically all API messages will use HEX format. It will be consistent from now and will make Iroha faster and more stable.
That is a breaking change, so please make sure your Iroha is compliant: #1998
MST pending storage fixed
Previously, if batch was pending, and the same batch with all signatures comes, it went straight to the PCS. Because of that, the pending one was not removed and in theory could be replayed. Now, the system checks, if the arrived batch does already exist in MST storage, even if it has all signatures: #1959
You can now run irohad natively on windows!
There are no tests at the moment though: #1988
Memory leaks on iroha shutdown - fixed
Fixes couple of memory leaks on irohad shutdown by calling unsubscribe() in destructors: #1968
Fixed subscription to transaction status updates
In Iroha you subscribe to receive status updates of the transaction. Previously, that was based on time factor - the status stream was breaking off after some time.
New round-based approach is fixing this issue - it will break off if there are no updates on the transaction in some rounds: #1980
Also fixed the case in which many transactions updates could crash clients: #1991
New style licence comments are here
Simply check out how neat looking they are :) Now it is easier to contribute new files: #1944
Lots of improvements in fuzzing tests
Removed OrderingGate (internal) fuzzing: #1981
Updated RequestProposal endpoint fuzzing: #1983
Updated query Find fuzzing target: #1982
Fixed send_batches_fuzz and mst_fuzz: #1984
Fixed fuzzing status: #1979
Updated Torii fuzzing: #1951
Improved and made delay functionality pluggable to ordering gate init
Iroha will not wait more than 5 seconds between rounds in case of too many successive rejects: #1997
Improved create account command validation
Transaction creator should have all the permissions of default role of a domain where new account will be created: #1966
Improved synchronisation outcome logging
=^._.^= #1965
New compiler for tests and builds
Added libc++ to docker build image: #1970
Some documentation improvements
Checked and fixed commands and queries documentation: #1971, #1938
Fixed deployment instructions: #1972
Hyperledger Iroha v1.0 Release Candidate 1
We are happy to introduce the first release candidate for Hyperledger Iroha!
There were several major features implemented for the first production version of Iroha:
Multi-signature Transaction (MST) is ready for use!
Now you can request several signatures to verify the transaction. And transactions can receive 2 more statuses: MST_PENDING for transactions waiting for more signatures and ENOUGH_SIGNATURES_COLLECTED for transactions that have already received the number of signatures requested ( #1649).
We have made MST possible with the following changes:
- adding Storage for Pending Transactions: #1598
- fixed sending batches to the Storage and retrieving them: #1661
- fixed retrieval of pending MST transactions: #1661
- MST, reworked with batches: #1642 and client tests for MST: #1652 and other improvements.
Here is the example of MST use case: Alice and Bob are performing exchange between bitcoin and dogecoin using MST to perform exchange only when both participants agreed on the transfer #1761
Important note: MST is functional. However, there is a known issue: when user sends a completed MST transaction it's version without all signatures is not removed from MST storage, so when one asks for his pending transactions he will still see it. As a temporary workaround, you can remove all signatures after getting pending transactions and then sign them with your signature and send to Iroha.
New fully BFT On-Demand Ordering Service is here!
Impressive preparations were made for the assembly of fully BFT (Byzantine-fault tolerant) Ordering service:
- BFT OS algorithm and interfaces: #1670
- on-demand ordering gate: #1675
- the transport: #1635 and on-demand connection manager: #1645
- the synchroniser: #1647
- BFT OS components: #1703
- Consensus Round as Key in YacStorages: #1729
- BFT YacGate: #1731
- BFT YaC: #1831
And, finally, we merged the new BFT Ordering Service: #1923
There were some serious API changes, so please make sure that your code is compatible with:
- Iroha versions in the block: #1893
- GetAccountTransactions query pagination: #1903
- Renamed client services: #1881
- Storing rejected transactions' hashes in the block: #1815
Replaced builders with factories
Now the code runs faster with changed design of its components. Here are our new factories within the code:
- factory for a block: #1622
- factory for transaction status creation: #1717
- factory for query responses and tests: #1724
- abstract factory for creating batches from transactions: #1743
- transport factory: #1750
Error Responses
Real error reasons for real people using Iroha - introducing Query Error Responses so you could know why the query failed: #1770
Stateful Error Codes in Postgres Command Executor, Endpoint and to SFV: #1813, #1817, #1821
Stateful Response Error Codes: #1837
Replay prevention:
In different Iroha components: #1857, #1868, #1865, #1868
Feature of storing rejected transactions' hashes in blockchain: #1815
Rejected txs index: #1846
Preparations for backward compatibility:
Added Iroha version into the block: #1893. Then we updated proto block validator for the new structure of the block: #1905.
And some of the smaller though very important ones…
Optimised command and query SQL
A complex work was done to optimise the work of SQL for both commands and queries: #1605
Consensus Cache in Block Loader and YAC Gate
We constantly move towards faster Iroha.
Now there is no need for a node to wait time to ask another node for synchronisation thanks to the consensus cache. So let us say good-bye to load_delay: #1627
SWIG-free Iroha library for Python
Platform independent. Lighter. Better solution if you want to use Python with Iroha: #1761
SubtractAssetQuantity command
Was not previously implemented in Iroha-cli but now works correctly with AddAssetQuantity: #1713
Domain asset permissions
Now it is possible to restrict ability to add or subtract assets within domain: #1924
Benchmarks to measure performance
We are introducing a benchmark that executes GetAccount query and a benchmark that executes AddAssetQuantity command to have more information on the performance: #1651 and #1648
Empty Roles
The purpose of append role command is to promote an account to some created role in the system, where a role is a set of permissions account has to perform an action (command or query). It was impossible to add a role without permissions to account. Now it is possible: #1654
reducedHash
reducedHash wrapper is now visible to libraries and can be called by clients: #1659
TransactionBatchParser
Splits a list of transactions by possible adjacent batches: #1750
Genesis Parser
It will generate a nice md file with tables of accounts, permissions and other parameters of the genesis block: #1775
Query pagination:
Now you can get transaction query results using pagination: #1903, #1927
Introduce queries pagination by @nickaleks · Pull Request #1927 ·...
Improved tests
Here are some of the most influential results:
- the ability to send transaction sequences to the ITF and check stateless valid/invalid status: #1660 ITF feature of checking all the specified statuses: #1720
- Fuzzing targets for ordering service endpoints, consensus, MST and for BlockLoader endpoints: #1829, #1839, #1845, #1840
Fixes
Please also make sure to check out some important fixes and see if your Iroha is not affected by them:
- freeConnections method, which disposes all currently used connections was fixed: #1727
- send tx sequence method: #1685
- Consensus VoteOther case: #1834
- ITF bugs related to BFT OS: #1826
- tx-example.py and blocks-query.py: #1844
- verbosit flag is now working: #1942
DevOps news
- CMake version Minimum CMake version requirement is now 3.11.2 to use cool new features of it in Iroha: #1667
- Iroha on Kubernetes cluster
- Now Iroha can be run on Kubernetes: #1697
Please provide us with your feedback so we could have a great stable version for Hyperledger Iroha 1.0
Contact us via mailing list: [email protected]
Or in chat: https://chat.hyperledger.org/channel/iroha (for general discussions), https://chat.hyperledger.org/channel/iroha-contributors (for contributors).
Hyperledger Iroha interim release (based on beta-4)
Snapshot release
In this interim release there are no breaking changes for client libraries related to backward compatibility. Users are encouraged to use this version rather than the latest development version until all breaking changes are introduced and released.
Hyperledger Iroha v1.0 beta-4 version
In this release following changes were made:
Faster throughput, pluggable state storage
There is less abstraction on state storage level, and validation is done with means of SQL queries. It has significantly improved the performance of Iroha peer and made it less error-prone (#1557).
State storage is plugged over ORM library titled as SOCI, which bundles a nice thread pool for faster interconnection with PostgreSQL; and makes it possible to switch to other supported SQL storage (how about using in-memory SQLite database for even faster throughput? #1505)
Stateful validation errors
All the stateful validation errors are printed in peer logs and response is sent to a client along with transaction status. Now it is a lot easier to check what went wrong with a rejected transaction (#1508)
Important note: this version of Iroha can disclose some personal data like account balance (if a transaction was statefully invalid —account can now get the reason). In the future version we will implement error codes (check them there)
Binary Testing Framework
This is a test framework that helps testing client libraries (now particularly in Python) if they produce valid transactions and queries (if permissions and other business rules were met #1485)
Transaction status streaming over RxCpp
Reactive extensions library in C++ is actively used in our architecture and now is in charge of transaction status processing (#1541)
Fixed critical bug with query signatures
Previously, in beta-3 there was an issue with invalid queries passing stateful validation. Signatures, attached to a query were not checked properly, and this was fixed in current release
Input fuzzing
Libfuzz checks the input in our client component (called Torii) and protobuf messages are mutated as well (#1531)
Blocks and proposals are not copied now (and their creation process is benchmarked)
A proposal is a candidate for becoming the next block in Iroha chain. The lifetime of these objects is important, this is why their creation and copying has to be minimized by means of C++ (#1542, #1567)
Creation is benchmarked by means of Google Benchmark library (#1539)
Check the size of signatures set
One of the bugs, that was revealed with help of fuzzing, was a possibly valid empty signature set attached to a transaction. This behavior was fixed in #1536.
Doxygen documentation
Code docs generation is added to the pipeline (for master and develop branches) and docs are uploaded to https://docs.iroha.tech on each commit
API changes
Transaction batch support
Transaction batch is a set of transactions, which are to be applied together. There are two kinds of batches:
- Ordered batch
- transactions will be applied strictly in the order they were received
- Atomic batch
- the order is still guaranteed
- failure of any transaction inside it leads to failure of the whole batch
Important note: this feature was not implemented completely in this release, however, interfaces and SDKs have already been changed for easier integration in the future. This does not affect backward compatibility.
Check the status of development here
Amount is passed as a string. Everywhere
Code became much simpler and it is easier to create transactions without SDKs now (#1555)
Proto files were split
Client API proto files now are stored in a shared model folder, whereas as Iroha peer messages are stored in schema folder (#1550)
GetAccountDetail is a bit more powerful now
Check our documentation page
GetPendingTransactions
In order to make scenarios related to transaction batches and multisignature transactions easier Iroha has API endpoint to get transactions of transactions batches which require signing by participating accounts (#1532)
Important note: this feature was not implemented completely in this release, however, interfaces and SDKs have already been changed for easier integration in the future. This does not affect backward compatibility.
Deleted account_id from Add/SubtractAssetQuantity commands
Finally, we have deleted account_id from a previously confusing API in #1511
Roles can have an empty set of permissions
Now users can create empty roles for use cases where such a role can serve a purpose of a tag or the least powerful role in the system (#1510)
Other
- Transaction status bus (#1575)
- Databases are purged and dropped after tests (#1406, #1584)
- Query execution can be mocked now (and tests are going to be much cleaner and easy to read) (#1579)
- Common objects factory (#1556)
- Builders are replaced with mocked Shared Model interfaces (#1563)
- WSV Query factories (instead of builders) (#1573)
- Refactor QueryProcessor interface (#1572)
- Block and proposal creation benchmarks (#1539)
- Proposal and block transactions validation (#1506)
- Add test cases for empty protobuf payload (#1502)
- Jenkins build status badge link (#1551)
- Shared Model build status is fixed (#1576)
- Java binding fix (#1507, #1569)
- Color diagnostics in Jenkins CI (#1515)
- Reuse Peer proto (#1522)
- Fix tests for createRole with the empty set of permissions (#1520)
- Improve Findgrpc.cmake (#1518)
- WSV (blockchain state) in PostgreSQL stores permissions as bit strings (#1499)
- CLI values now are cached for convenience purposes (#1496) by contributor uditha-atukorala
- Removed grantable permissions in queries (#1500)
- Refactored TransferAsset test (#1482)
- Fix indentation in a code of error message in IP validator (#1514, #1513)
- Fix type incompatibility on 32-bit platforms in keys manager (#1503)
- Python example fix (#1529)
- Bind operator in TemporaryWsv files (#1544)
Known issues
Windows build does not work at the moment, as well as JS bindings, due to their rough transition to new client libraries
Hyperledger Iroha v1.0 beta-3 version
In this release following changes were made:
Experimental multi-signature transactions support
This is one of the most important features so far, since it allows integrators of Iroha to customise validation logic and may help people who want to have smart-contracts support. Let me tell you more:
As per definition of multi signature account on wikipedia, it is a type of account, which has a special condition, associated with the account: it is related to a number of cryptographic signatures required to issue valid transactions from the account, or "quorum". Quorum is a requirement to have M of N signatures, attached to transaction, where N is a total number of public keys associated with the account.
It helps to build following logic:
- in order to form a valid transaction a user of Iroha has to apply several keys distributed across several people or devices to her transactions
- in order to form a valid transaction a user of a service with Iroha may send her transactions to a service, which validates some custom logic (amount of transferred assets, special fields, whatever) and this service can add a signature to transaction if it passed custom validation
What is different in Iroha, compared to other services, is that a user is able to send transactions to peer network which don't have all required signatures, "half-baked". Iroha puts them in a temporary storage and distributes across the network. In the end, when Iroha peer network has received enough "half-baked" transactions (quorum condition is valid) such transaction is sent to Iroha validation and is written in the ledger in case of successful validation.
If you are curious — check code in hyperledger-iroha/iroha#1260. Docs are going to be available gradually in our documentation website.
Block streaming
This would allow people to create services around Iroha that can listen to events happening on the chain — like specific transactions. In the future, it would allow us to implement block explorer functionality as well.
Python and Java Bindings for Windows platform
Check it in hyperledger-iroha/iroha#1335 and at artifact.soramitsu.co.jp website
Other features
- All assets now are returned instead of a single asset in GetAccountAssets (hyperledger-iroha/iroha#1402)
- Permissions are now implemented as enums instead of strings (hyperledger-iroha/iroha#1444, hyperledger-iroha/iroha#1434, hyperledger-iroha/iroha#1407, hyperledger-iroha/iroha#1408, hyperledger-iroha/iroha#1384)
- Ability to specify postgres database name on irohad startup
- Improved stateless validation for precision (hyperledger-iroha/iroha#1370)
- Reduced CPU usage caused by compilation of regexes (hyperledger-iroha/iroha#1345)
- Protobuf schema changes causes automatic generation of cpp files on build (hyperledger-iroha/iroha#1441)
- Hash can now be created from hex string (hyperledger-iroha/iroha#1475)
- Overwriting existing genesis block requires approval on Irohad start (thanks to @zeekhuge) (hyperledger-iroha/iroha#1300)
- CLI now supports GetAccountAssetTransactions command (hyperledger-iroha/iroha#1323)
- Significant compilation time improvements for irohad (hyperledger-iroha/iroha#1424, hyperledger-iroha/iroha#1414)
Fixes
- Fixed block query race condition which prevented making queries in a quick succession (hyperledger-iroha/iroha#1396)
- Fixed a bug which prevented synchronization between a newly added peer and the network (hyperledger-iroha/iroha#1390)
- Transfer asset now correctly handles mismatch between command's and asset's precision(hyperledger-iroha/iroha#1470)
- SetAccountDetail command can be executed on itself without any permissions (hyperledger-iroha/iroha#1452)
- If account name is not specified CLI will not issue a message about keypair generation (hyperledger-iroha/iroha#1455)
- fromPrivateKey now throws exception which can be caught (no more runtime errors!) (hyperledger-iroha/iroha#1429)
- Simulator now retrieves block height from storage, rather than current proposal (hyperledger-iroha/iroha#1360)
- When transaction is finalized before subscription, correct status is returned (hyperledger-iroha/iroha@dc6b0a4)
- Java bindings are generated in correct packages (hyperledger-iroha/iroha#1382)
Docs
CI Improvements
- MacOS pipeline has --output-on-failure flag turned on by default (hyperledger-iroha/iroha#1425)
- Added MSVC build pipeline for shared model (hyperledger-iroha/iroha#1358)
Hyperledger Iroha v1.0 beta-2 version
In this release following changes were made:
Uploading of Iroha build artifacts
Artifacts are now available on https://artifact.soramitsu.co.jp for downloading:
- macOS Iroha binary
- linux Iroha binaries
- Android, Java, Python bindings
In the following releases, more bindings are coming!
Fix of critical vulnerabilities discovered during the security audit
Previously, several problems existed:
- Blocks can be signed more than once by the same peer (fixed in #1193)
- Transactions can be signed more than once by the same signatory (fixed in #1302)
If ed25519 library was modified to use a non-deterministic nonce, these vulnerabilities were likely to be used. Thanks to @dhuseby who helped us to unveil this tricky part of ed25519.
Message size
Previously, gRPC message was limited to 4MB. Regarding our release stage, we decided to get rid of this limitation. Right now anyone can send huge messages over the peer network. It is a potential attack vector, so we will fix it in following releases.
Docker naming
Our docker containers now are described here: https://hub.docker.com/r/hyperledger/iroha/
Please use only them (our docs were also updated in #1337)
Integration test framework
We fixed the indeterministic outcome of tricky tests, optimized their overall runtime by 15 times on macOS hosts and by 3 times on linux hosts (#1338)
MSVC
Now our client library (shared model) can be built with Microsoft compiler, and respective tests can be built and ran in this environment.
Hyperledger Iroha codebase MSVC support is coming in next releases.
Genesis block generation from a transaction
iroha-cli --genesis_block --genesis_transaction transaction.json
#1168
Error message to response, if stateless validation has failed
ToriiResponse
has field error_message
with the error description of a transaction
ErrorResponse
has field message
with the error description of a query
QueryResponse
has hex-encoded query hash instead of binary hash
Client libraries & shared model
Finished transition to shared model.
Transaction counter is no longer used in the transaction structure. Replay attacks are going to be prevented with transaction hash on peer side.
Stability
A regular queue is replaced with a priority queue in ordering gate so that proposals are propagated in order to the system if they are received in random order from the network. That causes fewer issues with simulator warnings about last block height being inconsistent with proposal height.
Bugfixes
- Fixed: streaming
- Fixed: boost linking
- Fixed: numerous synchronization issues
- Fixed: inconsistent genesis block generation
- Fixed: possible fork attacks
- Fixed: numerous permission issues
- Fixed: segfaults when the ledger doesn't contain blocks
- Fixed: numerous memory management issues
- Fixed: copyright and licensing issues (mostly)
- Other minor fixes
Known issues
- Unlimited gRPC message size
- https://soramitsu.atlassian.net/browse/IR-1267
- https://soramitsu.atlassian.net/browse/IR-1332