数字身份:在数字空间,如何安全地证明你是你
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.5 Sidetree协议

1.5.1 Sidetree协议概述

2017年,去中心化身份组织(DIF)的一些成员开始讨论如何在全球级别实现去中心化身份系统。对大多数去中心化身份系统而言,底层是区块链/账本,称为第一层协议,用来以某种形式支持去中心化公钥基础设施(DPKI)及去中心化身份标识(DIDs)。

区块链的可扩展性不是小问题,目前已经存在一个有前途的策略来解决基于区块链的系统的可扩展问题,称为第二层协议,如状态通道、侧链和比特币闪电网络。第二层协议通过确定性处理与交易方案来实现可扩展性,这些交易是在区块链之外完成的,只需在与所依托的底层区块链交互时进行极少的共识处理。

要实现去中心化身份管理,就需要一个大规模运行的系统,同时具备一些核心特性,如确定性状态解析及差分持久化。2017年8月至2019年2月,DIF成员间开始思想交流,并最终形成了一个完整的第二层协议——Sidetree协议。

1.5.2 Sidetree协议的理论基础

区块链是一种能够锚定和跟踪唯一的、不可转移的数字实体的方法,但是用来实现这个方法的策略面临严重的事务性能约束。Sidetree协议是一个第二层协议,用来在区块链中锚定和跟踪DID文件。其中心设计理念涉及将多个DID文档操作批处理为单个区块链事物,这使得Sidetree协议能够继承区块链的不可篡改性和可验证性保证,而不受其交易率的限制。Sidetree协议架构如图1-5-1所示。

图1-5-1 Sidetree协议架构

在架构上,Sidetree网络是由执行Sidetree协议规则的多个逻辑服务器组成的,包含以下三部分。

(1)由Sidetree节点组成的网络。每个Sidetree节点都提供服务端点,以针对DID文档执行操作(如创建、解析、更新和删除)。

(2)由底层区块链节点组成的网络。区块链共识机制有助于序列化由不同节点发布的Sidetree操作,并为所有Sidetree节点提供所有DID文档状态的一致视图,而Sidetree节点无须拥有自己的共识层。

(3)内容寻址存储(Content Addressable Storage,CAS)系统。Sidetree协议在单个文件(批处理文件)中批量处理多个操作,并将批处理文件(Batch File)存储在分布式内容寻址存储系统中。然后将对操作批次的引用锚定在区块链上,将所有批处理操作的实际数据都存储为一个批处理文件。任何人都可以在不运行Sidetree节点的情况下运行CAS节点,用于存储Sidetree批处理文件。

Sidetree协议本身并不是去中心化身份方法,它由一组代码层级的组件构成,包括确定性处理逻辑(Deterministic Processing Logic)、内容寻址存储抽象(Content Addressable Storage Abstraction)及可以部署到第一层的去中心化账本(如公有链)上的状态验证过程,从而实现无须许可的第二层DID网络。通过使用与特定链相关的适配器,Sidetree协议可以用来在不同的链上创建不同的第二层去中心化身份网络,这些特定链的适配器负责实现与底层区块链的读写交互。

无论底层采用哪种区块链,Sidetree协议的几乎所有实现代码都应保持一致,这使得它可以适用于多种区块链平台。

1.5.3 Sidetree协议的设计与实现

Sidetree协议基于一组模块化组件实现,包括以下几部分。

(1)Sidetree内核(Sidetree Core):Sidetree内核是主要的逻辑模块,它监听来自底层区块链的交易输入,并使用CAS模块获取其中的DID操作,然后组合/验证每个DID的状态。

(2)内容寻址存储(CAS):CAS模块是一个基于哈希的存储接口,网络中的第二层节点使用该接口来交换彼此识别的DID操作批次,以进行本地持久化和网络传播。该接口抽象自所使用的特定CAS协议,但是需要指出的是,DIF成员已经为此功能选择了IPFS。

(3)区块链/账本适配器(Blockchain/Ledger Adapter):适配器中包含了所有需要读写特定区块链的代码,以便解除Sidetree主体对特定区块链的依赖。针对不同的底层区块链,需要分别实现不同的适配器。

Sidetree协议总体结构如图1-5-2所示,将比特币作为目标区块链,这也适用于其他区块链。

基于Sidetree的第二层(L2)节点,按如下步骤创建、读取和处理DID操作。

(1)要将批操作写入基于Sidetree节点的L2网络,首先需要汇集尽可能多的DID/DPKI操作(可根据各种确定性协议规则规定最大数量),然后创建一个第一层(L1)链上交易,并在交易中嵌入该操作批次的哈希值。

(2)DID操作的源数据由发起节点本地存储,并推送到IPFS网络中。当其他节点获知嵌入Sidetree操作的底层区块链交易后,这些节点将向原始节点或其他IPFS节点请求该批次数据。

(3)当一个节点收到一个批处理后,它会将元数据固定到本地,然后Sidetree核心逻辑模块解压批处理数据以解析并验证其中的每个操作。目标区块链的区块/交易体系是Sidetree协议唯一需要的共识机制,而不需要额外的区块链、侧链或咨询权威单位来让网络中的DID得出正确的PKI状态。

图1-5-2 Sidetree协议总体结构

(4)如图1-5-3所示为将批处理操作嵌入目标区块链的详细示意图。

Sidetree协议在设计时做出了一些关键的假设。

(1)DID不可转让,协议没有提供一个逻辑实体转让、购买或获取其他逻辑实体的DID的途径。这对于DID/DPKI用例是可行的,但是不适用于资金的双花。

(2)可以延迟揭示嵌入的批次数据,并基于确定性规则集进行处理。

(3)DID状态彼此独立,一个DID的持有者只能影响它自己的DID状态。

图1-5-3 将批处理操作嵌入目标区块链的详细示意图