摘要:Balaji S. Srinivasan是Coinbase前首席技术官、安德森•霍洛维茨基金(AndreessenHorowitz)董事会合伙人、CoinDesk咨询委员会成员。本文最初发表在《共识》杂志上,并独家分发给CoinDesk 2019年共识活动的参与者。
Balaji S. Srinivasan:Coinbase前首席技术官、安德森•霍洛维茨基金(AndreessenHorowitz)董事会合伙人、CoinDesk咨询委员会成员。
以下文章最初发表在《共识》杂志上,并独家分发给CoinDesk 2019年共识活动的参与者。
有一种开发者声称,区块链只是糟糕的数据库。正如所述,为什么不直接在应用程序中使用PostgreSQL(一个功能强大的开源对象关系数据库管理系统)呢?
它成熟、健壮、高性能。与关系数据库相比,持怀疑态度的人声称区块链只是缓慢、笨拙且昂贵的数据库,无法扩展。
虽然已经有人对这一批评提出了一些反驳意见,但我想用一句话来反驳:公共区块链对于存储共享状态非常有用,特别是当共享状态代表用户希望导出/导入的有价值的数据(比如他们的钱)时。
(注:本文原名称为:“Yes, You May Need a Blockchain”。Balaji S. Srinivasan从数据库的角度出发,依据数据的导入/导出问题,将公链与传统的导入/导出机制作对比,旨在把公链从加密货币和金融机制中解放出来,呼吁将公链用来表示其他类型的数据,从而扩大公链的通用性)
数据导出/导入问题
看看Amazon Web Services、MicrosoftAzure或谷歌云的云图,都有用于负载平衡器、译码器、队列和lambda函数的图标。
Vpc(注:VirtualPrivate Cloud,是公有云上自定义的逻辑隔离网络空间)和各种类型的数据库都有图标,包括新推出的托管区块链服务(它与公共区块链不同,但在某些情况下可能有用)。
没有图标的是帐户之间的共享状态。也就是说,这些云图都隐式地假定一个实体及其用户(即访问云根帐户的实体)是布局体系结构图,并从它所支持的应用程序读取或写入应用程序的惟一实体。
更准确地说,这些图通常假定存在一个经济参与者,即支付云账单的实体。
但是,如果我们一次不只为1个而是为100个企业经济参与者进行可视化云图,就会出现一些直接的问题。这些行动者能相互作用吗?他们的用户能否将数据提取出来,并将其带入其他应用程序?考虑到用户本身就是经济参与者,如果这些数据代表了货币价值,那么用户能确信他们的数据在所有这些导出和导入过程中没有被修改吗?
当我们把从每个实体的应用程序中导出和导入数据作为一级需求时,就会出现这些类型的问题。而且(除了我们会讲到的例外情况),总的来说,今天这些问题的答案通常是否定的。
不同的应用程序通常没有可互操作的软件,或者允许用户以标准形式轻松导出/导入数据,或者让用户确信他们的数据,在所有导出和导入过程中没有被故意篡改或意外损坏。
原因归结起来就是激励。对于大多数主要的互联网服务来说,用户导出数据根本没有经济上的动机,更不用说让竞争对手快速导入数据了。虽然有些人将此称为数据可移植性问题,但让我们将其称为数据导出/导入问题,以便将注意力集中在导出和导入的特定机制上。
数据导出/导入问题的当前方法
尽管目前还没有为数据导出/导入问题的普遍解决办法提供财力支持,但已经为许多重要的特殊情况建立了机制。这些机制包括api、JSON/PDF/CSV导出、MBOX文件和SFTP(可以为传输文件提供一种安全的网络的加密方法)。
让我们依次通过这些来了解当前的情况。
Api:导出/导入数据的最流行的方法之一是通过应用程序编程接口(api)。有些业务确实允许您提取一些数据,或者允许您将数据写入帐户。但这是有代价的。
首先,它们的内部数据格式通常是专有的,不是行业标准。第二,有时api不是他们核心业务的核心,可以关闭。第三,有时api是他们核心业务的核心,价格可以大幅提高。一般来说,如果您正在读取或写入托管的API,那么您将受API提供者的支配。我们称这种平台风险为“平台风险”,随意去平台化已经损害了许多初创企业的利益。
JSON:另一个相关的解决方案是允许用户或脚本下载JSON文件,或将其读/写到前面提到的api。就其本身而言,这很好。但JSON是非常自由的形式,几乎可以描述任何东西。例如,Facebook的Graph API和LinkedIn的RESTAPI处理类似的事情,但是得到的却是非常不同的JSON结果。
PDF:另一个非常片面的解决方案是允许用户导出PDF。这适用于文档,因为PDF是一个开放的标准,其他应用程序(如Preview、AdobeAcrobat、谷歌Drive、Dropbox等)可以读取它。但PDF是一种最终产品,供人们阅读。除了PDF查看器之外,它不打算作为任何应用程序的输入。
CSV:逗号分隔值文件更接近于我们想要的数据导入/导出问题的通用解决方案。与专有API的后端不同,CSV是RFC 4180描述的标准格式。JSON几乎可以表示任何东西,而CSV通常只表示一个表格。与PDF不同,CSV通常可以由用户通过电子表格在本地编辑,或者用作本地或云应用程序的机器可读输入。
因为大多数类型的数据都可以在关系数据库中表示,而且关系数据库通常可以作为一组可能非常大的csr文件导出,所以它也非常通用。
然而,csv在一些方面处于劣势。
首先,与专有API不同,它们不托管。也就是说,没有一个标准的地方可以读取或写入表示(比方说)事务记录或映射元数据表的CSV。其次,csv不具有抗篡改能力。如果用户从服务a导出事务记录,对其进行修改,并将其重定向到服务B,那么第二个服务并不会更明智。第三,csv没有内置的完整性检查来防止意外错误。例如,CSV的列没有显式的类型信息,这意味着包含一年中的月份(从1-12)的列可以在导入时自动将其类型转换为简单整数,从而造成混淆。
MBOX:虽然不像CSV那么为人所知,但是表示电子邮件消息集合的MBOX格式最接近于为主要平台和独立应用程序之间的导入和导出构建的标准化数据结构。事实上,已经有论文提议在电子邮件之外的环境中使用MBOX。CSV表示表格数据,MBOX表示一种日志结构数据。
它本质上是一个巨大的纯文本文件,按时间顺序包含电子邮件消息,但也可以通过MIME表示图像/文件附件。与CSV一样,MBOX文件也是一个开放标准,可以导出、本地编辑和重新导入。和CSV一样,MBOX的缺点是没有规范的主机或内部数据完整性检查。
SFTP:还有一个数据导出/导入机制值得一提:安全文件传输协议(SFTP)。虽然很受尊敬,但这实际上是个人之间来回发送每笔付款的方式。从本质上讲,金融机构使用SFTP服务器以特殊格式的文件接收电子交易数据,并每天将其传输给美联储(fed),以实现每笔借贷的同步。
这些机制都得到了广泛的应用。但它们不足以支持在任意经济参与者之间(无论是企业实体、个人用户还是无头脚本)对有价值的数据进行防篡改的导入和导出。为此,我们需要公共区块链。
公共区块链通过激励互操作性来实现共享状态。公共区块链将许多类型的数据导入/导出问题转换为共享状态问题的一般类。它们这样做的部分原因是结合了上述机制的许多最佳特性。
1、公共区块链提供了与托管的公司API类似的读写访问的规范方法,但没有相同的平台风险。没有哪个单一的经济参与者能够像比特币或以太坊那样,关闭或拒绝为分散的公共区块链的客户提供服务。
2、它们还允许个人用户向本地计算机或JSON/CSV/MBOX之类的新应用程序导出关键数据(通过发送资金或导出私钥),同时提供数据完整性的加密保证。
3、它们为任意的经济参与者(无论是企业、个人用户还是程序)提供了无缝互操作的方法。每一个从公共区块链中读取数据的经济参与者都看到了相同的结果,任何一个有足够资金的经济参与者都可以以相同的方式向公共区块链写信。不需要设置帐户,也不能阻止任何参与者进行读/写访问。
4、或许最重要的是,公共区块链为互操作性和数据完整性提供了财务激励。
最后一点值得详细说明。像比特币或以太坊这样的公共区块链通常记录有货币价值的物品的转移。这个东西可以是链上固有的加密货币,链上发行的令牌,或者是另一种数字资产。
因为与公共区块链关联的数据代表了某种货币价值,所以它最终为互操作性提供了财务激励。毕竟,任何想要接收(比如说)比特币的网络或移动应用程序都必须遵守比特币区块链的约定。实际上,应用程序开发人员将别无选择,因为按照设计,比特币有一个单一的、规范的最长工作验证链,该链中的每个块都经过密码验证。
这就是导入的经济动机。
至于导出的动机,特别是涉及到钱的时候,用户要求能够完全忠实地、非常迅速地导出。这不是之前他们使用的PICS(协议实现一致性说明),他们可能会因为不便或技术问题而失去联系。
这是他们的钱,他们的比特币,他们的加密货币。任何持有它的应用程序都必须在想要提取它时将其导出,无论是支持发送功能、提供私钥备份,还是两者兼而有之。如果没有,那么申请一开始就不太可能收到存款。
这就是导出的经济动机。
因此,公共区块链在经济上鼓励与它交互的每个经济参与者使用与其他参与者相同的导入/导出格式,无论是公司、用户还是程序。换句话说,公共区块链是继开源之后的下一步,因为它们提供了开放数据。任何人都可以通过读取公共区块链来编写自己的block explorer代码,任何人都可以创建自己的钱包,使其能够写入公共区块链。
这是一个真正的突破。我们现在有了一种可靠的方法来鼓励使用共享状态,同时允许数百万个人和公司访问相同的数据存储,同时执行一个公共标准,并保持对数据完整性的高度信心。
这与现状非常不同。通常不会在互联网上向数据库共享根密码,因为允许任何人对其进行读写的数据库通常会受到破坏。公共区块链使用密码学而不是权限来解决这个问题,极大地增加了并发用户的数量。
的确,今天的公共区块链通常集中在货币和金融应用程序上,其中底层数据集表示一个仅追加的事务历史记录,其中包含不可变的记录。就处理数据导入/导出问题的所有不同版本而言,这确实限制了它们的通用性。
但是在公共区块链版本上,如开放街道地图、维基百科和Twitter,以及Filecoin/IPFS等系统,正在进行开发。这些不只是表示需要保持不变的金融交易记录,还可以表示其他类型的数据(如地图或百科全书条目),这些数据将定期更新。
如果做得对,这些基于区块链的新型公共系统可以让任何有足够资金和/或密码证书的经济参与者,不仅可以读写自己的记录,还可以编辑自己的记录,同时保持数据的完整性。有了这种功能,就没有理由不将SQL层放在公共区块链之上,以处理它提供的共享状态,就像老式的关系数据库一样。这导致了一种没有特权所有者的新型数据库,地球上所有70亿人(以及他们的脚本)都是经过授权的用户,任何有足够资金的实体都可以将其写入数据库。
那一天还没到。我们可以在多大程度上推动公共链的用例,还有待观察。规模扩张的挑战比比皆是。但希望的是,很明显,虽然公共区块链确实是一种新型数据库,但它们提供的内容与传统数据库截然不同。
作者:BalajiS. Srinivasan
编译:共享财经NEO 责任编辑:Alian
(本文系共享财经原创,转载请注明出处及作者)