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