Blockchain para un producto financiero: por qué lo necesita y cómo construirlo

Nota: los ejemplos de código pueden mostrarse incorrectamente debido a la rebaja. Recomiendo continuar leyendo el artículo original en nuestro blog para asegurarse de que todos los ejemplos se muestren correctamente.

Me divierte que la tecnología más prometedora de la década esté asociada con especulaciones y fraude financiero. Eso es realmente extraño. En lugar de tratar de aplicarlo correctamente, tenemos Conferencias de Fashion Blockchain e historias sobre ICO exitosas. Afortunadamente, hay algunos empresarios e ingenieros lo suficientemente valientes como para tratar de aplicar blockchain para que muchos puedan beneficiarse de ella.

No voy a hablar sobre revoluciones digitales y el tipo de cosas 'Cambiemos las palabras', sino que (1) compartiré mis pensamientos sobre por qué las finanzas pueden beneficiarse de blockchain más que cualquier otra industria, y (2 ) te enseñará cómo construir una cadena de bloques simple en Python.

No eres industria para él. ¿Quién está listo para Blockchain?

En la mayoría de los artículos que he leído sobre "Por qué los productos fallan", los autores siempre mencionan los precios altos, las campañas de marketing débiles, la falta de exclusividad de los productos y la orientación al mercado equivocado. Pocos, sin embargo, han escrito algo sobre los productos que se lanzan en el momento equivocado. El ejemplo más destacado es Internet: estuvo disponible a principios de los 90, pero la mayoría de las personas, incluidos los empresarios, no pudieron descubrir cómo aplicarlo para beneficiarse.

¿Por qué sucedió? En parte porque la gente no estaba lista para un paso tan significativo hacia la globalización; en parte porque pocos intentaron estudiar cómo usar Internet para su propio beneficio, aunque todos sabían que existía.

Algo así le está sucediendo a blockchain: muchos están hablando de eso, menos lo entienden y mucho menos saben cómo usarlo. ¿Cómo es que ha existido durante más de una década y todavía no hay una aplicación global basada en blockchain? Nadie tiene la respuesta a eso. Pero al menos sabemos dónde usarlo. Dejame explicar.

Fuente: Microsoft Azure

Una persona es menos confiable que una máquina. Es por eso que las esferas que están más sujetas a errores humanos (falsificación y fraude) necesitaban una tecnología que pudiera excluir esos factores. El área más problemática son las finanzas porque se trata de dinero y la gente ama el dinero. Todos sabemos que a veces es difícil resistir la tentación de ganar más.

Es por eso que las nuevas empresas fintech están tratando de implementar blockchain en las finanzas, para asegurarse de que no ocurra fraude. Es blockchain que puede excluir a terceros de las operaciones comerciales, optimizar la autenticación de personas, realizar un seguimiento de las transacciones financieras y garantizar que el documento sea genuino.

No significa que todas las nuevas empresas fintech necesiten blockchain. Aquí hay un cuestionario simple.

No necesita blockchain si lo siguiente es cierto para usted:

  • No tienes presupuesto para experimentos. La implementación de blockchain siempre es arriesgada, por lo que no hay garantía de que se beneficie.
  • Eres conservador Blockchain puede provocar cambios importantes en la estructura de la organización, por lo que, a menos que esté preparado para ello, no lo sugeriría.
  • Quieres los resultados ahora mismo. Blockchain tiene que ver con la perspectiva a largo plazo. No esperes ningún resultado en menos de un año.

Por otro lado, deberás probar blockchain en estos casos:

  • Quieres conseguir inversiones. Dado que blockchain es una palabra de moda, atrae más inversiones que cualquier otra característica prometida.
  • Desea aumentar su competitividad en el mercado. Construir un producto financiero en blockchain demostrará su competencia en el área. Esto aumentará el atractivo de su empresa tanto para los inversores como para los clientes.
  • Puedes permitirte los experimentos. Al contrario de lo que he escrito anteriormente, si su presupuesto le permite contratar desarrolladores de blockchain y tiene una visión sólida sobre su producto futuro, hágalo.

