Post Krok po kroku, jak zbudować aplikację Blockchain z Pythonem pojawił się po raz pierwszy w Coinpedia Fintech News
Wstęp
Łańcuch bloków
Blockchain jest pionierem w dziedzinie finansów i programowania. Jest to nowa, wschodząca technologia, która zyskuje uwagę na całym świecie ze względu na swoje kluczowe cechy, takie jak zdecentralizowany mechanizm, w którym nie ma centralnego organu zarządzającego transakcjami i bazą danych. Ma wiele do zaoferowania pod względem przejrzystości i bezpieczeństwa.
Można się zastanawiać, czym właściwie jest Blockchain.
Mówiąc prościej, Blockchain odnosi się do bloków lub plików połączonych ze sobą za pomocą szyfrowania. Jest to jak cyfrowy łańcuch połączony z tyłu i z tyłu za pomocą zasad kryptografii. To krąży i dystrybuuje transakcje w społeczności, w której uczestniczące węzły używają mechanizmów kryptograficznych, aby się zgodzić i zachować integralność.
Technologia blockchain jest wystarczająco solidna, aby przeciwstawić się wszelkim zagrożeniom cyfrowym i awariom, co czyni ją bardziej przydatną do radzenia sobie z ryzykami cyberbezpieczeństwa.
Python w Blockchain
Python jest najbardziej dynamicznym i dostosowanym językiem. Możesz wymienić dowolny obszar inżynierii oprogramowania, a Python jest zawsze pierwszym wyborem ze względu na jego funkcjonalności. Ma czystą składnię, w której potrzebujesz mniej wierszy do wykonania dowolnej funkcji w porównaniu z jakimkolwiek innym językiem. Prosta składnia Pythona jest korzystna w radzeniu sobie z błędami i usterkami.
Python ma bogaty ekosystem i wielofunkcyjne biblioteki, które przyspieszają Twoją podróż programistyczną. Na przykład biblioteki takie jak PyCryptodome i Hashlib zapewniają funkcje kryptograficzne i obliczeniowe, a frameworki takie jak Flask i Django są przydatne dla interfejsów API i interfejsów aplikacji internetowych. Natomiast biblioteki takie jak Brownie i Vyper są używane do wdrażania inteligentnych kontraktów.
Python może integrować różne języki, takie jak C++, Java i Javascript. Obsługuje również integrację wielu interfejsów API. Integracja interfejsów API jest przydatna do współpracy z innym oprogramowaniem, platformami i frameworkami. Python ma za sobą dużą społeczność i godny pochwały responsywny system wsparcia ze strony społeczności. Istnieją bardzo pomocne wkłady open-source oraz platforma do nauki o danych i analityki, które sprawiają, że Python jest jedyny w swoim rodzaju.
Publiczność
Teraz prawdziwe pytanie brzmi, jak używać Pythona w tworzeniu aplikacji blockchain.
Martw się mniej! Ten artykuł jest Twoją pomocą. Tutaj skupiamy się na wykorzystaniu i integracji Pythona w Blockchain. Wszyscy początkujący programiści mogą rozpocząć swoją podróż od tego artykułu.
Martwisz się o idealne zarządzanie konfiguracją i konfiguracją? Mamy dla Ciebie rozwiązanie! Zanurzmy się głęboko w fascynujący świat tworzenia aplikacji blockchain z Pythonem.
Konfigurowanie środowiska programistycznego
Zanim zaczniesz rozwijać, niezbędne jest posiadanie wszystkich warunków wstępnych. W tej sekcji przeprowadzimy Cię przez cały proces.
Jeśli chodzi o konfigurację, Python oferuje najłatwiejszy proces konfiguracji.
Przyjrzyjmy się temu szczegółowo:
Instalowanie Pythona
Odwiedź oficjalną stronę internetową i pobierz najnowszą wersję Pythona: https://www.python.org/downloads/
Pobierz zgodnie z systemem operacyjnym (Windows, MacOS, Linux)
W zestawie znajduje się program uruchamiający Python, dlatego zapoznaj się z instrukcją instalacji – spowoduje to zainstalowanie Pythona w Twoim systemie.
Sprawdź instalację za pomocą polecenia python –version lub python3 –version w wierszu poleceń (wiersz poleceń lub terminal).
Uwaga: Upewnij się, że zainstalowałeś najnowszą wersję Pythona – 3.12. Starsze wersje należy instalować tylko wtedy, gdy potrzebujesz konkretnych narzędzi.
Wybór środowiska IDE
Gdy już zainstalujesz Pythona w swoim systemie, następną rzeczą, na którą należy zwrócić uwagę, jest odpowiednie środowisko programistyczne. To bardzo ważny krok, ponieważ wybór odpowiedniego IDE bez żadnych rozbieżności w konfiguracji jest podstawą wszystkich przyszłych projektów.
Istnieją dwa główne środowiska IDE:
PyCharm: Pycharm został opracowany przez JetBrains i jest najpopularniejszym IDE dla Pythona. Pycharm ma szeroki zakres narzędzi, które zwiększą Twoją produktywność jako programisty.
Oferuje różne funkcje, takie jak inteligentne uzupełnianie kodu, które uzupełnia szablon kodu na podstawie funkcji w czasie rzeczywistym. Pycharm naprawdę ma urok pod względem narzędzi do debugowania. Zapewnia opcje, takie jak przechodzenie przez kod, przechodzenie przez cały kod, dodawanie wielu punktów przerwania, aby zobaczyć, która część kodu powoduje błędy, oraz konsolę do uruchamiania mniejszych części kodu wraz z inspekcją zmiennych.
Kroki konfiguracji PyCharm:
Odwiedź oficjalną stronę i pobierz PyCharm:
https://www.jetbrains.com/pycharm/download/?section=mac
Teraz postępuj zgodnie z instrukcjami, które pojawią się w oknie.
Po zakończeniu instalacji uruchom Pycharm i skonfiguruj swój projekt oraz interpreter języka Python w następujący sposób:
Pliki→Ustawienia→Projekt→Twój projekt→ Interpreter projektu i wybierz odpowiednią wersję Pythona, którą wcześniej zainstalowałeś.
Jupyter Notebook: Jupyter Notebook to internetowe IDE (aplikacja internetowa). Oprócz Pythona jest również używane do edycji tekstu. Jupyter Notebook można uruchomić zdalnie na VSCode wraz z jego rozszerzeniami.
Kroki konfiguracji Jupyter Notebook:
Otwórz interfejs wiersza poleceń: uruchom polecenie pip install notebook
Uruchom Jupyter Notebook za pomocą polecenia: jupyter notebook
Instalowanie wymaganych bibliotek
Oto kilka bibliotek, które usprawnią Twoje doświadczenie w zakresie tworzenia technologii blockchain:
Flask: Flask to framework Pythona służący do tworzenia aplikacji internetowych i interfejsów API RESTful. W blockchainie można go używać do tworzenia interfejsów internetowych, takich jak pulpity nawigacyjne i interfejsy DApps.
Instalacja Flask: pip install Flask
Requests: Requests to biblioteka HTTP do obsługi i wysyłania żądań i odpowiedzi HTTP. W blockchainie żądania mogą być przydatne w łączeniu się z sieciami blockchain i wykonywaniu zapytań.
Żądania instalacji: żądania instalacji pip
Pysha3: Pysha3 to najważniejsza biblioteka używana w algorytmach skrótu SHA-3, takich jak SHA3-256 i SHA3-512. Haszowanie jest nieocenionym aspektem technologii blockchain, przyczyniającym się do jej integralności i bezpieczeństwa.
Zainstaluj pysha3: pip install pysha3
Web3.py: Web3.py — niezależna biblioteka, która jest bardzo często używana i ma wiele funkcji, takich jak interakcja z inteligentnymi kontraktami, wyszukiwanie danych blockchain i wysyłanie transakcji. Web3 to oparta na Ethereum biblioteka przydatna do zarządzania transakcjami.
Zainstaluj web3.py: pip install web3
Pycryptodome: Pycryptodome to pełnoprawny pakiet Pythona niskopoziomowych funkcji kryptograficznych. Ta biblioteka udostępnia funkcje bezpieczeństwa i integralności danych, takie jak haszowanie, szyfrowanie, deszyfrowanie i inne operacje kryptograficzne.
Zainstaluj pycryptodome: pip install pycryptodome
Pandas: Pandas to rozbudowana biblioteka do analizy i manipulacji danymi, zawierająca pakiet struktur danych i funkcji przydatnych do analizowania i wizualizacji rekordów blockchain i transakcji.
Zainstaluj pandas: pip install pandas
SQLAlchemy: SQL to baza danych, a SQLAlchemy to zestaw narzędzi SQL, który ma mapowanie obiektowo-relacyjne dla Pythona. Obsługuje działanie bazy danych i interakcje z abstrakcjami wysokiego poziomu. Blockchain jest rozproszoną bazą danych, więc ta biblioteka byłaby używana do zarządzania i przeszukiwania relacyjnej bazy danych oraz przechowywania rekordów transakcji wraz z poświadczeniami użytkownika.
Zainstaluj SQLAlacemy: pip install SQLAlchemy
Numpy: Numoy to szeroko stosowana biblioteka Pythona, która jest dobrze dostosowana do różnych zastosowań. Jest używana do wszelkich operacji numerycznych i obsługuje jednostki matematyczne, takie jak tablice, macierze oraz szereg funkcji i operacji na nich. W Blockchain Numpy może być używany do przetwarzania i symulowania rekordów transakcji oraz obliczania algorytmów logicznych.
Zainstaluj Numpy: pip install numpy
Zrozumienie koncepcji Blockchain
Gdybyśmy mieli posłużyć się analogią, aby zrozumieć Blockchain, to byłoby to jak historyczna baza danych przechowywana w wielu miejscach, z których każde jest tak samo ważne i żaden pojedynczy podmiot nie dominuje w sieci.
Jeśli zagłębisz się w temat i zrozumiesz strukturę łańcucha bloków, będzie ona wyglądać tak:
Bloki (transakcje) ——–***Łańcuchy*** ——-Bloki.
Składa się z trzech komponentów:
Bloki: Bloki to komórki, które przechowują informacje lub transakcje. Bloki przechowują listę konkretnych transakcji. Bloki mogą być tworzone lub możemy powiedzieć, że mogą być wydobywane za pomocą różnych mechanizmów konsensusu. Każdy blok ma swój własny zestaw unikalnych identyfikatorów, które są również znane jako hashowanie. Technika hashowania jest przydatna do szyfrowania danych w blokach.
Transakcja: Transakcje to wymiana walut danych w sieci blockchain, która odbywa się w różnych notatkach. Szczegóły transakcji są przechowywane w bloku w zgodzie z zestawem protokołów znanym jako konsensus.
Łańcuchy: Jak już wiemy, blockchainy mają analogię do list powiązanych, które mają połączenia między swoimi blokami. Te połączenia są również znane jako łańcuchy. Ponieważ każdy wskaźnik na liście powiązanej jest połączony przez wszystkie łącza, to samo dotyczy bloków. Są to serie bloków połączonych hashem poprzedniego bloku, co zapewnia, że integralność danych i bezpieczeństwo blockchaina są zachowane. Celem zmian nie jest po prostu służenie jako łącze między poprzednim a następnym blokiem, ale także zapewnienie łączy wraz z hashowaniem i zasadami kryptograficznymi.
Znaczenie decentralizacji, niezmienności i mechanizmów konsensusu:
Decentralizacja: Decentralizacja jest najważniejszą właściwością blockchain. W tym mechanizmie żaden pojedynczy podmiot nie ma kontroli nad całą bazą danych, co zapobiega awarii systemu blockchain z powodu czyjejkolwiek rozbieżności. Ze względu na decentralizację posiadanie stronniczego systemu jest prawie niemożliwe. Każdy uczestnik urządzenia utrzymuje kopię blockchain. Zapewnia to przejrzystość i zapobiega scentralizowanej awarii lub manipulacji.
Niezmienność: gdy dane zostaną zapisane w blockchainie, nie można ich zmienić bez zmiany wszystkich kolejnych bloków. Zmiana wszystkich kolejnych bloków w blockchainie jest kosztowna obliczeniowo i bardzo nieefektywna, co prowadzi do awarii. Zmiana dowolnego bloku musi zostać wykonana za pomocą kryptograficznego hashowania. Stąd wszystkie zmiany dokonane raz nie mogą zostać cofnięte, co sprawia, że blockchain jest niezmienny.
Mechanizmy konsensusu: Zestaw protokołów regulujących wszystkie potrzeby blockchain. Wszystkie węzły w sieci muszą się zgodzić na metody. Mechanizmy konsensusu są używane do usprawnienia węzłów i zapewnienia, że wszystkie węzły w sieci są na tej samej stronie.
Budowanie prostego łańcucha bloków
Tworzenie klasy bloku
W powyższym kodzie zdefiniowaliśmy klasę Block dla wszystkich atrybutów.
Struktura bloku:
Indeks: Indeks jest liczbą całkowitą reprezentującą pozycję bloku w łańcuchu bloków. Indeksowanie pomaga zidentyfikować kolejność łańcucha bloków.
Blok Genesis jest blokiem początkowym o indeksie 0.
Znak czasu: Znak czasu przechowuje w formie ciągu znaków moment, w którym blok został utworzony. Pomaga to w utrzymaniu zapisu bloku, np. kiedy blok został wydobyty lub dodany do łańcucha bloków.
Transakcje: Są one reprezentowane jako wektory obiektów transakcji, gdzie każda transakcja reprezentuje transfer danych lub wartości między uczestnikami. Przechowuje wszystkie transakcje zawarte w bloku.
Poprzedni skrót i hash: Poprzedni skrót przechowuje kryptograficzny skrót poprzedniego bloku, natomiast skrót jest ciągiem pomieszanych lub haszowanych informacji kryptograficznych.
do obliczenia skrótu bloku zastosowaliśmy metodę SHA3-256.
Tworzenie klasy Blockchain
Zdefiniuj klasę Blockchain, aby zarządzać łańcuchem i metodami dodawania nowych bloków.
W powyższym przykładzie kodu blok genesis jest pierwszym blokiem w blockchainie, get_latest_block zwraca najnowszy blok, a add_block dodaje nowy blok.
Wdrażanie dowodu pracy
Algorytmy konsensusu to zasady, na które uczestnicy muszą się zgodzić, aby dodać bloki i utworzyć nowe w sieci. Istnieją różne mechanizmy, takie jak:
Proof-of-Stake: Opiera się na tym, że walidatorzy są gotowi mieć. Im wyższa stawka w zamian za utworzenie lub walidację bloku, tym większa szansa na wybór walidatora.
Proof of Work: Proof of Work został po raz pierwszy wprowadzony w Bitcoin i od tego czasu jest szeroko stosowany jako jeden z mechanizmów bezpieczeństwa. W PoW uczestnicy rywalizują ze sobą, aby rozwiązać trudną zagadkę kryptograficzną. Proof of Work ma kilka etapów, w których działa:
Tworzenie bloku: Górnicy zbierają transakcje, które mają zostać wykonane i dodają je do bloku
Haszowanie bloku: Najpierw górnik określa nonce, który następnie jest przesyłany przez funkcję kryptograficzną, a czarny blok jest haszowany przy użyciu unikatowego identyfikatora.
Górnictwo: Górnictwo polega na wielokrotnej zmianie wartości nonce w celu znalezienia idealnego skrótu spełniającego wymagania dotyczące trudności sieci.
Rozgłaszanie bloku: Po otrzymaniu prawidłowego skrótu górnik rozgłasza blok do sieci, a pozostali uczestnicy go weryfikują.
Dodawanie bloku do łańcucha bloków: Jeśli blok okaże się prawidłowy, zostanie dodany do łańcucha bloków, a górnik zostanie nagrodzony.
Dostosowywanie poziomu trudności: Sieć okresowo dostosowuje poziom trudności łamigłówki PoW, aby zapewnić stałą szybkość wydobywania bloków, pomimo zmian całkowitej mocy obliczeniowej.
Inne: Istnieją inne algorytmy, takie jak DPos, znane jako Delegated Proof of Stake, w którym delegaci są wybierani, a drugi to Byzantine Error Tolerantion (PBFT).
Dodawanie dowodu pracy do łańcucha bloków
Zmodyfikuj klasę Block, aby uwzględnić atrybut proof i metodę proof_of_work:
Zaktualizowano klasę Blockchain, aby zweryfikować dowód za pomocą funkcji add_block.
Tworzenie prostego interfejsu API łańcucha bloków za pomocą Flask
1. Konfiguracja Flask
Zainstaluj Flask:pip install Flask
2. Budowanie API
Utwórz aplikację Flask i zdefiniuj punkty końcowe służące do dodawania bloków i przeglądania łańcucha bloków.
Uruchamianie i testowanie aplikacji
1. Uruchamianie aplikacji Flask
Uruchom aplikację Flask: (w wierszu poleceń) python app.py
2. Testowanie za pomocą Postmana
Dodaj blok: curl -X POST -H „Content-Type: application/json” -d ‘{“data”: “Some data”}’ http://localhost:5000/mine
Wyświetl Blockchain: curl http://localhost:5000/chain
Z powyższych komentarzy wynika, że aplikacja będzie hostowana na localhost:5000/chain
Przykład budowania aplikacji Blockchain na żywo
1. Realizacja krok po kroku
Poniżej przedstawiono pełny zestaw operacji niezbędnych do opracowania aplikacji blockchain: