This PR extends the core framework's functionality based on #5 conversations and more.
There will be a Base and Advanced gatekeeper division with reusable Checker contracts. This is a huge breaking change compared to previous prototype implementation on zk-kit.
The usage of a nested mapping mapping(address => mapping(address => bool)) can make us able to simulate different deployed instances of Excubiae Gatekeeper and maintain a reference like 1 contract <> N independent states (who already passed the gatekeeper). This will allow us to get rid of the non-determinism in deployments and maintain a structure where navigating and managing the different gatekeepers smoothly.
Making the checks to return a boolean.
The change will allow for other changes, as:
[x] Checker independent contract instead of check() method
[x] Base and Advanced separation of concerns for Excubia and Checker contracts
[x] Common mappings to handle AlreadyPassed checks & logic
[x] Use mapping of mapping to handle 1 contract <> N independent gatekeeper states
[x] Checks must return a bool
[x] Separation of concerns for Excubia extensions (FreeForAllExcubia)
[x] Apply new naming and conventions
[x] Pattern: balance _internal vs external methods
[x] Full code coverage (create a fixture for base & advanced for testing purposes)
[x] Configs
[x] Base
[x] BaseChecker
[x] BasePolicy
[x] BaseVoting (integration)
[x] Advanced
[x] AdvancedChecker
[x] AdvancedPolicy
[x] AdvancedVoting (integration)
[x] Refactoring
[x] Review code comments and other in-code documentation
This PR extends the core framework's functionality based on #5 conversations and more.
Base
andAdvanced
gatekeeper division with reusableChecker
contracts. This is a huge breaking change compared to previous prototype implementation on zk-kit.mapping(address => mapping(address => bool))
can make us able to simulate different deployed instances of Excubiae Gatekeeper and maintain a reference like 1 contract <> N independent states (who already passed the gatekeeper). This will allow us to get rid of the non-determinism in deployments and maintain a structure where navigating and managing the different gatekeepers smoothly.The change will allow for other changes, as:
Checker
independent contract instead ofcheck()
methodBase
andAdvanced
separation of concerns forExcubia
andChecker
contractsAlreadyPassed
checks & logicbool
Excubia
extensions (FreeForAllExcubia
)_internal
vsexternal
methods