(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-04
(45)【発行日】2024-01-15
(54)【発明の名称】ブロックチェーン・ネットワークにおける高速伝搬のための方法及び特殊ネットワーク・ノード
(51)【国際特許分類】
H04L 45/44 20220101AFI20240105BHJP
H04L 45/64 20220101ALI20240105BHJP
H04L 9/32 20060101ALI20240105BHJP
【FI】
H04L45/44
H04L45/64
H04L9/32 200Z
【外国語出願】
(21)【出願番号】P 2022159994
(22)【出願日】2022-10-04
(62)【分割の表示】P 2019568215の分割
【原出願日】2018-06-19
【審査請求日】2022-10-04
(32)【優先日】2017-06-20
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】デステファニス,ジュゼッペ
(72)【発明者】
【氏名】モティリンスキ,パトリック
(72)【発明者】
【氏名】ヴィンセント,ステファヌ
【審査官】和平 悠希
(56)【参考文献】
【文献】特開2005-354364(JP,A)
【文献】特開2017-091149(JP,A)
【文献】米国特許出願公開第2017/0236123(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/00-12/66
H04L 41/00-101/695
(57)【特許請求の範囲】
【請求項1】
ブロックチェーンを実現するために使用されるネットワークに結合される複数のノードに関わるブロックチェーン転送を促進するために、新たなトランザクションを分散されたメモリ・プールに格納する、コンピュータにより実施される方法であって、前記複数のノードのうちのサブセットは特殊ネットワーク・ノードであり、前記特殊ネットワーク・ノードは、承認を待機するペンディング・トランザクションを含む前記分散されたメモリ・プールを格納し、前記分散されたメモリ・プールは、前記特殊ネットワーク・ノードの中に分散されたハッシュ・テーブルとして実現され、前記方法は:
トランザクション識別子を含む前記新たなトランザクションを、第1のノードで受信するステップ;
キー値を得るために前記トランザクション識別子をハッシュするステップであって、前記キー値は、前記ネットワークのうちの1つ以上の特殊ネットワーク・ノードであって前記新たなトランザクションが格納されるべきものを示す、ステップ;
前記新たなトランザクションを、それが格納されるべき前記ネットワークのうちの1つ以上の特殊ネットワーク・ノードへルーティングするステップ;及び
前記1つ以上の特殊ネットワーク・ノードにおいて、前記新たなトランザクションを、前記分散されたメモリ・プールに格納するステップ;
を含む方法。
【請求項2】
請求項1に記載の方法において、前記1つ以上の特殊ネットワーク・ノードは、アクノリッジメントを送信する、方法。
【請求項3】
請求項1又は請求項2に記載の方法において、前記トランザクションを含み且つ前記ブロックチェーンに含まれるブロックの承認の数を決定し、前記承認の数が最低数に到達した場合に、前記トランザクションを前記分散されたメモリ・プールから削除するステップを更に含む、方法。
【請求項4】
請求項3に記載の方法において、
前記トランザクションを前記メモリ・プールに格納することが、前記トランザクションを、それが含まれる前記ブロックの承認の数に関連付けて格納することを含み、前記トランザクションに関して前記メモリ・プールに格納される承認の数は、新たなブロックが前記ブロックチェーンに追加される度に更新され;及び/又は
前記トランザクションを前記メモリ・プールに格納することが、前記トランザクションを、前記トランザクションが含まれるブロックの承認の数に関連付けて格納することを含み、前記承認の数を決定することは、前記ブロックチェーンに関する現在のブロック番号を確認し、前記現在のブロック番号と、前記トランザクションが含まれている前記ブロックのブロック番号とを比較することを含む、方法。
【請求項5】
請求項1ないし4のうちの何れか1項に記載の方法において、
新たな近隣の特殊ネットワーク・ノードを検出し、前記新たな近隣の特殊ネットワーク・ノードの識別子を、特殊ネットワーク・ノード評判テーブルに格納し、前記新たな近隣の特殊ネットワーク・ノードの検出されたアクティビティに基づいて、前記特殊ネットワーク・ノード評判テーブルにおける前記新たな近隣の特殊ネットワーク・ノードのスコアを更新するステップ;及び/又は
前記新たな近隣の特殊ネットワーク・ノードの前記スコアが閾値より下に落ちたことを判定し、その結果、前記新たな近隣の特殊ネットワーク・ノードを悪意のノードとして指定し、前記新たな近隣の特殊ネットワーク・ノードを孤立させるステップ;
を更に含む方法。
【請求項6】
請求項1ないし5のうちの何れか1項に記載の方法において、前記特殊ネットワーク・ノードのうちの1つが前記分散されたメモリ・プールの一部分を格納し、前記特殊ネットワーク・ノードのうちの1つに格納された前記分散されたメモリ・プールの一部分は、前記特殊ネットワーク・ノードのうちの別のものに格納された前記分散されたメモリ・プールの別の部分と部分的にオーバーラップしている、方法。
【請求項7】
請求項1ないし5のうちの何れか1項に記載の方法において、前記特殊ネットワーク・ノードの各々は、前記分散されたメモリ・プールの各自の部分を格納し、前記各自の部分は、前記ペンディング・トランザクションの各々が少なくとも2つの前記特殊ネットワーク・ノードに格納されるが、前記特殊ネットワーク・ノードの全てには格納されないように、部分的にオーバーラップしており、選択的に、前記ペンディング・トランザクションの各々は、前記分散されたメモリ・プールのうち高々2つの各自の部分に含まれている、方法。
【請求項8】
ブロックチェーンを実現するために使用される相互接続されたノードのネットワークに対する、ブロックチェーン・トランザクションの分散を促進するために、新たなトランザクションを、分散されたメモリ・プールに格納するように構成された特殊ネットワーク・ノードであって、
プロセッサ;
分散されたハッシュ・テーブルとして構造化された分散されたメモリ・プールのうちの指定された部分を格納するメモリであって、前記分散されたメモリ・プールは、承認を待機するペンディング・トランザクションを含む、メモリ;
メモリ・インターフェース;及び
プロセッサで実行可能な命令を含むブロックチェーン特殊ネットワーク・ノード・アプリケーション;
を含み、前記命令は、前記プロセッサにより実行されると、前記プロセッサに:
トランザクション識別子を含むトランザクションを受信するステップ;
キーを得るために前記トランザクション識別子をハッシュするステップ;
前記新たなトランザクションを、それが格納されるべき前記ネットワークのうちの1つ以上の特殊ネットワーク・ノードへルーティングするステップ;及び
前記1つ以上の特殊ネットワーク・ノードにおいて、前記新たなトランザクションを、前記分散されたメモリ・プールに格納するステップ;
を実行させる、特殊ネットワーク・ノード。
【請求項9】
請求項8に記載の特殊ネットワーク・ノードにおいて、アクノリッジメントを送信することを更に行う、特殊ネットワーク・ノード。
【請求項10】
請求項8又は請求項9に記載の特殊ネットワーク・ノードにおいて、前記メモリは、前記トランザクションを含み且つ前記ブロックチェーンに含まれるブロックの承認の数に関するデータを格納しており、前記命令は、前記プロセッサに、前記承認の数が最低数に到達した場合に、前記トランザクションを前記分散されたメモリ・プールから削除するステップを行わせるものであり;及び/又は
前記承認の数に関するデータは、新たなブロックが前記ブロックチェーンに追加される度に更新される承認の数であるか、又は、前記トランザクションが含まれるブロックのブロック数である、特殊ネットワーク・ノード。
【請求項11】
請求項8ないし10のうちの何れか1項に記載の特殊ネットワーク・ノードにおいて、前記メモリは、何らかの検出された新たな近隣の特殊ネットワーク・ノードの識別子と、前記新たな近隣の特殊ネットワーク・ノードの検出されたアクティビティに基づく前記新たな近隣の特殊ネットワーク・ノードの関連スコアとを含む特殊ネットワーク・ノード評判テーブルを格納している、特殊ネットワーク・ノード。
【請求項12】
請求項11に記載の特殊ネットワーク・ノードにおいて、前記命令は、前記プロセッサに、
前記新たな近隣の特殊ネットワーク・ノードのスコアを更新するステップ;及び
前記新たな近隣の特殊ネットワーク・ノードの前記スコアが閾値より下に落ちたことを判定し、その結果、前記新たな近隣の特殊ネットワーク・ノードを悪意のノードとして指定し、前記新たな近隣の特殊ネットワーク・ノードを孤立させるステップ;
を実行させるように構成されている、特殊ネットワーク・ノード。
【請求項13】
請求項8ないし12のうちの何れか1項に記載の特殊ネットワーク・ノードにおいて、前記分散されたメモリ・プールのうちの指定された一部分は、前記特殊ネットワーク・ノードのうちの別のものに格納された前記分散されたメモリ・プールの別の部分と部分的にオーバーラップしている、特殊ネットワーク・ノード。
【請求項14】
請求項8ないし12のうちの何れか1項に記載の特殊ネットワーク・ノードにおいて、前記特殊ネットワーク・ノードの各々は、前記分散されたメモリ・プールの各自の指定された部分を格納し、前記各自の指定された部分は、前記ペンディング・トランザクションの各々が少なくとも2つの前記特殊ネットワーク・ノードに格納されるが、前記特殊ネットワーク・ノードの全てには格納されないように、部分的にオーバーラップしており、選択的に、前記ペンディング・トランザクションの各々は、前記分散されたメモリ・プールのうち高々2つの各自の指定された部分に含まれている、特殊ネットワーク・ノード。
【請求項15】
複数の参加ノードの中でブロックチェーン・トランザクションに参加するためのプロセッサ実行可能命令を格納する非一時的なプロセッサ読み取り可能な記憶媒体であって、前記プロセッサ実行可能命令は、前記参加ノードのうちの1つにおけるプロセッサにより実行されると、請求項1ないし7のうちの何れか1項に記載の方法を、前記プロセッサに実行させる、記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は一般に分散された台帳(ブロックチェーン)ネットワークに関連する。特に、本発明はブロックチェーン・ネットワークのパフォーマンスを改善し、及び/又はネットワーク上で転送が実行され得る速度を増大させる暗号強制方法及びシステムに関連し得る。
【背景技術】
【0002】
本書では電子的なコンピュータ・ベースの分散型の全ての形態の台帳を含むように用語「ブロックチェーン」を使用する。これらは、ブロックチェーン及びトランザクション・チェーン技術、許可された及び許可されていない台帳、共有台帳、並びにそれらの変形を含むが、これらに限定されない。ブロックチェーン技術の最も広く知られている応用はビットコイン台帳であるが、他のブロックチェーン実装が提案され開発されている。本願では、便宜上及び説明の目的でビットコインが参照されるかもしれないが、本発明は、ビットコイン・ブロックチェーンで使用することに限定されず、代替的なブロックチェーンの実装及びプロトコルが、本発明の範囲内に属することに留意すべきである。
【0003】
ブロックチェーンはコンセンサス・ベースの電子台帳であり、これはトランザクションにより構成されるブロックにより構成される、コンピュータ・ベースの非セントラル化された分散システムとして実装される。各々のトランザクション(Tx)は、ブロックチェーン・システム内の参加者間でディジタル資産の支配権の移転をエンコードし、少なくとも1つのインプットと少なくとも1つのアウトプットとを含む。各ブロックは先行するブロックのハッシュを含み、その結果、ブロックは、開始以来ブロックチェーンに書き込まれてきた全てのトランザクションについての永続的で変更不可能な記録を作成するように一緒に鎖で繋がれる。トランザクションは、トランザクションのインプット及びアウトプットに組み込まれるスクリプトとして知られる小さなプログラムを含み、スクリプトは、トランザクションのアウトプットがどのように誰によってアクセスされ得るかを指定する。ビットコイン・プラットフォームでは、これらのスクリプトはスタック・ベースのスクリプト言語を使用して書かれる。
【0004】
新たなトランザクションを受信したネットワーク・ノードは、ネットワーク内の他のノードへ、そのトランザクションを速やかにプッシュしようとするであろう。新たなトランザクションを他のノードへ送信する前にそれは「検証され(validated)」、検証は、トランザクションが、適用可能なブロックチェーン・プロトコルに従って適切なトランザクションの基本要件を満足していることを保証するために、一組の基準に対して検査されることを意味する。
【0005】
トランザクションがブロックチェーンに書き込まれるために、トランザクションはノード(「マイナー」)によりブロック内に組み込まれ、そのノードはトランザクションを収集してそれらをブロックに形成するように設計されている。次いで、マイナーはノードに関する「プルーフ・オブ・ワーク」を完了しようとする。ブロックチェーン・ネットワーク中のマイナー達は、トランザクションのブロックを組み立て、ブロックに関する作業についての関連する証明を完了するために、1番になろうと競争する。成功したマイナーは、確認されたブロックをブロックチェーンに追加し、そのブロックはネットワークに伝搬され、その結果、ブロックチェーンのコピーを保持する他のノードは、各自の記録を更新することができる。ブロックを受信したこれらのノードもまたブロック及びその中の全てのトランザクションを「検証」し、それがプロトコルの正式な要件に従っていることを保証する。
【0006】
ブロックチェーンの実装に関連するボトルネックの1つは、プルーフ・オブ・ワークを完了するまでマイナーを待機することに関連する遅延であり、プルーフ・オブ・ワークは、トランザクションのブロックを確認し、トランザクションのそのブロックをブロックチェーンに追加する結果をもたらす。一例としてビットコイン・システムを用いると、設計により、システムはブロックが確認されてブロックチェーンに追加されるまで約10分を要する。一方、未承認のトランザクションはメモリ・プール(本願では「メンプール」(mempool)と言及される)に溜まり、その完全なコピーがネットワーク内の各ノードで維持される。ビットコイン・アーキテクチャの分析は、10分のブロック承認スループットの場合、典型的なトランザクション及びブロックのサイズに基づいて、及び蓄積されたそれらの未承認トランザクションが新たなブロックに組み込まれ得る速度に基づいて、システムは、毎秒約3つの新たな未承認トランザクションというトランザクション・スループットを処理することが可能である。
【0007】
ビットコインのようなブロックチェーンに基づくネットワークを利用して、広く行き渡った暗号的に保護される交換の利用を可能にする又は促進することは有益であろう。そのような交換は、例えば、クレジット・カード・トランザクション等に関する支払処理に関連し得る。しかしながら毎秒約3つというトランザクション・スループットは、毎秒約50,000というトランザクション量で現在動作しているそのような電子決済を処理するには不十分である。従って、大量のトランザクションを処理するために、ブロックチェーンの能力を現在制限しているスピード及びスケーラビリティの制約に対するソリューションを見出すことが望ましい。
【発明の概要】
【0008】
今やそのようなソリューションが発明されている。
【0009】
即ち、本発明によれば、添付の特許請求の範囲に記載されているような方法及びデバイスが提供される。
【0010】
本願は、トランザクション処理の高速化/スピード改善のためにブロックチェーンを実装するように設計される専用マーチャント・ノード(dedicated merchant nodes)のネットワークによりブロックチェーン・トランザクション(TXs)の高速伝搬を可能にする方法及びデバイスを説明及び開示する。用語「トランザクション」は金融の意味における取引以外の「ブロックチェーン・トランザクション」(即ち,Tx)を意味するものとして解釈され得る。ネットワーク・トラフィックを最小化し、記憶容量制限を緩和するために、ブロックへの組み込みを待機しているペンディング・トランザクションのメモリ・プール(「メンプール」)は、分散ハッシュ・テーブル(DHT)により実現される分散メモリ・プールとして、特殊(マーチャント)ノード(the specialised(merchant)nodes)内に格納されることが可能である。マーチャント・ノードにより受信された新たなトランザクションはハッシュされたその識別子を有することが可能であり、マーチャント・ノードは、それが分散されたメンプールに既に格納されているか否かを評価することができる。格納されていない場合、適用可能なDHTプロトコルを利用して適切な1つ以上のマーチャント・ノードにおける分散されたメンプールにそれが格納され得る。マーチャント・ノードは次いで通常のピア・ツー・ピア・コネクションを利用してトランザクションTxを通常の非マーチャント・ノードへ送信してもよいが;トランザクションを全ての他のマーチャント・ノードへ送信する必要はない。
【0011】
追加的又は代替的な態様において、本願は、ブロックチェーンを実現するために使用される相互接続されたノードのネットワーク上でブロックチェーン・トランザクションの(高速)分散を促す特殊ネットワーク・ノードを説明しており、相互接続されたノードの部分集合はオーバーレイ・ネットワークで相互接続された特殊ネットワーク・ノードである。以後、用語「特殊ネットワーク」は、便宜上の目的に限り用語「SN」又は「マーチャント・ノード」と可換に使用され得る。
【0012】
幾つかの実装において、DHTの形式でメンプールを実現及び管理するために特殊ネットワーク・ノードのオーバーレイ・ネットワークを利用することは、全てのネットワーク・ノードでメンプールを実装することに勝る、演算速度及び伝搬速度の恩恵を提供することができる。更に、ブロックチェーン・ノードの正規のネットワークに対してオーバーレイ・ネットワークで特殊ネットワーク・ノードを利用することは、ブロックチェーン・ノードの全ネットワークにわたってDHTメンプールを実現することについての予想されるスピード及び信頼性の複雑化した事態を回避し、各ノードはDHTの非常に小さな部分を格納及び保持する。この構造は、非特殊ノードが特殊ノードのうちの1つを介してメンプールに速やかに問い合わせることを許容できる。マイニング・ノード等のオーバーレイ・ネットワーク以外のノードが、必要に応じて部分的な又は完全なメンプールを維持できることを保証するためにDHTを更新した後に、特殊ネットワーク・ノードがピア・ツー・ピア通信を利用してオーバーレイ・ネットワーク以外の非特殊ネットワークへの伝搬を開始することは、更に有益であろう。他のスピード及びストレージの恩恵は、例示的な実装の説明から明らかになるように、本願の様々な態様により実現され得る。
【0013】
SNノードは、プロセッサ;分散ハッシュ・テーブルとして構造化された分散されたメンプールのうちの指定された部分を格納するメモリであって、分散されたメンプールはコンファメーション(承認)を待機しているペンディング・トランザクションを含む、メモリ;ネットワーク・インターフェース;及びプロセッサ実行可能な命令を含むブロックチェーンSNノード・アプリケーションを含むことが可能である。命令は、実行されると、プロセッサに:トランザクション識別子を含むトランザクションを受信すること;(暗号)キーを得るためにトランザクション識別子をハッシュすること;分散されたメンプールにトランザクションが格納されているか否かをキーを利用して確認し、格納されていない場合、トランザクションをペンディング・トランザクションとして分散されたメンプールに格納すること;及びトランザクションをSNノード以外のノード群へピア・ツー・ピア・コネクションを利用して送信することを行わせることができる。
【0014】
幾つかの実装において、メモリは、トランザクションを含むブロックであってブロックチェーンに含まれるブロックの承認数に関するデータを更に格納してもよく、命令は、承認数が最小数に到達した場合に、分散されたメンプールからトランザクションを取り除くことをプロセッサに行わせる。幾つかの例において、承認数に関するデータは、ブロックチェーンに追加される新たなブロック各々に関して更新される承認数のカウント、又はトランザクションが含まれるブロックのブロック番号の何れかであってもよい。
【0015】
幾つかの実装において、メモリはSNノード評判テーブルを更に格納することが可能であり、SNノード評判テーブルは、何らかの検出された新たな近隣のSNノードに関する識別子と、新たな近隣のマーチャント・ノードの検出された活動(又はアクティビティ)に基づく新たな近隣のマーチャント・ノードの関連するスコアとを含む。幾つかの例において、命令は、新たな近隣のSNノードのスコアを更新すること、新たな近隣のSNノードのスコアが閾値より下に落ち込んだことを判定し、その結果、新たな近隣のSNノードを悪意のノードとして指定し、新たな近隣のSNノードを孤立させることをプロセッサに行わせる。
【0016】
幾つかの実装において、分散されたメンプールのうちの指定された部分は、別のSNノードに格納された分散されたメンプールの第2部分と部分的にオーバーラップしている。
【0017】
幾つかの実装において、各々のSNノードは、分散されたメンプールの各自指定された部分を格納し、各自指定された部分は、各々のペンディング・トランザクションが少なくとも2つのSNノードに格納されるが、全てのSNノードには格納されないように部分的にオーバーラップしていてもよい。選択的に、各々のペンディング・トランザクションは、分散されたメンプールの各自指定された2つに過ぎない部分に含まれる。
【0018】
追加的又は代替的に、本願はブロックチェーンを実現するために使用されるネットワークに結合される複数のノードに関わるブロックチェーン転送(例えば、トランザクション)を促進するコンピュータ実現方法を提供することが可能であり、複数のノードのうちの部分集合はSNノードであり、SNノードは、承認を待機するペンディング・トランザクションを含む分散されたメンプールを格納し、分散されたメンプールはSNノード群の中で分散されたハッシュ・テーブルとして実現される。本方法(SNノードのうちの1つで実現され得る)は、トランザクション識別子を含むトランザクションを受信するステップ;キーを得るためにトランザクション識別子をハッシュするステップ;分散されたメンプールにトランザクションが格納されているか否かをキーを利用して確認し、格納されていない場合、トランザクションをペンディング・トランザクションとして分散されたメンプールに格納するステップ;及びトランザクションをSNノード以外のノード群へピア・ツー・ピア・コネクションを利用して送信するステップを含むことができる。
【0019】
追加的又は代替的に、本願は複数の参加ノードの中でブロックチェーン・トランザクションに参加するためのプロセッサ実行可能命令を格納する非一時的なプロセッサ読み取り可能な媒体を提供することが可能であり、プロセッサ実行可能な命令は、参加ノードのうちの1つでプロセッサにより実行されると、本願で説明される1つ以上の方法をプロセッサに実行させる。
【図面の簡単な説明】
【0020】
本発明のこれら及び他の態様は、本願で説明される実施形態から明らかになり且つ実施形態に関連して説明される。本発明の実施形態は、単なる例示に過ぎないものとして添付図面に関連して説明される。
【0021】
【
図1】
図1はマーチャント(SN)ノードのオーバーレイ・ネットワークとともにノードのネットワーク例を示す。
【0022】
【
図2】
図2は新たなトランザクションを分散されたメンプールに格納するプロセスを示すシーケンス図を示す。
【0023】
【
図3】
図3はブロックチェーン・ネットワークでトランザクションを伝搬させる方法の一例をフローチャート形式で示す。
【0024】
【
図4】
図4は簡略化された例示的なMノードをブロック図形式で示す。
【0025】
【
図5】
図5はMネットに参加する新たなノード例を示すシーケンス図を示す。
【0026】
【
図6】
図6はMノード登録テーブル例を概略的に示す。
【0027】
【
図7】
図7は例示的なメンプール・データ・エントリを示す。
【発明を実施するための形態】
【0028】
本願において、用語「及び/又は」は、列挙された要素の全ての可能なコンビネーション及びサブ・コンビネーションをカバーするように意図され、列挙された任意の1つの要素単独、任意のサブ・コンビネーション、又は全ての要素を含み、必ずしも追加的な要素を排除することを要しない。
【0029】
本願において、「・・・又は・・・の少なくとも1つ」という言い回しは、列挙された要素のうちの任意の1つ以上をカバーするように意図され、列挙された任意の1つの要素単独、任意のサブ・コンビネーション、又は全ての要素を含み、必ずしも何らかの追加的な要素を排除することを必要とせず、必ずしも全ての要素を必須としない。
【0030】
先ず
図1を参照すると、
図1はブロックチェーンに関連するネットワーク例をブロック図形式で示しており、そのネットワークは本願でブロックチェーン・ネットワーク100と言及され得る。ブロックチェーン・ネットワーク100は、招待無しに又は他のメンバーからの同意無しに誰でも参加し得るピア・ツー・ピア・オープン・メンバーシップ・ネットワークである。ブロックチェーン・ネットワーク100はブロックチェーン・プロトコルの下で動作し、そのブロックチェーン・プロトコルのインスタンスを実行する分散された電子デバイスは、ブロックチェーン・ネットワーク100に参加することができる。そのような分散された電子デバイスはノード102と言及され得る。ブロックチェーン・プロトコルは、例えばビットコイン・プロトコル、又は他の暗号通貨であってもよい。
【0031】
ブロックチェーン・プロトコルを実行し且つブロックチェーン・ネットワーク100のノード102を形成する電子デバイスは様々なタイプのものであるとすることが可能であり、例えば、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバー等のコンピュータ、スマートフォン等のモバイル・デバイス、スマート・ウォッチ等のウェアラブル・コンピュータ、又は他の電子デバイスを含む。
【0032】
ブロックチェーン・ネットワーク100のノード102は、有線及び無線通信技術を含み得る適切な通信技術を利用して互いに結合されている。多くのケースにおいて、ブロックチェーン・ネットワーク100は少なくとも部分的にインターネット上で実現され、幾つかのノード102は地理的に分散した場所に位置していてもよい。
【0033】
ノード102はブロックチェーンにおける全てのトランザクションのグローバル台帳を維持し、ブロックチェーンはブロックにグループ化され、各ブロックは、チェーンの中で先行するブロックのハッシュを含む。グローバル台帳は分散された台帳であり、各ノード102はグローバル台帳の完全なコピー又は部分的なコピーを格納することが可能である。グローバル台帳に影響を及ぼすノード102によるトランザクションは、他のノード102により検証され、その結果、グローバル台帳の有効性が維持される。ビットコイン・プロトコルを使用するもの等のブロックチェーン・ネットワークの実現及び動作の詳細は、当業者により理解されるであろう。
【0034】
各々のトランザクションは典型的には1つ以上のインプットと1つ以上のアウトプットとを有する。インプット及びアウトプットに埋め込まれるスクリプトは、トランザクションのアウトプットがどのように誰によりアクセスされ得るかを指定する。トランザクションのアウトプットは、トランザクションの結果として、価値(a value)が移転される先のアドレスであってもよい。そしてその価値は、未使用トランザクション・アウトプット(UTXO)としてその出力アドレスに関連付けられる。そして、以後のトランザクションは、その価値を使用又は消却するために、そのアドレスを入力として参照することができる。
【0035】
ノード102は各自の機能に応じて様々なタイプ又はカテゴリのものであってよい。ノード102に関連する4つの基本機能が存在することが示唆されており、ウォレット、マイニング、フル・ブロックチェーン・メンテナンス、及びネットワーク・ルーティングである。これらの機能の変形が存在してもよい。ノード102は1つより多い機能を有することが可能である。例えば、「フル・ノード」は4つ全ての機能を提供する。ライトウェイト・ノードは例えばディジタル・ウォレットで実装されてもよく、ウォレット及びネットワーク・ルーティング機能のみを発揮してもよい。完全なブロックチェーンを格納するのではなく、ディジタル・ウォレットはブロック・ヘッダを追跡することが可能であり、ブロック・ヘッダは、ブロックを問い合わせる場合にインデックスとして役立つ。ノード102は、TCP/IP(Transmission Control Protocol)等のコネクション指向プロトコルを利用して互いに通信する。
【0036】
本願はマーチャント・ノード104(時折「M-ノード」104のように言及される)という追加的なタイプ又はカテゴリのノードを提案及び説明している。M-ノード104はトランザクションの高速伝搬に焦点を当てて設計されている。それらは完全なブロックチェーンを保存せず、マイニング機能を実行しない。その意味において、それらはライトウェイト・ノード又はウォレットに類似している;しかしながら、それらはトランザクションの高速伝搬を可能にする追加的な機能を含む。M-ノード104の動作議論の中心は、迅速な検証及び特に他のM-ノード104に対する未承認トランザクションの伝搬であり、該他のM-ノード104から、未承認トランザクションが、ブロックチェーン・ネットワーク100における他のノード102へ速やかにプッシュされる。この機能を促進するため、M-ノード104は非常に多数の入って来る及び特に出て行くコネクションを許容されており、それらのコネクションは管理プロトコルのもとでは別の方法でノード102に許容されるかもしれない。
【0037】
M-ノード104はまとめてマーチャント・ネットワーク106(又は「M-ネット」106)と言及されてもよい。用語「マーチャント」は「特殊化された(specialised)を意味するものとして解釈され得る。図示の簡明化のため、
図1では物理的に別個のネットワークとして示されているが、M-ノード104はブロックチェーン・ネットワーク100に統合されてもよい。各々のM-ノード104は、ブロックチェーン・ネットワーク100における特殊ノードであり、M-ノード104の機能を実行し得ることを保証する所定のハードウェア及びパフォーマンス能力を満たす。即ち、M-ネット106は、ブロックチェーン・ネットワーク100の中にあり且つブロックチェーン・ネットワーク100を通じて分散されているサブ・ネットワークと考えられてよい。M-ノードは1つ以上の専用の機能又はサービスを実行するように配置及び構成され得る。
【0038】
M-ネット106が確実に動作し且つ所定のセキュリティ・レベルでサービスを提供するために、M-ノード104はM-ネット106全体についての良い外観を維持する必要があり、従って効率的なルーティング・プロトコルが配備される必要がある。M-ノード104が開始トランザクションを受信する度に、M-ノード104はそれを他のノード102に加えて幾つかの他のM-ノード104へブロードキャストする必要がある。M-ネット106の側面では、これは複数巡回セールスマン問題(MTSP)に対するソリューションを発見することに等しい。この問題に対処する非常に多くのソリューションが存在し、それらのうちの任意の1つがM-ネット105で使用され得る。M-ノード104の各々は何らかの最新の形式でルーティング最適化を行う。
【0039】
幾つかの実装において、M-ネット106は非セントラル化IPマルチキャスト・タイプのネットワークとして実現される。即ち、到来するトランザクションのブロックチェーン・ネットワーク100への速やかな拡散を可能にするために、マルチキャストが使用されてトランザクションがM-ネット106を通じて速やかにブロードキャストされることを保証し、全てのM-ノード104が、ブロックチェーン・ネットワーク100内の他のノード102へトランザクションを転送することに集中できるようにする。
【0040】
マルチキャスト・ネットワーク・アーキテクチャは、情報を受信することに関心のある各ノードに対してデータ重複なしに、宛先ノードのグループへ向けたデータの同時配布の可能性を許容する。ノードがマルチキャスト送信を受信することを希望する場合、ノードはマルチキャスト・グループに参加し(登録段階)、以後、マルチキャスト・グループへ送信された全てのデータを受信できることになる。IPマルチキャストは、どの程度多くの受信者が存在するかについての事前知識を必要とすることなく、より多くの受信者集団へスケーリングすることが可能であり、一度だけパケットを送信することをソースに要求することにより、ネットワーク・インフラストラクチャは効率的に使用される。マルチキャスト・ネットワークの性質のために、コネクション指向プロトコル(TCP等)を利用することは、多数の他ノードとの同時通信に起因して非実用的である。従ってコネクションレス・プロトコルが使用される。
【0041】
ビットコイン等の幾つかのブロックチェーン・ネットワークは、ノード・ツー・ノードのTCPを使用する。TCPを利用して送信されるデータ・パケットは、順序付けの目的で使用される関連シーケンス番号を有する。これに加えて、TCPプロトコルは、コネクションの設定及びその終了の双方の場合に、三段階ハンドシェーク手順を含む。TCPを介して送信されるパケットは関連するオーバーヘッドとともに到来し、それらは関連するシーケンス番号を有し、三段階ハンドシェーク・プロトコルが存在する。コネクションを設定する際に、128-136バイトが送信されているが、コネクションの閉鎖は160バイトのコストを要する。従ってパケット伝送におけるハンドシェークは296バイトに達するほどコストがかかる。更に、ノードが新しいトランザクションを受信すると、トランザクションのハッシュを含むインベントリ(INV)メッセージを他ノードに通知する。INVメッセージを受信したノードは、そのトランザクションのハッシュが以前に見られたか否かを検査し;見られていない場合、ノードは、GETDATAメッセージを送信することにより、トランザクションを要求するであろう。ノードAからノードBへトランザクションを送信するのに要する時間は、
T1=verification+TCP(inv+getdata+tx)
であり、ここでTCP()はTCPハンドシェーク手順で導入されるオーバーヘッドを示す。
【0042】
M-ノード104は他ノード102との通信のためにTCPを利用するように設定されているかもしれず、それは既存のプロトコルでは必須である。しかしながら、ノードは、M-ノード104からM-ノード104への通信に関して、又はより適切にはマルチキャストの状況でM-ノード104から複数のM-ノードへの通信に関してでさえ、ユーザー・データグラム・プロトコル(UDP)等のコネクションレス・プロトコルを利用することができる。TCPとは異なり、UDPはハンドシェーク・プロトコルを含まず、従ってM-ノード104はより迅速にトランザクションを伝搬することが可能である。このことはまた、実際のトランザクションをそれまで送信することなく、反復されたINVメッセージを送信することにより、悪意のノードが他ノードと結びついてしまうことを回避することもできる。
【0043】
UDPのライトウェイトの性質は所定のトレード・オフに関連する。誤り検査は少なく、誤り回復もない。幾つかの実装では、UDPのこれらの制限は、誤り回復、順序付け、再送をアプリケーション・レイヤの機能として実装することにより、アプリケーション・レベルで克服され得る。誤り検査をアプリケーション・レベルに配置することは、ネットワークからオーバーヘッドを取り除く。
【0044】
ある例示的な状況において、ブロックチェーン・ネットワーク100における正規のノード102が、マーチャント・ベース決済のようにM-ネット106により処理してもらうことを希望するトランザクションを生成する。ノードはそのトランザクションをM-ノード104へ送信してもよく、M-ノード104はマルチキャストを利用してそれを他のM-ノード104へブロードキャストする、あるいはノードがM-ノード104のIPマルチキャスト・アドレスを知っている場合には複数のM-ノード104へ直接的にトランザクションを送信してもよい。幾つかの例では、M-ネット106の全てのM-ノード104は単一のマルチキャスト・アドレスのメンバーであり、従ってそのアドレスへ送信された全てのトランザクションは全てのM-ノード104により受信される;しかしながら、幾つかのケースでは、M-ネット106に関連する1つより多いマルチキャスト・アドレスが存在してもよく、受信するM-ノード104は、トランザクションを完全なM-ネット106へ伝搬させるために、トランザクションの他のマルチキャスト・アドレスへの更なるブロードキャストが必要とされるか否かを、ルーティング情報から評価することができる。
【0045】
マルチキャストは、全てのM-ノード104に対する新たなトランザクションの速やかな初期伝搬を保証することを支援する;しかしながら、マルチキャストのソリューションは、増加したトランザクション・スループットに由来するブロックチェーン・ネットワーク100のスケーラビリティ問題には必ずしも対処していない。ネットワーク100内の各ノード102は、典型的には、ノードが発見した未承認トランザクションを含むメンプールを維持し、未承認トランザクションは、プルーフ・オブ・ワークを完了したマイナーによりブロックチェーンへ未だ組み込まれていないものである。支払処理で使用することから生じるトランザクション数の著しい増加は、各々のメンプールで保存するトランザクション量の増加となるであろう。従って、M-ネット106のノードはほぼ同時に新たなトランザクションを受信することが可能であるが、大規模で迅速に変化するメンプールに関してストレージ能力の限界を有するかもしれない。
【0046】
この問題に対処するため、本願は、マルチキャストを利用することに対する代替として、M-ノード104が、分散されたハッシュ・テーブル(a Distributed Hash Table:DHT)により実現される共有されるメンプールを利用することを提案する。
【0047】
500バイトというトランザクション(TX)の平均サイズ、及び~104TX/sというトランザクション・レートを仮定すると、M-ネット106は~400GBという日々の到来データを受信し得る。このデータの全てが、未承認トランザクションのメンプールの中で、変動する期間にわたって保存されることを要する。従って、M-ネット106はデータを高速に記憶するためにかなりのストレージ及び能力を必要とする。各自それぞれのM-ノード104に過剰に多くの条件を課さないために、M-ノード104はDHTを当てにする共有メンプールを実現する。各M-ノード104に、全ての到来するTXsを各自自身のメンプールに維持させる代わりに、各M-ノード104は、全体の内の一部分と、残りの部分のハッシュ及び関連するキー値とを格納するだけである。
【0048】
DHTは非セントラル化分散システムのクラスであり、そのシステムはノード間でキー・セットのメンバーシップ分割を許容し、且つ所与のキーの所有者だけに、効率的で最適化された方法でメッセージを送信することができる。ネットワークの各ノードは、ハッシュ・テーブルのアレイのセルとして理解され得る。DHTは、非常に多数のノードを管理するように、また、新たなノードがネットワークに参加し、古いノードが離脱及びクラッシュすることを、共有データの完全性を損なうことなく行うように設計されている。DHTは、非セントラル化(中央機関は存在せず、中央のコーディネータも存在しない)、スケーラビリティ(システムは何百万ものノードに対して効率的な行動をとる)、及び障害耐性(システムは信頼性があり、ネットワークに参加及び離脱する又はクラッシュするノードを管理することができる)を保証する。ネットワークの各ノードは、小数の他ノードだけと通じたままであってもよく、従って変動や新たなデータ部分が存在しても、ネットワークはオーバーロードにならない。
【0049】
同じ概念がUTXOデータベースに適用されてもよく、そのデータベースはブロックチェーンにおける全ての未使用アウトプットの集合を含む。UTXOデータベースは、一群のノードの中でコンテンツを共有するためにDHTを利用して構築され得る。
【0050】
M-ネット106のために共有メンプールを実現するために使用され得る多数の可能なDHTアーキテクチャ及びプロトコルが存在する。一例はPastry(商標)であるが、他にも多数存在する。Pastry(商標)は、オーバーレイ・ネットワークが分散システムで情報を格納及び転送することができることを維持するように設計されたプロトコルである。Pastry(商標)ネットワークにおける各ノードは128ビットの識別子を割り当てられ、識別子は循環ノードID空間(0から2128-1までの範囲)内でのノードの位置を指定するために使用される。IDはノードがネットワークに入るとランダムに指定される。各ノードは、ルーティング・テーブル、近隣セット及びリーフ・セットを維持する。
【0051】
ロバストなDHTの寸法決定において考察する一要因は、ネットワーク全体の堅牢性及び信頼性を保証するために必要なレプリカの数である。既に言及されているように、ノードはネットワークに参加して離脱することが可能であり、この事実はデータの利用可能性に影響すべきではない。トランザクションAを格納しているノードがネットワークを離れる場合、ネットワークの他の部分でトランザクションAを発見する必要がある。例えばビットコインのような既存のブロックチェーン・ネットワークでは、ネットワークは、ネットワークにおける全ノード数に等しい数のブロックチェーン・レプリカ(平均5000レプリカ)を有するが、このことはスケーラビリティに影響を及ぼす。
【0052】
目下提案しているM-ネット106では、メンプールは、全てのM-ノード104で完全には複製されておらず、そうではなくDHTにより実現されている。信頼性をもたらすため、DHTは幾らかのオーバーラップを有するように実現されることが可能であり;即ち、各々のトランザクション・データ・アイテムは1つより多いM-ノード104(但し、全てのM-ノード104ではない)において複製される。一例として、DHTは2レプリカという最小数を指定するように実現されてもよい。これは、ノード間の完全な独立性を仮定した場合に、任意の所与の時間に2つのノードが一度に落ちてしまう確率が次のようになる結果をもたらす。
【数1】
【0053】
ここで
図2を参照すると、
図2は分散されたメンプール204に新たなトランザクションを格納するプロセス200を示すシーケンス図を示す。分散されたメンプール204はDHTを利用して実現される。プロセス200はノード102がトランザクションをM-ノード104へ送信することを含む。M-ノード104は、キー値を得るために、実装に応じて、トランザクション又はトランザクションIDをハッシュする。キー値は、トランザクションが格納されるべきM-ノード104又は複数のM-ノード104(複製データの場合)を示す。M-ノード104はトランザクションを分散されたメンプール204に格納し、これは、M-ネット106におけるM-ノード104の割り当てられたID及びキー値に基づいて、トランザクションが格納されるべき適切なM-ノード104へトランザクションをルーティングすることを含み得る。M-ノード104は、関連するDHTプロトコルに依存してアクノリッジメントを受信してもよい。
【0054】
ここで
図3も参照すると、
図3はブロックチェーン・ネットワークでトランザクションを伝搬させる方法の一例300をフローチャート形式で示す。方法300はM-ノード104(
図1)によって実現される。M-ノード104はオペレーション302において正規のノードから新しいトランザクションを受信する。M-ノード104はトランザクションの真正を確認するために、所定の検証オペレーションを実行することができる。
【0055】
オペレーション304により示されるように、トランザクションは、トランザクションのキーを生成するためにハッシュされ得る。キーは、DHTの中でトランザクションが格納されるべき場所を示すことが可能であり、その場所は現在のM-ノード104以外のノードにおけるものであってもよい。次いでオペレーション306においてMノード104はトランザクションがDHTに既に存在するか否かを評価する。各M-ノード104は、M-ネット106(
図1)を構築するM-ノード104の中でキー空間(the keyspace)の区分に基づいて、格納されたトランザクションの一部分を有する。幾つかの実装において、キー空間は、参加しているM-ノード104の中で分けられる。区分けは,ネットワークの回復力の複製(replication for resiliency of the network)を引き起こすようにオーバーラップを含んでもよい。Pastry(商標)を使用すること等のような幾つかの実装において、各M-ノード104は固有のキー又はID番号を割り当てられ、トランザクションは、トランザクションのキー値に対する近接性に基づいて、M-ノード104又は複数のM-ノード104(複製が望まれる場合)に格納され得る。M-ノード104は、トランザクションのローカルに格納された部分と、残りの部分のハッシュ又はキー値とを有し得る。従って、オペレーション306において、ノード104は、ローカル・データに基づいて新たなデータがDHTにあるか否かを評価することが可能であり得る。
【0056】
トランザクションがDHT内にある場合、オペレーション308において、M-ノード104はそのキー値に基づいてトランザクションをDHTに格納する。一般的な意味において、これは、put(k,tx)オペレーションの形式をとることができ、ここでkはキー値であり、txはトランザクションである。適用可能なDHTルーティング・プロトコルは、トランザクションが適切なM-ノード104へ送信されてそこに格納されることを保証する。DHTは選択された実装に応じて分散ハッシュ・テーブルの様々なプロトコルに従って動作し得る。M-ネット106にトランザクションを格納するためにDHTを利用することは、M-ネット106内でINV/GETDATAメッセージを利用してトランザクションを全てのM-ノード104へルーティングすることを回避する。
【0057】
オペレーション310において、M-ノード104は、この例では、ブロックチェーン・ネットワーク100の通常のトランザクション転送プロトコルに従って、ブロックチェーン・ネットワーク100の正規のノード102へトランザクションを送信する。例えば、通常のノードの通信は、ノード・ツー・ノード・コネクションのためにTCPを利用することができる。
【0058】
ここで
図4を参照すると、
図4はM-ノード400の簡略化された一例をブロック図形式で示している。この例におけるM-ノード400は、プロセッサ402と、ネットワーク・インターフェース404と、メモリ406とを含む。M-ノード400は、本願で説明される機能を実行するためにネットワーク接続リソース、十分な処理リソース、及びメモリ・リソースを有する適切な任意のコンピューティング・ハードウェアを利用して実現され得る。M-ノード400は本願で説明される機能を実現するプロセッサ実行可能命令を含み得る。幾つかのケースにおいて、プロセッサ実行可能命令は、ブロックチェーン・マーチャント・ノード・アプリケーション420として言及されてもよいが、命令は、ハードウェア及びオペレーティング・システムに依存して、1つ以上のモジュール、アプリケーション、スクリプト、又は他のプログラミング構造で実現され得ることが認められるであろう。プロセッサ402はマルチ・コア・プロセッサ、及び/又は複数のプロセッサを含み得る。
【0059】
メモリ406は、DHTキー値(即ち、M-ノードID)に部分的に基づいて、DHTベース・メンプール410のうちの指定された部分を含むデータを格納する。この実装例では、メモリ406は、ルーティング・テーブル412と、近隣セット414と、リーフ・セット416とを更に格納する。ルーティング・テーブル412はM-ネット内の特定のルーティング宛先のリストを含み、ノードがデータのパケットを受信すると、ノードはルーティング・テーブルを参照し、そのデータを送信する先を知る。ルーティング・テーブル412はまた、各宛先がM-ノード400からどれだけ離れているかについての情報を含んでもよい。近隣セット414は、例えば近接性メトリック(ピン・レイテンシ)に基づく近接M-ノードに関する情報を含む。リーフ・セット416は数値的に近いM-ノードを含む。M-ノードは、それらのキー値(ノードID)が数値的に近い場合に、数値的に近い。メモリ406は、以下において更に説明されるように、M-ノード評判テーブル418を更に含む。
【0060】
スケーラビリティを提供するために、DHTを利用してメンプールを実現することに加えて、M-ネットはノードがM-ネットに参加することを許容する。
図5は、メンプールがDHT506として実装されているM-ネットに新たなノード504が参加する例を示すシーケンス
図500を示す。新たなノード504は既にM-ネットの一部である少なくとも1つのM-ノードのアドレスを有する必要があり、それにより、新たなノードは何れかのM-ノードへ参加リクエスト(join request)を仕向けることができる。信号ダイアグラム500は新たなノード504が「joinDHT(m-node.address)リクエスト」をM-ノード502へ送信する例を示す。M-ノード502は、所定の検証アクションを実行し、検証アクションは新たなノード504を問い合わせることを含む。例えば、M-ネットは、M-ノード502を指定しているM-ネットに参加することに関連する一組の最低基準を有していてもよい。例示として、基準は、利用可能な最小処理リソース、利用可能な最小空きメモリ、接続条件を含んでもよい。
【0061】
新たなノード504を検査するために検証オペレーションが実行されるものが何であれ、M-ノード502は完了したと仮定すると、M-ノードは、DHTプロトコルがDHT506の動作を管理するものが何であれそれに従ってDHT506へjoinrequest()を転送する。そしてDHT506は新たなノード504と通信し、ルーティング・テーブル、キー値(ノードID)、及び何らかの他のデータを提供し、新たなノード504がM-ネットにおける新たなM-ノードとして機能できるようにする。
【0062】
ノードがM-ネットに参加し得る容易性は悪意のノードがネットワークに参加し得る点で脆弱性をもたらすことが認められるであろう。潜在的な悪意のノードを識別及び分離するために、本願はM-ノードがM-ノード評判テーブル418を格納することをもたらす。
図6はノードの行動ランキングを追跡及び更新するために使用されるM-ノード評判テーブル418の一例を図式的に示す。
【0063】
新たなノードがネットワークに参入すると、そのノードは、ノードIDフィールド602により示されるように、M-ノード評判テーブル418に追加され得る。テーブル418は幾つかの実装において参加時間604を更に含んでもよい。テーブル418はそのM-ノードに関するスコア606又は格付けを更に含む。
【0064】
スコア606は所定の行動メトリックに基づいて上下に調整され得る。例えば、M-ノードがトランザクションを転送することに失敗した場合、ある期間にわたって沈黙したままである場合、取引でないと判断されるトラフィックでM-ネットをあふれさせる場合、あるいはその他の否定的な挙動に関わる場合、そのランキングは落とされる又は減らされることが可能である。ノードのスコアが所定の最小値より下に落ちた場合、ノードはM-ネットから排除されるかもしれない。
【0065】
特定のM-ノードで保持されるM-ノード評判テーブル418は、全てのM-ネットではなく、近隣のスコアを追跡することに制限されてもよい。従って、新たなM-ノードが時間tにネットワークに参加する場合、近隣のM-ネット評判テーブルは新たなノードに関する如何なる情報も含まないが、それらは、その時点tから、ノード・レジスタ・テーブルに情報を格納する新たなノードの評判を構築し始める。例えば、新たなノードがサイレント・ノードである場合、それは、そのノードはネットワークを介して受信した情報を転送しないことを意味し、全ての近隣は、各自それぞれのM-ノード評判テーブルでその挙動を記録し始め、例えば、新たなノードのIDに否定的な値を指定する。所定の時間の後(t+n)、新たなノードに気付いている全てのノードのM-ノード評判テーブルが負の値を含む場合、それらのノードは、新たなノードを分離し、それをネットワークから禁止するように決定してもよい。
【0066】
ここで
図7を参照すると、
図7は例示的なメンプール・データ・エントリ700を示す。M-ネットの分散されたメンプール内のトランザクションは、承認される前に、即ちブロックチェーンに追加されて承認されるブロックに組み込まれる前に、かなりの期間にわたって待機するかもしれない。十分な数の後続ブロックがその上にブロックチェーンに追加されると、ブロックは「承認された」と考えられ、その結果、ブロックチェーンにおける成長を逆転させ、異なるブランチ又はフォークに変えるためにブロックを取り除くことは計算上不可能になる。
【0067】
メンプールの大きさ及び柔軟性、並びにトランザクションの量に起因して、所与のトランザクションが、ビットコイン等の幾つかのブロックチェーンの実装におけるものより長期間にわたって承認されないかもしれないことがあり得る。従来のビットコイン実装では、トランザクションは、それがブロックに組み込まれると速やかにメンプールから除去される。これは、ブロックがオーファン(孤児)ブロックとなった場合、ブロック中の全てのトランザクションがネットワークで再送されることを意味する。これは非現実的であり得るし、高速トランザクション・ネットワークの場合に所定のトランザクションを承認するために長い遅延を招く結果となり得る。
【0068】
従って、幾つかの実装において、メンプールは,トランザクションが組み込まれたブロックの承認数、即ちトランザクションが組み込まれたブロックに続いてブロックチェーンに追加されたブロックの数を追跡することができる。所定数の承認が生じた後に限り、トランザクションはメンプールから削除される。所定数は4、5、6、7であってもよいし、あるいは所与の実装に関する適切な任意の数であってよい。
図7に示されるように、メンプール・データ・エントリ700は、トランザクションIDフィールド702、トランザクション・フィールド704、及び承認数(NoC)フィールド706を含むように構成されてもよい。別の実装では、NoCを追跡するのではなく、メンプール・データ・エントリ700は単にブロック番号を記録してもよい。ブロック番号から、ブロックチェーンの現在のブロック番号に基づいて、幾つの承認が生じたかを評価することが可能である。
【0069】
必要な承認数が生じると、トランザクションはメンプールから安全に削除され得る。このように、オーファン・ブロックの場合にトランザクションのロスはなく、トランザクションは、必要承認数の後に永続的に削除される。
【0070】
本発明の1つ以上の実施形態は、改善されたブロックチェーン実装方法及びシステムとして説明されてもよい。それはブロックチェーン・ネットワークによる書き込み動作、交換、移転などの処理の改善された速度を提供することができる。本発明の他の利点も提供され得る。
【0071】
本願で説明されるデバイス及びプロセス、並びにビデオ特徴抽出器を構成する説明された方法/プロセスを実現する任意のモジュール、ルーチン、プロセス、スレッド、アプリケーション、又はその他のソフトウェア・コンポーネントは、標準的なコンピュータ・プログラミング技術及び言語を利用して実現され得ることが、理解されるであろう。本願は特定のプロセッサ、コンピュータ言語、コンピュータ・プログラミング規則、データ構造、又は他のそのような実装の詳細に限定されない。
【0072】
上記の実施形態は本発明を限定ではなく例示していること、及び当業者は添付の特許請求の範囲に規定されるような発明の範囲から逸脱することなく、多くの代替的な実施形態を設計し得ることに留意すべきである。特許請求の範囲において、括弧内の任意の参照符号は特許請求の範囲を限定するように解釈されてはならない。「有している」及び「有する」等の言葉は、任意の請求項又は明細書全体として列挙されているもの以外の要素又はステップの存在を排除していない。本明細書において、「~を有する」は「~を含む又は~から成る」を意味し、「~を有している」は「~を含んでいる又は~から構成されている」を意味している。要素の単独の参照は、そのような要素の複数の参照を排除しておらず、逆もまた同様である。発明は、幾つかの別個の要素を含むハードウェアによって、及び適切にプログラムされたコンピュータによって実現され得る。幾つかの手段を列挙する装置の請求項において、これらのうち幾つかの手段はハードウェアの1つの同じアイテムにより具現化されてもよい。所定の複数の事項が相互に異なる従属請求項で引用されているという単なるその事実は、これらの事項の組み合わせが有利に使用され得ないことを示すものではない。
【0073】
(付記1)
ブロックチェーンを実現するために使用される相互接続されたノードのネットワーク上でブロックチェーン・トランザクションの分散を促すように構成される特殊ネットワーク・ノードであって、前記ノードの部分集合はオーバーレイ・ネットワークにより相互接続される特殊ネットワーク・ノードであり、前記特殊ネットワーク・ノードは:
プロセッサ;
分散ハッシュ・テーブルとして構造化された分散されたメンプールのうちの指定された部分を格納するメモリであって、前記分散されたメンプールは承認を待機しているペンディング・トランザクションを含む、メモリ;
ネットワーク・インターフェース;及び
プロセッサ実行可能な命令を含むブロックチェーン特殊ネットワーク・ノード・アプリケーション;
を含み、前記命令は、前記プロセッサにより実行されると、前記プロセッサに:
トランザクション識別子を含むトランザクションを受信すること;
キーを得るために前記トランザクション識別子をハッシュすること;
前記分散されたメンプールに前記トランザクションが格納されているか否かを前記キーを利用して確認し、格納されていない場合、前記トランザクションをペンディング・トランザクションとして前記分散されたメンプールに格納すること;及び
前記トランザクションを特殊ネットワーク・ノード以外のノード群へピア・ツー・ピア・コネクションを利用して送信すること;
を行わせる特殊ネットワーク・ノード。
(付記2)
前記メモリは、前記トランザクションを含み且つ前記ブロックチェーンに含まれるブロックの承認数に関するデータを更に格納し、前記命令は、前記承認数が最低数に到達した場合に、前記分散されたメンプールから前記トランザクションを削除することを前記プロセッサに行わせる、請求項1に記載の特殊ネットワーク・ノード。
(付記3)
前記承認数に関する前記データは、前記ブロックチェーンに追加される新たなブロック各々に関して更新される承認数のカウント、又は前記トランザクションが含まれる前記ブロックのブロック番号の何れかである、請求項2に記載の特殊ネットワーク・ノード。
(付記4)
前記メモリは、何らかの検出された新たな近隣の特殊マーチャント・ノードに関する識別子と、前記新たな近隣の特殊ネットワーク・ノードの検出されたアクティビティに基づく新たな近隣の特殊ネットワーク・ノードの関連するスコアとを含む特殊ネットワーク・ノード評判テーブルを更に格納する、請求項1-3のうち何れか一項に記載の特殊ネットワーク・ノード。
(付記5)
前記命令は、前記新たな近隣の特殊ネットワーク・ノードの前記スコアを更新すること、及び前記新たな近隣の特殊ネットワーク・ノードの前記スコアが閾値より下に落ちたことを判定し、その結果、前記新たな近隣の特殊ネットワーク・ノードを悪意のノードとして指定し、前記新たな近隣の特殊ネットワーク・ノードを孤立させることを前記プロセッサに行わせるように構成されている、請求項4に記載の特殊ネットワーク・ノード。
(付記6)
前記分散されたメンプールのうちの前記指定された部分は、前記特殊ネットワーク・ノードのうちの別のものに格納された前記分散されたメンプールの第2部分と部分的にオーバーラップしている、請求項1-5のうち何れか一項に記載の特殊ネットワーク・ノード。
(付記7)
前記特殊ネットワーク・ノードの各々は、前記分散されたメンプールの各自指定された部分を格納し、前記各自指定された部分は、前記ペンディング・トランザクションの各々が少なくとも2つの前記特殊ネットワーク・ノードに格納されるが、前記特殊ネットワーク・ノードの全てには格納されないように、部分的にオーバーラップし、選択的に、前記ペンディング・トランザクションの各々は、前記分散されたメンプールの各自指定された2つに過ぎない部分に含まれる、請求項1-5のうち何れか一項に記載の特殊ネットワーク・ノード。
(付記8)
ブロックチェーンを実現するために使用されるネットワークに結合される複数のノードに関わるブロックチェーン転送を促進するコンピュータで実現される方法であって、前記複数のノードの部分集合は特殊ネットワーク・ノードであり、前記特殊ネットワーク・ノードは、承認を待機するペンディング・トランザクションを含む分散されたメンプールを格納し、前記分散されたメンプールは前記特殊ネットワーク・ノードの中で分散ハッシュ・テーブルとして実現され、前記方法は:
トランザクション識別子を含むトランザクションを受信するステップ;
キーを得るために前記トランザクション識別子をハッシュするステップ;
前記分散されたメンプールに前記トランザクションが格納されているか否かを前記キーを利用して確認し、格納されていない場合、前記トランザクションをペンディング・トランザクションとして前記分散されたメンプールに格納するステップ;及び
前記トランザクションを特殊ネットワーク・ノード以外のノード群へピア・ツー・ピア・コネクションを利用して送信するステップ;
を含む方法。
(付記9)
前記トランザクションを含み且つ前記ブロックチェーンに含まれるブロックの承認数を判定し、前記承認数が最低数に到達した場合に、前記分散されたメンプールから前記トランザクションを削除するステップを更に含む請求項8に記載の方法。
(付記10)
前記トランザクションを前記メンプールに格納するステップが、トランザクションが含まれるブロックの承認数に関連して前記トランザクションを格納するステップを含み、前記トランザクションに関して前記メンプールに格納される承認数は、新たなブロックが前記ブロックチェーンに追加されると更新される、請求項9に記載の方法。
(付記11)
前記トランザクションを前記メンプールに格納するステップが、トランザクションが含まれるブロックの承認数に関連して前記トランザクションを格納するステップを含み、前記承認数を決定することは、前記ブロックチェーンに関する現在のブロック番号を確認し、前記現在のブロック番号と、前記トランザクションが含まれている前記ブロックのブロック番号とを比較することを含む、請求項9に記載の方法。
(付記12)
新たな近隣の特殊ネットワーク・ノードを検出するステップ;
前記新たな近隣の特殊ネットワーク・ノードの識別子を、特殊ネットワーク・ノード評判テーブルに格納するステップ;及び
前記新たな近隣の特殊ネットワーク・ノードの検出されたアクティビティに基づいて、前記特殊ネットワーク・ノード評判テーブルにおける前記新たな近隣の特殊マーチャント・ノードのスコアを更新するステップ;
を更に含む請求項8-11のうち何れか一項に記載の方法。
(付記13)
前記新たな近隣の特殊ネットワーク・ノードの前記スコアが閾値より下に落ちたことを判定し、その結果、前記新たな近隣の特殊ネットワーク・ノードを悪意のノードとして指定し、前記新たな近隣の特殊ネットワーク・ノードを孤立させるステップを更に含む請求項12に記載の方法。
(付記14)
前記特殊ネットワーク・ノードのうちの1つが前記分散されたメンプールの一部分を格納し、前記特殊ネットワーク・ノードのうちの前記1つに格納された前記分散されたメンプールのうちの一部分は、前記特殊ネットワーク・ノードのうちの別のものに格納された前記分散されたメンプールの第2部分と部分的にオーバーラップしている、請求項8-13のうち何れか一項に記載の方法。
(付記15)
前記特殊ネットワーク・ノードの各々は、前記分散されたメンプールの各自の部分を格納し、前記各自の部分は、前記ペンディング・トランザクションの各々が少なくとも2つの前記特殊ネットワーク・ノードに格納されるが、前記特殊ネットワーク・ノードの全てには格納されないように、部分的にオーバーラップし、選択的に、前記ペンディング・トランザクションの各々は、前記分散されたメンプールの2つに過ぎない各自の部分に含まれる、請求項8-13のうち何れか一項に記載の方法。
(付記16)
複数の参加ノードの中でブロックチェーン・トランザクションに参加するためのプロセッサ実行可能な命令を格納する非一時的なプロセッサ読み取り可能な媒体であって、前記プロセッサ実行可能な命令は、前記参加ノードのうちの1つにおけるプロセッサにより実行されると、請求項8-15のうち何れか一項に記載の方法を前記プロセッサに実行させる、非一時的なプロセッサ読み取り可能な媒体。