Wydano Bitcoin Core 24.0: oto co nowego w PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Wydano Bitcoin Core 24.0: oto co nowego

Nowa wersja oryginalnego oprogramowania Bitcoin uruchomiona przez Satoshi Nakamoto w 2009 roku został wydany.

Nad Bitcoin Core 24.0 pracowało 112 programistów przez około siedem miesięcy, aby wprowadzić namacalne ulepszenia portfela Bitcoin Core, komunikacji peer-to-peer (P2P), graficznego interfejsu użytkownika (GUI) i wielu innych.

W tym artykule omówiono niektóre z głównych zmian.

Aktualizacje portfela

Początkowa obsługa Miniscript

Bitcoin Core 24.0 wprowadza obsługę Miniscript poprzez rozszerzenie myć() deskryptor wyjściowy. Chociaż jest to początkowa i podstawowa integracja, posunięcie to toruje drogę do wdrożenia bardziej złożonych skryptów w Bitcoin w prostszy – i bezpieczniejszy – sposób.

miniskrypt można traktować jako ramy (lub szablony) dla Skrypt Bitcoin, natywny język programowania Bitcoina. Bitcoin Script jest odpowiedzialny za włączenie wszystkich funkcji programistycznych dostępnych dla Bitcoin, w tym na przykład być może najprostszą z nich: określenie, kto może wydać daną monetę. W przypadku każdej transakcji Bitcoin nadawca żąda adresu odbiorcy i na podstawie tych informacji tworzy skrypt, który blokuje wysyłane bitcoiny w taki sposób, że tylko odbiorca będzie mógł je wydać. Chociaż dość łatwo jest konstruować proste skrypty, takie jak powyższe, za pomocą Bitcoin Script, im bardziej złożony jest skrypt, tym większa szansa na błąd ludzki. W tym miejscu do gry wkracza Miniscript.

Miniscript pozwala na pisanie podzbioru skryptów Bitcoin w formacie zbudowany droga. Umożliwia między innymi analizę, kompozycję i podpisywanie ogólne, co pozwala programistom na bezpieczniejsze pisanie zaawansowanych skryptów. Innymi słowy, Miniscript „zawiera” pewną funkcjonalność wstępnie ustawionych skryptów Bitcoin do oczekiwanego wzorca zachowania, ograniczając ewentualne ryzyko, ponieważ nieoczekiwane zachowanie jest zminimalizowane. W praktyce zapewnia programistom „zestaw narzędzi” do majsterkowania i tworzenia zaawansowanych i złożonych skryptów dla Bitcoin, zamiast konieczności robienia tego wszystkiego ręcznie za pomocą Bitcoin Script.

Począwszy od Bitcoin Core 24.0, użytkownicy mogą teraz tworzyć portfel zawierający skrypt Miniscript, tworzyć adresy dla tego portfela i finansować je bitcoinami. Wydatki z tych adresów nie są jeszcze obsługiwane przez portfel Bitcoin Core, co oznacza, że ​​portfele obsługujące Miniscript na Bitcoin Core są na razie tylko do oglądania.

Niezmienne transakcje

Wprowadzono nowy RPC, Wyślij wszystko, która pozwala użytkownikom wydawać w całości określone niewykorzystane wyniki transakcji (UTXO). RPC wyśle ​​kwotę przechowywaną w określonych UTXO do jednego lub większej liczby odbiorców bez generowania reszty. (Domyślnie, Wyślij wszystko wyda każde UTXO w portfelu.)

Takie zachowanie może być pożądane w kilku sytuacjach. Po pierwsze, oczywiście użytkownik może chcieć opróżnić swój portfel. Wywołanie nowego RPC z domyślnymi konfiguracjami zrobi to w łatwy sposób. Po drugie, użytkownik może chcieć poprawić swoją prywatność, rezygnując ze zmian.

Zmień adresy są trudne, ponieważ użytkownicy często tracą orientację, skąd pochodzą i jako tacy mogą mieszać je z innymi UTXO jako dane wejściowe w przyszłej transakcji. Stanowiłoby to zagrożenie dla prywatności ze względu na heurystyka własności wspólnych danych wejściowych, szeroko stosowana przesłanka w analizie łańcucha, która zakłada, że ​​wszystkie dane wejściowe w transakcji należą do tego samego użytkownika. W przykładzie danych wyjściowych zmiany użytkownik tworzyłby to łącze, skutecznie ryzykując deanonimizację wielu swoich monet, ponieważ analityk łańcucha byłby w stanie zgrupować niektóre adresy tego użytkownika jako portfel.

Płatność niezmienna rozwiązuje ten problem, tworząc transakcję, która wydaje całość wybranych UTXO. Ponieważ nie ma zmian, użytkownik nie może popełnić błędu, o którym mowa powyżej. Co więcej, niezmienna płatność wprowadza analityka sieciowego w uzasadnioną wątpliwość, zastanawiając się, czy nowe wyjście jest własnością tego samego podmiotu, który wysłał płatność (zwykły przepływ środków na nowy adres), czy też faktycznie jest teraz własnością innego użytkownika.

Zmień losowanie danych wyjściowych, aby uniknąć pobierania odcisków palców

Jak wyjaśniono powyżej, zmiany danych wyjściowych mogą być wyciekiem prywatności. Podczas Wyślij wszystko całkowicie ogranicza użycie adresu zmiany, w rzeczywistości będzie kilka razy, gdy użytkownik będzie posiadał UTXO o dokładnej wielkości płatności, która musi zostać wykonana. Zapewnienie, że obserwator nie może wykryć, które z wyjść jest adresem zmiany, pomaga użytkownikowi zyskać trochę prywatności, ponieważ nie będzie trywialne powiązanie nowo utworzonego adresu (zmiana danych wyjściowych) z teraz wydanymi danymi wejściowymi do tej transakcji .

Zwykle, gdy nie ma UTXO z dokładną kwotą płatności, większość portfeli i użytkowników intuicyjnie wybiera ten, który jest najbliższy tej liczbie. Dzięki temu obserwator obserwujący blockchain może zobaczyć, które wyjście to płatność (większa), a które reszta (mniejsza). Niesie to za sobą wiele z wyżej wymienionych zagrożeń.

Aby zmniejszyć prawdopodobieństwo, że obserwator może wyróżnić dane wyjściowe zmiany i adresy użytkowników klastra, Bitcoin Core losuje teraz wartości wyjściowe zmian.

Począwszy od wersji 24.0, portfel Bitcoin Core wybierze losową liczbę pomiędzy wielkością płatności a trzykrotnością wielkości płatności. Ten numer poinformuje o wyborze UTXO do wydatków. To faktycznie oznacza, że ​​czasami algorytm wybierze UTXO, którego wartość jest bliższa płatności, a innym razem wybierze UTXO, którego wartość jest bliższa tej górnej granicy trzykrotności kwoty płatności. Pierwszy scenariusz przyniesie typowy scenariusz zmiany wyjściowej niższej niż płatność, podczas gdy drugi scenariusz odwrotny — zmianę wyjściową, która jest większa niż płatność. Biorąc pod uwagę, że obserwator łańcucha bloków nie ma możliwości określenia, kiedy dany scenariusz ma miejsce w danym momencie, użytkownik powinien mieć większe gwarancje prywatności.

Aktualizacje do wymiany za opłatą

RBF zapewnia opcjonalność dla użytkownika Bitcoin za każdym razem, gdy wysyła on transakcję do sieci. Często użytkownik nie chce przepłacać za opłaty górnicze i jako taki może wybrać „środek pośredni” między uiszczoną opłatą a szybkością, z jaką transakcja zostaje włączona do bloku. Ale jeśli wybrana przez użytkownika wartość opłaty jest zbyt niska lub pamięć jest przeciążona, może zająć zbyt dużo czasu, zanim transakcja zostanie włączona do bloku (lub może całkowicie utknąć w pamięci). RBF pozwala użytkownikowi „podbić” opłatę za transakcję w takim przypadku, często umożliwiając szybsze rozliczenie.

Pod maską RBF tak naprawdę nie podnosi opłaty. To, co dzieje się w tle, polega na tym, że klient oprogramowania rozgłasza a nowa transakcję z tymi samymi wejściami i większością tych samych wyjść. (Niektóre wartości wyjściowe zmieniają się; wartość opłaty naturalnie zmieni się, aby odzwierciedlić nową liczbę, i zwykle ta różnica jest odejmowana od kwoty, która została wysłana na adres zmiany.)

