Danksharding
Danksharding to sposób, aby uczynić Ethereum prawdziwie skalowalnym blockchainem, ale osiągnięcie tego wymaga kilku uaktualnień protokołu. Proto-Danksharding jest krokiem pośrednim w tej drodze. Oba rozwiązania mają na celu zapewnienie jak najtańszych transakcji w warstwie 2 dla użytkowników i powinny skalować Ethereum do >100 000 transakcji na sekundę.
Czym jest Proto-Danksharding?
Proto-Danksharding, znany również jako EIP-4844(opens in a new tab), jest sposobem dla pakietów zbiorczych na dodawanie tańszych danych do bloków. Nazwa pochodzi od dwóch badaczy, którzy zaproponowali ten pomysł: Protolambda i Dankrad Feist. Kiedyś pakiety zbiorcze miały ograniczoną możliwość obniżania kosztów transakcji użytkowników, ponieważ publikowały swoje transakcje w CALLDATA
.
Jest to drogie rozwiązanie, ponieważ jest przetwarzane przez wszystkie węzły Ethereum i pozostaje w łańcuchu na zawsze, nawet jeśli pakiety zbiorcze potrzebują danych tylko na krótki czas. Proto-Danksharding wprowadza bloby danych, które mogą być wysyłane i dołączane do bloków. Dane w tych blobach nie są dostępne dla EVM i są automatycznie usuwane po określonym czasie (w czasie powstawania tego tekstu jest to 4096 epok, czyli około 18 dni). Oznacza to, że pakiety zbiorcze mogą przesyłać swoje dane znacznie taniej i przekazywać oszczędności użytkownikom końcowym w postaci tańszych transakcji.
W jaki sposób są weryfikowane dane blobów?
Pakiety zbiorcze publikują wykonywane transakcje w blobach danych. Publikują również „zobowiązanie” do danych. Robią to poprzez dopasowywanie funkcji wielomianowej do danych. Funkcja ta może być następnie obliczana w różnych punktach. Na przykład, jeśli zdefiniujemy bardzo prostą funkcję f(x) = 2x-1
, możemy obliczyć tę funkcję dla x = 1
, x = 2
, x = 3
, otrzymując wyniki 1, 3, 5
. Udowadniający stosuje tę samą funkcję do danych i oblicza ją w tych samych punktach. Jeśli oryginalne dane zostaną zmienione, funkcja nie będzie identyczna, a zatem wartości obliczone w każdym punkcie również nie będą identyczne. W rzeczywistości zobowiązanie i dowód są bardziej skomplikowane, ponieważ są opakowane w funkcje kryptograficzne.
Co to jest KZG?
KZG to skrót od Kate-Zaverucha-Goldberg — nazwisk trzech oryginalnych autorów(opens in a new tab) schematu, który redukuje blob danych do małego kryptograficznego „zobowiązania”(opens in a new tab). Blob danych przesłany przez pakiet zbiorczy należy zweryfikować, aby upewnić się, że pakiet zbiorczy nie działa nieprawidłowo. Wiąże się to z ponownym wykonaniem przez udowadniającego transakcji w blobie w celu sprawdzenia, czy zobowiązanie było poprawne. Zasadniczo mówimy tu o tym samym, co sposób, w jaki klienci wykonawczy sprawdzają poprawność transakcji Ethereum w warstwie 1 za pomocą dowodów Merkle. KZG to alternatywny dowód, który dopasowuje równanie wielomianowe do danych. Zobowiązanie ocenia wielomian w niektórych tajnych punktach danych. Udowadniający dopasowałby ten sam wielomian do danych i obliczyłby go dla tych samych wartości, sprawdzając, czy wynik jest taki sam. Jest to sposób weryfikacji danych, który jest zgodny z technikami wiedzy zerowej używanymi przez niektóre pakiety zbiorcze oraz później inne części protokołu Ethereum.
Czym była ceremonia KZG?
Ceremonia KZG była sposobem dla wielu osób z całej społeczności Ethereum na wspólne wygenerowanie tajnego losowego ciągu liczb, który można wykorzystać do weryfikacji niektórych danych. Bardzo ważne jest, aby ten ciąg liczb nie był znany i nie mógł zostać odtworzony przez nikogo. Aby to zapewnić, każda osoba biorąca udział w ceremonii otrzymywała ciąg od poprzedniego uczestnika. Następnie tworzyli nowe losowe wartości (np. pozwalając przeglądarce mierzyć ruch ich myszki) i mieszali je z poprzednią wartością. Potem wysyłali tę wartość do kolejnego uczestnika i niszczyli ją ze swojego komputera. Dopóki jedna osoba w tej ceremonii robiła to uczciwie, ostateczna wartość nie była znana atakującemu.
Ceremonia EIP-4844 KZG była dostępna publicznie, a dziesiątki tysięcy ludzi wzięło w niej udział, aby dodać własną losowość. Łącznie w ceremonii wzięło udział 140 000 osób, co czyni ją największą tego typu ceremonią na świecie. Aby ceremonia została unieważniona, 100% uczestników musiałoby być wyraźnie nieuczciwych. Jeśli uczestnicy wiedzą, że byli uczciwi, nie ma potrzeby ufać nikomu innemu, ponieważ wiedzą, że zabezpieczyli ceremonię (indywidualnie spełnili wymóg 1-z-N uczciwych uczestników).
Czym jest Danksharding?
Danksharding to pełna realizacja skalowania pakietów zbiorczych, która rozpoczęła się od Proto-Dankshardingu. Danksharding przyniesie ogromne ilości miejsca na Ethereum dla pakietów zbiorczych w celu zrzucania ich skompresowanych danych transakcyjnych. Oznacza to, że Ethereum będzie w stanie z łatwością obsługiwać setki indywidualnych pakietów zbiorczych i realizować miliony transakcji na sekundę.
Sposób, w jaki to działa, polega na rozszerzaniu blobów dołączonych do bloków z sześciu (6) w Proto-Dankshardingu do 64 w pełnym Dankshardingu. Reszta wymaganych zmian to aktualizacje sposobu działania klientów konsensusu, mające umożliwić im obsługę nowych dużych blobów. Kilka z tych zmian znajduje się już w planie działania dla innych celów niezależnych od Dankshardingu. Na przykład Danksharding wymaga wdrożenia podziału proponent-twórca. Jest to uaktualnienie, które rozdziela zadania tworzenia bloków i proponowania bloków u różnych walidatorów. Również próbkowanie dostępności danych jest wymagane dla Dankshardingu, ale jest ono także wymagane do rozwoju bardzo lekkich klientów, które nie przechowują wielu danych historycznych („klienci bezstanowi”).
Aktualny postęp
Na pełny Danksharding poczekamy jeszcze kilka lat. W międzyczasie ceremonia KZG zakończyła się przy udziale ponad 140 000 członków, a EIP(opens in a new tab) dla Proto-Dankshardingu został ulepszony. Propozycja ta została w pełni wdrożona we wszystkich sieciach testowych i została uruchomiona w sieci głównej wraz z uaktualnieniem sieci Cancun-Denceb („Dancun”) w marcu 2024.
Dalsza lektura
- Uwagi na temat Proto-Dankshardingu(opens in a new tab) — Vitalik Buterin
- Uwagi Dankrada na temat Dankshardingu(opens in a new tab)
- Dankrad, Proto i Vitalik dyskutują o Dankshardingu(opens in a new tab)
- Ceremonia KZG(opens in a new tab)
- Wykład Carla Beekhuizena na Devconie na temat zaufanych konfiguracji(opens in a new tab)
- Więcej o próbkowaniu dostępności danych dla blobów(opens in a new tab)
- Dankrad Feist o zobowiązaniach KZG i dowodach(opens in a new tab)
- Zobowiązania wielomianowe KZG(opens in a new tab)