(57)【特許請求の範囲】
【請求項１】
ピアツーピアネットワークに参加するノードにより運営されるブロックチェーンシステムであって、ブロックチェーン上に各ユーザアカウントの検証鍵の電子証明書を登録する手段と、各ユーザアカウントの検証鍵の電子証明書の該ブロックチェーンへの登録の有無を判別する手段を有し、各ユーザのユーザアカウントの検証鍵の電子証明書の該ブロックチェーンへの登録の有無に応じて、該ブロックチェーン上で該ユーザが実行できる操作の種類を限定する手段を有することを特徴とするブロックチェーンシステム。
【請求項２】
請求項１に記載のブロックチェーンシステムであって、ブロックチェーン上に電子証明書認証局の検証鍵を登録・削除する手段と、この仕組みによって登録された検証鍵を使用して各ユーザアカウントの前記電子証明書の真正性を確認する手段を有することを特徴とするブロックチェーンシステム。
【請求項３】
請求項２に記載のブロックチェーンシステムであって、システムに参加するノードによる投票によりブロックチェーン上に登録した上記電子証明書認証局の検証鍵の登録・削除の可否を決定する手段を有することを特徴とするブロックチェーンシステム。
【請求項４】
請求項３に記載のブロックチェーンシステムであって、ブロックチェーン上でユーザがこれから行おうとしている操作によって発生する該ユーザが支払う必要のある納税額を決定するために必要な情報を特定する手段と、該情報が全て該システムに入力されている場合のみ該操作の実行を許可する手段を有することを特徴とするブロックチェーンシステム。
【請求項５】
請求項１ないし４のいずれか1項に記載のブロックチェーンシステムを実現するためのコンピュータープログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号資産を利用した資金洗浄やその他の違法行為を防止するために、ユーザの身元情報を電子証明書認証局に登録し、登録ユーザか否かによってブロックチェーン上で行うことの出来る操作を限定する機能を有するブロックチェーンシステムおよびそれによって実現される暗号資産に関する。
【背景技術】
【０００２】
ビットコイン（非特許文献１）の登場以来、ブロックチェーンを利用した暗号資産が多数開発されてきた。暗号資産を用いた取引は年々増加しており、暗号資産の時価総額は2021年初頭に1兆ドルを突破した。
【０００３】
ブロックチェーンとはリスト構造のデータであり、データを次々と新たに追加することができ、過去に登録されたデータの修正が困難となるように設計されている。暗号資産における全ての取引の履歴はこのブロックチェーンに保存される。ブロックチェーンは通常分散システムとして構成され、おおまかに集中制御型と完全分散型に分類される。集中制御型では、ネットワーク中の特定のノードに権限が与えられており、このノードがネットワーク全体を制御する。ここで、ノードとは、ネットワークに接続されたコンピュータを指す。権限の与えられた特定のノードを信頼することを前提とした設計であるため、制御が容易である一方、そのノードが単一故障点となる欠点がある。一方、完全分散型では、各ノードに等しく権限が与えられており、各ノードがそれぞれ下した判断の集積によりネットワーク全体が機能する。完全分散型のシステムにおいて単一故障点をなくすためには、一部のノードの故障に対応できるようにシステムを構成する必要があり、ネットワークを機能させるためにノード間でコンセンサスを取るための計算量が大きくなる欠点がある。また、ノードのなりすまし等に備える必要がある。
【０００４】
ビットコインは、完全分散型の暗号資産であり、中央銀行など特定のノードを必要とせず、ユーザ間でコインの受け渡しを行うことができる。ここで、ユーザとはシステムの利用者を指す。取引の履歴は、分散型台帳に記録される。プルーフオブワーク(PoW)と呼ばれる仕組みにより、台帳に記録される取引の正しい結果を決めており、コインの二重使用等を防いでいる。ネットワークにおいては多数のIPアドレスを確保するのが容易であり、各IPアドレスに対して投票権の与えられる多数決はうまく機能しない。PoWは、このような環境において計算量の多寡に応じて投票権の与えられる多数決を実現するのに使用される。ビットコインの分散型台帳は、多数のブロックをリンクトリストとして保存する。このリンクトリストをブロックチェーンと呼ぶ。各ブロックは、複数のデータアイテムと、一つ前のブロックのハッシュ値を含む。新しいブロックがチェーンに追加される毎に、新しいブロックのハッシュ値が計算され、ネットワーク上にブロードキャストされる。PoWでは、このハッシュ値が決められた数のゼロビットで始まる数値を見つける。各ブロックには、ナンスと呼ばれる整数値を格納するエントリが用意されており、ブロック全体のハッシュ値が決められた数のゼロビットで始まるナンスを持つブロックのみが、有効なブロックとして受理される。ネットワークを維持するために、新しいブロックを追加することに成功したノードにインセンティブとして新しいコインが授与される。ブロックを追加しようとするノードのことをマイナーと呼び、ブロックを追加するために計算を行うことをマイニングと呼ぶ。善意のマイナーは、そのノードの知る限り最も長いチェーンにブロックを追加しようとする。大半のCPU資源が善意のマイナーによりブロックの追加に使用される限り、正しい取引を記録したチェーンが最も速く伸びる。計算量に応じて投票権の与えられる多数決はこのようにして実現される。このような仕組みにより、分散型台帳に記録された情報の偽造や改ざんは困難であり、偽造などの攻撃を行おうとする悪意のあるノードのCPU資源が善良なノードの持つCPU資源を上回らない限り、攻撃は成功しない。ビットコインのような完全分散型の暗号資産においては、コインの価値を裏付ける実体はなく、ネットワーク上のデータそのものに価値がある。この価値はブロックチェーンに参加するユーザによって裏付けられており、より強い裏付けを得るためには多数のユーザの参加を得る必要がある。
【０００５】
ビットコイン等の完全分散型のブロックチェーンにおいては、暗号資産の取引の際にシステムにユーザの身元情報を確認するための仕組みを備えておらず、身元情報を開示せずに送金することが可能である。そのため、暗号資産を用いた様々な違法行為が横行してきた。暗号資産を用いた違法行為の例として、違法な物品の売買、ポンジスキーム(ネズミ講)、資金洗浄、ランサムウェアの身代金の受け取りが挙げられる（非特許文献２、３）。また、代金の支払いが政府当局から確認しづらいことを利用した脱税行為も事実上野放しになっている実情がある。違法な取引を野放しにしないために、各ユーザは合法な相手とのみ取引することが望ましい。また、各ユーザの取引に課税される額は、取引相手の国籍などの属性により変わってくるため、納税額を計算する上で、そのための信頼できる情報を得る方法が必要になる。
【０００６】
上記のような、暗号資産を用いて行われた取引が適法であることを確認するため、暗号資産を実現するためのブロックチェーンに参加するユーザを、身元情報を開示したユーザのみに限定するということが考えられる。このようにすれば、違法行為の検挙は行いやすくなるが、身元情報の確認を特定の組織が行う必要があるため、ブロックチェーンを集中制御型として構成する必要がある。また、身元情報を開示したくないユーザはこのブロックチェーンに参加しないため、あまり多くのユーザが参加しない懸念がある。
【０００７】
ブロックチェーンは基本的に記録されたデータが全世界に公開されるような仕組みである。従って、ブロックチェーンにユーザの身元情報を全て記録する仕組みにすると、全参加者の身元情報が公表されてしまう。合法的に暗号資産による取引を行いたい参加者もその身元情報が全て公開されるのは必ずしも望ましくない場合がある（非特許文献４）。一方で、政府当局は、違法行為検挙のために参加者の身元情報を把握したいというニーズがある。
【０００８】
以下、電子署名と電子証明書認証局について述べる。ネットワークを利用してデータを送信する際に、データの内容が第三者に盗み見られることを防止するためにデータが暗号化される。対称鍵暗号では、暗号化と復号化に共通の鍵と呼ばれるデータを用い、ある鍵を使用して暗号化したデータは同じ鍵を用いた場合にのみ復号化できる。一方、公開鍵暗号では、暗号化と復号化に用いる鍵が異なり、一方を使用して暗号化したデータは、対になる鍵を利用することでしか復号化できない。多くの場合、この鍵のうちの一方を秘密鍵と呼び、各ユーザが他のユーザに開示せずに保管しておく。この秘密鍵と対をなす鍵を公開鍵と呼び、広く公開する。あるユーザに対してデータを送りたい場合には、このユーザの公開鍵を用いて暗号化することで、このユーザだけがデータを復号化できることが保証される。一方、あるユーザが自分の秘密鍵を用いて暗号化したデータを公開することで、このデータの受信者は、暗号化したデータを復号化できる公開鍵に対応する秘密鍵を保持するユーザがこのデータを暗号化したことを検証できる。
【０００９】
ハッシュ関数という仕組みがあり、これは任意のデータに対し、ダイジェストと呼ばれる固定長のデータを生成する。ハッシュ関数を使用して任意のデータからダイジェストを生成するために必要な計算時間はわずかである一方、ダイジェストから対応するデータを探し出すことは、極めて大きい計算時間が必要であるため実際上は不可能である。
【００１０】
任意のデータのダイジェストをあるユーザの持つ秘密鍵で暗号化することで得られるデータは電子署名と呼ばれる。電子署名を公開鍵を使用して復号化し対応するデータのダイジェストと一致することを確認することで、この電子署名が公開鍵に対応する秘密鍵を持つユーザにより作成されたことを検証できる。公開鍵暗号を利用せずに同等の目的を達成するための手法があり、このような方式を考慮したより一般的な呼び方として、電子署名を得るための鍵を署名鍵、電子署名の検証のための鍵を検証鍵と呼ぶ。
【００１１】
ある検証鍵がなりすましの検証鍵ではなく、本当に通信したい相手の検証鍵であることを確認するために電子証明書と、電子証明書認証局(以下認証局)が使われる。各ユーザは認証局に出向いて、自分の身元情報を従来的な方法(写真照合など)により証明する。認証局がそのユーザの身元情報が正しいことを確認すると、そのユーザの検証鍵と身元情報の組に対して認証局による署名を行う。このユーザの検証鍵と身元情報、認証局による署名の組を電子証明書と呼び、検証鍵とともに公開する。通信相手の電子証明書を認証局の検証鍵を使用して検証することで、通信相手がなりすましでないことを検証することができる。これにより、認証局が信用でき、かつユーザの署名鍵が流出していない限り、通信相手の身元情報が電子証明書に記された通りであることを確認することができる。
【００１２】
特許文献１に記載の個人認証及び確認システム及び方法は、暗号型電子マネーを伴うトランザクションを監視及び規制する個人／クライアント認証及び検証処理、偽名性システムに関する考案である。該考案は、暗号資産の送り主及び受取先を全て特定可能にすることを目的としている点で本願発明と類似する。該考案では、承認済み通貨アドレスの生成のために監視システムとクライアントウォレットの通信を必要としているが、本願発明ではビットコインなどの既存のブロックチェーンシステムと同様にクライアントウォレット単体でアドレスの生成が可能である点が異なる。該考案では法的身分が認証されなかった登録者のアカウント作成を拒否する。しかし、法的身分が認証されなかったユーザの参加を認めないと、ネットワークに参加するユーザ数が少なくなる懸念があり、これは暗号資産の信頼性を低下させる要因になりうる。本願発明では身元情報を開示しないユーザもアカウント作成が可能になる。本願発明では、むしろ積極的にネットワークへの参加を促すことでより多くの参加者が集まることが期待できる。
【００１３】
特許文献２に記載の電子通貨利用情報システム及び電子通貨利用方法は、暗号資産を含む電子通貨の取引をより安全な取引とすることができる電子通貨利用情報システムに関する発明であり、この発明の目的は本願発明と類似する。該発明では、ブロックチェーンと独立してサーバの設置およびユーザアカウントの登録を行い、このサーバが管理する情報の範囲内で取引に関する注意の表示などを行う。該発明の問題点として、システムが監視できる範囲が、ブロックチェーンと独立して設置されるサーバによって管理される情報の範囲内に留まると言うことがある。本願発明はブロックチェーンシステムに関する発明であり、ブロックチェーンシステムの全てのユーザアカウントに対し、条件に応じた操作の制限等を行うことができる。
【００１４】
特許文献３に記載の徴税、分析及び法令遵守のためのシステム及び方法の発明は、関係する自然人や法人のマイナンバー・納税番号などのIDに紐付いた取引情報を収集し分析するシステムである。該発明の問題点として、完全分散システムとして構築されてない点が挙げられる。本願発明は完全分散型のシステムに関する特許であり、完全分散型システムの利点を備え、頑健に動作させることが可能である。また、本願発明は、ピアツーピアネットワーク上での違法な取引自体を防止するものであり、納税に関して必要となる情報は取引を行うアカウントの検証鍵とともにブロックチェーン上に記録する点が異なる。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】実登3228339
【特許文献２】特許6799837
【特許文献３】特許6808743
【非特許文献】
【００１６】
【非特許文献１】Nakamoto, S.: Bitcoin: A Peer-to-Peer Electronic Cash System (2008).
【非特許文献２】Elliptic. Financial Crime Typologies In Cryptoassets: The Concise Guide for Compliance Leaders. Accessed: Feb. 1, 2021. [Online]. Available: https://www.elliptic.co/resources/typologies-concise-guide-crypto-leaders
【非特許文献３】FATF 40 Recommendations, Available: https://www.fatf-gafi.org/media/fatf/documents/FATF%20Standards%20-%2040%20Recommendations%20rc.pdf
【非特許文献４】Seunghyeon Lee (KAIST, S2W LAB Inc.), Changhoon Yoon (S2W LAB Inc.), Heedo Kang (KAIST), Yeonkeun Kim (KAIST), Yongdae Kim (KAIST), Dongsu Han (KAIST), Sooel Son (KAIST), Seungwon Shin (KAIST, S2W LAB Inc.) Cybercriminal Minds: An investigative study of cryptocurrency abuses in the Dark Web. Accessed: Feb. 1, 2021 [Online]. Available: https://www.ndss-symposium.org/ndss-paper/cybercriminal-minds-an-investigative-study-of-cryptocurrency-abuses-in-the-dark-web/
【発明の概要】
【発明が解決しようとする課題】
【００１７】
本願発明が解決しようとする課題は、違法な物品の売買、ポンジスキーム(ネズミ講)、資金洗浄、ランサムウェアの身代金の受け取りなどの、暗号資産を用いた違法行為や脱税行為を不可能とする、完全分散型ブロックチェーンシステムを提供することである。
【課題を解決するための手段】
【００１８】
最初に本明細書において用いる用語の定義を記述する。
暗号資産とは、インターネット上でやりとりできる財産的価値である。ビットコインなどのブロックチェーンを用いることにより、銀行等の第三者を介することなく暗号資産をやりとりすることができる。
ウォレットとは、ビットコインなどの暗号資産の取引を行うためのソフトウェアで、ユーザの秘密鍵を保管・管理するものである。
ブロックチェーンシステムとは、マイナーやウォレットなどのソフトウェアを走らせる全てのコンピュータにより構成される、ブロックチェーンを実現するためのコンピュータシステムである。
ユーザとは、ブロックチェーンシステムを利用する人である。
ユーザアカウントとは、銀行口座に相当するもので、各ユーザがブロックチェーン上で所有する暗号資産を管理するための、ブロックチェーン上に記録されたデータである。該当ユーザの検証鍵が含まれる。
ピアツーピアネットワークとは、ネットワークで接続された複数のコンピュータが、対等な関係で通信をすることを特徴とするような、分散型コンピュータシステムのアーキテクチャである。
ノードとは、ネットワークに接続されたコンピュータを指す。
ブロードキャストとは、ネットワークに接続された全てのコンピュータに情報が行き渡るように情報を伝えることである。
ゴシッププロトコルとは、ネットワークに接続されたコンピュータ間で、繰り返し確率的に情報を交換する手法である。
トポロジーとは、ネットワークに接続された各コンピュータが、どのコンピュータと直接接続して情報を交換するかを表す。
スレッドとは、並列に複数の処理が可能なコンピュータの上で、連続して実行される一本の命令の並びを表す。
【００１９】
本システムは、暗号資産の取引のための完全分散型ブロックチェーンであり、本システムと独立した認証局を利用する。各ユーザは、自らの判断で、自らの身元情報をこの認証局に登録する。ユーザの登録する身元情報の例として、ユーザの顔写真、筆記による署名、国籍、本名、生年月日、住所などが挙げられる。認証局は、ユーザの身元情報の登録に際して、ブロックチェーンの任意の位置にそのユーザの電子証明書を記録し、電子証明書のブロックチェーン上の位置をユーザに通知する。この電子証明書には、ユーザのアカウントのアドレスと、このブロックチェーン上で行われる取引に対する納税額の計算に必要な最小限の情報のみが記述されており、登録したユーザの身元情報は電子証明書に含まれない。電子証明書には、検証鍵の代わりに検証鍵に対してハッシュ関数を適用したものが記述されていても良い。ブロックチェーンに電子証明書が登録されていることは、そのユーザの身元情報が認証局に登録されていることを意味するが、身元情報はブロックチェーンには登録されず、また一般には公開されない。認証局はブロックチェーンに電子証明書を記録する必要があるため、認証局自身もブロックチェーンの一ユーザである必要がある。
【００２０】
本システムを用いてあるユーザが取引を行う際に、このユーザの電子証明書がブロックチェーンに登録されているか否かに応じて、行うことのできる取引の種類を限定する。電子証明書が登録されているユーザは、操作を行う際にそのブロックチェーン上の位置を提示し、ブロックチェーンシステムはこの電子証明書を確認することでユーザの行おうとしている操作がそのユーザに許可されているか判定する。例えば、電子証明書が登録されている場合には全ての操作が許可されるが、登録されていない場合には、暗号資産の受け取りができないようにする。この場合、電子証明書の登録されていない、すなわち身元情報が未登録のユーザが暗号資産を得ることのできる方法は、マイニングのみである。このように身元情報が未登録のユーザの取引を制限することにより、身元情報が未登録のユーザによる違法な物品の販売や身代金の受け取り等を排除することができる。一方、身元情報が未登録のユーザであっても、マイニングによって得た暗号資産を、身元情報を明らかにしているユーザに支払うことはできるため、マイニングを行う動機は失われない。身元情報を明らかにしているユーザにとっても、身元情報が未登録のユーザから受け取ったコインが、犯罪行為により得られた資金ではないと確信が持てる。ただしここでは、マイニングによって得たコインは全て合法的に得られたものであると仮定している。コンピュータウイルスなどが計算機の持ち主の意向に反してマイニングを行い、採掘されたコインをウイルスの作成者が得るようなケースに関しては、本発明で対応できる範囲外である。また、プールマイニングを行う上では、参加者は全員身元情報を明らかにする必要がある。
【００２１】
上記の、ユーザがブロックチェーン上で行うことのできる取引の種類を限定する機能は、ブロックチェーンにその機能を持たせてもよく、ウォレットにその機能を実装してもよい。また、スマートコントラクトにその機能を持たせることも想定される。
【００２２】
ユーザの電子証明書には、ユーザの国籍や自然人・法人の区別といった、納税額の計算に必要なユーザの属性情報を含める。この情報が正しいことは、認証局が確認する。また各取引において、ユーザが暗号資産を入手した際に支払った法定通貨の額や取引成立時刻などの、納税額の計算に必要な残りの情報の入力を義務化する。これにより、ブロックチェーンに登録された情報のみから、身元が登録されたユーザの納税額を計算することができるようになる。政府当局は、各ユーザの身元情報を認証局に問い合わせることにより得ることができ、ブロックチェーンに登録された情報から計算した納税額と各ユーザが実際に納税した金額を比較することで、そのユーザが納税を適正に行ったかどうかが分かる。また、違法行為が行われた場合には検挙が容易になる。尚、身元情報が未登録のユーザがマイニングによって得た利益に対してかかる税金の納税に関しては、本システムによる監視の対象外である。また、本発明においては、納税額の計算に必要な情報の正確性は判断しない。仮に不正確な情報が入力されたとしても、不正確な情報を入力した責任がどのユーザにあるかの特定は容易であり、その対応は政府当局などが行うことを想定している。
【００２３】
場合によっては、ユーザが積極的に自分の身元情報を他のユーザに開示したいケースも考えられる。このようなケースに対応するため、電子証明書にそのユーザの身元情報の認証局による電子署名を含めても良い。この電子署名を利用すれば、あるユーザの開示したそのユーザ自身の身元情報が真正であることを誰でも検証できる。
【００２４】
本システムを完全分散型とするためには、認証局が単一故障点であってはならない。本システムには、認証局の検証鍵をブロックチェーンに登録する仕組みおよびこれを失効させる仕組みを備える。登録ユーザの電子証明書を検証するためにはその電子証明書を発行した認証局が有効である必要があり、有効な認証局とはその検証鍵がブロックチェーンに登録されており、かつ失効していない認証局である。認証局の検証鍵は失効することがあるため、あるユーザによるブロックチェーン上の操作が許可されているか判定するためにはその操作が行われた時刻に遡ってそのユーザの電子証明書とその電子証明書を発行した認証局の両方が有効であったか調べる必要があり、これはブロックチェーンに含まれる過去のブロックを調べることで実現できる。
【００２５】
本システムでは、認証局の検証鍵をブロックチェーンに新たに追加し、また失効させるためにPoWを利用する。最も単純な実現方法は、PoWの仕組みをそのまま利用することで、追加または失効させる認証局の検証鍵を、ブロックを追加するマイナーが決める方法である。この場合、認証局を追加または失効させるという操作が正しいかどうかを各マイナーが判断することで、正しいチェーンが最も速く伸びる。認証局を追加または失効させるという操作が正しいかどうかの判断は、各マイナーのソフトウェアを動作させているユーザが判断しても良いし、マイナーのソフトウェアに判断を行う基準を内蔵しておき、その基準によってマイナーのソフトウェアが自動的に判断しても良い。マイナーのソフトウェアが自動的に判断することは、ユーザがマイナーのソフトウェアの作成者に判断を委任することに相当する。
【００２６】
認証局を追加または失効させるという操作が正しいかどうかを各マイナーが判断するためには、その根拠となる情報をマイナーが保持している必要があり、この情報はマイナーの計算機の所有者が入力することが考えられる。このような方式がとられた場合、ブロックチェーンに参加するノード間で認証局を追加または失効させるかの判断が分かれる可能性があり、判断が分かれた場合にはチェーンのフォークが発生する。このフォークの発生を防止するためには以下のようにすればよい。認証局の検証鍵を追加または失効するという議案をネットワークにブロードキャストし、新たにブロックを追加したノードがこの議案に賛成した場合にのみ議案を可決する。一旦議案が可決されれば、反対のノードも、議案の可決したチェーンを正しいチェーンとみなすことで、フォークを避けることができる。ただし、PoWの性質上、確率上はネットワークに参加するノードのうち少数のノードのみが賛成する場合にでも議案が可決される場合がある。少数のノードの賛成によって議案が可決されることを防ぐために、確実に過半数のノードの賛成を得たことが分かるまで、複数のブロックに渡って仮説検定を行ってもよい。このためには、マイナーが新しく追加するブロックに、そのマイナーが議案に賛同するかを示す情報を新しく追加するブロックに追加する。賛同するか否かの情報は、CPUパワーあたりのランダムサンプリングとみなすことができる。複数の連続するブロック中の賛成の数からP値を計算し、一定割合以上のノードが賛成している可能性があらかじめ決められた値より大きい場合に議決する。
【００２７】
上記のようにプロトコルを構成することで、認証局の検証鍵が全て失われた場合には、身元情報が登録されたユーザのみが許可される操作ができなくなるが、それでもマイニングは可能であるため、新しい認証局の検証鍵を追加する操作が可能であり、したがってブロックチェーンの機能を復旧させることが可能である。
【００２８】
認証局がユーザの身元を確認した後にブロックチェーンにユーザの電子証明書を登録するには、ブロックチェーン上の任意の位置にユーザの電子証明書を記録し、このブロックチェーン上の位置をそのユーザに知らせることで行う。このユーザの電子証明書には、ユーザのアカウントのアドレスと、このブロックチェーン上で行われる取引に対する納税額の計算に必要な最小限の情報、および認証局が保管するユーザの住所等の非公開身元情報の電子署名が記録される。あるユーザが、自分の電子証明書がブロックチェーンに登録されていることを示すには、自分の電子証明書が登録されているブロックチェーン上の位置を、自分のアドレスおよび電子証明書を発行した認証局の検証鍵とともに示すことで行う。
【００２９】
本発明に於いては、認証局の検証鍵をブロックチェーンに登録および削除する仕組みを備える。このために検証鍵の更新情報を、新しいブロックから過去に向かって順に遡って参照できるリンクトリストに記録する。認証局の検証鍵が追加または失効する毎に、新しく追加されるブロックに、更新情報として追加または失効する検証鍵と一つ前の更新情報のブロックチェーン上の位置情報を記録する。また、各ブロックの決まった位置に最新の更新情報の位置情報を記録する。ある鍵が、ある時点において有効な鍵か確かめるには、最新のブロックに記録された更新情報の位置情報から、最新の更新情報を参照し、この中の一つ前の更新情報の位置を過去に向かって順に遡って、該当期間にその鍵が登録され、削除されていないことを確認する。
【００３０】
図１に、本システムの機能を利用するためのブロックチェーンのデータ構造の例を示す。各ブロックには、各ブロックの追加された時刻、ハッシュ値、ナンス等のビットコインのブロックと共通のデータに加えて、最新の議案の位置および、そのブロックを追加したマイナーが各議案に賛成するか反対するかを示すデータが追加される。また、ブロックの任意の箇所に、ユーザの電子証明書や、認証局追加または失効の議案を追加できる。各議案には、一つ前の議案の位置が含まれる。実施例3および4で示されるとおり、各議案が登録されてからNブロック後にその議案が可決または否決されることが決定する。
【００３１】
第１の発明に係るブロックチェーンシステムは、ピアツーピアネットワークに参加するノードにより運営されるブロックチェーンシステムであって、ブロックチェーン上に各ユーザアカウントの検証鍵の電子証明書を登録する手段と、各ユーザアカウントの検証鍵の電子証明書の該ブロックチェーンへの登録の有無を判別する手段を有し、各ユーザのユーザアカウントの検証鍵の電子証明書の該ブロックチェーンへの登録の有無に応じて、該ブロックチェーン上で該ユーザが実行できる操作の種類を限定する手段を有することを特徴とするものである。
【００３２】
第２の発明に係るブロックチェーンシステムは、第1の発明に係るブロックチェーンシステムであって、ブロックチェーン上に電子証明書認証局の検証鍵を登録・削除する手段と、この仕組みによって登録された検証鍵を使用して、各ユーザアカウントの前記電子証明書の真正性を確認する手段を有することを特徴とするものである。
【００３３】
第３の発明に係るブロックチェーンシステムは、第２の発明に係るブロックチェーンシステムであって、システムに参加するノードによる投票によりブロックチェーン上に登録した上記電子証明書認証局の検証鍵の登録・削除の可否を決定する手段を有することを特徴とするものである。
【００３４】
第４の発明に係るブロックチェーンシステムは、第３の発明に係るブロックチェーンシステムであって、ブロックチェーン上でこれから行われる操作によって各ユーザが支払う必要のある納税額を決定するために必要な情報を特定する手段と、前記情報が全て前記システムに入力されている場合のみ前記操作の実行を許可する手段を有することを特徴とするものである。
【００３５】
第５の発明は第１ないし第４の発明に係るブロックチェーンシステムを実現するためのコンピュータープログラムである。
【発明の効果】
【００３６】
本願発明に係るブロックチェーンシステムでは以下のことが実現される。1) 完全分散型暗号資産において、一部の参加者が身元情報を登録し、政府当局が登録された身元情報を閲覧することができる。2) 身元情報を登録するか否かを各参加者が選択することができる。3) 身元情報を登録して参加し、取引を行う場合も、登録された参加者の身元情報全てが一般に公表されることはなく、納税額の計算に必要な情報のみが公開される。4) 身元情報を登録せずに参加しても、マイニングと送金などの基本的な操作ができる。5) 身元情報を登録しないユーザによる違法行為を防止することができる。６）さらに、本システム上での取引により発生する納税額を決定する情報の入力を、取引をしようとするユーザに義務付けることにより、取引の合法性が証明できる。また、本願発明に係るコンピュータープログラムは上記のブロックチェーンシステムを実現する。これらの結果、本願発明は暗号資産のブロックチェーン上での取引を合法的なものに限定するものであり、取引の手段としてのブロックチェーンの利用を拡大し、グローバルな流通を促進し世界の経済成長を促進するものである。
【図面の簡単な説明】
【００３７】
【図１】本システムの機能を利用するためのブロックチェーンのデータ構造の概念図である。
【発明を実施するための形態】
【００３８】
つぎに、本発明の実施形態を説明するが、本発明の技術的範囲を逸脱しない範囲において様々な変更や修正が可能であることは言うまでもない。
【実施例１】
【００３９】
本実施例のブロックチェーンシステムは、第１の発明の一実施例であり、PoWを利用する完全分散型ブロックチェーンシステム構成の他に、アルゴリズム1-1、 1-2、 1-3、 1-4、 1-5、 1-6を有する。
【００４０】
本システムはPoWを強化したものでありPoWと同じ技術を用いている。PoWブロックチェーンはピアツーピアネットワークとして構成される。ネットワーク全体は固定トポロジー無しに緩やかに結合している。あるノードがネットワークに参加するためにはすでに参加しているノードを一つは知っている必要がある。各ノードは無作為に選ばれたいくつかのノードと繋がっている。メッセージはゴシッププロトコルによってブロードキャストされる。各ノードはブロックチェーンの全情報のコピーを保持している。
【００４１】
マイナーでは2つのスレッドが並列して走っており、それぞれアルゴリズム1-1とアルゴリズム1-2を実行する。アルゴリズム1-1と1-2を実行する2つのスレッドは新しく受信されたアイテムのリストLを共有する。ブロックチェーンにアイテムを追加するには、ネットワークに追加するアイテムをブロードキャストする。このアイテムは、各マイナーが実行するアルゴリズム1-1により受信される。ブロックチェーンにユーザアカウントの電子証明書を登録するには、アルゴリズム1-3を呼び出す。ブロックチェーン上のデータの電子証明書のブロックチェーンへの登録の有無を判別するには、アルゴリズム1-4を呼び出す。アルゴリズム1-6において与えられたアイテムの操作に認証が必要であれば、そのアイテムに関連付けられた電子証明書を検証し、またそのアイテムを認証された操作として検証する。認証が必要なアイテムに関しては、電子証明書の検証と認証された操作としての検証の両方に成功しなければ、アイテムの検証は成功しない。一方、認証が必要でないアイテムの操作は、認証されていない操作として検証する。チェーン全体の検証を行うアルゴリズム1-5からアルゴリズム1-6を呼び出すことで、電子証明書の有無に応じて、実行できる操作の種類を変える。
【００４２】
アルゴリズム1-1: アイテムの受信とブロックの作成
begin
while true do
while 新しいブロックが追加されるまで do
アイテムtを受信する
アイテムtを新しく受信されたアイテムのリストLに追加する
end while
end while
end
アルゴリズム1-1は、新しく受信されたアイテムをアイテムリストの最後尾に付加する。
【００４３】
アルゴリズム1-2 : マイニング
begin
他のノードによって新たなブロックが追加されるまで待つ。
以降新たなブロックが追加されたチェーンについて処理を行う。
while true do
新しく受信されたアイテムのリストL内の各要素をアルゴリズム1-6を用いて検証し、検証に成功したもの全てからブロックbを作成する。
L を空にする
repeat
repeat
異なったナンスでブロックのハッシュ値を計算する
until 新しいブロックを受信する、もしくは規定数のゼロビットで始まるナンスを見つける
規定数のゼロビットで始まるナンスを見つけた場合には、そのナンスを含むブロックをネットワークにブロードキャストし、以降そのブロックを追加したチェーンに対して処理を行う
新しいブロックを受信した場合には、そのブロックを引数としてアルゴリズム1-5を呼び出し、チェーンを検証する。
if 新しいブロックを含むチェーンの検証に成功し、それに対応するチェーンがより長い場合 then
以降そのブロックに対応するチェーンに対して処理を行う。
変更後のチェーンに含まれないアイテムをリストLに移動する。
end if
until 新しいブロックが追加されるまで
end while
end
アルゴリズム1-2が始まると、マイナーはまず作業するチェーンを選ぶ。有効なチェーンが複数存在し得る。それらは、みな同じブロックから始まっている。ある特定のブロックの並び、あるいはチェーンは、末尾のブロックにより特定される。マイナーは最初に受信されたブロックに対応するチェーンについて作業を始める。
【００４４】
アルゴリズム1-3: ユーザアカウントの電子証明書の登録
入力：ユーザアカウントの電子証明書 c
begin
電子証明書c を単純にブロックに追加する操作をアイテムとしてネットワークに送信する
end
【００４５】
アルゴリズム1-4: ユーザアカウントの電子証明書がブロックチェーンに登録されているか調べる
入力：ブロックチェーンの最新ブロックb、 ブロックチェーン上の位置p、 ユーザアカウントu
begin
ユーザアカウントuが、ブロックbを最新ブロックとして含むチェーンに登録されてなければfalseを返す
ブロックbを最新ブロックとして含むチェーン上の位置pに登録された電子証明書を既定の認証局の公開鍵で検証可能であればtrueを返す
return false
end
【００４６】
アルゴリズム1-5: チェーンを検証し、正しい場合にのみtrueを返す
入力：ブロックb
出力：ブロックbを最新のブロックとして含むチェーンを検証し、正しい場合にのみtrueを返す
begin
for bを最新ブロックとして含むチェーン内の全てのブロックkについて時間順に do
// ブロックk内の全てのアイテムを検証し、失敗した場合にはfalseを返す
for ブロックk内のすべてのアイテムtについて do
アルゴリズム1-6を用いてアイテムtを検証する
if アイテムtの検証に失敗 then return false
end for
end for
return true
end
【００４７】
アルゴリズム1-6 : アイテムの検証
入力：アイテムt
出力：検証に成功かを示すブール値
begin
if アイテムtの操作に認証が必要 then
if アイテムtに関連付けられた電子証明書を既定の認証局の公開鍵で検証可能 then
アイテムtを認証された操作として検証し、失敗すればfalseを返す
else
return false
endif
else
アイテムtを認証されてない操作として検証し、失敗すればfalseを返す
endif
return true
end
【実施例２】
【００４８】
本実施例のブロックチェーンシステムは、第２の発明の一実施例であり、PoWを利用する完全分散型ブロックチェーンシステム構成の他に、アルゴリズム2-1、 2-2、 2-3、 2-4、 2-5、 2-6、 2-7、 2-8を有する。
【００４９】
実施例１と同様に、マイナーでは2つのスレッドが並列して走っており、それぞれアルゴリズム2-1とアルゴリズム2-2を実行する。アルゴリズム2-1と2-2を実行する2つのスレッドは新しく受信されたアイテムのリストLを共有する。ブロックチェーンにアイテムを追加するには、ネットワークに追加するアイテムをブロードキャストする。このアイテムは、各マイナーが実行するアルゴリズム2-1により受信される。ブロックチェーンにユーザアカウントの電子証明書を登録するには、アルゴリズム2-3を呼び出す。ブロックチェーン上のデータの電子証明書のブロックチェーンへの登録の有無を判別するには、アルゴリズム2-4を呼び出す。
【００５０】
本実施例では、公開鍵電子証明書認証局の検証鍵を登録または削除するには、アルゴリズム2-7を呼び出す。アルゴリズム2-8を利用して、過去のある時刻または現在において、登録されており削除されていない公開鍵電子証明書認証局の検証鍵のリストを得る。これにより得られた公開鍵を利用して、実施例１と同様にアルゴリズム2-6において、与えられたアイテムの操作に認証が必要であれば、そのアイテムに関連付けられた電子証明書を検証し、もしその電子証明書が真正であれば、続けてそのアイテムを認証された操作として検証する。
【００５１】
アルゴリズム2-1はアルゴリズム1-1と同じである。
【００５２】
アルゴリズム2-2 : マイニング。
begin
他のノードによって新たなブロックが追加されるまで待つ。
以降新たなブロックが追加されたチェーンについて処理を行う。
while true do
ブロックbに空ブロックを代入
for リストL内の各アイテムe do
(アイテムe、 現在時刻)を引数としてアルゴリズム2-6を呼び出す
if アルゴリズム2-6による検証に成功 then
ブロックbにアイテムeを追加
end if
end for
リストLを空にする
repeat
repeat
異なったナンスでブロックのハッシュ値を計算する
until 新しいブロックを受信する、もしくは規定数のゼロビットで始まるナンスを見つける
規定数のゼロビットで始まるナンスを見つけた場合には、そのナンスを含むブロックをネットワークにブロードキャストし、以降そのブロックを追加したチェーンに対して処理を行う
新しいブロックを受信した場合には、そのブロックを引数としてアルゴリズム2-5を呼び出し、チェーンを検証する。
if 新しいブロックを含むチェーンの検証に成功し、それに対応するチェーンがより長い場合 then
以降そのブロックに対応するチェーンに対して処理を行う。
変更後のチェーンに含まれないアイテムをリストLに移動する。
end if
until 新しいブロックが追加されるまで
end while
end
【００５３】
アルゴリズム2-3はアルゴリズム1-3と同じ
【００５４】
アルゴリズム2-4: ユーザアカウントの電子証明書がブロックチェーンに登録されているか調べる。
入力：ブロックチェーンの最新ブロックb、 ブロックチェーン上の位置p、 ユーザアカウントu
begin
ユーザアカウントuが、ブロックbを最新ブロックとして含むチェーンに登録されてなければfalseを返す
アルゴリズム2-8を(ブロックb、 現在時刻)を引数にして呼び出して、現在有効な認証局の公開鍵のリストを得る。結果をリストcsに代入する。
ブロックbを最新ブロックとして含むチェーン上の位置pに登録された電子証明書をリストcs内のいずれかの認証局の公開鍵で検証可能であればtrueを返す
return false
end
【００５５】
アルゴリズム2-5: チェーンを検証し、正しい場合にのみtrueを返す
入力：ブロックb
出力：ブロックbを最新のブロックとして含むチェーンを検証し、正しい場合にのみtrueを返す
begin
for ブロックbを最新ブロックとして含むチェーン内の全てのブロックkについて時間順に do
// ブロックk内の全てのアイテムを検証し、失敗した場合にはfalseを返す
for ブロックk内のすべてのアイテムtについて do
(アイテムt、 ブロックkの時刻)を引数にしてアルゴリズム2-6を用いてアイテムtを検証する
if アイテムtの検証に失敗 then return false
end for
end for
return true
end
【００５６】
アルゴリズム2-6 : アイテムの検証
入力：アイテムt、 時刻m
出力：検証に成功かを示すブール値
begin
アルゴリズム2-8を(現在処理しているブロック、 時刻m)を引数にして呼び出して、時刻mの時点で有効な認証局の公開鍵のリストを得る。結果をcsに代入する。
if アイテムtの操作に認証が必要 then
if アイテムtに関連付けられた電子証明書をリストcs内のいずれかの認証局の公開鍵で検証可能 then
アイテムtを認証された操作として検証し、失敗すればfalseを返す
else
return false
endif
else
アイテムtを認証されてない操作として検証し、失敗すればfalseを返す
endif
return true
end
【００５７】
アルゴリズム2-7 : 公開鍵電子証明書認証局の検証鍵を登録または削除する
入力：公開鍵電子証明書認証局の検証鍵を登録または削除する操作 o
begin
操作o をアイテムとしてネットワークに送信する
end
【００５８】
アルゴリズム2-8 : ある時点においてブロックチェーンに登録されている認証局の検証鍵のリストを得る
入力 : ブロックチェーンの最後のブロック b、 時刻 m
出力 : ブロックbを最後とするチェーンにおいて、時刻 mにおいて有効な認証局の検証鍵のリスト
begin
リストcsを空にする
for ブロックbから辿って得られる、ブロックチェーンに登録された時刻m以前の認証局追加または失効の各操作oについて時間順に do
if 操作oが認証局を追加する操作である then
リストcsに、操作oにより追加される認証局を追加
end if
if 操作oが認証局失効する操作である then
リストcsから操作oにより執行する認証局を削除
end if
end for
return cs
end
【実施例３】
【００５９】
本実施例のブロックチェーンシステムは、第３の発明の一実施例であり、PoWを利用する完全分散型ブロックチェーンシステム構成の他に、アルゴリズム3-1、 3-2、 3-3、 3-4、 3-5、 3-6、 3-7、 3-8を有する。
【００６０】
実施例２と同様に、マイナーでは2つのスレッドが並列して走っており、それぞれアルゴリズム3-1とアルゴリズム3-2を実行する。アルゴリズム3-1と3-2を実行する2つのスレッドは新しく受信されたアイテムのリストLを共有する。ブロックチェーンにアイテムを追加するには、ネットワークに追加するアイテムをブロードキャストする。このアイテムは、各マイナーが実行するアルゴリズム3-1により受信される。ブロックチェーンにユーザアカウントの電子証明書を登録するには、アルゴリズム3-3を呼び出す。ブロックチェーン上のデータの電子証明書のブロックチェーンへの登録の有無を判別するには、アルゴリズム3-4を呼び出す。公開鍵電子証明書認証局の検証鍵を登録または削除する議案を登録するには、アルゴリズム3-7を呼び出す。
【００６１】
実施例3では、システムに参加するノードによる投票によりブロックチェーン上に登録した上記電子証明書認証局の検証鍵の登録・削除の可否を決定する。このためには、認証局の検証鍵を追加または失効するという議案をネットワークにブロードキャストし、新たにブロックを追加したノードがこの議案に賛成した場合にのみ議案を可決する。マイナーは、新しく追加するブロックに、そのマイナーが議案に賛同するかを示す情報を新しく追加するブロックに追加する(アルゴリズム3-2)。各ブロックに追加された、各議案に賛同するか否かの情報は、CPUパワーあたりのランダムサンプリングとみなすことができる。複数の連続するブロック中の賛成の数からP値を計算し、一定割合以上のノードが賛成している可能性があらかじめ決められた値より大きい場合に議決する。この実施例では、公開鍵電子証明書認証局の検証鍵を登録または削除する各議案に対し、N ブロック時間の間マイナーによる投票を受け付け、アルゴリズム3-8において、このNブロック内で追加されたブロックのうち、あらかじめP値とNから計算して決めたある数以上のブロックに、議案に賛成することを示すデータが付加されているか調べることで、各議案がその後Nブロック時間の間に議決されたか調べる。
【００６２】
アルゴリズム3-1はアルゴリズム1-1と同じ。
【００６３】
アルゴリズム3-2 : マイニング
begin
他のノードによって新たなブロックが追加されるまで待つ。
以降新たなブロックが追加されたチェーンについて処理を行う。
while true do
ブロックbを空にする
for リストL内の各アイテムe do
(アイテムe、 現在時刻)を引数としてアルゴリズム3-6を呼び出し、アイテムeを検証する
if アイテムeの検証に成功 then
ブロックbにアイテムeを追加
end if
end for
ブロックbにブロックチェーンに過去Nブロック時間内に登録された公開鍵電子証明書認証局の公開鍵を登録または削除する議案に対する賛否情報を付加する
リストL を空にする
repeat
repeat
異なったナンスでブロックのハッシュ値を計算する
until 新しいブロックを受信する、もしくは規定数のゼロビットで始まるナンスを見つける
規定数のゼロビットで始まるナンスを見つけた場合には、そのナンスを含むブロックをネットワークにブロードキャストし、以降そのブロックを追加したチェーンに対して処理を行う
新しいブロックを受信した場合には、そのブロックを引数としてアルゴリズム3-5を呼び出し、チェーンを検証する。
if 新しいブロックを含むチェーンの検証に成功し、それに対応するチェーンがより長い場合 then
以降そのブロックに対応するチェーンに対して処理を行う。
変更後のチェーンに含まれないアイテムをリストLに移動する。
end if
until 新しいブロックが追加されるまで
end while
end
【００６４】
アルゴリズム3-3はアルゴリズム1-3と同じ
【００６５】
アルゴリズム3-4: ユーザアカウントの電子証明書がブロックチェーンに登録されているか調べる
入力：ブロックチェーンの最新ブロックb、 ブロックチェーン上の位置p、 ユーザアカウントu
begin
ユーザアカウントuが、ブロックbを最新ブロックとして含むチェーンに登録されてなければfalseを返す
アルゴリズム3-8を(ブロックb、 現在時刻)を引数にして呼び出して、現在有効な認証局の公開鍵のリストを得る。結果をリストcsに代入する。
ブロックbを最新ブロックとして含むチェーン上の位置pに登録された電子証明書をリストcs内のいずれかの認証局の公開鍵で検証可能であればtrueを返す
return false
end
【００６６】
アルゴリズム3-5: チェーンを検証し、正しい場合にのみtrueを返す
入力：ブロックb
出力：ブロックbを最新のブロックとして含むチェーンを検証し、正しい場合にのみtrueを返す
begin
for ブロックbを最新ブロックとして含むチェーン内の全てのブロックkについて時間順に do
// ブロックk内の全てのアイテムを検証し、失敗した場合にはfalseを返す
for ブロックk内のすべてのアイテムtについて do
(アイテムt、 ブロックkの時刻)を引数にしてアルゴリズム3-6を用いてアイテムtを検証する
if  アイテムtの検証に失敗 then return false
end for
end for
return true
end
【００６７】
アルゴリズム3-6 : アイテムの検証
入力：アイテムt、 時刻m
出力：検証に成功かを示すブール値
begin
アルゴリズム3-8を(現在処理しているチェーンの最新ブロック、 時刻m)を引数にして呼び出し、現在処理しているチェーンの時刻mにおいて有効な認証局の公開鍵のリストを得る。結果をリストcsに代入する。
if アイテムtの操作に認証が必要 then
if アイテムtに関連付けられた電子証明書をリストcs内のいずれかの認証局の公開鍵で検証可能 then
アイテムtを認証された操作として検証し、失敗すればfalseを返す
else
return false
endif
else
アイテムtを認証されてない操作として検証し、失敗すればfalseを返す
endif
return true
end
【００６８】
アルゴリズム3-7 : 公開鍵電子証明書認証局の検証鍵を登録または削除する議案の登録する
入力：公開鍵電子証明書認証局の検証鍵を登録または削除する議案の登録操作 o
begin
操作o をアイテムとしてネットワークに送信する
end
【００６９】
アルゴリズム3-8 : ある時点においてブロックチェーンに登録されている認証局の検証鍵のリストを得る
入力 : ブロックチェーンの最後のブロック b、 時刻 m
出力 : 認証局の検証鍵のリスト
begin
リストcsを空にする
for ブロックbから辿って得られる、ブロックチェーンに登録された時刻 m以前の認証局追加または失効の各議案oについて時間順に do
if oが認証局cを追加する議案であり、その後Nのブロックで議案oが可決された then
リストcsに、議案oにより追加される認証局を追加
end if
if リストoが認証局cを失効する議案であり、その後Nのブロックで議案oが可決された then
リストcsから、議案oにより執行する認証局を削除
end if
end for
return リストcs
end
【実施例４】
【００７０】
本実施例のブロックチェーンシステムは、第４の発明の一実施例であり、PoWを利用する完全分散型ブロックチェーンシステム構成の他に、アルゴリズム4-1、 4-2、 4-3、 4-4、 4-5、 4-6、 4-7、 4-8を有する。
【００７１】
実施例3と同様に、マイナーでは2つのスレッドが並列して走っており、それぞれアルゴリズム4-1とアルゴリズム4-2を実行する。アルゴリズム4-1と4-2を実行する2つのスレッドは新しく受信されたアイテムのリストLを共有する。ブロックチェーンにアイテムを追加するには、ネットワークに追加するアイテムをブロードキャストする。このアイテムは、各マイナーが実行するアルゴリズム4-1により受信される。ブロックチェーンにユーザアカウントの電子証明書を登録するには、アルゴリズム4-3を呼び出す。ブロックチェーン上のデータの電子証明書のブロックチェーンへの登録の有無を判別するには、アルゴリズム4-4を呼び出す。公開鍵電子証明書認証局の検証鍵を登録または削除する議案を登録するには、アルゴリズム4-7を呼び出す。この実施例では、公開鍵電子証明書認証局の検証鍵を登録または削除する各議案に対し、N ブロック時間の間マイナーによる投票を受け付ける。アルゴリズム4-8において、各議案がその後Nブロック時間の間に議決されたか調べる。このためには、例えばこのNブロック内で追加されたブロックのうち、ある決められた数以上のブロックに、議案に賛成することを示すデータが付加されているか調べる。
【００７２】
実施例4では、アルゴリズム4-6において、各アイテムの操作を実行する際に各ユーザが支払う必要のある納税額を決定するために必要な情報を特定し、これらの情報が揃っているか調べ、その結果に応じて各アイテムの実行結果の検証結果を変えることで、該操作の実行を許可または禁止する。例えば、納税額を決定のために、A国においては各操作が行われた正確な時刻情報が必要であり、B国においてはそれに加えて、支払われた暗号資産の法定通貨建ての価格が必要である場合には、各ユーザの国籍がA国かB国かに応じて、これらの情報を、納税額を決定するために必要な情報として特定する。次いで、各操作にこれらの情報が含まれているか調べ、含まれていることを検証が成功する必要条件とすることにより、これらの情報全てが含まれていない操作を禁止する。
【００７３】
アルゴリズム4-1はアルゴリズム1-1と同じ。
【００７４】
アルゴリズム4-2 : マイニング
begin
他のノードによって新たなブロックが追加されるまで待つ。
以降新たなブロックが追加されたチェーンについて処理を行う。
while true do
ブロックb を空にする
for リストL内の各アイテムe do
(アイテムe、 現在時刻)を引数としてアルゴリズム4-6を呼び出し、アイテムeを検証する
if アイテムeの検証に成功 then
ブロック bにアイテムeを追加
end if
end for
ブロックbにブロックチェーンに過去Nブロック時間内に登録された公開鍵電子証明書認証局の公開鍵を登録または削除する議案に対する賛否情報を付加する
リストL を空にする
repeat
repeat
異なったナンスでブロックのハッシュ値を計算する
until 新しいブロックを受信する、もしくは規定数のゼロビットで始まるナンスを見つける
規定数のゼロビットで始まるナンスを見つけた場合には、そのナンスを含むブロックをネットワークにブロードキャストし、以降そのブロックを追加したチェーンに対して処理を行う
新しいブロックを受信した場合には、そのブロックを引数としてアルゴリズム4-5を呼び出し、チェーンを検証する。
if 新しいブロックを含むチェーンの検証に成功し、それに対応するチェーンがより長い場合 then
以降そのブロックに対応するチェーンに対して処理を行う。
変更後のチェーンに含まれないアイテムをリストLに移動する。
end if
until 新しいブロックが追加されるまで
end while
end
【００７５】
アルゴリズム4-3はアルゴリズム1-3と同じ
【００７６】
アルゴリズム4-4はアルゴリズム3-4と同じ
【００７７】
アルゴリズム4-5: チェーンを検証し、正しい場合にのみtrueを返す
入力：ブロックb
出力：ブロックbを最新のブロックとして含むチェーンを検証し、正しい場合にのみtrueを返す
begin
for bを最新ブロックとして含むチェーン内の全てのブロックkについて時間順に do
// ブロックk内の全てのアイテムを検証し、失敗した場合にはfalseを返す
for k内のすべてのアイテムtについて do
(アイテムt、 ブロックkの時刻)を引数にしてアルゴリズム4-6を用いてアイテムtを検証する
if アイテムtの検証に失敗 then return false
end for
end for
return true
end
【００７８】
アルゴリズム4-6 : アイテムの検証
入力：アイテムt、 時刻m
出力：検証に成功かを示すブール値
begin
アルゴリズム4-8を(現在処理しているチェーンの最終ブロック、 時刻m)を引数にして呼び出し、現在処理しているチェーンで時刻mにおいて有効な認証局の公開鍵のリストを得る。結果をリストcsに代入する。
アイテムtの操作を実行する際に各ユーザが支払う必要のある納税額を決定するために必要な情報を特定し、これらの情報が揃っているか調べる
if 情報が全て揃っていない then
return false
end if
if アイテムtの操作に認証が必要 then
if アイテムtに関連付けられた電子証明書をリストcs内のいずれかの認証局の公開鍵で検証可能 then
アイテムtを認証された操作として検証し、失敗すればfalseを返す
else
return false
endif
else
アイテムtを認証されてない操作として検証し、失敗すればfalseを返す
endif
return true
end
【００７９】
アルゴリズム4-7はアルゴリズム3-7と同じ
【００８０】
アルゴリズム4-8はアルゴリズム3-8と同じ
【産業上の利用可能性】
【００８１】
本願発明に係るブロックチェーンシステムは、既存の様々な暗号資産を取引するブロックチェ―ンシステムにも適用可能なものであり、それらにおける暗号資産の取引を合法的なものに限定することを可能とする。
【要約】
【課題】暗号資産を用いた違法行為や脱税行為を不可能とする完全分散型ブロックチェーンシステムを提供する。
【解決手段】参加者が身元情報を登録することを選択でき、身元情報を登録して取引を行う場合でも登録された参加者の身元情報全てが一般に公表されることはなく、納税額の計算に必要な情報のみが公開され、身元情報を登録しない場合はマイニングと送金などの基本的な操作はできるが、他のユーザからの暗号資産の受け取りはできないブロックチェーンシステムとする。
【選択図】図１【図１】
0006967211.tif 000002