JP6951649B2 - ブロック検証装置、ブロック検証方法、及びプログラム - Google Patents
ブロック検証装置、ブロック検証方法、及びプログラム Download PDFInfo
- Publication number
- JP6951649B2 JP6951649B2 JP2019566512A JP2019566512A JP6951649B2 JP 6951649 B2 JP6951649 B2 JP 6951649B2 JP 2019566512 A JP2019566512 A JP 2019566512A JP 2019566512 A JP2019566512 A JP 2019566512A JP 6951649 B2 JP6951649 B2 JP 6951649B2
- Authority
- JP
- Japan
- Prior art keywords
- transaction
- block verification
- block
- group
- private
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Description
本発明は、ブロック検証装置、ブロック検証方法、及びプログラムに関する。
ビットコインは、完全分散型のコンピュータに格納された台帳によって実現された最初の暗号通貨である(非特許文献1参照)。ビットコインが登場する前においては、台帳は、信頼性を確保するために信頼できる第三者によって管理される必要があった。ビットコインにおける台帳の信頼性を確保するため、ブロックチェーンといわれる技術が用いられている。
ブロックチェーンは、複数の分散ノード(以下、「ノード」という)と、該複数のノードを互いに通信させるための通信ネットワークとにより実現される。ブロックチェーンは、複数のノード間で合意を形成するためのコンセンサスメカニズムを提供する。ブロックチェーンを使うことによって、複数のノードと、該複数のノードを互いに通信させるための通信ネットワークとを含むシステムは、全体として状態遷移システムとみなすことができる。このようなシステムは、各ノードがブロックチェーンを用いて同期された同一の台帳を格納するため、高い可用性を備えている。トランザクションは、通信ネットワークを介して、一のノードから複数の他のノードに送信される。そして、トランザクションを受信したノードは、複数のトランザクションをブロックに格納する。このとき、台帳の信頼性が確保されるために、ブロックの正当性が各ノードによって検証される必要がある。そのため、ブロックは、コンセンサスアルゴリズムによって規定された一定の条件を満たす必要がある。コンセンサスアルゴリズムには様々なものがあり、例えば、ビットコインのコンセンサスアルゴリズムとして、PoW(Proof Of Work)が採用されている。コンセンサスアルゴリズムには、実用ビザンチンフォールトトレランス(PBFT:Practical Byzantine Fault Tolerance)等も提案されている(非特許文献2参照)。
各ノードは、ブロックに格納されている情報の整合が取れていることを検証する。また、各ノードは、ブロックがコンセンサスアルゴリズムによって規定された条件を満たすか否かを検証する。そして、各ノードは、ブロックに整合が取れており、コンセンサスアルゴリズムによって規定された条件を満たすことを検証すると、ブロックを台帳に追加する。
上述したPoWは、ブロックが格納された時点が遡るほど、該ブロックが置き換えられる確率が低くなるように設計された確率的なコンセンサスアルゴリズムである。そのため、PoWは、厳密な意味において複数のノード間で合意が形成されるに至っていない。これに対して、PBFTは、投票によってブロックの正当性を検証しているため、厳密に複数のノード間で合意が形成される。PBFTは後述するコンソーシアム型ブロックチェーンやプライベート型ブロックチェーンで利用されている。
PBFTは厳密な合意を形成するためのプロトコルのベースとなる考え方を提供し、今ではPBFTから着想を得た様々なプロトコルが提案されている。後述する本実施形態では、合意を形成するためのプロトコルとしてPBFTを適用するが、PBFTに限らずに厳密な合意を形成するための任意のプロトコルを適用することができる。PBFTでは、合意形成に参加するノードのうち1つのノードがリーダの役割を担い、その他のノードが検証者の役割を担い、3つのステップにより合意が形成される。3つのステップとは、プレプリペアステップとプリペアステップとコミットステップである。
プレプリペアステップにおいて、トランザクションが発行されると、該トランザクションは、P2P方式により形成された通信ネットワークによりリーダの役割を担うノード(以下、「リーダノード」という)に送信される。リーダノードは、トランザクションの処理順序を決定し、ブロックを生成する。そして、リーダノードは、複数の、検証者の役割を担うノード(以下、「検証ノード」という)にブロックを送信する。複数の検証ノードそれぞれは、トランザクションが正しいこと、及びブロックに含まれる各種の値が正しいことを検証する。
プリペアステップにおいて、各検証ノードは、自身の電子署名を検証結果に付与しリーダノード及び他の検証ノードに送信する。このため、各検証ノードは、他の検証ノードによる検証結果を受信することになる。これにより、各検証ノードは、一定数以上の検証ノードによってブロックが承認されたことを確認することができる。
コミットステップにおいて、各検証ノードは、一定数以上の検証ノードによってブロックが検証されたと判定した場合、ブロックをコミットすることを示すコミットメッセージを他の検証ノード及びリーダノードに送信する。各検証ノードは、他の検証ノードから一定数以上のコミットメッセージを受信した場合、ブロックを台帳に追加する。各検証ノードは、台帳とリンクしたDB(データベース)がある場合、該DBも同時に更新する。
ビットコインの登場後、ブロックチェーンは暗号通貨だけでなく様々な分野でも有用と考えられてきた。ビットコインで用いられているブロックチェーンを他の分野に適用するための試みがなされていたが、ビットコインで用いられているブロックチェーンは暗号通貨に特化しているため、複雑なアプリケーションを必要とする他の分野に適用されるのが困難であることがあった。
しかしながら、2014年にヴィタリック・ブテリンがイーサリアム(非特許文献3参照)を提案したことによって、この状況は大きく変化した。イーサリアムは、ユーザがチューリング完全なプログラムを生成し、実行することができるブロックチェーンの実装方式の一つである。イーサリアムにおいて、開発者は、任意の目的のために任意の処理を実行するためのプログラムを生成し、各ノードは、該プログラムを用いて任意のデータを格納することができる。イーサリアムでは、ユーザにアドレスが付与されるとともに、プログラムにもアドレスが付与される。ユーザが自身のアドレスからプログラムに付与されたアドレス宛にトランザクションを発行すると、実行環境でプログラムが実行される。イーサリアムにおける各ノードには、台帳の他に、プログラムコード、該プログラムに格納されたデータ等を保存するデータベースを有する。この台帳とデータベースはイーサリアムを構成するノード間で同期される。
図8に示すように、各ノード3に格納される台帳及びデータベースを同期させるために、各ノード3は、通信ネットワーク4を介してブロックを他のノード3に送信する。ブロックは、ブロック本体及びブロックヘッダから構成される。ブロック本体には、1以上のトランザクションが含まれる。なお、ブロック本体に含まれるトランザクションの数は1以上に限られない。例えば、コンセンサスアルゴリズムがPoWである場合、ブロック本体に含まれるトランザクションの数は0以上であってもよい。ただし、コンセンサスアルゴリズムがPBFTである場合、トランザクションの数は1以上である。ブロックヘッダには、前ブロックヘッダのハッシュ値、トランザクションのリストのハッシュ値、及びデータベースのハッシュ値が含まれる。そして、各ノード3は、ブロックを受信すると、図9に示すようにブロックに含まれるトランザクションに基づくプログラムにより処理を実行する。ブロックのヘッダには共有DB(共有データベース)のハッシュ値が含まれているため、図10に示すようにトランザクションだけではなく、該トランザクションを実行した後の共有DBの状態に対して複数のノード間で合意が形成される。
ビットコイン及びイーサリアムは、既にブロックチェーンを利用した、公開型のプラットフォームとして運用されている。また、公開型のプラットフォームの他に、コンソーシアム型のブロックチェーン、プライベート型のブロックチェーン等が知られている。近年、企業向けのサービスにブロックチェーンを適用しようとする試みが活発になっているため、コンソーシアム型のブロックチェーン及びプライベート型ブロックチェーンが注目されている。現在、各企業は、それぞれローカルのブロックチェーンを利用したプラットフォームを構築し、実証実験を行っているが、将来的には共同でプラットフォームを運用することが考えられる。しかし、プラットフォームを共同で運用するには、台帳を含むデータの肥大化とセキュリティに関する問題がある。
ブロックチェーンを用いたシステムにおいて、該システムが運用され続ける限りデータは永続的に生成及び格納され続ける。特に、使用率が高く、生成及び格納されるデータ量が多いシステムであるほど、台帳及びデータベースそれぞれのサイズが大きくなる。また、データの保存期間はプラットフォームごとに決定されるため、上述のように複数の企業が共通のプラットフォームを使用する場合、各企業が保存期間を自由に設定することができない。さらに、共通のプラットフォームが運用される場合、全てのノードの共通台帳とデータベースとにデータが保存されるため、台帳とデータベースの肥大化が問題になる。
また、複数の企業が共通のプラットフォームを使用する場合、共通プラットフォームで保存される一の企業のデータが他の企業によって保存されることになる。セキュリティ保持の観点から、他の企業のノードが一の企業のデータを参照することができないように、データを暗号化することが考えられる。しかし、仮にデータが暗号化されても、例えば、他の企業はデータに関する統計的な値が算出されうるという問題がある。
クォーラムは、イーサリアムのアーキテクチャを拡張し、セキュリティパフォーマンスを向上させたコンソーシアム型又はプライベート型のプラットフォームである(非特許文献4参照)。クォーラムを構成する各ノードは、2種類のデータベースを有する。
具体的には、各ノードは、イーサリアムを構成するノードが有するデータベースと同様のデータベース(以降、「共有DB(共有データベース)」という)を有する。各ノードがそれぞれ有する共有DBは互いに共有される。さらに各ノードは、プライベートなデータベース(以降、「プライベートDB(プライベートデータベース)」という)を有する。プライベートDBは、全ノードのうちの特定のノード間で共有される。
Satoshi Nakamoto、[online]、"Bitcoin: A Peer-to-Peer Electronic Cash System"、[平成29年12月19日検索]、インターネット<URL: https://Bitcoin.org/Bitcoin.pdf>
Miguel Castro、外1名、 "Practical Byzantine Fault Tolerance"、Appears in the Proceedings of the Third Symposium on Operating Systems Design and Implementation, New Orleans, USA, February 1999
"A Next-Generation Smart Contract and Decentralized Application Platform"、 Ethereum White Paper
https://github.com/jpmorganchase/Quorum-docs/blob/master/Quorum%20Whitepaper%20v0.1.pdf、Quorum White Paper
クォーラムにおいて、全体で共有される共有トランザクションの処理の実行結果に基づく状態は共有DBに格納される。特定のノード間のみで共有されるプライベートトランザクションの処理の実行結果に基づく状態はプライベートDBに格納される。プライベートトランザクションは共有トランザクションのデータ本体を除く部分と、該データ本体のハッシュ値とを含む。また、共有トランザクションとプライベートトランザクションとは、全てのノードで共有される台帳に記録される。暗号化されたデータ本体は、特定のノードで共有される。さらに、該特定のノードは、暗号化されたデータ本体を復号し、復号されたデータ本体に含まれるトランザクションに基づく処理を実行する。そして、該特定のノードは、トランザクションの処理の実行結果に基づく状態をプライベートDBに格納する。
このようにクォーラムを用いたブロックチェーンネットワークを構成する各ノードは、共有DB及びプライベートDBといった複数のデータベースを有する。そして、各ノードは、共有トランザクションの実行結果に基づく状態を共有DBに格納し、プライベートトランザクションの実行結果に基づく状態をプライベートDBに格納する。したがって、プライベートトラザクションの実行結果に基づく状態を特定のノードのみで保持するため、該特定のノードのみによって構成するブロックチェーンネットワークを新たに形成する必要がない。したがって、特定のノード以外のノードが、該特定のノードのプライベートトランザクションの実行結果に基づく状態遷移を共有する必要がなくなる。また、特定のノードのみが保持すべきプライベートトランザクションの実行結果に基づく状態が共有DBに格納されないため、共有DBのデータ容量が肥大化するのを防ぐことができる。
しかし、上述のように、クォーラムでは、特定のノード以外のノードは、該特定のノードのプライベートトランザクションの実行結果に基づく状態遷移を共有しないため、該状態遷移を検証することができない。すなわち、共有範囲の異なる複数のデータベースの状態を全てのノードで既存のコンセンサスプロセスにより合意を形成することはできない。各ノードが有するデータベースが共有データベースのみである場合、各ノードがブロックのヘッダに記載されているデータベースのハッシュ値を検証することによって、ノード間でデータベースの状態遷移について合意を形成することができる。そのため、プライベートDBへの直接的な書き換えなどの不正な動作を検出し、正当な状態を判定し、ノード間の整合を保つためには、新たなメカニズムが必要である。
ブロックチェーンを用いたプラットフォームにおいて、該プラットフォームを構成するノードはブロックを生成する。ブロックは、ブロック本体とブロックヘッダとから構成される。ブロック本体にはトランザクションが含まれる。ブロックヘッダには、ブロック本体に含まれるトランザクションのハッシュ値、トランザクションにより処理された後のデータベースの状態を示すハッシュ値等が含まれる。各ノードは、ブロックに含まれる各種の情報の正当性を検証する。そして、各ノードは、各種の情報の正当性が検証された場合、台帳に格納されているチェーン状のブロックにおける直近に生成されたブロックに新たに生成されたブロックをつなぐことによって、新たに生成されたブロックを台帳に格納する。具体的には、新たに生成されたブロックに、直近に生成されたブロックのブロックヘッダのハッシュ値を記載して、台帳に格納する。また、各ノードは、トランザクションの実行結果に基づいてデータベースを更新する。
プラットフォームを構成する複数のノードのうち一部のノードのみが、他のノードと共有されないプライベートDBを有する場合、他のノードは、一部のノードのプライベートDBの状態を保持しないため、プライベートトランザクションの実行結果に基づく状態を検証できない。したがって、全てのノードによる合意を形成することができなかった。
かかる事情に鑑みてなされた本発明の目的は、グループ内で共有するプライベートDBの状態についても合意を形成することが可能なブロック検証装置、ブロック検証方法、及びプログラムを提供することにある。
また、本発明は、複数のデータベースを持つブロックチェーンシステムの場合に、共有範囲の異なる複数のプライベートDBの状態について合意を形成する技術を提供する。
上記の課題を解決するため、本発明に係るブロック検証装置は、複数のグループにより構成され、前記グループのそれぞれが複数のブロック検証装置を備えるブロック検証システムにおいて、前記グループ内におけるブロック検証装置を代表するブロック検証装置であって、前記グループ内で共有されるプライベートデータベースと、前記複数のブロック検証装置の全体を代表するブロック検証装置である全体リーダ装置からトランザクションのリストを受信する通信部と、該リストによって識別される前記トランザクションを実行し、実行結果を出力するトランザクション処理部と、前記実行結果に基づいて、前記リスト、前記トランザクションの実行後のプライベートデータベースのダイジェスト、及び前記トランザクションに含まれる、前記グループ内で共有されるプライベートデータをまとめたプライベートデータ群を含むプロポーザルを生成するブロック処理部と、を備え、前記通信部は、同一のグループに属する他のブロック検証装置に前記プロポーザルを送信し、前記ブロック処理部により前記プロポーザルについての合意が形成されたと判定すると、前記リスト、前記プライベートデータベースのダイジェスト、及び前記プライベートデータ群のダイジェストを他の全てのブロック検証装置に送信することを特徴とする。
また、上記の課題を解決するため、本発明に係るブロック検証装置は、複数のグループにより構成され、前記グループのそれぞれが複数のブロック検証装置を備え、前記複数のブロック検証装置それぞれは前記グループ内で共有されるプライベートデータベース、及び全てのブロック検証装置で共有される共有データベースを含むブロック検証システムにおいて、全ての前記ブロック検証装置を代表するブロック検証装置であって、他の前記ブロック検証装置からトランザクションを受信し、前記グループ内の前記ブロック検証装置を代表するグループリーダブロック検証装置に前記トランザクションのリストを送信し、前記グループリーダブロック検証装置によって、前記リストによって識別される前記トランザクションを実行した実行結果に基づいて、前記リスト、前記トランザクションの実行後のプライベートデータベースのダイジェスト、及び前記トランザクションに含まれる、前記グループ内で共有されるプライベートデータをまとめたプライベートデータ群を含むプロポーザルが生成され、前記プロポーザルについての合意が形成されたと判定されると送信される前記リスト、前記プライベートデータベースのダイジェスト、及び前記プライベートデータ群のダイジェストを受信する通信部と、前記リストに対応するトランザクションを実行し、該実行結果に基づいて更新された前記共有データベースの状態を取得するトランザクション処理部と、前記通信部により前記リスト、前記状態、並びに前記トランザクションの実行後のプライベートデータベースのダイジェスト及び前記プライベートデータ群のダイジェストを含むブロックを他のブロック検証装置に送信することによって該ブロックについての合意を形成するブロック処理部と、を備えることを特徴とする。
また、上記の課題を解決するため、本発明に係るブロック検証方法は、複数のブロック検証装置を備えるブロック検証システムに構成される複数のグループのいずれかに属するブロック検証装置を代表し、複数の他のブロック検証装置と情報を送受信し、前記グループ内で共有されるプライベートデータベースを備えるブロック検証装置が実行するブロック検証方法であって、前記複数のブロック検証装置の全体を代表するブロック検証装置である全体リーダ装置から、トランザクションのリストを受信するステップと、該リストによって識別されるトランザクションを実行し、実行結果を出力するステップと、前記実行結果に基づいて、前記リストと、プライベートデータベースのダイジェストと、前記トランザクションに含まれる前記グループ内で共有されるプライベートデータをまとめたプライベートデータ群とを含むプロポーザルを生成するステップと、同一のグループに属する他のブロック検証装置に前記プロポーザルを送信し、前記プロポーザルについての合意が形成されたと判定すると、前記リスト、並びに前記トランザクションの実行に基づくプライベートデータのダイジェスト及びプライベートデータ群のダイジェストを他の全てのブロック検証装置に送信するステップと、を含むことを特徴とする。
また、上記の課題を解決するため、本発明に係るブロック検証方法は、複数のグループにより構成され、前記グループのそれぞれが複数のブロック検証装置を備え、前記複数のブロック検証装置それぞれは前記グループ内で共有される共有されるプライベートデータベース、及び全てのブロック検証装置で共有される共有データベースを含むブロック検証システムにおいて、全ての前記ブロック検証装置を代表するブロック検証装置が実行するブロック検証方法であって、他の前記ブロック検証装置からトランザクションを受信するステップと、前記グループ内の前記ブロック検証装置を代表するグループリーダブロック検証装置に前記トランザクションのリストを送信するステップと、前記グループリーダブロック検証装置によって、前記リストによって識別される前記トランザクションを実行した実行結果に基づいて、前記リスト、前記トランザクションの実行後のプライベートデータベースのダイジェスト、及び前記トランザクションに含まれる、前記グループ内で共有されるプライベートデータをまとめたプライベートデータ群を含むプロポーザルが生成され、前記プロポーザルについての合意が形成されたと判定されると送信される前記リスト、前記プライベートデータベースのダイジェスト、及び前記プライベートデータ群のダイジェストを受信するステップと、前記リストに対応するトランザクションを実行し、該実行結果に基づいて更新された前記共有データベースの状態を取得するステップと、前記リスト、前記状態、並びに前記トランザクションの実行後のプライベートデータベースのダイジェスト及び前記プライベートデータ群のダイジェストを含むブロックを他のブロック検証装置に送信することによって該ブロックについての合意を形成するステップと、
を含むことを特徴とする。
を含むことを特徴とする。
上記の課題を解決するため、本発明に係るプログラムは、ブロック検証装置としてコンピュータを機能させる。
本発明によれば、グループ内で共有するプライベートDBについても合意を形成することができる。
以下、本発明の一実施形態について、図面を参照して詳細に説明する。
図1に、本発明の一実施形態に係るブロック検証システム1の構成例を示す。図1に示すように、ブロック検証システム1は、複数のコンピュータを備える。複数のコンピュータは、互いにP2P(Peer to Peer)型の通信ネットワークにより接続され、互いにデータを送受信する。
各コンピュータは、ブロック検証システム1における各場面での役割に応じて、トランザクション発行装置2として機能したり、ブロック検証装置3として機能したりする。ここで、複数のコンピュータのうちいずれかのコンピュータは、ブロック検証装置3として機能することなくトランザクション発行装置2として機能してもよい。複数のコンピュータのうちいずれかの複数のコンピュータは、トランザクション発行装置2として機能することなくブロック検証装置3として機能してもよい。なお、図1に示すブロック検証システム1において通信ネットワークに接続されるコンピュータの数は、一例であって、これに限られない。
トランザクション発行装置2は、ユーザの入力に基づいてトランザクションを発行し、通信ネットワークを介して複数のブロック検証装置3に送信する。
図11に示すトランザクションは、処理データと電子署名とを含み、電子署名の対象は処理データである。これに対し、図2に示すように、本実施形態のトランザクションは、処理データと、プライベートデータと、プライベートデータハッシュ値と、電子署名とを含む。処理データは、例えば、共有DBに格納されている、処理を実行するためのプログラムを宛先として示す情報であってもよいし、処理内容を示す情報であってもよい。処理データは、ブロック検証システム1が備える全てのブロック検証装置3で共有される。電子署名は、処理データ及びプライベートデータハッシュ値を対象範囲とする電子署名である。プライベートデータは、電子署名の対象に含まれないデータであり、このため、トランザクションからプライベートデータを分離することができる。プライベートデータハッシュ値は、プライベートデータをハッシュ関数で演算することによって算出されるハッシュ値である。
プライベートデータが電子署名の対象範囲に含まれないことによって、悪意のある第三者によってプライベートデータが改竄されることが懸念される。しかし、処理データとともにプライベートデータハッシュ値に対して電子署名が付与されているため、仮にプライベートデータが改竄されると、改竄されたプライベートデータのハッシュ値と、トランザクションに含まれるプライベートデータハッシュ値とに不整合が発生する。したがって、改竄を発見することができる。
<全体でプライベートDBが共有されるブロック検証システム>
まず、ブロック検証システム1における全てのブロック検証装置3においてプライベートDBが共有される場合について説明する。
まず、ブロック検証システム1における全てのブロック検証装置3においてプライベートDBが共有される場合について説明する。
図3に示すように、ブロック検証装置3は、通信部31と、格納部32と、トランザクション処理部33と、ブロック処理部34とを備える。
通信部31は、トランザクション発行装置2からデータを受信し、他のブロック検証装置3とデータを送受信する。
格納部32は、台帳部321と、共有DB322と、プライベートDB323と、設定ファイル格納部324と、キャッシュ325とを含む。
台帳部321は、1つ以上のブロックの集合を格納する。各ブロックには、トランザクションと、直近に作成されたブロックのハッシュ値とが含まれる。台帳部321において、1つ以上のブロックがチェーン状に連鎖して格納される。「連鎖する」とは、上述のように、各ブロックに、1つ前のブロックのブロックヘッダのハッシュ値を含めることである。このため、例えば、ブロックチェーンで互いに連鎖されているブロックのいずれかについて改竄が行われると、該ブロックのブロックヘッダのハッシュ値は全く異なる値となる。このため、ブロックヘッダのハッシュ値と、1つ後ろのブロックのブロックヘッダに記載されたハッシュ値とが異なることになる。したがって、トランザクション情報を改竄したことが明らかになり、改竄を防止する仕組みとして利用される。
共有DB322は、プログラム及びコードを格納する。共有DB322は、共有DBに格納されているデータに対するトランザクションによる処理の実行結果に基づく状態を格納する。
プライベートDB323は、プライベートデータに対するトランザクションによる処理の実行結果に基づく状態を格納する。
設定ファイル格納部324は、プライベートデータに対する処理内容をブロックチェーンネットワークの構築前に予めノード間で決めておく場合に、当該処理内容を設定ファイルとして格納する。
キャッシュ325は、ブロック処理部34が生成した、トランザクションを含むブロックを一時的に格納する。
トランザクション処理部33は、通信部31によって受信されたトランザクションの正当性を検証する。具体的には、トランザクション処理部33は、トランザクションに含まれる署名に基づきプライベートデータに改竄がないことを検証する。トランザクション処理部33は、トランザクションの正当性が検証されると、処理データに記述された処理を実行環境で実行する。このとき、図4に示すように、トランザクション処理部33は、処理データに記述された、共有DB322に格納されているコード及びプログラムを用いて、共有DB322に格納されているデータに対して実行環境で処理を実行する。また、トランザクション処理部33は、処理データに記述された処理の実行結果をブロック処理部34に出力する。
また、トランザクション処理部33は、共有DB322に格納されているデータに対する処理の実行が成功すると、トランザクションに含まれるプライベートデータに対して、処理データに記述された処理を実行する。また、トランザクション処理部33は、プライベートデータに対する処理の実行結果をブロック処理部34に出力する。トランザクション処理部33は、設定ファイル格納部324に予め格納されている設定ファイルに基づいてプライベートデータに対して処理を実行してもよい。トランザクション処理部33は、設定ファイルの他に共有DB322を用いて、グループ分けと同様にプライベートデータに対する処理を定義し、該定義に基づいて処理を実行してもよい。
また、ブロック処理部34は、トランザクションに記述された処理の実行結果に基づく状態を格納した共有DB322(トランザクション後の共有DB)のハッシュ値である共有ハッシュ値を算出する。同様にして、ブロック処理部34は、トランザクションに記述された処理が実行された後の状態を格納するプライベートDB323(トランザクション後のプライベートDB)のハッシュ値であるプライベートハッシュ値を算出する。さらに、ブロック処理部34は、プライベートデータを含まないトランザクションをまとめたトランザクション群と、共有ハッシュ値と、プライベートハッシュ値とを含むブロックを新ブロックとして生成する。ブロック処理部34は、生成した新ブロックを未確定のブロックとしてキャッシュ325に格納する。
また、ブロック処理部34は、各トランザクションに含まれていた1つ以上のプライベートデータをまとめたプライベートデータ群を生成する。
通信部31は、ブロック処理部34によって生成されたプライベートデータ群と新ブロックとを互いに関連付けて、図5に示すように他のブロック検証装置3に送信する。
ブロック検証装置3の通信部31は、互いに関連付けられたプライベートデータ群と新ブロックとを受信する。ここで、ブロック検証装置3が、プライベートデータ群と新ブロックとを受信した場合の処理について説明する。
トランザクション処理部33は、通信部31によって受信された、互いに関連付けられたプライベートデータ群と新ブロックとを用いてトランザクションに付された署名を検証する。また、トランザクション処理部33は、プライベートデータのハッシュ値を用いてプライベートデータを特定する。また、トランザクション処理部33は、トランザクション実行後の共有DB322及びプライベートDB323の状態を検証する。トランザクション処理部33は、共有DB322及びプライベートDB323の状態の正当性が検証された場合、ブロックを台帳部321へ追加し、共有DB322及びプライベートDB323を更新する。
<グループごとにプライベートDBが共有されるブロック検証システム>
次に、ブロック検証システム1が複数のグループで構成され、各ブロック検証装置3がいずれかのグループに属する場合における合意形成について説明する。各グループに属するブロック検証装置3のプライベートDB323はグループ内のみで共有される。
次に、ブロック検証システム1が複数のグループで構成され、各ブロック検証装置3がいずれかのグループに属する場合における合意形成について説明する。各グループに属するブロック検証装置3のプライベートDB323はグループ内のみで共有される。
具体的に、図6に示すように、ブロック検証システム1が3つのグループによって構成される例について説明する。以下では、3つのグループそれぞれをグループA、グループB、グループCという。また、各グループに属する複数のブロック検証装置3それぞれにおいて、該グループを代表するブロック検証装置3を「グループリーダ装置」(グループリーダブロック検証装置)3GLという。
また、グループリーダ装置3GLではないブロック検証装置3を「メンバ装置3M」という。また、ブロック検証システム1を構成する全てのブロック検証装置3を代表する1つのブロック検証装置3を「全体リーダ装置」(全体リーダブロック検証装置)3Lという。
また、グループリーダ装置3GLではないブロック検証装置3を「メンバ装置3M」という。また、ブロック検証システム1を構成する全てのブロック検証装置3を代表する1つのブロック検証装置3を「全体リーダ装置」(全体リーダブロック検証装置)3Lという。
(第1合意形成プロセス)
各ブロック検証装置3の通信部31は、トランザクション発行装置2によって、図2に示したトランザクションが発行されると、送信先である他のブロック検証装置3が属するグループに応じてデータを送信する。具体的には、通信部31は、同一のグループに属する他のブロック検証装置3には、プライベートデータを含むトランザクションを送信する。一方、通信部31は、異なるグループに属する他のブロック検証装置3には、プライベートデータを除いたトランザクションを送信する。このとき、通信部31は、設定ファイル格納部324に予め格納されている設定に基づいて他のブロック検証装置3が属するグループを判定する。また、通信部31は、トランザクションにより共有DB322に格納されているプログラムが実行されることによって、他のブロック検証装置3が属するグループを判定してもよい。
各ブロック検証装置3の通信部31は、トランザクション発行装置2によって、図2に示したトランザクションが発行されると、送信先である他のブロック検証装置3が属するグループに応じてデータを送信する。具体的には、通信部31は、同一のグループに属する他のブロック検証装置3には、プライベートデータを含むトランザクションを送信する。一方、通信部31は、異なるグループに属する他のブロック検証装置3には、プライベートデータを除いたトランザクションを送信する。このとき、通信部31は、設定ファイル格納部324に予め格納されている設定に基づいて他のブロック検証装置3が属するグループを判定する。また、通信部31は、トランザクションにより共有DB322に格納されているプログラムが実行されることによって、他のブロック検証装置3が属するグループを判定してもよい。
全体リーダ装置3Lの通信部31は、各ブロック検証装置3の通信部31からプライベートデータを含むトランザクション、あるいはプライベートデータを除いたトランザクションを受信する。図6に示す例では、全体リーダ装置3LはグループBに属する。そのため、グループA及びグループCに属するブロック検証装置3から受信したトランザクションにはプライベートデータが含まれておらず、グループBに属するブロック検証装置3から受信したトランザクションにはプライベートデータが含まれている。
全体リーダ装置3Lのトランザクション処理部33は、受信したトランザクションの正当性を検証し、ブロックに含めるトランザクションを仮決めする。全体リーダ装置3Lの通信部31は、各グループリーダ装置3GLに対して、ブロックではなく仮決めしたトランザクションのリスト(第1のトランザクションリスト)を送信する。このとき、全体リーダ装置3Lは、各グループリーダ装置3GLに対して、全体リーダ装置3Lが送信したトランザクションのリストに基づいて処理を実行し、実行結果に基づく状態のダイジェストを全体リーダ装置3Lに送信するよう要求する。リストは、トランザクションそのものであってもよいし、該トランザクションを識別するための情報であってもよい。ダイジェストは、例えばハッシュ値などの要約データである。
各グループリーダ装置3GLの通信部31は、全体リーダ装置3Lから、トランザクションのリストを受信する。通信部31がリストを受信すると、トランザクション処理部33は、リストによって識別されるトランザクションに対応するプライベートデータが格納部32のキャッシュ325に格納されているか否かを確認する。トランザクション処理部33は、対応するプライベートデータが格納されていることを確認した場合、トランザクションを実行し、ブロック処理部34に実行結果を出力する。具体的には、トランザクション処理部33は、受信したリストに設定された各トランザクションについて、当該トランザクションに対応するプライベートデータが格納部32に存在するか否かを判定する。対応するプライベートデータが格納されているトランザクションについては、トランザクション処理部33は、当該トランザクションを自身が属するグループのトランザクションであるとみなし、当該トランザクションを実行する。対応するプライベートデータが格納されていないトランザクションについては、トランザクション処理部33は、当該トランザクションを自身が属するグループではない他のグループのトランザクションであるとみなし、当該トランザクションを実行しない。ブロック処理部34は、トランザクション処理部33によって実行結果が出力されると、実行結果に基づいてプロポーザルを生成する。プロポーザルは、実行結果に基づくトランザクションのリスト(第2のトランザクションリスト)、実行後のプライベートDB323のダイジェスト、及びプライベートデータ群を含む。実行結果に基づくトランザクションのリストは、トランザクションの実行に応じたリストであって、具体的には、トランザクション処理部33が実行したトランザクション(すなわち、当該グループリーダ装置3GLが属するグループのトランザクション)のリストである。ブロック処理部34は、トランザクション処理部33が実行したトランザクションのみを設定した、自身のグループ用のトランザクションリストを生成する。
グループリーダ装置3GLのブロック処理部34がプロポーザルを生成すると、通信部31は、該グループリーダ装置3GLのグループに属するメンバ装置3Mを含むブロック検証装置3に該プロポーザルを送信する。そして、例えばPBFTのような確定的な合意プロセスにより該プロポーザルについての合意が形成される。
各グループにおいてプロポーザルについての合意が形成されると、各グループリーダ装置3GLは、合意が形成されたプロポーザルに含まれるトランザクションのリストと、トランザクションの実行後のプライベートDB323のダイジェストと、プライベートデータ群のダイジェストとを、ブロック検証システム1を構成する他の全てのブロック検証装置3に送信する。ここで、各グループリーダ装置3GLではなく、各グループに属する任意のメンバ装置3Mがトランザクションのリストと、トランザクションの実行後のプライベートDB323のダイジェストと、プライベートデータ群のダイジェストとを送信してもよい。これにより、特定のグループに属するブロック検証装置3はプライベートデータを保持することができる。また、他のグループに属するブロック検証装置3は、特定のグループで合意が形成されたトランザクション、該トランザクションの実行後のプライベートDB323の状態のダイジェスト、及びプライベートデータ群のダイジェストを保持することができる。
(第2合意形成プロセス)
全体リーダ装置3Lの通信部31は、各グループに属するブロック検証装置3(グループリーダ装置3GL)から該グループで合意が形成されたトランザクションのリスト(第2のトランザクションリスト)と、プライベートDB323の状態のダイジェストと、プライベートデータ群のダイジェストとを受信する。そして、全体リーダ装置3Lのブロック処理部34は、仮決めしたトランザクションのうち、各グループリーダ装置3GLから受信しなかったトランザクションを仮トランザクションから除外してブロックを生成する。すなわち、全体リーダ装置3Lのブロック処理部34は、各グループリーダ装置3GLに送信したリスト(第1のトランザクションリスト)に設定された仮トランザクションのうち、各グループリーダ装置3GLから送信された全てのリスト(第2のトランザクションリスト)のいずれにも存在しない不正なトランザクションを、前記リスト(第1のトランザクションリスト)から除外したトランザクションのリスト(第3のトランザクションリスト)を生成する。そして、ブロック処理部34は、不正なトランザクションを除外したリスト(第3のトランザクションリスト)のトランザクションを用いてブロックを生成する。
全体リーダ装置3Lの通信部31は、各グループに属するブロック検証装置3(グループリーダ装置3GL)から該グループで合意が形成されたトランザクションのリスト(第2のトランザクションリスト)と、プライベートDB323の状態のダイジェストと、プライベートデータ群のダイジェストとを受信する。そして、全体リーダ装置3Lのブロック処理部34は、仮決めしたトランザクションのうち、各グループリーダ装置3GLから受信しなかったトランザクションを仮トランザクションから除外してブロックを生成する。すなわち、全体リーダ装置3Lのブロック処理部34は、各グループリーダ装置3GLに送信したリスト(第1のトランザクションリスト)に設定された仮トランザクションのうち、各グループリーダ装置3GLから送信された全てのリスト(第2のトランザクションリスト)のいずれにも存在しない不正なトランザクションを、前記リスト(第1のトランザクションリスト)から除外したトランザクションのリスト(第3のトランザクションリスト)を生成する。そして、ブロック処理部34は、不正なトランザクションを除外したリスト(第3のトランザクションリスト)のトランザクションを用いてブロックを生成する。
全体リーダ装置3Lのトランザクション処理部33は、各グループリーダから受信したトランザクションのリストの順にトランザクションを実行し、実行結果に基づく共有DB322の状態を取得する。すなわち、トランザクション処理部33は、各グループリーダから受信した各グループのリスト(第2のトランザクションリスト)に設定されたトランザクションの順番を変えないように、不正なトランザクションを除外したリスト(第3のトランザクションリスト)に設定されたトランザクションを順次、実行する。全体リーダ装置3Lのブロック処理部34は、トランザクションのリストと、共有DB322のダイジェストと、各グループのプライベートDB323のダイジェストと、各グループのプライベートデータ群のダイジェストとを含むブロックを生成し、他のブロック検証装置3に送信する。そして、全体リーダ装置3Lによって生成されたブロックについて、例えばPBFTのような確定的な合意形成アルゴリズムを用いて全てのブロック検証装置3によって合意が形成される。このとき、他のグループのプライベートDB323及びプライベートデータ群については、第1合意形成プロセスによって合意が形成されていることを確認することによって、合意が形成される。
続いて、本実施形態におけるブロック検証システム1のブロック検証方法について図7を参照して説明する。
各ブロック検証装置3の通信部31は、全体リーダ装置3Lにトランザクションを送信する(ステップS11)。具体的には、各ブロック検証装置3の通信部31は、全体リーダ装置3Lが該ブロック検証装置3と同一のグループに属する場合、プライベートデータを含むトランザクションを送信する。一方、各ブロック検証装置3の通信部31は、全体リーダ装置3Lが該ブロック検証装置3と異なるグループに属する場合、プライベートデータを含まないトランザクションを送信する。図7においては、グループBに属するメンバ装置3M_Bが、全体リーダ装置3Lにトランザクションを送信する例を示している。
全体リーダ装置3Lの通信部31によってブロック検証装置3からトランザクションが受信されると、該全体リーダ装置3Lのトランザクション処理部33は、トランザクションを検証する(ステップS12)。
トランザクションが正当であると検証されると、トランザクション処理部33は、ブロックに含めるトランザクションを仮決めする(ステップS13)。
全体リーダ装置3Lの通信部31は、トランザクションのリストをグループリーダ装置3GLに送信する(ステップS14)。なお、図7においては、トランザクションのリストをグループBに属するグループリーダ装置3GLであるグループリーダ装置3GL_Bに送信する例が示されている。
グループリーダ装置3GLの通信部31によってトランザクションのリストが受信されると、グループリーダ装置3GLのトランザクション処理部33は、トランザクションを実行し、実行結果をブロック処理部34に出力する(ステップS15)。
グループリーダ装置3GLのブロック処理部34は、実行結果に基づくリスト、実行後のプライベートDB323のダイジェスト、及びプライベートデータ群を含むプロポーザルを生成する(ステップS16)。
グループリーダ装置3GLの通信部31は、該グループリーダ装置3GLが属するグループのメンバ装置3Mそれぞれにプロポーザルを送信する(ステップS17)。なお、図7においては、グループリーダ装置3GL_BがグループBに属するメンバ装置3M_Bそれぞれにプロポーザルを送信する例が示されている。
各メンバ装置3Mのトランザクション処理部33は、プロポーザルを検証する(ステップS18)。
ステップS18でプロポーザルが正当であると検証されると、各メンバ装置3Mの通信部31は、グループリーダ装置3GLを含む、グループ内の他のブロック検証装置3に、自身の電子署名を付してプロポーザルを送信する(ステップS19)。
ステップS19で、一定数以上のブロック検証装置3から電子署名が付されたプロポーザルが送信されると、グループ内のブロック検証装置3(グループリーダ装置3GLおよびメンバ装置3M)のブロック処理部34は、該プロポーザルについての合意が形成されたと判定する(ステップS20)。
各ブロック検証装置3の通信部31は、合意が形成されたことを他のブロック検証装置3に送信し(ステップS21)、台帳にブロックを追加する(ステップS22)。
グループリーダ装置3GLは、合意が形成されたプロポーザルに含まれるトランザクションのリストと、トランザクションの実行後のプライベートDB323のダイジェストと、プライベートデータ群のダイジェストとを、他のグループのブロック検証装置3を含む、他の全てのブロック検証装置3に送信する(ステップS23)。なお、図7においては、グループリーダ装置3GL_Bが、グループAおよびグループCに属するそれぞれグループリーダ装置3GL_Aおよびグループリーダ装置3GL_C等に、トランザクションのリストと、トランザクションの実行後のプライベートDB323のダイジェストと、プライベートデータ群のダイジェストとを送信する例が示されている。
なお、上述したブロック検証装置3として機能させるためにコンピュータを好適に用いることができる。そのようなコンピュータは、ブロック検証装置3の各機能を実現する処理内容を記述したプログラムを該コンピュータのデータベースに格納しておく。該コンピュータのCPUによってこのプログラムを読み出して実行させることで、コンピュータは、ブロック検証装置3としての機能を実現することができる。
また、プログラムは、コンピュータ読取り可能媒体に記録されていてもよい。コンピュータ読取り可能媒体を用いれば、プログラムをコンピュータにインストールすることが可能である。ここで、プログラムが記録されたコンピュータ読取り可能媒体は、非一過性(non-transitory)の記録媒体であってもよい。非一過性の記録媒体は、特に限定されるものではないが、例えば、CD−ROMやDVD−ROMなどの記録媒体であってもよい。
以上のように、本実施形態によれば、グループリーダ装置3GLとしてのブロック検証装置3は、全体リーダ装置3Lから受信したリストによって識別されるトランザクションを実行し、実行結果に基づいてプロポーザルを生成し、同一のグループに属する他のブロック検証装置3に送信する。そして、グループリーダ装置3GLは、プロポーザルについての合意が形成されたと判定すると、トランザクションのリスト、並びにトランザクションの実行後のプライベートDB323のダイジェスト及びプライベートデータ群のダイジェストを全てのブロック検証装置3に送信する。そのため、ブロック検証システム1は、共有範囲が異なるプライベートDB323の状態についても合意を形成することができる。また、本実施形態によれば、複数のデータベースを持つブロックチェーンシステムの場合に、PBFTのような確定的な合意プロセスを利用し、共有範囲の異なる複数のプライベートDBの状態について合意を形成する
上述の実施形態は代表的な例として説明したが、本発明の趣旨及び範囲内で、多くの変更及び置換ができることは当業者に明らかである。したがって、本発明は、上述の実施形態によって制限するものと解するべきではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
1 ブロック検証システム
2 トランザクション発行装置
3 ブロック検証装置
4 通信ネットワーク
31 通信部
32 格納部
33 トランザクション処理部
34 ブロック処理部
321 台帳部
322 共有DB
323 プライベートDB
324 設定ファイル格納部
325 キャッシュ
2 トランザクション発行装置
3 ブロック検証装置
4 通信ネットワーク
31 通信部
32 格納部
33 トランザクション処理部
34 ブロック処理部
321 台帳部
322 共有DB
323 プライベートDB
324 設定ファイル格納部
325 キャッシュ
Claims (6)
- 複数のグループにより構成され、前記グループのそれぞれが複数のブロック検証装置を備えるブロック検証システムにおいて、前記グループ内におけるブロック検証装置を代表するブロック検証装置であって、
前記グループ内で共有されるプライベートデータベースと、
前記複数のブロック検証装置の全体を代表するブロック検証装置である全体リーダ装置から第1のトランザクションリストを受信する通信部と、
第1のトランザクションリストによって識別されるトランザクションを実行するトランザクション処理部と、
前記トランザクションの実行に応じた第2のトランザクションリスト、前記トランザクションの実行後のプライベートデータベースのダイジェスト、及び前記トランザクションに含まれる、前記グループ内で共有されるプライベートデータをまとめたプライベートデータ群を含むプロポーザルを生成するブロック処理部と、を備え、
前記通信部は、同一のグループに属する他のブロック検証装置に前記プロポーザルを送信し、前記ブロック処理部により前記プロポーザルについての合意が形成されたと判定すると、前記第2のトランザクションリスト、前記プライベートデータベースのダイジェスト、及び前記プライベートデータ群のダイジェストを、他の全てのブロック検証装置に送信することを特徴とするブロック検証装置。 - 複数のグループにより構成され、前記グループのそれぞれが複数のブロック検証装置を備えるブロック検証システムにおいて、全ての前記ブロック検証装置を代表するブロック検証装置であって、
前記グループ内で共有されるプライベートデータベースと、
全てのブロック検証装置で共有される共有データベースと、
前記グループ内の前記ブロック検証装置を代表する各グループリーダブロック検証装置に、第1のトランザクションリストをそれぞれ送信し、
前記グループリーダブロック検証装置によって、前記第1のトランザクションリストによって識別されるトランザクションの実行に応じて生成される第2のトランザクションリスト、前記トランザクションの実行後のプライベートデータベースのダイジェスト、及び前記トランザクションに含まれる、前記グループ内で共有されるプライベートデータをまとめたプライベートデータ群を含むプロポーザルの合意が形成された場合に、前記第2のトランザクションリスト、前記プライベートデータベースのダイジェスト、及び前記プライベートデータ群のダイジェストを受信する通信部と、
各グループリーダブロック検証装置から受信した前記第2のトランザクションリストに対応するトランザクションを実行し、該実行結果に基づいて更新された前記共有データベースの状態を取得するトランザクション処理部と、
前記トランザクション処理部が実行したトランザクションのリスト、前記共有データベースの状態、前記プライベートデータベースのダイジェスト及び前記プライベートデータ群のダイジェストを含むブロックを、他のブロック検証装置に送信することによって該ブロックについての合意を形成するブロック処理部とを備えることを特徴とするブロック検証装置。 - 複数のグループにより構成され、前記グループのそれぞれが複数のブロック検証装置を備えるブロック検証システムにおいて、前記グループ内におけるブロック検証装置を代表するブロック検証装置が実行するブロック検証方法であって、
前記ブロック検証装置は、前記グループ内で共有される共有されるプライベートデータベースを備え、
前記複数のブロック検証装置の全体を代表するブロック検証装置である全体リーダ装置から、第1のトランザクションリストを受信するステップと、
第1のトランザクションリストによって識別されるトランザクションを実行するステップと、
前記トランザクションの実行に応じた第2のトランザクションリストと、プライベートデータベースのダイジェストと、前記トランザクションに含まれる前記グループ内で共有されるプライベートデータをまとめたプライベートデータ群とを含むプロポーザルを生成するステップと、
同一のグループに属する他のブロック検証装置に前記プロポーザルを送信するステップと、
前記プロポーザルについての合意が形成された場合、前記第2のトランザクションリスト、前記トランザクションの実行に基づくプライベートデータのダイジェスト及びプライベートデータ群のダイジェストを他の全てのブロック検証装置に送信するステップと、
を含むことを特徴とするブロック検証方法。 - 複数のグループにより構成され、前記グループのそれぞれが複数のブロック検証装置を備えるブロック検証システムにおいて、全ての前記ブロック検証装置を代表するブロック検証装置が実行するブロック検証方法であって、
前記ブロック検証装置は、前記グループ内で共有されるプライベートデータベースと、 全てのブロック検証装置で共有される共有データベースと、を備え、
前記グループ内の前記ブロック検証装置を代表する各グループリーダブロック検証装置に、第1のトランザクションリストをそれぞれ送信するステップと、
前記グループリーダブロック検証装置によって、前記第1のトランザクションリストによって識別されるトランザクションの実行に応じて生成される第2のトランザクションリスト、前記トランザクションの実行後のプライベートデータベースのダイジェスト、及び前記トランザクションに含まれる、前記グループ内で共有されるプライベートデータをまとめたプライベートデータ群を含むプロポーザルの合意が形成された場合に、前記第2のトランザクションリスト、前記プライベートデータベースのダイジェスト、及び前記プライベートデータ群のダイジェストを受信するステップと、
各グループリーダブロック検証装置から受信した前記第2のトランザクションリストに対応するトランザクションを実行し、該実行結果に基づいて更新された前記共有データベースの状態を取得するステップと、
前記実行したトランザクションのリスト、前記共有データベースの状態、前記プライベートデータベースのダイジェスト及び前記プライベートデータ群のダイジェストを含むブロックを、他のブロック検証装置に送信することによって該ブロックについての合意を形成するステップと、
を含むことを特徴とするブロック検証方法。 - 請求項1に記載のブロック検証装置としてコンピュータを機能させるためのプログラム。
- 請求項2に記載のブロック検証装置としてコンピュータを機能させるためのプログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018007601 | 2018-01-19 | ||
JP2018007601 | 2018-01-19 | ||
PCT/JP2019/001370 WO2019142884A1 (ja) | 2018-01-19 | 2019-01-18 | ブロック検証装置、ブロック検証方法、及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2019142884A1 JPWO2019142884A1 (ja) | 2020-11-26 |
JP6951649B2 true JP6951649B2 (ja) | 2021-10-20 |
Family
ID=67301764
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019566512A Active JP6951649B2 (ja) | 2018-01-19 | 2019-01-18 | ブロック検証装置、ブロック検証方法、及びプログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US11372847B2 (ja) |
JP (1) | JP6951649B2 (ja) |
WO (1) | WO2019142884A1 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210256016A1 (en) * | 2018-06-25 | 2021-08-19 | Commonwealth Scientific And Industrial Research Organisation | Blockchain system and method |
EP3837652B1 (en) * | 2020-04-15 | 2022-09-07 | Alipay (Hangzhou) Information Technology Co., Ltd. | Distributed blockchain data storage under account model |
EP3844642A4 (en) | 2020-04-20 | 2021-08-25 | Alipay (Hangzhou) Information Technology Co., Ltd. | STORING BLOCKCHAIN DATA DISTRIBUTED UNDER AN ACCOUNT MODEL |
CN111813795B (zh) * | 2020-08-28 | 2020-12-04 | 支付宝(杭州)信息技术有限公司 | 在区块链网络中确认交易的方法及装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA3019642C (en) * | 2016-04-01 | 2023-03-07 | Jpmorgan Chase Bank, N.A. | Systems and methods for providing data privacy in a private distributed ledger |
CN110050474A (zh) * | 2016-12-30 | 2019-07-23 | 英特尔公司 | 用于物联网网络中的复合对象的子对象的类型命名和区块链 |
CN107196989B (zh) * | 2017-03-21 | 2019-08-09 | 阿里巴巴集团控股有限公司 | 一种业务请求的处理方法及装置 |
JP6199518B1 (ja) * | 2017-03-23 | 2017-09-20 | 株式会社bitFlyer | プライベートノード、プライベートノードにおける処理方法、及びそのためのプログラム |
CN107392040B (zh) * | 2017-04-28 | 2019-08-09 | 阿里巴巴集团控股有限公司 | 一种共识验证的方法及装置 |
US10616324B1 (en) * | 2017-07-20 | 2020-04-07 | Architecture Technology Corporation | Decentralized ledger system and method for enterprises |
-
2019
- 2019-01-18 JP JP2019566512A patent/JP6951649B2/ja active Active
- 2019-01-18 US US16/957,802 patent/US11372847B2/en active Active
- 2019-01-18 WO PCT/JP2019/001370 patent/WO2019142884A1/ja active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2019142884A1 (ja) | 2019-07-25 |
US20200401577A1 (en) | 2020-12-24 |
JPWO2019142884A1 (ja) | 2020-11-26 |
US11372847B2 (en) | 2022-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2019204707B2 (en) | Program execution and data proof scheme using multiple key pair signatures | |
EP3673620B1 (en) | Shared blockchain data storage | |
CN110915164B (zh) | 基于可信执行环境中执行的智能合约操作处理区块链数据 | |
US20210281413A1 (en) | Blockchain-based transaction method and apparatus, and remitter device | |
CN111108478B (zh) | 一种用于通信和共享区块链数据的方法、系统、和装置 | |
JP6951649B2 (ja) | ブロック検証装置、ブロック検証方法、及びプログラム | |
CN110945550B (zh) | 在可信执行环境下处理和存储区块链数据 | |
US11336455B2 (en) | Consensus protocol for blockchain DAG structure | |
US11895248B2 (en) | Method and apparatus for generating blockchain transaction | |
JP6370016B2 (ja) | 階層型ネットワークシステム、これに用いられるノード及びプログラム | |
CN112685505B (zh) | 一种交易数据处理方法、装置、计算机设备及存储介质 | |
JP7012879B2 (ja) | 誤り訂正符号に基づく共有されたブロックチェーンデータの記憶のコンセンサス | |
CN111837115A (zh) | 共享的区块链数据存储 | |
TWI740575B (zh) | 用於優先化共用區塊鏈資料儲存的方法、系統和裝置 | |
CN111418183B (zh) | 区块链区块的异步处理 | |
TWI759791B (zh) | 基於錯誤校正碼的共享區塊鏈資料儲存的方法、系統及裝置 | |
KR102050007B1 (ko) | 블록체인 기반 외부 서비스 지원 시스템 및 그 방법 | |
US20210150517A1 (en) | Invoice invalidation method and apparatus based on blockchain, and electronic device | |
JP5801482B2 (ja) | キーバリューストレージに対するデータの保存および読み出しを行う方法およびシステム | |
CN110827034B (zh) | 用于发起区块链交易的方法及装置 | |
Ali et al. | Blockstack technical whitepaper | |
Muhtasim et al. | Secure data transaction and data analysis of IOT devices using blockchain | |
EP3841549B1 (en) | Managing transaction requests in ledger systems | |
KR102524515B1 (ko) | 블록체인 기반 분산 신뢰 서비스 제공 방법 및 장치 | |
JP7424490B2 (ja) | 登録者端末、検証者端末、管理システムおよびプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200603 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20210824 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210906 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6951649 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |