在星际视界上篇文章FilecoinSpec系列(一)中笔者对于协议系统中涉及的重要概念、FilecoinVM等进行了深入研究。今天这篇文章星际视界将对FilecoinSpec系列中系统分解进行详细讲解阐述。
系统及运转
Filecoin将功能解耦并模块化为松散连接systems。每个系统都添加了重要的功能,通常可以实现一系列重要且紧密相关的目标。
例如,区块链系统提供了诸如区块,Tipset和链式的结构,并提供了区块同步,区块传播,区块验证,链的选择和链的访问之类的功能。这与文件,片段和数据传输分开,这两个系统都与市场隔离。市场提供订单,交易,市场可见性和交易结算。
系统解耦起作用的方向
执行的界限:可以构建仅执行系统子集的Filecoin实现。这对于实现多样性尤其有用:我们需要安全性关键系统的许多实现,但不需要可以解耦的系统的许多实现。
运行时解耦:系统解耦使构建和运行将系统隔离到单独程序甚至单独物理计算机中的Filecoin节点变得更加容易。
安全隔离:某些系统比其他系统需要更高的操作安全性。系统解耦使实现能够满足其安全性和功能性需求。一个很好的例子是将区块链处理与数据传输分开。
可伸缩性:系统和各种用例可能会为不同的操作员带来不同的性能要求。系统解耦使运营商更容易沿着系统边界扩展其部署。
Filecoin节点不需要全部的系统
Filecoin节点差异很大,不需要系统的全部;大多数系统仅在部分用例中才需要。星际视界在这里举个例子:需要区块链系统来同步链,参与安全共识,存储挖矿和链的验证。许多Filecoin节点不需要链,只需从其信任的节点中从最新的状态树中获取内容即可执行其工作。
最好根据节点的功能来定义节点,因此也要根据它们所运行的系统来定义节点。例如:
1、链的验证器节点:运行区块链系统,可以同步和验证链,无法挖矿或打包区块。
2、客户端节点:运行区块链,市场和数据传输系统;可以同步和验证链,无法挖矿或打包区块。
3、检索矿工节点:不需要链,运行检索市场和数据传输系统。可以进行检索交易,可以发送客户数据,并为其付款。
4、存储矿工节点:运行区块链,存储市场,存储挖掘系统;可以同步和验证链。可以进行存储交易,可以将存储的数据密封到扇区中;可以获得存储共识能力。可以开采和生产块。
分离的系统
如何确定一个系统与另一个系统的功能?
在系统之间划定界限是将紧密相关的功能与无关部分分开的艺术。从某种意义上说,我们寻求在同一系统中保持紧密集成的组件,而远离其他不相关的组件。这有时是很直接的,边界自然来自于数据结构或功能。
例如,很明显客户端和矿工之间的交易谈判与VM的执行无关。
有时这更难,并且需要整理,添加或删除抽象。例如,StoragePowerActor和以前StorageMarketActor是单个Actor。这导致了整个StorageDeal生产StorageMarket市场-存储市场-部门密封-PoSt生成等功能之间的产生巨大耦合。纠结这两组相关功能需要将一个参与者分成两个。
在系统内分解
系统分解为较小的子单元有时称为“子系统”,以避免与更大的一流系统混淆。子系统本身可能会进一步崩溃。此处的命名未严格执行,因为这些细分与协议和实现工程方面的问题相比,与用户功能的关系更大。
实施系统1.系统要求
为了更容易将功能解耦到系统中,Filecoin协议假定有一组对所有系统可用的功能。该功能可以通过多种实现方式实现,星际视界温馨提示以下仅作为指导建议。
1、本地的IpldStore——数据结构的一定数量的持久本地存储。系统期望使用IpldStore进行初始化,在该系统中存储期望在崩溃后持久存在的数据结构。
2、用户配置值——少量用户可编辑的配置值,这些应该使最终用户易于访问,查看和编辑。
3、本地安全KeyStore——用于生成和使用加密密钥的工具,必须对Filecoin节点保密。系统不应直接访问密钥,而应通过KeyStore提供加密、解密、签名、SigVerify等功能进行访问。
4、本地的FileStore——某些文件的持久本地存储,系统期望使用存储大文件的FileStore进行初始化。
例如:Markets系统可能需要存储和删除大量较小的文件。而存储挖矿系统可能需要存储和删除大量的大文件。
1、网络——大多数系统需要访问网络,才能连接到其他Filecoin节点中的对应系统,系统期望使用可libp2p.Node在其上安装自己的协议的进行初始化。
2、时钟——有些系统需要访问当前的网络时间,而有些系统的漂移容差较低。系统期望使用一个时钟来初始化,以从中得知网络时间。一些系统需要很少的时钟漂移,并且需要安全的时间。
为此,我们使用FilecoinNode数据结构,该数据结构在初始化时传递到所有系统中。
2.系统局限性
另外,系统必须遵守以下限制:
1、随机故障——Filecoin节点可能随时故障。系统必须是安全且一致的。这主要是通过限制持久状态的使用,通过IpLd数据结构持久化这种状态以及通过使用检查状态以及可能纠正错误的初始化例程来实现的。
2、隔离——系统必须通过定义明确的隔离接口进行通信。不得在共享内存空间上构建关键功能。,它还显着简化了协议,并使其更易于理解-分析-调试和更改。
3、无法直接访问主机操作系统文件系统或磁盘——系统无法直接访问磁盘,而是通过FileStore和IpldStore来进行。这将为最终用户提供高度的可移植性和灵活性,这需要能够轻松替换其Filecoin节点访问本地存储的方式。
4、不能直接访问主机OS网络堆栈或TCP/IP系统无法直接访问网络——它们通过libp2p库进行访问。不得有任何其他类型的网络访问,这提供了跨平台和网络协议的高度可移植性,使Filecoin节点可以使用各种协议在多种设置下运行。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。