W przeszłości węzły przekazywały tylko pierwszą wersję transakcji, którą widziały. Wraz z pojawieniem się RBF wprowadzono mechanizm umożliwiający użytkownikom oznaczanie, że wysyłają transakcję, która może ostatecznie zostać obciążona opłatą, tj. Zastąpiona wersją z wyższą opłatą. Służyło to jako ostrzeżenie dla węzłów, informując je, że wersje tej transakcji z wyższą opłatą mogą zostać wysłane w późniejszym czasie i że również powinny zostać przekazane. Probabilistycznie wersja transakcji z wyższą opłatą będzie bardziej atrakcyjna dla górników i jako taka zostanie wybrana jako pierwsza. Gdy to się stanie i zostanie uwzględnione w bloku, transakcja z niższą opłatą zostanie usunięta z pamięci węzłów, ponieważ byłaby to próba podwójnego wydatkowania.

Bitcoin Core 24.0 wprowadza dwie aktualizacje funkcjonalności RBF.

Po pierwsze, pozwala teraz użytkownikom konfigurować swoje węzły w taki sposób, aby przekazywać wymienne transakcje bez wymuszanie flagi RBF. Można to zrobić za pomocą nowego mempoolfullrbf opcja. Zostanie ustawiony na poza domyślnie, ale osoby zainteresowane jej włączeniem mogą ją włączyć.

Po drugie, RBF jest teraz ustawiony jako standard w portfelu Bitcoin Core. Transakcje domyślnie włączają teraz RBF i -portfelrbf opcja uruchamiania jest domyślnie ustawiona na true. Użytkownicy mogą zrezygnować z RBF, modyfikując daną transakcję w procesie jej budowania lub ustawiając -portfelrbf opcję uruchamiania na wartość false.

Migracja portfela deskryptorów

Bitcoin Core 23.0 sprawił, że portfele deskryptorów stały się standardem. Deskryptory ułatwiają użytkownikowi tworzenie kopii zapasowej portfela, a następnie przywracanie tej kopii zapasowej w standardowym formacie.

Zanim istniały deskryptory, użytkownicy musieli znać ścieżkę derywacji swojego portfela, która dyktuje, w jaki sposób klucz główny portfela uzyskuje adresy, które mają być używane do otrzymywania i wysyłania bitcoinów. Ponieważ portfele mogą mieć różne ścieżki wyprowadzania, nie wystarczyło, aby kopia zapasowa zawierała wyłącznie frazy początkowe. Czasami użytkownik może mieć szczęście i próbować przywrócić kopię zapasową za pomocą portfela, który wykorzystuje tę samą ścieżkę derywacji, ale biorąc pod uwagę niskie prawdopodobieństwo, że tak się stanie, całe strony internetowe pomagają użytkownikom dowiedzieć się, jakiej ścieżki derywacji użyć dla starych i nowych portfeli wyłonił.

Deskryptor rozwiązuje ten problem, będąc opisowy o tym, jakiej ścieżki derywacji używa portfel z kopią zapasową, co znacznie poprawia komfort użytkowania. Pomysł polega na tym, że kopia zapasowa portfela deskryptorów zawiera wszystkie informacje niezbędne do jej prawidłowego przywrócenia przez dowolnego klienta programowego (pod warunkiem, że klient obsługuje deskryptory).

Teraz Bitcoin Core 24.0 wprowadza nowe narzędzie do migracji starszych portfeli do formatu portfela deskryptorowego, umożliwiając użytkownikom korzystanie z tego powstającego standardu w celu lepszego zabezpieczenia ich cennych bitcoinów. Choć wciąż eksperymentalny, nowy RPC (migruj portfel) został wprowadzony. Ten dokument zawiera więcej informacji na temat jego funkcjonalności.

Zmiany GUI

Interfejs graficzny Bitcoin Core jest znany z tego, że nie zapewnia tego samego poziomu funkcjonalności, jaki mogą osiągnąć zdalne wywołania procedur (RPC) i narzędzia wiersza poleceń. Bitcoin 24.0 podejmuje pewne kroki, aby to trochę zmienić.

Najnowsza wersja Bitcoin Core wprowadza nowy element menu w GUI, który pozwala użytkownikom przywrócić portfel z kopii zapasowej, ułatwiając przywracanie kopii zapasowych osobom nietechnicznym. Wcześniej ta opcja istniała tylko w wierszu poleceń.

