(57)【特許請求の範囲】
【請求項１】
1つまたは複数のプロセッサによって実行される、ブロックチェーンネットワーク内のスマートアセットの移動のためのコンピュータ実装方法であって、
第1のノードの第1の識別子、第2のノードの第2の識別子、スマートアセットの識別子、および値を含む移動要求を受信するステップと、
前記スマートアセットの前記識別子、および前記値に少なくとも部分的に基づいて、前記スマートアセットが移動可能であるかどうかを判定するステップと、
前記スマートアセットが移動可能であるとの判定に応答して、自動的に、
第1のスマートアセットおよび第2のスマートアセットを提供するステップであって、前記第1のスマートアセットは、第1の識別子、第1の値が割り当てられ、前記スマートアセットの特性を含み、前記第1の値は、前記スマートアセットの元の値から前記移動要求に含まれる値を減算した残りであり、前記第2のスマートアセットは、第2の識別子、前記移動要求に含まれる値が割り当てられ、前記スマートアセットの特性を含む、ステップと、
前記第1のスマートアセットを前記第1のノードに記録し、前記第2のスマートアセットを前記第2のノードに記録するステップと、
前記スマートアセットを削除するステップと
を含む、方法。
【請求項２】
前記スマートアセットが移動可能であるかどうかを前記判定するステップが、前記スマートアセットに関連するコンピュータ実行可能スマートコントラクト内で提供される機能を実行することによって判定される、請求項1に記載の方法。
【請求項３】
前記スマートアセットが移動可能であるかどうかを前記判定するステップが、前記スマートアセットが分割され得るタイプのものであるかどうかを指示する、前記スマートアセットに関連するタイプ識別子に少なくとも部分的に基づいて判定される、請求項1に記載の方法。
【請求項４】
前記スマートアセットが移動可能であるかどうかを前記判定するステップが、前記スマートアセットの元の値が前記移動要求に含まれる値未満であるかどうかに少なくとも部分的に基づいて判定される、請求項1に記載の方法。
【請求項５】
前記移動要求に含まれる値が、数値および文字列記述のうちの1つとして提供される、請求項1に記載の方法。
【請求項６】
前記文字列記述が、Javascript(登録商標)オブジェクト表記法(JSON)で提供される、請求項5に記載の方法。
【請求項７】
前記ブロックチェーンネットワークが、コンソーシアムブロックチェーンネットワークである、請求項1に記載の方法。
【請求項８】
前記スマートアセットが、複数のフィールドを有する基礎となるデータオブジェクトによって定義される、請求項1に記載の方法。
【請求項９】
1つまたは複数のプロセッサに結合され、前記1つまたは複数のプロセッサによって実行されるとき、前記1つまたは複数のプロセッサに、ブロックチェーンネットワーク内のスマートアセットの移動のための動作を実行させる命令を記憶した、非一時的コンピュータ可読記憶媒体であって、前記動作が、
第1のノードの第1の識別子、第2のノードの第2の識別子、スマートアセットの識別子、および値を含む移動要求を受信することと、
前記スマートアセットの前記識別子、および前記値に少なくとも部分的に基づいて、前記スマートアセットが移動可能であるかどうかを判定することと、
前記スマートアセットが移動可能であるとの判定に応答して、自動的に、
第1のスマートアセットおよび第2のスマートアセットを提供することであって、前記第1のスマートアセットは、第1の識別子、第1の値が割り当てられ、前記スマートアセットの特性を含み、前記第1の値は、前記スマートアセットの元の値から前記移動要求に含まれる値を減算した残りであり、前記第2のスマートアセットは、第2の識別子、前記移動要求に含まれる値が割り当てられ、前記スマートアセットの特性を含む、前記提供することと、
前記第1のスマートアセットを前記第1のノードに記録し、前記第2のスマートアセットを前記第2のノードに記録することと、
前記スマートアセットを削除することと
を含む、非一時的コンピュータ可読記憶媒体。
【請求項１０】
前記スマートアセットが移動可能であるかどうかを前記判定することが、前記スマートアセットに関連するコンピュータ実行可能スマートコントラクト内で提供される機能を実行することによって判定される、請求項9に記載のコンピュータ可読記憶媒体。
【請求項１１】
前記スマートアセットが移動可能であるかどうかを前記判定することが、前記スマートアセットが分割され得るタイプのものであるかどうかを指示する、前記スマートアセットに関連するタイプ識別子に少なくとも部分的に基づいて判定される、請求項9に記載のコンピュータ可読記憶媒体。
【請求項１２】
前記スマートアセットが移動可能であるかどうかを前記判定することが、前記スマートアセットの元の値が前記移動要求に含まれる値未満であるかどうかに少なくとも部分的に基づいて判定される、請求項9に記載のコンピュータ可読記憶媒体。
【請求項１３】
前記移動要求に含まれる値が、数値および文字列記述のうちの1つとして提供される、請求項9に記載のコンピュータ可読記憶媒体。
【請求項１４】
前記文字列記述が、Javascript(登録商標)オブジェクト表記法(JSON)で提供される、請求項13に記載のコンピュータ可読記憶媒体。
【請求項１５】
前記ブロックチェーンネットワークが、コンソーシアムブロックチェーンネットワークである、請求項9に記載のコンピュータ可読記憶媒体。
【請求項１６】
前記スマートアセットが、複数のフィールドを有する基礎となるデータオブジェクトによって定義される、請求項9に記載のコンピュータ可読記憶媒体。
【請求項１７】
システムであって、
コンピューティングデバイスと、
前記コンピューティングデバイスに結合され、前記コンピューティングデバイスによって実行されるとき、前記コンピューティングデバイスに、ブロックチェーンネットワーク内のスマートアセットの移動のための動作を実行させる命令を記憶した、コンピュータ可読記憶媒体と
を含み、前記動作が、
第1のノードの第1の識別子、第2のノードの第2の識別子、スマートアセットの識別子、および値を含む移動要求を受信することと、
前記スマートアセットの前記識別子、および前記値に少なくとも部分的に基づいて、前記スマートアセットが移動可能であるかどうかを判定することと、
前記スマートアセットが移動可能であるとの判定に応答して、自動的に、
第1のスマートアセットおよび第2のスマートアセットを提供することであって、前記第1のスマートアセットは、第1の識別子、第1の値が割り当てられ、前記スマートアセットの特性を含み、前記第1の値は、前記スマートアセットの元の値から前記移動要求に含まれる値を減算した残りであり、前記第2のスマートアセットは、第2の識別子、前記移動要求に含まれる値が割り当てられ、前記スマートアセットの特性を含む、前記提供することと、
前記第1のスマートアセットを前記第1のノードに記録し、前記第2のスマートアセットを前記第2のノードに記録することと、
前記スマートアセットを削除することと
を含む、システム。
【請求項１８】
前記スマートアセットが移動可能であるかどうかを前記判定することが、前記スマートアセットに関連するコンピュータ実行可能スマートコントラクト内で提供される機能を実行することによって判定される、請求項17に記載のシステム。
【請求項１９】
前記スマートアセットが移動可能であるかどうかを前記判定することが、前記スマートアセットが分割され得るタイプのものであるかどうかを指示する、前記スマートアセットに関連するタイプ識別子に少なくとも部分的に基づいて判定される、請求項17に記載のシステム。
【請求項２０】
前記スマートアセットが移動可能であるかどうかを前記判定することが、前記スマートアセットの元の値が前記移動要求に含まれる値未満であるかどうかに少なくとも部分的に基づいて判定される、請求項17に記載のシステム。
【請求項２１】
前記移動要求に含まれる値が、数値および文字列記述のうちの1つとして提供される、請求項17に記載のシステム。
【請求項２２】
前記文字列記述が、Javascript(登録商標)オブジェクト表記法(JSON)で提供される、請求項21に記載のシステム。
【請求項２３】
前記ブロックチェーンネットワークが、コンソーシアムブロックチェーンネットワークである、請求項17に記載のシステム。
【請求項２４】
前記スマートアセットが、複数のフィールドを有する基礎となるデータオブジェクトによって定義される、請求項17に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブロックチェーンネットワークに関する。
【背景技術】
【０００２】
コンセンサスネットワークおよび/またはブロックチェーンネットワークと呼ばれることもある分散元帳システム(DLS:Distributed ledger systems)は、参加エンティティがデータをセキュアに不変に記憶することを可能にする。DLSは、一般に、いずれの特定のユーザ事例(たとえば、暗号通貨)とも無関係に、ブロックチェーンネットワークと呼ばれる。ブロックチェーンネットワークの例示的なタイプは、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、およびコンソーシアムブロックチェーンネットワークを含み得る。パブリックブロックチェーンネットワークは、すべてのエンティティがDLSを使用し、コンセンサスプロセスに参加するために開かれる。プライベートブロックチェーンネットワークは、読取り許可および書込み許可を中央で制御する特定のエンティティに提供される。コンソーシアムブロックチェーンネットワークは、コンセンサスプロセスを制御するエンティティのえり抜きのグループに提供され、アクセス制御レイヤを含む。
【０００３】
ブロックチェーンネットワークは、デジタルアセットの移動および交換による値の取引のために使用され得る。ブロックチェーンネットワーク内で交換される多くのデジタルアセットは、数値によって表される。これらのタイプのデジタルアセットは、容易に分割され、容易に合併され、結果として、ブロックチェーンネットワークのあるノードから別のノードに容易に移動可能である。
【発明の概要】
【課題を解決するための手段】
【０００４】
本開示の実装形態は、ブロックチェーンネットワーク内でデジタルアセットを移動させるためのコンピュータ実装方法を含む。より詳細には、本開示の実装形態は、スマートアセットの原子分割および/または原子合併によるブロックチェーンネットワーク内のスマートアセットの原子移動のためのプラットフォームに関する。
【０００５】
いくつかの実装形態では、動作は、第1のノードの第1の識別子、第2のノードの第2の識別子、スマートアセットの識別子、および値を含む移動要求を受信するステップと、スマートアセットの識別子、および値に少なくとも部分的に基づいて、スマートアセットが移動可能であるかどうかを判定するステップと、スマートアセットが移動可能であるとの判定に応答して、自動的に、第1のスマートアセットおよび第2のスマートアセットを提供するステップであって、第1のスマートアセットは、第1の識別子、第1の値が割り当てられ、スマートアセットの特性を含み、第2のスマートアセットは、第2の識別子、値が割り当てられ、スマートアセットの特性を含む、ステップと、第1のスマートアセットを第1のノードに記録し、第2のスマートアセットを第2のノードに記録するステップと、スマートアセットを削除するステップとを含む。他の実装形態は、コンピュータ記憶デバイス上に符号化された、これらの方法の動作を実行するように構成された、対応するシステム、装置、およびコンピュータプログラムを含む。
【０００６】
これらのおよび他の実装形態は、各々、オプションで、以下の特徴のうちの1つまたは複数を含む。スマートアセットが移動可能であるかどうかの判定は、スマートアセットに関連するコンピュータ実行可能スマートコントラクト内で提供される機能を実行することによって判定される。スマートアセットが移動可能であるかどうかの判定は、スマートアセットが分割され得るタイプのものであるかどうかを指示する、スマートアセットに関連するタイプ識別子に少なくとも部分的に基づいて判定される。スマートアセットが移動可能であるかどうかの判定は、スマートアセットの元の値が値未満であるかどうかに少なくとも部分的に基づいて判定される。この値は、数値または文字列記述の1つとして提供される。文字列記述は、Javascript(登録商標)オブジェクト表記法(JSON:Javascript object notation)で提供される。第1の値は、スマートアセットの元の値からこの値を減算した残りである。ブロックチェーンネットワークは、コンソーシアムブロックチェーンネットワークである。スマートアセットは、複数のフィールドを有する基礎となるデータオブジェクトによって定義される。
【０００７】
本開示はまた、1つまたは複数のプロセッサに結合され、1つまたは複数のプロセッサによって実行されるとき、1つまたは複数のプロセッサに、本明細書で提供する方法の実装形態による動作を実行させる命令を記憶した、1つまたは複数の非一時的コンピュータ可読記憶媒体を提供する。
【０００８】
本開示は、本明細書で提供する方法を実装するためのシステムをさらに提供する。このシステムは、1つまたは複数のプロセッサと、1つまたは複数のプロセッサに結合され、1つまたは複数のプロセッサによって実行されるとき、1つまたは複数のプロセッサに、本明細書で提供する方法の実装形態による動作を実行させる命令を記憶した、コンピュータ可読記憶媒体とを含む。
【０００９】
本開示によるこれらの方法は、本明細書で説明する態様および特徴の任意の組合せを含み得ることが理解される。すなわち、本開示による方法は、本明細書で詳細に説明する態様および特徴の組合せに限定されず、提供する態様および特徴の任意の組合せをやはり含む。
【００１０】
本開示の1つまたは複数の実装形態の詳細が、添付の図面および下記の説明に記載される。本開示の他の特徴および利点は、説明および図面から、また特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１１】
【図１】本開示の実装形態を実行するために使用され得る、例示的な環境を示す図である。
【図２】本開示の実装形態による、例示的な概念アーキテクチャを示す図である。
【図３】本開示の実装形態による、例示的なアセット移動プラットフォームを示す図である。
【図４】本開示の実装形態に従って実行され得る例示的なプロセスを示す図である。
【図５】本開示の実装形態に従って実行され得る例示的なプロセスを示す図である。
【発明を実施するための形態】
【００１２】
様々な図面における同様の参照番号は、同様の要素を示す。
【００１３】
本開示の実装形態は、ブロックチェーンネットワーク内でデジタルアセットを移動させるためのコンピュータ実装方法を含む。より詳細には、本開示の実装形態は、スマートアセットの原子分割および/または原子合併によるブロックチェーンネットワーク内のデジタルアセットの原子移動のためのプラットフォームに関する。いくつかの実装形態では、動作は、第1のノードの第1の識別子、第2のノードの第2の識別子、スマートアセットの識別子、および値を含む移動要求を受信するステップと、スマートアセットの識別子、および値に少なくとも部分的に基づいて、スマートアセットが移動可能であるかどうかを判定するステップと、スマートアセットが移動可能であるとの判定に応答して、自動的に、第1のスマートアセットおよび第2のスマートアセットを提供するステップであって、第1のスマートアセットは、第1の識別子、第1の値が割り当てられ、スマートアセットの特性を含み、第2のスマートアセットは、第2の識別子、値が割り当てられ、スマートアセットの特性を含む、提供するステップと、第1のスマートアセットを第1のノードに記録し、第2のスマートアセットを第2のノードに記録するステップと、スマートアセットを削除するステップとを含む。
【００１４】
本開示の実装形態に関してさらなる文脈を提供するために、上記で紹介したように、(たとえば、ピアツーピアノードで構成された)コンセンサスネットワークおよびブロックチェーンネットワークと呼ばれることもある分散元帳システム(DLS)は、参加エンティティが、取引をセキュアに不変に行い、データを記憶することを可能にする。ブロックチェーンという用語は、概して、ビットコイン暗号通貨ネットワークに関連するが、ブロックチェーンは、本明細書において、任意の特定の使用事例とは無関係にDLSを概して指すために使用される。上記で紹介したように、ブロックチェーンネットワークは、パブリックブロックチェーンネットワーク、プライベートブロックチェーンネットワーク、またはコンソーシアムブロックチェーンネットワークとして提供され得る。
【００１５】
パブリックブロックチェーンネットワークでは、コンセンサスプロセスはコンセンサスネットワークのノードによって制御される。たとえば、数百のエンティティ、数千のエンティティ、数百万のエンティティですら、パブリックブロックチェーンネットワークと協働することができ、エンティティは、各々、パブリックブロックチェーンネットワーク内の少なくとも1つのノードにおいて動作する。したがって、パブリックブロックチェーンネットワークは、参加エンティティに対してパブリックネットワークと見なされ得る。いくつかの例では、大部分のエンティティ(ノード)は、ブロックを有効化させ、ブロックチェーンネットワークのブロックチェーン(分散元帳)に追加させるために、すべてのブロックに署名しなければならない。1つの例示的なパブリックブロックチェーンネットワークは、ピアツーピア支払いネットワークであるビットコインネットワークを含む。ビットコインネットワークは、ブロックチェーンと呼ばれる分散元帳を活用する。上記のように、ブロックチェーンという用語は、しかしながら、概して、ビットコインネットワークとは特に無関係に分散元帳を指すために使用される。
【００１６】
概して、パブリックブロックチェーンネットワークは、公開取引をサポートする。公開取引は、パブリックブロックチェーンネットワーク内のノードのすべてと共有され、グローバルブロックチェーン内に記憶される。グローバルブロックチェーンは、すべてのノードにわたって複製されるブロックチェーンである。すなわち、すべてのノードは、グローバルブロックチェーンに関して完全コンセンサス状態である。コンセンサス(たとえば、ブロックチェーンに対してブロックを追加する合意)を達成するために、パブリックブロックチェーンネットワーク内でコンセンサスプロトコルが実装される。1つの例示的なコンセンサスプロトコルは、限定せずに、ビットコインネットワーク内で実装されるプルーフオブワーク(POW:proof-of-work)を含む。
【００１７】
概して、プライベートブロックチェーンネットワークは、読取り許可および書込み許可を中央で制御する特定のエンティティに提供される。エンティティは、どのノードがブロックチェーンネットワークに参加することが可能であるかを制御する。結果として、プライベートブロックチェーンネットワークは、概して、誰がネットワークに参加することが可能にされるか、およびそれらの参加レベル(たとえば、一定の取引のみ)に制限を設ける、許可されたネットワークを指す。様々なタイプのアクセス制御機構が使用され得る(たとえば、既存の参加者が新しいエンティティの追加について採決を行う、規制機関が承認を制御し得る)。
【００１８】
概して、コンソーシアムブロックチェーンネットワークは、参加エンティティ間でプライベートである。コンソーシアムブロックチェーンネットワークでは、コンセンサスプロセスは、許可されたノードのセットによって制御され、1つまたは複数のノードは、それぞれのエンティティ(たとえば、金融機関、保険会社)によって動作させられる。たとえば、10個のエンティティのコンソーシアム(たとえば、金融機関、保険会社)は、コンソーシアムブロックチェーンネットワークを動作させることができ、エンティティの各々は、コンソーシアムブロックチェーンネットワーク内で少なくとも1つのノードを動作させる。したがって、コンソーシアムブロックチェーンネットワークは、参加エンティティに対してプライベートネットワークと見なされ得る。いくつかの例では、各エンティティ(ノード)は、ブロックを有効化させ、ブロックチェーンに追加させるために、すべてのブロックに署名しなければならない。いくつかの例では、エンティティ(ノード)の少なくともサブセット(たとえば、少なくとも7個のエンティティ)は、ブロックを有効化させ、ブロックチェーンに追加させるために、すべてのブロックに署名しなければならない。
【００１９】
本開示の実装形態は、本明細書において、参加エンティティ(たとえば、コンソーシアムのメンバー)間でパブリックであるコンソーシアムブロックチェーンネットワークを参照してさらに詳細に説明される。しかしながら、本開示の実装形態は、任意の適したタイプのブロックチェーンネットワーク内で実現され得ることが企図される。本開示で説明する技法はコンソーシアムブロックチェーンネットワークに関連するとして指示されるが、これらの技法は、変更の有無にかかわらず、パブリックブロックチェーンネットワークおよびプライベートブロックチェーンネットワークを含めて、他のタイプのブロックチェーンネットワーク内で使用されてもよい。
【００２０】
ブロックチェーンネットワークは、デジタルアセットの移動および交換に関連する取引を行うために使用され得る。ブロックチェーンネットワーク内で交換されるデジタルアセットは、値を表す。たとえば、ビットコインなどの暗号通貨は、製品および/またはサービスを購入するために使用され得る値を表す。暗号通貨は、現実世界の物理通貨(たとえば、中国元、米国ドル)に対する代替として提供され得る。多くの事例において、デジタルアセットは、比較的単純であり、たとえば、デジタルアセットの一意の識別子および数値を含む。デジタルアセットの値を数値として表すことによって、デジタルアセットの部分またはすべての移動は比較的単純であるが、これは、アセットの値が無限に分割可能であり得るためである。加えて、両方とも数値を含む2つのデジタルアセットの合併は、デジタルアセットの値を加算して、最終的な合併値を判定することによって容易に達成される。
【００２１】
取引を行うためにブロックチェーンネットワークにますます依拠するようになると、基本的な数値のデジタルアセットは単純な値移動を可能にするが、複雑な現実世界のアセットを正確に表すことができるより複雑なデジタルアセットの必要が増大している。この必要性を満たすために、スマートアセットと呼ばれることがある、より複雑なデジタルアセットが導入されている。いくつかの例では、スマートアセットは現実世界のアセットのデジタル表現として提供される。本明細書で説明するように、スマートアセットはエンティティ同士の間で移動され得る。いくつかの例では、スマートアセットは、エンティティ(たとえば、人物、企業)によって保持または所有され得る任意の適切なタイプの現実世界のアセットに対応する。例示的な現実世界のアセットは、限定せずに、通貨基金、石油、燃料、食料などを含み得る。概して、スマートアセットは、たとえば、数量または単位を含む複数の特性を有する任意の現実世界のアセットを表し得る。
【００２２】
スマートアセットは、分散データベース(たとえば、コンソーシアムブロックチェーン)内で作成、記憶、および交換され得る。いくつかの例では、スマートアセットは、複数のフィールドを含むデータオブジェクトとして提供される。いくつかの例では、フィールドは、スマートアセットに割り当てられた一意の識別子、およびアセットに割り当てられたタイプ識別子を記録するために提供され得る。いくつかの例では、フィールドは、スマートアセットの特性(たとえば、数量、単位)を記録するために提供され得る。スマートアセットは、スマートアセットに対する一意の識別子を分散データベース内のスマートアセットオブジェクトのそれぞれのフィールドに追加することによって分散データベース内で作成され得る。いくつかの例では、一意の識別子は、スマートアセットに割り当てられたアドレス情報を含む。スマートアセットは、スマートアセットを表す、対応するスマートアセットオブジェクトのフィールド内に含まれたアドレス情報によって分散データベース内で識別される。
【００２３】
現実世界のアセットをスマートアセットとして表すことによって、エンティティは、ブロックチェーンネットワーク内で対応するスマートアセットを交換することによって、現実世界のアセットをデジタルで移動および交換することができる。たとえば、適切な権限/許可を有する、コンソーシアムブロックチェーンネットワークのメンバーは、現実世界のアセットに対応するスマートアセットを作成することができる。スマートアセットの作成の後で、メンバーは、コンソーシアムブロックチェーンネットワークの他のメンバーとスマートアセットに関連する取引を行うことができる。スマートアセットに関連する任意の取引のコンセンサス処理は、コンソーシアムブロックチェーンネットワークのコンセンサスアルゴリズムに基づいて実行され、完了された取引は、分散データベース(たとえば、コンソーシアムブロックチェーン)内に含まれる。
【００２４】
スマートアセットについては、その開示全体が参照により本明細書に明確に組み込まれている、2018年2月14日に出願した、同一出願人による中国出願第201810151607.8号においてより詳細に説明されている。
【００２５】
複数のフィールドを有するデジタルアセット(たとえば、スマートアセット)を移動させる現在の方法は、単一の移動を完了するために、いくつかの原子ステップが実行されることを必要とする。たとえば、現在の移動方法の下でスマートアセットの一部分を移動させることは、アセットの移動可能性を判定するために問合せを行うことと、アセットを区分化することと、区分化されたアセットをブロックチェーンネットワーク内の第1のノードからブロックチェーンネットワーク内の第2のノードに移動させることとを必要とする。加えて、ノードへのアセットの移動を完了するために、いくつかの問合せを行い、アセットがノードにすでに関連付けられた任意のアセットと合併され得るかどうかを判定しなければならない。アセットを移動させるために必要とされる原子ステップの各々は、連続的に処理されなければならない。結果として、現在の移動方法は、原子性を保証することができず、移動動作を原子化できないことは、結果として、移動されたアセットの断片化をもたらし得る。
【００２６】
上記の文脈に照らして、本明細書でさらに詳細に説明するように、本開示の実装形態は、スマートアセットの原子分割および/または原子合併によるブロックチェーンネットワーク内のデジタルアセットの原子移動のためのプラットフォームを提供する。
【００２７】
図1は、本開示の実装形態を実行するために使用され得る例示的な環境100を示す。いくつかの例では、例示的な環境100は、エンティティがコンソーシアムブロックチェーンネットワーク102に参加することを可能にする。例示的な環境100は、コンピューティングデバイス106、108と、ネットワーク110とを含む。いくつかの例では、ネットワーク110は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、インターネット、またはそれらの組合せを含み、ウェブサイト、ユーザデバイス(たとえば、コンピューティングデバイス)、およびバックエンドシステムを接続する。いくつかの例では、ネットワーク110は、ワイヤードおよび/またはワイヤレス通信リンクを介してアクセスされ得る。
【００２８】
示した例では、コンピューティングシステム106、108は、各々、コンソーシアムブロックチェーンネットワーク102内のノードとして参加を可能にする任意の適切なコンピューティングシステムを含み得る。例示的なコンピューティングデバイスは、限定せずに、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピューティングデバイス、およびスマートフォンを含む。いくつかの例では、コンピューティングシステム106、108は、コンソーシアムブロックチェーンネットワーク102と対話するための1つまたは複数のコンピュータ実装サービスをホストする。たとえば、コンピューティングシステム106は、第1のエンティティ(たとえば、ユーザA)が1つまたは複数の他のエンティティ(たとえば、他のユーザ)とのその取引を管理するために使用する取引管理システムなど、第1のエンティティのコンピュータ実装サービスをホストし得る。コンピューティングシステム108は、第2のエンティティ(たとえば、ユーザB)が1つまたは複数の他のエンティティ(たとえば、他のユーザ)とのその取引を管理するために使用する取引管理システムなど、第2のエンティティのコンピュータ実装サービスをホストし得る。図1の例では、コンソーシアムブロックチェーンネットワーク102は、ノードのピアツーピアネットワークとして表され、コンピューティングシステム106、108は、コンソーシアムブロックチェーンネットワーク102に参加する第1のエンティティおよび第2のエンティティのノードをそれぞれ提供する。
【００２９】
図2は、本開示の実装形態による、例示的な概念アーキテクチャ200を示す。例示的な概念アーキテクチャ200は、エンティティレイヤ202と、ホストサービスレイヤ204と、ブロックチェーンネットワークレイヤ206とを含む。示した例では、エンティティレイヤ202は3つのエンティティ、Entity_1(E1)、Entity_2(E2)、およびEntity_3(E3)を含み、各エンティティは、それぞれの取引管理システム208を有する。
【００３０】
示した例では、ホストサービスレイヤ204は、各取引管理システム208に対するインターフェース210を含む。いくつかの例では、それぞれの取引管理システム208は、プロトコル(たとえば、ハイパーテキストトランスファープロトコルセキュア(HTTPS))を使用してネットワーク(たとえば、図1のネットワーク110)を介してそれぞれのインターフェース210と通信する。いくつかの例では、各インターフェース210は、それぞれの取引管理システム208とブロックチェーンネットワークレイヤ206との間の通信接続を提供する。より詳細には、インターフェース210は、ブロックチェーンネットワークレイヤ206のブロックチェーンネットワーク212と通信する。いくつかの例では、インターフェース210とブロックチェーンネットワークレイヤ206との間の通信はリモートプロシージャコール(RPC:remote procedure calls)を使用して行われる。いくつかの例では、インターフェース210は、それぞれの取引管理システム208に対してブロックチェーンネットワークノードを「ホストする」。たとえば、インターフェース210は、ブロックチェーンネットワーク212にアクセスするためのアプリケーションプログラミングインターフェース(API)を提供する。
【００３１】
本明細書で説明するように、ブロックチェーンネットワーク212は、ブロックチェーン216内に情報を不変に記録する複数のノード214を含むピアツーピアネットワークとして提供される。単一のブロックチェーン216が概略的に示されているが、ブロックチェーン216の複数のコピーが提供され、ブロックチェーンネットワーク212にわたって維持される。たとえば、各ノード214は、ブロックチェーンのコピーを記憶する。いくつかの実装形態では、ブロックチェーン216は、コンソーシアムブロックチェーンネットワークに参加する2つ以上のエンティティ同士の間で実行される取引に関連する情報を記憶する。
【００３２】
図3は、本開示の実装形態による、例示的なアセット移動プラットフォーム300を示す。示した例では、例示的なアセット移動プラットフォーム300は、移動モジュール302と合併モジュール308とを含む。本明細書でさらに詳細に説明するように、スマートアセットのすべてまたは一部分は、移動モジュール302を使用して、ブロックチェーンネットワーク(たとえば、図1のコンソーシアムブロックチェーンネットワーク102)の第1のノード(たとえば、図2のノード214)からブロックチェーンネットワークの第2のノードに原子的に移動され得る。やはり本明細書で詳細に説明するように、スマートアセットは、合併モジュール308を使用して、ブロックチェーンネットワークのノード上に記憶された別のスマートアセットと原子的に合併され得る。
【００３３】
本開示の実装形態によれば、移動モジュール302は、ブロックチェーンネットワークのメンバーから移動要求を受信する。いくつかの例では、移動要求は、コンソーシアムブロックチェーンネットワークのメンバーによって移動モジュール302に提出される。いくつかの実装形態では、移動要求は、ブロックチェーンネットワーク内の第1のノード(たとえば、送る側ノード)の第1の識別子、ブロックチェーンネットワーク内の第2のノード(たとえば、受信側ノード)の第2の識別子、スマートアセットの識別子、および値を含む。いくつかの実装形態では、移動モジュール302は、識別されたアセットからの移動要求内で指定された値を第1のノードから第2のノードに移動させるための単一の原子動作を実行する。
【００３４】
いくつかの実装形態では、移動要求内で識別されるスマートアセットは、複数のフィールドを含むデータオブジェクトとして提供される。いくつかの例では、スマートアセットのフィールドは、アセットの特性(たとえば、タイプ、数量、値)を記録するために提供され得る。いくつかの例では、スマートアセットオブジェクトのフィールドは、アセットに割り当てられた識別子、およびアセットに割り当てられたタイプ識別子を記録するために提供され得る。いくつかの実装形態では、スマートアセットの識別子は、スマートアセットに割り当てられたアドレス情報(たとえば、ブロックチェーンネットワーク内のスマートアセットのロケーションを指定するアドレス)を含む。
【００３５】
移動要求内で提供される値は、第1のノードから第2のノードに移動されることになるスマートアセットの数量(量)を表す。いくつかの例では、この値は数値として提供される。たとえば、この値は、現実世界のアセットの数量(たとえば、数ガロンの燃料)として提供され得る。いくつかの例では、この値は文字列記述として提供される。たとえば、この値は、「20バレルの石油」または「1000エーカーの土地」として提供されることになる。いくつかの例では、この値はJavascript(登録商標)オブジェクト表記法(JSON)文字列記述として提供される。
【００３６】
例示的な図3では、移動モジュール302は、canTransfer機能304とTryTransfer機能306とを含む。いくつかの例では、移動モジュール302によって受信された移動要求は、移動要求内に含まれた情報を使用して、canTransfer機能304およびTryTransfer 306機能を実行することによって処理される。いくつかの例では、canTransfer機能304およびTryTransfer機能306は、移動要求内で識別されたスマートアセットに関連するコンピュータ実行可能スマートコントラクト内で提供される。ハイレベルで、スマートコントラクトは、コンソーシアムブロックチェーンネットワーク内で実装および展開されるコントラクトとして説明することができ、スマートアセットに関する機能および/またはデータ(たとえば、コンピュータ実行可能な機能)を含む。
【００３７】
いくつかの実装形態では、canTransfer機能304は、スマートアセットの値が移動要求内で指定された値未満であるかどうかを判定する。いくつかの実装形態では、canTransfer機能304は、スマートアセットの識別子によって提供されたアドレスに位置するスマートアセットの値フィールド内に記憶された値を検索することによって、スマートアセットの値を判定する。
【００３８】
いくつかの実装形態では、canTransfer機能304は、スマートアセットのタイプ識別子を判定する。いくつかの実装形態では、canTransfer機能304は、スマートアセットの識別子によって提供されたアドレスに位置するスマートアセットのタイプフィールド内に記憶されたタイプ識別子を検索することによって、アセットのタイプ識別子を判定する。いくつかの例では、canTransfer機能304は、スマートアセットのタイプ識別子の判定に少なくとも部分的に基づいて、スマートアセットが移動可能であるかどうかを判定する。たとえば、スマートアセットによって表される現実世界のアセット(椅子)は、整数単位に分割する場合を除いて、移動のために物理的に分割することができない(たとえば、1.5脚の椅子を移動することはできない)ため、canTransfer機能304は、タイプ識別子「椅子」を有するスマートアセットは、整数単位である場合を除き、移動され得ないと判定することができる。別の例として、スマートアセットによって表される現実世界のアセット(燃料)は、分数単位での移動のために物理的に分割することができる(たとえば、1.5ガロンの燃料を移動することはできる)ため、canTransfer機能304は、タイプ識別子「燃料」を有するスマートアセットは、要求された単位で移動され得ると判定することができる。
【００３９】
いくつかの実装形態では、スマートアセットの値が移動要求内で提供される値未満である場合、またはスマートアセットのタイプ識別子が、スマートアセットが値によって分割可能でないことを指示する場合、canTransfer機能304は、「偽」を返却し、取引は終了する。いくつかの実装形態では、スマートアセットの値が移動要求内で提供される値以上であり、スマートアセットのタイプ識別子が、スマートアセットは値によって分割可能であることを指示する場合、canTransfer機能304は、「真」を返却する。
【００４０】
いくつかの実装形態では、TryTransfer機能306は、canTransfer機能304による移動要求に対する「真」の返却に応答して自動的に実行される。いくつかの実装形態では、TryTransfer機能306は、第1のスマートアセットおよび第2のスマートアセットを生成する。いくつかの例では、TryTransfer機能306によって生成されたスマートアセットの各々は、複数のフィールド、すなわち、スマートアセットと同じフィールドを含むデータオブジェクトとして提供される。いくつかの例では、TryTransfer機能306によって生成されたスマートアセットは移動要求内で識別されたスマートアセットと同じ特性を含む。たとえば、TryTransfer機能306によって生成された第1および第2のスマートアセットは、移動要求内で識別されたスマートアセットと同じタイプ識別子を含み得る。
【００４１】
いくつかの実装形態では、TryTransfer機能306は、第1の識別子および第1の値を第1のスマートアセットに割り当てる。いくつかの例では、第1の値は、移動要求内で識別されたスマートアセットの元の値から移動要求内で指定された値を減算した残りである。いくつかの実装形態では、TryTransfer機能306は、第2の識別子および移動要求内で指定された値を第2のスマートアセットに割り当てる。いくつかの例では、第1の識別子および第2の識別子は、各々、一意の識別子である。いくつかの例では、第1の識別子および第2の識別子は、それぞれ、第1のスマートアセットおよび第2のスマートアセットに割り当てられたアドレス情報を含む。いくつかの例では、第1の識別子および第1の値は、第1のスマートアセットの基礎となるデータオブジェクト内のフィールドとして記憶される。いくつかの例では、第2の識別子および値は、第2のスマートアセットの基礎となるデータオブジェクト内のフィールドとして記憶される。いくつかの例では、第1のスマートアセットおよび第2のスマートアセットは、スマートアセットのサブセットと見なされ得る。
【００４２】
いくつかの実装形態では、TryTransfer機能306によって生成された第1のスマートアセットは、コンソーシアムブロックチェーンネットワークの第1のノードに自動的に記録される。いくつかの実装形態では、TryTransfer機能306によって生成された第2のスマートアセットは、コンソーシアムブロックチェーンネットワークの第2のノードに自動的に記録される。いくつかの実装形態では、TryTransfer機能306は、コンソーシアムブロックチェーンネットワーク内での第1のスマートアセットおよび第2のスマートアセットの記録が成功した時に、移動要求内で識別されたスマートアセット(たとえば、そこから第1および第2のスマートアセットが生成されたスマートアセット)を自動的に削除する。
【００４３】
非限定的な例示的入力は(たとえば、(userAAddress, userBAddress, assetAddress, amount)として提供され得る:
TryTransfer("23d61f4a88","90be1290c0eeab3","4992e1a2e8f6d", 100);
TryTransfer("23d61f4a88","90be1290c0eeab3","4992e1a2e8f6d", {"amount":100, "type":"RMB"});
【００４４】
移動論理を実行するための例示的な疑似コードは、以下として提供され得る:
If (canTransfer(asset, amount)) {
[splitAssetA, splitAssetB] = Split(asset, amount);
Transfer(userA, userB, splitAssetA);
return true;
} else {
return false;
}
【００４５】
canTransfer機能304に対する例示的な疑似コードは、以下として提供され得る:
def canTransfer(self, asset, amount):
if asset.value >= amount and asset.isTransferable:
return True
else
return False
【００４６】
本明細書でさらに詳細に説明するように、合併モジュール308は、合併要求内で識別された第1のスマートアセットをブロックチェーンネットワークのノードに関連する第2のスマートアセットと合併するために単一の原子動作を実行する。本開示の実装形態によれば、合併モジュール308は、合併要求を受信する。いくつかの実装形態では、合併モジュール308は、移動モジュール302のTryTransfer機能306の実行が成功した時に、合併要求を自動的に受信する。いくつかの実装形態では、合併モジュール308は、スマートアセットがコンソーシアムブロックチェーンネットワーク(たとえば、図1のコンソーシアムブロックチェーンネットワーク102)のノード(たとえば、図2のノード214)に記録されるとき、合併要求を自動的に受信する。
【００４７】
いくつかの実装形態では、合併モジュール308によって受信された合併要求は、第1のノードの第1の識別子と、第2のノードの第2の識別子と、第1のスマートアセットの識別子とを含む。いくつかの例では、第1のスマートアセットは、複数のフィールドを含む基礎となるデータオブジェクトを含む。いくつかの例では、第1のスマートアセットのフィールドは、第1のスマートアセットに割り当てられた一意の識別子、および第1のスマートアセットに割り当てられたタイプ識別子を記録するために提供され得る。いくつかの例では、スマートアセットのフィールドは、第1のスマートアセットの特性(たとえば、数量、値)を記録するために提供され得る。いくつかの実装形態では、第1のスマートアセットの識別子は、第1のスマートアセットに割り当てられたアドレス情報を含む。いくつかの実装形態では、第1のスマートアセットは第1のノードに関連する。
【００４８】
例示的な図3では、合併モジュール308は、canMerge機能310とAutoMerge機能312とを含む。いくつかの例では、合併モジュール308によって受信された合併要求は、合併要求内に含まれた情報を使用して、canMerge機能310およびAutoMerge機能312を実行することによって処理される。いくつかの例では、canMerge機能310およびAutoMerge機能312は、合併要求内で識別された第1のスマートアセットに関連するコンピュータ実行可能スマートコントラクトによって提供される。
【００４９】
いくつかの実装形態では、canMerge機能310は、合併要求内で提供された第1のスマートアセットが合併要求内で識別された第2のノードに関連する第2のスマートアセットと合併され得るかどうかを判定する。いくつかの例では、canMerge機能310は、第2のノードに関連する第2のスマートアセットが第1のスマートアセットのタイプ識別子と同じタイプ識別子を含むかどうかを判定することによって、第1のスマートアセットが第2のノードに関連する第2のスマートアセットと合併され得るかどうかを判定する。いくつかの例では、canMerge機能310は、それぞれ、第1のスマートアセットの識別子および第2のスマートアセットの識別子に基づいて、第1のスマートアセットおよび第2のスマートアセットのタイプ識別子を判定する。いくつかの実装形態では、canMerge機能310は、第2のスマートアセットが第1のスマートアセットと同じタイプ識別子を有するとき、第1のスマートアセットが第2のスマートアセットと合併可能であると判定する。
【００５０】
いくつかの実装形態では、canMerge機能310は、第1のスマートアセットが第2のノードに関連する第2のスマートアセットと合併可能でないとの判定に応答して、「偽」を返却する。いくつかの例では、canMerge機能310が合併要求に対して「偽」を返却する場合、合併要求内で識別された第1のスマートアセットは、第2のノード上に自動的に記録され、第1のノードから削除される。いくつかの実装形態では、canMerge機能310が「偽」を返却するとすぐに、第1のスマートアセットには、第2の識別子および第2の値が割り当てられる。いくつかの例では、第2の値は、第1のスマートアセットの元の値に等しい。いくつかの例では、第2の識別子は一意の識別子である。いくつかの例では、第2の識別子は、第2のノード上に記録された第1のスマートアセットに割り当てられたアドレス情報を含む。いくつかの例では、第2の識別子および第2の値は、第1のスマートアセットの基礎となるデータオブジェクト内のフィールドとして記憶される。
【００５１】
いくつかの実装形態では、canMerge機能310は、第1のスマートアセットが第2のノードに関連する第2のスマートアセットと合併可能であるとの判定に応答して、「真」を返却する。いくつかの実装形態では、canMerge機能310が「真」を返却するとすぐに、合併要求は、AutoMerge機能312によって自動的に処理される。
【００５２】
本開示の実装形態によれば、AutoMerge機能312は、第2のスマートアセットを自動的に更新し、更新された第2のスマートアセットを第2のノードに記録し、第1のスマートアセットを第1のノードから削除する。いくつかの実装形態では、AutoMerge機能312は、第1のスマートアセットの特性および値を含めるように、第2のスマートアセットを更新する。
【００５３】
いくつかの例では、AutoMerge機能312によって更新された第2のスマートアセットに割り当てられた値は、数値として提供される。いくつかの例では、この値は文字列記述として提供される。いくつかの例では、この値はJavascript(登録商標)オブジェクト表記法(JSON)文字列記述として提供される。いくつかの例では、AutoMerge機能312によって更新された第2のスマートアセットに割り当てられた値は、第1のスマートアセットの元の値および第2のスマートアセットの元の値の和に等しい。いくつかの例では、AutoMerge機能312は、それぞれ、第1のスマートアセットおよび第2のスマートアセットの基礎となるデータオブジェクトの値フィールド内に記憶された値に基づいて、第1のスマートアセットの元の値および第2のスマートアセットの元の値を判定する。
【００５４】
移動論理を実行するための例示的な疑似コードは、以下として提供され得る:
Transfer(userA, userB, assetTransfered);
for (Asset asset:userB.getAllAssetsByAssetContract(asset.
getAssetContractAddress()) {
if (canMerge(asset, assetTransfered)) {
Merge(userB, asset, assetTransfered);
break;
}
}
【００５５】
canMerge機能310に対する例示的な疑似コードは、以下として提供され得る:
def canMerge(self, assetA, assetB):
if assetA.startDate == assetB.startDate and
assetA.endDate == assetB.endDate:
return True;
else
return False;
【００５６】
canMerge機能310に対する別の例示的な疑似コードは、以下として提供され得る:
def canMerge(self, assetA, assetB):
if assetA.startDate == assetB.startDate and
assetA.endDate == assetB.endDate and
assetA.propertyX == assetB.propertyX:
return True;
else
return False;
【００５７】
canMerge機能310に対するさらに別の例示的な疑似コードは、以下として提供され得る:
def canMerge(self, assetA, assetB):
if assetA.propertyX == assetB.propertyX:
return True;
else
return False;
【００５８】
図4は、本開示の実装形態に従って実行され得る例示的なプロセス400を示す。いくつかの実装形態では、例示的なプロセス400は、1つまたは複数のコンピューティングデバイスを使用して実行される1つまたは複数のコンピュータ実行可能プログラムを使用して実行され得る。たとえば、例示的なプロセス400は、ブロックチェーンネットワーク内で実行され得る。
【００５９】
移動要求を受信する(402)。たとえば、コンソーシアムブロックチェーンネットワーク内でノード同士の間でスマートアセットを移動させるための要求は、コンソーシアムブロックチェーンネットワークのメンバーから受信され得る。いくつかの例では、要求は、ブロックチェーンネットワークの第1のノード(たとえば、送る側ノード)の第1の識別子とブロックチェーンネットワークの第2のノード(たとえば、受信側ノード)の第2の識別子、スマートアセットの識別子、および値を含む。いくつかの実装形態では、スマートアセットは、複数のフィールドを含むデータオブジェクトとして提供される。いくつかの例では、この値は数値である。いくつかの例では、この値は文字列記述である。いくつかの例では、この値はJavascript(登録商標)オブジェクト表記法(JSON)として提供され得る。
【００６０】
canTransfer機能を実行する(404)。canTransfer機能は、移動要求内の情報を処理して、スマートアセットが移動可能であるかどうかを判定する。いくつかの例では、canTransfer機能は、スマートアセットの識別子に少なくとも部分的に基づいて、スマートアセットが移動可能であるかどうかを判定する。いくつかの例では、canTransfer機能は、スマートアセットのタイプ識別子に少なくとも部分的に基づいて、スマートアセットが移動可能であるかどうかを判定する。いくつかの例では、canTransfer機能は、スマートアセットの値が移動要求内で提供される値未満であるかどうかの判定に少なくとも部分的に基づいて、スマートアセットが移動可能であるかどうかを判定する。いくつかの例では、canTransfer機能は、スマートアセットに関連するコンピュータ実行可能スマートコントラクトによって提供される。
【００６１】
スマートアセットの移動能力を判定する(406)。スマートアセットが移動不可能であると判定された場合、アセットが移動可能でないという指示を提供する(408)。いくつかの例では、スマートアセットが移動不可能であると判定された場合、canTransfer機能は「偽」を返却する。いくつかの例では、スマートアセットが移動不可能であると判定された場合、取引は終了する。
【００６２】
スマートアセットが移動可能であると判定された場合、第1のスマートアセットおよび第2のスマートアセットを生成する(410)。いくつかの例では、第1のスマートアセットおよび第2のスマートアセットは、各々、複数のフィールドを含むデータオブジェクトとして提供される。いくつかの例では、第1のスマートアセットおよび第2のスマートアセットは、移動要求内で識別されたスマートアセットと同じ特性を含む。たとえば、第1のスマートアセットおよび第2のスマートアセットは、各々、移動要求内で識別されたスマートアセットと同じタイプ識別子を含み得る。
【００６３】
いくつかの実装形態では、第1のスマートアセットには、第1の識別子および第1の値が割り当てられる。いくつかの例では、第1の値は、移動要求内で識別されたスマートアセットの元の値から移動要求内で識別された値を減算した残りである。いくつかの実装形態では、第2のスマートアセットには、第2の識別子および移動要求内で識別された値が割り当てられる。いくつかの例では、第1の識別子および第2の識別子は、それぞれ、第1のスマートアセットおよび第2のスマートアセットに関するアドレス情報を含む。
【００６４】
第1のスマートアセットをブロックチェーンネットワークの第1のノードに記録する(412)。第2のスマートアセットをブロックチェーンネットワークの第2のノードに記録する(414)。
【００６５】
移動要求内で識別されたスマートアセット(たとえば、そこから第1および第2のスマートアセットが生成されたスマートアセット)を削除する(416)。いくつかの例では、コンソーシアムブロックチェーンネットワーク内での第1のスマートアセットおよび第2のスマートアセットの記録が成功した時に、スマートアセットは自動的に削除される。
【００６６】
図5は、本開示の実装形態に従って実行され得る例示的なプロセス500を示す。いくつかの実装形態では、例示的なプロセス500は、1つまたは複数のコンピューティングデバイスを使用して実行される1つまたは複数のコンピュータ実行可能プログラムを使用して実行され得る。たとえば、例示的なプロセス500は、ブロックチェーンネットワーク内で実行され得る。
【００６７】
合併要求を受信する(502)。たとえば、合併要求は、スマートアセットがコンソーシアムブロックチェーンネットワークのノードに記録されているときに受信され得る。いくつかの例では、要求は、第1のノードの第1の識別子と、第2のノードの第2の識別子と、第1のスマートアセットの識別子とを含む。いくつかの例では、第1のスマートアセットは第1のノードに関連する。いくつかの例では、第1のスマートアセットは、複数のフィールドを含む基礎となるデータオブジェクトを含む。
【００６８】
canMerge機能を実行する(504)。canMerge機能は、合併要求内の情報を処理して、第1のスマートアセットが合併要求内で識別された第2のノードに関連する第2のスマートアセットと合併可能であるかどうかを判定する。いくつかの実装形態は、canMerge機能は、第1のスマートアセットの識別子および第2のスマートアセットの識別子に少なくとも部分的に基づいて、第1のスマートアセットが第2のスマートアセットと合併可能であるかどうかを判定する。いくつかの例では、canMerge機能は、第1のスマートアセットのタイプ識別子および第2のスマートアセットのタイプ識別子に少なくとも部分的に基づいて、第1のスマートアセットが第2のスマートアセットと合併可能あるかどうかを判定する。いくつかの例では、第2のスマートアセットは、複数のフィールドを含む基礎となるデータオブジェクトを含む。
【００６９】
第1のスマートアセットが第2のノードに関連する第2のスマートアセットと合併される能力を判定する(506)。いくつかの例では、第1のスマートアセットのタイプ識別子が第2のスマートアセットのタイプ識別子と整合する場合、第1のスマートアセットは第2のスマートアセットと合併可能であると判定される。
【００７０】
第1のスマートアセットが第2のノードに関連する第2のスマートアセットと合併可能でないと判定された場合、第1のスマートアセットを第2のノードに自動的に記録し(508)、第1のノードから削除する(510)。いくつかの例では、第1のスマートアセットには、第2の識別子および第2の値が割り当てられる。いくつかの例では、第2の値は、第1のスマートアセットの元の値に等しい。いくつかの例では、第2の値は数値として提供される。いくつかの例では、第2の値は文字列記述である。たとえば、第2の値はJavascript(登録商標)オブジェクト表記法(JSON)として提供され得る。いくつかの例では、第2の識別子は、第1のスマートアセットに関するアドレス情報を含む。
【００７１】
第1のスマートアセットが第2のノードに関連する第2のスマートアセットと合併可能であると判定された場合、第2のスマートアセットを自動的に更新する(512)。いくつかの例では、第2のスマートアセットは、第1のスマートアセットの特性および値を含めるように更新される。いくつかの例では、値は、第1のスマートアセットの元の値および第2のスマートアセットの元の値の和に等しい。いくつかの例では、この値は数値として提供される。いくつかの例では、この値は文字列記述である。いくつかの例では、この値はJavascript(登録商標)オブジェクト表記法(JSON)として提供され得る。
【００７２】
いくつかの実装形態では、更新された第2のスマートアセットを第2のノード上に自動的に記録する(514)。第1のスマートアセットを削除する(516)。いくつかの例では、更新された第2のスマートアセットの第2のノードへの記録が成功した時に、第1のスマートアセットは自動的に削除される。
【００７３】
説明した特徴は、デジタル電子回路の形で、またはコンピュータハードウェア、ファームウェア、ソフトウェアの形で、またはそれらの組合せの形で実装され得る。この装置は、プログラマブルプロセッサによって実行するために情報担体内で(たとえば、機械可読記憶デバイス内で)有形に実施されるコンピュータプログラム製品の形で実装され得、方法ステップは、入力データを操作し、出力を生成することによって、説明した実装形態の機能を実行するための命令のプログラムを実行するプログラマブルプロセッサによって実行され得る。説明した特徴は、データ記憶システムからデータおよび命令を受信し、データ記憶システムにデータおよび命令を送信するために結合された、少なくとも1つのプログラマブルプロセッサと、少なくとも1つの入力デバイスと、少なくとも1つの出力デバイスとを含む、プログラマブルシステム上で実行可能な1つまたは複数のコンピュータプログラム内で有利に実装され得る。コンピュータプログラムは、一定の動作を実行するため、または一定の結果をもたらすためにコンピュータ内で直接的または間接的に使用され得る命令のセットである。コンピュータプログラムは、コンパイル型言語またはインタープリタ型言語を含めて、任意の形態のプログラミング言語で書き込まれてよく、コンピュータプログラムは、スタンドアロン型プログラムとして、またはモジュール、構成要素、サブルーチン、またはコンピューティング環境で使用するのに適した他のユニットを含めて、任意の形態で展開され得る。
【００７４】
命令のプログラムを実行するのに適したプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方、および任意の種類のコンピュータの唯一のプロセッサまたは複数のプロセッサのうちの1つを含む。概して、プロセッサは、読取り専用メモリもしくはランダムアクセスメモリまたは両方から命令およびデータを受信することになる。コンピュータの要素は、命令を実行するためのプロセッサと、命令およびデータを記憶するための1つまたは複数のメモリとを含み得る。概して、コンピュータは、データファイルを記憶するための1つまたは複数の大容量記憶デバイスを含んでもよいか、あるいはそれと通信するように動作可能に結合されてもよく、そのようなデバイスは、内部ハードディスクおよびリムーバブルディスクなどの磁気ディスク、磁気光学ディスク、および光ディスクを含む。コンピュータプログラム命令およびデータを有形に実施するのに適した記憶デバイスは、例として、EPROM、EEPROM、およびフラッシュメモリデバイスなどの半導体メモリデバイス、内部ハードディスクおよびリムーバブルディスクなどの磁気ディスク、磁気光学ディスク、およびCD-ROMディスクおよびDVD-ROMディスクを含めて、すべての形態の非揮発性メモリを含む。プロセッサおよびメモリは、特定用途向け集積回路(ASIC)によって補完され得るか、またはその中に組み込まれ得る。
【００７５】
ユーザとの対話を提供するために、これらの特徴は、情報をユーザに表示するための、陰極線管(CRT)モニタまたは液晶ディスプレイ(LCD)モニタなどのディスプレイデバイスと、キーボードと、それによりユーザがコンピュータに入力を提供することができる、マウスまたはトラックボールなどのポインティングデバイスとを有するコンピュータ上で実装され得る。
【００７６】
これらの特徴は、データサーバなどのバックエンド構成要素を含むか、もしくはアプリケーションサーバまたはインターネットサーバなどのミドルウェア構成要素を含むか、またはグラフィカルユーザインターフェースまたはインターネットブラウザを有するクライアントコンピュータなどのフロントエンド構成要素を含むか、あるいはそれらの任意の組合せを含む、コンピュータシステム内で実装され得る。このシステムの構成要素は、通信ネットワークなど、任意の形態または媒体のデジタルデータ通信によって相互接続され得る。通信ネットワークの例は、たとえば、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、ならびにコンピュータおよびインターネット形成するネットワークを含む。
【００７７】
コンピュータシステムは、クライアントとサーバとを含み得る。クライアントおよびサーバは、概して、互いから離れており、一般に、説明したネットワークなど、ネットワークを介して対話する。クライアントおよびサーバの関係は、それぞれのコンピュータ上で実行し、互いに対してクライアント-サーバ関係を有するコンピュータプログラムにより生じる。
【００７８】
加えて、図に示した論理フローは、所望の結果を達成するために、示した特定の順序、または連続的順序を必要としない。加えて、他のステップを提供することができ、または説明したフローからステップをなくすことができ、説明したシステムに他の構成要素を追加すること、または説明したシステムから他の要素を除去することができる。したがって、他の実装形態が以下の特許請求の範囲内に入る。
【００７９】
本開示のいくつかの実装形態について説明してきた。それでもなお、本開示の趣旨および範囲から逸脱せずに、様々な修正を行うことが可能であることを理解されよう。したがって、他の実装形態が以下の特許請求の範囲内に入る。
【符号の説明】
【００８０】
100  環境
102  コンソーシアムブロックチェーンネットワーク
106  コンピューティングデバイス、コンピューティングシステム
108  コンピューティングデバイス、コンピューティングシステム
110  ネットワーク
200  概念アーキテクチャ
202  エンティティレイヤ
204  ホストサービスレイヤ
206  ブロックチェーンネットワークレイヤ
208  取引管理システム
210  インターフェース
212  ブロックチェーンネットワーク
214  ノード
216  ブロックチェーン
300  アセット移動プラットフォーム
302  移動モジュール
304  canTransfer機能
306  TryTransfer機能
308  合併モジュール
310  canMerge機能
312  AutoMerge機能
400  プロセス
500  プロセス
【図１】
0006804715.tif 000002
【図２】
0006804715.tif 000003
【図３】
0006804715.tif 000004
【図４】
0006804715.tif 000005
【図５】
0006804715.tif 000006