【文献】
谷口孔陛,”ビットコインを法人で買った場合の超具体的な処理方法 勘定科目・会計処理・税務”,[online],谷口孔陛税理士事務所,2017年11月22日,[検索日:2018.5.10],URL,https://web.archive.org/web/20171122075907/https://www.kh-tax.com/bitcoin/
【文献】
宮崎 英樹,”ブロックチェーンがもたらす社会変化”,技報 UNISYS TECHNOLOGY REVIEW,日本ユニシス株式会社,2017年 8月31日,第37巻 第2号,p.69-82,ISSN:0914-9996
【文献】
齊藤 洸,”FinTechで変わる会計の世界”,企業会計,株式会社中央経済社,2017年 6月 1日,第69巻 第6号,p.64-72,ISSN:0386-4448
【文献】
岡田 幸彦,”FinTechで変わる会計の世界”,企業会計,株式会社中央経済社,2017年 6月 1日,第69巻 第6号,p.31-39,ISSN:0386-4448
(58)【調査した分野】(Int.Cl.,DB名)
前記仕訳処理部は、前記仕訳処理として、仮想通貨の入金および出金に関する取引の仕訳処理と、仮想通貨の出金に伴う差損益処理とを行うことを特徴とする請求項1に記載された自動仕訳サーバ。
前記仕訳処理部は、前記差損益処理で用いられる計算法として予め用意された複数の計算法のうち、ユーザによって選択されたものを用いて、前記差損益処理を行うことを特徴とする請求項2に記載された自動仕訳サーバ。
前記ブロックチェーン情報取得部は、前記ブロックチェーンに定期的にアクセスして、前記仮想通貨アドレスに対応する新規な取引の取引情報を前記取引データベースに追加することを特徴とする請求項1から3のいずれかに記載された自動仕訳サーバ。
仮想通貨ベースの取引を行うユーザ毎に固有の仮想通貨アドレスを記憶するユーザデータベースと、分散型ネットワークとして構築されたブロックチェーンより取得された取引情報を取引毎に記憶する取引データベースとを有するコンピュータにおいて実行され、仮想通貨ベースの取引の仕訳を行う自動仕訳プログラムにおいて、
前記ブロックチェーンにアクセスして、前記ユーザデータベースに記憶された仮想通貨アドレスに対応する取引の取引情報を取得して、前記取引データベースに記憶する第1のステップと、
仮想通貨の換算レートをネットワークを介して取得する第2のステップと、
特定のユーザから取引の仕訳依頼を受け付けた場合、当該特定のユーザのクライアントからネットワークを介して取得した仕訳依頼に係る取引の取引情報を前記取引データベースに記憶する第3のステップと、
前記取引データベースから読み出された取引情報と、前記換算レートとに基づいて、仮想通貨ベースの取引の仕訳処理を行う第4のステップとを有する処理をコンピュータに実行させ、
前記第4のステップは、前記仕訳依頼に係る取引について、前記第3のステップによって取得された前記取引情報と、前記第1のステップによって取得された前記取引情報とが整合した場合、前記仕訳処理を行うことを特徴とする自動仕訳プログラム。
前記第1のステップは、前記ブロックチェーンに定期的にアクセスして、前記仮想通貨アドレスに対応する新規な取引の取引情報を前記取引データベースに追加するステップであることを特徴とする請求項8から10のいずれかに記載された自動仕訳プログラム。
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、従来の自動仕訳サーバは、仮想通貨の急速な普及にもかかわらず、仮想通貨ベースの取引には対応できていないのが現状である。
【0007】
そこで、本発明の目的は、仮想通貨ベースの取引の仕訳を自動的かつ効率的に行うことを可能にすることである。
【課題を解決するための手段】
【0008】
かかる課題を解決すべく、第1の発明は、ユーザデータベースと、ブロックチェーン情報取得部と、取引データベースと、レート情報取得部と、
仕訳依頼受付部と、仕訳処理部とを有し、仮想通貨ベースの取引の仕訳を行う自動仕訳サーバを提供する。ユーザデータベースは、仮想通貨ベースの取引を行うユーザ毎に固有の仮想通貨アドレスを記憶する。ブロックチェーン情報取得部は、分散型ネットワークとして構築されたブロックチェーンにアクセスして、ユーザデータベースに記憶された仮想通貨アドレスに対応する取引の取引情報を取得する。取引データベースは、ブロックチェーン情報取得部によって取得された取引情報を取引毎に記憶する。レート情報取得部は、仮想通貨の換算レートをネットワークを介して取得する。
仕訳依頼受付部は、特定のユーザから取引の仕訳依頼を受け付けた場合、当該特定のユーザのクライアントからネットワークを介して取得した仕訳依頼に係る取引の取引情報を前記取引データベースに記憶する。仕訳処理部は、取引データベースから読み出された取引情報と、レート情報取得部によって取得された換算レートとに基づいて、仮想通貨ベースの取引の仕訳処理を行う。
仕訳処理部は、仕訳依頼に係る取引について、仕訳依頼受付部によって取得された取引情報と、ブロックチェーン情報取得部によって取得された取引情報とが整合した場合、上記仕訳処理を行う。
【0009】
ここで、第1の発明において、上記仕訳処理部は、上記仕訳処理として、仮想通貨の入金および出金に関する取引の仕訳処理と、仮想通貨の出金に伴う差損益処理とを行うことが好ましい。この場合、上記仕訳処理部は、上記差損益処理で用いられる計算法として予め用意された複数の計算法のうち、ユーザによって選択されたものを用いて、差損益処理を行ってもよい。
【0010】
第1の発明において、上記ブロックチェーン情報取得部は、ブロックチェーンに定期的にアクセスして、仮想通貨アドレスに対応する新規な取引の取引情報を取引データベースに追加することが好ましい。この場合、上記仕訳処理部は、取引データベースに追加された新規な取引について仕訳処理を行うことが望ましい。また、この場合、上記仕訳処理部は、新規な取引の仕訳を一律に売買とみなして処理してもよい。
【0011】
第1の発明において、上記仕訳処理部は、仕訳依頼に係る取引情報に応じて取引の勘定科目を決定してもよい。
【0012】
第2の発明は、仮想通貨ベースの取引を行うユーザ毎に固有の仮想通貨アドレスを記憶するユーザデータベースと、分散型ネットワークとして構築されたブロックチェーンより取得された取引情報を取引毎に記憶する取引データベースとを有するコンピュータにおいて実行され、仮想通貨ベースの取引の仕訳を行う自動仕訳プログラムを提供する。このプログラムは、第1のステップから第
4のステップを有する処理をコンピュータに実行させる。第1のステップでは、ブロックチェーンにアクセスして、ユーザデータベースに記憶された仮想通貨アドレスに対応する取引の取引情報を取得して、取引データベースに記憶する。第2のステップでは、仮想通貨の換算レートをネットワークを介して取得する。第3のステップでは、
特定のユーザから取引の仕訳依頼を受け付けた場合、この特定のユーザのクライアントからネットワークを介して取得した仕訳依頼に係る取引の取引情報を取引データベースに記憶する。第
4のステップでは、取引データベースから読み出された取引情報と、換算レートとに基づいて、仮想通貨ベースの取引の仕訳処理を行う。
ここで、第4のステップは、仕訳依頼に係る取引について、第3のステップによって取得された取引情報と、第1のステップによって取得された取引情報とが整合した場合、上記仕訳処理を行う。
【0013】
ここで、第2の発明において、上記第
4のステップは、上記仕訳処理として、仮想通貨の入金および出金に関する取引の仕訳処理と、仮想通貨の出金に伴う差損益処理とを行うステップであることが好ましい。この場合、上記第
4のステップは、差損益処理で用いられる計算法として予め用意された複数の計算法のうち、ユーザによって選択されたものを用いて、差損益処理を行うステップであってもよい。
【0014】
第2の発明において、上記第1のステップは、ブロックチェーンに定期的にアクセスして、仮想通貨アドレスに対応する新規な取引の取引情報を取引データベースに追加するステップであることが好ましい。この場合、上記第
4のステップは、取引データベースに追加された新規な取引について仕訳処理を行うステップであることが望ましい。また、この場合、上記第
4のステップは、新規な取引の仕訳を一律に売買とみなして処理するステップであってもよい。
【0015】
第2の発明において、上記第
4のステップは、仕訳依頼に係る取引情報に応じて取引の勘定科目を決定するステップであってもよい。
【発明の効果】
【0016】
本発明によれば、仮想通貨ベースの取引を行うユーザ毎の仮想通貨アドレスを記憶しておき、これをキーにブロックチェーンを検索することで、ユーザが行った取引に関する取引情報を取得・管理する。そして、この取引情報と、仮想通貨の換算レートとに基づいて、仮想通貨ベースの取引の仕訳処理を自動的に行う。これにより、ユーザが取引の仕訳を依頼する毎に、自己の仮想通貨アドレスの送信やブロックチェーンへのアクセスなどをユーザ自身が行う必要がないので、ユーザの利便性およびシステムの効率性に優れた自動仕訳サービスを実現できる。
【発明を実施するための形態】
【0018】
図1は、本実施形に係る自動仕訳ネットワークシステムの全体図である。この仕訳ネットワークシステム1は、仕訳サーバ2と、ユーザが操作する多数のクライアント3と、ブロックチェーン4と、仮想通貨取引所5とが、インターネットなどのネットワークを介して接続されている。仕訳サーバ2は、クライアント3から「取引」の仕訳依頼を受信した場合、この「取引」の仕訳処理を自動的に行い、仕訳結果をクライント2に送信する。本実施形態の特徴は、実通貨ベースで行われた取引のみならず、ビットコインなどに代表される仮想通貨ベースで行われた取引についても対応している点にある。仮想通貨ベースの取引の仕訳処理に際して、仕訳サーバ2は、ブロックチェーン4および仮想通貨取引所5に必要に応じてアクセスする。ブロックチェーン4は、分散型ネットワークとして構築されている。また、仮想通貨取引所5(ネットワーク上のコンピュータ)は、仮想通貨の換算レートに関する情報を提供する。
【0019】
本明細書において、「取引」とは、企業等が所有する財産(資産,負債)、資本、収益、費用の増加・減少を伴う簿記上の取引や、簿記上の取引以外においても、記帳(記録)に必要な取引などを総称する意味で用いられる。
【0020】
ここで、
図2に基づき、ブロックチェーンの概念について説明する。ビットコインなどの仮想通貨は、取引履歴、すなわち、仮想通貨が今まで経てきた個々の取引(トランザクション)の集合体として表現される。それぞれのトランザクションは、前のトランザクションのハッシュ値や新たな所有者の公開鍵を含み、元の所有者の暗号鍵によってデジタル署名されている。全てのトランザクションに関する情報は、P2Pネットワーク全体で共有されている。このようにトランザクションを表現することで、元の所有者の許可なく、通貨を本人以外が勝手に譲渡することはできず、また、第三者は、通貨の譲渡を客観的に確認できるといった利点を有する。
【0021】
図3は、トランザクションにおけるデータ構造(取引情報)の説明図である。トランザクションのデータ構造は、取引日のほかに、「出力 (出金する通貨)」、「入力 (入金に用いる通貨)」などを有している。送金には、相手に渡す通貨(額面)および宛先が必要であるが、それらを表現したものが出力である。自分に宛てられた通貨を使う (=誰かに送金する) ためには、過去のトランザクションの出力を参照しなければならず、それが今回のトランザクションにおける入力に相当する。一つのトランザクションにおいて、出力および入力はそれぞれ複数指定できる。任意の額の送金を行うためには、過去の自分宛のトランザクションの出力を集め、これから行う取引の入力として指定する必要がある。
【0022】
なお、
図1に示した構成では、ブロックチェーン4中の情報を提供する主体と、仮想通貨取引所5の運営主体とを別個のものとしているが、両者は同一であっても構わない。
【0023】
図4は、仕訳ネットワークシステム1の中核をなす仕訳サーバ2の構成図である。この仕訳サーバ2は、制御部2aと、ブロックチェーン情報取得部2bと、レート情報取得部2cと、仕訳依頼受付部2dと、仕訳処理部2eと、各種データベース2h〜2jとを主体に構成されている。制御部2aは、後述する取引の一括処理および個別処理を含めて、仕訳サーバ2の全体的な制御を司る。ブロックチェーン取得部2bは、ネットワーク上のブロックチェーン4に定期的またはユーザから取引の仕訳依頼を受け付ける毎にアクセスして、所定の仮想通貨アドレスに対応する取引の取引情報を取得する。レート情報取得部2cは、ネットワーク上の仮想通貨取引所5にアクセスして、所望の日における仮想通貨の換算レートを取得する。仕訳依頼受付部2dは、特定のユーザ(クライアント3)から取引の仕訳依頼を受け付け、このユーザのクライアントからネットワークを介して取得した仕訳依頼に係る取引の取引情報を取引データベース2iに記憶する。
【0024】
仕訳処理部2eは、取引データベース2iから読み出された取引情報と、レート情報取得部2cによって取得された換算レートとに基づいて、仮想通貨ベースの取引の仕訳処理を行う。この仕訳処理部2eは、仮想通貨ベースの取引に固有の機能として、取引認証部2fおよび差損益算出部2gを備えている。取引認証部2fは、仕訳依頼を受けた取引の個別処理時のみ用いられ、仕訳依頼受付部2dによって取得された取引情報と、ブロックチェーン情報取得部2bによって取得された取引情報とが整合するかどうかを認証する。両者が整合する場合には、仕訳依頼に係る取引の個別処理が行われ、両者が整合しない場合には、個別処理が行われることなく、エラー通知がユーザ(依頼者)に送信される。また、差損益算出部2gは、取引の一括処理時および個別処理時の双方で用いられ、仮想通貨の出金に伴う差損益(実通貨ベース)を算出する。仕訳処理部2eによる仕訳結果は、仕訳実績として仕訳データベース2jに記憶される。
【0025】
図5は、ユーザデータベース2hの論理構成図である。ユーザデータベース2hは、それぞれの「ユーザ」に関する情報を一元的に記憶・管理するものであるが、仮想通貨ベースの取引の仕訳処理との関係でいえば、特に、「仮想通貨アドレス」、「APIキー1」、「APIキー2」、「計算法」が重要である。これらは、ユーザによる所定の設定手順を経て、仕訳サーバ2側に登録される。ここで、「仮想通貨アドレス」は、仮想通貨を利用する際の口座番号に相当し、仮想通貨の利用者毎に固有の記号列が割り当てられている。ビットコインの場合、仮想通貨アドレス(ビットコインアドレス)は、1または3から始まる27〜34文字の英数字によって構成され、公開鍵から生成される。仕訳サーバ2(ブロックチェーン情報取得部2b)は、ブロックチェーン4から例えばユーザ「A」の取引情報を取得しようとする場合、このユーザ「A」に対応する仮想通貨アドレス「a」をブロックチェーン4側に送信する。
【0026】
「APIキー1」は、ブロックチェーン4へのアクセスの認証を行うために、ブロックチェーン4側より発行されたユーザ固有の認証キーである。仕訳サーバ2(ブロックチェーン情報取得部2b)は、ブロックチェーン4から例えばユーザ「A」の取引情報を取得しようとする場合、このユーザ「A」に対応するAPIキー1として「a1」をブロックチェーン4側のAPI(Application Programming Interface)に送信する。なお、ブロックチェーン4のアクセス認証が必要ない場合には、APIキー1は不要である。
【0027】
「APIキー2」は、仮想通貨取引所5へのアクセスの認証を行うために、仮想通貨取引所5側より発行されたユーザ固有の認証キーである。仕訳サーバ2(レート情報取得部2c)は、仮想通貨取引所5から例えばユーザ「A」の換算レートを取得しようとする場合、このユーザ「A」に対応するAPIキー2として「a2」を仮想通貨取引所5側のAPIに送信する。なお、仮想通貨取引所5へのアクセス認証が必要ない場合には、APIキー2は不要である。
【0028】
「計算法」は、差損益処理(払出単価計算)で用いられる計算法である。本実施形態では、複数の計算法が予め用意されており、ユーザによって選択されたものが用いられる。この計算法としては、(1)移動平均法、(2)総平均法、(3)最終仕入原価法、(4)個別法、(5)先入先出法、(6)売価還元法が存在する。上記(1)〜(2)は、有価証券および棚卸資産で使用される計算法であり、上記(3)〜(6)は、棚卸資産で使用される計算法である。これらの計算法の中から、システムの仕様として適宜組み合わせたものが選択肢としてユーザに提示される。ただし、計算法を選択できるのはサービス加入初年度に限るものとし、翌年度以降は初年度に選択した計算法を用いるものとする。
【0029】
なお、仕訳サーバ2は、ユーザデータベース2hの「仮想通貨アドレス」として、1ユーザについて複数の仮想通貨アドレスを管理してもよい。これにより、仮想通貨の仕様として1ユーザに対する複数アドレスの割り当てを許容し、アドレスを動的に変更するような場合であっても対応可能となる。この場合、ユーザは、自己に割り当てられた新たな仮想通貨アドレスを仕訳サーバ2にその都度登録すればよい。また、ユーザの代わりに仕訳サーバ2が、予め登録されたAPIキーを用いて仮想通貨取引所5などにアクセスし、このユーザに関する新たな仮想通貨アドレスを取得した上で、ユーザデータベース2hに自動で登録(アップデート)するようにしてもよい。
【0030】
図6は、取引データベース2iの論理構成図である。この取引データベース2iは、それぞれの取引に関する情報を一元的に記憶・管理するものであり、取引単位で設けられた多数の取引レコードによって構成されている。1つの取引レコードは、ユーザデータベース2hに紐付けられた「ユーザ」のほか、「取引情報A」、「取引情報B」、「仕訳」といったフィールドで構成されている。
【0031】
ここで、「取引情報A」は、ブロックチェーン4より取得された取引情報(トランザクションに記述された情報)であり、具体的には、取引日、仮想通貨ベースの取引高(BTC)、入金/出金の区別、トランザクションID(ブロックチェーン4中の個々のトランザクションを識別するための識別情報)を含む。
【0032】
「取引情報B」は、取引の仕訳依頼に係る取引情報(ユーザ入力情報)であり、具体的には、取引日、仮想通貨ベースの取引高(BTC)、入金/出金の区別を含む。また、「取引情報B」には、ユーザによって入力・指定された勘定科目が含まれていてもよい。「取引情報B」に勘定科目が含まれている場合、ユーザから仕訳依頼を受けた取引の仕訳結果にこの勘定科目が反映される(これがそのまま使用される。)。また、「取引情報B」は、ユーザから仕訳依頼を受けた取引についてだけ記述され、これを受けていない場合にはブランクとなる(一括処理時)。
【0033】
「仕訳ステータス」は、仕訳処理部2eによる仕訳処理が行われたか否かを管理するためのフラグであり、処理が行われた場合には「済」、処理が行われてない場合には「未済」に設定される。なお、仕訳サーバ2が一括処理および個別処理の一方だけを行う場合には「済」だけで足りるが、両方の処理を行う場合には「済」を細分化して、「済(一括)」、「済(個別)」として管理してもよい。
【0034】
なお、
図6に示した取引レコードの構成はあくまで論理的なものであって、物理的な構成を示すものではない点に留意されたい。すなわち、「ユーザ」、「取引情報A」、「取引情報B」、「仕訳ステータス」のそれぞれ、または、この中の任意の組み合わせを複数のテーブルで個別に管理し、これらのテーブルを共通のID(例えば取引ID)で紐付けるようなデータ構造であっても、図示した取引レコードが果たす機能と何ら異なるところはなく、論理的に等価である。本明細書の「取引レコード」とは、物理的なデータ構造の如何を問わず、仕訳サーバ2が管理・処理を行う上で必要な情報を互いに関連付けるデータ構造を広く包含する概念で用いられる。その意味において、「データベース」とは、互いに関連付けられたテーブルなどの集合体として捉えることもできる。この点は、取引データベース2iのみならず、ユーザデータベース2hや仕訳データベース2jについても同様である。
【0035】
図7は、仕訳サーバ2によって行われる取引の一括処理のフローチャートである。この一括処理や後述する個別処理も含めて、仕訳サーバ2において実行されるすべての処理は、仕訳サーバ2にコンピュータプログラム(自動仕訳プログラム)をインストールすることによって実行される。制御部2aは、毎時や毎日の如く定期的に本ルーチンを呼び出し、処理対象となる取引群をバッチ処理する。
【0036】
まず、ステップ1において、制御部2aは、ブロックチェーン4の検索対象を特定する。検索対象は、本サービスに加入しており、かつ、仮想通貨ベースの取引を行う者のすべて、すなわち、
図5に示したユーザデータベース2hで管理されているすべて仮想通貨アドレスである。また、検索すべき期間としては、前回の一括処理時から現在の日時までである。なお、本サービスの新規加入した者を対象として、今までの取引情報を取得する場合、期間の指定なしで、このユーザの仮想通貨アドレスが検索対象となる。
【0037】
ステップ2において、ブロックチェーン情報取得部2bは、ブロックチェーン4側のAPIに対して、ステップ1で特定された検索対象(仮想通貨アドレス等)を指定して、ブロックチェーン4の検索を依頼する。その際、ブロックチェーン4のアクセス認証が必要な場合には、依頼対象となるユーザに対応するAPIキー1がユーザデータベース2hから読み出され、ブロックチェーン4側のAPIに送信される。
【0038】
ステップ3において、ブロックチェーン情報取得部2bは、ブロックチェーン4側のAPIから、検索依頼に係る取引(トランザクション)の取引情報を取得する。そして、ステップ4において、ブロックチェーン情報取得部2bは、制御部2aを介して、「新規な取引」に関する取引レコードを取引データベース2iに追加する。ここで、「新規な取引」とは、ブロックチェーン4より取得された取引のうち、取引データベース2iで管理されていない取引のことである。この取引レコードにおいて、「ユーザ」には、検索対象の仮想通貨アドレスに対応するユーザ名が記述される。「取引情報A」には、ブロックチェーン情報取得部2bによって取得された取引情報が記述される。そして、「仕訳ステータス」は「未済」にセットされる(
図6参照)。なお、一括処理の場合、「取引情報B」はブランクのままである。ステップ4の処理によって、取引データベース2iの保持内容にとしてブロックチェーン4のそれが反映され、両者の整合性が担保される。
【0039】
以下の処理は、仕訳ステータスが「未済」にセットされている取引レコード(以下「未済取引レコード」という。)のすべてに対して、処理対象を1つずつシフトしながら繰り返し行われる。
【0040】
まず、ステップ5において、仕訳処理部2eは、処理対象として、取引データベース2iから未済取引レコードを一つ読み出す。つぎに、ステップ7において、仕訳処理部2eは、処理対象となる未済取引レコードの「取引情報A」として記述された取引日の時点における換算レートを取得する。具体的には、仕訳処理部2eは、制御部2aを介してレート情報取得部2cに対して、取引日を指定して、その時点の換算レートを取得すべき旨を指示する。これに基づいて、レート情報取得部2cは、仮想通貨取引所5側のAPIに対して、指定された日付の換算レートの提供を依頼する。その際、仮想通貨取引所5のアクセス認証が必要な場合には、依頼対象となるユーザに対応するAPIキー1がユーザデータベース2hから読み出され、仮想通貨取引所5側のAPIに送信される。そして、レート情報取得部2cは、指定された日付の換算レートを仮想通貨取引所5より取得し、制御部2aを介して仕訳処理部2eにこれを転送する。
【0041】
ステップ8において、仕訳処理部2eは、処理対象となる未済取引レコードの「取引情報A」と、ステップ7で取得された換算レートとに基づいて、仮想通貨ベースの取引の仕訳処理を行う。
【0042】
ステップ9において、未済取引レコードに係る取引が出金であるか否かが判断される。このステップ9の判断結果が肯定の場合、すなわち、出金取引の場合、仕訳処理部2eはステップ10の差損益処理を行う。これに対して、ステップ9の判断結果が否定の場合、すなわち、入金取引の場合、仕訳処理部2eはステップ10の差損益処理をスキップして、ステップ11に進む。
【0043】
図10は、出金取引について行われる差損益処理のフローチャートであり、ステップ10からサブルーチンとして呼び出される。まず、ステップ20において、差損益算出部2gは、ユーザデータベース2hを参照して、処理対象となる未済取引レコードに係るユーザによって選択された「計算法」を特定する。つぎに、差損益算出部2gは、この計算法によって仮想通貨の平均単価を算出し(ステップ21)、この平均単価を用いて実通貨ベースの差損益を算出する(ステップ22)。これによって、本サブルーチンを抜けてステップ10に戻る。
【0044】
再び
図7を参照すると、ステップ11において、仕訳処理部2eは、ステップ8の仕訳処理(および、出金取引時にはステップ10の差損益処理)の結果を仕訳データベース2jに反映する。そして、処理対象に係る未済取引レコードの「仕訳ステータス」を「未済」から「済」(または「済(一括)」)に変更することによって、処理対象となる取引に関する処理が完了する。
【0045】
ステップ12において、すべての未済取引レコードの処理が終了したか否かが判断される。ステップ12の判定結果が否定の場合、処理対象を次の未済取引レコードに移行した上で(ステップ13)、新たな処理対象(未済取引レコード)に対してステップ5〜11の処理が行われる。そして、以上の処理が繰り返され、最後の処理対象の処理が終了した場合、ステップ12の判断結果が否定から肯定に切り替る。これによって、一連の処理が終了して本ルーチンを抜ける。
【0046】
以上の一括処理について、
図9に示すような仮想通貨の入出金を例に説明する。同図は、ブロックチェーン4の検索結果として、あるユーザに関して、取引日が異なる8つの仮想通貨ベースの取引(単位=BTC)が取得されたケースを示している(ステップ3)。このケースでは、
図10に示すように、8つの取引日のそれぞれについて換算レートが取得される(ステップ7)。例えば、「2017/11/01」の時点で、1(BTC)当たりのレートは「500,000(JPY)」(JPY=日本円)である。
【0047】
この場合、
図11に示すように、「2017/11/18」、「2017/11/28」、「2017/12/08」の各出金取引について、「出金(平均単価)および「差損益」が算出される(ステップ10)。ここで、「平均単価」は、移動平均に基づき算出された値を用いている。「出金(平均単価)」は、(仮想通貨の出金額)×(平均単価)として算出される。また、「差損益」は、(仮想通貨の出金額)×(取引日単価−平均単価)として算出される。例えば、「2017/11/18」付の出金取引(出金額=0.2(BTC))に着目した場合、「出金(平均単価)」は508,000×0.2=101,600(JPY)、「差損益」は0.2×(560,000−508,000)=10,400(JPY)となる。
【0048】
図12は、取引の一括処理による仕訳結果を示す図である。ブロックチェーン4から取得された取引情報のみに基づく仕訳では、取引の具体的な内容が不明なので、本来の取引の仕訳および差損益の仕訳を一律に売買とみなして処理する。すなわち、入金取引については、借方を仮想通貨、貸方を普通預金として計上される。また、出金取引については、入金取引とは逆に、借方を普通預金、貸方を仮想通貨として計上される。さらに、出金取引時に生じる差損益については、借方を普通預金、借方を為替通貨為替差益として計上される。この仕訳結果は、仕訳データベース2jに反映される(ステップ11)
【0049】
図13は、仕訳サーバ2によって行われる取引の個別処理のフローチャートである。制御部2aは、仕訳依頼受付部2dを介して、ユーザ側のクライアント3から取引の仕訳依頼を受け付けた場合、本ルーチンを呼び出し、仕訳依頼に係る取引について個別処理する。
【0050】
本フローチャートが
図7のそれと大きく相違する点は、第1に、仕訳依頼に係る取引のみを処理対象とするため、
図7に示したステップ12およびステップ13が存在しないことである。仕訳依頼に係る取引が複数存在する場合には、それぞれの取引に対して個別処理が複数回行われる。第2に、
図7に示したステップ5とステップ7との間にステップ6が存在することである。以下、
図7のフローチャートとの相違点を重点的に説明し、それ以外の共通点については同一のステップ番号を付して、ここでの説明を省略または簡略化する。
【0051】
まず、ステップ1において、制御部2aは、ブロックチェーン4の検索対象を特定する。ここで、検索対象となるのは、取引の仕訳を依頼したユーザ(例えば「A」)の仮想通貨アドレスである。制御部2aは、
図5に示したユーザデータベース2hを参照して、このユーザAの仮想通貨アドレス「a」を特定する。ステップ2〜3を経て、ブロックチェーン4の検索結果として、仮想通貨アドレスaに関する取引(トランザクション)の取引情報が取得される。
【0052】
ステップ4において、取引データベース2iに取引レコードが新規に追加される。この新規な取引レコードにおいて、「ユーザ」には、取引の仕訳を依頼したユーザAが記述される。「取引情報A」には、ブロックチェーン情報取得部2bによって取得された取引情報が記述される。また、「取引情報B」には、仕訳依頼受付部2dによって取得された取引情報が記述される。ユーザAは、仕訳サーバ2に仕訳を依頼する際、必要情報として取引の取引情報を送信することになっており、これが「取引情報B」となる。そして、「仕訳ステータス」は「未済」にセットされる。
【0053】
なお、定期的に行われる一括処理(バッチ処理)の頻度次第では、個別処理時において、仕訳依頼に係る取引レコードが既に生成済みであることが想定される。この場合には、取引レコードを新規に追加することなく、既に存在する該当レコードにおける「取引情報B」に取引情報が記述される。
【0054】
ステップ5において、仕訳処理部2eは、処理対象として、取引データベース2iから仕訳依頼に係るユーザAの取引レコードを読み出す。
【0055】
ステップ6において、取引認証部2fは、取引レコードに記述された「取引情報A」と「取引情報B」とを比較して、両者の内容が整合しているか否かを判断する。具体的には、取引主体(ユーザA)が一致すること、取引日が一致すること、および、取引高が一致することが認証される。ただし、取引日の一致については、ブロックチェーン4へのトランザクションの組込時と、取引の約定日との間に若干のタイムラグ(例えば10分程度)が存在することを考慮すべきである。両者の内容が整合している場合には、ステップ7に進んで処理が続行される。これに対し、両者が整合していない場合には、ユーザに対してエラー通知を送信して(ステップ14)、本ルーチンを抜ける。このような取引内容の認証を行うことで、ユーザの誤入力を防止でき、ブロックチェーン4より取得した取引情報との整合性を確実に担保することができる。
【0056】
ステップ7〜11において、取引の仕訳処理と差損益処理とが行われ、仕訳結果が仕訳データベース2jに反映される。そして、処理対象に係る取引レコードの「仕訳ステータス」を「未済」から「済」(または「「済(一括)」から「済(個別)」)に変更することによって、処理対象となる取引に関する処理が完了する。
【0057】
取引の個別処理では、一括処理の場合とは異なり、取引の具体的な内容が既知であるため、取引の仕訳内容(勘定科目)については、ユーザによって入力された取引情報Bの内容に応じて決定される。
図14は、取引の個別処理による仕訳結果を示す図である。取引の仕訳依頼に際してユーザが入力した取引情報に勘定科目(例えば、出金=「仕入」、入金=「売上」)が含まれている場合、仕訳結果の勘定科目はこれに決定される。具体的には、入金取引については、借方を仮想通貨、貸方を売上高として計上される。また、出金取引については、借方を仕入高、貸方を仮想通貨として計上される。さらに、出金取引時に生じる差損益(約定日時点)については、借方を仮想通貨、借方を仮想通貨為替差益として計上される。この仕訳結果は、仕訳データベース2jに反映される(ステップ11)。
【0058】
本実施形態では、個別処理の仕訳結果が一括処理の仕訳結果よりも優先される。すなわち、「2017/11/28」、「2017/12/08」、「2017/12/12」の3つの取引について、一律に売買とみなした仕訳結果(
図11参照)が、個々の取引内容を反映した仕訳結果に変更される。このような仕訳結果のアップデートを行うことによって、ユーザから仕訳依頼を受けた取引に関して、ブロックチェーン4との整合性を担保しつつ、きめ細かな仕訳を行うことができる。
【0059】
なお、取引の仕訳依頼に際してユーザが入力した取引情報に勘定科目が含まれていない場合、機械学習などを用いて、ユーザ入力の取引情報に適した勘定科目を自動的に決定してもよい。例えば、本出願人の特許である特許第6161229号公報には、教師あり学習によって自己が有する関数の内部パラメータが調整された学習器を用いて、取引情報に適した勘定科目を出力する自動仕訳システムが記載されている。
【0060】
このように、本実施形態によれば、仮想通貨ベースの取引を行うユーザ毎の仮想通貨アドレスを記憶しておき、これをキーにブロックチェーン4を検索することで、ユーザが行った取引に関する取引情報を取得・管理する。そして、この取引情報と、仮想通貨の換算レートとに基づいて、仮想通貨ベースの取引の仕訳処理を自動的に行う。これにより、ユーザが取引の仕訳を依頼する毎に、自己の仮想通貨アドレスの送信やブロックチェーン4へのアクセスなどをユーザ自身が行う必要がないので、ユーザの利便性およびシステムの効率性に優れた自動仕訳サービスを実現できる。
【0061】
また、本実施形態によれば、取引の仕訳処理として、仮想通貨の入金および出金に関する取引の仕訳処理のみならず、仮想通貨の出金に伴う差損益処理も併せて行うことで、ユーザ取っての利便性をより高めることができる。その際、差損益処理で用いられる計算法をユーザが選択できるようにすれば、ユーザのニーズに的確に応えることができる。
【0062】
また、本実施形態によれば、定期的なバッチ処理によって、ユーザデータベース2hに登録されているユーザに関する取引の取引情報をブロックチェーン情報取得部2bより取得し、これらの取引を一括処理することで、大量の取引を効率的かつ高速に処理することができる。
【0063】
また、本実施形態によれば、ユーザからの仕訳依頼に基づいて取引の個別処理に行うことで、ユーザ入力の取引内容を仕訳結果にきめ細かく反映することができる。その際、仕訳依頼受付部2dによって取得された取引情報と、ブロックチェーン情報取得部2bによって取得された取引情報との整合性をチェックすることで、ユーザの誤入力を防止でき、ブロックチェーン4より取得した取引情報との整合性を確実に担保することができる。
【0064】
さらに、本実施形態によれば、仕訳データ2jに保持された仕訳結果(仕訳履歴)を活用し、例えば
図15に示すように、期末の評価替えの際は評価益の仕訳を作成することで、ユーザの個別の依頼(決算の評価替え処理など)から会計帳簿を提供することもできる。
【0065】
なお、上述した実施形態では、取引で用いられる仮想通貨が単一であることを前提に説明したが、本発明はこれに限定されるものではなく、仮想通貨は複数種であっても適用可能である。この場合、ユーザデータベース2hにおいて、仮想通貨アドレス、APIキー1、APIキー2などの情報を仮想通貨の種類毎に管理すると共に、それぞれの仮想通貨に対応した仮想通貨取引所5にアクセスすればよい。
【0066】
さらに、本発明は、上述した実施形態に係る自動仕訳システムとして捉えることができるほか、これを実現するために仕訳サーバ3において実行されるコンピュータプログラム(特に、
図7,
図8および
図13のフローチャートをルーチンとして備えるもの)として捉えることもできる。
【解決手段】ユーザデータベース2hは、仮想通貨ベースの取引を行うユーザ毎に固有の仮想通貨アドレスを記憶する。ブロックチェーン情報取得部2bは、分散型ネットワークとして構築されたブロックチェーンにアクセスして、ユーザデータベース2hに記憶された仮想通貨アドレスに対応する取引の取引情報を取得する。取引データベース2iは、ブロックチェーン情報取得部2bによって取得された取引情報を取引毎に記憶する。レート情報取得部2cは、仮想通貨の換算レートをネットワークを介して取得する。仕訳処理部2eは、取引データベース2iから読み出された取引情報と、レート情報取得部2cによって取得された換算レートとに基づいて取引の仕訳処理を行う。