Rok temu zastanawiałem się: jaka liczba węzłów w sieci bitcoina jest wystarczająca? Okazuje się, że istnieje kilka różnych punktów widzenia, z których możemy zadać to pytanie, co prowadzi do kilku odpowiedzi:
- Dostatecznie duża, aby zaspokoić popyt klientów SPV na porty połączeniowe. (Simplified Payment Verification; węzły nieprzechowujące całego łańcucha bloków; przyp. tłum)
- Dostatecznie duża, aby uniemożliwić jednostce przytłoczenie sieci nieuczciwymi węzłami Sybil.
- Ponieważ bitcoin nie wymaga zaufania, jedyny węzeł, który ma znaczenie, to ten który prowadzisz ty sam.
Anegdotycznie, zaobserwowałem dwa powszechne argumenty przeciwko prowadzeniu węzłów.
1) Dla entuzjastów, którzy chcą uruchomić węzeł w domu, problemem jest zazwyczaj przepustowość bądź jakość łącza internetowego. Istnieją narzędzie, dzięki którym można te problemy obejść, ale nie wszyscy użytkownicy są administratorami systemów i woleliby oni proste możliwości konfiguracji w kliencie bitcoina pozwalające zdławić zużycie łącza. Przykładowo, to zapytanie o ograniczenie zużycia przepustowości łącza jest otwarte w Bitcoin Core od 4 lat, jednak wierzę, że uda się nam wydać to jako dostępną funkcję w Bitcoin XT.
2) Dla biznesu problem nie leży w kwestii zasobów, instalacji, prowadzenia czy utrzymania węzła, jest on natomiast widoczny w braku oferty opcji indeksowania przez bitcoind (część programu bitcoina odpowiadająca za implementację protokołu bitcoina dla zdalnie wywoływanych procedur RPC; przyp. tłum) Zatem klient biznesowy będzie musiał korzystać z własnego rozwiązania indeksującego – pomysłowe rozwiązania takie jak Insight czy Toshi mogą zadziałać, ale do bardziej wyspecjalizowanego indeksowania potrzebne będzie własne oprogramowanie – i to jest miejsce, gdzie rzeczy robią się drogie. W zależności od wolumenu zapytań i tolerowanych opóźnień, administrowanie instancji bitcoind, oprogramowania indeksującego i jego baz danych może nie mieć sensu – użycie API strony trzeciej będzie prawdopodobnie bardziej opłacalne.
Powtarzającym się argumentem przeciwko powiększeniu maksymalnego rozmiaru bloku w sieci bitcoina jest, że uczynienie tego zwiększy koszt prowadzenia węzłów, przez co wielu operatorów odłączy się od sieci, prowadząc w stronę centralizacji infrastruktury sieciowej. Jest to (mimo bycia spekulacyjną) uwaga słuszna, ponieważ istnieje bezsprzecznie duża liczba węzłów utrzymywanych na słabym sprzęcie, który może nie być w stanie obsłużyć bloków znacznie większych niż dotychczasowe maksimum w postaci 1 megabajta. Jednakże w szerszej perspektywie uważam, że największym kosztem prowadzenia węzła nie jest CPU, RAM czy przepustowość łącza. Największym kosztem jest czas potrzebny na przeskalowanie krzywej uczenia się bitcoina, aby najpierw zobaczyć propozycję wartości w prowadzeniu węzła a później, a później nauczyć się jak go uruchomić i administrować.
Istnieje spekulacyjny kontrargument, że efektem większych bloków byłoby zwiększenie się bazy użytkowników bitcoina poprzez odniesienie się do Problemu Wierności. Prawdopodobnie zwiększyłoby to też liczbę podmiotów, które zdecydowałyby się się na założenie węzła, co przyczyniłoby się w efekcie do decentralizacji sieci. Nie odważę się jednak spekulować na temat tego, który z tych efektów byłby silniejszy: zmuszenie istniejących operatorów węzłów do zamknięcia ich węzłów czy napływ nowych operatorów do ekosystemu.
Jak argumentowałem to już w przeszłości, wartość bitcoina jest częściowo pochodną ograniczonych zasobów fizycznych, które składają się na infrastrukturę sieci i ją zabezpieczają. Większe bloki obsługują większa liczbę transakcji, ale zwiększają też one koszty stałe przepustowości łącza, cykli CPU i przechowywania danych. Poniesienie tych kosztów leży po stronie operatorów węzłów. Prowadzenie węzła niesie ze sobą rzeczywisty koszt, którego nie powinno się ignorować.
Widzę w tej kwestii dwa ścierające się punkty widzenia / cele:
- Powinniśmy priorytetowo traktować decentralizację węzłów i stabilność infrastruktury nawet jeśli spowalnia to rozwój ekosystemu.
- Powinniśmy zwiększać ładowność systemu tak długo jak jest to dla nas wygodne, w celu dostosowania go do wzrostu, którego doświadcza.
Dla mnie jasne jest, że deweloperzy protokołu bitcoina są odpowiedzialni za utrzymanie stabilnej platformy dla ekosystemu. Natomiast mniej jasne jest dla mnie, że mają oni obowiązek go rozwijać czy prosić operatorów węzłów o zwiększenie wydatków w celu obsłużenia większej liczby użytkowników.
Wiele osób twierdzi, że deweloperzy bitcoina powinni dążyć do tego, aby przeciętny użytkownik był w stanie prowadzić swój własny węzeł (w porównaniu do wizji Satoshiego o potężnych serwerowniach w centrach danych). Nawet z tego punktu widzenia, ostatecznie akceptowalne będzie zwiększenie rozmiaru bloków ze względu na spadek cen i wzrost wydajności zasobów, ponieważ nie będzie to „wykluczało ekonomicznie” przeciętnych użytkowników z prowadzenia własnego węzła. W tym wypadku wydaje mi się, że mamy problem, zważywszy na to, że nie ma ustalonego punktu odniesienia dla akceptowalnej wydajności czy wymogów sprzętowych dla prowadzenia węzła. Chciałbym zobaczyć dodatkowe wyjaśnienia ze strony obrońców tego punktu widzenia odnośnie akceptowalnych kosztów prowadzenia węzła i tego w jaki sposób możemy mierzyć światową obniżkę cen sprzętu i przepustowości łącza w celu ustalenia punktu odniesienia, którego możemy użyć do usprawiedliwienia obciążania węzłów dodatkowym zużyciem zasobów.
Próby utrzymania na niskim poziomie kosztów prowadzenia węzła uważam za godne podziwu. Z drugiej jednak strony, jeżeli będziemy w stanie utrzymać wymagania odnośnie zasobów węzłów na poziomie, powiedzmy, tego, co może obsłużyć najnowszy model Raspberry Pi na (przeciętnym w skali światowej) domowym łączu internetowym, nie jestem pewny jak pomocne będzie, jeżeli popyt na inkluzję w blokach poskutkuje opłatami transakcyjnymi, które wykluczą finansowo większą liczbę użytkowników. Innymi słowy, jeżeli koszt bądź rywalizacja w użyciu sieci urośnie do momentu wykluczenia przeciętnego użytkownika z dokonywania transakcji, nie będzie go prawdopodobnie obchodzić, że utrzymują węzeł bardzo niskim kosztem. Sieci drugiej warstwy (L2) z pewnością mogą odegrać rolę w zmniejszeniu obciążeń, ale pamiętajmy, że nawet użytkownicy tych sieci będą musieli ostatecznie uregulować płatność na głównym łańcuchu bloków bitcoina.
Jeżeli podchodzimy do rozmiaru bloków z punktu zużycia zasobów, wygląda na to, że ktoś tak czy inaczej zostanie wykluczony. Pozostanie przy aktualnym rozmiarze bloków wykluczy niewiadomą liczbę użytkowników z dokonywania transakcji, podczas gdy zwiększenie ich rozmiaru spowoduje wykluczenie niewiadomej liczby użytkowników z prowadzenia węzłów. Opcja druga wydaje mi się tą bardziej odpowiednia, ponieważ większa liczba użytkowników wpłynie na rozrost ekosystemu, co zwiększy z kolei jego wartość. W efekcie zwiększy to koszt, który podmioty prowadzące węzły będą gotowe ponieść no i, miejmy nadzieję, zwiększy się też liczba owych podmiotów. Jako operator kilku węzłów, mogę anegdotycznie stwierdzić, że ilość zużywanych przez nie zasobów jest trywialna i z chęcią przyjmę większe obciążenie.
Bitcoin działa ze względu na zachęty wbudowane w system. We wczesnych latach bitcoina, węzły były równoznaczne z kopaczami, tym samym prowadzenie węzła wiązało się z bezpośrednią zachętą finansową, ale nadejście platform wydobywczych zniszczyło ten konkretny aspekt. Podczas gdy niektórzy twierdzą, że prowadzenie węzła w dzisiejszych czasach jest czysto altruistyczne, istnieją ku temu bodźce pośrednie:
- Posiadanie kopii rejestru, którą zatwierdziło się samodzielnie zamiast konieczności zaufania osobie trzeciej, że jest uczciwa co do stanu owego rejestru.
- Chronienie własnej inwestycji w bitcoina poprzez wspieranie sieci.
- Posiadanie lokalnej kopii łańcucha bloków dla szybszych kwerend. Firmy analizujące łańcuch bloków w celu uzyskania szczegółowych danych będą mogły robić to o kilka rzędów wielkości szybciej na lokalnej jego lokalnej kopii niż przy użyciu usług działających przez internet.
- Uzyskanie najlepszej ochrony prywatności – klienty SPV i serwisy internetowe mają najniższą ochronę prywatności, ponieważ polega to na odpytywaniu strony trzeciej o konkretne adresy i transakcje.
Jednakże bezpośredni bodziec finansowy jest bardziej pożądany niż bodziec pośredni. Spotkałem wiele osób sugerujących, że operatorzy węzłów powinni dostawać część opłat za wydobycie, jednak podstawowym problemem jest, aby węzeł był w stanie udowodnić, że jest prawdziwym węzłem przechowującym łańcuch bloków. To dlatego, że łatwo jest sfałszować węzły – weźmy na przykład projekt Pseudonode – jednym z możliwych rozwiązań jest „Proof of Unique Blockchain Storage” Sergio Demian Lernera.
Moglibyśmy bezpośrednio zachęcić węzły poprzez pozwolenie im na udzielanie usług w zakresie danych w zamiana za opłaty. W przyszłości obsługa węzłów może być synonimem obsługi węzłów sieci Lightning, ponownie umożliwiając operatorom węzłów czerpanie bezpośrednich korzyści finansowych z tytułu prowadzenia węzłów. Jako operator węzła sieci Lightning będziesz w stanie zamrozić swoje satoshi (najmniejsza jednostka składowa bitcoina; przyp. tłum) bądź bitcoiny w oparciu o smart contracty w celu zaoferowania kanałów płatności do użytku publicznego. Użytkownicy, którzy będą dokonywać transakcji za pośrednictwem Twojego kanału płatności będą musieli uiścić opłatę transakcyjną, która będzie zbierana bezpośrednio przez Ciebie.
Istnieje wiele powodów, dla których warto uruchomić węzeł bitcoina, ale jest jeszcze wiele do zrobienia, jeżeli chcemy, aby więcej osób węzły te prowadziło. Jedno jest pewne: jeżeli nie prowadzisz pełnego węzła, nie wykorzystujesz w pełni funkcji bitcoina. Możesz dołączyć do finansowej rewolucji kupując węzeł sprzętowy bądź postępując zgodnie z poniższymi instrukcjami!
Tłumaczył: Mateusz Majewski
W razie konieczności zestawienia tłumaczenia z oryginałem: https://blog.lopp.net/to-node-or-not-to-node-/