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

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

2020-03-30 15:23:20  阅读:人  来自:挖矿课堂

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

Filecoin简介

  Filecoin是基于区块链机制的分布式存储网络。Filecoin矿工可以选择为网络提供存储容量空间,从通过定期产生其正在提供指定存储容量的加密证明来获得Filecoin加密货币(FIL)奖励。此外,Filecoin使各方能够通过Filecoin区块链上的共享账本中记录的交易来交换FIL货币。相较于使用Nakamoto风格的工作证明来维持对链的共识,Filecoin使用的是存储证明本身:矿工在共识协议中的挖矿功率与其所提供的有效存储量成正比。

  Filecoin区块链不仅维护了FIL交易信息和帐户账户信息,并且还可以实现Filecoin虚拟机,Filecoin虚拟机是一种复制状态机,在网络参与者之间执行各种加密合约和市场机制(或在网络上执行各种加密合约和参与者之间的市场机制)。这些合约包括存储交易,其中客户向矿工支付FIL货币来存储客户所需要保存的特定文件数据。通过Filecoin VM的分布式实施,链上记录的存储交易和其他合约机制将随着时间的推移继续进行处理,而无需原始方(例如请求数据存储的客户端)进行进一步的交互。

1.1 架构图

  1.1.1 Filecoin系统

  状态图例:

  初始状态 - 目前非常不完整。

  实施者:这还远远没有为您准备好。

  粗糙 - 随着我们部署关键功能的进行,会逐渐进行重大更改。

  实施者:这将很快为您准备好。

  完善 - 关键功能已经逐渐完善,会有一些小更改。也可能会有一些大的更改。

  实施者:几乎为您准备好了。您可以开始构建这些部分,但是请注意可能仍然会有更改。

  稳定 - 基本完成,可能会有细微的变化,而非重大的更改。

  实施者:已完成准备。您可以构建这些部分。

  请注意,状态与用英语或代码编写的规范的状态相关。我们的目标是最终在两种语言集中充实规范。

  [显示/隐藏]状态指示器

  1.1.2 概述图

  待完成:

  清理/重组

  该图是准确的,可以帮助您进行梳理,但可能仍有些复杂

  箭头和线条可能会有些复杂。 我们会更新一个更简明的版本(也许基于C4)

  映射代币系统的添加

  将data_transfers移入令牌/代币

  协议概况图

  1.1.3 协议流程图 - 链上交易

  协议序列图 - 链上交易(新页面打开)

  1.1.4 参数计算相依图

  这是参数计算模型的示意图,由我们的建模和求解约束的工具Orient制作。

  参数计算相依图图(新页面打开)

1.2 关键概念

  为了清楚起见,我们会引用以下几种实体来描述实现Filecoin协议的方式:

  数据结构是带有语义标签的数据成员(例如,结构,接口或枚举)的集合。

  函数是不依赖于外部状态的计算过程(即,数学函数或不引用全局变量的编程语言函数)。

  组件是功能集,旨在在实现结构中表示为单个软件的单元。 根据语言的选择和特定的组件,这可能对应于单个软件模块,一个运行某个主循环的线程或者进程,一个磁盘备份的数据库或多种其他设计选择。 例如,同步链 - 同步区块链是一个组件:它可以实现为运行单个指定主循环的进程或线程,该主循环等待网络消息并通过记录和/或转发区块数据做出相应的响应。

  API是可以发送到组件的消息。 客户对给定子协议的看法(例如,请求矿工节点的存储提供者组件在存储市场中存储文件)可能需要执行一系列API。

  节点是与协议交互的完整软件和硬件系统。 一个节点可能会持续运行上述组件中的多个,参与多个子系统,并在本地和/或网络上公开API,具体取决于节点配置。 术语“完整节点”是指运行上述所有组件并支持规范中详述的所有API的系统。

  子系统是整个Filecoin协议的概念性划分,无论是按照完整的协议(例如存储市场或检索市场),还是就功能(例如VM-虚拟机)而言。 它们不一定对应于任何特定的节点或软件组件。

  Actor(参与者)是体现在Filecoin 虚拟机状态中的虚拟实体。 协议参与者类似于智能合约的参与者。 一个参与者拥有FIL代币余额,并且可以通过虚拟机的操作与其他参与者进行交互,但不一定对应于任何特定的节点或软件组件。

