# Proof-of-Brain 算法

Proof-of-Brain 算法由社区驱动，在一个可拓展的社区投票流程中进行计算。

对于社区中任何事件，任何人都可以发起 Y 与 N 不同的二元预测 —— 即发布 Y 帖与 N 帖。预测事件在现实世界或者虚拟世界揭晓之后的 5 个小时，社区成员可以对事件的 Y 帖与 N 帖进行投票（社交互动）。

#### 可拓展投票流程

对事件的 Y 帖与 N 帖进行投票是一种基于信用的投票，不仅 Y 帖与 N 帖、投票动作（社交互动）会在区块链系统中打上时间戳，而且投票者的预测结算信用也会在区块链系统中被记录。

<figure><img src="https://3381154666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5W3YHzppdMaC2HCthnq8%2Fuploads%2F8IHWZ4KqE8zixSdF9K9f%2F834.png?alt=media&#x26;token=0ddb96c0-389e-4677-bc0e-90a409cd6734" alt=""><figcaption></figcaption></figure>

每一个参与者在投票时，可以选择投票的权重，如图中人们在 TagAI 上点🔥 时选择的投票能量（voting power）。

<figure><img src="https://3381154666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5W3YHzppdMaC2HCthnq8%2Fuploads%2FfaD9kbsBqKTrKF0BMsgR%2F315.png?alt=media&#x26;token=ab1b1875-8cae-4a1c-a398-713846cb76a6" alt="" width="375"><figcaption></figcaption></figure>

即 TagAI 的可拓展投票由投票动作（在 TagAI 上是点🔥，在 X 上则是点赞、评论等）、策展人在社区的预测结算信用和投票时选择的投票能量（Voting Power，简称 VP）三个部分构成。对于 X 上点赞、评论，TagAI 在将动作打赏时间戳上链时，会选择默认的投票能量进行记录。

#### Voting Power \_ 投票能量

Proof-of-Brain 依据预测结算信用、投票动作计算 Y 帖与 N 帖的 PoB 价值时，需要对投票能量（Voting Power）进行限制，以降低自动操作和潜在舞弊。即投票能量（Voting Power）是稀缺资源。

参与者初始被分配固定数量的投票能量（Voting Power），初始值（最高值）为 200。用户进行投票动作（在 TagAI 上是点🔥，在 X 上则是点赞、评论等），就会根据投票时的选择进行消耗。不过，投票能量还会以每天 33.33％ 的固定线性速率回升。

投票能量的效用还有一个衰减系数。用户可以投票支持更多帖⼦，但每次投票的价值都会降低（会乘以投票能量的衰减系数）。投票衰减系数，按照如下公式，根据用户当前的 VP 值来进行衰减。

<figure><img src="https://3381154666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5W3YHzppdMaC2HCthnq8%2Fuploads%2FZdpKmAzZPysgVvWoA0Nj%2F855.png?alt=media&#x26;token=b103888a-86b9-4ace-9d84-698f60ef2e7a" alt=""><figcaption></figcaption></figure>

#### 帖子的 PoB 价值

在同一个社区，Y 帖和 N 帖的 PoB 价值由投票者投票时选择的投票能量（VP）乘以投票衰减和投票者的预测结算信用加权计算得到。Y 帖和 N 帖的投票周期为事件结果揭晓后的 5 个小时。具体 PoB 计算如下：

Y 帖和 N 帖的每个策展动作的策展分数（Curate Score） 的计算公式是：

$$
scores\_{curate}=CommunityCredit\_{curator}\*VotingPower\_{Curate}
$$

策展会根据策展人当前剩余的VP值进行衰减，衰减公式为：

$$
attenuation=0.0000175\*VP\_{current}^2+0.3
$$

调整后的策展分数为：

$$
scores\_{curatei}=scores\_{curate}\*attenuation
$$

Y 帖或 N 帖获得的策展分数（Curation Score）的计算公式是：

$$
scores\_{content}=\sum^{N}*{i=1}scores*{curatei}
$$

根据 Y 帖和 N 帖获得的策展分数，对比其策展分数的大小。如果 Y 帖>N 帖，那么 Y 帖为预测事件结果；如果 Y 帖\<N 帖，那么 N 帖为预测事件结果。
