(57)【要約】本開示の実施形態は、ブロックチェーン上での取引処理のための方法、装置、コンピュータ可読記憶媒体、およびコンピュータプログラム製品に関する。この方法では、取引を処理するブロックチェーンノードが、複数のフィールドを含む取引要求を受信する。複数のフィールドは、複数の節を含む取引タスクフィールドを含む。複数の節の各節は、取引の複数のタスクのうちの１つを示す。ブロックチェーンノードは、複数のタスクを処理し、すべての複数のタスクを正常に処理したと応答した場合にのみ、取引が正常に処理されたと判定する。本開示で提供される取引処理は、複数のタスクが効率的な方法でブロックチェーン上の単一の取引手続を通して処理されることを可能にする。【選択図】図２
2021521544.tif 000002
【特許請求の範囲】
【請求項１】
ブロックチェーンにて取引を処理するためのブロックチェーンノードにおいて、複数のフィールドを含む取引要求を受信するステップであって、前記複数のフィールドは、取引タスクフィールドを含み、前記取引タスクフィールドは、複数の節を含み、前記複数の節の各節は、取引の複数のタスクのうちの１つのタスクを示している、前記ステップと、
前記取引の前記複数のタスクの処理を実行するステップと、
すべての前記複数のタスクを正常に処理した場合にのみ、前記取引が正常に処理されたと判定するステップと、
を備える取引処理方法。
【請求項２】
前記複数の節のうちの少なくとも１つは、タスクに関連する受信者アドレスを示す第１の情報要素、受信者アドレスに送金される暗号通貨の量を示す第２の情報要素、および、少なくとも１つの節によって示されるタスクのデータを示す第３の情報要素を含む、
請求項１に記載の方法。
【請求項３】
前記取引の前記複数のタスクを処理するステップは、
前記第１の情報要素がｎｕｌｌであると判定した場合、前記第３の情報要素に基づいてスマートコントラクトを展開するステップと、
前記第２の情報要素に示されている金額を前記スマートコントラクトに送金するステップであって、第３の情報要素によって示されたデータは、前記スマートコントラクトのプログラムコードを含む、前記ステップと、
を備える、
請求項２に記載の方法。
【請求項４】
前記取引の前記複数の取引タスクを処理するステップは、
前記第１の情報要素が有効なアドレスを示すと判定したことに応答して、前記第１の情報要素がスマートコントラクトアドレスを示すかどうかを判定するステップと、
前記第１の情報要素がスマートコントラクトアドレスを示すと判定したことに応答して、前記第３の情報要素に基づいて前記スマートコントラクトアドレスに対応するスマートコントラクトを実行するステップと、
前記第２の情報要素に示される金額を前記スマートコントラクトに送金するステップと、
を備え、
前記第３の情報要素によって示されるデータは、前記スマートコントラクトを実行するためのパラメータを含む、
請求項２に記載の方法。
【請求項５】
前記取引の前記複数のタスクを処理するステップは、
前記第１の情報要素が非スマートコントラクトアドレスを示すと判定したことに応答して、前記第２の情報要素に示されている金額を前記非スマートコントラクトアドレスに送金するステップをさらに備える、
請求項４に記載の方法。
【請求項６】
前記複数の節のうちの１つによって示されるタスクは、前記複数の節の別の節によって示されるさらなるタスクに依存しない、
請求項１に記載の方法。
【請求項７】
前記複数の節のうちの１つによって示されるタスクは、前記複数の節の別の節によって示されるさらなるタスクに依存し、それによって、前記タスクは、前記さらなるタスクが実行された後にのみ実行され得る、
請求項１に記載の方法。
【請求項８】
前記複数のフィールドは、
前記取引要求に関連する前記取引が依存する関連取引の識別子、
取引ナンス、
前記取引がパッケージされるブロックの参照、
前記取引の有効期限満了時間を決定するための有効期限フィールド、
取引手数料計算の係数、
前記取引の取引提案者が前記取引に対して支払う意思のある最大取引手数料、
後方互換性のための予約フィールド、
前記取引の前記取引提案者の署名情報、および、
前記ブロックチェーンの生成ブロックの識別子の最後のバイト、
の少なくとも１つを示す、
請求項１に記載の方法。
【請求項９】
前記複数のフィールドが、前記取引要求に関連する前記取引が依存する関連取引の識別子を示すかどうかを判定するステップと、
前記複数のフィールドが前記関連取引の前記識別子を示していると判定したことに応答して、前記関連取引が正常に処理されたかどうかを判定するステップと、
前記関連取引が正常に処理されたと判定したことに応答して、前記取引の前記複数のタスクが処理されることを可能にするステップと、
をさらに備える、
請求項１に記載の方法。
【請求項１０】
前記取引は、固有の識別子に関連付けられ、
前記取引の前記固有の識別子は、前記取引要求と、前記取引の取引提案者のアドレスとに基づいて生成される、
請求項９に記載の方法。
【請求項１１】
前記取引の前記固有の識別子は、前記取引の前記取引提案者の前記アドレスと、前記複数のフィールドの一部とをハッシュすることによって生成され、
前記複数のフィールドの一部は、前記取引の前記取引提案者の署名情報を示すフィールドを除く、前記取引要求内のすべてのフィールドである、
請求項１０に記載の方法。
【請求項１２】
前記取引がパッケージされるブロックの参照を示す前記複数のフィールドのうちの１つに基づいて、前記ブロックを決定するステップと、
前記取引の処理された前記複数のタスクに関連するデータを、決定された前記ブロックにパッケージ化するステップをさらに備える、
請求項１に記載の方法。
【請求項１３】
前記複数のフィールドに基づいてプリセットされたブロックに到達すると、取引を有効期限切れにするステップをさらに備える、
請求項１に記載の方法。
【請求項１４】
前記取引を処理するための取引手数料を決定するステップをさらに備え、
前記取引手数料は、少なくとも固定費と非固定費とを含む、
請求項１に記載の方法。
【請求項１５】
前記取引手数料の前記非固定費は、少なくとも前記複数のタスクのそれぞれのタイプと、前記複数のタスクのデータとに基づいて決定され、
前記複数のタスクのデータは、前記複数の節に含まれる、
請求項１４に記載の方法。
【請求項１６】
前記取引手数料を決定するステップは、
第１の事前定義値と等しい前記複数のタスクのデータの第１のバイト数と、前記第１の事前定義値とは異なる前記複数のタスクのデータの第２のバイト数とに基づいて、非固定費を決定するステップを備える、
請求項１４に記載の方法。
【請求項１７】
１つまたは複数のプログラムを格納するように構成されたメモリと、
前記メモリに結合され、取引処理装置に請求項１から１６のいずれか１項に記載の方法を実行させるために前記１つまたは複数のプログラムを実行するように構成された処理部と、
を備える取引処理装置。
【請求項１８】
マシン実行可能命令が記憶された非一時的コンピュータ可読記憶媒体であって、前記マシン実行可能命令は、実行されると、マシンに、請求項１から１６のいずれか１項に記載の方法を実行させる、
非一時的コンピュータ可読記憶媒体。
【請求項１９】
非一時的なコンピュータ可読媒体上に有形に格納され、マシン実行可能命令を含むコンピュータプログラム製品であって、
前記マシン実行可能命令は、実行されると、マシンに、請求項１から１６のいずれか１項に記載の方法を実行させる、
コンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の実施形態は概して、ブロックチェーン上の取引処理の分野に関し、特に、取引処理の方法、取引処理のための装置、非一時的なコンピュータ可読記憶媒体、およびコンピュータプログラム製品に関する。
【背景技術】
【０００２】
従来のブロックチェーン取引モデルでは、口座モデルに基づいて、取引ベースのステートマシンは、残高情報に限定されない情報を記憶することができる。さらに、１つまたは複数のスマートコントラクトを用いて、ブロックチェーンプラットフォームは、コンセンサスに基づいて、様々な事前に設計されたコードを実行し、様々な取引を実行することができる。
【０００３】
しかしながら、従来のブロックチェーン取引モデルでは、実際の取引アプリケーションニーズに適していないいくつかの欠点が依然として存在する。例えば、資金分配やマスプロダクト登録などの実際の取引アプリケーションでは、全体として複数のタスクを実行することが望ましい。しかしながら、従来のブロックチェーン取引モデルでは、ブロックチェーンプラットフォームは、１つの取引手続を介して、１つのタスクしか実行することができず、１つの取引手続を介して複数のタスクを実行することはできない。したがって、ブロックチェーンプラットフォームにより実際の取引アプリケーションにおける複雑な状況に対処することは、柔軟的ではなく、かつ、効率的でない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一般に、本開示の例示的な実施形態は、複雑な状況における複数の取引タスクを効率的な方法で、ブロックチェーン上で処理することができる、取引処理のための解決策を提供する。
【０００５】
第１の態様では、取引処理の方法が提供される。この方法は、ブロックチェーンにて取引を処理するためのブロックチェーンノードにおいて、複数のフィールドを含む取引要求を受信するステップであって、前記複数のフィールドは、取引タスクフィールドを含み、前記取引タスクフィールドは、複数の節を含み、前記複数の節の各節は、取引の複数のタスクのうちの１つのタスクを示している、前記ステップと、
前記取引の前記複数のタスクの処理を実行するステップと、
すべての前記複数のタスクを正常に処理した場合にのみ、前記取引が正常に処理されたと判定するステップと、
を含む。
【０００６】
第２の態様では、取引処理のための装置が提供される。
この装置は、
１つまたは複数のプログラムを格納するように構成されたメモリと、
前記メモリに結合され、この装置に、本開示の第１の態様における方法を実行させるように構造された前記１つまたは複数のプログラムを実行するように構成された処理部と、
を含む。
【０００７】
第３の態様では、マシン実行可能命令が記憶された非一時的コンピュータ可読記憶媒体であって、前記マシン実行可能命令は、実行されると、マシンに、本開示の第１の態様の方法を実行させる。
【０００８】
第４の態様では、コンピュータプログラム製品が提供される。このコンピュータプログラム製品は、非一時的なコンピュータ可読媒体上に有形に格納され、マシン実行可能命令を含み、前記マシン実行可能命令は、実行されると、マシンに、本開示の第１の方法を実行させる。
【０００９】
発明の概要のセクションは、本開示の実施形態の重要なまたは本質的な特徴を識別することを意図するものではなく、本開示の範囲を限定するために使用されることを意図するものでもないことを理解されたい。本開示の他の特徴は、以下の説明を通して容易に理解されるのであろう。
【図面の簡単な説明】
【００１０】
本開示の上記および他の目的、特徴並びに利点は、図面を参照して本開示の例示的実施形態をより詳細に説明することによって、より明らかになり、図面において、同一の参照符号は、本開示の例示的実施形態における同一の部分を表している。
【００１１】
【図１】図１は、本開示の実施形態による取引処理システムの構成図を示している。
【００１２】
【図２】図２は、本開示の実施形態による取引処理方法のフローチャートを示している。
【００１３】
【図３】図３は、本開示の実施形態による、複数の取引タスクを処理するための方法のフローチャートを示している。
【００１４】
【図４】図４は、本開示の実施形態を実施するのに適した例示的な装置のブロック図を概略的に示している。
【００１５】
なお、各図において、同一または相当する符号は、同一または相当する構成要素を示している。
【発明を実施するための形態】
【００１６】
ここで、本開示の原理を、いくつかの例示的な実施形態を参照して説明する。当然のことながら、これらの実施形態は、例示の目的のためにのみ記載されており、当業者が本開示の範囲に関していかなる限定を示唆するものでもなく、本開示を理解し、実施するのを助けるものである。本明細書で説明される開示は、以下で説明されるもの以外の様々な方法でも実装され得る。
【００１７】
以下の説明および特許請求の範囲では別段の定義がない限り、本明細書で使用されるすべての技術用語および科学用語は、本開示が属する技術分野の当業者によって一般に理解されるものと同じ意味を有する。
【００１８】
本開示における「一実施形態」、「実施形態」、「例示的実施形態」などへの参照は、記載された実施形態が特定の特徴、構造、または特性を含み得ることを示しているが、すべての実施形態が特定の特徴、構造、または特性を含むことは必ずしも必要ではない。さらに、そのような語句は、必ずしも同じ実施形態を参照しているわけではない。さらに、特定の特徴、構造、または特性が実施形態に関連して記載されている場合、明示的に記載されているか否かにかかわらず、他の実施形態に関連してそのような特徴、構造、または特性に影響を及ぼすことは、当業者の知識の範囲内であることが提示される。
【００１９】
「第１の」および「第２の」などの用語は本明細書では様々な要素を説明するために使用され得るが、これらの要素はこれらの用語によって限定されるべきではなく、これらの用語は１つの要素を別の要素から区別するためにのみ使用される。例えば、第１の要素は第２の要素と呼ばれ得、同様に、第２の要素は例示的な実施形態の範囲から逸脱することなく、第１の要素と呼ばれ得る。本明細書で使用されるように、「および／または」という用語は、列挙された用語のうちの１つまたは複数の任意のすべての組合せを含むことを理解されたい。
【００２０】
本明細書で使用される用語は特定の実施形態を説明するためだけのものであり、例示的な実施形態を限定することを意図するものではない。本明細書で使用されるように、単数形「ａ」、「ａｎ」、および「ｔｈｅ」（その）は、文脈が別途明確に示さない限り、複数形も含むことが意図される。用語「備える」、「備えている」、「有する」、「有している」、「含む」、および／または「含んでいる」は、本明細書で使用される場合、述べられた特徴、要素、および／または構成要素などの存在を指定するが、１つまたは複数の他の特徴、要素、構成要素、および／またはそれらの組合せの存在または追加を排除するものではないことがさらに理解される。
【００２１】
前述したように、従来の取引処理スキームでは、取引処理ノードによって処理される各取引が常に１つのタスクに関係している。この場合、同じ取引提案者によって開始された複数のタスクは、１つの取引手続だけでは実行できない。したがって、ブロックチェーンプラットフォームが実際の取引アプリケーションにおける複雑な状況に対処することは、柔軟かつ効率的ではない。
【００２２】
上記の問題のうちの１つまたは複数、ならびに他の潜在的な問題に少なくとも部分的に対処するために、本開示の例示的な実施形態は、取引処理の解決策を提案する。この解決策では、ブロックチェーン内の取引を処理するブロックチェーンノードが、複数のフィールドを含む取引要求を受信する。複数のフィールドは、複数の節を含む取引タスクフィールドを含み、複数の節の各節は、取引の複数の取引タスクのうちの１つを示している。ブロックチェーンノードは、取引の複数の取引タスクを処理し、複数の取引タスクのすべてを正常に処理したことに応答した場合のみ、取引が正常に処理されたと判定する。
【００２３】
本明細書では、本開示のタスクまたは取引タスクが、特定の機能を実装するためのブロックチェーン上の別個の動作を指すことができ、これはある意味では従来の取引手続を介して実装される従来の取引と同等のものとすることができる。それに対応して、本開示の取引は、１つまたは複数のタスクまたは取引タスクを含むことができる。
【００２４】
取引処理ノードによって処理される各取引が１つのタスクのみに向けられる従来の取引処理スキームとは異なり、上記の解決策では、複数の節を含む取引タスクフィールドであって、複数の節のそれぞれの節が、取引の複数のタスクのうちの１つを示す複数の節を含む上記取引タスクフィールドを含む取引要求によって、単一の取引要求に示される複数のタスクを、取引要求の処理中に、取引タスクフィールドによって定義される順序で、または、別の方法で定義される順序で１つずつ処理することができる。この場合、同じ取引提案者によって開始される複数の取引タスクを全体として実行することができる。したがって、本開示により、より柔軟に、かつ、より効率的に、ブロックチェーンノードが実際の取引アプリケーションにおける複雑な状況に対処することが実現される。
【００２５】
以下、本発明の原理及び実施の形態について、図面を参照して詳細に説明する。まず、本開示の実施形態に係る取引処理システム１００の構成図を示す図１を参照する。図１に示すように、システム１００は管理装置１１４と、ブロックチェーン取引を処理するための複数のブロックチェーンノード１１２‐１、１１２‐２〜１１２‐Ｎ（すなわち、取引処理ノード１１２）と、複数の端末装置１４０、１４２、１４４とを含む。管理装置１１４および取引処理ノード１１２はすべて、ブロックチェーンプラットフォーム１１０のブロックチェーンノードとすることができる。管理装置１１４、取引処理ノード１１２、並びに、端末装置１４０、１４２および１４４は、ネットワーク１３０を介してデータのやりとりを行う。
【００２６】
ブロックチェーンノードおよび端末装置の数は、単に例示の目的のためのものであり、なんらかの限定を示唆するものではないことを理解されたい。システム１００は、本開示の実施形態を実装するように適合された任意の適切な数のブロックチェーンノードおよび端末装置を含み得る。
【００２７】
端末装置は、携帯電話（mobile phone）、携帯電話（ cellular phone）スマートフォン、VoIP(voice over IP)電話、無線ローカルループ電話、タブレット、携帯情報端末（ＰＤＡ）、ポータブルコンピュータ、デスクトップコンピュータなどを含み得るが、これらに限定されない任意の端末装置であってもよい。ユーザ１５２は、端末装置１４２を介して取引の要求を開始することができ、端末装置１４２または管理装置１１４は、端末装置１４２からの要求を、ブロックチェーンプラットフォーム１１０へ配信され、処理される取引要求へと形式化することができる。取引要求は、ブロックチェーンノード１１２によって処理される１つ以上の取引タスクを示すものであってもよい。いくつかの実施形態では、ウォレットアプリケーションを端末装置１４２上で実行することができる。管理装置１１４によって提供されるサービスを使用するために、ユーザ１５０または１５２は、ウォレットアプリケーションを介して管理装置１１４に登録し、管理装置１１４においてユーザ１５０または１５２を一意に識別するための関連アカウントＩＤを取得することができる。さらに、ユーザ１５０または１５２は、ウォレットアプリケーションを介して、自身のブロックチェーン取引のための取引提案者アドレスまたは受信者アドレスとして動作させる自身のアドレスを生成することができる。
【００２８】
管理装置１１４は、ブロックチェーンプラットフォーム１１０のノードとして動作するためのネットワーク装置であってもよい。管理装置１１４は１つまたは複数のコンピュータまたはサーバを含むことができるが、これらに限定されない。管理装置１１４を介して、端末装置１４０、１４２および１４４は、ブロックチェーンプラットフォーム１１０からサービスを受信することができる。管理装置１１４は、各端末装置を介して、登録ユーザ１５０及び１５２からの取引要求を受信し、登録ユーザ１５０及び１５２に自身のアドレスを介してサービスを提供することができる。管理装置１１４は、ブロックチェーンプラットフォーム１１０上で、受信した取引要求を配布するか、または受信した取引要求を取引処理ノード１１２のいずれかまたはすべてに送信することができる。その結果、取引処理ノード１１２は、取引手数料を計算し、受信した取引要求に基づいて取引をさらに処理することができる。管理装置１１４によって送信される取引要求は、複数のフィールドを含むことができる。これらのフィールドは、複数の節を含む取引タスクフィールドを少なくとも含むことができ、各節は、取引の複数の取引タスクのうちの１つを示す。取引の複数の取引タスクは、同じタイプであっても、異なるタイプであってもよい。なお、管理装置１１４は、取引タスクフィールドが３つの節（第１節、第２節、第３節）からなる取引要求を送信してもよいものとする。たとえば、最初の節は、暗号通貨（仮想通貨）の金額をアドレスに送金するための取引タスクを示し、２番目の節はスマートコントラクトを呼び出すための取引タスクを示し、３番目の節は新しいスマートコントラクトを展開（デプロイ）するための取引タスクを示す。このように、１つの取引要求内に複数の取引タスクを示すことができる。
【００２９】
ブロックチェーンプラットフォーム１１０に関しては、ブロックチェーン取引および預金取引結果データを処理するために使用される。構造的には、ブロックチェーンプラットフォーム１１０が例えば、基本サービス層、スマートコントラクト層、およびブロックチェーン最下層（図示せず）を上から下に含む。ブロックチェーンプラットフォーム１１０は、管理装置１１４および取引処理ノード１１２を備えることができる。さらに、ブロックチェーンプラットフォーム１１０は、ブロックチェーンノードとして動作し得る場合、端末装置１４０、１４２および１４４のいずれかまたはすべてをさらに含むことができる。いくつかの実施形態では、ブロックチェーンプラットフォーム１１０は、プライベートブロックチェーン、パブリックブロックチェーン、またはコンソーシアムブロックチェーンに構成することができる。
【００３０】
取引処理ノード１１２は、ブロックチェーンプラットフォーム１１０のノードとして動作するためのネットワーク装置であってもよい。取引処理ノード１１２は、１つ以上のコンピュータまたはサーバを含むことができるが、これらに限定されない。取引処理ノード１１２は、管理装置１１４から取引要求を受信し、受信した取引要求に基づいて取引手数料を計算することができる。取引処理ノード１１２は、受信した取引要求に含まれる取引タスクフィールドによって示される複数の取引タスクをさらに処理してもよい。取引の実行後、取引処理ノード１１２は、複数の取引タスクがすべて正常に処理されたかどうかを判断することによって、取引が正常に処理されたかどうかをさらに判断してもよい。複数の取引タスクがすべて正常に処理されたと判断された場合、取引処理ノード１１２は、取引が正常に処理されたと判断し、正常な取引応答を管理装置１１４に返すことができる。一方、複数の取引タスクのいずれかが、例えば、不十分な口座残高、システムエラー、または任意の他の理由のために、正常に処理されない場合、取引処理ノード１１２は、取引が正常に処理されないと判定し、失敗取引応答を管理装置１１４に返すことができる。すなわち、１つの取引要求には複数の取引タスクが含まれているが、複数の取引タスクの実行をアトミックオペレーション（不可分操作）とみなすことができる。このようにして、管理装置１１４は、各タスクが正常に処理されたか否かを監視することなく、複数の取引タスクを含む取引が全体として正常に処理されたか否かを監視することができる。
【００３１】
次に、本開示の実施形態による取引処理方法２００のフローチャートを示す図２を参照する。検討を目的として、方法２００について、図１を参照して説明する。方法２００は、図１に示すような取引処理ノード１１２を含むことができる。図２では、例えば、図１に示す取引処理ノード１１２のプロセッサによって、様々なアクションが実行される。方法２００はまた、図示されていない追加のアクションを含むことができ、かつ／または、図示されたアクションを省略することができ、本開示の範囲は、この点で限定されない。
【００３２】
ブロック２０２で、取引処理ノード１１２は、複数のフィールドを含む取引要求を受信する。複数のフィールドは、複数の節を含む取引タスクフィールドを含むことができる。各節は、取引の複数の取引タスクのうちの１つを示す。例えば、取引処理ノード１１２は、管理装置１１４から取引要求を受信する。受信された取引要求は、取引提案者を示すためのフィールドと、受信者アドレスを示すためのフィールドと、取引タスクを示すための取引タスクフィールドとを少なくとも備えることができる。例えば、取引タスクフィールドは、節の集合を示すものであってもよい。各節は、スマートコントラクトを呼び出すこと、ある量の暗号通貨をアドレスに送金すること、または新しいスマートコントラクトを展開（デプロイ）することなどの取引タスクのうちの１つを示す。取引タスクを定義する節の集合を用いて、ブロックチェーンノードが、複数の取引要求ではなく、１つの受信された取引要求に基づいて複数の取引タスクを処理することが可能である。
【００３３】
ある実施形態では、取引タスクフィールドの各節が、取引タスクを定義するための１つ以上の情報要素を含んでもよい。例えば、各節には、第１の情報要素、第２の情報要素及び第３の情報要素のうち少なくとも１つが含まれる。第１の情報要素は、取引タスクに関連する受信者アドレスを示すものであってもよく、第２の情報要素は、受信者アドレスに送金される暗号通貨の量を示すものであってもよく、第３の情報要素は、節によって示される取引タスクのデータを示すものであってもよい。
【００３４】
シナリオによっては、第１の情報要素が要素「Ｔｏ」を参照し、第２の情報要素が要素「Ｖａｌｕｅ」を参照し、第３の情報要素が要素「Ｄａｔａ」を参照するものであってもよい。つまり、各節は、Ｔｏ−Ｖａｌｕｅ−Ｄａｔａ構造を有している。例えば、要素「Ｄａｔａ」は、アカウント初期化や入力データのプログラムコードを示すものであってもよい。各節は、取引タスクを定義するための３つの情報要素を含むものとして説明したが、他の場合において、各節が、取引タスクを指定または定義するためのより多くの情報要素を含むことができることを理解されたい。
【００３５】
いくつかの実施形態において、節によって示される取引タスクは、複数の節の別の節によって示される別の取引タスクに依存しない。例えば、単一の取引要求に含まれる複数の取引タスクは、互いに独立していているものであってもよい。いくつかの実施形態において、複数の取引タスクは、少なくとも２つの関連する取引タスクを含むことができ、その場合、節によって示される１つのタスクは、複数の節の別の節によって示される別のタスクに依存し、その結果、タスクは、別のタスクが実施された後にのみ実施することができる。例えば、単一の取引要求に含まれる１つの取引タスクは、新しいスマートコントラクトを展開することを示すことができ、取引要求に含まれる別の取引タスクは、いくつかの特定のパラメータで新しいスマートコントラクトを実行することを示すことができる。
【００３６】
ブロック２０４で、取引処理ノード１１２は、受信した取引要求に基づいて、複数の取引タスクを処理する。
【００３７】
上述のように、受信された取引要求内の各節は、取引タスクを定義するための第１の情報要素、第２の情報要素、および第３の情報要素を含むことができる。この状況で、取引処理ノード１１２が、節に含まれる第１の情報要素がｎｕｌｌであると判断した場合、これは、この節が新しいスマートコントラクトを展開するものであり、新しいスマートコントラクトのプログラムコードが第３の情報要素（Ｄａｔａ）に含まれていることを示している。したがって、取引処理ノード１１２は、同じ節に含まれる第３の情報要素に基づいて新しいスマートコントラクトを展開（デプロイ）し、第２の情報要素に示される金額を新しく展開されたスマートコントラクトに送金する。この場合、第２の情報要素は、新たに展開されたスマートコントラクトに送金されるべき暗号通貨の量を示すものであってもよく、第３の情報要素は、スマートコントラクトを展開（デプロイ）するためのデータを示すものであってもよい。スマートコントラクトを展開（デプロイ）するためのデータは、スマートコントラクトを展開（デプロイ）するためのコマンドや、展開（デプロイ）対象のスマートコントラクトのプログラムコードを含むものであってもよい。
【００３８】
ある実施形態において、第１の情報要素が有効なアドレスを示していると取引処理ノード１１２が判定した場合、取引処理ノード１１２は、第１の情報要素がスマートコントラクトアドレスを示すかどうかを判定する。一方、第１の情報要素がスマートコントラクトアドレスを示しているとさらに取引処理ノード１１２が判定した場合、取引処理ノード１１２は、第３の情報要素に基づいて、スマートコントラクトアドレスに対応するスマートコントラクトを呼び出し、第２の情報要素に示された暗号通貨の金額をスマートコントラクトに送金する。この場合、第３の情報要素によって示されるデータは、スマートコントラクトを実行するためのパラメータを含むものであってもよい。一方、第１の情報要素が非スマートコントラクトアドレス（すなわち、通常のウォレットアドレスまたはブロックチェーンアドレス）を示していると取引処理ノード１１２が判定した場合、取引処理ノード１１２は、第２の情報要素に示される金額を非スマートコントラクトアドレスに送金する。各節に含まれる情報要素が決定されると、取引処理ノード１１２は、受信した取引要求内のすべての取引タスクを１つずつ決定し、処理してもよい。
【００３９】
取引タスクの決定および処理について、本開示の実施形態による複数の取引タスクを決定および処理するための方法３００を示す図３を参照して詳細に説明する。方法３００はまた、図示されていない追加のアクションを含むことができ、かつ／または、図示されたアクションを省略することができ、本開示の範囲は、この点で限定されない。
【００４０】
方法３００において、ブロック３０２で、取引処理ノード１１２は、第１の情報要素がｎｕｌｌであるか否かを判定する。ブロック３０２で、第１の情報要素がｎｕｌｌであると判断された場合、ブロック３０４で、取引処理ノード１１２は、第３の情報要素に基づいてスマートコントラクトを展開（デプロイ）する。さらに、取引処理ノード１１２は、第２の情報要素に金額が示されている場合、第２の情報要素に示されている金額をスマートコントラクトにさらに送金することができる。ブロック３０２で、第１の情報要素がｎｕｌｌでないと判定された場合、ブロック３０６で、取引処理ノード１１２は、第１の情報要素が有効なアドレスを示すかどうかを判定する。ブロック３０６で、第１の情報要素が有効なアドレスを示すと判定された場合、ブロック３０８で、取引処理ノード１１２は、第１の情報要素がスマートコントラクトアドレスを示すかどうかを判定する。スマートコントラクトアドレスが示されていると判定された場合、ブロック３１０において、取引処理ノード１１２は、第３の情報要素に基づいてスマートコントラクトを呼び出し、実行する。この場合、第３の情報要素は、スマートコントラクトを実行するためのパラメータを含むことができる。実行されたスマートコントラクトは、ブロックチェーンプラットフォーム１１０に事前に展開（デプロイ）されている。さらに、取引処理ノード１１２は、第２の情報要素に金額が示されている場合、第２の情報要素に示されている金額をスマートコントラクトにさらに送金することができる。一方、非スマートコントラクトアドレスが示されていると判定された場合、ブロック３１２において、取引処理ノード１１２は、第２の情報要素に示されている金額を非スマートコントラクトアドレスに送金する。
【００４１】
図２に戻ると、ブロック２０６において、取引処理ノード１１２は、取引処理ノード１１２がすべての複数のタスクを正常に処理した場合にのみ、取引が正常に処理されたと判定する。いくつかの実施形態において、すべての複数のタスクが正常に処理されたかどうかを取引処理ノード１１２が判定し、複数の節によって示されるすべての取引タスクが正常に処理されたと取引処理ノード１１２が判定した場合、取引処理ノード１１２は、取引要求によって定義された取引が正常に処理されたと判定する。この場合、取引処理ノード１１２は、成功した取引応答を管理装置１１４にさらに返すことができる。他のいくつかの実施形態において、取引タスクのうちのいずれか１つが正常に処理されないと取引処理ノード１１２が判定した場合、取引処理ノード１１２は、取引要求によって定義された取引が正常に処理されないと判定する。この場合、取引処理ノード１１２はさらに、障害取引応答を管理装置１１４に返すことができる。
【００４２】
上記の解決策では、取引中の複数の取引タスクを定義するための複数の節を含む取引タスクフィールドを含む取引要求を用いて、単一の取引要求に含まれる複数の取引タスクを、取引要求の処理中に、複数の節によって定義された順序で、または別の方法で定義された順序で１つずつ処理することができる。この場合、同じ取引提案者によって開始される複数の取引タスクを全体として実行することができる。したがって、本開示により、より柔軟に、ブロックチェーンノードが実際の取引アプリケーションにおける複雑な状況に対処することができる。さらに、複数の取引タスクが１つずつ（複数の節により定義される順序で、または、他の事前に定義された順序で）処理されるため、複数のステップを有する取引を記述するための安全かつ効率的な方法を提供することもできる。
【００４３】
また、上述したように、取引処理ノード１１２が複数の取引タスクの全ての処理の結果に基づいて取引の性能を判定することにより、複数の節によって定義される複数の取引タスクの実行は、アトミックオペレーションであるべきであり、すなわち、全ての取引タスクが正常に実行された場合にのみ、取引要求によって定義される現在の取引が正常に実行される（成功する）。いずれかの取引タスクが失敗すると、現在の取引は失敗する。このように、取引提案者が、処理対象の取引タスクのバッチの処理を開始すると、取引提案者または管理装置は、各タスクが成功したかどうかを監視することなく、複数のタスクを含む現在の取引が全体として正常に処理されたかどうかのみを監視することができる。
【００４４】
いくつかの実施形態では、取引タスクフィールドに加えて、取引要求はさらに、以下の少なくとも１つを示す少なくとも１つのフィールドを含む：取引要求に関連する取引が依存する関連取引の識別子（すなわち、関連取引ＩＤ）、取引ナンス、現在の取引がパッケージ化されるブロックの参照基準、パッケージ化されるブロックの参照基準から開始して現在の取引の期限が切れる後のブロック数、取引手数料計算の係数、取引のために取引提案者が喜んで支払う最大取引手数料、後方互換性のための予約フィールド、取引提案者の署名情報、および、ブロックチェーン１１０の生成ブロックの識別子の最後のバイト。取引要求は上記の１つまたは複数のフィールドを含むものとして説明したが、いくつかの他の場合において、取引要求が、取引によって必要とされる他のフィールドを含んでもよいことを理解されたい。
【００４５】
以下では、上記の少なくとも１つのフィールドのいくつかを、本開示のいくつかの特定の実施形態について詳細に説明する。
【００４６】
いくつかの実施形態では、少なくとも１つのフィールドが、現在の取引が依存する取引ＩＤを示すＤｅｐｅｎｄｓＯｎフィールドを含む。つまり、現在の取引の処理は、ＤｅｐｅｎｄｓＯｎフィールドの取引ＩＤによって示される取引の正常な処理に依存する。いくつかの実施形態において、上記のように取引の処理が成功したということは、当該取引の処理が成功し（すなわち、エラーが返されることなく）、取引の結果がブロックチェーンに記録されたことを意味し得る。いくつかの他の実施形態において、上記のように取引の処理が成功したということは、当該取引が成功して処理されたかどうかにかかわらず、取引の結果がブロックチェーンに記録されたことのみを意味し得る。なお、ユーザや管理装置１１４は、「取引の処理が成功した」という意味を予め指定しておいてもよい。
【００４７】
複数のフィールドがＤｅｐｅｎｄｓＯｎフィールドを含む場合、方法２００は、ブロック２０４で複数のタスクを処理する前に、ＤｅｐｅｎｄｅｓＯｎフィールド内の取引ＩＤによって示される関連取引が正常に処理されたかどうかを判定するステップと、関連取引が正常に処理されたと判定された場合にのみブロック２０４の処理を有効にするステップ（図示せず）とをさらに含むことができる。
【００４８】
いくつかの従来のブロックチェーン取引モデルでは、取引処理ノードが、同じ取引提案者からの複数の取引を、所定の順序で、例えば、取引に示されるそれぞれのナンスによって示される数値の順序で、１つずつ処理することができる。しかしながら、異なる取引提案者からの複数の取引について、上記の従来のブロックチェーン取引モデルがこれらの取引の実行順序を特定することは困難である。いくつかの他の従来のブロックチェーン取引モデルでは、スマートコントラクトが複数の取引の実行順序を特定するように構成され得る。しかしながら、スマートコントラクトをブロックチェーンプラットフォームに展開（デプロイ）することは、複雑で高コストとなる。
【００４９】
したがって、本明細書で説明する解決策では、ＤｅｐｅｎｄｓＯｎフィールドを用いて、複数の取引が、異なる取引提案者からのものであっても、ユーザまたは管理装置１１４が複数の取引の実行順序を容易に特定することが可能である。例えば、ＡｌｉｃｅはＢｏｂの取引を設定し、ＤｅｐｅｎｄｓＯｎフィールドを使用して、Ａｌｉｃｅによって事前設定された取引ＩＤを持つ取引が正常に完了した後にのみＢｏｂの取引を実行できることを定義するようにしてもよい。例えば、アリスは第１の取引が正常に完了した場合にのみ、アリスの口座からボブの口座に一定量の料金を送金するために、第２の取引を自動的に開始するように指定することができる。この場合、第２の取引の取引要求には、第１の取引の取引ＩＤが含まれるＤｅｐｅｎｄｓＯｎフィールドを含めるべきである。したがって、本開示の実施形態による取引モデルでは、特定された順序で取引を処理する、はるかに容易かつ低コストの手法を実現することができる。
【００５０】
いくつかの実施形態では、少なくとも１つのフィールドが、現在の取引がパッケージされるべきブロックの参照を示すＢｌｏｃｋＲｅｆフィールドを含む。すなわち、ブロックチェーン内の取引の処理順序またはバッファリング順序に従って現在の取引をパッケージングする代わりに、ユーザまたは管理装置は、現在の取引を特定のブロックにパッケージングするように指定することができる。いくつかの実施形態では、ＢｌｏｃｋＲｅｆフィールドが、現在の取引をパッケージするブロックのブロック高さ（すなわち、ブロックの絶対位置）を示すための４バイトを含むことができる。他のいくつかの実施形態では、ＢｌｏｃｋＲｅｆフィールドが、８バイトを含むことができ、最初の４バイトは、現在の取引をパッケージ化するためのブロックのブロック高さを示し、最後の４バイトは、パッケージ化するためのブロックの前のブロックが存在するかどうかを示す。例えば、前のブロックが存在する場合、最後の４バイトは、前のブロックのブロックＩＤの一部である可能性があるが、前のブロックが存在しない場合（つまり、現在の取引を“ｆｕｔｕｒｅ”ブロックにパッケージ化すべきである場合）、最後の４バイトはすべて“０”に設定してもよい（パッケージ化のためのブロックの前のブロックのＩＤがまだ存在しないため）。
【００５１】
複数のフィールドがＢｌｏｃｋＲｅｆフィールドを含む場合、方法２００は、ブロック２０４で複数のタスクを処理した後、またはブロック２０６で現在の取引が正常に処理されたと判定した後に、ＢｌｏｃｋＲｅｆフィールドからブロックを特定し、当該取引（すなわち、当該取引の処理された複数のタスクに関連するデータ）を、特定されたブロック（図示せず）にパッキングする工程をさらに含むことができる。
【００５２】
いくつかの実施形態では、少なくとも１つのフィールドが、現在の取引の有効期限を決定するために使用され得るＥｘｐｉｒａｔｉｏｎフィールドを含む。ここで、有効期限は、現行取引の処理の廃棄または停止を意味する。例えば、Ｅｘｐｉｒａｔｉｏｎフィールドは、ＢｌｏｃｋＲｅｆフィールドに示されたブロックから開始して現在の取引が終了する後のブロック数（すなわち、ブロック間隔）を示すことができる。この場合、現在の取引の有効期限は、ＢｌｏｃｋＲｅｆフィールドとＥｘｐｉｒａｔｉｏｎフィールドとの組み合わせから決定されてもよい。別の例では、Ｅｘｐｉｒａｔｉｏｎフィールドが「有効期限切れブロック」の高さまたは基準（参照基準）など、現在の取引の有効期限を直接示すことができる。いくつかの実施形態では、Ｅｘｐｉｒａｔｉｏｎフィールドが４バイトを含むことができる。
【００５３】
複数のフィールドがＥｘｐｉｒａｔｉｏｎフィールドを含む場合、方法２００は、現在の取引が正常に処理されたと判定する前に、Ｅｘｐｉｒａｔｉｏｎフィールド、または、ＢｌｏｃｋＲｅｆフィールドとＥｘｐｉｒａｔｉｏｎフィールドとの組合せに基づいて、プリセットブロックに到達したかどうかを判定する工程と、プリセットブロックに到達したと判定された場合に取引を期限切れにする工程とをさらに含むことができる。
【００５４】
本明細書で説明される解決策では、取引要求内にＥｘｐｉｒａｔｉｏｎフィールドを構成し、Ｅｘｐｉｒａｔｉｏｎフィールドに基づいて取引要求によって定義された取引を期限切れにすることによって、取引提案者が、取引提案者によって開始された取引を期限切れにすることが可能である。このように構成できる特徴により、取引提案者は、取引が処理されるのを待つために数時間または数日間スタックされ、取引提案者がそれについて何も行うことができないという状況によって、もはやトラブルを受けることはない。取引要求のＥｘｐｉｒａｔｉｏｎフィールドにより、取引は、取引がハイジャックされ、後に再使用されて問題を引き起こすことを防止することができるので、より安全になる。
【００５５】
いくつかの実施形態では、少なくとも１つのフィールドが、取引ナンスを示すためのナンスフィールドを含む。Ｎｏｎｃｅフィールドは、取引ＩＤを計算するために使用することができる。ナンスを設定することにより、ユーザまたは管理装置１１４は取引ＩＤの計算に影響を与えることができ、これにより、各取引が一意の取引ＩＤを有することが保証される。
【００５６】
いくつかの実施形態では、少なくとも１つのフィールドは、取引手数料計算のための係数を示すためのＧａｓＰｒｉｃｅＣｏｅｆフィールドと、取引提案者が現在の取引に対して支払うことを望む最大取引手数料を示すためのＧａｓフィールドと、後方互換性のためのＲｅｓｅｒｖｅｄフィールドと、取引提案者の署名情報を示すためのＳｉｇｎａｔｕｒｅフィールドと、クロスチェーンリプレイ攻撃を防止するためのブロックチェーン１１０の生成ブロックの識別子の最後のバイトを示すためのＣｈａｉｎＴａｇフィールドとを含む。ここで、取引提案者の署名情報は、取引提案者が取引提案者の秘密鍵を用いて取引要求の他の全てのフィールドに署名することによって生成される署名である。
【００５７】
取引の一意の識別子（すなわち、取引ＩＤ）に関して、いくつかの実施形態では、それは取引要求および取引提案者のアドレスに基づいて生成される。例えば、取引の識別子は、取引提案者のアドレスと複数のフィールドの一部とをハッシュすることによって生成されてもよい。複数のフィールドのうちの一部は、取引提案者の署名情報を示すフィールドを除いた取引要求の全てのフィールドであってもよい。例えば、ＶｅＣｈａｉｎＴｈｏｒブロックチェーンでは、すべての取引に固有の取引ＩＤ(すなわち、ＴｘｌＤ）が与えられる。取引ＩＤは、以下の式（１）に基づいて算出することができる：
【数１】
2021521544.tif 000003
Ωは、Ｓｉｇｎａｔｕｒｅフィールドを除く取引要求のすべてのフィールドを表している。「ｓｉｇｎｅｒ＿ａｄｄｒｅｓ」は、取引提案者のアドレスを表している。取引ＩＤを決定する際にＳｉｇｎａｔｕｒｅフィールドを除外することによって、ブロックチェーン内の任意のエンティティ（例えば、端末デバイス、管理デバイス、またはブロックチェーンノード）は、取引提案者の署名なしで取引ＩＤを計算することができる。
【００５８】
いくつかの従来のブロックチェーン取引モデルでは、例えば、アカウントナンスは、各取引が一度だけ処理され得ることを保証するためのカウンタとして使用される。これにより、リプレイ攻撃を防ぐ解決策が提供されるが、実際には、取引は、当該取引のナンスが取引提案者のアカウントナンスと等しい場合にのみ実行されることが可能となる。取引は、例えば、取引を完了するのに不十分な口座残高、または、取引提案者によって指定された限度を超える取引手数料など、いくつかの理由で失敗する可能性がある。取引が失敗した場合、アカウントナンスは不変のままであり、その結果、より大きいナンスを有するすべての取引がブロックチェーンノードによって拒絶されることになる。したがって、従来のブロックチェーン取引モデルでは、取引提案者が同時に複数の取引を送出した場合（これは企業ユーザがたとえば、製品を登録するか、または、記録を更新するときに、非常に可能性が高い）、１つの取引が失敗すると、より大きいナンスを有する他のすべての取引はブロックチェーンノードによって拒絶されることになる。
【００５９】
それに対して、本明細書に記載する解決策では、所与の取引を検証するとき、管理装置１１４および／または取引処理ノード１１２は、現在の口座ナンスをチェックする代わりに、取引要求に関連する取引ＩＤ(すなわち、ＴｘＩＤ）を演算し、演算された取引ＩＤが前に使用されたかどうかを確認する。管理装置１１４および／または取引処理ノード１１２は、すでに取引ＩＤが存在する取引を拒絶する。取引提案者アドレスと、取引要求内の複数のフィールドの一部とをハッシュして取引ＩＤを生成し、取引ＩＤがすでに存在する取引を拒否することにより、管理装置および／または取引処理ノード１１２がリプレイ攻撃を防止することが可能である。
【００６０】
さらに、本明細書で説明される解決策では、取引提案者のアドレスと、Ｓｉｇｎａｔｕｒｅフィールドを除く取引要求内のすべてのフィールドとをハッシュすることで取引ＩＤを生成することによって、任意の２つの取引について、それらが異なる値を有するフィールドを有する限り、それらの取引ＩＤは異なることになる。したがって、Ｎｏｎｃｅフィールドに含まれる取引ナンスを調整することにより、新たな取引ＩＤを生成することができる。このようなメカニズムを用いて、取引提案者は、様々な取引ＩＤを有する複数の取引を容易に生成することができ、このことは、複数の取引が同時に送信され、取引プロセッシングノードによって独立して処理されることを意味する。
【００６１】
いくつかの実施形態では方法２００において、取引処理ノード１１２は、取引を処理するための取引手数料を決定することができる。取引手数料は、ブロックチェーン取引を処理するためのコストを指し、これは、通常、取引提案者によって取引を処理するために取引処理ノード１１２に支払われる。取引手数料は、固定されていても固定されていなくてもよく、これは異なるブロックチェーンのコンセンサスメカニズムに依存する。いくつかの実施形態では、取引を処理するためのブロックチェーンノードの取引手数料が２つの部分からなり、一方は固定費であり、他方は非固定費である。いくつかの実施形態では、非固定費が、タスクのために消費される計算の複雑さ、または、リソースなどの、処理されるタスクの内容に基づいて決定され得る。
【００６２】
異なるタイプの取引タスクは、複雑さまたは消費リソースの点で大きく変化し得る。いくつかの実施形態において、取引手数料の非固定費は、複数の取引タスクの少なくともタイプと、複数の節の上記第３の情報要素内のデータなどの複数の取引タスクに関するデータとに基づいて決定される。いくつかの実施形態において、複数の取引タスクのためのデータは、少なくとも、口座初期化のためのプログラムコードまたは入力データを含む。いくつかの実施形態では、取引タスクのタイプは、例えば、ある量の暗号通貨を非スマートコントラクトアドレスに送金すること、スマートコントラクトを呼び出すこと、または新しいスマートコントラクトを展開（デプロイ）することを含む。
【００６３】
いくつかの実施形態において、取引処理ノード１１２は、第１の事前定義値と等しい、複数の節内の第３の情報要素のバイト数と、第１の事前定義値とは異なる、複数の節内の第３の情報要素のバイト数とに基づいて、非固定費を決定する。いくつかの実施形態では、第１の所定値はゼロである。
【００６４】
取引手数料に関しては、いくつかの実施形態では以下の式（２）によって計算することができる：
【数２】
2021521544.tif 000004
ここで、ｇｔｏｔａｌは、取引要求によって定義された取引を処理するために計算された取引手数料（例えば、ガス単位の取引手数料）を表す。ｇ０は、全体の取引の固定費を表す。ｉは、取引要求の取引タスクフィールドに含まれる複数の節の中のシリアルナンバー（すなわち、ｉ番目の節）を表す。ｇｉＶｍは、ｉ番目の節によって示される取引タスクを実行するブロックチェーンノード（取引処理ノード１１２または管理装置１１４）内の仮想マシンによって返される経費を表す。ｇｉｔｙｐｅは、ｉ番目の節によって示される取引タスクのタイプに依存する経費を表す。ｇｉｄａｔａは、ｉ番目の節の第３の情報要素内のデータに依存する経費を表す。
【００６５】
例えば、固定費ｇ０は、５０００ガスである。ｉ番目の節によって示される取引タスクがスマートコントラクトを展開（デプロイ）するものである場合、ｇｉｔｙｐｅは、４８０００ガスであり、ｉ番目の節が他のタイプの取引タスク、例えば、金額を口座に送金することを示す場合、ｇｉｔｙｐｅは、１６０００ガスである。いくつかの実施形態において、ｇｉｄａｔａは、以下の式（３）によって計算することができる：
【数３】
2021521544.tif 000005
ここで、ｎｉｚは、ｉ番目の節の３番目の情報要素のデータ内のゼロに等しいバイト数を表しており、ｎｉｎｚは、ｉ番目の節の３番目の情報要素のデータ内のゼロではないバイト数を表す。いくつかの実施形態では、取引手数料にガス価格を乗じることができる。
【００６６】
本明細書に記載する解決策では、１つの取引要求内に複数のタスクを含み、単一の取引手続を介して複数のタスクを処理することによって、固定費を節約することができる。例えば、取引の固定費が与えられた場合であって、完了すべき３つのタスクがある場合、３つの独立した取引手続を通して３つのタスクを実行するのと比較して、本開示の実施形態による単一の取引手続を通して３つのタスクを実行することによって、当該固定費の２倍の額が節約される。
【００６７】
図４は、本明細書で説明される発明を実装するように適合された電子装置４００のブロック図を示している。装置４００は、図１に示す管理取引システム１００の１つまたは複数のホスト（例えば、図１に示す取引処理のための管理装置１１４、ブロックチェーンノード１１２‐１、１１２‐２〜１１２‐Ｎ）を実装するために使用することができる。図４に示すように、装置４００は、中央演算処理装置（ＣＰＵ）４０１を備えており、中央演算処理装置（ＣＰＵ）４０１は、読取り専用メモリ（ＲＯＭ）４０２に記憶されたコンピュータプログラム命令、または記憶装置４０８からランダムアクセスメモリ（ＲＡＭ）４０３にロードされたコンピュータプログラム命令に従って、様々なアクションおよびプロセスを実行することができる。ＲＡＭ４０３には、装置４００の動作に応じて必要な各種プログラムやデータが記憶される。ＣＰＵ４０１、ＲＯＭ４０２、ＲＡＭ４０３は、バス４０４を介して互いに接続されている。バス４０４にはまた、入出力（Ｉ／Ｏ）インターフェース４０５も接続されている。
【００６８】
装置４００の以下のコンポーネントは、Ｉ／Ｏインターフェース４０５に接続される：キーボード、マウス等を含む入力部４０６；各種ディスプレイ、ラウドスピーカ等を含む出力部４０７；ディスク、光ディスク等の記憶部４０８；ネットワークカード、モデム、無線通信トランシーバ等の通信部４０９。通信部４０９は、インターネットおよび／または様々な電気通信ネットワークのようなコンピュータネットワークを介して、装置４００が他の装置と情報／データを交換することを可能にする。
【００６９】
処理部４０１は、上述した様々な方法及び処理を実行し、例えば、方法２００及び３００を実行する。例えば、いくつかの実施形態において、方法２００および３００は、コンピュータソフトウェアプログラムとして実装されてもよく、コンピュータソフトウェアプログラムは機械可読媒体、例えば、記憶部４０８に記憶される。いくつかの実施形態において、コンピュータプログラムの一部または全部は、ＲＯＭ４０２および／または通信部４０９を介して装置４００にロードおよび／またはインストールされてもよい。コンピュータプログラムがＲＡＭ４０３にロードされＣＰＵ４０１により実行されるとき、上述の方法２００および３００の１つまたは複数の処理が実行されてもよい。あるいは、他の実施形態において、ＣＰＵ４０１は、方法２００および３００の１つまたは複数の処理を実行するために、任意の他の適切な方法で（例えば、ファームウェアによって）構成されてもよい。
【００７０】
さらに、本開示は、方法、装置、システム、および／またはコンピュータプログラム製品として実装され得ることを理解されたい。コンピュータプログラム製品は、プロセッサに本開示の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体を含んでもよい。
【００７１】
コンピュータ可読記憶媒体は、命令実行装置によって使用される命令を保持し記憶することができる有形の装置であってもよい。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または前述の任意の適切な組合せとすることができるが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の網羅的でないリストは、以下のものを含む：ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、読出し専用メモリ（ＲＯＭ）、消去可能プログラマブル読出し専用メモリ（ＥＰＲＯＭ、または、フラッシュメモリ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ポータブルコンパクトディスク読出し専用メモリ（ＣＤ−ＲＯＭ）、ディジタル汎用ディスク（ＤＶＤ）、メモリスティック、フロッピーディスク、パンチカードまたはグルーブ内で隆起した構造でそこに命令が記録されている構造のような機械的に符号化された装置、および、前述の任意の適切な組み合わせ。本明細書で使用されるコンピュータ可読記憶媒体は、電波または他の自由に伝播する電磁波、導波管または他の伝送媒体（例えば、光ファイバケーブルを通過する光パルス）を通って伝播する電磁波、またはワイヤを通って伝送される電気信号など、それ自体が一時的な信号であると解釈されるべきではない。
【００７２】
本明細書に記載するコンピュータ読み取り可能なプログラム命令は、コンピュータ読み取り可能な記憶媒体から、それぞれの演算／処理装置にダウンロードできるものであり、あるいは、ネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワークおよび／または無線ネットワークを介して、外部コンピュータまたは外部記憶装置に、ダウンロードできるものである。ネットワークは、銅線伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、および／またはエッジサーバを含むことができる。各演算／処理装置内のネットワークアダプタカードまたはネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれの演算／処理装置内のコンピュータ可読記憶媒体に記憶するために、コンピュータ可読プログラム命令を送信する。
【００７３】
本開示の動作を実行するためのコンピュータ読み取り可能なプログラム命令は、アセンブラ命令、命令セットアーキテクチャ（ＩＳＡ）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、以下の１つ以上のプログラミング言語の任意の組み合わせで書かれたソースコードまたはオブジェクトコードであってもよい：Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語または類似のプログラミング言語などの従来の手続型プログラミング言語。コンピュータ読み取り可能なプログラム命令は、全体がユーザのコンピュータ上で実行されるものであってもよく、部分的にユーザのコンピュータ上で実行されるものであってもよく、スタンドアロンのソフトウェアパッケージとして実行されるものであってもよく、部分的にユーザのコンピュータ上で実行され、部分的にリモートのコンピュータ上で実行されるものであってもよく、全体がリモートのコンピュータまたはサーバ上で実行されるものであってもよい。後者のシナリオでは、遠隔コンピュータが、ローカルエリアネットワーク（ＬＡＮ）または広域ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを介してユーザのコンピュータに接続されてもよく、または（例えば、インターネットサービスプロバイダを使用してインターネットを介して）外部コンピュータに接続されてもよい。いくつかの実施形態において、例えば、プログラマブル論理回路、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、またはプログラマブル論理アレイ（ＰＬＡ）を含む電子回路は、本開示の態様を実行するために、電子回路をパーソナル化するためのコンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行してもよい。
【００７４】
本開示の態様は、本開示の実施形態による方法、装置（システム）、およびコンピュータプログラム製品のフローチャート図および／またはブロック図を参照して本明細書で説明される。フローチャート図および／またはブロック図の各ブロック、ならびにフローチャート図および／またはブロック図のブロックの組合せは、コンピュータ可読プログラム命令によって実装できることを理解されたい。
【００７５】
これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供されて、マシンを生成するようにしてもよく、その結果、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行される命令がフローチャートおよび／またはブロック図の１つまたは複数のブロックで特定される機能／動作を実施するための手段を生成されるようにしてもよい。これらのコンピュータ可読プログラム命令はまた、コンピュータ、プログラマブルデータ処理装置、および／または他のデバイスが特定の方法で機能するように指示することができるコンピュータ可読記憶媒体に格納されてもよく、その結果、その中に格納された命令を有するコンピュータ可読記憶媒体は、フローチャートおよび／またはブロック図の１つまたは複数のブロックで特定される機能／アクションの態様を実装することができる命令を含む製造品を備えるものであってもよい。
【００７６】
また、一連の動作ステップをコンピュータ、他のプログラマブル装置、または他のデバイス上で実行させるためのコンピュータ、他のプログラマブルデータ処理装置、または他のデバイス上にコンピュータ可読プログラム命令をロードし、コンピュータ実装プロセスを生成するようにしてもよく、その結果、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行される命令が、フローチャートおよび／またはブロック図の１つまたは複数のブロックで特定される機能／アクションを実装するようにしてもよい。
【００７７】
図中のフローチャートおよびブロック図は、本開示の様々な実施形態による、システム、方法、およびコンピュータプログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。この点に関して、フローチャートまたはブロック図の各ブロックは、特定される論理機能を実装するための１つまたは複数の実行可能命令を備えるモジュール、セグメント、またはコードの一部を表すことができる。また、いくつかの代替実装では、ブロックに記載されている機能が図に記載されている順序から外れる可能性があることに留意されたい。例えば、連続して示される２つのブロックは実際には実質的に同時に実行されてもよく、またはブロックが含まれる機能に応じて、時には逆の順序で実行されてもよい。また、ブロック図および／またはフローチャートの各ブロック、ならびにブロック図および／またはフローチャートのブロックの組み合わせは、特定の機能または動作を実行する専用ハードウェアベースのシステム、または専用ハードウェアとコンピュータ命令との組み合わせによって実装され得ることにも留意されたい。
【００７８】
本開示の様々な実施形態の描写は例示の目的で提示されてきたが、網羅的であることを意図するものではなく、また、開示された実施形態に限定されることも意図していない。記載された実施形態の範囲および精神から逸脱することなく、多くの修正および変形が当業者には明らかであろう。本明細書で使用される用語は、実施形態の原理、市場で見出される技術に対する実際の適用または技術的改善を最もよく説明するために、または当業者が本明細書で開示される実施形態を理解することを可能にするために選択された。
【００７９】
記載されているものは、本開示の好ましい実施形態に過ぎず、本開示を限定することを意図していない。当業者は、本開示が様々な修正および変形を有し得ることを理解する。本開示の精神および原理内の任意の修正、同等の置換および改善は、すべて本開示の保護範囲内にある。
【図１】
2021521544.tif 000006
【図２】
2021521544.tif 000007
【図３】
2021521544.tif 000008
【図４】
2021521544.tif 000009
【国際調査報告】
2021521544.tif 000010
2021521544.tif 000011