(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022089542
(43)【公開日】2022-06-16
(54)【発明の名称】処理システム、処理装置、処理方法及び処理プログラム
(51)【国際特許分類】
G06Q 20/38 20120101AFI20220609BHJP
【FI】
G06Q20/38 310
【審査請求】有
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2020202004
(22)【出願日】2020-12-04
(71)【出願人】
【識別番号】398034168
【氏名又は名称】株式会社アクセル
(74)【代理人】
【識別番号】100085660
【弁理士】
【氏名又は名称】鈴木 均
(74)【代理人】
【識別番号】100149892
【弁理士】
【氏名又は名称】小川 弥生
(74)【代理人】
【識別番号】100185672
【弁理士】
【氏名又は名称】池田 雅人
(72)【発明者】
【氏名】星月 優佑
【テーマコード(参考)】
5L055
【Fターム(参考)】
5L055AA73
(57)【要約】 (修正有)
【課題】ブロックチェーンを用いたロック解除機構によって、プリペイド決済やロック解除のシステムにおける管理用のデータベースサーバの障害に関する問題を解決する処理システム、処理装置、処理方法及び処理プログラムを提供する。
【解決手段】分散型台帳上のID情報を用いたロック解除システムにおいて、管理装置70は、決済装置80が所定動作を行う契機となる所定の秘密情報を決定し、所定動作を行う条件となる特定情報を含む第1トランザクションTxAがネットワークに公開する。決済装置80は、特定情報が所定の条件を満たす場合には、第1トランザクションTxAをアンロックするための第2トランザクションTxBを作成をネットワークに公開する。
【選択図】
図4
【特許請求の範囲】
【請求項1】
第1装置と、第2装置と、を備え、
前記第1装置は、
秘密情報を決定する決定部と、
前記秘密情報を出力する出力部と、
前記第2装置は、
前記秘密情報を譲渡されたユーザから前記秘密情報を受け取る受取部と、
秘密情報を用いてアンロックすることにより取り出し可能な出力情報と、識別情報とを含む第1トランザクションが分散型台帳に公開されたとき、前記受取部により受け取った秘密情報を用いて前記第1トランザクションがアンロック可能な場合、前記第1トランザクションに含まれる前記識別情報を取得する取得部と、
前記取得部により取得した前記識別情報が決められた情報であるとき、指定の処理を実行する実行部と、
を備えることを特徴とする処理システム。
【請求項2】
請求項1に記載の処理システムにおいて、
前記取得部は、
前記第1トランザクションが分散型台帳に公開されたとき、前記受取部により受け取った秘密情報を用いて前記第1トランザクションがアンロック可能な場合、前記受取部により受け取った秘密情報を含む第2トランザクションを分散型台帳に公開し、前記第1トランザクションをアンロックする
ことを特徴とする処理システム。
【請求項3】
請求項1に記載の処理システムにおいて、
前記第1トランザクションは、
前記第2装置の電子署名をさらに用いてアンロック可能である、
ことを特徴とする処理システム。
【請求項4】
請求項3に記載の処理システムにおいて、
前記取得部は、
前記第1トランザクションが分散型台帳に公開されたとき、前記受取部により受け取った秘密情報と、前記第2装置の電子署名とを用いて前記第1トランザクションがアンロック可能な場合、前記受取部により受け取った秘密情報と、前記第2装置の電子署名とを含む第2トランザクションを分散型台帳に公開し、前記第1トランザクションをアンロックする、
ことを特徴とする処理システム。
【請求項5】
請求項1乃至4の何れか一つに記載の処理システムにおいて、
前記識別情報は、
暗号資産の量であり、
前記実行部は、
前記取得部により取得した暗号資産の量が指定の条件を満たすとき、指定の処理を実行する
ことを特徴とする処理システム。
【請求項6】
請求項1乃至5の何れか一つに記載の処理システムにおいて、
前記秘密情報は、
記憶媒体に格納されてユーザに譲渡され、
前記受取部は、
前記記憶媒体を介して前記秘密情報を取得する
ことを特徴とする処理システム。
【請求項7】
請求項1乃至6の何れか一項に記載の処理システムにおいて、
前記第2装置は、
利用履歴を記憶する記憶部
を備えることを特徴とする処理システム。
【請求項8】
請求項2又は4に記載の処理システムにおいて、
前記取得部は、
前記第1トランザクションの改ざん成功確率が十分に低くなったとき、第2トランザクションを分散型台帳に公開する
ことを特徴とする処理システム。
【請求項9】
秘密情報を受け取る受取部と、
秘密情報を用いてアンロックすることにより取り出し可能な出力情報と、識別情報とを含む第1トランザクションが分散型台帳に公開されたとき、前記受取部により受け取った秘密情報を用いて前記第1トランザクションがアンロック可能な場合、前記第1トランザクションに含まれる前記識別情報を取得する取得部と、
前記取得部により取得した前記識別情報が決められた情報であるとき、指定の処理を実行する実行部と、
を備えることを特徴とする処理装置。
【請求項10】
プロセッサによって実行される処理方法であって、
秘密情報を受け取り、
秘密情報を用いてアンロックすることにより取り出し可能な出力情報と、識別情報とを含む第1トランザクションが分散型台帳に公開されたとき、前記受取部により受け取った秘密情報を用いて前記第1トランザクションがアンロック可能な場合、前記第1トランザクションに含まれる前記識別情報を取得し、
前記取得部により取得した前記識別情報が決められた情報であるとき、指定の処理を実行する、
ことを特徴とする処理方法。
【請求項11】
プロセッサに実行させる処理プログラムであって、
秘密情報を受け取り、
秘密情報を用いてアンロックすることにより取り出し可能な出力情報と、識別情報とを含む第1トランザクションが分散型台帳に公開されたとき、前記受取部により受け取った秘密情報を用いて前記第1トランザクションがアンロック可能な場合、前記第1トランザクションに含まれる前記識別情報を取得し、
前記取得部により取得した前記識別情報が決められた情報であるとき、指定の処理を実行する、
ことを特徴とする処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、処理システム、処理装置、処理方法及び処理プログラムに関する。
【背景技術】
【0002】
スマートフォンの画面に表示させたバーコード等を、店頭のPOSレジに読ませることによって決済を行うコード決済が知られている(例えば、特許文献1参照)。このようなコード決済は、一般にプリペイド型のものが知られており、オンラインでのクレジットカード払いや店頭での現金払いなどによってアカウントにチャージを行い、バーコード等を用いた支払い時には、チャージ金額から必要な金額を引き落とす。
このように支払時にスマートフォンに表示するバーコード等は、アカウントに紐付くID情報であり、購入者が現金等を事前に支払ったことを証明するものである。
すなわち、プリペイド決済は、金銭の事前支払いによって得られた商品やサービスを受け取る権利に対するロックをID情報の提示を条件に解除する決済方法であると言える。
プリペイド決済のシステムは、本質的にID情報に基づくロック解除システムである。
このようなロック解除システムとして、スマートロックのシステムも知られている。作業員等はID情報を格納したスマートキーを携行し、スマートキーを自動販売機の扉や建物のオートロックにかざしたり、差し込んだりする。管理装置は、データベースサーバに問い合わせ、ID情報が許可対象であれば、自動販売機や建物の施錠を解除する。
プリペイド残高の不正使用や不正解錠を防ぐために、ID情報は二度以上使用できないことが望ましい。実際、上記したコード決済では、一度決済に用いたバーコードは再度使えず、バーコードを更新しないと次回の決済を行えないことが知られている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記したようなプリペイド決済やロック解除のシステムを構築するためには、ID情報や、使用状態を管理するためのデータベースサーバが必要となる。
従って、データベースサーバに障害が発生したときには、ID情報の管理ができず、正常に決済や施錠の解除を行うことが困難である、という問題がある。
本発明は、一側面として、ID情報に基づくロック解除機構において、ID情報を管理するデータベースサーバに由来する問題点を解決するものである。
【課題を解決するための手段】
【0005】
本発明は、上記の課題を解決するためになされたものであり、以下の形態により実現することができる。
本発明に係る第1の形態は、第1装置と、第2装置と、を備え、前記第1装置は、秘密情報を決定する決定部と、前記秘密情報を出力する出力部と、前記第2装置は、前記秘密情報を譲渡されたユーザから前記秘密情報を受け取る受取部と、秘密情報を用いてアンロックすることにより取り出し可能な出力情報と、識別情報とを含む第1トランザクションが分散型台帳に公開されたとき、前記受取部により受け取った秘密情報を用いて前記第1トランザクションがアンロック可能な場合、前記第1トランザクションに含まれる前記識別情報を取得する取得部と、前記取得部により取得した前記識別情報が決められた情報であるとき、指定の処理を実行する実行部と、を備える処理システムを特徴とする。
【発明の効果】
【0006】
一実施態様によれば、ID情報に基づくロック解除機構において、ID情報を管理するデータベースサーバに由来する問題点を解決することができる。
【図面の簡単な説明】
【0007】
【
図1】本実施形態に係るネットワーク構造の一例を示す図である。
【
図3】アトミックスワップの処理の一例を示す図である。
【
図4】第1実施例のロック解除処理の流れを説明する図である。
【
図5】
図4で説明したロック解除処理を説明するフローチャートである。
【
図6】第2実施例のロック解除処理の流れを説明する図である。
【
図7】
図6で説明したロック解除処理を説明するフローチャートである。
【
図8】第3実施例のロック解除処理の流れを説明する図である。
【
図9】
図8で説明した解錠処理を説明するフローチャートである。
【
図10】管理装置が有する機能を示すブロック図である。
【
図11】決済装置が有する機能を示すブロック図である。
【
図12】利用者装置が有する機能を示すブロック図である。
【
図13】コンピュータ装置の一実施例を示すブロック図である。
【発明を実施するための形態】
【0008】
以下に、図面を参照して、本発明の実施の形態を詳細に説明する。
本実施形態のシステムは分散型台帳上のID情報を用いたロック解除システムである。
後述するように、分散型台帳技術を用いた本実施形態のロック解除システムの一例として、プリペイド決済のシステムやスマートロックのシステムがある。
分散型台帳は分散型台帳技術(Distributed Ledger Technology)に基づくものであり、電子署名とハッシュポインタとを使用して改ざんを検出可能な構造のデータを、ネットワーク上に分散する複数のノードに保持させるという構成を有する。分散型台帳としては、例えば、ブロックチェーンやDAG(Directed acyclic graph)などが知られている。本明細書では、分散型台帳技術としてブロックチェーンを例に挙げて説明する。
なお、DAGでは、ユーザがトランザクションを作成したとき、先に公開されている未承認のトランザクションを承認する。ユーザが作成したトランザクションも、後から公開される未承認のトランザクションに承認される。閾値以上の未承認のトランザクションから直接または間接的に承認されたとき、ユーザが作成したトランザクションは、ネットワークで合意されたものとみなされる、というコンセンサスアルゴリズムを採用している。
上記のようにDAGは、以下で説明するブロックチェーンと、コンセンサスアルゴリズムに違いがあるものの、トランザクションの構造はブロックチェーンと同様のものを採用することができる。
したがって、分散型台帳としてブロックチェーンを利用する処理と、分散型台帳としてDAGを利用する処理とは、同様の構成のトランザクションを用いて実行することができる。このため、以下で説明する分散型台帳としてブロックチェーンを利用する処理は、分散型台帳としてDAGを利用して実行することも可能である。
まず、本実施形態のロック解除システムを実現する要素技術として、分散型台帳の一例としてのブロックチェーンと暗号資産の送金について概説する。
【0009】
[ブロックチェーン]
ブロックチェーンとは、複数の取引情報を含むブロックを生成し、生成したブロックを連結することにより、分散型ネットワークにデータを記録するデータベースである。
ブロックには、複数の取引情報に加えて、1つ前に生成されたブロックの内容を示すハッシュ値を含むので、ブロックチェーンは、生成されたブロックが時系列に沿ってつながっていくデータ構造を有する。ビットコインやモナコイン、イーサリアム等に代表される暗号資産(仮想通貨)の基礎技術である。
【0010】
資産の取引をトランザクションというデータ形式で表現し、それをP2Pネットワークで共有する。トランザクション全体をマークルツリーでまとめあげ、マークルツリーのルートノード(マークルルート)と前ブロックのハッシュ値、Nonceと呼ばれる任意の値などをまとめたハッシュ値が一定値以下になるようなNonceを探し当てる作業を、マイニングと呼ぶ。
マイニングに成功するとマイニング報酬が得られる。そのマイニング報酬を目当てにマイニングに投入される計算資源の多さによって、古いデータほど改ざんが難しくなる仕組みを、PoW(Proof of Work)型のブロックチェーンシステムと呼ぶ。
このように、何らかの報酬を与えることで、データベースへの信頼性を担保するための資源を提供させる仕組みのことをブロックチェーンと呼ぶ。
PoW型ブロックチェーン以外にもPoS型、PoI型のブロックチェーンも適用が可能だが説明は割愛する。
【0011】
[暗号資産の送金の仕組み]
現在主流となっている暗号資産には大きく分けて2種類がある。ビットコインから派生して開発されているライトコインやモナコインなどと、イーサリアムから派生して開発されているルートストックなどである。
前者の場合、暗号資産の実体は未使用のトランザクションの出力(Unspent Transaction Output、UTXO)である。
UTXOは通常、ECDSAという楕円曲線暗号を用いた電子署名によってのみアンロック可能なようにロックされている。また、特定の秘密鍵を持つ「所有者」にのみアンロックが可能とするため、通常UTXOには秘密鍵に対応する公開鍵が記述されている。
【0012】
UTXOに記述されている公開鍵に対応するECDSA電子署名を与えることでアンロックし、新たなトランザクションの入力に接続し、その新たなトランザクションのUTXOに送金先の所有者の公開鍵を記述することで、暗号資産の送金を実現している。
実際には、UTXOにはScriptPubKeyと呼ばれる領域があり、そこにはScriptと呼ばれるプログラミング言語で記述されたプログラムが書いてある。そのUTXOに接続しようとするトランザクションの入力には、ScriptSigと呼ばれる領域があり、この2つがちょうど対応づいている場合に、UTXOはアンロックされる。
イーサリアムやそこから派生した暗号資産については、スマートコントラクトを用いることで同様の仕組みを実現することが出来る。
【0013】
図1は、本実施形態に係るネットワーク構造の一例を示す図である。
ネットワークは、管理装置70と、決済装置80と、利用者装置90と、ネットワーク30と、ネットワーク40と、ネットワーク200、とを含む。そして、管理装置70と、決済装置80と、利用者装置90と、ネットワーク30と、ネットワーク40とはネットワーク200を介して互いに通信可能に接続されている。
管理装置70、決済装置80、及び利用者装置90は、例えば、後述するコンピュータ装置である。
図1に示すネットワークには取引装置10と取引装置20が含まれるが、これらは、本実施形態が参考にしているアトミックスワップを説明するために参照される。以下の説明において、取引装置10と取引装置20とを特に区別しないときは、単に取引装置ともいう。
【0014】
ネットワーク30及びネットワーク40は、P2Pネットワークなどの分散型ネットワークであり、ブロックチェーン上に取引情報を記録する。
以下の説明では、一例として、ネットワーク30は、例えば、ビットコインのコンセンサスアルゴリズムであるプルーフオブワーク(PoW)を採用しているものとして説明する。また、ネットワーク40は、例えば、ライトコインのコンセンサスアルゴリズムであるプルーフオブワークを採用しているものとして説明する。
【0015】
また、ネットワーク30内で発生した取引を記録するブロックチェーンのことをビットコインのブロックチェーンともいう。さらに、ネットワーク40内で発生した取引を記録するブロックチェーンのことをライトコインのブロックチェーンともいう。なお、ネットワーク30及びネットワーク40は、それぞれプルーフオブステーク(PoS)、プルーフオブインポータンス(PoI)、及びプルーフオブコンセンサス(PoC)などの他のコンセンサスアルゴリズムを採用してもよい。
【0016】
ネットワーク30は、マイニングを実行する複数のノード装置301から30nが通信可能に接続されている。また、ネットワーク40は、マイニングを実行する複数のノード装置401から40nが通信可能に接続されている。以下の説明では、ノード装置301から30nを特に区別しないときは、ノード装置300ともいう。また、ノード装置401から40nを特に区別しないときは、ノード装置400ともいう。
【0017】
プルーフオブワークにおいて、マイニングとは、ブロックに含まれるNanceを変化させながら、ブロックのデータにハッシュ関数を適用したとき、決められた数以上の0が上位に並ぶハッシュ値が得られるNance(以下、正しいNanceともいう)を探す作業のことである。ブロックのデータには、ブロックに連結される前ブロックのデータのハッシュ値と、Nanceと、取引情報とを含む。
【0018】
ノード装置は、ブロックを生成するとき、ブロックに含むトランザクションを検証する。そして、ノード装置は、正しいトランザクションを承認し、承認したトランザクションをブロックに含ませて、Nanceを探す作業を実行する。ノード装置は、正しいNanceを発見すると、正しいNanceを含むブロックを生成し、ノード装置が保持するブロックチェーンに新たに生成したブロックを連結する。また、ノード装置は、ブロックチェーンのネットワーク上に新たに生成したブロックを送信する。そして、新たに生成したブロックは、ネットワークに接続された他のノード装置が保持するブロックチェーンにも連結される。これにより、トランザクションは、ブロックチェーン上に記録される。以下の説明では、トランザクションを含んだブロックがブロックチェーンに連結されることを、トランザクションがブロックチェーンに記録されるともいう。
ネットワーク200は、ネットワーク30及びネットワーク40に限らず、さらに他のネットワークと接続されてもよい。また、ネットワーク200は、取引装置10、取引装置20、管理装置70、及び決済装置80に加えて、さらに他の取引装置と接続されてもよい。
【0019】
図2は、暗号資産の取引情報の一例を示す図である。
図2(a)は、取引情報の構成を説明する図である。
図2(b)は、取引情報を接続する処理を説明する図である。取引情報とは、暗号資産の引き渡しと、受け取りとを実行し、暗号資産の所有権を移転する処理に用いられるトランザクションのことである。
以下の説明では、トランザクションスクリプトとして、P2PKH(Pay to Public Key Hash)を用いるものとして説明する。なお、トランザクションスクリプトとして、P2PK(Pay to Public Key)を用いる場合には、UTXOをロックするScriptPubKeyは、UTXOの受領者である送信先の利用者の公開鍵を含む。また、P2PKにおいて、UTXOをアンロックするScriptSigは、UTXOの授与者であるトランザクションを作成する送信元の利用者の秘密鍵を用いて生成した電子署名を含む。
【0020】
UTXOは、トランザクションのインプットとして使われていない、未使用のトランザクションのアウトプットのことである。UTXOは、暗号資産の所有権であり、次のトランザクションのインプットとして使用される。したがって、暗号資産の送金とは、送金者によりUTXOが使用され、着金者によってのみ使用可能なUTXOが作成されることである。トランザクションのインプットとは、暗号資産の使用を処理する情報である。また、トランザクションのアウトプットとは、暗号資産の使途を処理する情報である。UTXOとは、Unspent Transaction Outputの略である。
【0021】
電子署名は、例えば、トランザクションのScriptSigを除くデータと、前トランザクションのScriptPubKeyとを用いて得られる電子署名用の値を、トランザクションを作成する送信元の利用者の秘密鍵で暗号化した値である。前トランザクションとは、送信元の利用者が送金時に作成するトランザクションのインプットと接続される、送信元の利用者への送金情報が記述されたアウトプットを含むトランザクションのことである。電子署名用の値とは、例えば、トランザクションのScriptSigを除くデータと、前トランザクションのScriptPubKeyとを含むデータにハッシュ関数を適用して得られる値である。
【0022】
図2(a)を参照してトランザクションの構成を説明する。
トランザクションは、暗号資産の所有の移転をまとめた取引情報である。トランザクションは、インプット(input)と、アウトプット(output)とを含む。
インプットは、トランザクションを作成する送信元の利用者が所有する前トランザクションのUTXOをアンロックするための情報である。そして、インプットは、ScriptSigを含む。
ScriptSigは、送信元の利用者が所有するUTXOをアンロックするためのスクリプトである。ScriptSigは、送信元の利用者の電子署名と公開鍵とを含む。ScriptSigに含まれる電子署名及び公開鍵は、送信元の利用者の秘密鍵を用いて生成された値である。
【0023】
アウトプットは、暗号資産の所有権の移転を示す情報である。アウトプットは、送金額と、ScirptPubKeyとを含む。
ScriptPubKeyは、トランザクションのアウトプットをアンロックするための条件を定義したスクリプトである。ScriptPubKeyは、送信先の利用者の秘密鍵を用いて生成された公開鍵のハッシュ値(以下、公開鍵ハッシュともいう)を含む。
【0024】
図2(b)を参照してトランザクションを接続する処理を説明する。以下の説明では、一例として、接続対象の前トランザクションのアウトプット0が、新規トランザクションに接続される処理を説明する。また、各トランザクションは、ネットワーク30内で処理されるものとする。
前トランザクションのアウトプットは、送金額とScirptPubKey0とを含むアウトプット0(output0)と、送金額とScirptPubKey1とを含むアウトプット1(output1)と、を含む。アウトプット0とアウトプット1とは、それぞれIndex0とIndex1と関連付けられている。Index0とIndex1とは、それぞれアウトプット0とアウトプット1とを識別する識別子である。
【0025】
前トランザクションのアウトプット0に、新規トランザクションのインプット0が接続される。新規トランザクションのインプット0が接続されるまでは、前トランザクションのアウトプット0は、UTXOの状態である。前トランザクションのアウトプット1には、新規トランザクション及び他のトランザクションのインプットが接続されていないので、UTXOの状態である。
新規トランザクションのインプット0は、ScriptSigと、前トランザクションのトランザクションハッシュと、前トランザクションのアウトプットの識別子であるIndex0とを含む。
【0026】
ScriptSig0は、前トランザクションのアウトプット0をアンロックする処理に用いられる電子署名と公開鍵とを含む。電子署名は、例えば、新規トランザクションのScriptSig0を除くデータと、前トランザクションのアプトプット0に含まれるScriptPubKey0とを用いて得られる電子署名用の値を、秘密鍵を用いて暗号化することにより生成される。このとき、秘密鍵には、新規トランザクションを作成する利用者の秘密鍵が用いられる。
トランザクションハッシュは、前トランザクション全体のハッシュ値である。そして、トランザクションハッシュは、前トランザクションを識別するためのトランザクションIDとして用いられる。Index0は、前トランザクションにおける接続先のアウトプット0を識別する識別子である。
上記の前トランザクションに含まれるアウトプット0と、新規トランザクションに含まれるインプット0とが接続される処理を説明する。以下の説明では、前トランザクションがビットコインのブロックチェーンに記録された状態であるものとする。
【0027】
取引装置は、新規トランザクションを作成し、ネットワーク30に送信することにより、各ノード装置300が備える未検証のトランザクションを格納するトランザクションプールに新規トランザクションを格納する。ノード装置300は、新規トランザクションを検証の対象として選択すると、新規トランザクションのトランザクションIDとIndex0とを参照し、ブロックチェーン上のトランザクションを検索する。ノード装置300は、トランザクションIDに対応する前トランザクションを発見し、さらに、Index0に対応するアウトプット0を発見する。
【0028】
そして、ノード装置300は、インプット0に含まれるScriptSig0と、アウトプット0に含まれるScriptPubKey0とを連結する。これにより、ノード装置300は、ScriptSig0に含まれる公開鍵のハッシュ値と、ScriptPubKey0に含まれる公開鍵ハッシュとの一致を検証する第1検証を実行する。さらに、ノード装置300は、ScriptSig0に含まれる電子署名と公開鍵とを用いて電子署名を検証する第2検証を実行する。ノード装置300は、第1検証と第2検証とが承認されると、前トランザクションのアウトプット0と新規トランザクションのインプット0とを接続する。
そして、ノード装置300は、承認した新規トランザクションをブロックに含ませて、Nanceを探す作業を実行する。ノード装置300は、正しいNanceを発見すると、正しいNanceが含まれるブロックを生成し、ノード装置300が保持するブロックチェーンに新たに生成したブロックを連結する。また、ノード装置300は、ブロックチェーンのネットワーク上に新たに生成したブロックを送信する。これにより、新たに生成したブロックは、ネットワークに接続された他のノード装置が保持するブロックチェーンにも連結され、新規トランザクションがブロックチェーンに記録される。
【0029】
図3は、アトミックスワップの処理の一例を示す図である。
図4以降で説明する本実施形態のロック解除方法は、このアトミックスワップ及びその変形といえるトランザクションパズルの仕組みを応用したものである。
従って、本実施形態のロック解除方法を説明する前に、
図3を用いてアトミックスワップの処理を説明する。
前提として、暗号資産には、異なる特徴を有する複数の種類の暗号資産がある。このため、利用者は、暗号資産を使用するとき、用途に適した暗号資産を選択して利用する。暗号資産の種類には、例えば、ビットコイン(BTC:登録商標)、イーサリアム(ETH:登録商標)、ライトコイン(LTC)、及びモナコイン(MONA:登録商標)などがある。暗号資産の用途には、例えば、価値の保存、商品の購入、及び契約内容の管理の手数料などがある。
上記のように、複数の種類の暗号資産を用途に応じて使い分けるため、異なる暗号資産を交換する取引が行われている。異なる暗号資産を交換する取引には、利用者間の直接の取引である直接取引と、利用者間に取引所などの第三者を介する取引である仲介取引とがある。
【0030】
暗号資産の直接取引について説明する。
例えば利用者Aは、自身が所有するビットコインと、利用者Bが所有するライトコインとの交換取引を行うとき、ビットコインを利用者Bに送金する。そして、利用者Bは、ビットコインが利用者Aから届いたことを確認すると、利用者Aにライトコインを送金する。
直接取引において、利用者Bは、利用者Aからビットコインが届いたことを確認したあと、利用者Aにライトコインを送金しないでビットコインを持ち逃げすることが可能である。したがって、利用者Aは、取引相手が信用できることを前提として、ビットコインを取引相手に送金しなければならない。
【0031】
暗号資産の仲介取引について説明する。
例えば利用者Aは、自身が所有するビットコインを取引所に預ける。また、利用者Bは、自身が所有するライトコインを取引所に預ける。そして、取引所は、利用者Aに利用者Bが預けたライトコインを送金し、利用者Bに利用者Aが預けたビットコインを送金する。
仲介取引において、利用者Aと利用者Bとは取引所に暗号資産を預けているので、取引所の不正及び取引所のハッキングなどにより、暗号資産が盗難される恐れがある。また、仲介取引では、取引所を利用するので、手数料が直接取引と比較して割高になることがある。したがって、利用者Aは、取引所が信用できること及び手数料が割高になることを前提として、ビットコインを取引所に預けなければならない。
【0032】
このような問題を解決するために、信用のない個人間での取引においても暗号資産を持ち逃げされることなく直接取引することができるアトミックスワップが用いられている。
二者間で異なるブロックチェーンを用いた暗号資産同士の交換を行うとき、単純に利用者Aと利用者Bとの間でお互いの暗号資産を送りあうと、利用者Aから利用者Bへの送金及び利用者Bから利用者Aへの送金が同時に行われることは保証できない。これは、ブロックチェーンによって承認までの期間が異なること、及びお互いの暗号資産を送信するタイミングが異なること、などに起因する。
また、承認前の送金トランザクションは取り下げが可能であるため、言い換えれば、先に承認された取引のみを有効とし、残った取引を取り下げることで、片方が暗号資産を持ち逃げすることができてしまう。
ビットコイン及びそこから派生したブロックチェーンシステムにおいて、Atomic Swap(アトミックスワップ)は、UTXOのアンロックの条件を記述したScriptと呼ばれるプログラミング言語を用いる。そして、アトミックスワップは、Scriptの命令セットに、一方向ハッシュ関数であるSHA256を求める命令と、値の比較を行う命令があることを利用している。
【0033】
具体的には、利用者Aと利用者Bの間での暗号資産の交換を以下の手順で行う。
以下の説明では、一例として、取引相手が所有するビットコインと、利用者が所有するライトコインとを交換する処理について説明する。取引装置10が秘密値Rを生成する処理を説明するが、利用者Bの取引装置が秘密値Rを生成してもよい。すなわち、以下で説明する利用者Aの取引装置の実行する処理を利用者Bの取引装置が実行し、利用者Bの取引装置が実行する処理を利用者Aの取引装置が実行してもよい。また、説明の簡単化のため、各トランザクションのアウトプットには、1つのアウトプットが含まれるものとし、アウトプットをIndexに応じて参照する処理の説明を省略する。なお、交換する暗号資産の数量(交換数量)は、アトミックスワップの処理の前に利用者と取引相手との間で為替レートなどに基づいて決定してもよい。また、利用者と取引相手とは、アトミックスワップの処理の前にそれぞれお互いのアドレス及び公開鍵を交換してもよい。利用者Aと利用者Bとは、暗号資産の交換数量の決定、並びにアドレス及び公開鍵の交換を、メール及び記録媒体の提供などの任意の通信手段により行ってもよい。
【0034】
ステップ(1)
利用者Aは乱数によって秘密値Rを定め、秘密値Rのハッシュ値Hを計算する。
利用者Aは、「引数の1つが利用者Bの公開鍵に対応する電子署名であること(すなわち受取人が利用者Bであること)及び、もう1つの引数のSHA256ハッシュ値がハッシュ値Hであること」をアンロック条件としたトランザクションTx1を発行し、承認を待つ。
利用者Bは、承認されたトランザクションTx1がブロックチェーンに公開されるため、ハッシュ値Hを知ることができる。
すなわち、利用者Aの取引装置10は、秘密値Rをランダムに生成する。また、利用者Aの取引装置は、秘密値Rにハッシュ関数を適用し、ハッシュ値Hを生成する。利用者Aの取引装置が秘密値Rをハッシュ化するときに用いられるハッシュ関数は、例えば、SHA-2、MD5、及びSHA-1などの一方向ハッシュ関数である。
ハッシュ関数にSHA-2を用いる場合、SHA256を2度適用してハッシュ値Hを計算する。ハッシュ値Hの計算に際してSHA256を2度適用するのは、上記Scriptにそのような命令があるためであり、SHA256の適用は1度であってもよい。
【0035】
さらに、利用者Aの取引装置10は、ビットコインを利用者Bに送金するためのトランザクションTx1を作成する。そして、利用者Aの取引装置は、作成したトランザクションTx1をネットワーク30に送信する。これにより、トランザクションTx1は、ネットワーク30に公開される。
トランザクションTx1のインプットは、利用者Aの電子署名及び利用者Aの公開鍵を含むScriptSigと、アンロックするUTXOを含む前トランザクションのトランザクションIDとを含む。トランザクションTx1のScriptSigによってアンロックするUTXOは、利用者Aが所有するUTXOである。利用者Aの電子署名及び利用者Aの公開鍵は、利用者Aが所有する秘密鍵を用いて生成される。
トランザクションTx1のアウトプットは、ハッシュ値H及び利用者Bの公開鍵ハッシュを含むScriptPubKeyを含む。利用者Bの公開鍵ハッシュは、利用者Bの公開鍵を用いて生成される。利用者Bの公開鍵ハッシュとは、利用者Bの公開鍵にハッシュ関数を適用して得られるハッシュ値のことである。
【0036】
ステップ(2)
利用者Bも同様に「引数の1つが利用者Aの公開鍵に対応する電子署名であること(すなわち受取人が利用者Aであること)及び、もう1つの引数のSHA256ハッシュ値がHであること」をアンロック条件としたトランザクションTx2を発行し、承認を待つ。
すなわち、利用者Bの取引装置20は、ライトコインを利用者Aに送金するためのトランザクションTx2を作成する。そして、利用者Bの取引装置は、作成したトランザクションTx2をネットワーク40に送信する。これにより、トランザクションTx2は、ネットワーク40に公開される。
【0037】
トランザクションTx2のインプットは、利用者Bの電子署名及び利用者Bの公開鍵を含むScriptSigと、アンロックするUTXOを含む前トランザクションのトランザクションIDとを含む。トランザクションTx2のScriptSigによってアンロックするUTXOは、利用者Bが所有するUTXOである。利用者Bの電子署名及び利用者Bの公開鍵は、利用者Bが所有する秘密鍵を用いて生成される。
トランザクションTx2のアウトプットは、ハッシュ値H及び利用者Aの公開鍵ハッシュを含むScriptPubKeyを含む。利用者Aの公開鍵ハッシュは、利用者Aの公開鍵を用いて生成される。利用者Aの公開鍵ハッシュとは、利用者Aの公開鍵にハッシュ関数を適用して得られるハッシュ値のことである。ハッシュ値Hは、トランザクションTx1がネットワーク30に公開されると、利用者Bの取引装置によりトランザクションTx1から取得され、トランザクションTx2のアウトプットに記述される。
【0038】
ステップ(3)
利用者Aは、利用者Bが発行したトランザクションTx2が承認され、取り下げや改ざんができなくなったことを確認する。
利用者A自身の秘密鍵による電子署名を作成し、秘密値Rと共にアンロックのための引数として、利用者Bが発行したトランザクションTx2のUTXOを利用して自分自身に送金を行う。
上記のトランザクションが承認され改ざんができなくなると共に、秘密値Rはトランザクション内のデータとしてブロックチェーンに公開されるため、利用者Bは秘密値Rを知ることができる。
すなわち、利用者Aの取引装置10は、ライトコインを利用者Bの取引装置から受け取るためのトランザクションTx3を作成する。そして、利用者Aの取引装置は、作成したトランザクションTx3をネットワーク40に送信する。これにより、トランザクションTx3は、ネットワーク40に公開される。
トランザクションTx3のインプットは、秘密値R、利用者Aの公開鍵、及び利用者Aの電子署名を含むScriptSigと、アンロックするUTXOを含むトランザクションTx2を識別するトランザクションIDとを含む。
トランザクションTx3のアウトプットは、利用者Aの公開鍵ハッシュを含むScriptPubKeyを含む。
【0039】
利用者Bが送金したライトコインの所有を利用者Aに移転する処理について、一例として、トランザクションTx3を用いてトランザクションTx2のUTXOをアンロックし、アンロックしたUTXOを利用者Aのアドレスにロックする処理を説明する。利用者Aのアドレスとは、例えば、利用者Aの公開鍵ハッシュを変換した値である。
ノード装置400は、トランザクションTx3がネットワーク40に送信されると、トランザクションTx3に含まれるトランザクションIDに対応するトランザクションTx2のUTXO(アウトプット)を参照する。また、ノード装置400は、トランザクションTx3のScriptSigに含まれる秘密鍵Rにハッシュ関数を適用して、ハッシュ値を求める。そして、ノード装置400は、求めたハッシュ値と、トランザクションTx2のScriptPubKeyに含まれるハッシュ値Hとが一致するか否かの第1検証を実行する。ノード装置400が秘密値Rのハッシュ値を求めるときに用いるハッシュ関数は、利用者Aの取引装置が秘密値Rをハッシュ化するときに用いるハッシュ関数と同じハッシュ関数である。
【0040】
また、ノード装置400は、トランザクションTx3のScriptSigに含まれる利用者Aの公開鍵にハッシュ関数を適用して得られるハッシュ値を求める。そして、ノード装置400は、求めたハッシュ値と、トランザクションTx2のScriptPubKeyに含まれる利用者Aの公開鍵ハッシュとが一致するか否かの第2検証を実行する。さらに、ノード装置400は、トランザクションTx3のScriptSigに含まれる利用者Aの電子署名と利用者Aの公開鍵とを用いて電子署名の検証をする第3検証を実行する。
ノード装置400は、上記の第1検証、第2検証及び第3検証が成功すると、トランザクションTx2のUTXOを利用者Aのアドレスにロックする。すなわち、ノード装置400は、利用者Aがライトコインを受け取ったことを示すアウトプットを作成し、作成したアウトプットをトランザクションTx3に含まれる、利用者Aが所有するUTXOとしてロックする。これにより、ライトコインの所有は、利用者Bから利用者Aに移転する。
【0041】
トランザクションTx1のScriptPubKeyには、所定の時間経過後にトランザクションTx1のアウトプットがUTXOのままであった場合、利用者Aの公開鍵を用いて、利用者Aにビットコインを戻す処理を実行するスクリプトを含んでもよい。これにより、利用者Aの取引装置は、取引が成立しないとき、所定の時間経過後に利用者Aのアドレスにビットコインを戻すことができる。以下の説明では、暗号資産が戻される処理を実行するスクリプトをタイムロックともいう。
【0042】
ステップ(4)
利用者B自身の秘密鍵による電子署名と秘密値Rによって、トランザクションTx1のUTXOをアンロックし、利用者B自身に送金する。
すなわち、利用者Bの取引装置は、利用者Aによってネットワーク40に公開されたトランザクションTx3に含まれる秘密値Rを取得し、ビットコインを利用者Aの取引装置から受け取るためのトランザクションTx4を作成する。そして、利用者Bの取引装置は、作成したトランザクションTx4をネットワーク30に送信する。これにより、トランザクションTx4は、ネットワーク30に公開される。
トランザクションTx4のインプットは、秘密値R、利用者Bの公開鍵、及び利用者Bの電子署名を含むScriptSigと、アンロックするUTXOを含むトランザクションTx1を識別するトランザクションIDとを含む。
トランザクションTx4のアウトプットは、利用者Bの公開鍵ハッシュを含むScriptPubKeyを含む。
【0043】
利用者Aが送金したビットコインの所有を利用者Bに移転する処理について、一例として、トランザクションTx4を用いてトランザクションTx1のUTXOをアンロックし、アンロックしたUTXOを利用者Bのアドレスにロックする処理を説明する。利用者Bのアドレスとは、例えば、利用者Bの公開鍵ハッシュを変換した値である。
ノード装置300は、トランザクションTx4がネットワーク30に送信されると、トランザクションTx4に含まれるトランザクションIDに対応するトランザクションTx1のUTXO(アウトプット)を参照する。また、ノード装置300は、トランザクションTx4のScriptSigに含まれる秘密鍵Rにハッシュ関数を適用して、ハッシュ値を求める。そして、ノード装置300は、求めたハッシュ値と、トランザクションTx1のScriptPubKeyに含まれるハッシュ値Hとが一致するか否かの第4検証を実行する。ノード装置300が秘密値Rのハッシュ値を求めるときに用いるハッシュ関数は、利用者Aの取引装置が秘密値Rをハッシュ化するときに用いるハッシュ関数と同じハッシュ関数である。
【0044】
また、ノード装置300は、トランザクションTx4のScriptSigに含まれる利用者Bの公開鍵にハッシュ関数を適用して得られるハッシュ値を求める。そして、ノード装置300は、求めたハッシュ値と、トランザクションTx1のScriptPubKeyに含まれる利用者Bの公開鍵ハッシュとが一致するか否かの第5検証を実行する。さらに、ノード装置300は、トランザクションTx4のScriptSigに含まれる利用者Bの電子署名と利用者Bの公開鍵とを用いて電子署名の検証をする第6検証を実行する。
【0045】
ノード装置300は、上記の第4検証、第5検証及び第6検証が成功すると、トランザクションTx1のUTXOを利用者Bのアドレスにロックする。すなわち、ノード装置300は、利用者Bがビットコインを受け取ったことを示すアウトプットを作成し、作成したアウトプットをトランザクションTx4に含まれる、利用者Bが所有するUTXOとしてロックする。これにより、ビットコインの所有は、利用者Aから利用者Bに移転する。
【0046】
トランザクションTx2のScriptPubKeyには、所定の時間経過後にトランザクションTx2のアウトプットがUTXOのままであった場合、利用者Bの公開鍵を用いて、利用者Bにライトコインを戻す処理を実行するスクリプトを含んでもよい。これにより、利用者Bの取引装置は、取引が成立しないとき、所定の時間経過後に利用者Bのアドレスにライトコインを戻すことができる。
【0047】
利用者A、利用者Bの取引装置が夫々作成するトランザクションTx1、Tx2のUTXOのアンロック条件を示すScriptPubKeyは、以下のようなプログラムとなる。
1.OP_HASH256
2.OP_PUSH H
3.OP_EQUALVERIFY
4.OP_PUSH 公開鍵
5.OP_CHECKSIG
1.~3.の命令群では、引数のハッシュ値を計算してハッシュ値Hと比較している。4.、5.は、最もシンプルな送金手法であるP2PK(pay-to-pubkey)形式であるが、P2PKH(pay-to-pubkey-hash)形式のものでも良い。
【0048】
このUTXOをアンロックするための、対応するScriptSigは以下の通りとなる。
1.OP_PUSH 電子署名
2.OP_PUSH R
このScriptSigがなければトランザクションTx2のUTXOをアンロックできないことからも、利用者Aが受け取った時点で秘密値Rが公開される。
また、何らかの事情で利用者Aが秘密値Rを公開しなかった場合、利用者Aも利用者Bも双方の暗号資産を取り出すことができなくなり、暗号資産の所有権が宙に浮いてしまう。そのため、実用上は「もしくは、一定期間が過ぎた場合、送金主の公開鍵に対応する電子署名によって取り戻すことができる」という条件を追加する。具体的には、ScriptPubKeyを以下のようにする。
1.OP_IF
2.OP_HASH256
3.OP_PUSH H
4.OP_EQUALVERIFY
5.OP_PUSH 宛先公開鍵
6.OP_CHECKSIG
7.OP_ELSE
8.OP_CHECKLOCKTIMEVERIFY
9.OP_PUSH 送金主公開鍵
10.OP_CHECKSIG
11.OP_ENDIF
IF命令で分岐して、2種類のScriptSigを受け付ける。
【0049】
通常通り取引が進んだ場合は、以下のScriptSigでアンロックが可能である。
1.OP_PUSH 宛先秘密鍵の電子署名
2.OP_PUSH R
3.OP_PUSH 1
このスクリプトは、redeem scriptと呼ばれる。
最後の1をOP_IFが読み取り、前半のプログラムが実行される。
何らかの理由で秘密値Rが公開されなかった場合は、以下のScriptSigで暗号資産を取り戻せる。
1.OP_PUSH 送信主秘密鍵の電子署名
2.OP_PUSH 0
このスクリプトは、refund scriptと呼ばれる。
最後の0をOP_IFが読み取り、OP_ELSE以降のプログラムが実行され、取り戻しが行われる。ただし、OP_CHECKLOCKTIMEVERIFYが含まれているため、一定期間経過後である必要がある。なお、この期間の指定は、トランザクションTx1、トランザクションTx2の夫々に含まれている。
【0050】
なお、この例ではOP_HASH256を利用しているためハッシュ値HはSHA256(SHA256(R))とするが、OP_SHA256を利用する場合ハッシュ値HはSHA256(R)とする。
他にもいくつかハッシュ関数を計算する命令が存在するため、ハッシュ値Hの計算方法はそれに合わせたものにする必要がある。
以上の手順に従えば、利用者Aが暗号資産を受け取るためには秘密値Rを公開せざるを得ず、秘密値Rが公開されると同時に利用者Bも暗号資産を受け取ることができることとなる。
利用者Aが秘密値Rを公開しない場合、利用者Aは利用者Bの暗号資産を受け取ることができないので、秘密値Rの公開が強制されている、と見ることもできる。
【0051】
このようなアトミックスワップは、本来は異なるブロックチェーンの間でトラストレス(信用する第三者を置かない)にて暗号資産を交換する技術であるが、一旦仮の送金を確定してから秘密情報の受け渡しによって送金を確定する点にその本質があると言える。
【0052】
なお、bitcoin wiki(https://en.bitcoin.it/wiki/Script#Transaction_puzzle)には、アトミックスワップと類似する仕組みとして、Transaction Puzzle(トランザクションパズル)が紹介されている。
アトミックスワップとの相違点として、トランザクションパズルでは、ScriptPubKeyに
1.OP_HASH256
2.OP_PUSH H
3.OP_EQUAL
と記載する。
【0053】
これに対するScriptSigには、H=SHA256(SHA256(R))を満たすRを用いて
1.OP_PUSH R
と記載することによりアンロックが可能である。
すなわち、トランザクションパズルでは、アトミックスワップで必要であった「OP_PUSH 宛先秘密鍵の電子署名」を記載する必要が無い。
トランザクションパズルは、宛先秘密鍵の公開鍵を限定しない(受領者を限定しない)、アトミックスワップの変形例と考えることが出来る。
【0054】
以下に、アトミックスワップ、トランザクションパズルを応用した本実施形態のロック解除システムを説明する。
アトミックスワップ、トランザクションパズルにおいて、秘密値Rを再利用することができないので、秘密値Rをワンタイムパスワード又は使い捨てのID情報として用いることが出来る。
本実施形態のロック解除システムは、ブロックチェーン上で異なる暗号資産を交換するアトミックスワップ、トランザクションパズルを応用し、あるいはこれらに準拠して、秘密値RをID情報として用いる。
ブロックチェーンはP2Pシステムで構築されているため、ID情報を管理するための管理用データベースサーバが不要である。ID情報を管理するデータベースサーバの立ち上げ、保守運用管理のコストがかからないという利点がある。
なお、暗号資産の交換取引の場合とは異なり、
図1に示すネットワークのうち、決済装置80への送金に用いる暗号資産のネットワークのみ(ここでは、ネットワーク30)が用いられる。
【0055】
本実施形態のロック解除システムの一例に、プリペイドシステムがある。
図1に示すシステムにおいて、管理装置70は、商品やサービスを提供する自動販売機ベンダが管理運用し、購入者からの事前支払い等を管理する等する。
決済装置80は、現金等の事前支払いに基づくID情報と引き替えに商品等を購入者に提供する飲料等の自動販売機である。
管理装置70は、購入者が管理装置70に対して現金等による事前支払いを行ったことに応じて、例えば管理装置70によって秘密値Rが決定され、アンロックに秘密値Rを必要とする第1トランザクションTxAが公開される。
利用者装置90は、購入者等の利用者が利用する端末装置である。
第1トランザクションTxAは、一例として購入者が事前支払いした現金と同等価値の暗号資産を決済装置80に送金するためのトランザクションである。アウトプットに送金額を記載し、管理装置70の電子署名を含んでいる。
【0056】
また、第1トランザクションTxAは、トランザクション手数料として必要な暗号資産の最小額をアウトプットに記載して、トランザクション手数料を送金するのみのトランザクションであってもよい。この場合、決済装置80が価値を認める管理装置70の電子署名を含むことが出来る。管理装置70と決済装置80とはともに同じ販売ベンダに属し金銭的に一の関係にあり、購入者が販売ベンダに対して現金等を事前支払いしたことを決済装置80に証明できれば十分である。
例えば、秘密値R、あるいはそれと対応する第1トランザクションTxA一つに付き、固定で100円の価値などを認めるなどとすることが出来る。
【0057】
自動販売機としての決済装置80は、第1トランザクションTxAに含まれる電子署名が、管理装置70の電子署名であることを確認できれば、購入者が販売ベンダに対して現金等を事前支払いしたと認める。すなわち、管理装置70の電子署名は、購入者が販売ベンダに対して現金等を事前支払いしており、そのことに基づいて商品等を受け取る資格があることを管理装置70に証明するものである。
本来は、暗号資産において、UTXOが資産である。Bitcoinや、そこから派生した各種アルトコインにおける「資産の所有」とは、ブロックチェーンのデータベースに記録されているトランザクションの出力のうち、「未使用」かつ「自分でアンロックできる」ものの合計である。これをUTXO(Unspent TX Output)と呼ぶ。UTXOのアンロックの条件はScriptPubKeyという領域に書き込まれており、通常は所有者による電子署名でアンロックし別のトランザクション入力へ接続できるようになっている。
【0058】
それに対して、本実施形態では、購入者が事前支払いをしたことに応じて管理装置70が作成した電子署名に金銭的価値がある。電子署名は金銭的価値を有するトークンと考えることが出来る。
管理装置70の電子署名は、第1トランザクションTxAのインプット(ScriptSig)に記載してもいいし、OP_RETURNに付加情報として記載してもよい。また、管理装置70の電子署名は、TxAのインプットから参照されるトランザクションのScriptPubKeyに記載されていてもよい。
決済装置80は、秘密値Rを提示され、第1トランザクションTxAが、管理装置70の電子署名を含むことを確認すると、商品やサービス等を購入者に提供する。
そして、決済装置80は、秘密値Rを含む第1トランザクションTxAに対応する第2トランザクションTxBを公開する。
【0059】
以下、本実施形態のプリペイドシステムを詳細に説明する。
[第1実施例]
第1実施例では、第1トランザクションTxAを管理装置70が公開する。
説明の簡単化のため、ブロックチェーンを介した送金処理における各トランザクションのアウトプットには、1つのアウトプットが含まれるものとし、アウトプットをIndexに応じて参照する処理の説明を省略する。
【0060】
本実施形態では、秘密値RをID情報として用いるプリペイドシステムのロック解除方法として、以下の4つのパターンが考えられる。
(パターン1)管理装置70は、購入者が事前に支払った現金と同等価値の暗号資産を決済装置80に送金するトランザクションパズルに準じた第1トランザクションTxAを作成する。そのトランザクションのアンロック条件は秘密値Rだけであり、決済装置80の電子署名を要求しない(受領者は限定されない)。
(パターン2)管理装置70は、購入者が事前に支払った現金と同等価値の暗号資産を決済装置80に送金する、アトミックスワップに準じた第1トランザクションTxAを作成する。そのトランザクションのアンロック条件は秘密値Rと決済装置80の電子署名である(受領者が決済装置80に限定される)。
(パターン3)管理装置70は、トランザクション手数料として必要な最小額の暗号資産を送金するとともに決済装置80が価値を認める電子署名を含むトランザクションパズルに準じた第1トランザクションTxAを作成する。そのトランザクションのアンロック条件は秘密値Rだけで受領者としての決済装置80の電子署名を要求しない(受領者は限定されない)。
(パターン4)管理装置70は、トランザクション手数料として必要な最小額の暗号資産を送金するとともに決済装置80が価値を認める電子署名を含むアトミックスワップに準じた第1トランザクションTxAを作成する。そのトランザクションのアンロック条件は秘密値Rと決済装置80の電子署名である(受領者が決済装置80に限定される)。
【0061】
これらの4つのパターンのうち、(パターン1)は二重使用を阻止できないため実用できない。以下、二重使用について説明する。
ブロックチェーンを用いた暗号資産の送金はブロックチェーンにおけるトランザクションの承認を待つ必要がある。
送金のトランザクションが公開されなかった歴史(新たなブロックチェーン)を作り、十分なハッシュレートでマイニングを進める。これにより、一旦承認されブロックチェーンに取り込まれた送金トランザクションをなかったことにして暗号資産を再利用することが理論上可能である。これを二重使用と呼ぶ。
なお、送金のトランザクションがブロックチェーンに取り込まれた後に、マイニングが進んだブロック数(承認数)が増えるほどトランザクションの取り消しに成功する確率が急速に低くなる。従って十分な承認数だけ待てばトランザクションの取り消しは不可能と考えることも出来る。
【0062】
トランザクションパズルを応用した処理を行う場合では、第1トランザクションTxAを秘密値Rだけでアンロックでき、決済装置80が公開した第2トランザクションTxBを取り消して第1トランザクションTxAを受け取る二重使用は理論上可能である。しかし、(パターン3)の場合、第1トランザクションTxAに含まれる管理装置70の電子署名は決済装置80にとってのみ価値がありそれ以外の者にはUTXOのトランザクション手数料分の価値しかない。購入者や第三者が自身に対して送金する二重使用を行う動機づけがなく、二重使用が行われることは想定しにくい。
【0063】
ただし(パターン1)の場合では、決済装置80が公開した第2トランザクションTxBを取り消し、第1トランザクションTxAを受け取って事前支払い分の暗号資産を手に入れようとする動機がうまれるため、実用するべきではないと言える。
(パターン2)、(パターン4)のアトミックスワップを応用した処理を行う場合は、決済装置80の電子署名がないと第1トランザクションTxAを受け取れないので暗号資産の二重使用は不可能である。
【0064】
図4は、第1実施例のロック解除処理の流れを説明する図である。
以下の説明では、トランザクションスクリプトとして、P2PKHを用いるものとして説明する。
ステップ(11)において、システムの利用者である商品の購入者は、管理装置70を管理する商品の販売者(販売ベンダ)に対して現金等を支払う。
現金等の支払いは、管理装置70に対して直接行われるのではなく、例えばコンビニエンスストアの収納代行サービスなどを介して販売者に行うことになる。現金等の支払いは、販売者の銀行口座への振り込みや、クレジットカード払い、暗号資産の送金であってもよい。なお、現金等の支払いは販売者に対して直接行ってもよい。
ステップ(12)において、管理装置70は、現金等の支払いに応じて秘密値Rをランダムに決定する。また管理装置70は、管理装置70の秘密鍵Prk_Aから電子署名Sig_Aを作成する。また管理装置70は、決定した秘密値Rにハッシュ関数を適用してハッシュ値Hを生成する。
【0065】
なお、例えば現金の事前支払い時などに、購入者自らが秘密値Rを作成し、あるいは購入者の端末装置(利用者装置90)を用いて秘密値Rをランダムに決定し、管理装置70に提供してもよい。その場合、管理装置70は、提供された秘密値Rに対してハッシュ関数を適用してハッシュ値Hを生成する。管理装置70は秘密値Rの生成には関与せず、ハッシュ値Hの生成、電子署名Sig_Aの生成を行う。
また、購入者自らがハッシュ値Hをも作成し、あるいは利用者装置90を用いて秘密値Rにハッシュ関数を適用してハッシュ値Hを生成し、管理装置70に提供してもよい。この場合、管理装置70は、電子署名Sig_Aの生成のみを行う。
【0066】
ステップ(13)において、管理装置70は第1トランザクションTxAを作成する。
アトミックスワップを応用した処理を行う場合、第1トランザクションTxAは、決済装置80の電子署名Sig_B、秘密値Rを、対応する第2トランザクションTxBのScriptSigに記載することを条件にアンロック可能なトランザクションである。第1トランザクションTxAの受領者は決済装置80に限定される。
第1トランザクションTxAのScriptPubKeyに、決済装置80の公開鍵、ハッシュ値Hを記載し、ScriptSigに電子署名Sig_Aを記載する。
トランザクションパズルを応用した処理を行う場合、第1トランザクションTxAは、秘密値Rを対応する第2トランザクションTxBのScriptSigに記載することを条件にアンロック可能なトランザクションである。
第1トランザクションTxAのScriptPubKeyに、秘密値Rのハッシュ値Hを記載し、決済装置80の公開鍵は記載しない。第1トランザクションTxAは受領者を限定しないトランザクションである。
さらに、管理装置70は、第1トランザクションTxAのScriptSigに電子署名Sig_Aを記載する。
なお、後述する第2トランザクションTxBを使用しない構成の場合は、第1トランザクションTxAの付加情報として、直接上記の情報を記載してもよい。
管理装置70は、作成した第1トランザクションTxAをブロックチェーン(ネットワーク30)に公開する。
【0067】
ステップ(14)において、管理装置70は秘密値Rを購入者に提供する。秘密値Rの提供は、例えば、上記したようにコンビニエンスストアの収納代行サービスなどを介して、秘密値Rの内容を含むQRコード(登録商標)やバーコードを印刷した紙を発行する。あるいは、コンビニエンスストアのサービス端末等を介して秘密値Rを購入者が所持するUSBメモリやトークン等に格納してもよい。あるいは、購入者が所持する携帯端末(購入者装置90)にE-MAILその他の手段で秘密値Rを送信し、同携帯端末の画面にQRコード(登録商標)やバーコードとして表示可能としてもよい。この時、第1トランザクションTxAのトランザクションIDも同時に提供すると、決済装置80の処理負荷が軽減される。
秘密値Rを受け取った購入者は、管理装置70が第1トランザクションTxAを公開したブロックチェーンの改ざん成功確率が十分に低くなるまで待ってから、秘密値Rを決済装置80に対して提示する。
【0068】
決済装置80は、USBメモリ等のトークンを差し込む差し込み口(ポート)を備える。購入者が差し込み口に、秘密値Rを格納したトークンを差し込むと、決済装置80は、秘密値Rをトークンから読み込むことが出来る。
あるいは、決済装置80は、紙に印字され、あるいは、利用者装置90としての携帯端末の表示画面に表示されたQRコード(登録商標)やバーコードをスキャンして、秘密値Rを読み取ることが出来るカメラ等の読み取り装置を備える。購入者が、紙に印字されたQRコード(登録商標)やバーコード、あるいは、利用者装置90の表示画面に表示されたQRコード(登録商標)やバーコードを読み取り装置にかざすと、決済装置80は、QRコード(登録商標)やバーコードから秘密値Rを読みとることが出来る。
【0069】
ステップ(15)において、決済装置80は、公開されている第1トランザクションTxAを検証する。
秘密値Rにハッシュ値を適用して得たハッシュ値が第1トランザクションTxAに含まれるハッシュ値Hと一致する場合には、第1トランザクションTxAが秘密値Rを用いてアンロック可能である。この場合、決済装置80は、第1トランザクションTxAに記載される電子署名を取得する。
決済装置80は、第1トランザクションTxAに記載の電子署名を検証して、第1トランザクションTxAに管理装置70の電子署名Sig_Aが付与されていることを確認する。第1トランザクションTxAの暗号資産の送金額が指定の条件を満たすか(商品の値段以上であるか、トランザクション手数料以上の値段であるか)を確認してもよい。
ステップ(16)において、電子署名Sig_Aが付与されている場合、さらに送金額が上記の条件を満たす場合に商品やサービスを購入者に提供する。例えば自動販売機である決済装置80は、図示しない払出機構によって購入者が所望する飲料などの商品を購入者に払い出す。
ステップ(17)において、決済装置80は、秘密値R、秘密値Rのハッシュ値H、第1トランザクションTxAのトランザクションID、電子署名Sig_Aのうち、少なくとも一つを、決済装置80が備えるデータベースに記憶する。
【0070】
これは、本実施形態の場合において、同じ秘密値Rや第1トランザクションTxAが二重使用され得る問題があるからである。このような二重使用は、決済装置80が公開した第2トランザクションTxBが取り消されることで行われる。二重使用をしようとする者は、第2トランザクションTxBが取り消されたあと同じ秘密値Rを用いて決済装置80から商品やサービスを得ようとする。
それに対し決済装置80は、使用済みの秘密値R、使用済みの電子署名、第1トランザクションTxAのトランザクションID、ハッシュ値Hのリスト(履歴情報)を、ローカルなデータベース等に記憶する。そして決済装置80は、データベースに記憶するものと同じ秘密値Rを提示されたときには、第2トランザクションTxBが取り消されたと判断することが出来る。
【0071】
決済装置80は、第2トランザクションTxBが取り消されたと判断したとき、ステップ(16)において商品やサービスの提供を行わず、データベースに記憶される情報に基づいて第2トランザクションTxBを公開しなおす。
このようにすることで、第2トランザクションTxBの取り消しと、秘密値R、電子署名の二重使用に対抗することが出来る。
本実施形態では、決済装置80は、グローバルなパブリックチェーンにおいても、ブロックチェーン全体のコピーを保持するのではなく、ローカルなデータベースに保持する秘密値R、電子署名を確認するだけで、二重使用を阻止することが出来る。
【0072】
図4の説明に戻り、決済装置80は、ステップ(17)の後で、第1トランザクションTxAをアンロックするための第2トランザクションTxBを公開してもよい。
アトミックスワップを応用した処理を行っている場合、決済装置80は、ステップ(18)において、決済装置80の秘密鍵Prk_Bで電子署名Sig_Bを作成する。トランザクションパズルを応用した処理を行っている場合、電子署名Sig_Bの作成は不要である。
そして決済装置80は、第1トランザクションTxAをアンロックするための第2トランザクションTxBを作成する。
アトミックスワップを応用した処理を行っている場合、第2トランザクションTxBのScriptPubKeyに、決済装置80の公開鍵を記載し、第2トランザクションTxBのScriptSigに、電子署名Sig_B、決済装置80の公開鍵、秘密値Rを記載する。
トランザクションパズルを応用した処理を行っている場合、第2トランザクションTxBは、第2トランザクションTxBのScriptPubKeyに、決済装置80の公開鍵を記載し、第1トランザクションTxAのScriptSigに、決済装置80の公開鍵、秘密値Rを記載する。電子署名Sig_Bは記載しない。
【0073】
そして、決済装置80は、作成した第2トランザクションTxBをブロックチェーン(ネットワーク30)に公開する。
上記のように、秘密値Rを受け取った購入者は、管理装置70が第1トランザクションTxAを公開したブロックチェーンの改ざん成功確率が十分に低くなるまで待ってから、秘密値Rを決済装置80に対して提示していた。決済装置80は、第1トランザクションTxAの改ざん成功確率が十分に低くなったときに第2トランザクションTxBをブロックチェーンに公開するとも言える。
決済装置80は、購入者による管理装置70に対する現金の支払いと第1トランザクションTxAの公開には関与しない。
【0074】
本実施形態のロック解除システムにおいて、第1トランザクションTxAをアンロックできる秘密値Rを購入者が所持していることが重要である。従って、購入者が決済装置80に提示したことに応じて、決済装置80は、指定の処理(商品の販売)を実行する。
商品の販売後、第2トランザクションTxBをブロックチェーンに公開すると、履歴情報(秘密値R、ハッシュ値H、秘密鍵、トランザクションID)がブロックチェーンに記録されるため、決済装置80における販売記録を外部から確認することが出来る。そのようは効果を望まないのであれば、第2トランザクションTxBの公開は、必須ではない。
【0075】
第2トランザクションTxBをブロックチェーンに公開したあとで、指定の処理(商品の販売等)を実行してもよい。すなわち、ステップ(15)とステップ(16)の間に、ステップ(18)を実行してもよい。
上記のように、購入者は、第1トランザクションTxAが承認され、第1トランザクションTxA取り消される確率が十分に低くなった時点以降に秘密値Rを決済装置80に提示するので、決済装置80は、購入者に商品やサービスを提供した後に秘密値R(第2トランザクションTxB)を公開してもよいし、秘密値R(第2トランザクションTxB)を公開してから商品等を提供してもよい。
【0076】
いずれにしても、本実施形態では、購入者による事前支払い時の第1トランザクションTxAと決済装置80による決済時の第2トランザクションTxBと、の2段階のトランザクションを発行している。
第1トランザクションTxAについては、承認数が十分に増えるまでの時間を待つ必要があるが、第2トランザクションTxBについて承認数が増えるのを待つ必要がなく、データベースに記憶した秘密値Rと同じ秘密値Rが提示されてないことを条件に商品やサービスを即時提供することが出来る。
第2トランザクションTxBが取り消されてデータベースに記憶した秘密値Rと同じ秘密値Rが提示された場合でも、商品やサービスを提供せず、データベースに記憶する秘密値R、秘密値Rのハッシュ値H、第1トランザクションTxAのトランザクションID、電子署名Sig_Aによって第2トランザクションTxBを公開しなおせばよい。
購入者は、商品の提供前に第2トランザクションTxBの十分な数の承認を待機する必要がなく、利便性を高めることが出来る。
【0077】
また上記したように、トランザクションパズルを応用した処理を行っており、電子署名に金銭的価値を持たせた場合には二重使用が行われことは想定しにくいので、第2トランザクションTxBの十分な数の承認を待機する必要がなく利便性を高め得る。
アトミックスワップを応用した処理を行っている場合は、秘密値Rに加えて決済装置80の電子署名がないと第1トランザクションTxAを受け取れず二重使用は不可能である。よって、購入者が商品提供前に第2トランザクションTxBの十分な数の承認を待機する必要がなく、利便性を高め得る。
【0078】
図5は、
図4で説明したロック解除処理を説明するフローチャートである。
ステップS101において、購入者は販売者に対して現金を支払い、管理装置70が入金を確認すると、ステップS102において、管理装置70は秘密値Rをランダムに決定する。
ステップS103において、管理装置70は、販売者側の秘密鍵で電子署名Sig_Aを作成する。
ステップS104において、管理装置70は、電子署名Sig_Aを記載した第1トランザクションTxAを作成し、ステップ105において、管理装置70は、第1トランザクションTxAをネットワーク30に公開する。
【0079】
ステップS106において、管理装置70は、秘密値Rを購入者に提供する。
ステップS107において、購入者は決済装置80に秘密値Rを提示する。
ステップS108において、決済装置80は第1トランザクションTxAを検証する。
ステップS109において、決済装置80は、商品又はサービスを購入者に提供する。
ステップS110において、決済装置80は秘密値R等をデータベースに記憶する。
アトミックスワップを応用した処理を行う場合、ステップS111において、決済装置80は、決裁装置80の秘密鍵で電子署名Sig_Bを作成する。トランザクションパズルを応用した処理を行う場合、決済装置80はステップS111の処理を行わない。
【0080】
アトミックスワップを応用した処理を行う場合、ステップS112において、決済装置80は、ステップS111で作成した電子署名Sig_Bと、ステップS106で提示された秘密値Rを用いて第2トランザクションTxBを作成する。トランザクションパズルを応用した処理を行う場合、決済装置80は、電子署名Sig_Bを用いずに第2トランザクションTxBを作成する。
ステップS113において、決済装置80は、第2トランザクションTxBをネットワーク30に公開する。
【0081】
[第2実施例]
第2実施例は、第1実施例の変形であり、管理装置70が第1トランザクションTxAを公開するのではなく、商品やサービスの購入者が、自身の端末装置を用いて第1トランザクションTxAを公開する
第2実施例でも、第1実施例と同様に、第1トランザクションTxAのアンロックには秘密値Rが必要である。第1トランザクションTxAは、購入者が支払った現金と同等価値の暗号資産を決済装置80に送金するトランザクションである。あるいは、第1トランザクションTxAは、トランザクション手数料として必要な最小額の暗号資産を送金するとともに、決済装置80が認める管理装置70の電子署名を含むことが出来る。
後者の場合、管理装置70の電子署名をトランザクションのScriptSigに記載するパターンと、OP_RETURN領域の付加情報として記載するパターンが考えられる。第1トランザクションTxAのインプットにより参照されるトランザクションのScriptPubKeyに、管理装置70の電子署名を記載するパターンも考えられる。
また、第1トランザクションTxAのアンロック条件として、秘密値Rだけを求める場合(トランザクションパズルを応用する場合)、秘密値Rを求めるとともに受領者を限定する場合(アトミックスワップを応用する場合)があるのも第1実施例と同じである。
第2実施例においても、第1実施例と同様に、上記(パターン1)~(パターン4)が想定されうる。(パターン1)が二重使用を阻止できないため、実用できないことも同じである。
【0082】
図6は、第2実施例のロック解除処理の流れを説明する図である。
以下の説明では、トランザクションスクリプトとして、P2PKHを用いるものとして説明する。
ステップ(31)において、システムの利用者である商品の購入者は、管理装置70を管理する商品の販売者(販売ベンダ)に対して現金等を支払う。
現金等の支払いは、管理装置70に対して直接行われるのではなく、例えばコンビニエンスストアの収納代行サービスなどを介して販売者に行うことになる。現金等の支払いは、販売者の銀行口座への振り込みや、クレジットカード払い、暗号資産の送金であってもよい。なお、現金等の支払いは販売者に対して直接行ってもよい。
ステップ(32)において、管理装置70は、現金等の支払いに応じて秘密値Rをランダムに決定する。また管理装置70は、管理装置70の秘密鍵Prk_Aから電子署名Sig_Aを作成する。また管理装置70は、決定した秘密値Rにハッシュ関数を適用してハッシュ値Hを生成する。
ステップ(33)において、管理装置70は、作成した秘密値R、電子署名Sig_A、ハッシュ値Hを購入者に提供する。
特に秘密値Rの提供は、例えば、上記したコンビニエンスストアの収納代行サービスなどを介して、秘密値Rの提供は、例えば、上記したようにコンビニエンスストアの収納代行サービスなどを介して、秘密値Rの内容を含むQRコード(登録商標)やバーコードを印刷した紙を発行する。あるいは、コンビニエンスストアのサービス端末等を介して秘密値Rを購入者が所持するUSBメモリやトークン等に格納してもよい。あるいは、購入者が所持する携帯端末(購入者装置90)にE-MAILその他の手段で秘密値Rを送信し、同携帯端末の画面にQRコード(登録商標)やバーコードとして表示可能としてもよい。
この時、第1トランザクションTxAのトランザクションIDも同時に提供すると、決済装置80の処理負荷が軽減される。
電子署名Sig_A、ハッシュ値Hについては、購入者が所持する購入者装置90に送信することが望ましい。
【0083】
なお、例えば現金の事前支払い時などに、購入者自らが秘密値Rを作成し、あるいは購入者の端末装置(利用者装置90)を用いて秘密値Rをランダムに決定し、管理装置70に提供してもよい。その場合、管理装置70は、提供された秘密値Rに対してハッシュ関数を適用してハッシュ値Hを生成する。管理装置70は秘密値Rの生成には関与せず、ハッシュ値Hの生成、電子署名Sig_Aの生成を行う。管理装置70は、ハッシュ値H、電子署名Sig_Aだけを利用者装置90に提供する。
また、購入者自らがハッシュ値Hをも作成し、あるいは利用者装置90を用いて秘密値Rにハッシュ関数を適用してハッシュ値Hを生成し、管理装置70に提供してもよい。この場合、管理装置70は、電子署名Sig_Aの生成のみを行う。管理装置70は、電子署名Sig_Aだけを利用者装置90に提供する。
【0084】
利用者装置90は、第1トランザクションTxAを作成する。
アトミックスワップを応用した処理を行う場合、第1トランザクションTxAは、決済装置80の電子署名Sig_B、秘密値Rを、対応する第2トランザクションTxBのScriptSigに記載することを条件にアンロック可能なトランザクションである。受領者は決済装置80に限定される。
第1トランザクションTxAのScriptPubKeyに、決済装置80の公開鍵、秘密値Rのハッシュ値Hを記載する。
第1トランザクションTxAのScriptSigに、電子署名Sig_Aを記載する。
トランザクションパズルを応用した処理を行う場合、第1トランザクションTxAは、秘密値Rを対応する第2トランザクションTxBのScriptSigに記載することを条件にアンロック可能なトランザクションである。
第1トランザクションTxAのScriptPubKeyに、秘密値Rのハッシュ値Hに記載し、決済装置80の公開鍵は記載しない。第1トランザクションTxAは受領者を限定しないトランザクションである。
さらに、管理装置70は、第1トランザクションTxAのScriptSigに電子署名Sig_Aを記載する。
なお、第2トランザクションを使用しない構成の場合は、第1トランザクションTxAの付加情報として、直接上記の情報を記載してもよい。
管理装置70は、作成した第1トランザクションTxAをブロックチェーン(ネットワーク30)に公開する。
【0085】
ステップ(34)において、購入者は、管理装置70が第1トランザクションTxAを公開したブロックチェーンの改ざん成功確率が十分に低くなるまで待ってから、秘密値Rを決済装置80に対して提示する。
決済装置80は、USBメモリ等のトークンを差し込む差し込み口(ポート)を備える。購入者が差し込み口に、秘密値Rを格納したトークンを差し込むと、決済装置80は、秘密値Rをトークンから読み込むことが出来る。
あるいは、決済装置80は、紙に印字され、あるいは、利用者装置90としての携帯端末の表示画面に表示されたQRコード(登録商標)やバーコードをスキャンして、秘密値Rを読み取ることが出来るカメラ等の読み取り装置を備える。購入者が、コンビニエンスストア等で発行された紙に印字されたQRコード(登録商標)やバーコード、あるいは、自身の携帯端末(利用者装置90)の表示画面に表示されたQRコード(登録商標)やバーコードを読み取り装置にかざすと、決済装置80は、秘密値RをQRコード(登録商標)やバーコードから読みとることが出来る。
【0086】
秘密値Rを受け取った後の、決済装置80による以下のステップ(35)~(38)の処理は、上記のステップ(15)~(18)と同じであるので説明を省略する。
【0087】
図7は、
図6で説明したロック解除処理を説明するフローチャートである。
以下の説明では、トランザクションスクリプトとして、P2PKHを用いるものとして説明する。
ステップS201において、購入者は販売者に対して現金を支払い、管理装置70が入金を確認すると、ステップS202において、管理装置70は秘密値Rをランダムに決定する。
ステップS203において、管理装置70は、管理装置70の秘密鍵で電子署名Sig_Aを作成する。
ステップS204において、管理装置70は、秘密値Rと電子署名Sig_Aを提供する。
ステップS205において、利用者装置90は、電子署名Sig_Aを記載した第1トランザクションTxAを作成する。
ステップS206において、利用者装置90は、第1トランザクションTxAをネットワーク30に公開する。
ステップS207において、利用者装置90は、秘密値Rを決済装置80に提示する。
【0088】
ステップS208において、決済装置80は第1トランザクションTxAを検証する。
ステップS209において、決済装置80は、商品又はサービスを購入者に提供する。
ステップS210において、決済装置80は、秘密値R等をデータベースに記憶する。
アトミックスワップを応用した処理を行う場合、ステップS211において、決済装置80は、決裁装置80の秘密鍵で電子署名Sig_Bを作成する。トランザクションパズルを応用した処理を行う場合、決済装置80はステップS211の処理を行わない。
アトミックスワップを応用した処理を行う場合、ステップS212において、決済装置80は、ステップS211で作成した電子署名Sig_Bと、ステップS207で提示された秘密値Rを用いて第2トランザクションTxBを作成する。トランザクションパズルを応用した処理を行う場合、決済装置80は、電子署名Sig_Bを用いず秘密値Rを用いて第2トランザクションTxBを作成する。
ステップS213において、決済装置80は、第2トランザクションTxBをネットワーク30に公開する。
【0089】
[第3実施例]
本実施形態のロック解除システムは、プリペイドシステムのみならず、スマートキーにも適用することが出来る。
例えば、同じ自動販売機ベンダの例を考えると、自動販売機(決済装置80)に商品を補充するには、システムの利用者である作業員(作業者)等が自動販売機の扉の施錠を解除して扉を開放し、自動販売機の内部に商品を補充する。
通常は物理的な鍵を携行する作業者が自動販売機の扉を解錠して商品を補充している。
この方法では、第三者であっても鍵を入手すれば扉を解錠でき、自動販売機内の商品や売上金を持ち出される恐れがある。
そこで、物理的な鍵を利用せず、使い捨てのID情報を使って自動販売機を解錠できるようにすることで、このような不正を防止することが出来る。
自動販売機ベンダの管理者は、自動販売機に商品の補充に向かう作業者に秘密値Rを渡す。このとき、秘密値Rは、USBメモリなど自動販売機に対して着脱可能な記憶媒体に格納された状態で作業者に渡される。
【0090】
現場に到着した作業者は、秘密値Rを使って自動販売機を解錠する。秘密値Rを格納したUSBメモリ等の記憶媒体は、スマートキーとして用いることが出来る。
秘密値Rを用いたスマートキーを実現する場合でも、アトミックスワップ、トランザクションパズルの何れをも利用可能であり、上記4つのパターンを適用することが出来るが、特に受領者の電子署名を求めることで受領者を限定するアトミックスワップを好適に採用することが出来る。
複数の自動販売機(決済装置80)夫々に秘密鍵Prk_Bを与えてもよい。秘密値Rと自動販売機(決済装置80)が一対一対応するため、秘密値Rは個々の自動販売機専用の鍵になる。ある自動販売機のために発行した秘密値Rを別の自動販売機に読み込ませても解錠することができないからである。
秘密値Rは、一度ブロックチェーンに公開されると二度は使用できないので、使い捨てのID情報として用いることが出来る。
第1トランザクションTxAに記載される電子署名に基づいて、第1トランザクションTxAの発行元が管理会社であることを確認できる。電子署名に限らず、その他のトークンによって第1トランザクションTxAの発行元を特定可能としてもよい。
【0091】
図8は、第3実施例のロック解除処理の流れを説明する図である。
以下の説明では、トランザクションスクリプトとして、P2PKHを用いるものとして説明する。
ステップ(51)において、管理装置70は、秘密値Rをランダムに決定し、管理装置70の秘密鍵Prk_Aから電子署名Sig_Aを作成する。また管理装置70は、決定した秘密値Rにハッシュ関数を適用してハッシュ値Hを生成する。
【0092】
なお、作業者(利用者)自らが秘密値Rを作成し、あるいは作業者の端末装置(利用者装置90)を用いて秘密値Rをランダムに決定し、管理装置70に提供してもよい。その場合、管理装置70は、提供された秘密値Rに対してハッシュ関数を適用してハッシュ値Hを生成する。管理装置70は秘密値Rの生成には関与せず、ハッシュ値Hの生成、電子署名Sig_Aの生成を行う。
また、作業者自らがハッシュ値Hも作成し、あるいは利用者装置90を用いて秘密値Rにハッシュ関数を適用してハッシュ値Hを生成し、管理装置70に提供してもよい。この場合、管理装置70は、電子署名Sig_Aの生成のみを行う。
秘密値Rを利用者が決定する場合は、例えば秘密値Rの提示を条件としたPCの起動やログオン許可等に適用することが考えられる。この場合管理装置70は、例えば会社等に属するPCに対する社員ユーザのログオン許可を管理する管理サーバなどが相当する。
【0093】
ステップ(52)において、管理装置70は、第1トランザクションTxAを作成する。
アトミックスワップを応用した処理を行う場合、第1トランザクションTxAは、決済装置80の電子署名Sig_B、秘密値Rを、対応する第2トランザクションTxBのScriptSigに記載することを条件にアンロック可能なトランザクションである。受領者は決済装置80に限定される。
第1トランザクションTxAのScriptPubKeyに、決済装置80の公開鍵、秘密値Rのハッシュ値Hを記載する。
第1トランザクションTxAのScriptSigに電子署名Sig_Aを記載する。
【0094】
トランザクションパズルを応用した処理を行う場合、第1トランザクションTxAは、秘密値Rを対応する第2トランザクションTxBのScriptSigに記載することを条件にアンロック可能なトランザクションである。
第1トランザクションTxAのScriptPubKeyに、秘密値Rのハッシュ値Hに記載し、決済装置80の公開鍵は記載しない。第1トランザクションTxAは受領者を限定しないトランザクションである。
第1トランザクションTxAのScriptSigに電子署名Sig_Aを記載する。
管理装置70は、作成した第1トランザクションTxAをブロックチェーン(ネットワーク30)に公開する。
【0095】
ステップ(53)において、管理装置70は、秘密値Rを作業者に提供する。秘密値Rの提供は、秘密値Rを作業者が所持するUSBメモリやトークン等に格納してもよい。あるいは、作業者が所持する携帯端末(利用者装置90)にE-MAILその他の手段で秘密値Rを送信し、同携帯端末の画面にQRコード(登録商標)やバーコードとして表示可能としてもよい。
この時、第1トランザクションTxAのトランザクションIDも同時に提供すると、決済装置80の処理負荷が軽減される。
秘密値Rを受け取った作業者は、管理装置70が第1トランザクションTxAを公開したブロックチェーンの改ざん成功確率が十分に低くなるまで待ってから、秘密値Rを決済装置80に対して提示する。
決済装置80は、USBメモリ等のトークンを差し込む差し込み口(ポート)を備える。作業者が差し込み口に、秘密値Rを格納したトークンを差し込むと、決済装置80は、秘密値Rをトークンから読み込むことが出来る。
あるいは、決済装置80は、紙に印字され、あるいは、利用者装置90としての携帯端末の表示画面に表示されたQRコード(登録商標)やバーコードをスキャンして、秘密値Rを読み取ることが出来るカメラ等の読み取り装置を備える。作業者が、紙に印字されたQRコード(登録商標)やバーコード、あるいは、利用者装置90の表示画面に表示されたQRコード(登録商標)やバーコードを読み取り装置にかざすと、決済装置80は、QRコード(登録商標)やバーコードから秘密値Rを読みとることが出来る。
【0096】
ステップ(54)において、決済装置80は、公開されている第1トランザクションTxAを検証する。
秘密値Rにハッシュ値を適用して得たハッシュ値が第1トランザクションTxAに含まれるハッシュ値Hと一致する場合には、第1トランザクションTxAが秘密値Rを用いてアンロック可能である。この場合、決済装置80は、第1トランザクションTxAに記載される電子署名を取得する。
決済装置80は、第1トランザクションTxAに記載の電子署名を検証して、第1トランザクションTxAに管理装置70の電子署名Sig_Aが付与されていることを確認する。
ステップ(55)において、電子署名Sig_Aが付与されている場合、例えば自動販売機である決済装置80は、図示しない解錠機構によって扉の施錠を解除する。
ステップ(56)において、決済装置80は、秘密値R、秘密値Rのハッシュ値H、第1トランザクションTxAのトランザクションID、電子署名Sig_Aうち、少なくとも一つを、決済装置80が備えるデータベースに記憶する。
【0097】
その後、決済装置80は、第1トランザクションTxAをアンロックするための第2トランザクションTxBを公開することが出来る。
ステップ(57)において、アトミックスワップを応用した処理を行う場合には、決済装置80は、決済装置80の秘密鍵Prk_Bで電子署名Sig_Bを作成する。トランザクションパズルを応用した処理を行う場合は電子署名Sig_Bの作成は不要である。
そして決済装置80は、第1トランザクションTxAをアンロックするための第2トランザクションTxBを作成する。
【0098】
アトミックスワップを応用した処理を行う場合は、第2トランザクションTxBのScriptPubKeyに、決済装置80の公開鍵を記載し、第2トランザクションTxBのScriptSigに、電子署名Sig_B、決済装置80の公開鍵、秘密値Rを記載する。
トランザクションパズルを応用した処理を行う場合は、第2トランザクションTxBは、第2トランザクションTxBのScriptPubKeyに、決済装置80の公開鍵を記載し、第1トランザクションTxAのScriptSigに、決済装置80の公開鍵、秘密値Rを記載する。電子署名Sig_Bは記載しない。
そして、決済装置80は、作成した第2トランザクションTxBをブロックチェーン(ネットワーク30)に公開する。
【0099】
本実施形態のロック解除システムにおいて、第1トランザクションTxAをアンロックできる秘密値Rを作業者が所持していることが重要である。従って、作業者が決済装置80に提示したことに応じて、決済装置80は、指定の処理(施錠を解除)を実行する。
施錠の解除後、第2トランザクションTxBをブロックチェーンに公開すると、履歴情報(秘密値R、ハッシュ値H、秘密鍵、トランザクションID)がブロックチェーンに記録されるため、決済装置80における解錠記録を外部から確認することが出来る。
ただし、これに限らず、第2トランザクションTxBをブロックチェーンに公開したあとで、指定の処理(施錠の解除)を実行してもよい。ステップ(54)とステップ(55)の間に、ステップ(57)を実行してもよい。
上記のように、作業者は、第1トランザクションTxA取り消される確率が十分に低くなった時点以降に秘密値Rを決済装置80に提示する。よって、決済装置80は、施錠を解除した後に秘密値R(第2トランザクションTxB)を公開してもよいし、秘密値R(第2トランザクションTxB)を公開してから施錠を解除してもよい。
なお、本実施形態では、第1トランザクションTxAと決済装置80による施錠解除時の第2トランザクションTxBと、の2段階のトランザクションを発行している。第1トランザクションTxAについては、承認数が十分に増えるまでの時間を待つ必要があるが、第2トランザクションTxBについて承認数が増えるのを待つ必要がなく、データベースに記憶した秘密値Rと同じ秘密値Rが提示されてないことを条件に即時施錠を解除することが出来る。
第2トランザクションTxBが取り消されデータベースに記憶した秘密値Rと同じ秘密値Rが提示された場合でも、施錠を解除しなければよい。
また、データベースに記憶する秘密値R、秘密値Rのハッシュ値H、第1トランザクションTxAのトランザクションID、電子署名Sig_Aによって第2トランザクションTxBを公開しなおせばよい。
作業者は、施錠の解除前に第2トランザクションTxBの十分な数の承認を待機する必要がなく、作業の効率性を高めることが出来る。
【0100】
また上記したように、トランザクションパズルを応用し、決済装置80にとってのみ電子署名の価値がある場合には、二重使用が行われことは想定しにくいので、第2トランザクションTxBの十分な数の承認を待機する必要がなく、利便性を高めることが出来る。
アトミックスワップでは、秘密値Rに加えて決済装置80の電子署名がないと第1トランザクションTxAを受け取れないので、暗号資産の二重使用は不可能である。よって、購入者が、施錠の解除前に第2トランザクションTxBの十分な数の承認を待機する必要がない。
【0101】
図9は、
図8で説明した解錠処理を説明するフローチャートである。
以下の説明では、トランザクションスクリプトとして、P2PKHを用いるものとして説明する。
ステップS301において、管理装置70は、秘密値Rをランダムに決定する。
ステップS302において、管理装置70は、管理装置70の秘密鍵で電子署名Sig_Aを作成する。
ステップS303において、管理装置70は、秘密値Rと電子署名Sig_Aを用いた第1トランザクションTxAを作成する。
ステップS304において、管理装置70は、第1トランザクションTxAをネットワーク30に公開する。
ステップS305において、管理装置70は、秘密値Rを作業者に提供する。
ステップS306において、作業者は、秘密値Rを決済装置80に提示する。
ステップS307において、決済装置80は第1トランザクションTxAを検証する。
ステップS308において、決済装置80は、扉の施錠を解除する。
ステップS309において、決済装置80は、秘密値R等をデータベースに記憶する。
【0102】
アトミックスワップを応用した処理を行う場合、ステップS310において、決済装置80は、決裁装置80の秘密鍵で電子署名Sig_Bを作成する。トランザクションパズルを応用した処理を行う場合、決済装置80はステップS310の処理を行わない。
ステップS311において、決済装置80は第2トランザクションTxBを作成する。
アトミックスワップを応用した処理を行う場合、決済装置80は、電子署名Sig_Bと秘密値Rを用いて第2トランザクションTxBを作成する。トランザクションパズルを応用した処理を行う場合、決済装置80は、電子署名Sig_Bを用いず、秘密値Rを用いて第2トランザクションTxBを作成する。
ステップS310において、決済装置80は、第2トランザクションTxBをネットワーク30に公開する。
【0103】
なお、
図8、
図9に示すスマートロックの場合も、上記のプリペイドシステムと同様に、トランザクションAを利用者装置90が公開してもよい。
その場合も、管理装置70は、秘密値Rをランダムに決定し、管理装置70の秘密鍵Prk_Aから電子署名Sig_Aを作成し、秘密値Rにハッシュ関数を適用してハッシュ値Hを生成する。管理装置70は、秘密値R、電子署名Sig_A、ハッシュ値Hを、作業者に提供する。
また、作業者(利用者)自らが秘密値Rを作成し、あるいは作業者の端末装置(利用者装置90)を用いて秘密値Rをランダムに決定し、管理装置70に提供してもよい。その場合、管理装置70は、提供された秘密値Rに対してハッシュ関数を適用してハッシュ値Hを生成する。管理装置70は秘密値Rの生成には関与せず、ハッシュ値Hの生成、電子署名Sig_Aの生成を行い、電子署名Sig_A、ハッシュ値Hを作業者に提供する。
また、作業者自らがハッシュ値Hをも作成し、あるいは利用者装置90を用いて秘密値Rにハッシュ関数を適用してハッシュ値Hを生成し、作業者に提供してもよい。この場合、管理装置70は、電子署名Sig_Aの生成のみを行い、生成した電子署名Sig_Aを作業者に提供する。
【0104】
装置管理装置、決済装置、利用者装置について説明する。
図10乃至
図13は、各装置の一実施例を示す機能ブロック図である。
管理装置70、決済装置80、利用者装置90は夫々、他の装置が有する機能の少なくとも1つ以上の機能を有してもよい。
図10は管理装置70が有する機能を示すブロック図である。
図10を参照して、管理装置70の機能を説明する。
管理装置70は、制御部60と、通信部91と、記憶部92とを含む。
制御部60は、確認部61と、決定部62と、生成部63と、出力部64と、作成部65と、公開部66と、取得部67と、を含む。通信部91は、管理装置70をネットワークに接続する。記憶部92は、各種情報を記憶する。
【0105】
確認部61は、例えば、外部の収納代行サービスなどを介して、購入者よりの事前入金を確認する。
決定部62は、秘密値Rをランダムに決定する。
生成部63は、管理装置70の秘密鍵から電子署名を生成し、秘密値Rからハッシュ値Hを生成する。
出力部64は、決定した秘密値R、生成した電子署名、ハッシュ値Hを、購入者に向けて出力する。具体的には、秘密値Rを紙出力させるために収納代行サービスに向けて出力したり、電子署名、ハッシュ値HをE-MAILなどで利用者装置90に向けて送信したりする。
作成部65は、第1トランザクションTxAを作成する。
公開部66は、作成部65が作成した第1トランザクションTxAをネットワーク30に公開する。
取得部67は、例えば、外部の収納代行サービスなどを介して、利用者装置90から秘密値R、ハッシュ値Hを取得する。
【0106】
図11は、決済装置80が有する機能を示すブロック図である。
図11を参照して、決済装置80の機能を説明する。
決済装置80は、制御部100と、通信部111と、記憶部112とを含む。
制御部100は、受取部101と、取得部102、生成部103と、作成部104と、公開部105と、格納部106と、実行部107を含む。
記憶部112は、各種情報を記憶する。記憶部112は、例えば、秘密値R、管理装置70の電子署名、ハッシュ値H等のデータベースを記憶する。
受取部101は、購入者や作業者から提示されたQRコード(登録商標)やトークン(USBメモリ)から、秘密値Rを取得する。
取得部102は、受取部101により受け取った秘密値を用いて第1トランザクションTxAがアンロック可能な場合、第1トランザクションTxAに含まれる識別情報(電子署名)を取得する。
生成部103は、決済装置80の秘密鍵から電子署名を生成する。
作成部104は、第2トランザクションTxBを作成する。
公開部105は、作成部103が作成した第2トランザクションTxBをネットワーク30に公開する。
格納部106は、秘密値R、管理装置70の電子署名、ハッシュ値H等を記憶部112のデータベースに格納する。
実行部107は、所定の払出機構を制御して商品の払出を行い、所定の解錠機構を制御して施錠する、などの処理を実行する。
【0107】
図12は、利用者装置90が有する機能を示すブロック図である。
図12を参照して、利用者装置90の機能を説明する。
決済装置80は、制御部120と、通信部131と、記憶部132と、表示部133とを含む。
制御部120は、取得部121と、決定部122と、生成部123と、作成部124と、公開部125と、出力部126と、を含む。
取得部121は、管理装置70から、秘密値R、ハッシュ値H、管理装置70の電子署名を取得する。
決定部122は、秘密値Rをランダムに決定する。
生成部123は、秘密値Rからハッシュ値Hを生成し、秘密値Rに基づくコード情報(QRコード(登録商標)、バーコード)を生成する。
作成部124は、第1トランザクションTxAを作成する。
公開部125は、作成部124が作成した第1トランザクションTxAをネットワーク30に公開する。
受渡部126は、生成部123が生成したコード情報を表示部133に表示して秘密値Rを決済装置80に受け渡す。
【0108】
図13は、コンピュータ装置の一実施例を示すブロック図である。
図13を参照して、コンピュータ装置50の構成について説明する。
図13において、コンピュータ装置50は、制御回路51と、記憶装置52と、読書装置53と、記録媒体54、通信インターフェイス55と、入出力インターフェイス56と、入力装置57と、表示装置58とを含む。また、通信インターフェイス55は、ネットワーク600と接続される。そして各構成要素は、バス59により接続される。取引装置10、取引装置20、管理装置70、決済装置80及び利用者装置90は、コンピュータ装置50に記載の構成要素の一部または全てを適宜選択して構成することができる。
【0109】
制御回路51は、コンピュータ装置50全体の制御をする。制御回路51は、例えば、Central Processing Unit(CPU)、Field Programmable Gate Array(FPGA)、Application Specific Integrated Circuit(ASIC)及びProgrammable Logic Device(PLD)などのプロセッサである。制御回路51は、例えば、
図10において、制御部60として機能する。また制御回路51は、
図11において、制御部100として機能する。制御回路51は、例えば、
図12において、制御部120として機能する。
記憶装置52は、各種データを記憶する。そして、記憶装置52は、例えば、Read Only Memory(ROM)及びRandom Access Memory(RAM)などのメモリや、Hard Disk(HD)などである。記憶装置52は、制御回路51を、制御部60として機能させるロック解除プログラムを記憶してもよい。記憶装置52は、例えば、
図10において、記憶部92として機能する。また記憶部52は、
図11において、記憶部112として機能する。また記憶部52は、
図12において記憶部132として機能する。
【0110】
管理装置70、決済装置80及び利用者装置90は、ロック解除処理をするとき、記憶装置52に記憶されたロック解除プログラムをRAMに読み出す。
RAMに読み出されたロック解除プログラムを制御回路51で実行することにより、管理装置70は、確認処理と、決定処理と、生成処理と、出力処理と、作成処理と、公開処理と、のいずれか1以上を含むロック解除処理を実行する。
また決済装置80は、RAMに読み出されたロック解除プログラムを制御回路51で実行することにより、取得処理と、生成処理と、作成処理と、公開処理と、格納処理と、のいずれか1以上を含むロック解除処理を実行する。
また決済装置90は、RAMに読み出されたロック解除プログラムを制御回路51で実行することにより、取得処理と、決定処理と、生成処理と、作成処理と、公開処理と、受渡処理と、のいずれか1以上を含むロック解除処理を実行する。
なお、ロック解除プログラムは、制御回路51が通信インターフェイス55を介してアクセス可能であれば、ネットワーク600上のサーバが有する記憶装置に記憶されていても良い。
【0111】
読書装置53は、制御回路51に制御され、着脱可能な記録媒体54のデータのリード/ライトを行なう。
記録媒体54は、各種データを保存する。記録媒体54は、例えば、ロック解除処理プログラムを記憶する。記録媒体54は、例えば、Secure Digital(SD)メモリーカード、Floppy Disk(FD)、Compact Disc(CD)、Digital Versatile Disk(DVD)、Blu-ray(登録商標) Disk(BD)、及びフラッシュメモリなどの不揮発性メモリ(非一時的記録媒体)である。
【0112】
通信インターフェイス55は、ネットワーク600を介してコンピュータ装置50と他の装置とを通信可能に接続する。通信インターフェイス55は、例えば、
図10において、通信部91として機能する。
通信インターフェイス55は、例えば、
図10において、通信部91として機能する。また通信インターフェイス55は、
図11において、通信部111として機能する。また通信インターフェイス55は、
図12において、通信部132として機能する。
入出力インターフェイス56は、例えば、各種入力装置と着脱可能に接続するインターフェイスである。入出力インターフェイス56は、接続された各種入力装置とコンピュータ装置50とを通信可能に接続する。そして、入出力インターフェイス56は、接続された各種入力装置から入力された信号を、バス59を介して制御回路51に出力する。また、入出力インターフェイス406は、制御回路51から出力された信号を、バス59を介して入出力装置に出力する。
入力装置57は、例えば、タッチパネル、コード読み取り装置、キーボード及びマウスなどである。特に入出力インターフェイス56に接続された入力装置57としてのコード読み取り装置は、例えば、紙や利用者装置に表示される秘密値RのQRコード(登録商標)やバーコードを介した秘密値Rの入力を受け付けてもよい。
表示装置58は、各種情報を表示する。表示装置58は、例えば、
図12の表示部133として機能し、秘密値RのQRコード(登録商標)やバーコードを表示してもよい。
ネットワーク600は、例えば、LAN、無線通信、P2Pネットワーク、またはインターネットなどであり、コンピュータ装置50と他の装置を通信接続する。
なお、本実施形態は、以上に述べた実施形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【符号の説明】
【0113】
50 コンピュータ装置
51 制御回路
52 記憶装置
53 読書装置
54 記録媒体
55 通信I/F
56 入出力I/F
57 入力装置
58 表示装置
59 バス
60、100 制御部
70 管理装置
80 決済装置
90 利用者装置
91、111、131 通信部
92、112、132 記憶部
133 表示部