LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > Filecoin是如何运作的

Filecoin是如何运作的

2021-07-08 星上链 来源:区块链网络

Filecoin 的工作原理

本页面对 Filecoin 网络的运作方式进行了基本介绍。 虽然 Filecoin 与其他加密货币类似,但希望在网络上构建的开发人员应该注意一些差异。

# 网络

Filecoin 网络是一个分布式的点对点网络,由以不同方式参与的 Filecoin 节点组成。

对等点通过安全通道进行通信,它们用于将信息分发到网络(八卦)、在它们之间传输数据以及发现其他对等点,维护一个连接良好的群,其中块和消息等信息即使在数千个 同行参与。

# Filecoin 节点

Filecoin 节点或 Filecoin 客户端是同步 Filecoin 区块链并验证每个块中的消息的对等点,一旦应用,就会提供全局状态。 节点可以管理 Filecoin 钱包并在其上接收 FIL。

Filecoin 节点还可以通过广播将不同类型的消息发布到网络。 例如,客户端可以发布一条消息,将 FIL 从一个地址发送到另一个地址。 节点可以向 Filecoin 矿工提出存储和检索交易,并在执行时支付费用。

运行 Filecoin 节点是一项低级任务,通常意味着保持程序 24/7 全天候运行。 有几个 Filecoin Node 实现正在开发中,Lotus 是最先进的。

# Filecoin 矿工

矿工通过执行不同类型的交易并将新块添加到链中(每 30 秒)为网络提供服务,并为此收集 FIL 奖励。 从矿工的角度来看,有关矿工类型、奖励和交易执行的其他详细信息可以在挖矿的工作原理部分找到。

运行 Filecoin 矿工是一项具有很强硬件要求的高科技任务,需要完成必要的证明。? Lotus Miner 是迄今为止最先进的 Filecoin 矿工实现。

# 交易

Filecoin 中有两种主要的交易类型:存储交易和检索交易。

存储交易是客户和存储矿工之间在网络中存储一些数据的协议。 一旦发起交易,并且矿工收到要存储的数据,它会反复向链证明它仍然按照协议存储数据,以便它可以收集奖励。 如果没有,矿工将被削减并失去 FIL。

检索交易是客户和检索矿工(可能也是也可能不是存储矿工)之间的协议,以提取存储在网络中的数据(希望以快速可靠的方式)。 与存储交易不同,这些交易是在链下完成的,使用支付渠道为接收到的数据递增支付。

# 证明

如上所述,存储矿工必须证明他们按照交易条款存储数据。 这意味着:

他们必须存储客户端提交的所有数据

他们必须在交易的整个生命周期内存储它

密码证明用于这些目的,如本文关于 Filecoin 证明系统中所述。

使用复制证明(PoRep),矿工证明他们已经收到了所有数据,并且他们已经使用他们的物理存储以一种其他矿工无法复制的方式以该矿工独有的方式对其进行了编码(因此两次交易相同 数据最终不能重复使用同一个磁盘)。 该证明在交易开始时提供,密封操作完成。

一旦交易处于活跃状态并在其整个生命周期内,矿工将使用时空证明 (PoSt) 来证明它仍在存储与交易相关的数据。 对于 PoSt,随机矿工需要证明他们存储的数据的随机部分仍然存在。

Filecoin 客户和其他矿工不断验证每个区块中包含的证据是否有效,提供必要的安全性并惩罚不遵守交易的矿工。

# 汽油费

执行消息,例如在链中包含交易或证明,会消耗网络上的计算和存储资源。? Gas 是衡量消息消耗的资源。 消息消耗的气体直接影响发送者为将其包含在矿工的新区块中而必须支付的成本。

从历史上看,在其他区块链中,矿工以本地货币为单位指定 GasFee,然后根据消息消耗的 Gas 向出块矿工支付优先费用。? Filecoin 的工作原理类似,除了一定数量的费用被烧毁(发送到不可恢复的地址)以补偿网络资源支出,因为所有节点都需要验证消息。 这个想法基于以太坊的 EIP1559(打开新窗口)。

Filecoin 网络中消耗的费用由动态 *BaseFee 给出,它根据网络拥塞参数(块大小)自动调整。 当前值可以从块浏览器之一或通过检查当前磁头获得。

此外,每条消息都附加了许多与 gas 相关的参数,并决定了矿工获得的奖励数量。 以下是术语和概念的概述:

GasUsage:消息执行实际消耗的gas量。 当前协议不知道一条消息在执行前会消耗多少 gas,但可以估计(参见价格(打开新窗口))。? GasUsage 以 Gas 为单位测量。

BaseFee:执行每条消息所消耗的每单位 gas 消耗的 FIL 数量。 它以 attoFIL/Gas 为单位测量。

GasLimit:消息发送者估计和指定的消息执行可以消耗的气体量的限制。 它以气体为单位测量。 一个区块中包含的所有消息的 GasLimit 总和不得超过 BlockGasLimit。 如果消息用完 Gas,消息将无法执行,并且执行的任何效果都将恢复。

GasFeeCap:发送方愿意为每个 GasUnit 支付的最大代币金额,以将消息包含在一个块中。 它以 attoFIL/Gas 为单位测量。 消息发送者在发送消息时必须具有 GasFeeCap * GasLimit 的最小余额,即使并非所有这些都将被消耗。? GasFeeCap 可以防止 BaseFee 出现意外的高波动。

GasPremium:支付给出块矿工的优先费用。 这受到 GasFeeCap 的限制。? BaseFee 具有更高的优先级。 它以 attoFIL/Gas 为单位测量,可低至 1 attoFIL/Gas。

高估消耗:当 GasLimit 和 GasUsage 之间的差异很大时,要燃烧的额外气体量会增加。 查看当前实现。

发件人的消息总成本为:

GasUsage * BaseFee FIL(燃烧)+

GasLimit * GasPremium FIL(矿工奖励)+

OverEstimationBurn * BaseFee FIL

一个重要的细节是,无论使用的 GasFeeCap 是什么,消息都将始终支付销毁费用。 因此,较低的 GasFeeCap 可能会导致 GasPremium 降低甚至是负值! 在这种情况下,包含消息的矿工将不得不自掏腰包支付所需的金额,这意味着他们不太可能在新区块中包含此类消息。

Filecoin 实施可能会选择他们的矿工如何选择包含在新区块中的消息的启发式方法,但他们通常会尝试最大化矿工的奖励。

# 演员

Actors 是一种用于管理状态的软件设计模式。 账户、多重签名、矿工以及任何具有状态的东西,例如账户余额,都是作为参与者实现的。

Actors 相当于以太坊虚拟机中的智能合约的 Filecoin。 因此,Actor 是系统的核心组件。? Filecoin 区块链当前状态的任何更改都必须通过 Actor 触发。

请参阅:https://spec.filecoin.io/#section-systems.filecoin_vm

# 地址

在 Filecoin 中,地址用于识别参与者。 有4种地址类型:

0 - 身份证地址

1 - SECP256K1 公钥地址

2 - 演员地址

3 - BLS 公钥地址

# ID 地址 - f0

所有actor 都有一个ID,例如99,这是一个在创建actor 时由InitActor 分配给它的短整数。? ID 地址是参与者的 ID,以网络为前缀(f 表示主网),地址类型 0 表示 ID。

例如,主网上的 Burn Account (opens new window) actor 的 ID 为 99,ID 地址为 f099。

# 公钥地址 - f1 和 f3

由用户直接管理的参与者(如帐户)是从公私密钥对派生的。 如果您有权访问私钥,则可以对该参与者发送的消息进行签名。 公钥用于为参与者派生地址。

例如,火币热钱包(打开新窗口)有secp256k1公钥地址f1abjxfbp274xpdqcpuaykwkfb43omjotacm2p3za和ID地址f033259。 两个地址标识相同的帐户参与者。 发送到任一地址的消息将应用于同一个帐户。

公钥地址允许 Ledger 等设备仅从公钥中为您的帐户派生有效的 Filecoin 地址。 它不需要询问远程节点您的 ID 地址是什么。

Filecoin 支持以 f1 开头的 secp256k1 地址和以 f3 开头的 BLS 地址。

# 健壮的地址与 ID 地址

公钥地址被称为“健壮地址”,因为它们不依赖于文件币链状态。

Actor ID 由 InitActor 在链上定义。 如果将相同的 ID 分配给不同分支上的不同演员,则演员 ID 在其创建后的短时间内可能会发生变化。 您可以将 ID 地址视为关系数据库中单调递增的数字主键。 在 SQL 术语中发生链重组或回滚时,您最终可能会为不同的行引用相同的 ID。 预期共识(打开新窗口)算法将解决冲突,一旦定义新 ID 的状态足够旧(在共识方面达到最终确定性),就不会发生任何变化;? ID 永远绑定到那个演员。

健壮的地址提供了一种在链状态最终确定之前引用参与者的安全方法。? ID 地址被用作一种节省空间的方式来识别文件币链状态中的参与者,其中每个字节都很重要,并且是一种人性化的简洁形式。

# 演员地址 f2

参与者地址提供了一种为与公钥无关的参与者创建健壮地址的方法。 它们本质上是帐户创建输出的随机 sha256 哈希值。? ZH 存储矿工(打开新窗口)具有参与者地址 f2plku564ddywnmb5b2ky7dhk4mb6uacsxuuev3pi 和 ID 地址 f01248。

# BLS 曲线 f3

除了 secp256k1 f1 地址外,Filecoin 中的 BLS 地址以 f3 开头。? Filecoin 对 BLS 签名使用曲线 bls12-381。? Bls12-381 是一对两条相关的曲线:G1 和 G2。? bls12-381 的实现可以根据公钥是否在 G1 上而签名在 G2 上而有所不同,反之亦然。

Filecoin 使用 G1 作为公钥,使用 G2 作为签名,因为 G1 允许公钥的较小表示。 这与 ETH2 的设计决策相同,但与 Zcash 形成对比,Zcash 在 G1 上有签名,在 G2 上有公钥。

另请注意,Filecoin 以小端顺序存储和解释私钥。 这与 ETH2 密钥形成对比,后者也使用 bls12-381 但以大端顺序存储。

# 附加材料

Filecoin 建立在诸如 libp2p(网络、寻址、消息分发)、IPLD(数据格式、编码和内容寻址数据结构)、IPFS(数据传输)和多格式(面向未来的数据类型)等成熟项目之上。

以下是一些有用的介绍性材料的链接,这些材料介绍了为 Filecoin 提供支持的技术以及 Filecoin 本身:

IPFS:

IPFS 初学者指南(打开新窗口)

IPFS 概念(打开新窗口)

ProtoSchool 教程(打开新窗口)

libp2p:

为什么是 libp2p?

libp2p:模块化 p2p 网络堆栈

文件币:

介绍 Filecoin,一个去中心化的存储网络()

Filecoin 入门

构建 Filecoin 生态系统

Filecoin 功能:gas 费用

—-

编译者/作者:星上链

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...