JP2020009361A - 仮想通貨取引装置、取引サーバ装置、仮想通貨取引システム、仮想通貨取引方法及びプログラム - Google Patents
仮想通貨取引装置、取引サーバ装置、仮想通貨取引システム、仮想通貨取引方法及びプログラム Download PDFInfo
- Publication number
- JP2020009361A JP2020009361A JP2018132286A JP2018132286A JP2020009361A JP 2020009361 A JP2020009361 A JP 2020009361A JP 2018132286 A JP2018132286 A JP 2018132286A JP 2018132286 A JP2018132286 A JP 2018132286A JP 2020009361 A JP2020009361 A JP 2020009361A
- Authority
- JP
- Japan
- Prior art keywords
- transaction
- virtual currency
- user
- order
- remittance
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
Description
そして、このブロックチェーンを取引の台帳として活用した仮想通貨(暗号通貨)(特許文献1)が知られており、現金に代わる新たな決算手段や送金手段などに用いられてきている。
このような仮想通貨として、当初はBitcoin(ビットコイン)(登録商標)のみが知られていたが、現在では、同様の仕組みを利用した様々な仮想通貨(アルトコインと呼ばれる)が利用されている。例えば、アルトコインとしてMonacoin(モナコイン)(登録商標)、Litecoin(ライトコイン)などが知られている。
従来、仮想通貨の利用者は、自己の保有する仮想通貨を別の仮想通貨に交換したいと考えたとき、取引所を利用するか、異なる仮想通貨を保持する利用者間で、それぞれの仮想通貨が有する仕組みを利用して相互で送金取引を行う他は選択肢がなかった。
預けた仮想通貨を悪意ある取引所に「持ち逃げ」されるリスクはもちろんあるが、善意の取引所であっても、それらが狙われ、預けた仮想通貨がクラッキングなどによって流出するという懸念がある。
この「アトミックスワップ」では、取引所を介さずに「トラストレス(取引所を信用せず)」にセキュアな取引が行えることはもちろん、特殊なトランザクションを介して非直接的に(間接的に)通貨の交換を行うことで、「トラストレス(相対取引の相手となる利用者を信用せず)」にセキュアな取引を行うことが出来る。「特殊なトラザクション」とは、受取人に加え、有効期限と、当事者の一方がランダムに生成(決定)した秘密の値のハッシュ値と、を指定したトランザクションである。
「アトミックスワップ」の参加者は、上記の特殊なトランザクションを互いに作成する。そして、受取人が上記ランダムに選択された秘密の値を知る場合にのみ、その受取人が特殊なトランザクションに接続するトランザクションを作成して仮想通貨を受け取ることが可能である。
なお、「秘密の値」は取引の過程で開示される必要があるため、参加者の一方のみが仮想通貨を受け取れるということがない。また、一般的には有効期限を指定した上で差出人が仮想通貨を取り戻すことが可能なようトランザクションを作成するため、アトミックスワップに失敗しても、どちらかが仮想通貨を失うということはない。
従って「アトミックスワップ」は、特殊なトランザクションを介して、間接的且つ安全な取引を行うことが出来る。
しかしながら、「アトミックスワップ」を用いて仮想通貨の売買をしようとした場合、仮想通貨の利用者同士が、希望する売買条件を交換可能なインターフェイスが従来存在せず、条件のあった取引相手を見つけることは容易ではい、という問題があった。
本発明は、以上の問題を鑑みてなされたものであり、利用者が希望する仮想通貨の取引条件をマッチングし、容易に、且つ安全に仮想通貨の取引を開始可能な仮想通貨取引装置を提供することを目的とする。
本発明に係る第1の形態は、第1の仮想通貨と第2の仮想通貨とを交換する取引を行う仮想通貨取引装置であって、当該仮想通貨取引装置の利用者が所望する数量の前記第1の仮想通貨と交換する前記第2の仮想通貨の数量を指定した注文内容を入力させる入力手段と、該入力手段によって入力された前記注文内容を、前記第1の仮想通貨の売り注文としてネットワークに送出する売り注文送出手段と、ネットワークに送出された売り注文を板情報として表示する板情報表示手段と、を備える仮想通貨取引装置を特徴とする。
図1は、本実施形態の仮想通貨取引装置が適用されるシステムの構成を示す概略図である。
図1(a)は、本実施形態の仮想通貨取引装置としての端末装置を含むネットワークの構成を示す概略図である。
本実施形態に係るシステム1において、複数の利用者の利用に係る仮想通貨取引装置(以下、端末装置)10a、10b、10c・・がインターネットを介して相互に接続されている。
さらにインターネットには、ブロックチェーンネットワークに参加してマイニング作業を行うマイナーが用いる多数のマイナー装置30と、端末装置10a、10b、10c・・の利用者が、下記に説明するアトミックスワップによる仮想通貨の交換などの取引を行う際に必要となる板情報の提供などを行う取引サーバ40と、が接続されている。
これらのブロックチェーンネットワークは、P2P(Peer to Peer)ネットワークであり、ブロックチェーンネットワークxは仮想通貨Xのネットワーク、ブロックチェーンネットワークyは仮想通貨Yのネットワークである。
各ブロックチェーンネットワークには、それぞれマイナー装置30が多く接続されて、プルーフオブワーク作業を行っている。また、ブロックチェーンネットワーク(仮想通貨)によっては、マイニングとしてプルーフオブワーク作業を行わないものもある。
図1(b)を用いて、ブロックチェーンの概略を説明する。
ブロックチェーンは、逐次発生する取引情報などをブロック単位で接続することにより成立する。
ハッシュ関数には一方向性という特徴があり、任意データからハッシュ値を求めることは容易であるが、逆に、ハッシュ値から元のデータを復元することは現実的には不可能であるとされる。
その結果、図1(b)に示すように、ブロックチェーンの各ブロックは、そのブロックのデータと、直前のブロックのハッシュ値と、Nonce値と、を含んでいる。
なお途中のブロックを改ざんしようとすると、そのブロック以降全てのブロックのNonce値を再計算する必要があるが、上記した総当たりを全てのブロックについて行うしかないため、計算量的に不可能である。
このような特徴を有することで、ブロックチェーンの信頼性は担保されている。
従来、仮想通貨の利用者は、自己の保有する仮想通貨を別の仮想通貨に交換(両替)したいと考えたとき、取引所を利用するか、異なる仮想通貨(暗号通貨)を保持する利用者間で、それぞれの仮想通貨が有する仕組みを利用して相互で送金取引を行う他は選択肢がなかった。
取引所を利用した方法では、例えば、ビットコインを所持する利用者Aが、モナコインを所望する場合、ある取引所にビットコインを預け、それと同価値のモナコインの支払いを取引所から受ける。あるいは、モナコインを所持する利用者Bが、ビットコインを所望する場合、ある取引所にモナコインを預け、それと同価値のビットコインの支払いを取引所から受ける。
預けた仮想通貨を悪意ある取引所に「持ち逃げ」されるリスクはもちろんあるが、善意の取引所であっても、それらが狙われ、預けた仮想通貨がクラッキングなどによって流出するという懸念がある。
この方法では、交換レートを利用者間で決められるというメリットもあるが、このような相対での取引では、例えば、利用者Aが利用者Bにビットコインを送金し、利用者Bがモナコインを利用者Aに送金するという手順がとられる。
その場合、ビットコインを受け取った利用者Bが、約束通りにモナコインを利用者Aに送金せず、ビットコインを「持ち逃げ」するおそれがある。
アトミックスワップは、異なる仮想通貨を交換するにあたってのセキュリティ上の問題を解決するための技術であり、取引所を介さずに「トラストレス(取引所を信用せず)」にセキュアな取引を行えることはもちろん、特殊なトランザクションを介して非直接的(間接的に)に通貨の交換を行うことで、「トラストレス(相対取引の相手となる利用者を信用せず)」にセキュアな取引を行うことが可能な仮想通貨の取引(交換)手法である。
ビットコインをはじめとした仮想通貨においては、仮想通貨の「送金」は、ネットワーク上に分散して記録される所定単位の仮想通貨(通貨価値)(ビットコインではUTXO:Unspent Transaction Outputと呼ぶ)を、利用者の公開鍵あるいは公開鍵ハッシュとしてのアドレスによってロックする処理である。
「UTXO」は、後述する「トランザクション」において他のトランザクションと未だ接続されていないアウトプットを意味し、所有者の公開鍵を記載したScriptPubKeyを含んでいる。
UTXOをロックしている公開鍵の所有者がUTXOの所有者であり、当該UTXOが、その所有者が所有する仮想通貨の残高である。
そして、この「トランザクション」をブロックチェーンネットワークに対して広報(ブロードキャスト)し、トランザクションが承認されてブロックチェーンに組み込まれることで「送金(UTXOの所有権の移転)」が行われる。
従って、端末装置内に、仮想通貨(の残高)を示す情報が格納されることはない。この点において、仮想通貨は、Felica(登録商標)など、ICチップ内に残高情報を有する一部の電子マネーとは本質的に異なる。
端末装置にインストールされた「ウォレット」ソフトウェアは、利用者の公開鍵あるいは公開鍵ハッシュに紐付けられたUTXOをブロックチェーンネットワークから検索することによって、利用者が有する仮想通貨の「残高」を利用者に提示することが出来る。
「トランザクション」は、送金元から送金先への通貨価値の転送(移転)を記号化したものであり、図2(a)に示すように、送金元を示すフィールドであるインプットと、送金先を示すフィールドであるアウトプットと、を有する。
また、「アウトプット」には、送金額と、ScirptPubKeyと、を含む。
ScriptPubKeyは、このアウトプット(トランザクション)をアンロックするための条件を定義したスクリプト言語である。
ScriptPubKeyには、一般的には、特定の秘密鍵による電子署名によってのみアンロックが可能となるようなスクリプトが記述されており、これによって、仮想通貨の所有権が、該当する秘密鍵を所有する送金先のアカウント(利用者)のものとなる。
「インプット」は、UTXOを使うために、ScriptSigと呼ばれるUTXOのロックを解除するためのスクリプトを含む。ScriptSigは主に、ScriptPubKeyで要求されるUTXOのアンロックのための電子署名である。
Index1で特定されるScirptPubKeyに対応するアウトプットには、新規トランザクションが接続されていないため、当該アウトプットは、UTXOのままである。
アウトプットには、新規トランザクションのUTXOを、接続した利用者にロックするための公開鍵(公開鍵ハッシュ)を含むScriptPubKeyが含まれる。
新規トランザクションのインプットに付される電子署名は、新規トランザクションのScriptSigを除くデータと、前トランザクションにおける接続されたScriptPubKeyと、のハッシュ値を、秘密鍵を用いて暗号化することで生成される。
上記のように、アトミックスワップは、利用者A、利用者B間における、異なるブロックチェーンネットワークに係る異なる仮想通貨の交換取引に係る手法である。
利用者Aは仮想通貨X(例えばビットコイン)を利用者Bに対して「送金」し、利用者Bは、利用者Aとの間で予め決定した交換レートにて、相当額の仮想通貨Y(例えばモナコイン)を利用者Aに「送金」する。
なお、アトミックスワップの前に、換金レートの決定とともに、公開鍵を利用者間で交換しておく。この他の処理はオンチェーン処理(ブロックチェーンの仕組みを利用した処理)であるが、公開鍵の交換は、E−mailやその他の手段で実行可能な手続である。
まず、送金対象である利用者Aの仮想通貨Xは、利用者Aの公開鍵又は公開鍵ハッシュでロックされた利用者Aの所有に係る仮想通貨のUTXOである。
このUTXOは、現在の所有者である利用者Aの電子署名によってアンロックされる。
そして、利用者A側の端末装置では、上記ランダムに選択された値(秘密の値R)が付与され、かつ利用者Bの持つ秘密鍵により生成可能な電子署名が付与されていること、をアンロックの条件としたScriptPubKey(アウトプット)をUTXOとして持つ特殊なトランザクションが作成されて(上記アンロックしたUTXOに接続され)「送金」が行われる。
上記特殊なトランザクションを作成した時点では、そのUTXOには、如何なるトランザクションも接続されておらず、誰の所有に係るものでもない。一定時間が経過した後には、利用者Aは、そのUTXOのロックを自らの電子署名でアンロックして取り戻すことが可能である。
このUTXOは、利用者Bの電子署名によってアンロックされる。
そして、利用者Aがランダムに選択した上記の値(秘密の値R)が付与され、かつ利用者Aの持つ秘密鍵により生成可能な電子署名が付与されていること、をアンロックの条件としたScriptPubKeyをUTXOとして持つ特殊なトランザクションが作成されて(上記アンロックしたUTXOに接続され)「送金」が行われる。
上記特殊なトランザクションを作成した時点では、そのUTXOには、如何なるトランザクションも接続されておらず、誰の所有に係るものでもない。一定時間が経過した後には、利用者Bは、そのUTXOのロックを自らの電子署名でアンロックして取り戻すことが可能である。
一方で、利用者Aが「送金」のために作成した特殊なトランザクションがUTXOのアンロックの条件としている秘密の値Rと、利用者Bの持つ秘密鍵により生成可能な電子署名と、を付与した新たなトランザクションが作成されることで上記特殊なトランザクションがアンロックされ、且つ新たなトランザクションのUTXOが自らの公開鍵でロックされることで、利用者Bは利用者Aが送金した仮想通貨を受け取ることが出来る(UTXOの所有権が利用者Aから利用者Bに移る)。
ステップ(1)において、利用者Aが利用する端末装置10は、仮想通貨Xを利用者Bに「送金」する第1トランザクションTx1を作成し、ネットワークに送出(ブロードキャスト)する。
第1トランザクションTx1のアウトプットにおけるScriptPubKeyには、利用者Aがランダムに選択した秘密の値Rのハッシュ値Hと、送金先である利用者Bの公開鍵(または、公開鍵ハッシュとしてのアドレス)と、が記載されている。
すなわち、利用者Aがランダムに選択した秘密の値Rと、受け取り側の利用者Bの電子署名及び公開鍵と、が対応するトランザクションのインプットで指定されたとき、第1トランザクションTx1のアウトプット(UTXO)をアンロックできる。
また、第1トランザクションTx1のScriptPubKeyは、上記TimeLockの期限が過ぎた(タイムアウト)後、(1)送金元の公開鍵、(2)送金元の電子署名が入力されたときに、タイムスタンプの確認と署名の検証を求める。
(タイムアウト前)利用者Bの電子署名と公開鍵、利用者Aがランダムに選択した秘密の値R
(タイムアウト後)利用者Aの電子署名と公開鍵
である。
受け取り側の利用者Bが利用する端末装置10bは、利用者B自身の電子署名と公開鍵、秘密の値Rをインプットに記載したトランザクション(後述の第4トランザクションTx4)を作成することで、この第1トランザクションTx1を使用した仮想通貨Xの受け取りを完了することが出来る。
また、第1トランザクションTx1のインプットにおけるScriptSigには、利用者Aの電子署名が含まれる。
この電子署名は、利用者Aの公開鍵又は公開鍵ハッシュにロックされている仮想通貨X(UTXO)を、(利用者Bへの)「送金」のためにアンロックするために、第1トランザクションTx1に付与される。
上記のように、第1トランザクションTx1のアウトプット(UTXO)は、利用者Bの電子署名と公開鍵及び利用者Aがランダムに選択した秘密の値Rによってアンロックすることが出来る。
この時点で、利用者B(端末装置10b)は、秘密の値Rを知らないので自らの電子署名のみによって(上記第4トランザクションTx4を作成して)第1トランザクションTx1のアウトプット(UTXO)をアンロックすることが出来ない(利用者Aの仮想通貨Xを受け取ることが出来ない)。
一方で、利用者Aは、TimeLock期限前は、「送金」した仮想通貨X(ビットコイン)を回収することが出来ない。
第2トランザクションTx2のアウトプットにおけるScriptPubKeyには、仮想通貨Xのブロックチェーンネットワークxに公開されているハッシュ値Hと、送金先である利用者Aの公開鍵と、が記載されている。
利用者Aがランダムに選択した秘密の値Rと、受け取り側の利用者Aの電子署名及び公開鍵と、が対応するトランザクションのインプットで指定されたとき、第2トランザクションTx2のアウトプット(UTXO)をアンロックできる。
また、第2トランザクションTx2のScriptPubKeyは、上記TimeLock期限が過ぎたタイムアウト後、(1)送金元の公開鍵、(2)送金元の署名が入力されたときに、タイムスタンプの確認と署名の検証を求める。
(タイムアウト前)利用者Aの電子署名と公開鍵、利用者Aがランダムに選択した秘密の値R
(タイムアウト後)利用者Bの電子署名と公開鍵
である。
受け取り側の利用者Aが利用する端末装置10は、利用者A自身の電子署名と公開鍵、秘密の値Rをインプットに記載したトランザクション(後述の第3トランザクションTx3)を作成することで、この第2トランザクションTx2を使用した仮想通貨Yの受け取りを完了することが出来る。
この電子署名は、利用者Bの公開鍵又は公開鍵ハッシュにロックされている仮想通貨(UTXO)を、(利用者Aへの)送金のためにアンロックするために、第2トランザクションTx2に付与される。
なお、利用者Bは、TimeLock期限前は、「送金」した仮想通貨Y(モナコイン)を回収することが出来ない。
第2トランザクションTx2は仮想通貨Yのブロックチェーンネットワークyに公開される。
第3トランザクションTx3は、第2トランザクションTx2に対応するものであり、特に、第3トランザクションTx3のScriptSig(インプット)が、第2トランザクションTx2のScriptPubKey(アウトプット)に対応する。
また、第3トランザクションTx3のインプットにおけるScriptSigには、利用者Aがランダムに選択した秘密の値R、利用者Aの電子署名と公開鍵が含まれる。
上記のように第2トランザクションTx2のScirptPubKeyでは、アウトプットのアンロック条件として、秘密の値Rと、利用者Aの電子署名及び公開鍵と、を求めており、これらに対応する内容が記載されている。
そして、第3トランザクションTx3も仮想通貨Yのブロックチェーンネットワークyに公開される(ブロードキャストされる)ため、秘密の値Rは利用者Bの知るところとなる。
第4トランザクションTx4は、第1トランザクションTx1に対応するものであり、特に、第4トランザクションTx4のScriptSigが、第1のトランザクションTx1のScriptPubKeyに対応する。
第4トランザクションTx4のアウトプットにおけるScriptPubKeyには、利用者Bの公開鍵(公開鍵ハッシュとしてのアドレス)が記載されている。
上記のように第1トランザクションTx1のScirptPubKeyは、アウトプット(UTXO)のアンロック条件として利用者Bの電子署名と公開鍵、秘密の値Rを求めており、これらに対応する内容が記載されている。
利用者B(端末装置10b)は、第4トランザクションTx4を作成して第1トランザクションTx1のアウトプット(UTXO)をアンロックし、第4トランザクションTx4のアウトプット(UTXO)を利用者Bの公開鍵又は公開鍵ハッシュにロックすることで、利用者Aが「送金」した仮想通貨Xを受けとることが出来る。
また、仮想通貨の「受取」を示す第3トランザクションTx3、第4トランザクションTx4は、第1の「受取情報」、第2の「受取情報」と考えることが出来る。
なお、送金のための第1トランザクションTx1、第2トランザクションTx2が求める解除(アンロック)条件(受け取りのための第3トランザクションTx3、第4トランザクションTx4のインプットに必要な内容)として、送金先(受け取り側)の公開鍵が求められない場合もある。
また、受け取りのための第3トランザクションTx3、第4トランザクションTx4のアウトプットには、受け取り側の公開鍵ハッシュ(アドレス)を指定する場合や、公開鍵そのものを指定する場合がある。
以下の説明では、第3トランザクションTx3、第4トランザクションTx4のインプットにおいて受け取り側の公開鍵については指定を行わず、アウトプットには公開鍵を指定している(P2PK:Pay to Public Keyと呼ばれる方法である)が、本実施形態はそれに限定されることはない。
本実施形態は、第3トランザクションTx3、第4トランザクションTx4のインプットに受け取り側の公開鍵を記載し、アウトプットに受け取り側の公開鍵ハッシュ(アドレス)を指定する(P2PKH:Pay to Public Key Hashと呼ばれる方法である)場合をも含む。
第1トランザクションTx1、第2トランザクションTx2についても、本実施形態は、アウトプットで送金先の公開鍵を指定する場合、送金先の公開鍵ハッシュを指定する場合、のいずれをも含む。
図3に示す第1トランザクションTx1から第4トランザクションTx4までの期間が、アトミックスワップの実行期間である。
ステップS1において、最初に仮想通貨を「送金」する側である利用者Aの端末装置10は、利用者Aの電子署名(第1トランザクションTx1用のSigA1)を生成する。この処理はハードウェアウォレットを用いて行われ、利用者Aは、端末装置10にハードウェアウォレットHW_Aを接続する。ハードウェアウォレットには、利用者Aの秘密鍵が格納されている。またハードウェアウォレットHW_Aは、格納されている秘密鍵を用いて電子署名を生成する署名生成用の処理部(回路)を有する。
第1トランザクションTx1は、インプット(ScriptSig)として、利用者Aの電子署名(上記のSigA1)を含み、アウトプット(ScriptPubKey)として上記した秘密の値Rのハッシュ値H、送金先である利用者Bの公開鍵(PubKeyB)を含んでいる。
また、第1トランザクションTx1のインプットは、前トランザクションのハッシュ(トランザクションID)を含んでいる。
端末装置10は、この第1トランザクションTx1を、仮想通貨Xのブロックチェーンネットワークxに対して送出する。
第1トランザクションTx1が、仮想通貨Xのブロックチェーンネットワークxに公開されると、ハッシュ値Hも公開される。
この後、望ましくは、利用者AのハードウェアウォレットHW_Aは端末装置10から取り外される。
第2トランザクションTx2は、インプット(ScriptSig)として、利用者Bの電子署名(上記のSigB2)を含み、アウトプット(ScriptPubKey)として、仮想通貨Xのブロックチェーンネットワークxに公開されたハッシュ値H、送金先である利用者Aの公開鍵(PubKeyA)を含んでいる。
また、第2トランザクションTx2のインプットは、前トランザクションのハッシュ(トランザクションID)を含んでいる。
端末装置10bは、この第2トランザクションTx2を、仮想通貨Yのブロックチェーンネットワークyに対して送出する。
この後、望ましくは、利用者BのハードウェアウォレットHW_Bは端末装置10bから取り外される。
ステップS6において、端末装置10は、第3トランザクションTx3を作成する。これは、第2トランザクションTx2のアウトプット(UTXO)をアンロックして、仮想通貨Yを利用者A自身に「送金」(受取)するためのトランザクションである(当該第3トランザクションTx3のアウトプット(UTXO)をアンロックし、利用者Aの公開鍵(公開鍵ハッシュ)でUTXOをロックしたトランザクションを接続する)。
また、第3トランザクションTx3のインプットは、前トランザクションである第2トランザクションTx2のハッシュ(トランザクションID)を含んでいる。
端末装置10aは、この第3トランザクションTx3を、仮想通貨Yのブロックチェーンネットワークyに対して送出する。
第3トランザクションTx3が、仮想通貨Yのブロックチェーンネットワークyに公開されると、秘密の値Rもブロックチェーンネットワークy上に公開される。
この後、望ましくは、利用者AのハードウェアウォレットHW_Aは、端末装置10から取り外される。
第4トランザクションTx4は、インプット(ScriptSig)として、利用者B自身の電子署名(上記のSigB2)と仮想通貨Yのブロックチェーンネットワークyに公開された秘密の値Rを含み、アウトプット(ScriptPubKey)として、送金先である利用者B自身の公開鍵(PubKeyB)を含んでいる。
また、第4トランザクションTx4のインプットは、前トランザクションである第1トランザクションTx1のハッシュ(トランザクションID)を含んでいる。
端末装置10bは、この第4トランザクションTx4を、仮想通貨Xのブロックチェーンネットワークxに対して送出する。
特にビットコインのトランザクションがブロックチェーンで処理されるとき、ネットワークを構成するマイナー装置による上述のPoWに起因して、第1トランザクションTx1、第3トランザクションTx3の処理がブロックチェーンのブロックに組み込まれるまで平均60分を要する。
従って、第1トランザクションTx1、第2トランザクションTx2がブロックに完全に組み込まれるまでは約10分×6=60分を要することになる。
さらに、アトミックスワップの仕組みは、取引所を介さず、利用者間で直接仮想通貨の交換が出来るという利点があるが、取引条件が見合った取引相手を見つけることは容易ではない。取引条件とは、例えば、送金する仮想通貨の種類、着金する仮想通貨の種類、送金する仮想通過と着金する仮想通過との交換レートなどのことである。
本実施形態の仮想通貨取引システムは、アトミックスワップにおいて、取引条件が見合った取引相手を見つけることを容易にし、取引の利便性を向上することを図る。
本実施形態の端末装置10a、10b、10c・・・は、仮想通貨を利用する多数の利用者が共通して利用するものであり、共通の構成を有する端末装置10として説明する。
なお、以下の説明では、あくまで一例として、利用者Aと端末装置10aと利用者Bの端末装置10bとの間で行われる処理を説明する。
そして、本実施形態で説明する、例えば、利用者Aが使用する端末装置10aが行う処理と、利用者Bが使用する端末装置10bが行う処理は互いに入れ替え可能である。
すなわち、上記の説明では、端末装置10aが秘密の値Rを決定し、アトミックスワップを主導する立場にあったが、当然、端末装置10bが秘密の値Rを決定してアトミックスワップを主導する場合も生じうる。この場合、本実施形態で説明する端末装置10aの処理を、端末装置10bが行い、逆に端末装置10bの処理を、端末装置10aが行うことになる。
端末装置10a、端末装置10bは、本質的に同じ装置であり同様の処理を実行可能であり、役割の違いに応じて、互いに異なる処理を実行することが出来る。
CPU11は、端末装置10の機能を実現するプログラムを実行する。RAM12は、CPU11による処理のために各種のプログラムや一時データ、変数が展開される。
ドライブ装置13は、記録媒体14に記憶された情報の読み出しか書き込みかの少なくともいずれか一方を行なう装置である。記録媒体14は、ドライブ装置13によって書き込まれた情報を記憶する。記録媒体14は、例えば、ハードディスク、SSD(Solid State Drive)、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスクなどの種類の記憶媒体のうちの少なくとも1つである。また、例えば、端末装置10は、端末装置10内の記録媒体14の種類に対応したドライブ装置13を含む。
記録媒体14及びROMのすくなくとも一方は、プログラムやデータが格納される。ネットワーク I/F15は、端末装置10をネットワークに接続する。外部IO I/F16は、端末装置10に対して周辺機器を接続する。
さらに、端末装置10は、マウスやキーボードなどの入力装置17と、液晶ディスプレイなどの表示装置18と、を備え、利用者は、表示装置18に表示された売買注文画面において、仮想通貨の売買注文を行うことが出来る。
アトミックスワップ実行処理部25は、R値決定処理部25aと、ハッシュ処理部25bと、トランザクション作成処理部25cと、電子署名生成処理部25dと、トランザクション送出処理部25eと、ネットワーク探索処理部25fと、を含む。
売買注文画面100で設定された項目はRAM12に格納される。
売り注文処理部22は、売買注文画面100に対する入力に基づいて、仮想通貨の売り注文を行うための処理部である。
買い注文処理部23は、売買注文画面100に表示される買い板(板情報)に対する選択操作などに基づいて、仮想通貨の買い注文を行うための処理部である。
板情報表示処理部24は、取引サーバ40から受信した板情報、あるいは端末装置10自体によってブロックチェーンネットワークを探索することによって収集した売り注文から生成した板情報を、インターフェイス処理部21に表示させる処理部である。
売買注文画面100は、仮想通貨の売り注文を行うための売り注文欄101と、自端末あるいは他端末で表示された売り注文欄101から行われた売り注文を一覧表示した板情報を表示するとともに買い注文を行うための買い板102と、を備えている。
これはあくまで一例であり、売り注文を行うための画面と、買い板を表示するための画面と、が個別に用意されていてもよい。
売り注文欄101では、例えば、どれだけの数量の(何単位の)仮想通貨Xを、どれだけの数量の(何単位の)仮想通貨Yで売りたいか、を設定することが出来る。
なお、この例では、基準となる仮想通貨Xを、仮想通貨Yで売る(交換する)場合のみが記載されているが、それに限らず、他の仮想通貨同士での売り注文を行えるようにしてもよい。
後述するように、取引サーバ40は、板情報に基づく買い注文があった場合には、対応する売り注文のOP_RETURNに記載される通知先に対して通知を行い、売り側の端末装置を確実にオンラインとして円滑に取引が開始できるように制御する。
買い板102には、板情報表示処理部24が取得、あるいは生成した売り注文の板情報が表示される。
買い側の利用者の端末装置10において、買い板102に表示される売り注文の中から、任意の(買い側の利用者の条件にあった)売り注文が選択されると、買い注文処理部23が買い注文処理を行う。
従来、アトミックスワップによる取引を行う際に、取引条件があった取引相手を探すことは容易ではなかったが、このような板情報を用いることで、条件があう取引相手を容易に見つけることが出来る。
この売り注文を選択することで行われる買い注文は、100単位の仮想通貨Xを利用者Eの希望通り、70単位の仮想通貨Yと引き替えに「買う」注文であると同時に、70単位の仮想通貨Yを100単位の仮想通貨Xと引き替えに「売る」注文に他ならない。
上記したように、売り注文は、注文内容をアウトプットのOP_RETURNと呼ばれる領域に注文の内容を記したトランザクションをブロードキャストすることによって行われる。
図6の買い板102における板情報は、様々な利用者が所望の条件で行った売り注文を取りまとめて表示したものであり、各利用者の端末装置10において以下のような処理が行われることで実現される。
利用者Bの端末装置10bが、100単位の仮想通貨Xを200単位の仮想通貨Yで売りたい旨をOP_RETURNに記したトランザクションをブロードキャストした。
利用者Cの端末装置10cが、100単位の仮想通貨Xを250単位の仮想通貨Yで売りたい旨をOP_RETURNに記したトランザクションをブロードキャストした。
利用者Eの端末装置10eが、100単位の仮想通貨Xを70単位の仮想通貨Yで売りたい旨をOP_RETURNに記したトランザクションをブロードキャストした。
利用者Fの端末装置10fが、100単位の仮想通貨Xを80単位の仮想通貨Yで売りたい旨をOP_RETURNに記したトランザクションをブロードキャストした。
また、単一の利用者が、複数の売り注文を出しているような場合には、利用者毎に並び替えて表示するようにしてもよい。
また、後述するが、売り注文を出している利用者毎の取引成功確率によって、売り注文を並び替えて表示してもよい。
なお、図6においては便宜上、売り注文に利用者を付して表示されているが、実際には、利用者のウォレットアドレス(公開鍵、公開鍵ハッシュ)が表示される。
図6の買い板102の売り注文に対する買い注文が行われると(売り注文が選択されると)、選択された売り注文を行った売り側の利用者と、売り注文を選択した買い側の利用者と、の間で、アトミックスワップ実行処理部25によるアトミックスワップが行われる。
R値決定処理部25aは、本実施形態では、売り側の端末装置10aにおいて、上記のランダムな値Rを決定する処理部である。
ハッシュ処理部25bは、R値決定処理部25aが決定したランダムな値Rのハッシュ値Hを演算する処理部である。
電子署名生成処理部25dは、ハードウェアウォレットHWを制御し、ハードウェアウォレットHWに格納されている秘密鍵を利用して電子署名を生成させるための処理部である。
端末装置10に接続されるハードウェアウォレットHWは、夫々、秘密鍵を格納(記憶)する不図示の秘密鍵記憶部と、秘密鍵記憶部に格納されている秘密鍵を用いて電子署名を生成する不図示の署名生成部(回路)を備えている。
あるいは、ハードウェアウォレットHWは、秘密鍵を格納する機能のみを有し、CPU11(電子署名生成処理部25d)が電子署名を作成するようにしてもよい。
なお、端末装置10に夫々接続されるハードウェアウォレットは、夫々利用者A、利用者Bに帰属し、夫々の利用者の秘密鍵を格納した異なるハードウェアウォレットである。
ネットワーク探索処理部25fは、ブロックチェーンネットワークを探索し、承認され、公開されたトランザクションから、アトミックスワップに必要な値(秘密の値R、ハッシュ値H)の値を取得する処理部である。
図8(a)に示すように、取引サーバ40は、CPU41と、RAM42と、HDD43及びROM(図示せず)と、ネットワークI/F44とを備える。CPU41は、装置全体の制御を行う汎用のオペレーティングシステムを実行するとともに、取引サーバ40の機能を実現する。RAM42には、プログラムを実行するCPU41による処理のために各種のプログラム、一時データ及び変数が展開される。HDD43及びROMには、プログラムやデータが格納される。ネットワークI/F44は、取引サーバ40をネットワークに接続する。
また、取引サーバ40は、記憶部として、注文情報記憶部61、板情報記憶部62、取引評価記憶部63と、を備えている。
売り注文取得処理部51は、仮想通貨Xのブロックチェーンネットワークxの探索を行い、OP_RETURNを用いた売り注文が発見されると、その内容を収集して注文情報記憶部61に格納する処理を行う。
板情報配信処理部53は、端末装置10からの要求に応じて、板情報記憶部62に記憶された板情報を、端末装置10に配信する処理を行う。
買い注文通知処理部54は、板情報に含まれる売り注文に対する買い注文が行われたときに、そのことを売り側の端末装置に通知する処理を行う。
与信・貸付処理部56は、ブロックチェーンネットワークで行われるアトミックスワップを監視し、その実行中に、利用者に対して取引金額に応じた額(数量)の仮想通貨を貸し付ける処理を行う。
なお、本実施形態でいう「貸付」とは、利用者に対して取引金額に応じた額(数量)の仮想通貨を送金することのみを示す。アトミックスワップの正常終了、あるいはキャンセルによって利用者が仮想通貨を取得した後の「返金」については、別途利用者(端末装置)側で、取引サーバ40のウォレットに対する送金トランザクションが公開(ブロードキャスト)されることで行われる。
取引評価記憶部63に格納された利用者毎のアトミックスワップの取引成功確率、取引成功回数は、板情報生成処理部52によって生成される板情報に反映されてもよい。
板情報において、取引成功確率や取引成功回数によって、売り注文を並び替えて表示するようにしてもよい。
なお、注文情報記憶部61、板情報記憶部62、取引評価記憶部63は、RAM42、HDD43の何れに設定されてもよい。
すなわち、ブロックチェーンネットワークから取得した注文情報や、生成した板情報、各利用者の取引成功確率評価などは、RAM42に保持される一時データとしてのみ扱われても良いし、HDD43にファイルとして格納された上でRAM上にロードされてもよい。
CPU11(インターフェイス処理部21)は、ステップS101において、売買注文画面100の売り注文欄101を用いて、売り注文操作が行われたか否かを判定する。
売り注文操作が行われたと判定した場合(ステップS101でYes)、CPU11(売り注文処理部22)は、ステップS102において、売り注文欄101で設定された売り注文の内容をOP_RETURNに記載したトランザクションを作成する。
売り注文の内容に売り側の利用者のウォレットアドレス(公開鍵、公開鍵ハッシュ)を含めることが好適である。
そして、CPU11(売り注文処理部22)は、ステップS102において、ステップS101で作成したトランザクションをブロックチェーンネットワークに送出(ブロードキャスト)することで、売り注文処理を行う。
売り側の利用者が仮想通貨Xを売る場合、トランザクションは、例えば仮想通貨Xのブロックチェーンネットワークxに送出される。
このときに、CPU11は、手数料支払い手段として、所定の手数料(例えば、仮想通貨X)を取引サーバ40のウォレットアドレスに送金するトランザクションをブロードキャストするようにしてもよい。
売り注文内容を含むトランザクションが承認され、ブロックチェーンに組み込まれることで売り注文が正式に完了する。
ステップS111において、CPU41(売り注文取得処理部51)は、板情報の更新タイミングであるか否かを判定する。
更新タイミングであると判定した場合(ステップS111でYes)、CPU41(売り注文取得処理部51)は、ステップS112において、注文情報をOP_RETURNに記載した新たなトランザクションが、仮想通貨Xのブロックチェーンネットワークxにおいて公開されているか否かを判定する。
そして、CPU41(板情報生成処理部52)は、ステップS114において、ステップS113で取得した注文情報を一覧表示した板情報を生成し、板情報記憶部62に格納して今回の処理を終了する。
ステップS111において、板情報の更新タイミングではないと判定した場合(ステップS111でNo)、あるいはOP_RETURNに注文情報を記載した新たなトランザクションが公開されていない場合(ステップS112でNo)、CPU41(板情報配信部53)は、ステップS115において、端末装置から板情報の要求があったか否かを判定する。
なお、ブロックチェーンを探索し、売り注文を含むトランザクションから売り注文情報を取得し、板情報を生成する処理は、取引サーバ40で行うのではなく、各端末装置10で行うことも出来る
その場合、端末装置10は、ブロックチェーンを随時監視し、売り注文を含むトランザクションが公開されるとそれを取得して板情報に反映する。
端末装置10によって行われた買い板102を用いた買い注文が公開された時点で、板情報記憶部62に格納されている板情報から消去してもよいし、買い注文が公開された後、アトミックスワップが正常に終了した時点で(買い側の端末装置10bによって第4トランザクションが公開された時点で)板情報記憶部62に格納されている板情報から消去してもよい。
CPU11(インターフェイス処理部21)は、ステップS121において、買い板102に表示されている注文内容が入力装置17を用いて選択されることで、買い注文操作が行われたか否かを判定する。
買い注文操作が行われたと判定した場合(ステップS121でYes)、CPU11(買い注文処理部23)は、ステップS122において、買い注文として、買い板102で選択された売り注文の内容をOP_RETURNに記載した買い注文のトランザクションを作成する。買い注文のトランザクションは、売り側の利用者にアトミックスワップをリクエストするトランザクションであると言える。また、その内容として、買い側の利用者のウォレットアドレス(公開鍵、公開鍵ハッシュ)を含めることが好適である。
そして、CPU11(買い注文処理部23)は、ステップS123において、ステップS122で作成したトランザクションをブロードキャストすることで、買い注文処理を行う。
このときに、CPU11は、手数料支払い手段として、所定の手数料(例えば、仮想通貨Y)を取引サーバ40のウォレットアドレスに送金するトランザクションをブロードキャストするようにしてもよい。
買い注文内容を含むトランザクションが承認され、ブロックチェーンに組み込まれることで買い注文が正式に完了する。
以上の処理によって、仮想通貨の売り側と買い側のマッチングが終了し、アトミックスワップを行う準備が完了したことになる。
売り側の端末装置は、ここでは端末装置10aが該当し、図12の説明におけるCPU11は、端末装置10aのCPU11である。
CPU11(アトミックスワップ実行処理部25)は、ステップS151において、売り注文処理に係る売り注文に対応する買い注文のトランザクションが公開されたか否かを判定する。
送金先としては、相手方の利用者の公開鍵や公開鍵ハッシュとしてのアドレスが入力される。公開鍵は、事前に交換される。
CPU11(アトミックスワップ実行処理部25)は、ステップS153において、ランダムな値Rを決定し、ステップS154において、値Rのハッシュ値Hを算出する。
ランダムな値Rは、アトミックスワップ実行処理部25によって自動的に生成されてもよいし、売り側の利用者自身が決定して入力するような構成としてもよい。
そして、CPU11(アトミックスワップ実行処理部25)は、ステップS156において、電子署名SigA1を付した第1トランザクションTx1を作成し、CPU11(トランザクション送出処理部64)は、ステップS157において、第1トランザクションTx1を仮想通貨Yのブロックチェーンネットワークyに送出する。
そして、CPU11(アトミックスワップ実行処理部25)は、ステップS159において、(通貨交換の相手方である端末装置10bが作成し、承認されることによって)第2トランザクションTx2が仮想通貨Xのブロックチェーンネットワークxに公開されているか否かを判定する。第2トランザクションTx2はハッシュ値Hを含む。
または、アトミックスワップ実行処理部25は、端末装置10bから第2トランザクションTx2のトランザクションIDを受け取ってもよい。そして、アトミックスワップ実行処理部25は、受け取ったトランザクションTx2のトランザクションIDを用いてブロックチェーン上のデータを検索する。これにより、アトミックスワップ実行処理部25は、ブロックチェーン上に第2トランザクションTx2が公開されているか否かを判定する。
第2トランザクションTx2が公開されていると判定した場合(ステップS159でYes)、CPU11(アトミックスワップ実行処理部25)は、ステップS160において、ハードウェアウォレットを制御し、ハードウェアウォレットHW_Aに格納された秘密鍵を利用して第3トランザクションTx3用の利用者Aの電子署名SigA2を生成させる。
そして、CPU11(アトミックスワップ実行処理部25)は、ステップS161において、電子署名を付した第1トランザクションTx1を作成し、CPU11(トランザクション送出処理部64)は、ステップS162において、第3トランザクションTx1を仮想通貨Yのブロックチェーンネットワークyに送出する。
買い側の端末装置は、ここでは端末装置10bが該当し、図13の説明におけるCPU11は、端末装置10bのCPU11である。
CPU11(アトミックスワップ実行処理部25)は、ステップS171において、買い注文に基づいて、送金先、送金額を設定する。
そして、CPU11(アトミックスワップ実行処理部25)は、ステップS172において、第1トランザクションTx1が仮想通貨Yのブロックチェーンネットワークyに公開されているか否かを判定する。
または、アトミックスワップ実行処理部25は、端末装置10aから第1トランザクションTx1のトランザクションIDを受け取ってもよい。そして、アトミックスワップ実行処理部25は、受け取ったトランザクションTx1のトランザクションIDを用いてブロックチェーン上のデータを検索する。これにより、アトミックスワップ実行処理部25は、ブロックチェーン上に第1トランザクションTx1が公開されているか否かを判定する。
第1トランザクションTx1が公開されていると判定した場合(ステップS172でYes)、CPU11(アトミックスワップ実行処理部25)は、ステップS173において、第1トランザクションTx1に含まれるハッシュ値Hの値を取得する。
CPU11(アトミックスワップ実行処理部25)は、ステップS178において、第3トランザクションTx3が仮想通貨Yのブロックチェーンネットワークyに公開されているか否かを判定する。
あるいは、第3トランザクションTx3を作成した端末装置10aから、第3トランザクションTx3のトランザクションIDを受け取ることで、そのトランザクションIDに該当するトランザクションを検索することによって、第3トランザクションTx3をブロックチェーンから探し出すことが出来る。
第3トランザクションTx3が公開されていると判定した場合(ステップS178でYes)、CPU11(ネットワーク探索処理部65)は、ステップS179において、第3トランザクションTx3のインプットにおける秘密の値Rを取得する。
従って、アトミックスワップで得られた(得られる予定の)仮想通貨をさらに別の取引に用いたい(回転取引を行いたい)と利用者が考えても、仮想通貨は直ぐに利用可能な状態とはならない。
そこで本実施形態のシステムでは、取引サーバ40は、アトミックスワップでやりとりされる仮想通貨を担保として与信を行い、仮想通貨を双方の利用者に貸し付けることができる。
より具体的には、アトミックスワップのトランザクションを監視し、未承認のトランザクション分は、キャンセルもしくは相当する対価が送金されるものとして、仮想通貨を貸し付ける。キャンセルとは、引の有効期限が過ぎると仮想通貨を元の持ち主に戻す処理のことである。
また、売り注文を出している利用者の過去の取引成功確率をブロックチェーンから計算し、与信する仮想通貨の種類と数量とを決定することも出来る。
取引サーバ40のCPU41(取引評価処理部55)は、ステップS301において、アトミックスワップの成功確率の評価タイミングであるか否かを判定する。
評価タイミングであると判定した場合(ステップS301でYes)、CPU41(取引評価処理部55)は、ステップS302において、ブロックチェーンネットワークを探索して、特定の利用者が開始したアトミックスワップの全てのトランザクションTx1(ハッシュ値Hを含む)を収集し、ステップS303において、利用者毎に、見つかったトランザクションTx1を計数する。
特定の利用者が開始した全てのアトミックスワップが正常に開始された場合、その利用者が公開した第1トランザクションTx1の数と、第3トランザクションTx3の数は一致するはずである。
一致しない場合、その利用者は、ランダムな値Rを開示せずにアトミックスワップを中断し、その結果、取引の相手も仮想通貨を受け取っていないことになる。
そして、CPU41は、ステップS307において、ステップS306で計算した成功確率、ステップS305で計数した成功回数、ステップS303で計数した試行回数(母数)を、利用者毎に関連づけて取引評価記憶部63に格納する。
なお、図14のフローチャートでは、特定の利用者について過去の全てのアトミックスワップのトランザクションを収集するようにしているが、これは初回の評価にのみ必要な処理であり、次回以降の取引評価タイミングでは、初回以降に新たに発生したアトミックスワップのトランザクションのみを取得して、過去分と合算して取引成功確率などを算出することが出来る。
この方法によっては、特定の利用者が最初に本実施形態の仕組みを用いて売り注文を行い、本実施形態の買い板にその売り注文が表示された時点から、その利用者の過去の取引成功確率や成功回数を全て表示することが出来る。
その反面、全ての利用者について取引履歴を追跡することは、処理負荷や管理すべき情報量の上で問題があるとも言える。本実施形態の仕組みを利用しない利用者の情報は、無駄であると考えられるからである。
そこで、下記に示す売買マッチング後の処理内において、買い板102から開始されたアトミックスワップの成否に基づいて、買い板102に表れた売り側利用者の取引成功確率のみを評価するようにしてもよい。
これにより、ブロックチェーンを探索する負荷や利用者毎の取引成功確率の情報量を著しく低減することが出来る。
CPU41(買い注文通知処理部54)は、ステップS401においてブロックチェーンネットワークを探索し、板情報に含まれる売り注文に対応する買い注文のトランザクションが公開されたか否かを判定する。
そのようなトランザクションが公開されたと判定した場合(ステップS401でYes)、CPU41(買い注文通知処理部54)は、ステップS402において、売り注文のOP_RETURNに通知先(IPアドレス、URL)の記載があったか否かを判定する。
通知先の記載がないと判定した場合には(ステップS402でNo)、CPU41はステップS404に処理を進める。
売り側の端末装置10aにおいて売り注文が行われた後、買い側の端末装置10bで買い注文が行われた場合、に売り側の端末装置にオフラインとなっているとアトミックスワップを開始することが出来ない。
そこで、本実施形態の取引サーバ40では、板情報から買い注文が行われた場合に、対応する売り注文のOP_RETUNに記載された通知先(IPアドレス、URL)に対して通知を行うことで、売り側の端末装置がオンラインとなるように促す。
このように制御することで、板情報を用いて買い注文が行われた場合に、売り注文を行った端末装置(ウォレット)を確実にオンラインとさせて、円滑に取引を開始することが出来る。
第1トランザクションTx1が公開されたと判定した場合(ステップS404でYes)、CPU41(与信・貸付処理部56)は、ステップ405において、買い側の端末装置10bによって第2トランザクションTx2が公開されたか否かを判定する。
第2トランザクションTx2が公開されたと判定した場合(ステップS405でYes)CPU41(与信・貸付処理部56)は、ステップS406において、売り側の端末装置10aによって第3トランザクションTxがすでに公開されたか否かを判定する。
第3トランザクションTx3がまだ公開されていないと判定した場合(ステップS405でNo)、第4トランザクションTx4も当然公開されていないと考えられる。
この状態は、アトミックスワップのために双方の利用者が「送金」した仮想通貨が滞留し、どちらの利用者も受取をしていない状態である。
貸し付ける仮想通貨、貸付額を決定するための基準が、今回の取引における「売り側」に当たる利用者の成功確率であるのは。本実施形態において、ランダムな値Rを決定して取引の主導権を持っているのは売り側の利用者だからである。アトミックスワップの成否は、売り側の利用者がRの値を含む第3トランザクションTx3を公開するか否かに懸かっているため、売り側の利用者の成功確率で取引を評価する
<第1例>
ビットコインの売り注文を出している売り側の利用者の過去の取引成功確率が例えば60%の場合、取引サーバ40(与信・貸付処理部56)は、売り側の利用者にはライトコインの取引数量を上限にライトコインを貸し出す。これは、アトミックスワップが成功して売り側がビットコインと引き換えにライトコインを受け取る可能性が比較的高い(60%)ためである。ライトコインの取引数量とは、売り注文及び対応する買い注文で規定されたビットコインと交換するライトコインの数量のことである。
この例の与信・貸付処理では、売り側の利用者の過去の取引成功確率が50%を超える場合、アトミックスワップが成立して、互いに所望する仮想通貨を受け取る可能性が比較的高いため、注文された数量を上限として、取引で受け取る予定の仮想通貨を事前に(取引成立前に)送金する。
逆に、売り側の利用者の過去の取引成功確率が50%以下(未満)であれば、アトミックスワップが成立しない可能性が比較的高い。その場合、仮想通貨の貸付(送金)自体行わないようにするようにしてもよい。あるいは、取引がキャンセルされることを前提に、売り側、買い側の取引の元手となっている仮想通貨(この例であれば、売り側ではビットコイン、買い側ではライトコイン)を、取引数量を上限に売り側、買い側の利用者夫々に貸し出してもよい。
また、上記の<第1例>に比べて細かく条件を設定してもよい。
すなわち、ビットコインの売り注文を出している売り側の利用者の過去の取引成功確率が60%の場合、取引サーバ40(与信・貸付処理部56)は、売り側の利用者には、売り注文及び対応する買い注文で規定されたライトコインの取引数量の6割を上限にライトコインを貸し出すとともに、ビットコインの取引数量の4割を上限にビットコインを貸し出す。
それに対し、取引サーバ40(与信・貸付処理部56)は、買い側の利用者には、ビットコインの取引数量の6割を上限にビットコインを貸し出すとともに、ライトコインの取引数量の4割を上限にライトコインを貸し出す。
売り側の利用者の過去の実績によれば、売り側の利用者は、60%の確率で取引が成功してライトコインを手に入れ、40%の確率で元手のビットコインを取り戻し、売り側の利用者は、60%の確率で取引が成功してビットコインを手に入れ、40%の確率で元手のライトコインを取り戻すと考えられる。
この確率を元に、売り側、買い側双方の利用者に貸し付ける仮想通貨、数量を決定している。
フローチャートの説明に戻り、ステップS408において、CPU41は、売り側の利用者に、ステップS407で決定した数量の仮想通貨を送金するトランザクションをブロードキャストする。
そして、ステップS409において、取引サーバ40のCPU41は、売り側の利用者に、ステップS407で決定した数量の仮想通貨を送金するトランザクションをブロードキャストする。
また、アトミックスワップがキャンセルされる場合でも、実際に取引がタイムアウトして元手を取り戻せるようになるまでの時間を無駄にせず、いち早く仮想通貨を受け取って別の取引に利用することが出来る。
このようなことを可能とすることで、仮想通貨の使い勝手、利便性を飛躍的に高めることが出来る。
図6、図7に示した利用者A〜Fについて、図14の処理で各利用者の過去の取引が以下のように評価されたとする。
すなわち、利用者Aは、100回試行したアトミックスワップが50回成功し、成功確率は50%である。
また、利用者Bは、40回試行したアトミックスワップが12回成功し、成功確率は30%である。
また、利用者Cは、5回試行したアトミックスワップが5回成功し、成功確率は100%である。
また、利用者Dは、30回試行したアトミックスワップが15回成功し、成功確率は50%である。
また、利用者Eは、30回試行したアトミックスワップが30回成功し、成功確率は100%である。
また、利用者Fは、70回試行したアトミックスワップが42回成功し、成功確率は60%である。
この場合、配信サーバ40で生成される板情報では、例えば、図16に示すように、売り注文は、成功確率が高い順、利用者E→利用者C→利用者F→利用者A→利用者D→利用者Bの順番で表示されてもよい。成功率が同じ場合は、成功回数が多い利用者の売り注文を上に表示する。
また、成功確率ではなく、単に、成功回数が多い利用者の売り注文を上に表示するようにしてもよい。
以上のように、取引条件(交換レート)のみならず、アトミックスワップが成功する蓋然性を買い板102上で視認可能としたことで、好ましい取引を判断可能として取引の利便性を大いに高めることが出来る。
Claims (13)
- 第1の仮想通貨と第2の仮想通貨とを交換する取引を行う仮想通貨取引装置であって、
当該仮想通貨取引装置の利用者が所望する数量の前記第1の仮想通貨と交換する前記第2の仮想通貨の数量を指定した注文内容を入力させる入力手段と、
該入力手段によって入力された前記注文内容を、前記第1の仮想通貨の売り注文としてネットワークに送出する売り注文送出手段と、
ネットワークに送出された売り注文を板情報として表示する板情報表示手段と、
を備えることを特徴とする仮想通貨取引装置。 - 請求項1に記載の仮想通貨取引装置において、
前記取引は、一の利用者からの前記第1の仮想通貨の送金を示す、特定情報を含む第1の送金情報と、前記一の利用者に対して送金された前記第2の仮想通貨の受け取りを示す第1の受取情報と、他の利用者からの前記第2の仮想通貨の送金を示す、前記特定情報を含む第2の送金情報と、前記他の利用者に対して送金された前記第1の仮想通貨の受け取りを示す第2の受取情報と、がネットワークに公開されることにより行われ、
前記板情報表示手段が表示する前記売り注文の中から、所望の売り注文を選択させる選択手段と、
該選択手段による売り注文の選択に係る情報を、前記第2の仮想通貨と交換する前記第1の仮想通貨の買い注文としてネットワークに送出する買い注文送出手段と、
他の仮想通貨取引装置によって前記売り注文に対応する買い注文がネットワークに公開されたとき、前記第1の送金情報を公開して、前記他の仮想通貨取引装置と前記取引を開始する取引実行手段と、
を備えることを特徴とする仮想通貨取引装置。 - 請求項1又は2に記載の仮想通貨取引装置において、
前記板情報表示手段は、
ネットワークに公開されている、特定の利用者に係る前記第1の送金情報の数に対する前記第1の受取情報の数に基づいた当該利用者に係る前記取引の成功回数及び成功確率を付与した前記板情報を表示することを特徴とする仮想通貨取引装置。 - 請求項1乃至3の何れか一項に記載の仮想通貨取引装置において、
前記売り注文送出手段によって前記売り注文を送出するときに、
所定の送金先に対する送金情報であって、手数料に対応する仮想通貨の送金を示す送金情報をネットワークに送出する手数料支払い手段を備えることを特徴とする仮想通貨取引装置。 - 請求項1乃至4の何れか一項に記載の仮想通貨取引装置において、
前記売り注文送出手段は、前記売り注文を送出するときに、当該売り注文を行った仮想通貨取引装置に係る通知先情報を前記注文内容に含めて送出することを特徴とする仮想通貨取引装置。 - 複数の仮想通貨取引装置間の仮想通貨の取引を仲介する取引サーバ装置であって、
各仮想通貨取引装置は、第1の仮想通貨に対する第2の仮想通貨の交換数量を指定した売り注文をネットワークに送出し、前記売り注文に対応する買い注文をネットワークに送出し、
ネットワークに送出された売り注文に基づく板情報を生成する板情報生成手段と、
前記板情報を前記仮想通貨取引装置に配信する板情報配信手段と、
を備えることを特徴とする取引サーバ装置。 - 請求項6に記載の取引サーバ装置において、
前記売り注文は、当該売り注文を行った仮想通貨取引装置に係る通知先情報を含み、
前記取引サーバ装置は、前記ネットワークに公開された売り注文に対応する買い注文があった場合、前記通知先情報が示す通知先に通知を行うことを特徴とする取引サーバ装置。 - 請求項6又は7に記載の取引サーバ装置において、
前記取引は、一の利用者からの仮想通貨の送金を示す、第1の特定情報を含む第1の送金情報と、前記一の利用者に対して送金された仮想通貨の受け取りを示す第2の特定情報を含む第1の受取情報と、他の利用者からの仮想通貨の送金を示す前記第1の特定情報を含む第2の送金情報と、前記他の利用者に対して送金された仮想通貨の受け取りを示す前記第2の特定情報を含む第2の受取情報と、がネットワークに公開されることにより行われ、
前記第1の送金情報に係る仮想通貨の数量に基づいて、前記一の利用者に対して仮想通貨を送金し、前記第2の送金情報に係る仮想通貨の数量に基づいて、前記他の利用者に対して仮想通貨を送金する送金手段を備えることを特徴とする取引サーバ装置。 - 請求項8に記載の取引サーバ装置において、
ネットワークに公開されている、特定の利用者に係る前記第1の送金情報の数に対する前記第1の受取情報の数に基づいて、当該利用者に係る前記取引の成功回数及び成功確率を評価する評価手段を備え、
前記板情報生成手段は、前記評価手段による評価結果に基づいて、前記売り注文に係る利用者の評価結果を、前記板情報に付与することを特徴とする取引サーバ装置。 - 請求項9に記載の取引サーバ装置において、
ネットワークに公開されている、特定の利用者に係る前記第1の送金情報の数に対する前記第1の受取情報の数に基づいて、当該利用者に係る前記取引の成功回数及び成功確率を評価する評価手段を備え、
前記送金手段は、前記評価手段による評価結果に基づいて、送金する仮想通貨の種類及び数量を決定することを特徴とする取引サーバ装置。 - 第1の仮想通貨と第2の仮想通貨とを交換する取引を行う仮複数の仮想通貨取引装置と、取引サーバ装置と、を備える仮想通貨取引システムであって、
前記仮想通貨取引装置は、
当該仮想通貨取引装置の利用者が所望する数量の前記第1の仮想通貨と交換する前記第2の仮想通貨の数量を指定した注文内容を入力させる入力手段と、
該入力手段によって入力された前記注文内容を、前記第1の仮想通貨の売り注文としてネットワークに送出する売り注文送出手段と、
ネットワークに送出された売り注文を板情報として表示する板情報表示手段と、
を備え、
前記取引サーバ装置は、
前記ネットワークに送出された売り注文に基づく板情報を生成する板情報生成手段と、
前記板情報を前記仮想通貨取引装置に配信する板情報配信手段と、
を備え、
前記板情報表示手段は、前記板情報配信手段によって配信された前記板情報を、前記表示装置に表示させる、
ことを特徴とする仮想通貨取引システム。 - 入力手段と、売り注文送出手段と、板情報表示手段を備え、第1の仮想通貨と第2の仮想通貨と交換する取引を行う仮想通貨取引装置の仮想通貨取引方法であって、
前記入力手段が、当該仮想通貨取引装置の利用者が所望する数量の前記第1の仮想通貨と交換する前記第2の仮想通貨の数量を指定した注文内容を入力させるステップと、
前記売り注文送出手段が、前記入力手段によって入力された前記注文内容を、前記第1の仮想通貨の売り注文としてネットワークに送出するステップと、
前記板情報表示手段が、ネットワークに送出された売り注文を板情報として表示するステップと、
を含むことを特徴とする仮想通貨取引方法。 - 請求項12に記載の仮想通貨取引方法をコンピュータに実行させるプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018132286A JP6959649B2 (ja) | 2018-07-12 | 2018-07-12 | 仮想通貨取引装置、取引サーバ装置、仮想通貨取引システム、仮想通貨取引方法及びプログラム |
JP2021116075A JP7141147B2 (ja) | 2018-07-12 | 2021-07-14 | 取引サーバ装置、仮想通貨取引方法及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018132286A JP6959649B2 (ja) | 2018-07-12 | 2018-07-12 | 仮想通貨取引装置、取引サーバ装置、仮想通貨取引システム、仮想通貨取引方法及びプログラム |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021116075A Division JP7141147B2 (ja) | 2018-07-12 | 2021-07-14 | 取引サーバ装置、仮想通貨取引方法及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2020009361A true JP2020009361A (ja) | 2020-01-16 |
JP6959649B2 JP6959649B2 (ja) | 2021-11-02 |
Family
ID=69151986
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018132286A Active JP6959649B2 (ja) | 2018-07-12 | 2018-07-12 | 仮想通貨取引装置、取引サーバ装置、仮想通貨取引システム、仮想通貨取引方法及びプログラム |
JP2021116075A Active JP7141147B2 (ja) | 2018-07-12 | 2021-07-14 | 取引サーバ装置、仮想通貨取引方法及びプログラム |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021116075A Active JP7141147B2 (ja) | 2018-07-12 | 2021-07-14 | 取引サーバ装置、仮想通貨取引方法及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (2) | JP6959649B2 (ja) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001265964A (ja) * | 2000-03-21 | 2001-09-28 | Sharp Corp | 取引価格算出装置、取引価格算出方法およびその方法を実現するプログラムを記録した機械読取可能な記録媒体 |
US20050108027A1 (en) * | 2003-11-17 | 2005-05-19 | Horger Lee C. | Method and apparatus for collecting gambling statistics and for selling speculations via a cryptographically-assisted network |
JP2007109020A (ja) * | 2005-10-13 | 2007-04-26 | Central Tanshi Shoken Kk | サーバー装置、取引端末、コンピュータプログラム及び記憶媒体 |
JP2013041423A (ja) * | 2011-08-16 | 2013-02-28 | Tokyo Stock Exchange Inc | 板情報解析装置、板情報解析方法、及びプログラム |
US20150294417A1 (en) * | 2014-04-10 | 2015-10-15 | Cfph, Llc | Spot fixing auction |
JP2018045540A (ja) * | 2016-09-15 | 2018-03-22 | 健 坪井 | 仮想通貨アドレスを含む預金口座情報開示システム |
-
2018
- 2018-07-12 JP JP2018132286A patent/JP6959649B2/ja active Active
-
2021
- 2021-07-14 JP JP2021116075A patent/JP7141147B2/ja active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001265964A (ja) * | 2000-03-21 | 2001-09-28 | Sharp Corp | 取引価格算出装置、取引価格算出方法およびその方法を実現するプログラムを記録した機械読取可能な記録媒体 |
US20050108027A1 (en) * | 2003-11-17 | 2005-05-19 | Horger Lee C. | Method and apparatus for collecting gambling statistics and for selling speculations via a cryptographically-assisted network |
JP2007109020A (ja) * | 2005-10-13 | 2007-04-26 | Central Tanshi Shoken Kk | サーバー装置、取引端末、コンピュータプログラム及び記憶媒体 |
JP2013041423A (ja) * | 2011-08-16 | 2013-02-28 | Tokyo Stock Exchange Inc | 板情報解析装置、板情報解析方法、及びプログラム |
US20150294417A1 (en) * | 2014-04-10 | 2015-10-15 | Cfph, Llc | Spot fixing auction |
JP2017510904A (ja) * | 2014-04-10 | 2017-04-13 | シーエフピーエイチ, エル.エル.シー. | スポットフィックスオークション |
JP2018045540A (ja) * | 2016-09-15 | 2018-03-22 | 健 坪井 | 仮想通貨アドレスを含む預金口座情報開示システム |
Non-Patent Citations (5)
Title |
---|
"トレード初心者でもわかる!bitFlyer Lightning 操作方法〜証拠金入金から注文種別まで〜", [ONLINE], JPN6020034518, 8 December 2017 (2017-12-08), ISSN: 0004577067 * |
MANSI PRAKASH: "Ecosystem of Decentralized Exchanges", [ONLINE], JPN6020034521, 30 May 2018 (2018-05-30), ISSN: 0004600804 * |
PHIDEAS, BARTERDEX WHITEPAPER V2, JPN6020034517, 9 November 2017 (2017-11-09), ISSN: 0004577066 * |
ナラヤナン アーヴィンド, 仮想通貨の教科書, vol. 第1版, JPN6020034519, 9 December 2016 (2016-12-09), JP, pages 424 - 427, ISSN: 0004577068 * |
鹿子木 健, 2時間で丸わかり 仮想通貨の超入門書, vol. 第1版, JPN6020034520, 15 March 2018 (2018-03-15), pages 155 - 169, ISSN: 0004600803 * |
Also Published As
Publication number | Publication date |
---|---|
JP7141147B2 (ja) | 2022-09-22 |
JP6959649B2 (ja) | 2021-11-02 |
JP2021168185A (ja) | 2021-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Sunyaev et al. | Distributed ledger technology | |
JP6364132B2 (ja) | ブロックチェーン取引記録のシステムおよび方法 | |
US11182781B2 (en) | Block chain encryption tags | |
TWI822653B (zh) | 以令牌化來進行以區塊鏈為基礎的匯兌 | |
US10380574B2 (en) | Peer-to-peer internet shopping marketplaces | |
Franco | Understanding Bitcoin: Cryptography, engineering and economics | |
JP7254701B2 (ja) | ブロックチェーン上に格納されたユーザ関連データを生成し及び抽出するコンピュータにより実装されるシステム及び方法 | |
US20200051041A1 (en) | System and method for arbitrating a blockchain transaction | |
KR20210024994A (ko) | 디지털 자산 교환 | |
CA3004263C (en) | Virtual currency system | |
Schar et al. | Bitcoin, blockchain, and cryptoassets: A comprehensive introduction | |
JP2001524233A (ja) | バーチャルプロパティシステム | |
WO2020233404A1 (zh) | 交易系统、方法以及交易系统中的节点 | |
JP6404435B1 (ja) | アイテム取引システム及びアイテム取引プログラム | |
KR102181078B1 (ko) | 블록체인 기반 중고거래 플랫폼 시스템 | |
US20180152429A1 (en) | Systems and methods for publicly verifiable authorization | |
JP2020048161A (ja) | 取引装置、取引方法及び取引プログラム | |
KR20200073803A (ko) | 블록체인 전자지갑 관리 시스템 | |
JP2019079502A (ja) | アイテム取引システム及びアイテム取引プログラム | |
KR20200130558A (ko) | 암호 화폐 거래소의 타거래소 연동거래 운영 방법 | |
JP7141147B2 (ja) | 取引サーバ装置、仮想通貨取引方法及びプログラム | |
JP6853422B1 (ja) | オンライン取引情報保護システムおよびオンライン取引情報保護方法 | |
TW202130153A (zh) | 區塊鏈交易之回叫機制 | |
JP7048039B1 (ja) | 決済システム、決済装置、決済方法及び決済プログラム | |
Hellwig et al. | Cryptocurrencies |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190912 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20200715 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20200915 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20201106 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20210420 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210714 |
|
C60 | Trial request (containing other claim documents, opposition documents) |
Free format text: JAPANESE INTERMEDIATE CODE: C60 Effective date: 20210714 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20210726 |
|
C21 | Notice of transfer of a case for reconsideration by examiners before appeal proceedings |
Free format text: JAPANESE INTERMEDIATE CODE: C21 Effective date: 20210727 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210824 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210915 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20210928 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20211001 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6959649 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |