1. IPFS点滴资讯首页
  2. 观点碰撞

区块链基础设施景观:第一原则框架

表现存储,计算和通信

以太坊,IPFS / Filecoin和BigchainDB如何互补?Golem,Polkadot或Interledger怎么样?我经常会遇到这样的问题。所以,我决定写一下如何通过第一原则框架回答这些问题。

快速回答:没有一个神奇的系统称为“区块链”,神奇地做了一切。相反,有很好的计算构建块可以一起使用来创建有效的分散应用程序。以太坊可以发挥作用,BigchainDB可以发挥作用,还有更多。让我们来探索……

背景

计算的要素是存储,计算和通信。大型机,PC,移动设备和云都以自己独特的方式展示这些元素。出现专门的构建块以协调给定元素内的权衡。

例如,在存储元素中,我们有文件系统和数据库,其中文件系统用于存储具有目录和文件层次结构的mp3的blob,而数据库用于存储带有SQL [1]等查询接口的结构化元数据。在集中式云中,我们可能会使用Amazon S3进行blob存储,使用MongoDB Atlas进行数据库处理,使用Amazon EC2进行处理。

本文重点介绍区块链格局:每个计算元素的块,以及显示每个块的系统的一些示例。对于每个区块,我将重点关注彻底的说明。

区块链积木

以下是计算的每个元素,以及相关的分散构建块:

  • 存储:令牌存储,数据库,文件系统/ blob
  • 处理:有状态业务逻辑,无状态业务逻辑,高性能计算
  • 通信:连接数据,有价值和国家的网络

区块链基础设施景观

区块链技术在每个区块中都有体现,如图所示[2]:

区块链基础设施景观:第一原则框架

存储

存储的基本计算元素具有以下构建块。

令牌存储。代币是有价值的商店(例如资产,证券),无论是比特币,航空里程还是数字艺术版权。令牌存储系统上的主要操作是发布和转移令牌(具有许多变体),同时防止双倍花费等。

比特币Zcash是两个着名的“纯粹游戏”系统,专注于令牌。以太坊碰巧使用令牌服务于其作为世界计算机的使命。这些都是作为运行网络基础设施的内部激励而给出的令牌的例子。

其他令牌不是网络内部为网络本身供电,而是用于较低级别基础设施实际存储令牌的较高级别网络中的激励。一个例子是在以太坊主网上运行的像Golem(GNT)这样的ERC20令牌。另一个例子是Envoke的 IP许可令牌,在IPDB网络上运行。

最后,我列出了一个“ 。* ”来说明大多数区块链系统都有一个令牌存储机制。

数据库。数据库专门用于存储结构化元数据,例如表格(关​​系数据库),文档存储(例如JSON),键值存储,时间序列或图形; 然后通过查询(例如SQL)快速检索该数据。

MongoDBCassandra这样的传统分布式(但集中式)数据库通常可以存储数百TB甚至数PB的数据,吞吐量可以超过每秒100万次写入,就像这里一样。

SQL这样的查询语言是深刻的,因为它们将实现与规范分开,因此不受任何特定应用程序的约束。几十年来,SQL一直是标准。这就是为什么相同的数据库系统可以用于许多不同的行业。

换句话说:在没有任何特定于应用程序的代码的情况下,将Bitcoin推广到更多应用程序,您不需要一直到Turing完整性。你只需要一个数据库。这在简单性和规模上具有相应的益处。在某些地方仍然有很大的理由让图灵完整; 我们在“分散处理”部分进一步讨论这个问题。

BigchainDB是分散的数据库软件; 特别是文件商店。在MongoDB(或RethinkDB)上构建,它继承了Mongo的查询和扩展。但它也具有区块链特性,如分散控制,防篡改和令牌支持。IPDBBigchainDB的公共网络实例,具有治理功能。

同样在区块链空间中,如果我们稍微眯一眼,我们可以将IOTA视为时间序列数据库。

文件系统/数据blob存储。这些系统用于存储大型文件(电影,mp3,大型数据集),以目录和文件的层次结构进行组织。

IPFSTahoe-LAFS是分散式文件系统,包含分散式或集中式blob存储。FileCoinStorjSiaTieron进行分散的blob存储。好旧的BitTorrent也是如此,尽管它使用针锋相对的方案而不是令牌。Ethereum SwarmDatSwarm-JS基本上都做了。

数据市场。这些系统将数据所有者(例如企业)与数据消费者(例如AI初创公司)连接起来。虽然它们比数据库和文件系统更高级,但它们仍然是核心基础架构,因为无数需要数据的应用程序(例如任何AI)将依赖于此类服务。Ocean是一个示例协议和网络,可以在其上构建数据市场。还有特定于应用程序的市场:用于加密市场的Enigma Catalyst,用于个人数据的Datum; 和物联网流的DataBroker DAO [2]。

处理

我们来讨论处理的基本计算要素。

“智能合约”系统是以分散方式进行处理的系统的流行标签[3]。这实际上有两个具有非常不同属性的子集:无状态(组合)业务逻辑有状态(顺序)业务逻辑。无状态与有状态在复杂性,可验证性等方面存在根本差异。还有第三个分散处理构建块:高性能计算(HPC)

无国籍(组合)业务逻辑。这是任何不在内部保留状态的任意逻辑。在电气工程方面,它可以被构造为组合数字逻辑电路。逻辑表示为真值表,示意图或保存条件语句的代码(组合if / then,和,或不)。因为它们没有状态,所以很容易验证大型无状态智能合约,从而构建大型验证/安全系统。N个输入和一个输出需要O(2 ^ N)个计算来验证。

所述Interledger协议(ILP)包含加密条件(CC)协议干净指定组合电路。CC很容易知道,因为它正在通过IETF成为互联网标准,并且因为ILP在集中式和分散式支付网络(例如,通过Ripple的> 75家银行)中得到广泛采用。CC具有JavaScriptPythonJava等独立实现。BigchainDB,Ripple和其他系统使用CC; 因此支持组合业务逻辑/智能合约。

Bitshares和Eos也支持无状态业务逻辑。

由于有状态逻辑是无状态逻辑的超集,因此支持有状态逻辑的系统也支持无状态逻辑(以额外的复杂性和可验证性挑战为代价)。

BigchainDB,Bitshares和Eos也支持事件(例子)。这提供了一定程度的持久性,使功能更接近有状态业务逻辑(感谢Ian Grigg指出这一点[2])。

有状态(顺序)业务逻辑。这是任何内部保留状态的任意逻辑。也就是说,它有记忆。或者,它是具有至少一个反馈回路(和时钟)的组合逻辑电路。例如,微处理器具有内部寄存器,该寄存器根据发送给它的机器代码指令进行更新。更一般地说,有状态业务逻辑是图灵机,它接收一系列输入,并返回一系列输出。显示(实际近似)的系统称为图灵完备系统[4]。

以太坊是最着名的区块链系统,它体现了直接在链上运行的有状态业务逻辑/智能合约。LiskRChainDFINITYAeternityTezosFabricSawtooth等等也实现了它。运行“就在那里,某个地方”的代码是一个强大的概念,有许多用例。这有助于解释为什么以太坊起飞,为什么它的生态系统已经发展成为它本身几乎是一个平台,以及为什么在这个组成部分中出现了如此多的竞争。

由于顺序逻辑是组合逻辑的超集,因此这些系统也支持组合逻辑。

如DAO黑客所示,代码中的小错误可能会产生严重后果。正式验证可以提供帮助,就像它有助于芯片行业一样。以太坊基金会正在研究这个问题。但它有规模限制。对于组合电路,可能的映射数是2 ^(输入数)。对于顺序,如果内部变量都是布尔值,则内部状态的数量为2 ^(内部状态变量的数量)。例如,如果你有一个3输入组合电路,它将有’= 8种可能的状态来验证。但如果它是带有32位寄存器的时序电路,那么要完全验证你必须检查“32 = 42亿个状态”。这限制了时序电路的复杂性(如果您想要信任它们)。“正确构建”是信任有状态智能合约的另一种方法,例如Rchain确实使用了rho微积分。

