第一个和第二个案例相对简单,因为它们可以通过完全 去中心化身份处理 的方式实现:你控制着密钥 X,你想要把它换成密钥 Y,所以你公布了一条用密钥 X 签名的消息说,”从此之后用密钥 Y 认证我“,大家都接受这一条消息。但要注意的是,即使是那些更简单的密钥更换场景,你不能仅仅使用密码学。考虑以下这组事件:
你担心密钥 A 被盗,所以你用密钥 A 签署了一条消息说,”我现在用密钥 B 了“
一年后,一个黑客团伙确实偷了密钥 A。他们用密钥 A 签署了一条消息说,”我现在用密钥 C 了”,现在 C 是他们的密钥。
从这样看来,之后有人收到了这两条消息,他们看见这个账户不再使用密钥 A 了,但是不知道 “将 A 换成 B” 还是 “将 A 换成 C” 有更高的优先级。这和著名的双花问题在设计去中心化货币上相同,不同的是双花问题的目标是防止属于之前用户的代币被再次使用,以上讨论的问题的目标则是防止可以控制账户的旧密钥再去改这个账户的密钥。就如创造一种去中心化货币一样,用去中心化的方式做账户管理需要像区块链这样的技术。区块链可以给密钥更改信息打上时间戳,提供「变成 B 还是 C 更优先」的共识。第三个和第四个案例更难。一般来说,我支持的方案是使用多签和社交恢复钱包,这可以让一群朋友、家人或者其他联系人在你的密钥丢失或者被盗的时候,转移你的账户的权限到一个新的密钥。这个群组的参与对于更复杂的操作——如转移一大笔资金,或是签署一个重要的合同——也是必需的。然而这也需要区块链技术的支持。虽然使用密钥共享算法进行社交恢复是可能的,但实践起来却更难:如果你不再信任某些联系人,或者他们希望更改自己的密钥,你无法在不改变密钥的情况下撤销访问权限。因此,我们仍需一种形式的链上记录。DeSoc 的论文中有一个微妙但不容忽视的观点:我们为了保证账户不被转让,个人资料的社交恢复(或“社区恢复”)可能实际上是强制性的。也就是即使你出售了自己的账号,仍然可以通过恢复的方式拿回账户的权限。这可以解决类似于没有信誉的司机在网约车平台购买网约车平台认证账户的问题。即使如此,这也只是一个猜想,也不是非得完全实现才能享受基于区块链技术的身份和信誉系统的好处。需要注意的是到目前为止讨论的只是区块链技术使用的个例:账户在链上,所有其他的事情在链下完成也是完全可以的。有一个使用场景就是针对这种混合应用的;有一个简单的案例已经实现了这个应用方式:Sign-in With Ethereum。▎更改和取消认证Alice 之前在 Example 学院到了学位,还有个数字证明,上面有 Example 学院的签名。可是六个月后,她因为抄袭行为被取消了这个学位。尽管如此,Alice 还在继续使用那份旧的数字证明声称自己持有该学位,并且可能试图不正当地获取相关权限(比如登录论坛)。我们采取什么措施可以防止这种情况发生呢?「区块链至上主义」(blockchain maximalis)的方法是把学位做成链上的 NFT,那么 Example 学院就能发布一个链上的交易来取消这个 NFT 。但这恐怕是一个非必要的开销:总是是频繁地颁发证书,而取消的行为寥寥无几。我们也并不想让 Example 学院为无意义的线上交易费钱费力。所以我们可以用一个混合方案取而代之:将发放的学位做成链下的签名信息,然后在链上可以取消学位。这就是 OpenCerts 正在采用的方法。被许多链下可验证证书倡导者所支持的「完全链下」解决方案:Example 学院运行一台服务器维护所有他们的取消记录(为了增加隐私性,每一笔认证会使用一个 nonce 值,一个取消列表会用一列 nonce 值)。对于一个学院来说,运行一台服务器是个小问题。但对于更小型的机构或者个人来说,”多处理一个服务器脚本“,并且要保证它们不断线会给 IT 人员造成很大的压力。如果我们让对区块链技术感到敏感的人们去”用一下服务器“,很可能他们最后会外包任务给一个中心化供应者。让系统去中心化,并且只使用区块链的选择更好的原因是——一些技术,尤其是 rollup 扩展方案、分片(sharding)在未来上线时会让区块链上的花销越来越便宜。▎负面声誉(Negative reputation)在链下签名无法解决的一个领域是负面声誉( negative reputation),也就是说,你正在证明的人或组织可能不想让你看到他们的证明。我在这里用负面声誉作为一个技术术语:最明显的用例是证明某人做了坏事,比如一个差评或报告,某人在某种情况下表现不当。但也有一些”负面”证明并不意味着不良行为的用例——例如,贷款时想证明你没有同时贷款太多。你可以用链下的认证建立好名声,因为展示声誉可以让接受认证者受益(或者可以通过零知识证明来实现)。但是你不能用它来记录负面声誉,因为人们可以选择只展示体现自己优势的认证,隐藏起那些对自己不利的。在链上实现认证的确可以解决问题。为了保护隐私,我们运用加密技术和零知识证明:一个认证是用链上记录和用加密成接受者公钥的数据组合而成的,用户可以用零知识证明遍历链上完整的历史记录来证明他没有「负面声誉」。链上的证明和具有区块链意识的验证过程让验证“证明的确遍历了整个历史记录并且没有遗漏”这件事轻而易举。为了实现计算的可行性,用户可以用增量可验证计算算法(比如 Halo)来维护和证明树上的加密数据,然后在树上寻找自己需要的部分。处理负面声誉和取消认证在某种意义上是等价问题:你可以通过添加负面声誉认证表明“其他的认证都不作数”来取消一个认证,也可以通过借助好名声来废除坏名声:Alice 在 Example 学院的学位被取消了,但可以用一个声明“ Alice 使用了学生贷款在 example 系获得了学位”的学位来替代。使用负面声誉认证是一个好主意吗?我们有时会听到对负面声誉的一种批评是:难道负面声誉不就像是一个反乌托邦式的“红字”吗?我们难道不应该努力去做一些能够赢得好名声的事情吗?尽管我支持避免无止尽地使用负面声誉认证,但我反对彻底废弃这种认证的使用。在许多案例中一定要使用「负面声誉」认证。在区块链领域内外以提高资本效率著称的无抵押贷款,显然从中受益。Unirep Social 是一个使用概念验证的社交媒体平台,该平台将高度的匿名性与保护隐私的负面声誉系统相结合以限制「负面声誉」的滥用。有时,负面声誉认证更具有包容的自主权,而好名声认证却更具有排他性。一个「一开始每个个体都有发帖的权力,直到他们因为行为不端而得到多次的“声誉打击”权力才被剥夺」的在线论坛要比「一个首先需要某种 "良好品格证明 "才能被接纳并被允许发言」的论坛更平等。被边缘化的人大多生活在 "系统之外",即使他们确实品行良好也很难得到这样的证明。具有强烈公民自由主义倾向的读者,可能也想考虑为性工作者建立一个匿名的信誉系统的案例:你想保护隐私,但你也可能想要一个系统——如果客户虐待性工作者,他们会得到一个被其他性工作者提防的"黑标记"。这样一来,难以隐藏的负面声誉实际上可以赋予弱势群体权力,保护他们的安全。这里的重点不是为负面声誉的某些实例辩护;而是要表明负面声誉的价值是真实存在的,一个成功的系统需要以某种方式支持它。负面声誉不会成为终身的负累:我觉得一个人是有机会通过付出一些代价创造一个新的人设的(也许会牺牲你现有的很多或所有的积极声誉)。在声誉系统中存在一种“没有责任一身轻”和“肩挑重担”的平衡。但首先,拥有可以实现负面声誉的技术手段是解锁这个设计领域的前提条件。▎保证稀缺性(Committing to scarcity)另一个体现区块链技术有价值的例子是发布经过验证的有限数量的认证。如果我想为某人做背书(例如,人们可以想象一个寻找工作的公司或一个政府签证项目在看这样的背书),看背书的第三方会想知道我是否对背书很谨慎,或者我是否把背书给了几乎所有我的朋友,以及友好请求帮忙的人。对于这个问题理想的解决方案是把这个背书公开,这样背书就和提供背书的人的利益挂钩了:如果我为一个最后被发现做过坏事的人做了背书,所有人都会对我所做背书的信任大打折扣。但我们也想保护隐私。因此,我可以做的是在链上公布每个背书的哈希值,这样任何人都可以看到我已经发出了多少。一个更有效的区块链技术用例是「多次分发」:如果一群艺术家想要发放“有限版本”NFT 的 N 个复制,他们可以在发放 NFT 时在链上发布一个包含 NFT 的 Merkle 根节点的单独哈希值。这个独立的发布让他们免于在这次发行后发行更多的版本,你可以利用 Merkle 根节点发布表明数量限制的数字(比如 100),代表只有最左边 100 个 Merkle 分支是合法的。通过在链上发布一个独立的 Merkle 根节点和最大计数,你可以发行有限数量的认证。在这个例子中,只有 5 个可能合法的 Merkle 分支可以满足证明验证。聪明的读者应该可以注意到它和 Plasma 链概念上的相似性。▎共识区块链其中一个强大的特性是他创造了共识:如果我在链上发布了某个东西,Alice 能看见,Alice 可以知道 Bob 也看见了,Charlie 可以知道 Alice 知道 Bob 看见了,以此类推。对于协作来说共识往往很重要。比如,一群人想要说出一个问题,但只有在他们觉得有足够的人会同时说出这个问题的时候他们才敢放心说出来。一个可能的实现是,一个人围绕一个特定的声明启动一个 "承诺池",并邀请其他人发布代表他们同意的哈希值(最初是私有的)。只有在一段时间内有足够多的人参与,所有参与者才会被要求在链上的下一条信息中公开透露他们的立场。像这样的设计可以通过零知识证明和区块链的组合来完成(可以不用区块链实现。可以用证人加密算法,但目前还没有实现;或者用可信赖的硬件,但其安全假设有很大问题)。到今天为止这些想法都仍有很大的探索空间,一旦以区块链技术和加密工具为中心的生态系统进一步发展,这些想法就很容易生根发芽。▎与其他区块链应用的互操作性有一个简单的例子:有些东西需要在链上才能更好地和其他链上应用交互。Proof of humanity 是一个让自动化空投更容易的链上 NFT 产品,它也可以自动赋予有“人类”证明的账户治理权限。Oracle 数据库数据的链上存储使得 defi 产品可以更轻松地读取数据。在所有这些案例中,区块链技术没有抛开“信任”的需求,即使它可以容纳像 DAO 这样的结构来管理信任。但是,在链上提供服务的主要价值仅仅是与你交互的东西在同一个地方,需要区块链技术还另有原因。的确,你可以在链下运行一个 oracle 数据库,只在需要读取数据的时候请求要传入的数据。但大多数情况下这样的做法会花销更大,为开发者增加一些无畏的麻烦和成本。▎开源的衡量标准去中心化社会的论文其中一个关键的目标是在认证的图谱中作出预测。十分重要的一项是评估去中心化程度和多样性。比如,许多人看上去都会觉得一个理想的投票机制会在某种程度上考虑到多样性,给那些不仅获得最多的代币甚至人数支持的,并且获得最多的真正独特的观点支持的项目以更大的权重。左图:假设调查显示 75% 的人支持一项提案, 25% 的人表示反对。然而,75% 的支持者作了同样的论证,来自相同的背景,看了同样的媒体内容。25% 的反对者在这三种方面都各有不同。这项提案应该被采纳么?右图:假设 90% 的人支持一项提案, 10% 的人表示反对。然而,90% 的人是在 5 年前通过类似星际迷航的复制器复制同一个人的账号复制出来的(但是自此之后不住在一起);但 10% 的人是从出生就不住在一起。这项提案应该被采纳么?在 Gitcoin Grants 中实现的二次方融资还引入了一些明确的有利于多样性的逻辑,以减轻攻击的影响。另一个评估和计分自然会派上用场的地方是声誉系统。这已经以中心化的形式存在于评级中,但它可以以一种更去中心化的方式进行。算法是透明的,同时也保留了更多的用户隐私。除了像试图评估一些人的关系,并将其直接反馈给一个机制这样紧密耦合的用例,还有更广泛的帮助社区内化研究的用例。在评估去中心化程度的案例中,分辨集中程度变得更高的地区会很困难,因为这需要一个反馈来证明。在所有这些案例中,不可避免地需要针对大量的认证和承诺运行计算机算法,以及对结果进行重要地分析。我们不应该摒弃已有的量化指标,应该创造更好的标准Kate Sills 对于声誉进行量化的目标表示怀疑,这一论点既适用于公共分析,也适用于个人对其声誉进行零知识证明(如Unirep Social)。
增强秘密共享:将你的密码分成 N 份,其中有任意 M = N-R 份可以恢复密码,不过这种分割法要满足你可以选择所有 N 份内容。比如,每份内容可以是密码的哈希值,秘密是通过其他工具生成的或者可以是安全问题的答案。实现的方式是通过在链上发布一个额外的 R 份内容(是随机寻找的),做共享在整个集合上 (N+R) 个秘密中的 N 份。