IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ エヌチェーン ホールディングス リミテッドの特許一覧

特許7537721安全なブロックチェーンベースのコンセンサス
<>
  • 特許-安全なブロックチェーンベースのコンセンサス 図1
  • 特許-安全なブロックチェーンベースのコンセンサス 図2
  • 特許-安全なブロックチェーンベースのコンセンサス 図3
  • 特許-安全なブロックチェーンベースのコンセンサス 図4
  • 特許-安全なブロックチェーンベースのコンセンサス 図5
  • 特許-安全なブロックチェーンベースのコンセンサス 図6
  • 特許-安全なブロックチェーンベースのコンセンサス 図7
  • 特許-安全なブロックチェーンベースのコンセンサス 図8
  • 特許-安全なブロックチェーンベースのコンセンサス 図9
  • 特許-安全なブロックチェーンベースのコンセンサス 図10
  • 特許-安全なブロックチェーンベースのコンセンサス 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-13
(45)【発行日】2024-08-21
(54)【発明の名称】安全なブロックチェーンベースのコンセンサス
(51)【国際特許分類】
   H04L 9/32 20060101AFI20240814BHJP
   H04L 9/08 20060101ALI20240814BHJP
【FI】
H04L9/32 200Z
H04L9/08 A
【請求項の数】 14
【外国語出願】
(21)【出願番号】P 2022188992
(22)【出願日】2022-11-28
(62)【分割の表示】P 2019555565の分割
【原出願日】2018-04-16
(65)【公開番号】P2023018116
(43)【公開日】2023-02-07
【審査請求日】2022-11-28
(31)【優先権主張番号】1706132.6
(32)【優先日】2017-04-18
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ヒメネス-デルガド,ペドロ
【審査官】青木 重徳
(56)【参考文献】
【文献】特表2016-517091(JP,A)
【文献】米国特許出願公開第2016/0357550(US,A1)
【文献】東角 芳樹 ほか,コンソーシアムチェーンにおける証明書管理に関する一考察,2017年 暗号と情報セキュリティシンポジウム(SCIS2017) [USB],日本,2017年 暗号と情報セキュリティシンポジウム実行,2017年01月24日,1F2-3,p.1-4
【文献】佐古 和恵,透明性と公平性を実現するブロックチェーン技術,情報処理,日本,一般社団法人情報処理学会,2016年08月15日,第57巻 第9号,p.864-869
【文献】Steven Goldfeder et al.,Securing Bitcoin wallets via threshold signatures,SEMANTIC SCHOLAR,Corpus ID: 16244349,[オンライン],2014年,<URL: http://diyhpl.us/~bryan/papers2/bitcoin/Securing%20Bitcoin%20wallets%20via%20threshold%20signatures.pdf>,(検索日 令和4年3月23日)、インターネット
【文献】DIKSHIT PRATYUSH; ET AL,EFFICIENT WEIGHTED THRESHOLD ECDSA FOR SECURING BITCOIN WALLET,2017 ISEA ASIA SECURITY AND PRIVACY (ISEASP),IEEE,2017年01月29日,PAGE(S):1 - 9,http://dx.doi.org/10.1109/ISEASP.2017.7976994
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
H04L 9/08
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
THE ACM DIGITAL LIBRARY
(57)【特許請求の範囲】
【請求項1】
コンピュータで実施される方法であって、当該コンピュータで実施される方法は、
ブロックチェーン・ネットワーク内のノードが、ノードのグループで形成されるコングレス(congress)に参加するために、トランザクションをコングレスプールにブロードキャストするステップと、
前記コングレスが要求者からのスクリプトを起動する要求を受け入れた後に、前記ノードが、前記コングレスプールに関連する公開キーで暗号ロックされたブロックチェーン・トランザクションを準備するステップであって、前記ブロックチェーン・トランザクションは、複数の情報提供システムが前記ブロックチェーン・トランザクションに入力を追加できるように構成される、ステップと、
前記入力が前記ブロックチェーン・トランザクションに追加された後に、前記ノードが前記グループの他のノードと協力して、前記ブロックチェーン・トランザクションの有効な暗号署名を協力して生成して、前記ブロックチェーン・トランザクションをロック解除するステップと、
前記トランザクションがロック解除された後に、前記複数の情報提供システムからデータを受信するステップと、
前記複数の情報提供システムから受信した前記データの中心点を決定するステップと、
前記ノードが前記コングレスの他のノードと協力して、前記中心点に基づいて前記スクリプトを起動するステップと、を含む、
コンピュータで実施される方法。
【請求項2】
前記コングレスプールに関連する前記公開キーは、複数のコングレス・メンバーの間で複数の秘密キーシェアとして配信された秘密キーに関連付けられる、請求項1に記載のコンピュータで実施される方法。
【請求項3】
前記有効な暗号署名は、しきい値数の前記秘密キーシェアによって生成される、請求項2に記載のコンピュータで実施される方法。
【請求項4】
前記秘密キーシェアは、楕円曲線デジタル署名アルゴリズムを使用して生成される、請求項3に記載のコンピュータで実施される方法。
【請求項5】
各秘密キーシェアは、信頼できる実行環境に格納される、請求項2乃至4のいずれか一項に記載のコンピュータで実施される方法。
【請求項6】
前記中心点に基づいて、前記ノードが、前記中心点に近接するデータを提供した情報提供システムのサブセットを特定するステップと、
前記ノードが前記グループの他のノードと協力して、前記サブセット内の各情報提供システムへのトークンの転送を許可するステップと、をさらに含む、請求項1に記載のコンピュータで実施される方法。
【請求項7】
前記中心点は、ノードのコングレスのコンセンサスによって決定される、請求項6に記載のコンピュータで実施される方法。
【請求項8】
前記中心点の決定はサイドチェーンで行われる、請求項7に記載のコンピュータで実施される方法。
【請求項9】
前記入力は、セキュリティのためにロックされるトークンを含む、請求項1乃至8のいずれか一項に記載のコンピュータで実施される方法。
【請求項10】
悪意のある関係者による悪意のある活動を検出するステップであって、前記悪意のある関係者は前記コングレスの前記ノードのうちの1つである、ステップと、
秘密キーシェアを使用して、前記悪意のある関係者によって前記コングレスプールに以前に転送されたトークンの少なくとも一部を没収するステップと、をさらに含む、請求項1乃至8のいずれか一項に記載のコンピュータで実施される方法。
【請求項11】
前記没収するステップには、支出不能アカウントに転送するステップが含まれる、請求項10に記載のコンピュータで実施される方法。
【請求項12】
実行されると、請求項1乃至11のいずれか一項に記載の方法を実行するようにプロセッサを構成するコンピュータ実行可能命令を含む、コンピュータ可読記憶媒体。
【請求項13】
電子装置であって、当該電子装置は、
インターフェイス装置と、
該インターフェイス装置に結合されたプロセッサと、
該プロセッサに結合されたメモリであって、実行されると、請求項1乃至11のいずれか一項に記載の方法を実行するようにプロセッサを構成するコンピュータ実行可能命令を格納したメモリと、を有する、
電子装置。
【請求項14】
前記プロセッサは信頼できる実行環境を含み、前記コンピュータ実行可能命令は前記信頼できる実行環境内で実行される、請求項13に記載の電子装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、分散型台帳に関し、より具体的には、そのような分散型台帳に関連するスクリプトを起動するための方法及びシステムに関する。本発明は、分散型台帳で利用できない情報に基づいて、そのようなスクリプトを起動するのに特に適しているが、これに限定されるものではない。
【0002】
この文書では、あらゆる形態の電子的なコンピュータベースの分散型台帳を含めるために「ブロックチェーン」という用語を使用している。これらの形態には、ブロックチェーン及びトランザクションチェーン技術、アクセス許可された台帳及びアクセス許可されていない台帳、共有台帳、及びそれらのバリエーションが含まれるが、これらに限定されるものではない。ブロックチェーン技術の最も広く知られている用途はビットコイン台帳であるが、他のブロックチェーン実施態様が提案され開発されている。本明細書では、便宜上及び例示の目的でビットコインについて参照しているが、本発明は、ビットコイン・ブロックチェーンでの使用に限定されるものではなく、代替のブロックチェーン実施態様及びプロトコルが本発明の範囲内にあることに留意されたい。
【0003】
ブロックチェーンはコンセンサスベースの電子台帳であり、この台帳はブロックで構成されるコンピュータベースの非中央型の分散システムとして実施され、ブロックはトランザクション及び他の情報で構成される。ビットコインの場合に、各トランザクションは、ブロックチェーン・システムの参加者同士の間でデジタル資産の制御(control:管理)の転送(transfer:移転)を符号化するデータ構造であり、各トランザクションには、少なくとも1つの入力と少なくとも1つの出力とが含まれる。各ブロックには以前のブロックのハッシュが含まれているため、これらブロックは、一緒にチェーンで繋がれており、その開始からブロックチェーンに書き込まれた全てのトランザクションの永続的な変更不可能なレコードを作成する。トランザクションには、それらの入力及び出力に埋め込まれたスクリプトとして知られている小さなプログラムが含まれており、スクリプトは、トランザクションの出力に誰がどの様にアクセスできるかを指定する。ビットコイン・プラットフォームでは、これらのスクリプトは、スタックベースのスクリプト言語を使用して記述される。
【0004】
トランザクションをブロックチェーンに書き込むためには、「検証」する必要がある。いくつかのネットワークノードはマイナー(採掘者:miners)として機能し、各トランザクションが有効であることを確認する作業を行い、無効なトランザクションはネットワークから拒否される。例えば、ノードにインストールされたソフトウェア・クライアントは、未使用(unspent)トランザクション出力(UTXO)を参照するトランザクションでこの検証作業を行う。検証は、そのロック及びロック解除スクリプトを実行することにより行われ得る。ロック及びロック解除スクリプトの実行がTRUEと評価され、且つ他の特定の条件(十分なマイニング料金を含める等)が満たされた場合に、トランザクションは有効であり、そのトランザクションをブロックチェーンに書き込むことができる。こうして、トランザクションをブロックチェーンに書き込むためには、そのトランザクションは、i)トランザクションを受信するノードによって検証する(トランザクションが検証されると、ノードはその検証したトランザクションをネットワーク内の他のノードに中継する);ii)マイナーによって構築された新しいブロックに追加する;iii)採掘する、つまり過去のトランザクションの公的な台帳に追加する必要がある。トランザクションは、トランザクションを実質的に不可逆にするために十分な数のブロックがブロックチェーンに追加されたときに確認されたとみなされる。
【0005】
ブロックチェーン技術は暗号通貨の実施態様の使用で最も広く知られているが、デジタル起業家は、ビットコインがベースとする暗号セキュリティシステムと、ブロックチェーンに保存して新しいシステムを実施できるデータとの両方の使用を模索し始めている。暗号通貨の領域に限定されない自動化されたタスク及びプロセスにブロックチェーンを使用できれば、非常に有利になろう。このようなソリューションによって、ブロックチェーンの利点(例えば、イベントの永続的な改ざん防止記録、分散処理等)を活用しながら、アプリケーションの用途を広げることができるだろう。
【0006】
ブロックチェーン技術は、スマートコントラクト(smart contracts:契約の自動化)のプラットフォームを提供するために使用されてきた。スマートコントラクトは、契約の条件を実行するコンピュータ化されたトランザクション・プロトコルである。スマートコントラクトは、ブロックチェーンに実装されると、ブロックチェーンに保存され、且つブロックチェーン・トランザクションによってトリガーされるコンピュータ化されたプロトコルであり、このプロトコルは、実行時に、データをブロックチェーンに書き込むことができる。スマートコントラクトは、ブロックチェーンに実装されると、ブロックチェーン・ネットワークの全てのユーザに表示され得る。
【0007】
スマートコントラクトは、大抵の場合、メッセージ又はトランザクションによってアクティブにする必要がある。つまり、スマートコントラクトは、典型的に、実行されるコードに関して外部エージェントによって突く(poked)必要がある。さらに、スマートコントラクトは、典型的に、ブロックチェーン自体の外部にある情報にアクセスすることができない。そのような情報へのアクセスの無い状態では、スマートコントラクトは、契約のどの条項を実行/施行すべきかを決定できない場合がある。このような外部情報を取得するために、信頼できる外部エージェントが、ブロックチェーンの外部にあり且つスマートコントラクトで必要とされる情報へのアクセスを提供するために時には使用される。信頼できる外部エージェントに依存すると、スマートコントラクトの自律性及び自己実施的な性質が低下する。信頼できる外部エージェントに依存すると、スマートコントラクトのセキュリティ及び有用性が低下する可能性がある。
【発明の概要】
【0008】
こうして、本発明によれば、添付の特許請求の範囲に規定される方法が提供される。
【0009】
以下でより詳細に説明するように、ブロックチェーン・ネットワーク上でコングレス(congress:会議)を形成することができる。コングレスは、十分な出資金(stake)をコングレスに関連するプールに提出すると、ブロックチェーン・ネットワーク内の任意のノードが参加できるオープンメンバーシップ・グループである。例えば、ノードは、デジタル通貨(ビットコイン等)、トークン、又は他の出資金や対価等のデジタル資産を、コングレスに関連するアカウントに転送することで、コングレスに参加することができる。有利なことに、コングレスは、スマートコントラクト等のスクリプトを安全に起動するために使用され得る。例えば、コングレスは、外部ソースからのデータをスクリプトに確実に提供するために使用され得る。コングレスは、ノード同士の間のメッセージ交換が安全でない分散システムでコンセンサスに安全に達するために使用され得る。例えば、コングレスは、外部ソースからのデータをスクリプトに確実に提供することができ、コングレス内のノード同士の間の通信が安全でない場合でも、データを安全に提供することができる。
【0010】
従って、本発明によれば、コンピュータで実施される方法を提供することができる。コンピュータで実施される方法は、i)ブロックチェーン・ネットワーク内のノードによって、トランザクションをコングレスプールにブロードキャストして、ノードのグループで形成されるコングレスに参加するステップと;ii)コングレスが要求者からのスクリプトを起動する要求を受け入れた後に、ノードによって、コングレスプールに支払うトランザクションを準備するステップであって、トランザクションは、複数の情報提供システムがトランザクションに入力を追加できるように構成される、準備するステップと;iii)入力がトランザクションに追加された後に、グループの他のノードと協力するノードによって、トランザクションに関するトランザクションを使う(spend)ための有効な署名を協力して生成するステップと;iv)トランザクションが使われた後に、複数の情報提供システムからデータを受信するステップと;v)複数の情報提供システムから受信したデータの中心点(centre point)を決定するステップと;vi)コングレスの他のノードと協力するノードによって、中心点に基づいてスクリプトを起動するステップと;を含む。
【0011】
いくつかの実施態様では、コンピュータで実施される方法が提供される。コンピュータで実施される方法は、i)ブロックチェーン・ネットワーク内のノードによって、トランザクションをコングレスプールにブロードキャストして、ノードのグループで形成されるコングレスに参加するステップと;ii)コングレスが要求者からのスクリプトを起動する要求を受け入れた後に、ノードによって、コングレスに関連する公開キーで暗号ロックされたブロックチェーン・トランザクションを準備するステップであって、ブロックチェーン・トランザクションは、複数の情報提供システムがブロックチェーン・トランザクションに入力を追加できるように構成される、準備するステップと;iii)入力がブロックチェーン・トランザクションに追加された後に、グループの他のノードと協働するノードによって、ブロックチェーン・トランザクションの有効な暗号署名を協力して生成し、ブロックチェーン・トランザクションをロック解除するステップと;iv)トランザクションがロック解除された後に、複数の情報提供システムからデータを受信するステップと;v)複数の情報提供システムから受信したデータの中心点を決定するステップと;vi)コングレスの他のノードと協力するノードによって、中心点に基づいてスクリプトを起動するステップと;を含む。
【0012】
いくつかの実施態様では、コンピュータで実施される方法は、i)中心点に基づいて、ノードによって、中心点付近のデータを提供した情報提供システムのサブセットを特定するステップと;ii)グループの他のノードと協力するノードによって、サブセット内の各情報プロバイダー(つまり、サブセット内の各情報提供システム)へのデジタル資産(つまり、トークン)の転送を許可するステップと;を含む。
【0013】
いくつかの実施態様では、転送に含まれるデジタル資産(つまり、トークン)には、要求者からコングレスプールに受け取られた1つ又は複数のデジタル資産(つまり、トークン)が含まれる。いくつかの実施態様では、要求にはしきい値インジケータが含まれ、サブセットは、しきい値インジケータに基づいて特定される。しきい値インジケータは、要求者から受信することができる。
【0014】
いくつかの実施態様では、トランザクションへの入力(つまり、ブロックチェーン・トランザクションへの入力)には、それぞれのプルーフオブソリューションデータ(proof of solution data)が含まれ、方法は、プルーフオブソリューションデータに基づいて、情報提供システムの少なくとも1つから受信したデータが、コミットされたソリューションに対応することを判定するステップを含む。
【0015】
いくつかの実施態様では、トランザクションへの入力(つまり、ブロックチェーン・トランザクションへの入力)には、それぞれのプルーフオブソリューションデータが含まれ、方法は、i)情報提供システムの少なくとも1つから受信したデータが、その情報提供システムから受信したプルーフオブソリューションデータと対応(一致)していないと判定するステップと;ii)情報提供システムの少なくとも1つから受信したデータが、プルーフオブソリューションデータに基づいて、コミットされたソリューションに対応していないと判定された場合に、データを破棄するステップと;をさらに含む。
【0016】
いくつかの実施態様では、トランザクションへの入力には、保証金として保持される(つまり、保証のためにロックされる)デジタル資産(つまり、トークン)が含まれる。
【0017】
いくつかの実施態様では、情報提供システムは、トランザクション(つまり、ブロックチェーン・トランザクション)に、公開キー、要求に対するソリューション、及びソルト(salt)に基づくハッシュを含む。いくつかの実施態様では、複数の情報提供システムから受信したデータには、公開キー、要求に対するソリューション、ソルトが含まれる。この方法は、i)公開キー、要求に対するソリューション、及びソルトに基づいてハッシュを生成するステップと;ii)生成されたハッシュと、トランザクション(つまり、ブロックチェーン・トランザクション)に含まれるハッシュとを比較するステップと;をさらに含むことができる。
【0018】
いくつかの実施態様では、コンピュータで実施される方法は、i)悪意のある関係者による悪意のある活動を検出するステップであって、悪意のある関係者はコングレスのノードのうちの1つである、検出するステップと;ii)秘密キーシェアを使用して、悪意のある関係者によってコングレスプールに以前に転送されたデジタル資産(つまり、トークン)の少なくとも一部を没収するステップと;をさらに含む。没収するステップには、支出不能(unsepndable)アカウントに転送するステップが含まれ得る。
【0019】
本発明によれば、電子装置を提供することができる。電子装置は、インターフェイス装置、インターフェイス装置に結合されたプロセッサ、及びプロセッサに結合されたメモリを含む。メモリは、実行されると、本明細書で説明する方法を実行するようにプロセッサを構成するコンピュータ実行可能命令を格納している。
【0020】
本発明によれば、コンピュータ可読記憶媒体を提供することができる。コンピュータ可読記憶媒体は、実行されると、本明細書で説明する方法を実行するようにプロセッサを構成するコンピュータ実行可能命令を含む。
【図面の簡単な説明】
【0021】
本発明のこれら及び他の態様は、本明細書で説明する実施形態から明らかとなり、この実施形態を参照して説明される。ここで、本発明の実施形態を、単なる例として、添付の図面を参照して説明する。
図1】例示的なブロックチェーン・ネットワークのブロック図である。
図2】ブロックチェーン・ネットワーク内のノードとして機能し得る例示的な電子装置のブロック図である。
図3】コングレスを開始する例示的な方法のフローチャートである。
図4】コングレスに参加する例示的な方法のフローチャートである。
図5】デジタル資産を没収する例示的な方法のフローチャートである。
図6】キーシェアを再配信する例示的な方法のフローチャートである。
図7】キーシェアを再配信する更なる例示的な方法のフローチャートである。
図8】預入金を返却する例示的な方法のフローチャートである。
図9】例示的なブロックチェーン・ネットワークのブロック図である。
図10】スクリプトの起動を要求する例示的な方法のフローチャートである。
図11】スクリプトの起動を要求する例示的な方法のフローチャートである。
【発明を実施するための形態】
【0022】
ブロックチェーン・ネットワーク
最初に図1を参照すると、この図は、ブロックチェーンに関連する例示的なブロックチェーン・ネットワーク100をブロック図形式で示す。ブロックチェーン・ネットワークは、パブリック・ブロックチェーン・ネットワークとすることができ、このネットワークは、招待を受けずに又は他のメンバーの同意なしに、誰でも参加できるピアツーピアのオープンメンバーシップ・ネットワークである。ブロックチェーン・ネットワーク100が動作するブロックチェーン・プロトコルのインスタンスを実行する分散型電子装置は、ブロックチェーン・ネットワーク100に参加することができる。そのような分散型電子装置は、ノード102と呼ばれ得る。ブロックチェーン・プロトコルは、例えば、ビットコイン・プロトコルであってもよい。
【0023】
ブロックチェーン・プロトコルを実行し、且つブロックチェーン・ネットワーク100のノード102を形成する電子装置は、例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバ等のコンピュータ、スマートフォン等のモバイル装置、スマートウォッチ等のウェアラブルコンピュータ、又は他の電子装置等を含む様々なタイプの装置であってもよい。
【0024】
ブロックチェーン・ネットワーク100のノード102は、有線及び無線通信技術を含み得る適切な通信技術を使用して互いに結合される。このような通信は、ブロックチェーンに関連するプロトコルに準拠している。例えば、ブロックチェーンがビットコイン・ブロックチェーンである場合に、ビットコイン・プロトコルを使用することができる。
【0025】
ノード102は、ブロックチェーンの全てのトランザクションのグローバル台帳を維持する。こうして、グローバル台帳は分散型台帳である。各ノード102は、グローバル台帳の完全なコピー又は部分的なコピーを保存することができる。プルーフオブワーク(proof of work:作業証明)により保証されたブロックチェーンの場合に、グローバル台帳に影響を与えるノード102によるトランザクションは、グローバル台帳の有効性が維持されるように他のノード102によって検証される。ブロックチェーンがプルーフオブワークベースのブロックチェーンである場合に、ブロックとともに送信されたプルーフオブワークをチェックすることでブロックも検証される。
【0026】
ノード102の少なくともいくつかは、ブロックチェーン・ネットワーク100のマイナー104として動作する。図1のブロックチェーン・ネットワーク100は、マイナー104がブロックチェーン上でのトランザクションを促進するために費用のかかる計算を行うプルーフオブワーク・ブロックチェーンである。例えば、プルーフオブワーク・ブロックチェーンでは、マイナーが暗号問題を解く必要があり得る。ビットコインでは、マイナー104は、ブロックヘッダーをSHA-256でハッシュして、現在の困難性により規定される値よりも小さい数になるようにナンス(nonce)を見つける。プルーフオブワーク・アルゴリズムに必要なハッシュ能力は、トランザクションが、特定の数のブロックがその上部でマイニングされた後に、実質的に不可逆とみなされることを意味する。暗号問題を解くマイナー104は、ブロックチェーンに新しいブロックを作成し、この新しいブロックを他のノード102にブロードキャストする。他のノード102は、マイナー104が実際に暗号問題を解き、従って、ブロックをブロックチェーンに追加すべきことを受け入れる前に、十分なプルーフオブワーク(作業証明)を実証したことを検証する。ブロックは、ノード102のコンセンサスによってブロックチェーン(つまり、グローバル分散型台帳)に追加される。
【0027】
マイナー104によって作成されたブロックは、ノード102によってブロックチェーンにブロードキャストされたトランザクションを含む。例えば、ブロックは、あるノード102に関連するアドレスから別のノード102に関連するアドレスへのトランザクションを含み得る。このように、ブロックはあるアドレスから別のアドレスへのトランザクションの記録として機能する。トランザクションをブロックに含めるように要求する関係者(party)は、公開キー(public key)に対応する秘密キー(private key)を使用してその要求に署名することにより、転送を開始する(例えば、ビットコインの場合に、ビットコインを使う等)権限があることを証明する。その要求が有効に署名されている場合にのみ、その転送(トランザクション)がブロックに追加され得る。
【0028】
ビットコインの場合に、公開キーとアドレスとの間には1対1の対応関係がある。つまり、各公開キーは単一のアドレスに関連付けられる。こうして、ここでの公開キーとの間のデジタル資産の移転(例えば、公開キーへの支払い)及びその公開キーに関連するアドレスとの間のデジタル資産の移転への言及は、一般的な動作を指す。
【0029】
ノード102のいくつかは、マイナーとして動作せず、代わりに検証ノードとして参加し得る。トランザクションの検証には、署名の照合、有効なUTXOへの参照の確認等が含まれ得る。
【0030】
図1の例は、6つのノード102を含み、そのうちの2つがマイナー104として参加している。実際には、ノード102又はマイナー104の数は異なっていてもよい。多くのブロックチェーン・ネットワークでは、ノード102及びマイナー104の数は、図1に示されている数よりはるかに多くてもよい。
【0031】
以下で説明するように、様々なノード102が協力して、本明細書でコングレス110と呼ばれるグループを形成することができる。図示の例では、3つのノード102がコングレス110に参加するものとして示されている。しかしながら、コングレス110の実際のメンバーははるかに多くてもよい。
【0032】
コングレス110は、コングレス110に関連するプールに十分な出資金を提出すると、ノード102が参加することができるオープンメンバーシップ・グループである。例えば、ノードは、デジタル通貨(ビットコイン等)、トークン、又は他の出資金や対価等のデジタル資産を、コングレス110に関連するアカウントに転送することで、コングレスに参加することができる。コングレスに参加するノード102は、マイニングノードと非マイニングノードとの両方を含む、ブロックチェーン・ネットワーク内のノードであり得る。コングレスの少なくともいくつかのアプリケーションでは、コングレス・メンバーとして機能するノードは、完全なブロックチェーンをダウンロードする(ただし、必ずしも保持する必要はない)という意味でブロックチェーンを監視する。
【0033】
コングレス110への加入、退会、及び参加の手法については、以下でより詳細に説明する。
【0034】
ノードとして動作する電子装置
図2は、ピアツーピア・ブロックチェーン・ネットワーク100(図1)においてノード102(図1)として機能し得る例示的な電子装置200のコンポーネントを示すブロック図である。例示的な電子装置200は、処理装置とも呼ばれ得る。電子装置は、例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、サーバ、スマートフォン等のモバイル装置、スマートウォッチ等のウェアラブルコンピュータ、又は別のタイプの形式を含む様々な形態を取ることができる。
【0035】
電子装置200は、プロセッサ210、メモリ220、及びインターフェイス装置230を含む。これらのコンポーネントは、互いに直接又は間接的に結合してもよく、互いに通信してもよい。例えば、プロセッサ210、メモリ220、及びインターフェイス装置230は、バス240を介して互いに通信することができる。メモリ220は、本明細書で説明する機能を実行するための機械可読命令及びデータを含むコンピュータソフトウェアプログラムを格納する。例えば、メモリは、プロセッサ210によって実行されると、電子装置に本明細書で説明する方法を実行させるプロセッサ実行可能命令を含み得る。プロセッサ実行可能命令は、プロセッサ210によって実行されると、電子装置にブロックチェーン・ネットワーク100(図1)に関連するプロトコルを実装させる命令を含み得る。例えば、命令には、ビットコイン・プロトコルを実装するための命令が含まれ得る。
【0036】
メモリ220は、ブロックチェーン・ネットワーク100(図1)のグローバル台帳又はその一部を格納してもよい。つまり、メモリ220は、ブロックチェーンの全てのブロック、又は最新のブロック等のブロックの一部、又はいくつかのブロックにおける情報の一部を格納することができる。
【0037】
図2では、メモリ220が単一のブロックで示されているが、実際には、電子装置200は、複数のメモリ・コンポーネントを含んでもよい。メモリ・コンポーネントは、例えば、RAM、HDD、SSD、フラッシュドライブ等を含む様々なタイプのものであってもよい。異なるタイプのメモリが異なる目的に適している場合がある。さらに、メモリ220がプロセッサ210とは別に示されているが、プロセッサ210は埋込み型メモリを含んでもよい。
【0038】
図2に示されるように、プロセッサ210は、信頼できる実行環境(TEE)250等の安全な領域を含むことができる。TEE250は、隔離され状態での実行、信頼できるアプリケーションの統合、資産の機密性等の追加のセキュリティを電子装置200に提供する隔離された実行環境である。TEE250は、TEE250内にロードされたコンピュータ命令及びデータが機密性及び完全性の観点から保護されることを保証する実行空間を提供する。TEE250は、キー等の重要なリソースの完全性及び機密性を保護するために使用され得る。TEE250は、少なくとも部分的にハードウェアレベルで実装されるため、TEE250内で実行される命令及びデータは、電子装置200の残りの部分からの及び電子装置の所有者等の外部関係者からのアクセス及び操作に対して保護される。TEE250内のデータ及び計算は、TEE250を含むノード102を操作する関係者からセキュリティ保護される。
【0039】
TEE250は、累積的にハッシュしながら、エンクレーブ(enclave:飛び地)をインスタンス化し、メモリのページを一度に1つずつ追加するように動作し得る。同様の動作をリモートマシン(開発マシン又は別のマシンであり得る)でも実行することができるので、リモートマシンは、予想されるハッシュを決定して保存する。従って、エンクレーブの内容をリモートマシンで検証して、エンクレーブが承認済みアルゴリズムを実行していることを確認することができる。この検証は、ハッシュを比較することで行うことができる。エンクレーブが完全に構築されると、そのエンクレーブはロックダウン(locked down)される。TEE250でコードを実行し、コードにシークレットを送信することは可能であるが、コードを変更することはできない。最終的なハッシュは、認証キーによって署名され、データ所有者がエンクレーブにシークレットを送信する前に検証するためにデータ所有者がその認証キーを利用できるようにし得る。
【0040】
TEE250は、コングレス110(図1)によって使用されるコングレス公開キーに関連する秘密キーシェアの機密性及び完全性を保護するために使用され得る。例えば、TEE250は、秘密キーシェアの生成及び保存に使用され得る。TEE250は、TEE250エンクレーブ内に保持されている秘密キーシェア、又はメンバー間通信又はエンクレーブ間通信から他の秘密キーシェアに関する情報を、メンバーが直接的に取得できないようにすることを目的としている。このプロトコルは、エンクレーブのしきい値の危殆化(compromise)に対しても堅牢である。さらに、TEE250は、ノード102(図1)によって使用され得るリモート認証を可能にし、TEE250が真正であり、コングレス110によって実施されるプロトコル用の承認されたコンピュータ実行可能命令を実行していることを他のノード102に証明することができる。コードの特定の一部を実行し、エンクレーブの内部認証キーで署名されたエンクレーブの内部のコードのハッシュを送信することにより、TEE250によってリモート認証が提供され得る。
【0041】
TEE250は、電子装置200上で秘密キーシェアを以前に使用したコングレス110のメンバーがコングレスを退会することを選択したときに、秘密キーシェアの削除を保証するために使用され得る。電子装置200は、TEE250で提供されるリモート認証プロトコルを介して削除の証明を他のコングレス・メンバーに提供することができる。メンバーが自分のメンバー預入金(deposit)を引き出すことを許可される前に、削除の証明が必要とされ得る。つまり、預入金の返却は、メンバーのエンクレーブ内に保持されている秘密キーシェアの削除の証明を条件とする場合がある。
【0042】
TEE250は、TEEのエンクレーブの内部にある安全な(secure)乱数発生器を装備することができ、この乱数発生器を使用して、秘密キー、ランダムチャレンジ(random challenges)、又は他のランダムデータを生成することができる。TEE250は、外部メモリからデータを読み出すように構成することもでき、且つ外部メモリにデータを書き込むように構成することができる。このようなデータは、エンクレーブ内でのみ保持される秘密キーで暗号化され得る。
【0043】
TEE250は、Trusted Platform Module(TPM)やIntel Software Guard Extensions(SGX)等の様々なプラットフォームを使用して実装することができる。例えば、SGXはリモート認証をサポートする。これにより、エンクレーブが、特定のエンクレーブを実行しているプロセッサからクォート(quote)と呼ばれる所与のメンバーが有している署名付きステートメントを取得することができる。Intel Attestation Service(IAS)等の第三者認証サービスは、これらの署名付きステートメントがSGX仕様に準拠した真正のCPUからのものであることを証明し得る。
【0044】
電子装置200は、ブロックチェーン・ネットワーク100(図1)内のノード102(図1)として機能し、コングレス110(図1)に参加し、そうでなければ加わることができる。コングレス110は、デジタル資産所有者のグループが、ブロックチェーン・ネットワーク100(図1)によってサポートされるデジタル通貨、トークン、又は他の出資金や対価等のデジタル資産をプールするときに形成される。
【0045】
コングレス及びしきい値署名
コングレス110は、認可されたグループでも認可されていないグループでもよい。つまり、コングレス110には、ブロックチェーン・ネットワーク100(図1)内の任意のノード102(図1)が(すなわち、ブロックチェーン内の情報の少なくとも一部を監視及び格納する任意のノードが)参加することができる。コングレス110に参加するために、ノード102は、1つ又は複数のデジタル資産をコングレス110に関連するデジタル資産プールに(すなわち、1つ又は複数のデジタル資産に関連付けられ、次にコングレスの他のメンバーに関連付けられた公開グループアドレスに)転送する。このデジタル資産プールは、コングレスプールと呼ばれ得る。例えば、ノード102は、そのようなデジタル資産をコングレスプールに関連するアドレス(すなわち、公開グループアドレスとも呼ばれ得る「コングレスアドレス」)に転送する(すなわち、預け入れる)ことにより、コングレス110に参加することができる。デジタル資産は、コングレス公開キーと呼ばれる単一の公開キーを有するグループしきい値署名の管理下に置かれる。コングレス・メンバーは、分配的に生成された秘密キーシェアを保持している。保持シェア数は、プールに預け入れられた金額に比例し得る。
【0046】
コングレス110によって管理されるデジタル資産は、コングレスアドレスに転送されるデジタル資産を含み、しきい値署名方式の管理下に置かれる。しきい値署名方式では、デジタル資産をコングレス110の管理から離すように転送するのを可能にする有効な署名を生成するためには、秘密キーシェアの合計保有量がしきい値を超えるメンバーのグループが必要である。つまり、少なくともしきい値数の秘密キーシェアを使用して、コングレス110が管理するデジタル資産の支出(outgoing)転送のための有効な署名を生成する必要がある。
【0047】
コングレス公開キーは、秘密キーシェアと引き換えに、コングレス110のメンバーによってコングレスプールに預け入れられたデジタル資産、及びコングレス110のメンバー又は非メンバーによってコングレスプールに関連するアドレスに預け入れられた(つまり、コングレスの完全、部分、又は条件付き管理下に置かれた)(秘密キーシェアの取得以外の理由で預け入れられた)デジタル資産を制限する(encumber)。非メンバー又はメンバーは、様々な理由でコングレスに関連するアドレスにデジタル資産を預け入れることができる。以下でより詳細に説明する一例では、メンバー又は非メンバーは、デジタル資産をコングレス110に預け入れて、そのような資産を別のブロックチェーン(サイドチェーン等の代替チェーン(alt-chain)と呼ばれ得る)に移動させることができる。サイドチェーンは、メインブロックチェーンと並行して(つまり、メインチェーンと並行して)実行されるブロックチェーンであり得る。
【0048】
同じコングレス公開キーが、メンバー預入金(すなわち、秘密キーシェアと引き換えにコングレス・メンバーによって提供されるデジタル資産)と、他の目的でメンバー又は非メンバーによって提供されるデジタル資産との両方を管理する場合があるため、預入金の種類を示すために、コングレスに関連するアドレスに対する少なくとも一部の預入金に特別なフラグを立てる場合がある。例えば、デジタル資産をコングレスアドレスに転送するトランザクションには、行われている預入金の性質を示すフラグ、識別子、又は他の属性が含まれる場合がある。例として、コングレスへの参加又はコングレス構成員の出資金を増やす目的で行われていないデジタル資産をコングレスアドレスに転送するトランザクションには、別の目的で預け入れが行われていることを示す特別な識別子が含まれる場合がある。そのような識別子は、秘密キー生成を管理するときに、コングレス110に関連するノード102によって使用され得る。より具体的には、グループに参加する目的でデジタル資産を預け入れるノード102には、コングレス110の秘密キーシェアが(デジタル資産の預け入れの結果として)割り当てられる一方、他の目的で(例えば、サイドチェーンに転送するために)デジタル資産を預け入れた他のノード102は、コングレスのコングレス秘密キーシェア(つまり、コングレス公開キーに対応する)を保持していない可能性がある。
【0049】
コングレス110は、メンバー預入金の全部又は一部を没収するという脅しによって協力的な行動が実施される自治グループとして機能を果たすことができる。多くの誠実なメンバーが協力的なプロトコルに参加することにより、非協力的な又は悪意のあるメンバーのそのようなデジタル資産を没収することができる。すなわち、全てのノード102が予め規定されたプロトコル又は基準に準拠して動作することを保証するために、コングレスプールへのメンバー預入金は没収の対象となり得る。没収とは、没収されたとみなされるメンバー預入金の返却を永久に阻止することを意味する。悪意のある活動のために返却されない、メンバー預入金を形成するデジタル資産は、コングレスプールに残され得るが、返却されず(例えば、返却すべきでないというコンセンサスが(Altチェーンで)得られた場合に)、即時又は将来的に支出不能アドレスに転送され、又はそうでなければ没収され場合がある。没収の性質は、コングレスがサイドチェーンの留め置き検証(bonded validator)セットとして機能するかどうかによって異なり得る。
【0050】
さらに、コングレス・メンバーがコングレス110から退会したい場合に、メンバーは自分のメンバー預入金を引き出すことができる(つまり、コングレス110がメンバー預入金をそのメンバーの個人アドレスに戻すことを要求する)。ただし、資金の引出しは、有効なデジタル署名を生成するために必要なしきい値を超える数の秘密キーシェアが、引出しを承認するグループ(つまり、コングレス)のメンバーによって使用される場合にのみ、実行される。
【0051】
コングレス110によって実施されるしきい値署名方式は、様々なタイプのものであり得る。しきい値署名方式は、有効な署名の生成に少なくともしきい値数の秘密キーシェアが寄与している限り、n人の関係者の間で署名能力を共有することを可能にする。しきい値より小さいサブセットは、有効な署名を生成することができない。より具体的には、各関係者は秘密署名キーの共有を管理し、部分的な署名を組み合わせて有効な署名を生成するには、しきい値数のキーシェアを使用しなければならない。しきい値未満のキーシェアのサブセットは、有効な署名を生成することができない。
【0052】
しきい値署名方式は、楕円曲線デジタル署名アルゴリズム(ECDSA)方式であり得る。例えば、ECDSA方式は、Ibrahimらによって、“A robust threshold elliptic curve digital signature providing a new verifiable secret sharing scheme”, 2003 EIII 46th Midwest Symposium on Circuits and Systems, 1: 276-280 (2003)に提案されたタイプのものであり得る。このしきい値署名方式は、楕円曲線暗号ベースのアルゴリズムであるデジタル署名方式の拡張であり、この方式では、秘密キーを再構築するためにn個のキーシェア保有者からのt+1個のキーシェアが必要である。この方式を使用して、秘密キーを再構築する必要がなく、ある関係者が自分のキーシェアを他の関係者に明らかにする必要なく、有効な署名を構築することができる。
【0053】
t+1個のキーシェアはシークレットを再構築するのに十分であるため、この手法による許容される敵(adversary)の最大数はtである。Ibrahimらのモデルにおける敵は、シークレットシェアを保持している関係者を買収し、且つそのシークレットシェアにアクセスできるエンティティである。敵には様々な種類があり得る。例えば、ビザンチン(Byzantine)の敵は、プロトコルに参加するふりをしているが、実際には不正な情報を送信している敵である。Ibrahimによって提案されたECDSA方式は、最大t<=n/4の悪意のある敵に対して堅牢である。この堅牢性はt<=n/3まで上がる可能性があるが、複雑性のコストが増す。
【0054】
IbrahimらのECDSA方式は、t<=n/3の敵を食い止める(halting)のに堅牢である。敵の食止めによって、買収された関係者がプロトコルに参加するのを阻止するか、途中参加を食い止めることができる。
【0055】
このECDSA方式は、ノード102が悪意のある又は非協力的な関係者を特定するために使用できる様々なメカニズムを含む。例えば、検証可能な秘密分散(VSS:verifiable secret sharing)を使用して、Shamirの秘密分散(SSS)に必要な多項式を共有することができる。SSSは、シークレット(秘密)が複数の部分に分割され、各参加者にそれ自体の固有の部分で提供される秘密分散の形式である。これらの部分は、シークレットを再構築するために使用され得る。一貫性のないシェアが異なるノード102に提供される場合、又は全てのノードにブロードキャストされるブラインドシェア(blinded share)とは異なるシェアがノードに秘密裏に送信される場合に、VSSは、ノード102によって悪意のあるノード102又はメンバーを特定するために使用され得る。一貫性のないシェアは、ノード102のいずれか1つによって識別され得る。シークレットのシェア(sharing)は、ノード102がそのシェアを一貫したものとして検証することを可能にする補助情報を含めることによって検証可能になり得る。
【0056】
個々のノードへの誤ったシェア(つまり、ブロードキャストされるブラインドシェアとは異なるシェア)の送信は、シェアの目的の受信ノードによって識別することができる。ノードに秘密裏に送信される誤ったシェアの識別は、公開される検証可能な秘密分散(PVSS:Publically Verifiable Secret Sharing)の手法を使用して、公開検証可能にすることができる。そのような手法は、PVSSが使用されておらず、且つ誤ったシェアの受信者がオフラインであるか、又は誤ったシェアが送信されたときにその受信者がネットワークの実質的な部分から切り離されている場合に発生し得る不正送信者の特定の遅延の可能性を回避することができる。
【0057】
異なるノードに一貫性のないシェアを提供する等の不正行為は、悪意のある行為を阻止するためにコングレス110によって対処され得る。例えば、あるノード102(図1)が他のノード102によって悪意のある関係者として特定されると、しきい値(例えば、t+1)を超える数のノード102(すなわち、コングレス・メンバーに関連するノード)が協力して悪意のある関係者を罰することができる。例えば、ノード102は、悪意のある関係者によってコングレスに預け入れられたデジタル資産(デジタル通貨、トークン、又は他の出資金や対価等)に関係して行動をとることができる。例えば、コングレスは、デジタル通貨、トークン、出資金や対価を支出不能アドレスに転送して焼却し(burn)、又はコングレスは、他のノードとのコンセンサスを得て悪意のある関係者への返却承認を拒否することにより、そのようなデジタル資産を没収し得る。不正行為を行っているノードではないノード102は、不正行為を行っているノードを排除するように協力することにより(例えば、キーシェアを効果的に無効にすることにより、例えば、コングレス・プロトコルへの参加からノードを除外することにより、又は秘密キーを再共有し且つ不正行為を行っているノードにシェアを割り当てないようにすることにより)、不正行為を阻止することもできる。
【0058】
上述したECDSA技術は、TEEを使用して強化することができる。例えば、Ibrahimらに基づくしきい値ECDSA署名技術は、ここではビザンチンの敵と呼ばれる強力な敵を想定している。このタイプの敵は、署名プロセスに参加するのを拒否し、且つ関係者に割って入って食い止めるのを拒否するだけでなく、誠実に参加するふりをして誤った情報を送信する等、恣意的に振る舞い得る。ただし、TEEを使用し、シークレット秘密キーシェアが格納されるTEEのエンクレーブ内で署名に使用されるデータを生成することにより、エンクレーブがかなりの数で危険に曝される可能性が非常に低いため、追加のセキュリティを提供してもよい。例えば、各TEEにキーシェアが1つしか割り当てられていない場合に、nが十分に大きいと仮定すると、危険に曝される可能性のあるTEEの数は、ビザンチンの敵に対する堅牢性のしきい値に到達しないことが合理的に予想され得る。これにより、キーシェアの総数に対して、悪意のある敵の僅かな割合に耐性がある場合に、プロトコルを安全にすることができる。
【0059】
例えば、全てのノードにTEEがある場合に、エンクレーブ内に格納されたシークレットの取得は、TEEの製造元が買収されてない限り、ノードへの物理アクセスのみによって多大な労力と費用をかけて達成され得る。このような製造元レベルの買収は管理可能であると予想される。例えば、製造元が複数の公開キーが正規のTEEに対応していると不誠実に主張した場合に、悪意のあるノードは、秘密キーシェアに直接的にアクセスして攻撃を開始する可能性がある。ただし、このような攻撃には、製造元が他のノードによる支援なしで有効な署名を作成できるようにするために、相当な数のキーシェアが必要となる。これは、出資総額の大部分を蓄積することを意味し、かなりの費用がかかる。さらに、攻撃を行うことにより、保有している出資金の大部分が破壊されるだろう。
【0060】
TEEを使用する場合に、「不正に関与する(corrupted:買収された)ノード」に対するプロトコルの堅牢性を熟慮することが有用である。不正に関与するノードとは、TEEの外部のハードウェアが不正に関与するが、TEEの完全性が損なわれていないノードである。不正に関与するノードは、エンクレーブが受信する情報と受信しない情報を制御することができる。特に、不正に関与するノードは、一時停止する可能性がある、つまり、プロトコルへの参加を控える可能性がある。プロトコルに提供される情報が、エンクレーブにおいて秘密裏に保持された秘密キーによって署名される必要がある場合(証明中に対応する公開キーが認証された場合)に、秘密キーはエンクレーブ自体と同じ位信頼できる。こうして、不正に関与するノードは、恣意的な(認証された)情報をプロトコルに送信できず、エンクレーブを一時停止又は不正に動作するようにだまして、例えば古い情報をエンクレーブに提供する等して干渉のみを試み得る。従って、不正に関与するノードの場合に、攻撃を成功させるには、完全な署名を生成するために十分な数の部分的な署名を集める必要があることになる。TEEでは、Ibrahimらのプロトコルは、2tの不正に関与するノードに対して堅牢である。n-2t>=2t+1の場合に署名を生成することができるため、サイズ2t+1<=(n+1)/2のキーシェアの有資格サブセットで十分である。従って、TEEを使用する場合に、不正に関与するノードが存在する場合に有効な署名を生成するために、しきい値署名方式のしきい値をキーシェアの50%以上の数になるように構成することができる。
【0061】
他のしきい値署名方式も使用することができる。例えば、しきい値署名方式は、Goldfederらの、“Securing Bitcoin Wallets Via a New DSA/EDCSA threshold signature scheme”, (2015)によって提案されたタイプのECDSAしきい値方式である。このプロトコルにより、t+1の関係者が有効な署名を生成することができる。その結果、敵が有効な署名を生成するために制御(管理)しなければならないキーシェアの数は、敵が秘密キーを再構築するために所有しなければならないキーシェアの数に等しくなる。この手法は、有効な署名を生成するために全会一致が必要な場合に効率的な方式を提供することができる。最も一般的なケースでは、この方式は、任意のしきい値に対して、nの中からt+1プレーヤーの可能なサブセットに対してプロトコル全体を繰り返す必要があるため、コングレス・メンバーの数に応じて指数関数的にスケーリングするスペース要件を課す。こうして、nとtとの両方の値が大きい場合に、多数のキーシェアを保存する必要がある。このようなストレージ要件を緩和するために、標準のビットコインのマルチ署名をしきい値署名と組み合わせることができる。特に、複数の署名を使用してデジタル資産をロックすると、各秘密キーがシェアに分割される。この手法は、スペース要件の観点から、より大きなコングレスをより効率的にする。スケーリング特性は、小規模な関係者サイズの中から複数のレベルで多数の参加者向けの方式を反復的に構成することによっても改善され得る。例えば、しきい値署名方式は、Cohenらの、Efficient Multiparty Protocols via Log-Depth Threshold Formulas (2013), Advances in Cryptology - CRYPTO 2013 pp 185-202の手法と組み合わせることもできる。
【0062】
非ECDSA署名方式を含む他のしきい値方式を使用してもよい。例えば、ノード110が、シュノア(Schnorr)方式に基づくしきい値方式を使用して、コングレス110を実施することができる。
【0063】
ブロックチェーン・ネットワーク100(図1)内のノード102(図1)は、選択されたしきい値署名方式に基づいてコングレス・プロトコルを実装することができる。そのようなノード102は、コングレス・プロトコルを実施する、メモリ220(図2)に格納されたコンピュータ実行可能命令を含むことができる。そのような命令は、プロセッサ210(図2)によって実行されると、ノード102(図2を参照して説明したタイプの電子装置200等)にコングレス・プロトコルの1つ又は複数の方法を実行させる。そのような方法は、図4図8及び図10の方法300、400、500、600、700、800、1000のいずれか1つ又は組合せを含むことができる。こうして、コングレス・プロトコルは、図4図8及び図10の方法300、400、500、600、700、800、1000の1つ又は複数を含むことができる。これらの方法は、ノードが他のコングレス・メンバーに関連する他のノードと協力して実行してもよい。
【0064】
コングレスの開始
ここで図3を参照すると、コングレス110を開始する方法300が示されている。方法300は、コングレス110をセットアップするために最初に信頼される関係者によって実行され得る。すなわち、最初に信頼される関係者に関連するノード102が、方法300を実行し得る。
【0065】
方法300は、動作302において、コングレス公開キーを提供するステップを含む。コングレス公開キーは、他のノード102に提供され、これら他のノードがコングレスへの参加を希望する場合に他のノードがコングレス公開キーに支払を行うことを可能にし得る。つまり、他のノードは、コングレスに参加するために、コングレス公開キーに関連するアドレスにデジタル資産を転送し得る。
【0066】
方法300を実行するノード102は、動作304において、1つ又は複数の条件が満たされるまで公開キーへの支払いを許可する。例えば、ノードは、決められた期間又は決められたブロック数の間に、公開キーへの支払いを許可し得る。条件が満たされた後(例えば、この期間の満了後又はブロック数のマイニング後)に、方法300を実行するノード102は、動作306において、コングレスの初期メンバーを特定する。
【0067】
コングレスの初期構成員を構成する関係者が特定された後に、動作307において、しきい値署名方式に従って秘密キーが秘密キーシェアに分割される。次に、動作308において、秘密キーシェアが、方法300を実行するノード102から特定された関係者に配信される。秘密キーシェアは、本明細書で説明するタイプのものであり得るしきい値署名方式に関連付けられる。
【0068】
動作308中に、コングレス・メンバーとして特定されたノード102は協力して、新しい秘密キーシェアと新しい公開キーとを生成する。最初に信頼される関係者によってそのようなノードに送信された元の(original)キーシェアは、コングレスプール内の全てのデジタル資産を新しい公開キーに送信するトランザクションに署名してブロードキャストするために使用され得、次にコングレス公開キーになる。すなわち、動作308中に、新しい公開グループアドレスが確立され、コングレスの管理下にあるデジタル資産がこの新しいアドレスに転送され、このアドレスが、グループの新しいアドレスとなり、且つコングレス公開キーに関連付けられる。この転送が確認された後に、コングレスはトラストレス(trustlessly:システム内の全当事者が何を正当な真実とするかについてコンセンサスを得るための仕組みが存在する)な運営を行うことができる。新しい公開グループアドレスは、コングレスへの参加を希望する他のノードから、又は上述したような他の目的のために、将来デジタル資産の預入金を受け取ることができるように形成される。ここで、コングレス・メンバーは、コングレスに登録されているとみなされ、これらのノードは、最初に信頼される関係者の支援なしで動作することができる。さらに、最初に信頼される関係者は、もはやコングレスの運営のあらゆる部分に関与しない。
【0069】
コングレスが開始された後のコングレスへの参加
ここで図4を参照すると、この図は、コングレスに参加する方法400を示している。図4の方法400は、図3の方法300と関連して動作し得るが、図4の方法400は、図3の方法300を実行するノードが運営する同じブロックチェーン・ネットワーク100(図1)で動作するノード102のうちの異なる1つによって実行される。図4の方法400は、動作402において、コングレス公開キーを取得するステップを含む。コングレス公開キーは、図3の方法300を実行するノード等の、コングレスを開始する関係者から直接的に取得することができる、或いは、例えばブロックチェーン・ネットワーク100(図1)の外部で動作する第三者システムを含む第三者から取得することができる。例えば、コングレス公開キーは、公衆インターネットを介してアクセス可能な公開Webサーバから取得することができる。
【0070】
方法400を実行するノード102は、動作404において、ノード102に関連するプライベートアカウントからコングレスアドレス(すなわち、コングレス公開キーに関連するアドレス)にデジタル資産のトランザクションをブロードキャストすることにより、コングレス公開キーに支払を行う。より具体的には、ノード102は、1つ又は複数のデジタル資産をコングレス公開キーに関連する公開グループアドレスに転送するトランザクションをブロードキャストする。公開グループアドレスは、コングレスプールのためのアドレスである。コングレスプールには、コングレスの他のメンバーに関連する他のデジタル資産が含まれる。こうして、動作404におけるトランザクションは、マイナー104(図1)によってブロックに追加されると、デジタル資産を、他のメンバーからのデジタル資産を含むコングレスプールに転送する。公開グループアドレスは、コングレスへの参加を希望する関係者からの転送と、コングレスへの参加を希望しない関係者からの転送との両方を受信する場合がある。コングレスへの参加を希望しない関係者は、デジタル資産をコングレスプールに転送し、そのようなデジタル資産は、コングレスが採用するしきい値署名方式を使用して、コングレスによる全体的、部分的、又は条件付き管理下に置かれ得る。
【0071】
動作404におけるトランザクションは、デジタル資産を転送する関係者がコングレスへの参加を希望し、そのような目的のために預け入れが行われていることを示すフラグ、識別子、又は他の属性を含み得る。
【0072】
デジタル資産をコングレスプールに預け入れた後に、動作406において、方法400を実行するノード102は、秘密キーシェアを受け取る。次に、ノード102は、動作408において、プロトコルの単一のインスタンスを実行することにより、秘密キーシェアを再生成する。秘密キーシェアの生成は、ノード102のTEE内で実行され得る。
【0073】
動作408において、ノード102は、しきい値署名方式で使用される秘密キーシェアを生成し、しきい値署名方式において、コングレスに代わってトランザクションの有効な署名を生成するために、少なくともしきい値の秘密キーシェアを使用しなければならない。秘密キーシェアの他の所有者は、それぞれのデジタル資産を公開グループアドレスに転送することにより、許可ベース又は非許可ベースでコングレスに参加したコングレスの他のメンバーである。
【0074】
秘密キーシェアを再生成するために、動作408において、既存のコングレス・メンバーは協力してキーシェアを更新することができる。例えば、ノード102は、次数tのランダム多項式を生成することができ、定数項はゼロ
【数1】
である。次に、ノード102は、ポイント
【数2】
を計算し、これを秘密キーシェアとして設定することができる。次に、ノード102は、この多項式
【数3】
上の点を既存の各コングレス・メンバーi=1,…,nに配信することができる。既存の各コングレス・メンバー(i=1,…,n)は、受信した値を自分の既存の秘密キーシェアに追加して、新しい秘密キーシェアを取得する。ここで、ノード102は、他の全てのメンバーと同等の秘密キーシェアを有しており、対応する公開キーは変更されないままである。上述したように、しきい値署名方式は、楕円曲線デジタル署名アルゴリズム又はシュノア方式に基づくしきい値方式を含む様々なタイプのものであり得る。
【0075】
秘密キーシェアは、TEE250(図2)内で生成してもよく、且つノード102に安全に格納され得る。例えば、秘密キーシェアは、TEE250に格納してもよい。
【0076】
秘密キーシェアがそれぞれのノードによって生成された後に、以前のコングレス公開キーの管理下にある資金(例えば、元のコングレス公開キーに関連する公開グループアドレスに転送された資金)が、(しきい値署名方式の下で有効な署名を生成するのに十分な数のグループノードの協力によって、)新しい秘密キーシェアに関連する新しいコングレス公開キーに転送される。
【0077】
動作408において、秘密キーシェアが生成された後に、その秘密キーシェアを方法400の動作410において使用してもよい。秘密キーシェアを使用して、(あるメンバーによってブロードキャストされ得る)公開グループアドレスからのトランザクションの有効な署名を協力して生成することができる。つまり、しきい値署名方式で秘密キーシェアを使用して、署名生成に寄与することができる。しきい値署名方式では、コングレスのしきい値数の秘密キーシェアをそれぞれのメンバーが使用して、デジタル資産をコングレスとは別の場所に(away from)転送できるようにする有効な署名を生成する必要がある。方法400を実行するノード102は、署名生成に寄与するために、ストレージから秘密キーシェアを検索し、この秘密キーシェアを使用することができる。十分な数の他のコングレス・メンバーもそれぞれの秘密キーを使用して署名の生成に寄与する場合に、署名が生成され、有効な支出トランザクションがブロードキャストされ得る。ブロックチェーン・ネットワーク100のマイナー104(図1)が、(ブロックチェーン・ネットワーク100内のノード102のコンセンサスによってブロックチェーンに追加される)マイニングされたブロックにトランザクションを追加し、ブロックが確認されると、支出トランザクションが完了する。この時点で、トランザクションにおいて表されるデジタル資産は、もはやコングレスの管理下にない可能性がある。つまり、そのようなデジタル資産は、コングレス公開キーによってもはや制限されなくなる可能性がある。
【0078】
動作408における秘密キーシェアの使用は、ノード102のTEE内で実行され得る。TEEは、システムの他の部分もメンバー自体も、エンクレーブに格納された秘密キーシェア等のあらゆるデータにアクセスできないように秘密キーシェアを保護する。さらに、TEEは、メンバーが預入金の引出しを望み、預入金を受け取る場合に、メンバーがメンバー預入金を返却する前に秘密キーの削除を証明する必要があるため、TEEが秘密キーのコピーを保持できないという点で、秘密キーを保護する。
【0079】
図4の方法400は、初期セットアップ段階中又はその後に実行することができる。すなわち、方法400は、初期キーシェアが配信される前(例えば、図3の方法300の動作308中)又はその後(例えば、以下でより詳細に議論する再バランス中)に実行され得る。
【0080】
動作410におけるトランザクションは、デジタル資産を、元々それらのデジタル資産をコングレスプールに預け入れた関係者に戻すように転送することができる。つまり、転送(移転)はデジタル資産を預入者に返却する場合がある。転送は、デジタル資産を他の場所に転送することもある。例えば、デジタル資産は、第三者又は支出不能アドレスに転送される場合がある。
【0081】
デジタル資産の没収
ここで図5を参照すると、デジタル資産を没収する例示的な方法500が示されている。図5の方法500は、ノード102によって実行してもよく、ノード102は、図4の方法400を実行するノードと同じであってもよい。方法500は、図4の方法400の動作408の後に実行され得る。そのため、ノード102は、図5の方法500が実行されたときに、秘密キーシェアに既にアクセスしている。
【0082】
動作502において、ノード102は、悪意のある関係者による悪意のある活動を検出する。悪意のある関係者は、コングレスの別のメンバーである可能性がある。悪意のある活動は、コングレス・メンバーが予め規定されたプロトコル又は基準に違反しているとノード102が判定したときに検出される。例えば、コングレスのメンバーであるノードが偽の情報(つまり、虚偽の、一貫性のない、又は容認できない情報)をコングレスの他のメンバーに報告する場合に、そのメンバーは悪意のあるメンバーとみなされ得る。
【0083】
動作503において、悪意のある活動の検出に応答して、ノード102は、コングレス内の他のノードと協力して、悪意のある関係者であるメンバーを一時保留状態にする(suspend)ことができる。つまり、コングレスは、悪意のある関係者をコングレスへの更なる参加から排除することができる。
【0084】
全てのノード102が予め規定されたプロトコル又は基準に準拠して動作することを保証するために、コングレスプールへのメンバー預入金は没収の対象となり得る。没収とは、没収されたとみなされるメンバー預入金の返却を永久に阻止することを意味する。悪意のある活動のために返却されない、メンバー預入金を形成するデジタル資産は、コングレスプールに残され得るが、(この措置を取るべきであるというコンセンサスに応じて)返却されない場合があり、別の支出不能アドレスに直ちに又は将来的に転送され、又は没収され得る。没収の性質は、コングレスがサイドチェーンの留め置き検証セットとして機能するかどうかに依存し得る。例えば、動作504において、悪意のある関係者による悪意のある活動を検出することに応じて、方法500を実行するノード102は、秘密キーシェアを使用して、没収トランザクション(デジタル資産を支出不能アドレス又は悪意のある活動を曝露する報酬として別のノードに転送するトランザクション)に関する部分的な署名を提供することができる。すなわち、ノードは、コングレスの他のノードと協力して、悪意のある関係者によって公開グループアドレス(つまり、コングレスプール)に以前転送されたデジタル資産の少なくとも一部を没収する。つまり、グループメンバーが予め規定されたプロトコル又は基準に違反していることを確認したことに応じて、秘密キーシェアは、そのグループメンバーに関連付けられ且つコングレスプール内に保持されている1つ又は複数のデジタル資産のトランザクションの承認に寄与するために利用される。
【0085】
しきい値署名方式がコングレス公開キーとともに使用されるため、単独で行動する個々のノードは、別のコングレス・メンバーのデジタル資産の預入金をコングレスプールとは別の場所(例えば、支出不能アドレスに)転送することができない。むしろ、デジタル資産は、デジタル資産を別のアドレスに転送するための有効な署名を生成するために、それぞれのメンバーがしきい値の数の秘密キーシェアを使用する場合に、又は少なくともしきい値の数の秘密キーシェアとなるグループのメンバーが、(動作503において)あるメンバーを一時保留状態にするコンセンサスに達した場合にのみ、転送によって没収され、保留状態されたメンバーからの引出し要求は自動的に無視される。デジタル資産が転送によって没収された場合に、デジタル資産が転送され得る他のアドレスは、支出不能アドレスに関連付けられ得る。例えば、この他のアドレスは、秘密キーが存在しないアドレスであってもよく、このアドレスの公開キーに結び付けられたデジタル資産に誰もアクセスできないようにすることができる。デジタル資産を支出不能アドレスに転送するトランザクションが確認された場合、又はデジタル資産を没収すべきというコンセンサスがサイドチェーンで得られた場合に、デジタル資産は、もはやコングレスの任意のメンバーによって又は実際にブロックチェーン・ネットワーク100内の任意のノードによって保留状態ではないので、デジタル資産は焼却されたとみなされ得る。
【0086】
従って、動作504において、ノードは、コングレスの他のメンバーと協力して秘密キーシェアを使用してトランザクションの支出不能アドレスへの有効な署名を生成することにより、デジタル資産を没収することができ、いくつかの実施態様では、あるメンバー預入金の全部又は一部を永久に取り上げるべきであるコンセンサスの達成を第2のブロックチェーンで伴うことができる。
【0087】
さらに、いくつかの実施態様では、コングレスは、プルーフオブステーク(proof-of-stake)のサイドチェーンを保護する留め置き検証セットとして機能し、このサイドチェーンは、ブロードキャストチャネルとして使用され得る。例えば、サイドチェーンのコングレス・メンバーが、あるメンバーが悪意を持って行動したというコンセンサスに達する場合がある。このコンセンサスは、悪意のある活動の犯罪的証拠を含むサイドチェーン・トランザクションの確認に対応する場合がある。コンセンサスが得られると、悪意のあるメンバーによって行われたメンバー預入金の引出し要求は拒否され、預入金は没収されたとみなされる。没収されたデジタル資産は、将来のある時点で焼却され得る。つまり、しばらくすると、しきい値数のメンバー(悪意のあるメンバーを含まない)が協力して、没収されたデジタル資産の支出不可能等レスへの転送を承認することができる。
【0088】
コングレスは、デジタル資産の預け入れによってブロックチェーン・ネットワーク100のノード102が参加できるオープングループであるため、グループ構成員は定期的に変更され得る。このような変更が発生すると、秘密キーシェアの配信が更新され得る。ここで図6を参照すると、秘密キーシェア配信を更新する例示的な方法600が示されている。方法600は、ブロックチェーン・ネットワーク100の他のノードと協力して、ブロックチェーン・ネットワーク100のノード102によって実行され得る。
【0089】
新しい公開アドレスを使用した秘密キーシェア配信の更新
方法600の動作602において、ノード102は、再配信要求を検出し、これは要求であり、その履行は、キーシェアの再配信を伴う。例えば、ノード102は、新しい見込みメンバーがデジタル資産を公開グループアドレスに移転したこと、又は既存のメンバーがメンバー預入金の引出しを要求したことを検出することができる。
【0090】
デジタル資産は、コングレスへの参加又はコングレスへの参加を増やすことを要求するノードと、コングレスへの参加を要求しないが、代わりに別の目的で(以下で説明するように、デジタル資産をサイドチェーンに転送する等で)デジタル資産をコングレスに転送する他のノードとによって、公開グループアドレスに転送され得る。動作602において、ノード102は、デジタル資産の公開グループアドレスへのトランザクションの少なくとも一部に含まれる1つ又は複数の属性を使用して、コングレス・メンバー(すなわち、コングレスに参加するためにデジタル資産をコングレス公開キーに転送する関係者であり、別の目的の関係者ではない)を識別することができる。例えば、特定のトランザクションは、トランザクションの属性を使用して特別なトランザクションとしてフラグが付けられる場合がある。このような属性(又は、その属性の有無)は、転送を行う目的を示している場合がある。例えば、転送者がコングレスへの参加を要求していない場合に、トランザクションにフラグを含めてもよい。
【0091】
動作602における要求の検出に応じて、その履行はキーシェアの再配信を伴い、動作604において、秘密キーシェアが図4の方法400の動作408において生成された方法と同様に、新しい秘密キーシェアがノード102によって生成される。コングレスの他のメンバーノードも、それぞれの秘密キーシェアを生成する。これらの秘密キーシェアは、新しいコングレス公開キーのしきい値署名方式で使用することができる。この時点でコングレスを退会するメンバーは、動作604中に新しい秘密キーシェアを生成せず、退会するメンバーには新しいコングレス公開キーで使用する秘密キーシェアが割り当てられないため、退会するメンバーは、コングレスに参加する能力を失い、もはらコングレス・メンバーとはみなされなくなる。
【0092】
さらに、再配信要求(これは、その履行がキーシェアの再配信を伴う要求である)の検出に応じて、動作606において、ノード102は、他のコングレス・メンバーと協力して、公開グループアドレス内の全てのデジタル資産を、新しい公開キーに関連する新しい公開アドレス(これが新しいコングレス公開キーになる)に転送する。
【0093】
こうして、図6の方法600によれば、預入金の配信が変更されたとき、又はあるメンバーから預入金を引き出す要求を受け取ったとき、秘密キーシェアが再生成され、コングレスの管理下にある全てのデジタル資産が新しい公開キーに移動され得る。コングレスの構成員を更新できる頻度は、ブロックチェーン・ネットワーク100のブロック時間によって制限され得る。多くのアプリケーションでは、低頻度での再バランスのみが必要であり得る。
【0094】
既存の公開グループアドレスを保持しながら秘密キーシェア配信を更新する
ここで図7を参照すると、秘密キーシェアの配信を更新する更なる例示的な方法700が示されている。方法700は、ブロックチェーン・ネットワーク100の他のノードと協力して、ブロックチェーン・ネットワーク100のノード102によって実行され得る。
【0095】
図7の方法700では、コングレス公開キーは、メンバー預入金の配信が変更される度に変更されない。(動作702において、デジタル資産の公開グループアドレスへの預け入れによって発生する可能性のある)新しいキーシェアを割り当てる要求が検出されると、ノード102は、コングレスの他のメンバーと協力して、(動作704において)同じ公開キーの新しい秘密キーシェアをグループの新しいメンバーに発行する。協力するノードの数は、少なくともしきい値署名方式でデジタル署名を生成するために必要なしきい値数のノードである。動作704において、追加のキーシェアが割り当てられる一方、他のキーシェアは同じままである。これは、(しきい値署名方式の)しきい値の変更を伴う場合があるが、実際にはその変更は小さい。あるいはまた、動作704において、他のキーシェアが更新されている間に、追加のキーシェアを割り当ててもよい。そのような更新には、以前生成したあらゆるキーシェアの削除の証明を伴う必要がある。この場合に、同じしきい値を維持しながら新しいシェアを割り当てることができる(SSSの文脈では、これには、次数が増加した新しい多項式での分散(sharing)が含まれる)。
【0096】
動作702において、ノード102は、デジタル資産の公開グループアドレスへのトランザクションの少なくとも一部に含まれる1つ又は複数の属性を使用して、コングレス・メンバー(すなわち、コングレスに参加するためにデジタル資産をコングレス公開キーに転送する関係者であり、別の目的の関係者ではない)を識別することができる。例えば、特定のトランザクションは、トランザクションの属性を使用して特別なトランザクションとしてフラグが付けられる場合がある。このような属性(又は、その属性の有無)は、転送を行う目的を示している場合がある。例えば、転送者がコングレスへの参加を要求していない場合に、トランザクションにフラグを含めてもよい。
【0097】
メンバーが方法700を使用するコングレスを退会するときに、メンバーは、自分の秘密キーシェアを安全に削除することができる。古いメンバーの秘密キーシェアが使用できないことを保証するために、コングレスのメンバーは、特別なTEEを有するノード102を使用することを要求される場合がある。TEEは、ハードウェアレベルで実装されるアーキテクチャであり、TEE内で実行される命令及びデータが、システムの残りの部分からのアクセス及び操作から保護されることを保証する。TEEは、ハードウェアメカニズムを使用して、コングレスの他のノード等の外部関係者に対してシステムの完全性を検証するために使用できるリモート認証の課題に対応することができる。
【0098】
各メンバーノードは、集積回路レベルでハードウェアを損なうことなくホストシステムにアクセスできないままである1つ又は複数のランダムシークレット値を生成するように構成された認定TEEを使用することができる。このようにして生成されたシークレット値は、(例えば、図4の方法400の動作410において)秘密キーシェアの配信生成で使用される。このシークレット値は、コングレスのセットアップ段階でシェアされる(shared)公開キーを確立するために使用することもできる。セットアッププロトコルに関連付けられた計算はTEEのエンクレーブ内で実行されるため、メンバー又は以前のメンバーは、メンバー間通信又は他の方法から自分又は他の秘密キーシェアに関する情報を得ることができない。TEE内のエンクレーブは、TEEエンクレーブが真正であり、承認されたコンピュータ可読命令を実行していることを他のノードに証明するために使用され得るリモート認証プロトコルを実行できるようにする。
【0099】
グループの変更に関連する計算は、TEEのエンクレーブ内で実行される。例えば、SSSの目的で新しい多項式を計算する際に使用され得る新しい安全なアランダムシークレットの生成は、TEEのエンクレーブ内で実行される。
【0100】
TEEのエンクレーブは、メンバー預入金を返却する前に、使用されなくなった以前のキーシェア及び以前のシークレットを安全に削除するのを保証することも目的としている。より具体的には、メンバー預入金を返却するために、認証プロトコルでは、TEEのエンクレーブがキーシェアの削除を証明することを要求する場合がある。各ノード102は、そのような証明を、必要な削除がリモート認証プロトコルを介して他のノードで発生したことの確認として解釈することができる。こうして、方法700は、コングレスを退会したメンバーのTEE内に以前保持されていた秘密キーシェアが、そのメンバーに関連するノードから削除されたことを確認するステップも含み得る。この確認は、秘密キーシェアの削除の証明を受信することで行うことができる。従って、リモート認証プロトコルを使用して、コングレスを退会したメンバーのTEE内に以前保持されていた秘密キーシェアの削除に対する認証を取得することができる。
【0101】
図6の方法600及び図7の方法700には、それぞれ様々な利点がある。例えば、図6の方法600は、安全な削除に依存せず、信頼できるハードウェアに依存する必要もない。しかしながら、図6の方法600は、状況によっては、このようなハードウェアによってキーシェアの悪意のあるプーリングをより起こりにくくし得るため、このようなハードウェアの恩恵を受け得る。
【0102】
図7の方法700は、構成員が変更される度に新しいコングレス公開キーの下でデジタル資産を再ロックする必要性を回避する。さらに、状況によっては、方法700は、図6の方法600よりも速く構成員を更新する場合がある。なぜなら、図7の方法700の下では、デジタル資産が新しい公開キーに移動されないため、全てのデジタル資産を新しい公開キーに移動するためにトランザクションをブロックチェーンに追加する必要はないからである。すなわち、公開キーが変更されないため、デジタル資産の新しい公開キーへの転送を確認するためにいくつかのブロックが生成されるのを待たずに、図7の方法700を使用して構成員を更新することができる。
【0103】
コングレスからの登録解除
上述したように、グループメンバーは時々コングレスからの退会を要求する場合があり、グループメンバーをコングレスから登録解除するときに、コングレスプールに預け入れたデジタル資産がそのグループメンバーに返却される場合がある。ここで図8を参照すると、預入金を返却する例示的な方法800がフローチャート形式で示されている。この方法は、コングレスの他のノード102と協力して、ノード102によって実行され得る。
【0104】
方法800の動作802において、ノード102は、コングレス・メンバーである要求者から引出し要求を受信する。引出し要求は、登録解除要求とも呼ばれ得る。引出し要求は、要求者によって以前預け入れられ、コングレスによって現在管理されているデジタル資産を引き出す要求である。要求は、要求者によって全てのコングレス・メンバーにブロードキャストされ得る。
【0105】
要求の受信に応じて、ノード102は、動作804において、決定された基準に対して要求を評価する。そのような基準は、予め規定された基準であり得る。コングレスが、グループの構成員が変更される度にコングレス公開キーが変更されないコングレス・プロトコルに従って動作する場合に、動作804において、ノード102は、秘密キーシェアが要求者によって削除されたことを確認することができる。このような確認は、TEEに関連するリモート認証プロトコルを使用して得ることができる。
【0106】
コングレス・プロトコルが、構成員が変更されたときにコングレス公開キーが変更されるものである場合に、秘密キーシェアはもはや有効ではないため、ノード102は、秘密キーシェアの削除を確認しない場合がある。代わりに、新しいコングレスキーが使用され、コングレスの管理下の他のデジタル資産が新しいコングレスキーに転送される場合がある。
【0107】
ノード102が評価に基づいて引出し要求を承認する場合に、動作806において、ノードはデジタル資産の引出しを容易にする。すなわち、ノード102は、その秘密キーシェアを使用してデジタル署名を協力して生成し、このデジタル署名を使用して、要求者によって以前に預け入れられたデジタル資産を要求者に戻す。例えば、デジタル資産は、デジタル資産を以前に受け取ったアドレスに送り返され得る。動作806は、しきい値署名方式に従って実行され、それにより、少なくともしきい値数のコングレス・メンバーが引出しを承認した場合にのみ引出しが行われる。動作806は、登録解除を希望するメンバーが一定期間活動を停止した後に実行される。この待機期間によって、メンバー預入金の返却のためのプロトコルを実行している間に、メンバーが不正行為に関与するのを防止する。
【0108】
スマートコントラクトに関してトラストレスな(trustless:中央主権型システムに頼らない)エージェント
コングレスは、様々な機能を実行するための安全なメカニズムを提供し、コングレス・プロトコルは様々な目的に使用することができる。一般的に、コングレスは、トラストレスの運営を行い、デジタル資産の所有権を管理する。
【0109】
コングレス・プロトコルは、例えば、スマートコントラクトに関してトラストレスなエージェントを提供するように使用することができる。より具体的には、コングレス・プロトコルを使用して、スマートコントラクト等のスクリプトを起動することができる。スマートコントラクトのアクティブ化は、スマートコントラクトの1つ又は複数の機能を実行させるためにスマートコントラクトを「突く(poke:アクティブにする)」ことができ、又はスマートコントラクトのアクティブ化は、スマートコントラクトに外部データを提供することができる。つまり、スマートコントラクトが実行されるブロックチェーン・ネットワークの外部にあるデータを、安全に取得し、且つコングレス・プロトコルを使用してスマートコントラクトと組み合わせて使用することができる。従って、コングレス・プロトコルを使用して、スマートコントラクトに関連するブロックチェーン・スクリプトの自律的な起動を提供する(つまり、このようなブロックチェーン・スクリプトを「突く」)か、又はそのようなブロックチェーン・スクリプトに外部データ(つまり、以前はブロックチェーンで利用可能でなかったデータ)へのアクセスを提供することができる。以下で詳細に説明するように、コングレス・プロトコルを使用して、ブロックチェーン・ネットワーク上のスマートコントラクトを突く人(pokers)及びスマートコントラクトのデータフィード(data feeds)を提供することができる。
【0110】
ここで図9を参照すると、ブロックチェーン・ネットワーク900上でスクリプトを起動するためのシステムがブロック図形式で示されている。このシステムは、図1のブロックチェーン・ネットワーク等のブロックチェーン・ネットワークのノードであり得る複数のノード102a、102b、102cを含む。ノード102は、複数のコングレス・ノード102aを含む。コングレス・ノードは、本明細書でコングレス110と呼ばれる、ブロックチェーン・ネットワーク900のグループに参加したノードである。コングレス・ノードは、図4を参照して上述した方法でグループに参加している場合がある。
【0111】
図9のシステム内のノードのうちの少なくとも1つは、要求者ノード102bである。要求者ノード102bは、スクリプトの起動要求を発するノードである。このような要求には、報奨金として機能するデジタル資産の預け入れが伴う場合がある。より具体的には、デジタル資産は、分配のためにノード同士の間で保持され、要求の履行を容易にすることができる。例えば、報奨金は、要求の履行を支援する情報提供システム同士の間に、及び参加によってプロトコルにセキュリティ及び信頼性を提供するコングレス・メンバー同士の間で分配される。
【0112】
要求は、外部データ(つまり、ブロックチェーン・ネットワークで未だ利用できないデータ)を取得し、且つそのようなデータをスマートコントラクト等のスクリプトに提供するための要求であり、又はそうでなければ、そのようなスクリプトを起動する要求であり得る。例えば、要求は、指定された条件が満たされたときにスマートコントラクトを突く(例えば、特定の時間に又は外部データが指定された条件を満たしたとき等に、スマートコントラクトをアクティブにする)ための要求である。
【0113】
ブロックチェーン・ネットワーク900のノードは、情報提供ノード102cとも呼ばれ得る複数の情報提供システムも含む。これらの情報提供ノード102cは、要求者ノード102bによって発せられた要求を履行する又はその履行を支援することを目的とする電子装置である。例えば、情報提供ノード102cは、ウェブサーバ等の外部データソースからデータを検索するように動作することができる。
【0114】
以下でより詳細に説明するように、情報提供ノードが一般に要求者ノードによって発せられた要求を満たすように機能するが、コングレス・ノードは協力してセキュリティ及び信頼性を提供する。例えば、コングレス・ノードは、要求の履行を目的として、情報提供ノードによって実行又は提供される情報又は行動の精度を高めるように動作することができる。
【0115】
従って、ブロックチェーン・ネットワーク100(図1)内のノード102(図1)は、スマートコントラクト等のスクリプトを起動する又はスクリプトの起動を容易にするために、トラストレスなエージェントプロトコルを実装することができる。そのようなノード102は、そのようなプロトコルを実装するメモリ220(図2)に格納されたコンピュータ実行可能命令を含むことができる。そのような命令は、プロセッサ210(図2)によって実行されると、ノード102(図2を参照して説明したタイプの電子装置200等)にプロトコルの1つ又は複数の方法を実行させる。そのような方法は、図3図8図10及び図11の方法300、400、500、600、700、800、1000、又は1100のいずれか1つ又はこれらの組合せを含むことができる。
【0116】
ここで図10を参照すると、この図は、要求者ノード102b(図9)によって実行され得る方法を示している。図10の方法は、要求者による方法(requester method)1000と呼ばれ得る。要求者ノード102bは、ブロックチェーン・ネットワーク上のスマートコントラクトの関係者等の、スクリプトに関連するノードであり得る。
【0117】
要求者による方法1000(図10)の動作1002において、要求者ノード102bは要求を発する。要求は、スマートコントラクト等のスクリプトを起動する要求である。要求は、スクリプトを安全且つ確実にアクティブにする代わりに、ブロックチェーン・ネットワーク100に関連するデジタル資産の形態で報奨金を提供する。要求には、スクリプト状態に関連する公開キー等の、要求に関連するスクリプトの識別子;スクリプトを起動するために使用される情報提供システムの最小数を指定し得る最小参加者情報;スクリプトの起動を容易にするためにコングレスに提供されるマイニング料金等の料金情報;及び/又はコンセンサスデータからの許容可能な変動量及び/又はスクリプトの起動で使用される外部データに関する情報を規定するしきい値インジケータ;の1つ又は複数を含む様々な情報が含まれ得る。上述したデータの代わりに、又はこのデータに加えて、他のデータを要求に含めることができる。
【0118】
要求は、ブロックチェーンの外部(つまり、「チェーン外」)から発せれる場合がある。例えば、インターネット経由でアクセス可能なWebサーバで要求を発することができる。例えば、取引所で要求を発することができる。取引所は、複数の要求者ノードからの複数の要求が公表されるサーバであり得る。
【0119】
要求者による方法1000の動作1004において、要求者ノード102bは、1つ又は複数のコングレスが要求を受け入れたことを判定する。すなわち、要求者ノード102bは、(複数のコングレス・ノード102aから構成される)コングレスが要求に従ってスクリプトを起動することを申し出たことを判定する。
【0120】
要求者ノード102bは、動作1006において、要求を受け入れた1つ又は複数のコングレスを選択することができる。要求者ノード102bは、例えば、各コングレスの評判データを1つ又は複数のしきい値に対して評価してもよい。評判データは、例えば、要求の完了を容易にするために関連するコングレスに以前参加した他の要求者ノード102bによって提供されるレーティング又は他のメトリックに基づいてもよい。
【0121】
要求者ノード102bは、要求を受け入れたコングレスのうちの単一のコングレスを選択してもよく、或いは要求者ノード102bは、複数のそのようなコングレスを選択してもよい。要求者ノード102bは、要求を受け入れた全てのコングレス又はそのようなコングレスのサブセットを選択してもよい。複数のコングレスを選択することにより、選択されたコングレスを互いに効果的に競争させることができる。
【0122】
要求者による方法の動作1008において、要求者ノードは、選択されたコングレスに関連するコングレスプールに支払われるトランザクション(ブロックチェーン・トランザクションと呼ばれ得る)をブロードキャストする。トランザクションには、要求を受け入れ、且つ動作1006で選択されたコングレスに関連する公開グループアドレスに支払われる報奨金がデジタル資産の形態で含まれている。トランザクションには、要求に関連するデータへのリンクが含まれ得る。例えば、リンクは、要求に関する情報を保存するサーバへのリンクであり得る。そのような情報には、例えば、スクリプト状態に関連する公開キー等の要求に関連するスクリプトの識別子;スクリプトを起動するために使用される情報提供システムの最小数を指定し得る最小参加者情報;スクリプトの起動を容易にするためにコングレスに提供されるマイニング料金等の料金情報;コンセンサスデータからの許容可能な変動量及び/又はスクリプトの起動で使用される外部データに関する情報、又は他の情報、条件、要件を規定するしきい値インジケータが含まれ得る。
【0123】
報奨金を含むトランザクションは時間ロックされるため、トランザクションは将来の指定された時間においてのみ有効になる。時間ロックにより、指定された時間が経過するまで、トランザクションがブロックチェーンに追加されない場合がある。
【0124】
要求の完了を容易にするために複数のコングレスが(動作1006において)選択された場合に、トランザクションは報奨金をロックし、それによって要求を最も早く完了したコングレスのみが報奨金を請求できるようにする。
【0125】
ここで図11を参照すると、コングレスの方法1100が示されている。コングレスの方法1100は、コングレスの他のノードと協力して、コングレスのノードによって実行され得る。すなわち、コングレスのノードは、コングレスの他のノードと協力して方法1100を実行するためのコンピュータ実行可能命令で構成してもよい。つまり、コングレスの方法1100は、コングレスに参加してコングレス・ノードになっている1つ又は複数のノードによって実行され得る。より具体的には、ブロックチェーン・ネットワーク内のノードは、トランザクションをコングレスプールにブロードキャストすることにより、コングレス・ノードのグループで形成されるコングレスに参加することができる。トランザクションは、1つ又は複数のデジタル資産の制御(管理)をコングレスに転送(移転)する。そのようなデジタル資産は、預け入れ行うメンバーのメンバー預入金として機能し、且つ図5を参照して上述したように没収の対象となる。コングレスに参加するための技術は、特に図4を参照して、上記でより詳細に説明している。
【0126】
ノードがコングレスに参加してコングレス・ノードになった後に、図11の方法1100は、そのコングレス・ノードが同じコングレスの他のコングレス・ノードと協力して、実行され得る。
【0127】
動作1102において、コングレス・ノードは要求を識別する。要求は、図10の要求者による方法1000の動作1002において発せられた要求であり得る。
【0128】
動作1104において、コングレス・ノードは、コングレスの他のノードと協力して、要求を受け入れる。要求の受け入れは、要求を発した要求者ノードに通知され得る。コングレス・ノードは、要求を受け入れる前に互いに協力して、要求を受け入れるかどうかを決定するように構成することができる。例えば、コングレス・ノードは、要求を受け入れるかどうかについてコンセンサスを得る場合がある。例えば、秘密キーシェアを使用することにより、コンセンサスを得る場合がある。つまり、コングレス・メンバーは秘密キーシェアを使用して、要求を受け入れるかどうかについて実際上投票することができる。少なくともしきい値数の秘密キーシェアが要求を受け入れるために実際上投票するように使用される場合に、要求はコングレスによって受け入れられる。この投票手順は、例えば、サイドチェーン(つまり、メインブロックチェーンではないブロックチェーン)で発生し得る。
【0129】
コングレスが要求者からの要求を受け入れてスクリプトを起動した後に、コングレス・ノードは、動作1106において、要求に関連する報奨金を含む、要求者からのトランザクションを検出することができる。すなわち、コングレス・ノードは、要求者による方法1000の動作1008においてブロードキャストされたトランザクションがブロックチェーンに追加されたことを判定することができる。前述したように、動作1008においてブロードキャストされたトランザクションは、特定の時間までそのトランザクションをブロックチェーンに追加しないように、時間ロックされる場合がある。そのような場合に、動作1106は、その時間の後に実行される。
【0130】
動作1008においてブロードキャストされたトランザクション(「第1のトランザクション」と呼ばれ得る)が、コングレス・ノードによって確認済みと判定されると(少なくともしきい値数のブロックがその第1のトランザクションの上部に作成された後に発生し得る)、ノードは、コングレスプール(つまり、コングレスに関連する公開グループアドレス)に支払われるトランザクション(「第2のトランザクション」と呼ばれ得る)を(動作1108において)準備し、そのトランザクションを発行(publish)する。
【0131】
第2のトランザクションは、複数の情報提供システム(例えば、図9の情報提供ノード102c)がトランザクションに入力を追加できるように構成され得る。例えば、第2のトランザクションは、SIGHASH_ALL|SIGHASH_ANYONECANPAYに署名することができる。SIGHASH_ALLは、署名スクリプトを除くトランザクション全体に署名するデフォルトの署名ハッシュタイプであり、署名された部分の変更を防止する。SIGHASH_ANYONECANPAYは、現在の入力のみに署名する署名ハッシュタイプである。
【0132】
次に、情報提供ノード102c等の情報提供システムは、要求の完了をコミット(commit)することができる。そのために、情報提供システムは第2のトランザクションに追加する。例えば、情報提供システムは、情報提供システムが保持するデジタル資産を第2のトランザクションへの入力として追加する。そのようなデジタル資産は、情報提供システムが要求に従って、且つプロトコルに従って動作することを保証するために、セキュリティとして情報提供システムによって提供される(つまり、それらデジタル資産は保証金(security deposit)として保持される)。
【0133】
また、情報提供システムは、プルーフオブソリューションデータ(proof of solution data)をメタデータとして第2のトランザクションに追加する。例えば、要求に対するソリューションに基づいたハッシュを第2のトランザクションに追加することができる。ソリューションは、例えば、インターネット経由で、又はスクリプトの操作に必要な別のデータソースから利用可能なデータ等の外部データであり得る。そのような場合に、プルーフオブソリューションデータは、外部データに基づくハッシュであり得る。ハッシュは、情報提供システムの公開キー及び/又はセキュリティのためのソルト(salt)に基づいてもよい。ソルトは、ハッシュ関数への追加入力として使用されるランダムデータである。例として、第2のトランザクションは、情報提供システムによって、HASH(q+PK+s)として決定されるメタデータを含むように更新され、ここで、qはソリューションであり、PKは情報提供システムの公開キーであり、sはソルトである。
【0134】
コングレスは、1つ又は複数の予め規定された条件が満たされるまで、第2のトランザクションへの参加をオープンにしたままにしてもよい。予め決定された条件は、例えば、時間ベースの条件であってもよい。例えば、予め規定された条件には、第2のトランザクションの発行から少なくともしきい値の時間が経過したときに参加を終了する場合がある。すなわち、情報提供システムには、参加できる一定の時間が提供され得る。その期間が満了すると、情報提供システム(ノード)は、もはや参加が許可されなくなる場合がある。
【0135】
予め規定された条件は、少なくともしきい値数の情報提供システムの参加を必要とし得る。すなわち、第2のトランザクションへの参加は、少なくともしきい値数の情報提供システムが、それぞれの預入金を第2のトランザクションへの入力として追加することにより要求を完了することにコミットするまでオープンのままにされ得る。
【0136】
参加をオープンのままにするための予め規定された条件は、コングレスによって規定してもよいし、又は要求者によって規定してもよい。例えば、要求者は、要求に予め規定された条件を含めることができる。
【0137】
動作1110において、予め規定された条件が満たされたと判定した後(例えば、情報提供システムによって入力がトランザクションに追加された後)に、コングレスは、情報提供システムの参加をロックする。すなわち、方法1100を実行するコングレス・ノードは、他のコングレス・ノードと協力して、更なるコミットメントを第2のトランザクションに追加するのを防ぐことができる。コングレス・ノードは、他のコングレス・ノードと協力して第2のトランザクションを使う(つまり、第2のトランザクションのロックを解除する)ことにより、そうすることができる。より具体的には、コングレス・ノードは、そのような他のコングレス・ノードと協力して、そのコングレス・ノードが保持する秘密キーシェアを使用して、トランザクションに関するトランザクションを使うための有効な暗号署名を協力して生成することができる。そのようなコングレス・ノードは、しきい値署名方式に従って有効な署名が生成されるまで、それぞれの秘密キーシェアに基づいて生成された部分的な署名を追加することにより協力してもよい。第2のトランザクションがマイニングされ、且つその第2のトランザクションの上部に十分な数のブロックが追加され、それが確認されると、トランザクションは使われた(spent)とみなされる。
【0138】
第2のトランザクションは、要求の完了をコミットした情報提供システムのレジスタとして機能する。つまり、第2のトランザクションは、要求に対するソリューションがあることを示し、且つソリューションを提供することにコミットした情報提供システムのレジスタとして機能する。第2のトランザクションは、参加している各情報提供システムから預入金を収集し、且つ情報提供システムが送信しようとしているプルーフオブソリューションを提供するようにも機能し、それによって後で値が変更できなくなり、他の参加者により値をコピーできないようにする。
【0139】
第2のトランザクションが使われた後に、動作1112において、コングレス・ノードが、入力を第2のトランザクションに追加した複数の情報提供システムからデータを受信することができる。例えば、各情報提供システムによって提案されたソリューションは、ここで、情報提供システムによってコングレス・ノードに提供される。ソリューションqは、情報提供システムによって第2のトランザクションに追加されたハッシュで使用される他の情報とともに送信され得る。例えば、ソリューションqは、情報提供システムの公開キーPK及びソルトsとともに提供され得る。
【0140】
動作1112でデータを受信した後に、コングレス・ノードは、ソリューションqがコミットされたソリューション(すなわち、第2のトランザクションのプルーフオブソリューションデータによって特定されたソリューション)に対応することを確認してもよい。例えば、コングレス・ノードは、ソリューションq、公開キーPK、及びソルトsに対してハッシュ(つまり、HASH(q+PK+s))を実行することができる。このハッシュを第2のトランザクションのハッシュと比較して、ソリューションがコミットされたソリューションに対応しているかどうかを判定することができる。ソリューションがコミットされたソリューションに対応していない場合(例えば、生成されたハッシュが第2のトランザクションのハッシュに対応していない場合)に、ソリューション(つまり、そのソリューションを表すデータ)は破棄され、方法1000の以下の動作は使用されない。
【0141】
動作1114において、コングレス・ノードは、他のコングレス・ノードと協力して、要求に対する正しいデータ(例えば、正しいソリューション)を特定する。コングレス・ノードは、例えば、複数の情報提供システムから受信したデータの中心点を決定することができる。例えば、データが数値を表す場合に、中心点は、動作1112において情報提供システムから受信した全ての値の平均値であり得る(すなわち、中心点は、受信した全ての値の平均として決定され得る)。更なる例として、いくつかの実施形態では、中心点は、情報提供システムから受信した最も一般的な値又は解であり得る(すなわち、中心点は、受信した全ての値のモード(最頻値)として決定され得る)。更なる例として、いくつかの実施形態では、中心点は、情報提供システムから受信した中間値であり得る(すなわち、中心点は、受信した全ての値の中央値として決定され得る)。中心点は、要求者から受信したデータに基づいて決定され得る。例えば、要求者は、中心点を特定するために使用される技術を指定することができ、動作1114において、コングレスは、指定された技術を使用することができる。
【0142】
中心点は、コングレス・ノードのコンセンサスによって選択され得る。一例として、中心点の決定はサイドチェーンで行われ得、コングレス・ノードは、それぞれの秘密キーシェアを使用して、中心点を表すトランザクションの有効な署名を協同して生成することができる。有効な署名が生成されると、これは、コングレスが中心点に関して合意に達したことを示している。
【0143】
動作1116において、コングレス・ノードは、コングレスの他のノードと協力して、正しいデータを提供した情報提供システムを特定する。すなわち、コングレス・ノードは、要求の履行を意図してデータを提供した情報提供システムのサブセットを特定することができる。サブセットは、動作1114において特定された正しいデータに十分に近いデータを提供した情報提供システムで構成される。例えば、ノードは、サブセットとして、動作1114において特定された中心点付近のデータを提供した情報提供システムを特定することができる。状況によっては、データを提供した全ての情報提供システムが正しいデータを提供した可能性があり、他の状況では、そのような情報提供システムの一部のみが正しいデータを提供した可能性がある。
【0144】
正しいデータに十分に近いデータを提供した情報提供システムを特定するために、しきい値を使用してもよい。しきい値は、要求者が指定することができる。例えば、要求者によって発せられた要求には、しきい値インジケータが含まれる場合がある。しきい値インジケータは、要求自体に含めることも、要求にリンク付けすることもできる。つまり、要求は、しきい値インジケータを規定する、サーバ上のデータ等のデータにリンク付けしてもよい。しきい値インジケータは、要求される精度を規定し、正しい情報を送信したとみなされる情報プロバイダーのサブセットを特定するために使用することができる。例えば、しきい値インジケータは、与えられたデータが正しいと判定すべき正しいデータに十分に近いかどうかを判定するために使用されるパーセンテージ又は他のメトリックを指定してもよい。正しいデータからしきい値量以内のデータを提供した情報提供システムは、動作1116において十分に正しいデータを提供したと判定され、且つ正しいデータを提供したと特定される。
【0145】
場合によっては、正しいデータと一致するデータのみが正しいとみなされる。すなわち、場合によっては、正しいデータに一致するデータのみが、正しいと判定すべき正しいデータに十分に近いとみなされるように、しきい値インジケータをゼロに設定してもよい。つまり、しきい値インジケータがゼロに設定されている場合に、データは、有効とみなされるように正しいデータと同じでなければならない。
【0146】
動作1118において、コングレス・ノードは、他のコングレス・ノードと協力して、要求に関連するスクリプトを起動する。コングレス・ノードは、正しいデータに基づいてスクリプトを起動することができる。例えば、コングレス・ノードは、動作1114において決定されたデータの中心点に基づいてスクリプトを起動することができる。コングレス・ノードは、要求に関連するスクリプトをロック解除するトランザクションをブロックチェーン・ネットワークに送信するために協力する。トランザクションには正しいデータが含まれ、トランザクションは、スクリプト内のコードに従ってこのデータを使用し得る。
【0147】
動作1120において、コングレス・ノードは、コングレスの他のノードと協力して、動作1106において検出されたトランザクションで受信した報奨金を分配する。より具体的には、トランザクションは、報奨金の一部を、十分に正しいデータを提供したと判定された各情報提供システム(要求に応じてデータを提供する全ての情報提供システムのサブセット、又は要求に応じて全てのそのようなシステムが正しいデータを提供する場合の全ての情報提供システムであり得る)にブロードキャスト転送することができる。例えば、コングレス・ノードは、コングレスを形成するノードのグループの他のコングレス・ノードと協力して、サブセット内の各情報提供システムへのデジタル資産の転送を許可してもよい。トランザクションは、コングレス公開キーによって制限されたデジタル資産を、十分に正しいデータを送信した情報提供システムに関連する公開キーに転送する。トランザクションに署名するために、コングレス・ノードは、その秘密キーシェアを使用して、(しきい値署名方式に従って有効な署名を生成するのに十分なそれぞれの秘密キーシェアを使用する)他のコングレス・ノードと協力して有効な署名を生成する。トランザクションは、1人又は複数のコングレス・メンバーに報奨金の一部を分配することもできる。
【0148】
コングレス・ノードは、コングレスの他のノードと協力して、情報提供システムによって提供された預入金の少なくとも一部を返却する場合もある。例えば、コングレス・ノードは、しきい値署名方式に従って他のコングレス・ノードと協力して生成された有効な署名が含まれるトランザクションをブロードキャストすることができる。要求によって、十分に正しいデータを提供した情報提供システムに預入金を返却する場合がある。十分に正確なデータを提供しなかった情報提供システムの預入金は没収される場合がある。つまり、そのような預入金は返却されない場合がある。例えば、十分に正しいデータを提供しなかったノードの預入金は、十分に正しい値を提供したノード同士の間で分配され得る。
【0149】
上述した方法は、一般にノードで実行されるものとして説明しているが、この方法の機能は、他のノードとの協力に依存しており、他の場所で実行することができる。
【0150】
上述した実施形態は、本発明を限定するのではなく例示するものであり、当業者は、添付の特許請求の範囲によって規定されるように本発明の範囲から逸脱することなく、多くの代替実施形態を設計できることに留意されたい。特許請求の範囲において、括弧内に置かれた参照符号は、特許請求の範囲を限定するものとして解釈してはならない。「備える、有する、含む(comprising, comprises)」等の語は、請求項又は明細書全体に列挙されているもの以外の要素又はステップの存在を排除するものではない。本明細書において、「備える、有する、含む(comprises, comprising)」は、「含む、有する(includes, including)」又は「から構成される(consists of, consisting of)」を意味する。要素の単数形の参照は、そのような要素の複数形の参照を除外するものではなく、その逆も同様である。本発明は、いくつかの別個の要素を含むハードウェアによって、及び適切にプログラムされたコンピュータによって実施され得る。いくつかの手段を列挙する装置クレームでは、これらの手段のいくつかは、ハードウェアの同一のアイテムによって具現化され得る。特定の手段が互いに異なる従属請求項に記載されているという単なる事実は、これらの手段の組合せが有利に使用できないことを示すものではない。
【0151】
以下に、出願当初の特許請求の範囲の内容を実施例として記載しておく。
[実施例1]
コンピュータで実施される方法であって、当該コンピュータで実施される方法は、
ブロックチェーン・ネットワーク内のノードによって、トランザクションをコングレス(congress)プールにブロードキャストして、ノードのグループで形成されるコングレスに参加するステップと、
前記コングレスが要求者からのスクリプトを起動する要求を受け入れた後に、前記ノードによって、前記コングレスプールに関連する公開キーで暗号ロックされたブロックチェーン・トランザクションを準備するステップであって、前記ブロックチェーン・トランザクションは、複数の情報提供システムが前記ブロックチェーン・トランザクションに入力を追加できるように構成される、準備するステップと、
前記入力が前記ブロックチェーン・トランザクションに追加された後に、前記グループの他のノードと協力する前記ノードによって、前記ブロックチェーン・トランザクションの有効な暗号署名を協力して生成し、前記ブロックチェーン・トランザクションをロック解除するステップと、
前記トランザクションがロック解除された後に、前記複数の情報提供システムからデータを受信するステップと、
前記複数の情報提供システムから受信した前記データの中心点を決定するステップと、
前記コングレスの他のノードと協力する前記ノードによって、前記中心点に基づいて前記スクリプトを起動するステップと、を含む、
コンピュータで実施される方法。
[実施例2]
前記中心点に基づいて、前記ノードによって、前記中心点付近のデータを提供した前記情報提供システムのサブセットを特定するステップと、
前記グループの他のノードと協力する前記ノードによって、前記サブセット内の各情報提供システムへのトークンの転送を許可するステップと、をさらに含む、請求項1に記載のコンピュータで実施される方法。
[実施例3]
前記転送に含まれる前記トークンには、前記要求者から前記コングレスプールに受け取られた1つ又は複数のトークンが含まれる、請求項2に記載のコンピュータで実施される方法。
[実施例4]
前記要求にはしきい値インジケータが含まれ、前記サブセットは、前記しきい値インジケータに基づいて特定される、請求項2又は3に記載のコンピュータで実施される方法。
[実施例5]
前記しきい値インジケータは前記要求者から受信される、請求項4に記載のコンピュータで実施される方法。
[実施例6]
前記入力には、それぞれのプルーフオブソリューションデータ(proof of solution data)が含まれ、
当該方法は、前記プルーフオブソリューションデータに基づいて、前記情報提供システムの少なくとも1つから受信した前記データが、コミットされたソリューションに対応することを判定するステップをさらに含む、請求項1乃至5のいずれか一項に記載のコンピュータで実施される方法。
[実施例7]
前記入力には、それぞれのプルーフオブソリューションデータが含まれ、
当該方法は、
前記情報提供システムの少なくとも1つから受信した前記データが、その情報提供システムから受信した前記プルーフオブソリューションデータと対応していないと判定するステップと、
前記情報提供システムの前記少なくとも1つから受信した前記データが、前記プルーフオブソリューションデータに基づいて、コミットされたソリューションに対応していないと判定された場合に、前記データを破棄するステップと、をさらに含む、請求項1乃至5のいずれか一項に記載のコンピュータで実施される方法。
[実施例8]
前記入力には、保証のためにロックされるトークンが含まれる、請求項1乃至7のいずれか一項に記載のコンピュータで実施される方法。
[実施例9]
前記情報提供システムは、前記ブロックチェーン・トランザクションに、公開キー、前記要求に対するソリューション、及びソルト(salt)に基づくハッシュを含む、請求項1乃至8のいずれか一項に記載のコンピュータで実施される方法。
[実施例10]
前記複数の情報提供システムから受信した前記データには、公開キー、前記要求に対するソリューション、及びソルトが含まれ、
当該方法は、
前記公開キー、前記要求に対するソリューション、及び前記ソルトに基づいて、ハッシュを生成するステップと、
該生成されたハッシュと、前記ブロックチェーン・トランザクションに含まれる前記ハッシュとを比較するステップと、をさらに含む、請求項9に記載のコンピュータで実施される方法。
[実施例11]
悪意のある関係者による悪意のある活動を検出するステップであって、前記悪意のある関係者は前記コングレスの前記ノードのうちの1つである、検出するステップと、
秘密キーシェアを使用して、前記悪意のある関係者によって前記コングレスプールに以前に転送されたトークンの少なくとも一部を没収するステップと、をさらに含む、請求項1乃至10のいずれか一項に記載のコンピュータで実施される方法。
[実施例12]
前記没収するステップには、支出不能アカウントに転送するステップが含まれる、請求項11に記載のコンピュータで実施される方法。
[実施例13]
実行されると、請求項1乃至12のいずれか一項に記載の方法を実行するようにプロセッサを構成するコンピュータ実行可能命令を含む、コンピュータ可読記憶媒体。
[実施例14]
電子装置であって、当該電子装置は、
インターフェイス装置と、
該インターフェイス装置に結合されたプロセッサと、
該プロセッサに結合されたメモリであって、実行されると、請求項1乃至12のいずれか一項に記載の方法を実行するようにプロセッサを構成するコンピュータ実行可能命令を格納したメモリと、を有する、
電子装置。
[実施例15]
前記プロセッサは、信頼できる実行環境を含み、前記コンピュータ実行可能命令は、前記信頼できる実行環境内で実行される、請求項14に記載の電子装置。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11