眾所周知,Filecoin是一個區塊鏈技術的分散式儲存專案,實現資料的分散式儲存。Filecoin協議中可以實現共識、訊息處理、核算儲存並維護安全,它是連線Filecoin系統中的各個參與者主介面。
Filecoin區塊鏈系統包括:
- 一個訊息池子系統,節點用於跟蹤和傳播礦工宣告要包含在區塊鏈中的訊息。
- 用於解釋和執行訊息以更新系統狀態的虛擬機器子系統。
- 狀態樹子系統,管理其建立和維護的虛擬機器從給定子鏈中確定生成的狀態樹(系統狀態)。
- 一種鏈同步(ChainSync)susbystem,它跟蹤和傳播經過驗證的訊息塊,維護一組候選鏈,礦工可以在這些候選鏈上進行挖掘,並對傳入的區塊進行語法驗證。
- 一種儲存能力共識子系統,它跟蹤給定鏈的儲存狀態(即儲存子系統),並幫助區塊鏈系統選擇要擴充套件的子鏈和包含在其中的區塊。
除了以上的那些之外,還有一些其他的系統,包括:
一種鏈管理器,它維護給定鏈的狀態,為其他區塊鏈子系統提供設施,這些子系統將查詢有關最新鏈的狀態以便執行,並確保入鏈的區塊在包含到鏈中之前經過語義驗證。
一種區塊生成器,在成功地進行領導人選舉時被呼叫,以便生成一個新的區塊,在將當前最重的鏈轉發給同步器進行傳播之前,該區塊將擴充套件當前最重的鏈。
從總的視角來看,Filecoin區塊鏈的發展透過連續幾輪的選舉而發展壯大,在選舉中,許多礦工被選舉產生區塊,從而獲得區塊獎勵。Filecoin的區塊鏈依靠儲存能力執行。也就是說,礦工透過其共識演算法來確定要開採的子鏈取決於該子鏈的儲存量。在高層,“儲存功率共識”子系統維護一個功率表,跟蹤儲存礦工參與者透過扇區承諾和時空證明為網路貢獻的儲存量。
區塊:
區塊是Filecoin區塊鏈的主要單元,其他區塊鏈專案同樣如此。區塊訊息直接與Tipsets連結,Tipsets是區塊訊息的組。
Filecoin區塊鏈中的區塊結構包括:區塊頭、區塊內的訊息列表、簽名訊息三個部分組成。
注意:區塊在功能上與Filecoin協議中的區塊頭相同。雖然區塊標題包含指向完整系統狀態,訊息和訊息回執的Merkle連結,但可以將區塊視為該資訊的完整集合(不僅是Merkle根,還包括狀態樹的完整資料、訊息樹、收據樹等)。由於完整區塊的大小很大,因此Filecoin區塊鏈由區塊頭而不是完整區塊組成。
區塊頭是區塊的規範表示,。區塊頭在礦工節點之間傳播,從區塊頭訊息中,礦工擁有應用關聯的FullBlock狀態和更新鏈所需的所有資訊。為了能夠做到這一點,需要包含在區塊頭中的最小資訊項集包括:礦工地址、票證、時空證明、IPLD DAG中此塊的父級CID,以及訊息自身的CID。訊息結構必須包括源(From)和目的地(to)地址、Nonce和GasPrice。
在將訊息傳遞到鏈同步邏輯之前,還將對其進行驗證 。
除了驗證訊息的簽名外,沒有對區塊中包含的訊息進行語義驗證的方法。如果一個區塊中包含的所有訊息在語法上都是有效的,那麼可以執行這些訊息並生成一個回執。
鏈同步系統可以分階段進行語法和語義驗證,以減少不必要的資源消耗。如果以上所有測試都成功,則區塊將被標記為已驗證。最終,無效區塊不得進一步傳播或驗證為父節點。