(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022189722
(43)【公開日】2022-12-22
(54)【発明の名称】ブロックチェーンシステム実行方法、装置、機器、および記憶媒体
(51)【国際特許分類】
G06F 9/445 20180101AFI20221215BHJP
【FI】
G06F9/445 130
【審査請求】有
【請求項の数】14
【出願形態】OL
(21)【出願番号】P 2022056857
(22)【出願日】2022-03-30
(11)【特許番号】
(45)【特許公報発行日】2022-07-26
(31)【優先権主張番号】202110652756.4
(32)【優先日】2021-06-11
(33)【優先権主張国・地域又は機関】CN
(71)【出願人】
【識別番号】514322098
【氏名又は名称】ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド
【氏名又は名称原語表記】Beijing Baidu Netcom Science Technology Co., Ltd.
【住所又は居所原語表記】2/F Baidu Campus, No.10, Shangdi 10th Street, Haidian District, Beijing 100085, China
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】万 春▲輝▼
(72)【発明者】
【氏名】金 ▲とーん▼
(72)【発明者】
【氏名】魏 志民
(72)【発明者】
【氏名】▲劉▼ 嘉祥
(72)【発明者】
【氏名】▲張▼ ▲磊▼
(72)【発明者】
【氏名】樊 ▲氷▼新
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AC01
5B376AC23
(57)【要約】
【課題】本願は、ブロックチェーンシステム実行方法、装置、機器、および記憶媒体を開示し、コンピュータ技術分野に関する。特には、ブロックチェーン技術に関し、クラウドコンピューティングおよびクラウド分野に使用できる。
【解決手段】該形態として、ブロックチェーンシステムのカーネルエンジンにより、処理待ちブロックチェーンデータを取得し、カーネルエンジンにより、処理待ちブロックチェーンデータを処理し、処理中に、カーネルコンポーネントを呼び出すために、コンポーネントアダプタにより提供されるカーネルコンポーネントインタフェースを呼び出す。本形態を実行することにより、ブロックチェーンシステムの適用性および拡張性を向上させ、ブロックチェーンシステムの研究開発コストを低減することができる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
ブロックチェーンシステム実行方法であって、
ブロックチェーンシステムのカーネルエンジンにより、処理待ちブロックチェーンデータを取得することと、
前記カーネルエンジンにより、前記処理待ちブロックチェーンデータを処理し、処理中に、カーネルコンポーネントを呼び出すために、コンポーネントアダプタにより提供されるカーネルコンポーネントインタフェースを呼び出すことと、
前記コンポーネントアダプタにより、前記カーネルコンポーネントインタフェースが呼び出された場合、カーネルコンポーネントのカーネル命令インタフェースに応じてカーネルコンポーネント呼出要求を生成することと、
前記カーネルコンポーネントに対応する前記コンポーネントアダプタにより、前記カーネルコンポーネント呼出要求に基づき、対応するカーネルコンポーネントを呼び出し、前記カーネルコンポーネントの数が1つ以上であることと、
所定のコンポーネント機能の処理を実行し、前記処理待ちブロックチェーンデータに対する処理ニーズを完成するために、前記カーネルコンポーネントにより、前記カーネルコンポーネント呼出要求を実行することと、を含み、
前記コンポーネントアダプタにより、前記カーネルコンポーネントインタフェースが呼び出された場合、カーネルコンポーネントのカーネル命令インタフェースに応じてカーネルコンポーネント呼出要求を生成することは、
前記コンポーネントアダプタにより、前記カーネルコンポーネントインタフェースが呼び出された場合、ブロックチェーン配置のカーネルコンポーネント設定パラメータに基づき、同種のカーネルコンポーネント集合から呼び出し待ちカーネルコンポーネントを確定することと、
呼び出し待ちカーネルコンポーネントのカーネル命令インタフェースに応じて前記カーネルコンポーネント呼出要求を生成することと、を含み、
前記カーネルコンポーネント設定パラメータは、ブロックチェーンの配置過程において、ユーザがブロックチェーンシステムの適用シナリオおよびビジネスニーズに応じてコンポーネントアダプタに予め設定したものであり、
前記カーネルコンポーネント設定パラメータに、カーネルコンポーネントのモデル選択が含まれている、
方法。
【請求項2】
前記カーネルコンポーネント集合の種類は、
ネイティブコード契約仮想マシン、webバイトコード契約仮想マシン、または、イーサリアム契約仮想マシンというタイプを含む契約コンポーネントと、
ピアツーピアネットワークというタイプを含むネットワークコンポーネントと、
単一のコンセンサスコンポーネント、POWコンセンサスコンポーネント、XPOSコンセンサスコンポーネント、または、XPOAコンセンサスコンポーネントというタイプを含むコンセンサスコンポーネントと、
の少なくとも1種を含む、
請求項1に記載の方法。
【請求項3】
前記方法は、さらに、
ブロックチェーンノードの起動時に、コンポーネントアダプタにカーネルコンポーネントのコンポーネントドライバーを登録すること、を含む、
請求項1に記載の方法。
【請求項4】
前記方法は、さらに、
前記カーネルエンジンにより、カーネルコンポーネント設定パラメータを取得し、前記設定パラメータに基づいて前記コンポーネントアダプタにおけるカーネルコンポーネント設定パラメータを変更すること、を含む、
請求項1に記載の方法。
【請求項5】
前記方法は、さらに、
ブロックチェーンノードの起動時に、
カーネルエンジン工場に1つまたは複数のカーネルエンジンの作成プログラムを登録することと、
アプリケーション層により確定されたエンジンのモデル選択、およびブロックチェーン名称と、ブロック放送方式と、キャッシュ有効期間と、同期ブロックキューサイズとの少なくとも1つを含むエンジン設定情報に基づき、選択されたカーネルエンジンの作成プログラムに基づいてカーネルエンジンを作成し、且つ、エンジン設定情報に基づいてカーネルエンジンを設定し、前記カーネルエンジンをインスタンス化することと、
前記カーネルエンジンの作成が完了し、且つ前記カーネルコンポーネントの登録が完了した後に、前記カーネルエンジンを起動して実行することと、
前記カーネルエンジンにより帳簿コンポーネントを起動してインスタンス化し、前記帳簿コンポーネントによりブロックチェーンのブロックデータをロードすることと、
前記カーネルエンジンにより少なくとも1つのカーネルコンポーネントを起動してインスタンス化することと、
カーネルエンジンによりアプリケーション層サービス設定情報をロードし、前記アプリケーション層サービス設定情報に基づいてアプリケーション層のインタラクションポートに対する傍受サービスを起動してインスタンス化することと、を含む、
請求項4に記載の方法。
【請求項6】
前記方法は、さらに、
前記カーネルエンジンにより、前記処理待ちブロックチェーンデータを処理し、処理中に、カーネルコンポーネントを呼び出すために、コンポーネントアダプタにより提供されるカーネルコンポーネントインタフェースを呼び出すことは、
前記カーネルエンジンにより、帳簿コンポーネントの帳簿コンポーネントインタフェースに応じて帳簿コンポーネント呼出要求を生成し、前記帳簿コンポーネント呼出要求に基づいて前記帳簿コンポーネントを呼び出すことと、
所定の帳簿コンポーネント機能の処理を実行し、前記処理待ちブロックチェーンデータに対する処理ニーズを完成するために、前記帳簿コンポーネントにより、前記帳簿コンポーネント呼出要求を実行することと、を含む、
請求項1に記載の方法。
【請求項7】
前記処理待ちブロックチェーンデータは、処理待ちトランザクション要求であり、
前記処理待ちトランザクション要求の帳簿データフォーマットは、前記帳簿コンポーネントの帳簿データフォーマットと同じである、
請求項6に記載の方法。
【請求項8】
前記コンポーネントアダプタにより、前記カーネルコンポーネントインタフェースが呼び出された場合、カーネルコンポーネントのカーネル命令インタフェースに応じてカーネルコンポーネント呼出要求を生成することは、
前記コンポーネントアダプタにより、前記カーネルコンポーネントインタフェースが呼び出された場合、前記カーネルコンポーネント呼出要求を生成するために、カーネルコンポーネントのカーネル命令インタフェースに応じて呼び出し入力パラメータをカーネルコンポーネント呼出要求の入力パラメータに変換すること、を含む、
請求項1に記載の方法。
【請求項9】
前記カーネルコンポーネントインタフェースまたはカーネル命令インタフェースのインタフェースパラメータは、インタフェース名称、入力パラメータ、リターンパラメータ、および、コールバック関数を含み、
前記カーネルコンポーネントインタフェースとカーネル命令インタフェースとのインタフェースパラメータは異なる、
請求項8に記載の方法。
【請求項10】
前記コンポーネントアダプタにより、前記カーネルコンポーネントインタフェースが呼び出された場合、カーネルコンポーネントのカーネル命令インタフェースに応じてカーネルコンポーネント呼出要求を生成することは、
前記コンポーネントアダプタにより、前記カーネルコンポーネントインタフェースが呼び出された場合、カーネルコンポーネントインタフェースとカーネル命令インタフェースとのマッピング関係に基づき、少なくとも1つカーネル命令インタフェースを確定することと、
前記コンポーネントアダプタにより、カーネルコンポーネントのカーネル命令インタフェースに応じてカーネルコンポーネント呼出要求を生成することと、を含む、
請求項1に記載の方法。
【請求項11】
所定のコンポーネント機能の処理を実行し、前記処理待ちブロックチェーンデータに対する処理ニーズを完成するために、前記カーネルコンポーネントにより、前記カーネルコンポーネント呼出要求を実行することは、
前記カーネルコンポーネントにより、前記カーネルコンポーネント呼出要求を実行し、前記カーネルコンポーネント呼出要求の処理中に、基礎コンポーネントインタフェースに応じて基礎コンポーネント呼出要求を生成し、前記基礎コンポーネント呼出要求に応じて対応する基礎コンポーネントを呼び出し、前記基礎コンポーネントの数が1つ以上であることと、
前記カーネルコンポーネントにより、前記基礎コンポーネントからフィードバックされた基礎コンポーネント処理結果に基づき、所定のコンポーネント機能の処理を実現することと、を含む、
請求項1に記載の方法。
【請求項12】
ブロックチェーンシステム実行装置であって、
ブロックチェーンシステムのカーネルエンジンにより、処理待ちブロックチェーンデータを取得するための処理待ちブロックチェーンデータ取得モジュールと、
前記カーネルエンジンにより、前記処理待ちブロックチェーンデータを処理し、処理中に、カーネルコンポーネントを呼び出すために、コンポーネントアダプタにより提供されるカーネルコンポーネントインタフェースを呼び出すための処理待ちブロックチェーンデータ処理モジュールと、
前記コンポーネントアダプタにより、前記カーネルコンポーネントインタフェースが呼び出された場合、カーネルコンポーネントのカーネル命令インタフェースに応じてカーネルコンポーネント呼出要求を生成するためのカーネルコンポーネント呼出要求生成モジュールと、
前記カーネルコンポーネントに対応する前記コンポーネントアダプタにより、前記カーネルコンポーネント呼出要求に基づき、対応するカーネルコンポーネントを呼び出すためのカーネルコンポーネント呼出モジュールと、
所定のコンポーネント機能の処理を実行し、前記処理待ちブロックチェーンデータに対する処理ニーズを完成するために、前記カーネルコンポーネントにより、前記カーネルコンポーネント呼出要求を実行するためのカーネルコンポーネント呼出要求実行モジュールと、を備え、
前記カーネルコンポーネントの数が1つ以上であり、
前記カーネルコンポーネント呼出要求生成モジュールは、
前記コンポーネントアダプタにより、前記カーネルコンポーネントインタフェースが呼び出された場合、ブロックチェーン配置のカーネルコンポーネント設定パラメータに基づき、同種のカーネルコンポーネント集合から呼び出し待ちカーネルコンポーネントを確定するための呼び出し待ちカーネルコンポーネント確定サブモジュールと、
呼び出し待ちカーネルコンポーネントのカーネル命令インタフェースに応じて前記カーネルコンポーネント呼出要求を生成するためのカーネルコンポーネント呼出要求生成サブモジュールと、を備え、
前記カーネルコンポーネント設定パラメータは、ブロックチェーンの配置過程において、ユーザがブロックチェーンシステムの適用シナリオおよびビジネスニーズに応じてコンポーネントアダプタに予め設定したものであり、
前記カーネルコンポーネント設定パラメータに、カーネルコンポーネントのモデル選択が含まれている、
装置。
【請求項13】
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサに通信接続されたメモリと、を備える電子機器であって、
前記メモリには、前記少なくとも1つのプロセッサによって実行可能な命令が記憶され、
前記命令は、前記少なくとも1つのプロセッサが請求項1乃至11のいずれか一項に記載の方法を実施するように、前記少なくとも1つのプロセッサにより実行される、
電子機器。
【請求項14】
コンピュータ命令が記憶された非一時的なコンピュータ可読記憶媒体であって、
前記コンピュータ命令は、コンピュータに、請求項1乃至11のいずれか一項に記載の方法を実行させることに用いられる、
非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、コンピュータ技術分野に関し、特に、ブロックチェーン技術に関する。
【背景技術】
【0002】
ブロックチェーン業界は、急速に発展し続け、ブロックチェーン技術の発展初期の主な適用シナリオは、デジタル通貨およびゲームを主とする。現在、ブロックチェーン技術は、デジタル通貨をサポートする基礎技術から、エンパワーメント産業を全面的に探索する新しい段階に入る。
【0003】
現在の主流のブロックチェーンの実現形態は、基本的に、いずれも明確な適用シナリオの位置決めがあり、従来の形態は、デジタル通貨系向けの適用シナリオであることが多いため、デジタル通貨系の応用により適し、実際のビジネスシナリオに実用する際に適用性の問題があり、フレームワークの奥まで入り込んで改造する必要があり、改造コストおよび技術ハードルはいずれも非常に高い。
【0004】
しかし、フレームワークの奥まで入り込んで改造するモードは、改造の難易度が大きく、コストが高く、改造後に、対応するフレームワークの最新の更新を自動的にフォローアップすることもできない。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本開示は、ブロックチェーンの異なるシナリオに対する適用性を向上させ、開発の難易度およびコストを低減するためのブロックチェーンシステム実行方法、装置、機器、および記憶媒体を提供する。
【課題を解決するための手段】
【0006】
本願の一態様によれば、
ブロックチェーンシステムのカーネルエンジンにより、処理待ちブロックチェーンデータを取得することと、
前記カーネルエンジンにより、前記処理待ちブロックチェーンデータを処理し、処理中に、カーネルコンポーネントを呼び出すために、コンポーネントアダプタにより提供されるカーネルコンポーネントインタフェースを呼び出すことと、を含む、
ブロックチェーンシステム実行方法を提供する。
【0007】
本願の別の態様によれば、
ブロックチェーンシステムのカーネルエンジンにより、処理待ちブロックチェーンデータを取得するための処理待ちブロックチェーンデータ取得モジュールと、
前記カーネルエンジンにより、前記処理待ちブロックチェーンデータを処理し、処理中に、カーネルコンポーネントを呼び出すために、コンポーネントアダプタにより提供されるカーネルコンポーネントインタフェースを呼び出すための処理待ちブロックチェーンデータ処理モジュールと、を備える、
ブロックチェーンシステム実行装置を提供する。
【0008】
本願の別の態様によれば、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサに通信接続されたメモリと、を備える電子機器であって、
前記メモリには、前記少なくとも1つのプロセッサによって実行可能な命令が記憶され、
前記命令は、前記少なくとも1つのプロセッサが本願の実施例のいずれかに記載のブロックチェーンシステム実行方法を実行可能であるように、前記少なくとも1つのプロセッサにより実行される、
電子機器を提供する。
【0009】
本願の一態様によれば、
コンピュータ命令が記憶された非一時的なコンピュータ可読記憶媒体であって、
前記コンピュータ命令は、コンピュータに、本願の実施例のいずれかに記載のブロックチェーンシステム実行方法を実行させることに用いられる、
非一時的なコンピュータ可読記憶媒体を提供する。
【0010】
本願の一態様によれば、
プロセッサにより実行されると、本願の実施例のいずれかに記載のブロックチェーンシステム実行方法を実現する、
コンピュータプログラムを提供する。
【発明の効果】
【0011】
本願の実施例の技術案は、ブロックチェーンの実現形態の拡張性および適用性を向上させることができ、ブロックチェーンシステムに対してコードの侵入がない改造を行うことによりブロックチェーンシステムが適用されるビジネスシナリオを切り替え、ブロックチェーン技術の研究開発コストを低減することができる。
【0012】
本発明に記載された内容は、本願の実施例のキーとなる、または重要な特徴を標識するためのものではなく、本願の範囲を限定するものでもないことが理解されるべきである。本願の他の特徴は、以下の明細書により容易に理解することができる。
【図面の簡単な説明】
【0013】
図面は、本形態をより良く理解するためのものであり、本願を限定するものではない。
【0014】
【
図1】本願の実施例による、ブロックチェーンシステム実行方法の模式図である。
【
図2】本願の実施例による、更なるブロックチェーンシステム実行方法の模式図である。
【
図3】本願の実施例による、更なるブロックチェーンシステム実行方法の模式図である。
【
図4】本願の実施例による、更なるブロックチェーンシステム実行方法の模式図である。
【
図5】本願の実施例による、更なるブロックチェーンシステム実行方法の模式図である。
【
図6】本願の実施例による、更なるブロックチェーンシステム実行方法の模式図である。
【
図7】本願の実施例による、ブロックチェーンシステム実行装置の模式図である。
【
図8】本願の実施例のブロックチェーンシステム実行方法を実現するための電子機器のブロック図である。
【発明を実施するための形態】
【0015】
以下、図面を参照しながら本願の例示的な実施例を詳細に説明する。ここで、理解の便宜上、本願の実施例に係る様々な細かい内容まで含まれているが、例示的なものに過ぎないと理解すべきである。従って、当業者であれば理解するであろうが、本願の範囲および主旨から逸脱しない限り、ここで説明する実施例に対して様々な変更や修正を行うことができる。同様に、以下の説明において、公知されている機能および構造の説明は、明確且つ簡潔にするために省略している。
【0016】
本願の実施例に係るブロックチェーンシステム実行方法は、発明者が構築したブロックチェーンのカーネルアーキテクチャーの下で提出されるものである。
【0017】
ブロックチェーンシステムは、全体的に2つの部分に分けることができ、それぞれブロックチェーンのカーネルアーキテクチャーおよびブロックチェーンのアプリケーション層である。ここで、ブロックチェーンのアプリケーション層は、ユーザがブロックチェーンシステムに基づいて具体的なビジネスニーズを実現するためのものであり、ブロックチェーンのアプリケーション層が複雑なブロックチェーン基礎技術をユーザにシールドし、ユーザは、ブロックチェーンの基本原理を知る上で、ブロックチェーンを構築してビジネスニーズを完了することができる。ブロックチェーンシステムのメインプログラムでブロックチェーンのアプリケーション層のサービス側機能を実現することができる。ブロックチェーンのアプリケーション層は、クライアント(client)およびアプリケーションプログラミングインタフェース(API)を更に備えてもよく、ユーザインタラクションインタフェースまたはインタラクションメカニズムを提供し、ユーザとのインタラクションを実現する。1つのブロックチェーンシステムにおいて、1つまたは複数のブロックチェーンのアプリケーション層のビジネス機能をサポートできる。アプリケーション層のクライアントまたはAPIは、独自のコンポーネントによりブロックチェーンのカーネルアーキテクチャーとインタラクションすることができ、独自のコンポーネントは、例えば、所定のインタラクションポートに対する傍受サービスである。
【0018】
本願は、ブロックチェーンのカーネルアーキテクチャーに更に注目し、カーネルアーキテクチャーは、カーネルエンジン層とカーネルコンポーネント層とを少なくとも備え、基礎コンポーネント層を更に備えてもよい。ここで、カーネルエンジン層は、ブロックチェーンカーネルのコアフロー、即ち、取引処理フロー、マイナーブロックアウトフロー、および同期ブロックフロー等のようなブロックチェーンの実行中の様々なビジネスロジックのコアフローを定義する。本願の実施例において、いわゆる取引は、ブロックチェーンのユーザにより開始され、ブロックチェーンノードがブロックチェーンシステムに基づいて処理し、処理過程をブロックチェーンに書き込んで記憶するトランザクション要求であり、取引ビジネスに限定されず、任意のブロックチェーンがベアラする必要なアプリケーションビジネスまたはブロックチェーン管理トランザクション要求であってもよい。いわゆるマイナー(Miner)は、現在のブロックアウト周期内にブロックアウトを行う権限を持つブロックチェーンノードであり、プルーフオブワークコンセンサスメカニズム(POW)に基づいて確定されたブロックアウトノードに限定されず、他のコンセンサスメカニズムに基づいて確定されたブロックアウトノードは、マイナーと呼ばれてもよい。且つ、カーネルエンジンは、読み取りと書き込みとを分離する設計を用いて複雑度を低減し、コンポーネントを独立して読み取る方式で読み取り操作を実現することができ、読み取り操作の単独拡張を実現する。カーネルエンジン層内のカーネルエンジンは、ユーザがシナリオのニーズに応じてフレームワークコードの侵入がない拡張を行うことでカスタマイズできるか、または軽量なコード調整を行うことでカスタマイズできる。即ち、開発者は、カーネルコンポーネントの機能に基づいてカーネルエンジンを開発することができ、カーネルコンポーネントを個別に開発する必要がない。カーネルアーキテクチャーに基づき、複数種のカーネルエンジン層を設定する可能性をユーザに提供し、具体的には、スーパーパブリックチェーンエンジン(xuperos engine)、スーパーコンソーシアムチェーンエンジン(xchain engine)、およびユーザが自律的に実現するカーネルエンジン(other engine)、等を設定して開発することができる。
【0019】
カーネルコンポーネント層は、カーネルコンポーネントのプログラミング仕様の具体的な実現であり、非常に完備な標準カーネルコンポーネントの実現が内蔵され、帳簿コンポーネント、コンセンサスコンポーネント、契約コンポーネント、ネットワークコンポーネント、暗号化コンポーネント、および権限コンポーネント、等を含み、カーネルエンジンの開発者が選択できるとともに、開発者は、低いコストでカーネルコンポーネントのプログラミング仕様に従って独自のシナリオに適したカーネルコンポーネントを開発し、自律的に実現したカーネルコンポーネントをシームレスに様々なカーネルエンジンにアクセスすることもできる。ここで、カーネルコンポーネントのプログラミング仕様は、カーネルコンポーネントを抽象化するための仕様である。カーネルコンポーネントのプログラミング仕様に基づいてカーネルコンポーネントを実現し、カーネルエンジンがカーネルコンポーネントを呼び出すために標準カーネルコンポーネント機能インタフェースを提供することができ、カーネルエンジンは、カーネルエンジン層内のコンポーネントアダプタ(例えば、consensus、contract、ledge、network、またはpermission)により確定されたカーネルコンポーネントインタフェースにより、カーネルコンポーネントインタフェースに基づいてカーネルコンポーネントに対する呼び出しを実現し、更に、カーネルコンポーネントにより、処理待ちブロックチェーンデータの処理動作を完了することができる。カーネルコンポーネントインタフェースは、カーネル機能インタフェースと呼ばれてもよく、カーネルコンポーネントがカーネルエンジンに提供する、カーネルエンジンによって呼び出されるための機能レベルのインタフェースである。どのようなカーネルコンポーネントであっても、内部でコンポーネント機能をどのように実現しても、カーネルエンジンが呼び出しやすいように、いずれも仕様化された統一的なカーネルコンポーネントインタフェースを提供することができる。
【0020】
基礎コンポーネント層内に、ブロックチェーンビジネスと関係のない基礎的な共通コンポーネントが設けられ、例えば、基礎ストレージ、p2pネットワークライブラリ、暗号ライブラリ、コーデックライブラリ、およびログライブラリ、等を含む。
【0021】
本願に係るブロックチェーンのカーネルアーキテクチャーは、全く新たな拡張性が高く、広域のシナリオに適用されるブロックチェーンの共通カーネルフレームワークであり、このアーキテクチャーの高さのモジュール化設計は、モジュール間の疎結合を確保し、各モジュールはいずれも自由に拡張して置き換えることができる。このアーキテクチャーに基づき、ユーザは、具体的なシナリオのニーズおよび好みに応じ、具体的なブロックチェーンシステムを非常に軽量に開発することができ、このアーキテクチャーは、ブロックチェーンシステム開発の難易度を、シナリオのニーズのみに応じて一部のサブ分野の機能を拡張するまで下げ、ブロックチェーン技術の研究開発コストを大きく低減する。
【0022】
図1は、本願の実施例によるブロックチェーンシステム実行方法の模式図である。本実施例は、ブロックチェーンを用いて処理待ちブロックチェーンデータを処理する場合に適用できる。本実施例で開示されたブロックチェーンシステム実行方法は、ブロックチェーンシステム実行装置により実行でき、該装置は、ソフトウェアおよび/またはハードウェアの方式で実現でき、計算および記憶機能を持つ電子機器に構成され、例えば、ブロックチェーンノードに構成される。
【0023】
図1を参照し、本実施例に係るブロックチェーンシステム実行方法は、以下のステップを含む。
【0024】
S110において、ブロックチェーンシステムのカーネルエンジンにより、処理待ちブロックチェーンデータを取得する。
【0025】
ここで、カーネルエンジンは、ブロックチェーンカーネルのコアフローであり、カーネルエンジンが取得する処理待ちブロックチェーンデータは、カーネルエンジンの上の層であるアプリケーション層がユーザクライアントから処理待ちブロックチェーンデータを取得してからカーネルエンジンに送信したものであってもよいし、カーネルエンジンがネットワークコンポーネントにより受信したユーザクライアントから送信された処理待ちブロックチェーンデータであってもよいし、カーネルエンジンがネットワークコンポーネントにより受信したブロックチェーンシステムの実行中(例えば、生成された新しいブロックの検証過程およびブロック同期過程)に生成された処理待ちブロックチェーンデータであってもよい。
【0026】
ここで、処理待ちブロックチェーンデータは、ブロックチェーンノードで処理する必要のあるデータを意味し、例示的には、処理待ちブロックチェーンデータは、管理データ、即ち、ネットワークを管理するための操作データを更に含んでもよく、具体的には、ブロックアウトノードの変更、ノードの管理、およびネットワーク状態の監視等の操作データである。処理待ちブロックチェーンデータは、カーネルエンジンが受信したユーザのブロックチェーン内のデータに対するクエリ要求、および処理待ちブロックチェーンデータの処理過程に対するカーネルコンポーネントがフィードバックした処理結果であってもよい。処理待ちブロックデータの具体的な内容は、ここで限定されず、具体的に実際の状況に応じて確定される。
【0027】
S120において、前記カーネルエンジンにより、前記処理待ちブロックチェーンデータを処理し、カーネルコンポーネントを呼び出すために、処理中にコンポーネントアダプタにより提供されるカーネルコンポーネントインタフェースを呼び出す。
【0028】
カーネルエンジンは、処理待ちブロックチェーンデータを取得した後に、処理待ちブロックチェーンデータを処理する。具体的には、カーネルエンジンは、処理中に、コンポーネントアダプタが提供したカーネルコンポーネントインタフェースで該処理待ちブロックチェーンデータを処理するためのカーネルコンポーネントインタフェースを確定することができる。カーネルエンジンは、処理待ちブロックチェーンデータを処理する過程において、実質的に処理待ちブロックチェーンデータに基づいて対応する機能カーネルコンポーネントを選択する過程である。
【0029】
ここで、カーネルコンポーネントインタフェースは、カーネルコンポーネントの実現可能な機能を抽象化したものであり、ブロックチェーンシステムにおける各カーネルコンポーネントには、いずれも対応するカーネルコンポーネントインタフェースが存在し、1つのカーネルコンポーネントインタフェースは、複数のカーネルコンポーネントに対応することができる。カーネルコンポーネントインタフェースがコンポーネントアダプタからカーネルエンジンに提供され、カーネルエンジンは、処理待ちブロックチェーンデータに基づいて必要なカーネルコンポーネント機能を選択すればよく、カーネルコンポーネント機能の具体的な実現に配慮する必要がない。カーネルエンジンは、カーネルコンポーネントインタフェースを呼び出すことでカーネルコンポーネントの呼び出しを実現することができる。
【0030】
ここで、コンポーネントアダプタは、カーネルエンジン層に設けられ、コンポーネントアダプタは、インタプリタの役割を果たし、各カーネルコンポーネントの機能を、カーネルエンジンが直接呼び出すことができるカーネルコンポーネントインタフェースに抽象化することに用いられ、コンポーネントアダプタは、カーネルコンポーネントの機能の実現詳細をカーネルエンジンにシールドする。どのようなカーネルコンポーネントであっても、内部でコンポーネント機能をどのように実現しても、コンポーネントアダプタが抽象したカーネルエンジンに提供するためのカーネルコンポーネントインタフェースは、仕様化されたインタフェースである。これにより、カーネルエンジンとカーネルコンポーネントとの間の疎結合の関連関係を保持することができ、カーネルエンジンおよびカーネルコンポーネントはいずれも自由に拡張して置き換えることができる。
【0031】
例示的には、カーネルエンジンにおけるマイナースレッドは、CompeteMasterインタフェースを呼び出してコンセンサスコンポーネントを呼び出すことにより、自機ノードが現在の高さのマイナーであるか否かを傍受することができる。ここで、CompeteMasterインタフェースは、コンポーネントアダプタがカーネルエンジンに提供する指定された高さのマイナーを検査するためのコンセンサスコンポーネントインタフェースである。コンポーネントアダプタは、現在のコンセンサスタイプ(例えば、pow)に基づいて対応するコンセンサスコンポーネントをインスタンス化し、更に、該コンポーネントのCompeteMasterインタフェースを呼び出し、現在の高さのマイナーの計算を完了する。
【0032】
1つの好ましい実施例において、処理中にコンポーネントアダプタにより提供されるカーネルコンポーネントインタフェースを呼び出した後に、前記方法は、具体的に、下記操作S130~S150を更に含み、即ち、コンポーネントアダプタにより、カーネルコンポーネントの呼び出し過程を具体的に実現する。
【0033】
S130において、前記コンポーネントアダプタにより、前記カーネルコンポーネントインタフェースが呼び出された場合、カーネルコンポーネントのカーネル命令インタフェースに応じてカーネルコンポーネント呼出要求を生成する。
【0034】
カーネルエンジンは、処理待ちブロックチェーンデータに基づき、コンポーネントアダプタが提供したカーネルコンポーネントインタフェースで必要なカーネルコンポーネントインタフェースを確定し、コンポーネントアダプタにより、カーネルコンポーネントインタフェースが呼び出された場合、カーネルコンポーネントのカーネル命令インタフェースに応じてカーネルコンポーネント呼出要求を生成する。
【0035】
カーネルエンジンおよびカーネルコンポーネントに使用される命令システムの違いを考慮し、カーネルエンジンのカーネル呼び出し命令の形式がカーネルコンポーネントに直接認識処理できない場合がある可能性があり、コンポーネントアダプタにカーネル命令インタフェースを導入する。カーネルエンジンがカーネルコンポーネントインタフェースを呼び出す場合、コンポーネントアダプタは、呼び出されたカーネルコンポーネントインタフェースに応じて、カーネルコンポーネントインタフェースに対応するカーネル命令インタフェースを確定する。カーネル命令インタフェースにより、カーネルエンジンから送信されたカーネルコンポーネント呼び出し命令を処理し、カーネルコンポーネント呼び出し命令をカーネルコンポーネントが直接実行可能な命令形式に変換する。
【0036】
カーネルコンポーネントインタフェースは、主にカーネルエンジンに向け、カーネルエンジンに仕様化された呼び出しインタフェースを提供し、カーネル命令インタフェースはカーネルコンポーネントインタフェースとは異なり、カーネル命令インタフェースは、カーネルコンポーネントに向け、カーネルエンジンがカーネルコンポーネントを呼び出す場合、カーネルコンポーネント呼び出し命令を、対応するカーネルコンポーネントが認識可能な命令形式に変換する。
【0037】
カーネルエンジンは、カーネルコンポーネントインタフェースおよび処理待ちブロックチェーンデータに基づいてカーネルコンポーネント呼出要求を生成し、更に、コンポーネントアダプタにおけるカーネル命令インタフェースにより、カーネルコンポーネント呼出要求を、対応するカーネルコンポーネントが直接認識可能な命令レベル呼出要求に変換する。好ましくは、カーネルコンポーネント呼出要求は、カーネルコンポーネント名称、入力パラメータ、リターン要求パラメータ、およびコールバック関数等を含む。
【0038】
S140において、前記カーネルコンポーネントに対応する前記コンポーネントアダプタにより、前記カーネルコンポーネント呼出要求に基づき、対応するカーネルコンポーネントを呼び出し、前記カーネルコンポーネントの数が1つ以上である。
【0039】
コンポーネントアダプタは、カーネル命令インタフェースが変換したカーネルコンポーネント呼出要求に応じ、対応するカーネルコンポーネントを呼び出し、カーネルコンポーネントはカーネルコンポーネント呼出要求を受信すると、所定のコンポーネント機能の処理を実行する。
【0040】
カーネルコンポーネントの数は、少なくとも1つであり、例示的には、カーネルコンポーネントは、コンセンサスコンポーネント、帳簿コンポーネント、契約コンポーネント、およびネットワークコンポーネントの少なくとも1つを含んでもよく、一般的には、ブロックチェーンの実行機能に専用のコンポーネントである。カーネルコンポーネントの種類および数は、ここで限定されず、具体的に実際の状況に応じて確定される。ブロックチェーンのカーネルコンポーネントのプログラミング仕様によりカーネルコンポーネントを拘束することができ、ブロックチェーンのカーネルコンポーネントのプログラミング仕様に従って開発されたカーネルコンポーネントであれば、カーネルエンジンにより呼び出され得るため、ブロックチェーンの開発時に動的に選択して呼び出すように、様々なニーズを満たすカーネルコンポーネントを開発することができる。本願の実施例の技術案は、コンセンサス、帳簿、契約等のこれらのブロックチェーンのコア機能を抽象化することにより、カーネルコンポーネントを形成し、これにより、各カーネルコンポーネントは、コードの侵入無しに自由に拡張して置き換えることができるとともに、カーネルエンジンのカスタマイズを軽量化する。各プラガブルカーネルコンポーネントのプログラミング仕様を定義し、一般的に、コンテキスト、外部露出インタフェース、ドライバー拘束インタフェース、および共通データ構造等を含んでもよい。具体的なドライバーによりカーネルコンポーネントの実現ロジックを実現する。各カーネルコンポーネントのドライバーロード方式は、init初期化登録の方式を採用し、具体的なアプリケーションプログラムで対応するカーネルコンポーネントパッケージを導入する際にコンポーネントの登録を自動的に完了する。
【0041】
好ましくは、本願の実施例のブロックチェーンシステムにおけるカーネルコンポーネントには、対応するコンポーネントアダプタが存在してもよく、例示的には、コンポーネントアダプタは、コンセンサスコンポーネントに対応するコンセンサスコンポーネントアダプタ(consensus)、契約コンポーネントに対応する契約コンポーネントアダプタ(contract)、ネットワークコンポーネントに対応するネットワークコンポーネントアダプタ(network)、および権限コンポーネントに対応する権限コンポーネントアダプタ(permission)等のコンポーネントアダプタを含んでもよい。一部のコンポーネントは、場合によってコンポーネントアダプタを設けなくてもよい。
【0042】
S150において、所定のコンポーネント機能の処理を実行し、前記処理待ちブロックチェーンデータに対する処理ニーズを完成するために、前記カーネルコンポーネントにより、前記カーネルコンポーネント呼出要求を実行する。
【0043】
カーネルコンポーネントは、カーネルコンポーネント呼出要求を受信した後に、カーネル呼出要求内の各パラメータ、例えば、入力パラメータ、コールバック関数およびリターン要求パラメータ等に応じてカーネルコンポーネント呼出要求を直接実行し、処理待ちブロックチェーンデータに対する処理ニーズを完成する。ここで、所定のコンポーネント機能は、処理待ちブロックチェーンデータに対する処理ニーズに関連する。
【0044】
本願の実施例の技術案は、カーネルエンジンとカーネルコンポーネントとの相互連携により、処理待ちブロックチェーンデータに対する処理ニーズを完成する。本願におけるカーネルエンジンおよびカーネルコンポーネントは、いずれもモジュール化設計を採用し、両者は、コンポーネントアダプタにより連携作業を実現し、モジュール間の疎結合を実現し、コンポーネントアダプタは、カーネルエンジンが必要に応じてカーネルコンポーネントを選択するように、カーネルエンジンにカーネルコンポーネントインタフェースを提供する。一方、コンポーネントアダプタは、カーネル命令インタフェースにより、カーネルエンジンのカーネルコンポーネント呼び出し命令および処理待ちブロックチェーンをカーネルコンポーネントが認識可能な形式に変換する。コンポーネントアダプタの導入により、カーネルエンジンおよびカーネルコンポーネントはいずれも自由に拡張でき、更にブロックチェーンシステムのシナリオ適用性を拡張し、本願の実施例に係るブロックチェーンシステム実行方法は、ブロックチェーンシステム開発の難易度を、ユーザがシナリオのニーズのみに応じてカーネルコンポーネントまたはカーネルエンジン機能を拡張する程度まで下げ、ブロックチェーン技術の研究開発コストを大きく低減する。
【0045】
図2は、本願の実施例による別のブロックチェーンシステム実行方法の模式図である。本実施例は、上記実施例の基に提出される好ましい形態である。具体的には、「前記コンポーネントアダプタにより、前記カーネルコンポーネントインタフェースが呼び出された場合、カーネルコンポーネントのカーネル命令インタフェースに応じてカーネルコンポーネント呼出要求を生成する」ことを細分化する。
【0046】
図2を参照し、本実施例に係るブロックチェーンシステム実行方法は、以下のステップを含む。
【0047】
S210において、ブロックチェーンシステムのカーネルエンジンにより、処理待ちブロックチェーンデータを取得する。
【0048】
S220において、前記カーネルエンジンにより、前記処理待ちブロックチェーンデータを処理し、処理中に、カーネルコンポーネントを呼び出すために、コンポーネントアダプタにより提供されるカーネルコンポーネントインタフェースを呼び出す。
【0049】
S230において、前記コンポーネントアダプタにより、前記カーネルコンポーネントインタフェースが呼び出された場合、同種のカーネルコンポーネント集合から呼び出し待ちカーネルコンポーネントを確定する。
【0050】
開発言語およびブロックチェーンシステム性能等に対する要求が異なるため、異なる実用シナリオにおいてカーネルコンポーネントに対するニーズは異なる。カーネルエンジンがカーネルコンポーネント呼び出しインタフェースによりカーネルコンポーネントを呼び出す場合、コンポーネントアダプタは、更に、具体的なユーザのニーズに応じて同種のカーネルコンポーネント集合から呼び出し待ちカーネルコンポーネントを確定する必要があり、即ち、機能という大きなタイプでのカーネルコンポーネントのサブタイプを選択する必要がある。
【0051】
本願の実施例において、主に機能によってカーネルコンポーネントを分類し、具体的には、実現可能な機能から、カーネルコンポーネントを契約コンポーネント、ネットワークコンポーネント、およびコンセンサスコンポーネント、等に分類することができる。カーネルコンポーネントの適用シナリオおよびカーネルコンポーネント自体の特徴と合わせ、各カーネルコンポーネントの集合には、複数の異なるサブタイプのカーネルコンポーネントが更に含まれてもよい。
【0052】
ブロックチェーンシステムの適用シナリオを拡大し、ユーザがブロックチェーンを開発する難易度を低減するために、本願の実施例において、契約コンポーネント、ネットワークコンポーネントおよびコンセンサスコンポーネント等のブロックチェーンシステムの重要なコアコンポーネントについては、ユーザが選択するように、ブロックチェーンシステムに完備な標準カーネルコンポーネントの実現が内蔵され、ユーザの個性化ニーズを満たす。
【0053】
1つの好ましい実施例において、前記カーネルコンポーネント集合の種類は、ネイティブコード契約仮想マシン、webバイトコード契約仮想マシン、またはイーサリアム契約仮想マシンというタイプを含む契約コンポーネントと、ピアツーピアネットワークというタイプを含むネットワークコンポーネントと、単一のコンセンサスコンポーネント、POWコンセンサスコンポーネント、XPOSコンセンサスコンポーネントまたはXPOAコンセンサスコンポーネントというタイプを含むコンセンサスコンポーネントと、の少なくとも1種を含む。
【0054】
ブロックチェーンシステムを開発する時、開発者は、シナリオのニーズに応じてカーネルコンポーネントのモデル選択および設定を行い、設定情報をコンポーネントアダプタに登録することができる。これにより、カーネルエンジンがカーネルコンポーネントを呼び出す場合、コンポーネントアダプタは、事前設定に基づき、具体的にモデル選択したカーネルコンポーネントを確定することができる。例示的には、公開ネットワーク向けのシナリオの場合、公開ネットワーク向けのシナリオがディセントラリゼーションおよび安全性に更に重点を置くため、該シナリオでは、ビザンチン障害耐性(Byzantine Fault Tolerance)のコンセンサスメカニズムが必要である。コンポーネントアダプタは、単一のコンセンサスコンポーネント、POWコンセンサスコンポーネント、XPOSコンセンサスコンポーネントまたはXPOAコンセンサスコンポーネントの内から、POWコンセンサスコンポーネントをブロックチェーンシステムのコンセンサスメカニズムとして選択することができる。もちろん、ブロックチェーン実行中に、ブロックチェーンの管理者は、必要に応じてコンポーネントアダプタ内の設定情報を変更し、ブロックチェーンの実行を制御することもできる。ここで、XPOSおよびXPOAは、それぞれ百度スーパーチェーンがサポートするPOA(Proof of authority、権威の証明)コンセンサスおよびPOS(Proof of Stake、権益の証明)コンセンサスである。
【0055】
ユーザが自体のニーズに応じてカーネルコンポーネントに対するモデル選択を実現するために、1つの好ましい実施例において、前記コンポーネントアダプタにより、前記カーネルコンポーネントインタフェースが呼び出された場合、同種のカーネルコンポーネント集合から呼び出し待ちカーネルコンポーネントを確定することは、前記コンポーネントアダプタにより、前記カーネルコンポーネントインタフェースが呼び出された場合、ブロックチェーン配置のカーネルコンポーネント設定パラメータに基づき、同種のカーネルコンポーネント集合から呼び出し待ちカーネルコンポーネントを確定し、前記カーネルコンポーネント設定パラメータにカーネルコンポーネントのモデル選択が含まれていることを含む。ブロックチェーンを配置する時、即ち、ブロックチェーンを開発または作成する時、管理者による設定が許容される。
【0056】
ここで、カーネルコンポーネント設定パラメータは、ブロックチェーンの配置過程において、ユーザがブロックチェーンシステムの適用シナリオおよびビジネスニーズに応じてコンポーネントアダプタに予め設定したものであり、設定パラメータは、カーネルコンポーネントのモデル選択を含み、ここで、カーネルコンポーネントのモデル選択とは、ユーザが選択予定のカーネルコンポーネントのタイプ情報を意味する。カーネルコンポーネントが呼び出された場合、コンポーネントアダプタは、カーネルコンポーネント設定パラメータに基づき、同種のカーネルコンポーネント集合から呼び出し待ちカーネルコンポーネントを確定する作業を完了する。
【0057】
S240において、呼び出し待ちカーネルコンポーネントのカーネル命令インタフェースに応じて前記カーネルコンポーネント呼出要求を生成する。
【0058】
S250において、前記カーネルコンポーネントに対応する前記コンポーネントアダプタにより、前記カーネルコンポーネント呼出要求に基づき、対応するカーネルコンポーネントを呼び出し、前記カーネルコンポーネントの数が1つ以上である。
【0059】
コンポーネントアダプタは、カーネルコンポーネント呼出要求に応じて対応するカーネルコンポーネントを呼び出し、この場合、カーネルコンポーネントは、コンポーネントアダプタによるモデル選択されてから確定したカーネルコンポーネントである。
【0060】
S260において、所定のコンポーネント機能の処理を実行し、前記処理待ちブロックチェーンデータに対する処理ニーズを完成するために、前記カーネルコンポーネントにより、前記カーネルコンポーネント呼出要求を実行する。
【0061】
具体的には、モデル選択されてから確定したカーネルコンポーネントは、カーネルコンポーネント呼出要求を実行し、所定のコンポーネント機能の処理を実行し、前記処理待ちブロックチェーンデータに対する処理ニーズを完成する。
【0062】
1つの好ましい実施例において、前記カーネルコンポーネントにより、前記カーネルコンポーネント呼出要求を実行し、所定のコンポーネント機能の処理を実行することは、前記カーネルコンポーネントにより、前記カーネルコンポーネント呼出要求を実行し、前記カーネルコンポーネント呼出要求の処理中に、基礎コンポーネントインタフェースに応じて基礎コンポーネント呼出要求を生成し、前記基礎コンポーネント呼出要求に応じて対応する基礎コンポーネントを呼び出し、前記基礎コンポーネントの数が1つ以上であることと、前記カーネルコンポーネントにより、前記基礎コンポーネントからフィードバックされた基礎コンポーネント処理結果に基づき、所定のコンポーネント機能の処理を実現すること、とを含む。
【0063】
ここで、基礎コンポーネントとは、具体的なビジネスシナリオと全く関係なく、ブロックチェーンシステムの実行をサポートするための基礎的な機能コンポーネントを意味する。1つの好ましい実施例において、前記基礎コンポーネントは、基礎ストレージコンポーネント、ピアツーピアネットワークコンポーネント、暗号ライブラリコンポーネント、コーデックコンポーネント、およびログライブラリコンポーネントの少なくとも1つを含む。
【0064】
ここで、基礎ストレージコンポーネント、ピアツーピアネットワークコンポーネント、暗号ライブラリコンポーネント、コーデックコンポーネント、およびログライブラリコンポーネントは、それぞれ、ブロックチェーンシステムの実行中のデータ記憶機能、ネットワークインタラクションとデータ伝送機能、署名の暗号化・復号機能、データのコーデック機能、およびブロックチェーンシステムの実行状況の記録機能をサポートすることに用いられる。
【0065】
カーネルコンポーネントは、カーネルコンポーネント呼出要求内の各パラメータに基づいて対応する基礎コンポーネントインタフェースを確定し、基礎コンポーネント呼出要求を生成する。カーネルコンポーネントは、基礎コンポーネント呼出要求に応じ、基礎コンポーネントインタフェースに応じて対応する基礎コンポーネントを呼び出し、基礎コンポーネントにより基礎コンポーネント呼出要求を実行する。
【0066】
ここで、基礎コンポーネントインタフェースは、基礎コンポーネントのプログラミング仕様に基づいて基礎コンポーネントを実現する時、カーネルコンポーネントが基礎コンポーネントを呼び出しやすいために提供される標準的な基礎コンポーネントの機能インタフェースである。カーネルコンポーネント呼出要求と同様に、基礎コンポーネント呼出要求に含まれるパラメータの種類およびパラメータ数は、予め所定の基礎コンポーネントのプログラミング仕様に基づいて確定され、ここでは限定されず、具体的に実際の状況に応じて確定される。例示的には、基礎コンポーネント呼出要求は、基礎コンポーネント名称、入力パラメータ、リターン要求パラメータ、およびコールバック関数等のパラメータを含む。
【0067】
好ましくは、カーネルコンポーネントは、カーネルコンポーネント呼出要求を実行する過程において、生成される基礎コンポーネント呼出要求は少なくとも1つである。
【0068】
基礎コンポーネントは、基礎コンポーネント呼出要求を実行した後に、カーネルコンポーネントに基礎コンポーネント処理結果をフィードバックし、所定のコンポーネント機能の処理を実現し、処理待ちブロックチェーンデータに対する処理ニーズを完成する。
【0069】
本願の実施例の技術案は、カーネルエンジンとカーネルコンポーネントとの相互連携により、処理待ちブロックチェーンデータに対する処理ニーズを完成する。本願におけるカーネルエンジンおよびカーネルコンポーネントは、いずれもモジュール化設計を採用し、両者は、コンポーネントアダプタにより連携作業を実現し、モジュール間の疎結合を実現し、コンポーネントアダプタの導入により、カーネルエンジンおよびカーネルコンポーネントはいずれも自由に拡張できる。一方、コンポーネントアダプタにより、カーネルコンポーネントインタフェースが呼び出された場合、同種のカーネルコンポーネント集合から呼び出し待ちカーネルコンポーネントを確定し、呼び出し待ちカーネルコンポーネントのカーネル命令インタフェースに応じて前記カーネルコンポーネント呼出要求を生成し、ユーザが必要に応じてカーネルコンポーネントを選択するように、ブロックチェーンシステムに完備な標準カーネルコンポーネントが内蔵され、ユーザの個性化ニーズを満たし、ブロックチェーンシステムの適用シナリオを拡大し、本願で提出されたブロックチェーンシステム実行方法は、ブロックチェーンシステム開発の難易度を、ユーザがシナリオのニーズのみに応じてカーネルコンポーネントまたはカーネルエンジン機能を拡張する程度まで下げ、ブロックチェーン技術の研究開発コストを大きく低減する。
【0070】
図3は、本願の実施例による別のブロックチェーンシステム実行方法の模式図である。本実施例は、上記実施例の基に提出される好ましい形態である。具体的には、ブロックチェーンシステムにおけるブロックチェーンノードの起動過程について説明する。
【0071】
図3を参照し、本実施例に係るブロックチェーンシステム実行方法は、以下のステップを含む。
【0072】
S310において、カーネルエンジン工場に1つまたは複数のカーネルエンジンの作成プログラムを登録する。
【0073】
本願の実施例は、工場モードを用いてカーネルエンジンをインスタンス化し、具体的には、異なるビジネス適用シナリオでカーネルエンジンに対して異なる要求があり、ブロックチェーンシステムが異なるビジネスシナリオのニーズを満たすように、ブロックチェーンシステムの起動過程でユーザの必要となるカーネルエンジンの作成プログラムをカーネルエンジン工場に登録する。
【0074】
カーネルエンジン工場に登録されるカーネルエンジンの数は、1つであってもよいし、複数であってもよく、好ましくは、ユーザが必要に応じて対応するカーネルエンジンをインスタンス化しやすいために、カーネルエンジン工場に複数のカーネルエンジンを登録し、カーネルエンジンの登録過程を複数回行うことを回避する。
【0075】
好ましくは、エンジン登録は、init初期化登録の方式を採用し、アプリケーション層が対応するカーネルエンジンパッケージをカーネルエンジン層に導入する際に、カーネルエンジンの登録過程を自動的に完了する。カーネルエンジンパッケージは、カーネルエンジン作成プログラムとカーネルエンジン設定ファイルとを含んでもよい。カーネルエンジン工場に1つまたは複数のカーネルエンジンの作成プログラムを登録することは、ブロックチェーンの配置段階でブロックチェーンを初めて作成する時に行われる。
【0076】
S320において、アプリケーション層により確定されたエンジンのモデル選択、およびブロックチェーン名称と、ブロック放送方式と、キャッシュ有効期間と、同期ブロックキューサイズとの少なくとも1つを含むエンジン設定情報に基づき、選択されたカーネルエンジンの作成プログラムに基づいてカーネルエンジンを作成し、且つ、エンジン設定情報に基づいてカーネルエンジンを設定し、前記カーネルエンジンをインスタンス化する。
【0077】
ブロックチェーンの配置段階において、ユーザは、具体的なビジネスシナリオのニーズに応じ、アプリケーション層のクライアントにより、カーネルエンジンのエンジンモデル選択およびエンジン設定情報をブロックチェーンシステムに設定し、また、ブロックチェーンの起動過程において、エンジンのモデル選択に基づいてエンジン工場でインスタンス化する必要のあるカーネルエンジンの作成プログラムを目標カーネルエンジンとして確定し、更に、エンジン設定情報に基づいて目標カーネルエンジンをインスタンス化する。
【0078】
ここで、エンジンのモデル選択情報とは、カーネルエンジンのタイプ情報を意味し、モデル選択情報は、エンジン工場に登録されたカーネルエンジンの作成プログラムに関連し、一般的には、モデル選択情報は、ユーザがビジネスシナリオのニーズに応じて自律的に指定し、もちろん、デフォルトのモデル選択情報を設定し、モデル選択情報が欠けているまたは予め記憶されたカーネルエンジンタイプとマッチングできない場合に使用してもよい。
【0079】
エンジン設定情報とは、カーネルエンジンをインスタンス化するための情報を意味し、一般的には、エンジン設定情報は、ユーザが実際のニーズに応じて設定されるものであり、エンジン設定情報は、ブロックチェーン名称、ブロック放送方式、キャッシュ有効期間、および同期ブロックキューサイズ、等の少なくとも1つを含む。ここで、ブロックチェーン名称は、ブロックチェーンの標識情報として、異なるブロックチェーンを区別するために用いられ、ブロックの放送方式は、ブロックチェーンシステムのノードがブロックチェーンシステムにおける自機ノード以外の他のブロックノードにブロックチェーンデータを伝送する方式を限定し、キャッシュ有効期間は、ブロックチェーンノードのローカルキャッシュデータの保留期間を限定し、同期ブロックキューサイズは、ブロック同期を一度に実行可能なブロック数を限定する。エンジン設定情報にカーネルエンジンの基本パラメータが設定される。
【0080】
なお、ブロックチェーンの起動が成功した後に、ブロックチェーンノードは実行し始める。
【0081】
S330において、前記カーネルエンジンの作成が完了し、且つ、前記カーネルコンポーネントの登録が完了した後に、前記カーネルエンジンを起動して実行する。
【0082】
カーネルエンジンがブロックチェーンカーネルのコアフローであるため、処理待ちブロックチェーンデータに対する処理ニーズを完成するために、更に、カーネルコンポーネントにより、所定のコンポーネント機能を実行する必要がある。従い、カーネルエンジンの作成が完了した後に、更に、ブロックチェーンシステムにカーネルコンポーネントを登録する必要がある。カーネルエンジンの作成が完了し、且つ、カーネルコンポーネントの登録が完了した後に、カーネルエンジンを起動して実行することができる。
【0083】
1つの好ましい実施例において、ブロックチェーンノードの起動時に、コンポーネントアダプタにカーネルコンポーネントのコンポーネントドライバーを登録する。
【0084】
具体的には、ブロックチェーンノードの起動過程において、コンポーネントアダプタにカーネルコンポーネントのコンポーネントドライバーを登録し、カーネル命令インタフェースおよびカーネルコンポーネント設定パラメータの登録を実現する。カーネルコンポーネントの初期化方法の実行中に、メインプログラムはアダプタ登録インタフェースを呼び出し、アダプタ登録インタフェースに応じて全てのカーネル命令インタフェースを対応するコンポーネントアダプタに登録する。好ましくは、コンポーネント命令インタフェースはアダプタにより約束され、コンポーネントドライバーにより実現される。カーネルコンポーネントの登録過程において、コンポーネントドライバーをコンポーネントアダプタに登録し、カーネルコンポーネントの具体的な実現ロジックを登録することに相当する。登録後に、アダプタは、コンポーネント命令インタフェースによりこれらの処理ロジックを呼び出してコンポーネント機能処理を完了することができる。ここで、カーネル命令インタフェースは、カーネルコンポーネント向けのインタフェースであり、カーネルエンジンがカーネルコンポーネントを呼び出す場合、カーネルコンポーネント呼び出し命令を対応するカーネルコンポーネントが認識可能な形式に変換することに用いられる。カーネルコンポーネント設定パラメータは、カーネルコンポーネントを呼び出す時の基本パラメータを設定することに用いられ、カーネルコンポーネント設定パラメータは、カーネルコンポーネントのモデル選択情報を含む。好ましくは、全てのカーネルコンポーネントのカーネル命令インタフェースをコンポーネントアダプタに登録する。
【0085】
1つの好ましい実施例において、前記カーネルエンジンにより、カーネルコンポーネント設定パラメータを取得し、前記設定パラメータに基づいて前記コンポーネントアダプタにおけるカーネルコンポーネント設定パラメータを変更する。
【0086】
カーネルコンポーネント設定パラメータが変更された場合、カーネルエンジンは、カーネルコンポーネントの変更された設定パラメータを取得し、設定パラメータに従ってコンポーネントアダプタにおける対応するカーネルコンポーネント設定パラメータを更新する。
【0087】
S340において、前記カーネルエンジンにより帳簿コンポーネントを起動してインスタンス化し、前記帳簿コンポーネントによりブロックチェーンのブロックデータをロードする。
【0088】
ブロックチェーンの帳簿がブロックノードおよび取引データ構造と強く関連するため、帳簿データは、固定したデータ構造を持ち、本願の実施例において、帳簿コンポーネントとカーネルエンジンとを結び付け、カーネルエンジンが帳簿コンポーネントを呼び出す際、帳簿コンポーネントと同じデータ構造を入力する必要があり、帳簿コンポーネントには、それに対応するコンポーネントアダプタが存在せず、帳簿コンポーネントを置き換えるにはカーネルエンジンを同時に置き換える必要がある。
【0089】
カーネルエンジンは、帳簿コンポーネントを起動してインスタンス化し、帳簿コンポーネントによりブロックチェーンにおけるブロックデータをロードする。
【0090】
本願の実施例は、単一のカーネルエンジンが1つの帳簿コンポーネントと結び付けられ、異なるカーネルエンジンが帳簿以外の他のカーネルコンポーネントを共有することにより、カーネルエンジンが、取引、ブロック構造と無関係であることを実現し、ユーザは、カーネルコードの侵入がない場合、必要に応じてカーネルのコア処理フローのカスタマイズおよびカーネルエンジンの技術のモデル選択を実現することができる。
【0091】
S350において、前記カーネルエンジンにより、少なくとも1つのカーネルコンポーネントを起動してインスタンス化する。
【0092】
カーネルエンジンでカーネルコンポーネントを起動してインスタンス化し、カーネルコンポーネントに計算リソースおよびメモリリソースを割り当てることにより、カーネルコンポーネントは設定機能を実行することができる。例示的には、カーネルエンジンが起動した後に、ネットワークコンポーネントを起動してインスタンス化し、ネットワークコンポーネントを用いてブロックチェーンシステムの実行中に処理待ちブロックチェーンデータが存在するか否かを定時に傍受する。もちろん、コンセンサスコンポーネント、契約コンポーネントおよび権限コンポーネントのようなブロックチェーンシステムにおける他のコンポーネントは、同時に起動されてインスタンス化されてもよく、カーネルコンポーネントが呼び出された場合に使用するように、カーネルコンポーネントに必要なリソースを各カーネルコンポーネントに割り当て、ブロックチェーンシステムの応答遅延を短縮する。
【0093】
S360において、カーネルエンジンによりアプリケーション層サービス設定情報をロードし、前記アプリケーション層サービス設定情報に基づいてアプリケーション層のインタラクションポートに対する傍受サービスを起動してインスタンス化する。
【0094】
ここで、アプリケーション層設定情報は、傍受する必要のあるアプリケーション層のインタラクションポートを含む。ここで、アプリケーション層のインタラクションポートとは、アプリケーション層のカーネルエンジンとインタラクションするポートを指し、アプリケーション層のインタラクションポートの数は少なくとも1つであり、一般的に複数である。
【0095】
カーネルエンジンは、ユーザにより所定のアプリケーション層サービス設定情報をロードし、アプリケーション層サービス設定情報に基づいて傍受サービスを起動してインスタンス化し、カーネルエンジンとアプリケーション層とがインタラクションするアプリケーション層のインタラクションポートを傍受し、例示的には、傍受サービスはRPCサービス(Remote Procedure Call、リモートプロシージャコール)である。
【0096】
本願の実施例の技術案は、ブロックチェーンシステムにおけるブロックチェーンノードの起動過程を提供し、本願は、マルチカーネルエンジンアーキテクチャーを実現し、本願の実施例において、ユーザは、ビジネスニーズに応じて複数のカーネルエンジンをカスタマイズすることができ、全てのカーネルエンジンをカーネルエンジン工場に登録し、外部で統一的にカーネルエンジン工場によりカーネルエンジンをインスタンス化し、カーネルエンジンは自由に侵入無しに拡張することができる。本願の実施例は、コンポーネントアダプタにカーネルコンポーネントを登録して、設定情報に基づいてカーネルコンポーネントをインスタンス化することにより、カーネルコンポーネントコードの侵入がない場合、カーネルコンポーネントに対して技術のモデル選択を行うことを実現し、カーネルエンジンおよびカーネルコンポーネントのモジュール化設計を実現し、ブロックチェーンシステムのシナリオ適用を拡張し、本願に係るブロックチェーンシステム実行方法は、ブロックチェーンシステム開発の難易度を、ユーザがシナリオのニーズのみに応じてカーネルコンポーネントまたはカーネルエンジン機能を拡張する程度まで下げ、ブロックチェーン技術の研究開発コストを大きく低減する。
【0097】
図4は、本願の実施例による別のブロックチェーンシステム実行方法の模式図である。本実施例は、上記実施例の基に提出される好ましい形態である。具体的には、「前記カーネルエンジンにより、処理中にカーネルコンポーネントインタフェースに応じてカーネルコンポーネント呼出要求を生成し、前記カーネルコンポーネント呼出要求に応じて対応するカーネルコンポーネントを呼び出す」ことを細分化する。
【0098】
図4を参照し、本実施例に係るブロックチェーンシステム実行方法は、以下のステップを含む。
【0099】
S410において、ブロックチェーンシステムのカーネルエンジンにより、処理待ちブロックチェーンデータを取得する。
【0100】
ブロックチェーンの帳簿がブロックノードおよび取引データ構造と強く関連するため、帳簿データは、固定したデータ構造を持ち、本願の実施例において、帳簿コンポーネントとカーネルエンジンとを結び付ける。
【0101】
1つの好ましい実施例において、前記処理待ちブロックチェーンデータは処理待ちトランザクション要求であり、前記処理待ちトランザクション要求の帳簿データフォーマットは前記帳簿コンポーネントの帳簿データフォーマットと同じである。
【0102】
ここで、処理待ちトランザクション要求とは、ブロックチェーンにおけるデータを操作するためのトランザクション要求を意味する。本願の実施例において、トランザクション要求は、ブロックチェーンシステムでサポートされる任意のトランザクション要求であってもよいし、ビジネストランザクション要求であってもよいし、管理トランザクション要求、等であってもよく、具体的なビジネスに関連する。
【0103】
カーネルエンジンが帳簿コンポーネントを呼び出すことができることを確保するために、カーネルエンジンが取得した処理待ちトランザクション要求の帳簿データは、帳簿コンポーネントの帳簿データとフォーマットが同じである必要があり、具体的には、処理待ちトランザクション要求の帳簿データは、帳簿コンポーネントの帳簿データとフィールドが同じである必要がある。
【0104】
S420において、前記カーネルエンジンにより、帳簿コンポーネントの帳簿コンポーネントインタフェースに応じて帳簿コンポーネント呼出要求を生成し、前記帳簿コンポーネント呼出要求に基づいて前記帳簿コンポーネントを呼び出す。
【0105】
帳簿コンポーネントには、それに対応するコンポーネントアダプタが存在せず、カーネルエンジンは帳簿コンポーネントと結び付けられ、カーネルエンジンが帳簿コンポーネントを呼び出す必要がある場合、カーネルエンジンは、コンポーネントアダプタを介さずに帳簿コンポーネントを直接呼び出し、具体的には、カーネルエンジンは、帳簿コンポーネントがカーネルエンジンに提供する帳簿コンポーネントインタフェースに応じて、帳簿コンポーネント呼出要求を生成し、帳簿コンポーネントの呼出要求に応じて帳簿コンポーネントを呼び出す。
【0106】
S430において、所定の帳簿コンポーネント機能の処理を実行し、前記処理待ちブロックチェーンデータに対する処理ニーズを完成するために、前記帳簿コンポーネントにより、前記帳簿コンポーネント呼出要求を実行する。
【0107】
帳簿コンポーネントは、帳簿コンポーネント呼出要求内の各パラメータに基づき、所定の帳簿コンポーネント機能を実行し、前記処理待ちブロックチェーンデータに対する処理ニーズを完成する。所定の帳簿コンポーネント機能は、処理待ちブロックチェーンデータの処理ニーズに関連し、具体的に、実際の状況に応じて確定される。例示的には、所定の帳簿コンポーネント機能は、ブロックの更新、ブロックの検査、または取引のチェックであってもよい。
【0108】
本願の実施例は、帳簿データのデータ構造の特殊性を考慮し、カーネルエンジンと帳簿コンポーネントとを結び付け、コンポーネントアダプタの参加が必要とせず、カーネルエンジンにより帳簿コンポーネントインタフェースに応じて帳簿コンポーネントを直接呼び出し、帳簿データに対して複雑なデータフォーマット変換を行うことを回避し、ブロックチェーンシステムを簡略化する。
【0109】
図5は、本願の実施例による別のブロックチェーンシステム実行方法の模式図である。本実施例は、上記実施例の基に提出される好ましい形態である。具体的には、「前記コンポーネントアダプタにより、前記カーネルコンポーネントインタフェースが呼び出された場合、カーネルコンポーネントのカーネル命令インタフェースに応じてカーネルコンポーネント呼出要求を生成する」ことを細分化する。
【0110】
図5を参照し、本実施例に係るブロックチェーンシステム実行方法は、以下のステップを含む。
【0111】
S510において、ブロックチェーンシステムのカーネルエンジンにより、処理待ちブロックチェーンデータを取得する。
【0112】
S520において、前記カーネルエンジンにより、前記処理待ちブロックチェーンデータを処理し、処理中に、カーネルコンポーネントを呼び出すために、コンポーネントアダプタにより提供されるカーネルコンポーネントインタフェースを呼び出す。
【0113】
S530において、前記コンポーネントアダプタにより、前記カーネルコンポーネントインタフェースが呼び出された場合、前記カーネルコンポーネント呼出要求を生成するために、カーネルコンポーネントのカーネル命令インタフェースに応じて呼び出し入力パラメータをカーネルコンポーネント呼出要求の入力パラメータに変換する。
【0114】
ここで、呼び出し入力パラメータは、カーネルエンジンがカーネルコンポーネントインタフェースに応じて生成されたものであり、カーネルエンジンおよびカーネルコンポーネントの命令システムが異なるため、呼び出し入力パラメータは、カーネルコンポーネントにより直接認識できる可能性が高い。
【0115】
カーネルコンポーネント呼出要求の入力パラメータは、カーネル命令インタフェースで処理された呼び出し入力パラメータを意味し、対応するカーネルコンポーネントにより直接認識可能な入力パラメータである。
【0116】
カーネルコンポーネントインタフェースが呼び出された場合、コンポーネントアダプタは、カーネルコンポーネントのカーネル命令インタフェースに応じて、カーネルコンポーネントの呼出要求の入力パラメータを変換し、変換後の入力パラメータに基づいてカーネルコンポーネント呼出要求を生成し、生成したカーネルコンポーネント呼出要求は、カーネルコンポーネントにより直接認識できる。例示的には、カーネル命令インタフェースが呼び出し入力パラメータに対して行う変換は、呼び出し入力パラメータ内のインタフェース名称をマッピング変換してもよいし、インタフェース入力パラメータの名称およびタイプの変換を実現してもよい。
【0117】
1つの好ましい実施例において、前記カーネルコンポーネントインタフェースまたはカーネル命令インタフェースのインタフェースパラメータは、インタフェース名称、入力パラメータ、リターンパラメータ、およびコールバック関数を含み、前記カーネルコンポーネントインタフェースとカーネル命令インタフェースとのインタフェースパラメータは異なる。
【0118】
カーネルコンポーネントインタフェースとカーネル命令インタフェースとのインタフェースパラメータの種類および数は一致する。カーネル命令インタフェースのインタフェースパラメータは、カーネルコンポーネントインタフェースのインタフェースパラメータに対応する。区別は、カーネル命令インタフェースのインタフェースパラメータがカーネルコンポーネント向けのものであり、カーネルコンポーネントが直接認識できる、カーネルコンポーネントがインタフェースパラメータに基づいて設定機能を実現するためのものである。カーネルコンポーネントインタフェースのインタフェースパラメータは、カーネルエンジンにより提供される、カーネルエンジンがカーネルコンポーネントの機能選択を行うためのものである。
【0119】
一般的には、カーネルコンポーネントインタフェースとカーネル命令インタフェースとのインタフェースパラメータは異なり、もちろん、両者のインタフェースパラメータは同じであってもよく、例示的には、カーネルコンポーネントインタフェースとカーネル命令インタフェースとのインタフェースパラメータ内のインタフェース名称は、同じである可能性があるが、具体的に実際の状況に応じて確定できる。
【0120】
S540において、前記カーネルコンポーネントに対応する前記コンポーネントアダプタにより、前記カーネルコンポーネント呼出要求に基づき、対応するカーネルコンポーネントを呼び出し、前記カーネルコンポーネントの数が1つ以上である。
【0121】
S550において、所定のコンポーネント機能の処理を実行し、前記処理待ちブロックチェーンデータに対する処理ニーズを完成するために、前記カーネルコンポーネントにより、前記カーネルコンポーネント呼出要求を実行する。
【0122】
本願の実施例の技術案は、カーネルエンジンとカーネルコンポーネントとの相互連携により、処理待ちブロックチェーンデータに対する処理ニーズを完成する。本願におけるカーネルエンジンおよびカーネルコンポーネントは、いずれもモジュール化設計を採用し、両者は、コンポーネントアダプタにより連携作業を実現し、モジュール間の疎結合を実現し、コンポーネントアダプタは、カーネルエンジンが必要に応じてカーネルコンポーネントを選択するように、カーネルエンジンにカーネルコンポーネントインタフェースを提供する。一方、コンポーネントアダプタは、カーネル命令インタフェースにより、カーネルエンジンのカーネルコンポーネント呼び出し命令および処理待ちブロックチェーンをカーネルコンポーネントが認識可能な形式に変換する。コンポーネントアダプタの導入により、カーネルエンジンおよびカーネルコンポーネントはいずれも自由に拡張でき、更にブロックチェーンシステムのシナリオ適用性を拡張し、本願に係るブロックチェーンシステム実行方法は、ブロックチェーンシステム開発の難易度を、ユーザがシナリオのニーズのみに応じてカーネルコンポーネントまたはカーネルエンジン機能を拡張する程度まで下げ、ブロックチェーン技術の研究開発コストを大きく低減する。
【0123】
図6は、本願の実施例による別のブロックチェーンシステム実行方法の模式図である。本実施例は、上記実施例の基に提出される好ましい形態である。具体的には、「前記コンポーネントアダプタにより、前記カーネルコンポーネントインタフェースが呼び出された場合、カーネルコンポーネントのカーネル命令インタフェースに応じてカーネルコンポーネント呼出要求を生成する」ことを細分化する。
【0124】
図6を参照し、本実施例に係るブロックチェーンシステム実行方法は、以下のステップを含む。
【0125】
S610において、ブロックチェーンシステムのカーネルエンジンにより、処理待ちブロックチェーンデータを取得する。
【0126】
S620において、前記カーネルエンジンにより、前記処理待ちブロックチェーンデータを処理し、処理中に、カーネルコンポーネントを呼び出すために、コンポーネントアダプタにより提供されるカーネルコンポーネントインタフェースを呼び出す。
【0127】
S630において、前記コンポーネントアダプタにより、前記カーネルコンポーネントインタフェースが呼び出された場合、カーネルコンポーネントインタフェースとカーネル命令インタフェースとのマッピング関係に基づき、少なくとも1つカーネル命令インタフェースを確定する。
【0128】
ここで、カーネルコンポーネントインタフェースとカーネル命令インタフェースとのマッピング関係は、ブロックチェーンシステムの配置段階でコンポーネントアダプタに登録される。
【0129】
カーネルコンポーネントインタフェースが呼び出された場合、カーネルコンポーネントインタフェースとカーネル命令インタフェースとのマッピング関係に基づき、カーネル命令インタフェースでカーネルコンポーネントインタフェースに対応するカーネル命令インタフェースを確定することができる。1つのカーネルコンポーネントインタフェースは複数のカーネル命令インタフェースに対応することができる。
【0130】
S640において、前記コンポーネントアダプタにより、カーネルコンポーネントのカーネル命令インタフェースに応じてカーネルコンポーネント呼出要求を生成する。
【0131】
ここで、カーネルコンポーネント呼出要求とは、カーネルコンポーネントが認識できる、二次変換を経る必要がなく、直接実行される呼出要求を意味する。カーネルコンポーネント呼出要求は、コンポーネントアダプタがカーネルコンポーネントのカーネル命令インタフェースに応じて生成されるものである。
【0132】
S650において、前記カーネルコンポーネントに対応する前記コンポーネントアダプタにより、前記カーネルコンポーネント呼出要求に基づき、対応するカーネルコンポーネントを呼び出し、前記カーネルコンポーネントの数が1つ以上である。
【0133】
S660において、所定のコンポーネント機能の処理を実行し、前記処理待ちブロックチェーンデータに対する処理ニーズを完成するために、前記カーネルコンポーネントにより、前記カーネルコンポーネント呼出要求を実行する。
【0134】
本願の実施例の技術案は、カーネルエンジンとカーネルコンポーネントとの相互連携により、処理待ちブロックチェーンデータに対する処理ニーズを完成する。本願におけるカーネルエンジンおよびカーネルコンポーネントは、いずれもモジュール化設計を採用し、両者は、コンポーネントアダプタにより連携作業を実現し、モジュール間の疎結合を実現し、コンポーネントアダプタは、カーネルエンジンが必要に応じてカーネルコンポーネントを選択するように、カーネルエンジンにカーネルコンポーネントインタフェースを提供する。一方、コンポーネントアダプタは、カーネル命令インタフェースにより、カーネルエンジンのカーネルコンポーネント呼び出し命令および処理待ちブロックチェーンをカーネルコンポーネントが認識可能な形式に変換する。コンポーネントアダプタの導入により、カーネルエンジンおよびカーネルコンポーネントはいずれも自由に拡張でき、更にブロックチェーンシステムのシナリオ適用性を拡張し、本願に係るブロックチェーンシステム実行方法は、ブロックチェーンシステム開発の難易度を、ユーザがシナリオのニーズのみに応じてカーネルコンポーネントまたはカーネルエンジン機能を拡張する程度まで下げ、ブロックチェーン技術の研究開発コストを大きく低減する。
【0135】
図7は、本願の実施例によるブロックチェーンシステム実行装置の模式図である。
図7を参照し、本願の実施例は、ブロックチェーンシステム実行装置700を開示し、ブロックチェーンノードに構成され、前記装置700は、処理待ちブロックチェーンデータ取得モジュール710と、処理待ちブロックチェーンデータ処理モジュール720と、を備える。
【0136】
カーネルコンポーネント呼出要求生成モジュール730と、カーネルコンポーネント呼出モジュール740と、カーネルコンポーネント呼出要求実行モジュール750とを更に備えてもよい。
【0137】
処理待ちブロックチェーンデータ取得モジュール710は、ブロックチェーンシステムのカーネルエンジンにより、処理待ちブロックチェーンデータを取得することに用いられる。
【0138】
処理待ちブロックチェーンデータ処理モジュール720は、前記カーネルエンジンにより、前記処理待ちブロックチェーンデータを処理し、処理中に、カーネルコンポーネントを呼び出すために、コンポーネントアダプタにより提供されるカーネルコンポーネントインタフェースを呼び出すことに用いられる。
【0139】
ここで、カーネルコンポーネント呼出要求生成モジュール730は、前記コンポーネントアダプタにより、前記カーネルコンポーネントインタフェースが呼び出された場合、カーネルコンポーネントのカーネル命令インタフェースに応じてカーネルコンポーネント呼出要求を生成することに用いられる。
【0140】
カーネルコンポーネント呼出モジュール740は、カーネルコンポーネント呼び出す前記カーネルコンポーネントに対応する前記コンポーネントアダプタにより、前記カーネルコンポーネント呼出要求に基づき、対応するカーネルコンポーネントを呼び出すことに用いられ、前記カーネルコンポーネントの数が1つ以上である。
【0141】
カーネルコンポーネント呼出要求実行モジュール750は、所定のコンポーネント機能の処理を実行し、前記処理待ちブロックチェーンデータに対する処理ニーズを完成するために、前記カーネルコンポーネントにより、前記カーネルコンポーネント呼出要求を実行することに用いられる。
【0142】
本願の実施例の技術案は、カーネルエンジンとカーネルコンポーネントとの相互連携により、処理待ちブロックチェーンデータに対する処理ニーズを完成する。本願におけるカーネルエンジンおよびカーネルコンポーネントは、いずれもモジュール化設計を採用し、両者は、コンポーネントアダプタにより連携作業を実現し、モジュール間の疎結合を実現し、コンポーネントアダプタは、カーネルエンジンが必要に応じてカーネルコンポーネントを選択するように、カーネルエンジンにカーネルコンポーネントインタフェースを提供する。一方、コンポーネントアダプタは、カーネル命令インタフェースにより、カーネルエンジンのカーネルコンポーネント呼び出し命令および処理待ちブロックチェーンをカーネルコンポーネントが認識可能な形式に変換する。コンポーネントアダプタの導入により、カーネルエンジンおよびカーネルコンポーネントはいずれも自由に拡張でき、更にブロックチェーンシステムのシナリオ適用性を拡張し、本願に係るブロックチェーンシステム実行方法は、ブロックチェーンシステム開発の難易度を、ユーザがシナリオのニーズのみに応じてカーネルコンポーネントまたはカーネルエンジン機能を拡張する程度まで下げ、ブロックチェーン技術の研究開発コストを大きく低減する。
【0143】
好ましくは、カーネルコンポーネント呼出要求生成モジュール730は、前記コンポーネントアダプタにより、前記カーネルコンポーネントインタフェースが呼び出された場合、同種のカーネルコンポーネント集合から呼び出し待ちカーネルコンポーネントを確定するための呼び出し待ちカーネルコンポーネント確定サブモジュールを備える。
【0144】
カーネルコンポーネント呼出要求生成サブモジュールは、呼び出し待ちカーネルコンポーネントのカーネル命令インタフェースに応じて前記カーネルコンポーネント呼出要求を生成することに用いられる。
【0145】
好ましくは、呼び出し待ちカーネルコンポーネント確定サブモジュールは、具体的に、前記コンポーネントアダプタにより、前記カーネルコンポーネントインタフェースが呼び出された場合、ブロックチェーン配置のカーネルコンポーネント設定パラメータに基づき、同種のカーネルコンポーネント集合から呼び出し待ちカーネルコンポーネントを確定し、前記カーネルコンポーネント設定パラメータにカーネルコンポーネントのモデル選択が含まれていることに用いられる。
【0146】
好ましくは、前記カーネルコンポーネント集合の種類は、
ネイティブコード契約仮想マシン、webバイトコード契約仮想マシン、またはイーサリアム契約仮想マシンというタイプを含む契約コンポーネントと、
ピアツーピアネットワークというタイプを含むネットワークコンポーネントと、
単一のコンセンサスコンポーネント、POWコンセンサスコンポーネント、XPOSコンセンサスコンポーネントまたはXPOAコンセンサスコンポーネントというタイプを含むコンセンサスコンポーネントと、の少なくとも1種を含む。
【0147】
好ましくは、前記装置700は、具体的に、ブロックチェーンノードの起動時に、コンポーネントアダプタにカーネルコンポーネントのコンポーネントドライバーを登録するためのカーネルコンポーネント登録モジュールを更に備える。
【0148】
好ましくは、前記装置700は、前記カーネルエンジンにより、カーネルコンポーネント設定パラメータを取得し、前記設定パラメータに基づいて前記コンポーネントアダプタにおけるカーネルコンポーネント設定パラメータを変更するためのカーネルコンポーネント設定パラメータ変更モジュールを更に備える。
【0149】
好ましくは、ブロックチェーンノードの起動時に、前記装置700は、
カーネルエンジン工場に1つまたは複数のカーネルエンジンの作成プログラムを登録するためのカーネルエンジン作成プログラム登録モジュールと、
アプリケーション層により確定されたエンジンのモデル選択、およびブロックチェーン名称と、ブロック放送方式と、キャッシュ有効期間と、同期ブロックキューサイズとの少なくとも1つを含むエンジン設定情報に基づき、選択されたカーネルエンジンの作成プログラムに基づいてカーネルエンジンを作成し、且つ、エンジン設定情報に基づいてカーネルエンジンを設定し、前記カーネルエンジンをインスタンス化するためのカーネルエンジン作成および設定モジュールと、
前記カーネルエンジンの作成が完了し、且つ前記カーネルコンポーネントの登録が完了した後に、前記カーネルエンジンを起動して実行するためのカーネルエンジン実行起動モジュールと、
前記カーネルエンジンにより帳簿コンポーネントを起動してインスタンス化し、前記帳簿コンポーネントによりブロックチェーンのブロックデータをロードするための帳簿コンポーネントインスタンス化モジュールと、
前記カーネルエンジンにより少なくとも1つのカーネルコンポーネントを起動してインスタンス化するためのカーネルコンポーネントインスタンス化モジュールと、
カーネルエンジンによりアプリケーション層サービス設定情報をロードし、前記アプリケーション層サービス設定情報に基づいてアプリケーション層のインタラクションポートに対する傍受サービスを起動してインスタンス化するためのアプリケーション層インタラクションポート傍受サービスインスタンス化モジュールと、を更に備える。
【0150】
好ましくは、処理待ちブロックチェーンデータ処理モジュール720は、前記カーネルエンジンにより、帳簿コンポーネントの帳簿コンポーネントインタフェースに応じて帳簿コンポーネント呼出要求を生成し、前記帳簿コンポーネント呼出要求に基づいて前記帳簿コンポーネントを呼び出すための帳簿コンポーネント呼び出しサブモジュールと、
所定の帳簿コンポーネント機能の処理を実行し、前記処理待ちブロックチェーンデータに対する処理ニーズを完成するために、前記帳簿コンポーネントにより、前記帳簿コンポーネント呼出要求を実行するための帳簿コンポーネント呼出要求実行サブモジュールと、を更に備える。
【0151】
好ましくは、前記処理待ちブロックチェーンデータは、処理待ちトランザクション要求であり、前記処理待ちトランザクション要求の帳簿データフォーマットは前記帳簿コンポーネントの帳簿データフォーマットと同じである。
【0152】
好ましくは、カーネルコンポーネント呼出要求生成モジュール730は、具体的に、前記コンポーネントアダプタにより、前記カーネルコンポーネントインタフェースが呼び出された場合、前記カーネルコンポーネント呼出要求を生成するために、カーネルコンポーネントのカーネル命令インタフェースに応じて呼び出し入力パラメータをカーネルコンポーネント呼出要求の入力パラメータに変換するための入力パラメータ変換サブモジュールを備える。
【0153】
好ましくは、前記カーネルコンポーネントインタフェースまたはカーネル命令インタフェースのインタフェースパラメータは、インタフェース名称、入力パラメータ、リターンパラメータ、およびコールバック関数を含み、前記カーネルコンポーネントインタフェースとカーネル命令インタフェースとのインタフェースパラメータは異なる。
【0154】
好ましくは、カーネルコンポーネント呼出要求生成モジュール730は、
前記コンポーネントアダプタにより、前記カーネルコンポーネントインタフェースが呼び出された場合、カーネルコンポーネントインタフェースとカーネル命令インタフェースとのマッピング関係に基づき、少なくとも1つカーネル命令インタフェースを確定するためのカーネル命令インタフェース確定サブモジュールと、
前記コンポーネントアダプタにより、カーネルコンポーネントのカーネル命令インタフェースに応じてカーネルコンポーネント呼出要求を生成するためのカーネルコンポーネント呼出要求生成サブモジュールと、を備える。
【0155】
好ましくは、カーネルコンポーネント呼出要求実行モジュール750は、
前記カーネルコンポーネントにより、前記カーネルコンポーネント呼出要求を実行し、前記カーネルコンポーネント呼出要求の処理中に、基礎コンポーネントインタフェースに応じて基礎コンポーネント呼出要求を生成し、前記基礎コンポーネント呼出要求に応じて対応する基礎コンポーネントを呼び出すための基礎コンポーネント呼出要求生成モジュールと、
前記カーネルコンポーネントにより、前記基礎コンポーネントからフィードバックされた基礎コンポーネント処理結果に基づき、所定のコンポーネント機能の処理を実現するための設定コンポーネント機能実現サブモジュールと、を備え、
前記基礎コンポーネントの数が1つ以上である。
【0156】
本願の実施例に係るブロックチェーンシステム実行装置は、本願のいずれかの実施例に係るブロックチェーンシステム実行方法を実行することができ、ブロックチェーンシステム実行方法の実行に対応する機能モジュールおよび有益な効果を備える。
【0157】
本願の実施例によれば、本願は、電子機器、可読記憶媒体、およびコンピュータプログラム製品を更に提供する。
【0158】
図8は、本願の実施例を実施するために使用可能な電子機器800の例示的なブロック図を示す。電子機器は、ラップトップ型コンピュータ、デスクトップ型コンピュータ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータのような様々な形式のデジタルコンピュータを表すことを目的とする。電子機器は、携帯端末、携帯電話、スマートフォン、ウェララブル機器、および他の類似する計算装置のような様々な形式の移動装置を表すこともできる。本発明に示されたコンポーネント、それらの接続、関係、およびそれらの機能は、例示的なものに過ぎず、本発明に記載および/または要求される本願の実現を限定するものではない。
【0159】
図8に示すように、機器800は、計算ユニット801を備え、読み出し専用メモリ(ROM)802に記憶されたコンピュータプログラム、または記憶ユニット808からランダムアクセスメモリ(RAM)803にロードされたコンピュータプログラムに基づき、様々な適当な動作および処理を実行することができる。RAM 803には、機器800の操作に必要な様々なプログラムおよびデータが記憶されてもよい。計算ユニット801、ROM 802およびRAM 803は、バス804を介して互いに接続されている。入力/出力(I/O)インタフェース805もバス804に接続されている。
【0160】
機器800における複数のコンポーネントはI/Oインタフェース805に接続され、キーボード、マウス、等のような入力ユニット806と、各種のディスプレイ、スピーカ、等のような出力ユニット807と、磁気ディスク、光ディスク、等のような記憶ユニット808と、ネットワークカード、モデム、無線通信送受信機、等のような通信ユニット809と、を備える。通信ユニット809は、機器800がインターネットのようなコンピュータネットワークおよび/または様々な電気通信ネットワークを介して他のデバイスと情報/データを交換することを許容する。
【0161】
計算ユニット801は、処理および計算能力を有する汎用および/または専用の処理アセンブリであってもよい。計算ユニット801のいくつかの例は、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、各種の専用の人工知能(AI)コンピューティングチップ、各種の機械学習モデルアルゴリズムを実行する計算ユニット、デジタルシグナルプロセッサ(DSP)、および、任意の適当なプロセッサ、コントローラ、マイクロコントローラ、等を含んでもよいが、これらに限定されない。計算ユニット801は、上記様々な方法および処理、例えば、ブロックチェーンシステム実行方法を実行する。例えば、いくつかの実施例において、ブロックチェーンシステム実行方法は、コンピュータソフトウェアプログラムとして実現でき、有形的に記憶ユニット808のような機器可読媒体に含まれている。いくつかの実施例において、コンピュータプログラムの一部または全ては、ROM 802および/または通信ユニット809を介して、機器800にロードおよび/またはインストールされ得る。コンピュータプログラムがRAM 803にロードされて計算ユニット801により実行されると、上記ブロックチェーンシステム実行方法の1つまたは複数のステップを実行することができる。あるいは、他の実施例において、計算ユニット801は、他の任意の適当な方式(例えば、ファームウェアを介して)により、ブロックチェーンシステム実行方法を実行するように構成され得る。
【0162】
本発明に記載されたシステムおよび技術の様々な実施形態は、デジタル電子回路システム、集積回路システム、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準パーツ(ASSP)、システムオンチップのシステム(SOC)、複合プログラマブルロジックデバイス(CPLD)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/または、それらの組み合わせで実現できる。これらの様々な実施形態は、以下を含んでもよい。1つまたは複数のコンピュータプログラムに実施され、該1つまたは複数のコンピュータプログラムは、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステムで実行および/または解釈することができ、該プログラマブルプロセッサは、ストレージシステム、少なくとも1つの入力装置、および少なくとも1つの出力装置からデータおよび命令を受信し、且つ、データおよび命令を、該ストレージシステム、該少なくとも1つの入力装置、および該少なくとも1つの出力装置に伝送することができる専用または汎用のプログラマブルプロセッサであってもよい。
【0163】
本願の方法を実施するためのプログラムコードは、1つまたは複数のプログラミング言語の任意の組み合わせでコードできる。これらのプログラムコードは、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサまたはコントローラに提供でき、これにより、プログラムコードがプロセッサまたはコントローラにより実行されると、フローチャートおよび/またはブロック図で規定された機能/操作が実施される。プログラムコードは、完全に機器で実行されてもよいし、一部が機器で実行されてもよいし、独立したソフトウェアパッケージとして一部が機器で実行されて一部がリモート機器で実行されてもよいし、完全にリモート機器またはサーバで実行されてもよい。
【0164】
本願の明細書において、機器可読媒体は、命令実行システム、装置またはデバイスに使用される、または命令実行システム、装置またはデバイスと合わせて使用されるプログラムを含有または記憶できる有形的な媒体であってもよい。機器可読媒体は、機器可読信号媒体または機器可読記憶媒体であってもよい。機器可読媒体は、電子の、磁気の、光の、電磁気の、赤外線の、または半導体のシステム、装置またはデバイス、または、上記内容の任意の適当な組み合わせを含んでもよいが、これらに限定されない。機器可読記憶媒体の更なる具体的な例は、1つまたは複数の線による電気的接続、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能なプログラマブル読み出し専用メモリ(EPROMまたはフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスク読み出し専用ディスク(CD-ROM)、光記憶デバイス、磁気記憶デバイス、または上記内容の任意の適当な組み合わせを含む。
【0165】
ユーザとのインタラクションを提供するために、ここで説明するシステムおよび技術をコンピュータで実施することができ、該コンピュータは、ユーザに情報を表示するための表示装置(例えば、CRT(ブラウン管)またはLCD(液晶ディスプレイ)モニタ)と、ユーザがそれにより入力をコンピュータに提供することができるキーボードおよび指向装置(例えば、マウスまたはトラックボール)とを有する。他の種類の装置は、更にユーザとのインタラクションを提供するために使用できる。例えば、ユーザに提供されるフィードバックは、任意の形式のセンシングフィードバック(例えば、視覚フィードバック、聴覚フィードバック、または触覚フィードバック)であってもよく、且つ、任意の形式(音入力、音声入力、または、触覚入力を含む)でユーザからの入力を受信することができる。
【0166】
ここで説明するシステムおよび技術を、バックグラウンドコンポーネントを含むコンピューティングシステム(例えば、データサーバとする)、または中間コンポーネントを含むコンピューティングシステム(例えば、アプリケーションサーバ)、またはフロントエンドコンポーネントを含むコンピューティングシステム(例えば、ユーザがそれによりここで説明するシステムおよび技術の実施形態とインタラクションできるグラフィカルユーザインタフェースまたはネットワークブラウザを有するユーザコンピュータ)、または、このようなバックグラウンドコンポーネント、中間コンポーネント、またはフロントエンドコンポーネントの任意の組み合わせを含むコンピューティングシステムに実施することができる。任意の形式または媒体のデジタルデータ通信(例えば、通信ネットワーク)により、システムのコンポーネントを互いに接続することができる。通信ネットワークの例は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、ブロックチェーンネットワーク、およびインターネットを含む。
【0167】
コンピューティングシステムは、クライアントおよびサーバを含んでもよい。クライアントとサーバとは、一般的に互いに離れ、且つ、通常、通信ネットワークを介してインタラクションを行う。対応するコンピュータで実行されて、互いにクライアント-サーバ関係を持つコンピュータプログラムにより、クライアントとサーバとの関係を生成する。サーバは、クラウドサーバであってもよく、クラウドコンピューティングサーバまたはクラウドホストとも呼ばれ、クラウドコンピューティングサービス体系における1つのホスト製品であり、従来の物理ホストおよびVPSサービスに存在する、管理しにくく、トラフィックの拡張性が弱いという欠陥を解決するために使用される。
【0168】
上記に示す様々な形式のフローを用い、ステップを並べ替え、追加または削除することができることを理解すべきである。例えば、本開示に記載された各ステップは、並列に実行されてもよいし、順に実行されてもよいし、異なる順序で実行されてもよく、本願に開示された技術案の所望する結果を達成できる限り、本願はここで限定しない。
【0169】
上記具体的な実施形態は、本願の保護範囲を限定するものではない。当業者は、設計要求および他の要因に基づき、様々な修正、組み合わせ、サブ組み合わせ、および代替が可能であることを理解すべできる。本願の精神および原則内で行われる任意の修正、均等置換および改良、等は、いずれも本願の保護範囲内に含まれているべきである。