1. 北竹林首页
  2. 资讯
  3. 技术指南

无涯价值探索:ArcBlock冒志鸿 | “联网+DID” 区块链应用破局的关键

本期我们请来了ArcBlock的创始人冒志鸿,带着刚发布的DID钱包,与我们分享链网思路下,区块链应用的破局的关键。

c08ac42193a44bc28587c52b3d2f8a85

分享者:冒志鸿

阅读难度:★★★★☆

技能要求:链网架构

阅读时长:20分钟

编辑:BlockPunk

前言

从2009年至今,十年间,区块链整体的市值增长了数百万倍,而区块链的性能,却仅仅完成了不到百倍的增长,相比起来实在悬殊。区块链技术就像被《三体》中的智子锁死了一般,大家都在低性能、弱隐私、难易用的“低光速泥潭”中苦苦挣扎。

怀着对新兴技术的宽容,我们依然对区块链满怀希望。但脚踏实地的,从应用落地的角度出发,区块链应用的瓶颈是明显的。

2018一年,出现了很多试图打破瓶颈的尝试,ArcBlock便是其中的代表。本期我们请来了ArcBlock的创始人冒志鸿,带着刚发布的DID钱包,与我们分享链网思路下,区块链应用的破局的关键。

区块链的未来是链网

ArcBlock的核心想法,区块链的未来是链网架构的。未来的区块链要有织“链”成“网”的能力,才能真正得到广泛使用。

什么是链网架构?

所谓链网,就是多个互相连接的区块链形成的网络。

用交通系统来类比区块链世界,公链的思路,就是以一条能够贯穿全世界的大路,理想情况下这条路上的车,能够到达世界上任何一个地方。但如果所有人都在这条大路上驾驶,这条路一定会变得拥堵不堪,这就是公链的性能问题。

如何解决拥堵的问题?一种方法就是给汽车提速,原来跑60码现在跑120码(缩短出块时间),但这样容易出现安全隐患。另一种典型的想法就是扩容,扩宽原来的车道,但你不可能无休止的扩宽车道。

在现实生活中我们是如何解决交通问题的?现实生活的交通是很多道路与公共交通组成的综合网络。未来的信息社会也是如此,必然是链网架构的,可以根据不同的场景,使用不同特点的区块链,但必须得保证链间是互联互通的。

为什么要使用链网架构?

目前最主流的区块链方案是公链,数数链网方案的项目,其实就三家,Cosmos、Polkadot还有我们ArcBlock,ArcBlock的链网已经在3月份上线,跨链已经实现了,欢迎广大开发者来检阅。

可能是因为EOS的营销成功导致,从业者普遍认为,必须做一条很大很强的公链,解决所有的问题。

但从现实逻辑的角度出发,公链的观点是存在悖论的:

  • 世界上所有的问题,是不可能靠一两条链解决的。就算技术上能搞定,从现实出发,中国和美国至少不可能用同一条链的吧?

  • 因为场景领域的不同,必然会出现多条不同的公链,因此它们的互联互通是个必然的结果。

这就是公链的悖论,他的愿景越有可能实现,就越需要跨链互通的链网。

举个例子,针对银行的去中心化金融体系,安全性是放在第一位的,性能的要求就不高了。但是如果是一个去中心化的通讯软件,就已经需要很高的性能,能承载非常多的节点使用,而它对安全性的需求,就没有金融体系那么高了。但我们可能在通讯过程中会进行转账等操作,所以这两个链之间必须是打通的。

因此,根据需求各取所需,多链共存,再利用跨链技术,织“链”成“网”,这才是区块链的未来。

DID是应用的关键

DID(Decentralized ID),即为分布式身份体系,一直是我们非常重视的一项去中心化技术,最近ArcBlock发布的钱包就主要搭载了DID功能。

为什么使用区块链实现DID?

去中心化ID这个技术,本身不属于区块链的范畴,但它却和区块链有着非常紧密的联系。实际上,一个用户能自主创建管理的ID,是远早于区块链的一个去中心化构想。

在基于区块链技术构建DID之前,就已经出现了多个解决方案。搞技术的朋友们可能知道过去的OpenID技术。但过去的DID技术都没有取得成效,有一个永远绕不开的点————没有区块链的时候,任何一种DID技术,都需要一个“认证中心“。但一旦到达需要认证中心的时候,就会存在不够去中心化的情况。这是与初衷相悖的,因为涉及到中心的认证,不仅存在隐私和安全问题,多个主体间的DID也是互相隔断的。

