IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 北京図森智途科技有限公司の特許一覧

特開2023-75058サービスディスカバリ方法、装置、コンピューティングデバイス及び記憶媒体
<>
  • 特開-サービスディスカバリ方法、装置、コンピューティングデバイス及び記憶媒体 図1
  • 特開-サービスディスカバリ方法、装置、コンピューティングデバイス及び記憶媒体 図2
  • 特開-サービスディスカバリ方法、装置、コンピューティングデバイス及び記憶媒体 図3
  • 特開-サービスディスカバリ方法、装置、コンピューティングデバイス及び記憶媒体 図4
  • 特開-サービスディスカバリ方法、装置、コンピューティングデバイス及び記憶媒体 図5
  • 特開-サービスディスカバリ方法、装置、コンピューティングデバイス及び記憶媒体 図6
  • 特開-サービスディスカバリ方法、装置、コンピューティングデバイス及び記憶媒体 図7
  • 特開-サービスディスカバリ方法、装置、コンピューティングデバイス及び記憶媒体 図8
  • 特開-サービスディスカバリ方法、装置、コンピューティングデバイス及び記憶媒体 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023075058
(43)【公開日】2023-05-30
(54)【発明の名称】サービスディスカバリ方法、装置、コンピューティングデバイス及び記憶媒体
(51)【国際特許分類】
   H04L 9/32 20060101AFI20230523BHJP
   G06F 16/28 20190101ALI20230523BHJP
【FI】
H04L9/32 200Z
G06F16/28
【審査請求】未請求
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2022182429
(22)【出願日】2022-11-15
(31)【優先権主張番号】202111370479.4
(32)【優先日】2021-11-18
(33)【優先権主張国・地域又は機関】CN
(71)【出願人】
【識別番号】521254764
【氏名又は名称】北京図森智途科技有限公司
(74)【代理人】
【識別番号】100104880
【弁理士】
【氏名又は名称】古部 次郎
(74)【代理人】
【識別番号】100107216
【弁理士】
【氏名又は名称】伊與田 幸穂
(72)【発明者】
【氏名】▲キョウ▼ 軼凡
(72)【発明者】
【氏名】▲キン▼ 江明
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175KA12
(57)【要約】      (修正有)
【課題】ノードのサービスディスカバリの安全性及び正確性を向上させるサービスディスカバリ方法、装置、コンピューティングデバイス及び記憶媒体を提供する。
【解決手段】サービスディスカバリ方法は、第1のオンラインノードは目標ノードのオンライン化又はオフライン化を発見すると、前記目標ノードのブロックを作成し、第2のオンラインノードにデータ同期リクエストを送信するステップと、前記第2のオンラインノードは前記ブロックが最新のブロックであると確定すると、複数の第3のオンラインノードにそれぞれ前記目標ノードの権限を認証するように通知するステップと、複数の第3のオンラインノードが前記目標ノードの権限を認証した結果を統計し、認証通過率が所定の条件を満たせば、前記ブロックを現在の全てのオンラインノードがそれぞれメンテナンスするブロックチェーンに同期するステップと、を含む。
【選択図】図2
【特許請求の範囲】
【請求項1】
第1のオンラインノードは目標ノードのオンライン化又はオフライン化を発見すると、前記目標ノードのブロックを作成し、第2のオンラインノードにデータ同期リクエストを送信するステップと、
前記第2のオンラインノードは前記ブロックが最新のブロックであると確定すると、複数の第3のオンラインノードにそれぞれ前記目標ノードの権限を認証するように通知して、対応する権限認証結果を得るステップと、
前記複数の第3のオンラインノードがそれぞれ対応する権限認証結果に基づいて前記目標ノードの認証通過率を確定するステップと、
前記認証通過率が所定の条件を満たすことに応答して、前記ブロックを現在のオンラインノードがそれぞれメンテナンスするブロックチェーンに同期するステップと、を含む、
サービスディスカバリ方法。
【請求項2】
各ノードはそれぞれ1つのデータベースをメンテナンスし、前記データベースは現在のブロックチェーンを記憶するために用いられ、
前記ブロックチェーンにおけるブロックはオンライン化ブロックとオフライン化ブロックに分けられ、前記オンライン化ブロックはノードのオンライン化情報を記録するために用いられ、前記オフライン化ブロックはノードのオフライン化情報を記録するために用いられる、
請求項1に記載の方法。
【請求項3】
各ノードの前記データベースはさらに、現在のインデックスフィールドを記憶するために用いられ、前記インデックスフィールドは少なくとも1つのインデックスエントリを含み、前記インデックスエントリは各オンラインノードに対応するオンライン化ブロックの位置インデックスを含む、
請求項2に記載の方法。
【請求項4】
第1のオンラインノードが目標ノードのオンライン状況を発見し、且つ前記認証通過率が所定の条件を満たす場合、現在の全てのオンラインノードのインデックスフィールドに前記目標ノードのインデックスエントリを追加し、更新されたインデックスフィールド及びブロックチェーンを前記目標ノードのデータベースに同期するステップをさらに含む、
請求項3に記載の方法。
【請求項5】
第1のオンラインノードが目標ノードのオフライン状況を発見し、且つ前記認証通過率が所定の条件を満たす場合、現在の全てのオンラインノードのインデックスフィールドから前記目標ノードのインデックスエントリを削除し、前記目標ノードのデータベースに記憶されたブロックチェーン及びインデックスフィールドを削除するステップをさらに含む、
請求項3に記載の方法。
【請求項6】
前記ブロックは、ブロックタイプ、ブロック番号、所属ノード番号、1つ前のブロックのハッシュ値、本ブロックのハッシュ値、及び前記目標ノードのデータ署名のうち少なくとも1種の情報を含み、ただし、前記ブロックタイプはオンライン化ブロックとオフライン化ブロックとを含む、
請求項1に記載の方法。
【請求項7】
前記データ同期リクエストには前記ブロックのブロック番号が付けられており、
前記ブロック番号は前記第1のオンラインノードの現在のブロックチェーンのブロック数に1を加算するものであり、
前記方法は、前記第2のオンラインノードは前記ブロックのブロック番号に基づいて前記ブロックが最新のブロックであるか否かを確定するステップをさらに含む、
請求項1に記載の方法。
【請求項8】
前記第2のオンラインノードは前記複数の第3のオンラインノードのうちの指定ノードであり、
前記認証通過率=(第3のオンラインノードの認証通過回数+1)/(複数の第3のオンラインノードの数+1)とする、
請求項1に記載の方法。
【請求項9】
第1のオンラインノードは目標ノードのオンラインを発見することは、第1のオンラインノードは目標ノードのデータ署名に基づいて目標ノードから送信されたノードオンライン化リクエストを認証通過させることを含み、
第1のオンラインノードは目標ノードのオフライン化を発見することは、第1のオンラインノードによる前記目標ノードのハートビート情報の受信がタイムアウトすることを含む、
請求項1に記載の方法。
【請求項10】
前記第1のオンラインノードは複数の第1のオンラインノードであり、前記方法は、
複数の第1のオンラインノードが同時に前記目標ノードのオンライン化又はオフライン化を発見する場合、各第1のオンラインノードはそれぞれ前記目標ノードのブロックを作成し、それぞれ前記第2のオンラインノードにデータ同期リクエストを送信するステップと、
前記目標ノードは複数の目標ノードであり、複数の第1のオンラインノードが同時に複数の目標ノードのオンライン化又はオフライン化を発見する場合、各第1のオンラインノードはそれぞれ発見した目標ノードのブロックを作成し、それぞれ前記第2のオンラインノードにデータ同期リクエストを送信するステップと、をさらに含む、
請求項1に記載の方法。
【請求項11】
前記第2のオンラインノードは各データ同期リクエストが到達する時間に基づいて、複数のデータ同期リクエストを順に処理し、処理しないデータ同期リクエストを緩衝記憶領域に一時的に記憶するステップをさらに含み、ただし、
前記第2のオンラインノードは前記ブロックが最新のブロックではないと確定すれば、当該ブロックを廃棄し、緩衝記憶領域から次の処理されていないデータ同期リクエストを取って処理する、
請求項10に記載の方法。
【請求項12】
目標ノードのオンライン状況に対して、前記複数の第3のオンラインノードは予め記憶された前記目標ノードの公開鍵に基づいて前記目標ノードの権限を認証し、
目標ノードのオフライン状況に対して、前記複数の第3のオンラインノードは目標ノードとのハートビート接続に基づいて前記目標ノードの権限を認証するステップをさらに含む、
請求項1に記載の方法。
【請求項13】
目標ノードのオンライン化又はオフライン化を発見すると、前記目標ノードのブロックを作成することに適する第1のオンラインノードと、
前記第1のオンラインノードから送信されたデータ同期リクエストに応答して、前記ブロックが最新のブロックであると確定すると、複数の第3のオンラインノードにそれぞれ前記目標ノードの権限を認証するように通知して、対応する権限認証結果を得ることに適する第2のオンラインノードと、
複数の第3のオンラインノードの権限認証結果に基づいて、当該目標ノードの認証通過率を確定し、認証通過率が所定の条件を満たせば、前記ブロックを現在の全てのオンラインノードがそれぞれメンテナンスするブロックチェーンに同期することに適するデータ更新モジュールと、を含む、
サービスディスカバリシステム。
【請求項14】
プロセッサと、メモリと、メモリに記憶され、プロセッサで実行可能なコンピュータプログラムとを含み、
前記プロセッサは、前記コンピュータプログラムを実行すると、請求項1~12のいずれかに記載の方法を実行する、
コンピューティングデバイス。
【請求項15】
コンピュータプログラムが記憶されているコンピュータ読み取り可能な記憶媒体であって、前記コンピュータプログラムは、プロセッサにより実行されると、請求項1~12のいずれかに記載の方法を実現させる、コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示はコンピュータ技術分野に関し、特に、サービスディスカバリ方法、装置、コンピューティングデバイス及び記憶媒体に関する。
【背景技術】
【0002】
サービスディスカバリは自動運転システムにおいて重要な役割を果たし、システムにおける各ノードのオンライン化・オフライン化管理を担当し、ノードの状態をメンテナンス及び記録する。しかしながら、主に不正ノード、及びノードのオンライン化・オフライン化の記録を捏造、改ざんする状況を考慮しないため、従来のサービスディスカバリ手段はそのサービス機能の安全性を保証しにくい。例えば、何らかの悪意のある侵入者がノードのオンライン化・オフライン化の記録を捏造、改ざんすると、現在のシステムにおけるノードがだまされ、深刻な結果を招く可能性があり、例えばシステム全体が崩壊したりコントロールされたりし、さらに自動運転システムの安全に深刻な影響を及ぼすこととなる。
【発明の概要】
【発明が解決しようとする課題】
【0003】
本開示の実施例は、ノードのサービスディスカバリの安全性及び正確性を向上させるように、サービスディスカバリ方法、装置、コンピューティングデバイス及び記憶媒体を提供する。
【課題を解決するための手段】
【0004】
上記目的を達成するために、本開示の実施例は以下の技術的解決手段を採用する。
【0005】
本開示の実施例の第1の態様は、
第1のオンラインノードは目標ノードのオンライン化又はオフライン化を発見すると、前記目標ノードのブロックを作成し、第2のオンラインノードにデータ同期リクエストを送信するステップと、
前記第2のオンラインノードは前記ブロックが最新のブロックであると確定すると、複数の第3のオンラインノードにそれぞれ前記目標ノードの権限を認証するように通知するステップと、
複数の第3のオンラインノードが前記目標ノードの権限を認証した結果を統計し、認証通過率が所定の条件を満たせば、前記ブロックを現在のオンラインノードがそれぞれメンテナンスするブロックチェーンに同期するステップと、を含む、サービスディスカバリ方法を提供する。
【0006】
本開示の実施例の第2の態様は、
目標ノードのオンライン化又はオフライン化を発見すると、前記目標ノードのブロックを作成することに適する第1のオンラインノードと、
前記第1のオンラインノードから送信されたデータ同期リクエストに応答して、前記ブロックが最新のブロックであると確定すると、複数の第3のオンラインノードにそれぞれ前記目標ノードの権限を認証するように通知することに適する第2のオンラインノードと、
複数の第3のオンラインノードが前記目標ノードの権限を認証した結果を統計し、認証通過率が所定の条件を満たせば、前記ブロックを現在のオンラインノードがそれぞれメンテナンスするブロックチェーンに同期することに適するデータ更新モジュールと、を含む、サービスディスカバリシステムを提供する。
【0007】
本開示の実施例の第3の態様は、プロセッサと、メモリと、メモリに記憶され、プロセッサで実行可能なコンピュータプログラムとを含み、そのうち、プロセッサは、コンピュータプログラムを実行すると、上記したサービスディスカバリ方法を実行する、コンピューティングデバイスを提供する。
【0008】
本開示の実施例の第4の態様は、コンピュータプログラムが記憶されているコンピュータ読み取り可能な記憶媒体であって、前記コンピュータプログラムは、プロセッサにより実行されると、上記したサービスディスカバリ方法を実現させる、コンピュータ読み取り可能な記憶媒体を提供する。
【発明の効果】
【0009】
本開示の実施例の技術的解決手段は、非中央集権型の分散システムを提供し、各ノードには、同じブロックチェーンデータを記憶するための1つのデータベースがあり、各ノードのオンライン化及びオフライン化の動作はいずれも各ノードのデータベース内に書き込まれ、各ノードのオンライン化・オフライン化のデータ記録はブロックチェーンの形態でデータベースに記憶される。本開示はデータの捏造及び改ざんの問題を解決し、ノードのオンライン化・オフライン化には、認証通過率が所定の条件を満たさなければ、オンライン化・オフライン化の情報をブロックチェーンに書き込むことができない。
【図面の簡単な説明】
【0010】
以下、本開示の実施例又は従来技術における技術的解決手段をより明確に説明するために、実施例又は従来技術の説明に使用する必要がある図面を簡単に紹介し、明らかに、以下の説明における図面は本開示のいくつかの実施例に過ぎず、当業者であれば、創造的な労力をせず、これらの図面に基づいて他の図面を得ることができる。
【0011】
図1】本開示の実施例にて提供される車両100の構造図である。
図2】本開示の実施例にて提供されるサービスディスカバリ方法200のフローチャートである。
図3】本開示の実施例に係るベータベースの構造図である。
図4】本開示の実施例に係るオンライン化ブロックの内容の概略図である。
図5】本開示の実施例に係るオフライン化ブロックの内容の概略図である。
図6】本開示の実施例にて提供されるノードのオンライン化のサービスディスカバリ方法600のフローチャートである。
図7】本開示の実施例にて提供されるノードのオフライン化のサービスディスカバリ方法700のフローチャートである。
図8】本開示の実施例にて提供されるサービスディスカバリ装置800の構造図である。
図9】本開示の実施例にて提供されるコンピューティングデバイス900の構造図である。
【発明を実施するための形態】
【0012】
以下、本開示の実施例における図面を参照しながら、本開示の実施例における技術的解決手段を明らか且つ完全に説明し、明らかに、説明される実施例は本開示の実施例の一部に過ぎず、実施例の全部ではない。本開示における実施例において、当業者が創造的な労力をせず得る他の実施例の全ては、いずれも本開示に保護される範囲に属する。
【0013】
なお、本開示の明細書、特許請求の範囲及び上記図面における用語の「第1」、「第2」などは、類似のオブジェクトを区別するために用いられ、特定の順序やあとさきの順序を説明するものではない。このように使用されるデータは、本開示の実施例を明確に説明するために、適切な場合に交換され得ることが理解されるべきである。さらに、用語の「含む」及び「有する」、並びにそれらの任意の変形は、排他的でない包含をカバーすることを意図し、例えば、一連のステップ又はユニットを含むプロセス、方法、システム、製品又は機器は、明確に列挙されたステップ又は要素に必ずしも限定されず、明確に列挙されていないか、又はこれらのプロセス、方法、製品又は機器に固有の他のステップ又はユニットを含むことができる。
【0014】
図1は本明細書に開示される様々な技術が実装され得る車両100の概略図である。車両100は乗用車、トラック、オートバイ、バス、ボート、飛行機、ヘリコプター、芝刈り機、パワーシャベル、スノーモービル、航空機、レクリエーション用車両、アミューズメントパーク用車両、農場用車両、建設用車両、路面電車、ゴルフカート、列車、トロリーバス、又は他の車両とすることができる。車両100は完全又は部分的に自動運転モードで走行することができる。自動運転モードでは、車両100はそれ自身を制御することができ、例えば、車両100は、車両の現在の状態及び車両を取り巻く環境の現在の状態を確定し、当該環境における少なくとも1つの他の車両の予測挙動を確定し、当該少なくとも1つの他の車両が予測挙動を実行する可能性に対応する信頼レベルを確定し、また、確定した情報に基づいて、車両100自身を制御することができる。自動運転モードにある場合、車両100はインタラクション無しで走行できる。
【0015】
車両100は、例えば、駆動システム142、センサシステム144、制御システム146、ユーザインタフェースシステム148、制御用コンピュータシステム150及び通信システム152など、様々な車両システムを含むことができる。車両100は、より多くのシステム又はより少ないシステムを含むことができ、各システムは複数のユニットを含むことができる。さらに、車両100のそれぞれのシステム及びユニットの間は相互接続することができる。例えば、制御用コンピュータシステム150は、車両システム142-148及び152のうち1つ又は複数とデータ通信を行うことができる。それにより、車両100の1つ又は複数の説明された機能は、付加的な機能的構成要素若しくは実体構成要素に分割するか、又はより少ない数の機能的構成要素又は実体構成要素になるように結合することができる。さらなる例では、付加的な機能的構成要素又は実体構成要素を図1に示すような例に追加することができる。
【0016】
駆動システム142は車両100に運動エネルギーを提供する複数の動作可能な構成要素(又はユニット)を含むことができる。一実施例において、駆動システム142は、エンジン又は電動機、車輪、変速機、電子システム、及び動力(又は動力源)を含むことができる。エンジン又は電動機は、内燃機関、電気モータ、蒸気機関、燃料電池エンジン、プロパンエンジン、或いは他の形態のエンジン又は電動機の任意の組み合わせであってよい。いくつかの実施例において、エンジンは動力源を機械的エネルギーに変換することができる。いくつかの実施例において、駆動システム142は複数種のエンジン又は電動機を含むことができる。例えば、ハイブリッド車両は、ガソリンエンジンと電動機とを含んでもよく、その他のものを含んでもよい。
【0017】
車両100の車輪は標準的な車輪とすることができる。車両100の車輪は、一輪、二輪、三輪、又は乗用車やトラックの四輪のような四輪形態を含む様々な形態の車輪とすることができる。他の数の車輪であってもよく、例えば六輪以上の車輪が挙げられる。車両100の1つ又は複数の車輪は、他の車輪の回転方向とは異なるように動作することができる。車輪は変速機に固定接続された少なくとも1つの車輪とすることができる。車輪は、金属とゴムとの組み合わせ、又は他の物質の組み合わせを含むことができる。変速機は、エンジンの機械的動力を車輪に伝達するように動作可能なユニットを含むことができる。この目的のために、変速機は歯車箱、クラッチ、差動歯車及び伝動軸を含むことができる。変速機は他のユニットを含むこともできる。伝動軸は、車輪にマッチングする1つ又は複数の輪軸を含むことができる。電子システムは車両100の電子信号を伝送又は制御するためのユニットを含むことができる。これらの電子信号は、車両100における複数のライト、複数のサーボ機構、複数の電動機、及び他の電気ドライバ又は制御装置を作動させるために用いることができる。動力源はエンジン又は電動機に動力を完全又は部分的に供給するエネルギー源とすることができる。すなわち、エンジン又は電動機は動力源を機械的エネルギーに変換することができる。一例として、動力源はガソリン、石油、石油系燃料、プロパン、他の圧縮ガス燃料、エタノール、燃料電池、ソーラーパネル、電池及び他の電気エネルギー源を含んでもよい。動力源は、付加的又は任意選択的に、燃料タンク、電池、コンデンサ、又はフライホイールの任意の組み合わせを含むことができる。動力源は車両100の他のシステムにエネルギーを供給することもできる。
【0018】
センサシステム144は、車両100の環境及び条件の情報を検知するための複数のセンサを含むことができる。例えば、センサシステム144は、慣性測定ユニット(IMU)、全地球測位システム(GPS)トランシーバ、レーダー(RADAR)ユニット、レーザ距離計/LIDARユニット(又は他の距離測定装置)、音響センサ及びカメラ又は画像キャプチャ装置を含んでもよい。センサシステム144は車両100を監視するための複数のセンサ(例えば、酸素(O2)モニタ、燃料計センサ、エンジン油圧センサなど)を含んでもよい。他のセンサを配置してもよい。センサシステム144に含まれる1つ又は複数のセンサは、1つ又は複数のセンサの位置、方向、又はその両方を更新するために、個別に駆動されても、集合的に駆動されてもよい。
【0019】
IMUは、慣性加速に基づいて車両100の位置変化及び方向変化を検知するために、センサの組み合わせ(例えば、加速器とジャイロ)を含むことができる。GPSトランシーバは車両100の地理的位置を推定するための任意のセンサとすることができる。この目的のために、GPSトランシーバは、地球に対する車両100の位置情報を提供するために、受信機/送信機を含むことができる。なお、GPSは全地球航法衛星システムの一例であるため、いくつかの実施例において、GPSトランシーバを北斗衛星ナビゲーションシステムトランシーバ又はガリレオ衛星ナビゲーションシステムトランシーバに置き換えてもよい。レーダーユニットは、無線信号を使用して、車両100を取り巻く環境におけるオブジェクトを検知することができる。いくつかの実施例において、レーダーユニットは、オブジェクトを感知することに加えて、車両100に接近する物体の速度及び進行方向を検知するために用いることができる。レーザ距離計又はLIDARユニット(又は他の距離測定装置)は、レーザを使用して車両100を取り巻く環境における物体を検知する任意のセンサとすることができる。一実施例において、レーザ距離計/LIDARユニットは、レーザ光源、レーザスキャナー、及び感知器を含むことができる。レーザ距離計/LIDARユニットは、連続的(例えばヘテロダイン検出を用いる)又は不連続な検出モードで動作するために用いられる。カメラは、車両100を取り巻く環境の複数の画像をキャプチャするための装置を含むことができる。カメラは静止画像カメラであっても、動画カメラであってもよい。
【0020】
制御システム146は車両100及びその構成要素(又はユニット)への操作を制御するために用いられる。それに応じて、制御システム146は、例えば、ステアリングユニット、動力制御ユニット、制動ユニット及びナビゲーションユニットなど、様々なユニットを含むことができる。
【0021】
ステアリングユニットは車両100の進行方向を調整する機械の組み合わせとすることができる。動力制御ユニット(例えば、アクセルであってもよい)は、例えば、エンジンの回転速度を制御し、さらに、車両100の速度を制御するために用いられてもよい。制動ユニットは車両100を減速させるための機械の組み合わせを含むことができる。制動ユニットは標準的な方式で摩擦力により車両を減速させることができる。他の実施例において、制動ユニットは車輪の運動エネルギーを電流に変換することができる。制動ユニットは他の形態を用いてもよい。ナビゲーションユニットは車両100のために運転経路又はルートを決定する任意のシステムとすることができる。ナビゲーションユニットは、車両100の走行中に運転経路を動的に更新することもできる。制御システム146は、付加的又は任意選択的に、図示されない又は説明されない他の構成要素(又はユニット)を含むこともできる。
【0022】
ユーザインタフェースシステム148は、車両100と、外部センサ、他の車両、他のコンピュータシステム及び/又は車両100のユーザとの間のインタラクションを可能にするために用いることができる。例えば、ユーザインタフェースシステム148は、標準的な視覚的表示装置(例えば、プラズマディスプレイ、液晶ディスプレイ(LCD)、タッチスクリーンディスプレイ、ヘッドマウントディスプレイ、又は他の同様のディスプレイ)と、スピーカ又は他の音声出力装置と、マイクロフォン又は他の音声入力装置とを含んでもよい。例えば、ユーザインタフェースシステム148は、ナビゲーションインタフェースと、車両100の内部環境(例えば、温度、ファンなど)を制御するインタフェースとを含んでもよい。
【0023】
通信システム152は、1つ又は複数の機器又は周囲の他の車両と通信する手段を車両100に提供することができる。例示的な一実施例において、通信システム152は、直接、又は通信ネットワークを介して1つ又は複数の機器と通信することができる。通信システム152は、例えば無線通信システムであってよい。例えば、通信システムは、3Gセルラ通信(例えば、CDMA、EVDO、GSM/GPRS)又は4Gセルラ通信(例えば、WiMAX又はLTEe)を用いてもよく、5Gセルラ通信を用いてもよい。任意選択的に、通信システムは、無線ローカルエリアネットワーク(WLAN)と通信することができる(例えば、WIFI(登録商標)を用いる)。いくつかの実施例において、通信システム152は、例えば、赤外線、ブルートゥース(登録商標)、又はZIGBEE(登録商標)を用いて、1つ又は複数の機器又は周囲の他の車両と直接通信することができる。様々な車載通信システムのような他の無線プロトコルも本開示の範囲内にある。例えば、通信システムは、車両及び/又は路側局と公開又は秘密のデータ通信を行うことが可能な、1つ又は複数の専用狭域通信(DSRC)装置と、V2V装置又はV2X装置とを含んでもよい。
【0024】
制御用コンピュータシステム150は車両100の機能の一部又は全部を制御することができる。制御用コンピュータシステム150における自動運転制御ユニットは、車両100を取り巻く環境における潜在的な障害物を識別し、評価し、回避し、又は越えるために用いることができる。一般的に、自動運転制御ユニットは、運転者無しで車両100を制御し、又は運転者による車両への制御に支援を提供するために用いることができる。いくつかの実施例において、自動運転制御ユニットは、GPSトランシーバからのデータ、レーダーデータ、LIDARデータ、カメラデータ、及び他の車両システムからのデータを組み合わせて、車両100の走行経路又は軌跡を決定するために用いられる。自動運転制御ユニットは、車両100が自動運転モードで運転されることを可能にするために、アクティブにすることができる。
【0025】
制御用コンピュータシステム150は少なくとも1つのプロセッサ(それは少なくとも1つのマイクロプロセッサを含むことができる)を含むことができ、プロセッサは不揮発性コンピュータ読み取り可能な媒体(例えば、データ記憶装置又はメモリ)に記憶された処理命令(すなわち、機械実行可能な命令)を実行する。メモリには少なくとも1つの機械実行可能な命令が記憶され、プロセッサは少なくとも1つの機械実行可能な命令を実行してマップエンジン、ポジショニングモジュール、検知モジュール、ナビゲーション又は経路モジュール、及び自動制御モジュールなどを含む機能を実現する。マップエンジン及びポジショニングモジュールは地図情報及びポジショニング情報を提供するために用いられる。検知モジュールはセンサシステムが取得した情報及びマップエンジンが提供した地図情報に基づいて車両を取り巻く環境における物事を検知するために用いられる。ナビゲーション又は経路モジュールはマップエンジン、ポジショニングモジュール及び検知モジュールの処理結果に基づいて、車両のために走行経路を計画するために用いられる。自動制御モジュールはナビゲーション又は経路モジュールなどのモジュールの意思決定情報を入力させ解析して車両制御システムへの制御命令に変換して出力し、車載ネットワーク(例えばCANバス、ローカルエリアネットワーク、メディア指向システムトランスポートなどの方式で実現される車両内部電子ネットワークシステム)を介して制御命令を車両制御システムにおける対応する構成要素に送信し、車両への自動制御を実現し、自動制御モジュールはさらに、車載ネットワークを介して車両における各構成要素の情報を取得することができる。
【0026】
制御用コンピュータシステム150は、分散して車両100の構成要素又はシステムを制御する複数のコンピューティング装置とすることもできる。いくつかの実施例において、メモリは、プロセッサに実行されて車両100の様々な機能を実装する処理命令(例えば、プログラムロジック)を含むことができる。一実施例において、制御用コンピュータシステム150は、システム142、144、146、148及び/又は152とデータ通信を行うことができる。制御用コンピュータシステムにおけるインタフェースは制御用コンピュータシステム150と、システム142、144、146、148及び152との間のデータ通信を容易にするために用いられる。
【0027】
メモリは、データ送信のための命令、データ受信のための命令、インタラクションのための命令、又は駆動システム140、センサシステム144、又は制御システム146若しくはユーザインタフェースシステム148を制御するための命令を含める他の命令を含むことができる。
【0028】
処理命令を記憶することに加えて、メモリは、例えば画像処理パラメータ、道路地図、及び経路情報のような複数種の情報又はデータを記憶することができる。これらの情報は、車両100が自動形態、半自動形態及び/又は手動モードで走行している間に、車両100及び制御用コンピュータシステム150に使用することができる。
【0029】
自動運転制御ユニットは、プロセッサ及びメモリとは別個に示されているが、いくつかの実施形態において、自動運転制御ユニットの機能の何らか又は全部は、1つ又は複数のメモリ(又はデータ記憶装置)中に存在しているプログラムコード命令により実装し、1つ又は複数のプロセッサにより実行することができ、また、何らかの場合に、自動運転制御ユニットは同じのプロセッサ及び/又はメモリ(又はデータ記憶装置)を用いて実装することができることを理解されたい。いくつかの実施形態において、自動運転制御ユニットは少なくとも部分的に、様々な特定用途向け論理回路、様々なプロセッサ、様々なフィールドプログラマブルゲートアレイ(「FPGA」)、様々な特定用途向け集積回路(「ASIC」)、様々なリアルタイムコントローラ及びハードウェアを用いて実装することができる。
【0030】
制御用コンピュータシステム150は、様々な車両システム(例えば、駆動システム142、センサシステム144及び制御システム146)から受信した入力、又はユーザインタフェースシステム148から受信した入力に基づいて、車両100の機能を制御することができる。例えば、制御用コンピュータシステム150は、制御システム146からの入力を用いてステアリングユニットを制御して、センサシステム144により検知された障害物を回避することができる。一実施例において、制御用コンピュータシステム150は、車両100及びそのシステムの複数の態様を制御するために用いることができる。
【0031】
図1には、車両100中に集積された様々な構成要素(又はユニット)が示されているが、これらの構成要素(又はユニット)のうちの1つ又は複数は、車両100に搭載され、又は車両100に個別に関連付けられてもよい。例えば、制御用コンピュータシステムは、一部又は全部が車両100から独立して存在してもよい。それにより、車両100は、別個の、又は集積された機器ユニットの形態で存在することができる。車両105を構成する機器ユニット間は、有線通信又は無線通信により相互通信を実現することができる。いくつかの実施例において、付加的な構成要素又はユニットを各システムに追加し、又はシステムから1つ以上の構成要素又はユニット(例えば、図1に示されるLiDAR又はレーダー)を取り除くとすることができる。
【0032】
前述したように、サービスディスカバリは自動運転システムにおいて重要な役割を果たす。実現方式により、サービスディスカバリは中央集権型のサービスディスカバリと非中央集権型のサービスディスカバリとの2種類のモードに分けられる。
【0033】
中央集権型のサービスディスカバリは主にオープンソースシステムROSに用いられ、当該システムにおいてサービスディスカバリの中心ノードとして、システム全体を管理する1つのメインノードが存在する。他の自動運転システムは、非中央集権型のサービスディスカバリモード自身に中心ノードが存在しないことで、システム全体がより高いフォールトトレランス性を備え、中心ノードの意外な崩壊によるシステム全体の崩壊を引き起こさないため、非中央集権型のサービスディスカバリモードを用いる。非中央集権型のサービスディスカバリの技術的解決手段はシステム全体のロバスト性を向上させるが、不正ノードの存在を考慮しない。例えば、いくつかのサービスディスカバリにおけるコンセンサスプロトコルはRAFTに基づいて設計されるが、RAFT自身はシステム内のノードのフリーズのみを許可し、システム内の不正ノードの存在を考慮しない。
【0034】
上記問題を解決するために、本開示は、自動運転システムに適用できる新規なサービスディスカバリ方法200を提供する。図2に示すように、当該方法200は、以下のステップS202~ステップS206を含む。
【0035】
S202において、第1のオンラインノードは目標ノードのオンライン化又はオフライン化を発見すると、前記目標ノードのブロックを作成し、第2のオンラインノードにデータ同期リクエストを送信する。
【0036】
S204において、第2のオンラインノードは前記ブロックが最新のブロックであると確定すると、複数の第3のオンラインノードにそれぞれ前記目標ノードの権限を認証するように通知する。ここで、各第3のノードは目標ノードの権限を認証した後、1つの対応する権限認証結果を得、当該権限認証結果は認証通過と認証失敗とを含む。
【0037】
S206において、複数の第3のオンラインノードが前記目標ノードの権限を認証した結果を統計して、認証通過率を得る。認証通過率が所定の条件を満たせば、ブロックを現在のオンラインノードがそれぞれメンテナンスするブロックチェーンに同期する。ただし、認証通過率とは認証通過回数と認証総回数との比である。現在のオンラインノードは第1のオンラインノードと、第2のオンラインノードと、当該複数の第3のノードとを含むことができる。現在オンラインノードはコンセンサスアルゴリズムを行うコンセンサスノードを含むものとして理解することができる。
【0038】
いくつかの実施例において、本開示の各ノードはそれぞれ1つのデータベースをメンテナンスし、当該データベースは現在のブロックチェーン及びインデックスフィールドを記憶するために用いることができ、その記憶構造は図3に示すとおりであり、すなわち各ノードにおいていずれも同一のブロックチェーン及び同一のインデックスフィールドを共同でメンテナンスする。
【0039】
ブロックチェーンにおけるブロックはオンライン化ブロックBlock-xx-onlineとオフライン化ブロックBlock-xx-offlineに分けられ、ここで、Blockはブロックを表し、xxは所属ノード番号を表し、onlineはブロックのオンライン化を表し、offlineはブロックのオフライン化を表す。オンライン化ブロックはノードのオンライン化情報を記録するために用いられ、オフライン化ブロックはノードのオフライン化情報を記録するために用いられる。オンライン化ブロック及びオフライン化ブロックの情報内容はそれぞれ図4及び図5に示すとおりであり、ブロックは、ブロックタイプ、ブロック番号、所属ノード番号、1つ前のブロックのハッシュ値、本ブロックのハッシュ値、及び目標ノードのデータ署名のうち少なくとも1種の情報を含む。
【0040】
ここで、ブロックタイプはオンライン化ブロックとオフライン化ブロックとを含み、ブロック番号は現在のブロックチェーンにおけるブロック数に1を加算するものであり、所属ノード番号は発見されたオンライン化又はオフライン化の目標ノード番号である。現在のデータベースに記憶されたブロックチェーンのブロック数をx-1とすると、新たに作成されたブロック番号はxである。オンライン化・オフライン化の目標ノードがaであると発見すると、所属ノード番号はaである。1つ前のブロックのハッシュ値はブロックチェーンにおけるx-1ブロックのハッシュ値であり、現在のブロックのハッシュ値は作成されたxブロックのハッシュ値である。当該ハッシュ値はブロック内のデータ内容に基づいて算出することができるが、これに限定されない。ブロックチェーンにおける1つ前のブロックと現在のブロックのハッシュ値は、ブロックチェーンにおけるブロックが直されないという特性を保証する。
【0041】
インデックスフィールドは辞書構造であり、インデックスフィールドは少なくとも1つのインデックスエントリを含み、各インデックスエントリは各オンラインノードのオンライン化ブロックの位置インデックスを記録する。オンラインノード集合をBとすると、その中にオンラインノードb0、b1、……、bnが含まれ、各オンラインノードbx(x=0、1、……、n)はそのオンライン化ブロックBlock-bx-onlineへのインデックスを有する。オンラインノードのインデックス情報のみがインデックスフィールドに置かれ、オフラインノードのインデックスはインデックスフィールドの辞書から削除される。すなわち、インデックス領域には、現在のオンラインノード集合における各ノードのインデックスエントリのみが記録される。
【0042】
一般的に、新しいノードがオンライン化する時にデータ書き込みリクエストを発行するが、ノードがオフライン化する時に意外に終了する可能性があり、データ書き込みリクエストを発行することができない。したがって、本開示の実施例において、目標ノードのオンライン化はノードオンライン化リクエストに基づいて識別され、目標ノードのオフライン化はハートビートシステムのハートビート接続に基づいて識別される。
【0043】
具体的には、いくつかの実施例において、ステップS202において第1のオンラインノードは目標ノードのオンラインを発見することは、第1のオンラインノードは目標ノードのデータ署名に基づいて目標ノードから送信されたノードオンライン化リクエストを認証通過させることを含む。
【0044】
1つのデータ署名は2つの部分を含む。第1の部分のデータは伝送されたデータ(すなわち署名されたデータ)であり、当該データは他のノードに送信しようとする任意のデータ(一部のバイナリコード)とすることができ、例えばIPアドレス、ポート番号などが挙げられ、第2の部分のデータは自己の秘密鍵で第1の部分のデータを暗号化して得られた新しいデータ(新しいバイナリコード)である。認証とは、ノードbがノードaの身元を認証することであり、ノードbはノードaの公開鍵を含み、それはノードaがノードaの秘密鍵を含むことを認証する必要がある。認証方法として、ノードbはまずノードaからのデータ署名を受信し、続いてノードaの公開鍵でデータ署名の第2の部分のデータを復号し、復号したデータを第1の部分のデータとマッチングし、マッチングが成功すれば、第2の部分のデータがノードaの秘密鍵によって暗号化されて得られたものであると確認でき、それによりノードaがノードaの秘密鍵を含むと確認する。
【0045】
ただし、開発者は、まず、システムに組み込み可能なノードの認証ルールを定義し、プロファイルを作成することができる。当該ルールはサービスディスカバリシステム全体の作用範囲を決定する。例えばユーザは特定の身元を含むノードではなければシステムに組み込むことができないと定義することができ、この場合、システムに組み込み可能な全てのノードの公開鍵を予め記憶する必要があり、対応する秘密鍵を含むノードが認証を発行してはじめてシステムに加入できる。したがって、現在のオンラインノード集合における各オンラインノードはシステムに組み込み可能なノードの公開鍵を直接得ることができる。
【0046】
他の実施例において、ステップS202において第1のオンラインノードは目標ノードのオフライン化を発見することは、第1のオンラインノードによる目標ノードのハートビート情報の受信がタイムアウトすることを含む。ノードのオフライン化は必ずしも能動的行為ではなく、意外に終了する可能性があり、この場合に、ノード自身はノードオフライン化のデータベース書き込みリクエストの発行を保証できない。この場合に、ノードがオフライン化するか否かを確認するために、ハートビートシステムが必要となる。目標ノードがオンライン化した後、オンラインノード集合の各ノードはいずれもハートビートの方式により目標ノードのハートビートメッセージを継続的に傍受し、あるノードbがタイムアウトしてもノードAのハートビートデータを受信していなければ、それはノードaがオフライン化すると考え、続いてノードbはノードaがオフライン化するデータを書き込むというリクエストをデータベースに発行し、所定の割合(例えば1/3)以上のノードが当該リクエストを発行すると、当該リクエストが成立又は発効すると考えられ、こうしてデータベースに当該リクエストを書き込み、書き込みが成功した後にノードがオフライン化すると考えられる。
【0047】
いくつかの実施例において、第1のオンラインノードから送信されたデータ同期リクエストにはそれが作成したブロックのブロック番号及び目標ノードのデータ署名が付けられている。このように、ステップ204において、第2のオンラインノードは当該データ同期リクエストにおけるブロック番号に基づいて現在のブロックが最新のブロックであるか否かを確定することができ、具体的には、当該第2のオンラインノードのデータベースのブロックチェーンにおける最大のブロック番号(すなわちブロック数)と比較することができ、データ同期リクエストにおけるブロック番号がブロックチェーンにおける最大のブロック番号に1を加算するものであると、当該ブロックは最新のブロックであることが示される。例えば、現在のブロックチェーンにおける最大ブロック番号をx-1とすると、当該第1のオンラインノードの作成したブロックのブロック番号がxであれば、当該ブロックは最新のブロックであることが示され、複数の第2のオンラインノードに当該ブロックを認証するように通知する。当該ブロックが最新のブロックでなければ、当該ブロックを廃棄する。
【0048】
なお、第2のオンラインノードはオンラインノード集合における第1のオンラインノード以外のいずれかのノードとすることができ、PBFTコンセンサスアルゴリズムに必要な中心ノードとして理解することができるが、サービスディスカバリシステム全体は非中央集権型のシステムであり、特別に設定された中心ノードがない。目標ノードAから見ると、それが発行するオンライン化リクエストはシステムにおけるいずれかのノードによって応答することができる。
【0049】
いくつかの実施例において、第2のオンラインノードは複数の第3のオンラインノードのうちの指定ノードであり、当該指定ノードは第3のオンラインノードから選択されたいずれかのノードとすることができる。この場合に、システム内のコンセンサスノードは第1のオンラインノードと複数の第3のオンラインノードとを含み、認証通過率=(第3のオンラインノードの認証通過回数+1)/(第3のオンラインノードの数+1)とする。式中の1は既に認証された第1のオンラインノードに対応する。認証通過回数は初期で0であり、1つの第3のオンラインノードは目標ノードの公開鍵に基づいて目標ノードのデータ署名を認証通過させるたび、認証通過回数に1を加算する。又は、1つの第3のオンラインノードがタイムアウトしても当該目標ノードのハートビート情報を受信していないたび、認証通過回数に1を加算する。コンセンサスアルゴリズムを行うコンセンサスノードは現在のインデックスにおけるオンライン集合における全てのノードであってもよく、オンラインノード集合における一部のノードであってもよいことを、当業者であれば理解すべきである。したがって、当該複数の第3のオンラインノードはオンラインノード集合における第1のオンラインノード以外の全て又は一部のノードとすることができる。
【0050】
他の実施例において、第2のオンラインノードは複数の第3のオンラインノードと異なるノードであり、この場合に、システム内のコンセンサスノードは第1のオンラインノード、第2のオンラインノード及び複数の第3のオンラインノードを含む。当該複数の第3のオンラインノードはオンラインノード集合における第1のオンラインノード及び第2のオンラインノード以外の全て又は一部のノードとすることができる。ステップ204において、第2のオンラインノードは前記ブロックが最新のブロックであると確定すると、複数の第3のオンラインノードにそれぞれ前記目標ノードの権限を認証するように通知することは、第2のオンラインノードは前記ブロックが最新のブロックであると確定し、且つ前記目標ノードに対する権限認証を通過させると、複数の第3のオンラインノードにそれぞれ前記目標ノードの権限を認証するように通知することを含む。すなわち、第2のオンラインノードは目標ノードに対する権限認証を通過させてはじめて、複数の第3のオンラインノードに認証を行うように通知する。ここで、ノードのオンライン化の権限認証通過は目標ノードのデータ署名に対する認証通過とすることができ、ノードのオフライン化の認証通過はタイムアウトしても当該目標ノードのハートビート情報を受信していないこととすることができる。この場合に、認証通過率=(第3のオンラインノードの認証通過回数+2)/(第3のオンラインノードの数+2)とする。式中の2は既に認証通過した第1のオンラインノード及び第2のオンラインノードに対応する。
【0051】
すなわち、ステップS204において、複数の第3のオンラインノードは前記目標ノードの権限を認証することは、複数の第3のオンラインノードは目標ノードの公開鍵及びデータ署名に基づいて前記目標ノードのオンライン化権限を認証すること、又は複数の第3のノードは目標ノードとのハートビート接続に基づいて目標ノードのオフライン化権限を認証し、所定の割合の第3のオンラインノードがいずれもタイムアウトしても当該目標ノードのハートビート情報を受信していなければ、すなわち所定の割合のオンラインノードと目標ノードとのハートビート接続がタイムアウトすれば、当該目標ノードがオフライン化すると確定することを含む。
【0052】
システムには随時にオンライン化・オフライン化する目標ノードが複数あり、随時に複数の目標ノードのオンライン化・オフライン化を発見する第1のオンラインノードが複数あることが理解されるべきである。したがって、ステップS202は、
複数の第1のオンラインノードが同時に前記目標ノードのオンライン化又はオフライン化を発見することに応答して、各第1のオンラインノードはそれぞれ前記目標ノードのブロックを作成し、それぞれ前記第2のオンラインノードにデータ同期リクエストを送信するステップと、
複数の第1のオンラインノードが同時に複数の目標ノードのオンライン化又はオフライン化を発見することに応答して、各第1のオンラインノードはそれぞれ発見した目標ノードのブロックを作成し、それぞれ前記第2のオンラインノードにデータ同期リクエストを送信するステップと、をさらに含む。
【0053】
各データ同期リクエストにはいずれも作成したブロックのブロック番号及び目標ノードのデータ署名が付けられている。複数のデータ同期リクエストはいずれも第2のオンラインノードに送信されて応答処理を行う。第2のオンラインノードは各データ同期リクエストが到達する時間又は送信される時間に基づいて、複数のデータ同期リクエストを順に処理し、処理しないデータ同期リクエストを緩衝記憶領域に一時的に記憶する。ここで、第2のオンラインノードは複数のデータ同期リクエストの処理順序を確定し、順次各ブロックに対して認証操作を行い、例えば当該ブロックが最新のブロックであるか否かのみを識別し、又は当該ブロックが最新のブロックであるか否かも識別し、当該目標ノードのデータ署名も識別する。認証を通過させる場合、複数の第3のオンラインノードに目標ノードの権限を認証するように通知し、すなわちコンセンサスノードによる当該目標ノードに対するコンセンサス認証を発行する。認証を通過させない場合、当該ブロックを廃棄し、緩衝記憶領域から次の処理しないデータ同期リクエストを取って処理する。
【0054】
いくつかの実施例において、第2のオンラインノードは全てのオンラインノードのコンセンサス結果が出てはじめて、次のコンセンサス応答を発行し、すなわち各コンセンサスノードにコンセンサス認証を行うように通知する。各オンラインノードは当該目標ノードの権限を認証し、すなわち当該目標ノードの公開鍵に基づいて当該目標ノードのデータ署名を認証する。
【0055】
全てのオンラインノードの認証通過率が所定の条件を満たす場合、当該目標ノードが正常なノードであると確定し、全てのオンラインノードは当該目標ノードのブロックをそれぞれのデータベースにおけるブロックチェーンに加える。認証通過率が所定の条件を満たさない場合、当該目標ノードが異常なノードであると確定し、当該ブロックを廃棄する。このように、ブロックチェーンにおけるブロックは常にコンセンサスノード認証を通過した後のブロックである。ただし、認証通過率が所定の条件を満たすとは、例えば認証通過率が所定値(例えば1/3、もちろんこれに限定されない)に達することである。
【0056】
各現在のオンラインノードは同一のブロックチェーンを共同でメンテナンスし、当該ブロックチェーンにおけるブロック数(すなわち現在の最大のブロック番号)はx-1であることが知られており、同時にm個の第1のオンラインノードが目標ノードaのオンライン化を発見すれば、各第1のオンラインノードはいずれも当該目標ノードaのブロックを1つ作成し(作成されたブロックのブロック番号はいずれもxである)、それぞれ第2のオンラインノードにデータ同期リクエストを送信する。第2のオンラインノードはこれらのデータ同期リクエストの到達時間に基づいてこれらのリクエストを処理し、最初に到達したブロック番号xを含むデータ同期リクエスト1に最も早く応答し、他のデータ同期リクエスト2-mを緩衝記憶領域に記憶する。
【0057】
第2のオンラインノードは当該データ同期リクエストにおけるブロック番号xをブロックチェーンにおける最大のブロック番号と比較し、当該ブロックが最新のブロックであると確定する。続いて当該ブロックがさらにコンセンサスアルゴリズムの認証を経れば、当該ブロックは各オンラインノードのブロックチェーンに接続され、最大のブロック番号はxに更新される。
【0058】
その後、第2のオンラインノードはさらに緩衝記憶領域から他のデータ同期リクエスト2-mを取って処理すると、これらのブロック番号はいずれも現在のブロックチェーンの最大の番号と同じであることを発見し、これらのブロックはいずれも最新のブロックではないことが示されるため、破棄される。
【0059】
一方で、データ同期リクエスト1のブロックがコンセンサスアルゴリズムの認証を通過しなければ、当該ブロックも廃棄され、ブロックチェーンに番号がxのブロックを加えるまで、第2のオンラインノードはデータ同期リクエスト2を取って処理し続ける。
【0060】
同様に、複数の第1のオンラインノードが同時に複数の目標ノードのオンライン化・オフライン化を発見すると、各第1のオンラインノードはそれぞれ発見した目標ノードのオンライン化ブロック又はオフライン化ブロックを作成し、データ同期リクエストを発行する。例えば、第1のオンラインノード1は目標ノード1のオンライン化を発見し、第1のオンラインノード2はノード2のオフライン化を発見すると、第1のオンラインノード1は目標ノード1のオンライン化ブロック1を作成し、ブロック番号をxとし、第1のオンラインノード2は目標ノード2のオフライン化ブロック2を作成し、ブロック番号もxとする。第2のオンラインノードはこの2つのデータ同期リクエストの到達順序又は送信時間順序に基づいて処理し、第1のオンラインノード1のデータ同期リクエストが先に到達すれば、先に当該第1のオンラインノード1のデータ同期リクエストを処理する。当該リクエストにおけるブロックはコンセンサスアルゴリズムにより認証されると、オンライン化ブロック1により各オンラインノードが共同でメンテナンスするブロックチェーンに加えられ、ブロックチェーンの最新のブロック番号はxになる。
【0061】
第2のオンラインノードは第1のオンラインノード2から送信されたデータ同期リクエストを処理し続ける場合、当該オフライン化ブロック2が最新のブロックではないことを発見し、したがって、当該オフライン化ブロック2を廃棄し、すなわち当該目標ノード2のオフライン化が成功に応答されない。この場合、他の1つ又は複数の第1のオンラインノードは引き続き当該目標ノード2のオフライン化に応答し、新しいオフライン化ブロックを生成し、ブロック番号をx+1とする。第2のオンラインノードは引き続きこれらのブロック番号がx+1のデータ同期リクエストを処理し、コンセンサスアルゴリズムによる認証に成功した後にブロック番号がx+1のオフライン化ブロックをブロックチェーンに接続する。
【0062】
このような方式により、ブロック番号がxのオンライン化ブロック1及びブロック番号がx+1のオフライン化ブロックがブロックチェーンに加えられ、認証を通過したノードのオンライン化及びノードのオフライン化にはいずれも対応する1つのブロックがブロックチェーンに加えられることが保証される。
【0063】
いくつかの実施例において、方法200は、第1のオンラインノードが目標ノードのオンライン化状況を発見し且つ認証通過率が所定の条件を満たせば、現在の全てのオンラインノードのインデックスフィールドに前記目標ノードのインデックスエントリを追加し、更新されたインデックスフィールド及びブロックチェーンを前記目標ノードのデータベースに同期するステップをさらに含むことができる。ここで、オンラインノード集合は目標ノードのオンライン化が成功すると確定すると、他の既存のオンラインノードのブロックチェーン及びインデックスフィールドが更新され(ブロックチェーンには当該目標ノードのオンライン化ブロックが追加され、インデックスフィールドには当該目標ノードのインデックスが追加される)、当該目標ノードも最新のブロックチェーン及びインデックスフィールドを取得する。
【0064】
他の実施例において、方法200は、第1のオンラインノードが目標ノードのオフライン化状況を発見し且つ前記認証通過率が所定の条件を満たせば、現在の全てのオンラインノードのインデックスフィールドにおいて前記目標ノードのインデックスエントリを削除し、前記目標ノードのデータベースに記憶されたブロックチェーン及びインデックスフィールドを削除するステップをさらに含むことができる。ここで、オンラインノード集合は目標ノードのオフライン化が成功すると確定すると、現在の既存のオンラインノードのブロックチェーン及びインデックスフィールドが更新され(ブロックチェーンには当該目標ノードのオフライン化ブロックが追加されることにより更新されたブロックチェーンであって、最新のブロックチェーンとも呼ばれるものが得られ、インデックスフィールドには当該目標ノードのインデックスが削除されることにより更新されたインデックスフィールドであって、最新のブロックチェーンとも呼ばれるものが得られる)、当該目標ノードデータベースにおいてメンテナンスされるブロックチェーン及びインデックスフィールドも削除される。
【0065】
図6は本開示の実施例によるノードのオンライン化のサービスディスカバリ方法600を示す。図6に示すように、方法600は以下のステップS602~S606を含む。
【0066】
ステップS602において、第1のオンラインノードは目標ノードのオンライン化を発見すると、前記目標ノードのオンライン化ブロックを作成し、第2のオンラインノードにデータ同期リクエストを送信する。
【0067】
ステップS604において、第2のオンラインノードは前記オンライン化ブロックが最新のブロックであると確定すると、複数の第3のオンラインノードにそれぞれ前記目標ノードの権限を認証するように通知して、対応する権限認証結果を得る。
【0068】
ステップS606において、複数の第3のオンラインノードが前記目標ノードの権限を認証した結果を統計し、認証通過率が所定の条件を満たせば、前記オンライン化ブロックを現在の全てのオンラインノードがそれぞれメンテナンスするブロックチェーンに同期し、現在の全てのオンラインノードのインデックスフィールドに前記目標ノードのインデックスエントリを追加し、また更新したインデックスフィールド及びブロックチェーンを前記目標ノードのデータベースに同期する。
【0069】
図7は本開示の実施例によるノードオフライン化のサービスディスカバリ方法700を示す。図7に示すように、方法700は以下のステップS702~S706を含む。
【0070】
ステップS702において、第1のオンラインノードは目標ノードのオフライン化を発見すると、前記目標ノードのオフライン化ブロックを作成し、第2のオンラインノードにデータ同期リクエストを送信する。
【0071】
ステップS704において、第2のオンラインノードは前記オフライン化ブロックが最新のブロックであると確定すると、複数の第3のオンラインノードにそれぞれ前記目標ノードの権限を認証するように通知する。
【0072】
ステップS706において、複数の第3のオンラインノードが前記目標ノードの権限を認証した結果を統計し、認証通過率が所定の条件を満たせば、前記オフライン化ブロックを現在の全てのオンラインノードがそれぞれメンテナンスするブロックチェーンに同期し、現在の全てのオンラインノードのインデックスフィールドにおいて前記目標ノードのインデックスエントリを削除し、また目標ノードのデータベースにおいて記憶されたブロックチェーン及びインデックスフィールドを削除する。
【0073】
以下、具体例によりノードのオンライン化・オフライン化のプロセスを説明する。
【0074】
1、目標ノードaのオンライン化のプロセス:
1)目標ノードaの開始時に認証モジュール(ノードaの公開鍵、秘密鍵及び構プロファイル)、通信モジュール、データ記憶モジュールをロードする。ここで、秘密鍵は身元認証の根拠として自分で保存され、公開鍵はシステムに送信することができ、任意のシステムにおけるノードは当該公開鍵を取得することができる。もちろん、他のノードもプロファイルをロードすれば、それらは既にaの公開鍵を有するため、それ以上送信する必要がない。
【0075】
2)目標ノードaの通信モジュールのロードが完了した後に、1つの特定のネットワークポートを傍受し始め、それによりネットワーク上の他のノードのデータを傍受し、地震のオンライン化リクエストCAを他のノードが傍受したネットワークポートに継続的に送信する。当該ネットワークポートは全てのオンラインノード集合B(b0、b1、…、bn)におけるノードに傍受される。目標ノードaのオンライン化リクエストCAは1つのデータ署名であり、その内容の第1の部分のデータは所属IPアドレスと、その他の通信リンク情報(当該部分の情報の内容は、具体的に使用する通信モジュールに関するものである)を含む。他のノードはデータ署名における第1の部分の内容によりノードaの通信モジュールと通信を確立することができる。
【0076】
3)第1のオンラインノードb(ノードbは集合Bに属し、集合Bにおける任意のノードとすることができる)は目標ノードaのオンライン化リクエストCAを傍受した後、まず認証モジュールにより目標aの正当な身元を確認し、認証を通過させる場合、新しいブロックBlock-a-onlineを作成し、データベースDを同期するリクエストを継続的に発行する。ブロックBlock-a-onlineの構造を図4に示す。認証を通過させない場合、管理モジュールにノードaを強制的にオフライン化させるように通知する。
【0077】
4)システムにはブロックBlock-a-onlineを加えデータベースDを同期するリクエストが現れると、PBFTコンセンサスアルゴリズムにおいて設定された中心ノード(第2のオンラインノード)により応答処理を行う(ここでの中心ノードはPBFTコンセンサスアルゴリズムに必要なリーダーに過ぎず、システム全体は非中央集権型のシステムであり、リーダーの概念がない。ノードaから見ると、それが発行するオンライン化リクエストはシステムにおけるいずれかのノードbにより応答することができ、外部ノードaのリクエストに応答するために特に設定された中心ノードが存在しない)。当該リクエストが応答されると確認すると、他のリクエストは緩衝記憶領域に置かれ、後の処理を待っている。
【0078】
5)第2のオンラインノードはまず当該ブロックBlock-a-onlineが最新のブロックであるか否かを判断し(複数のノードが同時にオンライン化するという問題を解決するために)、最新のブロックでなければ、当該リクエストを直接廃棄し、緩衝記憶領域に処理されていないリクエストがあるか否かを判断し、あれば、緩衝記憶領域から次のリクエストを取って処理する。最新のブロックであれば、各オンラインノードをBlock-a-onlineにおけるデータ署名により身元認証を行うように要求し、三分の一を超えるノードが認証により間違わないと、PBFTコンセンサスアルゴリズムを用いて各ノードにおけるブロックを1回同期し、同期後にシステムにおける各ノードはブロックBlock-a-onlineをデータベースDのブロックチェーンに加え、インデックスフィールドにおいて当該目標ノードaのインデックスエントリを加える。
【0079】
2、目標ノードaのオフライン化の場合:
1)第1のオンラインノードb(オンラインノード集合Bに属するいずれかのノード)はハートビートの方式により目標ノードaのハートビート情報を継続的に傍受し、ハートビート接続のタイムアウトを発見すると、新しいブロックBlock-a-offlineを作成し、データベースDの同期リクエストを発行する。Block-a-offlineの構造を図5に示す(現在のブロックチェーンにおけるブロック数をy-1とする)。
【0080】
2)システムにはブロックBlock-a-offlineを加え、データベースDを同期するリクエストが現れると、PBFTコンセンサスアルゴリズムにおいて設定された第2のオンラインノードにより応答処理を行う。当該リクエストが応答されると確認すると、他のリクエストは緩衝記憶領域に置かれ、後の処理を待っている。
【0081】
3)第2のオンラインノードはまず当該Block-a-offlineが最新のブロックであるか否かを判断し、最新のブロックでなければ、当該リクエストを直接廃棄し、緩衝記憶領域から次のリクエストを取って処理する。最新のブロックであれば、各オンラインノードをノードaのオフライン化を(ハートビートのタイムアウトメカニズムにより)確認するように要求し、三分の一を超えるノードが認証により間違わないと、PBFTコンセンサスアルゴリズムを用いて各ノードにおけるブロックを1回同期し、同期後にシステムにおける各ノードはBlock-a-offlineをデータベースDのブロックチェーンに加える。
【0082】
4)全てのノード(b0、b1、…、bn)はいずれも最新のブロックチェーンを更新した後、エントリ(a、Block-a-offline)をインデックスフィールドから削除し、この場合、ノードaも当該システムから排除され、ノードaのオフライン化のプロセスも終了する。
【0083】
図8は本開示の一実施例によるサービスディスカバリシステム800の概略図を示す。図8に示すように、システム800は第1のオンラインノード802と、第2のオンラインノード802と、複数の第3のオンラインノード803と、データ更新モジュール805と、を含む。
【0084】
第1のオンラインノード802は目標ノード801のオンライン化又はオフライン化を発見すると、前記目標ノードのブロックを作成することに適する。
【0085】
第2のオンラインノード803は第1のオンラインノード802から送信されたデータ同期リクエストに応答して、前記ブロックが最新のブロックであると確定すると、複数の第3のオンラインノード804にそれぞれ目標ノード801の権限を認証するように通知することに適する。
【0086】
データ更新モジュール805は複数の第3のオンラインノード804が目標ノード801の権限を認証した結果を統計し、認証通過率が所定の条件を満たせば、前記ブロックを現在の全てのオンラインノードがそれぞれメンテナンスするブロックチェーンに同期することに適する。
【0087】
いくつかの実施例において、システム800は各オンラインノードがそれぞれメンテナンスするデータベース(図示せず)をさらに含む。データベースは現在のブロックチェーン及びインデックスフィールドを記憶するために用いられ、ブロックチェーンにおけるブロックはオンライン化ブロックとオフライン化ブロックに分けられ、前記オンライン化ブロックはノードのオンライン化情報を記録するために用いられ、前記オフライン化ブロックはノードのオフライン化情報を記録するために用いられる。ブロックは、ブロックタイプ、ブロック番号、所属ノード番号、1つ前のブロックのハッシュ値、本ブロックのハッシュ値、及び前記目標ノードの認証情報のうち少なくとも1種の情報を含み、前記ブロックタイプはブロックのオンライン化とブロックのオフライン化とを含む。インデックスフィールドの各インデックスエントリは各オンラインノードからそのオンライン化ブロックまでのインデックスを含む。
【0088】
いくつかの実施例において、データ同期リクエストには前記ブロックのブロック番号が付けられており、ブロック番号は第1のオンラインノード802の現在のブロックチェーンのブロック数に1を加算するものであり、第2のオンラインノード803はブロックのブロック番号に基づいて前記ブロックが最新のブロックであるか否かを確定する。
【0089】
いくつかの実施例において、第1のオンラインノード802が目標ノード801のオンライン化状況を発見し且つ認証通過率が所定の条件を満たせば、データ更新モジュール805は現在の全てのオンラインノードのインデックスフィールドに前記目標ノードのインデックスエントリを追加し、更新されたインデックスフィールド及びブロックチェーンを前記目標ノードのデータベースに同期する。
【0090】
他の実施例において、第1のオンラインノード802が目標ノード801のオフライン化状況を発見し且つ認証通過率が所定の条件を満たせば、データ更新モジュール805は現在の全てのオンラインノードのインデックスフィールドにおいて前記目標ノード801のインデックスエントリを削除し、前記目標ノード801のデータベースに記憶されたブロックチェーン及びインデックスフィールドを削除する。
【0091】
いくつかの実施例において、第1のオンラインノード802は目標ノード801のデータ署名に基づいて目標ノード801から送信されたノードオンライン化リクエストを認証通過させる場合、第1のオンラインノード802が目標ノード801のオンライン化を発見すると考えられる。第1のオンラインノード802による前記目標ノード801のハートビート情報に対する受信がタイムアウトする場合、第1のオンラインノード802が目標ノード801のオフライン化を発見すると考えられる。
【0092】
いくつかの実施例において、目標ノード801のオンライン化状況に対して、複数の第3のオンラインノード804は予め記憶された目標ノード801の公開鍵に基づいて目標ノード801の権限を認証し、目標ノード801のオフライン化状況に対して、複数の第3のオンラインノード804は目標ノードとのハートビート接続に基づいて目標ノード801の権限を認証する。
【0093】
いくつかの実施例において、複数の第1のオンラインノード802が同時に複数の目標ノード801のオンライン化又はオフライン化を発見する場合、各第1のオンラインノード802はそれぞれ目標ノード801のブロックを作成し、それぞれ第2のオンラインノード803にデータ同期リクエストを送信し、また複数の第1のオンラインノード802が同時に複数の目標ノード801のオンライン化又はオフライン化を発見する場合、各第1のオンラインノード802はそれぞれ発見した目標ノード801のブロックを作成し、それぞれ第2のオンラインノード803にデータ同期リクエストを送信する。第2のオンラインノード803は各データ同期リクエストが到達する時間又は送信される時間に基づいて、複数のデータ同期リクエストを順に処理し、処理しないデータ同期リクエストを緩衝記憶領域に一時的に記憶し、ただし、第2のオンラインノード803は前記ブロックが最新のブロックではないと確定すれば、当該ブロックを廃棄し、緩衝記憶領域から次のデータ同期リクエストを取って処理する。
【0094】
いくつかの実施例において、第2のオンラインノード803は複数の第3のオンラインノード804のうちのいずれかのノードであり、この場合、コンセンサスノードは第1のオンラインノード802と複数の第3のオンラインノード804とを含む。他の実施例において、第2のオンラインノード803は複数の第3のオンラインノード804と異なるノードであり、この場合、コンセンサスノードは第1のオンラインノード802、第2のオンラインノード803及び複数の第3のオンラインノード804を含む。
【0095】
いくつかの実施例において、第2のオンラインノード803はブロックが最新のブロックであると確定すると、複数の第3のオンラインノードに目標ノードの権限を認証するように通知する。他の実施例において、第2のオンラインノード803はブロックが最新のブロックであると確定し、且つ目標ノードを認証通過させると、複数の第3のオンラインノードに目標ノードの権限を認証するように通知する。
【0096】
本開示によるサービスディスカバリ装置800は、その具体的な詳細が既に他の図面に基づく説明において詳しく開示されるため、ここで重複する説明は省略する。
【0097】
また、本開示の実施例は、プログラム又は命令を含み、前記プログラム又は命令がコンピュータで実行されると、上記したサービスディスカバリ方法を実現させるコンピュータ読み取り可能な記憶媒体をさらに提供する。
【0098】
また、本開示の実施例は、図9に示すように、メモリ901と、メモリに通信接続される1つ又は複数のプロセッサ902とを含むコンピューティングデバイス900をさらに提供する。メモリ901には1つ又は複数のプロセッサ902により実行可能な命令が記憶されており、1つ又は複数のプロセッサ902が上記したサービスディスカバリ方法を実現するように、命令が1つ又は複数のプロセッサ902により実行される。コンピューティングデバイス900は、1つ又は複数の通信プロトコル(LTE、Wi-Fiなど)を実施可能な通信インタフェース903をさらに含むことができる。
【0099】
本開示の技術的解決手段によれば、サービスのノードディスカバリにおけるデータの捏造及び改ざんの問題を解決し、オンライン化データの捏造には対応するノード秘密鍵で生成された署名が必要であり、オフライン化データの捏造には三分の一のノードに対してハートビートを確認することが必要である。ブロックチェーンの特性は各ブロックが改ざんされにくいことを保証し、データを改ざんしようとするには、三分の一を超えるノードが同時にブロックチェーンにおけるデータを修正する必要があり、ブロックチェーンのデータの正確性を保証する。
【0100】
当業者であれば、本開示の実施例は方法、システム、又はコンピュータプログラム製品として提供できることを理解されたい。したがって、本開示は完全なハードウェアの実施例、完全なソフトウェアの実施例、又はソフトウェアとハードウェアを組み合わせる態様の実施例の形態を用いることができる。また、本開示は、コンピュータに使用可能なプログラムコードを含むコンピュータに使用可能な1つ以上の記憶媒体(磁気ディスクメモリ、CD-ROM、光学メモリなどを含むがこれらに限定されない)で実施されるコンピュータプログラム製品の形態を用いることができる。
【0101】
本開示は、本開示の実施例による方法、機器(システム)及びコンピュータプログラム製品のフローチャート及び/又はブロック図を参照しながら説明される。コンピュータプログラム命令によりフローチャート及び/又はブロック図における各フロー及び/又はブロック、及びフローチャート及び/又はブロック図におけるフロー及び/又はブロックの組み合わせを実現できることを理解されたい。これらのコンピュータプログラム命令は、汎用コンピュータ、専用コンピュータ、組み込み処理機器又は他のプログラマブルデータ処理装置のプロセッサへ提供されて、これらの命令がコンピュータ又は他のプログラマブルデータ処理装置のプロセッサによって実行されるときフローチャートの1つ以上のフロー及び/又はブロック図の1つ以上のブロックにおいて指定された機能を実現するように、装置を製造することができる。
【0102】
これらのコンピュータプログラム命令は、コンピュータ又は他のプログラマブルデータ処理装置を特定の方式で動作させるコンピュータ読み取り可能なメモリに記憶することで、このコンピュータ読み取り可能なメモリに記憶される命令により、フローチャートの1つ以上のフロー及び/又はブロック図の1つ以上のブロックにおいて指定された機能を実現する命令装置を含む製品を製造することができる。
【0103】
これらのコンピュータプログラム命令は、コンピュータ、又は他のプログラマブル装置に一連の動作ステップを実行させて、コンピュータにより実施可能な処理を生成するように、コンピュータ、又は他のプログラマブルデータ処理装置にロードすることができ、それにより、コンピュータ、又は他のプログラマブル装置において実行される命令は、フローチャートの1つ以上のフロー及び/又はブロック図の1つ以上のブロックにおいて指定された機能を実現するためのステップを提供する。
【0104】
本開示において具体的な実施例を用いて本開示の原理及び実施形態を説明し、以上の実施例の説明は本開示の方法及びその核心思想への理解を助けるためのものに過ぎず、また、当業者であれば、本開示の思想に基づき、具体的な実施形態及び適用範囲のいずれにおいても変更を行ことが可能であり、以上をまとめると、本明細書の内容は本開示を限定するものとして理解されるべきではない。
図1
図2
図3
図4
図5
図6
図7
図8
図9