您的位置: 首页 > 星驰资讯 > 挖矿课堂

Filecoin设计规范—【1】概述(下)

2020-03-30 15:34:46  阅读:人  来自:挖矿课堂

  星际联盟提供对Filecoin Spec 的全文翻译,便于Filecoin项目广大中国参与者理解Filecoin的深层原理。文章将定期更新章节,请持续关注"IPFS星际联盟"&"星际联盟Filecoin"公众号。

1.5 更改日志 - 版本历史

  1.5.1 v1.1 - 2019-10-30 - c3f6a6dd -

  链上交易

  存储交易

  完整的存储市场Actor逻辑:

      客户和矿工的收支:押金,锁定,费用和取款

      质押削减

  完整的StorageMinerActor逻辑:

      sector状态,状态转换,状态核算,算力核算

      故障声明 + 修复Sectors流程

      提交扇区流程

      提交选举或SubmitSurprisePoSt流

      扇区验证,故障,恢复和到期

  OnMissedSurprisePost流

      故障扇区,掉电,到期等等

  StoragePowerActor

      算力核算基于StoragePowerActor状态的更改

      抵押品:存款,锁定,提款

      削减质押

  Interactive-Post

      StorageMinerActor: 预提交扇区 和 提交扇区

  Surprise-Post

      挑战流程为 CronActor -> StoragePowerActor -> StorageMiner -

  虚拟机

      从区块链中提取VM系统

      地址

      Actors

          代码和状态的分离

  消息

      方法调用表示

  运行时间

      缩小的界面

      安全状态获取,释放,提交流程

      退出码 - 完整的调用流程

      更安全的递归上下文构造

      错误级别和处理

      检测和处理gas错误

  解释程序

      申请消息

      {扣除,存款} -> 转移 - 更安全

      gas核算

  VM系统参与者

      InitActor基本流程,插入运行时

      CronActor全流程,静态注册表

      AccountActor基本流程

  数据传输

      完整的数据传输流程

          push, pull, 1-RTT pull

          协议,数据结构,接口

          图表

  区块链/链同步

      链同步协议描述的第一个版本

      包括协议状态机描述

      网络引导程序–连接性和状态

      渐进区块验证 - 渐进区块传播

  其他

      细则部分状态指示灯

      变更日志

  1.5.2 v1.0 - 2019-10-07 - 583b1d06

  全面细则重组

  工具

      添加了构建系统以编译工具

      添加了绘图工具(dot, mermaid等)

      添加了附属图安装

      添加了Orient以计算协议参数

  内容

      filecoin节点

      类型 - 不同FileCoin节点类型的概述

      存储库 - 本地数据结构存储

      网络接口 - 连接到libp2p

      时钟 - 挂钟

      文件和数据

      file - 数据的基本表示

      piece - 表示存储在filecoin中的数据

      区块链

      blocks - 基本的区块链数据结构(blocks, tipset, chain等)

      存储算力共识 - SPC的基本算法和加密工件

      StoragePowerActor 基础

      代币

      骨架部分

      存储挖矿

      存储矿工:控制和协调存储挖矿的模块

      扇区:存储单位,密封,加密工件等

      扇区索引:描述扇区数量和元数据

      储存证明:印章,posts等

  市场

      交易:存储市场交易基础

      存储市场:StorageMarketActor基础

      Orient

      确定模型和区块大小的orient模型

      图书馆

      filcrypto-密封,PoRep,PoSt算法

      ipld - cids, ipldstores

      libp2p - 主机/节点表示

      ipfs - graphsync 和 bitswap - 多种格式

      multihash,multiaddr

  图表

  系统总览

  完整的协议美人鱼流

  1.5.3 pre v1.0

  文件共享协议的扩展写入 - 可见 详情

  查看所有更改日志:github.com/filecoin-pr…

