Skip to content

1.2.0-rc.1

Pre-release
Pre-release
Compare
Choose a tag to compare
@LiraLemur LiraLemur released this 10 Jun 08:43

New Features!

HL Ursa Integration:

We introduce full HL Ursa integration – now you can connect new cryptography algorithms supported by Ursa project.

Learn more
  • Integrate Hyperledger Ursa as a cryptography provider #184
  • Adding HL Ursa keys to example #264
  • Add crypto benchmarks for iroha-ed25519 and Ursa #276

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
  • Multihash integration #263
  • Docs: Multihash #522
  • Use the crypto provider corresponding to public key type during runtime #315

HL Burrow integration #421

Iroha now supports Solidity smart-contracts via EVM by HL Burrow

Learn more
  • Docs: HL Burrow Documentation and RTD Fixes #494
  • Call engine command #489
  • add USE_BURROW option to Jenkins CI #508
  • postgres burrow storage #493

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
  • P2P TLS: added credentials loading #274
  • P2P TLS: added peer TLS certificate providers #279
  • Add TLS certificates into Peer #250
  • PeerQuery: added peers query by public key #267

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
  • use response from transport #442
  • fix rx usage to send state #514
  • Fix/mst state #378
  • MST: fix propagation of updates from Torii #434
  • Fix/mst phantom transactions #476
  • MST tests: wait for commit before get pending query #533

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 well as full unified build guide, working for different platforms. We also fixed some small inconsistencies, broken links and made other improvements like automatic build of permissions list.

Learn more
  • Major documentation restructure: #240, #310
  • Additions to documentation:
    • for some errors #144
    • original file of the pipeline diagram #241
    • unified build process for all platforms #221
    • integrations #258
    • translation note for README.md #344
    • additional documentation files #311
    • default SECURITY policy #268
    • Example App #292
  • Documentation fixes: #200, #205, #243, #260, #312, #392, #293, #289, #171, #204, #213, #246
  • Converted Contribution guide to RST format #244
  • Permissions are now built automatically with Sphinx #343
  • Small Fixes in Config Section #513
  • Docs: correct link to readthedocs master branch #527

Infrastructure:

For this release we updated dependancies' versions and improved some features for better build process, more reliable CI and reporting.

Learn more
  • Unity build: prepare support in irohad #238
  • Python version fixes: #452, #453, #444, #443, #436, #350, #321
  • Vcpkg improvements: #419, #349, #345, #299, #288
  • CMake use improvements: #329, #327, #188, #216, #239
  • CI:
    • option to pass USE_LIBURSA flag on Linux #231
    • option to use BUILD_SHARED_LIBS flag on Linux #219
    • builds using Docker cache #186
    • support for VCPKG-based Dockerfile on CI #159
    • option for Iroha CI to build and push test versions #353
    • added dynamic vcpkg #376
    • multiple tags on single commit #464
    • parallel builds for Linux compilers #526
  • Docker builds:
    • cli option in docker entrypoint.sh #429
    • Jenkins: fix Docker image build on Linux for master branch #317
    • fixed docker image dependencies to build Iroha #308
    • disabled Docker pushes for tags #192
  • Other version bumps:
    • replace clang-6.0 with clang-9 #374
    • Enable C++17 support, usage examples #373
    • replace MSVC 2017 with MSVC 2019 #305
    • replace gcc5 with gcc9, replace Ubuntu 16.04 with 18.04 #287
  • Refactor rxcpp includes to reduce build time #265
  • Windows Packer: allowed reboot exit code for chocolatey #261
  • Fix the sonar #249
  • Fix build of everything in benchmark folder #245
  • Explicit "All clean" message in Iroha Clang format report #193
  • Utility service #423
  • fix compilation on gcc 7.4 #528

Fixes:

Check out the changes
  • Fixed permission_id description in Entity Relationship Model documentation. #381
  • Bugfix: soci statement parameter lifetime #318
  • Fix synchronization #242
  • Hotfix: mac build #294
  • Fix Transactions' Collections Validation (IR-585) #178
  • in consensus ordering avoid vector copying #372
  • string builder avoids unnecessary string creation #371
  • check ledger keypair #307
  • Permutation generator: portability across platforms #336
  • Result: fixes and new constructor #332
  • fixed amount octocrash #301
  • GetStatus can return Rejected for a tx #290
  • Synchronization: fix FutureMessage handling and SynchronizationEvent round numbers #278
  • Yac: switch supermajority checker to CFT #247
  • ServerRunner: shut down forcefully on destruction #230
  • Remove unused json data field from Asset #201
  • Fixed the problem CompareAndSetAccountDetail with a non-existing keys #197
  • expected::Result: fixed type helper #194
  • Workaround for an issue with ServerContext destructor #180
  • expected::Result: added TypeHelper to zero-argument callables #173
  • ring buffer size fix #470
  • synchronizer: continue applying blocks after failure on halfway #511, #518
  • solved some issues during YAC startup & networking problems #360
  • CommandExecutor: fix checkAccountGrantablePermission #517
  • PostgresCommandExecutor: fix return code order #532
  • grpc: added default client timeout #459
  • remove transactions copy #447

Tests:

New load test – do not forget to check it out to measure the performance of your network.

Check out the changes
  • Moved invalid ID tests from Big ITF to field validator unit test #280
  • Testing: renamed common test constants #233
  • IrohadTest: added waiting for TLS server #224
  • Test Framework: TestDbManager #185
  • Feature/load test #117
  • Added grpc_retry_test #202
  • Added 2 more VCPKG patches for OSS-fuzz #207
  • OSS fuzz: fixed build after vcpkg update #347
  • Fixed find fuzz test #420
  • (IR-654) Added tests for PostgresWsvQuery #271
  • (IR-654) Added tests for PeerQueryWsv #262
  • Refactored pending txs storage test #413
  • Testing: fixed fake peer destruction behavior #534

Refactoring:

Same functions, better performance.

Check out the changes
  • Simplified Amount interface and IntegrationTestFramework header #257
  • Boosted format -> fmt format in query executor #396
  • Cache redesign #351
  • Legacy model: removed unused query response #326
  • Reworked PrettyStringBuilder #319
  • Refactor: common read file functions #316
  • Stateless validators refactor #309
  • Network: added client factory source files #300
  • Proto Model: removed some boost::accumulate uses #286
  • Crypto blobs: reworked passthrough #285
  • ProtoCommandValidator: separate from ProtoTransactionValidator #223
  • SpecificQueryExecutor: removed ambiguous setCreatorId and setQueryHash #209
  • PostgresBlockIndexer: split to abstract block indexer & backend entity indexer #198
  • Indents in proto #187
  • Use non-header-only fmt library; refactor std::accumulate usages #266
  • BatchHashEquality to another header #492
  • type selection in proto queries and commands #441
  • added query ordering, merged position_by_xxx tables to tx_positions #338

* This Changelog was automatically generated by github_changelog_generator and edited by @LiraLemur