DAS 之于加密世界,应如手机号/Email 之于互联网。
伴随比特币的出现,人类第一次真正意义上实现了私人财产不可侵犯。更深层次的,它启发了人们开始以去中心化的视角重新审核和着手重构这个世界。既然我们的货币可以彻底掌握在我们自己的手中,那我们的数据是不是也可以,我们的身份是不是也可以?答案是肯定的。
去中心化身份是 Web3.0 的关键组成部分。已有不少团队在尝试构建去中心化身份,但这些尝试仍存在诸多的问题。这些尝试包括:
从某个角度来看,公链地址就是一种去中心化身份。它可以被随意创建,具有唯一性,抗审查。但它的可读性很差,且不能转移。
Ethereum Name Service,Unstoppable Domains 是运行在以太坊上的 Dapp。旨在将区块链地址,文件Hash等映射成人类可读域名。我们可以认为它是一种比公链地址对人类更加友好的去中心化身份。但其只能运行在某条特定的公链上,例如一个 BTC 地址是无法持有 .eth 域名的。其定位为域名,同时无法跨链使用,使得其并不是最理想的去中心化身份方案。
W3C 的去中心化身份工作组也在积极起草去中心化身份的标准。其标准复杂,几乎没有产品支持。面对一个快速迭代的领域,先制定标准再实践的做法难以奏效,历史上的 HTML5 标准就是这样一个案例。一些参考 W3C DID 开发的产品,事实上无人使用。
Handshake 是一条公链,其目标旨在实现去中心化的顶级域名管理,即去中心化的 ICAAN。通过 Handshake 人们可以注册自己的域名,域名可以关联各种信息,这也是一种身份。
Blockstack 也是一条公链,定位于一个去中心化应用开发平台,其内置了去中心化的身份。
这类身份解决方案的问题在于,不是纯粹的身份协议,杂糅了其他与身份无关的特性。既无法与现有的公链兼容,又因其架构复杂,使得其难以普及和扩展。
作为 Web3.0 基础组件的去中心化身份协议,应该是轻量级的,高度兼容的,可组合的,易于集成的,易于扩展的。
去中心化账户系统 DAS(Decentralized Account Systems),正是这样一套去中心化的身份体系。其基本单元是 DAS 账户。整体上来看,DAS 账户具有以下特征:
1、易读易拼写。如 Alice.bit,Bob.bit,区块链.bit 。
2、去中心化,抗审查。任何人均可以匿名的无需许可的创建,由用户掌握完整的所有权和控制权。
3、全局唯一。每个账户都独一无二,无法创建出同名的 DAS 账户。
4、跨链。基于高可扩展性公链 Nervos CKB 构建,任意公链无需做任何改造,天然的被 DAS 所兼容。这是 DAS 最棒的特性!技术原理请参考《附录1:BTC地址如何控制CKB上的资产》
5、轻量级,易于集成。DAS 是一个去中心化应用,而非公链,包含多种编程语言的 SDK,采用模块化设计,便于集成。
6、低门槛使用。虽然 DAS 基于 Nervos CKB 构建,但用户无需事先安装 CKB 钱包,无需拥有 CKB 地址,在使用时也无需使用 CKB 来支付手续费。用户在使用过程中,对于 DAS 运行在哪条公链上是无感知的。
所有的 DAS 账户都以 .bit 结尾,具有层级结构,具有唯一性。典型的 DAS 账户形如 alice.bit, office.bob.bit。 每个 DAS 账户包含如下基础的抽象结构:
Owner,该 DAS 账户的最终所有者,可以转移该账户和设置账户的管理员。
Manager,该 DAS 账户的管理员,可以管理该账户的 Records,子账户等。
Records,该 DAS 账户的解析记录数组。解析记录是一系列键值对,由用户或应用自行定义。各类解析记录,便构成了对一个身份的完整描述。Records 记录只能由 Manager 管理,不能通过 Owner 管理。
Owner 和 Manager 一般为一个或多个公钥。当为多个公钥时,意味着该角色的职能,能通过某种多重签名来实现的。
尽管从账户抽象结构上来看,DAS 与 ENS 具有相似性,但 DAS 不是 ENS 的改良版。DAS 目标是成为一套去中心化身份协议,而不仅仅是一个域名系统。在 DAS 看来,域名不过是一种特殊的身份,身份协议本身的应用场景远远大于域名协议。不是每个人都需要域名,但每个人都应该有至少一个去中心化身份。
以下是一些 DAS 使用场景举例。需要说明的是,当我们拥有一套稳定可靠的去中心化身份协议之后,其衍生的使用场景,远不止以下所列举的。
假如 Alice.bit 解析记录如前图。某用户准备给 alice 发送比特币,在支持 DAS 的应用中,用户只需在收款地址中填入alice.bit,钱包即可自动解析其 BTC 地址为 17A16QmavnUfCW11DAApiJxp7ARnxN5pGX。若准备发送以太坊,收款地址中填入alice.bit,钱包即可自动解析其 ETH 地址为 0x829bd824b016326a401d083b33d092293333a830。免去了用户复制粘贴 alice 的收款地址的麻烦。当 alice 需要收款时,也无需再提供具体的收款地址,直接告知对方她的 DAS 账户为alice.bit即可。
同样的,用户通过支持 DAS 的钱包转账时,填入的收款地址如果有匹配的 DAS 账户,钱包会自动展示。这给用户提供了一种对收款地址进行二次检验的机制,可以有效的避免将资金转给错误的对象。
越来越多的应用开始关注用户的链上声誉。即根据用户地址的过往行为,为用户的声誉进行一个量化评估,以决定提供什么级别的服务。在多链并存的格局下, 用户可能在 A 公链上有极高的声誉评分,而对于 B 公链而言,他却是一个新用户。那作为一个 B 公链上的应用,自然希望能获取用户在 A 公链上的声誉,以提供与之匹配的服务。
DAS 作为一个跨链的身份系统,天然的可以聚合用户在各条链上的声誉。对于应用而言,它可以获得的,不再是用户的某个地址的声誉,而是用户在所有公链的所有地址的声誉汇总。
Dapp 一般以合约 Hash 作为合约入口,可识别度非常差。通过给 DAS 账户添加解析记录的方式,可以为 Dapp 提供一种非常高识别度的入口。如,当我们要访问 uniswap 的合约时,可以在钱包中通过 uniswap.bit 访问,而不是其合约地址。
其带来另一方面好处在于,无论合约如何升级,合约地址如何变化,对用户而言,永远只需要访问 uniswap.bit 即可使用合约的最新版本。
事实上,DAS 账户上所关联的数据并不局限于区块链地址或者文件Hash。它可以是任意的,由用户自行指定的数据。基于此,用户可以将社交账号,个人简介,个人偏好等信息选择性的关联到 DAS 账户。商业机构也可将部署在去中心化存储上的网页关联到 DAS 账户。用户通过安装了 DAS 插件的 web 浏览器访问这些账户时,便可以访问到这些信息。
此时 DAS 账户表现得像一个域名,并且去中心化的,抗审查的域名。
我们可以给每个 DAS 账户都关联了至少一对公私钥,这天然的构成了发送端到端加密消息的基础。
以 Alice.bit 给 Bob.bit 发送消息为例:
1、Alice 在 App 输入消息内容,并在收件人中填入 Bob.bit
2、App 通过 DAS 解析服务获取到 Bob.bit 的公钥,使用该公钥对消息内容进行加密,并用 Alice.bit 的私钥进行签名,然后发送消息。
3、Bob 的 App 收到消息推送。App 获得 Bob 授权之后,使用 Bob 的私钥对消息解密,并通过 DAS 解析服务获取到 Alice.bit 的公钥,验证该消息确实是由 Alice 发所出的。
4、Alice 和 Bob 完成了一次端到端加密消息的收发。
以上的端到端加密通讯体系,优于 Facebook 的 WhatsApp 和 Apple 旗下的 iMessage 等产品。原因在于:
1、除了消息本身的端到端加密之外,DAS 账户是去中心化的,任何人都无法删除该账户。
2、DAS 账户本身是匿名注册的,而 WhatsApp 和 iMessage 需要使用邮箱或手机号码等实名账户系统。
Web2.0 时代的服务都需要账户密码进行登录。多个网站使用相同密码,存在安全性问题。多个网站使用不同密码,又有极高的密码管理成本。
我们可以给每个 DAS 账户都关联了至少一对公私钥,且 W3C 的 WebAuthn 标准已被各大浏览器所支持。DAS 账户天然的可以作为登录第三方系统的凭证。登录方式从以前的输入账户密码,改为使用 DAS 账户所关联的私钥对登录操作进行签名。既免去了密码的管理成本,也简化了登录步骤。
若 Alice 是 Coinbase 的 VIP 客户,Coinbase作为 coinbase.bit 的持有人,可以创建二级账户 alice.coinbase.bit,并将 alice 在 Coinbase 的所有充值地址作为该二级账号的解析记录。那么:
这对于 Alice 而言,这是来自于 Coinbase 官方对其 VIP 身份的认可,是一种身份象征。
当 Alice 需要向 Coinbase 充值时,无需再登录 Coinbase 获取充值地址,直接在钱包中输入 alice.coinbase.bit 即可。
事实上,任何开展数字货币资产的企业/机构,都可以在其客户中应用这种实用的身份象征。
对用户而言,DAS 提供了一系列功能集合。
有两种途径获取 DAS 账户:
向 DAS 系统注册/竞拍
二级交易市场中购买/竞拍
任何人均可向 DAS 系统注册/竞拍 DAS 账户。为保证过程公平性,不同字符长度的 DAS 账户注册费用,开放注册时间,以及开放竞拍的时间有所不同。同时,对于知名品牌和全球流量排名靠前的域名所对应的 DAS 账户,DAS 系统将进行保留不予注册,对应的实体机构需要在申领期内通过申领的方式获得。
从二级市场中购买/竞拍也是获取 DAS 账户的方式之一。DAS 账号作为全局唯一的符号,是一种稀缺资源。DAS 系统内置二级交易市场模块,以降低这种稀缺资源的错配。
获取 DAS 账户后,用户可以账户的其 Owner,Manager,Records 等属性进行修改。用户也可决定是否启用该账户的子账户。
所有的上述功能,用户可以在 DAS 网站及任意支持 Dapp 的钱包中使用。
DAS 以开源的方式提供一套完整的组件,供生态中各个角色使用。包括:
Core Protocol
指一系列部署在 Nervos CKB 上的 Lock Script 及 Type Script,它们定义了 DAS 账户以及 DAS 账户的相关操作标准,是 DAS 核心协议的具体实现。
Keeper
Keeper 是一组任何人都可以无需许可的运行的链下程序,负责触发一系列符合核心协议的交易,是 DAS 系统的关键模块。
Resolution Service
根据 Nervos CKB 上的交易解析出 DAS 的全局状态,并以接口的形式对外提供账户解析服务。
Client SDK
包含各种语言的 SDK,用于简化移动端钱包,网页版钱包,服务端钱包以及其他 DAS 相关应用的集成工作。
Dapp UI
用户最终通过各种应用界面使用 DAS 的各项功能。这些应用可以直接在浏览器中使用,也可以集成到流行的钱包软件中。
Payment Gateway
使用 DAS 时,某些操作需要相应的费用。费用均采用法币定价,得益于现已成熟的价格预言机服务,以及 Nervos CKB 的 Open Transaction 特性,用户可以使用任意主流数字货币,甚至法币进行支付。因此,虽然 DAS 是基于 Nervos CKB 构建的服务,但无需持有 CKB 也可使用 DAS 服务。
Governance System
成为一个社区驱动的项目是 DAS 的目标之一。社区可以通过该系统完成对 DAS 的投票治理,包括新特性添加,系统参数调整等。
DAS 团队会实现所有以上组件并开源。其中 Keeper,Resolution Service,Client SDK,Dapp UI,Payment Gateway 等组件,任何人都可以根据 Core Protocol 的协议约定,实现自己的版本。我们也十分乐意协助社区实现自己的版本。
本章节简述 DAS 系统的关键技术特性,技术挑战,以及部分功能的实现原理。为了明确概念,在以下的章节中 Nervos CKB 代表 Nervos L1 公链,而这条公链上的原生代币称为 CKB。
得益于 Nervos CKB 的开放性架构,我们可以将任意公链的签名算法放置到 Nervos CKB 上,并在必要的时候使用该算法进行验证。如,我们可以在 Nervos CKB 上校验一个用户是否为一段数据提供了有效的 ETH 私钥签名。进一步,如果验证 ETH 私钥签名有效,则可以对 Nervos CKB 的状态进行修改。这便是 CKB.pw 这个产品所实现的,用 ETH 地址收发 CKB 的原理。基于此,我们推广开来,可以用任意公链地址,管理任何发行在 Nervos CKB 上的资产,自然包括 DAS 账户这样的 NFT 资产。这便是 DAS 具有高度兼容性底层原理。
技术原理请参考《附录1:BTC地址如何控制CKB上的资产》
Nervos CKB 的 Cell 模型是对比特币 UTXO 模型的一般化设计,这与 ETH 的账户模型有所不同。ETH 账户模型下,某个合约的所有用户数据都集中存储在该智能合约的内部数据表中。而 Cell 模型下,某个“合约”的用户数据分散存储在用户各自的 Cell 中。两种模型的优劣,在此不作展开。单从 DAS 系统来看,数据分散存储,为校验一个账户是否已经被注册过,带来了一定的挑战。但这并不是什么问题,通过恰当的设计,可以很好的解决。
另一个角度而言,我们将归属于用户的 DAS 账户以及账户相关的描述信息,解析数据放到用户自己的 Cell 中,只能用户自己修改,这更符合去中心化的理念。
我们采用逻辑上的有序链表,来保证一个 DAS 账户不会被重复注册。每个已注册的 DAS 账户,都有一个 Cell 用来存储其相关的信息,称为 AccountCell。我们要求所有的 AccountCell 按某种顺序排序,比如按账户名做字典序升序。当要注册一个新的 DAS 账户时,我们可通过链上脚本,确保其对应的 AccountCell 必须插入到链表中合适的位置,以保证不破坏这种顺序。保证了有序链表中内容的有序性,也就可以顺便保证其链表元素的唯一性。
以一口价出售账户为例,卖家发出一笔交易,输入包含待出售的账户的 AccountCell。同时输出一个 ForSaleCell,其中包含账户,卖家,定价等信息。ForSaleCell 的 Type Script 包含如下校验逻辑:
任何人可以构造一笔交易花费掉 ForSaleCell,并创造一个 AccountCell 给自己。前提是,这笔交易的一个输出中,需要向卖家转入不低于指定数量的 CKB。
卖家可以在任何时候花费掉 ForSaleCell,创造一个 AccountCell,以此取消出售,拿回账户。
DAS 系统内的收费均以美元定价,并以 CKB 在链上进行支付。而让用户无需拥有 CKB 即可使用基于 CKB 的 DAS系统,是 DAS 的重要目标之一。得益于 CKB 的 OTX 特性,用户可以将费用以其他币种支付给 DAS 支付网关,由支付网关为用户构建最终的交易,支付 CKB 并上链。
DAS 账户的数据结构设计以及脚本实现,遵循 Nervos CKB 之上的 NFT 标准草案。这意味着,DAS 账户可以被当作一种普通的 NFT 资产。任何管理和操作 NFT 资产的应用,均可以操作 DAS 账户。如第三方拍卖市场,接受 DAS 账户作为抵押资产的借贷市场,合成资产平台等。这也使得 DAS 作为一个去中心化身份协议,具备可组合性,可扩展性。
DAS 的广泛采用,离不开爱好者的积极推广,以及钱包/应用等渠道的集成。尽管在 DAS 的设计中,渠道的集成的工作量很低,但我们依然设计一套激励规则去鼓励更多的渠道方集成 DAS。
如上图,DAS 内置渠道和邀请人的现金奖励机制。
若一个账户定价 X 美元,用户直接发起注册,需要支付等价于 X 美元的 CKB 或其他代币。注册时填写邀请人信息则最终只需支付 0.95X。
用户支付的 0.95X,其中 0.1 * 0.95X 支付给渠道,0.1 * 0.95X 支付给邀请人,最终 0.8 * 0.95X 作为 DAS 系统的收入。
在未来,当 DAS 开启去中心化治理之后,发起治理提案,对治理提案进行投票等,也会获得相应的激励。
DAS 之于加密世界,应如手机号/Email 之于互联网。
2020年Q4,可行性论证 -- 已完成
2021年Q2,完成核心组件的开发工作,包括 Core Protocol,Keeper,Resolution Service,Client SDK 以及 Dapp UI 等。
2021年Q3,上线运行;开启账户注册及拍卖;启动应用集成,代码开源。
2021年Q4,链上二级市场,链上拍卖,反向解析。
2022年,推动应用大规模集成。
2022之后,推出 Governance System。
至少不能按通常意义上的跨链逻辑来理解。事实上,Nervos CKB 上的资产不会出现在 BTC 上,BTC上的资产也不会出现在 Nervos CKB 上。Nervos CKB 只是可以兼容任意公链的账户(地址)体系。
我们做一些比喻,把一个公链比喻成一个国家,该公链的地址比喻为该国家的居民身份证。如:
ETH 公链 --> 美国
ETH 地址 --> 美国身份证
BTC 公链 --> 英国
BTC 地址 --> 英国身份证
Nervos CKB 公链 --> C国
Nervos CKB 地址 --> C国身份证
对于美国而言,居民必须持有美国的身份证,才能持有和管理美国境内的资产,英国亦如此。两个国家相互不认可对方国家的身份证。
但对于 Nervos CKB 这个新的 C 国而言,不光持有 C 国身份证的居民可以持有其境内资产。其他国家的居民,只要提供有效的他国居民身份证,也可以持有 C 国的资产。
更进一步类比,BTC 用户在 BTC 钱包内发送发行在 Nervos CKB 上的资产,就好比,美国居民可以凭借有效的美国身份证去转卖其在 C 国的房屋。并且这个专转卖过程是 C 国官方所认可的(Nervos CKB 节点验证过的)。
Nervos CKB 可以兼容 BTC 的账户体系,本质是指,Nervos CKB 这条链可以检验 BTC 私钥对一笔 Nervos CKB 交易的签名。
一般而言:
1、BTC 链只能校验 BTC 私钥对 BTC 交易的签名,ETH亦如此。签名校验通过,交易上链,意味着你用 BTC 私钥控着了你的 BTC 资产。
2、同时,BTC/ETH 链的签名算法是固定的,校验签名的程序逻辑也是固定的。要添加新的签名算法,必须对整条链硬分叉。
但 Nervos CKB 有一些新特性:
1、向 Nervos CKB 链添加新的签名算法时,CKB 不会硬分叉,新的签名算法就像插件一样被安装到了 Nervos CKB 上。
2、同时,任何人,在任何时候,都可以在 Nervos CKB 上部署任何签名算法(不过就是一段二进制程序罢了)。
3、在一笔 Nervos CKB 交易中,可以明确指出需要调用哪个签名算法参与交易的验证。
4、Nervos CKB 节点在打包交易时,就会运行那个特定的签名算法对交易进行校验。校验通过,交易上链。
因此:
我们可以把 BTC 的签名算法安装到 Nervos CKB 上,并且在交易(交易内容一般就是同质化或非同质化代币的转移)中明确,节点在打包这笔交易必须调用 BTC 的签名算法进行校验。签名校验通过,交易上链,资产转移完成,意味着你用 BTC 私钥控着了你的 Nervos CKB 资产。
同理,我们可以把任意公链的签名算法安装到 Nervos CKB 上。最终实现,任意公链地址都可以持有发行在 Nervos CKB 上的资产。
如此优雅的“跨链”方式,源自于 Lay2 团队带给我们的启发。他们构建的 PW-SDK 是 Nervos 生态的基础设施,也是 DAS 账户可以被任意公链地址所持有的核心秘诀。
感谢阅读。