Jak wydobywać blockchain w Java PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Jak wydobywać Blockchain w Javie

Jak wydobywać blockchain w Java PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Zacznijmy od stworzenia nowej usługi dla użytkowników i górników. Będzie to kopia pozostałych dwóch usług dla blockchainu i węzłów, ale dodamy nowy kontroler, usługę i modele. Ponieważ górnicy są użytkownikami (tj. potrzebują adresu, który będą uwzględniani w transakcjach), zaczniemy od użytkowników. Utwórzmy punkt końcowy, aby dodać, wyświetlić listę i uzyskać informacje o użytkowniku. Zamierzam użyć podstawowego uwierzytelniania dla list i get punkty końcowe. The add punkt końcowy będzie otwarty, ponieważ każdy powinien mieć możliwość utworzenia użytkownika.

Chociaż chcę zademonstrować pewien poziom uwierzytelniania, nie chcę zagłębiać się w szczegóły prawdziwego systemu uwierzytelniania. Aby symulować sprawdzanie, nazwa użytkownika i hasło muszą być takie same, a specjalny użytkownik do wyświetlania wszystkich użytkowników musi mieć na imię admin. Natychmiast utworzę również użytkownika admin, jeśli taki nie istnieje podczas uruchamiania.

Oto co mam dla kontrolera:

Usługa jest dość prosta:

Użyj application.yaml aby ustawić parametry MongoDB:

Teraz możesz użyć docker-compose.yaml plik, aby uruchomić MongoDB i przetestować nowe punkty końcowe. Powinieneś móc dodawać i wyświetlać listę użytkowników w systemie. Pamiętaj tylko o zastosowaniu uwierzytelniania podstawowego. Należy pamiętać, że przy podstawowym uwierzytelnianiu używana jest nazwa użytkownika, natomiast punkt końcowy korzysta z identyfikatora w celu efektywniejszego wyszukiwania.

Co jeszcze ma użytkownik oprócz identyfikatora i nazwy? W systemie kryptowalut myślimy o użytkowniku jak o posiadaniu portfela. Portfel składa się z adresu i pary kluczy prywatny/publiczny. W naszym systemie połączymy je tak, aby użytkownik mógł mieć tylko jeden „portfel” (tzn. adres i parę kluczy prywatny/publiczny). Dzięki temu użytkownik może tworzyć transakcje. Nie możemy użyć identyfikatora jako adresu, ponieważ każdy użytkownik jest podłączony do węzła, a identyfikator nie jest unikalny w poszczególnych węzłach. Więc użyjemy UUID dla adresu. Następnie pozostaje już tylko kwestia utworzenia pary kluczy prywatny/publiczny. Oto aktualizacja UserService.addUser:

Ponieważ nie chcemy nigdy ujawniać privateKey, dodamy tę linię do dowolnego łańcucha w UserController która zwróci użytkownika lub listę użytkowników:

.doOnNext(u -> u.setPrivateKey(null));

Teraz jesteśmy gotowi do utworzenia transakcji w imieniu użytkownika.

Mamy podstawowy punkt końcowy tworzenia transakcji w usłudze blockchain, więc go usuniemy. Zamierzamy zachować punkt końcowy dodawania transakcji i możemy go wywołać z naszego nowego punktu końcowego w usłudze użytkownika. Nowy punkt końcowy w kontrolerze wygląda następująco:

Nowa metoda w UserService klasa wygląda tak:

Jak widać, bierzemy klucz prywatny zakodowany w bazie danych i używamy go do podpisania umowy wejściowej. Tak jak stworzyliśmy withHash metodę, stworzyliśmy withSignature ponieważ podpis musi zostać obliczony po zastosowaniu danych. Nie zawracamy sobie głowy sprawdzaniem adresów wyjściowych, ponieważ nie ma jednego źródła prawdy dotyczącego adresów. Istnieją pewne specyficzne formaty adresów używane przez niektóre kryptowaluty, które zapobiegają rozdawaniu monet na nieistniejące adresy, ale nie ma sposobu, aby mieć pewność, że nie wyślesz swoich monet do przysłowiowego bit-bucketa.

Źródło: https://betterprogramming.pub/how-to-mine-the-blockchain-in-java-9647de36a8fc?source=rss——-8—————–kryptowaluta

Znak czasu:

Więcej z Średni