🇵🇱 Dlaczego czasami dostajesz błąd "Bandwidth limit exceeded"?

in polish •  5 months ago

bandwidth_limit.png

Jeśli zastanawiasz się dlaczego widzisz ten komunikat to znaczy, że prawdopodobnie przekroczyłeś limit dostępnej przepustowości... albo... blockchain Steem zaczął się bronić ;-)

Co to jest bandwidth (przepustowość) i jak to działa?

Steem jest dostępny dla każdego za darmo, tu nie ma opłat za transakcje tak jak w przypadku wielu innych kryptowalut, nie ma tu reklam które wyskakują i próbują nam coś sprzedać, jest wręcz przeciwnie, Steem nas wynagradza i pozwala zarobić prawidziwe pieniądze. W związku z tym, Steem został uzbrojony w pewne mechanizmy obronne które pozwalają na szybką reakcję w przypadku gwałtownego zwiększenia się aktywności w sieci.

Każde konto w zależności od ilości posiadanych STEEM POWER ma nałożony limit na ilość danych które może wysłać i odebrać, im więcej SP posiada, tym większy dostaje limit. Jako dane wysłane lub odebrane uważa się każdą operację, może to być oddanie głosu, śledzenie użytkownika, transakcja, dodanie posta lub komentarza, generalnie każda nasza aktywność.

W przypadku normalnego działania Steem, kiedy nie występuje wzmożona aktywność, np. spowodowana przez boty które masowo głosują na posty, limit przyznany użytkownikowi powinien mu w zupełności wystarczyć na swobodne korzystanie z serwisu. Natomiast w przypadku gdy ruch w Steem zwiększy w krótkim przedziale czasowym, włączy się mechanizm ograniczający globalnie przepustowość dostępną dla wszystkich, co będzie skutkować również tym, że ucierpią wszyscy użytkownicy, a w szczególności nowi, ponieważ ich limit jest zazwyczaj bardzo niski ze względu na małą ilość SP jakie posiadają.

Co zrobić kiedy dostaję "Bandwidth limit exceeded"?

Tak naprawdę to są dwie możliwości, możemy zdobyć dodatkowe SP lub otrzymać je w postaci delegacji od innej osoby, albo po prostu przeczekać aż limit się zregeneruje ;-)

Natomiast, jeśli problemem nie jest bezpośrednio Twoja aktywność, a wzmożona aktywność w Steem to pozostaje Ci tylko poczekać aż obciążenie sieci trochę się zmniejszy i wszystkie limity wrócą do normy. Niestety tak to działa, ktoś psuje a cierpią wszyscy...

Jak wyliczana jest przepustowość Steem

Algorytm do obliczenia maksymalnej przepustowości zapisany jest w kodzie steemd, dokładnie w pluginie witness

r.max_virtual_bandwidth = ( uint128_t( max_block_size ) * uint128_t( r.current_reserve_ratio ) * uint128_t( STEEM_BANDWIDTH_PRECISION * STEEM_BANDWIDTH_AVERAGE_WINDOW_SECONDS ) ) / ( STEEM_BLOCK_INTERVAL * RESERVE_RATIO_PRECISION );

już tłumaczę na polski ;-)

przepustowość_dostępna_w_Steem = ilość_bloków_produkowanych_tygodniowo * maksymalny_rozmiar_bloku * current_reserve_ratio

  • ilość produkowanych bloków tygodniowo - wiemy, że bloki w Steem generowane są co 3 sekundy, tak więc będzie to 20 * 60 * 24 * 7 = 201600
  • maksymalny_rozmiar_bloku - jest ustalany przez TOP 20 witnessów, obecnie jest to 65536 (64kB)
  • current_reserve_ratio - "ilość zapasu", jest to kluczowy element w algorytmie, ponieważ jako jedyny automatycznie zmienia się w czasie w zależności od obciążenia Steem

image.png

