Wpis z mikrobloga

Ciekawostka na dzisiaj: Jak wykorzystać SPV mining aby dokopać innym minerom i podbić opłaty transakcyjne w sieci BTC?

Słowem wstępu: jak działa mining? Miner po znalezieniu dowodu pracy tworzy na jego podstawie nowy blok i propaguje go do sieci. Pozostali minerzy otrzymują blok, i przestawiają się z kopania na poprzednim bloku na kopanie na aktualnym.

Tutaj pojawia się problem: Im większe opóźnienia sieci tym większa szansa że dwa bloki zostaną znalezione jednocześnie, i nastąpi osierocenie jednego z nich. Osierocenie oznacza straty finansowe, więc minerzy starają się tego unikać.

W normalnym kopaniu, miner przenosi moc obliczeniową na nowy blok, dopiero kiedy go otrzyma i zweryfikuje, ale to tworzy nowy problem: transfer i weryfikacja bloku zajmuje cenny czas, co przekłada się na osieracanie a tym samym straty finansowe

Co robią minerzy? Otóż aby poprawić swoje wyniki, zaczynają kopać na nagłówkach, zanim otrzymają całą zawartość nowego bloku. Ponieważ nagłówek jest bardzo mały, jego propagacja w sieci jest bardzo szybka.

ALE!

Kiedy miner ma wyłącznie nagłówek, to nie wie jakie transakcje są zawarte w bloku pasującym do tego nagłówka. A jeśli nie wie jakie są w nim transakcje, to nie wie czy zamieszczając transakcje w następnym bloku nie spowoduje konfliktu z konsensusem. Dlatego kopiąc na nagłówku zmuszony jest do kopania pustego bloku do czasu aż otrzyma brakujące transakcje

Jak może to wykorzystać złośliwa kopalnia? Otóż może wykopać i pełny blok z transakcjami, ale opublikować jedynie nagłówek. W rezultacie miningu SPV następny blok będzie musiał być pusty... i następny też... itd...

To było ekstremum. W praktyce dużo bardziej sensowny jest atak w którym złośliwy miner opóźnia wysłanie danych o kilkanaście sekund, niepostrzeżenie szkodząc w ten sposób innym minerom, zwiększając odsetek pustych bloków (ale nie u siebie - ten atak szkodzi tylko innym kopalniom) i podbijając w rezultacie ogólne opłaty transakcyjne

Jak temu przeciwdziałać? Jedynym sensownym sposobem jest stworzenie systemu podobnego do #ethereum gdzie a) jest dużo małych i częstych bloków zamiast kilku dużych i rzadkich oraz gdzie b) osierocone bloki są częścią konsensusu i minerzy otrzymują 75% nagrody za ich wykopanie. Ponieważ dzięki tym zabiegom przetwarzanie pełnych bloków nie tworzy istotnych dodatkowych kosztów/opóźnień, to problem miningu SPV nie występuje

Warto też zwrócić uwagę, że mining SPV był już raz przyczyną awarii sieci BTC - w wyniku 51% minerów kopiących bez weryfikacji - wyłącznie na nagłówkach, sieć przyjęła błędny blok powodując rozjazd na dwa łańcuchy. Minerzy kopali inny łańcuch niż reszta węzłów

Więcej informacji na temat tej awarii znajdziecie tutaj:
https://bitcoin.org/en/alert/2015-07-04-spv-mining#cause

Pozdrawiam

#kryptowaluty #bitcoin
  • 10
@Amebcio: Dużo małych i częstych bloków ZWIĘKSZY ilość forków, albo sprawi że największy górnik będzie miał jeszcze większą przewagę. Skoro w BTC potrafi być parę bloków jeden za drugim, gdzie średnia to 1 blok co 10min, to co dopiero gdy blok byłby ustawiony średnio co np 30 sek? Weź się zastanów.
Po ch miner ma dostawać nagrodę za osierocony blok? Dając nagrodę za osierocone bloki zwiększasz tempo generowania monet. Zresztą jak
@Rozjemca35: Ja nie zaprzeczam że częste bloki zwiększają liczbę forków - to całkiem naturalne. Mnie chodzi o to, że w przypadku małych bloków nie ma różnicy pomiędzy zyskownością miningiu SPV a zwykłym kopaniem. W związku z tym nie ma powodu aby kopać w trybie SPV.

Po ch miner ma dostawać nagrodę za osierocony blok?


Aby obniżyć straty wynikające z osierocenia. Dzięki temu można mieć szybsze bloki bez obaw o nadmierną centralizację