(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024165559
(43)【公開日】2024-11-28
(54)【発明の名称】アカウント選択プログラム、アカウント選択装置、およびアカウント選択方法
(51)【国際特許分類】
G06Q 50/10 20120101AFI20241121BHJP
【FI】
G06Q50/10
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023081841
(22)【出願日】2023-05-17
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】萱場 啓太
(72)【発明者】
【氏名】藤本 真吾
【テーマコード(参考)】
5L049
5L050
【Fターム(参考)】
5L049CC12
5L050CC12
(57)【要約】
【課題】分散型コミュニティの評価者など、公平性や透明性が要求される人物や物を選出するために、当該人物や物に対応付けられる、BC上の複数のBCアカウントがSCによってランダムに選択されるが、SCによるランダム選択は時間的コストがかかってしまう。
【解決手段】アカウント選択プログラムは、複数のBCアカウントの各々の識別子をハッシュ化したハッシュ化IDが記憶されたブロックチェーン上のスマートコントラクトにより、乱数に基づいて、シード値を生成し、シード値に基づいて、複数のハッシュ化IDから、第1のハッシュ化IDを選択し、選択された第1のハッシュ化IDをシード値として、複数のハッシュ化IDから、第2のハッシュ化IDを選択する処理をコンピュータに実行させる。
【選択図】
図6
【特許請求の範囲】
【請求項1】
複数のブロックチェーン(BC)アカウントの各々の識別子をハッシュ化したハッシュ化IDが記憶されたブロックチェーン上のスマートコントラクトにより、
乱数に基づいて、シード値を生成し、
前記シード値に基づいて、複数の前記ハッシュ化IDから、第1のハッシュ化IDを選択し、
選択された前記第1のハッシュ化IDを前記シード値として、複数の前記ハッシュ化IDから、第2のハッシュ化IDを選択する
処理をコンピュータに実行させることを特徴とするアカウント選択プログラム。
【請求項2】
選択された前記第2のハッシュ化IDを前記シード値として、複数の前記ハッシュ化IDから、次の前記第2のハッシュ化IDを選択する処理を所定回数繰り返す処理を前記コンピュータに実行させることを特徴とする請求項1に記載のアカウント選択プログラム。
【請求項3】
前記シード値を生成する処理は、
複数のユーザの入力値を用いて生成された前記乱数に基づいて、前記シード値を生成する
処理を含むことを特徴とする請求項1または2に記載のアカウント選択プログラム。
【請求項4】
前記シード値を生成する処理は、
前記乱数に対してハッシュ関数を用いて演算を行い、前記シード値を生成する
処理を含むことを特徴とする請求項1または2に記載のアカウント選択プログラム。
【請求項5】
分散型コミュニティシステムにおける同一のコミュニティの複数のアカウントに各々が対応付けられる前記複数のBCアカウントの各々の識別子をハッシュ化した前記ハッシュ化IDをインデックスに対応付けて記憶する処理を前記コンピュータに実行させることを特徴とする請求項1または2に記載のアカウント選択プログラム。
【請求項6】
選択された複数の前記第1のハッシュ化IDに対応付けられる前記アカウントのユーザによって入力された前記コミュニティ内の物事に対する評価を受け付ける処理を前記コンピュータに実行させることを特徴とする請求項5に記載のアカウント選択プログラム。
【請求項7】
前記評価に基づいて、前記物事に対する報酬を決定する処理を前記コンピュータに実行させることを特徴とする請求項6に記載のアカウント選択プログラム。
【請求項8】
複数の人物または複数のデバイスに各々が対応付けられる前記複数のBCアカウントの各々の識別子をハッシュ化した前記ハッシュ化IDをインデックスに対応付けて記憶する処理を前記コンピュータに実行させることを特徴とする請求項1または2に記載のアカウント選択プログラム。
【請求項9】
複数のブロックチェーン(BC)アカウントの各々の識別子をハッシュ化したハッシュ化IDが記憶されたブロックチェーン上のスマートコントラクトにより、
乱数に基づいて、シード値を生成し、
前記シード値に基づいて、複数の前記ハッシュ化IDから、第1のハッシュ化IDを選択し、
選択された前記第1のハッシュ化IDを前記シード値として、複数の前記ハッシュ化IDから、第2のハッシュ化IDを選択する
処理を実行する制御部を備えたアカウント選択装置。
【請求項10】
複数のブロックチェーン(BC)アカウントの各々の識別子をハッシュ化したハッシュ化IDが記憶されたブロックチェーン上のスマートコントラクトにより、
乱数に基づいて、シード値を生成し、
前記シード値に基づいて、複数の前記ハッシュ化IDから、第1のハッシュ化IDを選択し、
選択された前記第1のハッシュ化IDを前記シード値として、複数の前記ハッシュ化IDから、第2のハッシュ化IDを選択する
処理をコンピュータが実行するアカウント選択方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、スマートコントラクトを用いたブロックチェーン上のアカウント選択技術に関する。
【背景技術】
【0002】
昨今、例えば、Web3、DAO、トークンエコノミーなど、ブロックチェーン(BC:BlockChain)技術を活用した、コミュニティやシステムの分散化への関心が高まっている。分散型コミュニティには、例えば、コミュニティ内でのある物事や活動などへの報酬を、同コミュニティの複数人の他者による評価に基づいて決定する民主的な報酬決定の仕組みがある。このようにして、分散型コミュニティは、他者によるレビューなどの評価の公平性を担保し、コミュニティの健全を保つようにしている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特表2022-541929号公報
【特許文献2】特表2020-515942号公報
【特許文献3】特表2022-523643号公報
【特許文献4】米国特許出願公開第2020/0204358号明細書
【特許文献5】特表2022-511623号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、現状の報酬決定の仕組みは、コミュニティシステムの運営者が、被評価者から金銭を受け取り、不正な評価を行うためのアカウント(いわゆるサクラアカウント)を用いて被評価者の高評価数を増加させるなど、恣意的操作が容易にできてしまうという問題がある。
【0005】
そこで、BC上のスマートコントラクト(SC:Smart Contract)を用いて、複数の評価者の各々に対応付けられるBC上の複数のBCアカウントをランダムに選出し、恣意的操作を抑制する技術が考えられる。当該技術の一例として、例えば、SCが、外部の乱数生成サービスによって生成された乱数を用いて、評価者に対応付けられるBCアカウントをランダムに選出する(以下、「ランダム選出方式1」という)。
【0006】
しかしながら、ランダム選出方式1では、外部の乱数生成サービスを用いるため、費用的コストがかかる、生成された乱数の妥当性や真正性の確保が困難である(いわゆる、オラクル問題)などといった問題が考えられる。
【0007】
そこで、例えば、SCが、BC上の不特定多数のユーザに任意の数値を非同期に入力させ、入力された各数値を用いて乱数を生成する。そして、SCが、当該乱数を用いて、評価者に対応付けられるBCアカウントをランダムに選出する技術(以下、「ランダム選出方式2」という)が考えられる。ランダム選出方式2では、特定のユーザが、不特定多数のユーザによって入力された各数値を知ることは困難であるため、乱数の妥当性や真正性を確保でき、また、外部の乱数生成サービスを用いないため、費用的コストを抑えられる。
【0008】
なお、SCを用いたランダム選出は、分散型コミュニティの評価者のみならず、例えば、打合せなどの発言者や、環境データ取得のためのデバイス、景品の当選者など、公平性や透明性が要求される人物や物などの選出であってよい。
【0009】
しかしながら、ランダム選出方式2は、複数のユーザから非同期に数値の入力を待つため、1回の乱数生成に時間がかかるといった問題が考えられる。特に、ランダム選出方式2では、複数の評価者などを選出するために当該評価者などの各々に対応付けられるBC上の複数のBCアカウントを選択する場合に乱数生成処理を何回も繰り返すことになるため、時間的コストが非常にかかってしまう。
【0010】
1つの側面では、BC上の複数のBCアカウントをSCによってランダムに選択する場合の時間的コストを削減することを目的とする。
【課題を解決するための手段】
【0011】
1つの態様において、アカウント選択プログラムは、複数のブロックチェーン(BC)アカウントの各々の識別子をハッシュ化したハッシュ化IDが記憶されたブロックチェーン上のスマートコントラクトにより、乱数に基づいて、シード値を生成し、シード値に基づいて、複数のハッシュ化IDから、第1のハッシュ化IDを選択し、選択された第1のハッシュ化IDをシード値として、複数のハッシュ化IDから、第2のハッシュ化IDを選択する処理をコンピュータに実行させる。
【発明の効果】
【0012】
1つの側面では、BC上の複数のBCアカウントをSCによってランダムに選択する場合の時間的コストを削減できる。
【図面の簡単な説明】
【0013】
【
図1】
図1は、分散型コミュニティシステムにおける恣意的操作を説明するための図である。
【
図2】
図2は、SCを用いたランダム選出による恣意的操作の抑制について説明するための図である。
【
図3】
図3は、ランダム選出方式1を説明するための図である。
【
図4】
図4は、ランダム選出方式2を説明するための図である。
【
図5】
図5は、本ランダム選出方式の一例を示す図である。
【
図6】
図6は、ランダム選出方式2および本ランダム選出方式の時間的コストについて説明するための図である。
【
図7】
図7は、本実施形態にかかるアカウント選択装置10の構成例を示す図である。
【
図8】
図8は、本実施形態にかかるユーザ情報31に記憶されるデータの一例を示す図である。
【
図9】
図9は、本実施形態にかかるアカウントID配列32に記憶されるデータの一例を示す図である。
【
図10】
図10は、本実施形態にかかるアカウント選択処理の流れの一例を示すフローチャートである。
【
図11】
図11は、本実施形態にかかるアカウント選択処理の流れの別例を示すフローチャートである。
【
図12】
図12は、本実施形態にかかるアカウント選択処理の流れの別例を示すフローチャートを説明するための図(1)である。
【
図13】
図13は、本実施形態にかかるアカウント選択処理の流れの別例を示すフローチャートを説明するための図(2)である。
【
図14】
図14は、本実施形態にかかるアカウント選択処理の流れの別例を示すフローチャートを説明するための図(3)である。
【
図15】
図15は、本実施形態にかかるアカウント選択処理の流れの別例を示すフローチャートを説明するための図(4)である。
【
図16】
図16は、本実施形態にかかるアカウント選択装置10のハードウェア構成例を示す図である。
【発明を実施するための形態】
【0014】
以下に、本実施形態にかかるアカウント選択プログラム、アカウント選択装置、およびアカウント選択方法の実施例を図面に基づいて詳細に説明する。なお、この実施例により本実施形態が限定されるものではない。また、各実施例は、矛盾のない範囲内で適宜組み合わせることができる。
【0015】
まず、分散型コミュニティシステムにおける恣意的操作について説明する。
図1は、分散型コミュニティシステムにおける恣意的操作を説明するための図である。
図1に示すように、BC技術を活用した分散型コミュニティシステムでは、例えば、コミュニティ内でのある物事や活動などを複数人の利用者が評価する際、システム運営者がサクラアカウントを用いて恣意的な操作を行うことができてしまう。より具体的には、例えば、システム運営者が、被評価者から金銭を受け取り、評価者にサクラアカウントを選出し、被評価者の高評価数を増加させるなど、被評価者に有利になるような恣意的な操作が容易にできてしまう。なお、このような恣意的操作は、分散型コミュニティの評価者のみならず、例えば、打合せなどの発言者や、環境データ取得のためのデバイス、景品の当選者など、公平性や透明性が要求される人や物などの選出においても可能である。
【0016】
そのため、BC上のSCを用いて、BC上の複数のBCアカウントをランダムに選出し、恣意的操作を抑制する技術が考えられる。
図2は、SCを用いたランダム選出による恣意的操作の抑制について説明するための図である。
図2に示すように、例えば、それぞれがBC上の複数のBCアカウントに対応付けられる複数の利用者から評価者を選出する際、改ざんが困難であるSCを用いてBCアカウントを選択し、評価者をランダムに選出することが可能である。これにより、システム運営者は恣意的にサクラアカウントを選出できなくなるため、
図1を用いて説明したような恣意的な操作を抑制できる。
【0017】
なお、SCを用いてBC上のBCアカウントをランダムに選択するためには乱数生成することが要求される。しかしながら、BCは、同一入力に対して、どのノード(または、ピアなどとも呼ばれるBCネットワークを構成するコンピュータを指す)でのSC実行であって同一出力であることが担保される仕組みであるため、SCの中で乱数を生成し、その結果で出力が変わるようなロジックの実装できない。
【0018】
そこで、ランダム選出方式1は、例えば、SCが、外部の乱数生成サービスによって生成された乱数を用いて、評価者に対応付けられるBCアカウントをランダムに選出する。
図3は、ランダム選出方式1を説明するための図である。
【0019】
図3に示すランダム選出方式1は、SCが、Chainlink VRFなどの外部の乱数生成サービスを用いて取得したN個の乱数rを用いて、N個のBCアカウントをランダムに選出する例である。より具体的には、情報処理装置は、例えば、SCによって、事前に全利用者のBCアカウントのアドレスなどの識別子であるIDを配列「アカウントID配列A」としてBCに記録する。そして、情報処理装置は、例えば、SCによって、外部の乱数生成サービスから取得した乱数N個を0~(length(A)-1)の範囲となるように整形した上でアカウントID配列Aのインデックスとして用いてN個のBCアカウントを選出する。
【0020】
しかしながら、ランダム選出方式1では、外部の乱数生成サービスを用いるため、複数の評価者を選出するような場合はより高コストとなり、費用的コストがかかるといった問題がある。また、ランダム選出方式1では、外部の乱数生成サービスにより生成された乱数の妥当性や真正性の確保が困難であるといった問題(いわゆる、オラクル問題)もある。
【0021】
そこで、ランダム選出方式2は、例えば、SCが、BC上の不特定多数のユーザに任意の数値を非同期に入力させ、入力された各数値を用いて乱数を生成する。
図4は、ランダム選出方式2を説明するための図である。
【0022】
図4に示すランダム選出方式2は、SCが、複数ユーザの入力値を用いて生成した乱数rを用いて、N個のBCアカウントをランダムに選出する例である。より具体的には、情報処理装置は、例えば、SCによって、事前に全利用者のBCアカウントのアドレスなどの識別子であるIDを配列「アカウントID配列A」としてBCに記録する。そして、情報処理装置は、例えば、SCによって、
図4に示すような疑似乱数生成方式で1つの乱数rを生成する。さらに、情報処理装置は、例えば、SCによって、生成した乱数rを0~(length(A)-1)の範囲となるように整形した上でアカウントID配列Aのインデックスとして用いて1つのBCアカウントを選出する処理をN回実施する。
【0023】
ランダム選出方式2では、ランダム選出方式1と比較して外部の乱数生成サービスを用いないため、費用的コストを抑えられる。また、ランダム選出方式2では、乱数生成のために不特定多数のユーザによって入力された各数値を特定のユーザが知ることは困難であるため、乱数の妥当性や真正性を確保できる。
【0024】
しかしながら、ランダム選出方式2では、複数のユーザから非同期に数値の入力を待つため、1回の乱数生成に時間がかかり、さらにそれをN回繰り返すことになるため、時間的コストが非常にかかってしまうといった問題がある。
【0025】
そこで、本実施形態では、BC上の複数のBCアカウントをSCによって選択する場合の時間的コストを削減することを目的の1つとする。そのために、本実施形態では、例えば、ランダム選出方式2などで1度生成したシード値を用いて、ハッシュ化したBCのアカウントIDの配列にハッシュ法を繰返し適用することで、N個のBCアカウントをランダムに選出する。このような、本実施形態にかかるランダム選出方式を、以下、「本ランダム選出方式」という。
【0026】
図5は、本ランダム選出方式の一例を示す図である。
図5に示す本ランダム選出方式の詳細は後述するが、まず、例えば、SCが、ランダム選出方式2などで1つの乱数rを生成してシード値を生成し、当該シード値を用いて、1個目のBCアカウントを選出する。次に、例えば、SCが、1個目に選出されたハッシュ化したBCのアカウントIDを次のシード値として、2個目のBCアカウントを選出する。このように、選出されたハッシュ化したBCのアカウントIDを次のシード値として用いて、BCアカウントの選出処理をN-1回繰り返すことで、N-1個のBCアカウントが選出される。すなわち、ランダム選出方式2などを用いて選出された1個目のBCアカウントと、N-1個のBCアカウントとで、N個のBCアカウントがランダムに選出される。
【0027】
本ランダム選出方式では、2個目以降のBCアカウントの選出処理において、パターンが固定されない乱数を都度のハッシュ計算無しで生成できるため、N-1回分の乱数生成処理の時間的コストは小さくて済む。そのため、本ランダム選出方式では、Nが大きいほど、すなわち、選出されるBCアカウントなどが多いほど、時間的コストの削減効果は大きくなる。
【0028】
図6は、ランダム選出方式2および本ランダム選出方式の時間的コストについて説明するための図である。
図6の左側は、ランダム選出方式2について示し、右側は本ランダム選出方式について示す。
【0029】
図6の左側に示すように、例えば、N個のBCアカウントをランダムに選出する場合に、ランダム選出方式2では、時間的コストの大きい乱数生成処理をN回繰り返すことになるため、トータルの時間的コストが非常に大きくなる。
【0030】
一方、
図6の右側に示すように、本ランダム選出方式では、1個目のBCアカウントの選出には、時間的コストの大きい乱数生成処理を用いるが、2個目以降のBCアカウントの選出は、時間的コストが小さくて済む。
【0031】
[アカウント選択装置10の機能構成]
次に、本ランダム選出方式の実行主体であるアカウント選択装置10の機能構成を説明する。
図7は、本実施形態にかかるアカウント選択装置10の構成例を示す図である。
図7に示すアカウント選択装置10は、例えば、サーバコンピュータ、またはデスクトップPC(Personal Computer)やノートPCなどの情報処理装置である。なお、
図7では、アカウント選択装置10を1台のコンピュータとして示しているが、複数台のコンピュータで構成される分散型コンピューティングシステムであってもよい。また、アカウント選択装置10は、クラウドコンピューティングサービスを提供するサービス提供者によって管理されるクラウドコンピュータ装置であってもよい。
【0032】
図7に示すように、アカウント選択装置10は、通信部20、記憶部30、および制御部40を有する。
【0033】
通信部20は、他の装置との間の通信を制御する処理部であり、例えば、ネットワークインタフェースカードなどの通信インタフェースやUSB(Universal Serial Bus)インタフェースである。
【0034】
記憶部30は、各種データや、制御部40が実行するプログラムを記憶する機能を有し、例えば、ユーザ情報31、およびアカウントID配列32などを記憶する。
【0035】
ユーザ情報31には、例えば、分散型コミュニティの利用者に関する情報などが記憶される。なお、ユーザ情報31は、BC外に記憶されてよい。
図8は、本実施形態にかかるユーザ情報31に記憶されるデータの一例を示す図である。
図8に示すように、ユーザ情報31には、例えば、分散型コミュニティの利用者を一意に示すユーザID、および当該利用者に対応付けられるBC上のアカウントを一意に示すBCアカウントIDなどが対応付けて記憶される。また、当該BCアカウントIDは、オリジナルのBCアカウントをハッシュ化するか否かを示すハッシュ化有無フラグ、オリジナルのBCアカウントを示すオリジナル、ハッシュ化されたBCアカウントIDを示すハッシュ値を含んでよい。当該ハッシュ化有無フラグは、例えば、BCアカウントIDがEthereum(登録商標)のアカウントアドレスの場合、既にハッシュ化されているため、ハッシュ化しなくてよいため、“0”(ハッシュ化しない)が設定される。また、当該ハッシュ値は、例えば、ハッシュアルゴリズムであるKeccak-256の下位20byteを出力する関数であるハッシュ関数hを用いてハッシュ化されたBCアカウントIDである。なお、BCアカウントIDがEthereumのアカウントアドレス場合、ハッシュ関数hが出力するハッシュのサイズは、Ethereumのアカウントアドレスのサイズにされる。
【0036】
アカウントID配列32には、例えば、分散型コミュニティの全利用者のBCアカウントアドレスなどの識別子に関する情報などが記憶される。なお、アカウントID配列32は、BC上に記憶されてよい。
図9は、本実施形態にかかるアカウントID配列32に記憶されるデータの一例を示す図である。
図9に示すように、アカウントID配列32には、例えば、インデックスと、ハッシュ化されたBCアカウントIDを示す要素とが対応付けて記憶される。すなわち、BC上の複数のBCアカウントの各々の識別子をハッシュ化したハッシュ化IDがインデックスに対応付けてBCに記憶される。ここで、BC上の複数のBCアカウントの各々の識別子は、例えば、BCアカウントIDであってよく、また、ハッシュ化IDは、ハッシュ化されたBCアカウントIDであってよい。
【0037】
当該記憶処理は、分散型コミュニティシステムにおける同一のコミュニティの複数のアカウントに各々が対応付けられる複数のBCアカウントの各々の識別子をハッシュ化したハッシュ化IDをインデックスに対応付けて記憶する処理を含んでよい。
【0038】
また、当該記憶処理は、複数の人物または複数のデバイスに各々が対応付けられる複数のBCアカウントの各々の識別子をハッシュ化したハッシュ化IDをインデックスに対応付けて記憶する処理を含んでよい。なお、複数のBCアカウントの各々に対応付けられる複数の人物とは、例えば、分散型コミュニティの評価者や、打合せなどの発言者、景品の当選者など、公平性や透明性が要求される人物であってよい。また、複数のBCアカウントの各々に対応付けられる複数のデバイスとは、例えば、環境データ取得のためのデバイスなど、公平性や透明性が要求される物であってよい。
【0039】
図7の説明に戻り、なお、記憶部30に記憶される上記情報はあくまでも一例であり、記憶部30は、上記情報以外にも様々な情報を記憶できる。
【0040】
制御部40は、アカウント選択装置10全体を司る処理部であり、例えば、プロセッサなどである。制御部40は、生成部41、選択部42、および決定部43を備える。なお、各処理部は、プロセッサが有する電子回路の一例やプロセッサが実行するプロセスの一例である。
【0041】
生成部41は、例えば、SCにより、乱数に基づいて、シード値を生成する。当該SCは、例えば、複数のBCアカウントの各々の識別子をハッシュ化したハッシュ化IDがインデックスに対応付けて記憶されたブロックチェーン上のSCであってよい。また、当該シード値の生成処理は、例えば、乱数に対してハッシュ関数を用いて演算を行い、当該乱数をハッシュ化してシード値を生成する処理を含んでよい。また、当該シード値の生成処理は、複数のユーザの入力値を用いて生成された乱数に基づいて、シード値を生成する処理を含んでよい。ここで、複数のユーザの入力値を用いて生成された乱数は、
図4に示すランダム選出方式2で説明した時間的コストのかかる乱数生成処理によって生成された乱数である。当該乱数や、当該乱数に基づいて生成されるシード値は、1個目のハッシュ化IDを選択するために用いられる。
【0042】
また、生成部41は、例えば、SCにより、シード値に基づいて、複数のBCアカウントの1つを特定する値を生成する。なお、複数のBCアカウントの1つを特定する値の生成処理は、例えば、選択部42によって選択された第1のハッシュ化IDを次のシード値として、所定回数繰り返されてよい。なお、この繰り返し処理は、例えば、2個目以降のハッシュ化IDを選択するための処理である。すなわち、選択された第1のハッシュ化IDをシード値として用いることで、1個目のハッシュ化IDを選択する場合と異なり、シード値の生成のために乱数を生成しなくてよい。
【0043】
選択部42は、例えば、SCにより、生成部41によって生成された、複数のBCアカウントの1つを特定する値に基づいて、インデックスに対応付けられた複数のハッシュ化IDから、第1のハッシュ化IDを選択する。当該SCは、例えば、複数のBCアカウントの各々の識別子をハッシュ化したハッシュ化IDがインデックスに対応付けて記憶されたブロックチェーン上のSCであってよい。また、当該第1のハッシュ化IDの選択処理は、例えば、選択部42によって選択された第1のハッシュ化IDをシード値として、所定回数繰り返されてよい。ここで、所定回数は、例えば、選出するBCアカウントの数をN個とした場合に、N-1回であってよい。これにより、ランダム選出方式2などを用いて選出された1個のハッシュ化されたBCアカウントIDと、N-1個のハッシュ化されたBCアカウントIDとで、N個のBCアカウントがランダムに選出される。
【0044】
決定部43は、選択部42によって選択された複数の第1のハッシュ化IDに対応付けられるアカウントのユーザによって入力されたコミュニティ内の物事に対する評価を受け付け、当該評価に基づいて、当該物事に対する報酬を決定する。なお、選択部42によって選択されたハッシュ化IDを、分散型コミュニティの評価者の選出に用いない場合、アカウント選択装置10は、コミュニティ内の物事に対する報酬を決定する決定部43を備えなくてよい。換言すると、選択部42によって選択されたハッシュ化IDは、評価者のみならず、打合せなどの発言者や、環境データ取得のためのデバイス、景品の当選者など、公平性や透明性が要求される人物や物などの選出に用いられてよい。
【0045】
[処理の流れ]
次に、
図10を用いて、本実施形態にかかるアカウント選択処理の流れを説明する。
図10は、本実施形態にかかるアカウント選択処理の流れの一例を示すフローチャートである。
【0046】
まず、
図10に示すように、アカウント選択装置10は、例えば、BC上の複数のBCアカウントの各々の識別子をハッシュ化してハッシュ化IDを生成し、当該ハッシュ化IDをインデックスに対応付けて記憶する(ステップS101)。なお、ステップS101は、例えば、ハッシュ化IDが、アカウントID配列32の要素として、インデックスに対応付けてアカウントID配列32に記憶されてよい。また、BC上の複数のBCアカウントの各々の識別子は、例えば、BCアカウントIDであってよく、また、ハッシュ化IDは、ハッシュ化されたBCアカウントIDであってよい。
【0047】
次に、アカウント選択装置10は、例えば、分散型コミュニティの評価者など、選出される人物や物の数である選出数をSCに設定する(ステップS102)。当該選出数は、例えば、選出の度に、100個など、公平性などを担保するために妥当な数が決定され、記憶部30などに記憶されてよく、アカウント選択装置10は、ステップS103以降の処理のために、当該選出数を取得してSCに設定する。
【0048】
次に、アカウント選択装置10は、SCにより、例えば、
図4に示すランダム選出方式2で乱数を生成し、当該乱数に基づいて、シード値を生成する(ステップS103)。より具体的には、アカウント選択装置10は、例えば、当該乱数をハッシュ化してシード値を生成する。
【0049】
次に、アカウント選択装置10は、例えば、シード値に基づいて、複数のBCアカウントの1つを特定する値である特定値を生成する(ステップS104)。ステップS104の特定値の生成は、例えば、「i=r mod length(A)」の式を用いた特定値iの計算である。演算子modは、例えば、「x mod y」とした場合に、任意の数xを10進数に変更後、任意の10進数yで割った余りを返す演算子である。また、length(A)は、アカウントID配列Aの配列長であり、アカウントID配列Aは、例えば、
図9に示すアカウントID配列32である。
【0050】
なお、ステップS104で用いるシード値は、1回目の処理、すなわち、1個目のハッシュ化IDを選択するための処理である場合は、ステップS103で生成されたシード値であってよい。2回目以降の処理、すなわち、2個目以降のハッシュ化IDを選択するための処理である場合は、ステップS105で選択されるハッシュ化IDをシード値として用いる。
【0051】
次に、アカウント選択装置10は、例えば、ステップS104で生成された特定値に基づいて、ステップS101でインデックスに対応付けられて記憶された複数のハッシュ化IDから、第1のハッシュ化IDを選択する(ステップS105)。
【0052】
次に、アカウント選択装置10は、例えば、第1のハッシュ化IDを、ステップS102で設定した選出数分、選択したか否かを判定する(ステップS106)。選出数分、第1のハッシュ化IDが選択された場合(ステップS106:Yes)、
図10に示すアカウント選択処理は終了する。
【0053】
一方、選出数分、第1のハッシュ化IDが選択されていない場合(ステップS106:No)、アカウント選択装置10は、例えば、ステップS105で選択された第1のハッシュ化IDを次のシード値として、ステップS104に戻る。そして、選出数分、第1のハッシュ化IDが選択されるまで、ステップS104~S106を繰り返す。
【0054】
アカウント選択処理の流れの別例として、
図11~15を用いて、本実施形態にかかるアカウント選択処理を、より具体的に説明する。
図11は、本実施形態にかかるアカウント選択処理の流れの別例を示すフローチャートである。
【0055】
図11に示すように、本実施形態にかかるアカウント選択処理は、様々な関数を用いて処理される。なお、
図11に示すアカウント選択処理は、
図10におけるハッシュ化IDの記憶処理(ステップS101)、および選出数の設定処理(ステップS102)は予め実行されているものとして、乱数生成処理以降について説明するものである。
【0056】
また、
図11に示すアカウント選択処理は、例えば、以下のような前提で実行される。ハッシュ値のサイズは2byteとし、ハッシュ関数hをKeccak-256で生成した乱数の下位2byteを出力するハッシュ関数とする。評価者を2人選出するケースを想定する。アカウントID配列Aとして、
図9のアカウントID配列32に示すように、3つのBCアカウントIDのハッシュ値がと登録されているものとする。また、アカウントID配列Aの要素とシード値sの演算には、例えば、排他的論理和(XOR)を使用する関数gを用いる。アカウント選出時のインデックスが重複した場合はオープンアドレス法を使用する。これは、例えば、インデックスをインクリメントした値を出力し、インクリメント後のインデックスが、「length(A)-1」を超えた場合は0を出力するものである。また、既に選出済みのBCアカウントIDがさらに選出されてしまった場合は、他のアカウントID配列Aのインデックスを出力する関数next()を用い、next()の引数は、next(i,length(A)-1)とする。また、SCで乱数を生成する方法で生成された乱数r’は、1とする。
【0057】
また、
図11に示すアカウント選択処理は、
図12~15を用いて、いくつかの処理ステップに分けて説明される。
図12は、本実施形態にかかるアカウント選択処理の流れの別例を示すフローチャートを説明するための図(1)である。
図12では、実線で示される矢印の処理の流れ(ステップS201~S206:Noまで)について説明する。また、
図12の右側には、各配列の状況が示される。アカウントID配列Aは、上述したように、
図9のアカウントID配列32に対応する配列である。また、選出済インデックス配列Iは、例えば、選出したBCアカウントIDのアカウントID配列Aにおけるインデックスの配列である。また、ランダム選出結果格納配列Wは、例えば、選出したBCアカウントのアドレスを格納する配列である。
図12に示すアカウント選択処理の段階では、まだ1つもBCアカウントは選出されていないため、選出済インデックス配列Iおよびランダム選出結果格納配列Wは、空である。
【0058】
まず、
図12に示すように、アカウント選択装置10は、例えば、「r’=f()」を計算する(ステップS201)。関数f()は、例えば、
図4に示すランダム選出方式2で説明したような、SCで疑似乱数を生成する関数である。また、乱数r’は、例えば、関数f()によって生成された疑似乱数であり、上述したように、ステップS201で生成された乱数r’は、1とする。
【0059】
次に、アカウント選択装置10は、例えば、「r=h(r’)」を計算する(ステップS202)。関数h()は、例えば、上述したように、Keccak-256で生成した乱数の下位2byteを出力するハッシュ関数である。rは、例えば、ハッシュ関数h()によって乱数r’がハッシュ化された疑似乱数であり、ステップS202で算出される乱数は、「r=h(1)=0x8bc6」となる。
【0060】
次に、アカウント選択装置10は、例えば、「s=r」を計算する(ステップS203)。sは、例えば、シード値であり、ステップS203は、ステップS202で算出された乱数rをシード値とすることを意味し、すなわち、「s=0x8bc6」となる。
【0061】
次に、アカウント選択装置10は、例えば、条件「length(W)<N」を判定する(ステップS204)。「length(W)」は、例えば、ランダム選出結果格納配列Wの配列長を返す関数であり、まだ1つもBCアカウントは選出されていないため、ランダム選出結果格納配列Wは、空であり、「length(W)=0」となる。また、選出数Nは、例えば、選出する評価者の数であり、上述したように、評価者を2人選出するため、「N=2」とする。したがって、「length(W)<N」は、「0<2」となり、ステップS204では、Yesルートに進む。
【0062】
次に、アカウント選択装置10は、例えば、「i=r mod length(A)」を計算する(ステップS205)。演算子modは、例えば、「x mod y」とした場合に、任意の数xを10進数に変更後、任意の10進数yで割った余りを返す演算子である。また、length(A)は、アカウントID配列Aの配列長のため、3となる。そのため、ステップS205では、「i=r mod length(A)」は、「i=0x8bc6 mod 3」となり、「i=1」となる。なお、ここで算出されるiは、例えば、
図10に示すアカウント選択処理におけるステップS104で生成される特定値である。
【0063】
次に、アカウント選択装置10は、例えば、条件「(i in I)==true」を判定する(ステップS206)。「i in I」は、例えば、選出済インデックス配列Iの要素に、iがある場合に「true(真)」、それ以外は「false(偽)」を返す処理である。ここでは、まだ1つもBCアカウントは選出されていないため、選出済インデックス配列Iに要素はなく、「(i in I)=(1 in I)=false(偽)」となり、ステップS206ではNoルートに進む。ステップS206のNoルートに進んだ後は、ステップS208が実行されるが、ここからは
図13を用いて説明する。
【0064】
図13は、本実施形態にかかるアカウント選択処理の流れの別例を示すフローチャートを説明するための図(2)である。
図13では、
図12で説明したアカウント選択処理の続きで、実線で示される矢印の処理の流れ(ステップS208~S210、ステップS204に戻り、ステップS204:Yesまで)について説明する。
【0065】
ステップS206のNoルートから進み、次に、アカウント選択装置10は、例えば、「append(i,I)」を計算する(ステップS208)。「append(i,I)」は、例えば、「append(x,X)」とした場合に、要素xを、配列Xに追加する関数である。そのため、「append(i,I)」は、要素iを、選出済インデックス配列Iに追加する処理である。ここでは、ステップS205で「i=1」が算出されているため、「append(i,I)」は「append(1,I)」となり、
図13の右側に示すように、選出済インデックス配列Iに要素「1」が追加される。
【0066】
次に、アカウント選択装置10は、例えば、「append(A[i],W)」を計算する(ステップS209)。ここでは、ステップS205で「i=1」が算出されているため、A[i]はA[1]となり、A[1]は、
図13の右側に示すように、「0x6b87」である。そのため、「append(A[i],W)」は「append(0x6b87,W)」となり、
図13の右側に示すように、アカウントID配列Aのインデックス1の要素「0x6b87」が、ランダム選出結果格納配列Wに追加される。なお、ここで追加されるA[i]は、例えば、
図10に示すアカウント選択処理におけるステップS105で選択されるハッシュ化IDである。
【0067】
次に、アカウント選択装置10は、例えば、「r=A[i] XOR s」を計算する(ステップS210)。すなわち、アカウント選択装置10は、例えば、選択されたハッシュ化IDであるA[i]を次のシード値として、次のハッシュ化IDを選択するための乱数rを算出する。なお、ここでの乱数の計算は、例えば、処理として簡易な排他的論理和(XOR)を用いるため、ハッシュ計算を行うランダム選出方式2などによる乱数の計算と比較して時間的コストが少なくて済む。また、ステップS210では、「A[i]=A[1]=0x6b87」であり、ステップS203で算出されたシード値sは「0x8bc6」であるため、「r=A[i] XOR s」は、「r=0x6b87 XOR 0x8bc6=0xe041」となる。
【0068】
次に、アカウント選択装置10は、例えば、条件「length(W)<N」を判定する(ステップS204)。ここでは、ステップS209で、ランダム選出結果格納配列Wに要素が1つ追加されたため、「length(W)=1」となり、「N=2」であるため、「length(W)<N」は、「1<2」となり、Yesルートに進む。ステップS204のYesルートに進んだ後は、ステップS205が実行されるが、ここからは
図14を用いて説明する。
【0069】
図14は、本実施形態にかかるアカウント選択処理の流れの別例を示すフローチャートを説明するための図(3)である。
図14では、
図13で説明したアカウント選択処理の続きで、実線で示される矢印の処理の流れ(ステップS205~S207まで)について説明する。
【0070】
ステップS204のYesルートから進み、次に、アカウント選択装置10は、例えば、条件「(i in I)==true」を判定する(ステップS206)。ここでは、「i=1」、ステップS208で、選出済インデックス配列Iに要素「i=1」が追加されたため、「(i in I)=(1 in I)=true(真)」となり、Yesルートに進む。
【0071】
次に、アカウント選択装置10は、例えば、「i=next(i,length(A)-1)」を計算する(ステップS207)。関数next()は、例えば、既に選出済みのBCアカウントIDがさらに選出されてしまった場合に用いられ、他のアカウントID配列Aのインデックスを出力する関数である。ここでは、「length(A)」は3であるため、「i=next(i,length(A)-1)=next(1, 2)=2」となる。なお、関数next()の引数iが2だった場合は2を超えるため、戻り値は0が返ってくる。ステップS207の実行後は、ステップS206が実行されるが、ここからは
図15を用いて説明する。
【0072】
図15は、本実施形態にかかるアカウント選択処理の流れの別例を示すフローチャートを説明するための図(4)である。
図15では、
図14で説明したアカウント選択処理の続きで、実線で示される矢印の処理の流れ(ステップS206~S210、ステップS204に戻り、ステップS211、処理終了まで)について説明する。
【0073】
ステップS207から進み、次に、アカウント選択装置10は、例えば、条件「(i in I)==true」を判定する(ステップS206)。ここでは、ステップS207で「i=2」が算出されているため、「(i in I)=(2 in I)=false(偽)」となり、Noルートに進む。
【0074】
次に、アカウント選択装置10は、例えば、「append(i,I)」を計算する(ステップS208)。ここでは、ステップS207で「i=2」が算出されているため、「append(i,I)」は「append(2,I)」となり、
図15の右側に示すように、選出済インデックス配列Iに要素「2」が追加される。
【0075】
次に、アカウント選択装置10は、例えば、「append(A[i],W)」を計算する(ステップS209)。ここでは、ステップS205で「i=1」が算出されているため、A[i]はA[2]となり、A[2]は、
図15の右側に示すように、「0xd473」である。そのため、「append(A[i],W)」は「append(0xd473,W)」となり、
図15の右側に示すように、アカウントID配列Aのインデックス1の要素「0xd473」が、ランダム選出結果格納配列Wに追加される。
【0076】
次に、アカウント選択装置10は、例えば、「r=A[i] XOR s」を計算する(ステップS210)。ここでは、「A[i]=A[2]=0xd473」であり、ステップS203で算出されたシード値sは「0x8bc6」であるため、「r=A[i] XOR s」は、「r=0xd473 XOR 0x8bc6=0x5fb5」となる。
【0077】
次に、アカウント選択装置10は、例えば、条件「length(W)<N」を判定する(ステップS204)。ここでは、ステップS209で、ランダム選出結果格納配列Wに要素がさらに1つ追加され、2つとなったため、「length(W)=2」となり、「N=2」であるため、「length(W)<N」は、「2<2」となり、Noルートに進む。
【0078】
次に、アカウント選択装置10は、例えば、「return(W)」を計算する(ステップS211)。関数return()は、例えば、引数を返す関数であるため、「return(W)」は、ランダム選出結果格納配列Wの要素が返され、「return([0x6b87,0xd473])」となる。ここで返される要素が、例えば、ランダムに選出されたBCアカウントIDであり、アカウント選択装置10は、例えば、これを用いて、分散型コミュニティの評価者など、公平性や透明性が要求される人物や物などを選出できる。ステップS211の実行後、アカウント選択処理は終了する。
【0079】
[効果]
上述したように、アカウント選択装置10は、複数のブロックチェーン(BC)アカウントの各々の識別子をハッシュ化したハッシュ化IDが記憶されたブロックチェーン上のスマートコントラクトにより、乱数に基づいて、シード値を生成し、シード値に基づいて、複数のハッシュ化IDから、第1のハッシュ化IDを選択し、選択された第1のハッシュ化IDをシード値として、複数のハッシュ化IDから、第2のハッシュ化IDを選択する。
【0080】
このように、BC上のBCアカウントの識別子をハッシュ化したハッシュ化IDをSCによってランダムに複数選択する際、乱数に基づくシード値で選択されたハッシュ化IDが、次のハッシュ化IDを選択するためのシード値として用いられる。これにより、アカウント選択装置10は、BC上の複数のBCアカウントをSCによってランダムに選択する場合の時間的コストを削減できる。
【0081】
また、アカウント選択装置10は、選択された第2のハッシュ化IDをシード値として、複数のハッシュ化IDから、次の第2のハッシュ化IDを選択する処理を所定回数繰り返す。
【0082】
これにより、アカウント選択装置10は、BC上の複数のBCアカウントをSCによってランダムに選択する場合の時間的コストを削減できる。
【0083】
また、アカウント選択装置10によって実行される、シード値を生成する処理は、複数のユーザの入力値を用いて生成された乱数に基づいて、シード値を生成する処理を含む。
【0084】
これにより、アカウント選択装置10は、公平性や透明性を担保しつつ、BC上の複数のBCアカウントをSCによってランダムに選択する場合の時間的コストを削減できる。
【0085】
また、アカウント選択装置10によって実行される、シード値を生成する処理は、乱数に対してハッシュ関数を用いて演算を行い、シード値を生成する処理を含む。
【0086】
これにより、アカウント選択装置10は、公平性や透明性を担保しつつ、BC上の複数のBCアカウントをSCによってランダムに選択する場合の時間的コストを削減できる。
【0087】
また、アカウント選択装置10は、分散型コミュニティシステムにおける同一のコミュニティの複数のアカウントに各々が対応付けられる複数のBCアカウントの各々の識別子をハッシュ化したハッシュ化IDをインデックスに対応付けて記憶する。
【0088】
これにより、アカウント選択装置10は、分散型コミュニティのアカウントに対応付けられる、BC上の複数のBCアカウントをSCによってランダムに選択する場合の時間的コストを削減できる。
【0089】
また、アカウント選択装置10は、選択された複数の第1のハッシュ化IDに対応付けられるアカウントのユーザによって入力されたコミュニティ内の物事に対する評価を受け付ける。
【0090】
これにより、アカウント選択装置10は、コミュニティ内の物事に対して、公平性や透明性が担保された評価を行うことができる。
【0091】
また、アカウント選択装置10は、評価に基づいて、物事に対する報酬を決定する。
【0092】
これにより、アカウント選択装置10は、公平性や透明性が担保された評価を用いて、コミュニティ内の物事に対して、より適切な報酬を決定できる。
【0093】
また、アカウント選択装置10は、複数の人物または複数のデバイスに各々が対応付けられる複数のBCアカウントの各々の識別子をハッシュ化したハッシュ化IDをインデックスに対応付けて記憶する。
【0094】
これにより、アカウント選択装置10は、公平性や透明性を担保しつつ、人物やデバイスに対応付けられる、BC上の複数のBCアカウントをSCによってランダムに選択する場合の時間的コストを削減できる。
【0095】
[システム]
上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報は、特記する場合を除いて任意に変更されてもよい。また、実施例で説明した具体例、分布、数値などは、あくまで一例であり、任意に変更されてもよい。
【0096】
また、アカウント選択装置10の構成要素の分散や統合の具体的形態は図示のものに限られない。例えば、アカウント選択装置10の選択部42が複数の処理部に分散されたり、アカウント選択装置10の生成部41と選択部42とが1つの処理部に統合されたりしてもよい。つまり、その構成要素の全部または一部は、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合されてもよい。さらに、各装置の各処理機能は、その全部または任意の一部が、CPUや当該CPU(Central Processing Unit)にて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【0097】
図16は、本実施形態にかかるアカウント選択装置10のハードウェア構成例を示す図である。
図16に示すように、アカウント選択装置10は、通信インタフェース10a、HDD(Hard Disk Drive)10b、メモリ10c、プロセッサ10dを有する。また、
図16に示した各部は、バスなどで相互に接続される。
【0098】
通信インタフェース10aは、ネットワークインタフェースカードなどであり、他の情報処理装置との通信を行う。HDD10bは、例えば、アカウント選択装置10がアカウント選択装置10の場合、
図7などに示した各機能を動作させるプログラムやデータを記憶する。
【0099】
プロセッサ10dは、CPU、MPU(Micro Processing Unit)、GPU(Graphics Processing Unit)などである。また、プロセッサ10dは、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路により実現されるようにしてもよい。プロセッサ10dは、例えば、
図7などに示した各処理部と同様の処理を実行するプログラムをHDD10bなどから読み出してメモリ10cに展開する。これにより、プロセッサ10dは、
図7などで説明した各機能を実現するプロセスを実行するハードウェア回路として動作可能である。
【0100】
また、アカウント選択装置10は、媒体読取装置によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、アカウント選択装置10によって実行されることに限定されるものではない。例えば、アカウント選択装置10以外の情報処理装置がプログラムを実行する場合や、アカウント選択装置10と他の情報処理装置とが協働してプログラムを実行するような場合にも、上記実施例が同様に適用されてよい。
【0101】
当該プログラムは、インターネットなどのネットワークを介して配布されてもよい。また、当該プログラムは、ハードディスク、フレキシブルディスク(FD)、CD-ROM、MO(Magneto-Optical disk)、DVD(Digital Versatile Disc)などのコンピュータ可読記憶媒体に記録されてよい。そして、当該プログラムは、アカウント選択装置10などによって記録媒体から読み出されることによって実行されてもよい。
【0102】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【0103】
(付記1)複数のブロックチェーン(BC)アカウントの各々の識別子をハッシュ化したハッシュ化IDが記憶されたブロックチェーン上のスマートコントラクトにより、
乱数に基づいて、シード値を生成し、
前記シード値に基づいて、複数の前記ハッシュ化IDから、第1のハッシュ化IDを選択し、
選択された前記第1のハッシュ化IDを前記シード値として、複数の前記ハッシュ化IDから、第2のハッシュ化IDを選択する
処理をコンピュータに実行させることを特徴とするアカウント選択プログラム。
【0104】
(付記2)選択された前記第2のハッシュ化IDを前記シード値として、複数の前記ハッシュ化IDから、次の前記第2のハッシュ化IDを選択する処理を所定回数繰り返す処理を前記コンピュータに実行させることを特徴とする付記1に記載のアカウント選択プログラム。
【0105】
(付記3)前記シード値を生成する処理は、
複数のユーザの入力値を用いて生成された前記乱数に基づいて、前記シード値を生成する
処理を含むことを特徴とする付記1または2に記載のアカウント選択プログラム。
【0106】
(付記4)前記シード値を生成する処理は、
前記乱数に対してハッシュ関数を用いて演算を行い、前記シード値を生成する
処理を含むことを特徴とする付記1または2に記載のアカウント選択プログラム。
【0107】
(付記5)分散型コミュニティシステムにおける同一のコミュニティの複数のアカウントに各々が対応付けられる前記複数のBCアカウントの各々の識別子をハッシュ化した前記ハッシュ化IDをインデックスに対応付けて記憶する処理を前記コンピュータに実行させることを特徴とする付記1または2に記載のアカウント選択プログラム。
【0108】
(付記6)選択された複数の前記第1のハッシュ化IDに対応付けられる前記アカウントのユーザによって入力された前記コミュニティ内の物事に対する評価を受け付ける処理を前記コンピュータに実行させることを特徴とする付記5に記載のアカウント選択プログラム。
【0109】
(付記7)前記評価に基づいて、前記物事に対する報酬を決定する処理を前記コンピュータに実行させることを特徴とする付記6に記載のアカウント選択プログラム。
【0110】
(付記8)複数の人物または複数のデバイスに各々が対応付けられる前記複数のBCアカウントの各々の識別子をハッシュ化した前記ハッシュ化IDをインデックスに対応付けて記憶する処理を前記コンピュータに実行させることを特徴とする付記1または2に記載のアカウント選択プログラム。
【0111】
(付記9)複数のブロックチェーン(BC)アカウントの各々の識別子をハッシュ化したハッシュ化IDが記憶されたブロックチェーン上のスマートコントラクトにより、
乱数に基づいて、シード値を生成し、
前記シード値に基づいて、複数の前記ハッシュ化IDから、第1のハッシュ化IDを選択し、
選択された前記第1のハッシュ化IDを前記シード値として、複数の前記ハッシュ化IDから、第2のハッシュ化IDを選択する
処理を実行する制御部を備えたアカウント選択装置。
【0112】
(付記10)選択された前記第2のハッシュ化IDを前記シード値として、複数の前記ハッシュ化IDから、次の前記第2のハッシュ化IDを選択する処理を所定回数繰り返す処理を前記制御部が実行することを特徴とする付記9に記載のアカウント選択装置。
【0113】
(付記11)前記シード値を生成する処理は、
複数のユーザの入力値を用いて生成された前記乱数に基づいて、前記シード値を生成する
処理を含むことを特徴とする付記9または10に記載のアカウント選択装置。
【0114】
(付記12)前記シード値を生成する処理は、
前記乱数に対してハッシュ関数を用いて演算を行い、前記シード値を生成する
処理を含むことを特徴とする付記9または10に記載のアカウント選択装置。
【0115】
(付記13)分散型コミュニティシステムにおける同一のコミュニティの複数のアカウントに各々が対応付けられる前記複数のBCアカウントの各々の識別子をハッシュ化した前記ハッシュ化IDをインデックスに対応付けて記憶する処理を前記制御部が実行することを特徴とする付記9または10に記載のアカウント選択装置。
【0116】
(付記14)選択された複数の前記第1のハッシュ化IDに対応付けられる前記アカウントのユーザによって入力された前記コミュニティ内の物事に対する評価を受け付ける処理を前記制御部が実行することを特徴とする付記13に記載のアカウント選択装置。
【0117】
(付記15)前記評価に基づいて、前記物事に対する報酬を決定する処理を前記制御部が実行することを特徴とする付記14に記載のアカウント選択装置。
【0118】
(付記16)複数の人物または複数のデバイスに各々が対応付けられる前記複数のBCアカウントの各々の識別子をハッシュ化した前記ハッシュ化IDをインデックスに対応付けて記憶する処理を前記制御部が実行することを特徴とする付記9または10に記載のアカウント選択装置。
【0119】
(付記17)複数のブロックチェーン(BC)アカウントの各々の識別子をハッシュ化したハッシュ化IDが記憶されたブロックチェーン上のスマートコントラクトにより、
乱数に基づいて、シード値を生成し、
前記シード値に基づいて、複数の前記ハッシュ化IDから、第1のハッシュ化IDを選択し、
選択された前記第1のハッシュ化IDを前記シード値として、複数の前記ハッシュ化IDから、第2のハッシュ化IDを選択する
処理をコンピュータが実行するアカウント選択方法。
【0120】
(付記18)選択された前記第2のハッシュ化IDを前記シード値として、複数の前記ハッシュ化IDから、次の前記第2のハッシュ化IDを選択する処理を所定回数繰り返す処理を前記制御部が実行することを特徴とする付記17に記載のアカウント選択方法。
【0121】
(付記19)前記シード値を生成する処理は、
複数のユーザの入力値を用いて生成された前記乱数に基づいて、前記シード値を生成する
処理を含むことを特徴とする付記17または18に記載のアカウント選択方法。
【0122】
(付記20)前記シード値を生成する処理は、
前記乱数に対してハッシュ関数を用いて演算を行い、前記シード値を生成する
処理を含むことを特徴とする付記17または18に記載のアカウント選択方法。
【0123】
(付記21)分散型コミュニティシステムにおける同一のコミュニティの複数のアカウントに各々が対応付けられる前記複数のBCアカウントの各々の識別子をハッシュ化した前記ハッシュ化IDをインデックスに対応付けて記憶する処理を前記コンピュータが実行することを特徴とする付記17または18に記載のアカウント選択方法。
【0124】
(付記22)選択された複数の前記第1のハッシュ化IDに対応付けられる前記アカウントのユーザによって入力された前記コミュニティ内の物事に対する評価を受け付ける処理を前記コンピュータが実行することを特徴とする付記21に記載のアカウント選択方法。
【0125】
(付記23)前記評価に基づいて、前記物事に対する報酬を決定する処理を前記コンピュータが実行することを特徴とする付記22に記載のアカウント選択方法。
【0126】
(付記24)複数の人物または複数のデバイスに各々が対応付けられる前記複数のBCアカウントの各々の識別子をハッシュ化した前記ハッシュ化IDをインデックスに対応付けて記憶する処理を前記コンピュータが実行することを特徴とする付記17または18に記載のアカウント選択方法。
【0127】
(付記25)プロセッサと、
プロセッサに動作可能に接続されたメモリと
を備えたアカウント選択装置であって、プロセッサは、
複数のブロックチェーン(BC)アカウントの各々の識別子をハッシュ化したハッシュ化IDが記憶されたブロックチェーン上のスマートコントラクトにより、
乱数に基づいて、シード値を生成し、
前記シード値に基づいて、複数の前記ハッシュ化IDから、第1のハッシュ化IDを選択し、
選択された前記第1のハッシュ化IDを前記シード値として、複数の前記ハッシュ化IDから、第2のハッシュ化IDを選択する
処理を実行することを備えたことを特徴とするアカウント選択装置。
【符号の説明】
【0128】
10 アカウント選択装置
10a 通信インタフェース
10b HDD
10c メモリ
10d プロセッサ
20 通信部
30 記憶部
31 ユーザ情報
32 アカウントID配列
40 制御部
41 生成部
42 選択部
43 決定部