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