金融商品のブロックチェーン:なぜ必要なのか、どのように構築するのか

注:マークダウンのため、コードサンプルが不適切に表示される場合があります。ブログの元の記事を読み続けて、すべての例を正しく表示することをお勧めします。

この10年間で最も有望な技術は、投機と金銭的詐欺に関連していることを私は楽しませています。それは本当に奇妙です。正しく適用しようとする代わりに、ファッションブロックチェーン会議と成功したICOに関するストーリーがあります。幸運なことに、ブロックチェーンを適用しようとするほど大胆な起業家やエンジニアがいます。

私はデジタル革命や「言葉を変えよう」といったことについて話すつもりはありませんが、代わりに、(1)金融が他のどの業界よりもブロックチェーンから利益を得ることができるかについての考えを共有します(2 )Pythonで簡単なブロックチェーンを構築する方法を教えます。

あなたは彼にとって産業ではありません。ブロックチェーンの準備ができている人

「なぜ製品が失敗するのか」について私が読んだほとんどの記事では、著者は常に、高価格、弱いマーケティングキャンペーン、製品の独自性の欠如、間違った市場をターゲットとしています。しかし、製品が間違った時期にリリースされることについて書いたことはほとんどありません。最も顕著な例はインターネットです。90年代初頭に利用可能になりましたが、起業家を含むほとんどの人々は、それを利益のために適用する方法を理解できませんでした。

なぜそれが起こったのですか?人々がグローバル化に向けたこのような重要な一歩を踏み出す準備ができていなかったからです。誰もがインターネットが存在することを知っていたにもかかわらず、自分自身の利益のためにインターネットを使用する方法を研究しようとした人はほとんどいなかったからです。

そのようなことがブロックチェーンで起こっています。多くの人がそれについて話し、それを理解する人は少なく、それを使用する方法を知っている人はほとんどいません。なぜ10年以上前に登場したのに、まだグローバルなブロックチェーンベースのアプリはありませんか?それに対する答えは誰にもありません。しかし、少なくとも私たちはそれをどこで使用するかを知っています。説明させてください。

ソース:Microsoft Azure

人は機械よりも信頼性が低い。そのため、人為的エラー(偽造や詐欺)の影響を最も受けやすい分野では、これらの要因を排除できる技術が必要でした。最も厄介な分野は金融です。なぜなら、それはお金を扱っており、人々はお金を愛しているからです。私たちは皆、もっと稼ぎたいという誘惑に抵抗するのが難しいことを知っています。

そのため、フィンテックの新興企業は、不正が発生しないように、ファイナンスにブロックチェーンを実装しようとしています。サードパーティを取引から除外し、個人認証を最適化し、金融取引を追跡し、ドキュメントが本物であることを確認できるブロックチェーンです。

すべてのフィンテックスタートアップがブロックチェーンを必要とするわけではありません。これは簡単なクイズです。

以下が当てはまる場合、ブロックチェーンは不要です。

  • 実験のための予算がありません。ブロックチェーンの実装には常にリスクが伴うため、利益が得られるという保証はありません。
  • あなたは保守的です。ブロックチェーンは組織構造に大きな変化をもたらす可能性があるため、準備ができていない限り、お勧めしません。
  • すぐに結果が必要です。ブロックチェーンは、長期的な視点に関するものです。 1年以内に結果を期待しないでください。

一方、次の場合にはブロックチェーンを試してください:

  • 投資を得たい。ブロックチェーンは流行語であるため、他の約束された機能よりも多くの投資を集めています。
  • 市場での競争力を高めたい。ブロックチェーンで金融商品を構築すると、この分野でのあなたの能力が実証されます。これにより、投資家と顧客の両方にとって貴社の魅力が高まります。
  • 実験に余裕があります。上記で書いたものとは逆に、予算でブロックチェーン開発者を雇うことができ、将来の製品について強いビジョンがある場合は、それを選んでください。

ここで、ブロックチェーンが実際にそれほど難しくないことを証明するために、ブロックチェーンを構築する方法について順を追って説明します。

フィンテックでのブロックチェーンの応用

使用する「フレームワーク」

CryptoNote

CryptoNoteは、トークンを作成できるオープンソーステクノロジーです。暗号通貨を作成するための簡単なガイドがあり、起動にはMoneroサーバーの実行に使用する2つのノードが必要です。

便利なリンク:

トークンを作成する方法、ウォレットを作成する方法

イーサリアム

プログラミングコードの実行に重点を置いた分散型アプリを構築するためのオープンプラットフォーム。 「…ダウンタイム、検閲、詐欺、またはサードパーティの干渉の可能性なしにプログラムされたとおりに正確に実行されるアプリケーション。」

ZeroNet

ZeroNetを使用して、分散Webサイトを作成します。システムは、Bitcoinのアドレス指定と検証のメカニズム、およびBitTorrentの分散コンテンツ配信ネットワークを使用して、検閲、ブロック、または偽造できないサイトを構築します。

シンプルなブロックチェーンを作成する方法

ツールがわかったので、簡単なブロックチェーンを作成しましょう。この例ではPythonを使用します。最初に、ブロックを構築するために必要なコア要素について説明します。

作成日

これは、Unix形式での現在と時刻です。後で必要になります。実行中のノードが多数あり、ブランチに新しいブロックを追加すると、ノードは作成日に基づいて使用するブロックを選択します。

ノンス

これは、要件に適合するチェックサムを構築するためにブロックに追加する必要がある一連のシンボルです。たとえば、ナンス値が5の場合、データブロックに5つのゼロ(00000)を追加して、正しいチェックサムを計算する必要があります。

チェックサム

ノンスと前のブロックのチェックサムを含むブロックデータです。 SHA256は、チェーンが書き換えられないように保護します。仕組み:ノードはチェックサムを計算し、新しいブロックの1つと比較します。一致する場合、ブロックはブロックチェーンに追加されます。

データ

ブロックに保存され、署名されるデータ。あらゆる種類のデータを含めることができます。トランザクションのリスト(最後のトランザクションだけでなく)。ブロックを作成したコンピューターに関する情報(MACアドレスなど)。作成の詳細な日付(タイムゾーン)。

仕事の証明

作業証明(PoW)は、ブロックチェーンネットワークにおけるユニークなコンセンサスアルゴリズムです。ブロックチェーン内の操作と新しいチェーンの作成を検証するために使用されます。 PoWの主なアイデアは、クライアント側のブロックの構築に複雑さを追加し、サーバー側の負荷を軽減することです。たとえば、チェックサムには5つの先行ゼロが必要だと言います。つまり、チェックサムのリードゼロが5つになるまでノンスを増やします。

コードから始めましょう

最初に、ブロックのクラスを作成します。これは、コンストラクターを持つ非常に単純なクラスです。チェックサムとプロパティを計算して、ブロックが有効であることを確認するメソッドです。 2つの定数があります。1つはチェックサムの先頭のゼロの数、もう1つはノンスで使用するシンボルを識別するためのものです。

輸入時間
hashlib import sha256から
 
クラスブロック:
    CHECKSUM_LEAD_ZEROS = 5
    NONCE_SYMBOL = 'Z'
 
    def __init __(self、prev_block、data):
        self._prev_block = prev_block
        self.data = data
        self.checksum =なし
        self.nonce = 0
        self.timestamp = time.time()
 
    @property
    def is_valid(self):
        チェックサム= self.calculate_checksum()
 
        リターン(
            checksum [:self.CHECKSUM_LEAD_ZEROS] == '0' * self.CHECKSUM_LEAD_ZEROS
            およびチェックサム== self.checksum
        )
 
    def calculate_checksum(self):
        データ= '|' .join([
            str(self.timestamp)、
            self.data、
            self._prev_block.checksum、
        ])
        データ+ = self.NONCE_SYMBOL * self.nonce
 
        return sha256(bytes(data、 'utf-8'))。hexdigest()

コンストラクタ

コンストラクターは2つのパラメーターのみを受け入れます。最初のパラメーターは前のブロックで、2番目のパラメーターは現在のブロックデータです。また、コンストラクターはタイムマークを作成し、初期値としてnonceをゼロに設定します。

有効です

チェックサムを計算し、現在のチェックサムが計算されたものと等しく、ゼロの数が正しいかどうかを比較するプロパティ。

チェックサムを計算する

コードで最も複雑なメソッド。このメソッドは、タイムマーク、データ、および前のブロックのチェックサムを1つの文字列にパックします。次に、ノンス文字列を追加します。この場合、「Z」のリストになります。次に、結果文字列のチェックサムを計算します。

これで、シンプルでありながら機能的なブロックができました。次に進み、ブロックのチェーンを作成しましょう。現時点では、データを保存およびロードする機能のない単純なチェーンが使用されます。

JSONをインポート
 
クラスチェーン:
 
    def __init __(self):
        self._chain = [
            self._get_genesis_block()、
        ]
 
    def is_valid(self):
        prev_block = self._chain [0]
        self._chain [1:]のブロックの場合:
            assert prev_block.checksum == self._prev_block.checksum
            block.is_valid()をアサートします
            prev_block =ブロック
 
    def add_block(self、data):
        block = Block(self._chain [-1]、data)
        block = self._find_nonce(block)
        self._chain.append(block)
 
        戻りブロック
 
    @staticmethod
    def _get_genesis_block():
        genesis_block = Block(なし、なし)
        genesis_block.checksum = '00000453880b6f9179c0661bdf8ea06135f1575aa372e0e70a19b04de0d4cbc7'
 
        genesis_blockを返す
 
    @staticmethod
    def _find_nonce(block):
        開始= '0' * Block.CHECKSUM_LEAD_ZEROS
        Trueの場合:
            チェックサム= block.calculate_checksum()
            checksum [:Block.CHECKSUM_LEAD_ZEROS] ==最初の場合:
                ブレーク
            block.nonce + = 1
        block.checksum =チェックサム
 
        戻りブロック

チェーンクラスのメソッドを見てみましょう。

コンストラクタ

ジェネシスブロックという1つのブロックのみを持つチェーンを作成しました。ジェネシスブロックはチェーンの最初のブロックであり、チェックサムのみがあります。実際のブロックはチェーンの最後のブロックのチェックサムを必要とするため、このブロックは最初の実際のブロックをチェーンに追加するために必要です。

新しいブロックを追加する

パラメーターは1つだけです(新しいブロックのデータ)。このメソッドは、指定されたデータとrunメソッドで新しいブロックを作成し、正しいナンス値を見つけます。その後、新しいブロックをチェーンに追加します。

ナンスを見つける

このメソッドは、ブロックに適切なノンスを見つけることを目的としています。ノンスを増やして新しいチェックサムを計算する無限ループがあります。次に、チェックサムとルールを比較します。現時点では、ゼロの数のみです。

チェーンを検証する

このメソッドは、チェーンが有効かどうかを示します—チェーン内のすべてのブロックを調べて、各ブロックを個別にチェックします。

ボトムライン

私が伝えたかった主なメッセージは次のとおりです。ブロックチェーンは若いテクノロジーですが、それを研究するためのすべてがあります。フィンテックでその最も実用的なアプリケーションを見つけたブロックチェーンは、企業が情報を保護し、データ伝送の速度を上げるのに役立ちます。最も重要なのは、人的要因を排除することです。

ブロックチェーンを構築する方法を学ぶには、コードの例を調べ、好みの言語で記述して、それを試してみてください。あなたの製品が次のゲームチェンジャーになるかもしれません。

ブロックチェーンとフィンテックについての次のパートにご期待ください。より複雑なコードと、フィンテックでの実用的なアプリケーションに関する提案があります。

フィンテック製品のブロックチェーンに関するこの記事は、Vadym Zakovinko — Django Starsのバックエンドエンジニアによって書かれています。
この投稿が便利な場合は、下のボタンをタップしてください:)