最近,越来越多的人对使用区块链构建非金融应用产生兴趣。我一直强烈支持这个方向的发展。上个月,我和其他两位作者共同发表了「灵魂绑定代币」(soulbound tokens) 生态系统的文章,引发了一些讨论,特别是在“去中心化身份生态系统中使用区块链”的意义。
这引出了一个的问题——在金融之外的什么场景使用区块链是有意义的?我们是否应该期待去中心化的聊天应用程序,每条消息都是包含加密消息的链上交易?或者,区块链只对金融有利,而所有其他应用更适用于中心化或本地系统? 我不是区块链最大化或最小化论点支持者。区块链有时为了解决痛点,如信任和抗审查,有时纯粹是为了方便。本文将试图描述一些区块链潜在的应用场景 (特别是在身份绑定的背景下) 和区块链并不适用的例子。
用户帐户密钥更改和恢复
加密帐户系统中最大的挑战之一是密钥更改问题。在四种情况下会发生:
- 担心当前的密钥可能会丢失或被盗,想要换不同的密钥;
- 想要切换到不同的加密算法(如担心量子计算机很快就会出现);
- 密钥丢了,想重新打开账户;
- 密钥被盗了,希望重新获得对帐户的专有访问权(不希望黑客也能够这样做)。
前两点相对简单,因为它们可以以完全自主的方式完成:你控制密钥 X,想切换到密钥 Y,发布一条用 X 签名的消息——“从现在开始用 Y 验证我”,每个人都同意。 但是请注意,即使对于这些更简单的密钥更改场景,也不能只使用密码学。考虑以下顺序:
- 担心密钥 A 被盗,所以你用 A 签了一条消息——“我现在用的是 B”;
- 一年之后,一个黑客真的窃取了密钥 A。他们在一条消息上签名——“我现在使用 C”,其中 C 是他们自己的密钥。
从后来者的角度来看,他们刚刚收到这两条消息,看到 A 不再使用了,但他们不知道“用 B 代替 A ”还是“用 C 代替 A ”的优先级更高。
这就相当于去中心化货币设计中著名的“双花问题”,只不过这里的目标不是防止代币的前主人再次发送它,而是防止前一个控制帐户的密钥能够更改密钥。就像创建去中心化的货币一样,以去中心化的方式进行账户管理需要区块链。区块链可以为关键更改消息添加时间戳,提供关于 B 还是 C 先出现的提示。
后两点更难。我倾向的解决方案是多重签名和社交恢复钱包,如果你的账户丢失或被盗,其他联系人可以将你的账户控制权转移到一个新密钥上。对于关键操作(如转移大量资金,或者签订重要合约),也可以要求联系人的协助。 这也需要区块链技术。使用密码共享恢复社交是可行的,但在实践中更困难:如果你不再信任你的一些联系人,或者如果他们想更改自己的密钥,你没有办法取消访问,而不更改自己的密钥。所以我们又回到了需要某种形式的链上记录。
在去中心化社会(DeSoc)的文件中有一个想法——为了保护不可转移性,档案的社会恢复(或社区恢复)实际上可能需要强制执行。即使你出售了你的帐户,你也可以使用社区恢复来找回帐户。这将解决如“声誉不佳的司机在拼车平台上购买良好账户”的问题。这只是一个推测性的想法,不需要完全实施就能获得基于区块链的身份和声誉系统的其他优势。 请注意,到目前为止,这只是区块链的一个有限的用例:在链上拥有账户,但在链外做其他所有事情是完全没问题的。这种愿景目前有落地场景,如 Sign-in With Ethereum。
(注:「Sign-In with Ethereum」是一套通过以太坊账号登录第三方 Web 应用的技术规范,使用户能够通过以太坊帐户和 ENS 配置文件控制其数字身份,而不依赖传统的中间人。目前它已经在 Web3 中使用,目的是用最佳实践来进行标准化,让 Web2 服务更容易采用。)
修改和撤销认证
Alice 在某学院完成学位,得到了一张数字学位记录,用学院的密钥签名。后 Alice 因论文抄袭被撤销了学位。但是 Alice 继续用她的旧电子学位记录宣称她有一个学位。这种认证可能带有权限,例如,具有登录学院在线论坛的权利,而 Alice 可能用不正当方式访问该权限。我们如何防止这种情况? “区块链最大化”的方法是让学位成为一个链上 NFT,这样学院就可以发布一个链上交易来撤销 NFT。但也许难以避免昂贵的费用。发行常见,撤销少见,我们不想要求学院发行交易,并在不必要的情况下为每一次发行支付费用。
因此,我们可以采用混合解决方案:将初始度设置为链下签名消息,并在链上进行撤销。这是新加坡政府级项目 OpenCerts 使用的数字证书的方法。 全链下解决方案,也是许多链下可验证凭证的支持者所提倡的,是学院运行一个服务器,在那里发布他们撤销的列表(为了提高隐私,每个认证都可以附带一个 nonce 随机数值,撤销列表可以只是一个 nonce 列表)。
对于大学来说,运行服务器是可行的。但是对于较小的组织或个人来说,管理“另一个服务器脚本”并确保它保持在线,对 IT 人员来说是任务艰巨。如果我们告诉人们“只用一个服务器”,很可能每个人都将任务外包给中心化的提供商。我建议最好保持系统的去中心化,只使用区块链,特别是现在 Rollup、分叉和其他技术终于开始上线,区块链的成本越来越低。
负面声誉
链下签名难以满足的另一个关键点是负面声誉(你正在进行认证的个人或组织可能不希望你看到他们的认证)。这里使用“负面声誉”作为一个技术术语:最明显的激励用例是证明某人的坏话,比如恶意评论或某人在某些情况下滥用行为的报告,但也有“负面”证明并不意味着不良行为的用例。例如,申请贷款,并想证明你没有同时申请过太多其他贷款。 对于链下声明,你可以提供正面声誉,因为这符合接受方的利益,让它看起来更有信誉(或制作一个 ZK 证明),但你不能提供负面声誉选项,因为有些人可以只选择展示正面声誉的一面。 在链上进行认证确实能解决问题。为了保护隐私,我们可以添加加密和零知识证明:一个认证可以只是一个链上记录,数据加密到接收者的公钥,用户可以通过运行一个链上记录的整个过程的零知识证明来证明没有负面声誉。证据在链上,验证过程具有区块链意识,因此可以很容易地验证证据,并且没有跳过任何记录。为了在计算上可行,用户可以使用增量可验证计算(如 Halo)来维护和证明对其加密的记录,然后在需要时显示部分记录。 负面声誉和撤销认证在某种意义上是等价的问题:你可以通过添加另一个负面声誉认证来撤销认证,并说“另一个认证不再算数了”。你可以通过附加正面声誉来撤销负面声誉。
负面声誉是个好办法吗?
展示负面声誉是反乌托邦吗?我们不应该尽最大努力去做有正面名声的事情吗? 虽然我支持避免 100% 的负面声誉,但我不同意完全避免负面声誉的想法。负面声誉对于许多用例都很重要。无抵押贷款对于提高区块链内外的资本效率非常有价值。我在以太坊上海峰会演讲的 Unirep Social 展示了一个概念验证社交媒体平台,该平台将高度匿名性与隐私保护负面声誉系统相结合,目的是限制滥用。
有时候,负面声誉激励人们,而正面声誉则会让人感到排斥。一个网络论坛,每个人都有权发帖,除非他们因行为不端而受到投诉,这比一个首先需要某种“良好品格证明”才能被接纳,并允许发言的论坛更为平等。那些生活在“体制外”的边缘化人群,即使他们品行良好,也很难得到这样的证明。 想象一下性工作者客户的匿名声誉系统,保护隐私需要一个系统。如果客户虐待性工作者,他们会上黑名单,提醒其他性工作者小心。
通过这种方式,无法隐藏的负面声誉实际上可以赋予弱势群体力量,保护他们的安全。这里的重点不是为了维护某些特定的负面声誉。相反地,这是为了表明负面声誉所带来的真正价值,而一个成功的系统需要以某种方式去支持它。 负面声誉不一定是 100% 的负面声誉。我认为可以以一定的成本创建一个新的个人资料(可能牺牲很多或所有现有的正面声誉)。问责过少与问责过重之间存在一种平衡。但首先,拥有能够让负面声誉评分标准进入区块链的技术,是打开这个领域的先决条件。
承诺的、、、、、、、、、、、稀缺性
区块链有价值的另一个例子是发布数量有限的证明。如果我想为某人背书(例如一家公司或一个政府签证项目正在查看此类背书),查看背书的第三方会想知道我对背书是否谨慎。 这个问题的理想解决方案是公开指出,这样就会产生激励效应。如果我公开支持某个人,结果证明他做了错事,那么所有人将来都可以对我的代言打折扣。我们也想保护隐私,所以我可以做的是在链上发布每个背书的哈希值,这样所有人都可以看到我付出了多少。 更有效的用例是一次性多次发布。如果一个艺术家想要发布 N 份“限量版” NFT,可以在链上发布一个包含正在发行的 NFT 的 Merkle 根的哈希。单次发行可以防止他们在事后发行更多,你可以公布号码(例如 100)表示数量限制和 Merkle 根,表示只有最左边的 100 个 Merkle 分支是有效的。
通过发布单个 Merkle 根和链上最大计数,你可以提交有限数量的认证。在本例中,只有 5 个可能有效的 Merkle 分支可以满足证明检查。读者可能会注意到它与链外扩容方案 Plasma chain 在概念上的相似性。
常识 (Common Knowledge)
区块链的一个强大属性是它们创造了“常识”。如果我在链上发布了一些东西,那么 Alice 可以看到它,Alice 可以看到Bob 可以看到它,Charlie 可以看到 Alice 可以看到 Bob 可以看到它,以此类推。 常识(或者叫公开内容)对于协调很重要。例如,一群人可能想要对一个问题发表意见,但只有有足够的人同时发表意见,他们在人数上有安全保障的情况下才会感到自在。比如,一个人围绕一个特定的语句启动一个“承诺池”,并邀请其他人发布哈希值(一开始是私有的),代表他们的协议。
只有在一段时间内有足够的人参与,所有参与者才会被要求公开他们的下一条链上消息,以表明他们的立场。 这样的设计可以通过零知识证明和区块链的结合来完成。它可以在没有区块链的情况下完成,但这要么需要见证人加密(目前还不可用),要么需要可信的硬件,这在安全假设方面存在严重问题。关于这类想法还有一个很大的设计空间,目前尚未得到充分开发,但一旦围绕区块链和加密工具的生态系统进一步发展,将加速增长。
与其他区块链应用程序的互操作性
有些东西应该放在链上,从而更好地与其他链上应用程序互操作。人性证明(Proof of humanity)是一种链上 NFT,使项目更容易自动空投或给予有人性证明档案的帐户治理权。预言机数据链上使得 DeFi 项目更容易读取。在这些情况下,区块链并没有消除对信任的需求,尽管它可以容纳管理信任的 DAO 等结构。但链上提供的主要价值只是与你交互的东西在同一个地方,这需要区块链的参与。 当然,你可以运行链下预言机,并只在需要读取数据时才要求导入数据,在许多情况下,这实际上更加昂贵,并给开发人员带来不必要的复杂性和成本。
开源指标
另一个衡量和得分价值的是声誉系统。这是以中心化的评级形式存在,但可以更加去中心化的方式实现,算法透明,同时保留更多用户隐私。除了像这样紧密耦合的用例,还有更广泛的用例,可以帮助社区了解自己。我们不应该试图废除量化指标,应该尝试制定更好的指标。
Kate Sills 对计算声誉的目标表示怀疑:
“评估一个过程是非常主观,并和背景相关。人们自然会对其他人的可信赖性持不同意见,而信任取决于环境……我们应该对任何‘计算’声明而获得客观结果的提议持极端怀疑态度。”
在这种情况下,我同意主观性和背景的重要性,但我不同意完全避免围绕声誉进行计算是正确的做法。所有试图支持大规模合作的复杂社会都必须在一定程度上依赖于聚合和简化。 我认为一个开放参与的认证生态系统(与我们今天所拥有的中心化的生态系统相反)可以通过为更好的指标提供空间,可以糅合两个生态世界的优点。以下是此类设计可以遵循的一些原则:
- 主体间性(Inter-subjectivity):声誉不应该是一个单一的整体得分;相反地,它应该是一种更主观的计算,包括被评估的个人或实体,以及观看者检查分数;
- 可信的中立性:实现这一点的方法是最大的透明度和不频繁地改变算法;
- 开放性:能够做出有意义的输入,并通过自己运行检查来审核他人的输出,应该对所有人开放,而不仅仅局限于少数强大的团队。
如果我们不能创造出良好的大规模社交数据聚合,那么就有可能将市场份额拱手让给不透明和集中的社会信用评分。 并非所有数据都应该在链上,但以公开内容的方式公开一些数据有助于提高社区自身的易读性,而不会造成被滥用和集中控制的数据访问差异。
作为数据存储
这是真正有争议的用例。区块链领域有一个共同的观点——区块链只应该在真正需要和不可避免的情况下使用,而在其他地方我们应该使用其他工具。 在一个交易费用非常昂贵、区块链效率极其低下的世界里,这是有道理的。但在区块链进行 Rollup 和分叉,交易费用降到几美分,区块链和非区块链去中心化存储之间的细微差异可能只有 100 倍的情况下,意义不大。
将所有数据存储在链上也没有意义。但是小文本记录为什么就有意义呢?因为区块链是一个非常方便存储东西的地方。我在 IPFS 上保留了一份此文章的副本。但上传到 IPFS 通常需要一个小时,它需要集中的网间连接器,而且偶尔文件会丢失。另一方面,将整个文章转储到链上可以彻底解决这个问题。当然,文章太大了,即使是分叉后,也不能在链上转储。但同样的原则适用于内容量小的记录。 将数据放在链上只是为了存储的正确决策的例子包括:
- 增强密码共享:将你的密码拆分为 N 个部分,其中 M=N-R 的部分都可以恢复密码,但你可以选择所有 N 个部分的内容。例如,这些片段可能都是密码哈希、通过其他工具生成的密码或安全问题的答案。这是通过在链上发布额外的 R 个片段(看起来是随机的),并在整个集合上进行 N 分之(N+R)次密码共享来实现。
- ENS 优化。通过将所有记录合并到一个哈希中,只在链上发布哈希,并要求访问数据的任何人从 IPFS 中获得完整的数据,可以使 ENS 更加高效。但这将显著增加复杂性,并增加另一个软件依赖性。因此,即使数据长度超过 32 字节,ENS 也会将其保留在链上。
- 社交元数据:数据连接到你的帐户(如用于sign-in-with-Ethereum),你想要公开数据,且长度非常短。对于像头像这样的大数据通常不是这样操作(如果图片恰好是一个小的 SVG 文件也可行),但是对于文本记录情况确实不可行。
- 认证和访问权限:如果存储的数据长度小于几百字节,那么将数据存储在链上可能比将哈希放在链上和数据放在链下更方便。
很多这样的情况下,权衡的不仅是成本,还包括密钥或密码被破解的情况下的隐私。有时,隐私重要性不大,密钥泄露或量子计算偶尔造成的隐私损失,与确定数据将保持可访问性相比没有那么重要。毕竟,存储在“数据钱包”中的链下数据也可能遭黑客攻击。 有时数据特别敏感,这是反对将其置于链上,并将其作为第二层防御措施存储在本地的另一个理由。在这些情况下,隐私需求不仅是反对区块链的理由,也是反对所有去中心化存储的理由。
总结
在上述应用场景中,我个人最自信的两个方面是与其他区块链应用程序的互操作性和帐户管理。第一种已经在链上了,第二种相对便宜(需要每个用户使用一次区块链就可以,而不是每个操作都使用一次),我们可以看到确实没有一个好的非区块链解决方案。 负面声誉和撤销也很重要,尽管仍然是相对早期的用例。通过只依赖链下的正面声誉,声誉系统大有发展空间,但随着发展,撤销和负面声誉的应用会更加清晰。
预计会有人尝试用中心化的服务器来实现这一点,但随着时间的推移,人们会明白区块链是避免不便和中心化之间艰难选择的唯一道路。 区块链作为短文本记录的数据存储可能微不足道,或意义重大,我预计这种用例会继续出现。区块链对于廉价可靠的数据检索来说非常方便,无论应用程序有两个用户还是 200 万用户,都可以继续检索数据。
开源指标仍然是一个非常早期的想法,它需要实现在不被利用的情况下,可以应用并使之公开。而公开内容则需要说服人们接受全新的工作流程去处理具有社会重要性的事情,所以这当然也是一个早期的想法。 我目前并不确定这些场景中非金融区块链的应用的意义,但很明显,区块链作为这些领域的赋能工具不应该被忽视。