Блокчейн за финансов продукт: Защо имате нужда и как да го изградите

Забележка: пробите от кодове могат да бъдат показани неправилно поради маркиране. Препоръчвам да продължите да четете оригиналната статия в нашия блог, за да сте сигурни, че всички примери са показани правилно.

Забавлява ме, че най-обещаващата технология на десетилетието е свързана със спекулации и финансови измами. Това е наистина странно. Вместо да се опитваме да го приложим правилно, имаме Fashion Blockchain Conferences и истории за успешни ICO. За щастие има някои смели предприемачи и инженери, които се опитват да приложат блокчейн, така че мнозина да се възползват от него.

Няма да говоря за дигитални революции и „Нека променим думите“ вид на нещата, но вместо това (1) ще споделя своите мисли за това защо финансите могат да се възползват от blockchain повече от която и да е друга индустрия, и (2 ) ще ви научи как да изграждате обикновена блокчейн в Python.

Вие не сте индустрия за него. Кой е готов за Blockchain

В повечето статии, които четох за „Защо продуктите се провалят“, авторите винаги споменават високите цени, слабите маркетингови кампании, липсата на уникалност на продуктите, насочени към грешен пазар. Малцина обаче са писали нещо за това, че продуктите са пуснати в неподходящ момент. Най-известният пример е Интернет: той стана достъпен в началото на 90-те, но повечето хора, включително предприемачите, не можаха да разберат как да го прилагат, за да се възползват.

Защо се случи? Отчасти защото хората не бяха готови за толкова значителна стъпка към глобализацията; отчасти защото малцина се опитаха да проучат как да използват Интернет в своя полза, въпреки че всички знаеха, че съществува.

Нещо подобно се случва с blockchain - мнозина говорят за това, по-малко го разбират и много по-малко знаят как да го използват. Как така това е вече повече от десетилетие и все още няма глобално приложение, базирано на блокчейн? Никой няма отговор на това. Но поне знаем къде да го използваме. Нека обясня.

Източник: Microsoft Azure

Човек е по-малко надежден от машина. Ето защо сферите, които са най-подложени на човешки грешки (фалшификация и измама), се нуждаят от технология, която може да изключи тези фактори. Най-проблемната област е финансите, защото се занимава с пари, а хората обичат парите. Всички знаем, че понякога е трудно да устоиш на изкушението да печелиш повече.

Ето защо стартъпите на fintech се опитват да внедрят блокчейн във финансите - за да не се случат измами. Това е blockchain, който може да изключи трети страни от търговски операции, да оптимизира удостоверяването на лицата, да проследява финансовите транзакции и да гарантира, че документът е истински.

Това не означава, че всеки fintech стартъп се нуждае от блокчейн. Ето един прост викторина.

Нямате нужда от blockchain, ако за вас е вярно следното:

  • Нямате бюджет за експерименти. Внедряването на blockchain винаги е рисковано, така че няма гаранция, че ще спечелите.
  • Ти си консервативен. Блокчейн може да доведе до големи промени в структурата на организацията, така че ако не сте готови за това, не бих го предложил.
  • Искате резултатите веднага. Blockchain е свързан с дългосрочната перспектива. Не очаквайте никакви резултати за по-малко от година.

От друга страна, трябва да опитате blockchain в тези случаи:

  • Искате да получите инвестиции. Тъй като blockchain е модна дума, тя привлича повече инвестиции, отколкото всяка друга обещана функция.
  • Искате да увеличите конкурентоспособността си на пазара. Изграждането на финансов продукт на blockchain ще демонстрира вашата компетентност в областта. Това ще увеличи привлекателността на вашата компания както за инвеститори, така и за клиенти.
  • Можете да си позволите експерименти. Противно на написаното по-горе, ако бюджетът ви позволява да наемете разработчици на блокчейн и имате силна визия за бъдещия си продукт, продължете.

Сега, за да докажа, че blockchain всъщност не е толкова труден, ще ви дам стъпка по стъпка инструкции как да го изградите.

Приложение на blockchain във fintech

„Рамки“, които да използвате

CryptoNote

CryptoNote е технология с отворен код, която ви позволява да създавате маркери. Той има просто ръководство за създаване на криптовалута и стартирането изисква два възела, които ще използвате за стартиране на Monero сървъра.

Полезни връзки:

Как да създадете означение., Как да създадете портфейл

Ethereum

Отворена платформа за изграждане на децентрализирани приложения с акцент върху изпълнението на програмния код. „… Приложения, които работят точно както е програмирано, без възможност за престой, цензура, измама или намеса на трети страни.“

ZeroNet

Използвайте ZeroNet за създаване на децентрализирани уебсайтове. Системата използва механизми за адресиране и проверка на Bitcoin и мрежата за разпространение на BitTorrent за разпространение на съдържание, за да изгради сайтове, които не могат да бъдат цензурирани, блокирани или подправени.

Как да създадете прост блокчейн

Така че сега, когато знаете, инструментите нека да изградим проста блокчейн. Ще използвам Python в този пример. Първо ще обясня основните елементи, необходими за изграждането на блок.

Дата на създаване

Това е текущото и часовото време в unix формат. Ще ви трябва по-късно - когато имате много работещи възли и добавите нов блок към вашия клон, възелът ще избере кой блок да използва въз основа на датата на създаване.

дадения случай

Това е набор от символи, които трябва да добавим към блока, за да изградим контролната сума, която отговаря на изискването. Например, ако стойността на nonce е 5, тогава трябва да добавим 5 нули (00000) към блока с данни, за да изчислим правилната контролна сума.

Контролната сума

Това е блок данни, без плюс контролна сума на предишния блок. SHA256 предпазва веригата от пренаписване. Как работи: Node изчислява контролната сума и сравнява с един от новите блокове - ако те съвпадат, блокът се добавя към blockchain.

Данни

Част от данни, които ще бъдат съхранени в блок и подписани. Може да съдържа всякакъв вид данни: списък на транзакциите (не само последната транзакция); информацията за компютъра, създал блока (като неговия MAC адрес); подробна дата на създаване (часовата зона).

Доказателство за работа

Доказателство за работа (PoW) е уникален консенсус алгоритъм в блокчейна мрежа. Използва се за валидиране на операциите и създаването на нови вериги в blockchain. Основната идея на PoW е ​​да добави сложност към изграждането на блок от страна на клиента и да намали натоварването от страна на сървъра. Например, казвам, че контролната сума трябва да има 5 оловни нули; това означава, че ще увеличаваме без значение, докато контролната сума има 5 оловни нули.

Да започнем с код

Първо, ще създам клас за блок. Ще бъде много прост клас с конструктор - метод за изчисляване на контролната сума и свойството, за да се провери дали блокът е валиден. Ще имаме две константи, една за брой оловни нули в контролната сума, а втората, за да идентифицираме кой символ ще използваме с нула.

време за внос
от внос на хешлиб sha256
 
Блок клас:
    CHECKSUM_LEAD_ZEROS = 5
    NONCE_SYMBOL = 'Z'
 
    def __init __ (самостоятелно, prev_block, данни):
        self._prev_block = prev_block
        self.data = данни
        self.checksum = Няма
        self.nonce = 0
        self.timestamp = time.time ()
 
    @Имот
    def е_валиден (самостоятелно):
        контролна сума = self.calculate_checksum ()
 
        връщане (
            контролна сума [: self.CHECKSUM_LEAD_ZEROS] == '0' * self.CHECKSUM_LEAD_ZEROS
            и контролна сума == self.checksum
        )
 
    дефинирайте_чексум (само):
        data = '|' .join ([
            (ул self.timestamp)
            self.data,
            self._prev_block.checksum,
        ])
        data + = self.NONCE_SYMBOL * self.nonce
 
        връщане sha256 (байтове (данни, 'utf-8')). hexdigest ()

конструктор

Конструктор приема само 2 параметъра - първият е предишният блок, а вторият са текущите данни за блока. Constructor също създава времевата маркировка и задава нула като начална стойност.

Е валиден

Свойство, което изчислява контролната сума и сравнява, ако текущата е равна на изчислената и има правилния брой нули.

Изчислете контролна сума

Най-сложният метод в нашия код. Този метод пакетира времевия знак, данни и контролната сума на предишния блок в един низ. След това добавяме низ от низове; в нашия случай това ще бъде списък със „Z“ След това изчислява контролната сума на резултата низ.

Сега имаме прост, но функционален блок. Нека да продължим и да създадем верига от блокове. Засега ще отиде обикновена верига без възможност за съхраняване и зареждане на данни.

импортиране на json
 
клас верига:
 
    def __init __ (самостоятелно):
        self._chain = [
            self._get_genesis_block (),
        ]
 
    def е_валиден (самостоятелно):
        prev_block = self._chain [0]
        за блок в self._chain [1:]:
            assert prev_block.checksum == self._prev_block.checksum
            assert block.is_valid ()
            prev_block = блок
 
    def add_block (самостоятелно, данни):
        block = Блок (self._chain [-1], данни)
        block = self._find_nonce (блок)
        self._chain.append (блок)
 
        блок за връщане
 
    @staticmethod
    def _get_genesis_block ():
        genesis_block = Блокиране (няма, няма)
        genesis_block.checksum = '00000453880b6f9179c0661bdf8ea06135f1575aa372e0e70a19b04de0d4cbc7'
 
        върнете genesis_block
 
    @staticmethod
    def _find_nonce (блок):
        начало = '0' * Блок.CHECKSUM_LEAD_ZEROS
        докато вярно:
            Checkum = block.calculate_checksum ()
            ако контролна сума [: Block.CHECKSUM_LEAD_ZEROS] == начало:
                почивка
            block.nonce + = 1
        block.checksum = контролна сума
 
        блок за връщане

Нека да разгледаме методите от нашия верижен клас:

конструктор

Създадох верига само с един блок - блок за генезис. Генезисният блок е първият блок на веригата и има само контролна сума. Този блок е необходим за добавяне на първия реален блок към веригата, защото истинският блок изисква контролната сума на последния блок във веригата.

Добавяне на нов блок

Той има само един параметър - данни за нов блок. Този метод създава нов блок с дадените данни и стартирайте метод, за да намерите правилната стойност на nonce. Едва след това ще добави нов блок към веригата.

Намерете без значение

Този метод има за цел да намери правилното понятие за блок. Той има безкраен цикъл, където увеличавам nonce и изчислявам нова контролна сума. След това сравнява контролната сума с правилата - засега това е само броят нули.

Утвърдете веригата

Този метод показва дали веригата е валидна - Тя преминава през всички блокове във веригата и проверява всеки блок поотделно.

Долната линия

Основното послание, което исках да предам, е следното: blockchain е млада технология, но ние имаме всичко, за да я изучим. Намирайки най-доброто си практическо приложение във fintech, blockchain може да помогне на бизнеса да защити информацията, да увеличи скоростта на предаване на данни и най-важното - да изключи човешкия фактор.

За да научите как да изградите блокчейн, изучете моите примери на код, напишете го на предпочитания от вас език и се опитайте да играете с него. Кой знае, може би вашият продукт ще бъде следващият смяна на игри?

Следете следващата част относно blockchain и fintech, с по-сложни парчета код и предложения за практическото му приложение във fintech.

Тази статия за blockchain за fintech продукт е написана от Вадим Заковинко - Backend Engineer в Django Stars.
Ако смятате тази публикация за полезна, моля, докоснете бутона по-долу :)