我们常常讨论一个系统究竟是去中心化还是中心化,其实你可以从不同的角度来看,程度是不同的。比特币系统本身是去中心化运行的,这一点大家没有争议。而正是因为比特币去中心化的特点,全世界就只有一个比特币的共识,从这个角度来看,它又是非常中心化的。

这就恰恰解决了DID最大的问题。如果使用区块链技术建立起一个DID系统,随着去中心共识的加深,就可以实现唯一的,人人皆可信的身份系统,而这个系统它本身的运作和维护,是非常去中心化的。这就是基于区块链技术实现DID的基础。

DID在区块链上意味着什么?

我们一致认为,DID是个非常重要的事情,ArcBlock搭建链网体系时,就把去中心化ID作为一个非常重要的部件,从底层进行了支持。

这就意味着,在ArcBlock的链网中,任何一个身份证明,都是去中心化的。这里的ID不仅仅只是一个账户的身份,链网中的每一个账户、每一个节点、每一个服务,乃至使用DAPP过程中的,甚至是未来的上链的物联网设备,都可以使用DID。

这就意味着,在ArcBlock的链网体系中,每一个交易的账户,不仅仅是一个没有内容意义的随机地址,同时也是一个DID,这大大降低了使用门槛。如果当你发某个DAPP时,这个应用需要有证明自己的唯一可信性的证据,证明它真的具备它描述的哪些功能和属性,这个证明就可以使用DID实现。包括你在使用某个特定服务时,需要创建新的身份时,我们传统的解决方案时单独在中心服务器上注册,这样既不安全,也会因为账户过多难以管理,而在这里,我们就可以针对每一个应用创建一个DID,快捷方便的使用。

DID技术,降低了区块链整体的使用门槛,提升了很多的用户体验,这对大范围应用是非常关键的。

迅捷开发,ArcBlock的区块链应用架构

268659a78f06429e8274c25369691075

上图是区块链的应用和互联网的应用的比较,可以看出来两者其实有非常高的相似性,区块链的应用的架构并没有大家想象的那么复杂。

我一直认为,区块链本身是计算机科学发展到一定程度的必然的结果,没有什么非常难理的地方。只不过在过去的时间里,整个业界把区块链搞得很神秘,创造了各种莫名其妙的名词和概念,创造了认知障碍,最终大家好像都不知道该区块链到底是什么样子。

传统互联网的应用架构

我们来回顾一下典型的WEB应用的系统,这是互联网时代最成功的一种应用的方式,应用是基于互联网搭建的,互联网有标准的TCP/IP协议,因此各种各样的应用可以连接在一起,形成现在这样庞大的网络。这些WEB应用有一个特点,很多都会用到标准的WEB应用节点,比较典型比如Apache、Nginx。

WEB服务器它的特点是什么?首先可跨平台部署,Apache、Nginx既可以跑在windows上,也可以跑在Unix的不同版本上。其次服务器可以是你自己架设的机器,也可以建立在各种云服务上。一旦建立了标准化的服务器,对用户来说使用起来没有差别,我们所用的站点服务,都是这个基础之上建立的。

直接基于服务器来做的话有一定的复杂性,所以大家本着不重复造轮子的想法,建立了一堆应用框架。这些框架都是为了让开发者能更简单的开发应用,好的框架是能解放开发者的,让大家能更专注于自己要做的事情。

所以在今天你要想开发一个WEB应用,相对来讲就比较简单了。正是因为能比较容易的进行开发,才造就了今天的整个互联网生态的巨大的繁荣。

ArcBlock的区块链应用架构

在ArcBlock的链网世界里面是什么样子呢?上面右边的图里,我们设想应用整体是基于区块链网络的,而不是单独哪一条公链。在这个区块链网络里,ArcBlock提供的就是ABT
Network的标准协议,如果还有其他的链网架构的公司,也可以连接上它的链网协议,比如Cosmos Hub,共同组合成为应用的最底层。

在这个区块链网络之上,需要建立一个非常标准的部件,称为区块链节点。ArcBlock提供了ABT
Node,它对应是WEB应用里Apach、Nginx服务器这类的东西。ABT
Node要成为一个标准件,这个标准件可以部署在不同的硬件上。可以是云服务上,也可以是在自建矿机上,一旦部署好ABT
Node的节点,在节点之上看来都是没有差别的,标准化的。

在这之上,ArcBlock还提供了一个区块链的应用框架,让开发者更简单的使用区块链节点的特性与功能,这就不需要自己造轮子了,从底层到上层的东西已经给开发者搞定了。

