Przejdź do głównej zawartości

Posty

Wyświetlam posty z etykietą python

Jak zabezpieczyć portfel Bitcoin SV: Argon2id, UTXO i wysyłanie transakcji (Część 3)

 „Krótko: w tej części portfela Bitcoin SV zamieniam PBKDF2 na Argon2id (odporność na ataki GPU), dodaję obsługę UTXO, checksum HMAC do keystore, bezpieczne czyszczenie mnemonika z pamięci i wysyłanie transakcji z walidacją adresu. To część 3 serii." W poprzedniej części obiecałem że zajmiemy się bezpieczeństwem i wysyłaniem transakcji. Tym razem pracy było sporo, bo po drodze okazało się że "trochę większe" bezpieczeństwo. to tak naprawdę kilka całkiem konkretnych rzeczy do zmiany. I znowu skończyło się na tym, że siedziałem i dłubałem.. Co się zmieniło względem części 2? Zanim wrzucę kod, powiem co i dlaczego. W poprzedniej wersji portfela używaliśmy PBKDF2 do wyprowadzania klucza z hasła. To całkiem przyzwoity algorytm, ale ma jedną słabość - jest podatny na ataki GPU. Karta graficzna może liczyć miliony prób na sekundę równolegle a atakujący z porządną kartą graficzną może dość sprawnie przeszukiwać słowniki haseł.  PBKDF2 vs ...

Blockchain w Wordzie.

Nuda Cześć. Dopadła mnie ostatnio meeega nuda. Miałem wreszcie trochę świętego spokoju późnymi wieczorami, nikt nic ode mnie nie chciał, nie trzeba nic załatwiać, a siedziałem przed monitorem jak ten kołek. Na komputerze mam kilka gier ale od miesięcy ich nie uruchamiałem. Konsola jest. Leży. Mógłbym ją podłączyć do telewizora, tylko że samo wyciąganie kabli wydawało mi się bardziej męczące niż potencjalna rozrywka. Wiadomości (tych internetowych ściekowych) nie czytam, bo od dłuższego czasu ćwiczę cyfrowy minimalizm i ograniczam codzienne karmienie mózgu cudzymi problemami. Więc siedziałem tak i zastanawiałem się, czy to przez pogodę, czy przez wiek, czy może po prostu mój organizm uznał, że czterdziesty któryś rok życia to odpowiedni moment, żeby ekscytację nowymi grami zamienić na ekscytację dobrze działającym odkurzaczem. I co? I jak to z nudów, zaczynam myśleć. A moje myśli od dłuższego czasu krążą wokół blockchaina. Nie dlatego, że...

Eksperyment z wykorzystaniem blockchain Bitcoin (BSV)

Czas na coś nietypowego. Od kilku lat i od czasu do czasu, wracam do blockchaina Bitcoin SV , testując różne pomysły i możliwości tej sieci. Tym razem jednak, planuję przeprowadzić nieco bardziej nietypowy eksperyment, którego głównym celem będzie sprawdzenie kilku rzeczy w praktyce, a nie tylko w teorii. Pierwszym elementem będzie zweryfikowanie rzeczywistych kosztów wykonywania dużej liczby transakcji. W świecie blockchainów często mówi się o opłatach ale znacznie ciekawiej jest zobaczyć konkretne liczby niż marketingowe deklaracje. Chcę więc zebrać własne dane i sprawdzić, jak wygląda to w rzeczywistych warunkach. Drugim elementem będzie przepustowość. Interesuje mnie, jak wiele transakcji można wygenerować i rozesłać w krótkim czasie. Nie chodzi wyłącznie o sam blockchain, ale również o moje narzędzia, które będą uczestniczyć w całym procesie. Zakładam, że nie pobije żadnego rekordu, bo API w trybie darmowym zapewnia 3 wywołania na 1 sekundę, a w trybie płatnym 40/1,...

Tworzenie własnego portfela Bitcoin SV: Bezpieczeństwo, baza danych (Część 2)

W poprzedniej części zbudowaliśmy fundament - wiemy już czym jest entropia, mnemonic i seed. Potrafiliśmy z jednego sekretu wyprowadzić 10 adresów i podejrzeć ich klucze prywatne. Fajne ćwiczenie, ale tamten kod nadawał się tylko do zabawy w konsoli. Klucze prywatne wypisywane wprost na ekran, mnemonic trzymany w zmiennej to.. to nie jest coś, co chciałbyś zobaczyć w prawdziwym portfelu. Przez ostatnie kilka dni (a może i tygodni) jak znalazłem trochę wolnego czasu, to siedziałem i coś tam dłubałem sobie przy portfelu. Na początku wwaliłem wszystko do jednego pliku, później rozdzieliłem, po jakimś czasie znowu w jednym i w sumie ostatecznie rozdzieliłem na moduły. Szkoda, że nie zapisywałem wszystkich moich potknięć (a może to i dobrze) bo można by było zobaczyć mój tok myślowy. Na początek postawiłem na minimum bezpieczeństwa. Dziś zrobimy to porządniej. Zbudujemy portfel który: szyfruje mnemonic hasłem i zapisuje go bezpiecznie na dysku trzyma adresy w bazie SQLite ...

Tworzenie własnego portfela Bitcoin SV - HD Wallet (Część 1)

W tradycyjnym podejściu jakie opisywałem (tu, tu, i tu) mógłbyś tworzyć wiele niezależnych kluczy prywatnych, każdy generowany osobno i losowo. Problem z takim modelem polega na tym, że każdy klucz trzeba osobno zapisać, zabezpieczyć - później odczytać i odzyskać - co szybko staje się niepraktyczne. Poprzednie przykłady opierały się na zarządzaniu jednym kluczem prywatnym/jednym adresem; wysyłaliśmy transakcję a reszta wracała dokładnie na ten sam adres. Teraz podejdźmy do tego tak jak pisał o tym sam Satoshi Nakamoto – jedna transakcja, jeden adres = większa prywatność. Nowoczesne portfele kryptowalutowe nie generują pojedynczych losowych kluczy prywatnych. Zamiast tego używają struktury deterministycznej, która pozwala z jednego „sekretu głównego” odtworzyć nieskończoną liczbę adresów. Ten model nazywa się HD wallet (Hierarchical Deterministic Wallet) . Na początku zaczniemy od entropii czyli czystych, losowych bitów. Następnie ta entropia będzie przekształcona w tzw....

Python Bitcoin bsv-sdk: szyfrowanie wiadomości

Szyfrowanie, szyfrowanie Bitcoin kojarzy się większości osób z przelewaniem.. bitcoina. Wysyłasz transakcję, ktoś ją odbiera. W rzeczywistości sieci takie jak Bitcoin SV potrafią znacznie więcej. Każda transakcja może nieść ze sobą dane. A skoro dane - to również wiadomości. Wyobraź sobie, że możesz wysłać komuś zaszyfrowaną wiadomość: bez serwera, bez pośrednika, bez możliwości ocenzurowania i zapisaną na zawsze w blockchainie. Mechanizm, który to umożliwia, nazywa się OP_RETURN ( pisałem o nim tutaj ).  W tym wpisie pokażę, jak wykorzystać OP_RETURN jako kanał komunikacji - zapisując zaszyfrowaną wiadomość, którą odczytać może tylko wybrany odbiorca. Całość zrobimy w Pythonie, używając biblioteki py-sdk-bsv. Mógłbyś zapytać: ale po co ktoś miałby prowadzić komunikację, na publicznym blockchainie, szyfrując wiadomości?  Zaszyfrowana wiadomość w OP_RETURN ma kilka unikalnych cech: niezmienność globalna dostępność brak cenzury prywatność To połączenie jest bardz...