Z algorytmu wynika, że co minutę robione jest sprawdzenie czy średni rozmiar produkowanego bloku jest większy niż 25% maksymalnego rozmiaru bloku (65536/4 = 16384), jeśli tak, to current_reserve_ratio jest proporcjonalnie zmniejszany. Parametr ten jest mnożnikiem i przez to ma duży wpływ na całkowity wynik maksymalnej przepustowości w Steem.

Policzmy więc jaka jest dostępna przupustowość blockchain podczas normalnego działania, kiedy średnia wielkość bloków nie przekracza 16384. Wiedząc, że maksymalna do uzyskania wartość current_reserve_ratio wynosi 20000 i jest zdefiniowana w kodzie steemd jako STEEM_MAX_RESERVE_RATIO, możemy wykorzystać ją do wykonania obliczeń,

201600 ilość bloków * 65536 rozmiar bloku * 20000 current_reserve_ratio = 264241152000000

Z tego prostego mnożenia wynika, że wydajność Steem to 264241152000000 bajtów tygodniowo.

image.png

A co z przepustowością użytkownika?

Przepustowość użytkownika zależy od ilości VESTS które posiada oraz maksymalnej przepustowości blockchain którą policzyliśmy przed chwilą. Jeśli wiemy, że całkowite dostępne pasmo dla blockchain Steem to 264241152000000, oraz wiemy, że wszystkich VESTS w platformie jest 406336942450, (wartość total_vesting_shares możemy pobrać z blockchain)

$ curl --silent https://api.steemit.com --data '{"jsonrpc":"2.0", "id":0,"method":"get_dynamic_global_properties","params":[]}' | python3 -m json.tool|grep total_vesting_shares

to w łatwy sposób da się wyliczyć jaka jest przepustowość użytkownika,

przepustowość_użytkownika = vests_posiadane_przez_użytkownika * przepustowość_dostępna_w_Steem / liczba_vests_w_Steem

791764.870035 * 264241152000000 / 406336942450 = 514885159.3697
514885159.3697 / 1024 / 1024 = 491.0327 MB

w moim przypadku będzie to 491MB!

Dla potwierdzenia poprawności wyliczeń, możemy jeszcze sprawdzić wyniki z wartościami na https://steemd.com/@jamzed.

image.png


Jeśli widzisz gdzieś błąd, chcesz coś dodać, zmienić lub po prostu wyrazić opinię, to będę bardzo wdzięczny za każdy komentarz który zostawisz. ;-)


Chcę zostać Witnessem (delegatem) w sieci Steem i wspólnie z Wami mieć wpływ na jej działanie. Jeśli uważasz, że jestem osobą która posiada odpowiednie umiejętności i może się sprawdzić, proszę o Twój głos.

Bardzo dziękuję.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  
Co zrobić kiedy dostaję "Bandwidth limit exceeded"?

Tak naprawdę to są dwie opcje, zainwestowanie w Steem poprzez zdobycie kilku SP, lub przeczekanie aż limit się zregeneruje ;-)

Jest jeszcze trzecia: poprosić inną osobę, by zdelegowała Ci trochę SteemPower.

·

Dzięki @noisy, faktycznie nie było to oczywiste z mojego opisu... poprawione ;-)

Ciekawy artykuł. Do tej pory temat PASMA jakoś mi nie "wypłynął" na stemmit.


Popraw sobie:

przupustowość

·

Dziękuję za zwrócenie uwagi, po chwilowym przemyśleniu "przepustowość" faktycznie brzmi lepiej. ;-)

Ciekawy artyukuł (wczęsniej poczytałem na ten temat po angielsku i nawet myślałem, żeby go przetłumaczyć), mi dzisiaj bandwith spadł do 0, dlatego nie zaniedbuję pisania

Na steemit bardzo mi brakuje treści bardziej technicznych. Infromacji o tym, w jaki dokładnie sposób działa blockchain Steem. Jasne, że można samemu to znaleźć, ale trzeba w to włożyć trochę wysiłku. Jako leniwy człowiek, cieszę się kiedy mogę bez trudu przyswoić sobie wiedzę. Mam nadzieje, że będę mógł poczytać tutaj więcej takich artykułów.

Ostatnio też miałem problem bandwidth z zupełnie nieznanych mi wcześniej powodów. Starałem się to wyjaśnić, ale zawsze pewne zrozumienie gubi się przy tłumaczeniu. Jako, że nie posiadam zbyt dobrego rozeznania w świecie IT bardzo miło przeczytać post, który wyjaśnia trochę funkcjonowanie Steemit i jest po polsku. Rozumiały i zwięzły, a takich postów potrzeba jeszcze więcej :D

Z chęcią przygarnę więcej artykułów!

·

Dziękuję i zapraszam do śledzenia, myślę, że się jeszcze trochę rzeczy pojawi ;-)

Dzięki za wyjaśnienie. Spotkałam raz taki komunikat i się zmartwiłam ale widzę, że to nie jest tragedią :)

·

Cieszę się, że udało mi się przybliżyć temat trochę bliżej ;-)

Kolejny raz dobre wyjaśnienie. Właśnie takie osoby powinny być witnessami :)

·

Dzięki ;-)

Btw. co robicie z takimi przypadkami? @samolot1337 (i @krzychuu18 - prawdopodobnie ten sam człowiek) Wrzuca on kilka razy dziennie ten sam post w intruduceyourself. Używa maskowania (niczym Monero :D) - pomiędzy nimi robi kilka resteemów, aby nie było widać na pierwszy rzut oka, że wkleja ciągle to samo.

·

Btw. co robicie z takimi przypadkami?

W Steem każdy ma takie same możliwości, jeśli czujesz, że jego działania naruszają przyjęte zasady to masz możliwość oflagowania jego postów, przez co straci wynagrodzenie i reputację. Dodatkowo zawsze jest możliwość zgłaszenia nadużyć na https://steemcleaners.org/abuse-report/ i wtedy kilka osób z zespołu @steemcleaners prześledzi jego działalność i podejmie odpowiednie akcje ;-)

Dobry wpis, masz vote na delegata.

·

Dziękuję za zaufanie ;-)

Dziękuję za wyjaśnienie na "poziomie komórkowym", jak dzieciom w trzeciej klasie.

Congratulations @jamzed! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

Award for the number of upvotes
Award for the number of upvotes received
Award for the number of comments received

Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

By upvoting this notification, you can help all Steemit users. Learn how here!

Nie miałem z tym jeszcze problemu, ale od początku zastanawiało mnie, co oznacza ten drugi pasek na steemd. Teraz już wiem:)

Wpadliśmy na ten sam pomysł na artykuł, ale Twój jest zdecydowanie lepszy. Skąd się bierze te algorytmy? W sensie, czy w jakimś dokumencie da się je wyszukać? Patrzyłam w white paper, ale tam nic nie było :(

·

Hej, dziekuje ;-) Twoj post jest bardzo dobry, ja opisalem to troche bardziej od srodka ;-) Wszystkie szczegoly implementacji sa w kodzie zrodlowym steemd, dzieki temu mozna dokladnie sprawdzic jak dziala kazda funkcjonalnosc i to jest wlasnie potega oprogramowania Open Source ;-)

Pozdrawiam!

Dzięki za wyjaśnienie! :)
Wychodzi na to, że nowi użytkownicy powinni też uważać na to gdzie klikają? uważam, że wypadałoby kliknąć w w upvote na artykuł który przeczytałem jak i również jak mi ktoś odpiszę na komentarz ale już mi parę razy wyskoczył komunikat więc może za dużo jednak klikam?
Dzięki raz jeszcze :)

Dałem vote na delegata.Dobry artykuł.
Załapałem się jako świerzak na Bandwidth limit exceeded
Trzeba przeczekać.
Pod tym linkiem zmieniając na swój login https://steemd.com/@piotrj można sprawdzić swój Bandwidth Remaining .

Wczoraj miałem 0 i się zastanawiałem co to jest. W samą porę artykuł. :)