|
15 | 15 | // See the License for the specific language governing permissions and |
16 | 16 | // limitations under the License. |
17 | 17 |
|
| 18 | +//! # Alliance Pallet |
| 19 | +//! |
| 20 | +//! The Alliance Pallet provides a DAO to form an industry group that does two main things: |
| 21 | +//! |
| 22 | +//! - provide a set of ethics against bad behaviors. |
| 23 | +//! - provide recognition and influence for those teams that contribute something back to the ecosystem. |
| 24 | +//! |
| 25 | +//! ## Overview |
| 26 | +//! |
| 27 | +//! The Alliance first needs to initialize the Founders with sudo permissions. |
| 28 | +//! After that, anyone with an approved identity and website can apply to become a Candidate. |
| 29 | +//! Members will initiate a motion to determine whether a Candidate can join the Alliance or not. |
| 30 | +//! The motion requires the approval of over 2/3 majority. |
| 31 | +//! The Alliance can also maintain a blacklist list about accounts and websites. |
| 32 | +//! Members can also vote to update the alliance's rule and make announcements. |
| 33 | +//! |
| 34 | +//! ### Terminology |
| 35 | +//! |
| 36 | +//! - Rule: The IPFS Hash of the Alliance Rule for the community to read |
| 37 | +//! and the alliance members to enforce for the management. |
| 38 | +//! |
| 39 | +//! - Announcement: An IPFS hash of some content that the Alliance want to announce. |
| 40 | +//! |
| 41 | +//! - Member: An account which is already in the group of the Alliance, |
| 42 | +//! including three types: Founder, Fellow, Ally. |
| 43 | +//! Member can also be kicked by super majority motion or retire by itself. |
| 44 | +//! |
| 45 | +//! - Founder: An account who is initiated by sudo with normal voting rights for basic motions |
| 46 | +//! and special veto rights for rule change and ally elevation motions. |
| 47 | +//! |
| 48 | +//! - Fellow: An account who is elevated from Ally by Founders and other Fellows from Ally. |
| 49 | +//! |
| 50 | +//! - Ally: An account who is approved by Founders and Fellows from Candidate. |
| 51 | +//! An Ally doesn't have voting rights. |
| 52 | +//! |
| 53 | +//! - Candidate: An account who is trying to become a member. |
| 54 | +//! The applicant should already have an approved identity with website. |
| 55 | +//! The application should be submitted by the account itself with some token as deposit, |
| 56 | +//! or be nominated by an existing Founder or Fellow for free. |
| 57 | +//! |
| 58 | +//! - Blacklist: A list of bad websites and addresses, and can be added or removed items by Founders and Fellows. |
| 59 | +//! |
| 60 | +//! ## Interface |
| 61 | +//! |
| 62 | +//! ### Dispatchable Functions |
| 63 | +//! |
| 64 | +//! #### For General Users |
| 65 | +//! - `submit_candidacy` - Submit the application to become a candidate with deposit. |
| 66 | +//! |
| 67 | +//! #### For Members (All) |
| 68 | +//! - `retire` - Member retire to out of the Alliance and release its deposit. |
| 69 | +//! |
| 70 | +//! #### For Members (Founders/Fellows) |
| 71 | +//! |
| 72 | +//! - `propose` - Propose a motion. |
| 73 | +//! - `vote` - Vote on a motion. |
| 74 | +//! - `close` - Close a motion with enough votes or expired. |
| 75 | +//! - `set_rule` - Initialize or update the alliance's rule by IPFS hash. |
| 76 | +//! - `announce` - Make announcement by IPFS hash. |
| 77 | +//! - `nominate_candidacy` - Nominate a non-member to become a Candidate for free. |
| 78 | +//! - `approve_candidate` - Approve a candidate to become an Ally. |
| 79 | +//! - `reject_candidate` - Reject a candidate and slash its deposit. |
| 80 | +//! - `elevate_ally` - Approve an ally to become a Fellow. |
| 81 | +//! - `kick_member` - Kick a member and slash its deposit. |
| 82 | +//! - `add_blacklist` - Add some items of account and website in the blacklist. |
| 83 | +//! - `remove_blacklist` - Remove some items of account and website from the blacklist. |
| 84 | +//! |
| 85 | +//! #### For Members (Only Founders) |
| 86 | +//! - `veto` - Veto on a motion about `set_rule` and `elevate_ally`. |
| 87 | +//! |
| 88 | +//! #### For Super Users |
| 89 | +//! - `init_founders` - Initialize the founding members. |
| 90 | +//! |
| 91 | +
|
18 | 92 | #![cfg_attr(not(feature = "std"), no_std)] |
19 | 93 |
|
20 | 94 | mod benchmarking; |
|
0 commit comments