relab / hotstuff

MIT License
167 stars 53 forks source link

Refactor module system into separate package to reduce coupling between modules #44

Open meling opened 2 years ago

meling commented 2 years ago

Right now the module system is defined in the consensus package and requires that many interfaces and structs must be defined in this package resulting in stronger coupling between the different modules than what is desirable. Ideally, the module system should not be required to know about the different module types that it can support up front.

It is not clear to me if what I'm proposing is possible... That is, I'm creating this issue without having reviewed the code in-depth, and so do not have good advice to offer at the moment. However, it might be possible to take advantage of generics in such a refactoring effort.

Perhaps we could prepare a design doc to better understand the requirements, challenges, and possible design alternatives.