Skip to content
This repository was archived by the owner on Jul 20, 2021. It is now read-only.
This repository was archived by the owner on Jul 20, 2021. It is now read-only.

R&D how blockchains with custom logic can do so with less copied Rivine code #606

@GlenDC

Description

@GlenDC

Thanks to the introduction of the RivineCG tool, generating a new Rivine blockchain became very easy and almost non-technical, even allowing the use of optional extensions for minting and authentication of addresses used in coin transfers.

The following chains are currently chains entirely generated by RivineCG:

However, it is currently TFChain is not generated yet, and GoldChain is only generated. Therefore:

  • investigate how chains can inject custom extensions:
    • including consensus plugins
    • CLI commands
    • HTTP API endpoints
  • currently it is already possible to overwrite CLI sub commands on a category level (e.g. all wallet commands, all explorer commands, ...), as this is required for chains that require custom logic in existing functionality provided by Rivine. However, often this customisation is only required for specific subcommands of that category and not all of them, so it would be great if we could make that customisation, optionally, even more granular;
  • modules such as the wallet module, are currently too much written as one big black box, therefore a refactor of that module needs to be investigated, allowing others to provide their own wallet module, without requiring all code to be copied. Ideally it also allows Go-written light clients to not have to reinvent the wheel for everything
  • investigate any other reason why currently GoldChain/TFChain have copied Rivine code in their codebase and how this can be potentially avoided or at the very least reduced;

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions