Minęły dwa tygodnia od oficjalnego wydania Bitcoin Core 22.0 – 22 poważnej aktualizacji oryginalnego oprogramowania Bitcoin stworzonego przez Satoshiego Nakamoto prawie 13 lat temu.

Nadzorowana przez głównego opiekuna Bitcoin Core, Wladimira van der Laana, najnowsza wersja klienta Bitcoin została opracowana przez ponad stu ludzi, w ciągu około ośmiu miesięcy. Będąc wynikiem około 800 pull requestów, Bitcoin Core 22.0 jest pierwszą wersją Bitcoin Core wspierającą nadchodzącą aktualizację Taproot, oferując jednocześnie kilka innych ulepszeń w stosunku do poprzednich wersji Bitcoin Core.

Dodatkowo, jest to również pierwsza wersja Bitcoin Core, w której odrzucono wiodące 0 ze swojego numeru wersji: Bitcoin Core 22.0 — zamiast Bitcoin Core 0.22.0.

Poniżej opisaliśmy niektóre z bardziej znaczących zmian.

Wsparcie dla portfeli sprzętowych w GUI

Portfele sprzętowe to urządzenia zaprojektowane do bezpiecznego przechowywania kluczy prywatnych, mogące podpisywać transakcje jednocześnie nigdy nie tracąc kontroli nad kluczami. Mimo to, aby dokonać transakcji, portfele sprzętowe zazwyczaj muszą być używane w połączeniu z portfelem programowym. Wiele portfeli programowych spełnia wymagania co do kompatybilności, aby to robić, jednak portfel Bitcoin Core do tej pory nie był jednym z nich.

Zaczęło się to zmieniać kilka lat temu: Bitcoin Core jest kompatybilny z portfelami sprzętowymi od wersji 0.18.0. Jednak użytkownicy musieli początkowo używać interfejsu wiersza poleceń (CLI), aby korzystać z tej funkcji. Od wersji Bitcoin Core 0.20.0 użytkownicy mogli również częściowo korzystać z graficznego interfejsu użytkownika (GUI), ale nadal wymagało to ręcznego kopiowania i wklejania w celu podpisywania transakcji.

Bitcoin Core 22.0 to pierwsza wersja oferująca pełną obsługę GUI dla portfeli sprzętowych. Korzystając z oprogramowania Hardware Wallet Interface (HWI) jako swego rodzaju dodatku, użytkownicy Bitcoin Core mogą teraz bezproblemowo korzystać z portfela Bitcoin Core w połączeniu z urządzeniami Ledger, Trezor, BitBox, KeepKey i Coldcard.

Wspracie I2P

Jednym ze sposobów na deanonimizację użytkowników Bitcoin jest analiza sieci Bitcoin i śledzenie, z których węzłów pochodzą określone transakcje. Adresy IP skojarzone z tymi węzłami można następnie powiązać z tożsamościami w świecie rzeczywistym.

Aby chronić swoją prywatność, użytkownicy Bitcoin Core mogli już łączyć się z siecią Bitcoin za pośrednictwem anonimizującej sieci Tor, nie jest to jednak jedyna taka sieć.

Invisible Internet Project (I2P) to kolejna zdecentralizowana, anonimowa sieć komunikacyjna peer-to-peer nałożona na standardowy internet. Podobnie jak Tor, pozwala użytkownikom komunikować się poprzez routing wiadomości w sieci, używając różnych warstw szyfrowania na każdym etapie łańcucha transmisji, aby zamaskować zarówno samą wiadomość, jak i adresy IP nadawcy i odbiorcy.

Bitcoin Core 22.0 obsługuje teraz również łączenie się z siecią Bitcoin przez I2P. To sprawia, że I2P jest drugą po Torze anonimową siecią, z której użytkownicy Bitcoin Core mogą korzystać do ochrony swojego adresu IP.

Wsparcie dla Taproot

Bitcoin Core 0.21.1 był pierwszym wydaniem Bitcoin Core, które zawierało logikę aktywacji dla nadchodzącej aktualizacji protokołu, Taproot, która zostanie aktywowana w listopadzie. Teraz Bitcoin Core 22.0 to pierwsza duża wersja obsługująca aktualizację.

Oznacza to, że Bitcoin Core 22.0 w pełni zaadoptuje nowe zasady aktualizacji Taproot. Od momentu aktywacji aktualizacji w listopadzie tego roku wszystkie transakcje Taproot będą weryfikowane pod kątem ważności zgodnie z nowymi zasadami protokołu.

Dodatkowo portfel Bitcoin Core będzie wspierał tworzenie podstawowych outputów Taproot ("adresów”). Użytkownicy Bitcoin Core będą mogli akceptować płatności na outputy Taproot, które można wydać za pomocą jednego klucza prywatnego, chronionego za pomocą logiki Taproot.

Oczywiście nie oferuje to w rzeczywistości wielu korzyści (jeśli w ogóle) w porównaniu z tym, co było już możliwe w przypadku oprogramowania portfela Bitcoin Core wcześniej; bardziej złożone typy inteligentnych kontraktów, które obsługuje Taproot, będą prawdopodobnie obsługiwane w przyszłych wydaniach Bitcoin Core.

Bitcoin Core będzie również wspierać tworzenie deskryptorów specyficznych dla Taproot, które identyfikują outputy Taproot jako takie. Ta kategoryzacja może przynieść korzyści aplikacjom, które opierają się na oprogramowaniu Bitcoin Core, takim jak (zewnętrzne) portfele.

Aktualizacja akceptacji Testmempool

"Przekazywanie paczek" to projekt mający na celu ulepszenie sposobu przesyłania transakcji w sieci Bitcoin. Obecnie transakcje są przekazywane tylko wtedy, gdy zawierają wystarczająco wysoką opłatę, aby zostały uwzględnione w puli pamięci (mempool) węzłów Bitcoin. Jeśli transakcja nie zawiera wystarczająco wysokiej opłaty, nie jest akceptowana przez węzeł i nie jest przekazywana do innych węzłów w sieci Bitcoin.

Ta logika różni się jednak nieco od sposobu, w jaki transakcje są wybierane do włączenia do nowego bloku Bitcoin. Aby ustalić, czy transakcja jest ujęta w bloku, nie jest uwzględniana wyłącznie opłata. Brane pod uwagę jest także to, czy transakcja ta pomogłaby w uzyskaniu potwierdzenia innych transakcji. Jeśli tak, rozważana jest kombinacja opłat transakcyjnych.

Pozwala to użytkownikom "odblokować" transakcję z niską opłatą, która czeka w mempoolu, poprzez ponowne wydanie monet w nowej transakcji z wysoką opłatą w celu zrekompensowania. Aby uzyskać drugą (wyższą) opłatę, górnicy muszą zaakceptować obie transakcje jednocześnie. Ta sztuczka nazywa się Child-Pays-For-Parent (CPFP) i może być szczególnie przydatna w kontekście niektórych protokołów Warstwy Drugiej, takich jak Lightning Network.

Różnica w polityce między włączaniem mempool a włączaniem bloku może w niektórych przypadkach udaremnić rozwiązanie CPFP. Jeśli pierwsza transakcja nie zawiera wystarczająco wysokiej opłaty, aby zostać zaakceptowana w mempoolach, druga transakcja z wyższą opłatą nie zostanie zaakceptowana w bloku, ponieważ wymaga również potwierdzenia pierwszej transakcji, zanim zostanie uznana za ważną.

Aby rozwiązać ten problem, "przekazywanie paczek" umożliwiłoby przesyłanie transakcji przez sieć Bitcoin w paczkach. Zamiast rozpatrywać transakcje i ich opłaty indywidualnie, aby włączyć mempool brane pod uwagę były by kombinacje transakcji, tak jak ma to miejsce w przypadku włączenia bloku.

Bitcoin Core 22.0 robi krok w kierunku realizacji "przekazywania paczek": aplikacje połączone z Bitcoin Core mogą testować, czy transakcje będą zawarte w ich własnych mempoolach, przesyłając kilka transakcji jako jeden pakiet. Jednak przesyłanie lub akceptowanie takich pakietów przez sieć peer-to-peer nie jest jeszcze obsługiwane.

Większe segwity multisigowe

Outputy multisigowe to monety, które wymagają podpisów z wielu kluczy prywatnych, aby mogły zostać wydane. Mogą to być na przykład dwa podpisy z dwóch różnych kluczy prywatnych, trzy podpisy z zestawu pięciu kluczy prywatnych, a nawet siedem podpisów z zestawu ośmiu kluczy prywatnych, i tak dalej.

Multisig może być używany do kilku celów. Jednym z przykładów jest zabezpieczenie środków za pomocą kilku urządzeń, dzięki czemu nawet w przypadku złamania lub utraty jednego urządzenia monety są nadal bezpieczne i dostępne. Podobnie, multisig może służyć do współdzielenia kontroli nad środkami między kilka osób. Ponadto multisig jest używany w niektórych rozwiązaniach Warstwy Drugiej.

Oprogramowanie Bitcoin Core do tej pory wspierało tworzenie outputów multisigowych dla maksymalnie 16 kluczy w outputach Segregated Witness (Segwit), pomimo tego, że protokół Bitcoin nie ma takiego ograniczenia. Bitcoin Core 22.0 rozszerza teraz wsparcie multisigów Segwit do 20 kluczy.