(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-19
(45)【発行日】2024-12-27
(54)【発明の名称】ブロックチェーンとは異なる形式のストレージに格納されるブロックチェーンデータを検証する方法およびシステム
(51)【国際特許分類】
H04L 9/32 20060101AFI20241220BHJP
G06F 21/64 20130101ALI20241220BHJP
【FI】
H04L9/32 200Z
G06F21/64
(21)【出願番号】P 2021560366
(86)(22)【出願日】2019-04-18
(86)【国際出願番号】 KR2019004684
(87)【国際公開番号】W WO2020213763
(87)【国際公開日】2020-10-22
【審査請求日】2022-04-14
【審判番号】
【審判請求日】2024-01-29
(73)【特許権者】
【識別番号】516014409
【氏名又は名称】ライン プラス コーポレーション
【氏名又は名称原語表記】LINE Plus Corporation
(74)【代理人】
【識別番号】110003199
【氏名又は名称】弁理士法人高田・高橋国際特許事務所
(72)【発明者】
【氏名】イ チホン
(72)【発明者】
【氏名】イ ユンスン
(72)【発明者】
【氏名】イ ヘジン
(72)【発明者】
【氏名】那須 利将
(72)【発明者】
【氏名】高橋 史季
(72)【発明者】
【氏名】鷹見 虎男
(72)【発明者】
【氏名】チャン ホジン
(72)【発明者】
【氏名】キム ユンソギ
(72)【発明者】
【氏名】イ ホンキュ
【合議体】
【審判長】林 毅
【審判官】大塚 俊範
【審判官】山崎 慎一
(56)【参考文献】
【文献】特開2017-207979(JP,A)
【文献】中国特許出願公開第108734453(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
G06F 21/64
(57)【特許請求の範囲】
【請求項1】
コンピュータ装置が実行するデータ検証方法であって、
前記コンピュータ装置が含む少なくとも1つのプロセッサが、ブロックチェーンから
ブロックチェーンデータの検証対象ブロックの第1ブロック情報を照会する段階、
前記少なくとも1つのプロセッサが、前記ブロックチェーンの
前記ブロックチェーンデータを異なる構造で格納するストレージから前記検証対象ブロックの第2ブロック情報を照会する段階、および
前記少なくとも1つのプロセッサが、前記第1ブロック情報と前記第2ブロック情報とを比較することで
、前記ストレージに格納された
前記検証対象ブロックの前記ブロックチェーンデータとしての有効性を検証する段階
を含む、データ検証方法。
【請求項2】
前記第1ブロック情報を照会する段階は、
N個のブロック高さの入力を受ける段階、および
前記N個のブロック高さに対応するN個のブロックのそれぞれを前記検証対象ブロックとして選定し、前記検証対象ブロックのそれぞれに対して第1ブロック情報を照会する段階
を含むことを特徴とする、請求項1に記載のデータ検証方法。
【請求項3】
前記第1ブロック情報を照会する段階は、
前記ブロックチェーンの最後のブロック高さを基準にブロック高さをランダムに選出し、前記選出されたブロック高さに対応するブロックのブロック情報を前記検証対象ブロックの第1ブロック情報として照会することを特徴とする、請求項1に記載のデータ検証方法。
【請求項4】
前記第1ブロック情報を照会する段階は、
任意のブロックハッシュまたは任意のブロック高さの入力を受け、入力されたブロックハッシュまたはブロック高さに対応するブロックのブロック情報を前記検証対象ブロックの第1ブロック情報として照会することを特徴とする、請求項1に記載のデータ検証方法。
【請求項5】
前記第2ブロック情報を照会する段階は、
前記照会された第1ブロック情報に対応するブロックハッシュまたはブロック高さを利用して前記ストレージから前記第2ブロック情報を照会することを特徴とする、請求項1に記載のデータ検証方法。
【請求項6】
前記第2ブロック情報を照会する段階は、
予め設定されたサービスを提供して前記ストレージに格納されたブロック情報を処理し、前記予め設定されたサービスで提供するブロックチェーンエクスプローラを利用して、前記照会された第1ブロック情報に対応するブロックハッシュまたはブロック高さに対応する前記第2ブロック情報を前記ストレージから照会することを特徴とする、請求項1に記載のデータ検証方法。
【請求項7】
前記有効性を検証する段階は、
前記ストレージから前記第2ブロック情報が取得できない場合、前記ストレージの前記検証対象ブロックには有効性がないと決定することを特徴とする、請求項1に記載のデータ検証方法。
【請求項8】
前記有効性を検証する段階は、
前記第1ブロック情報が含むブロックハッシュと前記第2ブロック情報が含むブロックハッシュが互いに同一でない場合、前記ストレージの前記検証対象ブロックには有効性がないと決定することを特徴とする、請求項1に記載のデータ検証方法。
【請求項9】
前記有効性を検証する段階は、
前記第1ブロック情報に対応するブロック高さと前記第2ブロック情報に対応するブロック高さが互いに同一でない場合、前記ストレージの前記検証対象ブロックには有効性がないと決定することを特徴とする、請求項1に記載のデータ検証方法。
【請求項10】
前記有効性を検証する段階は、
前記第2ブロック情報にトランザクション情報が含まれていない場合、前記ストレージの前記検証対象ブロックには有効性がないと決定することを特徴とする、請求項1に記載のデータ検証方法。
【請求項11】
前記有効性を検証する段階は、
前記第1ブロック情報が含むトランザクションハッシュと前記第2ブロック情報が含むトランザクションハッシュが互いに同一でない場合、前記ストレージの前記検証対象ブロックには有効性がないと決定することを特徴とする、請求項1に記載のデータ検証方法。
【請求項12】
前記ストレージは、サービスの提供のために、前記ブロックチェーンのブロックチェーンデータを前記ブロックチェーンとは異なる構造で格納する非一時的なストレージとして、非リレーショナルデータベース管理システムを含むことを特徴とする、請求項1に記載のデータ検証方法。
【請求項13】
コンピュータ装置と結合して請求項1から請求項12のうちのいずれか一項に記載の方法をコンピュータ装置に実行させるためにコンピュータ読み取り可能な記録媒体に格納された、コンピュータプログラム。
【請求項14】
請求項1から請求項12のうちのいずれか一項に記載の方法をコンピュータ装置に実行させるためのコンピュータプログラムが記録されていることを特徴とする、コンピュータ読み取り可能な記録媒体。
【請求項15】
コンピュータ装置であって、
前記コンピュータ装置で読み取り可能な命令を実行するように実現される少なくとも1つのプロセッサ
を含み、
前記少なくとも1つのプロセッサは、
ブロックチェーンから
ブロックチェーンデータの検証対象ブロックの第1ブロック情報を照会し、
前記ブロックチェーンの
前記ブロックチェーンデータを
異なる構造で格納するストレージから前記検証対象ブロックの第2ブロック情報を照会し、
前記第1ブロック情報と前記第2ブロック情報とを比較することで
、前記ストレージに格納された
前記検証対象ブロックの前記ブロックチェーンデータとしての有効性を検証すること
を特徴とする、コンピュータ装置。
【請求項16】
前記少なくとも1つのプロセッサは、
N個のブロック高さの入力を受け、
前記N個のブロック高さに対応するN個のブロックのそれぞれを前記検証対象ブロックとして選定し、前記検証対象ブロックのそれぞれに対して第1ブロック情報を照会すること
を特徴とする、請求項15に記載のコンピュータ装置。
【請求項17】
前記少なくとも1つのプロセッサは、
前記ブロックチェーンの最後のブロック高さを基準にブロック高さをランダムに選出し、前記選出されたブロック高さに対応するブロックのブロック情報を前記検証対象ブロックの第1ブロック情報として照会すること
を特徴とする、請求項15に記載のコンピュータ装置。
【請求項18】
前記少なくとも1つのプロセッサは、
任意のブロックハッシュまたは任意のブロック高さの入力を受け、入力されたブロックハッシュまたはブロック高さに対応するブロックのブロック情報を前記検証対象ブロックの第1ブロック情報として照会すること
を特徴とする、請求項15に記載のコンピュータ装置。
【請求項19】
前記少なくとも1つのプロセッサは、
前記照会された第1ブロック情報に対応するブロックハッシュまたはブロック高さを利用して前記ストレージから前記第2ブロック情報を照会すること
を特徴とする、請求項15に記載のコンピュータ装置。
【請求項20】
前記少なくとも1つのプロセッサは、
予め設定されたサービスを提供して前記ストレージに格納されたブロック情報を処理し、前記予め設定されたサービスで提供するブロックチェーンエクスプローラを利用して、前記照会された第1ブロック情報に対応するブロックハッシュまたはブロック高さに対応する前記第2ブロック情報を前記ストレージから照会すること
を特徴とする、請求項15に記載のコンピュータ装置。
【発明の詳細な説明】
【技術分野】
【0001】
以下の説明は、ブロックチェーンとは異なる形式のストレージに格納されるブロックチェーンデータを検証する方法およびシステムに関する。
【背景技術】
【0002】
ブロックチェーン(block-chain)とは、電子台帳(electronic ledger)であって、トランザクションのためのブロックで構成されたコンピュータベースの分散型、P2P(peer-to-peer)のシステムによって実現される。各トランザクション(Transaction:Tx)は、ブロックチェーンシステム内の参加者にデジタル資産の制御送信をエンコードするデータ構造であり、少なくとも1つの入力と少なくとも1つの出力を含む。各ブロックは1つ前のブロックのハッシュを含み、該当のブロックは連結しており、最初からブロックチェーンに記録されたすべてのトランザクションの永久的な、変えることのできない(unalterable)記録を生成する。例えば、韓国公開特許第10-2018-0113143号公報は、ブロックチェーンベースのユーザ定義の貨幣取引システムおよびその動作方法について開示している。しかし、ブロックチェーンに格納されたブロックチェーンデータを誰でも閲覧できるようにするためには、個別のシステムが必要となる。例えば、プライベートブロックチェーンに格納されたブロックチェーンデータの場合、個別のシステムがブロックチェーンデータを提供しない以上、誰もブロックチェーンデータにアクセスすることができない。
【発明の概要】
【発明が解決しようとする課題】
【0003】
ブロックチェーンに生成された内容を誰でも閲覧できるように、ブロックチェーンとは異なる形式のストレージに格納されるブロックチェーンデータを検証することができる、データ検証方法およびシステムを提供する。
【課題を解決するための手段】
【0004】
コンピュータ装置が実行するデータ検証方法であって、前記コンピュータ装置が含む少なくとも1つのプロセッサが、ブロックチェーンからブロックチェーンデータの検証対象ブロックの第1ブロック情報を照会する段階、前記少なくとも1つのプロセッサが、前記ブロックチェーンの前記ブロックチェーンデータを異なる構造で格納するストレージから前記検証対象ブロックの第2ブロック情報を照会する段階、および前記少なくとも1つのプロセッサが、前記第1ブロック情報と前記第2ブロック情報とを比較することで、前記ストレージに格納された前記検証対象ブロックの前記ブロックチェーンデータとしての有効性を検証する段階を含む、データ検証方法を提供する。
【0012】
コンピュータ装置と結合して前記方法をコンピュータ装置に実行させるためにコンピュータ読み取り可能な記録媒体に記録された、コンピュータプログラムを提供する。
【0013】
前記方法をコンピュータ装置に実行させるためのコンピュータプログラムが記録されていることを特徴とする、コンピュータ読み取り可能な記録媒体を提供する。
【0014】
コンピュータ装置であって、前記コンピュータ装置で読み取り可能な命令を実行するように実現される少なくとも1つのプロセッサを含み、前記少なくとも1つのプロセッサは、ブロックチェーンからブロックチェーンデータの検証対象ブロックの第1ブロック情報を照会し、前記ブロックチェーンの前記ブロックチェーンデータを異なる構造で格納するストレージから前記検証対象ブロックの第2ブロック情報を照会し、前記第1ブロック情報と前記第2ブロック情報とを比較することで、前記ストレージに格納された前記検証対象ブロックの前記ブロックチェーンデータとしての有効性を検証することを特徴とする、コンピュータ装置を提供する。
【発明の効果】
【0016】
ブロックチェーンに生成された内容を誰でも閲覧できるように、ブロックチェーンとは異なる形式のストレージに格納されるブロックチェーンデータを検証することができる。
【図面の簡単な説明】
【0017】
【
図1】本発明の一実施形態における、ネットワーク環境の例を示した図である。
【
図2】本発明の一実施形態における、コンピュータ装置の例を示したブロック図である。
【
図3】本発明の一実施形態における、ブロックチェーンデータ検証システムの例を示した図である。
【
図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は、本発明の一実施形態における、ブロックチェーンデータ検証システムの例を示した図である。
ブロックチェーンネットワーク(Blockchain network)310は、コンピュータ装置200によって実現される複数のノードで構成され、ブロックチェーンを通じてブロックチェーンデータを生成したり格納したりする、信頼性のあるインフラである。
【0031】
このようなブロックチェーンネットワーク310に生成されるブロックチェーンデータを誰でも閲覧できるようにするために、ブロックチェーンデータは、ブロックチェーンとは異なる形式のストレージ320に格納されてよい。ストレージ320は、ブロックチェーンデータを提供しようとするサービスに適した構造で格納する主体であってよい。一例として、
図3では、非一時的な(non-transitory)ストレージであるNoSql321と一時的なストレージであるメモリストレージ(Memory Storage)322のそれぞれにブロックチェーンデータを格納する例を示している。メモリストレージ322は、ブロックチェーンデータを迅速に提供するために選択的に活用されてよく、NoSql321は、ブロックチェーンデータを格納したり処理したりするための非リレーショナル(non-relational)データベース管理システムの例であってよい。
【0032】
ストレージ320にブロックチェーンデータを格納するために、リレイヤ(Relayer)330が活用されてよい。リレイヤ330は、ブロックチェーンで提供するAPI(Applcation Program Interface)を利用することで格納するためのブロックチェーンデータを照会してよく、照会されたブロックチェーンデータをキュー(Queue)340に順に積み上げてよい。このとき、キュー340に順に積み上げられたブロックチェーンデータをストレージ320に格納するために、コンシューマ(Consumer[1、・・・、K])350が構成されてよい。ストレージ320には、ブロック高さ(block height)を基準にブロックチェーンデータが格納されてよく、リレイヤ330は、中継が完了したブロック高さを格納してもよい。実施形態によって、キュー340やコンシューマ350は省略されてよく、照会されるブロックチェーンデータをリレイヤ330が順にストレージ320に格納してもよい。ここで、ブロック高さとは、ブロックチェーンでのブロックの順序に対応する、ブロックハッシュとは異なるブロックの識別子であってよい。例えば、ブロックチェーンAのブロック高さ15000は、ブロックチェーンAの15000番目のブロックを示す識別子を意味してよい。また、複数のブロックチェーンが存在するときには、ブロックの順序に対応するブロック高さが各ブロックチェーンで重複する可能性がある。したがって、ブロック高さは、ブロックチェーンの識別子(一例として、chainID)ごとに存在してよい。例えば、ブロックチェーンAのブロックチェーン識別子をchainAと仮定するとき、ブロックチェーンAのブロック高さ15000の値は、ブロックチェーンAの識別子chainAと関連付けてよい。より具体的に、リレイヤ330が複数のブロックチェーンと連係するとき、リレイヤ330が中継するブロックチェーンデータには、該当のデータがどのブロックチェーンのブロックチェーンデータであるかを示すためにブロックチェーン識別子が含まれてよい。この場合、リレイヤ330は、このようなブロックチェーンデータに含まれるブロックチェーン識別子と該当のブロックチェーンデータのブロック高さを互いに関連付けて格納してよい。
【0033】
また、ストレージ320に格納されたブロックチェーンデータを誰でも閲覧できるようにするために、ブロックチェーンエクスプローラ(Blockchain explorer)360が構成されてよい。一例として、ブロックチェーンエクスプローラ360は、
図3に示すように、要求された特定のブロックチェーンデータをストレージ320から抽出するためのブロックチェーンエクスプローラAPIサーバ(Blockchain explorer API Server[1、・・・、L])361と、抽出されたブロックチェーンデータをビューするためのブロックチェーンエクスプローラビューサーバ(Blockchain explorer View Server[1、・・・、M])362とを含んでよい。
【0034】
一方、ストレージ320にブロックチェーンデータが正しく格納されたかを検証する必要がある。このために、ブロックチェーン同期検証子(Blockchain sync validator)370を含んでよい。ブロックチェーン同期検証子370は、ブロックチェーンネットワーク310に格納されたブロックチェーンデータとストレージ320に格納されたブロックチェーンデータとを比較することにより、ストレージ320に格納されたブロックチェーンデータの有効性を検証してよい。例えば、ブロックチェーン同期検証子370は、ブロックチェーンネットワーク310の最後のブロック高さ(last block height)からNを引いた値を最大のブロック高さ(max block height)として設定した後、最大のブロック高さまでを目標として、N件ずつ、ブロックチェーンデータの有効性を検査してよい。ここで、最後のブロック高さからNを引いた値を最大のブロック高さとして設定する理由は、ブロックチェーンデータがブロックチェーンネットワーク310からストレージ320に伝達されるまでの遅延(delay)を勘案するためであってよい。また、ブロックチェーンネットワーク300が単一ブロックチェーンでなく複数のブロックチェーンを含む場合は、最後のブロック高さがブロックチェーンごとに異なることがあるため、各ブロックチェーンで最大のブロック高さが設定されてよい。このとき、有効性の検査のために、ブロックチェーン同期検証子370は、ブロックハッシュ(blockhash)に基づき、ブロックチェーンネットワーク310から得られたブロックチェーンデータとブロックチェーンエクスプローラAPIサーバ361から得られたブロックチェーンデータとを比較し、該当のブロックハッシュに対応するブロックがブロックチェーンネットワーク310とストレージ320の両方に格納されているかを確認してよい。また、ブロックチェーン同期検証子370は、該当のブロックに含まれるトランザクションハッシュ(transaction hash)がブロックチェーンネットワーク310とストレージ320の両方に格納されているかを確認してよい。
【0035】
このとき、ブロックチェーン同期検証子370は、ブロックチェーンネットワーク310で提供するAPIを利用してブロックチェーンネットワーク310からブロックチェーンデータを照会してよい。また、これと同じように、ブロックチェーン同期検証子370は、ブロックチェーンエクスプローラAPIサーバ361で提供するAPIを利用してブロックチェーンエクスプローラAPIサーバ361からストレージ320に格納されたブロックチェーンデータを照会してよい。それぞれのAPIを呼び出すために、特定のブロックのブロックハッシュおよび/またはブロック高さをパラメータとして利用してよい。この場合、ブロックチェーンネットワーク310またはブロックチェーンエクスプローラAPIサーバ361は、パラメータとして提供されるブロックハッシュおよび/またはブロック高さに対応するブロックのブロックチェーンデータをブロックチェーンまたはストレージ320から抽出してブロックチェーン同期検証子370に提供してよい。
【0036】
より具体的な例として、ブロックチェーン同期検証子370は、下記のA、B、Cの例のようにブロックチェーンデータを照会して有効性を検査してよい。
A.ブロックチェーン同期検証子370は、N個の特定のブロック高さの入力の受け、入力されたN個の特定のブロック高さに対応するN個のブロックのブロック情報を照会して有効性を検査してよい。
B.ブロックチェーン同期検証子370は、何らの入力も受けず、ブロックチェーンの最後のブロック高さを基準にブロック高さをランダムに1つ選出し、選出されたブロック高さに対応するブロックのブロック情報を照会して有効性を検査してよい。複数のブロックチェーンが存在する場合、ブロックチェーン同期検証子370は、ブロックチェーンをランダムに選択した後、選択されたブロックチェーンの最後のブロック高さを基準にブロック高さをランダムに1つ選出し、選出されたブロック高さに対応するブロックのブロック情報を照会して有効性を検査してよい。また、ブロックチェーンからストレージ320までの中継ディレイを考慮した上で、最後のブロック高さからNを引いた最大のブロック高さを設定した後、設定された最大のブロック高さを基準にブロック高さをランダムに選出してもよい。
C.ブロックチェーン同期検証子370は、ブロックチェーンネットワーク310のブロックチェーンのうちから1つを選択し、所望するブロックハッシュおよび/またはブロック高さの入力を受け、入力されたブロックハッシュおよび/またはブロック高さに対応するブロックのブロック情報を照会して有効性を検査してよい。
【0037】
多様な例において共通して実行される有効性検査ロジックは、下記の(1)~(8)のとおりとなる。
(1)ブロックチェーン同期検証子370は、ブロックチェーンからランダムに選択されるか、ブロックのブロック情報をブロックチェーンから照会するか、または入力を受けたブロック高さに関するロック情報をブロックチェーンから照会してよい。
(2)ブロックチェーン同期検証子370は、ブロックチェーンから照会されたブロックのブロックハッシュおよび/またはブロック高さを利用してブロックチェーンエクスプローラAPIサーバ361から同一のブロックのブロック情報を照会してよい。このとき、ブロックチェーン同期検証子370は、ブロックチェーンエクスプローラAPIサーバ361で提供するAPIとブロックハッシュおよび/またはブロック高さをパラメータとして利用して特定のブロックのブロック情報を照会してよい。
(3)ブロックチェーン同期検証子370は、ブロックチェーンエクスプローラAPIサーバ361からブロック情報が取得できない場合、ストレージ320の該当のブロックには有効性がないと決定してよい。
(4)ブロックチェーン同期検証子370は、(1)で照会されたブロック情報のブロックハッシュと、(2)で照会されたブロック情報のブロックハッシュが互いに同一でない場合、ストレージ320の該当のブロックには有効性がないと決定してよい。
(5)ブロックチェーン同期検証子370は、(1)で照会されたブロック情報のブロック高さと、(2)で照会されたブロック情報のブロック高さが互いに同一でない場合、ストレージ320の該当のブロックには有効性がないと決定してよい。
(6)ブロックチェーン同期検証子370は、(2)で照会されたブロック情報にトランザクション情報が含まれない場合、ストレージ320の該当のブロックには有効性がないと決定してよい。
(7)ブロックチェーン同期検証子370は、(1)で照会されたブロック情報のトランザクションハッシュと、(2)で照会されたブロック情報のトランザクションハッシュが互いに同一でない場合、ストレージ320の該当のブロックには有効性がないと決定してよい。例えば、(1)で照会されたブロック情報のトランザクションハッシュに比べて(2)で照会されたブロック情報のトランザクションハッシュが1つでも抜けていたり、一致しないトランザクションハッシュが存在したりする場合、ブロックチェーン同期検証子370は、ストレージ320の該当のブロックには有効性がないと決定してよい。
(8)ブロックチェーン同期検証子370は、(3)~(7)の結果に異常がない場合、言い換えれば、(3)~(7)のうちのいずれか1つにおいて該当のブロックには有効性がないと決定されなかった場合、ストレージ320の該当のブロックには有効性が存在すると決定してよい。
【0038】
図4は、本発明の一実施形態における、データ検証方法の例を示したフローチャートである。本実施形態に係るデータ検証方法は、
図3を参照しながら説明したブロックチェーン同期検証子370を実現するコンピュータ装置200によって実行されてよい。例えば、コンピュータ装置200のプロセッサ220は、メモリ210が含むオペレーティングシステムのコードと、少なくとも1つのプログラムのコードとによる制御命令(instruction)を実行するように実現されてよい。ここで、プロセッサ220は、コンピュータ装置200に記録されたコードが提供する制御命令にしたがってコンピュータ装置200が
図4の方法に含まれる段階410~430を実行するようにコンピュータ装置200を制御してよい。
【0039】
段階410で、コンピュータ装置200は、ブロックチェーンから検証対象ブロックの第1ブロック情報を照会してよい。このとき、コンピュータ装置200は、該当のブロックチェーンのブロックチェーンネットワークで提供するAPIを利用して検証対象ブロックの第1ブロック情報を照会してよい。一例として、コンピュータ装置200は、N個のブロック高さの入力を受け、N個のブロック高さに対応するN個のブロックのそれぞれを検証対象ブロックとして選定し、検証対象ブロックのそれぞれに対して第1ブロック情報を照会してよい。他の例として、コンピュータ装置200は、ブロックチェーンの最後のブロック高さを基準にブロック高さをランダムに選出し、選出されたブロック高さに対応するブロックのブロック情報を検証対象ブロックの第1ブロック情報として照会してよい。この場合、コンピュータ装置200は、ブロックハッシュやブロック高さの入力は別途受けず、ランダムなブロックの有効性を検証してよい。また他の例として、コンピュータ装置200は、任意のブロックハッシュまたは任意のブロック高さの入力を受け、入力されたブロックハッシュまたはブロック高さに対応するブロックのブロック情報を検証対象ブロックの第1ブロック情報として照会してよい。
【0040】
段階420で、コンピュータ装置200は、ブロックチェーンのブロック情報を異なる構造で格納するストレージから検証対象ブロックの第2ブロック情報を照会してよい。ここで、ストレージは、特定のサービスを提供するために該当のサービスに適した構造でブロック情報を格納する主体であって、
図3を参照しながら説明したストレージ320に対応してよい。例えば、コンピュータ装置200は、照会された第1ブロック情報に対応するブロックハッシュまたはブロック高さを利用してストレージから第2ブロック情報を照会してよい。より具体的に、コンピュータ装置200は、予め設定されたサービスを提供してストレージに格納されたブロック情報を処理し、予め設定されたサービスが提供するブロックチェーンエクスプローラを利用して、照会された第1ブロック情報に対応するブロックハッシュまたはブロック高さに対応する第2ブロック情報をストレージから照会してよい。ここで、ブロックチェーンエクスプローラは、
図3を参照しながら説明したブロックチェーンエクスプローラ360に対応してよく、コンピュータ装置200は、ブロックチェーンエクスプローラが提供するAPIを利用して特定のブロックハッシュおよび/またはブロック高さに対応するブロックのブロック情報を照会できるようにしてよい。
【0041】
段階430で、コンピュータ装置200は、第1ブロック情報と第2ブロック情報とを比較することで、検証対象ブロックに対するストレージに格納された第2ブロック情報の有効性を検証してよい。一例として、コンピュータ装置200は、ストレージから第2ブロック情報が取得できない場合、ストレージの検証対象ブロックには有効性がないと決定してよい。他の例として、コンピュータ装置200は、第1ブロック情報が含むブロックハッシュと第2ブロック情報が含むブロックハッシュが互いに同一でない場合、ストレージの検証対象ブロックには有効性がないと決定してよい。また他の例として、コンピュータ装置200は、第1ブロック情報に対応するブロック高さと第2ブロック情報に対応するブロック高さが互いに同一でない場合、ストレージの検証対象ブロックには有効性がないと決定してよい。さらに他の例として、コンピュータ装置200は、第2ブロック情報にトランザクション情報が含まれていない場合、ストレージの検証対象ブロックには有効性がないと決定してよい。第1ブロック情報が含むトランザクションハッシュと第2ブロック情報が含むトランザクションハッシュが互いに同一でない場合、ストレージの検証対象ブロックには有効性がないと決定してよい。この反面、コンピュータ装置200は、すべての場合において、ストレージの検証対象ブロックには有効性がないと決定されなかった場合、ストレージの検証対象ブロックには有効性があると決定してよい。
【0042】
以上のように、本発明の実施形態によると、ブロックチェーンに生成された内容を誰でも閲覧できるように、ブロックチェーンとは異なる形式のストレージに格納されるブロックチェーンデータを検証することができる。
【0043】
上述したシステムまたは装置は、ハードウェア構成要素、ソフトウェア構成要素、またはハードウェア構成要素とソフトウェア構成要素との組み合わせによって実現されてよい。例えば、実施形態で説明された装置および構成要素は、例えば、プロセッサ、コントローラ、ALU(arithmetic logic unit)、デジタル信号プロセッサ、マイクロコンピュータ、FPGA(field programmable gate array)、PLU(programmable logic unit)、マイクロプロセッサ、または命令を実行して応答することができる様々な装置のように、1つ以上の汎用コンピュータまたは特殊目的コンピュータを利用して実現されてよい。処理装置は、オペレーティングシステム(OS)およびOS上で実行される1つ以上のソフトウェアアプリケーションを実行してよい。また、処理装置は、ソフトウェアの実行に応答し、データにアクセスし、データを記録、操作、処理、および生成してもよい。理解の便宜のために、1つの処理装置が使用されるとして説明される場合もあるが、当業者は、処理装置が複数個の処理要素および/または複数種類の処理要素を含んでもよいことが理解できるであろう。例えば、処理装置は、複数個のプロセッサまたは1つのプロセッサおよび1つのコントローラを含んでよい。また、並列プロセッサのような、他の処理構成も可能である。
【0044】
ソフトウェアは、コンピュータプログラム、コード、命令、またはこれらのうちの1つ以上の組み合わせを含んでもよく、所望の動作を行うように処理装置を構成したり、独立的または集合的に処理装置に命令したりしてよい。ソフトウェアおよび/またはデータは、処理装置によって解釈されたり、処理装置に命令またはデータを提供したりするために、いかなる種類の機械、コンポーネント、物理装置、仮想装置、コンピュータ記録媒体または装置に具現化されてよい。ソフトウェアは、ネットワークによって接続されたコンピュータシステム上に分散され、分散された状態で記録されても実行されてもよい。ソフトウェアおよびデータは、1つ以上のコンピュータ読み取り可能な記録媒体に記録されてよい。
【0045】
実施形態に係る方法は、多様なコンピュータ手段によって実行可能なプログラム命令の形態で実現されてコンピュータ読み取り可能な媒体に記録されてよい。コンピュータ読み取り可能な媒体は、プログラム命令、データファイル、データ構造などを単独または組み合わせて含んでよい。前記媒体に記録されるプログラム命令は、実施形態のために特別に設計されて構成されたものであっても、コンピュータソフトウェア当業者に公知な使用可能なものであってもよい。コンピュータ読み取り可能な記録媒体の例としては、ハードディスク、フロッピー(登録商標)ディスク、および磁気テープのような磁気媒体、CD-ROM、DVDのような光媒体、フロプティカルディスク(floptical disk)のような光磁気媒体、およびROM、RAM、フラッシュメモリなどのようなプログラム命令を格納して実行するように特別に構成されたハードウェア装置が含まれる。このような記録媒体は、単一または複数のハードウェアが結合した形態の多様な記録手段または格納手段であってよく、あるコンピュータシステムに直接接続する媒体に限定されてはならず、ネットワーク上で分散して存在するものであってもよい。プログラム命令の例は、コンパイラによって生成されるもののような機械語コードだけではなく、インタプリタなどを使用してコンピュータによって実行される高級言語コードを含む。
【0046】
以上のように、実施形態を、限定された実施形態および図面に基づいて説明したが、当業者であれば、上述した記載から多様な修正および変形が可能であろう。例えば、説明された技術が、説明された方法とは異なる順序で実行されたり、かつ/あるいは、説明されたシステム、構造、装置、回路などの構成要素が、説明された方法とは異なる形態で結合されたりまたは組み合わされたり、他の構成要素または均等物によって対置されたり置換されたとしても、適切な結果を達成することができる。
したがって、異なる実施形態であっても、特許請求の範囲と均等なものであれば、添付される特許請求の範囲に属する。