[Wise] Nieplanowany przestój. Trwają pracę naprawcze. Czy z powodu takich błędów Wise będzie cały czas padać?

W ostatnich 12h program obsługujący requesty użytkowników Wise napotkał 2 niespodziewane błędy:

Pierwszy z błędów skutkował zablokowanie przetwarzania kolejnych blocków. Ostatni przetworzony block miał numer 23643143 i miał miajsce 2018-06-25T22:23:30 (UTC).

Wszystkie requesty użytkowników do konta użytkownika @noisy wysłane po tym czasie mogły napotkać trudności w przetworzeniu.

Obecnie kolejne blocki i requesty teoretycznie są już przetwarzane, jednak zauważono problem z niespodziewanym błędem Delegator had no such ruleset.

Trwają pracę naprawcze

Obecnie pracujemy nad zdiagnozowaniem problemu.

fixin_wise.gif Silicon Valley, Optimal Tip-to-Tip Efficiency

Zostanie wydany stosowny komunikat, gdy uznamy, że wszystko działa już stabilnie


Decentralizacja w służbie ludzkości

Korzystając z okazji, chciałbym wspomnieć co nieco na temat tego w jaki sposób Wise jest zbudowany. Wszakże mógł zrodzić się niepokój, że takie błędy mogą w przyszłości powodować przestoje w działaniu Wise.

Zacznijmy więc od podstaw:

Wise to protokół

Wise to nie tylko projekt czy program, lecz przede wszystkim protokół, tj. ustandaryzowany sposób komunikacji. Jak już zapewne zauważyliście, komunikacja ta pomiędzy użytkownikami i odbywa się za pośrednictwem narzędzi przez nas przygotowanych.

Jak miałem okazję wspomnieć w jednym z ostatnich komentarzy, cała ta komunikacja odbywa się w sposób transparetny.

Przeanalizujmy to jak działa protokół, na przykładzie użytkownika kont @noisy i @assayer.