Ahora, para demostrar que blockchain no es realmente tan difícil, te daré instrucciones paso a paso sobre cómo construirlo.

Aplicación de blockchain en fintech

"Frameworks" para usar

CryptoNote

CryptoNote es una tecnología de código abierto que le permite crear tokens. Tiene una guía simple para crear una criptomoneda, y el lanzamiento requiere dos nodos que usará para ejecutar el servidor Monero.

Enlaces útiles:

Cómo crear un token., Cómo crear una billetera.

Ethereum

Una plataforma abierta para crear aplicaciones descentralizadas con el foco en ejecutar el código de programación. "... Aplicaciones que se ejecutan exactamente como están programadas sin ninguna posibilidad de tiempo de inactividad, censura, fraude o interferencia de terceros".

ZeroNet

Use ZeroNet para crear sitios web descentralizados. El sistema utiliza los mecanismos de verificación y direccionamiento de Bitcoin, y la red de distribución de contenido distribuido de BitTorrent para construir sitios que no pueden ser censurados, bloqueados o falsificados.

Cómo crear blockchain simple

Entonces, ahora que conoce las herramientas, creemos una cadena de bloques simple. Usaré Python en este ejemplo. Primero, explicaré los elementos centrales necesarios para construir un bloque.

Fecha de creación

Es la hora y la hora en formato unix. Lo necesitará más tarde: cuando tenga muchos nodos en ejecución y agregue un nuevo bloque a su rama, el nodo elegirá qué bloque usar según la Fecha de creación.

Mientras tanto

Es un conjunto de símbolos que debemos agregar al bloque para crear la suma de verificación que se ajuste al requisito. Por ejemplo, si el valor nonce es 5, entonces tenemos que agregar 5 ceros (00000) al bloque de datos para calcular la suma de verificación correcta.

Suma de comprobación

Son datos de bloque con nonce más suma de verificación del bloque anterior. SHA256 protege la cadena de ser reescrita. Cómo funciona: Node calcula la suma de comprobación y la compara con uno de los nuevos bloques; si coinciden, el bloque se agrega a la cadena de bloques.

Datos

Un dato que se almacenará en un bloque y se firmará. Puede contener cualquier tipo de datos: una lista de transacciones (no solo la última transacción); la información sobre la computadora que creó el bloque (como su dirección MAC); una fecha detallada de creación (la zona horaria).

Prueba de trabajo

La prueba de trabajo (PoW) es un algoritmo de consenso único en una red blockchain. Se utiliza para validar las operaciones y la creación de nuevas cadenas en blockchain. La idea principal de PoW es agregar complejidad a la construcción de un bloque en el lado del cliente y reducir la carga en el lado del servidor. Por ejemplo, digo que la suma de comprobación debe tener 5 ceros iniciales; significa que aumentaremos nonce hasta que la suma de verificación tenga 5 ceros iniciales.

Comencemos con un código

Primero, crearé una clase para un bloque. Será una clase muy simple con un constructor, un método para calcular la suma de verificación y la propiedad para verificar que el bloque sea válido. Tendremos dos constantes, una para el número de ceros iniciales en la suma de verificación y la segunda para identificar qué símbolo usaremos con el nonce.

tiempo de importación
de hashlib import sha256
 
Bloque de clase:
    CHECKSUM_LEAD_ZEROS = 5
    NONCE_SYMBOL = 'Z'
 
    def __init __ (self, prev_block, data):
        self._prev_block = prev_block
        self.data = data
        self.checksum = Ninguno
        self.nonce = 0
        self.timestamp = time.time ()
 
    @propiedad
    def is_valid (self):
        checksum = self.calculate_checksum ()
 
        regreso (
            suma de comprobación [: self.CHECKSUM_LEAD_ZEROS] == '0' * self.CHECKSUM_LEAD_ZEROS
            y checksum == self.checksum
        )
 
    def Calculate_checksum (self):
        data = '|' .join ([
            str (self.timestamp),
            self.data,
            self._prev_block.checksum,
        ])
        datos + = self.NONCE_SYMBOL * self.nonce
 
        return sha256 (bytes (datos, 'utf-8')). hexdigest ()

Constructor

El constructor acepta solo 2 parámetros: el primero es el bloque anterior y el segundo son los datos del bloque actual. Constructor también crea la marca de tiempo y establece nonce a cero como su valor inicial.

Es válida

Una propiedad que calcula la suma de verificación y compara si la actual es igual a la calculada y tiene el número correcto de ceros.

Calcular suma de comprobación

El método más complicado en nuestro código. Este método empaqueta la marca de tiempo, los datos y la suma de verificación del bloque anterior en una cadena. Luego agregamos una cadena nonce; en nuestro caso, será una lista de "Z". Luego calcula la suma de comprobación de la cadena de resultados.

Ahora tenemos un bloque simple pero funcional. Sigamos adelante y creemos una cadena de bloques. Por ahora, se irá una cadena simple sin la capacidad de almacenar y cargar datos.

importar json
 
Cadena de clase:
 
    def __init __ (self):
        self._chain = [
            self._get_genesis_block (),
        ]
 
    def is_valid (self):
        prev_block = self._chain [0]
        para el bloque en self._chain [1:]:
            afirmar prev_block.checksum == self._prev_block.checksum
            afirmar block.is_valid ()
            prev_block = block
 
    def add_block (self, data):
        block = Block (self._chain [-1], datos)
        bloque = self._find_nonce (bloque)
        self._chain.append (bloque)
 
        bloque de retorno
 
    @staticmethod
    def _get_genesis_block ():
        genesis_block = Bloquear (Ninguno, Ninguno)
        genesis_block.checksum = '00000453880b6f9179c0661bdf8ea06135f1575aa372e0e70a19b04de0d4cbc7'
 
        return genesis_block
 
    @staticmethod
    def _find_nonce (bloque):
        principio = '0' * Bloque.CHECKSUM_LEAD_ZEROS
        mientras cierto:
            checksum = block.calculate_checksum ()
            si suma de comprobación [: Block.CHECKSUM_LEAD_ZEROS] == comienzo:
                rotura
            block.nonce + = 1
        block.checksum = checksum
 
        bloque de retorno

Echemos un vistazo a los métodos en nuestra clase de cadena:

Constructor

Creé una cadena con solo un bloque: un bloque de génesis. El bloque Genesis es el primer bloque de la cadena y solo tiene una suma de comprobación. Este bloque es necesario para agregar el primer bloque real a la cadena porque el bloque real requiere la suma de comprobación del último bloque de la cadena.

Agregar un nuevo bloque

Tiene solo un parámetro: datos para un nuevo bloque. Este método crea un nuevo bloque con los datos dados y el método de ejecución para encontrar el valor de nonce correcto. Solo entonces agregará un nuevo bloque a la cadena.

Encuentra el nonce

Este método tiene como objetivo encontrar el nonce correcto para un bloque. Tiene un bucle infinito donde aumento el nonce y calculo una nueva suma de verificación. Luego compara la suma de verificación con las reglas: por ahora, solo es el número de ceros.

Validar la cadena

Este método muestra si la cadena es válida: recorre todos los bloques de la cadena y comprueba cada bloque individualmente.

Línea de fondo

El mensaje principal que quería transmitir es este: blockchain es una tecnología joven, pero tenemos todo para estudiarla. Habiendo encontrado su mejor aplicación práctica en fintech, blockchain puede ayudar a las empresas a proteger la información, aumentar la velocidad de transmisión de datos y, lo más importante, excluir el factor humano.

Para aprender a construir una cadena de bloques, estudie mis ejemplos de código, escríbalo en su idioma preferido e intente jugar con él. ¿Quién sabe, tal vez su producto será el próximo cambio de juego?

Estén atentos para la próxima parte sobre blockchain y fintech, con piezas de código más complejas y sugerencias sobre su aplicación práctica en fintech.

Este artículo sobre blockchain para productos fintech está escrito por Vadym Zakovinko, ingeniero de backend en Django Stars.
Si encuentra útil esta publicación, toque el botón a continuación :)