如果你想要分散处理,对于许多用例,有一种更简单的方法: 只需在浏览器或移动设备的客户端进行处理,运行JavaScript或Swift。在这里,您必须相信您的客户端正在进行的处理,但如果您手中的设备上有这种处理,则通常可以接受。我们认为这是“ 肥胖客户 ”替代“ 脂肪协议 ”框架。这种架构对主流Web开发人员来说很容易。例如,许多webapps需要的是应用程序状态。要构建它,你只需要JS + IPDB(使用js-bigchaindb-driver)。或者,如果您的应用还需要blob存储和支付,那么请包含IPFS的JS客户端版本(ipfs.js)和以太坊(web3.js)。这是一个例子:

区块链基础设施景观:第一原则框架

高性能计算(HPC)。这是为渲染,机器学习,电路模拟,天气预报,蛋白质折叠等事情进行“繁重”计算的处理。此处的计算作业可能需要数小时甚至数周才能在一组计算机(CPU,GPU,甚至TPU)上运行。

我看到了分散式HPC的这些方法:

  • GolemiEx.ec将它构建为分散式超级计算机和相关应用程序的组合。
  • Nyriad将其构建为存储处理。基本上,处理位于分散存储(Nyriad也有解决方案)的旁边。
  • TrueBit允许第三方计算,但随后进行后计算检查(在可能的情况下隐式检查;明确检查是否引发问题)。
  • 有些人只是在VM或Docker容器上运行繁重的计算,并将结果(最终VM状态或仅计算结果)放入具有受限访问的blob存储中。然后,他们使用例如标记化的读取权限来销售对这些容器的访问。这种方法要求更多的客户验证结果,但好处是今天所有这些技术都是可行的。随着TrueBit的成熟,这自然会与TrueBit结合。

通讯

在这里,我们将介绍通信的第三个也是最后一个基本计算要素框架通信的方法有很多种; 我将专注于连接网络。它有三个级别:数据状态

数据。在60年代,我们得到了ARPAnet。它的成功催生了几个类似的网络,如NPLCYCLADES。出现了一个新问题:他们没有互相交谈。Cerf和Kahn 在70年代发明了TCP / IP来连接它们,以创建一个网络网络,我们现在称之为互联网。TCP / IP现在是连接网络的事实上的标准。OSI是一套相互竞争的协议,但它已经褪色了; 但具有讽刺意味的是,它的模型证明是有用的。因此,尽管存在时代,TCP / IP仍然是一个分散的构建块,用于连接数据网络。

Tor Project可以被视为TCP / IP覆盖,以帮助保护用户的隐私。然而,它有集中点,更不用说国防部的资金引起了人们的注意。Tokenized Tor类项目正在兴起; 敬请关注[2]。

值。TCP / IP仅连接数据上的网络水平。您可以重复使用数据包 – 一次将相同的数据包发送到多个目的地 – 而且无关紧要。但是如何连接可以通过网络发送价值的网络呢?例如,从比特币到以太坊,甚至SWIFT支付网络都说Ripple的XRP网络。您只希望令牌能够一次转到一个目的地。在防止双重花费的同时连接网络的一种方法是使用交换。但这传统上非常沉重。但是,您可以通过使用加密托管来剥离交换的本质并消除对可信中间人的需求。爱丽丝可以通过Mallory将钱汇给Bob,Mallory在那里传递资金但不能花钱(而且还有超时,因此Mallory不能永远拖延)。这是背后的精髓Interledger Protocol(ILP)。它与双向钉(思考侧链)和状态通道(想想LightningRaiden)的概念观念相同; 但重点是关于价值的连接网络的100%。除了ILP之外,还有Cosmos,它增加了更多的复杂性以获得更多便利。

州。我们能超越连接有价值的网络吗?想象一下,计算机病毒有自己的比特币钱包,可以从一个网络跳到另一个网络。或者以太坊主网中的智能合约可以将其状态转移到另一个以太网或其他兼容网络?或者,为什么将AI DAO限制在一个网络?

这是Polkadot进来的地方,用于连接国家网络。Aeternity也适用于价值网络和国家网络频谱之间。

例子

我们现在回顾了计算(存储,处理,通信)的三个要素,每个要素的分散构建块以及每个构建块中的示例项目。

人们开始构建表现出组合的系统。一次有两个块的许多组合,通常是IPFS +以太坊或IPFS + IPDB。但是甚至有人使用三个或更多块。以下是一些前沿示例:

  • Ujo使用 IPFS | Swarm + IPDB + Ethereum来分散音乐,就像这里设想的那样。IPFS或Swarm用于文件系统和blob存储。IPDB(使用BigchainDB)用于元数据存储和查询。以太坊用于令牌存储和有状态业务逻辑。
  • Innogy将 IPFS + IPDB + IOTA用于供应链/物联网应用。IPFS用于文件系统和blob存储。IPDB(使用BigchainDB)用于元数据存储和查询。IOTA用于时间序列数据。

相关工作

以下是区块链社区中其他人的相关框架; 所有我都很高兴与他们进行了很好的交谈。

Joel Monegro的“ Fat Protocols ”框架强调每个构建块作为协议。我认为这是一种很酷的框架方式,但它限制了构建块通过网络协议相互通信。还有另外一种方法:块可以只是一个“导入”语句或库调用 

使用导入的原因可能是(a)延迟较低:网络呼叫需要时间,可能会损害或破坏可用性; (b)简单:使用库(甚至嵌入代码)通常比在网络上连接,支付令牌等更简单; (c)更成熟:协议栈现在刚刚出现。我们拥有可以追溯到几十年的令人敬畏的Unix库,甚至Python和JS块可以追溯到15年以上。

Fred Ehrsam的“ Dapp Developer Stack ”强调网络商业模式。虽然它也非常有用,但它并不旨在对给定计算元素(例如文件系统与数据库)的块之间进行细粒度区分。

BigchainDB白皮书 (2016年2月首次发布)图1给出这个帖子堆的早期版本。为方便起见,这里是:

区块链基础设施景观:第一原则框架

它侧重于处理,文件系统和数据库的构建块。它没有从“计算要素”的角度构建,也没有区分分散处理的类型。我在这篇文章中所写的是过去一年半以来我对该论文的思考演变; 随着我在5月22 日的2017年共识会上的演讲不断更新,这与本文非常相似。(我写这篇文章的部分原因是我收到了许多要求写下来的请求:)

图像还强调了从完全集中(左)到完全分散(右)的频谱。这有助于更新现有的软件系统,使其随着时间的推移更加分散,专注于更新分散有助于最大化的块。

Stephan Tual的“ Web 3.0 Revisited ”堆栈在精神上类似于这篇文章,但更重视以太坊。它通过尝试制作将许多项目组合成类似构建块的地图,为社区提供了良好的服务。这个想法与我自己的想法有多么相似,我感到非常高兴。然而,它为服务应用程序提供的块层(用于消息传递,存储,共识,治理等的块)实际上混合了三个东西:应用程序,“什么”和“如何”。对我而言,块应该是“什么”。因此,消息传递是一个应用程序(应该在应用程序级别); 存储需要更细粒度; 共识是“如何”的一部分(隐藏在某些块中); 治理也是“如何”(因此也隐藏)的一部分。它还将[网络]协议作为一个单独的低级块,但我认为这些块是块可以相互通信的可能方式之一,与图书馆电话一起。尽管如此,我认为这是一篇优秀的文章和堆栈:)

亚历山大·鲁珀特的 “映射分散世界”有大约20个组织,x轴给出了从基础设施层到应用层的四个更高级别的分组,但中间件和流动性作为中间层。这也很棒; 我很高兴能帮助Alex解决这个问题。它不太重视核心基础设施,而是更多地关注更广泛的趋势; 而这篇文章完全是关于来自第一原则框架的核心基础设施。

未来

像Ujo这样的系统将许多块组合在一起,例如IPFS或Swarm(用于blob)+以太坊(用于令牌和业务逻辑)+ IPDB和BigchainDB(用于具有快速查询的数据库),因此利用所有这些系统的优点。

我希望随着人们更好地理解构建模块的相关性,这种趋势会加速。它还比将所有内容整合成一个名为“区块链”的巨石更具生产力。

随着分散化生态系统的发展,我预计这个堆栈会不断发展。AWS最初只是一项服务:S3用于blob存储。然后它得到了处理:EC2。它继续前进; 这是完整的时间表。AWS现在拥有50多个区块; 当然,少数仍然是最重要的。以下是所有AWS服务的图片。

区块链基础设施景观:第一原则框架
截图aws.amazon.com的服务2017年7月15日。

我想象在权力下放领域发生了类似的事情。作为第一个切入点,可以想象每个AWS块的分散版本。但是,会有差异,因为每个生态系统(云与移动与分散)都有自己的特殊块,例如用于分散的令牌存储。这将是一个有趣的旅程!

笔记

[1]您实际上可以将更多层次结构放入这些构建块中。例如,数据库位于文件系统之上,文件系统位于原始数据(blob)存储上。分布式数据库涉及通信。例如,大多数现代数据库通过Ext4,XFS或GridFS等文件系统与底层存储进行通信。我在本文中给出的框架是应用程序程序员的框架:文件系统的用户体验是什么,数据库的用户体验等等。

[2]我在2017年9月在这里添加了一些新内容。

[3]我从未真正喜欢“智能合约”这个标签。他们在任何AI-ish意义上都不是很聪明。而且他们通常与任何法律意义上的“契约”无关。如果他们确实包括法律,他们通常会这样说,例如与李嘉图的合同。标签“分散处理”及其内部的“分散式业务逻辑”更有意义。然而,鉴于“智能合约”现在已广泛使用,所以就这样吧。我有更好的事情要关注,而不是争夺标签:)

[4]我在实际意义上说“图灵完成”,而不是理论上的纯粹意义。也就是说:机器返回一串输出位作为输入位及其当前内部状态的函数; 但实际上是没有无限长时间运行或声称要解决“机器何时停止”问题(暂停问题)。

感谢无数人在过去的几年中给了我这个堆栈的反馈。感谢Carly Sheridan,Troy McConaghy和Dimi de Jonghe的编辑。最后,感谢空间中的每个人继续改进构建块并构建更有趣的应用程序:)

点对点科技简介

点对点科技深耘IPFS与Filecoin技术,坚持区块链技术改变未来的信念。点对点 IPFS 数据中心是目前国内技术领先,性价比高、保障优的投资标的。自建杭州数据中心,合作数据中心分布于上海、宁波、河北、香港、斯德哥尔摩(瑞典)等地。点对点数据中心具有优秀的硬件配置与目前国内优质的网络节点资源。点对点科技力求将IPFS爱好者升级为IPFS领军者与受益者,让IPFS颠覆传统互联网,共同开启 WEB 3.0时代。

想了解更多区块链知识吗?关注我吧!

Filecoin测试网二阶段昨日重启,点对点出块第一! | 点滴资讯

原创文章,作者:Running,如若转载,请注明出处:https://ipfsdrop.com/view/%e5%8c%ba%e5%9d%97%e9%93%be%e5%9f%ba%e7%a1%80%e8%ae%be%e6%96%bd%e6%99%af%e8%a7%82%ef%bc%9a%e7%ac%ac%e4%b8%80%e5%8e%9f%e5%88%99%e6%a1%86%e6%9e%b6/

发表评论

电子邮件地址不会被公开。 必填项已用*标注