摘
本文は、いくつかのブロックチェーンの原理的な使用ケースを紹介し、その基本的な要件と高レベルの構造を概説します。ブロックチェーン技術は進化を続けており、Hyperledger の設計はこの技術構造を活用しています。
背景
ブロックチェーンは新興技術であり、資金調達、サプライチェーン、その他の取引ネットワークを根本的に変える可能性があり、革新と発展に新たな機会をもたらし、運営コストを削減し、リスクを低減します。2009 年以降、ビットコインは取引分野で急速に台頭し、多くの企業や業界がその基盤技術の研究に多大なリソースを投入し、この人気がありながらも議論を呼ぶ暗号通貨を広めています。ブロックチェーンはピアツーピアの分散型台帳技術であり、金融分野で初めて力を得た技術です。なぜなら、資産を効率的かつ安全に発行、取引、管理、サービス提供できるからです。記録システム(SoR)の範囲内では、エコシステム内のすべてのメンバーが自分の台帳システムを維持し、他のメンバーとの取引の進捗を監査する必要があります。このプロセスは非効率的で高価であり、内部組織の操作フロー基準がありません。一方、分散型台帳は全く異なり、コストを削減し、ビジネスネットワークの構築を容易にし、中央制御を提供する必要がなくなります。
共有台帳の概念がビジネス分野でますます注目される中、ブロックチェーンのスマートコントラクトも注目を集めています。スマートコントラクトはさまざまなビジネスルールの集合であり、ブロックチェーン上で実行され、利害関係者のグループによって共有され、検証されます。スマートコントラクトはビジネスの自動化プロセスに非常に役立ち、信頼性が高く、利害関係者が団体として契約条件を処理し、検証できるようにします。Hyperledger は、チェーン上のコード(chaincode)を使用してスマートコントラクトを実行します。ビットコインや他の暗号通貨の開発は、あらゆる形態の検閲に対抗するために行われており、誰でも参加でき、身分を確立する必要はなく、計算サイクルを完了するために少しの時間を提供するだけで済みます。
ビットコインのブロックチェーンモデルでは、許可を発行する中央機関は存在せず、これらのネットワークは非承認です。彼らは無数の作業証明計算を行う必要があり、コストは非常に高いです。Hyperledger は、参加者のアクセス権を管理するなど、従来のブロックチェーンモデルを革新しました。言い換えれば、Hyperledger は許可された共有台帳です。Hyperledger は、身分確認、監査、プライバシーに対して安全で健全なモデルを提供し、計算サイクルを短縮し、業界のさまざまな要求に対応します。
2016 年に入ると、ブロックチェーンに関する認識が高まり、適用可能でスケーラブルな解決策を研究することがますます緊急の課題となりました。
なぜ新しい構造なのか
新たに開発された技術として、ブロックチェーンは商取引におけるさまざまな複雑な要求を満たすことができません。そのスケーラビリティには問題があり、プライベートな機密取引をサポートすることもできません。これらの制限により、多くのビジネスアプリケーションでスムーズに機能することが難しくなっています。
さまざまな市場のニーズに対応するために、Hyperledger の設計は産業アプリケーションに重点を置き、既存の欠点を解決し、業界の先駆者の機能を拡張しました。私たちの構想
私たちは、ブロックチェーン技術が現代の商取引にもたらす革新と変化を想像し、業界の使用ケースとキー要件を分析し、ブロックチェーン技術の広範な利用を促進するためのシステムを設計し構築しました。
注:以下の資料を読み進める前に、用語集を確認することをお勧めします。
多くのネットワークを含む世界
私たちは、多くのブロックチェーンネットワークが出現し、各ネットワークの台帳が異なるビジネスを実行できることを望んでいます。この期待に基づいて、私たちは Hyperledger を開発しました。現在、単一の普遍的な汎用ネットワークが出現しているかもしれませんが、ネットワークの台帳のコア機能の運用が他のネットワークに依存することはまだ例がありません。Hyperledger は、このネットワークが独立して運用できるだけでなく、ある台帳の取引を通じて、別の台帳の正当な取引やスマートコントラクト(チェーン上のコード)を発見し、利用するためのアドレッシングシステムも備えています。
ネットワーク権限の需要が高まる
許可されたネットワークは、既知のホワイトリスト組織を通じて検証ノードと非検証ノードを運営し、ネットワーク発行機関が取引者に識別身分を付与します。発行機関はネットワークの目的に応じて適切なアクセス権を決定し、この権限は身分確認を経てからネットワークで取引を行うことができます。このネットワークは公開運営が可能で、モバイルアプリケーションに簡単に統合できます。また、完全にプライベートに運営することもでき、招待された参加者は検証を経て初めてその状況を知ることができます。
Hyperledger の構造設計はさまざまな目的に適合しており、各ネットワーク間の相互アクセスを許可し、そのプロトコルはさまざまな使用要件を満たすことができ、異なるレベルの権限も設定されています。プライバシーと機密性の重要性
私たちは、どのブロックチェーン構造にも基本的な要件があると信じています。それは、ネットワーク上のいかなる当事者の身分や行動パターンも、無許可の者が台帳を通じて探ることを許可してはならないということです。また、ブロックチェーンユーザーのビジネスロジックやその他の取引パラメータの機密性を保証し、契約に関与する利害関係者や取引中の資産以外の誰もこれらのデータにアクセスできないようにすることを望んでいます。業界の使用ケース
私たちは、次に紹介する使用ケースにとって重要なブロックチェーンの初歩的な要件を作成しました。
(注:以下の使用ケースは、ガイドライン構造とテスト駆動の開発を促進します。これらのケースはまだ発展途上ですが、すべての参加者はその内容と技術レベルの優先順位に同意するべきです。
もし何か不満があれば、変更を提案できます。抽象的な使用ケースは 4 つを超えないようにし、3 つが最良です。)
商務契約#
商務契約は、コーディングを通じて、双方またはそれ以上の参加者が契約条項を自動的に実行し、誠実さを保証します。ブロックチェーン上の情報は本質的に公開されていますが、商対商契約は機密性保護のメカニズムを備えて、敏感なビジネス情報を保護し、台帳にアクセスできる外部者に情報が漏れるのを防ぐ必要があります。秘密保持契約はビジネスケースにとって重要ですが、契約を公開する必要がある多くの場面もあり、台帳上のすべての人が簡単に情報を取得できるようにする必要があります。たとえば、入札のための見積もりを決定するための台帳です。このような契約は標準化が必要で、入札者は迅速に情報を取得できます。
資産保管#
金融証券などの資産は、ブロックチェーンネットワーク上で非中央集権化を実現する必要があります。これにより、同種の資産の利害関係者はそれぞれの資産に直接アクセスし、取引を開始し、関連情報を取得できるようになり、層を重ねた仲介者を通じて行う必要がなくなります。取引は基本的にリアルタイムで決済され、すべての利害関係者が資産の状況をリアルタイムで把握できることが必要です。あらゆる資産の種類に対して、利害関係者はビジネスルールを追加する権利を持ち、自動化された論理アプリケーションを通じて運営コストを削減できます。資産を創造した者は、使用ケースが保証するように、資産および関連する取引ルールを機密または公開にする必要があります。
サプライチェーン#
ブロックチェーンフレームワークは、サプライチェーンネットワーク内のすべての参加者が以下を保証できるようにする必要があります:原材料の出所を入力し追跡すること、部品生産の遥測データを記録すること、輸送商品の出所を追跡すること、完成品の生産、保管、販売およびその後の事務を含むすべての記録が変更不可能であること。前述の商務契約および資産保管モデルに加えて、サプライチェーンのこの使用ケースは、過去の取引の中で必要な記録を追跡できる深い検索性を強調しています。その核心は、他のコンポーネントから製造された商品の出所を作成することです。
これらの使用ケースがどのようにブロックチェーンシステムに組み込まれるか、またはこれらの使用ケースの要件についてもっと知りたい場合は、こちらをクリックしてください。
特色要件
以下に述べる特色要件は、健全な産業の使用ケースに基づいており、Hyperledger フレームワークの開発を促進しました。これらの要件には、身分確認と監査可能性、プライベート取引、機密契約、モジュール合意、性能パフォーマンス、スケーラビリティ、チェーン上のコード(chaincode)およびスマートコントラクトが含まれます。
身分確認と監査可能性
取引のプライバシーは重要ですが、ブロックチェーンの商業用途も一定の規則に従う必要があり、規制当局が取引記録にアクセスして調査できるようにする必要があります。事後(時には数年後)に取引の一方は、身分確認や資産所有権を提供し、メカニズムがない場合は、身分確認を通じて当事者の身分や台帳上の活動を特定する必要があります。
したがって、Hyperledger プロトコルは、登録機関に暗号証明書を登録し、ユーザーの機密データをロックします。登録機関はネットワーク参加者の身分確認を発行および取り消すことができます。各身分に対して、プロトコルはネットワーク上で取引を行うための鍵を生成し、取引当事者の身分を明らかにすることなく、ネットワークのプライバシーを保護します。
身分確認と監査可能性に関する疑問がある場合は、Q&A セクションの身分管理部分を参照してください。
プライベート取引と機密契約
取引モデルが公開観察および分析可能であれば、共有台帳は商業関係の詳細を漏洩させることになりますが、これらの詳細は競争相手に明らかにされるべきではありません。供給者や買い手のサークルはもともと小さく、双方の貿易を支えるシステムは、いかなる一方の取引状況も漏洩させるべきではありません。したがって、商業活動に使用されるブロックチェーンは、無許可の第三者が身分、取引モデル、機密契約などの条項に関する情報を知ることができないようにするメカニズムを提供する必要があります。
Hyperledger は、暗号化された取引を通じてその内容の機密性を保証し、利害関係者のみがそれを解読し実行できるようにします。さらに、ビジネスロジック(スマートコントラクトを通じて実現)も暗号化処理が行われ、安全性を確保します(利害関係者が機密を要求する場合)、そして実行時にのみロードおよび解読されます。この点については、後のアーキテクチャ部分で詳しく説明します。
機密性に関するその他の問題については、Q&A セクションの機密性部分を参照してください。
モジュール合意
異なる業界や分野にはそれぞれのネットワークがあるため、異なるネットワークには異なる合意アルゴリズムを設定して、さまざまな使用要件を満たす必要があります。Hyperledger プロトコルの下での合意は、挿入可能なアルゴリズムを使用し、ユーザーが構成内で合意アルゴリズムを選択できるようにする必要があります。Hyperledger プロトコルの最初のリリースでは、ビザンチン耐障害アルゴリズム(BFT)が提供され、このアルゴリズムは実用的なビザンチン耐障害アルゴリズム(PBFT)プロトコルを採用しています。今後、コミュニティ内で他の合意アルゴリズムモデルを共有することを期待しています。
合意および Hyperledger の事前包装された合意メカニズムに関する詳細については、Q&A セクションの遅延部分を参照してください。
論理 = チェーン上のコード = スマートコントラクト
ブロックチェーンの論理、または私たちが一般に「スマートコントラクト」と呼ぶものは、当事者間で自動的に実行されるプロトコルであり、すべての関連条項はコードで構成され、自動決済が可能で、今後は署名やその他のトリガーイベントによって実行されます。Hyperledger プロジェクトでは、これを「チェーン上のコード」(chaincode)と呼び、チェーン上のコードを通じてブロックチェーンの論理とその文書契約を確立し区別します。(この用語はまだ検証中であり、変更される可能性があります。)
チェーン上のコード(chaincode)の概念はスマートコントラクトよりも広範であり、スマートコントラクトの概念は Nick Szabo によって提唱されました。チェーン上のコードは、任意の主流プログラミング言語で記述でき、Hyperledger の文脈内で実行されます。チェーン上のコードは、スマートコントラクトモジュール言語(Velocity や Jade に類似)を定義し、環境関数の実行やその計算の柔軟性を制限し、法的契約の要件を満たすことができます。
関連する質問については、Q&A セクションのチェーン上のコード部分を参照してください。
性能パフォーマンスおよびスケーラビリティ
経済的な観点からブロックチェーンフレームワークのネットワークアプリケーションを理解する場合、設計プロセスでは長期的な業績を考慮する必要があります。1 つの台帳または一連の台帳は、100 年以上持続的に運用でき、ユーザーが利用可能なタイムフレーム内で、顧客がその発行、検索、身分確認およびその他の機能を使用できるようにする必要があります。
しかし、時間の経過とともに、指定されたネットワークのノード数や取引者も増加するため、そのフレームワークは性能を保証しながらこれらの問題を解決する必要があります。
関連する質問については、Q&A セクションの使用法部分を参照してください。
アーキテクチャ
以下の図 2 は、Hyperledger が参考にしたアーキテクチャを示しており、3 つの主要なカテゴリに分かれています:メンバーシップ、ブロックチェーン、チェーン上のコード。これらはすべて論理構造であり、独立したステップ、アドレス空間、または(仮想)マシン内の分割コンポーネントの物理的な説明ではありません。
メンバーシップサービスは、ネットワーク上の身分確認、プライバシー、機密性を管理します。参加者は登録を通じて身分を取得し、その後、属性認証機関が取引のための鍵を発行します。評判管理者は、監査人が特定の参加者の取引状況を閲覧できるようにします。監査人がすでに参加者から適切なアクセス権を付与されている場合に限ります。
ブロックチェーンサービスは、分散型台帳を管理し、HTTP/2 で確立されたピアツーピアプロトコルを通じて行われます。データ構造は最適化され、複数の参加者の重複した全体状態を効率的に維持します。異なる合意アルゴリズムは、各構成に埋め込まれ、高度な一貫性を保証します(ビザンチン耐障害アルゴリズムを通じてエラーを処理し、クラッシュ耐性を通じて遅延や中断を処理し、作業証明スキームを通じて検閲に対処します)。
チェーン上のコード(Chaincode)サービスは、チェーン上のコードを実行する検証ノードのための安全で軽量なサンドボックスロードパスを提供します。全体の環境は、封鎖された安全なコンテナであり、安全なオペレーティングシステムとチェーン上のコード言語を含む署名された画像ライブラリを含んでいます。また、Golang(準備期間)、Java(計画期間)、Node.js(計画期間)などのソフトウェア開発ツールキットと実行環境も含まれます。必要に応じて、他のプログラミング言語も追加できます。
分散型台帳は RocksDB を使用してデータセットを長期保存し、その 3 つの属性に適合させるために、内部データ構造を構築して状態を反映します。大きなファイル(文書など)はブロックチェーン台帳の外部ストレージに保存され、そのハッシュ値は取引の一部としてチェーン内に保存され、ファイルの完全性を保証します。
Hyperledger は 2 種類の取引をサポートします:コードデプロイ取引およびコード呼び出し取引。コードデプロイ取引は、チェーン上のコードの提出、更新、または終了などのコマンドを実行でき、その検証ノードはコードとその実行環境の真実性と完全性を保護する必要があります。対照的に、コード呼び出し取引は、チェーン上のコード関数を実行するためのアプリケーションプログラミングインターフェースであり、そのプロセスは統一リソース識別子を使用して JEE の小型サービスプログラムを呼び出すのに似ています。注目すべきは、各チェーン上のコードが自分の状態を維持し、関数呼び出しがチェーン上のコードの状態を変更する一般的な方法であることです。
合意管理者は抽象的な概念であり、合意アルゴリズムと他の Hyperledger コンポーネント間のインターフェースを定義します。合意管理者は取引を受け取り、アルゴリズムに基づいてそれらを整理し、いつ実行するかを決定します。取引が成功裏に実行されると、台帳に変化が反映されます。Hyperledger はビザンチンプロトコルを実行し、耐障害性とスケーラビリティの面で強力な利点を持っています。イベントハブは分散型ネットワークであり、その属性は複雑で、同じイベントが何度も発生する可能性があり、毎回各ピアノードに影響を与えます。コールバック関数は、同じイベントの複数の呼び出しを終了させることができ、これによりピアノード(できれば非検証のローカルノード)はアプリケーション関連の発行または購読イベントを管理できるようになります。
条件が満たされる限り、ピアノードはイベントを発動し、順序は問われません。これらのイベントは永遠に存在するわけではないため、アプリケーションが必要な場合は、タイムリーにキャッチする必要があります。
チェーン上のコード取引は時間制限があり、チェーン上のコード装置プロセス中に特定の形式で構成されます。これはデータベース呼び出しやウェブサービス呼び出しに似ています。取引の期限を超えると、エラー処理が行われ、台帳の状態に変更は加えられません。呼び出された関数が同じ機密範囲制限を持つ場合、1 つのチェーン上のコード関数は別のチェーン上のコード関数を呼び出すことができます。つまり、2 つの機密チェーン上のコードの間に同じ検証者のグループが存在する場合、相互に呼び出すことができます。新しいブロックで取引が行われると、ブロックチェーン上の最後のブロックの全体状態の差分が維持されます。現在のブロックが合意に達すると、変数がデータベースに提出され、その後全体状態のブロック数が 1 つ増加します。ノードが合意に達しない場合、差分は計算に含まれず、データベースも変更されません。
アプリケーションプログラミングインターフェース
Hyperledger には、REST、JSON RPC アプリケーションプログラミングインターフェース、イベント、およびネットワーク接続のためのアプリケーションソフトウェア開発キットが含まれています。典型的な点は、アプリケーションがピアノードと相互作用するためには、その個体の正当な権限を検証するための何らかの形式を通じて行う必要があり、顧客の情報はその身分確認署名を持ち、ノードの検証を受ける必要があります。
Hyperledger には、ネットワークの運営を管理するためのコマンドラインインターフェース(CLI)が用意されています。このコマンドラインインターフェースは、チェーン上のコードテストプロセスにも使用できます。REST アプリケーションプログラミングインターフェースおよびソフトウェア開発キット(SDK)は、JSON-RPC アプリケーションプログラミングインターフェースに基づいており、現在最も完全なアプリケーションプログラミングインターフェース層です。ソフトウェア開発キットは、Golang、JavaScript、Java などの言語に適用でき、必要に応じて他のプログラミング言語を追加できます。
このアプリケーションプログラミングインターフェースは、以下のいくつかのカテゴリに分けることができます:
- 身分確認 - 登録を通じて認証を取得または撤回
- アドレッシング - 取引の出所を特定し追跡
- 取引 - 台帳上の実行単位
- チェーン上のコード - ブロックチェーン上で実行されるプログラム
- ブロックチェーン - 台帳の内容
- ネットワーク - ブロックチェーンネットワークの情報
- ストレージ - ファイルまたは文書の外部ストレージ
- イベント - ブロックチェーン上の購読または発行イベント
アプリケーションモデル#
ネットワーク技術
3 つの潜在的な構成モデルがあります:
- クラウドサーバーがホストする単一ネットワーク
- クラウドサーバーがホストする複数のネットワーク
- 参加者がホストするイントラネット
クラウドサーバーがホストする単一ネットワークは、最も簡単で効率的なトポロジー構造であり、各参加者は検証ノードを含む一組のピアノードを持っています。ネットワークはクラウド環境で運営され、物理ハードウェアベンダーにホストされていますが、参加者は契約に基づいて計算リソースを制御でき、中央集権的な環境で非中央集権的な構成を実現します。
クラウドサーバーがホストする複数のネットワークは、参加者がクラウドプロバイダーを通じてピアノードを管理でき、これらのノードが HTTP(HyperledgerTTP)で相互接続できる場合に機能します。参加者がホストするイントラネットは、HTTP を通じて参加者のすべてのネットワークを使用します。
結論
Hyperledger の使命は、ブロックチェーン技術を一般市場に導入することです。実行可能なブロックチェーンソリューションを振り返り、業界のリーダーや技術推進者が提供する関連使用ケースを理解した結果、ブロックチェーンが重要な技術モデルとなり、多くの産業や企業の革新を促進すると信じています。私たちは、業界が企業向けのブロックチェーンフレームワークを急速に必要としていることに気づきました。それは効率的でスケーラブルであり、プライバシーや機密に関連する要求に企業レベルのサポートを提供できるものでなければなりません。また、さまざまな使用ケースが存在し、それぞれの使用ケースには異なるブロックチェーンの基盤実装が必要であることも認識しました。
ブロックチェーン技術の潜在能力を完全に引き出し、さまざまな使用ニーズを満たす標準を確立するために、柔軟で拡張可能な Hyperledger フレームワークを設計しました。
さらに、さまざまなコンピュータサイエンスの分野の先進的な成果を含む Hyperledger プロトコルのデフォルト実装を導いています。
Hyperledger プロトコルの理解を深めるために、私たちのプロトコル使用説明書をお読みいただくことをお勧めします。これにより、Hyperledger を使用してアプリケーションを作成し、プロジェクトの進展を促進するのに役立ちます。