JP2022532886A - ブロックチェーンへの包含のためのトランザクションの適応性 - Google Patents
ブロックチェーンへの包含のためのトランザクションの適応性 Download PDFInfo
- Publication number
- JP2022532886A JP2022532886A JP2021567834A JP2021567834A JP2022532886A JP 2022532886 A JP2022532886 A JP 2022532886A JP 2021567834 A JP2021567834 A JP 2021567834A JP 2021567834 A JP2021567834 A JP 2021567834A JP 2022532886 A JP2022532886 A JP 2022532886A
- Authority
- JP
- Japan
- Prior art keywords
- transaction
- party
- version
- output
- condition
- 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
- 238000000034 method Methods 0.000 claims abstract description 101
- 238000013515 script Methods 0.000 claims description 240
- 230000000644 propagated effect Effects 0.000 claims description 45
- 230000006870 function Effects 0.000 claims description 33
- 238000012546 transfer Methods 0.000 claims description 23
- 238000012545 processing Methods 0.000 claims description 17
- 230000005540 biological transmission Effects 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 6
- 230000005611 electricity Effects 0.000 claims description 5
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims description 5
- 238000007792 addition Methods 0.000 claims 1
- 230000001902 propagating effect Effects 0.000 abstract description 2
- 238000005065 mining Methods 0.000 description 25
- 230000008569 process Effects 0.000 description 13
- 230000008859 change Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 9
- 230000006978 adaptation Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 230000002349 favourable effect Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000003044 adaptive effect Effects 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009365 direct transmission Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 230000008450 motivation Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000035807 sensation Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- 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
- 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
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/401—Transaction verification
-
- 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
-
- 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
- H04L9/3252—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 using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
第1パーティと第2パーティとの間のターゲットトランザクションをブロックチェーンに記録する方法であって、前記方法は、前記第1パーティ及び前記第2パーティのコンピュータ機器により、前記ターゲットトランザクションの既存の第1バージョンに対して更新されている、前記ターゲットトランザクションの第2の更新バージョンを取得するステップと、ノードのネットワークを通じて伝播され前記ノードのうちの少なくとも幾つかの各々において維持されるブロックチェーンのコピーに記録されるように、前記第1バージョンの代わりに、前記ターゲットトランザクションの前記更新バージョンを送信するステップと、を含む。
Description
本開示は、ブロックチェーンの文脈における適応性(malleability)の現象、つまりトランザクションを無効にすることなくトランザクションの特定の未署名部分を変更する能力に関連する。
ブロックチェーンとは、分散型データ構造の形式を指し、ブロックチェーンの複製のコピーは、ピアツーピア(peer-to-peer (P2P))ネットワーク内の複数のノードのそれぞれにおいて維持される。ブロックチェーンは、データのブロックのチェーンを含み、各ブロックは1つ以上のトランザクションを含む。各トランザクションは、シーケンスの中の先行するトランザクションを指してよい。トランザクションは、ネットワークに提供されて、「マイニング」として知られる処理により、新しいブロックに含まれることができる。「マイニング」は、複数のマイニングノードの各々が「proof-of-work」を実行するために競争する、つまりブロックに含まれることを待っている保留中のトランザクションのプールに基づき、暗号パズルを解くことを含む。
従来、ブロックチェーン内のトランザクションは、デジタルアセット、すなわち、価値のストアとして機能するデータを伝達するために使用される。しかし、ブロックチェーンの上に追加の機能を積み重ねるために、ブロックチェーンを利用することもできる。例えば、ブロックチェーンプロトコルは、トランザクションのアウトプットに追加のユーザデータを格納することを可能にしてよい。現代のブロックチェーンは、単一トランザクション内に格納できる最大データ容量を増加させ、より複雑なデータを組み込むことを可能にしている。例えば、これは、ブロックチェーン内に電子ドキュメント(electronic document)、或いはオーディオ若しくはビデオデータを格納するために使用され得る。
ネットワーク内の各ノードは、転送、マイニング、及び記憶のうちの任意の1、2、又は3つ全部の役割を有することができる。転送ノードは、それぞれ、(有効な)トランザクションを1つ以上の他のノードへ伝播させる。従って、それらの間でネットワークのノードを通じてトランザクションを伝播させる。マイニングノードは、それぞれ、トランザクションのマイニングを実行してブロックにするために競争する。記憶ノードは、それぞれ、ブロックチェーンのマイニングされたブロックの彼ら自身のコピーを格納する。トランザクションをブロックチェーンに記録させるために、パーティは、該トランザクションを、伝播させるようにネットワークのノードのうちの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つのインプットを含む。
「アウトプットに基づく」モデル(UTXOに基づくモデルと呼ばれることもある)では、所与のトランザクションのデータ構造は、1つ以上のインプット及び1つ以上のアウトプットを含む。任意の使用可能アウトプットは、時にUTXO(「unspent transaction output(未使用トランザクションアウトプット)」)と呼ばれる、デジタルアセットの額を指定する要素を含む。アウトプットは、アウトプットを償還(redeem)するための条件を指定するロックスクリプトを更に含んでよい。各インプットは、先行するトランザクション内のそのようなアウトプットへのポインタを含み、ポイントされたアウトプットのロックスクリプトをアンロックするためのアンロックスクリプトを更に含んでよい。従って、トランザクションのペアを考えるとき、それらを、第1トランザクション及び第2トランザクション(又は「ターゲット」トランザクション)と呼ぶ。第1トランザクションは、デジタルアセットの額を指定する、及びアウトプットをアンロックする1つ以上の条件を定義するロックスクリプトを含む、少なくとも1つのアウトプットを含む。第2のターゲットトランザクションは、第1トランザクションのアウトプットへのポインタと、第1トランザクションのアウトプットをアンロックするためのアンロックスクリプトと、を含む少なくとも1つのインプットを含む。
このようなモデルでは、第2のターゲットトランザクションが、伝播されてブロックチェーンに記録されるようP2Pネットワークへ送信されると、各ノードにおいて適用される有効性のための条件のうちの1つは、アンロックスクリプトが第1トランザクションのロックスクリプト内で定義された要件を満たすことである。ターゲットトランザクションが有効であるための別の条件は、第1トランザクションのアウトプットが、別の有効なトランザクションによって未だ償還されていないことである。これらの条件のうちのいずれかに従いターゲットトランザクションが無効であると分かった任意のノードは、該トランザクションを伝播させず、ブロックチェーンに記録させるためにマイニングしてブロックに含めることもしない。
例えば、ターゲットトランザクションは、第1パーティ(「Alice」)から第2パーティ(「Bob」)へのデジタルアセット額を運ぶためのものである。先行する第1トランザクションのロックスクリプト内で定義された要件のうちの1つは、標準的に、ターゲットトランザクションのアンロックスクリプトがAliceの暗号署名を含むことである。署名は、ターゲットトランザクションの部分に署名するAliceにより生成されなければならない。これがどの部分であるかは、アンロックスクリプトにより柔軟に定義されてよく、又は使用されるプロトコルに依存して、ノードプロトコルの本来の特徴であってよい。しかしながら、署名されるべき部分は、標準的に、ターゲットトランザクションの特定の他の部分、例えばアンロックスクリプト自体の一部又は全部を除く。
これは、「適応性(malleability)」の可能性を生成する。つまり、マイニングの前に、署名されていないターゲットトランザクションの部分が、トランザクションを無効にすることなく、変更(「malleated」)可能である。適応性は、暗号法において知られている概念である。これは、通常、セキュリティ関心事として知られており、それによりメッセージが悪意を持って変更され得るが、依然として真正であるととして受け入れられる。ブロックチェーンの文脈では、適応性は、必ずしも関心事ではないが、単に奇妙なアーチファクトとして知られており、それにより、トランザクションの特定の部分が該トランザクションを無効にすることなく変更可能である。
近年、トランザクションをメディアデータのキャリアとして使用するために、適応性を慎重に利用する提案が行われた。データコンテンツをトランザクションのアンロックスクリプトに含むことができ、このトランザクションは、次に、「支払い(payment)チャネル」と呼ばれるサイドチャネルを介してパーティ間で送信される。パーティのうちの1つは、次に、トランザクションを変更して(malleate)データを除去し、変更したバージョンをマイニングされるようにP2Pネットワークへ向けて送信する(一方、データが除去されなかった場合、トランザクションは、ブロックチェーンを膨大にし、トランザクションを受け入れるためにマイナーにより要求される報酬は、トランザクションのデータサイズと共に標準的にスケーリングするので、標準的にはより高いマイニング手数料も要求する)。
本開示は、適応性、又はより一般的には更新可能性が肯定的な特徴として利用できる更なる方法を認識する。特に、トランザクションのペアのうちの第1トランザクションは、そのロックスクリプト内に複数の異なるアンロック条件を含み得ることが知られている。従来、1つの条件又は他のものに基づき、第1トランザクションのアウトプットを償還するために、ターゲットトランザクションの1つのバージョンのみがこれまでに生成された。しかしながら、ここで、実際に2つのバージョン:条件のうちの第1条件に基づき第1トランザクションを償還するアンロックスクリプトを有する、ターゲットトランザクションの第1バージョン、及び条件のうちの第2条件に基づき第1トランザクションを償還する第2バージョン、が存在することが有用であると認識される。第2の更新バージョンは、第1バージョンを変更することにより、又はスクラッチから新鮮なバージョンを生成することにより、生成され得る。それらh、並列に又は1つずつ存在し得る。両方のバージョンは第1トランザクションを有効に償還できないが、第1バージョンの存在は、第2条件を満たすために必要な環境が満たされていない場合に、Bobにとっての「バックアップ」として機能し得る。
本願明細書に開示される一態様によると、ブロックチェーンに第1パーティと第2パーティとの間のターゲットトランザクションを記録する方法が提供される。当該方法は、第1パーティ又は第2パーティのコンピュータ機器により、
ターゲットトランザクションの既存の第1バージョンに対して更新されている、前記ターゲットトランザクションの第2の更新バージョンを取得するステップと、
前記第1バージョンの代わりに、ノードのネットワークを通じて伝播され、前記ノードのうちの少なくとも幾つかの各々において維持されているブロックチェーンのコピーに記録されるように、前記ターゲットトランザクションの前記更新バージョンを送信するステップと、を含む。
前記ターゲットトランザクションは、アンロックスクリプトと、第1トランザクションの第1アウトプットへのポインタと、を含み、前記第1アウトプットは、前記第1トランザクションの前記第1アウトプットをアンロックするための複数の代替条件を指定するロックスクリプトを含む。前記ターゲットトランザクションの前記第1バージョンの前記アンロックスクリプトは、前記代替条件のうちの第1条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成され、前記更新バージョンの前記アンロックスクリプトは、前記第1条件の代わりに、前記代替条件のうちの第2条件を満たすことに基づき前記第1トランザクションの前記第1アウトプットをアンロックするよう構成される。
ターゲットトランザクションの既存の第1バージョンに対して更新されている、前記ターゲットトランザクションの第2の更新バージョンを取得するステップと、
前記第1バージョンの代わりに、ノードのネットワークを通じて伝播され、前記ノードのうちの少なくとも幾つかの各々において維持されているブロックチェーンのコピーに記録されるように、前記ターゲットトランザクションの前記更新バージョンを送信するステップと、を含む。
前記ターゲットトランザクションは、アンロックスクリプトと、第1トランザクションの第1アウトプットへのポインタと、を含み、前記第1アウトプットは、前記第1トランザクションの前記第1アウトプットをアンロックするための複数の代替条件を指定するロックスクリプトを含む。前記ターゲットトランザクションの前記第1バージョンの前記アンロックスクリプトは、前記代替条件のうちの第1条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成され、前記更新バージョンの前記アンロックスクリプトは、前記第1条件の代わりに、前記代替条件のうちの第2条件を満たすことに基づき前記第1トランザクションの前記第1アウトプットをアンロックするよう構成される。
前記ターゲットトランザクションを含む複数のトランザクションの各々について、前記ネットワークの少なくとも幾つかのノードは、トランザクションが有効であることを条件として各トランザクションを伝播させ、少なくとも幾つかのノードは、トランザクションが有効であることを条件として、該ノードにおけるブロックチェーンのコピーに各トランザクションを記録するよう構成され、前記ターゲットトランザクションの有効性は、前記アンロックスクリプトが前記条件のうちのいずれか1つに従い前記第1トランザクションの前記アウトプットをアンロックすることを条件とするが、前記バージョンのうちの一方が任意の所与のノードにおいて検証されると、他方のバージョンが該ノードにおいて無効であると見なされる。
従って、両方のバージョンは第1トランザクションを有効に償還できないので、第2パーティ(「Bob」)は、伝播されブロックチェーンに記録されるよう両方のバージョンを送信しない。彼は、彼の好みで伝播され記録されるように第2バージョンを送信するが、第1バージョンが存在したという事実は、第2バージョンのための必要な環境が満たされなかった場合に、第1バージョンを記録させたというフォールバック(fall-back)を彼に与える。
例えば、第1の例示的な使用例では、第1トランザクション(「Tx1」)は、第2パーティ(「Bob」)により提供されるべきサービスに対する、第1パーティ(「Alice」)からの支払いを含む。第1トランザクションは、Alice、Bob、又は第三者により生成され得る。それは既にオンチェーンにあり、又はそこへ後に記録されるよう送信され得る。いずれの方法も、第1トランザクションのアウトプット内のロックスクリプトが、該アウトプット内で定義された支払いをアンロックするための少なくとも2つの代替条件、第1条件及び第2条件を指定する。第1条件は、Aliceの署名がターゲットトランザクションのアンロックスクリプトに含まれることを必要としないが、幾つかの他の煩わしい要件、例えばアンロックスクリプトが大きな所定のデータ片(これは、高いマイニング手数料を招き得る)又はBobの機密若しくは秘密データ片(これは、Bobがブロックチェーン上で公開したくない)を含むことをBobに課す。第2条件は、Aliceの署名がターゲットトランザクションのアンロックスクリプトに含まれることを要求するが、第1条件の煩わしい要件を課さない。
AliceがBobにターゲットトランザクションの第1バージョン(「Txp」)も提供するか、又はBobが彼自身でそれを生成する(若しくは、それは第三者により生成される)。第1バージョンは、第1条件に基づき第1トランザクションTx1のアウトプットをアンロックするよう構成される。一方、第2バージョン(「Txp’」)は、第2条件に基づき、それをアンロックするよう構成される。次に、Bobは、サービスを提供する。Aliceが満足し誠実であるならば、それに応答して、彼女は、Bobに、彼女の署名を含む、ターゲットトランザクションの第2バージョンTxp’を提供する(又は第2バージョンを構成するために少なくとも彼女の署名をBob又は第三者に提供する)。しかしながら、Aliceが合意を破った場合には、Bobは、あまり好ましくない第1条件に基づき第1トランザクションのアウトプットを償還するために、既存の、あまり好ましくない第1バージョンTxpを送信するというオプションを有している。
第2の例示的な使用例では、当該方法は、前記第2パーティの前記コンピュータ機器により、
前記第1パーティへデータ部分のシーケンスをストリーミングするステップであって、前記シーケンスの中の最終部分により終了する、ステップと、
前記データ部分のうちのそれぞれの部分に応答して、前記第1パーティから前記第1トランザクションのそれぞれのインスタンスを受信するステップであって、各インスタンスの第1アウトプットは、前記それぞれの部分についての前記第2パーティへの支払いを指定する、ステップと、
を含んでよく
前記支払いは各データ部分と共に増大する。このような実施形態では、前記ターゲットトランザクションの前記更新バージョンを取得するステップは、前記シーケンスの中の最終部分に続いて、第1パーティから更新バージョンを受信するステップを含む。
前記第1パーティへデータ部分のシーケンスをストリーミングするステップであって、前記シーケンスの中の最終部分により終了する、ステップと、
前記データ部分のうちのそれぞれの部分に応答して、前記第1パーティから前記第1トランザクションのそれぞれのインスタンスを受信するステップであって、各インスタンスの第1アウトプットは、前記それぞれの部分についての前記第2パーティへの支払いを指定する、ステップと、
を含んでよく
前記支払いは各データ部分と共に増大する。このような実施形態では、前記ターゲットトランザクションの前記更新バージョンを取得するステップは、前記シーケンスの中の最終部分に続いて、第1パーティから更新バージョンを受信するステップを含む。
例えば、各データ部分は、メディアコンテンツ(例えば、オーディオ及び/又はビデオコンテンツ)のアイテムの異なる部分であってよい。代替として、各データ部分は、サービスのユニット(例えば、ガス、水道、電気のような生活必需サービス、又は車両、不動産、又は他の物理的オブジェクトのレンタル)にアクセスするための異なる鍵である。
例えば、第1アウトプットが各インスタンスの中に同じアウトプット識別子(例えば、UTXO識別子)を有するので、第1トランザクションのインスタンス(Tx1,Tx2,Tx3,…)は、ネットワークの各ノードにより、実質的に同じトランザクションのインスタンスとして認識されてよい。従って、1つのインスタンスのみが、ブロックチェーンに記録できる。1つのインスタンスが任意の所与のノードにより有効であるとして受け入れられると、更なるバージョンを記録しようとする任意の試みは、無効であると見なされ、従って該ノードにより拒否される。更に、第1トランザクションのインスタンスのうちの1つがターゲットトランザクションのバージョンのうちの1つ(Txp又はTxp’)により有効に償還されることが、任意の所与のノードにより分かると、第1トランザクションの任意のインスタンスを償還しようとする任意の更なるターゲットトランザクションは、該ノードにより無効であると見なされ、従って、該ノードにより伝播されず、ブロックチェーンに記録されることもない。
ターゲットトランザクションの任意のバージョン(Txp又はTxp’)は実質的に同じ第1トランザクションのインスタンス(単に異なる額を定義する)の同じアウトプットIDを指すので、1つのターゲットトランザクションのみが、該アウトプットを有効に償還できる。第1トランザクションのインスタンスのうちの1つ(Tx1,Tx2,Tx3,…)がターゲットトランザクションのバージョンのうちの1つ(Txp又はTxp’)により有効に償還されることが、任意の所与のノードにおいて分かると、第1トランザクションの任意のインスタンスを償還しようとする任意の更なるターゲットトランザクションは、無効であると見なされ、従って、該ノードにより伝播されず、ブロックチェーンに記録されることもない。しかしながら、各インスタンスの中の支払いも、データの各部分と引き換えに増大するので、第2パーティ(「Bob」)が行わなければならないことは、第1トランザクションの最後の又は最近のインスタンスTxnを償還するターゲットトランザクションのバージョンTxp’を送信して、伝播させブロックチェーンに記録することである。彼は、次に、トランザクションの単一のペアに基づき、その時点前に送信されたデータの全部の部分についての完全な支払いを受け取る。代わりに、第1パーティ(「Alice」)がデータの各個別部分(例えば、オーディオ又はビデオコンテンツの各パケット又はチャンク)についての別個の個別支払いを送信する場合、Bobは各データ部文意ついて別個のトランザクションを送信しなければならないので、これは、ブロックチェーンを膨大にし、より多くのネットワークトラフィックをもたらすだろう。
任意の時点で、シーケンスの終了の前に、Aliceが第1トランザクションのインスタンス(Tx1,Tx2,Tx3,…)の送信を停止した場合、その時点より前に送信されたデータ部分についての支払いを償還するために(従って、送信された最新のデータ部分のみを失う)、Bobは、Aliceへの更なるデータ部分の送信を停止し、ターゲットトランザクションの第1バージョンTxpをネットワークへ送信するオプションを依然として有する。反対に、任意の時点で、Bobがデータ部分の送信を停止した場合、Aliceは、第1トランザクションの更なるインスタンスTx1の送信を停止するオプションを有し、Bobは、それまでにAliceにより受信されたデータ部分に対する支払いを償還する能力のみを受けるだろう。
特に任意的な実装では、第1トランザクションは、インプット額を指定する1つ以上の第1インプットを含んでよく、第1トランザクションの第1アウトプットは第1支払いを指定してよく、第1トランザクションは、1つ以上の更なる支払いを指定する1つ以上の更なるアウトプットを更に含んでよい。その結果、支払いの合計はインプット額より高く、第1パーティから第2パーティにより受信される第1トランザクションは、差分を生成する他のインプットを有しない。ネットワークのノードは、第1トランザクションが合計インプット額より多くの合計支払いを指定する場合、第1トランザクションを無効であるとして拒否する。このような実施形態では、当該方法は、差分を構成する(make up)ために、第2パーティが第2インプットを第1トランザクションの最終又は最近のインスタンスに追加するステップと、追加された第2インプットを有する第1トランザクションを、ネットワークを通じて伝播されブロックチェーンに記録されるよう送信するステップと、を含む。
この例示的な実装として、更なるアウトプットは、インプット額から第1支払いを差し引いたものに等しい、第1パーティへの第2支払いを指定する第2アウトプットと、第2支払いに等しい、第2パーティへの第3支払いを指定する第3アウトプットと、を含む。
このような実施形態は、第1パーティ(「Alice」)が、先のインスタンスのうちの1つを償還するために彼女自身のターゲットトランザクションを送り出すことによりシステムを騙すことを防止し、従って、Bobが後のインスタンスのうちの1つ(又は実際にインスタンスのうちのいずれか)を償還することを防止する。そうすることにより、Aliceは、彼女のデジタルアセットの多くを負担する余分なインプットを追加しなければならないからである。従って、Aliceがシステムを騙そうとすることに価値がない。
別の例示的な使用例では、前記代替条件のうちの少なくとも幾つかの各々は、投票のための異なる選択肢に対応してよく、
前記方法は、前記ターゲットトランザクションの前記更新バージョンを取得するステップの前に、前記第1バージョンの中の前記アンロックスクリプトを、投票意向の拘束力のない指示として、アクセスする又は第三者によりアクセス可能であるとマークするステップを含んでよい。投票の指示が実際に投票に変換されなかった場合、第1バージョンは、投票が最終的な投票結果とどれくらい異なったかの公開された指示として残る。
前記方法は、前記ターゲットトランザクションの前記更新バージョンを取得するステップの前に、前記第1バージョンの中の前記アンロックスクリプトを、投票意向の拘束力のない指示として、アクセスする又は第三者によりアクセス可能であるとマークするステップを含んでよい。投票の指示が実際に投票に変換されなかった場合、第1バージョンは、投票が最終的な投票結果とどれくらい異なったかの公開された指示として残る。
本願明細書に開示される更なる態様によると、方法を実行するためのプログラム、及び/又は方法を実行するようプログラミングされた第2パーティのコンピュータ機器が提供される。プログラム又はコンピュータ機器は、第2パーティが、いずれかのバージョンを選択する手動オプションを提供することにより、及び/又は第1イベントにより第1バージョンを自動的に送信するよう構成され及び第2イベントにより第2バージョンの代わりに伝播され記録されるように第2バージョンを自動的に送信するよう更に構成される自動機能により、ネットワークを通じて伝播されブロックチェーンに記録されるように、第1バージョン又は第2バージョンのいずれかを選択的に送信できるように構成されてよい。
本開示の実施形態の理解を助け、そのような実施形態がどのように実施され得るかを示すために、例としてのみ、以下の添付の図面を参照する。
ブロックチェーンを実装するためのシステムの概略ブロック図である。
ブロックチェーンに記録されるトランザクションのいくつかの例を概略的に示している。
ブロックチェーンを実装するための別のシステムの概略ブロック図である。
クライアントアプリケーションの概略ブロック図である。
図4のクライアントアプリケーションにより提示される例示的なユーザインタフェースの概略的模擬表示である。
トランザクションのセットの概略図である。
データをストリーミングする方法のフローチャートである。
図7の方法の例示的な実装における第1トランザクションのインスタンスのインプット及びアウトプットの値を示すグラフである。
投票方法を示すシグナリング図である。
投票方法を示すシグナリング図である。
図10の方法を実施するトランザクションの例示的なセットを示す。
適応性は、暗号法において既存の概念である。これは、通常、セキュリティ関心事を支え、それによりメッセージが悪意を持って変更され得るが、依然として真正であるとして受け入れられる。デジタル署名方式は、この関心事を解決するために設計される。ブロックチェーンでは、しかしながら、適応性は、トランザクションを全体として無効にすることなく、トランザクションの少なくとも部分を変更する能力を表す。関連する形式の暗号署名(例えば、ECDSA署名)により署名されるトランザクション内の任意の情報は、適応(malleation)の可能性の影響を受けない。適応性に関連する任意の請求リティ関心事は、代わりに、プロトコル自体ではなく、不適切な実装により引き起こされる。
以下は、速くセキュアな信頼不要の(trustless)支払いチャネルを実現するための有用な特徴として利用する。思想は、(例えば、ECDSA署名により)署名されない又はされる必要のないトランザクション内の1つ又は複数の部分を識別することである。開示の方式は、トランザクションの各インプットのアンロックスクリプト内の任意のコンテンツ(例えば「scriptSig」フィールド)が任意の署名により署名されていないという事実を利用する。実施形態は、トランザクションを無効にすることなく該トランザクションを柔軟に変更することを可能にするために、SIGHASHフラグも利用してよい。
例は以下の通りである。ブロックチェーン上でデータを交換するとき、1つの一般的な方法は、データの開示及び支払いの受け入れが同時に生じることを強制するために、ハッシュパズルを使用することである。これを回避するために、トランザクションは、支払いが2つの条件:(i)「データ+Bobの署名」を提供すること、又は(ii)「Aliceの署名+Bobの署名」を提供すること、のうちのいずれかにより請求できるように、構成できる。
Bobは、データ及び彼の署名を提供することにより資金を請求するためのトランザクションを構成し、それをAliceへ送信する。Aliceは、次に、データを彼女の署名で置き換え、トランザクションをネットワークへブロードキャストする。代替として、BobはAliceの署名を取得し、それでデータを置き換え、ネットワークにブロードキャストする。いずれの方法でも、データはBobの署名により署名されたメッセージの部分ではないので、それをAliceの署名で置き換えることは、トランザクションを無効にしない。更に、トランザクションは、インプットが条件(ii)を満たすとき、有効のままである。Aliceがトランザクションをネットワークへブロードキャストせず、彼女の署名を提供しない場合、Bobは、条件(i)(これは、彼が相当量の及び/又は独自のデータをアップロードしなければならないので、あまり好ましくない)に基づき資金を請求するために、元のトランザクションをブロードキャストするオプションを依然として有する。Aliceは、肯定すべき要件、割引の動機付け、又はサービスが良好に実行されたことに対してBobに報酬を与えることにより、彼女の署名を提供することを奨励されてよい。
<システム概要>
図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に戻って参照することによって移転される量を定義するのではなく、絶対的な口座(アカウント)残高を参照することによって移転される。すべてのアカウントの現在の状態は、ブロックチェーンとは別個のマイナーによって格納され、絶えず更新される。本開示は、アカウントに基づくのではなくアウトプットに基づくモデルに関する。
どちらのタイプのトランザクションプロトコルでも、ユーザ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内の各格納ノード104Siで認識され、維持されるため、変更することはできない。また、ブロックポインタ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に属するいずれの動作も、それぞれのコンピュータ装置の処理装置上で実行されるソフトウェアによって実行され得ることが理解されよう。また、本明細書で使用される「ブロックチェーン」という用語は、一般的な技術の種類を指す一般的な用語であり、任意の特定の専有のブロックチェーン、プロトコル又はサービスに限定されない。
また、ネットワーク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のアウトプットの中で定義される量を照合することを含む。
各コンピュータ機器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は、以前のトランザクションへのポインタを含むので、トランザクションの順序もまた、不変的に記録される。
図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,capital 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が有効であるとみなす。それが記憶ノード104Sである場合、これは、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内の別の有効なトランザクションへの有効なインプットを既に形成しているかどうかである。
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のうちの独自のものにおいて、マイナー手数料を明示的に指定できることは除外されない。
所与のトランザクション152の全部のアウトプット203の中で指定された総量が全部のそのインプット202により指される総量より大きい場合、これは、殆どのトランザクションモデルにおいて無効の別の基礎であることに留意する。従って、このようなトランザクションは、伝播されず、マイニングされてブロック151にされることもない。
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))を使用して署名の妥当性を検証するスクリプトオペコードである。ランタイムでは、署名(「si」')の発生はすべてスクリプトから削除されるが、ハッシュパズルなどの追加要件は、「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が、(いずれかのパーティ又は第3者の勧誘で)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を介して交換すると表される場合、これは、必ずしも全部のこれらのデータ片が正確に同じリンクまたは同じ種類のネットワークを介して送信される必要があることを意味しないことに留意する。
<例示的な定義>
以下は、幾つかの実装において採用得る幾つかの例示的な定義である。これらは、全部の可能な実装を限定するものではなく、後述する例示的な使用例の幾つかの可能な実装において利用され得る特定の可能な実装の理解を助けるためだけに提供されることに留意する。
以下は、幾つかの実装において採用得る幾つかの例示的な定義である。これらは、全部の可能な実装を限定するものではなく、後述する例示的な使用例の幾つかの可能な実装において利用され得る特定の可能な実装の理解を助けるためだけに提供されることに留意する。
定義1:トランザクション。トランザクションは、インプットとアウトプットとを含むメッセージである。それは、プロトコルバージョン番号及び/又はロックタイム(locktime)も含んでよい。プロトコルバージョンは、トランザクションプロトコルのバージョンを示す。ロックタイムは、後に個別に説明される。
定義2:インプットトランザクションのインプットは、順序付きリストを形成する。リスト内の各エントリは、アウトプット(未使用トランザクションアウトプットの識別子)、及びscriptSig(アンロックスクリプト)を含む。それは、シーケンス番号も含んでよい。
定義3:アウトプット:トランザクションのアウトプットは、順序付きリストを形成する。リスト内の各エントリは、値(その基本単位におけるデジタルアセットの額)、及びscriptPubKey(ロックスクリプト)を含む。
定義4:アウトポイント。アウトポイントは、トランザクションID TxID、及びインデックス番号iによりユニークに定義される。トランザクションアウトプットTxIDのアウトプットの中のi番目のエントリを表し、未使用トランザクションアウトプット(UTXO)のユニークな位置を与える。用語「未使用(unspent)」は、本願明細書で、アウトポイントが任意の有効な後続のトランザクションの中に現れていないことを意味する。
定義5:scriptSig。これは、所与のアウトポイントに対応するUTXOをアンロックする又は使用するために要求される情報である。標準的なトランザクションでは、この情報は通常ECDSA署名である。従って、スクリプトは「scriptSig」と呼ばれる。しかしながら、アウトポイントをアンロックするために必要な情報は、UTXOのロック条件を満たす任意のデータであり得る。
定義6:scriptPubKey。これは、特定のUTXOに関連付けられた資金をロックするスクリプトである。scriptSigがscriptPubKeyに付加され、結合されたスクリプトの実行が真を与える場合に及びその場合にのみ、資金がアンロックされ、使用できる。そうでない場合には、トランザクションは無効であり、拒否される。これは、通常、標準的なトランザクションではECDSA公開鍵のハッシュ値を含むので、「scriptPubKey」と呼ばれる。
次の定義では、インプット又はアウトプットへの署名が参照され、これは、scriptSig部分(定義2を参照)を除く1つ又は複数のインプットへの署名を意味する。
適応性を機能として議論するとき、トランザクション内で、ECDSA署名により署名されていない情報を探す。署名されるべきメッセージから除外され得るインプット及びアウトプットとは別に、scriptSigのコンテンツは常に除外される。これは、scriptSigが署名のプレースホルダーであるよう設計されるからである。
定義8:ブロックチェーンタイムロック。一般に、トランザクション内で使用可能な2つのタイプのタイムロック:絶対的タイムロック及び相対的タイムロックがある。絶対的タイムロックは、その後に何かが「有効」であると考えられる特定の時点を指定する。一方で、相対的タイムロックは、何かが有効であると考えられる前に経過しなければならない期間を指定する。両方の場合に、ブロックチェーンタイムロックを使用するときの時間の代わりとして、ブロック高(マイニングされたブロックの数)又は経過時間(例えば、UNIX(登録商標)時間)を使用できる。
ブロックチェーンタイムロックの別の特性は、それらが表れる場所であり、それらが適用されるトランザクションの態様である。ここでも、この意味でタイムロックの2つの分類:トランザクション全体をロックするトランザクションレベル、及び特定のアウトプットをロックするスクリプトレベルがある。これらのタイムロックは両方とも、絶対的タイムロック又は相対的タイムロックのいずれかを実装するために使用できる。以下の表は、これらの特性に基づき生成可能なタイムロックを実装する4つの可能なメカニズムを纏めたものである。
定義9:nLocktime。ロックタイム(nLocktime)は、ブロック高又はUNIX時間で特定の時間を表す負ではない整数である。それは、トランザクションが指定されたブロック又は指定された時間の後にのみブロックチェーンに追加できるという意味で、トランザクションレベルのタイムロックである。nLocktimeが500,000,000より小さく設定される場合、それはブロック高と考えられる。それが500,000,000以上に設定された場合、それはUNIX時間の表現と考えられる。それは、1970年1月1日の00:00:00の後の秒数である。
例えば、現在のブロック高が3,000,000の高さであり、ロックタイムは4,000,000に設定される場合、トランザクションは、4百万番目のブロックがマイニングされるまで、マイナーにより検討されない。
定義10:nSequence。シーケンス番号(nSequence)は、トランザクションのバージョンをメッセージとして示す。トランザクションに対する任意の変更は、シーケンス番号を1つ大きくインクリメントする。nSequenceの最大値は232-1であり、通常、シーケンス番号は、デフォルトでこの最大値に設定されてトランザクションが完了していることを示す。nSequence値は、トランザクションの各インプットについて定義され、インプットにより参照されるUTXOがブロックに含まれた後、有効なインプットとして使用可能になる前の時間期間を指定する。マイナーが同じインプットを有する2つのトランザクションを認識した場合、マイナーは、より大きなシーケンス番号を有するトランザクションを選択する。しかしながら、この特徴は、一般的に無効にされている。
定義11:CheckLockTimeVerify (OP_CLTV)。オペコードOP_CHECKLOCKTIMEVERIFY (OP_CLTV)は、将来の何らかの特定の時間又はブロック高にトランザクションの特定のアウトプットをロックするために使用可能な絶対的スクリプトレベルのタイムロックである。UTXOがトランザクション内で参照される現在のUNIX時間又はブロック高が、UTXOが生成されたUNIX時間又はブロック高にOP_CLTVオペコードの前に指定されたパラメータを足したものを超える場合、支払いトランザクションについてのスクリプト実行は失敗する。
定義12:CheckSequenceVerify (OP_CSV)。オペコードOP_CHECKSEQUENCEVERIFY (OP_CSV)は、将来の特定の時間期間又はブロック数についてトランザクションの特定のアウトプットをロックするために使用可能な相対的スクリプトレベルのタイムロックである。これはOP_CLTVと同様に動作するが、OP_CSVに提供されるパラメータが相対的時間を表すことが異なる。UTXOがトランザクション内で参照される現在のUNIX時間又はブロック高が、UTXOが生成されたUNIX時間又はブロック高にOP_CSVオペコードの前に指定されたパラメータを足したものを超える場合、支払いトランザクションについてのスクリプト実行は失敗する。
定義13:適応性(Malleability)。一般に、ブロックチェーントランザクションにおいて可能な2つの広義の適応性がある。それらは両方とも、インプットの中で提供される署名を無効にすることなく、トランザクションの内容を変更できるようにする。
両方の場合を説明するために、1つのインプットと、該インプットの中の1つの署名と、1つのアウトプットと、を有する初期トランザクションTxを考える。
タイプ1:スクリプトレベルの適応性。このタイプの適応性は、スクリプトオペコードOP_CHECKSIGによりチェックされるべき署名が、トランザクション内の任意のインプットのスクリプトフィールドに署名しないという事実を利用する。この事実は、トランザクションTxに対する署名を生成し、インプットスクリプトを変更して、トランザクションTx'がTxと同一ではないが、依然としてTx’及びTxが両方とも、ブロックチェーン合意ルールの下で同じ署名により署名された有効なトランザクションメッセージと考えられることを可能にする。
タイプ2:インプット及びアウトプットレベルの適応性。このタイプの適応性は、トランザクション内で利用されているSIGHASH ALL以外のSIGHASHフラグの使用に依存する。トランザクションTxが、5個の他のSIGHASHフラグの組合せのうちのいずれかを使用するインプット署名を有する場合、(1又は複数の)インプット又は(1又は複数の)アウトプットのいずれかが追加されて、同一ではないトランザクションTx'を生成できる。その結果、両者は、署名を変更する必要を伴わずに、合意に従い有効なトランザクションメッセージと考えられる。
特徴としての適応性
図4は、本開示の方式の実施形態を実装するためのクライアントアプリケーション105の例示的な実装を示す。クライアントアプリケーション105は、トランザクションエンジン401と、ユーザインタフェース(UI)レイヤ402と、を含む。トランザクションエンジン401は、上述の方式に従い、及び以下に詳細に議論するように、トランザクション152を形成する、トランザクション及び/又は他のデータをサイドチャネル301を介して受信及び/又は送信する、及び/又はP2Pネットワーク106を通じて伝播されるようにトランザクションを送信するような、クライアント105の基礎にあるトランザクション関連機能を実装するよう構成される。本願明細書に開示される実施形態によると、少なくともBobのクライアント105bのトランザクションエンジン401は、選択関数の形式のアプリケーション機能403を含む。これは、ターゲットトランザクション(「Txp」及び「Txp’」)の2つ以上の異なるバージョンのうちのどれが、検証のためにP2Pネットワーク106と通じて伝播され、従ってブロックチェーン150に記録されるように(伝播及び記録それら自体は、前述のメカニズムにより行われる)、Bobのそれぞれのコンピュータ機器102から送信されるべきかに関する選択を可能にする。ここでも、この送信は、Bobのコンピュータ機器102bからネットワーク106の転送ノード104Fのうちの1つへターゲットトランザクションを直接送信すること、又はAliceの機器102bへ若しくはネットワーク106のノード104Fのうちの1つへ転送されるように第三者の機器へターゲットトランザクションを送信すること、を含み得る。
UIレイヤ402は、それぞれのユーザコンピュータ機器102のユーザ入力/出力(I/O)手段を介して、機器102のユーザ出力手段によりそれぞれのユーザ103へ情報を出力すること及び機器102のユーザ入力手段によりそれぞれのユーザ103から入力を受信することを含む、ユーザインタフェースをレンダリングするよう構成される。例えば、ユーザ出力手段は、視覚出力を提供する1つ以上のディスプレイスクリーン(タッチ又は非タッチスクリーン)、オーディオ出力を提供する1つ以上のスピーカ、及び/又は触覚出力を提供する1つ以上の触覚出力装置、等を含み得る。ユーザ入力手段は、例えば、(出力手段のために使用されるものと同じ又は異なる)1つ以上のタッチスクリーンの入力アレイ、マウス、トラックパッド、若しくはトラックボールのような1つ以上のカーソルに基づく装置、会話若しくは音声入力を受信する1つ以上のマイクロフォン及び会話若しくは音声認識アルゴリズム、手動若しくは身体ジェスチャの形式で入力を受信する1つ以上のジェスチャに基づく入力装置、又は1つ以上の機械的ボタン、スイッチ、若しくはジョイスティック、等を含み得る。
注:本願明細書において種々の機能が同じクライアントアプリケーション105に統合されるとして説明されることがあるが、これは、必ずしも限定的ではなく、代わりに、それらは2つ以上の異なるアプリケーションのスーツに実装されてよく、例えば一方が他方へのプラグインである。例えば、トランザクションエンジン401の機能は、UIレイヤ402と別個のアプリケーション、又は所与のモジュールの機能に実装されてよく、トランザクションエンジン401が1つより多くのアプリケーションの間で分割されてよい。また、記載の機能の一部又は全部が、例えばオペレーティングシステムレイヤに実装されることを除外しない。本願明細書のどこかで、単一の又は所与のアプリケーション105等を参照する場合、これが単に例であること、より一般的には、記載の機能が任意の形式のソフトウェアで実装され得ることが理解される。
図5は、Bobの機器102b上のクライアントアプリケーション105のUIレイヤ402によりレンダリングされてよいユーザインタフェース(UI)500の例の模擬表示を与える。ユーザインタフェース500は、少なくとも2つのユーザ選択可能オプション501、502を含む。これらは、2つのスクリーン上のボタン又はメニューの中の2つの異なるオプションのように、ユーザ出力手段により2つの異なるUI要素としてレンダリングされてよい。ユーザ入力手段は、スクリーン上のUI要素をクリック若しくはタッチすることにより、又は所望のオプションの名称を発話することにより、ユーザ103b(この場合にはBob)がオプションのうちの1つを選択できるよう構成される(注:ここで使用される「手動(manual)」は単に自動の反対を意味し、手の使用に限定されない)。オプションをレンダリング及び選択する特定の手段は重要でないことが理解される。
どんな手段が使用されても、オプションの各々は第1及び第2ターゲットトランザクションTxp及びTxp’の異なる1つに対応する。選択機能403は、以下を可能にするためにUIレイヤ402とインタフェースするよう構成される。つまり、Bob103bが第1オプション501を選択した場合、これは、トランザクションエンジン403に、ネットワーク106を通じて伝播させブロックチェーン150に記録されるように、ターゲットトランザクションの第1バージョンTxpを送信させる。しかし、Bob103bが第2オプション403を選択した場合、これは、トランザクションエンジン403に、ネットワーク106を通じて伝播させブロックチェーン150に記録されるように、ターゲットトランザクションの第1バージョンTxp’を送信させる。
図5に示されるUI500は、単なる概略的な模擬表示であり、実際には、それは、簡潔さのために図示されない1つ以上の更なるUI要素を含んでよいことが理解される。
UIオプション501、502の代替又は追加として、選択機能403は、ブロックチェーン150に記録するために、ターゲットトランザクションの第1及び第2バージョンTxp又はTxp’の送信の間で自動選択を実行するよう構成されてよい。これは、所定のイベントに依存して又は所定のタイムアウトの後に、自動的にトリガされてよい。例えば、イベントYがタイムアウトの前に生じた場合、機能403は、ネットワーク150を通じて伝播されるよう第2バージョンTxp’を自動的に送信する。しかし、イベントYが生じる前に、タイムアウトが経過した場合、機能403は、代わりに、第1バージョンTxpを自動的に送信する。或いは、イベントXが生じた場合、機能403は、ネットワーク150を通じて伝播されるよう第1バージョンTxpを自動的に送信する。しかし、イベントYが生じた場合、機能403は代わりに、第2バージョンTxp'を自動的に送信する。原則では、ネットワーク150へ第1バージョン及び第2バージョンを自動的に送り出すための環境は、システム設計者により事実上何でも構成され得る。
図6は、本願明細書に開示される実施形態に従い使用するためのトランザクション152のセットを示す。セットは、第0トランザクションTx0、第1トランザクションTx1、及び第2トランザクションTxp/Txp’を含む。これらの名称は単に便宜上のラベルであることに留意する。それらは、必ずしも、これらのトランザクションが直ちに1つずつブロック151又はブロックチェーン150内に置かれること、又は第0トランザクションがブロック151又はブロックチェーン150内の最初のトランザクションであることを意味しない。また、これらのラベルは、それらのトランザクションがネットワーク106へ送信される順序に関して何も示唆しない。それらは、単に、1つのトランザクションのアウトプットが次のトランザクションのインプットによりポイントされる論理的シリーズを表す。幾つかのシステムでは、親をその子の後にネットワーク106へ送信することが可能であることを思い出してほしい(この場合、「親のない」子がある期間の間、1つ以上のノード104においてバッファされ、その間、親が到着するのを待っている)。
2つのトランザクションTxp又はTxp’は、両者が第1トランザクションの同じアウトプット(例えば、同じUTXO)を参照するインプットを含む場合、(実質的に)同じトランザクションのバージョンであると言える。異なるバージョンは、そのアウトプットの異なるアンロック条件を満たすことにより、異なる機能を提供し得る。異なるバージョンは、両方とも、同一のインプット署名も含んでよい(つまり、いずれのインスタンスの中の署名済みメッセージが同一である)。後述する幾つかの実施形態は、第1トランザクションの異なるインスタンスTxi(ここで、i=1,2,3,…)も含んでよい。2つ(以上)のトランザクションは、ここでは、両者が同じソーストランザクション(又は「第0」トランザクション)の同じアウトプット(例えばUTXO)Tx0を参照するインプットを含む場合、(実質的に)同じ第1トランザクションのインスタンスであると言える。それらは、同じアンロック条件を満たすことに基づき、該インプットを償還してよい。それらは、しかしながら、異なるインプット署名を含んでよい(つまり、いずれのインスタンスの中の署名済みメッセージが同一ではない)。異なるインスタンスは、異なるそれぞれのデータ部分に対する支払い、及びデジタルアセットの増分量を指定するが、実質的に同じ機能を提供してよい。これは、図7~9、及び例示的な使用例2を参照して後に詳述する。
第0トランザクションTx0は、本発明の目的のためにソーストランザクションと呼ばれてもよく、Alice103aへのロックされたデジタルアセットの額のソースとして機能する。第1トランザクションTx1は、本発明の目的のために、中間トランザクション又は条件付きトランザクションと呼ばれてもよく、ソーストランザクションTx0からデジタルアセットの額を条件付きで移転する仲介として機能する。第2トランザクションTxp/Txp’はターゲットトランザクション又は支払いトランザクション(ここでは添え字「P」)と呼ばれてもよく、条件のうちの1つをアンロックし、Bob(又は場合によっては、Bobが代表を務める受益者)への支払いを提供するトランザクションである。上述のように、ターゲットトランザクションは、2つのバージョン、第1バージョンTxp及び第2バージョンTxp’を有する。これらのトランザクションは、それぞれ、Alice(第1パーティ)のコンピュータ機器102a又はBob(第2パーティ)のコンピュータ機器102b、或いは第三者のコンピュータ機器(図示しない)、又はこれらの任意の組合せ、のいずれかにおいて少なくともある時点で存在し、明示される。2つのバージョンTxp及びTxp’は、並列に一緒にある期間の間、又は1つずつ、又は部分的に時間において重複して、存在してよい。
図6に示すように、ソーストランザクションTx0は、デジタルアセットの額を指定する少なくとも1つのアウトプット2030(例えば、Tx0のアウトプット0)、及びAlice103aへのこのアウトプットをロックするロックスクリプトを更に含む。これは、ソーストランザクションTx0のロックスクリプトが、少なくとも1つの条件が満たされることを要求することを意味する。この条件は、アウトプットをアンロックしようとする(従って、デジタルアセットの額を償還する)任意のトランザクションのインプットが、そのアンロックスクリプト内にAliceの暗号署名(つまり、Aliceの公開鍵を使用する)を含まなければならないことである。この意味で、Tx0のアウトプット内で定義される量は、Aliceにより所有されると言える。アウトプットは、UTXOと呼ばれてよい。どの先行するトランザクションのアウトプットがTx0のインプットをポイントするかは(それらが、Tx0の合計アウトプットをカバーするのに十分である限り)、本発明の目的のために特に重要ではない。
本発明の場合には、ソーストランザクションTx0のアウトプットをアンロックするトランザクションは、第1又は中間トランザクションTx1である。従って、Tx1は、Tx0の関連するアウトプット(図示の例ではTx0のアウトプット0)へのポインタを含み及び該アウトプットのロックスクリプト内で定義された条件に従いTx0のポイントされたアウトプットをアンロックするよう構成される、少なくともAliceの署名を要求するアンロックスクリプトを更に含む、少なくとも1つのインプット2021(例えばTx1のインプット0)を有する。Tx0のロックスクリプトにより要求されるAliceからの署名は、Tx1の特定の部分に署名することが要求される。幾つかのプロトコルでは、署名される必要のあるTx1の部分は、Tx1のアンロックスクリプト内で定義された設定であり得る。例えば、これは、署名に付加される1バイトであるSIGHASHフラグにより設定されてよい。従って、データの観点では、アンロックスクリプトは次の通りである:<Sig PA><sighashflag><PA>代替として、署名される必要のあるの部分は、単にTx1.の固定部分であってよい。いずれの方法も、署名されるべき部分は、標準的に、アンロックスクリプト自体を除き、及びTx1のインプットの一部又は全部を除いてよい。これは、Tx1のインプットが適応性があることを意味する。
第1又は中間トランザクションTx1は、少なくとも1つのアウトプット2031(例えば、ここでもアウトプットがUTXOと呼ばれてよいTx1のアウトプット0)を有する。中間トランザクションTx1のアウトプットは、無条件には任意の1つのパーティにロックされない。Tx0と同様に、それは、転送されるべきデジタルアセットの額を指定する少なくとも1つのアウトプット(例えば、Tx1のアウトプット0)を有する。該アウトプットは、該アウトプットをアンロックする、従って該量を償還するために何が必要かを定義するロックスクリプトを更に含む。しかしながら、このロックスクリプトは、少なくとも(i)第1条件(「条件1」)及び(ii)第2条件(「条件2」)を含む複数の異なる可能な条件のうちの任意の1つに基づき、そのアウトプットがアンロックされること可能にする。
第2の、ターゲットトランザクションTxp/Txp’は、少なくとも1つのインプット202p(例えば、Txp/Txp’のインプット0)を有し、該インプットは、Tx1の上述のアウトプット(図示の例ではTx1のアウトプット0)へのポインタを含み、Tx1のロックスクリプトの中で定義された複数の代替条件のうちの1つを満たすことに基づきTx1の該アウトプットをアンロックするよう構成されるアンロックスクリプトも更に含む。ターゲットトランザクションの第1バージョンTxpでは、ロックスクリプトは、第1条件、条件1を満たすよう構成される。幾つかのポイントで、ターゲットトランザクションの第2バージョンTxp’も生成される。第2バージョンでは、アンロックスクリプトは、第2条件、条件2を満たすよう構成される。
第2の、ターゲットトランザクションTxp/Txp’は、少なくとも1つのアウトプット202p(例えば、Txp/Txp’のアウトプット0)を有し、該アウトプットは、いずれのバージョンでも、Bobへ移転すべきデジタルアセットの額、及びこれをBobに対してロックするロックスクリプトを指定する(つまり、これは、更なる、今後のトランザクションが、使用するためにアンロックスクリプトの中にBobの署名を含むことが要求される)。この意味で、ターゲットトランザクションTxp/Txp’のアウトプットは、Bobにより所有されると言える。このアウトプットは、ここでもUTXOと呼ばれてよい。
実施形態では、第1条件は、Tx1、この場合にはターゲットトランザクションの第1バージョンTxp、をアンロックしようとするトランザクションのアンロックスクリプトが、自身のアンロックスクリプト内に、Bobの暗号署名、及び/又はBobが提供又は含めなければならないBobのデータであってよいデータペイロード、を含むことを要求する。データペイロードを含むという要件は、Tx1のロックスクリプトに含まれるハッシュチャレンジにより課されることができる。チャレンジは、データのハッシュ(データ自体ではない)、及び(アンロックスクリプトと一緒にノード104上で実行すると)対応するアンロックスクリプト内で提供されるデータのハッシュがロックスクリプト内で提供されるハッシュ値と等しいかどうかをテストするよう構成されるスクリプト片を含む。署名に対する要件は、例えば上述のCheckSigにより課される。実施形態では、第1条件が、Aliceの署名がTxpのアンロックスクリプトに含まれることを要求しない.Bobにより署名される必要のあるTxpの部分は、Txpのアンロックスクリプトの設定であってよく(例えば、SIGHASHフラグにより指定される)、又は固定されてよい。いずれの方法も、少なくともアンロックスクリプトを除く。従って、Txpのアンロックスクリプトは適応性がある。
実施形態では、第2条件は、Tx1、この場合にはターゲットトランザクションの第2バージョンTxp’、をアンロックしようとするトランザクションのアンロックスクリプトが、自身のアンロックスクリプト内にBobの暗号署名及びAliceの暗号署名の両方を含むことを要求する。ここでも、これは例えばCheckSigにより課される。実施形態では、第1条件が、データペイロードがTxp’のアンロックスクリプトに含まれることを要求しない。Alice及びBobにより署名される必要のあるTxp’の部分は、Txp’のアンロックスクリプトの設定であってよく(例えば、SIGHASHフラグにより指定される)、又は固定されてよい。
第0(つまりソース)トランザクションTx0は、Alice、Bob、又は第三者により生成されてよい。それは、標準的に、AliceがTx0のインプット内に定義された量を取得した先行するパーティの署名を要求する。それは、Alice、Bob、先行するパーティ、又は別の第三者によりネットワーク106へ送信されてよい。
第1(つまり中間、条件付き)トランザクションTx1も、Alice、Bob、又は第三者により生成されてよい。実施形態では、それはAliceの署名を要求するので、それはAliceにより生成されてよい。代替として、それは、Bob又は第三者によりテンプレートとして生成され、次に署名のためにAliceへ送信されてよく、例えばサイドチャネル301を介して送信される。Aliceは、次に、署名付きトランザクションをネットワーク106へ彼女自身で送信し、又はそれをBob若しくは第三者へ送信してそれらをネットワーク106へ転送し、又は単に彼女の署名をBob若しくは第三者へ送信して、署名付きTx1に構成してネットワーク106へ転送できる。ここでも、Tx1をネットワーク106へ送信する前の任意のオフチェーン交換は、サイドチャネル301を介して実行されてよい。
第2の(つまり、ターゲット又は支払い)トランザクションTxp/Txp’のいずれのバージョンも、Alice、Bob、又は第三者により生成されてよい。第1バージョンはBobの署名及び/又はデータを要求するので、Bobにより生成されてよい。代替として、それは、Alice又は第三者によりテンプレートとして生成され、次に、署名し及びデータを追加するためにBobへ送信されてよく、例えば、サイドチャネル301を介してBobへ送信される。Bobは、次に、署名付きトランザクションをネットワーク106へ彼自身で送信し、又はそれをAlice若しくは第三者へ送信してそれらをネットワーク106へ転送し、又は単に彼の署名をAlice若しくは第三者へ送信して、署名付きTxpに構成してネットワークへ転送できる。実施形態では、第2バージョンは、Bob及びAliceの両方の署名を必要とする。従って、それは、Alice又はBobによりテンプレートとして生成され、彼らの署名を追加するためにテンプレートとして他方へ、例えばここでもサイドチャネル301を介して送信されてよい。代替として、それは、第三者によるテンプレートとして生成され、次にAliceへ送信され得る。ここで、Aliceは、彼女の署名を追加し、Bobの署名を追加するためにBobへ転送得る。Bobは、次に、署名付きトランザクションをネットワーク106へ転送するか、又はAlice若しくは第三者がネットワーク106へ転送するように、彼らへ返送する。或いは、Txp’は、第三者によりテンプレートとして生成され、次にBobへ送信され得る。ここで、Bobは、彼の署名を追加し、Aliceの署名を追加するためにAliceへ転送する。Aliceは、次に、署名付きトランザクションをネットワーク106へ転送するか、又はBob若しくは第三者がネットワーク106へ転送するように、彼らへ返送する。更なる変形では、Alice及び/又はBobは、受信したトランザクションテンプレートに署名し、彼らの署名を他のパーティのうちの1つへ返し、該パーティがTxp’へと構成して、ネットワーク106へ転送する。ここでも、Txp及び/又はTxp’をネットワーク106へ送信する前の任意のオフチェーン交換は、サイドチャネル301を介して実行されてよい。
トランザクションの異なる要素が生成され構成され得る種々の位置があり、それが直接に又は間接的にP2Pネットワーク106の最終的な宛先へと送信される種々の方法があることが理解される。開示の技術の実装の範囲は、これらのいずれに関しても限定されない。
「Aliceにより」、「Bobにより」、及び「第三者により」のような語句は、本願明細書では、それぞれ「Aliceのコンピュータ機器102aにより」、「Bobのコンピュータ機器102bにより」、及び「第三者のコンピュータ機器102により」の短縮表現として使用されることがある。また、所与のパーティの機器は、該パーティにより使用される1つ以上のユーザ装置、又は該パーティにより利用されるクラウドリソースのような幾つかのサーバリソース、又はそれらの任意の組合せを含み得ることに留意する。それは、必ずしも動作が単一のユーザ装置上で実行されることに限定しない。
ターゲットトランザクションTxpのアンロックスクリプトは適応性があるので、実施形態では、ターゲットトランザクションの第2バージョンTxp’は第1バージョンTxpを適応することにより、つまりTxpの既存のデータ構造を取り入れ、及びそれを変更して第2バージョンTxp’を形成することにより、この場合にはロックスクリプトを適応することにより、生成されてよい。これは、スクリプトレベルの適応性の例である。等価な変形ではしかしながら、Txp’は、アンロックスクリプトが異なることを除き同じ構造を有するターゲットトランザクションの新しいバージョンを生成することにより、生成されてよい。「更新する」は、本願明細書では、既存の構造を適応する又は新しい置換バージョンを生成する可能性を記述するために一般的な用語として使用されてよい。適応は、種々の実施形態に関連して、本願明細書において例として言及され得るが、これはターゲットトランザクションおn新しいバージョンをスクラッチから生成することにより置き換えることができることが理解される。いずれの方法も、新しいバージョンの適応又は生成は、Alice及び/又はBobにより、及び/又はAlice及び/又はBobの署名が与えられれば第三者により、実行されてよい。
幾つかの実施形態では、Tx1のロックスクリプトは、第1及び第2条件の両方に対する代替として、第3アンロック条件を含んでよい。第3条件は、ロックタイムが終了すること、及びAliceの署名がターゲットトランザクションの第3バージョンTxp’’のアンロックスクリプトに含まれることを要求してよい。これは、(例えば、Bobが処理に全く従事しないため又は時間制限内にそうすることに失敗したために)Bobが第1及び第2条件のいずれかに基づき請求しない場合に、AliceがTx1のアウトプットからの彼女の支払いの返金を請求することを可能にする。ロックタイムは、絶対的時点、又は例えば秒で計測される経過すべき時間期間、又はマイニングされるブロック数として定義されてよい。
例示的な使用例1-Bobのためのセキュリティ
上述のように、実施形態では、Tx1で、第1条件(i)は、Bobの署名及びデータペイロードがTxpのアンロックスクリプトに含まれることを要求するが、Aliceの署名を要求しない。第2条件(ii)は、Alice及びBobの両方の署名を要求するが、データペイロードがTxp’のアンロックスクリプトに含まれることを要求しない。
上述のように、実施形態では、Tx1で、第1条件(i)は、Bobの署名及びデータペイロードがTxpのアンロックスクリプトに含まれることを要求するが、Aliceの署名を要求しない。第2条件(ii)は、Alice及びBobの両方の署名を要求するが、データペイロードがTxp’のアンロックスクリプトに含まれることを要求しない。
つまり、Aliceが、彼女に何らかのサービスを提供する、例えば彼女のために何らかのDIYを行う、何らかの商品を提供する、何らかの相談サービスを提供する、等のためにBobに支払いたいとする。Aliceは、アウトプット(上述の例を参照するとTx1のアウトプット0)内にサービスに対する支払いを含む第1(中間)トランザクションTx1を生成する。彼女はこれをサイドチャネル301を介してBobへ送信する。代替として第1トランザクションは、Bob、又は第三者により生成され得る。それは、この段階で、Alice、Bob、又は第三者により、ブロックチェーン150に記録されるためにネットワーク106を介して伝播されるよう、送信され得る。或いは、それは、それら3つのパーティのうちのいずれかにより、後に、第2のターゲットトランザクションTxp/Txp’と同時に、又はターゲットトランザクションの後に、ネットワーク106へ送信され得る。
Aliceは、サイドチャネル301を介してBobへ、ターゲットトランザクションの第1バージョンTxpも、Bobのためのテンプレートとして署名し及びデータペイロードを追加するために送信する(又はペイロードはAliceにより含まれ得る)。代替として、ターゲットトランザクションの第1バージョンは、Bobにより、又は第三者によりBobが署名し彼のデータペイロードを追加するためのテンプレートとして生成され得る(又は第三者がペイロードを含め得る)。Bobは、ターゲットトランザクションの第1バージョンTxpのコピーを、少なくとも第2バージョンTxp’が取得されるまで、保持する。或いは、代替として、第1バージョンTxpは、Bobの署名及びデータが与えられれば、Bobの代わりに第三者により保持され得る。
ターゲットトランザクションTxpは、最初に、データペイロードを含み、従って、Aliceの署名を必要としないが、データペイロードがアンロックスクリプトに含まれている場合にのみ、Bobにより(又はBobを代表して)一方的に償還可能である。これは、マイニングされるのにより費用がかかり、及び/又はBobのプライベートな又は独自のデータを危うくする可能性がある。従って、Bobは、Aliceを幸せに保ち、彼女に、彼女の署名を含むターゲットトランザクションの第2の、更新バージョンTxp’を提供すること(又はBob又は第三者がターゲットトランザクションTxp’へと構成する彼女の署名を送信する)を望む。これは、ターゲットトランザクションTxp’にデータペイロードを含む必要を伴わずに、BobがTx1のアウトプットを償還することを可能にする。しかしながら、Bobがサービスを提供するが、Aliceが合意を破った、又はサービスの満足のいく提供に論争がある場合、Bobは、データペイロードがターゲットトランザクションTxpに含まれることを要求するあまり好ましくない第1条件に基づき、Tx1のアウトプットを償還するというフォールバックを依然として有する。
BobがAliceのためにサービスを達成すると、Aliceが誠実でありサービスに満足するならば、彼女は彼女の署名を提供する。ターゲットトランザクションの第2バージョンTxp’は、Alice及びBobの両方の署名を要求する。Bobは、Aliceが彼女の署名により署名することにより(及び依然として存在する場合にはデータを除去することにより)適応するために、データペイロードと共に又はそれを有しないで第1バージョンTxpをAliceへサイドチャネル301を介して送信してよい。或いは、Bobは、Aliceが第2バージョンTxp’に構成するために、単に彼の署名をAliceへサイドチャネル301を介して送信してよい。Aliceは、次に、P2Pネットワーク106を通じて伝播されブロックチェーン150に記録されるように、このバージョンを送信してよい(時に、ネットワーク106へトランザクションを「ブロードキャストする」又は「発行する」として表される)。代替として、Aliceは、ターゲットトランザクションの完全な第2バージョンTxp’を、サイドチャネル301を介してBobに返して、Bobがネットワーク106へブロードキャストするように、又はそれを第三者へサイドチャネルを介して送信して第三者がブロードキャストするようにしてよい。別の例として、Aliceは、第1又は第2バージョンに基づき彼女の署名を生成し(それらの間の唯一の差分は、適応可能な部分にある)、単に彼女の署名をBobへサイドチャネル301を介して送信する。Bobは、彼の署名と共にAliceの署名を、ターゲットトランザクションの完全な第2バージョンTxp’へと構成し、ネットワーク106へブロードキャストするか、又は第三者へサイドチャネルを介して送信して第三者がブロードキャストする。或いは別の代替では、Alice及びBobの両者は、彼らの署名を第三者へサイドチャネルを介して送信し、第三者がターゲットトランザクションの完全な第2バージョンTxp’へと構成し、ネットワーク106へブロードキャストする。
第1トランザクションTx1及び実際にはソーストランザクションも、ブロックチェーン150に記録するために、ネットワーク106へブロードキャストされる必要がある。これは、それらが何らかの段階で最終的に検証される限り、任意のパーティにより任意の時点で行われ得る。
第1条件がAliceの署名を要求しないという事実は、Aliceが彼女の署名により彼女の認可を提供しない場合でも、Bobが、Tx1のアウトプットの中で定義された量を、ターゲットトランザクションの第1バージョンTxpを用いて第1条件に基づき自動的に償還できることを意味する。しかしながら、データペイロードを含むという要件は煩わしい。マイナー104Mは、マイニングのためにトランザクションを受け入れるためにマイニング手数料を要求する。手数料が十分ではない場合、トランザクションが有効であっても(有効性及び受け入れ可能性は、別個の概念である)、彼らはブロック151へとマイニングするためにトランザクションを受け入れない。代替又は追加で、対象となるデータは、Bobにとって秘密、機密、又は独自であってよい。その結果、データをブロックチェーン150に発行することは、Bobに別の形式のペナルティを提示し得る。従って、Bobは、Aliceの署名を取得しようとするために、及びターゲットトランザクションの第2バージョンTxp’を用いて好ましい第2条件に基づきTx1を償還するために、良好なサービスを提供することを動機付けられる。しかしながら、Aliceが違反した場合、Bobは、ターゲットトランザクションの第1バージョンTxpを用いて、あまり好ましくない第1条件に基づき、依然としてTx1を償還できる。従って、第1バージョンTxpは、Bobにとって一種の抵当又はデポジットとして機能する。
Tx1がAliceにより形成された場合でも、Tx1のロックスクリプト内の第1条件の中の要件は、データペイロード自体がTx1のロックスクリプトに含まれること又はAliceに知られることを要求しないことに留意する。むしろ、それは、(ノード104においてハッシングされるとアンロックスクリプト内のハッシュ値と一致するデータを提供するために、Txpのアンロックスクリプトをチャレンジするスクリプトと一緒に)データペイロードのハッシュがTx1のロックスクリプトに含まれることを要求するだけである。従って、Alice又は第三者がTx1を形成する場合でも、Bobは、彼らに彼のデータのハッシュを与えればよく、データ自体を与える必要がない。彼がデータを発行しなければならないのは、彼がターゲットトランザクションの第1バージョンTxpをチェーンに発行した場合のみである。
例示的な使用例2-ストリーミング
図7を参照すると、例えばAliceはBobからの何らかのデータをストリーミングするために支払いたいと望む。データは、BobからAliceへ「チャンク毎に」、つまり部分D0,D1,D2,等のシーケンスで、転送される。これらは、例えば、AliceがBobからストリーミングしているメディアコンテンツのアイテムの部分であってよく、例えば映画のようなビデオトラック及び/又は音楽のようなオーディオトラックを含む。ビデオは、任意の時間と共に変化する画像又はグラフィック、例えば映画、TV番組、スライドショー、又は他のそのようなシーケンス若しくは静止画像、アニメーションベクトルグラフィック、及び/又はゲームコンテンツを含んでよい。オーディオは、サンプリングされたオーディオ及び/又は合成されたオーディオを含み、会話、音楽、ノイズ、及び/又は効果、等を含み得る。別の例では、以下の技術は、「彼女が支払う限り(pay as she goes)」Aliceにサービス、例えば、ガス、電気、又は水道のような生活必需サービスの提供、又は車両、不動産、又は他の物理的オブジェクトのレンタル、を可能にするために使用され得る。サービスに対する支払いの場合には、データ部分が所望のコンテンツ自体の部分である代わりに、各データ部分D0,D1,D2等は、サービスのユニットをアンロックするために必要な異なるそれぞれの鍵を含む。例えば、Aliceのガス、電気、又は水道供給は、彼女のコンピュータ機器102aに接続されるスマートメータにより支配される。それぞれの受信した鍵により、彼女は、これを彼女のコンピュータ機器102aから彼女のメータへと供給する。これは、それぞれの鍵を検証することに応答して、生活必需サービスの別のユニットをアンロックする。
図7を参照すると、例えばAliceはBobからの何らかのデータをストリーミングするために支払いたいと望む。データは、BobからAliceへ「チャンク毎に」、つまり部分D0,D1,D2,等のシーケンスで、転送される。これらは、例えば、AliceがBobからストリーミングしているメディアコンテンツのアイテムの部分であってよく、例えば映画のようなビデオトラック及び/又は音楽のようなオーディオトラックを含む。ビデオは、任意の時間と共に変化する画像又はグラフィック、例えば映画、TV番組、スライドショー、又は他のそのようなシーケンス若しくは静止画像、アニメーションベクトルグラフィック、及び/又はゲームコンテンツを含んでよい。オーディオは、サンプリングされたオーディオ及び/又は合成されたオーディオを含み、会話、音楽、ノイズ、及び/又は効果、等を含み得る。別の例では、以下の技術は、「彼女が支払う限り(pay as she goes)」Aliceにサービス、例えば、ガス、電気、又は水道のような生活必需サービスの提供、又は車両、不動産、又は他の物理的オブジェクトのレンタル、を可能にするために使用され得る。サービスに対する支払いの場合には、データ部分が所望のコンテンツ自体の部分である代わりに、各データ部分D0,D1,D2等は、サービスのユニットをアンロックするために必要な異なるそれぞれの鍵を含む。例えば、Aliceのガス、電気、又は水道供給は、彼女のコンピュータ機器102aに接続されるスマートメータにより支配される。それぞれの受信した鍵により、彼女は、これを彼女のコンピュータ機器102aから彼女のメータへと供給する。これは、それぞれの鍵を検証することに応答して、生活必需サービスの別のユニットをアンロックする。
Bobの支払いがそれまでに受信されたデータ部分の数に比例するように、データの部分をストリーミングすることが望ましいことがある。これを行うために、各データ部分D0,D1,D2…がBobから受信されることに応答して、Aliceは、それぞれの署名付きトランザクションTx1,Tx2,Tx3…をBobへ、サイドチャネル301を介して返すことができる。これは、Bobがデータの送信を停止した場合、Aliceは単に支払いの送信を停止できること、及びAliceが支払いの送信を停止した場合、Bobは単にデータの送信を停止でき、Aliceが支払っていないデータDの1つより多くの部分を提供しないことを意味する。
しかしながら、ストリーミングされているそれぞれの個別のデータ部分D0,D1,D2等について個別のトランザクションをネットワーク106にブロードキャストしブロックチェーン150に記録することはネットワーク輻輳を増大しブロックチェーン150を膨大にし得るので、そうする必要がない方法でこれを行うことも望ましい。
これを解決するために、AliceがBobからそれぞれ受信する各データ部分D0,D1,D2…に応答して、AliceがBobへ返送する各トランザクションTx1,Tx2,Tx3…は、同じソーストランザクションTx0の同じアウトプット(例えば、同じUTXO)を指す第1トランザクションの異なるインスタンスである。第1トランザクションの量はその都度増大するので、Bobは、特定の定義されたシーケンスの終わりにある最後のもの、例えばオーディオまたはビデオトラックの終わり(例えば、映画の終わり)、又はサービスの指定された期間(例えば、1時間、1日、1週間、又は1月に1回)のアウトプットを請求するだけである。これは、以下に更に図7を参照して更に詳細に説明される。
第1に、BobがAliceからの支払いを得たままデータを送信しないことにより騙すことができないように、第2に、Aliceがデータを受信してBobに支払わないことにより騙すことができないように、部分をストリーミングすることも望ましい。
実施形態では、第1トランザクションの各インスタンスは、そのインプットによりポイントされるより多くの合計デジタルアセット量を有する複数のアウトプットを有する。これは、トランザクションが、誰かが、実際にはBobが彼自身の別のインプットを追加して差分を補うまで、有効ではないことを意味する(インプットレベルの適応性の例)。これは、Aliceがシーケンスの中で前のトランザクションを発行するのを止め、これはBobが後のトランザクションを発行するのを阻止する。これは、従って、映画全体等に対してデポジットとして機能する初期資金(funding)トランザクションを有しないでストリーミングを可能にする。これは、以下に図8を参照して更に詳細に議論される。
ストリーミング方法を実施するために、Alice及びBobは、彼らの間にオフチェーンサイドチャネル301を確立する。つまり、このチャネルを介して送信されるトランザクションは、ブロックチェーン150に記録するために(未だ)P2Pネットワークに発行されていない。これは、本願明細書で「微細支払いチャネル」とも呼ばれる支払いチャネルの変更された形式として使用される。更に、Bobは、Aliceにシーケンス内のデータ部分D0,D1,D2…のハッシュセットを利用可能にする。例えば、Bobは、Aliceにハッシュセットを支払いチャネル301を介して送信してよく、又はインターネット101等のサーバからアクセスするためにそれを公に利用可能にしてよい。ハッシュセットは、Alice自身がデータ自体を予め知る必要がなく、Aliceがデータのハッシュチャレンジを生成することを可能にするハッシュのセットを含む。例えば、ハッシュセットは、マークル(Merkle)ツリーとしても知られるハッシュツリーを含んでよい(用語「マークルツリー」は、本願明細書で、その最も広義の意味で使用され、任意のハッシュツリーを意味し、例えば必ずしもバイナリブランチに限定されないことに留意する)。代替として、ハッシュセットはハッシュチェーン又はハッシュリストを含み得る。
Bobは、Aliceに第1データ部分D0を支払いチャネル301を介して送信することにより開始する。この第1部分は無料で又は信頼して送信される。Aliceが支払わない場合、Bobは第1部分のデータ価値より多くを失わない。Aliceが継続を望むとすると、D0を受信することに応答して、彼女は、Bobに第1トランザクションの第1インスタンスTx1を支払いチャネル301を介して送信する。これに応答して、Bobは、Aliceにシーケンスの中で次のデータ部分を送信し、次に、これに応答して、AliceはBobに第1トランザクションの第2インスタンスTx2を送信し、次に、BobはAliceにD2を送信し、AliceはBobにTx2を送信し、以下同様であり、全ては支払いチャネル301を介する。第1トランザクションの各インスタンスTx1,Tx2,Tx3…は、Bobへの増大する、例えばそれまでに受信したデータ部分Dの数と共に線形に増大する支払いを指定する。しかしながら、第1トランザクションの各インスタンスTx1,Tx2,Tx3…は、Aliceの同じUTXOを指す。従って、Bobは、第2の、ターゲットトランザクションの有効なインスタンスTxp/Txp’を構成し、それらのうちの1つからの支払いを請求するだけでよい(同じUTXOを2回償還しようとする試みは、無効であるとしてネットワーク106により拒否されるだろう)。全てが上手く行くとすると、Bobは、従って、シーケンスの中の第1トランザクションの最後のインスタンスからの支払いを請求する、ターゲットトランザクションのバージョンを生成する。
実施形態では、第1トランザクションの各インスタンスTx1,Tx2,Tx3…又は最後のインスタンスTxnは、(例えば図5を参照して)上述したように、該トランザクションのアウトプットの中で、Aliceからの支払いを償還するための複数の代替条件を定義する。この場合、シーケンスの中の最後のデータ部分DnのAliceの肯定応答と共に、彼女は、ターゲットトランザクションの第2バージョンTxp’も提供するか、又は少なくとも彼女の署名を提供して、BobがTxp’を構成できるようにする。これは、Bobが、Bobにペナルティを課す第1条件ではなく、好ましい第2条件に基づき、完全なシーケンス(例えば、映画全体)に対する支払いを請求することを可能にする。Bobが部分Dのストリーミングを停止し、Aliceが不満である場合、彼女は、必要に応じて第2条件を満たすために彼女の署名を提供しなくてよい。従って、Bobは、第1のあまり好ましくない条件に基づき支払いを請求できるだけである。他方で、Aliceが、不満ではないが、途中で更なる部分を要求することを止めた場合(例えば、彼女が単に映画を観るのを止めることを選んだ)、第1トランザクションのインスタンスの各々Tx1,Tx2,Tx3…がそれまでに複数の代替条件を含んでいるとすると、Aliceは、Txp’又は彼女の署名を提供してよく、Bobが、好ましい第2条件に基づき、それまでのシーケンスに対する支払いを請求できるようにする。
第1トランザクションのインスタンスTxi、i=1,2,3…は、異なるメッセージに対して共通のUTXOを使用するが、複数の署名を使用する。従って、この文脈におけるインスタンスは、(以下に議論する)トランザクションのインスタンスとしての、Aliceからのデータに対するそれぞれの「要求」を表す。これは、値及び要求されたデータを変えることが署名済みメッセージを変えるからである。
第2トランザクションのバージョンTxp/Txp’は、同一のメッセージに対して、共通のUTXOを使用するが、複数の署名を使用する。従って、この文脈では、バージョンは、「適応されていない」及び「適応された」形式のトランザクションを、トランザクションのそれぞれのバージョンとして表す。これは、スクリプトレベルの適応が署名済みメッセージを変更しないからである。
注:どのパーティが第1トランザクションTx1…を生成し及び/又はブロードキャストするかに関して先に議論した変形、及びターゲットトランザクションの第1及び第2バージョンTxp/Txp’のいずれかもここで適用されてよい。例えば、第三者は、Alice又はBobの代わりにこれらのうちの一部又は全部を生成し及び/又はブロードキャストし得る。或いは、Bobが、ブロードキャストするためにTxp/Txp’をネットワークへ彼自身で送信するか又はAliceへ送信するか、彼の署名をAliceへ送信してAliceがターゲットトランザクションTxp/Txp’を構成するようにしてよい、等である。簡潔さのために、これらの種々のオプションは、ここで再び完全に繰り返されない。
例として、映画産業を考える。スクリプトサイズ限度は、執筆時点で10キロバイトである。従って、映画毎に、多数の8キロバイト部分に分割できる。他の制約がある場合、部分のサイズは更に小さくてよく、或いは、スクリプトサイズの限度が増大される場合、更に大きくてよい。部分が定義されると、次に、マークルツリーが構成でき、ルートハッシュが、映画タイトルと一緒に公にリストされる。
簡単のために、議論は、マイニング手数料が暗示的に適用されるとする。明示的インプットが明示的アウトプット及び暗示的トランザクション手数料をカバーしない場合、別の暗示的インプットが存在得るとする。
Aliceは、Bobから映画を購入しようとしている。映画は、n+1個の小さなデータパックD0,...,Dn、及びルートハッシュHrootを有するそれらのマークルツリーTにより定義される。方法は、AliceからBobへの一連のトランザクションTX1,TX2,...,TXnを構成する。各トランザクションTXiは、Diに対する要求、及びDi-1の受信の肯定応答に対する。理想的には、支払いチャネル301が正しく閉じられるとき、AliceからBobへの支払いを達成するために、2つのトランザクションTX'n及びTX'pのみが発行される。このシナリオは、図7に示される。図7は、使用例2におけるAliceとBobとの間の支払いチャネル301のシーケンス図である。BobからAliceへの1つの初期メッセージがあり、次に各データパケットについてn個のメッセージペアが続き、チャネルを閉じるための2つの最終メッセージがある。
第1ラウンド-Aliceの番:
最初に、Bobは、Aliceに、D0、及び期待されるデータパックを含む完全なマークルツリーを送信する。Aliceは、ルートハッシュが実際に彼女の選択した映画タイトルに属することをチェックし、D0のマークルパスを検証する。Aliceが受信したデータに満足すると、彼女は、彼女がTX1を受信したことの肯定応答をするために、及びD1を要求したいと思い、TX1を構成し得る。このトランザクションは以下の形式をとり得る:
最初に、Bobは、Aliceに、D0、及び期待されるデータパックを含む完全なマークルツリーを送信する。Aliceは、ルートハッシュが実際に彼女の選択した映画タイトルに属することをチェックし、D0のマークルパスを検証する。Aliceが受信したデータに満足すると、彼女は、彼女がTX1を受信したことの肯定応答をするために、及びD1を要求したいと思い、TX1を構成し得る。このトランザクションは以下の形式をとり得る:
このインスタンスの例は図9に示される。この単一のトランザクション設計は、3つの意図される機能を有する。トランザクション内の幾つかのフィールドに追加の含意を割り当てることにより、データトレードシナリオにおいて必要な複数のメッセージを、たった1つのトランザクションテンプレートにより置き換えることが可能である。Sig(PA,Tx1)は、前のデータパックが受信され及び満足のいくものであることを肯定応答する署名である。OP_DUP OP_SHA256 <H(D1)> OP_EQUALは、次のデータパックを求める要求である。500ユニットが、次のデータパックのために支払われる。
Tx1の(1又は複数の)インプットは、少なくともインプット0を含む。これは、Aliceに対してロックされた前のトランザクションTx0のUTXOへのポインタを含む。該UTXOは、Tx1のアウトプット0より大きい(例えば2000ユニット)額である(以下を参照)。Tx1のインプット0は、インプットのアンロックスクリプトの中にAliceの署名、及び他のパーティがインプットを追加できるようにするフラグも(「ANYONECANPAY」)含む。
Tx1の(1又は複数の)アウトプットは、少なくともアウトプット0を含む。これは、Tx1のインプット0より少ない、(最初の)少額の(例えば500ユニットの)デジタルアセットを指定する。Tx1のアウトプット0は、以下の条件のうちのいずれかによりこれをアンロック可能にするロックスクリプトも含む;
(i)後続のトランザクションTxpのインプット内のアンロックスクリプトが、D1及びBobの署名を含む;
(ii)後続のトランザクションTxp’のインプット内のアンロックスクリプトが、Aliceの署名及びBobの署名を含む;或いは、
(iii)タイムアウト限度が経過し、後続のトランザクションのインプット内のアンロックスクリプトがAliceの署名を含む。
(i)後続のトランザクションTxpのインプット内のアンロックスクリプトが、D1及びBobの署名を含む;
(ii)後続のトランザクションTxp’のインプット内のアンロックスクリプトが、Aliceの署名及びBobの署名を含む;或いは、
(iii)タイムアウト限度が経過し、後続のトランザクションのインプット内のアンロックスクリプトがAliceの署名を含む。
条件(i)に関し、BobがAliceにハッシュツリーとも呼ばれるマークルツリーを送信しているので、Aliceは、どんなデータ部分が期待されるかを知っている。これは、彼女に、D1のハッシュを決定させる。これは、彼女がハッシュチャレンジによりこの条件を含めるのに十分である(Tx1のロックスクリプトは、D1のハッシュと、ハッシングされるとTxp,のインプットのアンロックスクリプト内で提示された値がロックスクリプト内の値と一致することをチェックする何らかのコードを足したものを含む)。この条件は、BobがAliceの署名を有しないで支払いを請求したい場合、彼がブロックチェーン150にD1をアップロードしなければならないことを意味する。D1は彼独自のデータであるので、更にD1のサイズは高いマイニング手数料を生じるので、彼はそうすることを好まない。この同じ技術は、後続のデータ部分D2,D3等にも使用できる。
条件(ii)は、代わりにBobがAliceに彼女の署名を与えさせる場合には、彼はデータをアップロードする必要なく、支払いを請求できる。しかしながら、彼は未だそうすることを望まないとする。
条件(iii)は任意である。それは、Bobが特定の指定されたタイムアウト期間の後に何らかの理由で請求しない場合に(例えば、Bobが処理に関与しない)、Aliceに、Tx1のアウトプット0内の量の返還を請求する能力を与える。720ブロックの特定のタイムアウト値は単なる例であることが理解される。より一般的には、タイムアウト期間は、ブロック数、又は秒のような人間の時間で定義されてよく、任意の値に設定されてよい。絶対的な時間点で終了する、又は経過時間量として定義され得る。
Tx1も、任意的に、1つ以上の更なるアウトプットを含んでよい。実施形態では、これらは、アウトプット1及びアウトプット2を含む。アウトプット1は、インプット量に等しく、Alice(Aliceの変更)に対してロックしているデジタルアセットの額を定義するスクリプトを含む。例えば、これは、2000-500ユニット=1500ユニットである。
アウトプット2はアウトプット1に等しく、Bob(「アウトプット1内のAliceのお釣り(change)と同じようにBobに支払う」)に対してロックしているデジタルアセットの額を定義するスクリプトを含む。この効果は、差分を構成するために誰か他の者が(実際にはBobしかいないだろう)彼自身の別のインプット1をTx1に追加しない限り、合計出力(例えば500+1500+1500ユニット=3500ユニット)が、常に入力より大きいことである。
アウトプット2は、AliceがBobの承認なしにトランザクションを公開することを防ぐために設計されたトリックである。支払人として、Aliceは、最初にTX1をブロードキャストする動機がない。しかしながら、数ラウンドの後、AliceがBobにより多くを支払う他のトランザクションが存在するとき、Aliceは、Bobが彼の支払いを請求するために後のインスタンスを使用する前に、TX1を用いてそれをネットワーク106へブロードキャストすることにより、それらを無効にし得る。アウトプット2を含むことにより、Bobがアウトプットとインプットとの間の不足額をカバーするために彼自身のインプット(インプット1)をTX1に追加するまで、TX1は、有効にならない。AliceがSIGHASHフラグ「ALL|ANYONECANPAY」を使用するので、Bobは追加のインプットを追加できる。結果として、TX1は、Bobによってのみブロードキャストされる可能性がある。Aliceは、Tx1を有効にするために必要な追加インプットを追加したくない。何故なら、これは、彼女がシステムを騙さない場合には、彼女により多くの費用がかかるからである。
Aliceのお釣りは、Aliceのインプット(インプット0)の値から、Bobの支払い(アウトプット0)の値を差し引いたものでると定義される。図8のグラフが示すように、Bobの保険金(アウトプット2)は、最後のデータ部分が送信される前は、合計アウトプット(破線)が常にインプットより大きいことを保証する。
より一般的には、Tx1の合計アウトプット値が合計インプット値より大きい、従って、Tx1のアウトプット0を請求するためにBob自身のインプットを追加するようBobに要求し、及びAliceがTx1をブロードキャストする動機をなくす状況を作り出すために、アウトプットの他の組合せが使用され得る。
第1ラウンド-Bobの番:
Bobは、トランザクションTX1を受信すると、単にAliceへD1を送信する。Bobは、TX1内の支払いを請求し得るので、Aliceからの支援を有しないで、以下を行うことにより、これを安全に行うことに留意する。先ず、Bobは、TX1内のアウトプット2の値をカバーするためにアウトポイント(TxIDB,vout=0)を使用して、彼自身のインプットを追加することにより、TX1'を生成する。次に、Bobは、支払いを請求するために別のトランザクションTXpを生成する。
Bobは、トランザクションTX1を受信すると、単にAliceへD1を送信する。Bobは、TX1内の支払いを請求し得るので、Aliceからの支援を有しないで、以下を行うことにより、これを安全に行うことに留意する。先ず、Bobは、TX1内のアウトプット2の値をカバーするためにアウトポイント(TxIDB,vout=0)を使用して、彼自身のインプットを追加することにより、TX1'を生成する。次に、Bobは、支払いを請求するために別のトランザクションTXpを生成する。
Bobは、次に、両方のトランザクションをネットワーク106へブロードキャストしてよい。しかしながら、Bobはトランザクション内でD1を開示しなければならないので、Bobにとってこれは理想的な状況ではない。これは、チャネルの想起閉鎖であると考えられる。しかしながら、Aliceが正しい手順に従い支払いチャネルを閉じる場合(後述する)、Bobはこれを行う必要がない。
第2ラウンド-Aliceの番:AliceがD1を受信しコンテンツに満足すると、彼女は、次のデータパックのために以下のトランザクション内を構築する。このトランザクションは、D1を受信したことの肯定応答とも考えられる。
TX1及びTX2を比較すると、D1がD2に変更され、アウトプット0の値が500ユニットのデジタルアセットから1000ユニットへと増大されている。これらの2つの変更の結果として、他のアウトプットは異なる値を有する(Aliceが同じ未使用アウトポイントを使用しているとする)。更に、これらの変更はトランザクションの適応性のある部分には行われないので、AliceはTX2のための新しい署名を生成しなければならない。
第2ラウンド-Bobの番:
BobはTX2を受信すると、単にAliceへD2を送信する。
BobはTX2を受信すると、単にAliceへD2を送信する。
Bobは、第1ラウンドと同じ方法でAliceの支援を有しないで支払いを請求できるので、前の同じように、これを安全に行う。Bobは、ここでも、TX2内のアウトプット2をカバーするために、ここでも(TxIDB,vout=0)から彼自身のインプットを追加し、TX2'内を生成する。Bobは、支払いを請求するために別のトランザクションTXpも生成する。
Bobは、次に、両方のトランザクションをネットワークへブロードキャストしてよい。
AliceとBobが協力してチャネルを閉じる場合、Bobは、第1ラウンドで説明したようにこれを行うことを回避できる。
最終ラウンド-Bobの番:
Bobは、最終データパックDnにより応答する。
Bobは、最終データパックDnにより応答する。
チャネルの閉鎖:支払いチャネルを閉じるために、AliceとBobとの間に幾つかの相互作用がある。Alice又はBobのいずれかは、チャネル301を閉じる彼らの意図を、他方へシグナリングできる。一般性を失わずに、BobからAliceへ送信される最後のデータパックがDnであるとする。Bobは、Dnを要求するトランザクションTXnを見付け、アウトプット2をカバーするために彼自身のインプットを追加して、TXn'を生成する。Bobは、以下のようにTXpを生成する。
Bobは、両方のトランザクションTXn’及びTXpを、支払いチャネル301を介してAliceへ直接送信する。Aliceは、TXn’及びTXpのインプットが彼女の期待通り実際に関連するかをチェックする。Aliceは、TXpに署名し、Dnを彼女の署名で置き換えて、TXp'を生成する。
AliceはBobにTXp'を送信する。Bobは、TXn’及びTXp'をネットワーク106へブロードキャストする。代替として、Aliceは、TXn’及び/又はTXp'をブロードキャストするか、又はAlice及びBobの代わりにブロードキャストするようそれらの一方又は両方を第三者へ送信し得る。Aliceは、いつでもチャネルを閉じることを選択できることに留意する。
図7に、以下の2つの方法を示す:(A)チャネルが、トランザクションのベアをブロードキャストすることによりBobにより一方的に閉じられる;及び(B)ペアを形成する2つのトランザクションが、チャネルの閉鎖のときに両方ともブロードキャストされ、チャネルがネットワーク106と通信することなく実質的に「開放された(opened)」オフチェーンであることを示す。
シーケンスを再生するために、Tx1に応答して、Bobは、D2をAliceに送信する。AliceがBobに肯定応答するためにTx2を送信し、次に、BobはD3等を送信する。Tx2は、Tx1と同じであるが、D1がD2で置き換えられ、アウトプット0の量が増大されている。Tx3では、D2はD3で置き換えられ、ここでもアウトプット0の量が増大される。実施形態では、アウトプット0の量は、iと共に、つまり各チャンク及び肯定応答で送信されるTxと共に、線形に増大する。代替として、例えば、シーケンスを完了する更なる動機を与えるようシーケンスの終わりに向けてより高い重みを与えるために、別の増大する関係が使用されることは排除されない。
Bobは、基準(ii)に基づき、Tx1…Txiのうちのいずれか1つを一方的に請求できる。これを行うために、Bobは、それを適応してTxi’を生成する。適応は、Bobのデジタルアセットの一部のインプットを追加して、差分を構成し、次に、Txi.を使用するために自身のインプットの中にDiを含む別のトランザクションTxpを生成することを含む。Txpは、Bobに対して条件付きでロックされている。Bobは、彼のインプットを追加し、先のトランザクションTx1又はTx2、等のうちの1つを使用し得るが、そうする価値はない。彼は、映画を送信し続け、最後には全額を得ることを望む。また、Bobは、彼の映画のチャンクのうちの1つをブロックチェーンに発行しなければならないので、基準(ii)に依存しないことを望む。
各Tx1,Tx2,Tx3…のインプットはTx0の同じUTXOを指定することに留意する。従って、それらのうちのいずれか1つがネットワークへブロードキャストされ、任意の所与のノード104で検証される場合、それらのうちの任意の他のものは、該ノードにおいて有効であるとは考えない(有効の条件は、Txが別のトランザクションにより既に有効に使用されたUTXOを使用しようとしないことである)。異なるノード104は、最初に異なるインスタンスを受信する可能性があり、従って、1つのインスタンスがマイニングされる前に、どのインスタンスが「有効」であるかについて矛盾するビューを有することがあり、その時点で、全部のノード104は、マイニングされたインスタンスのみが有効なインスタンスであることに合意する。ノード104が1つのインスタンスを有効であるとして受け入れ、次に第2のインスタンスがブロックチェーン150に記録されていることを発見した場合、該ノード104は、これを受け入れ(なければならず)、最初に受け入れた未だマイニングされていないインスタンスを破棄する(つまり、無効であるとして扱う)。
Bobが早い段階で現金に換え、映画の送信を停止した場合、Aliceは、彼女が受信したより1つ多くのチャンクに支払うだけであり、500しか失わない。Aliceは、任意の時点で保釈金を払うことができるが、彼女がそうする場合、Bobは、Aliceが支払わなかった映画の1つより多くのチャンク(例えば、500ユニットの価値)を彼女に送信しない。
少額から開始して、映画の終わりに向かってその都度、額が増大し、全部のトランザクションがTx0内の同じUTXOを使用しようとするので、いずれか1つにおける換金は任意の他のものを無効にする。また、実施形態では、アウトプットの合計は、Bobが彼自身のインプットを追加するまで、必ずしもインプットより大きくない。これは、インプットレベルの適応性の例である。
Bob及びAliceの両者が映画の終わりまで待つ場合、Bobは、Aliceが署名するように、Txn’をAliceへ送信する。その結果、Dnのハッシュが彼女の署名により置き換えられる。これは、Bobが、データの任意のチャンクDを発行することなく、完全な支払いを請求することを可能にする。これは、スクリプトレベルの適応性の例である。
ブロックチェーン上のデータ輻輳を回避するために、処理は、何らかのデータパッケージ又はデータ受信者の署名を使用してアンロック可能なロックスクリプトを使用する。トランザクションの適応性を使用することにより、データ受信者は、アンロックスクリプト内のデータを彼女又は彼の署名で置き換えることができる。この動作は、データが受信されたことに肯定応答する又は支払いチャネルの閉鎖を確認するだけではなく、トランザクションからデータを削除して空間を節約する。
Bobには、トランザクションの値の増分的増加を考えると、彼がAliceから受信する最後のトランザクション以外のトランザクションを発行する動機がない。Aliceが途中でチャネルを離れた場合、Bobは、単に、彼がAliceから受信した最後のトランザクションを、支払いを請求するトランザクションと一緒に発行する。彼がAliceの適応されたトランザクションを受信しなかった場合、彼は、支払いを請求するために関連するデータパックを開示しなければならない。実施形態では、データ信頼性に対する強い要求がある場合、BobはAliceへ送信するデータを暗号化し、トランザクション内で復号鍵を開示できる(後述する)。
Aliceにとっては、しかしながら、彼女が十分なデータパックを受信すると、第1トランザクションを発行する動機がある。最初のトランザクション及び最後のトランザクションが両方とも有効であるとき、彼女が最後に通信されたトランザクションを無効にすることに成功するかどうかは確かではない。このシナリオを完全に回避するために、実施形態は、誰かがアウトプットとインプットとの間の差分をカバーしない限り、トランザクション自体を無効にする追加のアウトプットを含む。Aliceがトランザクションを有効にするために、彼女は、追加インプットを提供し、それはトランザクションをブロードキャストするという彼女の目的を覆す。
Bobがオフラインになる場合、Aliceは、映画を鑑賞し続けることができない。しかしながら、彼女は、彼女が観たよりも多くを支払わない。彼女は、Bobが戻ってくるのを待つか、又は単に別のサービスプロバイダへと移動し、彼女が停止したところから開始する。
このために必要な資金供給トランザクションは、支払いチャネルを形成しないことに留意する。更に、Aliceは、任意のポイントでストリーミングサービスを再開するために再接続できるという柔軟性がある。つまり、支払いチャネルを確立するためのオーバヘッドがない。
実施形態は、支払いチャネル内の全てのリスクを解決する。依然として、Aliceは、支払いチャネルの外部で彼女のUTXOを二重支払いすることが可能な場合がある。実施形態は、これを防ぐために、3つのオプションのうちの任意の1つ以上を防ぐことができる。AliceがUTXOを二重支払いしようとするとき、Aliceに銀行預金のためのシークレット鍵を強制的に開示させるための技術が採用されるべきである。この場合、Bobは、全部の預金を請求することができる。第2のオプションも、Aliceの肯定応答を法的に拘束する。つまり、Bobの支払い請求トランザクションに対するAliceの署名は、彼女のアイデンティティの拘束力のある証明として考えられる。Aliceのいかなる不正行為も、法執行の対象になる。第3のオプションは、Bobが、時間に渡り、例えば5分毎に、支払いチャネルを終了し再開することである。頻度は、リスクに対するBob自身の評価に従い、Bobにより割り当てることができる。資金供給トランザクションが必要ないので、支払いチャネルを再開することによるオーバヘッドがないことに留意する。
データ暗号化:データ信頼性は、データが公衆ネットワークを介して交換されるときに、要件である場合が多い。前の章では、データ受信側が受信されるものが何かを正確に知っていると仮定した。しかしながら、データが暗号化されるとき、なんら通信をしないで、どんな暗号文であるか又はどんなハッシュ値が予想されるかは予め知ることが困難である。これは、ロックスクリプト内のハッシュパズルを構成する要件を引き起こす。これを軽減するために、実施形態では、データの売り手は、暗号文のハッシュ値を、送信する前にデータの受信側へ通信できる。データの受信側は、与えられたハッシュ値を用いて支払いトランザクションを構成する。暗号データを受信すると、データ受信側は、データを復号し、データが期待されているかどうかを検証できる。期待されたものである場合、全てが良好である。そうでない場合、最悪の場合は、受信側が金銭を失う。しかしながら、受信側が失う額は、データパケット当たりの価格で区切られる。映画の場合、それはおそらく約500ユニットであり、例えば映画での合計は5ドルになる。経済的価値が小さく、評判への影響が遙かに大きいことを考えると、データの売り手が不正行為をする動機付けがない。
幾つかの実施形態は、データの売り手とそれぞれのデータの買い手との間の対称暗号からの共有シークレット鍵を確立するメカニズムを実装してよい。従って、送信中の全部のデータは暗号化できる。
例示的な使用例3-世論調査及び投票
別の例示的な使用例では、第1トランザクションTx1の異なる代替条件は、例えば図5に示され、投票を記録する手段としてブロックチェーン150を使用するために、異なる投票の選択肢を表すために使用されてよい。Txp’がブロック151へとマイニングされる前に、Txp内のAliceにより表された選択肢は、投票意図を示す投票として考えられる。以下の例では、第1トランザクションは、TxSlipと表され、第2の(ターゲット)トランザクションの第1バージョンはTxPollと表され、ターゲットトランザクションの第2バージョンはTxVoteと表される。
別の例示的な使用例では、第1トランザクションTx1の異なる代替条件は、例えば図5に示され、投票を記録する手段としてブロックチェーン150を使用するために、異なる投票の選択肢を表すために使用されてよい。Txp’がブロック151へとマイニングされる前に、Txp内のAliceにより表された選択肢は、投票意図を示す投票として考えられる。以下の例では、第1トランザクションは、TxSlipと表され、第2の(ターゲット)トランザクションの第1バージョンはTxPollと表され、ターゲットトランザクションの第2バージョンはTxVoteと表される。
以下の例示的なシナリオを考える。選挙が差し迫っている。行政体(「Bob」103b)は、ブロックチェーンに基づく投票システムを用いて、参加する有権者に報酬を与えることができる世論調査(polling)及び投票(vote)自体に参加を奨励したい。説明を簡単にするために、これは「労働党」と「保守党」の2大政党制であるとする。行政体PGovは、(a)有権者の登録、(b)投票票の発行、及び(c)世論調査及び投票の計数、に責任がある。行政体は、第2パーティ103bであり、このシナリオでは「Bob」とも呼ばれる。選挙民は、N人の有権者を含む。各投票者(「Alice」103a)は、登録するとき、投票者にのみ知られる秘密の「投票トークン(Vote Token)」TVを選択する。Bobの行政体は、各登録した投票者のハッシュ値H(TV)を知っている。
以下の定義は、世論調査及び投票システムのために利用されてよい。
・登録(Registration):=投票者は、有権者として登録するために何らかのオフ又はオンブロック処理を使用する。投票者は、非公開でTVを選択し、Bobの行政体にH(TV)を与える。
・投票票(Vote slip)(TxSlip):=投票者が世論調査及び/又は投票に参加する場合に、投票者に支払うロックスクリプトを含むトランザクション。
・世論調査(Poll)(TxPoll):=投票票アウトプットをアンロックするためにアンロック条件(i)又は(ii)を使用する署名付きトランザクション。ここで、(i)及び(ii)は、2つのそれぞれのオプション、例えば一般投票又は政党(以下の例を参照)についての投票選択肢を表す。
・投票(Vote)(TxVote):=投票票アウトプットをアンロックするためにアンロック条件(iii)又は(iv)を使用する署名付きトランザクション。ここで、(iii)及び(iv)は、2つのそれぞれのオプション(ここでも以下の例示的な条件を参照)についての投票選択肢を表す。
・登録(Registration):=投票者は、有権者として登録するために何らかのオフ又はオンブロック処理を使用する。投票者は、非公開でTVを選択し、Bobの行政体にH(TV)を与える。
・投票票(Vote slip)(TxSlip):=投票者が世論調査及び/又は投票に参加する場合に、投票者に支払うロックスクリプトを含むトランザクション。
・世論調査(Poll)(TxPoll):=投票票アウトプットをアンロックするためにアンロック条件(i)又は(ii)を使用する署名付きトランザクション。ここで、(i)及び(ii)は、2つのそれぞれのオプション、例えば一般投票又は政党(以下の例を参照)についての投票選択肢を表す。
・投票(Vote)(TxVote):=投票票アウトプットをアンロックするためにアンロック条件(iii)又は(iv)を使用する署名付きトランザクション。ここで、(iii)及び(iv)は、2つのそれぞれのオプション(ここでも以下の例示的な条件を参照)についての投票選択肢を表す。
全ての投票者は、また、彼ら自身の公開鍵PVを有し、彼らの選択した政党に投票(poll又はvote)するために、それぞれ、彼らの選択肢を反映する公開鍵を用いて署名しなければならない。
説明のための2大政党制の例では、2つのみの政党のうちの一方が選択されてよく、投票者が彼らの選択を表すために2つの可能な公開鍵があり、以下であってよい:
ここで、"..."は、「スカラーによるEC点乗算」のための演算子として定義される。
アンロック条件に関して、ロックスクリプトは、4つの異なるアンロック条件のうちのいずれか1つを満たすことによりアンロック可能なように、構成される。条件(i)及び(iii)は、両方とも、「労働党」に関連し、それぞれ世論調査及び投票を表す。条件(ii)及び(iv)は、両方とも、「保守党」に関連し、それぞれ世論調査及び投票を表す。条件は、以下のように完全に記述される。
実施形態は、以下から切り換えるために、スクリプトレベルの適応性により切り換え条件の概念を使用する。
これらの切り換えは、同じ政党について、世論調査を(”→”)投票へ変換することを表す。これらの変換は、適応性を用いて達成できる。何故なら、使用された公開鍵、従って署名は、切り換えに跨がり一貫しているからである。インプットスクリプトデータの残りの部分のみが、適応され(malleated)、従って、投票者の署名は変更される必要がない。
しかしながら、有権者が条件を以下から切り換えたい場合:
実施形態では、これは、適応性及び切り換え条件を用いて行うことができない。代替として、しかしながら、これは、代わりに、それぞれ世論調査又は投票トランザクションのシーケンス番号を増加させることにより、達成できる。ここで、Alice(投票者)により署名されたメッセージがシーケンス番号を含む。これは、Aliceの世論調査選択についてのAliceの署名が、彼女の後の投票選択を偽造する目的でAliceの署名を再生するために悪意ある第三者により使用できないことを意味する。
アンロック条件は、特定のロックスクリプトをアンロックするために使用される。それにより、各アンロック条件は、ロックスクリプト内の別個のロック条件を満たす。問題のロックスクリプトは、ここでは「投票スクリプト(Vote script)」と呼ばれ、以下に示される。
世論調査及び投票手順は図10に示される。これは、t0における選挙の公示からt3における投票期間の終了までの完全な世論調査及び投票処理を示すシーケンス図である。
この手順は、以下のステップに分けられる。
ステップ1:Bobの行政体PGovは、後の時間t2において行われる投票のために、時間t0で投票者登録を開始する。投票者は、投票処理の部分として彼らのハッシングされたトークンH(TV)を自由に登録し与える。
ステップ2:Bobの行政体PGovは、N個の投票票トランザクションTxPollを発行する。各票支払い、個々の有権者は、ロックスクリプト[投票スクリプト]により、前述のように、該投票者の公開鍵PVに調整される。各トランザクションは、後の時間t2にタイムロックされる。
ステップ3:投票者Aliceは、公開鍵PVを有し、世論調査フェーズに参加したいと望む。世論調査フェーズは、全ての時間t:t0<t<t2として定義される。投票者は、彼女の選択「労働党」を行い、及びアンロックスクリプト条件(i)を用いて世論調査トランザクションTxPoll(図11)を構成することにより、世論調査に参加する。
このトランザクションは、投票者、行政、又は第三者により公開できるが、t2までマイニングできない。
投票者が彼女の世論調査選択を「保守党」に変更したい場合、彼女は代わりにスクリプト条件(ii)を用いて、新しい世論調査トランザクションを生成し、シーケンス番号を増加させなければならない。
ステップ4:投票者Aliceは、何らかの時間t1で、彼女が彼女の「労働党」の世論調査選択肢を投票選択肢に変換したいと決定する。これは、世論調査トランザクションのアンロックスクリプトを適応して、投票トランザクションを生成することを含む。適応は、アンロック条件をスクリプト条件(iii)[(i)→(iii)]に変更する。
適応を実行するために、ステップ4で、投票者Aliceは、彼女の投票トークンTVをBobの行政体へ送信する。ステップ5で、Bobの行政体は、世論調査トークンを投票トークンへ切り換えて、世論調査トランザクションを投票トランザクションに変え、Sig(PGov,TxVote)により投票トランザクションに署名して、それが有効な投票であることを確認する。変形として、投票者は、投票トークンをトランザクションに入れ、それを署名するために行政へと送信し得る。
世論調査トランザクション及び後に生成される対応する投票トランザクションの両方は、両方のトランザクションに配置されたロックタイムt2のために、全ての時間t<t2において無効である。
ステップ6:Bobの行政体は、t2で、全部の有効な投票トランザクションをブロードキャストする。Bobの行政体は、時間t:t2<t<t3、で確定する任意の他の投票トランザクションをブロードキャストし続ける。ここで、t2は投票期間の開始を定義し、t3は投票期間の終了を定義する。
実施形態では、行政体は世論調査トランザクションをブロードキャストしない。これをブロードキャストし報酬を請求することは、調査の対象になる人(Alice)に委ねられる。
Txslipは、Txpoll/Txvote内で使用されるUTXOが実際に存在するように、処理の中の何らかの時点でマイニングされる必要もあることに留意する。簡単のために、このステップは図10に示されない。トランザクションを時間制限(lock-time)するために使用される実際の方法は、Txslipがネットワーク106へ送信される図10のシグナリング図の中のどの時点でも僅かに影響する。各Txslipに「nLocktime」(定義8)を入れる場合、Txslipも、図の段階6(及び/又は最終的な任意的段階)でマイニングされるためにブロードキャストされる必要がある。代わりに、Txslipのロックスクリプト内にOP_CLTV又はOP_CSV(定義10及び11)を入れることを選択した場合、Txslipは、上述のステップ2と同じ時間にマイニングできる。
図11は、処理を実装するために使用できる幾つかの例示的なトランザクションを示す。上段のトランザクションTxslipは、選挙民の構成員に世論調査及び/又は投票を行うことにより資金を請求することを可能にする投票票トランザクションである。アウトプットは、投票期間がt2で開始した後にのみ請求できる。中段のトランザクションは、投票者が世論調査の部分としての選択肢を選択したことを意味する世論調査トランザクションTxPollである。ロックタイムがOP_CSV又はOP_CLTVを用いて実装され、Txslipが投票者へ送信されたのと同じ時間にネットワークへ送信された(ステップ2)例を仮定すると、このトランザクションは、自身のインプットの中で参照するTxslipのアウトプットに設定されたタイムロックにより、t2まで無効である。下段のトランザクションは、投票者が投票の部分としての選択肢を選択したことを意味する投票トランザクションTxvoteである。このトランザクションは、TxPollと同じであるが、スクリプトレベルの適応性を用いてアンロック条件を切り換えられている。このトランザクションは、同様に、t2まで無効である。
実施形態では、タイムロックは、第1トランザクションのアウトプットの部分として含まれる(TxSlip)。代替的なメカニズムでは、しかしながら、ほぼ同じ効果を得るために、TxSlipではなく、TxPollをタイムロックする。
<結論>
上記の実施形態は、単なる例示として説明したものであることが理解されるであろう。
上記の実施形態は、単なる例示として説明したものであることが理解されるであろう。
更に一般的には、本願明細書に開示される一態様によると、第1パーティと第2パーティとの間のターゲットトランザクションをブロックチェーンに記録する方法であって、前記方法は、前記第1パーティ及び前記第2パーティのコンピュータ機器により、
前記ターゲットトランザクションの既存の第1バージョンに対して更新されている、前記ターゲットトランザクションの第2の更新バージョンを取得するステップと、
ノードのネットワークを通じて伝播され前記ノードのうちの少なくとも幾つかの各々において維持されるブロックチェーンのコピーに記録されるように、前記第1バージョンの代わりに、前記ターゲットトランザクションの前記更新バージョンを送信するステップと、
を含み、
前記ターゲットトランザクションは、アンロックスクリプトと、第1トランザクションの第1アウトプットへのポインタと、を含むインプットを含み、前記第1アウトプットは、前記第1トランザクションの前記第1アウトプットをアンロックするための複数の代替条件を指定するロックスクリプトを含み、
前記ターゲットトランザクションの前記第1バージョンの前記アンロックスクリプトは、前記代替条件のうちの第1条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成され、前記更新バージョンの前記アンロックスクリプトは、前記第1条件の代わりに、前記代替条件のうちの第2条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成される、方法が提供される。
前記ターゲットトランザクションの既存の第1バージョンに対して更新されている、前記ターゲットトランザクションの第2の更新バージョンを取得するステップと、
ノードのネットワークを通じて伝播され前記ノードのうちの少なくとも幾つかの各々において維持されるブロックチェーンのコピーに記録されるように、前記第1バージョンの代わりに、前記ターゲットトランザクションの前記更新バージョンを送信するステップと、
を含み、
前記ターゲットトランザクションは、アンロックスクリプトと、第1トランザクションの第1アウトプットへのポインタと、を含むインプットを含み、前記第1アウトプットは、前記第1トランザクションの前記第1アウトプットをアンロックするための複数の代替条件を指定するロックスクリプトを含み、
前記ターゲットトランザクションの前記第1バージョンの前記アンロックスクリプトは、前記代替条件のうちの第1条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成され、前記更新バージョンの前記アンロックスクリプトは、前記第1条件の代わりに、前記代替条件のうちの第2条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成される、方法が提供される。
実施形態では、当該方法は、前記第2パーティのコンピュータ機器により、前記ネットワークを通じて伝播され前記第1条件を満たすことに基づき前記ブロックチェーンに記録されるよう、前記第2パーティが前記ターゲットトランザクションの前記第1バージョンを送信できるようにする機能を提供するステップ、を含んでよい。
機能は、前記第2パーティが、前記ネットワークを通じて伝播され前記第1又は第2条件をそれぞれ満たすことに基づきブロックチェーンに記録されるよう、前記ターゲットトランザクションの前記第1又は更新バージョンを選択的に送信することを可能にしてよく、当該方法は、前記第2パーティが前記機能を用いて、前記第1バージョンの代わりに、前記更新バージョンをブロックチェーンに記録されるよう前記の送信を実行するステップを含む。
実施形態では、前記機能は、前記第2パーティに、前記第1バージョンの送信を実行することを手動で選択するためのオプションを提供してよく、及び/又は、
前記機能は、所定の時間の終了後に又は所定のイベントにより、前記ターゲットトランザクションの前記第1バージョンの送信を自動的にトリガするよう構成されてよい。
前記機能は、所定の時間の終了後に又は所定のイベントにより、前記ターゲットトランザクションの前記第1バージョンの送信を自動的にトリガするよう構成されてよい。
実施形態では、前記ターゲットトランザクションの前記更新バージョンを取得すること、及び伝播され前記ブロックチェーンに記録されるよう該更新バージョンを送信することは、前記第2パーティのコンピュータ機器により実行されてよい。
実施形態では、前記第2バージョンを取得するステップは、前記第2パーティが第1パーティから前記第2バージョンの少なくとも部分を受信するステップを含んでよい。
実施形態では、前記方法は、前記第2パーティのコンピュータ機器により、
前記ターゲットトランザクションの前記第1バージョンを取得するステップであって、前記ターゲットトランザクションの前記第1バージョンの前記アンロックスクリプトは、前記第2パーティが、前記第1条件を満たすことに基づき前記第1トランザクションの前記第1アウトプットを自動的にアンロックできるように構成されてよい、ステップ、を含んでよい。
前記ターゲットトランザクションの前記第1バージョンを取得するステップであって、前記ターゲットトランザクションの前記第1バージョンの前記アンロックスクリプトは、前記第2パーティが、前記第1条件を満たすことに基づき前記第1トランザクションの前記第1アウトプットを自動的にアンロックできるように構成されてよい、ステップ、を含んでよい。
実施形態では、前記ターゲットトランザクションの前記第2バージョンは、前記第1バージョンの後に取得されてよい。
実施形態では、前記第1バージョンを取得するステップは、前記第2パーティが第1パーティから前記第1バージョンの少なくとも部分を受信するステップを含んでよい。
実施形態では、前記第1バージョンを取得するステップは、前記第2パーティが前記第1トランザクションを生成するステップを含んでよい。
実施形態では、前記第2条件は、前記アンロックスクリプトが、前記アンロックスクリプト以外の前記ターゲットトランザクションの部分に署名する前記第1パーティの暗号署名を含むことを要求してよい。この場合、前記ターゲットトランザクションの前記更新バージョンを取得するステップは、前記第1パーティの署名を取得するステップを含み、伝播されブロックチェーンに記録されるよう送信される前記更新バージョンは、アンロックスクリプト内に前記第1パーティの署名を含む。
実施形態では、前記第1条件は、前記第1パーティの暗号書名を要求しなくてよい。
実施形態では、少なくとも前記第1条件は、前記アンロックスクリプトが、前記アンロックスクリプト以外の前記ターゲットトランザクションの部分に署名する前記第2パーティの暗号署名を含むことを要求してよい。
実施形態では、前記第2条件は、前記アンロックスクリプトが、前記アンロックスクリプト以外の前記ターゲットトランザクションの部分に署名する前記第2パーティの暗号署名を含むことを要求してよい。この場合、伝播されブロックチェーンに記録されるよう送信される前記更新バージョンは、前記アンロックスクリプト内に前記第2パーティの暗号署名を含む。
実施形態では、前記更新バージョンを取得するステップは、前記第2パーティが、前記第1バージョンを前記第1パーティへ送信して、前記第1パーティが前記第1パーティの署名を追加することにより前記更新バージョンへと適応する、ステップを含んでよい。前記第1及び第2条件は、前記第2パーティの同じ署名が前記ターゲットトランザクションの同じ部分に署名することを要求してよく、従って、前記第2パーティは前記更新バージョンに再び署名する必要がない。
実施形態では、前記第1条件は、データペイロードがアンロックスクリプトに含まれることを要求してよいが、前記第2条件は、前記データペイロードが前記ターゲットトランザクションに含まれることを要求しなくてよい。この場合、ネットワークを介して伝播されブロックチェーンに記録されるよう送信される前記更新バージョンは、前記データペイロードを含む必要がない。
実施形態では、前記第1条件は、前記アンロックスクリプトが前記データペイロード及び前記アンロックスクリプトを除く前記ターゲットトランザクションの部分に署名する前記第2パーティの暗号署名を含むことを要求してよいが、前記第1パーティの暗号書名がターゲットトランザクションに含まれることを要求せず、前記第2条件は、前記アンロックスクリプトが前記第1パーティ及び前記第2パーティの両方の暗号署名を含むことを要求してよいが、前記データペイロードが前記ターゲットトランザクションに含まれることを要求しなくてよい。このような実施形態では、前記ターゲットトランザクションの前記更新バージョンを取得するステップは、前記第1パーティの署名を取得するステップを含み、伝播されブロックチェーンに記録されるよう送信される前記ターゲットトランザクションの前記更新バージョンは、前記データペイロードを含む必要がないが、前記アンロックスクリプト内に前記第1パーティ及び第2パーティの署名を含む。
実施形態では、前記要件は、前記それぞれのデータ部分が前記ロックスクリプトに含まれるハッシュチャレンジにより生成されることを含み、前記ハッシュチャレンジは、前記それぞれのデータ部分のハッシュと、前記アンロックスクリプト内の前記それぞれのデータ部分のハッシュが前記ロックスクリプトに含まれるハッシュと一致することをチェックするためのハッシュ関数と、を含む。前記方法は、前記ネットワークと別に、前記第1トランザクションのインスタンスを受信する前に、ハッシュセット(例えば、ハッシュツリー)を前記第1パーティに利用可能にするステップを含んでよく、前記ハッシュセットは、第2第1パーティが前記それぞれのデータ部分の前記ハッシュチャレンジを生成できるようにするために、前記データ部分の各々のハッシュ値を含む。
実施形態では、前記第1トランザクションの前記第1アウトプットは、前記第1条件又は前記第2条件に従い前記第1アウトプットをアンロックすることにより償還される、前記第2パーティへの支払いを指定してよく、
前記ターゲットトランザクションは、前記支払いの少なくとも一部を前記第2パーティへ移転するアウトプットを含んでよい。
前記ターゲットトランザクションは、前記支払いの少なくとも一部を前記第2パーティへ移転するアウトプットを含んでよい。
実施形態では、前記方法は、前記第2パーティの前記コンピュータ機器により、
前記第1パーティへデータ部分のシーケンスをストリーミングするステップであって、前記シーケンスの中の最終部分により終了する、ステップと、
前記データ部分のうちのそれぞれの部分に応答して、前記第1パーティから前記第1トランザクションのそれぞれのインスタンスを受信するステップであって、各インスタンスの第1アウトプットは、前記それぞれの部分についての前記第2パーティへの支払いを指定する、ステップと、
を含んでよく
前記支払いは各データ部分と共に増大し、
前記ターゲットトランザクションの前記更新バージョンを取得するステップは、前記シーケンスの中の前記最終部分に続き、前記第1パーティから前記更新バージョンを受信するステップを含む。
前記第1パーティへデータ部分のシーケンスをストリーミングするステップであって、前記シーケンスの中の最終部分により終了する、ステップと、
前記データ部分のうちのそれぞれの部分に応答して、前記第1パーティから前記第1トランザクションのそれぞれのインスタンスを受信するステップであって、各インスタンスの第1アウトプットは、前記それぞれの部分についての前記第2パーティへの支払いを指定する、ステップと、
を含んでよく
前記支払いは各データ部分と共に増大し、
前記ターゲットトランザクションの前記更新バージョンを取得するステップは、前記シーケンスの中の前記最終部分に続き、前記第1パーティから前記更新バージョンを受信するステップを含む。
実施形態では、前記増大は、それまでに送信されたデータ部分の数に線形に比例してよい。
実施形態では、各データ部分は、メディアコンテンツ(例えば、オーディオ及び/又はビデオコンテンツ)のアイテムの異なる部分であってよい。
代替として、各データ部分は、サービスのユニット(例えば、ガス、水道、電気を含む生活必需サービスの供給、又は車両、不動産、又は他の物理的アイテムのレンタル)にアクセスするための異なる鍵であってよい。
実施形態では、前記関数は、前記第1パーティからそれまでに受信したシーケンスの中の前記第1トランザクションの最新のインスタンスを償還するために、シーケンスの中の任意の時点で、前記ネットワークを通じて伝播されブロックチェーンに記録されるよう前記ターゲットトランザクションの前記第1バージョンの送信を実行することを手動で選択するオプションを、前記第2パーティに提供してよい。代替又は追加として、前記関数は、前記第1パーティが前記第1トランザクションのインスタンスを送信するのをシーケンスの途中で止めた場合に、前記第1トランザクションの最新のインスタンスを償還するために、ネットワークを通じて伝播されブロックチェーンに記録されるよう前記第1バージョンの送信を自動的に実行するよう構成されてよい。
実施形態では、前記第1トランザクションは、インプット額を指定する1つ以上の第1インプットを含んでよく、前記第1トランザクションの前記第1アウトプットは第1支払いを指定してよく、前記第1トランザクションは、1つ以上の更なる支払いを指定する1つ以上の更なるアウトプットを更に含んでよい。その結果、支払いの合計は前記インプット額より高く、前記第1パーティから前記第2パーティにより受信される前記第1トランザクションは、差分を生成する他のインプットを有しない。ネットワークのノードは、前記第1トランザクションが合計インプット額より多くの合計支払いを指定する場合、前記第1トランザクションを無効であるとして拒否するよう構成されてよい。このような実施形態では、当該方法は、前記差分を構成する(make up)ために、前記第2パーティが第2インプットを前記第1トランザクションの最終又は最近のインスタンスに追加するステップと、追加された前記第2インプットを有する前記第1トランザクションを、ネットワークを通じて伝播されブロックチェーンに記録されるよう送信するステップと、を含んでよい。
実施形態では、更なるアウトプットは、前記インプット額から前記第1支払いを差し引いたものに等しい、前記第1パーティへの第2支払いを指定する第2アウトプットと、前記第2支払いに等しい、前記第2パーティへの第3支払いを指定する第3アウトプットと、を含んでよい。
実施形態では、前記ロックスクリプトは、前記代替条件のうちの第3条件を含み、これは、ロックタイムが終了すること、及び前記第1パーティの暗号署名が前記アンロックスクリプトに含まれることを要求し、従って、前記第2パーティにより前記ロックタイムの範囲内で償還されなかった場合、前記第1パーティが、前記第1トランザクションの前記第1アウトプットの中の支払いを償還することを可能にする。
実施形態では、前記代替条件のうちの少なくとも幾つかの各々は、投票のための異なる選択肢に対応してよく、
前記方法は、前記ターゲットトランザクションの前記更新バージョンを取得するステップの前に、前記第1バージョンの中の前記アンロックスクリプトを、投票意向の拘束力のない指示として、アクセスする又は第三者によりアクセス可能であるとマークするステップを含んでよい。
前記方法は、前記ターゲットトランザクションの前記更新バージョンを取得するステップの前に、前記第1バージョンの中の前記アンロックスクリプトを、投票意向の拘束力のない指示として、アクセスする又は第三者によりアクセス可能であるとマークするステップを含んでよい。
実施形態では、ロックタイムは所定の時点の後になるまで前記ネットワークが前記ブロックチェーンに前記第1バージョンを記録するのを防ぐために、前記第1トランザクション及び前記ターゲットトランザクションの前記第1バージョンのうちの少なくとも1つに含まれてよい。
実施形態では、前記第1トランザクションの前記アウトプットは、前記ロックスクリプト内で指定された前記条件のうちのいずれか1つに従い前記第1アウトプットをアンロックすることにより償還される支払いを指定し、前記ターゲットトランザクションは、前記支払いのうちの少なくとも一部を前記第1パーティへ移転するアウトプットを含んでよい。
実施形態では、前記代替条件は、前記第1選択肢の世論調査指示に対応する第1条件、前記第2選択肢の世論調査指示に対応する第2条件、前記第1選択肢の投票選択に対応する第3条件、及び前記第2選択肢の投票選択に対応する第4条件、を含んでよく、前記ターゲットトランザクションの前記第1バージョンの前記アンロックスクリプトは、前記第1又は前記第2条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成されてよく、前記ターゲットトランザクションの前記第2バージョンの前記アンロックスクリプトは、前記第1条件の代わりに前記第3条件を又は前記第2条件の代わりに前記第4条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成されることにより、前記世論調査指示を投票へと変換するよう構成されてよい。
投票の場合には、前記第1条件は、前記ターゲットトランザクションの前記アンロックスクリプトが、前記ロックスクリプト以外の前記ターゲットトランザクションの部分に署名する前記第2パーティの暗号署名を含むことを要求してよい。前記第1条件は、前記第1パーティの前記署名が個人の投票トークンに署名することを要求してよい。前記第2条件は、前記ターゲットトランザクションの前記アンロックスクリプトが、前記第1パーティの前記署名と前記第2パーティの暗号署名とを含み、それぞれが前記ロックスクリプトを除く前記ターゲットトランザクションの部分に署名することを要求してよい。
本願明細書に開示される別の態様によると、コンピュータ可読記憶装置上に具現化され、第1パーティ及び/又は第2パーティのコンピュータ機器上で実行すると本願明細書に開示されたいずれかの実施形態の方法を実行するよう構成される、コンピュータプログラムが提供される。
別の態様によると、第1パーティ及び/又は第2パーティのコンピュータ機器であって、
1つ以上のメモリユニットを含むメモリと、
1つ以上の処理ユニットを含む処理機器と、
を含み、
前記メモリは、前記処理機器上で実行するよう構成されるコードを格納し、前記コードは本願明細書に開示されたに任意の実施形態の方法を実行するよう構成される、コンピュータ機器が提供される。
1つ以上のメモリユニットを含むメモリと、
1つ以上の処理ユニットを含む処理機器と、
を含み、
前記メモリは、前記処理機器上で実行するよう構成されるコードを格納し、前記コードは本願明細書に開示されたに任意の実施形態の方法を実行するよう構成される、コンピュータ機器が提供される。
本願明細書に開示される別の態様によると、コンピュータ可読記憶装置上に具現化され第2パーティのコンピュータで実行されると動作を実行するよう構成されるコンピュータプログラムであって、前記動作は、
前記ターゲットトランザクションの第1バージョンを取得するステップと、
前記ターゲットトランザクションの第2バージョンを取得するステップと、
ノードのネットワークを通じて伝播され前記ノードのうちの少なくとも幾つかの各々において維持されるブロックチェーンのコピーに記録されるように、前記第2パーティに前記第1及び第2バージョンいずれかを選択的に送信させるステップと、
を含み、
前記ターゲットトランザクションは、アンロックスクリプトと、第1トランザクションの第1アウトプットへのポインタと、を含むインプットを含み、前記第1アウトプットは、前記第1パーティのデジタルアセットの額を指定し、前記第1トランザクションの前記第1アウトプットをアンロックするための複数の代替条件を指定するロックスクリプトを含み、
前記ターゲットトランザクションの前記第1バージョンの前記アンロックスクリプトは、前記代替条件のうちの第1条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成され、前記アンロックスクリプトは、前記第1条件の代わりに、前記代替条件のうちの第2条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成される、コンピュータプログラムが提供される。
前記ターゲットトランザクションの第1バージョンを取得するステップと、
前記ターゲットトランザクションの第2バージョンを取得するステップと、
ノードのネットワークを通じて伝播され前記ノードのうちの少なくとも幾つかの各々において維持されるブロックチェーンのコピーに記録されるように、前記第2パーティに前記第1及び第2バージョンいずれかを選択的に送信させるステップと、
を含み、
前記ターゲットトランザクションは、アンロックスクリプトと、第1トランザクションの第1アウトプットへのポインタと、を含むインプットを含み、前記第1アウトプットは、前記第1パーティのデジタルアセットの額を指定し、前記第1トランザクションの前記第1アウトプットをアンロックするための複数の代替条件を指定するロックスクリプトを含み、
前記ターゲットトランザクションの前記第1バージョンの前記アンロックスクリプトは、前記代替条件のうちの第1条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成され、前記アンロックスクリプトは、前記第1条件の代わりに、前記代替条件のうちの第2条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成される、コンピュータプログラムが提供される。
本願明細書に開示される別の態様によると、コンピュータ可読記憶装置上に具現化され第2パーティのコンピュータ機器で実行されると動作を実行するよう構成されるコンピュータプログラムであって、前記動作は、
前記ターゲットトランザクションの第1バージョンを取得するステップと、
前記ターゲットトランザクションの第2バージョンを取得するステップと、
ノードのネットワークを通じて伝播され前記ノードのうちの少なくとも幾つかにおいて維持されるブロックチェーンのコピーに記録されるように、前記第2パーティに前記第1及び第2バージョンのいずれかを選択的に送信させるステップと、
を含み、
前記ターゲットトランザクションは、アンロックスクリプトと、第1トランザクションの第1アウトプットへのポインタと、を含むインプットを含み、前記第1アウトプットは、第1パーティのデジタルアセットの額を指定し、前記第1トランザクションの前記第1アウトプットをアンロックするための複数の代替条件を指定するロックスクリプトを含み、
前記ターゲットトランザクションの前記第1バージョンの前記アンロックスクリプトは、前記代替条件のうちの第1条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成され、前記アンロックスクリプトは、前記第1条件の代わりに、前記代替条件のうちの第2条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成される、コンピュータプログラムが提供される。
前記ターゲットトランザクションの第1バージョンを取得するステップと、
前記ターゲットトランザクションの第2バージョンを取得するステップと、
ノードのネットワークを通じて伝播され前記ノードのうちの少なくとも幾つかにおいて維持されるブロックチェーンのコピーに記録されるように、前記第2パーティに前記第1及び第2バージョンのいずれかを選択的に送信させるステップと、
を含み、
前記ターゲットトランザクションは、アンロックスクリプトと、第1トランザクションの第1アウトプットへのポインタと、を含むインプットを含み、前記第1アウトプットは、第1パーティのデジタルアセットの額を指定し、前記第1トランザクションの前記第1アウトプットをアンロックするための複数の代替条件を指定するロックスクリプトを含み、
前記ターゲットトランザクションの前記第1バージョンの前記アンロックスクリプトは、前記代替条件のうちの第1条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成され、前記アンロックスクリプトは、前記第1条件の代わりに、前記代替条件のうちの第2条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成される、コンピュータプログラムが提供される。
本願明細書に開示される別の態様によると、第2パーティのコンピュータ機器であって、1つ以上のメモリユニットを含むメモリと、1つ以上の処理ユニットを含む処理機器と、を含み、前記メモリは前記処理機器上で実行するよう構成されるコードを格納し、前記コードは、前記処理機器上で動作を実行するよう構成され、前記動作は、
前記ターゲットトランザクションの第1バージョンを取得するステップと、
前記ターゲットトランザクションの第2のバージョンを取得するステップと、
ノードのネットワークを通じて伝播され前記ノードのうちの少なくとも幾つかにおいて維持されるブロックチェーンのコピーに記録されるように、前記第2パーティに前記第1及び第2バージョンいずれかを選択的に送信させるステップと、
を含み、
前記ターゲットトランザクションは、アンロックスクリプトと、第1トランザクションの第1アウトプットへのポインタと、を含むインプットを含み、前記第1アウトプットは、第1パーティのデジタルアセットの額を指定し、前記第1トランザクションの前記第1アウトプットをアンロックするための複数の代替条件を指定するロックスクリプトを含み、
前記ターゲットトランザクションの前記第1バージョンの前記アンロックスクリプトは、前記代替条件のうちの第1条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成され、前記アンロックスクリプトは、前記第1条件の代わりに、前記代替条件のうちの第2条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成される、コンピュータ機器が提供される。
前記ターゲットトランザクションの第1バージョンを取得するステップと、
前記ターゲットトランザクションの第2のバージョンを取得するステップと、
ノードのネットワークを通じて伝播され前記ノードのうちの少なくとも幾つかにおいて維持されるブロックチェーンのコピーに記録されるように、前記第2パーティに前記第1及び第2バージョンいずれかを選択的に送信させるステップと、
を含み、
前記ターゲットトランザクションは、アンロックスクリプトと、第1トランザクションの第1アウトプットへのポインタと、を含むインプットを含み、前記第1アウトプットは、第1パーティのデジタルアセットの額を指定し、前記第1トランザクションの前記第1アウトプットをアンロックするための複数の代替条件を指定するロックスクリプトを含み、
前記ターゲットトランザクションの前記第1バージョンの前記アンロックスクリプトは、前記代替条件のうちの第1条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成され、前記アンロックスクリプトは、前記第1条件の代わりに、前記代替条件のうちの第2条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成される、コンピュータ機器が提供される。
本願明細書に開示される別態様によると、第2パーティにブロックチェーンにターゲットトランザクションを記録させる方法であって、前記方法は、第1パーティのコンピュータ機器により、
前記ターゲットトランザクションの既存の第1バージョンに対して更新されている、前記ターゲットトランザクションの更新バージョンを送信するステップと、
前記第1バージョンの代わりに、前記ターゲットトランザクションの前記更新バージョンを送信するステップであって、それにより、前記第2パーティが、ノードのネットワークを通じて伝播され前記ノードのうちの少なくとも幾つかにおいて維持されるブロックチェーンのコピーに記録されるように、前記更新バージョンを送信させる、ステップと、
を含み、
前記ターゲットトランザクションは、アンロックスクリプトと、第1トランザクションの第1アウトプットへのポインタと、を含むインプットを含み、前記第1アウトプットは、前記第1トランザクションの前記第1アウトプットをアンロックするための複数の代替条件を指定するロックスクリプトを含み、
前記ターゲットトランザクションの前記第1バージョンの前記アンロックスクリプトは、前記代替条件のうちの第1条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成され、前記アンロックスクリプトは、前記第1条件の代わりに、前記代替条件のうちの第2条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成される、方法が提供される。
前記ターゲットトランザクションの既存の第1バージョンに対して更新されている、前記ターゲットトランザクションの更新バージョンを送信するステップと、
前記第1バージョンの代わりに、前記ターゲットトランザクションの前記更新バージョンを送信するステップであって、それにより、前記第2パーティが、ノードのネットワークを通じて伝播され前記ノードのうちの少なくとも幾つかにおいて維持されるブロックチェーンのコピーに記録されるように、前記更新バージョンを送信させる、ステップと、
を含み、
前記ターゲットトランザクションは、アンロックスクリプトと、第1トランザクションの第1アウトプットへのポインタと、を含むインプットを含み、前記第1アウトプットは、前記第1トランザクションの前記第1アウトプットをアンロックするための複数の代替条件を指定するロックスクリプトを含み、
前記ターゲットトランザクションの前記第1バージョンの前記アンロックスクリプトは、前記代替条件のうちの第1条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成され、前記アンロックスクリプトは、前記第1条件の代わりに、前記代替条件のうちの第2条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成される、方法が提供される。
本願明細書に開示された別の態様によると、ブロックチェーンに記録するためのトランザクションのセットであって、前記セットは、コンピュータ可読データ媒体上に具現化され、
第1トランザクションのアウトプットをアンロックするための複数の代替条件を指定するロックスクリプトを含むアウトプットを有する第1トランザクションと、
アンロックスクリプトを含むインプット及び前記第1トランザクションのアウトプットへのポインタを有する第2トランザクションの第1バージョンと、
を含み、前記ターゲットトランザクションのz年期第1バージョンの前記アンロックスクリプトは、前記代替条件のうちの第1条件を満たすことに基づき、前記第1トランザクションの前記アウトプットをアンロックするよう構成され、
前記第2トランザクションの第2バージョンは、アンロックスクリプトを含むインプット、及び前記第1トランザクションの前記アウトプットへのポインタを含み、前記アンロックスクリプトは、前記第1条件の代わりに、前記代替条件のうちの第2条件を満たすことに基づき、前記第1トランザクションの前記アウトプットをアンロックするよう構成される、トランザクションのセットが提供される。
第1トランザクションのアウトプットをアンロックするための複数の代替条件を指定するロックスクリプトを含むアウトプットを有する第1トランザクションと、
アンロックスクリプトを含むインプット及び前記第1トランザクションのアウトプットへのポインタを有する第2トランザクションの第1バージョンと、
を含み、前記ターゲットトランザクションのz年期第1バージョンの前記アンロックスクリプトは、前記代替条件のうちの第1条件を満たすことに基づき、前記第1トランザクションの前記アウトプットをアンロックするよう構成され、
前記第2トランザクションの第2バージョンは、アンロックスクリプトを含むインプット、及び前記第1トランザクションの前記アウトプットへのポインタを含み、前記アンロックスクリプトは、前記第1条件の代わりに、前記代替条件のうちの第2条件を満たすことに基づき、前記第1トランザクションの前記アウトプットをアンロックするよう構成される、トランザクションのセットが提供される。
開示された技術の他の変形例又は使用事例は、本明細書で開示されると、当業者に明らかになり得る。本開示の範囲は、記載された実施形態によって限定されるものではなく、添付の特許請求の範囲によってのみ限定される。
Claims (33)
- 第1パーティと第2パーティとの間のターゲットトランザクションをブロックチェーンに記録する方法であって、前記方法は、前記第1パーティ及び前記第2パーティのコンピュータ機器により、
前記ターゲットトランザクションの既存の第1バージョンに対して更新されている、前記ターゲットトランザクションの第2の更新バージョンを取得するステップと、
ノードのネットワークを通じて伝播され前記ノードのうちの少なくとも幾つかの各々において維持されるブロックチェーンのコピーに記録されるように、前記第1バージョンの代わりに、前記ターゲットトランザクションの前記更新バージョンを送信するステップと、
を含み、
前記ターゲットトランザクションは、アンロックスクリプトと、第1トランザクションの第1アウトプットへのポインタと、を含むインプットを含み、前記第1アウトプットは、前記第1トランザクションの前記第1アウトプットをアンロックするための複数の代替条件を指定するロックスクリプトを含み、
前記ターゲットトランザクションの前記第1バージョンの前記アンロックスクリプトは、前記代替条件のうちの第1条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成され、前記更新バージョンの前記アンロックスクリプトは、前記第1条件の代わりに、前記代替条件のうちの第2条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成される、方法。 - 前記第2パーティのコンピュータ機器により、前記ネットワークを通じて伝播され前記第1条件を満たすことに基づき前記ブロックチェーンに記録されるよう、前記第2パーティが前記ターゲットトランザクションの前記第1バージョンを送信できるようにする機能を提供するステップ、を含む請求項1に記載の方法。
- 前記機能は、前記第2パーティに、前記第1バージョンの送信を実行することを手動で選択するためのオプションを提供し、及び/又は、
前記機能は、所定の時間の終了後に又は所定のイベントにより、前記ターゲットトランザクションの前記第1バージョンの送信を自動的にトリガするよう構成される、
請求項2に記載の方法。 - 前記ターゲットトランザクションの前記更新バージョンを取得すること、及び伝播され前記ブロックチェーンに記録されるよう該更新バージョンを送信することは、前記第2パーティのコンピュータ機器により実行される、請求項1~3のいずれかに記載の方法。
- 前記第2バージョンを取得するステップは、第1パーティから前記第2バージョンの少なくとも部分を受信するステップを含む、請求項4に記載の方法。
- 前記第2パーティのコンピュータ機器により、
前記ターゲットトランザクションの前記第1バージョンを取得するステップであって、前記ターゲットトランザクションの前記第1バージョンの前記アンロックスクリプトは、前記第2パーティが、前記第1条件を満たすことに基づき前記第1トランザクションの前記第1アウトプットを自動的にアンロックできるように構成される、ステップ、を含む請求項1~5のいずれかに記載の方法。 - 前記ターゲットトランザクションの前記第2バージョンは、前記第1バージョンの後に取得される、請求項6に記載の方法。
- 前記第1バージョンを取得するステップは、前記第1パーティから前記第1バージョンの少なくとも部分を受信するステップを含む、請求項6又は7に記載の方法。
- 前記第1バージョンを取得するステップは、前記第2パーティが前記第1トランザクションを生成するステップを含む、請求項6、7又は8に記載の方法。
- 前記第2条件は、前記アンロックスクリプトが、前記アンロックスクリプト以外の前記ターゲットトランザクションの部分に署名する前記第1パーティの暗号署名を含むこと、前記ターゲットトランザクションの前記更新バージョンを取得するステップが前記第1パーティの前記署名を取得することを含むこと、及び伝播され前記ブロックチェーンに記録されるよう送信される前記更新バージョンが、前記アンロックスクリプト内に前記第1パーティの前記署名を含むこと、を要求する、請求項1~9のいずれかに記載の方法。
- 前記第1条件は、前記第1パーティの暗号書名を要求しない、請求項10に記載の方法。
- 少なくとも前記第1条件は、前記アンロックスクリプトが、前記アンロックスクリプト以外の前記ターゲットトランザクションの部分に署名する前記第2パーティの暗号署名を含むことを要求する、請求項10又は11に記載の方法。
- 前記第2条件は、前記アンロックスクリプトが、前記アンロックスクリプト以外の前記ターゲットトランザクションの部分に署名する前記第2パーティの暗号署名を含むことを更に要求し、
伝播され前記ブロックチェーンに記録されるよう送信される前記更新バージョンは、前記アンロックスクリプト内に前記第2パーティの前記暗号署名を含む、請求項12に記載の方法。 - 前記更新バージョンを取得するステップは、
前記第2パーティが前記第1バージョンを前記第1パーティへ送信するステップであって、前記第1パーティが前記第1パーティの署名を追加することにより、前記更新バージョンに統合できるようにする、ステップを含み、
前記第1条件及び前記第2条件は、前記第2パーティの同じ署名が前記ターゲットトランザクションの同じ部分に署名することを要求し、前記第2パーティが前記更新バージョンに再び署名する必要がない、請求項6に従属する請求項12又は13に記載の方法。 - 前記第1条件は、データペイロードがアンロックスクリプトに含まれることを要求するが、前記第2条件は、前記データペイロードが前記ターゲットトランザクションに含まれることを要求せず、
前記ネットワークを介して伝播され前記ブロックチェーンに記録されるよう送信される前記更新バージョンは、前記データペイロードを含まない、請求項1~13のいずれかに記載の方法。 - 前記第1条件は、前記アンロックスクリプトが、前記データペイロードと、前記アンロックスクリプト以外の前記ターゲットトランザクションの部分に署名する前記第2パーティの暗号署名と、を含むことを要求するが、前記第1パーティの暗号署名が前記ターゲットトランザクションに含まれることを要求せず、
前記第2条件は、前記アンロックスクリプトが、前記第1パーティ及び前記第2パーティの両者の暗号署名を含むことを要求するが、前記データペイロードが前記ターゲットトランザクションに含まれることを要求せず、
前記ターゲットトランザクションの前記更新バージョンを取得するステップは、前記第1パーティの前記署名を取得するステップを含み、
伝播され前記ブロックチェーンに記録されるよう送信される前記ターゲットトランザクションの前記更新バージョンは、前記データペイロードを含まないが、前記アンロックスクリプト内の前記第1パーティ及び前記第2パーティの署名を含む、請求項15に記載の方法。 - 前記第1トランザクションの前記第1アウトプットは、前記第1条件又は前記第2条件に従い前記第1アウトプットをアンロックすることにより償還される、前記第2パーティへの支払いを指定し、
前記ターゲットトランザクションは、前記支払いの少なくとも一部を前記第2パーティへ移転するアウトプットを含む、請求項1~15のいずれかに記載の方法。 - 前記第2パーティの前記コンピュータ機器により、
前記第1パーティへデータ部分のシーケンスをストリーミングするステップであって、前記シーケンスの中の最終部分により終了する、ステップと、
前記データ部分のうちのそれぞれの部分に応答して、前記第1パーティから前記第1トランザクションのそれぞれのインスタンスを受信するステップであって、各インスタンスの第1アウトプットは、前記それぞれの部分についての前記第2パーティへの支払いを指定する、ステップと、
を含み
前記支払いは各データ部分と共に増大し、
前記ターゲットトランザクションの前記更新バージョンを取得するステップは、前記シーケンスの中の前記最終部分に続き、前記第1パーティから前記更新バージョンを受信するステップを含む、請求項17に記載の方法。 - 前記増大は、それまでに送信されたデータ部分の数に線形に比例する、請求項18に記載の方法。
- 各データ部分は、メディアコンテンツのアイテムの異なる部分である、請求項18又は19に記載の方法。
- 各データ部分はサービスのユニットにアクセスするための異なる鍵である、請求項18又は19に記載の方法。
- 前記サービスは、
電気、ガス、又は水道を含む生活必需サービスの提供、又は、
不動産、車両、又は別の物理アイテムのレンタル、
のうちの1つを含む、請求項21に記載の方法。 - 前記機能は、前記第2パーティに、前記シーケンスの中の任意のポイントにおいて、それまでに前記第1パーティから受信した前記シーケンスの中の前記第1トランザクションの最新のインスタンスを償還するために、前記ネットワークを通じて伝播されブロックチェーンに記録されるよう前記ターゲットトランザクションの前記第1バージョンの送信を実行することを手動で選択するオプションを提供し、及び/又は、
前記機能は、前記第1パーティが前記シーケンスの途中で前記第1トランザクションのインスタンスを送信することを停止した場合に、前記第1トランザクションの最新のインスタンスを償還するために、前記ネットワークを通じて伝播されブロックチェーンに記録されるよう前記第1バージョンの送信を自動的に実行するよう構成される、請求項2に従属する請求項18~22のいずれか一項に記載の方法。 - 前記第1トランザクションは、インプット額を指定する1つ以上の第1インプットを含み、前記第1トランザクションの前記第1アウトプットは第1支払いを指定し、前記第1トランザクションは、1つ以上の更なる支払いを指定する1つ以上の更なるアウトプットを含み、前記支払いの合計は前記インプット額より大きく、前記第1パーティから前記第2パーティにより受信された前記第1トランザクションは、差を構成する他のインプットを含まず、前記ネットワークのノードは、合計インプット額より大きい合計支払いを指定する場合に、前記第1トランザクションを無効であるとして拒否するよう構成され、
前記方法は、前記第2パーティが、前記差を構成するために前記第1トランザクションの最終的な又は最新のインスタンスに第2インプットを追加し、前記ネットワークを通じて伝播されブロックチェーンに記録されるよう、追加された前記第2インプットを有する前記第1トランザクションを送信するステップ、を含む請求項18~23のいずれかに記載の方法。 - 前記更なるアウトプットは、前記インプット額から前記第1支払いを差し引いたものに等しい、前記第1パーティへの第2支払いを指定する第2アウトプットと、前記第2支払いに等しい、前記第2パーティへの第3支払いを指定する第3アウトプットと、を更に含む、請求項24に記載の方法。
- 前記ロックスクリプトは、前記代替条件のうちの第3条件を含み、これは、ロックタイムが終了すること、及び前記第1パーティの暗号署名が前記アンロックスクリプトに含まれることを要求し、従って、前記第2パーティにより前記ロックタイムの範囲内で償還されなかった場合、前記第1パーティが、前記第1トランザクションの前記第1アウトプットの中の支払いを償還することを可能にする、請求項17~25のいずれかに記載の方法。
- 前記代替条件のうちの少なくとも幾つかの各々は、投票のための異なる選択肢に対応し、
前記方法は、前記ターゲットトランザクションの前記更新バージョンを取得するステップの前に、前記第1バージョンの中の前記アンロックスクリプトを、投票意向の拘束力のない指示として、アクセス又は第3パーティによりアクセス可能であるとマークするステップを含む、請求項1~9のいずれかに記載の方法。 - 所定の時点の後になるまで前記ネットワークが前記ブロックチェーンに前記第1バージョンを記録するのを防ぐために、前記第1トランザクション及び前記ターゲットトランザクションの前記第1バージョンのうちの少なくとも1つにロックタイムが含まれる、請求項27に記載の方法。
- 前記第1トランザクションの前記アウトプットは、前記ロックスクリプト内で指定された前記条件のうちのいずれか1つに従い前記第1アウトプットをアンロックすることにより償還される支払いを指定し、前記ターゲットトランザクションは、前記支払いのうちの少なくとも一部を前記第1パーティへ移転するアウトプットを含む、請求項27又は28に記載の方法。
- 前記代替条件は、
第1選択肢の世論調査指示に対応する第1条件、
第2選択肢の世論調査指示に対応する第2条件、
第1選択肢の投票選択に対応する第3条件、及び、
第2選択肢の投票選択に対応する第4条件、
を含み、
前記ターゲットトランザクションの前記第1バージョンの前記アンロックスクリプトは、前記第1又は前記第2条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成され、
前記ターゲットトランザクションの前記第2バージョンの前記アンロックスクリプトは、前記第1条件の代わりに前記第3条件を又は前記第2条件の代わりに前記第4条件を満たすことに基づき、前記第1トランザクションの前記第1アウトプットをアンロックするよう構成されることにより、前記世論調査指示を投票へと変換するよう構成される、請求項27~29のいずれかに記載の方法。 - コンピュータ可読記憶装置上に具現化され、第1パーティ及び/又は第2パーティのコンピュータ機器上で実行すると請求項1~30のいずれか一項に記載の方法を実行するよう構成される、コンピュータプログラム。
- 第1パーティ及び/又は第2パーティのコンピュータ機器であって、
1つ以上のメモリユニットを含むメモリと、
1つ以上の処理ユニットを含む処理機器と、
を含み、
前記メモリは、前記処理機器上で実行するよう構成されるコードを格納し、前記コードは請求項1~30のうちの一項に記載の方法を実行するよう構成される、コンピュータ機器。 - ブロックチェーンに記録するためのトランザクションのセットであって、前記セットは、コンピュータ可読データ媒体上に具現化され、
第1トランザクションのアウトプットをアンロックするための複数の代替条件を指定するロックスクリプトを含むアウトプットを有する第1トランザクションと、
アンロックスクリプトを含むインプット及び前記第1トランザクションのアウトプットへのポインタを有する第2トランザクションの第1バージョンと、
を含み、前記ターゲットトランザクションの前記第1バージョンの前記アンロックスクリプトは、前記代替条件のうちの第1条件を満たすことに基づき、前記第1トランザクションの前記アウトプットをアンロックするよう構成され、
前記第2トランザクションの第2バージョンは、アンロックスクリプトを含むインプット、及び前記第1トランザクションの前記アウトプットへのポインタを含み、前記アンロックスクリプトは、前記第1条件の代わりに、前記代替条件のうちの第2条件を満たすことに基づき、前記第1トランザクションの前記アウトプットをアンロックするよう構成される、トランザクションのセット。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1907339.4 | 2019-05-24 | ||
GB1907339.4A GB2588072A (en) | 2019-05-24 | 2019-05-24 | Malleability of transactions for inclusion in a blockchain |
PCT/IB2020/053815 WO2020240297A1 (en) | 2019-05-24 | 2020-04-22 | Malleability of transactions for inclusion in a blockchain |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2022532886A true JP2022532886A (ja) | 2022-07-20 |
JPWO2020240297A5 JPWO2020240297A5 (ja) | 2023-04-05 |
Family
ID=67385380
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021567834A Pending JP2022532886A (ja) | 2019-05-24 | 2020-04-22 | ブロックチェーンへの包含のためのトランザクションの適応性 |
Country Status (6)
Country | Link |
---|---|
US (2) | US20220255992A1 (ja) |
EP (1) | EP3973663A1 (ja) |
JP (1) | JP2022532886A (ja) |
CN (1) | CN114008969A (ja) |
GB (1) | GB2588072A (ja) |
WO (1) | WO2020240297A1 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114078007A (zh) * | 2020-08-19 | 2022-02-22 | 富泰华工业(深圳)有限公司 | 基于区块链的交易方法、装置及可读存储介质 |
CA3091660A1 (en) * | 2020-08-31 | 2021-11-03 | Polymath Inc. | Method, system, and medium for blockchain-enabled atomic settlement |
GB202020452D0 (en) * | 2020-12-23 | 2021-02-03 | Nchain Holdings Ltd | Transaction signature flags |
GB2614077A (en) * | 2021-12-21 | 2023-06-28 | Nchain Licensing Ag | Signature-based atomic swap |
GB2615820A (en) * | 2022-02-22 | 2023-08-23 | Nchain Licensing Ag | Data exchange attestation method |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109417465B (zh) * | 2016-02-23 | 2021-01-15 | 区块链控股有限公司 | 区块链执行的智能合约的注册和自动化管理方法 |
US20190149337A1 (en) * | 2016-04-29 | 2019-05-16 | nChain Holdings Limited | Implementing logic gate functionality using a blockchain |
GB201607477D0 (en) * | 2016-04-29 | 2016-06-15 | Eitc Holdings Ltd | A method and system for controlling the performance of a contract using a distributed hash table and a peer to peer distributed ledger |
GB201613109D0 (en) * | 2016-07-29 | 2016-09-14 | Eitc Holdings Ltd | Computer implemented method and system |
US11132704B2 (en) * | 2017-07-06 | 2021-09-28 | Mastercard International Incorporated | Method and system for electronic vouchers via blockchain |
US10839379B2 (en) * | 2017-07-20 | 2020-11-17 | Chicago Mercantile Exchange Inc. | Blockchain including linked digital assets |
JP7250771B2 (ja) * | 2017-08-29 | 2023-04-03 | エヌチェーン ライセンシング アーゲー | ブロックチェーンを用いる並行状態機械処理 |
US10891384B2 (en) * | 2017-10-19 | 2021-01-12 | Koninklijke Kpn N.V. | Blockchain transaction device and method |
CN109308658A (zh) * | 2018-09-11 | 2019-02-05 | 北京永恒纪元科技有限公司 | 一种高效安全的去中心化资产托管清算平台系统 |
-
2019
- 2019-05-24 GB GB1907339.4A patent/GB2588072A/en not_active Withdrawn
-
2020
- 2020-04-22 WO PCT/IB2020/053815 patent/WO2020240297A1/en unknown
- 2020-04-22 US US17/612,169 patent/US20220255992A1/en active Pending
- 2020-04-22 CN CN202080038352.XA patent/CN114008969A/zh active Pending
- 2020-04-22 EP EP20724200.9A patent/EP3973663A1/en active Pending
- 2020-04-22 JP JP2021567834A patent/JP2022532886A/ja active Pending
-
2023
- 2023-09-20 US US18/370,782 patent/US20240022631A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20240022631A1 (en) | 2024-01-18 |
EP3973663A1 (en) | 2022-03-30 |
GB2588072A (en) | 2021-04-21 |
CN114008969A (zh) | 2022-02-01 |
WO2020240297A1 (en) | 2020-12-03 |
US20220255992A1 (en) | 2022-08-11 |
GB201907339D0 (en) | 2019-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111448565B (zh) | 基于去中心化标识的数据授权 | |
US20200374113A1 (en) | Decentralized application platform for private key management | |
US20200058023A1 (en) | Decentralized Data Marketplace | |
JP2022532886A (ja) | ブロックチェーンへの包含のためのトランザクションの適応性 | |
JP7075393B2 (ja) | ブロックチェーンにより実現されるシステム及び方法 | |
US20220253821A1 (en) | Streaming portions of data over a side channel | |
US20230316272A1 (en) | Divisible tokens | |
CN115997229A (zh) | 区块链上的协议 | |
EP3967015B1 (en) | Multi-input transactions | |
JP2023502057A (ja) | ブロックチェーントランザクションを使用したアイデンティティ検証プロトコル | |
US20240062169A1 (en) | Nonfungible token path synthesis with social sharing | |
TW202308351A (zh) | 電腦實施方法及系統 | |
KR20240024113A (ko) | 다중-레벨 블록체인 | |
CN116671061A (zh) | 节点版本控制 | |
JP2023537698A (ja) | ブロックチェーンネットワークとの接続 | |
JP2023522258A (ja) | ブロックチェーンを使用してデジタルコインシステムを実装するための方法 | |
GB2590937A (en) | Single-use tokens | |
JP2024500923A (ja) | トランザクション署名フラグ | |
Ismail | Permissioned blockchains for real world applications | |
Lago | Decentralized Application for E-Commerce Using Blockchain and Trusted Compute | |
CN117678191A (zh) | 消息交换系统 | |
CN115917571A (zh) | 因特网数据使用控制系统 | |
Onieva et al. | Scenarios Supported by MPNR Services |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230324 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230324 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20240514 |