关于Filecoin开发

一旦数据被存储到Filecoin网络中,就可以直接对这些数据进行计算而不必经过检索这些数据这一步。

除了数据的存储和检索,另一个常见需求是数据转换。Compute-over-data(数据计算)协议的目标一般是针对 IPLD 进行计算,IPLD是内容寻址系统(如Filecoin)使用的数据层。有多个工作组正在研究在Filecoin数据上进行不同类型的计算,例如大规模并行计算(例如Bacalhau)和加密的可验证计算(例如Lurk)等。

例如,Bacalhau 是一个用于公共、透明和可选验证的分布式计算的平台。它允许用户在InterPlanetary File System(IPFS)中存储的数据上运行任意Docker容器和WebAssembly(wasm)镜像作为任务。

Filecoin特别适合支持大规模的链下计算,因为存储提供商必须将GPU和CPU等计算资源与其数据一起进行部署。通过在Filecoin网络上支持数据计算,我们可以实现在数据所在位置进行计算的新范式,而不是将数据移动到外部计算节点。

Filecoin虚拟机(FVM)是Filecoin 网络上智能合约的运行环境。FVM负责正确和安全地执行智能合约。FVM支持可编译为WASM的多种语言,包括EVM 的 Solidity合约,Secure EcmaScript (SES),和eBPF。 reference FVM 和 SDK 以Rust编写。根据FVM路线图,我们最初支持用 Solidity 编写的智能合约,最终支持任何可编译为 WASM 的语言。FVM的compute-over-states(基于状态)的计算能力可开发出无数新的用例。例如:

数据组织,是FVM围绕各种数据集创建一种新型组织。

Data DAO 和 tokenized 数据集,FVM 可用于创建和管理基于数据的去中心化自治组织 (DAO)。FVM 允许一组个人或组织来经营和维护数据。数据 DAO 可以管理对数据的访问,并可以收费,然后将收益汇集到一个共享的金库中,以资助数据的维护和长期增长。甚至可以将这些数据token进行交换,并请求对该数据进行计算的服务,例如验证、连接、分析、特征检测和提取,并转移到机器学习。

FVM 允许用户存储一次,然后由修复和复制机器人管理重复的存储交易创建任务,以便数据可以永久存储。使用智能合约,用户可以提供一个 FIL 钱包,存储提供者可以使用该钱包为数据存储提供资金。修复机器人可以监控存储交易并在必要时将数据复制到其他存储提供者。此过程为用户提供了长期存储永久性。

FVM可为存储提供者提供丰富的金融服务,对于Filecoin生态系统,这些服务是独一无二的。

贷款和抵押协议。用户可以将 Filecoin 借给存储提供者,以用作存储抵押品并获得利息。这些贷款可以根据过去存储提供者历史表现进行抵押。社区成员可以使用此历史来生成声誉评分,使每个人都能识别出优质借款人。此外,贷款可以通过使用多重签名作为存储提供者的所有者地址自动偿还给投资者,其中包括贷款人和第三方,以帮助协商偿还。新 FVM 提供的智能合约为每个 FIL 代币持有者提供了新的收益机会,同时也通过允许在网络上提供存储的入口来为整个 Filecoin 经济带来好处。

保险。SP(存储提供者)需要有金融产品来帮助他们避免在创建更多存储解决方案时所承担的风险。某些特点,如支付历史、运营期限和可用性,可以用于制定保险单,就像它们可以用于承保SP的贷款一样。这可以保护他们免受主动失误或代币价格下跌的财务后果。

核心链基础设施。我们希望 FVM 能与其他持久链实现功能对等。这对于任何 EVM 链的运行都是必需的,但并不一定与存储原语相关联。

FVM 上的用户需要将 FIL 兑换成链上发行的其他Token。这可通过一个去中心化交易所实现,如分叉的Uniswap 或 Sushi ,或者建立一个类似于 Solana 上的 Serum 的去中心化订单簿。

虽然尚未在路线图上,但需要从 EVM 链、Move 链和 Cosmos 链建立token桥,以将其他生态系统的封装token纳入其中。我们将重点放在内部,这是因为Filecoin的价值主张足够独特,不需要从其他链中导入 TVL。但是,从长远来看,我们预计 FVM 将成为更广泛的区块链家族的一部分。

