Blockstack 提供了多种技术组件来方便开发者开发 DApp ,其中最关键的是三个,Blockstack Auth 去中心化身份系统,Gaia 去中心化存储,Stacks 区块链。那么这三者各自有什么特点,相互之间又是如何配合的呢?这节来详细聊聊。
Blockstack Auth
Blockstack Auth (后面简称 Auth )是 Blockstack 提供给开发者的一个去中心化的认证协议,是一个去中心化的身份系统。
Auth 的目的是给用户提供一个全网通用的用户名。整个系统是基于 W3C 的 DID 标准,所以这个身份是属于用户自己的,每个基于 Blockstack 开发的网站或者应用,都可以用这个用户名来登录。用户再也不用每次使用一个新的网站,就重新注册一下了。很多人认为,在 Web 诞生的第一天,就应该把这样的一个机制设计在内的。Auth 可以帮用户在区块链上把用户名作为一个加密资产来进行注册,然后通过持有对应的私钥来使用这个用户名。用户需要理解如何使用私钥,这个有一定的难度,但是一旦用户掌握这个能力,他们就能像拥有比特币那样,真正自己持有自己的用户名了,而不会再被任何公司持有。
对于开发者而言,Auth 提供的用户名可以直接用来登录网站或者 App 。不需要再单独开发用户身份系统,也不需要数据库去存储用户名密码了。
这就是 Auth 的基本原理了。
Gaia
使用 Auth 登录一个应用的用户,当他退出这个应用的时候,他不会在这个应用里面留下任何数据。不仅仅是用户的身份是自己持有的,数据也是自己存储的,而这个存储的方式,就是使用 Gaia 系统。
Gaia 可以认为是一个私人数据保险柜。保险柜是属于用户自己的,一旦数据存入,没有任何其他人可以查看。具体这个保险柜存在哪里,是没有明确规定的,可以存在普通的云存储空间之上,例如 Dropbox 或者 Google Drive 。注意,以往我们往这些地方存数据,这些服务的提供者是能够看到我们的数据的,但是有了 Gaia ,数据是加密,或者说放到保险柜中之后才放到云存储之上的,所以云存储背后的公司是不能看到我们的数据的。换个角度,可以说 Gaia 让每个人拥有了自己的一个小私有云。
Blockstack 团队认为,去中心化的存储系统,类似 IPFS ,起码目前来讲并不是很好的存储方式。Muneeb 在一次演讲中提到:”你绝不希望把自己的数据存到一个咖啡馆里的人的笔记本上,一旦这个人关了笔记本,你的数据就不能访问了。“。当然,我们知道 IPFS 存储数据是有备份的,但是 Muneeb 本人是普林斯顿专门研究分布式计算机系统的博士,他应该知道自己正在说什么。
Gaia 的宏观介绍就是这些了。
Stacks 区块链
接下来要介绍的是 Blockstack 自己的名为 Stacks 区块链。
Stacks 区块链是支持智能合约的。跟很多区块链项目追求图灵完毕,追求功能强大的思路不同,Stacks 追求极致的安全,不惜牺牲灵活性。更简单的,可预测的程序代码,更容易进行形式化验证。而且,Stacks 上的代码是运行在解释器上的,也就是说,一旦对代码执行的形式化验证之后,就可以直接在区块链上执行这些代码了。而如果采用编译型的语言,源代码跟真正执行的二进制机器码之间还隔着一个编译过程,如果编译器本身有漏洞,那么即使是源码进行过形式化验证也不能保证执行时候的安全了。
Stacks 区块链上的代币叫做 Stacks Token 。代币用来做系统运行的燃料。当我们运行智能合约的时候,就有消费代币。 Blockstack 预见的未来是一个没有公司的世界,一切都靠去中心化的组织去推动,所以代币也用来提供足够的激励。不仅仅是挖矿可以获得代币奖励,在 Blockstacks 上做 App 的团队也可以通过一个叫做 App Mining 的机制来获得代币奖励。App Mining 系统很像一个去中心化的 App Store ,让好的应用可以跟用户见面。
就我写本书的这个时间点言,Stacks 区块链也仍然在快速迭代中,最近进展可以参考官网。
结论
Blockstacks 技术栈的最重要的三个组件,身份系统,Gaia 存储系统,Stacks 区块链,的介绍就到这里了。身份系统基于 DID ,给每个用户一个全网唯一的,不受任何 App 控制的用户名。Gaia 是存储每个用户数据的保险柜,因为 Blockstack 主张用户数据不存储到区块链上。Stacks 区块链是有代币并支持智能合约的,但是 Blockstacks 主张绝大多数的业务逻辑都在链外实现。只有跟支付和资产相关的个别部分才实现到区块链上。