IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ エヌチェーン ホールディングス リミテッドの特許一覧

特表2023-537698ブロックチェーンネットワークとの接続
<>
  • 特表-ブロックチェーンネットワークとの接続 図1
  • 特表-ブロックチェーンネットワークとの接続 図2
  • 特表-ブロックチェーンネットワークとの接続 図3A
  • 特表-ブロックチェーンネットワークとの接続 図3B
  • 特表-ブロックチェーンネットワークとの接続 図4
  • 特表-ブロックチェーンネットワークとの接続 図5
  • 特表-ブロックチェーンネットワークとの接続 図6
  • 特表-ブロックチェーンネットワークとの接続 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-09-05
(54)【発明の名称】ブロックチェーンネットワークとの接続
(51)【国際特許分類】
   H04L 67/02 20220101AFI20230829BHJP
   H04L 51/00 20220101ALI20230829BHJP
   G06Q 20/38 20120101ALI20230829BHJP
【FI】
H04L67/02
H04L51/00
G06Q20/38 316
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023506523
(86)(22)【出願日】2021-07-05
(85)【翻訳文提出日】2023-01-31
(86)【国際出願番号】 EP2021068457
(87)【国際公開番号】W WO2022028791
(87)【国際公開日】2022-02-10
(31)【優先権主張番号】2012134.9
(32)【優先日】2020-08-05
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVASCRIPT
(71)【出願人】
【識別番号】318001991
【氏名又は名称】エヌチェーン ライセンシング アーゲー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】タータン,クローイー
(72)【発明者】
【氏名】ライト,クレイグ,スティーヴン
【テーマコード(参考)】
5L055
【Fターム(参考)】
5L055AA71
(57)【要約】
ブロックチェーントランザクションをブロックチェーンネットワークに送信する、コンピュータが実施する方法であって、前記方法は、第1パーティにより実行され、ブロックチェーントランザクションの少なくとも部分を、インターネットサーバによりホスティングされるインターネットサービスを介して前記インターネットサーバへ送信するステップであって、前記インターネットサーバは、前記ブロックチェーンネットワークの1つ以上のノードに結合し、ブロックチェーントランザクションをブロックチェーンの前記1つ以上のノードに送信するよう構成され、前記送信されたブロックチェーントランザクションは、前記ブロックチェーントランザクションの前記少なくとも部分を含む、ステップを含む方法。
【特許請求の範囲】
【請求項1】
ブロックチェーントランザクションをブロックチェーンネットワークに送信する、コンピュータが実施する方法であって、前記方法は、第1パーティにより実行され、
ブロックチェーントランザクションの少なくとも部分を、インターネットサーバによりホスティングされるインターネットサービスを介して前記インターネットサーバへ送信するステップであって、前記インターネットサーバは、前記ブロックチェーンネットワークの1つ以上のノードに結合し、ブロックチェーントランザクションをブロックチェーンの前記1つ以上のノードに送信するよう構成され、前記送信されたブロックチェーントランザクションは、前記ブロックチェーントランザクションの前記少なくとも部分を含む、ステップを含む方法。
【請求項2】
前記インターネットサーバはWebサーバであり、前記インターネットサービスはWebサービスである、請求項1に記載の方法。
【請求項3】
前記ブロックチェーントランザクションの前記少なくとも部分は、ハイパーテキスト転送プロトコル(HTTP)を用いて前記Webサーバに送信される、請求項2に記載の方法。
【請求項4】
前記インターネットサーバはメールサーバであり、前記インターネットサービスはメールサービスである、請求項1に記載の方法。
【請求項5】
前記ブロックチェーントランザクションの前記少なくとも部分は、簡易メール転送プロトコル(SMTP)を用いて前記メールサーバに送信される、請求項4に記載の方法。
【請求項6】
前記インターネットサービスはデータを入力するための入力フィールドを含み、
前記方法は、前記入力フィールドを介して前記ブロックチェーントランザクションの前記少なくとも部分を入力するステップを含む請求項1~5のいずれかに記載の方法。
【請求項7】
前記ブロックチェーントランザクションの前記少なくとも部分を生成するステップを含む請求項1~6のいずれかに記載の方法。
【請求項8】
前記ブロックチェーントランザクションの前記少なくとも部分は第2パーティにより生成される、請求項1~6のいずれかに記載の方法。
【請求項9】
前記ブロックチェーントランザクションの前記少なくとも部分は、前記第1パーティ及び/又は前記第2パーティにより生成された各々のデジタル署名を含む、請求項8に記載の方法。
【請求項10】
前記ブロックチェーントランザクションの前記少なくとも部分は完全なブロックチェーントランザクションである、請求項1~9のいずれかに記載の方法。
【請求項11】
前記インターネットサービスを介して前記インターネットサーバから要求メッセージを受信するステップを含み、前記前記ブロックチェーントランザクションの前記少なくとも部分を送信するステップは、前記要求メッセージの受信に応答し、前記要求メッセージは、
前のブロックチェーントランザクションの未使用トランザクションアウトプットを前記第2パーティに割り当てる要求であって、前記要求は前記第2パーティから生じる、要求、及び/又は、
前記第2パーティにより生成された前記ブロックチェーントランザクションの前記少なくとも部分、
を含む、請求項8に記載の方法。
【請求項12】
前記インターネットサービスを介して前記インターネットサーバに要求メッセージを送信するステップを含み、前記ブロックチェーントランザクションの前記少なくとも部分を送信するステップは、前記要求メッセージに対する応答の受信に応答し、前記要求メッセージは、
前のブロックチェーントランザクションの未使用トランザクションアウトプットを前記第1パーティに割り当てる要求であって、前記要求は前記第1パーティから生じる、要求、及び/又は、
前記第1パーティにより生成された前記ブロックチェーントランザクションの前記少なくとも部分、
を含む、請求項1~10のいずれかに記載の方法。
【請求項13】
前記インターネットサービスを介して前記インターネットサーバから更新メッセージを受信するステップを含み、前記更新メッセージは、以下:
前記ブロックチェーントランザクション、
前記ブロックチェーントランザクションが前記ブロックチェーンのブロックの中で公表されたことの指示、及び/又は、
前記ブロックチェーントランザクションが前記ブロックチェーンの前記ブロックに含まれていることを検証するためのMerkleパス、
のうちの少なくとも1つを含む、請求項1~12のいずれかに記載の方法。
【請求項14】
前記インターネットサービスを介して前記インターネットサーバから、前記第1パーティに関連付けられたコントラクトのリストを受信するステップを含み、前記リスト内のコントラクト毎に、前記リストは、該コントラクトに関連付けられた各々の1つ以上のブロックチェーンアドレスを含む、請求項1~13のいずれかに記載の方法。
【請求項15】
前記ブロックチェーントランザクションのアウトプットは、前記コントラクトのうちの1つに関連付けられたブロックチェーンアドレスにロックされる、請求項14に記載の方法。
【請求項16】
ブロックチェーントランザクションをブロックチェーンネットワークに送信する、コンピュータが実施する方法であって、前記方法は、1つ以上のブロックチェーンノードに結合するよう構成されるインターネットサーバにより実行され、
ブロックチェーントランザクションの少なくとも部分を、前記インターネットサーバによりホスティングされるインターネットサービスを介して第1パーティから受信するステップと、
ブロックチェーントランザクションを前記1つ以上のブロックチェーンノードに送信するステップであって、前記ブロックチェーントランザクションは、前記ブロックチェーントランザクションの前記少なくとも部分を含む、ステップと、
を含む方法。
【請求項17】
前記インターネットサーバはWebサーバであり、前記インターネットサービスはWebサービスである、請求項16に記載の方法。
【請求項18】
前記ブロックチェーントランザクションの前記少なくとも部分は、ハイパーテキスト転送プロトコル(HTTP)を用いて前記第1パーティから受信される、請求項17に記載の方法。
【請求項19】
前記インターネットサーバはメールサーバであり、前記インターネットサービスはメールサービスである、請求項16に記載の方法。
【請求項20】
前記ブロックチェーントランザクションの前記少なくとも部分は、簡易メール転送プロトコル(SMTP)を用いて前記第1パーティから受信される、請求項19に記載の方法。
【請求項21】
前記ブロックチェーントランザクションの前記少なくとも部分を用いて、前記ブロックチェーントランザクションを生成するステップを含む請求項16~20のいずれかに記載の方法。
【請求項22】
前記インターネットサービスを介して第2パーティから要求メッセージを受信するステップと、
前記インターネットサービスを介して前記第1パーティに前記要求メッセージを送信するステップと、
を含み、前記要求メッセージは、
前のブロックチェーントランザクションの未使用トランザクションアウトプットを前記第2パーティに割り当てる要求、及び/又は、
前記第2パーティにより生成された前記ブロックチェーントランザクションの前記少なくとも部分、
を含む、請求項16~21のいずれかに記載の方法。
【請求項23】
前記インターネットサービスを介して前記第1パーティに更新メッセージを送信するステップを含み、前記更新メッセージは、以下:
前記ブロックチェーントランザクション、
前記ブロックチェーントランザクションがブロックチェーンのブロックの中で公表されたことの指示、及び/又は、
前記ブロックチェーントランザクションが前記ブロックチェーンの前記ブロックに含まれていることを検証するためのMerkleパス、
のうちの少なくとも1つを含む、請求項16~22のいずれかに記載の方法。
【請求項24】
前記要求メッセージはHTTPを用いて送信される、請求項17に従属する請求項22に記載の方法。
【請求項25】
前記更新メッセージはHTTPを用いて送信される、請求項17に従属する請求項23に記載の方法。
【請求項26】
前記要求メッセージはSMTPを用いて送信される、請求項19に従属する請求項22に記載の方法。
【請求項27】
前記更新メッセージはSMTPを用いて送信される、請求項19に従属する請求項23に記載の方法。
【請求項28】
前記第1パーティに関連付けられたコントラクトのリストを維持するステップであって、前記コントラクトのリストは、コントラクト毎に、該コントラクトに関連付けられた1つ以上のブロックチェーンアドレスを含む、ステップと、
前記第1パーティに前記コントラクトのリストを送信するステップと、
を含む請求項16~27のいずれかに記載の方法。
【請求項29】
ブロックチェーンネットワークの1つ以上のブロックチェーンノードを発見する、コンピュータが実施する方法であって、インターネットサーバは識別子のリストを維持し、各識別子は、各々のブロックチェーンノードに関連付けられ、前記方法は、
前記インターネットサーバから1つ以上の識別子を取得するステップであって、各識別子は各々のブロックチェーンノードに関連付けられる、ステップと、
前記取得した1つ以上の識別子を用いて、前記関連付けられた1つ以上のブロックチェーンノードに結合するステップと、
を含む方法。
【請求項30】
前記方法は、前記1つ以上のブロックチェーンノード以外の別のブロックチェーンノードにより実行される、請求項29に記載の方法。
【請求項31】
コンピュータ機器であって、
1つ以上のメモリユニットを含むメモリと、
1つ以上の処理ユニットを含む処理機器と、
を含み、
前記メモリは、前記処理機器上で実行するよう構成されるコードを格納し、前記コードは前記処理機器上で実行すると請求項1~30のいずれかに記載の方法を実行するよう構成される、コンピュータ機器。
【請求項32】
コンピュータ可読記憶装置上に具現化され、請求項31に記載のコンピュータ機器上で実行すると請求項1~30のいずれかに記載の方法を実行するよう構成される、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ブロックチェーンネットワークへのユーザ(又は他のエンティティ)の接続性を向上することに関連する。
【背景技術】
【0002】
ブロックチェーンとは、分散型ピアツーピア(P2P)ネットワーク(以下で「ブロックチェーンネットワーク」とも呼ばれる)内の複数のノードの各々において、ブロックチェーンの重複コピーが維持され広く公表される、分散データ構造の形態を指す。ブロックチェーンは、データのブロックのチェーンを含み、各ブロックは1つ以上のトランザクションを含む。所謂「コインベーストランザクション」以外の各トランザクションは、シーケンス内の先行するトランザクションをポイントする。シーケンスは、1つ以上のコインベーストランザクションまで遡る1つ以上のブロックに跨がってよい。コインベーストランザクションは以下で更に議論される。ブロックチェーンネットワークに提出されるトランザクションは、新しいブロックに含まれる。新しいブロックは、「マイニング」として知られる処理により生成される。「マイニング」は、複数のノードの各々が「proof-of-work」を実行するために競争する、つまり、ブロックチェーンの新しいブロックに含まれることを待っている順序付き及び妥当性確認済みの保留中のトランザクションの定義されたセットの提示に基づき、暗号パズルを解くことを含む。留意すべきことに、ブロックチェーンは幾つかのノードにおいてプルーニング(pruned)されてよく、ブロックの公開はブロックヘッダのみの公開を通じて達成できる。
【0003】
ブロックチェーン内のトランザクションは、以下の目的:デジタルアセット(つまり、多数のデジタルトークン)を運ぶこと、仮想台帳又はレジストリの中のエントリのセットを順序付けること、タイムスタンプエントリを受信し処理すること、及び/又はインデックスポインタを時系列にすること、のうちの1つ以上のために使用できる。ブロックチェーンの上に追加の機能をレイヤ化するために、ブロックチェーンを利用することもできる。例えば、ブロックチェーンプロトコルは、トランザクション内のデータに追加のユーザデータ又はインデックスを格納できるようにし得る。単一トランザクション内に格納できる最大データ容量に対する予め指定された限度は存在しない。従って、より複雑なデータを組み込むことができる。例えば、これは、ブロックチェーン内に電子文書(electronic document)、或いはオーディオ若しくはビデオデータを格納するために使用され得る。
【0004】
ブロックチェーンネットワークのノード(「マイナー」と呼ばれることがある)は、以下に詳細に説明する分散型トランザクション登録及び検証処理を実行する。つまり、この処理の間、ノードは、トランザクションの妥当性確認を行い、それらをブロックテンプレイトに挿入し、それに対して有効なproof-of-work解を特定しようと試みる。有効な解が見付かると、新しいブロックはネットワークの他のノードへと伝播され、それにより、各ノードがブロックチェーンに新しいブロックを記録できるようになる。トランザクションをブロックチェーンに記録させるために、ユーザ(例えば、ブロックチェーンクライアントアプリケーション)は、伝播させるために、ネットワークのノードの1つにトランザクションを送信する。トランザクションを受信したノードは、proof-of-work解を見付けるために競争し、妥当性確認されたトランザクションを新しいブロックに組み込む。各ノードは、トランザクションが有効であるための1つ以上の条件を含む同じノードプロトコルを実施するよう構成される。無効なトランザクションは、伝播されず、ブロックに組み込まれることもない。トランザクションが妥当性確認され、それによってブロックチェーンに受け入れられたと仮定すると、(任意のユーザデータを含む)トランザクションは、従って、不変の公開レコードとしてブロックチェーンネットワークの各ノードに登録されインデックスされたままである。
【0005】
最新のブロックを生成するためにproof-of-workパズルを解くことに成功したノードは、標準的に、デジタルアセットの新しい量、つまりトークンの数を生成する「コインベーストランザクション(coinbase transaction)」と呼ばれる新しいトランザクションにより報酬を受ける。無効なトランザクションの検出及び拒否は、ネットワークのエージェントとして動作し及び不法行為を報告及び阻止するよう奨励される競合ノードの動作により実施される。情報の広範な公開により、ユーザはノードの性能を継続的に監査できる。単なるブロックヘッダの公開により、参加者はブロックチェーンの現下の完全性を保証できる。
【0006】
「アウトプットベースの」モデル(UTXOに基づくモデルと呼ばれることもある)では、所与のトランザクションのデータ構造は、1つ以上のインプット及び1つ以上のアウトプットを含む。任意の使用可能アウトプットは、先行するトランザクションシーケンスから導出可能なデジタルアセットの量を指定する要素を含む。使用可能アウトプットは、時にUTXO(unspent transaction output、未使用トランザクションアウトプット)と呼ばれる。アウトプットは、アウトプットの将来の償還(redemption)のための条件を指定するロックスクリプトを更に含んでよい。ロックスクリプトは、デジタルトークン又はアセットを妥当性確認し及び移転するために必要な条件を定義する述部(predicate)である。(コインベーストランザクション以外の)トランザクションの各インプットは、先行するトランザクション内のそのようなアウトプットへのポインタ(つまり参照)を含み、ポイントされたアウトプットのロックスクリプトをアンロックするためのアンロックスクリプトを更に含んでよい。従って、トランザクションのペアを考えるとき、それらを、第1トランザクション及び第2トランザクション(又は「ターゲット」トランザクション)と呼ぶ。第1トランザクションは、デジタルアセットの量を指定する、及びアウトプットをアンロックする1つ以上の条件を定義するロックスクリプトを含む、少なくとも1つのアウトプットを含む。第2ターゲットトランザクションは、第1トランザクションのアウトプットへのポインタと、第1トランザクションのアウトプットをアンロックするためのアンロックスクリプトとを含む、少なくとも1つのインプットを含む。
【0007】
このようなモデルでは、第2ターゲットトランザクションがブロックチェーンで伝播され記録されるブロックチェーンネットワークに送られるとき、各ノードで適用される有効性の基準の1つは、アンロックスクリプトが第1トランザクションのロックスクリプトで定義された1つ以上の条件のすべてを満たすことである。もう1つは、第1トランザクションのアウトプットが、別の前の有効なトランザクションによって未だ償還されていないことである。これらの条件のうちのいずれかに従いターゲットトランザクションが無効であると分かった任意のノードは、該トランザクションを(有効なトランザクションとして)伝播させず(しかし、無効なトランザクションを登録する場合がある)、ブロックチェーンに記録させるために新しいブロックに含めることもしない。
【0008】
トランザクションモデルの代替のタイプは、アカウントに基づくモデルである。この場合、各トランザクションは、過去の一連のトランザクションにおいて、先行するトランザクションのUTXOに戻って参照することによって移転される量を定義するのではなく、絶対的な口座(アカウント)残高を参照することによって移転される。すべてのアカウントの現在の状態は、ブロックチェーンと分離してノードによって保管され、絶えず更新される。
【発明の概要】
【0009】
ユーザ(及び他の種類のパーティ、例えば、組織、自律エンティティ、等)は、通常、ブロックチェーンネットワークの1つ以上のブロックチェーンノードに直接接続する。つまり、クライアントアプリケーションを操作するユーザは、例えばネットワークにトランザクションを提出し、ブロックチェーンからトランザクションを取得し、特定の未使用トランザクションアウトプット(unspent transaction output (UTXO))の存在を問い合わせる、等のためにブロックチェーンノードに接続できる。これらの操作を実行するために、ユーザとノードとの間の信頼できる接続が必要である。従って、ブロックチェーンネットワークへの信頼できる接続が維持されることを保証するために、ユーザとノードとの間の接続性を引き上げることが望ましい。
【0010】
例えば、例えば商品又はサービスの代償として、軽量クライアントアプリケーションを操作しているユーザ(例えば、Alice)がトランザクションをブロックチェーンネットワークに提出しようとする、又は別のユーザ(例えば、Bob)がAliceに割り当てようとしている1つ以上のUTXOの存在を問い合わせるシナリオを考える。Aliceがブロックチェーンネットワークに接続できない場合、彼女はトランザクションを送信することができないか、又は彼女は、既に妥当性確認されたトランザクションにより参照されているUTXOの二重支払いをBobが試みていないことを検証できない場合がある。勿論、これは、追加情報が利用可能かどうかに依存して、UTXOを検証する他の情報(例えば、UTXOのMerkleパス)が存在するので、場合による。Aliceは、ノード自体への接続による問題に起因して、又はAliceが通常接続するノードがネットワーク上でノードとしてもはや動作しないために、ブロックチェーンノードに接続できない場合がある。
【0011】
本明細書に開示される一態様によると、ブロックチェーントランザクションをブロックチェーンネットワークに送信する、コンピュータが実施する方法であって、前記方法は、第1パーティにより実行され、
ブロックチェーントランザクションの少なくとも部分を、インターネットサーバによりホスティングされるインターネットサービスを介して前記インターネットサーバへ送信するステップであって、前記インターネットサーバは、前記ブロックチェーンネットワークの1つ以上のノードに結合し、ブロックチェーントランザクションをブロックチェーンの前記1つ以上のノードに送信するよう構成され、前記送信されたブロックチェーントランザクションは、前記ブロックチェーントランザクションの前記少なくとも部分を含む、ステップを含む方法が提供される。
【0012】
本明細書に開示される別の態様によると、ブロックチェーントランザクションをブロックチェーンネットワークに送信する、コンピュータが実施する方法であって、前記方法は、1つ以上のブロックチェーンノードに結合するよう構成されるインターネットサーバにより実行され、
ブロックチェーントランザクションの少なくとも部分を、インターネットサーバによりホスティングされるインターネットサービスを介して第1パーティから受信するステップと、
ブロックチェーントランザクションを前記1つ以上のブロックチェーンノードに送信するステップであって、前記ブロックチェーントランザクションは、前記ブロックチェーントランザクションの前記少なくとも部分を含む、ステップと、
を含む方法が提供される。
【0013】
第1パーティ(例えば、Alice)は、1つ以上のブロックチェーンノードに接続されるインターネットサーバ(例えば、Webサーバ又はメールサーバ)への接続を形成する。従って、Aliceは、ブロックチェーンネットワークに直接接続される必要がなく、代わりに、1つ以上のノードへの永久的な接続を有するインターネットサーバを利用できる。インターネットサーバは、Aliceとブロックチェーンネットワークとの間のゲートウェイとして動作する。Aliceはネットワークへの彼女の接続に頼る必要がなく、Aliceは異なるノードへの多数の各々の接続を維持できるインターネットサーバを利用できる。サーバが1つ以上の特定の接続に伴う問題を経験している場合、又はノードのうちの1つ以上がブロックチェーンネットワークから脱落している場合、サーバは、代わりに、1つ以上の異なるノードを介してAliceのトランザクションをネットワークへとルーティングできる。
【0014】
幾つかの例では、インターネットサーバは、例えば所与の期間に渡り同じノードへの接続を維持することにより、又はその期間に渡り異なるポイントで異なるノードへの接続を維持することにより、少なくとも1つのノードを介してブロックチェーンネットワークへの永久的な接続を維持することができる。
【0015】
幾つかの実施形態では、インターネットサーバは、ソーシャルメディアサイトなどのようなWebページであってよい。Webページは、トランザクションの1つ以上のコンポーネント、例えばAliceの秘密鍵を用いて生成された署名を受信し又は生成するよう構成される埋め込み機能を有してよい。トランザクションのコンポーネント又は完成したトランザクションは、次に、Webページをホスティングするサーバへ送信され、次にサーバは該トランザクションをブロックチェーンネットワークへ転送する。特定の設定に依存して、サーバは、トランザクションテンプレイトにWebページにより供給された又は生成されたコンポーネントを入力することにより、トランザクション自体を生成してもよい。
【0016】
他の実施形態では、インターネットサービスはメールサービス、つまり電子メールアプリケーションであってよい。電子メールアプリケーションは、ユーザがアプリケーション内からブロックチェーンネットワークと相互作用できるようにする埋め込み機能を有してもよい。以下に詳述するように、電子メールアプリケーションをホスティングするメールサーバは、ブロックチェーンクライアントアプリケーションも操作するAliceにリンクされるか又はAliceに知られているピア(コントラクト)のリストを維持してよい。各々の公開鍵又はブロックチェーンアドレス(例えば、公開鍵ハッシュ)は、Aliceのコントラクトと関連付けられて格納されてよい。これは、Aliceに、彼女のコントラクトのうちのどれに、彼女が彼女のデジタルアセットを割り当てることができるか、及びそのようにするために使用すべき彼女のコントラクトのブロックチェーンアドレスを示すために使用できる。これらの例は、上述のWebページの実装に同様に適用されることに留意する。
【0017】
本明細書に開示される別の態様によると、ブロックチェーンネットワークの1つ以上のブロックチェーンノードを発見する、コンピュータが実施する方法であって、インターネットサーバは識別子のリストを維持し、各識別子は、各々のブロックチェーンノードに関連付けられ、前記方法は、
前記インターネットサーバから1つ以上の識別子を取得するステップであって、各識別子は各々のブロックチェーンノードに関連付けられる、ステップと、
前記取得した1つ以上の識別子を用いて、前記関連付けられた1つ以上のブロックチェーンノードに結合するステップと、
を含む方法が提供される。
【図面の簡単な説明】
【0018】
本開示の実施形態の理解を助け、そのような実施形態がどのように実施され得るかを示すために、例としてのみ以下の添付の図面を参照する:
図1】ブロックチェーンを実装するためのシステムの概略ブロック図である。
図2】ブロックチェーンに記録されるトランザクションの幾つかの例を概略的に示す。
図3A】クライアントアプリケーションの概略ブロック図である。
図3B図3Aのクライアントアプリケーションにより提示され得る例示的なユーザインタフェースの概略的模擬表示である。
図4】本発明の実施形態を実装するための例示的なシステムの概略ブロック図である。
図5】本発明の実施形態による、ユーザからブロックチェーンネットワークへのブロックチェーントランザクションのフローを概略的に示す。
図6】本発明の例示的な実施形態を示すシーケンス図である。
図7】本発明の別の例示的な実施形態を示すシーケンス図である。
【発明を実施するための形態】
【0019】
例示的なシステムの概要
図1は、ブロックチェーン150を実装するための例示的なシステム100を示す。システム100は、典型的にはインターネットのような広域インターネットワークであるパケット交換ネットワーク101を含んでよい。パケット交換ネットワーク101は、パケット交換ネットワーク101内にピアツーピア(P2P)ネットワーク106を形成するように配置され得る複数のブロックチェーンノード104を含む。図示されないが、ブロックチェーンノード104は、ほぼ完全なグラフとして配置されてよい。各ブロックチェーンノード104は、従って、他のブロックチェーンノード104と高度に結合される。
【0020】
各ブロックチェーンノード104は、異なるピアに属するノード104のうちの異なるノード104を有す、ピアのコンピュータ装置を含む。各ブロックチェーンノード104は、1つ以上のプロセッサ、例えば、1つ以上の中央処理装置(CPU)、アクセラレータプロセッサ、特定用途向けプロセッサ、及び/又はフィールドプログラマブルゲートアレイ(FPGA)、及び特定用途向け集積回路(ASIC)のような他の機器を含む処理装置を含む。各ノードはまた、メモリ、すなわち、非一時的コンピュータ読み取り可能媒体又は媒体の形態のコンピュータ読み取り可能記憶装置を備える。メモリは、1つ以上のメモリ媒体、例えば、ハードディスクなどの磁気媒体、固体ドライブ(solid-state drive (SSD))、フラッシュメモリ又はEEPROMなどの電子媒体、及び/又は光ディスクドライブなどの光学的媒体を使用する1つ以上のメモリユニットを含んでもよい。
【0021】
ブロックチェーン150は、データのブロック151のチェーンを含み、ブロックチェーン150の各々のコピーは、分散型又はブロックチェーンネットワーク106内の複数のノード104の各々において維持される。上述のように、ブロックチェーン150のコピーを維持することは、必ずしも、ブロックチェーン150全体を格納することを意味しない。代わりに、各ブロックチェーンノード150が各ブロック151のブロックヘッダ(後述する)を格納する限り、ブロックチェーン150からデータを取り除くことができる。チェーン内の各ブロック151は、1つ以上のトランザクション152を含み、ここでは、この文脈におけるトランザクションは、一種のデータ構造を参照する。データ構造の性質は、トランザクションモデル又はスキームの一部として使用されるトランザクションプロトコルのタイプに依存する。所与のブロックチェーンは、全体を通して、1つの特定のトランザクションプロトコルを使用する。1つの一般的なタイプのトランザクションプロトコルでは、各トランザクション152のデータ構造は、少なくとも1つのインプット及び少なくとも1つのアウトプットを含む。各アウトプットは、資産としてのデジタルアセットの量を表す量を指定する。この例では、アウトプットが暗号的にロックされているのはユーザ103である(ロックを解除し、それによって償還又は使用するために、そのユーザの署名又は他の解を必要とする)。各インプットは、先行するトランザクション152のアウトプットを指し示し、それによって、トランザクションをリンクする。
【0022】
各ブロック151は、また、ブロック151への逐次的順序を定義するように、チェーン内の先に生成されたブロック151を遡ってポイントするブロックポインタ155を含む。(コインベーストランザクション以外の)各トランザクション152は、トランザクションのシーケンスに順序を定義するために、前のトランザクションへのポインタを含む(注:トランザクション152のシーケンスは、分岐することが許される)。ブロック151のチェーンは、チェーンの第1ブロックであったジェネシスブロック(genesis block (Gb))153にまで戻る。チェーン150の初期に1つ以上のオリジナルトランザクション152は、先行するトランザクションではなくジェネシスブロック153を指し示した。
【0023】
ブロックチェーンノード104の各々はトランザクション152を他のブロックチェーンノード104へ転送し、それにより、ネットワーク106に渡りトランザクション152を伝播させるよう構成される。各ブロックチェーンノード104は、ブロック151を生成し、同じブロックチェーン150の各々のコピーを自身の各々のメモリに格納するよう構成される。各ブロックチェーンノード104はまた、ブロック151に組み込まれるのを待つトランザクション152の順序付きセット(又はプール)154を維持する。順序付きプール154は、時に「メモプール(mempool)」と呼ばれる。この用語は、本願明細書では、任意の特定のブロックチェーン、プロトコル、又はモデルに限定されない。それは、ノード104が有効であるとして受け付けた、及びノード104が同じアウトプットを使用しようと試みる他のトランザクションを受け付けないよう義務付けられたトランザクションの順序付きセットを表す。
【0024】
所与の現在のトランザクション152jにおいて、インプット(又はその各々)は、トランザクションのシーケンスの中の先行トランザクション152iのアウトプットを参照するポインタを含み、このアウトプットが現在のトランザクション152jにおいて償還されるか又は「使用される(spent)」ことを指定する。一般に、先行するトランザクションは、順序付きセット154又は任意のブロック151内の任意のトランザクションであり得る。先行するトランザクション152iは、必ずしも、現在のトランザクション152jが生成された又はネットワーク106へ送信されたときに存在する必要はないが、先行するトランザクション152iは、現在のトランザクションが有効であるために存在し妥当性確認されている必要がある。従って、本願明細書で「先行する」は、ポインタによりリンクされた論理的シーケンスの中で先行するものを表し、必ずしも時系列の中での生成又は送信の時間を表さない。従って、それは、必ずしも、トランザクション152i,152jが順不同で生成され又は送信されることを排除しない(以下の親のない(orphan)トランザクションに関する議論を参照する)。先行するトランザクション152iは、等しく、祖先(antecedent)又は先行(predecessor)トランザクションと呼ばれ得る。
【0025】
現在のトランザクション152jのインプットは、インプット認可、例えば先行するトランザクション152iのアウトプットがロックされているユーザ103aの署名も含む。次に、現在のトランザクション152jのアウトプットは、新しいユーザ又はエンティティ103bに暗号的にロックすることができる。従って、現在のトランザクション152jは、先行するトランザクション152iのインプットに定義された量を、現在のトランザクション152jのアウトプットに定義された新しいユーザ又はエンティティ103bに移転することができる。ある場合には、トランザクション152は、複数のユーザ又はエンティティ間でインプット量を分割するために複数のアウトプットを有してもよいエンティティ(そのうちの1つは、お釣りを与えるために、元のユーザ又はエンティティ103aであってもよい)。幾つかの場合には、トランザクションが複数のインプットを有し、1つ以上の先行するトランザクションの複数のアウトプットから量をまとめ、現在のトランザクションの1つ以上のアウトプットに再分配することもできる。
【0026】
ビットコインのようなアウトプットに基づくトランザクションプロトコルによると、個人ユーザ又は組織のようなエンティティ103は、(手動で又はパーティにより利用されている自動処理によって)新しいトランザクション152jに作用したいとき、作用側エンティティは新しいトランザクションを自身のコンピュータ端末102から受信側へ送信する。作用側パーティ又は受信側は、結局、このトランザクションをネットワーク106のブロックチェーンノード104のうちの1つ以上(これらは、今日では、標準的にサーバ又はデータセンタであるが、原理的に他のユーザ端末も可能である)へと送信する。幾つかの例では、新しいトランザクション152jに作用するパーティ103が、トランザクションを、受信側ではなくブロックチェーンノード104のうちの1つ以上へと直接送信し得ることも排除されない。トランザクションを受信するブロックチェーンノード104は、各ブロックチェーンノード104に適用されるブロックチェーンノードプロトコルに従って、トランザクションが有効であるかどうかをチェックする。ブロックチェーンノードプロトコルは、典型的には、ブロックチェーンノード104に、新しいトランザクション152j内の暗号署名が、トランザクション152の順序付きシーケンスの中の前のトランザクション152iに依存する、期待される署名と一致することをチェックすることを要求する。このようなアウトプットに基づくトランザクションプロトコルの場合、これは、新しいトランザクション152jのインプットに含まれるパーティ103の暗号署名又は他の認証が、新しいトランザクションが割り当てる先行するトランザクション152jのアウトプットに定義された条件と一致することをチェックすることを含んでよく、この条件は、典型的には、新しいトランザクション152jのインプット内の暗号署名又は他の認証が、新しいトランザクションのインプットがリンクされた前のトランザクション152iのアウトプットをアンロックすることを少なくともチェックすることを含む。条件は、先行するトランザクション152iのアウトプットに含まれるスクリプトにより少なくとも部分的に定義されてよい。あるいは、単にブロックチェーンノードプロトコルだけで固定することもできるし、あるいは、これらの組み合わせによることもある。いずれにせよ、新しいトランザクション152jが有効であれば、ブロックチェーンノード104は、新しいトランザクションをブロックチェーンネットワーク106内の1つ以上の他のブロックチェーンノード104に転送する。これらの他のブロックチェーンノード104は、同じノードプロトコルに従って同じテストを適用し、新しいトランザクション152jを1つ以上のさらなるノード104に転送し、以下で同様である。このようにして、新しいトランザクションは、ブロックチェーンノード104のネットワーク全体に伝播される。
【0027】
アウトプットベースのモデルでは、与えられ割り当てアウトプット(例えば、UTXO)が割り当てられる(例えば使用される)かどうかの定義は、ブロックチェーンノードプロトコルに従って別の今後の(onward)トランザクション152jのインプットによって既に有効に償還されているかどうかである。トランザクションが有効であるための別の条件は、それが償還を試みる先行するトランザクション152iのアウトプットが、別のトランザクションによって未だ償還されていことである。ここでも、有効でない場合、トランザクション152jは、(無効であるとしてフラグが立てられ変更するために伝播されない限り)ブロックチェーン150に伝播又は記録されない。これは、取引者が同じトランザクションのアウトプットを複数回割り当てようとする二重支出を防ぐ。一方、アカウントベースモデルは、口座残高を維持することによって、二重支出を防ぐ。この場合も、トランザクションの順序が定義されているため、口座残高は、一度に単一の定義された状態を有する。
【0028】
妥当性確認トランザクションに加えて、ブロックチェーンノード104は、また、「proof -of -work」により支えられているマイニングと呼ばれるプロセスで、トランザクションのブロックを最初に作成するために競合する。ブロックチェーンノード104では、ブロックチェーン150に記録されたブロック151にまだ現れていない有効なトランザクションの順序付きプール154に新しいトランザクションが追加される。ブロックチェーンノードは、次に、暗号パズルを解くことを試みることにより、トランザクションの順序付きセット154からトランザクション152の新しい有効なブロック151を組み立てるために競争する。これは、典型的には、ノンス(nonce)が保留トランザクションの順序付きプール154の表現と連結され、ハッシュされるときに、ハッシュのアウトプットが所定の条件を満たすような「ノンス」値を探すことを含む。例えば、所定の条件は、ハッシュのアウトプットが、所定の数の先頭ゼロを有することであってもよい。これは、単に1つの特定の種類のproof-of-workパズルであり、他の種類が排除されないことに留意する。ハッシュ関数の特性は、インプットに関して予測不可能なアウトプットを持つことである。従って、この探索は、ブルートフォースによってのみ実行することができ、従って、パズルを解決しようとしている各ブロックチェーンノード104において、相当量の処理リソースを消費する。
【0029】
パズルを解いた第1ブロックチェーンノード104は、これをネットワーク106に通知し、その解を証明として提供する。この解は、ネットワーク内の他のブロックチェーンノード104によって簡単にチェックすることができる(ハッシュに対する解が与えられれば、ハッシュのアウトプットが条件を満たすことを確認することは簡単である)。第1ブロックチェーンノード104は、該ブロックを受け入れる閾値の他のノードの合意に、ブロックを伝播させ、従ってプロトコルルールを実施する。トランザクションの順序付きセット154は、次に、ブロックチェーンノード104の各々により、ブロックチェーン150内の新しいブロック151として記録されるようになる。また、新しいブロック151nにはブロックポインタ155が割り当てられ、チェーン内で前に作成されたブロック151n-1を指すようになっている。proof-of-work解を生成するために必要とされる例えばハッシュの形式の有意な量の労力が、ブロックチェーンプロトコルのルールに従うという第1ノード104の意図をシグナリングする。そのようなルールは、前に妥当性確認されたトランザクションと同じアウトプットを割り当てる場合に有効としてトランザクションを受け付けないこと、或いは二重支払いとして知られいることを含む。一旦生成されると、ブロック151は、ブロックチェーンネットワーク106内のブロックチェーンノード104の各々で認識され、維持されるので、修正することができない。また、ブロックポインタ155は、ブロック151に順序を課す。トランザクション152は、ネットワーク106内の各ブロックチェーンノード104において順序付きブロックに記録されるので、これは、トランザクションの不変の公開台帳を提供する。
【0030】
パズルを解決するために常に競争している異なるブロックチェーンノード104は、いつ解を探し始めたか、又はトランザクションが受信された順序によって、いつでも未だ公開されていないトランザクションのプール154の異なるスナップショットに基づいてパズルを解いているかもしれないことに留意する。パズルを解く者は誰でも、最初に次の新しいブロック151nに含まれるトランザクション152を定義し、その順序で、未公開のトランザクションの現在のプール154が更新される。そして、ブロックチェーンノード104は、新たに定義された未公開トランザクションの順序付きプール154からブロックを作り出すために、競争を続ける。また、生じ得る「分岐(フォーク、fork)」を解決するためのプロトコルも存在する。これは、2つのブロックチェーンノード104が互いに非常に短い時間内にパズルを解き、ブロックチェーンの矛盾したビューがノード104の間で伝播する場合である。要するに、分岐の枝が伸びるときは常に、最長のものが最終的なブロックチェーン150になる。これは、同じトランザクションが両方の分岐に現れるので、ネットワークのユーザ又はエージェントに影響しないことに留意する。
【0031】
ビットコインブロックチェーン(及び殆どの他のブロックチェーン)によると、新しいブロック104を構成するのに成功したノードは、デジタルアセットの追加の定義された量を分配する新しい特別な種類のトランザクションの中でデジタルアセットの追加の承認された量を新たに割り当てる能力を与えられる(1人のエージェント又はユーザから別のエージェント又はユーザへとデジタルアセットの量を移転するエージェント間又はユーザ間トランザクションと異なる)。この特別な種類のトランザクションは、通常、「コインベーストランザクション」と呼ばれるが、「開始(initiation)トランザクション」又は「生成(generation)トランザクション」とも呼ばれることがある。それは標準に新しいブロック151nの第1トランザクションを形成する。proof-of-workは、この特別なトランザクションが後に償還できるように、新しいブロックを構成したノードがプロトコルルールに従うことを意図していることをシグナリングする。ブロックチェーンプロトコルルールは、この特別なトランザクションが償還できる前に、満期、例えば100ブロックを必要としてよい。通常の(非生成)トランザクション152は、そのアウトプットの1つに追加のトランザクション料を指定し、そのトランザクションが公開されたブロック151nを生成したブロックチェーンノード104にさらに報酬を与えることが多い。この手数料は、通常、「マイニング料」と呼ばれ、後述する。
【0032】
トランザクションの妥当性確認及び公開に関連するリソースのために、典型的には、少なくともブロックチェーンノード104の各々は、1つ以上の物理的サーバユニットを含むサーバ、又はデータセンタ全体の形態をとる。しかしながら、原理的に、任意の所与のブロックチェーンノード104は、ユーザ端末又は互いにネットワーク接続されたユーザ端末又はユーザ端末のグループの形態をとることができる。
【0033】
各ブロックチェーンノード104のメモリは、各々の1つ以上の役割を実行し、ブロックチェーンノードプロトコルに従ってトランザクション152を処理するために、ブロックチェーンノード104の処理装置上で動作するように構成されたソフトウェアを記憶する。ブロックチェーンノード104に属するいずれの動作も、各々のコンピュータ装置の処理装置上で実行されるソフトウェアによって実行され得ることが理解されよう。ノードソフトウェアは、アプリケーションレイヤにおける1つ以上のアプリケーション、又はオペレーティングシステムレイヤ若しくはプロトコルレイヤのような下位レイヤ、又はこれらの任意の組合せの中に実装されてよい。
【0034】
また、ネットワーク101には、消費者ユーザの役割を果たす複数のパーティ103の各々のコンピュータ装置102も接続されている。これらのユーザは、ブロックチェーンネットワークと相互作用できるが、トランザクションの妥当性確認及びブロックの構築には参加しない。これらのユーザ又はエージェントのうちの一部は、トランザクションにおいて送信側及び受信側として動作してよい。他のユーザは、必ずしも送信側又は受信側として動作することなく、ブロックチェーン150と相互作用してよい。例えば、幾つかのパーティは、ブロックチェーン150のコピーを格納する(例えば、ブロックチェーンノード104からブロックチェーンのコピーを取得した)記憶エンティティとして動作してよい。
【0035】
パーティ103の一部又は全部は、異なるネットワーク、例えば、ブロックチェーンネットワーク106の上に重ねられたネットワークの部分として結合されてよい。ブロックチェーンネットワークのユーザ(「クライアント」と呼ばれることが多い)は、ブロックチェーンネットワーク106を含むシステムの部分であると言うことができる。しかしながら、これらのユーザは、ブロックチェーンノードの要求される役割を実行しないので、ブロックチェーンノード104ではない。代わりに、各パーティ103は、ブロックチェーンネットワーク106と相互作用し、それにより、ブロックチェーンノード106に結合する(つまり通信する)ことにより、ブロックチェーン150を利用してよい。2つのパーティ103及び各々の機器102は、説明のために示されており、第1パーティ103a及びその各々のコンピュータ機器102a、ならびに第2パーティ103b及びその各々のコンピュータ機器102bである。より多くのこのようなパーティ103及びそれらの各々のコンピュータ機器102がシステム100に存在し、参加することができるが、便宜上、それらは図示されていないことが理解されよう。各パーティ103は、個人又は組織であってもよい。純粋に例示として、第1パーティ103aは、本明細書においてAliceと称され、第2パーティ103bは、Bobと称されるが、これは限定的なものではなく、本明細書においてAlice又はBobという言及は、各々「第1パーティ」及び「第2パーティ」と置き換えることができることは理解されるであろう。
【0036】
各パーティ103のコンピュータ機器102は、1つ以上のプロセッサ、例えば、1つ以上のCPU、GPU、他のアクセラレータプロセッサ、特定用途向けプロセッサ、及び/又はFPGAを備える各々の処理装置を備える。各パーティ103のコンピュータ機器102は、さらに、メモリ、すなわち、非一時的コンピュータ読み取り可能媒体又は媒体の形態のコンピュータ読み取り可能記憶装置を備える。このメモリは、1つ以上のメモリ媒体、例えば、ハードディスクのような磁気媒体、SSD、フラッシュメモリ又はEEPROMのような電子媒体、及び/又は光学ディスクドライブのような光学的媒体を使用する1つ以上のメモリユニットを含むことができる。各パーティ103のコンピュータ機器102上のメモリは、処理装置上で動作するように配置された少なくとも1つのクライアントアプリケーション105の各々のインスタンスを含むソフトウェアを記憶する。本明細書で与えられたパーティ103に帰属するいずれのアクションも、各々のコンピュータ装置102の処理装置上で実行されるソフトウェアを使用して実行され得ることが理解されよう。各パーティ103のコンピュータ機器102は、少なくとも1つのユーザ端末、例えばデスクトップ又はラップトップコンピュータ、タブレット、スマートフォン、又はスマートウォッチのようなウェアラブルデバイスを備えている。所与のパーティ103のコンピュータ装置102は、ユーザ端末を介してアクセスされるクラウドコンピューティングリソースのような、1つ以上の他のネットワーク化されたリソースを含んでもよい。
【0037】
クライアントアプリケーション105は、最初に、1つ以上の適切なコンピュータ読み取り可能な記憶媒体、例えばサーバからダウンロードされたもの、又はリムーバブルSSD、フラッシュメモリキー、リムーバブルEEPROM、リムーバブル磁気ディスクドライブ、磁気フロッピーディスク又はテープ、光ディスク、例えばCD又はDVD ROM、又はリムーバブル光学ドライブなどのリムーバブル記憶装置上で、任意の所与のパーティ103のコンピュータ機器102に提供され得る。
【0038】
クライアントアプリケーション105は、少なくとも「ウォレット」機能を備える。これには主に2つの機能を有する。これらのうちの1つは、各々のパーティ103が、ブロックチェーンノード104のネットワーク全体にわたって伝播され、それによってブロックチェーン150に含まれるべきトランザクション152を作成し、認可し(例えば署名し)、送信することを可能にすることである。もう1つは、現在所有しているデジタルアセットの量を各々のパーティに報告することである。アウトプットベースのシステムでは、この第2機能は、当該パーティに属するブロックチェーン150全体に散在する様々なトランザクション152のアウトプットの中で定義される量を照合することを含む。
【0039】
注:種々のクライアント機能が所与のクライアントアプリケーション105に統合されるとして説明されることがあるが、これは、必ずしも限定的ではなく、代わりに、本願明細書に記載される任意のクライアント機能が2つ以上の異なるアプリケーションのスーツに実装されてよく、例えばAPIを介してインタフェースし、又は一方が他方へのプラグインである。より一般的には、クライアント機能は、アプリケーションレイヤ、又はオペレーティングシステムのような下位レイヤ、又はこれらの任意の組合せにおいて実装され得る。以下は、クライアントアプリケーション105の観点で説明されるが、これは限定的ではないことが理解される。
【0040】
各コンピュータ機器102上のクライアントアプリケーション又はソフトウェア105のインスタンスは、ネットワーク106のブロックチェーンノード104の少なくとも1つに動作可能に結合される。これにより、クライアント105のウォレット機能は、トランザクション152をネットワーク106に送信することができる。クライアント105は、また、ブロックチェーンノード104にコンタクトして、各々のパーティ103が受信側である任意のトランザクションについてブロックチェーン150に問い合わせることができる(又は、実施形態では、ブロックチェーン150は、部分的にその公開視認性を通じてトランザクションの信頼を提供する公開的設備であるため、実際には、ブロックチェーン150内の他のパーティのトランザクションを検査する)。各コンピュータ機器102上のウォレット機能は、トランザクションプロトコルに従ってトランザクション152を形成し、送信するように構成される。上述のように、各ブロックチェーンノード104は、ブロックチェーンノードプロトコルに従いトランザクション152を妥当性確認し、トランザクション152をブロックチェーンネットワーク106全体に渡り伝播させるために、トランザクション152を転送するよう構成されるソフトウェアを実行する。トランザクションプロトコルとノードプロトコルは互いに対応し、所与のトランザクションプロトコルは所与のノードプロトコルと共に所与のトランザクションモデルを実装する。同じトランザクションプロトコルは、ブロックチェーン150内の全部のトランザクション152について使用される。同じノードプロトコルは、ネットワーク106内の全部のノード104について使用される。
【0041】
所与のパーティ103、例えばAliceがブロックチェーン150に含まれる新たなトランザクション152jを送信したいと望む場合、彼女は関連するトランザクションプロトコルに従って(彼女のクライアントアプリケーション105のウォレット機能を使用して)新たなトランザクションを作成する(formulate)。彼女は、次に、クライアントアプリケーション105からトランザクション152を、彼女が接続されている1つ以上のブロックチェーンノード104に送信する。例えば、これは、Aliceのコンピュータ102に最も良好に接続されているブロックチェーンノード104であってもよい。任意の所与のブロックチェーンノード104が新しいトランザクション152jを受信すると、ブロックチェーンノードプロトコル及びその各々の役割に従って、それを処理する。これは、最初に、新たに受信されたトランザクション152jが「有効」であるための特定の条件を満たしているかどうかをチェックすることを含み、その例については、簡単に詳述する。幾つかのトランザクションプロトコルでは、妥当性確認のための条件は、トランザクション152に含まれるスクリプトによってトランザクションごとに構成可能であってよい。或いは、条件は単にノードプロトコルの組み込み機能であってもよく、或いはスクリプトとノードプロトコルの組み合わせによって定義されてもよい。
【0042】
新たに受信されたトランザクション152jが、有効であると見なされるテストに合格したという条件で(すなわち、「妥当性確認された」という条件で)、トランザクション152jを受信した任意のブロックチェーンノード104は、そのブロックチェーンノード104に維持されているブロックチェーンの順序付きセット154に、新たな妥当性確認済みトランザクション152を追加する。さらに、トランザクション152jを受信する任意のブロックチェーンノード104は、妥当性確認済みトランザクション152をネットワーク106内の1つ以上の他のブロックチェーンノード104に伝播する。各ブロックチェーンノード104は同じプロトコルを適用するので、トランザクション152jが有効であると仮定すると、これは、ネットワーク106全体に間もなく伝播されることを意味する。
【0043】
所与のブロックチェーンノード104において維持される保留中トランザクションの順序付きプール154に入れられると、該ブロックチェーンノード104は、新しいトランザクション152を含む、彼ら各々のトランザクションのプールの最新バージョンについて、proof-of-workパズルを解く競争を開始する(他のブロックチェーンノード104は、トランザクションの異なるプール154に基づきパズルを解こうとしているが、誰であっても1番の者が、最新のブロック151に含まれるトランザクションのセットを定義することに留意する。)。最終的に、ブロックチェーンノード104は、Aliceのトランザクション152jを含む順序付きプール154の一部についてパズルを解くだろう。)。一旦、新しいトランザクション152jを含むプール154についてproof-of-workが行われると、それはブロックチェーン150内のブロック151のうちの1つの一部となる。各トランザクション152は、以前のトランザクションへのポインタから構成されるので、トランザクションの順序もまた、不変的に記録される。
【0044】
異なるブロックチェーンノード104は、最初に所与のトランザクションの異なるインスタンスを受信する可能性があり、従って、1つのインスタンスが公開(Publishing)されて新しいブロック151になる前に、どのインスタンスが「有効」であるかについて矛盾するビューを有することがあり、その時点で、全部のブロックチェーンノード104は公開されたインスタンスのみが有効なインスタンスであることに合意する。ブロックチェーンノード104が1つのインスタンスを有効であるとして受け入れ、次に第2インスタンスがブロックチェーン150に記録されていることを発見した場合、該ブロックチェーンノード104は、これを受け入れなければならず、最初に受け入れたインスタンス(つまり未だブロック151の中で公開されていないもの)を破棄する(つまり、無効であるとして扱う)。
【0045】
アカウントベースのトランザクションモデルの一部として、幾つかのブロックチェーンネットワークにより運用される別のタイプのトランザクションプロトコルを「アカウントベース」のプロトコルと呼ぶことがある。アカウントベースの場合、各トランザクションは、過去の一連のトランザクションにおいて、先行するトランザクションのUTXOに戻って参照することによって移転される量を定義するのではなく、絶対的な口座(アカウント)残高を参照することによって移転される。すべてのアカウントの現在の状態は、ブロックチェーンと分離して、ネットワークのノードにより格納され、絶えず更新される。このようなシステムでは、トランザクションは、アカウントの連続したトランザクション記録(いわゆる「ポジション」)を用いて発注される。この値は、送信者により彼らの暗号署名の一部として署名され、トランザクション参照計算の一部としてハッシュされる。さらに、任意的なデータフィールドもトランザクションに署名することができる。このデータフィールドは、例えば、前のトランザクションIDがデータフィールドに含まれている場合、前のトランザクションを遡ってポイントしてよい。
【0046】
<UTXOベースのモデル>
図2は、トランザクションプロトコルの例を示している。これは、UTXOベースのプロトコルの例である。トランザクション152(「Tx」と略す)は、ブロックチェーン150(各ブロック151は1つ以上のトランザクション152を含む)の基本的なデータ構造である。以下は、アウトプットベース又は「UTXO」ベースのプロトコルを参照して説明される。しかし、これは、全ての可能な実施形態に限定されるものではない。例示的なUTXOベースのプロトコルは、ビットコインを参照して説明されるが、他の例示的なブロックチェーンネットワーク上でも等しく実施できることに留意する。
【0047】
UTXOベースのモデルでは、各トランザクション(「Tx」)152は、1つ以上のインプット202及び1つ以上のアウトプット203を含むデータ構造を含む。各アウトプット203は、未使用トランザクションアウトプット(UTXO)を含んでもよく、これは、別の新しいトランザクションのインプット202のソースとして使用することができる(UTXOが未だ償還されていない場合)。UTXOは、デジタルアセットの量を指定する値を含む。これは、分散型台帳上のトークンの設定数を表す。また、他の情報の中でも、UTXOは、それが由来するトランザクションのトランザクションIDも含んでよい。トランザクションデータ構造はまた、ヘッダ201も含んでよく、ヘッダ201は、インプットフィールド202及びアウトプットフィールド203のサイズの指示子を含んでもよい。ヘッダ201は、トランザクションのIDも含んでもよい。実施形態において、トランザクションIDは、トランザクションデータ(トランザクションID自体を除く)のハッシュであり、ノード104に提出された未処理トランザクション152のヘッダ201に格納される。
【0048】
例えばAlice103aは、問題のデジタルアセットの量をBob103bに移転するトランザクション152jを作成したいと考えているとする。図2において、Aliceの新しいトランザクション152jは「Tx」とラベル付けされている。これは、Aliceにロックされているデジタルアセットの量を、シーケンス内の先行するトランザクション152iのアウトプット203に取り入れ、その少なくとも一部をBobに移転する。先行するトランザクション152iは、図2において「Tx」とラベル付けされている。TxとTxは、単なる任意のラベルである。これらは、必ずしも、Txがブロックチェーン151の第1トランザクションであること、又は、Txがプール154の直ぐ次のトランザクションであることを意味しない。Txは、まだAliceにロックされた未使用アウトプット203を有する任意の先行する(つまり祖先)トランザクションを指し示すことができる。
【0049】
先行するトランザクションTxは、Aliceが彼女の新しいトランザクションTxを作成するとき、又は少なくとも彼女がそれをネットワーク106に送信するときに、既に妥当性確認され、ブロックチェーン150のブロック151に含まれていてもよい。それは、その時点で既にブロック151のうちの1つに含まれていてもよく、あるいは、順序付きセット154内でまだ待機していてもよく、その場合、新しいブロック151にすぐに含まれることになる。あるいは、Tx及びTxが生成されネットワーク106に送信されることができ、あるいは、ノードプロトコルが「孤児(orphan)」トランザクションのバッファリングを許容する場合にはTxの後にTxが送信されることもできる。ここでトランザクションのシーケンスの文脈で使用される「先行する」及び「後の」という用語は、トランザクション内で指定されたトランザクションポインタ(どのトランザクションがどの他のトランザクションを指すかなど)によって定義されるシーケンス内のトランザクションの順序を指す。それらは、「先行する」及び「相続する」又は「祖先」及び「子孫」、「親」及び「子」、等により、等しく置き換えられ得る。これは、必ずしも、それらが作成され、ネットワーク106に送られ、又は任意の所与のブロックチェーンノード104に到達する順序を意味しない。それにもかかわらず、先行するトランザクション(祖先トランザクション又は「親」)を指す後続のトランザクション(子孫トランザクション又は「子」)は、親トランザクションが妥当性確認されない限り、妥当性確認されない。親の前にブロックチェーンノード104に到着した子は孤児とみなされる。それは、ノードプロトコル及び/又はノードの行動に応じて、親を待つために特定の時間、破棄又はバッファリングされることがある。
【0050】
先行するトランザクションTxの1つ以上のアウトプット203のうちの1つは、本明細書でUTXOとラベル付けされた特定のUTXOを含む。各UTXOは、UTXOによって表されるデジタルアセットの量を指定する値と、後続のトランザクションが検証されるために、従ってUTXOが正常に償還されるために、後続のトランザクションのインプット202の中のアンロックスクリプトによって満たされなければならない条件を定義するロックスクリプトとを含む。典型的には、ロックスクリプトは、特定のパーティ(それが含まれているトランザクションの受益者)に量をロックする。すなわち、ロックスクリプトは、標準的に以下のようなアンロック条件を定義する:後続のトランザクションのインプット内のアンロックスクリプトは、先行するトランザクションがロックされたパーティの暗号署名を含む。
【0051】
ロックスクリプト(別名scriptPubKey)は、ノードプロトコルによって認識されるドメイン固有の言語で書かれたコードの一部である。そのような言語の特定の例は、ブロックチェーンネットワークにより使用される「スクリプト」(Script,大文字S)と呼ばれる。ロックスクリプトは、トランザクションアウトプット203を消費するために必要な情報、例えば、Aliceの署名の必要条件を指定する。トランザクションのアウトプットには、アンロックスクリプトが現れる。アンロックスクリプト(別名:scriptSig)は、ロックスクリプトの基準を満たすために必要な情報を提供するドメイン固有の言語で書かれたコードの一部である。例えば、Bobの署名を含んでもよい。アンロックスクリプトは、トランザクションのインプット202に現れる。
【0052】
図示の例では、Txのアウトプット203のUTXOは、ロックスクリプト[ChecksigPA]を含み、これは、UTXOが償還されるために(厳密には、UTXOを償還しようとする後続のトランザクションが有効であるために)、Aliceの署名SigPAを必要とする。[Checksig PA]は、Aliceの公開-秘密鍵ペアからの公開鍵PAの表現(つまりハッシュ)を含む。Txのインプット202は、Txを指すポインタ(例えば、そのトランザクションID、実施形態ではトランザクションTx全体のハッシュであるTxIDによる)を含む。Txのインプット202は、Txの任意の他の可能なアウトプットの中でそれを識別するために、Tx内のUTXOを識別するインデックスを含む。Txのインプット202は、さらに、Aliceが鍵ペアからのAliceの秘密鍵をデータの所定の部分(暗号において「メッセージ」と呼ばれることもある)に適用することによって作成された、Aliceの暗号署名を含むアンロックスクリプト<SigPA>を含む。有効な署名を提供するためにAliceが署名する必要があるデータ(又は「メッセージ」)は、ロックスクリプトにより、又はノードプロトコルにより、又はこれらの組み合わせによって定義され得る。
【0053】
新しいトランザクションTxがブロックチェーンノード104に到着すると、ノードはノードプロトコルを適用する。これは、ロックスクリプトとアンロックスクリプトを一緒に実行して、アンロックスクリプトがロックスクリプトで定義されている条件(この条件は1つ以上の基準を含むことができる)を満たしているかどうかをチェックすることを含む。実施形態では、これは、2つのスクリプトの連結を含む。
<Sig PA> <PA> || [Checksig PA]
【0054】
ここで、「||」は連結を表し、「<...>」はスタックにデータを配置することを意味し、「[...]」はロックスクリプトに含まれる機能である(本例では、スタックベースの言語)。同等に、スクリプトは。、スクリプトを連結するのではなく共通のスタックにより1つずつ実行されてよい。いずれの方法でも、一緒に実行する場合、スクリプトは、Txのアウトプット内のロックスクリプトに含まれるAliceの公開鍵PAを使用して、Txのインプット内のアンロックスクリプトが、データの期待部分に署名するAliceの署名を含むことを認証する。また、データの期待部分(「メッセージ」)も、この認証を実行するために含まれる必要がある。実施形態において、署名されたデータは、Txの全体を含む(従って、データの署名された部分がすでに本質的に存在するので、データの署名された部分を平文で指定する別個の要素が含まれる必要はない)。
【0055】
公開-秘密暗号法による認証の詳細は、当業者には周知であろう。基本的に、Aliceが彼女の秘密鍵を用いてメッセージに署名した場合、Aliceの公開鍵とそのメッセージが平文ならば、ノード104のような別のエンティティは、そのメッセージがAliceによって署名されていなければならないことを認証することができる。署名は、典型的には、メッセージをハッシュし、ハッシュに署名し、署名としてメッセージにこれをタグ付けすることによって、公開鍵の所有者が署名を認証することを可能にする。従って、実施形態では、特定のデータ片又はトランザクションの部分等に署名するという言及は、データ片又はトランザクションの部分のハッシュに署名することを意味し得る。
【0056】
Tx内のアンロックスクリプトが、Txのロックスクリプトで指定された1つ以上の条件を満たす場合(示される例では、Aliceの署名がTx内で提供され、認証されている場合)、ブロックチェーンノード104は、Txが有効であるとみなす。これは、ブロックチェーンノード104がTxを保留トランザクションの順序付きプール154に追加することを意味する。ブロックチェーンノード104は、トランザクションTxをネットワーク106内の1つ以上の他のブロックチェーンノード104に転送し、それによって、それがネットワーク106全体に伝播されることになる。一旦、Txが妥当性確認され、ブロックチェーン150に含まれると、これは、TxからのUTXOを消費したものとして定義する。Txは、未使用トランザクションアウトプット203を使用する場合にのみ有効であることに留意されたい。別のトランザクション152によって既に消費されたアウトプットを消費しようとする場合、Txは、たとえ他のすべての条件が満たされていても無効となる。従って、ブロックチェーンノード104は、先行するトランザクションTxにおいて参照されたUTXOが既に消費されているかどうか(既に別の有効なトランザクションへの有効なインプットを形成しているかどうか)もチェックする必要がある。これが、ブロックチェーン150がトランザクション152に定義された順序を課すことが重要である理由の1つである。実際には、所与のブロックチェーンノード104は、トランザクション152が消費されたUTXO203をマークする別個のデータベースを維持することができるが、最終的には、UTXOが消費されたかどうかを定義するのは、ブロックチェーン150内の別の有効なトランザクションへの有効なインプットを既に形成しているかどうかである。
【0057】
所与のトランザクション152の全部のアウトプット203の中で指定された総量が全部のそのインプット202により指される総量より大きい場合、これは、殆どのトランザクションモデルにおいて無効の別の基礎である。従って、このようなトランザクションは、伝播されず、ブロック151に含まれることもない。
【0058】
UTXOベースのトランザクションモデルでは、所定のUTXOを全体として使用する必要があることに注意する。UTXOで定義されている量のうち、別の分量が消費されている一方で、ある分量を「残しておく」ことはできない。ただし、UTXOからの量は、次のトランザクションの複数のアウトプットに分割できる。例えば、TxのUTXOで定義された量は、Txの複数のUTXOに分割できる。従って、AliceがBobにUTXOで定義された量の全てを与えることを望まない場合、彼女は残りの量を使って、Txの第2アウトプットの中で自分自身にお釣りを与えるか、又は別のパーティに支払うことができる。
【0059】
特に、Aliceは、通常、彼女のトランザクション104をブロック151に含めることに成功したビットコインノード104のための手数料も含める必要がある。Aliceがそのような手数料を含まない場合、Txはブロックチェーンノード104によって拒否される可能性が高く、したがって、技術的には有効であるが、それは伝播されず、ブロックチェーン150に含まれない(ノードプロトコルは、彼らが望まない場合には、ブロックチェーンノード104にトランザクション152を受け入れることを強制しない)。一部のプロトコルでは、トランザクション手数料は、独自の別個のアウトプット203を必要としない(すなわち、別個のUTXOを必要としない)。代わりに、インプット202によって示される総量と、所与のトランザクション152のアウトプット203で指定される総量との間の差は、トランザクションを公開するブロックチェーンノード104に自動的に与えられる。例えば、UTXOへのポインタがTxへの唯一のインプットであり、Txは1つのアウトプットUTXOしか持っていないとする。UTXOで指定されたデジタルアセットの量がUTXOで指定された量より多い場合、その差は、UTXOを含むブロックを生成するproof-of-work競争の勝者であるノード104により割り当てられてよい。しかし、代替的又は追加的に、必ずしも、トランザクション152のUTXO203のうちの独自のものにおいて、トランザクション手数料を明示的に指定できることは除外されない。
【0060】
Alice及びBobのデジタルアセットは、ブロックチェーン150内の任意のトランザクション152の中で彼らにロックされたUTXOで構成されている。従って、典型的には、所与のパーティ103のアセットは、ブロックチェーン150を通して、様々なトランザクション152のUTXO全体に分散される。ブロックチェーン150内のどこにも、所与のパーティ103の総残高を定義する1つの数値は記憶されていない。各パーティへのロックされた、別の将来の(onward)トランザクションに未だ使用されていない全ての様々なUTXOの値をまとめることは、クライアントアプリケーション105におけるウォレット機能の役割である。ビットコインノード104のいずれかに格納されたブロックチェーン150のコピーをクエリすることにより、これを行うことができる。
【0061】
スクリプトコードは、概略的に表現されることが多い(すなわち、正確な言語を用いない)ことに注意する。例えば、特定の機能を表現するオペレーションコード(opcode、オペコード)を使用してよい。「OP_....」は、スクリプト言語の特定のオペコードを表す。例として、OP_RETURNは、ロックスクリプトの始めにあるOP_FALSEが先行するとき、トランザクション内にデータを格納することができ、それによってデータをブロックチェーン150に不変に記録することができるトランザクションの使用不可能アウトプットを生成するためのスクリプト言語のオペコードである。例えば、データは、ブロックチェーンに格納することが望ましい文書を含むことができる。
【0062】
通常、トランザクションのインプットは、公開鍵PAに対応するデジタル署名を含む。実施形態において、これは楕円曲線secp256k1を使用するECDSAに基づく。デジタル署名は、特定のデータに署名する。幾つかの実施形態では、所与のトランザクションについて、署名はトランザクションインプットの一部、及びトランザクションアウトプットの全部又は一部に署名する。署名するアウトプットの特定の部分はSIGHASHフラグに依存する。SIGHASHフラグは、通常、署名の最後に含まれる4バイトのコードであり、どのアウトプットが署名されるかを選択する(従って、署名の時点で固定される)。
【0063】
ロックスクリプトは、通常、各々のトランザクションがロックされているパーティの公開鍵を含んでいることを表す「scriptPubKey」と呼ばれることがある。アンロックスクリプトは、通常、対応する署名を提供することを表す「scriptSig」と呼ばれることがある。しかし、より一般的には、UTXOが償還される条件が署名を認証することを含むことは、ブロックチェーン150の全てのアプリケーションにおいて必須ではない。より一般的には、スクリプト言語は、任意の1つ以上の条件を定義するために使用され得る。したがって、より一般的な用語「ロックスクリプト」及び「アンロックスクリプト」が好ましい。
【0064】
図1に示されるようにAlice及びBobのコンピュータ装置102a、120bの各々にあるクライアントアプリケーションは、付加的な通信機能を備えてよい。この追加機能は、Alice103aが、(いずれかのパーティ又は第3者の勧誘で)Bob103bと別個のサイドチャネル301を確立することを可能にする。サイドチャネル301は、ブロックチェーンネットワークと別個にデータの交換を可能にする。このような通信は、時に「オフチェーン」通信と呼ばれる。例えば、これは、パーティの一方がネットワーク106にトランザクション152をブロードキャストすることを選択するまで、ブロックチェーンネットワーク106上に登録されることなく、又はチェーン150上に進むことなく、AliceとBobとの間でトランザクション152を交換するために使用され得る。このようにトランザクションを共有することは、時に、「トランザクションテンプレイト」の共有と呼ばれる。トランザクションテンプレイトは、完全なトランザクションを形成するために必要な1つ以上のインプット及び/又はアウトプットが欠けていてよい。代替又は追加で、サイドチャネル301は、任意の他のトランザクションに関連するデータ、例えば、鍵、交渉される量又は条項、データコンテンツ、等を交換するために使用されてよい。
【0065】
サイドチャネル301は、ブロックチェーンネットワーク106と同じパケット交換ネットワーク101を介して確立されてもよい。代替又は追加で、サイドチャネル301は、モバイルセルラネットワーク、又はローカル無線ネットワークのようなローカルエリアネットワーク、又はAliceとBobの装置102a、102bの間の直接有線若しくは無線リンクのような異なるネットワークを介して確立されてよい。一般に、本願明細書のどこかで言及されるサイドチャネル301は、「オフチェーン」で、つまりブロックチェーンネットワーク106と別個にデータを交換するための1つ以上のネットワーキング技術又は通信媒体を介する任意の1つ以上のリンクを含んでよい。1つより多くのリンクが使用されるとき、全体としてのオフチェーンリンクのバンドル又は集合がサイドチャネル301と呼ばれてよい。従って、Alice及びBobが特定の情報又はデータ片等をサイドチャネル301を介して交換すると言われる場合、これは、必ずしも全部のこれらのデータ片が正確に同じリンク又は同じ種類のネットワークを介して送信される必要があることを意味しないことに留意する。
【0066】
クライアントソフトウェア
図3Aは、本開示の方式の実施形態を実装するためのクライアントアプリケーション105の例示的な実装を示す。クライアントアプリケーション105は、トランザクションエンジン301と、ユーザインタフェース(UI)レイヤ302と、を含む。トランザクションエンジン301は、クライアント105の基礎トランザクション関連機能、例えば、トランザクション152を形成し、トランザクション及び/又はサイドチャネル107を介して他のデータを受信及び/又は送信し、及び/又はブロックチェーンネットワーク106を介して伝播されるように1つ以上のノード104にトランザクションを送信するように、上述したスキームに従って、さらに詳細に説明するように、構成される。
【0067】
UIレイヤ302は、各々のユーザコンピュータ機器102のユーザ入力/出力(I/O)手段を介して、機器102のユーザ出力手段により各々のユーザ103へ情報を出力すること及び機器102のユーザ入力手段により各々のユーザ103から入力を受信することを含む、ユーザインタフェースをレンダリングするよう構成される。例えば、ユーザ出力手段は、視覚的出力を提供する1つ以上のディスプレイスクリーン(タッチ又は非タッチスクリーン)、オーディオ出力を提供する1つ以上のスピーカ、及び/又は触覚出力を提供する1つ以上の触覚出力装置、等を含み得る。ユーザ入力手段は、例えば、1つ又は複数のタッチスクリーンの入力アレイ(出力手段に使用されるものと同じか又は異なる)、マウス、トラックパッド又はトラックボールなどの1つ又は複数のカーソルベースの装置、音声又は声の入力を受け取るための1つ又は複数のマイクロフォン及び音声認識アルゴリズム、手動又は身体のジェスチャの形態で入力を受け取るための1つ又は複数のジェスチャベースの入力装置、又は1つ又は複数の機械的ボタン、スイッチ又はジョイスティックなどを含むことができる。
【0068】
注:本明細書における種々の機能は、同一のクライアントアプリケーション105に統合されていると記述することができるが、これは、必ずしも限定するものではなく、代わりに、2つ以上の別個のアプリケーション、例えば、一方が他方へのプラグインであるか、又はAPI(アプリケーションプログラミングインタフェース)を介したインタフェースで実装することができる。例えば、トランザクションエンジン301の機能は、UIレイヤ302と別個のアプリケーション、又は所与のモジュールの機能に実装されてよく、トランザクションエンジン301が1つより多くのアプリケーションの間で分割されてよい。また、記載の機能の一部又は全部が、例えばオペレーティングシステムレイヤに実装されることを除外しない。本願明細書のどこかで、単一の又は所与のアプリケーション105等を参照する場合、これが単に例であること、より一般的には、記載の機能が任意の形式のソフトウェアで実装され得ることが理解される。
【0069】
図3Bは、Aliceの機器102a上のクライアントアプリケーション105aのUI層302によりレンダリングされてよいユーザインタフェース(UI)300の例の模擬表示を与える。同様のUIが、Bobの機器102b上にある又は任意の他のパーティの機器上にあるクライアント105bによりレンダリングされてよいことが理解される。
【0070】
例示として、図3Bは、Aliceの観点からUI300を示す。UI500は、ユーザ出力手段を介して別個のUI要素として描画される1つ以上のUI要素304、305、306を含んでもよい。
【0071】
例えば、UI要素は、例えば、画面上の異なるボタン、又はメニュー内の異なるオプション等の1つ以上のユーザ選択可能要素304を含むことができる。ユーザ入力手段は、スクリーン上のUI要素をクリック若しくはタッチすることにより、又は所望のオプションの名称を発話することにより、ユーザ103(この場合にはAlice103a)がオプションのうちの1つを選択又は操作できるよう構成される(注:ここで使用される「手動(manual)」は単に自動の反対を意味し、必ずしも手の使用に限定されない)。オプションは、ユーザ(例えば、Alice)がインターネットサーバにデータ、例えばブロックチェーントランザクションの一部又は全部を提出すること、又は署名を生成することを可能にする。
【0072】
代替的又は追加的に、UI要素は、ユーザが署名又はブロックチェーンアドレスのようなデータを入力できる1つ以上のデータ入力フィールド305を含んでもよい。これらのデータ入力フィールドは、ユーザ出力手段、例えば、オンスクリーンを介してレンダリングされ、データは、ユーザ入力手段、例えば、キーボード又はタッチスクリーンを介してフィールドに入力することができる。あるいは、データは、例えば、音声認識に基づいて口頭で受信され得る。
【0073】
代替的又は追加的に、UI要素は、ユーザに情報を出力するために出力される1つ以上の情報要素306を含んでもよい。例えば、これ/これらは、スクリーン上に描画されるか、又は可聴でレンダリングされることがある。
【0074】
例えば、この/これらは、スクリーン上に描画されるか、又は可聴で描画されることがある。これらのUI要素の機能は、間もなく更に詳細に議論される。また、図3Bに示されたUI300は、単に概略的なモックアップであり、実際には、1つ以上のさらなるUIエレメントを含んでもよく、これは、簡潔さのために示されていないことが理解される。
【0075】
ブロックチェーンネットワークとの接続
図4は、本発明の実施形態を実施するための例示的なシステム400を示す。システムはインターネットサーバ401、第1パーティ402a、及びブロックチェーンネットワーク106、又はブロックチェーンネットワーク106の少なくとも1つ以上のノード104を含む。システムは、第2パーティ402bも含んでよい。第1及び第2パーティ402a、402bの各々は、図1を参照して説明したようなAlice103a又はBob103bの役割を果たしてよい。つまり、第1パーティ402aは、各々のコンピューティング機器102aを含み、Alice103aに関連するアクションの一部又は全部を実行するよう構成されるクライアントアプリケーション105aを操作してよい。同様に、第2パーティ402bは、各々のコンピューティング機器102bを含み、Bob103bに関連するアクションの一部又は全部を実行するよう構成されるクライアントアプリケーション105bを操作してよい。第1パーティ402aは、Bob103bに関連するアクションの一部又は全部を実行してよく、逆も同様であることに留意する。
【0076】
インターネットサーバ401は、1つ以上のプロセッサ、例えば、1つ以上の中央処理装置(CPU)、アクセラレータプロセッサ、特定用途向けプロセッサ、及び/又はフィールドプログラマブルゲートアレイ(FPGA)、及び特定用途向け集積回路(ASIC)のような他の機器を含む処理装置を含む。インターネットサーバ401はまた、メモリ、すなわち、非一時的コンピュータ読み取り可能媒体又は媒体の形態のコンピュータ読み取り可能記憶装置を備える。メモリは、1つ以上のメモリ媒体、例えば、ハードディスクなどの磁気媒体、固体ドライブ(solid-state drive (SSD))、フラッシュメモリ又はEEPROMなどの電子媒体、及び/又は光ディスクドライブなどの光学的媒体を使用する1つ以上のメモリユニットを含んでもよい。インターネットサーバ401上のメモリは、処理機器上で実行するよう構成されるソフトウェアを格納してよい。ソフトウェアは、最初に、1つ以上の適切なコンピュータ読み取り可能な記憶媒体、例えばサーバからダウンロードされたもの、又はリムーバブルSSD、フラッシュメモリキー、リムーバブルEEPROM、リムーバブル磁気ディスクドライブ、磁気フロッピーディスク又はテープ、光ディスク、例えばCD又はDVD ROM、又はリムーバブル光学ドライブなどのリムーバブル記憶装置上で、インターネットサーバ401に提供され得る。
【0077】
インターネットサーバ自体はよく知られているので、それらの一般的な機能はここで詳細に説明されない。概して、インターネットサーバ401は、以下:データベースサーバ、メールサーバ、Webサーバ、ゲームサーバ、又はアプリケーションサーバ、のうちの任意の形式を取ってよい。インターネットサーバ401は、代わりに他の形式を取ってもよい。データベースサーバは、他のコンピュータプログラムに又はコンピュータにデータベースサービスを提供するデータベースアプリケーションを使用するサーバである。Webサーバは、ワールドワイドウェブ(World Wide Web)上のクライアント要求を満たすよう構成されるサーバである。Webサーバは、通常、1つ以上のWebサイトをホスティングし、HTTP及び幾つかの他の関連プロトコルを介して入来するネットワーク要求を処理する。アプリケーションサーバは、通常、Webアプリケーションを生成する設備及びそれらを実行するサーバ環境の両方を提供する。ゲームサーバ(ホストと呼ばれることもある)は、マルチプレイヤビデオゲームで当局のイベントソースであるサーバである。サーバは、その内部状態に関する十分なデータを送信して、自身に接続されたクライアントがプレイヤに表示するためにそれら自体のゲーム世界の正確なバージョンを維持できるようにする。それらは、また、各プレイヤの入力を受信し処理する。
【0078】
インターネットサーバ401は、自身に接続されたクライアントへのインターネットサービスをホスティングする(つまりサービスする)よう構成される。インターネットサーバ401によりホスティングされるインターネットサービスの種類は、インターネットサーバ401の形式に依存する。インターネットサーバ401がWebサーバである場合、インターネットサービスはWebサイトであるが、インターネットサーバ401がメールサーバである場合、インターネットサービスはメールボックスである。同様に、ゲームサーバはオンラインビデオゲームの形式のインターネットサービスをホスティングし、データベースサーバはオンラインデータベースの形式でインターネットサービスをホスティングし、アプリケーションサーバはインターネットを使用して実行するアプリケーションの形式でインターネットサービスをホスティングする。
【0079】
ブロックチェーントランザクションをブロックチェーンネットワークに提出するために、1つ以上のブロックチェーンノード104に直接接続する代わりに、第1パーティ402a(つまり、第1パーティ402aにより操作されるクライアントアプリケーション105a)は、インターネットサーバ401によりホスティングされるインターネットサービスを介してインターネットサーバ401に接続するよう構成される。第1パーティ402aは、ここでもインターネットサービスを介して、ブロックチェーントランザクションの1つ以上のコンポーネントをインターネットサーバに提供する。つまり、第1パーティ402aは、インターネットサービスを介して、インターネットサーバ401に、ブロックチェーントランザクションの少なくとも部分を送信する。幾つかの例では、第1パーティ402aは、完全なブロックチェーントランザクションを提供する。他の例では、第1パーティ402aは、トランザクションテンプレイトを完成させるために、ブロックチェーントランザクションの1つ以上のインプット及び/又は1つ以上のアウトプットを送信する。インプット又はアウトプットを送信することは、インプットデータ(例えば、アンロックスクリプト又はアンロックスクリプトの部分)又はアウトプットデータ(例えば、ロックスクリプト又はロックスクリプトの部分)を送信することを意味すると考えられることに留意する。例えば、第1パーティ402aは、第1パーティ402aにより所有される秘密鍵を用いて生成された署名を、インターネットサーバ401に送信してよい。別の例として、第1パーティ402aは、第1パーティ402a又は第2パーティ402bにリンクされてよい公開鍵又は公開鍵ハッシュを供給してよい。
【0080】
インターネットサーバ401によりホスティングされるインターネットサービスは、データを入力するための1つ以上のデータエントリフィールド(つまり、インプットフィールド)を含んでよい。第1パーティ402aは、トランザクションデータ、例えば署名、公開鍵、トランザクション識別子、トランザクションアウトポイント、等をデータエントリフィールドを用いて入力してよい。同様に、インターネットサービスは、トランザクションデータ、例えば署名又は公開鍵ハッシュを生成する1つ以上の機能を含んでよい。
【0081】
望ましくは、第1パーティ402aはインターネットサーバ401とのセキュアな通信チャネルを有し、及び/又は第1パーティ402aは1つ以上の暗号技術を使用してセキュリティ及び/又はプライバシを保護することに留意する。これらは以下で議論される。
【0082】
インターネットサーバ401は、1つ以上のトランザクションコンポーネントを取得し、これらのコンポーネントを含むトランザクションを1つ以上のブロックチェーンノード104に送信するよう構成される。第1パーティ402aが完全なトランザクションを供給した場合、インターネットサーバ401は、該トランザクションをブロックチェーンノード104へ転送する。代替として、インターネットサーバ401は、トランザクションコンポーネントに基づき、例えばコンポーネント、つまりデータをトランザクションテンプレイトに入力することにより、トランザクションを生成してよい。
【0083】
図5は、第1パーティ402aからインターネットサーバ401を介してブロックチェーンネットワークへのトランザクションの例示的なフローを示す。図示のように、実際には、複数のインターネットサーバ401によりサービスされる多数の異なるパーティ402(例えば、ユーザ)が存在してよい。任意の所与のインターネットサーバ401は、単一のパーティ402又は複数のパーティ402にサービスしてよい。同様に、インターネットサーバ401は、1つのブロックチェーンノード104のみに、又は複数のブロックチェーンノード104に接続されてよい。
【0084】
インターネットサーバ401は、各々のブロックチェーンノード104への1つ以上の各々の接続を介して、ブロックチェーンネットワーク106への永久的な接続を維持してよい。代替として、インターネットサーバ401は、1つ以上のブロックチェーンノード104に周期的に接続してよく、又はインターネットサーバ401はアドホックベースで接続してよい。
【0085】
インターネットサーバ401は、最小限の数のブロックチェーンノードへの接続を維持してよい。例えば、接続の数が所定の最小値を下回った場合、インターネットサーバ401は、1つ以上の追加ノードに接続して、接続の数を少なくとも所定の最小値にまで戻してよい。
【0086】
これとは対照的に、第1パーティ402aは、インターネットサーバ401への永続的な接続を持つ必要はなく、代わりに、例えばインターネットサービスを使用するときに、インターネットサービスを介して、アドホックベースで、インターネットサーバ401に接続することができる。ただし、第1パーティ402aがインターネットサービスを介してインターネットサーバ401に永続的に接続されている可能性も排除されない。
【0087】
システム400が第2パーティ402bを含む実施形態では、第2パーティ402bは第1パーティ402aに要求メッセージを送信することができる。要求メッセージは、例えばサイドチャネル107を介して、第1パーティ402aに直接送信することができる。あるいは、インターネットサーバ401を介して要求メッセージを送信することもできる。すなわち、第2パーティ402aは、インターネットサーバ401がホスティングするインターネットサービスを利用して、インターネットサーバ401に要求メッセージを送信し、インターネットサーバは、インターネットサービスを利用して、第1パーティ402aに要求メッセージを提示することができる。説明のための例として、要求メッセージは、Webサーバ401がホスティングするWebサイト(例えば、ソーシャルメディアサイト)を利用して入力され、提示されることができる。
【0088】
要求メッセージは、例えば商品やサービスの見返りとして、第1パーティ402aが所有する多数のデジタルアセットを第2パーティ402bに割り当てる要求を含むことができる。追加又は代替として、要求メッセージは、ブロックチェーントランザクションの1つ以上のコンポーネントを含むことができる。例えば、要求メッセージは、第2パーティ402bにリンクされた公開鍵(又はそのハッシュ)を含むロックスクリプトを含むことができる。
【0089】
第1パーティ402aは、要求メッセージの受信に応答して、ブロックチェーントランザクション(又はブロックチェーントランザクションの少なくとも1つ以上のコンポーネント)をインターネットサーバ401に送信することができる。例として、第2パーティ402bはブロックチェーンアドレスを第1パーティ402aに(例えば、インターネットサーバ401を介して)送信し、第1パーティ402aはUTXOをアンロックするための署名をインターネットサーバ401に送信することができる。その後、インターネットサーバ401は、これらのコンポーネントに基づいて、ブロックチェーンネットワーク106に送信するためのトランザクションを策定する(formulate)ことができる。
【0090】
なお、第1パーティ402aは、第2パーティ402bによって実行されたと説明されている要求メッセージに関連付けられた任意のアクションを、必要な適応を伴って実行することができる。つまり、第1パーティ402aは、例えば、第1パーティ402aにリンクされたブロックチェーンアドレスにデジタルアセットの金額を割り当てるために、第2パーティ402bに要求メッセージを送信することができる。
【0091】
幾つかの実施形態では、第1パーティ402aがブロックチェーントランザクション(又はそのコンポーネント)をインターネットサーバ401に送信した後、インターネットサーバ401が後にブロックチェーンネットワーク106にブロックチェーントランザクションを送信した後、インターネットサーバ401が更新メッセージを第1パーティ402aに送信することができる。更新メッセージは、インターネットサービスを介して第1パーティ402aに提示される。
【0092】
一般に、更新メッセージは、ブロックチェーンネットワーク106に送提出されたトランザクションに関する情報を含む。更新メッセージは、トランザクション自体、すなわち、第1パーティ402aによって提供され、ネットワーク106に提出されたコンポーネントを含むトランザクションのコピーを含む場合がある。更新メッセージは、追加又は代替オプションとして、トランザクションがブロックチェーン150で正常に公開されたことの指示を含むメッセージを含む場合がある。指示は、トランザクションが含まれているブロック151のブロックヘッダを含んでよい。幾つかの例では、更新メッセージは、トランザクションがブロック151に含まれていることを検証するためのマークル(Merkle)パスを含むことがある。Merkleパスは、トランザクションのハッシュとともに、MerkleツリーのMerkleルートを計算するために使用されるハッシュのセットを含む。Merkleパスとトランザクションのハッシュを使用して生成されたMerkleルートが、ブロックチェーン150のブロック151のブロックヘッダに対応する場合、第1パーティ402aは、トランザクションがそのブロック151に含まれていたことを確認できる。
【0093】
別のオプション機能として、インターネットサーバ401は、第1パーティ402aに関連付けられた連絡先(すなわち、他のパーティ402)のリストを維持するように構成できる。各連絡先について、インターネットサーバ401は、その連絡先にリンクされた、つまりその連絡先によって所有されている、1つ以上のブロックチェーンアドレス(例えば、公開鍵や公開鍵ハッシュ)を記録することもできる。インターネットサーバ401は、インターネットサービスを介して、連絡先及び/又はブロックチェーンアドレスのリストを第1パーティ402aに転送することができる。第1パーティ402aは、この情報を使用して第1パーティの連絡先に接続できる。この意味で、連絡先との接続は、第1パーティ402aが所有するデジタルアセットを連絡先のうちの1つ(例えば、第2パーティ402b)に割り当てることを含む場合がある。
【0094】
前述のように、インターネットサーバ401は、Webサービス、例えばWebサイトをホスティングするWebサーバである場合がある。つまり、Webサーバ401は、第1パーティ402aに対して、1つ以上のWebページを提供する場合がある。望ましくは、第1パーティ402a(すなわち、第1パーティ402aが操作するクライアントアプリケーション)とWebサーバ401はハイパーテキスト転送プロトコル(Hypertext Transfer Protocol (HTTP))を使用して通信する。例えば、トランザクション(又はそのコンポーネント)は、HTTPを使用してWebサーバ401に送信することができる。同様に、要求メッセージをHTTPを使用してWebサーバ401へ送信する/から受信することもできる。更新メッセージは、HTTPを使用してWebサーバ401から第1パーティ402aに送信することもできる。HTTPが好適であるが、第1パーティ402aとWebサーバの間で、簡易メール転送プロトコル(Simple Mail Transfer Protocol (SMTP))又はファイル転送プロトコル(File Transfer Protocol (FTP))などの代替プロトコルを使用してデータを送信することも除外されない。
【0095】
代替として、インターネットサーバ401は、メールサービス、例えば電子メールアプリケーションをホスティングするメールサーバである場合がある。第1パーティ402aから見ると、メールサーバは、受信メールサーバ及び/又は送信メールサーバであってもよい。第1パーティ402aとメールサーバは、送信メッセージには単一の簡易メール転送プロトコル(Simple Mail Transfer Protocol (SMTP))を、受信メッセージにはポストオフィスプロトコル(Post Office Protocol (POP))、例えばPOP3、又はインターネットメッセージアクセスプロトコル(Internet Message Access Protocol (IMAP))のいずれかを使用して通信してもよい。
【0096】
Webサイト又は電子メールアプリケーションは、ブロックチェーントランザクション又はそのコンポーネントを各々Webサーバ又はメールサーバに送信するように構成された組み込み関数を含むことができる。例えば、既存の電子メールアプリケーションを変更して、トランザクションデータを受信及び/又は生成するように構成されたデータ入力フィールド又は「ボタン」を含めることができる。Webサイト(例えば、ソーシャルメディアサイトやその他の種類のWebページ)にも、同様に構成された機能が含まれる場合がある。
【0097】
以下は、本発明の実施形態を実装するように構成されたWebサーバ及びメールサーバに関する更なる詳細を提供する。
【0098】
インターネットサーバ401は、Web2.0サーバであってもよい。Web2.0は、第2世代のワールドワイドウェブを表す。Web2.0は、ユーザがソーシャルメディア、ブログ、その他のWebベースのコミュニティを通じてオンラインで情報を共有するためのインタラクティブで動的なWeb経験を提供する。Webのバックエンドインフラストラクチャは同じままであるが、フロントエンドは、新しいユーザ情報フローと、ユーザ入力に応答する動的コンテンツをサポートするために、例えばAJAXやJavaScriptフレームワークによってサポートされるWebブラウザ技術で強化されている。
【0099】
Web2.0サーバ(及び一般的なWebサーバ)は、ブロックチェーンネットワーク106上のブロックチェーンノード104にトランザクションを伝播するために使用されることがある。ユーザ402aは、ブラウザベースのクライアントアプリケーションを操作することができ、これは、簡易支払い検証(simplified payment verification (SPV))方法に作用することがある。本願は、例えばソーシャルメディアサイトなどのWeb2.0プラットフォーム上で、ブラウザ拡張機能として表れることがある。ユーザは、アプリケーションAPIを使用してトランザクションを作成することができる。その後、アプリケーションは、1つ以上のWeb2.0サーバを介して、1つ以上のブロックチェーンノード104にトランザクションを伝播する。これらのブロックチェーンノードは、トランザクションを妥当性確認し、例えばWeb2.0サーバを介してクライアントアプリケーションに更新を返送する場合がある。図5は、この処理を概略的に示している。
【0100】
SPVクライアントアプリケーションは高いレベルの接続性を必要とするため、本発明を利用することができる。このようなアプリケーションでは、ブロックチェーン150上で公開されるトランザクションに機密データが含まれているため、高度なセキュリティが必要になることもある。そのため、Webサーバに提出されるデータは、ユーザ402aにより、又はWebサービスによって暗号化される場合がある。
【0101】
Webサーバを使用したブロックチェーンネットワーク106への接続は、ネットワーク発見中に新しいユーザをブートストラップするためにも使用される場合がある。URLFluxベースのコマンド及び制御(URL Flux-based Command and Control (UFCC))は、Web2.0サービスを使用した通信のための集中型アーキテクチャである。UFCCは、アクティブなピアへのWebリンクを介してネットワーク内のピアリストを管理する。リンクは通常、24時間のオンライン可用性を約束する一般的なWeb2.0サービスにアップロードされる。SPVクライアントアプリケーションの場合、ブートストラップ手順中に他のオンラインピア(すなわち、SPVクライアントアプリケーションの各々のインスタンスを操作しているピア)と接続するためのUFCC通信システムを実装できる。
【0102】
ブロックチェーンノード104は、ブロックチェーンネットワーク106に参加するときに、同様のブートストラップ処理を使用して、他のブロックチェーンノード104を発見することができる。例えば、ブロックチェーンノード104は、トランザクションをオンラインノード104にブロードキャストするために、他のブロックチェーンノード104のリスト(ソーシャルメディアアカウント上の連絡先のリストなど)をダウンロードして、ブロックチェーンネットワーク106でどのブロックチェーンノード104がアクティブ(例えば、「オンライン」)であるかを知ることができる。このリストはインターネットサーバ401によって維持され、例えば要求に応じてノード104にリストを送信することができる。リストには識別子(例えば、ネットワークアドレス、公開鍵など)のリストを含めることができる。各識別子は異なるノード104に関連付けられる。
【0103】
インターネットサーバは、メールサーバであってもよい。メールサーバは、電子メールアカウントに類似したクライアントアプリケーションを提供するために使用される場合がある。メールサーバは、ユーザ402(アカウント保持者)のアドレス(例えば公開鍵や公開鍵ハッシュ)を監視してUTXOを統合し、アカウント情報をメールサーバに保存する。この情報は、ユーザがアカウントにアクセスしたときにユーザに提示されることがある。
【0104】
メールサーバは非保管の場合がある。すなわち、サーバは第1パーティ402aの代理としてデジタル鍵を保存しない。サーバ401は、アカウント保持者(第1パーティ402a)のID(identity)を証明する顧客の本人確認(know-your-customer (KYC))情報をファイルすることができる。この情報は、オンチェーン又はオフチェーンに格納することができる。例えば、サーバ401は、ブロックチェーントランザクションに埋め込まれたデジタルID証明書の場所へのポインタを格納することができる。サーバ401は、UTXOセット内の関連するトランザクションIDを監視して、ユーザの認証済み鍵が最新であること、すなわちデジタル証明書の有効期限が切れていないことを確認する。サーバ401は、ユーザの認証済み鍵の有効期限が切れていない場合にのみ、トランザクションをブロックチェーン150に提出することができる。これは、他の種類のインターネットサーバ401にも適用できることに注意する。
【0105】
前述のように、暗号技術は、インターネットサーバ401を介してトランザクションを伝播する際に、ユーザのセキュリティ及び/又はプライバシが保たれることを保証するために使用される場合がある。例えば、第1パーティ402aは、デジタル鍵管理を実装して、個々のトランザクションに署名するために使用される一意のデジタル鍵ペアを循環させることができる。例えば、トランザクションに署名するために同じ鍵が複数回使用されることがない。同様に、第2パーティ402b(例えば商人)は、第1パーティ402aが認証済み鍵でトランザクションに署名することを要求することによって、顧客の本人確認(KYC)及び/又はマネーロンダリング防止(anti-money laundering (AML))の規制遵守を確保できる。デジタル鍵ペアは一度しか使用されないことが望ましいため、認証済みルート鍵から導出した階層的な決定鍵を使用して、ユーザのデジタル鍵ペアを認証済みIDに暗号的にリンクすることができる。例えば、GB1913704.1を参照のこと。この方法をシークレット値導出方法と組み合わせて、共有シークレットを鍵の導出パスに埋め込むことで、送信者と受信者の間にプライベートリンクを作成することもできる(例えば、WO/2017/145016を参照のこと)。別の例として、より大きな資金にリンクされているユーザの秘密鍵を保護するための追加の措置を講じることができる。ユーザは、秘密鍵のシェアから導出したデジタル署名でトランザクションに部分的に署名することができる。完全なトランザクションをブロードキャストするには、閾数の署名に達する必要がある。完全な秘密鍵(すべての鍵シェアの組み合わせ)は存在しないことに注意する。つまり、悪意のあるエージェントによってユーザのWebウォレットから盗まれることはない。当業者は、閾値署名方式をよく知っている。最後に、第1パーティ402aは暗号化されたブラウザを使用することができ、これにより、HTTPS通信プロトコルに従ってTLSクライアント/サーバ鍵暗号化を使用してトラフィックを暗号化できる。これは、ユーザとサーバの両方の楕円曲線デジタル署名アルゴリズム(ECDSA)鍵に基づくWebウォレット発行者のSSLサーバ証明書とSSLクライアント証明書である場合がある。
【0106】
図6及び7は、本発明の例示的な使用例を示す。図6は、ブロックチェーン150を使用してユーザ(第1パーティ402a)に製品の販売を行う商人(第2パーティ402b)を示している。図7は、ブロックチェーン150を使用してユーザから製品の返金要求を受ける商人を示している。この例は説明目的のみであり、この技術は他の使用例により一般的に適用される可能性があることが理解される。つまり、本発明の実施形態は、顧客-商人型の相互作用に限定されない。
【0107】
図6に示すシーケンスは次の通りである。幾つかのステップは任意であることが理解されるであろう。ステップ1で、商人402bはインターネットサーバ401に支払い要求を送信する。支払い要求は、デジタルアセットの金額の要求を含むことができる。支払い要求は、デジタルアセットの金額を商人402bに関連付けられたブロックチェーンアドレスにロックするためのロックスクリプト、又はロックスクリプトの一部を含むことができる。インターネットサーバ401が信頼できる第3者によって運用され、及び/又はセキュアな通信チャネルが使用されている場合は、支払い要求には、完全なロックスクリプトではなく、望ましくはロックスクリプトの一部のみが含まれることに注意する。ステップ2で、インターネットサーバ401は、顧客がオンラインになったとき、例えばWebサービスや電子メールアプリケーションにアクセスしたときに、顧客402aに送信する要求を保存する。ステップ3で、顧客402aがオンラインになり、インターネットサーバ401は顧客402aに要求を送信する。ステップ4で、顧客402aが要求に応答する。顧客402aは要求を拒否することができるため、インターネットサーバ401に拒否メッセージを返信し、インターネットサーバは商人402bに転送する。代替として、図6に示すように、顧客402aが要求を受け入れることもできる。これには、顧客が以前のトランザクションのUTXOをアンロックするための署名など、署名をインターネットサーバ401に送り返すことが含まれる場合がある。
【0108】
その後、インターネットサーバ401は幾つかのオプションのいずれかを取ることができ、そのうちの2つが示されている。一例では、ステップ5aで、インターネットサーバ401は署名済みトランザクションをブロックチェーンネットワーク106に直接送信する。例えば、インターネットサーバ401は、支払い要求に含まれるデータと顧客402aからの署名を使用して、トランザクションテンプレイトを完成させることができる。ステップ6aと7aで、インターネットサーバ401は、商人402bと顧客402aに各々更新を送信する。更新には、トランザクションがブロック151に含まれていることを検証するためのMerkleパス、又はトランザクションに関連するその他のデータを含めることができる。
【0109】
別の例では、ステップ5bで、インターネットサーバ401は署名済みトランザクションを商人402bに送信する。ステップ6bで、商人は、インターネットサーバ401に送信する前に、トランザクションをチェックし、完了させる、例えばトランザクションに署名することができる。代替として、商人は、ノード104に直接接続している場合は、ブロックチェーンネットワーク106にトランザクションを提出することができる。ステップ7bで、インターネットサーバ401はトランザクションをブロックチェーンネットワーク106に送信する。ステップ8bと9bで、インターネットサーバ401は、商人402bと顧客402aに各々更新を送信する。
【0110】
図7に示すシーケンスは次の通りである。幾つかのステップは任意であることが理解されるであろう。図7のステップは図6のステップと同様である。ステップ1で、顧客402aはインターネットサーバ401に返金要求を送信する。返金要求は、デジタルアセットの金額の要求を含むことができる。返金要求は、デジタルアセットの金額を顧客402aに関連付けられたブロックチェーンアドレスにロックするためのロックスクリプト、又はロックスクリプトの一部を含むことができる。支払い要求の場合のように、インターネットサーバ401が信頼できる第3者によって運用され、及び/又はセキュアな通信チャネルが使用されている場合は、返金要求には、完全なロックスクリプトではなく、望ましくはロックスクリプトの一部のみが含まれる。ステップ2で、インターネットサーバ401は、商人がオンラインになったとき、例えばWebサービスや電子メールアプリケーションにアクセスしたときに、商人402aに送信する要求を保存する。ステップ3で、商人402bがオンラインになり、インターネットサーバ401は商人402bに要求を送信する。インターネットサーバ401は、商人402bが要求を受け入れるための証明として、顧客の認証済み鍵を送信することができる。ステップ4で、商人402bが要求に応答する。商人402bは要求を拒否することができるため、インターネットサーバ401に拒否メッセージを返信し、インターネットサーバは顧客402aに転送する。代替として、図7に示すように、商人402aが要求を受け入れることもできる。これには、商人402bが、以前のトランザクションのUTXOをアンロックするための署名など、署名をインターネットサーバ401に送り返すことが含まれる場合がある。インターネットサーバ401は、商人402bによって送信された場合、完全なトランザクションとMerkleパスを保存することがある。代替として、商人402bは入力トランザクションをダウンロードし、Merkleパスを検索することもある。ステップ5で、インターネットサーバ401は署名済みトランザクションをブロックチェーンネットワーク106に直接送信する。例えば、インターネットサーバ401は、返金要求に含まれるデータと商人402bからの署名を使用して、トランザクションテンプレイトを完成させることができる。ステップ6と7で、インターネットサーバ401は、商人402bと顧客402aに各々更新を送信する。更新には、トランザクションがブロック151に含まれていることを検証するためのMerkleパス、又はトランザクションに関連するその他のデータを含めることができる。
【0111】
要約すると、既存のWeb及びメールサーバのインフラストラクチャを使用して、ブロックチェーンネットワーク106へのユーザ(及びその他のパーティ)402の接続性を高めることができる。ブロックチェーントランザクションは、Webサーバ(例えば、Web2.0サーバ)経由でブロックチェーンノード104にブロードキャストされる場合がある。ネットワーク発見は、Webサービス又は電子メールサービスにも接続されているアクティブなピアへの新しいユーザのブートストラップ手順中に改善できる。本発明は、高度なネットワーク接続が必要なSPV方式を使用する軽量クライアントアプリケーションに特に有利である。軽量クライアントはブロックチェーン全体へのアクセスを必要としないため、トランザクションはWeb又はメールサービスを介して伝播できる。通常、大規模なユーザベースと24時間のオンライン可用性により、Web2.0サービス(及びその他のインターネットサービス)は、ブロックチェーンクライアントアプリケーションのトランザクション伝播を促進する上で非常に効果的である。HTTPベースのアプリケーションに加えて、SMTP及びIMAP/POPプロトコルを使用して、電子メールアカウントに類似したメールサーバを使用してトランザクションを伝播できる。
【0112】
<結論>
開示された技術の他の変形例又は使用事例は、本明細書で開示されると、当業者に明らかになり得る。本開示の範囲は、記載された実施形態によって限定されるものではなく、添付の特許請求の範囲によってのみ限定される。
【0113】
例えば、上述の幾つかの実施形態は、ビットコインネットワーク106、ビットコインブロックチェーン150、及びビットコインノード104の観点で説明された。しかしながら、ビットコインブロックチェーンは、ブロックチェーン150の1つの特定の例であり、上述の説明は任意のブロックチェーンに一般的に適用されてよいことが理解される。つまり、本発明は、ビットコインブロックチェーンに何ら限定されない。より一般的には、上述のビットコインネットワーク106、ビットコインブロックチェーン150、及びビットコインノード104への言及は、ブロックチェーンネットワーク106、ブロックチェーン150、及びブロックチェーンノード104により各々置き換えられてよい。ブロックチェーン、ブロックチェーンネットワーク、及び/又はブロックチェーンノードは、ビットコインブロックチェーン150、ビットコインネットワーク106、及びビットコインノード104の上述の特性の一部又は全部を共有してよい。
【0114】
本発明の好適な実施形態では、ブロックチェーンネットワーク106は、ビットコインネットワークであり、ビットコインノード104はブロックチェーン150のブロック151を生成し、公開し、伝播し、及び格納する上述の機能の少なくとも全部を実行する。これらの機能の全部ではなく1つ又は一部のみを実行する他のネットワークエンティティ(又はネットワーク要素)が存在することが除外されない。つまり、ネットワークエンティティは、ブロックを伝播し及び/又は格納する機能を実行してよいが、ブロックを生成し公開しなくてよい(これらのエンティティが好適なビットコインネットワーク106のノードと見なされないことを思い出してほしい)。
【0115】
本発明の好適でない実施形態では、ブロックチェーンネットワーク106はビットコインネットワークでなくてもよい。これらの実施形態では、ノードが、ブロックチェーン150のブロック151を生成し、公開し、伝播し、及び格納する機能の全部ではなく少なくとも1つ又は一部を実行してよいことが除外されない。例えば、これらの他のブロックチェーンネットワークでは、「ノード」は、ブロック151を生成し公開するよう構成されるが該ブロック151を格納し及び/又は他のノードに伝播しないネットワークエンティティを表すために使用されてよい。
【0116】
更に一般的には、上述の用語「ビットコインノード」104の言及は、用語「ネットワークエンティティ」又は「ネットワーク要素」と置き換えられてよい。このようなエンティティ/要素は、ブロックを生成し、公開し、伝播し、及び格納する役割のうちの一部又は全部を実行するよう構成される。そのようなネットワークエンティティ/要素の機能は、ハードウェアで、ブロックチェーンノード104を参照して上述したのと同じ方法で実装されてよい。
【0117】
上記の実施形態は、単なる例示として説明したものであることが理解されるであろう。より一般的には、以下の記述のうちの任意の1つ以上に従った方法、装置又はプログラムが提供され得る。
【0118】
(ステートメント1)
ブロックチェーントランザクションをブロックチェーンネットワークに送信する、コンピュータが実施する方法であって、前記方法は、第1パーティにより実行され、
ブロックチェーントランザクションの少なくとも部分を、インターネットサーバによりホスティングされるインターネットサービスを介して前記インターネットサーバへ送信するステップであって、前記インターネットサーバは、前記ブロックチェーンネットワークの1つ以上のノードに結合し、ブロックチェーントランザクションをブロックチェーンの前記1つ以上のノードに送信するよう構成され、前記送信されたブロックチェーントランザクションは、前記ブロックチェーントランザクションの前記少なくとも部分を含む、ステップを含む方法。
【0119】
(ステートメント2)
前記インターネットサーバはWebサーバであり、前記インターネットサービスはWebサービスである、ステートメント1に記載の方法。
【0120】
(ステートメント3)
前記ブロックチェーントランザクションの前記少なくとも部分は、ハイパーテキスト転送プロトコル(HTTP)を用いて前記Webサーバに送信される、ステートメント2に記載の方法。
【0121】
(ステートメント4)
前記インターネットサーバはメールサーバであり、前記インターネットサービスはメールサービスである、ステートメント1に記載の方法。
【0122】
(ステートメント5)
前記ブロックチェーントランザクションの前記少なくとも部分は、簡易メール転送プロトコル(SMTP)を用いて前記メールサーバに送信される、ステートメント4に記載の方法。
【0123】
(ステートメント6)
前記インターネットサービスはデータを入力するための入力フィールドを含み、
前記方法は、前記入力フィールドを介して前記ブロックチェーントランザクションの前記少なくとも部分を入力するステップを含むステートメント1~5のいずれかに記載の方法。
【0124】
(ステートメント7)
前記ブロックチェーントランザクションの前記少なくとも部分を生成するステップを含むステートメント1~6のいずれかに記載の方法。
【0125】
(ステートメント8)
前記ブロックチェーントランザクションの前記少なくとも部分は第2パーティにより生成される、ステートメント1~6のいずれかに記載の方法。
【0126】
(ステートメント9)
前記ブロックチェーントランザクションの前記少なくとも部分は、前記第1パーティ及び/又は前記第2パーティにより生成された各々のデジタル署名を含む、ステートメント1~8のいずれかに記載の方法。
【0127】
(ステートメント10)
前記ブロックチェーントランザクションの前記少なくとも部分は完全なブロックチェーントランザクションである、ステートメント1~9のいずれかに記載の方法。
【0128】
(ステートメント11)
前記インターネットサービスを介して前記インターネットサーバから要求メッセージを受信するステップを含み、前記前記ブロックチェーントランザクションの前記少なくとも部分を送信するステップは、前記要求メッセージの受信に応答し、前記要求メッセージは、
前のブロックチェーントランザクションの未使用トランザクションアウトプットを前記第2パーティに割り当てる要求であって、前記要求は前記第2パーティから生じる、要求、及び/又は、
前記第2パーティにより生成された前記ブロックチェーントランザクションの前記少なくとも部分、
を含む、ステートメント1~10のいずれかに記載の方法。
【0129】
(ステートメント12)
前記インターネットサービスを介して前記インターネットサーバに要求メッセージを送信するステップを含み、前記ブロックチェーントランザクションの前記少なくとも部分を送信するステップは、前記要求メッセージに対する応答の受信に応答し、前記要求メッセージは、
前のブロックチェーントランザクションの未使用トランザクションアウトプットを前記第1パーティに割り当てる要求であって、前記要求は前記第1パーティから生じる、要求、及び/又は、
前記第1パーティにより生成された前記ブロックチェーントランザクションの前記少なくとも部分、
を含む、ステートメント1~10のいずれかに記載の方法。
【0130】
(ステートメント13)
前記インターネットサービスを介して前記インターネットサーバから更新メッセージを受信するステップを含み、前記更新メッセージは、以下:
前記ブロックチェーントランザクション、
前記ブロックチェーントランザクションが前記ブロックチェーンのブロックの中で公表されたことの指示、及び/又は、
前記ブロックチェーントランザクションが前記ブロックチェーンの前記ブロックに含まれていることを検証するためのMerkleパス、
のうちの少なくとも1つを含む、ステートメント1~12のいずれかに記載の方法。
【0131】
要求メッセージは、HTTPを使用して送受信できる。更新メッセージは、HTTPを使用して受信できる。要求メッセージ又は更新メッセージは、ポストオフィスプロトコル(POP)、又はインターネットメッセージアクセスプロトコル(IMAP)のいずれかを使用して受信できる。要求メッセージは、SMTPを使用して送受信できる。
【0132】
(ステートメント14)
前記インターネットサービスを介して前記インターネットサーバから、前記第1パーティに関連付けられたコントラクトのリストを受信するステップを含み、前記リスト内のコントラクト毎に、前記リストは、該コントラクトに関連付けられた各々の1つ以上のブロックチェーンアドレスを含む、ステートメント1~13のいずれかに記載の方法。
【0133】
(ステートメント15)
前記ブロックチェーントランザクションのアウトプットは、前記コントラクトのうちの1つに関連付けられたブロックチェーンアドレスにロックされる、ステートメント14に記載の方法。
【0134】
(ステートメント16)
ブロックチェーントランザクションをブロックチェーンネットワークに送信する、コンピュータが実施する方法であって、前記方法は、1つ以上のブロックチェーンノードに結合するよう構成されるインターネットサーバにより実行され、
ブロックチェーントランザクションの少なくとも部分を、インターネットサーバによりホスティングされるインターネットサービスを介して第1パーティから受信するステップと、
ブロックチェーントランザクションを前記1つ以上のブロックチェーンノードに送信するステップであって、前記ブロックチェーントランザクションは、前記ブロックチェーントランザクションの前記少なくとも部分を含む、ステップと、
を含む方法。
【0135】
(ステートメント17)
前記インターネットサーバはWebサーバであり、前記インターネットサービスはWebサービスである、ステートメント16に記載の方法。
【0136】
(ステートメント18)
前記ブロックチェーントランザクションの前記少なくとも部分は、ハイパーテキスト転送プロトコル(HTTP)を用いて前記第1パーティから受信される、ステートメント17に記載の方法。
【0137】
(ステートメント19)
前記インターネットサーバはメールサーバであり、前記インターネットサービスはメールサービスである、ステートメント16に記載の方法。
【0138】
(ステートメント20)
前記ブロックチェーントランザクションの前記少なくとも部分は、簡易メール転送プロトコル(SMTP)を用いて前記第1パーティから受信される、ステートメント19に記載の方法。
【0139】
(ステートメント21)
前記ブロックチェーントランザクションの前記少なくとも部分を用いて、前記ブロックチェーントランザクションを生成するステップを含むステートメント16~20のいずれかに記載の方法。
【0140】
(ステートメント22)
前記インターネットサービスを介して第2パーティから要求メッセージを受信するステップと、
前記インターネットサービスを介して前記第1パーティに前記要求メッセージを送信するステップと、
を含み、前記要求メッセージは、
前のブロックチェーントランザクションの未使用トランザクションアウトプットを前記第2パーティに割り当てる要求、及び/又は、
前記第2パーティにより生成された前記ブロックチェーントランザクションの前記少なくとも部分、
を含む、ステートメント1~21のいずれかに記載の方法。
【0141】
(ステートメント23)
前記インターネットサービスを介して前記第1パーティに更新メッセージを送信するステップを含み、前記更新メッセージは、以下:
前記ブロックチェーントランザクション、
前記ブロックチェーントランザクションが前記ブロックチェーンのブロックの中で公表されたことの指示、及び/又は、
前記ブロックチェーントランザクションが前記ブロックチェーンの前記ブロックに含まれていることを検証するためのMerkleパス、
のうちの少なくとも1つを含む、ステートメント1~22のいずれかに記載の方法。
【0142】
(ステートメント24)
前記要求メッセージはHTTPを用いて送信される、ステートメント17に従属するステートメント22に記載の方法。
【0143】
(ステートメント25)
前記更新メッセージはHTTPを用いて送信される、ステートメント17に従属するステートメント23に記載の方法。
【0144】
(ステートメント26)
前記要求メッセージはSMTPを用いて送信される、ステートメント19に従属するステートメント22に記載の方法。
【0145】
(ステートメント27)
前記更新メッセージはSMTPを用いて送信される、ステートメント19に従属するステートメント23に記載の方法。
【0146】
(ステートメント28)
前記第1パーティに関連付けられたコントラクトのリストを維持するステップであって、前記コントラクトのリストは、コントラクト毎に、該コントラクトに関連付けられた1つ以上のブロックチェーンアドレスを含む、ステップと、
前記第1パーティに前記コントラクトのリストを送信するステップと、
を含むステートメント16~27のいずれかに記載の方法。
【0147】
(ステートメント29)
ブロックチェーンネットワークの1つ以上のブロックチェーンノードを発見する、コンピュータが実施する方法であって、インターネットサーバは識別子のリストを維持し、各識別子は、各々のブロックチェーンノードに関連付けられ、前記方法は、
前記インターネットサーバから1つ以上の識別子を取得するステップであって、各識別子は各々のブロックチェーンノードに関連付けられる、ステップと、
前記取得した1つ以上の識別子を用いて、前記関連付けられた1つ以上のブロックチェーンノードに結合するステップと、
を含む方法。
【0148】
(ステートメント30)
前記方法は、前記1つ以上のブロックチェーンノード以外の別のブロックチェーンノードにより実行される、ステートメント29に記載の方法。
【0149】
(ステートメント31)
コンピュータ機器であって、
1つ以上のメモリユニットを含むメモリと、
1つ以上の処理ユニットを含む処理機器と、
を含み、
前記メモリは、前記処理機器上で実行するよう構成されるコードを格納し、前記コードは前記処理機器上で実行するとステートメント1~30のいずれかに記載の方法を実行するよう構成される、コンピュータ機器。
【0150】
(ステートメント32)
コンピュータ可読記憶装置上に具現化され、コンピュータ機器上で実行するとステートメント1~30のいずれかに記載の方法を実行するよう構成される、コンピュータプログラム。
【0151】
本願明細書に開示される別の態様によると、前記第1パーティ及び前記インターネットサーバの動作を含む方法が提供され得る。
【0152】
本願明細書に開示される別の態様によると、前記第1パーティ及び前記インターネットサーバのコンピュータ機器を含むシステムが提供され得る。
図1
図2
図3A
図3B
図4
図5
図6
図7
【国際調査報告】