想象一下,你在 Kusama 网络上为 PolkaWorld 理事会竞选投票时,顺手买了一注 “彩票”,然后竟然抽中了 500 个 KSM!

一夜暴富,大概就是这种感觉吧?

如此刺激的场景,可能在不久的将来就会实现。因为 Parity 已经开发出了一个「Participation Lottery(参与彩票)」系统,来激励社区更多地参与链上治理。

昨晚,Parity 工程师 Shawn Tabrizi 宣布 Participation Lottery 模块代码已经被并入 Substrate 库中。这意味着,未来所有基于 Substrate 的链(包括波卡、Kusama 和波卡生态里大多数的链)都可以使用这个功能来创建彩票,从而激励用户参与链上活动,如 Staking、公投投票、为理事会竞选投票等。

目前这个模块还未进行代码审计(已经安排上了),是否要用于 Kusama 也还在讨论中。不过这个功能确实还挺有意思的,所以我们先梳理了一些相关的信息给大家参考。后续如果该功能要用于 Kusama,是需要经过链上投票的,大家也可以持续关注和投票。

以下信息来自 Shawn 撰写的 Participation Lottery  文档、Element 聊天记录。

为什么要做「Participation Lottery」?

「Participation Lottery」是一种可配置、可重复进行的彩票系统,最初的设计目的是提高 Kusama 网络的参与度。

Kusama 网络目前的参与度较低,从以下这些数据可以看出:

每个理事会成员竞选时的平均票数:30Society 成员数量:5对现有民主进程的投票数:20(参考值为 79)

而根据 Polkascan 报告显示,目前 Kusama 网络有约 17000 个活跃账户。

Participation Lottery的目标就是通过对用户的参与行为给予额外激励,来刺激 Kusama 网络的参与度。

「Participation Lottery」使用案例

想象一下...

Kusama 网络要通过民主提案来做出一项非常重要的决定(比如说拆分?)。网络想要刺激这项用户对投票的参与度,所以创建了一支新的彩票。

理事会或者其他可以发起新彩票的机构使用 “vote” extrinsic 来创建一支彩票。这支新彩票启动时,会从国库拿一笔资金来作为最初奖池的底注,比如说 50 KSM。

想要参与这支彩票抽奖的用户可以调用打包在 buy_ticket extrinsic 里的 vote extrinsic(有点类似 sudo 的打包调用)。

通过调用 buy_ticket extrinsic 并打包底层的调用,用户就购买了 1 KSM 的彩票,彩票奖池增加 1 KSM。

而对彩票不感冒的用户也可以直接调用 vote 来投票,不改变彩票的情况。

在抽奖期截止前,用户还可以继续Participation Lottery(抽奖期很可能会和正在发生的事件挂钩,比如截止至投票结束,或者某一个 Era/Epoch 的末尾等)。

博弈论

任何区块链游戏,都需要有合理的正向激励和负向激励,来让用户按照设计者的想法行事。

正向激励

彩票的底注(seed)来自国库资金。结果是,彩票的任何参与方都会有正向期望值(EV)。

我们可以使用 seed 即底注的金额来控制参与率。底注越高,更多参与者的 EV 也就越高。

通常来说,人类都喜欢买彩票。以很少的成本赢到一大笔钱的机会,可能会让人无法做出明智的经济决策。

该彩票系统可能会激发一些对背后的行为不感兴趣,但仅对 Participation Lottery 感兴趣的用户的 “无意识” 参与。据我所知,这在任何参与度激励机制中都是不可避免的。但是我认为平均而言,该网络将从更高的整体参与度中受益。

负向激励

区块链彩票的一个潜在问题是,它在某种程度上容易受到 Sybil 攻击。即假设参与有着正向期望值,则用户可以买很多张彩票,来增加获胜机会。

但是,这也可以通过费用和 seed 金额来限制和控制。用户想要成功完成此类攻击,需要至少将等同于彩票价格的金额转到 N 个帐户中。然后,这 N 个帐户中的每一个都需要提交打包的 extrinsic,来进行底层调用,所以除了彩票价格,这个操作还会涉及自身的交易费用。

这意味着这类攻击将花费N * (transfer_fee + account_creation_fee + call_fee) 个代币。如果国库的底注低于此金额,则用户不再有激励去参与。此外,对于这样的用户来说利润非常微薄,并且随着更多用户加入,利润将继续恶化。

其他重要因素

要完成抽奖,我们需要能够随机选择中奖者。Substrate / Kusama 提供了链上随机性来用于网络其他部分。在某些不合理的彩票奖池中,它可能促使出块者阻止不是彩票中奖者的区块,或者是其他一些不利的激励措施…… 这一点可能需要 W3F 研究团队的反馈,他们会更多地了解使用这种随机性的限制。

当然了,用户是无法直接操纵抽奖结果的。

网络效应

将彩票附加到特定的 extrinsic,可能会驱使彩票参与者的行为发生下列变化。

有更多的用户在重要的投票中发表自己的见解。(vote)用户会定期改变/更新其验证人提名。(nominate)有更多用户加入 Society 或其他类似的社会实验。(put_bid)鼓励就未来的更新和改变进行头脑风暴。(propose_bounty)有更多用户更改其对候选理事会成员(electionPhragmen,vote)的支持等等…

彩票如何实现

本节介绍如何实现「Participation Lottery」。一些实现细节是 “已知的”,而有些细节是 “待定的” 或者叫 “未知的”。

已知的细节

将创建一个管理这些拍卖的新 pallet。该 pallet 可配置为允许 runtime 中的任何调用成为购票的来源。可从资金来源(如国库)中分配 seed 金额(可配置)来启动彩票。用户将支付 ticket_price(可配置)来参加彩票抽奖,这些钱会进入奖池中。中奖者的选择将发生在用户无法控制的未来区块,并使用链上随机性选择中奖者。更多内容待更新…

待定的细节

抽奖可以定期进行,也可以每次都通过治理来发起。可以一次性把多个 extrinsic 列入某次抽奖的白名单。可以设置参与限制为每个抽奖限参加 1 次,或者每个抽奖的每个 extrinsic 限参加 1 次。可能会有不止一个彩票中奖者,可能支付的奖金会较少。上一张彩票可用于下一张彩票的押注。更多内容待更新…

写在最后:PolkaWorld 的看法

我们都知道波卡采用的是链上治理,这要求代币持有者在一些网络的大事上积极参与和表态。比如去年 DOT 的拆分就在波卡社区中掀起了现象级的讨论,最后以接近 1/3 的投票率在链上治理届名垂青史。

然而上面提到了 Kusama 的参与率数据,也确实挺惨淡的。参与度的问题一直是链上治理的一块心病,连 Kusama 也逃不掉。可以说,在链上治理这个领域,波卡/Kusama 目前虽然已经走在了前面,但也是在摸着石头过河。好在,官方和社区都一直在想办法。这个「Participation Lottery」系统就是一次全新的尝试,据我所知这样把抽奖和链上治理相结合还是有史以来第一次。

这个机制带来的影响,在真正实施下去之前谁也无法完全预测。总之,我们还是很期待它在波卡生态中能尽快被采用,不管是在波卡/Kusama 还是其他 Substrate 链上。也希望这一天到来时,社区的小伙伴们都可以去亲身体验一下。我们也会继续跟进这个功能,第一时间出教程的。

如果你想更详细地了解「Participation Lottery」或者提出疑问,可以查看其文档:

 https://hackmd.io/68rduBydTEy4X-ULevd90g。