You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The current governance mechanism in the Subtensor blockchain needs to be revised to introduce a new group called "SubnetOwners" alongside the existing "Triumvirate" and "Senate" groups. The goal is to establish a checks and balances system where a proposal must be accepted by the other two groups in order to pass.
For instance, if the Triumvirate proposes a change, both the SubnetOwners and Senate must accept it for the proposal to be enacted. Each acceptance group should have a configurable minimum threshold for proposal acceptance.
Acceptance Criteria
Introduce a new "SubnetOwners" group in the governance mechanism.
Modify the proposal process to require acceptance from the other two groups for a proposal to pass.
Implement configurable minimum thresholds for each acceptance group.
Update the existing code to accommodate the new governance structure.
Tasks
Substrate (rust)
Create a new SubnetOwners struct and associated storage items.
// runtime/src/lib.rs// ...pubstructSubnetOwners;implSubnetOwners{fnis_member(account:&AccountId) -> bool{// Implement logic to check if an account is a member of SubnetOwners// ...}fnmembers() -> Vec<AccountId>{// Implement logic to retrieve the list of SubnetOwners members// ...}fnmax_members() -> u32{// Implement logic to retrieve the maximum number of SubnetOwners members// ...}}// ...
Modify the propose function to include the new acceptance requirements.
// pallets/collective/src/lib.rs// ...#[pallet::call]impl<T:Config<I>,I:'static>Pallet<T,I>{// ...#[pallet::call_index(2)]#[pallet::weight(/* ... */)]pubfnpropose(origin:OriginFor<T>,proposal:Box<<TasConfig<I>>::Proposal>,#[pallet::compact]length_bound:u32,duration:BlockNumberFor<T>,) -> DispatchResultWithPostInfo{// ...// Check if the proposer is a member of the Triumvirateensure!(T::CanPropose::can_propose(&who), Error::<T, I>::NotMember);// ...// Initialize vote trackers for Senate and SubnetOwnerslet senate_votes = Votes{
index,threshold:SenateThreshold::get(),ayes: sp_std::vec![],nays: sp_std::vec![],
end,};let subnet_owners_votes = Votes{
index,threshold:SubnetOwnersThreshold::get(),ayes: sp_std::vec![],nays: sp_std::vec![],
end,};// Store the vote trackers
<SenateVoting<T,I>>::insert(proposal_hash, senate_votes);
<SubnetOwnersVoting<T,I>>::insert(proposal_hash, subnet_owners_votes);// ...}// ...}// ...
Implement configurable minimum thresholds for each acceptance group.
Description
The current governance mechanism in the Subtensor blockchain needs to be revised to introduce a new group called "SubnetOwners" alongside the existing "Triumvirate" and "Senate" groups. The goal is to establish a checks and balances system where a proposal must be accepted by the other two groups in order to pass.
For instance, if the Triumvirate proposes a change, both the SubnetOwners and Senate must accept it for the proposal to be enacted. Each acceptance group should have a configurable minimum threshold for proposal acceptance.
Acceptance Criteria
Tasks
Substrate (rust)
SubnetOwners
struct and associated storage items.propose
function to include the new acceptance requirements.do_vote
function to handle voting from the newSubnetOwners
group.Python API
TODO:
The text was updated successfully, but these errors were encountered: