Blockchain pentru un produs financiar: De ce ai nevoie și cum să-l construiești

Notă: eșantioanele de cod pot fi afișate necorespunzător din cauza marcajului. Vă recomand să continuați să citiți articolul original pe blogul nostru pentru a vă asigura că toate exemplele sunt afișate corect.

Mă amuză faptul că cea mai promițătoare tehnologie a deceniului este asociată cu speculații și fraude financiare. Este foarte ciudat. În loc să încercăm să îl aplicăm corect, avem Conferințe Blockchain Fashion și povești despre ICO-uri de succes. Din fericire, există unii antreprenori și ingineri suficient de îndrăzneți pentru a încerca să aplice blockchain, astfel încât mulți să poată beneficia de acesta.

Nu voi vorbi despre revoluții digitale și despre „Haideți să schimbăm cuvintele”, dar, în schimb, voi împărtăși gândurile despre motivul pentru care finanțele pot beneficia de blockchain mai mult decât orice altă industrie și (2) ) vă învață cum să construiți un blockchain simplu în Python.

Nu ești industrie pentru el. Cine este gata pentru Blockchain

În majoritatea articolelor am citit despre „De ce produsele nu reușesc”, autorii menționează întotdeauna prețuri ridicate, campanii de marketing slabe, lipsa de unicitate a produselor, care vizează o piață greșită. Totuși, puțini au scris ceva despre produsele lansate la momentul nepotrivit. Cel mai proeminent exemplu este Internetul: a devenit disponibil la începutul anilor 90, dar majoritatea oamenilor, inclusiv antreprenorii, nu au putut să-și dea seama cum să îl aplice pentru a beneficia.

De ce s-a întâmplat? În parte, deoarece oamenii nu erau pregătiți pentru un pas atât de important spre globalizare; parțial pentru că puțini au încercat să studieze cum să utilizeze internetul în beneficiul lor, deși toată lumea știa că există.

Ceva de genul acesta se întâmplă cu blockchain - mulți vorbesc despre asta, mai puțini îl înțeleg și mult mai puțini știu să-l folosească. Cum a trecut de mai bine de un deceniu și încă nu există o aplicație globală bazată pe blockchain? Nimeni nu are răspunsul la asta. Dar cel puțin știm unde să-l folosim. Lasă-mă să explic.

Sursa: Microsoft Azure

O persoană este mai puțin fiabilă decât o mașină. Acesta este motivul pentru care sferele care sunt cele mai supuse erorilor umane (fals și fraudă) aveau nevoie de o tehnologie care să excludă acești factori. Cea mai grea zonă este finanța, deoarece se ocupă de bani, iar oamenii iubesc banii. Știm cu toții că uneori este dificil să rezistăm tentației de a câștiga mai mult.

Acesta este motivul pentru care pornirile fintech încearcă să pună în aplicare blockchain în finanțe - pentru a se asigura că nu va avea loc o fraudă. Este un blockchain care poate exclude terții de la operațiunile de tranzacționare, să optimizeze autentificarea persoanelor, să urmărească tranzacțiile financiare și să se asigure că documentul este autentic.

Nu înseamnă că fiecare pornire fintech are nevoie de blockchain. Iată un simplu test.

Nu aveți nevoie de blockchain dacă următoarele sunt valabile pentru dvs.:

  • Nu aveți buget pentru experimente. Implementarea blockchain este întotdeauna riscantă, astfel încât nu există nicio garanție că veți obține profit.
  • Ești conservator. Blockchain poate duce la modificări majore în structura organizației, așa că, dacă nu sunteți pregătit pentru asta, nu aș sugera acest lucru.
  • Vrei rezultatele acum. Blockchain se referă la perspectiva pe termen lung. Nu vă așteptați niciun rezultat în mai puțin de un an.

Pe de altă parte, veți încerca blockchain în aceste cazuri:

  • Vrei să obții investiții. Întrucât blockchain este un cuvânt cheie, atrage mai multe investiții decât orice altă caracteristică promisă.
  • Doriți să vă sporiți competitivitatea pe piață. Construiți un produs financiar pe blockchain vă va demonstra competența în zonă. Acest lucru va crește atractivitatea companiei dvs. atât pentru investitori cât și pentru clienți.
  • Vă puteți permite experimente. Spre deosebire de ceea ce am scris mai sus, dacă bugetul dvs. vă permite să angajați dezvoltatori de blockchain și aveți o viziune puternică despre viitorul dvs. produs, mergeți la el.

