Opanuj Blockchain w mgnieniu oka część 2 — wdrożenie PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Opanowanie Blockchain w mgnieniu oka część 2 — wdrożenie

Purbaryandi

W tej serii artykułów zbudujemy uproszczoną kryptowalutę opartą na prostej implementacji blockchain w Golang w mniej niż 5 minut. aby wykonać ten projekt, musisz najpierw zainstalować golang. w przypadku edytora tekstu możesz użyć czegokolwiek, tutaj używam kodu studia wizualnego.

Opanuj Blockchain w mgnieniu oka część 2 — wdrożenie PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.
źródło: bit Degree

Czy to zainstalowałeś? W porządku, zróbmy to!

jeśli utworzyłeś projekt, utwórz plik main.go . oke, pozwalamy na kodowanie, najpierw zaczniemy od main.go Zacznijmy od części Blockchain struct Block. W blockchainie bloki przechowują cenne informacje. Na przykład bitcoin blokuje transakcje przechowujące, co jest esencją każdej kryptowaluty. Poza tym blok zawiera pewne informacje techniczne, takie jak jego wersja, bieżący znacznik czasu i skrót poprzedniego bloku. W tym artykule nie będziemy implementować bloku w sposób opisany w specyfikacjach blockchain lub Bitcoin, zamiast tego użyjemy jego uproszczonej wersji, która zawiera tylko istotne informacje. Oto jak to wygląda. tutaj mamy blok struktury:

wpisz strukturę blokową {

Timestamp to aktualny znacznik czasu (kiedy blok jest tworzony), transactions to faktycznie cenne informacje zawarte w bloku, prevhas przechowuje skrót poprzedniego bloku i Hash jest skrótem bloku. W specyfikacji Bitcoina Timestamp, prevhash, Hash to nagłówki bloków, które tworzą osobną strukturę danych, oraz transakcje (transaction w naszym przypadku) jest osobną strukturą danych. Dlatego dla uproszczenia mieszamy je tutaj.

Jak więc obliczyć skróty? Sposób obliczania skrótów jest bardzo ważną cechą łańcucha bloków i to właśnie ta cecha sprawia, że ​​łańcuch bloków jest bezpieczny. Rzecz w tym, że obliczenie skrótu jest operacją trudną obliczeniowo, zajmuje trochę czasu nawet na szybkich komputerach (dlatego ludzie kupują potężne procesory graficzne do wydobywania Bitcoinów). Jest to celowy projekt architektoniczny, który utrudnia dodawanie nowych bloków i uniemożliwia ich modyfikację po dodaniu. Omówimy i zaimplementujemy ten mechanizm w przyszłym artykule.

Na razie po prostu weźmiemy pola blokowe, połączymy je i obliczymy skrót SHA-256 dla połączonej kombinacji. Zróbmy to w Newhash metoda:

func NewHash(czas czas.Czas, transakcje []string, prevhash []bajt) []bajt {

Następnie, zgodnie z konwencją Golanga, zaimplementujemy funkcję, która uprości tworzenie bloku i wykończenie:

func Bloki(transakcje []string, prevhash []bajt) *Blokuj {

kontynuujemy tworzenie funkcji drukowania. funkcja drukowania jest przydatna do drukowania zawartości każdego bloku wykonującego transakcję. oto kod:

func Drukuj(blok *blok) {

I funkcja transakcji dla transakcji drukowania:

func Transakcja(blok *Blok) {

po wykonaniu wszystkich wymaganych funkcji użyjemy go w funkcji głównej:

funkcja główna() {

OK, cały kod, który skończyliśmy pisać. uruchommy go, wpisując w terminalu go run main.go. Wyjście :

Wnioski

Zbudowaliśmy bardzo prosty prototyp blockchain: to po prostu tablica bloków, przy czym każdy blok ma połączenie z poprzednim. Rzeczywisty łańcuch bloków jest jednak znacznie bardziej złożony. W naszym blockchainie dodawanie nowych bloków jest łatwe i szybkie, ale w prawdziwym blockchainie dodawanie nowych bloków wymaga trochę pracy: przed uzyskaniem pozwolenia na dodanie bloków należy wykonać kilka ciężkich obliczeń (mechanizm ten nazywa się Proof-of-Work). Ponadto blockchain jest rozproszoną bazą danych, w której nie ma jednego decydenta. Zatem nowy blok musi zostać potwierdzony i zaakceptowany przez pozostałych uczestników sieci (mechanizm ten nazywa się konsensusem). A w naszym blockchainie nie ma jeszcze żadnych transakcji!

Source: https://medium.com/@purbaryandi/mastering-blockchain-in-no-time-part-2-implementation-433dc7967fe8?source=rss——cryptocurrency-5

Znak czasu:

Więcej z Średni