区块链应用栈的分享数据层
时间:2014-12-18 来源:巴比特 作者:少平
想象一个去中心化、对每个人都开放的全球数据存储层(或一组全球数据库),每一个应用都被纳入其中。这就是分享数据层的基本理念。这一切可以通过覆盖网络(Overlay Networks)和区块链的组合实现。 ---- 这是区块链应用栈的第二篇文章。如果你还没有第一篇文章,我建议你先花几分钟看看。它将为本文中的许多理念提供有用的背景。在本文中还有一些洞见没有讲到,我希望在下一篇文章中继续。 让我们谈论一下区块链应用栈的分享数据层。 (我的同事Jonathan正在设计此图的更新版本,很快就能够发布了。在这一方面,他比我厉害多了,所以非常感谢他的帮助。) 想象一个全球数据(或者一组全球数据库),每一个应用都被纳入其中。这就是分享数据层的基本理念。正如它的名字所示,它是一个去中心化的、对每个人都开放的数据存储层。 去中心化意味着没有一个单一的实体、个人或者公司拥有这个数据库,它由全世界数以百万计的计算机维持。你也可以帮助维持它,根据你的计算机为网络做所的贡献,你甚至可能自动地从中获得收益。 开放意味着任何人–无论它是一个人、一家公司或者一个应用–都有权限使用这个数据库。你的个人数据是被加密存储的,只有被你给予密码(或者更加准确的说,你的私钥)权限的人才能揭秘和理解这些数据。你可以允许特定的应用使用你的数据,但是它们不拥有你的数据,你可以随时拒绝应用使用你的数据,或者转移到现在所使用的应用对手,不用失去对数据的控制权。 这一切可以通过覆盖网络(Overlay Networks)和区块链的组合实现。 在区块链上存储数据 在2013年,一项特性被引入到比特币协议,使得我们可以做到:创建一个特殊类型的交易(被称为OP_RETURN交易),你可以将40字节的数据嵌入到此交易中。起初,它被用于将情境信息添加到比特币交易中,例如运输信息。一种更有创造力地使用此特性的方式是,创建最小额的交易(0.00000001,或者一聪,加上交易费用)和嵌入你想要的任何合适的信息。 因为区块链在时间戳和分布式共识方面做得非常好(意味着网络中大多数节点同意某一信息是真实的–在比特币的情景下,此信息就是交易信息和交易发生的时间),你可以利用保存在交易中的信息的不可逆性,对某事进行永久的记录。 40字节不算多,但是限制往往刺激创造力。使用这一特性的有趣应用之一是存在证明(Proof Of Existence)。对于任何文件,存在证明服务都能为它创建一个哈希–一个独一无二的ID,而不是整个文件,然后将哈希嵌入到区块链中。以后,你可以使用此交易的时间戳和保存在其中的哈希,通过比较保存在区块链中的哈希和你手中文件的哈希,证明这一文件在那时候存在。如果两个哈希一致,那么你有证据表明在交易发生的时候,文件存在。 另一个更加以用户为中心的应用是Blocksign,是一种类似于Docusign或者Hellosign的数字签名服务,使用了同样的技术在区块链中保存签名文件。 这两个应用很有趣,但是相对而言,OP_RETURN交易的是不太重要的应用。可喜的是,所有领域的开发正在想更加聪明的办法,更好地利用这40字节。 比特币区块链的缺点 比特币生态系统的许多人已经担忧滥用OP_RETURN交易,在区块链上保存数据。主要的忧虑是不断增加的矿工费用、充斥无用信息的、不断膨胀的区块链和更长的交易确认时间。 你可以将信息保存到最小额的比特币交易中,但是你仍然需要向进行确认工作和将交易打包进区块链的矿工支付交易费用。现在最少的交易费用是0.0001BTC,或者大约0.04美元。这似乎不多,但是它将随着比特币价格的上涨而增加,做许多记录(例如每天5亿条微博)是非常昂贵的。一些人感觉创建这些目的是保存非交易信息的小额交易,对比特币网络造成了不必要的压力,使得区块链不断膨胀。最后,比特币需要10分钟才能确认交易和将交易记录到区块链中,这不能满足现在的应用对速度的要求。 这些都是合理的忧虑,解决这些问题的传统方式是,分叉和创建新的、确认速度更快、有额外存储空间的密码学货币和协议。然而,许多团队正在通过创建覆盖网络(Overlay Networks)和更加节俭地使用区块链,开发富有创意的方式。我相信这是正确的方法,历史上开发出了不同的协议,正如Chris Dixon最近发的微博: 许多人在花费力气对IP、TCP、HTTP、SMTP等协议进行分叉,但是最好是在现有的协议上建立应用。比特币也是如此。 --Chris Dixon(@cdixon) 覆盖网络(Overlay Networks) 覆盖网络是利用额外的功能–例如存储特定种类的数据或者文件–扩展(或者补足)比特币区块链的系统。它与区块链共同构成了分享数据层。 最初,开发分叉比特币协议,使得新的协议支持特定的特性,在自己的区块链上发行竞争币。然而,在比特币区块链上建立应用,有许多优势。通过在比特币上建立应用,你能够从比特币的流动性和网络效应–这些优势都是在独立的区块链上发起新的密码学货币所没有的–获得好处。 “覆盖网络”是一个广泛的术语。这些系统的大多数仍然正在不断出现,它们必然会有不同的架构。无论它们采取何种形式,它们的共同点是它们与比特币区块链的联系,并用此联系服务于它们的目标(例如通过使用比特币作为激励物,确认数据等),另外,它们像区块链一样,是去中心化的,能够被任何人使用。 在比特币网络上进行开发是开发你自己的货币(元币,metacoin)和协议的有效方式,不用创建自己的区块链。合约币(Counterparty)和万事达币(Mastercoin)就是两个现成的例子。合约币的协议文档详细解释了工作原理和它与比特币的联系。本质上,虽然合约币有自己的币(XCP),但是每一笔XCP交易都需要少量比特币交易支持。万事达币与合约币不完全一样,但是原理类似。 另一种方法是利用侧链。Blockstream公司开发这一技术。侧链的基本理念:在理论上,侧链允许开发者在自己的区块链上,创建自己的、具有特殊目的的密码学货币或者侧链,但是这些密码学货币不同于竞争币,它们可以在比特币区块链和自己的侧链之间自由地进行转移,从而从比特币的流动性中受益。 现在预测侧链是否能成功,还为时过早,但是Blockstream获得的2100万美元种子轮融资,使它非常有希望。如果你对学习侧链的更多知识感兴趣,侧链白皮书是个不错的选择,它对侧链系统提供了一个深入的技术性解释。 覆盖网络的最后一个例子是Factom,可以被用于实时编码和审计大量记录的“区块链数据层”。Factom是一个独立的网络,拥有自己的节点,使用分布式哈希表存储数据,这些数据定期地进行哈希和记录到比特币区块链中。这一方法的不同方面使得它对特定的应用非常有用,对其它应用没什么大用处,但这是你能建立的覆盖层的伟大例子。 现在有更多的新兴的覆盖层网络,我认为在未来我们将看到许多更加成熟的覆盖层网络(我非常想看到是一个去中心化的兼容MongoDB的数据库)。充裕的覆盖层供给–每一个提供一种服务–将使得开发者为他们的应用实现低成本、安全的去中心化架构。 个人数据所有权和安全 区块链栈背后的最重要的概念之一是,个人数据所有权和互联网应用中的用户模式反转。当我们写到上层栈时,我们将详细解释这个主题,但是我想简略地谈及如何将个人或者敏感数据存储在一个由数以百万计的未知的计算机维持的全球数据库中。 最简单的回答是加密。是的,存储在Dropbox中的信息可能被加密了,到那时Dropbox持有秘钥,可以接触到你的文件。如果Dropbox被黑客成功地攻击,你的数据也会很危险。 在这一栈情况下, 用户数据模型被反转了:不是由第三方持有你的数据和秘钥,而是网络持有你的数据,只有你持有秘钥。没有你的允许,没有人能够得到你的数据,你拥有完全的控制权。应用被简化为你的数据之上的瘦界面(thin interface),通过通用的协议,不同的应用能够互相交互。就像你可以用Gmail向Yahoo Mail发送邮件一样,你不需要使用与你朋友所用相同的应用,就可以阅读朋友的帖子。 有人辩解说,用户不想–或者不应该–拥有如此大控制权,但是我认为有一个我们应该思考的、更重要的问题。问题不是用户是否应该能拥有控制权,而是,如果他们想获得控制权时,能否获得控制权。大多数人将选择第三方作为自己私钥的保管人,正如Coinbase的用户。但是如果用户要求,Coinbase将退还私钥,从而用户可以转到另一服务商–或者自己保管钱包–你的账号余额将保持不变。 我迫不及待地希望这一模式扩展到比特币以外的领域,进入所有的互联网服务。 如果你喜欢本文,请在推特上关注我,当下一篇文章完成时,你就能够收到通知。下周,我将谈论分享协议层。 |