添付図面に示された発明の実施例に対する参照は細かく行われる。可能な限り、同様な参照番号は全図面にわたって同様または類似の部分に振られている。
<従来(Conventional)の部屋在庫管理システムの構造>
図1は、従来の部屋在庫管理システム100が、部屋在庫管理システム100とOTAモジュールおよび/またはブッキングエンジンとの間に接続され、かつホテルの制御下にある中間チャネル管理機150を介して、顧客のためにどのようにOTAモジュールおよび/またはブッキングエンジンと協働して部屋を予約するかを示す。例示的に、部屋在庫管理システム100は、M個のOTAモジュールOTA1、OTA2…OTAM、および/またはN個のブッキングエンジンBE1、BE2…BENと協働する。ここでMおよびNは正の整数である。少なくとも1つの前述したOTAモジュールおよび/またはブッキングエンジンは少なくとも1つのグローバルディストリビューションシステム(GDS)および/または少なくとも1つのメタサーチエンジンに替えてもよいことが注意されるべきである。ただ、GDSおよびメタサーチエンジンなどを利用するときのホテルのコストは、OTAモジュールおよび/またはブッキングエンジンからサービスをレンタルするときのホテルのコストより相当に高い。このようなコストは、少なくとも、カスタマイズされたアプリケーションプログラミングインタフェース(API)の構築および維持、ならびに大量の顧客要求によって求められるサービス費用を含み得る。そのため、通常のホテルは、GDSおよびメタサーチエンジンのサービスを求めるより、OTAモジュールおよび/またはブッキングエンジンのサービスを求める。以下の説明もOTAモジュールおよび/またはブッキングエンジンの利用に集中されるが、GDSおよびメタサーチエンジンのサービスを利用する状況にも提供できる。
部屋在庫管理システム100はホテルの制御下の所有地内に設けられている。OTAモジュールOTA1、OTA2…OTAMおよび/またはブッキングエンジンBE1、BE2…BENは、ホテルから離れたところに設けられており、ホテルの制御下にはない。チャネル管理機150は、OTAモジュールOTA1、OTA2…OTAMおよびブッキングエンジンBE1、BE2…BENの各々との通信チャネルをそれぞれ維持し、それらの要求を、部屋在庫管理システム100、すなわちホテル、に対して解釈し中継する。しかしながら、共通の環境下では、OTAモジュールOTA1、OTA2…OTAMおよび/またはブッキングエンジンBE1、BE2…BENの各々は、異なるAPIおよび通信プロトコルを利用して異なる種類の変数およびパラメータを伝える。よって、これは、チャネル管理機150の通信チャネル用のカスタマイズAPIを設計する際に、ホストまたはチャネル管理機150のコストを常に増加させる。カスタマイズAPIは、OTAモジュールOTA1、OTA2…OTAMおよび/またはブッキングエンジンBE1、BE2…BENのAPIおよび通信プロトコルに適合させるためのAPIである。
部屋在庫管理システム100は従来の資産管理システム(PMS:property management system)モジュール120とメモリ130とを含む。
ホテルの部屋予約のための従来のPMSモジュールとは、ホテルの部屋予約を促進するカスタマイズされたシステムを指す。従来のPMSモジュールは、ホテルのフロント機能(front office function)、販売機能、計画機能、報告機能等の運行を調整するなどの目標のカバーに用いられる総合的なソフトウェアアプリケーションである。従来のPMSモジュールは、顧客の予約、顧客の詳細、オンライン予約、料金の通知、販売時点(point of sale)、電話、売掛金、販売とマーケティング、イベント、食品および飲料の原価計算、資材管理、人事管理および給与計算、保守管理、品質管理、および他のアメニティなどのホテル運営を自動化する。ホテルのPMSモジュールは、中央予約システムおよび収益(revenue)または利益(yield)管理システム、オンラインブッキングエンジン、バックオフィス(back office)、販売時点、ドアロック、ルームサービス最適化、エネルギー管理、支払いカード認証およびチャネル管理システムなどのサードパーティソリューションに、統合され得るまたはインタフェースを介して連結され得る。クラウドコンピューティング技術によって、ホテルのPMSモジュールがその機能性を、オンラインチェックイン、ルームサービス、室内における制御、顧客とスタッフと間のコミュニケーション、仮想コンシェルジュ(virtual concierge)などの顧客の面と向かう特徴まで拡張する。拡張機能は主に、顧客がその自身が持っている携帯電話によって利用され、または、ホテルのロビーおよび/または部屋において提供される。従来のPMSモジュールは、1日当たりの平均料金や稼働率などの、従来のPMSモジュールでは、ホテル業務の基本的な主要業績評価指標(basic key performance indicators)について、正確で即時の情報を提供する必要がある。従来のPMSモジュールは、食品および飲料の管理について、貯蔵室の在庫を制御し、どのようなもの、どの価格で、どの頻度で購入すべきかを決定することにも役に立つ。このように、従来のPMSモジュール120は、PMSモジュール120を介してホテルとローカル的に、または、前述したOTAモジュールおよび/またはブッキングエンジンを介して遠隔的に、顧客にその部屋予約を完成させることができる。
メモリ130は、部屋在庫管理システム100によって管理された、すなわち、ホテルによって管理されたすべての部屋の予約状況を記録する部屋在庫記録140を保持する。管理された部屋の予約状況に基づいて、管理された部屋は、空き部屋、予約済みの部屋、および使用中の部屋に、部屋在庫管理システム100によって分類され得る。顧客が空き部屋を予約すると、当該空き部屋は予約済みの部屋になる。顧客がホテルの予約済みの部屋にチェックインすると、予約済みの部屋は使用中の部屋になる。顧客がホテルからチェックアウトすると、使用中の部屋は空き部屋になる。
同様に、OTAモジュールOTA1、OTA2…OTAMのそれぞれは対応する部屋在庫を有する。ブッキングエンジンBE1、BE2…BENのそれぞれも対応する部屋在庫記録を有する。
しかしながら、OTAモジュールOTA1、OTA2…OTAMおよびブッキングエンジンBE1、BE2…BENは、それぞれの部屋在庫記録の内容を部屋在庫記録140の内容と動的に同期する動機がない。それは、このような動的な同期は従来のPMSモジュール120の応答を待つためにその負担が著しく増加し得るからである。また、チャネル管理機150は要求の翻訳および中継のみを担当するので、チャネル管理機150はこのような負担を従来のPMSモジュールに低減させることができない。さらにひどい場合、多くのOTAモジュールおよびブッキングエンジンが部屋在庫記録140の内容を問い合わせし続けると、従来のPMSモジュール120はこのような問い合わせを対処できず、そのシステムクラッシュに導く。このようなシステムクラッシュを回避するために、従来のPMSモジュール120は、より長い待ち時間間隔を与えることによって、OTAモジュールおよびブッキングエンジンのそれぞれに対して限られた問い合わせのみを許可することができる。待ち時間間隔は、ホテルがサービスを求めるOTAモジュールおよび/またはブッキングエンジンの数に依存して、少なくとも数分間から数時間である。例えば、OTAまたはブッキングエンジンは、ホテルがサービスを求めるOTAモジュールおよび/またはブッキングエンジンが5個以上の場合、半時間から二時間ごとに部屋在庫記録140を問い合わせるように限られ得る。ホテルがより多くのOTAおよび/もしくはブッキングエンジンと協働するとき、または旅行の混雑期のとき、このような待ち時間はより長く設定され得る。その結果、OTAモジュールおよび/またはブッキングエンジンは顧客の部屋予約要求を処理するまで正確な部屋在庫記録を有しないことがあるので、部屋在庫記録140とOTAモジュールおよび/またはブッキングエンジンの部屋在庫記録との内容には不一致が必然的に発生する。極端な状況下であっても、双方に望ましくない負担を低減するために、および、入ってくる部屋予約要求の処理に集中するために、OTAおよび/またはブッキングエンジンは、部屋在庫確認のコストを節約すべく、時々またはさらに頻繁に従来のPMSモジュール120に問い合わせることを省こうとすることがある。さらにひどい場合、ホテルの空き部屋が実際に無くなり、かつ、OTAモジュールおよび/またはブッキングエンジンが意識するために即時に従来のPMSモジュール120に問い合わせができていないとき、オーバーブッキングの発生は必然となる。
<オーバーブッキングはどのように従来の部屋在庫管理システムで発生するか>
従来の技術の観点でオーバーブッキングはどのように発生するかについては、図1の参照を介してさらに詳細に紹介される。
仮に、部屋在庫管理システム100によって管理された空き部屋R1を予約するために、第1の顧客がOTAモジュールOTA1を介してPMSシステム120にアクセスする。まず、OTAモジュールOTA1は、ホテルが空き部屋を有するかを確認するために、自分の部屋在庫記録を確認し、当該自分の部屋在庫記録は部屋在庫記録140と一致していないことがある。ホテルが空き部屋を有する場合、OTAモジュールOTA1は第1の顧客の部屋予約要求を従来のPMSモジュール120に転送する。次に、従来のPMSモジュール120は部屋在庫記録140を確認し、第1の顧客に対して空き部屋を確かに有するかを確認する。確かに有する場合、従来のPMSモジュール120は、第1の顧客の部屋予約要求を成立した取引に翻訳し、部屋在庫記録140を更新し当該成立した取引を記録する。このような更新は、部屋R1の予約状況を「予約済み」に変更することと、ホテルの空き部屋数を減少させることとを含む。
しかしながら、第1の顧客の部屋予約の少し後、同一の部屋R1を予約するために、第2の顧客がブッキングエンジンBE1を介してPMSシステム120にアクセスすると、ブッキングエンジンBE1は、第1の顧客の成立した取引について即時に知らせられてなく、部屋R1がまだ空いていると誤った確認を取ることがある。次に、ブッキングエンジンBE1は第2の顧客の部屋予約要求を従来のPMSモジュール120に転送する。明らかに、従来のPMSモジュール120は、部屋在庫記録140を参照すれば、第2の顧客の部屋予約が成立しないとすぐ決定するが、第2の顧客の成立しない部屋予約を知らせるためにブッキングエンジンBE1の次の問い合わせを待たなければならない。運が悪い場合、ブッキングエンジンBE1の次の問い合わせより前に第2の顧客がチェックインしようとすると、第2の顧客およびホテルはオーバーブッキングの問題に直面する。
第2の顧客は運が良かった場合、ホテルは適切な補償を第2の顧客に提供して代替的で空き部屋を用意することができる。しかしながら、ホテルは第1の顧客の成立した取引を確定した後その空き部屋が尽きた場合、第2の顧客はまたオーバーブッキングの問題に直面し、直ちに他のホテルにおいて他の空き部屋を探すと強いられる。大きな不確定性によって、第2の顧客の旅行体験が高い確率で損なわれ、ホテルおよびブッキングエンジンBE1の両方の信用にも傷付く。さらにひどいとき、上述したように、ホテルが多くのOTAおよび/もしくはブッキングエンジンと協働する場合、または、旅行の混雑期の場合、オーバーブッキングの問題の深刻さは増え続ける。
技術的な観点では、従来の部屋在庫管理システム100は以下の欠点を有する。
(1)OTAおよびブッキングエンジンは、それぞれの部屋在庫記録の正確性を確認するために従来のPMSモジュール120と動的に問い合わせることができない。
(2)OTAモジュールおよびブッキングエンジンが従来のPMSモジュール120に問い合わせるそれぞれの頻度を増加させる場合、従来のPMSモジュール120はその計算および/または通信帯域幅の負荷を対処できなくなる。よって、計算上または通信上のエラーが発生しやすくなる。
(3)従来の部屋在庫管理システム100とOTAモジュールおよび/またはブッキングエンジンとの間におけるデータの不一致は、ホテルのオーバーブッキングをもたらす。このようなオーバーブッキングは、ホテルが多くのOTAモジュールおよび/またはブッキングエンジンと協働するとき、または旅行の混雑期のときにひどくなる。
(4)ホテルは、カスタマイズされたAPIおよび通信プロトコルを開発し、OTAモジュールおよび/またはブッキングエンジンから要求される変数およびパラメータを受信し、部屋予約要求、部屋キャンセル要求、または部屋チェックアウト要求を処理するために、さらに多くのコストをかけなければならない。
<本発明に係る部屋在庫管理システム>
従来の部屋在庫管理システム100において発生するオーバーブッキング問題を効率的に緩和するために、本発明は、1つの実施例に基づく、ブロックチェーンに基づく部屋在庫管理システム、すなわち、図2に示されたブロックチェーンに基づく部屋在庫管理システム200を開示する。部屋在庫管理システム200は中間サーバシステムを導入し、当該中間サーバシステムは、従来のPMSモジュールとOTAモジュールおよび/またはブッキングエンジンとの間のデータの不一致を緩和することができ、従来のPMSモジュールの負担を低減することができる。また、部屋在庫管理システム200は、OTAモジュールおよびブッキングエンジン、さらに前述したGDSおよびメタサーチエンジンによる通信および維持のコストを節約するような、費用効果が高い解決策をホテルに提供する。
ブロックチェーンは複数の物理ノードを含み、論理上、それぞれの物理ノードは同様な内容、例えば、同様な複数のブロックを維持している。それぞれのノードは複数のブロックを含む。特定のイベントの発生に応じて、例えば、成立した取引の発生に応じて、当該特定のイベントを記録するために新しいブロックが生成される。多くのブロックの生成につれて、成立した取引の履歴はブロックチェーンにおいて確立されて追跡され得る。よって、ブロックチェーンを採用する1つ目の利点は追跡可能性である。その上、特定の物理ノードにおいて特定ブロックの改ざん行為が成功したとしても、すべての物理ノードが論理上に同様な内容、すなわち、同様なブロックを含むため、当該行為は、影響を受けていない他の物理ノードを参照することによって検出され修復され得る。すなわち、ブロックチェーンを採用する2つ目の利点はその改ざん行為を防御する能力である。
ブロックチェーン技術を適用するとき、ブロックチェーンに基づく部屋在庫管理システム200は、成立した取引のそれぞれ、すなわち、部屋予約イベントのそれぞれの正確性を有効的に確保することができる。よって、ブロックチェーンに基づく部屋在庫管理システム200は、従来の部屋在庫管理システムによって起こされるオーバーブッキング問題を有効的に緩和することができる。
また、ブロックチェーンに基づく部屋在庫管理システム200は、イーサリアムに基づくスマートコントラクト(smart contract)を利用して、OTAモジュールおよび/またはブッキングエンジンと通信するための、共通のAPIおよび/または共通の通信プロトコルを生成する。いくつかの実施例において、共通のAPIは、同様にイーサリアムに基づくこれらのOTAモジュールおよび/またはブッキングエンジン向けであり、共通の通信プロトコルは、イーサリアムに基づかないこれらのOTAモジュールおよび/またはブッキングエンジン向けである。このように、システムの維持と通信のためのAPIおよび/または通信プロトコルのコストを著しく減少させることができ、当該システムの維持と通信は、OTAモジュールおよび/もしくはブッキングエンジンとの部屋予約イベントの送受信、または、OTAモジュールおよび/もしくはブッキングエンジンとの部屋在庫記録の更新を含む。それは、イーサリアムに基づくスマートコントラクトが言語設計上のオープンで簡単という特性により、当該特性は、比較的に少ないまたは比較的に理解しやすい変数およびパラメータの中継を含む。このようなコスト低減は、同様な理由で、ブロックチェーンに基づく部屋在庫管理システム200がGDSおよびメタサーチエンジンと協働するときも働く。
スマートコントラクトはイーサリアムの下で開発された技術であり、本発明に適用されるブロックチェーン技術に対して重要な補助技術である。イーサリアムは、オープンソースであり、ブロックチェーンに基づく分散計算システムおよびオペレーティングシステムであり、スマートコントラクトの機能性を特徴とする。イーサリアムは、分散式でチューリング完全(Turing-complete)の仮想マシン、すなわち、イーサリアム仮想マシン(EVM:Ethereum virtual machine)を提供し、当該EVMはノードの国際ネットワークを利用するスクリプトを実行することができる。
イーサリアムのスマートコントラクトは、開発者が各自の機能をプログラミングするために利用する異なるコンピュータ言語に基づく。スマートコントラクトは、高級プログラミングに抽象化されており、EVMのバイトコードにコンパイルされ、実行されるようにイーサリアムブロックチェーンに配置される。スマートコントラクトによって、証明可能な公平性(provably fair)を自身に含むカジノなどの機能性を提供することが可能となる。イーサリアムブロックチェーンアプリケーションはしばしば分散式アプリケーションと称され、それは、当アプリケーションは分散式EVMおよびそのスマートコントラクトに基づくからである。イーサリアムブロックチェーンアプリケーションの例としては、デジタル署名アルゴリズム、証券化トークン、デジタル権利管理、クラウドファンディング、予測市場、送金、オンラインギャンブル、ソーシャルメディアプラットフォーム、金融取引所、および識別システムが挙げられる。イーサリアムのチューリング完全の特性によって、スマートコントラクトは、機能の設計上および実行上の高い柔軟性を提供する。また、イーサリアムに基づくスマートコントラクトはオープンソースであって実装しやすいため、ブロックチェーンに基づく部屋在庫管理システム200は、イーサリアムに基づくスマートコントラクトによって、OTAモジュールおよび/またはブッキングエンジンとの通信において上述した利点を有する。
ブロックチェーンに基づく部屋在庫管理システム200は、新規のPMSモジュール210と中間サーバシステム250とを含む。PMSモジュール210は、PMSモジュール210を直接的に制御できるホテルなどのホテル内に配置され得る。中間サーバ250はPMSモジュール210から遠隔的に配置され得る。一実施例において、中間サーバシステム250はPMSモジュール210のために部屋予約イベントを前処理しまたは処理し、よって、中間サーバシステム250はPMSモジュール210の負担を著しく緩和する。一実施例において、部屋予約イベントは、少なくとも、ホテルからの内部部屋予約要求およい内部部屋キャンセル/チェックアウト要求、ならびに、OTAモジュールおよび/またはブッキングエンジンからの外部部屋予約要求および外部部屋キャンセル要求を含む。外部部屋予約/キャンセル要求は外部のOTAモジュールおよび/またはブッキングエンジンに送信され、イーサリアムに基づくスマートコントラクトを用いて開発されたAPIまたは通信プロトコルによってホテルの少なくとも1つの部屋を予約またはキャンセルしてもよい。内部部屋予約/チェックアウト要求は、ホテルにおいて顧客が直接的に部屋を予約するとき、または、ホテルにチェックインした顧客がチェックアウトするときに発生する。また、イーサリアムに基づくスマートコントラクトを用いて開発されたAPIまたは通信プロトコルが設定しやすいため、中間サーバシステム250はイーサリアムに基づくスマートコントラクトを利用して部屋予約イベントを通信し、OTAモジュールおよび/またはブッキングエンジンとの費用効果が高い通信が達成する。
一実施例において、PMSモジュール210は、同様な遠隔手続き呼び出し(RTC:remote procedure call、リモートプロシージャコールとも呼ばれている)プロシージャなどの同様なアプリケーションプログラミングインタフェースを共有することによって中間サーバシステム250と協働するように特別に設計され、よって、PMSモジュール210と中間サーバシステム250との間の通信は処理時間が短くなって効率がよくなることができる。部屋在庫管理システム200が短時間内で大量の部屋予約イベントを処理する必要があるとき、例えば、旅行の混雑期のときに、このような高い効率はより明らかになる。
PMSモジュール210は、ホスト送受信機212とホストプロセッサ214とホストメモリ216とを含む。本発明の実施例において、ホストプロセッサ214はコンピュータプロセッサであり、ホストメモリ216は不発揮性コンピュータ可読メモリである。ホスト送受信機212は中間サーバシステム250との通信を処理できるが、OTAモジュールOTA1、OTA2…OTAMおよびブッキングエンジンBE1、BE2…BENと直接的に通信しない。ホストメモリ216は、ホストの部屋管理のためにPMSモジュール210に対して(図3に示された)部屋在庫記録218を維持する。部屋在庫記録218は、少なくとも、ホテルの各部屋の予約状況、および、ホテルの空き部屋数を含む。ホストプロセッサ214は、部屋予約イベントの発生に応じて、部屋在庫記録218を参照および/または更新する。例えば、ホストプロセッサ214は部屋予約要求に応じて、空き部屋数を減少させ、および/または、予約部屋を、空きがない状況としてもよい。また、ホストプロセッサ214は、部屋キャンセル要求または部屋チェックアウト要求に応じて、空き部屋数を増加させ、および/または、予約済みの部屋を空いている状況にしてもよい。
中間サーバシステム250はブロックチェーン技術を適用する。また、中間サーバシステム250は取引プロキシサーバ260と複数のノードサーバ、例えば、図2に示されたX個のノードサーバNS1、NS2…NSXとを含む。Xは正の整数である。また、ノードサーバNS1、NS2…NSXは、ブロックチェーンを形成し、それぞれにデータ一致性およびデータ追跡可能性のために実質的に同様なデータを維持する。
取引プロキシサーバ260は、中間サーバシステム250の頭脳として動作し、中間送受信機262と中間プロセッサ264と中間メモリ266とを含む。いくつかの実施例において、取引プロキシサーバ260は信頼ノードとして動作し、中間サーバシステム250内にブロックチェーンにおけるブロックを生成するように承認される。同様に、実施例において、中間プロセッサ264はコンピュータプロセッサであり、中間メモリ266は不発揮性コンピュータ可読メモリである。OTAモジュールOTA1、OTA2…OTAM、およびブッキングエンジンBE1、BE2…BENまたはPMSモジュール210のいずれか1つが部屋予約要求を発行するとき、中間送受信機262は部屋予約要求を受信して部屋予約要求を中間プロセッサ264に転送する。いくつかの実施例において、中間送受信機262はアプリケーションプログラミングインタフェース(API)サーバとして実行され、APIサーバは、中間メモリ266に記憶されたイーサリアムのスマートコントラクトに基づいて、部屋予約要求を、PMSモジュール210および中間サーバシステム250が理解しやすい形式に翻訳し、すなわち、チャネル管理機150の機能の代替となる。中間メモリ266は、少なくとも1つのイーサリアムに基づくスマートコントラクトを用いて実行される(図3に示された)部屋在庫記録268を維持し、よって、中間プロセッサ264は、複数のイーサリアムに基づくスマートコントラクトと互換可能な指令に基づいて、部屋在庫記録268を操作する(例えば、アクセスする、更新する、または監査する(audit))。中間サーバシステム250(特に取引プロキシサーバ260)とOTAモジュールOTA1、OTA2…OTAMおよび/またはブッキングエンジンBE1、BE2…BENとの間の通信は、中間メモリ266に記憶されたスマートコントラクトによって支援される。中間プロセッサ264は、複数のスマートコントラクトの少なくとも1つを利用し、部屋在庫記録268の内容にアクセスするおよび/または更新する。また、いくつかの実施例において、APIサーバの翻訳プロシージャを部屋在庫管理プロシージャから分離させて取引プロキシサーバ260のシステムオーバーロードを回避するために、中間送受信機262は中間プロセッサ264および/または中間メモリ266から離れて配置され得る。
いくつかの実施例において、中間プロセッサ264は、PMSモジュール210、または、OTAモジュールOTA1、OTA2…OTAMもしくはブッキングエンジンBE1、BE2…BENのいずれか1つから部屋予約イベントが成立した取引であるかを判断し、当該部屋予約イベントは部屋予約要求、部屋チェックアウト要求または部屋キャンセル要求であってもよい。OTAモジュールOTA1、OTA2…OTAMまたはブッキングエンジンBE1、BE2…BENのいずれか1つからの部屋予約イベントは、顧客からの外部部屋予約要求または(予約がすでに成立と確認された場合において)外部部屋キャンセル要求であってもよい。PMSモジュール210からの部屋予約イベントは、内部部屋予約要求、内部部屋キャンセル要求、または内部部屋チェックアウト要求であってもよい。部屋予約要求を受信するとき、中間プロセッサ264は、部屋在庫記録268を確認し、例えば、予約部屋の予約状況に基づいて、または、部屋予約要求が許可されるとホテルにおいてオーバーブッキングが発生するか否かに基づいて、部屋予約要求が許可すべきであるか否かを確認する。中間プロセッサ264が部屋予約要求を許可すると、中間プロセッサ264は対応的に成立した取引を生成する。同様に、内部チェックアウト要求、内部部屋キャンセル要求または外部部屋キャンセル要求を受信すると、中間プロセッサ264は、部屋在庫記録268を確認し、キャンセルされたまたはチェックアウトされた部屋を解除し、対応的に成立した取引を生成する。
ブロックチェーン技術の下で実行される複雑な機能を支援するために、中間サーバシステム250は、中間メモリ266に記憶された少なくとも1つの、イーサリアムに基づくスマートコントラクトを適用する。前述したように、スマートコントラクトの設定上および実行機能上の柔軟性によって、中間サーバシステム250は、伝統的な部屋予約需要と最も新しいブロックチェーン技術とを組み合わせて様々な種類の機能を実行することができる。
いくつかの実施例において、中間プロセッサ264は、部屋予約イベントが成立した取引であるか否かを判断した後、部屋在庫記録268を更新するために成立した取引を部屋在庫記録268に組み入れる。また、中間プロセッサ264は、ノードサーバNS1、NS2…NSXのそれぞれに対して更新した部屋在庫記録268の内容を同期してもよく、すなわち、ノードサーバNS1、NS2…NSXによって形成されたブロックチェーンを更新してもよい。よって、ノードサーバNS1、NS2…NSXは、部屋在庫記録268のためのバックアップ記憶装置として動作し得る。
いくつかの実施例において、よく知られたブロックチェーン技術が示すように、前述したノードサーバNS1、NS2…NSXのブロック更新は同一のブロックチェーンにおいて異なるノードサーバ間のブロック競合(block competition)を含み得て、よって、いくつかのブロックはノードサーバNS1、NS2…NSXの一部において追加されてから廃棄される。ただ、簡潔に説明するために、仮にノードサーバNS1、NS2…NSXのブロック更新はこのようなブロック競合をカバーする。よって、仮に、ノードサーバNS1、NS2…NSXのそれぞれは、実質的に同様なブロックを有し、当該ブロックは最終的には実質的に同様な取引履歴を含む。
このように、中間プロセッサ264はノードサーバNS1、NS2…NSXのいずれか1つから部屋在庫記録268の正確な複写を常に見つけることができるため、部屋在庫記録268の内容は損害をより回避することができる。
ノードサーバNS1、NS2…NSXのそれぞれは、ノード送受信機とノードプロセッサとノードメモリとを含む。ノードプロセッサはコンピュータプロセッサである。また、ノードメモリは不発揮性コンピュータ可読メモリである。ノード送受信機は、部屋予約要求に対応する成立した取引が発生するときに、中間プロセッサ264から指令を受信し中間プロセッサ264からにデータを送信する。ノードメモリは、以後の更新および/または監査のために、部屋在庫記録268の内容の複写を記憶してもよい。ノードプロセッサは、中間プロセッサ264から受信した指令を処理し、中間プロセッサ264に応答するにはどのようなデータを判断する。図2に示された例示のように、例えば、ノードサーバNS1はノード送受信機NT1とノードプロセッサNP1とノードメモリNM1とを有し、ノードサーバNS2はノード送受信機NT2とノードプロセッサNP2とノードメモリNM2とを有し、ノードサーバNSXはノード送受信機NTXとノードプロセッサNPXとノードメモリNMXとを有する。
図3は、ホストメモリ216、中間メモリ266、およびノードメモリNM1、NM2…NMXの部屋在庫記録、すなわち、部屋在庫記録218、部屋在庫記録268、および部屋在庫記録RI1、RI2…RIXの間のデータ交換に関する略図を示す。ノードメモリNM1、NM2…NMXのそれぞれは同様な複数のスマートコントラクトを部屋在庫管理268の複数のスマートコントラクトとして記憶する。また、部屋在庫記録RI1、RI2…RIXは、ノードメモリNM1、NM2…NMXのそれぞれに記憶された当該複数のスマートコントラクトを用いて実行される。中間プロセッサ264および中間メモリ266と同様に、ノードプロセッサNP1、NP2…NPXのそれぞれは、部屋在庫記録RI1、RI2…RIXを実行する当該複数のスマートコントラクトを用いて、部屋在庫記録RI1、RI2…RIXの内容を各自にアクセスし更新する。
いくつかの実施例において、中間プロセッサ264はまず、成立した取引の発生に応じて、部屋在庫記録268を更新する。また、中間プロセッサ264はホスト送受信機212を介して部屋在庫記録268の更新した内容をPMSモジュール210に転送し、よって、ホストプロセッサ214は部屋在庫記録218を更新し、部屋在庫記録268の更新した内容と同期する。また、中間プロセッサ264は、部屋在庫記録268の更新した内容に応じて、新しいブロックを生成し、当該新しいブロックはPMSモジュール212の少なくとも最新の成立した取引のすべてを担持する。いくつかの実施例において、中間プロセッサ264は、完全の指令、例えば、変数を計算し更新すること、を実行するために、中間メモリ266に記憶された少なくとも1つのスマートコントラクトを要求し、新しいブロックを生成する。例えば、Y個の異なる成立した取引が時間順(chronological order)で発生するとき、中間プロセッサ264は、時刻t1にブロックBL1を、時刻t2にブロックBL2を、時刻tYに最も新しく生成されるブロックBLYを生成する。Yは正の整数である。時刻t1が時刻t2より早く、時刻t2が時刻t(Y-1)より早く、時刻t(Y-1)が時刻tYより早い。時刻tYは、最新に生成される成立した取引が発生する時刻tYを指す。ブロックBL1は時刻t1まで最新の成立した取引のすべてを含む。ブロックBL2は、ブロックBL1より、もう1つの、時刻t2に発生した成立した取引を含み、すなわち、時刻t2まで最新の成立した取引のすべてを含む。同様に、ブロックBLYは時刻tYまで最新の成立した取引のすべてを含む。
ノードサーバNS1、NS2…NSXのそれぞれは、ブロックチェーン技術の下で、対応する部屋在庫記録RI1、RI2…RIXを部屋在庫記録268の内容と同期的に更新し続けるべきである。よって、それぞれのノード送受信機NT1、NT2…NTXを介して最も新しく生成されたブロックBLYを受信した後、ノードプロセッサNP1、NP2…NPXは、当該最も新しく生成されたブロックBLYを対応する部屋在庫記録RI1、RI2…RIXにそれぞれに組み入れる。いくつかの実施例において、ノードプロセッサNP1、NP2…PNXは、少なくとも1つのスマートコントラクトの協力を要求し、最も新しい取引に関わる指令を同期的に実行し、対応する部屋在庫記録RI1、RI2…RIXの更新を完成する。更新は、いくつかのローカル変数またはいくつかのグローバル変数の更新を含んでもよい。いくつかのローカル変数は部屋の予約状況または対応する部屋価格を含んでもよい。いくつかのグローバル変数は条件付き割引または動的に調整された部屋価格を含んでもよい。
図4は、中間プロセッサ264がどのように新しいブロックを生成するかを詳細に示す。中間プロセッサ264はハッシングモジュール402とタイムスタンプモジュール404とブロック生成モジュール406とを含む。前述したように、中間プロセッサ264は成立した取引に応じて新しいブロックを生成する。中間プロセッサ264が成立した取引を確認するとき、ハッシングモジュール402は新しいブロックに対してハッシュ値を生成し、タイムスタンプ404は新しいブロックに対して一意的なタイムスタンプを生成する。例えば、Y個のブロックBL1、BL2…BLYに対して、ハッシングモジュール402は実質的に一意的なハッシュ値HS1、HS2…HSYをそれぞれに生成し、タイムスタンプモジュール404は実質的に一意的なタイムスタンプTS1、TS2…TSYをそれぞれに生成する。
ハッシュ値の生成方法はブロックチェーン技術の当業者にとっては周知であるため、ここでは詳細に説明しない。ただ、生成されたハッシュ値のそれぞれはそのランダム性(randomness)を有し、よって、生成されたハッシュ値のそれぞれは実質的に一意的であり得る。いくつかの実施例において、生成されたタイムスタンプは、中間プロセッサ264が成立した取引を確認する時刻、または部屋予約要求が開始される時刻として参照され得て、当該部屋予約要求は、例えば、PMSモジュール210、または、OTAモジュールOTA1、OTA2…OTAM、もしくはN個のブッキングエンジンBE1、BE2…BENのいずれか1つによって開始される。このように、ブロックBL1、BL2…BLYのそれぞれは、それの実質的に一意的なハッシュ値と実質的に一意的なタイムスタンプとを有するはずである。また、最も新しく生成されたブロックBLYは、最新に生成された複数のブロックのうちに、最も新しいタイムスタンプを有する。
成立した取引に応じて、ブロック生成モジュール406は、ブロックヘッダを生成するために、ハッシングモジュール402からの実質的に一意的なハッシュ値とタイムスタンプモジュール404からの実質的に一意的なタイムスタンプとを組み入れる。例えば、最も新しい成立した取引に基づいて生成すべきブロックBLYに対して、ブロック生成モジュール406はハッシュ値HSYとタイムスタンプTSYとを取り入れてブロックヘッダBHYを生成する。このように、ブロック生成モジュール406はブロックヘッダBH1、BH2…またはBHYをそれぞれに生成する。
また、成立した取引に応じて、ブロック生成モジュール406は、対応するブロックヘッダと、成立した取引の内容と、少なくとも1つスマートコントラクトと、直前に生成したブロックの内容とを取り入れた新しいブロックを生成する。例えば、最も新しい成立した取引に応じて、ブロック生成モジュール406はブロックBLYを生成し、ブロックBLYは、ブロックヘッダBHYと、中間メモリ266からロードした少なくとも1つの1つスマートコントラクトと、直前のブロックBL(Y-1)の内容(簡潔に説明するために図示せず)とを含む。このように、最も新しく成立したブロックBLYは以前生成したブロックBL1、BL2…BL(Y-1)のすべての内容を含む。また、以前生成したブロックBL1、BL2…BL(Y-1)のすべてによって指される最新の成立した取引のすべては、最も新しく生成したブロックBLYを参照するだけで簡単に監査し得る。
最後に、ブロック生成モジュール406は、ノードサーバNS1、NS2…NSXによって形成されたブロックチェーンに新しいブロックを追加し、ブロックチェーンを更新する。例えば、ブロック生成モジュール406は、ブロックチェーンを更新するために、すでにブロックBL1、BL2…BL(Y-1)を含んでいるブロックチェーンに最も新しく生成したブロックBLYを追加する。
いくつかの実施例において、OTAモジュールOTA1、OTA2…OTAMおよび/またはブッキングエンジンBE1、BE2…BENのそれぞれは、直接的に、または取引プロキシサーバ260を介して、ノードサーバNS1、NS2…NSXによって形成されたブロックチェーンにアクセスすることが許可される。このように、最も新しい取引を実質的に常に維持するブロックチェーンを利用することによって、OTAモジュールOTA1、OTA2…OTAMおよび/またはブッキングエンジンBE1、BE2…BENのそれぞれは常に、最も新しく生成したブロックをタイムリーに参照することによって、空き部屋の正確な数量および/または特定の部屋の予約状況を主導的に確認することができる。その結果、オーバーブッキングは実質的に改善され得る。
また、PMSモジュール210の多くのタスクが中間サーバシステム250によって緩和されるため、PMSモジュールのオーバーロードという従来の欠点も有効的に実質的に回避され得る。
いくつかの実施例において、ノードサーバNS1、NS2…NSXによって形成されたブロックチェーンは、それぞれのブロックヘッダを介して、さらに具体的には、それぞれのハッシュ値を介して、形成されて監査される。いくつかの実施例において、ノードサーバNS1、NS2…NSXの間のブロックチェーンはマークル木(Merkle Tree)の技術を適用し、よって、ブロックチェーンの各ブロックは実質的に一意的なマークルルート(Merkle Root)を有する。特定のブロック、例えば、ブロックBL1がノードサーバNS1、NS2…NSXのうちの1つにおいて改ざんされた場合、ブロックチェーンにアクセス可能な任意の個体は、ブロックチェーンを簡単に監査し、特定のノードサーバにおいて改ざんされたブロックBL1を容易に見つけることができる。監査プロシージャは以下のことを含む。(1)ノードサーバNS1、NS2…NSXのそれぞれにおけるブロックBL1のマークルルートを計算する。(2)ノードサーバNS1、NS2…NSXのすべてにおけるブロックBL1のマークルルートを比較し、少なくとも1つのノードサーバにおいて改ざんされたブロックBL1にある不一致を見つける。より具体的には、改ざんされたブロックBL1は必ず、他のノードサーバにおいて改ざんされていないブロックBL1のマークルルートと異なるマークルルートを有するため、当該異なるマークルルートは前述した比較によって簡単に見つけられる。また、改ざんされたブロックBL1は、改ざんされていない他のブロックBL1を参照することによって修復できる。その結果、ブロックチェーンにおけるブロックはそれぞれの正確さが保証され、よって、それぞれのノードサーバにおける部屋在庫記録は安全性が確保されている。いくつかの実施例において、ある個体は、ブロックチェーンを監査する、またはさらに修復するために、ブロックチェーンにアクセスすることが承認され、当該個体は例えば、PMSモジュール210、取引プロキシサーバ260、または、いずれかのノードサーバNS1、NS2…NSXのプロセッサである。前述した監査および修復の実施例は、例示のブロックBL1以外の他のブロックにも適用される。
いくつかの実施例において、それぞれの成立した取引は、対応するブロックヘッダを介して、さらに具体的には対応するタイムスタンプを介して、ノードサーバNS1、NS2…NSXのいずれか1つにおけるブロックBL1、BL2…BLYのいずれか1つを参照することによって、前述した監査プロシージャの一部として、正確に追跡され得る。また、追跡プロシージャは、前述したようにブロックチェーンをアクセスすることが承認された個体によって、中間メモリ266またはそれぞれのノードメモリNM1、NM2…NMXに記憶された少なくとも1つの監査スマートコントラクトを用いて、実行され得る。このような個体は、取引プロキシサーバ260の中間プロセッサ264、または、いずれかのノードサーバNS1、NS2…NSXのノードプロセッサを含んでもよい。好ましくは、このような監査プロシージャは、即時かつ混乱が生じない更新のために、中間プロセッサ264によって行われる。追跡プロシージャは以下のことを含む。(1)ブロックBL1、BL2…BLYのブロックヘッダBH1、BH2…BHYを検索する。(2)それぞれのブロックBL1、BL2…BLYの生成の発端となったそれぞれの成立した取引を識別するために、それぞれのブロックBL1、BL2…BLYのタイムスタンプTS1、TS2…TSYを追跡する。タイムスタンプによって、それぞれの成立した取引の発生は時間順で正確に確認され得る。このように、先に成立してOTAモジュールまたはブッキングエンジンに即時に通知されない可能性がある取引ではなく、後で成立した取引を誤ってアクセスすることによって起こされるオーバーブッキングを、よりよく確認して回避することができる。
いくつかの実施例において、部屋在庫記録268に記憶された複数のスマートコントラクトは少なくとも1つの動的価格スマートコントラクトを含み、当該動的価格スマートコントラクトによれば、部屋在庫記録268に記録された暫定空き部屋数に基づいて、少なくとも1つの暫定かつ変更可能な部屋価格を決定することができる。中間プロセッサ264は、暫定部屋価格を動的に調整し、中間送受信機262を介して、調整した部屋価格をPMSモジュール210、OTAモジュールOTA1、OTA2…OTAM、および/またはブッキングエンジンBE1、BE2…BENに転送する。同様に、ホスト送受信機212が調整された部屋価格を受信すると、ホストプロセッサ214は調整された部屋価格を用いて部屋在庫記録218を動的に更新する。
従来の部屋在庫管理システム100と比べると、部屋在庫管理システム200は以下の利点を有する。(1)すべての成立した取引が時間順で記録されることを確保することによって、オーバーブッキング問題を改善する。(2)中間サーバシステム250によって、成立した取引の確認および/または部屋在庫記録の更新のための、PMSモジュールの負担、時間および帯域幅を緩和する。(3)部屋在庫記録の正確さおよび追跡可能性を高める。
前述した実施例において、部屋在庫管理システム200は中央モジュール、すなわち、取引プロキシサーバ260を適用し、中間サーバシステム260のノードサーバNS1、NS2…NSXにわたる主要なタスクを管理する。しかしながら、本発明のもう1つの実施例において、ノードサーバNS1、NS2…NSXの間のこのような管理責務を移転することによってタスクを管理することについてバランスをよりよく取る。特には、ノードサーバNS1、NS2…NSXのいずれか1つは、時間期間内にすべてのノードサーバNS1、NS2…NSXを管理するようにマスタノードサーバとして一時的に指定され得て、ノードサーバNS1、NS2…NSXのうちのもう1つは他の時間期間内に新しいマスタノードサーバとして指定され得る。いくつかの実施例において、ノードサーバNS1、NS2…NSXの間のマスタノードサーバの責務転換は、時々に(from time to time)、周期的に、またはランダム的に実行され得る。また、マスタノードサーバの指定は、ノードサーバNS1、NS2…NSXの間で、選挙、順次交替、または所定ルールによって実行され得る。所定ルールは、より小さいまたは最も小さい負担を有するノードサーバを新しいマスタノードサーバにすることを含んでもよく、このような負担は、瞬時システム負荷、瞬時ストレージサイズ、および/または瞬時送信帯域幅を含んでもよい。よって、任意のノードサーバNS1、NS2…NSXは、受けきれない負担を受けること、さらに故障することを回避することができる。
図5は本発明のもう1つの実施例に基づく部屋在庫管理システム500を示す。部屋在庫管理システム500はPMSモジュール210と中間サーバシステム250とを含む。PMSモジュール210の特性および配置は図2で説明したPMSモジュールと同様である。よって、PMSモジュール210に関する説明はここで繰り返さない。中間サーバシステム520は図2で説明したノードサーバと同様な複数のノードサーバNS1、NS2…NSXを含む。しかしながら、部屋在庫管理システム200と部屋在庫管理システム500との主な違いは、取引プロキシサーバ260の代わりに、1つのノードサーバNS1、NS2…NSXはコンセンサスアルゴリズムによってマスタノードサーバとして一時的に選択できることにある。マスタノードサーバおよびその要素は、少なくとも取引プロキシサーバ260およびその要素の構造および能力を受け継ぐ。よって、簡潔に説明するために、マスタノードサーバについて取引プロキシサーバ260と同様な重複の説明を省略する。
ノードサーバNS1、NS2…NSXのうちからマスタノードサーバを選択するコンセンサスアルゴリズムは、順次順序によって選択すること、ランダムな順序によって選択すること、および/または、すべてのノードサーバに関与する問い合わせコンセンサスを介して選択することを含む。選択されたマスタノードサーバが所定の時間期間内に管理タスクを担当し、当該所定の時間期間が終わると選択が再び行って他のマスタノードサーバを決定し、よって、以前に選択されたマスタノードサーバは再度に選択されるまでその責任が解放される。以下の説明は、取引プロキシサーバ260と同様な機能を行うマスタノードサーバとしてノードサーバNSTが一時的に選択されるという条件に基づく。
図6は、ホストメモリ216と他のノードメモリNM1、NM2…NMX(一時的なマスタノードメモリNMTを含む。)との部屋在庫記録の間の関係、すなわち、部屋在庫記録218と部屋在庫記録RI1、RI2…RIX(一時的なマスタ部屋在庫記録RITを含む。)との間の関係に関する略図を示す。同様に、部屋在庫記録RI1、RI2…RIXは、メモリNM1、NM2…NMXに記憶された複数のスマートコントラクトを用いて実行される。また、ノードプロセッサNP1、NP2…NPT…NPXは複数のスマートコントラクトを用いて対応する部屋在庫記録RI1、RI2…RIXをアクセスするまたは更新する。いくつかの実施例において、マスタノードプロセッサNSTはまず、成立した取引の発生に応じて、一時的なマスタ部屋在庫記録RITを更新する。また、マスタノードプロセッサNSTは、マスタノード送受信機NTTおよびホスト送受信機212を介して、一時的なマスタ部屋在庫記録RITの更新した内容をPMSモジュール210に転送する。それよって、ホストプロセッサ214は、部屋在庫記録218を更新し、一時的なマスタ部屋在庫記録RITの更新した内容と実質的に同期する。また、マスタノードプロセッサNPTは、一時的なマスタ部屋在庫記録RITの更新された内容に応じて、PMSモジュール212において少なくとも最新の成立した取引のすべてを担持する新しいブロックを生成する。注意すべきなのは、それぞれのノードサーバNS1、NS2…NSXのメモリNM1、NM2…NMTに記憶されたスマートコントラクトは、中間メモリ266に記憶されたスマートコントラクトと同様であることである。よって、いくつかの実施例において、マスタノードプロセッサNPTは、完全な指令、例えば、変数を計算し更新することを実行するために、マスタノードメモリNMTに記憶された少なくとも1つのスマートコントラクトをロードして新しいブロックを生成してもよい。例えば、時間順にY個異なる成立した取引が発生するとき、前回のマスタノードプロセッサおよび/または一時的なマスタノードプロセッサ264は、時刻t1にブロックBL1を生成し、時刻t2にブロックBL2を生成し、時刻tYに最も新しく生成されるブロックBLYを生成してもよい。Yは正の整数である。時刻t1が時刻t2より早く、時刻t2が時刻t(Y-1)より早く、時刻t(Y-1)が時刻tYより早い。時刻tYは、最新に生成される成立した取引が発生する時刻tYを指す。ブロックBL1は時刻t1まで最新の成立した取引のすべてを含む。ブロックBL2は、ブロックBL1より、もう1つの、時刻t2に発生した成立した取引を含み、すなわち、時刻t2まで最新の成立した取引のすべてを含む。同様に、ブロックBLYは時刻tYまで最新の成立した取引のすべてを含む。
前述したように、ノードサーバNS1、NS2…NSXのそれぞれは、ブロックチェーン技術の下で、対応する部屋在庫記録RI1、RI2…RIXをこのときのマスタ部屋在庫記録RITの内容と同期的に更新し続けるように求められる。よって、それぞれのノード送受信機NT1、NT2…NTX(最も新しく生成されたブロックBLYを送信するこのときのマスタ送受信機を除く。)を介して最も新しく生成されたブロックBLYを受信した後、ノードプロセッサNP1、NP2…NPX(このときのマスタ部屋在庫記録RITを除く。)は、当該最も新しく生成されたブロックBLYを対応する部屋在庫記録RI1、RI2…RIXにそれぞれに組み入れる。いくつかの実施例において、ノードプロセッサNP1、NP2…PNXは、少なくとも1つのスマートコントラクトの協力を要求し、最も新しい取引に関わる指令を同期的に実行し、対応する部屋在庫記録RI1、RI2…RIXの更新を完成する。更新は、例えば、部屋の予約状況または対応する部屋価格を含む特定のローカル変数の更新、または、条件付き割引または動的に調整された部屋価格を含む特定のグローバル変数の更新を含んでもよい。
図7は、一時的なマスタプロセッサNPTがどのように新しいブロックを生成するかを詳細に示す。一時的なマスタプロセッサNPTはハッシングモジュールNPT_HとタイムスタンプモジュールNPT_TSとブロック生成モジュールNPT_Bとを含む。前述したように、一時的なマスタプロセッサNPTは成立した取引に応じて新しいブロックを生成する。一時的なマスタプロセッサNPTが成立した取引を確認するとき、ハッシングモジュールNPT_Hは新しいブロックに対して実質的に一意的なハッシュ値を生成し、タイムスタンプモジュールNPT_TSは新しいブロックに対して実質的に一意的なタイムスタンプを生成する。例えば、Y個のブロックBL1、BL2…BLYに対して、ハッシングモジュールNPT_HはY個の実質的に一意的なハッシュ値HS1、HS2…HSYをそれぞれに生成し、タイムスタンプモジュールNPT_TSは実質的に一意的なタイムスタンプTS1、TS2…TSYをそれぞれに生成する。
前述した実施例と同様に、ハッシュ値の生成方法はブロックチェーン技術の当業者にとっては周知であるため、ここでは詳細に説明しない。また、いくつかの実施例において、生成されたタイムスタンプは、一時的なマスタノードプロセッサNPTが成立した取引を確認する時刻、または部屋予約要求が開始される時刻として参照され得て、当該部屋予約要求は、例えば、PMSモジュール210、または、OTAモジュールOTA1、OTA2…OTAM、もしくはN個のブッキングエンジンBE1、BE2…BENのいずれか1つによって開始される。このように、ブロックBL1、BL2…BLYのそれぞれは、それの実質的に一意的なハッシュ値と実質的に一意的なタイムスタンプとを有するはずである。また、最も新しく生成されたブロックBLYは、最新に生成された複数のブロックのうちに、最も新しいタイムスタンプを有する。
成立した取引に応じて、ブロック生成モジュールNPT_Bは、ブロックヘッダを生成するために、ハッシングモジュールNPT_Hからの実質的に一意的なハッシュ値とタイムスタンプモジュールNPT_TSからの実質的に一意的なタイムスタンプとを組み入れる。例えば、最も新しい成立した取引に基づいて生成すべきブロックBLYに対して、ブロック生成モジュールNPT_Bはハッシュ値HSYとタイムスタンプTSYとを取り入れてブロックヘッダBHYを生成する。このように、ブロック生成モジュールNPT_BはブロックヘッダBH1、BH2…またはBHYをそれぞれに生成する。
また、成立した取引に応じて、ブロック生成モジュールNPT_Bは、対応するブロックヘッダと、成立した取引の内容と、少なくとも1つスマートコントラクトと、直前に生成したブロックの内容とを取り入れた新しいブロックを生成する。例えば、最も新しい成立した取引に応じて、ブロック生成モジュールNPT_BはブロックBLYを生成し、ブロックBLYは、ブロックヘッダBHYと、一時的なマスタノードメモリNTTからロードした少なくとも1つの1つスマートコントラクトと、直前のブロックBL(Y-1)の内容(簡潔に説明するために図示せず)とを含む。このように、最も新しく成立したブロックBLYは以前生成したブロックBL1、BL2…BL(Y-1)のすべての内容を含む。また、以前生成したブロックBL1、BL2…BL(Y-1)のすべてによって指される最新の成立した取引のすべては、最も新しく生成したブロックBLYを参照するだけで簡単に監査し得る。
最後に、ブロック生成モジュールNPT_Bは、ノードサーバNS1、NS2…NSXによって形成されたブロックチェーンに新しいブロックを追加し、ブロックチェーンを更新する。例えば、ブロック生成モジュールNPT_Bは、ブロックチェーンを更新するために、すでにブロックBL1、BL2…BL(Y-1)を含んでいるブロックチェーンに最も新しく生成したブロックBLYを追加する。
部屋在庫管理システム200と同様に、部屋在庫管理システム500は、部屋在庫管理システム200に関して言及した説明のように、実質的に同様な代替実施例、特性、および利点を有する。また、ノードサーバNS1、NS2…NSXの間のマスタノードサーバとされる責務の転換は、時々に(from time to time)、周期的に、またはランダム的に実行され得る。また、マスタノードサーバの指定は、ノードサーバNS1、NS2…NSXの間で、選挙、順次交替、または、マスタノードの責務についてバランスを取る所定ルールによって実行され得る。よって、ノードサーバNS1、NS2…NSXはそれぞれの負担についてバランスをよりよく取って望ましくない故障を回避することができる。
好ましい一実施例において、図8のフローチャートに示すように、本発明のブロックチェーンに基づく部屋在庫管理システム200を管理する方法は、以下のステップを含む。ステップS1は、ホテル部屋在庫管理システム200における複数のノードサーバの各ノードサーバ内に、所与のホテル部屋品目(item)に関するすべての成立した取引(successful transactions)を記憶するブロックチェーンを維持し、ホテル部屋在庫管理システム200は複数のノードサーバを有し、各ノードサーバはブロックチェーンの複写を維持する。ブロックチェーンは、時間順に単独にリンクされる複数のブロックYを含み、各ブロックは、いずれのブロック内のデータもすべての後続ブロックYを変更することなく変更できないように、その直前のブロックを暗号的に参照し、各ブロックは、所与のホテル部屋品目に関する成立した取引を記憶する。
ステップS2において、ホテル部屋在庫管理システム200に通信上結合されたコンピュータネットワークを介して部屋予約イベントを受信すると、複数のノードサーバの中のマスタノードサーバにより、部屋予約イベントを表す新しい取引をブロックチェーンに記憶されるベース(base)スマートコントラクトにサブミットすることによって、部屋予約イベントが成立可能かどうかを判断する。部屋予約イベントは、コンピュータネットワークを介して、ホテル、予約エンジン、オンライントラベルエージェンシー(OTA)、グローバルディストリビューションシステム、および/またはメタサーチエンジンから受信される。コンピュータネットワークを介したホテル部屋在庫管理システム200との通信は、少なくとも部分的に、リモートプロシージャコール(RPC)プロトコルに従う。取引プロキシサーバ260は、部屋在庫記録268を維持し、また、部屋在庫記録268が現在、ステップS2の前の部屋予約イベントを満たしているかどうかをチェックする(部屋在庫記録268および現在の部屋在庫は、前の部屋予約イベントに基づいて記録され、ブロックチェーンで処理された実際の部屋在庫と正確に等しくない可能性がある)。部屋在庫記録268が部屋予約イベントを満たすとき、ステップS2.1において、ベーススマートコントラクトは、部屋予約イベントの新しい取引を受信し、プログラムされた基準を実行し、プログラムされた基準は、ブロックチェーンからの所与のホテル部屋品目の実際の数量残高に基づいて、サブミットされた新しい取引が、所与のホテル部屋品目に関するブロックチェーンに現在記憶されているすべての既存の成立した取引に対する衝突(conflict)を表すかどうかを判断するように構成される。好ましい一実施例において、プログラムされた基準に基づいて、ベーススマートコントラクトは、ブロックチェーンの最新ブロックに記憶された現在の数量残高、所与のホテル部屋品目のホテル位置、所与のホテル部屋品目の部屋タイプ、および/または所与のホテル部屋品目に関する部屋予約イベントの時間範囲を決定して、サブミットされた新しい取引が何らかの衝突を引き起こすか否かを判断する。
取引プロキシサーバ260は、オラクル(oracle)とみなすことができる。それは、ブロックチェーンに基づく部屋在庫管理システム200がプライベートブロックチェーン上に確立されるとき、必ずしもオラクルではない。それにもかかわらず、ブロックチェーンに基づく部屋在庫管理システム200がイーサリアムなどのパブリックブロックチェーン上に確立される場合、取引プロキシサーバ260は、非中央集権化のためのコンセンサスアルゴリズムに基づくオラクルである必要がある場合がある。
ステップS3において、ベーススマートコントラクトに基づいて、部屋予約イベントを表す新しい取引が成立可能であると判断すると、マスタノードサーバにより、ブロックチェーンに付加される(attached)新しいブロックを作成する。新しいブロックは、部屋予約イベントを表す新しい取引がベーススマートコントラクトによって成立すると判断できるときのみ作成される。新しいブロックは、新しい取引を成立として表すデータを記憶し、上記新しいブロックの作成は、ホテル部屋在庫管理システム200における複数のノードサーバの各ノードサーバ内のブロックチェーンに新しいブロックを追加させる。サブミットされた取引が衝突を示す場合、この取引は失敗とみなされ、直ちに破棄される。ブロックチェーンのブロックYは、部屋ブッキング要求、部屋キャンセル要求、または部屋チェックアウト要求のうちの1つを有する成立した取引を含みんでもよく、成立した取引がいつ発行され/受領され(receipted)たかを登録するためのタイムスタンプを用いて時間順にリンクされる。成立した取引のすべてがブロックチェーンに記録され、変更できない。
ステップS4において、ベーススマートコントラクトは、所与のホテル部屋品目の現在の数量残高に関する、コンピュータネットワークまたは取引プロキシサーバ260を介して受信されたクエリ(query)に応答して、所与のホテル部屋品目の実際の数量残高を表すブロックチェーンの最新ブロック(または、マークル木などのアルゴリズムに従った対応するブロック)内のデータを、クエリの送信者に通信するように構成される。取引プロキシサーバ260は、PMSモジュール210との間で現在の数量残高をプッシュし、または同期させて、PMSモジュール210の部屋在庫記録218と同じである部屋在庫記録268の記録をつけ、それにより、OTAモジュールMおよびブッキングエンジンNは、部屋在庫の現在の数量残高にアクセスすることができる。
新しい取引に加えて、新しいブロックに記憶されたデータは、所与のホテル部屋品目に関するすべての前の成立した取引をさらに示す。新しいブロックに記憶されたデータは、一意的なブロックヘッダ、新しい取引を表す日付、および新しいブロックの直前のブロックの内容を表す暗号データを含む。一意的なブロックヘッダは、新しいブロックの一意的なハッシュ値、新しい取引が発行または受領されたときの時間を表す一意的なタイムスタンプを含む。所与のホテル部屋品目は、選択日付または選択期間における選択ホテル内の選択部屋タイプである。部屋予約イベントは、部屋予約/ブッキング要求、部屋チェックアウト要求、または部屋キャンセル要求とすることができる。
好ましい一実施例において、各ホテルは、その独自のブロックチェーンを有し、異なるホテルは、異なるブロックチェーンをそれぞれ有する。別の好ましい実施例において、すべての異なるホテルが、同じブロックチェーンを共有することができる。異なるホテル部屋品目からの別の成立した取引が、新しい取引と実質的に同時に生じていてもよく、異なるホテル部屋品目のすべての成立した取引が、ホテル部屋品目に関する新しい取引と実質的に同時にホテル部屋在庫管理システム200内で生じていてもよい。
ベーススマートコントラクトが部屋予約イベントを受信し、部屋予約イベントが部屋ブッキング要求であるとき、ベーススマートコントラクトのプログラムされた基準は、部屋ブッキング要求を実行した後、所与のホテル部屋品目の現在の数量残高が所定の最大閾値を上回るかどうかを検証する(部屋在庫が十分であることを保証するために)。ベーススマートコントラクトは実際の数量残高を計算し、マスタノードサーバは実際の数量残高、一意的なタイムスタンプ、一意的なハッシュ、および部屋ブッキング要求を新しいブロックにパックする。新しいブロックはマスタノードサーバのブロックチェーンにアペンドされ、他のノードサーバにブロードキャストされる。取引プロキシサーバ260は、新しいブロックがブロックチェーンに成功裏にアペンドされたとき、実際の数量残高に近い現在の数量残高に近づくように、その部屋在庫記録268をブロックチェーン内の新しいブロックから(ベーススマートコントラクトを介して)自動的に更新し、それにより、ユーザは、ホテルの部屋を予約/ブッキングすることができる。部屋在庫記録268(または、現在の数量残高)は、実際の数量残高と同じでない可能性があり、なぜならば、次の新しいブロックは、時々にブロードキャストされる可能性があり、取引プロキシサーバ260は、ベーススマートコントラクトを介してブロックチェーンに新たにアペンドされ、かつノードサーバの大部分によって確認されているブロックからの情報のみを取得できるためである。新しいブロックがブロックチェーンに追加された後、部屋在庫記録268の所与のホテル部屋品目の現在の数量残高は、新しい取引で指定される量だけ減らされる。マスタノードサーバによって生成された、異なるOTA(またはユーザ)からの同じまたは重複した部屋予約イベントを有する、いくつかの新しいブロックBL1Y、BL2Y…BLXYがある場合、ノードサーバの大部分によりブロードキャストされ、受け入れられたいくつかの新しいブロックBL1Y、BL2Y…BLXYのうちの1つが、最新の/最も新しいブロックになる。最新の/最も新しいブロックが確認されたときのみ、部屋ブッキング要求が完了し、他の新しいブロックは破棄される。同様に、部屋キャンセル要求および部屋チェックアウト要求は同じプロシージャで処理される。
部屋予約イベントが部屋キャンセル要求または部屋チェックアウト要求であるとき、プログラムされた基準は、部屋キャンセル要求または部屋チェックアウト要求を実行した後、所与のホテル部屋品目の現在の数量残高が所定の最小閾値を下回るかどうかを検証する。新しいブロックがブロックチェーンに追加された後、部屋在庫記録268の所与のホテル部屋品目の現在の数量残高は、新しい取引で指定される量だけ増やされる。好ましい一実施例において、所定の最小閾値はゼロである。すべての成立した取引が一意的なタイムスタンプと共にブロックチェーンに記録され、新しいブロックは新しいブロックの取引が成立するときのみブロックチェーンにアペンドされるため、ブロックチェーンに記録された現在の数量残高は信頼でき、信用できる。本発明のブロックチェーンに基づく部屋在庫管理システム200で生じるオーバーブッキング問題はない。
好ましい一実施例において、ブロックチェーンに基づく部屋在庫管理システム200を管理する方法は、監査プロシージャをさらに含み、監査プロシージャは、ブロックチェーン内の各ブロックのブロックヘッダを読み取って、各ブロックの直前のブロックの位置を特定することと、ブロックチェーン内の各ブロック内のタイムスタンプを確認して、各ブロックを開始した成立した取引を識別して、すべてのブロックY内のタイムスタンプが時間順に列挙されていることを検証することによってブロックチェーンの完全性を保証することに基づく。
所定ルールに基づいて、マスタノードサーバは、ホテル部屋在庫管理システム200における複数のノードサーバの中の特定のグループのノードサーバから選択され、マスタノードサーバは、部屋在庫管理システム200のすべてのノードサーバNS1-NSXの中の唯一のノードサーバであり、すべてのレコードおよび内容をパックして、新しいブロックBL1Y、BL2Y…BLXYを作成することができる。所定ルールは、順次順序、ランダムな順序、選挙、複数のノードサーバにポーリングする(polling)ことを含むコンセンサス、システムの現在のワークロードの比較、利用可能なストレージのサイズ、および/または新しい候補ノードサーバに対する既存のマスタノードサーバの送信帯域幅、のルールのうちの1つ以上に基づいてマスタノードサーバを選択することを含む。
動的価格設定
図9に示すフローチャートのステップS5に示すように、部屋予約イベントを有するブロックがブロックチェーンにアペンドされるとき、現在の数量残高は、成立した取引に従ってベーススマートコントラクトにより計算され、所定の変動(fluctuation)ルールに達し、所定の変動ルールは、所定の変動閾値(閾値より低い値または高い値とすることができる)、部屋在庫のブッキングされた部屋量に対するブッキングされていない部屋量の比率、所定の日付に近い現在の日付、または特定の期間を含む。所定の変動閾値は、残り部屋量/比率とすることができ、所定の日付は、特定の休日とすることができる。ベーススマートコントラクトは、変動スマートコントラクトをトリガする(triggers)。変動スマートコントラクトは、ベーススマートコントラクトの一部として統合し、あるいはブロックチェーンの異なるブロックに記憶された別のスマートコントラクトとしてモジュール化することができる。ベーススマートコントラクトに書き込まれた元の部屋価格は、価格割引パラメータまたは価格上昇パラメータを乗じられ、これらは、変動スマートコントラクトに予め書き込むことができる(例えば、部屋在庫記録268の現在の数量残高が、特定の期間内に部屋在庫/ストックの5分の1を有するとき、変動スマートコントラクトが、ベーススマートコントラクトによってトリガされ、次いで、これらの残りの部屋の価格は、売上を刺激するために50%オフなどの割引パラメータを乗じられる)。部屋予約イベントを有する取引が、現在の数量残高の変化を引き起こして変動スマートコントラクトを(ベーススマートコントラクトを介して)トリガするとき、取引プロキシサーバ260は、ベーススマートコントラクトまたは変動スマートコントラクトから調整された価格を取得し、ブロックチェーンの新しいブロックに示すことができる。割引/上昇パラメータは、変動スマートコントラクトに書き込む、あるいはブロックチェーンの別のブロックに書き込むことができる。変動スマートコントラクトは、ブロックチェーンの対応する1つのブロックに書き込まれた新しい割引/上昇パラメータを検索/追跡することができる。
部屋キャンセル要求または部屋チェックアウト要求などの部屋予約イベントを有する特定の成立した取引を実行した後、ベーススマートコントラクトは、新しい取引を処理しながら、所定の変動閾値から離れた値に達するように増加した実際の数量残高を計算し、ベーススマートコントラクトは、変動スマートコントラクトのトリガを停止し、元の部屋価格を使用し、元の部屋価格は、ベーススマートコントラクトに最初に書き込むことができる。部屋予約イベントの新しい取引を表す新しいブロックがブロックチェーンにアペンドされるとき、取引プロキシサーバ260は、ベーススマートコントラクト(およびマスタノードサーバ)によって新しいブロックから更新された部屋価格を取得する。
ステップS6において、所定の変動閾値および/または割引/上昇パラメータは、ベーススマートコントラクトを介してブロックチェーンにアペンドされる新しいブロックとして新しい取引をサブミットすることによって更新することができる。新しい取引は、更新される新しい所定の変動閾値および/または新しい割引/上昇パラメータを表す。ベーススマートコントラクトは、新しい所定の変動閾値および/または新しい割引/上昇パラメータの内容が確認されると、新しい取引を受け入れる。マスタノードサーバは、新しい取引をブロックチェーンにアペンドされる新しいブロックとしてパックする。ベーススマートコントラクトが現在の数量残高を計算し、残りの部屋量を取得すると、ベーススマートコントラクトは、新しい所定の変動閾値をチェックして、現在の数量残高が新しい所定の変動閾値の範囲内に入るかを確認する。ステップS7において、プログラムされた基準が、所与のホテル部屋品目の現在の数量残高に関してサブミットされた新しい取引を判断するように構成されるとき、ベース/変動スマートコントラクトは、所定の変動閾値が新たに更新されるかどうかをチェックする。好ましい一実施例において、変動スマートコントラクトは、部屋価格が動的価格設定に基づいて新しく、正しいことを保証するために、変動スマートコントラクトがトリガされるときに、割引/上昇パラメータが新しいかどうかを(マークル木を介して対応するブロックを検索することにより)チェックする。ステップS8において、変動スマートコントラクトは(あるいは、ベーススマートコントラクトを介して)、市場価格が所与のホテル部屋品目に対して調整されるかどうかについての市場価格に関するクエリに応答することができる。変動スマートコントラクトは、市場が調整される場合、クエリの送信者に対して、ブロックチェーンの新しいブロック(または対応するブロック)から、調整された市場価格を表すデータを(マークル木アルゴリズムを用いて)検索することができる(ステップS8.1)。市場価格が調整されないとき、ベーススマートコントラクトは、クエリの送信者に対して、ベーススマートコントラクト自体から、所与のホテル部屋品目の元の価格を提示するデータを検索することができる(ステップS8.2)。本発明のスマートコントラクトの動的価格設定はブロックチェーンに記録され、公開で読むことが可能であり、顧客およびトラベルエージェントにとって公平である。ブロックチェーンの性質に基づいて、市場価格は、市場メカニズムに基づく価格を真に反映するように、自動的に調整され、誰かにより秘密裏に操作されることはない。
別の好ましい実施例において、本発明のブロックチェーンに基づく部屋在庫管理システム200は、複数のノードサーバ、ベーススマートコントラクト、およびマスタノードサーバを含む。複数のノードサーバの各ノードサーバは、所与のホテル部屋品目に関するすべての成立した取引を記憶するブロックチェーンを維持するように構成される。ブロックチェーンは、時間順に単独にリンクされる複数のブロックYを含む。各ブロックは、いずれのブロック内のデータもすべての後続ブロックを変更することなく変更できないように、その直前のブロックを暗号的に参照する。各ブロックは、所与のホテル部屋品目に関する成立した取引を記憶する。ベーススマートコントラクトは、ブロックチェーンに記憶される。ベーススマートコントラクトは、所与のホテル部屋品目の現在の数量残高に基づいて、サブミットされた取引が、所与のホテル部屋品目に関するブロックチェーンに現在記憶されているすべての既存の成立した取引に対する衝突を表すかどうかを判断するように構成された、プログラムされた基準を含む。マスタノードサーバは、部屋在庫管理システム200に通信上結合されたコンピュータネットワークから部屋予約イベントを受信し;部屋予約イベントを表す新しい取引をベーススマートコントラクトにサブミットすることによって、部屋予約イベントが成立可能かどうかを判断し;ベーススマートコントラクトに基づいて、部屋予約イベントを表す新しい取引が成立可能であると判断すると、ブロックチェーンに付加される新しいブロックを作成する;ように構成される。新しいブロックは、新しい取引を成立として表すデータを記憶する。新しいブロックの作成は、部屋在庫管理システム200における複数のノードサーバの各ノードサーバ内のブロックチェーンに新しいブロックを追加させる。ベーススマートコントラクトは、所与のホテル部屋品目の現在の数量残高、特定の予約日付、または特定の期間に基づいて所与のホテル部屋品目の市場価格を調整し、コンピュータネットワークを介して所与のホテル部屋品目のエージェントまたは管理者との間で所与のホテル部屋品目の調整された市場価格に関して通信するために、変動スマートコントラクトをトリガすることができる。
別の好ましい実施例において、本発明の非一時的コンピュータ読取可能媒体は、複数の命令を含み、複数の命令は、コンピュータ化されたホテル部屋在庫管理システム200の1つ以上のプロセッサにより実行されると、システム200に:ホテル部屋在庫管理システム200における複数のノードサーバの各ノードサーバ内に、所与のホテル部屋品目に関するすべての成立した取引を記憶するブロックチェーンを維持し、ブロックチェーンは、所与のホテル部屋品目に関する成立した取引を記憶し、ブロックチェーンは、時間順に単独にリンクされる複数のブロックYを含み、各ブロックは、いずれのブロック内のデータもすべての後続ブロックを変更することなく変更できないように、その直前のブロックを暗号的に参照し、各ブロックは、所与のホテル部屋品目に関する成立した取引を記憶し;ホテル部屋在庫管理システム200に通信上結合されたコンピュータネットワークから部屋の予約イベントを受信すると、複数のノードサーバの中のマスタノードサーバにより、部屋予約イベントを表す新しい取引をブロックチェーンに記憶されるベーススマートコントラクトにサブミットすることによって、部屋の予約イベントが成立可能かどうかを判断し、ベーススマートコントラクトは、所与のホテル部屋品目の現在の数量残高に基づいて、サブミットされた取引が、所与のホテル部屋品目に関するブロックチェーンに現在記憶されているすべての既存の成立した取引に対する衝突を表すかどうかを判断するように構成された、プログラムされた基準を含み;スマートコントラクトに基づいて、部屋予約イベントを表す新しい取引が成立可能であると判断すると、マスタノードサーバにより、ブロックチェーンに付加される新しいブロックを作成し、新しいブロックは、新しい取引を成立として表すデータを記憶し、上記新しいブロックの作成は、ホテル部屋在庫管理システム200における複数のノードサーバの各ノードサーバ内のブロックチェーンに新しいブロックを追加させる;ことをさせる。ベーススマートコントラクトはまた、所与のホテル部屋品目の市場価格を調整するために変動スマートコントラクトをトリガすることもできる。
当業者は、アプリケーションに関連する検索方法が、前に詳細に説明した、アプリのコンテキストに対する検索方法と同様であることを理解する。よって、アプリに関連するすべての実施例、方法、システム、および要素はアプリケーションに適用される。