(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023037442
(43)【公開日】2023-03-15
(54)【発明の名称】コンピュータ実装方法及びシステム
(51)【国際特許分類】
G06Q 20/38 20120101AFI20230308BHJP
G06Q 20/32 20120101ALI20230308BHJP
G06F 21/62 20130101ALI20230308BHJP
【FI】
G06Q20/38 310
G06Q20/32 330
G06F21/62 318
【審査請求】未請求
【請求項の数】16
【出願形態】OL
(21)【出願番号】P 2021144210
(22)【出願日】2021-09-03
(71)【出願人】
【識別番号】518003096
【氏名又は名称】Bacoor dApps株式会社
(71)【出願人】
【識別番号】320003367
【氏名又は名称】株式会社AI商事
(74)【代理人】
【識別番号】100111567
【弁理士】
【氏名又は名称】坂本 寛
(72)【発明者】
【氏名】春名 幸雄
(72)【発明者】
【氏名】竹内 仁
【テーマコード(参考)】
5L055
【Fターム(参考)】
5L055AA64
5L055AA71
(57)【要約】
【課題】スマートコントラクトの呼び出しのためにブロックチェーンへ送信されるデータを容易に取得できるようにする。
【解決手段】開示の方法は、コンピュータが実行するコンピュータ実装方法であって、ブロックチェーンのスマートコントラクトの呼び出しに用いられる装置から、第1データを用いたアクセスを受け付け、前記第1データを用いたアクセスを受け付けると、前記第1データとは異なる第2データを発行し、前記第2データを前記装置へ与えることを備え、前記第1データは、前記装置が、前記装置の外部から取得したデータであり、前記第2データは、前記スマートコントラクトの呼び出しのために前記ブロックチェーンへ送信されるデータを含む。
【選択図】
図8
【特許請求の範囲】
【請求項1】
コンピュータが実行するコンピュータ実装方法であって、
ブロックチェーンのスマートコントラクトの呼び出しに用いられる装置から、第1データを用いたアクセスを受け付け、
前記第1データを用いたアクセスを受け付けると、前記第1データとは異なる第2データを発行し、
前記第2データを前記装置へ与える
ことを備え、
前記第1データは、前記装置が、前記装置の外部から取得したデータであり、
前記第2データは、前記スマートコントラクトの呼び出しのために前記ブロックチェーンへ送信されるデータを含む
コンピュータ実装方法。
【請求項2】
前記第2データは、前記第1データを用いたアクセス毎に異なるユニークデータとして発行される
請求項1に記載のコンピュータ実装方法。
【請求項3】
前記第2データは、前記スマートコントラクトの呼び出しのために用いることができる回数が制限されているデータを含む
請求項1又は2に記載のコンピュータ実装方法。
【請求項4】
前記回数は、1回である
請求項3に記載のコンピュータ実装方法。
【請求項5】
前記第2データは、前記スマートコントラクトによって操作されるトークンに関するデータを含む
請求項1から請求項4のいずれか1項に記載のコンピュータ実装方法。
【請求項6】
前記トークンは、ノンファンジブルトークン及びファンジブルトークンの少なくともいずれか一方である
請求項5に記載のコンピュータ実装方法。
【請求項7】
前記第2データは、前記スマートコントラクトによって操作されるノンファンジブルトークンを識別するためのデータを含む
請求項1から請求項6のいずれか1項に記載のコンピュータ実装方法。
【請求項8】
前記第2データは、前記スマートコントラクトによって操作されるファンジブルトークンの数を識別するためのデータを含む
請求項1から請求項7のいずれか1項に記載のコンピュータ実装方法。
【請求項9】
呼び出された前記スマートコントラクトによって、トークンを送信する
ことを更に備え、
前記スマートコントラクトは、前記トークンに関する前記データに基づいて、送信すべきトークンを決定する
請求項5に記載のコンピュータ実装方法。
【請求項10】
前記スマートコントラクトは、前記トークンに関する前記データに対応付けられた数のファンジブルトークンを送信する
請求項9に記載のコンピュータ実装方法。
【請求項11】
前記スマートコントラクトは、前記トークンに関する前記データに対応付けられたノンファンジブルトークンを送信する
請求項9又は請求項10に記載のコンピュータ実装方法。
【請求項12】
呼び出された前記スマートコントラクトによって、ファンジブルトークンを送信する
ことを更に備え、
前記スマートコントラクトは、前記トークンに関する前記データを受信すると、送信すべきファンジブルトークンの数を決定し、決定した数のファンジブルトークンを送信する
請求項5に記載のコンピュータ実装方法。
【請求項13】
呼び出された前記スマートコントラクトによって、ノンファンジブルトークンを送信する
ことを更に備え、
前記スマートコントラクトは、前記トークンに関する前記データを受信すると、送信すべきノンファンジブルトークンを生成し、生成したノンファンジブルトークンを送信する
請求項5に記載のコンピュータ実装方法。
【請求項14】
第1データを用いたアクセスを受け付けると、第2データの発行条件が満たされているかどうかを判定することを更に備え、
前記第2データは、前記発行条件が満たされている場合に、発行される
請求項1から請求項13のいずれか1項に記載のコンピュータ実装方法。
【請求項15】
前記発行条件が満たされているかどうかの判定は、前記装置から取得したデータに基づいて行われる
請求項14に記載のコンピュータ実装方法。
【請求項16】
ブロックチェーンのスマートコントラクトの呼び出しに用いられる装置から、第1データを用いたアクセスを受け付け、
前記第1データを用いたアクセスを受け付けると、前記第1データとは異なる第2データを発行し、
前記第2データを前記装置へ与える、
ことを実行するよう構成されたサーバを備える
システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、コンピュータ実装方法及びシステムに関する。
【背景技術】
【0002】
特許文献1は、ブロックチェーンのスマートコントラクトを開示している。スマートコントラクトは、自動取引等の処理をブロックチェーンにおいて実行する。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【0004】
ブロックチェーンの利用を図るためには、スマートコントラクトの呼び出しのためにブロックチェーンへ送信されるデータを容易に取得できることが望まれる。
【0005】
特に、ブロックチェーンのスマートコントラクトの呼び出しに用いられる装置が取得したデータが、スマートコントラクトの呼び出しのためにブロックチェーンへ送信されるデータではない場合であっても、当該装置が、スマートコントラクトの呼び出しのためにブロックチェーンへ送信されるデータを取得できることが望まれる。
【0006】
本開示のある側面は、コンピュータ実装方法である。開示の方法は、コンピュータが実行するコンピュータ実装方法であって、ブロックチェーンのスマートコントラクトの呼び出しに用いられる装置から、第1データを用いたアクセスを受け付け、前記第1データを用いたアクセスを受け付けると、前記第1データとは異なる第2データを発行し、前記第2データを前記装置へ与えることを備え、前記第1データは、前記装置が、前記装置の外部から取得したデータであり、前記第2データは、前記スマートコントラクトの呼び出しのために前記ブロックチェーンへ送信されるデータを含む。
【0007】
本開示の他の側面は、システムである。開示のシステムは、ブロックチェーンのスマートコントラクトの呼び出しに用いられる装置から、第1データを用いたアクセスを受け付け、前記第1データを用いたアクセスを受け付けると、前記第1データとは異なる第2データを発行し、前記第2データを前記装置へ与える、ことを実行するよう構成されたサーバを備える。
【0008】
更なる詳細は、後述の実施形態として説明される。
【図面の簡単な説明】
【0009】
【
図1】
図1は、実施形態に係るシステムの概略構成図である。
【
図2】
図2は、スマートコントラクト呼び出し方法の第1例を示す概略図である。
【
図3】
図3は、スマートコントラクト呼び出し方法の第2例を示す概略図である。
【
図4】
図4は、スマートコントラクト呼び出し方法の第3例を示す概略図である。
【
図5】
図5は、スマートコントラクトの概略図である。
【
図7】
図7は、第1データの取得例を示す説明図である。
【
図8】
図8は、スマートコントラクトを呼び出すために、第1データを用いて第2データを取得する手順を示すフローチャートである。
【
図9】
図9は、第2URIを用いてスマートコントラクトを呼び出す手順を示すフローチャートである。
【
図11】
図11は、第1URIから第2URIを生成する方法の説明図である。
【
図13】
図13は、第2URIを用いて、スマートコントラクトの呼び出しデータを取得する方法の説明図である。
【
図14】
図14は、スマートコントラクトの呼び出しのためにブロックチェーンに送信されるデータの説明図である。
【
図15】
図15は、スマートコントラクトによるトークン配布例の説明図である。
【
図16】
図16は、第1データから第2データを取得する手順の説明図である。
【
図18】
図18は、事前設定の手順を示すフローチャートである。
【
図19】
図19は、事前設定の手順を示すフローチャートである。
【発明を実施するための形態】
【0010】
<1.方法及びシステムの概要>
【0011】
(1)実施形態に係る方法は、コンピュータが実行するコンピュータ実装方法であって、ブロックチェーンのスマートコントラクトの呼び出しに用いられる装置から、第1データを用いたアクセスを受け付け、前記第1データを用いたアクセスを受け付けると、前記第1データとは異なる第2データを発行し、前記第2データを前記装置へ与えることを備え、前記第1データは、前記装置が、前記装置の外部から取得したデータであり、前記第2データは、前記スマートコントラクトの呼び出しのために前記ブロックチェーンへ送信されるデータを含む。前記第1データは、例えば、後述述のように近距離無線通信によって、外部から取得されるが、近距離無線通信以外の手段によって、取得されてもよい。
【0012】
(2)前記第2データは、前記第1データを用いたアクセス毎に異なるユニークデータとして発行されるのが好ましい。
【0013】
(3)前記第2データは、前記スマートコントラクトの呼び出しのために用いることができる回数が制限されているデータを含むのが好ましい。
【0014】
(4)前記回数は、1回であるのが好ましい。
【0015】
(5)前記第2データは、前記スマートコントラクトによって操作されるトークンに関するデータを含むのが好ましい。
【0016】
(6)前記トークンは、ノンファンジブルトークン及びファンジブルトークンの少なくともいずれか一方であるのが好ましい。
【0017】
(7)前記第2データは、前記スマートコントラクトによって操作されるノンファンジブルトークンを識別するためのデータを含むのが好ましい。
【0018】
(8)前記第2データは、前記スマートコントラクトによって操作されるファンジブルトークンの数を識別するためのデータを含むのが好ましい。
【0019】
(9)前記方法は、呼び出された前記スマートコントラクトによって、トークンを送信することを更に備え、前記スマートコントラクトは、前記トークンに関する前記データに基づいて、送信すべきトークンを決定するのが好ましい。
【0020】
(10)前記スマートコントラクトは、前記トークンに関する前記データに対応付けられた数のファンジブルトークンを送信するのが好ましい。
【0021】
(11)前記スマートコントラクトは、前記トークンに関する前記データに対応付けられたノンファンジブルトークンを送信するのが好ましい。
【0022】
(12)前記方法は、呼び出された前記スマートコントラクトによって、ファンジブルトークンを送信することを更に備え、前記スマートコントラクトは、前記トークンに関する前記データを受信すると、送信すべきファンジブルトークンの数を決定し、決定した数のファンジブルトークンを送信するのが好ましい。
【0023】
(13)前記方法は、呼び出された前記スマートコントラクトによって、ノンファンジブルトークンを送信することを更に備え、前記スマートコントラクトは、前記トークンに関する前記データを受信すると、送信すべきノンファンジブルトークンを生成し、生成したノンファンジブルトークンを送信するのが好ましい。
【0024】
(14)前記方法は、第1データを用いたアクセスを受け付けると、第2データの発行条件が満たされているかどうかを判定することを更に備え、前記第2データは、前記発行条件が満たされている場合に、発行されるのが好ましい。
【0025】
(15)前記発行条件が満たされているかどうかの判定は、前記装置から取得したデータに基づいて行われるのが好ましい。
【0026】
(16)実施形態に係るシステムは、ブロックチェーンのスマートコントラクトの呼び出しに用いられる装置から、第1データを用いたアクセスを受け付け、前記第1データを用いたアクセスを受け付けると、前記第1データとは異なる第2データを発行し、前記第2データを前記装置へ与える、ことを実行するよう構成されたサーバを備えるのが好ましい。
【0027】
<2.方法及びシステムの例>
【0028】
図1は、実施形態に係るシステム10の一例を示している。このシステム10は、ブロックチェーン20のスマートコントラクト22を利用したシステムである。
【0029】
ブロックチェーン20は、複数のコンピュータが相互に接続されたP2P(Peer to Peer)のコンピュータネットワークシステムによって構成されている。
【0030】
ブロックチェーン20においては、ブロックチェーンアドレス間で取引が可能である。取引のトランザクションは、ブロックチェーン20の分散台帳に記録される。ブロックチェーンアドレスは、例えば、ブロックチェーン20におけるユーザアカウント25A,25Bを示す。例えば、あるユーザU1が、ブロックチェーン20にアカウント25Aを有している場合、そのアカウントは、所定のブロックチェーンアドレスを有する。
【0031】
ブロックチェーン20おいては、例えば、トークンの取引が可能である。ブロックチェーン20において取引可能なトークンとしては、ファンジブルトークン(代替性トークン;Fungible Token:FT)と、ノンファンジブルトークン(非代替性トークン;Non-Fungible Token:NFT)と、がある。ファンジブルトークンは、例えば、イーサリアム(Ethereum)におけるイーサ(Ether)などの暗号通貨である。ファンジブルトークンは、企業又は個人によってブロックチェーンにおいて発行される独自ファンジブルトークンであってもよい。
【0032】
ノンファンジブルトークン(NFT)は、ファンジブルトークン(FT)とは異なり、代替性を有さないトークンである。非代替性の確保のため、NFTは、ブロックチェーン20において、他のNFTとの区別を可能にするための固有の識別子を有する。以下では、この識別子をNFT識別子という。NFT識別子は、例えば、NFTのためのブロックチェーンアドレス(コントラクトアドレス)に記録される。
【0033】
ブロックチェーン20において、ユーザU1,U2が所有するNFT又はファンジブルトークンは、ユーザアカウント25A,25Bに対応付けて記録される。
【0034】
ブロックチェーン20は、スマートコントラクト22を備える。スマートコントラクト22は、ブロックチェーンにおいて実行可能に実装されたソフトウェア(コンピュータプログラム)によって構成されている。スマートコントラクト22は、自動取引等の所定のプロトコルを自動的に実行する。
【0035】
前述のブロックチェーンアドレスは、スマートコントラクト22のコントラクトアドレスを示すこともある。コントラクトアドレスは、スマートコントラクト22が格納されているブロックチェーンアドレスである。
【0036】
ブロックチェーン20においては、スマートコントラクト22もNFT又はファンジブルトークンを所有できる。ブロックチェーン20において、スマートコントラクト22が所有するNFT又はファンジブルトークンは、スマートコントラクト22のコントラクトアドレスに対応付けて記録される。
【0037】
スマートコントラクト22によって実行される処理は、例えば、トークンの操作である。トークンの操作は、例えば、トークンの所有者変更である。トークンの所有者変更の操作は、トークンの送信とも呼ばれる。すなわち、トークンの所有者を第1ブロックチェーンアドレスから第2ブロックチェーンアドレスに変更することは、第1ブロックチェーンアドレスから第2ブロックチェーンアドレスへトークンを送信することもでもある。
【0038】
トークンの送信は、例えば、スマートコントラクト22のコントラクトアドレスから、他のブロックチェーンアドレス(例えば、ユーザアカウント)へトークンを送信することである。
【0039】
なお、トークンの操作は、トークンの所有者変更(送信)に限られず、トークンに関する何らかの処理であれば足りる。
【0040】
スマートコントラクト22は、例えば、スマートコントラクト22外からの呼び出し操作によって呼び出されることで、スマートコントラクト22による処理が実行される。スマートコントラクト22は、例えば、ユーザのアカウント25A,25Bから呼び出される。
【0041】
ユーザU1,U2の端末31,32は、スマートコントラクト22の呼び出しに用いられ得る。すなわち、端末31,32は、ブロックチェーン20のスマートコントラクト22の呼び出しに用いられる装置である。
【0042】
端末31,32は、例えば、スマートフォンなどのハンドヘルド装置である。ユーザU1,U2の端末31,32は、例えば、スマートコントラクト22の呼び出しのためのアプリケーションプログラムを利用することで、スマートコントラクト22を呼び出す。スマートコントラクト22の呼び出しのためのアプリケーションプログラムは、端末31,32上で動作するローカルアプリケーションプログラムであってもよいし、WEBサーバによって提供されるWEBアプリケーションプログラムであってもよい。
【0043】
実施形態においては、スマートコントラクト22の呼び出しに、近距離無線通信(Near Field Communication)が使用され得る。近距離無線通信は、NFC規格に従った通信であるのが好ましい。NFCは、例えば、13.56MHz帯の周波数を使った無線通信である。近距離無線通信の通信距離は、10cm以下であるのが好ましい。
【0044】
端末31,32は、近距離無線通信モジュール31D,32D(NFCモジュール31D,32D)を備えている。端末31,32は、他の近距離無線通信装置40との間で、近距離無線通信を行うことができる。
【0045】
他の近距離無線通信装置40は、例えば、近距離無線通信タグ40(NFCタグ40)である。NFCタグ40は、近距離無線通信のためのICタグであり、NFC規格に準拠した通信を行う。NFCタグ40は、電源不要である。
【0046】
図1に示すように、NFCタグ40は、アンテナ41と、アンテナ41に接続された無線回路42と、無線回路42に接続されたコントローラ43と、コントローラ43に接続されたメモリ44と、を備える。メモリ44には、近距離無線通信によって送信される通信データ46が保存されている。なお、通信データ46は、図示しない書き込み装置によって、メモリ44に書き込まれる。
【0047】
実施形態においては、NFCタグ40(近距離無線通信をする装置(第1装置))から、端末31,32(スマートコントラクト22の呼び出しに用いられる装置(第2装置))へ、通信データ46が送信される。例えば、ユーザU1,U2が、端末31,32を、NFCタグ40にかざすことで、近距離無線通信によって、通信データ46が、端末31,32へ送信される。
【0048】
通信データ46を受信した端末31,32は、受信した通信データ46を利用して、スマートコントラクト22の呼び出しをする。すなわち、実施形態においては、端末31,32が近距離無線通信を行って通信データ46を受信すると(ステップS11)、スマートコントラクト22の呼び出し(ステップS12)のための処理が開始される。つまり、実施形態においては、近距離無線通信が、スマートコントラクト22の呼び出しのトリガになっている。なお、スマートコントラクト22の呼び出しのための処理は、スマートコントラクト22の呼び出しそのもののほか、スマートコントラクト22の呼び出しのための準備をする処理を含み得る。
【0049】
通信データ46は、スマートコントラクト22の呼び出しのために用いられる第1データ110を含み得る。実施形態において、第1データ110は、スマートコントラクト22の呼び出しのためにブロックチェーン20へ送信されるデータである必要はなく、例えば、第1データ110は、スマートコントラクト22の呼び出しのためにブロックチェーン20へ送信されるデータを取得するために用いられるデータであってもよい。すなわち、第1データは、スマートコントラクト22の呼び出しのための準備をする処理において用いられるデータであってもよい。
【0050】
通信データ46の送信のため、複数のNFCタグ40(近距離無線通信装置40)が用いられてもよい。複数のNFCタグ40それぞれは、同一の通信データ46を送信し得る。あるいは、複数のNFCタグ40が送信する通信データ46は、同一の第1データ110を含み得る。
【0051】
図2から
図4は、第1データ110を用いて、スマートコントラクト22を呼び出す方法のいくつかの例を示している。
図2は、呼び出す方法の第1例を示している。
図2に示す第1例では、まず、第1データ取得器201によって、第1データ110が取得される(ステップS21)。第1データ110の取得は、例えば、スマートコントラクト22の呼び出しのためのトリガとされる。第1データ取得器201は、例えば、第1データ110を外部から取得するためのインタフェースを備えたコンピュータである。第1データ取得器201は、例えば、
図1に示す端末31,32である。
【0052】
取得器201が取得した第1データ110は、第2データ120の発行に用いられ得る。第1データ110は、例えば、第2データ120を発行する第2データ発行器202へのアクセスに用いられてもよいし、第1データ110に対応付けられた第2データの取得に用いられてもよいし、第2データ120への変換に用いられてもよい。
【0053】
第2データ120は、第2データ発行器202によって発行され得る。第2データ発行器202は、例えば、第2データを発行するよう構成されたコンピュータである。第2データ発行器202は、第1データ取得器201とは異なるコンピュータであり得る。第2データ発行器202は、例えば、後述の第1サーバ51(
図6参照)である。
【0054】
第1データ取得器201は、第2データ発行器202にアクセスすることができる(ステップS22)。第1データ110は、そのアクセスに用いられ得る。第1データ110は、そのアクセスによって第2データ発行器202へ送信され得る。
【0055】
第1データ110を用いたアクセスを受けた第2データ発行器202は、第2データ120を発行することができる。第2データ120は、スマートコントラクト22の呼び出しのためにブロックチェーン20へ送信されるデータを含み得る。スマートコントラクト22の呼び出しのためにブロックチェーン20へ送信されるデータは、発行器202によって発行されるため、第1データ110は、スマートコントラクト22の呼び出しのためにブロックチェーン20へ送信されるデータを含んでいなくてもよい。
【0056】
第2データ発行器202は、あらかじめ設定された発行プロトコルに従って、第2データ120を発行し得る。発行プロトコルは、第2データ120の発行条件を含み得る。発行プロトコルは、発行条件に従って第2データ120を発行する工程を含み得る。第1データ110を用いたアクセスを受け付けた第2データ発行器202は、発行条件を満たさない場合には第2データ120を発行せず、発行条件を満たした場合に第2データ120を発行することができる。発行条件を設けることで、第2データ発行器202へのアクセスがあっても、第2データ120を発行しない、という対処が可能となる。
【0057】
例えば、同一ユーザU1,U2又は同一端末31,32に対する第2データ120の発行を1日あたり1回に制限したい場合、同一ユーザU1,U2又は同一端末31,32による第2データ発行器202へのアクセスが同日において無いことを発行条件にすることができる。
【0058】
発行プロトコルは、アクセスに用いられた第1データ110に対応する第2データ120を識別する工程を含み得る。この場合、アクセスに用いられた第1データ110に応じて、適切な第2データ120を発行することができる。例えば、アクセスに用いられ得る第1データ110が複数種類ある場合、アクセスに用いられた第1データ110の種類に対応する第2データ120を識別することで、第1データ110の種類に応じた、適切な第2データ120を発行することができる。
【0059】
発行プロトコルは、発行される第2データ120を、複数の第2データ候補の中から選択する工程を含み得る。選択は、所定のルールに従った選択でもよいし、ランダムな選択であってもよい。複数の第2データ候補は、それぞれ異なるユニークデータであるのが好ましい。第2データ発行器202は、一度に一つの第2データ120だけを発行してもよいし、一度に複数の第2データ120を発行してもよい。
【0060】
一例として、1種類の第1データ110に複数種類の第2データ候補が対応付けられている場合、第2データ発行器202は、アクセスに用いられた第1データ110に対応付けられた複数種類の第2データ候補の中から、発行される第2データ120を選択することができる。この場合、同じ種類の第1データ110を用いたアクセスが複数回あった場合、アクセス毎に異なる種類の第2データ120を発行することができる。つまり、第2データは、第1データ110を用いたアクセス毎に異なるユニークデータとして発行され得る。
【0061】
発行された第2データ120は、呼び出し器203に与えられる(ステップS23)。呼び出し器203は、例えば、スマートコントラクト22の呼び出しをするよう構成されたコンピュータである。呼び出し器203は、第1データ取得器201を構成するコンピュータと同じコンピュータであってもよいし、は第2データ発行器202を構成するコンピュータと同じコンピュータであってもよいし、他のコンピュータであってもよい。呼び出し器203としての機能は、複数のコンピュータの協調動作によって実現されてもよい。例えば、呼び出し器203は、端末31と、端末31がアクセスした他のコンピュータ(例えばサーバ52)と、によって構成されてもよい。
【0062】
呼び出し器203は、スマートコントラクト22の呼び出しをするために、ブロックチェーン20へデータを送信するよう構成されている。呼び出し器203は、ブロックチェーン20へ送信すべきデータを、第2データ120として、第2データ発行器202から取得する(ステップS23)。呼び出し器203は、第2データ120に含まれるデータの一部又は全部を、ブロックチェーン20へ送信する(ステップS24)。
【0063】
呼び出し器203がブロックチェーン20へ送信するデータは、例えば、スマートコントラクト22に与えられるデータ(スマートコントラクト22によって受信されるデータ)であり得る。スマートコントラクト22に与えられるデータは、例えば、後述のトークンコードである。
【0064】
呼び出し器203がブロックチェーン20へ送信するデータは、呼び出されたスマートコントラクト22によって操作されるトークンに関するデータであり得る。スマートコントラクト22によって操作されるトークンに関するデータは、例えば、後述のトークンコードである。
【0065】
呼び出し器203がブロックチェーン20へ送信するデータは、呼び出すべきスマートコントラクト22を識別するためのデータであり得る。呼び出すべきスマートコントラクト22を識別するためのデータは、例えば、スマートコントラクト22のコントラクトアドレスである。
【0066】
ブロックチェーンの利用を図るためには、スマートコントラクト22の呼び出しのためにブロックチェーン20へ送信されるデータを容易に取得できることが望まれる。特に、ブロックチェーン20のスマートコントラクト22の呼び出しに用いられる装置が取得したデータが、スマートコントラクト22の呼び出しのためにブロックチェーンへ送信されるデータではない場合であっても、当該装置が、スマートコントラクトの呼び出しのためにブロックチェーンへ送信されるデータを取得できることが望まれる。
【0067】
すなわち、
図2に示す第1例によれば、第1データ110の取得をスマートコントラクト22の呼び出しのトリガにする場合であっても、第1データ110は、スマートコントラクト22の呼び出しのためにブロックチェーン20へ送信されるデータを含んでいなくてもよい。また、第1例によれば、第1データ110の取得をスマートコントラクト22の呼び出しのトリガにしつつも、第1データ110とは異なる第2データ120を利用してスマートコントラクト22を呼び出すことができる。
【0068】
図3は、呼び出す方法の第2例を示している。第2例に関し特に説明しない点については、
図2に示す第1例と同様である。
図3に示す第2例では、第1例とは異なり、第1データ110が、ブロックチェーン20への送信に利用される。
【0069】
すなわち、第2例では、まず、第1データ取得器201によって、第1データ110が取得される(ステップS31)。取得された第1データ110の一部又は全部が、呼び出し器203に与えられる(ステップS32)。
【0070】
呼び出し器203は、ブロックチェーン20へ送信すべきデータ(第1データ110の一部又は全部)を、第1データ取得器201から取得する(ステップS32)。呼び出し器203は、取得したデータの一部又は全部を、ブロックチェーン20へ送信する(ステップS33)。
【0071】
呼び出し器203がブロックチェーン20へ送信するデータは、例えば、スマートコントラクト22に与えられるデータ(スマートコントラクト22によって受信されるデータ)であり得る。呼び出し器203がブロックチェーン20へ送信するデータは、呼び出されたスマートコントラクト22によって操作されるトークンに関するデータであり得る。呼び出し器203がブロックチェーン20へ送信するデータは、呼び出すべきスマートコントラクト22を識別するためのデータであり得る。
【0072】
図3に示す第2例によれば、第1データ取得器201によって取得した第1データを、ブロックチェーン20への送信に利用することができる。
【0073】
図4は、呼び出す方法の第3例を示している。第3例に関し特に説明しない点については、
図2に示す第1例又は
図3に示す第2例と同様である。
図4に示す第3例では、第1データ110及び第2データ120の両方が、ブロックチェーン20への送信に利用される。
【0074】
すなわち、第3例では、まず、第1データ取得器201によって、第1データ110が取得される(ステップS41)。
【0075】
第1取得器201が取得した第1データ110は、第2データ発行器202による第2データ120の発行に用いられ得る。また、第1データ110は、呼び出し器203にも与えられ得る。
【0076】
第1データ取得器201は、第1データ110を用いて、第2データ発行器202にアクセスすることができる(ステップS42)。第1データ110は、そのアクセスによって第2データ発行器202へ送信され得る。
【0077】
第1データ110を用いたアクセスを受けた第2データ発行器202は、第2データ120を発行することができる。
【0078】
発行された第2データ120は、呼び出し器203に与えられる(ステップS43)。呼び出し器203は、ブロックチェーン20へ送信すべきデータを、第2データ発行器202から取得する(ステップS43)。また、呼び出し器203は、ブロックチェーン20へ送信すべきデータを、第1データ取得器201からも取得し得る(ステップS44)。
【0079】
呼び出し器203は、第1データ110に含まれるデータの一部又は全部、及び、第2データ120に含まれるデータの一部又は全部を、ブロックチェーン20へ送信する(ステップS45)。
【0080】
呼び出し器203がブロックチェーン20へ送信するデータは、例えば、スマートコントラクト22に与えられるデータ(スマートコントラクト22によって受信されるデータ)であり得る。呼び出し器203がブロックチェーン20へ送信するデータは、呼び出されたスマートコントラクト22によって操作されるトークンに関するデータであり得る。呼び出し器203がブロックチェーン20へ送信するデータは、呼び出すべきスマートコントラクト22を識別するためのデータであり得る。
【0081】
図3に示す第2例によれば、第1データ取得器201によって取得した第1データを、ブロックチェーン20への送信に利用することができるだけでなく、第2データ発行器202によって発行された第2データ120をも、ブロックチェーン20への送信に利用することができる。
【0082】
図5は、呼び出しを受けるスマートコントラクト22によって実行される処理の一例を示している。
図5に示すスマートコントラクト22は、スマートコントラクト22のコントラクトアドレス21から、スマートコントラクト22を呼び出したユーザアカウント25A,25Bへ、トークンを送信する処理を、ブロックチェーン20を構成するコンピュータに実行させるよう構成されている。なお、スマートコントラクト22のコントラクトアドレス21は、呼び出されるスマートコントラクト22を識別するために用いられ得る。
【0083】
図5に示すスマートコントラクト22は、例えば、アカウント25A,25Bから、呼び出される(ステップS51)。呼び出しの際には、トークンコードC1,C2が、アカウント25A,25Bからスマートコントラクト22のコントラクトアドレス21へ送信される。呼び出しの際には、呼び出されるスマートコントラクト22を特定するため、スマートコントラクト22のコントラクトアドレス21も、アカウント25A,25Bから送信され得る。
図5に示すスマートコントラクト22は、トークンコードを受信すると、それをトリガとして、トークンを送信するよう構成されている。
【0084】
ここでトークンコードは、スマートコントラクト22による操作対象を識別するために用いられ得る。トークンコードは、例えば、スマートコントラクト22によって操作されるノンファンジブルトークン(NFT)を、スマートコントラクト22が識別するために用いられ得る。例えば、スマートコントラクト22は、受信したトークンコードC1を用いて、送信すべきNFTを識別し、識別されたNFTを送信することができる。
【0085】
また、トークンコードは、スマートコントラクト22によって操作されるファンジブルトークン(FT)の数を、スマートコントラクト22が識別するために用いられ得る。例えば、スマートコントラクト22は、受信したトークンコードC2を用いて、送信すべきFTの数(トークン数)を識別し、識別された数のFTを送信することができる。
【0086】
トークンコードは、スマートコントラクト22によって操作されるトークンの種類を識別するために用いられ得る。例えば、トークンコードは、スマートコントラクト22によって操作されるトークンが、ノンファンジブルトークンであるか、ファンジブルトークンであるかを識別するために用いられ得る。また、複数種類のファンジブルトークンが存在する場合、トークンコードは、操作されるノンファンジブルトークンの種類を識別するために用いられ得る。
【0087】
スマートコントラクト22は、受信したトークンコードC1,C2を用いた識別のため、トークンテーブル310を備え得る。トークンテーブル310は、トークンコードと、トークンコードによる識別内容と、を対応付けたデータである。トークンコードによる識別内容は、例えば、
図5に示すように、トークン識別子又はトークンの数である。
【0088】
スマートコントラクト22がトークンコードによって識別する内容(トークンコードによる識別内容)は、例えば、送信すべきノンファンジブルトークンの識別子(NFT識別子)であり得る。また、トークンコードによる識別内容は、例えば、ファンジブルトークンの数であり得る。さらにまた、トークンコードによる識別内容は、ファンジブルトークンの種類及びそのファンジブルトークンの数であり得る。
【0089】
図5に示すトークンテーブル310においては、一例として、トークンコードC1には、NFT識別子である「NFT_id01」が対応付けられている。また、トークンコードC2には、「10_tokens」が対応付けられている。ここで、「10_tokens」は、ある種類のファンジブルトークンの数が10であることを示す。トークンコードC3には、「1_tokens」が対応付けられている。ここで、「1_tokens」は、ある種類のファンジブルトークンの数が1であることを示す。
【0090】
なお、スマートコントラクト22は、トークンコードによって識別される操作対象(送信対象)であるトークン410,420,430,450を予め保有している。トークンコードを受信すると、保有しているトークン410,420,430,450の中から、操作対象(送信対象)であるトークンを識別し、識別されたトークンを送信する。
【0091】
スマートコントラクト22は、例えば、アカウント25Aから、トークンコードC1を受信する(ステップS51)。すると、スマートコントラクト22は、テーブル310を参照し、トークンコードC1に対応する操作対象として、「NFT_id01」の識別子を有するノンファンジブルトークン410を識別する。そして、スマートコントラクト22は、ノンファンジブルトークン410をアカウント25Aへ送信する(ステップS52)。「NFT_id01」の識別子を有するノンファンジブルトークン410は、一つしか存在しないため、操作対象(送信対象)がノンファンジブルトークンである場合、NFT識別子によって操作対象(送信対象)を識別することができる。
【0092】
また、スマートコントラクト22は、例えば、アカウント25Bから、トークンコードC2を受信する(ステップS51)。すると、スマートコントラクト22は、テーブル310を参照し、トークンコードC2に対応する操作対象として、「10_tokens」を識別する。すなわち、スマートコントラクト22は、送信すべきノンファンジブルトークンの数が10単位であることを識別する。そして、スマートコントラクト22は、保有しているファンジブルトークン450の中から、識別された数(10単位)のファンジブルトークンを、アカウント25Bへ送信する(ステップS52)。なお、ここでは、1個のファンジブルトークンを、1単位とする。
【0093】
ファンジブルトークンは、代替性を有し、一つ一つのトークンは、識別子を有しない。このため、スマートコントラクト22は、トークンコードC2によって、個々のファンジブルトークンを識別するのではなく、送信すべきトークンの数を識別する。なお、スマートコントラクト22が複数の種類のファンジブルトークンを扱える場合、スマートコントラクト22は、トークンコードC2によって、送信すべきファンジブルトークンの種類をも識別してもよい。
【0094】
トークンコードC1,C2,C3は、スマートコントラクト22以外は、操作対象(送信対象)であるトークンの種類又は数を識別できないよう構成されたデータであるのが好ましい。例えば、トークンコードC1,C2,C3は、一見無意味又はランダムに見える値を示すデータとして構成されているのが好ましい。
【0095】
また、トークンコードC1,C2,C3は、ユニークなコードであるのが好ましい。スマートコントラクト22は、同一のトークンコードC1,C2,C3を所定回数以下(例えば、1回)しか受け付けないように構成されているのが好ましい。すなわち、トークンデータは、スマートコントラクト22の呼び出しのために用いることができる回数が制限されているのが好ましい。この場合、トークンコードC1,C2,C3の使い回しが防止される。
【0096】
図5に示すスマートコントラクト22は、ノンファンジブルトークン及びファンジブルトークンの両方の送信に対応しているが、ノンファンジブルトークンの送信だけに対応していてもよいし、ファンジブルトークンの送信だけに対応していてもよい。
【0097】
ここで、ノンファンジブルトークンに関してみると、トークンコードC1は、送信されるノンファンジブルトークンの識別子として機能している。ただし、
図5に示すスマートコントラクト22は、ブロックチェーン20において記録されているノンファンジブルトークンの識別子(例えば、「NFT_id01」)そのものを受信して、送信すべきノンファンジブルトークンを識別しているわけではない。
【0098】
ここで、スマートコントラクト22は、ブロックチェーンにおいて記録されているノンファンジブルトークンの識別子(例えば、「NFT_id01」)を受信すると、その識別子(「NFT_id01」)で示されるノンファンジブルトークンを送信するよう構成されていてもよい。
【0099】
しかし、ブロックチェーンにおいて記録されているノンファンジブルトークンの識別子(例えば、「NFT_id01」)とは異なる識別子であるトークンコードを利用することで、意図しないノンファンジブルトークンの送信を回避できる。つまり、ブロックチェーンにおいて記録されているノンファンジブルトークンの識別子(「NFT_id01」)が、ノンファンジブルトークンの送信に利用される場合、ブロックチェーンにおいて記録されているノンファンジブルトークンの識別子(「NFT_id01」)が、第三者に知得された場合、第三者は、その識別子(「NFT_id01」)を利用して、スマートコントラクト22からノンファンジブルトークンを不正に取得することができる。
【0100】
これに対して、トークンコードを利用する場合、ブロックチェーンにおいて記録されているノンファンジブルトークンの識別子(「NFT_id01」)が、第三者に知得されても、第三者は、ノンファンジブルトークンを不正に取得することはできなくなる。
【0101】
また、ファンジブルトークンに関してみると、トークンコードC2,C3は、ファンジブルトークン一つ一つを区別するための識別子を有しないファンジブルトークンの識別子として機能している。例えば、10単位のファンジブルトークンの送信を、例えば100回に限ってスマートコントラクト22に行わせる場合、100個のユニークなトークンコードを用意すればよい。この場合、スマートコントラクト22は、トークンコードを受信すると、10単位のファンジブルトークンを送信する。この場合において、送信されるファンジブルトークンの合計は、1000単位であり、1000単位のファンジブルトークンそれぞれには識別子は存在しない。しかし、トークンコードは、ファンジブルトークンの10単位毎の識別子として機能するため、実質的に、ファンジブルトークンを10単位毎で、個別に扱うことが容易になる。
【0102】
また、トークンコードC2,C3のように、トークンコードC2,C3毎に、送信されるファンジブルトークンの数を異ならせることも可能になる。
【0103】
ここで、スマートコントラクト22は、送信すべきファンジブルトークンの数を示すデータ(ファンジブルトークン要求)を受信すると、受信したデータで示される数のファンジブルトークンを送信するよう構成されていてもよい。しかし、その場合、送信すべきファンジブルトークンの数を示すデータ(ファンジブルトークン要求)が、適切なものであるかの保証がない。すなわち、ファンジブルトークン要求が適切なものであるかの保証がない。
【0104】
不適切なファンジブルトークン要求を許すと、第三者は、スマートコントラクト22からノンファンジブルトークンを不正に取得できる。つまり、スマートコントラクト22からファンジブルトークンが意図せず流出するおそれがある。
【0105】
これに対して、トークンコードC2,C3を利用する場合、トークンコードC2,C3を有しない者は、スマートコントラクト22からファンジブルトークンを取得できないため、ファンジブルトークンの意図しない流出が防止される。また、トークンコードC2,C3を利用するばあい、スマートコントラクト22によって送信されるファンジブルトークンの種類が第三者に知得されても、トークンコードを知らない第三者は、ファンジブルトークンを不正に取得することはできない。
【0106】
なお、
図5に示すスマートコントラクト22は、送信すべきノンファンジブルトークンを予め保有しているが、トークンコードを受信(ステップS51)した後に、スマートコントラクト22が、送信すべきノンファンジブルトークンを生成してもよい。すなわち、NFTに対応付けられたトークンコードは、特定のNFT識別子に予め対応付けられている必要はない。生成されるNFTは、所定の生成ルールに基づいて生成されるか、あるいはランダムに生成されてもよい。
【0107】
また、NFに対応付けられたトークンコードは、送信すべきトークンの数が予め対応付けられている必要はない。送信すべきトークンの数は、所定のルール又はランダムに決定されてもよい。
【0108】
図6は、実施形態に係るシステム10を構成する要素の一例を示している。
図6に示すシステム10は、ネットワーク15に接続されたサーバ51,52を備え得る。
図6においては、サーバ51,52として、第1サーバ51及び第2サーバ52が設けられている。第1サーバ51及び第2サーバ52は、ネットワーク15を介してブロックチェーンにアクセスし得る。なお、第1サーバ51及び第2サーバは、それぞれ異なるコンピュータであってもよいし、同じコンピュータであってもよい。サーバ51,52は、管理者によって管理され得る。管理者は、近距離無線通信装置の設置者でもあり得る。管理者は、スマートコントラクト22の管理者(作成者)でもあり得る。
【0109】
ユーザの端末31,32は、ネットワーク15を介して、第1サーバ51又は第2サーバ52にアクセスし得る。端末31,32は、ネットワーク15を介してブロックチェーンにアクセスし得る。システム10は、NFCタグ40を備え得る。
【0110】
端末31は、例えば、スマートフォン又はタブレットなどのモバイルデバイスである。以下では、端末31の構成に関して説明するが、端末32も同様の構成であり得る。
【0111】
端末31は、インターネットなどのネットワーク15に接続可能である。ユーザ端末31は、プロセッサ31A及び記憶装置31Bを備えるコンピュータによって構成され得る。記憶装置31Bは、プロセッサ31Aに接続されている。記憶装置31Bは、例えば、一次記憶装置及び二次記憶装置を備える。一次記憶装置は、例えば、RAMである。二次記憶装置は、例えば、ハードディスクドライブ(HDD)又はソリッドステートドライブ(SSD)である。記憶装置31Bは、プロセッサ31Aによって実行されるコンピュータプログラム31Cを備える。プロセッサ31Aは、記憶装置31Bに格納されたコンピュータプログラム31Cを読み出して実行する。コンピュータプログラム31Cは、端末31として機能するコンピュータによって実行される命令を示すプログラムコードを有する。
【0112】
コンピュータプログラム31Cは、例えば、ブロックチェーン20のユーザアカウントに格納されたトークンを端末31に表示させるためのウォレットアプリケーションプログラムであり得る。アプリケーションプログラム31Cは、トークンの保管、トークンの送信、及びトークンの受信のためのユーザ操作のための機能を提供し得る。アプリケーションプログラム31Cは、スマートコントラクト22の呼び出しのための機能を提供し得る。すなわち、プロセッサ31Aは、コンピュータプログラム31Cを実行することで、スマートコントラクト22の呼び出し処理31Fを実行し得る。
【0113】
また、アプリケーションプログラム31Cは、NFCモジュール31Dによる近距離無線通信を介して、NFCタグ40から、通信データ46を受信するための機能を提供し得る。
【0114】
アプリケーションプログラム31Cは、ブロックチェーン20のアカウントのためのプライベートキー31Eを、端末31の記憶装置31Bに保存する機能を提供し得る。プライベートキー31Eは、ユーザU1のアカウント25Aに対応付けられている。プライベートキー31Eは、ブロックチェーン20における取引記録のデジタル署名などに用いられる。プライベートキー31Eは、ブロックチェーン20のアカウントに対応しているため、アカウントからスマートコントラクト22を呼び出し、そのアカウントへトークンを送信してもらうためには、そのアカウントに対応したプライベートキー31Eが必要となる。
【0115】
図7は、端末31は、NFCタグ40との間で、近距離無線通信をする例を示している。
図7において、NFCタグ40は、ポスター500に取り付けられている。ポスター500の表面501には、例えば、ユーザが、近距離無線通信を利用して、トークンを取得するための手順の説明が記載されている。
【0116】
表面501には、例えば、「ステップ1 アプリをダウンロード」と記載されているとともに、アプリケーションプログラム31Cのダウンロードのための2次元コード501Aが表示されている。さらに、表面501には、「ステップ2 アプリのホーム画面のNFCをタップ」と記載されているとともに、アプリケーションプログラム31Cのホーム画面を示す
図501Bが表示されている。また、表面501には、「ステップ3 ここにスマートフォンをかざす」と記載されているとともに、端末31,32をかざすべき位置を示す目印510が表示されている。
【0117】
図8に示すように、ポスター500の裏面502において、目印510に対応した位置には、NFCタグ40が取り付けられている。NFCタグ40は、例えば、貼り付けによってポスター500に取り付けられている。
【0118】
例えば、ポスター500を見たユーザU1は、必要に応じてアプリケーションプログラム31Cをダウンロードし、インストールした上で、そのアプリケーションプログラム31Cを起動する。ユーザU1は、アプリケーションプログラム31Cのホーム画面に表示されたNFCボタンをタップし、NFCモジュール31Dによる近距離無線通信を開始させる。ユーザU1は、端末31を目印510の近くにかざすことで、端末31がNFCタグ40に近接し、近距離無線通信が行われる。近距離無線通信によって、NFCタグ40に保存されている通信データ46が、端末31へ送信される(ステップS71)。
【0119】
実施形態においては、近距離無線通信が行われたことをトリガとして、トークンを取得するための処理が行われる(ステップS72)。トークンを取得するための処理は、スマートコントラクト22を利用して行われる。端末31は、近距離無線通信が行われたことをトリガとして、アプリケーションプログラム31Cにおけるスマートコントラクト呼び出しのための処理を実行し得る。この処理が実行されることで、ユーザU1は、トークンを取得できる(ステップS73)。
【0120】
なお、近距離無線通信によってNFCタグ40から送信される通信データ46は、毎回、同じものでもよい。なお、NFCタグ40に代えて、通信毎に異なる通信データ46を送信し得る近距離無線通信装置40が用いられてもよい。
【0121】
実施形態においては、ポスター500に、近距離無線通信装置40が取り付けられているため、ポスター500を掲示した場所に来たユーザU1に限定して、トークンを配布することができる。したがって、トークン配布をポスター500が掲示された場所へのユーザの誘因に利用できる。
【0122】
すなわち、データの秘匿性に優れた近距離無線通信を利用する場合、ユーザがトークンを入手するには、端末31をNFCタグに近づける必要がある。したがって、ユーザがトークンを入手するには、近距離無線通信装置40に近づく、という行為が必要となるため、近距離無線通信装置40が存在する位置へ、ユーザを誘引することができる。
【0123】
近距離無線通信は、データの秘匿性に優れているため、例えば、公衆の目の付きやすいところに近距離無線通信装置40が設置されても、データが、第三者に拡散されるのを抑制できる。例えば、通信データ46に相当するデータを、ポスター500に記載しておいて、ポスター500に記載されたデータを端末31に入力させる場合、ポスター500を撮影した画像が第三者に拡散されると、ポスター500が掲示された場所に訪れていない第三者もデータを入手できる。一方、近距離無線通信を利用すると、近距離無線通信装置40に近づいたユーザにだけトークンを取得させることが可能となる。
【0124】
また、多くのユーザが訪れる場所に近距離無線通信装置40を設置しておくことで、近距離無線通信装置40に近づいたユーザへ、トークンを配布することができる。この結果、多くのユーザにトークンを配布でき、トークンの利用を促進できる。
【0125】
トークンの効率的な配布ため、複数のポスター500が用いられてもよい。この場合、ユーザは、いずれかの場所に掲示されたポスター500の近距離無線通信装置40から、通信データ46を受信できる。複数の近距離無線通信装置40は、同じ通信データ46を送信するもので足りる。なお、複数の近距離無線通信装置40が、互いに異なるデータを含む通信データ46を送信する場合であっても、第1データ110は共通のデータでよい。互いに異なるデータは、例えば、近距離無線通信装置40の識別子である。
【0126】
なお、近距離無線通信装置40は、ポスター500に取り付けられている必要はない。近距離無線通信装置40は、その他の物(被取付体)に取り付けられていてもよい。近距離無線通信装置40が取り付けられる物は、静止物である必要はなく、車両などの移動し得る物、又は移動し得る物に装着されるものであってもよい。また、近距離無線通信装置40は、被取付体に取り付けられている必要はなく、単独で存在していてもよい。
【0127】
図7において、近距離無線通信装置40から送信される通信データ46は、前述の第1データ110を含み得る。
図8は、第1データ110の例と、その第1データ110から、前述の第2データ120が発行される手順の例と、を示している。
図8は、発行される第2データ120の例も示している。
【0128】
図8に示す第1データ110は、ユニフォームリソースアイデンティファイア(Uniform Resource Identifier;URI)である。URIは、一例として、
図8に示すユニフォームリソースロケータ(Uniform Resource Locator)である。以下では、第1データ110としてのURIを、第1URI110という。なお、URIは、ユニフォームリソースネーム(Uniform Resource Name)であってもよい。
【0129】
第1URI110は、第1データ110を取得した端末31が、ネットワーク15を介して、第1サーバ51にアクセスするために用いられる。
図8に示すように、第1URI110は、スキーム111と、オーソリティ113と、を備える。スキーム111は、URI(URL)の先頭にあり、資源に到達するための手段を表す。スキーム111は、例えば、https:である。オーソリティ113は、スキーム111に後続して記述され、資源の場所などを示す。以下では、第1URI110のオーソリティ113を、第1オーソリティ113という。
【0130】
第1オーソリティ113は、例えば、第1ホスト113Aと、指定データ113Bと、を備え得る。第1ホスト113Aは、アクセス先である第1サーバ51の名前(ドメイン名)を示す。指定データ113Bは、例えば、第1ホスト113Aに後続して記述されたパス(path)である。
図8に示す第1オーソリティ113おいて、指定データ113Bは、一例として、「campaing/1」である。「campaing/1」は、例えば、トークンをユーザに配布する第1キャンペーンを示し得る。
【0131】
なお、第1データ110は、第1サーバ51へのアクセスに用いられるデータであれば足りる。第1データ110は、URI(URL)の形式で記述されていなくてもよい。例えば、第1データ110は、指定データ113Bだけから構成されていてもよい。端末31が、第1サーバ51の名前を把握している場合、第1URI110は、端末31が取得した指定データ113Bを用いて、端末31によって生成されてもよい。また、端末31が取得する第1データは、端末31から第1サーバ51にアクセスしてサインインするための認証データ(例えば、IDとパスワード)であってもよい。
【0132】
図8に示すように、まず、端末31は、第1URI110を取得する(ステップS81)。
図8の端末31は、
図2の第1データ取得器201に相当し得る。第1URI110を読み取った端末31は、第1URI110を読み取ったことをトリガとして、第1URI110を用いて第1サーバ51へアクセスする(ステップS82)。
【0133】
端末31は、後述の発行条件判定(ステップS84)に用いられるデータを、第1サーバへ送信する(ステップS82)。発行条件判定に用いられるデータは、例えば、端末31を有するユーザを識別するための情報(ユーザ情報)、端末31を識別するための情報(端末情報)、時刻情報、及び、端末31の位置情報の少なくとも一つ又はそれらの2以上の組み合わせである。ユーザ情報は、例えば、ブロックチェーン20におけるユーザU1のアカウント25A(ブロックチェーンアドレス)である。端末情報は、例えば、端末31のMACアドレスである。アクセスの時刻情報は、例えば、端末31が第1データ110を取得した日及び時間である。端末31の位置情報は、例えば、全球測位衛星システム(Global Navigation Satellite System;GNSS)を用いた衛星測位による位置情報である。衛星測定のため、端末31,32は、GNSS受信機を備え得る。
【0134】
端末31の位置情報は、GNSSによる位置情報に代えて、又は加えて、端末31によるネットワーク15へのアクセスから求まる位置情報であってもよい。ネットワーク15へのアクセスから求まる位置情報は、例えば、モバイル通信ネットワークへのアクセスポイントである基地局の位置情報である。ネットワーク15へのアクセスから求まる位置情報は、端末31に割り当てられたIPアドレスを用いて求められる位置情報であってもよい。
【0135】
発行条件判定に用いられるデータは、第1URI110に付加されてもよい。また、発行条件判定に用いられるデータは、第1ULI110を用いたアクセスによって端末31と第1サーバ51との接続が確立した後に、端末31から第1サーバへ送信されてもよい。
【0136】
第1データ110を用いたアクセスを受け付けた第1サーバ51は、第2データ120の発行処理(第2URI発行処理;
図10のURI発行処理51G)を実行する。第1サーバ51は、
図2の第2データ発行器202に相当し得る。
【0137】
図10に示すように第1サーバ51は、プロセッサ51A及び記憶装置51Bを備えるコンピュータによって構成され得る。記憶装置51Bは、プロセッサ51Aに接続されている。記憶装置51Bは、例えば、一次記憶装置及び二次記憶装置を備える。一次記憶装置は、例えば、RAMである。二次記憶装置は、例えば、ハードディスクドライブ(HDD)又はソリッドステートドライブ(SSD)である。記憶装置51Bは、プロセッサ51Aによって実行されるコンピュータプログラム51Cを備える。プロセッサ51Aは、記憶装置51Bに格納されたコンピュータプログラム51Cを読み出して実行する。コンピュータプログラム51Cは、URI発行処理51Gをコンピュータに実行させる命令を示すプログラムコードを有する。
【0138】
図8に戻り、発行処理51Gにおいて、第1サーバ51は、まず、発行条件判定に用いられるデータ(ユーザ情報又は端末情報等)を受信し、受信したデータを保存する(ステップS83)。発行条件判定に用いられるデータは、そのデータを第1サーバ51が受信した時刻とともに保存されてもよい。
【0139】
発行処理51Gにおいて、第1サーバ51は、受信したデータを用いて、発行条件判定をする(ステップS84)。
図10に示すように、第1サーバ51には、発行条件判定のための発行条件51Dが予め設定されている。第1サーバ51は、発行条件を満たさない場合には第2データ120を発行せず(ステップS89)、発行条件を満たした場合に第2データ120を発行する(ステップS85~S87)。
【0140】
例えば、発行条件51Dは、例えば、「同一ユーザに対するトークン送信は1日1回だけ」、「同一端末に対するトークン送信は1日1回だけ」、又は「第1データを取得した端末が所定の位置に存在すること」である。
【0141】
発行条件51Dが「同一ユーザに対するトークン送信は1日1回だけ」である場合、第1サーバ51は、受信したユーザ情報と、第1サーバ51に保存されている過去のユーザ情報とを対比する。受信したユーザ情報によるアクセス記録が同日において既に存在するときには、発行条件を満たさないため、第1サーバ51は、第2データ120を発行しない(ステップS89)。
【0142】
受信したユーザ情報によるアクセス記録が存在しないか、または存在していても前日以前のアクセス記録であるときには、発行条件を満たすため、第1サーバ51は、第2データ120を発行する(ステップS85~S87)。
【0143】
同様に、発行条件51Dが「同一端末に対するトークン送信は1日1回だけ」である場合、受信した端末情報によるアクセス記録が存在しないか、または存在していても前日以前のアクセス記録であるときには、発行条件を満たすため、第1サーバ51は、第2データ120を発行する(ステップS85~S87)。
【0144】
発行条件51Dが「第1データを取得した端末が所定の位置に存在すること」である場合、受信した位置情報が、発行条件51Dとして設定された所定の位置に合致に存在するときには、発行条件を満たすため、第1サーバ51は、第2データ120を発行する(ステップS85~S87)。なお、位置は、広がりのある範囲を含む。
【0145】
「第1データを取得した端末が所定の位置に存在すること」という発行条件を設けることで、端末が所定の位置に存在するときだけ、第2データ120を発行できる。
【0146】
「第1データを取得した端末が所定の位置に存在すること」という発行条件の利用は、近距離無線通信の利用と併せることで、第1データ110を取得する端末の位置の制約をより確実にすることができる。
【0147】
近距離無線通信による位置の制約は、近距離無線通信装置40と端末31とが近いという相対的な位置の制約であるのに対して、端末31の位置情報の利用は、端末31の絶対的な位置の制約となる。
【0148】
絶対的な位置の制約は、例えば、近距離無線通信装置40の盗難対策に活用できる。例えば、端末31の絶対的な位置が、近距離無線通信装置40の本来の設置場所から離れていれば、第2データ120を発行しないことで、盗難されて本来の設置場所とは異なる場所にある近距離無線通信装置40の利用が防止される。
【0149】
ステップS84の発行条件判定において、発行条件を満たすと判定された場合、第1サーバ51は、トークンコードを選択する。トークンコードは、第2データ120を構成し得る。
【0150】
図10に示すように、第1サーバ51の記憶装置51Bには、トークンコードリスト51Eが保存されている。トークンコードリスト51Eは、複数のトークンコードを有する。ここでは、複数のトークンコードは、それぞれ異なるユニークコードであるものとする。複数のトークンコードは、予め生成され、第1サーバ51に保存されている。複数のトークンコードは、コード番号が一対一で対応付けられている。
【0151】
第1サーバ51は、トークンコードリスト51Eを参照し、発行すべき1又は複数のトークンコードを選択する(ステップS85)。一つのトークンコードは、1回だけ発行されるのが好ましい。第1サーバ51は、例えば、コード番号順に、トークンコードを発行することができる。
【0152】
例えば、第1URI110を用いた1回目のアクセスを第1サーバ51が受け付け、そのアクセスが発行条件を満たす場合、コード番号が「1」であるトークンコード「qC2oFsNKrHimID6u」が発行される。また、第1URI110を用いた2回目のアクセスを第1サーバ51が受け付け、そのアクセスが発行条件を満たす場合、コード番号が「2」であるトークンコード「FsNKrHimID67sj0」が発行される。同様に、第1URI110を用いた3回目のアクセスを第1サーバ51が受け付け、そのアクセスが発行条件を満たす場合、コード番号が「3」であるトークンコード「FsNKrHimID67sj0」が発行される。第1サーバ51は、保有するトークンコードの数に応じた回数のトークンコード発行をすることができる。
【0153】
なお、第1サーバ51は、複数のトークンコードリスト51Eを有することができる。例えば、管理者は、トークン配布のため、第1キャンペーンと、第1キャンペーンとは異なる第2のキャンペーンと、を企画することがある。この場合、第1キャンペーンで配布されるトークンと、第2キャンペーンで配布されるトークンと、を区別したいことがある。両キャンペーンで配布されるトークンを区別する場合、トークンコードも区別されるのが好ましい。トークンコードの区別のため、第1サーバ51は、第1キャンペーン用のトークンコードリストと、第2キャンペーン用のトークンコードリストと、を有することができる。この場合、第1サーバ51は、トークンコードの選択に先立って、トークンコードリストを選択することができる。
【0154】
第1データ110に含まれる指定データ113B(共通コード)は、トークンコードリスト51Eを選択するために用いられ得る。トークンコードリスト51Eが、例えば、第1キャンペーンのためのトークンコードリストである場合、第1サーバ51は、指定データ113Bとして、第1キャンペーンを示すデータ(例えば、「campaign/1」)を受信すると、第1キャンペーンのためのトークンコードリスト51Eを選択し、そのトークンコードリスト51Eの中から、発行すべきトークンコードを選択することができる。
【0155】
第1サーバ51は、選択したトークンコードを用いて、第2データ120を発行する(ステップS86)。
図8に示す第2データ120は、ユニフォームリソースアイデンティファイア(Uniform Resource Identifier;URI)である。URIは、一例として、
図8に示すユニフォームリソースロケータ(Uniform Resource Locator)である。以下では、第2データ120としてのURIを、第2URI120という。なお、URIは、ユニフォームリソースネーム(Uniform Resource Name)であってもよい。
【0156】
第2URI120は、第1サーバ51から、端末31へ送信される(ステップS87)。第2URI120は、第2URI120を取得した端末31が、ネットワーク15を介して、第2サーバ52にアクセスするために用いられ得る。なお、第2URI120の発行条件を満たさない場合、第1サーバ51は、エラーメッセージを端末31へ送信する(ステップS89)。
【0157】
図8に示すように、第2URI120は、スキーム121と、オーソリティ123と、を備える。スキーム121は、例えば、https:である。オーソリティ123は、スキーム121に後続して記述され、資源の場所などを示す。以下では、第2URI120のオーソリティ123を、第2オーソリティ123という。
【0158】
第2オーソリティ123は、例えば、第2ホスト123Aと、コントラクト情報123Bと、トークンコード123Cと、を備え得る。第2ホスト123Aは、アクセス先である第2サーバ52の名前(ドメイン名)を示す。コントラクト情報123B及びトークンコード123Cは、例えば、第2ホスト123Aに後続して記述されたパス(path)であり得る。
図8に示す第2オーソリティ123おいて、コントラクト情報123Bは、一例として「receive-link/」であり、トークンコード123Cは、一例として「qC2oFsNKrHimID6u」である。トークンコード123Cは、スマートコントラクト22の呼び出しのためにブロックチェーン20へ送信される。
【0159】
コントラクト情報123Bは、呼び出し対象を識別するために用いられ得る。呼び出し対象が、スマートコントラクト22である場合、コントラクト情報123Bは、スマートコントラクト22のコントラクトアドレス21を含み得る。スマートコントラクト22が呼び出される1又は複数の関数を有する場合、コントラクト情報123Bは、呼び出される関数名を更に含み得る。本実施形態においては、コントラクト情報123Bは、第2サーバ52によって、呼び出し対象を識別するためにブロックチェーン20へ送られるデータ(スマートコントラクト22のコントラクトアドレスなど)に変換される。
【0160】
なお、第2データ120は、スマートコントラクト22を呼び出すためにブロックチェーン20へ送信されるデータを含んでいれば足りる。第2データ120は、URI(URL)の形式で記述されていなくてもよい。例えば、第2データ120は、トークンコード123Cだけから構成されていてもよい。端末31が、第2サーバ52の名前およびコントラクト情報123Bを把握している場合、トークンコード123Cを受信した端末31が、第2URI120を生成してもよい。また、第2データ120は、第2ホスト123Aを有さず、コントラクト情報123B及びトークンコード123Cを有するデータであってもよい。
【0161】
また、第2データ120は、コントラクト情報123Bのように、スマートコントラクト22を呼び出すためにブロックチェーン20へ送信されるデータに変換されるデータを含んでもよい。後述のように、コントラクト情報123Bは、第2サーバ52によって、呼び出し対象を識別するためにブロックチェーン20へ送られるデータ(スマートコントラクト22のコントラクトアドレスなど)に変換される。
【0162】
図11は、第1URI110から、第2URI120を生成するための手順の一例を示している。第2データの発行器として機能する第1サーバ51(第2データ発行器202)は、第1URI110に含まれる指定データ113Bから、第2URI本体を生成する。第1サーバ51は、第2URI本体の生成のため、URIテーブル51Fを有する。URIテーブル51Fは、
図10に示すように、指定データと、URI本体と、を対応付けて構成されている。
【0163】
例えば、URIテーブル51Fにおいて、第1キャンペーンを示す指定データ「campaign/1」には、第2URI本体として「bbb....com/receive-link/」が対応付けられている。また、第2キャンペーンを示す指定データ「campaign/2」には、第2URI本体として「bbb....com/receive_NFT-link/」が対応付けられている。第3キャンペーンを示す指定データ「campaign/3」には、第2URI本体として「bbb....com/receive_FT-link/」が対応付けられている。
【0164】
第1キャンペーンのための第2URI本体は、第1キャンペーンのためのコントラクト情報123Bとして、「receive-link/」を有する。すなわち、指定データ「campaign/1」には、コントラクト情報123Bとして、第1キャンペーンのための「receive-link/」が対応付けられている。
【0165】
第2キャンペーンのための第2URI本体は、第2キャンペーンのためのコントラクト情報123Bとして、「receive_NFT-link/」を有する。すなわち、指定データ「campaign/2」には、コントラクト情報123Bとして、第2キャンペーンのための「receive_NFT-link/」が対応付けられている。
【0166】
第3キャンペーンのための第2URI本体は、第3キャンペーンのためのコントラクト情報123Bとして、「receive_FT-link/」を有する。すなわち、指定データ「campaign/3」には、コントラクト情報123Bとして、第3キャンペーンのための「receive_FT-link/」が対応付けられている。
【0167】
なお、本実施形態では、一例として、第1キャンペーンは、第1データ110を取得したユーザが、第1の種類のノンファンジブルトークン(NFT)又は第2の種類のファンジブルトークン(NF)のいずれか一方を選択的に取得できるキャンペーンであるものとする。また、第2キャンペーンは、第1データ110を取得したユーザが、第1の種類とは異なる第3の種類のノンファンジブルトークン(NFT)を取得できるキャンペーンであるものとする。さらに、第3キャンペーンは、第1データ110を取得したユーザが、第2の種類とは異なる第4の種類のファンジブルトークン(FT)を取得できるキャンペーンであるものとする。
【0168】
図11に戻り、第1サーバ51は、URIテーブル51Fを参照し、指定データ「campaign/1」から、第2URI本体として「bbb....com/receive-link」を取得する。
【0169】
また、第1サーバ51は、指定データ「campaign/1」に対応付けられたトークンコードリスト51Eを選択し、一つのトークンコードを決定する。ここでは、一例として、コード番号1のトークンコード「qC2oFsNKrHimID6u」が選択される。
【0170】
第1サーバ51は、第2URI本体とトークンコードとを組み合わせて、第2URI120を生成する。例えば、第1サーバ51は、第2URI本体に後続するパスの一部としてトークンコードを、第2URI本体に付加することができる。
【0171】
なお、キャンペーンが一つしかない場合など、第2URL本体が、第1URI110の内容にかかわらず、一つに決まる場合には、URIテーブル51Fを用いた第2URI本体の決定、及び、トークンコードリストの選択は、省略されてもよい。
【0172】
図9は、第2URI120を用いて、スマートコントラクト22を呼び出す手順の一例を示している。スマートコントラクト22を呼び出すため、端末31は、第2URI120を用いて、第2サーバ52へアクセスする(ステップS91)。端末31のアクセスを受けた第2サーバ52は、端末31のユーザのために、スマートコントラクト22を呼び出す(ステップS93)。呼び出されたスマートコントラクト22は、トークン送信などの所定の処理を実行する(ステップS94)。ここでの端末31及び第2サーバ52は、
図2の呼び出し器203に相当し得る。
【0173】
第2サーバ52は、スマートコントラクト22の呼び出しに先立ってスマートコントラクト22を呼び出すために必要なデータを取得することができる(ステップS93)。スマートコントラクト22を呼び出すために必要なデータは、例えば、スマートコントラクト22の呼び出しのためにブロックチェーン20へ送信されるデータである。
【0174】
第2サーバ52は、スマートコントラクト22の呼び出しのためにブロックチェーン20へ送信されるデータを、
図12に示すコントラクトテーブル52Dを用いて取得することができる。
【0175】
図12に示すように第2サーバ52は、プロセッサ52A及び記憶装置52Bを備えるコンピュータによって構成され得る。記憶装置52Bは、プロセッサ52Aに接続されている。記憶装置52Bは、例えば、一次記憶装置及び二次記憶装置を備える。一次記憶装置は、例えば、RAMである。二次記憶装置は、例えば、ハードディスクドライブ(HDD)又はソリッドステートドライブ(SSD)である。記憶装置52Bは、プロセッサ52Aによって実行されるコンピュータプログラム52Cを備える。プロセッサ52Aは、記憶装置52Bに格納されたコンピュータプログラム52Cを読み出して実行する。コンピュータプログラム52Cは、呼び出し処理52Fをコンピュータに実行させる命令を示すプログラムコードを有する。
【0176】
記憶装置52Bには、前述のコントラクトテーブル52Dが保存されている。コントラクトテーブル52Dは、コントラクト情報と、スマートコントラクト22の呼び出しのためにブロックチェーン20へ送信されるコントラクト呼び出しデータと、を対応付けて構成されている。コントラクト呼び出しデータは、例えば、呼び出されるスマートコントラクト22のコントラクトアドレスを含む。コントラクト呼び出しデータは、呼び出されるスマートコントラクト22の関数名を含んでもよい。
【0177】
図12に示すコントラクトテーブル52Dにおいては、一例として、第1キャンペーンのためのコントラクト情報:「receive-link/」に、コントラクトアドレス「0x8888」及び関数:F1が対応付けられている。コントラクトアドレス「0x888」は、第1キャンペーンのために、トークンを送信するよう構成されたスマートコントラクトのコントラクトアドレスであるものとする。関数:F1は、コントラクトアドレス「0x8888」に格納されたスマートコントラクト22において、第1キャンペーンのためにトークンを送信するために呼び出される関数であるものとする。
【0178】
また、
図12に示すコントラクトテーブル52Dにおいては、一例として、第2キャンペーンのためのコントラクト情報:「receive_NFT-link/」に、コントラクトアドレス「0x7777」及び関数:F2が対応付けられている。コントラクトアドレス「0x7777」は、第2及び第3キャンペーンのために、トークンを送信するよう構成されたスマートコントラクトのコントラクトアドレスであるものとする。関数:F2は、コントラクトアドレス「0x7777」に格納されたスマートコントラクトにおいて、第2キャンペーンのためにノンファンジブルトークン(NFT)を送信するために呼び出される関数であるものとする。
【0179】
また、
図12に示すコントラクトテーブル52Dにおいては、一例として、第3キャンペーンのためのコントラクト情報:「receive_FT-link/」に、コントラクトアドレス「0x7777」及び関数:F3が対応付けられている。関数:F3は、コントラクトアドレス「0x7777」に格納されたスマートコントラクトにおいて、第2キャンペーンのためにファンジブルトークン(FT)を送信するために呼び出される関数であるものとする。
【0180】
図13は、コントラクト情報123Bから、スマートコントラクト22の呼び出しのためにブロックチェーン20へ送信されるデータを生成する手順の一例を示している。第2サーバ52は、コントラクトテーブル52Dを参照して、第2URI120に含まれるコントラクト情報123Bから、スマートコントラクト22の呼び出しのためにブロックチェーン20へ送信されるデータとして、コントラクトアドレス及び関数名を取得する。
【0181】
図13では、一例として、コントラクト情報123Bとしての「receive-link/」から、コントラクトアドレス「0x8888」及び関数:F1が得られる。コントラクトアドレス「0x8888」及び関数:F1は、呼び出し対象を示す情報として、ブロックチェーン20へ送信される。
【0182】
なお、
図9における第2サーバ52によるスマートコントラクト22の呼び出しは、端末31によって行われてもよい。
【0183】
図14は、スマートコントラクトの呼び出しのために、ブロックチェーン20へ送信されるデータ125の一例を示している。なお、呼び出しは、ブロックチェーン20においては、端末31,32のユーザのブロックチェーンアカウント25A,25Bから送信されたものとして扱われる。
【0184】
データ125は、例えば、呼び出されるスマートコントラクトのコントラクトアドレスを含むことができる。例えば、呼び出されるスマートコントラクト22Aのコントラクトアドレスが、0x8888であれば、データ125は、0x8888を含むことができる。呼び出されるスマートコントラクト22Bのコントラクトアドレスが、0x7777であれば、データ125は、0x7777を含むことができる。
【0185】
データ125は、例えば、呼び出されるスマートコントラクト22A,22Bの関数名を含むことができる。例えば、呼び出される関数が、スマートコントラクト22Aの関数F1である場合、データ125は、関数名としてF1を含むことができる。呼び出される関数が、スマートコントラクト22Bの関数F2である場合、データ125は、関数名としてF2を含むことができる。呼び出される関数が、スマートコントラクト22Bの関数F3である場合、データ125は、関数名としてF3を含むことができる。
【0186】
データ125は、例えば、スマートコントラクト22に与えられるトークンコードを含むことができる。スマートコントラクト22は、トークンコードによって、操作すべきトークンを識別することができる。
【0187】
図15は、
図14に示すスマートコントラクト22Aが、トークンコードによってトークンを識別し、識別されたトークンを送信する方法を示している。送信されるトークンの識別のため、スマートコントラクト22は、トークンテーブル310を備える。トークンテーブル310は、ブロックチェーン20においてスマートコントラクト22を実行するコンピュータ(ブロックチェーンにおけるノード)の記憶装置に保存されている。
【0188】
図15のトークンテーブル310は、
図5に示したトークンテーブル310と同様のものでよい。
図15のトークンテーブル310では、より具体的に、トークンコード「qC2oFsNKrHimID6u」には、ノンファンジブルトークンの識別子「NFT_id04」が対応付けられている。また、トークンコード「FsNKrHimID67sj0」には、「5_tokens」及びノンファンジブルトークンの識別子「NFT_id05」が対応付けられている。ここで、「5_tokens」は、ある種類のファンジブルトークンの数が5であることを示す。トークンコード「Uwnvu7930s3hmvh」には、「5_tokens」が対応付けられている。
【0189】
また、
図15に示すトークンテーブル310は、第1キャンペーンのためのトークンコードから、第1キャンペーンにおいて送信されるトークンを識別するために用いられる。すなわち、
図15に示すトークンテーブル310は、第1キャンペーンのための第1関数F1(第1キャンペーン用のトークン送信関数)によって参照される。
【0190】
なお、スマートコントラクト22Aのコントラクトアドレス0x8888には、第1キャンペーンにおいて送信されるトークンが格納されている。つまり、スマートコントラクト22Aは、第1キャンペーンにおいて送信されるトークンを予め所有している。
【0191】
スマートコントラクト22Aの第1関数F1は、呼び出されると同時にトークンコードを受信し得る。例えば、スマートコントラクト22Aの関数F1は、ユーザU1のブロックチェーンアカウントである0x9999から、呼び出しを受ける(ステップS151)。この呼び出しの際に、関数F1は、トークンコード「qC2oFsNKrHimID6u」を受信する。関数F1は、トークンテーブル310を参照し、送信すべきトークンが、「NFT_id04」のNFT識別子を有するノンファンジブルトークン(NFT)であることを識別する。関数F1は、「NFT_id04」のNFT識別子を有するNFTを、呼び出し元である0x9999へ送信する(ステップS152)。これにより、ユーザU1は、「NFT_id04」のNFT識別子を有するNFTを取得できる。ユーザU1が取得したNFTは、ユーザU1が有する端末31に表示され得る。
【0192】
また、スマートコントラクト22Aの関数F1は、ユーザU2のブロックチェーンアカウントである0x1111から、呼び出しを受けることができる(ステップS151)。この呼び出しの際に、関数F1は、トークンコード「FsNKrHimID67sj0」を受信する。関数F1は、トークンテーブル310を参照し、送信すべきトークンが、5単位のファンジブルトークン(FT)と「NFT_id05」のNFT識別子を有するノンファンジブルトークン(NFT)であることを識別する。関数F1は、5単位のFT及び「NFT_id04」のNFT識別子を有するNFTを、呼び出し元である0x1111へ送信する。これにより、ユーザU2は、5単位のFT及び「NFT_id05」のNFT識別子を有するNFTを取得できる。ユーザU2が取得したNFTは、ユーザU2が有する端末32に表示され得る。
【0193】
図16は、第1データ110及び第2データ120を利用したスマートコントラクト22Aの呼び出しの一例を示している。本開示における技術を利用すると、複数の端末31,32,33が外部から取得するデータ(第1データ110,指定データ113B)が、それぞれ同じデータであっても、複数の端末31,32,33それぞれは、異なるトークンコードC1,C2,C3を取得することができる。つまり、まず、各端末31,32,33は、共通のデータ113Bを取得する(ステップS161A,S161B,S161C)。そして、端末31は、共通のデータ113Bを用いて、第1サーバ51からユニークな第1トークンコードC1を取得する(ステップS162A)。また、端末32は、共通のデータ113Bを用いて、第1サーバ51からユニークな第2トークンコードC2を取得する(ステップS162B)。端末33は、共通のデータ113Bを用いて、第1サーバ51からユニークなトークンコードC3を取得する(ステップS162C)。各端末31,32,33は、ユニークなトークンコードC1,C2,C3を用いて、スマートコントラクト22を呼び出すことができる(ステップS163A,S163B,S163C)。これにより、各端末31,32,33のユーザは、トークンコードC1,C2,C3に対応するトークンを取得することができる。
【0194】
また、端末31,32,33へ第1データ110(指定データ113B)を与え得る装置40A,40Bが、複数設置される場合であっても、それらの装置40A,40Bが端末31,32,33へ送信する第1データ110(指定データ113B)は、全て共通のものであってもよい。データを共通にすることで、多くの装置40A,40Bを準備するのが容易になる。そして、例えば、第1キャンペーンのために複数の装置40A,40Bを設置することで、第1キャンペーンのためのトークンを効率的に配布できる。
【0195】
図17は、第1データの他の例を示している。
図17に示す第1データ130は、
図8に示す第2URI120と同様のデータである。
図17に示す例では、端末31は、第1データ130として、
図8の第2URIに相当するデータを取得する(ステップS171)。このため、
図17に示す例では、第1サーバ51による第2データ120の発行を省略できる。第1データ130としての第2URIは、第2URIを取得した端末31が、ネットワーク15を介して、第2サーバ52にアクセスするために用いられ得る(
図9参照)。したがって、
図17に示す例の場合においても、トークンコードを用いて、スマートコントラクト22を呼び出すことができる。なお、第1データ130としての第2URIに関し、特に説明しない点については、第2データ120としての第2URI(
図8参照)と同様である。
【0196】
図17に示す例の場合、第1データ130には、トークンコード123Cが含まれている。したがって、複数の異なるトークンコード123Cを配布したい場合、それぞれ異なるとトークンコード123Cを送信する複数のNFCタグ40(近距離無線通信装置40)を用意すればよい。
【0197】
なお、
図17に示す端末31は、第2サーバ52を介さずに、ブロックチェーン20のスマートコントラクト22を呼び出してもよい。
【0198】
図18は、
図8及び
図9に示す手順でトークンを配布する場合におけるシステム10の事前設定を示している。なお、
図8及び
図9に示す手順は、第1データから第2データを発行するものであり
図3に示す手順に相当する。
【0199】
まず、コンピュータによって、配布されるトークンのための複数のトークンコードを生成させる(ステップS181)。複数のトークンコードそれぞれは、ユニークなコードとして生成される。例えば、100個のノンファンジブルトークン(NFT)を配布したい場合、100個のトークンコードが生成される。また、所定数のファンジブルトークン(FT)を1000回配布したい場合、1000個のトークンコードが生成される。
【0200】
配布されるトークンは、当該トークンを配布するスマートコントラクト22のコントラクトアドレスに、預けられる(ステップS182)。預けられるトークンは、ノンファンジブルトークン(NFT)であってもよいし、ファンジブルトークン(FT)であってもよいし、NFT及びNTであってもよい。スマートコントラクト22は、トークンを預かることにより、トークンを所有していることになる。スマートコントラクト22は、所有しているトークンの中から、トークンコードに対応するトークンを送信する。
【0201】
管理者は、スマートコントラクト22のコントラクトアドレスに、トークンテーブル310(
図5,
図15参照)を書き込む(ステップS183)。トークンテーブル310は、ステップS181で生成したトークンコードと、ステップS182で預けたトークンとの対応を示す。
【0202】
管理者は、第1データ110として第1URI110(
図8参照)を生成する(ステップS184)。第1URI110は、第1サーバ51へアクセスするためのURIである。生成された第1URI110は、図示しない書き込み装置を用いて、1又は複数のNFCタグ40に書き込まれる(ステップS185)。これにより、NFCタグ40は、第1URI110を近距離無線通信により送信することができる(
図1,2,
図7,
図8参照)。NFCタグ40は、それが使用される場所に設置される。
【0203】
管理者は、ステップS184で生成した第1URI110を用いてアクセスされる第1サーバに、トークンコードリスト51E(
図10参照)を保存する(ステップS186)。トークンコードリスト51Eは、ステップS181で生成したトークンコードの一覧である。
【0204】
管理者は、コントラクト情報123Bを有する第2URI本体(
図8,
図10,
図11参照)を生成する(ステップS187)。第2URI本体は、第2サーバ52へのアクセスするためのURIの一部である。
【0205】
管理者は、第1URI110を用いてアクセスされる第1サーバ51に、URIテーブル51F(
図10参照)を保存する(ステップS188)。URIテーブル51Fは、ステップS184で生成した第1URI110に含まれる指定データ113Bと、ステップS187で生成した第2URI本体と、の対応を示す。
【0206】
管理者は、第2URIを用いてアクセスされる第2サーバ52に、コントラクトテーブル52D(
図12参照)を保存する(ステップS189)。コントラクトテーブル52Dは、ステップS187で生成した第2URI本体に含まれるコントラクト情報123Bと、スマートコントラクト22の呼び出しデータと、の対応を示す。
【0207】
図19は、
図17及び
図9に示す手順でトークンを配布する場合におけるシステム10の事前設定を示している。なお、
図17及び
図9に示す手順は、第2データの発行を伴わないものであり、
図4に示す手順に相当する。なお、
図19において、
図18と共通するステップに関し、特に説明しない点については、
図18に関する説明が援用される。
【0208】
まず、コンピュータによって、配布されるトークンのための複数のトークンコードを生成させる(ステップS191)。このステップS191は、
図18のステップS181と共通する。
【0209】
配布されるトークンは、当該トークンを配布するスマートコントラクト22のコントラクトアドレスに、預けられる(ステップS192)。このステップS192は、
図18のステップS182と共通する。
【0210】
管理者は、スマートコントラクト22のコントラクトアドレスに、トークンテーブル310(
図5,
図15参照)を書き込む(ステップS193)。このステップS193は、
図18のステップS183と共通する。
【0211】
管理者は、第1データ130として第2URI(
図17参照)を生成する(ステップS194)。第2URI130は、第2サーバ52へアクセスするためのURIである。生成された第2URI130は、図示しない書き込み装置を用いて、1又は複数のNFCタグ40に書き込まれる(ステップS195)。これにより、NFCタグ40は、第2URI130を近距離無線通信により送信することができる(
図17参照)。NFCタグ40は、それが使用される場所に設置される。
【0212】
管理者は、第2URIを用いてアクセスされる第2サーバ52に、コントラクトテーブル52D(
図12参照)を保存する(ステップS196)。このステップS196は、
図18のステップS189と共通する。コントラクトテーブル52Dは、ステップS194で生成した第2URIに含まれるコントラクト情報123Bと、スマートコントラクト22の呼び出しデータと、の対応を示す。
【0213】
図20は、第1データの他の例を示している。
図20に示す第1データ140は、プライベートキー140である。プライベートキー140は、ブロックチェーン20のアカウントに対応する。
図6に示すプライベートキー31Eは、ブロックチェーン20を利用するための端末31に格納されているが、
図20に示す例では、端末31には、プライベートキーが格納されておらず、その代わりに、NFCタグ40(近距離無線通信装置40)に格納されている。
図20に示す例では、一例として、NFCタグ40には、端末31を有するユーザU1のアカウント25Aのためのプライベートキー140が格納されているものとする。
【0214】
図20に示す例では、端末31は、近距離無線通信を介して、第1データ140として、プライベートキー140を取得する(ステップS201)。送信されるプライベートキー140は暗号化されているのが好ましい。なお、プライベートキー140以外の他の第1データ110,130も暗号化されていてもよい。
【0215】
近距離無線通信によってプライベートキー140を取得した端末31は、
図6に示す端末31のように、プライベートキーを有していることになる。プライベートキー140は、ユーザU1のアカウント25Aのブロックチェーンアドレスを生成できるため、端末31からブロックチェーン20における操作が可能となる。すなわち、ユーザU1のアカウントに対応するプライベートキー140を取得した端末31を用いると、ユーザU1のアカウント25Aからのスマートコントラクト22の呼び出しが可能となる。
【0216】
ここでは、ブロックチェーン20のスマートコントラクト22を呼び出すためのデータのうち、プライベートキー140以外のデータは、予め端末31に設定されているものとする。端末31は、プライベートキー140を取得したことをトリガとして、予め設定された呼び出しデータを取得し(ステップS202)、スマートコントラクト22を呼び出す(ステップS203)。呼び出されたスマートコントラクト22は、アカウント25Aへのトークン送信など、ブロックチェーン20における所定の操作を実行する(ステップS204)。
【0217】
図21は、第1データの他の例を示している。
図21に示す第1データ150は、ユーザコード150である。ここでは、近距離無線通信装置は、ICカードとして構成されている。以下では、このICカードを、NFCカード40Aという。NFCカード40Aは、一例として、支払い手段として用いられる。ここでは、ブロックチェーン20におけるファンジブルトークンを、実店舗における支払いに用いるために、NFCカード40Aが利用され得る。ここで、NFCカード40Aは、プリペイドカードとして利用される。
【0218】
まず、ブロックチェーン20のスマートコントラクト22には、ユーザコードに対応する所定の数(例えば、1000単位)のファンジブルトークンが預けられる(ステップS211)。預けられたファンジブルトークンの数が、ユーザコードにおけるファンジブルトークンの残高となる。ユーザコードは、NFCカード40Aに書き込まれる。NFCカード40Aは、ユーザU4に販売される。ユーザU4は例えば、現金決済、クレジットカード決済、電子マネー決済など、法定通貨による支払いで、ファンジブルトークンのプリペイドカードであるNFCカード40Aを購入し得る。
【0219】
NFCカード40Aを入手したユーザU4は、ファンジブルトークンを利用可能な店舗において、NFCカード40Aを、支払いに利用し得る。まず、店舗の端末35は、使用トークン数を取得する(ステップS212)。使用トークン数は、ユーザU4の購入した商品の代金(法定通貨での金額)に相当するファンジブルトークンの数である。使用トークン数は、所定の換算レートに基づいて求められる。使用トークン数は、端末35によって計算されてもよいし、他の装置によって計算されてもよい。
【0220】
使用トークン数の支払いに同意したユーザU4は、NFCカード40Aを店舗の端末35にかざす。これにより、NFCカード40Aから、端末35へ、ユーザコードが、近距離無線通信によって送信される(ステップS213)。端末35は、必要に応じて、ユーザコードを用いて、スマートコントラクト22の呼び出しデータを取得する(ステップS214)。ここでの呼び出しデータは、例えば、端末35が受信したユーザコードのために支払処理(トークン送信処理)を実行するスマートコントラクト22を識別するためのデータである。呼び出しデータは、例えば、ユーザコードを用いて、外部のサーバから取得できる。
【0221】
端末35は、例えば、使用トークン数及びユーザコードの送信とともに、スマートコントラクト22を呼び出すことができる(ステップS215)。呼び出しは、例えば、ブロックチェーン20における店舗アカウントから行われる。呼び出されたスマートコントラクト22は、トークンコードが示すファンジブルトークン残高から、使用トークン数に応じたファンジブルトークンを、店舗アカウントへ送信する(ステップS216)。なお、ファンジブルトークン残高は、使用トークン数ほど減少する。
【0222】
以上によれば、ユーザU4自身は、支払い時において、ブロックチェーン20を直接操作することなく、ブロックチェーン20におけるファンジブルトークンを支払いに利用することができる。
【0223】
本発明は、上記実施形態に限定されるものではなく、様々な変形が可能である。
【0224】
<3.付記>
【0225】
本開示は、以下の内容を含む。
【0226】
[項1]トークンコードを、ブロックチェーンに実装されたスマートコントラクトが受信し、前記スマートコントラクトが、トークンコードに従って、前記スマートコントラクトが保有するトークンを操作する、ことを備える方法又はシステム。
【0227】
[項2]ブロックチェーンにおけるアカウントからトークンコードを受信したスマートコントラクトが、トークンコードに応じたトークンを、前記アカウントへ送信する、ことを備える方法又はシステム。
【0228】
[項3]トークンコードを受信したスマートコントラクトが、トークンコードに対応付けられた数のファンジブルトークンを、送信する、ことを備える方法又はシステム。
【0229】
[項4]スマートコントラクトが、トークンコードを受信すると、送信すべきファンジブルトークンの数を決定し、決定した数のファンジブルトークンを送信する、ことを備える方法又はシステム。
【0230】
[項5]トークンコードを受信したスマートコントラクトが、トークンコードに対応付けられたノンファンジブルトークンを、送信する、ことを備える方法又はシステム。
【0231】
[項6]スマートコントラクトが、トークンコードを受信すると、送信すべきノンファンジブルトークンを生成し、生成したノンファンジブルトークンを送信する、ことを備える方法又はシステム。
【符号の説明】
【0232】
10 :システム
15 :ネットワーク
20 :ブロックチェーン
21 :コントラクトアドレス
22 :スマートコントラクト
22A :スマートコントラクト
22B :スマートコントラクト
25A :ユーザアカウント
25B :ユーザアカウント
31 :端末
31A :プロセッサ
31B :記憶装置
31C :コンピュータプログラム
31D :近距離無線通信モジュール
31E :プライベートキー
31F :呼び出し処理
32 :端末
32D :近距離無線通信モジュール
33 :端末
35 :端末
40 :近距離無線通信装置(NFCタグ)
40A :NFCカード
40B :装置
41 :アンテナ
42 :無線回路
43 :コントローラ
44 :メモリ
46 :通信データ
51 :第1サーバ
51A :プロセッサ
51B :記憶装置
51C :コンピュータプログラム
51D :発行条件
51E :トークンコードリスト
51F :URIテーブル
51G :URI発行処理
52 :第2サーバ
52A :プロセッサ
52B :記憶装置
52C :コンピュータプログラム
52D :コントラクトテーブル
52F :呼び出し処理
110 :第1データ(第1URI)
111 :スキーム
113 :第1オーソリティ
113A :第1ホスト
113B :指定データ
120 :第2データ(第2URI)
121 :スキーム
123 :第2オーソリティ
123A :第2ホスト
123B :コントラクト情報
123C :トークンコード
125 :データ
130 :第1データ(第2URI)
140 :第1データ(プライベートキー)
150 :第1データ(ユーザコード)
201 :第1データ取得器
202 :第2データ発行器
203 :呼び出し器
310 :トークンテーブル
410 :ノンファンジブルトークン
420 :トークン
430 :トークン
450 :ファンジブルトークン
500 :ポスター
501 :表面
501A :2次元コード
502 :裏面
510 :目印
C1 :第1トークンコード
C2 :第2トークンコード
C3 :トークンコード
F1 :第1関数
F2 :関数
F3 :関数