(57)【要約】【課題】分散台帳におけるトランザクションの有効性に関する合意形成を行う際に、承認権限の独占を防止し、ひいては信頼性の高い分散台帳を実現する。【解決手段】トランザクション判定装置は、有効性の判定対象である対象トランザクションと、前記対象トランザクションによって承認されるトランザクションと、を含む複数のトランザクションを保持し、該複数のトランザクションの荷重に基づいて、該複数のトランザクションそれぞれの累積荷重を算出し、トランザクションペアについて生成者が同一人物であるか否かを判定し、該判定の結果に基づいて、累積荷重を更新し、更新した累積荷重に基づいて、対象トランザクションの有効性を判定する。【選択図】図１
2020107004.tif 000002
【特許請求の範囲】
【請求項１】
分散台帳方式におけるトランザクションの有効性を判定するトランザクション判定装置であって、
プロセッサとメモリと、を含み、
前記メモリは、複数のトランザクションを保持し、
前記複数のトランザクションは、
前記複数のトランザクション間の承認関係によって有向非循環グラフを構成し、
前記複数のトランザクションそれぞれの荷重及び生成者を示し、
有効性の判定対象である対象トランザクションと、前記対象トランザクションによって承認されるトランザクションと、を含み、
前記プロセッサは、
前記複数のトランザクションの荷重に基づいて、前記複数のトランザクションそれぞれの累積荷重を算出し、
前記複数のトランザクションに含まれるトランザクションからなる１以上のトランザクションペアそれぞれについて前記生成者が同一人物であるか否かを判定し、当該判定の結果に基づいて、前記累積荷重を更新する更新処理を実行し、
前記更新した累積荷重に基づいて、前記対象トランザクションの有効性を判定する、トランザクション判定装置。
【請求項２】
請求項１に記載のトランザクション判定装置であって、
前記プロセッサは、
前記更新処理において、
前記生成者が同一人物である承認トランザクションを同一のクラスタに分類し、
前記クラスタそれぞれの荷重の代表値を算出し、
前記代表値に基づいて、前記累積荷重を更新する、トランザクション判定装置。
【請求項３】
請求項１に記載のトランザクション判定装置であって、
前記累積荷重は、最大累積荷重を含み、
前記プロセッサは、
前記更新処理において、
前記生成者が同一人物であるか否かを未特定のトランザクションが全て異なる人物によって生成された場合における累積荷重を、前記複数のトランザクションそれぞれの最大累積荷重として算出し、
前記１以上のトランザクションペアそれぞれについて前記生成者が同一人物であるか否かの判定の結果に基づいて、前記最大累積荷重を更新し、
前記最大累積荷重に対する閾値処理に基づいて、前記対象トランザクションの有効性を判定する、トランザクション判定装置。
【請求項４】
請求項３に記載のトランザクション判定装置であって、
前記プロセッサは、
前記更新した最大累積荷重が所定の条件を満たしたと判定した場合、前記更新した最大累積荷重に基づいて、前記対象トランザクションの有効性を判定し、
前記更新した最大累積荷重が所定の条件を満たしたと判定した場合、前記更新処理を再度実行する、トランザクション判定装置。
【請求項５】
請求項１に記載のトランザクション判定装置であって、
前記累積荷重は、最小累積荷重を含み、
前記プロセッサは、
前記更新処理において、
前記生成者が同一人物であるか否かを未特定のトランザクションが、全て同一人物によって生成された場合における累積荷重を、前記複数のトランザクションそれぞれの最小累積荷重として算出し、
前記１以上のトランザクションペアそれぞれについて前記生成者が同一人物であるか否かの判定の結果に基づいて、前記最小累積荷重を更新し、
前記最小累積荷重に対する閾値処理に基づいて、前記対象トランザクションの有効性を判定する、トランザクション判定装置。
【請求項６】
請求項５に記載のトランザクション判定装置であって、
前記プロセッサは、
前記更新した最小累積荷重が所定の条件を満たしたと判定した場合、前記更新した最小累積荷重に基づいて、前記対象トランザクションの有効性を判定し、
前記更新した最小累積荷重が所定の条件を満たしたと判定した場合、前記更新処理を再度実行する、トランザクション判定装置。
【請求項７】
請求項１に記載のトランザクション判定装置であって、
前記複数のトランザクションは、前記複数のトランザクションの生成者を示す情報として、前記生成者の識別子を含む、トランザクション判定装置。
【請求項８】
請求項１に記載のトランザクション判定装置であって、
前記複数のトランザクションは、前記複数のトランザクションの生成者を示す情報として、前記生成者の電子署名と、前記電子署名の検証情報と、を含む、トランザクション判定装置。
【請求項９】
請求項８に記載のトランザクション判定装置であって、
前記電子署名は、前記生成者の生体情報を鍵とする生体署名であり、
前記検証情報は、公開テンプレートである、トランザクション判定装置。
【請求項１０】
請求項８に記載のトランザクション判定装置であって、
前記複数のトランザクションそれぞれは、当該トランザクションの前のトランザクションを示し、
前記プロセッサは、
トランザクションペアの一方のトランザクションに含まれる署名と、当該トランザクションペアの他方のトランザクションの前のトランザクションに含まれる検証情報と、を用いて、当該トランザクションペアが同一人物によって生成されたものであるか否かを判定する、トランザクション判定装置。
【請求項１１】
トランザクション判定装置が、分散台帳方式におけるトランザクションの有効性を判定する方法であって、
前記トランザクション判定装置は、
プロセッサとメモリと、を含み、
前記メモリは、複数のトランザクションを保持し、
前記複数のトランザクションは、
前記複数のトランザクション間の承認関係によって有向非循環グラフを構成し、
前記複数のトランザクションそれぞれの荷重及び生成者を示し、
有効性の判定対象である対象トランザクションと、前記対象トランザクションによって承認されるトランザクションと、を含み、
前記方法は、
前記プロセッサが、前記複数のトランザクションの荷重に基づいて、前記複数のトランザクションそれぞれの累積荷重を算出し、
前記プロセッサが、前記複数のトランザクションに含まれるトランザクションからなる１以上のトランザクションペアそれぞれについて前記生成者が同一人物であるか否かを判定し、当該判定の結果に基づいて、前記累積荷重を更新する更新処理を実行し、
前記プロセッサが、前記更新した累積荷重に基づいて、前記対象トランザクションの有効性を判定する、方法。
【請求項１２】
トランザクション判定装置に、分散台帳方式におけるトランザクションの有効性を判定する処理を実行させるためのプログラムであって、
前記トランザクション判定装置は、
プロセッサとメモリと、を含み、
前記メモリは、複数のトランザクションを保持し、
前記複数のトランザクションは、
前記複数のトランザクション間の承認関係によって有向非循環グラフを構成し、
前記複数のトランザクションそれぞれの荷重及び生成者を示し、
有効性の判定対象である対象トランザクションと、前記対象トランザクションによって承認されるトランザクションと、を含み、
前記プログラムは、
前記複数のトランザクションの荷重に基づいて、前記複数のトランザクションそれぞれの累積荷重を算出する手順と、
前記複数のトランザクションに含まれるトランザクションからなる１以上のトランザクションペアそれぞれについて前記生成者が同一人物であるか否かを判定し、当該判定の結果に基づいて、前記累積荷重を更新する更新処理を実行する手順と、
前記更新した累積荷重に基づいて、前記対象トランザクションの有効性を判定する手順と、を前記プロセッサに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、トランザクション判定装置、トランザクション判定方法、及びトランザクション判定プログラムに関する。
【背景技術】
【０００２】
Ｐ２Ｐネットワーク上で非中央集権的な台帳管理を実現する技術として、分散台帳技術がある。分散台帳技術の一例であるＢｉｔｃｏｉｎは、中央集権的組織なしで仮想通貨を実現する分散台帳であり、取引情報を示すトランザクションをまとめたブロックを鎖状に繋げていくことで合意形成を行う。
【０００３】
また、非特許文献１には、分散台帳技術の一例としてＴａｎｇｌｅが記載されている。Ｔａｎｇｌｅは仮想通貨ＩＯＴＡに使われているアルゴリズムであり、トランザクションをノードとする有向非循環グラフを構成することで、合意形成を行い、非中央集権的な台帳管理を行う。
【０００４】
また、特許文献１には、生体情報を秘密鍵として用いて、署名生成を行う生体署名技術が記載されている。
【０００５】
分散台帳技術では、コンセンサスアルゴリズムによって、トランザクションの有効性に関する合意形成を行う。Ｂｉｔｃｏｉｎは、ＰｏＷ（Ｐｒｏｏｆ  ｏｆ  Ｗｏｒｋ）と呼ばれるコンセンサスアルゴリズムを採用している。このＰｏＷは、マイナーと呼ばれる承認者がトランザクションの有効性を検証して、複数のトランザクションから構成されるブロックを生成し、そのブロックに関する計算問題を解く。この計算問題を解くためには膨大な計算能力が必要となるため、少数の個人または組織が独占的に承認を行うことはできず、中央集権的組織がなくても信頼性の高い合意形成を行うことができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１３−１２３１４２号公報
【非特許文献】
【０００７】
【非特許文献１】Ｓｅｒｇｕｅｉ  Ｐｏｐｏｖ， “Ｔｈｅ  Ｔａｎｇｌｅ." (２０１６).
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、近年膨大な計算能力を入手して分散台帳に関する承認権限を独占することで、不正な取引を承認する攻撃が発生している。この問題を解決するために、計算能力に加えて資産の量やコミュニティへの貢献度を考慮する、ＰｏＳ（Ｐｒｏｏｆ  ｏｆ  Ｓｔａｋｅ）やＰｏＡ（Ｐｒｏｏｆ  ｏｆ  Ａｃｔｉｖｉｔｙ）などが提案されているが、承認権限を独占されるリスクは依然として高い。
【０００９】
一方、Ｔａｎｇｌｅは、トランザクション生成者が同時に過去のトランザクションを承認するモデルを有し、承認者へ支払う手数料が不要である仮想通貨ＩＯＴＡを実現している。しかし、このＴａｎｇｌｅでも、ＰｏＷと同様に膨大な計算能力を持つ攻撃者は承認権限を独占することが可能となる。
【００１０】
そこで、本発明の一態様は、分散台帳におけるトランザクションの有効性に関する合意形成を行う際に、承認権限の独占を防止し、ひいては信頼性の高い分散台帳を実現することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の一態様は、以下の構成を採用する。分散台帳方式におけるトランザクションの有効性を判定するトランザクション判定装置は、プロセッサとメモリと、を含み、前記メモリは、複数のトランザクションを保持し、前記複数のトランザクションは、前記複数のトランザクション間の承認関係によって有向非循環グラフを構成し、前記複数のトランザクションそれぞれの荷重及び生成者を示し、有効性の判定対象である対象トランザクションと、前記対象トランザクションによって承認されるトランザクションと、を含み、前記プロセッサは、前記複数のトランザクションの荷重に基づいて、前記複数のトランザクションそれぞれの累積荷重を算出し、前記複数のトランザクションに含まれるトランザクションからなる１以上のトランザクションペアそれぞれについて前記生成者が同一人物であるか否かを判定し、当該判定の結果に基づいて、前記累積荷重を更新する更新処理を実行し、前記更新した累積荷重に基づいて、前記対象トランザクションの有効性を判定する、トランザクション判定装置。
【発明の効果】
【００１２】
本発明の一態様によれば、分散台帳におけるトランザクションの有効性に関する合意形成を行う際に、承認権限の独占を防止し、ひいては信頼性の高い分散台帳を実現することができる。
【００１３】
上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１４】
【図１】実施例１における分散台帳システムの構成例を示すブロック図である。
【図２】実施例１におけるトランザクション生成処理とトランザクション確認処理の一例を示すシーケンス図である。
【図３】実施例１におけるトランザクション選択検証処理の一例を示すフローチャートである。
【図４】実施例１におけるトランザクション荷重算出処理の一例を示すフローチャートである。
【図５】実施例１におけるトランザクションのデータ構造例を示すブロック図である
【図６】実施例１における直接参照及び間接参照による検証同一人物確認処理の一例を示す説明図である。
【図７】実施例１における確認対象トランザクションの初期化時の累積荷重の一例を示す説明図である。
【図８】実施例１におけるトランザクション生成端末及びトランザクション確認端末を構成する計算機のハードウェア構成例を示すブロック図である。
【図９】実施例１におけるトランザクション生成端末による、ユーザ初期登録処理の一例を示すフローチャートである。
【図１０】実施例１における確認対象トランザクションの更新後の累積荷重の一例を示す説明図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施形態を図面に基づいて詳細に説明する。本実施形態において、同一の構成には原則として同一の符号を付け、繰り返しの説明は省略する。なお、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。
【００１６】
本実施形態は、分散台帳システムについて説明する。前述したように、分散台帳技術において、膨大な計算能力を持つ攻撃者は承認権限を独占するおそれがある。このような計算能力による承認権限の独占を防ぐ方式として、計算能力、資産量、貢献度等の独占が可能なリソースではなく、少数の個人や組織によって独占が困難なリソースを承認の根拠として使うことが考えられる。
【００１７】
独占困難なリソースの一例として、「人」が挙げられる。世界中の人が参加する分散台帳システムにおいて、１人１票しか投票できない制約を設けることができれば、トランザクションの承認は事実上多数決になる。このような状況では、承認権限を独占するためには、過半数の承認者を味方に付ける必要がある。これは、コンピュータを多数用意して計算能力を独占するのに比べてはるかにハードルが高い。
【００１８】
そこで、本実施形態の分散台帳システムは、トランザクションの有効性を検証する際に、当該トランザクションを承認するトランザクションの生成者の同一人物性を考慮してトランザクションの荷重を定義する。これにより、同一人物からの複数回の承認を防止し、承認権限の独占が困難な信頼性の高い分散台帳を実現することができる。
【００１９】
なお、同一人物による承認の検出を実現する方式として、個人の識別子を照合する方式や、個人が管理する秘密鍵に基づく電子署名と公開鍵の検証を用いる方式の他、指紋、顔、及び静脈などの生体情報を使って本人確認を行う生体認証方式等が挙げられる。特許文献１における、生体情報を秘密鍵として用いた署名生成を行う生体署名を、トランザクションの生成に用いることで、トランザクションを生成した人が同一人物か否かを検出することができる。
【実施例１】
【００２０】
図１は、分散台帳システムの構成例を示すブロック図である。分散台帳システムは、例えば、互いに接続されたトランザクション生成端末１０００及びトランザクション確認端末１１００を含む。トランザクション生成端末１０００は、トランザクションを生成する端末である。トランザクション確認端末１１００は、受信したトランザクションの有効性を検証し、トランザクションを実行する端末である。
【００２１】
トランザクション生成端末１０００は、例えば、トランザクション内容生成部１０１０、トランザクション選択検証部１０２０、秘密情報取得部１０３０、トランザクション署名生成部１０４０、通信部１０５０、及びトランザクション格納部１０９０を含む。
【００２２】
トランザクション内容生成部１０１０は、取引の内容を記述したトランザクションを生成する。トランザクション選択検証部１０２０は、承認するトランザクションを選択し、そのトランザクションが有効であるかを検証する。秘密情報取得部１０３０は、トランザクションを生成する際に必要となる署名生成を行うための秘密情報を取得する。一般的な電子署名に使われる秘密鍵や、指紋、顔、静脈などの生体情報は、いずれも秘密情報の一例である。
【００２３】
トランザクション署名生成部１０４０は、秘密情報取得部１０３０で取得した書名鍵を用いてトランザクションの署名を生成する。通信部１０５０は、ネットワークを介して接続された他の装置とデータの送受信を行う。トランザクション格納部１０９０は、過去に生成されたトランザクションを格納する。
【００２４】
トランザクション確認端末１１００は、例えば、トランザクションハッシュ取得部１１１０、トランザクション荷重算出部１１２０、トランザクション検証部１１３０、トランザクション実行部１１４０、通信部１１５０、及びトランザクション格納部１１９０を含む。
【００２５】
トランザクションハッシュ取得部１１１０は、トランザクションのハッシュ値を算出する。トランザクション荷重算出部１１２０は、対象トランザクションの信頼度を示す荷重を算出する。トランザクション検証部１１３０は、対象トランザクションが有効であるかを検証する。
【００２６】
トランザクション実行部１１４０は、トランザクションが有効であるときに、トランザクション処理を実行する。通信部１１５０は、ネットワークを介して接続された他の装置とデータの送受信を行う。トランザクション格納部１１９０は、過去に生成されたトランザクションを格納する。
【００２７】
図８は、トランザクション生成端末１０００及びトランザクション確認端末１１００を構成する計算機のハードウェア構成例を示すブロック図である。計算機は、例えば、ＣＰＵ８１０、メモリ８２０、補助記憶装置８３０、入力装置８４０、出力装置８５０、及び通信装置８６０を含む。
【００２８】
ＣＰＵ８１０は、プロセッサを含み、メモリ８２０に格納されたプログラムを実行する。メモリ８２０は、不揮発性の記憶素子であるＲＯＭ及び揮発性の記憶素子であるＲＡＭを含む。ＲＯＭは、不変のプログラム（例えば、ＢＩＯＳ）などを格納する。ＲＡＭは、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような高速かつ揮発性の記憶素子であり、ＣＰＵ８１０が実行するプログラム及びプログラムの実行時に使用されるデータを一時的に格納する。
【００２９】
補助記憶装置８３０は、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の大容量かつ不揮発性の記憶装置であり、プロセッサが実行するプログラム及びプログラムの実行時に使用されるデータを格納する。すなわち、プログラムは、補助記憶装置８３０から読み出されて、メモリ８２０にロードされて、プロセッサによって実行される。
【００３０】
計算機は、入力インターフェース及び出力インターフェースを有する。入力インターフェースは、キーボード、マウス、カメラ、及びスキャナなどの入力装置８４０が接続され、オペレータからの入力を受け付けるインターフェースである。入力装置８４０は、生体情報を取得するためのセンサ（例えば、指紋センサ、静脈センサ、カメラ、及びマイクロフォン等）を含んでもよい。
【００３１】
出力インターフェースは、ディスプレイ装置やプリンタなどの出力装置８５０が接続され、プログラムの実行結果をオペレータが視認可能な形式で出力するインターフェースである。通信装置８６０は、所定のプロトコルに従って、他の装置との通信を制御するネットワークインターフェース装置であり、通信部による通信に用いられる。
【００３２】
ＣＰＵ８１０が実行するプログラムは、リムーバブルメディア（ＣＤ−ＲＯＭ、フラッシュメモリなど）又はネットワークを介して計算機に提供され、非一時的記憶媒体である不揮発性の補助記憶装置８３０に格納される。このため、計算機は、リムーバブルメディアからデータを読み込むインターフェースを有するとよい。
【００３３】
トランザクション生成端末１０００、及びトランザクション確認端末１１００は、それぞれ、物理的に一つの計算機上で、又は、論理的又は物理的に構成された複数の計算機上で構成される計算機システムであり、同一の計算機上で別個のスレッドで動作してもよく、複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。
【００３４】
トランザクション生成端末１０００のＣＰＵ８１０は、例えば、トランザクション内容生成部１０１０、トランザクション選択検証部１０２０、秘密情報取得部１０３０、トランザクション署名生成部１０４０、通信部１０５０を含む。トランザクション確認端末１１００のＣＰＵ８１０は、例えば、トランザクションハッシュ取得部１１１０、トランザクション荷重算出部１１２０、トランザクション検証部１１３０、トランザクション実行部１１４０、通信部１１５０を含む。
【００３５】
トランザクション生成端末１０００の補助記憶装置８３０は、トランザクション格納部１０９０を含む。トランザクション確認端末１１００の補助記憶装置８３０は、トランザクション格納部１１９０を含む。
【００３６】
例えば、トランザクション生成端末１０００のＣＰＵ８１０は、トランザクション生成端末１０００のメモリ８２０にロードされたトランザクション内容生成プログラムに従って動作することで、トランザクション内容生成部１０１０として機能し、トランザクション確認端末１１００のメモリ８２０にロードされたトランザクション選択検証プログラムに従って動作することで、トランザクション選択検証部１０２０として機能する。トランザクション生成端末１０００のＣＰＵ８１０に含まれる他の部、トランザクション確認端末１１００のＣＰＵ８１０に含まれる各部についても同様である。
【００３７】
なお、本実施形態において、分散台帳システムが使用する情報は、データ構造に依存せずどのようなデータ構造で表現されていてもよい。例えば、テーブル、リスト、データベース又はキューから適切に選択したデータ構造体が、情報を格納することができる。
【００３８】
図９は、トランザクション生成端末１０００による、ユーザ初期登録処理の一例を示すフローチャートである。まず、秘密情報取得部１０３０は、登録対象ユーザの秘密情報を取得する（Ｓ９０１０）。秘密情報は、正規のユーザのみが保有する情報である。例えば、トランザクション生成に電子署名を使う場合、秘密鍵は秘密情報の一例である。また、例えば、トランザクション生成に生体署名を使う場合は指紋、顔、及び静脈などのユーザ自身の生体情報は、秘密情報の一例である。なお、生体署名は、例えば、特許文献１に記載された技術によって実現される。
【００３９】
トランザクション内容生成部１０１０は、ステップＳ９０１０で取得した秘密情報に対応する公開情報を生成する（Ｓ９０２０）。トランザクション内容生成部１０１０は、トランザクション生成に電子署名を使う場合は、秘密鍵に対応する公開鍵を公開情報として生成する。また、トランザクション内容生成部１０１０は、トランザクション生成に生体署名を使う場合は、生体情報に対応する公開テンプレートを公開情報として生成する。
【００４０】
トランザクション内容生成部１０１０は、ステップＳ９０２０で生成した公開情報から、ユーザ自身のアドレスを生成する（Ｓ９０３０）。アドレスは、ステップＳ９０２０で生成した公開情報そのままでもよいし、公開情報をハッシュ関数などで変換したデータであってもよい。また、ユーザを一意に識別するデータをアドレスとして生成することができれば、前述した以外の方法が用いられてもよい。
【００４１】
以上の処理により、ユーザの初期登録が完了する。初期登録後、ユーザは分散台帳システムにおけるトランザクションを生成することが可能となる。
【００４２】
図５は、トランザクション５００のデータ構造例を示すブロック図である。仮想通貨の支払い、及び何らかの契約手続きを自動化したスマートコントラクトは、いずれもトランザクションの一例である。
【００４３】
トランザクション５００は、例えば、トランザクションハッシュ５１０、前トランザクションハッシュ５２０、取引先アドレス５３０、トランザクション内容５４０、被承認トランザクションハッシュ５５０、ノンス５６０、取引元検証情報５７０、取引元アドレス５８０、及び取引元署名５９０を含む。
【００４４】
トランザクションハッシュ５１０は、トランザクション５００の内容に対してハッシュ関数を適用して得られるハッシュ値である。異なる内容のトランザクションから同一のハッシュ値が生成される確率は天文学的に小さいため、トランザクションハッシュはトランザクションを実質的に一意に特定する識別子である。
【００４５】
前トランザクションハッシュ５２０は、トランザクション５００の前のトランザクションのトランザクションハッシュである。前のトランザクションとは、取引前のステータスを示す別のトランザクションである。
【００４６】
例えば、Ａ氏からＢ氏への送金が行われ、その後Ｂ氏からＣ氏への送金が行われた場合、トランザクション５００がＢ氏からＣ氏への送金取引であれば、前トランザクションはＡ氏からＢ氏への送金トランザクションである。つまり、Ｂ氏は、前トランザクションで送金を受けた通貨を、Ｃ氏へ送金する。
【００４７】
取引先アドレス５３０は、取引を行う相手を一意に特定するアドレスである。例えばＣ氏への送金取引が行われる場合、取引先アドレス５３０はＣ氏のアドレスである。なおアドレスは、例えば、Ｃ氏が管理する秘密鍵に対応する公開鍵、そのハッシュ値、又は他の任意の方法で生成されたＣ氏を一意に特定する識別子を求めることで得られる。
【００４８】
トランザクション内容５４０は、取引の詳細な内容を示すデータであり、例えば送金額などを含む。被承認トランザクションハッシュ５５０は、トランザクション５００が直接承認する過去のトランザクションである。
【００４９】
この承認関係をトランザクション間の有向関係と捉えることで、トランザクションは有向非循環グラフ（ＤＡＧ）を構成する。本実施例の分散台帳システムは、非特許文献１に記載のＴａｎｇｌｅと同様に、このＤＡＧを使ってトランザクションに関する合意形成が行われる。
【００５０】
ノンス５６０は、トランザクション生成の際に行うＰｏＷ（Ｐｒｏｏｆ  ｏｆ  Ｗｏｒｋ）の結果得られる値である。ノンス５６０は一定の計算量の問題をトランザクション生成者が解いたことを示すために埋め込まれたデータである。
【００５１】
ＰｏＷは計算能力の独占が困難であることを根拠に、承認権限の独占を防いでいるが、現実的には多数のコンピュータを用意することによる計算能力の独占が可能である。本実施例の分散台帳システムは、後述する別の方法でこの承認権限の独占を防いでいるため、トランザクション５００はノンス５６０に含まなくてもよい。
【００５２】
取引元検証情報５７０は、トランザクション生成者の署名を検証するための情報である。例えば、トランザクション署名として通常の電子署名が使われる場合は、取引元検証情報５７０は公開鍵を含む。また、例えば、生体情報を鍵として用いる生体署名がトランザクション署名として使われる場合は、取引元検証情報５７０は、公開テンプレートを含む。
【００５３】
取引元アドレス５８０は、トランザクション生成者を一意に特定するアドレスである。例えばＢ氏からの送金取引が行われる場合、Ｂ氏のアドレスが格納される。なお、アドレスは、例えば、Ｂ氏が管理する秘密鍵に対応する公開鍵、又はそのハッシュ値を求めることで得られる。取引元署名５９０は、トランザクション全体に対してトランザクション生成者が付与する署名である。この署名として、例えば、一般的な電子署名や生体署名を用いることができる。
【００５４】
以上、トランザクション５００のデータ構造例を説明したが、トランザクション５００は、必ずしも図示した全てのデータを含まなくてもよいし、図示されていないデータを含んでもよい。具体的には、例えば、トランザクション５００は、ノンス５６０や取引元検証情報５７０を含まなくてもよい。
【００５５】
続いて、トランザクション生成処理とトランザクション確認処理について説明する。トランザクション生成処理において、トランザクション生成端末１０００は、取引内容を含むトランザクションを生成する。本実施例では、非特許文献１で提案されているＴａｎｇｌｅと同様に、トランザクションは過去のトランザクションを承認することでＤＡＧを構成する。
【００５６】
ＤＡＧはトランザクションの増加に伴い成長していき、生成されたトランザクションは、直接的又は間接的に新たなトランザクションにより承認される。自身を直接的又は間接的に承認するトランザクションが多いトランザクションの有効性は信頼に足ると考えられる。なお、トランザクションを直接的又は間接的に承認することを、単にトランザクションを承認するともいう。
【００５７】
トランザクション確認処理において、トランザクション確認端末１１００は、生成済みのトランザクションの有効性を検証し、取引が有功かどうかを確認した上で当該トランザクションを実行する。トランザクション確認端末１１００は、各トランザクションについて、自身を直接的又は間接的に承認するトランザクションの総量をカウントし、トランザクションの有効性が十分に信頼できるかを検証することで、当該確認が行われる。
【００５８】
図２は、トランザクション生成処理とトランザクション確認処理の一例を示すシーケンス図である。まず、トランザクション生成端末１０００によるトランザクションを生成処理が行われる。トランザクション生成処理について説明する。
【００５９】
まず、トランザクション内容生成部１０１０は、トランザクション内容の生成を行う（Ｓ２０１０）。トランザクション内容は、例えば仮想通貨の送金が行われる場合は支払い元、支払先、及び金額のような取引に関する情報を含む。
【００６０】
トランザクション選択検証部１０２０は、生成するトランザクションが承認するトランザクションを、過去のトランザクションの中から選択してその内容を検証する（Ｓ２０２０）。ステップＳ２０２０の処理の詳細は図３を参照して後述する。ステップＳ２０２０の処理により、トランザクション生成時に承認するトランザクションが決定する。
【００６１】
秘密情報取得部１０３０は、トランザクションへ署名を付与するための秘密情報を取得する（Ｓ２０３０）。秘密情報として、例えば、一般的な電子署名を生成する秘密鍵を使うことができる。当該秘密鍵は、例えば、トランザクション生成端末１０００に格納されたデータを参照することによって得られてもよいし、ハードウェアトークンに格納されていてもよい。
【００６２】
また、例えば、トランザクションへの署名に、指紋、顔、静脈などの生体情報を鍵とする生体署名を使用する場合は、秘密情報としてトランザクション生成者の生体情報を取得する。
【００６３】
続いて、トランザクション署名生成部１０４０は、ステップＳ２０１０で生成されたトランザクションに対して署名を生成して付与する（Ｓ２０４０）。署名としては、例えば、ステップＳ２０３０において秘密鍵を取得した場合は電子署名を用い、生体情報を取得した場合は生体署名が用いられる。通信部１０５０は、ステップＳ２０４０で署名を付与されたトランザクションをネットワークへ送信する。以上により、トランザクション生成端末１０００におけるトランザクション生成処理が完了する。
【００６４】
次に、トランザクション確認端末１１００による、対象トランザクションの有効性確認をするトランザクション確認処理が行われる。トランザクション確認処理について説明する。まず、トランザクション確認端末１１００の通信部１１５０は、ステップＳ２０５０で送信されたトランザクションを受信する（Ｓ２１１０）。なお、前述したネットワークは、例えば、Ｐ２Ｐネットワークであり、各ノードがトランザクションに関する情報を共有している。
【００６５】
トランザクションハッシュ取得部１１１０は、確認対象のトランザクションのトランザクションハッシュ５１０を取得する（Ｓ２１２０）。確認対象のトランザクションとは、トランザクション確認端末１１００にて有効性を確認するトランザクションである。
【００６６】
例えばｅコマースであれば、小売業者が確認対象のトランザクションとして、消費者からの支払いトランザクションを指定し、支払いが有効であるかを確認し、有効であれば商品を発送する。トランザクションハッシュは、分散台帳システムと連携する別のシステムから受信してもよいし、キーボード、又は２次元コードなどによって入力されてもよい。
【００６７】
トランザクション荷重算出部１１２０は、確認対象のトランザクションの累積荷重を算出する（Ｓ２１３０）。累積荷重は、確認対象のトランザクションを直接的又は間接的に承認しているトランザクションの荷重の総和である。この累積荷重が大きいほど、承認しているトランザクションが多く、トランザクションが有効である確率が高いことを示す。ステップＳ２１３０の詳細は、図４を参照して後述する。
【００６８】
トランザクション検証部１１３０は、ステップＳ２１３０で得られた確認対象トランザクションの累積荷重に基づき、トランザクションが有効であるか否かを判定する（Ｓ２１４０）。具体的には、例えば、トランザクション検証部１１３０は、累積荷重が所定の閾値を超えればトランザクションが有効、当該所定の閾値未満であればトランザクションが無効であると判定する。また、トランザクション検証部１１３０は、累積荷重を考慮してトランザクションを選択するアルゴリズムを用いて、確認対象トランザクションが間接的に承認される確率を算出し、当該確率に対して閾値処理を行うことで有効性を判定してもよい。
【００６９】
トランザクション検証部１１３０がステップＳ２１４０でトランザクションが有効であると判定した場合、トランザクション実行部１１４０は、トランザクションの内容を実行する（Ｓ２１５０）。例えば、トランザクションが商品の対価の支払いを目的とするものであれば、トランザクション実行部１１４０は支払いが完了したとみなし、その後商品が発送される。
【００７０】
なお、トランザクション検証部１１３０がステップＳ２１４０でトランザクションが有効でないと判定した場合、トランザクション実行部１１４０は、例えば、トランザクションの内容を実行せず、例えば、トランザクション生成端末に対して、未承認であることを示すデータを返信する。以上により、トランザクションの生成及びトランザクションの確認及び実行が完了する。
【００７１】
図３は、ステップＳ２０２０におけるトランザクション選択検証処理の一例を示すフローチャートである。トランザクション選択検証処理において、トランザクション選択検証部１０２０は、生成するトランザクションの被承認トランザクションとして、過去のトランザクションを選択して、内容を検証し、問題なければ被承認トランザクションとして採用する。
【００７２】
まず、トランザクション選択検証部１０２０は、トランザクション格納部１０９０に格納された過去のトランザクションから１つ以上の被承認トランザクションを選択する（Ｓ３０１０）。具体的には、例えば、トランザクション選択検証部１０２０は、当該選択を、ランダムに行ってもよいし、ＭＣＭＣ（マルコフ連鎖モンテカルロ法）に代表される選択アルゴリズムを用いて行ってもよい。
【００７３】
続いて、トランザクション選択検証部１０２０は、ステップＳ３０１０で選択された被承認トランザクションの内容を検証する（Ｓ３０２０）。トランザクション選択検証部１０２０は、ステップＳ３０２０の検証において、被承認トランザクションの有効性を確認する。具体的には、例えば、仮想通貨のトランザクションの検証が行われる場合、トランザクション選択検証部１０２０は、正規の所有者が生成したトランザクションであることや、支払い後の残高がマイナスにならないことなどを、検証する。
【００７４】
トランザクション選択検証部１０２０は、被承認トランザクションがＤＡＧ上で直接又は間接的に承認しているトランザクションを遡って検証し、不正なトランザクションを承認していないことを確認する（Ｓ３０３０）。トランザクション選択検証部１０２０は、ステップＳ３０２０の内容検証とステップＳ３０３０の履歴検証の結果を確認する（Ｓ３０４０）。
【００７５】
トランザクション選択検証部１０２０は双方の検証結果に問題がなければ、被承認トランザクションを有効と判定してトランザクション選択検証処理を終了し、少なくとも一方の検証結果に問題があれば被承認トランザクションを無効と判定してステップＳ３０１０に戻る。
【００７６】
なお、トランザクション選択検証部１０２０は、ステップＳ３０２０の内容検証において問題があると判定した場合、ステップＳ３０３０を実行することなく、被承認トランザクションを無効と判定してステップＳ３０１０に戻ってもよい。また、例えば、トランザクション選択検証処理を開始してから所定時間が経過しても有効な被承認トランザクションが得られない場合には、トランザクション選択検証処理をタイムアウトさせてもよい。
【００７７】
次に、ステップＳ２１３０におけるトランザクション荷重算出処理について説明する。トランザクション荷重算出処理において、トランザクション荷重算出部１１２０は、ＤＡＧに含まれるトランザクションのうち、確認対象トランザクションを直接的又は間接的に承認しているトランザクションを対象として、トランザクションの生成者が同一人物であるか否かを確認し、得られた結果を用いてトランザクションの累積荷重を算出する。
【００７８】
具体的には、例えば、承認トランザクションのうち生成者が同一人物と判定されたトランザクションは、それぞれの荷重を加算せず、荷重の最大値のみが加算される。このようにすることで、同一人物が生成したトランザクションは複数あっても、１つ分のトランザクションの荷重しか加算されないため、１人１票の承認を実現できる。
【００７９】
図４は、ステップＳ２１３０におけるトランザクション荷重算出処理の一例を示すフローチャートである。まず、トランザクション荷重算出部１１２０は、確認対象トランザクションの累積荷重を初期化する（Ｓ４０１０）。
【００８０】
図７は、確認対象トランザクションの初期化時の累積荷重の一例を示す説明図である。図７の例では、確認対象トランザクション５００ａ〜５００ｅによってＤＡＧが構成され、確認対象トランザクション５００ａ〜５００ｅの荷重はそれぞれ１であるものとする。
【００８１】
確認対象トランザクションの累積荷重として、最大累積荷重と最小累積荷重が定義される。トランザクション荷重算出部１１２０は、最大累積荷重の初期値として、確認対象トランザクションを直接的又は間接的に承認しているトランザクションの荷重の総和を代入する。
【００８２】
例えば、確認対象トランザクション５００ａは、確認対象トランザクション５００ｃに直接的に承認され、確認対象トランザクション５００ｄ及び確認対象トランザクション５００ｅに間接的に承認されている。また、確認対象トランザクション５００ａ自身も確認対象トランザクション５００ａを直接的に承認しているものとして扱う。従って、確認対象トランザクション５００ａの最大累積荷重の初期値は、これら４つの確認対象トランザクションとの総和である４である。
【００８３】
また、トランザクション荷重算出部１１２０は、各確認対象トランザクションの最小累積荷重として、当該確認対象トランザクションを直接的又は間接的に承認しているトランザクションの荷重の最大値を代入する。図７の例では、確認対象トランザクション５００ａ〜５００ｅの荷重はいずれも１であるため、確認対象トランザクション５００ａ〜５００ｅの最小累積荷重はいずれも１である。
【００８４】
つまり、最大累積荷重は、承認トランザクションの全てが同一人物ではなかった場合に得られる最大の累積荷重であり、最小累積荷重は、承認トランザクションの全てが同一人物であった場合に得られる最小の累積荷重である。
【００８５】
図４の説明に戻る。トランザクション荷重算出部１１２０は、承認トランザクションのうち、まだ同一人物であるか否かを検証していない２つのトランザクションを、トランザクションペアとして選択する（Ｓ４０２０）。
【００８６】
ステップＳ４０２０における選択方法として、例えば、ランダムに選択する、トランザクションの荷重の和が大きい又は小さいペアから順に選択する、ＭＣＭＣ（マルコフ連鎖モンテカルロ法）に代表される選択アルゴリズムを用いて選択する、ＤＡＧ内の深さが深い又は浅い方から優先的に選択する、などの方法がある。
【００８７】
トランザクション荷重算出部１１２０は、ステップＳ４０２０で選択したトランザクションペアが同一人物によって生成されたものか否かを確認する（Ｓ４０３０）。ステップＳ４０３０における確認方法として、例えば、取引元アドレス５８０の確認、取引元署名５９０に含まれる電子署名の確認、取引元署名５９０に含まれる生体署名の確認の３つが考えられる。
【００８８】
前述した通り取引元アドレス５８０は、トランザクション生成者の公開鍵やそのハッシュ値などを示すデータであり、本人を一意に特定するものである。トランザクション荷重算出部１１２０は、トランザクションペアに含まれる２つの取引元アドレスが一致することを確認することで、トランザクションが同一人物によって生成されたかを判定することができる。
【００８９】
なお、公開鍵やそのハッシュ値を無制限に生成できると一人で複数のアドレスを持つことができるため、同一人物が複数人を詐称することができ、同一人物確認を正しく行うことができない。このため、取引元アドレスに基づき同一人物確認を実施する際には、１人が単一のアドレスしか持てないことを保証する必要がある。
【００９０】
例えば、公開鍵証明書を認証局が発行することとし、公開鍵証明書発行時に本人確認を実施して過去に登録がないことを保証する仕組みがあれば、このような取引元アドレスに基づく同一人物確認が正しく行われる。
【００９１】
ここで、電子署名及び生体署名に基づく同一人物確認手順について説明する。電子署名に基づく同一人物確認方法は、直接参照と間接参照の２種類の方法を含む。図６は、直接参照及び間接参照による検証同一人物確認処理の一例を示す説明図である。
【００９２】
まず直接参照について説明する。トランザクション荷重算出部１１２０は、トランザクションＡの取引元署名５９０に含まれる電子署名と、もう一方のトランザクションＢの取引元検証情報５７０に含まれる公開鍵と、を用いて署名検証を行うことでトランザクションＡとトランザクションＢが同一人物によって生成されたものであるか否かを確認することができる。このようにトランザクションＡとトランザクションＢのみを直接的に参照することによって、同一人物確認ができる方式を直接参照と呼ぶ。
【００９３】
続いて、間接参照について説明する。まず、トランザクション荷重算出部１１２０は、トランザクションＢの前トランザクションハッシュ５２０と等しいトランザクションハッシュ５１０を持つトランザクションを過去のトランザクションから検索し、それを参照トランザクション６２０として特定する。
【００９４】
さらに、トランザクション荷重算出部１１２０は、参照トランザクション６２０の取引先アドレス５３０に含まれる公開鍵と、トランザクションＡに含まれる取引元署名５９０に含まれる電子署名と、を用いて署名検証を行う。トランザクションＢに取引元検証情報５７０が含まれている場合は直接参照が可能だが、トランザクションＢに取引元検証情報５７０が含まれていない場合は、直接参照が困難又は不可能であるため、トランザクション荷重算出部１１２０は間接参照を用いて検証する。
【００９５】
トランザクション荷重算出部１１２０は、署名の検証に成功した場合、トランザクションＡとトランザクションＢは同一の秘密鍵と公開鍵のペアで生成されたことになるため、トランザクションＡとトランザクションＢの生成者は同一人物であると判定する。トランザクション荷重算出部１１２０は、署名の検証に失敗した場合、トランザクションＡとトランザクションＢは異なる秘密鍵と公開鍵のペアで生成されたことになるため、トランザクションＡとトランザクションＢの生成者は同一人物ではないと判定する。
【００９６】
なお、生体署名に基づく確認も、電子署名に基づく確認と同様に、直接参照と間接参照の２種類がある。直接参照では、トランザクション荷重算出部１１２０は、トランザクションＡの取引元署名５９０に含まれる生体署名と、トランザクションＢの取引元検証情報５７０に含まれる公開テンプレートと、を用いて、署名検証を行う。
【００９７】
また、間接参照では、トランザクション荷重算出部１１２０は、まずトランザクションＢの前トランザクションハッシュ５２０と等しいトランザクションハッシュ５１０を持つトランザクションを過去のトランザクションから検索し、それを参照トランザクション６２０として特定する。
【００９８】
さらに、トランザクション荷重算出部１１２０は、参照トランザクション６２０の取引先アドレス５３０に含まれる公開テンプレートと、トランザクションＡに含まれる取引元署名５９０に含まれる生体署名とを検証する。トランザクションＢに取引元検証情報５７０が含まれている場合は直接参照が可能だが、トランザクションＢに取引元検証情報５７０が含まれていない場合は、直接参照が困難又は不可能であるため、トランザクション荷重算出部１１２０は、間接参照を用いて検証する。
【００９９】
トランザクション荷重算出部１１２０は署名の検証に成功した場合、トランザクションＡとトランザクションＢは同一の生体情報を持つ人物が生成したことになるため、トランザクションＡとトランザクションＢの生成者は同一人物であると判定する。
【０１００】
トランザクション荷重算出部１１２０は署名の検証に失敗した場合、トランザクションＡとトランザクションＢは異なる生体情報を持つ人物が生成したことになるため、トランザクションＡとトランザクションＢの生成者は同一人物ではないと判定する。
【０１０１】
図４の説明に戻る。トランザクション荷重算出部１１２０は、以上の手順でトランザクションペア同一人物確認（Ｓ４０３０）を実施した後、得られた確認結果を用いてトランザクションクラスタリングを行う（Ｓ４０４０）。具体的には、例えば、トランザクション荷重算出部１１２０は、生成者が同一人物であると判定されたトランザクションを同じクラスタ、生成者が同一人物ではないと判定されたトランザクションを異なるクラスタに分類する。
【０１０２】
例えば、Ｍ件の承認トランザクションが全て同一人物である場合、クラスタは１つであり、当該クラスタに全ての承認トランザクションが含まれる。また、Ｍ件の承認トランザクションが全て異なる人物によって生成された場合、クラスタはＭ個となり、Ｍ個のクラスタそれぞれに１つの承認トランザクションが含まれる。
【０１０３】
トランザクション荷重算出部１１２０は、ステップＳ４０４０において得られたクラスタを用いて、確認対象トランザクションの最大累積荷重及び最小累積荷重を更新する（Ｓ４０５０）。更新後の最大累積荷重は、未確認のトランザクションペアが全て異なる人物によって生成された場合の累積荷重である。
【０１０４】
トランザクション荷重算出部１１２０は、最大累積荷重の初期値と同様に、各トランザクションについて、当該トランザクションを直接的又は間接的に承認するトランザクションの荷重の総和を新たな最大累積荷重として算出して更新する。但し、同一のクラスタに属する複数のトランザクションに直接的又は間接的に承認されているトランザクションの最大累積荷重の算出においては、荷重の総和を算出する際、当該複数のトランザクションの荷重を重複して加算せず、当該複数のトランザクションの荷重の最大値を１回のみ加算する。
【０１０５】
また、更新後の最小累積荷重は、未確認のトランザクションペアが全て同一人物によって生成された場合の累積荷重である。つまり、トランザクション荷重算出部１１２０は、各トランザクションについて、当該トランザクションを直接的又は間接的に承認するトランザクションそれぞれが属するクラスタの荷重の最大値を新たな最小累積荷重として更新する。
【０１０６】
但し、あるクラスタに属する全ての承認トランザクションについて、他のクラスタに属する全てのトランザクションとの同一人物確認が完了していれば、今後同一人物と判定されて他のクラスタと統合されることはない。従って、トランザクション荷重算出部１１２０は、各トランザクションの最小累積荷重の更新において、このようなクラスタに属する承認トランザクションの荷重は当該クラスタの荷重の最大値として扱い、残りのクラスタに属する承認トランザクションの荷重は当該残りのクラスタ全ての荷重の最大値として扱う。
【０１０７】
前述した方法で累積荷重が更新されるため、ステップＳ４０３０の同一人物確認が行われるたびに、最大累積荷重は変化しない又は減少し（増加することはない）、最小累積荷重は変化しない又は増加する（減少することはない）。
【０１０８】
図１０は、確認対象トランザクションの更新後の累積荷重の一例を示す説明図である。図１０の例は、図７の例において初回のステップＳ４０３０において、確認対象トランザクション５００ｄ及び確認対象トランザクション５００ｅが同一人物であると判定された場合の荷重を示す。
【０１０９】
最大累積荷重の算出においては、確認対象トランザクション５００ｄ及び確認対象トランザクション５００ｅが同一クラスタに属し、確認対象トランザクション５００ａ〜５００ｃは、当該同一クラスタ以外のクラスタであって、それぞれ異なるクラスタに属する。確認対象トランザクション５００ｄ及び確認対象トランザクション５００ｅの双方に直接的又は間接的に承認されていた確認対象トランザクション５００ａ〜５００ｄの最大累積荷重がそれぞれ１ずつ減少する。なお、確認対象トランザクション５００ａ〜５００ｅの全ての荷重が１であるため、最小累積荷重については変化しない。
【０１１０】
図４の説明に戻る。続いて、トランザクション荷重算出部１１２０は、得られた確認対象トランザクションの最大累積荷重と最小累積荷重に対して、確認を終了してよいか否かを判定する（Ｓ４０６０）。トランザクション荷重算出部１１２０は、例えば、最大累積荷重が十分小さいこと、及び最小累積荷重が十分大きいことの少なくとも一方が満たされることを判定することによって、ステップＳ４０６０における確認終了の判定を行う。なお、ステップＳ４０１０において複数組のトランザクションペアを選択して、当該複数組のペアそれぞれにステップＳ４０３０〜４０５０の処理を行った上で、ステップＳ４０６０の判定を実行してもよい。
【０１１１】
前述したように。最大累積荷重は、今後さらに確認処理を行った場合においてとり得る最大の累積荷重であり、この値が十分に小さければトランザクションが有効と判定される確率は極めて小さい。このため、トランザクション荷重算出部１１２０は、例えば、確認対象トランザクションの最大累積荷重が閾値未満であると判定した場合、確認完了とし、ステップＳ２１３０におけるトランザクション荷重算出処理を終了する。なお、全てのトランザクションの累積荷重を算出して有効か否かの判定を行いたい場合は、最大累積荷重の判定を行わずに全ての組合せのトランザクションの同一人物確認を行ってもよい。
【０１１２】
当該閾値は、予め定められた値であってもよいし、トランザクション荷重算出部１１２０がＤＡＧに対するＭＣＭＣなどを活用して動的に求めてもよい。動的な閾値は、例えば非特許文献２で開示されている、ＭＣＭＣに基づくトランザクション選択を使って、トランザクションの信頼度が十分に高くなる累積荷重を算出することで、求めることができる。
【０１１３】
また、最小累積荷重は、今後さらに確認処理を行った場合においてとり得る最小の累積荷重であり、この値が十分に大きければトランザクションが有効と判定される確率は極めて大きい。このため、トランザクション荷重算出部１１２０は、確認対象トランザクションの最小累積荷重が閾値以上と判定した場合、確認完了とし、ステップＳ２１３０におけるトランザクション荷重算出処理を終了する。当該閾値は、最大累積荷重と同様に、予め定められた値であってもよいし、トランザクション荷重算出部１１２０がＤＡＧに対するＭＣＭＣなどを活用して動的に求めてもよい。なお、全てのトランザクションの累積荷重を算出して有効か否かの判定を行いたい場合は、最小累積荷重の判定を行わずに全ての組合せのトランザクションの同一人物確認を行ってもよい。
【０１１４】
また、トランザクション荷重算出部１１２０は、ステップＳ４０５０において、最大累積荷重が十分に小さくない、かつ最小累積荷重が十分大きくない、と判定した場合、ステップＳ４０２０に戻る。
【０１１５】
また、トランザクション荷重算出部１１２０は、確認を途中で打ち切らずに全ての承認トランザクションに関して確認を実施してもよく、この場合、最大累積荷重と最小累積荷重を設けずに、未確認の承認トランザクションがなくなるまでステップＳ４０２０からステップＳ４０５０までの処理を継続する。以上により、確認対象トランザクションに対する累積荷重の算出が完了する。
【０１１６】
前述したように、トランザクション検証部１１３０は、ステップＳ２１３０で得られた確認対象トランザクションの累積荷重の値を用いて、トランザクションが有効であるか否かを判定する（Ｓ２１４０）。トランザクションが有効であるとは、今後ＤＡＧが成長したときに、将来的に無効と判定される可能性が十分に小さく、トランザクションの有効性が確定した状態であることを示す。
【０１１７】
ステップＳ２１４０におけるトランザクション判定において、ステップＳ２１３０で得られた最大累積荷重及び最小累積荷重に対する閾値処理を適用することができる。また、ステップＳ２１３０で得られた最大累積荷重又は最小累積荷重を確認対象のトランザクションの累積荷重としたときに、トランザクション検証部１１３０はＤＡＧに対してＭＣＭＣなどのトランザクション選択アルゴリズムを適用し、確認対象トランザクションが承認される確率を求め、その確率に対する閾値処理を適用してもよい。
【０１１８】
以上、トランザクション生成端末１０００によるトランザクション生成処理、及びトランザクション確認端末１１００によるトランザクション確認処理が完了する。なお、前述した例において、最大累積荷重及び最小累積荷重の双方が算出されていたが、一方のみを算出し、当該一方のみに基づいて、トランザクションの有効性が判定されてもよい。
【０１１９】
トランザクション確認端末１１００は、トランザクション確認処理において、確認対象トランザクションの累積荷重の算出に、確認対象トランザクションを直接的又は間接的に承認するトランザクションが同一人物により生成されたものかを判定する。そして、トランザクション確認端末１１００は、同一人物が生成した承認トランザクションについては、１つのトランザクションの荷重のみを加算する。つまり、同一人物が何度承認トランザクションを生成しても１票しかカウントされないことになり、少数の人物が分散台帳システムの承認権限を独占することは困難となる。
【０１２０】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることも可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０１２１】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、又は、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。
【０１２２】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【０１２３】
５００  トランザクション、８１０  ＣＰＵ、８２０  メモリ、８３０  補助記憶装置、１０００  トランザクション生成端末、１０２０  トランザクション選択検証部１０２０、１０４０  トランザクション署名生成部、１１００  トランザクション確認端末、１１１０  トランザクションハッシュ取得部、１１２０  トランザクション荷重算出部、１１３０  トランザクション検証部、１１４０  トランザクション実行部
【図１】
2020107004.tif 000003
【図２】
2020107004.tif 000004
【図３】
2020107004.tif 000005
【図４】
2020107004.tif 000006
【図５】
2020107004.tif 000007
【図６】
2020107004.tif 000008
【図７】
2020107004.tif 000009
【図８】
2020107004.tif 000010
【図９】
2020107004.tif 000011
【図１０】
2020107004.tif 000012