什么是UniRep
概览
UniRep ( Universal Reputation) 是一个隐私并且不可否认的信誉系统。用户可以:
- 从证明者那里获得正面和负面的声誉。
- 证明他们至少有一定的声望,但不透露具体数字。
- 用户不能拒绝接受证明者的声誉。
UniRep的目标是成为一个基础层,任何人都可以在其上轻松构建自定义但可互操作的信誉系统。例如,用户可以跨不同的社交媒体平台、消费应用程序或金融应用程序创建组合的零知识声誉证明,以便向他人提供关于他们自己的全面的、隐私的和可信赖的信息。
在此处阅读最新的 UniRep 博客文章。
UniRep 最初由 BarryWhiteHat 在这篇 ethresear.ch 帖子中提出
工作原理
临时身份
通过称为epoch keys升级身份为用户积累声誉。Epoch keys可以被认为是定期更改但与用户永远相关联的临时以太坊地址,它为用户保留匿名性,同时保留有意义的声誉所需的历史记录。
Epochs代表时间的流逝。类似于区块链中的块,它们可以被认为是 UniRep 系统中的周期:随着每次转换,所有用户的声誉余额都会最终确定,并转移到新的epoch中。每个证明者可以设置自己的epoch长度。
Epoch keys是根据通过Semaphore生成的身份承诺创建的,Semaphore是一个通用的隐私层,用户可以在其中匿名地从组内发送信号。在Semaphore组内部,用户的操作与其“外部”身份无关。Semaphore身份不是作为个体的唯一标识来与人互动,而是简单地表示为组的成员。
Epoch keys在每个epoch都会改变,对每个用户而言都是唯一的,并且看起来完全随机。只有用户知道他们是否正在接受证明或声誉;其他人只会看到对随机值的证明。Epoch和不断变化的epoch通过混淆声誉累积以及人们用来交互的身份来帮助保护隐私。(注:这一点和UTXO很像,用户拥有许多证明者主体所提供的证明)
状态树存储证明
UniRep 使用Merkle tees系统来同时维护声誉和隐私。Merkle树是能够高效存储和验证信息的数据结构;信誉和用户数据作为叶子存储在 UniRep 的 Merkle 树中。验证 UniRep 信誉意味着生成用户声明(他们的信誉级别)存在于有效 Merkle 树中的证明。
当用户第一次注册时,他们的数据被输入到状态树中。每个证明者都有自己独立的状态树版本,每个时期都会发生变化。状态树可以被认为是特定证明者的信誉追踪器的元数据:包含相关的 UniRep 用户,及其在epoch开始时的初始信誉。
由于 epoch 密钥是临时的,因此它们积累的声誉必须迁移到新的 Merkle 树。当用户过渡到新epoch时,他们会收到新的epoch keys,而旧的epoch keys将失效。在后台,他们的声誉通过零知识证明跟随至证明者状态树的下一次更新。迁移到新的状态树意味着创建一个用户状态转换证明来验证用户是否遵守协议的所有规则。证明可以表明没有作弊:没有遗漏负面证明或添加欺诈的正面证明。
用户生成一个用户状态转换证明,其中包含一个新的状态树叶子,里面包含证明者 ID、用户的Semaphore identity nullifier、用户在前一个时期的正面和负面声誉的总和、时间戳和“graffiti”——证明者赋予用户的值。这个新叶子被提供给智能合约,它验证证明并将其插入到新的状态树中。
一旦用户积累了声誉,他们就可以通过声誉证明来证明他们积累了多少声誉点数。信誉证明是一种零知识证明,可验证用户是否存在、是否具有声明的信誉并已执行所有必要的转换或迁移。信誉证明确保用户的声明与状态树中的数据一致。
v2 更新
该协议的 v2 版本将用户证明的复杂度降低到常数时间。用户可以获得无限的证明,同时保持证明时间不变。
v2 还更改了树结构,完全删除了用户状态树。全局状态树和epoch树被每个证明者的状态树和epoch树所取代。因此,每个证明者都可以设置自己的epoch长度。用户还为每个证明者执行一次用户状态转换,而不是 1 个全局转换。
阅读此处的说明。
团队
相关文章
相关文章
文档
博客
开发
- 电路开发:snarkjs库