Kolejna wada GUI w porównaniu z interfejsem RPC była związana z ustawieniami klienta Bitcoin Core. Sławny bitcoin.conf plik jest świętym Graalem konfiguracji Bitcoin Core, ale znowu można go było modyfikować głównie za pomocą wiersza poleceń. Istniała opcja dostosowania ustawień w GUI, ale ostrzeżenie to wyjaśniło bitcoin.conf miał pierwszeństwo przed GUI w przypadku, gdy zarówno plik, jak i GUI próbowały ustawić dane dla tej samej konfiguracji. Dlatego, chociaż GUI zapewniał prostą opcję zmiany ustawień, plik konfiguracyjny był nadal najbardziej niezawodnym sposobem dostosowywania klienta Bitcoin Core.

Bitcoin Core 24.0 to zmienia. Nowa aktualizacja ujednolica stronę ustawień GUI z bitcoin.conf plik. Teraz, gdy użytkownik otwiera ustawienia klienta w GUI, pokazane ustawienia są pobierane z pliku konfiguracyjnego. Podobnie, zmiany konfiguracji dokonane w GUI są teraz odzwierciedlane w bitcoin.conf. (Warto zaznaczyć, że zależność jest tam pośrednia, ponieważ zmiany w GUI są tak naprawdę ustawione settings.json, plik, który ma pierwszeństwo przed bitcoin.conf.)

Zmiany w komunikacji P2P

Nowa logika pobierania nagłówków

Bitcoin Core 24.0 wprowadza aktualizację sposobu, w jaki rówieśnicy w sieci doganiają koniec łańcucha, ponieważ uruchamiają się po raz pierwszy lub spędzili długi czas bez łączenia się z siecią Bitcoin.

Przed tym wydaniem nowy peer dołączający do Bitcoin zacząłby szukać peerów, z których mógłby pobrać nagłówki bloków. Peer nie pobiera najpierw całych bloków, ponieważ jest zachęcany do sprawdzenia, czy podąża za właściwym łańcuchem przed pobraniem bloków dla tego łańcucha. W przeciwnym razie ryzykuje pobraniem bloków dla niewłaściwego łańcucha, marnując w ten sposób zasoby.

Podczas gdy pobieranie nagłówków pomaga oszczędzać czas i zasoby, nadal może dojść do ataku polegającego na wyczerpaniu zasobów, w którym złośliwy aktor spamuje peera milionami fałszywych nagłówków bloków. Ponieważ klient musi pobrać i zapisać nagłówki na dysku, wystarczająco duża ilość danych może uszkodzić sprzęt partnera.

Aby złagodzić to zagrożenie, Bitcoin Core wprowadził koncepcję punkty kontrolne Lata temu. Punkty kontrolne określają, które bloki musi być obecny w łańcuchu, aby był ważny. Jednak to rozwiązanie stanowi również problem, ponieważ punkty kontrolne mogą zostać wykorzystane do skutecznego cofnięcia najdłuższego łańcucha. Taka możliwość nie jest pożądana w Bitcoinie, więc trzeba było wymyślić inne rozwiązanie. Wprowadź tę nową aktualizację.

Z Bitcoin Core 24.0, peery pobierają teraz nagłówki bloków dwukrotnie. W pierwszym uruchomieniu nagłówki są pobierane i odrzucane (nie zapisywane na dysku), dopóki nie zostanie znaleziona wystarczająca ilość pracy — co sugeruje, że łańcuch, który śledził partner, jest prawidłowy. W takim przypadku peer ponownie uruchamia proces, ale teraz, oprócz pobierania, peer zapisuje również nagłówki bloków na dysku. Zapisując nagłówki na dysku tylko wtedy, gdy uczestnik ma pewność, że są one częścią łańcucha ze znaczącym dowodem pracy, uczestnik unika zużywania dużych ilości pamięci w przypadku ewentualnego ataku, takiego jak wyczerpanie zasobów. Eliminuje to również potrzebę stosowania punktów kontrolnych i jest prawdopodobnie bardziej eleganckim rozwiązaniem, ponieważ określenie ważności łańcucha nie zależy od danych wejściowych człowieka.

Dzięki Aaronowi van Wirdumowi za opinię.

Aby uzyskać więcej informacji i inne zmiany, zobacz Bitcoin Core 24.0 Informacje o wydaniu. Aby pobrać Bitcoin Core 24.0, przejdź tutaj. Szczegóły dotyczące Bitcoin Core 24.0 są również wyjaśnione w formie audio w podcaście Bitcoin, Explained epizod 65.

Znak czasu:

Więcej z Magazyn Bitcoin