Blockchain za financijski proizvod: zašto vam je potreban i kako ga izgraditi

Napomena: uzorci koda mogu se prikazati nepropisno zbog označavanja. Preporučujem da nastavite čitati izvorni članak na našem blogu kako biste bili sigurni da su svi primjeri pravilno prikazani.

Zabavlja me što je najperspektivnija tehnologija desetljeća povezana sa špekulacijama i financijskim prijevarama. To je stvarno čudno. Umjesto da ga pokušavamo pravilno primijeniti, imamo Fashion Blockchain konferencije i priče o uspješnim ICO-ima. Srećom, postoje neki poduzetnici i inženjeri dovoljno hrabri da pokušaju primijeniti blockchain kako bi mnogi mogli imati koristi od toga.

Neću govoriti o digitalnim revolucijama i stvarima 'promijenimo riječi', već ću umjesto toga (1) podijeliti svoja razmišljanja zašto financije mogu imati koristi od blockchaina više od bilo koje druge industrije i (2) ) vas naučiti kako izgraditi jednostavan blockchain u Pythonu.

Nisi za njega nikakva industrija. Tko je spreman za Blockchain

U većini članaka pročitao sam o "Zašto proizvodi propadaju", autori uvijek spominju visoke cijene, slabe marketinške kampanje, nedostatak jedinstvenosti proizvoda, usmjeravanje na pogrešno tržište. Malo je, međutim, bilo što napisalo o proizvodima koji su pušteni u pogrešno vrijeme. Najistaknutiji primjer je Internet: postao je dostupan u ranim 90-ima, ali većina ljudi, uključujući i poduzetnike, nije mogla shvatiti kako ga primijeniti u korist.

Zašto se to dogodilo? Djelomično zato što ljudi nisu bili spremni za tako značajan korak prema globalizaciji; dijelom i zato što je malo ljudi pokušalo proučiti kako koristiti Internet u svoju korist, iako su svi znali da postoji.

Nešto slično se događa s blockchainom - mnogi razgovaraju o tome, manje ih razumije i puno manje njih zna kako ga koristiti. Kako to postoji već više od desetljeća i još uvijek ne postoji globalna aplikacija koja se temelji na blockchainu? Nitko nema odgovor na to. Ali barem znamo gdje ga koristiti. Dopustite mi da objasnim.

Izvor: Microsoft Azure

Osoba je manje pouzdana od stroja. Zato je sferama koje su najviše podložne ljudskim pogreškama (krivotvorenje i prijevara) potrebna tehnologija koja bi te faktore mogla isključiti. Najviše problematično područje su financije jer se bavi novcem, a ljudi vole novac. Svi znamo da je ponekad teško odoljeti iskušenju zaraditi više.

Zato fintech startupi pokušavaju implementirati blockchain u financije - kako bi bili sigurni da se neće dogoditi prijevara. To je blockchain koji može isključiti treće strane iz trgovanja, optimizirati autentifikaciju osobe, pratiti financijsku transakciju i osigurati da je dokument originalan.

To ne znači da svakom fintech startapu treba blockchain. Evo jednostavnog kviza.

Ne treba vam blockchain ako za vas vrijedi sljedeće:

  • Nemate proračun za eksperimente. Implementacija blockchaina uvijek je rizična, tako da nema jamstva da ćete ostvariti profit.
  • Vi ste konzervativni. Blockchain može rezultirati velikim promjenama u strukturi organizacije, tako da ako niste spremni za to, ne bih to predlagao.
  • Rezultate želite odmah. Blockchain se odnosi na dugoročnu perspektivu. Ne očekujte nikakve rezultate za manje od godinu dana.

S druge strane, pokušajte blockchain u ovim slučajevima:

  • Želite dobiti investicije. Budući da je blockchain buzzword, on privlači više ulaganja od bilo koje druge obećane značajke.
  • Želite povećati svoju konkurentnost na tržištu. Izgradite financijski proizvod na blockchainu pokazat će svoju sposobnost u tom području. To će povećati privlačnost vaše tvrtke i za investitore i za kupce.
  • Možete si priuštiti eksperimente. Suprotno onome što sam gore napisao, ako vam proračun dopušta da zaposlite programere blockchaina i imate jaku viziju svog budućeg proizvoda, nastavite s tim.

Da bih dokazao da blockchain zapravo i nije tako težak, dat ću vam detaljne upute o tome kako ga izraditi.

