Blockchain pre finančný produkt: Prečo ho potrebujete a ako ho môžete zostaviť

Poznámka: Vzorky kódu sa môžu kvôli nesprávnemu zobrazeniu zobrazovať nesprávne. Odporúčame pokračovať v čítaní pôvodného článku na našom blogu, aby ste sa uistili, že všetky príklady sú zobrazené správne.

Baví ma, že najsľubnejšia technológia desaťročia súvisí so špekuláciami a finančnými podvodmi. To je naozaj čudné. Namiesto toho, aby sme sa ho snažili správne aplikovať, máme konferencie Fashion Blockchain a príbehy o úspešných ICO. Našťastie sú podnikatelia a inžinieri dosť odvážni, aby sa pokúsili uplatniť blockchain, aby z toho mohli mať úžitok mnohí.

Nebudem hovoriť o digitálnych revolúciách a o veciach „pozmeníme slová“, ale namiesto toho sa (1) podelím o svoje myšlienky o tom, prečo môžu financie ťažiť z blockchainu viac ako ktorýkoľvek iný priemysel, a (2) ) vás naučí, ako v Pythone zostaviť jednoduchý blockchain.

Nie ste pre neho priemysel. Kto je pripravený na blockchain

Vo väčšine článkov, ktoré som čítal o téme „Prečo produkty zlyhávajú“, autori vždy uvádzajú vysoké ceny, slabé marketingové kampane, nedostatok jedinečnosti produktov a zacielenie na nesprávny trh. Málokto však napísal niečo o produktoch vydávaných v nesprávny čas. Najvýznamnejším príkladom je internet: sprístupnil sa začiatkom 90. rokov, ale väčšina ľudí, vrátane podnikateľov, nedokázala prísť na to, ako ho uplatniť v prospech.

Prečo sa to stalo? Čiastočne preto, že ľudia neboli pripravení na taký významný krok k globalizácii; čiastočne preto, že len málokto sa pokúsil študovať, ako používať internet pre svoj vlastný prospech, hoci všetci vedeli, že existuje.

Niečo také sa deje na blockchain - mnohí o tom hovoria, menej tomu rozumejú a oveľa menej vedia, ako ich používať. Ako to, že to bolo asi desať rokov a stále neexistuje žiadna globálna aplikácia založená na blockchainoch? Nikto na to nemá odpoveď. Prinajmenšom však vieme, kde ho používať. Nechaj ma vysvetliť.

Zdroj: Microsoft Azure

Osoba je menej spoľahlivá ako stroj. Preto oblasti, ktoré sú najviac vystavené ľudským chybám (falšovanie a podvod), potrebovali technológiu, ktorá by tieto faktory mohla vylúčiť. Najťažšou oblasťou sú financie, pretože sa zaoberajú peniazmi a ľudia ich milujú. Všetci vieme, že niekedy je ťažké odolať pokušeniu zarobiť viac.

To je dôvod, prečo sa fintech startupy snažia implementovať blockchain vo financiách - aby nedošlo k podvodom. Je to blockchain, ktorý môže vylúčiť tretie strany z obchodných operácií, optimalizovať overovanie osôb, sledovať finančné transakcie a zabezpečiť, aby bol dokument pravý.

To neznamená, že každý fintech startup musí potrebovať blockchain. Tu je jednoduchý kvíz.

Blockchain nepotrebujete, ak pre vás platí toto:

  • Na experimenty nemáte žiadny rozpočet. Implementácia blockchainu je vždy riskantná, takže neexistuje žiadna záruka, že budete profitovať.
  • Ste konzervatívny. Blockchain môže mať za následok zásadné zmeny v organizačnej štruktúre, takže pokiaľ na to nebudete pripravení, nenavrhoval by som to.
  • Teraz chcete výsledky. Blockchain je o dlhodobej perspektíve. Neočakávajte žiadne výsledky za menej ako rok.

Na druhú stranu, skúste blockchain v týchto prípadoch:

  • Chcete získať investície. Pretože blockchain je módne slovo, priťahuje viac investícií ako ktorákoľvek iná sľúbená vlastnosť.
  • Chcete zvýšiť svoju konkurencieschopnosť na trhu. Vybudujte finančný produkt na blockchaine a preukážete svoju kompetenciu v tejto oblasti. Tým sa zvýši atraktívnosť vašej spoločnosti pre investorov aj zákazníkov.
  • Môžete si dovoliť experimenty. Na rozdiel od toho, čo som už písal vyššie, ak vám váš rozpočet umožňuje najať vývojárov blockchainu a máte silnú víziu o svojom budúcom produkte, choďte na to.

