Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add an Iroha swarm analogue to Iroha 2 #2373

Closed
5 tasks done
appetrosyan opened this issue Jun 19, 2022 · 20 comments · Fixed by #3841
Closed
5 tasks done

Add an Iroha swarm analogue to Iroha 2 #2373

appetrosyan opened this issue Jun 19, 2022 · 20 comments · Fixed by #3841
Assignees
Labels
Enhancement New feature or request iroha2-dev The re-implementation of a BFT hyperledger in RUST QA-confirmed This bug is reproduced and needs a fix

Comments

@appetrosyan
Copy link
Contributor

appetrosyan commented Jun 19, 2022

The Iroha swarm tool allows generating docker-compose.yml files for specific numbers of peers.

Having such a tool would be useful for @Mingela and the DevOps team.

Issues/PRs that must be solved in order to close this issue:

@appetrosyan appetrosyan added Enhancement New feature or request iroha2-dev The re-implementation of a BFT hyperledger in RUST labels Jun 19, 2022
@antonovmike
Copy link

Hi!

@appetrosyan appetrosyan self-assigned this Oct 4, 2022
@AlexStroke
Copy link
Contributor

Someone problem to fix that is we can't run the LTS branch through docker-compose from the box without additional edits to the image name lts instead dev. I've already been stuck here several times to a finding of a problem when pulled the fresh lts.
telegram-cloud-photo-size-2-5229213929916448939-y.jpg

@AlexStroke
Copy link
Contributor

Existing developments:
https://github.com/antonovmike/docker_swarm

@appetrosyan
Copy link
Contributor Author

Make it a subcommand of kagami.

@0x009922
Copy link
Contributor

So, what are the requirements for the tool, and what are the exact problems we need to solve?

My understanding so far about the problems:

  • docker-compose.yml in the repository is not up-to-date. For example, it refers to iroha2:dev image while being in iroha2-lts branch and using it's configuration in configs/peer. This desynchronisation leads to compatibility issues.
  • We have docker-compose.yml, docker-compose-local.yml and docker-compose-single.yml. They all have not many differences, so it's generally a boilerplate which we also need to synchronise (files with each other). Furthermore, they don't cover use cases when the consumer needs some custom configuration with N peers, not 1 or 4.

Could you desribe more with what @Mingela and DevOps struggle with?

My understanding so far about the solution:

  1. The tool might be an interactive prompt CLI or a Web application. It depends on what exactly and how we need to build, I don't understand it yet. Also it depends on how the consumer will work with it, what will be more comfortable.
  2. I agree with @appetrosyan that this functionality should be a part of kagami. It will keep all Iroha accompanying tooling in a single place, like cargo or rustup for Rust. Also, we have plans to give kagami GUI, so the first point might disappear on its own.
  3. It should accept... what parameters? Only amount of peers to configure? Should it generate random keypairs for those peers?

Help me to clarify things please.

@6r1d
Copy link
Contributor

6r1d commented Mar 24, 2023

I agree with Dmitry here on having it as a part of Kagami: otherwise, it may get confusing, and Kagami-gui is planned anyway.

The branch and release should be a parameter too, but not necessarily a required one.
We can assume branches like lts or stable and the last version as our defaults.
But at the same time, users should have a way to answer what their release is. Or we could get the release info from the source and avoid that part of the argument.

The tool might be an interactive prompt CLI or a Web application. It depends on what exactly and how we need to build, I don't understand it yet.

We may have fewer options than Fish making the web config unnecessary. @appetrosyan mentioned that concept: https://lwn.net/Articles/832525/, https://fishshell.com/docs/current/cmds/fish_config.html

@Mingela
Copy link
Contributor

Mingela commented Mar 24, 2023

Reference for Iroha v1 swarm, jfyi
https://github.com/kuvaldini/iroha-swarm

@0x009922
Copy link
Contributor

