Pythonuj w Bitcoin SV – cz.2


Pythonuj z Bitcoin SV, to cykl prostych poradników w których omawiamy jak wejść w interakcję z blockchain.
W poprzedniej części – Pythonuj z BitcoinSV cz.1 – zainstalowaliśmy Pythona oraz napisaliśmy nasz pierwszy program.
Na początek krótkie rozwiązanie z poprzedniej lekcji, które mogło wyglądać tak:

tekst = input("Wpisz pierwszy tekst: ")
print(tekst)
tekst_2 = input("Wpisz drugi tekst: ")
print(tekst_2)
input()

lub tak:

tekst = input("Wpisz pierwszy tekst: ")
tekst_2 = input("Wpisz drugi tekst: ")
print(tekst, tekst_2)
input()

albo nawet w ten sposób:

tekst = input("Wpisz pierwszy tekst: ")
tekst_2 = input("Wpisz drugi tekst: ")
print("Pierwszy tekst", tekst, "Drugi tekst", tekst_2)
input()

Funkcja print mogła wyświetlić:

  • jedną zmienną (tekst);
  • dwie zmienne oddzielone przecinkiem i spacją (tekst, tekst_2);
  • oraz dowolny tekst i zmienne również oddzielone przecinkiem i spacją
    (“Pierwszy tekst”, tekst, “Drugi tekst”, tekst_2)

Możesz wypisywać wiele danych za pomocą funkcji print ale dla potrzeb tego poradnika, nie będziemy się zagłębiać w meandry wszelkiego jej zastosowania.

Zmienne

W naszym programie, posiadamy jedną zmienną o nazwie tekst.
Zmienna to sposób przechowywania danej, co daje możliwość jej zapamiętania i późniejszego odwołania się do niej.
Zmienną może być:

  • tekst np. tojestzmienna = “BitcoinSV”
  • cyfra np. tojestzmienna = 10
  • lista np. tojestzmienna = [1,2,3,4,5]
  • krotka np. tojestzmienna = (1,2,3,4,5)
  • słownik np. tojestzmienna = {“bsv”:”To jest Bitcoin”}

Gdybyśmy pod każdą zmienną użyli – print(tojestzmienna) – wyglądało by to tak:

W programie, który obecnie wykonujemy, będziemy posługiwać się różnymi zmiennymi ponieważ będziemy często przechowywać dane a później się do nich odwoływać. Nie przejmuj się jeżeli tego nie rozumiesz – zobaczysz jak to wygląda ‘w praniu’.

Biblioteki

Biblioteka standardowa Pythona jest bardzo obszerna i oferuje szeroką gamę udogodnień, zawiera wbudowane moduły (napisane w C), które zapewniają dostęp do funkcji systemu, takich jak pliki, które w innym przypadku byłyby niedostępne dla programistów Pythona, a także moduły napisane w Pythonie, które zapewniają ustandaryzowane rozwiązania wielu problemów występujących w codziennym programowaniu. Niektóre z tych modułów zostały wyraźnie zaprojektowane w celu zachęcania do przenoszenia programów w języku Python i zwiększania ich możliwości poprzez oderwanie specyfiki platformy do interfejsów API neutralnych dla platformy.
Istnieje kilka tysięcy bibliotek i modułów a dwie z nich, pobierzemy za pomocą naszego instalatora pip, który został zainstalowany wraz z pythonem.

Biblioteka bitsv

Bitsv jest oficjalną biblioteką, dzięki której możesz wejść w interakcję z blockchain BitcoinSV.
Dzięki niej możesz dokonywać płatności, przechowywać dane za pomocą skryptu OP_RETURN czy połączyć się z lokalnym „fullnode”.
Repozytorium wraz z omówieniem kodu znajduje się tutaj.

Czas na instalację bitsv, dlatego zaczynamy od wywołania wiersza poleceń, wpisując w pasku poleceń, po prostu cmd i potwierdzamy enter:

Następnie w konsoli wpisujemy ‘pip install bitsv‘ i czekamy aż instalator zainstaluje naszą bibliotekę.

Biblioteka secrets

Następnie w ten sam sposób zainstalujemy bibliotekę secrets, dzięki której stworzymy nasz klucz prywatny. Moduł służy do generowania liczb silnie losowych kryptograficznie ,odpowiednich do zarządzania danych, takich jak hasła, konta, tokenów uwierzytelniania i bezpieczeństwa.

Uruchamiamy konsolę i wpisujemy ‘pip install secrets‘ oraz czekamy aż instalator zainstaluje naszą bibliotekę.

Tworzymy klucz prywatny

Przeczytaj kod który napisałem i zaraz go omówimy:


import secrets #  importujemy bibliotekę

bits = secrets.randbits(256) #  tworzymy losową liczbę w systemie binarnym (dwójkowym)
bits_hex = hex(bits) #  konwertujemy bity na wartość szesnastkową 
private_key = bits_hex[2:] #  pozbywamy się wartości 0x

print("Mój klucz prywatny to:", private_key) #  wypisujemy nasz klucz prywatny
input()


Wszystko w zasadzie zostało omówione a to za sprawą tekstu, który został umieszczony po znacznikach #. Znacznik # określa komentarz, czyli wszystko to co jest za nim, będzie ignorowane przez kompilator.


Skopiuj ten kod, zapisz i uruchom (Run lub F5) i zobacz jak wygląda Twój klucz prywatny.
Możesz wielokrotnie uruchomić ten skrypt i zauważysz, że za każdym razem będziesz miał inne wartości. Dodatkowo jest to bezpieczna metoda generowania 256 bitowego klucza z poziomu Twojego komputera, która czerpie entropię bezpośrednio z systemu operacyjnego.
Ta przypadkowość jest często zbierana ze źródeł sprzętowych jak zróżnicowania hałasu wentylatora lub dysku twardego albo z istniejących wcześniej, takich jak ruchy myszy, kliknięcia itp. Wynik takiego RNG (random number generator) jest znacznie trudniejszy do odtworzenia.
Nie możesz go odtworzyć, znając czas powstania lub mając seed, ponieważ – nie ma seed!
OK a teraz znając już sposób na wypisywanie tekstu z części pierwszej możesz zmodyfikować swój kod tak, żeby informował Cię o rozpoczęciu lub zakończeniu tworzenia klucza prywatnego.


Możesz też sprawdzić jakie dane są przechowywane w każdej zmiennej i jak wygląda wynik końcowy.

bits = secrets.randbits(256)
print(bits)
bits_hex = hex(bits)
print(bits_hex) 
private_key = bits_hex[2:] 


W tym miejscu jeszcze nie korzystaliśmy z biblioteki bitsv ale zrobimy to w kolejnej części.


autor: xp_analyst



Author: xp_analyst