Ważna aktualizacja!

Chia Notatka Redakcyjna [2024-02-29]: Zaktualizowaliśmy ten blog, aby odzwierciedlić problem z wyborem nieukończonego bloku i zalecamy powrót do wersji 2.1.4.

Odkryliśmy problem z wyborem nieukończonego bloku w wersji 2.2.0, który może powodować uszkodzenie bloków w lokalnej bazie danych dotkniętego użytkownika. Zalecamy użytkownikom powrót do wersji 2.1.4.

Problem:
Wersja 2.2.0 może potencjalnie spowodować, że twój węzeł będzie błędnie banował swoich peerów lub zostanie zbanowany przez nich.

Zalecane działanie:
Trwają prace nad dostarczeniem narzędzia do weryfikacji zsynchronizowanych bloków w lokalnej bazie danych oraz aktualnej kopii zapasowej bazy danych Chia (zweryfikowanej tym narzędziem) do pobrania. Powinieneś pobrać tę migawkę bazy danych, jeśli twój węzeł nie będzie w stanie zsynchronizować się lub pozyskać peerów. Powiadomimy cię, gdy oba elementy będą dostępne do użycia.


Wersja 2.2.0 klienta referencyjnego Chia

...jest teraz dostępna do pobrania!

Zalecamy wszystkim przeprowadzenie aktualizacji.


Ta aktualizacja zawiera szereg nowych funkcji i ulepszeń, które podzieliliśmy na trzy kategorie:
1. Ulepszenia w Farmieniu i Portfelu
2. Ulepszenia Sieciowe
3. Narzędzia dla Deweloperów

Ulepszenia w Farmieniu i Portfelu

  1. Udoskonalony protokół zbieracza
       - Proces tworzenia plotów na Chia stał się znacznie bardziej efektywny od wczesnych dni sieci, gdy ChiaPoS był jedyną dostępną opcją. Dzisiaj istnieje wiele konkurencyjnych programów do plotowania, co stworzyło zdrowy ekosystem. Farmienie na Chia również znacznie się poprawiło dzięki wdrożeniu zdecentralizowanego poolingu.
       - Chociaż niektóre plottery zrezygnowały z oficjalnego protokołu poolingu na rzecz modelu własnego, korzystającego z plotterów, farmerów i zbieraczy o zamkniętym kodzie źródłowym, udało się poprawić protokół zbieracza Chia. To ułatwi współpracę tych zamkniętych systemów z referencyjnym farmerem, umożliwiając im pobieranie opłat deweloperskich bez wpływu na zdecentralizowanie Chii. To powinno być dużym sukcesem dla farmerów, pooli i ogólnego ekosystemu Chia.
  2. Zwiększone wykorzystanie bloków
       - Od uruchomienia głównego łańcucha bloków Chia trzy lata temu, wykorzystanie bloków było ograniczone do 50%. Głównym powodem było zapewnienie, że niskoprądowe węzły, takie jak Raspberry Pi, będą w stanie nadążać za siecią.
       - Z czasem dodaliśmy szereg optymalizacji, które ułatwiają tym systemom pozostanie zsynchronizowanym. Dzisiaj jesteśmy pewni, że możemy zacząć zwiększać wykorzystanie bloków bez utraty wielu (lub możliwe, że żadnego) węzła. Pierwszy krok w tym kierunku został podjęty w tej aktualizacji, gdzie dodamy skromny wzrost do 60%.
       - Planujemy stopniowe zwiększanie tego wykorzystania, aż osiągniemy narzucone konsensusem 100%. Wraz ze wzrostem wydajności bloków wzrośnie liczba transakcji na sekundę (TPS) sieci, a także średnie opłaty, gdy pulpa pamięci osiągnie wystarczającą ilość transakcji, aby wypełnić blok. Kiedy wskaźnik wypełniania osiągnie 100%, maksymalne TPS sieci wyniesie około 40.
    3. Ulepszona logika mempoolu
       - W kontekście ostatniego wpisu na blogu każdy węzeł może wybierać, jakie transakcje chce uwzględniać, tworząc blok. Większość węzłów używa jednak domyślnej logiki mempoolu, która powinna maksymalizować opłaty blockchaina wypłacane farmerowi.
       - Teraz, gdy blockchain doświadcza trwałej presji opłat, zidentyfikowaliśmy pewne przypadki, w których możemy poprawić logikę wyboru transakcji. Na przykład w rzadkim przypadku reorganizacji, jeśli ostatni blok nie był blokiem transakcyjnym, mempool nie był aktualizowany aż do wystąpienia następnego bloku transakcyjnego. Począwszy od wersji 2.2.0, pełny węzeł natychmiast zaktualizuje mempool, gdy wystąpi reorganizacja.
       - Poprawiliśmy również domyślny algorytm wypełniania bloku. Wcześniej węzeł wypełniał nowy blok, wielokrotnie wybierając z
     mempoolu transakcję o najwyższym priorytecie. Gdy następna transakcja miała zapełnić blok, węzeł uznawał blok za zakończony i przesyłał go do sieci.
       - To było nieefektywne w niektórych przypadkach. Na przykład, jeśli blok był mniej niż w połowie pełny, ale następna transakcja w kolejce była wystarczająco duża, aby przekroczyć pojemność bloku, węzeł przestawał szukać kolejnych transakcji. W rezultacie blok był wypełniony znacznie poniżej pojemności, chociaż mógł pomieścić wiele mniejszych transakcji.
       - Nowy algorytm wypełniania bloku stara się znaleźć równowagę, wypełniając bloki efektywnie, jednocześnie ostrożnie dobierając transakcje, aby nie zajmować zbyt dużo czasu.
    4. Ulepszone synchronizowanie portfela
       - Portfele korzystające z protokołu portfela mogą teraz synchronizować stan monet efektywnie w partiach, zamiast pobierać cały stan w jednej odpowiedzi.


Ulepszenia Sieciowe

1. Ochrona przed reorganizacją dla zbędnych plotów
   - Usprawniliśmy pełną komunikację węzła, która jest rozpowszechniana w sieci, co powinno skutkować mniejszą ilością reorganizacji.
   - Farmerzy nigdy nie powinni przechowywać wielu kopii tego samego plotu, nawet korzystając z wielu pełnych węzłów (co również nie jest zalecane). W takim przypadku, gdy w tej konfiguracji znajdowany jest zwycięski dowód, każdy węzeł przesyłałby blok zawierający dowód do sieci, ale timelordy zainfuzowałyby tylko jeden z nich. W rzeczywistości zbędna przestrzeń tworzy koszt alternatywny, który prowadzi do obniżonych nagród: przestrzeń zajmowana przez zbędny plot mogła zostać wypełniona unikalnym plotem, co dałoby wyższe nagrody.
   - Pomimo tego wytycznego czasami farmerzy kopiują swoje ploty na zbędne pełne węzły. W takim scenariuszu każdy węzeł przechowuje unikalną kopię mempoolu. W związku z tym, gdy zbędni farmerzy tworzą blok transakcyjny z tym samym dowodem, wynikające bloki mogą się różnić. Ze względu na sposób propagacji bloku, każdy timelord może widzieć tylko jeden z bloków. Jeśli różni timelordowie nasycają różne bloki tymi samymi dowodami, tymczasowo powstaną konkurencyjne łańcuchy bloków.
   - Ta sytuacja nie stanowi zagrożenia dla bezpieczeństwa sieci. Tak naprawdę, zazwyczaj rozwiązuje się to jednym blokiem później w reorganizacji. Jednak reorganizacje są uciążliwe dla farmerów, którzy muszą ponownie zwalidować ostatnie bloki. Lepszym rozwiązaniem byłoby unikanie reorganizacji.
   - Począwszy od wersji 2.2.0, węzły będą rozpowszechniać każde wystąpienie niekompletnego bloku w całej sieci. Timelordy zobaczą obie kopie bloków, pozwalając im na deterministyczne wybranie, który zainfuzować. Ponieważ tylko jedna kopia zostanie dodana do blockchaina, reorganizacja nie wystąpi.
   - Należy zauważyć, że ta aktualizacja dotyczy tylko jednego rodzaju reorganizacji; inne są wciąż możliwe, a nawet normalne.
2. Singleton Fast-Forward
   - To rodzaj agregacji jednorodnego wydatku, który będzie używany tylko wtedy, gdy wydatek będzie zawierał pewne właściwości, na przykład gdy skrót pułapki singletona nie zostanie zmieniony przez wydatek. Fast-forward będzie zatem najbardziej przydatny przy wydatkach orakularnych. Dodano go w dwóch częściach:
     - chia_rs PR #267
     - chia-blockchain PR #16919


Narzędzia dla Deweloperów