有了这些相对清晰的架构,我相信在不久的未来,区块链的开发不会再那么神秘。未来的区块链开发者,可以使用自己熟悉的框架,使用自己熟悉标准化区块链节点,快速的搭建自己DAPP,甚至是一整条写入逻辑的区块链。同时这些区块链可以非常容易的互联互通。

这就减少了很多的学习成本,让大家术业有专攻,ArcBlock来专注于底层的技术和框架的实现,让广大的开发者,更好的专注于商业与应用。

未来的展望

互联网刚开始出现的时候,只是电信网上的一个增值业务,但在今天来看,互联网已经是一个比电信网更大更重要的这样网络了。

今天看起来,区块链应用还只是互联网上一种P2P类型的新协议,但是我们相信,区块链有一个相当大的未来,未来的区块链网络可能与现在的互联网一样庞大,甚至是远超互联网的体量。

e1132ab4b4034e779c142994670e21d9

社区问答

老冒:这个问题非常好。DID技术虽然比较新,但理解起来不难,DID的身份是由使用者自主维护的,更接近于现实生活中的社交身份。

身份不赐予:在现实生活中,我作为一个人,是不需要其他人来承认,更不需要任何一个人来赐予,是生来就有的。这就是所谓的天赋人权,一个人生下来就获取拥有了自己的身份。

但如果在传统互联网的系统里,想获得一个身份,就必须去申请,把你的信息上传后,系统才会生成一个账户,这个账户在服务器上存着,实际上是借给你用的。而在去中心化的自主ID系统里,不需要向任何人申请就可以获得一个身份ID。

一人千面:在ABT Walle钱包里,大家其实是可以添加多个不同的个人信息,这里体现出了在DID技术在设计上非常重要的一个思想,那就是支持“一人千面”的多身份。

DID更像现实生活中我们的身份,每一个人都可以有多个不同身份。工作上的,伦理上的,生活上的等等。并且在不同的场景之下,与不同人打交道的时候,我们可以让自己呈现出不同的身份。

在传统互联网上虽然可以创建多个马甲,但创建马甲的自由程度很低。比如在使用微信的时候,你对微信里所有好友呈现的,都只是一个相同的ID,虽然你能通过设置隐私来选择新的展示身份,但是用起来是非常繁琐的。很多时候想把工作和生活的微信号分开就非常麻烦,唯一的办法就是创建一大堆小号,这样使用和管理起来非常的麻烦。

在DID的设计里,把这样不同身份需要在不同的场合使用的需求,从设计上就实现了。举个例子,一个真正的DID系统,即使使用同一个账户,去访问不同的应用的时候,或者当你和不同的人进行交流的时候,DID会立刻产生出一个专门在这个场景下使用的唯一ID。

从使用DAPP的角度来说,ABT
Walle可以让你自主的去编辑身份,并决定不同场景下分别使用什么样的身份。要注意的是,即使你使用同一个身份,在访问不同应用时,你的每一个身份ID都是唯一且不同的。举个例子,里创建的3个身份卡片,当你去访问十个不同的应用时,就会产生十个不同的ID,而这些ID是不需要里独自管的,只用维护里的身份信息就好。

老冒:从ID设计的角度,我觉得EOS的账户体系是一种巨大的倒退,比起最初的比特币来讲,EOS基本上是按照互联网注册账户那套体系来的。

大家都知道,在比特币、以太坊这些“真正的”区块链所设计的思路里,每个账户都是一个自主的账户。你不需要向任何一个网络上的节点去申请账户,你只要运行区块链给出的算法,就可以直接创建出账户。这个账户只要创建过,无论你声明与否,都是立刻生效的,而不用等待任何人给你批准。

EOS创建账户必须向超级节点申请内存空间,这在设计上基本是回到了互联网注册体系,所以说是巨大的倒退。

如果按照W3C对DID的定义,它一定是自主的。身份不是靠任何人给你赐予的,身份就是自我证明的。

所以如何判断一个系统是不是一个真正的DID?其实最简单的方法,就是获得ID的时候,需不需要申请,需要申请的一定不是DID。

DID提供了更好的隐私,能更加的符合我们的使用需求,但相比ID来说更复杂更难实现,需要的性能更高。因此早期的计算机都会用简化的注册模型。而随着计算能力的高速发展,性能足够了,加上有了区块链技术,去中心化的DID才得以实现。