Acum, pentru a demonstra că blockchain-ul nu este chiar atât de dificil, vă voi oferi instrucțiuni pas cu pas despre cum să-l construiți.

Aplicarea blockchain în fintech

„Cadre” de utilizat

CryptoNote

CryptoNote este o tehnologie open-source care vă permite să creați jetoane. Are un ghid simplu pentru crearea unei criptocurrency, iar lansarea necesită două noduri pe care le veți folosi pentru a rula serverul Monero.

Link-uri utile:

Cum se creează un jeton., Cum se creează un portofel

Ethereum

O platformă deschisă pentru construirea aplicațiilor descentralizate cu accent pe rularea codului de programare. „… Aplicațiile care rulează exact așa cum sunt programate, fără nicio posibilitate de oprire, cenzură, fraudă sau interferențe ale unor terți.”

ZeroNet

Utilizați ZeroNet pentru a crea site-uri web descentralizate. Sistemul folosește mecanismele de adresare și verificare a Bitcoin și rețeaua de livrare a conținutului distribuit BitTorrent pentru a construi site-uri care nu pot fi cenzurate, blocate sau falsificate.

Cum să creezi blockchain simplu

Prin urmare, acum că știți că instrumentele construim un blockchain simplu. Voi folosi Python în acest exemplu. În primul rând, voi explica elementele de bază necesare pentru a construi un bloc.

Data creării

Este ora și ora în format unix. Veți avea nevoie de el mai târziu - atunci când aveți mai multe noduri în curs de funcționare și adăugați un nou bloc la sucursală, nodul va alege ce bloc să folosească în funcție de data creării.

Nonce

Este un set de simboluri pe care trebuie să le adăugăm la bloc pentru a construi suma de control care se potrivește cerinței. De exemplu, dacă valoarea nonce este 5, atunci trebuie să adăugăm 5 zerouri (00000) la blocul de date pentru a calcula suma de control corectă.

checksum

Se blochează datele cu nonce plus suma de control din blocul anterior. SHA256 protejează lanțul de a fi rescrise. Cum funcționează: Nodul calculează suma de control și se compară cu cel al noilor blocuri - dacă se potrivesc, blocul este adăugat la blockchain.

Date

O bucată de date care vor fi stocate într-un bloc și semnate. Poate conține orice fel de date: o listă de tranzacții (nu numai ultima tranzacție); informațiile despre computerul care a creat blocul (cum ar fi adresa MAC); o dată detaliată a creării (fusul orar).

Dovada muncii

Dovada muncii (PoW) este un algoritm unic de consens într-o rețea blockchain. Este folosit pentru a valida operațiunile și crearea de noi lanțuri în blockchain. Ideea principală a PoW este de a adăuga complexitate la construirea unui bloc pe partea de client și a reduce sarcina pe partea de server. De exemplu, spun că suma de control trebuie să aibă 5 zerouri de plumb; înseamnă că vom crește nonce până când suma de control nu va avea 5 zerouri de plumb.

Să începem cu un cod

În primul rând, voi crea o clasă pentru un bloc. Va fi o clasă foarte simplă cu un constructor - o metodă pentru calcularea sumei de verificare și a proprietății pentru a verifica dacă blocul este valid. Vom avea două constante, una pentru numărul de zerouri de plumb în suma de control și a doua pentru a identifica simbolul pe care îl vom folosi cu nonce.

timp de import
din import hashlib sha256
 
Bloc clasa:
    CHECKSUM_LEAD_ZEROS = 5
    NONCE_SYMBOL = 'Z'
 
    def __init __ (auto, prev_blocare, date):
        self._prev_block = prev_block
        self.data = date
        self.checksum = Niciuna
        self.nonce = 0
        self.timestamp = time.time ()
 
    @proprietate
    def nu este valabil (auto):
        checksum = self.calculate_checksum ()
 
        întoarcere (
            checksum [: self.CHECKSUM_LEAD_ZEROS] == '0' * self.CHECKSUM_LEAD_ZEROS
            și checksum == self.checksum
        )
 
    def calcul_checksum (self):
        data = '|' .join ([
            str (self.timestamp),
            self.data,
            self._prev_block.checksum,
        ])
        date + = self.NONCE_SYMBOL * self.nonce
 
        return sha256 (octeți (date, 'utf-8')). hexdigest ()

Constructor

Constructorul acceptă doar 2 parametri - primul este blocul anterior, iar al doilea este blocul curent. Constructorul creează, de asemenea, marca de timp și stabilește nonce la zero ca valoare inițială.

Este valabil

O proprietate care calculează suma de control și se compară dacă cea actuală este egală cu cea calculată și are numărul corect de zerouri.

Calculați suma de control

Cea mai complicată metodă din codul nostru. Această metodă ambalează marcajul de timp, datele și suma de control a blocului precedent la un șir. Apoi adăugăm un șir nonce; în cazul nostru, va fi o listă cu „Z”. Apoi calculează suma de control a șirului de rezultate.

Acum avem un bloc simplu, dar funcțional. Să mergem mai departe și să creăm un lanț de blocuri. Deocamdată, un lanț simplu fără posibilitatea de a stoca și încărca date va merge.

import json
 
Lanț de clasă:
 
    def __init __ (self):
        self._chain = [
            self._get_genesis_block (),
        ]
 
    def nu este valabil (auto):
        prev_block = self._chain [0]
        pentru bloc în self._chain [1:]:
            assert prev_block.checksum == self._prev_block.checksum
            assert block.is_valid ()
            prev_block = bloc
 
    def add_block (auto, date):
        block = Block (self._chain [-1], date)
        bloc = self._find_nonce (bloc)
        self._chain.append (bloc)
 
        bloc retur
 
    @staticmethod
    def _get_genesis_block ():
        genesis_block = Blocare (Niciuna, Niciuna)
        genesis_block.checksum = '00000453880b6f9179c0661bdf8ea06135f1575aa372e0e70a19b04de0d4cbc7'
 
        returnează genesis_block
 
    @staticmethod
    def _find_nonce (bloc):
        begin = '0' * Block.CHECKSUM_LEAD_ZEROS
        pe când True:
            checksum = block.calculate_checksum ()
            if checksum [: Block.CHECKSUM_LEAD_ZEROS] == început:
                pauză
            bloc.nonce + = 1
        block.checksum = checksum
 
        bloc retur

Să aruncăm o privire asupra metodelor din clasa noastră de lanțuri:

Constructor

Am creat un lanț cu un singur bloc - un bloc de geneză. Blocul Genesis este primul bloc al lanțului și are doar o sumă de control. Acest bloc este necesar să adăugați primul bloc real în lanț, deoarece blocul real necesită controlul ultimului bloc din lanț.

Adăugarea unui bloc nou

Are un singur parametru - date pentru un bloc nou. Această metodă creează un bloc nou cu datele date și rulează metoda pentru a găsi valoarea nonce corectă. Abia atunci va adăuga un bloc nou lanțului.

Găsiți nonce

Această metodă își propune să găsească nonce potrivită pentru un bloc. Are o buclă infinită în care măresc nonce și calculez un nou checkum. Apoi, comparăm suma de control cu ​​regulile - deocamdată este doar numărul de zerouri.

Validați lanțul

Această metodă arată dacă lanțul este valid - Trece prin toate blocurile din lanț și verifică fiecare bloc individual.

Linia de jos

Mesajul principal pe care am vrut să-l transmit este acesta: blockchain este o tehnologie tânără, dar avem tot ce să o studiem. După ce a găsit cea mai bună aplicație practică în fintech, blockchain poate ajuta întreprinderile să protejeze informațiile, să crească viteza de transmitere a datelor și, cel mai important - să excludă factorul uman.

Pentru a învăța cum să construiți un blockchain, studiați exemplele mele de cod, scrieți-l în limba preferată și încercați să vă jucați cu acesta. Cine știe, poate produsul tău va fi următorul schimbător de jocuri?

Rămâneți la curent cu următoarea parte despre blockchain și fintech, cu bucăți de cod mai complexe și sugestii cu privire la aplicarea sa practică în fintech.

Acest articol despre blockchain pentru produsul fintech este scris de Vadym Zakovinko - Backend Engineer la Django Stars.
Dacă găsiți această postare utilă, atingeți butonul below de mai jos :)