[Proposed] ACP-99: Implement using composition v2 - SecurityModule as entry point #674
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Why this should be merged
This should not necessarily be merged. It is intended to demonstrate a composition-based architecture that aligns with the proposed ACP-99 spec.
How this works
In this implementation, the SecurityModule is the contract that the end user interacts with to manage the validator set. The SecurityModule performs two functions:
All actions are routed through the SecurityModule to the ValidatorManager. The ValidatorManager is responsible for keeping the validator set up-to-date and attesting to it via ICM messages that are delivered to the P-Chain.
Comparison with the proposed ACP-99 spec
Compared to the proposed ACP-99 spec as written, this implementation removes
IACP99SecurityModule
altogether, as the exact function signatures depend on the implementation. For example, PoA SecurityModules don't need to lock assets, worry about delegation fees, or staking duration enforcement. The ACP-99 spec does account for this, but at the cost of requiring the user to interact with both the SecurityModule and the ValidatorManager.How this was tested
ERC20 e2e test case with validator registration and removal passing.
How is this documented