Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

Commit

Permalink
Allow Alliance Fellows to Give Up Voting Rights (#12730)
Browse files Browse the repository at this point in the history
* allow fellows to abdicate voting rights

* rename founders to founding fellows, give equal power

* Drop FoundingFellow role and veto call (#12762)

* drop FoundingFellow role

* drop veto call

* Storage migration to remove founder role (#12766)

* storage migration to remove founder role

* skip migration if no members

* truncate the final fellows set if overflows

* change log - action order

* MemberAbdicated -> FellowAbdicated

Co-authored-by: Muharem Ismailov <[email protected]>
  • Loading branch information
joepetrowski and muharem authored Nov 25, 2022
1 parent ab6142f commit 3e91823
Show file tree
Hide file tree
Showing 10 changed files with 614 additions and 775 deletions.
4 changes: 0 additions & 4 deletions bin/node/runtime/src/impls.rs
Original file line number Diff line number Diff line change
Expand Up @@ -97,10 +97,6 @@ impl ProposalProvider<AccountId, Hash, RuntimeCall> for AllianceProposalProvider
AllianceMotion::do_vote(who, proposal, index, approve)
}

fn veto_proposal(proposal_hash: Hash) -> u32 {
AllianceMotion::do_disapprove_proposal(proposal_hash)
}

fn close_proposal(
proposal_hash: Hash,
proposal_index: ProposalIndex,
Expand Down
4 changes: 1 addition & 3 deletions bin/node/runtime/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1574,8 +1574,7 @@ impl pallet_collective::Config<AllianceCollective> for Runtime {
}

parameter_types! {
pub const MaxFounders: u32 = 10;
pub const MaxFellows: u32 = AllianceMaxMembers::get() - MaxFounders::get();
pub const MaxFellows: u32 = AllianceMaxMembers::get();
pub const MaxAllies: u32 = 100;
pub const AllyDeposit: Balance = 10 * DOLLARS;
pub const RetirementPeriod: BlockNumber = ALLIANCE_MOTION_DURATION_IN_BLOCKS + (1 * DAYS);
Expand Down Expand Up @@ -1606,7 +1605,6 @@ impl pallet_alliance::Config for Runtime {
type IdentityVerifier = ();
type ProposalProvider = AllianceProposalProvider;
type MaxProposals = AllianceMaxProposals;
type MaxFounders = MaxFounders;
type MaxFellows = MaxFellows;
type MaxAllies = MaxAllies;
type MaxUnscrupulousItems = ConstU32<100>;
Expand Down
34 changes: 15 additions & 19 deletions frame/alliance/README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Alliance Pallet

The Alliance Pallet provides a collective that curates a list of accounts and URLs, deemed by
the voting members to be unscrupulous actors. The alliance
the voting members to be unscrupulous actors. The Alliance

- provides a set of ethics against bad behavior, and
- provides recognition and influence for those teams that contribute something back to the
Expand All @@ -19,19 +19,17 @@ to update the Alliance's rule and make announcements.
### Terminology

- Rule: The IPFS CID (hash) of the Alliance rules for the community to read and the Alliance
members to enforce. Similar to a Code of Conduct.
members to enforce. Similar to a Charter or Code of Conduct.
- Announcement: An IPFS CID of some content that the Alliance want to announce.
- Member: An account that is already in the group of the Alliance, including three types:
Founder, Fellow, or Ally. A member can also be kicked by the `MembershipManager` origin or
retire by itself.
- Founder: An account who is initiated by Root with normal voting rights for basic motions and
special veto rights for rule change and Ally elevation motions.
- Fellow: An account who is elevated from Ally by Founders and other Fellows.
- Ally: An account who would like to join the alliance. To become a voting member, Fellow or
Founder, it will need approval from the `MembershipManager` origin. Any account can join as an
Ally either by placing a deposit or by nomination from a voting member.
- Unscrupulous List: A list of bad websites and addresses, items can be added or removed by
Founders and Fellows.
Fellow, or Ally. A member can also be kicked by the `MembershipManager` origin
or retire by itself.
- Fellow: An account who is elevated from Ally by other Fellows.
- Ally: An account who would like to join the Alliance. To become a voting member (Fellow), it
will need approval from the `MembershipManager` origin. Any account can join as an Ally either
by placing a deposit or by nomination from a voting member.
- Unscrupulous List: A list of bad websites and addresses; items can be added or removed by
voting members.

## Interface

Expand All @@ -43,10 +41,11 @@ to update the Alliance's rule and make announcements.

#### For Members (All)

- `give_retirement_notice` - Give a retirement notice and start a retirement period required to pass in order to retire.
- `give_retirement_notice` - Give a retirement notice and start a retirement period required to
pass in order to retire.
- `retire` - Retire from the Alliance and release the caller's deposit.

#### For Members (Founders/Fellows)
#### For Voting Members

- `propose` - Propose a motion.
- `vote` - Vote on a motion.
Expand All @@ -59,12 +58,9 @@ to update the Alliance's rule and make announcements.
- `add_unscrupulous_items` - Add some items, either accounts or websites, to the list of
unscrupulous items.
- `remove_unscrupulous_items` - Remove some items from the list of unscrupulous items.

#### For Members (Only Founders)

- `veto` - Veto on a motion about `set_rule` and `elevate_ally`.
- `abdicate_fellow_status` - Abdicate one's voting rights, demoting themself to Ally.

#### Root Calls

- `init_members` - Initialize the Alliance, onboard founders, fellows, and allies.
- `init_members` - Initialize the Alliance, onboard fellows and allies.
- `disband` - Disband the Alliance, remove all active members and unreserve deposits.
Loading

0 comments on commit 3e91823

Please sign in to comment.