Primjena blockchaina u fintechu

"Okviri" koji treba koristiti

CryptoNote

CryptoNote je tehnologija otvorenog koda koja vam omogućuje izradu tokena. Ima jednostavan vodič za stvaranje kriptovalute, a za pokretanje su potrebna dva čvora koja ćete koristiti za pokretanje Monero poslužitelja.

Korisni linkovi:

Kako stvoriti token., Kako stvoriti novčanik

Ethereum

Otvorena platforma za izgradnju decentraliziranih aplikacija s naglaskom na pokretanje programskog koda. "... Aplikacije koje rade točno onako kako su programirane bez mogućnosti zastoja, cenzure, prijevare ili smetnji treće strane."

ZeroNet

Koristite ZeroNet za stvaranje decentraliziranih web stranica. Sustav koristi mehanizme za adresiranje i provjeru Bitcoina i distribucijsku mrežu za distribuciju sadržaja BitTorrent za izradu web lokacija koja se ne mogu cenzurirati, blokirati ili krivotvoriti.

Kako stvoriti jednostavan blockchain

Dakle, sada kada znate alate neka napravi jednostavan blockchain. Koristit ću Python u ovom primjeru. Prvo ću objasniti osnovne elemente potrebne za izgradnju bloka.

Datum stvaranja

U unix formatu je vrijeme i vrijeme Trebat će vam kasnije - kada imate mnogo pokretačkih čvorova i dodate novi blok u vašu podružnicu, čvor će odabrati koji će blok koristiti na temelju datuma stvaranja.

Riječ ili ekspresija izmišljena za jednokratno korištenje

To je skup simbola koje moramo dodati bloku kako bismo sastavili kontrolni zbroj koji odgovara zahtjevu. Na primjer, ako je vrijednost nonce 5, tada moramo u podatkovni blok dodati 5 nula (00000) da bismo izračunali pravu kontrolnu sumu.

Kontrolna

Blokira podatke bez i plus kontrolni zbroj prethodnog bloka. SHA256 štiti lanac od ponovnog prepisivanja. Kako to funkcionira: Čvor izračunava kontrolni zbroj i uspoređuje s jednim od novih blokova - ako se podudaraju, blok se dodaje u blokovni lanac.

Podaci

Dio podataka koji će se pohraniti u blok i potpisati. Može sadržavati bilo koju vrstu podataka: popis transakcija (ne samo posljednju transakciju); podatke o računalu koje je stvorilo blok (poput njegove MAC adrese); detaljan datum stvaranja (vremenska zona).

Dokaz rada

Dokaz rada (PoW) jedinstveni je algoritam konsenzusa u blockchain mreži. Koristi se za potvrđivanje operacija i stvaranje novih lanaca u blockchainu. Glavna ideja PoW-a je dodati složenost izgradnji bloka na strani klijenta i smanjiti opterećenje na strani poslužitelja. Na primjer, kažem da ček mora imati 5 olovnih nula; to znači da ćemo se bez povećanja povećati sve dok kontrolna suma ne bude 5 olovnih nula.

Počnimo s kodom

Prvo ću stvoriti klasu za blok. Bit će to vrlo jednostavna klasa s konstruktorom - metoda za izračun kontrolnog zbroja i svojstva kako bi se provjerilo je li blok valjan. Imat ćemo dvije konstante, jednu za broj olovnih nula u kontrolnom zbroju, a drugu za prepoznavanje simbola koji ćemo upotrebljavati.

vrijeme uvoza
od uvoza hashliba sha256
 
Blok klase:
    CHECKSUM_LEAD_ZEROS = 5
    NONCE_SYMBOL = 'Z'
 
    def __init __ (samo, prev_blok, podaci):
        self._prev_block = prev_blok
        self.data = podaci
        self.checksum = Nema
        self.nonce = 0
        self.timestamp = time.time ()
 
    @property
    def je_valid (self):
        Checkum = self.calculate_checksum ()
 
        povratak (
            kontrolni zbroj [: self.CHECKSUM_LEAD_ZEROS] == '0' * self.CHECKSUM_LEAD_ZEROS
            i kontrolni zbroj == self.checksum
        )
 
    definiraj_checksum (samo):
        data = '|' .join ([
            str (self.timestamp),
            self.data,
            self._prev_block.checksum,
        ])
        data + = self.NONCE_SYMBOL * self.nonce
 
        povratak sha256 (bajtovi (podaci, 'utf-8')). hexdigest ()

