­čçÁ­čç▒ Dlaczego czasami dostajesz b┼é─ůd "Bandwidth limit exceeded"?

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.

  • wejd┼║ na stron─Ö https://steemit.com/~witnesses
  • przewi┼ä na sam d├│┼é tabeli
  • wpisz m├│j nick jamzed w polu formularza i kliknij przycisk VOTE

Bardzo dzi─Ökuj─Ö.

H2
H3
H4
3 columns
2 columns
1 column
24 Comments