za
Blockchain-Bloat-2

Bitcoin puchnie – Zagrożenie czy chwilowy problem ?

2014-11-10
Techniczne
Zondacrypto gielda kryptowalut 2650

Stale rosnąca ilość transakcji oraz rosnąca ilość użytkowników stawia przed bitcoinem koleje wyzwanie: ilość miejsca jaką zajmuje cała księga transakcyjna. Pełny łańcuch bloków (ang. block chain) to obecnie niemal 30GB i cały czas rośnie rośnie.

 

 

Łańcuch bloków jest niczym innym, jak tylko wielkim zapisem księgowym. Każdy bitcoin który został wydobyty, każda wykonana płatność ma swój zapis. Łańcuch składa się z bloków (ang. block) a każdy blok zawiera transakcje. Transakcja, to nic innego jak zapis mówiący o przekazaniu bitcoinów z jednego adresu na inny. Podobnie jak w księgowości, każda transakcja musi mieć sumę zero, czyli wszystkie użyte w transakcji monety muszą być wydane.

 

Transakcja składa się z wejść i wyjść (ang. input, output). Transakcja może zawierać jedno lub wiele wejść i wyjść. Nasze wyjście jest czyimś adresem, które przez odbiorcę traktowane jest jako jego wejście. Tak więc transakcje łączą się ze sobą i możemy prześledzić los każdego ułamka bitcoina którego otrzymaliśmy, jak również możemy prześledzić jego dalsze losy gdy go wydamy.

 

Wyjątkowymi transakcjami są transakcje wydobycia bloku, które jako wejście mają zapis, że są to nowe monety z konkretnego bloku, a jako wyjście adres kopalni lub (w przypadku P2Pool i kopania „solo”) bezpośrednio górników.

 

Każda transakcja w sieci jest niezależnie weryfikowana w każdym węźle (ang. node) Bitcoin Core (oryginalny klient Bitcoin). Węzeł sprawdza, czy monety użyte jako wejście są faktycznie wolne (ang. unspent coins), czy adresy wyjściowe są poprawne i czy suma obu stron transakcji jest zerowa. Tylko w takim przypadku Core akceptuje transakcję i rozgłasza ją do innych węzłów. Gdy Core otrzymuje kolejny blok jego zawartość jest również weryfikowana i tylko jeżeli wszystkie transakcje w bloku są prawidłowe to blok jest akceptowany i rozgłaszany. Ponieważ każda transakcja jest podpisana kluczem prywatnym (ang. private key) adresu/adresów z którego są monety nie ma możliwości, aby ktoś wydał nasze monety, nie ma też możliwości wykopania więcej monet niż wynosi aktualna nagroda. Takie transakcje czy bloki są po prostu przez sieć odrzucane a węzły które takie informacje rozgłaszają są blokowane (banowane).

 

Obecny protokół reguluje zarówno wielkość pojedynczej transakcji (wielkość w bajtach, wynika ona z ilości wejść i wyjść transakcji) jak również wielkość samego bloku. Dopuszczalna wielkość bloku to 1MB (megabajt) co daje nam przyrost danych w ilości niemal 150MB dziennie. Propozycja Gavina Andersena (głównego developera Bitcoin) zakłada powiększenie rozmiaru bloku, a dzięki temu zwiększenie maksymalnej ilości transakcji na sekundę. Jednakże plan ten zakłada również, że zmiany tego rodzaju wprowadzane będą stopniowo. Rozmiar bloków ma być zwiększany o 50% w dwunastomiesięcznych odstępach.

 

Jak już wspomnieliśmy, rozmiar łańcucha bloków już wynosi obecnie prawie 30 GB i rośnie w coraz szybszym tempie. Sieć Bitcoin skonfigurowana jest tak, aby każdy blok powstawał średnio co 10 minut. Dlatego przy założeniu maksymalnego rozmiaru bloku na poziomie 1 MB, łańcuch bloków jest w stanie urosnąć nawet o 52,5 GB w ciągu jednego tylko roku (525,600 / 10 = 52,560 MB lub ~ 52.5 GB). Jeśli będziemy zwiększać maksymalny rozmiar bloku o 50% każdego roku, wtedy rozmiar łańcucha bloków może zwiększyć się nawet o 3 TB w ciągu 10 lat (52.5 * 1.5^10 ~ 3 TB).

 

Zwiększenie maksymalnej wielkości bloku, spowoduje jeszcze szybsze „puchnięcie” łańcucha. Obecna przepustowość wynosi około 7 transakcji na sekundę, co stawia Bitcoina daleko w tyle za możliwościami procesorów płatności typu Visa czy Mastercard.

Co możemy więc zrobić?

 

Rozwiązania sprzętowe

 

Technologie sprzętowe oraz Internetowe rozwijają się w tempie wykładniczym, zatem biorąc to pod uwagę, powinny być one w stanie dotrzymać kroku zwiększającym się wymaganiom sieci Bitcoin.

 

Obecne dyski twarde przekraczające rozmiar 2 TB są już teraz ogólnodostępne. Kwestią kilku lat jest pojawienie się dysków o rozmiarach wyrażanych w dziesiątkach terabajtów. Wykorzystując zaś bardzo pomysłowe rozwiązania opartego o łańcuch bloków przechowywania danych w chmurze, takich jak Storj (zdecentralizowana chmura), możemy zlikwidować dawne ograniczenia pozwalając użytkownikom przechowywać kawałki łańcucha bloków na swoich komputerach oraz przy pomocy tej samej sieci docierając do potrzebnych w danej chwili części łańcucha.

 

Pozostaje jednak pytanie, jak przemieszczać pakiety danych tej wielkości? Najbardziej wciąż rozpowszechnione dyski twarde, wyposażone w magnetyczne nośniki danych, dysponują ograniczoną prędkością przesyłu danych wynikającą z prędkości obrotowej dysków magnetycznych. Jednakże dyski typu SSD (solid-state drive), zbudowane w oparciu o pamięć flash dysponują prędkością transferu danych znacznie przewyższającą osiągi dysków typu HDD i cały czas prędkość ta rośnie.

 

Ostatnie „wąskie gardło” może tkwić jeszcze w prędkości przesyłowej łącza internetowego. Ta, pomimo niekiedy ograniczającego ją monopolu operatorów telekomunikacyjnych, także stopniowo wzrasta. Routery Wi-Fi będą wkrótce posiadały możliwość bezpośredniego łączenia się ze sobą. Standard łączności bezprzewodowej – 802.11 ac – działający na częstotliwości długiego zasięgu 5 GHz, jest w stanie przesyłać do 1Gb/s.

 

Wraz z “puchnięciem” łańcucha bloków rosną też możliwości technologiczne sprawiając, że nie jest to już “wielki” problem. Jednak czy samo sprzętowe rozwiązanie problemu wystarczy ?

 

Rozwiązania programowe

 

Już sam Satoshi Nakamoto w swoim manifeście przewidział problem puchnięcia łańcucha bloków i zaproponował rozwiązanie tego problemu. Zamiast trzymać całą historię transakcji, zapamiętujemy tylko wolne wejścia (ang. unspent inputs), czyli monety które są możliwe do wydania. Obecnie baza tych monet zajmuje około 600MB czyli 50x mniej, niż cały obecny łańcuch bloków. Podobne rozwiązanie jest już stosowane z powodzeniem w jednej z walut alternatywnych (ang altcoins).

 

Zarówno zwiększenie wielkości bloku jak i wprowadzenie nowych sposobów łączenia się ze sąbą nowych użytkowników (nodów) wymaga wprowadzenia trwałego rozwidlenia (ang. hard fork) w łańcuchu bloków, ponieważ taka zmiana nie jest kompatybilna wstecz. Czyli każdy użytkownik musi wykonać aktualizację swojego portfela. Developerzy i społeczność stara się tego unikać jeśli nie jest to konieczne.

 

Innym rozwiązaniem może być powstająca technologia Factom (wcześniej Notary Chains).

 

Factom to także sieć typu P2P, funkcjonująca w oparciu o połączone ze sobą serwery wykorzystujące protokoły typu BitTorrent. Wszystkie te serwery dokonują wzajemnych, nieprzerwanych audytów, aby upewnić się że każdy z nich działa niezmiennie w oparciu o reguły systemu Factom. Każdy z serwerów za realizację w/w. funkcji nagradzany jest określoną ilością bitmonet. W przyszłości wykorzystywane będą w tym celu sieci takie jak Storj czy SAFE komunikujących się ze sobą według schematu topologii siatki.

 

Tu założenie jest zupełnie inne. Same transakcje (lub dowolne operacje, włączenie zapisem dokumentów czy tworzenie aplikacji lub przetwarzanie danych) prowadzone są poza głównym łańcuchem bloków (w łańcuchach bocznych ang. side chains), a do łańcucha zapisywane są tylko sumy kontrolne kolejnych bloków Factom. Daje to możliwość niemal dowolnej wielkości danych przetwarzanych poza łańcuchem, w dalszym ciągu zapewniając ciągłość zapisów i możliwość ich weryfikacji wstecz.

 

Jak działa Factom? Wszystkie wejścia są hashowane i umieszczane w blokach wejściowych, gdzie stają się „liśćmi” tzw. drzewa merkle. [Dodatkową wiedzę, związaną z tego typu zagadnieniami możecie posiąść analizując Manifest Satoshi Nakamoto, dostępny w polskiej wersji językowej na naszym portalu.] Liście tego typu są z kolei stopniowo hashowane w parach, do momentu aż zespolą się ze sobą do postaci nazywanej korzeniem drzewa merkle. Dane każdej zdecentralizowanej aplikacji wykorzystującej protokół Factom grupowane są wewnątrz swojego własnego bloku wejściowego, który wytwarza swój własny korzeń merkle, z których wszystkie grupowane są wspólnie wewnątrz tzw. Factom-bloku. Korzeń merkle każdej zdecentralizowanej aplikacji, staje się liściem w nowym drzewie. Te są z kolei znowu stopniowo hashowane ze sobą, aby w końcu utworzyć końcowy korzeń merkle. Technologia tego typu zakłada grupowanie danych wewnątrz wspomnianych korzeni, których dopiero końcowe postaci umieszczane są jednocześnie wewnątrz pojedynczego bloku. Każdy Factom-blok dostarcza meta-obrazu wszystkich aplikacji i procesów w czasie, dzięki czemu każdy zainteresowany będzie w stanie pozyskać z niego i zweryfikować wymagane informacje.

 

Opisane technologie na pewno w dużym stopniu mogą zneutralizować problem puchnięcia łańcucha bloków, jednak przed Bitcoinem stoją jeszcze inne problemy do rozwiązania. Sceptycy oskarżają Bitcoina o marnowanie energii zużytej do zatwierdzenia transakcji, jednakże w przeciwieństwie do sposobów funkcjonowania wielu banków, tego typu technologia jest stopniowo coraz bardziej wydajna oraz dzięki łańcuchom bocznym może spełniać coraz więcej funkcji przy zużyciu takiej samej ilości energii co w przypadku banków nie jest możliwe.

 

Przypominamy, że Bitcoin nadal jest technologią w wersji BETA, czyli w wersji testowej. Cały czas trwają prace nad jej udoskonaleniem i eliminacją problemów które pojawiają się w trakcie funkcjonowania tego “eksperymentu”. 

 

Fotografia: Flickr.com

 

Wszelkie kopiowanie, dystrybucja, elektroniczne przetwarzanie oraz przesyłanie zawartości ze stron bitcoin.pl wymaga uprzedniej zgody portalu.

 

Bitcoina i inne kryptowaluty kupisz w prosty i bezpieczny sposób na giełdzie zondacrypto.

Tagi

Newsletter Bitcoin.pl

Więcej niż bitcoin i kryptowaluty. Najważniejsze newsy i insiderskie informacje prosto na Twój email.

Dbamy o ochronę Twoich danych. Przeczytaj naszą Politykę Prywatności