The tool will generate a directory with docker-compose.yml and configurations for peers. This directory may also contain a cloned repo, depending on the arguments.

  • source - the main parameter. It might be one of:
    • Dockerhub. Then the argument will be the channel, i.e. either lts, dev or stable. It will set image: hyperledger/iroha2:{channel} in a docker compose file, and will download config files from GitHub at iroha2-{channel} branch.
    • Git. It will simply accept the revision in a form iroha2-lts or <long hash>, clone this revision and will specify build: path/to/local/git/clone in a docker compose file. It will also use configuration files from the cloned repo.
      Maybe it also makes sense to provide a shorthand for Git such as git:lts which will be understood as "Clone hyperledger/iroha at iroha2-lts"
    • Local path. It's almost the same as with Git, but it will use a local path.
  • dir - where to put the generated configuration. The tool will check whether it is empty or not (and will recursively create if it doesn't exist). If it is not empty, it will print a warning and exit. Additionally, accept an argument like dir-force-rewrite?
  • peers - amount of peers to generate.
    • Is there a need to configure each peer in particular? peer[0].torii_api_port form might be used
  • torii_api_port, defaults to 8080
  • torii_telemetry_port, defaults to 8081

I am not sure yet how to compose it all in a robust CLI interface, will do more research. Also, all of this could be prompted in an interactive mode.

@appetrosyan
Copy link
Contributor Author

TBH it doesn’t have to be CLI. I would prefer a CLI tool, but that’s only because it’d be easier for us to maintain.

@6r1d
Copy link
Contributor

6r1d commented Mar 31, 2023

I am not sure yet how to compose it all in a robust CLI interface, will do more research

What about a ncurses-based wizard, like https://docs.rs/tui/latest/tui/ at the start?
After that, you can copy the well-known settings into a non-interactive version.

I like the idea of making a new directory and not overwriting the config (although I may imagine batch scenarios when the output directory is a part of the configuration, too).

In general, the concept looks reasonable.

@0x009922
Copy link
Contributor

TBH it doesn’t have to be CLI. I would prefer a CLI tool, but that’s only because it’d be easier for us to maintain.

@appetrosyan, I think it would be easier to implement than building a complete GUI for Kagami. At least, for now. Or should I start working in this direction?

What about a ncurses-based wizard, like https://docs.rs/tui/latest/tui/ at the start?

@6r1d, well... it is a UI already. I think TUI is something between CLI and GUI that might not find its target audience. GUI might a complete "friendly" and "nicely-looking" option instead of a CLI, but will TUI worth the effort?

@appetrosyan
Copy link
Contributor Author

Let's go with a very basic clap-based CLI. We can extend it further when we need to.

@0x009922
Copy link
Contributor

After understanding more details of the task, I came to the conclusion that making kagami swarm a channel-agnostic tool (i.e. it can work with both dev, stable and lts channels) is bad idea. The reasons:

  • Kagami is not channel-agnostic itself. kagami config, kagami genesis, kagami schema etc are all channel-specific and closely coupled with the rest of Iroha codebase.
  • Iroha from different channels might need channel-specific configuration. This can be workarounded by fetching configs from GitHub at specified revision, though.
  • docker-compose.yml configuration might differ from channel to channel, therefore Kagami needs to maintain all of the options within Kagami. It produces difficult questions I don't want to dive into.

Thus, I came to a different understanding of how Kagami should handle different sources:

  • Kagami will not fetch configs & genesis from anywhere, but generate defaults on its own. If the user wants some other options (like when calling kagami genesis --syntetic to generate custom genesis), they might pass --no-default-configuration option and then fill the target directory with custom configs on their own.
    • Generated config & genesis will have null in places when values are passed through ENV in docker-compose.yml
  • When dockerhub is specified as a source, dockerhub image is used. The channel of the image is the channel Kagami is built on (I should research for possibility to use some proc-macro to get that info from git during the build).
  • When github is specified as a source, the repo from the revision Kagami was built from is cloned and used as a build source for Docker images
  • When path is specified as a source, local path to Iroha repo is used for building docker images.

@appetrosyan @6r1d, please let me know what you think.

@6r1d
Copy link
Contributor

6r1d commented Apr 14, 2023

a channel-agnostic tool

So, channels are equal to branches, as we've just discussed.

Kagami will not fetch configs & genesis from anywhere but generate defaults on its own

Sounds reasonable.

Generated config & genesis will have null in places when values are passed through ENV in docker-compose.yml

Suppose our goal is to save time for the user by providing defaults. In that case, I expect this to break things further: users won't know anything about environment variables, and Iroha will stop working.

0x009922 added a commit that referenced this issue Jun 8, 2023
* [refactor]: bump `clap`, scaffold `swarm` subcommand

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: transform `algorithm` to `ValueEnum`

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [feature]: implement basic flow

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [chore]: clear dead code

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: safer paths manipulations

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [fix]: sort generated services

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [test]: update snapshot

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [fix]: skip empty command serialisation; chores

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: define consts

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: pass workspace check; lints

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: chores

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [feat]: impl basic UI

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [fix]: fix shallow git clone

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [chore]: update ui

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: simplify resolution reporting

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: doc comments, naming, etc

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: move `swarm` mod

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: chores; update doc comments

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [fix]: fix config path in docker image

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [fix]: clippy lints

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [fix]: specify all trusted peers; set genesis key pair only for the genesis peer

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [chore]: add fixme

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: chores

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [test]: fix `kagami` and `iroha_config_base` tests

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [fix]: use `SocketAddr`

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: apply lints

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: allow any docker image; rename args

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: fix lints

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* Apply suggestions from code review

Co-authored-by: Ilia Churin <churin.ilya@gmail.com>
Signed-off-by: 0x009922 <a.marcius26@gmail.com>

* [chore]: remove extra doc

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [chore]: remove inaccurate comment

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: use `.dir()`

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: derive `Display` for `AlgorithmArg`

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: use `Error::FieldDeserialization`

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: apply lints

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: move secp256k1 seed len check to `iroha_crypto`

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: expand `swarm::key_gen` module

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [chore]: fix format

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [chore]: capitalise error messages

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

---------

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>
Signed-off-by: 0x009922 <a.marcius26@gmail.com>
Co-authored-by: Ilia Churin <churin.ilya@gmail.com>
AlexStroke pushed a commit to AlexStroke/iroha that referenced this issue Jun 8, 2023
* [refactor]: bump `clap`, scaffold `swarm` subcommand

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: transform `algorithm` to `ValueEnum`

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [feature]: implement basic flow

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [chore]: clear dead code

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: safer paths manipulations

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [fix]: sort generated services

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [test]: update snapshot

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [fix]: skip empty command serialisation; chores

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: define consts

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: pass workspace check; lints

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: chores

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [feat]: impl basic UI

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [fix]: fix shallow git clone

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [chore]: update ui

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: simplify resolution reporting

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: doc comments, naming, etc

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: move `swarm` mod

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: chores; update doc comments

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [fix]: fix config path in docker image

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [fix]: clippy lints

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [fix]: specify all trusted peers; set genesis key pair only for the genesis peer

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [chore]: add fixme

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: chores

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [test]: fix `kagami` and `iroha_config_base` tests

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [fix]: use `SocketAddr`

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: apply lints

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: allow any docker image; rename args

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: fix lints

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* Apply suggestions from code review

Co-authored-by: Ilia Churin <churin.ilya@gmail.com>
Signed-off-by: 0x009922 <a.marcius26@gmail.com>

* [chore]: remove extra doc

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [chore]: remove inaccurate comment

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: use `.dir()`

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: derive `Display` for `AlgorithmArg`

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: use `Error::FieldDeserialization`

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: apply lints

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: move secp256k1 seed len check to `iroha_crypto`

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: expand `swarm::key_gen` module

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [chore]: fix format

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [chore]: capitalise error messages

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

---------

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>
Signed-off-by: 0x009922 <a.marcius26@gmail.com>
Co-authored-by: Ilia Churin <churin.ilya@gmail.com>
@timofeevmd timofeevmd self-assigned this Jun 12, 2023
@timofeevmd
Copy link
Contributor

The basic functionality works:
directory with configuration files created
config files copied
docker compose created

but bugs were found @0x009922
#3603
#3604
#3605

@0x009922
Copy link
Contributor

0x009922 commented Jul 3, 2023

There are bugs and other tasks as separated issues, but this issue might be closed, I think.

upd: so we can close it only after verification, I see..

@0x009922 0x009922 closed this as completed Jul 3, 2023
@0x009922 0x009922 reopened this Jul 3, 2023
@appetrosyan
Copy link
Contributor Author

We also need to merge #3610

@timofeevmd
Copy link
Contributor

#3603 - @0x009922 close with comment
With @appetrosyan and @ilchu, we decided that we don't have a goal to make Kagami runnable outside of the repo root.

@timofeevmd
Copy link
Contributor

new bugs related
#3828
#3829

@0x009922
Copy link
Contributor

After some research and discussions, I came up with the following thoughts.

Decision to abandon Directory Mode

Currently, kagami swarm has two modes: Directory and File.

Developing Directory Mode turned out to be an exercise in futility. Its purpose was to generate a self-contained directory with peers configuration included, offering several options for the Docker image source:

  • --image <channel> to fetch a published one from Dockerhub
  • --build <path> to specify a path to a local Iroha repo clone
  • --build-from-github, essentially the same as --build, but cloning the repo for you

This approach led to some ambiguities, primarily related to the peers configuration. For instance:

  • Shall Swarm reuse the pre-built configuration files in the repo's /configs/peer? It can, in case of --build and --build-from-github, but what about --image?
  • If Swarm should build configurations on its own, does it need to contain parts of kagami config, kagami genesis, and kagami validator1, or should it clone the repo and build the necessary configurations?

These questions have resulted in overcomplicated code and bugs. More importantly, there is no current use case for Directory Mode.

Therefore, I propose to drop Directory Mode functionality and retain only File Mode. File Mode offers a more straightforward approach, free from the dependencies and complexities of Directory Mode. It is also used in the repo to generate sample Docker Compose configurations and is integrated into CI.

Transitioning to a separate binary1

Although File Mode (i.e., kagami swarm file) is the same pure as other Kagami commands, creating a separate iroha_swarm binary is the logical step for the following reasons:

  • All other Kagami commands produce their output directly to stdout. However, File Mode must know the output file name in order to resolve a potentially relative build path2.
  • Future developments might require Swarm to generate something more complex than a single file, justifying its separation.

Example usage

The usage of iroha_swarm will be as follows:

iroha_swarm \
    --build . \
    --peers 5 \
    --seed iroha \
    --config-dir ./configs/peer \
    --outfile docker-compose.dev.yml

Footnotes

  1. [suggestion] Separate validator and swarm from Kagami #3833 2

  2. E.g., with build path --build ../my-cloned-iroha and output file --outfile ./put/swarm/here/docker-compose.yml, the resulted file will contain:

    build: ../../../../my-cloned-iroha
    

@0x009922 0x009922 linked a pull request Aug 28, 2023 that will close this issue
3 tasks
0x009922 added a commit that referenced this issue Sep 4, 2023
* [refactor]: remove Swarm from Kagami; introduce refactored `iroha_swarm`

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: remove validator from Kagami; cleanup

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [misc]: fix workspace info, introduce `wasm_builder_cli`

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [ci]: update Genesis and Swarm cmds in scripts

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [feat]: produce workable `iroha_wasm_builder_cli`

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [feat]: enhance CLI UI with spinners

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [build]: remove `iroha_wasm_builder` dep from Kagami

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [build]: tree-shake unused spinners

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [test]: fix swarm tests

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [docs]: add README for `iroha_swarm`

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: remove `UserInterface` struct

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [feat]: add `--outfile` arg for wasm cli

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [docs]: document how to build the default validator

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [chore]: unused imports

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [docs]: link the directory to the cli

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [docs]: enhance warning about an inlined validator

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [chore]: use stdout

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: move `wasm_builder_cli` to `./tools/`

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

---------

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>
@timofeevmd timofeevmd added the QA-confirmed This bug is reproduced and needs a fix label Sep 6, 2023
mversic pushed a commit that referenced this issue Oct 17, 2023
* [refactor]: bump `clap`, scaffold `swarm` subcommand

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: transform `algorithm` to `ValueEnum`

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [feature]: implement basic flow

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [chore]: clear dead code

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: safer paths manipulations

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [fix]: sort generated services

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [test]: update snapshot

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [fix]: skip empty command serialisation; chores

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: define consts

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: pass workspace check; lints

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: chores

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [feat]: impl basic UI

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [fix]: fix shallow git clone

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [chore]: update ui

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: simplify resolution reporting

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: doc comments, naming, etc

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: move `swarm` mod

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: chores; update doc comments

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [fix]: fix config path in docker image

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [fix]: clippy lints

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [fix]: specify all trusted peers; set genesis key pair only for the genesis peer

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [chore]: add fixme

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: chores

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [test]: fix `kagami` and `iroha_config_base` tests

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [fix]: use `SocketAddr`

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: apply lints

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: allow any docker image; rename args

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: fix lints

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* Apply suggestions from code review

Co-authored-by: Ilia Churin <churin.ilya@gmail.com>
Signed-off-by: 0x009922 <a.marcius26@gmail.com>

* [chore]: remove extra doc

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [chore]: remove inaccurate comment

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: use `.dir()`

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: derive `Display` for `AlgorithmArg`

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: use `Error::FieldDeserialization`

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: apply lints

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: move secp256k1 seed len check to `iroha_crypto`

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: expand `swarm::key_gen` module

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [chore]: fix format

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [chore]: capitalise error messages

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

---------

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>
Signed-off-by: 0x009922 <a.marcius26@gmail.com>
Co-authored-by: Ilia Churin <churin.ilya@gmail.com>
mversic pushed a commit that referenced this issue Oct 17, 2023
* [refactor]: remove Swarm from Kagami; introduce refactored `iroha_swarm`

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: remove validator from Kagami; cleanup

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [misc]: fix workspace info, introduce `wasm_builder_cli`

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [ci]: update Genesis and Swarm cmds in scripts

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [feat]: produce workable `iroha_wasm_builder_cli`

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [feat]: enhance CLI UI with spinners

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [build]: remove `iroha_wasm_builder` dep from Kagami

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [build]: tree-shake unused spinners

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [test]: fix swarm tests

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [docs]: add README for `iroha_swarm`

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: remove `UserInterface` struct

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [feat]: add `--outfile` arg for wasm cli

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [docs]: document how to build the default validator

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [chore]: unused imports

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [docs]: link the directory to the cli

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [docs]: enhance warning about an inlined validator

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [chore]: use stdout

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

* [refactor]: move `wasm_builder_cli` to `./tools/`

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>

---------

Signed-off-by: Dmitry Balashov <a.marcius26@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Enhancement New feature or request iroha2-dev The re-implementation of a BFT hyperledger in RUST QA-confirmed This bug is reproduced and needs a fix
Projects
Archived in project
Development

Successfully merging a pull request may close this issue.

7 participants