Skip to content
This repository has been archived by the owner on Apr 17, 2019. It is now read-only.

Hyperledger Iroha v1.0.0_beta-3 #1494

Merged
merged 244 commits into from
Jun 22, 2018
Merged

Hyperledger Iroha v1.0.0_beta-3 #1494

merged 244 commits into from
Jun 22, 2018

Conversation

neewy
Copy link
Contributor

@neewy neewy commented Jun 22, 2018

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

Fixes

Docs

CI Improvements

muratovv and others added 30 commits January 12, 2018 15:03
 - Set default template argument for merge_unique, change order
 - Add merge predicate to set_union

Signed-off-by: Fedor Muratov <[email protected]>
* Add completer type for determine complete transactions
* Add stub of expiration of transactions
* Fix tests
* Add test for determine complete transactions
* Add type reference for transaction timestamp

Signed-off-by: Fedor Muratov <[email protected]>
Signed-off-by: Fedor Muratov <[email protected]>
* Move state in own directory
* Add tests for new behaviour

Signed-off-by: Fedor Muratov <[email protected]>
- fix typos;
- move set operations into common;

Signed-off-by: Fedor Muratov <[email protected]>
* move model hashes to model module
* refactor mst state
* move dereference equals to common/types

Signed-off-by: Fedor Muratov <[email protected]>
   - separate user and inheritance interfaces
   - modification methods covered by locks
   - add default logger
   - add types file with common types and little refactor state.

Signed-off-by: Fedor Muratov <[email protected]>
- fix test on same transaction
- rework todo in helper

Signed-off-by: Fedor Muratov <[email protected]>
…natures.

* Add const peer type in common used types
* Fix guard in const context

Signed-off-by: Fedor Muratov <[email protected]>
Signed-off-by: luckychess <[email protected]>
- Little rework insertion of new elements
- Add using for index type

Signed-off-by: Fedor Muratov <[email protected]>
Signed-off-by: luckychess <[email protected]>
- add time parameter on diff of states
- add tests for storage
- move peer hashing strategy to model

Signed-off-by: Fedor Muratov <[email protected]>
Signed-off-by: luckychess <[email protected]>
- make interfaces more copy friendly
- fix typos
- remove redundant test
- fix broken global cmake lists
l4l and others added 22 commits June 17, 2018 13:58
…ex (#1471)

Add to Hash constructor from Blob type in order to create Hash from hex string in Java bindings.

Signed-off-by: Alexey Chernyshov <[email protected]>
* Update to block variant

Signed-off-by: kamilsa <[email protected]>
Add to Hash fromHexString method

Signed-off-by: Alexey Chernyshov <[email protected]>
Signed-off-by: Igor Egorov <[email protected]>

Eventually, develop might fail to build due to missing dependency in synchronizer's cmake.
* Transaction sequence interface

Signed-off-by: kamilsa <[email protected]>
* Fix on commit

Signed-off-by: kamilsa <[email protected]>
Function getTopBlock() is introduced
* Separate server and client objects in build for shared_model

* Enable android bindings build from current commit instead of develop

* Remove parallelism on Windows for python and java

* Add missing ciso646 include

* Enable js tests for getTxs, remove proto perms from swig iface

* Fix crypto patch for shared model subdirectory

Signed-off-by: Andrei Lebedev <[email protected]>
* Update readme with relevant information

* Add jerkins badge

Signed-off-by: Nikolay Yushkevich <[email protected]>
@kamilsa
Copy link
Contributor

kamilsa commented Jun 22, 2018

Please also add hyperledger-iroha/iroha#1402 to release notes. This is new account assets query allowing to retrieve all user's assets

l4l and others added 3 commits June 22, 2018 18:25
* Cleanup SDK interface

* Exclude protobuf/permissions

* Use uint16 as QuorumType

Signed-off-by: Kitsu <[email protected]>
* Add grant permission test

Signed-off-by: Nikolay Yushkevich <[email protected]>

* Apply clang-format

Signed-off-by: Nikolay Yushkevich <[email protected]>

* Eject createAccounts function

Signed-off-by: Nikolay Yushkevich <[email protected]>

* Eject method of account creation

Signed-off-by: Nikolay Yushkevich <[email protected]>

* Apply clang-format

Signed-off-by: Nikolay Yushkevich <[email protected]>

* Update with new permissions

failed all positive tests - grant is broken

Signed-off-by: Nikolay Yushkevich <[email protected]>

* Change numeration of cases

Signed-off-by: Nikolay Yushkevich <[email protected]>

* New line

Signed-off-by: Nikolay Yushkevich <[email protected]>

* Fix transfer asset test wrong precision

Signed-off-by: Nikita Alekseev <[email protected]>

# Conflicts:
#	irohad/ametsuchi/impl/temporary_wsv_impl.cpp

* Apply review corrections

Signed-off-by: Nikolay Yushkevich <[email protected]>

* Apply review corrections

Signed-off-by: Nikolay Yushkevich <[email protected]>

* Apply clang-format

Signed-off-by: Nikolay Yushkevich <[email protected]>

* Remove pass-by-reference for primitives

Signed-off-by: Nikolay Yushkevich <[email protected]>
* Add blocks query endpoint

Signed-off-by: kamilsa <[email protected]>
@neewy
Copy link
Contributor Author

neewy commented Jun 22, 2018

@kamilsa for some reason it disappeared from notes

@neewy
Copy link
Contributor Author

neewy commented Jun 22, 2018

@kamilsa done

@bakhtin bakhtin merged commit 60075d0 into master Jun 22, 2018
@sorabot
Copy link

sorabot commented Jun 22, 2018

SonarQube analysis reported 17 issues

  • MAJOR 1 major
  • MINOR 16 minor

Top 10 issues

  1. MAJOR query_response_template.hpp#L204: syntax error rule
  2. MINOR mutable_storage_impl.cpp#L44: Variable 'command_executor_' is assigned in constructor body. Consider performing initialization in initialization list. rule
  3. MINOR postgres_block_query.hpp#L81: Unused private function: 'PostgresBlockQuery::getBlockIds' rule
  4. MINOR postgres_block_query.hpp#L89: Unused private function: 'PostgresBlockQuery::getBlockId' rule
  5. MINOR postgres_block_query.hpp#L99: Unused private function: 'PostgresBlockQuery::callback' rule
  6. MINOR postgres_wsv_command.hpp#L107: Unused private function: 'PostgresWsvCommand::makeCommandResult' rule
  7. MINOR temporary_wsv_impl.cpp#L36: Variable 'command_executor_' is assigned in constructor body. Consider performing initialization in initialization list. rule
  8. MINOR temporary_wsv_impl.cpp#L37: Variable 'command_validator_' is assigned in constructor body. Consider performing initialization in initialization list. rule
  9. MINOR yac_gate_impl.hpp#L66: Unused private function: 'YacGateImpl::copySignatures' rule
  10. MINOR command_executor.cpp#L36: Function parameter 'command_name' should be passed by reference. rule

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.