(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-09-06
(54)【発明の名称】ランダムサンプリングBFT合意方法とシステム、およびコンピュータプログラム
(51)【国際特許分類】
H04L 9/32 20060101AFI20230830BHJP
【FI】
H04L9/32 200Z
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023500058
(86)(22)【出願日】2020-07-07
(85)【翻訳文提出日】2023-01-04
(86)【国際出願番号】 KR2020008848
(87)【国際公開番号】W WO2022010004
(87)【国際公開日】2022-01-13
(81)【指定国・地域】
(71)【出願人】
【識別番号】516014409
【氏名又は名称】ライン プラス コーポレーション
【氏名又は名称原語表記】LINE Plus Corporation
(74)【代理人】
【識別番号】110003199
【氏名又は名称】弁理士法人高田・高橋国際特許事務所
(72)【発明者】
【氏名】ソ ホンソブ
(72)【発明者】
【氏名】ソン ウサン
(72)【発明者】
【氏名】鷹見 虎男
(72)【発明者】
【氏名】那須 利将
(72)【発明者】
【氏名】イ ホンギュ
(57)【要約】
【課題】ランダムサンプリングBFT合意方法とシステム、およびコンピュータプログラムを提供する。
【解決手段】ランダムサンプリングBFT合意方法は、VRF(Verifiable Random Function)と多項分布(multinomial distribution)を利用したランダムサンプリング方式を利用して全検証者(validator)のうちの一部を選出する段階、および前記選出された検証者の投票によってブロックチェーン合意を実行する段階を含む。
【選択図】
図5
【特許請求の範囲】
【請求項1】
コンピュータシステムで実行されるブロックチェーン合意方法であって、
前記コンピュータシステムは、メモリに含まれるコンピュータ読み取り可能な命令を実行するように構成された少なくとも1つのプロセッサを含み、
前記ブロックチェーン合意方法は、
前記少なくとも1つのプロセッサにより、VRFと多項分布を利用したランダムサンプリング方式によって全検証者のうちから一部を選出する段階、および
前記少なくとも1つのプロセッサにより、前記選出された検証者の投票によってブロックチェーン合意を実行する段階
を含む、ブロックチェーン合意方法。
【請求項2】
前記選出する段階は、
前記選出された検証者それぞれに対して、当該検証者の持分に比例する投票権を割り当てる段階
を含む、請求項1に記載のブロックチェーン合意方法。
【請求項3】
前記実行する段階は、
BFT系列のテンダーミント合意アルゴリズムを利用して前記ブロックチェーン合意を実行することを特徴とする、請求項1に記載のブロックチェーン合意方法。
【請求項4】
前記選出する段階は、
前記VRFを利用して予測不可能であるが証明可能なランダムハッシュを生成する段階、および
前記ランダムハッシュに基づいて、前記多項分布を利用して前記全検証者のうちの一部をブロック提案者と投票者として選出する段階
を含む、請求項1に記載のブロックチェーン合意方法。
【請求項5】
前記ブロック提案者と前記投票者を選出する段階は、
前記多項分布のうちのカテゴリ分布を利用して前記ブロック提案者と前記投票者を選出すること
を特徴とする、請求項4に記載のブロックチェーン合意方法。
【請求項6】
前記ブロック提案者と前記投票者を選出する段階は、
保有する持分に比例して、前記全検証者のうちの一部を前記ブロック提案者と前記投票者として選出すること
を特徴とする、請求項4に記載のブロックチェーン合意方法。
【請求項7】
前記ブロック提案者と前記投票者を選出する段階は、
保有する持分と閾値に基づいて検証者を選出するランダム選出関数を利用して前記ブロック提案者と前記投票者を選出する段階
を含む、請求項4に記載のブロックチェーン合意方法。
【請求項8】
前記ブロック提案者と前記投票者を選出する段階は、
以前のブロック提案者のVRFによって生成されたランダムハッシュをシードとするランダム選出関数を利用して前記ブロック提案者と前記投票者を選出する段階
を含む、請求項4に記載のブロックチェーン合意方法。
【請求項9】
前記選出する段階は、
前記ブロックチェーン合意のための条件を満たす選出比率によって、前記全検証者のうちの一部をブロック提案者と投票者として選出すること
を特徴とする、請求項1に記載のブロックチェーン合意方法。
【請求項10】
請求項1から請求項9のうちのいずれか一項に記載のブロックチェーン合意方法を前記コンピュータシステムに実行させるために非一時的なコンピュータ読み取り可能な記録媒体に記録される、コンピュータプログラム。
【請求項11】
コンピュータシステムであって、
メモリに含まれるコンピュータ読み取り可能な命令を実行するように構成された少なくとも1つのプロセッサ
を含み、
前記少なくとも1つのプロセッサは、
VRFと多項分布を利用したランダムサンプリング方式によって全検証者のうちから一部を選出する検証者選出部、および
前記選出された検証者の投票によってブロックチェーン合意を実行する合意実行部
を含む、コンピュータシステム。
【請求項12】
前記検証者選出部は、
前記選出された検証者それぞれに対して、当該検証者の持分に比例する投票権を割り当てること
を特徴とする、請求項11に記載のコンピュータシステム。
【請求項13】
前記合意実行部は、
BFT系列のテンダーミント合意アルゴリズムを利用して前記ブロックチェーン合意を実行すること
を特徴とする、請求項11に記載のコンピュータシステム。
【請求項14】
前記検証者選出部は、
前記VRFを利用して予測不可能であるが証明可能なランダムハッシュを生成し、
前記ランダムハッシュに基づいて、前記多項分布を利用して前記全検証者のうちの一部をブロック提案者と投票者として選出すること
を特徴とする、請求項11に記載のコンピュータシステム。
【請求項15】
前記検証者選出部は、
前記多項分布のうちのカテゴリ分布を利用して前記ブロック提案者と前記投票者を選出すること
を特徴とする、請求項14に記載のコンピュータシステム。
【請求項16】
前記検証者選出部は、
保有する持分に比例して、前記全検証者のうちの一部を前記ブロック提案者と前記投票者として選出すること
を特徴とする、請求項14に記載のコンピュータシステム。
【請求項17】
前記検証者選出部は、
保有する持分と閾値に基づいて、検証者を選出するランダム選出関数を利用して前記ブロック提案者と前記投票者を選出すること
を特徴とする、請求項14に記載のコンピュータシステム。
【請求項18】
前記検証者選出部は、
以前のブロック提案者のVRFによって生成されたランダムハッシュをシードとするランダム選出関数を利用して前記ブロック提案者と前記投票者を選出すること
を特徴とする、請求項14に記載のコンピュータシステム。
【請求項19】
前記検証者選出部は、
前記ブロックチェーン合意のための条件を満たす選出比率によって、前記全検証者のうちの一部をブロック提案者と投票者として選出すること
を特徴とする、請求項11に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
以下の説明は、BFT(Byzantine Fault Tolerance)を基盤とする合意アルゴリズムに関する。
【背景技術】
【0002】
合意アルゴリズムは、仮想通貨のブロックチェーンネットワークにおいて核心的な役割を担う要素であり、分散システムの無欠性とセキュリティ性を保つことを目的とする。
【0003】
合意とは、ブロックチェーンネットワークにおいてトランザクションとブロックの処理順序を決定する方式を意味する。パブリック(非中央化)ブロックチェーンは分散システムで構成され、中央権威体に依存しないため、分散ノードのトランザクション(transaction)の有効性には合意が必要となる。
【0004】
ブロックチェーン合意には、PoW(Proof of Work)、PoS(Proof of Stake)、DPoS(Delegated Proof of Stake)、BFT(Byzantine Fault Tolerance)などの多様な理論とアルゴリズムが存在する。このうちのBFT合意アルゴリズムは、ネットワークの内部にビザンチンノード(裏切者ノード)があっても合意を成し遂げられるようにする分散コンピューティング理論である。
【0005】
BFT系列の合意アルゴリズムの1つであるPBFT(Practical Byzantine Fault Tolerance)は、分散コンピューティングの一理論であって、BFTを速度と実用の側面において改善した証明方式である。PBFT合意アルゴリズムは、ネットワークに参加するすべてのノードとメッセージをやり取りするため、ノード数が増えれば複雑度が上昇し、これによって拡張性を確保し難くなり合意を導き出し難くなる。
【0006】
BFT系列の合意アルゴリズムPBFTを改良した証明方式としてテンダーミント(tendermint)合意アルゴリズムがある。テンダーミント合意アルゴリズムは、預けた価値(bonded value)分だけ提案者(proposer)を選出して投票を行う方式である。
【0007】
PBFT合意方式は、一個別ノードあたり一投票権を行使する方式によって投票を行い、最も多くの投票を得たブロックを承認する方法や、テンダーミントの場合にはDPoSの概念を含ませ、持分を基盤に投票を行う方法であると言える。
【発明の概要】
【発明が解決しようとする課題】
【0008】
テンダーミントを含んだBFT系列の合意アルゴリズムの弱点を改善した、ブロックチェーン合意アルゴリズムを提供する。
【0009】
ランダムサンプリング選出方式によってブロック提案者と投票者(voter)を選出することができる、ブロックチェーン合意アルゴリズムを提供する。
【0010】
検証者(validator)のうちから一部を投票者(voter)として選出して合意を実行することができる、ブロックチェーン合意アルゴリズムを提供する。
【課題を解決するための手段】
【0011】
コンピュータシステムで実行されるブロックチェーン合意方法であって、前記コンピュータシステムは、メモリに含まれるコンピュータ読み取り可能な命令を実行するように構成された少なくとも1つのプロセッサを含み、前記ブロックチェーン合意方法は、前記少なくとも1つのプロセッサにより、VRF(Verifiable Random Function)と多項分布(multinomial distribution)を利用したランダムサンプリング方式によって全検証者(validator)のうちから一部を選出する段階、および前記少なくとも1つのプロセッサにより、前記選出された検証者の投票によってブロックチェーン合意を実行する段階を含む、ブロックチェーン合意方法を提供する。
【0012】
一側面によると、前記選出する段階は、前記選出された検証者それぞれに対して、当該検証者の持分に比例する投票権(voting power)を割り当てる段階を含んでよい。
【0013】
他の側面によると、前記実行する段階は、BFT(Byzantine Fault Tolerance)系列のテンダーミント(tendermint)合意アルゴリズムを利用して前記ブロックチェーン合意を実行してよい。
【0014】
また他の側面によると、前記選出する段階は、前記VRFを利用して予測不可能であるが証明可能なランダムハッシュを生成する段階、および前記ランダムハッシュに基づいて、前記多項分布を利用して前記全検証者の一部としてブロック提案者(proposer)と投票者(voter)を選出する段階を含んでよい。
【0015】
また他の側面によると、前記ブロック提案者と前記投票者を選出する段階は、前記多項分布のうちのカテゴリ分布(categorical distribution)を利用して前記ブロック提案者と前記投票者を選出してよい。
【0016】
また他の側面によると、前記ブロック提案者と前記投票者を選出する段階は、保有する持分に比例して、前記全検証者のうちの一部を前記ブロック提案者と前記投票者として選出してよい。
【0017】
また他の側面によると、前記ブロック提案者と前記投票者を選出する段階は、保有する持分と閾値に基づいて検証者を選出するランダム選出関数(random election function)を利用して前記ブロック提案者と前記投票者を選出する段階を含んでよい。
【0018】
また他の側面によると、前記ブロック提案者と前記投票者を選出する段階は、以前のブロック提案者のVRFによって生成されたランダムハッシュをシード(seed)とするランダム選出関数を利用して前記ブロック提案者と前記投票者を選出する段階を含んでよい。
【0019】
さらに他の側面によると、前記選出する段階は、前記ブロックチェーン合意のための条件を満たす選出比率によって前記全検証者の一部をブロック提案者と投票者として選出してよい。
【0020】
前記ブロックチェーン合意方法を前記コンピュータシステムに実行させるために非一時的なコンピュータ読み取り可能な記録媒体に記録される、コンピュータプログラムを提供する。
【0021】
コンピュータシステムであって、メモリに含まれるコンピュータ読み取り可能な命令を実行するように構成された少なくとも1つのプロセッサを含み、前記少なくとも1つのプロセッサは、VRFと多項分布を利用したランダムサンプリング方式によって全検証者のうちから一部を選出する検証者選出部、および前記選出された検証者の投票によってブロックチェーン合意を実行する合意実行部を含む、コンピュータシステムを提供する。
【図面の簡単な説明】
【0022】
【
図1】本発明の一実施形態における、コンピュータシステムの内部構成の一例を説明するためのブロック図である。
【
図2】一般的なブロックチェーン合意のメカニズムを説明するための例示図である。
【
図3】BFT系列の合意メカニズムを説明するための例示図である。
【
図4】本発明の一実施形態における、コンピュータシステムのプロセッサが含むことができる構成要素の例を示した図である。
【
図5】本発明の一実施形態における、コンピュータシステムが実行することができるブロックチェーン合意方法の例を示したフローチャートである。
【
図6】本発明の一実施形態における、検証者の選出に利用されるランダム選出関数を説明するための例示図である。
【
図7】本発明の一実施形態における、検証者の選出に利用されるランダム選出関数を説明するための例示図である。
【発明を実施するための形態】
【0023】
以下、本発明の実施形態について、添付の図面を参照しながら詳しく説明する。
【0024】
本発明の実施形態は、ブロックチェーン合意アルゴリズムに関する。
【0025】
本明細書で具体的に開示される事項を含む実施形態は、テンダーミントを含むBFT系列の合意アルゴリズムを基盤とするものであって、BFT系列の合意アルゴリズムの弱点を改善したブロックチェーン合意アルゴリズムを提供する。
【0026】
図1は、本発明の一実施形態における、コンピュータシステムの例を示したブロック図である。例えば、本発明の実施形態に係るブロックチェーン合意システムは、
図1に示したコンピュータシステム100によって実現されてよい。
【0027】
図1に示すように、コンピュータシステム100は、本発明の実施形態に係るブロックチェーン合意方法を実行するための構成要素として、メモリ110、プロセッサ120、通信インタフェース130、および入力/出力インタフェース140を含んでよい。
【0028】
メモリ110は、コンピュータ読み取り可能な記録媒体であって、RAM(Random Access Memory)、ROM(Read Only Memory)、およびディスクドライブのような永続的大容量記録装置を含んでよい。ここで、ROMやディスクドライブのような永続的大容量記録装置は、メモリ110とは区分される別の永続的記録装置としてコンピュータシステム100に含まれてもよい。また、メモリ110には、オペレーティングシステムと、少なくとも1つのプログラムコードが記録されてよい。このようなソフトウェア構成要素は、メモリ110とは別のコンピュータ読み取り可能な記録媒体からメモリ110にロードされてよい。このような別のコンピュータ読み取り可能な記録媒体は、フロッピードライブ、ディスク、テープ、DVD/CD-ROMドライブ、メモリカードなどのコンピュータ読み取り可能な記録媒体を含んでよい。他の実施形態において、ソフトウェア構成要素は、コンピュータ読み取り可能な記録媒体ではない通信インタフェース130を通じてメモリ110にロードされてもよい。例えば、ソフトウェア構成要素は、ネットワーク160を介して受信されるファイルによってインストールされるコンピュータプログラムに基づいてコンピュータシステム100のメモリ110にロードされてよい。
【0029】
プロセッサ120は、基本的な算術、ロジック、および入出力演算を実行することにより、コンピュータプログラムの命令を処理するように構成されてよい。命令は、メモリ110または通信インタフェース130によって、プロセッサ120に提供されてよい。例えば、プロセッサ120は、メモリ110のような記録装置に記録されたプログラムコードにしたがって受信される命令を実行するように構成されてよい。
【0030】
通信インタフェース130は、ネットワーク160を介してコンピュータシステム100が他の装置と互いに通信するための機能を提供してよい。一例として、コンピュータシステム100のプロセッサ120がメモリ110のような記録装置に記録されたプログラムコードにしたがって生成した要求や命令、データ、ファイルなどが、通信インタフェース130の制御にしたがってネットワーク160を介して他の装置に伝達されてよい。これとは逆に、他の装置からの信号や命令、データ、ファイルなどが、ネットワーク160を経てコンピュータシステム100の通信インタフェース130を通じてコンピュータシステム100に受信されてよい。通信インタフェース130を通じて受信された信号や命令、データなどは、プロセッサ120やメモリ110に伝達されてよく、ファイルなどは、コンピュータシステム100がさらに含むことのできる記録媒体(上述した永続的記録装置)に記録されてよい。
【0031】
通信方式が限定されることはなく、ネットワーク160が含むことのできる通信網(一例として、移動通信網、有線インターネット、無線インターネット、放送網)を利用する通信方式だけではなく、機器間の近距離無線通信が含まれてもよい。例えば、ネットワーク160は、PAN(Personal Area Network)、LAN(Local Area Network)、CAN(Campus Area Network)、MAN(Metropolitan Area Network)、WAN(Wide Area Network)、BBN(BroadBand Network)、インターネットなどのネットワークのうちの1つ以上の任意のネットワークを含んでよい。さらに、ネットワーク160は、バスネットワーク、スターネットワーク、リングネットワーク、メッシュネットワーク、スター-バスネットワーク、ツリーまたは階層的ネットワークなどを含むネットワークトポロジのうちの任意の1つ以上を含んでもよいが、これらに限定されることはない。
【0032】
入力/出力インタフェース140は、入力/出力装置150とのインタフェースのための手段であってよい。例えば、入力装置は、マイク、キーボード、カメラ、またはマウスなどの装置を、出力装置は、ディスプレイ、スピーカのような装置を含んでよい。他の例として、入力/出力インタフェース140は、タッチスクリーンのように入力と出力のための機能が1つに統合された装置とのインタフェースのための手段であってもよい。入力/出力装置150は、コンピュータシステム100と1つの装置で構成されてもよい。
【0033】
また、他の実施形態において、コンピュータシステム100は、
図1の構成要素よりも少ないか多くの構成要素を含んでもよい。しかし、大部分の従来技術的構成要素を明確に図に示す必要はない。例えば、コンピュータシステム100は、上述した入力/出力装置150のうちの少なくとも一部を含むように実現されてもよいし、トランシーバ、カメラ、各種センサ、データベースなどのような他の構成要素をさらに含んでもよい。
【0034】
図2は、Liveness over Safetyについての説明であって、PoW合意アルゴリズムを備えたブロックチェーンの一例を示したものであり、
図3は、Safety over Livenessについての説明であって、BFT系列の合意アルゴリズムを備えたブロックチェーンの一例を示したものである。
【0035】
図2に示すように、PoW合意アルゴリズムを備えたブロックチェーンは、ブロック201を生成してから合意を行う。PoW合意アルゴリズムを備えたブロックチェーンは、条件を達成したノードで生成されたブロック201がネットワークを介して伝播され、時間の経過によって合意が行われる方式でブロック201を確定する。
【0036】
PoW合意アルゴリズムを備えたブロックチェーンは、ブロック201が生成された後に合意を行うメカニズムであるため、ブロックチェーン合意がなされない場合にはチェーンの分岐によってフォーク(fork)が発生することがあり、これによって脱落するブロック201が発生することがある。
【0037】
図3を参照すると、BFT系列の合意アルゴリズムを備えたブロックチェーンは、PoW合意アルゴリズムを備えたブロックチェーンとは反対に、合意を行ってからブロック201を生成するメカニズムである。
【0038】
BFT系列の合意アルゴリズムを備えたブロックチェーンは、ブロック生成に参加するノードがブロック201を生成する前に合意を実行し、合意が完了した後にブロック201を生成してネットワークに伝播する。このように、BFT系列の合意アルゴリズムを備えたブロックチェーンでは、合意後にブロック201が生成されることからフォークが発生しない。
【0039】
BFT系列の合意アルゴリズムを備えたブロックチェーンは、ブロック201が生成されるたびに送信が完全に完了(one block finality)するためフォークが発生せず、最近生成されたブロック201に記録された情報を取り込んでも安全である。
【0040】
このようなBFT系列の合意アルゴリズムを備えたブロックチェーンは、ブロックフォークの問題なく安全性(safety)と生存性(liveness)を保障することはできるが、ブロック提案者の予測が可能であり、多くの検証者(validator)が合意に参加することができない。
【0041】
BFT系列の合意アルゴリズムであるラウンドロビン(Round Robin)のような合意アルゴリズム、例えば、テンダーミントを使用するブロックチェーンの場合は、ラウンドの方式や規則が定められていることから、預けた価値が変わらない限り誰でも提案者や検証者を予測することができる。このような弱点によってDoS攻撃が可能とはなるが、セントリーノード(sentry node)によってこのような問題を補うことができる。しかし、ビザンチンノードが特定の瞬間に自身が提案者であることを知ることができるため、これに備えて計画された悪意的な行動を防ぐことはできない。
【0042】
BFT系列の合意アルゴリズムを備えたブロックチェーンで合意を実行するときには全検証者が投票者として参加するため、制限的な数のノードだけで検証者を運営しなければならない。検証者の数が多いほど合意に必要な投票比率を求めるために多くのデータ通信が必要となるなどの問題により、合意に参加することが可能な検証者の数は限定的である。
【0043】
このようなBFT系列の合意アルゴリズムの弱点を改善したブロックチェーン合意アルゴリズムを提供する。
【0044】
図4は、本発明の一実施形態における、コンピュータシステムのプロセッサが含むことができる構成要素の例を示した図であり、
図5は、本発明の一実施形態における、コンピュータシステムが実行することができるブロックチェーン合意方法の例を示したフローチャートである。
【0045】
図4に示すように、プロセッサ120は、検証者選出部401と合意実行部402を含んでよい。このようなプロセッサ120の構成要素は、少なくとも1つのプログラムコードによって提供される制御命令にしたがってプロセッサ120によって実行される、互いに異なる機能(different functions)の表現であってよい。例えば、プロセッサ120がブロックチェーン合意に参加する検証者ノードを選出するようにコンピュータシステム100を制御するために動作する機能的表現として、検証者選出部401が使用されてよい。
【0046】
プロセッサ120およびプロセッサ120の構成要素は、
図5のブロックチェーン合意方法に含まれる段階510~520を実行してよい。例えば、プロセッサ120およびプロセッサ120の構成要素は、メモリ110が含むオペレーティングシステムのコードと、上述した少なくとも1つのプログラムコードとによる命令(instruction)を実行するように実現されてよい。ここで、少なくとも1つのプログラムコードは、ブロックチェーン合意方法を処理するために実現されたプログラムのコードに対応してよい。
【0047】
ブロックチェーン合意方法は、図に示した順序で発生しなくてもよく、段階の一部が省略されたり追加されたりしてもよい。
【0048】
プロセッサ120は、ブロックチェーン合意方法のためのプログラムファイルに記録されたプログラムコードをメモリ110にロードしてよい。例えば、ブロックチェーン合意方法のためのプログラムファイルは、メモリ110とは区分される永続的記録装置に記録されていてよく、プロセッサ120は、バスを介して永続的記録装置に記録されたプログラムファイルからプログラムコードがメモリ110にロードされるようにコンピュータシステム100を制御してよい。このとき、プロセッサ120およびプロセッサ120に含まれる検証者選出部401と合意実行部402それぞれは、メモリ110にロードされたプログラムコードのうちの対応する部分の命令を実行して後述する段階510~520を実行するためのプロセッサ120の互いに異なる機能的表現であってよい。段階510~520の実行のために、プロセッサ120およびプロセッサ120の構成要素は、直接制御命令によって演算を処理するか、コンピュータシステム100を制御してよい。
【0049】
図5を参照すると、段階510で、検証者選出部401は、VRF(Verifiable Random Function)と多項分布(multinomial distribution)を利用したランダム選出方式によって全検証者の一部をランダムに選出してよい。
【0050】
検証者選出部401は、VRFを利用して予測不可能であるが証明可能であるランダムハッシュを求めた後、ランダムハッシュに基づいて、多項分布を利用してブロック提案者と投票者を選出してよい。一例として、検証者選出部401は、多項分布のうちのカテゴリ分布(categorical distribution)を検証者に対するランダムサンプリングと選出に使用してよい。
【0051】
検証者選出部401は、預けた価値、すなわち、保有する持分に比例して提案者と投票者を選出する。言い換えれば、持分が多いノードであるほどブロック生成に参加する機会が多くなり、ブロック生成による報酬(reward)も持分に比例して支給される。
【0052】
検証者選出部401は、選出された検証者それぞれに対して、当該検証者が保有する持分に比例する投票権(voting power)を割り当ててよい。投票者選出過程において、ビザンチンを許容しながら、ビザンチンに極めて低い比率(1/3未満)の投票権を割り当ててよい。一例として、検証者選出部401は、カテゴリ分布によって投票者を選出するにあたり、重複選出を許容する方式によって投票者を選出してよい。他の例として、検証者選出部401は、重複選出を許容しない方式として超幾何分布(hypergeometric distribution)を使用して投票者を選出してよい。
【0053】
提案者や投票者に選出されなかった検証者は提案者と投票者を監視し、悪意的な行動を見つけた場合にはこれを告発する役割をする。このとき、告発内容は、ブロックに記録されてよい。
【0054】
段階520で、合意実行部402は、段階510で全検証者のうちから選出された一部の検証者の投票によってブロックチェーン合意を実行してよい。
【0055】
プロセッサ120は、テンダーミントを含んだBFT系列の合意アルゴリズムを基盤とするものであって、VRFと多項分布を利用したランダム選出方式によって全検証者ノードのうちから一部のノードをランダムに選出し、選出された一部のノードの投票によって合意を実行し、合意完了後にブロックを生成してネットワークに伝播する。
【0056】
本実施形態は、VRFと多項分布を利用したランダム選出方式によってブロック提案者と投票者を選出することで予測を不可能にすることができる。また、本実施形態は、全検証者のうちの一部をランダムに選出して合意を実行することにより、より多くの検証者が合意に参加できるようにする。
【0057】
本発明に係るランダム選出方式に使用される技術の1つであるVRFについて、次のように説明する。
【0058】
VRFは、証明可能なランダム関数であって、結果値が真であることを証明するための証拠を提供する疑似ランダム関数を意味する。
【0059】
プロセッサ120は、VRFを利用して提案者と投票者を選出するとき、予測不可能であるが証明可能なランダムハッシュを求める。
【0060】
生成者(generator)Gは、セキュリティパラメータkを受け取って公開キーPKと秘密キーSKを生成する(数式(1))。
【0061】
【0062】
試験者(proverまたはevaluator)は、秘密キーSKと入力値xを受け取って証明可能な関数値yと証明に使用する証拠πを生成する(数式(2))。
【0063】
【0064】
証明者(verifier)は、公開キーPK、入力値x、証拠πを使用して関数値yが正しく計算された値であるかを証明する(数式(3))。
【0065】
【0066】
結果、プロセッサ120は、上述したVRFを利用することにより、予測不可能であるが証明可能なランダムハッシュを求めることができる。
【0067】
本発明に係るランダム選出方式に使用される他の技術であるカテゴリ分布についての説明は、次のとおりとなる。
【0068】
カテゴリ分布とは、複数の値を有する独立確率変数に対する確率分布によって複数回の独立的施行でそれぞれの値が特定の回数が出る確率を定義する多項分布のうち、独立施行で出る値自体を示す分布を意味する。
【0069】
カテゴリ分布は、1~KまでのK個の定数値のうちの1つが出る。このとき、定数値を、範疇値、カテゴリ(category)、またはクラス(class)とする。例えば、サイコロを投げて出る目安は、Kが6であるカテゴリ分布に該当する。
【0070】
本実施形態では、検証者ノードそれぞれに対して、保有する持分に比例する目安を割り当て、保有する持分に値する確率で提案者や投票者に選出されるようにすることを保障するためにカテゴリ分布を使用する。
【0071】
図6は、ランダム選出関数(random election function)600を示している。
【0072】
図6を参照すると、ランダム選出関数600は、預けた価値を持分として保存している検証者と閾値(threshold)が入力されることで特定の検証者を選出する関数である。
【0073】
プロセッサ120は、上述したランダム選出関数600を利用して検証者を保有持分の逆順に整列するが、持分が等しい場合には公開キーの順に整列し、整列順で閾値が含まれた検証者を選出結果として返す。
【0074】
ランダム選出関数600で入力される閾値は、ブロックに含まれる証明値(proof value)をシード(seed)として使用する。このとき、証明値は、以前のブロック提案者のVRFによって生成されたランダムハッシュ値に該当する。
【0075】
1番目のブロックの場合は以前にブロックがないため、ジェネシスデータ(genesis data)をハッシュした値を証明値として使用する。ハッシュアルゴリズムとして公知されているアルゴリズムを使用してよいが、セキュリティ性が高く一意な値を抽出するアルゴリズムを使用する。
【0076】
投票者を選出するときは、
図7に示すように、以前のブロックの証明値をシードとする一般ランダム関数700を繰り返し実行することによって求めてよい。
【0077】
プロセッサ120は、ランダムブロック提案者選出方式によって、以前のブロック提案者によって生成されたハッシュ値(proof hash)をシードとして選出される検証者をブロック提案者に指定してよい。このように選出された提案者は、2つのブロック以上を予測することができない。さらに、カテゴリ分布によって、保有する持分に相応するだけ確率的に選出される冪等性も維持する。
【0078】
一例として、プロセッサ120は、ランダム選出方式によって1番目に選出される検証者をブロック提案者として使用し、以後に選出される検証者を投票者として使用してよい。他の例として、ブロック提案者と投票者を別のシードとして選出することも可能である。
【0079】
プロセッサ120は、ランダムサンプリング投票者選出方式によって全検証者のうちからランダムに一部を投票者として選出する方式を適用することにより、参加する検証者の数が多くても無理なくブロックチェーン合意を実行できるようにする。
【0080】
BFT系列の合意アルゴリズムは、基本の特性上、合意に参加するノードの数が多くなるほど合意にかかる時間が長くなり、全体ブロックの生成を遅くしていた。これにより、本実施形態では、全検証者のうちの一部だけに合意を実行させるようにすることにより、従来の合意アルゴリズムの問題を改善することができる。
【0081】
本実施形態に係るランダムサンプリングBFT合意アルゴリズムで選出される投票者に対する予測が困難であるのと同様に、合意に必要な投票比率以上のビザンチンが選出されるかを予測することできず、計画性のある悪意的行動を困難にすることができる。
【0082】
投票者として選出する比率によって極めて低い確率(1/3未満まで)でビザンチンが選出されることもあるが、合意に必要な投票の比率には及ばないため、ビザンチンによって不正ブロックが生成されることはない。
【0083】
ただし、ビザンチンによってブロックフォークが発生することはあるが、分岐したブロックは次のブロック提案者が選定したブロックに連結するため、ブロックフォークの問題はすぐに解決される。また、特定のノードの悪意的行動が見つかれば、提案者や投票者に選出されなかった検証者によって告発されたりビザンチンとして証明されたりすれば、強力な処罰アルゴリズムによってビザンチンの持続的な活動を防ぐことができる。
【0084】
プロセッサ120は、以前のブロック提案者によって生成されたハッシュ値をシードとして1番目の投票者を選出してよく、その次からは以前のブロックハッシュ値をシードとする一般ランダム関数700を繰り返し使用して求めるそれぞれの閾値でそれぞれの投票者を選出してよい。
【0085】
要するに、プロセッサ120は、カテゴリ分布によるランダムサンプリングを利用して、選出確率p_iがs_i/S(ここで、Sは発行持分の総和、s_iは候補iが保有する持分)である候補のうちから提案者を選出する。
【0086】
先ず、プロセッサ120は、VRFによって生成されたハッシュ値をシードとして使用して疑似乱数生成器を生成して提案者の閾値を決める。次に、プロセッサ120は、保有する持分にしたがって候補を降順に整列する。最後に、プロセッサ120は、提案者に対する閾値に適合する候補を選出する。
【0087】
したがって、プロセッサ120は、カテゴリ分布によるランダムサンプリングによって、1つの提案者と複数の投票者で構成された合意参加グループを選定することができる。
【0088】
全検証者のうちから一部を選出してブロックチェーン合意を実行する場合、選出された検証者による投票権限が3f+1の条件を満たすことにより、ビザンチンがfに相応する投票権限をもつ場合であっても、ブロックフォークなく安全に生存性を維持することができる。
【0089】
BFT合意のための3f+1の条件を満たす投票者の選出比率は、次のように決定されてよい。
【0090】
全体ノードTをnf+1とするとき、nは3よりも大きい数でなければならない(数式(4))。
【0091】
【0092】
VRFとカテゴリ分布を利用したランダムサンプリングによって選出されたノードxの数は、数式(5)のように求めることができる。
【0093】
【0094】
fの数が相当に大きい数であると仮定すれば、全体ノードTのうちから選出されるノードの数は数式(6)のとおりとなる。
【0095】
【0096】
すなわち、nの値が大きくなれば、全体ノードのうちから小さいノードの数だけを選出することができる。nの値が大きくなるということは、ビザンチンの数が少ない、より厳格なノードによって投票者を構成できるようになるということを意味する。
【0097】
例えば、プロセッサ120は、nを5または6に設定して、VRFとカテゴリ分布を利用したランダムサンプリングによって全体の60%あるいは50%の持分をもつノードを選出してよい。
【0098】
投票者選出過程で重複を許容する場合、全検証者のうちの一部の検証者を投票者として選出するにあたり、カテゴリ分布に基づいて投票者をn回にわたってそれぞれ選出するようになるが、このとき選出された投票者は重複して選出可能であり、選出された回数だけの投票権が割り当てられる。
【0099】
全検証者のうちの一部がビザンチンであるとき、選出されたビザンチン投票者が全体投票権の1/3未満になることによってビザンチンによるフォークを防ぐことができるため、重複選出が許容されたとしても、ビザンチンの投票権が1/3未満となるようにする投票者選出回数を探す。これは、ビザンチンが特定の割合で存在する場合、投票者選出をn回にわたって施行してビザンチンがk回選出される確率に単純化させ、kが全体nの1/3未満となるnの値を見つけ出す問題である。
【0100】
例えば、全検証者のうちでビザンチンの持分比率によってn回の選出でkが選出される確率は、二項分布の確率質量関数で表現してよく、ビザンチンの投票権が全体投票権nの1/3未満である確率は、n/3未満の累積確率によってポアソン分布で表現してよい。全検証者の投票権のうちのビザンチンの投票権に対して、選出された投票者のうちでビザンチンの投票権が1/3未満になるようにする投票者選出回数がポアソン分布の累積確率分布(CDF)内のどの範囲に該当するかは分位関数(quantile function)で求めることができる。
【0101】
重複選出を許容しない超幾何分布を利用して投票者を選出する場合、ブロックごとに合意を行う投票者セットを新たに選出するようになるが、ランダムに選出される投票者に対して重複選出を防ぐために、n個の投票者を選出するとき、既に選出された投票者は次に選出する投票者候補群から除いてから次の投票者を選出する。言い換えれば、全体N個の検証者のうちのn個の投票者を選出するとき、1番目に投票者が選出されていれば、2番目の投票者を選出するときには1番目の投票者を除いたn-1個の検証者のうちから2番目の投票者を選出する。このような選出をn個の投票者が選出されるまで繰り返す。
【0102】
このような選出方式は、投票者を選出するたびに候補群の数が変わるため、独立施行ではない非復元抽出をする超幾何分布として見なす。重複選出を許容する方式と同様に、超幾何分布によってビザンチンが1/3未満の投票権を有する投票者の数を模索する。超幾何分布の質量関数によると、n個の投票者のうちでビザンチンが0個である確率や1個である確率など、それぞれのビザンチンが特定の個数であるときの確率を知ることができる。すなわち、ビザンチンkが0個から(n/3)-1個であるすべての確率の和は、超幾何分布の累積確率分布で表現することができる。超幾何分布の分位数を繰り返した結果、全体N個の検証者のうちのk個がビザンチンであるとき、n個の選出されたビザンチンがn/3未満である場合が特定の累積確率(例えば、99.99%)となる投票者選出回数nを求めることができる。
【0103】
また、プロセッサ120は、全検証者を対象に報酬を支給する方式ではなく、全検証者のうちで提案者や投票者に選出された一部の検証者を対象に、保有する持分に比例して合意参加による補償を支給してよい。提案者や投票者に選出されなかった残りの検証者に対しては、提案者や投票者の監視や悪意的ノードの告発などに対して補償を支給する追加的な報酬モデルを適用してよい。
【0104】
このように、本発明の実施形態によると、VRFとカテゴリ分布を利用したランダムサンプリング方式によって提案者と投票者を選出することにより、予測不可能であるが証明可能な提案者と投票者を選出することができる。
【0105】
さらに、本発明の実施形態によると、全検証者の一部を投票者としてランダムに選出してブロックチェーン合意を実行することにより、より多くの検証者に合意への参加機会を保障することができる。
【0106】
上述した装置は、ハードウェア構成要素、ソフトウェア構成要素、および/またはハードウェア構成要素とソフトウェア構成要素との組み合わせによって実現されてよい。例えば、実施形態で説明された装置および構成要素は、プロセッサ、コントローラ、ALU(Arithmetic Logic Unit)、デジタル信号プロセッサ、マイクロコンピュータ、FPGA(Field Programmable Gate Array)、PLU(Programmable Logic Unit)、マイクロプロセッサ、または命令を実行して応答することができる様々な装置のように、1つ以上の汎用コンピュータまたは特殊目的コンピュータを利用して実現されてよい。処理装置は、オペレーティングシステム(OS)およびOS上で実行される1つ以上のソフトウェアアプリケーションを実行してよい。また、処理装置は、ソフトウェアの実行に応答し、データにアクセスし、データを記録、操作、処理、および生成してもよい。理解の便宜のために、1つの処理装置が使用されるとして説明される場合もあるが、当業者であれば、処理装置が複数個の処理要素および/または複数種類の処理要素を含んでもよいことが理解できるであろう。例えば、処理装置は、複数個のプロセッサまたは1つのプロセッサおよび1つのコントローラを含んでよい。また、並列プロセッサのような、他の処理構成も可能である。
【0107】
ソフトウェアは、コンピュータプログラム、コード、命令、またはこれらのうちの1つ以上の組み合わせを含んでもよく、望む動作をするように処理装置を構成したり、独立的または集合的に処理装置に命令したりしてよい。ソフトウェアおよび/またはデータは、処理装置に基づいて解釈されたり、処理装置に命令またはデータを提供したりするために、いかなる種類の機械、コンポーネント、物理装置、コンピュータ記録媒体または装置に具現化されてよい。ソフトウェアは、ネットワークによって接続されたコンピュータシステム上に分散され、分散された状態で記録されても実行されてもよい。ソフトウェアおよびデータは、1つ以上のコンピュータ読み取り可能な記録媒体に記録されてよい。
【0108】
実施形態に係る方法は、多様なコンピュータ手段によって実行可能なプログラム命令の形態で実現されてコンピュータ読み取り可能な媒体に記録されてよい。このとき、媒体は、コンピュータ実行可能なプログラムを継続して記録するものであっても、実行またはダウンロードのために一時記録するものであってもよい。また、媒体は、単一または複数のハードウェアが結合した形態の多様な記録手段または格納手段であってよく、あるコンピュータシステムに直接接続する媒体に限定されることはなく、ネットワーク上に分散して存在するものであってもよい。媒体の例としては、ハードディスク、フロッピーディスク、および磁気テープのような磁気媒体、CD-ROMおよびDVDのような光媒体、フロプティカルディスク(floptical disk)のような光磁気媒体、およびROM、RAM、フラッシュメモリなどを含み、プログラム命令が記録されるように構成されたものであってよい。また、媒体の他の例として、アプリケーションを配布するアプリケーションストアやその他の多様なソフトウェアを供給または配布するサイト、サーバなどで管理する記録媒体または格納媒体が挙げられる。
【0109】
以上のように、実施形態を、限定された実施形態と図面に基づいて説明したが、当業者であれば、上述した記載から多様な修正および変形が可能であろう。例えば、説明された技術が、説明された方法とは異なる順序で実行されたり、かつ/あるいは、説明されたシステム、構造、装置、回路などの構成要素が、説明された方法とは異なる形態で結合されたりまたは組み合わされたり、他の構成要素または均等物によって代替されたり置換されたとしても、適切な結果を達成することができる。
【0110】
したがって、異なる実施形態であっても、特許請求の範囲と均等なものであれば、添付される特許請求の範囲に属する。
【手続補正書】
【提出日】2023-06-13
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】0101
【補正方法】変更
【補正の内容】
【0101】
重複選出を許容しない超幾何分布を利用して投票者を選出する場合、ブロックごとに合意を行う投票者セットを新たに選出するようになるが、ランダムに選出される投票者に対して重複選出を防ぐために、n個の投票者を選出するとき、既に選出された投票者は次に選出する投票者候補群から除いてから次の投票者を選出する。言い換えれば、全体N個の検証者のうちのn個の投票者を選出するとき、1番目に投票者が選出されていれば、2番目の投票者を選出するときには1番目の投票者を除いたN-1個の検証者のうちから2番目の投票者を選出する。このような選出をn個の投票者が選出されるまで繰り返す。
【国際調査報告】