1.6 系统分解

  1.6.1 什么是系统? 它们如何工作?

  Filecoin将其功能解构并模块化为松散连接的系统。每个查看重要的功能,通常用来实现一系列重要且紧密相关的目标。

  例如,区块链系统提供了诸如区块,区块集合、链之类的结构,并提供了诸如区块同步,区块广播,区块验证,链选择和链访问之类的功能。 这与文件,片段,片段准备和数据传输分开。 这些系统都是与市场分开,提供订单,交易,市场可见性和交易结算。

  1.6.1.1 为什么系统解耦是有用的?

  这种解耦对于以下方面很有用:

  实现边界:可以只用一部分子系统来构建实现Filecoin。这对于实现多样性特别有用:我们需要安全性关键系统(例如,区块链)的许多实现,但不需要可以解构的系统的许多实现。

  运行解耦:系统耦使后,构建和运行将系统隔离到单独程序甚至单独物理计算机中的Filecoin节点变得更加容易。

  安全隔离:一些系统比其他系统需要更高的操作安全性。系统解耦使实现能够满足其安全性和功能性需求。一个很好的例子是将区块链处理与数据传输分开。

  可伸缩性:系统和各种用例可能会为不同的操作者带来不同的性能要求。系统解耦使得操作者更容易根据系统边界来衡量他们的部署。

  1.6.1.2 Filecoin节点不需要所有系统

  Filecoin节点差异很大,并且不需要所有系统。大多数系统仅在部分用例中才需要。

  例如,需要区块链系统来同步链,参与安全共识,存储挖掘和链验证。 许多Filecoin节点不需要链,只需从其信任的节点中从最新StateTree中获取内容即可执行其工作。 当然,这样的节点:

  注意:Filecoin不使用在比特币和其他区块链网络中广泛使用的“完整节点”或“轻客户端”术语。 在Filecoin中,这些术语定义不明确。 最好根据节点的功能来定义节点,因此也要根据它们所运行的系统来定义节点。 例如:

  链验证节点:运行区块链系统。可以同步和验证链;无法挖掘或生产区块。

  客户端节点:运行区块链。市场和数据传输系统;可以同步和验证链;无法挖掘或生产区块。

  检索矿工节点:运行市场和数据传输系统;不需要链; 可以进行检索交易(检索提供方);可以发送客户端的数据并得到报酬。

  存储矿工节点:运行区块链,存储市场,存储挖掘系统。 可以同步和验证链。 可以进行存储交易(存储提供方)。 可以将存储的数据密封到扇区中。 可以获得存储共识算力。 能够挖掘和生产区块。

  1.6.1.3 分离系统

  我们如何确定一个功能是属于哪个子系统?

  在系统之间划定界限是将紧密相关的功能与无关部分分开的艺术。 从某种意义上说,我们试图将紧密集成的组件保持在同一系统中,并远离其他无关的组件。 有时这很简单,界限来自数据的结构或功能。 例如,我们可以很容易观察到,客户和矿工彼此协商交易与虚拟机执行无关。

  有时这很难,并且需要整理,添加或删除抽象概念。 例如,StoragePowerActor和StorageMarketActor以前是单个Actor。 这导致整个StorageDeal制造,StorageMarket,整个市场与存储采矿,扇区密封,PoSt生成等之间的功能耦合。 理顺这两组相关功能需要将一个参与者分成两个。

  1.6.1.4 在系统内分解

  系统本身分解为较小的子单元。 这些有时称为“子系统”,以避免与更大的一流系统混淆。 子系统本身可以进一步分解。 此处的命名没有严格执行,这些细分与协议和实现工程方面的问题更多地相关,而不是与用户功能有关。

  1.6.2 实施系统

  1.6.2.1 系统要求

  为了使将功能与系统解耦更加容易,Filecoin协议假定了一组可用于所有系统的功能。此功能可以通过实现以多种方式来实现,并应将此处的指南作为建议(应当)。

  所有的系统,如本文档中定义,要求如下:

  资料库

  本地IpldStore。用于数据结构(小型结构化对象)的一定数量的持久本地存储。系统期望使用IpldStore进行初始化,其中的存储数据结构在崩溃中也会持续存在。

  用户配置值。少量用户可编辑的配置值。这些应该使终端用户易于访问,查看和编辑。

  本地安全密钥库。用于生成和使用加密密钥的工具,必须对Filecoin节点保密。 系统不能直接访问密钥,必须通过抽象(即KeyStore)来实现,该抽象提供了加密,解密,签名,签名验证等功能。

  本地文件存储。某些文件的持久的本地存储(大字节数组)。 系统期望使用能存储大文件的FileStore进行初始化。某些系统(例如Markets)可能需要存储和删除大量较小的文件(1MB-10GB)。其他系统(如存储挖矿)可能需要存储和删除大量的大型文件(1GB - 1TB)。

  网络。大多数系统需要访问网络,才能连接到他们对应的Filecoin节点。 系统会使用libp2p.Node进行初始化,并可以在其上安装自己的协议。

  时钟。有些系统需要访问当前的网络时间,而有些系统对浮动的容差较低。系统初始化会使用一个时钟来得知网络时间。一些系统(如区块链)需要很少的时钟浮动,并且需要安全的时间。 为此,我们使用FilecoinNode数据结构,该数据结构会在初始化时传递给所有系统:

 import repo "github.com/filecoin-project/specs/systems/filecoin_nodes/repository" 