Teraz, aby sme dokázali, že blockchain v skutočnosti nie je taký zložitý, dám vám podrobné pokyny, ako ho postaviť.

Aplikácia blockchainu vo fintech

„Rámce“, ktoré sa majú použiť

CryptoNote

CryptoNote je technológia s otvoreným zdrojom, ktorá vám umožňuje vytvárať tokeny. Má jednoduchý návod na vytvorenie kryptomeny a spustenie vyžaduje dva uzly, ktoré použijete na spustenie servera Monero.

Užitočné odkazy:

Ako vytvoriť token., Ako vytvoriť peňaženku

ethereum

Otvorená platforma na vytváranie decentralizovaných aplikácií so zameraním na spustenie programovacieho kódu. „… Aplikácie, ktoré bežia presne tak, ako boli naprogramované, bez možnosti odstávky, cenzúry, podvodu alebo zasahovania tretích strán.“

ZeroNet

Použite ZeroNet na vytváranie decentralizovaných webových stránok. Systém využíva mechanizmy na adresovanie a overovanie bitcoinov a sieť distribúcie distribuovaného obsahu BitTorrent na vytváranie stránok, ktoré nemožno cenzurovať, blokovať alebo falšovať.

Ako vytvoriť jednoduchý blockchain

Teraz, keď viete, aké nástroje vytvoríme jednoduchú blockchain. V tomto príklade použijem Python. Najprv vysvetlím základné prvky potrebné na vytvorenie bloku.

Dátum vytvorenia

Je to aktuálny a čas v unixovom formáte. Budete ich potrebovať neskôr - ak máte veľa spustených uzlov a do svojej vetvy pridáte nový blok, uzol vyberie, ktorý blok sa použije na základe dátumu vytvorenia.

nonce

Je to sada symbolov, ktoré musíme pridať do bloku na zostavenie kontrolného súčtu, ktorý vyhovuje požiadavke. Napríklad, ak je hodnota nonce 5, potom musíme do dátového bloku pridať 5 núl (00000), aby sme vypočítali správny kontrolný súčet.

kontrolné

Sú to údaje bloku s kontrolným súčtom bez predchádzajúceho plusu predchádzajúceho bloku. SHA256 chráni reťaz pred prepísaním. Ako to funguje: Uzol vypočíta kontrolný súčet a porovná sa s jedným z nových blokov - ak sa zhodujú, blok sa pridá do blockchainu.

údaje

Časť údajov, ktoré sa uložia do bloku a sú podpísané. Môže obsahovať akýkoľvek druh údajov: zoznam transakcií (nielen posledná transakcia); informácie o počítači, ktorý blok vytvoril (napríklad jeho adresa MAC); podrobný dátum vytvorenia (časové pásmo).

Dôkaz o práci

Dôkaz o práci (PoW) je jedinečný konsenzuálny algoritmus v sieti blockchain. Používa sa na overenie operácií a vytvorenie nových reťazcov v blockchainu. Hlavnou myšlienkou PoW je zvýšiť zložitosť budovania bloku na strane klienta a znížiť zaťaženie na strane servera. Napríklad tvrdím, že kontrolný súčet musí mať 5 počiatočných núl; To znamená, že budeme zvyšovať hodnotu nonce, kým kontrolný súčet nebude mať 5 hlavných núl.

Začnime s kódom

Najprv vytvorím triedu pre blok. Bude to veľmi jednoduchá trieda s konštruktorom - metóda výpočtu kontrolného súčtu a vlastnosti na kontrolu platnosti bloku. Budeme mať dve konštanty, jednu pre počet olovených núl v kontrolnom súčte a druhú, aby sme identifikovali, ktorý symbol použijeme s touto jednotkou.

importovať čas
z importu hashlib sha256
 
blok triedy:
    CHECKSUM_LEAD_ZEROS = 5
    NONCE_SYMBOL = 'Z'
 
    def __init __ (self, prev_block, data):
        self._prev_block = prev_block
        self.data = dáta
        self.checksum = Žiadne
        self.nonce = 0
        self.timestamp = time.time ()
 
    @property
    def is_valid (self):
        kontrolný súčet = self.calculate_checksum ()
 
        návrat (
            kontrolný súčet [: self.CHECKSUM_LEAD_ZEROS] == '0' * self.CHECKSUM_LEAD_ZEROS
            a kontrolný súčet == self.checksum
        )
 
    def calculation_checksum (self):
        data = '|' .join ([
            str (self.timestamp),
            self.data,
            self._prev_block.checksum,
        ])
        data + = self.NONCE_SYMBOL * self.nonce
 
        návrat sha256 (bajty (dáta, 'utf-8')). hexdigest ()

staviteľ

Konštruktor akceptuje iba 2 parametre - prvý je predchádzajúci blok a druhý sú dáta aktuálneho bloku. Konštruktor tiež vytvorí časovú značku a nastaví nenulovú hodnotu ako počiatočnú hodnotu.

Je platné

Vlastnosť, ktorá vypočíta kontrolný súčet a porovná, či je súčasná hodnota rovná vypočítanému a má správny počet núl.

Vypočítajte kontrolný súčet

Najzložitejšia metóda v našom kóde. Táto metóda zbalí časovú značku, údaje a kontrolný súčet predchádzajúceho bloku do jedného reťazca. Potom pridáme reťazec nonce; v našom prípade to bude zoznam „Z“. Potom vypočíta kontrolný súčet výsledného reťazca.

Teraz máme jednoduchý, ale funkčný blok. Poďme ďalej a vytvoríme reťazec blokov. Zatiaľ bude fungovať jednoduchý reťazec bez možnosti ukladania a načítania údajov.

import json
 
reťazec triedy:
 
    def __init __ (self):
        self._chain = [
            self._get_genesis_block (),
        ]
 
    def is_valid (self):
        prev_block = self._chain [0]
        pre blok v self._chain [1:]:
            presertlock.checksum == self._prev_block.checksum
            presadiť blok.is_valid ()
            prev_block = blok
 
    def add_block (samostatne, údaje):
        block = Block (self._chain [-1], data)
        block = self._find_nonce (blok)
        self._chain.append (blok)
 
        návratový blok
 
    @staticmethod
    def _get_genesis_block ():
        genesis_block = Blok (Žiadne, Žiadne)
        genesis_block.checksum = '00000453880b6f9179c0661bdf8ea06135f1575aa372e0e70a19b04de0d4cbc7'
 
        návrat genesis_block
 
    @staticmethod
    def _find_nonce (blok):
        začiatok = '0' * Blok.CHECKSUM_LEAD_ZEROS
        zatiaľ čo Pravda:
            kontrolný súčet = block.calculate_checksum ()
            ak kontrolný súčet [: Block.CHECKSUM_LEAD_ZEROS] == začiatok:
                prestávka
            block.nonce + = 1
        block.checksum = kontrolný súčet
 
        návratový blok

Pozrime sa na metódy v našej triede reťazí:

staviteľ

Vytvoril som reťazec iba s jedným blokom - blokom genézy. Genesis blok je prvý blok reťazca a má iba kontrolný súčet. Tento blok je potrebný na pridanie prvého reálneho bloku do reťazca, pretože reálny blok vyžaduje kontrolný súčet posledného bloku v reťazci.

Pridáva sa nový blok

Má iba jeden parameter - údaje pre nový blok. Táto metóda vytvorí nový blok s danými údajmi a spustí metódu na nájdenie správnej hodnoty nonce. Až potom pripojí nový reťaz do reťazca.

Nájdite neteř

Cieľom tejto metódy je nájsť tú správnu netu pre blok. Má nekonečnú slučku, v ktorej zvyšujem neces a vypočítavam nový kontrolný súčet. Potom porovnáva kontrolný súčet s pravidlami - zatiaľ je to len počet núl.

Overte reťaz

Táto metóda zobrazuje, či je reťaz platná - prechádza všetkými blokmi v reťazci a každý blok kontroluje jednotlivo.

Spodná čiara

Hlavné posolstvo, ktoré som chcel povedať, je toto: blockchain je mladá technológia, ale musíme ju študovať. Po nájdení najlepšieho praktického uplatnenia vo fintech môže blockchain pomôcť podnikom chrániť informácie, zvýšiť rýchlosť prenosu údajov a čo je najdôležitejšie - vylúčiť ľudský faktor.

Ak sa chcete naučiť, ako zostaviť blockchain, prečítajte si moje príklady kódu, napíšte ho vo vami preferovanom jazyku a pokúste sa s ním hrať. Kto vie, možno bude váš produkt ďalším meničom hier?

Zostaňte naladení na ďalšiu časť o blockchainu a fintech, so zložitejšími časťami kódu a návrhmi na jeho praktické uplatnenie vo fintech.

Tento článok o blockchainu pre fintech produkt napísal Vadym Zakovinko - Backend Engineer v spoločnosti Django Stars.
Ak považujete tento príspevok za užitočný, klepnite na tlačidlo nižšie :)