https://spec.filecoin.io/

1. Introduction

Filecoin礦工可以選擇提供網絡存儲容量,從而通過定期產生證明其正在提供指定容量的加密證明來獲得Filecoin加密貨幣(FIL)的單位, Filecoin並沒有使用Nakamoto風格的工作證明來維持對鏈的共識,而是使用存儲證明本身:礦工在共識協議中的能力與其提供的存儲量成正比

Filecoin 區塊鏈不只維護FIL交易和帳戶的分類帳, 而且實現Filecoin VM, 這是一種複製狀態機, 可在網路參與者之間執行各種加密合約和市場機制, 這些合同包含存儲交易, 通過Filecoin VM的分布實施, 隨著時間的推移, 存儲交易和鏈上記錄的其他合同機制將繼續處理, 無須原始方進一步的interaction (鏈上有人會幫忙確認資料還存不存在的意思)

1.2 Architecture Diagrams

Architecture Diagrams
(這張圖目前看不懂)

1.3 Key Concepts

為了清楚起見, 引用下面類型的實體來描述Filecoin協議的實現

  • Data structure: 標記數據成員(structs, interfaces, enums)
  • Functions: 不依賴外部狀態的計算過程(不引用全局變量的函數)
  • Components: 一組function, 代表著一個software單元 (代表一個process, 例如ChainSync, 一個process等network messages and respond)
  • APIs: interface delivering messages to components
  • Nodes: 可以與protocol作用的機器(包含軟硬體), 一個Nodes可以run多個Components, full Node 可以運行上述所有Component並且support all APIs
  • Subsystems: 整個Filecoin協議的概念劃分(例如 : Storage Market / Retrieval Market / VM)
  • Actors: Filecoin VM中的虛擬實體, Protocol actors像是智能合約, actor具有FIL, 且可以透過VM和其他actor溝通

1.4 Filecoin VM

Filecoin 大部分使用者會使用到的功能(payment, storage market, power table, etc)都透過Filecoin VM管理
網路會生成一系列block並同意哪個區塊鏈是正確的, 每個block包含一系列的state transitions稱為message, 以及應用這些message後的當前global state檢查點
global state 是由一組actors組成, 每一個都會有它們自己私有的state
Actor相當於以太坊的智能合約, 對於Filecoin來說是一個物件包含了state和一組methods可以被與之交互作用
每一個actor都會有一個Filecoin餘額, state 的指標, CID告訴system是甚麼actor, 一個nonce追蹤是這個actor的第幾個message
在actor上調用方法有兩種方法, 第一, normal user會send一個簽名過的message to the network, message會包含要付的手續費, signature必須符合account key且要有足夠的FIL, fee會正比於要做的事情
第二, actor可以在調用另一個actor的方法時調用該方法, 這種情況唯一可能發生的原因是user調用了某個actor (這邊還看不懂)
詳細的VM Subsystem要看2.3章節

1.5 System Decomposition

1.5.1 What are Systems? How do they work?

Filecoin將功能decouple並且模塊化, 每個系統都添加了重要的功能, 通常可以實現一系列重要且緊密相關的目標
區塊鏈系統提供了block, tipset, chain之類的結構, 並提供了block sync, block propogation, block validation, chain selection, chain access等等
block chain system是與檔案數據系統分開, 包含了files, pieces, piece prepation, data transfer
上面兩個系統又與市場系統分開, 市場系統提供訂單, 交易, 市場可見性和交易結算

1.5.1.1 為什麼要decouple functions

  • implementation boundaries : 這導致可以implementation filecoin only implement a subset of system(只上部分的功能), 尤其對實現多樣性有用(因為會有很多協議? 很多加密方法?), 像是blockchain, 這時候就只需要改部分的system就好
  • runtime decoupling : 使得可以跑多filecoin節點, 甚至在不同電腦上跑
  • security isolation : 某些系統比其他系統需要更高的操作安全性, 一個很好的例子是將區塊鏈處理與數據傳輸分開
  • scalability : 系統可能會有不同的需求, 這樣更方便擴充

1.5.1.2 Filecoin Nodes don't need all the systems

Filecoin的子系統差別很大, 且不是所有Node都需要所有的systems, 例如: blockchain system用來同步鏈, 參與安全共識, 存儲挖掘, 和鏈驗證, 然而許多Filecoin的節點不需要鏈, 只需要從它們信任的節點上獲得StateTree就可以工作
Filecoin不使用Bitcoin所謂的輕節點和完整節點來定義節點, Filecoin使用節點所運行的系統來定義節點, ex:

  • Chian Verifier Node : Runs the blockchain system, can sync and validate the chain, cannot mine or produce block
  • Client Node : Runs the blockchain, market and data transfer system, can sync and validate the chain, cannot mine or produce block
  • Retrieval Miner Node : Runs the market and data transfer system, does not need the chain, can make Retrieval Deals, can send client data, and get paid for it
  • Storage Miner Node : Runs the blockchain, storage market, storage mining system, can sync and validate the chain, can make storage deals, can seal stored data into sectors, can acquire storage consensus power, can mine and produce block

1.5.1.3 Separating Systems

這邊沒講太多重要的東西, 就是講解一下為什麼要把每個function分離的困難在哪

1.5.1.4 Decomposing within a System

也沒有很重要的東西

1.5.2 Implementing Systems

1.5.2.1 System Requirements

All System Requirements

  • Repository :

    • Local IpIdStore : 本地端永久儲存用來定義data structure, system initial的時候會讀取的設定
    • User Configureation Values : User的設定
    • Local Secure KeyStore : 系統不該直接訪問到key, 應該透過加密解密進行訪問, 這樣做可以對節點保密
  • Local FileStore : 存比較大型檔案的檔案, Market需要存(1MB - 10GB), 礦工需要存(1GB - 1TB)

  • Network : 系統要initialize with libp2p.Node
  • Clock : 時間
    為了達成這些目的, 所以使用了FilecoinNode data structure, 這個數據結構會在初始化的時候傳遞給系統

1.5.2.2 System Limitaions(系統必須遵守以下限制)

  • Random Crashes : 面對隨時可能發生的當機, Filecoin能夠維持安全且一致
  • Isolation : 必須透過isolated interface 溝通, 避免直接建構關鍵function 在 shared memory
  • No direct access to host OS Filesystem or Disk :
  • No direct access to host OS Network stack or TCP/IP :

#filecoin #blockchain #bitcoin #cryptocurrency #幣安 #虛擬貨幣 #digitalcurrency







Related Posts

[Next.js 學習筆記] 初探 Next.js 與 Routing

[Next.js 學習筆記] 初探 Next.js 與 Routing

使用 Javascript 取得元素的座標

使用 Javascript 取得元素的座標

JS 字串拼接 Template Literals

JS 字串拼接 Template Literals


Comments