(57)【特許請求の範囲】
【請求項１】
ブロックチェーンにトランザクション・データを書き込むための方法であって、
前記ブロックチェーンに書き込まれるべき複数のトランザクション・データを獲得すること、
動作Ｉあるいは動作ＩＩを実行することによって、前記トランザクション・データのトランザクション・タイプおよびデータ変更範囲により、前記トランザクション・データが属するトランザクション・サブセットを判定することであって、異なるトランザクション・サブセットに属するトランザクション・データの間にトランザクション依存関係は存在しないこと、および
前記トランザクション・サブセットを並行に実行し、かつ前記ブロックチェーンに実行結果を書き込むことを備え、
前記動作Ｉは、
前記トランザクション・データの前記トランザクション・タイプにより、前記トランザクション・データが属するレベルＩサブセットを判定すること、および
前記トランザクション・データの前記データ変更範囲により、前記レベルＩサブセットの中の前記トランザクション・データが属するレベルＩＩサブセットを判定し、かつ前記レベルＩＩサブセットを前記トランザクション・サブセットのうちの１つとして使用することであって、前記レベルＩＩサブセットは、前記レベルＩサブセットのサブセットであることを備え、
前記動作Ｉは、
前記トランザクション・データの前記トランザクション・タイプにより、前記トランザクション・データが属するレベルＩサブセットを判定した後に、前記トランザクション・データと同一のトランザクション・タイプのトランザクション・データを同一のレベルＩサブセットに入れ、かつ異なるトランザクション・タイプのトランザクション・データを異なるレベルＩサブセットに分割すること、および
前記トランザクション・データの前記データ変更範囲により、前記レベルＩサブセットの中の前記トランザクション・データが属するレベルＩＩサブセットを判定した後に、重なり合うデータ変更範囲を有するトランザクション・データを同一のレベルＩＩサブセットに入れ、かつ重なり合わないデータ変更範囲を有するトランザクション・データを異なるレベルＩＩサブセットに分割することを更に備え、
重なり合うデータ変更範囲を有するトランザクション・データを同一のレベルＩＩサブセットに入れることは、
第１のトランザクション・データの前記データ変更範囲が第１のレベルＩＩサブセットの前記データ変更範囲と重なり合う場合、前記第１のトランザクション・データを前記第１のレベルＩＩサブセットに加えることを備え、
重なり合わないデータ変更範囲を有するトランザクション・データを異なるレベルＩＩサブセットに分割することは、
前記第１のトランザクション・データの前記データ変更範囲が前記第１のレベルＩＩサブセットの前記データ変更範囲と重なり合わない場合、前記第１のトランザクション・データを備える第２のレベルＩＩサブセットを作成することを備え、
前記第１のレベルＩサブセットは、前記レベルＩサブセットのうちのいずれかのレベルＩサブセットであり、前記第１のトランザクション・データは、前記第１のレベルＩサブセットの中の前記トランザクション・データのうちのいずれかのトランザクション・データであり、前記第１のレベルＩＩサブセットは、前記第１のレベルＩサブセットのうちのいずれかのレベルＩＩサブセットであり、かつ前記第２のレベルＩＩサブセットは、前記第１のレベルＩＩサブセットとは異なり、
前記動作ＩＩは、
前記トランザクション・データの前記データ変更範囲により、前記トランザクション・データが属するレベルＩサブセットを判定すること、
前記トランザクション・データの前記トランザクション・タイプにより、前記レベルＩサブセットの中の前記トランザクション・データが属するレベルＩＩサブセットを判定し、かつ前記レベルＩＩサブセットを前記トランザクション・サブセットのうちの１つとして使用することであって、前記レベルＩＩサブセットは、前記レベルＩサブセットのサブセットであること、
前記トランザクション・データの前記データ変更範囲により、前記トランザクション・データが属するレベルＩサブセットを判定した後に、重なり合うデータ変更範囲を有するトランザクション・データを同一のレベルＩサブセットに入れ、かつ重なり合わないデータ変更範囲を有するトランザクション・データを異なるレベルＩサブセットに分割すること、および
前記トランザクション・データの前記トランザクション・タイプにより、前記レベルＩサブセットの中の前記トランザクション・データが属するレベルＩＩサブセットを判定した後に、同一のトランザクション・タイプのトランザクション・データを同一のレベルＩＩサブセットに入れ、かつ異なるトランザクション・タイプのトランザクション・データを異なるレベルＩＩサブセットに分割することを備え、
重なり合うデータ変更範囲を有するトランザクション・データを同一のレベルＩサブセットに入れることは、
第２のトランザクション・データの前記データ変更範囲が第２のレベルＩサブセットの前記データ変更範囲と重なり合う場合、前記第２のトランザクション・データを前記第２のレベルＩサブセットに加えることを備え、
重なり合わないデータ変更範囲を有するトランザクション・データを異なるレベルＩサブセットに分割することは、
前記第２のトランザクション・データの前記データ変更範囲が前記第２のレベルＩサブセットの前記データ変更範囲と重なり合わない場合、前記第２のトランザクション・データを備える第３のレベルＩサブセットを作成することを備え、
前記第２のトランザクション・データは、前記トランザクション・データのうちのいずれかのトランザクション・データであり、前記第２のレベルＩサブセットは、前記レベルＩサブセットのうちのいずれかのレベルＩサブセットであり、かつ前記第３のレベルＩサブセットは、前記第２のレベルＩサブセットとは異なる、方法。
【請求項２】
動作Ｉあるいは動作ＩＩを実行することによって、前記トランザクション・データのトランザクション・タイプおよびデータ変更範囲により、前記トランザクション・データが属するトランザクション・サブセットを判定することは、
前記トランザクション・データのデータ属性により、前記トランザクション・データが属する前記トランザクション・サブセットを判定することであって、データ属性は、前記トランザクション・データのトランザクション・タイプおよび／またはデータ変更範囲と対応関係を有し、かつ前記データ属性は、前記トランザクション・データのトランザクション依存関係を反映させるために使用されることを備える、請求項１に記載の方法。
【請求項３】
前記トランザクション・サブセットを並行に実行することは、
マルチスレッディングまたはマシン・クラスタを使用して前記トランザクション・サブセットを並行に実行することを備える、請求項１に記載の方法。
【請求項４】
前記トランザクション・データとタイムスタンプの間に対応する関係が存在し、
前記トランザクション・サブセットを実行することは、
前記タイムスタンプに対応する時間的順序により、前記トランザクション・サブセットに備えられるトランザクション・データを順次に実行することを備える、請求項１に記載の方法。
【請求項５】
重なり合うデータ変更範囲を有するトランザクション・データを前記同一のレベルＩＩサブセットに入れることは、
第２のトランザクション・データの前記データ変更範囲が第１のレベルＩＩサブセットの前記データ変更範囲と重なり合う場合、前記第２のトランザクション・データを前記第１のレベルＩＩサブセットに加えることを備え、
重なり合わないデータ変更範囲を有するトランザクション・データを異なるレベルＩＩサブセットに分割することは、
前記第２のトランザクション・データの前記データ変更範囲が前記第１のレベルＩＩサブセットの前記データ変更範囲と重なり合わない場合、前記第２のトランザクション・データを備える第２のレベルＩＩサブセットを作成することを備え、
前記第１のレベルＩサブセットは、前記レベルＩサブセットのうちのいずれかのレベルＩサブセットであり、前記第２のトランザクション・データは、前記第１のレベルＩサブセットの中の前記トランザクション・データのうちのいずれかのトランザクション・データであり、前記第１のレベルＩＩサブセットは、前記第１のレベルＩサブセットのうちのいずれかのレベルＩＩサブセットであり、かつ前記第２のレベルＩＩサブセットは、前記第１のレベルＩＩサブセットとは異なる、請求項１に記載の方法。
【請求項６】
実行されるべき前記複数のトランザクション・データは、前記トランザクション・データを備える実行されるべきトランザクション・セットを形成すべく獲得され、かつ同一のバッチの中で実行されるべき前記トランザクション・セットは、事前設定されたデータ処理量および／または事前設定されたトランザクション・データ時間によって判定される、請求項１に記載の方法。
【請求項７】
ブロックチェーンにトランザクション・データを書き込むための装置であって、
ブロックチェーンに書き込まれるべき複数のトランザクション・データを獲得するように構成された獲得モジュールと、
動作Ｉあるいは動作ＩＩを実行することによって、前記トランザクション・データのトランザクション・タイプおよびデータ変更範囲により、前記トランザクション・データが属するトランザクション・サブセットを判定するように構成されたトランザクション・サブセット判定モジュールであって、異なるトランザクション・サブセットに属するトランザクション・データの間にトランザクション依存関係は存在しない、トランザクション・サブセット判定モジュールと、
前記トランザクション・サブセットを並行に実行し、かつ前記ブロックチェーンに実行結果を書き込むように構成されたデータ実行モジュールと、を備え、
前記動作Ｉは、
前記トランザクション・データの前記トランザクション・タイプにより、前記トランザクション・データが属するレベルＩサブセットを判定すること、および
前記トランザクション・データの前記データ変更範囲により、前記レベルＩサブセットの中の前記トランザクション・データが属するレベルＩＩサブセットを判定し、かつ前記レベルＩＩサブセットを前記トランザクション・サブセットのうちの１つとして使用することであって、前記レベルＩＩサブセットは、前記レベルＩサブセットのサブセットであることを備え、
前記動作Ｉは、
前記トランザクション・データの前記トランザクション・タイプにより、前記トランザクション・データが属するレベルＩサブセットを判定した後に、前記トランザクション・データと同一のトランザクション・タイプのトランザクション・データを同一のレベルＩサブセットに入れ、かつ異なるトランザクション・タイプのトランザクション・データを異なるレベルＩサブセットに分割すること、および
前記トランザクション・データの前記データ変更範囲により、前記レベルＩサブセットの中の前記トランザクション・データが属するレベルＩＩサブセットを判定した後に、重なり合うデータ変更範囲を有するトランザクション・データを同一のレベルＩＩサブセットに入れ、かつ重なり合わないデータ変更範囲を有するトランザクション・データを異なるレベルＩＩサブセットに分割することを更に備え、
重なり合うデータ変更範囲を有するトランザクション・データを同一のレベルＩＩサブセットに入れることは、
第１のトランザクション・データの前記データ変更範囲が第１のレベルＩＩサブセットの前記データ変更範囲と重なり合う場合、前記第１のトランザクション・データを前記第１のレベルＩＩサブセットに加えることを備え、
重なり合わないデータ変更範囲を有するトランザクション・データを異なるレベルＩＩサブセットに分割することは、
前記第１のトランザクション・データの前記データ変更範囲が前記第１のレベルＩＩサブセットの前記データ変更範囲と重なり合わない場合、前記第１のトランザクション・データを備える第２のレベルＩＩサブセットを作成することを備え、
前記第１のレベルＩサブセットは、前記レベルＩサブセットのうちのいずれかのレベルＩサブセットであり、前記第１のトランザクション・データは、前記第１のレベルＩサブセットの中の前記トランザクション・データのうちのいずれかのトランザクション・データであり、前記第１のレベルＩＩサブセットは、前記第１のレベルＩサブセットのうちのいずれかのレベルＩＩサブセットであり、かつ前記第２のレベルＩＩサブセットは、前記第１のレベルＩＩサブセットとは異なり、
前記動作ＩＩは、
前記トランザクション・データの前記データ変更範囲により、前記トランザクション・データが属するレベルＩサブセットを判定すること、
前記トランザクション・データの前記トランザクション・タイプにより、前記レベルＩサブセットの中の前記トランザクション・データが属するレベルＩＩサブセットを判定し、かつ前記レベルＩＩサブセットを前記トランザクション・サブセットのうちの１つとして使用することであって、前記レベルＩＩサブセットは、前記レベルＩサブセットのサブセットであること、
前記トランザクション・データの前記データ変更範囲により、前記トランザクション・データが属するレベルＩサブセットを判定した後に、重なり合うデータ変更範囲を有するトランザクション・データを同一のレベルＩサブセットに入れ、かつ重なり合わないデータ変更範囲を有するトランザクション・データを異なるレベルＩサブセットに分割すること、および
前記トランザクション・データの前記トランザクション・タイプにより、前記レベルＩサブセットの中の前記トランザクション・データが属するレベルＩＩサブセットを判定した後に、同一のトランザクション・タイプのトランザクション・データを同一のレベルＩＩサブセットに入れ、かつ異なるトランザクション・タイプのトランザクション・データを異なるレベルＩＩサブセットに分割することを備え、
重なり合うデータ変更範囲を有するトランザクション・データを同一のレベルＩサブセットに入れることは、
第２のトランザクション・データの前記データ変更範囲が第２のレベルＩサブセットの前記データ変更範囲と重なり合う場合、前記第２のトランザクション・データを前記第２のレベルＩサブセットに加えることを備え、
重なり合わないデータ変更範囲を有するトランザクション・データを異なるレベルＩサブセットに分割することは、
前記第２のトランザクション・データの前記データ変更範囲が前記第２のレベルＩサブセットの前記データ変更範囲と重なり合わない場合、前記第２のトランザクション・データを備える第３のレベルＩサブセットを作成することを備え、
前記第２のトランザクション・データは、前記トランザクション・データのうちのいずれかのトランザクション・データであり、前記第２のレベルＩサブセットは、前記レベルＩサブセットのうちのいずれかのレベルＩサブセットであり、かつ前記第３のレベルＩサブセットは、前記第２のレベルＩサブセットとは異なる、装置。
【請求項８】
ブロックチェーン・トランザクション・データのトランザクション・サブセットを判定するための方法であって、
ブロックチェーンに書き込まれるべき複数のトランザクション・データが獲得された後、前記トランザクション・サブセットを並行に実行し、かつ前記ブロックチェーンに実行結果を書き込むために、動作Ｉあるいは動作ＩＩを実行することによって、前記トランザクション・データのトランザクション・タイプおよびデータ変更範囲により、前記トランザクション・データが属するトランザクション・サブセットを判定することであって、異なるトランザクション・サブセットに属するトランザクション・データの間にトランザクション依存関係は存在しないことを備え、
前記動作Ｉは、
前記トランザクション・データの前記トランザクション・タイプにより、前記トランザクション・データが属するレベルＩサブセットを判定すること、および
前記トランザクション・データの前記データ変更範囲により、前記レベルＩサブセットの中の前記トランザクション・データが属するレベルＩＩサブセットを判定し、かつ前記レベルＩＩサブセットを前記トランザクション・サブセットのうちの１つとして使用することであって、前記レベルＩＩサブセットは、前記レベルＩサブセットのサブセットであることを備え、
前記動作Ｉは、
前記トランザクション・データの前記トランザクション・タイプにより、前記トランザクション・データが属するレベルＩサブセットを判定した後に、前記トランザクション・データと同一のトランザクション・タイプのトランザクション・データを同一のレベルＩサブセットに入れ、かつ異なるトランザクション・タイプのトランザクション・データを異なるレベルＩサブセットに分割すること、および、
前記トランザクション・データの前記データ変更範囲により、前記レベルＩサブセットの中の前記トランザクション・データが属するレベルＩＩサブセットを判定した後に、重なり合うデータ変更範囲を有するトランザクション・データを同一のレベルＩＩサブセットに入れ、かつ重なり合わないデータ変更範囲を有するトランザクション・データを異なるレベルＩＩサブセットに分割することを更に備え、
重なり合うデータ変更範囲を有するトランザクション・データを同一のレベルＩＩサブセットに入れることは、
第１のトランザクション・データの前記データ変更範囲が第１のレベルＩＩサブセットの前記データ変更範囲と重なり合う場合、前記第１のトランザクション・データを前記第１のレベルＩＩサブセットに加えることを備え、
重なり合わないデータ変更範囲を有するトランザクション・データを異なるレベルＩＩサブセットに分割することは、
前記第１のトランザクション・データの前記データ変更範囲が前記第１のレベルＩＩサブセットの前記データ変更範囲と重なり合わない場合、前記第１のトランザクション・データを備える第２のレベルＩＩサブセットを作成することを備え、
前記第１のレベルＩサブセットは、前記レベルＩサブセットのうちのいずれかのレベルＩサブセットであり、前記第１のトランザクション・データは、前記第１のレベルＩサブセットの中の前記トランザクション・データのうちのいずれかのトランザクション・データであり、前記第１のレベルＩＩサブセットは、前記第１のレベルＩサブセットのうちのいずれかのレベルＩＩサブセットであり、かつ前記第２のレベルＩＩサブセットは、前記第１のレベルＩＩサブセットとは異なり、
前記動作ＩＩは、
前記トランザクション・データの前記データ変更範囲により、前記トランザクション・データが属するレベルＩサブセットを判定すること、
前記トランザクション・データの前記トランザクション・タイプにより、前記レベルＩサブセットの中の前記トランザクション・データが属するレベルＩＩサブセットを判定し、かつ前記レベルＩＩサブセットを前記トランザクション・サブセットのうちの１つとして使用することであって、前記レベルＩＩサブセットは、前記レベルＩサブセットのサブセットであること、
前記トランザクション・データの前記データ変更範囲により、前記トランザクション・データが属するレベルＩサブセットを判定した後に、重なり合うデータ変更範囲を有するトランザクション・データを同一のレベルＩサブセットに入れ、かつ重なり合わないデータ変更範囲を有するトランザクション・データを異なるレベルＩサブセットに分割すること、および
前記トランザクション・データの前記トランザクション・タイプにより、前記レベルＩサブセットの中の前記トランザクション・データが属するレベルＩＩサブセットを判定した後に、同一のトランザクション・タイプのトランザクション・データを同一のレベルＩＩサブセットに入れ、かつ異なるトランザクション・タイプのトランザクション・データを異なるレベルＩＩサブセットに分割することを備え、
重なり合うデータ変更範囲を有するトランザクション・データを同一のレベルＩサブセットに入れることは、
第２のトランザクション・データの前記データ変更範囲が第２のレベルＩサブセットの前記データ変更範囲と重なり合う場合、前記第２のトランザクション・データを前記第２のレベルＩサブセットに加えることを備え、
重なり合わないデータ変更範囲を有するトランザクション・データを異なるレベルＩサブセットに分割することは、
前記第２のトランザクション・データの前記データ変更範囲が前記第２のレベルＩサブセットの前記データ変更範囲と重なり合わない場合、前記第２のトランザクション・データを備える第３のレベルＩサブセットを作成することを備え、
前記第２のトランザクション・データは、前記トランザクション・データのうちのいずれかのトランザクション・データであり、前記第２のレベルＩサブセットは、前記レベルＩサブセットのうちのいずれかのレベルＩサブセットであり、かつ前記第３のレベルＩサブセットは、前記第２のレベルＩサブセットとは異なる、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、コンピュータ技術の分野に関し、詳細には、ブロックチェーンにトランザクション・データを書き込むための方法および装置、ならびにブロックチェーン・トランザクション・データのトランザクション・サブセットを判定するための方法に関する。
【背景技術】
【０００２】
コンピュータ技術の発展とともに、ブロックチェーン技術（分散型帳簿ネットワークとも呼ばれる）が、分権化、開放性および透明性、不易性、ならびに信頼性に起因して、スマート契約、証券取引、電子商取引、モノのインターネット、ソーシャル・コミュニケーション、文書ストレージ、存在証明、身元証明、およびエクイティ・クラウドファンディングなどの多数の分野において広く使用されている。
【０００３】
一例において、ブロックチェーン技術は、一種の分権化された分散型のデータベース技術である。ブロックチェーンにおける各データは、ネットワーク全体のすべてのブロックチェーン・ノードにブロードキャストされ、かつ各ノードが、互いに整合性のある全量のデータを保持する。ブロックチェーン技術は、すべてのノードが、データベース状態などを含めて、同一の状態を保つことを要求する。データベース状態の整合性を確実にすべく、ブロックチェーン・トランザクションが、すべてのノードに関して整合性のある順序付けられたシーケンスになっていることが要求され、すべてのノードは、トランザクション検証、実施、データをチェーンに含めること、その他を完了すべく、そのようなシーケンスでトランザクションを実行する。イーサリアムのブロックチェーン・アプリケーションを例にとると、各トランザクションが受信されたとき、タイムスタンプが作成され、トランザクションは、トランザクション・プールに書き込まれ、かつトランザクションは、タイムスタンプにより並べ替えられ、マイニング中、トランザクションは、トランザクション・タイムスタンプのシーケンスにより実行され、かつ各トランザクションの実行後の口座情報が、更新されてデータベースに入れられ、その結果、データベース口座状態の更新を実現する。
【０００４】
現在の技術において、データベース状態の整合性を確実にするのに、データは、トランザクション（ブロックチェーンに書き込まれるべきトランザクション・データと解釈されてもよい）受信のタイムスタンプのストリングにより処理される必要がある。したがって、単一のマシンだけしか、実行を行うことが可能でないことに制限されて、書込みパフォーマンス、およびデータベースの効率が単一のマシンのパフォーマンスによって制限されることをもたらす。書込みパフォーマンスおよび効率を向上させるべく、単一のマシンの、ＣＰＵなどの物理特性が、ＣＰＵのコア数を増加させるなど、向上させられる必要があり、このことは、高い費用につながるだけでなく、拡張性を制限することにもなる。
【発明の概要】
【０００５】
本出願の実施形態が、データ処理の実行効率を向上させるために要求される費用を低減すること、および拡張性を向上させることを意図する、ブロックチェーンにトランザクション・データを書き込むための方法および装置を提供する。
【０００６】
本出願の実施形態は、トランザクション・データを適度に分割して、その結果、データ処理の実行効率を向上させるために要求される費用を低減すること、および拡張性を向上させることを意図する、ブロックチェーン・トランザクション・データのトランザクション・サブセットを判定するための方法をさらに提供する。
【０００７】
本出願の実施形態は、以下の技術的ソリューションを用いる。
【０００８】
第１の態様によれば、本出願の実施形態によって提供されるブロックチェーンにトランザクション・データを書き込むための方法は、
実行されるべき複数のトランザクション・データを獲得すること、
トランザクション・データのトランザクション・タイプおよび／またはデータ変更範囲により、トランザクション・データが属するトランザクション・サブセットを判定することであって、異なるトランザクション・サブセットに属するトランザクション・データの間にトランザクション依存関係は存在しないこと、および
トランザクション・サブセットを並行に実行し、かつブロックチェーンに実行結果を書き込むことを備える。
【０００９】
好ましくは、本出願の実施形態によって提供されるブロックチェーンにトランザクション・データを書き込むための方法において、トランザクション・データのトランザクション・タイプおよび／またはデータ変更範囲により、トランザクション・データが属するトランザクション・サブセットを判定することは、
トランザクション・データのデータ属性により、トランザクション・データが属するトランザクション・サブセットを判定することであって、データ属性は、トランザクション・データのトランザクション・タイプおよび／またはデータ変更範囲と対応関係を有し、かつデータ属性は、トランザクション・データのトランザクション依存関係を反映させるために使用されることを備える。
【００１０】
好ましくは、本出願の実施形態によって提供されるブロックチェーンにトランザクション・データを書き込むための方法において、トランザクション・サブセットを並行に実行することは、
マルチスレッディングまたはマシン・クラスタを使用してトランザクション・サブセットを並行に実行することを備える。
【００１１】
好ましくは、本出願の実施形態によって提供されるブロックチェーンにトランザクション・データを書き込むための方法において、トランザクション・データとタイムスタンプの間に対応する関係が存在し、かつトランザクション・サブセットを実行することは、
タイムスタンプに対応する時間的順序により、トランザクション・サブセットに備えられるトランザクション・データを順次に実行することを備える。
【００１２】
好ましくは、本出願の実施形態によって提供されるブロックチェーンにトランザクション・データを書き込むための方法において、トランザクション・データのトランザクション・タイプにより、トランザクション・データが属するトランザクション・サブセットを判定することは、
トランザクション・データのトランザクション・タイプにより、同一のトランザクション・タイプのトランザクション・データを同一のトランザクション・サブセットに入れ、かつ異なるトランザクション・タイプのトランザクション・データを異なるトランザクション・サブセットに分割することを備える。
【００１３】
好ましくは、本出願の実施形態によって提供されるブロックチェーンにトランザクション・データを書き込むための方法において、トランザクション・データのデータ変更範囲により、トランザクション・データが属するトランザクション・サブセットを判定することは、
トランザクション・データのデータ変更範囲により、重なり合うデータ変更範囲を有するトランザクション・データを同一のトランザクション・サブセットに入れ、かつ重なり合わないデータ変更範囲を有するトランザクション・データを異なるトランザクション・サブセットに分割することを備える。
【００１４】
好ましくは、本出願の実施形態によって提供されるブロックチェーンにトランザクション・データを書き込むための方法において、トランザクション・データのデータ変更範囲により、重なり合うデータ変更範囲を有するトランザクション・データを同一のトランザクション・サブセットに入れ、かつ重なり合わないデータ変更範囲を有するトランザクション・データを異なるトランザクション・サブセットに分割することは、
トランザクション・データのデータ変更範囲を横断すること、
第１のトランザクション・データのデータ変更範囲が第１のトランザクション・サブセットのデータ変更範囲と重なり合う場合、第１のトランザクション・データを第１のトランザクション・サブセットに加えること、および
第１のトランザクション・データのデータ変更範囲が第１のトランザクション・サブセットのデータ変更範囲と重なり合わない場合、第１のトランザクション・データを備える第２のトランザクション・サブセットを作成することを備え、
第１のトランザクション・データは、トランザクション・データのうちのいずれかであり、第１のトランザクション・サブセットは、トランザクション・サブセットのうちのいずれかであり、かつ第２のトランザクション・サブセットは、第１のトランザクション・サブセットとは異なる。
【００１５】
好ましくは、本出願の実施形態によって提供されるブロックチェーンにトランザクション・データを書き込むための方法において、トランザクション・サブセットのデータ変更範囲は、トランザクション・サブセットに備えられるトランザクション・データのデータ変更範囲の結合であるものと判定される。
【００１６】
好ましくは、本出願の実施形態によって提供されるブロックチェーンにトランザクション・データを書き込むための方法において、トランザクション・データとタイムスタンプの間に対応関係が存在し、かつトランザクション・データのデータ変更範囲を横断することは、
トランザクション・データのタイムスタンプにより、タイムスタンプに対応する時間的順序で横断することを備える。
【００１７】
好ましくは、本出願の実施形態によって提供されるブロックチェーンにトランザクション・データを書き込むための方法において、トランザクション・データのトランザクション・タイプおよびデータ変更範囲により、トランザクション・データが属するトランザクション・サブセットを判定することは、
トランザクション・データのトランザクション・タイプにより、トランザクション・データが属するレベルＩサブセットを判定すること、および
トランザクション・データのデータ変更範囲により、レベルＩサブセットの中のトランザクション・データが属するレベルＩＩサブセットを判定し、かつレベルＩＩサブセットをトランザクション・サブセットのうちの１つとして使用することであって、レベルＩＩサブセットは、レベルＩサブセットのサブセットであることを備える。
【００１８】
好ましくは、本出願の実施形態によって提供されるブロックチェーンにトランザクション・データを書き込むための方法において、トランザクション・データのトランザクション・タイプにより、トランザクション・データが属するレベルＩサブセットを判定することは、
トランザクション・データのトランザクション・タイプにより、同一のトランザクション・タイプのトランザクション・データを同一のレベルＩサブセットに入れ、かつ異なるトランザクション・タイプのトランザクション・データを異なるレベルＩサブセットに分割することを備える。
【００１９】
好ましくは、本出願の実施形態によって提供されるブロックチェーンにトランザクション・データを書き込むための方法において、トランザクション・データのデータ変更範囲により、レベルＩサブセットの中のトランザクション・データが属するレベルＩＩサブセットを判定することは、
レベルＩサブセットの中のトランザクション・データのデータ変更範囲により、重なり合うデータ変更範囲を有するトランザクション・データを同一のレベルＩＩサブセットに入れ、かつ重なり合わないデータ変更範囲を有するトランザクション・データを異なるレベルＩＩサブセットに分割することを備える。
【００２０】
好ましくは、本出願の実施形態によって提供されるブロックチェーンにトランザクション・データを書き込むための方法において、レベルＩサブセットの中のトランザクション・データのデータ変更範囲により、重なり合うデータ変更範囲を有するトランザクション・データを同一のレベルＩＩサブセットに入れ、かつ重なり合わないデータ変更範囲を有するトランザクション・データを異なるレベルＩＩサブセットに分割することは、
第１のレベルＩサブセットの中のトランザクション・データのデータ変更範囲を横断すること、
第２のトランザクション・データのデータ変更範囲が第１のレベルＩＩサブセットのデータ変更範囲と重なり合う場合、第２のトランザクション・データを第１のレベルＩＩサブセットに加えること、および
第２のトランザクション・データのデータ変更範囲が第１のレベルＩＩサブセットのデータ変更範囲と重なり合わない場合、第２のトランザクション・データを備える第２のレベルＩＩサブセットを作成することを備え、
第１のレベルＩサブセットは、レベルＩサブセットのうちのいずれかのレベルＩサブセットであり、第２のトランザクション・データは、第１のレベルＩサブセットの中のトランザクション・データのうちのいずれかのトランザクション・データであり、第１のレベルＩＩサブセットは第１のレベルＩサブセットの中のいずれかのレベルＩＩサブセットであり、かつ第２のレベルＩＩサブセットは、第１のレベルＩＩサブセットとは異なる。
【００２１】
好ましくは、本出願の実施形態によって提供されるブロックチェーンにトランザクション・データを書き込むための方法において、実行されるべき複数のトランザクション・データは、トランザクション・データを備える実行されるべきトランザクション・セットを形成すべく獲得され、かつトランザクション・セットは、事前設定されたデータ処理量および／または事前設定されたトランザクション・データ時間によって判定される。
【００２２】
第２の態様によれば、本出願の実施形態は、ブロックチェーンにトランザクション・データを書き込むための別の方法であって、
ブロックチェーンに書き込まれるべき複数のトランザクション・データを獲得すること、
トランザクション・データのデータ変更範囲により、トランザクション依存関係を有さない第１のトランザクション・データを判定することであって、第１のトランザクション・データの間にトランザクション依存関係は存在しないこと、および
第１のトランザクション・データを並行に実行し、かつブロックチェーンに実行結果を書き込むことを備える方法をさらに提供する。
【００２３】
好ましくは、ブロックチェーンにトランザクション・データを書き込むための前述の方法において、トランザクション・データのデータ変更範囲により、トランザクション依存関係を有さない第１のトランザクション・データを判定することは、
トランザクション・データのデータ変更範囲により、他のいずれのトランザクション・データの別のデータ変更範囲とも重なり合わないデータ変更範囲を有するトランザクション・データを、トランザクション依存関係を有さない第１のトランザクション・データとして判定することを備える。
【００２４】
第３の態様によれば、本出願の実施形態は、ブロックチェーンにトランザクション・データを書き込むための装置であって、
ブロックチェーンに書き込まれるべき複数のトランザクション・データを獲得するように構成された獲得モジュールと、
トランザクション・データのトランザクション・タイプおよび／またはデータ変更範囲により、トランザクション・データが属するトランザクション・サブセットを判定するように構成されたトランザクション・サブセット判定モジュールであって、異なるトランザクション・サブセットに属するトランザクション・データの間にトランザクション依存関係は存在しない、トランザクション・サブセット判定モジュールと、
トランザクション・サブセットを並行に実行し、かつブロックチェーンに実行結果を書き込むように構成されたデータ実行モジュールと、を備える装置をさらに提供する。
【００２５】
第４の態様によれば、本出願の実施形態は、ブロックチェーン・トランザクション・データのトランザクション・サブセットを判定するための方法であって、ブロックチェーンに書き込まれるべき複数のトランザクション・データが獲得された後、トランザクション・データのトランザクション・タイプおよび／またはデータ変更範囲により、トランザクション・データが属するトランザクション・サブセットを、トランザクション・サブセットを並行に実行し、かつブロックチェーンに実行結果を書き込むために判定することであって、異なるトランザクション・サブセットに属するトランザクション・データの間にトランザクション依存関係は存在しないことを備える方法をさらに提供する。
【００２６】
好ましくは、本出願の実施形態によって提供されるトランザクション・サブセットを判定するための方法において、トランザクション・データのトランザクション・タイプおよび／またはデータ変更範囲により、トランザクション・データが属するトランザクション・サブセットを判定することは、
トランザクション・データのデータ属性により、トランザクション・データが属するトランザクション・サブセットを判定することであって、データ属性は、トランザクション・データのトランザクション・タイプおよび／またはデータ変更範囲と対応関係を有し、かつデータ属性は、トランザクション・データのトランザクション依存関係を反映させるために使用されることを備える。
【００２７】
好ましくは、本出願の実施形態によって提供されるトランザクション・サブセットを判定するための方法において、トランザクション・データのトランザクション・タイプにより、トランザクション・データが属するトランザクション・サブセットを判定することは、トランザクション・データのトランザクション・タイプにより、同一のトランザクション・タイプのトランザクション・データを同一のトランザクション・サブセットに入れ、かつ異なるトランザクション・タイプのトランザクション・データを異なるトランザクション・サブセットに分割することを備え、または
トランザクション・データのデータ変更範囲により、トランザクション・データが属するトランザクション・サブセットを判定することは、トランザクション・データのデータ変更範囲により、重なり合うデータ変更範囲を有するトランザクション・データを同一のトランザクション・サブセットに入れ、かつ重なり合わないデータ変更範囲を有するトランザクション・データを異なるトランザクション・サブセットに分割することを備える。
【００２８】
好ましくは、本出願の実施形態によって提供されるトランザクション・サブセットを判定するための方法において、トランザクション・データのトランザクション・タイプおよびデータ変更範囲により、トランザクション・データが属するトランザクション・サブセットを判定することは、
トランザクション・データのトランザクション・タイプにより、トランザクション・データが属するレベルＩサブセットを判定すること、および
トランザクション・データのデータ変更範囲により、レベルＩサブセットの中のトランザクション・データが属するレベルＩＩサブセットを判定し、かつレベルＩＩサブセットをトランザクション・サブセットのうちの１つとして使用することであって、レベルＩＩサブセットは、レベルＩサブセットのサブセットであることを備える。
【００２９】
本出願の実施形態によって用いられる前述の少なくとも１つの技術的ソリューションは、以下の有利な効果を実現することができる。
【００３０】
本出願の実施形態において、ブロックチェーンに書き込まれるべきトランザクション・データが獲得された後、トランザクション・データの間にトランザクション依存関係が存在するかどうかが、トランザクション・データのトランザクション・タイプまたはデータ変更範囲により、判定されてよく、次に、トランザクション・データが、トランザクション・データの間のトランザクション依存関係の状況により、異なるトランザクション・サブセットに分割されてよい。異なるトランザクション・サブセットに属するトランザクション・データの間にトランザクション依存関係は存在しないので、異なるトランザクション・サブセットは、データベース状態の整合性に影響を及ぼすことなしに、並列に実行されることが可能である。本出願の実施形態によって提供されるソリューションによれば、トランザクション依存関係を有さないトランザクション・データを並列に実行することは、データベース状態の整合性を確実にするだけでなく、個々のマシンのパフォーマンスの向上に依拠することなしにデータ処理の実行効率を向上させもする。したがって、個々のマシンに関するパフォーマンス要件が下げられてよく、このことは、費用節約に有利であり、かつより良好な拡張性につながる。
【００３１】
以下において説明されるべき添付の図面は、本出願のより良い理解をもたらすべく使用され、本出願の一部分を構成する。本出願の例示的な実施形態、および例示的な実施形態の説明は、本出願を説明すべく使用され、本出願に対する不適切な限定は構成しない。添付の図面において、以下のとおりである。
【図面の簡単な説明】
【００３２】
【図１】本出願の一部の実施形態によるブロックチェーンにトランザクション・データを書き込むための方法を示すフロー・チャートである。
【図２】本出願の一部の実施形態によるブロックチェーンにトランザクション・データを書き込むための第２の方法を示すフロー・チャートである。
【図３】本出願の一部の実施形態によるブロックチェーンにトランザクション・データを書き込むための第３の方法を示すフロー・チャートである。
【図４】本出願の一部の実施形態によるブロックチェーンにトランザクション・データを書き込むための方法の例示的な応用シナリオを示す概略図である。
【図５】本出願の一部の実施形態によるブロックチェーンにトランザクション・データを書き込むための装置を示す概略構造図である。
【発明を実施するための形態】
【００３３】
本出願の目的、技術的ソリューション、および利点をより明確にすべく、本出願の技術的ソリューションは、本出願の実施形態および添付の図面を参照して、以下に明確に、かつ完全に説明される。説明される実施形態は、本出願の一部の実施形態に過ぎず、すべての実施形態ではないことは明白である。本出願の実施形態を基礎として、独創的な取組みなしに当業者によって獲得されることが可能な他のすべての実施形態は、本出願の範囲に含まれるものとする。
【００３４】
本出願の実施形態において提供される技術的ソリューションは、添付の図面を参照して以下に詳細に説明される。
【００３５】
実施形態１
図１は、本出願の一部の実施形態によるブロックチェーンにトランザクション・データを書き込むための方法であって、
Ｓ１０１：ブロックチェーンに書き込まれるべき複数のトランザクション・データを獲得すること、
Ｓ１０２：トランザクション・データのトランザクション・タイプおよび／またはデータ変更範囲により、トランザクション・データが属するトランザクション・サブセットを判定することであって、異なるトランザクション・サブセットに属するトランザクション・データの間にトランザクション依存関係は存在しないこと、および
Ｓ１０３：トランザクション・サブセットを並行に実行し、かつブロックチェーンに実行結果を書き込むことを備える方法を示す。
【００３６】
前述の実施形態において、ステップＳ１０１が、ブロックチェーンに書き込まれるべきトランザクション・データを獲得すべく実行された後、トランザクション・データの間にトランザクション依存関係が存在するかどうかが、トランザクション・データのトランザクション・タイプまたはデータ変更範囲により、判定されてよく、次に、トランザクション・データが、トランザクション・データの間のトランザクション依存関係の状況により、異なるトランザクション・サブセットに分割されてよい。異なるトランザクション・サブセットに属するトランザクション・データの間にトランザクション依存関係は存在しないので、異なるトランザクション・サブセットは、データベース状態の整合性に影響を及ぼすことなしに、並列に実行されることが可能である。本出願の実施形態によって提供されるソリューションによれば、トランザクション・サブセットの中のトランザクション・データが並列に実行される様態は、個々のマシンのパフォーマンスの向上に依拠することなしにデータ処理の実行効率を向上させることが可能である。したがって、個々のマシンに関するパフォーマンス要件が下げられてよく、このことは、費用節約に有利であり、かつより良好な拡張性につながる。
【００３７】
本実施形態においてステップＳ１０１が実行された後に複数のトランザクション・データが獲得された後、実行されるべきトランザクション・データを備える実行されるべきトランザクション・セットが形成されることが可能であり、かつトランザクション・セットは、事前設定されたデータ処理量および／または事前設定されたトランザクション・データ時間によって判定されることが可能である。一例において、同一のバッチにおいて実行されるべきトランザクション・データは、データ処理量を事前設定することによって判定されてよく、かつ事前設定されたデータ処理量の例示的な値は、ブロックチェーンに書き込まれることが許されるデータの量により、判定されてよい。例えば、ブロックチェーンに書き込まれることが許されるトランザクション・データの量が、１，０００であり、すると、事前設定されたデータ処理量は、要件を満たすように、１，０００未満、例えば、８００であるように設定されてよい。例示的な実施例において、サーバが８００のトランザクション・データを受信するたびに、サーバは、後続の処理のために実行されるべきトランザクション・セットを形成してよい。実行されるべきトランザクション・セットが判定されるとき、同一のバッチの中で実行されるべきトランザクション・データが、トランザクション・データ時間を事前設定することによって判定されてもよい。例えば、事前設定されたトランザクション・データ時間が１秒であるように設定され、すると、同一のバッチの中で実行されるべきトランザクション・データは、１秒内に並行に生成されるトランザクション・データである。
【００３８】
ステップＳ１０３が実行されたとき、トランザクション・データは、トランザクション依存関係を有さない複数のトランザクション・サブセットに分割されるので、トランザクション・サブセットは、マルチスレッディングまたはマシン・クラスタを使用して並行に実行されることが可能であり、このことは、データベース状態の整合性の要件を満たすだけでなく、データ実行効率を向上させる目標も実現する。このようにして、データ実行効率は、個々のマシンのパフォーマンスの向上に依拠することなしに向上させられることが可能である。したがって、個々のマシンに関するパフォーマンス要件が下げられてよく、このことは、費用節約に有利であり、かつマシン・クラスタの様態を使用することによってより良好な拡張性につながる。
【００３９】
別の例において、トランザクション・データを備えるトランザクション・サブセットが実行されるとき、異なるトランザクション・サブセットに分割されたトランザクション・データの間にトランザクション依存関係は存在しない一方で、同一のトランザクション・サブセットに入れられたトランザクション・データの間にはトランザクション依存関係が存在する。したがって、異なるトランザクション・サブセットは、データ実行効率を向上させるべく並行に実行されてよい一方で、同一のトランザクション・サブセットの中のトランザクション・データは、データベース状態の整合性を確実にすべく順次に実行されてよい。一例において、トランザクション・データとタイムスタンプの間に対応する関係が存在し、すると、トランザクション・サブセットが実行されるとき、トランザクション・サブセットに備えられるトランザクション・データは、タイムスタンプに対応する時間的順序により、順次に実行される。さらに、各トランザクション・データの実行は、トランザクション検証、トランザクション実施、およびデータをチェーンに含めることの順序で実行されて、最後にブロックチェーンに実行結果が書き込まれる。
【００４０】
ステップＳ１０２が実行されるとき、トランザクション・サブセットは、トランザクション依存関係を有するトランザクション・データが、トランザクション依存関係を有さないトランザクション・データから分離される限り、様々な異なる様態で判定されてよい。一例において、トランザクション・データが属するトランザクション・サブセットは、トランザクション・データのデータ属性により判定されてよく、データ属性は、トランザクション・データのトランザクション・タイプおよび／またはデータ変更範囲と対応関係を有し、かつデータ属性は、トランザクション・データのトランザクション依存関係を反映させるために使用される。すると、トランザクション・データから抽出されたデータ属性により、トランザクション依存関係を有するトランザクション・データが、同一のトランザクション・サブセットに入れられてよく、かつトランザクション依存関係を有さないトランザクション・データが、異なるトランザクション・サブセットに分割されてよく、その結果、異なるトランザクション・サブセットの並行の実行が実現される。さらなる例において、データ属性は、トランザクション・データに備えられた識別子フィールドの形態で実現されてよく、またはトランザクション・データによって担持される特徴情報の形態で実現されてよい。指定された識別子フィールドが含まれるかどうかが判定されてよく、またはトランザクション・データの特徴情報が抽出され、次に、特徴情報が事前設定された条件を満たすかどうかが判定されてよく、その結果、データ属性によりトランザクション・データのトランザクション依存関係が判定される。
【００４１】
本出願の実施形態において説明されるトランザクション・データの間のトランザクション依存関係は、異なるトランザクション・データが実行されるときに存在するトランザクション関連付け、例えば、時間的順序、トランザクション・オブジェクト、または実行結果などの態様における関連付けによって実現されてよい。例えば、より後の実行時間を有するトランザクション・データの実行が、より早い実行時間を有するトランザクション・データの実行結果に依存する場合、または異なるトランザクション・データの実行が同一のデータ状態に影響を与える場合、これら２つのトランザクション・データは、トランザクション依存関係を有すると見なされる。逆の場合、これら２つのトランザクション・データは、トランザクション依存関係を有さないと見なされてよい。
【００４２】
トランザクション・サブセットを判定するプロセスが、例を通して詳細に説明される。
【００４３】
（Ｉ）トランザクション・データのトランザクション・タイプによりトランザクション・サブセットを判定すること
本出願の実施形態において、トランザクション・サブセットは、トランザクション・データのトランザクション・タイプにより判定されてよい。一例において、同一のトランザクション・タイプのトランザクション・データは、同一のトランザクション・サブセットに入れられ、かつ異なるトランザクション・タイプのトランザクション・データは、異なるトランザクション・サブセットに分割される。異なるトランザクション・タイプのトランザクション・データの間にトランザクション依存関係は存在しないので、データ実行の結果は、異なるトランザクション・タイプのトランザクション・データが実行される順序にかかわらず、影響を受けない。トランザクション・データのトランザクション・タイプによりトランザクション・データが同一のトランザクション・サブセットに属するかどうかを判定することは、異なるトランザクション・サブセットに属するトランザクション・データの間にトランザクション依存関係が存在しないことを確実にすることができ、その結果、異なるトランザクション・サブセットの中のトランザクション・データの並行処理の必要性を満たし、かつデータ処理の実行効率の向上に有利となる。
【００４４】
例えば、契約タイプのトランザクション（トランザクションと呼ばれてもよい）が実行された後、対応する契約データだけが変更される一方で、振替タイプのトランザクション（トランザクションと呼ばれてもよい）が実行された後、振替の両方の当事者の口座残高データが変更される。これら２つのタイプのトランザクションが実行される順序は、実行結果に影響を及ぼさないことが見て取られることが可能である。したがって、異なる２つのタイプのトランザクションを異なるトランザクション・サブセットに分割することは、異なるトランザクション・サブセットに属するトランザクション・データがトランザクション依存関係を有さないことを確実にすることができ、このため、トランザクション・サブセットは、データベース状態の整合性に影響を与えることなしに、並行に処理されることが可能である。
（ＩＩ）トランザクション・データのデータ変更範囲によりトランザクション・サブセットを判定すること
本出願におけるデータ変更範囲とは、トランザクション・データの実行のためのオブジェクトを指す。本出願の実施形態において、トランザクション・データのデータ変更範囲により、重なり合うデータ変更範囲を有するトランザクション・データは、同一のトランザクション・サブセットに入れられてよく、かつ重なり合わないデータ変更範囲を有するトランザクション・データは、異なるトランザクション・サブセットに分割されてよい。トランザクション・サブセットが、トランザクション・データのデータ変更範囲により判定されるとき、異なるトランザクション・データは、これらのトランザクション・データの実行によって影響されるデータ範囲が重なり合う場合、これらのトランザクション・データが生成された順序で実行される必要があり、さもなければ、データ実行の結果が影響を受ける。他方、異なるトランザクション・データの実行によって影響されるデータ範囲が重なり合わない場合、これらのトランザクション・データの実行の順序は、データ処理結果に影響を与えない。したがって、トランザクション・データのデータ変更範囲によりトランザクション・サブセットを判定することは、異なるトランザクション・サブセットの並行処理の必要性を満たすことが可能であり、その結果、データ処理の実行効率の向上に有利である。
【００４５】
一例において、重なり合うデータ変更範囲を有するトランザクション・データを同一のトランザクション・サブセットに入れること、および重なり合わないデータ変更範囲を有するトランザクション・データを異なるトランザクション・サブセットに分割することは、
トランザクション・データのデータ変更範囲を横断すること、
第１のトランザクション・データのデータ変更範囲が第１のトランザクション・サブセットのデータ変更範囲と重なり合う場合、第１のトランザクション・データを第１のトランザクション・サブセットに加えること、および
第１のトランザクション・データのデータ変更範囲が第１のトランザクション・サブセットのデータ変更範囲と重なり合わない場合、第１のトランザクション・データを備える第２のトランザクション・サブセットを作成することを備えてよく、
第１のトランザクション・データは、トランザクション・データのうちのいずれかであり、第１のトランザクション・サブセットは、トランザクション・サブセットのうちのいずれかであり、かつ第２のトランザクション・サブセットは、第１のトランザクション・サブセットとは異なる。
【００４６】
前述のプロセスが、図２に示されるフロー・チャートを参照して以下に説明される。
Ｓ１０２１：トランザクション・セットの中のすべてのトランザクション・データが横断されたかどうかを判定することであって、Ｙｅｓである場合、プロセスは終了し、さもなければ、プロセスは、ステップＳ１０２２に進む。
Ｓ１０２２：トランザクション・セットからいずれかのトランザクション・データＴＸを獲得すること（トランザクション・データＴＸは、トランザクション・サブセットに入れられていないトランザクション・データから、通常、抽出され、かつ生成されることが可能であるが、抽出されたトランザクション・データＴＸが、トランザクション・サブセットに既に入れられている場合、トランザクション・データＴＸは、後続のステップが実行された後、技術的オブジェクトの実現に影響を与えることなしに、同一のトランザクション・サブセットに入れられることに留意されたい）。
Ｓ１０２３：トランザクション・データＴＸのデータ変更範囲を計算する。
Ｓ１０２４：トランザクション・データＴＸのデータ変更範囲が、既存のトランザクション・サブセットＴＸＢのデータ変更範囲と重なり合うかどうかを判定する。
Ｓ１０２５：ステップＳ１０２４における判定結果がＹｅｓである場合、トランザクション・データＴＸをトランザクション・サブセットＴＸＢに加える。
Ｓ１０２６：ステップＳ１０２４における判定結果がいいえである場合、新たなトランザクション・サブセットＴＸＮを作成し、かつトランザクション・データＴＸをトランザクション・サブセットＴＸＮに加える。
【００４７】
トランザクション・サブセットのデータ変更範囲は、トランザクション・サブセットに備えられるトランザクション・データが変化したとき、再計算される必要があり、かつトランザクション・サブセットに備えられるトランザクション・データのデータ変更範囲の結合が、トランザクション・サブセットのデータ変更範囲として使用されてよいことに留意されたい。
【００４８】
例えば、契約タイプのトランザクションの実行オブジェクトが、契約ＩＤであり、かつ契約ＩＤに対応する契約データが、実行の後に変更される。すると、契約ＩＤは、トランザクション・データのデータ変更範囲と解釈されてよい。同一の契約ＩＤに関して２つのトランザクション・データが実行される場合、これら２つのトランザクション・データのデータ変更範囲は、重なり合うものと考えられてよく、すると、これら２つのトランザクション・データは、同一のトランザクション・サブセットに含められ、かつトランザクション・データに対応するタイムスタンプにより判定される順序で実行されなければならない。異なる契約ＩＤに関して２つのトランザクション・データが実行される場合、これら２つのトランザクション・データのデータ変更範囲は、重なり合わないものと考えられてよく、異なる契約ＩＤに対応する契約データは、これら２つのトランザクション・データが実行されるとき、変更される。したがって、実行の順序は、実行結果に影響を及ぼさない。これら２つのトランザクション・データは、異なるトランザクション・サブセットに含められてよく、かつ並行に実行されてよい。
【００４９】
別の例において、振替タイプのトランザクションの実行オブジェクトが、振替の両方の当事者の口座であり、かつ振替タイプのトランザクションが実行された後、振替の両方の当事者の口座残高データが変更される。したがって、振替の両方の当事者の口座が、振替タイプのトランザクション・データのデータ変更範囲と解釈されてよい。トランザクション・セットが以下の５つのトランザクション・データを備えるものと想定する。
トランザクション・データ１：口座Ａから口座Ｂに振り替えること、すると、トランザクション・データ１のデータ変更範囲は、（Ａ、Ｂ）として表現されてよい。
トランザクション・データ２：口座Ｂから口座Ａに振り替えること、すると、トランザクション・データ２のデータ変更範囲は、（Ｂ、Ａ）として表現されてよい。
トランザクション・データ３：口座Ｃから口座Ｅに振り替えること、すると、トランザクション・データ３のデータ変更範囲は、（Ｃ、Ｅ）として表現されてよい。
トランザクション・データ４：口座Ｆから口座Ｘに振り替えること、すると、トランザクション・データ４のデータ変更範囲は、（Ｆ、Ｘ）として表現されてよい。
トランザクション・データ５：口座Ｘから口座Ｅに振り替えること、すると、トランザクション・データ５のデータ変更範囲は、（Ｘ、Ｅ）として表現されてよい。
【００５０】
トランザクション・データ１のデータ変更範囲とトランザクション・データ２のデータ変更範囲は、重なり合い、トランザクション・データ３のデータ変更範囲とトランザクション・データ５のデータ変更範囲は、重なり合い、かつトランザクション・データ４のデータ変更範囲とトランザクション・データ５のデータ変更範囲は、重なり合うことが見て取られることが可能である。したがって、トランザクション・データ１からトランザクション・データ５までを備えるトランザクション・セットは、以下のトランザクション・サブセットに分割されてよい。
トランザクション・サブセット１：トランザクション・データ１と、トランザクション・データ２とを備え、かつデータ変更範囲は、（Ａ、Ｂ）である。
トランザクション・サブセット２：トランザクション・データ３と、トランザクション・データ４と、トランザクション・データ５とを備え、かつデータ変更範囲は、（Ｃ、Ｅ、Ｆ、Ｘ）である。
【００５１】
トランザクション・サブセット１のデータ変更範囲とトランザクション・サブセット２のデータ変更範囲は、重なり合わないこと、およびトランザクション・サブセット１とトランザクション・サブセット２の並行の実行は、実行結果に影響を与えないことが見て取られることが可能である。したがって、トランザクション・サブセット１とトランザクション・サブセット２は、実行効率を向上させるべく並行に実行されてよい。トランザクション・サブセット１に関して、トランザクション・データ１のデータ変更範囲とトランザクション・データ２のデータ変更範囲は、重なり合い（完全に同一でさえあり）、かつこれら２つのトランザクション・データの実行は、これら２つのトランザクション・データの実行に先立つトランザクション・データに依存することが可能である。したがって、実行の順序は、これら２つのトランザクション・データに対応するタイムスタンプにより判定される必要があり、かつこれら２つのトランザクション・データは、時間的順序で順次に実行される。トランザクション・サブセット２に関しても同じである。例えば、タイムスタンプにより、口座Ｆから口座Ｘに振り替えるトランザクション・データ４が最初に実行され、次に、口座Ｘから口座Ｅに振り替えるトランザクション・データ５が実行されることが判定されることが可能である。この実行順序は、トランザクション・データ５が実行されるときの口座Ｘから口座Ｅへの振替によって要求される資金が、口座Ｆから口座Ｘに振り替えるトランザクション・データ４の実行に依存するので、並行であることも、逆であることも可能でない。
【００５２】
トランザクション・セットの中のトランザクション・データのデータ変更範囲を横断することは、Ｓ１０２２の様態、すなわち、図２の例に示されるとおり、トランザクション・データのうちのいずれかを獲得する様態で実施されてよいことに留意されたい。代替として、横断することは、トランザクション・データのタイムスタンプによるトランザクション・セットの中のトランザクション・データの生成の時間的順序により実施されてよい。
【００５３】
（ＩＩＩ）トランザクション・データのトランザクション・タイプおよびデータ変更範囲によりトランザクション・サブセットを判定すること
本出願の実施形態において、トランザクション・タイプとデータ変更範囲は、段階およびレベルにおいてトランザクション・サブセットを判定するために組み合わされることが可能である。例示的な実施例において、データ変更範囲による分割が最初に実行されてよく、その分割に基づいて、トランザクション・タイプによる第２の分割が実行されてよく、あるいは逆の順序に従ってよい。トランザクション・タイプによる第１の分割、およびその後のデータ変更範囲による第２の分割を例にとると、トランザクション・データのトランザクション・タイプおよびデータ変更範囲によりトランザクション・サブセットを判定する実施プロセスは、
ステップＳ１０２７：トランザクション・データのトランザクション・タイプにより、トランザクション・データが属するレベルＩサブセットを判定すること、および
次に、レベルＩサブセットの中のトランザクション・データのデータ変更範囲により、トランザクション・データが属するレベルＩＩサブセットを判定し、かつレベルＩＩサブセットをトランザクション・サブセットとして使用することであって、レベルＩＩサブセットは、レベルＩサブセットのサブセットであることを備えてよい。
【００５４】
ここで、トランザクション・タイプによりトランザクション・セットに対して第１のレベルの分割を実行し、かつトランザクション・データが属するレベルＩサブセットを判定することは、
トランザクション・セットの中のトランザクション・データのトランザクション・タイプにより、同一のトランザクション・タイプのトランザクション・データを同一のレベルＩサブセットに入れ、かつ異なるトランザクション・タイプのトランザクション・データを異なるレベルＩサブセットに分割することをさらに含んでよい。
【００５５】
非常に限られた数のトランザクション・タイプのトランザクション・データしか存在しないため、トランザクション・タイプだけにより並行に実行されることが可能なトランザクション・サブセットを判定することは、実行効率を或る程度、向上させることが可能であるが、同時の多量のトランザクション・データなどの大きい量が生成される事例において満足のいく効果を実現しない可能性がある。したがって、実行効率をさらに向上させるべく、前述の分割を基礎として、トランザクション・タイプにより判定されたレベルＩサブセットが、データ変更範囲による第２のレベルの分割を受け、かつ第２のレベルの分割を通して獲得されるレベルＩＩサブセットが、並行処理のためのトランザクション・サブセットとして使用される。
【００５６】
一例において、レベルＩサブセットの中のトランザクション・データのデータ変更範囲により、トランザクション・データが属するレベルＩＩサブセットを判定することは、
レベルＩサブセットの中のトランザクション・データのデータ変更範囲により、重なり合うデータ変更範囲を有するトランザクション・データを同一のレベルＩＩサブセットに入れ、かつ重なり合わないデータ変更範囲を有するトランザクション・データを異なるレベルＩＩサブセットに分割することを備える。
【００５７】
さらに、レベルＩサブセットの中のトランザクション・データのデータ変更範囲により、重なり合うデータ変更範囲を有するトランザクション・データを同一のレベルＩＩサブセットに入れ、かつ重なり合わないデータ変更範囲を有するトランザクション・データを異なるレベルＩＩサブセットに分割することは、図３に示されるとおり、
Ｓ１０２８：第１のレベルＩサブセットの中のトランザクション・データのデータ変更範囲を横断すること、
Ｓ１０２９：第２のトランザクション・データのデータ変更範囲が第１のレベルＩＩサブセットのデータ変更範囲と重なり合うかどうかを判定すること、
Ｓ１０３０：第２のトランザクション・データのデータ変更範囲が第１のレベルＩＩサブセットのデータ変更範囲と重なり合う場合、第２のトランザクション・データを第１のレベルＩＩサブセットに加えること、および
Ｓ１０３１：第２のトランザクション・データのデータ変更範囲が第１のレベルＩＩサブセットのデータ変更範囲と重なり合わない場合、第２のトランザクション・データを備える第２のレベルＩＩサブセットを作成することを備えてよく、
第１のレベルＩサブセットは、レベルＩサブセットのうちのいずれかのレベルＩサブセットであり、第２のトランザクション・データは、第１のレベルＩサブセットの中のトランザクション・データのうちのいずれかであり、第１のレベルＩＩサブセットは、第１のレベルＩサブセットのうちのいずれかのレベルＩＩサブセットであり、かつ第２のレベルＩＩサブセットは、第１のレベルＩＩサブセットとは異なる。
【００５８】
レベルＩサブセットからレベルＩＩサブセットを分割するプロセスは、番号（ＩＩ）において説明されるトランザクション・セットからトランザクション・サブセットを分割するプロセスおよび原理と類似し、このことは、ここで詳述されることはない。
【００５９】
前述の実施プロセスが、トランザクション・サブセットの分割のために使用された後、トランザクション・サブセットは、ブロックチェーンに実行結果を書き込むブロックチェーン・トランザクション・データの実行プロセスを完了すべく、並行に実行されてよい。図４に示されるとおり、トランザクション・データ整理モジュールが、トランザクション・サブセットの分割を実現するように構成される。トランザクション・データ実行クラスタが、異なるトランザクション・サブセットの中のトランザクション・データを並行に実行し、トランザクション・データに対応するタイムスタンプにより、トランザクション・サブセット内のトランザクション・データを順次に実行し、次に、ブロックチェーンに実行結果を書き込んで、その結果、ブロックチェーン・データベース状態の整合性を確実にし、データ処理の実行効率を向上させるために要求される費用を低減し、かつ拡張性を向上させる。ブロックチェーンのブロックに実行結果が書き込まれるとき、トランザクション・データ実行クラスタによるトランザクション・データの実行の結果は、要約されてよく、次に、ブロックチェーンに書き込まれてよい。一例において、クラスタにおける指定された１つのコンピュータが、実行結果の要約を完成させてよい。
【００６０】
現行の技術において、イーサリアム・アプリケーションを例にとると、トランザクション・データは、トランザクション・データが実行されるとき、トランザクション・データの受信されたタイムスタンプにより並べ替えられ、次に、各トランザクション・データが実行された後、口座情報を更新すべく時間的順序で順次に実行が行われる。本出願の実施形態において、ブロックチェーンに書き込まれるべきトランザクション・データ（すなわち、ブロックチェーンによって受信されるトランザクション・データ）が獲得された後、トランザクション・データは、トランザクション・サブセットを形成すべくトランザクション・タイプおよび／またはデータ変更範囲により、まず分類されて、トランザクション依存関係を有さないトランザクション・データが異なるトランザクション・サブセットに分割され、かつトランザクション依存関係を有するトランザクション・データが同一のトランザクション・サブセットに入れられることをもたらす。トランザクション・データの分割、およびトランザクション・サブセットの判定は、図４に示されるトランザクション・データ整理モジュールによって実施されてよい。トランザクション・データ整理モジュールがトランザクション・データの分割を完了した後、トランザクション・データ整理モジュールは、データ処理のためにトランザクション・データ実行クラスタにおけるコンピュータにトランザクション・サブセットを配信してよい。トランザクション・データ実行クラスタにおける各コンピュータは、割り当てられたトランザクション・サブセットの中のトランザクション・データだけを実行し、ブロックチェーンにおける検証−実施−記録のプロセスに従ってブロックチェーンに実行結果を書き込む。例示的な実施例において、トランザクション・データ整理モジュールとトランザクション・データ実行クラスタは、トランザクション・データの受信、分類、配信、および実行の機能を実施し、トランザクション・データの実行結果を要約し、かつブロックチェーンに要約された実行結果を書き込むトランザクション実行クラスタとして合同で解釈されてもよい。
【００６１】
実施形態２
本出願の実施形態は、ブロックチェーンにトランザクション・データを書き込むための別の方法であって、
実行されるべき複数のトランザクション・データを獲得すること、
トランザクション・データのデータ変更範囲により、トランザクション依存関係を有さない第１のトランザクション・データを判定することであって、第１のトランザクション・データの間にトランザクション依存関係は存在しないこと、および
第１のトランザクション・データを並行に実行し、かつブロックチェーンに実行結果を書き込むことを備える方法をさらに提供する。
【００６２】
一例において、第１のトランザクション・データが判定されるとき、トランザクション・データのデータ変更範囲により、他のいずれのトランザクション・データの別のデータ変更範囲とも重なり合わないデータ変更範囲を有するトランザクション・データが、トランザクション依存関係を有さない第１のトランザクション・データとして判定されてよい。
【００６３】
獲得された複数のトランザクション・データは、以下のとおりであるものと想定する。
【００６４】
【表１】
0006928104.tif 000002
【００６５】
トランザクション・データのデータ変更範囲により、トランザクション・データ３、４、６、および８のデータ変更範囲は、他のいずれのトランザクション・データのデータ変更範囲とも重なり合わないことが見て取られることが可能である。したがって、これらのトランザクション・データの実行の順序は、データベース状態の整合性に影響を与えない。その結果、これらのトランザクション・データの並行実行は、データ処理の実行効率を向上させることに有利であり、その結果、データ処理の実行効率を向上させるために要求される費用を低減し、かつ拡張性を向上させる。
【００６６】
実施形態３
図５に示されるとおり、本出願によるブロックチェーンにトランザクション・データを書き込むための装置は、
ブロックチェーンに書き込まれるべき複数のトランザクション・データを獲得するように構成された獲得モジュール１０１と、
トランザクション・データのトランザクション・タイプおよび／またはデータ変更範囲により、トランザクション・データが属するトランザクション・サブセットを判定するように構成されたトランザクション・サブセット判定モジュール１０２であって、異なるトランザクション・サブセットに属するトランザクション・データの間にトランザクション依存関係は存在しない、トランザクション・サブセット判定モジュール１０２と、
トランザクション・サブセットを並行に実行し、かつブロックチェーンに実行結果を書き込むように構成されたデータ実行モジュール１０３と、を備えてよい。
【００６７】
本実施形態は、実施形態１におけるブロックチェーンにトランザクション・データを書き込むための方法に対応する装置である。実施形態１のすべての説明が、本実施形態に適用可能であり、このことは、ここで詳述されることはない。
【００６８】
実施形態４
本出願は、ブロックチェーン・トランザクション・データのトランザクション・サブセットを判定するための方法をさらに提供する。トランザクション・データは、この方法を使用して適度に分割されてよく、トランザクション依存関係を有さないトランザクション・データが並行に実行されることをもたらして、その結果、データ処理の実行効率を向上させるために要求される費用を低減し、かつ拡張性を向上させる。この方法は、
実行されるべき複数のトランザクション・データが獲得された後、トランザクション・データが属するトランザクション・サブセットが、トランザクション・サブセットを並行に実行するために、トランザクション・データのトランザクション・タイプおよび／またはデータ変更範囲により判定されることであって、異なるトランザクション・サブセットに属するトランザクション・データの間にトランザクション依存関係は存在しないことを備える。
【００６９】
一例において、トランザクション・データのトランザクション・タイプおよび／またはデータ変更範囲により、トランザクション・データが属するトランザクション・サブセットを判定することは、
トランザクション・データのデータ属性により、トランザクション・データが属するトランザクション・サブセットを判定することであって、データ属性は、トランザクション・データのトランザクション・タイプおよび／またはデータ変更範囲と対応関係を有し、かつデータ属性は、トランザクション・データのトランザクション依存関係を反映させるために使用されることを備えてよい。
【００７０】
さらに、トランザクション・データのトランザクション・タイプにより、トランザクション・データが属するトランザクション・サブセットを判定することは、トランザクション・データのトランザクション・タイプにより、同一のトランザクション・タイプのトランザクション・データを同一のトランザクション・サブセットに入れ、かつ異なるトランザクション・タイプのトランザクション・データを異なるトランザクション・サブセットに分割することを備えてよい。
【００７１】
トランザクション・データのデータ変更範囲により、トランザクション・データが属するトランザクション・サブセットを判定することは、トランザクション・データのデータ変更範囲により、重なり合うデータ変更範囲を有するトランザクション・データを同一のトランザクション・サブセットに入れ、かつ重なり合わないデータ変更範囲を有するトランザクション・データを異なるトランザクション・サブセットに分割することを備えてよい。
【００７２】
トランザクション・データのトランザクション・タイプおよびデータ変更範囲により、トランザクション・データが属するトランザクション・サブセットを判定することは、
トランザクション・データのトランザクション・タイプにより、トランザクション・データが属するレベルＩサブセットを判定すること、および
レベルＩサブセットの中のトランザクション・データのデータ変更範囲により、トランザクション・データが属するレベルＩＩサブセットを判定し、かつレベルＩＩサブセットをトランザクション・サブセットとして使用することであって、レベルＩＩサブセットは、レベルＩサブセットのサブセットであることをさらに備えてよい。
【００７３】
実施形態１におけるステップＳ１０２に対応する本実施形態の詳細な実施、および実施形態１のすべての関係のある説明が、本実施形態に適用可能であり、このことは、ここで詳述されることはない。
【００７４】
本発明の実施形態は、方法、システム、またはコンピュータ・プログラム製品として提供されてよいことが当業者には理解されよう。したがって、本発明は、完全なハードウェア実施形態として実施されても、完全なソフトウェア実施形態として実施されても、またはソフトウェアとハードウェアを組み合わせる実施形態として実施されてもよい。さらに、本発明は、コンピュータ使用可能なプログラム・コードを備える１つまたは複数のコンピュータ使用可能な記憶媒体（磁気ディスク・メモリ、ＣＤ−ＲＯＭ、光メモリ、その他を含むが、以上には限定されない）の上に実装されるコンピュータ・プログラム製品の形態であってよい。
【００７５】
本発明は、本発明の実施形態による方法、デバイス（システム）、およびコンピュータ・プログラム製品のフローチャートおよび／またはブロック図を参照して説明される。コンピュータ・プログラム命令が、フローチャートおよび／またはブロック図における各プロセスおよび／または各ブロック、ならびにフローチャートおよび／またはブロック図におけるプロセスおよび／またはブロックの組合せを実施するのに使用されてよいことを理解されたい。これらのコンピュータ・プログラム命令は、マシンを生成すべく汎用コンピュータ、専用コンピュータ、埋め込まれたプロセッサ、または他のプログラマブル・データ処理デバイスのプロセッサに与えられて、コンピュータ、または他のプログラマブル・データ処理デバイスのプロセッサによって実行される命令が、フローチャートにおける１つもしくは複数のプロセスにおいて、かつ／またはブロック図における１つもしくは複数のブロックにおいて指定される機能を実施するための装置を生成するようにさせる。
【００７６】
また、これらのコンピュータ・プログラム命令は、特定の様態で働くようにコンピュータまたは他のプログラマブル・データ処理デバイスに命令することができるコンピュータ可読メモリに記憶されてもよく、コンピュータ可読メモリに記憶された命令が、命令装置を含む製造品を生成するようにさせる。命令装置は、フローチャートにおける１つもしくは複数のプロセスにおいて、かつ／またはブロック図における１つもしくは複数のブロックにおいて指定される機能を実施する。
【００７７】
これらのコンピュータ・プログラム命令は、コンピュータまたは他のプログラマブル・データ処理デバイスにロードされてもよく、コンピュータまたは他のプログラマブル・デバイスの上で一連の動作ステップが実行されることをもたらして、その結果、コンピュータによって実施される処理を生成する。したがって、コンピュータまたは他のプログラマブル・デバイスの上で実行される命令は、フローチャートにおける１つもしくは複数のプロセスにおいて、かつ／またはブロック図における１つもしくは複数のブロックにおいて指定される機能を実施するためのステップを提供する。
【００７８】
通常の構成において、計算デバイスは、１つまたは複数のプロセッサ（ＣＰＵ）と、入出力インターフェースと、ネットワーク・インターフェースと、メモリとを含む。
【００７９】
メモリは、揮発性メモリ、ランダム・アクセス・メモリ（ＲＡＭ）、および／または不揮発性メモリ、例えば、読取り専用メモリ（ＲＯＭ）もしくはフラッシュ・メモリ（フラッシュＲＡＭ）などのコンピュータ可読媒体を含んでよい。メモリは、コンピュータ可読媒体の例である。
【００８０】
コンピュータ可読媒体は、任意の方法または技術を通して情報記憶を実施することができる永久媒体、揮発性媒体、可動の媒体、および固定の媒体を含む。情報は、コンピュータ可読命令、データ構造、プログラム・モジュール、または他のデータであってよい。コンピュータの記憶媒体の例は、計算デバイスがアクセスできる情報を記憶するために使用されることが可能な、相変化ランダム・アクセス・メモリ（ＰＲＡＭ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）、他のタイプのランダム・アクセス・メモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、電気的に消去可能なプログラマブル読取り専用メモリ（ＥＥＰＲＯＭ）、フラッシュ・メモリもしくは他のメモリ技術、コンパクト・ディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル・バーサタイル・ディスク（ＤＶＤ）もしくは他の光メモリ、カセット、カセット・メモリおよびディスク・メモリ、または他の磁気メモリ・デバイス、あるいは他の任意の非伝送媒体を含むが、以上には限定されない。本明細書における定義によれば、コンピュータ可読媒体は、変調されたデータ信号および搬送波などの過渡的媒体（過渡的媒体）を含まない。
【００８１】
「含む」、「備える」という術語、またはこれらの術語の他の任意の変形は、非排他的に含むことを包含することを意図しており、一連の要素を備えるプロセス、方法、品物、またはデバイスが、これらの要素を備えるだけでなく、明確にリストアップされない他の要素も備えるようにする、またはそのプロセス、方法、品物、またはデバイスに本来的である要素をさらに備えるようにすることにさらに留意されたい。さらなる制限が存在しないとき、「１つの．．．を備える」という言明によって定義される要素は、前述の要素を備えるプロセス、方法、品物、またはデバイスが、追加の同一の要素をさらに備えることを排除しない。
【００８２】
本出願の実施形態は、方法、システム、またはコンピュータ・プログラム製品として提供されてよいことが当業者には理解されよう。したがって、本出願は、完全なハードウェア実施形態として実施されても、完全なソフトウェア実施形態として実施されても、またはソフトウェアとハードウェアを組み合わせる実施形態として実施されてもよい。さらに、本出願は、コンピュータ使用可能なプログラム・コードを備える１つまたは複数のコンピュータ使用可能な記憶媒体（磁気ディスク・メモリ、ＣＤ−ＲＯＭ、光メモリ、その他を含むが、以上には限定されない）の上に実装されるコンピュータ・プログラム製品の形態であってよい。
【００８３】
前述したことは、本出願を限定するのに使用されない、本出願の実施形態に過ぎない。当業者には、本出願は、様々な変形および変更を有してよい。本出願の思想および原理の範囲内で行われるいずれの変形、均等の置換、または改良も、本出願の特許請求の範囲によって包含されるものとする。
【図１】
0006928104.tif 000003
【図２】
0006928104.tif 000004
【図３】
0006928104.tif 000005
【図４】
0006928104.tif 000006
【図５】
0006928104.tif 000007