1.3 Filecoin VM 虚拟机

  Filecoin面向用户的大部分功能(付款,存储市场,算力表等)都通过Filecoin虚拟机(Filecoin VM)进行管理。网络会生成一系列区块,并同意区块中的哪一条链是正确的。每个区块包含一系列称为消息的状态转换,以及在应用这些消息后当前全局状态的检查点。

  这里的全局状态由一组参与者组成,每个参与者都有自己的私有状态。

  Filecoin的Actor(参与者)相当于以太坊的智能合约,它本质上是文件币网络中的一个“对象”,具有状态和一组可用于与其交互的方法。每个参与者都有一个Filecoin余额,一个状态指针,一个代码CID来告诉系统其参与者的类型,以及一个随机数(nonce)来跟踪该角色发送消息的数量。 (TODO:随机数实际上仅是外部用户界面参与者所需要的,即账户参与者。也许我们应该找到一种方法来清理它?

  在actor上调用方法有两种。 第一种,是以系统的外部参与者(即Filecoin的普通用户)的身份调用方法,您必须将已签名的消息发送到网络,并向包含您消息的矿工支付一笔费用。 消息上的签名必须与Filecoin的帐户关联的密钥相匹配,并且用户账户里有足够的Filecoin用来支付执行该消息的费用。 这里的执行费用就如同于比特币和以太坊中的交易手续费用,它与处理消息的工作量成比例(比特币消息费用为每字节,以太坊使用“ gas”的概念。我们也使用“ gas”) 。

  第二种,参与者可以在调用另一个参与者的方法时调用该方法。 但是,这种情况唯一可能发生的原因是外部用户消息调用了某个actor(注意:用户调用的actor可能会调用另一个actor,然后再调用另一个actor,执行到可以承受运行的最多层。 有关完整的实现详细信息,请参阅VM子系统章节。

1.4 FIL 流程与规范 (V1)

  1.4.1 预启动模式

  在主网上线之前,我们将对规范进行大量更改以完成对协议当前版本的记录。 在主要利益相关者的批准下,将通过简单的PR流程对Spec进行更改。 尚需进行一些改进,并且testnet有望带来一些重要的修复/改进。 现在,大多数更改都在更改文档,而不是在不更改协议的情况下,至少在主要方面没有更改。

  上线之前,如果发现内容缺失,请使用PR功能通知我们。如果发现错误,请使用PR通知修复。 如果需要某些内容详细说明,请使用PR功能请求更新。 总的说来,在这个repo最顶层的是细则,即Filecoin文件币协议。 没有什么比它更有关联性(即没有其他文档,问题包含“协议”)。

  1.4.2 新提案 -> 草稿 -> 细则

  对于不属于当前细则系统里的任何内容(例如“修复”),我们的运行方式为:

  (1)首先,讨论一个问题中的错误和解决方案

  亦或是几个问题,如果空间很大并且有足够多线程

  制定使提案生效需要的所有的详细信息

  (2)写出草案的所有细节

  当您觉得快要找到解决方案时,写一份草稿文档,其中包含所有详细信息,并包括需要对规范进行哪些更改

  例如。 “使用...添加名为X的系统”,或“添加包含Y的库”,或“修改vm / state_tree以包括...”

  将此文档放在src / drafts /目录中

  欢迎任何人提供合理且详细的草案

  (注意:这些草稿将在未来被FIP取代)

  (3)寻求批准以将其合并到细则中。

  要寻求批准,请提交问题并进行讨论

  如果草案由Filecoin细则的所有者所批准,则对细则的改进将需要在PR中进行

  一旦更改在细则里完成,请删除草稿

  如果有关问题仍有一些想法在讨论中,PR的草稿可以在一段时间内保持开放的状态。在某些时候,如果审稿人和作者认为草稿的当前状态已经足够稳定(虽然尚未完成),则应将其合并到repo中。 对草案的进一步改动可以附加PR,可以带来更多讨论。欢迎大家对这些草案进行评论,但是如果您希望参与到更实际的研究研发过程,则可能需要花费更多的时间和精力来参与这一过程。

  1.4.3 关于合并

  对于drafts或notes文件夹中的任何内容,请在相关人员审核后自行合并。

  1.4.4 Issues

  issues在repo细则中是最重要的信号。 它们要么是建议提案,要么是与细则有直接相关的问题。 更多关于推想研究的问题和讨论将在研究repo中进行。

IPFS星际联盟

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

来源:星际联盟Filecoin挖矿

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

在线客服