身份和声誉,是 Web 3 世界的基础。在本文中,我们给出了相关问题的综述,并罗列出一些解决方法。
为什么身份 & 声誉这么重要让我们从了解身份和声誉如何释放协议层面的价值来着手。
将一次性博弈转变为重复博弈区块链用户都是匿名的,而且更换新地址的成本可忽略不计,所以共识协议很难要求用户进行正当的行为。发展到今日,我们习惯以质押的概念或是“惩罚条件”来进行约束,本质上就是通过罚没参与者的一些资金(通常是 ETH 或是 ERC20 代币)来惩罚作恶行为。
假设我们有一种办法,能够以数字化方式体现身份和声誉的稀缺性,便能修改现有的股权机制,采取如同罚没资金一样的方式,使作恶者的声誉遭受损失。相对的,共识协议也能够奖励声誉高的参与者;比如在网络中给与他们更多收益(可以与 Cosmos 和 Keep 项目中提到的工作代币 "work token" 类比 )。参与者有动机来优化自己的声誉,而不只为了短期利益;进而将一次性博弈转变为重复博弈。
抽样关于抽样,最重要的应用就是共识机制本身( 像 Proof-of-Work 和 Proof-of-Stake 承担了抗女巫攻击认证)。这可以扩展到其他用例,比如选择由谁存储文件,或是由谁在资源市场中执行计算工作。
限流及定价策略网络服务通过许多的限流及定价策略,来满足不同层次的客群需求。 以 Dropbox 为例,它使用免费增值模式(任何人都能免费使用服务,但免费的服务有限)。通过身份系统,去中心化的协议也能够实现相似功能。像是 Filecoin,可以使用免费增值模式给大需求用户提供更低廉的价格。
除了协议层之外,我们也看到很多应用需要身份。
治理现有的区块链投票系统,是基于代币投票模式。代币是稀缺资源,提供抗女巫攻击机制,但是这样也导致财阀专权,有钱人的话语权更大。二次方投票(Quartic Voting)之类的机制,虽然能够降低财富的影响,但现在还是可以钻空子;比如一方将钱分散到多个账户地址。
而身份认证使得二次方投票方案得以实施。
声誉,源于用户在协议中曾有过的行为,或是来自社区对该用户的信任;可以作为决定某个节点投票权重的依据。毋庸置疑的,安全的链上投票的要求比上述要更加严苛。举例来说,为了避免贿选发生,参与者不应能公开他们的投票方式(关于“抗胁迫性”的描述更为广义,相关介绍可见 Daian, Kell, Miers, and Juels 的 这篇文章 。)
借贷链上借贷协议无法信任参与者,因此要求完全抵押才能进行借贷,这种高昂借贷成本遏制了应用的发展。
身份系统通过验证借款人在真实世界中的一些特征(征信记录、产权证明、收入等等),来扭转上述局面。声誉,是由以前的借贷经历或是其他人担保而来,可以被视为抵押物。
证券类代币将真实世界的抵押物代币化,如房地产、股权、艺术品,能够放大它们的价值:增值点在于代币能体现部分所有权,具备及时清结算,及参与7*24全球市场等优势。该类代币的发行和交易须遵守证券法(对交易参与者进行 KYC, AML,资质鉴定,和其他检查 ),这些条件限制能够内化到代币本身(比如使用 Harbor 方法的 R-Token )或在交易所交割时强制执行(如在去中心化交易所调用 ERC20 转移函数前先执行此类限制条件)。
代币发售 & 空投代币空投能激励网络中的参与者。最近的一些空投例子如 Livepeer 的 Merkle Mine 和 Handshake’s airdrop ,都是开源的空投机制。有了身份和声誉体系,我们能够设计更 精细 的空投分发机制。身份和声誉在这里的应用,包含:构建链上游戏的社交属性(如,游戏中物品的受欢迎程度会影响其价格)、登录及权限控制、DPoS、普适的最低收入,以及聚合去中心化预言机的输入。
下面,让我们来看看身份和声誉究竟代表什么意思。
我们指的身份和声誉是什么? 身份是系统内最基础的角色。在以太坊中,可以说以太坊账户地址就是身份。 身份可以用来证明自己和他人曾发生过一些事,我们把这些事称作声明。随着时间推演,声誉会随着身份体系建立起来。身份、声明,和声誉的协议,应该通过适当的接口相互交互。这个系统必须是模块化且可扩展的,同时具备以下特性:
去中心化(Decentralization):协议规则应该由网络参与者制定和遵守,而不是由中心化权力机构执行。 自治(Self-sovereignty):用户自行掌控属于自己的身份、声明,和声誉。这与 Web 2 网络形成巨大的反差;在 Web 2 网络中,比如在亚马逊;一个商家的产品积累的声誉,可能会因为亚马逊破产或单方面决定,而被移除。 可移植性 & 互操作性(Portability & interoperability):系统不该扣留用户,而应该允许用户往其他系统上迁移属于自己的数据。 抗女巫攻击(Sybil resistance):设计协议时,必须考虑参与者不能通过发布多个身份获得优势;除此之外,协议中旧身份更换成新身份没有好处。构建一个去中心化的抗女巫攻击身份体系,是一个 涉及方方面面的问题 。此问题可以使用一种易于单次计算,但难以重复计算的函数;或是一种无法通过机器表现的人为举动。比如 Proof of Work 和 Proof of Stake 都是目前常见的方式。 隐私(Privacy):参与者应该能选择性地与他人共享数据。此外,默认情况下参与者的身份能通过不公开的标识进行验证。接下来,让我们深入了解这个系统的三个组成:身份、声明、声誉。
身份 身份可以指的是外部持有的账号(由私钥控制),或是一份智能合约(多重签名、DAO、其他等等)。身份能够用于信息签名、数据加密,或是发表关于自己或他人的声明。身份管理中,密钥的管理是最重要的一环。与私钥最大不同是,使用智能合约管理身份让我们能扩展一些功能,如密钥找回、权限控制、动态花费限制等等。
身份管理合约应该包含密钥恢复机制,以面对以下情况:
密钥丢失(用户权限丢失) 密钥遭窃(用户拥有权限,小偷也拥有权限) 密钥遭窃且丢失(用户权限丢失,小偷拥有权限)有许多机制在这里能够派上用场:社群找回、 暂停证明服务 ,或是通过 Shamir 密钥分享和 Schnorr 签名方法。
将密钥具体功能分离,能够划分出不同层级的安全性。以 ERC-725 为例,其提议持有不同密钥来用于管理、行动、发表声明,和加密。
为了保护隐私,用户在不同使用场景需要创建和管理不同的身份。如果我们用相同的、完整的身份去借贷、给质押者授权、支付,会导致用户在真实世界的身份被交叉比对最后暴露。在 BIP 32 / 39 / 44 中提到的分级确定性(Hierarchical Deterministic)方法能够在这里派上用场。
最后,身份方法必须和其他系统有很好的互操作性,并能适用于 W3C DID (去中心化身份验证者 Decentralized Identifier) 标准。
声明 声明指的是由一个身份对另一个身份提出的事实。“声明 Claim”的语义遵循“一个实体提出关于某个主题的声明”,并且能够表达许多事:
“A 声明 B 已经通过 KYC。”――用于抗女巫攻击 “A 声明 B 是合格的投资者。”――用于监管合规(如代币售卖,和抵押代币交易等等) “A 声明 B 超过了 21 岁。”――用于有年龄限制的产品 “A 声明 B 是中国公民。”――用于合规审查 “A 声明 B 有 x 收入。”――用于信用风险担保这些声明由声明人签署,因此其真实性和完整性能够以加密形式验证。
任何一方也能够对其自身发表声明(比如姓名、国籍、生日)。
有些设计准则需要铭记在心:
声明必须是加密的(Claims should be encrypted):声明可能包含敏感信息,因此始终要以加密形式储存。数据拥有者能够以可选的信息公开流程,将数据分享给特定身份对象(比如,通过 Diffie-Hellman 方法交换密钥)。 尽可能少地在链上存储数据(Store as little data as possible onchain):除非要求链上审查(比如,某次需要许可的 ERC20 交易),否则声明数据应该被放在链下存储,只链上存储其加密形式(如,默克尔树的根值)。除此之外,考虑到未来量子计算的普及和目前加密系统的脆弱性,即便数据已经进行加密,也不该存放在区块链上。 只有发布者能够移除声明(Only the claim creator should be able to remove their claim):这样能够使网络有能力发布负面声明,而不用担心它们被删掉。举例来说,可以声明某个以太坊地址是钓鱼诈骗(从虚假 ICO 到推特上的“免费赠币”骗局等等,这是在加密世界始终存在的问题),或是卖方没有履行他们的商业责任。 继续这个思路,我们可以想象一下,如果某个用户被卷入了与他无关或恶意第三方的声明,该怎么办?这不构成问题,因为没有声明是具有权威性的。 声明就只是由某个身份提出的、关于另一个身份的状态,至于信不信,完全由验证者自行决定 。声明具有有效期 (Claims can expire):声明不会永远有效。举例来说,在某些司法管辖区,可信的状态每 90 天需要更新一次。每个声明发出时包含当时的区块高度,因此验证者能自行判断这些声明的有效性。
现在,让我们来看看一些设计预案。(未完)
原文链接: https://sinahab.com/2018/09/identity-and-reputation-in-web-3/
作者:Sina Habibian
翻译&校对:IAN LIU & Elisa