(57)【要約】      （修正有）【課題】ブロックチェーンのブロックを格納して、ブロックチェーンネットワークで、採掘ノードとして参加するためブロックチェーン認識ストレージデバイスを提供する。【解決手段】ブロックチェーン認識ストレージデバイス１００は、不揮発性メモリ１４０と、不揮発性メモリ１４０を制御するストレージコントローラ１４４と、ネットワークインターフェース１５０と、ブロックチェーンアルゴリズムを具現して不揮発性メモリにブロックチェーンアルゴリズムに対応するブロックチェーンの少なくとも一つのブロックを格納するＦＰＧＡ１３０と、コマンドを格納するメモリを含むプロセッサ１１０と、を含む。【効果】ブロックチェーンアルゴリズムと暗号化ハッシュの計算をハードウェアで具現することにより、エネルギーの使用と冷却量の大きな減少が達成される。【選択図】図１
2019144540.tif 000002
【特許請求の範囲】
【請求項１】
第１不揮発性メモリと、
前記第１不揮発性メモリを制御するように構成される第１ストレージコントローラと、
第１ネットワークインターフェースと、
第１ブロックチェーンアルゴリズムを具現して前記第１ストレージコントローラを介して前記第１不揮発性メモリに前記第１ブロックチェーンアルゴリズムに対応するブロックチェーンの少なくとも一つのブロックを格納するように構成される第１ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ  ）と、
第１コマンドを格納するように構成される第１メモリを含む第１プロセッサと、を包含し、
前記第１コマンドは、前記第１プロセッサによって実行されるとき、前記第１プロセッサが前記第１ネットワークインタフェースを介して前記ブロックチェーンの少なくとも一つのブロックを伝送及び受信して前記ブロックチェーンの前記少なくとも一つのブロック上で前記第１ＦＰＧＡを制御して前記第１ブロックチェーンアルゴリズムを実行するように惹起することを特徴とするプログラム可能なデータストレージデバイス。
【請求項２】
前記第１ストレージコントローラは、キーバリューストア（ｋｅｙ−ｖａｌｕｅ  ｓｔｏｒｅ）を具現し、
前記第１ストレージコントローラは、キーとしてのブロックのハッシュバリューと関連して、前記キーバリューストアのバリューとしての前記ブロックチェーンの前記少なくとも一つのブロックを格納するように構成される、ことを特徴とする請求項１に記載のプログラム可能なデータストレージデバイス。
【請求項３】
前記第１ストレージコントローラは、前記第１不揮発性メモリにデータの第１タイプのデータ及び第２タイプのデータを格納するように構成され、
前記第１タイプの前記データは、ブロックチェーンデータであり、前記第２タイプの前記データは、前記第１タイプの前記データと異なる、ことを特徴とする請求項１に記載のプログラム可能なデータストレージデバイス。
【請求項４】
前記第１メモリは、前記第１プロセッサによって実行されるとき、前記第１プロセッサが前記プログラム可能なデータストレージデバイスを、ブロックチェーンネットワークのブロックチェーンのノードとしてオペレーションさせるように惹起する第２コマンドを格納するように、さらに構成される、ことを特徴とする請求項１に記載のプログラム可能なデータストレージデバイス。
【請求項５】
前記第１ストレージコントローラは、第１サイズと関連して、前記第１不揮発性メモリにデータを格納するように構成され、
前記ブロックチェーンの各ブロックは、第２サイズを有し、
前記第２サイズは、前記第１サイズの倍数である、ことを特徴とする請求項１に記載のプログラム可能なデータストレージデバイス。
【請求項６】
前記第２サイズは、前記第１サイズと同一である、ことを特徴とする請求項５に記載のプログラム可能なデータストレージデバイス。
【請求項７】
前記第１不揮発性メモリは、ＮＡＮＤフラッシュを包含し、
前記第１ストレージコントローラは、フラッシュ変換ロジックモジュールを包含し、
前記第１サイズは、ＮＡＮＤブロックサイズである、ことを特徴とする請求項５に記載のプログラム可能なデータストレージデバイス。
【請求項８】
前記第１メモリは、第３コマンドを格納するようにさらに構成され、
前記第３コマンドは、前記第１プロセッサによって実行されるとき、前記第１プロセッサは、
前記第１ブロックチェーンアルゴリズムと異なる第２ブロックチェーンアルゴリズムを具現するための前記第１ＦＰＧＡをプログラムするためのビットファイルをロード（ｌｏａｄ）し、
前記第２ブロックチェーンアルゴリズムを具現するための前記第１ＦＰＧＡを再構成するための前記ビットファイルを使用して前記第１ＦＰＧＡをプログラムするように惹起する、ことを特徴とする請求項１に記載のプログラム可能なデータストレージデバイス。
【請求項９】
前記ビットファイルは、前記第１不揮発性メモリに格納される、ことを特徴とする請求項８に記載のプログラム可能なデータストレージデバイス。
【請求項１０】
前記ビットファイルは、前記第１ネットワークインターフェースを通して受信される、ことを特徴とする請求項８に記載のプログラム可能なデータストレージデバイス。
【請求項１１】
前記第１ＦＰＧＡは、暗号化アクセラレーターを包含し、前記暗号化アクセラレーターを使用して、前記第１ブロックチェーンアルゴリズムを具現するように、さらに構成される、ことを特徴とする請求項１に記載のプログラム可能なデータストレージデバイス。
【請求項１２】
第２不揮発性メモリと、
前記第２不揮発性メモリを制御するように構成される第２ストレージコントローラと、
第２ネットワークインターフェースと、
前記第１ブロックチェーンアルゴリズムを具現して前記第２ストレージコントローラを介して前記第２不揮発性メモリに前記第１ブロックチェーンアルゴリズムに対応する前記ブロックチェーンの少なくとも一つのブロックを格納するように構成される第２ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ  ）と、
第４コマンドを格納するように構成される第２メモリを包含し、
前記第４コマンドは、第２プロセッサによって実行されるとき、前記第２プロセッサが前記第２ネットワークインターフェースを介して前記ブロックチェーンの前記少なくとも一つのブロックを伝送又は受信して前記ブロックチェーンの前記少なくとも一つのブロック上で前記第１ブロックチェーンアルゴリズムを実行するように前記第２ＦＰＧＡを制御するように惹起できる、ことを特徴とする請求項１に記載のプログラム可能なデータストレージデバイス。
【請求項１３】
第１不揮発性メモリと、
前記第１不揮発性メモリを制御するように構成される第１ストレージコントローラと、
第１ネットワークインターフェースと、
第１ブロックチェーンアルゴリズムを具現して、前記第１ストレージコントローラを介して前記第１不揮発性メモリに前記第１ブロックチェーンアルゴリズムに対応する第１ブロックチェーンの少なくとも一つのブロックを格納するように構成される第１ＦＰＧＡと、
第１コマンドを格納するように構成される第１メモリを含む第１プロセッサを含む第１プログラム可能なデータストレージデバイスと、
第２不揮発性メモリと、
前記第２不揮発性メモリを制御するように構成される第２ストレージコントローラと、
第２ネットワークインターフェースと、
第２ブロックチェーンアルゴリズムを具現して、前記第２ストレージコントローラを介して前記第２不揮発性メモリに前記第２ブロックチェーンアルゴリズムに対応する第２ブロックチェーンの少なくとも一つのブロックを格納するように構成される第２ＦＰＧＡと、
第２コマンドを格納するように構成される第２メモリを含む第２プロセッサを含む第２プログラム可能なデータストレージデバイスと、
前記第１ネットワークインターフェースを介して、前記第１プログラム可能なデータストレージデバイスと通信し、前記第２ネットワークインターフェースを介して前記第２プログラム可能なデータストレージと通信し、少なくとも２つのブロックチェーンのネットワークと通信するように構成され、第３プロセッサ、及び第３コマンドを格納するように構成される第３メモリを含むネットワークハードウェアと、を包含し、
前記第１コマンドは、前記第１プロセッサによって実行されるとき、前記第１プロセッサが前記第１ネットワークインターフェースを介して前記ブロックチェーンの少なくとも一つのブロックを伝送及び受信し、前記第１ブロックチェーンの前記少なくとも一つのブロック上で前記第１ブロックチェーンアルゴリズムを実行するための前記第１ＦＰＧＡを制御するように惹起し、
前記第２コマンドは、前記第２プロセッサによって実行されるとき、前記第２プロセッサが前記第２ネットワークインターフェースを介して前記ブロックチェーンの前記少なくとも一つのブロックを伝送及び受信し、前記第２ブロックチェーンの前記少なくとも一つのブロック上で前記第２ブロックチェーンアルゴリズムを実行するために前記第２ＦＰＧＡを制御するように惹起し、
前記第３コマンドは、前記第３プロセッサによって実行されるとき、前記第３プロセッサが、前記少なくとも２つのブロックチェーンネットワークからブロックチェーンの要請を受信し、前記第１プログラム可能なデータストレージデバイス及び前記第２プログラム可能なデータストレージデバイスのうち、少なくとも一つに前記ブロックチェーンの要請を分配するように惹起する、ことを特徴とするプログラム可能なネットワークデータストレージシステム。
【請求項１４】
前記第１ブロックチェーンアルゴリズムは、前記第２ブロックチェーンアルゴリズムと異なり、
前記ネットワークハードウェアの前記第３メモリは、第４コマンドをさらに格納し、
前記第４コマンドは、前記第３プロセッサによって実行されるとき、第３プロセッサは、
前記ブロックチェーンの要請が前記第１ブロックチェーンアルゴリズム及び前記第２ブロックチェーンアルゴリズムのうち、少なくとも１つに関連しているか否かを判別し、
前記ブロックチェーンの要請が前記第１ブロックチェーンアルゴリズムと関連される場合、前記ブロックチェーンの要請を前記第１プログラム可能なデータストレージデバイスに分配し、
前記ブロックチェーンの要請が前記第２ブロックチェーンアルゴリズムと関連される場合、前記ブロックチェーンの要請を前記第２プログラム可能なデータストレージデバイスに分配する、ことを特徴とする請求項１３に記載のプログラム可能なネットワークデータストレージシステム。
【請求項１５】
前記第４コマンドは、第５コマンドを包含し、
前記第５コマンドは、前記第３プロセッサによって実行されるとき、前記第３プロセッサが前記ブロックチェーンの要請を、複数のサブタスクに分割し、前記サブタスクを、前記第１プログラム可能なデータストレージデバイス及び前記第２プログラム可能なデータストレージデバイスに分配する、ことを特徴とする請求項１４に記載のプログラム可能なネットワークデータストレージシステム。
【請求項１６】
前記第１メモリは、第６コマンドをさらに格納し、前記第３メモリは、第７コマンドをさらに格納し、
前記第６コマンドは、前記第１プロセッサによって実行されるとき、前記第１プロセッサが前記第１ブロックチェーンアルゴリズムとは異なる第３ブロックチェーンアルゴリズムを具現するために前記第１ＦＰＧＡをプログラムするためのビットファイルをロードし、前記第３ブロックチェーンアルゴリズムを具現するための前記第１ＦＰＧＡを再構成するためのビットファイルを使用して前記第１ＦＰＧＡをプログラムするように惹起し、
前記第７コマンドは、前記第３プロセッサによって実行されるとき、前記第３プロセッサが、前記第１プロセッサを制御して前記第３ブロックチェーンアルゴリズムを具現するために、前記第１ＦＰＧＡを再構成するための前記第７コマンドを実行する、ことを特徴とする請求項１３に記載のプログラム可能なネットワークデータストレージシステム。
【請求項１７】
前記第３メモリは、第８コマンドをさらに格納し、
前記第８コマンドは、前記第３プロセッサによって実行されるとき、前記第３プロセッサは、
前記少なくとも２つのブロックチェーンネットワークのそれぞれの状態をモニタリングし、
前記第１プログラム可能なデータストレージデバイスの第１状態及び前記第２プログラム可能なデータストレージデバイスの第２状態を追跡し、
前記少なくとも２つのブロックチェーンネットワークのそれぞれの状態である、前記第１状態及び前記第２状態に基づいて、前記第２プログラム可能なデータストレージデバイスの再割り当てを識別し、
前記再割り当てにより、前記第１ブロックチェーンアルゴリズムを具現するために、前記第２ＦＰＧＡを再構成するように惹起する、ことを特徴とする請求項１３に記載のプログラム可能なネットワークデータストレージシステム。
【請求項１８】
前記第１ストレージコントローラは、キーバリューストアを具現し、
前記第１ストレージコントローラは、キーとしてのブロックのハッシュバリューに基づいて、前記キーバリューストアのバリューとして前記第１ブロックチェーンの前記少なくとも一つのブロックを格納するように構成される、ことを特徴とする請求項１３に記載のプログラム可能なネットワークデータストレージシステム。
【請求項１９】
前記第１メモリは、第９コマンドをさらに格納し、
前記第９コマンドは、前記第１プロセッサによって実行されるとき、前記第１プロセッサが、前記少なくとも２つのブロックチェーンネットワークのブロックチェーンネットワークにおけるブロックチェーンのノードとして、前記第１プログラム可能なデータストレージデバイスをオペレーションさせるように惹起する、ことを特徴とする請求項１３に記載のプログラム可能なネットワークデータストレージシステム。
【請求項２０】
前記第１ストレージコントローラは、第１サイズにより、前記第１不揮発性メモリにデータを格納し、
前記第１ブロックチェーンの各ブロックは、第２サイズを有し、
前記第２サイズは、前記第１サイズの倍数である、ことを特徴とする請求項１３に記載のプログラム可能なネットワークデータストレージシステム。
【請求項２１】
前記第１不揮発性メモリは、ＮＡＮＤフラッシュを包含し、
前記第１ストレージコントローラは、第１フラッシュ変換ロジックモジュールを包含し、
前記第１サイズは、ＮＡＮＤブロックのサイズである、ことを特徴とする請求項２０に記載のプログラム可能なネットワークデータストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データストレージデバイス、及びネットワークデータストレージシステムに係り、より詳しくは、プログラム可能なデータストレージデバイス、及びネットワークデータストレージシステムに関する。
【背景技術】
【０００２】
ブロックチェーンの技術は、Ｐ２Ｐ（ｐｅｅｒ−ｔｏ−ｐｅｅｒ）ネットワークを介して共有、セキュリティ、不変及び分散レジャー（ｌｅｄｇｅｒ）を構築できるようにする。資産の所有権及びその資産の所有権を交換する取引のような記録は、「ブロックチェーン」に記録され、このような記録は、ネットワークのピア（ｐｅｅｒｓ）（ユーザーら）によって検証・維持される。
【０００３】
一般的に、ブロックチェーンは、二つのタイプを含む。つまり、ユーザーらが匿名であり、各ユーザーがレジャー（ｌｅｄｇｅｒ）のコピーを有して、独立的に取引の承認に参加する公開ブロックチェーン（ｐｕｂｌｉｃ  ｂｌｏｃｋｃｈａｉｎ）と、ユーザーが匿名ではなく、権限がネットワークの一部になるように要求される私的ブロックチェーン（ｐｒｉｖａｔｅ  ｂｌｏｃｋｃｈａｉｎ）である（ユーザーらは、依然として各自のレジャーのコピーを有して取引の承認に参加する）。
【０００４】
ブロックチェーンの採掘者は新しいブロックをブロックチェーンに追加するための作業証明（ｐｒｏｏｆ−ｏｆ−ｗｏｒｋ）を生成するための暗号化ハッシュ（ｈａｓｈ）のような採掘オペレーションを遂行するＰ２Ｐネットワークのノードである。いくつかのネットワークにおいて、採掘者は採掘を遂行することに対する報償（ｒｅｗａｒｄ）が提供される。採掘者は採掘プールを形成することにコラボレーション（ｃｏｌｌａｂｏｒａｔｉｏｎ）し、採掘能力（例えば、ハッシュを計算するための計算能力）がプーリングされて（ｐｏｏｌｅｄ）、採掘の遂行に対する報償がプールで共有される。
【０００５】
ブロックチェーンネットワークの例示は、ビットコイン（Ｂｉｔｃｏｉｎ）、イーサリアム（Ｅｔｈｅｒｅｕｍ）、ダッシュ（Ｄａｓｈ）およびリップル（Ｒｉｐｐｌｅ）を含む。他の暗号化技術は、ブロックが線形チェーンに配列される必要性を緩和させる「タングル（Ｔａｎｇｌｅ）」またはＤＡＧ（Ｄｉｒｅｃｔｅｄ  Ａｃｙｃｌｉｃ  Ｇｒａｐｈ）チェーンを含む。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国公開特許第２０１７／０２２８７３１Ａ１号公報
【特許文献２】中国公開特許第ＣＮ１０７０４６５４２Ａ号公報
【非特許文献】
【０００７】
【非特許文献１】ＴＲＵＹＥＮＳ，  ＤＲＩＥＳ，  ‘‘ＦＰＧＡ  ｂａｓｅｄ  ｈａｒｄｗａｒｅ  ａｃｃｅｌｅｒａｔｏｒ  ｆｏｒ  Ｄａｓｈ  ｍｉｎｉｎｇ’’，  Ｋｕ  Ｌｅｕｖｅｎ，  Ｍａｓｔｅｒ  ｏｆ  Ｓｃｉｅｎｃｅ  ｉｎ  Ｅｌｅｃｔｒｉｃａｌ  Ｅｎｇｉｎｅｅｒｉｎｇ，  Ｔｈｅｓｉｓ，  Ａｃａｄｅｍｉｃ  ｙｅａｒ  ２０１５−２０１６，  ６２  ｐａｇｅｓ．
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明の実施形態は、ブロックチェーンのブロックを格納して、ブロックチェーンネットワーク（「ブロックチェーン認識ストレージデバイス」）で、採掘ノードとして参加するための特徴を具現するように構成された、プログラム可能なネットワークストレージデバイスに関する。本発明の実施形態は、ブロックチェーン認識ストレージデバイスを管理するように構成された、プログラム可能なネットワークハードウェアにも関連する。
【課題を解決するための手段】
【０００９】
本発明の実施形態は、ブロックチェーンのブロックを格納してブロックチェーンネットワーク（「ブロックチェーン認識ストレージデバイス」）で、採掘ノードとして参加するための特徴を具現するように構成されたプログラム可能なネットワークストレージデバイスに関するものである。本発明の実施形態は、ブロックチェーン認識ストレージデバイスを管理するように、構成されたプログラム可能なネットワークハードウェアにも関連される。
【００１０】
本発明の一実施例によると、プログラム可能なデータストレージデバイスは、第１不揮発性メモリと、第１不揮発性メモリを制御するように構成される第１ストレージコントローラと、第１ネットワークインターフェースと、第１ブロックチェーンアルゴリズムを具現して第１ストレージコントローラを介して第１不揮発性メモリに前記第１ブロックチェーンアルゴリズムに対応するブロックチェーンの少なくとも一つのブロックを格納するように構成される第１ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ  ）と、第１コマンドを格納するように構成される第１メモリを含む第１プロセッサと、を包含し、第１コマンドは、第１プロセッサによって実行されるとき、前記第１プロセッサが第１ネットワークインタフェースを介して善意ブロックチェーンの少なくとも一つのブロックを送受信して前記ブロックチェーンの少なくとも一つのブロック上で前記第１ブロックチェーンアルゴリズムを実行するために第１ＦＰＧＡを制御するように惹起する。
【００１１】
前記第１ストレージコントローラは、キーバリューストア（ｋｅｙ−ｖａｌｕｅ  ｓｔｏｒｅ）を具現し、前記第１ストレージコントローラは、キーとしてのブロックのハッシュバリューと関連して、キーバリューストアのバリューとしてのブロックチェーンの少なくとも一つのブロックを格納するように構成される。
【００１２】
前記第１ストレージコントローラは、前記第１不揮発性メモリにデータの第１タイプのデータ及び第２タイプのデータを格納するように構成され、前記第１タイプのデータは、ブロックチェーンデータであり、前記第２タイプのデータは、第１タイプと異なる。
【００１３】
前記第１メモリは、前記第１プロセッサによって実行されるとき、前記第１プロセッサが前記プログラム可能なデータストレージデバイスを、ブロックチェーンネットワークのブロックチェーンのノードとしてオペレーションさせるように惹起する第２コマンドを格納するように、さらに構成される。
【００１４】
前記第１ストレージコントローラは、第１サイズと関連して、前記第１不揮発性メモリにデータを格納するように構成され、前記ブロックチェーンの各ブロックは、第２サイズを有し、前記第２サイズは、前記第１サイズの倍数であり得る。前記第２サイズは、前記第１サイズと同じであり得る。
【００１５】
前記第１不揮発性メモリは、ＮＡＮＤフラッシュを含み、前記第１ストレージコントローラは、フラッシュ変換ロジックモジュールを含み、前記第１サイズは、ＮＡＮＤブロックサイズであり得る。
【００１６】
前記第１メモリは、第３コマンドを格納するようにさらに構成され、前記第３コマンドは、前記第１プロセッサによって実行されるとき、第１プロセッサは、前記第１ブロックチェーンアルゴリズムとは異なる第２ブロックチェーンアルゴリズムを具現するための前記第１ＦＰＧＡをプログラムするためのビットファイルをロード（ｌｏａｄ）し、前記第２ブロックチェーンアルゴリズムを具現するための前記第１ＦＰＧＡを再構成するための前記ビットファイルを使用して前記第１ＦＰＧＡをプログラムするように惹起する。
【００１７】
前記ビットファイルは、前記第１不揮発性メモリに格納される。前記ビットファイルは、前記第１ネットワークインターフェースを通して受信される。
【００１８】
前記第１ＦＰＧＡは、暗号化アクセラレーターを含み、前記暗号化アクセラレーターを使用して、第１ブロックチェーンアルゴリズムを具現するように、さらに構成される。
【００１９】
第２不揮発性メモリと、前記第２不揮発性メモリを制御するように構成される第２ストレージコントローラと、第２ネットワークインターフェースと、前記第１ブロックチェーンアルゴリズムを具現して前記第２ストレージコントローラを介して前記第２不揮発性メモリに前記第１ブロックチェーンアルゴリズムに対応する前記ブロックチェーンの少なくとも一つのブロックを格納するように構成される第２ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ  ）と、第４コマンドを格納するように構成される第２メモリを含み、前記第４コマンドは、第２プロセッサによって実行されるとき、前記第２プロセッサが前記第２ネットワークインターフェースを介して前記ブロックチェーンの少なくとも一つのブロックを伝送又は受信して前記ブロックチェーンの少なくとも一つのブロック上で前記第１ブロックチェーンアルゴリズムを実行するように前記第２ＦＰＧＡを制御するように惹起できる。
【００２０】
本発明の一実施例によれば、第１不揮発性メモリと、前記第１不揮発性メモリを制御するように構成される第１ストレージコントローラと、第１ネットワークインターフェースと、第１ブロックチェーンアルゴリズムを具現して、前記第１ストレージコントローラを介して前記第１不揮発性メモリに前記第１ブロックチェーンアルゴリズムに対応する第１ブロックチェーンの少なくとも一つのブロックを格納するように構成される第１ＦＰＧＡと、第１コマンドを格納するように構成される第１メモリを含む第１プロセッサを含む第１プログラム可能なデータストレージデバイスと、第２不揮発性メモリと、前記第２不揮発性メモリを制御するように構成される第２ストレージコントローラと、第２ネットワークインターフェースと、
第２ブロックチェーンアルゴリズムを具現して、前記第２ストレージコントローラを介して前記第２不揮発性メモリに前記第２ブロックチェーンアルゴリズムに対応する第２ブロックチェーンの少なくとも一つのブロックを格納するように構成される第２ＦＰＧＡと、第２コマンドを格納する第２メモリを含む第２プロセッサを含む第２プログラム可能なデータストレージデバイスと、前記第１ネットワークインターフェースを介して、前記第１プログラム可能なデータストレージデバイスと通信し、前記第２ネットワークインターフェースを介して前記第２プログラム可能なデータストレージと通信し、少なくとも２つのブロックチェーンのネットワークと通信するように構成され、第３プロセッサ、及び第３コマンドを格納する第３メモリを含むネットワークハードウェアと、を含み、前記第１コマンドは、前記第１プロセッサによって実行されるとき、前記第１プロセッサが前記第１ネットワークインターフェースを介して前記ブロックチェーンの少なくとも一つのブロックを伝送・受信し、前記第１ブロックチェーンの少なくとも一つのブロック上で第１ブロックチェーンアルゴリズムを実行するための第１ＦＰＧＡを制御するように惹起し、前記第２コマンドは、前記第２プロセッサによって実行されるとき、前記第２プロセッサが前記第２ネットワークインターフェースを介して前記ブロックチェーンの少なくとも一つのブロックを伝送・受信し、前記第２ブロックチェーンの少なくとも一つのブロック上で前記第２ブロックチェーンアルゴリズムを実行するために前記第２ＦＰＧＡを制御するように惹起し、前記第３コマンドは、前記第３プロセッサによって実行されるとき、前記第３プロセッサが、少なくとも２つのブロックチェーンネットワークからブロックチェーンの要請を受信し、前記第１プログラム可能なデータストレージデバイス及び前記第２プログラム可能なデータストレージデバイスのうち、少なくとも一つに前記ブロックチェーンの要請を分配するように惹起できる。
【００２１】
前記第１ブロックチェーンアルゴリズムは、前記第２ブロックチェーンアルゴリズムと異なり、前記ネットワークハードウェアの前記第３メモリは、第４コマンドをさらに格納し、前記第４コマンドは、前記第３プロセッサによって実行されるとき、第３プロセッサは、前記ブロックチェーンの要請が前記第１ブロックチェーンアルゴリズム及び前記第２ブロックチェーンアルゴリズムのうち、少なくとも１つに関連しているか否かを判別し、前記ブロックチェーンの要請が前記第１ブロックチェーンアルゴリズムと関連される場合には、前記ブロックチェーンの要請を前記第１プログラム可能なデータストレージデバイスに分配し、前記ブロックチェーンの要請が前記第２ブロックチェーンアルゴリズムと関連される場合には、前記ブロックチェーンの要請を前記第２プログラム可能なデータストレージデバイスに分配する。
【００２２】
前記第４コマンドは、第５コマンドを包含し、前記第５コマンドは、前記第３プロセッサによって実行されるとき、前記第３プロセッサが前記ブロックチェーンの要請を、複数のサブタスクに分割し、前記サブタスクを、前記第１プログラム可能なデータストレージデバイス及び前記第２プログラム可能なデータストレージデバイスに分配する。
【００２３】
前記第１メモリは、第６コマンドをさらに格納し、前記第３メモリは、第７コマンドをさらに格納し、前記第６コマンドは、第１プロセッサによって実行されるとき、前記第１プロセッサが前記第１ブロックチェーンアルゴリズムとは異なる第３ブロックチェーンアルゴリズムを具現するために前記第１ＦＰＧＡをプログラムするためのビットファイルをロードし、前記第３ブロックチェーンアルゴリズムを具現するための前記第１ＦＰＧＡを再構成するためのビットファイルを使用して前記第１ＦＰＧＡをプログラムするように惹起し、前記第７コマンドは、前記第３プロセッサによって実行されるとき、前記第３プロセッサが、前記第１プロセッサを制御して前記第３ブロックチェーンアルゴリズムを具現するために、前記第１ＦＰＧＡを再構成するための第７コマンドを実行する。
【００２４】
前記第３メモリは、第８コマンドをさらに格納し、前記第８コマンドは、前記第３プロセッサによって実行されるとき、前記第３プロセッサは、前記少なくとも２つのブロックチェーンネットワークのそれぞれの状態をモニタリングし、前記第１プログラム可能なデータストレージデバイスの第１状態及び前記第２プログラム可能なデータストレージデバイスの第２状態を追跡し、前記少なくとも２つのブロックチェーンネットワークのそれぞれの状態である前記第１状態及び前記第２状態に基づいて、前記第２プログラム可能なデータストレージデバイスの再割り当てを識別し、前記再割り当てにより、前記第１ブロックチェーンアルゴリズムを具現するために、前記第２ＦＰＧＡを再構成するように惹起する。
【００２５】
前記第１ストレージコントローラは、キーバリューストアを具現して、前記第１ストレージコントローラは、キーとしてのブロックのハッシュバリューに基づいて、前記キーバリューストアのバリューとして前記第１ブロックチェーンの少なくとも一つのブロックを格納する。
【００２６】
前記第１メモリは、第９コマンドをさらに格納し、前記第９コマンドは、前記第１プロセッサによって実行されるとき、前記第１プロセッサが、前記少なくとも２つのブロックチェーンネットワークのブロックチェーンネットワークにおけるブロックチェーンのノードとして、前記第１プログラム可能なデータストレージデバイスを動作させるように惹起する。
【００２７】
前記第１ストレージコントローラは、第１サイズにより、前記第１不揮発性メモリにデータを格納し、前記第１ブロックチェーンの各ブロックは、第２サイズを有し、前記第２サイズは、前記第１サイズの倍数であり得る。
【００２８】
前記第１不揮発性メモリは、ＮＡＮＤフラッシュを包含し、前記第１ストレージコントローラは、第１フラッシュ変換ロジックモジュールを含み、前記第１サイズは、ＮＡＮＤブロックのサイズであり得る。
【発明の効果】
【００２９】
ブロックチェーン認識ストレージデバイスの速度及び寿命を向上できる。
【図面の簡単な説明】
【００３０】
【図１】本発明の一実施例によるブロックチェーン認識ストレージデバイスのブロック図である。
【図２】本発明の一実施例を基に不揮発性メモリがＮＡＮＤフラッシュとして具現されたブロックチェーン認識ストレージデバイスのフラッシュ変換ロジック及びフラッシュストレージモジュールの構成図である。
【図３】本発明の一実施例による複数のブロックチェーン認識ストレージデバイスに連結されたブロックチェーンのネットワーキングデバイスの構成図である。
【図４】本発明の一実施例による複数のブロックチェーン認識ストレージデバイスに連結されたブロックチェーン認識トラフィックルータを有するブロックチェーンのネットワーキングデバイスの構成図である。
【発明を実施するための形態】
【００３１】
以下、例示的な実施例においては、類似の参照番号は類似の構成要素を指称する添付図面を参照して、詳細に説明する。しかし、本発明は、多様な形態で具現でき、本明細書において単に例示した実施例に限定されるものではない。むしろ、斯かる実施例は、この開示が徹底で完全になるための例として提供され、当業者に本発明の特徴及び機能を完全に伝達する。したがって、本発明の技術分野における通常の知識を有する者が本発明の特徴と機能を完璧に理解するために、必要としないプロセス、エレメントおよび技術は、説明しない可能性がある。特に言及しない限り、類似の参照番号は、添付した図面及び記載した説明で類似の構成要素を示し、従ってその説明は繰り返さない。
【００３２】
本明細書において使用する用語は、単に特定の実施例を説明するためのものであり、本発明を制限しようとするものではない。本明細書で使用したように、文脈上明らかに別のものを意味しない限り、単数形態「一つ」は、複数の形態も含むと意図する。「構成される」、「構成されている」、「包含する」、そして「包含している」という用語が、本明細書で使用するとき、このような用語は、定められた特徴、整数、ステップ、オペレーション、エレメント及び／又はコンポネントの存在を明示するものの、一つまたはそれ以上の他の特徴、整数、ステップ、オペレーション、エレメント、コンポネント及び／又はそれらのグループの追加または存在を不可能にしない。本明細書で使用したように、「及び／又は」という用語は、一つまたはそれ以上の列挙された項目と関連された任意及びすべての組み合わせを含む。「少なくとも一つ」のような表現は、エレメント全体のリストを修正し、そしてリストの個々のエレメントを修正しない。
【００３３】
ネットワークＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）は、入力／出力（Ｉ／Ｏ）パケットを処理し、読み取り及び書き込みコマンドを不揮発性メモリ又はＮＡＮＤフラッシュメモリのような永久的なストレージに伝送する。各ネットワークＳＳＤは、ネットワークインターフェースを外部に露出させる専用のプロセッサを有する（例えば、プロセッサは、ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ  ／  Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）スタックのようなネットワークスタックを具現するように構成される）。ネットワークＳＳＤは、付加的な処理を遂行するための中央処理装置（ＣＰＵ）、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）などの処理ユニットを含むこともできる。
【００３４】
ＦＰＧＡは、プログラム可能な論理ブロックの集合（ｓｅｔ）と構成ファイル（しばしば、「ビットファイル」と称される）によって特定されるプログラム可能な論理ブロックを選択的に、ともに連結されるようにする再構成可能な相互連結の階層を含む。したがって、ＦＰＧＡは、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）に匹敵する性能（例えば、速度及びエネルギー効率）を可能にしつつ、多様な機能（汎用プロセッサと類似した）を遂行するように構成および再構成される。
【００３５】
ブロックチェーンの採掘ノードを具現するための比較システムは、一般的に演算能力が強力なコンピュータシステム上で実行される採掘ソフトウェアの使用を含む。ビットコイン採掘は、初期に、汎用中央処理装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：ＣＰＵ）において有益に遂行されるが（例えば、採掘に対する報償がプロセッサのオペレーションコストを超える）、多くのブロックチェーンのプロトコルで採掘の難しさ（例えば、ブロックを採掘するために遂行されるべき演算タスクの量）は、一般的にブロックチェーンのブロックの数に応じて増加する。結果的に、時間がたつにつれ、ブロックチェーン採掘は、特定のブロックチェーンのプロトコルによって要求される計算に対するワット当たり、より高い性能を提供するプロセッサに移動したので、計算が経済的かつ合理的（例えば、収益的な）になるようにする。例として、グラフィックス処理装置（Ｇｒａｐｈｉｃａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：ＧＰＵ）のアーキテクチャは、ビットコインを採掘するのに適している。
【００３６】
いくつかのブロックチェーンプロトコルの場合には、ＧＰＵベースの具現さえＦＰＧＡ及びＡＳＩＣでの採掘と比較するとき、相対的に非効率的である。ＡＳＩＣは、一般的にＦＰＧＡよりも速いが、ＡＳＩＣによって具現される回路は、永久的（例えば、ＡＳＩＣは、再構成できない）であり、それに応じて新たなアルゴリズムや他のアルゴリズムを具現するのには適していないが、ＦＰＧＡは、他のビットのファイルへのプログラムを使用して再構成される。
【００３７】
演算能力に加えて、採掘アルゴリズムを実行するために、ブロックチェーンの採掘ノードは、一般的に分散レジャー（ｄｉｓｔｒｉｂｕｔｅｄ  ｌｅｄｇｅｒ）（例えば、ブロックチェーン）の少なくとも一部を格納するための永久のデータストレージに対するアクセスを必要とする。
【００３８】
採掘ノードは、一般的にそれらのプロセッサに対する使用が多く、プロセッサを標準のオペレーション範囲に維持するために必要な、かなりの量の冷却のため相当な量の電力を消費するのに対し、ＦＰＧＡは、一般的にそれと類似の性能を提供するのに、その分の多くの電力を必要としないため、一般的に多くの冷却を必要としない。
【００３９】
従って、本発明の実施形態は、ブロックチェーンのブロックを格納して、ピア・ツー・ピア（ｐｅｅｒ−ｔｏ−ｐｅｅｒ）ブロックチェーンネットワークに採掘ノード（「ブロックチェーン認識（ｂｌｏｃｋｃｈａｉｎ−ａｗａｒｅ）ストレージデバイス」）として参加するための特徴を具現するように構成された、ネットワークＳＳＤのようなプログラム可能なネットワークデータストレージデバイスを指示する。
【００４０】
図１は、本発明の一実施例によるブロックチェーン認識ストレージデバイスのブロック図である。図１に示した実施例で、ブロックチェーン認識ストレージデバイス１００は、一つのデバイスに統合された（例えば、単一の回路基板に配置されたり、または単一の筐体にハウジングされたりした）いくつかの構成要素を含む。図１のブロックチェーン認識ストレージデバイス１００は、ブロックチェーン認識ストレージデバイス１００の動作を制御するように構成されたプロセッサ１１０を含む。プロセッサ１１０は、ブロックチェーン認識ストレージデバイス１００を制御するためのファームウェアプログラムコマンドを格納する不揮発性メモリ（例えば、以下で説明する不揮発性メモリ１４０と分離された消去可能でプログラム可能な読み取り専用メモリ（ＥＰＲＯＭ）、またはフラッシュメモリ）に連結される。プロセッサ１１０は、メモリコントローラユニット（ＭＣＵ、１２２）を介してＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ、１２０）からのデータを格納・検索するように構成される。また、プロセッサ１１０は、暗号化アクセラレーター１３２を包含するＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）１３０と通信も行う。本発明のいくつかの実施例で、暗号化アクセラレーター１３２は、ＦＰＧＡ１３０（例えば、分離された独立のチップ）から分離され、ＦＰＧＡ１３０と通信する。ＦＰＧＡ１３０は、ＭＣＵ１２２を介してＤＲＡＭ１２０にアクセスもできる。プロセッサ１１０、ＤＲＡＭ１２０及びＦＰＧＡ１３０は全部ストレージモジュール１４２を含む不揮発性メモリ１４０または永久のストレージからストレージコントローラ１４４を介してデータを格納・検索するように構成される。さらに具体的に、いくつかの実施例で、不揮発性メモリ１４０のストレージモジュール１４２は、ＮＡＮＤフラッシュメモリを含み、ストレージコントローラ１４４は、論理的読み取りおよび書き込みコマンドとＮＡＮＤフラッシュメモリを含むストレージモジュール１４２のデータの基本的な表現または格納との間で変換するように構成されたフラッシュ変換ロジック（Ｆｌａｓｈ  Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｇｉｃ：ＦＴＬ）モジュール（例えば、ＮＡＮＤページのＮＡＮＤブロック、図２を参照）を含む。プロセッサ１１０及びＦＰＧＡ１３０は、ネットワーク２０（例えば、イーサネット（登録商標）接続）上でデータを送信・受信するためのネットワークインターフェース１５０と通信する。
【００４１】
本発明の実施形態は、分散レジャー（例えば、ブロックチェーン）を配置するために、ネットワーク２０に連結されたブロックチェーン認識ストレージデバイス１００のＦＰＧＡ１３０をレバレッジ（ｌｅｖｅｒａｇｉｎｇ）するものに関する。ブロックチェーン認識ストレージデバイス１００は、ブロックチェーン（例えば、採掘ノード）として登録され、ブロックチェーン認識ストレージデバイス１００は、ブロックチェーンのブロック（例えば、全体レジャー又はその一部のコピー）を不揮発性メモリ１４０に格納する。
【００４２】
特定のブロックチェーンのプロトコル（例えば、ビットコイン（Ｂｉｔｃｏｉｎ）、イーサリアム（Ｅｔｈｅｒｅｕｍ）、またはダッシュ（Ｄａｓｈ））に関連される特定の採掘のアルゴリズムは、不揮発性メモリ１４０からブロックチェーンデータのブロックを読取り、不揮発性メモリ１４０にブロックチェーンデータのブロックを書き込むＦＰＧＡ１３０で具現される。ブロックチェーンアルゴリズムは、一般的に採掘プロトコルのＰｏＷ（Ｐｒｏｏｆ−ｏｆ−Ｗｏｒｋ）の部分を遂行し、他のノードから受信されたブロックチェーンのブロックを検証するために、「ｓｈａ−２５６」、「ｓｈａ−１」、「Ｋｅｃｃａｋ」、「ｓｃｒｙｐｔ」などの暗号化ハッシュの計算を含む。
【００４３】
従って、ブロックチェーンアルゴリズムと暗号化ハッシュをハードウェアで具現することにより、エネルギーの使用と冷却量の大きな減少が達成される。例として、「Ｍｉｔｔａｌ、Ｓｐａｒｓｈ及びＪｅｆｆｒｅｙ  Ｓ．  Ｖｅｔｔｅｒ  「Ａ  ｓｕｒｖｅｙ  ｏｆ  ｍｅｔｈｏｄｓ  ｆｏｒ  ａｎａｌｙｚｉｎｇ  ａｎｄ  ｉｍｐｒｏｖｉｎｇ  ＧＰＵ  ｅｎｅｒｇｙ  ｅｆｆｉｃｉｅｎｃｙ」のｓｅｃｔｉｏｎ  ３．２、  ＡＣＭ  Ｃｏｍｐｕｔｉｎｇ  Ｓｕｒｖｅｙｓ（ＣＳＵＲ）４７．２（２０１５）：１９．汎用ＣＰＵ上のアルゴリズムを具現することに対するＧＰＵ及びＦＰＧＡのような特殊なハードウェア上での具現アルゴリズムのエネルギー効率性を比較する参照リスト」を参照ください。
【００４４】
なお、採掘アルゴリズムがＦＰＧＡ１３０で具現されるので、ＦＰＧＡ１３０は、相異なる採掘アルゴリズムを具現するように再構成される。いくつかの実施例で、不揮発性メモリ１４０は、異なるビットファイルを格納したり、各ビットのファイルは、異なる採掘アルゴリズム（例えば、ビットコイン、イーサリアムまたはダッシュ）の具現に対応し、プロセッサ１１０は、ＦＰＧＡ１３０をビットファイル中の特定の一つと結合するように構成される。例として、ブロックチェーン認識ストレージデバイス１００のユーザーは、ビットコインの代わりにイーサリアムを採掘するためにブロックチェーン認識ストレージデバイス１００を再構成することに決定し、ブロックチェーン認識ストレージデバイス１００にコマンドを伝送することにより、そのように行うことができ、ブロックチェーン認識ストレージデバイス１００は、イーサリアム採掘アルゴリズムに対応するビットファイルをロードしてロードされたビットファイルを使用してＦＰＧＡ１３０を再プログラム（例えば、フラッシュ（ｆｌａｓｈ））する。ビットファイルを読み取り、ロードされたビットファイルを使用してＦＰＧＡ１３０を再プログラム（例えば、フラッシュ）する。いくつかの実施例で、ビットファイルが（例えば、ネットワークインターフェース１５０を介してネットワーク２０上で）外部ソースからブロックチェーン認識ストレージデバイス１００に供給されることにより、ＦＰＧＡ１３０にプログラムされて及び／又は非揮発性メモリ１４０に格納される、新しい（または修正された）アルゴリズムに対応する新しいビットファイルを許容する。
【００４５】
図２は、本発明の一実施例を基に不揮発性メモリ１４０がＮＡＮＤフラッシュとして具現されたブロックチェーン認識ストレージデバイス１００のフラッシュ変換ロジック及びフラッシュストレージモジュールの構成図である。図２に示すように、ＮＡＮＤフラッシュストレージモジュール１４２は、ブロック１４２Ｂに構成されたデータページ１４２Ｐを含み、各ブロックは、複数のページを含む。ＮＡＮＤフラッシュストレージテクノロジーの具現に対する詳細事項のため、データは、一般的にページ単位で読取られかつ書き込まれるが、データ消去は、ブロック単位で行われる。フラッシュ変換ロジック１４４は、論理セクターの書き込み及び読み取りと、特定具現向けの書き込み及び読み取りコマンド（例えば、ページ書き込み、ブロック消去、およびページの読み取り）との間を変換する。ストレージデバイスにアクセスする論理ブロックモードにおいて、論理セクターは、例として５１２バイトであり得る。いくつかの比較的なＮＡＮＤフラッシュデバイス（例えば、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ））で、各ページには４ＫｉＢのサイズを有することができ、各ブロックは、４ＭｉＢのサイズを有する。
【００４６】
フラッシュメモリ（及びガベージコレクションを遂行する他のデバイス）を使用するＳＳＤにおいて、フラッシュメモリは、一般的に数多くのページを含む消去ブロックで構成される。各ページには３つの状態、つまりフリー（ｆｒｅｅ）（現在、データを格納せず）、有効（現在、データを格納する）及び有効ではないこと（以前に有効なデータを格納したが、これ以上の有効なデータを格納せず、まだフリーではない）のいずれか一つであり得る。
【００４７】
新しいデータがフラッシュメモリにライト（ｗｒｉｔｅ）されるとき、フリーページが配置され、そのフリーページにデータがライトされる。ページは、有効なデータを格納することでマークされる。ページは、消去ブロック内に順番にある。しかし、フラッシュメモリは、一般的にページレベルで一回記録される。ページレベルで上書きはできない。従って、フラッシュメモリに格納されたデータがアプリケーションによって変更されるとき、データを含むページ全体がフラッシュメモリの新しいページにライト（ｗｒｉｔｅ）される。元のページは有効ではないとマークされる。ガベージコレクションは、ＳＳＤがページの消去ブロック単位で有効ではないページを回収するためのプロセスである。このプロセスは、ブロックのすべてのページを再設定するステップ及びページをフリーにもう一度マークするステップを含む。
【００４８】
理由（ｒｅａｓｏｎ）ページは、ガベージコレクションが遂行される方法のために、３つの可能な状態を有する。個別のページでガベージコレクションが実行されると、有効ではない状態を必要としなくなる。つまり、データが無効化され、ページがフリーになるやいなやガベージコレクションが発生する。しかし、ガベージコレクションは、一般的に、個々のページより大きなチャンク（ｃｈｕｎｋ）上で動作する。これらのチャンクは、消去ブロックまたはスーパーブロックと呼ばれ、任意の数のページを含む。ブロックがガベージコレクションの対象となると、ブロックのすべてのページがフリーの状態に置かれる。従って、現在のブロックのページが消去される前にブロックの現在有効な任意のデータが他の複数のブロックのフラッシュメモリのフリーページにライト（ｗｒｉｔｅ）されなければならない（このプロセスは、プログラミングと呼ばれる）。ブロックの任意のデータが無効化された後、ガベージコレクションが開始された場合には、ＳＳＤはブロックの有効なページから他のブロックにデータを移動するのにかなりの時間を消費する。消去ブロックから有効なデータをプログラムすることが、それ自体でかなりのオーバーヘッドを追加するという事実に加えて、フラッシュメモリは、一般的に、メモリが信頼できなく（または悪化したり、使用できなかったりする）なる前に有限回数のみアクセスされる。したがって、消去ブロックから有効なデータをプログラムするために消費される時間を最小化することが望ましい。しかし、同時に、消去ブロックのすべてのページが有効でないとマークされるまでに、ガベージコレクションが遅延されない可能性がある。つまり、フラッシュメモリは、有効または有効でないと（つまり、フリーページがないこと）マークされたページだけを含むすべてのブロックで終わることができ、これは、これ以上のデータがフラッシュメモリにライト（ｗｒｉｔｅ）できないことを意味する。
【００４９】
ブロックチェーンアルゴリズムは、一般的にブロック（ブロックチェーンのブロック）単位でオペレーションする。例として、ブロックチェーン認識ストレージデバイス１００のＦＰＧＡ１３０は、ブロックチェーンの入力ブロックを一度に一つずつ、またはブロックチェーンのブロックの整数単位で受信して検証する。同様に、採掘は一度に１つのブロックまたはブロックチェーンの整数単位の情報だけを使用して遂行される。
【００５０】
ＮＡＮＤブロックのサイズがブロックチェーンブロックのサイズに対応しない場合には、例として、書き込みコマンドは、ブロックチェーンブロックが二つ以上の相異なるＮＡＮＤブロックにかけて延長されるようにし、ＮＡＮＤブロックのうちのいくつかがブロックチェーンブロックからデータで部分的に満たされるようにする。したがって、ブロックチェーンブロックが不揮発性メモリ１４０から、後で削除されると、ガベージコレクターが不揮発性メモリ１４０をデフラグ（ｄｅｆｒａｇｍｅｎｔ）するにつれ、書き込み増幅の問題が発生する。
【００５１】
したがって、本発明の実施例のいくつかの形態は、ストレージモジュール１４２及びフラッシュ変換ロジック１４４に関するもので、ＮＡＮＤブロックのサイズ及び／又はストレージモジュール１４２のＮＡＮＤページのサイズは、ブロックチェーンのブロックの単位サイズのサイズに整列される。例えば、ＮＡＮＤブロックのサイズは、ブロックチェーンのサイズがＮＡＮＤブロックのサイズの倍数になるように設定される。一部の実施例で、倍数は１である（例えば、ＮＡＮＤブロックは、ブロックチェーンブロックと同じサイズである）。例として、ＮＡＮＤブロックのサイズは、ブロックチェーンブロックのサイズがＮＡＮＤブロックのサイズの倍数になるように設定される。いくつかの実施例で、倍数は「１」である（例えば、ＮＡＮＤブロックのサイズは、ブロックチェーンブロックのサイズと同じである）。例としては、ＮＡＮＤブロックは、ブロックチェーン認識ストレージデバイス１００上で使用されると予想されるブロックチェーンのプロトコルに基づいて、例えば、１  ＭｉＢ、２  ＭｉＢまたは２０  ＭｉＢのサイズを有し得る。そうすることで、データの削除がＮＡＮＤブロックのサイズと整列される方式で行われ、これにより、部分的に削除されたデータのみを有するＮＡＮＤブロックの問題を減らすか、または回避するため、書き込み増幅は減少するか、回避できる。なお、ページの読み取りを単一のブロックで整列するのは、読み取り速度で若干の改善を提供する。また、ブロックチェーンシステムにおいて、ブロックは、ブロックチェーンの一部になると変更されることができなく、これはブロックチェーンアルゴリズムは、通常の動作において、既存のブロックを上書きしたり、修正したりする必要がないことを意味する。ブロックのこのような不変性は、ＮＡＮＤフラッシュストレージモジュール１４２の耐久性を向上させ（厳密に言えば、再記録がないので）、ガベージコレクションのオーバーヘッドを減少または除去する。ＮＡＮＤブロックサイズがブロックチェーンのブロックサイズで整列されるいくつかの実施例で、ガベージコレクションを遂行するのに必要な時間が少なかったり、時間がほとんど必要でなかったりするので、ガベージコレクションプロセスは、ブロックチェーンのＮＡＮＤストレージブロック上で全く動作する必要がないので、ストレージコントローラが、よりよく且つより安定的なＩ／Ｏパフォーマンスを提供する。
【００５２】
キーバリューストア（ｋｅｙ  ｖａｌｕｅ  ｓｔｏｒｅ）としてのオペレーション。
【００５３】
本発明のいくつかの実施例で、ブロックチェーン認識ストレージデバイス１００は、データ「バリュー」が、伝統的な「論理ブロック」インターフェースではなく、独自の「キー」に基づいてアクセスされるキーバリューのインターフェースを具現する。キーバリューのデータストレージデバイスのより具体的な例として、２０１８年１月１９日、米国特許庁（Ｕｎｉｔｅｄ  Ｓｔａｔｅｓ  Ｐａｔｅｎｔ  ａｎｄ  Ｔｒａｄｅｍａｒｋ  Ｏｆｆｉｃｅ）に提出された「Ｋｅｙ  Ｖａｌｕｅ  ＳＳＤ」の米国特許出願第１５／８７６，０２８号を参照のこと、これの全体の開示は参照として本明細書と統合される。
【００５４】
本発明の一実施例によると、ブロックチェーン認識ストレージデバイス１００に格納されたブロックチェーン（またはその一部）の各ブロックは、一つの「バリュー」に対応し、ブロックのハッシュ（またはハッシュバリュー）は、キーとして扱われる。したがって、キーバリューのインターフェースは、ブロックのハッシュをキー提供することでブロックチェーンのブロックが検索されるようにする。また、以上で述べたように、ＮＡＮＤページ及び／又はＮＡＮＤブロックのサイズは、ブロックチェーンのブロックのサイズと一致するように選択され、各キー（またはハッシュバリュー）は、一つの対応するＮＡＮＤブロックを検索するように使用され、これにより、ブロックチェーンブロックとＮＡＮＤブロックのサイズとの間に近接したり、正確な論理・物理マッピングを許容することで、以上で説明したように、ブロックチェーン認識ストレージデバイス１００の速度及び寿命を向上させる。
【００５５】
標準ＳＳＤとしてのオペレーション。
【００５６】
本発明のいくつかの実施例によると、ブロックチェーン認識ストレージデバイス１００は、ＦＰＧＡ１３０を再構成するために以上で説明したビットファイル、プロセッサ１１０をオペレーションさせるための（例えば、ファームウェアを再フラッシュ（ｒｅ−ｆｌａｓｈ）するための）プログラムコマンド、ユーザーデータ、非ブロックチェーン関連キー及びバリューなどの非ブロックチェーンの特定のデータを格納するために、変わらずオペレーションする。いくつかの実施例で、ＦＰＧＡ１３０は、不揮発性メモリ１４０に及び／又は不揮発性メモリ１４０から、非ブロックチェーンデータの格納及び／又は検索に関与しない。
【００５７】
ブロックチェーン認識ストレージデバイス１００のアプリケーションの一例は、非ブロックチェーンの特定のデータの格納を含むことがストレージ（Ｓｔｏｒｊ）のようなブロックチェーンベースの暗号化された、分散されたクラウドストレージ方式にある（Ｗｉｌｋｉｎｓｏｎ  、Ｓｈａｗｎ、ｅｔ  ａｌ。、「Ｓｔｏｒｊ  ａ  ｐｅｅｒ−ｔｏ−ｐｅｅｒ  ｃｌｏｕｄ  ｓｔｏｒａｇｅ  ｎｅｔｗｏｒｋ」（２０１４）を参照のこと）。ストレージ（Ｓｔｏｒｊ）のユーザーは、ユーザー自身のストレージスペースを他のユーザーにレント（ｒｅｎｔ）して報償を受けることができる。逆に、ストレージ（Ｓｔｏｒｊ）ユーザーは、他のユーザーに、他のユーザーのストレージデバイスにユーザーのデータを格納するのに料金を支払うこともできる。一般的に、特定用途むけのクライアントソフトウェア（例えば、「ＳｔｏｒｊＳｈａｒｅデーモン」）は、ユーザーのノード上で実行され、ストレージ（Ｓｔｏｒｊ）ネットワーク上でノードを設定し、ノードを登録する。
【００５８】
本発明の一実施例によると、ブロックチェーン認識ストレージデバイス１００は、完全なコンピュータシステムを設定し、一つ以上の標準的なストレージデバイスをコンピュータシステムに連結し、コンピュータシステムをネットワーク上に登録するよりは、自らブロックチェーンネットワーク上のノードになるように、ブロックチェーン認識ストレージデバイス１００のプロセッサ１１０及び／又はＦＰＧＡ１３０上での特定用途むけのクライアントソフトウェアが設置されて実行される。したがって、ブロックチェーン認識ストレージデバイス１００は、ユーザーがＦＰＧＡ１３０及び暗号化アクセラレータ１３２によって提供される、より効率的な採掘の利点を得るうちにコンピュータシステム全体を設定せずにブロックチェーンネットワークに参加するためにノードを容易に登録できるようにする（例えば、以上で説明したように、ストレージ（Ｓｔｏｒｊ）システムの分散レジャー部分はブロックチェーンデータとして処理されて格納されるが、ストレージ（Ｓｔｏｒｊ）システムの他のユーザーにより格納されたデータは、非ブロックチェーンデータとして格納される）。
【００５９】
なお、いくつかの実施例で、ＦＰＧＡ１３０及び暗号化アクセラレータ１３２は、データの加速された暗号化及び復号化を可能にし、それに応じてシステムの速度及び／又はエネルギー効率をさらに向上させる。また、ＦＰＧＡ１３０は、ユーザーのデータを圧縮および圧縮解除するように構成されることもでき、これにより、より多くのユーザーのデータがブロックチェーン認識ストレージデバイス１００上に格納されることを潜在的に許容する。
【００６０】
ネットワークスイッチ。
【００６１】
本発明の実施例の形態は、ブロックチェーン認識ストレージデバイスを管理するように構成されたプログラム可能なネットワークハードウェアと関連される。図３は、本発明の一実施例による、複数のブロックチェーン認識ストレージデバイス１００に連結されたブロックチェーンのネットワーキングデバイスの構成図である。図３に示したように、ネットワークハードウェア２００は、ビットコイン３０ａ、イーサリアム３０ｂ、およびストレージ（Ｓｔｏｒｊ）３０ｃのような相異なるピア・ツー・ピアのブロックチェーンネットワーク３０へのアクセスを提供するネットワーク（例えば、イーサネット（登録商標））接続を介してネットワークハードウェア２００にそれぞれ連結された三つの相異なるブロックチェーン認識ストレージデバイス１００に接続される。本発明のいくつかの実施例で、ネットワークハードウェア２００は、ＳＤＮ（Ｓｏｆｔｗａｒｅ  Ｄｅｆｉｎｅｄ  Ｎｅｔｗｏｒｋ）として具現される。本発明のいくつかの実施例で、ネットワークハードウェア２００は、プロセッサ及びメモリを含み、ネットワークハードウェア２００のメモリに格納されたロジック及びデータ（例えば、ルーティングテーブルの）に基づいてブロックチェーン認識ストレージデバイス１００とネットワーク２０との間のデータ（例えば、パケット）を交替またはルーティングするように構成される。
【００６２】
本発明のいくつかの実施例で、ネットワークハードウェア２００（例えば、ルータまたはスイッチ）は、パス・スルー（ｐａｓｓ−ｔｈｒｏｕｇｈ）モードでオペレーションし、ネットワークハードウェア２００は、追加的な計算なしにダミーデバイスとして動作する。代わりに、ネットワークハードウェア２００の背後の個々のドライブには、ブロックチェーンネットワークの中で、多様なブロックチェーンネットワークに登録される。いくつかの実施例で、ブロックチェーン認識ストレージデバイス１００は、ブロックチェーン認識ストレージデバイス１００のファームウェアに格納され、プロセッサ１１０によって実行されたプログラムロジックを使用して（例えば、いずれか一つのネットワーク上の採掘の現在の経済的価値を考慮して、ネットワーク２０を介して検索された情報、ブロックチェーン認識ストレージデバイス１００をオペレーションさせる現在の電気的なコスト、および不揮発性メモリ１４０のフリースペースの量などのブロックチェーンを認識ストレージデバイス１００の現在の状態に基づいて）どのようなブロックチェーンネットワーク３０に結合するか否かを、独立的に決定する。
【００６３】
本発明のいくつかの実施例で、ネットワークハードウェア２００は、ブロックチェーン認識トラフィックルータモジュールとしてオペレーションするように構成され、特定のポリシーに基づいて採掘オペレーションを遂行するために連結されたブロックチェーン認識ストレージデバイス１００からの計算リソース及びストレージリソースを割り当てる。図４は、本発明の実施例による、複数のブロックチェーン認識ストレージデバイスに連結されたブロックチェーン認識トラフィックルータを有するブロックチェーンのネットワーキングデバイスの構成図である。図４に示したように、ネットワークハードウェア２００は、ブロックチェーン認識トラフィックルータ２２０を含む。以下、より具体的に説明するように、いくつかの実施例で、ブロックチェーン認識トラフィックルータ２２０は、ブロックチェーン認識トラフィックルーティングの決定を遂行するように構成される汎用の中央処理装置などのネットワークハードウェア２００に統合されたプロセッサ２１０を使用して具現できる。
【００６４】
図４に示したように、いくつかの実施例で、トラフィックルータ２２０は、ポリシーエンジン２２２、ロードバランサー２２４、リソースマネージャー２２６、及び仮想ＩＰプロバイダ２２８を含む。仮想ＩＰプロバイダ２２８は、仮想ＩＰアドレスをネットワークストレージノードに割り当てるように構成される。リソースマネージャー２２６は、ブロックチェーン認識ストレージデバイス１００をリソースマネージャー２２６に登録するために「Ａｄｄ」コマンドが実行されるネットワークハードウェア１００にどのくらい多くのブロックチェーン認識ストレージデバイス１００が接続されているか否かを追跡するように構成され、「Ｒｅｍｏｖｅ」コマンドは、リソースマネージャー２２６からブロックチェーン認識ストレージデバイス１００を登録解除するものであり、「ＵｐｄａｔｅＳｔａｔｕｓ」コマンドは、連結されたブロックチェーン認識ストレージデバイス１００の現在の状態を確認するために使用される。ポリシーエンジン２２２は、特定のブロックチェーンのネットワークに（例えば、ビットコイン３０ａ、イーサリアム３０ｂ及びストレージ（Ｓｔｏｒｊ）３０ｃ）を登録するための政策を格納・具現し、任意の与えられたネットワークで採掘の価値を決定するために、相異なるネットワークへの報償システムを能動的に監視する。ロードバランサー２２４は、入力ブロックチェーン要請２３０（例えば、ビットコインブロックを検証するための要請、ストレージ（Ｓｔｏｒｊ）ネットワークからのデータを格納するための要請など）を共有し、リダイレクトするように連結されたリソース（例えば、接続されたブロックチェーン認識ストレージデバイス１００）を管理する。
【００６５】
図４の実施例において、各ブロックチェーン認識ストレージデバイス１００が、処理するために割り当てられた、対応するブロックチェーンアルゴリズムをプログラムまたは具現するように構成されるという意味で、ＦＰＧＡ１３０ブロックチェーン認識ストレージデバイス１００ａは、ビットコインの要請を処理するように構成され、ブロックチェーン認識ストレージデバイス１００ｂは、イーサリアム要請を処理するように構成され、ブロックチェーン認識ストレージデバイス１００ｃは、ストレージ（Ｓｔｏｒｊ）要請を処理するように構成される。本発明のいくつかの実施例によると、ポリシーエンジン２２２は、多様なネットワーク上の採掘の現在価値のモニタリングに基づいて、ブロックチェーン認識ストレージデバイス１００が、他のブロックチェーンのネットワーク上でオペレーションするように再び割り当てられることを決定する。例として、採掘ビットコインの価値の増加なしに対応する採掘イーサリアムの価値が増加すると、ポリシーエンジン２２２は、ブロックチェーン認識ストレージデバイス１００の中の一つ（例えば、ブロックチェーン認識ストレージデバイス１００ａ）を、また再構成することが費用的に、より効率的であると判断する。したがって、トラフィックルータ２２０は、より効率的であるか又は価値のある再割り当てを識別し、イーサリアム採掘アルゴリズムを具現するためにＦＰＧＡ１３０を再構成したり、再プログラムするためにブロックチェーン認識ストレージデバイス１００ａにコマンドを伝送（例えば、以上で説明したように、イーサリアム採掘アルゴリズムを具現するためのＦＰＧＡを再プログラムするためにビットファイルをロード）したりして、ブロックチェーン認識ストレージデバイス１００ａが、現在のイーサリアムネットワーク上でオペレーションするように構成されたことを指示するために、リソースマネージャー２２６のブロックチェーン認識ストレージデバイス１００ａの状態をアップデートする。イーサリアムネットワークに関連された任意の新しい要請は、トラフィックのルーター２２０によってイーサリアム要請を処理するように構成されたブロックチェーン認識ストレージデバイス１００（この例示で、ブロックチェーン認識ストレージデバイス１００ａ及びブロックチェーン認識ストレージデバイス１００ｂ）のいずれか一つにルーティングされる。
【００６６】
本発明のいくつかの実施例において、ネットワークハードウェア２００は、連結されたブロックチェーン認識ストレージデバイス１００から採掘プールを生成できるＦＰＧＡ、ＢＭＣ（Ｂａｓｅｂｏａｒｄ  Ｍａｎａｇｅｍｅｎｔ  Ｃｏｎｔｒｏｌｌｅｒ）及び／又はＣＰＵのような（図３のプロセッサ２１０を包含できる）、追加的計算ユニット２４０も含む。いくつかの実施例で、計算ユニット２４０は、採掘オペレーションを遂行することもできる（例えば、ネットワークハードウェア２００は、採掘者でもあり得る、いくつかの実施例は、暗号化アクセラレータを含むこともできる）。いくつかの実施例で、ネットワークハードウェア２００によって具現される採掘ノードは、内部の採掘ノードにアクセスするためにネットワークハードウェア２００によって生成された仮想ＩＰアドレスを介してあらわされる。以上で言及したように、相異なるブロックチェーン認識ストレージデバイス１００のうち、他のブロックチェーンは、相異なるブロックチェーンネットワークからの要請を処理し、相異なるブロックチェーンアルゴリズムを具現するように構成され、トラフィックルーター２２０は、これにより、相異なるノードに要請をルーティングする。同じブロックチェーンネットワークからの要請を処理するように構成された相異なるブロックチェーン認識ストレージデバイス１００は、同じ採掘プールのメンバーとしてみなされる。
【００６７】
なお、ネットワークハードウェア２００自体が採掘ノードとして扱われるいくつかの実施例で、ネットワークハードウェア２００のトラフィックルーター２２０は、ブロックチェーン採掘アルゴリズムの実行に関連された演算及び格納の中のタスクの一部または全部をネットワークハードウェア２００と連結されたブロックチェーン認識ストレージデバイス１００のいずれか一つ以上でオフロード（ｏｆｆｌｏａｄ）するように構成される。いくつかの実施例で、入力ブロックチェーンの要請は、このようなタイプの要請を処理するように構成されたブロックチェーン認識ストレージデバイス１００に直接にルーティングされる（例えば、デバイスのＦＰＧＡ１３０は、対応するブロックチェーン採掘アルゴリズムを遂行するように構成される）。いくつかの実施例で、採掘要請の多様なサブタスクは、このようなタイプの要請を処理するように構成された一つ以上のブロックチェーン認識ストレージデバイス１００に分割される。
【００６８】
このように、本発明の実施例は、ブロックチェーンのブロックを採掘してブロックチェーンのブロックを検証するような、ブロックチェーンネットワークと関連されたオペレーションを遂行するように構成された、プログラム可能なブロックチェーン認識ストレージデバイスに関するものである。本発明のいくつかの実施例によるブロックチェーン認識ストレージデバイスの不揮発性メモリは、メモリへのアクセスがブロックチェーンのブロックのサイズに対応するようにすることで、メモリの断片化（ｆｒａｇｍｅｎｔａｔｉｏｎ）を減らし、ガベージコレクションの必要性を減らし、および書き込み増幅の影響を減らすように構成できる。本発明のいくつかの実施例で、ネットワークルーター、ネットワークスイッチのようなブロックチェーン認識ネットワークハードウェアは、例として、需要に基づいて相異なるアルゴリズムを具現するために、デバイスに採掘タスクを分配してブロックチェーン認識ストレージデバイスを再構成することにより、一つ以上のブロックチェーン認識ストレージデバイスを管理するように構成される。
【００６９】
本発明は、例示的な実施例に関連して説明したが、本発明が、開示した実施例に限定されず、逆に、添付した請求項及びそれと同等のものの思想及び範囲内に含まれる多様な変形及び均等な構成をカバーするように意図するものと理解される。
【産業上の利用可能性】
【００７０】
本発明は、ブロックチェーンのブロックを格納してブロックチェーンネットワークにおいて、採掘ノードとして参加できる、プログラム可能なネットワークストレージデバイスの具現に有用である。
【符号の説明】
【００７１】
２０  ネットワーク
３０  ブロックチェーンネットワーク
３０ａ  ビットコイン
３０ｂ  イーサリアム
３０ｃ  ストレージ（Ｓｔｏｒｊ）
１００、１００ａ，１００ｂ，１００ｃ  ブロックチェーン認識ストレージデバイス
１１０  プロセッサ
１２０  ＤＲＡＭ
１２２  メモリコントローラーユニット（ＭＣＵ）
１３０  ＦＰＧＡ
１３２  暗号化アクセラレータ
１４０  不揮発性メモリ
１４２  ストレージモジュール
１４２Ｐ  データページ
１４２Ｂ  ブロック
１４４  ストレージコントローラー、フラッシュ変換ロジック
１５０  ネットワークインターフェース
２００  ネットワークハードウェア
２１０  統合されたプロセッサ
２２０  トラフィックルーター
２２２  ポリシーエンジン
２２４  ロードバランサー
２２６  リソースマネージャー
２２８  仮想ＩＰプロバイダ
２３０  入力ブロックチェーン要請
２４０  追加的計算ユニット
【図１】
2019144540.tif 000003
【図２】
2019144540.tif 000004
【図３】
2019144540.tif 000005
【図４】
2019144540.tif 000006