(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-12
(45)【発行日】2022-12-20
(54)【発明の名称】ブロックチェーントランザクションのセキュリティ強化オリジネーション
(51)【国際特許分類】
H04L 9/32 20060101AFI20221213BHJP
H04L 9/14 20060101ALI20221213BHJP
G06F 21/62 20130101ALI20221213BHJP
【FI】
H04L9/32 200B
H04L9/14
G06F21/62 363
(21)【出願番号】P 2020531111
(86)(22)【出願日】2018-12-12
(86)【国際出願番号】 IB2018059922
(87)【国際公開番号】W WO2019116250
(87)【国際公開日】2019-06-20
【審査請求日】2021-11-18
(32)【優先日】2017-12-15
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】バルトルッチ,シルビア
(72)【発明者】
【氏名】ベルナト,ポリーヌ
(72)【発明者】
【氏名】ジョセフ,ダニエル
【審査官】中里 裕正
(56)【参考文献】
【文献】特表2012-527838(JP,A)
【文献】米国特許出願公開第2017/0178127(US,A1)
【文献】VENKATAKRISHNAN, S., FANTI, G. and VISWANATH, P.,Dandelion: Redesigning the Bitcoin Network for Anonymity,Proc. of the ACM on Measurement and Analysis of Computing Systems,2017年06月,Vol.1 No.1,pp.1-34
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/32
H04L 9/14
G06F 21/62
JSTPlus/JMEDPlus/JST7580(JDreamIII)
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
コンピュータに実装される方法であって、所与のプロキシノードによって、
コンピュータネットワークを介して、発信元ノードによって生成され、かつ、部分的に署名されたトランザクションを受信するステップであり、
前記トランザクションは、第1入力と、第1出力および第2出力とを含み、
前記第1入力は、(x+r)単位の計算資源を取り、
前記第1出力は、出力アドレスに対してx単位を提供し、かつ、前記第2出力は、複数の第2秘密鍵のうち任意の1つを使用して、アンロック可能なn個のマルチ署名アドレスのうち1つに対して(d+r)単位を提供し、
前記第2秘密鍵それぞれは、複数のプロキシノードのうちそれぞれ1つに関連付けられており、
前記複数のプロキシノードは、前記所与のプロキシノードを含み、かつ、
前記第2秘密鍵それぞれは、前記プロキシノードの非対称暗号化鍵ペアの秘密鍵、および、前記プロキシノードが前記発信元ノードと共有する秘密の値に基づいて、前記複数のプロキシノードのうちそれぞれ1つによって導出することができる、
ステップと、
前記トランザクションをブロードキャストし、かつ、前記トランザクションがブロックチェーンに含まれるようにするために、前記所与のプロキシノードに対して割り当てられるべき計算資源の量である、t単位を選択するステップ、および、前記トランザクションを前記ブロックチェーンに含めるために、第三者に対して割り当てられるべき計算資源の量である、f単位を選択するステップであり、
f<r、かつ、t<(r-f)である、
ステップと、
(d+f)単位を取る第2入力を前記トランザクションに追加することによって生成される、更新されたトランザクションにデジタル署名するステップと、
前記プロキシノードの前記第2秘密鍵を使用して前記n個のマルチ署名アドレスのうち1つから供給される(d+r)単位を取る入力、および、前記所与のプロキシノードに対してt単位を提供する出力を含む、さらなるトランザクションを生成し、かつ、デジタル署名するステップと、
前記更新されたトランザクションおよび前記さらなるトランザクションを、両方が前記ブロックチェーンの同じブロックに含まれるように時間を合わせてブロードキャストするステップと、
を含む、方法。
【請求項2】
前記トランザクションを受信するステップは、前記トランザクションの識別子を受信するステップを含む、
請求項1に記載の方法。
【請求項3】
前記更新されたトランザクションの前記ブロードキャスト、および、前記さらなるトランザクションの前記ブロードキャストは、実質的に同時に発生している、
請求項1または2に記載の方法。
【請求項4】
前記トランザクションの前記受信した識別子は、前記所与のプロキシノードの公開鍵を使用して暗号化されている、
請求項1乃至3いずれか一項に記載の方法。
【請求項5】
前記トランザクションを前記ブロックチェーンに含めるために前記第三者に対して割り当てられるべき計算資源の量である前記f単位は、前記コンピュータネットワークを介して受信した指示に基づいて選択される、
請求項1乃至4いずれか一項に記載の方法。
【請求項6】
前記指示は、前記発信元ノードから受信される、
請求項5に記載の方法。
【請求項7】
前記トランザクションを前記ブロックチェーンに含めるために前記第三者に対して割り当てられるべき計算資源の量である前記f単位は、前記トランザクションを前記ブロックチェーン内の次のブロックに含まれるようにすることに基づいて選択される、
請求項1乃至6いずれか一項に記載の方法。
【請求項8】
前記トランザクションを前記ブロックチェーンに含めるために前記第三者に対して割り当てられるべき計算資源の量である前記f単位、および、前記トランザクションをブロードキャストするために前記所与のプロキシノードに対して割り当てられるべき計算資源の量である前記t単位のうち少なくとも1つは、さらに、前記さらなるトランザクションを前記ブロックチェーン内の次のブロックに含まれるようにすることに基づいて選択される、
請求項1乃至7いずれか一項に記載の方法。
【請求項9】
前記発信元ノードは、公開鍵および秘密鍵を含む、関連する非対称暗号化鍵ペアを有し、かつ、
前記発信元ノードと前記所与のプロキシノードとの間で共有される前記秘密の値は、秘密鍵および前記所与のプロキシノードの前記公開鍵に基づいて前記発信元ノードによって、かつ、秘密鍵および前記発信元ノードの前記公開鍵とに基づいて前記所与のプロキシノードによって、導出することができる、
請求項1乃至8いずれか一項に記載の方法。
【請求項10】
前記非対称暗号化鍵ペアは、楕円曲線鍵ペアであり、かつ、
前記発信元ノードと特定のプロキシノードとの間で共有される秘密の値を確立することは、楕円曲線ディフィー・ヘルマン(ECDH)鍵交換に対応している、
請求項1乃至9いずれか一項に記載の方法。
【請求項11】
コンピューティングデバイスであって、
プロセッサと、
メモリと、
ネットワークインターフェイスと、
コンピュータ実行可能命令を保管する非一時的コンピュータ読取り可能記憶媒体であり、前記プロセッサによって命令が実行されると、請求項1乃至10いずれか一項に記載の方法を、前記コンピューティングデバイスに実行させる、非一時的コンピュータ読取り可能記憶媒体と、
を含む、コンピューティングデバイス。
【請求項12】
コンピュータ実行可能命令を保管する非一時的コンピュータ読取り可能記憶媒体であり、コンピューティングデバイスのプロセッサによって命令が実行されると、請求項1乃至10いずれか一項に記載の方法を、前記コンピューティングデバイスに実行させる、非一時的コンピュータ読取り可能記憶媒体。
【請求項13】
コンピュータに実装される方法であって、発信元ノードによって、
プロキシノードに関連付けられた第1公開鍵、および、前記発信元ノードと前記プロキシノードとの間で共有される秘密の値に基づいて、複数のプロキシノードそれぞれについて第2公開鍵を決定するステップであり、
前記プロキシノードそれぞれについて対応する第2秘密鍵は、所与のプロキシノードによって、前記発信元ノードと前記所与のプロキシノードとの間で共有される秘密の値、および、前記所与のプロキシノードに関連付けられ、かつ、前記所与のプロキシノードに関連付けられた前記第1公開鍵に基づいて、決定することができる、
ステップと、
前記発信元ノードによって、入力と、第1出力および第2出力とを含むトランザクションを生成するステップであり、
前記入力は、(x+r)単位を取り、
前記第1出力は、出力アドレスに対してx単位を提供し、かつ、前記第2出力は、前記第2秘密鍵のうち任意の1つを使用して、アンロック可能なn個のマルチ署名アドレスのうち1つに対して(d+r)単位を提供する、
ステップと、
前記トランザクションに電子署名するステップと、
前記署名されたトランザクションをネットワーク経由で前記プロキシノードに対して分配するステップと、
を実行する、方法。
【請求項14】
前記署名されたトランザクションを分配することは、
前記トランザクションの識別子を送信すること、を含む、
請求項13に記載の方法。
【請求項15】
前記署名されたトランザクションの前記識別子を前記プロキシノードに対して分配することは、
前記署名されたトランザクションの前記識別子に係るそれぞれの指示を前記プロキシノードそれぞれに対して送信すること、を含む、
請求項13または14に記載の方法。
【請求項16】
前記プロキシノードのうち所与の1つに対して送信される前記それぞれの指示は、前記プロキシノードの公開鍵を使用して暗号化される、
請求項15に記載の方法。
【請求項17】
前記発信元ノードは、公開鍵および秘密鍵を含む、関連する非対称暗号化鍵ペアを有し、かつ、
前記発信元ノードと前記所与のプロキシノードとの間で共有される前記秘密の値は、秘密鍵および前記所与のプロキシノードの前記公開鍵に基づいて前記発信元ノードによって、かつ、秘密鍵および前記発信元ノードの前記公開鍵とに基づいて前記所与のプロキシノードによって、導出することができる、
請求項13乃至16いずれか一項に記載の方法。
【請求項18】
前記非対称暗号化鍵ペアは、楕円曲線鍵ペアであり、かつ、
前記発信元ノードと特定のプロキシノードとの間で共有される秘密の値を確立することは、楕円曲線ディフィー・ヘルマン(ECDH)鍵交換に対応している、
請求項13乃至17いずれか一項に記載の方法。
【請求項19】
コンピューティングデバイスであって、
プロセッサと、
メモリと、
ネットワークインターフェイスと、
コンピュータ実行可能命令を保管する非一時的コンピュータ読取り可能記憶媒体であり、前記プロセッサによって命令が実行されると、請求項13乃至18いずれか一項に記載の方法を、前記コンピューティングデバイスに実行させる、非一時的コンピュータ読取り可能記憶媒体と、
を含む、コンピューティングデバイス。
【請求項20】
コンピュータ実行可能命令を保管する非一時的コンピュータ読取り可能記憶媒体であり、コンピューティングデバイスのプロセッサによって命令が実行されると、請求項13乃至18いずれか一項に記載の方法を、前記コンピューティングデバイスに実行させる、非一時的コンピュータ読取り可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本特許出願は、一般的に、ネットワーク通信および暗号化に関する。より特定的には、ブロックチェーンネットワークに対するブロックチェーントランザクションの通信、および、それらの通信のオリジン(origin)を不明瞭にするための暗号技術の使用に関する。ブロックチェーンネットワークにおけるトランザクションの導入(introduction)に関連する発信元ノード(originator node)のアイデンティティを不明瞭にすることは、プライバシーおよびセキュリティを強化し得る。
【背景技術】
【0002】
この文書において、用語「ブロックチェーン(“blockchain”)」は、あらゆる形態の電子的、コンピュータベース、分散型の台帳(ledgers)を含むように使用されている。これらは、合意に基づく(consensus-based)ブロックチェーンおよびトランザクションチェーン技術、許可された(permissioned)および許可されていない(un-permissioned)台帳、共有された(shared)台帳、および、それらの変形を含んでいる。ブロックチェーン技術の最も広く知られているアプリケーションはビットコイン台帳であるが、他のブロックチェーン実装が提案され、そして開発されてきている。ビットコインは、ここにおいて、便宜上および例示のためだけに参照され得るものであり、一方、本出願の技術的事項(subject matter)は、ビットコインブロックチェーンを用いた使用に限定されるものではないこと、および、代替的なブロックチェーン実装およびプロトコルは本出願の範囲内にあることが留意されるべきである。ここにおいて使用されるように用語「ビットコイン(“Bitcoin”)」は、全てのバージョンのビットコインおよびビットコインプロトコルから派生する全てのバリエーションを含む。
【0003】
ブロックチェーンは、コンピュータベースの分散化システム(decentralized system)として実装されるピアツーピア(peer-to-peer)の電子台帳であり、順番にトランザクションで構成されるブロックから構成されている。各トランザクションは、ブロックチェーンシステムにおけるアドレス間のデジタル資産の制御(control)の移転を符号化するデータ構造であり、そして、少なくとも1つの入力および少なくとも1つの出力を含んでいる。各ブロックは、その発端(inception)からブロックチェーンに対して書き込まれてきた全てのトランザクションについて永続的で、変更不可能なレコード(record)を作成するために、そのブロックに対して一緒にチェーン化される以前のブロックのハッシュ(hash)を含んでいる。
【0004】
ブロックチェーンは、多種多様なアプリケーションにおいて使用することができる。例えば、ブロックチェーンは、1つまたはそれ以上の商品(commodities)の所有権(ownership)を反映する台帳を提供することに採用することができる。例えば、ビットコインブロックチェーンにおいて、台帳は、ビットコインおよびその一部(fractions)の所有権を反映している。いくつかのそうした商品は、例えば、計算資源の単位(units)といった、基礎となる(underlying)単位を表すことができる。所有権を反映しているブロックチェーンベースの台帳により、商品は、偽匿名で(pseudo-anonymously)当事者間で移転することができ、ブロックチェーン上のトランザクションは、いずれかの当事者(party)の個人を識別する(personally-identifying)情報を含んでいない。
【0005】
特に、所与のトランザクションの出力がアドレスに対して送付されてよく、そのアドレスは特定の当事者の公開鍵(public key)に対応している。これらの出力は、そのアドレスに対応する公開鍵のカウンターパート(counterpart)である秘密鍵によってアンロック(unlocked)されて、次いで、関連する当事者によってさらなるトランザクションへに対する入力として使用され得る。
【0006】
ブロックチェーンの永続的または不変の性質は、所与のトランザクションに含まれるアドレスが永久的に、公けに(publicly)利用可能であることを意味している。
【0007】
分散化システムに参加している様々なノードまたはコンピュータシステムに対してトランザクションを導入するためには、そのトランザクションを分配(distribute)する必要がある。この分配は、例えば、プロトコルを使用することができ、それによって、分散化システムに参加している様々なノード間の接続を用いてオーバーレイネットワークが形成される。そして、ゴシッププロトコル(gossip protocol)を使用することができ、それによって、ノードは所与のトランザクションをオーバーレイネットワークにおける隣接ノードに対して分配する。
【0008】
いずれにしても、トランザクションが最終的にどのようにネットワーク内で伝播されるかにかかわらず、分配のためには、そのトランザクションを分散化システムの中へ導入または注入する必要がある。この導入は、必然的にネットワーク通信を必要とし、そして、従って、例えばインターネットプロトコル(IP)アドレスといった、ネットワークレベルにおいてトランザクションの発信元に関する情報を明らかにする副作用を有し得る。もし、そうした情報を別の当事者がブロックチェーン上で使用される特定のアドレスと相関させることができる場合には、たとえ複数の公けのアドレスが使用されても、ある当事者のアイデンティティ(identity)を構成するか、または、その当事者に関連する全てのトランザクションを追跡するために使用することができる。
【0009】
従って、トランザクションのネットワーク発信元(network origin)を不明瞭にしながら、ブロックチェーン上にトランザクションを含めることを可能にするソリューションを提供することが望ましい。
【発明の概要】
【0010】
そうした改善されたソリューションが、今では考案されてきている。
【0011】
本出願は、添付の請求項において定義される方法およびシステムを提供する。
【0012】
本出願は、コンピュータに実装される方法を記載する。これは、所与のプロキシノードによって実装され得る。本方法は、コンピュータネットワークを介して、発信元ノードによって生成され、かつ、部分的に署名されたトランザクションを受信するステップであり、前記トランザクションは、第1入力と、第1出力および第2出力とを含み、前記第1入力は、x+r単位の計算資源を取り、前記第1出力は、出力アドレスに対してx単位を提供し、かつ、前記第2出力は、複数の第2秘密鍵のうち任意の1つを使用して、アンロック可能なn個のマルチ署名アドレスのうち1つに対してd+r単位を提供し、前記第2秘密鍵それぞれは、複数のプロキシノードのうちそれぞれ1つに関連付けられており、前記複数のプロキシノードは、前記所与のプロキシノードを含み、かつ、前記第2秘密鍵それぞれは、前記プロキシノードの非対称暗号化鍵ペアの秘密鍵、および、前記プロキシノードが前記発信元ノードと共有する秘密の値に基づいて、前記複数のプロキシノードのうちそれぞれ1つによって導出することができる、ステップと、
前記トランザクションをブロードキャストし、かつ、前記トランザクションがブロックチェーンに含まれるようにするために、前記所与のプロキシノードに対して割り当てられるべき計算資源の量(quantity)である、t単位を選択するステップ、および、前記トランザクションを前記ブロックチェーンに含めるために、第三者に対して割り当てられるべき計算資源の量である、f単位を選択するステップであり、f<r、かつ、t<(r-f)である、ステップと、
d+f単位を取る第2入力を前記トランザクションに追加することによって生成される、更新されたトランザクションにデジタル署名するステップと、
前記プロキシノードの前記第2秘密鍵を使用して前記n個のマルチ署名アドレスのうち1つから供給されるd+r単位を取る入力、および、前記所与のプロキシノードに対してt単位を提供する出力を含む、さらなるトランザクションを生成し、かつ、デジタル署名するステップと、
前記更新されたトランザクションおよび前記さらなるトランザクションを、両方が前記ブロックチェーンの同じブロックに含まれるように時間を合わせてブロードキャストするステップと、を含む。
【0013】
いくつかの実装において、前記トランザクションを受信するステップは、前記トランザクションの識別子を受信するステップを含み得る。
【0014】
いくつかの実装において、前記更新されたトランザクションの前記ブロードキャスト、および、前記さらなるトランザクションの前記ブロードキャストは、実質的に同時に発生し得る。
【0015】
いくつかの実装において、前記トランザクションの前記受信した識別子は、前記所与のプロキシノードの公開鍵を使用して暗号化され得る。
【0016】
いくつかの実装において、前記トランザクションを前記ブロックチェーンに含めるために前記第三者に対して割り当てられるべき計算資源の量である前記f単位は、前記コンピュータネットワークを介して受信した指示に基づいて選択され得る。本表示は、発信元ノードから受信することができる。
【0017】
いくつかの実装において、前記トランザクションを前記ブロックチェーンに含めるために前記第三者に対して割り当てられるべき計算資源の量である前記f単位は、前記トランザクションを前記ブロックチェーン内の次のブロックに含まれるようにすることに基づいて選択され得る。
【0018】
いくつかの実装において、前記トランザクションを前記ブロックチェーンに含めるために前記第三者に対して割り当てられるべき計算資源の量である前記f単位、および、前記トランザクションをブロードキャストするために前記所与のプロキシノードに対して割り当てられるべき計算資源の量である前記t単位のうち少なくとも1つは、さらに、前記さらなるトランザクションを前記ブロックチェーン内の次のブロックに含まれるようにすることに基づいて選択され得る。
【0019】
いくつかの実装において、前記発信元ノードは、公開鍵および秘密鍵を含む、関連する非対称暗号化鍵ペアを有し、かつ、前記発信元ノードと前記所与のプロキシノードとの間で共有される前記秘密の値は、秘密鍵および前記所与のプロキシノードの前記公開鍵に基づいて前記発信元ノードによって、かつ、秘密鍵および前記発信元ノードの前記公開鍵とに基づいて前記所与のプロキシノードによって、導出することができる。
【0020】
いくつかの実装において、前記非対称暗号化鍵ペアは、楕円曲線鍵ペアであってよい。前記発信元ノードと特定のプロキシノードとの間で共有される秘密の値は、楕円曲線ディフィー・ヘルマン(ECDH)鍵交換に対応している、ということであってよい。
【0021】
本出願は、さらに、プロセッサと、メモリと、ネットワークインターフェイスと、コンピュータ実行可能命令を保管する非一時的コンピュータ読取り可能記憶媒体と、を含むコンピューティングデバイスを記載する。命令は、前記プロセッサによって実行されると、上記に説明された方法を前記コンピューティングデバイスに実行させる。
【0022】
本出願は、さらに、コンピュータ実行可能命令を保管する非一時的コンピュータ読取り可能記憶媒体を記載する。命令は、コンピューティングデバイスのプロセッサによって実行されると、上記に説明された方法を前記コンピューティングデバイスに実行させる。
【0023】
本出願は、さらに、発信元ノードによって実施されるコンピュータに実装される方法を記載する。本方法は、プロキシノードに関連付けられた第1公開鍵、および、前記発信元ノードと前記プロキシノードとの間で共有される秘密の値に基づいて、複数のプロキシノードそれぞれについて第2公開鍵を決定するステップであり、前記プロキシノードそれぞれについて対応する第2秘密鍵は、所与のプロキシノードによって、前記発信元ノードと前記所与のプロキシノードとの間で共有される秘密の値、および、前記所与のプロキシノードに関連付けられ、かつ、前記所与のプロキシノードに関連付けられた前記第1公開鍵に基づいて、決定することができる、ステップと、
前記発信元ノードによって、入力と、第1出力および第2出力とを含むトランザクションを生成するステップであり、前記入力は、x+r単位を取り、前記第1出力は、出力アドレスに対してx単位を提供し、かつ、前記第2出力は、前記第2秘密鍵のうち任意の1つを使用して、アンロック可能なn個のマルチ署名アドレスのうち1つに対して+r)単位を提供する、ステップと、
前記トランザクションに電子署名するステップと、前記署名されたトランザクションをネットワーク経由で前記プロキシノードに対して分配するステップと、を実行する。
【0024】
いくつかの実装において、前記署名されたトランザクションを分配することは、前記トランザクションの識別子を送信することを含み得る。
【0025】
いくつかの実装において、前記署名されたトランザクションの前記識別子を前記プロキシノードに対して分配することは、前記署名されたトランザクションの前記識別子に係るそれぞれの指示を前記プロキシノードそれぞれに対して送信することを含み得る。
【0026】
いくつかの実装において、前記発信元ノードは、公開鍵および秘密鍵を含む、関連する非対称暗号化鍵ペアを有し、かつ、前記発信元ノードと前記所与のプロキシノードとの間で共有される前記秘密の値は、秘密鍵および前記所与のプロキシノードの前記公開鍵に基づいて前記発信元ノードによって、かつ、秘密鍵および前記発信元ノードの前記公開鍵とに基づいて前記所与のプロキシノードによって、導出することができる。
【0027】
いくつかの実装において、前記非対称暗号化鍵ペアは、楕円曲線鍵ペアであってよい。前記発信元ノードと特定のプロキシノードとの間で共有される秘密の値を確立することは、楕円曲線ディフィー・ヘルマン(ECDH)鍵交換に対応している、ということであってよい。
【0028】
本出願は、さらに、プロセッサと、メモリと、ネットワークインターフェイスと、コンピュータ実行可能命令を保管する非一時的コンピュータ読取り可能記憶媒体と、を含むコンピューティングデバイスを記載する。命令は、前記プロセッサによって実行されると、上記に説明された方法を前記コンピューティングデバイスに実行させる。
【0029】
本出願は、さらに、コンピュータ実行可能命令を保管する非一時的コンピュータ読取り可能記憶媒体を記載する。命令は、コンピューティングデバイスのプロセッサによって実行されると、上記に説明された方法を前記コンピューティングデバイスに実行させる。
【図面の簡単な説明】
【0030】
本発明に係る1つの態様または実施形態に関連して説明される任意の特徴は、また、1つまたはそれ以上の他の態様/実施形態に関しても使用され得る。本発明に係るこれら及び他の態様は、ここにおいて説明される実施形態から明らかであり、そして、それを参照して解明されるだろう。これから、単なる例示として、そして、添付の図面を参照して、本発明の実施形態が説明される。
【
図1】
図1は、ブロックチェーンネットワークと通信する発信元ノードを示している。
【
図2】
図2は、一式のプロキシノードを介して、
図1のブロックチェーンネットワークと通信する
図1の発信元ノードを示している。
【
図3】
図3は、1つの例示的なコンピューティングデバイスを示している。
【
図4】
図4は、
図1の発信元ノードによって実行され得るといった、1つの例示的な方法を説明するフローチャートである。
【
図5】
図5は、
図4の例示的な方法に従って、発信元ノードによって生成され、かつ、署名され得るといった、ブロックチェーントランザクションを示している。
【
図6】
図6は、
図2の1つまたはそれ以上のプロキシノードによって実行され得るといった、1つの例示的な方法を説明するフローチャートである。
【
図7】
図7は、
図5のブロックチェーントランザクションの更新された形態を示している。
【
図8】
図8は、
図6の例示的な方法に従って、プロキシノードによって生成され得るといった、さらなるブロックチェーントランザクションを示している。
【0031】
同様なエレメント(element)および特徴を示すために、図面においては、同様な参照符号が使用されている。
【0032】
本出願において、用語「及び/又は(“and/or”)」は、列挙されたエレメントの全ての可能な組み合わせ及び副結合(sub-combination)をカバーするように意図されており、列挙されたエレメントだけ、任意の副結合、または、全てのエレメントのうち任意の1つを含んでおり、そして、必ずしも追加のエレメントを排除していない。
【0033】
本出願において、フレーズ「少なくとも1つの・・・又は・・・(“at least one of… or…”)」は、列挙されたエレメントのうち任意の1つまたはそれ以上をカバーするように意図されており、列挙されたエレメントだけ、任意の副結合、または、全てのエレメントのうち任意の1つを含んでおり、必ずしも追加のエレメントを排除しておらず、そして、必ずしも全てのエレメントを必要としていない。
【発明を実施するための形態】
【0034】
概要
多くのブロックチェーンベースのシステムは、しばしば、匿名(anonymous)と考えられている。例えば、ビットコインといった、種々の台帳システムは、しばしば、匿名と考えられている。なぜなら、それにより、当事者に個人情報または識別情報を開示することなく、当事者が、1つまたはそれ以上の商品の単位(units)を送信および受信することができるからである。そうしたシステムは、しかしながら、匿名よりも擬似匿名とみなされ得る。当事者のアイデンティティは、ブロックチェーンにおいて当事者によって使用されるアドレスがその当事者の実際のアイデンティティと関連している限りにのみ、保護されるからである。
【0035】
1つの特定の例においては、特定の当事者と関連付けられたIPアドレスが、その当事者の匿名性を危うくする(compromise)ために使用することができ得る。例えば、悪意のある敵対者(malicious adversary)は、特定の当事者が関与するブロックチェーントランザクションを追跡できるように、公開鍵をIPアドレスにリンクしようと試みるかもしれない。追加的または代替的に、IPアドレス情報は、例えば、インターネットフォーラムおよびソーシャルメディアからといった、他のソースからの情報を検索するためのインデックスとしてそれを使用することによって、当事者の実際のアイデンティティを検索するための労力において使用され得る。そうした状況においては、例えば、ブロックチェーントランザクションの異なるセットについて複数の公開鍵と秘密鍵のペアを生成すること、または、オペレーションの匿名性を高めるための手段としてミキシングサービスに参加すること、といった軽減策(attempted mitigations)は、成功しないかもしれない。-例えば、S.B.Venkatakrishnan、G.Fanti、およびP.Viswanath共著の、arXivプレプリントarXiv:1701.0439 “Dandelion: Redesigning the Bitcoin Network for Anonymity”(2017)を参照のこと。その内容は、ここにおいて参照によりその全てが包含されている。
【0036】
上述のように、いくつかのブロックチェーンアプリケーションにおいて、トランザクションは、オーバーレイネットワークを通じて伝搬され得る。ブロックチェーントランザクションのモニタリングおよび拡散(diffusion)に関与する、そうした1つのオーバーレイネットワークにおけるノードは、「スーパーノード(“super nodes”)」として参照され得る。匿名化を奪う(de-anonymization)攻撃は、そうした「スーパーノード」を使用して実行され得る。例えば、ビットコインブロックチェーンネットワークの特定の例において、ネットワークにわたる対称的な拡散(symmetric diffusion)は、ピアツーピア(P2P)オーバーレイネットワークのグラフ構造及びそのネットワーク上のブロックチェーントランザクションの拡散に関連する所定の情報を搾取する技術を使用して、特定のIPを特定の公開鍵に対してリンクすることにおいて30%の成功率を可能にする。A.Biryukov、D.Khovratovich、およびI.Pustogarov共著の、2014 ACM SIGSAC Conference of Computer and Communications Securityの会報(pp.15-29)における“Deanonymisation of clients in Bitcoin P2P network”(2014年11月)を参照のこと。その内容は、ここにおいて参照によりその全てが包含されている。
【0037】
ブロックチェーンアプリケーションの領域を越えて、特定の通信に関連するIPアドレスを不明瞭にすることを可能にする試みが行われてきている。一つの例として、Torといった匿名中継ツール(anonymous relay tool)は、現在利用できる最も強力なアイデンティティ保護のうち1つを提供するが、それでも弱点および可能な欠点を示している。Torの説明は、例えば、R.Dingledine、N.Mathewson、およびP.Syverson共著で、ワシントンDCのNaval Research Labからの“Tor:The second-generation onion router”(2004)において見い出され得る。Torといった中継システムは、トラフィック分析に対して攻撃されやすいことがある。例えば、ユーザのTorへの「最初のホップ(“first-hop”)」リンクおよびTorからユーザの通信パートナーへの「最後のホップ(“last-hop”)」リンクがトレースされ、そして、パケットを相関させるために使用され得ること、といったものである。そうした攻撃は、ユーザの匿名性を危険にさらす可能性がある。
【0038】
上記を考慮すると、例えば、TCP/IPプロトコルのレベルといった、基礎となるネットワークのレベルにおいて、ブロックチェーンネットワークにおけるユーザのアイデンティティを保護または不明瞭にする必要性が存在している。
【0039】
図1は、ブロックチェーンネットワーク110と通信する発信元ノード(originator node)100を示している。
【0040】
発信元ノード100は、コンピューティングデバイスである。
【0041】
ブロックチェーンネットワーク110は、通信コンピューティングデバイス(図示なし)から構成されるオーバーレイネットワークである。例えば、ブロックチェーンネットワーク110は、ピアツーピア(P2P)方式で通信するコンピューティングデバイスから形成され得る。
【0042】
一つの例において、発信元ノード100は、例えば、ビットコインノードであってよく、そして、ブロックチェーンネットワーク110は、例えば、ビットコインネットワークであってよい。特定の例において、発信元ノード100は、例えば、スーパーノード(図示なし)と通信するビットコインノードであってよく、スーパーノードは、ブロックチェーンネットワーク110を形成しているコンピュータシステムのうち1つである。
【0043】
発信元ノード100はブロックチェーンネットワーク110と直接的に通信しているので、例えば、発信元ノード100のIPアドレスといった、潜在的にネットワークを識別する情報がブロックチェーンネットワーク110に曝されている(exposed)。そうした潜在的にネットワークを識別する情報の全て又は一部を曝すことを避けるのが望ましくあり得る。
【0044】
一つのソリューションにおいては、プロキシノードとして動作している、別のコンピュータシステムが、例えば、発信元ノード100のIPアドレスといった、ネットワークを識別する情報を不明瞭にするように、発信元ノード100に代わってブロックチェーンネットワーク110の中へトランザクションを導入するために使用され得る。プロキシノードを使用することは、しかしながら、多くの技術的なチャレンジを提起する。
【0045】
例えば、潜在的に、ブロックチェーントランザクションのブロードキャストを開始または完了する前を含めて、プロキシノードがオフラインになり、利用不能にすることがあり得る。
【0046】
別の例においては、プロキシノードがビジーまたはオーバーロード(overload)になることがあり得る。ビジーまたはオーバーロードになったトランザクションノードは、許容できないレイテンシ(latency)を持ち込み、かつ/あるいは、大きなキュー(queue)を維持するためのリソースを欠くため、処理のためにキューイングされたブロックチェーントランザクションを余儀なく破棄することがあり得る。
【0047】
これらのチャレンジのうち1つまたはそれ以上は、プロキシノードのグループを使用することによって克服され得る。
【0048】
このようにして、冗長性が提供され得る。1つより多いプロキシノードを使用することは、単一のノードを使用することと比較して、システムを故障に対してより回復力に富む(resilient)ようにすることができる。このように、回復力(resilience)およびセキュリティが強化されている。加えて、1つより多いプロキシノードを使することは、負荷を分散するために役立ち得る。さらに、1つより多いプロキシノードを使用することは、ブロックチェーントランザクションのオリジンをさらに不明瞭にするために役立ち得る。これは、単一のプロキシノードが、継続的に(ongoing basis)、発信元ノードのためのエージェントとして作用することを回避し得るからである。
【0049】
複数のプロキシノードを伴うそうした構成(arrangement)を提供することは、しかしながら、多くの技術的なチャレンジを提起し得る。
【0050】
最初に、ブロックチェーントランザクションは、アドレス間での価値(value)の移転に対応することができる。例えば、ブロックチェーントランザクションは、1つまたはそれ以上の送信元(source)アドレスから1つまたはそれ以上の宛先アドレスへの計算資源の単位の移転に対応することであり得る。1つまたはそれ以上の発信元アドレスは、発信元ノード100に対応する当事者と関連付けられ得る。特定の例において、ブロックチェーントランザクションは、ビットコイントランザクションであってよい。
【0051】
プロキシが、発信元ノードに代わって、ブロックチェーントランザクションをネットワークの中へ導入するために使用される場合は、トランザクションをブロックチェーン内に包含するように成功裡に通信するために、いくつかの数量(amount)のブロックチェーンベースのリソース(例えば、トークン)が、プロキシノードに対して提供されることであってよい。そうした数量を選択することは、特に、例えば、どのプロキシノードが最も低い数量を受け入れるかを決定するためといったように、発信元ノードが1つまたはそれ以上のプロキシノードと通信している場合に、望ましくないメッセージングオーバーヘッドを結果として生じさせ得る。かくして、特定のブロックチェーントランザクションに関連して提供されるべき数量を確立することに関連するメッセージングオーバーヘッドを回避または制限することが問題である。
【0052】
複数のプロキシノードを使用することにおける問題は、また、トランザクションをブロックチェーン内に包含するように成功裡に通信するために、それぞれ特定のプロキシノードに対して異なる数量が提供されるように異なるプロキシノードが要求している場合に、複数のブロックチェーントランザクションが発信元ノードによって生成される必要があり得ることであってもよく、それぞれがプロキシノードのうち特定の1つに関連するアドレスに対して異なる数量を移転している。さらに、プロキシノードのうち1つがプロキシノードの別のものと同じ数量を要求する場合でさえも、複数のブロックチェーントランザクションが生成される必要があることであってよく、それぞれがプロキシノードのうち特定の1つに関連するアドレスに対してその数量を提供している。
【0053】
例えば、ビットコインといった、いくつかのブロックチェーンベースのシステムにおいては、一旦トランザクションがブロードキャストされると、そのブロックチェーントランザクションは、今までどおりブロックチェーン内に含まれる必要がある。ブロックチェーン内で新しいブロックを生成する責任がある特定のコンピュータシステム、マイナ(miners)として知られるもの、によるものである。マイナは、ブロックを「採掘(“mine”)」するために必要な計算作業を実行するために、新たに作られた(minted)ビットコインの形式で、数量(amount)を受け取る。注目すべきことに、このことは、ビットコインがそうした計算資源に対して直接的に対応することを意味している。
【0054】
マイナには、特定のブロックチェーントランザクションをマイニングブロック内に含めるために、マイニング料金(mining fee)が提供され得る。このマイニング料金は、そのブロックチェーントランザクションの出力に対する所与のトランザクションの入力の剰余として反映されている。ブロックチェーントランザクションを次のブロック内に含めるために必要な最低料金は、時間とともに変化し得る。
【0055】
ブロックチェーンにおいて可能なブロードキャストのために複数のプロキシに対してブロックチェーントランザクションを提供することにおける別の問題は、おそらく特定のブロックチェーントランザクションが次のブロックに含まれるようにマイニングさせるために必要なマイニング料金が、発信元ノードによるブロックチェーントランザクションの生成と、ブロックチェーンネットワークに対する1つまたはそれ以上のプロキシノードによるブロックチェーントランザクションの送信との間の期間において変動し得ることである。かくして、発信元ノードについて、適切なマイニング料金でブロックチェーントランザクションを設定することが、発信元ノードとプロキシの様々なノードとの間で、通信またはハンドシェイクの膨大な行ったり来たり(back-and-forth)を必要とし得ることが問題である。例えば、発信元ノード100は、特定のマイニング料金を含むブロックチェーントランザクションを設定し、そして、プロキシノードに対してそのブロックチェーントランザクションをブロードキャストのために送付することができるが、次いで、ネットワーク条件は、プロキシノードがブロックチェーントランザクションをブロードキャストする前に、変化し得る。従って、次のブロック内の可能性ある包含のためには不十分なマイニング料金を結果として生じている。そうした状況において、プロキシノードは、例えば、発信元ノードとのさらなる通信を必要とし得る、より高いマイニング料金を伴い、新しいブロックチェーントランザクションを送付する必要があり得る。このことは、望ましくないメッセージングオーバーヘッドを結果として生じ得る。さらに、複数のブロックチェーントランザクションの生成は、1つまたはそれ以上の発信元ノードおよびプロキシノードにおいて、計算資源を不必要に消費し得る。
【0056】
本出願に従って、単一のプロキシノードを使用することの欠点および複数のプロキシノードを使用することに関連する問題に対処するために、複数のプロキシノードが使用され得る。例えば、マイニング料金を確立することに関連する潜在的な計算およびメッセージングオーバーヘッドの問題を含むものであり、そして、トランザクションをブロックチェーン内に包含するように成功裡に通信するためにプロキシノードに対して提供される数量が取り扱われ得る。例えば、マイニング料金を確立することに関連する問題、および、トランザクションをブロックチェーン内に包含するように成功裡に通信するためにプロキシノードに対して提供される数量は、所与のプロキシノードによって両方が選択されることを可能にすることによって対処され得る。
【0057】
図2のハイレベルな概略図は、発信元ノード100に代わって、ブロックチェーンネットワーク110の中へトランザクションを導入するために、プロキシノードのグループがどのように使用され得るかについて例示的な構成を示している。
【0058】
図示されるように、発信元ノード100は、エレメント220を介し、一式のプロキシノード230A-Cを経由してブロックチェーンネットワーク110と通信する。
【0059】
プロキシノード230A-230Cそれぞれは、コンピューティングデバイスである。プロキシノード230A-230Cは、ブロックチェーンネットワーク110と通信している。3つのプロキシノード-プロキシノード230A、プロキシノード230B、およびプロキシノード230C-が示されているが、これは単に例示としてのものに過ぎず、そして、プロキシノードの数は変動してよい。
【0060】
エレメント220は、情報が、発信元ノード100によって、プロキシノード230A-230Cのうち1つまたはそれ以上に対して通信されるのを可能にし、そして、その逆も同様である。エレメント220は、例えば、周知のネットワークアドレスにおけるコンピュータシステムといった、1つまたはそれ以上の装置を表すことができ、1つまたはそれ以上の他の当事者による転送(forwarding)及び/又は検索(retrieval)のために1つの当事者によって送信された情報を保管している。そうしたエレメント220によって保管された情報は、一過性(ephemeral)のものであってよく、かつ/あるいは、いくらかの定められた期間の後で満了してよい。別の例において、エレメント220は、発信元ノード100がプロキシノード230A-230Cと通信することによって、ネットワーク接続に対応することができる。
【0061】
以下でさらに説明されるように、発信元ノード100は、ブロックチェーンネットワーク110への通信のために、プロキシノード230A-Cに対してブロックチェーントランザクションを通信し得る。いくつかの実施形態において、プロキシノード230A-230Cのうち1つまたはそれ以上は、ブロックチェーンネットワーク110の一部を形成し得る。追加的または代替的に、プロキシノード230A-230CCのうち1つまたはそれ以上は、ブロックチェーンネットワーク110の1つまたはそれ以上のノードと通信し得る。
【0062】
上述のように、プロキシノード230A-230Cは、発信元ノード100に代わり、といったように、ブロックチェーンネットワーク110へブロックチェーントランザクションを中継するように設定されている。
【0063】
以下でさらに説明されるように、発信元ノード100は、ブロックチェーンネットワーク110への通信のために、プロキシノード230A-Cに対してブロックチェーントランザクションを通信し得る。いくつかの実施形態において、プロキシノード230A-230Cのうち1つまたはそれ以上は、ブロックチェーンネットワーク110の一部を形成し得る。追加的または代替的に、プロキシノード230A-230CCのうち1つまたはそれ以上は、ブロックチェーンネットワーク110の1つまたはそれ以上のノードと通信し得る。
【0064】
上述のように、プロキシノード230A-230Cは、発信元ノード100に代わり、といったように、ブロックチェーンネットワーク110へトランザクションを中継するように設定されている。
【0065】
特に、発信元ノード100は、マイニング料金およびトランザクションをブロックチェーン内に包含するように成功裡に通信するためにプロキシノードに提供される数量の両方を超える剰余入力値を含む、部分的に署名されたブロックチェーントランザクションを生成することができる。以下でさらに説明されるように、プロキシノード230A-230Cのうち1つまたはそれ以上は、次いで、ブロックチェーントランザクションのためのマイニング料金を定めるように、部分的に署名されたブロックチェーントランザクションに対するさらなる入力を提供することができ、そして、ブロックチェーンネットワーク110に対して第1ブロックチェーントランザクションを分配するための数量を収集するために、さらなるブロックチェーントランザクションを生成することができる。
【0066】
図3は、1つの例示的なコンピューティングデバイス300に係るハイレベルなオペレーション図である。いくつかの実施形態において、例示的なコンピューティングデバイス300は、例えば、発信元ノード100及び/又はプロキシノード230A-Cを含んでいる、ここにおいて説明されるコンピュータシステムの例示的な1つまたはそれ以上のものであってよい。発信元ノード100およびプロキシノード230A-Cそれぞれは、特定の機能を実行するように適合させるソフトウェアを含む。
【0067】
例示的なコンピューティングデバイス300は、様々なモジュールを含んでいる。例えば、図示されるように、例示的なコンピューティングデバイス300は、プロセッサ310、メモリ320、およびネットワークインターフェイス330を含み得る。図示されるように、例示的なコンピューティングデバイス300に係る前述のコンポーネントは、バス340を介して通信する。
【0068】
プロセッサ310は、ハードウェアプロセッサである。プロセッサ310は、例えば、ARM、Intel x86、PowerPCプロセッサ、等のうち1つまたはそれ以上であっよい。
【0069】
メモリ320は、データが保管され、かつ、検索されることを可能にする。メモリ320は、例えば、ランダムアクセスメモリ、読み出し専用メモリ、および永続性ストレージを含んでよい。永続性ストレージは、例えば、フラッシュメモリ、ソリッドステートドライブ、等であってよい。読み出し専用メモリおよび永続性ストレージは、非一時的コンピュータ読取り可能記憶媒体である。コンピュータ読取り可能媒体は、例示的なコンピューティングデバイス300の全般のオペレーションを支配するオペレーティングシステムによって管理され得る、といったファイルシステムを使用して組織化されてよい。
【0070】
ネットワークインターフェイス330により、例示的なコンピューティングデバイス300は、例えば、ブロックチェーンネットワーク110(
図1および
図2)といった、他のコンピューティングデバイス及び/又は様々な通信ネットワークと通信することができる。
【0071】
命令を含んでいるソフトウェアは、コンピュータ読取り可能媒体からプロセッサ310によって実行される。例えば、ソフトウェアは、メモリ320の永続性ストレージからランダムアクセスメモリの中へロードされ得る。追加的または代替的に、命令は、メモリ320の読み出し専用メモリから直接的にプロセッサ310によって実行され得る。
【0072】
以下でさらに説明されるように、ソフトウェアは、例えば、発信元ノード100およびプロキシノード230A-Cを含む、ここにおいて言及される様々なコンピュータシステムの1つまたはそれ以上として機能するように、例示的なコンピューティングデバイス300のインスタンスを適合することができる。
【0073】
上述のように、発信元ノード100(
図2)は、ブロックチェーンネットワーク110に対して分配するために、トランザクションを1つまたはそれ以上のプロキシノード230A-230Cに提供することができる。そうしたブロックチェーントランザクションをプロキシノードに提供することにおける発信元ノード100のオペレーションが、
図4のフローチャート400を参照して説明される。オペレーション410及びそれ以降は、例えば、メモリ320のストレージといった、コンピュータ読取り可能記憶媒体において保管され得るようなコンピュータ実行可能命令を含むソフトウェアを実行する、例示的なコンピューティングデバイス300の適切に設定されたインスタンスの、例えば、プロセッサ310(
図3)といった、コンピューティングデバイスの1つまたはそれ以上のプロセッサによって実行される。
【0074】
フローチャート400に示される方法に対して前提条件(pre-requisite)として、発信元ノード100は、プロキシノード230A-Cそれぞれと公開鍵を交換する。鍵は、例えば、エレメント220(
図2)を介して交換され得る。
【0075】
例えば、発信元ノード100およびプロキシノード230A-Cそれぞれが、公開鍵-秘密鍵のペアを生成し、そして、交換においては公開鍵を使用する、ことであってよい。これらの関連する非対称暗号化鍵ペアは、ノードに関連付けされ得るあらゆる他の暗号鍵に追加されてよい。
【0076】
さらなる前提条件として、発信元ノード100は、プロキシノード230A-230Cそれぞれと共有される秘密の値(shared secret value)を確立する。
【0077】
以下でさらに説明されるように、共有される秘密は公開鍵の交換を通じて確立され得る。代替的に、共有される秘密を確立することは、さらなる通信及び/又は計算を含み得る。
【0078】
オペレーション410において、発信元ノード100は、前提条件である必要な公開鍵の交換において受信される第1公開鍵に基づいて、プロキシノード230A-Cそれぞれについて第2公開鍵を決定する。第2公開鍵は、第1公開鍵および共有される秘密に基づいて決定され、そして、プロキシノードそれぞれについて対応する第2秘密鍵が、発信元ノードと所与のプロキシノードとの間で共有される秘密の値、および、第1公開鍵に対応する秘密鍵に基づいて、所与のプロキシノードによって決定可能である、そうした様式で生成される。第1公開鍵および使用され得る共有される秘密に基づいて第2公開鍵を決定する方法が、以下に説明される。
【0079】
プロキシノード230A-230Cそれぞれに対する第2公開鍵の決定に続いて、制御フローは、オペレーション420へ進む。
【0080】
オペレーション420において、発信元ノード100は、1つの入力および2つの出力を含んでいるブロックチェーントランザクションを生成する。そうしたブロックチェーントランザクションの一つの例が
図5に示されている。図示されるように、例示的なブロックチェーントランザクション、ブロックチェーントランザクション500は、入力510、第1出力520、および第2出力530を含んでいる。
【0081】
ブロックチェーントランザクション500は、ブロックチェーンベースのリソースのうちx単位(units)を、ブロックチェーン実装された台帳を介して、他の当事者に移転するように意図されている。説明を容易にするために、送信元(source)と宛先アドレスは示されていない。単位は、例えば、計算資源の単位に対応してよい。単位は、例えば、ビットコインで表現された単位といった、特定のリソースの単位であってよい。
【0082】
ブロックチェーンに含まれるブロックチェーントランザクション500を見るために、発信元ノード100が、さらなるr単位を喜んで提供する、ということであってよい。
【0083】
図示されるように、両方の量(x+r)単位は、入力510を経由して、ブロックチェーントランザクションに対して入力として提供される。代替的に、これらの量が、例えば、ユーザが異なるアドレスからx単位およびr単位の全て又は一部を供給することを望む場合といった、1つより多い入力を経由して提供される、ということであってよい。
【0084】
第1出力520は、出力アドレスに対してx単位を提供する。出力アドレスは、他の当事者と関連付けされてよい。
【0085】
第2出力530は、d+r単位を特別なアドレスに対して提供し、それによって、そのアドレスに対して提供された数量は、プロキシノード230A-230Cに関連付けされた上述の第2秘密鍵のうち任意の1つによってアンロックされ得る。そうしたn個のマルチ署名アドレスのうち1つ(1-of-n multi-signature address)が、各プロキシノードの公開鍵およびプロキシノードが発信元ノード100と共有する秘密の値に基づいて決定されたように、上述の第2公開鍵に基づいて、発信元ノード100によって生成されてよい。そうしたマルチ署名アドレスの詳細、特にビットコインのコンテクストにおけるものは、A.M.Antonopous(O'Reilly Media)による“Mastering Bitcoin: Unlocking Digital Cryptocurrencies”(2014)(以降、「マスタリングビットコイン」)において見つけることができ、その内容は、参照によりその全てがここにおいて組み込まれている。マルチ署名アドレスは、「マスタリングビットコイン」の5章において説明されている。
【0086】
また、追加の出力(図示なし)が、例えば、入力510のソースから派生して(x+r)単位より多く存在していることから生じている剰余を回収するための追加の出力といったように、ブロックチェーントランザクション500に含まれている、ということであってもよい。
【0087】
注目すべきことに、第2出力530に含まれる量d単位は、任意の数量であり、第1出力520および第2出力530の合計と比較して入力510との間でブロックチェーントランザクション500においてd単位の不均衡(不足)を結果として生じる。以下でさらに説明されるように、このことは、ブロックチェーントランザクションに対する入力の合計が出力の合計を超えることを保証するために1つまたはそれ以上のさらなる入力を追加することなく、ブロックチェーン内に包含することについてブロックチェーントランザクション500が受け入れられないことを保証しながら、発信元ノード100がブロックチェーントランザクション500に署名することを可能にする。
【0088】
図4に戻ると、オペレーション420に続いて、制御フローはオペレーション430へ進む。
【0089】
オペレーション430において、発信元ノード100は、ブロックチェーントランザクション500にデジタル署名する。上述のように、ブロックチェーントランザクション500は、その出力の合計がその入力の合計を超えるので、不完全(incomplete)である。発信元ノード100は、さらなる出力をブロックチェーントランザクション500に対して追加することはできないが、さらなる入力が追加され得るように、全ての出力-すなわち、第1出力520および第2出力530を含む-および入力510に署名するための、そうした様式でブロックチェーントランザクションに署名する。例えば、ブロックチェーントランザクション500がビットコイントランザクションである場合に、発信元ノード100は、フラグSIGHASH_ALL|SIGHASH_ANYONECANPAYを使用して、ブロックチェーントランザクション500に署名し得る。
【0090】
オペレーション430に続いて、制御フローは、オペレーション440へ進む。
【0091】
オペレーション440において、発信元ノード100は、署名された、ブロックチェーントランザクション500をプロキシノード230A-Cに対して分配する。いくつかの実施形態において、発信元ノード100は、エレメント220を経由してブロックチェーントランザクション500を通信することができる。注目すべきことに、ブロックチェーントランザクション500は署名されているので、ブロックチェーントランザクションに関連するトランザクション識別子(txid)は唯一である。かくして、発信元ノードは、例えば、エレメント220を経由して、txidをプロキシノード230A-Cに通信することができる。別の例において、発信元ノードは、txidに係るそれぞれの指示をプロキシノード230A-230Cそれぞれに対して通信することができる。追加的または代替的に、ブロックチェーントランザクション500は、例えば、プロキシノード230A-230Cに対する送信のために、あるフォーマットへとそれを直列化(serializing)することによる、といった何らかの他の様式で通信されてよい。ブロックチェーントランザクション500及び/又はtxidは、暗号化された形式で送信されてよい。例えば、一方または両方は、プロキシノード230A-230Cそれぞれに対して、そのプロキシノードの公開鍵を使用して各プロキシノードに対して暗号化されて、分配されてよい。特定の例においては、ブロックチェーントランザクション500の受信された識別子が、所与のプロキシノードの公開鍵を使用して暗号化されてよい。
【0092】
上述のように、プロキシノード230A-Cは、ブロックチェーンネットワーク110に対する分配のために、発信元ノード100からブロックチェーントランザクション500を受信する。ブロックチェーンネットワーク110に対するブロックチェーントランザクションの分配に関するプロキシノード230A-230Cの例示的な1つのオペレーションが、
図6のフローチャート600を参照して説明される。オペレーション610及びそれ以降は、例えば、メモリ320のストレージといった、コンピュータ読取り可能記憶媒体において保管され得るようなコンピュータ実行可能命令を含むソフトウェアを実行する、例示的なコンピューティングデバイス300の適切に設定されたインスタンスの、例えば、プロセッサ310(
図3)といった、コンピューティングデバイスの1つまたはそれ以上のプロセッサによって実行される。
【0093】
フローチャート600に示された方法は、フローチャート400(
図4)に示された方法のものと類似する前提条件を有している。すなわち、プロキシノードが、例えば、エレメント220(
図2)を介して発生し得るといったように、発信元ノード100(
図2)と公開鍵を交換していること、および、例示的なプロキシノードが、発信元ノード100と共有される秘密の値を確立していることである。かくして、発信元ノード100およびプロキシノードそれぞれは、そのノードが交換した公開鍵およびそれに関連する秘密鍵からなる関連する非対称鍵ペアを有する。
【0094】
オペレーション610において、プロキシノードは、発信元ノードからブロックチェーントランザクション500(
図5)を受信する。上述のように、ブロックチェーントランザクション500は、発信元ノード100によって部分的に署名されており、そして、x+r単位をとる第1入力と、出力アドレスに対してx単位を提供する第1出力と、プロキシノード230A-230Cに関連する第2秘密鍵の任意の1つのセットを使用してアンロック可能なn個のマルチ署名アドレスのうち1つに対してd+r単位を提供する第2出力とを含む。プロキシノードは、前提条件として発信元ノード100と交換した公開鍵に対応する秘密鍵、および、プロキシノードが発信元ノードと共有する秘密の値に基づいて、その第2秘密鍵を導出することができる。
【0095】
ブロックチェーントランザクション500は、ブロックチェーントランザクション500と関連付けされた識別子を受信することによって受信され得る。識別子は、例えば、ブロックチェーントランザクション500のトランザクション識別子(txid)であってよい。追加的または代替的に、ブロックチェーントランザクション500は、例えば、ある直列化されたフォーマットといった、何らかの他の形式で受信されてよく、そして、例えば、非直列化される必要があり得る。追加的または代替的に、ブロックチェーントランザクション500は、暗号化された形式で受信され得る。例えば、発信元ノード100は、プロキシノードと関連付けされた公開鍵を使用して、暗号化を実行し得る。特定の例において、暗号化は、プロキシノードが前提条件として発信元ノード100と交換した公開鍵、または、別の例においては、プロキシノードの第2秘密鍵に対応する第2公開鍵を使用することができる。プロキシノードは、プロキシノードと関連付けされた公開鍵に対応する秘密鍵を使用して、ブロックチェーントランザクション500またはその識別子を復号化(decrypt)し得る。
【0096】
オペレーション610に続いて、フロー制御は、オペレーション620へ進む。
【0097】
オペレーション620において、プロキシノードは、ブロックチェーントランザクション500を更新すること、および、ブロックチェーントランザクション500をブロックチェーン内に含めることに成功した場合に、プロキシノードに対して数量を提供するためのさらなるトランザクションを構成することにおいて使用される量の数(a number of quantities)を選択する。
【0098】
特に、プロキシノードは、ブロックチェーントランザクション500をブロードキャストし、そして、ブロックチェーン内にブロックチェーントランザクション500を含めるために、プロキシノードに対して割り当てられるべき量、t単位、を選択する。
【0099】
加えて、プロキシノードは、ブロックチェーン内にブロックチェーントランザクション500を含めるために、第三者(third-party)に割り当てられるべき量f、を選択する。量fは、計算資源の単位で表すことができ、そして、従って、計算資源の単位fの量であり得る。例えば、ビットコインブロックチェーンの場合に、f単位は、ブロックチェーン内にブロックチェーントランザクション500を含めるためにマイナに対して支払われるべきマイニング料金に対応し得る。
【0100】
量fは、コンピュータネットワークを介して受信した指示に基づいて選択される、ということであってよい。例えば、量fが計算資源に対応する場合には、トランザクションをブロックチェーン内に含めるために第三者に対して割り当てられるべき計算資源の量fは、コンピュータネットワークを介して受信した指示に基づいて選択される。そうした表示は、発信元ノードから受け取ることができる。追加的または代替的に、量fは、ブロックチェーントランザクションがブロックチェーン内の次のブロックに含まれるようにすることに基づいて選択されてよい。例えば、ウェブサービスは、量fとして選択された場合に、ブロックチェーントランザクション500がブロックチェーン内の次のブロックに含まれることを所望の確率または可能性を伴って保証する量を決定するように、考慮され得る。
【0101】
注目すべきことに、量fは、rより小さくなければならない-つまり、f<rである。そうでなければ、プロキシノードは、ブロックチェーントランザクション500をブロックチェーンに含まれるようにするための量をネットで受け取る(net-receive)ことはなく、または、ブロックチェーントランザクション500をブロックチェーンに含まれるようにすることに対してそれ自身のリソース(単位)を寄贈することでさえあり得る。
【0102】
第1出力520によってx単位が送付される出力のタイプは、更新されたブロックチェーントランザクション700(以下でさらに説明される)をブロックチェーンに含まれるようにするために必要なマイニング料金に影響を与え得る、ということであってよい。従って、第1および第2出力の一方または両方は、量fの選択においてプロキシノードを支援するために、周知の形態を有してよい。
【0103】
以下でさらに説明されるように、プロキシノードは、ブロックチェーンに含まれているブロックチェーントランザクション500(および、さらなるブロックチェーントランザクション)次第で、t単位を提供するために、さらなるトランザクションを生成する。なぜなら、さらなるトランザクションをブロックチェーンに含めるためにも、また、量―例えば、ビットコインの場合にはマイナに対するマイニング料金―が提供される必要があり得るからである。量tは、また、この数量がブロックチェーントランザクション500の第1入力によって提供されるr単位から支払われることを可能にするように、選択することもできる。別の言葉で言えば、t<(r-f)ということであってよい。
【0104】
オペレーション620における量の選択に続いて、制御フローは、オペレーション630へ進む。
【0105】
オペレーション630では、ブロックチェーントランザクション500の更新された形式が生成される。特に、上述のように、ブロックチェーントランザクション500は、その出力の合計がその入力を超えるので、ブロックチェーンに含めるのに適していない。従って、オペレーション630において、
図7に示される、更新されたブロックチェーントランザクション700が、ブロックチェーントランザクション500(
図5)に基づいて生成される。特に、更新されたブロックチェーントランザクション700は、ブロックチェーントランザクション500に対して、d+f単位をとる(taking)第2入力710を追加することによって生成される。注目すべきことに、d単位は、第2出力530においてd単位のバランスを保つように機能する。f単位は、上述のように、更新されたブロックチェーントランザクション700をブロックチェーン内に含めるために提供するものである―例えば、ビットコインの場合にはマイニング料金である。
【0106】
プロキシノードは、また、第2入力710に署名するためにも、更新されたブロックチェーントランザクション700に署名する。例えば、更新されたブロックチェーントランザクション700がビットコイントランザクションである場合に、プロキシノードは、フラグSIGHASH_ALL|SIGHASH_ANYONECANPAYを用いて更新されたブロックチェーントランザクション700に署名することができる。このさらなる暗号署名(cryptographic signature)は、更新されたブロックチェーントランザクション700が、ブロックチェーントランザクション500とは異なるトランザクションid(txid)を有するという副作用を有する。
【0107】
少なくとも全ての出力を合計した入力を有している結果として、および、これら全ての入力および出力が署名されていることを考慮すると、更新されたブロックチェーントランザクション700は、ブロックチェーンに含めるために適した形態である。
【0108】
図6に戻ると、オペレーション630に続いて、制御フローは、オペレーション640へ進む。
【0109】
オペレーション640では、上述のように、さらなるブロックチェーントランザクション800が生成され、デジタル署名される。特に、プロキシノードは、
図8に示されるように、さらなるブロックチェーントランザクション800を生成し、そして、デジタル署名する。さらなるブロックチェーントランザクション800は、ブロックチェーントランザクション700(
図7)の第2出力530のn個のマルチ署名アドレスのうち1つから供給されるd+r単位をとり、かつ、前提条件において発信元ノード100と交換されるプロキシノードの公開鍵およびプロキシノードが発信元ノード100と共有する秘密の値に対応する秘密鍵に基づいて導出されたプロキシノードの第2秘密鍵を使用してアンロックされる、入力810を含む。さらなるブロックチェーントランザクション800は、また、プロキシノードによって選択され得るといった、アドレスに対してt単位を提供している出力820を含む。実際において、t単位は、更新されたブロックチェーントランザクション700(および、さらなるブロックチェーントランザクション800)がブロックチェーンに含まれている場合にだけ、プロキシノードに対する数量である。注目すべきことに、tとd+rとの間の差異-すなわち、t-d-rは、ブロックチェーントランザクション800をブロックチェーン内に含めるための数量であってよい(例えば、ブロックチェーンネットワーク110がビットコインネットワークである場合におけるマイナに対するマイニング料金)。かくして、量fおよび量tの一方または両方は、t-d-rの量が、さらなるブロックチェーントランザクション800をブロックチェーン内の次のブロックに含まれることを可能にするように、選択され得る。
【0110】
図6に戻ると、オペレーション640に続いて、制御フローは、オペレーション650へ進む。
【0111】
オペレーション650では、ブロックチェーントランザクション700およびブロックチェーントランザクション800の両方が、プロキシノードによってブロックチェーンネットワーク110に対してブロードキャストされる。更新されたブロックチェーントランザクション700及びさらなるブロックチェーントランザクション800のブロードキャストは、それらをブロックチェーンの同じブロックに含めることができるように、時間を合わせる(timed)ことができる。例えば、更新されたブロックチェーントランザクション700及びさらなるブロックチェーントランザクション800が、同時に/近く連続してブロードキャストされる、といったことであってよい。都合よく、量fおよびt-d-rは、更新されたブロックチェーントランザクション700及びさらなるブロックチェーントランザクション800がブロックチェーン内の次のブロックに含まれ、かつ、それらのブロードキャストがそのように時間合わせされるようなものであれば、両方のトランザクションは、同一の、ブロックチェーンの次のブロックに含まれ得る。
【0112】
上述のように、発信元ノード100は、プロキシノード230A-230Cそれぞれに対してブロックチェーントランザクション500を送付し得る。従って、プロキシノード230A-230Cそれぞれ、更新されたブロックチェーントランザクション700およびブロックチェーントランザクション800に係るそれ自身のバージョンを生成することができる。特に、更新されたブロックチェーントランザクション700の各インスタンスは、第2入力710の異なる形式のために、異なるtxidを有する。しかしながら、さらに注目すべきことに、更新されたブロックチェーントランザクション700のこれらのバージョンそれぞれは、ブロックチェーントランザクション500の入力510と同一の第1入力、入力510、を有しており、そして、従って、入力510と同じソースから、未使用のトランザクション出力を引き出す。従って、更新されたブロックチェーントランザクション700のこれらのバージョンそれぞれは、更新されたブロックチェーントランザクション700の他のバージョンに対する二重支出攻撃(double spending attack)(すなわち、異なる当事者に対する特定のトークンの同じ部分(fraction)の移転)としてブロックチェーンネットワーク110に現れる。しかしながら、都合よく、例えば、ビットコインといった、大部分のブロックチェーンベース台帳は、二重支出を防ぐので、更新されたブロックチェーントランザクション700のインスタンスのうち1つだけがブロックチェーンに含まれる。
【0113】
ブロックチェーンネットワーク110の異なるインスタンスは、更新されたブロックチェーントランザクション700の様々なバージョンのうち特定のバージョンに有利なように、異なる方法で、二重支出を解決することができる。例えば、ブロックチェーンブロックを構成するノード(例えば、マイナ)は、それが見る第1ブロックを選択し得る、ということであってよい。ビットコインの場合には、更新されたブロックチェーントランザクション700の複数のバージョンがマイニングノードにおけるメモリ(いわゆる「メモリプール(“mempool”)」)内に一時的に保管され得るが、マイナは、次のブロックを含めるために、マイナに対する最も高いマイニング料金を有している更新されたブロックチェーントランザクション700を選択するだろう。注目すべきことに、量r、f、およびtの間の関係のために、このことは、また、最も低い値のtを選択するプロキシノードに由来する更新されたブロックチェーントランザクション700のバージョンを選択する副作用も有する。メモリプールについての詳細は、「マスタリングビットコイン」の8章において説明されている(引用について上記を参照のこと)。
【0114】
注目すべきことに、更新されたブロックチェーントランザクション700がブロックチェーンに含まれると、更新されたブロックチェーントランザクション700のトランザクションIDが公に利用可能となる。これは、プロキシノード230A-230Cのいずれか1つが(たとえ、ブロックチェーンに含まれた更新されたブロックチェーントランザクション700のバージョンを送信したプロキシノードでなくても)、トランザクション出力の出力を消費してもよいことを意味する。しかしながら、この懸念は、更新されたブロックチェーントランザクション700を分配する以前にさらなるブロックチェーントランザクション800を生成することによって、更新されたブロックチェーントランザクション700及びさらなるブロックチェーントランザクション800の両方を同時にブロードキャストすることによって、および、必要に応じて、更新されたブロックチェーントランザクション700及びさらなるブロックチェーントランザクション800の両方が同じ(次の)ブロックに含まれることを確実にするための数量(例えば、マイニング料金)を提供することによって、緩和され得る。
【0115】
複数の発信元ノード
上記の説明は、単一の発信元ノードだけ-発信元ノード100-を含んでいるが、複数の発信元ノードが、プロキシノード230A-230Cそれぞれと通信する、ということであってよい。都合よく、プロキシノード230A-230Cは、同じ鍵ペアの公開鍵を、そうした複数の発信元ノードそれぞれと交換することができる、ということであってよい。
【0116】
前提条件の設定
上述のように、フローチャート400(
図4)およびフローチャート600(
図6)に示される方法の両方は、発信元ノード100がプロキシノード230A-Cそれぞれと公開鍵を交換していること、および、発信元ノード100がプロキシノード230A-Cそれぞれ1つとそれぞれの秘密の値を共有することを必要とする。
【0117】
発信元ノード100およびプロキシノード230A-230Cそれぞれは、ランダムな楕円曲線の公開鍵-秘密鍵ペアを生成することができる。楕円曲線鍵ペアの公開鍵が交換され得る。
【0118】
特に、発信元ノード100は、ランダムな秘密鍵xAを選択することができ、そして、対応する公開鍵PA=xA×Gを発行することができる。
【0119】
同様に、プロキシノード230A-230Cそれぞれは、ランダムな秘密鍵yB,iを選択することができ、そして、対応する公開鍵QB,i=yB,i×Gを発行することができる。
【0120】
この情報を使用して、発信元ノード100は、プロキシノード230A-Cそれぞれを用いて共有される秘密の値、ciを決定することができる。ci=H(xA×QB,i)であり、ここで、Hは、例えば、SHA-2ファミリーのメンバといった、暗号ハッシュ関数である。同様に、プロキシノード230A-230Cそれぞれは、発信元ノード100と共有する秘密の値をci=H(PA×yB,i)=H(xA×QB,i)として同様に決定し得る。等しいこと(equality)は、楕円曲線の準同型性(homomorphic property)のためである。注目すべきことに、発信元ノードと特定のプロキシノードとの間で共有される秘密の値を確立する上述のステップは、楕円曲線ディフィー・ヘルマン(ECDH)鍵交換に対応している。
【0121】
発信元ノード100は、また、所与のプロキシノードと共有される秘密の値、および、その発行された公開鍵に基づいて、プロキシノード230A-230Cそれぞれのためのさらなる公開鍵を決定してもよい。特に、そうしたさらなる公開鍵(上述の第2公開鍵に対応している)は、Q'B,i=QB,i+ci×Gとして計算され得る。都合よく、第2公開鍵は、発信元ノード100によって生成されるが、対応する秘密鍵SB,i(上述の「第2秘密鍵」に対応している)は、対応するプロキシノードによってだけ決定可能である。特に、プロキシノードは、その秘密鍵yB,iおよびプロキシノードが発信元ノード100と共有する秘密の値に基づいて、第2秘密鍵を決定することができる。ここで、特に、SB,i=(yB,i+ci)である。
【0122】
前提条件を確立するための代替物も、また、使用され得る。例えば、古典的なディフィー・ヘルマン(Diffie-Hellman)鍵交換(離散対数問題に基づくもの)は、各プロキシノードとのそれぞれ共有される値を確立するために、プロキシノード230A-230Cそれぞれを用いて発信元ノード100によって実行され得るだろう。公開鍵は、また、いくつかの他の方法で交換することもできる。例えば、公開鍵は、直接的に交換され、または、代替的に、セキュアなチャネルを介して交換され得る。例えば、上述の古典的なディフィー・ヘルマン鍵交換に対してさらに確立され得るように、例えば、セキュアチャネルを介して、といったものである。
【0123】
上述の実施形態は、本出願の技術的事項(subject matter)を限定するものではなく、むしろ例示するものであり、そして、当業者であれば、添付の請求項によって定義される本発明の範囲から逸脱することなく、多くの代替的な実施形態を設計することができることが留意されるべきである。請求項においては、括弧内に置かれた任意の参照記号は、請求項を限定するものと解釈されてはならない。単語「含む(“comprising”および“comprises”)」、等は、任意の請求項または明細書全体において列挙されたもの以外のエレメントまたはステップの存在を排除するものではない。本明細書において、「含む(“comprises”)」は、「含む、または、構成する(“includes or consists of”)」を意味し、そして、「含んでいる(“comprising”)」は、「含んでいる、または、構成している(“including or consisting of”)」を意味する。エレメントに係る単数形の参照は、そうしたエレメントに係る複数形の参照を排除するものではなく、そして、その逆もまた同様である。本出願の技術的事項は、いくつかの別個のエレメントを含んでいるハードウェアによって、および、適切にプログラムされたコンピュータによって実施することができる。いくつかの手段を列挙している装置の請求項において、これらの手段のいくつかは、一つの同じハードウェアアイテムによって具体化することができる。所定の措置が相互に異なる従属クレームにおいて引用されているという単なる事実は、これらの措置の組み合わせが有利に利用できないことを示すものではない。