ACP-99: Validator Manager Solidity Standard #165
Replies: 2 comments 5 replies
-
ACP-99 Developer Community Call 🔊Meeting Date/Time: 11-26-2024, 14:30 UTC (10:30 EST) Purpose of the MeetingIn this meeting, we will discuss ACP-99, which proposes a standard of Avalanche L1 validator management alternative to the existing Validator Manager contracts published in preparation for the E-Upgrade. ACP-99 defines a reference interface for a minimal Validator Manager Solidity smart contract to be deployed on any Avalanche EVM chain, as well as a modular architecture to easily build custom “security modules” extensions of this contract. Who is invited?Any protocol developer, ACP author, researcher, or Avalanche community member is invited to attend this meeting. LinksSign Up Form: Google Form Preparation MaterialMandatoryACP-99 ReadMe Highly RecommendedKnowledge of the existing Validator Manager implementation would be helpful: AgendaThe call would cover the rationale and planned implementation of ACP-99. During the call, the following topics will be discussed:
|
Beta Was this translation helpful? Give feedback.
-
Generalizing ACP-99Background & MotivationACP-99 proposes a standard set of interfaces that should be implemented by any contract registered as a validator manager as defined in ACP-77. The specification includes a reference architecture that consists of two deployed contracts, the Ava Labs have developed a set of ACP-77 compliant validator manager contracts independent of ACP-99. Rather than deploying multiple contracts like the ACP-99 reference architecture, it is contained within a single deployed contract, with distinct polymorphic implementations providing the equivalent of ACP-99's "Security Modules" - e.g. PoA or PoS. This architecture can be made to fit the ACP-99 specification, though doing so breaks encapsulation since the Proposed ChangesThe following changes are proposed, with the goal to make ACP-99 as functionally robust as possible, while being generic to a variety of implementations. 1. Unify the interfaces to provide a single point of entryIn the current iteration of ACP-99, the two-contract architecture requires users to interact with both the I put together a rough demonstration that implements this unified interface as multiple contracts here. The unified interface looks like this: interface IACP99ValidatorManager {
function initializeValidatorSet(
ConversionData calldata conversionData,
uint32 messageIndex
) external;
function initializeValidatorRegistration(
ValidatorRegistrationInput calldata input,
uint64 weight
) external returns (bytes32);
function completeValidatorRegistration(uint32 messageIndex) external returns (bytes32) ;
function initializeEndValidation(bytes32 validationID) external;
function completeEndValidation(uint32 messageIndex) external returns (bytes32);
function initializeValidatorWeightChange(bytes32 validationID, uint64 weight) external returns (uint64) ;
function completeValidatorWeightChange(bytes32 validationID) external;
} Each method follows the same general pattern:
It's also worth noting that the single-contract design, is easily modified to fit this interface. 2 Abstract away deployment detailsThe method 3. Minimize the interfaceAny methods that are not strictly required to add or remove validators, or update active validator weight should be removed from the @Nuttymoon I'd greatly appreciate your feedback on this proposal. I'm not sure what changes you've made since the community call, but please let me know if anything in this proposal would conflict. |
Beta Was this translation helpful? Give feedback.
-
Proposes a standard Solidity contract interface for managing L1 validator sets with custom security modules (i.e. proof-of-authority, proof-of-stake, etc).
https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/99-validatorsetmanager-contract
Beta Was this translation helpful? Give feedback.
All reactions