Główny problem, który rozwiązuje RedStuff

Każdy system rozproszonego przechowywania musi rozwiązać trzy wzajemnie sprzeczne cele:

Wysoka dostępność (dane zawsze można pobrać)

Niska nadmiarowość (przechowywanie nie jest nieprzyjemnie kosztowne)

Wytrzymałość na zdrajców (węzły mogą być złośliwe, nie tylko nieaktywne)

Większość systemów oferuje kompromis w jednym z nich:

IPFS → tanio, ale bez gwarancji

Filecoin → gwarancje, ale ogromne obciążenie nadmiarowości

Arweave → stały, ale nieefektywny i archiwalny

RedStuff rozwiązuje wszystkie trzy jednocześnie.

Dlaczego proste kodowanie zamiennikowe nie wystarcza

Klasyczne kodowanie zamiennikowe (Reed–Solomon)

Podziel plik na k fragmentów

Dodaj n−k fragmenty parzystości

Każde k z n może zrekonstruować plik

Problem:

Zakłada uczciwe, ale awaryjne węzły

Łamie się pod działaniem bizantyjskim

Walrus zakłada złośliwe węzły, a nie tylko awarie.

Dwuwymiarowe kodowanie erasure

Zamiast jednowymiarowego paska, RedStuff koduje dane w dwuwymiarowej macierzy.

Krok 1: Blob → Macierz

Załóżmy, że blob jest podzielony na macierz:

D11 D12 D13

D21 D22 D23

D31 D32 D33

Każdy Dij to blok danych.

Krok 2: Kodowanie wierszy i kolumn

RedStuff stosuje kodowanie erasure dwa razy:

Kodowanie wierszy

Każdy wiersz otrzymuje bloki parzystości:

Wiersz 1: D11 D12 D13 | R1

Wiersz 2: D21 D22 D23 | R2

Wiersz 3: D31 D32 D33 | R3

Kodowanie kolumn

Każda kolumna otrzymuje bloki parzystości:

Kol 1: D11 D21 D31 | C1

Kol 2: D12 D22 D32 | C2

Kol 3: D13 D23 D33 | C3

Teraz każdy blok danych jest chroniony poziomo i pionowo.

To jest dwuwymiarowa redundancja.

Dlaczego to jest odporne na bizantyjskie

Analizujmy tryby awarii.

Przypadek A: Węzły przechodzą offline

Kody wierszy odzyskują brakujące bloki

Kody kolumnowe odzyskują brakujące bloki

Przypadek B: Węzły kłamią (bizantyjskie)

Nieprawidłowe kawałki są wykrywane poprzez:

zobowiązania kryptograficzne

kontrole spójności w różnych wymiarach

Przypadek C: Opóźnienie adwersarialne

Węzły nie mogą się doczekać wyzwań

Dowody są asynchroniczne

Opóźnienia = kary

Węzeł musi nieprzerwanie przechowywać dane, a nie udawać je później.

Matematyczne gwarancje

Niech:

f = ułamek węzłów bizantyjskich

n = całkowita liczba węzłów

k = próg danych

RedStuff gwarantuje:

Dostępność danych, jeśli < 1/3 kawałków jest bizantyjskich

Szerokość pasma odzyskiwania proporcjonalna do utraconych danych

Prawdopodobieństwo rekonstrukcji → 1, gdy macierz rośnie

To jest znacznie silniejsze niż jednowymiarowe kodowanie erasure.

@Walrus 🦭/acc #walrus $WAL

WALSui
WAL
0.1218
-3.56%