老冒:非常的专业的问题!没错,一个好的去中心化的钱包,应该仅效忠于这个钱包的主人。

钱包不仅仅是管理资产,还必须能够帮助钱包的主人,随时随地的进行验证。

这个验证不难理解,大家想一下,一个好的浏览器也是一个非常典型的,去中心化的应用。浏览器并不依靠服务器运行,给它任何一个网址,都能帮你去浏览。比如访问https的站点时,浏览器会在背后帮你做一连串的验证,来保证你的上网安全。

那么在ABT的钱包里,也需要干类似的事情。举个例子,比如说用ABT钱包接受了别人转卖给你的、一张基于区块链实现的电子电影票。当你接受这张电影票的过程中,钱包首先会使用密码学的方法来验证,这是不是一张真正的电影票,这张电影票的签名是不是正确,电影票里的内容是不是和交易中你说的属实等等。

这些计算可能涉及到是一些密码学的验证,也可能会涉及到在各个不同链上去进行验证。一个比较独立的、去中心化的钱包,对用户在将来使用整个区块链网络,是非常重要的,钱包相当于验证人的作用,它随时随地的帮你去扫描,看看你的资产、你的交易是否合法。

钱包的节点不能简单等同于区块链上一个节点,甚至不和轻节点划等号。应该将它理解成链的安全代理人,它熟识很多协议,可以去和底层不同结构的链进行沟通,并忠实的对你的每一个操作,做一系列的检查工作。

老冒:Cosmos 和 Polkadot 都是非常值得尊敬的项目。说实在的,真正在链网这个架构下的项目,也就它们俩我们 ArcBlock 这三个项目了。

从架构设计的角度来讲,Cosmos 和 ArcBlock 思路上是最接近的,而 Polkadot 更像以太坊2.0,像以太坊的一个分片技术。

5311c411a9464931a13d55fa7836ccad

关于这三个项目设计思路的利弊,我就不王婆卖瓜自卖自夸了。但有一个设计理念,我觉得还是非常值得来讲的。ArcBlockt在整个设计中,我们有一个第一指导原则,是从Unix系统的原则里面学到的,“Do
one thing and do it well”,我们就做一个简单的事情,并且要把这个事情做得足够的好。

所以在ArcBlock链网的架构里,我们为了让这件事情变得简单,让它简单的使用,简单的开发,我愿意为了这个“简单”做一定程度的牺牲。我们是非常注重开发者体验的,大家可以看到我们在开发者不同的SDK的支持之上,是做的最全面的。我们的应用开发框架,也是一个全栈的框架,你用了这样一个框架,从前端到后端都可以使用。而不是说我们造了一堆轮子给你自己组装。

所以我觉得如果开发者朋友们像对这三个项目进行比较,有个简单的办法,只需要获取每一个项目的SDK,大致的看一下文档,然后按照文档开发实践一下,你就会迅速的发现区别。你会发现ArcBlock非常的容易上手。

举个例子,Polkadot在亮相介绍的时候,他告诉大家15分钟就能发出来一条链,但实际演示中大概花了40分钟,才把环境搭建起来,又花了15分钟创建一个类似“Hello
World”的链出来。而同样的事情让 ArcBlock 来做的话,差不多十分钟就可以解决。总体来说,我们是非常注重于开发者体验的。

老冒:今天我们所能见到的账户体系,其实有三种典型的模式:

  1. 互联网传统账户模式,必须去系统中去申请一个账号,然后使用 ID 和密码来使用。前面也有说到。这种模式迅速的出现了一个问题:大家的账户实在太多了。

  2. 第二种就是这位朋友讲的一键登录的模式,它与前一种模式的区别在于,由某一个
    ID 系统的提供者,在你的授权下,把你的数据提供给第三方。但仍然需要你把数据上传给这样的一个 ID 提供者的中心系统。这种情况下,问题常出在
    ID 数据的提供方这里,他会对第三方软件作出限制,让你不能自由的使用一键登录,同时还有隐私泄漏的风险。

  3. 第三种就是 DID
    了。DID
    希望让能传统账户模式的优秀用户体验,再实现非常好的易用性,并保护用户的隐私,首先得让用户的身份相关的信息完全都属于用户自己,而不再由任何一个中间人控制。即使是
    DID 的技术供应商,也不拥有用户的数据资料,更不能完全的控制用户数据的使用。相当于是把用户的身份和数据还给了用户。

老冒:ABT 的钱包支持一个叫 Open Wallet Protocol 的开放钱包协议,任何支持开放钱包协议的资产,就可以被 ABT 钱包去管理。这不是由开发者决定的,也不需要任何一个人去批准,钱包的拥有者可以自由的添加。

任何基于
ArcBlock
发出来的数字货币和数字资产,毫无疑问钱包是支持的。任何使用了ArcBlock的开放链访问协议,从而能进行映射的第三方链也是支持的。就比如说现在我们已经支持了原生比特币和以太坊的映射,这就意味着BTC、ETH
以及 ETH 上发行的各种 ERC20 资产,都是可以被ABT钱包管理的。

老冒:简单来讲,如果你没有进行数据备份,但是仍然记恢复码和初始密码,那么在这种情况之下,所有的链上数据都不会丢失,但是所有的不在链上的数据都没有了。

那么链上数据不会丢失,是不是意味着你利用恢复码找回后,马上就能看见里的所有资产,所有记录?

这是不一定,DID 的原理就是这样子的。你拥有一个主账号,代表着你最基本的自我身份,每当你去访问不同应用时,DID 系统会根据算法,给你创建一个子身份的。那么问题来了,当我知道我的主账号时,我究竟有多少子账户存在呢?

这其实就涉及到隐私的问题了,因为每一个子账号就相当于你使用过某一服务的证据,因此没有任何一个地方会为你做记录的,一但记录就会存在用户行为隐私泄漏的问题,子账户之间的关系也会暴露。

但你的资产都是记录在链上的,还躺在它原有的地方,并不会消失。只要里还记得自己拥有那些资产,就可以添加过后,轻松找回资产。

在后续的版本之中会在数据备份方面做出更好的这种改进,来实现去中心化的,自动的数据备份,钱包会变得更加好用。

老冒:其实在 DID 包含两个部分,ID 本身是一部分,ID 之上的可验证声明也是一个非常重要的部分。

大家都知道身份证吧!我们讲过,现实生活中我们的个人身份比较像 DID,生下来就是客观上存在的,并且是由你自行维护的。那么身份证、护照这些身份证件属于什么呢?

身份证、护照都属于 ID 上的可验证声明。什么时候我们才需要一本护照?当我们要出国的时候。护照意味我们的政府给了我们一个背书,证明我这个人没犯过罪,是诚实可信的,不会给别国带来麻烦。为了方便验证,政府就发了一个证件给你,这个证件叫做护照。

没错吧?所以这些证件,都是政府机构发给你,可以用来验证某些特性的证明材料。可验证声明就是指一些机构或个人,从你的ID里发出一个可以被验证的数据资料。包括说你的身份证、学历证明、资格证书等等,其实都是可以拿到链上实现的。你提供了可验证的声明,有的服务才会为你开启,就像你去银行办理业务,必须要带上身份证一样。

回答第二个疑问。DID
只是一套技术体系,并不是说谁提供用一个 DID 系统,这些身份资料就归谁了。这也是 DID 跟传统互联网 ID
的一个巨大的区别。在传统互联网里,用 ID 登录后发帖,中心化的管理员想封掉你的 ID 都是随时可以的,你没有任何办法,因为这个 ID
本质是他借给你使用的。

但 DID 不一样,它是一套体系。即使是 ArcBlock 提供了 DID
的身份服务,我们本身是不拥有任何人的数据的,仅仅是遵循一套方法实现了这个身份系统而已。而反而从安全和效率的角度来讲,我觉得将来整个社会,是更容易接纳
DID 的身份框架的,反而传统的互联网 ID 框架存在问题了。

我期望,将来政府的公民身份的认证体系里,能逐渐拥抱
DID,走到这种技术的思路上来,从而保护大家的隐私不受侵犯。因为我们都知道,很多的传统互联网巨头,都有靠卖我们的数据赚过钱。想要彻底解决隐私泄露的问题,DID
能提供一个很好的开始,但还是需要完善的法律来保障。

个人自主 ID 这种技术,政府是持比较欢迎态度的。比如说像美国的国土安全部,也就是给大家发放签证部门。它现在的一些方案里面,就有考虑采用区块链 实现的 DID 技术,来管理签证的发放。所以我相信,在将来这些技术最终会被政府接受,并不冲突。

声明:登载此文出于传递更多信息之目的,观点仅代表作者本人,绝不代表北竹林赞同其观点或证实其描述。

提示:投资有风险,入市须谨慎。本资讯不作为投资理财建议。

联系我们

QQ:

1739447883

邮箱:

1739447883@qq.com