Issue 2056 | Create a iroha procedural macro for impl FromStr for AssetValueType and other C like enums |
Enhancementgood first issueiroha2 | The following macro invokation ``` easy_from_str_impl! {AssetValueType, Quantity, BigQuantity, Fixed, Store} ``` does not automatically generate code for all variants. This should be replaced with a custom derive macro for FromStr. |
Created At 2022-04-04 16:20:44 +0000 UTC
Issue 2053 | Unit test the `private_blockchain` permissions validators |
good first issueiroha2Tests | At present we don't have any unit tests for the `private_blockchain` use case. It would be important to include them in the test coverage of the integration tests. |
Created At 2022-04-04 08:42:55 +0000 UTC
Issue 2047 | Add `non_zero` numeric types where acceptable |
good first issueiroha2Optimization | Discriminant elision may sometimes be effected if the underlying type has a [niche](https://github.com/rust-lang/unsafe-code-guidelines/blob/master/reference/src/layout/enums.md). This fact can be exploited to save one machine word's worth of space in enumerations which are option-like (i.e. can be discriminated using a single bit). |
Created At 2022-04-01 12:33:57 +0000 UTC
Issue 2035 | Add macro to remove boilerplate from `client/tests/integration` |
good first issueiroha2 | ```rust let (_rt, _peer, mut test_client) = ::start_test_with_runtime(); wait_for_genesis_committed(&vec[test_client.clone()], 0); ``` is repeated at the top of almost every test. We should have a proc-macro `#[integration]` which adds this boilerplate, but allows specifying the number of peers, the genesis, the configuration options and a few other things. #### Optional Remove the `start_test_with_runtime` and replace it with the most general `fn` from `test_network`. Instead use the `proc_macro` args to add optional customisation. </td> </tr> </table> Created At 2022-03-30 07:27:48 +0000 UTC </div> Issue 2017 | Integration test to check if role is removed from accounts after burning | good first issueiroha2Tests | There was a bug, when role was removed only from domain and not from accounts. This is fixed in #1984. Now we need a test for it | Created At 2022-03-28 10:36:23 +0000 UTC Issue 2009 | Create an easy way to register trigger using `Client` | Enhancementgood first issueiroha2 | Most of our downstream clients may want a feature to easy register trigger. So it should be a new method in `Client` structure. It should be looking something like `build_register_tirgger_isi()` in `client/tests/integration/triggers/*` | Created At 2022-03-25 11:29:57 +0000 UTC Issue 2007 | Grant and revoke role emit `PermissionAdded`/`PermissionRemoved` events | Buggood first issuequestioniroha2 | take a look at `smartcontracts/isi/account.rs` implementation of `Execute` for grant/revoke of `Role` and you will see that permission events are returned for granting and revoking both roles and permission tokens. Is this fine? Also `PermissionRemoved` event is emitted in `Unregister` in `smartcontracts/isi/domain.rs` </td> </tr> </table> Created At 2022-03-25 07:42:07 +0000 UTC </div> Issue 2004 | Compile time checking for architecture dependent types on serialized structures | Enhancementgood first issueiroha2 | It would be useful to have compile time checks that ensure our serialized and deserialized types are identical across architectures so that we don't reintroduce fields containing eg usize/isize in future. | Created At 2022-03-24 19:47:04 +0000 UTC Issue 2000 | Disallow empty `Identifiers` | help wantediroha2 | At the moment it is allowed to create empty `Name`, `DomainId`, `AccountId`, etc. Should we continue to allow empty string identifiers or should we forbid them. What about using `Option`? It should be noted that empty string is a well defined identifier | Created At 2022-03-23 08:14:01 +0000 UTC Issue 1996 | Move `GenesisDomain` and `GenesisAccount` to `iroha_core` | good first issueiroha2 | Currently, genesis domain and account are in `iroha_data_model`. It is my understanding that they are only used in `iroha_core` and should in fact not be presented to the user through data model API. Therefore, they should be moved into `iroha_core` | Created At 2022-03-22 14:39:32 +0000 UTC Issue 1995 | `serde` validation hook in deserialize | good first issueiroha2 | It is quite often that we need to write custom `serde::Deserialize` implementations just to validate structure's invariants. If possible, we should write some sort of a hook into serde macro system that would take validation function and generate deserialize implementation for a struct. Also, maybe there is some crate offering this functionality or it can be done with serde. | Created At 2022-03-22 13:24:05 +0000 UTC Issue 1992 | Consolidate supporting tools in the `tools` folder of the project. | good first issueiroha2 | Iroha is shipped with multiple supporting binaries that can be classified as tools. I propose moving - iroha_docs - iroha_crypto_cli - iroha_schema_bin into the `tools` folder in the project. | Created At 2022-03-22 06:45:33 +0000 UTC Issue 1990 | Support running Iroha without `config.json` using pure environment variables. | good first issueiroha2 | </td> </tr> </table> Created At 2022-03-22 05:48:48 +0000 UTC </div> Issue 1988 | `PartialEq` and `PartialOrd` of `Identifiable` structures | help wantedgood first issueiroha2 | Identifiable structures, such as `Domain`, derive their implementation of `PartialEq`, but have the following implementation of `PartialOrd`: ```rs impl PartialOrd for Domain { #[inline] fn partial_cmp(&self, other: &Self) -> Option { Some(self.id().cmp(&other.id)) } } ``` Would it make sense to have equivalent implementation of `PartialEq` instead of deriving it? Other `Identifiable` structures should be considered as well </td> </tr> </table> Created At 2022-03-21 19:32:15 +0000 UTC </div> Issue 1974 | Replace `blocks()` with `visit_blocks()` in WSV | good first issueiroha2Refactor | Right now `WorldStateView::blocks()` has locking behaviour if user stores somewhere an iterator from this function. This can be fixed by replacing it with `visit_blocks()` function, which looks something like this: ```rust /// Visit and apply `f` for every block /// /// # Errors /// Throws up first `f` error pub fn visit_blocks(&self, f: F) -> Result<(), Error> where F: Fn(&VersionedCommittedBlock) -> Result<(), Error>, ``` In this way user can't store reference to a block, cause it is passed as a function parameter and **Rust** won't allow to save references like that </td> </tr> </table> Created At 2022-03-16 10:09:35 +0000 UTC </div> Issue 1934 | Handle every `torii::Error` into appropriate response | good first issueiroha2api-changesUI | An unhandled custom rejection returns 500 ISE. https://docs.rs/warp/latest/warp/reject/fn.custom.html So every `torii::Error` case should be converted into explicit response in `iroha_core::torii::routing::handle_rejection`. Remark that `torii::Error` has already `impl Reply` | Created At 2022-02-25 07:08:20 +0000 UTC Issue 1926 | Add explicit signal handling | Enhancementgood first issueiroha2 | </td> </tr> </table> Created At 2022-02-20 15:49:39 +0000 UTC </div> Issue 1914 | Store rejection reasons for blocks | good first issueiroha2UI | </td> </tr> </table> Created At 2022-02-17 11:24:50 +0000 UTC </div> Issue 1913 | Refactor `DEADLOCK_ACTOR` to use `once_cell` in `iroha/actor/src/deadlock.rs` | good first issueiroha2Refactor | </td> </tr> </table> Created At 2022-02-17 11:17:30 +0000 UTC </div> Issue 1896 | Investigate what happens when events sender is not configured | Buggood first issueiroha2 | This [piece of code](https://github.com/hyperledger/iroha/blob/iroha2-dev/core/src/wsv.rs#L223) in `core/src/wsv.rs` should be investigated: ```rs fn produce_events(&self, events: impl IntoIterator<Item = DataEvent>) { let events = events.into_iter().map(Event::from); let events_sender = if let Some(sender) = &self.events_sender { sender } else { return warn!("wsv does not equip an events sender"); }; for event in events { drop(events_sender.send(event)) } } ``` I can't say why this compiles, maybe it `panics` inside the macro. Probably an error should be returned or events just dropped | Created At 2022-02-09 20:47:13 +0000 UTC Issue 1885 | Add complete IPFS path validation | Enhancementgood first issueiroha2 | Complete validation requires checking if path is composed only from valid hashes [ipfs](https://docs.rs/ipfs/latest/ipfs/) crate source code can be helpfull ## Alternative implementations https://github.com/hyperledger/iroha/issues/1606 | Created At 2022-02-08 18:24:02 +0000 UTC Issue 1883 | Remove sample configs from the Docker container | good first issueiroha2api-changes | > Aleksandr Petrosyan, [2022/02/08 15:19] > Another point that Bogdan raised is that we should stop including default configuration files inside containers. People boot up the container, see no error messages, assume everything is fine, when it isn't. > > S Sato, [2022/02/08 16:30] > [In reply to Aleksandr Petrosyan] > The following would be one of the solutions: > - Convert config.json to sample.env > - Specify env_file: peer0.env .. for each peer in docker-compose.yml > - Direct users to edit and rename sample.env and use docker compose > https://docs.docker.com/compose/environment-variables/ > > S Sato, [2022/02/08 16:42] > [In reply to S Sato] > Not so much difference from directly writing environment section as current though > > Aleksandr Petrosyan, [2022/02/08 16:42] > [In reply to S Sato] > This is a simplification, however. > > Aleksandr Petrosyan, [2022/02/08 16:43] > If we can reduce the number of places where Iroha can be configured to just one, I don’t see an issue. > > S Sato, [2022/02/08 16:57] > [In reply to Aleksandr Petrosyan] > Yes, at least we can merge peer/config.json into environment variables, > but instead, iroha_config will have to have dotenv | Created At 2022-02-08 08:30:16 +0000 UTC | | | | | | | |