Konstruktor

Konstruktor prihvaća samo 2 parametra - prvi je prethodni blok, a drugi su trenutni podaci bloka. Konstruktor također stvara vremensku marku i postavlja nulu kao svoju početnu vrijednost.

Vrijedi

Svojstvo koje izračunava kontrolni zbroj i uspoređuje ako je trenutni jednak izračunatoj i ima pravi broj nula.

Izračunajte kontrolni zbroj

Najsloženija metoda u našem kodu. Ova metoda pakira vremensku oznaku, podatke i zbroj prethodnog bloka u jedan niz. Zatim dodamo noncev niz; u našem slučaju to će biti popis "Z-ova". Tada izračunava kontrolni zbroj rezultata.

Sada imamo jednostavan, ali funkcionalan blok. Krenimo dalje i stvorimo lanac blokova. Za sada će krenuti jednostavan lanac bez mogućnosti pohrane i učitavanja podataka.

uvoz json
 
lanac klase:
 
    def __init __ (samo):
        self._chain = [
            self._get_genesis_block (),
        ]
 
    def je_valid (self):
        prev_block = self._chain [0]
        za blok u self._chain [1:]:
            assert prev_block.checksum == self._prev_block.checksum
            assert block.is_valid ()
            prev_block = blok
 
    def add_block (samo, podaci):
        blok = Blokiraj (self._chain [-1], podaci)
        blok = samo._find_nonce (blok)
        self._chain.append (blok)
 
        povratni blok
 
    @staticmethod
    def _get_genesis_block ():
        genesis_block = Blokiraj (nema, nema)
        genesis_block.checksum = '00000453880b6f9179c0661bdf8ea06135f1575aa372e0e70a19b04de0d4cbc7'
 
        povratak genesis_block
 
    @staticmethod
    def _find_nonce (blok):
        početak = '0' * Blokiraj.CHECKSUM_LEAD_ZEROS
        dok Istina:
            Checkum = block.calculate_checksum ()
            ako je kontrolni zbroj [: Block.CHECKSUM_LEAD_ZEROS] == početak:
                pauza
            blok.nonce + = 1
        block.checksum = ček
 
        povratni blok

Pogledajmo metode u našoj lančanoj klasi:

Konstruktor

Stvorio sam lanac sa samo jednim blokom - blokom geneze. Geneza blok je prvi blok lanca i ima samo kontrolni zbroj. Taj je blok potreban za dodavanje prvog pravog bloka u lanac jer pravi blok zahtijeva kontrolni zbroj posljednjeg bloka u lancu.

Dodavanje novog bloka

Ima samo jedan parametar - podatke za novi blok. Ovom metodom stvara se novi blok s danim podacima i izvodi metoda kako bi se pronašla ispravna vrijednost nonce. Tek tada će dodati novi blok u lanac.

Pronađi nonce

Ova metoda ima za cilj naći pravo značenje bloka. Ima beskonačnu petlju u kojoj povećavam nonce i izračunavam novi kontrolni zbroj. Zatim uspoređuje kontrolni zbroj s pravilima - za sada je to samo broj nula.

Potvrdite lanac

Ova metoda pokazuje je li lanac važeći - prolazi kroz sve blokove u lancu i provjerava svaki blok pojedinačno.

Poanta

Glavna poruka koju sam želio prenijeti je sljedeća: blockchain je mlada tehnologija, ali još uvijek imamo sve što možemo proučiti. Pronalazeći svoju najbolju praktičnu primjenu u fintechu, blockchain može pomoći tvrtkama da zaštite informacije, povećaju brzinu prijenosa podataka i što je najvažnije - isključe ljudski faktor.

Da biste naučili kako izgraditi blockchain, proučite moje primjere koda, napišite ga na željenom jeziku i pokušajte se igrati s njim. Tko zna, možda će vaš proizvod biti sljedeći izmjenjivač igara?

Pratite sljedeći dio o blockchainu i fintechu, uz složenije dijelove koda i prijedloge njegove praktične primjene u fintechu.

Ovaj članak o blockchainu za fintech proizvod napisao je Vadym Zakovinko - Backend inženjer u Django Starsu.
Ako smatrate da je ovaj post koristan, dodirnite gumb below ispod :)