(57)【要約】一実施例に係るノードグループ管理装置は、分散データベースを共有するブロックチェーンネットワークを構成しそれぞれ秘密鍵および公開鍵を保有するノードのうち、一部のノードが属した第１グループを管理し、前記ブロックチェーンネットワークと通信する通信インターフェースと、それぞれの公開鍵を含む前記第１グループのノードに関する情報およびプロセッサの動作遂行に関する命令語を保存する一つ以上のメモリと、前記命令語を通じて動作するように前記一つ以上のメモリと連結されて前記第１グループのノードがトランザクションを生成する場合、前記トランザクションに前記秘密鍵の署名と共に、前記第１グループのノードに関する情報に基づいて前記トランザクションに追加的な署名をするグループ秘密鍵を生成して前記第１グループのノードが共通して保有するように前記グループ秘密鍵を前記第１グループに配布する動作をする一つ以上のプロセッサとを含む。【選択図】図１
2021533638.tif 000002
【特許請求の範囲】
【請求項１】
分散データベースを共有するブロックチェーンネットワークを構成するノードのうち、一部のノードが属した第１グループを管理するノードグループ管理装置であって、前記ブロックチェーンネットワークに参加するすべてのノードはそれぞれ秘密鍵および公開鍵を保有する、ノードグループ管理装置において、
前記ブロックチェーンネットワークと通信する通信インターフェースと、
前記第１グループのノードに関する情報およびプロセッサの動作遂行に関する命令語を保存する一つ以上のメモリであって、前記第１グループのノードに関する情報は前記第１グループのノードそれぞれの公開鍵を含む、メモリと、
前記命令語を通じて動作するように前記一つ以上のメモリと連結され、前記第１グループのノードがトランザクションを生成する場合、前記トランザクションに前記秘密鍵の署名と共に、前記第１グループのノードに関する情報に基づいて前記トランザクションに追加的な署名を遂行するようにするグループ秘密鍵を生成して、前記第１グループのノードが共通して保有するように前記グループ秘密鍵を前記第１グループに配布する動作を遂行する一つ以上のプロセッサを含む、ノードグループ管理装置。
【請求項２】
前記一つ以上のプロセッサは、
前記第１グループのノードのうち、一部のノードの公開鍵および時間情報に基づいて前記グループ秘密鍵を生成する、請求項１に記載のノードグループ管理装置。
【請求項３】
前記一つ以上のプロセッサは、
前記一部のノードの公開鍵がそれぞれ一連のビット列になるように所定のハッシュ生成アルゴリズムに基づいて変換し、前記それぞれの一連のビット列に所定のビット演算（ｂｉｔｗｉｓｅ  ｏｐｅｒａｔｉｏｎ）を遂行して一つの合成されたビット列に変換し、前記時間情報をビット列で構成後に前記合成されたビット列と連結して、前記秘密鍵と同一のビット数を有する前記グループ秘密鍵を生成する、請求項２に記載のノードグループ管理装置。
【請求項４】
前記一つ以上のプロセッサは、
所定の周期ごとに新しい時間情報に基づいて前記グループ秘密鍵を新しく生成して前記第１グループに配布し、
前記所定の周期は前記ブロックチェーンネットワーク上でデータがすべて配布される通信ディレイ時間より長い、請求項３に記載のノードグループ管理装置。
【請求項５】
前記一つ以上のプロセッサは、
前記第１グループに変更が発生する場合、前記変更が発生した第１グループのノードのうち一部の公開鍵に対する情報に基づいて前記グループ秘密鍵を新しく生成して前記グループに配布する、請求項３に記載のノードグループ管理装置。
【請求項６】
前記一つ以上のプロセッサは、
所定の周期で前記グループ秘密鍵を新しく生成して前記第１グループのノードに配布し、
前記第１グループのノードは、
前記配布されたグループ秘密鍵を受信した視覚情報とともに複数のグループ秘密鍵を保存し、前記トランザクションを生成する場合、前記複数のグループ秘密鍵のうち現在の周期から既設定された周期以前に生成されたグループ秘密鍵を利用して署名する、請求項１に記載のノードグループ管理装置。
【請求項７】
前記トランザクションは、
メッセージ、前記メッセージに対して前記秘密鍵を通じての第１署名、前記秘密鍵と対応する公開鍵、前記メッセージに対して前記グループ秘密鍵を通じての第２署名および前記グループ秘密鍵と対応するグループ公開鍵を含む、請求項６に記載のノードグループ管理装置。
【請求項８】
前記一つ以上のプロセッサは、
所定の周期で生成された前記グループ秘密鍵と対応するグループ公開鍵を生成して前記ブロックチェーンネットワークの他のグループである第２グループに配布し、
前記第２グループのノードは、
前記配布されたグループ公開鍵を受信した視覚情報とともに複数のグループ公開鍵を保存し、前記第１グループのノードが生成したトランザクションを検証する場合、前記複数のグループ公開鍵をすべて使って前記第１グループのノードが生成したトランザクションを検証する、請求項６に記載のノードグループ管理装置。
【請求項９】
分散データベースを共有するブロックチェーンネットワークを構成するノードを遂行するコンピューティング装置であって、前記ブロックチェーンネットワークに参加するすべてのノードはそれぞれ秘密鍵および公開鍵を保有する、コンピューティング装置において、
前記ブロックチェーンネットワークと通信する通信インターフェースと、
前記一つのノードが属した第１グループを管理する請求項１に記載されたノードグループ装置に関する情報、前記ノードグループ装置が時間の流れに沿って配布した複数のグループ秘密鍵、およびプロセッサの動作遂行に関する命令語を保存する一つ以上のメモリであって、前記複数のグループ秘密鍵は時間情報を含む、メモリと、
前記命令語を通じて動作するように前記一つ以上のメモリと連結され、トランザクションを生成する場合、前記時間情報を参照して、前記複数のグループ秘密鍵のうち最新で保存されたグループ秘密鍵から既設定された周期以前に生成されたグループ秘密鍵を利用した署名を前記トランザクションに含ませる動作を遂行する一つ以上のプロセッサとを含む、コンピューティング装置。
【請求項１０】
分散データベースを共有するブロックチェーンネットワークを構成するノードおよびノードグループ管理装置によって遂行されるノードグループ管理方法であって、前記ブロックチェーンネットワークを構成するすべてのノードはそれぞれの秘密鍵および公開鍵を保有する、ノードグループ管理方法において、
前記ノードグループ管理装置に、第１グループのノードに関する情報を前記第１グループのノードから受信させる段階であって、前記第１グループは前記装置が管理するノードが含まれたグループであり、前記第１グループのノードに関する情報は前記第１グループのノードそれぞれの公開鍵を含む、段階と、
前記ノードグループ管理装置に、前記第１グループのノードがトランザクションを生成する場合、前記第１グループのノードに関する情報に基づいて前記秘密鍵とともに追加的な署名として使われるグループ秘密鍵を生成させる段階と、
前記ノードグループ管理装置に、前記第１グループのノードが共通して保有するように前記グループ秘密鍵を前記第１グループのノードに配布させる段階とを含む、ノードグループ管理方法。
【請求項１１】
前記グループ秘密鍵を生成させる段階は、
前記一部のノードの公開鍵がそれぞれ一連のビット列になるように所定のハッシュ生成アルゴリズムに基づいて変換し、前記それぞれの一連のビット列に所定のビット演算（ｂｉｔｗｉｓｅ  ｏｐｅｒａｔｉｏｎ）を遂行して一つの合成されたビット列に変換し、前記時間情報をビット列で構成後に前記合成されたビット列と連結して、前記秘密鍵と同一のビット数を有する前記グループ秘密鍵を生成させる段階を含む、請求項１０に記載のノードグループ管理方法。
【請求項１２】
前記配布させる段階は、
前記ノードグループ管理装置に、所定の周期で前記グループ秘密鍵を新しく生成して前記第１グループのノードに配布させる段階を含み、
前記方法は、
前記第１グループのノードに、前記配布されたグループ秘密鍵を受信した視覚情報とともに複数のグループ秘密鍵を保存し、前記トランザクションを生成する場合、前記複数のグループ秘密鍵のうち現在の周期から既設定された周期以前に生成されたグループ秘密鍵を利用して署名させる段階を含む、請求項１０に記載のノードグループ管理方法。
【請求項１３】
前記配布させる段階は、
前記所定の周期で生成された前記グループ秘密鍵と対応するグループ公開鍵を生成して前記ブロックチェーンネットワークの他のグループである第２グループに配布させる段階を含み、
前記方法は、
前記第２グループのノードに、前記配布されたグループ公開鍵を受信した視覚情報とともに複数のグループ公開鍵を保存させる段階と、
前記第２グループのノードに、前記第１グループのノードが生成したトランザクションを検証する場合、前記複数のグループ公開鍵をすべて使って前記第１グループのノードが生成したトランザクションを検証させる段階をさらに含む、請求項１２に記載のノードグループ管理方法。
【請求項１４】
請求項１０〜請求項１３のいずれか一項に記載された方法をプロセッサが遂行するようにする命令語を含む、コンピュータプログラムが記録されたコンピュータ読み取り可能記録媒体。
【請求項１５】
請求項１０〜請求項１３のいずれか一項に記載された方法をプロセッサが遂行するようにする、コンピュータ読み取り可能記録媒体に保存されたコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本文書の実施例は、ブロックチェーンネットワーク上でグループ鍵に基づいて二重に署名と検証が要求されるトランザクション構造を構成してセキュリティ性を強化させる技術に関する。
【背景技術】
【０００２】
ブロックチェーンシステムは、情報が入っているブロックがチェーンの形態でつながっているブロックチェーンを分散型データベースとして運営することによって、ブロックチェーンネットワークを構成するノードが共通した情報を共有できるようにする。このようなブロックチェーンに情報を記録したり変更を加えるためにノードはネットワーク上にトランザクションを発生させ、他のノードによって該当トランザクションが正しいものであるかが検証される過程を経ることになる。このようなトランザクションの発生および検証は、それぞれのノードが保有する秘密鍵（ｐｒｉｖａｔｅ  ｋｅｙ）および公開鍵（ｐｕｂｌｉｃ  ｋｅｙ）によって遂行される。
【０００３】
各ノードは自身の公開鍵のみをブロックチェーンネットワーク上に露出させ、伝達しようとする情報を自身の秘密鍵で署名して伝達しようとする情報と署名を束ねたトランザクションを他のノードに伝播する。これを受信した他のノードは、公開鍵を通じて署名を復号化して該当トランザクションが正しい者によって署名されたものであるかをチェックしてトランザクションの検証過程を経る。
【０００４】
公開鍵は秘密鍵に基づいて生成されるが、非可逆関数を通じて生成されるため公開鍵が知られてもそれから秘密鍵を復元することは難しい。しかし、秘密鍵自体がハッキングされると、ハッキングした者が該当アカウントで望むトランザクションをすべて発生させることができるという致命的な問題がある。このため、ハッキングした者がアカウントに保有されたすべての暗号通貨を他のところに振り替える悪意のトランザクションを発生させてブロックに記録させるのであれば、ブロックチェーン上ではこれを再び元に戻すことができないため非常に大きな被害につながることになる。
【０００５】
しかし、秘密鍵は一度定められると変更ができないため、ただ一度の流出だけでも直ちにアカウントを取り換えなければならず、流出したという事実を知る前にすでに元に戻せない深刻な被害が発生する場合が大多数である。
【０００６】
このように、秘密鍵一つのみで保護されるブロックチェーンアカウントは秘密鍵自体のハッキングという致命的な弱点があるため、アカウントをより効果的に保護できる新しい代案が必要である。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本文書の実施例は、複数のノードからなるグループの情報に基づいて、グループ内のノード同士でのみ共有されるグループ秘密鍵を生成する技術を通じて前述した問題を解決しようとする。この時、生成されるグループ秘密鍵はグループ内部のノード情報を管理する信頼性が確保されたノードによって生成され、グループ秘密鍵によってセキュリティ性の向上という同一の利益を共有するグループ内部のノードの立場ではグループ秘密鍵を流出させる実益がなく、グループ外部のノードの立場では他のグループの情報を分からないためグループ秘密鍵を類推できないように設計され得る。
【０００８】
また、本文書の実施例は、たとえグループ秘密鍵が流出しても、グループ秘密鍵が周期的に更新され、また、ノードグループ内に変更が発生した場合に更新されるようにする技術を通じて、ハッキング被害が発生することを防止することができる。これに加え、ハッキングした者が悪意のトランザクションの発生を試みる場合、残りの一つの鍵を通じての署名が追加的に要求されるため、アカウント所有者がハッキングを認知した後に代案を準備する時間を確保させることができる。
【０００９】
このように、本文書の実施例は、トランザクション署名と検証が二重に要求される構造を構成してブロックチェーンネットワークのセキュリティ性を向上させようとする。
【課題を解決するための手段】
【００１０】
一実施例に係るノードグループ管理装置は、分散データベースを共有するブロックチェーンネットワークを構成するノードのうち、一部のノードが属した第１グループを管理し（前記ブロックチェーンネットワークに参加するすべてのノードはそれぞれ秘密鍵および公開鍵を保有する）、前記ブロックチェーンネットワークと通信する通信インターフェースと、前記第１グループのノードに関する情報およびプロセッサの動作遂行に関する命令語を保存する一つ以上のメモリ（前記第１グループのノードに関する情報は前記第１グループのノードそれぞれの公開鍵を含む）と、前記命令語を通じて動作するように前記一つ以上のメモリと連結され、前記第１グループのノードがトランザクションを生成する場合、前記トランザクションに前記秘密鍵の署名と共に、前記第１グループのノードに関する情報に基づいて前記トランザクションに追加的な署名を遂行するようにするグループ秘密鍵を生成して、前記第１グループのノードが共通して保有するように前記グループ秘密鍵を前記第１グループに配布する動作を遂行する一つ以上のプロセッサとを含むことができる。
【００１１】
一実施例に係るコンピューティング装置は、分散データベースを共有するブロックチェーンネットワークを構成するノードを遂行し（前記ブロックチェーンネットワークに参加するすべてのノードはそれぞれ秘密鍵および公開鍵を保有する）、前記ブロックチェーンネットワークと通信する通信インターフェースと、前記一つのノードが属した第１グループを管理する前記ノードグループ管理装置に関する情報、前記ノードグループ管理装置が時間の流れに沿って配布した複数のグループ秘密鍵、およびプロセッサの動作遂行に関する命令語を保存する一つ以上のメモリ（前記複数のグループ秘密鍵は時間情報を含む）と、前記命令語を通じて動作するように前記一つ以上のメモリと連結され、トランザクションを生成する場合、前記時間情報を参照して、前記複数のグループ秘密鍵のうち最新で保存されたグループ秘密鍵から既設定された周期以前に生成されたグループ秘密鍵を利用した署名を前記トランザクションに含ませる動作を遂行する一つ以上のプロセッサとを含むことができる。
【００１２】
一実施例に係るノードグループ管理方法は、分散データベースを共有するブロックチェーンネットワークを構成するノードおよびノードグループ管理装置によって遂行させ（前記ブロックチェーンネットワークを構成するすべてのノードはそれぞれの秘密鍵および公開鍵を保有する）、前記ノードグループ管理装置に第１グループのノードに関する情報を前記第１グループのノードから受信させる段階（前記第１グループは前記装置が管理するノードが含まれたグループであり、前記第１グループのノードに関する情報は前記第１グループのノードそれぞれの公開鍵を含む）と、前記ノードグループ管理装置に前記第１グループのノードがトランザクションを生成する場合、前記第１グループのノードに関する情報に基づいて前記秘密鍵とともに追加的な署名として使われるグループ秘密鍵を生成させる段階と、前記ノードグループ管理装置に、前記第１グループのノードが共通して保有するように前記グループ秘密鍵を前記第１グループのノードに配布させる段階とを含むことができる。
【発明の効果】
【００１３】
前述した実施例によると、トランザクション署名に秘密鍵とグループ秘密鍵を共に使うため、秘密鍵がハッキングされたとしてもグループ秘密鍵の署名を要請する構成を通じてハッキングによる被害を防止することができる。
【００１４】
また、信頼性が確保されたゲートウェイを通じてグループ秘密鍵とグループ公開鍵を生成および配布してグループ鍵基盤のトランザクション署名に対する信頼度を高めることができる。
【００１５】
これに加えて、グループ秘密鍵の生成を周期的に遂行し、またはノードグループに変更が発生する場合ごとに遂行することによって、グループ秘密鍵の露出可能性を最小化することができる。
【００１６】
併せて、ノードがトランザクションを生成する場合、ブロックチェーンネットワーク上のすべてに配布されたグループ秘密鍵を通じての署名を遂行することによって、通信ディレイによるトランザクション検証エラーを防止することができる。
【００１７】
この他に、本文書を通じて直接的または間接的に把握される多様な効果が提供され得る。
【図面の簡単な説明】
【００１８】
【図１】一実施例に係る分散ネットワークシステムのブロック図である。
【図２】一実施例に係るブロックチェーン構造を説明するための図面である。
【図３】一実施例に係る分散ネットワークシステムに含まれるノードの種類を説明するための図面である。
【図４】一実施例に係るフルノードに対するブロック図を示す。
【図５】一実施例に係るライトノードに対するブロック図を示す。
【図６】一実施例に係るサーバーに対するブロック図を示す。
【図７】一実施例に係るゲートウェイの登録過程を説明するためのフローチャートである。
【図８】一実施例に係るゲートウェイの管理動作を説明するためのフローチャートである。
【図９Ａ】一実施例でノードがグループに加入する動作を説明するためのフローチャートである。
【図９Ｂ】一実施例でノードがグループに加入する動作を説明するためのフローチャートである。
【図９Ｃ】一実施例でノードがグループに加入する動作を説明するためのフローチャートである。
【図１０】一実施例に係るサーバー間のゲートウェイ目録を同期化する動作のフローチャートである。
【図１１】一実施例によりゲートウェイがグループ秘密鍵を生成する動作の例示図である。
【図１２】一実施例でゲートウェイがグループ秘密鍵およびグループ公開鍵を生成および配布する動作を説明するためのフローチャートである。
【図１３】一実施例でノードがグループ秘密鍵の選択によって検証が可能な状況と検証が不可能な状況を説明するためのフローチャートである。
【図１４】一実施例により各グループに配布されたグループ公開鍵の状態を示す例示図である。
【図１５】一実施例に係るグループ秘密鍵基盤のトランザクション二重署名およびグループ公開鍵基盤のトランザクション二重検証の概念図である。
【００１９】
図面の説明と関連して、同一または類似する構成要素に対しては同一または類似する参照符号が使われ得る。
【発明を実施するための形態】
【００２０】
以下、多様な実施例が添付された図面を参照して記載される。しかし、これは特定の実施形態に対して限定しようとするものではなく、実施例の多様な変更（ｍｏｄｉｆｉｃａｔｉｏｎ）、均等物（ｅｑｕｉｖａｌｅｎｔ）、および／または代替物（ａｌｔｅｒｎａｔｉｖｅ）を含むものと理解されるべきである。
【００２１】
図１は、一実施例に係る分散ネットワークシステム１００のブロック図である。
【００２２】
図１を参照すると、一実施例に係る分散ネットワークシステム１００は、複数のコンピューティング装置１１０、１２０、１３０、１４０を通じて具現され得る。図１で４個のコンピューティング装置１１０、１２０、１３０、１４０が図示されたが、これに限定されず、分散ネットワークシステム１００は図示されていない任意の数のコンピューティング装置をさらに含むことができる。
【００２３】
ネットワーク１０５は有線ネットワークおよび／または無線ネットワークを含むことができる。例えば、ネットワーク１０５はＬＡＮ（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）、ＷＡＮ（ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）、仮想ネットワーク、遠隔通信ネットワークのうち少なくとも一つであり得る。
【００２４】
分散ネットワークシステム１００は、コンピューティング装置１１０、１２０、１３０、１４０がネットワーク１０５を通じて動作可能なように、互いに連結されて同一の情報を有する分散データベースを共有するピアツーピアネットワークであるブロックチェーンネットワークを構成することができる。
【００２５】
コンピューティング装置１１０、１２０、１３０、１４０は，分散データベースの状態を変化させるために遂行する作業の単位であるトランザクション（ｔｒａｎｓａｃｔｉｏｎ）を分散ネットワークシステム１００上に発生させることができる。コンピューティング装置１１０、１２０、１３０、１４０は分散ネットワークシステム１００で発生するトランザクションを検証および実行し、トランザクションの記録をブロックチェーン（ｂｌｏｃｋｃｈａｉｎ）の構造形態で保存して分散データベースを管理することができる。
【００２６】
それぞれのコンピューティング装置１１０、１２０、１３０、１４０はトランザクションを発生させ、トランザクションの完全性を検証するためにブロックチェーンアカウント情報を有することができる。ブロックチェーンアカウント情報は秘密鍵（ｐｒｉｖａｔｅ  ｋｅｙ）と公開鍵（ｐｕｂｌｉｃ  ｋｅｙ）（以下、通称の場合「個人鍵」と指称する）を含むことができる。秘密鍵はトランザクションが正しい者によって発生したことを検証するようにするためのデジタル署名手段であって、トランザクションに含まれるメッセージと秘密鍵をハッシングして生成することができる。
【００２７】
公開鍵は使用者のアカウントアドレス（ａｃｃｏｕｎｔ  ａｄｄｒｅｓｓ）として機能したり、トランザクションに含まれたデジタル署名が正しい使用者の秘密鍵によって生成されたことを検証するための手段として機能することができる。
【００２８】
本文書の実施例によると、コンピューティング装置１１０、１２０、１３０、１４０は、個人鍵とともに、二重にトランザクション署名および検証の役割に使われるグループ秘密鍵（ｇｒｏｕｐ  ｐｒｉｖａｔｅ  ｋｅｙ）およびグループ公開鍵（ｇｒｏｕｐ  ｐｕｂｌｉｃ  ｋｅｙ）（以下、通称の場合「グループ鍵」と指称する）を保有することができる。グループ鍵に対するより詳しい説明は、図１１〜図１５とともに後述することにする。
【００２９】
コンピューティング装置１１０、１２０、１３０、１４０はトランザクションが発生すると、発生したトランザクションの完全性を検証し、分散ネットワークシステム１００で約束された合意アルゴリズム（例：ＰＯＷ、ＰＯＳ、ＤＰＯＳなど）に基づいて既生成されたブロックに続く新しいブロックを生成し、新しく生成されたブロックは他のコンピューティング装置１１０、１２０、１３０、１４０に伝播しながらトランザクションが実行され得る。ブロックは複数のトランザクション情報を含むことができる。
【００３０】
図２は、一実施例に係るブロックチェーン構造を説明するための図面である。
【００３１】
図２の（１）を参照すると、ブロックチェーンはブロック単位で保存されたデータが線形的に連結され得る。各ブロックは以前ブロック（例えば、「ブロック２」の以前ブロックは「ブロック１」）を指すことによって連結され得る。ただし、ブロックの連結形態はこのような例示に限定されるものではない。
【００３２】
図２の（２）を参照すると、ブロック２１０はヘッダ（ｈｅａｄｅｒ）２２０とボディ（ｂｏｄｙ）２３０で構成され得る。
【００３３】
ヘッダ２２０に保存されたデータは該当ブロック２１０に対する要約情報として理解され得る。ヘッダ２２０はソフトウェアのバージョン情報であるソフトウェアのバージョン、以前ブロックのヘッダのハッシュ値として以前ブロックを指すハッシュポインタの役割をする以前ブロックハッシュ、トランザクションを要約した情報であるマークルルート（Ｍｅｒｋｌｅ  Ｒｏｏｔ）、ブロック２１０が生成された日付および時間であるタイムスタンプを含むことができる。ブロックハッシュ値はブロック２１０のヘッダ２２０に保存されたデータに基づいて計算され得る。次のブロックは以前ブロックのブロックハッシュ値を保存することによって以前ブロックを指すことができる。これに伴い、分散ネットワークシステム１００はブロックチェーンネットワークシステムと呼称され得る。
【００３４】
ボディ２３０はブロック２１０内に保存および保存の対象となるデータであるトランザクションを含むトランザクション目録およびブロック２１０に含まれたトランザクションの総数であるトランザクションの個数を含むことができる。例えば、トランザクションは取引内訳であり得るが、例示に過ぎず、これに限定されない。
【００３５】
コンピューティング装置１１０はプロセッサ１１１およびメモリ１１２を含むことができる。例えば、メモリ１１２はＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、メモリバッファ、ハードドライブ、データベース、ＥＰＲＯＭ（ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（ｅｌｅｃｔｒｉｃａｌｌｙ  ｅｒａｓａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、ＲＯＭ（ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）などを含むことができる。
【００３６】
プロセッサ１１１は汎用プロセッサ、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）などであり得る。
【００３７】
コンピューティング装置１１０、１２０、１３０、１４０の一つ以上の部分はハードウェア基盤モジュール（例えば、ＤＳＰ（ｄｉｇｉｔａｌ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｏｒ）、ＦＰＧＡ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ））および／またはソフトウェア基盤モジュール（例えば、メモリに保存されおよび／またはプロセッサで実行されるコンピュータコードのモジュール）を含むことができる。一部の実施例で、コンピューティング装置１１０、１２０、１３０、１４０と関連した一つ以上の機能（例えば、プロセッサ１１１、１２１、１３１、１４１と関連した機能）は一つ以上のモジュールに含まれ得る。
【００３８】
コンピューティング装置１１０のメモリ１１２は分散データベース１１４を含むことができる。コンピューティング装置１１０、１２０、１３０、１４０はネットワーク１０５を通じて分散データベース１１４、１２４、１３４、１４４を具現することができる。分散データベース１１４、１２４、１３４、１４４は複数個のコンピューティング装置１１０、１２０、１３０、１４０が同一の情報を共有する公共元帳（ｐｕｂｌｉｃ  ｌｅｄｇｅｒ）として理解され得る。プロセッサ１１１は他のコンピューティング装置からトランザクション（ｔｒａｎｓａｃｔｉｏｎ）（例：分散データベースのデータを変更させるためのメッセージ）と関連した同期化データなどを受信することに応答して、分散データベース１１４をアップデートするためにモジュール、機能および／またはプロセスを実行するように構成され得る。
【００３９】
図３は、一実施例に係る分散ネットワークシステム１００に含まれるノードの種類を説明するための図面である。
【００４０】
図３を参照すると、分散ネットワークシステム１００に含まれるコンピューティング装置（例：図１のコンピューティング装置１１０、１２０、１３０、１４０）それぞれはノード（ｎｏｄｅ）として理解され得る。分散ネットワークシステム１００に含まれるノードはフルノード（ｆｕｌｌ  ｎｏｄｅ：ＦＮ）３００とライトノード（ｌｉｇｈｔ  ｎｏｄｅ：ＬＮ）４００に区分され得る。
【００４１】
フルノード３００は、ブロックチェーン２００に含まれるすべての情報（例：ヘッダ２２０情報およびボディ２３０情報）をリアルタイムに同期化して維持するノードである。ライトノード４００はトランザクション機能（例：財布機能）を遂行できるノードである。ライトノード４００はトランザクションを発生させ、発生したトランザクションをネットワーク１０５を通じて隣のノードに伝播することができる。一部の実施例で、ライトノード４００はブロックチェーン２００に含まれる一部の情報（例：ヘッダ２２０情報）のみを有し、生成されたブロックに対する検証を遂行してもよい。
【００４２】
以下、フルノード３００とライトノード４００は分散ネットワークシステム１００に含まれるノード６００と呼称され得る。
【００４３】
分散ネットワークシステム１００に含まれたノードは位置情報に基づいて互いに異なるまたは同一グループに所属することができる。位置的に近いところに位置したノードは同一グループに分類され得る。
【００４４】
グループは分散ネットワークシステム１００と通信する少なくとも一つ以上のサーバー（図６の５００）によって決定され得る。以下、一つのサーバー５００として説明するが、複数のサーバー５００がグループの分類を遂行できる。サーバー５００はノードの位置情報に基づいて隣接したノードを同一グループに分類することができる。これに伴い、相互間に通信を頻繁に遂行する隣のノードが一つのグループに属することになり、通信の効率性が増加し得る。サーバー５００はサードパーティーによって運営され得る。
【００４５】
フルノード３００の少なくとも一部はゲートウェイ（ｇａｔｅｗａｙまたはＧＷ、本文書の一部において「ノードグループ管理装置」とも指称される）３０１として動作することができる。ゲートウェイ３０１はブロック２１０を生成することができ、一つのグループを管理することができる。ゲートウェイ３０１はブロック２１０を生成することによってブロック補償を受け取り、受け取ったブロック補償を自身が属したグループのノードに分配することができる。互いに異なるゲートウェイ３０１は互いに異なるグループを管理することができる。ゲートウェイ３０１はグループ秘密鍵およびグループ公開鍵を生成することができ、同一グループ内のノードにグループ秘密鍵を共有し、グループの外部にグループ公開鍵を配布することができる。
【００４６】
図３において、グループ１は４個のフルノード３００と６個のライトノード４００を含んでいる。４個のフルノード３００のうち１個のフルノード３００がゲートウェイ３０１として動作することができる。ゲートウェイ３０１はグループ１に所属したノードに対する情報を有することができる。ゲートウェイ３０１はブロック補償を受け取ると、グループ１に所属したノードにブロック補償を分配することができる。分散ネットワークシステム１００は一つ以上のグループを有することができ、それぞれのグループは少なくとも一つのゲートウェイ３０１を有することができる。
【００４７】
グループ１をはじめとする各グループのグループ構成および各ノードの個数は例示的なものに過ぎず、ゲートウェイ３０１として動作可能な一つのフルノードを除いてフルノード３００の個数およびライトノード４００の個数は任意に定められ得る。一実施例により、一つのグループに含まれるノードの総数は最大５１２個であり得るが、例示に過ぎず、これに限定されない。
【００４８】
図４は、一実施例に係るフルノード３００に対するブロック図を示す。
【００４９】
図４を参照すると、フルノード３００は通信インターフェース３０５、プロセッサ３１０、メモリ３２０を含むことができる。フルノード３００は通信インターフェース３０５を通じて分散ネットワークシステム１００に含まれるノードおよびサーバー５００と通信を遂行できる。
【００５０】
プロセッサ３１０はトランザクション生成モジュール３１２およびトランザクション検証モジュール３１４を含むことができる。
【００５１】
また、フルノード３００がゲートウェイ３０１として動作する場合、プロセッサ３１０はグループ秘密鍵生成モジュール３１６およびグループ公開鍵生成モジュール３１８をさらに含むことができる。
【００５２】
プロセッサ３１０はメモリ３２０に保存された命令語を実行して、トランザクション生成モジュール３１２、トランザクション検証モジュール３１４、グループ秘密鍵生成モジュール３１６およびグループ公開鍵生成モジュール３１８のうち少なくとも一つを駆動させることができる。トランザクション生成モジュール３１２、トランザクション検証モジュール３１４、グループ秘密鍵生成モジュール３１６およびグループ公開鍵生成モジュール３１８それぞれは、財布プログラム３２８に含まれた命令語が実行されて駆動され得るがこれに限定されない。
【００５３】
トランザクション生成モジュール３１２、トランザクション検証モジュール３１４、グループ秘密鍵生成モジュール３１６およびグループ公開鍵生成モジュール３１８それぞれは、ハードウェア、ソフトウェアまたはこれらの組み合わせで具現されてもよい。トランザクション生成モジュール３１２、トランザクション検証モジュール３１４、グループ秘密鍵生成モジュール３１６およびグループ公開鍵生成モジュール３１８それぞれによって遂行される動作は、プロセッサ３１０により遂行される動作として理解され得る。
【００５４】
トランザクション生成モジュール３１２は、ブロック内に保存および保存の対象となるデータ（例：取引内訳）をブロックに含ませることを要請するトランザクションを生成することができる。トランザクション生成モジュール３１２は秘密鍵を利用した電子署名とグループ鍵を利用したデジタル署名をトランザクションに含ませることができる。
【００５５】
トランザクション検証モジュール３１４は、自ら生成したトランザクションまたは他のノードから受信したトランザクションを個人公開鍵およびグループ公開鍵に基づいて検証することができる。
【００５６】
秘密鍵およびグループ鍵を利用したデジタル署名とトランザクションの検証は図１４および図１５で詳しく後述する。
【００５７】
グループ秘密鍵生成モジュール３１６は、ゲートウェイ３０１のフルノード３００が管理するグループ内に含まれたノードの情報に基づいてグループ秘密鍵を生成することができる。グループ秘密鍵は同一グループ内部のノード間でのみ共有される情報であって、秘密鍵とともにトランザクション署名に利用され得る。
【００５８】
グループ公開鍵生成モジュール３１８は生成されたグループ秘密鍵に対する演算を通じてグループ公開鍵を生成することができる。グループ公開鍵はグループ外部のブロックチェーンネットワークに配布される情報であって、トランザクション署名の検証に利用され得る。
【００５９】
メモリ３２０はブロックチェーン情報３２２（例：図２のブロックチェーン２００と関連した情報）、サーバー目録３２４、グループ加入内訳３２６、財布プログラム３２８およびグループ鍵目録３２９を含むことができる。
【００６０】
ブロックチェーン情報３２２は図２のブロックチェーン２００に含まれる情報を含むことができる。本文書に開示された多様な実施例に係るフルノード３００はウインドウズ（登録商標）やリナックス（登録商標）環境のコンピューティング装置であり得る。フルノード３００はブロックチェーン２００と関連した情報を保存しリアルタイムに同期化できるハードウェア資源を有することができる。
【００６１】
サーバー目録３２４は分散ネットワークシステム１００のノードに対してグルーピングを遂行するサーバーと関連した情報を含むことができる。例えば、サーバー目録３２４はサーバー５００の固有ＩＤとサーバー５００位置情報（ＩＰ、緯度、経度）を含むことができる。フルノード３００はグループに加入したりゲートウェイ３０１となるためにサーバー目録３２４に含まれる少なくとも一つのサーバー５００に要請を送ることができる。
【００６２】
グループ加入内訳３２６はフルノード３００が以前にグループに加入した履歴がある場合、そのグループと関連した情報を含むことができる。例えばグループ加入内訳３２６は加入したグループのゲートウェイ３０１のアカウント情報を含むことができる。
【００６３】
財布プログラム３２８はトランザクションの生成および検証のための命令語と関連データを含むことができる。一実施例により、フルノード３００がゲートウェイ３０１として動作する場合、財布プログラム３２８はグループ秘密鍵とグループ公開鍵の生成のための命令語と関連データを含むことができる。フルノード３００のアカウントは財布プログラム３２８のノードアドレスとなり得る。財布プログラム３２８はウインドウズ（登録商標）やリナックス（登録商標）の環境で動作するプログラムであり得る。
【００６４】
グループ鍵目録３２９はフルノード３００が属したグループのグループ秘密鍵およびフルノード３００が属したグループをはじめとする外部グループで生成されたグループ公開鍵を保存することができる。フルノード３００はグループ秘密鍵およびグループ公開鍵が生成されたグループに関する情報、およびグループ秘密鍵が生成された順序情報とグループ公開鍵が生成された順序情報を共に保存することができる。これに対するより詳細な説明は図１１〜図１５とともに後述する。
【００６５】
フルノード３００がゲートウェイ３０１として動作する場合、フルノード３００はゲートウェイ目録３３０とノードプール３３５をさらに含むことができる。ゲートウェイ目録３３０は現在ゲートウェイ３０１として動作してグループを運営しているゲートウェイ３０１−１、３０１−２、〜３０１−ｎと関連した情報を含むことができる。ゲートウェイ目録３３０はサーバー５００にも保管され得、サーバー５００の動作不能のような例外状況でバックアップの役割をすることができる。
【００６６】
多様な実施例において、一つのフルノード３００が複数個のゲートウェイとして動作することができる。この場合、前記複数個のゲートウェイはＩＰは同一であるものの、異なるポート番号を有することができる。
【００６７】
ノードプール３３５はゲートウェイ３０１が運営するグループに所属したノード（コンピューティング装置）と関連した情報を含むことができる。ノードプール３３５は自身のグループに属するノード６００の目録を含むことができる。例えば、ノードプール３３５は自身のグループに属するノード６００の公開鍵および各ノード６００を識別するインデックス情報を含むことができ、インデックス情報と公開鍵はマッピングされて保存され得る。
【００６８】
図５は、一実施例に係るライトノード４００に対するブロック図を示す。図５を参照すると、ライトノード４００は通信インターフェース４０５、プロセッサ４１０、メモリ４２０を含むことができる。ライトノード４００は通信インターフェース４０５を通じて分散ネットワークシステム１００に含まれるノードおよびサーバー５００と通信を遂行できる。
【００６９】
プロセッサ５１０はトランザクション生成モジュール４１２を含むことができる。例えば、プロセッサ５１０はメモリ５２０に保存された命令語を実行してトランザクション生成モジュール４１２を駆動させることができる。トランザクション生成モジュール４１２は財布プログラム４２２に含まれた命令語が実行されて駆動され得るが、これに限定されない。
【００７０】
トランザクション生成モジュール４１２はハードウェア、ソフトウェアまたはこれらの組み合わせで具現されてもよい。トランザクション生成モジュール４１２により遂行される動作はプロセッサ４１０により遂行される動作として理解され得る。
【００７１】
トランザクション生成モジュール４１２はブロック内に保存および保存の対象となるデータ（例：取引内訳）をブロックに含ませることを要請するトランザクションを生成することができる。トランザクション生成モジュール４１２は秘密鍵を利用した電子署名とグループ鍵を利用した電子署名をトランザクションに含ませることができる。トランザクション生成モジュール４１２は生成されたグループ鍵の順序情報を考慮してトランザクション署名に使われるグループ秘密鍵を選択することができる。これに対する説明は図１４および図１５とともに後述する。
【００７２】
ライトノード４００はメモリ４２０に財布プログラム４２２、サーバー目録４２４、およびグループ加入内訳４２６を保存することができる。
【００７３】
財布プログラム４２２はトランザクションの生成および検証のための命令語と関連データを含むことができる。財布プログラム４２２はアンドロイド（登録商標）やＩＯＳ（登録商標）のようなモバイル環境で動作するプログラムであり得る。サーバー目録４２４とグループ加入内訳４２６はフルノード３００のサーバー目録３２４およびグループ加入内訳３２６と実質的に同一である。
【００７４】
グループ鍵目録４２８はライトノード４００が属したグループのグループ秘密鍵を保存することができる。ここで、グループ鍵目録４２８はフルノード３００のグループ鍵目録３２９とは異なり、各グループ別グループ公開鍵を含まないが、これはライトノード４００はトランザクションに対する検証を遂行しないためである。
【００７５】
図６は、一実施例に係るサーバー５００に対するブロック図を示す。図６を参照すると、サーバー５００は通信インターフェース５０５、プロセッサ５１０、およびメモリ５２０を含むことができる。サーバー５００は通信インターフェース５０５を通じて分散ネットワークシステム１００のノード（フルノード３００、ライトノード４００）と通信を遂行できる。
【００７６】
プロセッサ５１０はグルーピングモジュール５１２を含むことができる。例えば、プロセッサ５１０はメモリ５２０に保存された命令語を実行してグルーピングモジュール５１２を駆動させることができる。グルーピングモジュール５１２はハードウェア、ソフトウェアまたはこれらの組み合わせで具現され得る。グルーピングモジュール５１２により遂行される動作はプロセッサ５１０により遂行される動作として理解され得る。グルーピングモジュール５１２はノードの位置情報に基づいてノードに対するグループを決定することができる。
【００７７】
メモリ５２０はゲートウェイ目録５２２とサーバー目録５２４を保存することができる。ゲートウェイ目録５２２はフルノード３００に保存されるゲートウェイ目録３３０と互いに同期化され得る。サーバー目録５２４はサーバー５００と同じ役割を遂行する他のサーバーに対する情報を含むことができる。
【００７８】
図７は、一実施例に係るゲートウェイの登録過程を説明するためのフローチャートである。
【００７９】
フルノード３００はゲートウェイ３０１として動作するために、いずれか一つのサーバー（第１サーバー５００−１）にゲートウェイ登録要請メッセージを送信することができる（７０１）。フルノード３００は内部に保存されたサーバー目録を利用して、サーバー目録に含まれるいずれか一つのサーバーに前記メッセージを送信することができる。例えば、第１サーバー５００−１に前記メッセージが送信された例示が図示された。
【００８０】
ゲートウェイ登録メッセージは、フルノード３００のＩＰアドレス情報、フルノード３００のポート（ｐｏｒｔ）番号情報、フルノード３００の緯度情報、フルノード３００の経度情報のうち少なくともいずれか一つの情報を含むことができる。前記情報はゲートウェイ３０１の位置と関連した情報として理解され得る。
【００８１】
第１サーバー５００−１は受信されたゲートウェイ登録メッセージの有効性を検査し（７０３）、ゲートウェイ登録応答メッセージをフルノード３００に送信することができる（７０５）。第１サーバー５００−１はゲートウェイ登録要請メッセージに含まれたデータとゲートウェイ目録情報を比較することができる。第１サーバー５００−１はフルノード３００の位置と関連した情報を利用して、前記フルノード３００と隣接した位置にあるゲートウェイ３０１をゲートウェイ目録の中から選択することができる。
【００８２】
ゲートウェイ登録応答メッセージは、ゲートウェイ登録メッセージに対する処理結果に対する成功／失敗の有無（ｒｅｔｕｒｎ＿ｖａｌ）を含むことができ、前記フルノード３００に割当されるゲートウェイＩＤを含むことができる。
【００８３】
フルノード３００はゲートウェイ登録応答メッセージに含まれた前記処理結果が成功である場合、受信されたゲートウェイＩＤを自身のＩＤとして登録し（７０７）、第１サーバー５００−１にゲートウェイ登録処理メッセージを送信することができる（７０９）。ゲートウェイ登録処理メッセージはフルノード３００が登録したゲートウェイＩＤを含むことができる。もし、ゲートウェイ登録応答メッセージに含まれた前記処理結果が失敗である場合、フルノード３００はサーバー目録に含まれた他のサーバーに動作７０１〜動作７０９を遂行することになる。
【００８４】
第１サーバー５００−１はゲートウェイ登録処理メッセージを受信すると、それに含まれたゲートウェイＩＤを利用してゲートウェイ目録を更新することができる（７１１）。第１サーバー５００−１はゲートウェイ追加要請メッセージを他のサーバーに伝送することによって、更新されたゲートウェイ目録を伝播することができる。ゲートウェイ追加要請メッセージは下記の情報のうち少なくとも一つ以上の情報を含むことができる。ゲートウェイ追加要請メッセージは第１サーバー５００−１の同期化インデックス（番号）を含むことができる。同期化インデックスはゲートウェイ目録が更新される時（ゲートウェイが追加される時）に更新される数字であり得る。例えば、同期化インデックスは０〜２３２−１値の範囲内の数字であり得る。ゲートウェイ追加要請メッセージは第１サーバー５００−１に登録されたゲートウェイの個数と第１サーバー５００−１に含まれたゲートウェイ目録を含むことができる。ゲートウェイ追加要請メッセージはゲートウェイ目録に含まれたゲートウェイのＩＰアドレス、ポート番号、緯度情報、経度情報のうち少なくとも一つを含むことができる。
【００８５】
ゲートウェイ追加要請メッセージは、例えば、第１サーバー５００−１に保存されたサーバー目録に含まれた第２サーバー５００−２〜第ｎサーバー５００−ｎに伝送され得る（７１３、７１７）。ゲートウェイ追加要請メッセージを受信した第２サーバー５００−２は前記メッセージを送信した第１サーバー５００−１を識別することができる。例えば第２サーバー５００−２は前記メッセージが送信された送信先のＩＰを利用して第１サーバー５００−１を識別することができる。第２サーバー５００−２は第２サーバー５００−２に保存されたゲートウェイ目録をロードすることができる。具体的には、第２サーバー５００−２は受信されたメッセージに含まれた第１同期化インデックスと第２サーバー５００−２に保存された第２同期化インデックスを比較することができる。もし、第１同期化インデックスが第２同期化インデックスより大きいのであれば、第２サーバー５００−２は第２サーバー５００−２に保存されたゲートウェイ目録を前記メッセージを通じて受信されたゲートウェイ目録に更新し、自身の第２同期化インデックスを更新することができる。ゲートウェイ更新過程が完了すると、第２サーバー５００−２は処理結果が反映されたゲートウェイ追加応答メッセージを第１サーバー５００−１に伝送することができる（７１５）。７１３動作〜７１５動作は第１サーバー５００−１のサーバー目録に含まれた第２サーバー５００−２の他に第３サーバー〜第ｎサーバー５００−ｎに対して遂行され得る。
【００８６】
図８は、一実施例に係るゲートウェイの管理動作を説明するためのフローチャートである。
【００８７】
フルノード３００が第１サーバー５００−１によってゲートウェイ３０１として登録されると、第１サーバー５００−１はゲートウェイ３０１を管轄することになる。また、フルノード３００はゲートウェイ３０１として動作を遂行することになる。第１サーバー５００−１は周期的にゲートウェイ３０１にメッセージが到達可能であるかどうかを検査することができる。例えば、第１サーバー５００−１はＰＩＮＧメッセージをゲートウェイ３０１に伝送し（８０１）、それに対する応答メッセージを受信することによって（８０３）ゲートウェイ３０１が正常動作中であるかどうかを判断することができる。動作８０１および動作８０３はあらかじめ定められた周期（例：２分）ごとに繰り返し遂行され得る。
【００８８】
例えば、ＰＩＮＧメッセージはＰＩＮＧメッセージを識別するための任意の数を含むことができる。ＰＩＮＧ応答メッセージは受信したＰＩＮＧメッセージに含まれた任意の数を含むことができる。第１サーバー５００−１は前記任意の数を比較することによって、該当ＰＩＮＧメッセージに対する応答が受信されたことを確認することができる。
【００８９】
もし、第１サーバー５００−１がゲートウェイ３０１に繰り返しＰＩＮＧメッセージを送ったにもかかわらず、それに対する応答がない場合には、ゲートウェイ３０１をゲートウェイ目録から削除することができる（８０７）。例えば、第１サーバー５００−１はあらかじめ定められた回数（例：３回）のＰＩＮＧメッセージを伝送し、それに対する応答が受信されない場合、該当ゲートウェイ３０１で関連プログラムが終了したか、ゲートウェイ３０１のネットワークが断絶されたものと判断することができる。
【００９０】
この場合、第１サーバー５００−１は他のサーバーにゲートウェイ削除要請メッセージを伝送することによって、他のサーバーとゲートウェイ目録を同期化することができる（（８０９、８１３））。ゲートウェイ削除要請メッセージは第１サーバー５００−１の同期化インデックス（番号）を含むことができる。同期化インデックスはゲートウェイ目録が更新される時（すなわち、ゲートウェイが削除される時）に更新される数字であり得る。例えば、同期化インデックスは０〜２３２−１値の範囲内の数字であり得る。ゲートウェイ削除要請メッセージは第１サーバー５００−１に登録されたゲートウェイの個数と第１サーバー５００−１に含まれたゲートウェイ目録を含むことができる。
【００９１】
ゲートウェイ削除要請メッセージは、例えば、第１サーバー５００−１に保存されたサーバー目録に含まれた第２サーバー５００−２〜第ｎサーバー５００−ｎに伝送され得る（８０９、８１３）。ゲートウェイ削除要請メッセージを受信した第２サーバー５００−２は前記メッセージを送信した第１サーバー５００−１を識別することができる。例えば第２サーバー５００−２は前記メッセージが送信された送信先のＩＰを利用して第１サーバー５００−１を識別することができる。第２サーバー５００−２は第２サーバー５００−２に保存されたゲートウェイ目録をロードすることができる。具体的には、第２サーバー５００−２は受信されたメッセージに含まれた第１同期化インデックスと第２サーバー５００−２に保存された第２同期化インデックスを比較することができる。もし、第１同期化インデックスが第２同期化インデックスより大きいのであれば、第２サーバー５００−２は第２サーバー５００−２に保存されたゲートウェイ目録を前記メッセージを通じて受信されたゲートウェイ目録に更新し、自身の第２同期化インデックスを更新することができる。ゲートウェイ更新過程が完了すると、第２サーバー５００−２は処理結果が反映されたゲートウェイ削除応答メッセージを第１サーバー５００−１に伝送することができる（８１１）。８０９動作および８１３動作は第１サーバー５００−１のサーバー目録に含まれた第２サーバー５００−２の他に第３サーバー〜第ｎサーバー５００−ｎに対して遂行され得る。
【００９２】
図９Ａ、図９Ｂおよび図９Ｃは、一実施例でノードがグループに加入する動作を説明するためのフローチャートである。
【００９３】
分散ネットワークシステム１００に含まれるフルノード３００（ゲートウェイとして動作しないフルノード）とライトノード４００は、少なくとも一つのゲートウェイ３０１によって運営されるいずれか一つのグループに加入することができる。以下、ライトノード４００がグループに加入する動作を例示として説明するが、フルノード３００も同一の動作を遂行することによってグループに加入することができる。
【００９４】
一例において、ライトノード４００はグループ加入内訳を含むことができる。グループ加入内訳は例えば、分散ネットワークシステム１００の少なくとも一つのゲートウェイと連結された履歴がある場合、連結されたゲートウェイと関連した情報を含むことができる。
【００９５】
ライトノード４００はグループ加入内訳を照会することができる（９０１）。グループ加入内訳は少なくとも一つのゲートウェイのアドレスを含むことができる。例えば、前記アドレスはゲートウェイのアドレスとして分散ネットワークシステム１００上に登録されているアドレス（例：公開鍵、財布アドレス）として理解され得る。グループ加入内訳は例えば、第１ゲートウェイ３０１−１のアドレス、および第２ゲートウェイ３０１−２のアドレスを含むことができる。ライトノード４００はグループ加入内訳で第１ゲートウェイ３０１−１を先に選択し（９０３）、第１ゲートウェイ３０１−１にグループ加入要請メッセージを伝送することができる（９０５）。グループ加入要請メッセージはライトノード４００のアドレス（例：財布アドレス）を含むことができる。第１ゲートウェイ３０１−１はグループ加入要請メッセージを受信すると、ライトノード４００の加入可能の有無を確認することができる（９０７）。第１ゲートウェイ３０１−１は受信されたライトノード４００のアドレスを確認し、前記ライトノード４００を収容できるかどうかを確認することができる。例えば、それぞれのゲートウェイに対して収容可能なノードの個数が制限され得る。前記個数はそれぞれのゲートウェイのハードウェア環境および／またはソフトウェアの政策によってあらかじめ設定され得る。
【００９６】
第１ゲートウェイ３０１−１は、ライトノード４００を収容可能な場合、ライトノード４００のアドレスを第１ゲートウェイ３０１−１のノードプールに保存することができる。第１ゲートウェイ３０１−１はライトノード４００に対応するノードＩＤを生成し、前記ノードＩＤと前記ライトノード４００のアドレスを前記ノードプールに保存することができる。前記ノードＩＤとライトノード４００のアドレスはマッピングされて保存され得る。
【００９７】
しかし、第１ゲートウェイ３０１−１がライトノード４００を収容不可能な場合、ライトノード４００は他のノードに再びグループ加入要請をしなければならない。
【００９８】
第１ゲートウェイ３０１−１は、ライトノード４００のグループ加入要請メッセージに対するグループ加入応答メッセージをライトノード４００に伝送することができる。グループ加入応答メッセージは、グループ加入要請に対する成功／失敗の有無を含むことができる。また、グループ加入が成功した場合、ライトノード４００に対して生成されたノードＩＤが含まれ得る。
【００９９】
例えば、第１ゲートウェイ３０１−１がライトノード４００を収容できない場合、失敗（例：ｎｕｌｌ）の応答を含むグループ加入応答メッセージをライトノード４００に伝送することができる（９０９）。ライトノード４００は受信されたグループ加入応答メッセージをパーシングし、失敗の有無を確認すると、グループ加入内訳のうち第１ゲートウェイ３０１−１ではない他のゲートウェイを選択することができる。もし、グループ加入内訳に他のゲートウェイがそれ以上ない場合には、ライトノード４００は図９ｂを通じて後述される動作を遂行できる。
【０１００】
図９Ａで、ライトノード４００はグループ加入内訳に含まれた第２ゲートウェイ３０１−２を選択することができる（９１１）。ライトノード４００は第２ゲートウェイ３０１−２にグループ加入要請メッセージを伝送することができる（９１３）。第２ゲートウェイ３０１−２は受信されたライトノード４００のアドレスを確認し、前記ライトノード４００を収容できるかどうかを確認することができる（９１５）。第２ゲートウェイ３０１−２は、ライトノード４００を収容可能な場合、ライトノード４００のアドレスを第２ゲートウェイ３０１−２のノードプールに保存することができる（９１７）。例えば、第２ゲートウェイ３０１−２はライトノード４００に対応するノードＩＤを生成し、前記ノードＩＤと前記ライトノード４００のアドレスを前記ノードプールに保存することができる。第２ゲートウェイ３０１−２は、ライトノード４００のグループ加入要請メッセージに対するグループ加入応答メッセージをライトノード４００に伝送することができる（９１９）。該当グループ加入応答メッセージはグループ加入要請に対する成功の応答を含むことができ、ライトノード４００に対するノードＩＤを含むことができる。
【０１０１】
図９Ｂを参照すると、ライトノード４００がグループ加入内訳を含まない場合、ライトノード４００はサーバー目録に含まれるサーバーのうちいずれか一つのサーバー５００にゲートウェイ情報要請メッセージを伝送することができる（９５０）。ゲートウェイ情報要請メッセージはライトノード４００のＩＰ情報、ライトノード４００のポート情報、ライトノード４００の緯度情報、およびライトノード４００の経度情報のうち少なくとも一つの情報を含むことができる。
【０１０２】
サーバー５００はゲートウェイ情報要請メッセージに応答して、候補ゲートウェイ目録を生成することができる（９５３）。サーバー５００はゲートウェイ情報応答メッセージを伝送することができる（９５５）。ゲートウェイ情報応答メッセージは、前記生成した候補ゲートウェイ目録と候補ゲートウェイの個数情報を含むことができる。
【０１０３】
ライトノード４００は受信された候補ゲートウェイ目録を利用して、図９Ａを通じて上述された動作９０１〜動作９１９を遂行できる。もし、現在加入可能なグループがない場合、動作９５１〜動作９５５は繰り返し遂行され得る。
【０１０４】
図９Ｃを参照すると、一例示において、ライトノード４００はライトノード４００の位置情報として緯度情報および／または経度情報を獲得することができる（９６１）。例えば、ライトノード４００はポータブルデバイス（例：スマートフォン、タブレットＰＣ）であり得る。ライトノード４００の位置はリアルタイムに変更され得る。
【０１０５】
ライトノード４００は前記の緯度情報および／または経度情報を含むゲートウェイ情報要請メッセージをサーバー５００に伝送することができる（９６３）。多様な実施例において、ライトノード４００の緯度座標および／または経度座標が変更されることによって、サーバー５００に接続しなければならないゲートウェイに対する情報を要請することができる。またはライトノード４００はサーバー５００に一定の周期ごとに現在の位置情報に基づいて接続しなければならないゲートウェイに対する情報を要請することができる。
【０１０６】
一部の実施例において、ゲートウェイ情報要請メッセージはライトノード４００が要請したゲートウェイの個数、ライトノード４００のＩＰアドレス、ライトノード４００の緯度情報、およびライトノード４００の経度情報を含むことができる。
【０１０７】
サーバー５００はノード待機プールにライトノード４００を登録することができる（９６５）。サーバー５００はライトノードからゲートウェイ情報要請メッセージを受信すると、前記要請を順次処理するためにノード待機プールを運営することができる。以下、サーバー５００の動作はサーバー５００のプロセッサ５１０のグルーピングモジュール５１２によって遂行され得る。
【０１０８】
サーバー５００はゲートウェイ目録を照会し（９６７）、ゲートウェイ目録に含まれたゲートウェイとライトノード４００の間の距離を計算することができる（９６９）。例えば、サーバー５００はライトノード４００の緯度情報および経度情報とゲートウェイの緯度情報および経度情報に基づいて、両者間の距離（例：ＧＰＳ座標上距離）を計算することができる。サーバー５００はゲートウェイ目録に含まれたゲートウェイに対して前記計算を遂行し、ライトノード４００と近い距離を有する順で候補ゲートウェイを決定することができる。サーバー５００は決定された候補ゲートウェイが含まれた候補ゲートウェイ目録を生成することができる（９７１）。候補ゲートウェイ目録はライトノード４００によって要請された個数の候補ゲートウェイを含むことができる。サーバー５００は候補ゲートウェイ目録を含むゲートウェイ情報応答メッセージをライトノード４００に伝送することができる（９８３）。
【０１０９】
図１０は、一実施例に係るサーバー間のゲートウェイ目録を同期化する動作のフローチャートである。
【０１１０】
サーバー５００はあらかじめ定められた周期ごとにサーバー５００に含まれたゲートウェイ目録を他のサーバーに共有することができる。図１０を参照すると、例えば第１サーバー５００−１と第２サーバー５００−２の同期化過程が例示された。第２サーバー５００−２はゲートウェイ目録に対する同期化要請メッセージを第１サーバー５００−１に伝送することができる（１００１）。前記同期化要請メッセージは、第２サーバー５００−２に保存された同期化インデックス（番号）、ゲートウェイ目録を含むことができる。同期化インデックスはゲートウェイ目録が更新される時に更新される数字であり得る。例えば、同期化インデックスは０〜２３２−１値の範囲内の数字であり得る。
【０１１１】
第１サーバー５００−１は第１サーバー５００−１に保存された第１同期化インデックスと第２サーバー５００−２から受信された第２同期化インデックスを比較することができる。もし、第２同期化インデックスが第１同期化インデックスより大きいのであれば、第１サーバー５００−１は第１サーバー５００−１に保存されたゲートウェイ目録を前記メッセージを通じて受信されたゲートウェイ目録に更新し、自身の第１同期化インデックスを更新することができる（１００３）。第１サーバー５００−１は同期化要請応答メッセージを第２サーバー５００−２に伝送することができる。同期化要請応答メッセージは同期化要請に対する処理結果（成功または失敗）を含むことができる。動作１００１〜動作１００５はあらかじめ定められた周期ごとに分散ネットワークシステム１００に含まれる互いに異なるサーバーの間で遂行され得る。
【０１１２】
多様な実施例において、新しく追加された第ｎサーバー５００−ｎは初期化ブーティングを遂行し（１０１１）、任意の隣のサーバーである第１サーバー５００−１に初期同期化要請メッセージを伝送することができる（１０１３）。第１サーバー５００−１は初期同期化応答メッセージを第ｎサーバー５００−ｎに伝送することができる。初期同期化応答メッセージは、分散ネットワークシステム１００に含まれたサーバーに対する情報を含むことができる。サーバーに対する情報は、サーバーの個数、サーバーに保存されたゲートウェイの目録、ゲートウェイの個数、ゲートウェイ目録に対する同期化インデックスを含むことができる。第ｎサーバー５００−ｎは初期同期化応答メッセージを受信すると、前記メッセージに含まれた情報を保存し、同期化を遂行できる。
【０１１３】
図１１は、一実施例によりゲートウェイ（３０１、請求項の「ノードグループ管理装置」）がグループ秘密鍵を生成する動作の例示図である。
【０１１４】
ゲートウェイ３０１は前述した通り、ブロックチェーンネットワークに参加するノードのうち、一部のノードを一つのグループとして管理する機能をすることができる。ゲートウェイ３０１のグループ秘密鍵生成モジュール３１６は自身のグループ内のノードがトランザクション署名時に、秘密鍵とともに二重に署名に使われ得るグループ秘密鍵を生成することができる。ゲートウェイ３０１は自身のグループ内のノードと共有し、グループ秘密鍵の署名検証に使われるグループ公開鍵を他のグループに配布することができる。
【０１１５】
図１１を参照すると、ゲートウェイ３０１は自身のグループに参加するノードの情報をノードプール３３５に保存している。ノードプール３３５はグループ内の各ノードを識別するインデックス情報および各ノードの公開鍵情報をマッピングして保存することができる。例えば、第１ゲートウェイ３０１が１００個のノードを管理する場合、ノードプール３３５には１００個のノードのインデックス情報１〜１００とそれぞれの公開鍵をマッピングして保存することができる。
【０１１６】
まず、ゲートウェイ３０１はグループ秘密鍵を生成するために、ノードプール３３５に保存されたノードの公開鍵のうち一部を選定することができる。図１１のように、ゲートウェイ３０１はランダムにインデックス情報１、３、２５、９９にマッピングされた公開鍵を選定することができ、または下記の例示の方法を使うことができる。
【０１１７】
例えば、ゲートウェイ３０１はグループ内のノードの総数を所定の自然数で割った商の倍数に該当するインデックスを有する公開鍵を選定することができる。たとえば、ノードの総数が１００個である場合、ランダムな自然数７で割った商である１４の倍数である１４、２８、４２、５６、５０、８４、９８のインデックスとマッピングされた公開鍵を選定することができる。
【０１１８】
次に、ゲートウェイ３０１は選ばれた各公開鍵をビットのみからなるビット情報が出力されるように所定のハッシュ生成アルゴリズムを通じて変換することができる。たとえば各公開鍵にｂａｓｅ５８  ｄｅｃｏｄｉｎｇを適用して１６０ビットからなるビット列を抽出することができる。
【０１１９】
その後、ゲートウェイ３０１はそれぞれのビット列にビット演算（ｂｉｔｗｉｓｅ  ｏｐｅｒａｔｉｏｎ、例えば、＾、＆、＞＞、＜＜またはこれらの組み合わせ）を遂行して一つの合成されたビット列（図１１、１６０ビットの１１０１００１０１００１１・・・００）を生成することができる。
【０１２０】
その後、ゲートウェイ３０１は合成されたビット列に時間情報からなるビット列を連結してグループ秘密鍵を生成することができる。この時、時間情報ビット列はＵＮＩＸ  ＴＩＭＥを使うことができる。ゲートウェイ３０１はグループ秘密鍵のビット数が秘密鍵のビット数と同一となるようにするために、時間情報のビット列に任意のビット列を連結することができる。
【０１２１】
例えば、２５６ビットのグループ秘密鍵を作るためには、合成されたビット列が１６０ビットであるとき９６ビットを連結しなければならないため、時間情報ビット列をＣｕｒｒｎｅｔ  Ｔｉｍｅ（３２ｂｉｔ）×ｓｙｓｒａｎｄｏｍ（６４ｂｉｔ）で構成することができる。ただし、これは例示に過ぎず、グループ秘密鍵の生成方法はこのような例示に限定されるものではない。
【０１２２】
ゲートウェイ３０１は一つのグループ秘密鍵が持続的に使われる場合、悪意の攻撃によってグループ秘密鍵が露出する憂慮を防止するために、所定の周期でグループ秘密鍵を新しく生成したり、ゲートウェイ３０１が管理するグループに変更（例：ノードの追加または脱退）が発生する場合にグループ秘密鍵を新しく生成してグループ内のノードに配布することができる。
【０１２３】
グループ秘密鍵の生成周期は、グループ秘密鍵から生成されたグループ公開鍵がゲートウェイ３０１間で共有されなければならないため、ゲートウェイ３０１間の送受信されるメッセージの通信ディレイ（例：２〜４秒）を考慮して選択され得る。一実施例により、グループ秘密鍵の生成周期は５〜６０秒であり得るが、このような数値は例示に過ぎず、限定するものではない。
【０１２４】
ゲートウェイ３０１のグループ公開鍵生成モジュール３１８はグループ秘密鍵から所定の関数を通じてグループ公開鍵を生成することができる。所定の関数はグループ秘密鍵に基づいてはグループ公開鍵を生成することができるが、第１グループ公開鍵に基づいてはグループ秘密鍵を作ることはできない非可逆関数であって、例えば、楕円曲線積算関数（Ｅｌｌｉｐｔｉｃ  Ｃｕｒｖｅ  Ｄｉｇｉｔａｌ  Ｓｉｇｎａｔｕｒｅ  Ａｌｇｏｒｉｔｈｍ、ＥＣＤＳＡ）を含むことができるが、これに限定されはしない。
【０１２５】
図１２は、一実施例でゲートウェイ３０１がグループ秘密鍵およびグループ公開鍵を生成および配布する動作を説明するためのフローチャートである。
【０１２６】
前提動作としてゲートウェイ３０１がグループに含まれるノードを選定したり、ノードからグループへの参加を要請されてグループを決定する方法は、前述した図９Ａ〜図９Ｃの動作を参照することができるが、ゲートウェイ３０１が複数のノードからなるグループを結成する方法はこれに限定されず、多様な方法を利用することができる。
【０１２７】
以下、第１グループを管理するゲートウェイを第１グループゲートウェイ３０１−１、第１グループに含まれたノードを第１グループノード６００−１と呼称し、第２グループを管理するゲートウェイを第２グループゲートウェイ３０１−２、第２グループに含まれたノードを第２グループノード６００−２と呼称して、ゲートウェイ３０１がグループ秘密鍵およびグループ公開鍵を生成および配布する動作を説明する。
【０１２８】
第１グループゲートウェイ３０１−１は、第１グループに含まれたノードの情報に基づいて第１グループ秘密鍵および第１グループ公開鍵を生成することができる（２００１）。
【０１２９】
第１グループゲートウェイ３０１−１は、第１グループノードに第１グループ秘密鍵（または第１グループ公開鍵を含むことができる）を配布することができる（２００３）。第１グループノードのうち一つである第１グループノードａ（６００−１ａ）は、第１グループ秘密鍵を受信して自ら第１グループ公開鍵を生成することができる。
【０１３０】
第１グループゲートウェイ３０１−１は外部グループに第１グループ公開鍵を配布することができる（２００５）。外部グループのうち第２グループを管理する第２グループゲートウェイ３０１−２は、第１グループ公開鍵を受信して保存することができる（２００７）。第２グループゲートウェイ３０１−２は第２グループノードに第１グループ公開鍵を配布することができる（２００９）。第２グループノードのうちトランザクション検証機能をする第１グループノードａ（６００−２ａ）は、第１グループ公開鍵を保存して第１グループで生成されたトランザクションの検証に使うことができる。
【０１３１】
併せて、第１グループ秘密鍵が生成された後に第１グループノードに変更が発生する状況を仮定してみる。ノードｂが第１グループゲートウェイ３０１−１にグループ加入要請を伝送することができる（２０１１）。第１グループゲートウェイ３０１−１はノードｂのグループ加入要請を承認することができ、承認時に第１グループノードｂ（６００−１ｂ）の情報をノードプール３３５に保存することができる（２０１３）。このようなグループ加入動作は図９Ａ〜図９Ｃの動作を通じて遂行され得るが、これに限定されはしない。
【０１３２】
第１グループゲートウェイ３０１−１は新しく変更されたノードプール３３５の情報に基づいて第１グループ秘密鍵および第１グループ公開鍵を新しく生成することができる（２０１５）。
【０１３３】
第１グループゲートウェイ３０１−１は第１グループノードに第１グループ秘密鍵（または第１グループ公開鍵を含むことができる）を配布することができる（２０１７）。第１グループノードに該当する第１グループノードａ（６００−１ａ）および第１グループノードｂは、第１グループ秘密鍵を受信して自ら第１グループ公開鍵を生成することができる。
【０１３４】
第１グループゲートウェイ３０１−１は外部グループに第１グループ公開鍵を配布することができる（２０１９）。外部グループのうち第２グループを管理する第２グループゲートウェイ３０１−２は、第１グループ公開鍵を受信して保存することができる（２０２１）。第２グループゲートウェイ３０１−２は第２グループノードに第１グループ公開鍵を配布することができる（２０２３）。第２グループノードのうちトランザクション検証機能をする第１グループノードａ（６００−２ａ）は、第１グループ公開鍵を保存して第１グループで生成されたトランザクションの検証に使うことができる。第１グループゲートウェイ３０１−１は、グループに対する変更が発生しなくても周期的に第１グループ秘密鍵および第１グループ公開鍵を生成することができる。
【０１３５】
一方、外部グループで最新で生成されたグループ秘密鍵で署名されたトランザクションを受信する時点より、外部グループで最新で生成されたグループ公開鍵を受信する時間差が発生して、最新のグループ公開鍵をより遅く受信するのであれば、正しく生成されたトランザクションであっても検証に失敗する状況を図１３と共に詳察する。
【０１３６】
図１３は、一実施例でノードがグループ秘密鍵の選択によって検証が可能な状況と検証が不可能な状況を説明するためのフローチャートである。
【０１３７】
まず、第２グループゲートウェイ３０１−２は第２グループに含まれたノードの情報に基づいて第２グループ秘密鍵ａおよび第２グループ公開鍵ａを生成することができる（２２０１）。
【０１３８】
第２グループゲートウェイ３０１−２は第２グループノードに第２グループ秘密鍵ａ（または第２グループ公開鍵ａを含むことができる）を配布することができる（２２０３）。第２グループノードのうち一つである第１グループノードａ（６００−２ａ）は第２グループ秘密鍵ａを受信して自ら第２グループ公開鍵ａを生成することができる。
【０１３９】
第２グループゲートウェイ３０１−２は外部グループに第２グループ公開鍵ａを配布することができる（２２０５）。外部グループのうち第１グループを管理する第１グループゲートウェイ３０１−１は第２グループ公開鍵ａを受信して保存することができる（２２０７）。第１グループゲートウェイ３０１−１は第１グループノードに第２グループ公開鍵ａを配布することができる（２２０９）。
【０１４０】
一方、第２グループゲートウェイ３０１−２はグループ情報が変更されたり生成周期が到来して、第２グループに含まれたノードの情報に基づいて第２グループ秘密鍵ｂおよび第２グループ公開鍵ｂを新しく生成し（２２１１）、第２グループノードに第２グループ秘密鍵ｂを配布することができる（２２１３）。
【０１４１】
ただし、第１グループに第２グループ公開鍵ｂが配布される前に、第１グループノードａ（６００−１ａ）が第２グループ秘密鍵ｂを通じて署名したトランザクションが第１グループに到達した場合（２２１５）には、第１グループノードａ（６００−１ａ）は第２グループ秘密鍵ｂを保存していないため、該当トランザクションが正しい署名であっても検証をすることができない。
【０１４２】
したがって、第１グループに第２グループ公開鍵ｂが配布される前であれば、第２グループノードａ（６００−２ａ）は、たとえ新しい第２グループ秘密鍵ｂが配布されたとしても、以前に保存していた第２グループ秘密鍵ａで署名しないと該当トランザクションの検証を受けることができない。より詳細に図１４を通じて各グループが保有しているグループ公開鍵の状態を詳察する。
【０１４３】
図１４は、一実施例により各グループに配布されたグループ公開鍵の状態を示す例示図である。それぞれの大きいボックスは第１グループ、第２グループ、第３グループに配布されているグループ公開鍵の現在の状態を示す。そして、縦方向の第１周期〜第６周期はグループ鍵を生成する周期を意味し、下に行くほど最新で生成されたグループ公開鍵を意味する。またＡ−１〜Ａ−６は第１グループで生成されたグループ公開鍵、Ｂ−１〜Ｂ−６は第２グループで生成されたグループ公開鍵、Ｃ−１〜Ｃ−６は第３グループで生成されたグループ公開鍵を意味する。
【０１４４】
図１４を参照すると、現在の状態で第１グループはＡ−６グループ公開鍵まで生成したが、配布のディレイ（２２１９）により第２グループにはまだＡ−６グループ公開鍵が到達しておらず、第３グループにはまだＡ−５およびＡ−６グループ公開鍵が到達していない状態である。したがって、第１グループのノードがＡ−６のグループ秘密鍵で署名をしたとしても、第２グループおよび第３グループのノードは該当トランザクションを検証することができない。また、第１グループのノードがＡ−５のグループ秘密鍵で署名をしたとしても第３グループのノードは該当トランザクションを検証することができない。これに伴い、トランザクションの実行遅延が発生することができる。
【０１４５】
したがって、このような状況を防止するために、第１グループのノードは最新で配布されたグループ秘密鍵があるとしても、すでにブロックチェーンネットワークにすべて配布されているグループ秘密鍵を使ってトランザクションに署名することができる。
【０１４６】
このために、ノードは配布されたグループ秘密鍵の視覚情報とともに受信して最新順で所定個数のグループ秘密鍵を保存し、トランザクションを生成する場合に図１３の２２１７動作のように、最新で保存されたグループ秘密鍵から既設定された周期または時間（例：ブロックチェーン上にグループ公開鍵がすべて配布され得る通信ディレイ時間を考慮して設定）の以前に生成されたグループ秘密鍵を利用して署名してトランザクションの検証不可状況を防止することができる。
【０１４７】
図１５は、一実施例に係るグループ秘密鍵基盤のトランザクション二重署名およびグループ公開鍵基盤のトランザクション二重検証の概念図である。
【０１４８】
図１５を参照すると、ノードはメッセージの内容と秘密鍵を共にハッシングした第１署名情報とともに、メッセージの内容とグループ秘密鍵を共にハッシングした第２署名情報を生成することができる。これに伴い、ノードはブロックチェーンネットワークに発生させるトランザクションの構造として、メッセージ、第１署名情報、第２署名情報、公開鍵およびグループ公開鍵を含ませることができる。例えば、ブロックチェーンネットワークに配布されるトランザクションは、
１  ０２７ｄ７７４ｅ８ａ４ｆ７ｅ０３ｄ２２６ｄｃａｂ５８２９８ｆａ８ａ０ａｃｃ
【０１４９】
７８ａｆｅｂ３０９ｄ７１９５ｃｂ９３０ｆ５５ｄｃｃａｆ２２  ０３ａ６９６０３４６ｃｃ０６９８２４７ｄ４１７８ｆ５２１ｅ０ｃ５ｅ４３ｆ１ｂ２８ｂ３ｂ６４７ｂ９４１３ｅ００５８ｆ６１０８ｆ６ｄｄｄの実際の例示であって、定められた規約に沿って情報の順序が配列された１６進数の列を含むことができる。該当トランザクションを受信したノードは、定められた形式で１６進数情報を分類してスタックに積むことができる。例えば、形式に対する規約が、ＯＰ＿０＜Ｓｉｇ−Ｗａｌｌｅｔ＞＜Ｓｉｇ−Ｇｒｏｕｐ＞ＯＰ＿２＜Ｐｕｂｌｉｃ  Ｋｅｙ  Ｗａｌｌｅｔ＞＜Ｐｕｂｌｉｃ  Ｋｅｙ  Ｇｒｏｕｐ＞ＯＰ＿２  ＯＰ＿ＣＨＥＣＫＭＵＬＴＩＳＩＧのような場合、トランザクションを受信したノードは＜Ｓｉｇ−Ｗａｌｌｅｔ＞に該当する数字列から第１署名情報、＜Ｓｉｇ−Ｇｒｏｕｐ＞に該当する数字列から第２署名情報、＜Ｐｕｂｌｉｃ  Ｋｅｙ  Ｗａｌｌｅｔ＞に該当する数字列から公開鍵情報、＜Ｐｕｂｌｉｃ  Ｋｅｙ  Ｇｒｏｕｐ＞に該当する数字列からグループ公開鍵情報を抽出することができる。
【０１５０】
これに伴い、トランザクションを受信したノードは、公開鍵を通じて第１署名が正しい秘密鍵によって署名されたものであるかを検証し、これに加え、グループ公開鍵を通じて第２署名が正しいグループ秘密鍵によって署名されたものであるかを検証して、最終的に該当トランザクションが正しいものであるかを検証することができる。
【０１５１】
前述した実施例によると、トランザクション署名に秘密鍵とグループ秘密鍵を共に使うため、秘密鍵がハッキングされたとしてもグループ秘密鍵の署名を要請する構成を通じてハッキングによる被害を防止することができる。また、信頼性が確保されたゲートウェイ３０１を通じてグループ秘密鍵とグループ公開鍵を生成および配布して、グループ鍵基盤のトランザクション署名に対する信頼度を高めることができる。これに加え、グループ秘密鍵の生成を周期的に遂行したり、またはグループに変更が発生した場合ごとに遂行することによって、グループ秘密鍵の露出可能性を最小化することができる。併せて、ノードがトランザクションを生成する場合、ブロックチェーンネットワーク上のすべてに配布されたグループ秘密鍵を通じての署名を遂行することによって、配布ディレイによるトランザクション検証エラーを防止することができる。
【０１５２】
図１１〜図１５とともに説明された動作の順序は例示に過ぎず、その時系列的順序が限定されるものではなく、設計により論理的に変更することができる。また、図１１〜図１５とともに説明されたゲートウェイ３０１の動作は図４のプロセッサが含むモジュールによって遂行される動作として理解され得る。併せて、図１１〜図１５とともに説明されたノードの動作は図４のフルノードまたは図５のライトノードのプロセッサが含むモジュールによって遂行される動作として理解され得る。
【０１５３】
本文書の多様な実施例およびこれに使われた用語は本文書に記載された技術的特徴を特定の実施例に限定しようとするものではなく、該当実施例の多様な変更、均等物、または代替物を含むものと理解されるべきである。図面の説明と関連して、類似するまたは関連した構成要素に対しては類似する参照符号が使われ得る。アイテムに対応する名詞の単数型は関連した文脈上明白に異なるように指示しない限り、アイテム一つまたは複数個を含むことができる。
【０１５４】
本文書で、「ＡまたはＢ」、「ＡおよびＢのうち少なくとも一つ」、「ＡまたはＢのうち少なくとも一つ」、「Ａ、ＢまたはＣ」、「Ａ、ＢおよびＣのうち少なくとも一つ」、および「Ａ、Ｂ、またはＣのうち少なくとも一つ」のような文面のそれぞれは、その文面のうち該当する文面に共に羅列された項目の可能なすべての組み合わせを含むことができる。「第１」、「第２」、または「最初」または「二番目」のような用語は、単に該当構成要素を他の該当構成要素と区分するために使われ得、該当構成要素を他の側面（例：重要性または順序）に限定しない。ある（例：第１）構成要素が他の（例：第２）構成要素に、「機能的に」または「通信的に」という用語とともにまたはこのような用語なしに、「結合」または「接続」と言及された場合、それはある構成要素が他の構成要素に直接的に（例：有線で）、無線で、または第３構成要素を通じて連結され得るということを意味する。
【０１５５】
本文書で使われた用語「モジュール」はハードウェア、ソフトウェアまたはファームウェアで具現されたユニットを含むことができ、例えば、ロジック、論理ブロック、部品、または回路などの用語と相互に互換的に使われ得る。モジュールは、一体に構成された部品または一つまたはそれ以上の機能を遂行する、部品の最小単位またはその一部となり得る。例えば、一実施例によると、モジュールはＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）の形態で具現され得る。
【０１５６】
本文書の多様な実施例は、機器（ｍａｃｈｉｎｅ）（例：電子装置）によって読み取り可能な保存媒体（例：メモリ）に保存された一つ以上の命令語を含むソフトウェア（例：プログラム）で具現され得る。保存媒体はＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、メモリバッファ、ハードドライブ、データベース、ＥＰＲＯＭ（ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（ｅｌｅｃｔｒｉｃａｌｌｙ  ｅｒａｓａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、ＲＯＭ（ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）などを含むことができる。
【０１５７】
また、本文書の実施例のプロセッサは、保存媒体から保存された一つ以上の命令語のうち少なくとも一つの命令を呼び出し、それを実行することができる。これは機器が呼び出された少なくとも一つの命令語によって少なくとも一つの機能を遂行するように運営されることを可能にする。このような一つ以上の命令語はコンパイラによって生成されたコードまたはインタープリタによって実行され得るコードを含むことができる。プロセッサは汎用プロセッサ、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）などであり得る。
【０１５８】
機器で読み取り可能な保存媒体は、非一過性の（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ）保存媒体の形態で提供され得る。ここで、「非一過性の」は保存媒体が実在（ｔａｎｇｉｂｌｅ）する装置であり、信号（ｓｉｇｎａｌ）（例：電磁波）を含まないことを意味するだけであり、この用語はデータが保存媒体に半永久的に保存される場合と臨時的に保存される場合を区分しない。
【０１５９】
本文書に開示された多様な実施例に係る方法はコンピュータプログラム製品（ｃｏｍｐｕｔｅｒ  ｐｒｏｇｒａｍ  ｐｒｏｄｕｃｔ）に含まれて提供され得る。コンピュータプログラム製品は商品として販売者および購買者間に取引され得る。コンピュータプログラム製品は機器で読み取り可能な保存媒体（例：ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ（ＣＤ−ＲＯＭ））の形態で配布されたり、またはアプリケーションストア（例：プレイストア）を通じて、または二つの使用者装置（例：スマートフォン）間に直接、オンラインで配布（例：ダウンロードまたはアップロード）され得る。オンライン配布の場合に、コンピュータプログラム製品の少なくとも一部は、メーカーのサーバー、アプリケーションストアのサーバー、または中継サーバーのメモリのような機器で読み取り可能な保存媒体に少なくとも一時保存されたり、臨時的に生成され得る。
【０１６０】
多様な実施例によると、記述した構成要素のそれぞれの構成要素（例：モジュールまたはプログラム）は、単数または複数の個体を含むことができる。多様な実施例によると、前述した該当構成要素のうち一つ以上の構成要素または動作が省略されたり、または一つ以上の他の構成要素または動作が追加され得る。おおむねまたは追加的に、複数の構成要素（例：モジュールまたはプログラム）は一つの構成要素に統合され得る。このような場合、統合された構成要素は複数の構成要素それぞれの構成要素の一つ以上の機能を、統合以前に複数の構成要素のうち該当構成要素によって遂行されるものと同一または類似するように遂行できる。多様な実施例によると、モジュール、プログラムまたは他の構成要素によって遂行される動作は順次、並列的に、繰り返し、またはヒューリスティックに実行されたり、動作のうち一つ以上が他の順序で実行されたり、省略されたり、または一つ以上の他の動作が追加され得る。
【図１】
2021533638.tif 000003
【図２】
2021533638.tif 000004
【図３】
2021533638.tif 000005
【図４】
2021533638.tif 000006
【図５】
2021533638.tif 000007
【図６】
2021533638.tif 000008
【図７】
2021533638.tif 000009
【図８】
2021533638.tif 000010
【図９Ａ】
2021533638.tif 000011
【図９Ｂ】
2021533638.tif 000012
【図９Ｃ】
2021533638.tif 000013
【図１０】
2021533638.tif 000014
【図１１】
2021533638.tif 000015
【図１２】
2021533638.tif 000016
【図１３】
2021533638.tif 000017
【図１４】
2021533638.tif 000018
【図１５】
2021533638.tif 000019
【国際調査報告】
2021533638.tif 000020
2021533638.tif 000021
2021533638.tif 000022
2021533638.tif 000023
2021533638.tif 000024
2021533638.tif 000025
2021533638.tif 000026
2021533638.tif 000027
2021533638.tif 000028
2021533638.tif 000029