1. Testnet11
   - Zobowiązaliśmy się utrzymywać publiczną sieć, gdzie deweloperzy mogą testować nowe funkcje. Przez ostatnie dwa lata była to testnet10. Chcemy, aby proces synchronizacji węzła testnet pozostał szybki i łatwy. Jednak baza danych testnet10 z biegiem czasu znacznie wzrosła. Z tego powodu kilka miesięcy temu wprowadziliśmy testnet11 jako przyszłą sieć zastępczą.
   - Nadszedł czas, aby wycofać testnet10. Począwszy od wersji 2.2.0, testnet11 będzie domyślną siecią stosowaną podczas uruchamiania "chia configure --testnet true". Zachęcamy wszystkich deweloperów do korzystania z testnet11, jeśli jeszcze tego nie robią.
   - Kontynuujemy utrzymanie timelordów dla testnet10 przez miesiąc po wydaniu wersji 2.2.0. Następnie nie będziemy już obsługiwać starej sieci. Oczywiście, ponieważ testnet10 to publiczny blockchain, każdy może uruchomić timelorda i farmera, aby utrzymać sieć przy życiu, jeśli taka jest wola.
   - Aby uzyskać więcej informacji na temat uruchamiania węzła testnet, zapoznaj się z naszą dokumentacją.
2. Stałe połączenia peerów
   - Teraz możesz łączyć się z jednym zestawem równoczesnych peerów za każdym razem, gdy uruchamiasz węzeł. Może to być przydatne w różnych sytuacjach, na przykład podczas łączenia się z prywatnym testnetem, gdzie znane są wszystkie peery. Zobacz naszą dokumentację dla więcej informacji. Szczególne podziękowania dla Felixa Bruckera za stworzenie tej funkcji!
3. Ulepszone logowanie
   - Poprawiliśmy nasze logowanie w kilku obszarach, w tym gdy mempool jest organizowany, oraz podczas ostrzeżeń o walidacji. Nowe logi powinny pomóc deweloperom w ich wysiłkach debugowania.
4. Profil blokowania
   - Dodaliśmy nowy profil specjalnie dla blokowania. Dotychczas dostępny był tylko profil całego zadania pełnego węzła. Nowy profil będzie pomocny podczas debugowania w przypadkach, gdy walidacja bloku trwa dłużej niż dwie sekundy.
5. Dane dodatkowe aggsig dla pełnego węzła
   - Pełny węzeł RPC teraz pozwala na żądanie dodatkowych danych wymaganych dla warunku aggsig_me. Ułatwia to deweloperom tworzenie sygnatur, które działają na testnetach, symulatorach, mainnet i nawet innych forkach Chia.
6. Ulepszenia w odpowiedzi get_offer_summary
   - Przy użyciu portfela RPC get_offer_summary, "dodatki" i "usunięcia" zostaną teraz uwzględnione w odpowiedzi. Pomoże to portfelom określić, czy oferta jest anulowana czy zaakceptowana, dając im możliwość porównania wyników RPC z identyfikatorami monet dla dodatków i usunięć. Szczególne podziękowania dla Mike White za stworzenie tej funkcji!
7. Weryfikuj sygnatury wygenerowane za pomocą kart Tangem
   - RPC weryfikujący sygnaturę portfela ma teraz zdolność do weryfikowania sygnatury wygenerowanej kartą Tangem. Nie było to wcześniej możliwe, ponieważ Tangem używał innej łamigłówki do podpisu niż ta używana przez referencyjny portfel. Szczególne podziękowania dla Marina Quevedo za stworzenie tej funkcji!

chia liść


spis zmian:

Wersja 2.2.0 klienta referencyjnego Chia

...jest teraz dostępna do pobrania! Zalecamy wszystkim przeprowadzenie aktualizacji.


Ta aktualizacja przynosi szereg nowych funkcji i ulepszeń, podzielonych na trzy kategorie:


  1. Ulepszenia w Farmieniu i Portfelu
  2. Ulepszenia Sieciowe
  3. Narzędzia dla Deweloperów


Dzięki użytkownikowi @bhorvitz za znaczną pomoc w debugowaniu problemu wydajności podczas przeszukiwania bazy danych monet chia coin.


Naprawione:

- Poprawiono obliczenia kwoty TX w menedżerze handlu (naprawia #16842).

- Subskrybowano DIDs, które trafiają do portfela (naprawia #17242).

- Usunięto zduplikowaną opcję skrótu z polecenia make_offer (naprawia #17371).

- Dodano SerializedProgram.to() w celu uproszczenia kodu.

- Dodano informacje dla setuptools_scm w archiwach git.

- Naprawiono niezgodność typu Optional[bytes] z bytes w wallet/conditions.py.

- Poprawiono literówkę w dokstringu funkcji get_coin_record_by_name (dzięki @Abakrombie).

- Poprawiono linki w pliku README (dzięki @Abakrombie).

- DL: Nie zezwala na lustra z pustymi adresami URL (naprawia #16920).

- DL: Poprawiono dane wejściowe dla polecenia CLI add_missing_files (naprawia #17039).

- DL: Użyto kolejki odsubskrybowania do złagodzenia blokady subskrypcji.

- DL: Użyto logiki blokowania Datalayer dla nieudanych pobierań HTTP.

- Rozszerzono testy mempoolu dla timelocków i poprawiono kody błędów.

- Rozszerzono rozmiary pomiarowe dla sprawdzania plotu o wartość dla większych rozmiarów K (dzięki @neurosis69).

- Dodano kilka brakujących adnotacji typu.

- Zalogowano ciąg nagłówka_hash przy długich ostrzeżeniach walidacyjnych.

- Naprawiono sortowanie dla kluczy słownika zarówno bytes/xch.

- Naprawiono problem, w którym polecenie chia wallet did transfer źle traktowało typ opłaty.

- Naprawiono komunikat punktu sygnalizacyjnego dla zdalnych zbieraczy z dużą liczbą pul.

- Cofnięto wstawianie do pamięci podręcznej rekordu BlockRecord, gdy baza danych nie powiedzie się.

- Ostrzeżono przed uruchamianiem skryptu install-plotter.sh jako root.

  

Dodane:

- Wsparcie dla zbieraczy nagradzanych przez farmę osób trzecich (Chip-22).

- Singleton szybkiego przewijania do przodu.

- Weryfikacja sygnatur p2 delegated conditions i dodanie nowego trybu podpisywania dla kart Tangem (dzięki @MarvinQuevedo).

- DL: Dodano akcję upsert.

- DL: Dodano obsługę generowania i weryfikowania dowodów na temat Datalayer Proofs of Inclusions get_proof i verify_proof.

- Poprawiono przejrzystość działania pełnych węzłów i to, gdzie spędzają czas, dodając dodatkowe logowanie Mempool.

- Dodano funkcję profilowania tylko walidacji bloku.

- Dodano flagę --override do polecenia make_offer.

- Dodano pełny węzeł RPC get_aggsig_additional_data, aby uzyskać dodatkowe dane aggsig.

- Dodano wysokość fork i rolled_back_records do zdarzenia blokowego dla metryk.

- Rozszerzono dzienniki czasowe walidacji bloku, aby mierzyć tylko CLVM i warunki.

- Dodano obsługę definiowania listy par pełnych węzłów do połączenia (dzięki @felixbrucker).

- Dodano wstępne wsparcie dla uzyskiwania stanów monet


 wsadowo.

- Poprawiono obsługę mempoolu podczas reorganizacji, gdy szczyt to blok bez transakcji.

- Dodano dodatki i usunięcia do odpowiedzi API get_offer_summary (dzięki @mikehw).

- Poprawiono obsługę UnfinishedBlocks.

- Dodano stałe testnet11 do konfiguracji, jeśli brakuje podczas konfigurowania do uruchomienia na testnet.

- W tej wersji dodano kilka nowych tłumaczeń. Dzięki WNFT, advlive, hezoushe.

  

Zmienione:

- Optymalizacje reorganizacji.

- Aktualizacja chia_rs do wersji 0.4.1.

- Rozpoczęto eliminowanie nazwy coin_solutions w strukturach JSON.

- Lekka uproszczenie funkcji get_min_fee_rate().

- Usunięto coin_solutions z SpendBundle całkowicie.

- Używano typów rust dla VDFInfo, VDFProof i ClassgroupElement.

- Usuwano ciągle wpisy z seen_unfinished_blocks.

- Przeniesiono narzędzia/legacy_keyring.py do chia/legacy/keyring.py.

- Rust proof-of-space, reward chain and foliage types.

- DL: Skompresowano wyniki funkcji get_keys_values przez hash.

- Zastąpiono wartość hardcoded dla db_readers (dzięki @neurosis69).

- Używano typów rust dla slotów, SubEpochSummary i SubEpochData.

- Zaktualizowano domyślny testnet do testnet11.

- Usunięto starą metodę obejścia błędu w wersji 1.1.4 i wcześniejszej.

- Używano rust implementacji SerializedProgram.

- Przeprojektowano logikę wypełniania bloku, aby wypełniać bloki większą liczbą SpendBundles (transakcji).

- Poprawiono literówkę w logowaniu.

- Zwiększono wskaźnik wypełniania bloków farmera do 60%.

- Wymuszono użycie indeksu coin_puzzle_hash do uzyskiwania informacji o niepotwierdzonych pieniądzach dla puzzle_hash.


Zmiany w interfejsie graficznym (GUI):

- Naprawiono kilka problemów związanych z plotowaniem (Chia-Network/chia-blockchain-gui#2245, Chia-Network/chia-blockchain-gui#2253).

- Dodano możliwość ustawienia opłaty przy użyciu Wallet Connect createOfferForIds (dzięki @Ganbin).



Źródło: Oficjalna strona CHIA.