Fragmenty zaznaczone na czerwono, to fragmenty w których następuje komunikacja pomiędzy noisy i assayer za pośrednictwem blockchainu Steem.

  1. noisy postanawia stworzyć pełnomocnictwo dla assayer, pozwalające głosować assayer z konta noisy.

  2. noisy za pomocą programu Wise CLI umieszcza specjalny wpis w blockchainie Steem[1], który precyzuje reguły wedle których program Wise CLI na komputerze noisy będzie zgadzał się lub nie zgadzał na oddanie głosu na czyjąś prośbę

  3. Pewnego razu assayer postanawia skorzystać z przydzielonego mu pełnomocnictwa i chce zagłosować z konta noisy na jakiś wpis

    1. assayer może nie pamiętać, jakie pełnomocnictwo mu przydzielono, dlatego może skorzystać z narzędzia voter-page (np. za pomocą strony https://wise.vote/), by dowiedzieć się jakie obecnie ma pełnomocnictwa od wskazanej osoby
    2. assayer umieszcza w blockchainie inny specjalny wpis[[link się pojawi jak steemD zacznie znowu działać]](), w którym precyzuje:
      1. kogo prosi o swój głos, np. użytkownika noisy
      2. na jaki wpis chciałby by został oddany głos
      3. z jaką mocą taki głos powinien zostać oddany
  4. noisy chcąc automatycznie odpowiadać na requesty zdefniniowanych przez niego osób, posiada na swoim komputerze uruchomiony program Wise CLI w trybie tzw. daemona (czyli program jest włączony cały czas).

    1. Wise CLI użytkownika noisy analizuje wszystkie kolejne nowe blocki blockchaina Steem, w celu znalezienia requestów skierowanych do niego
    2. Gdy Wise CLI znajdzie request skierowany do użytkownika noisy, sprawdza on, czy ów request spełnia zdefiniowane reguły.
      1. Jeżeli request spełnia zdefiniowane reguły, oddawany jest głos, który dodatkowo zawiera informacje[[link się pojawi jak steemD zacznie znowu działać]](), które mówią o tym na podstawie jakiego requesta został ten wpis oddany
      2. Jeżeli request nie spełnia zdefiniowanych reguł, głos nie jest oddawany, natomiast do blockchaina Steem zapisywana jest informacja[[link się pojawi jak steemD zacznie znowu działać]]() mówiąca o tym, dlaczego głos nie został oddany

Co w takim przypadku może się zepsuć?

Cały Wise?

Na pewno przypadkiem, w którym może się zepsuć cały Wise, jest przypadek w którym następuje awaria blockchainu Steem. O ile zdarza się nie rzadko… że awarię zalicza strona internetowa Steemit, to blockchain Steem w swojej historii (wedle mojej wiedzy) awarii skutkującej wstrzymaniem generowania blocków nie miał.

Innym przypadkiem, w którym cały Wise może się zepsuć jest przypadek w którym następuje aktualizacja zachowania sieci Steem, tj. wystąpienie tzw. hardforka blockchainu Steem. Hardforki są planowane i można się do nich wcześniej przygotować, więc kłopotów da się uniknąć.

Wise CLI poszczególnego użytkownika

Dwa błędy opisane na początku tego wpisu, są przykładem błędów, które mogą uniemożliwić działanie Wise u niektórych użytkowników. Jeżeli kilku użytkowników zdecyduje się tworzyć pełnomocnictwa Wise dla innych użytkowników, będzie to oznaczać, że każda z tych osób, będzie musiała mieć skonfigurowany i uruchomiony program Wise CLI (w późniejszym czasie zostanie stworzony tzw. Wise Portal, który będzie mógł świadczyć usługi hostowania takich programów dla osób trzecich).

Jeżeli błąd programu Wise CLI wystąpi tylko u jednego użytkownika, nie wpływa to na działanie Wise CLI u innych użytkowników.

Czy Wise CLI danego użytkownika działa?

W niedalekiej przyszłości zostanie dodana funkcjonalność pozwalająca stwierdzić status daemona danego delegatora. Stworzenie funkcjonalności udostępniającej takie informacje, będzie wymagało stworzenia osobnego serwisu, który będzie agregował tzw. heartbeat (bicie serca) daemonów poszczególnych użytkowników (chcemy uniknąć spamowania co 3 sekundy blockchainu Steem, że dany daemon działa).

Mając do dyspozycji taki Status Page, inne narzędzia (np. Voter Page, czy przeglądarkowa wtyczka) będą mogły na bieżąco sprawdzać status danego użytkownika, dzięki czemu osoba zlecająca głos będzie wiedziała, czy faktycznie ma do dyzpozycji dany głos… czy też jednak nie.

Cel

Naszym celem jest stworzenie oprogramowania, która będzie umożliwiało funkcjonowało sieci Wise w maksymalnie zdecentralizowany sposób. W naszej ocenie tylko taki sposób jest w stanie zapewnić bezpieczeństwo użytkowników oraz w dłuższej perspektywie, stabilność całej sieci.

To m.in. z tego powodu, całe tworzone przez nas oprogramowanie jest otwarto-źródłowe. Tworzenie oprogramowania uruchamianego w środowisku rozproszonym jest jednak znacznie trudniejsze. Np. w momencie znalezienia i naprawienia błędu, by dany daemon mógł poprawnie funkcjonować z resztą sieci, będzie musiał on zostać zaktualizowany przez daną osobę, a także by cała sieć działa poprawnie, przez wszystkie osoby.

To właśnie dlatego wystartowaliśmy Wise tworząc pełnomocnictwa na razie tylko z jednego konta. Chcemy bowiem najpierw rozwiązać większość błędów, by w przyszłości nie zmuszać innych delegujących do ciągłych aktualizacji spowodowanych błędami.

Chcielibyśmy jeszcze raz podziękować całej polskiej społeczności za pomoc w testowaniu Wise we wczesnym stadium :)


Edit: Project Wise jest już dostępny pod adresem https://wise.vote/