Skip to content

Decentralization of configuration parameters - Phase 1 #2692

@jpraynaud

Description

@jpraynaud

Why

We need to decentralize the configuration parameters of the Mithril network (protocol parameters and certification parameters - signed entity types and their specific configuration parameters e.g. cardano_transactions_signing_config). In a first phase , we want to implement a full synchronization of the network based on the leader aggregator, and in a second phase have the configuration stored on the Cardano chain.

What

Implement the Phase 1 of the decentralization plan of the configuration parameters for Mithril networks.

How

  • Create a new internal internal/mithril-protocol-config crate for the Mithril network configuration
  • Check if we need to publish the crate: not needed
  • Add the new trait MithrilNetworkConfigurationProvider
  • Implement the Local parameters for the MithrilNetworkConfigurationProvider trait
  • Implement the REST client for the MithrilNetworkConfigurationProvider trait
  • Adapt the signer (including dependency injection)
  • Adapt the aggregator (including dependency injection):
    • Leader
    • Follower
  • Integration tests
    • Signer
    • Leader aggregator
    • Follower aggregator
  • End to end tests
  • Update documentation

Fix for aggregator implementation

To gracefully support the new design, some modifications need to be done:

Refactoring work

  • Rename available_signed_entity_types with enabled_signed_entity_types
  • Add /protocol-configuration route in aggregator to expose protocol configurations with epochs
  • Handle the new route in mithril-relay
  • Deprecate the protocol parameters and cardano transaction signing config in EpochSettingsMessage?
  • Update OpenAPI specifications
  • Make sure that information advertised by this route are synchronized with the /epoch-settings route
  • Update get_network_configuration to take an epoch as input
  • Update the HTTP client implementation to use the new route
  • Move handling discrepancies at the end of the dependency builder for the serve command

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions