(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-29
(45)【発行日】2023-07-07
(54)【発明の名称】プログラム、データ認証方法、およびコンピュータ装置
(51)【国際特許分類】
H04L 9/32 20060101AFI20230630BHJP
G06F 21/64 20130101ALI20230630BHJP
【FI】
H04L9/32 200B
G06F21/64
(21)【出願番号】P 2021555454
(86)(22)【出願日】2019-03-15
(86)【国際出願番号】 KR2019003001
(87)【国際公開番号】W WO2020189800
(87)【国際公開日】2020-09-24
【審査請求日】2022-03-14
(73)【特許権者】
【識別番号】516014409
【氏名又は名称】ライン プラス コーポレーション
【氏名又は名称原語表記】LINE Plus Corporation
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ソ,ホンソプ
【審査官】中里 裕正
(56)【参考文献】
【文献】特開2000-124887(JP,A)
【文献】特表2018-530175(JP,A)
【文献】米国特許出願公開第2017/0353309(US,A1)
【文献】国際公開第2018/189658(WO,A1)
【文献】国際公開第2019/045589(WO,A1)
【文献】中国特許出願公開第108712257(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
G06F 21/64
(57)【特許請求の範囲】
【請求項1】
ブロックチェーンネットワークに参加するコンピュータ装置によって実現されるノードのデータ認証方法
をコンピュータ装置に実行させるためのプログラムであって、
前記データ認証方法は、
前記コンピュータ装置が含む少なくとも1つのプロセッサにより、前記ブロックチェーンネットワークのチェーンを代表するプライベートキーを前記ブロックチェーンネットワークに参加する少なくとも1つの他のノードと共有する段階、
前記少なくとも1つのプロセッサにより、前記プライベートキーを利用して前記ブロックチェーンネットワークのパブリックアドレスを生成する段階、
前記少なくとも1つのプロセッサにより、前記ブロックチェーンネットワークから他のブロックチェーンネットワークに伝達しようとするデータを、前記ブロックチェーンネットワークに設置されたコントラクトによって前記プライベートキーで署名する段階、および前記少なくとも1つのプロセッサにより、前記署名されたデータを、前記コントラクトを経て他のブロックチェーンネットワークに伝達する段階
を含み、
前記署名されたデータと前記パブリックアドレスとの比較により、前記署名されたデータが前記ブロックチェーンネットワークから発送されたものであることが検証されることを特徴とする、
プログラム。
【請求項2】
前記ブロックチェーンネットワークは、複数のリーフチェーン間のデータ送信を管理するルートチェーンを含み、
前記データ認証方法は、
前記少なくとも1つのプロセッサにより、前記生成されたパブリックアドレスを前記複数のリーフチェーンそれぞれのジェネシスブロックに記録する段階
をさらに含むことを特徴とする、請求項1に記載の
プログラム。
【請求項3】
前記署名されたデータが送信されたリーフチェーンで前記署名されたデータと前記リーフチェーンのジェネシスブロックに記録されたパブリックアドレスとを比較し、前記署名されたデータが前記ルートチェーンから発送されたものであることを検証することを特徴とする、請求項2に記載の
プログラム。
【請求項4】
前記ブロックチェーンネットワークは、ルートチェーンによってデータ送信が管理される複数のリーフチェーンのうちの第1リーフチェーンを含み、
前記データ認証方法は、
前記少なくとも1つのプロセッサにより、前記生成されたパブリックアドレスを、前記ルートチェーンに前記第1リーフチェーンと関連して設置されたリーフチェーンコントラクトに登録する段階
をさらに含むことを特徴とする、請求項1~3のいずれか一項に記載の
プログラム。
【請求項5】
前記ルートチェーンで前記署名されたデータと前記リーフチェーンコントラクトに登録されたパブリックアドレスとを比較し、前記署名されたデータが前記第1リーフチェーンから発送されたものであることを検証することを特徴とする、請求項4に記載の
プログラム。
【請求項6】
前記ノードは、前記ブロックチェーンネットワークでの合意をなすように予め設定された複数のノードのうちの1つであることを特徴とする、請求項1~5のいずれか一項に記載の
プログラム。
【請求項7】
前記署名されたデータが記録されたブロックが前記ブロックチェーンネットワークのチェーンに追加されることを特徴とする、請求項1~6のいずれか一項に記載の
プログラム。
【請求項8】
ブロックチェーンネットワークに参加するコンピュータ装置によって実現されるノードのデータ認証方法であって、
前記コンピュータ装置が含む少なくとも1つのプロセッサにより、前記ブロックチェーンネットワークのチェーンを代表するプライベートキーを前記ブロックチェーンネットワークに参加する少なくとも1つの他のノードと共有する段階、
前記少なくとも1つのプロセッサにより、前記プライベートキーを利用して前記ブロックチェーンネットワークのパブリックアドレスを生成する段階、
前記少なくとも1つのプロセッサにより、前記ブロックチェーンネットワークから他のブロックチェーンネットワークに伝達しようとするデータを、前記ブロックチェーンネットワークに設置されたコントラクトによって前記プライベートキーで署名する段階、および前記少なくとも1つのプロセッサにより、前記署名されたデータを、前記コントラクトを経て他のブロックチェーンネットワークに伝達する段階
を含み、
前記署名されたデータと前記パブリックアドレスとの比較により、前記署名されたデータが前記ブロックチェーンネットワークから発送されたものであることが検証されることを特徴とする、データ認証方法。
【請求項9】
ブロックチェーンネットワークのノードを実現するコンピュータ装置であって、
前記コンピュータ装置で読み取り可能な命令を実行するように実現される少なくとも1つのプロセッサ
を含み、
前記少なくとも1つのプロセッサにより、
前記ブロックチェーンネットワークのチェーンを代表するプライベートキーを前記ブロックチェーンネットワークに参加する少なくとも1つの他のノードと共有し、
前記プライベートキーを利用して前記ブロックチェーンネットワークのパブリックアドレスを生成し、
前記ブロックチェーンネットワークから他のブロックチェーンネットワークに伝達しようとするデータを、前記ブロックチェーンネットワークに設置されたコントラクトによって前記プライベートキーに署名し、
前記署名されたデータを前記コントラクトによって他のブロックチェーンネットワークに伝達し、
前記署名されたデータと前記パブリックアドレスとの比較により、前記署名されたデータが前記ブロックチェーンネットワークから発送されたものであることが検証されることを特徴とする、コンピュータ装置。
【発明の詳細な説明】
【技術分野】
【0001】
以下の説明は、ブロックチェーンで生成されたデータを認証する方法およびシステムに関する。
【背景技術】
【0002】
ブロックチェーンとは、電子台帳であって、トランザクションのためのブロックで構成されたコンピュータ基盤の分散型、P2P(peer-to-peer)のシステムによって実現される。各トランザクション(Transaction:Tx)は、ブロックチェーンシステム内の参加者にデジタル資産の制御送信をエンコードするデータ構造であり、少なくとも1つの入力と少なくとも1つの出力を含む。各ブロックは1つ前のブロックのハッシュを含み、該当のブロックは連結されており、最初からブロックチェーンに記録されたすべてのトランザクションの永久的な、変えることのできない記録を生成する。例えば、韓国公開特許第10-2018-0113143号公報は、ブロックチェーンに基づくユーザ定義の貨幣取引システムおよびその動作方法について開示している。このようなブロックチェーン自体は、スケールアウトができない。例えば、ブロックチェーンネットワークでブロックを生成するためのノードを追加しても、ブロック生成のための合意費用が増加するだけで、トランザクションに対するブロックの生成速度は増加しない。
【発明の概要】
【発明が解決しようとする課題】
【0003】
ルートチェーンに基づいてリーフチェーンを追加する方式により、スケールアウトが可能なブロックチェーンで生成されるデータを認証するデータ認証方法およびシステムを提供する。
【課題を解決するための手段】
【0004】
ブロックチェーンネットワークに参加するコンピュータ装置によって実現されるノードのデータ認証方法であって、前記コンピュータ装置が含む少なくとも1つのプロセッサにより、前記ブロックチェーンネットワークのチェーンを代表するプライベートキーを前記ブロックチェーンネットワークに参加する少なくとも1つの他のノードと共有する段階、前記少なくとも1つのプロセッサにより、前記プライベートキーを利用して前記ブロックチェーンネットワークのパブリックアドレスを生成する段階、前記少なくとも1つのプロセッサにより、前記ブロックチェーンネットワークから他のブロックチェーンネットワークに伝達しようとするデータを、前記ブロックチェーンネットワークに設置されたコントラクトによって前記プライベートキーで署名する段階、および前記少なくとも1つのプロセッサにより、前記署名されたデータを前記コントラクトによって他のブロックチェーンネットワークに伝達する段階を含み、前記署名されたデータと前記パブリックアドレスとの比較により、前記署名されたデータが前記ブロックチェーンネットワークから発送されたものであることが検証されることを特徴とする、データ認証方法を提供する。
【0005】
一側によると、前記ブロックチェーンネットワークは、複数のリーフチェーン間のデータ送信を管理するルートチェーンを含み、前記データ認証方法は、前記少なくとも1つのプロセッサにより、前記生成されたパブリックアドレスを前記複数のリーフチェーンそれぞれのジェネシスブロックに記録する段階をさらに含むことを特徴としてよい。
【0006】
他の側面によると、前記署名されたデータが送信されたリーフチェーンで前記署名されたデータと前記リーフチェーンのジェネシスブロックに記録されたパブリックアドレスとを比較することで、前記署名されたデータが前記ルートチェーンから発送されたものであることを検証することを特徴としてよい。
【0007】
また他の側面によると、前記ブロックチェーンネットワークは、ルートチェーンによってデータ送信が管理される複数のリーフチェーンのうちの第1リーフチェーンを含み、前記データ認証方法は、前記少なくとも1つのプロセッサにより、前記生成されたパブリックアドレスを前記ルートチェーンに前記第1リーフチェーンと関連して設置されたリーフチェーンコントラクトに登録する段階をさらに含むことを特徴としてよい。
【0008】
また他の側面によると、前記ルートチェーンで前記署名されたデータと前記リーフチェーンコントラクトに登録されたパブリックアドレスとを比較することで、前記署名されたデータが前記第1リーフチェーンから発送されたものであることを検証することを特徴としてよい。
【0009】
また他の側面によると、前記ノードは、前記ブロックチェーンネットワークでの合意をなすように予め設定された複数のノードのうちの1つであることを特徴としてよい。
【0010】
さらに他の側面によると、前記署名されたデータが記録されたブロックが前記ブロックチェーンネットワークのチェーンに追加されることを特徴としてよい。
【0011】
ブロックチェーンネットワークに参加するコンピュータ装置で実現されるノードのデータ認証方法であって、前記コンピュータ装置が含む少なくとも1つのプロセッサにより、前記ノードのプライベートキーを利用して前記ノードのパブリックアドレスを生成する段階、前記少なくとも1つのプロセッサにより、前記ブロックチェーンネットワークから他のブロックチェーンネットワークに伝達しようとするデータを、前記ノードのプライベートキーを利用して署名する段階、および前記少なくとも1つのプロセッサにより、前記署名されたデータを前記他のブロックチェーンネットワークに伝達する段階を含み、前記パブリックアドレスを利用して前記署名されたデータが前記ブロックチェーンネットワークから発送されたものであることが検証されることを特徴とする、データ認証方法を提供する。
【0012】
コンピュータ装置と結合して前記方法をコンピュータ装置に実行させるためにコンピュータ読み取り可能な記録媒体に記録された、コンピュータプログラムを提供する。
【0013】
前記方法をコンピュータ装置に実行させるためのコンピュータプログラムが記録されていることを特徴とする、コンピュータ読み取り可能な記録媒体を提供する。
【0014】
ブロックチェーンネットワークのノードを実現するコンピュータ装置であって、前記コンピュータ装置で読み取り可能な命令を実行するように実現される少なくとも1つのプロセッサを含み、前記少なくとも1つのプロセッサにより、前記ブロックチェーンネットワークのチェーンを代表するプライベートキーを前記ブロックチェーンネットワークに参加する少なくとも1つの他のノードと共有し、前記プライベートキーを利用して前記ブロックチェーンネットワークのパブリックアドレスを生成し、前記ブロックチェーンネットワークから他のブロックチェーンネットワークに伝達しようとするデータを、前記ブロックチェーンネットワークに設置されたコントラクトによって前記プライベートキーで署名し、前記署名されたデータを前記コントラクトから他のブロックチェーンネットワークに伝達し、前記署名されたデータと前記パブリックアドレスとの比較により、前記署名されたデータが前記ブロックチェーンネットワークから発送されたものであることが検証されることを特徴とする、コンピュータ装置を提供する。
【0015】
ブロックチェーンネットワークのノードを実現するコンピュータ装置であって、前記コンピュータ装置で読み取り可能な命令を実行するように実現される少なくとも1つのプロセッサを含み、前記少なくとも1つのプロセッサにより、前記ノードのプライベートキーを利用して前記ノードのパブリックアドレスを生成し、前記ブロックチェーンネットワークから他のブロックチェーンネットワークに伝達しようとするデータを、前記ノードのプライベートキーを利用して署名し、前記署名されたデータを前記他のブロックチェーンネットワークに伝達し、前記パブリックアドレスを利用して前記署名されたデータが前記ブロックチェーンネットワークから発送されたものであることが検証されることを特徴とする、コンピュータ装置を提供する。
【発明の効果】
【0016】
ルートチェーンに基づいてリーフチェーンを追加する方式により、スケールアウトが可能なブロックチェーンで生成されるデータを認証するデータ認証方法およびシステムを提供することができる。
【図面の簡単な説明】
【0017】
【
図1】本発明の一実施形態における、ネットワーク環境の例を示した図である。
【
図2】本発明の一実施形態における、コンピュータ装置の例を示したブロック図である。
【
図3】本発明の一実施形態における、拡張が可能なブロックチェーンネットワークの概括的な構成の例を示した図である。
【
図4】本発明の一実施形態における、トランザクション処理システムの詳しい構成の例を示した図である。
【
図5】本発明の一実施形態における、新たなリーフチェーンを追加する過程の例を示したフローチャートである。
【
図6】本発明の一実施形態における、新たなサービスを追加する過程の例を示したフローチャートである。
【
図7】本発明の一実施形態における、サービスにコインを発行する過程の例を示したフローチャートである。
【
図8】本発明の一実施形態における、コイン交換過程の例を示したフローチャートである。
【
図9】本発明の一実施形態における、各チェーン間のスマートコントラクトによるコイン交換データの流れを示した図である。
【
図10】本発明の一実施形態における、署名可能コントラクトの設置過程の例を示した図である。
【
図11】本発明の一実施形態における、データを署名する過程の例を示した図である。
【
図12】本発明の一実施形態における、署名可能コントラクトの設置過程の他の例を示した図である。
【
図13】本発明の一実施形態における、データを署名する過程の他の例を示した図である。
【
図14】本発明の一実施形態における、コイン交換過程の他の例を示した図である。
【
図15】本発明の一実施形態における、データ認証方法の第1例を示したフローチャートである。
【
図16】本発明の一実施形態における、データ認証方法の第2例を示したフローチャートである。
【
図17】本発明の一実施形態における、データ認証方法の第3例を示したフローチャートである。
【
図18】本発明の一実施形態における、データ認証方法の第4例を示したフローチャートである。
【発明を実施するための形態】
【0018】
以下、実施形態について、添付の図面を参照しながら詳しく説明する。
【0019】
本発明の実施形態に係るデータ認証システムは、少なくとも1つのコンピュータ装置によって実現されてよい。コンピュータ装置においては、本発明の一実施形態に係るコンピュータプログラムがインストールされて実行されてよく、コンピュータ装置は、実行されたコンピュータプログラムの制御にしたがって本発明の一実施形態に係るデータ認証方法を実行してよい。上述したコンピュータプログラムは、コンピュータ装置と結合してデータ認証方法をコンピュータ装置に実行させるためにコンピュータ読み取り可能な記録媒体に記録されてよい。ここで説明したコンピュータプログラムは、独立する1つのプログラムパッケージの形態であってもよいし、独立する1つのプログラムパッケージの形態がコンピュータ装置に予めインストールされてオペレーティングシステムや他のプログラムパッケージと連係する形態であってもよい。
【0020】
図1は、本発明の一実施形態における、ネットワーク環境の例を示した図である。
図1のネットワーク環境は、複数の電子機器110、120、130、140、複数のサーバ150、160、およびネットワーク170を含む例を示している。このような
図1は、発明の説明のための一例に過ぎず、電子機器の数やサーバの数が
図1のように限定されることはない。また、
図1のネットワーク環境は、本実施形態に適用可能な環境のうちの一例を説明したものに過ぎず、本実施形態に適用可能な環境が
図1のネットワーク環境に限定されることはない。
【0021】
複数の電子機器110、120、130、140は、コンピュータ装置によって実現される固定端末や移動端末であってよい。複数の電子機器110、120、130、140の例としては、スマートフォン、携帯電話、ナビゲーション、PC(personal computer)、ノート型PC、デジタル放送用端末、PDA(Personal Digital Assistant)、PMP(Portable Multimedia Player)、タブレットなどがある。一例として、
図1では、電子機器1(110)の例としてスマートフォンを示しているが、本発明の実施形態において、電子機器1(110)は、実質的に無線または有線通信方式を利用し、ネットワーク170を介して他の電子機器120、130、140および/またはサーバ150、160と通信することのできる多様な物理的なコンピュータ装置のうちの1つを意味してよい。
【0022】
通信方式が限定されることはなく、ネットワーク170が含むことのできる通信網(一例として、移動通信網、有線インターネット、無線インターネット、放送網)を利用する通信方式だけではなく、機器間の近距離無線通信が含まれてもよい。例えば、ネットワーク170は、PAN(personal area network)、LAN(local area network)、CAN(campus area network)、MAN(metropolitan area network)、WAN(wide area network)、BBN(broadband network)、インターネットなどのネットワークのうちの1つ以上の任意のネットワークを含んでよい。さらに、ネットワーク170は、バスネットワーク、スターネットワーク、リングネットワーク、メッシュネットワーク、スター-バスネットワーク、ツリーまたは階層的ネットワークなどを含むネットワークトポロジのうちの任意の1つ以上を含んでもよいが、これらに限定されることはない。
【0023】
サーバ150、160それぞれは、複数の電子機器110、120、130、140とネットワーク170を介して通信して命令、コード、ファイル、コンテンツ、サービスなどを提供する1つ以上のコンピュータ装置によって実現されてよい。例えば、サーバ150は、ネットワーク170を介して接続した複数の電子機器110、120、130、140にサービス(一例として、ビデオ通話サービス、金融サービス、決済サービス、ソーシャルネットワークサービス、メッセージングサービス、検索サービス、メールサービス、コンテンツ提供サービス、および/または質疑応答サービスなど)を提供するシステムであってよい。
【0024】
図2は、本発明の一実施形態における、コンピュータ装置の例を示したブロック図である。上述した複数の電子機器110、120、130、140それぞれやサーバ150、160それぞれは、
図2に示したコンピュータ装置200によって実現されてよく、本発明の実施形態に係る方法は、このようなコンピュータ装置200によって実現されてよい。
【0025】
このとき、
図2に示すように、コンピュータ装置200は、メモリ210、プロセッサ220、通信インタフェース230、および入力/出力インタフェース240を含んでよい。メモリ210は、コンピュータ読み取り可能な記録媒体であって、RAM(random access memory)、ROM(read only memory)、ディスクドライブのような永続的大容量記録装置を含んでよい。ここで、ROMやディスクドライブのような永続的大容量記録装置は、メモリ210とは区分される別の永続的記録装置としてコンピュータ装置200に含まれてもよい。また、メモリ210には、オペレーティングシステムと、少なくとも1つのプログラムコードが記録されてよい。このようなソフトウェア構成要素は、メモリ210とは別のコンピュータ読み取り可能な記録媒体からメモリ210にロードされてよい。このような別のコンピュータ読み取り可能な記録媒体は、フロッピー(登録商標)ドライブ、ディスク、テープ、DVD/CD-ROMドライブ、メモリカードなどのコンピュータ読み取り可能な記録媒体を含んでよい。他の実施形態において、ソフトウェア構成要素は、コンピュータ読み取り可能な記録媒体ではない通信インタフェース230を通じてメモリ210にロードされてもよい。例えば、ソフトウェア構成要素は、ネットワーク170を介して受信されるファイルによってインストールされるコンピュータプログラムに基づいてコンピュータ装置200のメモリ210にロードされてよい。
【0026】
プロセッサ220は、基本的な算術、ロジック、および入出力演算を実行することにより、コンピュータプログラムの命令を処理するように構成されてよい。命令は、メモリ210または通信インタフェース230によって、プロセッサ220に提供されてよい。例えば、プロセッサ220は、メモリ210のような記録装置に記録されたプログラムコードにしたがって受信される命令を実行するように構成されてよい。
【0027】
通信モジュール230は、ネットワーク170を介してコンピュータ装置200が他の電子機器(一例として、上述した記録装置)と互いに通信するための機能を提供してよい。一例として、コンピュータ装置200のプロセッサ220がメモリ210のような記録装置に記録されたプログラムコードにしたがって生成した要求や命令、データ、ファイルなどが、通信インタフェース230の制御にしたがってネットワーク170を介して他の装置に伝達されてよい。これとは逆に、他の装置からの信号や命令、データ、ファイルなどが、ネットワーク170を経てコンピュータ装置200の通信インタフェース230を通じてコンピュータ装置200に受信されてよい。通信インタフェース230を通じて受信された信号や命令、データなどは、プロセッサ220やメモリ210に伝達されてよく、ファイルなどは、コンピュータ装置200がさらに含むことのできる記録媒体(上述した永続的記録装置)に記録されてよい。
【0028】
入力/出力インタフェース240は、入力/出力装置250とのインタフェースのための手段であってよい。例えば、入力装置は、マイク、キーボード、カメラ、またはマウスなどの装置を、出力装置は、ディスプレイ、スピーカのような装置を含んでよい。他の例として、入力/出力インタフェース240は、タッチスクリーンのように入力と出力のための機能が1つに統合された装置とのインタフェースのための手段であってもよい。入力/出力装置250は、コンピュータ装置200と1つの装置で構成されてもよい。
【0029】
また、他の実施形態において、コンピュータ装置200は、
図2の構成要素よりも少ないか多くの構成要素を含んでもよい。しかし、大部分の従来技術的構成要素を明確に図に示す必要はない。例えば、コンピュータ装置200は、上述した入力/出力装置250のうちの少なくとも一部を含むように実現されてもよいし、トランシーバやデータベースなどのような他の構成要素をさらに含んでもよい。
【0030】
図3は、本発明の一実施形態における、拡張が可能なブロックチェーンネットワークの概括的な構成の例を示した図である。
図3は、ルートチェーン(Root Chain)310、リーフチェーンA(Leaf Chain A)320、リーフチェーンB(Leaf Chain B)330、およびリレイヤ(Relayer)340を含むブロックチェーンネットワーク300の例を示している。ルートチェーン310とリーフチェーン320および330は、複数のコンピュータ装置が連結するネットワークを形成してよく、リレイヤ340は、少なくとも1つのコンピュータ装置によって実現されてよい。
【0031】
ブロックチェーンネットワーク300において、ルートチェーン310は、絶対信頼システムとして見なされてよく、それぞれのリーフチェーン320および330は、ルートチェーン310に自身が信頼システムであるということを証明しなければならない。このとき、それぞれのリーフチェーン320および330は、個別のサービスと連係してよく、新たなサービスが追加されるときには新たなリーフチェーンが追加されてもよい。言い換えれば、
図3の実施形態では、2つのリーフチェーン320および330を示しているが、3つ以上のリーフチェーンを含んでもよく、これは、ブロックチェーンの拡張が可能であることを意味してよい。ここで、「サービス」とは、同一または互いに異なる主体がネットワークを介して自身のユーザに提供するオンラインサービスを含んでよい。一例として、互いに異なる複数の銀行が提供するインターネットバンキングサービスそれぞれに対応する複数のリーフチェーンが構成されてよい。または、互いに異なる複数のソーシャルネットワークサービスそれぞれに対応する複数のリーフチェーンが構成されてもよい。それぞれのリーフチェーン320および330は、ルートチェーン310にブロックのハッシュを記録することによって信頼が承認されなければならない。一例として、マークルツリールートハッシュ(merkle tree root hash)が活用されてよい。
【0032】
ルートチェーン310ではユーザ間のコイン交換は行わず、コイン交換は、それぞれのリーフチェーン320および330の内部でなされるか、および/またはリーフチェーン320および330間でなされてよい。このとき、リーフチェーン320および330間のコイン交換は、リレイヤ340を介してルートチェーン310が仲裁および管理してよい。それぞれのリーフチェーン320および330には、少なくとも1つのDApp(Decentralized Application)が含まれてよい。ここで、DApp(Decentralized Application)とは、バックエンドコードが分散されたP2P(peer-to-peer)ネットワーク上で実行し(あるいは、データの呼び出しや登録をブロックチェーンデータベースに行い)、これをフロントエンドでインタフェースとして提供するアプリケーションを意味する。このとき、それぞれのリーフチェーン320および330では、DAppの必要により、チェーンまたはコイン交換とは関係のないスマートコントラクトを設置してよく、これをルートチェーン310では関与しない。それぞれのリーフチェーン320および330でチェーン間のコイン交換のためのプロトコルを有するスマートコントラクトを設置しようとする場合には、ルートチェーン310からスマートコントラクトを設置するための許可を得なければならない。ルートチェーン310から許可が得られなかったスマートコントラクトを利用したチェーン間では、コイン交換がなされないように制限されてよい。
【0033】
それぞれのリーフチェーン320および330の内部でのコイン交換は、ルートチェーン310を経る必要がなくそれぞれのリーフチェーン320および330で処理されてよく、処理された内容が含まれたすべてのブロックの要約情報(一例として、上述したマークルツリールートハッシュ)をルートチェーン310に記録してよい。この反面、リーフチェーン320および330間のコイン交換はルートチェーン310を介さなければならず、それぞれのリーフチェーン320および330のブロックとルートチェーン310のブロックにはコイン交換の処理に関する内容が記録されなければならない。このとき、リーフチェーン320および330間のコイン交換は、リレイヤ340を経てなされてよい。
【0034】
図4は、本発明の一実施形態における、ブロックチェーンネットワークの詳しい構成の例を示した図である。ブロックチェーンネットワーク300は、
図4に示すように、1つのルートチェーン310と複数のリーフチェーン320および330、さらにリレイヤ340で構成されてよい。
【0035】
ルートチェーン310は、ルートチェーン310のためのスマートコントラクトであるルートチェーンマネージャコントラクト(Root Chain Manager Contract)411を含んでよく、ブロックチェーンネットワーク300が含む複数のリーフチェーン320および330それぞれのためのスマートコントラクトを含んでよい。
図4の実施形態では、ルートチェーン310がリーフチェーンA(Leaf Chain A)320のためのスマートコントラクトであるリーフチェーンAコントラクト(Leaf Chain A Contract)412と、リーフチェーンB(Leaf Chain B)330のためのスマートコントラクトであるリーフチェーンBコントラクト(Leaf Chain B Contract)413を含む例を示している。
【0036】
また、リーフチェーン320および330それぞれは、DAppのためのスマートコントラクトを含んでよい。
図4の実施形態では、リーフチェーンA320がDAppコントラクト(DApp Contract)421を含み、リーフチェーンB330がDAppコントラクト431を含む例を示している。また、リーフチェーンA320は、リーフチェーンA320のためのスマートコントラクトであるリーフチェーンマネージャコントラクト(Leaf Chain Manager Contract)422を含んでよく、リーフチェーンB330は、リーフチェーンB330のためのスマートコントラクトであるリーフチェーンマネージャコントラクト432をさらに含んでよい。
【0037】
リレイヤ340は、ルートチェーン310とリーフチェーン320および330のブロック生成を観察しながら、ルートチェーン310とリーフチェーン320および330に記録されるか、および/または伝達が要求される情報を呼び出してよい。リレイヤ340は、プロデューサ(Producer)441、カフカ(Kafka)442、インタチェーンコンシューマ(InterChain Consumer)443、インタチェーンフェイルオーバー(InterChain Failover)444、データベース(Database)445を含んでよい。
【0038】
プロデューサ441は、ルートチェーン310を含むすべてのチェーンの新たに生成されたブロックの情報を収集してカフカ442に入力してよい。カフカ442は、一種のキューサーバであって、収集した情報をキューに保存して順に提供してよい。このとき、インタチェーンコンシューマ443は、チェーンごとに呼び出しが要求されるイベントをフィルタリングしてよい。イベントによって複数のフィルタリングが要求されてもよい。インタチェーンコンシューマ443は、各チェーンに呼び出しをするときに、署名のためにチェーンごとに個別のユーザを生成し、ユーザの権限をスマートコントラクトに記録してよい。
【0039】
インタチェーンコンシューマ443は、次の(1)~(7)のようなイベントなどを感知してよい。
【0040】
(1)リーフチェーンでの送金要請イベント
(1-1)インタチェーンコンシューマ443は、リーフチェーンでの送金要請イベントを感知し、ルートチェーンに送金要請内容を伝達してよい。
【0041】
(2)ルートチェーンでの送金要請イベント
(2-1)インタチェーンコンシューマ443は、ルートチェーンでの送金要請イベントを感知し、送金要請を受信するリーフチェーンに送金要請内容を伝達してよい。
【0042】
(2-2)インタチェーンコンシューマ443は、受信するリーフチェーンへの伝達が失敗したときに、送金要請を受信するリーフチェーンの識別情報を含む送金失敗情報をルートチェーンに伝達してよい。
【0043】
(3)ルートチェーンでの送金要請失敗イベント
(3-1)インタチェーンコンシューマ443は、送金を要請したリーフチェーンに送金失敗内容を伝達してよい。
【0044】
(4)リーフチェーンでの送金完了イベント
(4-1)インタチェーンコンシューマ443は、ルートチェーンに送金完了内容を伝達してよい。
【0045】
(5)ルートチェーンでの送金完了イベント
(5-1)インタチェーンコンシューマ443は、送金を要請したリーフチェーンに送金完了内容を伝達してよい。
【0046】
(6)ルートチェーンでのコイン発行イベント
(6-1)インタチェーンコンシューマ443は、コインが発行されるリーフチェーンに発行内容を伝達してよい。
【0047】
(7)リーフチェーンでのブロック生成イベント
(7-1)インタチェーンコンシューマ443は、ルートチェーンにブロックのマークルツリールートハッシュを伝達してよい。
【0048】
インタチェーンフェイルオーバー444は、(3-1)、(4-1)、(5-1)、(6-1)、および(7-1)が正常に伝達されるように障害克服機能を提供してよく、データベース445は、インタチェーンコンシューマ443およびインタチェーンフェイルオーバー444において受信および/または送信(伝達)する情報を保存するために活用されてよい。
【0049】
図5は、本発明の一実施形態における、新たなリーフチェーンを追加する過程の例を示したフローチャートである。
【0050】
段階510で、ブロックチェーンネットワーク300は、リーフチェーンを構築してよい。例えば、新たなリーフチェーンは、以下で説明する新たなサービスを追加するために構築されてよい。
【0051】
段階520で、ブロックチェーンネットワーク300は、リーフチェーンに、チェーン間またはコントラクト間のコイン送金を担当するリーフチェーンマネージャコントラクトを設置してよい。
【0052】
段階530で、ブロックチェーンネットワーク300は、ルートチェーンに、該当のリーフチェーンを処理することのできるコントラクト(以下、リーフチェーンコントラクト)を設置してよい。
【0053】
段階540で、ブロックチェーンネットワーク300は、設置されたルートチェーンのリーフチェーンコントラクトのアドレスをルートチェーンマネージャコントラクトに登録してよい。以下で説明する実施形態では、リーフチェーンの署名可能コントラクトのアドレスがルートチェーンマネージャコントラクトにさらに登録されてもよい。また他の実施形態では、リーフチェーンを代表するパブリックアドレスがルートチェーンマネージャコントラクトに登録されてもよい。
【0054】
段階550で、ブロックチェーンネットワーク300は、ルートチェーンのリーフチェーンコントラクトにアクセス可能なリレイヤユーザを追加してよい。
【0055】
段階560で、ブロックチェーンネットワーク300は、リーフチェーンのリーフチェーンマネージャコントラクトにアクセス可能なリレイヤユーザを追加してよい。
【0056】
このとき、段階550および段階560のリレイヤユーザは、同一するユーザであってもよいし、互いに異なるユーザであってもよい。リーフチェーンごとに、そしてルートチェーンとも互いに異なる個別のリレイヤユーザを設定して活用することが、保安上において有利となることもある。ここで、リレイヤユーザは、ブロックチェーンネットワーク300が提供するサービスのアカウントに対応してよい。
【0057】
図6は、本発明の一実施形態における、新たなサービスを追加する過程の例を示したフローチャートである。
【0058】
段階610で、ブロックチェーンネットワーク300は、リーフチェーンに該当のサービスのコントラクトを設置してよい。設置したコントラクトのアドレスは、該当のサービスを区分する値として使用されてよい。該当のサービスは、チェーン間のコイン交換プロトコルを備えたコントラクトであってよい。
【0059】
段階620で、ブロックチェーンネットワーク300は、リーフチェーンのリーフチェーンマネージャコントラクトに、該当のサービスに対して設置されたコントラクトのアドレスを登録してよい。例えば、
図5の段階520では、リーフチェーンに、チェーン間またはコントラクト間のコイン送金を担当するリーフチェーンマネージャコントラクトを設置することについて説明した。このようなリーフチェーンマネージャコントラクトにサービスのためのコントラクトのアドレスが登録されてよい。
【0060】
段階630で、ブロックチェーンネットワーク300は、設置されたコントラクトのアドレスをルートチェーンのルートチェーンマネージャコントラクトに登録してよい。このとき、設置されたコントラクトのアドレスは、ルートチェーンマネージャコントラクトの管理者権限によって登録されてよい。リーフチェーンのサービスに対して設置されたコントラクトのアドレスをルートチェーンに設置された該当のリーフチェーンのリーフチェーンコントラクトとともにルートチェーンマネージャコントラクトに登録すれば、ルートチェーンのリーフチェーンコントラクトにもリーフチェーンのサービスに対して設置されたコントラクトのアドレスが該当のリーフチェーンのサービスとして登録されてよい。
【0061】
図7は、本発明の一実施形態における、サービスにコインを発行する過程の例を示したフローチャートである。
【0062】
段階710で、ルートチェーンのルートチェーンマネージャコントラクトは、ルートチェーンに設置されたリーフチェーンコントラクトに登録されたサービスに対するコントラクトのアドレスに対してコイン発行を要請してよい。例えば、ルートチェーンのルートチェーンマネージャコントラクトは、ルートチェーンに設置されたリーフチェーンコントラクトによってコインを発行するためのサービスに対するコントラクトのアドレスによって該当のサービスを識別してよく、識別されたサービスに対してコイン発行イベントを発生させてよい。
【0063】
段階720で、インタチェーンコンシューマは、該当のサービスに対するコイン発行イベントを感知し、該当のリーフチェーンのリーフチェーンマネージャコントラクトにサービスのコイン発行を要請してよい。
【0064】
段階730で、リーフチェーンマネージャコントラクトは、該当のサービスを検索してコインを発行してよい。このとき、コインは、該当のサービスのコントラクトを設置するときに入力したサービスオペレータ(一例として、
図5の段階560で追加されたリレイヤユーザ)に発行されてよい。
【0065】
図8は、本発明の一実施形態における、コイン交換過程の例を示したフローチャートである。同一するチェーンの同一するサービスにおけるコイン交換は、該当のリーフチェーンのコイン交換のためのスマートコントラクトによってなされてよい。また、同一するチェーンの異なるサービス間のコインの交換は、該当のリーフチェーンのリーフチェーンマネージャコントラクトによってなされてよい。例えば、同一するチェーンの第1サービスから第2サービスへの送金は、リーフチェーンマネージャコントラクトが第1サービスの送金要請にしたがって第2サービスのコントラクトのアドレスを呼び出すことによってなされてよい。このとき、同一するリーフチェーンの異なるサービス間でコイン交換がなされるときは、コイン交換結果がルートチェーンに伝達されてよい。これは、リーフチェーンの各サービスが保有するコインの量の変更内容をルートチェーンが把握できるようにするためである。この反面、異なるチェーン間のコインの交換は、以下の段階810~890によってなされてよい。
図8の段階810~890は、
図4を参照しながら説明したリーフチェーンA320とリーフチェーンB330間のコイン交換を例示して説明する。
【0066】
段階810で、リーフチェーンA320は、ユーザaの、リーフチェーンB330のユーザbに対するコイン交換要請(送金要請)を受信してよい。このとき、リーフチェーンA320は、ユーザaの残高などを把握し、コイン交換要請が正常な要請である場合にリーフチェーンA320のブロックに記録してよい。交換要請されたコイン(送金要請されたコイン)は、リーフチェーンA320が含むリーフチェーンマネージャコントラクトによってユーザaの残高から差し引かれてよく、使用できないようにロックされてよい。例えば、リーフチェーンA320のリーフチェーンマネージャコントラクトは、送金要請された金額だけユーザaの残高と送金要請するサービスの残高を確認した後、リーフチェーンA320の通貨量から差し引かれる金額が使用されないようにロックを設定してよい。差し引かれたユーザaの金額に関する情報は、エスクローコントラクトに記録されてよい。このような送金の成功に関する記録は、プロデューサ441によってカフカ442に記録されてよい。送金要請が正常でない場合、リーフチェーンA320は、送金要請の失敗内容をブロックに記録してよい。また、リーフチェーンA320は、送金要請が失敗したときにイベントを記録しないことにより、送金が発生しないようにしてよい。
【0067】
段階820で、インタチェーンコンシューマ443は、リーフチェーンA320からリーフチェーンB330への送金要請イベントを感知し、ルートチェーン310に該当の送金要請を伝達してよい。送金要請イベントの感知は、プロデューサ441の取引収集によって感知されてよく、インタチェーンコンシューマ443は、感知された送金要請イベントの感知に応答してルートチェーン310に該当の送金要請を伝達してよい。
【0068】
段階830で、ルートチェーン310は、リーフチェーンA320で発行された総コイン量を、送金要請情報を利用することで分析することによって該当の送金要請が正常な要請であるかを確認し、該当の送金要請が正常な要請である場合は、リーフチェーンA320からリーフチェーンB330へのコイン交換要請をブロックに記録してよい。交換要請は、送金するコイン量だけ使用されないようにロックされてよい。また、ルートチェーン310は、該当の送金要請が正常な要請でない場合は、失敗内容をブロックに記録してよい。失敗として記録された送金要請は、再びインタチェーンコンシューマ443で送金失敗イベントとして感知されてリーフチェーンA320に伝達されてよく、送金失敗イベントを受信したリーフチェーンA320は、ロックされたコインを解除して再びユーザaに返還してよい。
【0069】
段階840で、インタチェーンコンシューマ443は、ルートチェーン310からリーフチェーンB330への送金要請イベントを感知し、リーフチェーンB330に該当の送金要請を伝達してよい。リーフチェーンB330が正常に作動せずに呼び出しが失敗する場合は、再びルートチェーン310にリーフチェーンB330のシステム異常による伝達失敗内容を送信してよい。失敗として記録された要請は、再びインタチェーンコンシューマ443で送金失敗イベントとして感知されてリーフチェーンA320に伝達されてよく、送金失敗イベントを受信したリーフチェーンA320は、ロックされたコインを解除して再びユーザaに返還してよい。
【0070】
段階850で、リーフチェーンB330は、該当の送金要請が正常な要請である場合は、ユーザbにコインを送金し、リーフチェーンB330の全体通貨量を送金されたコイン量だけ増加させてよい。送金要請が失敗する場合には、失敗内容をブロックに記録してよい。
【0071】
段階860で、インタチェーンコンシューマ443は、リーフチェーンBの送金完了結果をイベントとして感知し、ハッシュと成功の可否をルートチェーン310に伝達してよい。
【0072】
段階870で、ルートチェーン310は、送金結果を受信して送金失敗と送金成功にしたがって処理してよく、その結果をハッシュとともにブロックに記録してよい。送金が成功した場合、ルートチェーン310は、ロックされたコイン送金要請を解除してリーフチェーンA320からリーフチェーンB330への送金を行い、それぞれの通貨量を変更してよい。送金が失敗した場合、ルートチェーン310は、ロックされたコイン送金要請を解除して再びリーフチェーンA320に返還してよい。
【0073】
段階880で、インタチェーンコンシューマ443は、ルートチェーン310で処理した送金結果イベントを感知し、リーフチェーンA320にその結果を伝達してよい。
【0074】
段階890で、リーフチェーンA320は、送金結果を受信し、成功の場合は、ロックされたコインを解除してリーフチェーンA320の全体通貨量を調節(全体通貨量から送金金額だけ差し引く)してよい。送金が失敗した場合は、リーフチェーンA320は、ロックされたコインを解除してユーザaに返還してよい。リーフチェーンA320は、このような送金結果を、ルートチェーン310に記録されたハッシュとともにブロックに記録してよい。
【0075】
図9は、本発明の一実施形態における、各チェーン間のスマートコントラクトによるコイン交換データの流れを示した図である。
【0076】
(1)ユーザaのコイン交換要請をリーフチェーンA320のDApp1(920)が受信すれば、DApp1(920)は、リーフチェーンマネージャコントラクトA910に交換要請をしてよい。リーフチェーンマネージャコントラクトA910は、交換取引ハッシュ(eTxHash)を生成し、交換取引ハッシュ、送金しようとするユーザa(の識別子)とサービスa(の識別子)、送金を受けるサービスb(の識別子)とユーザb(の識別子)、金額情報(送金金額)、および/または要請時間を記録(送金要請記録(エスクロー情報)を生成)してよい。このとき、リーフチェーンマネージャコントラクトA910は、DApp1(920)のコントラクトの全体通貨量からユーザaの保有金額差し引いてよい。
【0077】
(2)プロデューサ441は、(1)で生成された取引を収集してよく、インタチェーンコンシューマ443は、ルートチェーン310のリーフチェーンAコントラクト412に送金を要請してよい。
【0078】
(3)リーフチェーンAコントラクト412は、ルートチェーンマネージャコントラクト411によって送金要請情報をルートチェーン310に対して個別に記録してよい。このとき、リーフチェーンマネージャAコントラクト412が管理するDApp1(920)の全体通貨量を送金金額だけ差し引いてよい。
【0079】
(4)プロデューサ441は、(3)で生成された取引を収集してよく、インタチェーンコンシューマ443は、送金を受けるサービスがあるリーフチェーンB330のリーフチェーンマネージャコントラクトB940に送金を要請してよい。
【0080】
(5)リーフチェーンB330のリーフチェーンマネージャコントラクトB940は、送金しようとするサービスであるDApp3(950)を呼び出し、DApp3(950)のコントラクトからユーザbに送金がなされるようにしてよい。このとき、DApp3(950)のコントラクトは、リーフチェーンB330の全体通貨量も増加させてよい。
【0081】
(6)プロデューサ441は、(5)で生成された取引を収集してよく、インタチェーンコンシューマ443は、ルートチェーン310のリーフチェーンBコントラクト413に送金完了を要請してよい。
【0082】
(7)ルートチェーン310のリーフチェーンBコントラクト413は、ルートチェーンマネージャコントラクト411に該当の送金要請のエスクロー(送金要請記録)情報をインポートして送金完了を処理してよい。送金が成功した場合、リーフチェーンBコントラクト413が管理するDApp3950では送金金額分だけリーフチェーンB330の全体通貨量を増加させててよく、ルートチェーン310のルートチェーンマネージャコントラクト411から該当の送金要請記録が削除されてよい。送金が失敗した場合、リーフチェーンAコントラクト412に登録された、送金要請したサービスであるDApp1(920)では送金金額分だけリーフチェーンA320の全体通貨量を再び増加させてよく、その後、ルートチェーン310のルートチェーンマネージャコントラクト411から該当の送金要請記録が削除されてよい。
【0083】
(8)プロデューサ441は、(7)で生成された取引を収集してよく、インタチェーンコンシューマ443は、送金したリーフチェーンA320のリーフチェーンマネージャコントラクトA910に送金完了を要請してよい。
【0084】
(9)リーフチェーンA320のリーフチェーンマネージャコントラクトA910は、送金完了情報を受信し、該当の交換取引ハッシュが完了したことを記録し、送金要請記録にある該当の要請を削除してよい。送金が失敗した場合、リーフチェーンマネージャコントラクトA910は、送金要請記録にある金額をユーザaに再び返還してよく、DApp1(920)の全体通貨量も送金金額分だけ再び増加させた後、送金要請記録から該当の要請を削除してよい。
【0085】
実施形態によって、リレイヤは、チェーンごとに存在してもよい。例えば、
図4を参照しながら説明したように、1つのルートチェーン310と2つのリーフチェーン320および330が存在する場合、合計3つのチェーンのための3つのリレイヤが構成されてもよい。この場合、ルートチェーン310のリレイヤは、2つのリーフチェーン320および330との要請、データ、および/またはイベントの伝達を処理してよく、2つのリーフチェーン320および330それぞれのリレイヤは、ルートチェーン310との要請、データ、および/またはイベントの伝達を処理してよい。このとき、リーフチェーンのためのリレイヤの談合を防ぐために、リレイヤそれぞれと連結するチェーンは、予め設定された時間周期(一例として、ブロック時間周期)ごとに動的に変更されてよい。このような実施形態において、ハッシュは、ハッシュ時間ロックコントラクトにより、チェーン間を移動するときにリレイヤによって交換取引が中間に強奪あるいは変調されないようにしてよい。このようなハッシュ時間ロックは、ユーザが交換取引の結果を直接確認することのできる時間を提供するために利用されてよい。また、リレイヤが意図しない重複支払を防ぐための唯一の識別子として個別の交換取引識別子が活用されてよい。このような交換取引識別子は、リーフチェーン間の価値移動がある場合、交換取引を唯一に識別してトラッキングするために活用されてよい。
【0086】
このようなブロックチェーンネットワーク300でチェーン間にデータを伝達するときに、伝達するシステムで伝達するデータを変調することがある。一例として、リーフチェーンA320からルートチェーン310にデータを伝達するときに、リーフチェーンA320でデータを変調する可能性が存在する。特に、リーフチェーンをパブリックブロックチェーンの形態に確張するためにリーフチェーンごとにリレイヤが実現される場合、このようなリレイヤに対する依存度を減らし、プロトコル端でデータ認証の問題を解決する必要がある。このために、ブロックチェーンネットワーク300は、以下のような5つの要求事項を有する。
【0087】
1.ベースコインのチェーン間の送金が可能でなければならない。ここで、ベースコインとは、ブロックチェーンネットワーク300の固有のコイン体系で使用されるコインを意味してよい。
【0088】
2.ルートチェーンがすべてのチェーンのベースコインを管理しなければならない。このとき、ベースコインの管理は、チェーン間のベースコインの送金を含んでよい。
【0089】
3.リレイヤがデータを変調して伝達できないようにしなければならない。
【0090】
4.リーフチェーンから送金を受けてユーザへの送金は成功したが、失敗メッセージを伝達することによって重複支払が発生しないようにしなければならない。
【0091】
5.送金でベースコインを受信するユーザの確認なく、チェーン間の送金が迅速になされなければならない。
【0092】
このような要求事項のために、ルートチェーンでは、権限をもつユーザによってベースコインの鋳造(mint)と焼却(burn)が発生するようにしてよい。または、権限をもつユーザがマルチシグウォレットによって確認を受けてベースコインを発行または焼却させることができるようにしてよい。このとき、リーフチェーンでは、ルートチェーンでコイン発行要請を受ける場合に発行を実行してよい。また、リーフチェーンから他のリーフチェーンに送金を行う場合、2つのリーフチェーンではルートチェーンの認証された情報が伝達されたことを確認した後に鋳造と焼却が実行されてよい。例えば、ベースコインを送金するリーフチェーンでは該当のベースコインに対する焼却を実行してよく、ベースコインを受信するリーフチェーンでは該当のベースコインに対する鋳造を実行してよい。
【0093】
一方、リレイヤのデータ変調を防ぐためには、伝達しようとするデータが変調されないようにしなければならない。以下では、データの変調を遮断するための方法について説明する。
【0094】
1つ目の方法では、伝達しようとする原本データを署名してよい。データを送信する主体(from user)がデータを受信しようとするチェーンにおいて既知のユーザである場合は、署名された原本データに基づいて原本データの変調状態を確認してよい。このために、コントラクトは、コントラクト自身のプライベートキーをもつ状態で生成されてよく、プライベートキーに対応するパブリックキーを公開してよい。このとき、コントラクトから他のチェーンに伝達が必要な情報を署名してイベントとして記録してよく、したがって、原本データが該当のコントラクトから処理されたということを証明することができる。例えば、コントラクトは、原本データと自身のコントラクトアドレスをコントラクトのプライベートキーによって署名してよい。この場合、任意のユーザは、コントラクトのプライベートキーに対応するパブリックキーを利用して署名された原本データを検証してよく、すべてのチェーンで唯一に生成される該当のコントラクトのコントラクトアドレスにより、該当のコントラクトによってデータが伝達されたことが証明されてよい。しかし、1つ目の方法では、コントラクトのプライベートキーはコントラクトのデータベースに保存されなければならず、ブロックチェーンネットワークでデータベースは共有およびオープンされるため、チェーンのすべてのノードにプライベートキーが共有され、したがって、これ以上プライベートキーではなくなる。
【0095】
2つ目の方法では、プライベートキーをコントラクトに保存するのではなく、1つのチェーンを代表するプライベートキーを、同じチェーン内で合意をなすノードであるCノードと共有し、チェーン認証が要求されるときに使用できるようにしてよい。一例として、各チェーンは、合意のためのn(一例として、nは4~8)個のCノードがプライベートキーを共有して維持してよい。ユーザや他のコントラクトは、該当のチェーンのためのシステム(一例として、該当のチェーンに設置されたシステムコントラクト)にデータの署名を要求してよく、システムは、要求されたデータに署名し、署名されたデータを提供してよい。このとき、該当のチェーンのコントラクトは、データの署名と伝達に対するイベントを記録してよく、リレイヤを経て他のチェーンに署名されたデータを伝達してよい。例えば、ルートチェーンでルートチェーンのプライベートキーと対をなすパブリックキーによって生成される識別値であるパブリックアドレスは、リーフチェーンのジェネシスブロックに記録されることにより、リーフチェーンで変調することができなくなる。ルートチェーンによってプライベートキーで署名されたデータは、リーフチェーンでジェネシスブロックに記録されたパブリックアドレスと比較することにより、署名されたデータがルートチェーンから発送されたものであることを検証することができる。これと同じように、リーフチェーンも、リーフチェーンのプライベートキーによって生成されるパブリックアドレスを、ルートチェーンに該当のリーフチェーンと関連して設置されたリーフチェーンコントラクトに登録してよい。この場合、ルートチェーンは、リーフチェーンによってリーフチェーンのプライベートキーで署名されたデータと該当のリーフチェーンコントラクトに登録されたパブリックアドレスとを比較することにより、署名されたデータが該当のリーフチェーンから発送されたものであることを検証してよい。ただし、2つ目の方法は、合意のためのCノードでプライベートキーを共有することのできるプライベートブロックチェーンでは使用可能であるが、外部サービスの提供のために公開されるパブリックブロックチェーン(パブリックリーフチェーン)では使用が不可能である。
【0096】
3つ目の方法は、ルートチェーンのすべてのCノードそれぞれが合意のために有している固有のプライベートキーを活用する方法である。一例として、ルートチェーンが8つのCノードを含む場合は、8つのプライベートキーが存在してよい。この場合、該当のプライベートキーによって生成されるルートチェーンのすべてのCノードそれぞれのパブリックアドレスが、すべてのリーフチェーンそれぞれに保存されてよい。このとき、ルートチェーンで生成されたものであることを確認する必要のあるデータは、ルートチェーンのリーダーノードが自身のプライベートキーで署名してブロックに記録してよく、該当のデータがリーフチェーンに伝達されるようにしてよい。ここで、リーダーノードは、Cノードのうちから任意に選定されたノードであってよく、必要によっては、他のCノードのうちの1つに変更されてよい。この場合、リーフチェーンは、署名されたデータとリーフチェーンに保存されたパブリックアドレスとを比較することにより、署名されたデータがルートチェーンから発送されたものであることを検証することができる。上述したように、リーフチェーンは、ルートチェーンのすべてのCノードのパブリックアドレスが分かっているため、署名されたデータを検証するときに得られるパブリックアドレスが既知のルートチェーンのCノードのパブリックアドレスのうちの1つであるかを検証することにより、署名されたデータを検証してよい。ただし、ルートチェーンが含むCノードの数が公開され、Cノードをルートチェーンに追加または削除などの変更が発生する場合は、すべてのリーフチェーンそれぞれに記録された情報は更新しなければならない。特に、外部サービスのために割り当てられたパブリックブロックチェーン(パブリックリーフチェーン)に記録された情報は直接更新することができないため、該当のパブリックブロックチェーンで記録された情報を更新するように情報を提供(パブリックアドレスの更新を可能にするための情報を公知)しなければならない。これと同じように、リーフチェーンのCノードも、合意のために固有のプライベートキーを有してよく、このようなプライベートキーが活用されてよい。この場合、Cノードそれぞれのパブリックアドレスは、ルートチェーンに該当のリーフチェーンと関連して設置されたリーフチェーンコントラクトに登録されてよく、ルートチェーンは、署名されたデータと該当のリーフチェーンコントラクトに登録されたパブリックアドレスとを比較することにより、署名されたデータが該当のリーフチェーンから発送されたものであることを検証してよい。
【0097】
4つ目の方法は、ルートチェーンのすべてのCノードで生成されるパブリックアドレスの組み合わせによって生成される代表パブリックアドレス(Common Public Address)をすべてのリーフチェーンそれぞれに共有する方法である。この場合にも、ルートチェーンでCノードを追加または削除するなどの変更が発生する場合は、すべてのリーフチェーンそれぞれに記録された情報を更新しなければならないが、リーフチェーンそれぞれで共有しなければならないパブリックアドレスを代表パブリックアドレス1つに減らすことができ、ルートチェーンが含むCノードの数は公開されないという長所がある。ただし、代表パブリックアドレスが変更されるため、変更時には保安に注意しなければならない。4つ目の方法では、ルートチェーンのすべてのCノードのパブリックアドレスそれぞれをすべてのCノードそれぞれがすべて分かっていなければならない。また、4つ目の方法では、プライベートキーが複数あったとしても1つのパブリックアドレス(代表パブリックアドレス)を生成することができ、プライベートキーが1つ以上のコンファームによって暗号を解除することができるように、署名のためのアルゴリズムとこれを検証するアルゴリズムを修正したモジュールが要求される。
【0098】
5つ目の方法では、1つ目の方法を活用可能にするために、ブロックチェーンに次のような機能を追加する。5つ目の方法では、コントラクトがパブリックキーによってコントラクトアドレスを生成し、プライベートキーを暗号化してコントラクトが保存するようにしてよい。プライベートキーが分かっており、プライベートキーによってパブリックキーを得ることができ、パブリックキーによってコントラクトアドレスを生成することができる。このとき、署名のためのコントラクト(以下、署名可能コントラクト)は、1つのチェーンに1つだけが存在しても問題ない。例えば、署名可能コントラクトを設置するときに、暗号化されたプライベートキーとプライベートキーによって生成されるパブリックキーがパラメータとなって署名可能コントラクトに伝達されてよい。署名可能コントラクトは、受信したパブリックキーによってコントラクトアドレスを生成してよい。このとき、同じコントラクトアドレスがあれば、コントラクトアドレスの生成は失敗となる。暗号化されたプライベートキーは、以下で説明するパスワードによって復号されてよく、署名可能コントラクトによってデータベースに保存されてよい。このとき、任意のコントラクトがデータを署名しようとする場合、署名しようとするデータと署名可能コントラクトに保存された暗号化されたプライベートキーを復号することのできるパスワードをパラメータとして署名可能コントラクトに伝達してよい。このとき、ブロックチェーンですべての要請(一例として、HTTPS(Hypertext Transfer Protocol Secure)を利用した要請)による情報はブロックやログに記録される反面、パスワードはどこにも保存/記録されてはならない。したがって、5つ目の方法では、パスワードパラメータをブロックやログなどのどこにも保存/記録されないタイプ(以下、「シーキュアタイプ」)として定義してよい。このようなパスワードパラメータは、該当のブロックチェーンで支援されてよい。この場合、署名可能コントラクトは、パスワードによって暗号化されたプライベートキーを復元した後、復元されたプライベートキーを利用して入力されたデータを署名してよく、署名した結果(署名されたデータ)を署名要請したコントラクトに返還してよい。署名可能コントラクトのコントラクトアドレスは、各リーフチェーンのジェネシスブロックに記録されてよい。ただし、5つ目の方法では、システム上でシーキュアタイプを個別に定義して活用しなければならず、暗号化されたプライベートキーとパブリックキーがシステム外部で生成されて提供されなければならず、プライベートキーが暗号化されて伝達されるため、プライベートキーが正常に生成されて伝達されるかどうかを確認することができない。ルートチェーンから送信されるデータであることをリーフチェーンが立証するために、リーフチェーンでは、該当のデータを署名した署名可能コントラクトがルートチェーンに設置されたコントラクトであるかをルートチェーンに照会して直ぐに把握してよく、該当の署名コントラクトがルートチェーンにコントラクトに存在するコントラクトであるということが立証されれば、署名されたデータがルートチェーンで生成または処理されたデータであるということが立証されるようになる。
【0099】
図10は、本発明の一実施形態における、署名可能コントラクトの設置過程の例を示した図である。
図10は、署名可能コントラクト1010が暗号化されたプライベートキー1020とパブリックキー1030をパラメータとして受信し、受信されたパブリックキー1030を利用してパブリックアドレスを生成してデータベース1040に保存する例を示している。言い換えれば、データベース1040には、暗号化されたプライベートキー1020とパブリックキー1030、さらにパブリックキー1030を利用して生成されたパブリックアドレスが保存されてよい。
【0100】
図11は、本発明の一実施形態における、データを署名する過程の例を示した図である。
図11は、署名可能コントラクト1010がユーザや他のコントラクト1110からの署名要請を受信する例を示している。このとき、署名要請は、署名するためのデータと、
図10で説明した、暗号化されたプライベートキー1020を復号するためのパスワードを含んでよい。この場合、署名可能コントラクト1010は、パスワードを利用して暗号化されたプライベートキー1020を復号してプライベートキーを得てよく、復号されたプライベートキーを利用してパラメータとして伝達されたデータを署名してよい。この後、署名可能コントラクト1010は、署名されたデータを結果として、ユーザや他のコントラクト1110に返還してよい。ここで、ユーザは、該当のブロックチェーンのノードに対応してよい。
【0101】
6つ目の方法では、5つ目の方法の署名可能コントラクトがブロックチェーンのシステムコントラクトによって自動設置されるようにしてよい。言い換えれば、ブロックチェーンのシステムコントラクトが設置されるときに、署名可能コントラクトもともに設置されるようにしてよい。例えば、リーダーノードのようにシステムコントラクトを最初に生成するノードが、プライベートキーを生成して署名可能コントラクトを設置してよい。生成されたプライベートキーは、署名可能コントラクトによって暗号化されてデータベースに保存されてよく、暗号化されたプライベートキーを復号するためのパスワードは、該当のノードのパブリックキーによって暗号化して該当のノードのローカルに保存されてよい。他のノードは、トランザクションをコピーし、最新のパスワードが分かるノードを検索してよい。このとき、他のノードは、検索されるノードに自身のパブリックキーを伝達してパブリックキーによって暗号化されたパスワードを受信し、該当の他のノードのローカルに保存してよい。各ノードは、署名を要請するときに、自身のパブリックキーによって自身のローカルに保存された暗号化されたパスワードを復号してパスワードを得てよく、得られたパスワードを署名要請関数のパラメータとして署名可能コントラクトに伝達してよい。要請は、ブロックチェーンで提供する署名APIまたは関数を利用して処理されてよい。署名可能コントラクトのパブリックアドレスは、各リーフチェーンのジェネシスブロックに記録されてよい。ルートチェーンから送信されるデータであることを立証するためには、署名可能コントラクトを活用してよい。
【0102】
図12は、本発明の一実施形態における、署名可能コントラクトの設置過程の他の例を示した図である。
図12は、ノードが生成したプライベートキーを署名可能コントラクト1210がノードのパブリックキー1220によって暗号化してデータベース1230に保存する例を示している。このとき、署名可能コントラクト1210は、暗号化されたプライベートキーを復号するためのパスワードをノードのパブリックキーによって暗号化して該当のノードに返還してよい。返還された暗号化されたパスワードは、ノードのローカルに保存されてよい。
【0103】
図13は、本発明の一実施形態における、データを署名する過程の他の例を示した図である。
図13は、ノード1310が暗号化されたパスワードをノード1310のプライベートキーによって復号してパスワードを取得した後、取得したパスワードをパラメータとしてシステム1320に伝達してデータの署名を要請する例を示している。ここで、システム1320は、ブロックチェーンシステムに対応してよい。このとき、署名しようとするデータも、パラメータとしてともにシステム1320に伝達してよい。この場合、システム1320は、パスワードを利用して署名可能コントラクト1210にデータの署名を要請してよい。この場合、署名可能コントラクト1210は、パスワードによって暗号化されたプライベートキーを復号してよく、復号されたプライベートキーを利用してデータを署名した後、署名されたデータを返還してよい。システム1320は、返還された署名されたデータをノード1310に伝達してよい。
【0104】
一方、リーフチェーンでは、内部で処理した内容と伝達する内容とが異ならないようにしなければならない。このために、送金を処理したトランザクションのマークルツリーの証明ハッシュリストを、処理結果とともにイベントとして伝達するようにしなければならない。監視子が存在するのであれば、マークルツリーの証明情報まで伝達するかを決定する必要がある。伝達するイベント情報をコントラクトのプライベートキーによって署名してイベントに記録してよく、この場合、該当のトランザクションが処理されたということは分かるが、処理内容を変調したかどうかは把握することができないため、監視子が必要となることもある。このとき、監視子は、該当のブロックが存在するかどうかと、該当のトランザクションがイベントとして伝達したデータとともに、送金が成功したか失敗したかを確認してよい。監視子によって不正が発見されれば、該当のリーフチェーンには不利益が提供されてよい。ここで、監視子は、上述した機能を実行するノードの形態で実現されてよい。
【0105】
図14は、本発明の一実施形態における、コイン交換方法の他の例を示した図である。同一するチェーンの同一するサービスにおけるコイン交換や、同一するチェーンの異なるサービス間のコイン交換については、
図8の実施形態を参照しながら説明したとおりである。
図14は、
図8の実施形態とは異なる実施形態であって、ルートチェーン1410、リーフチェーン1(1420)、およびリーフチェーン2(1430)を示しており、リーフチェーン1(1420)のユーザ1がリーフチェーン2(1430)のユーザ2に送金を要請した場合を仮定する。
【0106】
過程1は、リーフチェーン1(1420)で送金要請が正常な要請であるかを確認した後、問題がない場合には、送金要請に関する情報をルートチェーン1410に伝達する過程の例である。
【0107】
過程2は、ルートチェーン1410で送金要請が正常な要請であるかを確認した後、問題がない場合には、リーフチェーン2(1430)に送金が可能であるかに関する確認要請を送信する過程の例である。
【0108】
過程3は、リーフチェーン2(1430)で送金要請が受信可能な要請であるかを確認した後、問題がない場合には、ルートチェーン1410に受信が可能であるという応答を送信する過程の例である。
【0109】
過程4は、ルートチェーン1410がリーフチェーン1(1420)およびリーフチェーン2(1430)それぞれに、送金金額を差し引いたり増額したりする領収証を発行する過程の例である。過程4.1は、ルートチェーン1410がリーフチェーン1(1420)に送金金額を差し引くための領収証を発行する過程の例であり、過程4.2は、ルートチェーン1410がリーフチェーン2(1430)に送金金額を増額するための領収証を発行する過程の例である。各チェーンでは重複差引や重複増額が発生しないように管理されてよい。
【0110】
以下では、スマートコントラクトの構成について説明する。
【0111】
スマートコントラクトは、ルートチェーンの場合には、
図4を参照しながら説明したように、ルートチェーンマネージャコントラクトを含んでよく、各リーフチェーンそれぞれのためのコントラクトを含んでよい。一方、リーフチェーンは、サービスDAppが存在する場合にはリーフチェーンマネージャコントラクトとDAppコントラクトを含んでよく、サービスDAppが存在しない場合にはリーフチェーンマネージャコントラクトを含んでよい。ルートチェーンマネージャコントラクトとリーフチェーンマネージャコントラクトは、システムコントラクトであって、ブロックチェーンが設置されるときに自動で設置されてよい。リレイヤは、イベントログをフィルタリングしてそれぞれのチェーンに伝達してよい。各チェーンは、リレイヤがデータを変調できないように管理してよい。上述したように、ルートチェーンは、各リーフチェーンのプライベートキーによって生成されたパブリックアドレスを保存してよく、リーフチェーンは、ルートチェーンの固有のプライベートキーによって生成されるパブリックアドレスを、ジェネシスブロックを生成するときに記録してよい。リレイヤが伝達する情報をすべてルートチェーンの固有のプライベートキーによって署名した情報もともに伝達されるようにしてよい。
【0112】
また、リーフチェーンにサービスDAppが存在する場合、ユーザは、DAppの「exchange」を定義した関数を呼び出してよい。このとき、DAppでは、icxに定義された「exchange」を呼び出してよく、これにより、icxクラスで「exchange」機能が実現される必要がある。
【0113】
一方、チェーン間の送金のために必要な情報は、以下のとおりとなる。
【0114】
・from user:送金をするユーザ
・origin:送金要請をしたサービスまたはリーフチェーン
・to user:送金を受けるユーザ
・destination:送金を受けるサービスまたはリーフチェーン
・value:送金金額(ベースコイン)
・eTxHash:送金トランザクションハッシュ
・message:送金メッセージ
・eSignature:データの伝達を要請したリーフチェーンの署名
ここで、リーフチェーンの署名は、from user、origin、to user、destination、value、eTxHash、messageを組み合わせて署名した値を含んでよい。
【0115】
図15は、本発明の一実施形態における、データ認証方法の第1例を示したフローチャートである。本実施形態に係るデータ認証方法は、ブロックチェーンネットワークのノードを実現するコンピュータ装置200によって実行されてよい。例えば、コンピュータ装置200のプロセッサ220は、メモリ210が含むオペレーティングシステムのコードと、少なくとも1つのプログラムのコードとによる制御命令を実行するように実現されてよい。ここで、プロセッサ220は、コンピュータ装置200に記録されたコードが提供する制御命令にしたがってコンピュータ装置200が
図15の方法に含まれる段階1510~1540を実行するようにコンピュータ装置200を制御してよい。
【0116】
段階1510で、コンピュータ装置200は、ブロックチェーンネットワークのチェーンを代表するプライベートキーを、ブロックチェーンネットワークでの合意に参加する少なくとも1つの他のノードと共有してよい。このとき、ノードは、ブロックチェーンネットワークでの合意をなすように予め設定された複数のノードのうちの1つであってよく、少なくとも1つの他のノードも、ブロックチェーンネットワークでの合意をなすように予め設定された複数のノードに含まれてよい。
【0117】
本実施形態に係るデータ認証方法は、上述した2つ目の方法で、チェーンを代表する1つのプライベートキーを該当のチェーンのCノードが共有し、これをチェーン認証に活用する過程を説明する。言い換えれば、1つのノードを実現するコンピュータ装置200はコンピュータ装置200によって実現されるノードが参加するブロックチェーンネットワークのチェーンを代表するプライベートキーを少なくとも1つの他のノードと共有してよい。
【0118】
段階1520で、コンピュータ装置200は、プライベートキーを利用して生成されるパブリックキーを利用してブロックチェーンネットワークのパブリックアドレスを生成してよい。上述したように、パブリックアドレスは、プライベートキーによって署名されたデータが該当のブロックチェーンネットワークから発送されたものであることを検証するために提供されてよい。
【0119】
一実施形態として、ブロックチェーンネットワークは、複数のリーフチェーン間のデータ送信を管理するルートチェーンを含んでよい。この場合、コンピュータ装置200は、生成されたパブリックアドレスを複数のリーフチェーンそれぞれのジェネシスブロックに記録してよい。このとき、署名されたデータが送信されたリーフチェーンで署名されたデータとリーフチェーンのジェネシスブロックに記録されたパブリックアドレスとを比較することで、署名されたデータがルートチェーンから発送されたものであることを検証してよい。
【0120】
他の実施形態として、ブロックチェーンネットワークは、ルートチェーンによってデータ送信が管理される複数のリーフチェーンのうちの第1リーフチェーンを含んでよい。この場合、コンピュータ装置200は、生成されたパブリックアドレスを、ルートチェーンに第1リーフチェーンと関連して設置されたリーフチェーンコントラクトに登録してよい。このとき、ルートチェーンで署名されたデータと該当のリーフチェーンコントラクトに登録されたパブリックアドレスをと比較することで、署名されたデータが第1リーフチェーンから発送されたものであることを検証してよい。
【0121】
段階1530で、コンピュータ装置200は、ブロックチェーンネットワークから他のブロックチェーンネットワークに伝達しようとするデータを、ブロックチェーンネットワークに設置されたコントラクトによってプライベートキーで署名してよい。このとき、署名されたデータが記録されたブロックがブロックチェーンネットワークのチェーンに追加されてよい。
【0122】
段階1540で、コンピュータ装置200は、署名されたデータをコントラクトによって他のブロックチェーンネットワークに伝達してよい。このとき、署名されたデータとパブリックアドレスとの比較により、署名されたデータがブロックチェーンネットワークから発送されたものであることが検証されてよい。
【0123】
図16は、本発明の一実施形態における、データ認証方法の第2例を示したフローチャートである。本実施形態に係るデータ認証方法は、ブロックチェーンネットワークのノードを実現するコンピュータ装置200によって実行されてよい。例えば、コンピュータ装置200のプロセッサ220は、メモリ210が含むオペレーティングシステムのコードと、少なくとも1つのプログラムのコードとによる制御命令を実行するように実現されてよい。ここで、プロセッサ220は、コンピュータ装置200に記録されたコードが提供する制御命令にしたがってコンピュータ装置200が
図16の方法に含まれる段階1610~1630を実行するようにコンピュータ装置200を制御してよい。
【0124】
段階1610で、コンピュータ装置200は、ノードのプライベートキーを利用してノードのパブリックアドレスを生成してよい。ノードのプライベートキーは、ノードがブロックチェーンネットワークで合意のために有している固有のプライベートキーであってよい。
【0125】
段階1620で、コンピュータ装置200は、ブロックチェーンネットワークから他のブロックチェーンネットワークに伝達しようとするデータを、ノードのプライベートキーを利用して署名してよい。このとき、署名されたデータが記録されたブロックがブロックチェーンネットワークのチェーンに追加されてよい。
【0126】
段階1630で、コンピュータ装置200は、署名されたデータを他のブロックチェーンネットワークに伝達してよい。このとき、前記パブリックアドレスを利用することで、前記署名されたデータが前記ブロックチェーンネットワークから発送されたものであることが検証されてよい。
【0127】
一実施形態において、ブロックチェーンネットワークは、複数のリーフチェーン間のデータ送信を管理するルートチェーンを含んでよい。このとき、ブロックチェーンネットワークで合意をなすように予め設定された複数のノード(本実施形態に係るコンピュータ装置200が実現するノードを含む複数のノード)それぞれで生成されたパブリックアドレスが複数のリーフチェーンそれぞれに保存されてよい。この場合、署名されたデータが送信された第1リーフチェーンで署名されたデータと第1リーフチェーンに保存された複数のノードそれぞれのパブリックアドレスとを比較することで、署名されたデータがルートチェーンから発送されたものであることを検証してよい。
【0128】
他の実施形態において、ブロックチェーンネットワークは、ルートチェーンによってデータ送信が管理される複数のリーフチェーンのうちの第1リーフチェーンを含んでよい。このとき、ブロックチェーンネットワークで合意をなすように予め設定された複数のノード(本実施形態に係るコンピュータ装置200が実現するノードを含む複数のノード)それぞれで生成されたパブリックアドレスが、ルートチェーンに第1リーフチェーンと関連して設置されたリーフチェーンコントラクトに登録されてよい。この場合、ルートチェーンで署名されたデータとリーフチェーンコントラクトに登録されたパブリックアドレスとを比較することで、署名されたデータが第1リーフチェーンから発送されたものであることを検証してよい。
【0129】
また他の実施形態において、ブロックチェーンネットワークは、複数のリーフチェーン間のデータ送信を管理するルートチェーンを含んでよい。このとき、ブロックチェーンネットワークで合意をなすように予め設定された複数のノード(本実施形態に係るコンピュータ装置200が実現するノードを含む複数のノード)それぞれで生成されたパブリックアドレスの組み合わせによって生成される代表パブリックアドレスが、複数のリーフチェーンそれぞれに保存されてよい。この場合、署名されたデータが送信された第1リーフチェーンで署名されたデータと第1リーフチェーンに保存された代表パブリックアドレスとを比較することで、署名されたデータがルートチェーンから発送されたものであることを検証してよい。
【0130】
また他の実施形態において、ブロックチェーンネットワークは、ルートチェーンによってデータ送信が管理される複数のリーフチェーンのうちの第1リーフチェーンを含んでよい。このとき、ブロックチェーンネットワークで合意をなすように予め設定された複数のノード(本実施形態に係るコンピュータ装置200が実現するノードを含む複数のノード)それぞれで生成されたパブリックアドレスの組み合わせによって生成される代表パブリックアドレスが、ルートチェーンに第1リーフチェーンと関連して設置されたリーフチェーンコントラクトに登録されてよい。この場合、ルートチェーンで署名されたデータとリーフチェーンコントラクトに登録された代表パブリックアドレスとを比較することで、署名されたデータが第1リーフチェーンから発送されたものであることを検証してよい。
【0131】
図17は、本発明の一実施形態における、データ認証方法の第3例を示したフローチャートである。本実施形態に係るデータ認証方法は、ブロックチェーンネットワークのコントラクトによって動作するコンピュータ装置200によって実行されてよい。例えば、コンピュータ装置200のプロセッサ220は、メモリ210が含むオペレーティングシステムのコードと、少なくとも1つのプログラムのコードとによる制御命令を実行するように実現されてよい。ここで、プロセッサ220は、コンピュータ装置200に記録されたコードが提供する制御命令にしたがってコンピュータ装置200が
図17の方法に含まれる段階1710~1760を実行するようにコンピュータ装置200を制御してよい。ここで、少なくとも1つのプログラムコードは、少なくともブロックチェーンネットワークのコントラクトによるコードを含んでよい。
【0132】
段階1710で、コンピュータ装置200は、暗号化されたプライベートキーとプライベートキーで生成されるパブリックキーをパラメータとして受信してよい。
【0133】
段階1720で、コンピュータ装置200は、受信したパブリックキーによってコントラクトアドレスを生成してよい。
【0134】
段階1730で、コンピュータ装置200は、暗号化されたプライベートキーとコントラクトアドレスをデータベースに保存してよい。
【0135】
段階1740で、コンピュータ装置200は、署名するデータと暗号化されたプライベートキーを復号するためのパスワードをパラメータとして含む署名要請を受信してよい。ここで、パスワードは、ブロックチェーンネットワークのブロックや、いずれのログにも保存されないシーキュアタイプが定義されてよい。
【0136】
段階1750で、コンピュータ装置200は、署名要請に応答し、パスワードによって暗号化されたプライベートキーを復号し、復号されたプライベートキーによってデータを署名することで署名されたデータを生成してよい。このとき、署名されたデータが記録されたブロックが前記ブロックチェーンネットワークのチェーンに追加されてよい。
【0137】
段階1760で、コンピュータ装置200は、生成された署名されたデータを返還してよい。このとき、署名されたデータは、データの署名を要請したノードに返還されてよい。
【0138】
一実施形態において、ブロックチェーンネットワークは、複数のリーフチェーン間のデータ送信を管理するルートチェーンを含んでよい。このとき、コンピュータ装置200は、コントラクトアドレスを複数のリーフチェーンそれぞれのジェネシスブロックに記録してよい。この場合、署名されたデータを受信する第1リーフチェーンで署名されたデータと第1リーフチェーンのジェネシスブロックに記録されたコントラクトアドレスとを比較することで、署名されたデータがルートチェーンから発送されたものであることを検証してよい。
【0139】
他の実施形態において、ブロックチェーンネットワークは、ルートチェーンによってデータ送信が管理される複数のリーフチェーンのうちの第1リーフチェーンを含んでよい。このとき、コンピュータ装置200は、コントラクトアドレスがルートチェーンのデータベースに保存されるように、コントラクトアドレスをルートチェーンに提供してよい。この場合、ルートチェーンで署名されたデータとルートチェーンのデータベースに保存されたコントラクトアドレスとを比較することで、署名されたデータが第1リーフチェーンから発送されたものであることを検証してよい。
【0140】
図18は、本発明の一実施形態における、データ認証方法の第4例を示したフローチャートである。本実施形態に係るデータ認証方法は、ブロックチェーンネットワークのノードを実現するコンピュータ装置200によって実行されてよい。例えば、コンピュータ装置200のプロセッサ220は、メモリ210が含むオペレーティングシステムのコードと、少なくとも1つのプログラムのコードとによる制御命令を実行するように実現されてよい。ここで、プロセッサ220は、コンピュータ装置200に記録されたコードが提供する制御命令にしたがってコンピュータ装置200が
図18の方法に含まれる段階1810~1860を実行するようにコンピュータ装置200を制御してよい。
【0141】
段階1810で、コンピュータ装置200は、ブロックチェーンネットワークのノードのプライベートキーを暗号化して保存してよい。ここで、ノードは、ブロックチェーンネットワークで最初に生成されるノードであってよく、このようなノードでブロックチェーンネットワークのシステムコントラクトを設置する過程において署名可能コントラクトを自動設置してよい。この過程において、ノードのプライベートキーが署名可能コントラクトに伝達されてよい。このとき、署名可能コントラクトは、設置過程で伝達されるノードのプライベートキーを暗号化して保存してよい。
【0142】
段階1820で、コンピュータ装置200は、暗号化されたプライベートキーを復号するためのパスワードをノードのパブリックキーによって暗号化して保存してよい。パスワードは、コンピュータ装置200がプライベートキーを暗号化する過程において暗号化されたプライベートキーを復号できるように生成されてよい。一例として、対称キーによってプライベートキーを暗号化した場合、対称キーや対称キーを得るための値がパスワードによって生成されてよい。
【0143】
段階1830で、コンピュータ装置200は、ノードのパブリックキーによって暗号化されたパスワードをノードに返還してよい。この場合、ノードは、暗号化されたパスワードを得てよい。このとき、暗号化されたパスワードは、ノードのパブリックキーによって暗号化されたため、ノードのプライベートキーによって暗号化されたパスワードを復号してパスワードを得ることができるようになる。一方、ブロックチェーンネットワークの他のノードは、暗号化されたパスワードが返還されたノードを検索して該当のノードに他のノードのパブリックキーを送信し、該当のノードから他のノードのパブリックキーによって暗号化されたパスワードを受信して他のノードに保存してよい。このような過程により、ブロックチェーンネットワークの他のノードも、暗号化されたプライベートキーを復号するためのパスワードを得ることができるようになる。この反面、プライベートキー自体は、暗号化された状態で保存されるため表示されなくてよい。一方、パスワードは、ブロックチェーンネットワークのブロックや、いずれのログにも保存されないシーキュアタイプが定義されてよい。
【0144】
段階1840で、コンピュータ装置200は、ブロックチェーンネットワークの任意のノードから、パスワードおよびプライベートキーによって署名するためのデータをパラメータとして含む署名要請を受信してよい。任意のノードは、コンピュータ装置200から暗号化されたパスワードが返還されたノードであるか、該当のノードからパスワードが伝達された他のノードであってよい。
【0145】
段階1850で、コンピュータ装置200は、署名要請に応答し、パスワードによって暗号化されたプライベートキーを復号し、復号されたプライベートキーによってデータを署名することで署名されたデータを生成してよい。
【0146】
段階1860で、コンピュータ装置200は、署名されたデータを返還してよい。このとき、署名されたデータは、データの署名を要請したノードに返還されてよい。
【0147】
一実施形態において、ブロックチェーンネットワークは、複数のリーフチェーン間のデータ送信を管理するルートチェーンを含んでよい。このとき、コンピュータ装置200は、コントラクトアドレスを複数のリーフチェーンそれぞれのジェネシスブロックに記録してよい。この場合、署名されたデータを受信する第1リーフチェーンで署名されたデータと第1リーフチェーンのジェネシスブロックに記録されたコントラクトアドレスとを比較することで、署名されたデータがルートチェーンから発送されたものであることを検証してよい。
【0148】
他の実施形態において、ブロックチェーンネットワークは、ルートチェーンによってデータ送信が管理される複数のリーフチェーンのうちの第1リーフチェーンを含んでよい。このとき、コンピュータ装置200は、コントラクトアドレスがルートチェーンのデータベースに保存されるようにコントラクトアドレスをルートチェーンに提供してよい。この場合、ルートチェーンで署名されたデータとルートチェーンのデータベースに保存されたコントラクトアドレスとを比較することで、署名されたデータが第1リーフチェーンから発送されたものであることを検証してよい。ルートチェーンは、上述したように、絶対信頼システムとして見なされてよい。
【0149】
以上のように、本発明の実施形態によると、ルートチェーンに基づいてリーフチェーンを追加する方式により、スケールアウトが可能なブロックチェーンで生成されるデータを認証する、データ認証方法およびシステムを提供することができる。
【0150】
上述したシステムまたは装置は、ハードウェア構成要素、ソフトウェア構成要素、またはハードウェア構成要素とソフトウェア構成要素との組み合わせによって実現されてよい。例えば、実施形態で説明された装置および構成要素は、例えば、プロセッサ、コントローラ、ALU(arithmetic logic unit)、デジタル信号プロセッサ、マイクロコンピュータ、FPGA(field programmable gate array)、PLU(programmable logic unit)、マイクロプロセッサ、または命令を実行して応答することができる様々な装置のように、1つ以上の汎用コンピュータまたは特殊目的コンピュータを利用して実現されてよい。処理装置は、オペレーティングシステム(OS)およびOS上で実行される1つ以上のソフトウェアアプリケーションを実行してよい。また、処理装置は、ソフトウェアの実行に応答し、データにアクセスし、データを記録、操作、処理、および生成してもよい。理解の便宜のために、1つの処理装置が使用されるとして説明される場合もあるが、当業者は、処理装置が複数個の処理要素および/または複数種類の処理要素を含んでもよいことが理解できるであろう。例えば、処理装置は、複数個のプロセッサまたは1つのプロセッサおよび1つのコントローラを含んでよい。また、並列プロセッサのような、他の処理構成も可能である。
【0151】
ソフトウェアは、コンピュータプログラム、コード、命令、またはこれらのうちの1つ以上の組み合わせを含んでもよく、思うままに動作するように処理装置を構成したり、独立的または集合的に処理装置に命令したりしてよい。ソフトウェアおよび/またはデータは、処理装置に基づいて解釈されたり、処理装置に命令またはデータを提供したりするために、いかなる種類の機械、コンポーネント、物理装置、仮想装置、コンピュータ記録媒体または装置に具現化されてよい。ソフトウェアは、ネットワークによって接続されたコンピュータシステム上に分散され、分散された状態で記録されても実行されてもよい。ソフトウェアおよびデータは、1つ以上のコンピュータ読み取り可能な記録媒体に記録されてよい。
【0152】
実施形態に係る方法は、多様なコンピュータ手段によって実行可能なプログラム命令の形態で実現されてコンピュータ読み取り可能な媒体に記録されてよい。コンピュータ読み取り可能な媒体は、プログラム命令、データファイル、データ構造などを単独または組み合わせて含んでよい。前記媒体に記録されるプログラム命令は、実施形態のために特別に設計されて構成されたものであっても、コンピュータソフトウェア当業者に公知な使用可能なものであってもよい。コンピュータ読み取り可能な記録媒体の例としては、ハードディスク、フロッピー(登録商標)ディスク、および磁気テープのような磁気媒体、CD-ROM、DVDのような光媒体、フロプティカルディスクのような光磁気媒体、およびROM、RAM、フラッシュメモリなどのようなプログラム命令を格納して実行するように特別に構成されたハードウェア装置が含まれる。このような記録媒体は、単一または複数のハードウェアが結合した形態の多様な記録手段または格納手段であってよく、あるコンピュータシステムに直接接続する媒体に限定されてはならず、ネットワーク上で分散して存在するものであってもよい。プログラム命令の例は、コンパイラによって生成されるもののような機械語コードだけではなく、インタプリタなどを使用してコンピュータによって実行される高級言語コードを含む。
【0153】
以上のように、実施形態を、限定された実施形態および図面に基づいて説明したが、当業者であれば、上述した記載から多様な修正および変形が可能であろう。例えば、説明された技術が、説明された方法とは異なる順序で実行されたり、かつ/あるいは、説明されたシステム、構造、装置、回路などの構成要素が、説明された方法とは異なる形態で結合されたりまたは組み合わされたり、他の構成要素または均等物によって対置されたり置換されたとしても、適切な結果を達成することができる。
【0154】
したがって、異なる実施形態であっても、特許請求の範囲と均等なものであれば、添付される特許請求の範囲に属する。