53 个版本 (35 个主要中断)
37.0.0 | 2024 年 7 月 18 日 |
---|---|
36.0.0 | 2024 年 7 月 12 日 |
35.0.0 | 2024 年 6 月 24 日 |
34.0.0 | 2024 年 5 月 23 日 |
2.0.0-alpha.5 | 2020 年 3 月 24 日 |
#1429 在 魔法豆
每月下载 3,282 次
用于 12 个票仓(4 个直接使用)
2.5MB
45K SLoC
社会模块
概述
社会模块是一个经济游戏,旨在激励用户参与并维持会员制社会。
用户类型
在任何时候,社会中的用户可以是以下之一
- 出价者 - 想要加入社会的用户。
- 候选人 - 将被投票加入社会的用户。
- 暂停候选人 - 未赢得投票的用户。
- 成员 - 社会的成员。
- 暂停成员 - 累积过多违规或未通过会员挑战的社会成员。
在非暂停成员中,始终有一个
- 首领 - 不会被暂停的成员。
- 捍卫者 - 其会员资格受到质疑并被重新投票的成员。
在社会的非暂停成员中,随机选择一部分作为“怀疑者”。怀疑者的机制在下面的成员阶段中解释。
机制
奖励
通过社会财库支付的奖励激励成员参与社会。这些支付有一个成熟期,用户必须等待才能提取资金。
惩罚
可以通过削减尚未提取的奖励来惩罚成员。此外,成员可以累积“违规”,当它们达到最大违规限制时,他们将被暂停。
怀疑者
在投票期间,随机选择一部分成员作为“怀疑者”。这些怀疑者预计将对当前候选人进行投票。如果他们不投票,他们的怀疑者状态被视为拒绝投票,成员被认为“懒惰”,并且对每张缺失的选票给予一次违规。
会员挑战
在每个挑战轮次,随机选择一位现有成员来捍卫他们在社会的会员资格。然后,其他成员可以投票决定这位捍卫者是否应该留在社会中。简单多数决定投票结果。平局被视为挑战失败,但如果没有人投票,捍卫者总是可以在自己的挑战中获得免费投票,以保持在社会中。首脑成员免受会员挑战的负面结果。
社会财库
会员社会由本模块管理的财库独立资助。财库的一些子集被放入社会基金中,用于确定接受的出价数量。
增长率
会员社会可以以每个轮次10个接受的候选人为增长率增长,直到达到最大会员限制。一旦达到这个限制,候选人选择就会停滞,直到有空间接纳新成员。这可以通过通过随机挑战投票淘汰现有成员或通过治理增加最大会员数量来解决这个问题。
用户生命周期
用户可以经历以下阶段
+-------> User <----------+
| + |
| | |
+----------------------------------------------+
| | | | |
| | v | |
| | Bidder <-----------+ |
| | + | |
| | | + |
| | v Suspended |
| | Candidate +----> Candidate |
| | + + |
| | | | |
| + | | |
| Suspended +------>| | |
| Member | | |
| ^ | | |
| | v | |
| +-------+ Member <----------+ |
| |
| |
+------------------Society---------------------+
初始化
社会以一个自动选为首脑的单一成员初始化。
出价阶段
新用户必须出价才能加入社会。
用户可以通过预留保证金来出价。或者,已存在的成员可以通过“担保”代表用户出价。
出价包括用户加入社会希望获得的奖励信息。担保出价还可以请求将该奖励的一部分作为担保人为担保潜在候选人提供的小费。
每个轮次,出价根据奖励金额排序,模块选择社会基金在该期间可以支持的数量。
这些选定的出价成为候选人,并进入候选人阶段。未选中的出价保留在出价者池中,直到它们被选中或用户选择“取消出价”。
候选人阶段
一旦出价者成为候选人,成员将投票决定是否批准或拒绝该候选人进入社会。这个投票过程也发生在轮次期间。
候选人的批准和拒绝标准不在链上设置,并且可能因不同社会而异。
在每个轮次结束时,我们收集候选人的选票,并随机选择一张作为最终结果。
[ a-accept, r-reject, s-skeptic ]
+----------------------------------+
| |
| Member |0|1|2|3|4|5|6|7|8|9| |
| ----------------------------- |
| Vote |a|a|a|r|s|r|a|a|s|a| |
| ----------------------------- |
| Selected | | | |x| | | | | | | |
| |
+----------------------------------+
Result: Rejected
对随机选择的选票持相反意见的每位成员将因其未提取的支付被削减并增加违规次数而受到惩罚。
这些被削减的资金作为奖励给予随机选择与所选选票相同意见的用户,以奖励其参与投票。
如果候选人赢得投票,他们将作为未来的付款获得他们的出价奖励。如果出价是通过代金券进行的,他们将先获得他们应得的奖励部分,其余部分将支付给获胜的候选人。
选择一名获胜候选人为成员的头。这是根据获胜候选人积累的批准数量进行随机选择的。
如果候选人在投票中失败,他们将被暂停,而暂停判决来源将决定候选人是否需要再次通过出价过程,是否应该被接受加入会员协会,或者被拒绝并扣除其押金。
会员阶段
一旦候选人成为会员,他们的角色是参与协会。
常规参与包括对希望加入会员协会的候选人进行投票,并通过正确投票,会员将积累未来的付款。当付款成熟时,会员可以申领这些付款。
会员还可以为用户担保加入协会,并从新成员加入协会产生的费用中请求“小费”。在用户可能没有足够的余额来满足出价押金的情况下,这个过程非常有用。会员一次只能担保一个用户。
在轮换期间,随机选择一组会员作为“怀疑者”。这些怀疑者应投票决定当前候选人。如果他们不投票,他们的怀疑者状态将被视为拒绝票,会员被认为“懒惰”,并因每票缺失给予一次警告。
在轮换期间并行有一个挑战期。在挑战期间,随机选择一名会员来捍卫他们在协会的会员资格。其他会员通过传统的多数投票来决定该会员是否应该留在协会。平局被视为挑战失败。
如果会员积累了过多的警告或未能通过会员资格挑战,他们将被暂停。在会员暂停期间,他们无法申领成熟的付款。暂停判决来源将决定会员是否应该重新进入协会,或者被从协会中移除,并扣除所有未来的付款。
界面
可调用函数
对于普通用户
bid
- 用户可以通过保留押金来出价加入会员协会。unbid
- 用户可以撤回他们的加入出价,押金将被退还。
对于会员
vouch
- 会员可以代表用户出价加入会员协会。unvouch
- 会员可以撤销他们对用户的担保。vote
- 会员可以投票批准或拒绝候选人加入协会的请求。defender_vote
- 会员可以投票批准或拒绝捍卫者继续在协会的会员资格。payout
- 会员可以申领他们的第一次成熟付款。unfound
- 允许创始人当他们是唯一会员时解散协会。
对于超级用户
found
- 创始人来源可以启动这个协会。这对于在已运行的链上引导协会Pallet很有用。judge_suspended_member
- 暂停判决来源可以对暂停会员做出判决。judge_suspended_candidate
- 暂停判决来源可以对暂停候选人做出判决。set_max_membership
- ROOT来源可以更新协会的最大会员人数。最大会员人数必须大于1。
许可证:Apache-2.0
依赖关系
~17–32MB
~538K SLoC