除此之外,FVM 还可以支持许多其他用例,例如数据访问控制(Medusa)、检索和无信任度信誉系统、复制工作者、存储奖励和 L2 网络。要了解您可以在 FVM 上构建什么,请查看我们的《 Request for Startup》帖子。

如果您对开发这些用例有兴趣,这里有一份解决方案蓝图列表供参考:

The Filecoin EVM runtime (FEVM) 是FVM上的一个虚拟化的EVM运行环境。开发者可将现有的基于EVM的智能合约直接移植到FVM上直接运行。FEVM在底层模拟了EVM字节代码。可支持Solidity, Vyper, and Yul等语言的智能合约。EVM外部运行环境基于已有的OSS库,包括SputnikVM和revm。

由于Filecoin节点支持以太坊JSON-RPC API,FEVM还与任何EVM开发工具完全兼容,如Hardhat、Brownie和MetaMask。大多数移植到Filecoin的智能合约不需要更改或审计。例如,新的ERC-20 token 可以在Filecoin网络上发布,也可以直接桥接到其他链上的token池。

对于开发者,使用内置的FVM 会有更好的性能,如果对Solidity更熟练,可以牺牲少许性能,可以使用FEVM。更多信息,可访问  table here

这里有FEVM的一些示例, example contracts here

内置Actors(相当于ETH的智能合约)被用于Filecoin网络管理和更新global state(全局状态)。在某个具体的epoch(可以理解为时间段)网络的全局状态可认为是该时间段内通过网络共识达成的一组块。该全局状态被表示为一棵状态树,它将actor映射到actor状态。actor状态描述了单个actor的当前状况,例如其FIL余额和其nonce(防止重复交易的一个随机数)。在Filecoin中,actor通过发送消息来触发状态转换。链中的每个块都可以被认为是一个提议的全局状态,其中由网络共识选出的块被设置了新的全局状态。每个块包含一系列消息和当前全局状态的检查点,该检查点是在应用这些消息之后生成的。Filecoin虚拟机(FVM)是Filecoin网络组件,负责执行所有actor代码。

下面是一个Actor的基本示例,存储提供者证明存储和获得后续奖励的过程:

  • StorageMinerActor 处理存储提供者提供的存储证明。
  • 存储提供者根据存储证明是否有效来获得存储权重的奖励。
  •  StoragePowerActor负责存储权重。
  • 在块验证期间,会读取StoragePowerActor的状态,其中包括分配给每个存储提供者的存储权重信息。
  • 通过状态信息,共识机制随机将块奖励给存储权重值最高的存储提供者,RewardActor会向存储提供者发送FIL。

Filecoin链中的每个块都包括:

  • 内联数据,例如当前区块高度。
  • 指向当前状态树的CID。
  • 指向一组消息的CID,这些消息在应用到网络时生成了当前状态树。

通过 Merkle Directed Acyclic Graph (Merkle DAG) 映射状态树和消息集。状态树中的节点包含有关以下内容的信息:

  • Actors,例如FIL余额、nonce 和 指向Actor状态数据的CID。
  • 当前块中的消息

消息映射中的节点包含有关以下内容的信息:

  • 消息发送到达的actor
  • 发送消息的actor
  • 接收消息的 actor上所要调用的方法
  • 用于验证的密码签名
  • 在actor之间转移的FIL数量

定义 actor 的代码由所定义的方法组成,发送到 actor 的消息包含有关要调用哪个方法以及这些方法的输入参数的信息。此外,actor 代码与运行时对象进行交互,该对象包含有关网络的一般状态信息,例如当前 epoch、密码签名和证明验证等。与其他区块链中的智能合约一样,actor 必须支付 gas 费用,即已设定的一定数量的FIL,以抵消交易的成本(使用的网络资源等)。每个 actor 都有一个 Filecoin 余额、一个状态指针、一个代码(该代码告诉系统它是什么类型的 actor),以及一个 nonce,该nonce跟踪由此 actor 发送的消息数量。

在这里,用户 actor 和 智能合约 是同义词。

地址

Filecoin 地址是一个标识符,指向 Filecoin 状态中某个actor。所有 actor(矿工 actor、存储市场 actor、账户 actor)都有一个地址。此地址编码有关 actor 所属网络的信息、地址编码的特定类型、地址有效负载本身和校验和。该格式的目标是提供一种健壮的地址格式,易于使用且不易出错。