JP2022548583A - ブロックチェーンのトランザクションを介するデータの共有 - Google Patents
ブロックチェーンのトランザクションを介するデータの共有 Download PDFInfo
- Publication number
- JP2022548583A JP2022548583A JP2022516101A JP2022516101A JP2022548583A JP 2022548583 A JP2022548583 A JP 2022548583A JP 2022516101 A JP2022516101 A JP 2022516101A JP 2022516101 A JP2022516101 A JP 2022516101A JP 2022548583 A JP2022548583 A JP 2022548583A
- Authority
- JP
- Japan
- Prior art keywords
- transaction
- data
- party
- blockchain
- access
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
- G06F16/9558—Details of hyperlinks; Management of linked annotations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
- H04L63/067—Network architectures or network communication protocols for network security for supporting key management in a packet data network using one-time keys
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/083—Network architectures or network communication protocols for network security for authentication of entities using passwords
- H04L63/0838—Network architectures or network communication protocols for network security for authentication of entities using passwords using one-time-passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/18—Network architectures or network communication protocols for network security using different networks or channels, e.g. using out of band channels
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0863—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3226—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
- H04L9/3228—One-time or temporary data, i.e. information which is sent for every authentication or authorization, e.g. one-time-password, one-time-token or one-time-key
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3242—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Business, Economics & Management (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- Development Economics (AREA)
- Power Engineering (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本開示の第1の態様によると、ブロックチェーン上に格納された1つ以上の宛先トランザクションにアクセスする方法であって、前記方法は、前記宛先トランザクションにリンクする1つ以上のハイパーリンクを選択するステップを含む方法が提供される。本開示の第2の態様によると、宛先トランザクションからデータにアクセスすることを要求する要求-応答プロトコルが提供される。
Description
本開示は、文書又は画像のような追加データコンテンツを記録し及び通信するための、ブロックチェーンにおけるトランザクションの使用に関する。
ブロックチェーンとは、分散型データ構造の形式を指し、ブロックチェーンの複製のコピーは、ピアツーピア(peer-to-peer (P2P))ネットワーク内の複数のノードのそれぞれにおいて維持される。ブロックチェーンは、データのブロックのチェーンを含み、各ブロックは1つ以上のトランザクションを含む。各トランザクションは、1つ以上のブロックに渡り得るシーケンスの中の先行するトランザクションを指してよい。トランザクションは、新しいブロックに含まれるようネットワークへ提出され得る。新しいブロックは、「マイニング」として知られる処理により生成される。「マイニング」は、複数のマイニングノードの各々が「proof-of-work」を実行するために競争する、つまりブロックに含まれることを待っている保留中のトランザクションのプールに基づき、暗号パズルを解くことを含む。
ネットワーク内の各ノードは、転送、マイニング、及び記憶のうちの任意の1、2、又は3つ全部の役割を有することができる。転送ノードは、ネットワークのノードを通じてトランザクションを伝播させる。マイニングノードは、トランザクションのマイニングを実行してブロックにする。記憶ノードは、それぞれ、ブロックチェーンのマイニングされたブロックの彼ら自身のコピーを格納する。トランザクションをブロックチェーンに記録させるために、パーティは、該トランザクションを、伝播させるようにネットワークのノードのうちの1つへ送信する。トランザクションを受信したマイニングノードは、トランザクションをマイニングして新しいブロックにするよう競争してよい。各ノードは、トランザクションが有効であるための1つ以上の条件を含む同じノードプロトコルに関するよう構成される。無効なトランザクションは、伝播されず、マイニングされてブロックにされることもない。トランザクションが検証され、それによってブロックチェーンに受け入れられたと仮定すると、(任意のユーザデータを含む)トランザクションは、従って、不変の公開レコードとしてP2Pネットワークの各ノードに格納されたままである。
最新のブロックを生成するためにproof-of-workパズルを解くことに成功したマイナーは、標準的に、デジタルアセットの新しい額を生成する「生成トランザクション(generation transaction)」と呼ばれる新しいトランザクションにより報酬を受ける。proof-of-workは、ブロックをマイニングするために膨大な量の計算リソースを必要とするので、及び二重支払いの企てを含むブロックは他のノードにより受け入れられない可能性があるので、マイナーが、彼らのブロックに二重支払いトランザクションを含めることによりシステムを騙さないことを奨励する。
「アウトプットに基づく」モデル(UTXOに基づくモデルと呼ばれることもある)では、所与のトランザクションのデータ構造は、1つ以上のインプット及び1つ以上のアウトプットを含む。任意の使用可能アウトプットは、時にUTXO(「unspent transaction output(未使用トランザクションアウトプット)」)と呼ばれる、デジタルアセットの額を指定する要素を含む。アウトプットは、アウトプットを償還(redeem)するための条件を指定するロックスクリプトを更に含んでよい。各インプットは、先行するトランザクション内のそのようなアウトプットへのポインタを含み、ポイントされたアウトプットのロックスクリプトをアンロックするためのアンロックスクリプトを更に含んでよい。従って、トランザクションのペアを考えるとき、それらを、第1トランザクション及び第2トランザクション(又は「ターゲット」トランザクション)と呼ぶ。第1トランザクションは、デジタルアセットの額を指定する、及びアウトプットをアンロックする1つ以上の条件を定義するロックスクリプトを含む、少なくとも1つのアウトプットを含む。第2のターゲットトランザクションは、第1トランザクションのアウトプットへのポインタと、第1トランザクションのアウトプットをアンロックするためのアンロックスクリプトと、を含む少なくとも1つのインプットを含む。
このようなモデルでは、第2のターゲットトランザクションが、伝搬されてブロックチェーンに記録されるようP2Pネットワークへ送信されると、各ノードにおいて適用される有効性のための基準のうちの1つは、アンロックスクリプトが第1トランザクションのロックスクリプト内で定義された1つ以上の条件のうちの全部を満たすことである。もう1つは、第1トランザクションのアウトプットが、別の前の有効なトランザクションによって未だ償還されていないことである。これらの条件のうちのいずれかに従いターゲットトランザクションが無効であると分かった任意のノードは、該トランザクションを伝搬させず、ブロックチェーンに記録させるためにマイニングしてブロックに含めることもしない。
トランザクションモデルの代替のタイプは、アカウントに基づくモデルである。この場合、各トランザクションは、過去の一連のトランザクションにおいて、先行するトランザクションのUTXOに戻って参照することによって移転される量を定義するのではなく、絶対的な口座(アカウント)残高を参照することによって移転される。全てのアカウントの現在の状態は、ブロックチェーンとは別個のマイナーによって格納され、絶えず更新される。
従来、ブロックチェーン内のトランザクションは、デジタルアセット、すなわち、価値のストアとして機能するデータを伝達するために使用される。しかし、ブロックチェーンの上に追加の機能を積み重ねるために、ブロックチェーンを利用することもできる。例えば、ブロックチェーンプロトコルは、トランザクションのアウトプットに追加のユーザデータを格納することを可能にしてよい。現代のブロックチェーンは、単一トランザクション内に格納できる最大データ容量を増加させ、より複雑なデータを組み込むことを可能にしている。例えば、これは、ブロックチェーン内に電子文書(electronic document)、或いはオーディオ若しくはビデオデータを格納するために使用され得る。
所与のブロックチェーンの普及が進むにつれ、及び益々多くのリソースがオンチェーンに格納されることに伴い、ブロックチェーンは、テキスト、画像、及びオーディオのようなリソースを格納し、公開し、及びセキュアに通信する枠組みとして、World Wide Webのライバルになってきている。例えば、所謂、Metanetは、ブロックチェーンにより実装される1つのそのような枠組みである。
しかしながら、ブロックチェーンが成長し、コンテンツを格納し及び伝達するための手段として益々使用されるにつれ、チェーン上で所望のリソースを発見することも次第に困難になっている。これは、コンテンツを通信するための媒体としての、ブロックチェーンに基づくシステムの利用を妨げる可能性を有する。
これを解決するために、本願明細書に開示される1つの態様によると、消費者パーティのコンピュータ機器により実施される方法であって、
a)1つ以上のハイパーリンクを含む少なくとも第1文書にアクセスするステップであって、各ハイパーリンクは、アンカーコンテンツのそれぞれのピースとそれぞれのアンカーコンテンツに関連付けられたそれぞれの宛先のそれぞれの識別子とを含む、ステップと、
b)前記消費者パーティの前記コンピュータ機器のユーザ出力装置を通じて前記第1文書の少なくとも部分のコンテンツをレンダリングするステップであって、前記ハイパーリンクのうちの1つ以上のそれぞれのアンカーコンテンツをレンダリングすることを含む、ステップと、
c)前記消費者パーティの前記コンピュータ機器のユーザ入力装置を通じて、レンダリングされたコンテンツの中からそれぞれのアンカーコンテンツを選択することにより、前記ハイパーリンクのうちの1つを選択するユーザ入力を受信するステップと、
d)前記ユーザ入力に応答して、前記第1文書に含まれるそれぞれの識別子に基づき、前記関連付けられた宛先からデータに自動的にアクセスするステップと、
を含み、
少なくとも前記選択されたハイパーリンクのそれぞれの宛先は、ブロックチェーンネットワークの少なくとも幾つかのノードに渡り維持されるブロックチェーンの宛先トランザクションを含み、前記データのアクセスは、前記ブロックチェーンネットワークを介して前記ブロックチェーンの中の前記宛先トランザクションを検査するステップを含む、方法が提供される。
a)1つ以上のハイパーリンクを含む少なくとも第1文書にアクセスするステップであって、各ハイパーリンクは、アンカーコンテンツのそれぞれのピースとそれぞれのアンカーコンテンツに関連付けられたそれぞれの宛先のそれぞれの識別子とを含む、ステップと、
b)前記消費者パーティの前記コンピュータ機器のユーザ出力装置を通じて前記第1文書の少なくとも部分のコンテンツをレンダリングするステップであって、前記ハイパーリンクのうちの1つ以上のそれぞれのアンカーコンテンツをレンダリングすることを含む、ステップと、
c)前記消費者パーティの前記コンピュータ機器のユーザ入力装置を通じて、レンダリングされたコンテンツの中からそれぞれのアンカーコンテンツを選択することにより、前記ハイパーリンクのうちの1つを選択するユーザ入力を受信するステップと、
d)前記ユーザ入力に応答して、前記第1文書に含まれるそれぞれの識別子に基づき、前記関連付けられた宛先からデータに自動的にアクセスするステップと、
を含み、
少なくとも前記選択されたハイパーリンクのそれぞれの宛先は、ブロックチェーンネットワークの少なくとも幾つかのノードに渡り維持されるブロックチェーンの宛先トランザクションを含み、前記データのアクセスは、前記ブロックチェーンネットワークを介して前記ブロックチェーンの中の前記宛先トランザクションを検査するステップを含む、方法が提供される。
例えば、前記第1文書は、異なる宛先トランザクションへのそれぞれのハイパーリンクのリストを含んでよい。前記第1文書は、ハイパーテキスト文書であり、例えばHTMLのようなマークアップ言語で記述されてよいが、トランザクションをリンクする追加の種類のタグにより補強される。前記宛先トランザクションのうちの1つ以上の中のデータのアイテムは、それ自体が、1つ以上の更なるオンワードハイパーリンクを含み得る1つ以上の更なるハイパーテキスト文書のような1つ以上の更なる文書を含んでよい。
前記第1文書自体は、ブロックチェーン上の別のソーストランザクションに格納されることもできる。代替として、前記第1文書は、消費者パーティのコンピュータ機器にローカルに若しくは第三者サーバに格納された、ウェブページ、又はワード処理文書のような文書、電子メール、スプレッドシート、スライドショー、等であることもできる。
アウトプットに基づくモデルでは、文書又は他のそのようなデータコンテンツは、それらのそれぞれの文書の使用不可能アウトプット、例えばOP_RETURNにより使用不可能にされているアウトプットに格納されてよい。
代替又は追加の目的として、提供者パーティが支払いを受け取り及び消費者パーティがデータを受け取ることを保証する方法で、支払いをデータ転送と統合するメカニズムを提供することが望ましい。
従って、本開示の別の態様によると、消費者パーティが提供者パーティからのデータにアクセスする方法であって、前記データは、復号するためにアクセス鍵を必要とする暗号化形式でブロックチェーン上の第1トランザクションに格納される、方法が提供される。前記方法は、前記消費者パーティのコンピュータ機器により、
i)前記提供者パーティに、前記ブロックチェーンに記録するために第2トランザクションを通信するステップであって、前記第2トランザクションは、前記データに対する支払いを指定し、更に前記第1トランザクションの識別子と、前記データに対する要求を示す信号と、を含む、ステップと第2パーティが、前記ブロックチェーンに記録させるために、暗号化パスワードを含む第3トランザクションをブロードキャストすることに応答して、
ii)前記第3トランザクションから前記暗号化パスワードを読み出すために、前記ブロックチェーンを検査するステップであって、前記パスワードは、前記消費者パーティと前記提供者パーティとの間の共有シークレットに基づき暗号化され、前記アクセス鍵は、前記パスワードの第1の所定の関数である、ステップと、
iii)前記共有シークレットに基づき前記受信したパスワードを復号し、前記復号したパスワードに前記所定の関数を適用することにより前記アクセス鍵を決定し、前記決定したアクセス鍵に基づき前記データを復号するステップと、
を含む。前記データは、前記パスワードの第2の所定の関数であるメッセージ認証コードと一緒に前記第2トランザクションに含まれ、前記第2の所定の関数は前記データの関数でもある。前記方法は、
iv)前記復号したデータ及び前記決定したパスワードに基づき、前記メッセージ認証コードを計算し、前記データを認証するために、前記計算したメッセージ認証コードを前記第1トランザクションに含まれるメッセージ認証コードと比較するステップ、を更に含む。
i)前記提供者パーティに、前記ブロックチェーンに記録するために第2トランザクションを通信するステップであって、前記第2トランザクションは、前記データに対する支払いを指定し、更に前記第1トランザクションの識別子と、前記データに対する要求を示す信号と、を含む、ステップと第2パーティが、前記ブロックチェーンに記録させるために、暗号化パスワードを含む第3トランザクションをブロードキャストすることに応答して、
ii)前記第3トランザクションから前記暗号化パスワードを読み出すために、前記ブロックチェーンを検査するステップであって、前記パスワードは、前記消費者パーティと前記提供者パーティとの間の共有シークレットに基づき暗号化され、前記アクセス鍵は、前記パスワードの第1の所定の関数である、ステップと、
iii)前記共有シークレットに基づき前記受信したパスワードを復号し、前記復号したパスワードに前記所定の関数を適用することにより前記アクセス鍵を決定し、前記決定したアクセス鍵に基づき前記データを復号するステップと、
を含む。前記データは、前記パスワードの第2の所定の関数であるメッセージ認証コードと一緒に前記第2トランザクションに含まれ、前記第2の所定の関数は前記データの関数でもある。前記方法は、
iv)前記復号したデータ及び前記決定したパスワードに基づき、前記メッセージ認証コードを計算し、前記データを認証するために、前記計算したメッセージ認証コードを前記第1トランザクションに含まれるメッセージ認証コードと比較するステップ、を更に含む。
これは、第1の態様と一緒に、又は別個に使用され得る。
本開示の実施形態の理解を助け、そのような実施形態がどのように実施され得るかを示すために、例としてのみ、以下の添付の図面を参照する。
ブロックチェーンを実装するためのシステムの概略ブロック図である。
ブロックチェーンに記録されるトランザクションの幾つかの例を概略的に示している。
ブロックチェーンを実装するための別のシステムの概略ブロック図である。
クライアントアプリケーションの概略ブロック図である。
本願明細書に開示される実施形態による、図4のクライアントアプリケーションにより提示される例示的なユーザインタフェースの概略的模擬表示である。
本願明細書に開示される実施形態による、例示的なトランザクションのセットを概略的に示す。
本願明細書に開示される実施形態による、例示的なトランザクションのセットを概略的に示す。
本願明細書に開示される実施形態による、セッション鍵を提供する方法のフローチャートである。
本願明細書に開示される実施形態による、ハイパーテキスト転送プロトコルを示す概略ブロック図である。
本願明細書に開示される実施形態による、要求及び応答トランザクションの例示的なペアの構造を示す。
本願明細書に開示される実施形態による、ブロックチェーンに暗号化データを格納する方法のフローチャートである。
本願明細書に開示される実施形態による。データ交換手順の例を示すフローチャートである。
ブロックチェーンは、従来のデータベースサーバに代わる、非集中型の耐タンパー性を提供する。しかしながら、より多くのデータ記憶に対応するためにブロック容量が増大するので、ブロックチェーンに格納された情報に効率的にアクセスするためのデータ検索システムが望まれる。従来、ブロックチェーンで使用される情報にアクセスする唯一の方法は、特定のトランザクション参照を有すること、又はブロックチェーン全体(ある一般的なブロックチェーンでは現在168GBであり、ブロックサイズの増大と共に急速に増大することが予測される)を検索することである。更に最近には、ブロックチェーン上のデータを編成する方法が、Metanetの部分として提案されている。bitDB及びB://bitcoinデータプロトコルを含む、ブロックチェーンに格納されたデータをクエリすることができる他のソリューションも提案されている。しかしながら、チェーン上で関連するデータを見付けることを支援するために、より多くのツールがあることが望ましい。
現在、文書(ウェブページ)間の連続するリンクを通じて、World Wide Web (WWW)は、インターネットをナビゲートし、効率的に情報を読み出すことを可能にしている。そのような情報をリンクする標準的なプロトコルであるHypertext Transfer Protocol (HTTP)は、ハイパーリンク(hyperlink)(データへの参照)を使用して、データベース又はサーバにあるページ間の接続を確立する。ユーザは、ハイパーリンクをクリックすることによりサーバに要求を行い、サーバは要求された情報を返し、これはハイパーテキスト(hypertext)(ハイパーリンクを有するテキスト)としてユーザに対して表示される。
以下の実施形態は、ブロックチェーンに格納された、組織化されたリンクされたデータから、暗号化データを読み出し表示するためのプロトコルを提供する。多くのファイルが、一連のドメインリダイレクトの中でリンクされ、OP_RETURNデータに格納され得る(必要な場合にはマイナーにより証明され得る)。スマートウォレットは、ユーザに提示するためにデータを復号し伸張することができる。例えば、実施形態は、暗号化及び復号のためのXOR暗号化方式の速度及び効率を利用してよい。実施形態では、Lempel-Ziv Markovチェーン(LZM)圧縮アルゴリズム、又はその派生物、又は他の圧縮技術は、異なる圧縮速度要件に対応するために、統合されてもよい。実施形態では、XZアルゴリズムが、LZMリンクからリンクされシードできるストリーミングデータのために使用されてよい。これらは、大規模ファイル(例えば、マルチメディアファイル)、ストリーム、又はメッセージのためのP2Pファイル共有のためにピアシードデータを設定することもできる。
<例示的なシステムの概要>
図1は、ブロックチェーン150を実装するための例示的なシステム100を示す。システム100は、典型的にはインターネットのような広域インターネットワークであるパケット交換ネットワーク101を含む。パケット交換ネットワーク101は、パケット交換ネットワーク101内にピアツーピア(P2P)オーバレイネットワーク106を形成するように配置された複数のノード104を含む。各ノード104は、異なるピアに属する異なるノード104を有するピアのコンピュータ装置を含む。各ノード104は、1つ以上のプロセッサ、例えば、1つ以上の中央処理装置(CPU)、アクセラレータプロセッサ、特定用途向けプロセッサ、及び/又はフィールドプログラマブルゲートアレイ(FPGA)を含む処理装置を含む。各ノードはまた、メモリ、すなわち、1つ以上の非一時的コンピュータ読取可能媒体の形態のコンピュータ読取可能記憶装置を備える。メモリは、1つ以上のメモリ媒体、例えば、ハードディスクなどの磁気媒体、固体ドライブ(solid-state drive (SSD))、フラッシュメモリ又はEEPROMなどの電子媒体、及び/又は光ディスクドライブなどの光学的媒体を使用する1つ以上のメモリユニットを含んでもよい。
図1は、ブロックチェーン150を実装するための例示的なシステム100を示す。システム100は、典型的にはインターネットのような広域インターネットワークであるパケット交換ネットワーク101を含む。パケット交換ネットワーク101は、パケット交換ネットワーク101内にピアツーピア(P2P)オーバレイネットワーク106を形成するように配置された複数のノード104を含む。各ノード104は、異なるピアに属する異なるノード104を有するピアのコンピュータ装置を含む。各ノード104は、1つ以上のプロセッサ、例えば、1つ以上の中央処理装置(CPU)、アクセラレータプロセッサ、特定用途向けプロセッサ、及び/又はフィールドプログラマブルゲートアレイ(FPGA)を含む処理装置を含む。各ノードはまた、メモリ、すなわち、1つ以上の非一時的コンピュータ読取可能媒体の形態のコンピュータ読取可能記憶装置を備える。メモリは、1つ以上のメモリ媒体、例えば、ハードディスクなどの磁気媒体、固体ドライブ(solid-state drive (SSD))、フラッシュメモリ又はEEPROMなどの電子媒体、及び/又は光ディスクドライブなどの光学的媒体を使用する1つ以上のメモリユニットを含んでもよい。
ブロックチェーン150は、データのブロック151のチェーンを指し、ブロックチェーン150のそれぞれのコピーは、ピアツーピア(peer-to-peer (P2P))ネットワーク160内の複数のノードのそれぞれにおいて維持される。チェーン内の各ブロック151は、1つ以上のトランザクション152を含み、この文脈ではトランザクションは、一種のデータ構造を参照する。データ構造の性質は、トランザクションモデル又はスキームの一部として使用されるトランザクションプロトコルのタイプに依存する。所与のブロックチェーンは、典型的には、全体を通して、1つの特定のトランザクションプロトコルを使用する。1つの一般的なタイプのトランザクションプロトコルでは、各トランザクション152のデータ構造は、少なくとも1つのインプット及び少なくとも1つのアウトプットを含む。各アウトプットは、そのアウトプットが暗号的にロックされている(アンロックされ、それによって償還又は使用されるために、そのユーザ103の署名を必要とする)ユーザに属するデジタルアセットの数量を表す額(amount)を指定する。各インプットは、先行するトランザクション152のアウトプットを逆にポイントし、それによってトランザクションをリンクする。
ノード104の少なくとも幾つかは、トランザクション152を転送し、それによって伝播する転送ノード104Fの役割を引き受ける。ノード104の少なくともいくつかは、ブロック151をマイニングするマイナー104Mの役割を担う。ノード104の少なくとも幾つかは、記憶ノード104S(「フルコピー(full-copy)」ノードとも呼ばれる)の役割を引き受け、各ノードは、それぞれのメモリに同じブロックチェーン150のそれぞれのコピーを格納する。各マイナーノード104Mは、マイニングされてブロック151にされることを待ってるトランザクション152のプール154も維持する。所与のノード104は、転送ノード104、マイナー104M、記憶ノード104S、又はこれらの2つ若しくは全部の任意の組み合わせであり得る。
所与の現在のトランザクション152jにおいて、インプット(又はそのそれぞれ)は、トランザクションのシーケンスの中の先行トランザクション152iのアウトプットを参照するポインタを含み、このアウトプットが現在のトランザクション152jにおいて償還されるか又は「消費される(spent)」ことを指定する。一般に、先行するトランザクションは、プール154又は任意のブロック151内の任意のトランザクションであり得る。先行するトランザクション152iは、必ずしも、現在のトランザクション152jが生成された又はネットワーク106へ送信されたときに存在する必要はないが、先行するトランザクション152iは、現在のトランザクションが有効であるために存在し検証されている必要がある。従って、本願明細書で「先行する」は、ポインタによりリンクされた論理的シーケンスの中で先行するものを表し、必ずしも時系列の中での生成又は送信の時間を表さない。従って、それは、必ずしも、トランザクション152i,152jが順不同で生成され又は送信されることを排除しない(以下の親のない(orphan)トランザクションに関する議論を参照する)。先行するトランザクション152iは、等しく、祖先(antecedent)又は先行(predecessor)トランザクションと呼ばれ得る。
現在のトランザクション152jのインプットは、先行するトランザクション152iのアウトプットがロックされているユーザ103aの署名も含む。また、現在のトランザクション152jのアウトプットは、新しいユーザ103bに暗号的にロックできる。従って、現在のトランザクション152jは、先行するトランザクション152iのインプットで定義された量を、現在のトランザクション152jのアウトプットで定義された新しいユーザ103bに移転することができる。幾つかの場合には、トランザクション152が複数のアウトプットを有し、複数のユーザ間でインプット量を分割してよい(変更を行うために、そのうちの1人がオリジナルユーザとなる)。幾つかの場合には、トランザクションが複数のインプットを有し、1つ以上の先行するトランザクションの複数のアウトプットから量をまとめ、現在のトランザクションの1つ以上のアウトプットに再分配することもできる。
上記は「アウトプットベースの」トランザクションプロトコルと呼ばれることがあり、時には「未使用のトランザクションアウトプット(unspent transaction output (UTXO))タイプのプロトコル」(アウトプットはUTXOと呼ばれる)とも呼ばれる。ユーザの合計残高は、ブロックチェーンに格納されている1つの数値で定義されるのではなく、代わりに、ユーザは、ブロックチェーン151内の多くの異なるトランザクション152に分散されている該ユーザの全てのUTXOの値を照合するために、特別な「ウォレット」アプリケーション105を必要とする。
アカウントベースのトランザクションモデルの一部として、別のタイプのトランザクションプロトコルを「アカウントベース」のプロトコルと呼ぶことがある。アカウントベースの場合、各トランザクションは、過去の一連のトランザクションにおいて、先行するトランザクションのUTXOに戻って参照することによって移転される量を定義するのではなく、絶対的な口座(アカウント)残高を参照することによって移転される。全てのアカウントの現在の状態は、ブロックチェーンとは別個のマイナーによって格納され、絶えず更新される。このようなシステムでは、トランザクションは、アカウントの連続したトランザクション記録(所謂「ポジション」)を用いて発注される。この値は、送信者により彼らの暗号署名の一部として署名され、トランザクション参照計算の一部としてハッシュされる。さらに、任意的なデータフィールドもトランザクションに署名することができる。このデータフィールドは、例えば、前のトランザクションIDがデータフィールドに含まれている場合、前のトランザクションを遡ってポイントしてよい。
どちらのタイプのトランザクションプロトコルでも、ユーザ103が新しいトランザクション152jを実行したい場合、ユーザは、自分のコンピュータ端末102からP2Pネットワーク106のノードの1つ104(現在は、通常、サーバ又はデータセンタであるが、原則として、他のユーザ端末でもよい)に新しいトランザクションを送信する。このノード104は、各ノード104に適用されるノードプロトコルに従って、トランザクションが有効であるかどうかをチェックする。ノードプロトコルの詳細は、問題のブロックチェーン150で使用されているトランザクションプロトコルのタイプに対応し、全体のトランザクションモデルを一緒に形成する。ノードプロトコルは、典型的には、ノード104に、新しいトランザクション152j内の暗号署名が、トランザクション152の順序付けされたシーケンスの中の前のトランザクション152iに依存する、期待される署名と一致することをチェックすることを要求する。アウトプットベースの場合、これは、新しいトランザクション152jのインプットに含まれるユーザの暗号署名が、新しいトランザクションが消費する先行するトランザクション152jのアウトプットに定義された条件と一致することをチェックすることを含んでよく、この条件は、典型的には、新しいトランザクション152jのインプット内の暗号署名が、新しいトランザクションのインプットがポイントする前のトランザクション152iのアウトプットをアンロックすることを少なくともチェックすることを含む。幾つかのトランザクションプロトコルでは、条件は、少なくとも部分的に、インプット及び/又はアウトプットに含まれるカスタムスクリプトによって定義されてもよい。或いは、単にノードプロトコルだけで固定することもできるし、或いは、これらの組み合わせによることもある。いずれにせよ、新しいトランザクション152jが有効であれば、現在のノードは新しいトランザクションをP2Pネットワーク106内のノード104の1つ以上の他のノードに転送する。これらのノード104の少なくともいくつかは、同じノードプロトコルに従って同じテストを適用し、新しいトランザクション152jを1つ以上のさらなるノード104に転送するなど、転送ノード104Fとしても機能する。このようにして、新しいトランザクションは、ノード104のネットワーク全体に伝播される。
アウトプットベースのモデルでは、与えられたアウトプット(例えば、UTXO)が消費されるかどうかの定義は、ノードプロトコルに従って別の今後の(onward)トランザクション152jのインプットによって既に有効に償還されているかどうかである。トランザクションが有効であるための別の条件は、それが消費又は償還を試みる先行するトランザクション152iのアウトプットが、別の有効なトランザクションによって未だ消費/償還されていないことである。ここでも、有効でない場合、トランザクション152jは、ブロックチェーンに伝播又は記録されない。これは、支払者が同じトランザクションのアウトプットを複数回消費しようとする二重支出を防ぐ。一方、アカウントベースのモデルは、口座残高を維持することによって、二重支出を防ぐ。この場合も、トランザクションの順序が定義されているため、口座残高は、一度に単一の定義された状態を有する。
検証に加えて、ノード104Mのうちの少なくともいくつかは、「proof of work」に支えられているマイニングと呼ばれるプロセスで、トランザクションのブロックを最初に作成するために競合する。マイニングノード104Mでは、まだブロックに現れていない有効なトランザクションのプールに新しいトランザクションが追加される。そして、マイナーは、暗号パズルを解決しようと試みることにより、トランザクションのプール154からトランザクション152の新しい有効なブロック151を組み立てるために競争する。これは、典型的には、ノンスがトランザクションのプール154と連結され、ハッシュされるときに、ハッシュのアウトプットが所定の条件を満たすような「ノンス」値を探すことを含む。例えば、所定の条件は、ハッシュのアウトプットが、所定の数の先行ゼロを有することであってもよい。ハッシュ関数の特性は、インプットに関して予測不可能なアウトプットを持つことである。従って、この探索は、ブルートフォースによってのみ実行することができ、従って、パズルを解決しようとしている各ノード104Mにおいて、相当量の処理リソースを消費する。
パズルを解く最初のマイナーノード104Mは、これをネットワーク106に通知し、その解を証明として提供する。この解は、ネットワーク内の他のノード104によって簡単にチェックすることができる(ハッシュが対する解が与えられれば、ハッシュのアウトプットが条件を満たすことを確認することは簡単である)。勝者がパズルを解いたトランザクションのプール154は、各ノードで勝者が発表した解をチェックしたことに基づいて、記憶ノード104Sとして機能するノード104のうちの少なくともいくつかによってブロックチェーン150の新しいブロック151として記録される。また、新しいブロック151nにはブロックポインタ155が割り当てられ、チェーン内で前に作成されたブロック151n-1を指すようになっている。proof-of-workは、新しいブロックを151作成するのに多大な労力を要し、二重の支出を含むブロックは他のノード104によって拒否される可能性が高く、従ってマイニングノード104Mが二重支払いを彼らのブロックに含まないようにする動機が働くので、二重の支出のリスクを減じるのを助ける。一旦生成されると、ブロック151は、同じプロトコルに従ってP2Pネットワーク106内の各格納ノード104Sで認識され、維持されるため、変更することはできない。また、ブロックポインタ155は、ブロック151に順序を課す。トランザクション152は、P2Pネットワーク106内の各記憶ノード104Sで順序付けられたブロックに記録されるので、これはトランザクションの不変の公開台帳を提供する。
パズルを解決するために常に競争している異なるマイナー104Mは、いつ解を探し始めたかによって、いつでもマイニングされていないトランザクションプール154の異なるスナップショットに基づいてパズルを解いているかもしれないことに留意する。パズルを解く者は誰でも、最初に次の新しいブロック151nに含まれるトランザクション152を定義し、現在のマイニングされていないトランザクションのプール154が更新される。そして、マイナー104Mは、新たに定義された未解決のプール154からブロックを作り出すために、競争を続ける。また、生じ得る「分岐(フォーク、fork)」を解決するためのプロトコルも存在する。これは、2人のマイナー104Mが互いに非常に短い時間内にパズルを解決し、ブロックチェーンの矛盾したビューが伝播する場合である。要するに、分岐の枝が伸びるときは常に、最長のものが最終的なブロックチェーン150になる。
ほとんどのブロックチェーンでは、勝ったマイナー104Mは、何も無いものから新しい量のデジタルアセットを生み出す特別な種類の新しいトランザクションによって自動的に報酬を受けている(通常のトランザクションでは、あるユーザから別のユーザにデジタルアセットの量を移転する)。したがって、勝ったノードは、ある量のデジタルアセットを「マイニング」したと言える。この特殊なタイプのトランザクションは「生成(generation)」トランザクションと呼ばれることもある。それは自動的に新しいブロック151nの一部を形成する。この報酬は、マイナー104Mがproof-of-work競争に参加する動機を与える。多くの場合、通常の(非生成)トランザクションは、そのトランザクションが含まれたブロック151nを生成した勝ったマイナー104Mにさらに報酬を与えるために、追加のトランザクション手数料をそのアウトプットの1つにおいて指定する。
マイニングに含まれる計算リソースのために、典型的には、少なくともマイナーノード104Mの各々は、1つ以上の物理的サーバユニットを含むサーバ、又はデータセンタ全体の形態をとる。各転送ノード104M及び/又は記憶ノード104Sは、サーバ又はデータセンタの形態をとることもできる。しかしながら、原則として、任意の所与のノード104は、ユーザ端末又は互いにネットワーク接続されたユーザ端末のグループを含むことができる。
各ノード104のメモリは、それぞれの1つ以上の役割を実行し、ノードプロトコルに従ってトランザクション152を処理するために、ノード104の処理装置上で動作するように構成されたソフトウェアを記憶する。ノード104に属するいずれの動作も、それぞれのコンピュータ装置の処理装置上で実行されるソフトウェアによって実行され得ることが理解されよう。ノードソフトウェアは、アプリケーションレイヤにおける1つ以上のアプリケーション、又はオペレーティングシステムレイヤ若しくはプロトコルレイヤのような下位レイヤ、又はこれらの任意の組合せの中に実装されてよい。また、本明細書で使用される「ブロックチェーン」という用語は、一般的な技術の種類を指す一般的な用語であり、任意の特定の専有のブロックチェーン、プロトコル又はサービスに限定されない。
また、ネットワーク101には、消費者ユーザの役割を果たす複数のパーティ103の各々のコンピュータ装置102も接続されている。これらは、トランザクションにおける支払人及び被支払人の役割を果たすが、他のパーティの代わりにトランザクションをマイニングし又は伝播することに必ずしも参加しない。それらは必ずしもマイニングプロトコルを実行するわけではない。2つのパーティ103及びそれぞれの機器102が説明のために示されており、第1パーティ103a及びそのそれぞれのコンピュータ機器102a、幾つかの第2パーティ103b及びそのそれぞれのコンピュータ機器102bである。より多くのこのようなパーティ103及びそれらのそれぞれのコンピュータ機器102がシステムに存在し、参加することができるが、便宜上、それらは図示されていないことが理解されよう。各パーティ103は、個人又は組織であってもよい。純粋に例示として、第1パーティ103aは、本明細書においてAliceと称され、第2パーティ103bは、Bobと称されるが、これは限定的なものではなく、本明細書においてAlice又はBobという言及は、それぞれ「第1パーティ」及び「第2パーティ」と置き換えることができることは理解されるであろう。
各パーティ103のコンピュータ機器102は、1つ以上のプロセッサ、例えば1つ以上のCPU、GPU、他のアクセラレータプロセッサ、特定用途向けプロセッサ、及び/又はFPGAを備えるそれぞれの処理装置を備える。各パーティ103のコンピュータ機器102は、さらに、メモリ、すなわち、非一時的コンピュータ読取可能媒体又は媒体の形態のコンピュータ読取可能記憶装置を備える。このメモリは、例えば、ハードディスクなどの磁気媒体、SSD、フラッシュメモリ又はEEPROMなどの電子媒体、及び/又は光ディスクドライブなどの光学的媒体を使用する1つ以上のメモリユニットを含んでもよい。各パーティ103のコンピュータ機器102上のメモリは、処理装置上で動作するように配置された少なくとも1つのクライアントアプリケーション105のそれぞれのインスタンスを含むソフトウェアを記憶する。所与のノード104に属するいずれの動作も、それぞれのコンピュータ機器102の処理装置上で実行されるソフトウェアを使用することにより実行され得ることが理解されよう。各パーティ103のコンピュータ機器102は、少なくとも1つのユーザ端末、例えばデスクトップ又はラップトップコンピュータ、タブレット、スマートフォン、又はスマートウォッチのようなウェアラブルデバイスを備えている。所与のパーティ103のコンピュータ装置102は、ユーザ端末を介してアクセスされるクラウドコンピューティングリソースのような、1つ以上の他のネットワーク接続されたリソースを含んでもよい。
クライアントアプリケーション105は、最初に、1つ以上の適切なコンピュータ読取可能な記憶媒体、例えばサーバからダウンロードされたもの、又はリムーバブルSSD、フラッシュメモリキー、リムーバブルEEPROM、リムーバブル磁気ディスクドライブ、磁気フロッピー・ディスク又はテープ、光ディスク、例えばCD又はDVD ROM、又はリムーバブル光学ドライブなどのリムーバブル記憶装置上で、任意の所与のパーティ103のコンピュータ機器102に提供され得る。
クライアントアプリケーション105は、少なくとも「ウォレット」機能を備える。これには主に2つの機能を有する。これらのうちの1つは、それぞれのユーザパーティ103が、ノード104のネットワーク全体にわたって伝播され、それによってブロックチェーン150に含まれるトランザクション152を作成し、署名し、送信することを可能にすることである。もう1つは、現在所有しているデジタルアセットの量をそれぞれのパーティに報告することである。アウトプットベースのシステムでは、この第2の機能は、当該パーティに属するブロックチェーン150全体に散在する様々なトランザクション152のアウトプットの中で定義される量を照合することを含む。
注:種々のクライアント機能が所与のクライアントアプリケーション105に統合されるとして説明されることがあるが、これは、必ずしも限定的ではなく、代わりに、本願明細書に記載される任意のクライアント機能が2つ以上の異なるアプリケーションのスーツに実装されてよく、例えばAPIを介してインタフェースし、又は一方が他方へのプラグインである。より一般的には、クライアント機能は、アプリケーションレイヤ、又はオペレーティングシステムのような下位レイヤ、又はこれらの任意の組合せにおいて実装され得る。以下は、クライアントアプリケーション105の観点で説明されるが、これは限定的ではないことが理解される。
各コンピュータ機器102上のクライアントアプリケーション又はソフトウェア105のインスタンスは、P2Pネットワーク106の転送ノード104Fの少なくとも1つに動作可能に結合される。これにより、クライアント105のウォレット機能は、トランザクション152をネットワーク106に送信することができる。クライアント105は、また、記憶ノード104のうちの1つ、一部、又は全部にコンタクトして、それぞれのパーティ103が受領者である任意のトランザクションについてブロックチェーン150に問い合わせることができる(又は、実施形態では、ブロックチェーン150は、部分的にその公開視認性を通じてトランザクションの信頼を提供する公開的設備であるため、実際には、ブロックチェーン150内の他のパーティのトランザクションを検査する)。各コンピュータ機器102上のウォレット機能は、トランザクションプロトコルに従ってトランザクション152を形成し、送信するように構成される。各ノード104は、ノードプロトコルに従ってトランザクション152を検証するように構成されたソフトウェアを実行し、転送ノード104Fの場合は、ネットワーク106全体にトランザクション152を伝搬させるためにトランザクション152を転送する。トランザクションプロトコルとノードプロトコルは互いに対応し、所与のトランザクションプロトコルは所与のノードプロトコルと共に所与のトランザクションモデルを実装する。同じトランザクションプロトコルが、ブロックチェーン150内の全てのトランザクション152に使用される(ただし、トランザクションプロトコルは、トランザクションの異なるサブタイプを許可することができる)。同じノードプロトコルは、ネットワーク106内の全てのノード104によって使用される(ただし、多くのノードは、そのサブタイプに対して定義されたルールに従って異なるトランザクションのサブタイプを異なるように処理し、また、異なるノードは異なる役割を引き受け、従って、プロトコルの異なる対応する側面を実装することができる)。
上述のように、ブロックチェーン150は、ブロック151のチェーンを含み、各ブロック151は、前述のように、proof-of-workプロセスによって作成された1つ以上のトランザクション152のセットを含む。各ブロック151は、また、ブロック151への逐次的順序を定義するように、チェーン内の先に生成されたブロック151を遡ってポイントするブロックポインタ155を含む。ブロックチェーン150はまた、proof-of-workプロセスによって新しいブロックに含まれることを待つ有効なトランザクション154のプールを含む。各トランザクション152(生成トランザクション以外)は、トランザクションのシーケンスに順序を定義するために、前のトランザクションへのポインタを含む(注:トランザクション152のシーケンスは、分岐することが許される)。ブロック151のチェーンは、チェーンの最初のブロックであったジェネシスブロック(genesis block (Gb))153にまで戻る。チェーン150の初期に1つ以上のオリジナルトランザクション152は、先行するトランザクションではなくジェネシスブロック153を指し示した。
所与のパーティ103、例えばAliceがブロックチェーン150に含まれる新たなトランザクション152jを送信したいと望む場合、彼女は関連するトランザクションプロトコルに従って(彼女のクライアントアプリケーション105のウォレット機能を使用して)新たなトランザクションを作成する(formulate)。次に、クライアントアプリケーション105からトランザクション152を、彼女が接続されている1つ以上の転送ノード104Fの1つに送信する。例えば、これは、Aliceのコンピュータ102に最も近いか又は最も良好に接続されている転送ノード104Fであってもよい。任意の所与のノード104が新しいトランザクション152jを受信すると、ノードプロトコル及びそのそれぞれの役割に従って、それを処理する。これは、最初に、新たに受信されたトランザクション152jが「有効」であるための特定の条件を満たしているかどうかをチェックすることを含み、その例については、簡単に詳述する。幾つかのトランザクションプロトコルでは、検証のための条件は、トランザクション152に含まれるスクリプトによってトランザクションごとに構成可能であってよい。或いは、条件は単にノードプロトコルの組み込み機能であってもよく、或いはスクリプトとノードプロトコルの組み合わせによって定義されてもよい。
新たに受信されたトランザクション152jが、有効であると見なされるテストに合格したという条件で(すなわち、「有効である」という条件で)、トランザクション152jを受信した任意の記憶ノード104Sは、そのノード104Sに維持されているブロックチェーン150のコピー内のプール154に、新たに有効とされたトランザクション152を追加する。さらに、トランザクション152jを受信する任意の転送ノード104Fは、検証済みトランザクション152をP2Pネットワーク106内の1つ以上の他のノード104に伝播する。各転送ノード104Fは同じプロトコルを適用するので、トランザクション152jが有効であると仮定すると、これは、P2Pネットワーク106全体に間もなく伝播されることを意味する。
ひとたび1つ以上の記憶ノード104で維持されるブロックチェーン150のコピー内のプール154に入ると、マイナーノード104Mは、新しいトランザクション152を含むプール154の最新バージョンのproof-of-workパズルを解決するために競争を開始する(他のマイナー104Mは、依然として、プール154の古いビューに基づいてパズルを解決しようとしているが、そこに到達した者は誰でも、最初に、次の新しいブロック151が終了し、新しいプール154が開始する場所を定義し、最終的には、誰かが、Aliceのトランザクション152jを含むプール154の一部のパズルを解決する)。一旦、新しいトランザクション152jを含むプール154についてproof-of-workが行われると、ブロックチェーン150内のブロック151の1つの一部となる。各トランザクション152は、以前のトランザクションへのポインタを含むので、トランザクションの順序もまた、不変的に記録される。
異なるノード104は、最初に所与のトランザクションの異なるインスタンスを受信する可能性があり、従って、1つのインスタンスがマイニングされてブロック150になる前に、どのインスタンスが「有効」であるかについて矛盾するビューを有することがあり、その時点で、全部のノード104は、マイニングされたインスタンスのみが有効なインスタンスであることに合意する。ノード104が1つのインスタンスを有効であるとして受け入れ、次に第2のインスタンスがブロックチェーン150に記録されていることを発見した場合、該ノード104は、これを受け入れなければならず、最初に受け入れた未だマイニングされていないインスタンスを破棄する(つまり、無効であるとして扱う)。
<UTXOに基づくモデル>
図2は、トランザクションプロトコルの例を示している。これは、UTXOベースのプロトコルの例である。トランザクション152(「Tx」と略す)は、ブロックチェーン150(各ブロック151は1つ以上のトランザクション152を含む)の基本的なデータ構造である。以下は、アウトプットベース又は「UTXO」ベースのプロトコルを参照して説明される。しかし、これは、全ての可能な実施形態に限定されるものではない。
図2は、トランザクションプロトコルの例を示している。これは、UTXOベースのプロトコルの例である。トランザクション152(「Tx」と略す)は、ブロックチェーン150(各ブロック151は1つ以上のトランザクション152を含む)の基本的なデータ構造である。以下は、アウトプットベース又は「UTXO」ベースのプロトコルを参照して説明される。しかし、これは、全ての可能な実施形態に限定されるものではない。
UTXOベースのモデルでは、各トランザクション(「Tx」)152は、1つ以上のインプット202及び1つ以上のアウトプット203を含むデータ構造を含む。各アウトプット203は、未使用トランザクションアウトプット(UTXO)を含んでもよく、これは、別の新しいトランザクションのインプット202のソースとして使用することができる(UTXOが未だ償還されていない場合)。UTXOは、デジタルアセット(値のストア)の量を指定する。それは、情報の中でも特にその元となったトランザクションのトランザクションIDを含む。トランザクションデータ構造はまた、ヘッダ201も含んでよく、ヘッダ201は、インプットフィールド202及びアウトプットフィールド203のサイズの指示子を含んでもよいヘッダ201を含んでよい。ヘッダ201は、トランザクションのIDも含んでもよい。実施形態において、トランザクションIDは、トランザクションデータのハッシュ(トランザクションID自体を除く)であり、マイナー104Mに提出された未処理トランザクション152のヘッダ201に格納される。
例えばAlice103aは、問題のデジタルアセットの量をBob103bに移転するトランザクション152jを作成したいと考えているとする。図2において、Aliceの新しいトランザクション152jは「Tx1」とラベル付けされている。これは、Aliceにロックされているデジタルアセットの量を、シーケンス内の先行するトランザクション152iのアウトプット203に取り入れ、その少なくとも一部をBobに移転する。先行するトランザクション152iは、図2において「Tx0」とラベル付けされている。Tx0とTx1は、単なる任意のラベルである。これらは、必ずしも、Tx0がブロックチェーン151の最初のトランザクションであること、又は、Tx1がプール154の直ぐ次のトランザクションであることを意味しない。Tx1は、まだAliceへのロックされた未使用アウトプット203を有する任意の先行する(つまり祖先)トランザクションのいずれかを指し示すことができる。
先行するトランザクションTx0は、Aliceがその新しいトランザクションTx1を作成するとき、又は少なくとも彼女がそれをネットワーク106に送信するときまでに、既に検証され、ブロックチェーン150に含まれていてもよい。それは、その時点で既にブロック151のうちの1つに含まれていてもよく、或いは、プール154内でまだ待機していてもよく、その場合、新しいブロック151にすぐに含まれることになる。あるいは、Tx0及びTx1が生成されネットワーク102に送信されることができ、あるいは、ノードプロトコルが「孤児(orphan)」トランザクションのバッファリングを許容する場合にはTx1の後にTx0が送信されることもできる。ここでトランザクションのシーケンスの文脈で使用される「先行する」及び「後の」という用語は、トランザクション内で指定されたトランザクションポインタ(どのトランザクションがどの他のトランザクションを指すかなど)によって定義されるシーケンス内のトランザクションの順序を指す。それらは、「先行する」及び「相続する」又は「祖先」及び「子孫」、「親」及び「子」、等により、等しく置き換えられ得る。これは、必ずしも、それらが作成され、ネットワーク106に送られ、又は任意の所与のノード104に到達する順序を意味しない。それにもかかわらず、先行するトランザクション(祖先トランザクション又は「親」)を指す後続のトランザクション(子孫トランザクション又は「子」)は、親トランザクションが検証されない限り、検証されない。親の前にノード104に到着した子は孤児とみなされる。それは、ノードプロトコル及び/又はマイナーの行動に応じて、親を待つために特定の時間、破棄又はバッファリングされることがある。
先行するトランザクションTx0の1つ以上のアウトプット203のうちの1つは、本明細書でUTXO0とラベル付けされた特定のUTXOを含む。各UTXOは、UTXOによって表されるデジタルアセットの量を指定する値と、後続のトランザクションが検証されるために、従ってUTXOが正常に償還されるために、後続のトランザクションのインプット202の中のアンロックスクリプトによって満たされなければならない条件を定義するロックスクリプトとを含む。典型的には、ロックスクリプトは、特定のパーティ(それが含まれているトランザクションの受益者)に量をロックする。すなわち、ロックスクリプトは、標準的に以下のようなアンロック条件を定義する:後続のトランザクションのインプット内のアンロックスクリプトは、先行するトランザクションがロックされたパーティの暗号署名を含む。
ロックスクリプト(別名scriptPubKey)は、ノードプロトコルによって認識されるドメイン固有の言語で書かれたコードの一部である。そのような言語の特定の例は、「スクリプト」(Script,Sは大文字)と呼ばれる。ロックスクリプトは、トランザクションアウトプット203を消費するために必要な情報、例えば、Aliceの署名の必要条件を指定する。トランザクションのアウトプットには、アンロックスクリプトが現れる。アンロックスクリプト(別名:scriptSig)は、ロックスクリプトの基準を満たすために必要な情報を提供するドメイン固有の言語で書かれたコードの一部である。例えば、Bobの署名を含んでもよい。アンロックスクリプトは、トランザクションのインプット202に現れる。
図示の例では、Tx0のアウトプット203のUTXO0は、ロックスクリプト[ChecksigPA]を含み、これは、UTXO0が償還されるために(厳密には、UTXO0を償還しようとする後続のトランザクションが有効であるために)、Aliceの署名SigPAを必要とする。[ChecksigPA]は、Aliceの公開鍵と秘密鍵のペアからの公開鍵PAを含む。Tx1のインプット202は、Tx1を指すポインタ(例えば、そのトランザクションID、実施形態ではトランザクションTx0全体のハッシュであるTxID0による)を含む。Tx1のインプット202は、Tx0の任意の他の可能なアウトプットの中でそれを識別するために、Tx0内のUTXO0を識別するインデックスを含む。Tx1のインプット202は、さらに、Aliceが鍵ペアからのAliceの秘密鍵をデータの所定の部分(暗号において「メッセージ」と呼ばれることもある)に適用することによって作成された、Aliceの暗号署名を含むアンロックスクリプト<SigPA>を含む。有効な署名を提供するためにAliceが署名する必要があるデータ(又は「メッセージ」)は、ロックスクリプトにより、又はノードプロトコルにより、又はこれらの組み合わせによって定義され得る。
新しいトランザクションTx1がノード104に到着すると、ノードはノードプロトコルを適用する。これは、ロックスクリプトとアンロックスクリプトを一緒に実行して、アンロックスクリプトがロックスクリプトで定義されている条件(この条件は1つ以上の基準を含むことができる)を満たしているかどうかをチェックすることを含む。実施形態では、これは、2つのスクリプトの連結を含む。
ここで、「||」は連結を表し、「<...>」はスタックにデータを配置することを意味し、「[...]」はアンロックスクリプトに含まれる機能である(本例では、スタックベースの言語)。同等に、スクリプトは。、スクリプトを連結するのではなく共通のスタックにより1つずつ実行されてよい。いずれの方法でも、一緒に実行する場合、スクリプトは、Tx0のアウトプット内のロックスクリプトに含まれるAliceの公開鍵PAを使用して、Tx1のインプット内のロックスクリプトが、データの期待部分に署名するAliceの署名を含むことを認証する。また、データの期待部分(「メッセージ」)も、この認証を実行するためにTx0に含まれる必要がある。実施形態において、署名されたデータは、Tx0の全体を含む(従って、別個の要素は、データの署名された部分がすでに本質的に存在するので、データの署名された部分の指定にクリアに含まれる必要がある)。
公開-秘密暗号法による認証の詳細は、当業者には周知であろう。基本的に、Aliceが彼女の秘密鍵によりメッセージを暗号化することによってメッセージに署名した場合、Aliceの公開鍵とそのメッセージが明らか(暗号化されていないメッセージ)ならば、ノード104のような別のエンティティは、そのメッセージの暗号化されたバージョンがAliceによって署名されていなければならないことを認証することができる。署名は、典型的には、メッセージをハッシュし、ハッシュに署名し、署名としてメッセージのクリアなバージョンにこれをタグ付けすることによって、公開鍵の所有者が署名を認証することを可能にする。従って、実施形態では、特定のデータ片又はトランザクションの部分等に署名するという言及は、データ片又はトランザクションの部分のハッシュに署名することを意味し得る。
Tx1内のアンロックスクリプトが、Tx0のロックスクリプトで指定された1つ以上の条件を満たす場合(示される例では、Aliceの署名がTx1内で提供され、認証されている場合)、ノード104は、Tx1が有効であるとみなす。それがマイニングノード104Mである場合、これは、proof-of-workを待つトランザクションのプール154にそれを追加することを意味する。それが転送ノード104Fである場合、それはトランザクションTx1をネットワーク106内の1つ以上の他のノード104に転送し、それによって、それがネットワーク全体に伝搬されることになる。一旦、Tx1が検証され、ブロックチェーン150に含まれると、これは、Tx0からのUTXO0を消費したものとして定義する。Tx1は、未使用トランザクションアウトプット203を使用する場合にのみ有効であることに留意されたい。別のトランザクション152によって既に消費されたアウトプットを消費しようとする場合、Tx1は、たとえ他のすべての条件が満たされていても無効となる。従って、ノード104は、先行するトランザクションTx0において参照されたUTXOが既に使用されているかどうか(既に別の有効なトランザクションへの有効なインプットを形成しているかどうか)もチェックする必要がある。これが、ブロックチェーン150がトランザクション152に定義された順序を課すことが重要である理由の1つである。実際には、所与のノード104は、トランザクション152が消費されたUTXO203をマークする別個のデータベースを維持することができるが、最終的には、UTXOが消費されたかどうかを定義するのは、ブロックチェーン150内の別の有効なトランザクションへの有効なインプットを既に形成しているかどうかである。
所与のトランザクション152の全部のアウトプット203の中で指定された総量が全部のそのインプット202により指される総量より大きい場合、これは、殆どのトランザクションモデルにおいて無効の別の基礎である。従って、このようなトランザクションは、伝播されず、マイニングされてブロック151にされることもない。
UTXOベースのトランザクションモデルでは、所定のUTXOを全体として使用する必要があることに注意する。UTXOで定義されている量のうち、別の分量が消費されている一方で、分量を「残しておく」ことはできない。ただし、UTXOからの量は、次のトランザクションの複数のアウトプットに分割できる。例えば、Tx0のUTXO0で定義された量は、Tx1の複数のUTXOに分割できる。従って、AliceがBobにUTXO0で定義された量の全てを与えることを望まない場合、彼女は残りの量を使って、Tx1の第2のアウトプットの中で自分自身にお釣りを与えるか、又は別のパーティに支払うことができる。
実際には、Aliceは通常、勝ったマイナーのための手数料も含める必要がある。なぜなら、今日では、生成トランザクションの報酬だけでは、マイニングを動機付けるには通常十分ではないからである。Aliceがマイナーのための手数料を含まない場合、Tx0はマイナーのノード104Mによって拒否される可能性が高く、したがって、技術的には有効であるが、それは依然として伝搬されず、ブロックチェーン150に含まれない(マイナーのプロトコルは、マイナーが望まない場合には、マイナー104Mにトランザクション152を受け入れるよう強制しない)。一部のプロトコルでは、マイニング料金は、独自の別個のアウトプット203を必要としない(すなわち、別個のUTXOを必要としない)。代わりに、インプット202によって指される総量と、所与のトランザクション152のアウトプット203の中で指定される総量との間の差は、勝ったマイナー104に自動的に与えられる。例えば、UTXO0へのポインタがTx1への唯一のインプットであり、Tx1は1つのアウトプットUTXO1しか持っていないとする。UTXO0で指定されたデジタルアセットの量がUTXO1で指定された量より多い場合、その差は自動的に勝ったマイナー104Mへ行く。しかし、代替的又は追加的に、必ずしも、トランザクション152のUTXO203のうちの独自のものにおいて、マイナー手数料を明示的に指定できることは除外されない。
Alice及びBobのデジタルアセットは、ブロックチェーン150内の任意のトランザクション152の中で彼らにロックされた未使用UTXOで構成されている。従って、典型的には、所与のパーティ103のアセットは、ブロックチェーン150を通して、様々なトランザクション152のUTXO全体に分散される。ブロックチェーン150内のどこにも、所与のパーティ103の総残高を定義する1つの数値は記憶されていない。各パーティへのロックされた、別の将来の(onward)トランザクションに未だ消費されていない全ての様々なUTXOの値をまとめることは、クライアントアプリケーション105におけるウォレット機能の役割である。これは、記憶ノード104Sのいずれかに記憶されたブロックチェーン150のコピーを、例えば、各パーティのコンピュータ機器02に最も近いか、又は最も良好に接続されている記憶ノード104Sに問い合わせることによって行うことができる。
スクリプトコードは、概略的に表現されることが多い(すなわち、正確な言語ではない)ことに注意する。例えば、[Checksig PA]を[ChecksigPA]=OP_DUPOP_HASH160<H(PA)>OP_EQUALVERIFYOP_CHECKSIGを意味するように記述し得る。「OP_....」は、スクリプト言語の特定のオペコードを表す。OP_CHECKSIG(「Checksig」とも呼ばれる)は、2つのインプット(署名と公開鍵)を取り込み、楕円曲線デジタル署名アルゴリズム(Elliptic Curve Digital Signature Algorithm (ECDSA))を使用して署名の妥当性を検証するスクリプトオペコードである。ランタイムでは、署名(「sig」')の発生はスクリプトから削除されるが、ハッシュパズルなどの追加要件は、「sig」インプットによって検証されるトランザクションに残る。別の例として、OP_RETURNは、トランザクション内にメタデータを格納することができ、それによってメタデータをブロックチェーン150に不変に記録することができるトランザクションの使用不可能アウトプットを生成するためのスクリプト言語のオペコードである。例えば、メタデータは、ブロックチェーンに格納することが望ましいドキュメントを含むことができる。
署名PAは、デジタル署名である。実施形態において、これは楕円曲線secp256k1を使用するECDSAに基づく。デジタル署名は、特定のデータに署名する。実施形態では、所与のトランザクションについて、署名はトランザクションインプットの一部、及びトランザクションアウトプットの全部又は一部に署名する。署名するアウトプットの特定の部分はSIGHASHフラグに依存する。SIGHASHフラグは、署名の最後に含まれる4バイトのコードであり、どのアウトプットが署名されるかを選択する(従って、署名の時点で固定される)。
ロックスクリプトは、それぞれのトランザクションがロックされているパーティの公開鍵を含んでいることを表す「scriptPubKey」と呼ばれることがある。アンロックスクリプトは、対応する署名を提供することを表す「scriptSig」と呼ばれることがある。しかし、より一般的には、UTXOが償還される条件が署名を認証することを含むことは、ブロックチェーン150の全てのアプリケーションにおいて必須ではない。より一般的には、スクリプト言語は、1つ以上の条件を定義するために使用され得る。したがって、より一般的な用語「ロックスクリプト」及び「アンロックスクリプト」が好ましい。
<任意的なサイドチャネル>
図3は、ブロックチェーン150を実装するための更なるシステム100を示す。システム100は、追加の通信機能が含まれることを除いて、図1に関連して説明したものと実質的に同じである。Alice及びBobのコンピュータ機器102a、102bの各々に存在するクライアントアプリケーションは、それぞれ、追加通信機能を含む。つまり、それは、Alice103aが、(いずれかのパーティ又は第三者の勧誘で)Bob103bとの別個のサイドチャネル301を確立することを可能にする。サイドチャネル301は、P2Pネットワークと別個にデータの交換を可能にする。このような通信は、時に「オフチェーン」と呼ばれる。例えば、これは、パーティのうちの一方がトランザクションをネットワーク106にブロードキャストすることを選択するまで、トランザクションがネットワークP2P106に(未だ)発行されることなく、又はチェーン150上でそのようにすることなく、AliceとBobとの間でトランザクション152を交換するために使用されてよい。代替又は追加で、サイドチャネル301は、任意の他のトランザクションに関連するデータ、例えば、鍵、交渉される量又は条項、データコンテンツ、等を交換するために使用されてよい。
図3は、ブロックチェーン150を実装するための更なるシステム100を示す。システム100は、追加の通信機能が含まれることを除いて、図1に関連して説明したものと実質的に同じである。Alice及びBobのコンピュータ機器102a、102bの各々に存在するクライアントアプリケーションは、それぞれ、追加通信機能を含む。つまり、それは、Alice103aが、(いずれかのパーティ又は第三者の勧誘で)Bob103bとの別個のサイドチャネル301を確立することを可能にする。サイドチャネル301は、P2Pネットワークと別個にデータの交換を可能にする。このような通信は、時に「オフチェーン」と呼ばれる。例えば、これは、パーティのうちの一方がトランザクションをネットワーク106にブロードキャストすることを選択するまで、トランザクションがネットワークP2P106に(未だ)発行されることなく、又はチェーン150上でそのようにすることなく、AliceとBobとの間でトランザクション152を交換するために使用されてよい。代替又は追加で、サイドチャネル301は、任意の他のトランザクションに関連するデータ、例えば、鍵、交渉される量又は条項、データコンテンツ、等を交換するために使用されてよい。
サイドチャネル301は、P2Pオーバレイネットワーク106と同じパケット交換ネットワーク101を介して確立されてもよい。代替又は追加で、サイドチャネル301は、モバイルセルラネットワーク、又はローカル無線ネットワークのようなローカルエリアネットワーク、又はAliceとBobの装置102a、102bの間の直接有線若しくは無線リンクのような異なるネットワークを介して確立されてよい。一般に、本願明細書のどこかで言及されるサイドチャネル301は、「オフチェーン」で、つまりP2Pオーバレイネットワーク106と別個にデータを交換するための1つ以上のネットワーキング技術又は通信媒体を介する任意の1つ以上のリンクを含んでよい。1つより多くのリンクが使用されるとき、全体としてのオフチェーンリンクのバンドル又は集合がサイドチャネル301と呼ばれてよい。従って、Alice及びBobが特定の情報又はデータ片等をサイドチャネル301を介して交換すると言われる場合、これは、必ずしも全部のこれらのデータ片が正確に同じリンク又は同じ種類のネットワークを介して送信される必要があることを意味しないことに留意する。
<クライアントソフトウェア>
図4は、本開示の方式の実施形態を実装するためのクライアントアプリケーション105の例示的な実装を示す。クライアントアプリケーション105は、トランザクションエンジン404と、ユーザインタフェース(UI)レイヤ401と、を含む。トランザクションエンジン404は、上述の方式に従い、及び以下に詳細に議論するように、トランザクション152を形成する、トランザクション及び/又は他のデータをサイドチャネル301を介して受信及び/又は送信する、及び/又はP2Pネットワーク106を通じて伝播されるようにトランザクションを送信するような、クライアント105の基礎にあるトランザクション関連機能を実装するよう構成される。更に、本願明細書に開示される実施形態によると、少なくともBobのクライアント105b(及び場合によっては他のクライアント)のトランザクションエンジン401は、以下の機能モジュール:ハイパー文書エンジン402、データ転送エンジン403、及び/又はプログラムランチャー405、のうちの任意の1つ以上を更に含んでよい。ハイパー文書エンジン402、データ転送エンジン403、及びプログラムランチャー405は、一緒に、ハイパーテキストSPV(simple payment verification、簡易支払い検証)エンジン406を形成してよい。クライアントアプリケーション105の全体は、SPVウォレットとして記載されてよく、又本願明細書ではハイパーテキストSPVウォレットと呼ばれるものである。これらの種々のモジュールの機能は、間もなく更に詳細に議論される。
図4は、本開示の方式の実施形態を実装するためのクライアントアプリケーション105の例示的な実装を示す。クライアントアプリケーション105は、トランザクションエンジン404と、ユーザインタフェース(UI)レイヤ401と、を含む。トランザクションエンジン404は、上述の方式に従い、及び以下に詳細に議論するように、トランザクション152を形成する、トランザクション及び/又は他のデータをサイドチャネル301を介して受信及び/又は送信する、及び/又はP2Pネットワーク106を通じて伝播されるようにトランザクションを送信するような、クライアント105の基礎にあるトランザクション関連機能を実装するよう構成される。更に、本願明細書に開示される実施形態によると、少なくともBobのクライアント105b(及び場合によっては他のクライアント)のトランザクションエンジン401は、以下の機能モジュール:ハイパー文書エンジン402、データ転送エンジン403、及び/又はプログラムランチャー405、のうちの任意の1つ以上を更に含んでよい。ハイパー文書エンジン402、データ転送エンジン403、及びプログラムランチャー405は、一緒に、ハイパーテキストSPV(simple payment verification、簡易支払い検証)エンジン406を形成してよい。クライアントアプリケーション105の全体は、SPVウォレットとして記載されてよく、又本願明細書ではハイパーテキストSPVウォレットと呼ばれるものである。これらの種々のモジュールの機能は、間もなく更に詳細に議論される。
UIレイヤ401は、それぞれのユーザコンピュータ機器102のユーザ入力/出力(I/O)手段を介して、機器102のユーザ出力手段によりそれぞれのユーザ103へ情報を出力すること及び機器102のユーザ入力手段によりそれぞれのユーザ103から入力を受信することを含む、ユーザインタフェースをレンダリングするよう構成される。例えば、ユーザ出力手段は、視覚的出力を提供する1つ以上のディスプレイスクリーン(タッチ又は非タッチスクリーン)、オーディオ出力を提供する1つ以上のスピーカ、及び/又は触覚出力を提供する1つ以上の触覚出力装置、等を含み得る。ユーザ入力手段は、例えば、(出力手段のために使用されるものと同じ又は異なる)1つ以上のタッチスクリーンの入力アレイ、マウス、トラックパッド、若しくはトラックボールのような1つ以上のカーソルに基づく装置、会話若しくは音声入力を受信する1つ以上のマイクロフォン及び会話若しくは音声認識アルゴリズム、手動若しくは身体ジェスチャの形式で入力を受信する1つ以上のジェスチャに基づく入力装置、又は1つ以上の機械的ボタン、スイッチ、若しくはジョイスティック、等を含み得る。
注:本願明細書において種々の機能が同じクライアントアプリケーション105に統合されるとして説明されることがあるが、これは、必ずしも限定的ではなく、代わりに、それらは2つ以上の異なるアプリケーションのスーツに実装されてよく、例えば一方が他方へのプラグインであるか、又はAPI(application programming interface)を介してインタフェースする。例えば、モジュール401、402、403、404、405のうちのいずれかの機能は、任意の組合せで2つ以上の別個のアプリケーションに実装されてよい。また、記載の機能の一部又は全部が、例えばオペレーティングシステムレイヤに実装されることを除外しない。本願明細書のどこかで、単一の又は所与のアプリケーション105等を参照する場合、これが単に例であること、より一般的には、記載の機能が任意の形式のソフトウェアで実装され得ることが理解される。
図5は、Bobがデータの消費者であるシナリオで、Bobの機器102b上のクライアントアプリケーション105のUIレイヤ401によりレンダリングされてよいユーザインタフェース(UI)500の例の模擬表示を与える。同様のUIが、任意の他の消費者パーティのクライアント105によりレンダリングされてよいことが理解される。UI500は、消費者機器102のユーザ出力手段によりレンダリングされる、1つ以上のUI要素、例えば501、502を含んでよい。
実施形態では、UI500は、UIレイヤ401を通じてハイパーテキストエンジン403によりレンダリングされるハイパー文書を含んでよい。用語「ハイパー文書」は、本願明細書では、テキスト又は静止画若しくは動画のようなアンカーコンテンツ502の任意のピースによりアンカーされる1つ以上のハイパーリンクを含む任意の文書を表す。リンクのうちの少なくとも1つがテキストのピースによりアンカーされる場合には、文書はハイパーテキスト文書と呼ばれてよい。
各ハイパーリンクは、アンカーコンテンツと呼ばれる、ユーザ選択可能なUI要素502を含む。ユーザ入力手段は、ユーザ103(この場合にはBob103b)が、例えばスクリーン上でクリック又はタッチすることにより、アンカーコンテンツ502を選択することを可能にするよう構成される。これが検出されると、UIレイヤ401は、選択をハイパー文書エンジン402にシグナリングし、それに応答して、ハイパー文書エンジン402は、それぞれの宛先へのそれぞれのリンクをトリガする。
種々のUI要素をレンダリングする及びハイパーリンクを選択する特定の手段は重要でないことが理解される。これらのUI要素の機能は、間もなく更に詳細に議論される。図5に示されるUI500は、単なる概略的な模擬表示であり、実際には、それは、簡潔さのために図示されない1つ以上の更なるUI要素を含んでよいことも理解される。ハイパー文書501は、異なる形式であり、異なる数のハイパーリンクを含んでもよい。
<トランザクションハイパーテキスト>
より多くの非支払いデータがブロックチェーンに格納されるにつれ、格納されたデータを効率的に利用するために、専用のセキュアなデータ要求及び検索システムが望ましい。そのようなシステムは、2つの機能、つまりデータ要求の処理、及び関連データのリンク付け、の一方又は両方を組み込んでよい。既存のハイパーテキストプロトコルから構築して、以下は、トランザクションに組み込まれたデータを読み出すために新規なハイパーテキストSPVウォレットを使用する、ブロックチェーンに基づくハイパーテキストプロトコルを開示する。実施形態では、ウォレットは、トランザクションに組み込まれたデータを復号し及び表示するために、ブロックチェーンプログラムランチャーを組み込んでもよい。更に、実施形態は、機密データの転送を可能にするために、セキュアなエンドツーエンド暗号方式をシステムに組み込んでもよい。
より多くの非支払いデータがブロックチェーンに格納されるにつれ、格納されたデータを効率的に利用するために、専用のセキュアなデータ要求及び検索システムが望ましい。そのようなシステムは、2つの機能、つまりデータ要求の処理、及び関連データのリンク付け、の一方又は両方を組み込んでよい。既存のハイパーテキストプロトコルから構築して、以下は、トランザクションに組み込まれたデータを読み出すために新規なハイパーテキストSPVウォレットを使用する、ブロックチェーンに基づくハイパーテキストプロトコルを開示する。実施形態では、ウォレットは、トランザクションに組み込まれたデータを復号し及び表示するために、ブロックチェーンプログラムランチャーを組み込んでもよい。更に、実施形態は、機密データの転送を可能にするために、セキュアなエンドツーエンド暗号方式をシステムに組み込んでもよい。
本開示は、ブロックチェーン記憶機能で使用するために、ハイパーテキスト文書500又は他のそのようなハイパー文書を提供する。実施形態では、これは、従来のハイパーテキスト文書と同様の方法で動作する。以下は、第2パーティBob103bが、第1パーティAlice103a(「提供者パーティ」)により提供されるデータの消費者(「消費者パーティ」)である例示的なシナリオの観点で説明される。このシナリオでは、Bobは支払人であってよく、Aliceは受取人であってよい。勿論、消費者パーティと提供者パーティの役割を逆にして、又は消費者パーティ及び提供者パーティとしてパーティの他の組合せの間で、同じ又は同様の技術を必要な変更を加えて適用できることが理解される。前述のように、各パーティは、個人、又は会社、学術研究所、行政体、若しくは慈善団体のような組織であることもできる。提供者パーティ103aは、本願明細書で「サービスプロバイダ」とも呼ばれることがあるが、これは必ずしも会社又は1人より多くの組織を意味しない。
以下の種々の動作は、消費者パーティ103b及びサービスプロバイダ103aにより実行されるとして記載され得る。これは、それぞれのパーティ103a、103bのそれぞれのコンピュータ機器102a、102b上で実行するそれぞれのソフトウェア105a、105bにより動作が実行されることを意味する短縮形として使用され得ることが理解される。
前述のように、消費者パーティ103bは、ハイパー文書501を記憶装置から読み出し、それらのクライアントソフトウェア105bのUIレイヤ401を通じてそれをレンダリングする。幾つかの実施形態では、ハイパー文書501は、消費者パーティ自身のコンピュータ機器102b上の記憶装置から、例えば、消費者パーティ1-03bのユーザ端末上のローカル記憶装置若しくはサーバ上のプライベート記憶位置から、読み出されてよい。後者の場合には、これは、ブロックチェーンネットワーク106として同じパケット交換ネットワーク101、例えばインターネット、又は消費者パーティ103bの私設ローカルエリアネットワークのような別のネットワークを介してアクセスされてよい。他の実施形態では、ハイパー文書501は、World Wide Web上のウェブサイトから読み出されてよい。パケット交換ネットワーク101がインターネットである場合には、文書501は、ここでも、ブロックチェーンネットワーク106として同じ物理ネットワークを介してアクセスされてよい。
図6Aに示すように、更なる実施形態では、ハイパー文書501は、ブロックチェーン150条の既存のトランザクション152Sに格納されてよい。これは、本発明の目的のために「ソーストランザクション」と呼ばれてよい(この文脈で「ソース(source)」は文書のソースを意味し、必ずしも支払いのソースを意味しないことに留意する)。ハイパー文書501は、ペイロードデータ(コンテンツ)が格納され得るソーストランザクション152Sの1つ以上の適切なペイロードフィールドに格納され、そこからアクセスされる。例えば、アウトプットに基づくモデルでは、ハイパー文書501は、ソーストランザクション152Sの使用不可能アウトプット203S、例えば使用不可能UTXOに格納されてよい。問題のアウトプットは、該アウトプットに含まれるスクリプトの実行を終了するOP_RETURNのようなオペコードの包含により使用不可能にされてよい。
そのような実施形態では、消費者パーティ103bは、ブロックチェーンネットワーク150を介して(ここでも、ブロックチェーンネットワーク106が上に置かれる物理ネットワークとしてのパケット交換ネットワーク101を介して)、ブロックチェーン150上のソーストランザクション152Sの関連フィールドを検査することにより、ハイパー文書501にアクセスする。
図6Aに示すように、アウトプットに基づくモデルでは、ソーストランザクション152Sは、何らかの他の先行するトランザクション(図示しない)を逆に指す少なくとも1つのインプット202Sを含む。例えば、先行するトランザクションは、同じサービスプロバイダAliceの別のトランザクション、及び/又はダスト量(無視できる量)であることができる。従って、サービスプロバイダは、実際に、ソーストランザクション152Sをブロックチェーン150に置くためにマイニング手数料を支払うだけでよい。ソーストランザクション152Sは、実施形態では、使用不可能アウトプットの形式を取る少なくとも1つのアウトプット203S1も含む。例えば、Script言語を用いて、これは、アウトプット203S1のロックスクリプトに、ブロックチェーンネットワーク150のノード104において実行されるとスクリプトを終了させるOP_RETURNオペコードを包含することにより実装されてよい。これは、任意のペイロードデータを運ぶ代わりに、アウトプットを使用可能にする。実施形態では、これは、ソースハイパー文書501を格納するために使用される。大部分のトランザクションプロトコルでは、トランザクションは、少なくとも1つの使用可能アウトプット203S0を有することも要求される。これは、サービスプロバイダへの払い戻し、及び/又はダスト支払いを指定することができる。実施形態では、アウトプットは、 UTXOと呼ばれてよい。ソーストランザクション152Sは、ここではTxIDSとラベルを付されたソーストランザクションIDを含むヘッダフィールド201Sも含む。
他のブロックチェーン150におけるソーストランザクションの他のフォーマット、トランザクションプロトコル、又はトランザクションモデルは、排除されない。例えば、使用不可能アウトプット203S0内のペイロードデータを可能にする又は全部のトランザクションが使用可能アウトプットを有することを必要としない異なるタイプのアウトプットに基づくモデルが実装できることが排除されない。他のスクリプト言語は、使用不可能アウトプットを生成するための他のオペコードを有してよい。別の代替では、ハイパー文書501は、アカウントに基づくモデルにおけるトランザクションのスマートコントラクトフィールドに含まれることができる。
以下は、ソースハイパー文書501がアウトプットに基づくモデルにおけるソーストランザクション152の使用不可能アウトプット203S1に格納されそこからアクセスされるという観点で説明されるが、これが限定ではなく、より一般的には、ハイパー文書501のコンテンツ及び機能に関する同じ技術が異なるタイプのトランザクションにでも格納されている又はオフチェーンであっても適用できることが理解される。
ハイパー文書501は、1つ以上のハイパーリンクを含む文書である。図6Aに示すように、ハイパーリンクは、少なくとも3つの部分、つまり、アンカーコンテンツ502のピース(時に、単に「アンカー」と呼ばれる)、リンクされたデータコンテンツのアイテムが見付かる宛先の識別子601、及び識別子601をそれぞれのアンカーコンテンツ502に関連付け、リンクとしてハイパーリンクを識別する1つ以上のコード要素602、を含む。ハイパー文書501がHTMLのようなマークアップ言語で作成される場合、コード要素は、1つ以上のタグの形式を取り、タグは、それぞれのアンカーコンテンツ502をそれぞれの識別子601にタグ付けし、リンクのフロントエンドとして動作することを可能にする。アンカーコンテンツ502は、リンクのユーザに見える部分であり、それを介してユーザがリンクにアクセスできるユーザ制御としても動作する。少なくとも1つのハイパーリンクのアンカーコンテンツがテキスト含む場合、ハイパー文書501は、ハイパーテキスト文書と呼ばれてよい。しかしながら、1つ以上のハイパーリンクのアンカーコンテンツが、代替として又は追加で、静止画又は動画のような別の形式のコンテンツを含み得ることが排除されない。
ハイパー文書501は、HTMLページ、ワープロ文書、表計算シート、スライドデック、等のような任意の適切な形式を取ってよい。
ハイパー文書エンジン402がハイパー文書501を消費者ユーザ103bの機器102bのUI401/500により(例えばオンスクリーンで)レンダリングするとき、それは、基礎にある識別子601又はコード要素602ではなく、アンカーコンテンツ502をユーザに対してレンダリングする。従って、アンカーコンテンツは、リンクのフロントエンドとして動作する。標準的に、ハイパー文書エンジン402は、リンクがリンクであることをユーザに示すため、及びそれらを他の非ハイパーリンクコンテンツと区別するために、例えばリンクに下線を付ける又はリンクの色を適応することにより、異なる方法でリンクをレンダリングし得る。しかしながら、これは、全部の可能な実装にとって必須ではない(例えば、リンクはEaster eggのような隠れたリンクであることができ、又はコンテンツ自体が本質的にリンクの前にあることをユーザに説明又は示すことがある)。
ユーザインタフェース500は、例えばポイントアンドクリックインタフェースによりクリックすることにより、又はタッチスクリーン上でタッチすることにより、ユーザがアンカーコンテンツ502を選択することを可能にする。それに応答して、UIレイヤ401は、これを示す信号をハイパー文書エンジン402へ送信する。これに応答して、ハイパー文書エンジン402は、それぞれの識別子601によりリンクされた宛先リソースから宛先コンテンツにアクセスするために必要な1つ以上の動作、例えばパケット交換ネットワーク101(例えばインターネット)のようなネットワークを介して該宛先コンテンツにアクセスするための1つ以上の信号を送信することを開始する。
従来、ハイパーリンクの宛先の識別子601は、ウェブリソースの形式で宛先を識別するURL(uniform resource locator)であり得る。しかしながら、本願明細書に開示される1つの態様によると、ハイパー文書501内のハイパーリンクのうちの少なくとも1つの宛先は、ブロックチェーン150上の別のトランザクション152Dであり、それぞれの識別子は、宛先トランザクションのトランザクションID(本願明細書ではTxIDDの形式でラベル付けされる)である。実施形態では、ハイパー文書501又はその中のトランザクションハイパーリンクのうちの少なくとも1つ以上を作成するために使用される言語は、特注のマークアップ言語、又はトランザクションへの適用のために特別に設計された他のそのようなハイパーテキストまたはハイパー文書言語を含んでよい。より具体的には、しかしながら、ハイパー文書501は、HTML(Hypertext Markup Language)のような既存の言語を用いて作成される。この場合、従来URLへのハイパーリンクを生成するために使用されている既存のタイプのタグの新しい変形を導入するために、既存の言語に対する小さな拡張のみが必要である。他の既存のタイプのタグも、例えば太字を生成し、フォントを設定し、midiファイルを再生し、表を生成し、又はテキストのスクロールのような効果を追加する等のために、ハイパー文書501内で利用可能である。
HTMLは、ウェブページ設計のための標準的言語であり、コンテンツ表示(例えば、見出し、フォント、画像、等)及びハイパーリンク(HTTPにより期待される形式「http://www.DOMAIN/PAGE」における他のウェブページへのリンク)のための命令を含む。本願明細書で開示されるブロックチェーンハイパーテキスト文書501は、表示のために同じHTMLコマンドを含むことができる:
しかしながら、特定のドメイン及びページへのリンクはもはや必要なく、ブロックチェーン150上のトランザクション152Dにリンクすることもできる。従って、ハイパーテキスト文書501に埋め込まれたリンクは、データが格納されているトランザクション152D、又は要求されるデータが1つより多くのトランザクションの間で分散されている場合には組み立て(assembly)命令が格納されているトランザクションへの参照である。例えば、
ハイパー文書エンジン402は、コマンドを処理し、ユーザ103bにフォーマットされたページを表示することができる。更に、実施形態では、ページは、前のバージョンを含むトランザクション152Dを使用することにより、更新できる。このリンク付けは、自由に再呼び出しできる完全なバージョン履歴を提供でき、最新バージョンは常にTUXOセットに含まれる。
図6Aは、実施形態による、1つの宛先トランザクション152D1の例を示す。アウトプットに基づくモデルを利用する実施形態では、宛先トランザクション152D1は、何らかの他の先行するトランザクション(図示しない)を逆に指す少なくとも1つのインプット202Dを含む。例えば、宛先トランザクション152D1の先行するトランザクションは、同じサービスプロバイダAliceの別のトランザクション、及び/又はダスト量(無視できる量)であることができる。宛先トランザクション152Dのインプット202D1は、ソーストランザクション162S(ハイパー文書501のソースという意味でソースである)のアウトプット203S0を使用する必要はないことに留意する。しかしながら、それも除外されない。ソーストランザクション152D1は、実施形態では、使用不可能アウトプットの形式を取る少なくとも1つのアウトプット203D11も含む。例えば、Script言語を用いて、これは、ここでも、アウトプット203S1のロックスクリプトにOP_RETURNオペコードを包含することにより実装されてよい。実施形態では、この使用不可能アウトプット203D11は、宛先データ603を格納するために使用される。大部分のトランザクションプロトコルでは、トランザクションは、少なくとも1つの使用可能アウトプット203D10を有することも要求される。これは、ここでも、サービスプロバイダへの払い戻し、及び/又はダスト支払いを指定することができる。実施形態では、アウトプットは、ここでも、UTXOと呼ばれてよい。宛先トランザクション152D1は、ここではTxIDD1とラベルを付された宛先トランザクションIのそれぞれのDを含むヘッダフィールド201D1も含む。
他のブロックチェーン150における宛先トランザクションの他のフォーマット、トランザクションプロトコル、又はトランザクションモデルは、排除されない。例えば、使用不可能アウトプット203D10内のペイロードデータを可能にする又は全部のトランザクションが使用可能アウトプットを有することを必要としない異なるタイプのアウトプットに基づくモデルが実装できることが排除されない。他のスクリプト言語は、使用不可能アウトプットを生成するための他のオペコードを有してよい。別の代替では、宛先データ603は、アカウントに基づくモデルにおけるトランザクションのスマートコントラクトフィールドに含まれることができる。
以下は、宛先データ603がアウトプットに基づくモデルにおけるブロックチェーン上150の少なくとも1つの宛先トランザクション152Dの使用不可能アウトプット203D1に含まれるという観点で説明されるが、これは限定ではなく、より一般的には、データに603に関する同じ技術が他のタイプのブロックチェーン上の異なるタイプのトランザクションに格納されている場合に適用できることが理解される。
実施形態では、ソースハイパー文書501は、複数のハイパーリンクを含んでよい。それらのうちの1つ以上は、ブロックチェーン150上の宛先トランザクション152Dへのリンクであり得る。実施形態では、1つ以上の他のものが、URLへの従来のリンクであることができる。実施形態では、ソースハイパー文書501は、ブロックチェーン150上の異なる宛先トランザクション152D1、152D2への複数のハイパーリンクを含んでよい。図6Aには説明のために2つが示されるが、他の数が存在してよいことが理解される。このように、ハイパー文書501は、複数の他のトランザクション152D1、152D2、等に格納されたリソースへのある種のインデックスとして機能できる。
実施形態では、各宛先トランザクション152D1、152D2、等は、第1宛先トランザクション152D1に関して上述したものと同じフォーマットを有してよい。
ソースハイパー文書501を提供するサービスプロバイダは、宛先データ602を提供する同じサービスプロバイダ(提供者パーティ)である必要はないことに留意する。実施形態では、Alice103aは、少なくとも1つの宛先トランザクション152Dの中の宛先データ603の少なくとも提供者である。ソースハイパー文書は、Alice又は第三者プロバイダにより提供されてよく、又はBob自身により生成されてもよい。
宛先データ603は、実質的に任意のタイプのコンテンツ、つまりペイロードデータ又はユーザコンテンツ(ブロックチェーンネットワーク106上のトランザクションとしてどのように機能するかに関連するトランザクション152Dの要素とは対照的である)であり得る。例えば、宛先データ603は、テキスト、1つ以上の静止画又は動画、及び/又はオーディオコンテンツを含んでよい。それは、別の文書又はファイルの形式をとってよい。実施形態では、宛先トランザクション152Dのうちの少なくとも1つの中の宛先データは、1つ以上の更なるトランザクション152へ向かうr1つ以上の更なるハイパーリンク及び/又はURLを含む別のハイパー文書、例えばハイパーテキスト文書、を含んでよい。異なるデータ603が、宛先トランザクション152Dのうちの異なるトランザクションに含まれてよい。
消費者ユーザ103bが、ブロックチェーン152上の宛先トランザクション152Dにリンクするハイパーリンクのうちの1つのアンカー502を選択すると(例えば、クリック又はタッチすると)、ハイパー文書エンジン402は、ハイパーリンクからの読み出しとしてそれぞれのトランザクションID601に基づき、それぞれの宛先トランザクション152D(例えば、152D1)の関連フィールド(例えば、使用不可能アウトプット203D11)から宛先ペイロードデータ603を読み出すための動作セットを実行するよう、データ転送エンジン403をトリガする。これh、ブロックチェーンネットワーク106が実装される物理ネットワーク101(例えば、インターネット)を介して、ブロックチェーンネットワーク106上の記憶ノード104Sのうちの1つからそれぞれの宛先トランザクション152D1にアクセスすることを含む。
実施形態では、アウトプットに基づくモデルでは、ハイパーリンクは、データが格納されている特定のアウトプットの識別子も含み得る。例えば、ハイパーリンクは、トランザクションTxIDD1のアウトプット1(203D11)を指定し得る。この場合、アウトプット識別子は、ハイパーリンクから読み出され、データを特定するためにも使用される。しかしながら、これは必須ではない。代替として、データ転送エンジン403は、宛先トランザクションの同じ所定のアウトプット番号からデータを常に読み出すよう構成され得る(例えば、常にアウトプット#1に格納されていると想定される)。或いは、より一般的には、他のモデルでは、データは、宛先トランザクション152Dのデータ構造内に位置する特定の所定の位置に格納されることができる。別の代替として、データ転送エンジン403は、アウトプットについて又は所定の形式の若しくは所定のフォーマットでマークされたデータについて、例えばOP_RETURNを含む任意のアウトプット203について検索することにより、又は何らかの他の所定のマーカについて検索することにより、宛先トランザクション152Dのデータ構造を検索するよう構成されることができる。
プログラムランチャー405は、ブロックチェーン150上のトランザクション152のペイロードから、例えば(OP_RETURNを含むUTXOのような)使用不可能アウトプットからダウンロードされたプログラムコードを実行するよう構成される。実施形態では、データ603は、プログラム又はその部分を含み得るハイパーリンクを選択することにより、アクセスされる。この場合、ハイパー文書エンジン402は、ハイパーリンクの選択に応答して、ブロックチェーン150上の宛先トランザクション152Dからのプログラムコードにアクセスするようデータ転送エンジン403をトリガするだけでなく、このコード603を実行するようプログラムランチャー405もトリガするよう構成されてよい。宛先トランザクション152Dに格納されるコード603は、任意の適切なインタープリット可能な、コンパイル可能な、又は実行可能なコード、例えばJava script、Python、C++、又は実行可能機械コードを含み得る。
代替又は追加で、ハイパー文書エンジン402自体、又はその部分は、ブロックチェーン150上の別のトランザクション152(図示しない)から(例えば、OP_RETURNを含むUTXOのような使用不可能アウトプットから)既に予めダウンロードされたプログラムコードのモジュールの形式を取り得る。この場合、問題のコードは、ハイパーリンクを選択する以外の何らかの他の手段によりアクセスされ、プログラムランチャー405は、ハイパー文書エンジン402の上述の機能を実装するために、コードのこの部分を実行するよう構成される。
幾つかの実施形態では、宛先データ603は、暗号化されず、自由に利用可能であってよい。その場合、データ転送エンジン403は、単にデータ603をそれぞれの宛先トランザクション152Dから読み取ることができる。データは、例えばLZM又は任意の他の知られている圧縮技術を用いて、圧縮されることもできる。この場合には、データの読み取りは、データを伸張することを含む。データ603がユーザ103bに対してレンダリングされる形式、例えばテキストまたは画像データ等である場合、データ転送エンジン403は、次に、UIレイヤ401及びUI500を通じてそれをレンダリングさせる。宛先データ603が、ハイパーテキスト文書のようなハイパー文書を含む場合、これは、ハイパー文書エンジン402によりそれをレンダリングすることを含んでよい。
他の実施形態では、しかしながら、宛先データ603の少なくとも一部は、例えばXOR暗号化または任意の他の知られている暗号化技術に基づき暗号化されてよく、従って復号するための復号鍵を必要とする。復号鍵は、本願明細書ではアクセス鍵とも呼ばれてよい。そのような実施形態では、次に、それぞれのハイパーリンクの作動に応答して、データ転送エンジン403は、それぞれの宛先データ603を伸張する又は消費者ユーザ103bに対してレンダリングする前に、アクセス鍵を用いてそれぞれの宛先データ603を復号する。
宛先データ603が暗号化される幾つかのシナリオでは、消費者パーティ103bは、それぞれのハイパーリンクを作動する時に、データ603を復号するための必要なアクセス鍵を有しなくてよい。そのような実施形態では、データ転送エンジン403は、それぞれのハイパーリンクの作動に応答して、サービスプロバイダ103a(提供者パーティ、つまり、少なくとも宛先データ603の提供者)へ要求を送信するよう構成されてよい。要求は、サイドチャネル301を介して、又はブロックチェーン150自体を介して、送信されてよい。いずれの方法も、これに応答して、提供者1031は、提供者により課される任意の条件(消費者パーティ103bからの支払いの受け取り、及び/又は消費者パーティ103bのアイデンティティの検証)を満たすことを条件として、消費者パーティ103bにアクセス鍵のコピーを返送する。
特定の実施形態では、この処理は、データサービスプロバイダ103a(提供者パーティ)のクライアントとして動作する消費者ユーザ103bのデータ転送エンジン403により発行されるために本願明細書では「クライアントトランザクション」と呼ばれる別のトランザクション152Cを含んでよい。図6Bに例が示される。
クライアントトランザクション152Cは、2つの機能のうちの一方又は両方をサービスする。つまり、第1に、データ603について提供者パーティ103aに支払うこと、及び/又は、第2に、提供者パーティ103aに要求をシグナリングすることである。
図6Bに示すように、アウトプットに基づくモデルでは、クライアントトランザクション152Cは、消費者パーティBob103bの別の先行するトランザクションのアウトプットを指す少なくとも1つのインプット202Cを含む。それは、データ603の提供者103aへの支払いを指定する使用可能アウトプット203C0も含んでよい。及び/又は、それは、例えばOP_RETURNにより使用不可能にされた使用不可能アウトプット203C1を含んでよい。使用不可能アウトプット203C1は、少なくとも2つの要素を含む。つまり、選択されたリンクの宛先トランザクションのトランザクションID604(本例ではTxIDD1)、及び宛先データ603が指定されたトランザクションIDにより宛先トランザクション152D(本例では、図6Bのトランザクション151D1)から要求されていることの信号として動作するコード要素605である。消費者パーティ103bは、クライアントトランザクション152Cの部分、例えばアウトプット203Cの1つ以上を含む部分に署名してもよい。
消費者ユーザ103bがハイパーリンクを選択するとき、それに応答して、データ転送エンジン403は、対応するクライアントトランザクション152Cを自動的に生成し、サービスプロバイダ103aにより受信されるようにこれを送信する。
実施形態では、これは、クライアントトランザクション152Cをサービスプロバイダ103aへサイドチャネル301を介して送信することを含んでよい。この場合、サービスプロバイダ103aは、クライアントトランザクション152Cを受信し、次に、彼女は、ID604及び要求信号605を読み取り、それに応答して、消費者103bへ対応するアクセス鍵を返す。これは、サイドチャネル301を介してそれを送信することにより、又はブロックチェーン150上にトランザクション152を配置することにより、行うことができる。サービスプロバイダ103aは、更に、彼女の支払いを受け取るために、ブロックチェーン150に記録させるために、クライアントトランザクション152Cをブロックチェーンネットワーク106にブロードキャストする。幾つかの場合には、消費者パーティ103bは、チェーン150に記録されるために必要な1つ以上の部分、例えばサービスプロバイダ103aの署名が欠如しているテンプレートトランザクションの形式で、クライアントトランザクションをサービスプロバイダ103aへ送信してよい。この場合、サービスプロバイダ103aは、それをネットワーク106にブロードキャストする前に、例えば、トランザクションに署名することにより(例えば、アウトプット203Cの1つ以上を含む部分に署名することにより)、欠如している部分を追加するために必要なステップを行う。実施形態では、サービスプロバイダ103aは、例えば使用不可能アウトプットにアクセス鍵を包含するようクライアントトランザクションを適応し(malleating)、及びブロックチェーン150に記録されるよう、適応済みクライアントトランザクションをブロードキャストすることにより、アクセス鍵を消費者パーティ103aへ送信する。
代替の実施形態では、消費者パーティ103bは、クライアントトランザクション152Cをブロックチェーン150上に公開的に記録させるために、クライアントトランザクション152Cをブロックチェーン150に彼自身でブロードキャストすることにより、クライアントトランザクション152Cをサービスプロバイダ103aに通信する。任意で、消費者パーティ103bは、クライアントトランザクション152Cが今やオンチェーンにあることを彼女に知らせるために、サイドチャネル301を介してサービスプロバイダ103aにシグナリングしてよい。しかしながら、これは必須ではない。クライアントトランザクション152Cの使用可能アウトプット203C0は、サービスプロバイダ103aにアドレス可能なので、これは、彼女がそれをチェーン150上で見付けることができることを意味する。更に、トランザクションのアンロックスクリプトはBobの公開アドレス及びBobの秘密鍵の知識を必要としたであろう暗号書名を含むので、それが消費者Bobから生じていると識別可能である。
満足の行くクライアントトランザクション152Cをオンチェーンで見付けると、サービスプロバイダ103aは、アクセス鍵により応答する。彼女は、ID604及び要求信号605を読み取り、それに応答して、対応するアクセス鍵を消費者103bに返す。ここでも、これは、サイドチャネル301を介してそれを送信することにより、又はブロックチェーン150上に更に別のトランザクション152を配置することにより、行うことができる(以下を参照)。
上述のように、サービスプロバイダ103a(Alice)が消費者103bにアクセス鍵を提供する1つの方法は、ブロックチェーン150上の更に別のトランザクション(図示しない)に公開的にそれを配置することである。例えば、ここでも、これは、アウトプットに基づくモデルにおいて使用不可能アウトプット(例えば、OP_RETURNを含むUTXO)内にそれを配置することにより実施できる。アクセス鍵自体は、ここでは平文で格納できる。しかしながら、これは、特定の消費者103b(Bob)がアクセスのための条件を満たしている(例えば、支払いを行っている、及び/又は彼のアイデンティティのような任意の他の検証基準を満たしている)場合でも、公衆の誰によってもデータ603にアクセスすることを不可能にし得る。これを解決するために、実施形態では、アクセス鍵は、ブロックチェーン自体に、Alice及びBob又は少なくともAlice及びBobを含む選択グループにのみ知られている共有シークレットに基づき暗号化される暗号化形式で置かれる。
上述の方式の変形では、Bobのみがアクセス鍵を取得することを保証するために、より複雑な暗号パズルが利用されてよい。この場合、Aliceは、Bobがアクセス鍵を導出することを可能にする情報の暗号化ピースをチェーン上に置く。例えば、Aliceは、ブロックチェーン150上に、共有シークレットに基づき暗号化された暗号化パスワードを置いてよい。宛先データ603自体は、パスワードの関数(例えば、1つ以上のハッシュを含む関数)であるアクセス鍵に基づき暗号化されてよい。この場合、AliceがBobの支払いを受け取る及び/又はアクセスのための任意の他の条件を検証すると、彼女は、暗号化パスワードをブロックチェーン150上で利用可能にする。Bobはこれにアクセスし、共有シークレットに基づきそれを復号し、次に、復号したパスワードを用いてアクセス鍵を計算し、アクセス鍵を用いてデータを復号する。
上述のプロトコルの幾つかの例示的な実装は、間もなくより詳細に説明される。
実施形態では、Aliceは、Bobに、サイドチャネル301を介してシグナリングして、彼に、アクセス鍵、暗号化アクセス鍵、又は他のそのようなアクセス情報のピースが今やブロックチェーン150上で利用可能であることを知らせてよい。代替として、Aliceはこれを行わず、代わりに、トランザクション内のBobの識別子が彼に彼自身でそれを見付けることを可能にする。例えば、Aliceは、(このシナリオではBobはAliceに支払う人なので)望ましくはダスト量のアクセス情報を含むトランザクションのアウトプット(例えば、UTXO)をBobへとアドレス(address)してよい。
実施形態では、トランザクション152に格納された情報、ソーストランザクション152S内のソースハイパー文書501又は宛先トランザクション152D内の宛先文書若しくは他のそのようなデータ、を更新することが望ましいことがある。ブロックチェーンに記録されると、既存のトランザクションは変更できない。代わりに、従って、実施形態では、更新は、チェーンに新しいトランザクションを後に追加することにより実施できる。ここで、新しいトランザクションは、更新されているデータを格納する既存のトランザクションの使用可能アウトプットを使用する。従って、ページ等は、前のバージョンを含むトランザクション152Dを使用することにより、更新できる。このリンク付けは、自由に再呼び出しできる完全なバージョン履歴を提供するためにも使用でき、最新バージョンは常にTUXOセットに含まれる。
これを実施するために、既存のトランザクション(更新されているもの)は、少なくとも使用可能アウトプット(及び、データが含まれる場合には、OP_RETURN等の下で使用不可能アウトプットである可能性がある)を含み得る。検証されると、使用可能アウトプットは、記憶及び/又はマイニングノード104S、104Mの一部又は全部において維持されるUTXOセットに含まれる(例えば、標準的には、全部のマイナー及び幾つかの記憶ノードにより格納される)。更新するために、既存のトランザクションの使用可能UTXOを使用し、更新されたデータを新しいトランザクションに(例えば、ここでも、OP_RETURNオペコード等を用いて新しいトランザクションの新しい使用不可能アウトプットに)含んでよい。検証されると、この新しいトランザクションは、今やUTXOセットに含まれる。従って、最新の情報は、各記憶及び/又はマイニングノード104S/Mにより維持されるUTXOセット内で常に利用可能である。例えば、宛先トランザクション152D1のうちの1つが、その宛先トランザクション152D1を使用することにより更新されて、更新されたデータを含む新しい宛先トランザクション152D1'(図示しない)を生成する。予め存在しているソース文書501は、依然として、下の宛先トランザクション152D1の下のTxIDにリンクしている。しかしながら、ハイパー文書エンジン402がそのリンクに従うとき、実施形態では、それは、リンク先の宛先トランザクション152D1を使用する任意の後続のトランザクションが存在するかどうかに拘わらず、UTXOセットにより、記憶又はマイニングノード104S/Mのうちの1つから自動的に検索する。そうである場合、それは、代わりに後のトランザクションからデータを自動的に取得する。
<例示的なデータ転送プロトコル>
以下は、データ転送エンジン403により利用され得るデータ転送プロトコルの幾つかの例示的な実装を説明する。実施形態では、これらのうちの任意のものが、消費者パーティ(Bob)103bがリンク先宛先トランザクション152Dからのデータへのアクセスを要求する手段としてハイパー文書501からハイパーリンクを選択すると、トリガされてよい。代替として、しかしながら、これらのプロトコルのうちの任意のものは、アクセスの要求が必ずしもハイパーリンクを選択することによらず、いずれの方法でトリガされるかに拘わらず、提供者パーティ(Alice)103aがBobにブロックチェーン150上のトランザクション152を介して(例えば、使用不可能アウトプットから)データへのアクセスを提供することを可能にするために使用されることもできる。
以下は、データ転送エンジン403により利用され得るデータ転送プロトコルの幾つかの例示的な実装を説明する。実施形態では、これらのうちの任意のものが、消費者パーティ(Bob)103bがリンク先宛先トランザクション152Dからのデータへのアクセスを要求する手段としてハイパー文書501からハイパーリンクを選択すると、トリガされてよい。代替として、しかしながら、これらのプロトコルのうちの任意のものは、アクセスの要求が必ずしもハイパーリンクを選択することによらず、いずれの方法でトリガされるかに拘わらず、提供者パーティ(Alice)103aがBobにブロックチェーン150上のトランザクション152を介して(例えば、使用不可能アウトプットから)データへのアクセスを提供することを可能にするために使用されることもできる。
第1の例示的なプロトコルは、図7~9を参照して説明される。これは、例えば、ある人(Alice)が別の人(Bob)にデータを送信するピアツーピアメッセージングプロトコルとして使用されてよい。
個人の詳細(名前、住所、銀行情報、医療データ、等)のような機密情報を送信するために、データが安全に暗号化されて、プライバシの侵害を防ぐことを保証するための更なる注意が取られることが望ましい。実施形態では、これは、共有鍵のセットを利用して実施され得る。
例えば、2つの共有シークレット鍵S1、S2が、楕円曲線点の2つの座標(x,y)=(S1,S2)として、非セキュアなネットワークを介してさえ、2つのパーティの間で安全に確立され得る。例えば、Alice(A)が秘密鍵VA及び公開鍵PA=VA・Gを有し、Bob(B)が秘密鍵VB及び公開鍵PB=VB・Gを有し、Gは合意した楕円曲線生成元(generator point.)であるとする。Aliceは、Bobの公開鍵を使用して、シークレットを以下のように計算できる:
Bobは、Aliceの公開鍵を使用して、同じシークレットを以下のように計算できる:
更に、共有シークレットの最初の確立を用いて、セッション鍵生成プロトコルは、ユーザ(消費者パーティBob)がアクセスを要求する度に使用でき、新しい楕円曲線計算を必要としないで新しい共有鍵を生成する。サービスプロバイダへの登録に続き、ユーザBobは、上述のように計算されたユニークなシークレットS1を有する。Bobがサービスにアクセスしたいと望むとき、サービス(Alice)は、Bobが読み取り可能なS1により符号化された1回限り使用の鍵Kをトランザクションと共に提供する。サービスプロバイダAliceは、次に、1つ以上のサービスにアクセスするためのハッシュパズルH(K)の解を要求できる。これは、従来のパスワードを置き換え、実施形態では、ユーザの介入無しにウォレット105bにより処理できる。
そのような手順の例は、以下の通りであり、図7にも示される。
ステップS1で、Aliceは以下を計算する:
ステップS2で、Aliceは以下を計算する:
ステップS3で、AliceはBobへのトランザクションTxを生成し、公開テキストとしてスクリプトにSKxを含める。
ステップS4で、BobはTxを受信する。受信するとき、BはSKxを知るためにTxを使用する必要がない。
ステップS5で、Bobは以下を計算する:
ステップS6で、Bobは以下を計算する:
Bobは、今や、秘密であるセッション鍵を有する。ステップS7で、彼は、これを認証及び/又は1つ以上のサービスへのアクセスのために使用できる。
消費者Bobは、ブロックチェーン150自体と相互作用することにより(サービスプロバイダシステムとは対照的である)、鍵Kを得ることに留意する。つまり、プロバイダAliceは、Bob(しかし他の誰かではない)が共有シークレットに基づき鍵Kを導出することを可能にする何らかの暗号化情報をチェーン上に置く。しかしながら、他の実施形態では、Aliceは、必要なアクセス鍵を、サイドチャネル301を介してBobにオフチェーンで提供できる。
この手順の適用可能性はデータ転送に限定されないことにも留意する。例えば、他の適用では、鍵は、オーバザトップ(over-the-top (OTT))ビデオ又は音楽ストリーミングサービス、又はレンタルサービスへのアクセス、等をBobに許可することができる。
以下は、図8に示す処理の概略図に沿う、ブロックチェーンネットワーク106からデータ又はファイルを要求するための消費者パーティBob103bに対するセキュアなハイパーテキスト転送のための例示的なステップバイステップ手順である。この特定の例では、計算の簡単さが、OP_XORオペコードを用いるUTXOに基づくモデルのトランザクションスクリプトの中でこれを達成することを可能にする。
ステップT1で、Bobは、彼のUI500を通じてハイパーリンクによいrデータを要求する。それに応答して、UIレイヤ401は、Bobのコンピュータ機器102b(例えば、彼のローカルコンピュータ)上でスマートSPVウォレット機能406に対する要求を示す。
ステップT2で、スマートSPV406は、XORに基づく鍵共有プロトコルのようなセキュアなシークレット分配プロトコルを用いてセッション鍵を交渉し、2つの秘密鍵(S1及びS2)を生成する。実施形態では、消費者Bobは、ブロックチェーン150自体と相互作用することにより(サービスプロバイダシステムとは対照的である)、セッション鍵を交渉する。例えば、これは、XOR暗号化に基づくUTXOに基づくモデルにおけるスクリプトに基づき行うことができる。別の例として、それは、アカウントに基づくモデルのスマートコントラクトで行うことができる。更なる代替では、しかしながら、交渉は、サイドチャネル301を介してオフチェーンで実行されてよい。
ステップT3で、Bobからのデータ要求は、S1を用いて符号化され、ネットワーク106へブロードキャストされる。従って、要求自体は、オンチェーンにブロードキャストされてもよい。代替として、しかしながら、AliceとBobとの間に既存の関係が存在する場合には、サイドチャネル301が代わりに使用されてよい。
ステップT4で、サービスプロバイダ(Alice)は、ターゲットデータ603を符号化し、(S1から導出したS2を使用して)圧縮し、これをクライアントの公開アドレス(Bobのアドレス)にアドレス指定されたトランザクションに含める。従って、所望のデータペイロード603を運ぶトランザクションは、消費者Bobがブロックチェーン150から読み出せるためにオンチェーンに置かれる。それはBobにアドレス指定されるので、彼は、それをブロックチェーン150上で見付けることができる。任意で、Aliceは、トランザクションの存在をBobに警告するために、サイドチャネル301を介して彼にシグナリングすることもできる。
Bobへアドレス指定されるように、このTxは消費者Bobのアドレスに対してロックされた支払いを有するUTXOを含み得る。これは、ダスト(無視できる)量であり得るが、Bobのアドレスに対してアウトプットをロックすることにより、彼はトランザクションを通知され、そのトランザクションで彼は彼が必要とするTxIDを知る。その他の場合、Alice及びBobは、TxIDを通信するために、サイドチャネル301を必要としてよい。
ステップT5で、Bobのスマートウォレット105bのSPV406は、トランザクションを受信し、共有シークレットS2を用いてそれを復号し、次にデータを復号する。
ステップT6で、復号データは、UI500を通じてBobに表示される。実施形態では、これは、ブロックチェーンプログラムランチャー405を用いて行われてよい。
実施形態は、クライアントとブロックチェーンネットワークとの間の仲介として特別に設計されたSPVウォレット105bを利用してよい。SPVウォレットの使用は、大規模データ記憶を必要とせず、装置に渡るセキュアな使用を可能にする。幾つかの実装では、マークル証明を実行することにより、受信したデータは、ブロックヘッダのみを用いてローカルに検証され、スマートフォン及び他のモバイル装置がサービスに接続することを可能にしてよい。これは、SPVノードにあるスマートウォレットを操作する主な特徴である。
実施形態では、SPVウォレット105bは、以下の3つの異なる機能のうちのいずれか又は全部を有してよい。第1 の機能は、鍵管理、及び例えばブルーム(bloom)フィルタを用いる関連トランザクションについてのブロックチェーンネットワークの監視である。これは、送信者103aと共有秘密セッション鍵を確立することを含んでよい。第2の機能は、ハイパーリンクのクリックを、ブロックチェーンネットワーク106を通じて伝播するためにトランザクションを介するトランザクション要求へと換えることである。第3の機能は、トランザクション内のデータを復号し、伸張する(inflate)ことである。
第1のポイントは、従来のSPVウォレットにおいて標準的であり、従ってここで更に議論されない。しかしながら、第2のポイントは、ハイパーリンクのクリックをトランザクションへと変換することは標準的ではない。上述のように、ハイパーリンクは、トランザクションの識別及び動作可能なリンクを含む。リンクをクリックすると、SPVは、トランザクション料金及びデータ要求サービスのための任意のサービス料金を支払うのに十分なトランザクション152Cを生成するようトリガされる。このトランザクションは、要求されたデータと引き換えに、トークンを召喚することもできる。OP_PUSHDATA又はOP_RETURNを用いて、「要求」信号は所望のトランザクションIDと一緒に、署名済みトランザクションに含まれ得る。上述のプロトコルを用いて、データは、OP_XOR及び相互共有鍵を用いて符号化できる。同様に、XOR演算は、データを復号するために使用でき、データはLZM辞書を用いて伸張され、ブロックチェーンプログラムランチャー405に渡されることができる。
図9は、特定のトランザクションからの情報を要求しているBobと、暗号化データを提供することに合意しているAliceとの間の接続を確立するための、要求トランザクション及び応答トランザクションの例示的な構造を示す。支払いに続き、Aliceは、セッション鍵を使用して、Bobに暗号化されたデータを送信できる。
第2の例示的なプロトコルは、図10及び11を参照して以下に説明される。これは、例えばハイパーテキスト要求及び応答システムとして使用されてよく、それにより、誰か(Alice)がデータを1回投稿でき、(Bobを含む)1人以上の他の人々にアクセスを売ることができる。
ユーザのデータ要求がブロックチェーンネットワーク106にブロードキャストされることに伴い、要求を処理し、データを読み出し、次に望ましくはデータをクライアントにアドレスされたトランザクション内で圧縮するためのシステムが必要になる。以下は、データ分配のための集中型及び分散型のソリューションの両方を開示する。これらの処理の非集中化を通じて、任意のピアが要求を満たすことができるので、そのようなシステムは、もはや、ネットワークにデータを提供するために(個人又は会社のような)単一のエンティティに依存しない。これは、DoS(denial-of-service)攻撃、又はシステム更新若しくは技術的問題に起因するダウンタイムを除去する。更に、ユーザを介した応答に幾らかの料金を含めることにより、このシステムは、応答時間を改善できる。このコストは、攻撃者が要求毎の料金を提供する必要があるので、DoS攻撃の可能性を低減する。
データ提供者103aとして、第1段階は、ブロックチェーンに暗号化データを格納することを含み、これは、データ提供者Alice(A)の観点で以下のように進行する。図10を参照する。
ステップU1で、Aliceは、データにアクセスするためのパスワードとして使用されるランダム文字列Tを選択する。
ステップU4で、Aliceは、OP_RETURNアウトプットとして格納された以下のもの:暗号化データ603、データの説明、データの提示価格、及び暗号化データ及びパスワードTのハッシュの観点で計算されるハッシュに基づくメッセージ認証コード(hash-based message authentication code (HMAC))、を有する彼女自身へのトランザクションを構成する。HMAC自体は従来知られている。このトランザクションは、データ記憶トランザクションである(ハイパーリンクが使用される上述の例では宛先トランザクション152Dであるが、このプロトコルは宛先トランザクションにアクセスする手段としてハイパーリンクと共に使用することに限定されない)。
このトランザクションは、ブロックチェーンに含まれると、多くの機能を同時に提供できる。第1に、トランザクション識別子(TxID)を記録することにより将来の任意の時点でデータ所有者によりアクセス可能な暗号化データの永久的に不変の記録である。第2に、これは、関心のある買い手により検索可能なデータの広告として動作可能である。最後に、HMACの包含は、更に詳細に後述するように、Aliceの正直さを検証するため及び紛争解決を支援するために、買い手により使用可能である。
データ提供者Aliceとデータ購入者Bobとの間のデータ交換手順の例は、以下の通りである。図11を参照する。
ステップV1で、Bobは、テンプレートトランザクションの形式で、サイドチャネル301を介して、(データ記憶トランザクション内にリストされた)Aliceの公開アドレス又はプレフィックスと共に、OP_RETURN内の価格と一緒に、Aliceにオファートランザクションを送信する。
ステップV2で、Aliceは、2つのインプット:Bobにより送信されたUTXO、及び彼女自身のUTXO、を有するトランザクションを構成するために、受信したテンプレートトランザクションを適応する(maleate)。Bobは、このシナリオでは支払う人であるが、AliceのUTXOをポイントするインプットは、彼女にトランザクションを警告する。彼女のウォレットは、彼女にアドレスされている場合に、トランザクションを検出する。従って、この段階のためにサイドチャネルは必要ない。Aliceのポイント先のUTXOは、ダスト量のためであり得る。
ステップV3で、Aliceは適応済みトランザクションをサイドチャネル301を介してBobに返送する。
ステップV4で、Bobは、トランザクションが適正に構成されたことを検証し、彼が適合している場合に彼のインプットに署名する。
ステップV5で、Bobは、次に、部分署名済みトランザクションをサイドチャネル301を介してAliceに返送する。
ステップV6で、AliceはS1=VA・PBを計算する。ここで、VAはAliceの秘密鍵であり、PBはBobの公開鍵である。
ステップV7で、Aliceは、インプットスクリプトの部分として、次式により彼女のインプットに署名し、それは公衆に公開される:
このトランザクションは、それ自体はデータを含まない。従って、このトランザクションは図6の例の152Cであり、データは別のトランザクション152Dに含まれる。
ステップV8で、Aliceは、ブロックチェーン150に記録されるよう、今や完全に署名されたトランザクションをブロックチェーンネットワーク106にブロードキャストする。
ステップV9で、BobはS1=VB・PAを計算する。ここで、VBはBobの秘密鍵であり、PAはAliceの公開鍵である。
ステップV10で、Bobは、S1を用いて以下を計算する:
ステップV11で、Bobは、次に、以下を用いてデータを復号する:
ステップV12で、Bobは、データ及びTを用いて、HMACを計算する。Bobは、HMACがデータ記憶トランザクション152D内のHMACに一致することをチェックする。
上述の方法は、有利なことに、支払い及びデータ転送を統合し、Aliceが支払いを得てBobがデータを受信することを保証する方法で、ブロックチェーン150を介するデータの送信を可能にする。
Aliceが誠実な場合、HMACは、データ記憶トランザクションの中にあるものと一致し、データは、データ記憶トランザクションの記述部分に記述された通りである。Aliceが不正な鍵を送信した場合、Bobは、彼が送信した鍵及びデータ記憶トランザクション内の暗号化データのハッシュを用いて、これを証明できる。Aliceが不正なデータを送信した場合、Bobは、データを暗号化するための鍵を用いて、それをデータ記憶トランザクション内のものと比較することにより、これを検出できる。更に、政府又は企業のような信頼できる第三者組織は、データ及び暗号化データの記録を保持でき、暗号化データが提供された記述と一致することを検証するために使用できる。
上述の方法は、以下のようにより一般的に要約され得る。データは、S0(本例では、共有シークレットの部分ではない)により暗号化される。Aliceは、トランザクションに鍵S0の暗号化バージョンではなく、(共有シークレットS1に基づき暗号化された)パスワードTの暗号化バージョンを含める。データを復号するために必要な鍵S0は、パスワードの所定の関数である(この場合、ハッシュに基づく関数であり、Aliceの公開鍵PAの関数でもある)。Bobは、パスワードを復号し、次に知られている関数を使用して、S0を計算し、これを使用してデータを復号する。HMACは、データ格納トランザクションに含まれ、データ及びパスワードの関数である。今や、Bobは、パスワードT及びAliceからのデータを有し、彼は、HMACを計算し、データ格納トランザクション内のバージョンと比較できる。
Bobに暗号化パスワードを送信し、S0をパスワードの関数にする利点は、(図7~9の前述の方法におけるように単に彼に鍵の暗号化バージョンを直接送信することと対照的に)S0が送信されることを防ぐことである。従って、送信が危険に晒されても、それはデータを直接危険に晒さない。攻撃者は、例えばAlice及びBobがセキュアなサイドチャネルを介して共有し得るS0を計算する方法を知る必要があるかも知れない。関数は、必ずしも、Aliceの公開鍵の関数である必要もないが、単に何らかの両方のパーティが知っている決定性の情報ピースである。該情報は、Aliceの公開鍵のような追加パラメータ、又は単に変換の形式(つまり関数)自体を含み得る。
上述の方法の変形では、データは、オフチェーンに格納され、次にBobにより要求されたときにオンチェーンに置かれ得る。つまり、Aliceは、予めにではなく、データに対するBobからの要求に応答して、図10の方法を実行する。
検討すべき更なるケースは、現代のクラウドに基づくシステムと類似する集中型データレポジトリサービスである。この場合、単一の組織が、ブロックチェーンに又は可能な場合には外部プライベートサーバに格納されたデータを格納し、記録し、及び読み出すことを担う。彼らのデータをブロックチェーンに格納したいと望むクライアントは、彼らのデータを暗号化し分配し及び読み出しの記録を保持できるプロバイダに、登録又は使用毎の料金を支払うだろう。これは、個人ユーザが彼らの暗号鍵又は秘密鍵の記録を保持する必要を除去する。同様に、音楽又はビデオストリーミングサービスのような共有可能な大量のデータを有するサービスでは、登録又は使用毎の領域は、データへのアクセスに対して課金され得る。
それぞれの場合に、クライアントは、トランザクションに含まれる彼らの要求の詳細と共にサービスにより提供される公衆に利用可能なアドレスを介して要求を開始する。クライアントのアイデンティティは検証され、使用料金のような任意の条件が検証され、次に、先に開示されたプロトコルを用いてセッション鍵が生成されてよい。要求を受信すると、サービスプロバイダは、Lempel-Ziv Markovチェーン(LZM)アルゴリズムのような標準化された圧縮アルゴリズムを用いて要求されたデータを符号化し、クライアントへとアドレスされたトランザクション内にこれを含める。データは、クライアントのSPVウォレットにより解読され復号され、次にユーザに表示される。
上述のピアツーピアプロトコルの状況では、レポジトリサービスは、信頼できる第三者として動作して、データ提供者とデータ購入者との間のデータの交換を実現できる。レポジトリサービスは、データの記述を保持でき、データ購入者が特定のデータに対して要求を行うこと、又は関連するデータのバッチを購入することを可能にする。サービスは、トランザクションを構成することもでき、ユーザがトランザクション又はトランザクション条件を検証する又は生成する必要を除去する。レポジトリサービスが信頼できる場合、データレポジトリが提供データの有効性をチェックする責任があるので、HMACの必要性も除去する。
<結論>
ブロックチェーンに格納されたデータを効率的に要求し及び読み出す能力は、より多くの大量のデータがトランザクションに含まれるようになるにつれ、益々重要になっている。本願明細書に開示されるプロトコルは、ハイパーテキスト転送プロトコル(hypertext transfer protocol (HTTP))がインターネットに対して行ったものに非常に似ている、ブロックチェーンネットワークの要求-応答の方法を提供する。望ましくは、方法は標準化されてよい。標準化されたハイパーテキストフォーマットを用いて、ブロックチェーン内のデータは、リンクされ、SPVウォレット等からの助けにより対応ブラウザにおけるクリックを用いて要求されることができる。集中化及び非集中化データ記憶の両方が、サービスプロバイダ及びデータ所有者を補償するために対応でき制定(monetized)できる。以前に展開された暗号化技術を用いて、公衆ネットワークを介して要求及びデータ転送ステップをセキュアにすることが可能である。
ブロックチェーンに格納されたデータを効率的に要求し及び読み出す能力は、より多くの大量のデータがトランザクションに含まれるようになるにつれ、益々重要になっている。本願明細書に開示されるプロトコルは、ハイパーテキスト転送プロトコル(hypertext transfer protocol (HTTP))がインターネットに対して行ったものに非常に似ている、ブロックチェーンネットワークの要求-応答の方法を提供する。望ましくは、方法は標準化されてよい。標準化されたハイパーテキストフォーマットを用いて、ブロックチェーン内のデータは、リンクされ、SPVウォレット等からの助けにより対応ブラウザにおけるクリックを用いて要求されることができる。集中化及び非集中化データ記憶の両方が、サービスプロバイダ及びデータ所有者を補償するために対応でき制定(monetized)できる。以前に展開された暗号化技術を用いて、公衆ネットワークを介して要求及びデータ転送ステップをセキュアにすることが可能である。
上記の実施形態は、単なる例示として説明したものであることが理解されるであろう。
より一般的には、本願明細書に開示される1つの態様によると、消費者パーティのコンピュータ機器により実施される方法であって、
1つ以上のハイパーリンクを含む少なくとも第1文書にアクセスするステップであって、各ハイパーリンクは、アンカーコンテンツのそれぞれのピースとそれぞれのアンカーコンテンツに関連付けられたそれぞれの宛先のそれぞれの識別子とを含む、ステップと、
前記消費者パーティの前記コンピュータ機器のユーザ出力装置を通じて前記第1文書の少なくとも部分のコンテンツをレンダリングするステップであって、前記ハイパーリンクのうちの1つ以上のそれぞれのアンカーコンテンツをレンダリングすることを含む、ステップと、
前記消費者パーティの前記コンピュータ機器のユーザ入力装置を通じて、レンダリングされたコンテンツの中からそれぞれのアンカーコンテンツを選択することにより、前記ハイパーリンクのうちの1つを選択するユーザ入力を受信するステップと、
前記ユーザ入力に応答して、前記第1文書に含まれるそれぞれの識別子に基づき、前記関連付けられた宛先からデータに自動的にアクセスするステップと、
を含み、
少なくとも前記選択されたハイパーリンクのそれぞれの宛先は、ブロックチェーンネットワークの少なくとも幾つかのノードに渡り維持されるブロックチェーンの宛先トランザクションを含み、前記データのアクセスは、前記ブロックチェーンネットワークを介して前記ブロックチェーンの中の前記宛先トランザクションを検査するステップを含む、方法が提供される。
1つ以上のハイパーリンクを含む少なくとも第1文書にアクセスするステップであって、各ハイパーリンクは、アンカーコンテンツのそれぞれのピースとそれぞれのアンカーコンテンツに関連付けられたそれぞれの宛先のそれぞれの識別子とを含む、ステップと、
前記消費者パーティの前記コンピュータ機器のユーザ出力装置を通じて前記第1文書の少なくとも部分のコンテンツをレンダリングするステップであって、前記ハイパーリンクのうちの1つ以上のそれぞれのアンカーコンテンツをレンダリングすることを含む、ステップと、
前記消費者パーティの前記コンピュータ機器のユーザ入力装置を通じて、レンダリングされたコンテンツの中からそれぞれのアンカーコンテンツを選択することにより、前記ハイパーリンクのうちの1つを選択するユーザ入力を受信するステップと、
前記ユーザ入力に応答して、前記第1文書に含まれるそれぞれの識別子に基づき、前記関連付けられた宛先からデータに自動的にアクセスするステップと、
を含み、
少なくとも前記選択されたハイパーリンクのそれぞれの宛先は、ブロックチェーンネットワークの少なくとも幾つかのノードに渡り維持されるブロックチェーンの宛先トランザクションを含み、前記データのアクセスは、前記ブロックチェーンネットワークを介して前記ブロックチェーンの中の前記宛先トランザクションを検査するステップを含む、方法が提供される。
実施形態では、前記第1文書はハイパーテキスト文書を含んでよい。
実施形態では、アンカーコンテンツの各ピースは、テキスト又は画像を含んでよい。
前記出力装置は、例えば、テキスト及び/又は画像を表示するディスプレイスクリーン又はタッチスクリーンのピクセルアレイ、及び/又は可聴コンテンツを出力するスピーカ、を含んでよい。画像の場合には、前記画像は静止画像及び/又は動画像を含んでよい。前記入力装置は、例えば、タッチスクリーンのセンサマトリクス、又はマウス、トラックパッド若しくはトラックボール、又はキーボード、等を含んでよい。
実施形態では、前記第1文書は、マークアップ言語で作成(記述)されてよい。
実施形態では、前記第1文書は、HTML言語がブロックチェーントランザクションへのハイパーリンクを生成するための追加タイプのタグにより補強されたHTML文書であってよい。
実施形態では、前記第1文書は、前記ブロックチェーン上の別のソーストランザクションから、前記ブロックチェーンネットワークを介してアクセスされてよい。
実施形態では、前記第1文書は、前記ソーストランザクションの使用不可能アウトプットに格納されてよい。
実施形態では、前記ブロックチェーンは、アウトプットに基づく(例えば、UTXOに基づく)トランザクションモデルを使用してよく、該モデルでは、各トランザクションが1つ以上のアウトプット(例えば、UTXO)を含み、各アウトプットがロックスクリプトを含み、前記第1文書は前記ソーストランザクションのこれらのアウトプットのうちの使用不可能アウトプットに格納されてよい。実施形態では、前記ソーストランザクションの前記使用不可能アウトプットは、ロックスクリプトに含まれるOP_RETURNのようなコマンドにより使用不可能にされてよく、該コマンドは、前記ブロックチェーンネットワークのノードにより実行されると前記ロックスクリプトを終了する。
代替の実施形態では、本願明細書に開示される技術は、アカウントに基づくモードを通じて実装され得る。例えば、前記データは、前記宛先トランザクションのスマートコントラクトに格納され、それからアクセスされ得る。
実施形態では、前記第1文書は、ウェブサイトから、又は前記消費者パーティの前記コンピュータ機器のローカル記憶装置から、アクセスされてよい。
実施形態では、前記第1文書は、複数の前記ハイパーリンクを含んでよく、これらのうちの少なくとも幾つかのそれぞれの宛先は前記ブロックチェーン上の異なるそれぞれのトランザクションであってよい。
及び/又は、前記複数のハイパーリンクの前記それぞれの宛先は、前記ブロックチェーン上の1つ以上の宛先トランザクションと1つ以上のウェブリソースとの組合せを含んでよい。
実施形態では、前記アンカーコンテンツのレンダリングは、ハイパーリンクとして動作することを示すフォーマットで前記アンカーコンテンツをレンダリングすることを含んでよい。例えば、これは、それに下線を付けること又は特定の色でレンダリングすることを含み得る。
実施形態では、前記アクセスされるデータは、テキスト及び/又は1つ以上の画像の形式のコンテンツを含む第2文書を含んでよく、前記第2文書のアクセスは、消費者ユーザのコンピュータ機器上で前記第2文書の少なくとも一部をレンダリングことを含んでよい。
実施形態では、前記第2文書は、それ自体が1つ以上の更なるハイパーリンクを含んでよい。
実施形態では、前記1つ以上の更なるハイパーリンクは、前記ブロックチェーン上の更に別の宛先トランザクションへの少なくとも1つのハイパーリンクを含む。
実施形態では、前記第2文書はハイパーテキスト文書を含む。前記第2文書は、マークアップ言語で作成されてよい。前記第2文書は、前記ブロックチェーン上のトランザクションへのリンクを作成するための少なくとも1つの追加タイプのタグにより補強されたHTML文書であってよい。
実施形態では、前記データは、前記それぞれの宛先トランザクションの使用不可能アウトプットに格納されてよい。
実施形態では、前記ブロックチェーンは、アウトプットに基づく(例えば、UTXOに基づく)トランザクションモデルを使用してよく、該モデルでは、各トランザクションが1つ以上のアウトプット(例えば、UTXO)を含み、各アウトプットがロックスクリプトを含み、前記第1文書は前記宛先トランザクションのこれらのアウトプットのうちの使用不可能アウトプットに格納されてよい。実施形態では、前記宛先トランザクションの前記使用不可能アウトプットは、ロックスクリプトに含まれるOP_RETURNのようなコマンドにより使用不可能にされてよく、該コマンドは、前記ブロックチェーンネットワークのノードにより実行されると前記ロックスクリプトを終了する。
実施形態では、各ハイパーリンクは、前記それぞれの関連する宛先トランザクションの中の、前記データが格納されているそれぞれの個々のアウトプットのアウトプット識別子を更に含んでよく、前記データのアクセスは、前記それぞれのトランザクション識別子及びアウトプット識別子に基づき、前記それぞれのアウトプットから該データにアクセスすることを含んでよい。代替として、前記データは、前記宛先トランザクションの所定のアウトプット番号に、又はより一般的には所定の位置に、格納され得る。この場合、前記データのアクセスは、単に前記所定のアウトプット又は位置から該データにアクセスすることを含む。別の可能性として、前記データのアクセスは、単に、データ又は所定の期待されるタイプ若しくはフォーマットのアウトプットについて前記それぞれの宛先トランザクションを検索することを含む。
実施形態では、前記データは暗号化データを含んでよい。
実施形態では、前記方法は、前記暗号化データへのアクセスを提供するよう提供者パーティに要求するために、及び/又は、前記暗号化データへのアクセスに対して前記提供者パーティに支払うために、前記消費者パーティの前記コンピュータ機器から、クライアントトランザクションを送信するステップを更に含んでよい。前記クライアントトランザクションは、前記ブロックチェーンネットワークに記録されるよう送信されるか、又はサイドチャネルを介して前記提供者パーティへ送信されてよい。
実施形態では、同じクライアントトランザクションは、両方の機能を実装してよい。
前記支払いは、前記クライアントトランザクションの使用可能アウトプットに含まれてよく、前記使用可能アウトプットは、前記提供者パーティへとアドレスされる。前記ブロックチェーンは、アウトプットに基づく(例えば、UTXOに基づく)トランザクションモデルを使用してよく、該モデルでは、各トランザクションが1つ以上のアウトプット(例えば、UTXO)を含み、使用可能アウトプットは前記クライアントトランザクションのこれらのアウトプットのうちの1つであってよい。
前記送信するステップは、前記消費者パーティが彼/彼女自身で、前記クライアントトランザクションを前記ネットワークへ直接ブロードキャストするステップを含み得る。代替として、前記消費者パーティは、前記提供者パーティ又は第三者が前記ネットワークへと転送するようブロードキャストするために、前記クライアントトランザクションを、サイドチャネルを介して前記提供者パーティ又は前記第三者へ送信し得る。
別の代替として、前記消費者パーティは、サイドチャネルを介して、前記クライアントトランザクションを前記提供者パーティへ送信してよい。前記クライアントトランザクションは、テンプレート形式で送信されてよく、例えば、それに署名するよう又はそれが前記ブロックチェーンに記録され得る前にインプットを追加するよう前記提供者パーティに要求する。
実施形態では、前記クライアントトランザクションは、前記宛先トランザクションの識別子と前記暗号化データへのアクセスを要求する信号とを含む要求メッセージを含んでよい。
実施形態では、前記要求メッセージは、前記クライアントトランザクションの使用不可能アウトプットに含まれてよい。
実施形態では、前記ブロックチェーンは、アウトプットに基づく(例えば、UTXOに基づく)トランザクションモデルを使用してよく、該モデルでは、各トランザクションが1つ以上のアウトプット(例えば、UTXO)を含み、各アウトプットがロックスクリプトを含み、前記要求メッセージは前記クライアントトランザクションのこれらのアウトプットのうちの使用不可能アウトプットに格納されてよい。実施形態では、前記クライアントトランザクションの前記使用不可能アウトプットは、ロックスクリプトに含まれるOP_RETURNのようなコマンドにより使用不可能にされてよく、該コマンドは、前記ブロックチェーンネットワークのノードにより実行されると前記ロックスクリプトを終了する。
実施形態では、前記クライアントトランザクションの送信は、前記ユーザ入力によりトリガされてよい。
実施形態では、前記消費者パーティは、前記クライアントトランザクションを、サイドチャネルを介して前記提供者パーティへ送信してよく、前記提供者パーティは、それを読み取り、前記ブロックチェーンネットワークにブロードキャストする。代替として、前記消費者パーティは、前記クライアントトランザクションを前記ブロックチェーンネットワークにブロードキャストし、前記サイドチャネルを介して、前記提供者パーティに、前記クライアントトランザクションが前記ブロックチェーンネットワークにブロードキャストしたことを個別にシグナリングし得る。代替として、前記消費者パーティは、前記サイドチャネルを介して前記提供者パーティに個別に全くシグナリングしないで、単に、前記ブロックチェーンネットワークに支払いをブロードキャストし、単に、前記提供者パーティが前記ブロックチェーン上の前記クライアントトランザクションを観察できるようにし得る。前記クライアントトランザクションは前記提供者パーティへアドレスされた支払いを含むとき、彼/彼女/彼らは、チェーン上でそれを見付けることができる。
実施形態では、前記クライアントトランザクションに応答して、前記提供者パーティは、前記消費者パーティが前記暗号化データを復号するためのアクセス鍵を決定し及びそれにより前記暗号化データにアクセスできるようにするアクセス情報を提供してよい。この場合、前記方法は、前記消費者パーティの前記コンピュータ機器により、前記アクセス情報を受信し、それから前記アクセス鍵を決定し、前記決定したアクセス鍵を用いて前記暗号化データを復号し及び従ってアクセスするステップ、を含んでよい。
幾つかのそのような実施形態では、前記アクセス鍵は1回限り又は一時的な鍵であってよい。
実施形態では、前記提供者パーティは、前記情報を前記ブロックチェーン上のトランザクションに包含することにより、前記アクセス情報を前記消費者ユーザに提供してよい。
Alice(前記提供者パーティ)は、このトランザクションを前記ブロックチェーンネットワークにブロードキャストし、前記サイドチャネルを介して、Bob(前記提供者パーティ)に、該トランザクションが今やブロードキャストされていることを個別にシグナリングし得る。代替として、前記提供者パーティは、前記サイドチャネルを介して前記提供者パーティに個別に全くシグナリングしないで、単に、前記ブロックチェーンネットワークにそれをブロードキャストし、前記消費者パーティがチェーン上のこのトランザクションを観察できるようにし得る。問題のトランザクションは、前記消費者パーティへとアドレスされたアウトプットを含んでよい。このように、前記トランザクションは、前記消費者パーティへとアドレスされ、従って、彼/彼女/彼らは、この方法でオンチェーンでそれを発見できる。このアウトプットは、前記消費者パーティへのダスト支払いを含んでよい。
実施形態では、前記消費者パーティは、サイドチャネルを介して、前記クライアントトランザクションを前記提供者パーティへテンプレート形式で送信してよい。幾つかのそのような実施形態では、前記提供者パーティは、前記アクセス情報を包含するよう前記テンプレートを適応すること及び前記ブロックチェーンに記録されるよう前記適応済みクライアントトランザクションを前記ネットワークにブロードキャストすることにより、前記アクセス情報を提供する。代替として、前記アクセス情報は、前記クライアントトランザクションとは別個のトランザクションに含まれ得る。
別の代替として、前記提供者パーティは、前記要求された情報をトランザクションに包含する若しくはそれを前記ブロックチェーン上の置くことなく、単に、サイドチャネルを介して前記要求された情報を前記消費者パーティへ送信し得る。
前記アクセス情報は、前記アクセス鍵自体を平文で含み得る。しかしながら、それがオンチェーンで通信される場合には、これは、前記アクセス鍵を公衆の任意の他のメンバに利用可能にする可能性がある。前記サイドチャネルの送信の場合でも、それは、例えば、傍受されること又は意図された消費者により漏洩されることに対して脆弱である可能性がある。
従って、実施形態では、前記アクセス情報は、前記アクセス鍵を平文で含まないが、前記消費者パーティが前記提供者パーティと消費者パーティとの間で共有される共有シークレットに基づき前記アクセス鍵を導出できる情報を含む。
そのような実施形態では、前記アクセス情報は、前記提供者パーティと前記消費者パーティとの間で共有される共有シークレットに基づき暗号化された、前記アクセス鍵の暗号化バージョンを含んでよい。この場合、前記方法は、前記消費者パーティの前記コンピュータ機器により、前記共有シークレットに基づき前記アクセス鍵を復号し、前記復号したアクセス鍵を用いて前記暗号化データにアクセスするステップ、を更に含んでよい。
これの代替の変形では、前記アクセス情報は、前記提供者パーティと前記消費者パーティとの間で共有される共有シークレットに基づき暗号化された暗号化パスワードを含んでよく、前記アクセス鍵は前記パスワードの第1の所定の関数である。この場合、前記方法は、前記消費者パーティの前記コンピュータ機器により、前記共有シークレットに基づき前記パスワードを復号し、前記復号したパスワードに前記第1の所定の関数を適用することにより前記アクセス鍵を決定し、前記決定したアクセス鍵を用いて前記暗号化データにアクセスするステップ、を更に含んでよい。幾つかのそのような実施形態では、前記関数は、前記提供者パーティの公開鍵の関数でもあってよい。例えば、実施形態では、前記第1の関数は、次式を含み:
ここで、Tはパスワードであり、PAは公開鍵であり、各Hはハッシュ関数である。
実施形態では、前記データは、前記パスワードの第2の所定の関数であるメッセージ認証コードと一緒に前記宛先トランザクションに含まれてよく、前記第2の所定の関数は前記データの関数でもある。この場合、前記方法は、前記消費者パーティの前記コンピュータ機器により、前記復号されたパスワード及び前記データに前記第2の所定の関数を適用することにより前記メッセージ認証コードを計算するステップと、前記データの真正さを決定するために前記計算したメッセージ認証コードを前記宛先トランザクションに含まれるメッセージ認証コードと比較するステップと、を含んでよい。
例えば、実施形態では、前記認証コードは、ハッシュに基づくメッセージ認証コードであってよく、前記第2の所定の関数は、前記データ及び前記パスワードのハッシュに基づく関数である。前記ハッシュに基づく関数は、少なくとも1つのハッシュを含む。
実施形態では、前記アクセスされるデータはプログラムを含んでよく、前記方法は、前記プログラムを前記消費者パーティの前記コンピュータ機器上で実行するステップを更に含む。代替又は追加として、前記方法は、前記消費者パーティの前記コンピュータ機器により、前記ブロックチェーン上の更に別のトランザクションからプログラムを読み取り前記プログラムを実行する初期ステップを含んでよく、前記プログラムは、前記根天狗をレンダリングし、前記ユーザ入力を受信し、前記宛先から前記データにアクセスするステップを実行する。
前記プログラムは、プログラム格納トランザクションの使用不可能アウトプット、例えばUTXOに含まれてよい。このアウトプットは、そのロックスクリプトに含まれるOP_RETURNのような、ロックスクリプトを終了するオペコードにより使用不可能にされてよい。
実施形態では、前記方法は、前記ソース及び/又は宛先トランザクションを使用する支払いトランザクションにより、それぞれ前記第1及び/又は第2文書を更新するステップ、を含んでよい。
実施形態では、前記方法は、前記ユーザ入力に応答して、前記宛先トランザクションを使用する任意の更新トランザクションをチェックするために、前記ブロックチェーンのトランザクションセットを自動的にクエリするステップを含んでよい。この場合、前記宛先トランザクションからの前記データのアクセスは、前記チェックが否定的であることを条件として実行されてよく、前記方法は、その他の場合に前記更新トランザクションから前記データにアクセスするよう構成される関数により実行される。
別の態様によると、ブロックチェーンに記録するためのトランザクションのセットであって、前記セットは、1つ以上のコンピュータ可読データ媒体上に具現化され、
1つ以上のハイパーリンクを含む第1文書を格納する第1トランザクションであって、各ハイパーリンクは、アンカーコンテンツのそれぞれのピースと、前記それぞれのアンカーコンテンツに関連付けられた宛先にリンクするそれぞれの識別子と、を含む、第1トランザクションと、
それぞれがデータコンテンツを格納する1つ以上の第2トランザクションであって、前記第1トランザクション内の前記ハイパーリンクのうちの少なくとも1つによりリンクされる前記宛先は、前記第2トランザクションのうちの1つを含む、第2トランザクションと、
を含むセットが提供される。
1つ以上のハイパーリンクを含む第1文書を格納する第1トランザクションであって、各ハイパーリンクは、アンカーコンテンツのそれぞれのピースと、前記それぞれのアンカーコンテンツに関連付けられた宛先にリンクするそれぞれの識別子と、を含む、第1トランザクションと、
それぞれがデータコンテンツを格納する1つ以上の第2トランザクションであって、前記第1トランザクション内の前記ハイパーリンクのうちの少なくとも1つによりリンクされる前記宛先は、前記第2トランザクションのうちの1つを含む、第2トランザクションと、
を含むセットが提供される。
前記第2トランザクションの各々の中のデータコンテンツは、テキスト及び/又は画像データを含んでよい。前記少なくとも1つのハイパーリンクによりリンクされるデータは、前記第1トランザクションのうちの前記1つに格納された第2文書を含んでよい。幾つかのそのような実施形態では、前記第2文書は、それ自体が、例えば前記ブロックチェーン上の1つ以上の更なるトランザクションを含む1つ以上の更なる宛先への1つ以上のハイパーリンクを含んでよい。
本願明細書に開示された別の態様によると、消費者パーティが提供者パーティからのデータにアクセスする方法であって、前記データは、復号するためにアクセス鍵を必要とする暗号化形式でブロックチェーン上の第1トランザクションに格納される、方法が提供される。前記方法は、前記消費者パーティのコンピュータ機器により、前記提供者パーティに、前記ブロックチェーンに記録するために第2トランザクションを通信するステップであって、前記第2トランザクションは、前記データに対する支払いを指定し、前記第1トランザクションの識別子と前記データに対する要求を示す信号とを更に含み、それに応答して、前記第2パーティが、前記ブロックチェーンに記録されるよう、暗号化パスワードを含む第3トランザクションをブロードキャストする、ステップを含む。前記方法は、
前記第3トランザクションから前記暗号化パスワードを読み取るために、前記ブロックチェーンを検査するステップであって、前記パスワードは、前記消費者パーティと前記提供者パーティとの間の共有シークレットに基づき暗号化され、前記アクセス鍵は前記パスワードの第1の所定の関数である、ステップと、
前記共有シークレットに基づき前記受信したパスワードを復号し、前記復号したパスワードに前記所定の関数を適用することにより、前記アクセス鍵を決定し、前記決定したアクセス鍵に基づき前記データを復号するステップと、
を更に含む。前記データは、前記パスワードの第2の所定の関数であるメッセージ認証コードと一緒に前記第2トランザクションに含まれ、前記第2の所定の関数は前記データの関数でもある。前記方法は、
前記復号したデータ及び前記決定したパスワードに基づき、前記メッセージ認証コードを計算し、前記データを認証するために、前記計算したメッセージ認証コードを前記第1トランザクションに含まれるメッセージ認証コードと比較するステップ、を更に含む。
前記第3トランザクションから前記暗号化パスワードを読み取るために、前記ブロックチェーンを検査するステップであって、前記パスワードは、前記消費者パーティと前記提供者パーティとの間の共有シークレットに基づき暗号化され、前記アクセス鍵は前記パスワードの第1の所定の関数である、ステップと、
前記共有シークレットに基づき前記受信したパスワードを復号し、前記復号したパスワードに前記所定の関数を適用することにより、前記アクセス鍵を決定し、前記決定したアクセス鍵に基づき前記データを復号するステップと、
を更に含む。前記データは、前記パスワードの第2の所定の関数であるメッセージ認証コードと一緒に前記第2トランザクションに含まれ、前記第2の所定の関数は前記データの関数でもある。前記方法は、
前記復号したデータ及び前記決定したパスワードに基づき、前記メッセージ認証コードを計算し、前記データを認証するために、前記計算したメッセージ認証コードを前記第1トランザクションに含まれるメッセージ認証コードと比較するステップ、を更に含む。
実施形態では、前記第2トランザクションの通信は、サイドチャネルを介して、前記第2パーティに前記第2トランザクションを通信するステップを含んでよい。
実施形態では、前記第2トランザクションの通信は、前記ブロックチェーン上に記録されるよう、前記第2トランザクションを前記提供者パーティが完了し及びブロードキャストするために、テンプレート形式で通信するステップを含んでよい。
実施形態では、前記第2トランザクションの完成バージョンは、前記第3トランザクションであってよく、前記完成は前記暗号化パスワードを追加するステップを含む。
実施形態では、前記第1の所定の関数は、前記提供者パーティの公開鍵の関数でもあってよい。例えば、実施形態では、前記第1の所定の関数は、次式を含んでよく:
ここで、Tはパスワードであり、PAは公開鍵であり、各Hはハッシュ関数である。
実施形態では、前記メッセージ認証コードは、ハッシュに基づくメッセージ認証コードであってよく、前記第2の所定の関数はハッシュに基づく関数である。前記ハッシュに基づく関数は、1つ以上のハッシュを含んでよい。
本願明細書に開示される別の態様によると、ブロックチェーンに記録するためのトランザクションのセットであって、前記セットは、1つ以上のコンピュータ可読データ媒体上に具現化され、
復号するためにアクセス鍵を必要とする暗号化形式でデータを含むデータ記憶トランザクションであって、前記データ記憶トランザクションは、パスワードの及び前記データの所定の関数であるメッセージ認証コードを含む、データ記憶トランザクションと、
1つ以上の更なるトランザクションであって、そのうちの少なくとも1つは、前記データに対する支払いを指定し、前記第1トランザクションの識別子と、前記データに対する要求を示す信号とを含む、1つ以上の更なるトランザクションと、
を含み、
前記1つ以上の更なるトランザクションのうちの少なくとも1つは、消費者パーティと提供者パーティとの間で共有される共有シークレットに基づき暗号化されたパスワードを含み、前記アクセス鍵は前記パスワードの所定の関数である、セットが提供される。
復号するためにアクセス鍵を必要とする暗号化形式でデータを含むデータ記憶トランザクションであって、前記データ記憶トランザクションは、パスワードの及び前記データの所定の関数であるメッセージ認証コードを含む、データ記憶トランザクションと、
1つ以上の更なるトランザクションであって、そのうちの少なくとも1つは、前記データに対する支払いを指定し、前記第1トランザクションの識別子と、前記データに対する要求を示す信号とを含む、1つ以上の更なるトランザクションと、
を含み、
前記1つ以上の更なるトランザクションのうちの少なくとも1つは、消費者パーティと提供者パーティとの間で共有される共有シークレットに基づき暗号化されたパスワードを含み、前記アクセス鍵は前記パスワードの所定の関数である、セットが提供される。
実施形態では、トランザクションの前記セットは、上述の実施形態のいずれかに従い更に構成されてよい。
本願明細書に開示される別の態様によると、コンピュータ可読記憶装置上に具現化され、消費者パーティのコンピュータ機器上で実行すると本願明細書に開示されたいずれかの実施形態による方法を実行するよう構成される、コンピュータプログラムが提供される。
別の態様によるとパーティの機器であって、
1つ以上のメモリユニットを含むメモリと、
1つ以上の処理ユニットを含む処理機器と、
を含み、
前記メモリは、前記処理機器上で実行するよう構成されるコードを格納し、前記コードは実行されると本願明細書に開示されたに任意の実施形態に従う方法を実行するよう構成される、機器が提供される。
1つ以上のメモリユニットを含むメモリと、
1つ以上の処理ユニットを含む処理機器と、
を含み、
前記メモリは、前記処理機器上で実行するよう構成されるコードを格納し、前記コードは実行されると本願明細書に開示されたに任意の実施形態に従う方法を実行するよう構成される、機器が提供される。
本明細書に開示される別の態様によれば、方法であって、消費者パーティ、提供者パーティ、関連し得る任意の第三者、及び/又はノードのネットワークの動作を含む方法が提供されてよい。
本明細書に開示される別の態様によれば、消費者パーティのコンピュータ機器、提供者パーティのコンピュータ機器、任意の第三者のコンピュータ機器、及び/又はノードのネットワークを備えるシステムが提供されてよい。
開示された技術の他の変形例又は使用事例は、本明細書で開示されると、当業者に明らかになり得る。本開示の範囲は、記載された実施形態によって限定されるものではなく、添付の特許請求の範囲によってのみ限定される。
Claims (42)
- 消費者パーティのコンピュータ機器により実施される方法であって、
1つ以上のハイパーリンクを含む少なくとも第1文書にアクセスするステップであって、各ハイパーリンクは、アンカーコンテンツのそれぞれのピースとそれぞれのアンカーコンテンツに関連付けられたそれぞれの宛先のそれぞれの識別子とを含む、ステップと、
前記消費者パーティの前記コンピュータ機器のユーザ出力装置を通じて前記第1文書の少なくとも部分のコンテンツをレンダリングするステップであって、前記ハイパーリンクのうちの1つ以上のそれぞれのアンカーコンテンツをレンダリングすることを含む、ステップと、
前記消費者パーティの前記コンピュータ機器のユーザ入力装置を通じて、レンダリングされたコンテンツの中からそれぞれのアンカーコンテンツを選択することにより、前記ハイパーリンクのうちの1つを選択するユーザ入力を受信するステップと、
前記ユーザ入力に応答して、前記第1文書に含まれるそれぞれの識別子に基づき、前記関連付けられた宛先からデータに自動的にアクセスするステップと、
を含み、
少なくとも前記選択されたハイパーリンクのそれぞれの宛先は、ブロックチェーンネットワークの少なくとも幾つかのノードに渡り維持されるブロックチェーンの宛先トランザクションを含み、前記データのアクセスは、前記ブロックチェーンネットワークを介して前記ブロックチェーンの中の前記宛先トランザクションを検査するステップを含む、方法。 - 前記第1文書は、ハイパーテキスト文書を含む、請求項1に記載の方法。
- アンカーコンテンツの各ピースは、テキスト又は画像を含む、請求項1又は2に記載の方法。
- 前記第1文書は、マークアップ言語で作成される、請求項1、2、又は3に記載の方法。
- 前記第1文書は、HTML言語がブロックチェーントランザクションへのハイパーリンクを生成するための追加タイプのタグにより補強されたHTML文書である、請求項4に記載の方法。
- 前記第1文書は、前記ブロックチェーン上のアンカーソーストランザクションから前記ブロックチェーンネットワークを介してアクセスされる、請求項1~5のいずれかに記載の方法。
- 前記第1文書は、前記ソーストランザクションの不可能アウトプットに格納される、請求項6に記載の方法。
- 前記第1文書は、ウェブサイトから又は前記消費者パーティの前記コンピュータ機器のローカル記憶からアクセスされる、請求項1~5のいずれかに記載の方法。
- 前記第1文書は、複数の前記ハイパーリンクを含み、少なくとも幾つかのそれぞれの宛先は前記ブロックチェーン上の異なるそれぞれのトランザクションである、請求項1~8のいずれかに記載の方法。
- 前記アンカーコンテンツのレンダリングは、ハイパーリンクとして動作することを示すフォーマットで前記アンカーコンテンツをレンダリングすることを含む、請求項1~9のいずれかに記載の方法。
- 前記アクセスされるデータは、テキスト及び/又は1つ以上の画像の形式のコンテンツを含む第2文書を含み、前記第2文書のアクセスは、消費者ユーザのコンピュータ機器上で前記第2文書の少なくとも一部をレンダリングすることを含む、請求項1~10のいずれかに記載の方法。
- 前記第2文書は、1つ以上の更なるハイパーリンクを含む、請求項11に記載の方法。
- 前記1つ以上の更なるハイパーリンクは、前記ブロックチェーン上の別の宛先トランザクションへの少なくとも1つのハイパーリンクを含む、請求項12に記載の方法。
- 前記データは、それぞれの宛先トランザクションの使用不可能アウトプットに格納される、請求項1~13のいずれかに記載の方法。
- 前記データは暗号化データを含む、請求項1~14のいずれかに記載の方法。
- 前記暗号化データへのアクセスを提供するよう、提供者パーティに要求するために、及び/又は、
前記暗号化データへのアクセスのために前記提供者パーティに支払うために、
前記消費者パーティの前記コンピュータ機器から、クライアントトランザクションを送信するステップ、を更に含み、
前記クライアントトランザクションは、前記ブロックチェーンネットワークに記録されるために送信されるか、又はサイドチャネルを介して前記提供者パーティへ送信される、請求項15に記載の方法。 - 前記クライアントトランザクションは、前記宛先トランザクションの識別子と前記暗号化データへのアクセスを要求する信号とを含む要求メッセージを含む、請求項16に記載の方法。
- 前記要求メッセージは、前記クライアントトランザクションの使用不可能アウトプットに含まれる、請求項17に記載の方法。
- 前記クライアントトランザクションの送信は、前記ユーザ入力によりトリガされる、請求項16、17、又は18に記載の方法。
- 前記クライアントトランザクションに応答して、前記提供者パーティは、前記消費者パーティが前記暗号化データを復号するためのアクセス鍵を決定し及びそれにより前記暗号化データにアクセスできるようにするアクセス情報を提供し、
前記方法は、前記消費者パーティの前記コンピュータ機器により、前記アクセス情報を受信し、それから前記アクセス鍵を決定し、及び決定したアクセス鍵を使用して復号して前記暗号化データにアクセスするステップを含む、請求項16~19のいずれかに記載の方法。 - 前記アクセス鍵は1回限りの又は一時的な鍵である、請求項20に記載の方法。
- 前記提供者パーティは、前記情報を前記ブロックチェーン上のトランザクションに包含することにより、前記アクセス情報を前記消費者ユーザに提供する、請求項20又は21に記載の方法。
- 前記アクセス情報は、前記アクセス鍵を平文で含まないが、前記消費者パーティが前記提供者パーティと消費者パーティとの間で共有される共有シークレットに基づき前記アクセス鍵を導出できる情報を含む、請求項20、21、又は22に記載の方法。
- 前記アクセス情報は、前記提供者パーティと前記消費者パーティとの間で共有される共有シークレットに基づき暗号化された前記アクセス鍵の暗号化バージョンを含み、
前記方法は、前記消費者パーティの前記コンピュータ機器により、前記共有シークレットに基づき前記アクセス鍵を復号し、前記復号したアクセス鍵を使用して前記暗号化データにアクセスするステップを更に含む、請求項23に記載の方法。 - 前記アクセス情報は、前記提供者パーティと前記消費者パーティとの間で共有される共有シークレットに基づき暗号化された暗号化パスワードを含み、前記アクセス鍵は、前記パスワードの第1の所定の関数であり、
前記方法は、前記消費者パーティの前記コンピュータ機器により、
前記共有シークレットに基づき前記パスワードを復号し、前記第1の所定の関数を前記復号したパスワードに適用することにより前記アクセス鍵を決定し、決定した前記アクセス鍵を使用して前記暗号化データにアクセスするステップを更に含む、請求項23に記載の方法。 - 前記関数は、前記提供者パーティの公開鍵の関数でもある、請求項25に記載の方法。
- 前記データは、前記パスワードの第2の所定の関数であるメッセージ認証コードと一緒に、前記宛先トランザクションに含まれ、前記第2の所定の関数は、前記データの関数でもあり、
前記方法は、前記消費者パーティの前記コンピュータ機器により、前記復号したパスワード及び前記データに前記第2の所定の関数を適用することにより、前記メッセージ認証コードを計算し、前記データが真正であることを決定するために、前記計算したメッセージ認証コードを前記宛先トランザクションに含まれる前記メッセージ認証コードと比較するステップを含む、請求項25又は26に記載の方法。 - 前記アクセスされたデータはプログラムを含み、前記方法は、前記プログラムを前記消費者パーティの前記コンピュータ機器上で実行するステップを更に含むか、又は、
前記方法は、前記消費者パーティの前記コンピュータ機器により、前記ブロックチェーン上の更に別のトランザクションからプログラムを読み出し前記プログラムを実行する初期ステップであって、前記プログラムは前記コンテンツをレンダリングするステップと前記ユーザ入力を受信するステップと、前記宛先から前記データにアクセスするステップとを実行する、初期ステップを含む、
請求項6又は請求項6に従属するいずれかの請求項に記載の方法。 - 前記ソース及び/又は宛先トランザクションを使用する支払いトランザクションにより、それぞれ前記第1及び/又は第2文書を更新するステップ、を含む請求項1~28のいずれかに記載の方法。
- 前記ユーザ入力に応答して、前記宛先トランザクションを使用する更新トランザクションについてチェックするために、前記ブロックチェーンのトランザクションセットを自動的にクエリするステップ、を含み、
前記宛先トランザクションからの前記データのアクセスは、前記チェックが否定的であることを条件として実行され、
前記方法は、その他の場合に前記更新トランザクションからの前記データにアクセスするよう構成される関数により実行される、請求項1~29のいずれ記載の方法。 - コンピュータ可読記憶装置上に具現化され、消費者パーティのコンピュータ機器上で実行すると請求項1~30のいずれかに記載の方法を実行するよう構成される、コンピュータプログラム。
- 消費者パーティの機器であって、
1つ以上のメモリユニットを含むメモリと、
1つ以上の処理ユニットを含む処理機器と、
を含み、
前記メモリは、前記処理機器上で実行するよう構成されるコードを格納し、前記コードは実行すると請求項1~30のいずれかに記載の方法を実行するよう構成される、機器。 - ブロックチェーンに記録するためのトランザクションのセットであって、前記セットは、1つ以上のコンピュータ可読データ媒体上に具現化され、
1つ以上のハイパーリンクを含む第1文書を格納する第1トランザクションであって、各ハイパーリンクは、アンカーコンテンツのそれぞれのピースと、前記それぞれのアンカーコンテンツに関連付けられた宛先にリンクするそれぞれの識別子と、を含む、第1トランザクションと、
それぞれがデータコンテンツを格納する1つ以上の第2トランザクションであって、前記第1トランザクション内の前記ハイパーリンクのうちの少なくとも1つによりリンクされる前記宛先は、前記第2トランザクションのうちの1つを含む、第2トランザクションと、
を含むセット。 - 消費者パーティが提供者パーティからのデータにアクセスする方法であって、前記データは、復号するためにアクセス鍵を必要とする暗号化形式で、ブロックチェーン上の第1トランザクションに格納され、前記方法は、前記消費者パーティのコンピュータ機器により、
前記提供者パーティに、前記ブロックチェーンに記録するための第2トランザクションを通信するステップであって、前記第2トランザクションは、前記データに対する支払いを指定し、更に前記第1トランザクションの識別子と前記データに対する要求を示す信号とを含む、ステップと、第2パーティが、前記ブロックチェーンに記録させるために暗号化パスワードを含む第3トランザクションをブロードキャストすることに応答して、
前記第3トランザクションから前記暗号化パスワードを読み出すために、前記ブロックチェーンを検査するステップであって、前記パスワードは、前記消費者パーティと前記提供者パーティとの間の共有シークレットに基づき暗号化され、前記アクセス鍵は前記パスワードの第1の所定の関数である、ステップと、
前記共有シークレットに基づき、前記受信したパスワードを復号し、前記復号したパスワードに前記所定の関数を適用することにより前記アクセス鍵を決定し、前記決定したアクセス鍵に基づき前記データを復号するステップであって、前記データは、前記パスワードの第2の所定の関数であるメッセージ認証コードと一緒に前記第1トランザクションに含まれ、前記第2の所定の関数は前記データの関数でもある、ステップと、
を含み、
前記方法は、前記復号したデータ及び前記決定したパスワードに基づき、前記メッセージ認証コードを計算し、前記データを認証するために、前記計算したメッセージ認証コードを前記第1トランザクションに含まれる前記メッセージ認証コードと比較するステップを更に含む、方法。 - 前記第2トランザクションの通信は、サイドチャネルを介して、前記第2パーティに前記第2トランザクションを通信するステップを含む、請求項34に記載の方法。
- 前記第2トランザクションの通信は、前記ブロックチェーン上に記録されるよう、前記第2トランザクションを前記提供者パーティが完了し及びブロードキャストするために、テンプレート形式で通信するステップを含む、請求項35に記載の方法。
- 前記第2トランザクションの完成バージョンは、前記第3トランザクションであり、前記完了は前記暗号化パスワードを追加するステップを含む、請求項36に記載の方法。
- 前記第1の所定の関数は、前記提供者パーティの公開鍵の関数でもある、請求項34~37のいずれかに記載の方法。
- 前記メッセージ認証コードは、ハッシュに基づくメッセージ認証コードであり、前記第2の所定の関数はハッシュに基づく関数である、請求項34~38のいずれかに記載の方法。
- コンピュータ可読記憶装置上に具現化され、消費者パーティのコンピュータ機器上で実行されると請求項34~39のいずれかに記載の方法を実行するよう構成される、コンピュータプログラム。
- 消費者パーティの機器であって、
1つ以上のメモリユニットを含むメモリと、
1つ以上の処理ユニットを含む処理機器と、
を含み、
前記メモリは、前記処理機器上で実行するよう構成されるコードを格納し、前記コードは実行すると請求項34~39のいずれかに記載の方法を実行するよう構成される、機器。 - ブロックチェーンに記録するためのトランザクションのセットであって、前記セットは、1つ以上のコンピュータ可読データ媒体上に具現化され、
復号するためにアクセス鍵を必要とする暗号化形式でデータを含むデータ記憶トランザクションであって、前記データ記憶トランザクションは、パスワードの及び前記データの所定の関数であるメッセージ認証コードを含む、データ記憶トランザクションと、
1つ以上の更なるトランザクションであって、そのうちの少なくとも1つは、前記データに対する支払いを指定し、前記第1トランザクションの識別子と、前記データに対する要求を示す信号とを含む、1つ以上の更なるトランザクションと、
を含み、
前記1つ以上の更なるトランザクションのうちの少なくとも1つは、消費者パーティと提供者パーティとの間で共有される共有シークレットに基づき暗号化されたパスワードを含み、前記アクセス鍵は前記パスワードの所定の関数である、セット。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB201913144A GB201913144D0 (en) | 2019-09-12 | 2019-09-12 | Sharing data via transactions of a blockchain |
GB1913144.0 | 2019-09-12 | ||
PCT/IB2020/057799 WO2021048663A1 (en) | 2019-09-12 | 2020-08-19 | Sharing data via transactions of a blockchain |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022548583A true JP2022548583A (ja) | 2022-11-21 |
Family
ID=68315439
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022516101A Pending JP2022548583A (ja) | 2019-09-12 | 2020-08-19 | ブロックチェーンのトランザクションを介するデータの共有 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11893074B2 (ja) |
EP (1) | EP4018348A1 (ja) |
JP (1) | JP2022548583A (ja) |
CN (1) | CN114402573A (ja) |
GB (1) | GB201913144D0 (ja) |
WO (1) | WO2021048663A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11544252B2 (en) * | 2019-12-17 | 2023-01-03 | Akamai Technologies, Inc. | High performance distributed system of record with extended transaction processing capability |
US11720453B2 (en) * | 2020-04-28 | 2023-08-08 | Akamai Technologies, Inc. | High performance distributed system of record with unspent transaction output (UTXO) database snapshot integrity |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7904450B2 (en) * | 2008-04-25 | 2011-03-08 | Wilson Kelce S | Public electronic document dating list |
US9268750B2 (en) * | 2012-04-04 | 2016-02-23 | Offerpop Corporation | Shared link tracking in online social networking systems |
US10841082B2 (en) * | 2015-11-24 | 2020-11-17 | Adi BEN-ARI | System and method for blockchain smart contract data privacy |
AU2017223133B2 (en) | 2016-02-23 | 2022-09-08 | nChain Holdings Limited | Determining a common secret for the secure exchange of information and hierarchical, deterministic cryptographic keys |
US10691763B2 (en) | 2016-11-11 | 2020-06-23 | International Business Machines Corporation | Trustable web searching verification in a blockchain |
US11362834B2 (en) | 2017-07-24 | 2022-06-14 | Comcast Cable Communications, Llc | Systems and methods for managing digital rights |
CN111543070A (zh) * | 2018-02-09 | 2020-08-14 | 英特尔公司 | 受信任iot设备配置和装载 |
CN108777698A (zh) | 2018-04-13 | 2018-11-09 | 深圳市元征科技股份有限公司 | 网页存储方法、系统及区块链节点设备 |
WO2019204314A1 (en) * | 2018-04-17 | 2019-10-24 | Filmio, Inc. | Project creation system integrating proof of originality |
CN109145188A (zh) * | 2018-08-03 | 2019-01-04 | 上海点融信息科技有限责任公司 | 用于搜索区块链数据的方法、设备及计算机可读存储介质 |
CN109033403B (zh) * | 2018-08-03 | 2020-05-12 | 上海点融信息科技有限责任公司 | 用于搜索区块链数据的方法、装置及存储介质 |
US11528258B2 (en) | 2018-11-02 | 2022-12-13 | Intel Corporation | System and apparatus for data confidentiality in distributed ledger |
US10949388B2 (en) * | 2018-11-16 | 2021-03-16 | Advanced Messaging Technologies, Inc. | Systems and methods for distributed data storage and delivery using blockchain |
KR20210096176A (ko) | 2018-11-27 | 2021-08-04 | 엔체인 홀딩스 리미티드 | 피어-투-피어 네트워크를 통한 데이터 저장, 리트리브 및 통신을 위한 컴퓨터 구현 시스템 및 방법 |
GB201905348D0 (en) | 2019-04-16 | 2019-05-29 | Nchain Holdings Ltd | Computer implemented method and system for encrypting data |
US20200372014A1 (en) * | 2019-05-24 | 2020-11-26 | Qatar University | Full-stack system and method for blockchain analytics |
US11416921B2 (en) * | 2019-08-02 | 2022-08-16 | Kyndryl, Inc. | Hyperlink functionality for enabling an auctioning platform |
US20210133270A1 (en) * | 2019-11-05 | 2021-05-06 | International Business Machines Corporation | Referencing multiple uniform resource locators with cognitive hyperlinks |
-
2019
- 2019-09-12 GB GB201913144A patent/GB201913144D0/en not_active Ceased
-
2020
- 2020-08-19 WO PCT/IB2020/057799 patent/WO2021048663A1/en unknown
- 2020-08-19 JP JP2022516101A patent/JP2022548583A/ja active Pending
- 2020-08-19 EP EP20764163.0A patent/EP4018348A1/en active Pending
- 2020-08-19 CN CN202080064058.6A patent/CN114402573A/zh active Pending
- 2020-08-19 US US17/642,590 patent/US11893074B2/en active Active
-
2023
- 2023-12-07 US US18/533,081 patent/US20240126825A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
GB201913144D0 (en) | 2019-10-30 |
US20220342951A1 (en) | 2022-10-27 |
US11893074B2 (en) | 2024-02-06 |
US20240126825A1 (en) | 2024-04-18 |
EP4018348A1 (en) | 2022-06-29 |
WO2021048663A1 (en) | 2021-03-18 |
CN114402573A (zh) | 2022-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7467456B2 (ja) | ブロックチェーンネットワークを介するデータの効率的且つセキュアな処理、アクセス、及び送信のためのシステム及び方法 | |
WO2020178752A1 (en) | Method of using a blockchain | |
US20240126825A1 (en) | Sharing data via transactions of a blockchain | |
JP2022534047A (ja) | ブロックチェーントランザクションの中のインスクリプト関数 | |
AU2021230365A1 (en) | Cryptographic data entry blockchain data structure | |
JP2023532211A (ja) | ブロックチェーン上の合意 | |
JP2023516407A (ja) | 公開鍵を生成する方法 | |
US20230095123A1 (en) | Systems and Methods for Digitally Signed Contracts with Verifiable Credentials | |
US20220253821A1 (en) | Streaming portions of data over a side channel | |
JP2022532889A (ja) | 複数インプットトランザクション | |
US20220345314A1 (en) | Genetic Data in Transactions | |
GB2581970A (en) | Method of using a blockchain | |
CN116157796A (zh) | 警报账户 | |
TW202145039A (zh) | 用以經由區塊鏈有效且安全地處理、存取及傳輸資料之電腦實行系統及方法 | |
JP2023517033A (ja) | ハッシュベースのメッセージ認証コードを生成する方法 | |
KR20220059547A (ko) | 다중-기준 블록체인 프로토콜 | |
JP2023537698A (ja) | ブロックチェーンネットワークとの接続 | |
US20240171407A1 (en) | Improved methods & systems for signature verification in blockchain-implemented data applications | |
WO2023180487A1 (en) | Selective proof of existence using ordered, append-only data storage | |
TW202334847A (zh) | 用於安全且有效之資料儲存之電腦實現方法及系統 | |
WO2023012127A1 (en) | A computer implemented method and system | |
WO2023285045A1 (en) | Message exchange system | |
WO2020240291A1 (en) | Method of using a side channel | |
CN113056741A (zh) | 基于分布式账本的简档验证 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230720 |