import filestore "github.com/filecoin-project/specs/systems/filecoin_files/file" 
import clock "github.com/filecoin-project/specs/systems/filecoin_nodes/clock" 
import libp2p "github.com/filecoin-project/specs/libraries/libp2p" 
import message_pool "github.com/filecoin-project/specs/systems/filecoin_blockchain/message_pool" 
type FilecoinNode struct { 
    Node        libp2p.Node 
    Repository  repo.Repository 
    FileStore   filestore.FileStore 
    Clock       clock.UTCClock 
    
    MessagePool message_pool.MessagePoolSubsystem 

import ipld "github.com/filecoin-project/specs/libraries/ipld" 
import key_store "github.com/filecoin-project/specs/systems/filecoin_nodes/repository/key_store" import config "github.com/filecoin-project/specs/systems/filecoin_nodes/repository/config" 
type Repository struct { 
   Config     config.Config 
   KeyStore   key_store.KeyStore 
   ChainStore ipld.GraphStore 
   StateStore ipld.GraphStore 

  1.6.2.2 系统限制

  此外,系统必须遵守以下限制:

  随机崩溃。一个Filecoin节点可能随时崩溃。 当崩溃时,系统必须是安全且一致的。这主要是通过限制持久状态的使用,通过Ipld数据结构持久化这种状态,以及通过使用检查状态的初始化例程,以及纠正可能错误来实现的。

  隔离。系统必须通过定义明确的独立接口进行通信。 他们不得在共享内存空间上构建关键功能。(注意:为了提高性能,共享内存抽象化可用于为IpldStore,FileStore和libp2p提供算力,但是系统本身不应该需要它)。这不仅仅是操作上的问题;它还显着的简化了协议,并使之更易于理解,分析,调试和更改。

  无直接访问主机操作文件系统或磁盘。系统无法直接访问磁盘,而是通过FileStore和IpldStore抽象来进行。这将为最终端用户提供高度的移动性和灵活性,尤其针对于存储矿工和需存储大量数据的客户,这需要能够简单替换其Filecoin节点访问本地存储的方式。

  无直接访问主机操作系统的网络堆栈或TCP / IP。系统无法直接访问网络-它们通过libp2p库进行访问。不得有任何其他种类的网络接入。这为跨平台和网络协议提供了高度的移动性,使Filecoin节点(及其所有关键系统)在多种设置下可以使用各种协议(例如,蓝牙,LAN等)运行。

IPFS星际联盟

链接:https://www.ipfsunion.cn/news/class/91.html

来源:星际联盟Filecoin挖矿

声明:本站部分内容来源于网络转载,若有侵权,请及时与网站客服取得联系。

在线客服