(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-02-15
(54)【発明の名称】暗号通貨トランザクションに関する損益計算
(51)【国際特許分類】
G06Q 20/38 20120101AFI20220207BHJP
【FI】
G06Q20/38 310
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2021536081
(86)(22)【出願日】2019-12-19
(85)【翻訳文提出日】2021-08-18
(86)【国際出願番号】 US2019067616
(87)【国際公開番号】W WO2020132330
(87)【国際公開日】2020-06-25
(32)【優先日】2018-12-20
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-08-19
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-08-19
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】518415314
【氏名又は名称】ルッカ,インコーポレイテッド
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】ヴァディム・シュタインバーグ
(72)【発明者】
【氏名】アレクサンダー・ザハロフ
【テーマコード(参考)】
5L055
【Fターム(参考)】
5L055AA71
(57)【要約】
暗号通貨トランザクションに関する損益計算のためのシステムおよび方法。例示的な方法は、1つまたは複数の暗号通貨取引アカウントに関連する複数の会計の境界のうちの1つの会計の境界に関連する複数の暗号通貨取引トランザクションを特定するステップであって、複数の暗号通貨取引トランザクションの各暗号通貨取引トランザクションが、暗号通貨取得トランザクションまたは暗号通貨売却トランザクションのうちの1つによって表される、ステップと、所与のトランザクションの境界に関して、トランザクションの境界に関連するトランザクションバケットのシーケンスのトランザクションバケットに、トランザクションの境界に関連する各暗号通貨取引トランザクションを割り振るステップであって、トランザクションバケットが、開始時間および終了時間によって特定され、トランザクションバケットが、暗号通貨取引トランザクションのタイムスタンプが開始時間と終了時間との間に入るようにタイムスタンプに基づいて選択される、ステップと、所与のトランザクションバケットに関して、所与のトランザクションバケットに関連する各暗号通貨売却トランザクションを、所与のトランザクションバケットに関連する1つまたは複数の暗号通貨取得トランザクションにマッチングするステップと、マッチングされたトランザクションの各々に関して、対応する法定通貨のトランザクションの量を決定するステップと、法定通貨のトランザクションの量を使用して、暗号通貨売却トランザクションに関連する利益、または暗号通貨売却トランザクションに関連する損失のうちの1つを計算するステップとを含む。
【特許請求の範囲】
【請求項1】
1つまたは複数の暗号通貨取引アカウントに関連する複数の会計の境界のうちの1つの会計の境界に関連する複数の暗号通貨取引トランザクションを特定するステップであって、前記複数の暗号通貨取引トランザクションの各暗号通貨取引トランザクションが、暗号通貨取得トランザクションまたは暗号通貨売却トランザクションのうちの1つによって表される、ステップと、
所与のトランザクションの境界に関して、前記トランザクションの境界に関連するトランザクションバケットのシーケンスのトランザクションバケットに、前記トランザクションの境界に関連する各暗号通貨取引トランザクションを割り振るステップであって、前記トランザクションバケットが、開始時間および終了時間によって特定され、前記トランザクションバケットが、前記暗号通貨取引トランザクションのタイムスタンプが前記開始時間と前記終了時間との間に入るように前記タイムスタンプに基づいて選択される、ステップと、
所与のトランザクションバケットに関して、前記所与のトランザクションバケットに関連する各暗号通貨売却トランザクションを、前記所与のトランザクションバケットに関連する1つまたは複数の暗号通貨取得トランザクションにマッチングするステップと、
前記マッチングされたトランザクションの各々に関して、対応する法定通貨のトランザクションの量を決定するステップと、
前記法定通貨のトランザクションの量を使用して、前記暗号通貨売却トランザクションに関連する利益、または前記暗号通貨売却トランザクションに関連する損失のうちの1つを計算するステップと
を含む、方法。
【請求項2】
前記会計の境界に関連する前記複数の暗号通貨取引トランザクションを特定するステップが、
正規化されたトランザクションレコードに1つまたは複数の境界定義規則を適用すること
をさらに含む、請求項1に記載の方法。
【請求項3】
各境界定義規則が、前記正規化されたトランザクションレコードの1つまたは複数のフィールドの値と対応する所定の値とを比較することによって、会計の境界の識別子を生成する、請求項2に記載の方法。
【請求項4】
前記トランザクションバケットのすべての取得トランザクションが売却トランザクションにマッチングされており、売却トランザクションが前記トランザクションバケットに残っていないとの判定に応じて、トランザクションバケットからの前記シーケンスから後続のトランザクションバケットを選択するステップ
をさらに含む、請求項1に記載の方法。
【請求項5】
前記トランザクションバケットの少なくとも1つの取得トランザクションが売却トランザクションに完全にマッチングされておらず、売却トランザクションが前記トランザクションバケットに残っていないとの判定に応じて、トランザクションバケットからの前記シーケンスからの後続のトランザクションバケットに前記少なくとも1つの取得トランザクションのマッチングされていない量を追加するステップ
をさらに含む、請求項1に記載の方法。
【請求項6】
前記トランザクションバケットの少なくとも1つの売却トランザクションが取得トランザクションに完全にマッチングされていないとの判定に応じて、例外を発生させるステップ
をさらに含む、請求項1に記載の方法。
【請求項7】
前記選択された暗号通貨売却トランザクションを前記暗号通貨取得トランザクションとマッチングするステップが、
それぞれの選択された暗号通貨取得トランザクションのタイムスタンプが、前記選択された暗号通貨売却トランザクションのタイムスタンプ未満となるように、前記複数の暗号通貨取得トランザクションから、前記1つまたは複数の暗号通貨取得トランザクションを選択するステップと、
前記1つまたは複数の暗号通貨取得トランザクションのうちの暗号通貨取得トランザクションを選択するステップと、
前記選択された暗号通貨取得トランザクションの量が、前記選択された暗号通貨売却トランザクションの量とマッチングされた暗号通貨取得トランザクションの現在までの合計の量との間の差以下であるとの判定に応じて、マッチングされた暗号通貨取得トランザクションの前記現在までの合計の量に、前記選択された暗号通貨取得トランザクションの前記量を足すステップと
をさらに含む、請求項1に記載の方法。
【請求項8】
前記選択された暗号通貨売却トランザクションの前記量が、マッチングされた暗号通貨取得トランザクションの前記現在までの合計の量を超えるとの判定に応じて、前記1つまたは複数の暗号通貨取得トランザクションから次の暗号通貨取得トランザクションを選択するステップ
をさらに含む、請求項7に記載の方法。
【請求項9】
前記選択された暗号通貨取得トランザクションの量が、前記選択された暗号通貨売却トランザクションの前記量とマッチングされた暗号通貨取得トランザクションの前記現在までの合計の量との間の前記差を超えるとの判定に応じて、前記選択された暗号通貨売却トランザクションの前記量と、マッチングされた暗号通貨取得トランザクションの前記現在までの合計の量との間の前記差だけ、前記選択された暗号通貨取得トランザクションの前記量を削減するステップ
をさらに含む、請求項7に記載の方法。
【請求項10】
前記所与のトランザクションバケットから次の暗号通貨売却トランザクションを選択するステップ
をさらに含む、請求項9に記載の方法。
【請求項11】
前記法定通貨のトランザクションの量が、前記トランザクションによって特定された暗号通貨の法定通貨の価格に基づき、前記法定通貨の価格が、前記トランザクションのタイムスタンプによって特定されたときに有効であった、請求項1に記載の方法。
【請求項12】
前記利益を計算するステップが、
前記選択された1つまたは複数の暗号通貨取得トランザクションのサブセットの前記法定通貨のトランザクションの量と、前記選択された暗号通貨売却トランザクションの前記法定通貨のトランザクションの量とを合計するステップ
をさらに含む、請求項1に記載の方法。
【請求項13】
前記暗号通貨売却トランザクションに関連する前記利益、または前記暗号通貨売却トランザクションに関連する前記損失のうちの1つを反映するレポートを生成するステップ
をさらに含む、請求項1に記載の方法。
【請求項14】
前記暗号通貨売却トランザクションに関連する前記利益、または前記暗号通貨売却トランザクションに関連する前記損失のうちの1つを反映する電子的な税務会計フォームを生成するステップと、
グラフィカルユーザインターフェースを介して、前記電子的な税務会計フォームの承認を受け取ることに応じて、前記電子的な税務会計フォームにデジタル署名をするステップと、
電子的な税務フォームの提出を受け付けるように認証されているサーバに、前記電子的な税務会計フォームをアップロードするステップと
をさらに含む、請求項1に記載の方法。
【請求項15】
システムであって、
メモリと、
前記メモリに結合されたプロセッサとを備え、前記プロセッサが、
1つまたは複数の暗号通貨取引アカウントに関連する複数の会計の境界のうちの1つの会計の境界に関連する複数の暗号通貨取引トランザクションを特定することであって、前記複数の暗号通貨取引トランザクションの各暗号通貨取引トランザクションが、暗号通貨取得トランザクションまたは暗号通貨売却トランザクションのうちの1つによって表される、特定すること、
所与のトランザクションの境界に関して、前記トランザクションの境界に関連するトランザクションバケットのシーケンスのトランザクションバケットに、前記トランザクションの境界に関連する各暗号通貨取引トランザクションを割り振ることであって、前記トランザクションバケットが、開始時間および終了時間によって特定され、前記トランザクションバケットが、前記暗号通貨取引トランザクションのタイムスタンプが前記開始時間と前記終了時間との間に入るように前記タイムスタンプに基づいて選択される、割り振ること、
所与のトランザクションバケットに関して、前記所与のトランザクションバケットに関連する各暗号通貨売却トランザクションを、前記所与のトランザクションバケットに関連する1つまたは複数の暗号通貨取得トランザクションにマッチングすること、
前記マッチングされたトランザクションの各々に関して、対応する法定通貨のトランザクションの量を決定すること、ならびに
前記法定通貨のトランザクションの量を使用して、前記暗号通貨売却トランザクションに関連する利益、または前記暗号通貨売却トランザクションに関連する損失のうちの1つを計算すること
を行うように構成される、システム。
【請求項16】
前記選択された暗号通貨売却トランザクションを前記暗号通貨取得トランザクションとマッチングすることが、
それぞれの選択された暗号通貨取得トランザクションのタイムスタンプが、前記選択された暗号通貨売却トランザクションのタイムスタンプ未満となるように、前記複数の暗号通貨取得トランザクションから、前記1つまたは複数の暗号通貨取得トランザクションを選択することと、
前記1つまたは複数の暗号通貨取得トランザクションのうちの1つの暗号通貨取得トランザクションを選択することと、
前記選択された暗号通貨取得トランザクションの量が、前記選択された暗号通貨売却トランザクションの量と、マッチングされた暗号通貨取得トランザクションの現在までの合計の量との間の差以下であるとの判定に応じて、マッチングされた暗号通貨取得トランザクションの前記現在までの合計の量に、前記選択された暗号通貨取得トランザクションの前記量を足すことと
をさらに含む、請求項15に記載のシステム。
【請求項17】
前記プロセッサが、
前記暗号通貨売却トランザクションに関連する前記利益、または前記暗号通貨売却トランザクションに関連する前記損失のうちの1つを反映する電子的な税務会計フォームを生成し、
グラフィカルユーザインターフェースを介して、前記電子的な税務会計フォームの承認を受け取ることに応じて、前記電子的な税務会計フォームにデジタル署名をし、
電子的な税務フォームの提出を受け付けるように認証されているサーバに、前記電子的な税務会計フォームをアップロードする
ようにさらに構成される、請求項15に記載のシステム。
【請求項18】
実行可能な命令を含む、非一時的コンピュータ可読記憶媒体であって、前記実行可能な命令は、コンピューティングシステムによって実行されるときに、前記コンピューティングシステムに、
1つまたは複数の暗号通貨取引アカウントに関連する複数の会計の境界のうちの1つの会計の境界に関連する複数の暗号通貨取引トランザクションを特定することであって、前記複数の暗号通貨取引トランザクションの各暗号通貨取引トランザクションが、暗号通貨取得トランザクションまたは暗号通貨売却トランザクションのうちの1つによって表される、特定すること、
所与のトランザクションの境界に関して、前記トランザクションの境界に関連するトランザクションバケットのシーケンスのトランザクションバケットに、前記トランザクションの境界に関連する各暗号通貨取引トランザクションを割り振ることであって、前記トランザクションバケットが、開始時間および終了時間によって特定され、前記トランザクションバケットが、前記暗号通貨取引トランザクションのタイムスタンプが前記開始時間と前記終了時間との間に入るように前記タイムスタンプに基づいて選択される、割り振ること、
所与のトランザクションバケットに関して、前記所与のトランザクションバケットに関連する各暗号通貨売却トランザクションを、前記所与のトランザクションバケットに関連する1つまたは複数の暗号通貨取得トランザクションにマッチングすること、
マッチングされたトランザクションの各々に関して、対応する法定通貨のトランザクションの量を決定すること、ならびに
前記法定通貨のトランザクションの量を使用して、前記暗号通貨売却トランザクションに関連する利益、または前記暗号通貨売却トランザクションに関連する損失のうちの1つを計算すること
を行わせる、非一時的コンピュータ可読記憶媒体。
【請求項19】
前記選択された暗号通貨売却トランザクションを前記暗号通貨取得トランザクションとマッチングすることが、
それぞれの選択された暗号通貨取得トランザクションのタイムスタンプが、前記選択された暗号通貨売却トランザクションのタイムスタンプ未満となるように、前記複数の暗号通貨取得トランザクションから、前記1つまたは複数の暗号通貨取得トランザクションを選択することと、
前記1つまたは複数の暗号通貨取得トランザクションのうちの1つの暗号通貨取得トランザクションを選択することと、
前記選択された暗号通貨取得トランザクションの量が、前記選択された暗号通貨売却トランザクションの量と、マッチングされた暗号通貨取得トランザクションの現在までの合計の量との間の差以下であるとの判定に応じて、マッチングされた暗号通貨取得トランザクションの前記現在までの合計の量に、前記選択された暗号通貨取得トランザクションの前記量を足すことと
をさらに含む、請求項18に記載の非一時的コンピュータ可読記憶媒体。
【請求項20】
コンピューティングシステムによって実行されるときに、前記コンピューティングシステムに、
前記暗号通貨売却トランザクションに関連する前記利益、または前記暗号通貨売却トランザクションに関連する前記損失のうちの1つを反映する電子的な税務会計フォームを生成させ、
グラフィカルユーザインターフェースを介して、前記電子的な税務会計フォームの承認を受け取ることに応じて、前記電子的な税務会計フォームにデジタル署名をさせ、
電子的な税務フォームの提出を受け付けるように認証されているサーバに、前記電子的な税務会計フォームをアップロードさせる
実行可能な命令をさらに含む、請求項18に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、コンピューティングシステムに関し、特に、暗号通貨トランザクションに関する損益計算のための方法およびシステムに関する。
【背景技術】
【0002】
本明細書における「暗号通貨」は、交換の手段として利用されるデジタル資産を指し、典型的な暗号通貨は、新しい暗号通貨単位の生成を制御し、交換トランザクションを検証するために強力な暗号技術を使用する。暗号通貨における特定のトランザクションは、関連する法律によって定義されるような課税対象のイベントを表す可能性がある。
【0003】
本開示は、限定としてではなく、例として図示され、図に関連して考察されるとき、下の詳細な説明を参照するとより完全に理解され得る。
【図面の簡単な説明】
【0004】
【
図1】本開示の1つまたは複数の態様による暗号通貨トランザクションに関する損益計算に関する例示的なワークフローを概略的に示す図である。
【
図2】本開示の1つまたは複数の態様による正規化された(normalized)トランザクションレコードを記憶するための例示的なデータ構造を概略的に示す図である。
【
図3】本開示の1つまたは複数の態様による会計の境界(accounting perimeter)の例示的な組を概略的に示す図である。
【
図4】本開示の1つまたは複数の態様によるトランザクションバケット(transaction bucket)の例示的なシーケンスを概略的に示す図である。
【
図5】本開示の1つまたは複数の態様による売却トランザクションおよび取得トランザクションのマッチングに関する例示的なワークフローを概略的に示す図である。
【
図6A】本開示の1つまたは複数の態様によるマッチングされた取得トランザクションのサブセットに次の取得トランザクションを付け加えることを概略的に示す図である。
【
図6B】本開示の1つまたは複数の態様によるマッチングされた取得トランザクションのサブセットに次の取得トランザクションを付け加えることを概略的に示す図である。
【
図7A】本開示の1つまたは複数の態様による暗号通貨トランザクションに関する損益計算の例示的な方法の流れ図である。
【
図7B】本開示の1つまたは複数の態様による暗号通貨トランザクションに関する損益計算の例示的な方法の流れ図である。
【
図8】本開示の1つまたは複数の態様による売却トランザクションおよび取得トランザクションのマッチングの例示的な方法の流れ図である。
【
図9】本開示の1つまたは複数の態様によって動作する例示的なワイヤレス照明制御ネットワークノードの構成要素の図を概略的に示す図である。
【発明を実施するための形態】
【0005】
本明細書において説明されるのは、暗号通貨トランザクションに関する損益計算のためのシステムおよび方法である。
【0006】
暗号資産の売却などの暗号通貨における特定のトランザクションは、課税対象のイベントを表す可能性がある。通常、課税規則は法域に依存するが、資産売却トランザクションは、通常、損益の具現化をともない、損益の具現化は、概して、たとえば、米国を含む様々な法域において、課税対象のイベントを表す。
【0007】
所与の1組の暗号通貨トランザクションに関連する損益を計算するために、本明細書において説明されるシステムおよび方法を実装するコンピューティングシステムは、1つまたは複数の暗号通貨取引プラットフォームに関連する1つまたは複数の暗号通貨アカウントを介して1人の人(たとえば、自然人もしくは法人)または関連する人のグループによって実行される暗号通貨取引および送金に関連するトランザクションレコードを受信する可能性がある。トランザクションレコードの生の組は、暗号通貨取引プラットフォームからおよび/または1つもしくは複数の顧客会計プラットフォームから受信される可能性がある。
【0008】
その後、コンピューティングシステムは、受信された生のトランザクションレコードを解析する可能性がある。抽出されたトランザクション情報に基づいて、コンピューティングシステムは、分析されているトランザクションレコードによって運ばれるトランザクションの種類、量、通貨、タイムスタンプ、およびその他の関連する情報を判定する可能性がある。様々な説明のための例において、トランザクションの種類は、取得トランザクション、売却トランザクション、預け入れトランザクション、引き出しトランザクション、料金支払いトランザクション、および/または様々なその他の種類を含む。
【0009】
コンピューティングシステムは、受信された生のトランザクションレコードを、後続の処理のために最適化された所定のフォーマットに準拠する1組の正規化されたアトミックな(atomic)トランザクションレコードに変換する可能性がある。説明のための例において、それぞれのアトミックなトランザクションレコードは、送り元アカウント識別子、送り先アカウント識別子、資産識別子、(たとえば、取得トランザクションの正の値および売却トランザクションに関する負の値によって表される)トランザクションの量、ならびにタイムスタンプを含む。
【0010】
そして、コンピューティングシステムは、境界を越えるトランザクションのみが損益計算の目的のために考慮されるように、各トランザクションレコードを(たとえば、アカウント、サブアカウント、および/またはその他のトランザクションの属性によって形成される)1つまたは複数の会計の境界に割り振る可能性がある。最も簡単な例においては、すべての顧客のアカウントが、単一の会計の境界を形成すると考えられる可能性があり、したがって、2つの顧客のアカウントの間で資産を転送するいかなるトランザクションも、境界を越えるトランザクションと考えられず、そのため、損益計算から除外される。様々なその他の説明のための例において、顧客は、会計の境界が少なくとも部分的に交わっているおよび/または入れ子にされる可能性があるように、サブアカウントおよび/またはその他のトランザクションの属性に基づいて複数の会計の境界を定義する可能性がある。
【0011】
それぞれの会計の境界に関して、コンピューティングシステムは、所与の会計期間の継続期間(たとえば、1ヶ月、1四半期、1年など)に関して、特定の資産に関連し、かつ、特定の会計の境界に関連する1組のトランザクションがトランザクションバケットのシーケンスに分割されるように、所定の会計期間の継続期間に基づいて形成されるトランザクションバケットのシーケンスの対応するトランザクションバケットにトランザクションを関連付ける可能性があり、各バケットは、バケットの開始時間とバケットの終了時間との間に入るトランザクションのそれぞれのタイムスタンプを有するトランザクションのサブセットを記憶する。したがって、バケットの別々のシーケンスが、資産識別子と、境界識別子と、会計期間の継続期間とのそれぞれの組合せに関して生成される。
【0012】
その後、1つまたは複数の取得トランザクションがそれぞれの売却トランザクションにマッチングされるように、バケット毎に、バケットの各シーケンス内のトランザクションが処理される可能性があり、マッチングされた取得トランザクションは、少なくとも1つの部分的トランザクションを含む可能性がある。各売却トランザクションおよびマッチングされた取得トランザクションに関して、本明細書において以下でより詳細に説明されるように、結果として得られる損益が計算される可能性がある。
【0013】
したがって、本開示は、本明細書において以下でより詳細に説明される暗号通貨トランザクションに関する損益計算の効率的な方法を提供する。本明細書において説明されるシステムおよび方法は、ハードウェア(たとえば、汎用および/もしくは専用処理デバイス、ならびに/またはその他のデバイスおよび関連する回路)、ソフトウェア(たとえば、処理デバイスによって実行可能な命令)、あるいはこれらの組合せによって実装される可能性がある。上述の方法およびシステムの様々な態様は、限定としてではなく例として本明細書において下で詳細に説明される。
【0014】
図1は、暗号通貨トランザクションに関する損益を計算するための例示的なワークフロー100を概略的に示す。
図1によって概略的に示されるように、本明細書において説明されるシステムおよび方法を実装するコンピューティングシステムは、1つまたは複数の暗号通貨取引プラットフォームに関連する1つまたは複数の暗号通貨アカウントを介して1人の人または関連する人のグループによって実行される暗号通貨取引および送金に関連する生のトランザクションレコード110のストリームを受信する可能性がある。暗号通貨取引プラットフォームからおよび/または1つもしくは複数の顧客会計アプリケーションから受信される可能性があり、様々なフォーマットで現れる可能性がある生のトランザクションレコード110は、その後、トランザクション処理エンジン120によって処理される。トランザクション処理エンジン120は、1つもしくは複数の専用の仮想的もしくは物理的実行環境(たとえば、仮想もしくは物理サーバ)において実行されるかまたはその他のサーバもしくはアプリケーションと一緒に配置される1つまたは複数のソフトウェアモジュールによって実装される可能性がある。トランザクション処理エンジン120は、所与のトランザクションレコードから、トランザクションの送り元アカウントおよび送り先アカウント、トランザクションの量、トランザクションの資産、タイムスタンプを、ならびに/または様々なその他の情報を抽出する可能性があるパーサを実装する可能性がある。抽出された情報に基づいて、トランザクション処理エンジン120は、分析されているトランザクションレコードに関連するトランザクションの種類を決定する可能性がある。様々な説明のための例において、トランザクションの種類は、取得トランザクション、売却トランザクション、預け入れトランザクション、引き出しトランザクション、料金支払いトランザクション、および/または様々なその他の種類を含む。
【0015】
トランザクション処理エンジン120は、入力された生のトランザクションレコードをさらなる処理のために最適化された特定のフォーマットに準拠する1組の正規化されたアトミックなトランザクション130に変換することを含む可能性があるトランザクションレコードの前処理をさらに実行する可能性がある。それぞれの正規化されたトランザクションは、トランザクションのタイムスタンプによって特定される時間に記録された、送り元アカウントから送り先アカウントへの指定された資産の指定された量の転送を反映する可能性がある。
【0016】
図2によって概略的に示されるように、それぞれの正規化されたトランザクションレコード200は、送り元アカウント識別子210、送り先アカウント識別子220、資産識別子230、トランザクションの量240、およびタイムスタンプ250を含む可能性がある。トランザクションの量240は、取得トランザクションの正の値または売却トランザクションに関する負の値によって表される可能性がある。トランザクションレコード200は、1つもしくは複数のサブアカウント識別子および/またはその他のトランザクションの属性などの様々なその他のフィールド260を含む可能性がある。
【0017】
説明のための例において、トランザクションの前処理は、(たとえば、トランザクションレコードによって指定された資産識別子を資産識別子の辞書と比較することによって)資産識別子を検証することおよび正規化することをさらに含む可能性がある。別の説明のための例において、トランザクションの前処理は、様々なその他のトランザクションレコードのフィールドを検証することおよび/または修正すること(たとえば、サブアカウント識別子をアカウントの関連するチャートによって定義される1組のサブアカウントと比較すること、または特定のトランザクションレコードのフィールドによって指定された1つもしくは複数のトランザクションの属性を処理する規則を適用することによってサブアカウント識別子を割り振ること)をさらに含む可能性がある。
【0018】
正規化されたアトミックなトランザクションレコード130は、揮発性および/または不揮発性メモリに存在する1つまたは複数のファイルに記憶される可能性がある。生のトランザクションレコードを受信し、処理する動作は、周期的に繰り返される可能性があり、または特定のイベントによってトリガされる可能性がある。
【0019】
トランザクション処理エンジン120は、1つまたは複数の会計の境界140A~140Nにそれぞれの正規化されたアトミックなトランザクション130をさらに割り振る可能性がある。会計の境界は、各規則が特定のトランザクションレコードのフィールド(たとえば、アカウント識別子、サブアカウント識別子、および/またはその他のトランザクションの属性)の値を1つまたは複数の所定の値と比較し、トランザクションが割り振られるべき1つまたは複数の会計の境界の識別子を生成するような1組の規則によって定義される可能性がある。
図3によって概略的に示されるように、会計の境界は、交わる可能性があり、および/または互いに完全に入れ子にされる可能性がある。
図3の説明のための例において、外側の会計の境界300は、1つまたは複数の暗号通貨取引プラットフォーム上に顧客によって保有されるすべての暗号通貨取引アカウントに対応し、したがって、会計の境界310A~310Fの合併によって形成され、会計の境界310A~310Fの各々は、顧客によって保有される特定の暗号通貨取引アカウントに対応する。会計の境界320は、会計の境界310Bを形成する暗号通貨取引アカウントの特定のサブアカウントに対応し、したがって、会計の境界310Bに完全に入れ子にされる。会計の境界330は、会計の境界310Dおよび310Eを形成する暗号通貨取引アカウントによって実行される特定のトランザクションに対応し、したがって、会計の境界310Dおよび310Eの各々と部分的に交わる。
【0020】
本明細書において上で述べたように、単一の会計の境界内で起こるトランザクションは会計の境界を形成する1つまたは複数のアカウントによって保有される資産の合計の量に影響を与えず、したがって、その会計の境界に関する損益を生じると考えられ得ないので、境界を越えるトランザクションのみが損益計算の目的のために考慮されるべきである。逆に、少なくとも2つの会計の境界が入れ子にされるかまたは交わる場合、単一のトランザクションが、それらの境界の各々に割り振られる可能性がある。
図3の説明のための例において、トランザクション340Aは、会計の境界310Aを形成する暗号通貨取引アカウントから外側の会計の境界300の外の外部アカウントに資産を転送し、したがって、外側の会計の境界300および入れ子にされた会計の境界310Aに割り振られる。トランザクション340Bは、会計の境界310Bを形成する暗号通貨取引アカウントから会計の境界310Aを形成する暗号通貨取引アカウントに資産を転送し、したがって、会計の境界310Aおよび310Bに割り振られる。トランザクション340Cは、会計の境界320を形成する暗号通貨取引アカウントから会計の境界310Aを形成する暗号通貨取引アカウントに資産を転送し、したがって、会計の境界310A、310B、および320に割り振られる。トランザクション340Dは、会計の境界310Eを形成する暗号通貨取引アカウントから会計の境界310Dを形成する暗号通貨取引アカウントに資産を転送し、したがって、会計の境界310Dおよび310Eに割り振られるが、会計の境界330がトランザクション340Dの送り元および送り先を包含するので会計の境界330には割り振られない。トランザクション340Eは、会計の境界310Eを形成する暗号通貨取引アカウントから会計の境界330を形成する暗号通貨取引アカウントに資産を転送し、したがって、会計の境界310Eおよび330に割り振られる。トランザクション340Fは、会計の境界330を形成する暗号通貨取引アカウントから会計の境界310Dを形成する暗号通貨取引アカウントに資産を転送し、したがって、会計の境界310Dおよび330に割り振られる。トランザクション340Gは、会計の境界310Eを形成する暗号通貨取引アカウントから会計の境界330を形成する暗号通貨取引アカウントに資産を転送し、したがって、会計の境界310D、310E、および330に割り振られる。
【0021】
特に、トランザクションの量は、トランザクションの送り先であるアカウント(サブアカウント)によって形成される会計の境界に関して正である。逆に、トランザクションの量は、トランザクションの送り元であるアカウント(サブアカウント)によって形成される会計の境界に関して負である。
【0022】
それぞれの会計の境界に関して、トランザクション処理エンジン120は、トランザクションを所定の継続期間の2つ以上の会計期間に関連付ける可能性がある。
図4によって概略的に示されるように、所与の会計期間の継続期間(たとえば、1ヶ月、1四半期、1年など)に関して、各バケットが対応する会計期間内にあったトランザクションのサブセットを保有するように、特定の資産に関連し、かつ、特定の会計の境界に関連する1組のトランザクションが、バケット410A~410Nのシーケンス400に分割される可能性がある。したがって、所与の会計の境界に関して、各シーケンスが特定の会計期間の継続期間に対応するバケットを含むように、バケットの複数のシーケンスが生成される可能性がある。したがって、バケットの別々のシーケンスが、資産識別子と、境界識別子と、会計期間の継続期間とのそれぞれの組合せに関して生成される。
【0023】
その後、バケットの各シーケンス内のトランザクションが、トランザクションマッチングエンジン160によって処理される可能性があり、この処理は、各バケットに関して、1つまたは複数の取得トランザクションをそれぞれの売却トランザクションにマッチングする。トランザクションマッチングエンジン160は、1つもしくは複数の専用の仮想的もしくは物理的実行環境(たとえば、仮想もしくは物理サーバ)において実行されるかまたはその他のサーバもしくはアプリケーションと一緒に配置される1つまたは複数のソフトウェアモジュールによって実装される可能性がある。
【0024】
売却トランザクションが課税対象のイベントを表す可能性がある(つまり、損益が以前取得された暗号通貨資産の売却の結果として具現化される可能性がある)とき、売却トランザクションは、売却トランザクションが信用取引(margin trade)トランザクションでないかまたは基礎をなす資産が特定の種類のデリバティブ資産(たとえば、オプションもしくは先物契約)でない限り、売却トランザクションの前に発生した1つまたは複数の取得トランザクションとのみマッチングされる可能性がある。
【0025】
したがって、
図5によって概略的に示されるように、トランザクションマッチングエンジン160は、最も古いトランザクションから開始して売却トランザクションキュー150を走査し、各売却トランザクション510に関して(たとえば、売却トランザクション510Bに関して)、それぞれの特定された取得トランザクション550A~550Nのタイムスタンプが現在選択されている売却トランザクション510Bのタイムスタンプ未満であるように、取得トランザクションキュー140から取得トランザクション550A~550Nのサブセットを選択する可能性がある。
【0026】
特定の実装において、トランザクションキュー140および150は、優先度付きキュー(priority queue)抽象データ型を実装するデータ構造によって実装される可能性がある。優先度付きキューは、より高い優先度を有する要素がより低い優先度を有する要素の前に取り出されるような、要素の各々がその要素に関連する「優先度」の値を有する要素のリストである。優先度付きキュー抽象データ型は、親ノードPの優先度の値がノードPの子であるノードCの優先度の値以上である(または特定の実装によっては以下である)木に基づくデータ構造であるヒープによって実装される可能性がある。したがって、最も高い(または最も低い)優先度の要素は、常にヒープの根に記憶される。したがって、トランザクションキュー140および150は、要素の優先度がそれらの要素のそれぞれのタイムスタンプによって表されるヒープによって実装される可能性がある。
【0027】
トランザクションキュー140と150との両方がトランザクションのタイムスタンプの昇順にソートされるので、トランザクションマッチングエンジン160は、取得トランザクション550Xのタイムスタンプが現在選択されている売却トランザクション510Bのタイムスタンプ以上であるように取得トランザクション550Xが特定されるまで、最も古いトランザクションから開始して取得キュー140を走査する可能性がある。したがって、最も古いトランザクション550Aから始まり、(タイムスタンプが現在選択されている売却トランザクション510Bのタイムスタンプ以上である)特定されたトランザクション550Xに先立つトランザクション550Nを含む取得キュー140内のすべての取得トランザクション550A~550Nが、現在選択されている売却トランザクション510Bとマッチングするための候補取得トランザクションと考えられる可能性がある。
【0028】
計算の効率を高めるために、トランザクションマッチングエンジン160は、トランザクションマッチングエンジン160を実行するコンピュータシステムのランダムアクセスメモリ(RAM)に存在する可能性がある両端キュー(デック)530に特定された取得トランザクション550A~550Nを付け加える可能性があり、したがって、デック530内に取得トランザクション540K~540Rを生成する。本明細書の例示的な実装が両端キューを参照して説明されるが、双方向連結リスト(doubly linked list)(「二重連結リスト(double-linked list)」とも呼ばれる)、優先度付きキュー(たとえば、ヒープ)、または別の好適なデータ構造が、デック530の代わりに使用される可能性がある。双方向連結リストにおいて、それぞれのリストの要素は、リストの次の要素への参照(たとえば、リストを実装する配列へのポインタ、アドレスのオフセット、またはインデックス)およびリストの前の要素への参照を含む。
【0029】
デック530は、要素がキューの先頭かまたは末尾かのどちらかに/から追加される/削除される可能性があるキューによって表される可能性がある。デック530は、取得キュー140のソート順を維持する可能性があり、つまり、取得トランザクションのタイムスタンプの昇順にソートされた取得トランザクションを記憶する可能性がある。したがって、トランザクションマッチングプロセスは、マッチングされた取得トランザクションの現在までの合計の量をゼロ値によって初期化することと、1つまたは複数の完全なまたは部分的な取得トランザクションを、それらの合計の量が現在選択されている売却トランザクション510Bの量に等しくなるように特定するためにデック530を走査することとを含む可能性がある。
【0030】
説明のための例において、関連する会計規則は、所与の売却トランザクションとマッチングするために、まず最も新しい取得トランザクションを選択することを定める可能性がある(つまり、後入れ先出し(LIFO)マッチング規則)。したがって、トランザクションマッチングエンジン160は、デック530の末尾540から開始してデック530を走査する可能性がある。
【0031】
別の説明のための例において、関連する会計規則は、所与の売却トランザクションとマッチングするために、まず最も古い取得トランザクションを選択することを定める可能性がある(つまり、先入れ先出し(FIFO)マッチング規則)。したがって、トランザクションマッチングエンジン160は、デック530の先頭550から開始してデック530を走査する可能性がある。
【0032】
デック530を走査することは、走査順にしたがって次の利用可能な取得トランザクション540Mを選択することと、現在選択されている取得トランザクション540Mの量を、現在選択されている売却トランザクション510Bの量とマッチングされた取得トランザクション540K~540Lの現在までの合計の量との間の差と比較することとを含む可能性がある。
【0033】
図6Aに概略的に示されるように、現在選択されている取得トランザクション540Mの量が現在選択されている売却トランザクション510Bの量とマッチングされた取得トランザクション540K~540Lの現在までの合計の量との間の差310A以下であると分かったならば、トランザクション540Mは、マッチングされた取得トランザクションのサブセット550に追加される。したがって、現在選択されている取得トランザクション540Mの量が、マッチングされた取得トランザクション540K~540Lの現在までの合計の量に追加される。そのため、現在選択されている取得トランザクション540Mが、デック530から削除され、先頭のポインタ550が、デック530内のトランザクション540Mに続くトランザクションを指すように進められる。
【0034】
したがって、マッチング動作を実行した後のマッチングされた取得トランザクション540K~540Mの合計の量が現在選択されている売却トランザクション510Bの量に達しないならば、デック530の現在の取得トランザクションのポインタが、次の取得トランザクションを指すように進められ、次のマッチングの反復が、次の取得トランザクションに関して実行される。そうではなく、マッチング動作を実行することがマッチングされた取得トランザクション540K~540Mの現在までの合計の量を現在選択されている売却トランザクション510Bの量と等しくするならば、売却キュー150の現在のトランザクションのポインタが、次の売却トランザクション510Cを指すように進められ、マッチング動作が、次の売却トランザクション510Cに関して実行される。
【0035】
逆に、
図6Bによって概略的に示されるように、現在選択されている取得トランザクション540Mの量が、現在選択されている売却トランザクション510Bの量とマッチングされた取得トランザクション540K~540Lの現在までの合計の量との間の差を超えると分かったならば、トランザクション540Mの量が、第1の部分の量が現在選択されている売却トランザクション510Bの量とマッチングされた取得トランザクション540K~540Lの現在までの合計の量との間の差310Bに等しい一方、第2の部分の量がトランザクション540Mの最初の量の残りと等しいように2つの部分に分割されることによって削減される。したがって、トランザクション540Mの第1の部分の量が、マッチングされた取得トランザクション540K~540Lの現在までの合計の量に追加され、現在選択されている取得トランザクション540Mの量が、現在選択されている売却トランザクション510Bの量とマッチングされた取得トランザクション540K~540Lの現在までの合計の量との間の差だけ削減される。そのため、修正されたトランザクション540M
*が、デック530に残され、先頭のポインタ550が、修正されたトランザクション540M
*を指すように進められる。
【0036】
したがって、マッチング動作を実行した後のマッチングされた取得トランザクション540K~540Mの合計の量が現在選択されている売却トランザクション510Bの量に達しないならば、次の取得トランザクション520Nが、マッチングされていない取得トランザクションを記憶するデータ構造から選択され、次のマッチングの反復が、次の取得トランザクションに関して実行される。
【0037】
そうではなく、マッチング動作を実行することが、マッチングされた取得トランザクション540K~540Mの現在までの合計の量を現在選択されている売却トランザクション510Bの量と等しくするならば、現在のバケット内のすべての売却トランザクションが処理されるまで、次の売却トランザクションが、マッチングのために選択され、マッチング動作が、新たに選択された売却トランザクションに関して実行される。
【0038】
したがって、トランザクションのバケットの処理の3つの起こり得る結果、すなわち、(a)すべての取得トランザクションが売却トランザクションにマッチングされ、売却トランザクションがバケットに残っていない、(b)1つまたは複数の少なくとも部分的にマッチングされていない取得トランザクションがバケットに残っており、一方、売却トランザクションはバケットに残っていない、および(c)すべての取得トランザクションが売却トランザクションにマッチングされたが、1つまたは複数の少なくとも部分的にマッチングされていない売却トランザクションがバケットに残っているという起こり得る結果がある、
【0039】
結果(a)は、現在のトランザクションのバケットが完全に処理されたこと(マッチングされていない量=0)を示し、トランザクションマッチングエンジン160は、トランザクションバケットのシーケンスからの次のトランザクションバケットの処理に進む可能性がある。再び
図4を参照すると、結果(a)が、シーケンス402によって概略的に示される。
【0040】
結果(b)は、現在のトランザクションバケットからのすべての売却トランザクションが完全に処理されたことを示す。残りの取得トランザクションは、トランザクションマッチングエンジン160によって処理されるように次のトランザクションバケットに付け加えられる可能性がある。再び
図4を参照すると、結果(b)が、シーケンス404によって概略的に示される。
【0041】
結果(c)は、売却トランザクションが信用取引トランザクションでないかまたは基礎をなす資産が特定の種類のデリバティブ資産(たとえば、オプションもしくは先物契約)でない限り、すべての売却トランザクションが売却トランザクションの前に起こった1つまたは複数の取得トランザクションとマッチングされるべきであるので、現在のトランザクションバケットが誤ったまたは不完全なトランザクションデータを含むことを示す。したがって、トランザクションバケットのすべての取得トランザクションがマッチングされた一方で、マッチングされていない売却トランザクションが存在することは、現在のトランザクションバケットが誤った(1つもしくは複数のトランザクションの誤った量)または不完全な(たとえば、なくなった取得トランザクション)トランザクションデータを含むことを示す。再び
図4を参照すると、結果(c)が、シーケンス406によって概略的に示される。
【0042】
したがって、すべての取得トランザクションが売却トランザクションにマッチングされるが、1つまたは複数の少なくとも部分的にマッチングされていない売却トランザクションがバケットに残っているとの判定に応じて、トランザクション処理エンジンは、例外を発生させる可能性があり、例外は、様々な方法で処理される可能性がある。説明のための例においては、エラーメッセージが、グラフィカルユーザインターフェース(GUI)を介して表示されるおよび/またはログに記録される可能性があり、それによって、ユーザは、現在のトランザクションバケット内のトランザクションデータを検証し、調整するように促される可能性がある。説明のための例において、メッセージは、トランザクション処理エンジン120に送信される可能性があり、生のデータの取り出しおよび現在のトランザクションバケットに関する処理を繰り返すようにトランザクション処理エンジン120に促す。現在のトランザクションバケットが修正されたことを示すメッセージをトランザクション処理エンジンから受信することに応じて、トランザクションマッチングエンジン160は、現在のトランザクションバケットの処理を繰り返す可能性がある。
【0043】
現在のトランザクションバケットを成功裏に処理すると、トランザクションマッチングエンジン160は、現在処理されているトランザクションバケットのシーケンスから次のトランザクションバケットを選択し、新たに選択されたトランザクションバケットに関して上述のトランザクションマッチング動作を繰り返す可能性がある。
【0044】
図1を再び参照すると、各売却トランザクションおよびマッチングされた取得トランザクションに関して、利益または損失が利益/損失計算エンジン170によって計算される可能性があり、利益/損失計算エンジン170は、1つもしくは複数の専用の仮想的もしくは物理的実行環境(たとえば、仮想もしくは物理サーバ)において実行されるかまたはシステムのその他の構成要素と一緒に配置される1つまたは複数のソフトウェアモジュールによって実装される可能性がある。利益/損失計算は、マッチングされた売却トランザクションおよび取得トランザクションの各々に関して、トランザクションによって取得または売却された暗号通貨の履歴的価格(historic price)に基づいて、選択された法定通貨(たとえば、米ドル)でのトランザクションの量を決定することを含む可能性がある。本明細書における「履歴的価格」は、対応する売却トランザクションまたは取得トランザクションを実行したときに有効であった価格を指すものとする。選択された法定通貨での履歴的価格に基づくトランザクションの量を決定すると、利益/損失計算エンジン170は、それぞれの売却トランザクションおよびマッチングされた取得トランザクションに関して、(売却トランザクションの量が正であり、一方、取得トランザクションの量が負であると仮定して)正の結果が利益を示し、一方、負の結果が損失を示すように、売却トランザクションの法定通貨の量とマッチングされた取得トランザクションの法定通貨の量とを合計することによって結果として得られる利益または損失を計算する可能性がある。
【0045】
マッチングされたトランザクションに関する計算された利益または損失およびその他の関連するデータが、様々な固定のまたはユーザ定義のフォーマットの1つまたは複数のレポートにまとめられる可能性がある。レポートは、グラフィカルユーザインターフェース(GUI)を介して視覚的にレンダリングされ、1つもしくは複数のファイルに保存され、および/または印刷される可能性がある。説明のための例において、レポートは、(スマートフォンまたはタブレットなどの)ポータブルコンピューティングデバイスのGUIを介してレンダリングするためにフォーマットされる可能性がある。
【0046】
特定の実装において、本明細書において説明される方法を実施するコンピューティングシステム100は、ユーザによって吟味され、電子的に署名される可能性がある1つまたは複数の電子的な税務会計フォームを生成するために計算された利益または損失およびその他関連するデータを利用する可能性がある。ユーザの電子署名を得ると、コンピューティングシステム100は、電子的な税務会計フォームを、電子的な税務フォームの提出を受け付けるように認証されている行政機関のサーバにアップロードする可能性がある。
【0047】
図7A~
図7Bは、本開示の1つまたは複数の態様による暗号通貨トランザクションに関する損益計算の例示的な方法700の流れ図を示す。方法700および/またはその個々の機能、ルーチン、サブルーチン、もしくは動作の各々は、方法を実施するコンピューティングシステム(たとえば、
図5の例示的なコンピューティングシステム500)の1つまたは複数のプロセッサによって実行される可能性がある。特定の実装において、方法700は、単一の処理スレッドによって実行される可能性がある。代替的に、方法700は、2つ以上の処理スレッドによって実行される可能性があり、各スレッドが、方法の1つまたは複数の個々の機能、ルーチン、サブルーチン、または動作を実行する。説明のための例において、方法700を実施する処理スレッドは、(たとえば、セマフォ、クリティカルセクション、および/またはその他のスレッド同期メカニズムを使用して)同期される可能性がある。代替的に、方法700を実施する処理スレッドは、互いに非同期に実行される可能性がある。
【0048】
図7Aによって概略的に示されるように、ブロック710において、方法を実施するコンピューティングシステムは、1つもしくは複数の暗号通貨取引所および/または暗号通貨トランザクションを実行するその他の組織に関連する1つまたは複数の暗号通貨アカウントを介して1人の人(たとえば、自然人または法人)によって実行される暗号通貨取引および送金に関連する複数の暗号通貨トランザクションレコードを受信する可能性がある。コンピューティングシステムは、受信された生のトランザクションレコードを、後続の処理のために最適化された所定のフォーマットに準拠する1組の正規化されたアトミックなトランザクションレコードに変換する可能性がある。説明のための例において、それぞれのアトミックなトランザクションレコードは、本明細書において上でより詳細に説明されたように、送り元アカウント識別子、送り先アカウント識別子、資産識別子、(たとえば、取得トランザクションの正の値および売却トランザクションに関する負の値によって表される)トランザクションの量、ならびにタイムスタンプを含む。
【0049】
ブロック715において、コンピューティングシステムは、顧客(たとえば、1人の人(たとえば、自然人もしくは法人)または人の関連するグループ)の1つまたは複数の暗号通貨取引アカウントに関連する1つまたは複数の会計の境界にそれぞれの正規化されたトランザクションを割り振る可能性がある。会計の境界は、本明細書において上でより詳細に説明されたように、各規則が特定のトランザクションレコードのフィールド(たとえば、アカウント識別子、サブアカウント識別子、および/またはその他のトランザクションの属性)の値を1つまたは複数の所定の値と比較し、トランザクションが割り振られるべき1つまたは複数の会計の境界の識別子を生成するような1組の規則によって定義される可能性がある。
【0050】
ブロック720において、コンピューティングシステムは、本明細書において上でより詳細に説明されたように、トランザクションのタイムスタンプがバケットの開始時間およびバケットの終了時間によって特定される会計期間内に入るようにトランザクションバケットに現在選択されているトランザクションの境界(transaction perimeter)の各トランザクションを割り振る可能性がある。
【0051】
ブロック725~760において、コンピューティングシステムは、所与のトランザクションの境界のトランザクションバケットのシーケンスに対して反復する可能性がある。特に、ブロック725において、コンピューティングシステムは、現在選択されているトランザクションバケットから、次の処理されていない暗号通貨売却トランザクションを選択する可能性がある。
【0052】
ブロック730において、コンピューティングシステムは、本明細書において上でより詳細に説明されたように、それぞれの選択された暗号通貨取得トランザクションのタイムスタンプが現在選択されている暗号通貨売却トランザクションのタイムスタンプ未満であるように、現在選択されているトランザクションバケットから1つまたは複数の暗号通貨取得トランザクションを選択する可能性がある。
【0053】
ブロック735において、コンピューティングシステムは、
図8を参照して本明細書において以下でより詳細に説明されるように、現在選択されている暗号通貨売却トランザクションを選択された暗号通貨取得トランザクションの少なくともサブセットとマッチングする可能性がある。
【0054】
ブロック740において、現在のトランザクションバケットからの少なくとも1つの売却トランザクションが少なくとも部分的にマッチングされないままであり、一方、現在のバケットからのすべての取得トランザクションがマッチングされたとの判定に応じて、コンピューティングシステムは、ブロック745において、例外を発生させる可能性があり、例外は、様々な方法で処理される可能性がある。説明のための例においては、エラーメッセージが、GUIを介して表示されるおよび/またはログに記録される可能性があり、それによって、ユーザは、現在のトランザクションバケット内のトランザクションデータを検証し、調整するように促される可能性がある。説明のための例において、メッセージは、本明細書において上でより詳細に説明されたように、トランザクション処理エンジンに送信される可能性があり、生のデータの取り出しおよび現在のトランザクションバケットに関する処理を繰り返すようにトランザクション処理エンジンに促す。
【0055】
そうでない場合、ブロック750において、現在のトランザクションバケットからのすべての売却トランザクションが取得トランザクションにマッチングされたが、現在のトランザクションバケットからの少なくとも1つの取得トランザクションが完全にまたは部分的にマッチングされないままであるとの判定に応じて、処理は、ブロック755において継続する可能性があり、そうでない場合、方法は、ブロック760に分岐する可能性がある。
【0056】
ブロック750において、すべての利用可能なトランザクションバケットが処理されたとの判定に応じて、処理は、
図7Bのブロック770において継続する可能性があり、そうでない場合、方法は、ブロック725にループして戻る可能性がある。
【0057】
図7Bによって概略的に示されるように、ブロック770において、コンピューティングシステムは、本明細書において上でより詳細に説明されたように、マッチングされたトランザクションの各々に関して、それぞれのトランザクションによって取得または売却された暗号通貨の履歴的価格に基づいて対応する法定通貨のトランザクションの量を決定する可能性がある。
【0058】
ブロック775において、コンピューティングシステムは、決定された法定通貨のトランザクションの量に基づいて、現在選択されている暗号通貨売却トランザクションに関連する利益または損失を計算する可能性がある。
【0059】
図8は、本開示の1つまたは複数の態様による売却トランザクションおよび取得トランザクションのマッチングの例示的な方法800の流れ図を示す。方法800および/またはその個々の機能、ルーチン、サブルーチン、もしくは動作の各々は、方法を実施するコンピューティングシステム(たとえば、
図5の例示的なコンピューティングシステム500)の1つまたは複数のプロセッサによって実行される可能性がある。特定の実装において、方法800は、単一の処理スレッドによって実行される可能性がある。代替的に、方法800は、2つ以上の処理スレッドによって実行される可能性があり、各スレッドが、方法の1つまたは複数の個々の機能、ルーチン、サブルーチン、または動作を実行する。説明のための例において、方法800を実施する処理スレッドは、(たとえば、セマフォ、クリティカルセクション、および/またはその他のスレッド同期メカニズムを使用して)同期される可能性がある。代替的に、方法800を実施する処理スレッドは、互いに非同期に実行される可能性がある。
【0060】
ブロック810において、方法を実施するコンピューティングシステムは、売却トランザクションキューまたはその他の好適なデータ構造から、次の処理されていない売却トランザクションを選択する可能性がある。
【0061】
ブロック815において、方法を実施するコンピューティングシステムは、現在選択されている売却トランザクションに関して、それぞれの特定された取得トランザクションのタイムスタンプが現在選択されている売却トランザクションのタイムスタンプ未満であるように取得トランザクションキューから取得トランザクションのサブセットを選択する可能性がある。暗号通貨取得トランザクションの選択されたサブセットは、それぞれのトランザクションのタイムスタンプの昇順でキュー、連結リスト、またはその他の好適なメモリデータ構造に記憶される可能性がある。
【0062】
ブロック820において、コンピューティングシステムは、マッチングされた暗号通貨取得トランザクションの現在までの合計の量をゼロ値によって初期化する可能性がある。
【0063】
ブロック825において、コンピューティングシステムは、暗号通貨取得トランザクションの選択されたサブセットを記憶するデータ構造を、適用可能な会計規則によって定義される方向に(FIFOまたはLIFO)走査することによって次の利用可能な取得トランザクションを選択する可能性がある。
【0064】
ブロック830において、選択された暗号通貨取得トランザクションの量が選択された暗号通貨売却トランザクションの量とマッチングされた暗号通貨取得トランザクションの現在までの合計の量との間の差以下であるとの判定に応じて、コンピューティングシステムは、ブロック835において、マッチングされた暗号通貨取得トランザクションの現在までの合計の量に選択された暗号通貨取得トランザクションの量を足す可能性があり、そうでない場合、処理は、ブロック855において継続する可能性がある。
【0065】
ブロック840において、コンピューティングシステムは、暗号通貨取得トランザクションの選択されたサブセットを記憶するデータ構造から現在選択されている暗号通貨取得トランザクションを削除する可能性がある。
【0066】
ブロック845において、マッチングされた暗号通貨取得トランザクションの現在までの合計の量が、現在選択されている暗号通貨売却トランザクションの量に達しないとの判定に応じて、コンピューティングシステムは、ブロック850において、暗号通貨取得トランザクションの選択されたサブセットを記憶するデータ構造内の次の利用可能な暗号通貨取得トランザクションを参照するポインタを進める可能性があり、方法は、825にループして戻る可能性がある。
【0067】
ブロック830において、選択された暗号通貨取得トランザクションの量が、選択された暗号通貨売却トランザクションの量とマッチングされた暗号通貨取得トランザクションの現在までの合計の量との間の差を超えるとの判定に応じて、コンピューティングシステムは、ブロック855において、選択された暗号通貨売却トランザクションの量とマッチングされた暗号通貨取得トランザクションの現在までの合計の量との間の差だけ選択された暗号通貨取得トランザクションの量を削減する可能性がある。
【0068】
ブロック855において、コンピューティングシステムは、暗号通貨売却トランザクションキュー内の次の利用可能な暗号通貨売却トランザクションを参照するポインタを進める可能性があり、方法は、810にループして戻る可能性がある。
【0069】
本明細書において説明されるシステムおよび方法は、実際のまたはシミュレーションされたデータセットを処理するために使用される可能性がある。説明のための例において、本明細書において説明されるシステムおよび方法によって生成される出力は、様々な暗号通貨市場シミュレーションアプリケーション、たとえば、暗号通貨市場シミュレーションのために使用される可能性がある。説明のための例において、本明細書において説明されるシステムおよび方法によって生成される出力は、様々な機械学習に基づくアプリケーションのための訓練データセットを生成するために使用される可能性がある。
【0070】
図9は、本明細書において説明される方法を実施するために使用される可能性がある例示的なコンピューティングシステムの構成要素の図を示す。コンピューティングシステム900は、LAN、イントラネット、エクストラネット、またはインターネット内のその他のコンピューティングシステムに接続される可能性がある。コンピューティングシステム900は、クライアント-サーバネットワーク環境内のサーバもしくはクライアントコンピューティングシステムの能力において、またはピアツーピア(もしくは分散型)ネットワーク環境内のピアコンピューティングシステムとして動作する可能性がある。コンピューティングシステム900は、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、携帯情報端末(PDA)、セルラ電話、またはそのコンピューティングシステムによって実行される動作を指定する(逐次的もしくはその他の)命令の組を実行することができる任意のコンピューティングシステムによって提供される可能性がある。さらに、単一のコンピューティングシステムのみが示されるが、用語「コンピューティングシステム」は、本明細書において説明される方法のうちの任意の1つまたは複数を実行するための命令の1つの組(または複数の組)を個々にまたは一緒に実行するコンピューティングシステムの任意の集合を含むとやはり理解されるものとする。
【0071】
例示的なコンピューティングシステム900は、バス930を介して互いに通信するプロセッサ902、メインメモリ904(たとえば、読み出し専用メモリ(ROM)またはダイナミックランダムアクセスメモリ(DRAM))、およびデータストレージデバイス918を含む。
【0072】
プロセッサ902は、マイクロプロセッサ、中央演算処理装置などの1つまたは複数の汎用処理デバイスによって表される可能性がある。より詳細には、プロセッサ902は、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、またはその他の命令セットを実装するプロセッサもしくは命令セットの組合せを実装するプロセッサである可能性がある。プロセッサ902は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタル信号プロセッサ(DSP)、ネットワークプロセッサなどの1つまたは複数の専用処理デバイスである可能性もある。プロセッサ902は、本明細書において説明される方法を実行するための命令926を実行するように構成される。
【0073】
コンピューティングシステム900は、ネットワークインターフェースデバイス922、ビデオディスプレイユニット910、文字入力デバイス912(たとえば、キーボード)、およびタッチスクリーン入力デバイス914をさらに含む可能性がある。
【0074】
データストレージデバイス918は、本明細書において説明される方法または機能のうちの任意の1つまたは複数を具現化する命令926の1つまたは複数の組が記憶されるコンピュータ可読記憶媒体924を含む可能性がある。命令926は、コンピューティングシステム900によるそれらの命令926の実行中にメインメモリ904内におよび/またはプロセッサ902内に完全にまたは少なくとも部分的に存在する可能性もあり、また、メインメモリ904およびプロセッサ902は、コンピュータ可読記憶媒体を構成する。命令926は、ネットワークインターフェースデバイス922を介してネットワーク916上でさらに送信または受信される可能性がある。
【0075】
説明のための例において、命令926は、本開示の1つまたは複数の態様によって実装された暗号通貨トランザクションに関する損益計算の方法700、800の命令を含む可能性がある。コンピュータ可読記憶媒体924は
図9の例においては単一の媒体であるように示されているが、用語「コンピュータ可読記憶媒体」は、命令の1つまたは複数の組を記憶する単一の媒体または複数の媒体(たとえば、集中的なもしくは分散型のデータベース、ならびに/または関連するキャッシュおよびサーバ)を含むものと受け取られるべきである。また、用語「コンピュータ可読記憶媒体」は、マシンによる実行のために命令の組を記憶するか、符号化するか、または運ぶことができ、本開示の方法のうちのいずれか1つまたは複数をマシンに実行させる任意の媒体を含むと理解されるものとする。したがって、用語「コンピュータ可読記憶媒体」は、ソリッドステートメモリ、光学式媒体、および磁気式媒体を含むがこれらに限定されないと理解されるものとする。
【0076】
本明細書において説明される方法、構成要素、および特徴は、ディスクリートハードウェア構成要素によって実装される可能性があり、またはASICS、FPGA、DSP、もしくは同様のデバイスなどのその他のハードウェア構成要素の機能に統合される可能性がある。さらに、方法、構成要素、および特徴は、ハードウェアデバイス内のファームウェアモジュールまたは機能の回路によって実装される可能性がある。さらに、方法、構成要素、および特徴は、ハードウェアデバイスとソフトウェア構成要素との任意の組合せに、またはソフトウェアのみに実装される可能性がある。
【0077】
上述の説明において、多くの詳細が説明されている。しかし、本開示がこれらの具体的詳細なしに実施される可能性があることは、本開示の恩恵に浴する当業者に明らかであろう。場合によっては、本開示を曖昧にすることを避けるために、よく知られた構造およびデバイスは、詳細にではなくブロック図の形態で示される。
【0078】
詳細な説明のいくつかの部分は、コンピュータメモリ内のデータビットに対する操作のアルゴリズムおよび記号表現の観点で提示された。これらのアルゴリズムの記述および表現は、データ処理技術の当業者によって、それらの者の成果の内容をその他の当業者に最も効果的に伝えるために使用される手段である。ここでおよび概して、アルゴリズムは、所望の結果をもたらす自己矛盾のない一連の動作であると考えられる。動作とは、物理量の物理的操作を必要とする動作である。必ずではないが通常、これらの量は、記憶、転送、組合せ、比較、およびその他の操作を行われ得る電気的または磁気的信号の形態をとる。これらの信号をビット、値、要素、書記素、文字、語、数などと呼ぶことが、主に共通使用の理由で便利な場合があることが分かっている。
【0079】
しかし、これらのおよび同様の用語のすべては、適切な物理量に関連付けられるべきであり、かつ、これらの量に付される便宜的なラベルであるに過ぎないことに留意されたい。以下の検討から明らかなように、そうでないことがはっきりと記載されていない限り、説明全体を通じて、「決定する」、「計算する」、「算出する」、「取得する」、「特定する」、「修正する」などの用語を使用する検討は、コンピューティングシステムのレジスタおよびメモリ内の物理的(たとえば、電子的)量として表されるデータを操作し、コンピューティングシステムのメモリまたはレジスタまたはその他のそのような情報ストレージ、送信、もしくは表示デバイス内の物理的量として同様に表されるその他のデータに変換するコンピューティングシステムまたは同様の電子的なコンピューティングシステムのアクションおよびプロセスを指すことが理解される。
【0080】
本開示は、本明細書の動作を実行するための装置にも関する。この装置は、必要とされる目的のために特別に構築される可能性があり、またはコンピュータに記憶されたコンピュータプログラムによって選択的にアクティブ化もしくは再構成される汎用コンピュータを含む可能性がある。そのようなコンピュータプログラムは、フロッピーディスク、光ディスク、CD-ROM、および光磁気ディスクを含む任意の種類のディスク、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気式もしくは光学式カード、または電子的な命令を記憶するのに好適な任意の種類の媒体などであるがこれらに限定されないコンピュータ可読記憶媒体に記憶される可能性がある。
【0081】
上述の説明は例示的であるように意図されており、限定的であるように意図されていないことを理解されたい。様々なその他の実装は、上の説明を読み、理解すると、当業者に明らかになる。したがって、本開示の範囲は、添付の特許請求の範囲が与えられる均等物の全範囲と併せたそのような特許請求の範囲に関連して決定されるべきである。
【符号の説明】
【0082】
100 ワークフロー
110 生のトランザクションレコード
120 トランザクション処理エンジン
130 正規化されたアトミックなトランザクション
140 取得トランザクションキュー
140A~140N 会計の境界
150 売却トランザクションキュー
160 トランザクションマッチングエンジン
170 利益/損失計算エンジン
200 正規化されたトランザクションレコード
210 送り元アカウント識別子
220 送り先アカウント識別子
230 資産識別子
240 トランザクションの量
250 タイムスタンプ
260 その他のフィールド
300 会計の境界
310A~310F 会計の境界
310A 差
310B 差
320 会計の境界
330 会計の境界
340A トランザクション
340B トランザクション
340C トランザクション
340D トランザクション
340E トランザクション
340F トランザクション
340G トランザクション
400 シーケンス
402 シーケンス
404 シーケンス
406 シーケンス
410A~410N バケット
500 コンピューティングシステム
510 売却トランザクション
510B 現在選択されている売却トランザクション
510C 次の売却トランザクション
530 両端キュー(デック)
540 末尾
540K~540R 取得トランザクション
540M* 修正されたトランザクション
550 先頭、マッチングされた取得トランザクションのサブセット、先頭のポインタ
550A~550N 取得トランザクション
550X 取得トランザクション
700 方法
800 方法
900 コンピューティングシステム
902 プロセッサ
904 メインメモリ
910 ビデオディスプレイユニット
912 文字入力デバイス
914 タッチスクリーン入力デバイス
916 ネットワーク
918 データストレージデバイス
922 ネットワークインターフェースデバイス
924 コンピュータ可読記憶媒体
926 命令
930 バス
【国際調査報告】